バーチャルマシン移行を管理するプロセッサであって、マシン状態の要素に関連する状態アクションインジケータに基づいて、前記バーチャルマシン移行に関してマシン状態の前記要素を含む、行われるべきアクションを決定するロジックを有するプロセッサ。請求項1に記載のプロセッサであって、前記バーチャルマシン移行に関して前記アクションを行わせるロジックを更に有するプロセッサ。請求項1に記載のプロセッサであって、前記アクションは、マシン状態の前記要素の値をメモリに格納することであるプロセッサ。請求項1に記載のプロセッサであって、前記アクションは、メモリからマシン状態の前記要素の値をロードすることであるプロセッサ。請求項1に記載のプロセッサであって、前記ロジックは、バーチャルマシン制御構造から固定値を取得することと、固定値を決定することと、計算値を計算することとのうち少なくとも1つにより、前記状態アクションインジケータの値を決定するプロセッサ。請求項1に記載のプロセッサであって、前記ロジックは、2つのセットの制御ビットを有するバーチャルマシン制御構造にアクセスし、第1のセットの制御ビットは、バーチャルマシンへのエントリーのときに、格納するプロセッサの状態の要素と、ロードするプロセッサの状態の要素とを特定し、第2のセットの制御ビットは、前記バーチャルマシンからのエグジットのときに、格納するプロセッサの状態の要素と、ロードするプロセッサの状態の要素とを特定するプロセッサ。請求項3に記載のプロセッサであって、マシン状態の前記要素の前記値を格納するためのロジックは、マシン状態の前記要素と、固定値と、計算値とのうち1つから前記値を決定するプロセッサ。請求項7に記載のプロセッサであって、マシン状態の前記要素の前記値を格納するためのロジックは、プロセッサの状態の要素と、バーチャルマシン制御構造の値と、制御インジケータとのうち少なくとも1つを検査し、前記検査した値を変換して前記計算値を作ることにより、前記計算値を決定するプロセッサ。請求項4に記載のプロセッサであって、マシン状態の前記要素の前記値を格納するためのロジックは、バーチャルマシン制御構造の関連のフィールドと、計算値と、固定値とのうち1つから前記値を決定するプロセッサ。請求項9に記載のプロセッサであって、マシン状態の前記要素の前記値をロードするためのロジックは、前記プロセッサの状態の要素と、バーチャルマシン制御構造の値と、制御インジケータ値とのうち少なくとも1つを検査し、前記検査した値を変換して前記計算値を作ることにより、前記計算値を決定するプロセッサ。VM動作中の移行を管理する新規な方法、装置及びシステムについて説明する。実施例の以下の詳細な説明において、添付図面に対して参照が行われ、添付図面はこの一部を形成し、添付図面には限定ではなく例示で実行され得る本発明の特定の実施例が図示されている。これらの実施例は、当業者が理解及び実装できるように十分に詳細に説明されており、他の実施例も利用可能であり、この開示の要旨及び範囲を逸脱することなく、構造的、論理的及び電気的な変更が行われ得ることがわかる。従って、以下の詳細な説明は限定の意味で解釈されるべきではなく、ここに開示された本発明の実施例の範囲は特許請求の範囲によってのみ定められる。図1は、本発明が動作し得るバーチャルマシン環境100の実施例を示している。この実施例では、物理マシン110は、例えば標準的なオペレーティングシステム又はVMM125のようなバーチャルマシンモニタを実行可能なコンピュータプラットフォームを有する。VMM125は一般的にはソフトウェアで実装されるが、上位レベルのソフトウェアに対してマシンインタフェースをエミュレート及びエクスポートしてもよい。このような上位レベルのソフトウェアは、標準的又はリアルタイムのOSを有してもよく、限られたOS機能を備えてかなり除去された動作環境でもよく、従来のOS機能を有してなくてもよい。代替として、例えばVMM125は他のVMM内で動作してもよく、他のVMMの上位で動作してもよい。VMM125は、例えばハードウェア、ソフトウェア、ファームウェア又は多様な技術の組み合わせで実装されてもよい。VMMとその一般的な特徴及び機能は当業者に周知である。物理マシン110は、パーソナルコンピュータ、メインフレーム、ハンドヘルド装置、ポータブルコンピュータ、セットトップボックス、インテリジェント装置、又はその他のコンピュータシステム若しくはデバイスでもよい。物理マシン110は、プロセッサ112とメモリ120とを有する。更に、物理マシン110は、多様な他の入出力デバイスを有してもよい。プロセッサ112は、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ等のように、ソフトウェアを実行可能な如何なる種類のプロセッサでもよい。プロセッサ112は、本発明の方法の実施例の実行を行うマイクロコード、マクロコード、ソフトウェア、プログラム可能ロジック又はハードコードロジックを有してもよい。唯一のこのようなプロセッサ112が図1に図示されているが、1つ以上のプロセッサがシステムに存在してもよいことがわかる。メモリ120は、ハードディスク、フロッピー登録商標ディスク、ランダムアクセスメモリ、読み取り専用メモリ、フラッシュメモリ、その他の種類のプロセッサ112により読取可能な機械媒体、又はそのデバイスの何らかの組み合わせでもよい。メモリ120は、本発明の方法の実施例の実行を行う命令及び/又はデータを格納してもよい。VMM125は、他のソフトウェアに1つ以上のバーチャルマシンの抽象化を提示し、その1つ以上のバーチャルマシンは、多様なゲストに同一の又は異なる抽象化を提供してもよい。図1は3つのVM132、142、152を示している。各VMで動作するゲストソフトウェアは、ゲストOS134、144又は154のようなゲストOSと、多様なゲストソフトウェアアプリケーション136、146、156を有してもよい。ゲストOS134、144、154のそれぞれは、ゲストOS134、144又は154が動作するVM132、142、152内の物理リソースにアクセスし、VM132、142、152の動作中にシステムデバイスにより生成された割込みを含む多様なイベントを処理することになっている。プロセッサ112は、VMCS122に格納されたデータに従ってVM132、142、152の動作を制御する。VMCS122はプロセッサ112内のメモリ120に格納されてもよく、他の場所又は記憶位置の如何なる組み合わせに格納されてもよい。VMCS122は、VMM125及びゲストソフトウェアのマシン状態の記憶装置を提供する。更に、VMの動作を制限又は制御し、VMとVMM125との間の移行を制御するインジケータを有してもよい。VMCS122はVMM125によりアクセス可能である。VMCSはメモリ又は記憶装置の連続的な領域である必要はない。従って、ある実施例では、VMCSは論理的に集められ、複数のメモリ又は記憶装置の位置からアクセスされてもよい。VMM125からゲストソフトウェアへの移行はVMエントリーと呼ばれる。ゲストソフトウェアからVMM120への移行はVMエグジットと呼ばれる。VMエントリーとVMエグジットとを併せてVM移行と呼ばれる。一実施例では、VMM125は、VMエントリーをもたらす特定の命令を実行することにより、VMエントリーを開始してもよい。一実施例では、VMエグジットはVMにより明示的に要求されてもよい。ある実施例では、VMは直接的に移行を要求せずに、VMCS122の制御又はバーチャルマシンシステムのアーキテクチャにより決められた通り、何らかのイベント又はVM実行の命令がVMエグジットを要求する。VM移行中に、プロセッサ112はマシン状態の多様な要素で動作してもよい。当業者にわかるように、マシン状態は、例えば、プロセッサ、IOデバイス、チップセット等の多様なアーキテクチャ上の構成要素に関連してもよい。従って、本発明の多様な実施例の説明は、従来ではアーキテクチャ上としてみなされないいくつかの構成要素により補われた従来の意味で、マシン状態という語句を使用する。従って、マシン状態は、汎用レジスタ及び浮動小数点レジスタ、制御レジスタ、処理フラグ、モデル特有のレジスタ、セグメントレジスタ、更なる内部マシン状態、メモリ管理に関する状態の内容、チップセットのレジスタ、IOデバイス状態等を有してもよい。同様に、前述の情報の例示的なリストは包括的を目的としたものではなく、他の情報で補われてもよい。更に、当業者はここに提示された頭文字を容易に認識する。VMシステム100は、ゲストVMとホストVMM125との間での移行中にマシン状態のロード及び/又は格納を管理する際に使用される機構を実装する柔軟なアーキテクチャを提供する。図2Aは、本発明の一実施例に従ってVM移行動作を管理する方法200のフローチャートを示している。その処理は、ハードウェア、ソフトウェア、又はその双方を有してもよい処理ロジックにより実行されてもよい。210において、VM移行が行われようとしていることをプロセッサが検出する。VM移行はVMエグジットでもよく、VMエントリーでもよい。それに応じて220において、VM移行がVMエグジット動作であるか否かを決定するために検査が行われる。プロセッサがVMエントリーを処理している場合、プロセッサは、VMMからVMへの制御の移転に備えて、複数の動作を実行することができる。例えば、プロセッサは230でVMMマシン状態を格納し、240でVMマシン状態をロードし、最後に250でVMに制御を移転することができる。プロセッサがVMエグジットを処理している場合、プロセッサは、VMMからVMへの制御の移転に備えて、複数の動作を実行することができる。例えば、プロセッサは260でVMマシン状態を格納し、270でVMMマシン状態をロードし、最後に280でVMMに制御を移転することができる。VM移行中にマシンをロード及び格納する方法の実施例は、それぞれ図2Bと図2Cに示されている。図2A、2B及び2Cに示されていない他のアクションがVMエントリー又はVMエグジット中に生じていていもよいことがわかる。例えば、VMエントリー又はVMエグジットでロードされている状態の有効性及び一貫性が確保される必要があることがある。図2Bは、VM移行中に状態をロードする方法202を示している。その方法は、ハードウェア、ソフトウェア、又はその双方を有してもよい処理ロジックにより実行されてもよい。まず222において、処理の必要のあるマシン状態の何らかの要素が残っているか否かが決定される。処理されるマシン状態の要素が残っていない場合、その方法は終了する。その他の場合、232において制御ビット値が決定される。制御ビットとその決定については以下に詳細に説明する。242においてビットが設定されていないと決定された場合、制御は222に戻る。その他の場合、252において、マシン状態の対応する要素の値が決定される。値の決定については以下に説明する。262において、この値はマシン状態に設定される。マシン状態の要素がまだ残っているか否かを決定するために、制御は222に戻る。図2Cは、VM移行中にマシン状態を格納する方法204を示している。その方法は、ハードウェア、ソフトウェア、又はその双方を有してもよい処理ロジックにより実行されてもよい。まず224において、処理の必要のあるマシン状態の何らかの要素が残っているか否かが決定される。処理されるマシン状態の要素が残っていない場合、その方法は終了する。その他の場合、234において制御ビット値が決定される。制御ビットとその決定については以下に詳細に説明する。244においてビットが設定されていないと決定された場合、制御は224に戻る。その他の場合、254において、マシン状態の要素に対応する値が決定される。値の決定については以下に説明する。264において、この値が格納される。マシン状態の要素がまだ残っているか否かを決定するために、制御は224に戻る。一実施例において、VMCSは、VMMの制御のもとにある2つのセットの制御ビットを有する。これらの制御ビットは、VMエントリー制御及びVMエグジット制御と呼ばれる。VMエントリー制御は、どのVMMマシン状態が格納されるべきか、どのVMマシン状態がVMエントリー中にロードされるべきかをプロセッサに通知する。VMエグジット制御は、どのVMマシン状態が格納されるべきか、どのVMMマシン状態がVMエグジット中にロードされるべきかをプロセッサに通知する。ほんの一例として、VMエントリー制御は、ビットストリング内の各ビット位置がマシン状態の特定の要素のアクション又は非アクションを特定又は表示する6の長さを有するビットストリングとして表されてもよい。例えば、ストリング内のビット位置及びマシン状態の関連の要素は、以下のように表すことができる。同様に、VMエグジット制御は、4の長さを有するVMCS内のビットストリングとして表されてもよい。同様に、ストリング内のビット位置及びマシン状態の要素の関連のアクションは、以下のように表すことができる。VMエントリーにおいて、VMMがVMエントリー制御にstoreVMMDR7ビットを設定した場合、プロセッサは、DR7レジスタの現在の値を格納する。一実施例では、DR7レジスタの値はVMCSに格納される。逆に、VMエントリー制御のstoreVMMDR7ビットがクリアされると、プロセッサはDR7レジスタ値を格納しない。storeVMMCR3及びstoreVMMCR4のVMエントリー制御ビットも同様に動作する。同様に、VMMがloadguestDR7のVMエントリー制御ビットを設定した場合、プロセッサはDR7レジスタをロードする。一実施例では、ロードされる値は、VMCSのゲストVMのDR7フィールドに含まれる。loadguestDR7のVMエントリー制御ビットがクリアされると、プロセッサはDR7レジスタをロードしない。この場合も同様に、loadguestCR3及びloadguestCR4の制御ビットも同様に動作する。VMエグジット制御ビットは、VMエグジットでゲストVMマシン状態の格納とホストVMMマシン状態のロードとを制御するように同様に動作する。この例では、VMエントリー制御はDR7を表すビットを有するが、VMエグジット制御は有さないため、VMエントリー制御及びVMエグジット制御はマシン状態の同じ要素を制御しない。しかし、当業者に容易にわかるように、VMエントリー制御及びVMエグジット制御はマシン状態の同じ要素を制御することができ、その内容も本発明の多様な実施例の範囲内にあることを意図する。更に、この例で表されたマシン状態の特定の選択は限定としてみなされるべきではない。前述の例は本発明の一実施例を理解する説明を提供するが、本発明はそれに限定されることを目的としない。例えば、全てのシナリオにおいて、ロードされる値はVMCSの値である必要はなく、格納される値はマシン状態からの直接の値である必要はない。前述の実施例では、プロセッサは、VMCSに又はVMCSからマシン状態の要素について値をロード又は格納することができる。代替として、マシン状態の要素について固定値をロード又は格納してもよい。更に、プロセッサは、動的に計算された値をロード又は格納してもよい。最後に、プロセッサは、マシン状態の要素に関して何もアクションをしなくてもよい。ロード又は格納される値を決定するこのような代替の機構について、以下に説明する。プロセッサは、マシン状態の要素について固定値をロード又は格納してもよい。例えば、プロセッサ、VMエグジットでEFLAGSレジスタに固定値をロードしてもよい。すなわち、VMCSに表されるVMMEFLAGSが存在しない。その代わりに、プロセッサはVMMに制御を移行する前に、プロセッサのEFLAGSレジスタが固定値又は所定の値を有するようにさせる。このように、プロセッサは、マシン状態の要素の値を強制する。同様に、プロセッサは、VMエントリーでVMCSに格納される値を強制してもよく、VMエントリーでマシン状態にロードされる値を強制してもよく、及び/又はVMエグジットでVMCSに格納される値を強制してもよい。このように、マシン状態の全ての要素が明示的にVMCSに表される必要はない。この技術は、大きい又は規則のないVMCSを生成することなく、マシン状態の更なる要素をカバーする柔軟な機構を提供する。更に、マシン状態のこの強制又は格納された値は、VMCSに必要なアクセス数を減少させることにより、及びVMエントリー及び/又はVMエグジットで必要な一貫性及びエラーチェックを減少させることにより、VMエグジット及びVMエントリーの実装の性能を改善し得る。更に、プロセッサは、マシン状態にロードされる値又はVMCSに格納される値を計算することができる。この計算値は、マシン状態の1つ以上の要素の値、VMCS内に含まれる値等に基づいて動的に決定される。例えば、VMエグジットでEIPレジスタにロードされる値は、VMCSからVMMEIPフィールド値をロードし、計算値がVMエグジットの要因に依存するような何らかの計算値により補われて、このEIP値をEIPレジスタにロードすることにより計算され得る。マシン状態の要素の動的な計算により、VMMの更に効率的な実装が可能になることがある。例えば、前述の例では、VMエグジットでのEIPの動的な計算により、VMMが個々のVMエグジットのソースのハンドラを構成し、VMMソフトウェアのエグジット動機をデコードする必要性を除去する。最終的に、プロセッサはVM移行中にマシン状態の要素に関してアクションを行わなくてもよい。例えば、VMからVMMに移行するときに、プロセッサは汎用レジスタの値を変更しないままにしてもよい。プロセッサは、状態アクションインジケータを評価することにより、VM移行中のマシン状態の要素に関して行うべき適切なアクションを決定する。状態アクションインジケータは、どのアクションが行われるべきかを決定する。状態アクションインジケータの値は、VMCSから状態情報をロードし、又はVMCSに状態情報を格納するようにプロセッサに命令することができる。状態アクションインジケータ値もまた、固定値又は所定の値がロード又は格納され、検討中のマシン状態の特定の要素に関して何もアクションを行わず、又は計算値をロード若しくは格納することをプロセッサに強制することができる。前述のVMエントリー制御及びVMエグジット制御は、状態アクションインジケータの例である。この例では、プロセッサは状態アクションインジケータとしてVMCSのフィールドを使用する。VMエントリー制御又はVMエグジット制御の各ビットは、マシン状態の単一の要素に対応する。ビットが設定されている場合、マシン状態がVMCSからロードされる/VMCSに格納されることをプロセッサに指示する。それがクリアされている場合、マシン状態の要素は無視される。代替実施例では、マシン状態の要素がロードされるか固定値に強制されるかを単一ビットが決定することができる。更なる実施例では、状態アクションインジケータは単一ビットより大きくてもよく、更に複雑な動作を符号化してもよい。例えば、状態アクションインジケータは4つの値を許容する2ビットでもよく、前述のロード、強制、計算及び無視の機構を区別してもよい。状態アクションインジケータは、マシン状態の特定の要素で、及び/又はマシン状態の複数の要素で、特定のVM移行に関連してもよい。状態アクションインジケータ値は、VMCSから得られた値から決定されてもよく、固定値でもよく、また、動的に計算された値でもよい。その可能性のそれぞれについて以下に説明する。状態アクションインジケータはVMMの制御のもとでVMCSに格納されてもよい。VMCSに格納された状態アクションインジケータの例については前記に詳細に説明した。状態アクションインジケータは予め定められてもよい。状態アクションインジケータが固定値又は所定の値である場合、VMMは、VM移行でマシン状態の対応する要素でプロセッサが行うアクションに対して、直接の制御を有さない。例えば、プロセッサはVMエントリー処理中にEIPレジスタの値を常に格納しなくてもよく、VMエントリー処理中にVMCSからEIPレジスタのゲスト値を常にロードしてもよく、及び/又はVMエグジット処理中にEIPレジスタを常にロードしてもよい。状態アクションインジケータは動的に計算されてもよい。状態アクションインジケータが動的に計算された値である場合、状態アクションインジケータは、マシン状態の1つ以上の要素、VMCSの1つ以上のフィールド等に関連する1つ以上の値に依存してもよい。例えばIA32ISAでは、プロセッサがVMエントリー又はVMエグジットに続いて物理アドレス拡張を使用している場合、プロセッサはVMCSからページディレクトリポインタテーブルのエントリーをロードする。プロセッサがPAEモードでない場合、プロセッサのPDTRは0に強制される。プロセッサがPAEモードであるか否かを決定するために、プロセッサはCR4レジスタのPAEビットを検査する。このように、プロセッサは、状態アクションインジケータ値の動的な決定又は計算を行うと考えられ得る。PAEビットが設定されている場合、状態アクションインジケータは、VMCSからロードするようにプロセッサに命令する。PAEビットがクリアされている場合、状態アクションインジケータは値を強制するようにプロセッサに命令する。プロセッサがPAEモードであるか否かを決定するためのここで説明した処理は、本発明の多様な実施例を明白に説明するために簡略化されている点に留意すべきである。この決定を行うために更なる処理が必要なことがあり、それは当業者に容易に認識され理解される。その他の例では、セグメントのセレクタの値がゼロでない場合、又はプロセッサがV86モードである場合に、プロセッサはセグメントレジスタのベース及びリミットフィールドをロードすることができる。この決定を行うために、プロセッサは2つのマシン状態情報を検査する。セレクタがゼロでない場合、又はEFLAGSのVMビットが設定されている場合、プロセッサはVMCSからロードするように命令される。そうでない場合、プロセッサはアクションを行わない。ベース及びリミットフィールドをロードする必要があるか否かを決定するためのここで説明した処理は、本発明の多様な実施例を明白に説明するために簡略化されている点に留意すべきである。この決定を行うために更なる処理が必要なことがあり、それは当業者に容易に認識され理解される。当業者に明らかなように、ここで説明した方法は、VMMとVMとの間の移行中にマシン状態のロード及び格納を動的に制御するために使用可能である。一例として前述した柔軟な命令ロジックを有するプロセッサとVMCSとを使用することにより、移行がVMMに対して生じる。更に、マシン状態の各要素及びプロセッサにより行われるアクションは、肯定的に宣言される必要はなく、また、VMCS内に単に表される必要はない。図3は、本発明の一実施例に従ってVM移行中にマシン状態の要素のロードを実行する方法300のフローチャートを示している。図3は、マシンのプロセッサの設計に実装され得る。その方法は、ハードウェア、ソフトウェア、又はその双方を有してもよい処理ロジックにより実行されてもよい。310において、プロセッサは検討中のマシン状態の要素について状態アクションインジケータを決定する。320において、プロセッサは状態アクションインジケータを検査する。検討中のマシン状態の要素がVMCSからロードされるべきであることを状態アクションインジケータ値が示すと、330において、マシン状態の要素の値がロードされ、335において、検討中のマシン状態の対応する要素に設定される。しかし、検討中のマシン状態の要素が強制されるべきであることをステップ340において決定されて状態アクションインジケータ値が示すと、350において、プロセッサはマシン状態の対応する要素に所定の値又は強制値を設定する。更に、360において、状態アクションインジケータ値は、検討中のマシン状態の要素に関してプロセッサにより行われるべきアクションがないことを示してもよい。その場合、プロセッサはアクションを行わない。360での状態アクションインジケータの評価が否定的である場合、動的な計算が必要なことが推測され得る。当然のことながら、ある実施例では、その推測を全く行うことなく計算が必要であるかを決定するために、状態アクションインジケータの肯定的なチェックが行われてもよい。従って、検討中のマシン状態の要素の値は370で計算され、380でマシン状態の要素内に設定される。プロセッサは、マシン状態の1つ以上の要素を検査することにより、VMCSの値を検査することにより、及び/又は制御インジケータ値を検査すること等により、マシン状態の要素の値を動的に計算してもよい。更に、検査が行われると、プロセッサは検討中のマシン状態の要素の値を作るために、1つ以上の変換を実行してもよい。このように、プロセッサは多様なデータを使用することができ、マシン状態の要素の値を生成するために多様なアクションを実行する。図3に示されていないが、方法300はマシン状態の要素毎に繰り返される。更に、前述のように、各状態アクションインジケータはマシン状態の1つ以上の要素に関連してもよい。図4は、本発明の一実施例に従ってVM移行中にマシン状態の要素の格納を実行する方法400のフローチャートを示している。方法400は、プロセッサアーキテクチャに実装され得る。その方法は、ハードウェア、ソフトウェア、又はその双方を有してもよい処理ロジックにより実行されてもよい。410において、プロセッサは検討中のマシン状態の要素について状態アクションインジケータを決定する。420において、プロセッサは状態アクションインジケータを検査する。状態アクションインジケータが検討中のマシン状態の要素のVMCSへの格納を必要とする場合に、430において、検討中のマシン状態の要素がVMCSの1つ以上のフィールドに格納される。そうでない場合、440において、固定値がVMCSに格納されるか否かを決定するために、状態アクションインジケータ値が検査され、そうである場合、450において、固定値がVMCSの1つ以上のフィールドに格納される。ある場合には、状態アクションインジケータ値は、460に示すように、アクションを実行しないようにプロセッサに命令してもよい。470において、マシン状態の要素に対応する値が動的に決定される。480において、計算された値がVMCSの1つ以上のフィールドに格納される。プロセッサは、マシン状態の1つ以上の要素を検査することにより、VMCSの値を検査することにより、及び/又は制御インジケータ値を検査すること等により、値を動的に計算してもよい。更に、検査が行われると、プロセッサはVMCSの1つ以上のフィールドに格納される計算値を作るために、1つ以上の変換を実行してもよい。このように、プロセッサは多様なデータを使用することができ、計算値を生成するために多様なアクションを実行する。図4に示されていないが、方法400はマシン状態の要素毎に繰り返されてもよい。更に、前述のように、各状態アクションインジケータはマシン状態の1つ以上の要素に関連してもよい。図5は、本発明の一実施例に従ってVM移行動作中に状態アクションインジケータの値を決定する方法500のフローチャートを示している。その方法は、ハードウェア、ソフトウェア、又はその双方を有してもよい処理ロジックにより実行されてもよい。505において、プロセッサは、検討中のマシン状態の要素と、処理中のVM移行の形式と、状態のロード又は格納が処理中であるか否かとを決定する。決定した情報に基づいて、507において、マシン状態のこの要素に関連する状態アクションインジケータが固定であるか、VMCSからロードされるものであるか、計算されるものであるかをアーキテクチャが指示するか否かをプロセッサが決定する。510において、状態アクションインジケータが固定である場合、520において、固定の状態アクションインジケータ値が決定される。530において、状態アクションインジケータがVMCSから得られる場合、540において、状態アクションインジケータ値がVMCSからロードされる。550において、状態アクションインジケータが動的に決定されるもの又は計算されるものである場合、550において、状態アクションインジケータを決定するために計算が実行される。動的な決定又は計算は、例えばVMCS内の多様なフィールドをロードすること、マシン状態の多様な要素を検査すること、VM及び/又はVMM状態の多様な要素を検査すること、1つ以上の制御インジケータ値を検査すること、及び/又は検査した情報で変換することを有してもよい。ある実施例では、状態アクションインジケータ値の決定及び評価は明白ではない。プロセッサは、特定の状態が特定のアクションを要求すると認識するように設計されてもよい。例えば、プロセッサのロジックは、状態アクションインジケータ値を明示的に評価せずに、マシン状態の要素を特定の値に無条件に強制してもよい。従って、図5に関して説明した明示的なチェックは限定としてみなされるべきではない。本発明の実施例は、VM移行の改善した処理を提供する。これは、VMCSを使用するが、VM移行を実行するためにVMCS内に備えられた情報に完全に依存する必要のないプロセッサ内の処理を柔軟に具現することにより実現される。本発明の多様な実施例に従ったプロセッサの実装は、VM移行中のマシン状態のロード及び格納を管理及び制御することができることを、当業者は認識するであろう。特に、これらの実施例は、アーキテクチャにより可能になるように、VM移行中のマシン状態のロード及び格納の動作を指示するように、VMMに柔軟性を提供する。このことは、マシン状態の要素の全てのインスタンスを把握する柔軟性のないMVCSで必ずしも実現されない。また、VM移行でマシン状態の全ての格納及びロードがVMCSの制御を通じてVMMにより明示的に指示される必要はない。前述の説明は例示的であり、限定的でないことを意図することがわかる。前述の説明を検討することにより、多数の他の実施例が当業者に明らかになる。従って、本発明の実施例の範囲は、特許請求の範囲を参照して、特許請求の範囲が享有する同等物の全範囲と共に決定されるべきである。要約は、読者が技術的な開示の本質及び要点を即座に確認することが可能になるように、37CFR§172に従うように提供されていることを強調する。それは特許請求の範囲又は意味を解釈又は制限するために使用されないという理解で提示されている。実施例の前述の説明において、開示を効率化するために多様な機能が単一の実施例にまとめられている。この開示の方法は、本発明の特許請求の範囲の実施例が各請求項に明白に記載された機能以上のものを必要とするという意図を反映するものとして解釈されるべきではない。むしろ、特許請求の範囲に示すように、本発明の対象は、単一の開示の実施例の全ての機能より少ないものにある。このように、特許請求の範囲はこれによって実施例の説明に組み込まれ、各請求項が別の例示的な実施例として独立する。以上の実施例に関し、更に、以下の項目を開示する。1バーチャルマシン動作を管理する方法であって、処理されるVM移行動作を特定し、1つ以上の状態アクションインジケータを特定し、前記1つ以上の状態アクションインジケータの1つ以上の値を使用して、必要に応じてマシン状態の1つ以上の関連の要素について少なくとも1つのアクションを決定することを有する方法。21に記載の方法であって、特定するときに、前記1つ以上の状態アクションインジケータは、前記VM移行動作と、前記マシン状態の前記1つ以上の関連の要素と、前記マシン状態の第2の要素とのうち少なくとも1つに関連する方法。31に記載の方法であって、使用するときに、前記少なくとも1つのアクションは、前記マシン状態の前記1つ以上の関連の要素のロードと、前記マシン状態の前記1つ以上の関連の要素の格納と、アクションを行わないこととのうち少なくとも1つを有する方法。41に記載の方法であって、特定するときに、前記1つ以上の状態アクションインジケータは、バーチャルマシン制御構造の1つ以上の読み取り値と、1つ以上の固定値と、前記マシン状態の前記1つ以上の関連の要素と、前記マシン状態の第2の要素と、前記VMの状態に関連する要素と、バーチャルマシンモニタの状態に関連する要素と、制御インジケータ値と、VMCSのフィールド値とのうち少なくとも1つに基づいた計算値とのうち少なくとも1つである方法。51に記載の方法であって、特定するときに、前記1つ以上の状態アクションインジケータは、前記マシン状態の前記少なくとも1つの関連の要素を記述するデータ構造と、制御ベクトルの1つ以上のビットとのうち少なくとも1つである方法。61に記載の方法であって、使用するときに、少なくとも1つのアクションのそれぞれは、バーチャルマシン制御構造の1つ以上のフィールドに前記マシン状態の前記1つ以上の関連の要素を格納することと、前記VMCSの1つ以上のフィールドに1つ以上の固定値を格納することと、前記VMCSの1つ以上のフィールドに1つ以上の計算値を格納することとのうち少なくとも1つを実行する方法。76に記載の方法であって、前記1つ以上の計算値を格納するときに、前記1つ以上の計算値は、前記マシン状態の要素と、バーチャルマシン制御構造の値と、制御インジケータとのうち少なくとも1つの値を検査し、前記検査した値を変換して、前記1つ以上の計算値を作ることにより決定される方法。81に記載の方法であって、使用するときに、少なくとも1つのアクションのそれぞれは、バーチャルマシン制御構造の1つ以上のフィールドから前記マシン状態の前記1つ以上の関連の要素をロードすることと、前記マシン状態の前記1つ以上の関連の要素に、1つ以上の計算されたマシン状態の値をロードすることと、前記マシン状態の前記1つ以上の関連の要素に、1つ以上の固定値をロードすることとのうち少なくとも1つを実行する方法。98に記載の方法であって、前記1つ以上の計算されたマシン状態の値をロードするときに、前記1つ以上の計算されたマシン状態の値は、前記マシン状態の要素と、前記バーチャルマシン制御構造の値と、制御インジケータとのうち少なくとも1つの値を検査し、前記検査した値を変換して、前記1つ以上の計算されたマシン状態の値を作ることにより決定される方法。101に記載の方法であって、前記VM移行動作を特定するときに、前記VM移行動作は、VMエントリーとVMエグジットとのうち少なくとも1つである方法。11バーチャルマシンを管理するシステムであって、VMと、バーチャルマシンモニタと、コンピュータ装置とを有し、VM移行のときに、コンピュータ装置は1つ以上の状態アクションインジケータを決定し、前記1つ以上の状態インジケータは前記コンピュータ装置により使用され、前記VM移行が終了する前に、必要に応じて、前記コンピュータ装置の状態の1つ以上の関連の要素を格納及び/又はロードするように前記コンピュータ装置にさせる少なくとも1つのアクションを決定するシステム。1211に記載のシステムであって、前記コンピュータ装置は、バーチャルマシン制御構造から1つ以上のフィールド値を取得することと、1つ以上の固定値を決定することと、1つ以上の計算値を計算することとのうち少なくとも1つにより、前記1つ以上の状態アクションインジケータの1つ以上の値を決定するシステム。1311に記載のシステムであって、前記コンピュータ装置は、2つのセットの制御ビットを有するバーチャルマシン制御構造にアクセスし、第1のセットの制御ビットは、前記VMへのエントリーのときに、格納するコンピュータ装置の状態の要素と、ロードするコンピュータ装置の状態の要素とを特定するために、前記コンピュータ装置により使用され、第2のセットの制御ビットは、前記VMからのエグジットのときに、格納するコンピュータ装置の状態の要素と、ロードするコンピュータ装置の状態の要素とを特定するために、前記コンピュータ装置により使用されるシステム。1411に記載のシステムであって、格納するときに、前記コンピュータ装置の状態の前記1つ以上の関連の要素は、バーチャルマシン制御構造の1つ以上のフィールドに、前記コンピュータ装置の状態の前記1つ以上の関連の要素を格納し、前記VMCSの前記1つ以上のフィールドに1つ以上の固定値を格納し、前記VMCSの前記1つ以上のフィールドに1つ以上の計算値を格納することを更に有するシステム。1514に記載のシステムであって、前記1つ以上の計算値を格納するときに、前記1つ以上の計算値は、前記計算装置の状態の要素と、前記VMCSの値と、制御インジケータとのうち少なくとも1つの値を検査し、前記検査した値を変換して、前記1つ以上の計算値を作ることにより決定されるシステム。1611に記載のシステムであって、ロードするときに、前記コンピュータ装置の状態の前記1つ以上の関連の要素は、前記コンピュータ装置の状態の前記1つ以上の関連の要素で、バーチャルマシン制御構造の1つ以上のフィールドから前記コンピュータ装置の状態の前記1つ以上の関連の要素にロードし、前記コンピュータ装置の状態の前記1つ以上の関連の要素に1つ以上の計算値をロードし、前記コンピュータ装置の状態の前記1つ以上の関連の要素に1つ以上の固定値をロードすることを更に有するシステム。1716に記載のシステムであって、前記1つ以上の計算値をロードするときに、前記1つ以上の計算値は、前記コンピュータ装置の状態の要素と、前記VMCSの値と、制御インジケータ値とのうち少なくとも1つの値を検査し、前記検査した値を変換し、前記少なくとも1つの計算値を作ることにより決定されるシステム。18関連の命令を有する機械アクセス可能な媒体を有するものであって、前記命令が実行されると、バーチャルマシン移行の必要性を検知し、1つ以上の状態アクションインジケータと、1つ以上の状態アクションインジケータ値とを決定し、前記1つ以上の決定された状態アクションインジケータ値に基づいて、マシン状態の前記1つ以上の関連の要素で少なくとも1つのアクションを実行することを実行する少なくとも1つの構成要素を有する機械を生じるもの。1918に記載のものであって、検知するときに、VM移行は、バーチャルマシンモニタからのVMエグジットと、VMへのVMエントリーとのうち少なくとも1つであるもの。2018に記載のものであって、前記1つ以上の状態アクションインジケータを決定するときに、前記少なくとも1つの状態アクションインジケータは、バーチャルマシン制御構造から少なくとも1つのインジケータ値を読み取ることと、1つ以上の固定値を決定することと、1つ以上の計算値を計算することとのうち少なくとも1つを実行することにより決定されるもの。2120に記載のものであって、計算するときに、前記1つ以上の計算値は、前記マシン状態の前記1つ以上の関連の要素を使用することと、前記マシン状態の第2の要素を使用することと、前記VMの状態に関連する要素を使用することと、前記VMMの状態に関連する要素を使用することと、制御インジケータ値を使用することと、前記VMCSのフィールド値を使用することとのうち少なくとも1つを実行することにより決定されるもの。2218に記載のものであって、実行するときに、前記少なくとも1つのアクションは、マシン状態の前記1つ以上の関連の要素を格納することと、1つ以上の固定格納値を格納することと、1つ以上の計算格納値を格納することと、バーチャルマシン制御構造の1つ以上のフィールドからマシン状態の前記1つ以上の関連の要素に1つ以上の値をロードすることと、マシン状態の前記1つ以上の関連の要素に1つ以上の固定値をロードすることと、マシン状態の前記1つ以上の関連の要素に1つ以上の計算値をロードすることとのうち少なくとも1つを実行することにより実行されるもの。2318に記載のものであって、前記少なくとも1つのアクションが実行された後に、前記VM移行を終了することを更に有するもの。