(57)【要約】仮想計算機（VM）の実行を制御する方法及びシステムが備えられる。VMモニタ（VMM）は、プロセッサに転送されるアクセス命令によって間接的にVM制御構造（VMCS）をアクセスする。一実施例では、アクセス命令は、プロセッサによって用いられてVMCS構成部分の適切な記憶構成部分を判定するVMCS構成部分識別子を含む。プロセッサは、プロセッサ記憶機構内部又はメモリ記憶機構内部のVMCS構成部分の適切な記憶場所を識別する。【特許請求の範囲】
【請求項１】
仮想計算機制御構造（VMCS）を起動させる方法であって：
仮想計算機モニタ（VMM）によって、該VMCSに必要な記憶サイズを判定する工程；及び
該VMCSの該必要な記憶サイズの大きさに少なくとも等しいメモリ領域に対するポインタをプロセッサに備える工程；
を備えることを特徴とする方法。
【請求項２】
請求項1記載の方法であって、該VMCSの該必要な記憶サイズを判定する工程において：
該必要な記憶サイズが、該VMCSの該必要な記憶サイズを含むプロセッサ・レジスタの読み取り命令と、該VMCSの該必要な記憶サイズを備える命令の実行とのうちの少なくとも１つを行うことによって判定されることを特徴とする方法。
【請求項３】
請求項1記載の方法であって、該ポインタを該プロセッサに備える工程において：
該ポインタは、VMCSポインタ・ロード命令を実行する工程によって備えられることを特徴とする方法。
【請求項４】
請求項3記載の方法であって、該VMCSポインタ・ロード命令を実行する工程において：
該VMCSポインタ・ロード命令は、オペランドとして、該VMCSの該必要な記憶サイズの大きさに少なくとも等しい該メモリ領域に対するポインタ・アドレスを含み、該オペランドが、該VMCSポインタ・ロード命令に対する明示オペランドと該VMCSポインタ・ロード命令に対する暗示オペランドとのうちの少なくとも１つであることを特徴とする方法。
【請求項５】
請求項1記載の方法であって、更に：
該メモリ領域を、該メモリ領域に対する該ポインタを該プロセッサに備える前に割り当てる工程；
を備えることを特徴とする方法。
【請求項６】
仮想計算機制御構造（VMCS）をアクセスする方法であって：
仮想計算機モニタ（VMM）によって、VMCSアクセス命令を実行する工程；及び
該VMCSアクセス命令に関連したVMCS構成部分識別子を用いてVMCS構成部分をプロセッサによってアクセスする工程；
を備えることを特徴とする方法。
【請求項７】
請求項6記載の方法であって、該VMCS構成部分をアクセスする工程において：
該VMCS構成部分識別子が、該VMCSアクセス命令に対する明示オペランドと、該VMCSアクセス命令に対する暗示オペランドとのうちの少なくとも１つであることを特徴とする方法。
【請求項８】
請求項6記載の方法であって、該VMCSアクセス命令を実行する工程において：
該VMCSアクセス命令が、該VMCS構成部分からの読み取り命令と、該VMCS構成部分に対する書き込み命令とのうちの少なくとも１つであることを特徴とする方法。
【請求項９】
請求項8記載の方法であって、該VMCSアクセス命令を実行する工程において：
該VMCSアクセス命令が該VMCS構成部分に対する書き込み命令であり；
該VMCSアクセス情報が書き込みデータ値をオペランドとして含むことを特徴とする方法。
【請求項１０】
請求項9記載の方法であって、該VMCSアクセス命令を実行する工程において：
該書き込みデータ値がアーキテクチャ的に定義されるデータ形式であることを特徴とする方法。
【請求項１１】
請求項9記載の方法であって、更に：
該書き込みデータ値を該VMCS構成部分に書き込む工程；
を備えることを特徴とする方法。
【請求項１２】
請求項6記載の方法であって、更に：
メモリに存在する該VMCS構成部分に該VMCS構成部分識別子が関連するということを判定する工程；
メモリに存在する該VMCS構成部分のメモリ位置を計算する工程；及び
メモリに存在する該VMCS構成部分をアクセスする工程；
を備えることを特徴とする方法。
【請求項１３】
請求項6記載の方法であって、更に：
プロセッサ上の記憶機構に存在する該VMCS構成部分に該VMCS構成部分識別子が関連するということを判定する工程；及び
オン・プロセッサ記憶機構に存在する該VMCS構成部分をアクセスする工程；
を備えることを特徴とする方法。
【請求項１４】
請求項6記載の方法であって、該VMCSアクセス命令を実行する工程において：
該VMCSアクセス命令が該VMCS構成部分からの読み取り命令であり；
該VMCS構成部分をアクセスする工程が更に：
該VMCS構成部分に関連したデータを読み取る工程；及び
該VMCS構成部分に関連した該データを該VMMに戻す工程；
を備えることを特徴とする方法。
【請求項１５】
請求項14記載の方法であって、該VMCS構成部分に関連した該データを該VMMに戻す工程が：
該VMCS構成部分に関連した該データを、該VMCS構成部分のアーキテクチャ的に定義されるデータ形式に一致させるよう再フォーマティングする工程；
戻りデータ値を生成する工程；及び
該戻りデータ値を該VMMに戻す工程；
を含むことを特徴とする方法。
【請求項１６】
請求項14記載の方法であって、該VMCS構成部分に関連した該データを該VMMに戻す工程において：
該データが、該VMCS構成部分のアーキテクチャ的に定義されるデータ形式と同じ形式と、該VMCS構成部分のアーキテクチャ的に定義されるデータ形式とは異なる形式とのうちの少なくとも１つである形式にあることを特徴とする方法。
【請求項１７】
請求項16記載の方法であって、更に：
該VMCS構成部分の実施形態特有データ形式に一致させるよう該書き込みデータを再フォーマティングする工程；
を備え；
該再フォーマティングの結果、再フォーマティング書き込みデータ値がもたらされ；
更に、該再フォーマティング書き込みデータ値を該VMCS構成部分に書き込む工程；
を備えることを特徴とする方法。
【請求項１８】
請求項17記載の方法であって、該書き込みデータを再フォーマティングする工程において：
該VMCS構成部分の実施形態特有データ形式が、該VMCS構成部分のアーキテクチャ的に定義される形式と同じ形式と、該VMCS構成部分のアーキテクチャ的に定義されるデータ形式とは異なる形式とのうちの少なくとも１つであることを特徴とする方法。
【請求項１９】
仮想計算機（VM）制御システムであって：
少なくとも１つの仮想計算機制御構造（VMCS）をアクセスすることによって少なくとも１つの仮想計算機（VM）を制御する仮想計算機モニタ（VMM）；
を備え；
該少なくとも１つのVMの各々が、該少なくとも１つのVMCSのうちの１つによって制御され；
更に、記憶機構に対するアクセスを有するプロセッサ；
を備え；
該記憶機構は、該VMCSに関連した記憶場所；
を含み；
該VMMがVMCSアクセス命令を用いて該VMCSの各々をアクセスすることを特徴とするシステム。
【請求項２０】
請求項19記載のシステムであって、該記憶機構が：
メモリとキャッシュとのうちの少なくとも一方を備えることを特徴とするシステム。
【請求項２１】
請求項19記載のシステムであって、各アクセス命令が：
該プロセッサによって用いられて、アクセスされる該VMCSのうちの１つの内部のVMCS構成部分を判定し、該VMCS構成部分に関連した記憶場所を判定する構成部分識別子；
を含むことを特徴とするシステム。
【請求項２２】
関連した命令を有するマシン・アクセス可能媒体を備える物品であって：
該命令が、アクセスされる場合、少なくとも1つの構成部分を備えるマシンをもたらし；
該少なくとも1つの構成部分は：
仮想計算機モニタ（VMM）から受信されるアクセス命令に関連した記憶場所を識別する工程；
該VMMから受信されるアクセス命令の種類を判定する工程；
該アクセス命令を満たす、データに関連したデータ形式を判定する工程；及び
該データをアーキテクチャ的に定義されるデータ形式に、該データが該アーキテクチャ的に定義されるデータ形式にない場合に、該アクセス命令を処理する前に再フォーマティングする工程；
を行うことを特徴とする物品。
【請求項２３】
請求項22記載の物品であって、該識別する工程において：
該アクセス情報が構成部分識別子を含むことを特徴とする物品。
【請求項２４】
請求項22記載の物品であって、該識別する工程において：
該構成部分識別子は、プロセッサ上にある場所とメモリ中にある場所とのうちの少なくとも一方である該記憶場所に該VMMアクセス情報をマッピングするのに用いられることを特徴とする物品。
【請求項２５】
請求項22記載の物品であって、該アクセス命令の種類を判定する工程において：
該種類は、読み取り命令と書き込み命令とのうちの少なくとも一方と関連することを特徴とする物品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、コンピュータ・システムに関し、特に、コンピュータ・システム内部の仮想計算機の動作制御に関する。
【背景技術】
【０００２】
仮想計算機アーキテクチャは、マシンの下にあるハードウェアが時間共有され、1つ又は複数の別個に動作する仮想計算機（マシン）（VM）としてみえるように物理マシンを論理的に分割する。仮想計算機モニタ（VMM）はコンピュータ上で実行し、1つ又は複数のVMを別のソフトウェアが抽象化することを容易にする。各VMは、その自らのオペレーティング・システム（OS）とアプリケーション・ソフトウェアとを実行する、自給式のプラットフォームとして機能し得る。VMにおいて実行するソフトウェアは併せて、本明細書及び特許請求の範囲では、ゲスト・ソフトウェアとして表す。
【０００３】
ゲスト・ソフトウェアは、VMにおいてではなく専用コンピュータ上で実行しているかのように動作することが想定されている。すなわち、ゲスト・ソフトウェアは、種々のイベントを制御し、コンピュータ（例えば、物理マシン）上のハードウェア資源へのアクセスを有することが想定されている。物理マシンのハードウェア資源は、1つ又は複数のプロセッサ、プロセッサ上に存在する資源（例えば、制御レジスタ、キャッシュ他）、メモリ（と、メモリに存在する構造、例えば、記述子テーブル）、及び物理マシンにおいて存在する別の資源（例えば、入出力装置）を含み得る。イベントは、割り込み、例外、プラットフォーム・イベント（例えば、初期化（INIT）又はシステム管理割り込み（SMI）など）を含み得る。
【０００４】
VMMは、必要に応じて、物理マシンの、装置、メモリ及びレジスタとの間でゲスト・ソフトウェア状態を出し入れし得る。VMMは、下にある物理マシンに対する直接アクセスを可能にすることによってVMの性能を向上させ得る。このことが特に適切である場合があり、それには、ゲスト・ソフトウェアにおける非特権モードにおいて動作が行われる場合が該当し、その場合は物理マシンに対するソフトウェア・アクセスを制限し、更に、VMMが制御を保持したい、物理マシンにおけるハードウェア資源を利用しないことになる場合も該当する。
【０００５】
VMMは、ゲスト処理がVMMの正常な実行又は非実行VMMの何れかに影響を及ぼし得る際にはいつでも制御を取り戻す。通常、VMMはそのような処理を検査し、下にある物理マシンに処理が進むことを可能にするか、ゲストのために処理をエミュレートする前に課題が存在するかを判定する。例えば、ゲストが、Ｉ／Ｏ装置をアクセスするか、マシン構成を（例えば、制御レジスタ値を変更することによって）変更しようするか、又はメモリの特定の領域をアクセスしようとする場合などに、VMMは制御を取り戻す必要がある場合がある。
【０００６】
VM処理をサポートする既存システムはVMの実行環境を仮想計算機制御構造（VMCS）として表す固定形式構造を用いて制御する。VMCSは、メモリ領域に記憶され、例えば、ゲストの状態、VMMの状態、及びゲスト実行中にVMMが制御を取り戻したい条件を示す制御情報を含む。物理マシンにおけるプロセッサは、VMCSから情報を読み取って、VMとVMMとの実行環境を判定し、VMMの制御の下でゲスト・ソフトウェアの特性を制約する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来のアーキテクチャは、物理マシンのメモリにおいてVMCSを位置特定し、通常のメモリ読み取り命令とメモリ書き込み命令とを用いてこれをVMMがアクセスすることを可能にする。この理由で、VMCSの形式は、プロセッサ命令群アーキテクチャにおいてアーキテクチャ的に定義されなければならない（。更に、VMCSの形式は、別のシステム構造や命令コード化と同様な方法で仕様書やマニュアルに文書化されなければならない。）VMMは、これらの仕様書に直接コード化される。この構造化は、VMMをサポートするプロセッサの実施における柔軟性を制限する。VMCSの形式はアーキテクチャ的に定義されているので、特定のプロセッサの実施形態のマイクロアーキテクチャは、性能、拡張性、互換性、セキュリティなどの理由でVMCSデータの形式の要件、内容の要件、編成の要件、又は記憶の要件における変更を、VMMの実施形態のインストール・ベースに対する、相当する修正も必要とせずに行ってはいけない。
【課題を解決するための手段】
【０００８】
したがって、物理マシンの下にある実施形態に固定して結合されていない、仮想マシン・アーキテクチャの更に柔軟な実施形態に対する必要性が存在する。
【発明を実施するための最良の形態】
【０００９】
新規性を有するVM制御アーキテクチャを説明する。実施例の以下の詳細の説明では、
添付図面を参照し、該添付図面は本明細書及び特許請求の範囲の一部分を構成し、該添付図面では、本発明の特定の実施例を実施し得るうえでの制約ではなく、本発明特定の実施例を例示的に表す。この実施例は、当業者が理解し、実施することを可能にするのに十分詳細に記載されており、別の実施例を利用し得ることとし、本願の開示の趣旨及び範囲から逸脱することなく、構造的な変更、論理的な変更、又は物理的な変更を行い得ることとする。下記の詳細の説明は、よって、限定する意味合いで解されるものでないこととし、本明細書及び特許請求の範囲開示の本発明の実施例の範囲は本特許請求の範囲によってのみ規定される。
【００１０】
VMMは、1つ又は複数のVMの抽象化を別のソフトウェア（「guest  software」、「guests」、又は単に「guest」）に提示する。VMMは、種々のゲストに対して同様な抽象化又は異なる抽象化を備えることが可能である。各ゲストは、それが利用するうえで、VMにおいて提示されるハードウェア・プラットフォームのファシリティ全部が利用可能であることを想定している。例えば、ゲストは、VMにおいて提示されるプロセッサとプラットフォームとのアーキテクチャによって、レジスタ、キャッシュ、構造、I/O装置、メモリなどに対するアクセスを有することを想定している。更に、各ゲストは、例外、割り込み、及びプラットフォーム・イベント（例えば、初期化（INIT）及びシステム管理割り込み（SMI））などの種々のイベントを処理することを想定している。
【００１１】
これらの資源とイベントとの一部は、「特権化されている」が、それは、VMの動作が適切であるようにし、VMM及び別のVMを保護するよう、VMMによって管理されなければならないからである。特権化された資源及びイベントの場合、VMMは、ゲスト・ソフトウェアが所望する機能を、これらの資源とイベントとの最終的な制御を確保する一方で容易にする。ゲスト・ソフトウェアの機能を容易にする動作は、VMM側の広範囲にわたる種々の活動を含み得る。VMMの活動、更にその特性は、本発明の種々の実施例の範囲を限定するものでない。
【００１２】
ゲスト・ソフトウェアが特権化資源をアクセスするか、特権化イベントが生じる場合、制御をVMMに移し得る。ゲスト・ソフトウェアからVMMに制御を移すことは、VM出口処理と呼ばれる。資源アクセスの容易化又はイベントの処理を適切に行った後、VMMは制御をゲスト・ソフトウェアに移し得る。VMMからゲスト・ソフトウェアに制御を移すことはVM入口処理と呼ばれる。
【００１３】
仮想マシン制御構造（VMCS）は、例えば、ゲスト・ソフトウェアの状態、VMMの状態、ゲストが実行することをVMMが妨げようとする条件を示す制御情報、及び時点が最も近いVM出口処理に関する情報を含むアーキテクチャ的に定義される構造である。現行システムでは、アーキテクチャ的に定義される構造にまさに一致する、VMCSの表現はメモリにある。物理マシンにおけるプロセッサは、VMCSからの情報を読み取って、VMの実行環境を判定し、その特性を制約する。
【００１４】
ゲストの実行中に、プロセッサはVMCSにおける制御情報を照会して、どのゲスト動作（例えば、特定の命令の実行、特定の例外の生起など）とイベント（例えば、外部割込み）がVMの出口処理をもたらすことになるかを判定する。VM出口処理が行われる場合、ゲスト・ソフトウェアによって用いられるプロセッサ状態の構成部分はVMCSに保存され、VMMが必要とするプロセッサ状態の構成部分がVMCSからロードされる。VMの出口処理が行われる場合、制御は、当業者が既知の何れかの機構を用いてVMM120に転送される。
【００１５】
VM入口処理が行われる場合、VM出口処理で保存され（、かつVMMによって修正された場合がある）プロセッサ状態が復元され、制御はゲスト・ソフトウェアに戻される。ゲストへの第１のVM入口処理を容易にするよう、VMMは適切なゲスト状態をVMCSに書き込む。VM出口処理を行う間、VMMはVMCSにおけるゲスト状態を変更し得る。いくつかの実施例では、複数のVMをサポートする複数のVMCS構造は、単一の物理マシン上の単一のVMMによって管理される。VMCSは上記の情報全てを含む必要はなく、VMの制御を支援する追加情報を含み得る。一部の実施例では、VMCSは追加情報のかなりの量を含み得る。
【実施例】
【００１６】
図１は、本発明の一実施例による、VMアーキテクチャ110の図を示す。VMアーキテクチャ100は、ベース・ハードウェア・プラットフォーム110（例えば、物理マシン）を含む。ベース・ハードウェア・プラットフォーム110は、その各々が揮発性メモリ及び/又は非揮発性メモリ116へのアクセスを有するその１つ又は複数のプロセッサ112を含む。更に、図１に表していない、ベース・ハードウェア・プラットフォームにおける別の構成要素（例えば、入出力装置）があり得る。VMアーキテクチャ110は、1つ又は複数のVM（例えば、130、140、及び150）を管理するVMM120も含み、各VM(例えば、130、140、150)は1つ又は複数の、OS（例えば、150、160、170）及びアプリケーション（例えば、152、162、172）をサポートする。プロセッサ112は、マイクロプロセッサ、ディジタル信号プロセッサ、マイクロコントローラなどのソフトウェアを実行することができる何れかの種類のプロセッサであり得る。プロセッサ112は、本発明の方法実施例を実行するマイクロコード、プログラム可能ロジック又はハードコード・ロジックを含み得る。
【００１７】
メモリ116は、プロセッサ112によってマシン判読可能な、ハード・ディスク、フロッピー（登録商標）・ディスク、ランダム・アクセス・メモリ（RAM）、読み取り専用メモリ（ROM）、フラッシュ・メモリ、上記装置の何れかの組み合わせ、又は何れかの別の種類の媒体であり得る。メモリ116は、本発明の方法実施例の実行を行う命令又はデータを記憶し得る。メモリ116は、以下に更に詳細を説明する、VMCSの状態を維持するうえでプロセッサ112が用いるVMCS118領域を含む。
【００１８】
プロセッサ112は、マイクロプロセッサ、ディジタル信号プロセッサ、マイクロコントローラなどのソフトウェアを実行することができる何れかの種類のプロセッサであり得る。各プロセッサ112は、以下に更に詳細に説明するVMCSキャッシュ114を含み得る。プロセッサ112は、本発明の方法実施例の実行を行う、マイクロコード、プログラム可能ロジック、又はハードコード・ロジックを含み得る。
【００１９】
VMCSキャッシュ114は、存在する場合、VMCS状態の一部又は全部を、一時的に記憶させるか、その寿命にわたって記憶させるのに用い得る。VMCSキャッシュ114は、レジスタ、キャッシュ・メモリ、又は何れかの別の記憶機構を含み得る。図1では、VMCSキャッシュ114は、プロセッサ112の部分として表すが、ベース・プラットフォーム・ハードウェア110の何れかの構成部分内部のプロセッサ112の外に存在し得る。以下に続く記載では、VMCSキャッシュ114は「on-processor  storage」又は「on-processor  resources」としても表すが、この記憶機構はプロセッサ112以外のプラットフォーム構成部分において存在し得ることとする。VMCSキャッシュ114は、本発明の方法を実施するのに厳密には必要でない。
【００２０】
通常、VMMはメモリにおけるVMCSを通常の読み書き命令を用いてアクセスすることになる。しかし、図1のVMアーキテクチャ100では、VMM120は、プロセッサが備えるVMCSアクセス命令119の群によって間接的にVMCS領域118をアクセスする。VMCSアクセス命令119は、VMCS領域118と何れかの利用可能なVMCSキャッシュ114とを利用する。実施例では、VMCSアクセス命令119は、アクセスされているVMCS構成部分の識別子であるオペランドを含む。この識別子は本明細書及び特許請求の範囲では「component  identifier」と呼ばれる。VMM120は、何れかの特定のVMCS構成部分がVMCS領域118又はVMCSキャッシュ114に記憶されていることを知っていなくてよい。VMアーキテクチャ100は更に、VMCS領域118をアクセスするよう通常の読み書き命令が用いられる場合、予測可能でない結果が生じ得る。VMCSアクセス命令119を用いることによって、利用可能な、プロセッサ上の記憶機構とメモリ・ベース（例えば、VMCS領域118）の記憶機構とのその利用における自由度を与え、種々の性能上の最適化も可能にする。
【００２１】
一部の実施例では、VMCSアクセス命令119は、VMCS領域118におけるメモリの読み書きによってプロセッサ・マイクロアーキテクチャによって実施される。別の実施例では、VMCSアクセス命令119はプロセッサ上の資源の読み書きを行い得る。VMM120は、下にある物理マシンのマイクロアーキテクチャがVMCSをサポートする方法を知っていなくてよい。このようにして、下にあるプロセッサの実施形態を改変して、VMM120を下にあるプロセッサ実施形態と互換でないようにすることなく、性能、セキュリティ、信頼度、又は別の考慮点に対処することが可能であり、カスタム化VMCS実施形態をプロセッサ実施形態毎に策定することが可能である。
【００２２】
以下の例はVMCSアクセス命令119を使用しないVMアーキテクチャの欠点を示す。プロセッサの実施形態がプロセッサ上の記憶機構にVMCSデータを一時的にキャッシュすることが可能である場合、特定のイベントが生じる際にメモリ中のVMCS領域118にデータが書き込まれるだけである。VMCSデータがキャッシュされる期間中に、VMCS領域118に対する通常の読み取りはステール値（正しくない値）を戻すことになる。VMCS領域118に対する通常の書き込みは、書き込みを記憶機構に適切にマッピングするようプロセッサ実施形態によって特別の配慮がなされない限り、プロセッサ上の記憶機構におけるデータを更新しないことになる。VMCSアクセス命令119を用いなければ、プロセッサ実施形態は、プロセッサ上の資源に記憶されている何れかの一時的な状態又はキャッシュ状態に整合したVMCS領域を保持しなければならない。このことは、以下に更に説明するように、特定の、性能の最適化、VMアーキテクチャの拡張などを排除し得る。通常のメモリ動作とは対照的に、VMCS読み取り命令は、適宜、プロセッサ上に記憶されている値を戻し、VMCS書き込み命令は、VMCS状態を、それがどこに配置されていても適切に更新する。これらの命令は以下に詳細に説明する。
【００２３】
VMCSアクセス命令119を容易にするよう、VMCSの各構成要素は、VMCSの構成部分を識別するアーキテクチャ的に定義される定数によって識別される。この定数は、「component  identifiers」として本明細書及び特許請求の範囲において表す。実施例では、構成部分識別子は16ビット値であるが、別の実施例ではこれよりも大きくても小さくてもよい。
【００２４】
以下の記載では、VMCSにおけるいくつかのフィールドは、本発明の種々の実施例の記載に用いられる。例えば、GUEST＿EIPは、ゲスト・ソフトウェアの命令ポインタを含むフィールドである。VM_CONTROLSは、VM実行環境などを制御するビットを含むフィールドである。種々のフィールドの構文と意味論とを理解することは、本明細書及び特許請求の範囲記載の本発明を理解するうえで必要でない。更に、フィールドには、特定の、アーキテクチャ的に定義される構成部分識別子が与えられる。これらの例における、用いられる特定のフィールドと構成部分識別子の値は、本発明の適用性を何れの方法でも限定するものでないこととする。
【００２５】
VMCSアクセス情報119の利用の効果を以下に説明する。プロセッサの実施形態が、VMCS領域118に記憶されているデータの形式をプロセッサ実施形態毎に変更し得るということを検討する。例えば、第１プロセッサ実施形態は、VMCS領域のGUEST＿EIPフィールドをVMCS領域の28番目のバイトから開始して記憶させ得る。第２プロセッサ実施形態は、同様なVMCSフィールドをVMCS領域における16番目のバイトで記憶させ得る。最初の実施形態用に書き込まれ、VMCSアクセス命令119を利用するVMM120は、VMCS領域118の形式が変更してもプロセッサ112の後の実施形態上でなお機能することになる。この互換性は、２つのプロセッサ実施形態におけるVMCSアクセス命令の実施形態が、用いられるVMCS領域118の形式を理解し、必要なデータを適切にアクセスするので、達成される。
【００２６】
一部の実施例では、VMCSアクセス命令119を容易にするよう、VMM120は、VMCSに対してプロセッサ112が必要とする記憶機構の全部又は一部を収容するメモリ領域（例えば、VMCS領域118）を確保することを必要とし得る。本発明のこれらの実施例では、プロセッサが備える命令は、VMCS領域118のポインタ又はアドレスをVMM120がプロセッサ120に備えることを可能にする。一実施例では、アドレスは物理アドレスである。別の実施例は、仮想アドレス又は線形アドレスを用い得る。この命令を用いてプロセッサ112に備えられるアドレスは、以降VMCSポインタと呼ぶ。この命令はプロセッサ112にVMCS領域224の位置を通知する。この新たな命令は、VMCSポインタが参照する、VMCS領域118における全部又は部分においてプロセッサ112が記憶し得るVMCSをアクティブ状態にする。
【００２７】
別の実施例は、VMCS領域118に確保されなければならないメモリ116の量をVMM120が見つけることを可能にする機構を備え得る。例えば、（本明細書及び特許請求の範囲においてIA-32  ISAとして表す）インテル(Intel)社ペンティアム（登録商標）IVのプロセッサ命令群アーキテクチャ（ISA）では、要求VMCS領域サイズを含むモデル特有レジスタ（MSR）を備え得る。別の実施例は、要求VMCS領域サイズを戻す命令を備える。利用可能な、何れかの別の機構を用いてこの情報をVMMに伝達し得る。このようにして、要求メモリ領域118のサイズは、VMM120の再設計又は再コンパイルを強いることなく、プロセッサ実施形態によって変わり得る。
【００２８】
例えば、メモリ116におけるVMCS領域118に64バイトを第１プロセッサ112が必要とするということを仮定する。この要件は、上記のように、VMM120に通知される。VMM120は、上記機構を用いてVMCS領域118にどれくらいの量のメモリ116を割り当てるかを判定するよう、このプロセッサ実施形態上で実行するよう書き込まれる。その場合、メモリ116におけるVMCS記憶機構に128バイトを必要とする第２プロセッサ実施形態が作成される。第１プロセッサ実施形態に書き込まれるVMM120は、VMCS領域118に正しい記憶量を割り当てることになるので、第２実施形態上で正常に機能する。
【００２９】
VMCSポインタがアクティブ状態にある間、プロセッサ112は、VMCSの全部又は一部を、VMCS領域118において記憶させることが可能であるか、該プロセッサ上に存在する資源において記憶させることが可能であるか、何れかの別の利用可能な（すなわち、VMCSキャッシュ114における）場所において記憶させることが可能である。更に、プロセッサ112は、非アーキテクチャ的な状態の情報を、VMCS領域118において記憶させることが可能であるか、該プロセッサ上の資源において記憶させることが可能である。例えば、プロセッサ112は、一時変数、VM（例えば、130、140、又は150）と関連したマイクロアーキテクチャ状態、VM（例えば、130，140、又は150）の状態の表示子などを記憶させることが可能である。ソフトウェアは、VMCSポインタがアクティブ状態にある間、VMCS領域118をアクセスするよう通常のメモリの読み書きを用いるものでない。この制約によって、VMM120と、VMCSに関連したVM（例えば、130、140、又は150）の動作を正常になるようにしている。
【００３０】
別の、プロセッサが備える命令は、プロセッサ上の資源にキャッシュされた何れかのVMCSデータをVMCS領域118に書き込み、プロセッサ上の記憶機構における適切なデータを無効化し、更にVMCSポインタを非活動化させる。実施例は、例えば、アーキテクチャ的に定義されるか非アーキテクチャ的に定義される状態表示子をVMCS領域に書き込むことによってVMCSを非アクティブ状態としてマーキングし得る。別の実施例は、単に、VMCSのプロセッサ上の記憶機構を消去し、VMCSのプロセッサ上状態を非活動化させる（無効化する）。この命令は、VMCS領域118の内容をVMM120が移動させる何れかの試みの前に実行される。VMM120は、VMCS領域118を移動させようとする場合、VMCS形式が維持され、プロセッサ実施形態にしか知られないので、単一のデータブロック移動によってそのことを行うことが可能である。更に、VMMが（本明細書及び特許請求の範囲記載の機構に基づいてメモリを割り当てて）VMCS領域のサイズがわかっているので、このブロック移動は可能である。VMCSの個々の構成要素をVMM120は識別しなくてよい。
【００３１】
一部の実施例では、特定の実施例に特有の機構は、特定のVMCSを確立したプロセッサ実施形態をVMM120が識別することを可能にすることができる。VMM120はこのプロセッサ識別を用いて、VMCSが別のプロセッサ実施形態と互換であるかを判定することが可能である。一実施例では、この識別子は、VMCS領域118の最初の4バイトにあり、例えば、MSR又は何れかの別の方法によってVMM120に通知される。VMCSの最初の利用の前に、VMM120は、この識別子をVMCSにおける適切な場所に書き込むことを必要とし得るものであり、よって、VMCS領域118のその部分の形式をアーキテクチャ的に定義することが可能である。一部の実施例では、全ての実施形態がVMCS領域118の、同一の、アーキテクチャ的に定義される部分を定義するということが望ましい。
【００３２】
先行する実施例が新たに定義される領域を定義されていない状態のままにし、新たに定義される部分が、それを明示的に利用しない、VMM120の動作を妨げないという前提で、別の実施例がVMCS118の新たな、アーキテクチャ的に定義される部分を定義することが可能である。このようにして、これらの実施例用に書き込まれる何れかのVMM120は、より新しい実施形態上で動作することになる。
【００３３】
一部の実施例では、プロセッサが備える命令119はいくつかの別個の命令を含む。
●  VMCSロード・ポインタ命令はメモリ・アドレスをオペランドとして有する。このアドレスは、プロセッサ112がVMCS（例えば、VMCS領域118の始点）を記憶可能な場所である。このアドレスと関連したVMCSは命令によってアクティブ状態にされる。この命令は、VMCSに関連し、VMCSによって制御されるVM(例えば、130、140、又は150)の起動と、以下の種々の別の命令の利用とを可能にするものでもある。一実施例では、アドレスは物理アドレスである。別の実施例は、仮想アドレス又は線形アドレスを用い得る。
●  VMCS記憶ポインタ命令は、アクティブ状態のVMCS領域118へのポインタを（例えば、プロセッサ112上の）レジスタ又は（例えば、メモリ116における）メモリ位置に記憶させる。そのような記憶場所の位置は、命令に対するオペランドとして備え得る。
●  VMCS読み取り命令は、VMCSの構成部分を（例えば、プロセッサ112上の）レジスタ又は（例えば、メモリ116における）メモリ位置に読み込む。命令は、VMCSから読み取る対象のVMCS構成部分と、VMCSから読み取られるデータを記憶する対象の場所（例えば、レジスタ又はメモリ位置）とを示す構成部分識別子を含む、いくつかのパラメータを含み得る。
●  VMCS書き込み命令は、VMCSの構成部分を、（例えば、プロセッサ112上の）レジスタ又は（例えば、メモリ116における）メモリ位置からロードする。VMCS読み取り命令のように、VMCS書き込み命令はVMCS構成部分識別子のオペランドを含み得る。更に、VMCS書き込み命令は、VMCSに書き込む対象のデータの場所（例えば、レジスタ又はメモリ位置）を記述するオペランドを含み得る。
●  VMCSクリア命令は、VMCSに関連したプロセッサ上の記憶機構の全ての内容がVMCS領域118にもう一度記憶され、プロセッサ上の資源におけるデータを無効化し、更にVMCSポインタを非活動化するようにしている。この命令は、現在アクティブ状態にあるVMCSポインタを消去し、非活動化して、オペランドなしで動作することが可能であるか、別の実施例では、この命令はオペランドとして、消去と非活動化が必要なVMCSポインタをとり得る。実施例では、VMCSクリア命令は、アーキテクチャ的又は非アーキテクチャ的に定義される状態表示子をVMCS領域に書き込むことによってVMCSを非アクティブ状態としてマーキングし得る。
●  最後に、VMCS入力命令は、VMアーキテクチャ100の意味論とVMCSの内容によってプロセッサ状態をロードすることによって、アクティブ状態のVMCSによって定義されるVM（例えば、130、140、150）に制御（すなわち、VMエントリ）を移すことをもたらす。あるいは、命令は、入力される対象のVMCSポインタ（又は該ポインタの位置）を備えている引数を含み得る。
【００３４】
上記の、プロセッサが備える命令119は、1つの実施例のみを表すが、それは、種々の別々すなわち代替の命令119を備え得るからである。例えば、一部の実施例では、VMCSクリア命令は、VMCSポインタを非活動化することなく、プロセッサ上の記憶機構からのVMCSデータをVMCS領域118に複製し得る。オペランドは明示又は非明示であり得る。プロセッサ112などにおいてアクティブ状態にあるVMCSポインタ全てを処理する別の命令119（又は上記命令119の変形）を備え得る。
【００３５】
当業者が分かるように、通常のVMアーキテクチャは、メモリにおけるVMCSの、静的に、アーキテクチャ的に定義される形式を有する。このことは、VMCSのサイズ、編成、又は内容をおぎなうか変更するプロセッサ実施形態の能力を制限するが、それは、VMCSに対する変更が、VMMの実施形態に対する相当する変更を必要とすることになるからである。更に、通常のVMMは、通常のメモリ読み取り動作とメモリ書き込み動作とを用いて通常のVMCSをアクセスするので、プロセッサ実施形態は、VMCSデータの記憶機構をプロセッサ上の資源に割り当てるうえでの柔軟性が低い。例えば、プロセッサは、VMCSの特定の部分をプロセッサ上の資源においてVMMへのVM出口処理中にキャッシュすることができない場合があるが、それは、メモリにおける、VMCSの相当する領域のVMMが修正を行ったかを検知することが困難であり得るからである。プロセッサ上の資源とメモリ中のVMCS画像との間の整合性を確かめることができないというこのことは、VM入口処理に続いてゲスト・ソフトウェアを実行する前に要求される場合があるエラー検査と整合性検査とを複雑にする。
【００３６】
しかし、本発明の種々の実施例によって、VMM120は、通常の読み取り動作や書き込み動作を用いて直接VMCSメモリ画像をアクセスせず、メモリ116におけるVMCSの予め定義された形式を利用せず、実行時にメモリ116におけるVMCSに要求される記憶サイズを判定しない。
【００３７】
VMCS記憶メモリ要件の実行時のバインドと上記の、プロセッサが備える命令119の利用は図２に示す。図２は、VMMにおける種々の活動を通じたVMCSポインタの状態を示す。処理はブロック210から開始する。この時点では、アクティブ状態にあるVMCSポインタは何ら存在しない。ブロック210では、VMMは、プロセッサが、VMCSをサポートするのに必要なメモリ領域のサイズを判定する。上記のように。これは、例えば、指定MSRを読み取ることによって実現し得る。
【００３８】
ブロック220では、VMMは所要メモリを割り当てる。VMCSポインタはなお非アクティブ状態にある。最適にはこのメモリ領域は物理メモリ内部で連続しているが、本実施例ではそのような要件は何ら必要でないということが当業者に明らかである。VMMは、上記、（ブロック230に入る）VMCSロード・ポインタ命令を用いてプロセッサにVMCS領域のアドレスを備えることによってVMCSを起動する。この時点では、VMCSポインタは、ワーキングVMCSポインタと呼ばれる。VMCSポインタがアクティブ状態になった後、VMMは、（119として図１に表し、232及び234として図2に表す）適切なVMCSアクセス命令を用いてVMCSの構成部分の読み書きを行い得る。この読み書き命令の後も、VMCSポインタはアクティブ状態のままである。
【００３９】
ゲストが実行することをVMMが可能にしたい場合、VMMは（ブロック240に入る）VM入口命令を用いてゲストをマシンにロードする。VM入口処理の後、VMCSポインタはなおアクティブ状態にあるが、その場合、ゲストが実行する環境と特性とを判定するようプロセッサによって用いられる制御VMCSポインタとして機能する。
【００４０】
VM出口処理が行われると、制御はVMMに戻る（ブロック240からブロック230に戻る）。VMCSポインタは、もう一度ワーキングVMCSポインタとして、アクティブ状態のままである。VMMはVMCSフィールドの読み書き（矢印232及び234）を適宜行うことが可能であり、（ブロック240に戻る）VM入口処理命令を用いてもう一度ゲストを入力し得る。あるいは、VMMは、（状態220に戻る）VMクリア命令を用いてVMCSポインタを非活動化させる場合があり、その時点でVMCSポインタは非アクティブ状態になる。
【００４１】
なお、VMMが何れかの特定の瞬間に種々の動作（例えば、VM読み取り、VM書き込み、VM入口処理など）を行い得るので、方法200は何れかの特定の動作シーケンスに限定されるものでない。更に、方法200を利用する特定のプロセッサ内部の、何れかの特定の瞬間では、単一のVMCSポインタ又は種々のVMCSポインタがアクティブ状態又は非アクティブ状態であり得る。一部の実施例では、複数のVMCSが、何れかの特定の時点で何れかの特定のプロセッサ内部でアクティブ状態にあり得る。このようにして、VMMは、VMCSクリア命令を実行することなくVM間で切り替えることが可能であり、それによってVM処理効率を向上させる。
【００４２】
実施例では、プロセッサが備える別の命令は、何れかの特定の時点でアクティブ状態にあり得るいくつかの同時VMCS又は並列VMCSを照会して取得する機能をVMMに備え得る。別の実施例は、VMMが読み取り得るMSRを備えてこの情報を得ることが可能である。別の実施例では、同時にアクティブ状態にあることが可能であり、（よって、例えば、プロセッサ上の資源においてキャッシュすることが可能な）いくつかのVMCSポインタはVMMソフトウェアには直接視えない場合があり、プロセッサ実施形態は、プロセッサ上の資源にプロセッサが記憶可能なものよりも多いVMCSポインタをVMMが起動する場合にオーバフロー状態を自動的に処理する。この場合、プロセッサは、適切なVMCSデータをメモリにおける関連したVMCS領域に自動的にフラッシングし得る。特定の実施例では、図１の記載とともに上記説明した、プロセッサが備えるいくつかの命令内部に明示のVMCSポインタ引数が必要な場合がある。
【００４３】
本発明の実施例は、VMCSデータのプロセッサ上の記憶機構とメモリ中の記憶機構とを管理することに関連した詳細を管理するうえでのソフトウェアに対する要件を取り除く。よって、VMMは、その管理下にあるVMの各々を更に高い抽象化レベルで管理する。このストラテジは、既存のVMMソフトウェアを変更することなく、プロセッサが備える命令を追加するか修正することによってVM実行がより手軽にかつより最適に改変されるか拡張されるようにVMCS記憶機構の詳細を図1と図2において上記に記載する、プロセッサが備える命令が管理することを可能にする。
【００４４】
図3は、本発明の実施例における、VMCS読み取り/書き込み命令の利用を表す図である。アーキテクチャ的なVMCS形式305を表すが、これはVMMによって明示的に用いられるものでない。むしろ、VMMは、VMCS構成部分識別子、フィールドのサイズ、及びフィールドの意味論の知識によってプログラムされ、メモリにおけるVMCS記憶機構の形式のアーキテクチャ的な定義の知識によってプログラムされるものでない。VMMは、アーキテクチャ的なVMCS305におけるフィールドをアクセスしようとする場合、VMCS読み取り（又は、適宜、VMCS書き込み）を行う（。VMCS読み取りを図3に単に例示の目的で表す。）。VMCS読み取り命令310へのパラメータは、VMCSの構成部分を識別するアーキテクチャ的に定義される定数である構成部分識別子である。プロセッサは、マッピング関数320を用いてVMMのためにVMCSデータをアクセスするよう構成部分識別子を用いて、適宜、プロセッサ上の資源（例えば、VMCSキャッシュ322）又はメモリ中の資源（例えば、VMCS領域324）にマッピングする。VMCS領域又はVMCSキャッシュに記憶されるデータがアーキテクチャ的に定義される形式にない場合、データを、整合させるよう、再フォーマティング関数323を用いて適切に再フォーマティングされる。
【００４５】
２つのVMCSアクセス命令例を図3に表す。これらの例は何れもVMCS読み取り命令に対するものであるが、図5に関して以下に詳細を記載するように、VMCS書き込み命令に対して同様な活動群が存在する。
【００４６】
図3を参照すれば、VMCS読み取り命令310の第１例は、0x4032の、アーキテクチャ的に定義されるコード化を有するGUEST＿EIP構成部分をアクセスする。プロセッサ実施形態は、マッピング関数320によって判定される、VMCS領域324におけるこの構成部分のデータを維持する。プロセッサはVMCS領域324からの適切な構成部分データをメモリ読み取り動作330を用いて読み取る。読み取り動作330はVMCS領域324における構成部分の位置が（この場合もまた、マッピング関数320によって判定されるように）分かる（。この例では、VMCS領域におけるオフセット12で位置特定される。）。プロセッサは更に、データ値を（矢印331として表す）VMMに戻す。
【００４７】
VMCS読み取り命令350の第２例は、0x1076の、アーキテクチャ的に定義されるコード化を有するVM_CONTROLS構成部分をアクセスする。このプロセッサ実施形態は、この構成部分を（マッピング関数320によって判定されるように）VMCSキャッシュ322に維持する。プロセッサはVMCSキャッシュ322をアクセスしてデータを取り出す。この場合、データは、プロセッサ上に、VM_VONTROLS構成部分のアーキテクチャ的な定義に一致しない形式で記憶される（例えば、データはプロセッサ上に再配列8バイト・オブジェクトとして記憶される一方、VM_CONTROLSフィールドのアーキテクチャ的な定義は4バイトのオブジェクトである。）。VMMにデータを戻す前に、プロセッサはVM_CONTROLSデータを、再フォーマティング関数323を用いて、再フォーマティングして、フィールドのアーキテクチャ的な定義と一致させる。この再フォーマティング値（すなわち、要求構成部分のアーキテクチャ的な定義に一致する値）がVMMに戻される（矢印326として表す）。
【００４８】
これらのVMCSアクセス命令を用いて、その各々が別個のVMCSによって識別されるその1つ又は複数のVMを管理するVMMは、VMCSに関連した記憶機構を管理する必要がないが、このことは、それがメモリから、プロセッサ上の資源にキャッシュされるからである。更に、VMMは、メモリ又はプロセッサ上の資源におけるデータのフォーマティングなどの、プロセッサ実施形態の詳細の変更を管理しなくてよい。よって、プロセッサ開発者はVMCSアクセス命令を改変するか修正して、既存のVMM又はVMの動作に悪影響を及ぼすことなく、VM性能を向上させ、VM能力を拡張させ得る。既存のVMM及びVMは、しかし、そのような改変から恩恵を受け得るが、それは、性能の向上、信頼度の向上、スケーラビリティの向上、又はその他の向上が、VMアーキテクチャの新たな実施形態にもたらされるからである。
【００４９】
図4は、本発明の一実施例による、VMCS読み取り命令を実行する方法400の流れ図である。410では、VMCS読み取り要求がVMMから受信される。420では、VMCS構成部分識別子がVMCS読み取り要求から取得される。構成部分識別子は、VMCSの所望の構成部分を識別する、アーキテクチャ的に定義される定数である。
【００５０】
プロセッサは430において構成部分識別子を検査して、構成部分識別子に関連したVMCS構成部分がメモリにあるかを判定する。VMCS構成部分がメモリに記憶されている場合、メモリ位置のアドレスが440で計算され、VMCS構成部分と関連したVMCSデータが450で取得される。しかし、VMCS構成部分がメモリに記憶されていない場合、プロセッサは、460で、プロセッサ上の記憶機構から、VMCS構成部分に関連したVMCSデータを取得する。このようにして、プロセッサは構成部分識別子を用いて、読み取り要求をVMCS構成部分記憶機構に、460で、それがメモリに存在しようがプロセッサ上に記憶機構に存在しようがマッピングする。
【００５１】
470では、VMCSデータをVMMに戻す前にVMCSデータの再フォーマティングが必要かを判定するよう検査がプロセッサによって行われる。VMCS構成部分のアーキテクチャ的に定義されるデータ形式とは異なる形式においてVMCSデータが（VMCS領域かプロセッサ上の資源に）記憶されている（すなわち、VMCS構成部分がアーキテクチャ的に定義される形式とは異なる実施形態特有のデータ形式で記憶されている）場合、480で、再フォーマティング関数がアクセスされて、実施形態特有のVMCSデータが、アーキテクチャ的に定義されるデータ形式に変換される。VMCSデータが（VMCS領域又はプロセッサ上の資源において）VMCS構成部分のアーキテクチャ的に定義されるデータ形式において記憶されている場合、VMCSデータに対する再フォーマティング関数も変換も行われなくてよい。最後に、490では、（その場合、アーキテクチャ的に定義されるデータ形式にある）VMCSデータはVMMに戻される。
【００５２】
図5は、本発明の一実施例による、VMCS書き込み命令を実行する方法500の流れ図である。505では、プロセッサは、VMCS書き込み要求をVMMから受信する。プロセッサは、510に表すように、書き込み要求のオペランドのうちの１つとして構成部分識別子を取得する。更に、515では、プロセッサは、別のオペランドとして、VMCSに書き込むことが望まれる書き込みデータを別のオペランドとして取得する。この書き込みデータは、書き込まれるVMCS構成部分のアーキテクチャ的に定義されるデータ形式にある。
【００５３】
520では、プロセッサによってアーキテクチャ的に定義されるデータ形式においてVMCS構成部分が（VMCS領域又はプロセッサ上の資源において）記憶されているかを判定する検査が行われる。よって、VMCS構成部分が、アーキテクチャ的に定義されるデータ形式において記憶されていない場合、525で、データの適切な再フォーマティングが行われて、データが、アクセスされるVMCS構成部分に関連した適切な実施形態特有のデータ形式にある。データが記憶されている形式はアーキテクチャ的に定義される形式と同一であっても、サイズ又は編成において異なっていてもよい。
【００５４】
次に、530では、VMCS構成部分がプロセッサによって記憶されている位置を判定するよう別の検査が行われる。構成部分識別子を用いて、プロセッサはVMCS構成部分の記憶機構がある場所を判定する。記憶場所がメモリにある場合、535で、メモリ・アドレスが計算され、540で、書き込みデータがメモリ位置に書き込まれる。しかし、記憶場所がメモリにない場合、545で、プロセッサ上の記憶機構における適切な位置が判定され、書き込みデータがプロセッサ上の記憶機構に書き込まれる。記憶機構に書き込まれるデータは対象のVMCS構成部分、プロセッサ実施形態によって、更には、一部の実施例では、対象構成部分がプロセッサ上の資源かVMCS領域に現在記憶されているかによって、アーキテクチャ的に定義される形式と同じ場合も異なる場合もある実施形態特有のデータ形式にある。
【００５５】
特定のVMCS構成部分の記憶場所を判定し、VMCS構成部分がプロセッサによってアーキテクチャ的に定義されるデータ形式において記憶されているかを判定するのに処理400及び500で用いられる機構は実施形態特有である。特定の実施例では、プロセッサは構成部分識別子によって索引付けされるルックアップ・テーブルを利用する。更に、複数のVMCSポインタが同時にアクティブ状態にあり得る場合、これらの判定はどのVMCSがアクセスされているかによって変わってくる場合がある。
【００５６】
当業者は、本願の開示を読んで理解することによって、本発明をコンピュータ・ベースのシステムにおいて実施して、本明細書及び特許請求の範囲記載の方法を行い得る方法が分かるものである。本発明は、（汎用コンピュータ・システム上若しくは専用マシン上で実行されるものなどの）ソフトウェア、ハードウェア（例えば、回路、専用ロジック、プログラム可能ロジック、マイクロコードなど）、又はハードウェアとソフトウェアとの組み合わせを用いて実施し得る。
【００５７】
なお、上記明細書は、制約ではなく説明例であることが意図されていることとする。多くの別の実施例が、上記明細書を検討することによって当業者に明らかとなる。本発明の実施例の範囲は、よって、本特許請求の範囲と、そのような本特許請求の範囲に権利が付与される、当該同等物の範囲全部とを参照しながら判定されることとする。
【００５８】
技術上の開示の特性と要旨とを本願の読者がすばやく確かめることを可能にする要約書が備えられているということを強調する。要約書は、本特許請求の範囲又は意義を解釈することにも制約することにも用いられないこととするという理解によって提示されている。
【００５９】
本実施例の上記明細書では、本願の開示を簡素化する目的で種々の特徴を単一の実施例に併せてグループ化している。本願の開示の方法は、本特許請求の範囲の各請求項に明示的に記載されている特徴よりも多くの特徴を本発明の請求実施例が必要とするという意図を反映しているものとして解されるものでない。むしろ、本特許請求の範囲が反映するように、本発明の要旨は、単一の開示実施例の全ての特徴よりも少ない内容である。よって、本特許請求の範囲は、本明細書の実施例の説明に組み入れられ、各請求項は別個の例示的な実施例として独立している。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施例による、VMアーキテクチャの図である。
【図２】本発明の一実施例による、VMを制御する方法の流れ図である。
【図３】本発明の一実施例による、VMCSアクセス命令の図である。
【図４】本発明の一実施例による、VMCSからデータを読み取る方法の流れ図である。
【図５】本発明の一実施例による、VMCSにデータを書き込む方法の流れ図である。
【図１】
2006516769.tif 000002
【図２】
2006516769.tif 000003
【図３】
2006516769.tif 000004
【図４】
2006516769.tif 000005
【図５】
2006516769.tif 000006