(57)【要約】一実施形態において、変換−ルックアサイド・バッファ（ＴＬＢ）に関連する特権を与えられたイベントのための仮想マシン（ＶＭ）から遷移されるコントロールの受信、そして、ゲスト変換データ構造のどのエントリがＶＭにより変更されるかを決定することを含む方法。決定は、仮想マシンモニタ（ＶＭＭ）により保持されるシャドウ変換データ構造から抜き出されたメタデータ、そして、シャドウ変換データ構造のエントリに関連する属性に基づいてなされる。方法は、更に、ゲスト変換データ構造の変更されたエントリと共に、ゲスト変換データ構造の変更されたエントリに対応するシャドウ変換データ構造の同期エントリを含む。【選択図】なし
2008529176.tif 000002
【特許請求の範囲】
【請求項１】
一の変換−ルックアサイド・バッファ（ＴＬＢ）に関連する一の特権付イベントのための一のバーチャル・マシン（ＶＭ）から遷移されるコントロールを受信すること、
一のバーチャル・マシン・モニタ（ＶＭＭ）により保持される一のシャドウ変換データ構造と、前記シャドウ変換データ構造内の複数のエントリに関連する複数の属性と、から抽出されたメタデータに基づいて、前記ＶＭにより一のゲスト変換データ構造内のどの複数のエントリが変更されたかを決定することと、
前記ゲスト変換データ構造の前記変更された複数のエントリで、前記ゲスト変換データ構造内の前記変更された複数のエントリに対応する前記シャドウ変換データ構造内の複数のエントリを同期させること、
を備える方法。
【請求項２】
前記ゲスト変換データ構造は、複数のアドレス変換オペレーションのための前記ＶＭにより使用され、
前記シャドウ変換データ構造のコンテンツは、前記ＴＬＢの複数のアドレス変換をキャッシュに入れるために、一のプロセッサにより用いられる
請求項１に記載の方法。
【請求項３】
複数のシャドウ変換データ構造の一のワーキング・セットを保持して、前記ワーキング・セットの各々のシャドウ変換データ構造が前記ＶＭの複数のアクティブ・プロセスのうちの１つに関連付けされていることと、
前記複数のアクティブ・プロセスの１つに関連する一のゲスト変換データ構造が使用可能になるときに、前記複数のアクティブ・プロセスのうちの１つに関連する前記ワーキング・セットから一のシャドウ変換データ構造のコンテンツを再使用すること、
を更に備える請求項１に記載の方法。
【請求項４】
前記特権付イベントは、一の異なるゲスト変換データ構造を使用可能にするための前記ＶＭの一のリクエストと、前記ゲスト変換データ構造の複数のエントリと前記シャドウ変換データ構造の複数のエントリとの間の１つ以上の不整合性により発生される一のページ・フォルトと、
一の変換−ルックアサイド・バッファ（ＴＬＢ）内の１つ以上のアドレス変換を無効にするための前記ＶＭの一のリクエスト、
のいずれか１つである請求項３に記載の方法。
【請求項５】
前記特権付イベントを、一のページ・フォルトと、一のＩＮＶＬＰＧ命令と、一の新規のゲスト変換データ構造を使用可能にするための一のリクエストと、のいずれか１つに決定することと、
前記新規のゲスト変換データ構造に基づいて一の新規のシャドウ変換データ構造を生成することと、
前記新規のシャドウ変換データ構造からメタデータを獲得すること、
を更に備える請求項３に記載の方法。
【請求項６】
前記ＶＭの前記複数のアクティブ・プロセスのうちの１つを停止することを決定することと、
前記ワーキング・セットから、前記停止しているアクティブ・プロセスに関連する一のシャドウ変換データ構造を削除すること、
を更に備える請求項３に記載の方法。
【請求項７】
前記複数のシャドウ変換データ構造のうちの１つが、もはや使用されないことを決定することと、
前記複数のシャドウ変換データ構造の１つを前記ワーキング・セットから削除すること、
を更に備える請求項３に記載の方法。
【請求項８】
前記メタデータは、１組のベクトルと、一のアクティブ・エントリ・リストと、１つ以上のアクティブ・ディレクトリ・リスト、
を有する請求項１に記載の方法。
【請求項９】
前記セットにおける各々のベクトルは、前記ゲスト変換データ構造の一の対応するレベルで複数のページとして用いられる複数のフレームを識別し、
前記アクティブ・エントリ・リストは、一のシャドウ変換データ構造が存在するための前記ゲスト変換データ構造を形成するときに使用した複数のページをマップする複数のマッピングを識別し、
１つ以上のアクティブ・ディレクトリ・リストは、前記シャドウ変換データ構造がアクセスされる下位レベル構造を参照するより高いレベルのマッピングの複数の構造を識別する、
請求項８に記載の方法。
【請求項１０】
前記アクティブ・エントリ・リストは、一のアクティブ・ページ・テーブル（ＰＴ）エントリ・リストであり、
前記アクティブＰＴエントリ（ＰＴＥ）リストは、前記ゲスト変換データ構造から複数のＰＴページと複数のＰＤページとをマップする前記シャドウ変換データ構造内の複数のＰＴＥを識別し、
前記１つ以上のアクティブ・ディレクトリ・リストは、一のアクティブ・ページ・ディレクトリ（ＰＤ）エントリ・リストを有し、前記アクティブＰＤエントリ（ＰＤＥ）リストは、前記アクティブＰＴＥリストから複数の前記ＰＴＥを有する複数のＰＴを示す前記シャドウ変換データ構造内の複数のＰＤＥを識別する、
請求項９に記載の方法。
【請求項１１】
前記アクティブ・エントリ・リストは、一のアクティブ・ページ・テーブル（ＰＴ）エントリ・リストであり、前記アクティブＰＴエントリ（ＰＴＥ）リストは、複数のページ・マップ・レベルが４（ＰＭＬ４）のページと、複数のページ・ディレクトリ・ポインタ（ＰＤＰ）のページと、複数のページ・ディレクトリ（ＰＤ）ページと、複数のＰＴページとのいずれかをマップする複数のマッピングを識別し、
前記１つ以上アクティブ・ディレクトリ・リストは、複数のアクティブＰＴＥリスト・エントリを有して一のページを参照する複数のＰＤＥを含む一のアクティブＰＤエントリ（ＰＤＥ）リストと、一のアクティブＰＤＥリスト・エントリを有する一のＰＤを参照する複数のアクティブＰＤＰＥエントリを含む一のアクティブＰＤＰエントリ（ＰＤＰＥ）リストと、前記アクティブＰＤＰＥリストから複数の構成要素を有する一のＰＤＰをマップする複数のエントリを含む一のアクティブＰＭＬ４Ｅエントリ（ＰＭＬ４Ｅ）リストを有する、
請求項９に記載の方法。
【請求項１２】
前記シャドウ変換データ構造内の複数のエントリに関連する前記複数の属性は、前記シャドウ変換データ構造の複数のＰＤＥに関連する複数のアクセス属性を含み、前記シャドウ変換データ構造の複数のＰＴＥに関連する複数の属性をアップデートする、
請求項１０に記載の方法。
【請求項１３】
前記ゲスト変換データ構造のどの複数のエントリが前記ＶＭにより変更されたかを決定することは、
一のアクセス値にセットされる複数のアクセス属性を有して同期している前記アクティブＰＴ階層に対応する前記アクティブＰＤＥリストから１つ以上のＰＤＥを識別することと、
各々の前記識別された複数のＰＤＥのために、一のアップデート値にセットされる複数のアップデート属性を有する前記アクティブＰＴＥリストから対応する複数のＰＴＥを見つけること、
を有する請求項１２に記載の方法。
【請求項１４】
前記複数のアクセス属性を初期化することと、
前記複数のアップデート属性を初期化すること、
を更に備える請求項１３に記載の方法。
【請求項１５】
複数のアドレス変換オペレーションのための一のゲスト・オペレーティング・システムにより用いられた一のゲストＰＴ階層に基づく一のシャドウ・ページ・テーブル（ＰＴ）階層を生成することと、
前記シャドウＰＴ階層に示される前記ゲストＰＴ階層のどの複数のエントリが変更されたかをその後決定するために前記シャドウＰＴ階層からメタデータを獲得すること、を備え、前記メタデータは、前記ゲストＰＴ階層を形成する前記ゲスト・オペレーティング・システムにより用いられた複数のページをマップする複数のマッピングを識別する一のアクティブ・エントリ・リストと、
前記シャドウＰＴ階層がアクセスされる下位レベルの構造を参照するより高いレベルの複数のマッピング構造を識別する１つ以上のアクティブ・ディレクトリ・リスト、
を有する方法。
【請求項１６】
前記アクティブ・エントリ・リストは、前記シャドウＰＴ階層における複数のＰＴＥを識別し、前記ゲストＰＴ階層から複数のＰＴページと、複数のページ・ディレクトリ（ＰＤ）ページとをマップする、一のアクティブＰＴエントリ（ＰＴＥ）リストであり、
前記１つ以上アクティブ・ディレクトリ・リストは、前記シャドウＰＴ階層の複数のＰＤＥを識別し、前記識別された複数のＰＴＥを有する複数のＰＴを示す一のアクティブＰＤエントリ（ＰＤＥ）リストを含む、
請求項１５に記載の方法。
【請求項１７】
前記アクティブ・エントリ・リストは、前記シャドウＰＴ階層の複数のＰＴＥを識別し、複数のページ・マップ・レベルが４（ＰＭＬ４）のページと、複数のページ・ディレクトリ・ポインタ（ＰＤＰ）ページと、複数のページ・ディレクトリ（ＰＤ）ページと、複数のＰＴページとのいずれかをマップしている一のアクティブＰＴエントリ（ＰＴＥ）リストであり、
前記１つ以上アクティブ・ディレクトリ・リストは、複数のアクティブＰＴＥリスト・エントリを有する一のページを参照する複数のＰＤＥを含む一のアクティブＰＤエントリ（ＰＤＥ）リストと、一のアクティブＰＤＥリスト・エントリを有する一のＰＤを参照する複数のアクティブＰＤＰＥエントリを含む一のアクティブＰＤＰエントリ（ＰＤＰＥ）リストと、前記アクティブＰＤＰＥリストから複数の構成要素を有する一のＰＤＰをマップする複数のエントリを含む一のアクティブＰＭＬ４Ｅエントリ（ＰＭＬ４Ｅ）リストを有する、
請求項１５に記載の方法。
【請求項１８】
前記ゲストＰＴ階層を形成する前記ゲスト・オペレーティング・システムにより用いられた複数のページを追跡することと、
いかなるダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）に支持されたページ・フレームのマッピングを追跡すること、
を更に備える請求項１６に記載の方法。
【請求項１９】
前記ゲストＰＴ階層の１つ以上の大きいサイズのページを識別することと、
前記１つ以上の大きいサイズの各々のページのための前記シャドウＰＴ階層内の一のＰＴテーブルを生成すること、
を更に備える請求項１５に記載の方法。
【請求項２０】
前記ゲストＰＴ階層の一の構造内の一の変更を検出することと、
前記変更を反映するために前記メタデータを変更すること、
を更に備える請求項１５に記載の方法。
【請求項２１】
前記シャドウＰＴ階層のコンテンツは、一の変換−ルックアサイド・バッファ（ＴＬＢ)内の複数のアドレス変換をキャッシュするための一のプロセッサにより用いられる、
請求項１５に記載の方法。
【請求項２２】
複数のアドレス変換オペレーションのための一のバーチャル・マシン（ＶＭ）に用いられる一のゲスト変換データ構造と、
一のバーチャル・マシン・モニタ（ＶＭＭ）により保持され、前記ゲスト変換データ構造から一のフォーマットと構造とを獲得する一のシャドウ変換データ構造と、
前記シャドウ変換データ構造から抽出されたメタデータに基づいて、前記ゲスト変換データ構造内のどの複数のエントリが前記ＶＭにより変更されるかを決定するためと、前記ゲスト変換データ構造内の前記変更された複数のエントリを有し、前記ゲスト変換データ構造内の前記変更された複数のエントリに対応する、前記シャドウ変換データ構造内の複数のエントリを同期させるための、一のアドレス変換モジュールと、
を備える装置。
【請求項２３】
前記アドレス変換モジュールは、更に、複数のシャドウ変換データ構造の一のワーキング・セットを保持し、前記ワーキング・セットにおける各々のシャドウ変換データ構造は、前記ＶＭの複数のアクティブ・プロセスのうちの１つに関連され、前記複数のアクティブ・プロセスのうちの１つに関連する一のゲスト変換データ構造が使用可能になる時に、前記複数のアクティブ・プロセスのうちの１つに関連する前記ワーキング・セットから一のシャドウ変換データ構造のコンテンツを再使用する、
請求項２２に記載の装置。
【請求項２４】
特権付イベントは、一の異なるゲスト変換データ構造を使用可能にするための前記ＶＭの一のリクエストと、前記ゲスト変換データ構造の複数のエントリと前記シャドウ変換データ構造の複数のエントリとの間の１つ以上の不整合性により発生される一のページ・フォルトと、一の変換−ルックアサイド・バッファ（ＴＬＢ）内の１つ以上のアドレス変換を無効にするための前記ＶＭの一のリクエストと、のいずれか１つである、
請求項２３に記載の装置。
【請求項２５】
複数のアドレス変換オペレーションのための一のバーチャル・マシン（ＶＭ）に用いられる一のゲスト変換データ構造と、前記ゲスト変換データ構造からフォーマットと構造とを獲得する一のシャドウ変換データ構造と、を記憶するための一のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）と、
前記シャドウ変換データ構造から抽出されたメタデータに基づいて、前記ゲスト変換データ構造のどの複数のエントリが前記ＶＭにより変更されたかを決定するためと、前記ゲスト変換データ構造内の前記変更された複数のエントリと、前記ゲスト変換データ構造内の前記変更されたエントリに対応する前記シャドウ変換データ構造内の複数のエントリとを同期させるために、前記ＤＲＡＭに接続する一のプロセッサと、
を備えるシステム。
【請求項２６】
前記プロセッサは、更に、複数のシャドウ変換データ構造の一のワーキング・セットを保持し、前記ワーキング・セット内の各々のシャドウ変換データ構造を、前記ＶＭの複数のアクティブ・プロセスのうちの１つに関連させ、前記複数のアクティブ・プロセスの一つに関連する一のゲスト変換データ構造が使用可能になる時に、前記複数のアクティブ・プロセスのうちの１つに関連する前記ワーキング・セットから一のシャドウ変換データ構造のコンテンツを再使用する、
請求項２５に記載のシステム。
【請求項２７】
特権付イベントは、一の異なるゲスト変換データ構造を使用可能にするための前記ＶＭの一のリクエストと、前記ゲスト変換データ構造の複数のエントリと前記シャドウ変換データ構造の複数のエントリとの間の１つ以上の不整合性により発生される一のページ・フォルトと、一の変換−ルックアサイド・バッファ（ＴＬＢ）内の１つ以上のアドレス変換を無効にするための前記ＶＭの一のリクエストと、のいずれか１つである、
請求項２６に記載のシステム。
【請求項２８】
一の処理システムにより実行されるときに、前記処理システムで一の方法を実行させる命令を備え、前記方法は、
一の変換−ルックアサイド・バッファ（ＴＬＢ）に関連する一の特権付イベントにより一のバーチャル・マシン（ＶＭ）から遷移されるコントロールを受信することと、
一のバーチャル・マシン・モニタ（ＶＭＭ）により保持される一のシャドウ変換データ構造と前記シャドウ変換データ構造の複数のエントリに関連する複数の属性とから抽出されたメタデータに基づいて、一のゲスト変換データ構造内のどの複数のエントリが前記ＶＭにより変更されたかを決定することと、
前記ゲスト変換データ構造内の前記変更された複数のエントリと、前記ゲスト変換データ構造内の前記変更された複数のエントリに対応する前記シャドウ変換データ構造内の複数のエントリとを同期させること、
を備える機械可読メディア。
【請求項２９】
前記方法は、更に、複数のシャドウ変換データ構造の一のワーキング・セットを保持し、前記ワーキング・セット内の各々のシャドウ変換データ構造は、前記ＶＭの複数のアクティブ・プロセスのうちの１つと関連されることと、
前記複数のアクティブ・プロセスの１つに関連する一のゲスト変換データ構造が使用可能になるときに、前記複数のアクティブ・プロセスのうちの１つに関連する前記ワーキング・セットから一のシャドウ変換データ構造のコンテンツを再使用することと、
を備える請求項２８に記載の機械可読メディア。
【請求項３０】
前記特権付イベントは、一の異なるゲスト変換データ構造を使用可能にするための前記ＶＭの一のリクエストと、前記ゲスト変換データ構造の複数のエントリと前記シャドウ変換データ構造の複数のエントリとの間の１つ以上の不整合性により発生される一のページ・フォルトと、一の変換−ルックアサイド・バッファ（ＴＬＢ）内の１つ以上のアドレス変換を無効にするための前記ＶＭの一のリクエストと、のいずれか１つである、
請求項２９に記載の機械可読メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般的には仮想マシンに関し、より詳しくは、本発明の実施形態は、仮想マシン環境のアドレス変換をサポートすることに関する。
【背景技術】
【０００２】
従来の仮想マシン・モニタ（ＶＭＭ）は、一般的にコンピュータで実行して、そして、１つ以上の仮想マシンの抽象化を他のソフトウェアに提示する。各々の仮想マシンは、それ自身の「ゲスト・オペレーティング・システム」（すなわち、ＶＭＭによりホストされる１つのオペレーティング・システム（ＯＳ）、及び、他のソフトウェア（集合的にゲスト・ソフトウェアと称する）を実行することで、自己内蔵型プラットホームとして機能してもよい。ゲスト・ソフトウェアは、あたかもそれが仮想マシンよりむしろ専用コンピュータで実行しているかのように機能することを要求する。すなわち、ゲスト・ソフトウェアは、各種のイベントを制御することを期待して、そして、物理メモリおよびメモリ・マップされた入力／出力（Ｉ／Ｏ）デバイスのようなハードウェア資源へのアクセスを有する。例えば、ゲスト・ソフトウェアは、アドレス変換オペレーション上のコントロールを保持し、物理メモリを割当る能力を有すること、ゲスト・アプリケーションの間、及び、それからのプロテクトを提供すること、そして、様々なページングの技法を使用すること、その他、を要求する。しかし、仮想マシン環境においては、ＶＭＭは、仮想マシンの間、及び、それからのプロテクトを提供するコンピュータのリソースの上の最終的なコントロールを有することが可能でなければならない。
【発明を実施するための最良の形態】
【０００３】
仮想マシン環境内のアドレス変換をサポートするための方法と装置が記載されている。以下の記述では、説明のため、本発明の完全な理解を与えるために、多数の具体的な詳細が記載される。しかし、これらの具体的な詳細なしで本発明を実行できることは、当業者にとって明らかである。
【０００４】
以下に続く詳細な説明のいくつかの部分は、アルゴリズム的な言い方と、コンピュータ・システムのレジスタ、又は、メモリの中のデータ・ビットについてのオペレーションの記号的な表現で示される。これらのアルゴリズム的な説明および表現は、データ処理技術に熟練した当業者により、従来技術に熟練した他人に対して彼らの仕事の内容を最も効果的に伝えるために用いられる手段である。アルゴリズムは、ここに、そして、一般的に、求められた結果に至るオペレーションの首尾一貫したシーケンスであると理解される。オペレーションは、物理量の物理的な処理を要求するものである。通常、必然的ではないが、これらの量は、記憶され、伝達され、結合され、比較され、別な方法で処理される電気的又は磁気的な信号という形態をとる。主に一般的な用法の理由により、これらの信号を、ビット、値、構成要素、記号、文字、用語、数、等として参照する時には都合がよいことが判明した。
【０００５】
しかし、これらの全部および類似する用語は、適切な物理量と関連し、そして、これらの量に適用される単に都合のよい標章であることを、心に留めておかれなければならない。別途に特に明示された場合を除き、本発明を通して、コンピュータ・システムのレジスタおよびメモリ内で物理的（電子的）な量として表示されるデータを、コンピュータ・システムのメモリ又はレジスタ又は他のそのような情報記憶、伝送又はディスプレイ装置内の物理量として同様に表示されるデータに変化させ、処理することについて、コンピュータ・システム又は類似する電子計算デバイスのアクションおよびプロセスを参照して、処理する又は計算する又は算出する又は決定する等のような用語を説明に用いていると認識されることが、以下の説明から明らかである。
【０００６】
実施形態の以下の詳細な説明において、参照符号が、本発明が実施されてもよい特定の実施形態を実例として示す添付図面に設けられる。図面において、数図の全体にわたって、同類の数字は、実質的には類似した構成部品を示している。これらの実施形態は、当業者が本発明を実行できるように充分に詳細に記載されている。他の実施形態は、本発明の範囲から逸脱することなく、構造的、論理的、及び、電気的な変更がなされて用いられてもよい。さらに、本発明の各種の実施形態は、異なるけれども、必ずしも相互に独特であるというわけではないことが理解される。例えば、一実施形態において、記載されている特定の機能、構造、又は、特性は、他の実施形態内に含まれてもよい。以下の詳細な説明は、それゆえに、限定的にとられず、本発明の範囲は、そのような請求項が権利を与えられた同等物の全部の範囲と共に、添付の請求の範囲のみにより定義される。
【０００７】
下記例では、実行ユニットおよび論理回路のコンテクスト内の、仮想マシン環境内のアドレス変換のためのサポートを与えることが述べられているが、本発明の他の実施形態では、ソフトウェアにより実施されてもよい。例えば、いくつかの実施形態において、本発明は、本発明のプロセスを実行するコンピュータ（又は、他の電子デバイス）をプログラムするために用いられてもよい命令をその上に記憶していたマシン、又は、コンピュータ・リーダブル・メディアを含んでもよいコンピュータ・プログラムのプロダクト又はソフトウェアとして与えられてもよい。他の実施形態において、プロセスを実行するためのハードワイヤードロジックを含む特定のハードウェア構成部品によるか、又は、プログラムされたコンピュータ構成部品およびカスタムハードウェア構成部品のいかなる組合せにより、本発明の方法は実行されてもよい。
【０００８】
このように、機械可読メディアは、マシン（例えば、コンピュータ）により読込可能な形態の情報を記憶して、又は、伝送するためのいかなるメカニズムも含んでもよく、フロッピー（登録商標）ディスケット、光ディスク、コンパクトディスク、読取り専用メモリ（ＣＤ−ＲＯＭ）、光磁気ディスク、読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ（ＥＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブル・リードオンリ・メモリ（ＥＥＰＲＯＭ）、磁気の、又は、光学式のカード、フラッシュメモリ、インターネット上の伝送、電気の、光学の、音響の、又は、他の形態の伝搬された信号（例えば、搬送波、赤外線信号、デジタル信号、その他）又は、その同類に限られない。
【０００９】
更に、設計は、創作から製造に対するシミュレーションまでの各種のステージを通り抜けてもよい。設計を表すデータは、多くの方法での設計を表してもよい。第１に、シミュレーションにおいて有効であるように、ハードウエアはハードウェア記述言語又は他の関数的記述言語を使用して表されてもよい。さらに、ロジック(論理回路)および／またはトランジスターゲートを有する回路レベル・モデルは、設計過程のいくつかのステージで提示されてもよい。さらに、ほとんどの設計は、いくつかのステージで、ハードウエア・モデルの各種のデバイスの物理的な配置を表示しているデータのレベルに達する。従来の半導体製作技術が用いられる場合には、ハードウエア・モデルを表しているデータは、集積回路を生産するために用いられるマスクのための、異なるマスク・レイヤー上の各種の機能の有無を特定するデータであってもよい。設計のいかなる表現においても、データは、機械可読メディアのいかなる形態で記憶されてもよい。そのような情報を伝送するために光学式の又は電気式の波が変調されるか又はそうでなければ発生され、メモリ、又は、ディスクのような磁性式又は光学式の記憶装置は、機械可読媒体であってもよい。いかなるこれらのメディアも、設計、又は、ソフトウェアの情報を「運び」、又は、「示して」もよい。電気的な搬送波が、コード又は設計の伝送を、電気信号のコピー、バッファリング、又は、再送が実行されるエクステントに示すか伝えるときには、新規なコピーが作られる。このように、通信プロバイダ、又は、ネットワーク・プロバイダは、本発明の技術を実施するアーティクル（搬送波）のコピーを作ってもよい。
【００１０】
図１は、本発明が動作してもよい仮想マシン環境１００の一実施形態を図示する。本実施形態において、素のプラットホーム・ハードウエア１１６は、例えば、標準のオペレーティング・システム（ＯＳ）又は、仮想マシン・モニタ（ＶＭＭ）（例えば、ＶＭＭ１１２）を実行する能力があってもよいコンピューティング・プラットホームを含む。
【００１１】
一般的にソフトウェアによりインプリメントされるＶＭＭ１１２は、素のマシンインタフェースを、より高水準ソフトウェアにエミュレート、及び、エクスポートしてもよい。そのようなより高水準ソフトウェアは、標準、又は、リアルタイムＯＳを含んでもよく、限定されたオペレーティング・システム機能を有する非常に余分な装備のない動作環境であってもよく、従来のＯＳ機能などを含んでいなくてもよい。代わりに、例えば、ＶＭＭ１１２が他のＶＭＭの中で、上部で実行されてもよい。ＶＭＭは、例えば、ハードウエア、ソフトウェア、ファームウェア、又は、各種の技術の組合せによりインプリメントされてもよい。
【００１２】
プラットホーム・ハードウエア１１６は、パーソナルコンピュータ（ＰＣ）、メインフレーム、ハンドヘルド・デバイス、ポータブルコンピュータ、セットトップボックス、又は、他のいかなるコンピューティング・システムの中であってもよい。プラットホーム・ハードウエア１１６は、プロセッサ１１８およびメモリ１２０を含む。
【００１３】
プロセッサ１１８は、例えば、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、等のような、ソフトウェアを実行できるいかなるタイプのプロセッサであってもよい。プロセッサ１１８は、本発明の方法の実施形態を実行するためのマイクロコード、プログラマブル・ロジック、又は、ハードコードされたロジックを含んでもよい。図１は、そのようなプロセッサ１１８の１つだけを示すが、システムには１つ以上のプロセッサがあってもよい。
【００１４】
メモリ１２０は、ハードディスク、フロッピー（登録商標）ディスク、ランダムアクセスメモリ（ＲＡＭ）（例えば、ＤＲＡＭ（ＤＲＡＭ）、又は、スタティックＲＡＭ（ＳＲＡＭ）、リードオンリー・メモリ（ＲＯＭ）、フラッシュメモリ、上記のデバイスのいかなる組合せ、又は、他のいかなるタイプのプロセッサ１１８により読込可能なマシン・メディアであってよい。メモリ１２０は、本発明の方法実施形態を実行するための命令および／またはデータを記憶してもよい。
【００１５】
ＶＭＭ１１２は、他のソフトウェア（すなわち、「ゲスト」ソフトウェア）に、各種のゲストに同じ、又は、異なる抽象化を与えてもよい１つ以上の仮想マシン（ＶＭ）の抽象化を示す。図１は、２つのＶＭ１０２および１１４を示す。各ＶＭで実行しているゲスト・ソフトウェアは、ゲストＯＳ１０４又は１０６のようなゲストＯＳ、および、各種のゲスト・ソフトウェア・アプリケーション１０８および１１０を含んでもよい。各ゲストＯＳ１０４および１０６は、ＶＭ１０２および１１４内でゲストＯＳ１０４又は１０６が実行されて、他のファンクションを実行する物理的資源（例えば、プロセッサ・レジスタ、メモリおよび入出力デバイス）にアクセスすることを予想する。例えば、ゲストＯＳ１０４又は１０６は、プロセッサおよびＶＭ１０２と１１４に示されるプラットホームのアーキテクチャに従い、全部のレジスタ、キャッシュ、構造体、入出力デバイス、メモリなどにアクセスを有することを予想する。ゲスト・ソフトウェアによりアクセスできるリソースは、特権付、又は、非特権付のどちらに分類されてもよい。特権付リソースに対しては、ＶＭＭ１１２は、これらの特権付リソースの上の最終的なコントロールを保持する一方で、ゲスト・ソフトウェアにより要求される機能を促進する。非特権付リソースは、ＶＭＭ１１２により制御される必要はなく、そして、直接にゲスト・ソフトウェアによりアクセスされえる。
【００１６】
更に、各々のゲストＯＳは、例外（例えば、ページ・フォルト、一般的なプロテクトフォールト、その他）、割込み（例えば、ハードウェア割込み、ソフトウェア割込み）、および、プラットホーム・イベント（例えば、初期化（ＩＮＩＴ）、および、システム管理割り込み（ＳＭＩ）、のような各種の故障イベントを処理することを予想する。これらの故障イベントのいくつかは、それらがＶＭｓ１０２および１１４の適当なオペレーションを保証し、ゲスト・ソフトウェアから、及び、それらの間の保護のためにＶＭＭ１１２により処理されなければならないため、「特権付」である。
【００１７】
特権付フォールト・イベントが発生するか、又は、ゲスト・ソフトウェアが特権付リソースにアクセスしようとするときに、コントロールがＶＭＭ１１２に転送されてもよい。ゲスト・ソフトウェアから前記ＶＭＭ１１２へのコントロールの移行は、本願明細書において、ＶＭイグジットとして参照される。リソースアクセスを促進して、又は、適切にイベントを処理した後に、ＶＭＭ１１２は、ゲスト・ソフトウェアにコントロールを復帰してもよい。ＶＭＭ１１２からゲスト・ソフトウェアへのコントロールの移行は、ＶＭエントリと呼ばれる。
【００１８】
一実施形態において、プロセッサ１１８は、仮想マシン制御構造（ＶＭＣＳ）１２５に記憶されたデータに従い、ＶＭ１０２および１１４のオペレーションを制御する。ＶＭＣ１２５は、ゲスト・ソフトウェアの状態、ＶＭＭ１１２の状態、ＶＭＭ１１２がゲスト・ソフトウェアの制御機能に望む方法を示す実行管理情報、ＶＭＭ１１２、および、ＶＭ、その他の間の遷移を制御する情報を含んでもよい構造体である。前記プロセッサ１１８は、ＶＭの実行環境を決定して、および、その動作を束縛するためにＶＭＣＳ１２５から情報を読み込む。一実施形態において、ＶｉＶＩＣＳは、メモリ１２０に記憶される。いくつかの実施形態において、マルチプルＶＭＣ構造体は、マルチプルＶＭをサポートするために用いられる。
【００１９】
アドレス変換オペレーションの間、ＶＭ１０２又は１１４は、様々なページングの技法、その他を使用して、物理メモリの割当を予想して、ゲスト・ソフトウェア・アプリケーション（例えば、アプリケーション１０８又は１１０）からの、および、それらの間のプロテクトを提供する。非仮想マシン環境において、ＯＳにより予想されるアドレス変換メカニズムは、プロセッサ１１８と、ＯＳにより制御されてページングが使用できる時に仮想メモリ・アドレスから物理メモリ・アドレスに変換する変換データ構造（例えば、ページ−テーブル（ＰＴ）階層化）により制御される変換−ルックアサイド・バッファ（ＴＬＢ）１２２に基づいてもよい。
【００２０】
インテル（登録商標）ペンティアム（登録商標）４プロセッサのアーキテクチャは、多くのページング・モードをサポートする。最も共通して使うページング・モードは、２レベルの階層的なページング構造（本願明細書においては２レベルの階層化ページング・モードとして参照される）を使用する３２ビット・リニア・アドレス空間をサポートする。本発明の実施形態は、このページング・モードに限定されるものではなく、その代わりに、当業者により、仮想化するための他のページング・モード（例えば、物理アドレス延長（ＰＡＥ）モード、インテル（登録商標）拡張メモリ６４テクノロジ（ＥＭ６４Ｔ）モード、その他）および、インプリメンテーション（例えば、ハッシュされたページ・テーブル）が使用されてもよい。ＴＬＢに基づく一実施形態において、仮想メモリ・アドレスの物理メモリ・アドレスへの変換は、仮想アドレスの上位２０のビット（４ＫＢページ・フレームのため）、又は、上位１０のビット（４ＭＢのページ・フレームのため）のいずれも使用しているＴＬＢ１２２を検索すると共に始まる。マッチが見つかる（ＴＬＢヒット）場合、ＴＬＢ１２２に含まれる物理的なページ・フレームの上位ビットは、  物理アドレスを形成するために、仮想アドレスの下位ビットと結合される。ＴＬＢも、マッピングに関連するアクセス、および、許可の属性を含む。マッチが見つからない（ＴＬＢミス）場合、プロセッサは、仮想／物理的変換を決定するために、その時ＴＬＢ１２２のキャッシュに入っているＰＴ階層化を調べる。ＰＴ階層化のエントリは、あるアクセスにあるプロセッサにより自動的にセットされるいくつかの属性を含んでもよい。
【００２１】
ＰＴ階層化が変更される場合、ＴＬＢ１２２に対応しているアドレス変換が存在するなら、ＴＬＢ１２２は、ＰＴ階層化と一致していなくてもよい。ＯＳは、プロセッサ１１８に命令を発行することにより、そのような不整合性を解決することができることを予想してもよい。例えば、インテル（登録商標）ペンティアム（登録商標）４の命令セットアーキテクチャ（ＩＳＡ）（本願明細書において、ＩＡ−３２  ＩＳＡとして参照される）において、プロセッサは、ＩＮＶＬＰＧ命令を発行することにより、ＴＬＢのキャッシュに入れられた変換を無効にするソフトウェアを許容する。加えて、ＯＳは、完全にアドレス空間を変更するために、プロセッサ１１８をリクエストすることを予想してもよい。そして、それは、ＴＬＢ１２２からの全変換の除去という結果にならなければならない。例えば、ＩＡ−３２ＩＳＡにおいて、ＯＳは、ＭＯＶ命令、又は、それによりＴＬＢから全変換を削除するＣＲ３（ＰＴ階層化のベースアドレスを含む）をロードするためにプロセッサにリクエストするタスクスイッチを使用してもよい。ページ・テーブル階層化の異なるレベルは、モード、および、インプリメンテーションに基づく異なる名前を有していてもよい。２−レベル階層化ページング・モードにおいては、２レベルのページング構造体がある。ＣＲ３レジスタは、ページ・ディレクトリ・ページの基底を示している。ページ・ディレクトリのエントリは、大きいサイズのページ（例えば、４ＭＢのスーパーページ、２ＭＢのスーパーページ、１ＧＢのスーパーページ、その他）にマッピングするか、又は、ページ・テーブルに対して参照符をつけて指定してもよい。ページ・テーブル順の場合には、小さいサイズのページにマッピングすることを含んでもよい。
【００２２】
上記のように、バーチャル・マシン環境において、ＶＭＭ１１２は、ＴＬＢ１２２を含む物理的資源上に最終的なコントロールを持たせるようにできなければならない。本発明の実施形態は、プロセッサの物理的なＴＬＢの機能をエミュレートする仮想ＴＬＢを使用することにより、ＶＭ１０２および１１４の各期待およびＶＭＭ１１２の役割間のコンフリクトのアドレス指定を行う。
【００２３】
仮想ＴＬＢは、ＴＬＢ１２２、および、ＶＭＭ１１２により制御される１組のシャドウＰＴ階層を含む。シャドウＰＴ階層の組は、現在使用されていてもよくて、又は、ＶＭ１０２又はＶＭ１１４によりは使用されていないゲストＰＴ階層化から、そのフォーマットおよびコンテンツを引き出す。ＶＭ１０２又はＶＭ１１４がゲストＰＴ階層化のコンテンツを変更する場合、このコンテンツは、シャドウＰＴ階層のコンテンツと一致しなくなる。ゲストＰＴ階層化とシャドウＰＴ階層の間の不整合性は、ＴＬＢ１２２を管理するときにプロセッサ１１８により用いられる技術に類似する技術を使用して解決される。これらの技術のいくつかは、ＶＭ１０２又はＶＭ１１４に、ＴＬＢ（例えば、ＩＮＶＬＰＧ、ページ・フォルト、および、ロードＣＲ３）を処理する試みを示すイベントを発行することを強いる。そのようなイベントは、特権付で、および、それゆえに、ＶＭＭ１１２にＶＭイグジットという結果になる。ＶＭＭは、それからイベントを評価して、必要に応じ、現在のゲスト状態で全ての保持されたシャドウＰＴ階層を同期させる。我々は、保持されたシャドウＰＴ階層の組を、ワーキング・セットとして参照する。複数のプロセスが同じゲスト・ページ・テーブルを使用してもよいので、同じシャドウＰＴがマルチプル・ゲストＰＴ階層化の一部分であることができる。対応しているシャドウＰＴは、順にマルチプル・シャドウＰＴ階層の要素となる。
【００２４】
ＶＭＭにより実行される同期は、現在使用中でないシャドウＰＴ階層のためのシャドウ・ページ・テーブル、又は、ページ・ディレクトリ・エントリをアップデートしてもよいことに注意しなければならない。同様に同期は、使用中であるゲストＰＴ階層化の一部分でないゲスト・ページに要求されてもよい。
【００２５】
一実施形態において、ＶＭＭ１１２は、仮想ＴＬＢ（ＶＴＬＢ）データ記憶装置１２４の各々のＶＭ１０２とＶＭ１１４のためのシャドウＰＴ階層のワーキング・セットを生成して、保持する役割を果たすアドレス変換モジュール１２６を含む。シャドウＰＴ階層のワーキング・セットは、ＶＭ１０２又はＶＭ１１４の対応するアクティブ・プロセス（すなわち、近い将来、ＶＭ１０２又はＶＭ１１４により起動させられそうであるプロセス）のために保持される。ＩＡ３２ＩＳＡについては、明確に定義されるゲスト階層化は、現在用いられたページング構造体により定義されるそれであることが好ましい。実際には、ゲスト・プロセス、および、それらのアドレス空間のための一時的で局所的なやりとりが高い率で行われる。ＶＭＭは、１組のアクティブ・プロセスを決定するためにヒューリスティックス、又は、明確な情報を使用してもよい。
【００２６】
ＶＭ１０２又はＶＭ１１４が、ＶＭ１０２又はＶＭ１１４のアクティブ・プロセスのうちの１つのためのゲストＰＴ階層化を可能にするときに、アドレス変換モジュール１２６は、ワーキング・セットの対応しているシャドウＰＴ階層を識別して、プロセッサ１１８にそのベースアドレスをロードすることをリクエストする。適用できる場合には、アドレス変換モジュール１２６は、シャドウＰＴ階層に記憶された以前に計算されたマッピングを、そのときに再使用できる。
【００２７】
ＶＭ１０２又はＶＭ１１４が新規なプロセスを起動する場合、アドレス変換モジュール１２６は、対応しているゲストＰＴ階層化から新規なシャドウＰＴ階層を得て、それをワーキング・セットに加える。これに対して、ＶＭ１０２又はＶＭ１１４が存在している１つのプロセスを停止する場合、アドレス変換モジュール１２６は、ワーキング・セットからゲストＰＴ階層化に対応する情報を削除する。
【００２８】
一実施形態において、アドレス変換モジュール１２６は、メタデータを各々の新規なシャドウＰＴ階層から抽出して、メタデータをＶＴＬＢデータ記憶装置１２４に記憶して、シャドウＰＴ階層が変更されるときにメタデータをアップデートする役割を果たす。一実施形態において、メタデータは、ＰＴベクトル（ＰＴＶ）、ＰＤベクトル（ＰＤＶ）、アクティブＰＴＥリスト、および、アクティブＰＤＥリストを含む。
【００２９】
ＰＴＶおよびＰＤＶは、ＰＴおよびＰＤとして用いられるゲスト・フレームを追跡する。一実施形態において、この情報は、ビット・ベクトルにコード化される。ＰＴＶは、対応するＰＦＮがＰＴである場合、ページ・フレーム数（ＰＦＮ）により、セットされている各々のエントリ・ビットを有してインデックス付けされてもよい。ＰＤＶは、対応するＰＦＮがＰＤである場合、ページ・フレーム数（ＰＦＮ）により、セットされている各々のエントリ・ビットを有してインデックス付けされてもよい。
【００３０】
アクティブＰＴＥリストは、ＰＴおよびＰＤを保持しているフレームを示すシャドウＰＴ階層のＰＴエントリ（ＰＴＥ）のリストである。アクティブＰＤＥリストは、アクティブＰＴＥリストで識別されたＰＴエントリを含むＰＴを示すシャドウＰＴ階層のＰＤエントリ（ＰＤＥ）を識別する。
【００３１】
一実施形態において、アクティブＰＤＥおよびＰＴＥリストは、マッピングがＰＤ又はＰＴフレームにあるか否かが記述されている追加のメタデータを含む。
【００３２】
当業者は、本発明の実施形態が、本願明細書において、述べられているよりもより多い又はより少ない有効なスペース又は時間であってもよい、様々なデータ構造を使用してもよいことが理解できる。当業者は、また、追加のページング・モードをサポートするためのトラッキング構造の拡張を認識できる。例えば、１つのＥＭ６４Ｔページング・モードは、６４ビット仮想アドレスを、４レベルの階層的なページング構造により、物理アドレスにマップする。仮想又は物理アドレス空間において、サポートされるビットの実際の数は、処理系依存であってもよく、特定のインプリメンテーションにおける６４のビット未満でもよい。更に詳細に後述すると、ＥＭ６４Ｔインプリメンテーションは、ＥＭ６４Ｔページング構造において、用いられる追加のページ・テーブルを追跡するために、ページ−マップ・レベル４（ＰＭＬ４）のページ・ベクトルとページ・ディレクトリ・ポインタ（ＰＤＰ）のページ・ベクトルの加算を要求してもよい。同様に、当業者は、アクティブＰＴＥリストが、ページング構造（例えば、ＥＭ６４ＴのＰＭＬ４又はＰＤＰページ）内で用いられるいかなるページもマップするエントリを含むために拡大されることを認識する。
【００３３】
一実施形態において、アクティブＰＴＥ／ＰＤＥリスト・メタデータは、ページ・テーブルでマップされたＰＤ、および、ＰＴフレームの数を追跡するために保持される。ページごとのマッピングの数が０から増加される時、そのときには、ＰＴをマップするＰＤＥは、アクティブＰＤＥリストに加えられなければならず、そして、マッピングの数がゼロに減少される時、そのときには、このＰＴをマップするＰＤＥは、アクティブＰＤＥリストから削除されなければならない。
【００３４】
一実施形態において、アドレス変換モジュール１２６は、そのような同期が必要である時に、現在のゲストＰＴ階層に現在のシャドウＰＴ階層を同期させる役割を果たす。アドレス変換モジュール１２６は、ゲストＰＴ階層のどのエントリが最近変更されたかを決定すること、そして、それにしたがって、シャドウＰＴ階層の対応するエントリをアップデートすることにより同期を実行する。アドレス変換モジュール１２６は、シャドウＰＴ階層から抽出された前記メタデータとシャドウＰＴ階層のエントリに関連する属性に基づいて、ゲストＰＴ階層のどのエントリが、最近変更されたかを決定する。一実施形態において、属性は、シャドウＰＴ階層のＰＤエントリに関連するアクセス属性を含み、そして、シャドウＰＴ階層のＰＴエントリに関連する属性をアップデートする。
【００３５】
図２は、本発明の一実施形態による仮想ＴＬＢ２０４のオペレーションを図示する。仮想ＴＬＢ２０４は、シャドウＰＴ階層２０６と物理的なＴＬＢ２０８により表されるシャドウ変換データ構造を含む。シャドウＰＴ階層２０６は、ゲストＰＴ階層２０２により表されるゲスト変換データ構造から、その構造、及び、コンテンツを獲得する。一実施形態において、ＶＭＭは、ＶＭのアクティブ・プロセスのためのシャドウＰＴ階層のワーキング・セットを保持する。
【００３６】
一実施形態において、ＶＭが、プロセッサに異なるゲストＰＴ階層（例えば、ＣＲ３に対するＭＯＶ、又は、ＩＡ−３２ＩＳＡのタスクスイッチを発行することにより）を使用可能にすることをリクエストするときには、プロセッサにリクエストされたゲストＰＴ階層２０２に対応するシャドウＰＴ階層２０６のベースアドレス２１４をロードするように命令するコントロールをＶＭＭに遷移する。いくつかの実施形態において、このシャドウＰＴ階層２０６は、更に詳細に以下に説明されるように、関連したメタデータ、及び、属性を使用しているゲストＰＴ階層２０２と同期する。
【００３７】
一実施形態において、仮想ＴＬＢは、シャドウＰＤ、及び、ＰＴのエントリのアクセス、及び、アップデート属性を保持する。これらの属性は、また、アクセスされた（Ａ）ビット、及び、ダーティ（Ｄ）ビットと称する。一実施形態において、ページ・フレームがゲスト・ソフトウェアにより初めてアクセスされるときに、プロセッサは、アクセスされた（Ａ）属性を、シャドウＰＴ階層２０６の対応するＰＴエントリ又はＰＤエントリにセットする。ゲスト・ソフトウェアがページ・フレームを書き込む場合、プロセッサは、ダーティ（Ｄ）属性を、対応するシャドウＰＴエントリにセットする。
【００３８】
ゲスト・ソフトウェアは、仮想／物理的マッピング、許可、その他を含むゲストＰＴ階層２０２を自由に変更することが許容されている。したがって、シャドウＰＴ階層２０６は、必ずしもゲストＰＴ階層２０２と、整合していなくてもよい。階層２０２と２０６間の不整合性から問題が起こるときに、仮想ＴＬＢ２０４を物理的なＴＬＢとみなすゲストＯＳは、プロセッサに、関連したＩＳＡにより定義されるオペレーションを実行するようにリクエストすることにより、仮想ＴＬＢ２０４を変更しようと試みる。例えば、ＩＡ−３２  ＩＳＡにおいて、そのようなオペレーションは、ＩＮＶＬＰＧ命令、ＣＲ３ロード、ページング・アクティベーション（ＣＲ０．ＰＧの変更）、グローバル・ページングの変更（ＣＲ４．ＰＧＥビットの切換）、その他を含む。仮想ＴＬＢ２０４を変更しようとしているオペレーションは、ＶＭＭにより、特権付で（例えば、ＶＭＣＳに記憶された実行管理に対応して使用すること）構成され、そして、それゆえに、ＶＭＭにＶＭイグジットという結果になる。ＶＭＭは、その時記ＶＭイグジットの原因を決定して、必要に応じてシャドウＰＴ階層２０６のコンテンツを変更する。例えば、ゲストＯＳにより処理されるべきページ・フォルトのためにＶＭイグジットが発生する（例えば、ゲストＰＴ階層２０２により許可されないアクセスによりページ・フォルトが発生する）場合、ページ・フォルトは、処理のためのゲストＯＳに導入される。これに対して、階層２０２と２０６のエントリ間の不整合性から発生されるページ・フォルト（又は、ＩＮＶＬＰＧのような他のいかなるオペレーション）のためにＶＭイグジットが発生する場合、ＶＭＭは、更に詳細に以下に説明されられるように、無効のエントリを削除し、新規のエントリを加え、又は、存在しているエントリを変更し、することを必要とする可能性がある。ゲストＰＴ階層により発生したページ・フォルトは、本願明細書において、『実』ページ・フォルトとして参照され、そして、ゲスト・ページ・テーブルの直接の使用により発生しなかったページ・フォルトは、本願明細書において、『誘導された』ページ・フォルトとして参照される。
【００３９】
図３Ａは、本発明の一実施形態により２レベル階層ページング・モードのシャドウＰＴ階層のためのメタデータを生成して、及び、保持するプロセスを図示する。
【００４０】
図３Ａを参照して、識別可能な文字（文字ＡからＷ）により識別される物理的なページ・フレームの数が図示される。いくつかのゲスト・ページ・フレームは、ＰＤ（例えば、フレームＡ）を含んでもよい。他のゲスト・ページ・フレームは、ＰＴ（例えば、フレームＡ、Ｂ、Ｃ、そして、Ｌ）を含んでもよい。階層３０２は、ゲストＰＴ階層である。
【００４１】
図３Ａは、ゲストＰＴ階層３０２に基づいて生成されるシャドウＰＴ階層３０４を示す。ゲストＰＴ階層３０２の各ＰＤ又はＰＴは、シャドウＰＴ階層３０４内に、対応するＰＤ又はＰＴを含む。一般に、シャドウ・ページは、ゲストＰＴの各ページが要求されない点に注意する。いくつかの実施形態は、使用統計値に従うシャドウ・ページを制限すること（例えば、用いられたゲストＰＴページのためのシャドウ・ページを生成するだけ、）又は、リソース制約条件に調和すること（例えば、空きメモリに基づいて１組のシャドウ・ページだけを保持する）を選んでもよい。別々のシャドウテーブルは、同じ物理的なフレームから得られるＰＤ、及び、ＰＴテーブルに保持される。例えば、別々のテーブル３３０、及び、３３２は、同じ物理的なフレーム３１４から得られるＰＤ３０６、及び、ＰＴ３０８に保持される。シャドウＰＴ階層３０４のＰＤ、及び、ＰＴエントリは、ゲスト・フレーム３１４から３２４に変わるマッピングを含む。
【００４２】
ゲストＰＴ階層３０２において、フレーム３１６、及び、３１８は、ＰＴ３１０、及び、３１２として使用され、そして、フレーム３１４は、ＰＤ３０６、及び、ＰＴ３０８の両方で用いられる。この使用法は、シャドウＰＴ階層３０４のもとで示されるページ・フレーム３１４〜３１６に、「ＰＴ」、及び、「ＰＤ／ＰＴ」として図示される。
【００４３】
シャドウＰＴ階層３０４は、アクティブＰＴＥ  ｌｉｓｔ３４２、及び、アクティブＰＤＥリスト３４４と関連する。一実施形態において、アクティブＰＴＥリスト３４２は、ゲストＰＴ階層３０２からのＰＴ、及び、ＰＤページ・フレームをマップするシャドウＰＴ階層３０４内のＰＴエントリを識別する。特に、アクティブＰＴＥリスト３４２は、ページ・フレーム３１４から３１８をマップするＰＴ３３２のエントリを識別する。一実施形態において、アクティブＰＤＥリスト３４４は、アクティブＰＴＥリスト３４２において、識別されるエントリを有するＰＴを示しているシャドウＰＴ階層のＰＤエントリを識別する。特に、アクティブＰＤＥリスト３４４は、記ＰＴ３３２を示しているＰＤ３３０のエントリを含む。アクティブＰＴＥリスト３４２、及び、アクティブＰＤＥリスト３４４は、シャドウＰＴ階層３０４のメタデータの構成要素品である。
【００４４】
シャドウＰＴ階層３０４は、ＰＴビット・ベクトル（ＰＴＶ）３６２、及び、ＰＤビット・ベクトル（ＰＤＶ）３６４に関連する。一実施形態において、ＰＴＶ３６２は、ＰＴとして用いられるゲスト・ページ・フレームを追跡する。特に、ＰＴＶ３６２は、ゲストＰＴ階層３０２のＰＴとして用いられるページ・フレーム３１４から３１８を含む。一実施形態において、ＰＤＶ３６４は、ＰＤとして用いられるゲスト・ページ・フレームを追跡する。特に、ＰＤＶ３６４は、ゲストＰＴ階層３０２のＰＤとして用いられるページ・フレーム３１４を含む。一実施形態において、ＰＴＶ３６２、及び、ＰＤＶ３６４は、ワーキング・セットの全シャドウＰＴ階層を表し、シャドウ・ページがワーキング・セットにおいて、用いられる容量を追跡する（例えば、シャドウ・ページがゲストＰＴに割当られなかった場合、その時、ＰＴＶは、それがゲスト・ページング構造に現れる場合であっても、ゲストＰＴページを反映しない）。
【００４５】
一実施形態において、ゲストＯＳが新規ＰＴをゲストＰＴ階層３０２に加える場合、ＶＭＭは、この加算（例えば、ＴＬＢ処理に関する次の又はその後のＶＭイグジット上の）を検出して、そして、対応するＰＴをシャドウＰＴ階層３０４に加えてもよい。例えば、フレーム３１９から得られた新規のＰＴ３５２がゲストＰＴ階層３０２に加えられる場合、新規のフレーム３５４のためのマッピングについて、ＶＭＭは、シャドウＰＴ階層３０４に変わるマッピングに対応するＰＴ３６０を加えて、そして、この変更を反映するために、メタデータをアップデートしてもよい。特に、ＶＭＭは、アクティブＰＴＥリスト３４２に、ＰＴ３３２のエントリ・マッピング・フレーム３１９と、アクティブＰＤＥリスト３４４に対するＰＤ３３０内のＰＴ３６０に対するエントリ・ポインティングを加える。また、ＶＭＭは、ＰＴとして用いられるゲストフレーム（すなわち、ここではフレーム３１９）を追跡するＰＴＶ３６２へのフレーム３１９を加える。
【００４６】
図３Ｂは、本発明の一実施形態による、ＥＭ６４Ｔページング・モードにおけるシャドウＰＴ階層のためのメタデータを生成して保持するプロセスを図示する。
【００４７】
図３Ｂを参照して、ページング構造のベースは、ＰＭＬ４ページ（例えば、フレームＡ）である。ＰＭＬ４ページの各エントリは、ＰＤＰページ（例えば、フレームＢ、及び、Ｃ）を参照する。ＰＤＰページの各エントリは、ページ・ディレクトリ（ＰＤ）ページ（例えば、フレームＤ又はＥ）を参照し、各エントリは、順に、ページ・テーブル（ＰＴ）ページ（例えば、フレームＦ、Ｇ、Ｈ、又は、I）を参照してもよい。
【００４８】
各々のＰＭＬ４、ＰＤＰ、ＰＤ、又は、ＰＴページは、サイズが４Ｋｂであってもよい。３２ビットより大きい物理アドレス空間をサポートするために、エントリ・サイズは、３２ビット・ページング・モードに関連させて増加させてもよい。特に、適切なエントリを選択するために各レベルで使用する９ビットの仮想アドレスを要求して、ページ毎に５１２エントリあってもよい。このセレクタ・サイズは、上記したような４ＭＢの代わりに２ＭＢの大きいページサイズにしてもよい。
【００４９】
一実施形態において、ＥＭ６４Ｔページング・モードにおけるメタデータの生成は、いくつかのベクトル、アクティブ・エントリ・リスト、及び、いくつかのアクティブ・ディレクトリ・リストの生成を含む。ベクトルは、ＰＭＬ４ページとして用いられるフレームを識別しているＰＭＬ４Ｖベクトル、ＰＤＰページとして用いられるフレームを識別しているＰＤＰＶベクトル、ＰＤページとして用いられるフレームを識別しているＰＤＶベクトル、及び、ＰＴページとして用いられるフレームを識別しているＰＴＶベクトルを含む。アクティブ・エントリ・リストは、ＰＭＬ４、ＰＤＰ、ＰＤ、又は、ＰＴページをマップする全マッピングを含むアクティブＰＴＥリストである。アクティブ・ディレクトリ・リストは、シャドウ構造に対応するゲスト・ページがアクセスできる下位レベル構造を参照する、より高レベルのマッピング構造を識別しているリストを含む。特に、アクティブ・ディレクトリ・リストは、アクティブＰＴＥリスト・エントリを含んでいるページを参照するＰＤＥを含んでいるアクティブＰＤＥリスト、アクティブＰＤＥリスト・エントリを含んでいるＰＤを参照するアクティブＰＤＰＥエントリを含んでいるアクティブ１つのＰＤＰＥリスト、及び、アクティブＰＤＰＥリストの構成要素を含んでいるＰＤＰをマップするエントリを含んでいるアクティブＰＭＬ４Ｅリストを備える。
【００５０】
一実施形態において、シャドウ・ページ・テーブルの同期は、用いられたシャドウＰＴ階層に関連するアクティブＰＭＬ４Ｅリスト内の各エントリのチェックを始める。エントリがアクセスされた場合、アクセスされたＰＭＬ４エントリに対応するアクティブＰＤＰＥリストの各構成要素がチェックされて、そして、それから前述したように処理が続けられる。
【００５１】
一代替実施形態において、アクティブ・リストは保持されず、および／または、１つ以上の上位レベルの階層で処理されない。例えば、単一のエントリだけが最上のページング構造に配置されるシステムにおいて、階層の各レベルのためにアクティブ・リストを使用することは、この単一エントリを常にアクセスされることになり、このことにより、階層内の下位レベルに要求される処理の量の低減が許容されなくなる。この使用法のモデルを収容するため、同期を、階層において、より低いアクティブ・リストの処理により、代わりに始めてもよい。例えば、一実施形態において、アクティブＰＤＰＥリスト要素は、用いられたシャドウＰＴ階層に関連するアクティブＰＤＥリスト要素、又は、アクティブＰＴＥリスト要素の処理の前に最初に処理されてもよい。一実施形態において、同時に処理されるイニシャル・レイヤーは、あらかじめ決められてもよい。もう１つの実施形態において、処理されるイニシャル・レイヤーは、ゲスト・ページ・テーブル使用法のダイナミックなプロファイリングにより決定されてもよい。
【００５２】
各種の他のページング・モードが、本発明の実施形態により使用されてもよい。例えば、ＩＡ−３２は、３２ビット仮想アドレスがより大きい物理アドレスにマップされる、さらなるページング・モードをサポートする。この追加の動作モードにおいて、ページ・テーブルベースレジスタは、４つの構成要素を含むＰＤＰページを示すために構成される。オペレーションのこの追加のモードにおけるエントリ・サイズ、及び、動作は、６４ビット仮想アドレスモードのために上記したそれらに類似している。この追加のモードがＰＭＬ４ページで使用されないので、ＰＭＬ４Ｖ、及び、アクティブＰＭＬ４Ｅリストは要求されない。
【００５３】
図４は、ゲスト変換データ構造とシャドウ変換データ構造とを同期させるためのプロセス４００の一実施形態のフローチャートである。プロセスは、ハードウェア（例えば、専用のロジック、プログラマブル・ロジック、マイクロコード、その他）、ソフトウェア（汎用計算機システム、又は、専用のマシン上で実行するような）、又は、両方の組合せを備えてもよい処理論理回路により実行されてもよい。一実施形態において、プロセスは、図１のアドレス変換モジュール１２６により実行される。
【００５４】
図４を参照して、プロセス４００は、ＴＬＢ（処理ブロック４０２）の処理に関連するイベントのためのＶＭから遷移されたコントロールを受信している処理論理回路で始まる。そのようなイベントの実施例は、現在のアドレス空間（例えば、ＣＲ３ロード）を変更するためのリクエスト、ＴＬＢ（例えば、ＩＮＶＬＰＧ）、ページ・フォルト、その他の指定された仮想アドレスに違反した変換を調整するためのリクエストを含んでもよい。
【００５５】
処理ボックス４０４で、処理論理回路はＴＬＢの処理に関連するイベントがＶＭにより処理されなければならないか否かを決定する。もし、ＶＭにより処理されなければならない（例えば、前記イベントは、ゲスト変換データ構造の不確実なマッピングにより発生されるページ・フォルトである）ならば、コントロールは、イベント（処理ブロック４０６）を処理するために、ＶＭに復帰される。ＶＭにより処理されなくてもよい場合には、処理論理回路は、イベントが指定された不確実なアドレス（処理ボックス４０８）に関連されるか否かを決定する。
【００５６】
イベントが関連しない場合、それは指定された不確実なアドレスに関連されてもよい。そのようなイベントの実施形態は、オペランドとして不確実なアドレスにかかるＩＮＶＬＰＧ命令により発生されるイベント、誘導されたページ・フォルトにより発生されるイベント（例えば、特定のマッピングに関する２つの変換データ構造間の不整合性から生まれページ・フォルト、ゲスト変換データ構造のＡ／Ｄビットを仮想化するためのニーズにより発生されるページ・フォルト、その他）、その他を含んでもよい。イベントが指定された不確実なアドレスに関連する場合、処理論理回路は、ゲスト変換データ構造（処理ブロック４１０）に従うために、指定されたアドレス（例えば、指定されたアドレスの無効なマッピングを削除したか、又は、指定されたアドレスの新規のマッピングを加えた）のためのシャドウ変換データ構造の訂正を作成する。指定されたアドレスのための２つの変換データ構造の同期調整エントリのためのプロセスの一実施形態は、更に詳細に、図７に関連して以下で説明される。
【００５７】
もし、イベントがいかなる特有アドレスにも関連しない（例えば、イベントは、ＩＡ３２の全部ＴＬＢエントリをフラッシュするアドレス空間を変更するためのＶＭのリクエストにより発生される。）、処理論理回路は、ゲスト変換データ構造のどのエントリが変更されるかを決定する（処理ブロック４１２）。判定は、シャドウ変換データ構造（処理ブロック４１２）のエントリに関連したシャドウ変換データ構造、及び、属性から抽出されたメタデータを使用して作られる。メタデータは、シャドウ変換データ構造の各種レベルのためのベクトル、及び、アクティブ・リストを含む。シャドウ変換データ構造の特定レベルのためのベクトルは、ゲスト変換データ構造のこのレベルのページとして用いられるフレームを識別する。アクティブ・リストは、アクティブ・エントリ・リスト、及び、１つ以上のアクティブ・ディレクトリ・リストを含む。アクティブ・エントリ・リストは、ゲストがゲスト変換データ構造を形成するのに使用したページをマップするマッピングを含む。アクティブ・ディレクトリ・リストは、シャドウされたページング構造に対応するゲスト・ページに（どこからでも）アクセスできる下位レベル構造を参照しているより高水準のマッピング構造を識別する。上記のように、２−レベル階層ページング・モードにおいて、メタデータは、一実施形態において、ベクトルＰＴＶ、及び、ＰＤＶ、アクティブ・エントリ・リスト（ＰＴＥリスト）、及び、アクティブ・ディレクトリ・リスト（ＰＤＥリスト）を含む。ＥＭ６４Ｔページング・モードにおいて、メタデータは、一実施形態において、ベクトルＰＴＶ、ＰＤＶ、ＰＤＰＶ、及び、ＰＭＬ４Ｖ、アクティブ・エントリ・リスト（ＰＴＥリスト）、及び、アクティブ・ディレクトリ・リスト（アクティブＰＤＥリスト、アクティブＰＤＰＥリスト、及び、アクティブＰＭＬ４Ｅリスト）を含む。
【００５８】
メタデータを使用しているゲスト変換データ構造の最近変更されたエントリを識別するためのプロセスの一実施形態は、更に詳細に図６と関連して以下で説明される。
【００５９】
処理ブロック４１４で、処理論理回路は、ゲスト変換データ構造の変更されたエントリを有するシャドウ変換データ構造の対応するエントリに同期する。したがって、処理論理回路は、シャドウ変換データ構造の全てのコンテンツを再び配置するよりは、むしろ、変更されたエントリに同期させることを必要とするだけである。
【００６０】
一実施形態において、特別な記憶装置は、最近同期したいくつかのゲストＰＤ、および／または、ＰＴコンテンツを保持するために用いられる。これにより、ＶＭＭは、追加の再配置又は許可情報の算出又は調査なしで変更が作られることを決定できる。
【００６１】
ゲスト・ページ・テーブルに対するある程度の変更がシャドウ・ページ・テーブルへの変更を要求しない点に注意する。例えば、ゲストＰＴが、その後変更される現状ではないマッピングを含む場合、対応するシャドウＰＴに変更が要求されない。
【００６２】
図５−図１４は、本発明の異なる実施形態による、２−レベル階層ページング・モードを使用したバーチャル・マシン環境のアドレス変換をサポートするために実行される各種のプロセスを図示する。これらのプロセスは、ハードウェア（例えば、専用のロジック、プログラマブル・ロジック、マイクロコード、その他）、ソフトウェア（例えば、汎用計算機システム、又は、専用のマシン上で実行されるような）、又は、両方の組合せを備えてもよい処理論理回路により実行されてもよい。一実施形態において、これらのプロセスの各々は、図１のアドレス変換モジュール１２６により実行される。
【００６３】
図５は、例えば、シャドウＰＴ階層のようなシャドウ変換データ構造のためのメタデータを保持するためのプロセス５００の一実施形態のフローチャートである。
【００６４】
図５を参照して、プロセス５００は、ゲストＰＴ階層（処理ブロック５０２）から、各々のＰＤ又はＰＴページのためのシャドウ・ページを生成する処理論理回路で始まる。
【００６５】
処理ブロック５０４で、処理論理回路は、ゲストＰＴ階層のＰＤ又はＰＴとして用いられるページ・フレームを追跡する。一実施形態において、対応するＰＦＮがゲストＰＴ階層のＰＤである場合、処理論理回路は、ＰＤＶのエントリをセットする。同様に、対応するＰＦＮがゲストＰＴ階層のＰＴである場合、処理論理回路は、ＰＴＶのエントリをセットする。
【００６６】
処理ブロック５０６で、処理論理回路は、いかなるダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）に裏づけされた（潜在的にＰＤ又はＰＴでありえるページを識別するための）ページに対しても、マッピングを追跡する。一実施形態において、処理論理回路は、逆ページ・テーブル（ＩＰＴ）、及び、逆ページ・ディレクトリ（ＩＰＤ）を使用しているＤＲＡＭベースのページへのマッピングを追跡する。ＩＰＴは、データ・ページ・フレームをマップするＰＴＥのアドレスのリストを含んでいる各々のエントリを有し、データ・ページ・フレームのＰＦＮによりインデックス付けされる。ＩＰＤは、ページ・テーブルとしてＰＦＮを参照するＰＤＥのアドレスのリストを含んでいる各々のエントリを有し、ページ・テーブルのＰＦＮによりインデックス付けされる。
【００６７】
一実施形態において、処理ブロック５０８で、処理論理回路は、大きいページ・マッピングを避けて、それにより将来の同期タイムを減らすために、ゲストＰＴ階層の４ＭＢのページを識別し、各々の４ＭＢのページのためのシャドウＰＴ階層のページ・テーブル生成する。さもなければ、４ＭＢページのアップデートは、４ＭＢ内のあらゆるＰＤ、及び、ＰＴページを同期させる。一実施形態において、逆展開テーブル（ＩＥＴ）は、ゲストＰＴ階層のどのＰＤＥが４ＭＢのページを示しているかを追跡するために用いられる。ＩＥＴは、分解された４ＭＢのページを示しているＰＤＥの一覧を示しているあらゆるエントリを有し、ＰＦＮ、及び、属性ビットによりインデックス付けされる。
【００６８】
本発明の１つの実施形態において、ＩＰＤは、要求されたアドレス変換ステップを最小にするために、シャドウＰＦＮのアドレスによりインデックス付けされてもよい。
【００６９】
ＩＡ３２において、メモリータイプ情報（例えば、キャッシュ能力情報）は、ページをマップするＰＤＥ／ＰＴＥ内でパット・ビットに記憶できる。このタイプ情報は、ページ・テーブル・ポインタであるＰＤＥでは捕らえられない。それゆえに、２つの４ＭＢのページが異なるＰＡＴ属性を有して同じ領域をマップする場合、正しいＰＡＴ属性を伝えるために、別々のページ・テーブルが要求される。この問題は、属性の各々のセットのために別々の展開テーブルを使用することにより解決する。
【００７０】
処理ブロック５１０で、処理論理回路は、ゲストＰＴ階層のＰＤ又はＰＴとして使用されるページをマップし、アクティブＰＴＥリストを生成するシャドウＰＴ階層のＰＴＥを識別する。
【００７１】
処理ブロック５１２で、処理論理回路は、アクティブＰＴＥリストにおいて、識別されるＰＴＥを有するＰＴを示し、アクティブＰＤＥリストを生成するシャドウＰＴ階層のＰＤＥを識別する。
【００７２】
その後、処理ブロック５１４で、ゲストＯＳがゲストＰＴ階層の構造を（例えば、ＰＤ又はＰＴを、加えるか又は削除して）変更する場合、処理論理回路は、上記のアクティブＰＴＥ、及び、ＰＤＥリストを変更する。
【００７３】
図６は、アドレス空間の変更を促進するためのプロセス６００の一実施形態のフローチャートである。ＩＡ３２において、同じＣＲ３値は、無効のＴＬＢマッピングのフラッシュを強制するために、再ロードされてもよいことに注意する。類似した処理ステップは、ＣＲ３の変更のため、又は、ＣＲ３リロードのために用いられる。
【００７４】
図６を参照して、プロセス６００は、異なるゲストＰＴ階層（例えば、ＣＲ３ロード・リクエストを発行することにより）を使用可能にするためのＶＭのリクエストによるＶＭイグジットが発生したことを決定する処理論理回路から始まる（処理ブロック６０２）。
【００７５】
応答において、処理論理回路は、これらのどのＰＤＥがアクセスされたか（アクセス属性をアクセス値にセットする）を見つけるためのメタデータのアクティブＰＤＥリストにおいて識別される、現在使用中であるシャドウＰＴ階層に対応する全アクティブＰＤＥをスキャンし（処理ブロック６０４）、そして、それからアクセスされたＰＤＥのアクセス属性を初期設定する（処理ブロック６０６）。ＩＡ３２において、非リーフ・ページング・テーブルは、ダーティビットをサポートしない。アクセスされたビットがクリアされた場合、その時、４ＭＢ領域内のどのページも読取られず又書込まれない、したがって、いかなるゲスト・ページ・テーブルも又ページ・ディレクトリも変更されない。しかし、アクセスされたビットは読取りと書込みを区別しないので、アクセスされた４ＭＢの領域は、何も変更されない場合がありえるとしても、更に処理されなければならない。ノンリーフ・ページ・テーブルのためのダーティビットをサポートしているアーキテクチャにおいて、ダーティビットがその代わりにチェックされ、更なる処理を要求するための領域だけが書き込まれる。
【００７６】
次に、各々のアクセスされたＰＤＥのために、処理論理回路は、これらのＰＴＥのどれがアップデートされたページのためのマッピング（１つのアップデート属性が１つのアップデート値にセットされる）を含むかを発見するための、メタデータのアクティブＰＴＥリストのアクセスされたアクティブＰＤＥに対応する全シャドウＰＴＥをスキャンする（処理ブロック６０８）。
【００７７】
更に、各々のアップデートされたページのために、処理論理回路は、シャドウＰＴ階層内の対応するエントリとゲストＰＴ階層のＰＤ／ＰＴエントリとを比較し（処理ブロック６１０）、ゲストＰＴ階層の変更されたエントリに適合するシャドウＰＴ階層の対応するエントリを変更する（例えば、ゲストＰＴ階層には存在しないＰＴＥ／ＰＤＥをシャドウＰＴ階層から削除することにより、最近ゲストＰＴ階層に加えられた新規のＰＴＥ／ＰＤＥをシャドウＰＴ階層に加えることにより、その他）（処理ブロック６１２）。ＰＤＥを加えることは、追加のシャドウＰＴの割当・初期化を要求してもよいことに注意する。これは、順に、アドレス変換モジュール１２６により保持される各種のメタデータ構造に、アップデートを要求してもよい。
【００７８】
処理ブロック６１４で、処理論理回路は、１つのアップデート値にセットされたアップデート属性を初期化する。アップデートされたマッピングは、ゲストＯＳにより変更されたページを識別する。
【００７９】
処理ブロック６１６で、処理論理回路は、変更されたゲスト・ページに基づいてシャドウ・マッピングを同期させ、上記の変更による必要に応じてメタデータをアップデートする。
【００８０】
処理ボックス６１８で、処理論理回路は、ＶＭＭにより保持されるワーキング・セットが、ＶＭによりリクエストされる新規のゲストＰＤに対応するシャドウＰＤを含むか否かを決定する。もしシャドウＰＤを含むならば、処理論理回路は、プロセッサに、このシャドウＰＴ階層のベースアドレスをロードすることをリクエストする（処理ブロック６２０）。シャドウＰＤを含まない場合には、処理論理回路は、リクエストされたゲストＰＴ階層に対応する新規のシャドウＰＴ階層を割当（処理ブロック６２２）、ＰＤＶに新規のシャドウＰＴ階層のＰＤを加え（処理ブロック６２４）、各々の有効なＰＤＥを新規のシャドウＰＴ階層のＰＤに加え（処理ブロック６２６）、ＰＤのカバーレージのためにこのＰＤをマップするＰＴＥをモニタするために、アクティブＰＤＥ、及び、ＰＴＥリストを構成し（処理ブロック６２８）、そして、プロセッサに、このシャドウＰＴ階層のベースアドレスをロードすることをリクエストする（処理ブロック６２０）。ＰＴＥをモニタするためのプロセスの一実施形態は、更に詳細に図１３に関連して以下で説明する。
【００８１】
図７は、指定されたアドレスの２つの変換データ構造のエントリを同期させるためのプロセス７００の一実施形態のフローチャートである。プロセス７００は、例えば、ＶＭにより発行されたＩＮＶＬＰＧ命令の結果として、又は、誘発されたページ・フォルトの結果として実行されてもよい。
【００８２】
図７を参照して、プロセス７００は、処理論理回路が、指定されたアドレスのためのシャドウＰＴ階層のマッピングが無効か否かを決定することで始まる（すなわち、ゲスト・ページ・テーブルの現在のコンテンツに対応しない有効なマッピングがある）（処理ボックス７０２）。無効でない場合には、処理論理回路は、処理ボックス７１２へ進む。無効である場合は、処理論理回路は、無効のエントリがＰＤ、又は、ＰＴページをマップしたか否かを決定する（処理ボックス７０４）。無効のエントリがＰＤ又はＰＴページをマップしない場合、処理論理回路は、無効のエントリを削除し（処理ブロック７１０）、処理ボックス７１２へ進む。
【００８３】
無効のエントリがＰＤ、又は、ＰＴページをマップする場合、処理論理回路は、更にマップされたページがアップデートされたか否かを決定する（処理ボックス７０６）。アップデートされない場合には、処理論理回路は、処理ブロック７１０へ進む。アップデートされた場合は、処理論理回路は、アップデートして、同期させて、又は、変更されたＰＤ又はＰＴシャドウを削除して（処理ブロック７０８）、処理ブロック７１０へ進む。一実施形態において、ページは、将来の同期のためにマークされる。
【００８４】
処理ボックス７１２で、処理論理回路は、ゲストＰＴ階層が指定されたアドレスのための新規のマッピングを含むか否かを決定する。含まない場合には、プロセス７００を終了する。含む場合には、処理論理回路は、対応するＰＴＥ又はＰＤＥとして新規のマッピングを加え、もし必要であれば、シャドウ・ページを生成して、加算に従うメタデータをアップデートする（処理ブロック７１４）。
【００８５】
図８は、ＶＭＭにより保持されるシャドウＰＴ階層のワーキング・セットからシャドウＰＴ階層を削除するためプロセス８００の一実施形態のフローチャートである。
【００８６】
シャドウＰＴ階層は、対応しているプロセスの非活動化をＶＭにより検出することにより、ワーキング・セットから削除されてもよい。非活動化は、関連したＯＳのために定義されるヒューリスティックを使用して、又は、現在のアドレス空間に関するゲストＶＭの動作により与えられる手がかりに基づく１組のチェックを使用して、検出されてもよい。前記ＶＭが｛前記ＯＳ、又は、ドライバが非活動化の前記ＶＭＭを通知する｝１つのインタフェースをサポートする場合、その時、ヒューリスティックは避けられてもよい。シャドウＰＴ階層は、また、例えば、シャドウ構造のために用いられるメモリの量は目標しきい値を上回るので、リソース制約条件により削除されてもよい。
【００８７】
図８を参照して。処理論理回路は、シャドウＰＴ階層のＰＤから各々の有効なＰＤＥを削除することから始まる（処理ブロック８０２）。
【００８８】
処理ブロック８０４で、処理論理回路は、ＰＤＶの対応しているエントリをクリアする。
【００８９】
処理ブロック８０６で、処理論理回路は、ＰＤページの割当てを解除し、ＰＤ変換テーブル（ＰＤＴＴ）から変換を削除する。ＰＤＴＴは、ページのアドレス、及び、タイプ（例えば、ＰＤ、又は、ＰＴ）を追跡するために用いられる。ＰＤＴＴは、物理的なＰＦＮ、及び、メタデータを含んでいる各々のエントリを有し、ゲストＰＦＮによりインデックス付けされる。
【００９０】
処理ブロック８０８で、処理論理回路は、ＰＤをマップするＰＴＥからモニタリングを削除する。ＰＴＥからモニタリングを削除するためのプロセスの一実施形態は、更に詳細に以下で図１４に関連して説明される。
【００９１】
図９は、エントリをシャドウＰＴ階層のＰＤに加えるためのプロセス９００の一実施形態のフローチャートである。説明のために、我々は、ページ・テーブルをマップする現在のエントリを考慮する。
【００９２】
図９を参照して、処理論理回路は、ＩＰＤにＰＤＥのためのエントリを加えることから始まる（処理ブロック９０２）。
【００９３】
処理ボックス９０４で、処理論理回路は、このＰＤＥによりマップされるＰＴが、ＰＴＶにセットされるか否かを決定する。セットされる場合には、適切なシャドウＰＴは、ＰＴＴＴ（処理ブロック９１６）で調べられ、新規のシャドウＰＤＥが生成され（処理ブロック９１４）、プロセス９００が終わる。セットされない場合には、処理論理回路は、ＰＴＶに対応しているベクトルをセットして（処理ブロック９０６）、シャドウ・ページを割当て、変換を初期化して（処理ブロック９０８）、新規のシャドウ・ページ・テーブルを配置して（処理ブロック９１０）、アクティブＰＴＥ／ＰＤＥリストがアップデートされ、メタデータが、現在のゲストＰＤＥによりページ・テーブルとして用いられるゲスト・ページを反映するためにモニタされ（処理ブロック９１２）、そして、新規のＰＤＥを付け加え、それを、シャドウ・ページ・テーブルが何らかのアクティブＰＴＥリスト要素を含む場合に、アクティブＰＤＥリストに加える（処理ブロック９１４）。ＰＴＥをモニタするためのプロセスの一実施形態は、以下で図１３に関連して更に詳細に説明する。
【００９４】
図１０は、シャドウＰＴ階層のＰＤから１つのエントリを削除するためのプロセス１０００の一実施形態のフローチャートである。
【００９５】
図１０を参照して、処理論理回路は、ＩＰＤ  ＰＤＥリストからこのＰＤＥのためのエントリを削除することから始まる（処理ブロック１００２）。ＰＤＥがアクティブＰＤＥリストにある場合、その時、アクティブＰＤＥリストはアップデートされなければならない。
【００９６】
処理ボックス１００４で、処理論理回路は、ＰＤＥが対応するＰＴをマップするための最後のエントリであったか否かを決定する。最後のエントリでない場合には、プロセス１０００は終わる。最後のエントリである場合は、処理論理回路は、ＰＴＶのＰＴのためのエントリをクリアし（処理ブロック１００６）、各々の有効なＰＴＥを削除し（処理ブロック１００８）、ＰＴのカバーレージのためにこのＰＴをマップするアクティブＰＴＥ／ＰＤＥリストをアップデートし（処理ブロック１０１０）、及び、シャドウ・ページ変換を削除して、ＰＴシャドウ・ページを記憶するために用いられたメモリを解放する（処理ブロック１０１２）。
【００９７】
図１１は、エントリをシャドウＰＴ階層のＰＴに加えるためのプロセス１１００の一実施形態のフローチャートである。
【００９８】
図１１を参照して、処理論理回路は、ＩＰＴにこのＰＴＥのためのエントリを加えることから始まる（処理ブロック１１０２）。
【００９９】
処理ブロック１１０６で、処理論理回路は、シャドウ・マッピングを生成して、処理ボックス１１０８へ進む。
【０１００】
処理ボックス１１０８で、処理論理回路は、ＰＤＶ又はＰＴＶの対応しているエントリがセットされるか否かを決定する。セットされない場合には、プロセス１１００は終わる。セットされる場合は、処理論理回路は、このエントリをアクティブＰＴＥリストに加えて、それがＰＤおよび／またはＰＴページをマップすることを示している場合、関連するメタデータをアップデートする（処理ブロック１１１０）。ちょうど生成されるアクティブＰＴＥエントリがこのページ・テーブルのために第１のものである場合、その時、ＩＰＤは調べられなければならず、このページ・テーブル・ページをマップする各々のＰＤＥは、アクティブＰＤＥリストに加えられる。
【０１０１】
図１２は、シャドウＰＴ階層のＰＴからエントリを削除するためのプロセス１２００の一実施形態のフローチャートである。
【０１０２】
図１２を参照して、処理論理回路は、このＰＴＥがＰＤＶ又はＰＴＶのページ・セットをマップするか否かを決定することから始まる（処理ボックス１２０２）。マップしない場合には、処理論理回路は、処理ブロック１２０６へ進む。マップする場合は、処理論理回路は、アクティブＰＴＥリストからＰＴＥを削除する。これがＰＴの最近のアクティブＰＴＥリスト要素である場合、その時、このＰＴを参照しているＰＤＥは、アクティブＰＤＥリストから削除され（処理ブロック１２０４）、そして、処理ブロック１２０６まで進む。
【０１０３】
処理ブロック１２０６で、処理論理回路は、ＩＰＴから対応しているエントリを削除する。
【０１０４】
図１３は、シャドウＰＴ階層のＰＴＥをモニタするためのプロセス１３００の一実施形態のフローチャートである。図１３に示されるステップは、ページ・ディレクトリ又はページ・テーブル・ページとして使用されているデータページでマップされたページをモニタが認識するときに要求されてもよい処理を表す。このプロセスは、それゆえに、ＰＴＥによりマップされたページのための状態変更によりトリガーされる。
【０１０５】
図１３を参照して、処理論理回路は、ＰＴＥがアクティブＰＴＥリストにおいて、識別されるか否かを決定することから始まる（処理ボックス１３０２）。識別される場合には、処理論理回路は、以前に失ったカバーレージを加える（処理ブロック１３０４）。このフローは、マップされたページの状態変更によりトリガーされる。このＰＴＥは、アクティブＰＴＥリストにすでにあるので、このＰＴＥがＰＴ又はＰＤとして以前に使用中であり、同様に他の資格で現在も使用中であるというケースでなければならない。そのような情報は、エントリと共に、又は、関連したメタデータに明示的に記憶されてもよい。ＰＴＥがアクティブＰＴＥリストにない場合、処理論理回路は、ＰＴＥをアクティブＰＴＥリストに加え、それに応じてメタデータをアップデートする（処理ブロック１３０６）。
【０１０６】
次に、処理ボックス１３０８で、処理論理回路は、ＰＴＥがこのＰＴのための第１のアクティブＰＴＥリスト・エントリであるか否かを決定する。第１のアクティブＰＴＥリスト・エントリでない場合には、プロセス１３００は終わる。第１のアクティブＰＴＥリスト・エントリである場合には、処理論理回路は、このＰＴをマップするエントリ（ＩＰＤで分かるので）をアクティブＰＤＥリストに加える（処理ブロック１３１０）。
【０１０７】
図１４は、シャドウＰＴ階層のＰＴＥにより与えられるモニタリング・カバーレージを減少させるためのプロセス１４００の一実施形態のフローチャートである。このプロセスは、プロセスがワーキング・セットから削除されるとき、又はページ・テーブルを参照するための最後のＰＤＥが削除されるとき、以前にモニタされたページ・ディレクトリ又はページ・テーブル・ページのステータスの変更という結果になるときに呼び出されてもよい。
【０１０８】
図１４を参照して、処理論理回路は、このＰＴＥはページ・テーブル、及び、ページ・ディレクトリ・ページの両方のページをモニタしたか否かを決定すると共に始める（処理ボックス１４０２）。モニタした場合には、処理論理回路は、カバーレージ・レベルを減らし、ＰＴ又はＰＤのいずれかであるが両方ともではないページをＰＴＥが現在モニタすることを示す（処理ブロック１４０４）。モニタしない場合には、処理論理回路は、アクティブＰＴＥリストからＰＴＥを削除する（処理ブロック１４０６）。ＰＴＥが、単一の資格を使用するために追跡されるページのための１つの構成要素である場合、そのページは、現在もはやモニタを要求しないケースでなければならないことに注意する。
【０１０９】
次に、ＰＴの最後のアクティブＰＴＥリスト要素が削除される場合（処理ボックス１４０８）、処理論理回路は、アクティブＰＤＥリストから、このページ・テーブルをマップした対応するエントリ（ＩＰＤで分かるので）を削除する（処理ブロック１４１０）。
【０１１０】
上記のように、物理的な又は仮想プラットホームは、マルチプロセッサを備えてもよい。各々のプロセッサは、順に１つ以上のスレッド、又は、論理上のプロセッサを備えてもよい。上記で説明された各プロセスは、単一スレッドのＶＭをサポートしている単一スレッドのシステム、又は、単一の仮想論理プロセッサを各々含んでいる１つ以上のＶＭをサポートするマルチプル論理プロセッサを有する物理システムで用いることができる。各々のＶＭは、メタデータ、シャドウ・ページ・テーブル、その他のそれ自身のセットを有し、その同期ステップは与えられたＶＭに限定される点に注意する。
【０１１１】
このように、バーチャル・マシン環境のアドレス変換をサポートするための方法、及び、装置は説明された。上記の説明は、例示を目的とするもので、制限するものではないことが理解できる。当業者にとっては、上記の説明を読んで理解することで、多くの他の実施形態を明らかにできる。本発明の範囲は、それゆえに、請求項が権利を有するものとの同等物の全有効範囲とともに、添付の請求の範囲により決定されなければならない。
【図面の簡単な説明】
【０１１２】
本発明は、一例として、そして、限定するものとしてではなく、添付図面に図示され、同類の参照番号は、同様の構成要素を参照する。
【０１１３】
【図１】本発明が機能してもよい仮想マシン環境の一実施形態を図示する。
【０１１４】
【図２】本発明の一実施形態に従う仮想ＴＬＢのオペレーションを図示する。
【０１１５】
【図３Ａ】本発明の２つの代替実施形態に従い、シャドウＰＴ階層のためのメタデータを生成して、保持するプロセスを図示する。
【図３Ｂ】本発明の２つの代替実施形態に従い、シャドウＰＴ階層のためのメタデータを生成して、保持するプロセスを図示する。
【０１１６】
【図４】ゲスト変換データ構造と、シャドウ変換データ構造とを同期させるためのプロセスの一実施形態のフローチャートである。
【０１１７】
【図５】シャドウ変換データ構造のメタデータを保持するためのプロセスの一実施形態のフローチャートである。
【０１１８】
【図６】１つのアドレス空間の変更を容易にするためのプロセスの一実施形態のフローチャートである。
【０１１９】
【図７】指定されたアドレスの２つの変換データ構造の同期エントリのためのプロセスの一実施形態のフローチャートである。
【０１２０】
【図８】ＶＭＭにより保持されたシャドウＰＴ階層化のワーキング・セットからシャドウＰＴ階層を削除するためのプロセスの一実施形態のフローチャートである。
【０１２１】
【図９】シャドウＰＴ階層のＰＤにエントリを加えるためのプロセスの一実施形態のフローチャートである。
【０１２２】
【図１０】シャドウＰＴ階層のＰＤからエントリを削除するためのプロセスの一実施形態のフローチャートである。
【０１２３】
【図１１】シャドウＰＴ階層のＰＴにエントリを加えるためのプロセスの一実施形態のフローチャートである。
【０１２４】
【図１２】シャドウＰＴ階層のＰＴからエントリを削除するためのプロセスの一実施形態のフローチャートである。
【０１２５】
【図１３】シャドウＰＴ階層のＰＴＥをモニタするためのプロセスの一実施形態のフローチャートである。
【０１２６】
【図１４】シャドウＰＴ階層のＰＴＥから、モニタリングを削除するためのプロセスの一実施形態のフローチャートである。
【図１】
2008529176.tif 000003
【図２】
2008529176.tif 000004
【図３Ａ】
2008529176.tif 000005
【図３Ｂ】
2008529176.tif 000006
【図４】
2008529176.tif 000007
【図５】
2008529176.tif 000008
【図６】
2008529176.tif 000009
【図７】
2008529176.tif 000010
【図８】
2008529176.tif 000011
【図９】
2008529176.tif 000012
【図１０】
2008529176.tif 000013
【図１１】
2008529176.tif 000014
【図１２】
2008529176.tif 000015
【図１３】
2008529176.tif 000016
【図１４】
2008529176.tif 000017
【国際調査報告】
2008529176.tif 000018
2008529176.tif 000019
2008529176.tif 000020