(57)【要約】  仮想マシン環境におけるゲスト間の情報を共有する装置、方法及びシステムの実施例を記載している。一実施例では、装置は、仮想マシン制御ロジック、実行装置及びメモリ管理装置を含む。仮想マシン制御ロジックは、ホスト及びそのゲスト間で装置の制御を移管する。実行装置は、一ゲストの仮想アドレス空間における仮想メモリ・アドレスから別のゲストの仮想アドレス空間における仮想メモリ・アドレスに情報を複製する旨の命令を実行する。メモリ管理装置は、仮想メモリ・アドレスを物理メモリ・アドレスに変換する。
2010503115.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
ホスト及び複数のゲストの間で前記装置の制御を移管するための仮想マシン制御ロジックと、
前記複数のゲストのうちの第２のゲストの仮想アドレス空間における第２の仮想メモリ・アドレスから、前記複数のゲストのうちの第１のゲストの仮想アドレス空間における第１の仮想メモリ・アドレスに情報を複製するための第１の命令を実行するための実行装置と、
前記第１の仮想メモリ・アドレスを第１の物理メモリ・アドレスに変換し、前記第２の仮想メモリ・アドレスを第２の物理メモリ・アドレスに変換するためのメモリ管理装置とを備える装置。
【請求項２】
請求項１記載の装置であって、前記メモリ管理装置は、第１の仮想メモリ・アドレスの第１の部分、及び前記第１の物理メモリ・アドレスの対応する第１の部分を記憶するための第１の記憶場所を含む装置。
【請求項３】
請求項２記載の装置であって、前記メモリ管理装置は、前記第１の記憶場所を含む変換ルックアサイド・バッファを含む装置。
【請求項４】
請求項２記載の装置であって、前記第１の記憶場所は、前記第１のゲストの識別子を記憶するためのタグ記憶場所を含む装置。
【請求項５】
請求項２記載の装置であって、第１の仮想メモリ・アドレスの第１の部分は第１の仮想ページ番号であり、前記第１の物理メモリ・アドレスの対応する第１の部分は第１の物理ページ番号である装置。
【請求項６】
請求項２記載の装置であって、前記実行装置は更に、前記第１の仮想メモリ・アドレスの第１の部分を前記第１の記憶場所に記憶する旨の第２の命令を実行する装置。
【請求項７】
請求項６記載の装置であって、前記実行装置は更に、前記第１のゲストが、前記第１の仮想メモリ・アドレスの第１の部分を前記第１の記憶場所に記憶するための前記第１の記憶場所を割り当てる旨の第３の命令を実行する装置。
【請求項８】
請求項７記載の装置であって、前記仮想マシン制御ロジックは、前記複数のゲストのうちの一ゲストが前記第３の命令を出そうとしたことに応じて前記ホストに前記装置の制御を移管するためのイグジット・ロジックを含む装置。
【請求項９】
請求項１記載の装置であって、前記メモリ管理装置は、前記第１のゲストの第１のアドレス変換データ構造を使用して前記第１の仮想メモリを変換し、前記第２のゲストの第２のアドレス変換データ構造を使用して前記第２の仮想メモリ・アドレスを変換する装置。
【請求項１０】
請求項９記載の装置であって、第１のポインタを前記第１のアドレス変換データ構造に記憶するための第１のベース・アドレス記憶場所を更に備える装置。
【請求項１１】
方法であって、
第１のゲストが、共有メモリ空間に登録する旨の登録命令を出す工程と、
第２のゲストが、前記第２のゲストのメモリ空間の一部分の内容を前記共有メモリ空間に複製する旨の複製命令を出す工程とを含む方法。
【請求項１２】
請求項１１記載の方法であって、前記共有メモリ空間を前記第１のゲストに割り当てる旨の割り当てコマンドをホストが出す工程を更に含む方法。
【請求項１３】
請求項１２記載の方法であって、前記共有メモリ空間に関連付けられたアドレス変換のために変換ルックアサイド・バッファにおけるエントリを割り当てる工程を更に含む方法。
【請求項１４】
請求項１３記載の方法であって、前記エントリに関連付けられたタグ記憶場所における前記第１のゲストの識別子を前記変換ルックアサイド・バッファに記憶する工程を更に含む方法。
【請求項１５】
請求項１２記載の方法であって、前記記憶されたメモリ空間に関連付けられたセキュアな鍵を前記第１のゲストに戻す工程を更に含む方法。
【請求項１６】
請求項１１記載の方法であって、前記共有メモリ空間を識別する第１の仮想メモリ・アドレスを変換ルックアサイド・バッファに記憶する工程を更に含む方法。
【請求項１７】
請求項１６記載の方法であって、前記共有メモリ空間を識別する第１の物理メモリ・アドレスに前記第１の仮想メモリ・アドレスを変換する工程を更に含む方法。
【請求項１８】
請求項１７記載の方法であって、前記第２のゲストのメモリ空間の一部分を識別する第２の仮想メモリ・アドレスを変換して、前記第２のゲストのメモリ空間の一部分を識別する第２の物理メモリ・アドレスを生成する工程を更に含む方法。
【請求項１９】
システムであって、
第１のゲストと第２のゲストとの間で共有する対象の情報を記憶するためのメモリと、
プロセッサであって、
ホスト、前記第１のゲスト、前記第２のゲスト間で前記プロセッサの制御を移管するための仮想マシン制御ロジックと、
前記第２のゲストの仮想アドレス空間における第２の仮想メモリ・アドレスから、前記第１のゲストの仮想アドレス空間における第１の仮想メモリ・アドレスに情報を複製するための第１の命令を実行するための実行装置と、
前記第１の仮想メモリ・アドレスを第１の物理メモリ・アドレスに変換し、前記第２の仮想メモリ・アドレスを第２の物理メモリ・アドレスに変換するためのメモリ管理装置と
を備えるプロセッサとを備えるシステム。
【請求項２０】
請求項１９記載のシステムであって、前記メモリがダイナミック・ランダム・アクセス・メモリであるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、情報処理の分野に関し、特に、仮想マシン環境におけるメモリ管理の分野に関する。
【背景技術】
【０００２】
一般に、情報処理システムにおける仮想化の概念は、１つ又は複数のオペレーティング・システム（それぞれが、「ＯＳ」である）それぞれが、システム及びそのリソースに対する完全で直接的なコントロールを有するよう企図されていても、１つ又は複数のＯＳの複数のインスタンスが単一の情報処理システム上で実行することを可能にする。仮想化は通常、ソフトウェア（例えば、仮想マシン・モニタ、すなわち「ＶＭＭ」）を使用して、ＶＭ（「仮想化環境」）間での物理リソースの共有及び／又は割当などの仮想化ポリシーを実現するためのシステム環境をＶＭＭが維持する一方で、ＯＳが完全かつ直接に制御することができる１つ又は複数の仮想プロセッサを含む仮想リソースを有する「仮想マシン」（「ＶＭ」）を各ＯＳに提示することによって実現される。ＶＭ上で実行する各ＯＳ及び何れかの他のソフトウェアは、「ゲスト」又は「ゲスト・ソフトウェア」として表される一方、「ホスト」又は「ホスト・ソフトウェア」は、仮想化環境の外部で実行し、仮想化環境を知っていても知らなくてもよい、ＶＭＭなどのソフトウェアである。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
情報処理システムにおける物理プロセッサは、例えば、仮想化環境に入って、ＶＭにおける仮想プロセッサ（すなわち、ＶＭＭによって科される制約下の物理プロセッサ）上でゲストを実行させる旨の命令をサポートすることにより、仮想化をサポートすることができる。仮想化環境では、特権化されたレジスタ又はリソースにアクセスする旨の外部の割り込み又は試行などの特定のイベント、動作、及び状況を「傍受する」ことができる、すなわち、例えば、仮想化ポリシーを実現するようＶＭＭが動作し得る仮想化環境をプロセッサに出させることができる。物理プロセッサは、仮想化環境を維持する旨の他の命令もサポートすることができ、物理プロセッサの仮想化機能を示すか、又は制御するメモリ又はレジスタ・ビットを含み得る。
【０００４】
仮想化環境をサポートする物理プロセッサは、仮想メモリ・アドレスを物理メモリ・アドレスに変換するメモリ管理装置を含み得る。ＶＭＭは、メモリ管理装置に対する最終的なコントロールを維持して一ゲストのメモリ空間を別のゲストのメモリ空間から保護することが必要であり得る。したがって、ゲスト間での情報の共有に対する従来の手法は、ゲストが情報を別のゲストに向けて複製しようとする都度、ゲストからＶＭＭへのプロセッサの制御の移管及びＶＭＭからゲストへの制御の別の再移管が行われるようにＶＭＭが情報を一ゲストのメモリ空間から別のゲストのメモリ空間に複製することが可能であるように各ゲストのメモリ空間の部分をＶＭＭのメモリ空間に付加することを含んでいる。通常、ゲストからＶＭＭへの制御の前述の移管はそれぞれ、ゲスト状態の保存及びホスト状態のロードを含み、ＶＭＭからゲストへの制御の前述の移管はそれぞれ、ホスト状態の保存及びゲスト状態のロードを含む。
【課題を解決するための手段】
【０００５】
本発明は、例示であり、添付図面における例証でない。
【図面の簡単な説明】
【０００６】
【図１】仮想化アーキテクチャにおける本発明の実施例を示す図である。
【図２】仮想マシン環境におけるゲスト間の情報を共有する方法における本発明の実施例を示す図である。
【発明を実施するための形態】
【０００７】
仮想マシン環境におけるゲスト間の情報を共有する装置、方法及びシステムの実施例を以下に説明する。本明細書では、数多くの具体的な詳細（構成要素及びシステムの構成など）を記載して、本発明のより詳細な理解をもたらし得る。しかし、前述の具体的な詳細なしで本発明を実施することができるということを当業者は認識するであろう。更に、本発明を不必要に分かりにくくすることがないよう、周知の特定の構造、回路等は詳細に示していない。
【０００８】
仮想マシン環境の性能は、ゲストとホストとの間の制御の移管の数を削減することにより、向上させることができる。本発明の実施例を使用して、一ゲストから別のゲストに情報を複製するために必要な前述の移管の数を削減することができる。したがって、ゲストが情報を別のゲストに複製しようとする都度、ゲストからＶＭＭへのプロセッサの制御の移管、及びＶＭＭからゲストへの制御の別の再移管が行われる仮想マシン環境に対して性能が向上し得る。性能は、ゲスト・メモリの共有部分を含めるようＶＭＭのメモリ管理データ構造を修正することを必要としないことにより、更に向上させることができる。
【実施例】
【０００９】
図１は、仮想化アーキテクチャ１００における本発明の実施例を示す。図１は、仮想化アーキテクチャにおいて実施された本発明を示しているが、本発明は、他のアーキテクチャ、システム、プラットフォーム、又は環境においても実施することができる。例えば、本発明の実施例は、マイクロカーネル又は分解オペレーティング・システム環境におけるアプリケーション間の情報の共有をサポートすることができる。
【００１０】
図１では、ベア・プラットフォーム・ハードウェア１１０は、何れかのＯＳ又はＶＭＭソフトウェアを実行することができる何れかのデータ処理装置であり得る。例えば、ベア・プラットフォーム・ハードウェアは、パソコン、メインフレーム・コンピュータ、ポータブル・コンピュータ、ハンドヘルド装置、セットトップ・ボックス、サーバ、又は何れかの他のコンピューティング・システムのものであり得る。ベア・プラットフォーム・ハードウェア１１０は、プロセッサ１２０及びメモリ１３０を含む。
【００１１】
プロセッサ１２０は、汎用マイクロプロセッサ（インテル（登録商標）社ペンティアム（登録商標）プロセッサ・ファミリ、アイテニアム（登録商標）プロセッサ・ファミリ、あるいは、インテル（登録商標）社からの他のプロセッサ・ファミリにおけるプロセッサ、あるいは、別の会社からの別のプロセッサにおけるプロセッサなど）、又は、ディジタル信号プロセッサ若しくはマイクロコントローラを含む何れかのタイプのプロセッサであり得る。図１は、前述の一プロセッサ１２０のみを示すが、ベア・プラットフォーム・ハードウェア１１０は、何れかの数の実行コアをそれぞれが有する何れかの数のマルチコア・プロセッサ、及び何れかの数のスレッドをそれぞれが有する何れかの数のマルチスレッド・プロセッサを含む何れかの数のプロセッサを含み得る。
【００１２】
メモリ１３０は、静的若しくは動的ランダム・アクセス・メモリ、半導体ベースのリードオンリ・メモリ又はフラッシュ・メモリ、磁気若しくは光ディスク・メモリ、プロセッサ１２０によって読み出し可能な何れかの他のタイプの媒体、又は前述の媒体の何れかの組合せであり得る。プロセッサ１２０及びメモリ１３０、１つ若しくは複数のバス、ポイントツーポイント、又は他の有線若しくは無線の接続による直接手法又は間接手法などの何れかの既知の手法により、互いに結合又は通信することができる。ベア・プラットフォーム・ハードウェア１１０は、何れかの数の更なる装置又は接続も含み得る。
【００１３】
ベア・プラットフォーム・ハードウェア１００に加えて、図１は、ＶＭＭ１４０、ＶＭ１５０及び１６０、ゲスト・オペレーティング１５２及び１６２、並びに、ゲスト・アプリケーション１５４、１５５、１６４、及び１６５を示す。
【００１４】
ＶＭＭ１４０は、ＶＭ（すなわち、ベア・プラットフォーム・ハードウェア１１０の抽象化）をゲストに向けて提示するか、又は、他の方法で、ＶＭを生成し、管理し、仮想化ポリシーを実現するためにベア・プラットフォーム・ハードウェア１１０上にインストールされるか、上記ベア・プラットフォーム・ハードウェア１１０にアクセス可能な何れかのソフトウェア、ファームウェア、又はハードウェアであり得る。他の実施例では、ホストは、何れかのＶＭＭ、ハイパバイザ、ＯＳや、ベア・プラットフォーム・ハードウェア１１０を制御することができる他のソフトウェア、ファームウェア又はハードウェアであり得る。ゲストは、何れかのＯＳ、何れかのＶＭＭ（ＶＭＭ１４０の別のインスタンスを含む）、何れかのハイパバイザ、又は何れかのアプリケーション若しくは他のソフトウェアであり得る。
【００１５】
各ゲストには、ＶＭにおいて提示されたプラットフォーム及びプロセッサのアーキテクチャにより、ベア・プラットフォーム・ハードウェア１１０の物理リソース（プロセッサ及びプラットフォーム・レジスタ、メモリ、及び入出力装置など）へのアクセスが想定される。図１は、２つのＶＭ１５０及び１６０を示し、ゲストＯＳ１５２並びにゲスト・アプリケーション１５４及び１５５はＶＭ１５０上にインストールされており、ゲストＯＳ１６２、並びにゲスト・アプリケーション１６４及び１６５はＶＭ１６０上にインストールされている。図１は、２つのＶＭ、及びＶＭ毎の２つのアプリケーションのみを示しているが、本発明の範囲内で、何れの数のＶＭも生成することができ、何れの数のアプリケーションも各ＶＭ上で実行させることができる。
【００１６】
ゲストによってアクセスすることが可能なリソースは、「特権的」又は「非特権的」リソースとして分類することができる。特権的リソースの場合、ＶＭＭ１４０は、前述のリソースに対する最終的なコントロールを維持する一方で、ゲストによって望まれる機能を容易にする。非特権的リソースは、ＶＭＭ１４０によって制御されなくてよく、ゲストによって直接アクセスすることができる。
【００１７】
更に、各ゲストＯＳは種々のイベント（例外（例えば、ページ・フォールト、一般的な保護障害）、割り込み（例えば、ハードウェア割り込み、ソフトウェア割り込み）、及びプラットフォーム・イベント（例えば、初期化及びシステム管理割り込み））を扱うことが想定される。前述の例外、割り込み、及びプラットフォーム・イベントは、本明細書及び特許請求の範囲では、併せて、かつ個々に「仮想化イベント」として表される。前述の仮想化イベントの一部は、ＶＭ１５０及び１６０の適切な動作、ゲストからのＶＭＭ１４０の保護、及び互いからのゲストの保護を確実にするためにＶＭＭ１４０によって処理しなければならないので、「特権的イベント」として表される。
【００１８】
何れかの特定の時点では、プロセッサ１２０は、ＶＭＭ１４０又は何れかのゲストからの命令を実行することができ、ＶＭＭ１４０又はゲストは、プロセッサ１２０上で実行するか、又はプロセッサ１２０を制御し得る。特権的イベントが生起したか、又はゲストが特権的リソースにアクセスしようとした場合、制御をゲストからＶＭＭ１４０に移管することができる。ゲストからＶＭＭ１４０への制御の移管は、本明細書及び特許請求の範囲では「ＶＭイグジット」として表される。適切な、リソースへのアクセスの容易化後、又は、イベントの処理後、ＶＭＭ１４０は制御をゲストに戻し得る。ＶＭＭ１４０からゲストへの制御の移管は、本明細書及び特許請求の範囲では「ＶＭエントリ」として表す。
【００１９】
プロセッサ１２０は、ホスト（ＶＭＭ１４０など）、ゲスト（ゲスト・オペレーティング・システム１５２及び１６２、並びにゲスト・アプリケーション１５４、１５５、１６４及び１６５など）間でのプロセッサ１２０の制御の移管を含む、仮想化をサポートするための仮想マシン制御ロジック１７０を含む。仮想マシン制御ロジック１７０は、マイクロコード、プログラム可能なロジック、ハードコードされたロジック、又はプロセッサ１２０内の何れかの他の形態の制御ロジックであり得る。他の実施例では、仮想マシン制御ロジック１７０は、メモリ１３０などの、プロセッサによって読み出し可能な媒体内、若しくはアクセス可能な何れかの構成要素内、又はプロセッサ内の、プロセッサ抽象化層などの何れかの形態のハードウェア、ソフトウェア、又はファームウェアにおいて実現することができる。
【００２０】
仮想マシン制御ロジック１７０は、ホストからゲストにプロセッサ１２０の制御を移管するためのＶＭエントリ・ロジック（すなわち、ＶＭエントリ）、及びゲストからホストにプロセッサ１２０の制御を移管するためのＶＭイグジット・ロジック１７２（すなわち、ＶＭイグジット）を含む。特定の実施例では、制御は、ゲストからゲストに、又はホストからホストに移管することもできる。例えば、階層化された仮想化をサポートする実施例では、プロセッサ１２０上のＶＭ上で実行するソフトウェアは、ゲスト及びホスト（例えば、ＶＭ上で実行するＶＭＭは、そのＶＭを制御するＶＭＭへのゲストであり、制御するＶＭ上で実行するゲストに対するホストである）であり得る。ＭＭＵ１９０は、システム内の物理メモリ（例えば、メモリ１３０）のアドレス空間よりも大きな、データ及びコードを記憶し、データ及びコードにアクセスするためのアドレス空間を有する、ＶＭにおいて実行するゲスト・ソフトウェア、及びＶＭ外で実行するホスト・ソフトウェアを含むソフトウェアを提供するための、仮想メモリの使用をサポートする。プロセッサ１２０の仮想メモリ空間は、プロセッサ上で実行するソフトウェアに利用可能なアドレス・ビットの数によってのみ制限され得る一方、プロセッサ１２０の物理メモリ空間は、メモリ１３０の容量に更に制限される。ＭＭＵ１９０は、必要に応じてメモリ１３０との間で実行ソフトウェアのコード及びデータを交換するためのメモリ管理手法（この実施例では、ページング）をサポートする。この手法の一部として、ソフトウェアは、プロセッサの物理メモリ空間にアクセスするためにプロセッサが使用し得る第２のアドレスにプロセッサによって変換される仮想アドレスにより、プロセッサの仮想メモリ空間にアクセスすることができる。
【００２１】
よって、ＭＭＵ１９０は、変換ロジック１９１、ページング・ベース・レジスタ１９２、及び変換ルックアサイド・バッファ（「ＴＬＢ」）１９３を含む。変換ロジック１９１は、ページングなどの何れかの既知のメモリ管理手法により、アドレス変換（例えば、仮想アドレスから物理アドレスへの変換）を行う。本明細書及び特許請求の範囲使用の「仮想アドレス」の語は、論理アドレス又は線形アドレスとして表される何れかのアドレスを含む。前述のアドレス変換を行うために、変換ロジック１９１は、プロセッサ１２０、メモリ１３０に記憶された１つ又は複数のデータ構造、図１に示していない、ベア・プラットフォーム・ハードウェア１１０における何れかの他の記憶場所、及び／又は前述の構成部分及び場所の何れかの組合せを表す。データ構造は、本発明の実施例によって修正されたような、ペンティアム（登録商標）プロセッサ・ファミリのアーキテクチャによるページ・ディレクトリ及びページ・テーブル、並びに／又は、ＴＬＢ１９３などのＴＬＢなどに記憶されたテーブルを含み得る。
【００２２】
ページング・ベース・レジスタ１９２は、変換ロジック１９１によって使用されるデータ構造にポインタを記憶するために使用される何れかのレジスタ又は他の記憶場所であり得る。一実施例では、ページング・ベース・レジスタ１９２は、ペンティアム（登録商標）プロセッサ・ファミリのアーキテクチャにより、ページ・マップ・レベル４ベース・アドレスを記憶するために使用される、ＰＭＬ４ベースとして表されるＣＲ３登録の一部であり得る。
【００２３】
一実施例では、変換ロジック１９１は、プロセッサ１２０によって実行される対象の命令によって供給される線形アドレスを受け取る。変換ロジック１９１は、ページ・テーブルを含む階層テーブルに対する索引として線形アドレスの一部分を使用してページ・ウォークを行う。ページ・テーブルは、メモリ１３０内のページのベース・アドレスのフィールドをそれぞれが含むエントリを含む（例えば、ペンティアム（登録商標）プロセッサ・ファミリの拡張メモリ６４手法による、ページ・テーブル・エントリのビット３９：１２）。何れかのページ容量（例えば、４キロバイト）を本発明の範囲内で使用することができる。したがって、メモリ１３０にアクセスするためにプログラムによって使用される線形アドレスは、メモリ１３０にアクセスするためにプロセッサ１２０によって使用される物理アドレスに変換することができる。
【００２４】
線形アドレス及び対応する物理アドレスはＴＬＢ１９３に記憶することができるので、同じ線形アドレスを使用した将来のアクセスに適切な物理アドレスはＴＬＢ１９３において見つけることができ、別のページ・ウォークは必要でない。ＴＬＢ１９３の内容は、通常、オペレーティング・システムにより、例えば、ソフトウェア・コンテキスト・スイッチ上で適宜、消去することができる。
【００２５】
仮想マシン環境では、ＶＭＭ１４０は、一ゲストのメモリ空間を別のゲストから保護するためにＭＭＵ１９０のリソースに対する最終的なコントロールを有する必要があり得る。したがって、一実施例では、仮想マシン制御ロジック１７０は、ページング・ベース・レジスタ１９２又はＴＬＢ１９３の内容を変更するか、又は別の方法でＭＭＵ１９０の動作を修正することを意図した命令をゲストが出した場合にＶＭイグジットを生じさせるためのロジックを含み得る。ＶＭＭは、次いで、仮想マシンがＯＳに対してそのメモリ管理リソースの完全なコントロールを提供するようにみえる仮想マシン環境とともに、ベア・プラットフォーム・ハードウェア１１０の正しい動作をもたらすよう、ＭＭＵ１９０を、複数の組のページングや他のデータ構造（例えば、ＶＭ毎に一組）を維持することが可能である。
【００２６】
別の実施例では、ＭＭＵ１９０は、仮想化をサポートするためのハードウェアを含み得る。例えば、変換ロジック１９１は、前述の通り、ページング・ベース・レジスタ１９２の内容によって指し示されたデータ構造を使用して線形アドレスを物理アドレスに変換するよう構成することができる。この変換がゲストについて行われた場合、線形アドレスはゲスト線形アドレスとして表され、結果として生じる物理アドレスはゲスト物理アドレスとして表され、第２の変換は、第２のポインタによって指し示される第２のデータ構造を使用してゲスト物理アドレスをホスト物理アドレスに変換するよう行われる。この実施例では、ページング・ベース・レジスタ１９２及び第１の変換データを仮想マシン上で実行するＯＳによって維持することができる一方、第２のポインタ及び第２の変換データ構造はＶＭＭによって維持される。第２の変換は、ＶＭエントリによってイネーブルされ、ＶＭイグジットによってディセーブルすることができる。
【００２７】
実行装置１８０に戻れば、この実施例では、実行装置１８０は、ホスト又はゲストによって出すことができる命令を実行するよう構成される。前述の命令は、他のゲストと共有する情報にゲストが使用する、ＴＬＢ１９３（及び／又は、プロセッサ１２０又はベア・プラットフォーム・ハードウェア１１０における別の構造、メモリ１３０など）の一部を割り当てる旨の命令（「割り当て」命令）、他のゲストと情報を共有するためにゲスト・メモリの一部に登録する（「登録」命令）旨の命令、及び、ＶＭイグジット（「複製」命令）をもたらすことなく、別のゲストとの間で一ゲストが情報を複製する旨の命令を含む。
【００２８】
割り当て命令は、オペランドとしてか、パラメータとしてか、又は、何れかの他の明示的な手法若しくは暗黙的な手法により、要求者識別子（ＩＤ）、及びそれに関連付けられたメモリ容量を有し得る。要求者ＩＤは、分解ＯＳ環境におけるアプリケーション、又は、仮想マシン環境における仮想マシンに一意の値であり得る。要求者ＩＤは、そのメモリ空間の一部分を共有可能にすることを意図したＶＭ又はアプリケーションを識別し、メモリ容量は、共有可能なメモリ空間の容量（例えば、ページ数）を示す。
【００２９】
割り当て命令は、ＭＭＵ１９０の最終的なコントロールを有するエンティティ（この実施例では、ＶＭＭ１４０である）によってのみ出すことができる。例えば、割り当て命令が、特権が不十分なゲスト・アプリケーションによって出された場合、無視することができ、十分な特権を有するとの確信を有するゲストＯＳによって出された場合、ＶＭイグジットをもたらし得る。ＶＭＭ１４０による割り当て命令の発出は、そのメモリ空間の一部分を共有可能にする旨の、プログラム・コール又は他のメッセージング・プロトコルによる、ゲストの要求に対する応答であり得る。
【００３０】
実行装置１８０は、情報共有のために要求側ＶＭに、ＴＬＢ１９３内の１つ又は複数のエントリ場所を割り当てさせることにより、この実施例において割り当て命令を実行する。他の実施例では、プロセッサ１２０又はベア・プラットフォーム・ハードウェア１１０（例えば、メモリ１３０）における別個の専用ＴＬＢ、又は何れかの他の記憶場所又はデータ構造をＴＬＢ１９３の代わりに使用することができる。
【００３１】
情報共有をサポートするために、ＴＬＢ１９３は、共有タグを各ＴＬＢエントリと、又は、何れかの数のＴＬＢエントリ群と関連付けることを可能にする共有タグ記憶場所１９４を含み得る。したがって、割り当て命令の実行は、割り当てられたＴＬＢエントリ場所に関連付けられた共有タグを要求者ＩＤの値に設定する工程を含み得る。共有のためにタギングされたＴＬＢエントリは、ソフトウェア・コンテキスト・スイッチ上で消去されるものでない。
【００３２】
割り当て命令の実行は、割り当てられたＴＬＢエントリ場所に関連付けされたセキュアな鍵を、プログラム・コール・リターン又は他のメッセージング・プロトコルにおいて要求者に向けて通信させることもできる。割り当てられたＴＬＢエントリ場所は、プログラム・コール、他のメッセージング・プロトコル、又は何れかの他の手法によってリリースすることができる。
【００３３】
登録命令は、オペランドとしてか、パラメータとしてか、又は何れかの他の明示的手法若しくは暗黙的手法により、所有権情報、及びそれに関連付けられたアクセス情報を有し得る。所有権情報は、要求者ＩＤの形式、又は何れかの他の形式の登録するエンティティの識別情報、及び、共有する対象のページの仮想アドレスの形式、又は何れかの他の形式の、共有する対象のメモリ空間の識別情報を含み得る。アクセス情報は、要求者ＩＤと同様なＩＤ値の形式、又は何れかの他の形式の、メモリ空間を共有し得る１つ又は複数のエンティティの識別情報、及び、読出許可及び／又は書込許可などの何れかの所望のアクセス許可を含み得る。登録命令は、対応する割り当て命令によって戻されるセキュアな鍵をそれと関連付けていることもあり得る。
【００３４】
この実施例では、登録命令の実行は、先行して実行された割り当て命令によって、登録するエンティティに向けて、登録命令に関連付けられたセキュアな鍵が出されている旨を検証する工程、割り当てられたＴＬＢエントリ場所及び関連付けられた物理アドレスを識別する工程、及び、割り当てられたＴＬＢエントリ場所における、登録するエンティティによって供給される仮想アドレスを記憶する工程を含み得る。登録命令に関連付けられたアクセス情報は、例えば、要求者ＩＤによって索引化された記憶場所において、後の複製命令が可能である旨を検証するために使用することを可能にする何れかの手法によって記憶することができる。登録するエンティティに要求されていないか、登録するエンティティに、ＴＬＢエントリ場所が割り当てられていない場合、登録命令は、セキュアな鍵の検証又はＴＬＢエントリの使用なく、アクセス情報を記憶することによって実行することができる。
【００３５】
複製命令は、オペランドとしてか、パラメータとしてか、又は、何れかの他の明示的な手法若しくは暗黙的な手法によって、関連付けられたソース仮想アドレス、デスティネーション仮想アドレス、及びデスティネーション・エンティティＩＤを有し得る。デスティネーション・エンティティＩＤは、要求者ＩＤの形式、又は何れかの他の形式の、アプリケーション及び／又は仮想マシンのＩＤを含み得る。複製命令のソース・エンティティＩＤは、複製命令を出すエンティティから示唆され得る。
【００３６】
この実施例では、実行装置１８０は、対応する登録命令からのアクセス情報の記憶に使用された手法によって複製命令が許可される旨を検証する工程、ＭＭＵ１９０にデスティネーション仮想アドレス及びソース仮想アドレスを物理アドレスに変換させる工程、及び、ソース物理アドレスによって識別されるメモリ場所に記憶された情報を、デスティネーション物理アドレスによって識別されるメモリ場所に複製させる工程により、複製命令を実行する。
【００３７】
ＭＭＵ１９０は、ＴＬＢ１９３に照会して、デスティネーション仮想アドレスについてＴＬＢエントリが登録されているかを判定することにより、デスティネーション仮想アドレスをデスティネーション物理アドレスに変換する。肯定の場合、デスティネーション物理アドレスは、ＴＬＢ１９３において見つかる。否定の場合、ＭＭＵ１９０は、ページング・ベース・レジスタ１９２よりもデスティネーションＩＤに関連付けられたポインタ、又はデスティネーションＩＤを使用することによって変換して、デスティネーション・エンティティに適切なデータ構造に索引付けし、ＴＬＢ１９３が保持することが可能なエントリの数を超えるスケーラビリティを提供する。この実施例では、変換ロジック１９１は、単一のドメイン・アドレス変換とは違ったふうにこのアドレス変換を行わせ、上記に表す制御機能を行うためのマルチドメイン変換ロジック１９５を含む。しかし、ページ・ディレクトリ及び／又はページ・テーブル・エントリにおけるステータス、制御、アクセス、又は他のビット若しくはフィールドに基づいたページ・フォールトをもたらすことなどの、一般的にページを保護するためにＭＭＵ１９０によって使用される何れの手法も残り得る。
【００３８】
ＭＭＵ１９０は、単一ドメイン・アドレス変換に関して前述したように、ソース仮想アドレスをソース物理アドレスに変換する。したがって、２つの仮想マシン間の複製は、ＶＭイグジットなしで行い、単一のＶＭの実行コンテクストにおいて複製動作を終了させることを可能にすることができる。本発明の実施例は、複数のＶＭドメインへのアクセスにより、（複製の代わりに、又は複製に加えて）他の命令又は動作を提供することができる。
【００３９】
図２は、方法２００（仮想マシン環境におけるゲスト間の情報を共有する方法）における本発明の実施例を示す。方法の実施例はこの点に限定されないが、図１の仮想化アーキテクチャ１００の説明を参照して、図２の方法の実施例を説明する。
【００４０】
図２のボックス２１０では、プロセッサ１２０上で実行する第１のゲストは、第２のゲストとの情報の共有を起動させるためのプログラム・コールを行う。ボックス２１２では、ＶＭイグジットは、第１のゲストからＶＭＭ１４０へプロセッサ１２０の制御を移管するよう行われる。
【００４１】
ボックス２２０では、ＶＭＭ１４０は前述の通り、割り当て命令を出す。ボックス２２２では、プロセッサ１２０は、１つ又は複数のＴＬＢエントリ場所を第１のゲストに割り当てる。ボックス２２４では、プロセッサ１２０は、要求者ＩＤを、割り当てられたＴＬＢエントリ場所の共有タグ記憶装置場所に記憶する。ボックス２２６では、ＶＭＭは、セキュアな鍵を第１のゲストに戻す。ボックス２２８では、ＶＭエントリは、ＶＭＭ１４０から第１のゲストにプロセッサ１２０の制御を移管するよう行われる。
【００４２】
ボックス２３０では、第１のゲストは、共有するためのページを登録する旨の登録命令を出す。ボックス２３２では、プロセッサ１２０は、セキュアな鍵を検証する。ボックス２３４では、プロセッサ１２０は、割り当てられたＴＬＢエントリに、ページの仮想アドレスを記憶する。ボックス２３６では、プロセッサ１２０は、ページに関連付けられたアクセス情報を記憶する。ボックス２３８では、何れかの所望のメッセージ転送手法により、第１のゲストは、共有情報（例えば、仮想アドレス、及び共有を容易にするための何れかの他の情報）を第２のゲストに向けて通信する。
【００４３】
ボックス２４０では、第２のゲストは、共有情報を受信する。ボックス２４２では、第２のゲストは複製命令を出す。ボックス２４４では、プロセッサ１２０は、デスティネーション・アドレスに関連付けられたアクセス情報を検証する。ボックス２４６では、プロセッサ１２０は、デスティネーション仮想アドレスをデスティネーション物理アドレスに変換する。ボックス２４８では、プロセッサ１２０は、ソース仮想アドレスをソース物理アドレスに変換する。ボックス２５０では、プロセッサ１２０は、ソース物理アドレスによって識別されたメモリ場所の内容をデスティネーション物理アドレスによって識別されたメモリ場所に複製する。
【００４４】
本発明の範囲内で、方法２００は、別の順序でか、例証されたボックスを省略してか、更なるボックスを加えてか、又は、再配列されたか、省略されたか、若しくは更なるボックスの組合せで行うことができる。例えば、プロセッサ１２０は、デスティネーション仮想アドレスの変換の前、又は上記変換と同時にソース仮想アドエスを変換することができる。すなわち、ボックス２４６及び２４８は再編成することができる。
【００４５】
プロセッサ１２０、又は本発明の実施例によって企図された何れか他の構成部分、又は構成部分の一部分は、作成、シミュレーションから製造まで種々の段階で設計することができる。設計を表すデータは、いくつかのやり方において設計を表すことができる。まず、シミュレーションにおいて有用であるように、ハードウェアは、ハードウェア記述言語又は別の機能的記述言語を使用して表すことができる。更に、又は、あるいは、論理及び／又はトランジスタ・ゲートを有する、回路レベルのモデルを設計処理の特定の段階で生成することができる。更に、特定の段階における大半の設計は、種々の装置の物理的な配置を表すデータでモデリングすることができるレベルに達している。通常の半導体製造手法が使用される場合、装置配置モデルを表すデータは、集積回路を生産するために使用するマスクの種々のマスク・レイヤ上の種々の特徴の有無を規定するデータであり得る。
【００４６】
設計の何れの表現においても、データは、マシン読み取り可能媒体の何れかの形態に記憶することが可能である。前述の情報を伝送するよう変調又は他の方法で生成される光波若しくは電波、メモリ、又は磁気記憶装置若しくは光記憶装置（ディスクなど）は、マシン読み取り可能媒体であり得る。前述の媒体は何れも、本発明の実施例において使用される設計又は他の情報を「担持」するか、又は「示し」得る。情報を示すか、又は担持する電気的搬送波が、電気信号の複製、バファリング又は再送信が行われる程度に送信される場合、新たな複製が行われる。よって、通信プロバイダ又はネットワーク・プロバイダの行為は、本発明の手法を実施する対象（例えば、搬送波）の複製の作成を構成し得る。
【００４７】
このように、仮想マシン環境におけるゲスト間で情報を共有する装置、方法及びシステムを開示した。特定の実施例を記載し、添付図面に示しているが、前述の実施例は、広い範囲の発明を例証しているに過ぎず、広い範囲の発明を制限するものでなく、本発明は、示し、記載した特定の構造及び構成に限定されるべきでない。本明細書及び特許請求の範囲を検討すると、当業者には、他の種々の修正が思い浮かび得るからである。例えば、本発明の別の実施例では、情報の共有を要求するエンティティは、デスティネーションよりもソースとしての役目を担うメモリ空間に登録し得る。
【００４８】
成長が速く、更なる進展が容易に予見されない前述のような手法の分野では、本願記載の実施例は、明細書及び特許請求の範囲の原理、又は特許請求の範囲記載の範囲から逸脱しない限り、技術の進展を可能にすることによって容易にされる構成及び詳細において容易に修正可能であり得る。
【図１】
2010503115.tif 000003
【図２】
2010503115.tif 000004
【国際調査報告】
2010503115.tif 000005
2010503115.tif 000006