説明

翻訳ルックアサイドバッファと拡張ページングテーブルとの同期化

【課題】仮想マシンにおける効率的なアドレス変換が可能な手法を提供する。
【解決手段】プロセッサ318は、仮想化に基づくシステムのゲストの物理アドレス(ゲスト物理アドレス)から仮想化に基づくシステムのホストの物理アドレス(ホスト物理アドレス)までの翻訳ルックアサイドバッファ(TLB)323に格納されたマッピングを仮想化に基づくシステムの拡張ページングテーブル(EPT)328に格納された対応するマッピングを同期させる命令を実行するロジック322を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本出願は、弁護士事件整理番号P20462、本発明(EPT特許出願)の譲受人に譲渡される「仮想マシンシステムにおける仮想化物理メモリ」と題された係属中のアメリカ特許出願番号第11/036,736号に関する。
【背景技術】
【0002】
仮想化は、ホストマシンの下のハードウェアが1つ、または、それ以上の個別に動作する仮想マシンに見えるようなホストの抽象概念を表わす仮想化のためのハードウェアおよびソフトウェア・サポートにより単一のホストマシンを実現する。したがって、それぞれの仮想マシンは、自己内蔵型プラットフォームとして機能することもある。仮想化技術は、複数のゲストオペレーティングシステム、および/または、他のゲストソフトウェアが、同じハードウエアプラットフォームで実際に物理的に実行される一方で、複数の仮想マシンにおいて見かけ上同時にかつ個別に共存し実行されることを実現すべくしばしば用いられる。仮想マシンは、ホストマシンのハードウェアを模倣するか、あるいは、異なるハードウェアの抽象概念を全体として表わすこともできる。
【0003】
仮想化システムは、ホストマシンを制御する仮想マシンモニタ(VMM)を含んでよい。
VMMは、仮想マシンにおいて動作するゲストソフトウェアに一組の資源(例えばプロセッサ、メモリ、IOデバイス)を提供する。VMMは、物理ホストマシンのいくつかまたはすべての構成要素を仮想マシンにマッピングし、仮想マシンに含まれる、VMMのソフトウェアにおいて模倣される完全な仮想構成要素(例えば仮想IOデバイス)を生成することもできる。VMMは、このように、ゲストソフトウェアへの「仮想ベアマシン」インターフェースを提供するとも言える。VMMは、仮想マシンにサービスを提供し、ホストマシンで実行する複数の仮想マシンから/間を保護するハードウェア仮想化アーキテクチャにおける設備を使用する。仮想マシンでゲストソフトウェアが実行されるとき、ゲストソフトウェアにより実行される特定の命令(例えば周辺デバイスにアクセスする命令)は、通常、ハードウェアに直接アクセスするものであり、ゲストソフトウェアは、ハードウェアプラットフォームで直接実行されている。VMMにより指示されている仮想化システムでは、これら命令は、本願明細書中では仮想マシン出口と呼ばれるVMMへの移行を生じ得る。VMMは、これらソフトウェアにおける命令を、ゲストソフトウェアが実行される仮想マシンと一致するホストマシンハードウェアおよびホストマシン周辺デバイスに適した方法で処理する。同様に、ホストマシンで生成される特定の割り込みおよび例外は、サービスを提供するためにゲストソフトウェアに渡される前に、VMMにより阻止または管理されるか、あるいは、VMMによりゲストソフトウェアに適応させられる必要があるかもしれない。そして、VMMは、管理をゲストソフトウェアに移行させ、仮想マシンは、動作を再開する。本願明細書中、VMMからヘスとソフトウェアへの移行を仮想マシンエントリと呼ぶ。
【0004】
技術的に知られているように、典型的なプロセッサに基づくシステムにおいて線形メモリから物理メモリへのマッピングを提供するには、ページテーブルがしばしば用いられる。ページテーブルは、メモリ常駐構造を有し、線形アドレスに対応する物理アドレスを決定すべくページテーブルにアクセスすることがメモリアクセスとなり、これが処理時間の遅延を生じ得る。このような問題を軽減すべく、多くのプロセッサの実装は、ページテーブルの値に基づく、使用中である物理メモリマッピングへの現在の線形のいくつかのサブセットがキャッシュされた翻訳ルックアサイドバッファ(TLB)と呼ばれるプロセッサ内のレジスタの高速メモリまたはバンクを含む。これによって、ページテーブルにアクセスしなければならないとき、プロセッサは、対応する物理アドレスへの線形アドレスの翻訳に、一般的に見込まれるより速くアクセスすることができる。プロセッサ実装は、一般的に、ページテーブルに格納されている現在の翻訳に基づき、TLB内のすべてのエントリを無効にするかまたはアップデートする命令を含む、TLBを管理する命令を提供する。
【発明を実施するための最良の形態】
【0005】
図1は、バスによりプロセッサと通信可能に接続されたプロセッサおよびメモリを組み込んだプロセッサに基づくシステムで実行されるプロセスを示す。図1を見ると、プロセス105は、その線形アドレス空間115(線形メモリ空間)内のメモリ位置110を参照するとき、マシン125の物理メモリ145(マシン物理メモリ)における実アドレス140への参照は、ハードウェア(プロセッサ120に組み込まれることもある)およびソフトウェア(一般的にはマシンのオペレーティングシステム内にある)に実装され得るメモリ管理130により生成される。メモリ管理130は、他の機能の中でもとりわけ、線形アドレス空間内の位置をマシンの物理メモリにおける位置にマッピングする。図1に示すように、プロセスは、物理マシンで実際に利用可能なメモリとは異なる概観を有してよい。図1に示す例において、処理は、メモリ管理ハードウェアおよびソフトウェアによりそれ自体が10から11MBまでのアドレス空間を有する物理メモリの一部に実際にマッピングされる0から1MBまでの線形アドレス空間で動作し、プロセス空間アドレスから物理アドレスを計算すべく、線形アドレスにオフセット135が加えられてよい。線形アドレス空間から物理メモリへのより複雑なマッピングが可能であり、例えば、線形メモリに対応する物理メモリは、ページのような部分に分割されて、物理メモリ内で他のプロセスからページによりインタリーブ配置されてよい。
【0006】
メモリは習慣的にページに分割され、各ページは、実装全体で変化する既知のデータ量を含み、例えば、1ページは、4096バイトのメモリ、1MBのメモリ、または、特定の用途に望まれるような他のいかなるメモリ量を含んでよい。メモリ位置が実行プロセスにより参照されると、それらは、ページ索引に翻訳される。典型的なマシンでは、メモリ管理は、線形メモリ内の1ページへの参照をマシン物理メモリ内の1ページへとマッピングする。一般的には、メモリ管理は、プロセス空間ページ位置に対応する物理ページ位置を特定するページテーブルを用いてよい。
【0007】
仮想マシン環境においてゲストソフトウェアを管理する1つの態様は、メモリの管理である。
仮想マシンで実行されるゲストソフトウェアにより執り行われるメモリ管理動作を取り扱うことにより、仮想マシンモニタのような制御システムが複雑になる。例えば、2つの仮想マシンが、x86プロセッサの一部として実装されるページテーブルを含み得るx86プラットフォームで実装されるホストマシンにおいて仮想化して実行されるシステムと考えてみる。さらに、各仮想マシン自体はそこで実行されるゲストソフトウェアに対し、x86マシンの抽象概念を提示すると仮定する。各仮想マシンで実行されるゲストソフトウェアは、ゲスト線形メモリアドレスを参照し、次に、ゲストマシンのメモリ管理システムによりゲスト−物理メモリアドレスに翻訳されてもよい。しかしながら、ゲスト−物理メモリそれ自体は、VMMおよびホストプロセッサ上のハードウェアにおける仮想サブシステムを介しホスト−物理メモリ内のさらなるマッピングにより実装されることもできる。したがって、例えばx86ページテーブル制御レジスタへの参照を含む、ゲストプロセスまたはゲストオペレーティングシステムによるゲストメモリへの参照は、VMMにより阻止されなければならない。なぜなら、それらは、ゲスト−物理メモリが実際にはホスト−物理メモリと直接対応せず、それどころかホストマシンの仮想システムを介しさらにリマッピングされるというようなさらなる再処理なしにはホストマシンのページテーブルにじかに渡すことができないからである。
【0008】
図2:図2は、一実施形態における、ゲストメモリのマッピングに特に関連するホストマシンで実行される1つまたはそれ以上の仮想マシン間の関係を示す。図2は、ゲスト−物理メモリがホストマシンの仮想化システムを介しどのように再マッピングされるかを示す。仮想マシンA、242、および、仮想マシンB、257のような各仮想マシンは、仮想マシンにおいて実行されるゲストソフトウェアに対し、仮想プロセッサ245および255をそれぞれ提示する。各マシンは、ゲストオペレーティングシステムまたは他のゲストソフトウェア、ゲスト−物理メモリ240および250それぞれに物理メモリの抽象概念を提供する。ゲストソフトウェアが仮想マシン242および257で実行されるときは、ホスト−物理メモリ260を利用するホストプロセッサ265におけるホストマシン267により実際に実行される。
【0009】
図2に示すように、本実施形態では、仮想マシンA、242のアドレス0から開始する物理メモリ空間として表わされるゲスト−物理メモリ240は、ホスト−物理メモリ260における一部の連続領域270にマッピングされる。同様に、仮想マシンB、257におけるゲスト−物理メモリ250は、ホスト−物理メモリ260の異なる部分275にマッピングされる。図2に示すように、ホストマシンは、1024MBのホスト−物理メモリを有し得る。各仮想マシン242および257が256MBのメモリを割り当てられている場合、1つの可能性のあるマッピングとしては、仮想マシンA、242が128−384MBの範囲を割り当てられ、仮想マシンB、257は、512−768MBの範囲を割り当てられるというものである。仮想マシン242および257はどちらも0−256MBのゲスト−物理アドレス空間を参照する。VMMのみが各仮想マシンのアドレス空間をホスト−物理アドレス空間の異なる部分にマッピングすることを承知している。
【0010】
図2に示される仮想マシンおよびメモリマッピングは、他の複数の実施形態における一実施形態の1つの表現に過ぎず、ホストマシンで実行される仮想マシンの実際の数は、1つから多くにまで変更してよく、ホストマシンおよび仮想マシンの実際のメモリサイズも変更してよく、仮想マシン間での変更も可能である。例は、仮想マシンへのメモリの単純な連続割り当てを示す。さらなる一般的なケースにおいて、仮想マシンに割り当てられた物理−メモリページは、連続的していなくてもよく、互いに、そして、VMMおよび他のホストプロセッサに属するページとインタリーブ配置されたホスト物理メモリ内に分散される可能性もある。
【0011】
図2に示されるようなシステム内の仮想マシンとして表わされるプロセッサに基づくシステムは、仮想マシンそれ自体のあらゆる複雑さも実装できる。したがって、例えば、仮想マシンは、ゲスト−物理メモリの全貌をゲストOSに提示し、ゲストOSにより提供されるメモリ管理を用いた仮想マシン、および、仮想マシンの仮想プロセッサまたは他の仮想ハードウェアで実行されるゲストソフトウェアのメモリ管理を実行できる。1つの例示的実施形態では、仮想マシンは、メモリ管理のためのページテーブルのようなx86ハードウェアサポートを含むx86プラットフォームをゲストOSに提示してよく、次に、メモリ管理のためのx86ハードウェアを含むx86プラットフォームでもあるホストプラットフォームで実際に実行されてもよい。本実施形態の仮想化システムは、追加の機構なしに、1つの可能性のあるソリューションとして、物理メモリをリマッピングし、分割し、そして保護するx86ページテーブルのシャドウイングを用いてVMMにおける物理−メモリ仮想化アルゴリズムを実装しなければならない。したがって、例えば、ゲストソフトウェアが仮想マシンのx86ページテーブルにアクセスを試みる場合、VMMは、仮想化に要求される機能(例えば物理アドレスのリマッピング)をゲストOSに要求される機能に重ねる必要がある。
【0012】
そのためには、VMMは、ページング機構の使用にまつわる様々なイベントをゲストソフトウェアによりトラップしなければならない。このことは、x86メモリ管理システムの制御レジスタ(例えばCR0、CR3およびCR4)などの制御レジスタへの書き込み、ページングに関連するモデル特定レジスタ(MSR)へのアクセス、および、x86証拠書類に記載された特定の例外(例えばページフォルト)を取り扱うメモリアクセス(例えばメモリタイプ範囲レジスタ(MTRR))を含む。物理メモリを仮想化するこのx86ページテーブルの使用は、複雑であり、かなりのパフォーマンスオーバーヘッドを強いる。
【0013】
図3:図3は、仮想マシン環境300の一実施形態を示す。本実施形態では、プロセッサに基づくプラットフォーム316がVMM312を実行してよい。VMMは、通常はソフトウェアに実装されるが、より高水準のソフトウェアへの仮想ベアマシンインターフェースをまねてエクスポートすることもできる。このようなより高水準なソフトウェアは、標準OS、リアルタイムOSを含んでよく、または、限られたオペレーティングシステム機能を有する余分な装備をいっさい除いた環境であってもよいし、いくつかの実施形態では標準OSで通常利用可能なOS機能を含まなくてもよい。あるいは、例えば、VMM312は、他のVMM内でも実行できるし、または、他のVMMのサービスを使用して実行されてよい。いくつかの実施形態では、VMMは、例えば、ハードウェア、ソフトウェア、ファームウェアにおいて、または、様々な技術の組み合わせにより実装されてよい。少なくとも1つの実施形態では、VMMの1つまたはそれ以上の構成要素は、1つまたはそれ以上の仮想マシンで実行され、VMMの1つまたはそれ以上の構成要素は、図3で示されるようなベアプラットフォームハードウェアにおいて実行されてよい。ベアプラットフォームハードウェアで直接実行されるVMMの構成要素は、本願明細書中ではVMMのホスト構成要素と呼ばれる。
【0014】
プラットフォームハードウェア316は、パーソナルコンピュータ(PC)、サーバ、メインフレーム、パーソナル携帯情報機器(PDA)またはスマートモバイルフォン、ポータブルコンピュータ、セットトップボックスなどのハンドヘルドデバイス、あるいは、他のプロセッサに基づくシステムであってよい。プラットフォームハードウェア316は、少なくともプロセッサ318およびメモリ320を含む。プロセッサ318は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのプログラムを実行できるいかなるタイプのプロセッサであってよい。プロセッサは複数の実施形態において実行するためのマイクロコード、プログラマブル・ロジックまたはハードコードロジックを含んでよい。図3は、そのようなプロセッサ318のみを示すが、一実施形態において、システム内に1つまたはそれ以上のプロセッサがあってもよい。さらに、プロセッサ318は、マルチコア、マルチスレッドのサポートなどを含んでよい。メモリ320は、様々な実施形態において、ハードディスク、フロッピーディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、前述のデバイスの任意の組み合わせ、または、プロセッサ318により読み取られることができる他のいかなるタイプのマシン可読媒体を含むことができる。メモリ320は、プログラムの実行および他の方法の実施形態を実行するための命令および/またはデータを格納することもできる。いくつかの実施形態では、本発明のいくつかの要素は、例えば、プラットフォームチップセット、または、システムの1つまたはそれ以上のメモリコントローラなどの他のシステム構成要素に実装されてもよい。
【0015】
VMM312は、ゲストソフトウェアに1つまたはそれ以上の仮想マシンの抽象概念を提示し、これは、様々なゲストに同じまたは異なる抽象概念を提供し得る。図3は、2つの仮想マシン302および314を示す。各仮想マシン上で動作するゲストソフトウェア303および313などのゲストソフトウェアは、ゲストOS304および306のようなゲストOSと、様々なゲストソフトウェアアプリケーション308および310を含んでよい。ゲストソフトウェア303および313は、ゲストソフトウェア303および313が動作する仮想マシン内の物理的資源(例えばプロセッサレジスタ、メモリおよびI/Oデバイス)にアクセスし、他の機能を実行してよい。例えば、ゲストソフトウェア303および313は、仮想マシン302および314において表わされるプロセッサおよびプラットフォームのアーキテクチャに従う、レジスタ、キャッシュ、構造、I/Oデバイス、メモリなどのすべてへのアクセスを有していることになっている。
【0016】
一実施形態では、プロセッサ318は、仮想マシン制御構造(VMCS)324に格納されたデータに従い、仮想マシン302および314の動作を制御する。VMCS324は、ゲストソフトウェア303および313の状態、VMM312の状態、VMM312がゲストソフトウェア303および313の動作を制御することをどのように望むかを示す実行制御情報、VMM312と仮想マシンとの間の移行を制御する情報などを含み得る構造である。プロセッサ318は、VMCS324から情報を読み取ることにより、仮想マシンの実行環境を決定し、その行動を制約する。一実施形態では、VMCS324は、メモリ320に格納される。いくつかの実施形態では、複数のVMCS構造が1つまたはそれ以上の仮想多重仮想マシン内でCPUをサポートすべく用いられる。
【0017】
VMM312は、仮想マシン302および314で動作するゲストソフトウェアによりアクセスできる物理メモリを管理する必要がある。一実施形態における物理メモリ管理を支持すべく、プロセッサ318は、拡張ページテーブル(EPT)機構を提供する。実施形態においては、VMM312は、仮想マシン302および314へ制御を移行する前に提供される必要があるかもしれない物理メモリ仮想化に関連するフィールドの値を提供する物理メモリ管理モジュール326を含む。これらのフィールドは、まとめてEPT制御と呼ばれる。EPT制御は、例えば、EPT機構が使用可能にされるべきかどうかを特定するEPT使用可能インジケータと、物理メモリ仮想化機構の形式およびセマンティクスを示す1つまたはそれ以上のEPTテーブル構成制御とを含んでよい。これらの詳細については、以下に述べる。さらに、一実施形態では、EPTテーブル328は、VMM312がゲストソフトウェア303および313上にあり得る物理アドレス翻訳およびプロテクションセマンティクスを示す。
【0018】
一実施形態では、EPT制御は、VMCS324に格納される。または、EPT制御は、プロセッサ318、メモリ320およびプロセッサ318の組み合わせ、あるいは、その他のいかなる記憶場所に存在してもよい。一実施形態では、個別のEPT制御は、仮想マシン302および314のそれぞれに対し維持される。一方、同じEPT制御は、両方の仮想マシンに対し維持され、各仮想マシンのエントリの前にVMM312によりアップデートされる。
【0019】
一実施形態では、EPTテーブル328は、メモリ320に格納される。または、EPTテーブル328は、プロセッサ318、メモリ320およびプロセッサ318の組み合わせ、あるいは、その他のいかなる記憶場所に存在してもよい。一実施形態では、個別のEPTテーブル328は、仮想マシン302および314のそれぞれに対し維持される。一方、同じEPTテーブル328は、両方の仮想マシン302および314に対し維持され、各仮想マシンのエントリの前にVMM312によりアップデートされる。
【0020】
一実施形態では、プロセッサ318は、EPT機構が使用可能インジケータに基づき使用可能であるかどうかを決定する役割を果たすEPTアクセスロジック322を含む。EPT機構が使用可能な場合、プロセッサは、EPT制御およびEPTテーブル328に基づき、ゲスト−物理アドレスをホスト−物理アドレスに翻訳する。
【0021】
示される実施形態において、プロセッサは、ゲスト−物理への線形、ゲスト−物理からホスト物理のアドレス、および、ホスト−物理翻訳への線形をキャッシュする翻訳ルックアサイドバッファ(TLB)323をさらに含んでよい。ゲスト−物理の線形、および、ホスト−物理翻訳への線形は、本願明細書中では「線形翻訳」と呼ばれる。ゲスト−物理からホスト−物理、および、ホスト−物理翻訳への線形は、本願明細書中では、「物理翻訳」と呼ばれる。
【0022】
システム300がマルチプロセッサまたはマルチスレッドプロセッサを含む一実施形態において、論理プロセッサのそれぞれは、個別のEPTアクセスロジック322に関連し、VMM312は、論理プロセッサそれぞれのためのEPTテーブル328およびEPT制御を構成する。
【0023】
ゲストソフトウェア(例えばゲストOS304およびアプリケーション308を含む303)によりアクセスされることができる資源は、「特権付き」または「特権なし」として分類されてもよい。特権付き資源に対し、VMM312は、これら特権付き資源全体の究極の制御を保持する一方で、ゲストソフトウェアに望まれる機能を促進する。さらに、各ゲストソフトウェア303および313は、例外(例えばページフォルト、一般的なプロテクションフォルトなど)、割り込み(例えばハードウェア割り込み、ソフトウェア割り込み)、および、プラットフォームイベント(例えば初期化(INIT)およびシステム管理割り込み(SMI))などの様々なプラットフォームイベントを処理することになっている。これらプラットフォームイベントのいくつかは、仮想マシン302および314の正確な動作を保証し、ゲストソストウェアからの、および、ゲストホストウェア間での保護の目的でVMM312により取り扱われる必要があるという理由から、「特権付き」である。ゲストオペレーティングシステムおよびゲストアプリケーションのどちらも特権付き資源へのアクセスを試みることができ、また、どちらも特権付きイベントを生じるかまたは体験する。本願明細書中、特権付きプラットフォームイベント、および、特権付き資源へアクセスの試みは、ひとまとめに「特権付きイベント」、または、「仮想化イベント」と呼ばれる。
【0024】
図3a:図3aは、図3の実施形態におけるプロセッサ318の高レベルにおけるいくつかのブロックレベル特徴を示す。一般的には、図3の318に示されるようなプロセッサは、プロセッサバスまたは図3aの337に示されるようなバスを含んでよい。さらに、図3aに示すように、プロセッサは、1つまたは複数のバンクにレジスタ350を含んでよく、各レジスタは、32、64、128、または、周知のように他のビット数のデータの記憶容量を有し得る。各レジスタバンクは、さらに、例えば8、32、64レジスタなどのいくつかのレジスタを有し得る。いくつかのレジスタは、x86の実施形態での場合のように例えばCRビットを格納するよう、制御およびステータスの使用専用であってよい。他の実施形態では、他の制御レジスタおよびフラッグは、異なる動作モード、および、技術的に周知であるようなステータス検査を許容するようプロセッサに格納されてよい。一般的に図3の実施形態で示されるようなプロセッサは、メモリ、キャッシュ、または、他の記憶装置から命令およびデータを取り出す論理または論理回路330、命令をデコードする論理または論理回路、および、命令を実行する334のような実行ユニットを含んでよい。これら機能ユニットのさまざまなバリエーションが可能であり、例えば、実行ユニットにおける実行がパイプラインで転送されてよく、または、推測、および、分岐予測を含むか、あるいは、特定のプロセッサ、または、アプリケーションに関連しての他の特徴を有してよい。他の関数論理365は、演算、グラフィック処理ロジック、および、周知のようなプロセッサの多くの他の特殊関数などであり、プロセッサ内に存在してよい。
オンボードキャッシュ360は、いくつかの実施形態に存在する可能性がある。このキャッシュは、周知のように、128MB、1GBなど様々なサイズを有し得る。図3を参照して先に示したように、プロセッサ318は、EPTアクセスロジック322およびTLB323を含む。EPTアクセスロジックは、EPTを配置し、制御し、かつ、管理するロジックを一実施形態に含んでよい。また、TLBは、一般的に、プロセッサ内の効率および他の目的でキャッシュされるページテーブルからのマッピングを含むバッファであってよい。
【0025】
図4:図4は、仮想マシン内のゲストソフトウェアがゲスト仮想アドレスを参照するときのホスト−物理アドレスを最終的に計算すべく、先に導入された拡張ページテーブルを用いた処理の一例を示す。示された例は、単純な32ビット仮想アドレス指定、および、単純なページテーブルフォーマットを用いたx86プラットフォームにおいて動作するゲストソフトウェアを示す。当業者であれば、この例を、例えば、いろいろある中でも、他のページングモード(ゲストソストウェアにおける64ビットアドレス指定など)、他の命令セットアーキテクチャ(インテル・イタニウム(登録商標)アーキテクチャ、x86アーキテクチャの64ビットおよび他のバリエーション、パワーPC(登録商標)アーキテクチャ)、および、他の構成を理解すべく、容易に拡張することができるであろう。
【0026】
図4では、ゲスト仮想アドレス410への参照は、仮想マシンにおいて実行されるゲストソフトウェアにより実行される。ゲスト内でアクティブなメモリ管理機構(すなわちゲストオペレーションシステムにより構成された機構)は、仮想アドレスをゲスト−物理アドレスに翻訳するために用いられる。翻訳中に用いられる各ゲスト−物理アドレス、および、結果として生じたゲスト−物理アドレスは、ホスト−物理メモリにアクセスする前に、EPTを介しホスト−物理アドレスに翻訳される。
このプロセスは、以下に詳しく説明する。
【0027】
この例では、CR3レジスタ420における適切なビット402は、ゲスト−物理メモリにおけるゲストのページディレクトリテーブル460のベースを示す。この値402は、ゲスト仮想アドレス410から上のビットと組み合わされることにより、(この例ではテーブル内のエントリがそれぞれ4バイトなので、4で乗じることによるx86セマンティクスに従い適切に調整される)、ゲストのPDテーブル460内のページディレクトリエントリ(PDE)のゲスト−物理アドレス412を形成する。この値412は、EPTテーブル455を介し翻訳されてページディレクトリエントリのホスト−物理アドレス404を形成する。プロセッサは、このホスト−物理アドレス404を用いてページディレクトリエントリにアクセスする。
【0028】
PDEからの情報は、ゲストのページテーブル470のベースアドレス422を含む。このゲスト−物理アドレス422は、ゲストのページテーブル470におけるページテーブルエントリのゲスト−物理アドレス432を形成するよう適切に調整されたゲスト仮想アドレス410のビット21:12と結合される。このゲスト−物理アドレス432は、EPTテーブル465を介し翻訳されることによりゲストのページテーブルエントリ(PTE)のホスト−物理アドレス414を形成する。
プロセッサは、このホスト−物理アドレス414を用いてPTEにアクセスする。
【0029】
PTEからの情報は、アクセスされるゲスト−物理メモリ内のページのベースアドレス442を含む。この値は、ゲスト仮想アドレス410の下位ビット(11:0)と結合されることにより、アクセスされるメモリのゲスト−物理アドレス452を形成する。この値452は、EPTテーブル475を介し翻訳されることにより、アクセスされるメモリのホスト−物理アドレス424を形成する。
【0030】
ゲスト−物理アドレスをホスト−物理アドレスに翻訳するためにEPTテーブルが使用されるたびに、プロセッサは、以下に述べるようなEPTテーブルにおける制御に従いアクセスが許容されることを認証する。したがって、図4に明らかに示されているが、一実施形態においてEPTテーブル455、465および475は、EPTテーブルの同様のセットである(すなわち、EPTテーブルの単一のセットがゲスト−物理からホスト−物理へのすべてのアドレス翻訳に用いられる)と理解されたい。
【0031】
プロセッサに基づくシステムにおける典型的な線形メモリサポートの実装では、ページテーブル構造に格納される線形アドレスから物理アドレスへのマッピングは、効率のために翻訳ルックアサイドバッファ(TLB)にキャッシュされる。TLBを管理し、かつ、プロセッサに基づくシステムで実行されるプログラムによりTLB内の特定のエントリがページテーブルエントリと確実に同期できるよう、命令は、プロセッサ命令セットに含まれてよい。したがって、例えば、x86アーキテクチャにおいて、MOV CR命令は、すべてのTLBエントリのグローバル無効を生じることもあるので、アドレスとしてのエントリの再同期がアクセスされる。一方、x86の例では、INVLPG命令を使用して、特定の線形アドレスのためのTLBに格納されたマッピングを無効化することにより、TLB内のエントリをアップデートさせ、ページテーブルにおけるマッピングと同期させてよい。
【0032】
一実施形態では、上述のような拡張ページングテーブル(EPT)を組み込む仮想化システムを含め、TLBは、ゲストマシンメモリで実行されるプロセスのためのホスト物理アドレス翻訳へのゲスト線形と、図3の323を参照して先に述べたようなホストマシンで直接実行されるVMMのなどのプロセスのためのホスト物理マッピングへのホスト線形とをキャッシュしてよい。前のケースでは、ホスト物理マッピングへのゲスト線形は、EPT同様、ゲスト内のページテーブルからも導出され得る。後のケースでは、マッピングは、ホストページテーブルから導出され得る。別のタイプのマッピング、すなわち、EPTに格納されたマッピングに基づき、ゲスト物理からホスト物理メモリへと直接導き出されるマッピングも、TLBに格納され得る。
【0033】
一実施形態では、新たなコマンドがプロセッサ命令セットに付加される。この実施形態では、新たなコマンドINVL_EPTは、ゲスト−物理からホスト−物理マッピングへと導き出されるTLBエントリを管理する方法により、VMMなどの仮想化システムのホストマシンで直接実行されるプログラムを提供する。具体的には、この実施形態では、INVL_EPT命令は、TLBにおけるゲスト−物理からホスト−物理、および、ホスト物理マッピングへの線形が、ホストメモリに存在するEPTテーブルと同期することを保証し、同期の存続範囲、EPTコンテキスト、そして、該当する場合は、マッピングが同期化されるゲスト物理メモリアドレスを特定する。コンテキストは、一般的に言ってシステムのアドレス空間の一部を定義する。ゲスト−物理からホスト−物理へのマッピングでは、EPTコンテキストは、現在アクティブなEPTテーブルにより定義され、次に本実施形態ではEPTポインタまたはEPTPと呼ばれるレジスタにより参照される。
【0034】
本実施形態において、INVL_EPT命令は、3つのオペランドを有する。第1のオペランドは、命令モードまたは異なる仕様の値であり、第2のオペランドは、INVL_EPT命令とは実行することであるEPTコンテキストに等しいEPTポインタを特定する値であり、第3のオペランドは、無効化されるTLBエントリに関連するゲスト物理アドレスを特定する値である。この実施形態では、第1のオペランドは、8ビットのイミディエート値として提供され、第2および第3のオペランドは、それぞれ64ビットを占有するメモリ内のブロックとして提供される。他の実施形態も可能である。
例えば、オペランドは、明示的または暗黙にレジスタまたは他のメモリ位置に設けられてよい。
【0035】
本実施形態における第1のオペランドは、少なくとも3つの定義された値を有するスイッチまたはフラグであり、したがって、INVL_EPT命令を特定することは、以下の3つの可能性のあるモードの1つを実行することになる。1.個別アドレスモード:このモードでは、上述の第2のオペランドに設けられたコンテキストにより参照されるEPT内のそのアドレスへのマッピングに基づき、単一のゲスト物理アドレスに関連するTLBにおける物理翻訳がEPTと同期する。2.コンテキストモード:このモードでは、ゲストアドレスパラメータ(前述の第3のオペランド)は無視され、前述の第2のオペランドにおいて特定されたEPT内のTLBのそれらのエントリがEPTと同期する。
3.グローバルモード:このモードでは、ゲストアドレスパラメータおよびEPTコンテキストパラメータのどちらも無視され、いずれかのEPTコンテキストから導出されたTLBエントリが同期化される。
【0036】
図5:図5のフローチャートは、一実施形態におけるINVL_EPT命令の実行を示す。
500から実行開始される。まず、プロセッサは、現在の実行環境がEPT関連動作に関し有効であることを確実にすべく、505において多数のテストを実行する。これらのテストは、とりわけ、システムがオペレーションの仮想化モードにあること、ページングが使用可能であること、現在エラー状態がないことを保証するテストを含んでよい。実行環境が有効でない場合、命令は、555および560を介し、未定義状態に出るか、一般的なプロテクションフォルトを生成するか、未定義オペコードフォルトを生成するかなどのいずれかを実行してよい。実行環境が有効な場合、本実施形態ではその後命令の実行は、510においてイミディエイト8ビットのオペランドを読み取る。SYNC_CMDと呼ばれるこのオペランドは、前述のようなINVL_EPT命令に対する有効モードを表わすとされている。515においてオペランドが有効でない場合、命令は前のように555および560に出る。オペランドが有効な場合、実行は次に進み、520においてメモリから第2および第3のオペランドを読み取り、そして前述したように、オペランドは、図中、INVLEPT_DESCと参照符号が付されたメモリ内の128ビットブロックにあるとされている。本実施形態における第1の64ビットは、EPTコンテキストまたはEPTテーブルポインタであり、525においてEPTP_CTXとして抽出される。次の64ビットは、530においてGP_ADDRとして抽出される命令に対するゲスト−物理アドレスパラメータである。
【0037】
そして命令の実行は、実行フローの535から580に示されるSYNC_CMDオペランドの値に基づく実際の同期化を実行することに進む。前述のように、SYNC_CMDは、すべてのEPTコンテキストに基づくTLBのグローバル同期化を実行することの指示、または、命令のオペランドにより特定されるEPTコンテキストのみの同期化を実行することの指示、あるいは、最終的に、パラメータとして提供されるEPTコンテキスト内のパラメータとして渡されたゲスト−物理アドレスのみの同期化を実行することの指示のいずれかであってよい。この実施形態では、図5の実行フローに示されるように、SYNC_CMD値が存在することのチェックは、535、第2段階540、第3段階545で行われる。535において、SYNC_CMDの値がグローバル同期を示す場合、命令は、すべてのEPTコンテキストのためのすべての物理マッピングを同期することを実行し、実行は、580で完了する。一方、SYNC_CMDが540においてコンテキスト特定同期を示す場合、実行は、提供されるEPTP_CTX値が有効であるかどうかのチェックに進む。例えば、予約ビットが値にセットされているか、または、EPTPにおけるアドレスが無効であるという理由で有効でない場合、命令の実行は555および560の一般的プロテクションフォルトにより終了する。提供されるコンテキストが有効である場合、実行は、575におけるEPTP_CTXにより参照されるEPTコンテキストのためのすべての物理マッピングを継続して同期化し、580で終了する。
【0038】
SYNC_CMDがグローバルでもコンテキストワイド同期でもなく、有効なオペレーションモードである場合、本実施形態における唯一の残る可能性は、特定のゲスト物理アドレスを同期化するコマンドにある。実行は、545で提供されるGP_ADDRパラメータが有効であるかどうかをチェックする。無効なアドレスが提供されている場合、実行は、一般的なプロテクションフォルトにより555および560を出る。一方、提供されたゲスト物理アドレスGP_ADDRに関連するすべての物理マッピングは、550においてEPTP_CTX内に設けられたコンテキストにより参照されるEPTと同期し、580で実行は終了する。
【0039】
前述した実施形態が広範囲に変更され得ることは、当業者にとり明らかであろう。いくつかの実施形態では、INVL_EPTと等しいコマンドが利用可能であるが、中でも名前、番号、フォーマット、パラメータの大きさを含む異なるシンタックスを有することもある。周知のように、異なる命令セットアーキテクチャ(ISA)が存在し、同様のコマンドが、異なるISAに、フォーマット、および、そのISAと一致する他の特性と共に提供される。一実施形態では、インテル(登録商標)イタニウムアーキテクチャに基づくプロセッサのための無効化、および/または、TLBとEPTとの同期化のための命令は、一当業者により上記設けられた実施形態の記載に基づき、直ちに仮想化され、記述される。他のいかなるISAのための複数の命令としてでもよい。
【0040】
先に参照された実施形態におけるEPTコンテキストに関する説明は、限定としてとられるべきでない。他の実施形態では、EPTの1つの例だけであってもよいし、または、前述のEPTPに類似する参照レジスタまたはポインタなどの参照機構と共に、x86の例で説明されたようにいくつかの例が動作可能であってもよい。
【0041】
他の実施形態では、パラメータの数およびフォーマットは、変更できる。例えば、前述の実施形態では、INVL_EPT命令は、1つのイミディエイトおよび2つのメモリベースのオペランドを有する。他の実施形態では、より多くのイミディエイトオペランドが用いられてよく、他の実施形態では、すべてのオペランドが、メモリベースであってよく、さらに他の実施形態では、オペランドは、周知のその他たくさんのバリエーションの中でも、プロセッサ内のレジスタまたは他の記憶装置から読み出されてよい。
【0042】
前述の実施形態は、INVL_EPT命令に対する3つの動作モードに関して記載されている。他の実施形態では、3つのモードのいくつかまたはすべてが抜けていてもよい。また、他の実施形態では、より多くのモードが利用可能であってもよい。例えば、いくつかの実施形態では、個別アドレス無効モードはなくてもよく、そのようなモードでは、すべてのTLBエントリが同期している。いくつかの実施形態では、システムにおいて動作するEPTの1つの例だけしかなくてもよく、このような実施形態では、コンテキストモードは、必要ないであろう。あるいは、いくつかの実施形態では、個別アドレス同期のみが有効であるか、または、他の実施形態では、グローバルアドレス同期のみを用いて、INVL_EPTに関して述べられた第1のオペランドを不要としてもよい。
【0043】
命令およびその動作におけるこれらの変更は可能であるが、中でも、INVL_EPT命令の一般的効果が他の命令の組み合わせにより得られる場合の変更を含む、他の多くの変更も当業者であればたやすく想定できるであろう。
【0044】
先の説明においては、記載された実施形態の完全なる理解をもたらすべく、数多くの具体的な詳細が記載されているが、これら具体的な詳細の記載なしに多くの他の実施形態を実行できることは当業者にとり明らかであろう。
【0045】
先の具体的な説明のいくつかの部分は、プロセッサに基づくシステム内のデータビットにおけるアルゴリズム、および、動作の象徴の観点から示されている。これらのアルゴリズム的記述および表現は、それらの作用の実体を他業者に最も効果的に伝える目的で、当業者が手段として用いている。動作は、物理量のそれらが要求している物理的操作である。これらの量は、電気、磁気、光学、または、格納、転送、結合、比較、さもなければ操作されることができる他の物理的信号であってよい。
これらの信号をビット,値,要素,符号,文字,用語,数字等と呼ぶことは、主として一般的な用法という理由からその時々で便利であることがわかっている。
【0046】
しかしながら、これらおよび同様の用語のすべては、適切な物理量に関連するものであり、それらの量に適用される便利なラベルにすぎないことは覚えておくべきである。特に説明しない限り、「実行」、「処理」、「計算」、「算出」、または、「決定」などの用語は、プロセッサに基づくシステム、あるいは、プロセッサに基づくシステムの記憶装置内の物理量として表わされたデータを操作し、かつ、同様に表わされた他のデータに変換する同様の電子計算機、または、他のそのような情報記憶、伝送またはディスプレイデバイスの動作およびプロセスに関連してよい。
【0047】
実施形態の説明において、添付の図面を参照することができる。図面において、同様の数字は、いくつかの図面全体にわたる実質的に同様の構成要素を説明する。他の実施形態も利用可能であり、構造的、論理的、電気的変更もなされてよい。さらに、多くの実施形態に相違点があっても必ずしも互いを排除するわけではないと理解されたい。例えば、一実施形態に記載された特定の特徴、構造、または、特性が他の実施形態内に含まれてもよい。
【0048】
さらに、プロセッサに実装される一実施形態の設計は、作成からシミュレーション、製造まで様々な段階を経てよい。設計を表わすデータは、多くのやり方で設計を表わしてよい。まず、シミュレーションに役立つように、ハードウェア記述言語または他の関数的記述言語を用いてハードウェアが表わされてよい。次に、設計プロセスのいくつかの段階で論理および/またはトランジスタゲートによる回路レベルモデルが生成されてよい。さらに、ほとんどの設計がいくつかの段階でハードウェアモデルにおける様々なデバイスの物理的配置を表わすデータレベルに達してよい。従来の半導体製造技術が用いられる場合、ハードウェアモデルを表わすデータは、集積回路を生成するために使用されるマスクの異なるマスク層における様々な特徴の有無を特定するデータであってよい。設計の任意の表現では、データは、いかなる形式の機械可読媒体に格納されてもよい。機械可読媒体は、そのような情報を伝送すべく変調されるか、さもなくば生成される光または電波、メモリ、あるいは、ディスクのような磁気または光記憶装置であってよい。これらの媒体のいずれも、設計またはソフトウェア情報を「有する」または「示す」ことができる。コードまたは設計を示すかあるいは有する電気キャリアが伝送されると、電気信号のコピー、バッファリング、または、再送が実行される範囲で新たなコピーがなされる。したがって、通信プロバイダまたはネットワークプロバイダは、一実施形態を構成するかまたは表わす物品(キャリア)のコピーを作成できる。
【0049】
複数の実施形態は、マシンにアクセスされたとき、請求項に記載の内容に従うプロセスをマシンに実行させることができるデータを格納した機械可読媒体を含み得るプログラム製品として提供されてよい。機械可読媒体は、これに限定されないが、フロッピーディスケット、光ディスク、DVD−ROMディスク、DVD−RAMディスク、DVD−RWディスク、DVD+RWディスク、CD−Rディスク、CD−RWディスク、CD−ROMディスク、光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気または光カード、フラッシュメモリ、あるいは、電子命令を格納するのに適した他のタイプの媒体/機械可読媒体を含んでよい。さらに、複数の実施形態は、プログラム製品としてダウンロードされてよく、プログラムは、キャリアまたは他の伝搬媒質に含まれるデータ信号により、リモート・データ・ソースから要求しているデバイスへと通信リンク(モデムまたはネットワーク接続など)を介し転送されてよい。
【0050】
多くの方法は、最も基本的な形式で記載されているが、請求項に記載された内容の基本的な範囲を逸脱せずに、いずれの方法に/から段階を加えても/削除してもよく、記載された内容のいずれに/から情報を付加しても/抜き取ることもできる。さらに多くの修正および改作がなされてもよいことは、当業者にとって明らかであろう。特定の実施形態は、請求項に記載された内容を制限するものではなく、例示に過ぎない。請求項に記載された内容の範囲は、上述の詳細な説明ではなく、添付の請求項によってのみ決定される。
【図面の簡単な説明】
【0051】
【図1】プロセスと物理メモリとの間の関係を示す。
【図2】一実施形態における、仮想マシンとホストマシンとの間の関係を抽象的に示す。
【図3】一実施形態における、仮想マシン環境のハイレベル構造を示す。
【図3a】一実施形態における、機能レベルでのプロセッサを表わす。
【図4】一実施形態における、拡張ページングテーブルを使用したアドレス計算を示す。
【図5】一実施形態における命令の実行フローを示す。

【特許請求の範囲】
【請求項1】
仮想化に基づくシステムのプロセッサであって、
プロセッサバスと、
ゲストアドレスからホスト物理アドレスまでのマッピングを含む翻訳ルックアサイドバッファ(TLB)を格納するバッファと、
命令を受信し、かつ、オペランドを受信するフェッチロジックと、
前記命令をデコードするデコードロジックと、
前記命令のデコードに少なくとも一部応答し、前記バッファに格納された前記ゲストアドレスから前記ホスト物理アドレスまでのマッピングと、拡張ページングテーブル(EPT)に少なくとも一部格納された、ゲスト物理アドレスに対応するホスト物理アドレスの翻訳を含む、対応するマッピングとの同期を実行する論理回路と、
を含み、
前記同期は、前記命令の前記オペランドに少なくとも一部さらに基づき、前記オペランドは、コンテキストディスクリプタおよびEPTポインタの少なくとも1つをさらに備える、
プロセッサ。
【請求項2】
前記論理回路は、複数のマイクロコード命令に少なくとも一部基づき動作する論理回路を含む、請求項1に記載のプロセッサ。
【請求項3】
前記EPTは、前記プロセッサにバスにより結合されたメモリに少なくとも一部格納される、請求項1または請求項2に記載のプロセッサ。
【請求項4】
前記論理回路は、前記命令の前記オペランドから導かれるコンテキストディスクリプタに少なくとも一部基づき、前記EPTから前記マッピングをさらに選択する、請求項1から請求項3のいずれか1つに記載のプロセッサ。
【請求項5】
前記論理回路は、前記コンテキストディスクリプタから導かれるEPTポインタに少なくとも一部基づき、前記EPTから前記マッピングをさらに選択する、請求項4に記載のプロセッサ。
【請求項6】
前記論理回路は、前記命令のオペランドに少なくとも一部基づき、前記ゲストアドレスをさらに選択する、請求項1から請求項5のいずれか1つに記載のプロセッサ。
【請求項7】
前記マッピングの同期は、前記EPTに格納された前記マッピングに少なくとも一部基づき前記TLBに格納された前記マッピングをアップデートすることをさらに含み、
前記対応するマッピングは、前記TLBに格納された前記マッピングと同じゲストアドレスをもつ前記EPTに格納されたマッピングをさらに含む、
請求項1から請求項6のいずれか1つに記載のプロセッサ。
【請求項8】
前記マッピングの同期は、前記TLBに格納されたマッピングをフラッシングすることをさらに含む、請求項1から請求項7のいずれか1つに記載のプロセッサ。
【請求項9】
前記論理回路は、前記命令の前記オペランドに少なくとも一部基づき前記命令の実行モードをさらに選択する、請求項1から請求項8のいずれか1つに記載のプロセッサ。
【請求項10】
前記フェッチロジックは、前記命令の第1のオペランドと、前記命令の第2のオペランドと、前記命令の第3のオペランドとをさらに受信し、
前記論理回路は、さらに、
前記命令の前記第1のオペランドから導かれたコンテキストディスクリプタに基づき、前記EPTに少なくとも一部格納された前記マッピングを選択し、
前記命令の前記第2のオペランドに少なくとも一部基づき前記ゲストアドレスを選択し、
前記命令の前記第3のオペランドに少なくとも一部基づき前記命令の実行モードを選択し、
前記命令の実行モードは、
前記TLBに格納された前記ゲストアドレスに関連する単一のマッピングのみが前記EPT内の前記対応するマッピングと同期する第1のモード、
前記TLBに格納され、かつ、前記コンテキストディスクリプタから導かれたEPTコンテキストと関連するすべてのマッピングが前記EPT内の前記対応するマッピングと同期する第2のモード、および、
いずれかのEPTコンテキストと関連する前記TLBに格納されたすべてのマッピングがEPT内の前記対応するマッピングと同期する第3のモード、
の1つである、請求項1から請求項9のいずれか1つに記載のプロセッサ。
【請求項11】
前記ゲストアドレスは、ゲスト物理アドレスをさらに含む、請求項1から請求項10のいずれか1つに記載のプロセッサ。
【請求項12】
前記ゲストアドレスは、ゲスト線形アドレスをさらに含む、請求項1から請求項11のいずれか1つに記載のプロセッサ。
【請求項13】
ホストおよびゲストを含む仮想化に基づくシステムにおいて、
翻訳ルックアサイドバッファ(TLB)に少なくとも一部格納されたホスト物理アドレスへのゲストアドレスの翻訳を含むマッピングと、前記仮想化に基づくシステムの拡張ページングテーブル(EPT)であってゲスト物理アドレスに対応するホスト物理アドレスの翻訳を含むEPTに少なくとも一部格納された対応するマッピングとを同期させることと、
命令のオペランドに少なくとも一部基づき前記EPTに少なくとも一部格納された前記マッピングを選択することと、
を含み、前記オペランドは、コンテキストディスクリプタおよびEPTポインタの少なくとも1つを含む方法。
【請求項14】
前記命令のオペランドから導かれるコンテキストディスクリプタに一部基づき、前記EPTから前記マッピングを選択することをさらに含む、請求項13に記載の方法。
【請求項15】
前記コンテキストディスクリプタから導かれるEPTポインタに一部基づき、前記EPTに少なくとも一部格納される前記マッピングを選択することをさらに含む、請求項14に記載の方法。
【請求項16】
前記命令のオペランドに少なくとも一部基づき、前記ゲストアドレスを選択することをさらに含む、請求項13から請求項15のいずれか1つに記載の方法。
【請求項17】
前記マッピングを同期することは、前記EPTに格納された前記マッピングに少なくとも一部基づき前記TLBに格納された前記マッピングをアップデートすることをさらに含み、
前記対応するマッピングは、前記TLBに格納された前記マッピングと同じゲストアドレスを有する前記EPTに格納されたマッピングをさらに含む、
請求項13から請求項16のいずれか1つに記載された方法。
【請求項18】
前記マッピングを同期することは、前記TLBから格納された前記マッピングをフラッシングすることをさらに含む、請求項13から請求項17のいずれか1つに記載の方法。
【請求項19】
前記命令のオペランドに少なくとも一部基づき、前記命令の実行モードを選択することをさらに含む、請求項13から請求項18のいずれか1つに記載の方法。
【請求項20】
前記命令の第1のオペランドから導かれるコンテキストディスクリプタに基づき、前記EPTに少なくとも一部格納された前記マッピングを選択することと、
前記命令の第2のオペランドに少なくとも一部基づき、前記ゲストアドレスを選択することと、
前記命令の第3のオペランドに少なくとも一部基づき、前記命令の実行モードを選択することと、
を含み、
前記命令の前記実行モードは、
前記TLB内に格納され、かつ、前記ゲストアドレスに関連する単一のマッピングのみが前記EPT内の前記対応するマッピングと同期する第1のモード、
前記TLBに格納され、かつ、前記コンテキストディスクリプタから導かれるEPTコンテキストに関連するすべてのマッピングが前記EPT内の前記対応するマッピングと同期する第2のモード、および、
いずれかのEPTコンテキストに関連する前記TLBに格納されたすべてのマッピングがEPT内の前記対応するマッピングと同期する第3のモード、
の1つである、
請求項13から請求項19のいずれか1つに記載の方法。
【請求項21】
前記ゲストアドレスは、ゲスト物理アドレスをさらに含む、請求項13から請求項20のいずれか1つに記載の方法。
【請求項22】
前記ゲストアドレスは、ゲスト線形アドレスをさらに含む、請求項13から請求項21のいずれか1つに記載の方法。
【請求項23】
仮想化に基づくシステムであって、
プロセッサと、
前記プロセッサにバスにより接続されるメモリと、
命令を実行する前記プロセッサの論理回路であって、前記命令は、
翻訳ルックアサイドバッファ(TLB)に少なくとも格納されたホスト物理アドレスへのゲストアドレスの翻訳を含むマッピングを、前記仮想化に基づくシステムの拡張ページングテーブル(EPT)であって、ゲスト物理アドレスに対応するホスト物理アドレスの翻訳を含むEPTに少なくとも一部格納された対応するマッピングと同期させることと、
前記命令のオペランドに少なくとも一部基づく前記EPT内に少なくとも一部格納された前記マッピングを選択することと、を実行し、
前記オペランドは、コンテキストディスクリプタおよびEPTポインタの少なくとも1つを含む、
仮想化に基づくシステム。
【請求項24】
前記プロセッサは、さらに、
前記命令のオペランドから導かれるコンテキストディスクリプタに一部基づき、前記EPTから前記マッピングを選択する、
請求項23に記載のシステム。
【請求項25】
前記プロセッサは、さらに、
前記コンテキストディスクリプタから導かれるEPTポインタに一部基づき、該EPTに少なくとも一部格納される前記マッピングを選択する、
請求項24に記載のシステム。
【請求項26】
前記プロセッサは、さらに、
前記命令のオペランドに少なくとも一部基づき、前記ゲストアドレスを選択する、請求項23から請求項25のいずれか1つに記載のシステム。
【請求項27】
前記論理回路は、さらに、前記EPT内に格納された前記マッピングに少なくとも一部基づき、前記TLBに格納された前記マッピングと、前記TLBに格納された前記マッピングと同じゲストアドレスをもつ前記EPTに格納されたマッピングをさらに含む前記対応するマッピングとを同期させる、請求項23から請求項26のいずれか1つに記載のシステム。
【請求項28】
前記論理回路は、さらに、前記TLBから格納された前記マッピングをフラッシングする、請求項27に記載のシステム。
【請求項29】
前記論理回路は、前記命令のオペランドに少なくとも一部基づき、前記命令の実行モードを選択する、請求項23から請求項28のいずれか1つに記載のシステム。
【請求項30】
前記論理回路は、さらに、前記命令の第1のオペランドから導かれるコンテキストディスクリプタに基づき、前記EPT内に少なくとも一部格納された前記マッピングを選択し、
前記命令の第2のオペランドに少なくとも一部基づき、前記ゲストアドレスを選択し、
前記命令の第3のオペランドに少なくとも一部基づき、前記命令の実行モードを選択し、
前記命令の前記実行モードは、
前記TLBに格納され、前記ゲストアドレスに関連する単一のマッピングのみが前記EPT内の前記対応するマッピングと同期する第1のモード、
前記TLBに格納され、前記コンテキストディスクリプタから導かれるEPTコンテキストに関連するすべてのマッピングが前記EPT内の前記対応するマッピングと同期する第2のモード、および、
いずれかのEPTコンテキストと関連する前記TLBに格納されたすべてのマッピングがEPT内の前記対応するマッピングと同期する第3のモード、
の1つである、請求項23から請求項29のいずれか1つに記載のシステム。
【請求項31】
前記ゲストアドレスは、ゲスト物理アドレスをさらに含む、請求項23から請求項30のいずれか1つに記載のシステム。
【請求項32】
前記ゲストアドレスは、ゲスト線形アドレスをさらに含む、請求項23から請求項31のいずれか1つに記載のシステム。
【請求項33】
前記メモリは、ダイナミックランダムアクセスメモリ(DRAM)をさらに含む、請求項23から請求項32のいずれか1つに記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図3a】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−53888(P2012−53888A)
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願番号】特願2011−222052(P2011−222052)
【出願日】平成23年10月6日(2011.10.6)
【分割の表示】特願2007−211396(P2007−211396)の分割
【原出願日】平成19年8月14日(2007.8.14)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】