(57)【要約】エミュレートされるコンピューティング環境において、プロセッサの一定のプロセッサ設定に関してプロセッサシステムからホストオペレーティングシステムを論理的に切り離しするための方法が提供される。エミュレーションプログラムのハイパーバイザが、プロセッサのプロセッサ設定のうちのいくつかを、ゲストオペレーティングシステムによって提供されるソフトウェアルーチンまたはデータ構造に関連するプロセッサ設定に置換する。置換されたプロセッサ設定は、メモリに書き込まれる。プロセッサがソフトウェアルーチンを呼び出すかまたは置換されたプロセッサ設定に関連するデータ構造にアクセスする時間中は、プロセッサは、ソフトウェアルーチンを呼び出すかまたはアクセスするか、あるいはゲストオペレーティングシステムに関連するデータ構造にアクセスし、ホストオペレーティングシステムをバイパスし、直接にゲストオペレーティングシステムと通信する。ホストオペレーティングシステムがプロセッサに再結合される場合は、メモリに保存されているプロセッサ設定が、プロセッサの適切なレジスタに再書き込みされる。ハイパーバイザがプロセッサに結合されている時間中は、ハイパーバイザのページテーブルは、ゲストオペレーティングシステムのページテーブルを大部分ミラーリングするように確立される。ゲストオペレーティングシステムのページテーブルへの変更により、ゲストオペレーティングシステムのページテーブルとハイパーバイザのページテーブルの競合が起きた場合は、ハイパーバイザのページテーブルは、ゲストオペレーティングシステムに対してトランスペアレントな方式で再割り当てされる。
2004531788.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、前記ゲストコンピュータシステムはゲストオペレーティングシステムを備え、
前記ホストコンピュータシステム内でゲストオペレーティングシステムのホストとして働くためのハイパーバイザを確立するステップと、
前記ハイパーバイザ内でページテーブルを確立するステップと、
前記ゲストオペレーティングシステムの前記ページテーブルをモニタするステップと、
前記ゲストオペレーティングシステムの前記ページテーブルへの変更により、前記ハイパーバイザの前記ページテーブルと前記ゲストオペレーティングシステムの前記ページテーブルの間に競合が起きる場合は、前記ハイパーバイザの前記ページテーブルを再割り当てするステップとを含むことを特徴とする方法。
【請求項２】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、前記ゲストコンピュータシステムはゲストオペレーティングシステムを備え、前記ハイパーバイザの前記ページテーブル内に前記ハイパーバイザのコードのマッピングを含むことを除き、前記ハイパーバイザの前記ページテーブルは、一般に、前記ゲストオペレーティングシステムの前記ページテーブルをミラーリングすることを特徴とする請求項１に記載の方法。
【請求項３】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、前記ゲストコンピュータシステムはゲストオペレーティングシステムを備え、前記ゲストオペレーティングシステムの前記ページテーブルをモニタするステップは、前記ゲストオペレーティングシステムの前記ページテーブルへの書込みをモニタするステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、前記ゲストコンピュータシステムはゲストオペレーティングシステムを備え、前記ハイパーバイザの前記ページテーブルを再割り当てするステップは、前記ハイパーバイザのコードが前記ゲストオペレーティングシステムの前記ページテーブルのマッピングされたメモリ場所とオーバラップするメモリ場所にマッピングされないように、前記ハイパーバイザの前記コードの前記マッピングを再割り当てするステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、前記ゲストコンピュータシステムはゲストオペレーティングシステムを備え、前記ハイパーバイザの前記ページテーブル内に前記ハイパーバイザのコードのマッピングを含むことを除き、前記ハイパーバイザの前記ページテーブルは、一般に、前記ゲストオペレーティングシステムの前記ページテーブルをミラーリングし、
前記ゲストオペレーティングシステムの前記ページテーブルをモニタするステップは、前記ゲストオペレーティングシステムの前記ページテーブルへの書込みをモニタするステップを含み、
前記ハイパーバイザの前記ページテーブルを再割り当てするステップは、前記ハイパーバイザのコードが前記ゲストオペレーティングシステムの前記ページテーブルのマッピングされたメモリ場所とオーバラップするメモリ場所にマッピングされないように、前記ハイパーバイザの前記コードの前記マッピングを再割り当てするステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
エミュレートされるコンピューティング環境内で、ゲストオペレーティングシステムのページテーブルをハイパーバイザの前記ページテーブルと照合調整をするための方法であって、前記ハイパーバイザは、前記ホストコンピュータシステム上で前記ゲストオペレーティングシステムのホストとして働き、
前記ハイパーバイザの前記ページテーブルが前記ハイパーバイザのコードのためのメモリ空間の割当てを有することに加え、前記ハイパーバイザの前記ページテーブルが前記ゲストオペレーティングシステムの前記ページテーブルを大部分ミラーリングするように、前記ハイパーバイザの前記ページテーブルを確立するステップと、
前記ゲストオペレーティングシステムの前記ページテーブルへの変更のために前記ゲストオペレーティングシステムの前記ページテーブルをモニタするステップと、
前記ゲストオペレーティングシステムの前記ページテーブルへの変更により、前記ハイパーバイザの前記ページテーブルと前記ゲストオペレーティングシステムの前記ページテーブルの間に競合が起きる場合は、前記ハイパーバイザの前記ページテーブルと前記ゲストオペレーティングシステムの前記ページテーブルの間に競合がないように、前記ゲストオペレーティングシステムの前記ページテーブルを再割り当てするステップと
を含むことを特徴とする方法。
【請求項７】
エミュレートされるコンピューティング環境内で、ゲストオペレーティングシステムのページテーブルをハイパーバイザの前記ページテーブルと照合調整をするための方法であって、前記ゲストオペレーティングシステムの前記ページテーブルを再割り当てするステップは、前記ハイパーバイザのコードのページマッピングが前記ゲストオペレーティングシステム内でマッピングされたページとオーバラップしないように、前記ハイパーバイザのコードのページマッピングを再割り当てするステップを含むことを特徴とする請求項６に記載の方法。
【請求項８】
エミュレートされるコンピューティング環境内で、ゲストオペレーティングシステムのページテーブルをハイパーバイザの前記ページテーブルと照合調整をするための方法であって、前記ゲストオペレーティングシステムの前記ページテーブルをモニタするステップは、前記ゲストオペレーティングシステムの前記ページテーブルへの書込みがあった時を判断するステップを含むことを特徴とする請求項７に記載の方法。
【請求項９】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、前記ホストコンピュータシステムはプロセッサとホストオペレーティングシステムとを備え、
前記ホストシステム上でゲストオペレーティングシステムのオペレーションをエミュレートするエミュレータプログラムを実行するステップと、
前記コンピュータシステムの前記プロセッサから前記ホストオペレーティングシステムに関連するプロセッサ設定を読み取るステップと、
前記プロセッサ設定をメモリに書き込むステップと、
前記エミュレータプログラムに関連するゲストプロセッサ設定を前記プロセッサに書き込むステップと
を含み、前記ホストオペレーティングシステムは、前記エミュレータプログラムに関連する前記ゲストプロセッサ設定に関係するプロセッサ機能のために前記プロセッサから論理的に切り離しされることを特徴とする方法。
【請求項１０】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、
前記エミュレータプログラムに関連する前記プロセッサ設定は例外ベクトルであり、
前記例外ベクトルによって指し示された例外ハンドラを呼び出すステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、
メモリから前記ホストオペレーティングシステムに関連する前記プロセッサ設定を読み取るステップと、
前記プロセッサに前記ホストオペレーティングシステムに関連する前記プロセッサ設定を書き込むステップと
をさらに含み、前記ホストオペレーティングシステムは、前記ホストオペレーティングシステムに関連する前記プロセッサ設定に関係する機能のために前記プロセッサに論理的に結合されることを特徴とする請求項９に記載の方法。
【請求項１２】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、
前記エミュレータプログラムによって要求された機能を実施するために前記ホストオペレーティングシステムを前記プロセッサに一時的に論理的に再結合するステップと、
前記ホストオペレーティングシステムが前記エミュレータプログラムによって要求された機能を完了した後、前記エミュレータプログラムに関連する前記プロセッサ設定に関係する機能のために前記エミュレータプログラムを前記プロセッサに論理的に再結合するステップと
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１３】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、前記エミュレータプログラムは、前記ホストオペレーティングシステム上でアプリケーションプログラムとして動作することを特徴とする請求項９に記載の方法。
【請求項１４】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、
前記エミュレータプログラムに関連する前記プロセッサ設定は割込ルーチンポインタであり、
前記割込ルーチンポインタによって指し示された割込ルーチンを呼び出すステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１５】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、
前記エミュレータプログラムに関連する前記プロセッサ設定は例外ベクトルテーブルに対するポインタであり、
前記エミュレータプログラムに関連する前記プロセッサ設定を使用して前記例外ベクトルテーブルにアクセスするステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１６】
ホストコンピュータシステム内でゲストコンピュータシステムをエミュレートするための方法であって、
前記エミュレータプログラムに関連する前記プロセッサ設定は前記ゲストコンピュータシステムに関連するページテーブルに対するポインタであり、
前記エミュレータプログラムに関連する前記プロセッサ設定を使用して前記ゲストコンピュータシステムの前記ページテーブルにアクセスするステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１７】
コンピュータシステムのプロセッサから前記コンピュータシステムのホストオペレーティングシステムを論理的に切り離しするための方法であって、
前記ホストコンピュータシステム上のアプリケーションプログラムとして、ゲストオペレーティングシステムのオペレーションをエミュレートするエミュレータプログラムを実行するステップを含み、前記ゲストオペレーティングシステムは、前記コンピュータシステムの前記プロセッサのスーパバイザ状態に関連する１組の機能を有し、
さらに、前記ホストオペレーティングシステムが、交換されたプロセッサ設定に関連するプロセッサオペレーションに関して前記プロセッサから論理的に切り離しするように、前記プロセッサ内で第１の交換ステップの一部として、前記ゲストオペレーティングシステムの機能に関連するプロセッサ設定と前記プロセッサのスーパバイザ状態とを交換するステップと、
前記ホストオペレーティングシステムが、前記交換されたプロセッサ設定に関連するプロセッサオペレーションに関して前記ホストオペレーティングシステムに論理的に再結合するように、前記プロセッサ内で第２の交換ステップの一部として、前記ホストオペレーティングシステムの機能に関連するプロセッサ設定を交換するステップと
を含むことを特徴とする方法。
【請求項１８】
コンピュータシステムのプロセッサから前記コンピュータシステムのホストオペレーティングシステムを論理的に切り離しするための方法であって、前記ゲストオペレーティングシステムの機能に関連するプロセッサ設定は、前記ゲストオペレーティングシステムによって提供される例外ハンドラに対するポインタであることを特徴とする請求項１７に記載の方法。
【請求項１９】
コンピュータシステムのプロセッサから前記コンピュータシステムのホストオペレーティングシステムを論理的に切り離しするための方法であって、
前記ゲストオペレーティングシステムの機能に関連するプロセッサ設定は、前記ゲストオペレーティングシステムのページテーブルに対するポインタであることを特徴とする請求項１７に記載の方法。
【請求項２０】
コンピュータシステムのプロセッサから前記コンピュータシステムのホストオペレーティングシステムを論理的に切り離しするための方法であって、
前記エミュレータプログラムによって要求された機能を実施するために前記ホストオペレーティングシステムを前記プロセッサに一時的に論理的に再結合するステップと、
前記ホストオペレーティングシステムが前記エミュレータプログラムによって要求された機能を完了した後、前記ゲストオペレーティングシステムに関連する前記プロセッサ設定のために前記エミュレータプログラムを前記プロセッサに論理的に再結合するステップと
をさらに含むことを特徴とする請求項１７に記載の方法。
【請求項２１】
コンピュータシステムのプロセッサから前記コンピュータシステムのホストオペレーティングシステムを論理的に切り離しするための方法であって、第１の交換ステップは、
前記プロセッサの識別可能なレジスタから前記ホストオペレーティングシステムに関連するプロセッサ設定を読み取るステップと、
メモリからメモリに読み取られた前記プロセッサ設定を書き込むステップと
を含むことを特徴とする請求項１７に記載の方法。
【請求項２２】
コンピュータシステムのプロセッサから前記コンピュータシステムのホストオペレーティングシステムを論理的に切り離しするための方法であって、第２の交換ステップは、
メモリから前記ホストオペレーティングシステムに関連する前記プロセッサ設定を読み取るステップと、
前記プロセッサ設定を前記プロセッサの前記識別可能なレジスタに書き込むステップと
を含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
コンピュータシステムのプロセッサから前記コンピュータシステムのホストオペレーティングシステムを論理的に切り離しするための方法であって、前記メモリはＲＡＭメモリであることを特徴とする請求項２１に記載の方法。
【請求項２４】
コンピュータシステムのプロセッサから前記コンピュータシステムのホストオペレーティングシステムを論理的に切り離しするための方法であって、前記ゲストオペレーティングシステムの機能に関連する前記プロセッサ設定は、前記ゲストオペレーティングシステムによって提供される例外ハンドラに対するポインタであることを特徴とする請求項１７に記載の方法。
【請求項２５】
コンピュータシステムのプロセッサによる呼び出しを、前記コンピュータシステムのホストオペレーティングシステム上でエミュレートされているゲストオペレーティングシステムに再ルーティングするための方法であって、
前記プロセッサから第１の組のプロセッサ設定を読み取るステップを含み、前記プロセッサ設定は前記ホストオペレーティングシステムによって提供される機能に関連し、
さらに、前記第１のプロセッサ設定をメモリ内に格納するステップと、
第２の組の交換プロセッサ設定を前記プロセッサに書き込むステップと
を含み、前記交換の組のプロセッサ設定は前記ゲストオペレーティングシステムによって提供される機能に関連し、前記交換組のプロセッサ設定に関連する機能に関して、前記ホストオペレーティングシステムは前記プロセッサから論理的に切り離しし、前記ゲストオペレーティングシステムは前記プロセッサに論理的に結合することを特徴とする方法。
【請求項２６】
コンピュータシステムのプロセッサによる呼び出しを、前記コンピュータシステムのホストオペレーティングシステム上でエミュレートされているゲストオペレーティングシステムに再ルーティングするための方法であって、
メモリ内に格納された前記第１の組のプロセッサ設定を読み取るステップと、
前記第１の組のプロセッサ設定を前記プロセッサに書き込むステップと
を含み、前記第１の組のプロセッサ設定に関連する機能に関して、前記ホストオペレーティングシステムは前記プロセッサに論理的に結合することを特徴とする請求項２５に記載の方法。
【請求項２７】
コンピュータシステムのプロセッサからホストオペレーティングシステムを論理的に切り離しするための方法であって、
前記プロセッサ上の１組のレジスタのコンテンツをメモリに保存するステップを含み、前記１組のレジスタは前記プロセッサの前記プロセッサ設定のうちの少なくとも一部を格納し、
さらに、前記１組のレジスタに、前記ホストオペレーティングシステム上でアプリケーションプログラムとして常駐するゲストオペレーティングシステムによって提供される機能に関連する交換組のプロセッサ設定を書き込むステップを含むことを特徴とする方法。
【請求項２８】
コンピュータシステムのプロセッサからホストオペレーティングシステムを論理的に切り離しするための方法であって、前記交換組のレジスタは、前記ホストオペレーティングシステムによって提供される例外ハンドラルーチンに対するポインタを有することを特徴とする請求項２０に記載の方法。
【請求項２９】
コンピュータシステムのプロセッサからホストオペレーティングシステムを論理的に切り離しするための方法であって、前記交換組のレジスタは、前記ホストオペレーティングシステムによって提供される割込ハンドラルーチンに対するポインタを有することを特徴とする請求項２７に記載の方法。
【請求項３０】
コンピュータシステムのプロセッサからホストオペレーティングシステムを論理的に切り離しするための方法であって、前記交換組のレジスタは、前記ホストオペレーティングシステムに関連するページテーブルを有することを特徴とする請求項２７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムのエミュレーションの分野に関し、より詳細には、ゲストオペレーティングシステムによるプロセッサ制御を支援するためにコンピュータシステムのプロセッサからホストオペレーティングシステムをトランスペアレント（透過的）に切り離しするための方法に関する。
【背景技術】
【０００２】
コンピュータは、特定のシステム命令セットを実行するように設計されている汎用中央処理ユニット（ＣＰＵ）を含んでいる。同様のアーキテクチャまたは設計仕様を有する１群のプロセッサを、同じプロセッサファミリのメンバであると考えることができる。現在のプロセッサファミリの例には、アリゾナ州フェニックス市（Ｐｈｏｅｎｉｘ，Ａｒｉｚｏｎａ）にあるモトローラ社製のＭｏｔｏｒｏｌａ６８０Ｘ０プロセッサファミリ、カリフォルニア州サニーヴェール市（Ｓｕｎｎｙｖａｌｅ，Ｃａｌｉｆｏｒｎｉａ）にあるインテル社製のＩｎｔｅｌ８０Ｘ８６プロセッサファミリ、モトローラ社製で、カリフォルニア州キューパーティーノ市（Ｃｕｐｅｒｔｉｎｏ，Ｃａｌｉｆｏｒｎｉａ）にあるアップルコンピュータ社製のコンピュータに使用されているＰｏｗｅｒＰＣプロセッサファミリがある。アーキテクチャおよび設計考慮事項が同様であることから１群のプロセッサは」、同じファミリであると考えられるが、そのクロック速度および他の性能パラメータによりそれらプロセッサは同じファミリ内でもかなり異なっていることがある。
【０００３】
それぞれのファミリのマイクロプロセッサが、そのプロセッサファミリにユニークである命令を実行する。１つのプロセッサまたは１ファミリのプロセッサが実行できる集合的な命令セットが、そのプロセッサの命令セットとして知られている。一例として、Ｉｎｔｅｌ８０Ｘ８６プロセッサファミリによって使用される命令セットは、ＰｏｗｅｒＰＣプロセッサファミリによって使用される命令セットとの互換性がない。Ｉｎｔｅｌ８０Ｘ８６命令セットは、複雑命令セットコンピュータ（ＣＩＳＣ）フォーマットに基づく。モトローラＰｏｗｅｒＰＣ命令セットは、縮小命令セットコンピュータ（ＲＩＳＣ）フォーマットに基づく。ＣＩＳＣプロセッサは多数の命令を使用し、そのうちのいくつかはかなり複雑な機能を実行できるが、一般に、実行するためには多くのクロックサイクルを必要とする。ＲＩＳＣプロセッサは、より少ない数の使用可能な命令を使用して、より単純な機能セットを実行する。この機能セットははるかに高い速度で実行される。
【０００４】
コンピュータシステム間のプロセッサファミリのユニーク性の結果としてまた、一般に、コンピュータシステムのハードウェアアーキテクチャの他の要素間に非互換性が生じる。Ｉｎｔｅｌ８０Ｘ８６プロセッサファミリのプロセッサとともに製造されるコンピュータシステムは、ＰｏｗｅｒＰＣプロセッサファミリのプロセッサとともに製造されるコンピュータシステムのハードウェアアーキテクチャとは異なるハードウェアアーキテクチャを有する。プロセッサ命令セットおよびコンピュータシステムのハードウェアアーキテクチャのユニーク性のために、アプリケーションソフトウェアプログラムは、一般に、特定のオペレーティングシステムを実行する特定のコンピュータシステム上を動作するよう書かれる。
【０００５】
コンピュータ製造業者は、そのコンピュータ製造業者の製品ラインに関連するマイクロプロセッサファミリ上でできるだけ多くの数のアプリケーションを動作させるようにすることにより自社の市場占有率を最大にしたいと望む。コンピュータシステム上で動作できるオペレーティングシステムおよびアプリケーションプログラムの数を拡張するために、ホストと呼ばれる、１タイプのＣＰＵを備えた所与のコンピュータが、エミュレータプログラムを含むようにするという技術の分野が発展してきた。このエミュレータプログラムによりホストコンピュータがゲストと呼ばれる無関係のタイプのＣＰＵの命令をエミュレートすることができる。したがって、ホストコンピュータは、１つまたは複数のホスト命令を所与のゲスト命令に応答して呼び出すようにするアプリケーションを実行する。したがって、ホストコンピュータは、それ自体のハードウェアアーキテクチャのために設計されたソフトウェアおよび無関係のハードウェアアーキテクチャを有するコンピュータのために書かれたソフトウェアの双方を実行することができる。より具体的な例として、アップルコンピュータ製のコンピュータシステムが、たとえば、ＰＣベースのコンピュータシステムのために書かれたオペレーティングシステムおよびプログラムを実行することができる。エミュレータプログラムを使用して、単一のＣＰＵ上で多数の互換性のないオペレーティングシステムを同時に操作（ｏｐｅｒａｔｅ）することも可能である。この構成においては、それぞれのオペレーティングシステムは他のオペレーティングシステムとの互換性がないが、エミュレータプログラムが、２つのオペレーティングシステムのうちの１つのホストとして働くことができ、それにより、通常互換性のないオペレーティングシステムが同じコンピュータシステム上で同時に動作できるようになる。
【０００６】
ゲストコンピュータシステムがホストコンピュータシステム上でエミュレートされる場合は、ホストコンピュータシステムがゲストコンピュータシステムのハードウェアアーキテクチャのオペレーションのソフトウェアの実行としてのみ存在するので、ゲストコンピュータシステムは仮想マシンと言える。エミュレータおよび仮想マシンという用語は、時に、コンピュータシステム全体のハードウェアアーキテクチャを真似るかまたはエミュレートする能力を表すことと交換可能に使用される。一例として、カリフォルニア州サンマテオ市（Ｓａｎ  Ｍａｔｅｏ，Ｃａｌｉｆｏｒｎｉａ）にあるＣｏｎｎｅｃｔｉｘ社で作成された仮想ＰＣソフトウェアは、Ｉｎｔｅｌ８０Ｘ８６Ｐｅｎｔｉｕｍ（登録商標）プロセッサやさまざまなマザーボード構成要素およびカードを含むコンピュータ全体をエミュレートする。これらの構成要素のオペレーションは、ホストマシン上で動作している仮想マシン内でエミュレートされる。ＰｏｗｅｒＰＣプロセッサを備えたコンピュータシステムなどのホストコンピュータのオペレーティングシステムソフトウェアおよびハードウェアアーキテクチャ上で実行するエミュレータプログラムが、ゲストコンピュータシステム全体のオペレーションを真似る。エミュレータプログラムは、ホストマシンのハードウェアアーキテクチャと、エミュレートされる環境内で動作するソフトウェアによって伝送される命令との間のやりとりの機能を果たす。
【０００７】
ハイパーバイザは、ホストオペレーティングシステムのカーネルレベルの近くに存在する制御プログラムであり、ホストオペレーティングシステム以外の１つまたは複数の２次オペレーティングシステムが、コンピュータシステムのプロセッサを含むコンピュータシステムのハードウェアを使用できるよう動作する。オペレーティングシステムのハイパーバイザは、２次オペレーティングシステムのオペレーティング環境をエミュレートする。その結果、実際には別のハードウェアおよび／またはオペレーティングシステム環境内で動作している可能性があり、ホストオペレーティングシステムはコンピュータシステムの論理制御内である可能性がある場合に、２次オペレーティングシステムが、いつものハードウェアおよび／またはオペレーティングシステム環境内で動作しておりコンピュータシステムの論理制御内にあると信じる。多くのオペレーティングシステムは、オペレーティングシステムがあたかもコンピュータシステムのハードウェアの排他的論理制御内にあるかのように動作しなければならないように機能する。多数のオペレーティングシステムが単一のコンピュータシステム上で同時に機能するためには、それぞれのオペレーティングシステムのハイパーバイザは、それぞれのオペレーティングシステムがあたかもコンピュータシステム全体にわたって排他的制御を有するかのように機能するように、他のオペレーティングシステムの存在をマスクするように機能しなければならない。
【０００８】
ゲストシステムのハードウェアアーキテクチャ全体をエミュレートしたい場合は、たとえば、メモリ管理ユニット、コンテキストスイッチハードウェア、例外処理ベクトル、割込ルーチンポインタ、ホストプロセッサの浮動小数点ユニット、ホストコンピュータシステムのメモリを含む、ホストコンピュータシステム内のハードウェアを最大限に利用することが、しばしば有用であり望ましい。しかし、このハードウェアは、通常ホストオペレーティングシステムの制御下にあり、ユーザレベルまたはアプリケーションソフトウェアによるアクセスからは遮蔽されている。例外は、プロセッサによって解決できないコンピュータシステム内で起きるイベントである。割込みとは、他のいくつかのオペレーションを実行するために、現在の命令ストリームに一時的に割り込むためにプロセッサに送信される要求である。
【０００９】
このような困難な点を回避するための１つのオプションが、ホストコンピュータシステムのより低いレベルのハードウェアを使用することを試みないエミュレーションプログラムを用いることである。アプリケーションプログラムとして常駐しホストオペレーティングシステム上で動作するエミュレーションプログラムの場合に、この種のアプローチがしばしば使用される。これらのアプリケーションエミュレーションプログラムは、もちろん、ホストコンピュータシステムのホストオペレーティングシステム上で動作するアプリケーションプログラムであるという性能上の不利益を受けやすい。さらに、これらのアプリケーションエミュレーションプログラムは、ハードウェア機能（ｈａｒｄｗａｒｅ  ｆｅａｔｕｒｅｓ）へのアクセスを得るだけであり、これらのハードウェア機能は、ホストオペレーティングシステムによりアプリケーションエミュレーションプログラムに対しさらされる。一例として、ホストオペレーティングシステム上でアプリケーションとして動作するエミュレーションプログラムが、例外ハンドラを含むことができる。困難な点は、エミュレーションプログラムの例外ハンドラが、いくつかのソフトウェアレイヤによりホストコンピュータシステムのプロセッサから分離されており、そのため、ホストプロセッサが例外を発行する時間と例外がエミュレーションプログラムの例外ハンドラに識別される時間の間に待ち時間が生まれることである。別のオプションは、エミュレーションプログラムによるコンピュータシステムの共有のためのサポートをホストオペレーティングシステムハイパーバイザに書き込むことができるとみなしてエミュレーションプログラムがコンピュータシステムとハードウェアを共用することである。
【００１０】
エミュレートされるコンピューティング環境内でハイパーバイザを使用する場合の別の困難な点が、ハイパーバイザ自体のメモリ空間とともにエミュレートされるコンピュータシステムのメモリ空間を管理することである。エミュレートされるコンピュータシステムのオペレーションを改良するために、ハイパーバイザは一般に、ホストコンピュータシステムのページテーブルがゲストオペレーティングシステムのページテーブルを大部分ミラーリングできるように、ホストコンピュータシステムのページテーブルを操作しようとする。このアプローチの１つの困難な点が、ハイパーバイザコードおよびそれに関連するデータが、ゲストオペレーティングシステムのページテーブルにマッピングされないことである。エミュレートされるコンピュータシステムが、ハイパーバイザがホストコンピュータシステムのハードウェア上でシステムのホストとして働いていることを認識しないため、必ずこのようになる。したがって、ハイパーバイザのページテーブルは、ホストコンピュータシステムのページテーブルと完全には合致しない。ハイパーバイザのページテーブルは、ハイパーバイザ自体のコードおよびデータのマッピングを含んでいる。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ゲストオペレーティングシステムのアドレスマッピングが、ハイパーバイザ自体のコードおよびデータのマッピングされた場所全体に対するアドレスのマッピングを含むことがあるので、ハイパーバイザによるゲストオペレーティングシステムのページテーブルのミラーリングは、ゲストオペレーティングシステムのアドレスマッピングがハイパーバイザのアドレスマッピングと競合する可能性を上げる。ページマッピングの競合というこの問題の１つのソリューションが、ゲストオペレーティングシステムの論理メモリのマッピングが、ハイパーバイザのほぼ同一のページテーブルによって規定されたマッピングと競合する場合に、ゲストオペレーティングシステムのページテーブルを変更することである。しかし、エミュレートされるコンピュータシステムのページテーブルを変更することは、エミュレートされるコンピュータシステムにそのページテーブルへの予期せぬ変更を導入する可能性があり、恐らくゲストオペレーティングシステム内の他の非互換性や障害を導入するという点で望ましくない。
【課題を解決するための手段】
【００１２】
本発明は、コンピュータシステムのプロセッサからホストオペレーティングシステムを論理的に切り離しする（ｄｅｃｏｕｐｌｉｎｇ）ための技術に係わる。本発明の方法によれば、エミュレーションプログラムのハイパーバイザが、プロセッサの１組のプロセッサ設定（ｓｅｔｔｉｎｇ）を読み取る。これらのプロセッサ設定は、ハイパーバイザによって主記憶装置に保存される。ハイパーバイザは、これらのプロセッサ設定をゲストオペレーティングシステムによって提供されるソフトウェアルーチンまたはデータ構造に関連する１組のプロセッサ設定に交換する。これらのソフトウェアルーチンまたはデータ構造は、例外および割込ハンドラルーチンとページテーブルとを有することができる。プロセッサ設定の置換の結果として、ホストオペレーティングシステムは、プロセッサのプロセッサ設定のうちの少なくともいくつかがゲストオペレーティングシステムによって提供されるソフトウェアルーチンまたはデータ構造に関連し、ホストオペレーティングシステムによって提供されるソフトウェアルーチンまたはデータ構造にもはや関連しないという点で、プロセッサ制御から切り離しされている。ホストオペレーティングシステムをプロセッサに再結合させるためには、ハイパーバイザは、保存されたプロセッサ設定をメモリから読み取り、これらのプロセッサ設定をプロセッサの適切なレジスタに書き込む。
【００１３】
ハイパーバイザがプロセッサに結合している期間中は、ハイパーバイザのページテーブルはゲストオペレーティングシステムのページテーブルを大部分ミラーリングするが、ハイパーバイザのページテーブルはハイパーバイザコード自体のマッピングされた場所を含むという主要相違点を有する。ゲストオペレーティングシステムのページテーブルとハイパーバイザのページテーブルの間の競合を回避するためには、ゲストオペレーティングシステムのページテーブルへの変更の結果、ゲストオペレーティングシステム内のマッピングされたメモリ場所が、ハイパーバイザのページテーブル内のハイパーバイザコードのマッピングされた場所にオーバラップする場合に、ハイパーバイザのページテーブルが再割り当てされる。
【００１４】
本明細書に開示されている論理的に切り離し再結合する方法は、ゲストオペレーティングシステムによって提供できるいつくかの機能について、ゲストオペレーティングシステムをプロセッサとより厳密に調整できるようにするという点で有利である。この方式により、例外ハンドラ呼び出し、割込ハンドラ呼び出し、メモリ管理呼び出しが、ゲストオペレーティングシステムに渡される前に、プロセッサからホストオペレーティングシステムに渡される必要がない。むしろ、プロセッサからのこれらの呼び出しは、エミュレーションプログラムのハイパーバイザを介してゲストオペレーティングシステムに直接に渡される。
【００１５】
本明細書に開示されている方法はまた、ハイパーバイザまたはエミュレーションプログラムの切り離しツールが、ホストオペレーティングシステムのソースコードへのアクセスを有する必要がないという点でも有利である。むしろ、ハイパーバイザは、ホストオペレーティングシステムに対してトランスペアレントな方式で、プロセッサからホストオペレーティングシステムを切り離し、それがプロセッサから切り離しまたはそれに再結合していることを認識しない。
【００１６】
本明細書に開示されている方法はまた、たとえホストオペレーティングシステムが、通常ホストオペレーティングシステムによって提供されるいくつかの機能について、プロセッサから切り離ししている場合でも、ホストオペレーティングシステムは、ホストプロセッサの機能の残りの部分については、ホストプロセッサに結合したままであるという点でも有利である。この期間中は、ホストオペレーティングシステムは、引き続きコンピュータシステムのハードウェア機能の多くを管理し、それにより、ゲストオペレーティングシステムがホストオペレーティングシステムを通じてプリント要求をルーティングできるようになる。
【００１７】
ゲストコンピュータシステムとの競合が起きた場合にハイパーバイザのページテーブルを再割り当てすることの利点は、ページテーブルの再割当てにより、ハイパーバイザのページテーブルがゲストオペレーティングシステムのページテーブルを覆い、同時にハイパーバイザ自体のコードをマッピングできるようになることである。この環境においては、ゲストオペレーティングシステムのページテーブルへの変更の結果として、ゲストオペレーティングシステムのページテーブルとハイパーバイザのページテーブルの間の競合が生じない。さらに、ハイパーバイザのページテーブルの再割当ては、ゲストオペレーティングシステムのオペレーションに対してトランスペアレントであり、それにより、ゲストオペレーティングシステム内でシステムレベルの競合が作り出される可能性が回避される。
【００１８】
本発明の他の技術的な利点は、以下の図、説明、特許請求の範囲から当業者には容易に自明となろう。
【発明を実施するための最良の形態】
【００１９】
本発明およびその利点のより完全な理解については、以下の説明を添付図面と合わせて参照することにより得られるであろう。ここで同様の参照番号は、同様の機能を示す。
【００２０】
本発明は、エミュレーションソフトウェアが、ホストコンピュータシステムのより低いレベルのハードウェア構成要素にアクセスできるようにするエミュレーション環境を提供する。本発明は、ホストオペレーティングシステムに対してトランスペアレントであるハイパーバイザを含むエミュレーションプログラムを含む。エミュレーションプログラムのハイパーバイザは、ホストコンピュータシステムの排他的制御からオペレーティングシステムを、短時間、論理的に切断するかまたは切り離し、この時間中、エミュレーションプログラムのハイパーバイザは、ホストコンピュータシステムのハードウェアの制御内に置かれ、それにより、エミュレーションプログラムが、短時間、ホストコンピュータシステムの一定のハードウェア機能に論理的に近くなることができる。
【００２１】
プロセッサのプロセッサ状態は、ある単一の時のプロセッサ設定のすべてのスナップショットである。これらの設定は、プロセッサが操作しているデータとプロセッサによって使用されるプログラムカウンタ、ポインタ、他の操作可能なフラグとを有する。データがプロセッサによって操作され、多くの他のプロセッサ設定がそれぞれのプロセッササイクルで変更することがあるので、プロセッサ状態も同様に、それぞれのプロセッササイクルで変更することがあり、毎秒何百万回も変更することがある。
【００２２】
１サブセットのプロセッサ状態がユーザ状態である。プロセッサによって操作されるデータおよびプロセッサのプログラムカウンタは、まとまってプロセッサのユーザ状態を有する。ユーザ状態は、ユーザ状態を有する値がアプリケーションレベルのプログラムによって操作できるためにその名が付けられている。プロセッサ状態のプロセッサ設定の残りの部分は、プロセッサのスーパバイザ状態または特権状態を有する。スーパバイザ状態の値は、コンピュータシステムのオペレーティングシステムの一部であるソフトウェアによってのみ修正できる。プロセッサ状態のスーパバイザ状態または特権状態の設定は、アプリケーションレベルのプログラムからアクセスできない。アプリケーションレベルのプログラムからアクセス可能なユーザ状態とアプリケーションレベルのプログラムからアクセス可能でないスーパバイザ状態の間のプロセッサ設定の分離により、たとえアプリケーションレベルのプログラムがクラッシュしたり決定的エラーを引き起こした場合でも、オペレーティングシステムは機能し続けることができる。
【００２３】
プロセッサのスーパバイザ状態の設定は、一般に、いくつかのカテゴリのうちの１つに当てはまる。プロセッサのスーパバイザ状態の１つのカテゴリが、プロセッサのモードフラグであり、プロセッサに、一定の計算状況、例外挙動、レガシプログラムのサポート、またはプロセッサのより新しい機能の選択的使用をサポートするためのいくつかのモードの１つに従って動作するよう命令する設定を有する。プロセッサ状態の設定の別のカテゴリが、外部ハードウェアアクセスを制御する設定である。プロセッサが、しばしば、プロセッサと、キャッシュ、メモリ、他の入出力デバイスなどのプロセッサの外部のハードウェアの間の通信のためのいくつかの操作可能な設定をサポートする。たとえば、通信速度や帯域幅を含むこれらの操作可能な設定が、特権レベルまたはスーパバイザレベルのコードによってのみ修正できるので、それらは、プロセッサのスーパバイザ状態の一部と考えられる。
【００２４】
プロセッサの特権状態の設定の別のカテゴリが、例外および割込ルーチンポインタである。プロセッサが例外に遭遇したりまたは割込みを求められた場合は、プロセッサは、現在のプログラムカウンタアドレスで実行を停止し、所定の例外ルーチンアドレスで実行を開始する。これらの例外ルーチンの場所は、例外ルーチンポインタの使用を通じて識別される。いくつかのプロセッサについては、例外ルーチンは、ハードコードされたメモリアドレスに置かれる。しかし、ほとんどのプロセッサ上では、それらの場所はプログラム可能であり、それらの場所の値は、プロセッサのスーパバイザ状態の一部であると考えられる。
【００２５】
１組のデータ構造ポインタが、プロセッサの特権状態の別のカテゴリを構成する。プロセッサ状態のいくつかのデータ構造は大きすぎてプロセッサ内に格納できないので、これらのデータ構造は主記憶装置内に格納され、データ構造に対するポインタがプロセッサに格納される。この種の大きなデータ構造の一例が、プロセッサのページテーブルである。これらのテーブルが、プロセッサのために、物理メモリ場所への仮想メモリアクセスの変換に必要なメモリアドレスの論理から物理への翻訳を定義する。プロセッサに格納される、ページテーブルとページテーブルに対するポインタの両方が、プロセッサのスーパバイザ状態の一部であると考えられる。主記憶装置内に格納されるプロセッサのスーパバイザ状態のデータ構造の別の例が、例外ルーチンポインタテーブルである。プロセッサにそれぞれの例外ルーチンのためのポインタを格納するよりはむしろ、プロセッサに格納された単一のポインタが、例外ルーチンポインタのテーブルを指し示すことができる。例外ポインタまたはベクトルテーブルは、プロセッサからアクセス可能な例外ハンドラに対するアドレスポインタのリスティングを有する。プロセッサに格納される例外ルーチンポインタと例外ルーチンポインタテーブルの両方が、スーパバイザ状態の一部であると考えられる。
【００２６】
ホストオペレーティングシステムは、一般に、プロセッサのために、例外および割込ハンドラルーチンに対するベクトルまたはポインタを確立する。たとえば、プロセッサが、プロセッサにゼロによる除算をさせる１組のコマンドを処理するよう命令された場合に、プロセッサは、ゼロによる除算の例外を扱う例外ハンドラルーチンを呼び出す。そうすることにより、プロセッサは、プロセッサに格納されたベクトルによって指し示された例外ハンドラルーチンを呼び出すことができる。代わりに、プロセッサは、例外条件のための正しい例外ハンドラのための例外ベクトルテーブルをスキャンし、次いで、適用可能な例外ハンドラに関連する例外ベクトルまたはポインタを使用して例外ハンドラを呼び出すことができる。
【００２７】
ホストオペレーティングシステムがホストプロセッサの論理制御内にある場合は、ホストオペレーティングシステムは、ホストプロセッサのために、ホストプロセッサが必要としそれによってサポートされている例外ベクトルおよび他のすべてのベクトルを定義する。プロセッサが例外条件に遭遇したり、またはページテーブルルーチンやページテーブルベクトルなどのベクトルによって参照される別のルーチンにアクセスする必要がある場合には、プロセッサは、ホストオペレーティングシステムの例外ハンドラを実行する。
【００２８】
エミュレートされるコンピュータシステムの場合は、エミュレーションプログラムが、ホストコンピュータシステム内にエミュレートされるオペレーティング環境を提供する。図１は、コンピュータシステム１０内のエミュレートされるオペレーティング環境のためのハードウェアおよびソフトウェアアーキテクチャの論理レイヤを示す図である。エミュレーションプログラム１４が、ホストコンピュータシステムハードウェアまたはプロセッサ１１上で実行するホストオペレーティングシステム上を動作する。エミュレーションプログラム１４が、ゲストオペレーティングシステム１８を含むゲストコンピュータシステム１６をエミュレートする。ゲストアプリケーションプログラムが、ゲストオペレーティングシステム１８上で実行できる。図１のエミュレートされるオペレーティング環境においては、エミュレーションプログラム１４のオペレーションのために、たとえゲストアプリケーション２０が一般にホストオペレーティングシステム１２およびホストコンピュータシステムハードウェア１１とは互換性のないオペレーティングシステム上を動作するよう設計されていたとしても、ゲストアプリケーション２０はコンピュータシステム１０上を動作できる。図１のアーキテクチャにおいては、ゲストオペレーティングシステム１８が、ホストオペレーティングシステム１２を含む、いくつかの論理およびソフトウェアレイヤを介してホストコンピュータシステムハードウェア１１から分離されている。この論理的分離により、ゲストオペレーティングシステムがホストコンピュータシステムハードウェア１１と直接に通信することを試みる場合に、待ち時間および性能上の困難が導入される。
【００２９】
図１の例では、ホストオペレーティングシステム１２が、ホストコンピュータシステムのプロセッサを含むホストコンピュータシステムハードウェア１１の排他的動作制御内にある。ホストオペレーティングシステムは、ホストコンピュータシステムのプロセッサのために、プロセッサ状態のいくつかの設定を確立している。たとえば、ホストオペレーティングシステム１２は、ホストプロセッサのベクトルテーブル内またはレジスタ内に置かれている１組の例外ハンドラベクトル、１組の割込ハンドラ、ページテーブルベクトルを確立した可能性がある。したがって、プロセッサが例外ハンドラ呼び出し割込ハンドラ呼び出し、またはメモリ管理呼び出しをした場合は、これらの呼び出しのためのプロセッサ設定が、ホストオペレーティングシステムによって排他的ベースで提供される。ホストオペレーティングシステムが、プロセッサのスーパバイザまたは特権状態の設定を確立したので、ホストオペレーティングシステムは、ホストコンピュータシステムのプロセッサの論理制御内にあると言える。
【００３０】
本発明のエミュレーション技術によれば、エミュレーションプログラム自体は、プロセッサおよび他のホストコンピュータシステムハードウェア１１の排他的制御からホストオペレーティングシステムを論理的に切断するかまたは切り離しすることのできるハイパーバイザを有する。エミュレーションプログラム１４のハイパーバイザは、ホストプロセッサによって使用されるベクトルおよび他のアドレスポインタを読み取り、それをメモリ場所内に保存することにより論理切断ステップを達成する。ホストコンピュータシステムの排他的制御からホストオペレーティングシステムを論理的に切断し、エミュレーションプログラムのハイパーバイザをホストコンピュータシステムに論理的に接続するかまたは結合するためにハイパーバイザによってとられるステップの流れ図が、図２に示されている。エミュレーションプログラムのハイパーバイザが、プロセッサのプロセッサ設定のうちの少なくともいくつかに対する制御を表明したい場合は、ハイパーバイザは、ステップ２４で、プロセッサのスーパバイザまたは特権状態の設定のうちのいくつかまたはすべてを読み取る。本発明の一実施形態によれば、プロセッサは、例外ベクトルまたは例外ベクトルテーブルに対するポインタ、割込ポインタまたは割込ルーチンテーブルに対するポインタ、ページテーブルに対するポインタを含む、プロセッサの適用可能なレジスタからアドレスポインタを読み取る。ステップ２６で、ハイパーバイザは、ホストプロセッサ上のそれらに関連する記憶装置場所の識別とともにこれらのプロセッサ設定をメモリに保存する。次いで、ハイパーバイザは、ステップ２８で、ゲストオペレーティングシステムのユーザレベルのプロセッサ状態およびエミュレーションプログラムのハイパーバイザの特権レベル状態を置換する。その結果、ホストプロセッサのプロセッサ設定は、ゲストオペレーティングシステムのユーザレベルのプロセッサ状態と、エミュレーションプログラムのハイパーバイザに関連する特権レベル状態との組み合わせと交換される。そうすることによりハイパーバイザは、プロセッサの適切なレジスタ内に、例外ハンドラに対するベクトルおよび他のアドレスポインタ、割込ルーチン、エミュレーションプログラムのハイパーバイザおよびゲストオペレーティングシステムのページマップを格納する。
【００３１】
エミュレーションプログラムのハイパーバイザによって置換されたプロセッサ設定が、スーパバイザまたは特権レベルの設定であるので、エミュレーションプログラムのハイパーバイザは、置換されたプロセッサ設定のすべてについてプロセッサの論理制御を有する。この方式により、エミュレートされるコンピュータシステムは、置換されたプロセッサ設定によって統治される機能について、論理的にホストコンピュータシステムのハードウェア機能の制御内にある。プロセッサ設定の置換後のエミュレーションプログラム１４の論理関係の図が、図３に示されている。図３のハイパーバイザ２２が、エミュレーションプログラム１４の１つの構成要素として示され、プロセッサおよびホストハードウェア１１への論理通信リンクを有するものとして示されている。
【００３２】
ホストハードウェア１１のエミュレーションプログラムの論理制御の一例として、例外がこの時間中に起きる場合は、プロセッサは、エミュレーションプログラムのハイパーバイザによって提供される例外ハンドラを呼び出す。同様に、プロセッサが、仮想メモリアドレスを物理メモリアドレスに翻訳するよう呼び出される場合は、プロセッサは、ゲストオペレーティングシステムに関連するページテーブルにアクセスする。したがって、プロセッサ状態の多くの設定が交換されて、その結果、プロセッサは、ゲストオペレーティングシステムによって直接提供されるソフトウェアまたはデータ構造を呼び出すかまたはそれにアクセスしている。そのことにより、ゲストオペレーティングシステムが、コンピュータシステムのプロセッサとより厳密に論理的に調整できるようになり、ホストオペレーティングシステム全体にわたってコンピュータシステムのプロセッサからゲストオペレーティングシステムを分離することにより引き起こされる待ち時間がなくなる。例外の場合は、ハイパーバイザの例外ハンドラは例外自体を扱うことができるか、またはハイパーバイザの例外ハンドラはゲストオペレーティングシステムの例外ハンドラを起動でき、それにより、ゲストオペレーティングシステムは、例外呼び出しをホストオペレーティングシステムソフトウェアレイヤを通じて通過させる必要がなく、例外を直接扱うことができるようになる。
【００３３】
図３に示されるように、ホストオペレーティングシステム１２は、ホストコンピュータシステムのハードウェアから永久に切断されているわけではない。１組のプロセッサ設定を介してハイパーバイザによって表明された論理制御の結果、ハイパーバイザ２２が、コンピュータシステム内のすべてのハードウェアインタラクションに対する責任を負うことにはならない。ホストオペレーティングシステムがコンピュータシステムのハードウェアに関係する機能要求を処理している時間中は、ホストオペレーティングシステムは、コンピュータシステムの論理制御内でなければならない。このことを達成するためには、ホストオペレーティングシステムは、一時的にコンピュータシステムのハードウェアに論理的に再結合しなければならない。いったんホストオペレーティングシステムがエミュレーションプログラムによって要求された機能を完了すると、エミュレーションプログラムは、エミュレーションプログラムのプロセッサ設定に関連する例外および割込ハンドラに対するその論理制御を再開できる。
【００３４】
図２の流れ図に関して、ステップ３０で、ハイパーバイザ２２が、プロセッサ設定に対する論理制御をホストオペレーティングシステムに返す。ハイパーバイザ２２が、メモリに保存されているベクトルおよび他のポインタをメモリから検索する。これらのアドレスは、適切なレジスタ場所に再び書き込まれ、これらのプロセッサ設定に対する論理制御をホストオペレーティングシステムに返す。ホストオペレーティングシステムがプロセッサから論理的に切断されている時間中は、ホストオペレーティングシステム１２の論理切断は、ホストオペレーティングシステム１２にとって明らかではない。ホストオペレーティングシステム１２は、１組のプロセッサ設定が置換され、その結果、いくつかのハードウェア機能のための論理制御がエミュレーションプログラムへ転送されたことを認識していない。論理制御がホストオペレーティングシステム１２に返された場合は、ホストオペレーティングシステム１２は、同様に、１組のハードウェア呼び出しの論理制御がそれに返されたことも認識していない。
【００３５】
エミュレーションプログラムによる、ホストオペレーティングシステムを通じて濾過される、例外、割込み、メモリ管理機能の処理のオプションと比べて、プロセッサスーパバイザ状態のプロセッサ設定のうちのいくつかの置換の結果として、エミュレーションプログラムによる性能ゲインが生じる。エミュレーションプログラムが、ホストオペレーティングシステム上に常駐するアプリケーションプログラムとして動作する場合においては、プロセッサの機能に対する排他的制御からホストオペレーティングシステムを論理的に切断することは、エミュレートされるコンピュータシステムのための性能上の利点である。いったんホストオペレーティングシステムがプロセッサの機能のうちの少なくともいくつかから論理的に切り離しされると、エミュレーションプログラムは、ホストオペレーティングシステムのプロセッサ設定の代わりにそのプロセッサ設定を置換することにより、ホストプロセッサとはるかにより厳密に動作できる。いったんプロセッサ設定が置換されると、エミュレーションプログラムは、プロセッサにエミュレーションプログラムの別々の組の例外ベクトル、割込ルーチン、ページテーブルに指示でき、それにより、ホストオペレーティングシステムがエミュレーションプログラムからプロセッサを分離させた場合に起きる待ち時間の問題を回避できる。
【００３６】
本発明のハイパーバイザの割込みおよび例外処理機能により、ゲストオペレーティングシステムによって予想される例外および割込みの処理も可能となる。オペレーティングシステムが、これらの例外を例外によって開始されたアプリケーションに渡すことなく、オペレーティングシステムレベルで一定の例外を扱うことを選ぶことができる。一例が、ゼロによる除算の例外であり、これはしばしば、例外によって開始されたアプリケーションプログラムに渡されることなく、オペレーティングシステムによって扱われる。エミュレーションプログラムのハイパーバイザは、ハイパーバイザ内で例外ハンドラを開始する必要がなく、引き続き例外をゲストオペレーティングシステムに渡すことができる。したがって予想されるように、ゲストアプリケーションプログラムにより、置換されたプロセッサ設定に関してエミュレーションプログラムがプロセッサの論理制御内である時にゼロによる除算の例外が開始された場合に、エミュレーションプログラムのハイパーバイザは、例外をゲストオペレーティングシステムに渡すことができる。
【００３７】
図４は、ゲストオペレーティングシステムのページテーブルをマッピングするための方法を示す流れ図である。ステップ４０で、ハイパーバイザは、ゲストオペレーティングシステムのページテーブルへの書込みを識別する。ステップ４２で、ハイパーバイザは、ゲストオペレーティングシステムのページテーブルへの書込みの結果、ゲストオペレーティングシステムのページテーブルとハイパーバイザのページテーブルの間の競合をマッピングすることが生じるかどうか判断する。ハイパーバイザのページテーブルは、ゲストオペレーティングシステムのページテーブルを厳密にミラーリングするが、ハイパーバイザのページテーブルがハイパーバイザのコードおよびデータをそのページテーブルにマッピングするという主要相違点を有する。ハイパーバイザは、たとえば、ゲストオペレーティングシステムのページテーブル内のマッピングされたページが、ハイパーバイザ内のページテーブル内のハイパーバイザのマッピングされた場所にオーバラップしている場合に、競合があると判断する。
【００３８】
ハイパーバイザが、ゲストオペレーティングシステムのページテーブルへの変更によって引き起こされた競合がないと判断した場合は、ハイパーバイザのページテーブルへの変更は必要ではない（ステップ４４）。ハイパーバイザが、ゲストオペレーティングシステムのページテーブルへの変更により、ホストコンピュータシステムのページテーブルとの競合が起きると判断した場合は、ハイパーバイザは、ステップ４６でそのページテーブルを再割り当てし、その結果、ハイパーバイザ自体のコードおよびデータは、ハイパーバイザのページテーブル内の別の場所に移動するかまたはマッピングされる。ゲストオペレーティングシステムのページテーブルへの変更を識別し、必要ならば、それに応答してハイパーバイザのページテーブルを再割り当てするこのプロセスは、ゲストオペレーティングシステムのオペレーションに対してトランスペアレントである。必要な場合に、いったんハイパーバイザのページテーブルが再割り当てされると、ゲストオペレーティングシステムのページテーブルは、もはやハイパーバイザのページテーブルと競合しない。
【００３９】
本発明は、その適用が、特定のコンピュータシステムアーキテクチャ、特にＩｎｔｅｌ８０Ｘ８６アーキテクチャのエミュレーションに限定されるものではない。むしろ、本明細書に開示されているエミュレーション技術は、プロセッサのプロセッサ設定のうちの少なくともいくつかに関して、ホストオペレーティングシステムがプロセッサからトランスペアレントに切断されていることが望ましい場合はいつでも適用可能である。
【００４０】
本発明を詳細に説明してきたが、頭記の特許請求の範囲に定義した本発明の趣旨および範囲から逸脱することなく、本発明にさまざまな変更、代替、改変を行うことができることを理解されたい。
【図面の簡単な説明】
【００４１】
【図１】ホストコンピュータシステム内を動作するエミュレートされるコンピュータシステムの素子の論理関係を示す図である。
【図２】エミュレーションプログラムのハイパーバイザをコンピュータシステムのプロセッサに論理的に結合するための方法を示す流れ図である。
【図３】ハイパーバイザがコンピュータシステムのプロセッサに論理的に結合されているエミュレートされるコンピュータシステムの素子の論理関係を示す図である。
【図４】ゲストオペレーティングシステムのページテーブルをマッピングするための方法を示す流れ図である。
【図１】
2004531788.tif 000003
【図２】
2004531788.tif 000004
【図３】
2004531788.tif 000005
【図４】
2004531788.tif 000006
【国際公開パンフレット】
2004531788.tif 000007
2004531788.tif 000008
2004531788.tif 000009
2004531788.tif 000010
2004531788.tif 000011
2004531788.tif 000012
2004531788.tif 000013
2004531788.tif 000014
2004531788.tif 000015
2004531788.tif 000016
2004531788.tif 000017
2004531788.tif 000018
2004531788.tif 000019
2004531788.tif 000020
2004531788.tif 000021
2004531788.tif 000022
2004531788.tif 000023
2004531788.tif 000024
2004531788.tif 000025
2004531788.tif 000026
2004531788.tif 000027
2004531788.tif 000028
2004531788.tif 000029
2004531788.tif 000030
2004531788.tif 000031
2004531788.tif 000032
2004531788.tif 000033
2004531788.tif 000034
2004531788.tif 000035
【国際公開パンフレット（コレクトバージョン）】
2004531788.tif 000036
2004531788.tif 000037
【国際調査報告】
2004531788.tif 000038
2004531788.tif 000039