(57)【要約】      （修正有）【課題】ゲストソフトウェアの現在の特権レベルが１つの特権レベル終了基準に合うと、１つのシステムの制御を１つの仮想マシンモニタに負担させる１つのシステム及び方法を提供する。【解決手段】プロセッサは、現在の特権レベルが基準に合うことを検出し、次に、制御をゲストソフトウェアから仮想マシンモニタへ移す。仮想マシンモニタは、複数のある特権レベル変化または値に対する制御の負担を拒否できる。仮想マシンモニタへの移行はＶＭにおいて幾つかの命令を実行する前または、後に生じうる。【選択図】図１
2006024207.tif 000002
【特許請求の範囲】
【請求項１】
１つの仮想マシン内で実行している１つのゲストソフトウェアの１つの現在の特権レベルを評価する工程と、
前記現在の特権レベルが１つの特権レベル終了基準に合えば、制御を１つの仮想マシンモニタへ移行する工程と
を具える方法。
【請求項２】
請求項１の前記方法であって、前記特権レベル終了基準を１つの仮想マシン制御構造体内に記憶する工程を更に具える方法。
【請求項３】
請求項１の前記方法であって、
１つの初期特権レベルを決定する工程と、
１つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、制御を前記仮想マシンモニタへ移行する工程と
を更に具える方法。
【請求項４】
請求項１の前記方法であって、
１つの初期特権レベルを決定する工程と、
１つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する工程と
を更に具える方法。
【請求項５】
請求項１の前記方法であって、
１つの初期特権レベルを決定する工程と、
１つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する工程と
を更に具える方法。
【請求項６】
請求項１の前記方法であって、
１つの初期特権レベルを決定する工程と、
前記初期特権レベルから前記現在の特権レベルへの１つの移行と関連付けられた１つの特権レベルソースデスティネーション終了制御が利用可能であれば、制御を前記仮想マシンモニタへ移行する工程と
を更に具える方法。
【請求項７】
請求項１の前記方法であって、１つの目標特権レベルを記憶する工程を更に具える方法。
【請求項８】
請求項７の前記方法であって、
１つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
【請求項９】
請求項７の前記方法であって、
１つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
【請求項１０】
請求項７の前記方法であって、
１つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
【請求項１１】
請求項７の前記方法において、前記目標特権レベルが可変である方法。
【請求項１２】
請求項７の前記方法において、前記目標特権レベルが一定である方法。
【請求項１３】
請求項１の前記方法であって、前記ゲストソフトウェアにおける１つの命令の実行前に制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
【請求項１４】
請求項１の前記方法であって、前記ゲストソフトウェアにおける１つの命令の実行後に制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
【請求項１５】
１つの記憶媒体内に存在する１つの命令セットであって、データを処理する１つの方法を実施するために１つのプロセッサにより実行できる前記命令セットにおいて、前記方法が、
１つの仮想マシン内で実行している１つのゲストソフトウェアの１つの現在の特権レベルを評価する工程と、
前記現在の特権レベルが１つの特権レベル終了基準に合えば、制御を１つの仮想マシンモニタへ移行する工程と  
を具える命令セット。
【請求項１６】
請求項１５の前記命令セットであって、前記特権レベル終了基準を１つの仮想マシン制御構造体内に記憶する工程を更に具える命令セット。
【請求項１７】
請求項１５の前記命令セットであって、
１つの初期特権レベルを決定する工程と、
１つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、制御を前記仮想マシンモニタへ移行する工程と
を更に具える命令セット。
【請求項１８】
請求項１５の前記命令セットであって、
１つの初期特権レベルを決定する工程と、
１つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する工程と
を更に具える命令セット。
【請求項１９】
請求項１５の前記命令セットであって、
１つの初期特権レベルを決定する工程と、
１つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する工程と
を更に具える命令セット。
【請求項２０】
請求項１５の前記命令セットであって、
１つの初期特権レベルを決定する工程と、
前記初期特権レベルから前記現在の特権レベルへの１つの移行と関連付けられた１つの特権レベルソースデスティネーション終了制御が利用可能であれば、制御を前記仮想マシンモニタへ移行する工程と
を更に具える命令セット。
【請求項２１】
請求項１５の前記命令セットであって、１つの目標特権レベルを記憶する工程を更に具える命令セット。
【請求項２２】
請求項２１の前記命令セットであって、
１つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
【請求項２３】
請求項２１の前記命令セットであって、
１つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
【請求項２４】
請求項２１の前記命令セットであって、
１つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
【請求項２５】
請求項２１の前記命令セットにおいて、前記目標特権レベルが可変である命令セット。
【請求項２６】
請求項２１の前記命令セットにおいて、前記目標特権レベルが一定である命令セット。
【請求項２７】
請求項１５の前記命令セットであって、前記ゲストソフトウェアにおける１つの命令の実行前に制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
【請求項２８】
請求項１５の前記命令セットであって、前記ゲストソフトウェアにおける１つの命令の実行後に制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
【請求項２９】
１つの仮想マシン内で実行している１つのゲストソフトウェアの１つの現在の特権レベルを評価するための１つの第１ロジックであって、前記現在の特権レベルが１つの特権レベル終了基準に合えば、制御を１つの仮想マシンモニタへ移行するための前記第１ロジックを具える１つのプロセッサ。
【請求項３０】
請求項２９の前記プロセッサにおいて、前記第１ロジックが１つの初期特権レベルを決定し、１つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、前記第１ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
【請求項３１】
請求項２９の前記プロセッサにおいて、前記第１ロジックが１つの初期特権レベルを決定し、１つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、前記第１ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
【請求項３２】
請求項２９の前記プロセッサにおいて、前記第１ロジックが１つの初期特権レベルを決定し、１つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、前記第１ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
【請求項３３】
請求項２９の前記プロセッサにおいて、前記第１ロジックが１つの初期特権レベルを決定し、前記初期特権レベルから前記現在の特権レベルへの１つの移行と関連付けられた１つの特権レベルソースデスティネーション終了制御が利用可能であれば、前記第１ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
【請求項３４】
請求項２９の前記プロセッサにおいて、前記第１ロジックが１つの目標特権レベルを記憶し、１つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、前記第１ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
【請求項３５】
請求項２９の前記プロセッサにおいて、前記第１ロジックが１つの目標特権レベルを記憶し、１つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、前記第１ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
【請求項３６】
請求項２９の前記プロセッサにおいて、前記第１ロジックが１つの目標特権レベルを記憶し、１つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、前記第１ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
【請求項３７】
１つのゲストソフトウェアを実行するために１つの仮想マシンを実施する１つのプロセッサと、
前記ゲストソフトウェアの１つの第１命令を記憶するために前記プロセッサに結合された１つのメモリとを具える１つのシステムであって、
前記プロセッサが、１つの仮想マシン内で実行している１つのゲストソフトウェアの１つの現在の特権レベルを評価し、前記現在の特権レベルが１つの特権レベル終了基準に合えば、前記プロセッサが制御を１つの仮想マシンモニタへ移行するようになっているシステム。
【請求項３８】
請求項３７の前記システムにおいて、前記メモリが前記特権レベル終了基準を１つの仮想マシン制御構造体内に記憶するようになっているシステム。
【請求項３９】
請求項３７の前記システムにおいて、前記プロセッサが１つの初期特権レベルを決定し、１つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、前記プロセッサが制御を前記仮想マシンモニタへ移行するようになっているシステム。
【請求項４０】
請求項３７の前記システムにおいて、前記プロセッサが１つの初期特権レベルを決定し、１つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、前記プロセッサが制御を前記仮想マシンモニタへ移行することになっているシステム。
【請求項４１】
請求項３７の前記システムにおいて、前記プロセッサが１つの初期特権レベルを決定し、１つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、前記プロセッサが制御を前記仮想マシンモニタへ移行することになっているシステム。
【請求項４２】
請求項３７の前記システムにおいて、前記プロセッサが１つの初期特権レベルを決定し、前記初期特権レベルから前記現在の特権レベルへの１つの移行と関連付けられた１つの特権レベルソースデスティネーション終了制御が利用可能であれば、前記プロセッサが制御を前記仮想マシンモニタへ移行することになっているシステム。
【請求項４３】
請求項３７の前記システムにおいて、前記メモリが１つの目標特権レベルを記憶するようになっているシステム。
【請求項４４】
請求項４３の前記システムにおいて、１つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、前記プロセッサが制御を前記仮想マシンモニタへ移行するようになっているシステム。
【請求項４５】
請求項４３の前記システムにおいて、１つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、前記プロセッサが制御を前記仮想マシンモニタへ移行するようになっているシステム。
【請求項４６】
請求項４３の前記システムにおいて、１つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、前記プロセッサが制御を前記仮想マシンモニタへ移行するようになっているシステム。
【請求項４７】
請求項４３の前記システムにおいて、前記目標特権レベルが可変であるシステム。
【請求項４８】
請求項４３の前記システムにおいて、前記目標特権レベルが一定であるシステム。
【請求項４９】
請求項３７の前記システムにおいて、前記ゲストソフトウェアにおける１つの命令の実行前に制御が前記仮想マシンモニタへ移行するようになっているシステム。
【請求項５０】
請求項３７の前記システムにおいて、前記ゲストソフトウェアにおける１つの命令の実行後に制御が前記仮想マシンモニタへ移行するようになっているシステム。
【請求項５１】
１つの仮想マシン内で実行している１つのゲストソフトウェアの１つの現在の特権レベルを評価する１つの第１手段と、
前記現在の特権レベルが１つの特権レベル終了基準に合えば、制御を１つの仮想マシンモニタへ移行する１つの第２手段と
を具える１つの装置。
【請求項５２】
請求項５１の前記装置であって、
１つの初期特権レベルを決定する１つの第３手段と、
１つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、制御を前記仮想マシンモニタへ移行する１つの第４手段と
を更に具える装置。
【請求項５３】
請求項５１の前記装置であって、
１つの初期特権レベルを決定する１つの第３手段と、
１つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する１つの第４手段と
を更に具える装置。
【請求項５４】
請求項５１の前記装置であって、
１つの初期特権レベルを決定する１つの第３手段と、
１つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する１つの第４手段と
を更に具える装置。
【請求項５５】
請求項５１の前記装置であって、
１つの初期特権レベルを決定する１つの第３手段と、
前記初期特権レベルから前記現在の特権レベルへの１つの移行と関連付けられた１つの特権レベルソースデスティネーション終了制御が利用可能であれば、制御を前記仮想マシンモニタへ移行する１つの第４手段と
を更に具える装置。
【請求項５６】
請求項５１の前記装置であって、
１つの目標特権レベルを記憶する１つの第３手段と、
１つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、制御を前記仮想マシンモニタへ移行する１つの第４手段と
を更に具える装置。
【請求項５７】
請求項５１の前記装置であって、
１つの目標特権レベルを記憶する１つの第３手段と、
１つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する１つの第４手段と
を更に具える装置。
【請求項５８】
請求項５１の前記装置であって、
１つの目標特権レベルを記憶する１つの第３手段と、
１つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する１つの第４手段と
を更に具える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の複数の実施形態は、複数の仮想マシンに関する。特に、本発明の複数の実施形態は、１つの仮想マシン（ＶＭ）で実行されているゲストソフトウェアの特権レベルが１つの特権レベル終了基準に合うと、１つのプロセッサの制御を１つの仮想マシンモニタ（ＶＭＭ）に回復させることに関する。
【背景技術】
【０００２】
１つの従来のＶＭＭは１つのコンピュータ上で実行でき、１つ以上の仮想マシンの要約をその他のソフトウェアへ与える。各ＶＭは、１つの「ゲストオペレーティングシステム」のようなＶＭ自体のオペレーティングシステム（ＯＳ）と、「ゲストソフトウェア」として一括して知られている複数のアプリケーションとを実行する１つの内蔵プラットフォームとして機能できる。このゲストソフトウェアは、１つのＶＭ内で、またはその上で実行するものと言われている。ゲストソフトウェアは、１つのＶＭ上よりはむしろ１つの専用のコンピュータ上であたかも実行しているかのように動作するようになっている。すなわち、ゲストソフトウェアは、様々なコンピュータ動作を制御し、それらの動作中、複数のハードウェアリソースへアクセスするようになっている。複数のハードウェアリソースは、複数の制御レジスタのような複数のプロセッサ常駐リソースと、複数の記述子テーブルのようにメモリ内に存在する複数のリソースとを含むことができる。しかし、１つの仮想マシン環境では、ＶＭＭは、複数のＶＭの適切な動作を行うと共に、複数のＶＭから保護を、かつ複数のＶＭ間で保護を行うためにこれらリソースを根本的に制御できなければならない。このことを達成するため、ＶＭＭは、ゲストソフトウェアにより行われた複数のハードウェアリソースへのすべてのアクセスを典型的に傍受し、仲裁する。
【０００３】
ほとんどの命令セットアーキテクチャ（ＩＳＡ）は、あまり特権を持たない複数のアプリケーションを、より多くの特権を持つオペレーティングシステム機能から分離するように複数の特権レベルを規定する。例えば、１つの従来技術の３２ビットアーキテクチャは、リング０〜リング３と称する４つの特権レベルを有し、リング０は最も多くの特権を持ち、リング３は最も少ない特権を持つ。プロセッサは、複数の異なる特権レベル間で切り換える複数の制御手段を具える。複数の切り換えを、１つの特定の命令を呼び出すことにより明示でき、あるいは、１つの例外またはフォールトを増やすことにより、または、１つの割り込みのような１つの外部事象により暗に示すことができる。例えば、１つの特権レベル変化は、１つのコール（ＣＡＬＬ）、１つのソフトウェア割り込み（ＩＮＴ）または１つの割り込み復帰（ＩＲＥＴ）のような１つの命令の実行中に生じうる。１つの特権レベル変化は、例えば、複数の例外、複数の外部割り込み、複数のフォールト、複数のタスク切り換え、複数のトラップ並びにその他の複数の類似事象のようなその他の複数の同期的または非同期的な事象の結果としても生じうる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
複数の多重プロセッサまたは複数のマルチスレッドシステム用の複数のオペレーティングシステムは、相互排除を確実にするソフトウェア実装された複数のロックを用いて、２つ以上のスレッドまたはプロセッサから同時にアクセスされる可能性があるデータを保護する。複数のロックが通常、短期間保持される場合には、いわゆる複数のスピンロックを用いる場合がある。１つのプロセッサまたはスレッド上で動作しているソフトウェアが、別のプロセッサまたはスレッド上で動作しているソフトウェアにより既に獲得されている１つのロックを獲得しようと試みる場合、ソフトウェアは、１つのきついコードループ内のロックを再獲得しようと試みる。このきついループ内で実行している間、ソフトウェアは、いかなる有益な作業も行えず、ハードウェアプロセッサスレッドは、何の利益も得られない。複数のマルチスレッドプロセッサまたは複数の多重プロセッサシステム上では、１つのスレッドまたはプロセッサの実行は、消費帯域幅、複数の実行ユニットまたは電力のようなその他の複数のスレッドまたはプロセッサの複数のリソースを減らすおそれがある。従って、スピン期間は、可能な限り短くなければならない。
【０００５】
複数の多重プロセッサまたはマルチスレッドシステムを仮想化する複数のＶＭＭは、ゲストソフトウェアの各インスタンス上で実行しているソフトウェアを１つの別個のＶＭまたは仮想プロセッサ（ＶＰ）内で実行できる。１つの非ＶＭシステム上では、ゲストソフトウェアのこれらインスタンスは、１つの異なったプロセッサまたはスレッド上で実行する。複数のＶＰ及び、ゲストソフトウェアのすべてのインスタンスを１つの仮想システムと総称する。このような１つのＶＭＭは、このゲストロック動作を考慮しない場合、著しい劣化を経験するおそれがある。このため、ＶＭＭが仮想システムのすべてのＶＰを割り込ませなければ、１つのＶＰが１つのロックを保持する間、ＶＭＭはこのＶＰを割り込ませるべきでない。複数のロックプリミティブをハードウェアにより直接に検出できないので、複数のロックがソフトウェアにより実施されている場合、複数の経験則または複数の間接的観測技術を用いる場合がある。
【０００６】
１つのこのような経験則は、共通のＯＳ動作に基づいている。１つのＯＳが特権モードで実行していない間、または、このＯＳが１つの低電力状態にある間、ＯＳは、いかなるロックも保持しない可能性がある。１つのＶＭＭは、１つの非特権モードで実行しているか、または、１つの低電力状態にある１つの仮想プロセッサのみを割り込ませることにより前述の知識を活用できる。特権モードで実行しているゲストソフトウェアの複数の割り込みは、ゲストソフトウェアが非特権モードへ切り換わるまで保留される。
【課題を解決するための手段】
【０００７】
１つの仮想マシン（ＶＭ）で実行しているゲストソフトウェアの特権レベルが、ある特権レベル終了基準に合うと、１つのシステムの制御を１つの仮想マシンモニタ（ＶＭＭ）に負担させる１つのシステム及び方法を提供する。プロセッサは、ゲストソフトウェアの特権レベルが基準に合う事を検出し、その後、制御をＶＭＭへ移行する。特権レベル終了基準は、１つの特権レベル増大、１つの特権レベル減少、任意の特権レベル変化、１つの所定レベルと整合する１つの特権レベル、１つの所定レベルよりも大きい１つの特権レベル、１つの所定レベルよりも小さい１つの特権レベル、または、１つの特定の特権レベル移行を含むことができる。ＶＭＭは、複数のある特権レベル値の制御を、または、複数の値変化の制御を負担するのを拒否することができる。ＶＭＭへの移行は、ＶＭにおいて幾つかの命令を実行する前または、実行した後に生じうる。
【０００８】
本発明の複数の実施形態は、複数の動作を実行する複数の装置にも関する。この装置を、複数の必要な目的のために特別に構築でき、あるいは、この装置は１つの汎用コンピュータを具えることができ、この汎用コンピュータは、その中に記憶された１つのコンピュータプログラムにより再構成されるか、あるいは選択的に作動される。以下のものに限定はしないが、例えば、複数のフロッピーディスク、複数の光ディスク、複数のＣＤ‐ＲＯＭ及び複数の光磁気ディスクを含むいかなる種類のディスク、複数の読み取り専用メモリ（ＲＯＭ）、複数のランダムアクセスメモリ（ＲＡＭ）、複数の消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、複数の電気的に消去可能なプログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、複数の磁気または光カードのような１つのコンピュータ可読記憶媒体、あるいは、複数の電子命令を記憶するのに適し、各々が１つのコンピュータシステムバスに結合されたいかなる種類の媒体内には、前述の１つのコンピュータプログラムを記憶できる。１つ以上の処理装置（例えば、複数の中央処理ユニットなど）を用いて複数の命令を実行できる。その他の複数の実施形態では、本発明の複数の工程を実行する再構成可能またはハードワイヤードロジックを含む複数の特定のハードウェア部品により、あるいは、複数のプログラムコンピュータ部品及び複数のカスタムハードウェア部品の任意の組み合わせにより本発明の複数の工程を実行できる。
【０００９】
更に、１つの設計は、作成から製作シミュレーションまで様々な段階を経ることができる。１つの設計を表すデータは、この設計を多くの方法で表すことができる。まず、複数のシミュレーションで有益であるように、１つのハードウェア記述言語または別の機能記述言語を用いてハードウェアを表すことができる。その上、複数のロジック及び／またはトランジスタゲートを持つ１つの回路レベルモデルを設計処理の幾つかの工程で生成できる。更に、ほとんどの設計は、幾つかの工程において、ハードウェアモデル内の様々な装置の物理的な配置を表すデータの１つのレベルに達する。従来の複数の半導体製造技術を用いる場合では、１つのハードウェアモデルを表すデータを、集積回路を製造するのに用いる複数のマスクの複数の異なるマスク層上に様々な機能の存在または不在を指定するデータとすることができる。設計の幾つかの表現では、データを１つの機械可読媒体のいかなる形態でも記憶できる。このような情報を伝送するために変調または別の方法で発生された１つの光波または電波、１つのメモリ、あるいは、１つのディスクのような１つの磁気または光ストレージを機械可読媒体とすることができる。これら媒体の幾つかは、設計またはソフトウェア情報を「伝達する」または「指示する」ことができる。コードまたは設計を指示するか、伝達する１つの電気搬送波が伝送されると、電気信号のコピー、バッファリングまたは再送信が実行される範囲で、１つの新たなコピーが形成される。従って、１つの通信プロバイダまたは１つのネットワークプロバイダは、本発明の複数の技術を具現する１つの物品（１つの搬送波）の複数のコピーを形成できる。
【発明を実施するための最良の形態】
【００１０】
図１には、本発明を動作できる１つの仮想マシン環境１００の一実施形態を示す。図１のＶＭ環境により、並びに、ハードウェア、ソフトウェア、またはこれら双方の１つの組み合わせを有することができる処理ロジックにより、本発明の異なる複数の実施形態を実行できる。この実施形態では、むき出しのプラットフォームハードウェア１１６が、例えば、１つの標準のオペレーティングシステム（ＯＳ）または１つのＶＭＭ１１２を実行できる１つの演算プラットフォームを有する。
【００１１】
１つのＶＭＭ１１２は、典型的にソフトウェア内に実装されているが、１つのベアマシンインターフェースを高レベルソフトウェアへエクスポートできる。このような高レベルソフトウェアは、１つの標準または実時間ＯＳを有することができるが、この点で、本発明の範囲は限定されない。加えて、例えば、１つＶＭＭを、別のＶＭＭ内で、またはその上部で実行できる。複数のＶＭＭ及びそれらの複数の典型的な特徴及び機能は当業者により周知であり、これらを、例えば、ソフトウェアやファームウェア内に、または、様々な技術の１つの組み合わせにより実現できる。
【００１２】
プラットフォームハードウェア１１６を１つのパーソナルコンピュータ（ＰＣ）、メインフレーム、手持ち式装置、携帯用コンピュータ、セットトップボックス、または、その他のいかなる演算システムとすることができる。プラットフォームハードウェア１１６は、１つのプロセッサ１１８、メモリ１２０及び特権レベル監視ロジック１２４を含む。プロセッサ１１８を、１つのマイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのようなソフトウェアを実行できるいかなる種類のプロセッサとすることができる。プロセッサ１１８は、本発明の方法の複数の実施形態を実行するため、マイクロコード、再構成可能ロジック、プログラマブルロジックまたはハードコードロジックを含むことができる。図１には、単に１つのこのようなプロセッサ１１８を示すが、システム内には、１つ以上のプロセッサを存在させることができる。
【００１３】
メモリ１２０を、１つのハードディスク、１つのフロッピーディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、上述の複数の装置の任意の組み合わせ、または、プロセッサ１１８により読み取り可能なその他のいかなる種類の機械媒体とすることができる。メモリ１２０は、本発明の方法の複数の実施形態の実行を行う複数の命令及び／またはデータを記憶できる。
【００１４】
ＶＭＭ１１２は、同じ、または異なる複数の要約を様々なゲストへ供給できる１つ以上の仮想マシン（ＶＭ）の要約をその他のソフトウェア（例えば、「ゲスト」ソフトウェア）へ与える。１つ以上のＶＭが、システム内に存在できる。例えば、図１には、２つのＶＭ１０２，１１４を示す。各ＶＭ上で実行しているゲストソフトウェアは、１つのゲストＯＳ１０４または１０６のような１つのゲストＯＳと、様々なゲストソフトウェアアプリケーション１０８，１１０とを含むことができる。複数のＶＭ１０２，１１４内で実行しているゲストソフトウェアは、ゲストソフトウェアが実行している複数のＶＭ１０２，１１４内の複数の物理的リソース（例えば、複数のプロセッサレジスタ、メモリ及び複数のＩ／Ｏ装置）へアクセスするようになっており、また、複数のシステム装置により発生された複数の割り込みや、複数の例外などを含む様々な事象を処理するようになっている。１つの仮想マシン環境では、ＶＭＭ１１２は、複数のＶＭ１０２，１１４の適切な動作を行うと共に、複数のＶＭ１０２，１１４から保護を、かつ複数のＶＭ１０２，１１４間で保護を行うために複数の物理的リソースを根本的に制御できなければならない。ＶＭＭ１１２は、コンピュータの複数の物理的リソースへのゲストソフトウェアの複数のアクセスを必要に応じて傍受することによりこの目標を達成する。
【００１５】
ゲストソフトウェアがアクセスできる複数のリソースを、「特権を持つ」または「特権を持たない」と分類できる。特権を持つ複数のリソースに対して、ＶＭＭ１１２は、特権を持つこれら複数のリソースの根本的な制御を維持する間、ゲストソフトウェアにより所望された機能を容易にする。特権を持たない複数のリソースは、ＶＭＭ１１２により制御される必要がなく、これらリソースには、ゲストソフトウェアがアクセスできる。
【００１６】
更に、各ゲストＯＳ１０４，１０６は、複数の例外（例えば、複数のページフォールト、複数の一般保護違反、複数のトラップ、複数の異常終了など）、複数の割り込み（例えば、複数のハードウェア割り込み、複数のソフトウェア割り込み）及び複数のプラットフォームイベント（例えば、初期化（ＩＮＩＴ）及び複数のシステム管理割り込み（ＳＭＩ））のような様々なフォールトイベントを処理するようになっている。これら複数のフォールトイベントの幾つかは、「特権を持つ」。その理由は、これらフォールトイベントが、複数のＶＭ１０２，１１４の適切な動作と、複数のＶＭ１０２，１１４からの保護並びに、複数のＶＭ１０２，１１４間の保護とを確実にするためにＶＭＭ１１２により処理されなければならないからである。特権を持つ１つのフォールトイベントが生じると、あるいは、ゲストソフトウェアが、特権を持つ１つのリソースにアクセスしようと試みる場合、制御をＶＭＭ１１２へ移動できる。ゲストソフトウェアからＶＭＭ１１２への制御の移動を、ここでは、１つのＶＭ終了と称する。ＶＭ終了に続いて制御を受信した後、ＶＭＭ１１２は様々な処理を実行でき、その後、制御をゲストソフトウェアへ戻すことができる。ＶＭＭからゲストソフトウェアへの制御の移動を、ここでは、１つのＶＭエントリーと称する。
【００１７】
特権を持つＯＳ機能を呼び出すため、複数のアプリケーションが、ＩＮＴまたはＳＹＳＴＥＮＴＥＲのような特定の複数の命令を用いる。システムコール識別子及び複数のパラメータは、動作を呼び出す前に、通常、プロセッサの複数のレジスタ内にロードされている。複数のシステムコールを傍受することにより、複数の利用シナリオを可能にする。例えば、複数のシステムコールを追跡することにより、１つの侵入検知システムは、１つのセキュリティ違反の原因を引き出すことができる。別の利用シナリオは、複数のシステムコール呼び出しの時間的パターンに基づいて複数の実行期間を検出することにより複数のスケジューリングパターンを複数の周期的なリアルタイムタスク期間に引き出すようになっている。一実施形態では、プロセッサ１１８は、１つのＶＭ制御構造体（ＶＭＣＳ）１２２内に記憶されたデータに従って複数のＶＭ１０２，１１４の動作を制御する。一実施形態では、ＶＭＣＳ１２２は、メモリ１２０内に記憶されている。別の実施形態では、ＶＭＣＳ１２２は、プロセッサ１１８内に記憶されている。幾つかの実施形態では、複数のＶＭＣＳ構造体が、複数のＶＭを支援するのに用いられる。
【００１８】
ＶＭＣＳ１２２は、ゲストソフトウェアの状態と、ＶＭＭ１１２の状態と、ＶＭＭ１１２がいかにしてゲストソフトウェアの動作を制限したいか、あるいは別の方法で制御したいかを示す実行制御情報と、その他の情報とを含むことができる１つの構造体である。ゲストソフトウェアへの、及び、ゲストソフトウェアからの複数の移行と、ＶＭ内のゲストソフトウェアの動作とは、ＶＭＣＳ内に記憶された一群のＶＭ制御を用いて制御される。複数の実行制御は複数の環境を指定し、これら環境下で、制御をゲストソフトウェアからＶＭＭへ移動しなければならない。複数の終了制御は、１つのゲスト状態の保存と、ＶＭ終了でのＶＭＭ状態のロードとを制御する。最近のＶＭ終了を表す情報は、一群のＶＭ終了情報データフィールド内に構成されている。１つのＶＭ終了が生じると、ゲストソフトウェアにより用いられるプロセッサ状態の複数の成分がＶＭＣＳ１２２へ保存され、ＶＭＭ１１２により必要とされるプロセッサ状態の複数の成分はＶＭＣＳ１２２からロードされる。複数のエントリー制御は、ＶＭＭ状態の保存と、ＶＭエントリーでのゲスト状態のロードとを制御する。１つのＶＭエントリーが生じると、ゲスト状態が、ＶＭＣＳ１２２内に記憶されたデータを用いて回復され、制御がゲストソフトウェアへ戻される。
【００１９】
一実施形態では、プロセッサ１１８は、ＶＭＭ１１２により指定された特権レベル終了基準に基づいて１つのＶＭ終了を生じさせるべきかを決定するためにゲストの現在の特権レベルを評価しなければならない特権レベル監視ロジック（ＰＬＭＬ）１２４を含む。一実施形態では、この特権レベル終了基準は、ＶＭＣＳ１２２内に記憶されている。前記特権レベル終了基準の複数の具体的な実施形態を以下に説明する。現在のゲスト特権レベルが特権レベル終了基準に合うことをＰＬＭＬ１２４が決定すれば、処理ロジックは、ゲストソフトウェアからＶＭＭ１１２への１つのＶＭ終了を容易にする。様々なＩＳＡでは、複数の特権レベルを１つの数値に割り当てることができ、１つの高数値は、増大した特権を示し、一方、１つの低数値は、減少した特権を示す。その他の複数の実施形態では、１つの高数値は、複数の減少した特権を示すことができる。ここでの複数の説明において、複数の特権レベルを、「増大する」と称する場合、このことは、関連する複数の数値にかかわらず、ゲストソフトウェアが、より多くの特権を持つようになることを意味し、「減少する」とは、より少ない特権を持つようになることを意味する。同様に、別の特権レベル「よりも少ない」１つの特権レベルは、関連する複数の数値にかかわらず、複数の減少した特権レベルを有するものである。
【００２０】
特権レベル終了基準を表すために複数の制御を複数のＶＭ制御へ加えることができる。一実施形態では、１つの特権レベル増大終了制御は、１つの使用可能値に設定された場合、ゲストソフトウェアの動作中に１つの特権レベル増大が生じたら、複数のＶＭ終了を生じさせるべきであることを指示する。この制御は、特権レベルを増大させる１つの事象の配信または１つの命令の実行が１つのＶＭ終了を生じさせるべきかを決定する。一実施形態では、特権レベル変化を生じさせる命令の実行の完了に続いて（すなわち、廃棄後）、このような１つの特権レベル増大によるＶＭ終了が生じる。一実施形態では、ＶＭ終了情報の一部としてＶＭＭに報告できるゲスト命令ポインタ値は、新たな特権レベルで実行されるべき最初の命令を指すことができる。一実施形態では、特権レベル変化を生じさせた命令のアドレスを報告するいかなる明示的な規定も行わない。別の実施形態では、１つの特権レベル減少終了制御は、１つの使用可能値に設定された場合、ゲストソフトウェアの動作中に１つの特権レベル減少が生じたら、複数のＶＭ終了を生じさせるべきであることを指示する。この制御は、特権レベルを減少させる複数の事象または複数の命令が１つのＶＭ終了を生じさせるべきかを決定する。一実施形態では、特権レベル変化を生じさせる命令の実行の完了に続いて（すなわち、廃棄後）、このような１つの特権レベル減少によるＶＭ終了が生じる。ＶＭ終了情報の一部としてＶＭＭに報告できるゲスト命令ポインタ値は、新たな特権レベルで実行されるべき最初の命令を指すことができる。一実施形態では、特権レベル変化を生じさせた命令のアドレスを報告するいかなる明示的な規定も行わない。
【００２１】
複数の特権レベル増大及び特権レベル減少制御を支援する１つの方法の一実施形態を図２のフローチャートに示す。図２は、ゲスト特権レベルの１つの変化に基づく複数の特権レベル増大及び特権レベル減少終了制御の検査を表す。図２では、１つの特権レベル変化により生じる複数のＶＭ終了を上述のその他の複数のＶＭ終了源よりも優先させる。このことを、図を単純化して行う。すなわち、実際には、幾つかのその他のＶＭ終了源の優先順位を高くでき、幾つかを低くできる。図２に示す実施形態では、特権レベル増大制御及び特権レベル減少制御の双方を示すが、これら複数の制御を、本明細書中の複数の異なる実施形態で述べるその他の複数の特権レベル終了制御に独立して、または、これら特権レベル終了制御と組み合わせて支援できる。
【００２２】
図２では、１つのＶＭエントリ要求をＶＭＭ１１２から受信するときに（ブロック２１０）、処理を開始する（ブロック２０５）。例えば、システムなどの状態をロードするといった、複数のＶＭエントリ検査を実行する（ブロック２１５）。１つのゲスト命令を実行する（ブロック２２０）。この命令の実行が１つのＶＭ終了を生じさせると（ブロック２２５）、ＶＭ終了は、制御をＶＭＭ１１２へ移行させ、ＶＭ終了の理由をＶＭＭ１１２に報告し（ブロック２３０）、処理を終了する（ブロック２３５）。命令の実行中、ＶＭ終了が生じなければ（ブロック２２５）、ゲスト命令を廃棄する（ブロック２４０）。ゲストソフトウェアの現在の特権レベルを評価した後、ゲストソフトウェアの特権レベルが増大したことを決定しており（ブロック２４５）、１つの特権レベル増大（ＰＬＩ）制御が利用可能であれば（ブロック２５０）、ＶＭ終了は制御をＶＭＭ１１２へ移行させ、ＶＭ終了がＰＬＩによりもたらされたということをＶＭＭ１１２へ報告する（ブロック２３０）。ゲストソフトウェアの特権レベルが増大したことを決定しており（ブロック２４５）、１つの特権レベル増大（ＰＬＩ）制御が利用可能でなければ（ブロック２５０）、処理ロジックが次のゲスト命令を実行する（ブロック２２０）。
【００２３】
ゲストソフトウェアの特権レベルが増大したことを決定しなければ（ブロック２４５）、処理ロジックが１つの特権レベル減少（ＰＬＤ）について検査する。ゲストソフトウェアの現在の特権レベルを評価した後、ゲストソフトウェアの特権レベルが減少したことを決定しており（ブロック２４５）、１つのＰＬＤ制御が利用可能であれば（ブロック２５０）、ＶＭ終了は制御をＶＭＭ１１２へ移行させ、ＶＭ終了がＰＬＤによりもたらされたということをＶＭＭ１１２へ報告する（ブロック２３０）。ゲストソフトウェアの特権レベルが減少したことを決定せず（ブロック２５５）、あるいは、１つのＰＬＤ制御が利用可能でなければ（ブロック２６０）、次のゲスト命令を実行する（ブロック２２０）。
【００２４】
選択終了を可能にするように特権レベル終了基準を利用可能にでき、また利用不可能にできる。この選択終了は、多重プロセッサスケジューリングに特に有益である。その理由は、複数の特権レベル変化による複数のＶＭ終了が通常、ごくまれに必要とされるからである。加えて、例えば、ＶＭＭは、ＶＭ内でＯＳカーネルからユーザーレベルコードへの複数の移行にのみ反応できる。
【００２５】
１つの他の実施形態では、上述した複数の特権レベル増大及び特権レベル減少の実行制御により得た機能を１つの単一特権レベル変化終了制御に組み合わせることができ、この単一特権レベル変化終了制御は、図３に示すように、任意の特権レベル変化が１つのＶＭ終了を生じさせることを特定する。図３では、１つのＶＭエントリ要求をＶＭＭ１１２から受信するときに（ブロック３１０）、処理を開始する（ブロック３０５）。例えば、システムなどの状態をロードするといった、複数のＶＭエントリ検査を実行する（ブロック３１５）。１つのゲスト命令を実行する（ブロック３２０）。この命令の実行が１つのＶＭ終了を生じさせると（ブロック３２５）、ＶＭ終了は、制御をＶＭＭ１１２へ移行させ、ＶＭ終了の理由をＶＭＭ１１２に報告し（ブロック３３０）、処理を終了する（ブロック３３５）。命令の実行中、いかなるＶＭ終了も生じなければ（ブロック３２５）、ゲスト命令を廃棄する（ブロック３４０）。ゲストソフトウェアの現在の特権レベルを評価した後、ゲストソフトウェアの特権レベルが変化したことを決定しており（ブロック３４５）、１つの特権レベル変化（ＰＬＣ）終了制御が利用可能であれば（ブロック３５０）、ＶＭ終了は制御をＶＭＭ１１２へ移行させ、ＶＭ終了がＰＬＣによりもたらされたということをＶＭＭ１１２へ報告する（ブロック３３０）。１つのＰＬＣ条件を満足しなければ（ブロック３４５）、または、ＰＬＣ終了制御が利用可能でなければ（ブロック３５０）、次のゲスト命令を実行する（ブロック３２０）。
【００２６】
図４は、本発明の一実施形態に従って複数の特権レベル変化を決定する一方法を１つのフローチャートに示す。この図では、前の特権レベル（ＯＰＬ）を表す１つの変数を現在の特権レベル（ＣＰＬ）に設定することにより変数を初期化すること（ブロック４１０）から処理を開始する（ブロック４０５）。１つの単一命令を、または、１つの割り込みのような１つの単一非同期的な事象を処理または実行する（ブロック４１５）。命令の実行、または、事象の処理（ブロック４１５）後、特権レベルが、命令または事象処理前のものと異なると（ブロック４２０）、特権レベルが変化し、図２及び図３に示すように１つの行動を取る（ブロック４２５）。異ならなければ、次の命令または処理事象を実行する（ブロック４１５）。
【００２７】
ここで留意すべきは、図２及び図３では、命令の実行後であって、命令の廃棄前に、１つのＶＭ終了を生じさせるべきかを決定するための１つの評価が生じるということである。実際には、この評価は、１つの命令の試みられる実行の一部として生じうる。例えば、１つの制御レジスタ（例えば、ＣＲ０）へのアクセスは、フォールト発生セマンティクスを持つ１つのＶＭ終了を生じさせることができる。言い換えれば、任意のアーキテクチャの状態が命令により変更される前にＶＭ終了が生じる。その他の複数のＶＭ終了は、あるアーキテクチャの状態の変更に続いて生じるが、複数のタスクを切り換えさせ、その後、複数のＶＭ終了を生じさせる複数の命令のような命令の廃棄の前に生じることができる。幾つかのＶＭ終了は、１つの命令の廃棄に続いて生じることができる。特権レベルの評価を、廃棄後に評価されるような１つの条件とすることができる。その他の複数のＶＭ終了は、その他の複数の理由により、また、その他の複数の環境の下で生じることができる。
【００２８】
図５は、１つの特権レベル変化命令のような複数の同期的な事象と、ゲストソフトウェアの実行中の１つの割り込みの到着のような複数の非同期的な事象との双方を認識する１つの方法を１つのフローチャートに示す。図５では、１つのＶＭエントリ要求をＶＭＭ１１２から受信するときに（ブロック５１０）、処理を開始する（ブロック５０５）。例えば、システムなどの状態をロードするといった、複数のＶＭエントリ検査を実行する（ブロック５１５）。１つの非同期的な事象が保留中でなければ（ブロック５２０）、１つのゲスト命令を実行する（ブロック５２５）。命令の実行（ブロック５２５）が１つのＶＭ終了を生じさせると（ブロック５３０）、ＶＭ終了は制御をＶＭＭ１１２へ移行させ、ＶＭ終了の原因をＶＭＭ１１２に報告し（ブロック５３５）、処理を終了する（ブロック５４０）。命令の実行が１つのＶＭ終了を生じさせなければ（ブロック５３０）、ゲスト命令を廃棄する（ブロック５４５）。１つの特権レベル増大（ＰＬＩ）条件を満足し（ブロック５５０）、１つのＰＬＩ制御が利用可能であれば（ブロック５５５）、ＶＭ終了は制御をＶＭＭ１１２へ移行させ、ＶＭ終了がＰＬＩにより生じたことをＶＭＭ１１２に報告する（ブロック５３５）。１つのＰＬＩ条件を満足しなければ（ブロック５５０）、または、１つのＰＬＩ制御が利用可能でなければ（ブロック５５５）、処理ロジックが１つの特権レベル減少（ＰＬＤ）について検査する。１つのＰＬＤ条件を満足し（ブロック５６０）、１つのＰＬＤ制御が利用可能であれば（ブロック５６５）、ＶＭ終了は制御をＶＭＭ１１２へ移行させ、ＶＭ終了がＰＬＤにより生じたことをＶＭＭ１１２に報告する（ブロック５３５）。１つのＰＬＤ条件を満足しなければ（ブロック５６０）、または、１つのＰＬＤ制御が利用可能でなければ（ブロック５６５）、この時点で１つの非同期的な事象が保留中であるかどうかを確かめるために処理ロジックが検査する（ブロック５２０）。１つの非同期的な事象が保留中であり（ブロック５２０）、この事象が１つのＶＭ終了を生じさせると（ブロック５７０）、ＶＭ終了は制御をＶＭＭ１１２へ移行させ、ＶＭ終了が事象により生じたことをＶＭＭ１１２に報告する（ブロック５３５）。１つの非同期的な事象が保留中であり（ブロック５２０）、この事象が１つのＶＭ終了を生じさせなければ（ブロック５７０）、この事象をゲストソフトウェアへ導入し（ブロック５７５）、上述した複数の特権レベル検査を行う。
【００２９】
別の実施形態では、１つの実行制御は１つの特権レベル目標値を示す。この特権レベル目標値を、ＶＭＭの制御下でＶＭＣＳ内に記憶できる。ＶＭＭは、特権レベル目標値を任意の有効特権レベルに設定できる。別の実施形態では、特権レベル目標値は１つの一定値を持つことができる。幾つかの実施形態は、２つ以上のこのような特権レベル目標値を用いることができる。例えば、一実施形態は、２つの異なる特権レベル目標値を持つことができ、各々は、１つの特定値に固定されている。一実施形態では、特権レベル目標値は、利用可能になるまで、いかなる効果も持たない。ＶＭＣＳ内の１つの整合特権レベル目標利用可能制御を１のような１つの利用可能値に設定することにより１つの特権レベル目標値制御を利用可能にできる。この制御は、ゲストソフトウェアの実行中にゲストソフトウェアの特権レベルがこの特権レベル目標値に整合すれば、１つのＶＭ終了を生じさせるべきであるということを指示する。実行制御は、複数の特権レベル目標値と、各々が複数の特権レベル目標値制御の１つに対応する複数の整合目標特権利用可能制御とを有することができる。
【００３０】
一実施形態では、整合する特権レベルで実行されるべき最初の命令の実行前に、特権レベル目標値と現在の特権レベルとのこのような１つの整合によるＶＭ終了を生じさせることができる。一実施形態では、ＶＭ終了情報の一部としてＶＭＭに報告できるゲスト命令ポインタ値は、整合する特権レベルで実行されるべき最初の命令を指す。一実施形態では、整合する値へ特権レベルを変化させた命令のアドレスを報告するいかなる明示的な規定も行わない。
【００３１】
図６は、１つの仮想マシン環境内でゲストソフトウェアの特権レベルに基づいてゲストソフトウェアから１つのＶＭＭへ移行する１つの処理の一実施形態を示す１つの流れ図である。図示の実施形態では、１つのＶＭ終了が、ゲストソフトウェアの特権レベルと１つの特権レベル目標値制御（ＰＬＴＶＣ）の値とに基づいて生じる。図６では、１つのＶＭエントリ要求をＶＭＭ１１２から受信するときに（ブロック６２０）、処理を開始する（ブロック６１０）。例えば、システムなどの状態をロードするといった、複数のＶＭエントリ検査を実行する（ブロック６３０）。１つのＰＬＴＶＣが利用可能でなければ（ブロック６４０）、１つのゲスト命令を実行する（ブロック６５０）。ゲストソフトウェアの現在の特権レベル（ＣＰＬ）を評価した後、ＰＬＴＶＣが利用可能であり（ブロック６４０）、ＣＰＬが特権レベル目標値（ＰＬＴＶ）に等しければ（ブロック６６０）、ＶＭ終了が制御をＶＭＭ１１２へ移行させ（ブロック６７０）、処理を終了する（ブロック６８０）。ＣＰＬがＰＬＴＶに等しくなければ（ブロック６６０）、１つのゲスト命令を実行する（ブロック６５０）。
【００３２】
別の実施形態では、特権レベル目標値制御を１つの特権レベル上限値制御で強化する。この制御が１つの利用可能値に（例えば、１に）設定されている場合、ゲストソフトウェアの実行中にゲストソフトウェアの特権レベルが特権レベル目標値よりも大きければ、１つのＶＭ終了を生じさせるべきであることを示す。一実施形態では、実行制御は、複数の特権レベル目標値及び対応の複数の特権レベル上限値制御を有することができる。その他の一実施形態では、特権レベル目標値が、最も高い特権レベルに設定されている場合、より多くの特権を持つ１つの状態への移行を生じさせないことができ、これにより、１つの権限付与制御を用いることなく、制御を効果的に利用不可能にする。
【００３３】
更なる別の実施形態では、特権レベル目標実行制御を１つの特権レベル下限値制御で強化し、この制御は、ゲストソフトウェアの実行中にゲストソフトウェアの特権レベルが特権レベル目標値よりも小さければ、１つのＶＭ終了を生じさせるべきであることを指示する。一実施形態では、実行制御は、複数の特権レベル目標値及び対応の複数の特権レベル下限値制御を有することができる。その他の一実施形態では、特権レベル目標値が、最も低い特権レベルに設定されていれば、より少ない特権を持つ１つの状態への移行を生じさせないことができ、これにより、１つの権限付与制御を用いることなく、制御を効果的に利用不可能にする。
【００３４】
図７は、１つの仮想マシン環境内でゲストソフトウェアの特権レベルに基づいてゲストソフトウェアから１つのＶＭＭへ移行する１つの処理の一実施形態を示す１つの流れ図である。図示の実施形態では、現在の特権レベルがＰＬＴＶよりも大きければ、１つのＶＭ終了が、ゲストソフトウェアの特権レベルと１つの特権レベル上限値制御（ＰＬＣＶＣ）の値とに基づいて生じる。図７では、１つのＶＭエントリ要求をＶＭＭ１１２から受信するときに（ブロック７２０）、処理を開始する（ブロック７１０）。例えば、システムなどの状態をロードするといった、複数のＶＭエントリ検査を実行する（ブロック７３０）。１つのＰＬＣＶＣが利用可能でなければ（ブロック７４０）、１つのゲスト命令を実行する（ブロック７５０）。ゲストソフトウェアのＣＰＬを評価した後、ＰＬＣＶＣが利用可能であり（ブロック７４０）、ＣＰＬがＰＬＴＶを超えていれば（ブロック７６０）、ＶＭ終了が制御をＶＭＭ１１２へ移行させ（ブロック７７０）、処理を終了する（ブロック７８０）。ＣＰＬがＰＬＴＶを超えていなければ（ブロック７６０）、１つのゲスト命令を実行する（ブロック７５０）。
【００３５】
実際には、１つのウォッチドッグタイマの使用を必要とする場合がある。その理由は、時々、複数のオペレーティングシステムが、複数のドライバスレッドを実行する複数の長期間、カーネルモードで居続けるためである。図８は、１つの仮想マシン環境内で割り込みスケジューリングを実行する１つの処理の一実施形態を示す１つの流れ図である。図８では、現在のＶＭ（ＣＶＭ）を割り込ませる必要があるかを処理ロジックが決定するときに（ブロック８１０）、処理を開始する（ブロック８０５）。処理ロジックは、ＣＶＭが１つの仮想システムの一部であるかを決定する（ブロック８１５）。ＣＶＭが１つの特権モード（ＰＭ）でなければ（ブロック８２０）、ＣＶＭを割り込ませ（ブロック８２５）、処理を終了する（ブロック８３０）。ＣＶＭが１つのＰＭであれば（ブロック８２０）、１つのウォッチドッグタイマ（ＷＤＴ）をセットアップする（ブロック８３５）。次に、ＣＶＭが特権モードでないときに複数のＶＭ終了を生じさせるように特権レベル終了制御（ＰＬＥＣ）を適切に設定する（ブロック８４０）。次に、処理ロジックは制御をＣＶＭへ移行する（ブロック８４５）。１つのＶＭ終了に続いてＶＭＭ１１２が制御をＣＶＭから受信する。（ブロック８５０）
【００３６】
ＶＭ終了が１つのＷＤＴによるものであったら（ブロック８５５）、ＣＶＭを割り込ませ（ブロック８２５）、処理を終了する（ブロック８３０）。ＶＭ終了が１つのＷＤＴによるものでなかったら（ブロック８５５）、ＶＭ終了を処理し（ブロック８６０）、ＣＶＭが１つのＰＭでないかを処理ロジックが決定する（ブロック８６５）。ＣＶＭが１つのＰＭでなければ（ブロック８６５）、ＣＶＭを割り込ませ（ブロック８２５）、処理を終了する（ブロック８３０）。ＣＶＭが１つのＰＭであれば（ブロック８６５）、ＰＬＥＣを設定し（ブロック８４０）、制御をＣＶＭへ移行し（ブロック８４５）し、ＷＤＴ及びＰＬＥＣが引き続き有効である。
【００３７】
その他の一実施形態では、１つの第１レベルから１つの第４レベルへ、また、１つの第３レベルから１つの第２レベルへのような複数の特権レベル間における複数の特定の移行の際に複数のＶＭ終了を生じさせるために複数の制御が用いられる。例えば、４つの特権レベルを有する１つのＩＳＡでは、複数のＶＭ終了を生じさせるため、複数のソース及びデスティネーション特権レベルの１２個の実現可能な組み合わせのいずれかをＶＭＭに選択させるのに１２個の制御を用いることができる。一実施形態では、複数の特権レベルの組み合わせの外積全部に満たない制御を用いることができる。複数の制御を、ここでは、複数の特権レベルソースデスティネーション終了制御（ＰＬＳＤＥＣ）と称する。
【００３８】
一実施形態では、特権レベルの複数の移行を生じさせることができるすべての事象及び命令に対して複数の実行制御を用いて、特権レベルのこのようなすべての変化の制御を１つのＶＭＭ１１２に回復させる。この代案は、１つの特定の命令実行が実際に１つの特権レベル変化を生じさせたかを決定する追加の支援をＶＭＭ１１２で必要とする場合がある。例えば、１つのＩＳＡでは、１つの割り込み復帰命令（ＩＲＥＴ）は１つの特権レベル変化を生じさせることができるが、あらゆる場合ではない。１つのＩＲＥＴ命令の実行が特権レベルを変化させたかどうかに関係なく、この命令の実行が１つのＶＭ終了を無条件に生じさせる場合、命令が１つの特権レベル変化を生じさせたかを決定するためにＶＭＭが命令をエミュレートし、または別の方法でシングルステップする必要がある場合がある。ＩＲＥＴをエミュレートするといった追加の複数の命令をＶＭＭソフトウェア上に配置して、フォールトを起こす命令が待望の特権レベル変化を生じさせたかを決定できる。
【００３９】
複数の特権レベル変化を生じさせる幾つかの動作または事象は、その他の複数の理由により複数のＶＭ終了を生じさせる場合がある。これらのその他の複数のＶＭ終了理由の優先順位を高くでき、あるいは、このような１つの命令の実行に続いて特権レベル終了基準を評価する前にＶＭ終了理由を評価できる。この場合、ＶＭＭは、ＶＭ終了を生じさせる事象または命令が１つの特権レベル変化をも生じさせるかということを決定できる。例えば、１つの仮想化アーキテクチャは、複数のソフトウェア（ＳＷ）割り込み命令の実行で複数のＶＭ終了を生じさせるように１つの実行制御を１つのＶＭＭに設定させることができる。ユーザーレベルコードにおいて１つのＳＷ割り込み命令の実行は、１つの特権レベル変化を生じさせることができる。複数のＶＭ終了を生じさせるように複数の特権レベル変化を設定すると同時に複数のＳＷ割り込み命令を実行する場合、複数のＶＭ終了を生じさせるように複数の実行制御を構成できる。このことが生じると、ＳＷ割り込みにより生じたＶＭ終了を、ＳＷ割り込み命令の実行中、最初に評価でき、これにより、特権レベルの変化前に１つのＶＭ終了を生じさせることができる。この場合、ＳＷ割り込み終了条件は、事実上フォールトを起こし、命令の実行の完了前に評価され、一方、特権レベル変化は、事実上トラップし、命令の完了に続いて評価される。一実施形態では、事実上、複数のＶＭ終了源をトラップでき、事実上、複数のＶＭ終了源にフォールトを起こすことができる。特権レベル終了基準の評価の優先順位を、その他のいずれかの、またはその他のすべてのＶＭ終了源よりも高く、あるいは低くすることができる。
【００４０】
上記の明細書中、説明のため、多数の具体的な詳細を、本発明の充分な理解を得るように示した。しかし、当業者にとって、これらの具体的な詳細を用いず、本発明を実施できること明らかである。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施形態を実現できる１つの処理システムの一実施形態を１つのブロック図に示す。
【図２】本発明の一実施形態に従って特権レベルの増大及び減少に別々の制御を用いる特権レベル終了制御に対する１つの処理を１つのフローチャートに示す。
【図３】本発明の一実施形態に従って特権レベルの増大及び減少に複数の組み合わせ制御を用いる特権レベル終了制御に対する１つの処理を１つのフローチャートに示す。
【図４】本発明の一実施形態に従って特権レベル変化を検出する１つの処理を１つのフローチャートに示す。
【図５】本発明の一実施形態に従って非同期的な事象を処理する１つの方法を１つのフローチャートに示す。
【図６】１つの仮想マシン環境内でゲストソフトウェアの特権レベルに基づいてゲストソフトウェアから１つの仮想マシンモニタへ移行する１つの処理の一実施形態を１つのフローチャートに示す。
【図７】１つの仮想マシン環境内でゲストソフトウェアの特権レベルに基づいてゲストソフトウェアから１つの仮想マシンモニタへ移行する１つの処理の一実施形態を１つのフローチャートに示す。
【図８】１つの仮想マシン環境内で割り込みスケジューリングを実行する１つの処理の一実施形態を１つのフローチャートに示す。
【符号の説明】
【００４２】
１００  仮想マシン環境
１１６  プラットフォームハードウェア
１１２  ＶＭＭ
１１８  プロセッサ
１２０  メモリ
１２４  特権レベル監視ロジック
【図１】
2006024207.tif 000003
【図２】
2006024207.tif 000004
【図３】
2006024207.tif 000005
【図４】
2006024207.tif 000006
【図５】
2006024207.tif 000007
【図６】
2006024207.tif 000008
【図７】
2006024207.tif 000009
【図８】
2006024207.tif 000010
【外国語明細書】
2006024207.tif 000011
2006024207.tif 000012
2006024207.tif 000013
2006024207.tif 000014
2006024207.tif 000015
2006024207.tif 000016
2006024207.tif 000017
2006024207.tif 000018
2006024207.tif 000019
2006024207.tif 000020
2006024207.tif 000021
2006024207.tif 000022
2006024207.tif 000023
2006024207.tif 000024
2006024207.tif 000025
2006024207.tif 000026
2006024207.tif 000027
2006024207.tif 000028
2006024207.tif 000029
2006024207.tif 000030
2006024207.tif 000031
2006024207.tif 000032
2006024207.tif 000033
2006024207.tif 000034
2006024207.tif 000035
2006024207.tif 000036
2006024207.tif 000037
2006024207.tif 000038
2006024207.tif 000039
2006024207.tif 000040
2006024207.tif 000041
2006024207.tif 000042
2006024207.tif 000043
2006024207.tif 000044
2006024207.tif 000045
2006024207.tif 000046
2006024207.tif 000047
2006024207.tif 000048
2006024207.tif 000049
2006024207.tif 000050
2006024207.tif 000051
2006024207.tif 000052