(57)【要約】  一部の実施形態において、本発明は、仮想機械間での移行時に限られたコンテキスト情報を保存することを含んでいる。所定の命令セット及び事象がトラップを生じさせる。その事象が仮想機械内で発生していることを指し示すようにビット又はフラグが設定される。フラグが設定されているかに基づいて、仮想機械モニタが、特定のレジスタセットがコンテキスト切替時に保存あるいは復元されなければならないかを決定する。
2008545205.tif 000002
【特許請求の範囲】
【請求項１】
複数のレジスタセットを有するプロセッサ；
前記プロセッサ上で動作する複数の仮想機械（ＶＭ）であり、各々がゲストオペレーティングシステムにて動作する複数の仮想機械；
動作中のＶＭから該ＶＭ内での所定の事象の発生に応答して退去するためのトラップ機構であり、該ＶＭ内で該所定の事象が発生したことを指し示す対応するフラグを設定するトラップ機構；及び
前記複数の仮想機械間でコンテキストのスケジューリング及び切替を行う仮想機械モニタ（ＶＭＭ）であり、前記複数のＶＭ間でのコンテキスト切替時に前記複数のレジスタセットの何れが保存され復元されるべきかを、前記トラップ機構によって設定された前記対応するフラグに基づいて決定するＶＭＭ；
を有する仮想化プラットホーム。
【請求項２】
前記トラップ機構は、トラップを生じさせる複数の事象を特定するための仮想機械制御構造（ＶＭＣＳ）データ構造を有する仮想化退去技術を有する、請求項１に記載の仮想化プラットホーム。
【請求項３】
前記対応するフラグは、仮想機械制御構造（ＶＭＣＳ）データ構造内の１ビットを有し、前記複数の仮想機械の各々は少なくとも１つの対応するＶＭＣＳを有する、請求項１に記載の仮想化プラットホーム。
【請求項４】
前記対応するフラグは、所定の事象に応答してリセットされる、請求項１に記載の仮想化プラットホーム。
【請求項５】
前記トラップ機構は、選択された事象が以前に仮想機械内で発生したことに応答して、該選択された事象に対して該仮想機械内で無効にされる、請求項１に記載の仮想化プラットホーム。
【請求項６】
無効にされたトラップ機構は仮想機械が再開されるときに該仮想機械に対して再び有効にされる、請求項５に記載の仮想化プラットホーム。
【請求項７】
前記ＶＭＭは、選択されたレジスタセットに対して前記複数の仮想機械の２つ以上が前記トラップ機構によって設定された対応するフラグを有するとき、コンテキスト切替時に該選択されたレジスタセットのコンテキストの保存及び復元を行い、且つ選択されたレジスタセットに対して前記複数の仮想機械の１つ以下が前記トラップ機構によって設定された対応するフラグを有するとき、コンテキスト切替時に該選択されたレジスタセットのコンテキストの保存及び復元を行わない、請求項１に記載の仮想化プラットホーム。
【請求項８】
前記複数の仮想機械の１つにて起動されているオペレーティングシステム（ＯＳ）は、選択されたレジスタセットが該ＯＳの下で起動されている処理によってもはやアクセスされていないとき、そのことを前記ＶＭＭに通知する、請求項１に記載の仮想化プラットホーム。
【請求項９】
仮想化プラットホーム内の第１の仮想機械が該仮想化プラットホーム上のプロセッサ内の選択されたレジスタセットを使用するとき、そのことを特定する特定段階；及び
前記選択されたレジスタセットが前記第１の仮想機械によって使用されていると特定されたとき、前記第１の仮想機械から第２の仮想機械にプロセッサコンテキストを切り替えることに先立って、仮想機械モニタ（ＶＭＭ）によって前記選択されたレジスタセットのコンテキストを保存する保存段階；
を有する方法。
【請求項１０】
前記選択されたレジスタセットが前記第１の仮想機械によって使用されていると特定されたとき、前記第２の仮想機械から前記第１の仮想機械にプロセッサコンテキストを切り替えることに先立って、前記仮想機械モニタ（ＶＭＭ）によって前記第１の仮想機械に対して前記選択されたレジスタセットのコンテキストを復元する段階；
を更に有する請求項９に記載の方法。
【請求項１１】
前記特定段階は：
所定の命令の実行に応答して、該所定の命令が仮想機械制御構造（ＶＭＣＳ）内で前記選択されたレジスタセットに対応するものとして規定されているかを決定する段階；
を有する、請求項９に記載の方法。
【請求項１２】
前記特定段階は：
前記選択されたレジスタセットの使用を指し示す前記第１の仮想機械における事象をトラップするトラップ段階；及び
前記選択されたレジスタセットが前記第１の仮想機械によって使用されることを指し示すフラグを設定する設定段階；
を有する、請求項９に記載の方法。
【請求項１３】
対応する選択されたレジスタセットに対して前記フラグが設定されているかを決定する決定段階；を更に有する請求項１２に記載の方法。
【請求項１４】
前記トラップ段階は：
前記第１の仮想機械における事象がトラップされるべきかを、該事象に対応する仮想機械制御構造（ＶＭＣＳ）内のデータに基づいて特定する段階；及び
前記事象がトラップされるべきであることを前記ＶＭＣＳが指し示すとき、前記第１の仮想機械における事象をトラップし、前記事象がトラップされるべきでないことを前記ＶＭＣＳが指し示すとき、前記事象をトラップしない段階；
を有する、請求項１２に記載の方法。
【請求項１５】
前記選択された事象が、前記第１の仮想機械によって使用されているとして以前に特定されているとき、前記事象をトラップしない段階；
を更に有する請求項１２に記載の方法。
【請求項１６】
第１の仮想機械が選択されたレジスタセットを使用するかを決定する段階；
その他の仮想機械が前記選択されたレジスタセットを使用するかを決定する段階；及び
前記選択されたレジスタセットが前記その他の仮想機械の何れにも使用されないとき、前記第１の仮想機械に対して前記選択されたレジスタセットのコンテキストを保存しない段階；
を更に有する請求項９に記載の方法。
【請求項１７】
前記第１の仮想機械が前記選択されたレジスタセットをもはや使用しないことを前記ＶＭＭに通知する段階；
を更に有する請求項９に記載の方法。
【請求項１８】
実行される時に機械に：
仮想化プラットホーム内の第１の仮想機械が該仮想化プラットホーム上のプロセッサ内の選択されたレジスタセットを使用するとき、そのことを特定する特定段階；及び
前記選択されたレジスタセットが前記第１の仮想機械によって使用されていると特定されたとき、前記第１の仮想機械から第２の仮想機械にプロセッサコンテキストを切り替えることに先立って、仮想機械モニタ（ＶＭＭ）によって前記選択されたレジスタセットのコンテキストを保存する保存段階；
を行わせる命令を有する機械可読媒体。
【請求項１９】
機械に：
前記選択されたレジスタセットが前記第１の仮想機械によって使用されていると特定されたとき、前記第２の仮想機械から前記第１の仮想機械にプロセッサコンテキストを切り替えることに先立って、前記仮想機械モニタ（ＶＭＭ）によって前記第１の仮想機械に対して前記選択されたレジスタセットのコンテキストを復元する段階；
を実行させる命令を更に有する請求項１８に記載の媒体。
【請求項２０】
前記特定段階は：
所定の命令の実行に応答して、該所定の命令が仮想機械制御構造（ＶＭＣＳ）内で前記選択されたレジスタセットに対応するものとして規定されているかを決定する段階；
を有する、請求項１８に記載の媒体。
【請求項２１】
前記特定段階は：
前記選択されたレジスタセットの使用を指し示す前記第１の仮想機械における事象をトラップするトラップ段階；及び
前記選択されたレジスタセットが前記第１の仮想機械によって使用されることを指し示すフラグを設定する設定段階；
を有する、請求項１８に記載の媒体。
【請求項２２】
対応する選択されたレジスタセットに対して前記フラグが設定されているかを決定する決定段階；を行わせる命令を更に有する請求項２１に記載の媒体。
【請求項２３】
前記トラップ段階は：
前記第１の仮想機械における事象がトラップされるべきかを、該事象に対応する仮想機械制御構造（ＶＭＣＳ）内のデータに基づいて特定する段階；及び
前記事象がトラップされるべきであることを前記ＶＭＣＳが指し示すとき、前記第１の仮想機械における事象をトラップし、前記事象がトラップされるべきでないことを前記ＶＭＣＳが指し示すとき、前記事象をトラップしない段階；
を有する、前記請求項２１に記載の媒体。
【請求項２４】
前記選択された事象が、前記第１の仮想機械によって使用されているとして以前に特定されているとき、前記事象をトラップしない段階；
を行わせる命令を更に有する請求項２１に記載の媒体。
【請求項２５】
第１の仮想機械が選択されたレジスタセットを使用するかを決定する段階；
その他の仮想機械が前記選択されたレジスタセットを使用するかを決定する段階；及び
前記選択されたレジスタセットが前記その他の仮想機械の何れにも使用されないとき、前記第１の仮想機械に対して前記選択されたレジスタセットのコンテキストを保存しない段階；
を行わせる命令を更に有する請求項１８に記載の媒体。
【請求項２６】
前記第１の仮想機械が前記選択されたレジスタセットをもはや使用しないことを前記ＶＭＭに通知する段階；
を行わせる命令を更に有する請求項１８に記載の媒体。
【請求項２７】
選択されたレジスタセットに対応する命令の仮想機械内での実行に応答して、実行中の仮想機械から仮想機械モニタへのトラップを生じさせる段階；及び
前記仮想機械が前記選択されたレジスタセットを使用することを指し示すように、前記選択されたレジスタセットに対応するフラグを設定する段階；
を有する方法。
【請求項２８】
前記フラグの設定する段階後、前記選択されたレジスタセットに対する前記仮想機械のトラップを無効にする段階；
を更に有する請求項２７に記載の方法。
【請求項２９】
前記フラグは、前記仮想機械及びプロセッサに対応する仮想機械制御構造（ＶＭＣＳ）内の少なくとも１つのビットを有する、請求項２７に記載の方法。
【請求項３０】
仮想機械間でのプロセッサコンテキスト切替要求に応答して、前記対応するフラグが設定されたとき、前記選択されたレジスタセットのコンテキストを保存する段階；
を更に有する請求項２９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概して計算装置に関し、より具体的には仮想機械間の移行時に限られたコンテキスト情報を保存する技術に関する。
【背景技術】
【０００２】
オペレーティングシステム（ＯＳ）によって制御されるプロセス間でのコンテキスト切替のために、様々な機構が存在している。同様に、仮想化環境においては、典型的には仮想機械モニタ／マネージャ（ＶＭＭ）である仮想機械（ＶＭ）スケジューラが動作中の仮想機械と動作中でない仮想機械との間で切り替わるとき、コンテキスト切替が必要である。仮想化環境において、ＶＭＭは起動中のＯＳの間で利用可能なプロセッササイクルをスケジューリングする。対応するゲスト仮想機械群においては様々なＯＳが起動される。ゲストＶＭの起動をスケジューリングする前に、現在動作中のＶＭのコンテキストは、該ＶＭの再起動がスケジューリングされた時に該ＶＭが正しく起動することを確保するために保存されなければならない。
【０００３】
様々なプロセッサレジスタがコンテキスト切替の一部として保存されなければならない。プロセッサ固有レジスタに加えて、標準レジスタ、スタックポインタ、ＭＭＸ、単一命令複数データ（ＳＩＭＤ）及び浮動小数点（ＦＰ）のレジスタが保存されなければならない。現在動作中のＶＭからコンテキストが切り替えられるとき、次にスケジューリングされるＶＭがスケジューリングされる前に、コンテキストの保存が実行される。次にスケジューリングされたＶＭのコンテキストレジスタは先のＶＭの再起動が可能にされることに先立って復元される。コンテキスト切替は時間、電力及びその他の資源の点で高くつくものである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の一実施形態は、仮想化環境内の仮想機械（ＶＭ）間での切替時に保存されるべきコンテキストを制限するシステム及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
少なくとも１つの実施形態において、本発明は、考え得る全てのレジスタを保存する代わりに、現在動作中のＶＭによって実際に使用されているレジスタセットのみを保存するものである。
【０００６】
本発明の一態様に従った仮想化プラットホームは、複数のレジスタセットを有するプロセッサ；プロセッサ上で動作する複数の仮想機械（ＶＭ）であり、各々がゲストオペレーティングシステムにて動作する複数の仮想機械；動作中のＶＭから該ＶＭ内での所定の事象の発生に応答して退去するためのトラップ機構であり、該ＶＭ内で該所定の事象が発生したことを指し示す対応するフラグを設定するトラップ機構；及び複数の仮想機械間でコンテキストのスケジューリング及び切替を行う仮想機械モニタ（ＶＭＭ）であり、複数のＶＭ間でのコンテキスト切替時に複数のレジスタセットの何れが保存され復元されるべきかを、トラップ機構によって設定された対応するフラグに基づいて決定するＶＭＭを有する。
【０００７】
本発明の他の一態様に従った方法は、仮想化プラットホーム内の第１の仮想機械が該仮想化プラットホーム上のプロセッサ内の選択されたレジスタセットを使用するとき、そのことを特定する特定段階；及び選択されたレジスタセットが第１の仮想機械によって使用されていると特定されたとき、第１の仮想機械から第２の仮想機械にプロセッサコンテキストを切り替えることに先立って、仮想機械モニタ（ＶＭＭ）によって選択されたレジスタセットのコンテキストを保存する保存段階を有する。
【０００８】
本発明の他の一態様に従った機械可読媒体は、実行される時に機械に：仮想化プラットホーム内の第１の仮想機械が該仮想化プラットホーム上のプロセッサ内の選択されたレジスタセットを使用するとき、そのことを特定する特定段階；及び選択されたレジスタセットが第１の仮想機械によって使用されていると特定されたとき、第１の仮想機械から第２の仮想機械にプロセッサコンテキストを切り替えることに先立って、仮想機械モニタ（ＶＭＭ）によって選択されたレジスタセットのコンテキストを保存する保存段階；を行わせる命令を有する。
【０００９】
本発明の他の一態様に従った方法は、選択されたレジスタセットに対応する命令の仮想機械内での実行に応答して、実行中の仮想機械から仮想機械モニタへのトラップを生じさせる段階；及び仮想機械が選択されたレジスタセットを使用することを指し示すように、選択されたレジスタセットに対応するフラグを設定する段階を有する。
【００１０】
本発明の特徴及び効果は以下の発明の詳細な説明から明らかになる。
【発明を実施するための最良の形態】
【００１１】
この明細書における本発明の“一実施形態”への言及は、その実施形態に関連して説明された特定の特徴、構造又は特性が、本発明の少なくとも１つの実施形態に含まれることを意味している。故に、この明細書全体を通して様々な箇所に“一実施形態において”という言い回しが現れることは、全てが同一の実施形態について言及しているということでは必ずしもない。
【００１２】
本発明の完全な理解を提供するため、説明目的で、具体的な構成及び詳細事項が説明される。しかしながら、当業者に認識されるように、本発明の実施形態はここで提示される具体的詳細事項を用いなくても実施され得るものである。また、本発明を不明瞭にしないよう、周知の特徴は省略されるか簡略化されるかしている。この説明全体を通して様々な例が与えられるが、これらは本発明の特定の実施形態を単に説明するものであり、本発明の範囲は与えられた例に限定されるものではない。
【００１３】
既存のシステムは、一般的に、ＶＭを一時的に停止させたり別のＶＭをスケジューリングしたりする前にＶＭの全てのコンテキストを保存するようになっている。多くの場合、一時停止されるＶＭは全ての階級のレジスタを使用していたわけではない。例えば、ＶＭは浮動小数点演算を実行していないことがあり、そのＶＭは、ＶＭＭによって再開されるとき、浮動小数点（ＦＰ）レジスタのコンテキストを必要としない。既存システムはコンテキストの切替に先立って、とにかくＦＰレジスタを保存しようとする。この処理は、不要な場合には無駄である。
【００１４】
続いて、図１を参照するに、本発明の実施形態が実施され得る典型的な仮想化プラットホーム100が示されている。ＶＭＭ110と、ゲストＶＭ101、103、105及び107とはプラットホームハードウェア上で実行される。プラットホームハードウェア120は、プロセッサ122、メモリ124、並びに１つ又は複数のＩ／Ｏ装置126及び128を含み得る。プロセッサ122は、例えばマイクロプロセッサ、デジタル信号プロセッサ又はマイクロコントローラ等の、ソフトウェアを実行可能な如何なる種類のプロセッサであってもよい。プラットホームハードウェア120は、パーソナルコンピュータ（ＰＣ）、メインフレーム、手持ち型装置、可搬式コンピュータ、セットトップボックス、又はその他の何らかの計算システムから成り得る。図１は単一のこのようなプロセッサ122を示しているが、プラットホーム120には１つ又は複数のプロセッサが存在していてもよく、プロセッサの１つ以上は複数のスレッド又は複数のコア等を含んでいてもよい。
【００１５】
メモリ124は、ハードディスク、フロッピー（登録商標）ディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、又はプロセッサ122によって読み取り可能なその他の何らかの種類の媒体であり得る。メモリ124は本発明に係る方法の実施形態を実行する命令を格納し得る。
【００１６】
１つ又は複数のＩ／Ｏ装置126及び128は、例えば、ネットワークインターフェースカード、通信ポート、ビデオコントローラ、システムバス（例えば、ＰＣＩ、ＩＳＡ、ＡＧＰ）上のディスクコントローラ、チップセットロジック若しくはプロセッサに一体化された装置（例えば、実時間クロック、プログラム可能タイマ、性能カウンタ）、又はプラットホーム120上のその他の何らかの装置である。１つ又は複数のＩ／Ｏ装置126及び128は、Ｉ／Ｏ命令又はメモリマップされたＩ／Ｏアクセスを介して、あるいは技術的に知られたその他の何らかの手段を介してアクセスされ得る。
【００１７】
プロセッサ122は多様なレジスタ123を有している。レジスタ123は一般的に、プロセッサのコンテキスト切替中に保存される。
【００１８】
本発明の実施形態において、ゲストＶＭが一組のレジスタを使用して、ＶＭＭがコンテキスト切替中に使用レジスタのコンテキストを保存する必要があることを指し示すとき、ＶＭＭに通知される。一例において、ストリーミングＳＩＭＤエクステンション（ＳＳＥ）レジスタがゲストＶＭによって使用される。ある一定の命令はレジスタセットを利用する。例えば、ＳＩＭＤ乗算を実行する命令が知られている。ゲストＶＭのプロセスがこの命令を実行する場合、このゲストＶＭにおいてＳＩＭＤレジスタが使用される。
【００１９】
既存の仮想化環境においては、ある状況下で仮想化トラップが発生し得る。このトラップはゲストＶＭ上での処理からＶＭＭへの退去（イグジット）を生じさせる。一部の環境において、このトラップはＶＭイグジット（ＶＭ_ｅｘｉｔ）と呼ばれる。本発明の実施形態は、所定の命令がゲストＶＭにて実行されるときにトラップすなわちＶＭイグジットを生じさせる。その使用に注目するＶＭＭに制御が移行する。一実施形態において、ＶＭＭは、現セッション中にこの所定の命令が後に使用されることによって更なるトラップが引き起こされないように、そのトラップ機構を除去する。故に、この所定の命令の最初の使用のみがトラップを生じさせる。
【００２０】
次に図２を参照するに、本発明の実施形態に従った典型的なプロセスフローが示されている。段階201にて、コンテキスト切替における標準レジスタ群が把握される。換言すると、レジスタの標準セットはゲストＶＭコンテキストとともに常に保存される。ＶＭＭは、段階203にて、対応するレジスタが使用されていることをＶＭＭに通知するためにトラップを生じさせるように所定組の処理又は命令を設定する。当業者に明らかであるように、何れの命令がトラップを生じさせるべきかを特定することには様々な方法が使用され得る。
【００２１】
仮想化環境で動作する一部の実施形態においては、これらの標的処理を特定するために仮想機械制御構造（virtual  machine  control  structure；ＶＭＣＳ）が使用され得る。ＶＭＣＳは、特定のＶＭに割り当てられた各プロセッサの、各ＶＭに割り当てられたデータ構造である。複数のプロセッサを有するシステムにおいて、ＶＭＭは或るプロセッサを特定のＶＭに割り当て、それをその他のＶＭに割り当てないことを選択してもよい。他の実施形態においては、ＶＭＭは全てのＶＭが全てのプロセッサを使用すること許可してもよい。ＶＭＣＳは、何れの事象がＶＭイグジット（トラップ）を生じさせ、何れの事象がトラップを生じさせないかを規定するための多数の制御フィールドを含んでいる。既存システムにおけるＶＭＣＳデータ構造は、命令群をトラップするためのフィールドを提供していない。
【００２２】
既存システムにおけるＶＭＣＳデータ構造は、特定のレジスタセットにアクセスする命令群に対するトラップ機構のためのフィールドを提供していない。ここで説明されるように事象のトラップを提供するようにＶＭＣＳを構成することは、更なるビットフィールドをＶＭＣＳに割り当てることによって実行され得る。この更なるビットフィールドは、ＦＰ、ＭＭＸ、ＳＳＥ、ＳＩＭＤ命令などを特定し、ゲストＶＭにおける処理が特定のレジスタセットを使用していたかを決定する。
【００２３】
ＶＭＣＳは動的に変更可能であってもよい。ゲストＶＭが起動するようにスケジューリングされるとき、ＶＭＣＳフィールドは標的の命令及び事象が特定され得るように要求に応じて設定されてもよい。例えば、ＶＭＣＳは、浮動小数点レジスタを使用する命令セットに対応するビットを有していてもよい。この場合、このビットを設定し、そして対応するＶＭにおいてＦＤＩＶ命令を実行することは、ＶＭイグジットすなわちハイパーバイザ・トラップを生じさせる。トラップが一旦特定され設定されると、段階205にて通常のＯＳ動作が開始する。
【００２４】
一例において、ＦＤＩＶのようなＦＰ命令が段階207にて実行され得る。制御はＶＭＭに移行され、段階209にて、トラップを引き起こす処理に基づいて適当な行動が起こされる。この場合、ＦＤＩＶの使用はその命令を実行したゲストＶＭに関連付けられ、ＦＰレジスタコンテキストがこのＶＭのために保存されなければならないことが指し示される。このゲストＶＭがＦＰレジスタコンテキストの保存を必要としていることがＶＭＭによって特定されると、段階211にて、現セッションにおいて後続のＦＰ命令の各々がトラップを生じさせることがないようにトラップが無効にされる。
【００２５】
一部の実施形態において、トラップはゲストＶＭが終了するまで、すなわち、活動停止するまで無効にされたままであってもよい。故に、このゲストＶＭへの／からの各コンテキスト切替は、（この例において）ＦＰレジスタが保存あるいは復元されることを必要とする。しかしながら、一部のゲストＶＭはレジスタセットをたまに使用するのみであってもよい。この場合、コンテキスト切替ごとにトラップをリセットすることが一層効率的となり得る。一部の実施形態において、トラップはゲストＶＭが開始あるいは復旧されるときに再開される。そのとき、ＶＭＭはまた、ゲストＶＭが先のセッションでレジスタセットを使用していたことを“忘れて”いる。この動作セッションの間にゲストＶＭが特定のレジスタセットを使用しない場合、ＶＭＭはそのレジスタセットをコンテキスト保存を必要とするものとして特定しないことになる。故に、コンテキストの保存／復元は最小化され得る。
【００２６】
一実施形態において、標的の事象はＶＭＣＳにて特定されてもよい。しかしながら、この事象が発生したとき、この事象がＶＭイグジットの完全なトラップを要求することなく発生したことを指し示すようにＶＭＣＳ内でビットが設定あるいはクリアされてもよい。そして、このビットは、レジスタセットが保存／復元されなければならないかを決定するために、コンテキスト切替の開始時に確認されてもよい。事象の発生時にこのビットを自動的に設定するようにプロセッサのハードウェアが構成されてもよい。これは、典型的に、命令セットアーキテクチャが特定の命令上でトラップするように構成されることを必要とする。他の実施形態は、ソフトウェア、ファームウェア、又はハードウェアとファームウェアとソフトウェアとの組み合わせにてビットを設定してもよい。本発明の一部の実施形態は、ＶＴ−ｘ（仮想化技術エクステンション）技術を更に拡張することによって実施されてもよい。ＶＴ−ｘに関するもっと多くの情報は、“ＩＡ−３２インテル（登録商標）アーキテクチャのインテル（登録商標）仮想化技術仕様書”（文書番号Ｃ９７０６３−００２、２００５年４月）に記載されており、またwww.intel.com/cd/00/00/19/76/197666_197666.pdfなるＵＲＬにてインターネット上で閲覧することができる。
【００２７】
他の一実施形態においては、ＶＭＭは２つ以上のゲストＶＭが特定のレジスタセットを使用するかどうかを認識してもよい。例えば、仮想化環境内で動作しているゲストＶＭが５個存在し、その内の１つのみがＦＰ動作を用いていてもよい。この場合、１つのゲストＶＭのみがＦＰレジスタにアクセスするので、ＦＰレジスタは保存あるいは復元される必要がない。ＶＭＭは、特定のゲストＶＭがレジスタセットを使用しているかどうかを追跡することに加えて、レジスタセットが第２のゲストＶＭによって変更される虞があるかどうかを追跡してもよく、その虞がない場合、コンテキスト切替中にレジスタセットを保存／復元しなくてもよい。第２のゲストＯＳがレジスタセットにアクセスするときには、ＶＭＭは、レジスタセットを使用する２つのゲストＶＭのために、コンテキスト切替時にレジスタセットを保存／復元することになる。
【００２８】
他の一実施形態においては、ゲストＶＭにて起動中のオペレーティングシステムはＶＭＭと協働する。ゲストＯＳは自身の処理について知識を有し、何れの処理が何れのレジスタセットを使用するかを知ることができてもよい。例えば、１つの実行処理のみがＳＩＭＤ命令を使用することをＯＳが知っている場合、その処理が終了すると、ＳＩＭＤレジスタはもはや、このゲストＶＭのコンテキスト切替時に保存／復元される必要はない。この実施形態においては、ＯＳは、先にトラップを生じさせていた処理が終了するとき、ＶＭＭに通知してもよく、またＶＭＭは、ゲストＶＭが特定のレジスタセットを使用しないことを指し示すようにトラップ制御構造をリセットしてもよい。
【００２９】
次に、図３を参照するに、本発明の実施形態に従った先述のＶＭＭが実行され得る典型的なプラットホーム300が示されている。プロセッサ310はフロントサイドバス301を介して、ノースブリッジとしても知られるメモリ・コントローラ・ハブ（ＭＣＨ）314と信号伝達を行う。ＭＣＨ314はメモリバス303を介してシステムメモリ312と信号伝達を行う。ＭＣＨ314はまたグラフィックバス305を介してアドバンスト・グラフィック・ポート（ＡＧＰ）316と信号伝達を行ってもよい。ＭＣＨ314は周辺機器インターコネクト（ＰＣＩ）バス307を介して、サウスブリッジとしても知られるＩ／Ｏコントローラ・ハブ（ＩＣＨ）320と信号伝達を行う。ＩＣＨ320はロー・ピン・カウント（ＬＰＣ）バス309を介して、１つ以上の例えばＰＣＩハードドライブ（図示せず）等の機器、例えばＩＤＥ322、ＵＳＢ324、ＬＡＮ326及びオーディオ328等の従前からのレガシー機器、並びにスーパーＩ／Ｏ（ＳＩＯ）コントローラ356に結合されていてもよい。
【００３０】
プロセッサ310は、例えばマイクロプロセッサ、デジタル信号プロセッサ又はマイクロコントローラ等の、ソフトウェアを実行可能な如何なる種類のプロセッサであってもよい。図３は単一のこのようなプロセッサ310を示しているが、プラットホームハードウェア300には１つ又は複数のプロセッサが存在していてもよく、プロセッサの１つ以上は複数のスレッド又は複数のコア等を含んでいてもよい。
【００３１】
メモリ312は、ハードディスク、フロッピー（登録商標）ディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、又はプロセッサ310によって読み取り可能なその他の何らかの種類の媒体であり得る。メモリ312は本発明に係る方法の実施形態を実行する命令を格納し得る。
【００３２】
Ｉ／ＯコントローラにはＬＰＣバス309を介して、例えばフラッシュメモリ352等の不揮発性メモリが結合され得る。ＢＩＯＳファームウェア354は一般的にフラッシュメモリ352内にあり、ブートアップがフラッシュすなわちファームウェアからの命令を実行する。
【００３３】
プラットホーム300は、一部の実施形態において、サーバ管理タスクを有効にするサーバである。このプラットホームの実施形態は、ＬＰＣバス309を介してＩＣＨ320に結合されたベースボード管理コントローラ（ＢＭＣ）350を有していてもよい。
【００３４】
ここで説明された技術は、如何なる特定のハードウェア又はソフトウェア構成にも限定されるものではなく、如何なるコンピュータ環境、家庭用電子機器環境又は処理環境にも適用され得るものである。この技術はハードウェア、ソフトウェア、又はこれら２つの組み合わせにて実現され得る。この技術は、プロセッサ、プロセッサがアクセス可能な記憶媒体（揮発性及び不揮発性のメモリ及び／又は記憶要素を含む）、少なくとも１つの入力装置、及び１つ以上の出力装置を含み得る、例えば移動型若しくは固定型のコンピュータ、携帯情報端末（ＰＤＡ）、セットトップボックス、携帯電話及びポケベル、家庭用電子機器（ＤＶＤ再生装置、家庭用ビデオ録画再生装置、家庭用ビデオ再生装置、衛星放送受信器、ステレオ放送受信器、ケーブルテレビ受像器を含む）、並びにその他の電子機器などのプログラム可能な機械上で起動するプログラムにて実現されてもよい。入力装置を用いて入力されたデータにプログラムコードが適用され、記述された機能が実行され、そして出力情報が生成される。出力情報は１つ以上の出力装置に与えられ得る。当業者に認識されるように、本発明は、マルチプロセッサシステム、小型コンピュータ、大型汎用コンピュータ、及び独立型家庭用電子機器などを含む様々なシステム構成を用いて実施され得る。本発明はまた、通信ネットワークを介して連結された遠隔処理装置によってタスク又はその一部が実行される分散型コンピュータ環境にて実施されることもできる。
【００３５】
各プログラムは、処理システムと通信するための高レベル手続き型プログラミング言語又はオブジェクト指向プログラミング言語にて実装され得る。しかしながら、プログラムは要望に応じて、アセンブリ言語又は機械語にて実装されてもよい。何れの場合も、言語はコンパイルあるいは解釈（インタープリット）され得る。
【００３６】
プログラム命令は、命令を用いてプログラムされた汎用あるいは専用の処理システムにここで説明された処理を実行させるために使用され得る。他の例では、この処理はそれを実行するためのハードウェアロジックを含んだ特定のハードウェア要素によって実行されてもよいし、あるいはプログラムされたコンピュータ要素と特別なハードウェア要素との何らかの組み合わせによって実行されてもよい。ここで説明された方法は、該方法を実行するように処理システム又はその他の電子機器をプログラムするために使用され得る命令を格納した機械アクセス可能媒体を含むコンピュータプログラム製品として提供されてもよい。用語“機械アクセス可能媒体”は、ここでは、機械による実行のための命令シーケンスを格納あるいは符号化することが可能で、機械に上述の方法の何れか１つを実行させるような如何なる媒体をも含むものである。従って、用語“機械アクセス可能媒体”は、以下に限定されないが、半導体メモリ、光ディスク及び磁気ディスク、並びにデータ信号を符号化する搬送波を含む。また技術的に、ある１つの形態又は別の１つ形態（例えば、プログラム、手順、プロセス、アプリケーション、モジュール、ロジック等）をしたソフトウェアのことを、行動を起こして結果を生じさせるものとして言うことが一般的である。このような表現は単に、処理システムによるソフトウェアの実行が、結果を生成する活動をプロセッサに実行させることを簡単に述べる言い方である。
【００３７】
本発明は例示的な実施形態を参照して説明されたが、この説明は限定的な意味で解釈されるべきものではない。例示された実施形態への様々な変更、及び本発明のその他の実施形態が、本発明が関連する技術分野の当業者には明らかであり、それらは本発明の意図及び範囲に含まれるものである。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施形態が実施され得る典型的な仮想化プラットホームを示すブロック図である。
【図２】本発明の実施形態に従った典型的なプロセスフローを示すフロー図である。
【図３】本発明の実施形態に従って仮想機械モニタ（ＶＭＭ）が実行され得る典型的なプラットホームを示すブロック図である。
【図１】
2008545205.tif 000003
【図２】
2008545205.tif 000004
【図３】
2008545205.tif 000005
【国際調査報告】
2008545205.tif 000006
2008545205.tif 000007
2008545205.tif 000008