(57)【要約】      （修正有）【課題】仮想マシン（ＶＭ）環境又は他の環境におけるコンテクストの切り替えは、ＴＬＢ及び他のパイプラインリソースをフラッシュする必要があり、このオーバヘッドは、特に多くのアクティブコンテクストをもつシステムにおいて、パフォーマンスに悪影響を及ぼす可能性がある。したがって、コンテクストの切り替えでパイプラインリソースのフラッシュ回数を削減し、パイプラインリソースを効果的に維持する。【解決手段】予め決定された命令が選択された値を変更しないかを判定し、選択された値が変更されない場合にプロセッサリソースで動作を行い、選択された値が変更された場合にはプロセッサリソースの全てのアドレス空間における全てのエントリをフラッシュする。【選択図】図４
2011008805.tif 000002
【特許請求の範囲】
【請求項１】
予め決定された命令が選択された値を変更しないかを判定するステップと、
前記選択された値が変更されない場合にプロセッサリソースで動作を行うステップと、
を備える方法。
【請求項２】
前記プロセッサリソースの全てのアドレス空間における全てのエントリをフラッシュするステップを更に備える、
請求項１記載の方法。
【請求項３】
前記予め決定された命令は、制御レジスタへの移動命令を含む、
請求項１記載の方法。
【請求項４】
前記選択された値は、制御レジスタの値を含む、
請求項１記載の方法。
【請求項５】
前記動作を行うステップは、少なくとも１つの変換ルックアサイドバッファをフラッシュするステップを含む、
請求項１記載の方法。
【請求項６】
実行された場合に、システムが、予め決定された命令が選択された値を変更しないかを判定し、前記選択された値が変更されない場合にプロセッサリソースで動作を行う、ことを可能にする命令を含むコンピュータアクセス可能な記憶媒体を備える製品。
【請求項７】
実行された場合に、前記システムが前記プロセッサリソースの全てのアドレス空間における全てのエントリをフラッシュするのを可能にする命令を更に含む、
請求項６記載の製品。
【請求項８】
実行された場合に、前記システムが少なくとも１つのルックアサイドバッファをフラッシュするのを可能にする命令を更に含む、
請求項６記載の製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム全般に関し、より詳細には、プロセッサを使用した異なるコンテクストにおける処理に関する。
【背景技術】
【０００２】
多くの現在のコンピュータシステムは、バーチャルメモリシステムを使用し、メモリを管理し、システム内で実行する各種プロセッサに割り当て、これにより、システムでの実行するそれぞれのシステムは、システムにより供給されたフルレンジのアドレスの制御を有するかのように動作可能である。オペレーティングシステム（ＯＳ）は、それぞれのプロセスのための仮想的なアドレス空間をシステムのための実際の物理的なアドレス空間にマッピングする。物理アドレスから仮想アドレスへのマッピングは、ページテーブルの使用を通して典型的に保持される。
【０００３】
プロセッサのパフォーマンスは、マルチステージパイプラインアーキテクチャを介して改善され、このアーキテクチャでは、キャッシュ、バッファ、アレイ等のようなパイプラインリソースは、命令をより効率的に実行するために使用される。仮想メモリシステムの使用を改善する１つのかかるパイプラインリソースは、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）である。ＴＬＢは、システムの仮想アドレスの一部を物理アドレスの変換にキャッシュする、プロセッサパイプラインにおけるメモリの比較的小さなセクションである。特に、幾つかの変換セットのエレメントは、プロセッサが極端に迅速にアクセスすることができるＴＬＢに記憶される。様々なＴＬＢがシステムに存在する。たとえば、個別のＴＬＢが命令及びデータについて存在する（それぞれ、命令ＴＬＢ（ｉＴＬＢ）及びデータＴＬＢ（ｄＴＬＢ））。さらに、所定のシステムでは、第二のレベルのｄＴＬＢが存在する。
【０００４】
特定の仮想アドレスの変換がＴＬＢに存在しない場合、「変換ミス」が生じ、アドレスの変換は、更に一般的なメカニズムを使用して解かれる。このように処理は、コンテクストの切り替えが行われるまで継続する。コンテクストの切り替えは、マルチタスクのＯＳが１つのプロセス（たとえばアプリケーション）の実行を停止し、別のプロセスを実行し始めるときに行われる。コンテクストの切り替えが行われるとき、新たなプロセスのためのページディレクトリ及びページテーブルを含むページテーブルがロードされ、ＴＬＢ及び他のパイプラインリソースがフラッシュされる必要がある。フラッシュされることで、リソースのコンテンツがクリアされる。
【０００５】
所定のシステムは、仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）環境を実現し、この環境では、仮想マシンモニタ（ＶＭＭ）は、１以上の仮想マシンのアブストラクションを他のソフトウェアに提供する。それぞれのＶＭは、自己包含型（self-contained）のプラットフォームとして機能し、それ自身の“guest  operating  system”（すなわちＶＭＭにより主催されるＯＳ）、及び、ゲストソフトウェア（又は単に“guest”）と集合的に呼ばれる他のソフトウェアを実行する。ゲストソフトウェアは、仮想マシンよりはむしろ、まるで専用のコンピュータで実行されているかのように動作することが期待される。したがって、ゲストソフトウェアは、各種イベントを制御することを期待し、プロセッサレジデントリソース、メモリにあるリソース、及び、基礎をなすハードウェアプラットフォームにあるリソースのような、ハードウェアリソースへのアクセスを有する。
【０００６】
仮想マシン環境では、ＶＭＭは、これらのイベント及びハードウェアリソースにわたる最終的な制御を一般に有し、ゲストソフトウェアの適切な動作を提供し、異なる仮想マシンで実行するソフトウェアからのプロテクション及びゲストソフトウェア間のプロテクションを提供する。これを達成するため、ＶＭＭは、典型的に、ゲストソフトウェアがプロテクトされたリソースにアクセスするとき、又は（割り込み又は除外のような）他のイベントが生じたとき、制御を受ける（すなわち、コンテクストの切り替えに影響を及ぼす）。
【０００７】
ＶＭ又は他の環境におけるコンテクストの切り替えは、現代のマイクロプロセッサにおいてかなりのオーバヘッドを引き起こす。このオーバヘッドは、それぞれのコンテクストの切り替えでフラッシュされ、リロードされる大規模な第二レベルのＴＬＢにより悪化される。したがって、このオーバヘッドは、特に多くのアクティブコンテクストをもつシステムにおいて、パフォーマンスに悪影響を及ぼす可能性がある。したがって、コンテクストの切り替えでパイプラインのリソースを更に効果的に維持する必要がある。
【発明の概要】
【課題を解決するための手段】
【０００８】
本発明の様々な実施の形態では、ＴＬＢ、トレースキャッシュ（ＴＣ）、ブランチ予測ユニット（ＢＰＵ）アレイ、ミニタグ等のようなパイプラインリソース又は構造は、多数のアドレス空間をサポートする。本明細書で使用されるように、用語「アドレス空間」とは、所与のアプリケーション（たとえばコンテクスト）に対応するメモリにおけるアドレスのセットを意味する。
【０００９】
様々な実施の形態では、アドレススペースは、リニア−物理変換を決定又は影響を及ぼす、（たとえば、ページディレクトリベースレジスタ（ＣＲ３．ＰＤＢＲ）、ページレベルキャッシュディスエーブルビット（ＰＣＤ）、ページレベルライトスルービット（ＰＷＴ）を含む制御レジスタ３；ページングビット（ＣＲ０．ＰＧ）、プロテクションイネーブルビット（ＣＲ０．ＰＥ）を含む制御レジスタ０；ページサイズエクステンションビット（ＣＲ４．ＰＳＥ）及びページグローバルイネーブルビット及び物理アドレスエクステンションビット（ＣＲ４．ＰＧＥ及びＰＡＥ）、エクステンデッド・フィーチャイネーブル・レジスタロング・モードアドレッシング（ＥＦＥＲ．ＬＭＡ）及び実行なしビット（ＥＦＥＲ．ＮＸＥ）を含む制御レジスタ４）アーキテクチャ制御レジスタの組み合わせにより制御される。
【００１０】
様々な実施の形態では、アドレス空間識別子（ＡＳＩＤ）が使用され、各種パイプラインリソースにおけるリニアアドレスをそれらが関連されるコンテクストへのポインタで増加させる。本明細書で使用されるように、「アドレス空間識別子」は、何れかの数、コード、又は、それが関連される１以上のアドレス空間を識別する他の表記である。１実施の形態では、ＡＳＩＤは、スレッド当たり２ビットのＡＳＩＤ（すなわち４つのアドレス空間のコンテクスト）を使用して実現されるが、本発明の範囲は、そのように限定されるものではない。これにより、マルチプルアプリケーションコンテクストはパイプライン構造を共有することが可能であり、コンテクストの切り替えのオーバヘッドを低減する。たとえば、コンテクストの切り替えが行われたとき、現在のＡＳＩＤ値は、パイプライン構造をフラッシュするよりはむしろ変化される。同様に、所定の実施の形態では、スレッド識別子（スレッドＩＤ）は、対応するアドレス空間のための所与のプロセッサスレッドを識別するために提供される。
【００１１】
様々なアーキテクチャイベントは、本発明の実施の形態に従ってＴＬＢの選択的なフラッシュを生じさせる。たとえば、これらイベントは、（ＣＲ０又はＣＲ４におけるページングモードビットが変化した場合）ＣＲ３に移動（ＭＯＶ  ｔｏ  ＣＲ３）命令；ＣＲ０ページモードビット：ＣＲ０．ＰＥ及びＣＲ０．ＰＧ及びＥＦＥＲ．ＬＭＡを変化；ＣＲ４ページモードビットを変化；ＶＭ  Ｅｎｔｒｙ／Ｅｘｉｔ；３２ビットコンテクストの切り替えを含む。予定の実施の形態では、これらのイベントのうち、ＭＯＶ  ｔｏ  ＣＲ３動作又はＶＭエントリ（Ｅｎｔｒｙ）／ＶＭエグジット（Ｅｘｉｔ）イベントのみがＡＳＩＤを変化／インクリメントする。
【００１２】
多くのパイプライン構造は、リニアにタグ付け又は索引付けされる。様々な実施の形態では、ＡＳＩＤは、対応するアドレス空間へのポインタで、これらパイプラインリソースにおけるリニアアドレスを増加する。かかる実施の形態では、マイクロプロセッサは、新たなアドレス空間が形成されたとき、又は異なる以前に見られたアドレス空間に変化するときに更新される全体的な現在のＡＳＩＤレジスタを保持する。ＴＬＢの挿入は、現在のＡＳＩＤ値で拡張され、ＴＬＢは、ＡＳＩＤタグが現在のＡＳＩＤ値に一致する場合にのみ一致を照合する。コンテクストの切り替え（たとえばＭＯＶ  ｔｏ  ＣＲ３、又はＶＭ  Ｅｎｔｒｙ／Ｅｘｉｔ）がアドレス空間の変化をトリガしたとき、マイクロプロセッサは、ＴＬＢ及び他のパイプライン構造をフラッシュする代わりに、新たなアドレス空間を表す異なるＡＳＩＤ値に切り替える。所定の実施の形態では、特定のアドレス空間に対応するエントリをフラッシュしないか、若しくはエントリの一部又は全部をフラッシュするかにより、多数のコンテクストにより環境について大幅なパフォーマンスのゲインが提供される。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係るリニアアドレストランスレーションを示す図である。
【図２】本発明の１実施の形態に係るシステムの一部のブロック図である。
【図３】本発明の１実施の形態に係る方法のフローチャートである。
【図４】本発明の別の実施の形態に係る方法のフローチャートである。
【図５】本発明の更に別の実施の形態に係る方法のフローチャートである。
【図６】本発明の１実施の形態に係る代表的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【００１４】
図１を参照して、本発明の実施の形態に係るリニアアドレス変換が示されており、６４ビットのアドレス変換を含んでいる。図１に示されるように、メモリ２４０におけるページは、リニアアドレス３００を使用してアドレス指定される。図示されるように、リニアアドレス３００は、メモリ２４０における物理アドレスにアクセスするための４レベルのページング構造を索引付けするため、多数のフィールドを含む。オフセットフィールド（ビット０−１１）は、メモリ２４０のページ内で物理アドレスをアドレス指定するために使用される。ページテーブルエントリ（ビット１２−２０）は、ページテーブル（ＰＴ）３１０におけるページテーブルエントリのアドレスを決める。ページディレクトリポインタ（ビット３０−３８）は、ページディレクトリポインタテーブル（ＰＤＰＴ）３３０におけるページディレクトリポインタエントリのアドレスを決める。最後に、ページマップレベル４（ＰＭＬ４）ポインタ（ビット３９−４７）は、ＰＭＬ４  ３４０におけるＰＭＬ４エントリのアドレスを決める。ＰＭＬ４  ３４０のベースは、ＣＲ３におけるポインタを使用してアクセスされる。かかるように、６４ビットリニアアドレスは、物理アドレスにアクセスするための４レベルページング構造を実現するために使用される。
【００１５】
様々な実施の形態では、実施の形態に係るＴＬＢは、対応するリニア及び物理アドレスに合わせて、物理アドレス（タグアドレス）、及び関連される有効なスレッドＩＤ及びＡＳＩＤビットを含む。ＴＬＢエントリは、それらが対応するアドレス空間を示すそれらのタグにおけるＡＳＩＤフィールドを含む。そのＡＳＩＤフィールドは、そのＴＬＢエントリがロードされたとき、現在のＡＳＩＤの値を含む。ＡＳＩＤフィールドはＴＬＢエントリにおけるタグにあるので、ＴＬＢエントリは、現在のＡＳＩＤ値がそのＴＬＢエントリにおけるＡＳＩＤフィールドに一致する場合にのみヒットする。
【００１６】
アドレス空間の変化（すなわちコンテクストの切り替え）、マイクロコードは、現在のアドレス空間／ＡＳＩＤ（ＣＲ３，ＣＲ０及びＣＲ４ページングビット、ＬＭＡ）に関する情報をスクラッチパッドに保存し、新たなアドレス空間をそれぞれのＡＳＩＤの記憶されたアドレス空間情報に比較する。記憶されたアドレス空間／ＡＳＩＤが新たなアドレス空間に一致しない場合、アドレス空間は前に見られていない。したがって、マイクロコードは、このアドレス空間のために新たなＡＳＩＤを割り当てるか、又は、既存のＡＳＩＤを選択し、たとえば最も過去に使用された（ＬＲＵ：ａ  Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）ポリシーと置き換える。後者のケースでは、マイクロコードは、ＬＲＵ  ＡＳＩＤのためにＴＬＢエントリをフラッシュする。
【００１７】
ここで図２を参照して、本発明の１実施の形態に係るシステムの一部のブロック図が示されている。図２に示されているように、システム１０は、第一のゲストソフトウェア（すなわち第一のゲスト）３０，第二のゲストソフトウェア（すなわち第二のゲスト）４０及び仮想マシンエクステンション（ＶＭＸ：Virtual  Machine  eXtention）モニタ５０を含めて、システムメモリ２０及び様々なソフトウェアエンティティを含む。１実施の形態では、システムメモリ２０は、両方のコードを含み、たとえばダイナミックランダムアクセスメモリ（ＤＲＡＭ）から構成されている。
【００１８】
図２の実施の形態では、ＶＭＸモニタ５０は、１以上の仮想マシンのアブストラクションを他のソフトウェア（たとえばゲストソフトウェア）に提供する。ＶＭＸモニタ５０は、同じ又は異なるアブストラクションを様々なゲストに提供する。それぞれのＶＭで実行しているゲストソフトウェアは、ゲストＯＳ及び様々なゲストソフトウェアアプリケーションを含む。集合的に、ゲストＯＳ及びソフトウェアアプリケーションは、本明細書ではゲストソフトウェアと呼ばれる。ゲストソフトウェアは、ゲストソフトウェアが実行されているＶＭ内の（たとえばプロセッサレジスタ、メモリ及び入力／出力（Ｉ／Ｏ）装置といった）物理的なリソースにアクセスするのを期待する。ＶＭＸモニタ５０は、プラットフォームハードウェア内のリソースにわたる最終的な制御を保持する間、ゲストソフトウェアにより望まれるリソースへのアクセスを容易にする。
【００１９】
１実施の形態では、（図２に特に示されない）仮想マシン制御構造（ＶＭＣＳ）における１以上の専用フィールドに記憶されるデータを使用して、基準（制御伝達基準及び／又は故障基準）が定義される。たとえば、ＶＭＣＳは、ゲストソフトウェアの状態及びその動作を制御するための情報を記憶する。ＶＭＣＳは、メモリ２０にあり、プロセッサにより保持される。他のデータ構造（たとえばオンチップキャッシュ、ファイル、ルックアップテーブル等）は、ＶＭＣＳに記憶される情報を記憶するために使用されることが理解される。
【００２０】
１実施の形態では、現在のイベントがＶＭＸモニタ５０により処理される必要があると伝達基準が判定した場合、ＶＭＸモニタ５０に制御が移る。ＶＭＸモニタ５０は、そのイベントを処理し、ゲストソフトウェアに制御を移す。ＶＭＭ又はＶＭＸモニタからゲストソフトウェアへの制御の転送は、本明細書ではＶＭエントリと呼ばれ、ゲストソフトウェアからＶＭＭ又はＶＭＸモニタへの制御の転送は、本明細書ではＶＭエグジットと呼ばれる。
【００２１】
図２に示されるように、メモリ２０は、第一のゲストソフトウェア３０のためのページテーブルエントリ（ＰＴＥ）を使用してアクセスされる第一のページ３５、第二のゲストソフトウェア４０のためのＰＴＥを使用してアクセスされる第二のページ４５を含む。すなわち、第一のページ３５及び第二のページ４５は、第一のゲスト３０及び第二のゲスト４０のそれぞれに対応するコード及び／又はデータを含む。図２の実施の形態では、メモリ２０は、両方のコード及びデータを含む物理的なアドレス空間に対応し、ゲストソフトウェア３０及びゲストソフトウェア４０のＡＳＩＤに対応するアドレスは、物理アドレス空間を示すために使用されるリニアアドレス（又はその一部）に対応する。
【００２２】
更に図２を参照して、第一のゲスト３０は、第一のＡＳＩＤの値（すなわちＡＳＩＤ＝１）を有し、第一のアドレス空間に対応するＣＲ３値を更に含む。また、第二のゲスト４０は、第二のＡＳＩＤ値（すなわちＡＳＩＤ＝２）を有し、それに関連されるＣＲ３値を更に有する。
【００２３】
第一のソフトウェア３０及び第二のソフトウェア４０の実行を制御するＶＭＸモニタは、それに関連されるＡＳＩＤ値をも有する。たとえば、図２の実施の形態に示されるように、ＶＭＸモニタ５０は、それに関連される３つのＡＳＩＤ値を有する。
【００２４】
図２に示されるように、ＭＯＶ  ｔｏ  ＣＲ３命令は、矢印５５により示されるように、コンテクストの切り替えを生じさせるために実行される。さらに、ＶＭＸモニタ５０は、ＶＭＸモニタ５０に強制的に制御を戻すために現在実行しているゲストからエグジットさせる、参照符号６０で表される、ＶＭエグジットを行わせることでゲストソフトウェアの動作を制御する。同様に、ＶＭＸモニタ５０は、（図２における参照符号７０により表される）ＶＭエントリを実行することでゲストの始動又は再始動を行わせる。
【００２５】
様々な実施の形態では、ＶＭＸアーキテクチャエンハンスメントにより、ＶＭＸモニタは、ＡＳＩＤを使用することで、コンテクストの切り替え及びＶＭＸの遷移に関して、ＴＬＢ又は他の類似のプロセッサリソースをフラッシュするのを回避することができる。様々な実施の形態では、ソフトウェア又はハードウェアにおける明示的なＡＳＩＤ管理は、クロスアドレス空間の汚染（cross-address  space  pollution）を検出するために必要とされない。
【００２６】
様々な実施の形態では、ＭＯＶ  ｔｏ  ＣＲ３命令、ＶＭエグジット、又はＶＭエントリを使用して実行されるコンテクストの切り替えを含めて、図２に示されるようなイベントに応じて、ＴＬＢ及び他のプロセッサリソースのフラッシュが回避され、パフォーマンスが改善され、かかるコンテクストの切り替え及び他のアーキテクチャイベントに関するオーバヘッドが低減される。
【００２７】
所定の実施の形態では、システムメモリ２０内のページ又は他のキャッシュされたページは、全てのアドレス空間にわたりＶＭＸモニタ５０によりプロテクトされ、試みられたかかるページへの記憶は、かかる記憶を始動するゲストソフトウェアからのＶＭＸエグジットを引き起こす。かかるイベントに関して、ＶＭＸモニタ５０は、かかる記憶に対応するアドレスを全てのＴＬＢ及び他のプロセッサリソースにおいて無効にさせる。
【００２８】
様々な実施の形態では、プロセッサは、所定のイベント及びＶＭＸ遷移を異なって処理する。異なる命令及びイベントのかかる異なる実現は、プロセッサのマイクロコードで行われる。たとえば、ゲストにおけるＭＯＶ  ｔｏ  ＣＲ３命令、ＶＭエグジット又はＶＭエントリに関して、プロセッサは、新たなアドレス空間に一致する既存のＡＳＩＤを探す。かかる決定は、新たなアドレス空間のＡＳＩＤをプロセッサにより保持されるＡＳＩＤのリストに比較することで行われる。一致が存在する場合、プロセッサは、ＴＬＢエントリをフラッシュすることなしに、そのＡＳＩＤを現在のＡＳＩＤにする。さもなければ、１実施の形態では、ＬＲＵ  ＡＳＩＤに対応する全てのＴＬＢエントリはフラッシュされ、最も過去に使用されたＡＳＩＤのＡＳＩＤ値は、現在のＡＳＩＤにされる。前のアドレス空間からのＴＬＢエントリは、そのＡＳＩＤがフラッシュされない場合に保持される。
【００２９】
対照的に、指定されたページについてＴＬＢエントリを無効にする命令（たとえばＩＮＶＬＰＧ命令）は、異なって扱われる。たとえば、１実施の形態では、リニアアドレス空間は、かかる命令に応じて全てのＴＬＢで無効にされる。更に異なる動作は、他の命令について行われる。たとえば、１実施の形態では、ＣＲ４値において変化を検出しないＭＯＶ  ｔｏ  ＣＲ４命令は、それぞれのＡＳＩＤにおける全てのＴＬＢエントリを無効にする。
【００３０】
ここで図３を参照して、本発明の１実施の形態に係る方法のフローチャートが示されている。方法１００は、プロセッサ内で異なるコンテクスト間で切り替えるために使用される。図３に示されるように、第一及び第二のアドレス空間の間の切り替えが行われる（ブロック１１０）。図３に示されていないが、かかる切り替えの前に、第一のアドレス空間は、現在のアドレス空間の識別子に対応する制御レジスタ（又は他のメモリ）に保存される。他の実施の形態では、かかる保存は、他の時間で行われる場合がある。
【００３１】
アドレス空間の切り替えは、ＶＭエグジット又はＶＭエントリに対応するか、ＭＯＶ  ｔｏ  ＣＲ３命令又は別の係るイベントにより引き起こされる場合がある。つぎに、第二のアドレス空間がＡＳＩＤリストに存在するかが判定される（ダイアモンド１２０）。かかるリストは、異なるアクティブなアドレス空間、これに対応するリニアアドレス空間における位置、及び任意に他の情報を識別するため、プロセッサにより保持される。たとえば、ＡＳＩＤリストは、プロセッサにおけるスクラッチパッドである。
【００３２】
第二のアドレス空間がＡＳＩＤリストに存在する場合、制御はブロック１３０に移り、ここで、第一のアドレス空間は、第一のアドレス空間に対応するＴＬＢ内のエントリを含めて保持される。さらに、第二のＡＳＩＤは、第二のアドレス空間（すなわちダイアモンド１２０で検されたアドレス空間）がプロセッサ内の現在実行しているアドレス空間であることを示すため、（たとえば現在のＡＳＩＤレジスタ）（又は他のメモリロケーション）プロセッサの制御レジスタに記憶される（ブロック１３５）。
【００３３】
代わりにダイアモンド１２０で、第二のアドレス空間がＡＳＩＤリストに存在しないと判定された場合、つぎに、ＡＳＩＤリストがフルであるかが判定される（ダイアモンド１４０）。リストがフルでない場合、制御はブロック１４５に移り、ここで、第一のアドレス空間は、第一のアドレス空間に対応するＴＬＢ内のエントリを含めて保持される。さらに、第二のＡＳＩＤは、第二のアドレス空間（以下に説明される、ブロック１６０からのエンプティアドレス空間又はフリードアドレス空間）がプロセッサ内の現在実行しているアドレス空間であることを示すために、（たとえば、現在のＡＳＩＤレジスタ、又は他のメモリロケーション）プロセッサの制御レジスタに記憶される（ブロック１５０）。
【００３４】
ダイアモンド１４０で、代わりに、ＡＳＩＤリストがフルであることが判定され、ＡＳＩＤリストにおけるＬＲＵエントリに対応するＴＬＢ内のエントリがフラッシュされる（ダイアモンド１６０）。次いで、制御は、先に説明したように更なる処理のためにブロック１４５に移り、ここで、第二のＡＳＩＤは、ＬＲＵエントリに記憶される場合がある。これに応じて、第二のＡＳＩＤに関連されるＴＬＢエントリ及び他のリソースがイネーブルにされる。
【００３５】
図３の実施の形態では、ＴＬＢエントリをフラッシュするためのＬＲＵポリシーを使用するものとして示されているが、他の実施の形態では、ＡＳＩＤリストがフルであるときにフラッシュするための適切なアドレス空間を判定するために、他のポリシー又はメカニズムが使用されることを理解されたい。
【００３６】
所定の実施の形態では、アドレス空間の切り替えの原因に依存して、ＴＬＢ又は他のプロセッサリソース内の特定のエントリがソフトウェアを使用してフラッシュされる。たとえば、先に説明されたように、プロテクトされたページへの試みられた記憶によりＶＭエグジットが引き起こされた場合、プロテクトされた空間に対応するＴＬＢ内のアドレスがフラッシュされる。すなわち、ＶＭＸアーキテクチャの様々な実現では、ＶＭＸモニタは、それぞれのページングヒエラルキーをプロテクトする。可視化の環境では、ソフトウェアが使用され、ゲストにより命令されたとしてＴＬＢ又は他のリソースをフラッシュする。次いで、ゲストにより行われた所定のイベント（たとえば、ＭＯＶ  ｔｏ  ＣＲ３命令）は、可視化のソフトウェアが本明細書で記載されたようにフラッシュアクティビティを扱うためにリソースをフラッシュしない。したがって、ゲストでは、記憶の命令がＣＲ３ターゲット値におけるＣＲ３により使用されるＴＬＢエントリを変更する場合、ＶＭエグジットが行われる。
【００３７】
本発明の実施の形態に係るトランスルーセントなＡＳＩＤによれば、かかるＶＭエグジットの後、ソフトウェアは、たとえＴＬＢエントリがＶＭエグジットの時間でゲストにより使用中でなかったとしても、ＶＭエグジットを生じた記憶の命令に対応する全てのＴＬＢエントリをフラッシュする。かかる実施の形態では、ソフトウェアが個々のエントリをフラッシュするのを望む場合、ソフトウェアは、適切なアドレス空間でそのＴＬＢエントリに対応するリニアアドレスでＩＮＶＬＰＧ命令を実行する。かかるソフトウェアで発せられるＩＮＶＬＰＧについて、プロセッサは、それらのＡＳＩＤに関わらず、そのリニアアドレスに対応するＴＬＢエントリをフラッシュする。ＩＮＶＬＰＧ命令を使用して実現されるとして記載されたが、他の実施の形態では、他の命令又は動作は、かかるエントリをフラッシュする場合がある。
【００３８】
ここで図４を参照して、本発明の１実施の形態に係る方法のフローチャートが示されている。より詳細には、図４は、ＴＬＢ内の所定のエントリをフラッシュするための方法２００を示す。かかる方法は、ＶＭ環境で実行され、ＶＭエグジットに応じて始動される。図４で示されるように、本方法２００は、ＶＭエグジットの原因を判定することで開始される（ブロック２１０）。たとえば、１実施の形態では、ＶＭエグジットの前の最後の動作は、プロテクトされたメモリ空間への記憶又は他のメモリ動作がＶＭエグジットを引き起こしたかを判定するために分析される。勿論、ＶＭエグジットが生じた多くの他の理由が存在する。
【００３９】
次いで、ダイアモンド２２０で、記憶動作が（たとえば異なるアドレス空間に対応する）プロテクトされたＴＬＢエントリのようなプロテクトされたエントリを変更するために試みられたかが判定される。試みたと判定されなかった場合、ＶＭＸモニタの通常の実行が継続される（ブロック２３０）。かかる実行は、プログラム命令に依存して、多くの形式をとる。かかる実行の後、望まれる場合、制御はゲストに戻る。
【００４０】
代わりに、記憶がプロテクトされたエントリを変更するのを試みたと判定された場合、ＶＭＸモニタは、ゲストが有さないプロテクトされたロケーションへのアクセスを有するので、記憶動作を実行する（ブロック２３５）。次いで、記憶アドレスに対応する全てのＴＬＢエントリは、全てのＴＬＢ及び他のプロセッサリソースからフラッシュされる（ブロック２４０）。ＶＭエントリは、継続された実行のためにゲストに制御を戻す（ブロック２４５）。かかる実行は、たとえばゲストの次の命令で継続する。
【００４１】
更に他の実施の形態では、全てのＴＬＢ内の全てのエントリをフラッシュすることが望まれる場合がある。たとえば、ハイレベルのページングメカニズムが変更された場合、かかるフラッシュは、ＶＭＸモニタがもはやそれをプロテクトしないとき、ＴＬＢをクリアするか又はＴＬＢからアドレス空間を除くことが望まれる。１実施の形態では、ソフトウェアがアドレス空間について全体のＴＬＢをフラッシュすることを望む場合、ソフトウェアは、そこに既に記憶された正確に同じ値でＭＯＶ  ｔｏ  ＣＲ４を実行する。プロセッサがかかるＣＲ４  ｗｒｉｔｅを見たとき、どのＡＳＩＤがフラッシュされる必要があるかをソフトウェアが指定しないので、全てのＡＳＩＤについて全てのＴＬＢをフラッシュする。様々な実施の形態では、ＰＤＥ（又は高い）エントリが変化された場合、又は、ＣＲ３がＣＲ３ターゲット値から除かれ、モニタがそれをもはやプロテクトしない場合、ソフトウェアは、アドレス空間について全体のＴＬＢをフラッシュする場合がある。
【００４２】
ここで図５を参照して、本発明の実施の形態に係る別の方法のフローチャートが示されている。特に、本方法２５０は、全てのＡＳＩＤについて全てのＴＬＢをフラッシュするために使用される。図５に示されるように、かかる方法は、ＭＯＶ  ｔｏ  ＣＲ４命令を受信することで始まる（楕円２５５）。かかる命令の受信に応じて、プロセッサは、新たなＣＲ４の値がその前の値と同じであるかを判定する（ダイアモンド２６０）。新たなアドレス値が同じでない場合、通常のＣＲ４の動作が実行される（ブロック２７０）。かかる動作は、ＣＲ４における異なるビットの状態に基づいて変化する。たとえば、ビット状態に基づいて、ＴＬＢのようなプロセッサリソースがフラッシュされ、他の処理が行われる。たとえば、データを変えるＣＲ４の遷移は、少なくとも現在のＴＬＢにおけるエントリをフラッシュするための必要を引き起こす。さらに、かかるＣＲ４の遷移は、アドレス空間における変換を必要とする。かかるアドレス空間の変化は、図３に関して先に記載されたのと類似のやり方で実行される場合がある。
【００４３】
代わりに、新たな値が前の値と同じであると判定された場合、これは、ＶＭＸモニタ又は他のエンティティが全てのＴＬＢをフラッシュするのを望むことを示すフラグである。先に記載されたように、全てのＴＬＢをフラッシュするために様々な理由がある。これに応じて、ブロック２８０で、全てのＴＬＢは、全てのＡＳＩＤについてフラッシュされる。最後に、実行は、（たとえば同じ命令で）同じ（すなわちオリジナルの）アドレス空間で継続する（ブロック２９０）。
【００４４】
ＭＯＶ  ｔｏ  ＣＲ４命令に応じて実現されるように図５の実施の形態において記載されたが、他の実施の形態において、ＶＭＸモニタ又は他のエンティティが全てのＴＬＢをフラッシュするのを望むことを示すためのフラグとして、他の命令又は動作が使用される場合があることを理解されたい。さらに、この特定の実現により図５を参照して記載されたが、他の実施の形態では、予め決定された命令から得られる選択された値が、値が変化したかを判定するために分析される場合がある。値が変化していないと判定するため、所望のアクションが１以上のプロセッサリソースで行われる。
【００４５】
ここで図６を参照して、本発明の１実施の形態に係る代表的なコンピュータシステム４００のブロック図が示されている。図６に示されるように、コンピュータシステム４００は、プロセッサ４０１を含む。プロセッサ４０１は、１実施の形態では、メモリバスを介して共有されるメインメモリ４４０に結合される、メモリハブ４３０にフロントサイドバス４２０を通して結合される。図６に示されるように、プロセッサ４０１は、本発明の実施の形態に係るＴＬＢ４０３及びＡＳＩＤリスト４０５を含む場合がある。さらに、レベル２（Ｌ２）キャッシュ４０７がプロセッサ４０１に結合される。
【００４６】
また、メモリハブ４３０は、Ｉ／Ｏ拡張バス４５５及び周辺バス４５０に結合されるＩ／Ｏハブ４３５に（ハブリンクを介して）結合される。様々な実施の形態では、Ｉ／Ｏ拡張バス４５５は、他の装置のうちで、キーボード及びマウスのような各種Ｉ／Ｏ装置に結合される。周辺バス４５０は、フラッシュメモリ、アッドインカード等のようなメモリ装置である周辺装置４７０のような各種コンポーネントに結合される。記述はシステム４００の特定のコンポーネントを参照してなされるが、例示された実施の形態の様々な変更が可能である。
【００４７】
実施の形態は、コンピュータシステムが実施の形態を実行するのをプログラムするための命令を有する記憶媒体に記憶されたコンピュータプログラムで実現される。記憶媒体は、限定されるものではないが、フロプティカルディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）及び光磁気ディスクのようなディスクタイプ、リードオンリメモリ（ＲＯＭ）、ダイナミックＲＡＭ及びスタティックＲＡＭのようなランダムアクセスメモリ（ＲＡＭ）、イレーザブル・プログラマブル・リードオンリメモリ（ＥＰＲＯＭ）、エレクトリカリ・イレーザブル・プログラマブル・リードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリのような半導体デバイス、磁気又は光カード、若しくは、電気的な命令を記憶するために適したメディアのタイプを含んでいる。他の実施の形態は、プログラマブル制御装置により実行されるソフトウェアモジュールとして実現される。
【００４８】
ソフトウェアがプロセッサプロテクト及び無効なＴＬＢエントリに役立つため、様々な実施の形態では、ＴＬＢエントリは、（たとえばＭＯＶ  ｔｏ  ＣＲ３，ＶＭエグジット及びＶＭエントリといった）コンテクストの切り替えに関して保持される。したがって、様々な実施の形態では、覗きまわる（snoopy）ＴＬＢハードウェアが必要とされず、覗きまわるＴＬＢのキャパシティ又は他の制約が回避される。
【００４９】
他の実施の形態では、トランスルーセントなＡＳＩＤは、異なるアドレス空間にＩＤを明示的に割り当てないが、たとえそのＴＬＢが現在のアドレス空間により現在使用中ではないとしても、ページテーブルを変更した後にＴＬＢエントリをフラッシュするための特別のアクションをプロセッサが行うことを必要とする、アーキテクチャを含むページテーブルで使用される。
【００５０】
したがって、様々な実施の形態では、プロセッサは、クロスアドレス空間の汚染を検出するための専用のハードウェア、若しくは明示的なソフトウェア制御及びＡＳＩＤ割り当てなしに、ＡＳＩＤをサポートし、（たとえばコンテクストの切り替えに関して）ＴＬＢフラッシュを回避する。
【００５１】
本発明は制限された数の実施の形態に関して記載されたが、当業者であれば、これより様々な変更及び変形を理解されるであろう。特許請求の範囲は、本発明の真の精神及び範囲に含まれるとして全ての係る変更及び変形をカバーすることが意図される。
【符号の説明】
【００５２】
４００：コンピュータシステム
４０１：プロセッサ
４０７：キャッシュ
４２０：フロントサイドバス
４３０：メモリハブ
４３５：Ｉ／Ｏハブ
４４０：メインメモリ
４５０：周辺バス
４５５：Ｉ／Ｏ拡張バス
【図１】
2011008805.tif 000003
【図２】
2011008805.tif 000004
【図３】
2011008805.tif 000005
【図４】
2011008805.tif 000006
【図５】
2011008805.tif 000007
【図６】
2011008805.tif 000008