JP5108975B2 - 仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法 - Google Patents
仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法 Download PDFInfo
- Publication number
- JP5108975B2 JP5108975B2 JP2011506240A JP2011506240A JP5108975B2 JP 5108975 B2 JP5108975 B2 JP 5108975B2 JP 2011506240 A JP2011506240 A JP 2011506240A JP 2011506240 A JP2011506240 A JP 2011506240A JP 5108975 B2 JP5108975 B2 JP 5108975B2
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- generating device
- mode
- message
- interrupt mode
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Description
当初、バイト、16ビットワード、32ビットワード、又は64ビットワードの同時転送を可能にするためにパラレル信号線を備えるバスが、シリアル通信媒体よりも高いデータ転送帯域幅を提供していた。
シリアル通信媒体では、ビット値は、連続して次々と転送され、受信ポートによって、バイト、16ビットワード、32ビットワード、又は64ビットワードに融合される。
しかしながら、高いクロックレートでは、バスのパラレル信号線間の信号スキューが、次第に困難な問題となる可能性があり、マイクロプロセッサ及び他の集積回路内の機能の密度が減少したことから、集積回路コンポーネントをパラレルバスと接続するのに必要な多数のピンが、処理能力と比べてコスト及び空間的制約の増大を表している。
その結果、シリアル通信媒体は、今や、旧型のパラレルバスよりも大きなデータ転送帯域幅を提供することができ、システム内に組み込むことがより容易であり、集積回路設計及びパッケージングに課される制約をより少なくすることができ、加えて、より経済的である。
周辺コンポーネント相互接続(「PCI」)及びアドバンストテクノロジアタッチメント(「ATA」)を含む旧型のバスベースの通信媒体は、PCIe及びSATA等のより高速でより経済的なシリアル通信媒体による置き換えが進められている。
例えば、新型のPCTeは、PCIベースのコンポーネントとインターフェースするように設計された旧型のコンポーネントが新型のPCIeベースのコンポーネントとインターフェースすることができるように、後方互換性の機能を提供する。
しかしながら、新型の技術の導入中に後方互換性を提供するこのような取り組みにも関わらず、問題は発生する。
一例として、新型のPCIeシリアル通信媒体及びコントローラは、新型のシリアル通信媒体を通じて送信されたメッセージを使用して、PCI通信媒体で使用されるマルチ専用のピン及びトレースをベースとした(multi-dedicated-pin-and-trace-based)割り込みメカニズムのエミュレーションを提供するが、I/Oデバイスコントローラ等の新しいPCIe互換周辺デバイスは、旧型のPCI割り込みモードを実施することができない場合がある。
旧型のPCIベースの割り込みモードをサポートしていない新型のPCIeベースのデバイスは、PCIeベースのコンポーネントをサポートするように設計されたコンピュータシステムとは正しく相互動作するが、このようなデバイスは、PCIe相互接続と互換性があるにも関わらず、PCIe相互接続とレトロフィットされている旧型のコンピュータシステムでは正しく機能しない場合がある。
したがって、技術が推移している間、旧型技術のコンポーネント及び新型技術のコンポーネントの双方を組み込んだコンピュータシステムの設計者、製造業者、ベンダ、及びユーザは、オペレーティングシステムと、新型技術のコンポーネントを組み込んだコンピュータシステム又は新型技術のコンポーネントに接続するコンピュータシステムで引き続き使用される旧型技術のコンポーネントとインターフェースするように設計された基本入出力システム(「BIOS」)レイヤとの間の非互換性等、新型技術のコンポーネントと旧型技術のコンポーネントとの間の非互換性の橋渡しを容易にする方法及びデバイスの必要性を常に認識している。
本発明の一実施の形態では、PCIeスイッチ又はPCIeベースのホストブリッジが変更されるか、又は新しいコンポーネントが導入されて、割り込みモード仮想化機能、すなわち仮想割り込みモードインターフェースが提供される。
この割り込みモード仮想化機能は、I/Oデバイスコントローラ等の割り込み発生デバイスのために仮想割り込みモードをオペレーティングシステム、BIOSレイヤ、及びI/Oデバイスコントローラと通信する他のコンポーネントに提供する。
この割り込みモード仮想化機能を提供することによって、割り込み発生デバイスは、旧型技術の割り込みモードをもはやサポートしていないが、ホストブリッジ、PCIeスイッチ、又は追加のコンポーネントが、旧型技術の割り込みモードインターフェースを、BIOS及び/又は1つ又は複数のオペレーティングシステムを実行する1つ又は複数のCPUを含む上流側コンポーネントに提供する。
本発明の一実施形態は、PCIeスイッチ又はPCIe互換ホストブリッジに含まれる割り込みモード仮想化機能である。
しかしながら、割り込みモード仮想化は、複数の異なるタイプの通信媒体内の複数の異なるコンポーネントに組み込むことができる。
コンピュータシステムは、プロセッサシステムバス110、メモリバス112、アドバンストグラフィックスポート(「AGP」)バス114、及び内部ホストブリッジバス116によってそれぞれメモリ104、グラフィックスレンダリングデバイス106、及びI/Oブリッジ108と相互接続された中央処理装置(「CPU」)102を含む。
I/Oブリッジ108は、メモリブリッジ118に、したがってメモリ104及びCPU102に、追加のデバイスを相互接続する働きをする。
これらの追加のデバイスは、ATAリンク122を介してI/Oブリッジと相互接続されるディスクドライブ120、シリアルリンク126等の他のタイプの通信媒体を介してI/Oブリッジ108と相互接続される1つ又は複数のI/Oデバイスコントローラ124、及びPCIバス136を介した複数のI/Oデバイスコントローラ130〜134を含む。
I/Oブリッジ108及びメモリブリッジ118は全体としてホストブリッジ138を構成する。
バスアドレスは、PCIバス上のデバイス用のスロットに対応し、異なるタイプのPCIバスが、異なる個数のスロットを提供する。
PCIバスを獲得したデバイスは、選択した対象デバイスへのデータの転送にPCIバスの帯域幅全体を用いることができる。
図1には図示しないが、PCIバスは、追加のブリッジデバイスを通じて1つ又は複数の追加のタイプのデータバス及び他の相互接続媒体にさらにブリッジすることができる。
I/Oデバイスコントローラ130〜134は、例えばイーサネット(登録商標)コントローラを含むさまざまなタイプの周辺デバイスの任意のものを制御することができる。
これらの周辺デバイスは、外部通信媒体によりデータを受信及び送信し、PCIバスによりメモリ104にデータを記憶し及びメモリ104からデータをリトリーブし、CPU102を対象とした割り込みを発生し、CPUからコマンドを受信する。
プロトコルスタック、プログラミングインターフェース、ハードウェア動作及びハードウェア特性、並びにハードウェア実装の詳細な論述を含めて、PICバスに関する膨大な量の情報は、教科書において及びインターネットを介して入手可能である。
マイクロプロセッサの周波数及びシステム相互接続が増加し、集積回路密度が増加し、イーサネットを含む外部通信媒体の帯域幅が増加するにつれて、この限界はより明白になってきた。
PCIバスアーキテクチャは帯域幅の増加を強く求められていたが、パラレルバスアーキテクチャに関連した重要な問題が、PCIコンポーネントの動作周波数を増加させることができる範囲を制限していた。
さらに、PCIは、各デバイスを接続するための多数のピンを必要とし、シリコンウェハベースの集積回路上の機能の密度を生み出すことができるにつれてますます負担となってきたマルチピンベースの接続の費用及び設置面積は、増加し続けてきた。
さらに、デバイスの相互接続の要求が急勾配で増加し始めたのと同時に、バスにアクセスするための競合ベースのアービトレーションはバスに接続することができるデバイスの数を制限している。
これらの理由のすべてにより、新しいPCIe相互接続アーキテクチャが開発され、過去5年の間に配備された。
PCIeエンドポイントとPCIeスイッチとの間の各ポイントツーポイント相互接続は1つ又は複数のレーンを含み、各レーンは2対の差動駆動型シリアル線を含む。
このうち、1つの対は、エンドポイントからスイッチへの送信用であり、もう1つの対は、スイッチからエンドポイントへの送信用である。
したがって、各レーンは、エンドポイントとスイッチとの間の全二重通信を提供する。
PCIeエンドポインとPCIeスイッチとの間の所与のリンクは、1つのレーン、2つのレーン、4つのレーン、8つのレーン、12個のレーン、16個のレーン、又は32個のレーンを含むことができ、それによって、エンドポイントとスイッチとの間の通信帯域幅の合計は、エンドポイントデバイス及びシステムの要求を全体として満たすように合わせることができる。
スイッチは、多数のデバイスへの階層的なファンアウト用に互いに相互接続することができる。
図2に示すシステムのコンポーネントの多くは、図1に示すコンポーネントと同一であり、同一の番号でラベル付けされている。
ただし、図2のシステムでは、パラレル通信媒体の代わりに、より高い帯域幅のより安価なシリアル通信媒体への傾向を反映するために、ATAパラレルバス(図1の122)ではなく、シリアル通信媒体であるSATA相互接続140が用いられている。
I/Oブリッジ108は、PCIeポートと、PCIパラレルバスへのマルチピンベースの接続ではなく、PCIeスイッチ142へのマルチレーン相互接続とを含むように変更されている。
PCIeスイッチは、I/OブリッジとさまざまなPCIeエンドポイント130〜135との間のポイントツーポイント相互接続を確立するためのクロスバー型スイッチとして働き、エンドポイントデバイスのポイントツーポイント相互接続も提供することができる。
複数のポイントツーポイント接続は、PCIeスイッチを通じて同時にデータを転送することができる。
I/Oブリッジ内の下位レベルプロトコルレイヤは、PCIe通信媒体に対応するように変更する必要があるが、上位レベルプロトコルレイヤは、旧型のPCIプロトコルと互換性があり、それによって、I/Oブリッジから上流側のシステムのコンポーネントは、旧型のPCIプロトコルを使用してI/Oデバイスと引き続き通信することができる。
現在、全二重の総帯域幅が毎秒5ギガビットの場合に、PCIeレーン内の2対のシリアル通信線のそれぞれは、毎秒2.5ギガビットを転送することができる。
第2世代のPCIeでは、帯域幅は倍増されており、第3世代のPCIeでは、帯域幅は、さらに大幅に増加されると予想される。
I/Oデバイスコントローラ302は、例えば、メモリ306へ転送されてその後のオペレーティングシステムの処理を受けるデータのブロック304を通信又は記憶デバイスから受信している場合がある。
このような状況において、I/Oデバイスコントローラ及びオペレーティングシステムは、メモリの先入れ先出し(「FIFO」)キュー308を通じて通信することができる。
FIFOキューは、キューエントリ310のアレイ、キュー先頭ポインタ312、及びキュー末尾ポインタ314を含む。
図3Bに示すように、I/Oデバイスコントローラは、一般にダイレクトメモリアクセスを有し、該I/Oデバイスコントローラが、周辺バス316、ホストブリッジ318、及びメモリバス320を介してメモリ306へデータブロック(図3の304)を転送し、FIFOキュー308の最初に利用可能なキューエントリ322に記憶することを可能にする。
FIFOキューは、一般に、先頭ポインタをインクリメントし末尾ポインタをデクリメントするためのモジュロ算術を使用することにより循環キューとして管理される。
後になって、図3Cに示すように、CPUは、メモリバス320、ホストブリッジ318、及びプロセッサシステムバス324を介して、キューイングされたデータブロックにアクセスすることができる。
一般に、CPUは、図3Dに示すように、キューイングされたデータブロックをFIFOキューからデキューイングし、そのデータブロックをメモリの他の或る部分へ移動させる。
この部分から、データブロックは、その後、オペレーティングシステム又はオペレーティングシステムの上で動作するそれよりも高レベルのプログラムが使用することができる。
代替的に、データブロックは、I/Oデバイスコントローラが、データブロック自体ではなく、FIFOキューに記憶された記憶データブロックの参照子を用いてFIFOキュー以外のメモリに配置することもできる。
このような場合、プロセッサは、図3Bに示すようなI/Oデバイスコントローラによるエントリのキューイングに続いて、図3Cに示すように、キューイングされたエントリに直ちにアクセスしてこのエントリをデキューイングする必要はない場合がある。
しかしながら、このような場合は稀である。
一般に、I/Oデバイスコントローラは、データをFIFOキューに不規則にキューイングする場合があり、時に多くのデータブロックをFIFOキューに高速にキューイングすることもあれば、また或る時は、長い期間の間、休止状態にある場合もあるので、FIFOキューがオーバーフローせず、FIFOキューのオーバーフローの結果としてI/Oデバイスコントローラが割り込み又は遅延を受けず、また、データがオペレーティングシステム又はそれよりも高レベルのアプリケーションプログラム内の上位レベルルーチンにアクセス可能にされることが遅延した結果として上位レベルプロトコルのタイマが満了しないように、CPUで実行されているオペレーティングシステムは、I/OデバイスコントローラによってFIFOにキューイングされたデータブロックを高速に検出してデキューイングする必要がある。
第1の方策は、「ポーリング」と呼ばれ、図3Eに示される。
その方策では、オペレーティングシステムは、図3Eの単純な制御フロー図360によって示されるイベントループを含む。
このイベントループでは、各タスクがステップ364においてさまざまなFIFOキューへ新しくキューイングされたエントリをチェックした後、オペレーティングシステムは、それらのエントリのタスクを連続的に実行する(362)。
ステップ366において判断されるように、入力がFIFOキューで検出されるとき、その入力は、ステップ368においてハンドリングされる。
キューイングされたデータアイテムを高速に検出してハンドリングする必要があるために、ステップ362において実行されるタスクは、一般に、より大きな概念的なタスクの非常に微小な部分である。
現代のコンピュータシステムでは、ポーリングは、一般に、頻繁でかつ広範囲に及ぶ使用にはあまりに非効率的である。
新しい入力データの表示を求めてメモリのFIFOキュー及び他のデータ構造体をチェックするには、処理サイクルを大幅に消費することが必要である。
I/Oデバイス及び他の割り込み発生デバイスが休止しているとき、それらのサイクルは無駄に費やされ、I/Oデバイスが高いレートのバーストでデータを転送するとき、ポーリング頻度は遅すぎて、キューのオーバーフロー及びフロー制御の背圧に起因したデータ転送割り込みを防止することができない場合がある。
図3Fに示すように、I/OデバイスコントローラがFIFOキューにエントリをキューイングした後、I/Oデバイスコントローラは、割り込み信号370を発生する。
この割り込み信号370は、CPUへ送信され、その結果、割り込みがCPUのハードウェアで発生する。
割り込みが発生した結果、オペレーティングシステムによって実行される通常の命令実行シーケンスの割り込みが生じ、割り込みサービスルーチンへの分岐が生じる。
図3Gでは、オペレーティングシステムは、第1の列382によって表される順序付けられた命令シーケンスを含むルーチンを現在実行している。
命令の実行及び命令参照レジスタのインクリメントは、矢印380等の曲線の矢印によって図3Gに表されている。
I/Oデバイスコントローラは、命令シーケンス382の命令384の実行中にCPUに検出される割り込みを発生する。
その命令の実行完了に続いて、実行は、割り込みサービスルーチン(「ISR」)386に分岐する。
割り込みサービスルーチン386は、オペレーティングシステム実行の現在の状況を保存し、適切な割り込みハンドラルーチン310を呼び出すことによって割り込みハンドラに割り込みをディスパッチする。
割り込みハンドラは、例えば、キューイングされたエントリをFIFOキューからデキューイングし、データ構造体を変更してデータの受信を示すことができ、それによって、オペレーティングシステムは、その後、データを処理し又はデータを上位レベルのオペレーティングシステムルーチン若しくはアプリケーションプログラムに渡すことができる。
割り込みハンドラが実行を終了したとき、実行は、割り込みが発生しなかった場合に実行されていた次の命令310に戻る。
割り込みハンドラからの復帰は、一般に、当初割り込みを受けたオペレーティングシステムルーチン382の状況を復元する割り込み復帰(return-from-interrupt)命令によって容易にされる。
多くの異なる割り込みは信号で通知することができ、複数の割り込みが時間的に接近して発生することもあるし、同時に発生することさえもあるので、割り込み信号通知は、一般に、特権レベルの変更、クリティカルコードの割り込みの無効化、及び受信した割り込みをスタックするためのメカニズムを伴う。
上述したように、PCIはパラレルバスである。
アドレス及びデータは、共通信号線により多重化され、32ビット又は64ビットが各サイクルにおいて転送される。
図4に示すように、PCIバス402は、データ及びアドレスの信号線404に加えて、複数の割り込み信号線406を含む。
PCIバスには、A、B、C、及びDで指定された4本の割り込み信号線がある。
PCIバス上のスロットを占有する各I/Oデバイスコントローラは、CPUに信号通知するための4つの割り込みの1つを使用するように構成される。
5つ以上のデバイスがPCIバススロットにある場合、複数のデバイスが、1つ又は複数の割り込みを共有することになる。
ホストブリッジ410がPCIバス上で割り込み信号を検出するとき、ホストブリッジは、PCIバス割り込みに応答してアドバンスプログラマブル割り込みコントローラ(「APIC」)割り込みを信号通知することにより、PCIバス割り込み信号をAPIC412割り込みに変換する。
APICは、次に、CPU割り込みを引き起こし、発生した割り込みについての情報を符号化したバイト又はワードをCPUに渡し、それによって、オペレーティングシステムは、符号化された情報を使用して、割り込みの性質を判断することができ、したがって、割り込みをハンドリングすることができる。
一例として、図4の下部に示すように、I/Oデバイスコントローラ414には、PCIバス割り込みAを割り当てることができる。
その割り込みを信号通知すると、ホストブリッジ410は、該割り込みをAPIC割り込み416に変換し、対応するAPIC割り込みを信号通知し、それによって、APICは、次に、適切な対応する割り込みをCPUに引き起こす。
このPCIバス割り込みアーキテクチャは、「INTx」割り込みメカニズム又は「INTx割り込みモード」と呼ばれる。
図5A〜図5Dは、PCIの後の世代及びPCIeで用いられるMSI割り込みメカニズムを示す。
図5Aに示すように、MSI割り込みをサポートしているI/Oデバイスコントローラは、CPUで動作しているオペレーティングシステムがMSI割り込みを構成することを可能にするレジスタ502〜504を提供する。
これらのレジスタはCPUのアドレス空間にマッピングされ、CPUがあたかもメモリへの書き込み及びメモリからの読み出しを行っているかのように、CPUがMSI割り込み構成中にレジスタに値を書き込むことができ、レジスタから値を読み出すことができるようにする。
図5Aでは、レジスタは、I/Oデバイスコントローラ内に示されるだけでなく、オペレーティングシステムが、I/Oデバイスに配置されたレジスタを、オペレーティングシステムがアクセス可能なメモリアドレス空間の一部とみなすことを示すために、システムメモリ508の上に示した破線の長方形内にも示されている。
オペレーティングシステムは、実際のメモリロケーションに書き込みを行っているように、これらのレジスタに書き込みを行う。
一方、破線は、レジスタがメモリレジスタではなく、代わりに、I/Oデバイスに配置されていることを示す。
システム初期化中、オペレーティングシステムは、周辺相互接続を介してCPUと相互接続されたデバイスを発見して能力照会するプロセスを行う。
オペレーティングシステムが、MSI割り込みを行うことができるデバイスを発見し、オペレーティングシステムがMSI割り込みメカニズムを用いることを選んだとき、図5Bに示すように、その趣旨の表示が、オペレーティングシステムによって制御レジスタ502に配置される。
この場合も、オペレーティングシステムは、オペレーティングシステムのメモリアドレス空間内のアドレスに書き込みを行い、この書き込みは、その後、ホストブリッジ510によってメモリではなくI/Oデバイスに指示される。
構成プロセス中、アドレスレジスタ503は、I/Oデバイスコントローラが、割り込みを発生するためにデータ値を書き込むアドレスで構成される。
データレジスタ504も、データ値を含むように構成される。
このデータ値の一定の下位ビットは、I/Oデバイスが要求するベクトルの数、及びI/Oデバイスがいくつのベクトルを使用することをオペレーティングシステムが許可するのかに応じて、異なる割り込みを示すようにI/Oデバイスが変更することができる。
その後、図5Cに示すように、I/Oデバイスコントローラが、CPUに割り込みを発生したいとき、I/Oデバイスコントローラは、メモリ書き込み動作をアドレスイン503に発行し、データレジスタ504に記憶されたデータ値の変更されたバージョンをそのアドレスに書き込んで、CPUに引き起こす必要がある割り込みのタイプを示す。
ホストブリッジは、書き込み動作を検出し、その書き込み動作をCPUへの割り込みに変換することができ、又は、代替的に、書き込みは、システムメモリに対して実行することもでき、低レベルプロセスが、このような書き込みを検出して、CPU内に割り込みを発生することができる。
「MSI−X」と呼ばれる後の割り込みメカニズムは、I/Oデバイスコントローラの機能によって信号通知することができる可能な割り込みベクトルを、数を増やして提供し、I/Oデバイスコントローラが割り込みを発生するために書き込むことができるアドレスの数を増加させ、追加の機能を通じて柔軟性を追加して提供する。
MSI割り込みメカニズムは、物理的な割り込みピン接続及びトレースを取り除くことを可能にし、より多く数の異なる割り込み信号を提供して、割り込み発生デバイスが所与の割り込み信号線を共有する必要性を回避するので、現代のデバイスでは好ましい。
図6に示すように、コンピュータシステムをPCIからPCIeに更新するために、PCIe準拠のI/Oデバイスコントローラ602、PCIe周辺相互接続604、及びホストブリッジ606内のPCIe準拠のI/Oブリッジをコンピュータシステムに組み込むことができる。
一方、PCIプロトコルに対する上位レベルインターフェースもPCIe周辺相互接続に使用することができるので、オペレーティングシステム及び上流側のコンポーネントは、不変のままとすることができる。
シリアル通信アーキテクチャとパラレルバスアーキテクチャとの間の相違は、ハードウェアポート及び接続並びにPCIプロトコルスタックの最初の2つのレイヤ内に完全にカプセル化される。
完全な互換性を提供するには、MSI割り込み及び旧型のINTxメカニズムのPCIeエミュレーションの双方を提供するために新しいPCIe互換I/Oデバイスコントローラが推奨される。
INTx割り込みは、PCIeシリアル通信媒体によりメッセージとして送信されるが、ホストブリッジ又は別のコンポーネントにおいて変換されて、CPUに対する旧式のINTx割り込み信号が発生される。
図7に示すように、旧式のINTx割り込みメカニズム702を引き続き用いているオペレーティングシステム及び/又はBIOSシステムを有する多くのコンピュータシステムが残っている。
図6を参照して論述したように、これらのシステムは、PCIe周辺相互接続704を用いるように更新することができる。
しかしながら、ますます多くのシステムがPCIeに移行するにつれて、I/Oデバイスコントローラの多くの製造業者は、旧式のINTx割り込みのサポートを完全に廃止している。
したがって、図7に示すように、システム製造業者及びユーザは、多くの場合、旧式のINTx割り込み702のみを使用するように設計された旧式のオペレーティングシステム及びBIOSレイヤを有するシステム内に、INTx割り込みのサポートを欠いた新型のI/Oデバイスコントローラ706を含めるように試みる場合がある。
実際に、旧式のINTx割り込みのサポートを欠いたI/Oデバイスコントローラは、このような環境では適切に機能することができない。
本発明の実施形態は、INTx割り込みメカニズムをサポートしていないI/Oデバイスコントローラから上流側に仮想INTxインターフェース802を導入する。
この仮想INTxインターフェース802は、図8に示すように、PCIeスイッチ内に好都合に実施することができるが、代替的に、I/Oブリッジ内に実施することもできるし、別個のデバイスとして実施することもできる。
仮想INTxインターフェース802は、MSI割り込み及びMSI−X割り込みのみをサポートする新型のI/OデバイスコントローラがMSI割り込み及びMSI−X割り込みだけでなく、旧式のINTx割り込みもサポートするように見えるI/Oデバイスコントローラに対する仮想インターフェースをオペレーティングシステムに提供する。
仮想INTxインターフェースが、PCIeスイッチで実施されるとき、仮想INTxインターフェースは、MSIメモリ書き込み動作を、INTx割り込みメカニズムをサポートしていないI/Oデバイスコントローラから受信し、これらのMSIメモリ書き込みをINTx割り込みエミュレーションメッセージに変換する。
これらのINTx割り込みエミュレーションメッセージは、その後、ホストブリッジ804へ転送される。
代替的に、仮想INTインターフェースは、I/Oブリッジの一部として実施されるとき、ホストブリッジ804内において、MSIメモリ書き込みをINTx割り込みエミュレーションメッセージに変換することができる。
加えて、仮想INTxインターフェースは、INTx互換性表示及びINTx互換性情報をオペレーティングシステム及びBIOSレイヤに提供し、INTxエミュレーションをサポートしていない仮想化されたI/Oデバイスコントローラ上でMSI割り込みを構成する。
図9Aは、PCIeスイッチ、又はI/OデバイスコントローラとI/Oブリッジ若しくはホストブリッジとの間に位置する専用デバイス内のイベントハンドリングループとして、仮想INTxの実施態様を高レベルで示す。
ステップ902において、一組のデータ構造体及び他の情報が、PCIe周辺相互接続上のエンドポイントデバイスのすべてについて構成される。
次に、ステップ903〜913を含む連続ループにおいて、仮想INTxインターフェースは、次のイベントを待ち続け、イベントが仮想INTxインターフェースに関係しているとき、そのイベントを適切にハンドリングする。
例えば、仮想INTxインターフェースが、I/Oデバイスコントローラによって送信されたメモリ書き込み動作の受信を検出し、CPU上に割り込みを引き起こすとき、ルーチン「割り込みアサート(assert interrupt)」がステップ905において呼び出される。
ステップ907において検出されるように、仮想INTxインターフェースがCPUから割り込みクリア信号を受信するとき、ルーチン「割り込みデアサート(deassert interrupt)」が、ステップ908において呼び出される。
なお、ステップ907では、CPUが、I/Oデバイスのビット又は仮想INTxインターフェースのビットのいずれかに書き込みを行う。
仮想INTxインターフェースが、ステップ909において、I/Oデバイスコントローラ内に記憶された互換性情報の、オペレーティングシステム又はBIOSによるアクセスを検出するとき、仮想INTxインターフェースは、ステップ910において互換性応答ルーチンを呼び出す。
ステップ911において判断されるように、検出されたイベントが、ホストによるエンドポイントデバイスを構成する試みであるとき、ルーチン「構成(configure)」がステップ912において呼び出される。
PCIeスイッチ内の仮想INTxインターフェースが検出することができる他のすべてのイベントは、ステップ913において、キャッチオール(catch-all)イベントハンドラにより適切にハンドリングされる。
ステップ914〜918のforループにおいて、PCIe周辺相互接続に接続された各デバイスについてデータ構造体が生成されて初期化される。
このデータ構造体は、さまざまな実施態様により変化し得るが、PCIeに接続された各エンドポイントデバイスのアドレスの表示及びそのデバイスの構成ステータスの表示を含むことができる。
初期において、この構成ステータスは「未構成」である。
このルーチンは、ステップ919において、I/Oデバイスコントローラ又はPCIeに接続された他の割り込み発生デバイスが発生したメモリWRITE(書き込み)コマンドをインターセプトする。
ステップ920において、ルーチン「割り込み(interrupt)」が、割り込みメッセージを送信したデバイスに対応するデータ構造体を見つける。
ステップ922において判断されるように、デバイスが仮想化され、INTx割り込みモードにあるとき、この割り込みメッセージは、ステップ924において、仮想INTxインターフェースによりINTx割り込みエミュレーションメッセージ(INTxアサートメッセージ(Assert INTx Message))に変換される。
デバイスが仮想化され、INTx割り込みモードで動作している場合、変換されたINTx割り込みエミュレーションメッセージは、ステップ925においてホストブリッジへ転送される。
デバイスが仮想化されていないか又はINTx割り込みモードで動作していないとき、918において受信されたオリジナルのWRITEコマンドが、ステップ925において、ホストブリッジへ転送される。
ステップ926において、ルーチン「割り込みデアサート」は、オペレーティングシステム若しくはBIOSが発生したI/Oデバイスにおけるビットへの書き込みを検出するか又はオペレーティングシステム若しくはBIOSが発生した仮想INTxインターフェースにおけるビットへの書き込みをインターセプトする。
ステップ927において、ルーチン「割り込みデアサート」は、オペレーティングシステム又はBIOSがビット書き込み動作の対象としたデバイスに対応するデータ構造体を見つける。
ステップ928において判断されるように、デバイスが仮想化され、INTx割り込みモードにあるとき、INTx割り込みエミュレーションメッセージであるINTxデアサートメッセージ(De-assert INTx Message)が、ステップ929においてホストブリッジへ転送される。
このルーチンは、デバイスの構成を容易にするために、ステップ930において、デバイスの特性及び互換性を表すデータを含むレジスタへのオペレーティングシステム又はBIOSレイヤによるアクセスに対する、I/Oデバイスコントローラ又はPCIeに接続された他の割り込み発生デバイスによる応答をインターセプトする。
ステップ932において判断されるように、デバイスによる応答が、そのデバイスがMSI割り込み及び旧式のINTx割り込みの双方をサポートしていることを示すとき、又はデバイスによる応答が、そのデバイスが旧式のINTx割り込みのみをサポートしていることを示すとき、この応答は、ステップ940において、仮想INTxインターフェース及びPCIeスイッチによってホストブリッジへ転送される。
デバイスによる応答が、そのデバイスがMSI割り込みのみをサポートしていることを示すとき、仮想ITNxインターフェースは、ステップ934において、応答デバイスがMSI割り込み及びINTx割り込みの双方をサポートしていることを示すようにその応答を変更し、ステップ936〜937において、そのデバイスに対応するデータ構造体を見つけ、そのデバイスが仮想INTxインターフェースによって仮想化されていることを示すようにこのデータ構造体を更新する。
オペレーティングシステム又はBIOSによるI/Oデバイスコントローラ又はPCIe周辺相互接続に接続された他の割り込み発生デバイスを構成する試みを表す信号又はメッセージが、ステップ950において受信される。
ステップ952において判断されるように、この構成信号又は構成メッセージが、デバイスをMSI割り込み用に初期化する試みを表すとき、ステップ954において、仮想INTxインターフェースは、構成中のデバイスに対応するデータ構造体を見つけ、そのデバイスがMSI割り込みモードで動作することを示すようにデータ構造体を更新する。
次に、ステップ956において、構成信号又は構成メッセージは、仮想INTxインターフェースによってそのデバイスへ転送される。
ステップ958において判断されるように、そうではなく、構成信号又は構成メッセージが、デバイスをINTx割り込み用に構成するデバイスを対象としているとき、そのデバイスのデータ構造体は、ステップ960において見つけられ、ステップ962において、デバイスが仮想化されているか否かを判断するためにチェックされる。
デバイスが仮想化されているとき、データ構造体は、ステップ964において、デバイスが仮想化されておりかつINTxモードで動作していることの双方を示すように更新され、構成メッセージ又は構成信号はMSI構成手順に変換される。
いずれにしても、1つ又は複数の構成信号又は構成メッセージが、その後、ステップ966において、デバイスへ転送される。
或る場合において、デバイスが仮想化されていないとき、構成メッセージ又は構成信号を通過させることができる。
デバイスが仮想化されている場合、INTx構成はMSI構成に変換される。
このMSI構成は、複数のデバイスレジスタ書き込みを伴うことができる。
特定の場合に、特定の構成動作は、信号又は動作のシーケンスを伴うことができる。
このシーケンスのすべての信号又は動作は、ルーチン「構成」に対する別々の呼び出しによって別々に取り扱うことができるが、このシーケンスの信号又は動作のすべてをステップ964においてMSIメッセージに変換することが必要であるとは限らない。
代替的に、「構成」は、1つの呼び出しでシーケンスのすべての信号又は動作をハンドリングするように実施することができる。
構成信号又は構成メッセージが、MSI式割り込みも構成されず、INTx割り込みも構成されないことを示しているとき、受信された構成信号又は構成メッセージは、ステップ968においてハンドリングされる。
多くの異なる代替的な実施態様が可能である。
デバイス構成、割り込み発生、並びに旧式のINTx割り込みメカニズムと新型のMSIメカニズム及びMSI−Xメカニズムとの双方の他の態様についての特定の方法及びプロトコルは、実施態様ごとに変化し得る。
その上、本発明の代替的な実施形態は、旧型の割り込み方法及び割り込みメカニズムをエミュレーションすることができない新型のデバイスの互換性を復元するために、仮想割り込みインターフェースを他のタイプの通信媒体及びデータ転送チャネルに導入するのに用いることもできる。
正確な実施態様が何を詳述しインターフェースしようとも、上流側のデバイス、ファームウェア、及びソフトウェアが旧式の方法及びインターフェースを使用してデバイスとやり取りすることができるよう新式の割り込みメッセージ又は割り込み信号をエミュレーションするには、仮想割り込みインターフェースは、どのデバイスが仮想化されているのかを判断する必要があり、旧式のデバイスの構成を新式の構成手順に変換する必要があり、新式の割り込みメッセージ又は割り込み信号をインターセプトする必要がある。
本発明の趣旨の範囲内の変更は当業者に明らかである。
例えば、仮想INTx割り込みインターフェースは、PCIeスイッチに組み込むこともできるし、PCIeスイッチとホストブリッジとの間の別個のディスクリートコンポーネントとして組み込むこともできるし、ホストブリッジ内に組み込むこともできるし、或いはディスクリートコンポーネントとしてホストブリッジから上流側に組み込むこともできる。
仮想INTx割り込みインターフェースは、任意の個数の異なるソフトウェアモジュール、ファームウェアモジュール、及びハードウェアモジュールを使用し、異なるタイプの論理回路を使用し、かつ異なるプログラミング言語、制御構造、データ構造体を使用して、他のこのようなプログラミング変数及び設計変数を変更することによって実施することができる。
複数のスイッチ及び追加のファンアウトレベルを有するより複雑なPCIe通信媒体では、仮想INTx割り込みインターフェースは、最も高いレベルのスイッチにおいて実施することもできるし、代替的に、各スイッチにおいて、そのスイッチに直接接続されたあらゆるエンドポイントデバイスをハンドリングするように実施することもできる。
仮想INTxインターフェースを単純なコンピュータシステムの状況で論述してきたが、仮想INTxインターフェースは、ブレードエンクロージャを含むハイエンドコンピュータシステムに組み込まれた複雑なスイッチングプラットフォームで用いることができる。
図10は、スイッチプラットフォームを含むハイエンドコンピュータシステムを示す。
このスイッチプラットフォームは、下流側P2Pコンポーネント1004等の下流側P2Pコンポーネント又は上流側P2Pコンポーネント1006等の上流側P2Pコンポーネントに仮想INTxインターフェースを設けることもできるし、別個のレイヤ又はスイッチ内のコンポーネントとして仮想INTxインターフェースを設けることもできる。
しかしながら、具体的な細部は、本発明を実施するのに必要とされないことが当業者には明らかである。
本発明の具体的な実施形態の上記説明は、例示及び説明の目的で提示されている。
上記説明は、網羅的であることを意図するものでもなければ、開示した正確な形態に本発明を限定することを意図するものでもない。
上記教示を考慮して多くの変更及び変形が可能である。
実施形態は、本発明の原理及びその実際の適用を最も良く説明し、それによって、他の当業者が、本発明及びさまざまな変更を有するさまざまな実施形態を、考慮される特定の使用に適するように最も良く利用することを可能にするために図示及び説明されている。
本発明の範囲は、次の特許請求の範囲及びその均等なものによって規定されることが意図されている。
Claims (8)
- 仮想割り込みモードインターフェース(802)であって、
割り込みメッセージ(904)、構成メッセージまたは構成信号(911)を受信し、互換性レジスタへのアクセス(909)に応答するメッセージまたは信号を受信する受信コンポーネントと、
メッセージまたは信号を処理する処理コンポーネントであって、
割り込み発生デバイスが第2の割り込みモードをサポートせず、前記受信コンポーネントが、前記割り込み発生デバイスを前記第2の割り込みモードで動作するように構成する、前記割り込み発生デバイスを対象とした構成メッセージまたは構成信号を受信したとき、前記割り込み発生デバイスを第1の割り込みモードで動作する(960、962、964、966)ように構成する(912)ことであって、前記割り込み発生デバイスは、その後、前記第2の割り込みモードで仮想的に動作する、構成することと、
前記第2の割り込みモードで仮想的に動作する1つまたは複数の割り込み発生デバイスから前記受信コンポーネントによって受信された各第1の割り込みモード割り込みメッセージを、第2の割り込みモード割り込みに変換する(924)と共に、前記第2の割り込みモード割り込みを前記受信した第1の割り込みモード割り込みメッセージの目的とする受信者へ転送することと
を行う処理コンポーネントと、
前記割り込み発生デバイスの現在のステータスおよび割り込みモードの表示を含む各割り込み発生デバイスのデータ構造体であって、各割り込み発生デバイスに対応する前記データ構造体は、前記割り込み発生デバイスが構成されていないことを示すように初期化される(917)、各割り込み発生デバイスのデータ構造体と
を備え、
前記受信コンポーネントが、互換性レジスタのアクセスに対する応答を前記割り込み発生デバイスから受信する場合、前記処理コンポーネントは、
前記応答が、前記割り込み発生デバイスが前記第1の割り込みモードでのみ動作することができることを示すか否かを判断し(932)、
前記応答が、前記割り込み発生デバイスが前記第1の割り込みモードでのみ動作することができることを示すとき、前記割り込み発生デバイスが前記第2の割り込みモードおよび前記第1の割り込みモードの双方で動作することができることを示すように前記応答を変更し(934)、前記割り込み発生デバイスが仮想化されていることを示すように、前記割り込み発生デバイスを表す前記データ構造体を更新し(937)、前記変更された応答を、前記互換性応答の目的とする受信者へ転送し(940)、
前記応答が、前記割り込み発生デバイスが前記第2の割り込みモードおよび前記第1の割り込みモードの双方で動作することができることを示すとき、または前記応答が、前記割り込み発生デバイスが前記第2の割り込みモードでのみ動作することができることを示すとき、前記互換性応答の前記目的とする受信者へ前記応答を転送する(940)
仮想割り込みモードインターフェース。 - 前記第2の割り込みモードは、PCIのINTx割り込みモードであり(958)、
前記第1の割り込みモードは、PCIeのMSI割り込みモードまたはMSI−X割り込みモードであり(952)、
前記仮想割り込みモードインターフェース(802)は、
前記割り込み発生デバイスとPCIeスイッチとの間に導入されたデバイス、
前記PCIeスイッチ(704)、
ホストブリッジデバイス(804)、および
前記PCIeスイッチと前記ホストブリッジデバイスとの間に導入されたデバイス、
の1つに組み込まれ、
前記仮想割り込みモードインターフェースが組み込まれた前記PCIeスイッチ、前記ホストブリッジデバイス、またはディスクリートデバイスは、PCIe相互接続によって前記割り込み発生デバイス(706)と相互接続され、
前記仮想割り込みモードインターフェースが組み込まれた前記PCIeスイッチ、前記ホストブリッジデバイス、または前記ディスクリートデバイスは、前記割り込み発生デバイスが発生した割り込みメッセージに応答して割り込みが引き起こされる少なくとも1つのCPU(102)と相互接続される
請求項1に記載の仮想割り込みモードインターフェース。 - 前記受信コンポーネントが、前記割り込み発生デバイスを対象とした構成メッセージまたは構成信号を受信する場合(950)、前記処理コンポーネントは、
前記構成メッセージまたは前記構成信号が、前記割り込み発生デバイスを前記第1の割り込みモードで動作するように構成する試みを表すか否かを判断し(952)、
前記構成メッセージまたは前記構成信号が、前記割り込み発生デバイスを前記第1の割り込みモードで動作するように構成する試みを表すとき、前記構成メッセージまたは前記構成信号を前記割り込み発生デバイスへ転送し(956)、
前記構成メッセージまたは前記構成信号が、前記割り込み発生デバイスを前記第2の割り込みモードで動作するように構成する試みを表すとき(958)、
前記割り込み発生デバイスが仮想化されているか否かを、前記割り込み発生デバイスを表す前記データ構造体から判断し(962)、
前記割り込み発生デバイスが仮想化されているとき、前記割り込み発生デバイスが前記第2の割り込みモードで仮想的に動作していることを示すように、前記割り込み発生デバイスを表す前記データ構造体を更新し(964)、前記構成メッセージまたは前記構成信号を第1の割り込みモード構成メッセージに変換し(964)、前記第1の割り込みモード構成メッセージを前記割り込み発生デバイスへ転送し(966)、
前記割り込み発生デバイスが仮想化されていないとき、前記構成メッセージまたは前記構成信号を前記割り込み発生デバイスへ転送する(966)
請求項1に記載の仮想割り込みモードインターフェース。 - 前記受信コンポーネントが、前記割り込み発生デバイスから前記第1の割り込みモード割り込みメッセージを受信する場合(919)、前記処理コンポーネントは、
前記割り込み発生デバイスが仮想化されて、前記第2の割り込みモードで仮想的に動作しているか否かを、前記割り込み発生デバイスを表す前記データ構造体から判断し(922)、
前記割り込み発生デバイスが仮想化されて、前記第2の割り込みモードで仮想的に動作しているとき、前記割り込みメッセージを前記第2の割り込みモード割り込みメッセージまたは前記第2の割り込みモード割り込み信号に変換し(924)、前記変換された割り込みメッセージまたは割り込み信号を前記割り込みメッセージの前記目的とする受信者へ転送し(925)、
前記割り込み発生デバイスが仮想化されておらず、前記第2の割り込みモードで仮想的に動作していないとき、前記割り込みメッセージまたは前記割り込み信号を、前記割り込みメッセージの前記目的とする受信者へ転送し(925)、
一エンティティが、仮想化されて前記第2の割り込みモードで仮想的に動作している割り込み発生デバイスを対象として試みた割り込みクリア動作を、前記受信コンポーネントが検出するとき(907、928)、前記処理コンポーネントは、
第2の割り込みモードデアサートエミュレーションメッセージを前記エンティティに返す(929)
請求項1に記載の仮想割り込みモードインターフェース。 - 割り込み発生デバイス(706)をオペレーティングシステム(702)またはBIOSに対して仮想化するための方法であって、
前記割り込み発生デバイスが第2の割り込みモードをサポートせず、かつ前記割り込み発生デバイスを前記第2の割り込みモードで動作するように構成する、前記割り込み発生デバイスを対象とした構成メッセージまたは構成信号が受信されたとき、前記割り込み発生デバイスを、第1の割り込みモードで動作すると共に前記第2の割り込みモードで仮想的に動作するように構成することと(960、962、964、966)、
前記第2の割り込みモードで仮想的に動作する前記割り込み発生デバイスから受信された第1の割り込みモード割り込みメッセージを、第2の割り込みモード割り込みに変換する(964)と共に、前記第2の割り込みモード割り込みを前記受信された第1の割り込みモード割り込みメッセージの目的とする受信者へ転送することと、
現在のステータスおよび割り込みモードの表示を含む各割り込み発生デバイスのデータ構造体を作成すると共に保持することと、
各割り込み発生デバイスに対応する前記データ構造体を初期化する(917)ことであって、前記割り込み発生デバイスが構成されていないことを示す、初期化することと、
前記割り込み発生デバイスからの1つまたは複数の互換性レジスタのアクセスに対する応答が受信される場合、
前記応答が、前記割り込み発生デバイスが前記第1の割り込みモードでのみ動作することができることを示すか否かを判断する(932)ことと、
前記応答が、前記割り込み発生デバイスが前記第1の割り込みモードでのみ動作することができることを示すとき、前記割り込み発生デバイスが前記第2の割り込みモードおよび前記第1の割り込みモードの双方で動作することができることを示すように前記応答を変更し(934)、前記割り込み発生デバイスが仮想化されていることを示すように、前記割り込み発生デバイスを表す前記データ構造体を更新する(937)と共に、前記変更された応答を、前記応答の目的とする受信者へ転送する(940)ことと、
前記応答が、前記割り込み発生デバイスが前記第2の割り込みモードおよび前記第1の割り込みモードの双方で動作することができることを示すとき、または前記応答が、前記割り込み発生デバイスが前記第2の割り込みモードでのみ動作することができることを示すとき、前記互換性応答の前記目的とする受信者へ前記応答を転送する(940)ことと
を含む方法。 - 前記第2の割り込みモードは、PCIのINTx割り込みモードであり(958)、
前記第1の割り込みモードは、PCIeのMSI割り込みモードまたはMSI−X割り込みモードであり(952)、
該請求項6に記載の方法は、
前記割り込み発生デバイスとPCIeスイッチとの間に導入されたデバイス、
前記PCIeスイッチ(704)、
ホストブリッジデバイス(804)、および
前記PCIeスイッチと前記ホストブリッジデバイスとの間に導入されたデバイス、
の1つにおいて実行され、
前記仮想割り込みモードインターフェースが組み込まれた前記PCIeスイッチ、前記ホストブリッジデバイス、またはディスクリートデバイスは、PCIe相互接続によって前記割り込み発生デバイス(706)と相互接続され、
前記仮想割り込みモードインターフェースが組み込まれた前記PCIeスイッチ、前記ホストブリッジデバイス、または前記ディスクリートデバイスは、前記割り込み発生デバイスが発生した割り込みメッセージに応答して割り込みが引き起こされる少なくとも1つのCPU(102)と相互接続される
請求項5に記載の方法。 - 前記割り込み発生デバイスを対象とした構成メッセージまたは構成信号が受信される場合、
前記構成メッセージまたは前記構成信号が、前記割り込み発生デバイスを前記第1の割り込みモードで動作するように構成する試みを表すか否かを判断する(952)ことと、
前記構成メッセージまたは前記構成信号が、前記割り込み発生デバイスを前記第1の割り込みモードで動作するように構成する試みを表すとき、前記構成メッセージまたは前記構成信号を前記割り込み発生デバイスへ転送する(956)ことと、
前記構成メッセージまたは前記構成信号が、前記割り込み発生デバイスを前記第2の割り込みモードで動作するように構成する試みを表すとき(958)、
前記割り込み発生デバイスが仮想化されているか否かを、前記割り込み発生デバイスを表す前記データ構造体から判断する(962)ことと、
前記割り込み発生デバイスが仮想化されているとき、前記割り込み発生デバイスが前記第2の割り込みモードで仮想的に動作していることを示すように、前記割り込み発生デバイスを表す前記データ構造体を更新し(964)、前記構成メッセージまたは前記構成信号を第1の割り込みモード構成メッセージまたは第1の割り込みモード構成信号に変換する(964)と共に、前記第1の割り込みモード構成メッセージを前記割り込み発生デバイスへ転送する(966)ことと、
前記割り込み発生デバイスが仮想化されていないとき、前記構成メッセージまたは前記構成信号を前記割り込み発生デバイスへ転送する(966)ことと
をさらに含む請求項5に記載の方法。 - 前記割り込み発生デバイスからの前記第1の割り込みモード割り込みメッセージが受信される(919)場合、
前記割り込み発生デバイスが仮想化されて、前記第2の割り込みモードで仮想的に動作しているか否かを、前記割り込み発生デバイスを表す前記データ構造体から判断する(922)ことと、
前記割り込み発生デバイスが仮想化されて、前記第2の割り込みモードで仮想的に動作しているとき、前記割り込みメッセージを第2の割り込みモード割り込みメッセージまたは第2の割り込みモード割り込み信号に変換する(924)と共に、前記変換された割り込みメッセージまたは割り込み信号を前記割り込みメッセージの前記目的とする受信者へ転送する(925)ことと、
前記割り込み発生デバイスが仮想化されておらず、前記第2の割り込みモードで仮想的に動作していないとき、前記割り込みメッセージまたは前記割り込み信号を、前記割り込みメッセージの前記目的とする受信者へ転送する(925)ことと、
一エンティティが、仮想化されて前記第2の割り込みモードで仮想的に動作している割り込み発生デバイスを対象として試みた割り込みクリア動作が検出されるとき(907、928)、
第2の割り込みモードデアサートエミュレーションメッセージを前記エンティティに返す(929)ことと
をさらに含む請求項5に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2008/005448 WO2009134218A1 (en) | 2008-04-28 | 2008-04-28 | Virtual-interrupt-mode interface and method for virtualizing an interrupt mode |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011519092A JP2011519092A (ja) | 2011-06-30 |
JP5108975B2 true JP5108975B2 (ja) | 2012-12-26 |
Family
ID=41255268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011506240A Expired - Fee Related JP5108975B2 (ja) | 2008-04-28 | 2008-04-28 | 仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9037768B2 (ja) |
EP (1) | EP2288996B1 (ja) |
JP (1) | JP5108975B2 (ja) |
KR (1) | KR101445434B1 (ja) |
CN (1) | CN102016812B (ja) |
WO (1) | WO2009134218A1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5320140B2 (ja) * | 2009-04-14 | 2013-10-23 | 株式会社日立製作所 | 計算機システム、割込み中継回路及び割込み中継方法 |
CN102819517A (zh) * | 2011-06-08 | 2012-12-12 | 鸿富锦精密工业(深圳)有限公司 | Pcie接口卡 |
US9128920B2 (en) * | 2011-11-30 | 2015-09-08 | Marvell World Trade Ltd. | Interrupt handling systems and methods for PCIE bridges with multiple buses |
CN102523153B (zh) * | 2011-12-08 | 2014-06-04 | 华中科技大学 | 虚拟化环境下的负载均衡方法 |
US9014500B2 (en) * | 2012-01-08 | 2015-04-21 | Gary Shuster | Digital media enhancement system, method, and apparatus |
US9418035B2 (en) * | 2012-10-22 | 2016-08-16 | Intel Corporation | High performance interconnect physical layer |
US10078603B2 (en) * | 2012-11-30 | 2018-09-18 | Red Hat Israel, Ltd. | MSI events using dynamic memory monitoring |
US9830286B2 (en) | 2013-02-14 | 2017-11-28 | Red Hat Israel, Ltd. | Event signaling in virtualized systems |
CN103440188B (zh) * | 2013-08-29 | 2016-09-28 | 福建星网锐捷网络有限公司 | 一种pcie硬件故障的检测方法及装置 |
US9465760B2 (en) * | 2013-11-18 | 2016-10-11 | Futurewei Technologies, Inc. | Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters |
CN105095128B (zh) * | 2014-05-22 | 2020-04-03 | 中兴通讯股份有限公司 | 中断处理方法及中断控制器 |
US9507740B2 (en) | 2014-06-10 | 2016-11-29 | Oracle International Corporation | Aggregation of interrupts using event queues |
US9396142B2 (en) * | 2014-06-10 | 2016-07-19 | Oracle International Corporation | Virtualizing input/output interrupts |
US10922252B2 (en) | 2015-06-22 | 2021-02-16 | Qualcomm Incorporated | Extended message signaled interrupts (MSI) message data |
US10346324B2 (en) * | 2017-02-13 | 2019-07-09 | Microchip Technology Incorporated | Devices and methods for autonomous hardware management of circular buffers |
CN113454590A (zh) | 2019-02-14 | 2021-09-28 | 国际商业机器公司 | 定向中断虚拟化 |
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
CN113454591A (zh) | 2019-02-14 | 2021-09-28 | 国际商业机器公司 | 具有阻止指示符的定向中断虚拟化 |
WO2020164935A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
WO2020164818A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization |
JP7459119B2 (ja) | 2019-02-14 | 2024-04-01 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 割り込みテーブルを使用したマルチレベルの仮想化のための有向割り込み方法、システム、プログラム |
US11550745B1 (en) * | 2021-09-21 | 2023-01-10 | Apple Inc. | Remapping techniques for message signaled interrupts |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG52380A1 (en) | 1991-09-23 | 1998-09-28 | Intel Corp | A computer system and method for executing interrupt instructions in two operating modes |
KR100306636B1 (ko) * | 1994-06-28 | 2001-11-30 | 피터 엔. 데트킨 | Pci-isa인터럽트프로토콜컨버터및선택메카니즘 |
US5812858A (en) * | 1994-09-16 | 1998-09-22 | Cirrus Logic, Inc. | Method and apparatus for providing register and interrupt compatibility between non-identical integrated circuits |
US5619703A (en) * | 1995-06-06 | 1997-04-08 | Cirrus Logic, Inc. | Apparatus and method for supporting multiple interrupt protocols with unequal number of interrupt request signals |
JPH1069393A (ja) * | 1996-06-19 | 1998-03-10 | Hokkaido Nippon Denki Software Kk | 仮想計算機エミュレータ、仮想計算機エミュレート方法 および仮想計算機エミュレートプログラムを記録した記録 媒体 |
KR20010005141A (ko) | 1999-06-30 | 2001-01-15 | 이형도 | 피.씨.아이 어댑터의 인터럽트 처리방법 |
US6629179B1 (en) * | 2000-07-31 | 2003-09-30 | Adaptec, Inc. | Message signaled interrupt generating device and method |
US7000051B2 (en) * | 2003-03-31 | 2006-02-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer system |
US7013358B2 (en) * | 2003-08-09 | 2006-03-14 | Texas Instruments Incorporated | System for signaling serialized interrupts using message signaled interrupts |
US7048877B2 (en) * | 2004-03-30 | 2006-05-23 | Intel Corporation | Efficiently supporting interrupts |
US7209994B1 (en) * | 2004-05-11 | 2007-04-24 | Advanced Micro Devices, Inc. | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests |
US20050289271A1 (en) * | 2004-06-29 | 2005-12-29 | Martinez Alberto J | Circuitry to selectively produce MSI signals |
US8463969B2 (en) * | 2005-06-30 | 2013-06-11 | Intel Corporation | Extended message signal interrupt |
US7689748B2 (en) * | 2006-05-05 | 2010-03-30 | Ati Technologies, Inc. | Event handler for context-switchable and non-context-switchable processing tasks |
JP4810349B2 (ja) * | 2006-08-11 | 2011-11-09 | 日本電気株式会社 | I/o装置及び方法 |
JP2008090375A (ja) * | 2006-09-29 | 2008-04-17 | Hitachi Ltd | 割込み制御システム、およびこれを利用した記憶制御システム |
US7979592B1 (en) * | 2007-02-09 | 2011-07-12 | Emulex Design And Manufacturing Corporation | Virtualization bridge device |
US8468284B2 (en) * | 2010-06-23 | 2013-06-18 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification to a guest operating system |
US8572635B2 (en) * | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
-
2008
- 2008-04-28 US US12/937,685 patent/US9037768B2/en active Active
- 2008-04-28 EP EP08754129.8A patent/EP2288996B1/en not_active Not-in-force
- 2008-04-28 KR KR1020107024309A patent/KR101445434B1/ko active IP Right Grant
- 2008-04-28 WO PCT/US2008/005448 patent/WO2009134218A1/en active Application Filing
- 2008-04-28 JP JP2011506240A patent/JP5108975B2/ja not_active Expired - Fee Related
- 2008-04-28 CN CN200880128884.1A patent/CN102016812B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP2288996A1 (en) | 2011-03-02 |
CN102016812B (zh) | 2014-06-11 |
CN102016812A (zh) | 2011-04-13 |
JP2011519092A (ja) | 2011-06-30 |
US9037768B2 (en) | 2015-05-19 |
EP2288996A4 (en) | 2011-07-06 |
KR20100135282A (ko) | 2010-12-24 |
KR101445434B1 (ko) | 2014-09-26 |
EP2288996B1 (en) | 2014-01-29 |
WO2009134218A1 (en) | 2009-11-05 |
US20110047309A1 (en) | 2011-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5108975B2 (ja) | 仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法 | |
US9141571B2 (en) | PCI express switch with logical device capability | |
JP5963282B2 (ja) | 割り込み分配スキーム | |
US11048569B1 (en) | Adaptive timeout mechanism | |
US9032128B2 (en) | Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared memory multi-processor systems | |
TWI278755B (en) | An apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine | |
US8521934B1 (en) | Multi-port context-based host controller | |
US7406550B2 (en) | Deterministic microcontroller with configurable input/output interface | |
EP2711845B1 (en) | PCI express switch with logical device capability | |
US8286027B2 (en) | Input/output device including a mechanism for accelerated error handling in multiple processor and multi-function systems | |
US9251106B2 (en) | Interruption facility for adjunct processor queues | |
US11175977B2 (en) | Method and system to detect failure in PCIe endpoint devices | |
US20090172214A1 (en) | Usb host controller | |
WO2023121815A1 (en) | Dynamic provisioning of pcie devices at run time for bare metal servers | |
KR20230091861A (ko) | 하드웨어 가속을 위한 높은 처리량 회로 아키텍처 | |
Intel | ||
Zhang et al. | NVMe-over-RPMsg: A Virtual Storage Device Model Applied to Heterogeneous Multi-Core SoCs | |
WO2006081092A2 (en) | Deterministic microcontroller with configurable input/output interface | |
US20240231967A1 (en) | Circuitry for routing and delay correction in a multi-functional unit system | |
US20230350824A1 (en) | Peripheral component interconnect express device and operating method thereof | |
US20230362084A1 (en) | Rational value rate limiter | |
Yu et al. | High Performance PCIe Interface for the TPCM Based on Linux Platform | |
Liang et al. | PCIe/NIC | |
WO2012088349A2 (en) | Providing legacy computing compatibility | |
Lampridis | An Embedded USB Controller Linux Device Driver: Common Practices and Experience |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120124 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120312 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120608 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120928 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121005 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5108975 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151012 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |