JP2008535099A - 拡張割込み制御装置および合成割込みソースに関するシステムおよび方法 - Google Patents

拡張割込み制御装置および合成割込みソースに関するシステムおよび方法 Download PDF

Info

Publication number
JP2008535099A
JP2008535099A JP2008504314A JP2008504314A JP2008535099A JP 2008535099 A JP2008535099 A JP 2008535099A JP 2008504314 A JP2008504314 A JP 2008504314A JP 2008504314 A JP2008504314 A JP 2008504314A JP 2008535099 A JP2008535099 A JP 2008535099A
Authority
JP
Japan
Prior art keywords
interrupt
processor core
source
computer
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008504314A
Other languages
English (en)
Inventor
アントニオ ベガ レネ
ティー.ルイス ネイサン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008535099A publication Critical patent/JP2008535099A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

本発明の様々な実施態様は、拡張割込み制御装置(AIC)と、より豊富な割込み情報(または「合成割込み」または「SI」)を提供する合成割込みソース(SIS)とに関する。AICおよびSISは、割込み、特に仮想マシンにより送受信される割込みを送受信する効率的な手段を提供する。これらの実施態様の一部は特に、入力割込みに関連する追加情報を受信し、配信するよう拡張した割込み制御装置に関する。そのようなある実施態様では、割込み制御装置のメモリマップ拡張は、割込み配信の一部として追加情報を投入されるデータ構造を含む。明細書において説明される実施態様の一部は、仮想マシンシステムのコンテキストで開示されるが、明細書において開示される発明は、(仮想化層がない)従来のコンピュータシステムにも同様に適用することができる。

Description

本発明は一般に、割込み制御装置の分野に関し、特に、仮想マシン(「プロセッサの仮想化」としても知られる)で使用する割込み制御装置に関する。より詳細には、本発明は仮想マシン環境で使用する拡張割込み制御装置、および前記拡張割込み制御装置が使用する豊富な割込み情報を含む合成割込みソースに関する。
コンピュータは、特定のシステム命令セットを実行するように設計された汎用の中央演算装置(CPU)を含む。同様なアーキテクチャまたは設計仕様を有するプロセッサ群は同一プロセッサファミリのメンバーであると考えることができる。最近のプロセッサファミリの例には、アリゾナ州フェニックスにあるモトローラ社製のMotorola680X0プロセッサファミリ、カリフォルニア州サニーベールにあるインテル社製のIntel80X86プロセッサファミリ、および、カリフォルニア州クパチーノにあるアップルコンピュータ社製のコンピュータで使用されている、モトローラ社製のPowerPCプロセッサファミリがある。同様なアーキテクチャおよび同様な設計概念であるという理由で、プロセッサ群は同一ファミリとすることができるが、プロセッサは、そのクロック速度および他の性能パラメータに従ってファミリ内部で大きく異なってもよい。
それぞれのマイクロプロセッサファミリは、そのプロセッサファミリ独自の命令を実行する。プロセッサまたはプロセッサファミリが実行可能な命令の集合セットは、そのプロセッサの命令セットとして知られている。例えば、Intel80X86プロセッサファミリが使用する命令セットは、PowerPCプロセッサファミリが使用する命令セットと互換性がない。Intel80X86命令セットは、複合命令セットコンピュータ(CISC)形式を基本とする。また、モトローラのPowerPC命令セットは、縮小命令セットコンピュータ(RISC)形式を基本とする。CISCプロセッサは多数の命令を使用し、その命令の中には複雑な機能を実行することができるものもあるが、実行には一般に、多数のクロックサイクルが必要である。RISCプロセッサは利用可能な命令をより少なく使用して、非常に高速で実行される、より単純な機能セットを実行する。
コンピュータシステム間でのプロセッサファミリの独自性のため、典型的にはコンピュータシステムのハードウェアアーキテクチャのその他の要素間でも互換性がなくなる。Intel80X86プロセッサファミリのプロセッサを用いて製造されたコンピュータシステムは、PowerPCプロセッサファミリのプロセッサを用いて製造されたコンピュータシステムのハードウェアアーキテクチャとは異なるハードウェアアーキテクチャを有することになる。プロセッサの命令セットおよびコンピュータシステムのハードウェアアーキテクチャの独自性により、アプリケーションのソフトウェアプログラムは、典型的には特定のオペレーティングシステムを実行する特定のコンピュータシステム上で動作するように記述される。
プロセッサの仮想化(Processor Virtualization)
コンピュータの製造業者は、自身の製品ラインに関わるマイクロプロセッサファミリ上でより多くのアプリケーションを実行させることで、自身のマーケットシェアの最大化を望んでいる。コンピュータシステム上で実行可能なオペレーティングシステムとアプリケーションプログラムの数を増やすために、ある技術分野が開発された。この技術分野においては、ホストと称されるある種のCPUを有する所与のコンピュータが、エミュレータプログラムを含み、このエミュレータプログラムにより、ホストコンピュータがゲストと称される別の種類のCPUの命令をエミュレートすることが可能になる。従って、ホストコンピュータは、所与のゲスト命令に応答して1つまたは複数のホスト命令を呼んでくるアプリケーションを実行する。従って、ホストコンピュータは、自身のハードウェアアーキテクチャ向けに設計されたソフトウェアと、別のハードウェアアーキテクチャを有するコンピュータ向けに記述されたソフトウェアとの両方を実行することができる。より詳細な例として、アップルコンピュータ製のコンピュータシステムは、例えば、PCベースのコンピュータシステム向けに記述されたオペレーティングシステムとプログラムを実行することができる。エミュレータプログラムを使用して、単一のCPU上で互換性のない複数のオペレーティングシステムを同時に動作させることも可能である。このように、各オペレーティングシステムは他のオペレーティングシステムと互換性がないにもかかわらず、エミュレータプログラムが2つのオペレーティングシステムのうちの1つをホストとすることができ、互換性のないオペレーティングシステムを同一のコンピュータシステム上で同時に動作させることができる。
ゲストコンピュータシステムがホストコンピュータシステム上でエミュレートされる場合、ゲストコンピュータシステムは、ある特定のハードウェアアーキテクチャの動作の純粋なソフトウェア表現として、ホストコンピュータシステムにのみ存在するので、ゲストコンピュータは「仮想マシン」であると呼ばれる。エミュレータ、仮想マシン、およびプロセッサエミュレーションという用語は、時々同じ意味として使用され、コンピュータシステム全体のハードウェアアーキテクチャを模倣またはエミュレートする能力を表す。例えば、カリフォルニア州サンマテオにあるコネクティックス社(Connectix Corporation)製のVirtualPCソフトウェアは、Intel80X86のPentium(登録商標)プロセッサ、様々なマザーボード要素およびカードを含むコンピュータ全体をエミュレートする。これらのコンポーネントの動作は、ホストマシン上で実行中の仮想マシンにおいてエミュレートされる。PowerPCプロセッサを有するコンピュータシステムのようなホストコンピュータのオペレーティングシステムソフトウェアおよびハードウェアアーキテクチャ上で動作するエミュレータプログラムは、ゲストコンピュータシステム全体の動作を模倣する。
エミュレータプログラムは、ホストマシンのハードウェアアーキテクチャと、エミュレート環境内で動作するソフトウェアによって伝送される命令との間の交信を行う。このエミュレート環境は、仮想マシンモニタ(VMM)により生成される。この仮想マシンモニタは、ハードウェア上で直接動作するソフトウェア層であり、VMMが仮想化しているハードウェアと同じインタフェースを公開することによって、全ての機械リソースを仮想化する(それにより、VMM上で実行中のオペレーティングシステム層はVMMへの配慮が不要となる)。この構成では、ホストオペレーティングシステム(HOS)およびVMMを、同一の物理ハードウェア上で並列に実行することができる。あるいは、エミュレータプログラムは、物理コンピュータハードウェア上で直接動作し、もう一方のハードウェア構成をエミュレートするHOS自身であってもよい。この実施態様の特定の実装では、HOSソフトウェアは特に、「ハイパーバイザ(hypervisor)」の一実施態様を含むことができる。
ハイパーバイザは制御プログラムであり、HOSのカーネルレベル近傍に存在し、HOS以外の1つまたは複数のセカンダリオペレーティングシステムがコンピュータシステムの物理プロセッサを含むコンピュータシステムのハードウェアを使用できるように動作する。ハイパーバイザはセカンダリオペレーティングシステム用の動作環境をエミュレートし、その結果、セカンダリオペレーティングシステムは、実際は別のハードウェアおよび/またはオペレーティングシステム環境で動作し、HOSがコンピュータシステムの論理的な制御下にあったとしても、自身の通常のハードウェアおよび/またはオペレーティングシステム環境で動作し、コンピュータシステムの論理制御下にあると信じる。これは、重要なことである。なぜならば、多くのオペレーティングシステムは、自身がコンピュータシステムのハードウェアの排他的かつ論理的な制御下にあるかのように動作せざるをえないからである。従って、複数のオペレーティングシステムが単一のコンピュータシステム上で同時に機能するために、それぞれのオペレーティングシステムのハイパーバイザは他のオペレーティングシステムの存在を隠蔽するよう機能し、各オペレーティングシステムは自身がコンピュータシステム全体に対して排他的制御を有するかのように機能しなければならない。
簡単のため、これらに限らないが、VMMおよびハイパーバイザを含むプロセッサの仮想化プログラムを、本明細書では「バーチャライザ(virtualizers)」と総称する。さらに、ハイパーバイザのコンテキストにおいて本明細書で開示する本発明の任意の態様は、VMM(または他のバーチャライザ)についても等しく有効であり、かつ開示されることが推定され、その逆もまた同様である。
割込み制御装置(Interrupt Controllers)
当技術分野の技術者に公知であり理解されるように、一般的なコンピュータシステム(例えば、単一のオペレーティングシステムを実行する物理ハードウェア)において、ハードウェア装置(ネットワークカード、プリンタ、他の周辺装置等)は割込みを通して、それぞれのプロセッサコア上で実行されるプロセッサコアのソフトウェアと通信する。しかしながら、各プロセッサコアとシステム内の他のハードウェアとの間に数種類の相互作用があるが、コアの外側から開始されたそのような相互作用の全ては、単一の単純な割込み配信メカニズムを通る。さらに、従来のシステムでは割込みベクトル数は非常に制限されるので、それぞれのグループに対する単一の共通割込みの下にイベントをグループ化する必要がある。従って、プロセッサコアのソフトウェアが割込みを受信するときは、既存の割込み配信メカニズムは割込みソースまたは割込み要因を確実に識別することを一般に想定していないため、割込みの要因およびコンテキストを判定するのに数ステップを必要とする。さらに、単一の割込みが単一の物理または仮想装置から数個の同様なイベントのうちの1つだけを示す可能性もある。例えば、より高次の抽象層で実装されたメッセージングシステムは、高性能であるために何百または何千もの個別にアドレス指定可能な信号が必要となる可能性があり、コアプロセッサのソフトウェアはどのアドレス指定可能な信号がこれらの種類の装置から受信した割込みに対応するかを判定しなければならない。
システムがハイパーバイザ、VMM、または他のマシン仮想化技術(まとめて「バーチャライザ」と呼ぶ)上で実行されるとき、仮想装置がパーティション(仮想マシンのインスタンス)に提供するサービスは、一般に典型的なコンピュータシステム内のハードウェア装置と同じ割込みメカニズムを介してそのパーティションに信号を送信する。しかしながら、仮想マシン環境では、仮想マシンに関する装置が仮想化されるだけでなく、各仮想マシン用のプロセッサコアも仮想化される。結果として、そのような仮想化されたプロセッサコアの各々に対するコアプロセッサソフトウェアはさらに複雑になる。これは、コアプロセッサソフトウェアがバーチャライザ(例えば、ハイパーバイザまたはVMM)と通信して、ハードウェア装置および仮想装置(後者はソフトウェアとしてのみ存在する)の両方が生成可能な割込みを実際に処理しなければならないという事実による。既存の割込み配信メカニズムは一般に、割込みソース、特にソフトウェアが生成する割込みソースを確実に識別することを想定していないため、仮想化環境において割込みソースと割込みの本質とを識別するために必要なプロセッサリソースが大量に費やされる。さらに、割込みに関連するデータはハードウェアおよびシステムソフトウェアに対して広くアクセス可能でなければならず、相互に信頼できないシステムソフトウェアの複数の実体をバーチャライザがホストするような一般的環境下では、信頼できる配信は困難である。(このような環境下では、全てのパーティションが同一の割込み管理の枠組みに入る場合でも、割込みに伴い情報をパーティションに押し込む必要があり、これらの割込みに関連する任意の情報を近傍のパーティションの悪質なオペレーティングシステムから保護する必要がある。)
結果として、割込みは各VM内の数個の異なるソース(ハードウェアおよびソフトウェアソースの両方を含む)から来る可能性があり、その多くはハードウェアバス上の装置より「さらに離れている」(従って、完了するのにより多数の物理プロセッササイクルを要する)ため、当技術分野で必要なものは、マシン仮想化システムの性能と実用性を高めるために、より多くの情報を含む、より豊富な割込み配信メカニズムである。
本発明の様々な実施態様は拡張割込み制御装置(AIC)と、より豊富な割込み情報(または「合成割込み」または「SI」)を提供する合成割込みソース(SIS)に関する。AICおよびSISは、割込み、特に仮想マシンに送信され、仮想マシンにより受信される割込みを送受信する効率的な手段を提供する。これらの実施態様のうちの一部は特に、入力割込みに関連する追加の情報を受信し、配信するよう拡張された割込み制御装置に関する。そのようなある実施態様では、割込み制御装置へのメモリマップ拡張(memory-mapped extension)は、割込み配信の一部として追加情報を埋めたデータ構造を含む。本明細書で説明する実施態様の一部を仮想マシンシステムのコンテキストで説明するが、本明細書で開示される発明は、従来の(仮想化層のない)コンピュータシステムにも同様に適用可能である。
前述の要約および好適な実施態様の詳細説明は、添付の図面と併せて読むとより良く理解できる。本発明を説明するために図面には本発明の例示的な構造を示すが、本発明は開示される特定の方法や手段には限定されない。
本発明の対象は、法的要件を満たすよう具体性をもって説明される。しかしながら、説明自体は本特許の範囲を限定するものではない。むしろ本発明者は、権利主張する対象を異なるステップまたは本文書で説明したものと同様なステップの組合せを、他の現在または将来の技術との関連性を含めて、他の方法で具体化することも意図している。さらに、採用した方法の別要素を暗示するように「ステップ」という用語を本明細書で使用する場合があるが、個々のステップの順序を明確に記述するときを除いて、この用語は本明細書で開示した様々なステップ間のいかなる特定の順序も含意すると解釈されるべきではない。
コンピュータ環境
本発明の多数の実施態様はコンピュータ上で実行することができる。図1および以下の説明は、本発明の実装に適切なコンピューティング環境の簡潔な一般的説明を提供することを意図している。必ずしも必要ではないが、クライアントワークステーションまたはサーバなどのコンピュータが実行するプログラムモジュールのようなコンピュータ実行可能命令の一般的なコンテキストで、本発明を説明する。一般にプログラムモジュールは、特定タスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。さらに、当技術分野の技術者は、本発明を他のコンピュータシステム構成で実行することができ、この構成にはハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家電機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ等を含むことを理解するであろう。本発明は分散コンピューティング環境で実行することもでき、この環境においては通信ネットワークを通してリンクされたリモート処理装置によりタスクが実行される。分散コンピューティング環境においては、プログラムモジュールはローカルおよびリモートメモリ記憶装置の両方に置くことができる。
図1に示すように、例示的な汎用コンピューティングシステムは従来のパーソナルコンピュータ20等を含み、演算装置21、システムメモリ22、およびシステムメモリを含む様々なシステムコンポーネントを演算装置21に結合するシステムバス23を含む。システムバス23は数種のバス構造のうち任意のもので、メモリバスまたはメモリ制御装置、周辺バス、および任意の様々なバス構造を使用するローカルバスを含む。該システムメモリは読取専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。基本入出力システム(BIOS)26は、起動中などにパーソナルコンピュータ20内部の要素間で情報を転送することを支援する基本ルーチンを含み、ROM24に格納される。パーソナルコンピュータ20はさらに、ハードディスク(不図示)を読み書きするハードディスクドライブ27、リムーバブル磁気ディスク29を読み書きする磁気ディスクドライブ28、およびCDROMまたは他の光学媒体のようなリムーバブル光ディスク31を読み書きする光ディスクドライブ30を含むことができる。ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、ハードディスクドライブインタフェース32、磁気ディスクドライブインタフェース33、および光ディスクドライブインタフェース34によりそれぞれシステムバス23に接続される。ドライブおよびそれに関連するコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびパーソナルコンピュータ20用のその他のデータの不揮発性記憶領域を提供する。本明細書で説明する例示的環境は、ハードディスク、リムーバブル磁気ディスク29およびリムーバブル光ディスク31を採用するが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)等のような、コンピュータがアクセス可能なデータを格納可能な他種のコンピュータ読取可能媒体を例示的な動作環境で使用することもできることは当技術分野の技術者によって理解されよう。
多数のプログラムモジュールをハードディスク、磁気ディスク29、光ディスク31、ROM24またはRAM25に格納することができ、そのプログラムモジュールにはオペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、その他のプログラムモジュール37、およびプログラムデータ38が含まれる。ユーザは命令および情報を、キーボード40およびポインティングデバイス42のような入力装置を介してパーソナルコンピュータ20に入力することができる。他の入力装置(不図示)には、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を含むことができる。これらおよび他の入力装置は、システムバスに結合されるシリアルポートインタフェース46を介して演算装置21に頻繁に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB)のような他のインタフェースにより接続されてもよい。モニタ47または他の種類の表示装置も、ビデオアダプタ48のようなインタフェースを介してシステムバス23に接続される。モニタ47に加えて、パーソナルコンピュータは一般的にスピーカおよびプリンタのような他の周辺出力装置(不図示)を含む。図1の例示的なシステムは、ホストアダプタ55、SCSIバス56、およびSCSIバス56に接続される外部記憶装置62も含む。
パーソナルコンピュータ20は、リモートコンピュータ49のような1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク環境で動作できる。リモートコンピュータ49は別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードとすることができ、一般にパーソナルコンピュータ20に関して上述した要素の多くまたは全てを含むが、磁気ディスクドライブ50のみを図1に示している。図1に示す論理接続はローカルエリアネットワーク(LAN)51および広域ネットワーク(WAN)52を含む。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
LANネットワーク環境で使用するとき、パーソナルコンピュータ20はネットワークインタフェースまたはアダプタ53を介してLAN51に接続される。WANネットワーク環境で使用するとき、パーソナルコンピュータ20は一般に、インターネットのような広域ネットワーク52上で通信を確立するモデム54または他の手段を含む。モデム54は内蔵または外付けすることでき、シリアルポートインタフェース46経由でシステムバス23に接続される。ネットワーク環境において、パーソナルコンピュータ20に関連して示したプログラムモジュールまたはその部分は、リモートメモリ記憶装置に格納することができる。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されるであろう。さらに、コンピュータ化されたシステムに対して本発明の多数の実施態様が特に適切であることが想定されるが、本文書のいかなる内容も、本発明をそのような実施態様に限定するものではない。
仮想マシン(Virtual Machines)
概念的な観点からは、コンピュータシステムは一般的に、ハードウェアの基本層上で稼動する1つまたは複数のソフトウェア層を備える。この階層化は、抽象化のために行われる。所定のソフトウェア層にインタフェースを定義することにより、上方の他層がその層を別々に実装することができる。うまく構成されたコンピュータシステムでは、各層は直下の層のみを知る(および、直下の層だけに依存する)。これにより、層または「スタック」(複数の隣接層)を、前述の層またはスタックの上方にある層に悪影響を及ぼすことなく置換することができる。例えば、ソフトウェアアプリケーション(上層)は一般的にオペレーティングシステムの低レベル(下層)に依存してファイルを何らかの形の永久記憶装置に書込み、しかもこれらのアプリケーションはフロッピーディスク、ハードドライブ、またはネットワークフォルダにデータを書込むことの違いを理解する必要がない。ファイルを書込む新規オペレーティングシステムコンポーネントによりこの低層が置換される場合、それより上層のソフトウェアアプリケーションの動作は影響されず継続する。
階層化したソフトウェアの柔軟性により、仮想マシン(VM)は、実際は別のソフトウェア層である仮想ハードウェア層を表現することができる。このように、VMはその上方のソフトウェア層に対し、そのソフトウェア層が自身のプライベートなコンピュータシステム上で動作しているように錯覚させることで、VMが複数の「ゲストシステム」を単一の「ホストシステム」上で同時に動作させることができる。
図2は、コンピュータシステム内のエミュレートされた動作環境に関するハードウェアおよびソフトウェアアーキテクチャの論理階層化を示す図である。当該図において、エミュレーションプログラム94は、物理ハードウェアアーキテクチャ92上で直接的または間接的に実行される。エミュレーションプログラム94は、(a)ホストオペレーティングシステムと並行して実行される仮想マシンモニタ、(b)ネイティブなエミュレーション能力を有する専用ホストオペレーティングシステム、または(c)前記エミュレーションを実行する前記ハイパーバイザコンポーネントを有するホストオペレーティングシステムになり得る。エミュレーションプログラム94はゲストハードウェアアーキテクチャ96(このコンポーネントが「仮想マシン」、すなわち実在しないが前記エミュレーションプログラム94により代わりにエミュレートされるハードウェアである事実を示す破線の部分)をエミュレートする。ゲストオペレーティングシステム98は前記ゲストハードウェアアーキテクチャ96上で実行され、ソフトウェアアプリケーション100はゲストオペレーティングシステム98上で実行される。図2のエミュレートされた動作環境においては、エミュレーションプログラム94の動作のため、ソフトウェアアプリケーション100が一般にホストオペレーティングシステムおよびハードウェアアーキテクチャ92と互換性のないオペレーティングシステム上で動作するように設計される場合でも、ソフトウェアアプリケーション100はコンピュータシステム90内で動作することができる。
図3Aは、物理コンピュータハードウェア102上で直接動作するホストオペレーティングシステムソフトウェア層104を備える仮想コンピューティングシステムを示す。ホストオペレーティングシステム(ホストOS)104は、ホストOSがエミュレート(または「仮想化」)しているハードウェアと同一のインタフェースを公開することで物理コンピュータハードウェア102のリソースへアクセスできるようにしており、その結果、ホストOSはその上で実行されるオペレーティングシステム層により認識されずにすむことができる。エミュレーションを実行するため、ホストオペレーティングシステム104はネイティブなエミュレーション能力を有する特別に設計されたオペレーティングシステムとすることができ、あるいは、エミュレーションを実行する組み込みハイパーバイザコンポーネントを有する標準オペレーティングシステムとすることができる。
図3Aを再度参照する。ホストOS104上には2つの仮想マシン(VM)が実装され、それらは、例えば仮想化したIntel386プロセッサといったようなVM A 108と、Motorola680X0ファミリのプロセッサを仮想化したバージョンといったようなVM B 110である。VM108および110はそれぞれ、ゲストオペレーティングシステム(ゲストOS)A 112およびB 114である。ゲストOS A 112の上で動作する2つのアプリケーション、すなわち、アプリケーションA1 116およびアプリケーションA2 118があり、ゲストOS B 114の上で動作するアプリケーションB1 120がある。
図3Aに関して、VM A 108およびVM B 110(破線で示す)は、ソフトウェアの構成としてのみ存在する仮想化されたコンピュータハードウェアの表現であり、専用のソフトウェアコードが存在するために可能とされるものである。この専用ソフトウェアコードは、VM A 108とVM B 110をそれぞれゲストOS A 112およびゲストOS B 114に示すだけでなく、ゲストOS A 112とゲストOS B 114が現実の物理コンピュータハードウェア102と間接的に通信するために必要な全てのソフトウェアステップを実行するということに留意しなくてはならない。
図3Bは別の仮想コンピューティングシステムを示す。ホストオペレーティングシステム104”と並行に動作する仮想マシンモニタ(VMM)104'により、エミュレーションが実行される。ある実施態様に対しVMMは、ホストオペレーティングシステム104上で動作し、前記ホストオペレーティングシステム104を介してのみコンピュータハードウェアと相互通信するアプリケーションとすることができる。他の実施態様では、図3Bに示すように、VMMは代わりとして部分的に独立したソフトウェアシステムを構成することができる。このソフトウェアシステムは一部のレベルではホストオペレーティングシステム104を経由してコンピュータハードウェア102と間接的に相互通信するが、他のレベルではVMMはコンピュータハードウェア102と(ホストオペレーティングシステムがコンピュータハードウェアと直接通信するのと同様に)直接通信する。しかも別の実施態様では、VMMは完全に独立したソフトウェアシステムを構成することができ、このソフトウェアシステムは全てのレベルでコンピュータハードウェア102と(前記コンピュータハードウェア102を連係して使用したり、衝突等を回避したりする限り、前記ホストオペレーティングシステム104と以前対話しているが)ホストオペレーティングシステム104を使用せずに(ホストオペレーティングシステムがコンピュータハードウェアと直接通信するのと同様に)直接通信する。
VMMを実装するためのこれらの変形態様は、本明細書で説明される本発明の代替実施態様を形成すると予想され、本明細書で説明されるものは本発明を特定のVMM構成に制限すると解釈されるべきではない。さらに、(おそらくハードウェアエミュレーションのシナリオにおいて)VM A 108および/またはVM B 110のそれぞれを経由してアプリケーション116、118および120の間の対話についてはいかなるものも、実際にはアプリケーション116、118、および120およびVMMの間の対話であるとして解釈されるべきである。同様に、(おそらくコンピュータ命令をコンピュータハードウェア102上で直接または間接的に実行するために)ホストオペレーティングシステム104および/またはコンピュータハードウェア102を有するアプリケーションVM A 108および/またはVM B 110の間の対話についてはいかなるものも、実際には、適宜VMMと、ホストオペレーティングシステム104またはコンピュータハードウェア102との間の対話であるとして解釈されるべきである。
拡張割込み制御装置(Augmented Interrupt Controllers)
図4Aは、一般的なハードウェア割込み制御装置(「advanced programmable interrupt controller」または「APIC」とも呼ばれる)を示すブロック図である。APIC400は、バス402により相互接続される2つのコンポーネント群、すなわち入出力APIC410およびローカルAPIC420を含む。
この非限定的な例において、また例示的な入出力APIC412に関して示すように、入出力APIC412、414および416の各々は、24個の入力線、例えば418a、418b、および418cを含み、24個までの独自の装置割込みを処理する。受信した特定の装置割込みに基づいて(すなわち、どの入力線がアクティブかにより)、それぞれの入出力APICは論理ルーティングテーブル(不図示)を使用し、共通バス402経由で特定割込みをそれぞれ特定のプロセッサコア432、434、または436に対応するローカルAPIC422、424、または426の1つに転送する(それぞれのプロセッサは自身に対応するローカルAPICコンポーネントを有する)。
入出力APIC412、414、または416の1つから割込みを受信すると、それぞれのローカルAPIC422、424、および426は、この非限定的な例においては240個までの独自の割込みを受信できるが、そのプロセッサコア432、434、または436のそれぞれに受信した割込みを通知する。次いで、そのプロセッサコアは進行中の動作を停止し、どの装置が割込み要因かおよびその理由は何かを判定する煩雑な処理を即座に開始する。プロセッサコアが最終的に割込みに関するこの追加情報を収集した後、プロセッサコアは、割込みソースと割込みの理由に関して確認できた新規情報に基づいて他の既存かつ未完了の割込みイベントを再度優先順位付けするようローカルAPICに通知することで、割込みを終了する。次に、プロセッサコアは、次の最も優先度が高い割込みの処理を継続する(この高優先度の割込みは、プロセッサコアがこの最後の割込みを処理する前に処理を開始していた割込みイベントと同じであるか、またはこの最新の割込みである可能性があり、このどちらであるかはそれらの相対的な優先度に依存する)。
それぞれのローカルAPICに約240個の独自な割込みイベントに関する信号を送ることができ、それぞれの入出力APICに一般に約24個の独自な割込みイベントに関する信号を送ることができるが、入出力APICとローカルAPICとの間の通信に使用される一般的なPCIバスは、割込みソース等を区別するのに十分なほど高度ではない(例えば、PCIバスは十分な数の独自な信号線をもたない)。その結果、特定のプロセッサコアに対するローカルAPICが受信した割込みは、複数の(おそらくは数個の)可能な割込みイベントに対応することができ、従ってプロセッサコアはどの装置が割込み要因であったかを(その割込みに対応する数個の装置にポーリングすることで)解明し、割込み要因を(割り込んでいる装置から割込みの理由に関する追加情報を収集することで)解明する必要がある。物理ハードウェアにおいてこのポーリングおよび情報収集は、非常に非効率的でリソースを消費し、この非効率性は仮想マシン環境において、桁違いに大きい。
図4Bは、典型的な仮想割込み制御装置、すなわち仮想マシンにおける仮想化されたAPICを示すブロック図である。仮想APIC450は、以下の点を除いて論理的に図4AのハードウェアAPICと同一の構造コンポーネント(不図示)を含む。その点とは、すなわち、当技術分野の技術者が、仮想マシンについて公知であり容易に理解するように、仮想APIC450がソフトウェア表現として存在し、従って、実質的にゲストオペレーティングシステム、ハイパーバイザ(または他のバーチャライザ)、および物理ハードウェア間の対話に関して、割込み動作を実行するためにホストハードウェアプロセッサ上でより多くの命令を必要とすることである。
図5Aは、既に図4Aで示唆した典型的な割込みプロセスフローを一般的に示し、図4Bと同様なプロセスフロー図である(図4Bのものは、仮想マシン、VMM、および物理ホストハードウェア間にさらなる対話が必要なのでより複雑である)。一般に、ステップ502において割込みがソースデバイスによって生成され、ステップ504おいて、その割込みは前記デバイスに接続された入出力APICによって、割込み入力線を介して受信される。ステップ506において、入出力APICは論理ルーティングテーブルを参照し、どのプロセッサコアおよび対応するローカルAPICがこの特定割込みを受信するように指定されているかを確認し、この参照に基づいてステップ508において、指定されたローカルAPICに割込みを転送する。ステップ510において特定のローカルAPICは、さらなる処理のために割込みの受信および優先順位付けを行なう。ステップ512において、プロセッサコアは処理する割込みを受信するが、プロセッサコアが割込みソースまたは割込みの理由を知らないので、プロセッサコアは正確な装置が識別されて割込みの理由が解明されるまで割込み要因となりうる様々な装置をポーリングしなければならない。ステップ514では、ステップ512において判定した割込みソースおよび割込みの理由(これらで「割込み情報(interrupt information)」または「i.i」を構成する)に基づいて、プロセッサは割込みを処理し、完了時にローカルAPICが提供すべき、次に優先度の高い割込みを受信する。
このアプローチは一般に非効率的で、物理ハードウェア(割込み制御装置およびコアプロセッサ)に対しては十分とはいえ余裕がなく、これらの非効率性は仮想マシン環境で仮想化するときに拡大する。しかしながら、修正困難な物理ハードウェアとは異なり、仮想ハードウェア(すなわち、仮想マシン環境で仮想化したマシン)は、比較的修正が容易であり、そのため、本明細書にある多数の実施態様は拡張割込み制御装置を経由した割込み処理の簡略化に関する。
図5Bは、本発明のいくつかの実施態様にある拡張割込み制御装置を使用した概念的な改良割込み処理を示すプロセスフロー図である。当該図のステップ552において、ソースデバイス(この場合、拡張されて「合成割込みソース」または「SIC」を含む仮想装置)によって生成される割込みに、割込みソースおよび割込みの理由に関するデータを含む割込み情報(仮想マシンの場合、利用している仮想装置に追加した拡張によりこの割込み情報を自動生成可能である)が付随する。ステップ554において、この割込みおよび付随する割込み情報(これらで「合成割込み」または「SI」を構成する)が拡張割込み制御装置(AIC)により受信および優先順位付けされ、ステップ556においてプロセッサコアにより処理される。ステップ556では、プロセッサコアが更なる情報を求めて装置をポーリングする必要は全くない。
本発明の前記実施態様のいくつかは、標準的な(非SI)割込みを、例えば実際の物理ハードウェア装置から受信するとき、通常の割込み処理が進行する。しかしながら、物理ハードウェア装置でさえも、標準割込みではなくSIを提供するように拡張可能であることが期待される。
図6Aおよび図6Bは、本発明のある実施態様に対する拡張割込み制御装置を示すブロック図であり、各々における割込み制御装置インタフェースは入力割込み(すなわち、SI)に関連付けられた追加情報を受信し、確実に配信するよう拡張される。図6Aにおいて、仮想入出力APIC612は、追加情報を割込みソース606から、例えばメッセージ信号割込み経由で直接受けるように拡張されている。この追加情報は、割込み自身とともに、割込みソースと割込み理由を識別する合成割込み(SI)を含む。この割込み情報は、割込みとともにバス602経由で入出力APIC612から適切なローカルAPIC622に渡され、このローカルAPIC622はこの情報をそのコアプロセッサ632に直接提供する。ある代替の実施態様に対して、ローカルAPICを拡張して、追加情報を受信し、その追加情報と受信した割込み優先度とに基づいて割込みを優先順位付けすることもできる。
図6Bにおいて、割込みは入出力APIC612により受信され、ローカルAPIC622に渡されて、順にプロセッサコア632に渡されるが、割込みに関する追加情報は割込みソース606により共用メモリロケーション608内に置かれる。この共用メモリロケーション608は、割込みに関する割込みソースと割込み理由を識別するので、割込みソースと割込み理由を確認するために装置に問合わせせずに、割込みソース606にコアプロセッサ632は自動的にアクセスする。ある別の実施態様では、共用メモリ内の追加情報にアクセスし、その追加情報と受信した割込み優先度とに基づいて割込みを優先順位付けするようにローカルAPICを拡張することもできる。
拡張割込み制御装置に対する追加拡張
前述に加えて、ハイパーバイザシステムでは、ソフトウェアが一部の割込みを送信できるので、他の悪質なソフトウェアが割込みを偽造していないことを確認するために、その割込みソースを発見する確実な方法を割込みの受信者(すなわち、コアプロセッサ)が有することが重要である。同様に、パーティションは、その割込みに関連する一部の情報が正常に配信されたことを知る必要がある。これは、プロセッサコアに対する割込み配信の一部として投入される特定な構造を持つメモリマップ拡張を、割込み制御に対し定義することで達成できる。この構造内の一部の領域は、送信者が提供するパラメータ、特に送信中のイベントの更なる詳細を与える「理由コード」を含む。他の領域、特に「送信パーティション識別子」領域は、割込み制御装置により提供される。この構造は、受信者および割込み制御装置によってのみアクセス可能なので、受信者は割込みパラメータの信頼性に依存できる。この構造は割込み配信の一部として投入されるので、この追加情報の修正も、送信者を検索および問合わせする従来のモデルより非常に効率的である。これらの構造は従来の割込みベクトルと関連付けられ、その結果、割込みの優先順位付けおよび配信は現在のメカニズムにフィットし、現在のメカニズムを続けて利用できる。
ある実施態様では、システムは、装置を特定パーティションに割り当てることができる、更なる仮想化ハードウェアを含むことができる。この場合、前記装置が送信する割込みおよび関連パラメータを、ソフトウェアが開始する割込みと同様な方法で保護することができる。
さらに、典型的な割込み制御装置は、プロセッサ間割込みを送信する機能を既に有するので、この機能が仮想マシン環境内のパーティション内部からアクセスされるときにそのパーティション内部の仮想プロセッサに同じ割込み送信サービスを提供することは有利であるかもしれない。他のパーティションに割込みを送信するため、またはパラメータを有する割込みを送信パーティション内部で送信するために別個の機能が必要であり、この別個の機能は従来の制御装置と同様な命令レジスタファミリか、または機能インタフェースであることができるが、割込みの送信方法に関わらず割込みの受信メカニズムは同じ状態である。
さらに、より高次の通信プロトコル層に対して読取可能/書込可能信号を送るような多数の類似割込みイベントが必要であるとき、さらなる情報を有さないブール条件を割込みが示し続けるような、代替的な構成を提供することができる。しかしながら、従来の割込みはこの基本機能の役割を果たすが、従来の割込みベクトルは相対的に不十分なリソースであり、従ってこれらの実施態様は割込み制御装置内の更なる空間を使用して単一な従来の割込みベクトルの背後に相対的に大きな、実際には割込み要求テーブルの大きさを何らかのオペレーティングシステムが規定する係数で乗じた大きさの、フラグのビットマップを保持することができる。このようにビットマップを拡大することは、ディスパッチ優先度に影響する粒度レベル以上または以下で行うことができ、次の条件が満たされれば仮想マシンのコンテキスト内で行うのは十分に容易である。その条件とは、ハードウェア内で複製困難である必要な仮想レジスタをソフトウェア内で仮想化することが、非常に簡単であることである。例えば、従来のAPICでは割込みベクトルの上位4ビットはその優先度を示し、下位4ビットは同一な優先度の別の信号を区別するために使用されるが、ここで説明したビットマップ拡張は後者のグループを16個の可能な値、例えば相異なる4096個またはそれより多くの値に拡張することができる。上述のパラメータ付き割込みのように、命令レジスタの拡張ファミリまたは機能インタフェースのいずれかがこれらの割込みを送信することができる。一部の実施態様では、単一の従来の割込みベクトルを適宜構成して、いずれかの種類の割込みまたは両方の種類の割込みを処理することができる。
同様に、本発明の他の実施態様を使用して、2つのパーティション間で使用する高レベル通信プロトコルを構築することもできる。バイトストリーム指向(byte-stream-oriented)の伝送手段および他の同様なメカニズム上で伝送するためにメッセージをパッケージ化する様々な方法を開発したが、十分に小さなメッセージに対しては、メッセージ内容の全体を割込み時のパラメータとして送信し、通知およびメッセージの配信を一個のエンティティへ効率的に束ねることができる。これにより、受信者はパーティション内部からバーチャライザにさらに遷移することが全くなく、メッセージ全体を受信することができる。なぜならば、メッセージ内容の全体は、割込みを受信する時にパーティションのアドレス空間にすでに存在するからである。メッセージに関連するデータが非常に大きくてパラメータ設備内部に完全にフィットしない場合、高レベルの整列層は情報をより非効率的な方法で移動させる必要があるが、大部分のメッセージは割込みパラメータに許可された空間内にフィットし、従って非常に効率よく処理することができる。ある実施態様では、パラメータ領域のサイズをコンパイル時または実行時に構成して、特定の負荷に対して最適なバランスを生みだすことができる。この概念は、パーティション間の最適な非同期通信プロトコルとして実装することができ、それぞれのパーティションが他方に割込みを送信する。このプロトコルは、(a)初期化されたメッセージに関連する応答メッセージを有するかまたは有さない単純なスタンドアロンメッセージ配信プロトコル、(b)呼び出し元に同期および/または非同期機能インタフェースを公開し、割込みを使用してパーティション境界を横断して動作およびデータを整列する従来のRPCプロトコル、および/または(c)それぞれが互いに対して自由に割込みを送信する不定数の参加者を有するピアツーピア構成を含むことができる。
パーティション間の同期化(cross-partition synchronization)は、本発明の様々な実施態様についての別の応用例である。オペレーティングシステムは、それらのスケジューラとデータ構造を共用することで機能する同期化プリミティブを一般に提供するが、パーティション間では前記構造は典型的には共用されず、別のメカニズムが必要である。この点に関して、複数パーティション内のオブジェクトが単一の論理状態を反映できるようにパーティション内部の同期化オブジェクトのクラスを構築できる。前記のメカニズムにより、パーティション内およびパーティション間の同期化を、同一インタフェースを介して行うことができる。
結論
本明細書で説明した様々なシステム、方法、および技術をハードウェアまたはソフトェアで実装することができ、必要に応じてそれら両方の組合せで実装することができる。従って、本発明の方法および装置、あるいはそれらのある態様または部分は、フロッピーディスク、CD−ROM、ハードドライブ、または任意の他の機械読取可能な記憶媒体のような有形な媒体内に具体化されるプログラムコード(すなわち、命令)の形態を取ることができ、プログラムコードがコンピュータのような機械にロードされて実行されるとき、機械は本発明を実行する装置となる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、コンピュータは一般にプロセッサ、プロセッサが読取可能な(揮発性および不揮発性メモリおよび/または記憶要素を含む)記憶媒体、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。1つまたは複数のプログラムが高レベル手続き型またはオブジェクト指向プログラミング言語で実装されてコンピュータシステムと通信することが望ましい。しかしながら、望むならばプログラムをアセンブリまたは機械語で実装できる。いずれの場合でも、言語はコンパイル型またはインタープリタ型言語でよく、ハードウェアの実装と組合せることができる。
本発明の方法および装置を、電気配線またはケーブル線のような何らかの伝送媒体上で、光ファイバを通して、または任意の他の伝送形態を経由して伝送されるプログラムコードの形式で体現することもでき、EPROM、ゲートアレイ、プログラム可能論理装置(PLD)、クライアントコンピュータ、ビデオレコーダ等の機械によりプログラムコードが受信、ロード、実行されるとき、機械は本発明を実行するための装置となる。汎用プロセッサ上で実施されるとき、プログラムコードはプロセッサと結びついて、本発明の機能を実行するよう動作する独自の装置を提供する。
本発明を様々な形態の好適な実施態様と関連付けて説明してきたが、他の同様な実施態様を使用することができること、または説明した実施態様に修正および追加を加えて本発明から逸脱することなく本発明の同じ機能を実行できることは理解されよう。例えば、本発明の例示的な実施態様をパーソナルコンピュータの機能性をエミュレートするデジタル装置のコンテキストで説明してきたが、当技術分野の技術者は、本出願で説明したように本発明は前述のデジタル装置に限定されず、有線であろうと無線であろうと、ゲームコンソール、ハンドヘルドコンピュータ、ポータブルコンピュータ等の任意数の既存または新規のコンピューティング装置に適用することができ、通信ネットワーク経由で接続されネットワークを横断して対話する任意数の前記コンピューティング装置に適用することができることを理解するであろう。さらに、特にワイヤレスネットワーク装置の数が増加し続ける場合に、ハンドヘルド装置のオペレーティングシステムおよび他のアプリケーション固有のハードウェア/ソフトウェアインタフェースシステムを、本明細書で考慮していることは強調されるべきである。従って、本発明はどの単一の実施態様にも限定されず、添付の特許請求の範囲に従う範囲で幅広く解釈されるべきである。
最後に、本明細書で開示した実施態様を他のプロセッサアーキテクチャ、コンピュータベースのシステム、またはシステムの仮想化で使用するよう適応させることができ、前述の実施態様は本発明の開示により明確に期待され、従って本発明は開示した特定実施態様に制限されず、最大限に広く解釈されるべきである。同様に、プロセッサの仮想化以外の目的で合成命令を使用することも本明細書の開示により期待され、プロセッサの仮想化以外のコンテキストで任意の前記合成命令の利用は本明細書の開示に最も広く読み込まれるべきである。
本発明の態様を組み込み可能なコンピュータシステムを表現するブロック図である。 コンピュータシステム内のエミュレートされた動作環境に対するハードウェアおよびソフトウェアアーキテクチャの論理階層化を示す図である。 ホストオペレーティングシステムにより(直接またはハイパーバイザ経由で)エミュレーションが実施される仮想化コンピューティングシステムを示す図である。 ホストオペレーティングシステムと並列に動作する仮想マシンモニタによりエミュレーションが実施される代替的な仮想化コンピューティングシステムを示す図である。 (「advanced programmable interrupt controller」または「APIC」としても知られる)典型的なハードウェア割込み制御装置を示すブロック図である。 典型的な仮想割込み制御装置、即ち仮想マシン内の仮想化APICを示すブロック図である。 典型的な割込みプロセスの流れに関するプロセスフロー図である。 本発明の一部の実施態様に係る拡張割込み制御装置を使用した概念的な改良割込み処理プロセスに関するプロセスフロー図である。 割込み制御インタフェースが拡張されて、入力割込み(例えば、メッセージ信号化した割込み)に関連する追加情報を受信し確実に配信する、本発明のある実施態様についての拡張割込み制御装置を示すブロック図である。 割込み制御インタフェースが拡張されて、入力割込みに関連する追加情報を受信し確実に配信する(割込みに関する追加情報は、共用メモリロケーション内の割込みソースにより置かれる)、本発明のある実施態様についての拡張割込み制御装置を示すブロック図である。

