(57)【要約】  処理システムは、ハイパーバイザによって管理される、複数の仮想マシンを実装する。各仮想マシンは、１つ以上の対応するゲストオペレーティングシステム（ＯＳ）の実行のための環境を提供する。各ゲストＯＳ、ならびにハイパーバイザ自体は、対応する「ＷｏｒｌｄＩＤ」で識別される、関連アドレス空間を有する。さらに、各仮想マシンおよびハイパーバイザは、対応する「ＡＳＩＤ」で識別される、複数の下位レベルのアドレス空間を管理することができる。処理システムのアドレス変換ロジックは、現在のアドレス空間コンテキストのＷｏｒｌｄＩＤおよびＡＳＩＤを、本来の識別子よりも少ないビットを有する、対応するＷｏｒｌｄＩＤおよびＡＳＩＤ検索キーに変換する。得られたＷｏｒｌｄＩＤおよびＡＳＩＤの検索キーは、１つ以上のＴＬＢルックアップを実施して、ＷｏｒｌｄＩＤ／ＡＳＩＤの組み合わせによって表される特定のアドレス空間に関するアドレスマッピング情報を取得するために使用される。【選択図】図２
2013522775.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンを実装する１つ以上のプロセッサを備えるシステムにおいて、
前記複数の仮想マシンのうちの対応する仮想マシンに関連して実行されるオペレーティングシステムの第１の識別子を表す第１の検索キーを使用して、トランスレーションルックアサイドバッファ（ＴＬＢ）ルックアップを実施することを含み、
前記第１の検索キーが前記第１の識別子よりも少ないビットを有する、方法。
【請求項２】
前記オペレーティングシステムによって管理される仮想アドレス空間の第２の識別子を表す第２の検索キーをさらに使用して、前記ＴＬＢルックアップを実施することをさらに含み、
前記第２の検索キーが前記第２の識別子よりも少ないビットを有する、請求項１に記載の方法。
【請求項３】
複数のエントリを含み、各エントリが、対応する経路に関連し、仮想マシンによって実行されるオペレーティングシステムの識別子を記憶するように構成される、第１のテーブルに、前記第１の識別子に基づいてアクセスすることと、
前記第１の識別子を記憶する前記第１のテーブルの選択エントリの第１の経路に基づいて、前記第１の検索キーを判定することと、
をさらに含む、請求項２に記載の方法。
【請求項４】
その各エントリが、対応する経路を有し、対応するオペレーティングシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第２のテーブルの複数のインデックスのうちの選択インデックスを、前記第１の経路に基づいて判定し、前記第２の識別子に基づいて前記選択インデックスにアクセスすることと、
第２の識別子を記憶する前記選択インデックスの選択エントリの第２の経路に基づいて、前記第２の検索キーを判定することと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記第１の検索キーが、前記第１の経路によって判定され、前記第２の検索キーが、前記第２の経路によって判定される、請求項４に記載の方法。
【請求項６】
前記第１のテーブルの前記選択エントリに対する前記第１の識別子を記憶することと、
前記第２のテーブルの前記選択インデックスの前記エントリをフラッシュし、前記選択インデックスの前記選択エントリに対する前記第２の識別子を記憶することと、
をさらに含む、請求項４に記載の方法。
【請求項７】
前記ＴＬＢルックアップを実施することが、
前記第１の検索キーを有し、かつ前記第２の識別子または設定グローバルビットのうちの少なくとも１つを有する、前記ＴＬＢの選択エントリを識別するために、ＴＬＢにアクセスすることと、
前記ＴＬＢの前記選択エントリに記憶されたページ番号に基づいて、物理アドレスを生成することと、
を含む、請求項１に記載の方法。
【請求項８】
１組の命令を記憶するためのコンピュータ可読媒体であって、前記１組の命令が、請求項１に記載の方法を実装するために前記システムの設計を判定するように構成されるハードウェア記述言語（ＨＤＬ）命令を含む、コンピュータ可読媒体。
【請求項９】
複数の仮想マシンを実装する１つ以上のプロセッサを備えるシステムにおいて、
前記複数の仮想マシンのうちの選択仮想マシンに関連して実行されるオペレーティングシステムの第１の識別子を判定し、前記オペレーティングシステムによって管理される仮想アドレス空間の第２の識別子を判定することと、
複数のエントリを含み、各エントリが、対応する経路を有し、前記システムの対応する仮想マシンに関連するオペレーティングシステムの識別子を記憶するように構成される、第１のテーブルに、前記第１の識別子に基づいてアクセスすることと、
前記第１の識別子を記憶する前記第１のテーブルの選択エントリの第１の経路に基づいて、前記第１の検索キーを判定することと、
その各エントリが、対応する経路を有し、対応する仮想マシンのオペレーティングシシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第２のテーブルの複数のインデックスのうちの選択インデックスを、前記第１の経路に基づいて判定し、前記第２の識別子に基づいて、前記選択インデックスにアクセスすることと、
前記第２の識別子を記憶する前記選択インデックスの選択エントリの第２の経路に基づいて、前記第２の検索キーを判定することと、
を含む、方法。
【請求項１０】
ページオフセットを判定するために、前記第１の検索キーおよび前記第２の検索キーを使用して、トランスレーションルックアサイドバッファ（ＴＬＢ）ルックアップを実施することと、
前記ページオフセットおよび前記仮想アドレスに基づいて、物理アドレスを生成することと、
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記ＴＬＢルックアップを実施することが、
前記第１の検索キーを有し、かつ前記第２の識別子または設定グローバルビットのうちの少なくとも１つを有する、前記ＴＬＢの選択エントリを識別するために前記ＴＬＢにアクセスすることを含む、請求項１０に記載の方法。
【請求項１２】
前記第１の検索キーが、前記第１の識別子よりも少ないビットを有し、前記第２の検索キーが、前記第２の識別子よりも少ないビットを有する、請求項９に記載の方法。
【請求項１３】
１組の命令を記憶するためのコンピュータ可読媒体であって、前記１組の命令が、請求項９に記載の方法を実装するために前記システムの設計を判定するように構成されるハードウェア記述言語（ＨＤＬ）命令を含む、コンピュータ可読媒体。
【請求項１４】
処理システムであって、
トランスレーションルックアサイドバッファ（ＴＬＢ）と、
前記処理システムによって実装される複数の仮想マシンのうちの仮想マシンに関連して実行されるオペレーティングシステムの第１の識別子を表す第１の検索キーを使用して、ＴＬＢルックアップを実施するためのハードウェアコントローラであって、前記第１の検索キーが前記第１の識別子よりも少ないビットを有する、ハードウェアコントローラと、
を備える、処理システム。
【請求項１５】
前記ハードウェアコントローラがさらに、前記オペレーティングシステムによって管理される仮想アドレス空間の第２の識別子を表す第２の検索キーを使用して、前記ＴＬＢルックアップを実施するためのものであり、
前記第２の検索キーが前記第２の識別子よりも少ないビットを有する、請求項１４に記載の処理システム。
【請求項１６】
複数のエントリを含む第１のテーブルであって、各エントリが、対応する経路を有し、対応する仮想マシンによって実行されるオペレーティングシステムの識別子を記憶するように構成される、第１のテーブルをさらに備え、
前記ハードウェアコントローラが、前記第１の識別子を記憶する前記第１のテーブルの選択エントリの第１の経路に基づいて、前記第1の検索キーを判定するためのものである、請求項１５に記載の処理システム。
【請求項１７】
複数のインデックスを含む第２のテーブルであって、各インデックスが、前記第１のテーブルの対応するエントリに関連し、各インデックスが、複数のエントリを含み、前記第２のテーブルの各エントリが、対応する経路を有し、対応する仮想マシンのオペレーティングシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第２のテーブルをさらに備え、
前記ハードウェアコントローラが、前記第1の経路に基づいて前記複数のインデックスのうちの選択インデックスを判定し、前記第２の識別子を記憶する前記選択インデックスの選択エントリの第２の経路に基づいて前記第２の検索キーを判定するためのものである、請求項１５に記載の処理システム。
【請求項１８】
前記第１の検索キーが、前記第１の経路であり、前記第２の検索キーが、前記第２の経路である、請求項１７に記載の処理システム。
【請求項１９】
前記ハードウェアコントローラがさらに、
前記第１のテーブルの前記選択エントリに対する前記第１の識別子を記憶し、
前記選択インデックスの前記エントリをフラッシュし、
前記選択インデックスの前記選択エントリに対する前記第２の識別子を記憶するためのものである、請求項１７に記載の処理システム。
【請求項２０】
前記ハードウェアコントローラが、前記第１の検索キーを有し、かつ前記第２の識別子または設定グローバルビットのうちの少なくとも１つを有する、前記ＴＬＢの選択エントリを識別するために、前記ＴＬＢにアクセスすることによって、前記ＴＬＢルックアップを実施するためのものであり、
前記ハードウェアコントローラがさらに、前記ＴＬＢの前記選択エントリに記憶されたページ番号に基づいて、物理アドレスを生成するためのものである、請求項１４に記載の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、メモリ管理に関し、より具体的には、仮想メモリアドレスから物理メモリへのアドレス変換に関する。
【背景技術】
【０００２】
処理システムは、一般的に、仮想アドレス指定スキームを利用して、対応する仮想アドレス空間の中の仮想アドレスが、ページテーブルおよびトランスレーションルックアサイドバッファ（ＴＬＢ）の使用を通して、メモリの場所の物理的アドレスおよび入力／出力（ＩＯ）インターフェースにマッピングされるようにする。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
プロセッサの仮想化の出現により、処理システム内に実装される場合がある異なる仮想アドレス空間の数に起因して、また実装された仮想マシンの中で効果的隔離を提供したいという望みに起因して、この仮想アドレスから物理アドレスへのマッピングが複雑化している。処理システムは、対応する仮想アドレス空間を表す識別子を使用して、ＴＬＢタグ付けをサポートする場合がある。これらの識別子はしばしば、何十ものビットを有し、このサイズの検索を取り扱うために必要なＴＬＢヒットロジックは、概して、実装が極めて複雑である。したがって、従来の仮想化処理システムはしばしば、ソフトウェアの制御下でこれらのアドレスマッピングを維持し、実装するために必要とされる相当なオーバーヘッドを犠牲にして、ソフトウェアベースのアドレスマッピングを利用している。
【図面の簡単な説明】
【０００４】
本開示は、添付の図面を参照することによって、より理解が深められ、その多数の特徴および利点が当業者に明らかになるだろう。異なる図面中の同一参照記号の使用は、類似または同一の項目を示す。
【図１】本開示の少なくとも一実施形態による、ハードウェアベースのメモリマッピングを有する仮想化処理システムを示す模式図である。
【図２】本開示の少なくとも一実施形態による、比較的長いアドレス空間識別子から、比較的短い検索キーを生成するための検索キーテーブルの例示的実装を示す模式図である。
【図３】本開示の少なくとも一実施形態による、仮想化処理システムの中のアドレス変換のための例示的方法を示す流れ図である。
【図４】本開示の少なくとも一実施形態による、アドレス空間識別子に基づく検索キーを使用する、例示的ＴＬＢルックアップを示す模式図である。
【発明を実施するための形態】
【０００５】
図１〜図４は、仮想化処理環境における仮想アドレスから物理アドレスへの変換のための例示的技法を示す。少なくとも一実施形態において、処理システムは、ハイパーバイザ（仮想マシンマネージャ、すなわちＶＭＭとしても知られる）によって管理される複数の仮想マシンを実装する、１つ以上のプロセッサを有する。各仮想マシンは、１つ以上の仮想プロセッサのために安全かつ隔離されたハードウェアエミュレーション環境を提供し、それによって、各仮想プロセッサが対応するゲストオペレーティングシステム（ＯＳ）を実行する。各ゲストＯＳ／仮想プロセッサ、ならびにハイパーバイザ自体は、関連のアドレス空間を有する。さらに、各仮想マシンおよびハイパーバイザは、仮想マシンのゲストＯＳの制御下で実行された特定のソフトウェアアプリケーションに関連するアドレス空間等の、複数の下位レベルのアドレス空間を管理することができる。各ゲストＯＳは一般的に、本明細書では「ＷｏｒｌｄＩＤ」として称される、特定の識別子を使用して識別され、ゲストＯＳによって管理される下位レベルのアドレス空間は、本明細書では「アドレス空間識別子」または「ＡＳＩＤ」と称される、特定の識別子を使用して識別される。典型的に、ＷｏｒｌｄＩＤおよびＡＳＩＤは、長さが何十ものビットであり、そのため、ＴＬＢヒットロジックによって直接使用されるには大き過ぎる場合がある。したがって、少なくとも一実施形態において、以下に記載の処理システムのアドレス変換ロジックは、処理システムの現在の仮想アドレス空間コンテキストに関連するＷｏｒｌｄＩＤおよびＡＳＩＤを、本来の識別子よりも少ないビットを有し、このため、複雑度の低いＴＬＢヒットロジックを必要とする、対応するＷｏｒｌｄＩＤおよびＡＳＩＤ検索キーに変換する。得られたＷｏｒｌｄＩＤ検索キーおよびＡＳＩＤ検索キーはバッファされ、１つ以上のＴＬＢルックアップを実施して、ＷｏｒｌｄＩＤ／ＡＳＩＤの組み合わせによって表される特定のアドレス空間に関するアドレスマッピング情報を取得するために使用される。アドレスマッピング情報は、次いで、メモリアクセスリクエストに関連する仮想アドレスを、対応する物理アドレスに変換するために使用される。
【０００６】
図１は、本開示の少なくとも一実施形態による、ハードウェアベースの仮想アドレスから物理アドレスへのマッピングを実装する仮想化処理システム１００を示す。図示される例において、処理システム１００は、１つ以上のプロセッサ１０２と、メモリサブシステム１０４とを含む。プロセッサ１０２は、１つ以上のプロセッサコア１０６と、キャッシュサブシステム１０８と、メモリ管理ユニット（ＭＭＵ）１１０とを含む。メモリサブシステム１０４は、１つ以上のバス、クロスバースイッチ、またはこれらの組み合わせを介して、プロセッサコア１０６およびキャッシュサブシステム１０８に接続される。メモリサブシステム１０４は、システムメモリと、外部キャッシュと、入力／出力（Ｉ／Ｏ）デバイスと、処理システム１００の全アドレス空間内の１つ以上の物理アドレスが割り当てられた他のコンポーネントとを含むことができる。一実施形態において、プロセッサ１０２のコンポーネントのうちのいくつかまたは全ては、処理デバイスの電気および電子設計を生成するように統合される、プロセッサ１０２の機能性を定義する、１組のレジスタ転送レベル（ＲＴＬ）またはベリログ（Ｖｅｒｉｌｏｇ）命令に基づいて、設計することができる。
【０００７】
処理システム１００は、複数のゲストオペレーティングシステム（ＯＳ）の実装を制御するハイパーバイザ１１２（仮想マシンマネージャ、すなわちＶＭＭとしても知られる）を実装する仮想化ソフトウェアまたは仮想化ファームウェアの実行を通して、１つ以上のソフトウェアベースの仮想マシンを実装するために、仮想化をサポートするように構成される。ハイパーバイザ１１２は、各ゲストＯＳの動作と関係するアプリケーションの動作との安全な隔離を保証するために、ページテーブルの変更等、ある所定の動作をインターセプトし、エミュレートすることによって、プロセッサシステム１００の処理ハードウェア１１４に関する完全制御の状況を各ゲストＯＳに提供する。したがって、ゲストＯＳおよびゲストＯＳによって制御される任意の対応するアプリケーションの実行が、「仮想マシン」と称される。図１は、これによりハイパーバイザ１１２が、仮想マシン１１６、１１７、１１８、および１１９（それぞれ、ＶＭ１、ＶＭ２、ＶＭ３、およびＶＭ４とも称される）という、４つの仮想マシンを管理する例を示す。例示を簡便にするために、各仮想マシン１１６は、単一のＯＳをサポートするものとして図示される。仮想マシン１１６は、アプリケーション１２２および１２３（ＡＳ１およびＡＳ２）を含むゲストＯＳ１２１を実行し、仮想マシン１１７は、アプリケーション１２５（ＡＳ３）を含むゲストＯＳ１２４を実行し、仮想マシン１１８は、ゲストＯＳ１２６を実行し、仮想マシン１１９は、アプリケーション１２８および１２９（ＡＳ４およびＡＳ５）を含むゲストＯＳ１２７を実行する。他の実装において、各仮想マシンは、複数のゲストオペレーションシステムをサポートすることができる。
【０００８】
仮想化の一般的な目標は、オペレーティングシステムとそれらに関連するソフトウェアアプリケーションとの間にリソースを保証する安全な隔離を維持しながら、単一の処理デバイスが複数のオペレーティングシステムを稼動することを可能にすることである。この隔離を実装するために、ゲストＯＳがアクセスすることを許可されている特定のメモリ場所を制御するよう、異なるゲストオペレーティングシステム／仮想マシンに対して、異なる仮想アドレス空間が使用される。各ゲストＯＳは、メモリサブシステム１０４に対する独自の「世界」において動作し、このため、各ゲストＯＳには、本明細書では「ＷｏｒｌｄＩＤ」と称される、一意の識別子が割り当てられる。さらに、所与のＯＳ環境内でアプリケーションを隔離することはしばしば利点であり、このため、各ゲストＯＳは、ゲストＯＳまたはゲストＯＳによってサポートされるソフトウェアアプリケーションのある所定のカーネル動作等、ゲストＯＳによってサポートされる特定の機能に対して異なる仮想アドレス空間を割り当てる場合がある。例示のために、アプリケーション１２２および１２３の各々は、ゲストＯＳ１２１によって割り当てられた別々のアドレス空間の中で動作してもよく、または、ゲストＯＳ１２１が、アプリケーション１２２および１２３の両方に対して同じアドレス空間を実装してもよい。処理システム１００は、本明細書では「アドレス空間識別子」または「ＡＳＩＤ」と称される、一意の識別子を、ゲストＯＳによって管理される各仮想アドレス空間に関連付ける。このように、特定のＷｏｒｌｄＩＤおよび特定のＡＳＩＤの組み合わせは、対応するページテーブル、または１組のページテーブルを識別し、これが、特定のＷｏｒｌｄＩＤおよびＡＳＩＤに関連するアプリケーションまたはＯＳによって生成された仮想アドレスを、対応する物理アドレスに変換するために使用される。
【０００９】
例示を簡便にするために、これによってＭＭＵ１１０がこの仮想アドレスから物理アドレスへの変換を提供するように構成され、かつ別の方法で、異なる仮想マシン１１６〜１１９内で開始されたメモリアクセスリクエストを促進する実施形態が記載される。しかしながら、他の実施形態において、本明細書に記載されるアドレス変換技法は、処理システム１００の他のコンポーネントによって実装されてもよい。例えば、開示されるアドレス変換技法は、キャッシュサブシステム１０８のＴＬＢロジック１１１によって、または命令キャッシュ（図示せず）のＴＬＢロジックによって実装される場合がある。
【００１０】
一実施形態において、ＭＭＵ１１０は、１つ以上のページテーブル１３０と、トランスレーションルックアサイドバッファ（ＴＬＢ）１３２と、１組の検索キーテーブル１３４および１３６と、ハードウェアコントローラ１３８とを含む。各ページテーブル１３０は、特定の仮想アドレス空間の仮想アドレスと対応する物理アドレスとの間のマッピングを表す情報を記憶する。ＴＬＢ１３２は、処理システム１００によって最近使用された仮想アドレスから物理アドレスへのマッピングをキャッシュする。検索キーテーブル１３４および１３６は、以下に詳細を記載するように、仮想マシン１１６〜１１９において使用されたＷｏｒｌｄＩＤおよびＡＳＩＤから、ＴＬＢ１３２のＴＬＢヒットロジックのための検索キーを生成するために使用される。
【００１１】
ハードウェアコントローラ１３８は、メモリサブシステム１０４へのアクセスを管理するように動作する。仮想マシンが、メモリがマッピングされた場所にアクセスを試みると、ハイパーバイザ１１２は、リクエストされたメモリアクセス動作１４２を実行に移すために、ＭＭＵ１１０による処理のためのメモリアクセスリクエスト１４０を開始する。メモリアクセスリクエスト１４０は典型的に、問題のメモリ場所の仮想アドレスを含み、さらに、メモリアクセスを開始した仮想マシンのＷｏｒｌｄＩＤを含むか、またはこれに関連付けられる。さらに、メモリアクセスリクエスト１４０は、メモリアクセスを開始したアプリケーションまたは機能に関連するＡＳＩＤも含むか、またはこれに関連付けられる。一実施形態において、ｘ８６ベースのアーキテクチャの中に見られる制御レジスタＣＲ３は、所与のプロセッサコアに対する現在のＡＳＩＤを記憶するために使用され、このために、ＡＳＩＤは、例えば、制御レジスタＣＲ３の中に記憶されたビットの一部または全体を含むことができる。ＷｏｒｌｄＩＤ、またはＷｏｒｌｄＩＤとＡＳＩＤの組み合わせは、メモリアクセスリクエスト１４０に伴って供給される仮想アドレスに関連する特定の仮想アドレス空間を識別する。したがって、ハードウェアコントローラ１３８は、ＷｏｒｌｄＩＤおよびＡＳＩＤを使用して、仮想アドレスを対応する物理アドレスに変換するために使用されることになる、特定の仮想アドレスから物理アドレスへの変換を識別する。ハードウェアコントローラ１３８は、示されたアドレス変換を実施し、次いで、メモリサブシステム１０４が示されたメモリ場所にアクセスするよう命令するために、メモリアクセス動作１４２の一部として、得られた物理アドレスをメモリサブシステム１０４へ送信する。
【００１２】
記載のように、ページテーブル１３０の各々は、仮想アドレス空間の仮想アドレスと対応する物理アドレスとの間の特定のマッピングを提供するために、特定の仮想アドレス空間に対応する。ページテーブル１３０に直接アクセスする際に比較的高いレイテンシが存在するため、ハードウェアコントローラ１３８は、最近使用された仮想から物理へのマッピングをキャッシュするためにＴＬＢ１３２を利用する。メモリアクセスリクエスト１４０のために仮想アドレスから物理アドレスへの変換を実施する際、ハードウェアコントローラ１３８は、最初に、ＴＬＢ１３２を確認して、ＴＬＢ１３２がメモリアクセスリクエスト１４０のために必要な特定の仮想から物理へのマッピングを既に含んでいるか判定する。一実施形態において、ハードウェアコントローラ１３８は、ＴＬＢタグ付けおよびＴＬＢヒットロジックを使用して、対応する仮想アドレス空間のマッピング情報がＴＬＢ１３２のエントリ内に存在するか識別する。記載のように、メモリアクセスリクエスト１４０に伴って送信されたＷｏｒｌｄＩＤおよびＡＳＩＤは、対応する物理アドレスに変換されることになる、仮想アドレスに関連する一意の仮想アドレス空間を識別する。しかしながら、これらの値はしばしば、何十ものビットの長さであり、このために、ＴＬＢ１３２のタグ配列に対する検索キーとして直接使用された場合、相当に複雑なＴＬＢヒットロジックが必要になる。したがって、少なくとも一実施形態において、ハードウェアコントローラ１３８は、検索キーテーブル１３４および１３６を使用して、メモリアクセスリクエスト１４０に伴って送信されたＷｏｒｌｄＩＤおよびＡＳＩＤを、より小さい検索キーに変換し、これは、その後、ＴＬＢ１３２のＴＬＢヒットロジックによって使用される場合がある。一例示的実施形態において、検索キーテーブル１３４および１３６の使用を通して、ＷｏｒｌｄＩＤは、１６ビットの値から２ビットのＷｏｒｌｄＩＤ検索キーに変換することができ、ＡＳＩＤは、３６ビットの値から３ビットのＡＳＩＤ検索キーに変換することができる。
【００１３】
ＷｏｒｌｄＩＤおよびＡＳＩＤを、それぞれ対応するＷｏｒｌｄＩＤ検索キーおよびＡＳＩＤ検索キーに初めに変換した後、ハードウェアコントローラ１３８は、得られたＷｏｒｌｄＩＤおよびＡＳＩＤの検索キーをバッファし、ハイパーバイザ１１２とゲストＯＳとの間の実行の切り替え時等、またはあるアプリケーションの実行から別のアプリケーションの実行への切り替え時に制御レジスタＣＲ３の中のＡＳＩＤを更新することによって、ゲストＯＳがアプリケーションレベルのアドレス空間を切り替える時等、コンテキスト変化に起因して、ＷｏｒｌｄＩＤまたはＡＳＩＤのうちの１つ、あるいは両方に対する更新があるまで、これらのバッファされた検索キーをＴＬＢルックアップのために引き続き使用する。このように、ＷｏｒｌｄＩＤおよびＡＳＩＤをＷｏｒｌｄＩＤおよびＡＳＩＤの検索キーに変換するためにハードウェアコントローラ１３８によって利用されるマッピングロジックは、ＷｏｒｌｄＩＤまたはＡＳＩＤに対する更新につき１回しか実行する必要がない。
【００１４】
図２は、検索キーテーブル１３４および１３６の例示的実装を示す。検索キーテーブル１３４（本明細書では「ＷｏｒｌｄＩＤテーブル１３４」と称される）は、２Ｘ件のエントリを含む完全連想キャッシュまたは他のデータ構造を備え、Ｘは、得られたＷｏｒｌｄＩＤ検索キー２０１の中のビット数である。図示された例において、ＷｏｒｌｄＩＤテーブル１３４は、４（２２）エントリを有し、それによって、２ビットのＷｏｒｌｄＩＤ検索キー２０１の生成をもたらす。ＷｏｒｌｄＩＤテーブル１３４の各エントリは、対応する経路（例えば、図２の例の０〜３）に関連し、各エントリは、対応するＷｏｒｌｄＩＤを記憶するように構成されたＷｏｒｌｄＩＤフィールド２０２を含む。各エントリはさらに、対応するエントリが有効なエントリであるかどうかを示す有効ビットを記憶するための有効フィールド２０３等の様々なステータスフィールド、ならびに最も長く使用されていない（ＬＲＵ）または最も最近使用された（ＭＲＵ）情報を記憶するためのフィールド等を含むことができる。
【００１５】
検索キーテーブル１３６（本明細書では「ＡＳＩＤテーブル１３６」と称される）は、Ｘ個のインデックスを含む群連想キャッシュまたは他のデータ構造を備え、各インデックスがＷｏｒｌｄＩＤテーブル１３４の対応する経路に関連し、各インデックスは１組の２Ｙ件のエントリを備え、Ｙは、それによって得られるＡＳＩＤ検索キー２１１の中のビット数である。図示された例において、ＡＳＩＤテーブル１３６は、８（２３）エントリを有し、このため、３ビットのＡＳＩＤ検索キー２１１の生成をもたらす。ＡＳＩＤテーブル１３６の各エントリは、対応する経路（例えば、図２の例の０〜７）に関連し、各エントリは、対応するＡＳＩＤを記憶するように構成されたＡＳＩＤフィールド２０４を含む。各エントリはさらに、対応するエントリが有効なエントリであるかどうかを示す有効ビットを記憶するための有効フィールド２０５等の様々なステータスフィールド、ならびにＬＲＵまたはＭＲＵ情報を記憶するためのフィールド等を含むことができる。
【００１６】
一実施形態において、ＷｏｒｌｄＩＤ検索キー２０１およびＡＳＩＤ検索キー２１１の判定は、２段階のプロセスを含む。ＷｏｒｌｄＩＤに対応するＷｏｒｌｄＩＤ検索キー２０１を判定するために、ハードウェアコントローラ１３８は、ＷｏｒｌｄＩＤテーブル１３４を検索して、ＷｏｒｌｄＩＤを記憶する、一致するエントリが存在するかどうかを判定する。そのようなエントリがＷｏｒｌｄＩＤテーブル１３４の中で検出された場合、ＷｏｒｌｄＩＤ検索キー２０１は、検出されたエントリの経路に設定される。例として、ＷｏｒｌｄＩＤテーブル１３４の第３のエントリ（経路＝２）が一致するＷｏｒｌｄＩＤを記憶する場合、ＷｏｒｌｄＩＤ検索キー２０１は、第３のエントリ、すなわち、１０ｂ（２）の経路に設定されることになる。ＷｏｒｌｄＩＤ検索キー２０１を識別した後、ハードウェアコントローラ１３８は、ＷｏｒｌｄＩＤテーブル１３４の中の一致するエントリの経路を使用することによって、ＡＳＩＤに対応するＡＳＩＤ検索キー２１１を判定して、検索されることになるＡＳＩＤテーブル１３６の対応するインデックスを識別する。前述の例を使用すると、ＷｏｒｌｄＩＤテーブル１３４の一致するエントリの経路は、インデックス＝２であり、このため、ハードウェアコントローラ１３８は、ＡＳＩＤテーブル１３６の（インデックス０〜３のうちの）インデックス２を検索して、インデックス２の中のエントリ０〜７のうちのいずれかがメモリアクセスリクエストに関連するＡＳＩＤを記憶するかどうかを判定することになる。そのようなエントリがＡＳＩＤテーブル１３６の示されたインデックスの中で検出された場合、ＡＳＩＤ検索キー２１１は、エントリの経路に設定される。例として、ＡＳＩＤテーブル１３６の第４のエントリ（経路＝３）が一致するＡＳＩＤを記憶する場合、ＡＳＩＤ検索キー２１１は、０１１ｂ（３）に設定されることになる。
【００１７】
図３は、本開示の少なくとも一実施形態による、図２のＷｏｒｌｄＩＤテーブル１３４およびＡＳＩＤテーブル１３６を使用して、ＷｏｒｌｄＩＤおよびＡＳＩＤの検索キーを判定するための、ハードウェアコントローラ１３８の動作の例示的方法３００を示す。方法３００は、ブロック３０２で、アドレス空間コンテキストに対する更新に応答して開始する。この更新は、現在のＡＳＩＤ、現在のＷｏｒｌｄＩＤ、または両方の中の変化を含むことができる。例として、コンテキスト切り替えがハイパーバイザ１１２とゲストＯＳとの間、またはゲストＯＳの間で発生すると、ＷｏｒｌｄＩＤおよびＡＳＩＤは、新しいアドレス空間を反映するように更新される。同様に、現在実行されているゲストＯＳがアドレス空間を切り替えると（例えば、アプリケーション間の切り替え時等）、ＡＳＩＤが更新される。ｘ８６ベースのプロセッサアーキテクチャにおいて、制御レジスタＣＲ３はしばしば、現在のアドレス空間に関連する特定のページテーブルをポイントする、ページディレクトリベースレジスタ（ＰＤＢＲ）として働き、このため、制御レジスタＣＲ３の中に記憶されたビットのいくらかの部分または全体は、ＡＳＩＤとして使用することができる。したがって、使用中の現在のＡＳＩＤに対する更新は、制御レジスタＣＲ３の中に記憶された値に対する更新として検出することができる。
【００１８】
ブロック３０４で、ハードウェアコントローラ１３８は、ヒットロジックを採用して、ＷｏｒｌｄＩＤテーブル１３４で、ＷｏｒｌｄＩＤを記憶しているエントリを検索する。同じＷｏｒｌｄＩＤを記憶するエントリが全く検出されない場合、ブロック３０６で、ハードウェアコントローラ１３８は、メモリアクセスリクエストに関連するＷｏｒｌｄＩＤに対して、ＷｏｒｌｄＩＤテーブル１３４の中のエントリを割り当てる。エントリの割り当ては、未使用のエントリを割り当てること、または現在使用中のエントリを排除することを含むことができる。排除されるエントリは、例えば、最も長く使用されていないエントリとして選択することができる。ＷｏｒｌｄＩＤテーブル１３４の中の割り当てられたエントリは、次に、ブロック３０２で受信されたＷｏｒｌｄＩＤで投入され、適切なステータスフラグが設定される。ブロック３０８で、ＷｏｒｌｄＩＤ検索キーは、ブロック３０６で割り当てられた、ＷｏｒｌｄＩＤテーブル１３４の中のエントリの経路に設定される。ブロック３１０で、ＷｏｒｌｄＩＤテーブル１３４の割り当てられたエントリに対応するＡＳＩＤテーブル１３６のインデックスのエントリがフラッシュされ、インデックスのエントリが選択され、ブロック３０２で受信されたＡＳＩＤで投入される。
【００１９】
ブロック３０４に戻ると、ＷｏｒｌｄＩＤテーブル１３４の一致するエントリが検出された場合、ブロック３１２で、ハードウェアコントローラ１３８は、ＷｏｒｌｄＩＤキー２０１を一致するエントリの経路に設定する。ブロック３１４で、ハードウェアコントローラ１３８は、ＷｏｒｌｄＩＤテーブル１３４の一致するエントリに関連するＡＳＩＤテーブル１３６のインデックスを選択し、ブロック３１６で、ハードウェアコントローラ１３８は、ＡＳＩＤテーブル１３６の選択されたインデックスの１組のエントリで、ブロック３０２で受信されたＡＳＩＤを記憶する、一致するエントリを検索する。
【００２０】
選択された経路の一致するエントリが全く検出されない場合、ブロック３１８で、ハードウェアコントローラ１３８は、未使用のエントリを選択すること、または使用中のエントリを排除することのいずれかによって、ＡＳＩＤテーブル１３６の選択されたインデックスのエントリを割り当てて、ＡＳＩＤを記憶する。ブロック３２０で、ハードウェアコントローラ１３８は、ＡＳＩＤ検索キーを、ブロック３１８で割り当てられたエントリの経路に設定する。ブロック３２２で、ハードウェアコントローラ１３８は、ブロック３０２〜３２２のプロセスを経て判定されたＷｏｒｌｄＩＤおよびＡＳＩＤ検索キーに一致する、ＴＬＢ１３２のあらゆるエントリをフラッシュする。ブロック３１６に戻ると、選択された経路の一致するエントリが検出された場合、ブロック３２４で、ハードウェアコントローラ１３８は、ＡＳＩＤキー２１１を、一致するエントリの経路に設定する。
【００２１】
最新のＷｏｒｌｄＩＤおよびＡＳＩＤ検索キーを設定後、ブロック３２６で、ハードウェアコントローラ１３８は、ＷｏｒｌｄＩＤおよびＡＳＩＤの検索キーを利用して、ページウォークを通してページ変換情報でＴＬＢ１３２の対応するエントリを投入し、次のアドレス空間のコンテキスト変化まで、仮想メモリアドレスから物理メモリアドレス変換のためのＴＬＢルックアップを実施することができ、その時点で、更新されたＷｏｒｌｄＩＤ／ＡＳＩＤに対して、方法３００の次の反復が開始される。
【００２２】
図４は、本開示の少なくとも一実施形態による、ＷｏｒｌｄＩＤ検索キー２０１およびＡＳＩＤ検索キー２１１を使用する、ＴＬＢルックアップの例示的実装を示す。図示された例において、ＴＬＢ１３２は、複数のエントリを含むテーブルまたは他のデータ構造を備え、各エントリは、対応する仮想ページ番号を記憶するように構成された仮想ページ番号（ＶＰＮ）フィールド４０１と、物理ページ番号（ＰＰＮ）フィールド４０２とを有する。各エントリはさらに、対応するＷｏｒｌｄＩＤ検索キーを記憶するように構成されたＷｏｒｌｄＩＤタグフィールド４０３、対応するＡＳＩＤ検索キーを記憶するように構成されたＡＳＩＤタグフィールド４０４、および設定されると、関連するマッピングが対応する仮想マシンに対してグローバル（すなわち、仮想マシン内の全てのアドレス空間に対してグローバル）であることを示す、グローバルビットを記憶するように構成されたグローバルアドレスフィールド４０５に関連する。ＴＬＢルックアップを実施するために、ハードウェアコントローラ１３８は、ＴＬＢヒットロジックを採用して、ＴＬＢ１３２のエントリで、処理されているメモリアクセスリクエストの仮想メモリアドレスのＷｏｒｌｄＩＤ検索キー２０１およびＶＰＮに一致し、かつ、ＡＳＩＤ検索キーに一致するか、またはグローバルビット設定を有するかのいずれかである、エントリを検索する。ＴＬＢ１３２の中のエントリがこれらの検索条件の各々を満たす（すなわち、ＷｏｒｌｄＩＤ検索キーに一致すること、ＡＮＤ  ＶＰＮに一致すること、および（ＡＳＩＤ検索キーと一致すること、ＯＲグローバルビットが設定されること））場合、ハードウェアコントローラ１３８は、エントリのＰＰＮフィールド４０２の中に記憶された物理ページ番号（ＰＰＮ＿Ｘ）を使用して、メモリアクセスリクエストの仮想アドレスを対応する物理アドレスに変換する。この変換は、一般的に、物理アドレスを生成するように、仮想アドレスのいくつかの部分または全体から判定されたページオフセットに物理ページ番号を連結することによって、達成される。
【００２３】
本開示の別の態様は、実行時に上記の仮想アドレスから物理アドレスへの変換を実装するためのハードウェアの設計を促進するように適合される、１組の命令を表すデータを記憶するコンピュータ可読媒体を含む。このように、上記の技法を実装するデバイスは、例えば、ソフトウェア（例えば、コンピュータ可読プログラムコード）を記憶するように構成された、コンピュータ使用可能（例えば、可読）媒体の中に配置されたソフトウェアにおいて具現化される場合がある。プログラムコードは、本明細書に開示されるシステムおよび方法の加工を含む、本開示の実施形態を実施可能にさせる。例えば、これは、汎用プログラム言語（ＣまたはＣ＋＋等）、ベリログ、ベリログＡ、ＨＤＬ、ＶＨＤＬ、ＡｌｔｅｒａＨＤＬ（ＡＨＤＬ）等を含むハードウェア記述言語（ＨＤＬ）等、または他の利用可能なプログラミングおよびまたはスキームキャプチャツール（回路キャプチャツール等）の使用を通して実現することができる。プログラムコードは、半導体、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）を含む任意の周知のコンピュータ使用可能媒体の中に配置することができる。上記のシステムおよび技法によって実現される機能および／または提供される構造は、プログラムコードの中に具現化されるコア（ＧＰＵコア等）の中に表現することができ、集積回路の製造の一部としてハードウェアに変形されてもよいことが理解される。
【００２４】
本開示の他の実施形態、使用、および利点が、本明細書の検討および本明細書に開示される開示の実践から、当業者には明らかであろう。本明細書および図面は例示としてのみ考慮されるべきであり、したがって、本開示の範囲は、以下の請求項およびその均等物によってのみ制限されることが意図される。
【図１】
2013522775.tif 000003
【図２】
2013522775.tif 000004
【図３】
2013522775.tif 000005
【図４】
2013522775.tif 000006
【手続補正書】
【提出日】平成24年11月20日(2012.11.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の仮想マシンを実装する１つ以上のプロセッサを備えるシステムにおいて、
前記複数の仮想マシンのうちの対応する仮想マシンに関連して実行されるオペレーティングシステムの第１の識別子を表す第１の検索キーを使用して、トランスレーションルックアサイドバッファ（ＴＬＢ）ルックアップを実施することを含み、
前記第１の検索キーが前記第１の識別子よりも少ないビットを有する、方法。
【請求項２】
前記オペレーティングシステムによって管理される仮想アドレス空間の第２の識別子を表す第２の検索キーをさらに使用して、前記ＴＬＢルックアップを実施することをさらに含み、
前記第２の検索キーが前記第２の識別子よりも少ないビットを有する、請求項１に記載の方法。
【請求項３】
複数のエントリを含み、各エントリが、対応する経路に関連し、仮想マシンによって実行されるオペレーティングシステムの識別子を記憶するように構成される、第１のテーブルに、前記第１の識別子に基づいてアクセスすることと、
前記第１の識別子を記憶する前記第１のテーブルの選択エントリの第１の経路に基づいて、前記第１の検索キーを判定することと、
をさらに含む、請求項２に記載の方法。
【請求項４】
その各エントリが、対応する経路を有し、対応するオペレーティングシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第２のテーブルの複数のインデックスのうちの選択インデックスを、前記第１の経路に基づいて判定し、前記第２の識別子に基づいて前記選択インデックスにアクセスすることと、
第２の識別子を記憶する前記選択インデックスの選択エントリの第２の経路に基づいて、前記第２の検索キーを判定することと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記第１の検索キーが、前記第１の経路によって判定され、前記第２の検索キーが、前記第２の経路によって判定される、請求項４に記載の方法。
【請求項６】
前記第１のテーブルの前記選択エントリに対する前記第１の識別子を記憶することと、
前記第２のテーブルの前記選択インデックスの前記エントリをフラッシュし、前記選択インデックスの前記選択エントリに対する前記第２の識別子を記憶することと、
をさらに含む、請求項４に記載の方法。
【請求項７】
前記ＴＬＢルックアップを実施することが、
前記第１の検索キーを有し、かつ前記第２の識別子または設定グローバルビットのうちの少なくとも１つを有する、前記ＴＬＢの選択エントリを識別するために、ＴＬＢにアクセスすることと、
前記ＴＬＢの前記選択エントリに記憶されたページ番号に基づいて、物理アドレスを生成することと、
を含む、請求項１に記載の方法。
【請求項８】
複数の仮想マシンを実装する１つ以上のプロセッサを備えるシステムにおいて、
前記複数の仮想マシンのうちの選択仮想マシンに関連して実行されるオペレーティングシステムの第１の識別子を判定し、前記オペレーティングシステムによって管理される仮想アドレス空間の第２の識別子を判定することと、
複数のエントリを含み、各エントリが、対応する経路を有し、前記システムの対応する仮想マシンに関連するオペレーティングシステムの識別子を記憶するように構成される、第１のテーブルに、前記第１の識別子に基づいてアクセスすることと、
前記第１の識別子を記憶する前記第１のテーブルの選択エントリの第１の経路に基づいて、前記第１の検索キーを判定することと、
その各エントリが、対応する経路を有し、対応する仮想マシンのオペレーティングシシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第２のテーブルの複数のインデックスのうちの選択インデックスを、前記第１の経路に基づいて判定し、前記第２の識別子に基づいて、前記選択インデックスにアクセスすることと、
前記第２の識別子を記憶する前記選択インデックスの選択エントリの第２の経路に基づいて、前記第２の検索キーを判定することと、
を含む、方法。
【請求項９】
ページオフセットを判定するために、前記第１の検索キーおよび前記第２の検索キーを使用して、トランスレーションルックアサイドバッファ（ＴＬＢ）ルックアップを実施することと、
前記ページオフセットおよび前記仮想アドレスに基づいて、物理アドレスを生成することと、
をさらに含む、請求項８に記載の方法。
【請求項１０】
処理システムであって、
トランスレーションルックアサイドバッファ（ＴＬＢ）と、
前記処理システムによって実装される複数の仮想マシンのうちの仮想マシンに関連して実行されるオペレーティングシステムの第１の識別子を表す第１の検索キーを使用して、ＴＬＢルックアップを実施するためのハードウェアコントローラであって、前記第１の検索キーが前記第１の識別子よりも少ないビットを有する、ハードウェアコントローラと、
を備える、処理システム。
【請求項１１】
前記ハードウェアコントローラがさらに、前記オペレーティングシステムによって管理される仮想アドレス空間の第２の識別子を表す第２の検索キーを使用して、前記ＴＬＢルックアップを実施するためのものであり、
前記第２の検索キーが前記第２の識別子よりも少ないビットを有する、請求項１０に記載の処理システム。
【請求項１２】
複数のエントリを含む第１のテーブルであって、各エントリが、対応する経路を有し、対応する仮想マシンによって実行されるオペレーティングシステムの識別子を記憶するように構成される、第１のテーブルをさらに備え、
前記ハードウェアコントローラが、前記第１の識別子を記憶する前記第１のテーブルの選択エントリの第１の経路に基づいて、前記第1の検索キーを判定するためのものである、請求項１１に記載の処理システム。
【請求項１３】
複数のインデックスを含む第２のテーブルであって、各インデックスが、前記第１のテーブルの対応するエントリに関連し、各インデックスが、複数のエントリを含み、前記第２のテーブルの各エントリが、対応する経路を有し、対応する仮想マシンのオペレーティングシステムによって管理される仮想アドレス空間の識別子を記憶するように構成される、第２のテーブルをさらに備え、
前記ハードウェアコントローラが、前記第1の経路に基づいて前記複数のインデックスのうちの選択インデックスを判定し、前記第２の識別子を記憶する前記選択インデックスの選択エントリの第２の経路に基づいて前記第２の検索キーを判定するためのものである、請求項１１に記載の処理システム。
【請求項１４】
前記第１の検索キーが、前記第１の経路であり、前記第２の検索キーが、前記第２の経路である、請求項１３に記載の処理システム。
【請求項１５】
前記ハードウェアコントローラが、前記第１の検索キーを有し、かつ前記第２の識別子または設定グローバルビットのうちの少なくとも１つを有する、前記ＴＬＢの選択エントリを識別するために、前記ＴＬＢにアクセスすることによって、前記ＴＬＢルックアップを実施するためのものであり、
前記ハードウェアコントローラがさらに、前記ＴＬＢの前記選択エントリに記憶されたページ番号に基づいて、物理アドレスを生成するためのものである、請求項１０に記載の処理システム。
【国際調査報告】
2013522775.tif 000007
2013522775.tif 000008