(57)【要約】      （修正有）【課題】ゲスト変換データ構造におけるどのエントリが仮想マシンによって修正されたかを判定する。【解決手段】判定は、シャドウ変換データ構造におけるエントリに関連付けられた属性、及び仮想マシン・モニタによってメンテナンスが行われるシャドウ変換データ構造から抽出されたメタデータに基づいて行われる。方法は、ゲスト変換データ構造における修正されたエントリに対応するシャドウ変換データ構造におけるエントリを、ゲスト変換データ構造における修正されたエントリと同期化させる工程と、アクティブ・エントリ・リストにおける各エントリを複数のプロセッサの何れが保有するかを識別するシャドウ変換データ構造における対応するエントリに関連付けられた属性に少なくとも部分的に基づいて、アクティブ・エントリ・リストにおいてどのエントリを保つかを判定する工程とを含む。【選択図】図１
2011023000.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
変換ルックアサイド・バッファに関する特権化イベントによる仮想マシンから移行された第１のプロセッサの制御を受ける工程であって、前記第１のプロセッサは複数のプロセッサのうちの１つである工程と、
ゲスト変換データ構造におけるどのエントリが前記仮想マシンによって修正されたかを、仮想マシン・モニタによってメンテナンスが行われるシャドウ変換データ構造から抽出されるメタデータ、及び前記シャドウ変換データ構造におけるエントリに関連付けられた属性に基づいて判定する工程であって、前記メタデータは、前記ゲスト変換データ構造の形成においてゲスト・オペレーティング・システムによって使用されるページをマッピングするマッピングを識別するアクティブ・エントリ・リストを含む工程と、
前記ゲスト変換構造における前記修正されたエントリに対応する前記シャドウ変換データ構造におけるエントリを、前記ゲスト変換データ構造における前記修正されたエントリと同期化させる工程と、
前記アクティブ・エントリ・リストにおいてどのエントリを保つかを、前記アクティブ・エントリ・リストにおける各エントリを前記複数のプロセッサのうちのどれが保有するかを識別する前記シャドウ変換データ構造における対応するエントリに関連付けられた属性に少なくとも部分的に基づいて判定する工程と
を含む方法。
【請求項２】
請求項１記載の方法であって、前記シャドウ変換データ構造における対応するエントリに関連付けられた属性が、前記複数のプロセッサにおける第２のプロセッサを前記アクティブ・エントリ・リストにおける前記エントリのオーナとして識別する場合に、前記アクティブ・エントリ・リストにおけるエントリを保つ工程を更に含む方法。
【請求項３】
請求項１記載の方法であって、前記シャドウ変換データ構造における対応するエントリに関連付けられた属性が、前記第１のプロセッサを前記アクティブ・エントリ・リストにおける前記エントリのオーナとして識別する場合に、前記アクティブ・エントリ・リストからエントリを除外する工程を更に含む方法。
【請求項４】
請求項１記載の方法であって、
前記複数のプロセッサにおける第２のプロセッサが、前記第１のプロセッサの前記アクティブ・エントリ・リストにおけるエントリのオーナである旨を判定する工程と、
対応するエントリを求めて、前記第２のプロセッサの前記アクティブ・エントリ・リストを検査する工程と
を更に含む方法。
【請求項５】
請求項４記載の方法であって、前記第２のプロセッサの前記アクティブ・エントリ・リストが前記対応するエントリを含む場合、前記第１のプロセッサの前記アクティブ・エントリ・リストにおける前記エントリを保つ工程を更に含む方法。
【請求項６】
請求項４記載の方法であって、前記第２のプロセッサの前記アクティブ・エントリ・リストに、対応するエントリが見つからない場合、前記第１のプロセッサの前記アクティブ・エントリ・リストから前記エントリを除去する工程を更に含む方法。
【請求項７】
請求項４記載の方法であって、前記第２のプロセッサの前記アクティブ・エントリ・リストが、前記対応するエントリを含み、かつ、前記対応するエントリに関連付けられた属性が、前記対応するエントリがダーティである旨を示す場合、前記第１のプロセッサの前記アクティブ・エントリ・リストにおける前記エントリを保つ工程を更に含む方法。
【請求項８】
請求項４記載の方法であって、前記第２のプロセッサの前記アクティブ・エントリ・リストが、前記対応するエントリを含み、かつ、前記対応するエントリに関連付けられた属性が、前記対応するエントリがダーティでない旨を示す場合、前記第１のプロセッサの前記アクティブ・エントリ・リストから前記エントリを除去する工程を更に含む方法。
【請求項９】
請求項１記載の方法であって、前記同期化させる工程が、前記複数のプロセッサにおける前記第１のプロセッサ上で、前記複数のプロセッサにおける何れの他のプロセッサに割り込むことなく行われる方法。
【請求項１０】
方法であって、
第１のプロセッサ上のアドレス変換動作について、第１のゲスト・オペレーティング・システムによって使用される第１のゲストＰＴ階層に基づいて第１のシャドウ・ページ・テーブル（ＰＴ）階層を作成する工程と、
前記第１のシャドウＰＴ階層から第１のメタデータを導き出して、前記第１のシャドウＰＴ階層において表される前記第１のゲストＰＴ階層のどのエントリが修正されたかを後に判定する工程であって、前記第１のメタデータは、前記第１のゲストＰＴ階層の形成において前記第１のゲスト・オペレーティング・システムによって使用されるページをマッピングするマッピングを識別する第１のアクティブ・エントリ・リストを含む工程と、
第２のプロセッサ上のアドレス変換動作について、第２のゲスト・オペレーティング・システムによって使用される第２のゲストＰＴ階層に基づいて第２のシャドウＰＴ階層を作成する工程と、
前記第２のシャドウＰＴ階層から第２のメタデータを導き出して、前記第２のシャドウＰＴ階層において表される前記第２のゲストＰＴ階層のどのエントリが修正されたかを後に判定する工程であって、前記第２のメタデータは、前記第２のゲストＰＴ階層の形成において前記第２のゲスト・オペレーティング・システムによって使用されるページをマッピングするマッピングを識別する第２のアクティブ・エントリ・リストを含む工程と、
前記第１のプロセッサ及び前記第２のプロセッサの何れが前記エントリのオーナであるかを示すために、前記第１のアクティブ・エントリ・リスト内及び前記第２のアクティブ・エントリ・リスト内の各エントリに関連付けられた属性のメンテナンスを行う工程と
を含む方法。
【請求項１１】
請求項１０記載の方法であって、前記第１のゲスト・オペレーティング・システムが前記第１のゲストＰＴ階層におけるエントリを修正しようとする工程を更に含む方法。
【請求項１２】
請求項１１記載の方法であって、前記第１のゲスト・オペレーティング・システムが前記第１のゲストＰＴ階層におけるエントリを修正しようとする工程に応じて前記第１のアクティブ・エントリ・リストにエントリを追加する工程を更に含む方法。
【請求項１３】
請求項１２記載の方法であって、前記第１のプロセッサが、前記追加されたエントリを保有する旨を示すために、前記第１のアクティブ・エントリ・リストに追加された前記エントリに関連付けられた属性を設定する工程を更に含む方法。
【請求項１４】
請求項１３記載の方法であって、前記第１のゲストＰＴ階層における対応するエントリがダーティである旨を示すために、前記第１のアクティブ・エントリ・リストに追加された前記エントリに関連付けられた属性を設定する工程を更に含む方法。
【請求項１５】
請求項１４記載の方法であって、前記第１のゲスト・オペレーティング・システムが前記第１のゲストＰＴ階層におけるエントリを修正しようとする工程に応じて前記第２のアクティブ・エントリ・リストにエントリを追加する工程を更に含む方法。
【請求項１６】
請求項１５記載の方法であって、前記第１のプロセッサが、前記追加されたエントリを保有する旨を示すために、前記第２のアクティブ・エントリ・リストに前記追加されたエントリに関連付けられた属性を設定する工程を更に含む方法。
【請求項１７】
装置であって、
第１のプロセッサであって、
前記第１のプロセッサ上の第１の仮想マシンの動作をサポートするための第１の仮想化ロジックと、
第１のシャドウ・アドレス変換データ構造への第１の参照を記憶するための第１の記憶位置とを含み、
前記第１のシャドウ・アドレス変換データ構造を、前記第１の仮想マシンによって使用される第１のゲスト・アドレス変換データ構造と同期化させるために、第１のアクティブ・エントリ・リストのメンテナンスを行う第１のプロセッサと、
第２のプロセッサであって、
前記第２のプロセッサ上の第２の仮想マシンの動作をサポートするための第２の仮想化ロジックと、
第２のシャドウ・アドレス変換データ構造への第２の参照を記憶するための第２の記憶位置とを含み、
前記第２のシャドウ・アドレス変換データ構造を、前記第２の仮想マシンによって使用される第２のゲスト・アドレス変換データ構造と同期化させるために、第２のアクティブ・エントリ・リストのメンテナンスを行う第２のプロセッサとを備え、
前記第１のアクティブ・エントリ・リスト及び前記第２のアクティブ・エントリ・リストにおける各エントリは、前記第１のプロセッサ及び前記第２のプロセッサの何れが前記エントリのオーナであるかの表示を含む装置。
【請求項１８】
請求項１７記載の装置であって、前記第１のプロセッサは、前記第２のプロセッサに割り込むことなく、前記第１のシャドウ・アドレス変換データ構造を前記第１のゲスト・アドレス変換データ構造と同期化させる装置。
【請求項１９】
請求項１８記載の装置であって、前記第１のプロセッサは、前記第１のプロセッサ及び前記第２のプロセッサの何れが各エントリのオーナであるかの表示に少なくとも部分的に基づいて、前記第１のアクティブ・エントリ・リストにおけるどのエントリを保つかを判定することにより、前記第２のプロセッサに割り込むことなく、前記第１のシャドウ・アドレス変換データ構造を前記第１のゲスト・アドレス変換構造と同期化させる装置。
【請求項２０】
請求項１９記載の装置であって、前記第１のプロセッサは、前記第２のプロセッサが前記エントリのオーナである場合に前記第１のアクティブ・エントリ・リストにおけるエントリを保つことにより、前記第２のプロセッサに割り込むことなく、前記第１のシャドウ・アドレス変換データ構造を前記第１のゲスト・アドレス変換データ構造と同期化させる装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、概括的には仮想マシンに関し、特に、仮想マシン環境におけるアドレス変換のサポートに関する。
【背景技術】
【０００２】
従来の仮想マシン・モニタ（ＶＭＭ）は通常、コンピュータ上で実行し、１つ又は複数の仮想マシンの抽象化を他のソフトウェアに提示する。各仮想マシンは、併せてゲスト・ソフトウェアとして表す、それ自身の「ゲスト・オペレーティング・システム」（すなわち、ＶＭＭによってホスティングされるオペレーティング・システム（ＯＳ））及び他のソフトウェアを実行する自己完結型プラットフォームとして機能し得る。ゲスト・ソフトウェアは、仮想マシンでなく専用コンピュータ上で実行しているかのように動作することが期待される。すなわち、ゲスト・ソフトウェアは、種々のイベントを制御し、物理メモリやメモリ・マップされた入出力（Ｉ／Ｏ）装置などのハードウェア資源へのアクセスを有することが期待される。例えば、ゲスト・ソフトウェアは、アドレス変換動作に対する制御を維持し、物理メモリを割り当て、ゲスト・アプリケーションからの保護及びゲスト・アプリケーションとの間の保護を提供し、種々のページング手法を使用する等の機能を有することが期待される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、仮想マシン環境では、ＶＭＭは、仮想マシンからの保護及び仮想マシンとの間の保護を提供するためにコンピュータ資源に対する究極的制御を有することができるべきである。
【課題を解決するための手段】
【０００４】
マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置を説明する。
【図面の簡単な説明】
【０００５】
【図１】本発明が動作し得る、仮想マシン環境の一実施例を示す図である。
【図２】本発明の一実施例による仮想ＴＬＢの動作を示す図である。
【図３Ａ】本発明の別の実施例によるシャドウＰＴ階層のメタデータの作成及びメンテナンスの処理を示す図である。
【図３Ｂ】本発明の別の実施例によるシャドウＰＴ階層のメタデータの作成及びメンテナンスの処理を示す図である。
【図４】ゲスト変換データ構造及びシャドウ変換データ構造を同期化させる処理の一実施例を示すフロー図である。
【図５】シャドウ変換データ構造のメタデータのメンテナンスの処理の一実施例を示すフロー図である。
【図６】アドレス空間の変更を容易にする処理の一実施例を示すフロー図である。
【図７】特定されたアドレスの２つの変換データ構造のエントリを同期化させる処理の一実施例を示すフロー図である。
【図８】ＶＭＭによってメンテナンスが行われるシャドウＰＴ階層のワーキング・セットからシャドウＰＴ階層を除外する処理の一実施例を示すフロー図である。
【図９】シャドウＰＴ階層のＰＤにエントリを追加する処理の一実施例を示すフロー図である。
【図１０】シャドウＰＴ階層のＰＤからエントリを除去する処理の一実施例を示すフロー図である。
【図１１】シャドウＰＴ階層のＰＴにエントリを追加する処理の一実施例を示すフロー図である。
【図１２】シャドウＰＴ階層のＰＴからエントリを除外する処理の一実施例を示すフロー図である。
【図１３】シャドウＰＴ階層のＰＴＥを監視する処理の一実施例を示すフロー図である。
【図１４】シャドウＰＴ階層のＰＴＥから監視を除外する処理の一実施例を示すフロー図である。
【図１５】マルチプロセサ・システムにおけるシャドウＰＴ階層を保守する処理の一実施例を示すフロー図である。
【図１６】マルチプロセッサ・システムにおけるプロセッサの現在のゲスト状態及びプロセッサのワーキング・セットを同期化させる処理の一実施例を示すフロー図である。
【発明を実施するための形態】
【０００６】
本発明は、添付図面の図において、例として示し、限定として示すものでない。同じ参照符号は同じ構成要素を表す。
【０００７】
以下の詳細な説明では、説明の目的で、数多くの特定の詳細を記載して本発明を詳細に理解させるようにしている。しかし、前述の具体的な詳細なしで本発明を実施することができるということは当業者に明らかになるであろう。
【実施例】
【０００８】
以下に続く詳細な説明の一部分は、コンピュータ・システムのレジスタ内又はメモリ内のデータ・ビットに対する演算のアルゴリズム及び記号表現によって提示する。前述のアルゴリズム記述及び表現は、成果の本質を他の当業者に最も効果的に伝えるためにデータ処理技術分野における当業者によって用いられる手段である。アルゴリズムは本明細書では、かつ、一般には、所望の結果につながる、自己矛盾のない工程系列であるとして考え出されている。工程は、物理的数量の物理的操作を必要とするものである。通常、必然的ではないが、前述の数量は、記憶し、転送し、合成し、比較し、他のやり方で操作することができる電気信号又は磁気信号の形式を呈する。時には、前述の信号をビット、値、エレメント、シンボル、文字、項、数字等として表すことが、特に、慣用されているという理由で好都合であることが明らかになっている。
【０００９】
しかし、前述及び同様な語は全て、適切な物理的数量と関連付けられるものとし、前述の数量に付される好都合なラベルに過ぎない。以下の記載から明らかなように、別記しない限り、「処理」あるいは「計算」あるいは「算出」あるいは「判定」等などの語を利用した記載は、コンピュータシステム・メモリ内あるいはレジスタ内あるいは他の前述の情報記憶装置内、伝送装置内あるいは表示装置内の物理的数量として同様に表される他のデータに、コンピュータ・システムのレジスタ内及びメモリ内の物理的（電子的）数量として表されるデータを操作し、変換するコンピュータ・システム又は同様な電子計算装置の動作及び処理を表し得る。
【００１０】
本願の実施例の以下の詳細な説明では、本発明を実施することができる特定の実施例を例証として示す添付図面を参照する。図面では、類似した符号は、いくつかの図にわたり、実質的に類似した構成部分を表す。前述の実施例は、当業者が本発明を実施することを可能にするために十分詳細に説明する。他の実施例を利用することができ、本発明の範囲を逸脱しない限り、構造的、論理的及び電気的変更を行うことができる。更に、本発明の種々の実施例は、違っていても、必ずしも、相互排他的でない。例えば、一実施例に記載した特定の構成、構造又は特性を他の実施例を含むことができる。したがって、以下の詳細な説明は、限定的な意味合いで解されないものとし、本発明の範囲は、前述の特許請求の範囲が与えられる均等物の完全な範囲とともに、特許請求の範囲によってのみ、規定される。
【００１１】
以下の例は、実行装置及び論理回路の意味合いで仮想マシン環境におけるアドレス変換のサポートの提供を表し得るが、本発明の他の実施例はソフトウェアによって実現することが可能である。例えば、一部の実施例では、本発明は、本発明による処理を行うようコンピュータ（又は他の電子装置）をプログラムするために使用することができる命令を記憶させたマシン又はコンピュータ読み取り可能な媒体を含み得るコンピュータ・プログラム・プロダクト又はソフトウェアとして提供することができる。他の実施例では、本発明の処理は、処理を行うための配線ロジックを含む特定のハードウェア構成部分、又はプログラムされたコンピュータ構成部分及びカスタム・ハードウェア構成部分の何れかの組合せによって行うことができる。
【００１２】
よって、マシン読み取り可能な媒体は、マシン（例えば、コンピュータ）によって読み取り可能な形式において情報を記憶又は伝送する何れかの機構を含み得、しかし、フロッピー（登録商標）・ディスケット、光ディスク、コンパクト・ディスク・リードオンリー・メモリ（ＣＤ−ＲＯＭ）、及び光磁気ディスク、リード・オンリー・メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、消去可能なプログラマブル・リードオンリー・メモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブル・リードオンリー・メモリ（ＥＥＰＲＯＭ）、磁気カード若しくは光学カード、フラッシュ・メモリ、インターネットを介した伝送、電気形式、光形式、及び音響形式又は他の形式の搬送信号（例えば、キャリア波、赤外信号、ディジタル信号等）に限定されない。
【００１３】
更に、設計は、生成、シミュレーションから製造までの種々の段階を進み得る。設計を表すデータは、いくつかのやり方における設計を表し得る。第１に、シミュレーションにおいて有用であるように、ハードウェアは、ハードウェア記述言語又は別の機能的記述言語を使用して表すことができる。更に、論理及び／又はトランジスタ・ゲートを備えた回路レベル・モデルは、設計プロセスの一部の段階で生成することができる。更に、大半の設計は、特定の段階で、ハ―ドウェア・モデルにおける種々の装置の物理的配置を表すデータ・レベルに達する。通常の半導体製造手法が使用される場合、ハードウェア・モデルを表すデータは、集積回路を生成するために使用されるマスクの別々のマスク層上の種々の特徴の有無を規定するデータであり得る。設計の何れかの表現では、データは、何れかの形態のマシン読み取り可能な媒体に記憶され得る。前述の情報を伝送するよう、変調又は他のやり方で生成された光波若しくは電波、メモリ、あるいは、ディスクなどの磁気記憶装置又は光学記憶装置はマシン読み取り可能な媒体であり得る。前述の媒体は何れも、設計又はソフトウェア情報を「担持する」か、又は「示す」ことができる。電気信号の複製、バッファリング又は再送信が行われる範囲で、コード又は設計を示すか、若しくは担持する電気的キャリア波が送信されると、新たな複製が行われる。よって、通信プロバイダ又はネットワーク・プロバイダは、本発明の手法を実施する物品（キャリア波）の複製を行うことができる。
【００１４】
図１は、本発明が動作し得る、仮想マシン環境１００の一実施例を示す。この実施例では、ベア・プラットフォーム・ハードウェア１１６は、例えば、ＶＭＭ１１２などの仮想マシン・モニタ（ＶＭＭ）又は標準オペレーティング・システム（ＯＳ）を実行することができる計算プラットフォームを備える。
【００１５】
通常、ソフトウェアで実現されるＶＭＭ１１２は、ベア・マシン・インタフェースをエミュレートし、より高いレベルのソフトウェアにエクスポートすることができる。前述の高レベルのソフトウェアは、標準ＯＳ又はリアルタイムＯＳであり得、オペレーティング・システム機能が限定的な、機能を非常に縮小した動作環境であり得、伝統的なＯＳ機能を含まないことがあり得る。あるいは、例えば、ＶＭＭ１１２は、別のＶＭＭ内で、又は別のＶＭＭ上で実行することができる。ＶＭＭは例えば、ハードウェア、ソフトウェア、ファームウェア、又は種々の手法の組合せで実現することができる。
【００１６】
プラットフォーム・ハードウェア１１６は、パソコン（ＰＣ）、メインフレーム、ハンドヘルド装置、ポータブル・コンピュータ、セットトップ・ボックスや、何れかの他の計算システムであり得る。プラットフォーム・ハードウェア１１６は、プロセッサ１１８、プロセッサ１１９、及びメモリ１２０を含む。
【００１７】
プロセッサ１１８及び１１９は、マイクロプロセッサ、ディジタル信号プロセッサ、マイクロコントローラ等などのソフトウェアを実行することができる何れかのタイプのプロセッサであり得る。プロセッサ１１８及び１１９は、同じタイプの、又は別々の２つのタイプの別個のプロセッサであり得、又はそれぞれ、マルチコア・プロセッサの別個の実行コアであり得る。プロセッサ１１８及び１１９は、本発明の方法の実施例の実行を行うために、マイクロコード、プログラム可能なロジック又はハードコードされたロジックを含み得る。図１は、前述の２つのプロセッサ１１８及び１１１９のみを示すが、システムにおいて３つの以上のプロセッサが存在し得る。
【００１８】
メモリ１２０は、ハード・ディスク、フロッピー（登録商標）・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）（例えば、ダイナミックＲＡＭ（ＤＲＡＭ）又はスタティックＲＡＭ（ＳＲＡＭ））、リード・オンリー・メモリ（ＲＯＭ）、フラッシュ・メモリ、上記装置の何れかの組合せ、又は、プロセッサ１１８及び１１９によって読み取り可能な何れかの他のタイプのマシン媒体であり得る。メモリ１２０は、本発明の方法の実施例の実行を行うための命令及び／又はデータを記憶し得る。
【００１９】
ＶＭＭ１１２は、種々のゲストに、同じ又は別々の抽象化を提供し得る１つ又は複数の仮想マシン（ＶＭ）の抽象化を他のソフトウェア（すなわち、「ゲスト」ソフトウェア）に提示する。図１は２つのＶＭ１０２及び１１４を示す。各ＶＭ上で実行するゲスト・ソフトウェアは、種々のゲスト・ソフトウェア・アプリケーション１０８及び１１０、並びに、ゲストＯＳ１０４又は１０６などのゲストＯＳを含み得る。ゲストＯＳ１０４及び１０６はそれぞれ、ゲストＯＳ１０４又は１０６が実行するＶＭ１０２及び１１４内の物理リソース（例えば、プロセッサ・レジスタ、メモリ、及びＩ／Ｏ装置）にアクセスし、他の機能を行うことが期待される。例えば、ゲストＯＳ１０４又は１０６は、ＶＭ１０２及び１１４において提示されたプラットフォーム及びプロセッサのアーキテクチャにより、レジスタ、キャッシュ、構造、Ｉ／Ｏ装置、メモリ等全てへのアクセスを有することが期待される。ゲスト・ソフトウェアによってアクセスすることが可能なリソースは、「特権化」又は「非特権化」として分類することができる。特権化リソースの場合、前述の特権化リソースに対する究極的制御を維持しながら、ゲスト・ソフトウェアが望む機能を促進する。非特権化リソースは、ＶＭＭ１１２によって制御されなくてよく、ゲスト・ソフトウェアによって直接、アクセスすることが可能である。
【００２０】
更に、各ゲストＯＳは、例外（例えば、ページ・フォールト、一般保護違反等）、割り込み（例えば、ハードウェア割り込み、ソフトウェア割り込み）、及びプラットフォーム・イベント（例えば、初期化（ＩＮＩＴ）及びシステム管理割り込み（ＳＭＩ））などの種々のフォールト・イベントを扱うことが期待される。前述のフォールト・イベントの一部は「特権化」されている。ゲスト・ソフトウェアからの保護、並びにゲスト・ソフトウェアとの間の保護のために、及び、ＶＭ１０２とＶＭ１１２との適切な動作を確実にするためにＶＭＭ１１２によって扱われなければならないからである。
【００２１】
特権化フォールト・イベントが発生すると、又はゲスト・ソフトウェアが特権化リソースにアクセスしようとすると、制御は、ＶＭＭ１１２に移行することができる。ゲスト・ソフトウェアからＶＭＭ１１２への制御の移行は本明細書及び特許請求の範囲ではＶＭイグジットとして表される。適切にイベントを扱うか、又はリソース・アクセスを促進した後、ＶＭＭ１１２は制御をゲスト・ソフトウェアに戻すことができる。ＶＭＭ１１２からゲスト・ソフトウェアへの制御の移行は、ＶＭエントリと呼ばれる。
【００２２】
一実施例では、プロセッサ１１８及び／又は１１９は、仮想マシン制御構造（ＶＭＣＳ）１２５に記憶されたデータにより、ＶＭ１０２及び１１４の動作を制御する。ＶＭＣＳ１２５は、ゲスト・ソフトウェアの状態、ＶＭＭ１１２の状態、ゲスト・ソフトウェアの動作をＶＭＭ１１２がどのようにして制御したいかを示す実行制御情報、ＶＭＭ１１２とＶＭとの間の遷移を制御する情報等を含み得る構造である。プロセッサ１１８及び／又は１１９は、ＶＭＣＳ１２５からの情報を読み取って、ＶＭの実行環境を判定し、その挙動を制約する。一実施例では、ＶＭＣＳがメモリ１２０に記憶される。一部の実施例では、複数のＶＭＣＳ構造が、複数のＶＭをサポートするために使用される。
【００２３】
アドレス変換動作中、ＶＭ１０２又は１１４は、物理メモリを割り当て、ゲスト・ソフトウェア・アプリケーション（例えば、アプリケーション１０８又は１１０）からの、又はゲスト・ソフトウェア・アプリケーションとの間の保護を提供し、種々のページング手法を使用すること等が期待される。非仮想マシン環境では、ＯＳによって期待されるアドレス変換機構は、ページングがイネーブルされると物理メモリ・アドレスに仮想メモリ・アドレスを変換するために使用され、ＯＳによって制御され、ページ・テーブル（ＰＴ）階層などの変換データ構造及びプロセッサによって制御される変換ルックアサイド・バッファ（ＴＬＢ）に基づき得る。プロセッサ１１８及び１２０は、仮想・物理メモリ・アドレス変換を記憶するＴＬＢ１２２及び１２３それぞれを含む。
【００２４】
インテル（登録商標）社ペンティアム（登録商標）４プロセッサのアーキテクチャはいくつかのページング・モードをサポートする。最も一般的に使用されるページング・モードは、（２レベル階層ページング・モードとして本明細書及び特許請求の範囲において表す）２レベルの階層ページング構造を使用した３２ビット線形アドレス空間をサポートする。本発明の実施例は、このページング・モードに限定されないが、代わりに、他のページング・モード（例えば、物理アドレス拡張（ＰＡＥ）モード、インテル（登録商標）社拡張メモリ６４手法（ＥＭ６４Ｔ）モード等）及び実現形態（例えば、ハッシュ・ページ・テーブル）を仮想化するために当業者によって使用することができる。ＴＬＢに基づいた一実施例では、物理メモリ・アドレスへの仮想メモリ・アドレスの変換は、仮想アドレスの上位１０ビット（４ＭＢページ・フレームの場合）又は上位２０ビット（４ＫＢページ・フレームの場合）を使用したサーチで始まる。一致が見つかった場合（ＴＬＢヒットの場合）、ＴＬＢに含まれる物理ページ・フレームの上位ビットは、物理アドレスの形成において仮想アドレスの下位ビットと結合される。ＴＬＢは、マッピングに関連付けられたアクセス及び許可属性も含む。一致が見つからなかった場合（ＴＬＢミスの場合）、プロセッサは、ＰＴ階層に照会して仮想対物理変換を求め、それは次いでＴＬＢにおいてキャッシュされる。ＰＴ階層におけるエントリは、特定のアクセスについてプロセッサによって自動的に設定される一部の属性を含み得る。
【００２５】
ＰＴ階層が修正された場合、対応するアドレス変換がＴＬＢに存在する場合、ＴＬＢは、ＰＴ階層と不整合になり得る。ＯＳは、プロセッサに命令を出すことにより、前述の不整合を解消することができることが期待され得る。例えば、（ＩＡ−３２ＩＳＡとして本明細書及び特許請求の範囲に表す）インテル（登録商標）社ペンティアム（登録商標）４の命令セット・アーキテクチャ（ＩＳＡ）では、プロセッサは、ＩＮＶＬＰＧ命令を出すことにより、ＴＬＢにおけるキャッシングされた変換をソフトウェアが無効にすることを可能にする。更に、ＯＳは、アドレス空間を完全に変更する旨をプロセッサに要求することを期待し得る。これにより、ＴＬＢからの変換全ての除去が生じる。例えば、ＩＡ−３２ＩＳＡでは、ＯＳは、（ＰＴ階層のベース・アドレスを含む）ＣＲ３をプロセッサがロードすることを要求する旨のＭＯＶ命令又はタスク・スイッチを使用し、それにより、ＴＬＢからの変換全てを除去することができる。種々のレベルのページ・テーブル階層は、モード及び実現形態に基づいて別々の名称を有し得る。２レベル階層ページング・モードでは、二レベルのページング構造が存在している。ＣＲ３レジスタは、ページ・ディレクトリのページのベースを指し示す。ページ・ディレクトリにおけるエントリは、大容量ページ（例えば、４ＭＢのスーパーページ、２ＭＢのスーパーページ、１ＧＢのスーパーページ等）へのマッピング、又はページ・テーブルへの参照を規定することができる。ページ・テーブルは同様に、小容量のページへのマッピングを含み得る。
【００２６】
上記の通り、仮想マシン環境では、ＶＭＭ１１２は、ＴＬＢを含む物理リソースに対する究極的制御を有することができる。本発明の実施例は、プロセッサの物理ＴＬＢの機能をエミュレートする仮想ＴＬＢを使用することにより、ＶＭＭ１１２の役割と、ＶＭ１０２及び１１４の期待との不一致に対処する。
【００２７】
仮想ＴＬＢは、ＶＭＭ１１２によって制御されるシャドウＰＴ階層の組、及び物理ＴＬＢを含む。シャドウＰＴ階層の組は、ＶＭ１０２又は１１４によって現在使用されていてもいなくてもよいゲストＰＴ階層からその形式及びコンテンツを導き出す。ＶＭ１０２又は１１４がゲストＰＴ階層のコンテンツを修正した場合、このコンテンツは、シャドウＰＴ階層のコンテンツと不整合になる。ゲストＰＴ階層とシャドウＰＴ階層との間の不整合は、その物理ＴＬＢの管理においてプロセッサによって使用されるものと同様な手法を使用して解決される。前述の手法の一部は、ＴＬＢを操作しようとすることを示すイベント（例えば、ＩＮＶＬＰＧ，ページ・フォールト、及びＣＲ３ロード）をＶＭ１０２又は１１４が出すことを強いる。前述のイベントは特権化されており、よって、ＶＭＭ１１２へのＶＭイグジットをもたらす。ＶＭＭは次いで、イベントを評価し、必要な場合、現在のゲスト状態と、メンテナンスが行われたシャドウＰＴ階層全てを同期化させる。メンテナンスが行われたシャドウＰＴ階層の組をワーキング・セットとして表す。複数の処理は、同じゲスト・ページ・テーブルを使用し得るので、同じシャドウＰＴが、複数のゲストＰＴ階層の一部であることが考えられる。同様に、対応するシャドウＰＴは、複数のシャドウＰＴ階層のメンバになる。
【００２８】
ＶＭＭによって行われる同期化は、現在使用されていないシャドウＰＴ階層のシャドウ・ページ・テーブル又はページ・ディレクトリ・エントリを更新し得る。同様に、同期化は、使用中のゲストＰＴ階層の一部でないゲスト・ページに対して必要であり得る。
【００２９】
一実施例では、ＶＭＭ１１２は、仮想ＴＬＢ（ＶＴＬＢ）データ記憶装置１２４においてＶＭ１０２及び１１４それぞれのシャドウＰＴ階層のワーキング・セットを作成し、メンテナンスを行う役割を果たすアドレス変換モジュール１２６を含む。シャドウＰＴ階層のワーキング・セットが、ＶＭ１０２又は１１４の対応するアクティブな処理（すなわち、ＶＭ１０２又は１１４により、近い将来、活動化される可能性が高い処理）についてメンテナンスが行われる。ＩＡ３２ＩＳＡの場合、明示的に規定された唯一のゲスト階層は、現在使用されているページング構造によって規定されたものである。実際には、ゲスト・プロセス及びそのアドレス空間について、高い時間局所性が存在している。ＶＭＭは、アクティブ処理の組を求めるよう発見的方法又は明示的情報を使用し得る。
【００３０】
ＶＭ１０２又は１１４が、ＶＭ１０２又は１１４のアクティブ処理の１つについてゲストＰＴ階層を動作可能にすると、アドレス変換モジュール１２６は、ワーキング・セットにおける対応するシャドウＰＴ階層を識別し、そのベース・アドレスをロードする旨をプロセッサに要求する。該当する場合、アドレス変換モジュール１２６は次いで、シャドウＰＴ階層に記憶された先行して計算されたマッピングを再使用することが可能である。
【００３１】
ＶＭ１０２又は１１４が、新たな処理を活動化させた場合、アドレス変換モジュール１２６は、新たなシャドウＰＴ階層を対応するゲストＰＴ階層から導き出し、それをワーキング・セットに加える。あるいは、ＶＭ１０２又は１１４が既存の処理を非活動化した場合、アドレス変換モジュール１２６は、ゲストＰＴ階層に対応する情報をワーキング・セットから除外する。
【００３２】
一実施例では、アドレス変換モジュール１２６は、新たなシャドウＰＴ階層それぞれからメタデータを抽出し、メタデータをＶＴＬＢデータ記憶装置１２４に記憶し、シャドウＰＴ階層が修正されるとメタデータを更新する役割を果たす。一実施例では、メタデータは、ＰＴベクトル（ＰＴＶ）、ＰＤベクトル（ＰＤＶ）、アクティブＰＴＥリスト、及びアクティブＰＤＥリストを含む。
【００３３】
ＰＴＶ及びＰＤＶは、ＰＴ及びＰＤとして使用されるゲスト・フレームを追跡する。一実施例では、この情報はビット・ベクタにおいて符号化される。ＰＴＶは、ページ・フレーム番号（ＰＦＮ）で索引化され、対応するＰＦＮがＰＴの場合、エントリ・ビットはそれぞれ、セットされる。ＰＤＶは、ページ・フレーム番号（ＰＦＮ）で索引化され、各エントリ・ビットは、対応するＰＦＮがＰＤである場合、セットされ得る。
【００３４】
アクティブＰＴＥリストは、ＰＴ及びＰＤを保持するフレームを指し示すシャドウＰＴ階層におけるＰＴエントリ（ＰＴＥ）リストである。アクティブＰＤＥリストは、アクティブＰＴＥリストにおいて識別されたＰＴエントリを含むＰＴを指し示すシャドウＰＴ階層におけるＰＤエントリ（ＰＤＥ）を識別する。
【００３５】
一実施例では、アクティブＰＤＥ及びＰＴＥは、マッピングがＰＤフレーム又はＰＴフレームに対してかを表す更なるメタデータを含む。
【００３６】
本発明の実施例は、本明細書及び特許請求の範囲記載のものよりも空間効率的又は時間効率的であり得る種々のデータ構造を使用し得るということを当業者は理解するであろう。更なるページング・モードをサポートするための追跡構造の拡張も当業者は認識するであろう。例えば、ＥＭ６４Ｔページング・モードは、４レベル階層ページング構造を介して、６４ビット仮想アドレスを物理アドレスにマッピングする。仮想又は物理アドレス空間においてサポートされるビットの実際数は実現形態に依存し得、特定の実現形態では、６４ビット未満であり得る。以下に更に詳細に説明するように、ＥＭ６４Ｔの実現形態は、ＥＭ６４Ｔページング構造において使用される更なるページ・テーブルを追跡するためにページマップ・レベル４（ＰＭＬ４）ページ・ベクトル及びページ・ディレクトリ・ポインタ（ＰＤＰ）ページ・ベクトルの追加を必要とし得る。同様に、ページング構造内で使用される何れかのページ（例えば、ＥＭ６４ＴのＰＭＬ４又はＰＤＰページ）をマッピングするエントリを含むよう拡張される。
【００３７】
一実施例では、ページ・テーブルを介してマッピングされるＰＤフレーム及びＰＴフレームの数を追跡するためのアクティブＰＴＥ／ＰＤＥリスト・メタデータのメンテナンスを行う。ページ毎のマッピングの数が０から増やされると、ＰＴをマッピングするＰＤＥがアクティブＰＤＥリストに追加されなければならず、マッピングの数が０に減らされると、このＰＴをマッピングするＰＤＥはアクティブＰＤＥリストから除去されなければならない。
【００３８】
一実施例では、アドレス変換モジュール１２６は、同期化が必要な場合、現在のシャドウＰＴ階層を現在のゲストＰＴ階層と同期化させる役割を担う。アドレス変換モジュール１２６は、ゲストＰＴ階層におけるどのエントリが最近修正されているかを求め、次いで、相応に、シャドウＰＴ階層における対応するエントリを更新することにより、同期化を行う。アドレス変換モジュール１２６は、シャドウＰＴ階層から抽出されたメタデータ、及びシャドウＰＴ階層のエントリに関連付けられた属性に基づいて、ゲストＰＴ階層におけるどのエントリが最近修正されているかを判定する。一実施例では、シャドウＰＴ階層におけるＰＤエントリに関連付けられたアクセス属性、及びシャドウＰＴ階層におけるＰＴエントリに関連付けられた更新属性を含む。
【００３９】
図２は、本発明の一実施例による仮想ＴＬＢ２０４の動作を示す。仮想ＴＬＢ２０４は、シャドウＰＴ階層２０６及び物理ＴＬＢ２０８によって表されるシャドウ変換データ構造を含む。シャドウＰＴ階層２０６は、ゲストＰＴ階層２０２によって表されるゲスト変換データ構造からその構造及びコンテンツを導き出す。一実施例では、ＶＭＭは、ＶＭのアクティブな処理のために、シャドウＰＴ階層のワーキング・セットのメンテナンスを行う。
【００４０】
一実施例では、ＶＭが、別のゲストＰＴ階層を（例えば、ＩＡ−３２  ＩＳＡにおけるＣＲ３又はタスク・スイッチにＭＯＶを出すことにより、）プロセッサがイネーブルする旨をプロセッサに要求すると、制御はＶＭＭに移行し、ＶＭＭは、要求側のゲストＰＴ階層２０２に対応するシャドウＰＴ階層２０６のベース・アドレス２１４をロードする旨をプロセッサに指示する。一部の実施例では、このシャドウＰＴ階層２０６は、以下に更に詳細に説明するように、適切なメタデータ及び属性を使用してゲストＰＴ階層２０２と同期化させる。
【００４１】
一実施例では、仮想ＴＬＢは、シャドウＰＤ及びＰＴのエントリにおけるアクセス及び更新の属性のメンテナンスを行う。前述の属性は、アクセスされた（Ａ）ビット及びダーティ（Ｄ）ビットとしても表す。一実施例では、ページ・フレームが、初めてゲスト・ソフトウェアによってアクセスされると、プロセッサは、シャドウＰＴ階層２０６における対応するＰＴエントリ又はＰＤエントリに、アクセスされた（Ａ）属性をセットする。ゲスト・ソフトウェアが、ページ・フレームに書き込もうとする場合、プロセッサは、対応するシャドウＰＴエントリにダーティ（Ｄ）属性をセットする。
【００４２】
ゲスト・ソフトウェアは、仮想・物理マッピング、許可等の変更を含む、ゲストＰＴ階層２０２を自由に修正することが可能である。よって、シャドウＰＴ階層２０６は、ゲストＰＴ階層２０２と常に整合している訳でないことがあり得る。階層２０２と階層２０６との間の不整合から問題が生じると、仮想ＴＬＢ２０４を物理ＴＬＢとして扱うゲストＯＳは、適切なＩＳＡによって規定された動作をプロセッサが実行する旨を要求することにより、仮想ＴＬＢ２０４を変更しようとする。例えば、ＩＡ−３２ＩＳＡでは、前述の動作は、ＩＮＶＬＰＧ命令、ＣＲ３ロード、ページング活動化（ＣＲ０．ＰＧの修正）、グローバル・ページングの修正（ＣＲ４．ＰＧＥビットのトグル）等を含む。仮想ＴＬＢ２０４を変更しようとする動作は、（例えば、ＶＭＣＳに記憶された対応する実行制御を使用して）特権化されたものとしてＶＭＭによって構成され、よって、ＶＭＭへのＶＭイグジットをもたらす。ＶＭＭは次いで、ＶＭエグジットの原因を求め、必要な場合、シャドウＰＴ階層２０６のコンテンツを修正する。例えば、ゲストＯＳによって扱われるべきページ・フォールト（例えば、ゲストＰＴ階層２０２によって許可されないアクセスによって生じたページ・フォールト）により、ＶＭイグジットが生じた場合、ページ・フォールトは、扱うためにゲストＯＳに注入される。あるいは、階層２０２及び階層２０６のエントリ間の不整合によって生じたページ・フォールト（又はＩＮＶＬＰＧなどの何れかの他の動作）により、ＶＭエグジットが生じた場合、ＶＭＭは、以下に更に詳細に説明するように、旧いエントリを除去し、新しいエントリを追加し、又は既存エントリを修正することが必要であり得る。ゲストＰＴ階層によって生じるページ・フォールトは、本明細書及び特許請求の範囲記載の「実の」ページ・フォールトとして表され、ゲスト・ページ・テーブルの直接の使用によって生じなかったであろうページ・フォールトは、本明細書及び特許請求の範囲では、「誘起された」ページ・フォールトと表す。
【００４３】
図３Ａは、本発明の一実施例による、二レベルの階層ページング・モードにおけるシャドウＰＴ階層のメタデータの生成及びメンテナンスを行う処理を示す。
【００４４】
図３Ａを参照すれば、別個の文字（文字Ａ乃至Ｗ）によって識別された、いくつかの物理ページ・フレームを示す。一部のゲスト・ページ・フレームはＰＤ（例えば、フレームＡ）を含み得る。他のゲスト・ページ・フレームはＰＴ（例えば、フレームＡ、Ｂ、Ｃ及びＬ）を含み得る。階層３０２は、ゲストＰＴ階層である。
【００４５】
図３Ａは、ゲストＰＴ階層３０２に基づいて生成されたシャドウＰＴ階層３０４を示す。ゲストＰＴ階層３０２におけるＰＤ又はＰＴはそれぞれ、シャドウＰＴ階層３０４における、対応するＰＤ又はＰＴを含む。一般に、シャドウ・ページは、ゲストＰＴにおけるページ毎に必要でない。一部の実施例は、使用統計により、シャドウ・ページを制限する（例えば、使用されているゲストＰＴページのシャドウ・ページのみを生成する）か、又はリソース制約により、シャドウ・ページを制限する（例えば、利用可能なメモリに基づいたシャドウ・ページの組のみのメンテナンスを行う）ことにし得る。別個のシャドウ・テーブルは、同じ物理フレームから導き出されるＰＤテーブル及びＰＴテーブルについて、メンテナンスが行われる。例えば、別個のテーブル３３０及び３３２は、同じ物理フレーム３１４から導き出されたＰＤ３０６及びＰＴ３０８についてメンテナンスが行われる。シャドウＰＴ階層３０４におけるＰＤエントリ及びＰＴエントリは、ゲスト・フレーム３１４乃至３２４の変換されたマッピングを含む。
【００４６】
ゲストＰＴ階層３０２では、フレーム３１６及び３１８はＰＴ３１０及び３１２として使用され、フレーム３１４はＰＤ３０６及びＰＴ３０８として使用される。この使用は、シャドウＰＴ階層３０４の下で示すページ・フレーム３１４乃至３１６における「ＰＴ」及び「ＰＤ／ＰＴ」として示す。
【００４７】
シャドウＰＴ階層３０４は、アクティブＰＴＥリスト３４２及びアクティブＰＤＥリスト３４４と関連付けられる。一実施例では、アクティブＰＴＥリスト３４２は、ゲストＰＴ階層３０２からＰＴ及びＰＤページ・フレームをマッピングするシャドウＰＴ階層３０４におけるＰＴエントリを識別する。特に、アクティブＰＴＥリスト３４２は、ページ・フレーム３１４乃至３１８をマッピングするＰＴ３２２におけるエントリを識別する。一実施例では、アクティブＰＤＥリスト３４４は、アクティブＰＴＥリスト３４２において識別されたエントリを備えたＰＴを指し示すシャドウＰＴ階層におけるＰＤエントリを識別する。特に、アクティブＰＤＥリスト３４４は、ＰＴ３３２を指し示すＰＤ３３０におけるエントリを含む。アクティブＰＴＥリスト３４２及びアクティブＰＴＥリスト３４４は、シャドウＰＴ階層３０４のメタデータの構成部分である。
【００４８】
シャドウＰＴ階層３０４は、ＰＴビット・ベクタ（ＰＴＶ）３６２及びＰＤビット・ベクトル（ＰＤＶ）３６４に関連付けられる。一実施例では、ＰＴＶ３６２は、ＰＴとして使用されるゲスト・ページ・フレームを追跡する。特に、ＰＴＶ３６２は、ゲストＰＴ階層３０２においてＰＴとして使用されるページ・フレーム３１４乃至３１８を含む。一実施例では、ＰＤＶ３６４は、ＰＤとして使用されるゲスト・ページ・フレームを追跡する。特に、ＰＤＶ３６４は、ゲストＰＴ階層３０２においてＰＤとして使用されるページ・フレーム３１４を含む。一実施例では、ＰＴＶ３６２及びＰＤＶ３６４は、ワーキング・セットにおけるシャドウＰＴ階層全てを表し、ワーキング・セットにおいてシャドウ・ページが使用されるキャパシティを追跡する（例えば、シャドウ・ページが、ゲストＰＴに割り当てられていなかった場合、ゲスト・ページング構造に現れていても、ＰＴＶはゲストＰＴページを反映するものでない）。
【００４９】
一実施例では、ゲストＯＳが新たなＰＴをゲストＰＴ階層３０２に追加した場合、ＶＭＭはこの追加を（例えば、ＴＬＢ操作に関する次の、又は後続のＶＭイグジットにおいて）検出し、対応するＰＴをシャドウＰＴ階層３０４に追加することができる。例えば、フレーム３１９から導き出された新たなＰＴ３５２がゲストＰＴ階層３０２に、新たなフレーム３５４のマッピングとともに、追加された場合、ＶＭＭは、変換されたマッピングを備えた対応するＰＴ３６０をシャドウＰＴ階層３０４に加え、この変更を反映するようメタデータを更新することができる。特に、ＶＭＭは、ＰＴ３３２におけるエントリ・マッピング・フレーム３１９をアクティブＰＴＥリスト３４２に加え、ＰＤ３３０におけるＰＴ３６０を指し示すエントリをアクティブＰＤＥリスト３４４に加える。更に、ＶＭＭは、ＰＴとして使用されるゲスト・フレーム（すなわち、ここでは、フレーム１３１９）を追跡するＰＴＶ３６２にフレーム３１９を追加する。
【００５０】
図３Ｂは、本発明の一実施例による、ＥＭＴ６４Ｔページング・モードにおけるシャドウＰＴ階層のメタデータの生成及びメンテナンスの処理を示す。
【００５１】
図３Ｂを参照すれば、ページング構造のベースは、ＰＭＬ４ページ（例えば、フレームＡ）である。ＰＭＬページ４における各エントリは、ＰＤＰページ（例えば、フレームＢ及びＣ）を参照し得る。ＰＤＰページにおける各エントリは、ページ・ディレクトリ（ＰＤ）ページ（例えば、フレームＤ又はＥ）を参照し得る。その各エントリは同様に、ページ・テーブル（ＰＴ）ページにおけるページ（例えば、フレームＦ、Ｇ、Ｈ又はＩ）を参照し得る。
【００５２】
ＰＭＬ４、ＰＤＰ、ＰＤ、又はＰＴページはそれぞれ、サイズが４ＫＢであり得る。３２ビットよりも大きな物理アドレス空間をサポートするために、エントリ・サイズを、３２ビット・ページング・モードに対して増加させることができる。特に、ページ毎に５１２のエントリが存在し得る。これは、適切なエントリを選択するために、各レベルで仮想アドレスの９ビットを使用することを必要とする。前述の選択器の容量は、上述の４ＭＢの代わりに２ＭＢという大容量のページ容量につながり得る。
【００５３】
一実施例では、ＥＭ６４Ｔページング・モードにおけるメタデータの作成は、いくつかのベクトル、アクティブ・エントリ・リスト、及びいくつかのアクティブ・ディレクトリ・リストの生成を含む。ベクトルは、ＰＭＬ４ページとして使用されるフレームを識別するＰＭＬ４Ｖベクトルと、ＰＤＰページとして使用されるフレームを識別するＰＤＰＶベクトル、ＰＤページとして使用されるフレームを識別するＰＤＶベクトル、及び、ＰＴページとして使用されるフレームを識別するＰＴＶベクトルを含む。アクティブ・エントリ・リストは、ＰＭＬ４、ＰＤＰ、ＰＤ又はＰＴページをマッピングするマッピング全てを含むアクティブＰＴＥリストである。アクティブ・ディレクトリ・リストは、シャドウ構造に対応するゲスト・ページをそれによってアクセスすることが可能な低位構造を参照する高位マッピング構造を識別するリストを含む。特に、アクティブ・ディレクトリは、アクティブＰＴＥリスト・エントリを含むページを参照するＰＤＥを含むアクティブＰＤＥリストと、アクティブＰＤＥリスト・エントリを含むＰＤを参照するアクティブＰＤＰＥエントリを含むアクティブＰＤＰＥリストと、アクティブＰＤＰＥリストにおける構成要素を含むＰＤＰをマッピングするエントリを含むアクティブＰＭＬ４Ｅリストとを含む。
【００５４】
一実施例では、シャドウ・ページ・テーブルの同期化は、使用されたシャドウＰＴ階層に関連付けられたアクティブＰＭＬ４Ｅリストにおける各エントリの検査で始まる。エントリにアクセスされた場合、アクセスされたＰＭＬ４エントリに対応するアクティブＰＤＰＥリストにおける各要素が検査され、次いで、処理は上述のように続く。
【００５５】
別の実施例では、階層の上位レベルの１つ又は複数について、アクティブ・リストのメンテナンス及び／又は処理が行われない。例えば、最上位ページング構造において単一のエントリのみが埋められているシステムでは、階層の各レベルのアクティブ・リストの使用により、この単一のエントリが常にアクセス可能になり、それにより、階層における低位レベルにおいて必要な処理の量の削減は可能にされない。前述の使用モデルに対応するために、同期化は、代わりに、階層のより低い所において、アクティブ・リストを処理することにより、始まり得る。例えば、一実施例では、アクティブＰＤＰＥリスト要素をまず、処理し、次いで、使用されたシャドウＰＴ階層に関連付けられたアクティブＰＴＥリスト要素又はアクティブＰＤＥリスト要素を処理し得る。一実施例では、同期化に際して処理される初期層は予め定められたものであり得る。別の実施例では、処理される対象の初期層は、ゲストのページ・テーブル使用の動的プロファイリングによって求めることができる。
【００５６】
種々の他のページング・モードは、本発明の実施例に使用することができる。例えば、ＩＡ−３２は、３２ビット仮想アドレスが、より大きな物理アドレスにマッピングされる更なるページング・モードをサポートする。前述の更なる動作モードでは、ページ・テーブル・ベース・レジスタは、４つの要素を含むＰＤＰページを指し示すよう構成される。前述の更なる動作モードにおけるエントリ・サイズ及び挙動は、６４ビットの仮想アドレス・モードについて上述したものと同様である。この更なるモードはＰＭＬ４ページを利用しないので、ＰＭＬ４Ｖ及びアクティブＰＭＬ４Ｅリストは必要でない。
【００５７】
図４は、ゲスト変換データ構造及びシャドウ変換データ構造を同期化させる処理４００の一実施例のフロー図である。処理は、ハードウェア（例えば、専用ロジック、プログラマブル・ロジック、マイクロコード等）、ソフトウェア（汎用コンピュータ・システム上又は専用マシン上で実行するものなど）、又はそれらの組合せを含み得る処理ロジックによって行うことができる。一実施例では、処理は、図１のアドレス変換モジュール１２６によって行われる。
【００５８】
図４を参照すれば、処理４００は、ＴＬＢの操作に関するイベントにより、ＶＭから移行した制御を処理ロジックが受けることで始まる（処理ロジック４０２）。前述のイベントの例には、現在のアドレス空間を変更する旨の要求（例えば、ＣＲ３ロード）、ＴＬＢにおける特定された仮想アドレスの不整合の変換を調節する旨の要求（例えば、ＩＮＶＬＰＧ）、ページ・フォールト等を含み得る。
【００５９】
処理ブロック４０４では、処理ロジックは、ＴＬＢの操作に関するイベントをＶＭによって扱うべきであるか否かを判定する。肯定の場合（例えば、イベントが、ゲスト変換データ構造における問題マッピングによって生じるページ・フォールトである場合）、制御は、イベントを扱うためにＶＭに戻される（処理ブロック４０６）。否定の場合、処理ロジックは、イベントが、特定の問題アドレスに関連付けられるか否かを判定する（処理ブロック４０８）。
【００６０】
イベントが、ＶＭによって扱われる必要がない場合、特定の問題アドレスに関連付けることができる。前述のイベントの例は、オペランドとして問題アドレスを利用するＩＮＶＬＰＧ命令によって生じるイベント（例えば、特定のマッピングに関して、２つの変換データ構造間の不整合によって生じるページ・フォールト、ゲスト変換データ構造においてＡ／Ｄビットを視覚化する必要性によって生じるページ・フォールト等）等を含み得る。イベントが、特定の問題アドレスと関連付けられた場合、処理ロジックは、特定されたアドレスのシャドウ変換データ構造において訂正を行って（例えば、特定されたアドレスの旧いマッピングを除去するか、又は特定されたアドレスの新たなマッピングを加えて）ゲスト変換データ構造に一致させる（処理ブロック４１０）。特定されたアドレスの２つの変換データ構造のエントリを同期化させる処理の一実施例は、図７に関して以下に更に詳細に説明する。
【００６１】
イベントが、何れかの特定のアドレスに関連付けられていない場合（例えば、イベントが、ＩＡ３２におけるＴＬＢエントリ全てを消去する、アドレス空間を変更する旨のＶＭの要求によって生じた場合）、処理ロジックは、ゲスト変換データ構造のどのエントリが修正されたかを判定する（処理ブロック４１２）。シャドウ変換データ構造のエントリに関連付けられた属性及びシャドウ変換データ構造から抽出されたメタデータを使用して判定が行われる（処理ブロック４１２）。メタデータは、シャドウ変換データ構造の種々のレベルのアクティブ・リスト及びベクトルを含む。シャドウ変換データ構造の特定のレベルのベクトルは、ゲスト変換データ構造のこのレベルにおけるページとして使用されるフレームを識別する。アクティブ・リストは、アクティブ・エントリ・リスト及び１つ又は複数のアクティブ・ディレクトリ・リストを含む。アクティブ・エントリ・リストは、ゲスト変換データ構造の形成においてゲストによって使用されるページをマッピングするマッピングを含む。アクティブ・ディレクトリ・リストは、シャドウイングされたページング構造に対応するゲスト・ページをそれによってアクセスすることが可能な低位構造を参照する高位マッピング構造を識別する。上述の通り、２レベルの階層のページング・モードでは、メタデータは一実施例では、ベクトルＰＴＶ及びＰＤＶと、アクティブ・エントリ・リスト（ＰＴＥリスト）と、アクティブ・ディレクトリ・リスト（ＰＤＥリスト）を含む。ＥＭ６４Ｔページング・モードでは、メタデータは、一実施例では、ＰＴＶ、ＰＤＶ、ＰＤＰＶ及びＰＭＬ４Ｖベクトルと、アクティブ・エントリ・リスト（ＰＴＥリスト）と、アクティブ・ディレクトリ・リスト（アクティブＰＤＥリスト、アクティブＰＤＰＥリスト、及びアクティブＰＭＬ４Ｅリスト）とを含む。
【００６２】
メタデータを使用して、ゲスト変換データ構造の最近修正されたエントリを識別する処理の一実施例は、図６に関して以下に更に詳細に説明する。
【００６３】
処理ブロック４１４では、処理ロジックは、ゲスト変換データ構造の修正されたエントリと、シャドウ変換データ構造における対応するエントリを同期化させる。よって、処理ロジックは、シャドウ変換データ構造のコンテンツ全体を再度埋めるのでなく、修正されたエントリを同期化するのみでよい。
【００６４】
一実施例では、最後に同期化されたように、一部のゲストＰＤ及び／又はＰＴコンテンツのメンテナンスを行うために、追加の記憶装置が使用される。これは、更なる再配置又は許可情報を算出又はルックアップすることなく、修正を行うことができた所をＶＭＭが求めることを可能にする。
【００６５】
ゲスト・ページ・テーブルへの特定の修正は、シャドウ・ページ・テーブルへの修正を必要としない。例えば、ゲストＰＴが、その後修正される現在でないマッピングを含む場合、対応するシャドウＰＴには変更は必要でない。
【００６６】
図５乃至図１４は、本発明の別々の実施例による、２レベルの階層ページング・モードを使用して仮想マシン環境におけるアドレス変換をサポートするよう行われる種々の処理を示す。前述の処理は、ハードウェア（例えば、専用ロジック、プログラマブル・ロジック、マイクロコード等）、ソフトウェア（汎用コンピュータ・システム上又は専用マシン上で実行するものなど）、又はそれらの組合せを含み得る処理ロジックによって行うことができる。一実施例では、前述の処理はそれぞれ、図１のアドレス変換モジュール１２６によって行われる。
【００６７】
図５は、シャドウＰＴ階層などのシャドウ変換データ構造のメタデータのメンテナンスを行う処理５００の一実施例を示すフロー図である。
【００６８】
図５を参照すれば、処理５００は、ゲストＰＴ階層からＰＤページ又はＰＴページそれぞれのシャドウ・ページを作成する処理ロジックで始まる（処理ブロック５０２）。
【００６９】
処理ブロック５０４では、処理ロジックは、ゲストＰＴ階層においてＰＤ又はＰＴとして使用されるページ・フレームを追跡する。一実施例では、処理ロジックは、対応するＰＦＮが、ゲストＰＴ階層におけるＰＤである場合、ＰＤＶにおけるエントリを設定する。同様に、処理ロジックは、対応するＰＦＮが、ゲストＰＴ階層におけるＰＴである場合、ＰＴＶにおけるエントリを設定する。
【００７０】
処理ブロック５０６では、処理ロジックは、（潜在的にはＰＤ又はＰＴであり得るページを識別するために）ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）技術を利用したページへのマッピングを追跡する。一実施例では、処理ロジックは、反転ページ・テーブル（ＩＰＴ）及び反転ページ・ディレクトリ（ＩＰＤ）を使用した、ＤＲＡＭベースのページへのマッピングを追跡する。ＩＰＴはデータ・ページ・フレームのＰＦＮによって索引化され、各エントリは、データ・ページ・フレームをマッピングするＰＴＥのアドレスのリストを含む。ＩＰＤは、ページ・テーブルのＰＦＮによって索引化され、各エントリは、ＰＦＮをページ・テーブルとして参照するＰＤＥのアドレスのリストを含む。
【００７１】
一実施例では、処理ブロック５０８で、処理ロジックは、ゲストＰＴ階層において４ＭＢページを識別し、４ＭＢページそれぞれのシャドウＰＴ階層においてページ・テーブルを作成して、大きなページ・マッピングを避け、それにより、将来の同期化時間を削減する。さもなければ、４ＭＢページの更新により、４ＭＢ内のＰＤ及びＰＴページ全ての同期化をもたらす。一実施例では、反転拡張テーブル（ＩＥＴ）を使用して、ゲストＰＴ階層におけるどのＰＤＥが４ＭＢページを指し示しているかを追跡する。ＩＥＴは、ＰＦＮ及び属性ビットによって索引化され、各エントリは、分解した４ＭＢページを指し示すＰＤＥを示す。
【００７２】
本発明の一実施例では、ＩＰＤは、必要なアドレス変換工程を最小にするよう、シャドウＰＦＮのアドレスによって索引化することができる。
【００７３】
ＩＡ３２では、メモリ・タイプ情報（例えば、キャッシュ可能性情報）は、ページをマッピングするＰＤＥ／ＰＴＥ内のＰＡＴビットで記憶することが可能である。このタイプの情報は、ページテーブル・ポインタであるＰＤＥにおいて捕捉されない。よって、２つの４ＭＢページが、別々のＰＡＴ属性を備えた同じ領域をマッピングする場合、正しいＰＡＴ属性を伝えるために別個のページ・テーブルが必要になる。属性の組毎に別個の拡張テーブルを使用することにより、この課題が解決される。
【００７４】
処理ブロック５１０では、処理ロジックは、ゲストＰＴ階層においてＰＤ又はＰＴとして使用されるページをマッピングするシャドウＰＴ階層においてＰＴＥを識別し、アクティブＰＴＥリストを作成する。
【００７５】
処理ブロック５１２では、処理ロジックは、アクティブＰＴＥリストにおいて識別されたＰＴＥを備えたＰＴを指し示すシャドウＰＴ階層におけるＰＤＥを識別し、アクティブＰＤＥリストを作成する。
【００７６】
その後、処理ブロック５１４で、ゲストＯＳがゲストＰＴ階層の構造を修正した場合（例えば、ＰＤ又はＰＴを追加又は除去した場合）、処理ロジックは上記アクティブＰＴＥ及びＰＤＥリストを相応に変更する。
【００７７】
図６は、アドレス空間の変更を容易にする処理６００の一実施例のフロー図である。ＩＡ３２では、同じＣＲ３値は、旧いＴＬＢマッピングの消去を強いるよう再ロードすることもできる。ＣＲ３の変更又はＣＲ３の再ロードのために同様な処理工程が行われる。
【００７８】
図６を参照すれば、処理６００は、（例えば、ＣＲロード要求を出すことにより、）別のゲストＰＴ階層をイネーブルする旨のＶＭの要求により、ＶＭエグジットが生じたことを処理ロジックが判定することで始まる（処理ブロック６０２）。
【００７９】
これに応じて、処理ロジックは、メタデータのアクティブＰＤＥリストにおいて識別された、現在使用中のシャドウＰＴ階層に対応するアクティブＰＤＥ全てを、前述のＰＤＥのどれがアクセスされているか（アクセス値にアクセス属性の組をセットさせているか）を求めるために走査し（処理ブロック６０４）、次いで、アクセスされたＰＤＥのアクセス属性を初期化する（処理ブロック６０６）。ＩＡ３２では、非リーフ・ページング・テーブルはダーティ・ビットをサポートしない。アクセスされたビットがクリアな場合、４ＭＢ領域内のページは読み取られていないか、又は書き込まれていないので、ゲスト・ページ・テーブル又はページ・ディレクトリは修正することが可能でない。しかし、アクセスされたビットは、読み取り及び書き込みを区別しないので、アクセスされた４ＭＢ領域は、何も修正されていない可能性があっても更に処理すべきである。非リーフ・ページ・テーブルのダーティ・ビットをサポートするアーキテクチャでは、ダーティ・ビットが代わりに検査され、書き込まれた領域のみが更なる処理を必要とする。
【００８０】
次に、アクセスされたＰＤＥ毎に、処理ロジックは、メタデータのアクティブＰＴＥリストにおけるアクセスされたアクティブＰＤＥに対応するシャドウＰＴＥ全てを、前述のＰＴＥのどれが、更新されたページのマッピングを含むか（更新値に更新属性の組をセットさせているか）を求めるために走査する（処理ブロック６０８）。
【００８１】
更に、更新されたページ毎に、処理ロジックは、ゲストＰＴ階層におけるＰＤ／ＰＴエントリを、シャドウＰＴ階層における対応するエントリと比較し（処理ブロック６１０）、（例えば、ゲストＰＴ階層にないＰＴＥ／ＰＤＥをシャドウＰＴ階層から除外すること、ゲストＰＴ階層に最近追加された新たなＰＴＥ／ＰＤＥをシャドウＰＴ階層に追加すること等により、）ゲストＰＴ階層の修正されたエントリに一致させるよう、シャドウＰＴ階層の対応するエントリを変更する（処理ブロック６１２）。ＰＤＥを追加することは、更なるシャドウＰＴの割り当て及び初期化を必要とし得る。これは、同様に、アドレス変換モジュール１２６によってメンテナンスが行われる種々のメタデータ構造への更新を必要とし得る。
【００８２】
処理ブロック６１４では、処理ロジックは、更新値にセットされた更新属性を初期化する。更新されたマッピングは、ゲストＯＳによって修正されたページを識別する。
【００８３】
処理ブロック６１６では、処理ロジックは、修正されたゲスト・ページに基づいてシャドウ・マッピングを同期化させ、上記修正により、必要に応じて、メタデータを更新する。
【００８４】
処理ロジック６１８では、処理ロジックは、ＶＭＭによってメンテナンスが行われるワーキング・セットが、ＶＭによって要求される新たなゲストＰＤに対応するシャドウＰＤを含むか否かを判定する。肯定の場合、処理ロジックは、このシャドウＰＴ階層のベース・アドレスをロードする旨をプロセッサに要求する（処理ブロック６２０）。否定の場合、処理ロジックは、要求されたゲストＰＴ階層に対応する新たなシャドウＰＴ階層を割り当て（処理ブロック６２２）、新たなシャドウＰＴ階層のＰＤをＰＤＶに加え（処理ブロック６２４）、有効なＰＤＥそれぞれを新たなシャドウＰＴ階層のＰＤに加え（処理ブロック６２６）、ＰＤのカバレッジに対してこのＰＤをマッピングするＰＴＥを監視するようアクティブＰＤＥ及びＰＴＥのリストを構成し（処理ブロック６２８）、次いで、このシャドウＰＴ階層のベース・アドレスをロードするようプロセッサに要求する（処理ブロック６２０）。ＰＴＥを監視する処理の一実施例は、図１３に関して以下に更に詳細に説明する。
【００８５】
図７は、特定されたアドレスの２つの変換データ構造のエントリを同期化させる処理７００の一実施例のフロー図である。処理７００は、例えば、ＶＭによって出されるＩＮＶＬＰＧ命令の結果として、又は、誘起されたページ・フォールトの結果として行うことができる。
【００８６】
図７を参照すれば、処理７００は、特定されたアドレスのシャドウＰＴ階層におけるマッピングが旧いか（すなわち、ゲスト・ページ・テーブルの現在のコンテンツに対応しない有効なマッピングが存在しているか）否かを判定する処理ロジックで始まる（処理ブロック７０２）。否定の場合、処理ロジックは処理ブロック７１２に進む。肯定の場合、処理ロジックは、旧いエントリがＰＤページ又はＰＴページをマッピングしたかを判定する（処理ブロック７０４）。旧いエントリが、ＰＤページ又はＰＴページをマッピングしなかった場合、処理ロジックは旧いエントリを除去し（処理ブロック７１０）、処理ブロック７１２に進む。
【００８７】
旧いエントリが、ＰＤページ又はＰＴページをマッピングした場合、処理ロジックは更に、マッピングされたページが更新されているか否かを判定する（処理ブロック７０６）。否定の場合、処理ロジックは処理ブロック７１０に進む。肯定の場合、処理ロジックは、修正されたＰＤシャドウ又はＰＴシャドウを更新するか、同期化させるか、又は除去し（処理ブロック７０８）、処理ブロック７１０に進む。一実施例では、ページが、将来の同期化のためにマーキングされる。
【００８８】
処理ブロック７１２では、処理ロジックは、ゲストＰＴ階層が、特定されたアドレスの新たなマッピングを含むか否かを判定する。否定の場合、処理７００は終了する。肯定の場合、処理ロジックは対応するＰＴＥ又はＰＤＥとして、新たなマッピングを加え、必要な場合、シャドウ・ページを作成し、上記追加により、メタデータを更新する（処理ブロック７１４）。
【００８９】
図８は、ＶＭＭによってメンテナンスが行われるシャドウＰＴ階層のワーキング・セットからシャドウＰＴ階層を除外する処理８００の一実施例のフロー図である。
【００９０】
シャドウＰＴ階層は、ＶＭによる対応する処理の動作解除の検出により、ワーキング・セットから除去することができる。動作解除は、適切なＯＳについて規定される発見的方法を使用して、又は、現在のアドレス空間に対するゲストＶＭの挙動によって与えられるヒントに基づいた検査の組を使用することによって検出することができる。ＶＭが、ＯＳ又はドライバが動作解除をＶＭＭにそれを介して通知するそのインタフェースをサポートする場合、発見的方法を避けることができる。シャドウＰＴ階層は、制約（例えば、シャドウ構造に使用されるメモリの量が目標閾値を超えるという理由）によって除去することもできる。
【００９１】
図８を参照すれば、処理ロジックは、シャドウＰＴ階層におけるＰＤから、有効なＰＤＥそれぞれを除去することで始まる（処理ブロック８０２）。
【００９２】
処理ブロック８０４では、処理ロジックは、ＰＤＶにおける対応するエントリをクリアする。
【００９３】
処理ブロック８０６では、処理ロジックは、ＰＤページを割り当て解除し、ＰＤ変換テーブル（ＰＤＴＴ）から変換を除去する。ＰＤＴＴは、ページのアドレス及びタイプ（例えば、ＰＤ又はＰＴ）を追跡するために使用される。ＰＤＴＴはゲストＰＦＮによって索引化され、各エントリは、物理ＰＦＮ及びメタデータを含む。
【００９４】
処理ブロック８０８では、処理ロジックは、ＰＤをマッピングするＰＴＥからの監視の除去を行う。ＰＴＥからの監視の除去を行うための処理の一実施例は、図１４に関して以下に更に詳細に説明する。
【００９５】
図９は、シャドウＰＴ階層のＰＤにエントリを加える処理９００の一実施例のフロー図である。例証の目的で、ページ・テーブルをマッピングする現在のエントリを考察する。
【００９６】
図９を参照すれば、処理ロジックは、ＰＤＥのエントリをＩＰＤに加えることで始まる（処理ブロック９０２）。
【００９７】
処理ブロック９０４で、処理ロジックは、このＰＤＥにマッピングされるＰＴがＰＴＶにセットされているかを判定する。肯定の場合、適切なシャドウＰＴが、ＰＴＴＴにおいてルックアップされ（処理ブロック９１６）、新たなシャドウＰＤＥが作成され（処理ブロック９１４）、処理９００が終了する。否定の場合、処理ロジックは、ＰＴＶにおいて、対応するベクトルをセットし（処理ブロック９０６）、シャドウ・ページを割り当て、変換を初期化し（処理ブロック９０８）、新たなシャドウ・ページ・テーブルを埋め（処理ブロック９１０）、現在のゲストＰＤＥによってページ・テーブルとして使用されるゲスト・ページを監視するということを反映するようアクティブＰＴＥ／ＰＤＥリスト及びメタデータを更新し（処理ブロック９１２）、アクティブＰＴＥリスト要素をシャドウ・ページ・テーブルが含む場合に、アクティブＰＤＥリストに加えて、新たなＰＤＥを加える（処理ブロック９１４）。ＰＴＥを監視する処理の一実施例は、図１３に関し、以下に更に詳細に説明する。
【００９８】
図１０は、シャドウＰＴ階層のＰＤからエントリを除去する処理１０００の一実施例のフロー図である。
【００９９】
図１０を参照すれば、処理ロジックは、このＰＤＥのエントリをＩＰＤ  ＰＤＥリストから除去することで始まる（処理ブロック１００２）。ＰＤＥがアクティブＰＤＥリストにある場合、アクティブＰＤＥリストを更新しければならない。
【０１００】
処理ブロック１００４では、処理ロジックは、ＰＤＥが、対応するＰＴをマッピングするための最後のエントリであったか否かを判定する。否定の場合、処理１０００は終了する。肯定の場合、処理ロジックは、ＰＴＶにおけるＰＴのエントリをクリアし（処理ブロック１００６）、有効なＰＴＥそれぞれを除去し（処理ブロック１００８）、ＰＴのカバレッジに対してこのＰＴをマッピングするアクティブＰＴＥ／ＰＤＥリストを更新し（処理ブロック１０１０）、シャドウ・ページ変換を除去し、ＰＴシャドウ・ページを記憶するために使用されるメモリを解放する（処理ブロック１０１２）。
【０１０１】
図１１は、シャドウＰＴ階層のＰＴにエントリを追加する処理１１００の一実施例のフロー図である。
【０１０２】
図１１を参照すれば、処理ロジックは、このＰＴＥのエントリをＩＰＴに加えることで始まる（処理ブロック１１０２）。
【０１０３】
処理ブロック１１０６では、処理ロジックはシャドウ・マッピングを作成し、処理ブロック１１０８に進む。
【０１０４】
処理ブロック１１０８では、処理ロジックは、ＰＤＶ又はＰＴＶにおける対応するエントリがセットされているか否かを判定する。否定の場合、処理１１００は終了する。肯定の場合、処理ロジックは、このエントリをアクティブＰＴＥリストに加え、ＰＤ及び／又はＰＴページをマッピングしたかを示す関連付けられたメタデータを更新する（処理ブロック１１１０）。直近で作成されたアクティブＰＴＥエントリが、このページ・テーブルについて最初である場合、ＩＰＤを参照しなければならず、このページ・テーブル・ページにマッピングする各ＰＤＥがアクティブＰＤＥリストに加えられる。
【０１０５】
図１２は、シャドウＰＴ階層のＰＴからエントリを除去する処理１２００の一実施例のフロー図である。
【０１０６】
図１２を参照すれば、処理ロジックは、このＰＴＥが、ＰＤＶ又はＰＴＶにセットされたページをマッピングするか否かを判定することで始まる（処理ブロック１２０２）。否定の場合、処理ロジックは処理ブロック１２０６に進む。肯定の場合、処理ロジックはＰＴＥをアクティブＰＴＥリストから除去する。これが、ＰＴにおける最後のアクティブＰＴＥリスト要素であった場合、このＰＴを参照するＰＤＥがアクティブＰＤＥリストから除去され（処理ブロック１２０４）、処理ブロック１２０６に進む。
【０１０７】
処理ブロック１２０６では、処理ロジックは、対応するエントリをＩＰＴから除去する。
【０１０８】
図１３は、シャドウＰＴ階層のＰＴＥを監視する処理１３００の一実施例のフロー図である。図１３に示す工程は、データ・ページとしてマッピングされているページがページ・ディレクトリ又はページ・テーブル・ページとして使用されているということをモニタが認識する場合に必要であり得る処理を表す。この処理は、したがって、ＰＴＥにマッピングされたページのステータス変更によってトリガされる。
【０１０９】
図１３を参照すれば、処理ロジックは、ＰＴＥがアクティブＰＴＥリストにおいて識別されているか否かを判定することで始まる（処理ブロック１３０２）。肯定の場合、処理ロジックは、先行して欠落しているカバレッジを加える（処理ブロック１３０４）。前述のフローは、マッピングされたページのステータス変更によってトリガされる。このＰＴＥは既にアクティブＰＴＥリストにあったので、このＰＴＥはＰＴ又はＰＤとして先行して使用されている場合に該当するはずであり、現在、他のキャパシティにおいても使用されている。前述の情報は、エントリとともに、又は関連付けられたメタデータにおいて明示的に記憶され得る。ＰＴＥがアクティブＰＴＥリストにない場合、処理ロジックはＰＴＥをアクティブＰＴＥリストに加え、メタデータを相応に更新する（処理ブロック１３０６）。
【０１１０】
次に、処理ブロック１３０８で、処理ロジックは、ＰＴＥが、このＰＴの最初のアクティブＰＴＥリスト・エントリであるか否かを判定する。否定の場合、処理１３００は終了する。肯定の場合、処理ロジックは、（ＩＰＤを介して求められたように）このＰＴをマッピングするエントリをアクティブＰＤＥリストに加える（処理ブロック１３１０）。
【０１１１】
図１４は、シャドウＰＴ階層のＰＴＥによって与えられる監視カバレッジを削減するための処理１４００の一実施例のフロー図である。処理がワーキング・セットから除外されるか、又はページ・テーブルを参照する最後のＰＤＥが除去されるとこの処理が引き起こされ、先行して監視されたページ・ディレクトリ又はページ・テーブル・ページのステータスの変更をもたらし得る。
【０１１２】
図１４を参照すれば、処理ロジックは、このＰＴＥが、ページ・テーブル及びページ・ディレクトリ・ページであったページを監視したか否かを判定することで始まる（処理ブロック１４０２）。肯定の場合、処理ロジックは、カバレッジ・レベルを削減し、これは、ＰＴＥが現在、ページをＰＴとして、又はＰＤとして監視するが、両方としては監視しない旨を示す（処理ブロック１４０４）。否定の場合、処理ロジックはＰＴＥをアクティブＰＴＥリストから除去する（処理ブロック１４０６）。ＰＴＥが、単一のキャパシティにおけるその使用について追跡されたページの要素であった場合、ページが監視をもう必要としないはずである。
【０１１３】
次に、ＰＴにおける最後のアクティブＰＴＥリスト要素が除去されている場合（処理ブロック１４０８）、処理ロジックは、（ＩＰＤを介して求められるように）アクティブＰＤＥリストからこのページ・テーブルをマッピングした対応するエントリを除去する（処理ブロック１４１０）。
【０１１４】
上述したように、ベア・プラットフォーム・ハードウェア１１６は、プロセッサ１１８及び１１９を含む複数のプロセッサを備える。図１５は、マルチプロセッサ・システムにおいてシャドウＰＴ階層のメンテナンスを行う処理１５００の一実施例のフロー図である。処理１５００の実施例は、プロセッサのうちの１つのゲストＰＴ階層及びシャドウＰＴ階層を同期化させるようシステム内のプロセッサ全てに割り込む代わりに使用することができる。
【０１１５】
処理ブロック１５１０では、一プロセッサ（例えば、プロセッサ１１８）のシャドウＰＴ階層のワーキング・セットが作成される。プロセッサ１１８のシャドウＰＴ階層は、ＴＬＢ１２２を使用して、仮想・物理アドレス変換を記憶する。処理ブロック１５１２では、別のプロセッサ（例えば、プロセッサ１１８）のシャドウＰＴ階層のワーキング・セットが作成される。プロセッサ１１９のシャドウＰＴ階層は、ＴＬＢ１２３を使用して、仮想・物理アドレス変換を記憶する。プロセッサ１１８のワーキング・セットは、別々のＶＭを別々のプロセッサ上で、又は何れかの他の理由で実行することができるので、プロセッサ１１９のワーキング・セットと異なり得る。しかし、何れかのページ・フレーム、ＰＴ及びＰＦを、２つ以上のプロセッサのワーキング・セットに含めることができる。したがって、本発明のこの実施例により、別のプロセッサに割り込むことなく、一プロセッサ上で実行するＶＭのゲストＰＴ階層及びシャドウＰＴ階層を同期化させることができる。更に、何れかの数の更なるプロセッサのワーキング・セットを、本発明の範囲内で作成することができる。
【０１１６】
この実施例では、シャドウＰＴ階層においてメンテナンスが行われる属性は、ＰＴエントリ及びＰＤエントリそれぞれの追加フィールド又は他の記憶位置（「オーナ・フィールド」）を含み得る。オーナ・フィールドは、どのプロセッサが各エントリのオーナであるかを示すための値を記憶するために使用することができる。
【０１１７】
処理ブロック１５１４では、プロセッサ１１８のワーキング・セットは、上述のように（例えば、新たなシャドウＰＴ階層それぞれからメタデータを抽出し、メタデータをＶＴＬＢデータ記憶装置１２４に記憶し、シャドウＰＴ階層が修正されるとメタデータを更新することによって）メンテナンスが行われる。メタデータは、ＰＴベクトル（ＰＴＶ）、ＰＤベクトル（ＰＤＶ）、アクティブＰＴＥリスト、及びアクティブＰＤＥリストを含み、必要に応じて、何れかの他の情報を含み得る。処理ブロック１５１６では、プロセッサ１１９のワーキング・セットは、上述のように（例えば、新たなシャドウＰＴ階層それぞれからメタデータを抽出し、メタデータをＶＴＬＢデータ記憶装置１２４に記憶し、シャドウＰＴ階層が修正されるとメタデータを更新することによって）メンテナンスが行われる。メタデータは、ＰＴベクトル（ＰＴＶ）、ＰＤベクトル（ＰＤＶ）、アクティブＰＴＥリスト、及びアクティブＰＤＥリストを含み、必要に応じて、何れかの他の情報を含み得る。ＶＴＬＢデータ記憶装置１２４は単一のブロックとして図１に示しているが、何れかの数のプロセッサのワーキング・セットのメタデータを、本発明の範囲内で、何れかの数の別個のデータ構造、及び／又はメモリの領域に記憶することができる。例えば、プロセッサ１１８のワーキング・セットのメタデータ及びプロセッサ１１９のワーキング・セットのメタデータは、別個の２つのデータ構造において記憶することができる。更に、何れかの数の更なるプロセッサのワーキング・セットについて、本発明の範囲内でメンテナンスを行うことができる。
【０１１８】
処理ブロック１５２０では、プロセッサ１１８上で実行するゲスト・ソフトウェアは、そのゲストＰＴ階層におけるエントリに書込もうとし、ページ・フォールトが生じる。ページ・フォールトに応じて、ＶＭイグジットが、ゲスト・ソフトウェアからＶＭＭ１１２にプロセッサ１１８の制御を移行するために、処理ブロック１５２２においてプロセッサ１１８上で生じる。
【０１１９】
処理ブロック１５２４では、プロセッサ１１８上で実行するＶＭＭ１１２により、プラットフォーム・ハードウェア１１６におけるプロセッサ１１９及び何れかの他のプロセッサへの割り込みが生じる。処理ブロック１５２６では、プロセッサ１１８上で実行するＶＭＭ１１２は、何れか他のプロセッサ上で実行するソフトウェアがＶＴＬＢデータ記憶装置１２４に書き込むことを阻止するためにメモリ・ロックを取得する。
【０１２０】
処理ブロック１５３０では、ＶＭＭ１１２は、処理ブロック１５２０からのゲストＰＴ階層におけるエントリに対応するプロセッサ１１８のアクティブ・リストにおけるエントリを作成し、処理ブロック１５３２では、プロセッサ１１８がエントリのオーナである旨を示すためにオーナ・フィールドを設定する。処理ブロック１５３４では、ＶＭ１１２は、処理ブロック１５２０からの、ゲストＰＴ階層におけるエントリに対応するプロセッサ１１９のアクティブ・リストにおいてエントリを作成し、処理ブロック１５３６では、プロセッサ１１８がエントリのオーナである旨を示すためにオーナ・フィールドをセットする。何れかの数の更なるプロセッサのアクティブ・リストにおける対応するエントリもそれぞれ、プロセッサ１１８がエントリのオーナである旨を示すためにオーナ・フィールドをセットして作成することができる。処理ブロック１５３８では、ＶＭＭ１１２は、処理ブロック１５２６で獲得されたメモリ・ロックを解放する。
【０１２１】
処理ブロック１５４０では、ＶＭＭ１１２は、処理ブロック１５２０からのゲストＰＴ階層へのエントリに対応するプロセッサ１１８のシャドウ・エントリにダーティ・ビットを、ゲスト・ソフトウェアがそのＰＴ階層におけるそのエントリに書き込もうとした旨を示すためにセットする。処理ブロック１５４２では、ＶＭＭ１１２からゲスト・ソフトウェアにプロセッサ１１８の制御を移行するためのＶＭエントリが行われる。処理ブロック１５４４では、ゲスト・ソフトウェアは、そのＰＴ階層におけるエントリへの書込みを完了する。
【０１２２】
処理ブロック１５５０では、プロセッサ１１９上の現在のゲスト状態とプロセッサ１１９のワーキング・セットの同期化のトリガ・イベントであるイベントが生じる。処理ブロック１５５２では、プロセッサ１１９からＶＭＭ１１２に制御を移行して、トリガ・イベントに応じてＶＭのイグジットが行われる。
【０１２３】
処理ブロック１５５４では、例えば、図１６に示す実施例により、プロセッサ１１９のワーキング・セット、及びプロセッサ１１９上の現在のゲスト状態の同期化が行われる。本発明の実施例により、プロセッサ１１８又は何れかの他のプロセッサに割り込むことなく、この同期化を行うことができる。同期化後、処理ブロック１５５６では、ＶＭＭ１１２からゲスト・ソフトウェアにプロセッサ１１９の制御を移行するためのＶＭエントリが行われる。処理ブロック１５５６において制御が移行される先のゲスト・ソフトウェアは、何れかのゲスト・ソフトウェアであってよく、必ずしも、処理ブロック１５２０においてプロセッサ１１８上で実行するゲスト・ソフトウェアでなくてよい。
【０１２４】
処理ブロック１５６０では、処理ブロック１５１８においてプロセッサ１１８上で実行するものと同じゲスト・ソフトウェアは、処理ブロック１５１８と同様にそのゲストＰＴ階層における同じエントリに書き込む。処理ブロック１５６０が処理ブロック１５４０後に行われる場合、処理ブロック１５６０の結果、ページ・フォールトは生じない。プロセッサ１１８の対応するシャドウ・エントリのダーティ・ビットは、処理ブロック１５４０において設定されているからである。
【０１２５】
処理ブロック１５７０では、プロセッサ１１９上の現在のゲスト状態及びプロセッサ１１９のワーキング・セットの同期化のトリガ・イベントであるイベントが生じる。処理ブロック１５７２では、プロセッサ１１９からＶＭＭ１１２に制御を移行して、トリガ・イベントに応じてＶＭイグジットが生じる。
【０１２６】
処理ブロック１５７４では、プロセッサ１１９のワーキング・セット及びプロセッサ１１９上の現在のゲスト状態の同期化が、例えば、図１６に示す実施例に応じて行われる。本発明の実施例により、プロセッサ１１８又は何れかの他のプロセッサに割り込むことなしで、この同期化を行うことができる。同期化後、処理ブロック１５７６では、ＶＭＭ１１２からゲスト・ソフトウェアにプロセッサ１１９の制御を移行するためのＶＭエントリが行われる。処理ブロック１５７６において制御が移行される先のゲスト・ソフトウェアは、何れかのゲスト・ソフトウェアであってよく、必ずしも、処理ブロック１５２８においてプロセッサ１１８上で実行するゲスト・ソフトウェア又は処理ブロック１５５６においてプロセッサ１１９の制御が移行される先のゲスト・ソフトウェアでなくてよい。
【０１２７】
別のプロセッサ上のダーティ・エントリへの書込み（例えば、プロセッサ１１８上の処理ブロック１５６０）前に、同期化がプロセッサ上で行われ得る（例えば、処理ブロック１５５４におけるプロセッサ１１９の同期化）ものであっても、第１のプロセッサの後の同期化（例えば、処理ブロック１５７４におけるプロセッサ１１９の同期化）は、ダーティ・エントリへの書込みを、第１の同期化が、別のプロセッサによって保有されたシャドウ・エントリを行い損なうことはない。前述の他のプロセッサの対応するシャドウ・エントリがダーティであった場合に除去しなかったであろうという理由からである。
【０１２８】
処理ブロック１５８０では、プロセッサ１１８上の現在のゲスト状態及びプロセッサ１１８のワーキング・セットの同期化のトリガ・イベントであるイベントが生じる。処理ブロック１５８２では、プロセッサ１１８からＶＭＭ１１２に制御を移行して、トリガ・イベントに応じてＶＭイグジットが行われる。
【０１２９】
処理ブロック１５８４では、例えば、図１６に示す実施例により、プロセッサ１１８のワーキング・セット、及びプロセッサ１１８上の現在のゲスト状態の同期化が行われる。本発明の実施例により、プロセッサ１１９又は何れかの他のプロセッサに割り込むことなく、この同期化を行うことができる。同期化後、処理ブロック１５８６では、ＶＭＭ１１２からゲスト・ソフトウェアにプロセッサ１１８の制御を移行するためのＶＭエントリが行われる。処理ブロック１５８６において制御が移行されるゲスト・ソフトウェアは、何れのゲスト・ソフトウェアであってもよく、必ずしも、処理ブロック１５２０においてプロセッサ１１８上で実行するゲスト・ソフトウェア又は処理ブロック１１５６若しくは処理ブロック１５７６においてプロセッサ１１９の制御が移行される先のゲスト・ソフトウェアでなくてよい。
【０１３０】
処理ブロック１５８４におけるプロセッサ１１８の同期化中のダーティ・ビットのクリアリングが、プロセッサ１１９の同期化（例えば、処理ブロック１５５４）後に行われる場合、プロセッサ１１９はエントリをそのアクティブ・リストに保つ。別のプロセッサによって保有されるダーティ・エントリに対応するからである。しかし、処理ブロック１５８４におけるプロセッサ１１８の同期化中のダーティ・ビットのクリアリングがプロセッサ１１９の同期化（例えば、処理ブロック１５７４）前に行われる場合、プロセッサ１１９は、そのアクティブ・リストからエントリを除去することができる。別のプロセッサによって保有される対応するエントリがダーティでないからである。
【０１３１】
図１６は、マルチプロセッサ・システムにおけるプロセッサの現在のゲスト状態及びプロセッサのワーキング・セットを同期化させる処理１６００の一実施例のフロー図である。
【０１３２】
処理ブロック１６１０では、プロセッサ（「第１の」プロセッサ）のワーキング・セット及び第１のプロセッサ上の現在のゲスト状態の同期化が始まる。本発明の実施例により、プラットフォームにおける何れかの他のプロセッサに割り込むことなく、この同期化を行うことができる。
【０１３３】
処理ブロック１６２０では、処理ブロック１５１８からのエントリに対応する第１のプロセッサのシャドウＰＴ階層におけるエントリが検査される。このシャドウ・エントリにおけるオーナ・フィールドが、第１のプロセッサがエントリのオーナである旨を示す場合、処理ブロック１６３０では、このシャドウ・エントリは第１のプロセッサのアクティブ・リストから除去することができ、処理ブロック１６３２では、ダーティ・ビットをクリアすることができる。しかし、このシャドウ・エントリにおけるオーナ・フィールドが、別のプロセッサがエントリのオーナである旨を示す場合、処理ブロック１６４０では、そのプロセッサのアクティブ・リストに、対応するダーティ・エントリが存在しているかを判定するために、その他のプロセッサのアクティブ・リストが検査される。
【０１３４】
処理ブロック１６４０において、対応するダーティ・エントリが、他方のプロセッサのアクティブ・リストに存在しない場合、処理ブロック１６４２において、シャドウ・エントリを、第１のプロセッサのアクティブ・リストから除去することができる。しかし、処理ブロック１６４０において、対応するダーティ・エントリが、他方のプロセッサのアクティブ・リストに存在する場合、処理ブロック１６４４において、シャドウ・エントリを、第１のプロセッサのアクティブ・リストに保つ。
【０１３５】
処理ブロック１６５０では、第１のプロセッサのワーキング・セット及び第１のプロセッサ上の現在のゲスト状態の同期化が最後まで続く。
【０１３６】
本発明の範囲内で、例証された方法の実施例の何れも、別の順序で行ってもよく、例証されたボックスを割愛して行ってもよく、更なるボックスを追加して行ってもよく、再配列したボックス、割愛したボックス、又は追加ボックスの組合せで行ってもよい。例えば、プロセッサのワーキング・セット及び第１のプロセッサ上の現在のゲスト状態の同期化は、図１６に示すものよりずっと多くのものを含み得る。
【０１３７】
こうして、マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置を説明してきた。上記説明は、例証的であり、限定的でないことを意図している。上記説明を読み、理解すると、他の多くの実施例が当業者に明らかになるであろう。本発明の範囲はよって、前述の特許請求の範囲が与えられる均等物の完全な範囲とともに、特許請求の範囲を参照して定められる。
【符号の説明】
【０１３８】
１１６  ベア・プラットフォーム・ハードウェア
１１８  プロセッサ
１１９  プロセッサ
【図１】
2011023000.tif 000003
【図２】
2011023000.tif 000004
【図３Ａ】
2011023000.tif 000005
【図３Ｂ】
2011023000.tif 000006
【図４】
2011023000.tif 000007
【図５】
2011023000.tif 000008
【図６】
2011023000.tif 000009
【図７】
2011023000.tif 000010
【図８】
2011023000.tif 000011
【図９】
2011023000.tif 000012
【図１０】
2011023000.tif 000013
【図１１】
2011023000.tif 000014
【図１２】
2011023000.tif 000015
【図１３】
2011023000.tif 000016
【図１４】
2011023000.tif 000017
【図１５】
2011023000.tif 000018
【図１６】
2011023000.tif 000019