Claims (20)

  1. コンピュータシステムにおける拡張割込み制御の方法であって、
    割込み信号と割込み情報の両方を、割込み制御装置とその対応するプロセッサコアに送信する割込みソースを含むこと
    を特徴とする方法。
  2. 前記割込み情報は、次の要素群、すなわち、前記割込みソースの識別、および前記割込みの理由のうちの少なくとも1つの要素を含むこと
    を特徴とする請求項1に記載の方法。
  3. 前記割込み制御装置および前記対応するプロセッサコアは、前記割込み情報を使用して、次の複数のタスク、すなわち、前記割込みソースを識別すること、および前記割込みの理由を確認することのうちの1つのタスクを実行する任意のデバイスをポーリングすることなく、処理する前記割込みを優先順位付けすること
    を特徴とする請求項2に記載の方法。
  4. 前記割込みは、対応するプロセッサコアの関与なくローカルAPIC(advanced programmable interrupt controller)によって優先順位付けされること
    を特徴とする請求項3に記載の方法。
  5. 前記割込み情報は、前記割込みソースから、共用メモリロケーションを介して前記割込み制御装置または前記プロセッサコアに通信されること
    を特徴とする請求項3に記載の方法。
  6. 前記割込みソース、前記割込み制御装置、または前記対応プロセッサコアのうちの少なくとも1つは、仮想マシン環境内の仮想化ソフトウェア表現であること
    を特徴とする請求項3に記載の方法。
  7. コンピュータシステム内の拡張割込み制御に関するシステムであって、
    割込み制御装置および対応するプロセッサコア、および、
    割込み信号および割込み情報の両方を、前記割込み制御装置および前記対応プロセッサコアに送信する割込みソース
    を含むことを特徴とするシステム。
  8. 前記割込み情報は、次の要素群、すなわち、前記割込みソースの識別、および前記割込みの理由のうちの少なくとも1つの要素を含むこと
    を特徴とする請求項7に記載のシステム。
  9. 前記割込み制御装置および前記対応プロセッサコアは、前記割込み情報を使用して、次の複数のタスク、すなわち、前記割込みソースを識別すること、および前記割込みの理由を確認することのうちの1つのタスクを実行する任意のデバイスをポーリングすることなく、処理する前記割込みを優先順位付けすること
    を特徴とする請求項8に記載のシステム。
  10. 前記割込みは、対応するプロセッサコアの関与なくローカルAPIC(advanced programmable interrupt controller)によって優先順位付けされること
    を特徴とする請求項9に記載のシステム。
  11. 共用メモリロケーションをさらに含み、前記割込み情報は、前記割込みソースから、前記共用メモリロケーションを介して前記割込み制御装置または前記プロセッサコアに通信されること
    を特徴とする請求項9に記載のシステム。
  12. 前記割込みソース、前記割込み制御装置、または前記対応プロセッサコアのうちの少なくとも1つは、仮想マシン環境内の仮想化ソフトウェア表現であること
    を特徴とする請求項9に記載のシステム。
  13. コンピュータシステムにおける拡張割込み制御用のコンピュータ読取可能命令を含むコンピュータ読取可能媒体であって、前記コンピュータ読取可能命令は、割込み信号および割込み情報の両方を割込み制御装置およびその対応するプロセッサコアに送信する割込みソースについての命令を含むこと
    を特徴とするコンピュータ読取可能媒体。
  14. 命令をさらに含み、それにより前記割込み情報が、次の要素群、すなわち、前記割込みソースの識別、および前記割込みの理由のうちの少なくとも1つを含むこと
    を特徴とする請求項13に記載のコンピュータ読取可能媒体。
  15. 命令をさらに含み、それにより前記割込み制御装置および前記対応するプロセッサコアは、前記割込み情報を使用して、次の複数のタスク、すなわち、前記割込みソースを識別すること、および前記割込みの理由を確認することのうちの1つのタスクを実行する任意のデバイスをポーリングすることなく、処理する前記割込みを優先順位付けすること
    を特徴とする請求項14に記載のコンピュータ読取可能媒体。
  16. 命令をさらに含み、それにより前記割込みは、対応プロセッサコアの関与なくローカルAPIC(advanced programmable interrupt controller)によって優先順位付けされること
    を特徴とする請求項15に記載のコンピュータ読取可能媒体。
  17. 命令をさらに含み、それにより前記割込み情報は、前記割込みソースから共用メモリロケーションを介して前記割込み制御装置または前記プロセッサコアに通信されること
    を特徴とする請求項15に記載のコンピュータ読取可能媒体。
  18. 命令をさらに含み、それにより前記割込みソース、前記割込み制御装置、または前記対応プロセッサコアのうちの少なくとも1つは、仮想マシン環境内の仮想化ソフトウェア表現であること
    を特徴とする請求項15に記載のコンピュータ読取可能媒体。
  19. コンピュータシステム内の拡張割込み制御を実装するハードウェア制御デバイスにおいて、
    割込み信号および割込み情報の両方を割込み制御装置およびその対応するプロセッサコアに送信する割込みソースであって、前記割込み情報は、次の要素群、すなわち、前記割込みソースの識別、および前記割込みの理由のうちの少なくとも1つの要素を含むことを特徴とする割込みソース、および、
    前記割込み情報を使用して、次の複数のタスク、すなわち、前記割込みソースを識別すること、および前記割込みの理由を確認することのうちの1つのタスクを実行する任意のデバイスをポーリングすることなく、処理する前記割込みを優先順位付けする前記割込み制御装置および対応するプロセッサコア
    のための手段を含むことを特徴とするハードウェア制御デバイス。
  20. 前記割込み情報を、前記割込みソースから共用メモリロケーションを介して前記割込み制御装置または前記プロセッサコアに通信するための手段をさらに含むことを特徴とする請求項19に記載のハードウェア制御デバイス。
JP2008504314A 2005-03-28 2006-03-28 拡張割込み制御装置および合成割込みソースに関するシステムおよび方法 Pending JP2008535099A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/092,012 US7689747B2 (en) 2005-03-28 2005-03-28 Systems and methods for an augmented interrupt controller and synthetic interrupt sources
PCT/US2006/011487 WO2006105208A2 (en) 2005-03-28 2006-03-28 Systems and methods for an augmented interrupt controller and synthetic interrupt sources

Publications (1)

Publication Number Publication Date
JP2008535099A true JP2008535099A (ja) 2008-08-28

Family

ID=37036531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008504314A Pending JP2008535099A (ja) 2005-03-28 2006-03-28 拡張割込み制御装置および合成割込みソースに関するシステムおよび方法

Country Status (8)

Country Link
US (1) US7689747B2 (ja)
EP (1) EP1854014A4 (ja)
JP (1) JP2008535099A (ja)
KR (1) KR20070115883A (ja)
CN (1) CN101128807B (ja)
IL (1) IL184614A0 (ja)
TW (1) TW200707211A (ja)
WO (1) WO2006105208A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010250453A (ja) * 2009-04-14 2010-11-04 Hitachi Ltd 計算機システム、割込み中継回路及び割込み中継方法
JP2010538373A (ja) * 2007-09-06 2010-12-09 インテル・コーポレーション クラスタidとイントラクラスタidとを有する論理apicidの作成
JP2012515995A (ja) * 2009-01-26 2012-07-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 各プロセッサに対して割り込み仮想化を支援するためのゲスト割り込み制御器
EP2854020A1 (en) 2013-09-27 2015-04-01 Fujitsu Limited Storage control apparatus, storage control method, and storage control program
US9928185B2 (en) 2015-01-30 2018-03-27 Fujitsu Limited Information processing apparatus and computer-readable recording medium having program recorded therein

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802073B1 (en) * 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US9032127B2 (en) * 2006-09-14 2015-05-12 Hewlett-Packard Development Company, L.P. Method of balancing I/O device interrupt service loading in a computer system
US20080082710A1 (en) * 2006-09-29 2008-04-03 Dell Products L.P. System and method for managing system management interrupts in a multiprocessor computer system
US8219788B1 (en) 2007-07-23 2012-07-10 Oracle America, Inc. Virtual core management
US7769938B2 (en) 2007-09-06 2010-08-03 Intel Corporation Processor selection for an interrupt identifying a processor cluster
GB2462258B (en) * 2008-07-28 2012-02-08 Advanced Risc Mach Ltd Interrupt control for virtual processing apparatus
US8565118B2 (en) * 2008-12-30 2013-10-22 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8331362B2 (en) * 2008-12-30 2012-12-11 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8255496B2 (en) 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
US8190769B1 (en) 2008-12-30 2012-05-29 Juniper Networks, Inc. Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification
US20100174841A1 (en) * 2008-12-31 2010-07-08 Zohar Bogin Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
US9424211B2 (en) * 2008-12-31 2016-08-23 Intel Corporation Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
US8255603B2 (en) * 2009-08-14 2012-08-28 Advanced Micro Devices, Inc. User-level interrupt mechanism for multi-core architectures
US8953603B2 (en) 2009-10-28 2015-02-10 Juniper Networks, Inc. Methods and apparatus related to a distributed switch fabric
US8442048B2 (en) 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
KR101242661B1 (ko) * 2009-12-11 2013-03-12 한국전자통신연구원 컴퓨터 시스템에서 인터럽트 컨트롤러의 가상화 장치 및 방법
US8566492B2 (en) 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US8380908B2 (en) * 2009-12-31 2013-02-19 Intel Corporation Emulation of an input/output advanced programmable interrupt controller
US20110197004A1 (en) 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
US8606975B2 (en) * 2010-05-21 2013-12-10 Oracle International Corporation Managing interrupts in a virtualized input/output device supporting multiple hosts and functions
US8891406B1 (en) 2010-12-22 2014-11-18 Juniper Networks, Inc. Methods and apparatus for tunnel management within a data center
US8893267B1 (en) 2011-08-17 2014-11-18 Applied Micro Circuits Corporation System and method for partitioning resources in a system-on-chip (SoC)
CN103049318B (zh) * 2011-10-11 2017-10-17 北京科银京成技术有限公司 分区操作系统的虚拟中断方法
US9229884B2 (en) 2012-04-30 2016-01-05 Freescale Semiconductor, Inc. Virtualized instruction extensions for system partitioning
US9152587B2 (en) * 2012-05-31 2015-10-06 Freescale Semiconductor, Inc. Virtualized interrupt delay mechanism
US8914566B2 (en) * 2012-06-19 2014-12-16 Teradyne, Inc. Managing interrupts
US9436626B2 (en) 2012-08-09 2016-09-06 Freescale Semiconductor, Inc. Processor interrupt interface with interrupt partitioning and virtualization enhancements
US9442870B2 (en) 2012-08-09 2016-09-13 Freescale Semiconductor, Inc. Interrupt priority management using partition-based priority blocking processor registers
RU2514141C1 (ru) 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
US9009368B2 (en) 2012-10-23 2015-04-14 Advanced Micro Devices, Inc. Interrupt latency performance counters
US9021143B2 (en) 2012-11-30 2015-04-28 Intel Corporation Polling of I/O devices on host initiated communication transports
JP6123487B2 (ja) * 2013-05-28 2017-05-10 富士通株式会社 制御装置、制御方法及び制御プログラム
US9417801B2 (en) * 2014-03-27 2016-08-16 Intel Corporation Virtual general-purpose I/O controller
US9910699B2 (en) 2014-10-28 2018-03-06 Intel Corporation Virtual processor direct interrupt delivery mechanism
US10049064B2 (en) * 2015-01-29 2018-08-14 Red Hat Israel, Ltd. Transmitting inter-processor interrupt messages by privileged virtual machine functions
US9747225B2 (en) 2015-05-05 2017-08-29 Microsoft Technology Licensing, Llc Interrupt controller
CN108196945B (zh) * 2016-12-08 2022-06-07 阿里巴巴集团控股有限公司 一种核间通信方法、装置和虚拟化设备
US11809888B2 (en) 2019-04-29 2023-11-07 Red Hat, Inc. Virtual machine memory migration facilitated by persistent memory devices
US11989144B2 (en) 2021-07-30 2024-05-21 Advanced Micro Devices, Inc. Centralized interrupt handling for chiplet processing units
CN113886054B (zh) * 2021-12-03 2022-04-15 芯来科技(武汉)有限公司 一种中断处理装置、芯片和电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324996A (ja) * 1993-04-19 1994-11-25 Intel Corp 集積回路およびプログラマブル・マルチ・プロセッサ割り込みコントローラ・システム
JP2001209548A (ja) * 2000-01-28 2001-08-03 Matsushita Electric Ind Co Ltd マイクロコンピュータシステム
JP2004030161A (ja) * 2002-06-25 2004-01-29 Hitachi Ltd コンピュータシステムにおける割り込み制御方法、コンピュータシステム、半導体集積回路、及びプログラム
JP2004303237A (ja) * 2003-03-31 2004-10-28 Internatl Business Mach Corp <Ibm> 論理的にパーティションが作成されたコンピュータ・システム内で割り込みを仮想化するための装置および方法
JP2004355543A (ja) * 2003-05-30 2004-12-16 Toshiba Corp 情報処理装置および割り込み通知方法
WO2005013121A2 (en) * 2003-07-31 2005-02-10 Intel Corporation Inter-processsor interrupts

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61206043A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd 仮想計算機システムにおける割込制御方法
US5418968A (en) * 1990-10-31 1995-05-23 Gobeli; Gregg P. System and method for controlling interrupt processing
JP3093293B2 (ja) * 1991-02-08 2000-10-03 日本電気株式会社 情報処理装置の割り込み方式
US6240483B1 (en) * 1997-11-14 2001-05-29 Agere Systems Guardian Corp. System for memory based interrupt queue in a memory of a multiprocessor system
US6295573B1 (en) * 1999-02-16 2001-09-25 Advanced Micro Devices, Inc. Point-to-point interrupt messaging within a multiprocessing computer system
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
JP4017646B2 (ja) * 2003-06-20 2007-12-05 富士通株式会社 割り込み制御方法、割り込み制御装置及び割り込み制御プログラム
US7177967B2 (en) * 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7139857B2 (en) * 2003-11-12 2006-11-21 Standard Microsystems Corporation Method and apparatus for handling interrupts
US7222203B2 (en) * 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324996A (ja) * 1993-04-19 1994-11-25 Intel Corp 集積回路およびプログラマブル・マルチ・プロセッサ割り込みコントローラ・システム
JP2001209548A (ja) * 2000-01-28 2001-08-03 Matsushita Electric Ind Co Ltd マイクロコンピュータシステム
JP2004030161A (ja) * 2002-06-25 2004-01-29 Hitachi Ltd コンピュータシステムにおける割り込み制御方法、コンピュータシステム、半導体集積回路、及びプログラム
JP2004303237A (ja) * 2003-03-31 2004-10-28 Internatl Business Mach Corp <Ibm> 論理的にパーティションが作成されたコンピュータ・システム内で割り込みを仮想化するための装置および方法
JP2004355543A (ja) * 2003-05-30 2004-12-16 Toshiba Corp 情報処理装置および割り込み通知方法
WO2005013121A2 (en) * 2003-07-31 2005-02-10 Intel Corporation Inter-processsor interrupts

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010538373A (ja) * 2007-09-06 2010-12-09 インテル・コーポレーション クラスタidとイントラクラスタidとを有する論理apicidの作成
JP2012515995A (ja) * 2009-01-26 2012-07-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 各プロセッサに対して割り込み仮想化を支援するためのゲスト割り込み制御器
JP2010250453A (ja) * 2009-04-14 2010-11-04 Hitachi Ltd 計算機システム、割込み中継回路及び割込み中継方法
EP2854020A1 (en) 2013-09-27 2015-04-01 Fujitsu Limited Storage control apparatus, storage control method, and storage control program
US9483211B2 (en) 2013-09-27 2016-11-01 Fujitsu Limited Storage control apparatus, storage control method, and computer-readable recording medium having stored storage control program
US9928185B2 (en) 2015-01-30 2018-03-27 Fujitsu Limited Information processing apparatus and computer-readable recording medium having program recorded therein

