(57)【要約】  コンテキスト変更を仮想化する仮想化アルゴリズムを選択する方法である。コンテキストをイグジットするためおよびコンテキストにエンターするためにイグジット−エンター時間（ＥＥＴ）が、マシン状態をセーブおよびリストアするためにセーブ−リストア時間（ＳＲＴ）が計算される。選択的アルゴリズムは、コンテキスト変更が実行された場合、マシン状態を選択的にセーブおよびリストアする。選択的アルゴリズムの実行中、ＥＥＴオーバヘッドの期待値とＳＲＴオーバヘッドの期待値に関する統計が収集される。ＥＥＴオーバヘッドの期待値とＳＲＴオーバヘッドの期待値に基づいて、選択的アルゴリズムのコストが計算される。選択的アルゴリズムのコストは、コンテキスト変更の際に常にマシン状態をセーブおよびリストアする無条件アルゴリズムのコストであるＳＲＴの２倍と比較される。最小のコストを有する選択的アルゴリズムまたは無条件アルゴリズムのうちの１つが、仮想化アルゴリズムとして選択される。
2008500652.tif 000002
【特許請求の範囲】
【請求項１】
コンテキストからイグジットしおよびコンテキストにエンターするためのイグジット−エンター時間（ＥＥＴ）と、マシン状態をセーブおよびリストアするためのセーブ−リストア時間（ＳＲＴ）とを計算することと、  
選択されたコンテキスト変更の際に前記マシン状態をセーブおよびリストアする選択的アルゴリズムを実行して、前記選択的アルゴリズムの実行中にＥＥＴオーバヘッドの期待値およびＳＲＴオーバヘッドの期待値に関する統計を収集することと、
前記ＥＥＴオーバヘッドの期待値および前記ＳＲＴオーバヘッドの期待値を用いて前記選択的アルゴリズムのコストを計算することと、
前記選択的アルゴリズムの前記コストを、コンテキスト変更の際に常に前記マシン状態をセーブおよびリストアする無条件アルゴリズムの前記コストである、ＳＲＴの２倍と比較することと、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうち、最小のコストを有する１つのアルゴリズムを、コンテキスト変更を仮想化するための仮想化アルゴリズムとして選択することと
を備える方法。
【請求項２】
前記ＥＥＴおよび前記ＳＲＴの計算は１回のみ実行され、前記ＥＥＴおよび前記ＳＲＴはセーブされる、請求項１に記載の方法。
【請求項３】
前記選択的アルゴリズムは、前記マシン状態の使用を可能にする非特権的命令群が仮想マシン（ＶＭ）から使用可能である場合にのみ、制御を前記ＶＭに移行する前に前記マシン状態をセーブおよびリストアする請求項１に記載の方法。
【請求項４】
統計の収集は、
前記ＶＭに制御が移行される前に前記マシン状態がセーブされず、かつ、前記マシン状態が前記ＶＭによって使用されない、発生の第１の割合を取得することと、
前記ＶＭに制御が移行される前に前記マシン状態がセーブされず、かつ、前記マシン状態が前記ＶＭによって使用される、発生の第２の割合を取得することと
を含み、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうちの１つを選択することは、
ＥＥＴおよびＳＲＴの割合を前記第１の割合および前記第２の割合と比較すること
を含む請求項３に記載の方法。
【請求項５】
前記選択的アルゴリズムは、プロセッサがマシン状態を使用する全命令群を仮想マシン（ＶＭ）に対して特権化するように、プロセッサの構成を仮想化し、仮想マシン（ＶＭ）が前記マシン状態を使用する特権的命令群を実行する場合にのみ、前記ＶＭへの制御の移行に関連して、前記マシン状態をセーブおよびリストアする請求項１に記載の方法。
【請求項６】
統計の収集は、
前記ＶＭによって前記マシン状態が使用されない実行の割合を取得することと、
前記ＶＭの各実行によって発生される例外の平均回数を取得することと
を含み、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうちの１つを選択することは、
ＥＥＴおよびＳＲＴの割合を前記実行の割合および前記例外の平均回数の割合と比較すること
を含む請求項５に記載の方法。
【請求項７】
実行、収集、計算、および選択は、定期的に実行される請求項１に記載の方法。
【請求項８】
コンテキスト変更の際に、前記マシン状態を選択的にセーブおよびリストアする第２の選択的アルゴリズムを実行することと、
前記第２の選択的アルゴリズムに対してコンテキスト変更毎のＥＥＴの期待値およびＳＲＴの期待値の統計を収集することと、
コンテキスト変更毎の前記ＥＥＴの期待値とコンテキスト変更毎の前記ＳＲＴの期待値とに基づいて、前記第２の選択的アルゴリズムの第３のコストを計算することと、
前記無条件アルゴリズム、前記選択的アルゴリズム、または前記第２の選択的アルゴリズムのうち、最小のコストを有する１つのアルゴリズムを選択することと
を更に備える請求項１に記載の方法。
【請求項９】
データを有するマシンアクセス可能な媒体を備える製品であって、プロセッサによってアクセスされた場合に、前記プロセッサに、
コンテキストからイグジットおよびコンテキストにエンターするためにイグジット−エンター時間（ＥＥＴ）を、マシン状態をセーブおよびリストアするためにセーブ−リストア時間（ＳＲＴ）を計算することと、
選択されたコンテキスト変更の際に前記マシン状態をセーブおよびリストアする選択的アルゴリズムを実行して、前記選択的アルゴリズムの実行中にＥＥＴオーバヘッドの期待値およびＳＲＴオーバヘッドの期待値に関する統計を収集することと、
前記ＥＥＴオーバヘッドの期待値および前記ＳＲＴオーバヘッドの期待値を用いて前記選択的アルゴリズムのコストを計算し、
前記選択的アルゴリズムの前記コストを、コンテキスト変更の際に常に前記マシン状態をセーブおよびリストアする無条件アルゴリズムの前記コストである、ＳＲＴの２倍と比較することと、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうち、最小のコストを有する１つのアルゴリズムを、コンテキスト変更を仮想化するための仮想化アルゴリズムとして選択することと
を実行させる製品。
【請求項１０】
前記ＥＥＴおよび前記ＳＲＴの計算は１回のみ実行され、前記ＥＥＴおよび前記ＳＲＴはセーブされる、請求項９に記載の製品。
【請求項１１】
前記選択的アルゴリズムは、前記マシン状態の使用を可能にする非特権的命令群が仮想マシン（ＶＭ）から使用可能である場合にのみ、制御を前記ＶＭに移行する前に前記マシン状態をセーブおよびリストアする請求項９に記載の製品。
【請求項１２】
統計の収集は、
前記ＶＭに制御が移行される前に前記マシン状態がセーブされず、かつ、前記マシン状態が前記ＶＭによって使用されない、発生の第１の割合を取得することと、
前記ＶＭに制御が移行される前に前記マシン状態がセーブされず、かつ、前記マシン状態が前記ＶＭによって使用される、発生の第２の割合を取得することと
を含み、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうちの１つを選択することは、
ＥＥＴおよびＳＲＴの割合を前記第１の割合および前記第２の割合と比較すること
を含む請求項１１に記載の製品。
【請求項１３】
前記選択的アルゴリズムは、プロセッサがマシン状態を使用する全命令群を仮想マシン（ＶＭ）に対して特権化するように、プロセッサの構成を仮想化し、仮想マシン（ＶＭ）が前記マシン状態を使用する特権的命令群を実行する場合にのみ、前記ＶＭへの制御の移行に関連して、前記マシン状態をセーブおよびリストアする請求項９に記載の製品。
【請求項１４】
統計の収集は、
前記ＶＭによって前記マシン状態が使用されない実行の割合を取得することと、
前記ＶＭの各実行によって発生される例外の平均回数を取得することと
を含み、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうちの１つを選択することは、
ＥＥＴおよびＳＲＴの割合を前記実行の割合および前記例外の平均回数の割合と比較すること
を含む請求項１３に記載の製品。
【請求項１５】
実行、収集、計算、および選択は、定期的に実行される請求項９に記載の製品。
【請求項１６】
データを有する前記マシンアクセス可能な媒体は、更に、プロセッサによってアクセスされた場合に、前記プロセッサに、
コンテキスト変更の際に、
ＳＲＴの２倍の第１のコストを有し、コンテキスト変更毎にマシン状態をセーブおよびリストアする無条件アルゴリズムではなく、前記マシン状態を選択的にセーブおよびリストアする第２の選択的アルゴリズムを実行することと、
前記第２の選択的アルゴリズムに対してコンテキスト変更毎のＥＥＴの期待値およびＳＲＴの期待値の統計を収集することと、
コンテキスト変更毎の前記ＥＥＴの期待値およびコンテキスト変更毎の前記ＳＲＴの期待値として、前記第２の選択的アルゴリズムの第３のコストを計算することと、
前記無条件アルゴリズム、前記選択的アルゴリズム、または前記第２の選択的アルゴリズムのうち、最小のコストを有する１つのアルゴリズムを選択することと
を実行させる請求項９に記載の製品。
【請求項１７】
マシン状態を提供し、前記マシン状態を使用する全命令群を特権的にできるプロセッサと、
前記プロセッサに接続され、ＳＤＲＡＭメモリおよびＲＤＲＡＭメモリのうちの１つから選択され、前記プロセッサによってアクセスされた場合に前記プロセッサに動作を実行させるメモリと
を備え、
前記動作は、
コンテキストからイグジットおよびコンテキストにエンターするためにイグジット−エンター時間（ＥＥＴ）を、マシン状態をセーブおよびリストアするためにセーブ−リストア時間（ＳＲＴ）を計算することと、
選択されたコンテキスト変更の際に前記マシン状態をセーブおよびリストアする選択的アルゴリズムを実行して、前記選択的アルゴリズムの実行中にＥＥＴオーバヘッドの期待値およびＳＲＴオーバヘッドの期待値に関する統計を収集することと、
前記ＥＥＴオーバヘッドの期待値および前記ＳＲＴオーバヘッドの期待値を用いて前記選択的アルゴリズムのコストを計算し、
前記選択的アルゴリズムの前記コストを、コンテキスト変更の際に常に前記マシン状態をセーブおよびリストアする無条件アルゴリズムの前記コストである、ＳＲＴの２倍と比較することと、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうち、最小のコストを有する１つのアルゴリズムを、コンテキスト変更を仮想化するための仮想化アルゴリズムとして選択することと
を有するシステム。
【請求項１８】
前記ＥＥＴおよび前記ＳＲＴの計算は１回のみ実行され、前記ＥＥＴおよび前記ＳＲＴはセーブされる、請求項１７に記載のシステム。
【請求項１９】
前記選択的アルゴリズムは、前記マシン状態の使用を可能にする非特権的命令群が仮想マシン（ＶＭ）から使用可能である場合にのみ、制御を前記ＶＭに移行する前に前記マシン状態をセーブおよびリストアする請求項１７に記載のシステム。
【請求項２０】
統計の収集は、
前記ＶＭに制御が移行される前に前記マシン状態がセーブされず、かつ、前記マシン状態が前記ＶＭによって使用されない、発生の第１の割合を取得することと、
前記ＶＭに制御が移行される前に前記マシン状態がセーブされず、かつ、前記マシン状態が前記ＶＭによって使用される、発生の第２の割合を取得することと
を含み、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうちの１つを選択することは、
ＥＥＴおよびＳＲＴの割合を前記第１の割合および前記第２の割合と比較すること
を含む請求項１９に記載のシステム。
【請求項２１】
前記選択的アルゴリズムは、プロセッサがマシン状態を使用する全命令群を仮想マシン（ＶＭ）に対して特権化するように、プロセッサの構成を仮想化し、仮想マシン（ＶＭ）が前記マシン状態を使用する特権的命令群を実行する場合にのみ、前記ＶＭへの制御の移行に関連して、前記マシン状態をセーブおよびリストアする請求項１７に記載のシステム。
【請求項２２】
統計の収集は、
前記ＶＭによって前記マシン状態が使用されない実行の割合を取得することと、
前記ＶＭの各実行によって発生される例外の平均回数を取得することと
を含み、
前記選択的アルゴリズムまたは前記無条件アルゴリズムのうちの１つを選択することは、
ＥＥＴおよびＳＲＴの割合を前記実行の割合および前記例外の平均回数の割合と比較すること
を含む請求項２１に記載のシステム。
【請求項２３】
実行、収集、計算、および選択は、定期的に実行される請求項１７に記載のシステム。
【請求項２４】
前記メモリは、前記プロセッサによってアクセスされた場合に、前記プロセッサに更に動作を実行させるデータを有し、
前記動作は、
コンテキスト変更の際に、前記マシン状態を選択的にセーブおよびリストアする第２の選択的アルゴリズムを実行することと、
前記第２の選択的アルゴリズムに対してコンテキスト変更毎のＥＥＴの期待値およびＳＲＴの期待値の統計を収集することと、
コンテキスト変更毎の前記ＥＥＴの期待値およびコンテキスト変更毎の前記ＳＲＴの期待値として、前記第２の選択的アルゴリズムの第３のコストを計算することと、
前記無条件アルゴリズム、前記選択的アルゴリズム、または前記第２の選択的アルゴリズムのうち、最小のコストを有する１つのアルゴリズムを選択することと
を更に備える請求項１７に記載のシステム。    
【発明の詳細な説明】
【背景技術】
【０００１】
仮想マシン（ＶＭ）は、効率的な、現実のコンピュータシステムの隔離された複製である。複数のＶＭが、単一の現実のシステムによって同時に提供されうる。現実のシステムは、オペレーティングシステムまたはアプリケーションソフトウェアが使用できる、多くのリソースを有しうる。プロセッサとしても称される中央演算処理装置（ＣＰＵ）と、マザーボードチップセットとは、データ処理、メモリ割り当て、および入出力（Ｉ／Ｏ）処理のための命令群セットおよび他の基礎的な要素を提供しうる。現実のシステムは、更に、メモリ、ビデオ、オーディオ、ディスク駆動装置、およびポート（ユニバーサルシリアルバス、パラレル、シリアル）のようなハードウェアデバイスおよびリソースを含んでもよい。現実のシステムにおいて、基本Ｉ／Ｏシステム（ＢＩＯＳ）は、オペレーティングシステムが種々のマザーボードおよびＩ／Ｏリソースにアクセスするために使用できる、低レベルインタフェースを提供する。現実のシステムでは、ハードウェアデバイスにアクセスする場合、オペレーティングシステムは、概して、物理ハードウェアデバイスメモリまたはＩ／Ｏポートとのインタフェースを直接行う、低レベルデバイスドライバを介して  通信する。
【０００２】
システムが仮想マシン環境をホストしている場合、１つ以上のゲストソフトウェアアプリケーションは、各ゲストソフトウェアアプリケーション（ゲスト）がシステムを独占的に制御しているかのように実行できる形で、ＣＰＵによって実行されうる。これを行うためには、ゲストが他のゲストの実行と競合する形でシステムの状態を変更することを防ぐことを目的として、ＣＰＵが仮想マシンモニタ（ＶＭＭ）をゲストと共に実行することを必要としうる。ＶＭＭは、モニタと称されることができる。ＶＭＭは、ソフトウェア、ファームウェア、ハードウェア、またはこれらのうちの２つ以上の組合せとして提供されうる。
【０００３】
ＶＭＭは、プロセッサを、ＣＰＵの状態を変えることができかつ他のゲストとの競合を生じうる特定の命令群の実行が、命令の実行をトラップし、かつ、制御をＶＭＭに移行するモードに置くことができる。トラップされた命令群は、特権的命令群と称されることができる。そして、ＶＭＭは、ゲストによる特権的命令実行の試みを、プロセッサが他のゲストの実行と干渉する状態に置かれることを防ぎつつ、命令のトラップがゲストから認識されない形で処理することができる。ハードウェアに対して直接実行しているように認識される、ハードウェア状態を調査または変更する特権的命令をゲストが実行する場合、特権的命令群は、ＶＭによって仮想化され、ＶＭＭに移行される。
【０００４】
ＶＭＭへのトラップが生じた場合、ＶＭＭは、ゲストによって特権的命令が実行されたときのプロセッサの状態をセーブしうる。そして、制御がゲストに戻される前に、ＶＭＭは、プロセッサの状態を特権的命令の実行後にあるべき状態にリストアする。ゲストからＶＭＭへのトラップは、ＶＭＥＸＩＴと称される。モニタは、集合的にＶＭＥＮＴＥＲと称されうるＶＭＲＥＳＵＭＥまたはＶＭＬＡＵＮＣＨ命令のいずれかを用いて、ゲストをレジュームしうる。ＶＭＥＸＩＴおよびＶＭＥＮＴＥＲのペアによって消費される時間は、イグジット−エンター時間（ＥＥＴ）と称される。
【図面の簡単な説明】
【０００５】
【図１】本発明を実施するコンピュータシステムのブロック図である。
【０００６】
【図２】図１に示されるコンピュータシステムのランダムアクセスメモリにおけるデータのレイアウトである。
【０００７】
【図３】無条件仮想化アルゴリズムを用いた制御のＶＭへの移行を示すフロー図である。
【０００８】
【図４】無条件仮想化アルゴリズムを用いた制御のＶＭＭへの移行を示すフロー図である。
【０００９】
【図５】ＶＭが制御と共にＦＰＵを使用する非特権的命令を受け取った場合にのみ、ＦＰＵ状態をセーブする選択的仮想化アルゴリズムを示すフロー図である。
【００１０】
【図６】制御が移行される前に命令にＦＰＵ特権的命令を使用させる選択的仮想化アルゴリズムを用いた、制御のＶＭへの移行を示すフロー図である。
【００１１】
【図７】図６に示されるＶＭへのエントリー後の例外を用いるＦＰＵの処理を示すフロー図である。
【００１２】
【図８】図６に示されるＶＭへのエントリー後の状態フラグ変更例外の処理を示すフロー図である。
【００１３】
【図９】図６に示すようにＶＭＭからＶＭにエンターされた制御の移行を示すフロー図である。
【００１４】
【図１０】仮想化アルゴリズムを選択するための適応アルゴリズムを示すフロー図である。
【発明を実施するための最良の形態】
【００１５】
以下の説明において、多数の具体的な詳細が、記載される。しかし、本発明の実施例は、これらの具体的な詳細なしで実施されることができると理解されるであろう。他の例においては、周知の回路、構造、および技術は、本説明の理解を不明瞭にしないことを目的として、詳細に説明されない。
【００１６】
図１に示すように、コンピュータシステムは、ランダムアクセスメモリ（ＲＡＭ）３０に接続された、プロセッサとも称される中央演算処理装置（ＣＰＵ）１０を含むことができる。メモリブリッジ２０は、プロセッサ１０をメモリ３０に接続しうる。ＲＡＭは、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、ＲＡＭＢＵＳ（登録商標）ダイナミックランダムアクセスメモリ（ＲＤＲＡＭ）、または、拡張データ出力ランダムアクセスメモリ（ＥＤＯ  ＲＡＭ）のような、多様なタイプのメモリのうちのいずれであってもよい。
【００１７】
コンピュータシステムは、プロセッサ１０に接続された多くのデバイスを含むことができる。ビデオデバイス２２は、メモリブリッジ２０を介してプロセッサ１０からデータを受け取ることができる、ビジュアルディスプレイを提供しうる。メモリブリッジは、また、Ｉ／Ｏブリッジ４０に接続されうる。Ｉ／Ｏブリッジは、ディスクドライブ４２、種々の拡張カードをサポートするＰｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス４４、タイマーおよび電力制御デバイスのようなローカル入出力デバイス４６、およびユニバーサルシリアルバス（ＵＳＢ）４８コネクタのような種々のデバイスに、次々に接続されうる。
【００１８】
ＲＡＭ３０は、プロセッサ１０によって実行されうる実行可能な命令群を表すデータをロードすることができる。ＲＡＭ３０は、更に、特定の条件が検出された場合に実行されるルーチンへのポインタのような、プロセッサの実行を制御することを目的としてプロセッサによって使用されるデータ構造群と、プロセッサによって使用されているデータを一時的に保持することを目的とした、データスタックのようなデータ構造と、タスクコンテキストのような処理環境を定義することを目的とした他のデータ構造とを含んでもよい。プロセッサ１０によってアクセス可能なＲＡＭ３０の量は、コンピュータシステム内に物理的に存在するＲＡＭの量を上回ることができると理解されるであろう。プロセッサ１０に対して、全てのアクセス可能なＲＡＭが存在するように認識させることを目的として、さまざまなメモリ管理技術が物理ＲＡＭ３０の内容を操作するために使用されうる。説明される本発明の実施例の動作が不明瞭になることを防ぐために、ＲＡＭ３０の内容は、全てのアクセス可能なＲＡＭが物理的に存在するかのように説明される。しかし、メモリに存在するとして説明される構造群は同時に物理メモリに存在しなくてもよく、また、他のメモリ構造は論理的な区別を維持しつつ同一の物理メモリを逐次的に占有しうることが理解されるであろう。
【００１９】
プロセッサ１０は、１つ以上の仮想マシン（ＶＭ）をホストすることを目的として、使用されうる。図２に示すように、ＲＡＭ３０の一部分は、仮想マシンコンテキストとして、各仮想マシン３４に割り当てられうる。ＲＡＭ３０の割り当てられた一部分は、プロセッサ１０が使用できるＲＡＭの全部または一部分であってもよい。ＲＡＭ３０の割り当てられた一部分は、１つの仮想マシン３４Ａが他の仮想マシン３４Ｂに割り当てられた物理ＲＡＭの一部分または全てを使用することを可能にすることを目的として、必要に応じてロードまたはアンロードされうる。各仮想マシン３４Ａがプロセッサ１０にホストされうる他の仮想マシン３４Ｂに関係なくＲＡＭを使用できるようにＲＡＭの使用を管理することを目的として、ＲＡＭ３０は、仮想メモリシステムをサポートしうる。
【００２０】
各仮想マシン３４Ａは、他の仮想マシン３４Ｂから保護および隔離された専用の物理マシンとして認識される、ソフトウェアの実行環境を提供する。２つの仮想マシンのみが図に示されるが、本発明の実施例において使用されるプロセッサによって、いかなる数の仮想マシンがホストされてもよいと理解されるべきである。ゲストソフトウェアは、各仮想マシン３４において実行されうる。ゲストソフトウェアは、オペレーティングシステム（ＯＳ）３６、およびＯＳによって実行される１つ以上のアプリケーションプログラム３８を有しうる。各仮想マシン３４上のＯＳ３６は、他の仮想マシン上のＯＳと同一または異なってもよい。
【００２１】
プロセッサは、１つ以上の仮想マシン３４を管理することを目的として、仮想マシンモニタ（ＶＭＭ）３２をホストしうる。各仮想マシン３４Ａがプロセッサ１０によってホストされうる他の仮想マシン３４Ｂに関係なく動作できるように、ＶＭＭ３２は、仮想マシン３４によって、特権的命令群と称される特定の命令群の実行をトラップしうる。特権的命令群は、後に実行される他の仮想マシンの動作を変更しうる、プロセッサ状態に対する持続的な変更を加えうる。ＶＭＭ３２は、特権的命令群が、他の仮想マシンによる後の実行に影響を与え続けるマシン状態にすることなく、現在実行中のコンテキストに対して期待されるマシン状態を提供できるように、特権的命令群の実行を仮想化しうる。
【００２２】
浮動小数点装置（ＦＰＵ）を用いた浮動小数点演算は、仮想化されうる特権的命令群の実施例である。仮想マシンで実行されているゲストソフトウェアは、浮動小数点演算を実行することを目的として必要に応じてＦＰＵを使用できると仮定する。ＦＰＵの動作は、浮動小数点値を格納することを目的として、概して広い、多くのレジスタを使用しかつ変更しうる。各仮想マシンの動作によってセットされたレジスタが、各仮想マシンがＦＰＵを使用する場合に常に存在するように、ＶＭＭは、各仮想マシンに対してＦＰＵを仮想化しうる。ＦＰＵの仮想化は、いくつかのアルゴリズムのうちの１つによって実現されうる。
【００２３】
図３および図４のフロー図に示される、ＦＰＵを仮想化するためのアルゴリズムは、仮想マシンコンテキスト５４にエンターする直前に、ＶＭＭのＦＰＵ状態をセーブ（５０）して仮想マシンのＦＰＵ状態をリストアする（５２）。これは、マシン状態が常にセーブされ、コンテキスト変更の際に新しいコンテキストの状態がリストアされるので、無条件仮想化アルゴリズムと称されうる。ＶＭＭへの仮想マシンコンテキストイグジット（６０）の後、仮想マシンのＦＰＵ状態がセーブされ（６２）、ＶＭＭのＦＰＵ状態がリストアされる（６４）。無条件仮想化アルゴリズムは、ＦＰＵの他のユーザと競合することなくＶＭＭおよび各仮想マシンがＦＰＵを使用できるように、ＦＰＵ状態を保証する。エンターされる各仮想マシンに対して無条件仮想化アルゴリズムによって消費される時間は、セーブ−リストア時間（ＳＲＴ）の２倍である。ＳＲＴは、仮想マシンへの制御の各移行に対して２度生じる（移行の最初に１度、移行の最後に１度）、１つのコンテキストのＦＰＵ状態のセーブおよび他のコンテキストのＦＰＵ状態のリストアに必要な時間である。従って、無条件仮想化アルゴリズムのオーバヘッド時間は、ＳＲＴの２倍である。
【００２４】
ＶＭＭまたはゲストがＦＰＵを使用しない場合もありうる。このような場合、ＦＰＵ状態のセーブおよびリストアは、不必要である。このような場合を検出することができれば、無条件仮想化アルゴリズムよりＦＰＵ状態のセーブおよびリストアの頻度を低くすることができ、ＦＰＵの仮想化に関連するオーバヘッドの低減が可能になる。
【００２５】
図１に示すように、プロセッサ１０は、現在実行中のタスクがマシン状態に影響を及ぼす命令群を実行できるかどうかを判定することを目的として、制御レジスタ１２を含んでもよい。制御レジスタ１２は、メモリ３０内の予め定められた場所（図示されない）、または、図１に示すようにプロセッサ１０内のデータ格納ロケーションに存在してもよい。ＩＡ−３２  Ｉｎｔｅｌ（登録商標）アーキテクチャプロセッサ１０内の制御レジスタ０（ＣＲ０）のような制御レジスタ１２は、１つ以上の命令が特権的かどうかを制御することを目的として、浮動小数点命令が実行されるまたは例外を発生させるかどうかを制御するＣＲ０のＴａｓｋ  Ｓｗｉｔｃｈｅｄ（ＴＳ）ビット３のようなフラグ１４を含んでもよい。命令の特権を制御する他の典型的なプロセッサ状態フラグ１４は、ＣＲ０のＭｏｎｉｔｏｒ  Ｃｏｐｒｏｃｅｓｓｏｒ（ＭＰ）ビット１である。
【００２６】
制御レジスタ１２の状態は、ＦＰＵ状態のセーブおよびリストアが必要であるかどうかを判定することを目的として、使用されうる。プロセッサに影響を与える命令群が特権的であるようにプロセッサ１０が設定された場合、現在実行しているタスクが保護された状態の使用を試みたときに制御がＶＭＭに移行されるので、命令群を特権的にすることにより保護される状態は、セーブされる必要がない。例えば、制御レジスタ１２がＴＳ１４およびＭＰ１４ビットを含む場合、設定された両方のビットは、ＦＰＵ状態を使用するまたはＦＰＵ状態に影響を及ぼす全ての命令群が例外を発生させるようにプロセッサ１０を設定しうる。ＶＭＭが移行しようとしている制御の移行先のスレッドが、これらのビッドのいずれかをクリアしていない場合、制御をスレッドに移行する前にＦＰＵ状態をセーブおよびリストアする必要はない。しかし、ＦＰＵ状態を使用するまたはＦＰＵ状態に影響を及ぼす１つ以上の命令群は特権的でないようにスレッドがプロセッサを設定した場合、以前に実行されたスレッドがリストアされたとき、ＶＭＭによって設定されたＦＰＵ状態はセーブされ、スレッドによって設定されたＦＰＵ状態がリストアされる。
【００２７】
仮想化のオーバヘッドを最小化するアルゴリズムは、必要とされるＦＰＵのセーブおよびリストアの回数の最小化を図ってもよい。これは、種々のアルゴリズムによって実現されうる。いくつかのアルゴリズムは、ＦＰＵコンテキストがＶＭ（ｊ）のものであるときにＶＭ（ｉ）がＦＰＵを使用する場合のように、ＦＰＵがＦＰＵを現在所有しないコンテキストにおいて使用される直前まで、セーブおよびリストアを遅らせてもよい。他のアルゴリズムは、ＦＰＵがＦＰＵを現在所有していないコンテキストにおいて使用される可能性が非常に高くなるまで、セーブおよびリストアを遅らせてもよい。これらは、マシン状態が新しいコンテキストによって使用される場合にのみ、コンテキスト変更の際に、マシン状態がセーブされ、新しいコンテキストの状態がリストアされるので、選択的アルゴリズムと称される。
【００２８】
図５は、ＦＰＵがＦＰＵを所有しないコンテキストにおいて使用される可能性が非常に高い場合にのみ、セーブおよびリストアの実行を図る際に命令群の特権のためにプロセッサ状態を使用する、ＦＰＵを仮想化することを目的とする典型的な選択的アルゴリズムを示す。この典型的な選択的アルゴリズムは、ＶＭＭが常にＦＰＵを使用し、従って、ＶＭがＦＰＵを使用する場合は常にＦＰＵ状態のセーブおよびリストアが必要とされると仮定する。
【００２９】
制御を受け取るＶＭのプロセッサ状態が、ＦＰＵを使用またはＦＰＵに影響を与える命令群を特権的にした場合７０−ＹＥＳ、選択的アルゴリズムは、ＶＭがＦＰＵを使用しないと仮定し、ＦＰＵ状態をセーブおよびリストアしない。ＶＭコンテキストは、ＶＭＭのＦＰＵ状態と共にエンターされる（７２）。反対に、ＶＭのプロセッサ状態が、ＦＰＵ命令群を非特権的にした場合７０−ＮＯ、選択的アルゴリズムは、ＶＭがＦＰＵを使用すると仮定し、ＶＭＭのＦＰＵ状態はセーブされ（７４）、ＶＭコンテキストがエンターされる（７８）前に、ＶＭのＦＰＵ状態がリストアされる（７６）。ＶＭがＦＰＵを使用する場合、かつ、選択的アルゴリズムが、特権に関連してプロセッサ状態の変更を図ることによって、または、特権的ＦＰＵ命令群を実行することによって、８０−ＹＥＳでないと仮定する場合、プロセッサは、例外を発生させ、制御をＶＭＭに移行する（８２）。この例外に応じて、ＶＭＭは、ＶＭＭのＦＰＵ状態をセーブし（８４）、ＶＭによって使用されるＦＰＵ状態をリストアする（８６）。そして、ＶＭＭは、ＶＭコンテキストに再度エンターする（８８）。ＶＭのＦＰＵ状態がＶＭコンテキストの実行前または実行中に回復された場合、ＶＭコンテキストからのイグジット（９０）の際に、ＶＭのＦＰＵ状態はセーブ（９２）され、選択的仮想化アルゴリズムがイグジット（９６）する前に、ＶＭＭのＦＰＵ状態がリストア（９４）される。ＦＰＵ状態が特権的であり７０−ＹＥＳ、かつ、ＶＭがＦＰＵを使用しなかった場合８０−ＮＯ、選択的アルゴリズムは、ＳＲＴコストを回避して終了する（９８）。
【００３０】
選択的アルゴリズムは、ＦＰＵ仮想化アルゴリズムのオーバヘッド時間に関するコストを生じる。選択的アルゴリズムがＶＭはＦＰＵを使用しないことを正しく予測した場合、不必要なセーブおよびリストアは回避され、コストはゼロである。選択的アルゴリズムがＶＭはＦＰＵを使用することを正しく予測した場合、コストはセーブ−リストア時間の２倍（２×ＳＲＴ）であり、無条件アルゴリズムと同じコストである。選択的アルゴリズムがＶＭはＦＰＵを使用しないと誤って予測し、従ってセーブおよびリストアに至る例外を発生させた場合、コストはＥＥＴ＋２×ＳＲＴである。この最後のケースは、無条件アルゴリズムよりも大きいコストを生じる。従って、無条件アルゴリズムのオーバヘッドからＦＰＵ仮想化のオーバヘッドを低減する、選択的アルゴリズムの能力は、ＶＭがＦＰＵを使用しないことを予想する、選択的アルゴリズムの有効性に依存する。
【００３１】
ＶＭがＦＰＵを使用しないという正しい予測の割合がＱ、ＶＭがＦＰＵを使用しないという誤った予測の割合がＲであるとき、ＶＭがＦＰＵを使用するという正しい予測の割合は、（１−Ｑ−Ｒ）である。そのため、選択的アルゴリズムの実際のオーバヘッドは、
（（１−Ｑ−Ｒ）×２×ＳＲＴ）＋（Ｒ×（２×ＳＲＴ＋ＥＥＴ））＋（Ｑ×０）
となり、
２×ＳＲＴ−２Ｑ×ＳＲＴ−２Ｒ×ＳＲＴ＋２Ｒ×ＳＲＴ＋Ｒ×ＥＥＴ
に変換され、
２×ＳＲＴ−２Ｑ×ＳＲＴ＋Ｒ×ＥＥＴ
に更に変換され、
２×ＳＲＴ（１−Ｑ）＋Ｒ×ＥＥＴ
と更に変換される。
２×ＳＲＴ（１−Ｑ）は、ＳＲＴオーバヘッドの期待値を表し、Ｒ×ＥＥＴは、ＥＥＴオーバヘッドの期待値を表す。オーバヘッドの期待値は、多くのコンテキスト変更の観察に基づくコンテキスト変更の時間的コストの統計的期待値を示すために使用される。選択的アルゴリズムは、以下の場合に、無条件アルゴリズムより小さいオーバヘッドを生じる。
２×ＳＲＴ（１−Ｑ）＋Ｒ×ＥＥＴ  ＜  ２×ＳＲＴ
これを変換すると
Ｒ×ＥＥＴ  ＜  ２Ｑ×ＳＲＴ
となり、更に変換すると
ＥＥＴ／（２×ＳＲＴ）  ＜  Ｑ／Ｒ
となる。
ＥＥＴおよびＳＲＴは、あるプロセッサ環境に対して計算されることができる比較的一定の時間である。従って、選択的アルゴリズムの有効性は、ＶＭがＦＰＵを使用しないという正しい予測の割合Ｑおよび誤った予測の割合Ｒを計測し、Ｑ／Ｒの割合を予め計算された定数ＥＥＴ／（２×ＳＲＴ）と比較することによって、無条件アルゴリズムと比較されることができる。
【００３２】
図６から図９は、ＦＰＵを仮想化するための他の典型的な選択的アルゴリズムを示す。この選択的アルゴリズムは、プロセッサを、ＦＰＵ状態を使用するまたはＦＰＵ状態に影響を与える命令群を、ＶＭコンテキストにエンターする前に、特権的にする状態に置く。プロセッサ状態は、例えばＶＭによって認識されるプロセッサ状態を反映するＣＲ０．ＴＳおよびＣＲ０．ＭＰのようなプロセッサ状態フラグのシャドウコピーを提供することによって、仮想化される（１００）。プロセッサは、ＦＰＵ命令群が特権的であるように設定される（１０２）。ＦＰＵまたはプロセッサ状態フラグの使用が、ＶＭＭへのイグジットを生じるプロセッサ例外を発生させるとき、制御は、ＶＭコンテキストに移行される（１０４）。
【００３３】
図７は、ＶＭＭによるＦＰＵ例外の処理を示すフロー図である。ＦＰＵを使用する特権的命令を実行するＶＭによる試みは、ＶＭＭへのイグジットを生じる例外を発生させる（１１０）。ＶＭＭのＦＰＵ状態がセーブされ（１１２）、ＶＭのＦＰＵ状態がリストアされる（１１４）。ＦＰＵがＦＰＵを安全に使用できるので、プロセッサは、ＦＰＵ命令群が非特権的となるように設定される（１１６）。これは、ＶＭコンテキストへの制御の移行に対して、最大１つのＦＰＵ例外が生じうることを示す。ＦＰＵ例外は、また、ＶＭコンテキストにおいて実行されるオペレーティングシステムのようなプログラムによって使用される可能性があるので、ＶＭコンテキストに反映される（１１８）。そして、制御は、ＶＭＭコンテキストに戻される（１２０）。ＦＰＵ例外処理の時間的オーバヘッドコストは、ＥＥＴ＋ＳＲＴである。２番目のＳＲＴは、以下に説明されるように、ＶＭコンテキストをイグジットする際に生じる。
【００３４】
図８は、ＶＭによるプロセッサ状態フラグの変更に対するＶＭＭの処理を示すフロー図である。ＶＭによる状態フラグを変更する試みは、ＶＭＭへのイグジットを生じる例外を発生させる（１３０）。ＶＭＭは、ＶＭによって図られた変更に基づいて、シャドウ状態フラグの値を設定することなどによって、仮想化された状態フラグを更新する（１３２）。そして、制御は、ＶＭコンテキストに戻る（１３４）。状態変更例外処理の時間的オーバヘッドコストは、ＥＥＴである。ＶＭは、１回のＶＭコンテキストへの制御の移行において、いかなる回数の状態フラグの変更を行ってもよい。
【００３５】
図９は、ＶＭコンテキストがイグジットされた場合１４０のＶＭＭ処理を示すフロー図である。ＶＭがＦＰＵを使用しているとき１４２−ＹＥＳ、すなわち、ＶＭコンテキストへの制御の移行中に図８の処理が生じた場合、ＶＭＭ処理が継続する（１４８）前に、ＶＭのＦＰＵ状態はセーブされ（１４４）、ＶＭＭのＦＰＵ状態はリストアされる（１４６）。これは、上記に説明されたように、第２のＳＲＴの時間的オーバヘッドを生じる。
【００３６】
当該選択的アルゴリズムの時間的オーバヘッドコストに関して、４つのシナリオが想定される。
（１）ＶＭがプロセッサ状態フラグを変更しない、または、ＦＰＵを使用しない場合、オーバヘッドコストを生じない。
（２）ＶＭがプロセッサ状態フラグを変更しないが、ＦＰＵを使用する場合、２×ＳＲＴ＋ＥＥＴのオーバヘッドコストを生じる。
（３）ＶＭがプロセッサ状態フラグを変更するが、ＦＰＵを使用しない場合、各変更に対してＥＥＴのオーバヘッドコストを生じる。
（４）ＶＭがプロセッサ状態フラグを変更し、ＦＰＵを使用する場合、プロセッサ状態の各変更に対してＥＥＴのオーバヘッドコストを生じ、かつ、ＦＰＵが使用された場合に２×ＳＲＴ＋ＥＥＴのオーバヘッドコストを生じる。
【００３７】
ＦＰＵを使用するＶＭ命令群の割合がＳ、プロセッサ状態フラグの変更またはＦＰＵの使用による例外生成の平均回数がＴである場合、当該選択的アルゴリズムの総オーバヘッドは、
Ｓ×２×ＳＲＴ＋Ｔ×ＥＥＴ
である。
Ｓ×２×ＳＥＴは、ＳＲＴオーバヘッドの期待値を表し、Ｔ×ＥＥＴは、ＥＥＴオーバヘッドの期待値を表す。当該選択的アルゴリズムは、以下の場合において、無条件アルゴリズムより小さいオーバヘッドを有する。
Ｓ×２×ＳＲＴ＋Ｔ×ＥＥＴ＜２×ＳＲＴ
これを変換すると
Ｔ×ＥＥＴ＜２×ＳＲＴ×（１−Ｓ）
となり、更に変換すると
ＥＥＴ／（２×ＳＲＴ）＜（１−Ｓ）／Ｔ
となる。
上記に説明された選択的アルゴリズムのように、ＥＥＴおよびＳＲＴは、あるプロセッサ環境に対して計算されることができる比較的一定の時間である。従って、当該選択的アルゴリズムの有効性は、ＶＭがＦＰＵを使用しない実行の割合（１−Ｓ）および例外発生の平均回数Ｔを計測し、（１−Ｓ）／Ｔの割合を予め計算された定数ＥＥＴ／（２×ＳＲＴ）と比較することによって、無条件アルゴリズムと比較されることができる。
【００３８】
他の典型的な選択的アルゴリズムは、更にＦＰＵ仮想化のオーバヘッドを低減することを目的として、ＶＭＭが常にＦＰＵを使用すると仮定せず、ＦＰＵ状態の現在のオーナーをトラックしてもよい。そのような選択的アルゴリズムは、現在実行中のスレッドがＦＰＵのオーナーでない可能性があるので、ＦＰＵの現在のオーナーを示す値を維持しうる。そのような選択的アルゴリズムは、エンターされている仮想マシンがＦＰＵ状態を所有することを値が示す場合、２×ＳＲＴを削減して、仮想マシンにエンターすることができる。これは、当然のことながら、オーバヘッドコストの表現から生成された数を予め計算された定数ＥＥＴ／（２×ＳＲＴ）と比較することによるような、仮想化アルゴリズムを選択するために使用されうる選択的仮想化アルゴリズムのオーバヘッドコストの表現に影響を与える。
【００３９】
常に最も低いコストとなる仮想化アルゴリズムは存在しないことが、理解されるであろう。負荷の変化が、他の仮想化アルゴリズムをより効果的にさせうる。図１０は、定期的に仮想化アルゴリズムを選択するために使用されうる適応アルゴリズムを示すフロー図である。以下は、無条件仮想化アルゴリズム、または、マシン状態を選択的にセーブおよびリストアする選択的アルゴリズムのいずれかを選択する、典型的な適応アルゴリズムである。このアルゴリズムは、
コンテキストをイグジットまたはコンテキストにエンターするためのイグジット−エンター時間（ＥＥＴ）を計算し、かつ、マシン状態をセーブおよびリストアするためのセーブ−リストア時間（ＳＲＴ）を計算し（１５０）、
選択されたコンテキスト変更においてマシン状態をセーブおよびリストアする選択的アルゴリズムを実行し（１５２）、選択的アルゴリズムの実行中に、ＥＥＴオーバヘッドの期待値に関する統計、および、ＳＲＴオーバヘッドの期待値を収集し（１５４）、
ＥＥＴオーバヘッドの期待値およびＳＲＴオーバヘッドの期待値を用いて選択的アルゴリズムのコストを計算し（１５６）、
選択的アルゴリズムのコストを、コンテキスト変更において常にマシン状態をセーブおよびリストアする無条件アルゴリズムのコストであるＳＲＴの２倍と比較し、
コンテキスト変更を仮想化する仮想化アルゴリズムが最小のコストを有する、選択的アルゴリズムまたは無条件アルゴリズムのうちのいずれか１つを選択する（１５８）。
【００４０】
ＥＥＴおよびＳＲＴの計算は、１度のみ実行され、あるプロセッサ構成における基本的な定数としてこれらの結果をセーブしてもよい（１５０）。一定期間選択された仮想化アルゴリズムが使用され（１６０）、そして、負荷の変化に応じて時々、使用する仮想化アルゴリズムが変更されるように、仮想化アルゴリズムを選択するために再び適応アルゴリズムが使用される。選択的アルゴリズムに対する統計の収集の時間と、連続する収集間および仮想化アルゴリズム変更間の時間間隔とは、プロセッサの負荷に反応しうる。
【００４１】
適応アルゴリズムは、２つ以上の候補アルゴリズム間における選択に拡張されうる。コンテキスト変更の場合にマシン状態を選択的にセーブおよびリストアする各選択的アルゴリズムは、その時の処理負荷における選択的アルゴリズムのオーバヘッド時間コストに関する統計の収集が可能となるように実行されうる。コストは各選択的アルゴリズムに対して計算され、全候補アルゴリズムのうちで最も低いコストのアルゴリズムが選択される。
【００４２】
本発明の実施例がマシンアクセス可能な媒体を含む製品の形態であってもよいことは、いうまでもない。マシンアクセス可能な媒体は、プロセッサ１０によってアクセスされた場合に、プロセッサに動作を実行させるデータを含んでもよい。このように、マシンアクセス可能な媒体は、マシン（例：コンピュータ、ネットワークデバイス、パーソナルデジタルアシスタント、製造ツール、１つ以上のプロセッサの組を有するいかなるデバイス、など）によって、アクセス可能な形態で情報を提供（即ち、格納および／または伝達）するいかなる機構も含む。例えば、マシンアクセス可能な媒体は、記録可能／記録不可能なメディア（例：リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス、など）、および、電気、光、または他の形態の伝播信号（例：搬送波、赤外線信号、デジタル信号、など）、などを含む。
【００４３】
本発明はいくつかの実施例に関して説明されたが、通常の技術を有する当業者は、本発明がこれらの実施例に限定されず、添付の請求項の範囲内で種々の変更態様が実施されることができることを認識するであろう。このため、説明は、本発明を限定するものではなく、具体例として認識されるべきである。
【図１】
2008500652.tif 000003
【図２】
2008500652.tif 000004
【図３】
2008500652.tif 000005
【図４】
2008500652.tif 000006
【図５】
2008500652.tif 000007
【図６】
2008500652.tif 000008
【図７】
2008500652.tif 000009
【図８】
2008500652.tif 000010
【図９】
2008500652.tif 000011
【図１０】
2008500652.tif 000012
【国際調査報告】
2008500652.tif 000013
2008500652.tif 000014
2008500652.tif 000015