(57)【要約】  本発明の様々な実施態様は、拡張割込み制御装置（ＡＩＣ）と、より豊富な割込み情報（または「合成割込み」または「ＳＩ」）を提供する合成割込みソース（ＳＩＳ）とに関する。ＡＩＣおよびＳＩＳは、割込み、特に仮想マシンにより送受信される割込みを送受信する効率的な手段を提供する。これらの実施態様の一部は特に、入力割込みに関連する追加情報を受信し、配信するよう拡張した割込み制御装置に関する。そのようなある実施態様では、割込み制御装置のメモリマップ拡張は、割込み配信の一部として追加情報を投入されるデータ構造を含む。明細書において説明される実施態様の一部は、仮想マシンシステムのコンテキストで開示されるが、明細書において開示される発明は、（仮想化層がない）従来のコンピュータシステムにも同様に適用することができる。
2008535099.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおける拡張割込み制御の方法であって、
割込み信号と割込み情報の両方を、割込み制御装置とその対応するプロセッサコアに送信する割込みソースを含むこと
を特徴とする方法。
【請求項２】
前記割込み情報は、次の要素群、すなわち、前記割込みソースの識別、および前記割込みの理由のうちの少なくとも１つの要素を含むこと
を特徴とする請求項１に記載の方法。
【請求項３】
前記割込み制御装置および前記対応するプロセッサコアは、前記割込み情報を使用して、次の複数のタスク、すなわち、前記割込みソースを識別すること、および前記割込みの理由を確認することのうちの１つのタスクを実行する任意のデバイスをポーリングすることなく、処理する前記割込みを優先順位付けすること
を特徴とする請求項２に記載の方法。
【請求項４】
前記割込みは、対応するプロセッサコアの関与なくローカルＡＰＩＣ（advanced programmable interrupt controller）によって優先順位付けされること
を特徴とする請求項３に記載の方法。
【請求項５】
前記割込み情報は、前記割込みソースから、共用メモリロケーションを介して前記割込み制御装置または前記プロセッサコアに通信されること
を特徴とする請求項３に記載の方法。
【請求項６】
前記割込みソース、前記割込み制御装置、または前記対応プロセッサコアのうちの少なくとも１つは、仮想マシン環境内の仮想化ソフトウェア表現であること
を特徴とする請求項３に記載の方法。
【請求項７】
コンピュータシステム内の拡張割込み制御に関するシステムであって、
割込み制御装置および対応するプロセッサコア、および、
割込み信号および割込み情報の両方を、前記割込み制御装置および前記対応プロセッサコアに送信する割込みソース
を含むことを特徴とするシステム。
【請求項８】
前記割込み情報は、次の要素群、すなわち、前記割込みソースの識別、および前記割込みの理由のうちの少なくとも１つの要素を含むこと
を特徴とする請求項７に記載のシステム。
【請求項９】
前記割込み制御装置および前記対応プロセッサコアは、前記割込み情報を使用して、次の複数のタスク、すなわち、前記割込みソースを識別すること、および前記割込みの理由を確認することのうちの１つのタスクを実行する任意のデバイスをポーリングすることなく、処理する前記割込みを優先順位付けすること
を特徴とする請求項８に記載のシステム。
【請求項１０】
前記割込みは、対応するプロセッサコアの関与なくローカルＡＰＩＣ（advanced programmable interrupt controller）によって優先順位付けされること
を特徴とする請求項９に記載のシステム。
【請求項１１】
共用メモリロケーションをさらに含み、前記割込み情報は、前記割込みソースから、前記共用メモリロケーションを介して前記割込み制御装置または前記プロセッサコアに通信されること
を特徴とする請求項９に記載のシステム。
【請求項１２】
前記割込みソース、前記割込み制御装置、または前記対応プロセッサコアのうちの少なくとも１つは、仮想マシン環境内の仮想化ソフトウェア表現であること
を特徴とする請求項９に記載のシステム。
【請求項１３】
コンピュータシステムにおける拡張割込み制御用のコンピュータ読取可能命令を含むコンピュータ読取可能媒体であって、前記コンピュータ読取可能命令は、割込み信号および割込み情報の両方を割込み制御装置およびその対応するプロセッサコアに送信する割込みソースについての命令を含むこと
を特徴とするコンピュータ読取可能媒体。
【請求項１４】
命令をさらに含み、それにより前記割込み情報が、次の要素群、すなわち、前記割込みソースの識別、および前記割込みの理由のうちの少なくとも１つを含むこと
を特徴とする請求項１３に記載のコンピュータ読取可能媒体。
【請求項１５】
命令をさらに含み、それにより前記割込み制御装置および前記対応するプロセッサコアは、前記割込み情報を使用して、次の複数のタスク、すなわち、前記割込みソースを識別すること、および前記割込みの理由を確認することのうちの１つのタスクを実行する任意のデバイスをポーリングすることなく、処理する前記割込みを優先順位付けすること
を特徴とする請求項１４に記載のコンピュータ読取可能媒体。
【請求項１６】
命令をさらに含み、それにより前記割込みは、対応プロセッサコアの関与なくローカルＡＰＩＣ（advanced programmable interrupt controller）によって優先順位付けされること
を特徴とする請求項１５に記載のコンピュータ読取可能媒体。
【請求項１７】
命令をさらに含み、それにより前記割込み情報は、前記割込みソースから共用メモリロケーションを介して前記割込み制御装置または前記プロセッサコアに通信されること
を特徴とする請求項１５に記載のコンピュータ読取可能媒体。
【請求項１８】
命令をさらに含み、それにより前記割込みソース、前記割込み制御装置、または前記対応プロセッサコアのうちの少なくとも１つは、仮想マシン環境内の仮想化ソフトウェア表現であること
を特徴とする請求項１５に記載のコンピュータ読取可能媒体。
【請求項１９】
コンピュータシステム内の拡張割込み制御を実装するハードウェア制御デバイスにおいて、
割込み信号および割込み情報の両方を割込み制御装置およびその対応するプロセッサコアに送信する割込みソースであって、前記割込み情報は、次の要素群、すなわち、前記割込みソースの識別、および前記割込みの理由のうちの少なくとも１つの要素を含むことを特徴とする割込みソース、および、
前記割込み情報を使用して、次の複数のタスク、すなわち、前記割込みソースを識別すること、および前記割込みの理由を確認することのうちの１つのタスクを実行する任意のデバイスをポーリングすることなく、処理する前記割込みを優先順位付けする前記割込み制御装置および対応するプロセッサコア
のための手段を含むことを特徴とするハードウェア制御デバイス。
【請求項２０】
前記割込み情報を、前記割込みソースから共用メモリロケーションを介して前記割込み制御装置または前記プロセッサコアに通信するための手段をさらに含むことを特徴とする請求項１９に記載のハードウェア制御デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、割込み制御装置の分野に関し、特に、仮想マシン（「プロセッサの仮想化」としても知られる）で使用する割込み制御装置に関する。より詳細には、本発明は仮想マシン環境で使用する拡張割込み制御装置、および前記拡張割込み制御装置が使用する豊富な割込み情報を含む合成割込みソースに関する。
【背景技術】
【０００２】
コンピュータは、特定のシステム命令セットを実行するように設計された汎用の中央演算装置（ＣＰＵ）を含む。同様なアーキテクチャまたは設計仕様を有するプロセッサ群は同一プロセッサファミリのメンバーであると考えることができる。最近のプロセッサファミリの例には、アリゾナ州フェニックスにあるモトローラ社製のＭｏｔｏｒｏｌａ６８０Ｘ０プロセッサファミリ、カリフォルニア州サニーベールにあるインテル社製のＩｎｔｅｌ８０Ｘ８６プロセッサファミリ、および、カリフォルニア州クパチーノにあるアップルコンピュータ社製のコンピュータで使用されている、モトローラ社製のＰｏｗｅｒＰＣプロセッサファミリがある。同様なアーキテクチャおよび同様な設計概念であるという理由で、プロセッサ群は同一ファミリとすることができるが、プロセッサは、そのクロック速度および他の性能パラメータに従ってファミリ内部で大きく異なってもよい。
【０００３】
それぞれのマイクロプロセッサファミリは、そのプロセッサファミリ独自の命令を実行する。プロセッサまたはプロセッサファミリが実行可能な命令の集合セットは、そのプロセッサの命令セットとして知られている。例えば、Ｉｎｔｅｌ８０Ｘ８６プロセッサファミリが使用する命令セットは、ＰｏｗｅｒＰＣプロセッサファミリが使用する命令セットと互換性がない。Ｉｎｔｅｌ８０Ｘ８６命令セットは、複合命令セットコンピュータ（ＣＩＳＣ）形式を基本とする。また、モトローラのＰｏｗｅｒＰＣ命令セットは、縮小命令セットコンピュータ（ＲＩＳＣ）形式を基本とする。ＣＩＳＣプロセッサは多数の命令を使用し、その命令の中には複雑な機能を実行することができるものもあるが、実行には一般に、多数のクロックサイクルが必要である。ＲＩＳＣプロセッサは利用可能な命令をより少なく使用して、非常に高速で実行される、より単純な機能セットを実行する。
【０００４】
コンピュータシステム間でのプロセッサファミリの独自性のため、典型的にはコンピュータシステムのハードウェアアーキテクチャのその他の要素間でも互換性がなくなる。Ｉｎｔｅｌ８０Ｘ８６プロセッサファミリのプロセッサを用いて製造されたコンピュータシステムは、ＰｏｗｅｒＰＣプロセッサファミリのプロセッサを用いて製造されたコンピュータシステムのハードウェアアーキテクチャとは異なるハードウェアアーキテクチャを有することになる。プロセッサの命令セットおよびコンピュータシステムのハードウェアアーキテクチャの独自性により、アプリケーションのソフトウェアプログラムは、典型的には特定のオペレーティングシステムを実行する特定のコンピュータシステム上で動作するように記述される。
【０００５】
プロセッサの仮想化（Processor Virtualization）
コンピュータの製造業者は、自身の製品ラインに関わるマイクロプロセッサファミリ上でより多くのアプリケーションを実行させることで、自身のマーケットシェアの最大化を望んでいる。コンピュータシステム上で実行可能なオペレーティングシステムとアプリケーションプログラムの数を増やすために、ある技術分野が開発された。この技術分野においては、ホストと称されるある種のＣＰＵを有する所与のコンピュータが、エミュレータプログラムを含み、このエミュレータプログラムにより、ホストコンピュータがゲストと称される別の種類のＣＰＵの命令をエミュレートすることが可能になる。従って、ホストコンピュータは、所与のゲスト命令に応答して１つまたは複数のホスト命令を呼んでくるアプリケーションを実行する。従って、ホストコンピュータは、自身のハードウェアアーキテクチャ向けに設計されたソフトウェアと、別のハードウェアアーキテクチャを有するコンピュータ向けに記述されたソフトウェアとの両方を実行することができる。より詳細な例として、アップルコンピュータ製のコンピュータシステムは、例えば、ＰＣベースのコンピュータシステム向けに記述されたオペレーティングシステムとプログラムを実行することができる。エミュレータプログラムを使用して、単一のＣＰＵ上で互換性のない複数のオペレーティングシステムを同時に動作させることも可能である。このように、各オペレーティングシステムは他のオペレーティングシステムと互換性がないにもかかわらず、エミュレータプログラムが２つのオペレーティングシステムのうちの１つをホストとすることができ、互換性のないオペレーティングシステムを同一のコンピュータシステム上で同時に動作させることができる。
【０００６】
ゲストコンピュータシステムがホストコンピュータシステム上でエミュレートされる場合、ゲストコンピュータシステムは、ある特定のハードウェアアーキテクチャの動作の純粋なソフトウェア表現として、ホストコンピュータシステムにのみ存在するので、ゲストコンピュータは「仮想マシン」であると呼ばれる。エミュレータ、仮想マシン、およびプロセッサエミュレーションという用語は、時々同じ意味として使用され、コンピュータシステム全体のハードウェアアーキテクチャを模倣またはエミュレートする能力を表す。例えば、カリフォルニア州サンマテオにあるコネクティックス社（Ｃｏｎｎｅｃｔｉｘ  Ｃｏｒｐｏｒａｔｉｏｎ）製のＶｉｒｔｕａｌＰＣソフトウェアは、Ｉｎｔｅｌ８０Ｘ８６のＰｅｎｔｉｕｍ（登録商標）プロセッサ、様々なマザーボード要素およびカードを含むコンピュータ全体をエミュレートする。これらのコンポーネントの動作は、ホストマシン上で実行中の仮想マシンにおいてエミュレートされる。ＰｏｗｅｒＰＣプロセッサを有するコンピュータシステムのようなホストコンピュータのオペレーティングシステムソフトウェアおよびハードウェアアーキテクチャ上で動作するエミュレータプログラムは、ゲストコンピュータシステム全体の動作を模倣する。
【０００７】
エミュレータプログラムは、ホストマシンのハードウェアアーキテクチャと、エミュレート環境内で動作するソフトウェアによって伝送される命令との間の交信を行う。このエミュレート環境は、仮想マシンモニタ（ＶＭＭ）により生成される。この仮想マシンモニタは、ハードウェア上で直接動作するソフトウェア層であり、ＶＭＭが仮想化しているハードウェアと同じインタフェースを公開することによって、全ての機械リソースを仮想化する（それにより、ＶＭＭ上で実行中のオペレーティングシステム層はＶＭＭへの配慮が不要となる）。この構成では、ホストオペレーティングシステム（ＨＯＳ）およびＶＭＭを、同一の物理ハードウェア上で並列に実行することができる。あるいは、エミュレータプログラムは、物理コンピュータハードウェア上で直接動作し、もう一方のハードウェア構成をエミュレートするＨＯＳ自身であってもよい。この実施態様の特定の実装では、ＨＯＳソフトウェアは特に、「ハイパーバイザ（hypervisor）」の一実施態様を含むことができる。
【０００８】
ハイパーバイザは制御プログラムであり、ＨＯＳのカーネルレベル近傍に存在し、ＨＯＳ以外の１つまたは複数のセカンダリオペレーティングシステムがコンピュータシステムの物理プロセッサを含むコンピュータシステムのハードウェアを使用できるように動作する。ハイパーバイザはセカンダリオペレーティングシステム用の動作環境をエミュレートし、その結果、セカンダリオペレーティングシステムは、実際は別のハードウェアおよび／またはオペレーティングシステム環境で動作し、ＨＯＳがコンピュータシステムの論理的な制御下にあったとしても、自身の通常のハードウェアおよび／またはオペレーティングシステム環境で動作し、コンピュータシステムの論理制御下にあると信じる。これは、重要なことである。なぜならば、多くのオペレーティングシステムは、自身がコンピュータシステムのハードウェアの排他的かつ論理的な制御下にあるかのように動作せざるをえないからである。従って、複数のオペレーティングシステムが単一のコンピュータシステム上で同時に機能するために、それぞれのオペレーティングシステムのハイパーバイザは他のオペレーティングシステムの存在を隠蔽するよう機能し、各オペレーティングシステムは自身がコンピュータシステム全体に対して排他的制御を有するかのように機能しなければならない。
【０００９】
簡単のため、これらに限らないが、ＶＭＭおよびハイパーバイザを含むプロセッサの仮想化プログラムを、本明細書では「バーチャライザ（virtualizers）」と総称する。さらに、ハイパーバイザのコンテキストにおいて本明細書で開示する本発明の任意の態様は、ＶＭＭ（または他のバーチャライザ）についても等しく有効であり、かつ開示されることが推定され、その逆もまた同様である。
【００１０】
割込み制御装置（Interrupt Controllers）
当技術分野の技術者に公知であり理解されるように、一般的なコンピュータシステム（例えば、単一のオペレーティングシステムを実行する物理ハードウェア）において、ハードウェア装置（ネットワークカード、プリンタ、他の周辺装置等）は割込みを通して、それぞれのプロセッサコア上で実行されるプロセッサコアのソフトウェアと通信する。しかしながら、各プロセッサコアとシステム内の他のハードウェアとの間に数種類の相互作用があるが、コアの外側から開始されたそのような相互作用の全ては、単一の単純な割込み配信メカニズムを通る。さらに、従来のシステムでは割込みベクトル数は非常に制限されるので、それぞれのグループに対する単一の共通割込みの下にイベントをグループ化する必要がある。従って、プロセッサコアのソフトウェアが割込みを受信するときは、既存の割込み配信メカニズムは割込みソースまたは割込み要因を確実に識別することを一般に想定していないため、割込みの要因およびコンテキストを判定するのに数ステップを必要とする。さらに、単一の割込みが単一の物理または仮想装置から数個の同様なイベントのうちの１つだけを示す可能性もある。例えば、より高次の抽象層で実装されたメッセージングシステムは、高性能であるために何百または何千もの個別にアドレス指定可能な信号が必要となる可能性があり、コアプロセッサのソフトウェアはどのアドレス指定可能な信号がこれらの種類の装置から受信した割込みに対応するかを判定しなければならない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
システムがハイパーバイザ、ＶＭＭ、または他のマシン仮想化技術（まとめて「バーチャライザ」と呼ぶ）上で実行されるとき、仮想装置がパーティション（仮想マシンのインスタンス）に提供するサービスは、一般に典型的なコンピュータシステム内のハードウェア装置と同じ割込みメカニズムを介してそのパーティションに信号を送信する。しかしながら、仮想マシン環境では、仮想マシンに関する装置が仮想化されるだけでなく、各仮想マシン用のプロセッサコアも仮想化される。結果として、そのような仮想化されたプロセッサコアの各々に対するコアプロセッサソフトウェアはさらに複雑になる。これは、コアプロセッサソフトウェアがバーチャライザ（例えば、ハイパーバイザまたはＶＭＭ）と通信して、ハードウェア装置および仮想装置（後者はソフトウェアとしてのみ存在する）の両方が生成可能な割込みを実際に処理しなければならないという事実による。既存の割込み配信メカニズムは一般に、割込みソース、特にソフトウェアが生成する割込みソースを確実に識別することを想定していないため、仮想化環境において割込みソースと割込みの本質とを識別するために必要なプロセッサリソースが大量に費やされる。さらに、割込みに関連するデータはハードウェアおよびシステムソフトウェアに対して広くアクセス可能でなければならず、相互に信頼できないシステムソフトウェアの複数の実体をバーチャライザがホストするような一般的環境下では、信頼できる配信は困難である。（このような環境下では、全てのパーティションが同一の割込み管理の枠組みに入る場合でも、割込みに伴い情報をパーティションに押し込む必要があり、これらの割込みに関連する任意の情報を近傍のパーティションの悪質なオペレーティングシステムから保護する必要がある。）
【００１２】
結果として、割込みは各ＶＭ内の数個の異なるソース（ハードウェアおよびソフトウェアソースの両方を含む）から来る可能性があり、その多くはハードウェアバス上の装置より「さらに離れている」（従って、完了するのにより多数の物理プロセッササイクルを要する）ため、当技術分野で必要なものは、マシン仮想化システムの性能と実用性を高めるために、より多くの情報を含む、より豊富な割込み配信メカニズムである。
【課題を解決するための手段】
【００１３】
本発明の様々な実施態様は拡張割込み制御装置（ＡＩＣ）と、より豊富な割込み情報（または「合成割込み」または「ＳＩ」）を提供する合成割込みソース（ＳＩＳ）に関する。ＡＩＣおよびＳＩＳは、割込み、特に仮想マシンに送信され、仮想マシンにより受信される割込みを送受信する効率的な手段を提供する。これらの実施態様のうちの一部は特に、入力割込みに関連する追加の情報を受信し、配信するよう拡張された割込み制御装置に関する。そのようなある実施態様では、割込み制御装置へのメモリマップ拡張（memory-mapped extension）は、割込み配信の一部として追加情報を埋めたデータ構造を含む。本明細書で説明する実施態様の一部を仮想マシンシステムのコンテキストで説明するが、本明細書で開示される発明は、従来の（仮想化層のない）コンピュータシステムにも同様に適用可能である。
【００１４】
前述の要約および好適な実施態様の詳細説明は、添付の図面と併せて読むとより良く理解できる。本発明を説明するために図面には本発明の例示的な構造を示すが、本発明は開示される特定の方法や手段には限定されない。
【発明を実施するための最良の形態】
【００１５】
本発明の対象は、法的要件を満たすよう具体性をもって説明される。しかしながら、説明自体は本特許の範囲を限定するものではない。むしろ本発明者は、権利主張する対象を異なるステップまたは本文書で説明したものと同様なステップの組合せを、他の現在または将来の技術との関連性を含めて、他の方法で具体化することも意図している。さらに、採用した方法の別要素を暗示するように「ステップ」という用語を本明細書で使用する場合があるが、個々のステップの順序を明確に記述するときを除いて、この用語は本明細書で開示した様々なステップ間のいかなる特定の順序も含意すると解釈されるべきではない。
【００１６】
コンピュータ環境
本発明の多数の実施態様はコンピュータ上で実行することができる。図1および以下の説明は、本発明の実装に適切なコンピューティング環境の簡潔な一般的説明を提供することを意図している。必ずしも必要ではないが、クライアントワークステーションまたはサーバなどのコンピュータが実行するプログラムモジュールのようなコンピュータ実行可能命令の一般的なコンテキストで、本発明を説明する。一般にプログラムモジュールは、特定タスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。さらに、当技術分野の技術者は、本発明を他のコンピュータシステム構成で実行することができ、この構成にはハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家電機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ等を含むことを理解するであろう。本発明は分散コンピューティング環境で実行することもでき、この環境においては通信ネットワークを通してリンクされたリモート処理装置によりタスクが実行される。分散コンピューティング環境においては、プログラムモジュールはローカルおよびリモートメモリ記憶装置の両方に置くことができる。
【００１７】
図１に示すように、例示的な汎用コンピューティングシステムは従来のパーソナルコンピュータ２０等を含み、演算装置２１、システムメモリ２２、およびシステムメモリを含む様々なシステムコンポーネントを演算装置２１に結合するシステムバス２３を含む。システムバス２３は数種のバス構造のうち任意のもので、メモリバスまたはメモリ制御装置、周辺バス、および任意の様々なバス構造を使用するローカルバスを含む。該システムメモリは読取専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。基本入出力システム（ＢＩＯＳ）２６は、起動中などにパーソナルコンピュータ２０内部の要素間で情報を転送することを支援する基本ルーチンを含み、ＲＯＭ２４に格納される。パーソナルコンピュータ２０はさらに、ハードディスク（不図示）を読み書きするハードディスクドライブ２７、リムーバブル磁気ディスク２９を読み書きする磁気ディスクドライブ２８、およびＣＤＲＯＭまたは他の光学媒体のようなリムーバブル光ディスク３１を読み書きする光ディスクドライブ３０を含むことができる。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、ハードディスクドライブインタフェース３２、磁気ディスクドライブインタフェース３３、および光ディスクドライブインタフェース３４によりそれぞれシステムバス２３に接続される。ドライブおよびそれに関連するコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびパーソナルコンピュータ２０用のその他のデータの不揮発性記憶領域を提供する。本明細書で説明する例示的環境は、ハードディスク、リムーバブル磁気ディスク２９およびリムーバブル光ディスク３１を採用するが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）等のような、コンピュータがアクセス可能なデータを格納可能な他種のコンピュータ読取可能媒体を例示的な動作環境で使用することもできることは当技術分野の技術者によって理解されよう。
【００１８】
多数のプログラムモジュールをハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４またはＲＡＭ２５に格納することができ、そのプログラムモジュールにはオペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、その他のプログラムモジュール３７、およびプログラムデータ３８が含まれる。ユーザは命令および情報を、キーボード４０およびポインティングデバイス４２のような入力装置を介してパーソナルコンピュータ２０に入力することができる。他の入力装置（不図示）には、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を含むことができる。これらおよび他の入力装置は、システムバスに結合されるシリアルポートインタフェース４６を介して演算装置２１に頻繁に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースにより接続されてもよい。モニタ４７または他の種類の表示装置も、ビデオアダプタ４８のようなインタフェースを介してシステムバス２３に接続される。モニタ４７に加えて、パーソナルコンピュータは一般的にスピーカおよびプリンタのような他の周辺出力装置（不図示）を含む。図１の例示的なシステムは、ホストアダプタ５５、ＳＣＳＩバス５６、およびＳＣＳＩバス５６に接続される外部記憶装置６２も含む。
【００１９】
パーソナルコンピュータ２０は、リモートコンピュータ４９のような１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク環境で動作できる。リモートコンピュータ４９は別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードとすることができ、一般にパーソナルコンピュータ２０に関して上述した要素の多くまたは全てを含むが、磁気ディスクドライブ５０のみを図１に示している。図１に示す論理接続はローカルエリアネットワーク（ＬＡＮ）５１および広域ネットワーク（ＷＡＮ）５２を含む。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００２０】
ＬＡＮネットワーク環境で使用するとき、パーソナルコンピュータ２０はネットワークインタフェースまたはアダプタ５３を介してＬＡＮ５１に接続される。ＷＡＮネットワーク環境で使用するとき、パーソナルコンピュータ２０は一般に、インターネットのような広域ネットワーク５２上で通信を確立するモデム５４または他の手段を含む。モデム５４は内蔵または外付けすることでき、シリアルポートインタフェース４６経由でシステムバス２３に接続される。ネットワーク環境において、パーソナルコンピュータ２０に関連して示したプログラムモジュールまたはその部分は、リモートメモリ記憶装置に格納することができる。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されるであろう。さらに、コンピュータ化されたシステムに対して本発明の多数の実施態様が特に適切であることが想定されるが、本文書のいかなる内容も、本発明をそのような実施態様に限定するものではない。
【００２１】
仮想マシン（Virtual Machines）
概念的な観点からは、コンピュータシステムは一般的に、ハードウェアの基本層上で稼動する１つまたは複数のソフトウェア層を備える。この階層化は、抽象化のために行われる。所定のソフトウェア層にインタフェースを定義することにより、上方の他層がその層を別々に実装することができる。うまく構成されたコンピュータシステムでは、各層は直下の層のみを知る（および、直下の層だけに依存する）。これにより、層または「スタック」（複数の隣接層）を、前述の層またはスタックの上方にある層に悪影響を及ぼすことなく置換することができる。例えば、ソフトウェアアプリケーション（上層）は一般的にオペレーティングシステムの低レベル（下層）に依存してファイルを何らかの形の永久記憶装置に書込み、しかもこれらのアプリケーションはフロッピーディスク、ハードドライブ、またはネットワークフォルダにデータを書込むことの違いを理解する必要がない。ファイルを書込む新規オペレーティングシステムコンポーネントによりこの低層が置換される場合、それより上層のソフトウェアアプリケーションの動作は影響されず継続する。
【００２２】
階層化したソフトウェアの柔軟性により、仮想マシン（ＶＭ）は、実際は別のソフトウェア層である仮想ハードウェア層を表現することができる。このように、ＶＭはその上方のソフトウェア層に対し、そのソフトウェア層が自身のプライベートなコンピュータシステム上で動作しているように錯覚させることで、ＶＭが複数の「ゲストシステム」を単一の「ホストシステム」上で同時に動作させることができる。
【００２３】
図２は、コンピュータシステム内のエミュレートされた動作環境に関するハードウェアおよびソフトウェアアーキテクチャの論理階層化を示す図である。当該図において、エミュレーションプログラム９４は、物理ハードウェアアーキテクチャ９２上で直接的または間接的に実行される。エミュレーションプログラム９４は、（ａ）ホストオペレーティングシステムと並行して実行される仮想マシンモニタ、（ｂ）ネイティブなエミュレーション能力を有する専用ホストオペレーティングシステム、または（ｃ）前記エミュレーションを実行する前記ハイパーバイザコンポーネントを有するホストオペレーティングシステムになり得る。エミュレーションプログラム９４はゲストハードウェアアーキテクチャ９６（このコンポーネントが「仮想マシン」、すなわち実在しないが前記エミュレーションプログラム９４により代わりにエミュレートされるハードウェアである事実を示す破線の部分）をエミュレートする。ゲストオペレーティングシステム９８は前記ゲストハードウェアアーキテクチャ９６上で実行され、ソフトウェアアプリケーション１００はゲストオペレーティングシステム９８上で実行される。図２のエミュレートされた動作環境においては、エミュレーションプログラム９４の動作のため、ソフトウェアアプリケーション１００が一般にホストオペレーティングシステムおよびハードウェアアーキテクチャ９２と互換性のないオペレーティングシステム上で動作するように設計される場合でも、ソフトウェアアプリケーション１００はコンピュータシステム９０内で動作することができる。
【００２４】
図３Ａは、物理コンピュータハードウェア１０２上で直接動作するホストオペレーティングシステムソフトウェア層１０４を備える仮想コンピューティングシステムを示す。ホストオペレーティングシステム（ホストＯＳ）１０４は、ホストＯＳがエミュレート（または「仮想化」）しているハードウェアと同一のインタフェースを公開することで物理コンピュータハードウェア１０２のリソースへアクセスできるようにしており、その結果、ホストＯＳはその上で実行されるオペレーティングシステム層により認識されずにすむことができる。エミュレーションを実行するため、ホストオペレーティングシステム１０４はネイティブなエミュレーション能力を有する特別に設計されたオペレーティングシステムとすることができ、あるいは、エミュレーションを実行する組み込みハイパーバイザコンポーネントを有する標準オペレーティングシステムとすることができる。
【００２５】
図３Ａを再度参照する。ホストＯＳ１０４上には２つの仮想マシン（ＶＭ）が実装され、それらは、例えば仮想化したＩｎｔｅｌ３８６プロセッサといったようなＶＭ  Ａ  １０８と、Ｍｏｔｏｒｏｌａ６８０Ｘ０ファミリのプロセッサを仮想化したバージョンといったようなＶＭ  Ｂ  １１０である。ＶＭ１０８および１１０はそれぞれ、ゲストオペレーティングシステム（ゲストＯＳ）Ａ  １１２およびＢ  １１４である。ゲストＯＳ  Ａ  １１２の上で動作する２つのアプリケーション、すなわち、アプリケーションＡ１  １１６およびアプリケーションＡ２  １１８があり、ゲストＯＳ  Ｂ  １１４の上で動作するアプリケーションＢ１  １２０がある。
【００２６】
図３Ａに関して、ＶＭ  Ａ  １０８およびＶＭ  Ｂ  １１０（破線で示す）は、ソフトウェアの構成としてのみ存在する仮想化されたコンピュータハードウェアの表現であり、専用のソフトウェアコードが存在するために可能とされるものである。この専用ソフトウェアコードは、ＶＭ  Ａ  １０８とＶＭ  Ｂ  １１０をそれぞれゲストＯＳ  Ａ  １１２およびゲストＯＳ  Ｂ  １１４に示すだけでなく、ゲストＯＳ  Ａ  １１２とゲストＯＳ  Ｂ  １１４が現実の物理コンピュータハードウェア１０２と間接的に通信するために必要な全てのソフトウェアステップを実行するということに留意しなくてはならない。
【００２７】
図３Ｂは別の仮想コンピューティングシステムを示す。ホストオペレーティングシステム１０４”と並行に動作する仮想マシンモニタ（ＶＭＭ）１０４'により、エミュレーションが実行される。ある実施態様に対しＶＭＭは、ホストオペレーティングシステム１０４上で動作し、前記ホストオペレーティングシステム１０４を介してのみコンピュータハードウェアと相互通信するアプリケーションとすることができる。他の実施態様では、図３Ｂに示すように、ＶＭＭは代わりとして部分的に独立したソフトウェアシステムを構成することができる。このソフトウェアシステムは一部のレベルではホストオペレーティングシステム１０４を経由してコンピュータハードウェア１０２と間接的に相互通信するが、他のレベルではＶＭＭはコンピュータハードウェア１０２と（ホストオペレーティングシステムがコンピュータハードウェアと直接通信するのと同様に）直接通信する。しかも別の実施態様では、ＶＭＭは完全に独立したソフトウェアシステムを構成することができ、このソフトウェアシステムは全てのレベルでコンピュータハードウェア１０２と（前記コンピュータハードウェア１０２を連係して使用したり、衝突等を回避したりする限り、前記ホストオペレーティングシステム１０４と以前対話しているが）ホストオペレーティングシステム１０４を使用せずに（ホストオペレーティングシステムがコンピュータハードウェアと直接通信するのと同様に）直接通信する。
【００２８】
ＶＭＭを実装するためのこれらの変形態様は、本明細書で説明される本発明の代替実施態様を形成すると予想され、本明細書で説明されるものは本発明を特定のＶＭＭ構成に制限すると解釈されるべきではない。さらに、（おそらくハードウェアエミュレーションのシナリオにおいて）ＶＭ  Ａ  １０８および／またはＶＭ  Ｂ  １１０のそれぞれを経由してアプリケーション１１６、１１８および１２０の間の対話についてはいかなるものも、実際にはアプリケーション１１６、１１８、および１２０およびＶＭＭの間の対話であるとして解釈されるべきである。同様に、（おそらくコンピュータ命令をコンピュータハードウェア１０２上で直接または間接的に実行するために）ホストオペレーティングシステム１０４および／またはコンピュータハードウェア１０２を有するアプリケーションＶＭ  Ａ  １０８および／またはＶＭ  Ｂ  １１０の間の対話についてはいかなるものも、実際には、適宜ＶＭＭと、ホストオペレーティングシステム１０４またはコンピュータハードウェア１０２との間の対話であるとして解釈されるべきである。
【００２９】
拡張割込み制御装置（Augmented Interrupt Controllers）
図４Ａは、一般的なハードウェア割込み制御装置（「advanced programmable interrupt controller」または「ＡＰＩＣ」とも呼ばれる）を示すブロック図である。ＡＰＩＣ４００は、バス４０２により相互接続される２つのコンポーネント群、すなわち入出力ＡＰＩＣ４１０およびローカルＡＰＩＣ４２０を含む。
【００３０】
この非限定的な例において、また例示的な入出力ＡＰＩＣ４１２に関して示すように、入出力ＡＰＩＣ４１２、４１４および４１６の各々は、２４個の入力線、例えば４１８ａ、４１８ｂ、および４１８ｃを含み、２４個までの独自の装置割込みを処理する。受信した特定の装置割込みに基づいて（すなわち、どの入力線がアクティブかにより）、それぞれの入出力ＡＰＩＣは論理ルーティングテーブル（不図示）を使用し、共通バス４０２経由で特定割込みをそれぞれ特定のプロセッサコア４３２、４３４、または４３６に対応するローカルＡＰＩＣ４２２、４２４、または４２６の１つに転送する（それぞれのプロセッサは自身に対応するローカルＡＰＩＣコンポーネントを有する）。
【００３１】
入出力ＡＰＩＣ４１２、４１４、または４１６の１つから割込みを受信すると、それぞれのローカルＡＰＩＣ４２２、４２４、および４２６は、この非限定的な例においては２４０個までの独自の割込みを受信できるが、そのプロセッサコア４３２、４３４、または４３６のそれぞれに受信した割込みを通知する。次いで、そのプロセッサコアは進行中の動作を停止し、どの装置が割込み要因かおよびその理由は何かを判定する煩雑な処理を即座に開始する。プロセッサコアが最終的に割込みに関するこの追加情報を収集した後、プロセッサコアは、割込みソースと割込みの理由に関して確認できた新規情報に基づいて他の既存かつ未完了の割込みイベントを再度優先順位付けするようローカルＡＰＩＣに通知することで、割込みを終了する。次に、プロセッサコアは、次の最も優先度が高い割込みの処理を継続する（この高優先度の割込みは、プロセッサコアがこの最後の割込みを処理する前に処理を開始していた割込みイベントと同じであるか、またはこの最新の割込みである可能性があり、このどちらであるかはそれらの相対的な優先度に依存する）。
【００３２】
それぞれのローカルＡＰＩＣに約２４０個の独自な割込みイベントに関する信号を送ることができ、それぞれの入出力ＡＰＩＣに一般に約２４個の独自な割込みイベントに関する信号を送ることができるが、入出力ＡＰＩＣとローカルＡＰＩＣとの間の通信に使用される一般的なＰＣＩバスは、割込みソース等を区別するのに十分なほど高度ではない（例えば、ＰＣＩバスは十分な数の独自な信号線をもたない）。その結果、特定のプロセッサコアに対するローカルＡＰＩＣが受信した割込みは、複数の（おそらくは数個の）可能な割込みイベントに対応することができ、従ってプロセッサコアはどの装置が割込み要因であったかを（その割込みに対応する数個の装置にポーリングすることで）解明し、割込み要因を（割り込んでいる装置から割込みの理由に関する追加情報を収集することで）解明する必要がある。物理ハードウェアにおいてこのポーリングおよび情報収集は、非常に非効率的でリソースを消費し、この非効率性は仮想マシン環境において、桁違いに大きい。
【００３３】
図４Ｂは、典型的な仮想割込み制御装置、すなわち仮想マシンにおける仮想化されたＡＰＩＣを示すブロック図である。仮想ＡＰＩＣ４５０は、以下の点を除いて論理的に図４ＡのハードウェアＡＰＩＣと同一の構造コンポーネント（不図示）を含む。その点とは、すなわち、当技術分野の技術者が、仮想マシンについて公知であり容易に理解するように、仮想ＡＰＩＣ４５０がソフトウェア表現として存在し、従って、実質的にゲストオペレーティングシステム、ハイパーバイザ（または他のバーチャライザ）、および物理ハードウェア間の対話に関して、割込み動作を実行するためにホストハードウェアプロセッサ上でより多くの命令を必要とすることである。
【００３４】
図５Ａは、既に図４Ａで示唆した典型的な割込みプロセスフローを一般的に示し、図４Ｂと同様なプロセスフロー図である（図４Ｂのものは、仮想マシン、ＶＭＭ、および物理ホストハードウェア間にさらなる対話が必要なのでより複雑である）。一般に、ステップ５０２において割込みがソースデバイスによって生成され、ステップ５０４おいて、その割込みは前記デバイスに接続された入出力ＡＰＩＣによって、割込み入力線を介して受信される。ステップ５０６において、入出力ＡＰＩＣは論理ルーティングテーブルを参照し、どのプロセッサコアおよび対応するローカルＡＰＩＣがこの特定割込みを受信するように指定されているかを確認し、この参照に基づいてステップ５０８において、指定されたローカルＡＰＩＣに割込みを転送する。ステップ５１０において特定のローカルＡＰＩＣは、さらなる処理のために割込みの受信および優先順位付けを行なう。ステップ５１２において、プロセッサコアは処理する割込みを受信するが、プロセッサコアが割込みソースまたは割込みの理由を知らないので、プロセッサコアは正確な装置が識別されて割込みの理由が解明されるまで割込み要因となりうる様々な装置をポーリングしなければならない。ステップ５１４では、ステップ５１２において判定した割込みソースおよび割込みの理由（これらで「割込み情報（interrupt information）」または「ｉ．ｉ」を構成する）に基づいて、プロセッサは割込みを処理し、完了時にローカルＡＰＩＣが提供すべき、次に優先度の高い割込みを受信する。
【００３５】
このアプローチは一般に非効率的で、物理ハードウェア（割込み制御装置およびコアプロセッサ）に対しては十分とはいえ余裕がなく、これらの非効率性は仮想マシン環境で仮想化するときに拡大する。しかしながら、修正困難な物理ハードウェアとは異なり、仮想ハードウェア（すなわち、仮想マシン環境で仮想化したマシン）は、比較的修正が容易であり、そのため、本明細書にある多数の実施態様は拡張割込み制御装置を経由した割込み処理の簡略化に関する。
【００３６】
図５Ｂは、本発明のいくつかの実施態様にある拡張割込み制御装置を使用した概念的な改良割込み処理を示すプロセスフロー図である。当該図のステップ５５２において、ソースデバイス（この場合、拡張されて「合成割込みソース」または「ＳＩＣ」を含む仮想装置）によって生成される割込みに、割込みソースおよび割込みの理由に関するデータを含む割込み情報（仮想マシンの場合、利用している仮想装置に追加した拡張によりこの割込み情報を自動生成可能である）が付随する。ステップ５５４において、この割込みおよび付随する割込み情報（これらで「合成割込み」または「ＳＩ」を構成する）が拡張割込み制御装置（ＡＩＣ）により受信および優先順位付けされ、ステップ５５６においてプロセッサコアにより処理される。ステップ５５６では、プロセッサコアが更なる情報を求めて装置をポーリングする必要は全くない。
【００３７】
本発明の前記実施態様のいくつかは、標準的な（非ＳＩ）割込みを、例えば実際の物理ハードウェア装置から受信するとき、通常の割込み処理が進行する。しかしながら、物理ハードウェア装置でさえも、標準割込みではなくＳＩを提供するように拡張可能であることが期待される。
【００３８】
図６Ａおよび図６Ｂは、本発明のある実施態様に対する拡張割込み制御装置を示すブロック図であり、各々における割込み制御装置インタフェースは入力割込み（すなわち、ＳＩ）に関連付けられた追加情報を受信し、確実に配信するよう拡張される。図６Ａにおいて、仮想入出力ＡＰＩＣ６１２は、追加情報を割込みソース６０６から、例えばメッセージ信号割込み経由で直接受けるように拡張されている。この追加情報は、割込み自身とともに、割込みソースと割込み理由を識別する合成割込み（ＳＩ）を含む。この割込み情報は、割込みとともにバス６０２経由で入出力ＡＰＩＣ６１２から適切なローカルＡＰＩＣ６２２に渡され、このローカルＡＰＩＣ６２２はこの情報をそのコアプロセッサ６３２に直接提供する。ある代替の実施態様に対して、ローカルＡＰＩＣを拡張して、追加情報を受信し、その追加情報と受信した割込み優先度とに基づいて割込みを優先順位付けすることもできる。
【００３９】
図６Ｂにおいて、割込みは入出力ＡＰＩＣ６１２により受信され、ローカルＡＰＩＣ６２２に渡されて、順にプロセッサコア６３２に渡されるが、割込みに関する追加情報は割込みソース６０６により共用メモリロケーション６０８内に置かれる。この共用メモリロケーション６０８は、割込みに関する割込みソースと割込み理由を識別するので、割込みソースと割込み理由を確認するために装置に問合わせせずに、割込みソース６０６にコアプロセッサ６３２は自動的にアクセスする。ある別の実施態様では、共用メモリ内の追加情報にアクセスし、その追加情報と受信した割込み優先度とに基づいて割込みを優先順位付けするようにローカルＡＰＩＣを拡張することもできる。
【００４０】
拡張割込み制御装置に対する追加拡張
前述に加えて、ハイパーバイザシステムでは、ソフトウェアが一部の割込みを送信できるので、他の悪質なソフトウェアが割込みを偽造していないことを確認するために、その割込みソースを発見する確実な方法を割込みの受信者（すなわち、コアプロセッサ）が有することが重要である。同様に、パーティションは、その割込みに関連する一部の情報が正常に配信されたことを知る必要がある。これは、プロセッサコアに対する割込み配信の一部として投入される特定な構造を持つメモリマップ拡張を、割込み制御に対し定義することで達成できる。この構造内の一部の領域は、送信者が提供するパラメータ、特に送信中のイベントの更なる詳細を与える「理由コード」を含む。他の領域、特に「送信パーティション識別子」領域は、割込み制御装置により提供される。この構造は、受信者および割込み制御装置によってのみアクセス可能なので、受信者は割込みパラメータの信頼性に依存できる。この構造は割込み配信の一部として投入されるので、この追加情報の修正も、送信者を検索および問合わせする従来のモデルより非常に効率的である。これらの構造は従来の割込みベクトルと関連付けられ、その結果、割込みの優先順位付けおよび配信は現在のメカニズムにフィットし、現在のメカニズムを続けて利用できる。
【００４１】
ある実施態様では、システムは、装置を特定パーティションに割り当てることができる、更なる仮想化ハードウェアを含むことができる。この場合、前記装置が送信する割込みおよび関連パラメータを、ソフトウェアが開始する割込みと同様な方法で保護することができる。
【００４２】
さらに、典型的な割込み制御装置は、プロセッサ間割込みを送信する機能を既に有するので、この機能が仮想マシン環境内のパーティション内部からアクセスされるときにそのパーティション内部の仮想プロセッサに同じ割込み送信サービスを提供することは有利であるかもしれない。他のパーティションに割込みを送信するため、またはパラメータを有する割込みを送信パーティション内部で送信するために別個の機能が必要であり、この別個の機能は従来の制御装置と同様な命令レジスタファミリか、または機能インタフェースであることができるが、割込みの送信方法に関わらず割込みの受信メカニズムは同じ状態である。
【００４３】
さらに、より高次の通信プロトコル層に対して読取可能／書込可能信号を送るような多数の類似割込みイベントが必要であるとき、さらなる情報を有さないブール条件を割込みが示し続けるような、代替的な構成を提供することができる。しかしながら、従来の割込みはこの基本機能の役割を果たすが、従来の割込みベクトルは相対的に不十分なリソースであり、従ってこれらの実施態様は割込み制御装置内の更なる空間を使用して単一な従来の割込みベクトルの背後に相対的に大きな、実際には割込み要求テーブルの大きさを何らかのオペレーティングシステムが規定する係数で乗じた大きさの、フラグのビットマップを保持することができる。このようにビットマップを拡大することは、ディスパッチ優先度に影響する粒度レベル以上または以下で行うことができ、次の条件が満たされれば仮想マシンのコンテキスト内で行うのは十分に容易である。その条件とは、ハードウェア内で複製困難である必要な仮想レジスタをソフトウェア内で仮想化することが、非常に簡単であることである。例えば、従来のＡＰＩＣでは割込みベクトルの上位４ビットはその優先度を示し、下位４ビットは同一な優先度の別の信号を区別するために使用されるが、ここで説明したビットマップ拡張は後者のグループを１６個の可能な値、例えば相異なる４０９６個またはそれより多くの値に拡張することができる。上述のパラメータ付き割込みのように、命令レジスタの拡張ファミリまたは機能インタフェースのいずれかがこれらの割込みを送信することができる。一部の実施態様では、単一の従来の割込みベクトルを適宜構成して、いずれかの種類の割込みまたは両方の種類の割込みを処理することができる。
【００４４】
同様に、本発明の他の実施態様を使用して、２つのパーティション間で使用する高レベル通信プロトコルを構築することもできる。バイトストリーム指向（byte-stream-oriented）の伝送手段および他の同様なメカニズム上で伝送するためにメッセージをパッケージ化する様々な方法を開発したが、十分に小さなメッセージに対しては、メッセージ内容の全体を割込み時のパラメータとして送信し、通知およびメッセージの配信を一個のエンティティへ効率的に束ねることができる。これにより、受信者はパーティション内部からバーチャライザにさらに遷移することが全くなく、メッセージ全体を受信することができる。なぜならば、メッセージ内容の全体は、割込みを受信する時にパーティションのアドレス空間にすでに存在するからである。メッセージに関連するデータが非常に大きくてパラメータ設備内部に完全にフィットしない場合、高レベルの整列層は情報をより非効率的な方法で移動させる必要があるが、大部分のメッセージは割込みパラメータに許可された空間内にフィットし、従って非常に効率よく処理することができる。ある実施態様では、パラメータ領域のサイズをコンパイル時または実行時に構成して、特定の負荷に対して最適なバランスを生みだすことができる。この概念は、パーティション間の最適な非同期通信プロトコルとして実装することができ、それぞれのパーティションが他方に割込みを送信する。このプロトコルは、（ａ）初期化されたメッセージに関連する応答メッセージを有するかまたは有さない単純なスタンドアロンメッセージ配信プロトコル、（ｂ）呼び出し元に同期および／または非同期機能インタフェースを公開し、割込みを使用してパーティション境界を横断して動作およびデータを整列する従来のＲＰＣプロトコル、および／または（ｃ）それぞれが互いに対して自由に割込みを送信する不定数の参加者を有するピアツーピア構成を含むことができる。
【００４５】
パーティション間の同期化（cross-partition synchronization）は、本発明の様々な実施態様についての別の応用例である。オペレーティングシステムは、それらのスケジューラとデータ構造を共用することで機能する同期化プリミティブを一般に提供するが、パーティション間では前記構造は典型的には共用されず、別のメカニズムが必要である。この点に関して、複数パーティション内のオブジェクトが単一の論理状態を反映できるようにパーティション内部の同期化オブジェクトのクラスを構築できる。前記のメカニズムにより、パーティション内およびパーティション間の同期化を、同一インタフェースを介して行うことができる。
【００４６】
結論
本明細書で説明した様々なシステム、方法、および技術をハードウェアまたはソフトェアで実装することができ、必要に応じてそれら両方の組合せで実装することができる。従って、本発明の方法および装置、あるいはそれらのある態様または部分は、フロッピーディスク、ＣＤ−ＲＯＭ、ハードドライブ、または任意の他の機械読取可能な記憶媒体のような有形な媒体内に具体化されるプログラムコード（すなわち、命令）の形態を取ることができ、プログラムコードがコンピュータのような機械にロードされて実行されるとき、機械は本発明を実行する装置となる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、コンピュータは一般にプロセッサ、プロセッサが読取可能な（揮発性および不揮発性メモリおよび／または記憶要素を含む）記憶媒体、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。１つまたは複数のプログラムが高レベル手続き型またはオブジェクト指向プログラミング言語で実装されてコンピュータシステムと通信することが望ましい。しかしながら、望むならばプログラムをアセンブリまたは機械語で実装できる。いずれの場合でも、言語はコンパイル型またはインタープリタ型言語でよく、ハードウェアの実装と組合せることができる。
【００４７】
本発明の方法および装置を、電気配線またはケーブル線のような何らかの伝送媒体上で、光ファイバを通して、または任意の他の伝送形態を経由して伝送されるプログラムコードの形式で体現することもでき、ＥＰＲＯＭ、ゲートアレイ、プログラム可能論理装置（ＰＬＤ）、クライアントコンピュータ、ビデオレコーダ等の機械によりプログラムコードが受信、ロード、実行されるとき、機械は本発明を実行するための装置となる。汎用プロセッサ上で実施されるとき、プログラムコードはプロセッサと結びついて、本発明の機能を実行するよう動作する独自の装置を提供する。
【００４８】
本発明を様々な形態の好適な実施態様と関連付けて説明してきたが、他の同様な実施態様を使用することができること、または説明した実施態様に修正および追加を加えて本発明から逸脱することなく本発明の同じ機能を実行できることは理解されよう。例えば、本発明の例示的な実施態様をパーソナルコンピュータの機能性をエミュレートするデジタル装置のコンテキストで説明してきたが、当技術分野の技術者は、本出願で説明したように本発明は前述のデジタル装置に限定されず、有線であろうと無線であろうと、ゲームコンソール、ハンドヘルドコンピュータ、ポータブルコンピュータ等の任意数の既存または新規のコンピューティング装置に適用することができ、通信ネットワーク経由で接続されネットワークを横断して対話する任意数の前記コンピューティング装置に適用することができることを理解するであろう。さらに、特にワイヤレスネットワーク装置の数が増加し続ける場合に、ハンドヘルド装置のオペレーティングシステムおよび他のアプリケーション固有のハードウェア／ソフトウェアインタフェースシステムを、本明細書で考慮していることは強調されるべきである。従って、本発明はどの単一の実施態様にも限定されず、添付の特許請求の範囲に従う範囲で幅広く解釈されるべきである。
【００４９】
最後に、本明細書で開示した実施態様を他のプロセッサアーキテクチャ、コンピュータベースのシステム、またはシステムの仮想化で使用するよう適応させることができ、前述の実施態様は本発明の開示により明確に期待され、従って本発明は開示した特定実施態様に制限されず、最大限に広く解釈されるべきである。同様に、プロセッサの仮想化以外の目的で合成命令を使用することも本明細書の開示により期待され、プロセッサの仮想化以外のコンテキストで任意の前記合成命令の利用は本明細書の開示に最も広く読み込まれるべきである。
【図面の簡単な説明】
【００５０】
【図１】本発明の態様を組み込み可能なコンピュータシステムを表現するブロック図である。
【図２】コンピュータシステム内のエミュレートされた動作環境に対するハードウェアおよびソフトウェアアーキテクチャの論理階層化を示す図である。
【図３Ａ】ホストオペレーティングシステムにより（直接またはハイパーバイザ経由で）エミュレーションが実施される仮想化コンピューティングシステムを示す図である。
【図３Ｂ】ホストオペレーティングシステムと並列に動作する仮想マシンモニタによりエミュレーションが実施される代替的な仮想化コンピューティングシステムを示す図である。
【図４Ａ】（「advanced programmable interrupt controller」または「ＡＰＩＣ」としても知られる）典型的なハードウェア割込み制御装置を示すブロック図である。
【図４Ｂ】典型的な仮想割込み制御装置、即ち仮想マシン内の仮想化ＡＰＩＣを示すブロック図である。
【図５Ａ】典型的な割込みプロセスの流れに関するプロセスフロー図である。
【図５Ｂ】本発明の一部の実施態様に係る拡張割込み制御装置を使用した概念的な改良割込み処理プロセスに関するプロセスフロー図である。
【図６Ａ】割込み制御インタフェースが拡張されて、入力割込み（例えば、メッセージ信号化した割込み）に関連する追加情報を受信し確実に配信する、本発明のある実施態様についての拡張割込み制御装置を示すブロック図である。
【図６Ｂ】割込み制御インタフェースが拡張されて、入力割込みに関連する追加情報を受信し確実に配信する（割込みに関する追加情報は、共用メモリロケーション内の割込みソースにより置かれる）、本発明のある実施態様についての拡張割込み制御装置を示すブロック図である。
【図１】
2008535099.tif 000003
【図２】
2008535099.tif 000004
【図３Ａ】
2008535099.tif 000005
【図３Ｂ】
2008535099.tif 000006
【図４Ａ】
2008535099.tif 000007
【図４Ｂ】
2008535099.tif 000008
【図５Ａ】
2008535099.tif 000009
【図５Ｂ】
2008535099.tif 000010
【図６Ａ】
2008535099.tif 000011
【図６Ｂ】
2008535099.tif 000012
【国際調査報告】
2008535099.tif 000013
2008535099.tif 000014