Also Published As

Publication number Publication date
US7689747B2 (en) 2010-03-30
TW200707211A (en) 2007-02-16
WO2006105208A2 (en) 2006-10-05
IL184614A0 (en) 2007-12-03
CN101128807B (zh) 2011-10-26
EP1854014A4 (en) 2010-03-31
WO2006105208A3 (en) 2007-06-07
KR20070115883A (ko) 2007-12-06
EP1854014A2 (en) 2007-11-14
CN101128807A (zh) 2008-02-20
US20060218328A1 (en) 2006-09-28

Similar Documents

Publication Publication Date Title
JP2008535099A (ja) 拡張割込み制御装置および合成割込みソースに関するシステムおよび方法
US10353725B2 (en) Request processing techniques
US9619270B2 (en) Remote-direct-memory-access-based virtual machine live migration
KR101668399B1 (ko) 프로세서 코어들의 하이퍼바이저 격리
US7533207B2 (en) Optimized interrupt delivery in a virtualized environment
US9552216B2 (en) Pass-through network interface controller configured to support latency sensitive virtual machines
CN106371894B (zh) 一种配置方法、装置和数据处理服务器
US8635612B2 (en) Systems and methods for hypervisor discovery and utilization
EP1628214A2 (en) Systems and methods for implementing an operating system in a virtual machine environment
US20060020940A1 (en) Soft-partitioning systems and methods
US20190146827A1 (en) Virtualized network function resource management method and device
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
JP2007328782A (ja) カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム
Zhang et al. NVMe-over-RPMsg: A virtual storage device model applied to heterogeneous multi-core SoCs
WO2024109624A1 (zh) 一种数据处理的方法以及计算机设备
WO2022160217A1 (zh) 一种中断上报装置、方法及虚拟化系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120306

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120813

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120814

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130702

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130712

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130719

RD15 Notification of revocation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7435

Effective date: 20130719

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130809