(57)【要約】  データ処理装置２は、仮想アドレスＶＡから中間物理アドレスＩＰＡまでの２ステージアドレス変換を管理し、中間物理アドレスＩＰＡから物理アドレスＰＡへの２ステージアドレス変換を管理するメモリ管理回路１８を含む。第１ステージの変換は、第２ステージの変換を行うための第２ステージの変換データ（２４）を管理するハイパーバイザプログラムによって提供される仮想マシン実行環境内で実行される仮想マシンプログラムによって制御される第１ステージの変換データ（２２）を用いて行われる。メモリ領域が、所与の仮想マシンにアクセス可能であるがハイパーバイザプログラムにアクセスできないデバイス領域としてもアクセス可能な仮想マシン専用領域として指定された場合、メモリ管理回路（１８）は、（すなわち、中間物理アドレスは、第２ステージの変換によって変更されない可能性がある）。領域が仮想マシンのプライベート領域でもデバイス領域でもない場合、メモリ管理回路（１８）は非プライベートなデバイス管理を実行する。
2019507420.tif 000002
【特許請求の範囲】
【請求項１】
データ処理をする装置において、
ハイパーバイザプログラムを実行して仮想マシン実行環境を提供し、前記仮想マシン実行環境を使用して仮想マシンプログラムを実行する処理回路と、
前記仮想アドレスから中間物理アドレスへの変換を指定する第１ステージ変換データと、前記中間物理アドレスから前記物理アドレスへの変換を指定する第２ステージ変換データとを使用して、前記仮想マシンプログラムによって生成された仮想アドレスのメモリへの変換を管理するメモリ管理回路と、
前記メモリ管理回路は、前記メモリへのアクセスを制御して、前記仮想マシンプログラムにアクセス可能であり、少なくとも前記ハイパーバイザプログラムにアクセスできないとマークされた前記メモリ内の１つ以上の仮想マシンプライベート領域を提供し、
前記第１ステージ変換データは、前記メモリのそれぞれの領域を１つまたは複数のデバイス領域の１つまたは１つまたは複数の非デバイス領域の１つとしてマークするための属性データを含み、
前記仮想マシンプログラムによるメモリアクセス要求が仮想マシンのプライベート領域とデバイス領域の両方である前記メモリの対象領域である場合、前記メモリ管理回路は、前記第２ステージの変換データに基づいて実行される前記変換の管理を変更するプライベートデバイス領域管理を提供する、装置。
【請求項２】
前記プライベートデバイス領域管理は、前記第２ステージ変換データが前記メモリアクセスの前記中間物理アドレスを、前記中間物理アドレスと一致する前記メモリアクセスの物理アドレスに変換するかどうかを決定することを含む請求項１に記載の装置。
【請求項３】
前記物理アドレスと前記中間物理アドレスが同一である場合、前記物理アドレスは前記中間物理アドレスと一致する請求項２に記載の装置。
【請求項４】
前記中間物理アドレスと一致しない前記メモリアクセスの物理アドレスへの前記メモリアクセスの前記中間物理アドレスが前記仮想マシンプログラムに障害指示を返す、請求項２および３のいずれか一項に記載の装置。
【請求項５】
前記障害指示は、変換障害指示である請求項４に記載の装置。
【請求項６】
前記メモリアクセスの物理アドレスへの前記メモリアクセスの前記中間物理アドレスが前記中間物理アドレスと不一致である場合、前記メモリ管理ユニットは、前記ハイパーバイザプログラムに障害表示を返す、請求項４または請求項５に記載の装置。
【請求項７】
前記プライベートデバイス領域管理は、変換データがないことに応答して、前記中間物理アドレスを前記第２ステージ変換データ内の前記物理アドレスに変換して前記ハイパーバイザに障害表示を送信することを含む、請求項１に記載の装置。前記仮想マシンプログラムへの障害指示を含む請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記ハイパーバイザプログラムに送信された前記障害インジケーションは、前記仮想マシンプログラムの実行から前記ハイパーバイザプログラムによる例外処理への切り替えをトリガし、前記ハイパーバイザプログラムは前記仮想マシンプログラムの実行を再開し、前記仮想マシンプログラムに送信された前記障害インジケーションは、前記仮想マシンプログラムによる例外処理をトリガする請求項７に記載の装置。
【請求項９】
前記第２ステージの変換データに基づいて実行される前記仮想マシンプライベート領域以外の領域およびデバイス領域以外の前記メモリの前記ターゲット領域が領域管理を提供する場合には、前記プライベートデバイス領域管理とは異なる、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記非プライベートデバイス管理は、前記メモリ管理回路が前記中間物理アドレスを前記中間物理アドレスとは異なる物理アドレスに変換するために前記第２ステージ変換データを使用することを可能にすることを含む請求項９に記載の装置。
【請求項１１】
前記非プライベートデバイス管理は、変換データの不在に応答して、前記仮想マシンプログラムに障害指示を送信せずに、前記ハイパーバイザプログラムに障害指示を送信することによって、前記中間物理アドレスを前記第２ステージ変換データ内の前記物理アドレスに変換することを含む請求項９または１０に記載の装置。
【請求項１２】
メモリマップされたハードウェアデバイスが、前記第１ステージ変換データによって前記デバイス領域にマッピングされる、請求項１から１１のいずれか一項に記載の装置。
【請求項１３】
前記メモリマップされたデバイスは、入出力メモリマップされたデバイス、リアルタイムクロックデバイス、乱数発生器、システムセキュリティステータスレジスタの１つである、請求項１２に記載の装置。
【請求項１４】
汎用メモリが前記第１ステージ変換データによって前記非デバイス領域にマッピングされる、請求項１から１３のいずれか一項に記載の装置。
【請求項１５】
前記第１ステージの変換データが前記プライベート領域内に格納される、請求項１から１４のいずれか一項に記載の装置。
【請求項１６】
前記第１ステージ変換データは、前記メモリの前記１つ以上の領域の前記１つ以上の仮想マシンプライベート領域の１つとしてのマーキングを可能にする属性データを含む、請求項１から１５のいずれか一項に記載の装置。
【請求項１７】
前記第２ステージの変換データは、前記仮想マシンプログラムにアクセスできない前記メモリの領域内に格納される請求項１から１６のいずれか一項に記載の装置。
【請求項１８】
前記処理回路が、各々が独立した第１ステージの変換データをそれぞれ有する１つ以上のさらなる仮想マシンプログラムを実行する、請求項１から１７のいずれか一項に記載の装置。
【請求項１９】
前記１つまたは複数の仮想マシンプライベート領域は、前記１つまたは複数のさらなる仮想マシンプログラムのいずれにもアクセスできない、請求項１８に記載の装置。
【請求項２０】
データ処理装置であって、
ハイパーバイザプログラムを実行して仮想マシン実行環境を提供し、前記仮想マシン実行環境を使用して仮想マシンプログラムを実行する処理手段と、
前記仮想アドレスから中間物理アドレスへの変換を指定する第１ステージの変換データと、前記中間物理アドレスから前記物理アドレスへの変換を指定する第２ステージの変換データとを用いて、前記仮想マシンプログラムによって生成された仮想アドレスのメモリへの変換を管理するメモリ管理手段と、
前記メモリ管理手段は、前記メモリへのアクセスを制御して、前記仮想マシンプログラムにアクセス可能であり、少なくとも前記ハイパーバイザプログラムがアクセスできないとマークされた前記メモリ内の１つ以上の仮想マシンプライベート領域を提供し、
前記第１ステージ変換データは、前記メモリのそれぞれの領域を１つまたは複数のデバイス領域の１つまたは１つまたは複数の非デバイス領域の１つとしてマークするための属性データを含み、
前記仮想マシンプログラムによるメモリアクセス要求が、前記仮想マシンプライベート領域とデバイス領域の両方である前記メモリの対象領域である場合、前記メモリ管理手段は、前記第２ステージの変換データに基づいて実行される前記変換の管理を変更するプライベートデバイス領域管理を提供する、装置。
【請求項２１】
データを処理する方法であって、
ハイパーバイザプログラムを実行して仮想マシン実行環境を提供するステップと、
前記仮想マシン実行環境を用いて仮想マシンプログラムを実行するステップと、
前記仮想アドレスから中間物理アドレスへの変換を指定する第１ステージ変換データと、前記中間物理アドレスからの変換を指定する第２ステージ変換データとを使用して、前記仮想マシンプログラムによって生成された仮想アドレスのメモリへの変換を管理するステップと、前記物理アドレスに送信するステップと、
前記メモリへのアクセスを制御して、前記仮想マシンプログラムにアクセス可能であり、少なくとも前記ハイパーバイザプログラムにアクセスできないとマークされた、前記メモリ内の１つ以上の仮想マシンプライベート領域を提供するステップと、
を含み、
前記第１ステージ変換データは、前記メモリのそれぞれの領域を１つまたは複数のデバイス領域の１つまたは１つまたは複数の非デバイス領域の１つとしてマークするための属性データを含み、前記仮想マシンプログラムによるメモリアクセス要求が、仮想マシンのプライベート領域とデバイス領域の両方である前記メモリの対象領域である場合に、前記第２ステージの変換データに応じて実行される前記トランスレーションの管理を変更して、デバイス領域管理を提供する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より詳細には、本開示は、仮想アドレスのデータ処理システム内の物理アドレスへの変換の管理に関する。
【背景技術】
【０００２】
ハイパーバイザプログラムによって管理される仮想マシン実行環境を提供し、仮想マシンプログラムによって生成された仮想アドレスをメモリの物理アドレスに変換するデータ処理システムを提供することが知られている。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の少なくともいくつかの実施形態は、データを処理するための装置を提供し、
ハイパーバイザプログラムを実行して仮想マシン実行環境を提供し、前記仮想マシン実行環境を使用して仮想マシンプログラムを実行する処理回路と、
前記仮想アドレスから中間物理アドレスへの変換を指定する第１ステージ変換データと、前記第１ステージ変換データの変換を指定する第２ステージ変換データとを用いて、前記仮想マシンプログラムによって生成された仮想アドレスのメモリへの変換を管理するメモリ管理回路と、前記中間物理アドレスを前記物理アドレスに変換し、
前記メモリ管理回路は、前記メモリへのアクセスを制御して、前記仮想マシンプログラムにアクセス可能であり、少なくとも前記ハイパーバイザプログラムがアクセスできないとマークされた前記メモリ内の１つ以上の仮想マシン専用領域を提供し、
前記第１ステージ変換データは、前記メモリのそれぞれの領域を１つまたは複数のデバイス領域の１つまたは１つまたは複数の非デバイス領域の１つとしてマークするための属性データを含み、前記仮想マシンプログラムによるメモリアクセス要求が仮想マシンのプライベート領域とデバイス領域の両方である前記メモリの対象領域である場合、前記メモリ管理回路は、前記第２ステージの変換データに基づいて実行される前記変換の管理を変更するプライベートデバイス領域管理を提供する。
【０００４】
本開示の少なくともいくつかの実施形態は、データを処理するための装置を提供し、
ハイパーバイザプログラムを実行して仮想マシン実行環境を提供し、前記仮想マシン実行環境を用いて仮想マシンプログラムを実行する処理手段と、前記仮想アドレスから中間物理アドレスへの変換を指定する第１ステージの変換データと、前記中間物理アドレスから前記物理アドレスへの変換を指定する第２ステージの変換データとを用いて、前記仮想マシンプログラムによって生成された仮想アドレスのメモリへの変換を管理するメモリ管理手段と、
前記メモリ管理手段は、前記メモリへのアクセスを制御して、前記仮想マシンプログラムにアクセス可能であり、少なくとも前記ハイパーバイザプログラムにアクセスできないとマークされた前記メモリ内の１つ以上の仮想マシンプライベート領域を提供し、
前記第１ステージ変換データは、前記メモリのそれぞれの領域を１つまたは複数のデバイス領域の１つまたは１つまたは複数の非デバイス領域の１つとしてマークするための属性データを含み、前記仮想マシンプログラムによるメモリアクセス要求が、前記仮想マシンプライベート領域とデバイス領域の両方である前記メモリの対象領域である場合、前記メモリ管理手段は、前記第２ステージの変換データに基づいて実行される前記変換の管理を変更するプライベートデバイス領域管理を提供する。
【０００５】
本開示の少なくともいくつかの実施形態は、データを処理する方法であって、
ハイパーバイザプログラムを実行して仮想マシン実行環境を提供するステップと、
前記仮想マシン実行環境を用いて仮想マシンプログラムを実行するステップと、前記仮想アドレスから中間物理アドレスへの変換を指定する第１ステージ変換データと、前記中間物理アドレスからの変換を指定する第２ステージ変換データとを使用して、前記仮想マシンプログラムによって生成された仮想アドレスのメモリへの変換を管理するステップと、前記物理アドレスに送信するステップと、
前記メモリへのアクセスを制御して、前記仮想マシンプログラムにアクセス可能であり、少なくとも前記ハイパーバイザプログラムがアクセスできないとマークされた、前記メモリ内の１つ以上の仮想マシン専用領域を提供するステップと、
前記第１ステージ変換データは、前記メモリのそれぞれの領域を１つまたは複数のデバイス領域の１つまたは１つまたは複数の非デバイス領域の１つとしてマークするための属性データを含み、前記仮想マシンプログラムによるメモリアクセス要求が、仮想マシンのプライベート領域とデバイス領域の両方である前記メモリの対象領域である場合に、前記第２ステージの変換データに応じて実行される前記トランスレーションの管理を変更して、デバイス領域管理を提供する。例示的な実施形態を、添付の図面を参照して、単なる例として以下に説明する。
【図面の簡単な説明】
【０００６】
【図１】仮想マシンプログラムに仮想マシン実行環境を提供するハイパーバイザプログラムの実行をサポートするデータ処理システムを概略的に示す図である。
【図２】図２は、第１ステージの変換データと第２ステージの変換データを用いて仮想アドレスから物理アドレスへの変換を管理するメモリ管理回路を概略的に示す。
【図３】図３は、第１ステージの変換データ入力を概略的に示す。
【図４】仮想マシン実行環境内で実行される複数のプログラムにそれぞれの仮想マシン実行環境を提供するハイパーバイザプログラムを概略的に示す図である。
【図５】図２のメモリ管理回路の動作を概略的に示すフロー図である。
【発明を実施するための形態】
【０００７】
図１は、プロセッサコア４およびメモリ６を含むデータ処理システム２を概略的に示す。プロセッサコア４は、命令パイプライン１２からデコーダ１０によってデコードされたプログラム命令を実行するための処理回路８を含み、命令パイプライン１２にはフェッチユニット１４によってプログラム命令がフェッチされる。処理回路８は、ハイパーバイザプログラムを実行して、それぞれのプログラムをそれらの仮想マシン実行環境（以下、仮想マシンプログラム）で実行するための１つ以上の仮想マシン実行環境を提供する。ロード／ストアユニット１６は、処理回路８によって実行されるプログラム命令によって指定されたメモリ６へのメモリアクセス動作を実行する。メモリ管理回路１８は、ロード／ストアユニット１６によって実行されるメモリアクセス動作に関してメモリ管理動作を実行する動きをする。メモリ管理回路１８によって実行されるメモリ管理動作は、仮想マシンプログラムによって生成される仮想アドレス（ＶＡ：Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ）とメモリ６内の記憶場所をアドレス指定するために使用される物理アドレス（ＰＡ：Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）との間の変換を管理することを含む。
【０００８】
メモリ管理回路１８はまた、メモリ６内のメモリアドレス空間の特定の領域（ページ）が読み出しのみ、書き込み専用、読み出し／書き込み、キャッシュ可能、バッファ可能などの機能を定義する属性を使用してアクセスを管理することもできる。
【０００９】
メモリ６は、汎用メモリ領域３０およびデバイスメモリ領域３を含むメモリアドレス空間を提供する。汎用メモリ領域２０は、典型的には、ハイパーバイザプログラム、仮想マシンプログラム（例えば、ハイパーバイザプログラムによって提供される仮想マシン実行環境で動作するオペレーティングシステムおよびアプリケーションプログラム）、操作のためのデータ、および第１ステージ変換データ２２および第２ステージ変換データ２４などのメモリ管理データを含む。図１の実施形態では、汎用メモリ領域２０の異なる部分は、仮想マシンプライベート領域２６、共有領域２８またはハイパーバイザ領域３０として提供される。デバイスメモリ領域２３は、リアルタイムクロックデバイス、乱数発生器、システムセキュリティステータスレジスタ、および様々なメモリマップ入出力デバイス（例えば、ＵＡＲＴ）など、メモリマップハードウェアデバイス専用のメモリアドレスを含む。
【００１０】
メモリ管理回路１８は、第１ステージの変換データ２２および第２ステージの変換データ２４を使用して、ハイパーバイザ領域３０がハイパーバイザプログラムにアクセスできるようにメモリ６のメモリアドレス空間内の様々な領域へのアクセスを管理するが、通常、より低いレベルの特権（より低い例外レベル状態）を有するプログラムにアクセス可能である。仮想マシンプライベート領域２６は、第１ステージ変換データ２２および第２ステージ変換データ２４を使用して、対応する仮想マシンプログラムにアクセス可能であるが、ハイパーバイザプログラムにはアクセスできないように、メモリ管理回路１８によって管理される。ハイパーバイザプログラムは、より高いレベルの特権（より高い例外レベル、通常はより低いレベルの特権のプログラムによって使用されるメモリ領域よりもアクセス許可の権利を有すると予想される）を有する。共有領域２８は、第１ステージ変換データ２２および第２ステージ変換データ２４を使用して、ハイパーバイザプログラムおよび仮想マシンプログラムの両方にアクセス可能なメモリ管理回路１８によって管理される。
【００１１】
デバイスメモリ領域２３は、メモリマップされたハードウェアデバイスを提供する。デバイスメモリ領域２３の少なくとも一部へのアクセスは、第１ステージ変換データ２２および第２ステージ変換データ２４によって仮想マシンプライベート領域に制御される。したがって、メモリ６のメモリアドレス空間内の所与のメモリマップデバイスは、デバイスメモリ領域および仮想マシンプライベート領域の両方であるそのメモリアドレス空間内のアドレスに対応することができる。仮想マシンプライベート領域内のメモリマップデバイスは、第１ステージ変換データおよび第２ステージ変換データ２４の制御下でメモリ管理回路１８によって管理されるメモリアクセスを有し、アクセスは対応する仮想マシンプログラムに提供されるが、ハイパーバイザプログラムなどの他のプログラムには提供されません。
【００１２】
ハイパーバイザプログラムによって提供される仮想化のサポートを容易にするために、メモリ管理回路１８は、第１ステージ変換データ２２に応答して、仮想マシンプログラムによって生成された仮想アドレス（ＶＡ）を中間物理アドレスＩＰＡ（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）に変換する生成された仮想アドレスの物理アドレスが何であるべきかについて、少なくとも（オペレーティングシステムレベルでは）仮想マシンプログラムのビューに表示される。
【００１３】
メモリ管理回路１８は、第２ステージ変換データ２４を使用して、ロード／ストアユニット１６によってメモリ６に印加される物理アドレスＰＡに対する中間物理アドレスＩＰＡの第２ステージ変換を実行する。このようにして、ハイパーバイザプログラムは、仮想マシンプログラムによって生成された中間物理アドレスＩＰＡをメモリ６に適用される物理アドレスＰＡに再マッピングすることができ、中間物理アドレスＩＰＡと異なることができる。第２ステージの変換データ２４は、ハイパーバイザプログラムにアクセス可能であるが、仮想マシンプログラムにアクセスできないハイパーバイザメモリ領域３０内に格納される。第１ステージの変換データ２２は、仮想マシンプログラムにアクセス可能であるが、ハイパーバイザプログラムにアクセスできない仮想マシン専用領域２６内に格納される。
【００１４】
第２ステージの変換データ２４が中間物理アドレスＩＰＡを汎用メモリ２０用の異なる物理アドレスＰＡに変換することが許可されている場合、これは望ましいことであり、改善された動作を容易にすることができるが、これはデバイスメモリ２３に関しては当てはまらない。特に、仮想マシンプライベート領域２６が仮想マシンプログラムにアクセス可能であるがハイパーバイザプログラムにアクセスできないシステムとの関連では、第２ステージ変換データ２４を許可することは望ましくない仮想マシンプログラムによって生成された中間物理アドレスＩＰＡを、仮想マシンプログラムによって意図されたメモリマップされたハードウェアデバイスに対応しない異なる物理アドレスＰＡに変更することができる。仮想マシンプログラムによって生成された仮想アドレスＶＡの仮想マシン専用領域およびメモリアドレス空間内のデバイス領域に対応するアドレスへの適切な変換を支援するために、メモリ管理回路１８は、そのようなアクセスおよびプライベートデバイス領域管理をなすために使用されてもよく、当該プライベートデバイス領域管理は、（ターゲットアドレスを含むメモリのターゲット領域が仮想マシンのプライベート領域とデバイス領域の両方でない場合に適用される）非プライベートデバイス領域管理とは異なる。
【００１５】
プライベートデバイス領域管理は、様々な異なる形態をとることができ、第２ステージの変換データが、作成されるべきメモリアクセスの中間物理アドレスＩＰＡを、中間物理アドレスＩＰＡに（直接的または間接的に）一致しない物理アドレスＩＰＡに変換するために使用されたかを判断することを含めてもよい。仮想マシンのプライベート領域およびデバイス領域の両方であるターゲット領域に関してメモリ管理回路１８によって使用されるプライベートデバイス領域管理によって実施され得るマッチングの一形式は、中間物理アドレスＩＰＡが同一でなければならないということであり、すなわち第２ステージ変換データ２４が中間物理アドレスを異なる形式に変換しないことを、物理アドレスＰＡに変換する。
【００１６】
プライベートデバイス領域管理を適用するメモリ管理回路１８が、生成された物理アドレスＰＡが中間物理アドレスＩＰＡと一致しないことを識別した場合、メモリ管理ユニットは、変換障害表示などの障害表示を仮想マシンプログラムに返す。したがって、仮想マシンプログラムは、仮想アドレスＶＡとメモリマップされたデバイスの中間物理アドレスＩＰＡとの間のそのマッピングをリダイレクトする不適切な試みに警告することができる。仮想マシンプログラムは、例えば、そのセキュリティが侵害されないようにその実行をシャットダウンすることによって、そのような不適切なマッピングの試みに応答することができる。
【００１７】
いくつかの実施形態では、メモリ管理回路１８は、中間物理アドレスＩＰＡが物理アドレスＰＡと一致しないことを検出したときに、ハイパーバイザプログラムに障害表示（変換障害など）を返すように機能し、仮想マシンのプライベート領域とデバイス領域の両方に存在する（すなわち、メモリ管理回路１８によるプライベートデバイス領域管理の対象となる）。
【００１８】
プライベートデバイス領域管理によるアドレス管理中に発生し得る別の問題は、中間物理アドレスＩＰＡを物理アドレスＰＡに変換するための第２ステージ変換データ内の変換データがないことである（すなわち、仮想マシンのプライベート領域とデバイス領域の両方であるメモリ領域に関して、中間物理アドレスＩＰＡと物理アドレスＰＡとの１対１マッピング）。この場合、プライベートデバイス領域管理は、変換障害などの障害をハイパーバイザプログラムと仮想マシンプログラムの両方に送信するように機能することができる。ハイパーバイザプログラムは、変換が仮想マシンプログラムによって再試行された場合に１対１のマッピングを返す適切な第２ステージ変換データ２４を提供することにより、障害に応答することができる（これは、少なくとも１回、仮想マシンプログラムに変換障害が返される）。
【００１９】
上述したように、メモリ管理回路１８によって実施されるプライベートデバイス領域管理は、異なる物理アドレスＰＡへのアドレス変換の第１ステージにより、仮想マシンプログラムによって生成された中間物理アドレスＩＰＡの再マッピングを防止する役割を果たす。対照的に、仮想マシンプライベート領域およびデバイス領域の両方以外のメモリ領域に関してメモリ管理回路１８によって提供される非プライベートデバイス管理は、第２ステージ変換データ２４が中間物理アドレスを変換することを可能にするＩＰＡを中間物理アドレスＩＰＡとは異なる物理アドレスＰＡに変換する。メモリ管理回路１８が非プライベートなデバイス管理を適用しているときに第２ステージの変換データ２４が中間物理アドレスＩＰＡを物理アドレスＰＡにマッピングするエントリを含まない場合、メモリ管理回路１８は変換障害をハイパーバイザプログラムが、第２ステージ変換データ２４内の中間物理アドレスＩＰＡから物理アドレスＰＡへの変換がないことを、例えば、再マッピングすることによって、修正することを可能にするために、仮想マシンプログラムに障害表示を送信することなく、デバイスを使用してステージ２の変換データを提供するか、デバイスを独自のソフトウェアでトラップしてエミュレートし、その結果を仮想マシンに返す。
【００２０】
仮想マシンプライベート領域２６内に格納された第１ステージの変換データ２２は、領域が仮想マシンプライベート領域としてマークされることを可能にする。第１ステージの変換データ２２は、仮想マシン専用領域２６内に格納されているので、（他のプログラムではなく）仮想機械プログラムによってアクセスすることができ、仮想機械プログラムが領域を仮想マシン専用領域としてマークする場合、別のプログラムがその領域を別の方法でマークすることはできないため、仮想マシンプログラムによって強制されるプライベートな性質を無効にすることができる。データ処理システム２が複数の仮想マシン実行環境をサポートするハイパーバイザプログラムを実行している場合、これらの仮想マシンプログラムのそれぞれは、ハイパーバイザプログラムと任意の異なる他の仮想マシンの両方にアクセスできない１つ以上のそれぞれの仮想マシン専用領域すなわち、仮想マシンプライベート領域は、個々の仮想マシン実行環境に対してプライベートであり、他の仮想マシン実行環境またはハイパーバイザプログラムとは共有されない。
【００２１】
図２は、メモリ管理回路１８の一部をより詳細に示す。具体的には、メモリ管理回路１８は、トランスレーションルックアサイドバッファ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ、ＴＬＢ）３２、第１ステージページテーブルウォークステートマシン（１ｓｔ  Ｓｔａｇｅ  Ｐａｇｅ  Ｔａｂｌｅ  Ｗａｌｋ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ）３４、第２ステージページテーブルウォークステートマシン３６、およびプライベートデバイス領域チェック回路３８を含む。仮想アドレスＶＡは、実行すべきメモリアクセスおよびデータ処理システム２の現在の状態に関連する属性とともに、トランスレーションルックアサイドバッファ３２に入力され、トランスレーションルックアサイドバッファ３２が既に格納（キャッシング）しているかどうかが判定されるして、その仮想アドレスＶＡを物理アドレスＰＡおよび関連する属性に変換する。トランスレーションルックアサイドバッファ３２内に格納された変換データは、第１ステージ変換データ２２および第２ステージ変換データ２４を参照して作成された関係する領域の以前の変換を表す。
【００２２】
第１ステージ変換データ２２は、仮想アドレスＶＡを中間物理アドレスＩＰＡに変換するように機能する。第２ステージ変換データ２４は、中間物理アドレスＩＰＡを物理アドレスＰＡに変換する役割を果たす。同じメモリ領域が続いてアクセスされ、トランスレーションルックアサイドバッファ３２内にまだ保持されている場合、トランスレーションルックアサイドバッファ３２は仮想アドレスＶＡから物理アドレスＰＡへ直接変換する。トランスレーションルックアサイドバッファ３２によって生成された物理アドレスＰＡは、物理アドレスＰＡを使用するそのメモリアクセスに関連する属性、すなわち、対応するデータがキャッシュ不可能であり、並べ替え可能ではなく、集合可能（すなわち、隣接アクセスと統合されないように）ではなく、早期確認ではないこと等によって付随されてもよい。
【００２３】
第１ステージページテーブルウォークステートマシン３４は、トランスレーションルックアサイドバッファ３２に適用された仮想アドレスＶＡがミスを発生させると、第１ステージ変換データ２２を通じたページテーブルウォークを実行して、変換データを返して仮想アドレスＶＡ中間物理アドレスＩＰＡに変換する。回復される仮想アドレスの第１ステージ変換データエントリは、その仮想アドレスを含む領域が仮想マシン専用領域であるかどうか、およびその仮想アドレスを含む領域がデバイス領域であるかどうかを示す属性も含む。第１ステージページテーブルウォークステートマシン３４によって実行される第１ステージページテーブルウォークが第１ステージ変換データ２２内の変換を見つけなかった場合、または発見された変換データがその属性が許可エラーに対応することを示す場合、第１ステージページテーブルウォークステートマシン３４は、仮想マシン変換エラーまたは仮想マシン属性障害のうちの適切なものを生成し、仮想マシンプログラムに返す。
【００２４】
中間物理アドレスＩＰＡは、第１ステージページテーブルウォークステートマシン３４から第２ステージページテーブルウォークステートマシン３６に渡され、第２ステージページウォークステートマシン３６は、第２ステージ変換データ２４を通じたページテーブルウォークを実行し、トランスレーションルックアサイドバッファ３２内に記憶された（キャッシュされた）変換データ３２がそこから追い出される前に、同じ領域（メモリ６内のメモリアドレス空間のページ）が再度アクセスされる場合に使用するために、トランスレーションルックアサイドバッファ３２内に返されて格納される。第２ステージのページテーブルウォークステートマシン３６は、第２ステージの変換データ２４が適切な変換を含まない場合、またはメモリアクセスに関連する属性が許可エラーを示す場合、ハイパーバイザ変換障害または属性変換障害を生成し、ハイパーバイザプログラムに返される。第１ステージページテーブルウォークステートマシン３４が、メモリアドレス空間内の領域が仮想マシンプライベート領域およびデバイス領域の両方であることを示すとき、プライベートデバイス領域チェック回路３８をトリガして、メモリ管理回路１８によるデバイス領域管理を行う。
【００２５】
第１ステージページテーブルウォークステートマシン３４によってアクセスされる領域が仮想マシンのプライベート領域およびデバイス領域の両方でない場合、プライベートデバイス領域チェック回路３８はこれらの追加のチェックを実行せず、そのような動作は、メモリ管理回路１８によるプライベートデバイス領域管理を行う。プライベートデバイス領域チェック回路３８によって実行される追加チェックは、第１ステージページテーブルウォークステートマシン３４によって生成された中間物理アドレスＩＰＡが第２ステージページテーブルウォークステートマシン３６によって変更されず、物理アドレスＰＡを形成することである。このチェックは、検査回路３８自身に対して提供される中間物理アドレスＩＰＡおよび物理アドレスＰＡをプライベートデバイス領域に提供することを要求するのではなく、プライベートデバイス領域チェック回路３８の制御下で、第２ステージページテーブルウォークステートマシン３６内で実行することができる。例えば、第２ステージページテーブルウォークによって返された物理アドレスＰＡは、プライベートデバイス領域管理を行うときに、第２状態ページテーブルウォークステートマシン３６によって中間物理アドレスＩＰＡとビット単位で比較される１対１の一致を確認する。
【００２６】
１対１のマッチングが存在しない場合、第２ステージページテーブルウォークステートマシン３６は、これを示す信号をプライベートデバイス領域チェック回路３８に返し、プライベートデバイス領域チェック回路３８は、仮想マシン変換障害を生成し、付加的には、ハイパーバイザ変換障害も生成する。仮想マシンのプライベート領域とデバイス領域の両方のメモリ領域に対して、中間物理アドレスＩＰＡと物理アドレスＰＡとの間に１対１のマッチングが存在する場合には、アクセスは障害なしに進めることができる適切なエントリがトランスレーションルックアサイドバッファ３２内に格納される。このようにして、プライベートデバイス領域チェック回路３８によって実行される追加チェックは、新しいエントリがトランスレーションルックアサイドバッファ３２内に格納されているときにのみ必要であり、これによりこの追加チェックに伴うオーバーヘッドを減らし、通常、トランスレーションルックアサイドバッファ３２を通るメモリアクセスのクリティカルパスである。
【００２７】
図３は、第１ステージの変換データ内のエントリを概略的に示す。特に、このエントリ（ページテーブルウォーキングプロセス中に実行される複数のルックアップから組み立てられたデータによって形成される）は、仮想アドレスＶＡと中間物理アドレスとの間の変換を少なくとも領域（ページ）の粒度のレベルで、例えばアドレスビット［６３：１２］に対応する４ｋＢページで、提供する。第１ステージの変換データエントリには、例えば、当該領域が仮想マシンプログラムによって仮想マシン専用領域として指定されたことを示す領域（ページ）に関連する属性データと、並べ替え可能な領域と、早期アクセス完了通知の対象となる領域などが含まれる。領域は、デバイス領域として明示的にマークされていなくてもよいが、並べ替え、収集または早期確認の対象ではないことを示すためにマークされた領域によって推定されてもよい。
【００２８】
別の実施形態では、領域をデバイス領域として明示的にマークすることが可能である。
デバイス領域は、典型的には、例えば、リアルタイムクロック、乱数発生器、メモリマップされた入出力デバイス、および／またはシステムセキュリティステータスレジスタなどの、メモリマップされたハードウェアデバイスに使用される。
【００２９】
図４は、データ処理システム２によって実行され得るプログラムの階層を概略的に示す。この階層は、複数の仮想マシン実行環境４２、４４、４６を提供するハイパーバイザプログラム４０を含む。仮想マシン実行環境４２は、それが使用するメモリアドレス空間内のメモリ領域の少なくともいくつかが仮想マシンプライベート領域としてマークされる（すなわち、その仮想マシン実行環境４２でアクセス可能であるが、そうではない）プライベート仮想マシン実行環境である。ハイパーバイザ４０または他の仮想マシン実行環境４４、４６のいずれかにアクセス可能である。図４には、実行される異なるプログラムに関連するそれぞれの例外レベル（特権レベル）も示されている。ハイパーバイザプログラム４０は、最も高い例外レベルＥＬ２（最高特権レベル）で実行される。オペレーティングシステムプログラム４８、５０、５２および１つまたは複数のアプリケーションプログラム５４、５６、５８、６０、６２、６４は、仮想マシンプログラムを構成する。オペレーティングシステムプログラム４８、５０、５２は、ハイパーバイザプログラム４０よりも低い特権を有する例外レベルＥＬＩで実行されるが、例外レベルＥＬ０で実行するアプリケーションプログラム５４、５６、５８、６０、６２、６４よりも高い特権を有する。
【００３０】
図５は、メモリ管理回路１８の動作を概略的に示すフロー図である。ステップ６６で、処理はメモリアクセス要求が受信されるまで待機する。ステップ６８において、メモリ管理回路１８は、変換すべき仮想アドレスに関してトランスレーションルックアサイドバッファ３２内にヒットがあるか否かを判定する。ヒットがあれば、処理はステップ７０に進み、受け取った仮想アドレスに関連する属性が、変換された仮想アドレスを含むメモリアドレス空間の領域のトランスレーションルックアサイドバッファ３２内に格納された属性制約を受けた属性障害を示しているかどうかの判定が行われる。属性障害がない場合、処理はステップ７２に進み、変換によって生成された物理アドレスおよびそれに関連する属性を使用してメモリアクセスが実行される。その後、処理を終了する。
【００３１】
ステップ７０で属性の障害があると判定された場合、処理はステップ７４に進み、そこで仮想マシンおよび／またはハイパーバイザ属性の障害の１つまたは両方が生成され、障害をソース仮想の適切なものに示すマシンプログラムまたはハイパーバイザプログラムを実行する。その後、処理を終了する。
【００３２】
ステップ６８における判定が、トランスレーションルックアサイドバッファ３２内にヒットがないと判定された場合、ページテーブルウォーキング動作が必要となる。ステップ７６では、ステップ６６で受信したメモリアクセス要求に関連する仮想アドレスを、第１ステージの変換データ２２へのインデックスとして使用する。ステップ７８では、第１ステージのページテーブルデータ内にミスがあるかどうかを判定する。ミスがある場合には、ステップ８０で仮想マシン変換障害を生成し、処理を終了する。ミスがない場合、適切な第１ステージのページテーブルデータが存在し、処理はステップ８２に進み、ここで属性の不具合、すなわちメモリアクセス要求に関連付けられた属性がステップ６６であるか否かが判定される読取り専用として定義された領域への書込みを試みるメモリアクセスのような、第１ステージのページテーブルウォークによって回復されたデータに関連する属性と一致しない。属性の障害が存在する場合、ステップ８４は、仮想マシンプログラムに返された仮想マシン属性障害を生成し、その後、処理を終了する。
【００３３】
ステップ８２で属性の失敗がなければ、ステップ８６は、ステップ７８での第１ステージページテーブルウォークによって生成された中間物理アドレスを、第２ステージページテーブルウォークの一部としての第２ステージ変換データ２４へのインデックスとして使用する。ステップ８８は、第２ステージのページテーブルウォーク内にミスがあるかどうかを判定する。ミスがある場合、ステップ９０は、ハイパーバイザ変換障害を生成する。次に、ステップ９２は、第１ステージの属性が、アクセスされる領域が仮想マシンのプライベート領域およびデバイス領域の両方であることを示すか否かを判定する。アクセスが試行された領域が仮想マシンのプライベート領域とデバイス領域の両方である場合、処理はステップ９４に進み、仮想マシン変換障害が生成されて仮想マシンプログラムに返される。ステップ９２における判定が、アクセスが試みられた領域が仮想マシンのプライベート領域およびデバイス領域の両方以外のものであることを第１ステージ属性が示している場合、ステップ９４はバイパスされる。その後、ステップ８８でミスを生じたメモリアクセス要求の処理は終了する。
【００３４】
ステップ８８のチェックで第２ステージページテーブルウォーク内にミスがなかったことが示された場合、処理はステップ９６に進み、第２ステージページテーブルウォークによって返された属性データがステップ６６で受信したメモリアクセス要求に関連する属性と比較すると、属性の失敗を示す。属性の障害がある場合、処理はステップ９８に進み、ハイパーバイザ属性の障害が生成され、ハイパーバイザプログラムに返される。次に、ステップ１０１において、第１ステージの属性が、アクセスが試みられた領域が仮想マシンのプライベート領域とデバイス領域の両方であることを示すかどうかを判定する。ステップ１０１における判定がＹＥＳである場合、ステップ１０３は、仮想マシンに返される仮想マシン属性障害を生成するために動く。そして処理を終了する。ステップ１０１の判定がＮＯである場合、ステップ１０３はバイパスされ、処理は終了する。
【００３５】
９６で属性障害が検出されなかった場合、処理はステップ１００に進み、ステップ７６で実行された第１ステージページテーブルウォークによって返された属性が、アクセスされるべき領域が仮想マシンのプライベート領域とデバイス領域の両方アクセスされる領域が仮想マシンのプライベート領域とデバイス領域の両方である場合、ステップ１０２は、第１ステージのページテーブルウォークによって生成された中間物理アドレスが、第２ステージのページテーブルによって生成された物理アドレスと同一であることをチェックするすなわち、プライベートデバイス領域管理を適用する。中間物理アドレスＩＰＡが物理アドレスＰＡと同一である場合、これは実行されたアドレス変換が許可されていることを示し、処理はステップ１０４に進み、変換に関連する物理アドレスおよび属性がトランスレーションルックアサイドバッファ３２内にその後の使用のために格納される。次に、ステップ７２は、物理アドレスＰＡおよび関連する属性を使用してメモリアクセスを実行する。
【００３６】
ステップ１００における判定で、第１ステージの属性が仮想マシンのプライベート領域とデバイス領域の両方でないことを示す場合、ステップ１０２はバイパスされ（非プライベートデバイス領域管理に対応し）、処理はステップ１００からステップ１０４に進む。ステップ１０２で、中間物理アドレスＩＰＡが物理アドレスＰＡと一致しない（例えば同一でない）と判定された場合、処理はステップ１０６に進み、仮想マシン変換障害が生成され、仮想マシンプログラムに返されるオプションでハイパーバイザ変換障害が生成され、ハイパーバイザプログラムに返される）。その後、処理を終了する。
【００３７】
例示的な実施形態は、添付の図面を参照して本明細書で詳細に説明されているが、特許請求の範囲はそれらの厳密な実施形態に限定されず、様々な変更、追加および修正が当業者によって行われ得ることが理解されるべきである。添付の特許請求の範囲の精神および範囲から逸脱することなく実施することができる。例えば、独立請求項の特徴を用いて、従属請求項の特徴の様々な組み合わせを行うことができる。
【図１】
2019507420.tif 000003
【図２】
2019507420.tif 000004
【図３】
2019507420.tif 000005
【図４】
2019507420.tif 000006
【図５】
2019507420.tif 000007
【国際調査報告】
2019507420.tif 000008
2019507420.tif 000009