(57)【要約】  一実施例では、バーチャルマシーン環境における特権イベントを処理する方法は、特権イベントの発生を検出するステップと、複数のバーチャルマシーンモニタ（ＶＭＭ）の何れのＶＭＭが前記特権イベントを処理すべきか判断するステップと、当該ＶＭＭに制御を移行するステップとを有する。
2007505402.tif 000002
【特許請求の範囲】
【請求項１】
特権イベントの発生を検出するステップと、
複数のバーチャルマシーンモニタ（ＶＭＭ）の何れのＶＭＭが前記特権イベントを処理すべきか判断するステップと、
前記複数のＶＭＭの前記ＶＭＭに制御を移行するステップと、
から構成される方法。
【請求項２】
請求項１記載の方法であって、
前記複数のＶＭＭは、メインＶＭＭと１以上のパラレルＶＭＭとを有することを特徴とする方法。
【請求項３】
請求項１記載の方法であって、
前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断するステップは、
前記特権イベントのタイプを判断するステップと、
前記判断されたタイプの特権イベントを処理するよう指定されている前記複数のＶＭＭのＶＭＭを特定するステップと、
から構成されることを特徴とする方法。
【請求項４】
請求項１記載の方法であって、
前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断するステップは、
リソースにおける前記特権イベントに係るフィールドにアクセスするステップと、
前記フィールドの値に基づき前記特権イベントを処理するよう指定されている前記複数のＶＭＭのＶＭＭを特定するステップと、
から構成されることを特徴とする方法。
【請求項５】
請求項４記載の方法であって、
前記特権イベントに係るフィールドは、前記特権イベントのタイプに係るフィールドであることを特徴とする方法。
【請求項６】
請求項４記載の方法であって、
前記特権イベントに係るフィールドは、前記特権イベントの入出力アドレスが属する入出力アドレス範囲に係るフィールドであることを特徴とする方法。
【請求項７】
請求項４記載の方法であって、
前記特権イベントに係るフィールドの値は、予め決定されているか、あるいは動的設定可能であることを特徴とする方法。
【請求項８】
請求項１記載の方法であって、
前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断するステップは、
前記複数のＶＭＭのリソース使用パラメータを評価するステップと、
前記リソース使用パラメータの評価に基づき、前記特権イベントを処理するよう指定されている前記複数のＶＭＭのＶＭＭを特定するステップと、
から構成されることを特徴とする方法。
【請求項９】
請求項４記載の方法であって、
前記リソースは、メモリ、プロセッサ、チップセット及び入出力装置の何れかに常駐することを特徴とする方法。
【請求項１０】
請求項１記載の方法であって、
前記特権イベントは、割込、例外処理、特権命令の実行及びプラットフォームイベントの何れかを表すことを特徴とする方法。
【請求項１１】
請求項１記載の方法であって、
前記特権イベントは、ゲストソフトウェアの動作中に発生することを特徴とする方法。
【請求項１２】
請求項１記載の方法であって、
前記特権イベントは、前記複数のＶＭＭのＶＭＭの動作中に発生することを特徴とする方法。
【請求項１３】
複数のバーチャルマシーンモニタ（ＶＭＭ）と、
特権イベントの発生を検出し、前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断し、前記複数のＶＭＭのＶＭＭに制御を移行するルーティングロジックと、
から構成されることを特徴とするシステム。
【請求項１４】
請求項１３記載のシステムであって、
前記複数のＶＭＭは、メインＶＭＭと１以上のパラレルＶＭＭとを有することを特徴とするシステム。
【請求項１５】
請求項１３記載のシステムであって、
前記ルーティングロジックは、前記特権イベントのタイプを判断し、前記判断されたタイプの特権イベントを処理するよう指定されている前記複数のＶＭＭのＶＭＭを特定することによって、前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断することを特徴とするシステム。
【請求項１６】
請求項１３記載のシステムであって、
前記ルーティングロジックは、前記複数のＶＭＭのリソース使用パラメータを評価し、前記リソース使用パラメータの評価に基づき、前記特権イベントを処理するよう指定されている前記複数のＶＭＭのＶＭＭを特定することによって、前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断することを特徴とするシステム。
【請求項１７】
請求項１３記載のシステムであって、
前記特権イベントは、割込、例外処理、特権命令の実行及びプラットフォームイベントの何れかを表すことを特徴とするシステム。
【請求項１８】
請求項１３記載のシステムであって、
前記特権イベントは、ゲストソフトウェアの動作中に発生することを特徴とするシステム。
【請求項１９】
請求項１３記載のシステムであって、
前記特権イベントは、前記複数のＶＭＭのＶＭＭの動作中に発生することを特徴とするシステム。
【請求項２０】
ゲストソフトウェアと複数のバーチャルマシーンモニタ（ＶＭＭ）とを格納するメモリと、
前記メモリに接続され、前記ゲストソフトウェアを実行し、特権イベントの発生を検出し、前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断し、前記複数のＶＭＭのＶＭＭに制御を移行するプロセッサと、
から構成されることを特徴とするシステム。
【請求項２１】
請求項２０記載のシステムであって、
前記複数のＶＭＭは、メインＶＭＭと１以上のパラレルＶＭＭとを有することを特徴とするシステム。
【請求項２２】
請求項２０記載のシステムであって、
前記プロセッサは、前記特権イベントのタイプを判断し、前記判断されたタイプの特権イベントを処理するよう指定されている前記複数のＶＭＭのＶＭＭを特定することによって、前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断することを特徴とするシステム。
【請求項２３】
請求項２０記載のシステムであって、
前記プロセッサは、前記複数のＶＭＭのリソース使用パラメータを評価し、前記リソース使用パラメータの評価に基づき、前記特権イベントを処理するよう指定されている前記複数のＶＭＭのＶＭＭを特定することによって、前記複数のＶＭＭの何れのＶＭＭが前記特権イベントを処理すべきか判断することを特徴とするシステム。
【請求項２４】
請求項２０記載のシステムであって、
前記特権イベントは、割込、例外処理、特権命令の実行及びプラットフォームイベントの何れかを表すことを特徴とするシステム。
【請求項２５】
請求項２０記載のシステムであって、
前記特権イベントは、ゲストソフトウェアと前記複数のＶＭＭのＶＭＭの何れかの動作中に発生することを特徴とするシステム。
【請求項２６】
処理システムにより実行時、
複数のバーチャルマシーンモニタ（ＶＭＭ）の何れのＶＭＭが前記特権イベントを処理すべきか判断するステップと、
前記複数のＶＭＭの前記ＶＭＭに制御を移行するステップと、
から構成される方法を前記処理システムに実行させる命令を有することを特徴とするマシーン可読媒体。
【請求項２７】
請求項２６記載のマシーン可読媒体であって、
前記複数のＶＭＭは、メインＶＭＭと１以上のパラレルＶＭＭとを有することを特徴とする媒体。
【請求項２８】
請求項２６記載のマシーン可読媒体であって、
前記特権イベントは、割込、例外処理、特権命令の実行及びプラットフォームイベントの何れかを表すことを特徴とする媒体。
【請求項２９】
請求項２０記載のマシーン可読媒体であって、
前記特権イベントは、ゲストソフトウェアと前記複数のＶＭＭのＶＭＭの何れかの動作中に発生することを特徴とする媒体。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［発明の技術分野］
本発明は、一般にバーチャルマシーンに関し、より詳細には、複数のバーチャルマシーンモニタを用いた特権イベント（ｐｒｉｖｉｌｅｇｅｄ  ｅｖｅｎｔ）に関する。
［発明の背景］
従来のバーチャルマシーンモニタ（ＶＭＭ）は、典型的にはコンピュータ上で実行され、他のソフトウェアに１以上のバーチャルマシーンのアブストラクション（ａｂｓｔｒａｃｔｉｏｎ）を提供する。各バーチャルマシーンは、ゲストソフトウェアとして総称されるそれ自身の「ゲストオペレーティングシステム」（すなわち、ＶＭＭによりホストされるオペレーティングシステム（ＯＳ））及び他のソフトウェアを実行させることにより、自己完結したプラットフォームとして機能するかもしれない。ゲストソフトウェアは、それがバーチャルマシーンでなく専用コンピュータ上で実行されているかのように動作すると期待される。すなわち、ゲストソフトウェアは、各種イベントを制御し、ハードウェアリソースにアクセスすると期待される。ハードウェアリソースは、プロセッサ常駐リソース（制御レジスタなど）、メモリ常駐リソース（記述子テーブルなど）、及び基礎となるハードウェアプラットフォームに常駐するリソース（入出力装置など）を有するかもしれない。イベントは、内部割込、外部割込、例外処理、プラットフォームイベント（初期化（ＩＮＩＴ）やシステムマネージメント割込（ＳＭＩ）など）、特定の命令の実行などを含むものであってもよい。
【０００２】
バーチャルマシーン環境では、ＶＭＭは、バーチャルマシーン上で実行されるゲストソフトウェアの適切な処理を提供し、バーチャルマシーン上で実行されるゲストソフトウェアからと、それらの間の保護のため、上記イベントに対する最終的な制御及びハードウェアリソースを有することが可能となるべきである。これを実現するため、ゲストソフトウェアがプロテクトされたリソースにアクセスするとき、あるいは他のイベント（割込や例外処理など）が発生するとき、ＶＭＭは典型的に制御を受け付ける。例えば、ＶＭＭによりサポートされるバーチャルマシーンにおける処理がシステム装置に割込の生成をさせると、現在実行中のバーチャルマシーンは割り込みされ、プロセッサの制御はＶＭＭにわたされる。その後、ＶＭＭは割込を受付け、当該割込自体を処理するか、あるいは当該割込を適切なバーチャルマシーンに送る。
【０００３】
［実施例の説明］
複数のバーチャルマシーンモニタを用いて特権イベントを処理する方法及び装置が説明される。以下の説明では、説明のため、本発明の完全なる理解を提供するために多数の具体的詳細が与えられる。しかしながら、本発明がこれら具体的詳細なしに実現可能であるということは当業者には明らかであろう。
【０００４】
以下の詳細な説明の一部は、コンピュータシステムのレジスタ又はメモリ内のデータビットに対する記号表現及びアルゴリズムに関して与えられる。このようなアルゴリズム的記述及び表現は、データ処理分野における当業者によって、自らの研究の本質を最も効果的に他の当業者に伝えるのに使用される手段である。アルゴリズムは、ここでは、また一般には、所望の結果をもたらす自己矛盾のない処理シーケンスであると考えられる。当該処理は、物理量の物理的操作を要するものである。通常、必要でなくても、これらの量は、格納、転送、合成、比較あるいは操作することが可能な電気又は磁気信号の形態をとる。主として通常の利用のため、上記信号をビット、値、要素、シンボル、文字、項、数字などと呼ぶことが場合によっては便利であるとかわる。
【０００５】
しかしながら、上記及び類似の用語のすべてが適切な物理量に関連付けされるべきであり、当該量に適用される単なる便利なラベルであるということに留意すべきである。特段の断りがない場合、以下の説明から明らかなように、本発明を通じて、「処理」、「計算」、「決定」などの用語を用いた説明は、コンピュータシステムのレジスタ及びメモリ内の物理（電子）量として表されるデータを、コンピュータシステムメモリ、レジスタ又は他の情報ストレージ、送信又は表示装置内の物理量として同様に表される他のデータに変換及び操作するコンピュータシステム又は類似の電子計算装置のアクション及びプロセスを表すかもしれない。
【０００６】
実施例についての以下の詳細な説明では、例示により本発明が実現される具体的実施例を示す添付された図面が参照される。図面では、同様の番号は、いくつかの図面を通じて実質的に同様のコンポーネントを示す。これらの実施例は、当業者が本発明を実現可能となるのに十分詳細に説明される。他の実施例が利用されてもよく、本発明の範囲から逸脱することなく、構成、論理及び電気的変更がなされてもよい。さらに、異なるものではあるが、本発明の各種実施例が必ずしも互いに相容れないものである必要はないということは理解されるべきである。例えば、一実施例に記載される特定の機能、構成又は特徴は、他の実施例に含まれてもよい。従って以下の詳細な説明は、限定的な意味にとられるべきではなく、本発明の範囲は、添付された請求項と当該請求項に付与される権利の均等の完全な範囲のみにより規定される。
【０００７】
以下の例は実行ユニット及びロジック回路に関して本発明の実施例を説明しているが、本発明の他の実施例は、ソフトウェアにより実現することも可能である。例えば、一部の実施例では、本発明は、本発明によるプロセスを実行するようコンピュータ（又は他の電子装置）をプログラムするのに利用可能な命令を格納するコンピュータ可読媒体又はマシーンを有するソフトウェア若しくはコンピュータプログラムプロダクトとして提供されてもよい。他の実施例では、本発明の各ステップは、当該ステップを実行する配線ロジックを含む特定のハードウェアコンポーネント、又はプログラムされたコンピュータコンポーネントとカスタムハードウェアコンポーネントの任意の組み合わせにより実行されるかもしれない。
【０００８】
従って、マシーン可読媒体は、以下に限定されるものではないが、フロッピー（登録商標）ディスケット、光ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、光磁気ディスク、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気又は光カード、フラッシュメモリ、インターネットを介した送信、電気、光、音響又は他の形態の伝搬信号（搬送波、赤外線信号、デジタル信号など）など、マシーン（コンピュータなど）により可読な形態による情報の格納又は送信を行う任意の機構を有するものであってもよい。
【０００９】
さらに、作成からシミュレーション又は製造までの各種段階をデザインは経過する。デザインを表すデータは、いくつかの方法により当該デザインを表すかもしれない。まず、シミュレーションに有用なように、ハードウェアはハードウェア記述言語又は他の機能記述言語を用いて表されるかもしれない。さらに、ロジック及び／又はトランジスタゲートを有する回路レベルモデルが、設計プロセスの一部の段階において生成されるかもしれない。さらに、一部の段階では、ほとんどのデザインが、ハードウェアモデルによる各種装置の物理的配置を表すデータレベルに到達する。従来の半導体製造技術が利用される場合、ハードウェアモデルを表すデータは、集積回路を製造するのに用いられるマスクの各マスクレイヤ上の各種特徴の有無を指定するデータであってもよい。デザインの何れの表現においても、上記データは任意の形態のマシーン可読媒体に格納されてもよい。このような情報を伝送するのに生成又は変調される光又は電気波、あるいはディスクなどの磁気又は光ストレージが、マシーン可読媒体であるかもしれない。上記媒体の何れも、デザイン又はソフトウェア情報を搬送又は示すものであってもよい。コード又はデザインを搬送又は示す電気搬送波が伝送されると、電気信号の複製、バッファリング又は再送が実行される程度まで、新たなコピーが行われる。従って、通信プロバイダ又はネットワークプロバイダは、本発明の技術を実現する物（搬送波）をコピーしてもよい。
【００１０】
図１は、本発明が動作するバーチャルマシーン環境１００の一実施例を示す。本実施例では、ベアプラットフォームハードウェア１１０は、ＶＭＭ１２５などのバーチャルマシーンモニタ（ＶＭＭ）又は標準的なオペレーティングシステム（ＯＳ）を実行可能な計算プラットフォームからなる。
【００１１】
プラットフォームハードウェア１１０は、パーソナルコンピュータ（ＰＣ）、メインフレーム、形態装置、ポータブルコンピュータ、セットトップボックス又は他の何れかの計算システムを有することが可能である。プラットフォームハードウェア１１０は、少なくとも１つのプロセッサ１１２、メモリ１２０及び図示されない他のプラットフォームハードウェア（入出力装置など）を有する。
【００１２】
プロセッサ１１２は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのソフトウェアを実行可能な任意のタイプのプロセッサとすることができる。プロセッサ１１２は、本発明の方法の実施例を実行するためのマイクロコード、プログラマブルロジック又は配線ロジックを有するものであってもよい。
【００１３】
メモリ１２０は、ハードディスク、フロッピー（登録商標）ディスク、ＲＡＭ、ＲＯＭ、フラッシュメモリ若しくは上記装置の任意の組み合わせ、又はプロセッサ１１２により読み出し可能な他の任意のタイプのマシーン媒体とすることができる。メモリ１２０は、本発明の方法の実施例を実行するための命令又はデータを格納するものであってもよい。
【００１４】
典型的にはソフトウェアにより実現されるが、各ＶＭＭ１２５は、より高いレベルのソフトウェアとのベアマシーンインタフェースをエミュレート及びエクスポートするかもしれない。このようなハイレベルソフトウェアは、標準的又はリアルタイムＯＳから構成されてもよいし、限定されたオペレーティングシステムの機能を有するストリップダウン（ｓｔｒｉｐｐｅｄ  ｄｏｗｎ）されたオペレーティング環境であってもよいし、従来のＯＳファシリティなどを有しないものであってもよい。ＶＭＭ１２５は、例えば、ハードウェア、ソフトウェア、ファームウェア、各種技術の組み合わせにより実現されてもよい。
【００１５】
実行の際、各ＶＭＭ１２５は、「ゲスト」ソフトウェア（すなわち、ＶＭＭ１２５以外のソフトウェア）に１以上のバーチャルマシーン（ＶＭ）のアブストラクションを提供する。ＶＭＭ１２５は、同一又は異なるアブストラクションを各ゲストに提供するかもしれない。各ＶＭ上で実行されるゲストソフトウェアは、ゲストＯＳ（ゲストＯＳ１３４、１４４又は１５４など）と、各種ゲストソフトウェアアプリケーション（アプリケーション１３６、１４６及び１５６など）を有するようにしてもよい。ここでは、ゲストＯＳとソフトウェアアプリケーションは、まとめてゲストソフトウェア１０３、１０５及び１１５と呼ばれる。
【００１６】
ゲストソフトウェア１０３、１０５及び１１５は、ゲストソフトウェアが実行されるＶＭ１３２、１４２及び１５２内の物理的リソース（プロセッサレジスタ、メモリ、Ｉ／Ｏ装置など）にアクセスすると予想される。ＶＭＭ１２５は、プラットフォームハードウェア１１０内のリソースに対する最終的な制御を維持しながら、ゲストソフトウェアにより所望されるリソースへのアクセスを容易にする。さらに、ゲストソフトウェア１０３、１０５及び１１５は、例外処理、割込、プラットフォームイベント（初期化（ＩＮＩＴ）、システムマネージメント割込（ＳＭＩ）など）などの各種イベントを処理すると予想される。これらのイベントの一部は「特権」的である。なぜなら、それらはＶＭ１３２、１４２及び１５２並びにゲストソフトウェア１０３、１０５及び１１５の適切な動作を保証し、ゲストソフトウェア１０３、１０５及び１１５から、及びそれらの間の保護のため、ゲストソフトウェアにより処理することができないためである。特権イベントは、ＶＭＭ１２５により処理される。
【００１７】
特に、特定のＶＭＭが各特権イベントを処理するよう特定される。一実施例では、特定のＶＭＭがルーティングロジック１３０を用いて特定される。いくつかの実施例では、ルーティングロジック１３０は、マイクロコード、プログラマブルロジック又は配線ロジックとして実現される。他の実施例では、ルーティングロジック１３０は、メモリ１２０に常駐するソフトウェアとして実現される。さらなる他の実施例では、ルーティングロジック１３０は、ハードウェアとソフトウェアの組み合わせとして実現される。
【００１８】
特定のＶＭＭが特定されると、それはこの特権イベントに対する最終的な制御を保持しながら、ゲストソフトウェアにより所望される機能を容易にする。ゲストソフトウェアに対する機能を容易にする動作は、ＶＭＭにおいて物理的メモリバーチャル化アルゴリズム１２５の一部の広範な動作を含むものであってもよい。ＶＭＭ１２５のこれらの動作は、本発明の範囲を限定するものではない。
【００１９】
システム１００は、プラットフォームハードウェア１１０上で実行される２以上のＶＭＭ１２５を有するものであってもよい。一実施例では、ＶＭＭにおいて物理的メモリバーチャル化アルゴリズム１２５はパラレルに実行され、各ＶＭＭ１２５は、ＶＭから制御を受け取ることができる。図２は、システム１００内のＶＭＭ１２５のこのような構成の一実施例を示す。
【００２０】
図２を参照するに、ＶＭＭ２１０〜２１４の一例となるパラレルな構成が示される。当該構成によると、特権イベントがＶＭの動作中に発生すると、制御がＶＭから特定のＶＭＭに移転される。この特定のＶＭＭは、以下でより詳細に説明されるような基準に基づき特定される。特定のＶＭＭが特定されると、バーチャル化イベントに関する情報が当該ＶＭＭに送信され、制御がそれに移行する。例えば、ＶＭ２０２の動作中に発生する特権イベント１は、ＶＭ２０２からＶＭＭ２１０への移行を実行し、ＶＭ２０２の動作中に発生する特権イベント２は、ＶＭ２０２からＶＭＭ２１２への移行を実行し、ＶＭ２０６の動作中に発生する特権イベント３は、ＶＭ２０６からＶＭＭ２１２への移行を実行し、ＶＭ２０６の動作中に発生する特権イベント４は、ＶＭ２０６からＶＭＭ２１４への移行を実行する。このとき、対応するＶＭＭは、バーチャル化イベントを処理し、制御の受信元のＶＭに制御を返すようにしてもよい。一実施例では、ＶＭＭからＶＭへの制御の移行は、特別な命令を実行することにより実現される。ＶＭＭからＶＭへの制御の移行は、ＶＭエントリとここでは呼ばれ、ＶＭからＶＭＭへの制御の移行は、ここではＶＭイグジットと呼ばれる。
【００２１】
一実施例では、ＶＭイグジットが行われると、制御は、メモリに常駐するバーチャルマシーン制御構成（ＶＭＣＳ）に示される特定のエントリポイント（命令ポインタ値など）においてＶＭＭにわたされ、プロセッサにより維持される。他の実施例では、制御は、（Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）４のプロセッサインストラクションセットアーキテクチャ（ＩＳＡ）の割込記述子テーブルなど（ここでは、ＩＡ−３２ＩＳＡと呼ぶ））リダイレクション構成を介したベクター処理後、ＶＭＭにわたされる。あるいは、当該技術分野において知られる他の何れかの機構を利用して、ＶＭからＶＭＭへの制御の移行を行うことができる。
【００２２】
特権イベントは、ＶＭＭの処理中に発生するかもしれない。ＶＭＭの処理中に発生する特権イベントの例として、システムマネージメント割込（ＳＭＩ）、ＩＮＩＴ、ノンマスカブル割込（ＮＭＩ）、ハードウェア割込、インタープロセッサ割込（ＩＰＩ）などがあげられる。一実施例では、特権イベントがＶＭＭの処理中に発生すると、ルーティングロジックを用いて、当該特権イベントを処理するのに指定されるＶＭＭを特定する。指定されたＶＭＭが現在動作中ではないＶＭＭである場合、特権イベントに関する情報は指定されたＶＭＭに送られ、それに制御が移行される。例えば、特権イベント５がＶＭＭ２１０の処理中に発生すると、ＶＭＭ２１０からＶＭＭ２１２への移行が行われる。その後、ＶＭＭ２１２は、特権イベントを処理し、ＶＭＭ２１０に制御を返すかもしれない。従って、ＶＭＭ２１０とＶＭＭ２１２とのやりとりでは、ＶＭＭ２１０はＶＭの役割を担う。従って一実施例では、ＶＭとＶＭＭとの間の制御の移転に関して上述されたものと類似したＶＭイグジットエントリ機構を利用して、ＶＭＭ間の制御の移行が行われる。
【００２３】
図３は、複数のＶＭＭを有するバーチャルマシーン環境における特権イベントを処理するプロセス３００の一実施例のフロー図である。当該プロセスは、ハードウェア（回路、専用ロジック、プログラマブルロジック、マイクロコードなど）、ソフトウェア（汎用コンピュータシステム又は専用マシーン上で実行されるような）、又は両者の組み合わせからなる処理ロジックにより実行される。
【００２４】
図３を参照するに、プロセス３００は、処理ロジックが特権イベントの発生を検出することから開始される（処理ブロック３０２）。特権イベントは、現在実行中のソフトウェアにより処理されるべきでないイベントである。このような特権イベントは、例外処理、割込、プラットフォームイベント、「特権」命令の実行（実行されることによりＶＭイグジットを引き起こす命令）などを含む。特権イベントは、ＶＭＭの動作中又はゲストソフトウェアの動作中に発生するかもしれない。
【００２５】
処理ブロック３０４において、処理ロジックは、複数のＶＭＭの何れが特権イベントを処理すべきか判断する。この判定は、特権イベントの特性、ＶＭＭにより変更可能な指定されたフィールドの現在値、ＶＭＭの動作パラメータ、ゲストソフトウェアの動作パラメータなどの各種要因に基づき行われるかもしれない。一例として、図４に関して以下で詳細に説明されるような特権イベントのタイプに基づき決定されるかもしれない。他の例では、図６に関して以下で詳細に説明されるような複数のＶＭＭの１つにより設定される制御フィールドの現在値に基づき決定がされるかもしれない。さらなる他の例では、図７に関して以下で詳細に説明されるようなＶＭＭの使用特性及び／又はロードの評価に基づき決定がされるかもしれない。さらなる他の例では、上記要因の組み合わせに基づき、決定がされる。
【００２６】
何れのＶＭＭが特権イベントを処理すべきか処理ロジックが決定すると、それは、指定されたＶＭＭに特権イベントに関する情報を送り、当該ＶＭＭに制御を移行する（処理ブロック３０６）。その後、ＶＭＭは、特権イベントを自ら処理するか、あるいは、それを処理のためゲストソフトウェアにわたしてもよい。
【００２７】
図４、６及び７は、特権イベントを処理するＶＭＭを特定するプロセスの実施例を示す。当該プロセスは、ハードウェア（回路、専用ロジック、プログラマブルロジック、マイクロコードなど）、ソフトウェア（汎用コンピュータシステム又は専用マシーン上で実行されるものなど）、又は両者の組み合わせからなる処理ロジックにより処理される。
【００２８】
図４を参照するに、プロセス４００は、処理ロジックがゲストソフトウェア又はＶＭＭの動作中に特権イベントの発生を検出することにより開始される（処理ブロック４０２）。処理ブロック４０４において、処理ロジックは、特権イベントのタイプを特定する。次に、処理ロジックは、何れのＶＭＭが当該タイプの特権イベントを処理するよう指定されているか判断する（処理ブロック４０６）。一実施例では、各イベントタイプは、特定のＶＭＭに統計的にマッピングされる（配線ロジックを利用するなど）。他の実施例では、図６に関して以下で説明されるように、この決定は動的に行われる。さらなる他の実施例では、統計的に決定されたＶＭＭと動的に決定されたＶＭＭの組み合わせが利用される。すなわち、一部のイベントタイプは、対応するＶＭＭに統計的にマッピングされ、他のイベントタイプは、決定のためのいくつかの追加的なプロセッサ処理を必要とするかもしれない。
【００２９】
現在動作中のエンティティが指定されたＶＭＭでない場合（判定ブロック４０８）、処理ロジックは、指定されたＶＭＭに制御をわたす（処理ブロック４１０）。一実施例では、指定されたＶＭＭへの移行は、ＶＭイグジットを生成することにより実行されるかもしれない。あるいは、当該技術分野において知られる他の何れかの機構を利用して、指定されたＶＭＭへの制御の移行が行われるかもしれない。
【００３０】
現在動作中のエンティティが指定されたＶＭＭである場合、当該イベントは現在実行中のＶＭＭに送られる（処理ブロック４１２）。一実施例では、ＶＭＭへのイベントの送信は、ＶＭＭからそれ自体へのＶＭイグジットを合成することにより実行される。他の実施例では、それが非バーチャルマシーン環境において送信されるとき（例えば、割込記述子テーブルを介しベクター処理されることにより、あるいは、システムマネージメントモードに移行されることによってなど）、当該イベントは送信される。当該技術分野において知られる他の各種機構を用いて、当該イベントを現在実行中のＶＭＭに送信してもよいということに留意すべきである。
【００３１】
図５は、本発明の一実施例による２つのＶＭＭを有するバーチャルマシーン環境におけるプロセス４００の一例となる使用を示す。２つのＶＭＭの１つ（ＶＭＭ５０８など）が、あるプラットフォームイベントを処理するのに排他的に指定される（例えば、システムマネージメント割込（ＳＭＩ）、ＩＰＩ、ノンマスカブル割込など）。ＶＭＭ５０８は、プラットフォームＶＭＭ（ＰＶＭＭ）と呼ばれる。一部の実施例では、ＰＶＭＭはＳＭＩのみを処理するのに指定される。他の実施例では、ＰＶＭＭは、ＳＭＩと共に他のイベントタイプも処理する。さらなる他の実施例では、それぞれが異なるプラットフォームイベントを処理する複数のＰＶＭＭが使用される。
【００３２】
特権イベントが発生すると、ルーティングロジック５１０は、当該イベントのタイプを決定する。当該イベントがＰＶＭＭ５０８により処理されるべきプラットフォームイベントである場合、ルーティングロジック５１０はそれをＶＭＭ５０８にわたす。そうでない場合、当該イベントは、ＶＭＭ５０６にわたされる。図５に示されるように、ルーティングロジック５１０は、ゲストソフトウェアの動作中、又はＶＭＭの動作中に発生するイベントをわたすようにしてもよい。
【００３３】
ＶＭＭへのイベントのルーティングは、当該イベントが発生する際にどのエンティティが実行されていたかに応じて異なるかもしれない。ゲストソフトウェアが実行されていた場合、一実施例ではＶＭイグジットを介し、ルーティングロジック５１０により選択されたＶＭＭへの移行が行われる。ルーティングロジックにより選択されたＶＭＭがイベント発生時に実行されていた場合、当該イベントは、図４に関して上述されるような各種機構を介しＶＭＭに送られてもよい。
【００３４】
あるプラットフォームイベントを排他的に処理するように指定された第２のＶＭＭを使用することにより、ハードウェアベンダーとＯＳベンダーとの間の製品依存を解消することができる。すなわち、プラットフォームハードウェアベンダーは、ＯＳベンダーから独立して第２ＶＭＭ（ＰＶＭＭ）のコードを開発することが可能となる。同様に、ＯＳベンダーは、ハードウェアベンダーとは独立に第１ＶＭＭのコードを開発することができる。さらに、異なる機能を実行する２つのＶＭＭを使用することにより、システムセキュリティを向上させ、セキュリティの検証が必要なコードの開示を制限することが可能となる。
【００３５】
図６を参照するに、プロセス６００は、処理ロジックがゲストソフトウェア又はＶＭＭの動作中に特権イベントの発生を検出することにより開始される（処理ブロック６０２）。処理ブロック６０４において、処理ロジックは、特権イベントを特定する情報を受信する。次に、処理ロジックは、特権イベントを処理するＶＭＭの選択を制御し（処理ブロック６０６）、特権イベントの識別子に係るリソースフィールドの現在値を読む（処理ブロック６０８）リソース（インメモリデータ構造、プロセッサレジスタ。プラットフォームのメモリ、入出力装置のレジスタなど）にアクセスする。
【００３６】
一実施例では、特権イベントの識別子は特権イベントのタイプであり、処理ロジックは、この特権イベントのタイプに係るリソースフィールド値を特定するため。特権イベントのタイプを利用する。
【００３７】
他の実施例では、識別情報は、特権イベントに係る特定の入出力アドレスを特定する。本実施例では、処理ロジックは、特権イベントに係る入出力アクセスを解析し、どの入出力アドレスがアクセスされているか判断し、その後、この入出力アドレスを用いて、決定された入出力アドレスが属する入出力アドレス範囲に係るリソースフィールド値を検出する。一実施例では、リソースフィールドの値は、初期化中に設定され、変更することはできない。他の実施例では、リソースフィールドの値は、セキュリティ要求、ＶＭＭのプラットフォームの知識などの要因に基づき、ＶＭＭ（メインＶＭＭなど）により動的に設定することができる。このリソースフィールド値の動的設定は、ＶＭＭ機能が分割されることを可能にし、おそらくセキュリティ、システムパフォーマンス、開発方法などを向上させることができる。
【００３８】
さらに、処理ロジックは、どのＶＭＭが対応する値の現在値に基づき特権イベントを処理するよう指定され（処理ブロック６１０）、現在動作中のエンティティが指定されたＶＭＭでない場合（判定ボックス６１２）、指定されたＶＭＭに制御を移行する（処理ブロック６１４）。一実施例では、指定されたＶＭＭへの移行は、ＶＭイグジットを生成することにより実現されてもよい。あるいは、指定されたＶＭＭへの移行は、当該技術分野における他の何れかの機構を介し実現されてもよい。
【００３９】
指定されたＶＭＭが現在動作中のエンティティである場合、処理ロジックは、図４及び５に関して上述されたように、当該ＶＭＭにイベントを送る（処理ブロック６１６）。
【００４０】
図７を参照するに、プロセス７００は、処理ロジックがゲストソフトウェア又はＶＭＭの動作中に特権イベントの発生を検出することにより開始される（処理ブロック７０２）。処理ブロック７０４において、処理ロジックは、システムの各ＶＭＭのリソース使用／ロードパラメータを特定する。次に、処理ロジックは、ロードバランシングに関して、ＶＭＭのリソース使用及び／又はロードパラメータを評価し（処理ブロック７０６）、上記ロードバランシング評価に基づき、どのＶＭＭが特権イベントを処理する最善の候補であるか決定する（処理ブロック７０８）。さらに、現在動作中のエンティティがこの最善の候補として特定されたＶＭＭ出はない場合（判定ボックス７１２）、処理ロジックは、特定されたＶＭＭに制御を移行する（処理ブロック７１４）。一実施例では、特定されたＶＭＭへの移行は、ＶＭイグジットを生成することにより実現されてもよい。あるいは、特定されたＶＭＭへの移行は、当該技術分野の他の何れかの機構により実現されてもよい。
【００４１】
指定されたＶＭＭが現在動作中である場合、処理ロジックは、図４〜６に関して上述されたように、当該ＶＭＭにイベントを送る（処理ブロック７１６）。
【００４２】
従って、複数のＶＭＭを利用して特権イベントを処理する方法及び装置が、説明された。上記説明は限定的なものではなく、例示的なものであるということは理解されるべきである。他の多くの実施例が、上記説明を読み理解することにより、当業者に明らかとなるであろう。従って本発明の範囲は、添付された請求項と当該請求項に権利付与される均等物の完全な範囲を参照することにより決定されるべきである。
【図面の簡単な説明】
【００４３】
【図１】図１は、本発明が動作可能なバーチャルマシーン環境の一実施例を示す。
【図２】図２は、バーチャルマシーン環境における複数のＶＭＭの構成を示す。
【図３】図３は、複数のＶＭＭを有するバーチャルマシーン環境における特権イベントを処理するプロセスの一実施例のフロー図である。
【図４】図４は、特権イベントを処理するＶＭＭを特定するプロセスの実施例を示す。
【図５】図５は、２つのＶＭＭを有するバーチャルマシーン環境におけるプロセス４００の一例となる使用を示す。
【図６】図６は、特権イベントを処理するＶＭＭを特定するプロセスの実施例を示す。
【図７】図７は、特権イベントを処理するＶＭＭを特定するプロセスの実施例を示す。
【図１】
2007505402.tif 000003
【図２】
2007505402.tif 000004
【図３】
2007505402.tif 000005
【図４】
2007505402.tif 000006
【図５】
2007505402.tif 000007
【図６】
2007505402.tif 000008
【図７】
2007505402.tif 000009
【国際調査報告】
2007505402.tif 000010
2007505402.tif 000011
2007505402.tif 000012