(57)【要約】      （修正有）【課題】仮想マシンでゲストソフトウェアが実行される時、ゲストの物理アドレス（ゲスト物理アドレス）から仮想化に基づくシステムのホストの物理アドレス（ホスト物理アドレス）への変換におけるオーバヘッド削減。【解決手段】プロセッサは、仮想化に基づくシステムのゲスト物理アドレスから仮想化に基づくシステムのホスト物理アドレスまでの翻訳ルックアサイドバッファ（ＴＬＢ）に格納されたマッピングと仮想化に基づくシステムの拡張ページングテーブル（ＥＰＴ）に格納された対応するマッピングとを同期させる命令を実行するロジックを含む。【選択図】図１
2008077642.tif 000002
【特許請求の範囲】
【請求項１】
一の仮想化に基づくシステムのプロセッサであって、
一のプロセッサバスと、
一のゲストアドレスから一のホスト物理アドレスまでの一のマッピングを格納する一のバッファと、
一の命令を受信し、かつ、一のオペランドを受信するフェッチロジックと、
前記命令をデコードするデコードロジックと、
前記命令のデコードに少なくとも一部応答し、前記バッファに格納された一のゲストアドレスから前記ホストの一の物理アドレス（ホスト物理アドレス）までのマッピングと、一の拡張ページングテーブル（ＥＰＴ）に少なくとも一部格納された一の対応するマッピングとの一の同期を実行する一の論理回路と、
を含み、
前記同期は、前記命令の前記オペランドに少なくとも一部さらに基づき、前記オペランドは、一のコンテキストディスクリプタおよび一のＥＰＴポインタの少なくとも１つをさらに備える、
プロセッサ。
【請求項２】
前記バッファは、一の翻訳ルックアサイドバッファ（ＴＬＢ）を含む、請求項１に記載のプロセッサ。
【請求項３】
前記論理回路は、複数のマイクロコード命令に少なくとも一部基づき動作する一の論理回路を含む、請求項１に記載のプロセッサ。
【請求項４】
前記ＥＰＴは、前記プロセッサに一のバスにより結合された一のメモリに少なくとも一部格納される、請求項１に記載のプロセッサ。
【請求項５】
前記論理回路は、前記命令の前記オペランドから導かれる一のコンテキストディスクリプタに少なくとも一部基づき、前記ＥＰＴから前記マッピングをさらに選択する、請求項１に記載のプロセッサ。
【請求項６】
前記論理回路は、前記コンテキストディスクリプタから導かれる一のＥＰＴポインタに少なくとも一部基づき、前記ＥＰＴから前記マッピングをさらに選択する、請求項５に記載のプロセッサ。
【請求項７】
前記論理回路は、前記命令の一のオペランドに少なくとも一部基づき、前記ゲストアドレスをさらに選択する、請求項１に記載のプロセッサ。
【請求項８】
前記マッピングの同期は、前記ＥＰＴに格納された前記マッピングに少なくとも一部基づき前記ＴＬＢに格納された前記マッピングをアップデートすることをさらに含み、
前記対応するマッピングは、前記ＴＬＢに格納された前記マッピングと同じゲストアドレスをもつ前記ＥＰＴに格納された一のマッピングをさらに含む、
請求項２に記載のプロセッサ。
【請求項９】
前記マッピングの同期は、前記ＴＬＢに格納された一のマッピングをフラッシングすることをさらに含む、請求項２に記載のプロセッサ。
【請求項１０】
前記論理回路は、前記命令の前記オペランドに少なくとも一部基づき前記命令の一の実行モードをさらに選択する、請求項１に記載のプロセッサ。
【請求項１１】
前記フェッチロジックは、前記命令の一の第１のオペランドと、前記命令の一の第２のオペランドと、前記命令の一の第３のオペランドとをさらに受信し、
前記論理回路は、さらに、
前記命令の前記第１のオペランドから導かれた一のコンテキストディスクリプタに基づき、前記ＥＰＴに少なくとも一部格納された前記マッピングを選択し、
前記命令の前記第２のオペランドに少なくとも一部基づき前記ゲストアドレスを選択し、
前記命令の前記第３のオペランドに少なくとも一部基づき前記命令の一の実行モードを選択し、
前記命令の実行モードは、
前記ＴＬＢに格納された前記ゲストアドレスに関連する単一のマッピングのみが前記ＥＰＴ内の前記対応するマッピングと同期する一の第１のモード、
前記ＴＬＢに格納され、かつ、前記コンテキストディスクリプタから導かれた一のＥＰＴコンテキストと関連するすべてのマッピングが前記ＥＰＴ内の前記対応するマッピングと同期する一の第２のモード、および、
いずれかのＥＰＴコンテキストと関連する前記ＴＬＢに格納されたすべてのマッピングが一のＥＰＴ内の前記対応するマッピングと同期する一の第３のモード、
の１つである、請求項２に記載のプロセッサ。
【請求項１２】
前記ゲストアドレスは、一のゲスト物理アドレスをさらに含む、請求項１に記載のプロセッサ。
【請求項１３】
前記ゲストアドレスは、一のゲスト線形アドレスをさらに含む、請求項１に記載のプロセッサ。
【請求項１４】
一のホストおよび一のゲストを含む一の仮想化に基づくシステムにおいて、
一の翻訳ルックアサイドバッファ（ＴＬＢ）に少なくとも一部格納された前記ホストの一の物理アドレス（ホスト物理アドレス）への一のゲストアドレスの一の翻訳を含む一のマッピングと、前記仮想化に基づくシステムの一の拡張ページングテーブル（ＥＰＴ）に少なくとも一部格納された一の対応するマッピングとを同期させることと、
前記命令の一のオペランドに少なくとも一部基づき前記ＥＰＴに少なくとも一部格納された前記マッピングを選択することと、
を含み、前記オペランドは、一のコンテキストディスクリプタおよび一のＥＰＴポインタの少なくとも１つを含む方法。
【請求項１５】
前記命令の一のオペランドから導かれる一のコンテキストディスクリプタに一部基づき、前記ＥＰＴから前記マッピングを選択することをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記コンテキストディスクリプタから導かれる一のＥＰＴポインタに一部基づき、前記ＥＰＴに少なくとも一部格納される前記マッピングを選択することをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記インストラクションの一のオペランドに少なくとも一部基づき、前記ゲストアドレスを選択することをさらに含む、請求項１４に記載の方法。
【請求項１８】
前記マッピングを同期することは、前記ＥＰＴに格納された前記マッピングに少なくとも一部基づき前記ＴＬＢに格納された前記マッピングをアップデートすることをさらに含み、
前記対応するマッピングは、前記ＴＬＢに格納された前記マッピングと同じゲストアドレスを有する前記ＥＰＴに格納された一のマッピングをさらに含む、
請求項１４に記載された方法。
【請求項１９】
前記マッピングを同期することは、前記ＴＬＢから格納された前記マッピングをフラッシングすることをさらに含む、請求項１４に記載の方法。
【請求項２０】
前記命令の一のオペランドに少なくとも一部基づき、前記命令の一の実行モードを選択することをさらに含む、請求項１４に記載の方法。
【請求項２１】
前記命令の一の第１のオペランドから導かれる一のコンテキストディスクリプタに基づき、前記ＥＰＴに少なくとも一部格納された前記マッピングを選択することと、
前記命令の一の第２のオペランドに少なくとも一部基づき、前記ゲストアドレスを選択することと、
前記命令の一の第３のオペランドに少なくとも一部基づき、前記命令の一の実行モードを選択することと、
を含み、
前記命令の前記実行モードは、
前記ＴＬＢ内に格納され、かつ、前記ゲストアドレスに関連する単一のマッピングのみが前記ＥＰＴ内の前記対応するマッピングと同期する一の第１のモード、
前記ＴＬＢに格納され、かつ、前記コンテキストディスクリプタから導かれる一のＥＰＴコンテキストに関連するすべてのマッピングが前記ＥＰＴ内の前記対応するマッピングと同期する一の第２のモード、および、
いずれかのＥＰＴコンテキストに関連する前記ＴＬＢに格納されたすべてのマッピングが一のＥＰＴ内の前記対応するマッピングと同期する一の第３のモード、
の１つである、
請求項１４に記載の方法。
【請求項２２】
前記ゲストアドレスは、一のゲスト物理アドレスをさらに含む、請求項１４に記載の方法。
【請求項２３】
前記ゲストアドレスは、一のゲスト線形アドレスをさらに含む、請求項１に記載の方法。
【請求項２４】
仮想化に基づくシステムであって、
一のプロセッサと、
前記プロセッサに一のバスにより接続される一のメモリと、
一の命令を実行する前記プロセッサの一の論理回路であって、前記命令は、
一の翻訳ルックアサイドバッファ（ＴＬＢ）に少なくとも格納された前記ホストの一の物理アドレス（ホスト物理アドレス）への一のゲストアドレスの一の翻訳を含む一のマッピングを前記仮想化に基づくシステムの一の拡張ページングテーブル（ＥＰＴ）に少なくとも一部格納された一の対応するマッピングと同期させることと、
前記命令の一のオペランドに少なくとも一部基づく前記ＥＰＴ内に少なくとも一部格納された前記マッピングを選択することと、を実行し、
前記オペランドは、一のコンテキストディスクリプタおよび一のＥＰＴポインタの少なくとも１つを含む、
仮想化に基づくシステム。
【請求項２５】
前記プロセッサは、さらに、
前記命令の一のオペランドから導かれる一のコンテキストディスクリプタに一部基づき、前記ＥＰＴから前記マッピングを選択する、
請求項２４に記載のシステム。
【請求項２６】
前記プロセッサは、さらに、
前記コンテキストディスクリプタから導かれる一のＥＰＴポインタに一部基づき、該ＥＰＴに少なくとも一部格納される前記マッピングを選択する、
請求項２５に記載のシステム。
【請求項２７】
前記プロセッサは、さらに、
前記命令の一のオペランドに少なくとも一部基づき、前記ゲストアドレスを選択する、請求項２４に記載のシステム。
【請求項２８】
前記論理回路は、さらに、前記ＥＰＴ内に格納された前記マッピングに少なくとも一部基づき、前記ＴＬＢに格納された前記マッピングと、前記ＴＬＢに格納された前記マッピングと同じゲストアドレスをもつ前記ＥＰＴに格納された一のマッピングをさらに含む前記対応するマッピングとを同期させる、請求項２４に記載のシステム。
【請求項２９】
前記論理回路は、さらに、前記ＴＬＢから格納された前記マッピングをフラッシングする、請求項２８に記載のシステム。
【請求項３０】
前記論理回路は、前記命令の一のオペランドに少なくとも一部基づき、前記命令の一の実行モードを選択する、請求項１４に記載のシステム。
【請求項３１】
前記論理回路は、さらに、前記命令の一の第１のオペランドから導かれる一のコンテキストディスクリプタに基づき、前記ＥＰＴ内に少なくとも一部格納された前記マッピングを選択し、
前記命令の一の第２のオペランドに少なくとも一部基づき、前記ゲストアドレスを選択し、
前記命令の一の第３のオペランドに少なくとも一部基づき、前記命令の一の実行モードを選択し、
前記命令の前記実行モードは、
前記ＴＬＢに格納され、前記ゲストアドレスに関連する単一のマッピングのみが前記ＥＰＴ内の前記対応するマッピングと同期する一の第１のモード、
前記ＴＬＢに格納され、前記コンテキストディスクリプタから導かれる一のＥＰＴコンテキストに関連するすべてのマッピングが前記ＥＰＴ内の前記対応するマッピングと同期する一の第２のモード、および、
いずれかのＥＰＴコンテキストと関連する前記ＴＬＢに格納されたすべてのマッピングが一のＥＰＴ内の前記対応するマッピングと同期する一の第３のモード、
の１つである、請求項１４に記載のシステム。
【請求項３２】
前記ゲストアドレスは、一のゲスト物理アドレスをさらに含む、請求項２４に記載のシステム。
【請求項３３】
前記ゲストアドレスは、一のゲスト線形アドレスをさらに含む、請求項２４に記載のシステム。
【請求項３４】
前記メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）をさらに含む、請求項２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、弁護士事件整理番号Ｐ２０４６２、本発明（ＥＰＴ特許出願）の譲受人に譲渡される「仮想マシンシステムにおける仮想化物理メモリ」と題された係属中のアメリカ特許出願番号第１１／０３６，７３６号に関する。
【背景技術】
【０００２】
仮想化は、ホストマシンの下のハードウェアが１つ、または、それ以上の個別に動作する仮想マシンに見えるようなホストの抽象概念を表わす仮想化のためのハードウェアおよびソフトウェア・サポートにより単一のホストマシンを実現する。したがって、それぞれの仮想マシンは、自己内蔵型プラットフォームとして機能することもある。仮想化技術は、複数のゲストオペレーティングシステム、および／または、他のゲストソフトウェアが、同じハードウエアプラットフォームで実際に物理的に実行される一方で、複数の仮想マシンにおいて見かけ上同時にかつ個別に共存し実行されることを実現すべくしばしば用いられる。仮想マシンは、ホストマシンのハードウェアを模倣するか、あるいは、異なるハードウェアの抽象概念を全体として表わすこともできる。
【０００３】
仮想化システムは、ホストマシンを制御する仮想マシンモニタ（ＶＭＭ）を含んでよい。
ＶＭＭは、仮想マシンにおいて動作するゲストソフトウェアに一組の資源（例えばプロセッサ、メモリ、ＩＯデバイス）を提供する。ＶＭＭは、物理ホストマシンのいくつかまたはすべての構成要素を仮想マシンにマッピングし、仮想マシンに含まれる、ＶＭＭのソフトウェアにおいて模倣される完全な仮想構成要素（例えば仮想ＩＯデバイス）を生成することもできる。ＶＭＭは、このように、ゲストソフトウェアへの「仮想ベアマシン」インターフェースを提供するとも言える。ＶＭＭは、仮想マシンにサービスを提供し、ホストマシンで実行する複数の仮想マシンから／間を保護するハードウェア仮想化アーキテクチャにおける設備を使用する。仮想マシンでゲストソフトウェアが実行されるとき、ゲストソフトウェアにより実行される特定の命令（例えば周辺デバイスにアクセスする命令）は、通常、ハードウェアに直接アクセスするものであり、ゲストソフトウェアは、ハードウェアプラットフォームで直接実行されている。ＶＭＭにより指示されている仮想化システムでは、これら命令は、本願明細書中では仮想マシン出口と呼ばれるＶＭＭへの移行を生じ得る。ＶＭＭは、これらソフトウェアにおける命令を、ゲストソフトウェアが実行される仮想マシンと一致するホストマシンハードウェアおよびホストマシン周辺デバイスに適した方法で処理する。同様に、ホストマシンで生成される特定の割り込みおよび例外は、サービスを提供するためにゲストソフトウェアに渡される前に、ＶＭＭにより阻止または管理されるか、あるいは、ＶＭＭによりゲストソフトウェアに適応させられる必要があるかもしれない。そして、ＶＭＭは、管理をゲストソフトウェアに移行させ、仮想マシンは、動作を再開する。本願明細書中、ＶＭＭからヘスとソフトウェアへの移行を仮想マシンエントリと呼ぶ。
【０００４】
技術的に知られているように、典型的なプロセッサに基づくシステムにおいて線形メモリから物理メモリへのマッピングを提供するには、ページテーブルがしばしば用いられる。ページテーブルは、メモリ常駐構造を有し、線形アドレスに対応する物理アドレスを決定すべくページテーブルにアクセスすることがメモリアクセスとなり、これが処理時間の遅延を生じ得る。このような問題を軽減すべく、多くのプロセッサの実装は、ページテーブルの値に基づく、使用中である物理メモリマッピングへの現在の線形のいくつかのサブセットがキャッシュされた翻訳ルックアサイドバッファ（ＴＬＢ）と呼ばれるプロセッサ内のレジスタの高速メモリまたはバンクを含む。これによって、ページテーブルにアクセスしなければならないとき、プロセッサは、対応する物理アドレスへの線形アドレスの翻訳に、一般的に見込まれるより速くアクセスすることができる。プロセッサ実装は、一般的に、ページテーブルに格納されている現在の翻訳に基づき、ＴＬＢ内のすべてのエントリを無効にするかまたはアップデートする命令を含む、ＴＬＢを管理する命令を提供する。
【発明を実施するための最良の形態】
【０００５】
図１は、バスによりプロセッサと通信可能に接続されたプロセッサおよびメモリを組み込んだプロセッサに基づくシステムで実行されるプロセスを示す。図１を見ると、プロセス１０５は、その線形アドレス空間１１５（線形メモリ空間）内のメモリ位置１１０を参照するとき、マシン１２５の物理メモリ１４５（マシン物理メモリ）における実アドレス１４０への参照は、ハードウェア（プロセッサ１２０に組み込まれることもある）およびソフトウェア（一般的にはマシンのオペレーティングシステム内にある）に実装され得るメモリ管理１３０により生成される。メモリ管理１３０は、他の機能の中でもとりわけ、線形アドレス空間内の位置をマシンの物理メモリにおける位置にマッピングする。図１に示すように、プロセスは、物理マシンで実際に利用可能なメモリとは異なる概観を有してよい。図１に示す例において、処理は、メモリ管理ハードウェアおよびソフトウェアによりそれ自体が１０から１１ＭＢまでのアドレス空間を有する物理メモリの一部に実際にマッピングされる０から１ＭＢまでの線形アドレス空間で動作し、プロセス空間アドレスから物理アドレスを計算すべく、線形アドレスにオフセット１３５が加えられてよい。線形アドレス空間から物理メモリへのより複雑なマッピングが可能であり、例えば、線形メモリに対応する物理メモリは、ページのような部分に分割されて、物理メモリ内で他のプロセスからページによりインタリーブ配置されてよい。
【０００６】
メモリは習慣的にページに分割され、各ページは、実装全体で変化する既知のデータ量を含み、例えば、１ページは、４０９６バイトのメモリ、１ＭＢのメモリ、または、特定の用途に望まれるような他のいかなるメモリ量を含んでよい。メモリ位置が実行プロセスにより参照されると、それらは、ページ索引に翻訳される。典型的なマシンでは、メモリ管理は、線形メモリ内の１ページへの参照をマシン物理メモリ内の１ページへとマッピングする。一般的には、メモリ管理は、プロセス空間ページ位置に対応する物理ページ位置を特定するページテーブルを用いてよい。
【０００７】
仮想マシン環境においてゲストソフトウェアを管理する１つの態様は、メモリの管理である。
仮想マシンで実行されるゲストソフトウェアにより執り行われるメモリ管理動作を取り扱うことにより、仮想マシンモニタのような制御システムが複雑になる。例えば、２つの仮想マシンが、ｘ８６プロセッサの一部として実装されるページテーブルを含み得るｘ８６プラットフォームで実装されるホストマシンにおいて仮想化して実行されるシステムと考えてみる。さらに、各仮想マシン自体はそこで実行されるゲストソフトウェアに対し、ｘ８６マシンの抽象概念を提示すると仮定する。各仮想マシンで実行されるゲストソフトウェアは、ゲスト線形メモリアドレスを参照し、次に、ゲストマシンのメモリ管理システムによりゲスト−物理メモリアドレスに翻訳されてもよい。しかしながら、ゲスト−物理メモリそれ自体は、ＶＭＭおよびホストプロセッサ上のハードウェアにおける仮想サブシステムを介しホスト−物理メモリ内のさらなるマッピングにより実装されることもできる。したがって、例えばｘ８６ページテーブル制御レジスタへの参照を含む、ゲストプロセスまたはゲストオペレーティングシステムによるゲストメモリへの参照は、ＶＭＭにより阻止されなければならない。なぜなら、それらは、ゲスト−物理メモリが実際にはホスト−物理メモリと直接対応せず、それどころかホストマシンの仮想システムを介しさらにリマッピングされるというようなさらなる再処理なしにはホストマシンのページテーブルにじかに渡すことができないからである。
【０００８】
図２：図２は、一実施形態における、ゲストメモリのマッピングに特に関連するホストマシンで実行される１つまたはそれ以上の仮想マシン間の関係を示す。図２は、ゲスト−物理メモリがホストマシンの仮想化システムを介しどのように再マッピングされるかを示す。仮想マシンＡ、２４２、および、仮想マシンＢ、２５７のような各仮想マシンは、仮想マシンにおいて実行されるゲストソフトウェアに対し、仮想プロセッサ２４５および２５５をそれぞれ提示する。各マシンは、ゲストオペレーティングシステムまたは他のゲストソフトウェア、ゲスト−物理メモリ２４０および２５０それぞれに物理メモリの抽象概念を提供する。ゲストソフトウェアが仮想マシン２４２および２５７で実行されるときは、ホスト−物理メモリ２６０を利用するホストプロセッサ２６５におけるホストマシン２６７により実際に実行される。
【０００９】
図２に示すように、本実施形態では、仮想マシンＡ、２４２のアドレス０から開始する物理メモリ空間として表わされるゲスト−物理メモリ２４０は、ホスト−物理メモリ２６０における一部の連続領域２７０にマッピングされる。同様に、仮想マシンＢ、２５７におけるゲスト−物理メモリ２５０は、ホスト−物理メモリ２６０の異なる部分２７５にマッピングされる。図２に示すように、ホストマシンは、１０２４ＭＢのホスト−物理メモリを有し得る。各仮想マシン２４２および２５７が２５６ＭＢのメモリを割り当てられている場合、１つの可能性のあるマッピングとしては、仮想マシンＡ、２４２が１２８−３８４ＭＢの範囲を割り当てられ、仮想マシンＢ、２５７は、５１２−７６８ＭＢの範囲を割り当てられるというものである。仮想マシン２４２および２５７はどちらも０−２５６ＭＢのゲスト−物理アドレス空間を参照する。ＶＭＭのみが各仮想マシンのアドレス空間をホスト−物理アドレス空間の異なる部分にマッピングすることを承知している。
【００１０】
図２に示される仮想マシンおよびメモリマッピングは、他の複数の実施形態における一実施形態の１つの表現に過ぎず、ホストマシンで実行される仮想マシンの実際の数は、１つから多くにまで変更してよく、ホストマシンおよび仮想マシンの実際のメモリサイズも変更してよく、仮想マシン間での変更も可能である。例は、仮想マシンへのメモリの単純な連続割り当てを示す。さらなる一般的なケースにおいて、仮想マシンに割り当てられた物理−メモリページは、連続的していなくてもよく、互いに、そして、ＶＭＭおよび他のホストプロセッサに属するページとインタリーブ配置されたホスト物理メモリ内に分散される可能性もある。
【００１１】
図２に示されるようなシステム内の仮想マシンとして表わされるプロセッサに基づくシステムは、仮想マシンそれ自体のあらゆる複雑さも実装できる。したがって、例えば、仮想マシンは、ゲスト−物理メモリの全貌をゲストＯＳに提示し、ゲストＯＳにより提供されるメモリ管理を用いた仮想マシン、および、仮想マシンの仮想プロセッサまたは他の仮想ハードウェアで実行されるゲストソフトウェアのメモリ管理を実行できる。１つの例示的実施形態では、仮想マシンは、メモリ管理のためのページテーブルのようなｘ８６ハードウェアサポートを含むｘ８６プラットフォームをゲストＯＳに提示してよく、次に、メモリ管理のためのｘ８６ハードウェアを含むｘ８６プラットフォームでもあるホストプラットフォームで実際に実行されてもよい。本実施形態の仮想化システムは、追加の機構なしに、１つの可能性のあるソリューションとして、物理メモリをリマッピングし、分割し、そして保護するｘ８６ページテーブルのシャドウイングを用いてＶＭＭにおける物理−メモリ仮想化アルゴリズムを実装しなければならない。したがって、例えば、ゲストソフトウェアが仮想マシンのｘ８６ページテーブルにアクセスを試みる場合、ＶＭＭは、仮想化に要求される機能（例えば物理アドレスのリマッピング）をゲストＯＳに要求される機能に重ねる必要がある。
【００１２】
そのためには、ＶＭＭは、ページング機構の使用にまつわる様々なイベントをゲストソフトウェアによりトラップしなければならない。このことは、ｘ８６メモリ管理システムの制御レジスタ（例えばＣＲ０、ＣＲ３およびＣＲ４）などの制御レジスタへの書き込み、ページングに関連するモデル特定レジスタ（ＭＳＲ）へのアクセス、および、ｘ８６証拠書類に記載された特定の例外（例えばページフォルト）を取り扱うメモリアクセス（例えばメモリタイプ範囲レジスタ（ＭＴＲＲ））を含む。物理メモリを仮想化するこのｘ８６ページテーブルの使用は、複雑であり、かなりのパフォーマンスオーバーヘッドを強いる。
【００１３】
図３：図３は、仮想マシン環境３００の一実施形態を示す。本実施形態では、プロセッサに基づくプラットフォーム３１６がＶＭＭ３１２を実行してよい。ＶＭＭは、通常はソフトウェアに実装されるが、より高水準のソフトウェアへの仮想ベアマシンインターフェースをまねてエクスポートすることもできる。このようなより高水準なソフトウェアは、標準ＯＳ、リアルタイムＯＳを含んでよく、または、限られたオペレーティングシステム機能を有する余分な装備をいっさい除いた環境であってもよいし、いくつかの実施形態では標準ＯＳで通常利用可能なＯＳ機能を含まなくてもよい。あるいは、例えば、ＶＭＭ３１２は、他のＶＭＭ内でも実行できるし、または、他のＶＭＭのサービスを使用して実行されてよい。いくつかの実施形態では、ＶＭＭは、例えば、ハードウェア、ソフトウェア、ファームウェアにおいて、または、様々な技術の組み合わせにより実装されてよい。少なくとも１つの実施形態では、ＶＭＭの１つまたはそれ以上の構成要素は、１つまたはそれ以上の仮想マシンで実行され、ＶＭＭの１つまたはそれ以上の構成要素は、図３で示されるようなベアプラットフォームハードウェアにおいて実行されてよい。ベアプラットフォームハードウェアで直接実行されるＶＭＭの構成要素は、本願明細書中ではＶＭＭのホスト構成要素と呼ばれる。
【００１４】
プラットフォームハードウェア３１６は、パーソナルコンピュータ（ＰＣ）、サーバ、メインフレーム、パーソナル携帯情報機器（ＰＤＡ）またはスマートモバイルフォン、ポータブルコンピュータ、セットトップボックスなどのハンドヘルドデバイス、あるいは、他のプロセッサに基づくシステムであってよい。プラットフォームハードウェア３１６は、少なくともプロセッサ３１８およびメモリ３２０を含む。プロセッサ３１８は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのプログラムを実行できるいかなるタイプのプロセッサであってよい。プロセッサは複数の実施形態において実行するためのマイクロコード、プログラマブル・ロジックまたはハードコードロジックを含んでよい。図３は、そのようなプロセッサ３１８のみを示すが、一実施形態において、システム内に１つまたはそれ以上のプロセッサがあってもよい。さらに、プロセッサ３１８は、マルチコア、マルチスレッドのサポートなどを含んでよい。メモリ３２０は、様々な実施形態において、ハードディスク、フロッピーディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、前述のデバイスの任意の組み合わせ、または、プロセッサ３１８により読み取られることができる他のいかなるタイプのマシン可読媒体を含むことができる。メモリ３２０は、プログラムの実行および他の方法の実施形態を実行するための命令および／またはデータを格納することもできる。いくつかの実施形態では、本発明のいくつかの要素は、例えば、プラットフォームチップセット、または、システムの１つまたはそれ以上のメモリコントローラなどの他のシステム構成要素に実装されてもよい。
【００１５】
ＶＭＭ３１２は、ゲストソフトウェアに１つまたはそれ以上の仮想マシンの抽象概念を提示し、これは、様々なゲストに同じまたは異なる抽象概念を提供し得る。図３は、２つの仮想マシン３０２および３１４を示す。各仮想マシン上で動作するゲストソフトウェア３０３および３１３などのゲストソフトウェアは、ゲストＯＳ３０４および３０６のようなゲストＯＳと、様々なゲストソフトウェアアプリケーション３０８および３１０を含んでよい。ゲストソフトウェア３０３および３１３は、ゲストソフトウェア３０３および３１３が動作する仮想マシン内の物理的資源（例えばプロセッサレジスタ、メモリおよびＩ／Ｏデバイス）にアクセスし、他の機能を実行してよい。例えば、ゲストソフトウェア３０３および３１３は、仮想マシン３０２および３１４において表わされるプロセッサおよびプラットフォームのアーキテクチャに従う、レジスタ、キャッシュ、構造、Ｉ／Ｏデバイス、メモリなどのすべてへのアクセスを有していることになっている。
【００１６】
一実施形態では、プロセッサ３１８は、仮想マシン制御構造（ＶＭＣＳ）３２４に格納されたデータに従い、仮想マシン３０２および３１４の動作を制御する。ＶＭＣＳ３２４は、ゲストソフトウェア３０３および３１３の状態、ＶＭＭ３１２の状態、ＶＭＭ３１２がゲストソフトウェア３０３および３１３の動作を制御することをどのように望むかを示す実行制御情報、ＶＭＭ３１２と仮想マシンとの間の移行を制御する情報などを含み得る構造である。プロセッサ３１８は、ＶＭＣＳ３２４から情報を読み取ることにより、仮想マシンの実行環境を決定し、その行動を制約する。一実施形態では、ＶＭＣＳ３２４は、メモリ３２０に格納される。いくつかの実施形態では、複数のＶＭＣＳ構造が１つまたはそれ以上の仮想多重仮想マシン内でＣＰＵをサポートすべく用いられる。
【００１７】
ＶＭＭ３１２は、仮想マシン３０２および３１４で動作するゲストソフトウェアによりアクセスできる物理メモリを管理する必要がある。一実施形態における物理メモリ管理を支持すべく、プロセッサ３１８は、拡張ページテーブル（ＥＰＴ）機構を提供する。実施形態においては、ＶＭＭ３１２は、仮想マシン３０２および３１４へ制御を移行する前に提供される必要があるかもしれない物理メモリ仮想化に関連するフィールドの値を提供する物理メモリ管理モジュール３２６を含む。これらのフィールドは、まとめてＥＰＴ制御と呼ばれる。ＥＰＴ制御は、例えば、ＥＰＴ機構が使用可能にされるべきかどうかを特定するＥＰＴ使用可能インジケータと、物理メモリ仮想化機構の形式およびセマンティクスを示す１つまたはそれ以上のＥＰＴテーブル構成制御とを含んでよい。これらの詳細については、以下に述べる。さらに、一実施形態では、ＥＰＴテーブル３２８は、ＶＭＭ３１２がゲストソフトウェア３０３および３１３上にあり得る物理アドレス翻訳およびプロテクションセマンティクスを示す。
【００１８】
一実施形態では、ＥＰＴ制御は、ＶＭＣＳ３２４に格納される。または、ＥＰＴ制御は、プロセッサ３１８、メモリ３２０およびプロセッサ３１８の組み合わせ、あるいは、その他のいかなる記憶場所に存在してもよい。一実施形態では、個別のＥＰＴ制御は、仮想マシン３０２および３１４のそれぞれに対し維持される。一方、同じＥＰＴ制御は、両方の仮想マシンに対し維持され、各仮想マシンのエントリの前にＶＭＭ３１２によりアップデートされる。
【００１９】
一実施形態では、ＥＰＴテーブル３２８は、メモリ３２０に格納される。または、ＥＰＴテーブル３２８は、プロセッサ３１８、メモリ３２０およびプロセッサ３１８の組み合わせ、あるいは、その他のいかなる記憶場所に存在してもよい。一実施形態では、個別のＥＰＴテーブル３２８は、仮想マシン３０２および３１４のそれぞれに対し維持される。一方、同じＥＰＴテーブル３２８は、両方の仮想マシン３０２および３１４に対し維持され、各仮想マシンのエントリの前にＶＭＭ３１２によりアップデートされる。
【００２０】
一実施形態では、プロセッサ３１８は、ＥＰＴ機構が使用可能インジケータに基づき使用可能であるかどうかを決定する役割を果たすＥＰＴアクセスロジック３２２を含む。ＥＰＴ機構が使用可能な場合、プロセッサは、ＥＰＴ制御およびＥＰＴテーブル３２８に基づき、ゲスト−物理アドレスをホスト−物理アドレスに翻訳する。
【００２１】
示される実施形態において、プロセッサは、ゲスト−物理への線形、ゲスト−物理からホスト物理のアドレス、および、ホスト−物理翻訳への線形をキャッシュする翻訳ルックアサイドバッファ（ＴＬＢ）３２３をさらに含んでよい。ゲスト−物理の線形、および、ホスト−物理翻訳への線形は、本願明細書中では「線形翻訳」と呼ばれる。ゲスト−物理からホスト−物理、および、ホスト−物理翻訳への線形は、本願明細書中では、「物理翻訳」と呼ばれる。
【００２２】
システム３００がマルチプロセッサまたはマルチスレッドプロセッサを含む一実施形態において、論理プロセッサのそれぞれは、個別のＥＰＴアクセスロジック３２２に関連し、ＶＭＭ３１２は、論理プロセッサそれぞれのためのＥＰＴテーブル３２８およびＥＰＴ制御を構成する。
【００２３】
ゲストソフトウェア（例えばゲストＯＳ３０４およびアプリケーション３０８を含む３０３）によりアクセスされることができる資源は、「特権付き」または「特権なし」として分類されてもよい。特権付き資源に対し、ＶＭＭ３１２は、これら特権付き資源全体の究極の制御を保持する一方で、ゲストソフトウェアに望まれる機能を促進する。さらに、各ゲストソフトウェア３０３および３１３は、例外（例えばページフォルト、一般的なプロテクションフォルトなど）、割り込み（例えばハードウェア割り込み、ソフトウェア割り込み）、および、プラットフォームイベント（例えば初期化（ＩＮＩＴ）およびシステム管理割り込み（ＳＭＩ））などの様々なプラットフォームイベントを処理することになっている。これらプラットフォームイベントのいくつかは、仮想マシン３０２および３１４の正確な動作を保証し、ゲストソストウェアからの、および、ゲストホストウェア間での保護の目的でＶＭＭ３１２により取り扱われる必要があるという理由から、「特権付き」である。ゲストオペレーティングシステムおよびゲストアプリケーションのどちらも特権付き資源へのアクセスを試みることができ、また、どちらも特権付きイベントを生じるかまたは体験する。本願明細書中、特権付きプラットフォームイベント、および、特権付き資源へアクセスの試みは、ひとまとめに「特権付きイベント」、または、「仮想化イベント」と呼ばれる。
【００２４】
図３ａ：図３ａは、図３の実施形態におけるプロセッサ３１８の高レベルにおけるいくつかのブロックレベル特徴を示す。一般的には、図３の３１８に示されるようなプロセッサは、プロセッサバスまたは図３ａの３３７に示されるようなバスを含んでよい。さらに、図３ａに示すように、プロセッサは、１つまたは複数のバンクにレジスタ３５０を含んでよく、各レジスタは、３２、６４、１２８、または、周知のように他のビット数のデータの記憶容量を有し得る。各レジスタバンクは、さらに、例えば８、３２、６４レジスタなどのいくつかのレジスタを有し得る。いくつかのレジスタは、ｘ８６の実施形態での場合のように例えばＣＲビットを格納するよう、制御およびステータスの使用専用であってよい。他の実施形態では、他の制御レジスタおよびフラッグは、異なる動作モード、および、技術的に周知であるようなステータス検査を許容するようプロセッサに格納されてよい。一般的に図３の実施形態で示されるようなプロセッサは、メモリ、キャッシュ、または、他の記憶装置から命令およびデータを取り出す論理または論理回路３３０、命令をデコードする論理または論理回路、および、命令を実行する３３４のような実行ユニットを含んでよい。これら機能ユニットのさまざまなバリエーションが可能であり、例えば、実行ユニットにおける実行がパイプラインで転送されてよく、または、推測、および、分岐予測を含むか、あるいは、特定のプロセッサ、または、アプリケーションに関連しての他の特徴を有してよい。他の関数論理３６５は、演算、グラフィック処理ロジック、および、周知のようなプロセッサの多くの他の特殊関数などであり、プロセッサ内に存在してよい。
オンボードキャッシュ３６０は、いくつかの実施形態に存在する可能性がある。このキャッシュは、周知のように、１２８ＭＢ、１ＧＢなど様々なサイズを有し得る。図３を参照して先に示したように、プロセッサ３１８は、ＥＰＴアクセスロジック３２２およびＴＬＢ３２３を含む。ＥＰＴアクセスロジックは、ＥＰＴを配置し、制御し、かつ、管理するロジックを一実施形態に含んでよい。また、ＴＬＢは、一般的に、プロセッサ内の効率および他の目的でキャッシュされるページテーブルからのマッピングを含むバッファであってよい。
【００２５】
図４：図４は、仮想マシン内のゲストソフトウェアがゲスト仮想アドレスを参照するときのホスト−物理アドレスを最終的に計算すべく、先に導入された拡張ページテーブルを用いた処理の一例を示す。示された例は、単純な３２ビット仮想アドレス指定、および、単純なページテーブルフォーマットを用いたｘ８６プラットフォームにおいて動作するゲストソフトウェアを示す。当業者であれば、この例を、例えば、いろいろある中でも、他のページングモード（ゲストソストウェアにおける６４ビットアドレス指定など）、他の命令セットアーキテクチャ（インテル・イタニウム（登録商標）アーキテクチャ、ｘ８６アーキテクチャの６４ビットおよび他のバリエーション、パワーＰＣ（登録商標）アーキテクチャ）、および、他の構成を理解すべく、容易に拡張することができるであろう。
【００２６】
図４では、ゲスト仮想アドレス４１０への参照は、仮想マシンにおいて実行されるゲストソフトウェアにより実行される。ゲスト内でアクティブなメモリ管理機構（すなわちゲストオペレーションシステムにより構成された機構）は、仮想アドレスをゲスト−物理アドレスに翻訳するために用いられる。翻訳中に用いられる各ゲスト−物理アドレス、および、結果として生じたゲスト−物理アドレスは、ホスト−物理メモリにアクセスする前に、ＥＰＴを介しホスト−物理アドレスに翻訳される。
このプロセスは、以下に詳しく説明する。
【００２７】
この例では、ＣＲ３レジスタ４２０における適切なビット４０２は、ゲスト−物理メモリにおけるゲストのページディレクトリテーブル４６０のベースを示す。この値４０２は、ゲスト仮想アドレス４１０から上のビットと組み合わされることにより、（この例ではテーブル内のエントリがそれぞれ４バイトなので、４で乗じることによるｘ８６セマンティクスに従い適切に調整される）、ゲストのＰＤテーブル４６０内のページディレクトリエントリ（ＰＤＥ）のゲスト−物理アドレス４１２を形成する。この値４１２は、ＥＰＴテーブル４５５を介し翻訳されてページディレクトリエントリのホスト−物理アドレス４０４を形成する。プロセッサは、このホスト−物理アドレス４０４を用いてページディレクトリエントリにアクセスする。
【００２８】
ＰＤＥからの情報は、ゲストのページテーブル４７０のベースアドレス４２２を含む。このゲスト−物理アドレス４２２は、ゲストのページテーブル４７０におけるページテーブルエントリのゲスト−物理アドレス４３２を形成するよう適切に調整されたゲスト仮想アドレス４１０のビット２１：１２と結合される。このゲスト−物理アドレス４３２は、ＥＰＴテーブル４６５を介し翻訳されることによりゲストのページテーブルエントリ（ＰＴＥ）のホスト−物理アドレス４１４を形成する。
プロセッサは、このホスト−物理アドレス４１４を用いてＰＴＥにアクセスする。
【００２９】
ＰＴＥからの情報は、アクセスされるゲスト−物理メモリ内のページのベースアドレス４４２を含む。この値は、ゲスト仮想アドレス４１０の下位ビット（１１：０）と結合されることにより、アクセスされるメモリのゲスト−物理アドレス４５２を形成する。この値４５２は、ＥＰＴテーブル４７５を介し翻訳されることにより、アクセスされるメモリのホスト−物理アドレス４２４を形成する。
【００３０】
ゲスト−物理アドレスをホスト−物理アドレスに翻訳するためにＥＰＴテーブルが使用されるたびに、プロセッサは、以下に述べるようなＥＰＴテーブルにおける制御に従いアクセスが許容されることを認証する。したがって、図４に明らかに示されているが、一実施形態においてＥＰＴテーブル４５５、４６５および４７５は、ＥＰＴテーブルの同様のセットである（すなわち、ＥＰＴテーブルの単一のセットがゲスト−物理からホスト−物理へのすべてのアドレス翻訳に用いられる）と理解されたい。
【００３１】
プロセッサに基づくシステムにおける典型的な線形メモリサポートの実装では、ページテーブル構造に格納される線形アドレスから物理アドレスへのマッピングは、効率のために翻訳ルックアサイドバッファ（ＴＬＢ）にキャッシュされる。ＴＬＢを管理し、かつ、プロセッサに基づくシステムで実行されるプログラムによりＴＬＢ内の特定のエントリがページテーブルエントリと確実に同期できるよう、命令は、プロセッサ命令セットに含まれてよい。したがって、例えば、ｘ８６アーキテクチャにおいて、ＭＯＶ  ＣＲ命令は、すべてのＴＬＢエントリのグローバル無効を生じることもあるので、アドレスとしてのエントリの再同期がアクセスされる。一方、ｘ８６の例では、ＩＮＶＬＰＧ命令を使用して、特定の線形アドレスのためのＴＬＢに格納されたマッピングを無効化することにより、ＴＬＢ内のエントリをアップデートさせ、ページテーブルにおけるマッピングと同期させてよい。
【００３２】
一実施形態では、上述のような拡張ページングテーブル（ＥＰＴ）を組み込む仮想化システムを含め、ＴＬＢは、ゲストマシンメモリで実行されるプロセスのためのホスト物理アドレス翻訳へのゲスト線形と、図３の３２３を参照して先に述べたようなホストマシンで直接実行されるＶＭＭのなどのプロセスのためのホスト物理マッピングへのホスト線形とをキャッシュしてよい。前のケースでは、ホスト物理マッピングへのゲスト線形は、ＥＰＴ同様、ゲスト内のページテーブルからも導出され得る。後のケースでは、マッピングは、ホストページテーブルから導出され得る。別のタイプのマッピング、すなわち、ＥＰＴに格納されたマッピングに基づき、ゲスト物理からホスト物理メモリへと直接導き出されるマッピングも、ＴＬＢに格納され得る。
【００３３】
一実施形態では、新たなコマンドがプロセッサ命令セットに付加される。この実施形態では、新たなコマンドＩＮＶＬ＿ＥＰＴは、ゲスト−物理からホスト−物理マッピングへと導き出されるＴＬＢエントリを管理する方法により、ＶＭＭなどの仮想化システムのホストマシンで直接実行されるプログラムを提供する。具体的には、この実施形態では、ＩＮＶＬ＿ＥＰＴ命令は、ＴＬＢにおけるゲスト−物理からホスト−物理、および、ホスト物理マッピングへの線形が、ホストメモリに存在するＥＰＴテーブルと同期することを保証し、同期の存続範囲、ＥＰＴコンテキスト、そして、該当する場合は、マッピングが同期化されるゲスト物理メモリアドレスを特定する。コンテキストは、一般的に言ってシステムのアドレス空間の一部を定義する。ゲスト−物理からホスト−物理へのマッピングでは、ＥＰＴコンテキストは、現在アクティブなＥＰＴテーブルにより定義され、次に本実施形態ではＥＰＴポインタまたはＥＰＴＰと呼ばれるレジスタにより参照される。
【００３４】
本実施形態において、ＩＮＶＬ＿ＥＰＴ命令は、３つのオペランドを有する。第１のオペランドは、命令モードまたは異なる仕様の値であり、第２のオペランドは、ＩＮＶＬ＿ＥＰＴ命令とは実行することであるＥＰＴコンテキストに等しいＥＰＴポインタを特定する値であり、第３のオペランドは、無効化されるＴＬＢエントリに関連するゲスト物理アドレスを特定する値である。この実施形態では、第１のオペランドは、８ビットのイミディエート値として提供され、第２および第３のオペランドは、それぞれ６４ビットを占有するメモリ内のブロックとして提供される。他の実施形態も可能である。
例えば、オペランドは、明示的または暗黙にレジスタまたは他のメモリ位置に設けられてよい。
【００３５】
本実施形態における第１のオペランドは、少なくとも３つの定義された値を有するスイッチまたはフラグであり、したがって、ＩＮＶＬ＿ＥＰＴ命令を特定することは、以下の３つの可能性のあるモードの１つを実行することになる。１．個別アドレスモード：このモードでは、上述の第２のオペランドに設けられたコンテキストにより参照されるＥＰＴ内のそのアドレスへのマッピングに基づき、単一のゲスト物理アドレスに関連するＴＬＢにおける物理翻訳がＥＰＴと同期する。２．コンテキストモード：このモードでは、ゲストアドレスパラメータ（前述の第３のオペランド）は無視され、前述の第２のオペランドにおいて特定されたＥＰＴ内のＴＬＢのそれらのエントリがＥＰＴと同期する。
３．グローバルモード：このモードでは、ゲストアドレスパラメータおよびＥＰＴコンテキストパラメータのどちらも無視され、いずれかのＥＰＴコンテキストから導出されたＴＬＢエントリが同期化される。
【００３６】
図５：図５のフローチャートは、一実施形態におけるＩＮＶＬ＿ＥＰＴ命令の実行を示す。
５００から実行開始される。まず、プロセッサは、現在の実行環境がＥＰＴ関連動作に関し有効であることを確実にすべく、５０５において多数のテストを実行する。これらのテストは、とりわけ、システムがオペレーションの仮想化モードにあること、ページングが使用可能であること、現在エラー状態がないことを保証するテストを含んでよい。実行環境が有効でない場合、命令は、５５５および５６０を介し、未定義状態に出るか、一般的なプロテクションフォルトを生成するか、未定義オペコードフォルトを生成するかなどのいずれかを実行してよい。実行環境が有効な場合、本実施形態ではその後命令の実行は、５１０においてイミディエイト８ビットのオペランドを読み取る。ＳＹＮＣ＿ＣＭＤと呼ばれるこのオペランドは、前述のようなＩＮＶＬ＿ＥＰＴ命令に対する有効モードを表わすとされている。５１５においてオペランドが有効でない場合、命令は前のように５５５および５６０に出る。オペランドが有効な場合、実行は次に進み、５２０においてメモリから第２および第３のオペランドを読み取り、そして前述したように、オペランドは、図中、ＩＮＶＬＥＰＴ＿ＤＥＳＣと参照符号が付されたメモリ内の１２８ビットブロックにあるとされている。本実施形態における第１の６４ビットは、ＥＰＴコンテキストまたはＥＰＴテーブルポインタであり、５２５においてＥＰＴＰ＿ＣＴＸとして抽出される。次の６４ビットは、５３０においてＧＰ＿ＡＤＤＲとして抽出される命令に対するゲスト−物理アドレスパラメータである。
【００３７】
そして命令の実行は、実行フローの５３５から５８０に示されるＳＹＮＣ＿ＣＭＤオペランドの値に基づく実際の同期化を実行することに進む。前述のように、ＳＹＮＣ＿ＣＭＤは、すべてのＥＰＴコンテキストに基づくＴＬＢのグローバル同期化を実行することの指示、または、命令のオペランドにより特定されるＥＰＴコンテキストのみの同期化を実行することの指示、あるいは、最終的に、パラメータとして提供されるＥＰＴコンテキスト内のパラメータとして渡されたゲスト−物理アドレスのみの同期化を実行することの指示のいずれかであってよい。この実施形態では、図５の実行フローに示されるように、ＳＹＮＣ＿ＣＭＤ値が存在することのチェックは、５３５、第２段階５４０、第３段階５４５で行われる。５３５において、ＳＹＮＣ＿ＣＭＤの値がグローバル同期を示す場合、命令は、すべてのＥＰＴコンテキストのためのすべての物理マッピングを同期することを実行し、実行は、５８０で完了する。一方、ＳＹＮＣ＿ＣＭＤが５４０においてコンテキスト特定同期を示す場合、実行は、提供されるＥＰＴＰ＿ＣＴＸ値が有効であるかどうかのチェックに進む。例えば、予約ビットが値にセットされているか、または、ＥＰＴＰにおけるアドレスが無効であるという理由で有効でない場合、命令の実行は５５５および５６０の一般的プロテクションフォルトにより終了する。提供されるコンテキストが有効である場合、実行は、５７５におけるＥＰＴＰ＿ＣＴＸにより参照されるＥＰＴコンテキストのためのすべての物理マッピングを継続して同期化し、５８０で終了する。
【００３８】
ＳＹＮＣ＿ＣＭＤがグローバルでもコンテキストワイド同期でもなく、有効なオペレーションモードである場合、本実施形態における唯一の残る可能性は、特定のゲスト物理アドレスを同期化するコマンドにある。実行は、５４５で提供されるＧＰ＿ＡＤＤＲパラメータが有効であるかどうかをチェックする。無効なアドレスが提供されている場合、実行は、一般的なプロテクションフォルトにより５５５および５６０を出る。一方、提供されたゲスト物理アドレスＧＰ＿ＡＤＤＲに関連するすべての物理マッピングは、５５０においてＥＰＴＰ＿ＣＴＸ内に設けられたコンテキストにより参照されるＥＰＴと同期し、５８０で実行は終了する。
【００３９】
前述した実施形態が広範囲に変更され得ることは、当業者にとり明らかであろう。いくつかの実施形態では、ＩＮＶＬ＿ＥＰＴと等しいコマンドが利用可能であるが、中でも名前、番号、フォーマット、パラメータの大きさを含む異なるシンタックスを有することもある。周知のように、異なる命令セットアーキテクチャ（ＩＳＡ）が存在し、同様のコマンドが、異なるＩＳＡに、フォーマット、および、そのＩＳＡと一致する他の特性と共に提供される。一実施形態では、インテル（登録商標）イタニウムアーキテクチャに基づくプロセッサのための無効化、および／または、ＴＬＢとＥＰＴとの同期化のための命令は、一当業者により上記設けられた実施形態の記載に基づき、直ちに仮想化され、記述される。他のいかなるＩＳＡのための複数の命令としてでもよい。
【００４０】
先に参照された実施形態におけるＥＰＴコンテキストに関する説明は、限定としてとられるべきでない。他の実施形態では、ＥＰＴの１つの例だけであってもよいし、または、前述のＥＰＴＰに類似する参照レジスタまたはポインタなどの参照機構と共に、ｘ８６の例で説明されたようにいくつかの例が動作可能であってもよい。
【００４１】
他の実施形態では、パラメータの数およびフォーマットは、変更できる。例えば、前述の実施形態では、ＩＮＶＬ＿ＥＰＴ命令は、１つのイミディエイトおよび２つのメモリベースのオペランドを有する。他の実施形態では、より多くのイミディエイトオペランドが用いられてよく、他の実施形態では、すべてのオペランドが、メモリベースであってよく、さらに他の実施形態では、オペランドは、周知のその他たくさんのバリエーションの中でも、プロセッサ内のレジスタまたは他の記憶装置から読み出されてよい。
【００４２】
前述の実施形態は、ＩＮＶＬ＿ＥＰＴ命令に対する３つの動作モードに関して記載されている。他の実施形態では、３つのモードのいくつかまたはすべてが抜けていてもよい。また、他の実施形態では、より多くのモードが利用可能であってもよい。例えば、いくつかの実施形態では、個別アドレス無効モードはなくてもよく、そのようなモードでは、すべてのＴＬＢエントリが同期している。いくつかの実施形態では、システムにおいて動作するＥＰＴの１つの例だけしかなくてもよく、このような実施形態では、コンテキストモードは、必要ないであろう。あるいは、いくつかの実施形態では、個別アドレス同期のみが有効であるか、または、他の実施形態では、グローバルアドレス同期のみを用いて、ＩＮＶＬ＿ＥＰＴに関して述べられた第１のオペランドを不要としてもよい。
【００４３】
命令およびその動作におけるこれらの変更は可能であるが、中でも、ＩＮＶＬ＿ＥＰＴ命令の一般的効果が他の命令の組み合わせにより得られる場合の変更を含む、他の多くの変更も当業者であればたやすく想定できるであろう。
【００４４】
先の説明においては、記載された実施形態の完全なる理解をもたらすべく、数多くの具体的な詳細が記載されているが、これら具体的な詳細の記載なしに多くの他の実施形態を実行できることは当業者にとり明らかであろう。
【００４５】
先の具体的な説明のいくつかの部分は、プロセッサに基づくシステム内のデータビットにおけるアルゴリズム、および、動作の象徴の観点から示されている。これらのアルゴリズム的記述および表現は、それらの作用の実体を他業者に最も効果的に伝える目的で、当業者が手段として用いている。動作は、物理量のそれらが要求している物理的操作である。これらの量は、電気、磁気、光学、または、格納、転送、結合、比較、さもなければ操作されることができる他の物理的信号であってよい。
これらの信号をビット，値，要素，符号，文字，用語，数字等と呼ぶことは、主として一般的な用法という理由からその時々で便利であることがわかっている。
【００４６】
しかしながら、これらおよび同様の用語のすべては、適切な物理量に関連するものであり、それらの量に適用される便利なラベルにすぎないことは覚えておくべきである。特に説明しない限り、「実行」、「処理」、「計算」、「算出」、または、「決定」などの用語は、プロセッサに基づくシステム、あるいは、プロセッサに基づくシステムの記憶装置内の物理量として表わされたデータを操作し、かつ、同様に表わされた他のデータに変換する同様の電子計算機、または、他のそのような情報記憶、伝送またはディスプレイデバイスの動作およびプロセスに関連してよい。
【００４７】
実施形態の説明において、添付の図面を参照することができる。図面において、同様の数字は、いくつかの図面全体にわたる実質的に同様の構成要素を説明する。他の実施形態も利用可能であり、構造的、論理的、電気的変更もなされてよい。さらに、多くの実施形態に相違点があっても必ずしも互いを排除するわけではないと理解されたい。例えば、一実施形態に記載された特定の特徴、構造、または、特性が他の実施形態内に含まれてもよい。
【００４８】
さらに、プロセッサに実装される一実施形態の設計は、作成からシミュレーション、製造まで様々な段階を経てよい。設計を表わすデータは、多くのやり方で設計を表わしてよい。まず、シミュレーションに役立つように、ハードウェア記述言語または他の関数的記述言語を用いてハードウェアが表わされてよい。次に、設計プロセスのいくつかの段階で論理および／またはトランジスタゲートによる回路レベルモデルが生成されてよい。さらに、ほとんどの設計がいくつかの段階でハードウェアモデルにおける様々なデバイスの物理的配置を表わすデータレベルに達してよい。従来の半導体製造技術が用いられる場合、ハードウェアモデルを表わすデータは、集積回路を生成するために使用されるマスクの異なるマスク層における様々な特徴の有無を特定するデータであってよい。設計の任意の表現では、データは、いかなる形式の機械可読媒体に格納されてもよい。機械可読媒体は、そのような情報を伝送すべく変調されるか、さもなくば生成される光または電波、メモリ、あるいは、ディスクのような磁気または光記憶装置であってよい。これらの媒体のいずれも、設計またはソフトウェア情報を「有する」または「示す」ことができる。コードまたは設計を示すかあるいは有する電気キャリアが伝送されると、電気信号のコピー、バッファリング、または、再送が実行される範囲で新たなコピーがなされる。したがって、通信プロバイダまたはネットワークプロバイダは、一実施形態を構成するかまたは表わす物品（キャリア）のコピーを作成できる。
【００４９】
複数の実施形態は、マシンにアクセスされたとき、請求項に記載の内容に従うプロセスをマシンに実行させることができるデータを格納した機械可読媒体を含み得るプログラム製品として提供されてよい。機械可読媒体は、これに限定されないが、フロッピーディスケット、光ディスク、ＤＶＤ−ＲＯＭディスク、ＤＶＤ−ＲＡＭディスク、ＤＶＤ−ＲＷディスク、ＤＶＤ＋ＲＷディスク、ＣＤ−Ｒディスク、ＣＤ−ＲＷディスク、ＣＤ−ＲＯＭディスク、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気または光カード、フラッシュメモリ、あるいは、電子命令を格納するのに適した他のタイプの媒体／機械可読媒体を含んでよい。さらに、複数の実施形態は、プログラム製品としてダウンロードされてよく、プログラムは、キャリアまたは他の伝搬媒質に含まれるデータ信号により、リモート・データ・ソースから要求しているデバイスへと通信リンク（モデムまたはネットワーク接続など）を介し転送されてよい。
【００５０】
多くの方法は、最も基本的な形式で記載されているが、請求項に記載された内容の基本的な範囲を逸脱せずに、いずれの方法に／から段階を加えても／削除してもよく、記載された内容のいずれに／から情報を付加しても／抜き取ることもできる。さらに多くの修正および改作がなされてもよいことは、当業者にとって明らかであろう。特定の実施形態は、請求項に記載された内容を制限するものではなく、例示に過ぎない。請求項に記載された内容の範囲は、上述の詳細な説明ではなく、添付の請求項によってのみ決定される。
【図面の簡単な説明】
【００５１】
【図１】プロセスと物理メモリとの間の関係を示す。
【図２】一実施形態における、仮想マシンとホストマシンとの間の関係を抽象的に示す。
【図３】一実施形態における、仮想マシン環境のハイレベル構造を示す。
【図３ａ】一実施形態における、機能レベルでのプロセッサを表わす。
【図４】一実施形態における、拡張ページングテーブルを使用したアドレス計算を示す。
【図５】一実施形態における命令の実行フローを示す。
【図１】
2008077642.tif 000003
【図２】
2008077642.tif 000004
【図３】
2008077642.tif 000005
【図３ａ】
2008077642.tif 000006
【図４】
2008077642.tif 000007
【図５】
2008077642.tif 000008
【外国語明細書】
2008077642.tif 000009
2008077642.tif 000010
2008077642.tif 000011
2008077642.tif 000012
2008077642.tif 000013
2008077642.tif 000014
2008077642.tif 000015
2008077642.tif 000016
2008077642.tif 000017
2008077642.tif 000018
2008077642.tif 000019
2008077642.tif 000020
2008077642.tif 000021
2008077642.tif 000022
2008077642.tif 000023
2008077642.tif 000024
2008077642.tif 000025
2008077642.tif 000026
2008077642.tif 000027
2008077642.tif 000028
2008077642.tif 000029
2008077642.tif 000030
2008077642.tif 000031
2008077642.tif 000032
2008077642.tif 000033
2008077642.tif 000034
2008077642.tif 000035
2008077642.tif 000036
2008077642.tif 000037
2008077642.tif 000038
2008077642.tif 000039
2008077642.tif 000040
2008077642.tif 000041