(57)【要約】【課題】階層化された仮想化アーキテクチャにおいて仮想化イベントを処理する装置及び方法の実施例。【解決手段】一実施例では、装置はイベント・ロジック及び評価ロジックを含む。イベント・ロジックは、仮想化イベントを認識するものである。評価ロジックは、仮想化イベントに応じて制御を子ゲストから親ゲストに移すか否かを判定するものである。【選択図】図１
2010118085.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
第１の仮想マシン上のゲスト・ソフトウェアの実行中に仮想化イベントを認識するためのイベント・ロジックであって、前記第１の仮想マシンは、第２の仮想マシン上にインストールされた介在する仮想マシン・モニタによってホスティングされ、前記第２の仮想マシンは、ベア・プラットフォーム・ハードウェア上にインストールされたルート・モード仮想マシン・モニタによってホスティングされるイベント・ロジックと、
前記介在する仮想マシン・モニタ及び前記ルート・モード仮想マシン・モニタの何れが、前記仮想化イベントに応じて仮想マシン退出において前記プロセッサの制御を受けるかを判定するための評価ロジックとを備えることを特徴とするプロセッサ。
【請求項２】
請求項１記載のプロセッサであって、
前記評価ロジックは、前記介在する仮想マシン・モニタが制御を受けないことを判定した後にのみ、前記ルート・モード仮想マシン・モニタが制御を受けるかを判定することを特徴とするプロセッサ。
【請求項３】
請求項１記載のプロセッサであって、
前記評価ロジックは、前記介在する仮想マシン・モニタに制御を移さずに制御を受けるかを判定することを特徴とするプロセッサ。
【請求項４】
請求項２記載のプロセッサであって、
前記評価ロジックは、第１の仮想マシン制御構造における第１の表示子を検査して、前記介在する仮想マシン・モニタに制御を移すか否かを判定することを特徴とするプロセッサ。
【請求項５】
請求項4記載のプロセッサであって、
前記評価ロジックは、前記第１の仮想マシン制御構造から第２の仮想マシン制御構造へのポインタをたどり、前記第２の仮想マシン制御構造における第２の表示子を検査して、前記ルート・モード仮想マシン・モニタに制御を移すか否かを判定することを特徴とするプロセッサ。
【請求項６】
請求項1記載のプロセッサであって、
前記評価ロジックは、前記ルート・モード仮想マシン・モニタが制御を受けないことを判定した後にのみ、前記介在する仮想マシン・モニタが制御を受けるかを判定することを特徴とするプロセッサ。
【請求項７】
請求項１記載のプロセッサであって、
前記評価ロジックは、前記ルート・モード仮想マシン・モニタに制御を移さずに、前記介在する仮想マシン・モニタが制御を受けるかを判定することを特徴とするプロセッサ。
【請求項８】
請求項６記載のプロセッサであって、
前記評価ロジックは、第１の仮想マシン制御構造における第１の表示子を検査して、前記
ルート・モード仮想マシン・モニタに制御を移すか否かを判定することを特徴とするプロセッサ。
【請求項９】
請求項7記載のプロセッサであって、
前記評価ロジックは、前記第１の仮想マシン制御構造から第２の仮想マシン制御構造へのポインタをたどり、前記第２の仮想マシン制御構造における第２の表示子を検査して、前記介在する仮想マシン・モニタに制御を移すか否かを判定することを特徴とするプロセッサ。
【請求項１０】
請求項１記載のプロセッサであって、
前記イベント・ロジックは、トップダウン仮想化イベントを認識するためのトップダウン・イベント・ロジックと、ボトムアップ仮想化イベントを認識するためのボトムアップ・イベント・ロジックとを含むことを特徴とするプロセッサ。
【請求項１１】
請求項10記載のプロセッサであって、
前記評価ロジックは、前記介在する仮想マシン・モニタが制御を受けないことを判定した後にのみ、前記ルート・モード仮想マシン・モニタが制御を受けるかを、トップダウン仮想化イベントに応じて判定するためのトップダウン評価ロジックを含むことを特徴とするプロセッサ。
【請求項１２】
請求項11記載のプロセッサであって、
前記トップダウン評価ロジックは、第１の仮想マシン制御構造における第１の表示子を検査して、前記介在する仮想マシン・モニタに制御を移すか否かを判定することを特徴とするプロセッサ。
【請求項１３】
請求項12記載のプロセッサであって、
前記トップダウン評価ロジックは、前記第１の仮想マシン制御構造から第２の仮想マシン制御構造へのポインタをたどり、前記第２の仮想マシン制御構造における第２の表示子を検査して、前記ルート・モード仮想マシン・モニタに制御を移すか否かを判定することを特徴とするプロセッサ。
【請求項１４】
請求項10記載のプロセッサであって、
前記トップダウン・イベントは、CPUID命令のデコードであることを特徴とするプロセッサ。
【請求項１５】
請求項10記載のプロセッサであって、
前記評価ロジックは、前記ルート・モード仮想マシン・モニタが制御を受けないことを判定した後にのみ、前記介在する仮想マシン・モニタが制御を受けるかを、ボトムアップ仮想化イベントに応じて判定するためのボトムアップ評価ロジックを含むことを特徴とするプロセッサ。
【請求項１６】
請求項15記載のプロセッサであって、
前記ボトムアップ評価ロジックは、第１の仮想マシン制御構造における第１の表示子を検査して、前記ルート・モード仮想マシン・モニタに制御を移すか否かを判定することを特徴とするプロセッサ。
【請求項１７】
請求項16記載のプロセッサであって、
前記ボトムアップ評価ロジックは、前記第１の仮想マシン制御構造から第２の仮想マシン制御構造へのポインタをたどり、前記第２の仮想マシン制御構造における第２の表示子を検査して、前記介在する仮想マシン・モニタに制御を移すか否かを判定することを特徴とするプロセッサ。
【請求項１８】
請求項10記載のプロセッサであって、
前記ボトムアップ・イベントは、ハードウェア割り込みであることを特徴とするプロセッサ。
【請求項１９】
プロセッサであって、
第１の仮想マシン上のゲスト・ソフトウェアの実行中に仮想化イベントを認識するためのイベント・ロジックであって、前記第１の仮想マシンは、介在する複数の仮想マシン・モニタを介してベア・プラットフォーム・ハードウェア上にインストールされたルート・モード・ホストにリンクされるイベント・ロジックと、
前記介在する複数の仮想マシン・モニタ及び前記ルート・モード仮想マシン・モニタの何れが、前記仮想化イベントに応じて仮想マシン退出において前記プロセッサの制御を受けるかを判定するための評価ロジックとを備えることを特徴とするプロセッサ。
【請求項２０】
請求項19記載のプロセッサであって、
前記仮想化イベントは、前記介在する複数のモニタのうちの１つによって誘起され、前記評価ロジックは、前記介在する複数の仮想マシン・モニタの何れが前記仮想化イベントを誘起したかに基づいて、前記介在する複数の仮想マシン・モニタの何れが制御を受けるかを判定することを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関し、特に、データ処理装置内のリソースの仮想化の分野に関する。
【背景技術】
【０００２】
一般に、デ―タ処理装置内のリソースの仮想化の概念によって、単一のデータ処理装置上で1つ又は複数のオペレーティング・システム（それぞれ、「OS」）の複数のインスタンスを、各OSが装置及びそのリソースにわたって完全で直接の制御を有するようもくろまれていても実行することが可能になる。仮想化は通常、ソフトウェア（例えば、仮想マシン・モニタ、すなわち「VMM」）を用いて、VMMが、VM（「仮想化環境」）にわたって物理リソースの共有及び/又は割り当てなどの仮想化ポリシーを実施するためのシステム環境を維持する一方で、OSが完全かつ直接に制御することができる仮想リソースを有する「仮想マシン」（「VM」）を各OSに提示することによって実施される。仮想化環境を知らない、VM上で実行する各OSや何れかの他のソフトウェアは「ゲスト」として、又は「ゲスト・ソフトウェア」として表す一方、「ホスト」又は「ホスト・ソフトウェア」は、仮想化環境の外部で実行し、仮想化環境を知っている場合も知っていない場合もある、VMMなどのソフトウェアである。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
データ処理装置内のプロセッサは、例えば、２つのモード、すなわち、ソフトウェアが何れかの仮想化環境の外部のハードウェア上で直接実行する「ルート」モード、及び、ソフトウェアがその意図された特権レベルで実行するが、ルート・モードで実行するVMMによってホスティングされる仮想化環境内で実行する「非ルート」モードで動作することによって仮想化をサポートすることができる。仮想化環境では、特権レジスタ又は特権リソースのアクセスの外部割り込み又は外部試行などの特定のイベント、動作及び状況を「中断する」、すなわち、VMMが例えば、仮想化ポリシーを実施するよう動作することができるようにプロセッサに仮想化環境を退出させることができる。プロセッサは、仮想化環境を設定する旨の命令、仮想化環境に入る旨の命令、仮想化環境を出る旨の命令、及び仮想化環境の維持を行う旨の命令をサポートすることができ、プロセッサの仮想化機能を示すか、又は制御するレジスタ・ビットや他の構造を含み得る。
【課題を解決するための手段】
【０００４】
本発明を添付図面に限定ではなく例として示す。
【０００５】
階層化された仮想化環境内で仮想化イベントを処理する装置及び方法の実施例を説明する。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施例が動作し得る階層化された仮想化アーキテクチャを示す図である。
【図２】階層化された仮想化アーキテクチャにおけるVMMのゲスト階層を示す図である。
【図３】本発明の実施例によるトップダウン仮想化イベントを処理する方法を示す図である。
【図４】本発明の実施例によるボトムアップ仮想化イベントを処理する方法を示す図である。
【発明を実施するための形態】
【０００７】
以下の説明では、構成部分及びシステムの構成などの数多くの特定の詳細を、本発明の更に徹底的な理解を備えるために記載し得る。しかし、前述の特定の詳細なしで本発明を実施することができることは当業者によって認識されよう。更に、一部の周知の構造、回路及び同様なものは、本発明を不必要に分かりにくくすることがないよう詳細に示していない。
【実施例】
【０００８】
図１は、本発明の実施例が動作し得る階層化された仮想化アーキテクチャ１００を示す。図１では、最小限のプラットフォームのハードウェア１１０は、何れかのOS又はVMMのソフトウェアを実行することができる何れかのデータ処理装置であり得る。例えば、最小限のプラットフォームのハードウェアは、パソコン、汎用コンピュータ、ポータブル・コンピュータ、ハンドヘルド装置、セットトップ・ボックスや何れかの他のコンピューティング・システムのものであり得る。
【０００９】
最小限のプラットフォームのハードウェア１１０は、プロセッサ１２０及びメモリ１３０を含む。プロセッサ１２０は、汎用マイクロプロセッサ（例えば、インテル社によるペンティアム（登録商標）プロセッサ・ファミリ、イタニウム（登録商標）プロセッサ・ファミリや他のプロセッサ・ファミリにおけるプロセッサや、別の企業による別のプロセッサ）、又はディジタル信号プロセッサ若しくはマイクロコントローラをはじめとする何れかのタイプのプロセッサであり得る。図１は、１つのそうしたプロセッサ１２０のみを示すが、最低限のプラットフォームのハードウェア１１０は何れかの数のプロセッサを含み得る。メモリ１３０は、プロセッサ１２０によって判読可能な、スタティック・ランダム・アクセス・メモリ若しくはダイナミック・ランダム・アクセス・メモリ、半導体ベースのリード・オンリー・メモリ若しくはフラッシュ・メモリ、磁気ディスク・メモリ若しくは光ディスク・メモリ、何れかの他のタイプの媒体、又は前述の媒体の何れかの組み合わせであり得る。ベア・プラットフォーム・ハードウェア１１０は、何れかの数の入出力装置や他の装置も含み得る。
【００１０】
この実施例では、VMM１４０は、プロセッサ１２０上で、ルート・モードで実行するので「ルート・モード・ホスト」である。VMM１４０は、最小限のプラットフォームのハードウェア１１０上で実行するか、又は、最小限のプラットフォームのハードウェア１１０にアクセス可能であり、VM、すなわち、最小限のプラットフォームのハードウェア１１０の抽象化をゲストに提示するか、又は、VMを別の方法で作成し、VMを管理し、かつ、仮想化アーキテクチャ１００によってサポートされる仮想化環境内で仮想化ポリシーを実施するようインストールされた何れかのソフトウェア、ファームウェア、又はハードウェアのホストであり得る。別の実施例では、ルート・モード・ホストは、最小限のプラットフォームのハードウェア１１０を制御することができる何れかのモニタ、ハイパバイザ、OSや、他のソフトウェア、ファームウェア又はハードウェアであり得る。
【００１１】
ゲストは、何れかのOS、VMM１４０の別のインスタンスを含む何れかのVMM、何れかのハイパバイザ、又は、何れかのアプリケーションや他のソフトウェアであり得る。各ゲストは、VMにおいて提示されたプロセッサ及びプラットフォームのアーキテクチャによって、最小限のプラットフォームのハードウェア１１０の物理リソース（プロセッサ及びプラットフォームのレジスタ、メモリや入出力装置など）をアクセスすることを求めるものである。図１は、VM１５０、１６０、１７０及び１８０を、VM１５０上で実行するようインストールされたゲストOS１５２並びにゲスト・アプリケーション１５４及び１５５と、VM１６０上で実行するようインストールされたゲストVMM１６２と、VM１７０上で実行するようインストールされたゲストOS１７２と、VM１８０上で実行するようインストールされたゲストOS１８２とともに示す。この実施例では、ゲストは全て、非ルート・モードで実行する。図１は、４つのVM及び６つのゲストを示すが、本発明の範囲内で、何れかの数のVMを作成することができ、何れかの数のゲストを、各VM上で実行するようインストールすることができる。
【００１２】
仮想化アーキテクチャ１００は、１つのVMM、例えば、VMM１４０が別のVMM、例えばVMM１６２をゲストとしてホスティングすることが可能になるので「階層化されている」、又は「再帰的である」。階層化された仮想化アーキテクチャ１００では、VMM１４０はVM１５０及び１６０を含む仮想化環境のホストであり、それと最小限のプラットフォームのハードウェア１１０との間に「介在する」モニタがなしで最小限のプラットフォームのハードウェア１１０上で実行するようインストールされるので何れの仮想化環境内のゲストでもない。「介在する」モニタは、VMM１６２などのモニタであって、ゲストOS１７２などのゲストをホスティングするが、ゲスト自体でもあるモニタである。VMM１６２は、VM１７０及び１８０を含む仮想化環境のホストであるが、VMM１４０によってホスティングされる仮想化環境内のゲストでもある。介在するモニタ（例えば、VMM１６２）は、本明細書及び特許請求の範囲では親ゲストとして表すが、それは、別のVM（又はVM階層）に対する親として、かつ、下にあるVMMのゲストとして機能し得る（例えば、VMM１４０がVMM１６２の親であり、VMM１６２は、ゲスト１７２及び１８２に対する親である。）。
【００１３】
VMM１４０などのモニタは、OS１５２、ゲスト・アプリケーション１５４、ゲスト・アプリケーション１５５やゲストVMM１６２などのゲストの「親」として、それとゲストとの間に介在するモニタがない場合、表す。ゲストはそのモニタの「子」として表す。ゲストは子でも親でもあり得る。例えば、ゲストVMM１６２はVMM１４０の子であり、ゲストOS１７２及びゲストOS１８２の親である。
【００１４】
ゲストによってアクセスすることが可能なリソースは、「特権」リソース又は「非特権」リソースとして分類することができる。特権リソースの場合、ホスト（例えば、VMM１４０）は、リソースにわたって究極的な制御を維持する一方でゲストによって望まれる機能を容易にする。非特権リソースはホストによって制御されなくてよく、ゲストによって直接アクセスすることができる。
【００１５】
更に、各ゲストOSは、例外（例えば、ページ・フォルトや一般保護違反）、割り込み（例えば、ハードウェア割り込みやソフトウェア割り込み）やプラットフォーム・イベント（例えば、初期化及びシステム管理の割り込み）などの種々のイベントを処理することを求めるものである。こうした例外、割り込み及びプラットフォームのイベントを、本明細書及び特許請求の範囲において併せて、及び個別に「イベント」として表す。こうしたイベントの一部は、「特権的である」がそれは、VMの適切な動作を確実に行い、ホストのゲストからの保護を確実に行い、ゲストのお互いからの保護を確実に行うようホストによって処理されなければならない。
【００１６】
何れかの特定の時点で、プロセッサ１２０は、VMM１４０又は何れかのゲストからの命令を実施することができ、よって、VMM１４０又はゲストは、アクティブであり、プロセッサ１２０上で実行するか、又は、プロセッサ１２０を制御するものであり得る。特権イベントが生起するか、又はゲストが特権リソースにアクセスしようとする場合、制御をゲストからVMM１４０に移すことができる。ゲストからホストに制御を移すことを本明細書及び特許請求の範囲では「VM退出」として表す。イベントを適切に処理した後、又はリソースへのアクセスを適切に容易にした後、VMM１４０は制御をゲストに戻すことができる。ホストからゲストに制御を移すことを本明細書及び特許請求の範囲では「VM突入」として表す。
【００１７】
前述のようにゲストからルート・モード・ホストに制御を移すVM退出に加えて、本発明の実施例は、VM退出が、介在するモニタなどの非ルート・モード・ホストにゲストから制御を移すようにもしている。本発明の実施例では、仮想化イベント（例えば、VM退出を引き起こし得るもの）を「トップダウン」仮想化イベント又は「ボトムアップ」仮想化イベントとして分類することができる。
【００１８】
「トップダウン」仮想化イベントは、VM退出における制御をどのホストが受けたかの判定が、アクティブなゲストの親から始めることによって行われ、ルート・モード・ホストに向けて進むものである。トップダウン仮想化イベントは、ペンティアム（登録商標）・プロセッサ・ファミリにおけるプロセッサの命令群アーキテクチャ内のCPUID命令などの仮想化命令の実行をはじめとする、アクティブなゲストの動作によって始まる仮想化イベントであり得る。一実施例では、ルート・モード・ホストに、1つ又は複数の仮想化イベントについてトップダウン仮想化イベント処理をバイパスする機能を備え得る。そうした実施例では、仮想化イベントは、介在するＶＭＭ全てに対してトップダウン仮想化イベントとして処理されることになってもルート・モード・ホストにＶＭ退出を引き起こさせ得る。
【００１９】
「ボトムアップ」仮想化イベントは、ＶＭ退出における制御をどのホストが受けたかの判定が、逆方向に、例えば、ルート・モード・ホストから、アクティブ・ゲストの親に向けて行われるものである。ボトムアップ仮想化イベントは、下にあるプラットフォームの動作、例えば、ハードウェア割り込みやシステム管理割り込みによって始まる仮想化イベントであり得る。一実施例では、プロセッサ例外は、ボトムアップ仮想化イベントとして処理される。例えば、アクティブなゲストの実行中のページ・フォルトの例外の生起はボトムアップのやり方で評価されることになる。このボトムアップ処理は、プロセッサ例外全て、又はその部分集合にあてはまり得る。更に、一実施例では、VMMはイベント（例えば、割り込みや例外）をそのゲストに注入するか、又はそうしたイベントを別の方法で誘起する機能を有する。そうした実施例では、VM退出における制御を受けるホストがどれかの判定は、ルート・モード・ホストからではなく、仮想化イベントを誘起したVMMの上から始めることによって行うことができる。
【００２０】
図１の実施例では、プロセッサ１２０は、仮想マシン制御構造（「VMCS」）１３２に記憶されたデータによってVMの動作を制御する。VMCS１３２は、1つ又は複数のゲストの状態、VMM１４０の状態、1つ又は複数のゲストの動作をVMM１４０がどのようにして制御するかを示す実行制御情報、VM退出及びVM突入に関する情報、何れかの他のそうした情報を含み得る構造である。プロセッサ１２０は、VMCS１３２からの情報を読み取って、VMの実行環境を定め、その特性を制限する。この実施例では、VMCS１３２はメモリ１３０に記憶される。VMCS１３２は、複数の構造の分割することができ、それぞれは１つのホスト又は１つのゲストに相当し、それぞれは独立したVMCSとみなすことができる。
【００２１】
VMMの「ゲスト階層」は、VMMによってサポートされた1つ又は複数の仮想化環境内で実行するようインストールされたソフトウェアのスタックである。本発明は、ゲスト階層がVMCS間のポインタ連鎖を含む仮想化アーキテクチャにおいて実施することができる。こうしたポインタは、子のVMCSから親のVMCSを指し示す場合に「親ポインタ」として表し、親のVMCSから子のVMCSを指し示す場合に「子ポインタ」として表す。
【００２２】
図２は、最小限のプラットフォームのハードウェア２１０上にルート・モード・ホストとしてインストールされた、VMM２２０のゲスト階層を示す。VMCS２２１は、VMM２２０の制御構造であるが、ルート・モード・ホストは制御構造なしで動作することができる。ゲスト２３０は、VMCS２３１によって制御される、VMM２２０の子である。したがって、親ポインタ（「PP」）２３２はVMCS２２１を指し示す。ゲスト２４０は、VMCS２４１によって制御される、VMM２２０の子でもある。よって、親ポインタ２４２もVMCS２２１を指し示す。
【００２３】
ゲスト２４０自体が、２つの子、すなわちゲスト２５０及び２６０を備えるVMMであり、それぞれは、VMCS２５１及び２５２のそれぞれを備える。親ポインタ２５２も親ポインタ２６２もVMCS２４１を指し示す。
【００２４】
アクティブであるか、又は実行中の、ゲストのVMCSを、その親のVMCSの子ポインタが指し示す。したがって、図２は、VMCS２５１を指し示してゲスト２５０がアクティブであることを示す子ポインタ２４３を示す。同様に、ヌルの子ポインタではなくアクティブな子ポインタを備えたゲストのVMCSを、その親のVMCSの子ポインタが指し示す。したがって、図２は、VMCS２４１を指し示す子ポインタ２２３を示す。よって、親ポインタ連鎖は、アクティブなゲストのVMCSを、何れかの介在するモニタのVMCSを介してルート・モード・ホストのVMCSとリンクし、子ポインタ連鎖は、ルート・モード・ホストのVMCSを何れかの介在するモニタのVMCSを介してアクティブ・ゲストのVMCSとリンクする。
【００２５】
VMCS２２１は本明細書及び特許請求の範囲では「ルートVMCS」として表す。一実施例では、前述のようにルートVMCSは存在しない。ルートVMCSを含む一実施例では、処理ハードウェアは、内部レジスタや他のデータ構造においてルートVMCSへのポインタを維持し得る。前述のように、アクティブなゲストのVMCSは、本明細書及び特許請求の範囲では、現行制御VMCSとして表す。例えば、ゲスト２５０がアクティブである間、VMCS２５１は現行制御VMCSである。一実施例では、処理ハードウェアは、内部レジスタや他
VMCSが親VMCSでない場合、子ポインタ２３３、２５３や２６３などのその子ポインタはヌル・ポインタであり得る。VMCSは、親を有していない場合、例えば、ルート・モードVMCSである場合、親ポインタ２２２などのその親ポインタはヌル・ポインタであり得る。あるいは、こうしたポインタを割愛することができる。一部の実施例では、ヌルVMCSポインタの「ヌル」値はゼロであり得る。別の実施例では、他の値を「ヌル」として解釈することができる。例えば、３２ビット・アドレスを備えた一実施例では、値0xffffffffはヌルとして解釈することができる。
【００２６】
図２中の各ゲストのVMCSは、特定の仮想化イベントが生起する場合にそのゲストの親が制御を欲するか否かを示すビット、フィールド又は別のデータ構造（「イベント・ビット」）を示す。各VMCSは、何れかの数の仮想化イベントに相当する何れかの数のそうしたビットを含み得る。図２は、イベント・ビット２６４、２５４、２４４及び２３４を示す。
【００２７】
図１に戻れば、プロセッサ１２０は、階層化された仮想化アーキテクチャにおける仮想化イベント処理をはじめとする仮想化をサポートする制御ロジック１２１を含む。制御ロジック１２１は、プロセッサ１２０内のマイクロコード、プログラマブル・ロジック、ハードコード・ロジックや何れかの他の形態の制御ロジックにおいて実施することができる。別の実施例では、制御ロジック１２１は、プロセッサ内、又は、プロセッサによってアクセス可能な何れかの装置内、若しくは、プロセッサによって判読可能な媒体（例えば、メモリ１３０）内の何れかの形態のハードウェア、ソフトウェア又はファームウェア（例えば、プロセッサ抽象化層）において実施することができる。
【００２８】
制御ロジック１２１は、イベント・ロジック１２２、評価ロジック１２３及び退出ロジック１２４を含む。イベント・ロジック１２２は、トップダウン・イベント・ロジック１２５及びボトムアップ・イベント・ロジック１２６に分割することができる。評価ロジック１２３は、トップダウン評価ロジック１２７及びボトムアップ評価ロジック１２８に分割することができる。制御ロジック１２１は、例えば、仮想化命令、ホスト若しくはゲストからの他の命令、又は仮想化イベントに対するその応答として、仮想化をサポートするよう、1つ又は複数のマイクロ動作の実行をプロセッサ１２０に含めさせることによって、例えば、図３及び図４に示す方法実施例などの、本発明の方法実施例をプロセッサ１２０に実行させる。
【００２９】
図３は、本発明の実施例による、トップダウン仮想化イベントを処理する方法を示す。図のボックス３１０では、トップダウン・イベント・ロジック１２５は、トップダウン仮想化イベントを認識する。例えば、ゲストはCPUID命令を実行することができ、トップダウン・イベント・ロジックは、命令を復号化する復号器であり得る。
【００３０】
ボックス３２１乃至３２５では、トップダウン評価ロジック１２７は、VM退出がトップダウン仮想化イベントに応じて生起することになるか否かを判定し、そうである場合、制御を受けることになるホストはどれかを判定する。例えば、トップダウン評価ロジック１２７は、CPUID命令のプロセッサ・マイクロコード内のマイクロコードであり得る。
【００３１】
ボックス３２１では、アクティブなゲストのVMCSは子VMCSとして識別される。ボックス３２２では、例えば、子VMCSを検査してCPUID命令仮想化イベントのイベント・ビットが設定されているかを判定することによって、その子の親が制御を欲しているか否かについての判定が行われる。そうである場合、ボックス３３０で、退出ロジック１２４はVM退出を生起させ、制御がその親に移される。例えば、ボックス３２２を介した１つのパスのみの後にVM退出が存在する場合、アクティブなゲストの親が制御を受ける。
【００３２】
ボックス３２２における判定が、親が制御を欲しないという場合、ボックス３２３で、例えば、親VMCSの親ポインタがヌル・ポインタかを判定することによってその親がルート・モード・ホストであるか否かについての判定が行われる。そうである場合、VM退出は生起せず、ボックス３２４では、アクティブなゲストは、例えば、CPUID命令が普通に実行することを可能にすることによって仮想化イベント自体を処理する。ボックス３２３における判定が、親がルート・モード・ホストでないという場合、ボックス３２５で、子VMCSの親ポインタをたどって、最後の子のVMCSを置き換えて、親VMCSを新たな子VMCSとして識別する。次いで、ボックス３２２を繰り返す。
【００３３】
以下の擬似コードも、本発明の実施例による、トップダウン仮想化イベントを処理する方法も示す。この擬似コードにおいて表す実施例では、ルートVMCSが存在している。
【００３４】
【表１】
2010118085.tif 000003
図４は、本発明の実施例による、トップダウン仮想化イベントを処理する方法を示す。ボックス４１０では、ボトムアップ・イベント・ロジック１２６は、ボトムアップ仮想化イベントを認識する。ボックス４２１乃至４２５では、ボトムアップ評価ロジック１２８は、VM退出が行われることになるかをボトムアップ仮想化イベントに応じて判定し、そうである場合、どのホストが制御を受けることになるかを判定する。
【００３５】
ボックス４２１では、ボトムアップ仮想化イベントに関連したホストのVMCSが親VMCSとして識別される。例えば、ボトムアップ仮想化イベントが、ハードウェアによって生成される割り込みである場合、ルート・モード・ホストを親として識別することができる。あるいは、ボトムアップ仮想化イベント（例えば、例外、割り込みや他の仮想化イベント）がホストによって誘起又は注入される場合、そのホストを親として識別することができる。
【００３６】
ボックス４２２では、親VMCSの子ポインタをたどって子VMCSを識別する。ボックス４２３では、例えば、子VMCSを検査して、特定の割り込み又は割り込みタイプのイベント・ビットが設定されているかを判定することによって、親が制御を欲しているか否かについての判定が行われる。そうである場合、ボックス４３０で、退出ロジック１２４は、VM退出を生起させ、制御はその親に移される。例えば、ルート・モードのホストがボックス４２１において親として識別され、ボックス４２３を通る1つのパスの後にのみ、VM退出がある場合、ルート・モードのホストが制御を受ける。
【００３７】
ボックス４２３における判定が、親が制御を欲しないというものである場合、ボックス４２４で、例えば、子VMCSの子ポインタがヌル・ポインタかを判定することによって子がアクティブなゲストであるか否かについての判定が行われる。そうである場合、VM退出は生起せず、ボックス４２５では、アクティブ・ゲストは仮想化イベント自体を処理する。ボックス４２４における判定が、子がアクティブなゲストでないというものである場合、ボックス４２６で、子VMCSは、最後の親VMCSを置き換えて、新たな親VMCSとして識別される。次いで、ボックス422を繰り返す。
【００３８】
以下の擬似コードも、本発明の実施例による、ボトムアップ仮想化イベントを処理する方法も示す。この擬似コードに表す実施例では、ルートVMCSが存在する。
【００３９】
【表２】
2010118085.tif 000004
本発明の範囲内で、図３及び図４に示す方法を、種々の順序で行うことができ、図示したボックスを割愛して行うことができ、更なるボックスを追加して行うことができ、又は、再配列されたボックス、割愛されたボックス、若しくは更なるボックスの組み合わせによって行うことができる。例えば、図３及び図４の方法を更なるボックスと組み合わせて、認識された仮想化イベントがトップダウン仮想化イベントであるかボトムアップ仮想化イベントであるかを判定することができる。別の例として、図４のボックス４３０では、イベントがハードウェア割り込みであり、制御ビットが、ハードウェア割り込みが阻止される旨を示す場合にVM退出が生起しない場合があり、その場合、アクティブ・ゲストは、待機状態にハードウェア割り込みが保たれている間に実行し続けることができる。
【００４０】
上記記載の一部は、コンピュータ・システムのレジスタ内又はメモリ内のデータ・ビットに対する演算のアルゴリズム及び記号表現によって示している。こうしたアルゴリズムの記述及び表現は、自らの成果の本質を他の当業者に効果的に伝えるうえでデータ処理分野における当業者が用いる手段である。アルゴリズムは、本明細書でも一般にも、所望の結果につながる、自己矛盾のない演算系列として考えられているものである。演算は、物理的数量の物理的操作を必要とするものである。必然的ではないが通常、こうした数量は、記憶、転送、合成、比較及び他の方法による操作を行うことができる電気信号又は磁気信号の形式をとる。主に慣用の理由で、こうした信号をビット、値、構成要素、記号、文字、項、数字、又は同様なものとして表すことが時には好都合であることが明らかになったことがあり得る。
【００４１】
しかし、こうした語や同様な語全ては適切な物理的数量と関連付けるものとし、こうした数量に付される好都合なラベルに過ぎないことを念頭におくべきである。別途定めない限り、本発明を通して、「処理」、「計算」、「算出」、「判定」や同様なものなどの語を用いた記載は、コンピュータ・システムのレジスタ内及びメモリ内で物理的（電子的）数量として表すデータを操作し、コンピュータ・システムのレジスタ内、メモリ内や、他のそうした情報記憶装置内、情報伝送装置内や情報表示装置内に物理的数量として同様に表す他のデータに変換する、コンピュータ・システムや同様な電子計算機装置の動作及び処理を表し得る。
【００４２】
更に、本発明の実施例によって設計された構成部分のプロセッサ１２０や何れかの他の構成部分又は一部分は、作成から、シミュレーションから製造までの種々の段階において設計することができる。設計を表すデータは、いくつかのやり方で設計を表すことができる。まず、シミュレーションで有用であるように、ハードウェアは、ハードウェア記述言語又は別の機能記述言語を用いて表すことができる。更に、又はあるいは、ロジック及び/又はトランジスタのゲートを備えた回路レベル・モデルを、設計処理の特定段階で生成することができる。更に、大半の設計は、特定の段階で、種々の素子の物理的配置を表すデータによってモデリングすることができるレベルに達している。通常の半導体製造手法を用いる場合、素子配置モデルを表すデータは、集積回路を生産するのに用いるマスクの種々のマスク層上の種々の特徴の有無を規定するデータであり得る。
【００４３】
設計の何れかの表現では、データを何れかの形態のマシン判読可能媒体に記憶することができる。そうした情報を伝送するよう変調された、若しくは別の方法で生成された光波若しくは電波、メモリ、又は、ディスクなどの磁気記憶媒体若しくは光記憶媒体は、マシン判読可能媒体であり得る。こうした媒体は何れも、エラー・リカバリ・ルーチンにおける命令などの、本発明の実施例において用いる設計や他の情報を「収容する」又は「示す」ことができる。情報を示すか、又は収容する電気的搬送波が、電気信号の複製、バファリング又は再送信が行われる程度に送信されると、新たな複製が行われる。よって、通信プロバイダ又はネットワーク・プロバイダの動作は、本発明の手法を実施する、物品、例えば搬送波の複製の作成を構成することができる。
【００４４】
このように、階層化された仮想化イベントを処理する装置及び方法を開示している。特定の実施例を説明し、添付図面に示したが、そうした実施例は、広い範囲にわたる発明を限定するものでなく例証したものに過ぎず、本発明は、図示し、説明した特定の構成及び配置に限定されるものでないが、それは、他の種々の修正が、この開示の検討によって思い浮かび得るからであることを理解するものとする。成長が速く、更なる発展が容易に予期できない、こうしたものなどの技術領域では、開示された実施例は、本願の開示の原理又は特許請求の範囲記載の範囲から逸脱することなく、技術的進展を可能にすることによって促進されるように、配置及び詳細において容易に修正可能であり得る。
【符号の説明】
【００４５】
100  階層化された仮想化アーキテクチャ
110  最低限のプラットフォームのハードウェア
120  プロセッサ
121  制御ロジック
122  イベント・ロジック
123  評価ロジック
124  退出ロジック
125  トップダウン・イベント・ロジック
126  ボトムアップ・イベント・ロジック
127  トップダウン評価ロジック
128  ボトムアップ評価ロジック
130  メモリ
132  VMCS
140  VMM
150  VM
152  ゲストOS
154  ゲストAPP
155  ゲストAPP
160  VM
162  ゲストVMM
170  VM
172  ゲストOS
180  VM
182  ゲストOS
210  最低限のプラットフォームのハードウェア
220  ゲスト
221  VMCS
222  PP
223  CP
230  ゲスト
231  VMCS
232  PP
233  CP
234  イベント・ビット
240  ゲスト
241  VMCS
242  PP
243  CP
244  イベント・ビット
250  ゲスト
251  VMCS
252  PP
253  CP
254  イベント・ビット
260  ゲスト
261  VMCS
262  PP
263  CP
264  イベント・ビット
【図１】
2010118085.tif 000005
【図２】
2010118085.tif 000006
【図３】
2010118085.tif 000007
【図４】
2010118085.tif 000008