JP2010250453A - 計算機システム、割込み中継回路及び割込み中継方法 - Google Patents

計算機システム、割込み中継回路及び割込み中継方法 Download PDF

Info

Publication number
JP2010250453A
JP2010250453A JP2009097587A JP2009097587A JP2010250453A JP 2010250453 A JP2010250453 A JP 2010250453A JP 2009097587 A JP2009097587 A JP 2009097587A JP 2009097587 A JP2009097587 A JP 2009097587A JP 2010250453 A JP2010250453 A JP 2010250453A
Authority
JP
Japan
Prior art keywords
interrupt
indicator
transaction
identifier
information
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.)
Granted
Application number
JP2009097587A
Other languages
English (en)
Other versions
JP2010250453A5 (ja
JP5320140B2 (ja
Inventor
Norimitsu Hayakawa
典充 早川
Toshiomi Moriki
俊臣 森木
Yuji Tsushima
雄次 對馬
Naoya Hattori
直也 服部
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009097587A priority Critical patent/JP5320140B2/ja
Priority to US12/758,246 priority patent/US20100262741A1/en
Priority to EP10250760A priority patent/EP2241978A1/en
Publication of JP2010250453A publication Critical patent/JP2010250453A/ja
Publication of JP2010250453A5 publication Critical patent/JP2010250453A5/ja
Application granted granted Critical
Publication of JP5320140B2 publication Critical patent/JP5320140B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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

Landscapes

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

Abstract

【課題】
既存のPCI express準拠のI/Oデバイスを前提に、仮想化ソフトウェア(VMM)が割込み要求元のPCI機能を汎用的に特定可能な処理方法を提供する。
【解決手段】
142a PCI express準拠のI/Oデバイスと128a PCI expressブリッジとの間に140a 割込み中継回路を設ける。140a割込み中継回路は、I/Oデバイスから発行される割込みトランザクションを受信し中継すると共に、134割込みインジケータに328a割込み識別子に対応して割込み要求の有無を記録する。114 VMMは134割込みインジケータを参照して割込み要求元のI/Oデバイスを一意に特定する。
【選択図】 図1

Description

本発明は計算機システムに関し、特に仮想計算機を提供する機能を備えた計算機システムおよび割込み中継回路、および割込み中継方法に関する。
昨今の情報システムでは、Intel社のIA-32(Intel Architecture 32)準拠のCPUを搭載したIAサーバが多数導入されている。多数のIAサーバの管理のため、企業では保守員の人件費や電気代などの運用管理コストが上昇し問題となっている。そこで、仮想化ソフトウェア(VMM: Virtual Machine Monitor)によるサーバ統合が注目されている。
VMMは、物理的には1台のIAサーバ上で複数の仮想的なサーバ環境を生成する。仮想的なサーバ環境を仮想サーバ(VM: Virtual Machine)と称する。VMMを用いると従来のサーバで動作していたOSやアプリケーションを1つのVM上でそのまま稼動させることができ、情報システムを構成するサーバ台数を削減し問題を解決できる。
VMMは、物理サーバ上の資源であるCPUやメモリ、I/Oデバイスを複数のサブセットに分割し、VMに割当てる役割を負う。CPUからアクセスされる資源の場合、IA-32 CPUに搭載されるVT-x(Virtualization Technology for Xeon、非特許文献1)等の仮想化支援機構により割り当てる方法が知られている。
一方、I/Oデバイスからの資源アクセスには大きく直接メモリアクセス(Direct Memory Access; DMA)と 割込みトランザクション(Interrupt)の2種類が知られており、種類によって制御方法が異なる。DMAの場合、特許文献1や非特許文献2における、DMAのアドレス修飾機能により対応するVMのメモリ領域に、アクセスを転送する方法が知られている。一方、割込みトランザクションの場合、特許文献2のように、I/Oデバイスに対してシステム内でユニークなベクタ番号を割当て、上記ベクタ番号に従って割込みを配分する方法が知られている。
しかし、近年のI/OデバイスではPCI expressなどに代表される広帯域なI/Oインタフェースが主流になってきている。また半導体技術の進歩に伴い、同一のPCIデバイスに複数のPCI機能(function)を集積したチップが広く用いられている。これらのI/Oデバイスを搭載したIAサーバではI/OデバイスをPCI機能単位で異なるVMに割付ける場合が多いが、集積されるPCI機能数の増加に伴い以下の問題が顕在化している。
(a)レガシーの割込み機構であるINTx messageを用いた計算機システムの場合、PCIシステム当り最大4つの割込み線しか区分できない。同一の割込み線には1つのベクタしか設定できないため、異なるPCIカード上のPCI機能間でベクタが共有されてしまい、割込み要求元のI/Oデバイスを一意に特定できず割込み分配が不可能になる。
(b)新しい割込み方式であるMSI(Message Signaled Interrupt)および拡張仕様であるMSI-Xを用いた計算機システムの場合、割込みを処理するソフトウェア(割込みハンドラ)には割込みベクタ番号しか通知されず、割込み要求元のIDが伝達されない構成となっていた。そのため、ソフトウェアであるVMMが区分できる割込み要因は、計算機システムに実装されるCPUコア数とベクタ番号(8bit)の積までに制限される。しかし1つのPCI機能当り、割込み要因に相当するMSIベクタを最大2,048まで指定できるため、PCIカードの搭載量が増加すると逆に受信側のCPUのコア数xベクタ数を超過してしまう。本状況ではMSIベクタエントリ間で設定が重複するため、割込み要求元のI/OデバイスおよびMSIベクタエントリを一意に特定できず、割込み分配が不可能になる。
そこで従来のVMMでは、I/Oデバイス個別に対応していた。即ち、PCI機能間での割込みベクタの重複を許容しつつ、割込み受信時にはI/Oデバイス内部の割込み要因レジスタを読出し、割込みを要求したPCI機能とMSIベクタエントリを一意に特定する。
しかし、本方法ではVMMがI/Oデバイスごとに個別の処理を行う必要があり、VMMの開発工数が膨大になる。そのため、市場に広く流通しているPCI expressカードのうち、ごく一部のI/Oデバイスしかサポートできないという難点があった。そこで、I/Oデバイスの種類によらず汎用的な方法で、割込みの要求元を特定する方法が望ましい。
割込みの要求元を特定する汎用的な方法の1つに、特許文献3の方法が知られている。特許文献3では、PCMCIAカード上に実装される複数の入出力機能から駆動される複数の割込み線に対応して、割込み線の駆動状態を示す割込み状態レジスタを保持し、ソフトウェアから読出し可能とする構成が開示されている。また他の方法として、特許文献4の方法が知られている。本方法では、デバイスに固有のメモリ領域を割当て、I/Oデバイスが割込み状況を書き込み、CPU側から読み出す方法を開示している。他に、MSI割込みを前提としてI/Oデバイス発の割込みトランザクションの情報を差し替える方法が特許文献5で開示されている。
しかし、特許文献3の方法では複数のPCIデバイスからの個別に割込み線がドライブされる構成を前提としており、同一のI/Oチップ内部に複数のPCI機能が集積された場合には適用困難である。また特許文献4の方法では、I/Oデバイス発の割込みメッセージ内部に書込み先のメモリアドレス情報が保持されているため、既存のPCI expressデバイス、およびIA-32 CPUをそのまま利用することができない。さらに特許文献5の方法ではレガシーのINTx割込みを用いたシステムには適用できない、CPUコア数を超えた多量のMSI-Xベクタエントリを相互に区分できないなどの難点があった。
そこで本発明では、既存のPCI express準拠のI/Oデバイスを前提に、割込み要求元のPCI機能を汎用的に特定する方法を提供することを目的とする。
本発明は、1つ以上のCPUと、メモリと、1つ以上のI/Oデバイスを搭載した計算機システムにおいて、前記I/Oデバイスが発行する第1の割込みトランザクションを受信し、前記第1の割込みトランザクションから発行元を特定する識別子を取得し、前記識別子と対応する割込みインジケータを更新し、前記CPUに対して第2の割込みトランザクションを送出する。
また、前記計算機システムは更に、1つ以上の仮想計算機(VM)と、該仮想計算機を制御する仮想計算機モニタ(VMM)を実行する機能を有し、前記割込み中継方法は更に、前記I/Oデバイスの割込みを有効化し、前記第2の割込みトランザクションを受け付け、前記割込みインジケータを参照し、第1の割込みトランザクションの発行元を特定し、前記VMのいずれかに割込みを分配する。
本発明の手順により、従来の割込み伝達方法におけるベクタ番号に加えて、割込み要求元の識別子を、VMMの割込みハンドラに通知可能とする。前記識別子は計算機システムに搭載されるCPUコア数によらずユニークな値をI/Oデバイスに対して割付けることができるため、VMMは割込み発行元を一意に区分可能である。また、本手順はPCI express準拠のI/Oデバイスに対して適用可能であり有用である。
第1の実施形態を示し、本発明を適用する計算機システムのブロック図である。 第1の実施形態を示し、I/OデバイスとPCI expressブリッジ間に設置される割込み中継回路のブロック図である。 第1の実施形態を示し、前記割込み中継回路中の識別子取得部の構成を示すブロック図である。 第1の実施形態を示し、前記割込み中継回路中の割込み送出部の構成を示すブロック図である。 第1の実施形態を示し、メモリ上に確保される割込みインジケータの内部フォーマットを示す構成図である。 前記割込み中継回路が受信する割込みトランザクションのうち、PCI express規定のINTxメッセージのフォーマットを示す構成図である。 前記割込み中継回路が受信する割込みトランザクションのうち、PCI express規定のMSI(Message Signaled Interrupt)トランザクションのフォーマットを示す構成図である。 第1の実施形態を示し、I/Oデバイスが有するMSI-Xベクタテーブルの設定例を示す構成図である。 第1の実施形態を示し、前記計算機システムで稼動する仮想マシンモニタ(Virtual Machine Monitor, VMM)の構成を示すブロック図である。 前記VMMの保持するI/Oデバイス制御情報の設定例を示す構成図である。 第1の実施形態を示し、前記割込み中継回路がI/Oデバイス発割込みトランザクションを受信した際の処理例を示すフローチャートである。 第1の実施形態を示し、CPUによる前記割込み中継発の割込みトランザクションの受信を契機とした、前記VMMの処理例を示すフローチャートである。 第1の実施形態を示し、前記VMM内部の割込みインジケータ処理部の処理例を示すフローチャートである。 第1の実施形態を示し、前記VMMの初期化処理の例を示すフローチャートである。 第2の実施形態を示し、割込みインジケータを割込み中継回路に内蔵した場合の計算機システムのブロック図である。 第2の実施形態を示し、前記割込みインジケータ内蔵した割込み中継回路のブロック図である。
以下、本発明の一実施形態を添付図面に基づいて説明する。
図1は第1の実施形態を示し、本発明を適用する計算機システムの構成を示すブロック図である。150サーバハードウェアに対し、外部装置として146a N/W(Network)、146bストレージ装置が接続される。150サーバハードウェア内部では、複数のCPUコア(110a〜d)とI/Oデバイス(142a〜142d)、132 メモリが、130チップセットで相互に接続されている。110a CPUコアは内部に111a割込みコントローラを有し、I/Oデバイス発の割込みトランザクション(Transaction, Tx)を受信可能としている。
130チップセット内では、120ホストバスブリッジが 112a〜112b CPUソケットを合計2本の 112a〜b PCI express(PCIe)リンクに接続している。さらに128a〜b PCIeブリッジがそれぞれのPCIeリンク112a, 112bを各々2本に分岐させ、122c〜fの4本のPCIeリンクを形成している。チップセットを構成する末端のPCIeポートには140a〜d割込み中継回路が接続され、I/Oデバイスから発行される割込みTxを受信し上位の128a〜b PCIeブリッジおよび120 ホストバスブリッジに中継する役割を負う。
PCIeツリーのエンドポイントには、122g〜j PCI expressリンクを介して 144a〜d PCI express拡張スロットが実装されており、各スロット上に前述の142a〜d I/Oデバイスが搭載される。
なお、チップセットの構成は本図面に記載の構成に限定されるものではない。例えば、120ホストバスブリッジ当りのPCI expressリンクは2本の構成を図示しているが、1本であっても3本以上あっても構わない。128a〜b PCIeブリッジも同様である。また理解の容易性の観点から144a〜d PCI express拡張スロットが実装された例を図示しているが、オンボードのPCI expressデバイスなど拡張スロットを実装しないI/Oデバイスに対しても本発明は同様に適用できる。これらのバリエーションについては同業者であれば想像の範囲内であり、本発明に含めるものとする。
132 メモリ上には後述する134割込みインジケータが格納される。割込みインジケータは、140a〜d割込み中継回路による割込みTxの受信状況を保持するデータ構造であり、140a〜d割込み中継回路および110a〜d CPUコアからアクセスされる。
150 サーバハードウェア上では、1つの114 VMMと、複数の170a〜k VM(Virtual Machine; 仮想計算機)が動作する。114 VMMは、150サーバハードウェアを制御するファームウェアであり、111a〜d割込みコントローラが受信した割込みを契機に、162 割込み分配部、164 割込みインジケータ参照部、166割込み有効化手段が連動して、割込みをいずれかのVMに伝達する。114 VMMの割込み伝達処理については、図8(b)を用いて後述する。170a〜k VM上では、それぞれ単一のOS(172a〜k)と、複数のアプリケーション群(図中AP群)がそれぞれ動作する。
図2(a)に、前記の140a割込み中継回路の構成図を示す。本回路は、一対のPCI expressリンク 122cおよび122gを介して外部に接続されている。なお、本図では図面の煩雑化を避け読者の理解を容易にするため、本発明の主眼とする割込み転送に着目して構成を図示する。PCI express規格における物理リンクレイヤや論理リンクレイヤの処理、TxレイヤでのTxのキュー制御等は図示しない。但し、同業者であれば図示されない周辺機能の実施方法については容易に想像しうる範囲である。
140a 割込み中継回路は、122g→122cに向かうInbound方向のTx処理を行う270 I.B.処理ブロックと、122c→122gに向かうOutbound方向のTx処理を行う272 O.B.処理ブロックの2つに大別される。
270 I.B.処理ブロックは、202 I.B. TLP(Transaction Layer Packet)受信部で 142a I/Oデバイス発のTxを122g PCI expressリンク経由で受信する。受信したTLPは種類によって後段の処理が異なる。割込みトランザクションであるINTxメッセージもしくはMSI TLPの場合、204割込み処理回路で処理が行われ、その他のトランザクションの場合、252 I.B.転送先判定で処理される。252 I.B.転送先判定では、従来のPCI expressブリッジで行われるアドレスベースやIDベースのTx転送が行われ公知であるため、本実施例では詳述しない。
204割込み処理回路は、212割込み受信部と 218識別子取得部、216 インジケータ更新部、214 割込み送出部の各処理サブブロック、およびこれらの処理サブブロックからアクセスされる保持データを有する236 保持情報から構成される。
212 割込み受信部は、第1の割込みトランザクションとしてINTxメッセージもしくはMSI TLPを受け取ってデコード処理を行い、後段の218識別子取得部に対して 222デコード情報を通知する。222デコード情報については紙面の都合上、逐一詳述しないが、例えばINTxメッセージ/MSI TLPの区分、TLPヘッダの各フィールド、データペイロードの一部を含む。
218識別子取得部は、受信したデコード情報を元に 224更新要求 および226通知要求を発行する。218 識別子取得部の詳細については図2(b)に詳述する。
216インジケータ更新部は、前記の134割込みインジケータを更新するためのメモリ書込み要求(MWr TLP)の発行制御を行う。更新先のアドレスおよびデータ情報については、224更新要求から受信する。
214割込み送出部は、226通知要求を受け取ってCPUに対して第2の割込みトランザクション(MSI TLP)の発行制御を行う。本サブブロックの詳細については図2(c)に詳述する。
238 保持情報には、インジケータ更新に関する情報として234 INTx table base, 236 MSI table baseを、割込みTx発行に関する情報として 228a MSI addr, 228b MSI dataを保持する。各情報の用途については、図2(b)、図2(c)にて後述する。
204 割込み処理回路からは、割込みインジケータを更新する 230 MWr TLP情報と、232 MSI TLP情報がアサートされる。240 I.B. TLP送出部では、230 MWr TLP情報、232 MSI TLP情報に加えて、252 I.B.転送先判定から送出されたTLP情報、256 completion TLP情報を調停し、PCI express準拠のTLPを生成して122c PCI expressリンクへ送出する。
一方、272 O.B.処理ブロックでは、250 O.B. TLP受信部で受信したTLPの転送先を254 O.B.転送先判定で決定する。本処理において、238 保持情報に対する read/writeアクセスの場合、258 内部レジスタアクセス経由で参照/更新した上で、256 completion TLP情報にて応答を制御する。238 保持情報に対するアクセスか否かは、例えばPCI configuration Txにおける Type0形式のTLPの場合で、かつデバイス番号、機能番号が合致する場合に238保持情報に対するアクセスと見なす実装例が考えられる。また、他の実現方法としてメモリマップドI/O (MMIO)レジスタとして238保持情報を実現し、TLP内のアドレス情報をデコードして判定する実装例も考えられる。このように 254 O.B.転送先判定処理の実現方法はいくつかのバリエーションが考えられるが、いずれも同業者であれば容易に類推可能な範囲である。
上記以外のTLPの場合は、260 O.B. TLP送出部に転送され、122g PCI expressリンクから送出される。
図2(b)に、218 識別子取得部の詳細を示す。本処理サブブロックでは、INTxメッセージもしくはMSI TLPの区分に応じて、割込みTxの発行元を特定するための割込み識別子(328a, 328b)を算出する。328a/b 割込み識別子を基に、更新対象の割込みインジケータのアドレス計算を行う。
まず、300 INTx message処理部の処理内容を説明する。300 INTx message処理部では、INTxメッセージのヘッダから 310a Req ID, 624 codeを取得する。INTxメッセージ形式を図4に示す。624 codeは全8bitから構成されるが、bit<1-0>部分に 620 line情報が、bit2部分に 622 assert情報がそれぞれエンコードされている。620 line情報は、割込み要求元のデバイスが、仮想割込みワイヤのINTA/B/C/Dのいずれをアサート/デアサートしたかを示す。622 assert情報は、0の場合アサートを、1の場合にデアサートを示す。
上記の情報のうち、310a ReqIDおよび620 line情報を用いて328a割込み識別子を生成する。もっとも直感的な実現例としては、TAP回路にて620 lineをbit<1-0>に、310a ReqIDを 328a割込み識別子のbit<18-2>にマッピングする方法が考えられる。また150サーバハードウェア上で多数のPCIバスを使用していない場合、例えば 310a ReqIDの下位数ビットのみを識別子として使用しても構わない。328a割込み識別子に対して、234 INTx table baseを加算し、134割込みインジケータ中の書込み位置として 324a target addressを算出する。
前記のアドレス算出の例では説明の単純化のため、328a 割込み識別子1つに対して1バイトを割当てる前提としている。PCI expressでは4バイト以下の書込みに関しては書込み位置をバイトイネーブル(byte enable, BE)で指定する仕様であるため、後段の216 インジケータ更新部で適切なBEを生成する。なお、328a 割込み識別子1つに対してより小さい割付範囲(例えば 1ビット/割込み識別子)を指定して、134 割込みインジケータのメモリ占有量を減らす実施例も考えられる。その場合は140a 割込み中継回路が 134 割込みインジケータをアトミックに読出して更新する処理を行う。いずれも同業者であれば実現方法は容易に想像できるため、本発明の範囲に含めるものとする。
一方、書込みデータについては、622 assert情報をビット反転した値を取り出す(326a write data)。本データは書込みデータの最小単位(例;1バイト)に伸張され、最終的に割込みインジケータに書き込まれる。本処理により、アサート通知の場合には対応する割込みインジケータに1をセットし、デアサート通知の場合には0にリセットする。
次に302 MSI TLP処理部の処理内容を説明する。IAサーバにおけるMSI TLPは宛先アドレス FEEx_xxxxhに対する4B MWrである。図5にMSI TLPフォーマットを図示する。MSI TLPは、702 MSI TLPヘッダおよび 704 MSI TLPデータから構成される。本図では752 delivery modeが “000b”(fixed)の場合を図示したが、他のモードを使用するか否かは130チップセットおよび114 VMMに依存する。
302 MSI TLP処理部ではMSI TLPヘッダのうち、310b ReqID、314宛先ID、MSI TLPデータ中の316 vectorを参照して328b 割込み識別子を取得する。328a割込み識別子と同様、328b 割込み識別子のビットエンコーディングは複数の実施例が考えられるが、例えば 316 vector番号を328b割込み識別子のbit<7-0>に、314 宛先IDをbit<15-8>に、310b ReqIDを bit<31-16>に割付ける方法が考えられる。310b ReqIDのビットアサインも300INTx message処理部と同様に、150サーバハードウェア内に搭載されているPCIバス数に応じて、特定のビットをアサインせず削減する方法も考えられる。
また、本発明の割込み中継回路140a〜dを用いる場合、314宛先IDのビットアサインについては、150サーバハードウェアに搭載されているCPUコア(110a〜d)の数に関わらずに任意の数字を114 VMMがアサインできる。なぜならば、142a I/Oデバイスが発行するMSI TLPは全て140a割込み中継回路のみが受信し処理されるため110a〜d CPUコアから認識されないためである。本性質を用いて、114 VMMは同一のPCI機能内部でユニークな番号を I/Oデバイス内部のMSI-Xベクタレジスタに設定する。114 VMMによるMSI-Xベクタテーブルの設定例を図6に、MSI-Xベクタテーブルの設定手順を含むVMM初期化処理フローを図9に後述する。
書込みデータである326 write dataについては、固定値1を用いる。MSI TLPの場合は原則エッジ割込み(754 trigger mode = 0)であるため、割込みTxの都度割込みインジケータが1にセットされる。
300 INTx message処理部および302 MSI TLP処理部で算出されたアドレス情報(324a, 324b)、および書込みデータ情報(326a, 326b)は、330セレクタによって選択され、224 更新要求に送られる。同時に 226 通知要求がアサートされる。
図2(c)を用いて、214割込み送出部の構成を説明する。214 割込み送出部では、238保持情報のうち228a MSI addr、228b MSI dataを参照し、226 通知要求に同期してCPUに対して割込みTxを生成するための232 MSI TLP情報を送出する。MSI TLPのヘッダ情報(420 header info.)には、410 address, 412 fmt, 414 type, 416 length, およびその他の付属情報(418)が含まれる。MSI TLPヘッダ中のビットエンコーディングについては、図5に準じる。410 addressのbit<31-2>は 228a MSI addrの情報を用い、下位2bitは0とする。412 fmt, 414 type, 416 lengthは IAサーバにおけるMSI TLPを示す 4B MWrの情報を固定的に生成する。418 otherについては紙面の都合上省略する。422 data info.は228b MSI data情報をそのまま用いる。本処理により、228aおよび228bに設定された情報に即して第2の割込みトランザクションであるMSI TLPが生成される。
図3に第1の実施形態における割込みインジケータの構成例を示す。本図では134 割込みインジケータがメモリ空間上にマップされたバイトマップテーブルの形式としている。134割込みインジケータは、内部的に510 INTx用割込み情報テーブルと、512 MSI用割込み情報テーブルをそれぞれ保持する。なお、本図面ではいずれもPCIバス番号0〜0Fhまでを処理対象とした例を図示している。
510 INTx用割込み情報テーブルは、幅4バイト(2bit)、深さ4,096(12bit)エントリから構成されている。各エントリには、割込みTx発行元の(PCIバス番号:デバイス番号.機能番号)に対応して、INTA/B/C/Dの各仮想ワイヤのアサート状態が格納される(514a〜514d)。いずれも 0がデアサート状態、1がアサート状態を示しており、セット/リセット処理ともに140a〜d割込み中継回路から実施される。
一方、512 MSI用割込み情報テーブルには、幅64キロバイト(16bit)、深さ4,096(12bit)エントリから構成されている。各エントリには、割込みTx発行元の (PCIバス番号:デバイス番号.機能番号)に対応して、宛先ID(8bit)、ベクタ番号別のバイトマップを形成している(516a〜516h)。いずれも0がデアサート状態、1がアサート状態を示しており、セット処理は140a〜d割込み中継回路から、リセット処理は114 VMMからそれぞれ行われる。
512 MSI用割込み情報テーブルの利用に先立ち、114 VMMはシステム内のI/Oデバイスが保持するMSI設定情報にユニークな値を設定して、割込み要求元を一意に区分する。
図6を用いて、MSIの情報を保持するMSI-Xベクタテーブルの設定例を示す。なお、本図ではMSIの拡張仕様であるMSI-Xのベクタテーブル設定のみを図示するが、MSIについても設定レジスタが1セットのみのサブセットに当る仕様となっており同業者であれば構成を類推可能であるため、詳述を避ける。
142cおよび142d I/Oデバイスは、複数のMSI addrレジスタおよびMSI dataレジスタのセットから構成される、802aおよび802b MSI-Xベクタテーブルを保持している。図6は、MSI-Xの最大ベクタテーブルエントリ数の2,048エントリを有するPCIデバイスを2つ、150サーバハードウェアに搭載した場合の例を示す。以下、142c I/Oデバイスの部分に注目して設定情報を説明する。
MSI-Xベクタエントリ中のMSI addrレジスタ中には314宛先IDと、316a vectorが保持される。142c I/OデバイスがMSI TLPを発行する場合には、図5中の314 宛先IDに図6中の314宛先IDの設定値が、図5中の316 vectorに図6中の316a vectorの設定値がそれぞれ反映される。114 VMMは(PCIバス番号:デバイス番号.機能番号)で特定されるPCI機能内のMSI-Xベクタエントリに対して、固有の番号を割付ける。この図の例では、全2,048エントリに対して 314a 宛先IDを0〜7まで、316a vectorを0〜256まで、ユニークに割当てている。本設定により、MSI-Xテーブル内のエントリごとに個別の134割込みインジケータのアドレスを割当て可能となり、114 VMMが割込み要求元をMSI-Xテーブルエントリレベルで一意に識別できる。本実施例では、単一のPCI機能に対して 最大65,536のMSI-Xエントリを区分できる。
次に、図7(a)を用いて114 VMMの内部構成例を示す。114 VMMは902 物理外部割込みを契機に起動される910 割込みハンドラと、受信した割込みを170a〜k VMに分配する162 割込み分配部、912 I/Oデバイス制御情報、164 割込みインジケータ参照部、166 割込み有効化手段、926 VM構成情報から構成される。なおVMM内部の機能ブロックについては複数の実現構成が考えられる。例えば、164割込みインジケータ参照部を 162割込み分配部に内蔵するなどの構成である。いずれもVMMを含むソフトウェア開発者であれば容易に想像できる範囲であり、本発明の範囲に含めるものとする。
910 割込みハンドラは、外部割込みのベクタ(911)を 162 割込み分配部に通知し、割込み処理完了後に904 EOI発行を行う。162 割込み分配部は、912 I/Oデバイス制御情報、および164 割込みインジケータ参照部を介して割込みインジケータの参照/更新(914)を行う。参照結果を元に割込みの通知先のVMを決定し、該当するVMに対して論理割込み通知を行う(930)。
166 割込み有効化手段には、922 I/Oデバイスレジスタ設定と 924割込み中継設定手段がそれぞれ含まれる。いずれもVMMの初期化時に使用され、142a〜d I/OデバイスのMSI-Xベクタテーブルと、140a〜d割込み中継回路に含まれる238保持情報を設定するサブモジュールである。本手段を含めた114 VMMの初期化処理フローは図9に後述する。
926 VM構成情報は、170a〜k VM毎に、割当てたメモリ領域やCPU、I/O資源の情報を保持するサブモジュールである。本モジュールの実現手段は同業者であれば自明であり、詳述は行わない。
図7(b)に912 I/Oデバイス制御情報の設定例を示す。912 I/Oデバイス制御情報は、1000 I/Oデバイス関連情報と、1062 割込みインジケータ情報を保持する。
1000 I/Oデバイス関連情報は、1001 中継回路情報と 1002 物理I/Oデバイス情報、1004 論理I/Oデバイス情報の関係付け情報を有する。1001 中継回路情報には、中継回路のID(1040)と1042中継割込みベクタを保持する。VMMは1040中継回路IDに対応して個別の1042 中継割込みベクタを設定する。162割込み分配部は911 割込みベクタ経由で 1042中継割込みベクタを受信する。
1002物理I/Oデバイス情報は、1010 デバイスID、1011 割付有無、1013 INT line、1014 MSI設定情報を保持し、いずれも割込みインジケータの参照/更新対象を特定するために用いられる。即ち、134割込みインジケータ中の 510 INTx用割込み情報テーブルを参照する際には、911 割込みベクタで通知された番号と1042 中継割込みベクタと合致し、かつ1011割付有無が“有”のエントリを全て取出し、1010 デバイスID(310a ReqIDに対応)、1013 INT line (620 lineに対応)を用いて対応する割込みインジケータ位置を特定する。
また、512 MSI用割込み情報テーブルを参照する際には、1014 MSI設定情報を用いて割込みインジケータ位置を特定する。1014 MSI設定情報には、1018a 宛先ID(314 宛先IDに対応), 1020aベクタ(316 ベクタに対応)を用いて対応する割込みインジケータ位置を特定する。
1000I/Oデバイス関連情報では、1001中継回路情報、1002物理I/Oデバイス情報に対応して、1004 論理I/Oデバイス情報を保持している。本情報には、1030 VM#、1032 論理デバイスID、1034 論理INT line、1036 論理MSI設定情報を含んでおり、本情報から前記の割込みインジケータがセットされていた場合に割込みの転送対象のVM(170a〜k)および通知情報が決定される。各VMへの割込みの通知方法は、VMMによるゲストOS(172a〜k)の外部割込みハンドラへの分岐や、IA-32 CPUに搭載されているVT(Virtualization Technology)を用いた割込みインジェクション機能による方法など、複数が考えられる。いずれも既存のVMMで実現可能な方法であり、紙面の都合上詳述しない。
1062 割込みインジケータ情報には、1064 INTx用テーブルベースアドレス、1066 MSI用テーブルベースアドレスの各情報を保持する。本情報を用いて、114 VMMは参照すべき割込みインジケータの場所を特定する。
図8(a)に、割込み中継回路の処理フローを、140aを例に示す。1110の処理ステップで、140a割込み中継回路が142a I/Oデバイス発の割込みTxを122g PCI expressリンク経由で受信する。次に212割込み受信部にて、受信した割込みTxをデコードし(1112)、Tx種類に応じてINTxメッセージの場合に1114a〜1118aの処理を、MSI TLPの場合に 1114b〜1118bの処理を順次実施する。
INTxメッセージ受信時は、1114aステップで INTxメッセージ中の 310a ReqID, 620 line情報を参照して、328a割込み識別子を取得する。328a割込み識別子の算出方法は、例えば328a割込み識別子のbit<1-0>に 620 line情報を、bit<17-2>に310a ReqIDを割当てる等が考えられる。次に取得した328a割込み識別子と234INTx table base情報を参照して、324a target addressを取得する(1116a)。本処理では、例えば328a割込み識別子と234 INTx table baseを加算する。次に1118aステップにて、622 assert情報を参照して割込みインジケータへ書込むデータを決定する。本例ではAssert_INTxメッセージを示す622 assert=0の場合に1を、622 assert=1の場合に0をそれぞれセット/リセットするよう、326a write dataを設定する。
一方、MSI TLP受信時には、1114bステップでMSI TLP中の 310b ReqID, 314宛先ID、316 vectorを参照し、328b割込み識別子を取得する。328b割込み識別子の算出方法は、例えば328b割込み識別子のbit<7-0>に316 vectorを、bit<15-8>に314宛先IDを、bit<31-16>に310 ReqIDを割当てる等が考えられる。次の1116bステップでは、328b割込み識別子と236 MSI table base情報を参照し、324b target addrを特定する。本処理では、例えば328b割込み識別子と236 MSI table baseを加算する。次に1118b処理ステップにて、326b write dataに1を設定する。
最後に1120ステップにて、224更新要求、226通知要求をアサートし、216インジケータ更新部へ230 MWr TLP情報の生成、および214割込み送出部に232 MSI TLP情報の生成をそれぞれ要求する。
その後、割込み中継回路(140a)からの割込み(MSI TLP)を受信したCPUにて、114 VMMが起動される。図8(b)に割込みを受信したVMMの処理フローを示す。
1210処理ステップで、110a〜d CPUコアのいずれかが902 物理外部割込みを受信し、910割込みハンドラが起動される。
910割込みハンドラは、911割込みベクタを特定し(1212)、162割込み分配部へ通知する。162割込み分配部は、912 I/Oデバイス制御情報を参照し、1042中継割込みベクタに対応する情報エントリ(1051〜1056)を特定する(1214)。
なお、同一の割込みベクタ911に対して複数の情報エントリ(1051〜1056)が該当するケースがあり、その場合は後述の処理ステップ1216〜1220が対象エントリの数だけ複数回実行され、全エントリの処理が完了した場合にのみ判断1224が成立する。
次に、1216処理ステップにて、162割込み分配部は164割込みインジケータ参照部を呼出し(サブルーチンコール)、対応する割込み情報インジケータを取得する。1216の処理内容については、図8(c)に後述する。取得した割込みインジケータ値が1の場合、処理ステップ1217〜1220の処理を順次行う。一方、取得した割込みインジケータ値が0の場合は1217〜1218の処理をスキップし1220に処理を移行する。
さて、1217処理ステップでは162割込み分配部は164割込みインジケータ参照部を呼出して処理を行う。1217処理ステップでは1000 I/Oデバイス関連情報のうち、1010 デバイスIDを取得し、割込みの発行元I/Oデバイスを特定する。例えば、1051エントリに対応する割込みインジケータが1にセットされていた場合、1010デバイスIDから (00:02.0)の物理I/Oデバイスから、INTAラインがアサート(1013)、もしくは MSI-Xエントリの0番目に起因するMSI TLPが発行されたことが分かる。
1218処理ステップにて、1004論理I/Oデバイス情報を参照し、対応する170a〜170k VMを特定して論理割込みを伝達する。たとえば1051エントリに対応する割込みインジケータが1にセットされていた場合、割込みの通知先VM番号は1(1030 VM#参照)、対応する論理デバイスID 1032は(00:2.0)、INTxによる仮想割込みラインはA(1034)、MSIを使用するOSの場合は、1036 論理MSI設定情報から論理I/OデバイスのMSI-Xエントリが0番、宛先ID 1018bが0、ベクタ1020bが32と判別できる。
次に1220処理ステップにて、処理対象を次の情報エントリに進める。1224判定ステップにて、処理対象エントリのうち完了していない情報エントリがあれば1216ステップに戻って処理を継続し、全てを処理済みになったら終了側(1204)に遷移する。
図8(c)を用いて、1216処理ステップにおける164割込みインジケータ参照部の処理フローを示す。本処理フローは大きくINTx用割込み情報テーブルを参照する処理部分(1330)、およびMSI用割込み情報テーブルを参照する処理部分(1332)に分かれる。
PCIではINTxおよびMSI割込みは排他的に使用するよう定められており、本処理ではいずれか一方のみを参照する。図8(c)の例では、1330処理グループにてINTx用割込み情報テーブルを先に参照し、INTxに起因する割込みインジケータがセットされていない場合に1332処理グループを実行するようにしている。なお、本処理の実現方法については複数考えられ、両方を参照しても構わないし、140a〜d I/Oデバイスに設定されたレジスタ情報に基づいてINTx/MSIのいずれか一方の情報テーブルのみを参照するようにしても構わない。いずれも同業者であれば容易に想像できる範囲であり、本発明の範囲内とする。
1330 INTx用割込み情報テーブル参照処理に関し、まず1310処理ステップにて1010デバイスID、1013 INT line情報を用いてINTx用割込み識別子(328a)を特定する。INTx用割込み識別子(328a)のビットアサインに関しては、図2(b)に示したTAP論理に準じる。次に1312処理ステップにて、割込み識別子から参照対象インジケータのアドレスを算出する。最後に1314処理ステップにて対象の割込みインジケータ値を取得する。取得に対しては通常のロード/ストア命令を用いることができる。取得した割込みインジケータ値が1(INTx割込みあり)の場合は処理を終了し、0(INTx割込みなし)の場合は1332処理グループに遷移する。
1332 MSI用割込み情報テーブル参照処理では、まず1316処理ステップにて、1010デバイスID、1018a宛先ID、1020aベクタの各情報を用いてMSI用割込み識別子328bを算出する。MSI用割込み識別子328bのビットアサインに関しては、図2(b)に示したTAP論理に準じる。次に1318処理ステップにて、割込み識別子から参照対象インジケータのアドレスを算出する。最後に1320処理ステップにて参照対象インジケータをアトミックに取得しリセットする。
本処理は、第1の実施形態における、132メモリ内に134割込みインジケータが含まれる構成では、ロックつきの比較交換命令(lock cmpxchg)を用いて実現できる。一方、後述する第2の実施形態における、140e割込み中継回路に134b割込みインジケータが含まれる構成では、通常のロード命令(mov)や I/O命令(in)を用いて実現される。これは、図11を用いて後述するが、254b O.B.転送先判定が134b割込みインジケータの読出しに同期して対象のリセットを行うためである。
1332処理ステップでは、取得した参照対象インジケータの情報を割込み分配部へ応答する。
図9に、本発明に関する114 VMMの初期化処理フローを示す。紙面の都合上、本図では140a〜d割込み中継回路に関する処理部分のみを図示する。
1410処理ステップにて、114 VMMがメモリ上にロード・展開される。VMMのロードは専用のローダプログラムで実施されても良いし、OSの一機能として実現されていても構わない。
1412処理ステップにて、114VMMは150サーバハードウェアに接続される142a〜142d I/Oデバイスのリストアップを行う。
1414処理ステップでは、912 I/Oデバイス制御情報中の1001中継情報、および1062割込みインジケータ情報を設定する。本情報の設定に当り、114 VMMは、各VM(170a〜k)に割当てる資源と異なる専用のメモリ領域を、確保する。
次に1416処理ステップにて、140a〜d中継回路中の238保持情報を設定し、割込みを使用するI/Oデバイスセットを定義する。第1の実施形態では、142a〜dの全てのI/Oデバイスが割込みを使用するものとする。
1418処理ステップでは、割込みを使用するI/Oデバイスについて、1002物理I/Oデバイス情報中の1010デバイスID、1011割付有無、1013 INT lineの設定を行う。
1420処理ステップでは、1014 MSI設定情報について1010デバイスIDが同一のエントリの間で、ユニークな値を設定する。例えば、図7(b)中の1053, 1054エントリは同一のID (02:00.0)のPCIデバイス内部の異なるMSI-Xエントリへの設定情報を保持しており、相互のMSI-Xエントリを区分するため、異なる1020aベクタ番号を付与している。
1422処理ステップでは、1420処理ステップで1014 MSI設定情報に付与されたユニークな設定値を、142a〜d I/Oデバイス内部のMSIレジスタおよびMSI-Xテーブル(802a, 802b)に設定する。本処理により、各I/Oデバイスの割込みが有効化されると共に、142a〜d割込み中継回路は割込み発行元のPCIデバイスをMSI-Xテーブルエントリレベルで一意に区分可能となる。
1424処理ステップでは、170a〜170k VMの構成情報を取得し、1426処理ステップにて1004論理I/Oデバイス情報の設定を行う。VMM初期化時点で設定される対象は1030 VM#、1032論理デバイスID、1034論理INT line情報である。1036 論理MSI設定情報は、172a〜172kゲストOSのブート後に設定されるため、本フロー中では対象とならない。
以上に示した第1の実施形態の構成および処理手順によれば、IOデバイスとCPUコアとの間に割込み中継回路を設け、この割込み中継回路により、IOデバイス等の割込み要求元の識別子(割込み識別子)を算出し、算出した割込み識別子をCPUに送信し、且つメモリに保存され割込み識別子に対応する割込みインジケータを更新する。そして、割込み識別子を受信したCPUにてVMMを起動し、起動されたVMMが、メモリ中の更新された割込みインジケータを読みとるので、既存のPCI express準拠のI/Oデバイス142a〜142dをそのまま利用しつつ、114 VMMが割込み要求元のPCI機能を汎用的に特定することが可能になる。
次に、本発明の第2の実施形態を添付図面に基づいて説明する。図10は、第2の実施形態に基づいた計算機システムの構成図である。第1の実施形態と異なり、132メモリには134 割込みインジケータを設けず、140e〜140hの割込み中継回路に内蔵する。
図11に、第2の実施形態により140e割込み中継回路の構成を例示する。204割込み処理回路は、内部の238保持情報として新たに134b割込みインジケータを設ける。134b割込みインジケータはフリップフロップ(FF)やSRAM、DRAM等の記憶素子で実現され、110a〜110d CPUコアからアクセス可能としている。216bインジケータ更新部では第1の実施例と異なり、MWr TLP情報を生成する代わりに直接134b割込みインジケータを更新する。
CPU上で稼動する114 VMMからの134b割込みインジケータへのアクセス時には、272 O.B.ブロックで要求TLPを受付け、254b O.B.転送先判定で処理される。254b O.B.転送先判定で宛先が134b割込みインジケータと判断した場合は、258b内部レジスタアクセスを経由してread/writeを行う。本処理において、512 MSI用割込み情報テーブルへのreadアクセスと判断した場合は、データリターン(256 completion TLP情報の生成)に同期して、対象のリセットを行う。本処理により、図8(c)中の1320処理ステップのアトミックな割込みインジケータの取得とリセットが実現される。
以上に示した第2の実施形態の構成および処理手順により、既存のPCI express準拠のI/Oデバイスを142a〜142dそのまま利用しつつ、114 VMM割込み要求元のPCI機能を汎用的に特定することが可能になる。
以上に示した第2の実施形態の構成および処理手順によれば、IOデバイスとCPUコアとの間に割込み中継回路を設け、この割込み中継回路により、IOデバイス等の割込み要求元の識別子(割込み識別子)を算出し、算出した割込み識別子をCPUに送信し、且つ割込み中継回路に保存され割込み識別子に対応する割込みインジケータを更新する。そして、割込み識別子を受信したCPUにてVMMを起動し、起動されたVMMが、割込み中継回路中の更新された割込みインジケータを読みとるので、既存のPCI express準拠のI/Oデバイス142a〜142dをそのまま利用しつつ、114 VMMが割込み要求元のPCI機能を汎用的に特定することが可能になる。
110a〜d CPUコア
111a〜d 割込みコントローラ
112a〜b CPUソケット
114 VMM
120 ホストバスブリッジ
122a〜j PCI expressリンク
128a, b PCI expressブリッジ
130 チップセット
132 メモリ
134 割込みインジケータ
140a〜d 割込み中継回路
142a〜d I/Oデバイス
144a〜d PCI express拡張スロット
146a ネットワーク装置(Network, N/W)
146b ストレージ装置
150 サーバハードウェア
162 割込み分配部
164 割込みインジケータ参照部
166 割込み有効化手段
170a〜k VM (Virtual Machine、仮想サーバ)
172a〜k ゲストOS
202 I.B.(Inbound) TLP受信部
204 割込み処理回路
212 割込み受信部
214 割込み送出部
216 インジケータ更新部
218 識別子取得部
222 デコード情報
224 更新要求
226 通知要求
228a MSI addrレジスタ
228b MSI dataレジスタ
230 MWr(memory write) TLP
232 MSI TLP
234 INTx table baseレジスタ
236 MSI table baseレジスタ
238 保持情報
240 I.B. TLP送出部
250 O.B.(Outbound) TLP受信部
252 I.B. 転送先判定
254 O.B. 転送先判定
256 completion TLP情報
258 内部レジスタアクセス
260 O.B. TLP送出部
270 I.B.処理ブロック
272 O.B.処理ブロック
300 INTx message処理部
302 MSI TLP処理部
306 INTx message通知パス
308 MSI TLP通知パス
310a,b ReqID
312 Tx enable
314 宛先ID
316,316a,316b vector
324a,b target addr
326a,b write data
328a,b 割込み識別子
330 セレクタ(SEL)
410 address
412 fmt
414 type
416 length
418 other
420 header info.
422 data info.
510 INTx用割込み情報テーブル
512 MSI用割込み情報テーブル
514a〜d INTA〜D対応バイト
516a〜h 宛先ID#0〜255、ベクタ#0〜255対応バイト
602 INTxメッセージヘッダ
610 Reservedフィールド
620 line
622 assert
624 code
630 fmt
632 type
702 MSI TLPヘッダ
704 MSI TLPデータ
710 length
722 1st DW BE (double-word byte-enable)
724 last DW BE
730 fmt
732 type
752 delivery mode
754 trigger mode
802a,b MSI-Xベクタテーブル
902 物理外部割込み
904 EOI(End-Of-Interrupt)発行
910 割込みハンドラ
911 割込みベクタ
912 I/Oデバイス制御情報
914 割込みインジケータ参照/更新
916 MSIレジスタ設定
918 中継情報設定
922 I/Oデバイスレジスタ設定手段
924 割込み中継回路設定手段
926 VM構成情報
930 論理割込み通知
1000 I/Oデバイス関連情報
1001 中継回路情報
1002 物理I/Oデバイス情報
1004 論理I/Oデバイス情報
1010 デバイスID
1011 割付有無
1013 INT line
1014 MSI設定情報
1016a,b MSI-Xエントリ#
1018a,b 宛先ID
1020a,b ベクタ
1030 VM#
1032 論理デバイスID
1034 論理INT line
1036 論理MSI設定情報
1040 回路ID
1042 中継割込みベクタ
1051〜1055 I/Oデバイス割当情報エントリ
1062 割込みインジケータ情報
1064 INTx用テーブルベースアドレス
1066 MSI用テーブルベースアドレス
1110〜1120 140a割込み中継回路処理ステップ
1210〜1220 114 VMM割込み中継処理ステップ
1224 処理終了判断
1330 INTx用割込み情報テーブル参照処理グループ
1332 MSI用割込み情報テーブル参照処理グループ
140e〜h 第2の実施形態における割込み中継回路
134b 第2の実施形態における割込みインジケータ
216b インジケータ更新部
254b O.B.転送先判定
258b 内部レジスタアクセス

Claims (18)

  1. 1つ以上のCPUと、
    前記CPU上に生成された仮想計算機と、
    前記仮想計算機を制御する仮想計算機モニタと、
    メモリと、
    第1の割込みトランザクションを発行するI/Oデバイスと、
    前記CPU、メモリ及びI/Oデバイスを接続する中継回路と、
    前記第1の割込みトランザクションの受信状況を記憶する割込みインジケータが保持される割込みインジケータ保持部とを備え、
    前記中継回路は、
    前記第1の割込みトランザクションを受信する割込み受信部と、
    前記受信した第1の割込みトランザクションの情報に基づき、前記第1の割込みトランザクションの発行元を特定する識別子を取得する識別子取得部と、
    前記取得した識別子に対応する割込みインジケータを更新する割込みインジケータ更新部と、
    前記割込み受信部における第1の割込みトランザクションの受信に基づき、前記CPUに第2の割込みトランザクションを通知する割込み送出部とを有し、
    前記CPUは、前記第2の割込みトランザクションの受信に基づき、前記仮想計算機モニタを呼出す割込みコントローラを有し、
    前記仮想計算機モニタは、前記割込みコントローラによる呼出しに基づき、前記更新された割込みインジケータを参照し、前記第1の割込みトランザクションを発行したI/Oデバイスを特定する割込みインジケータ参照部を備えることを特徴とする計算機装置。
  2. 前記仮想計算機モニタは、更に前記割込み分配部を有し、
    前記割込み分配部は、
    I/Oデバイス制御情報部を参照して前記特定されたI/Oデバイスに対応する仮想計算機を特定し、
    前記特定された仮想計算機に前記I/Oデバイスの割込みを通知することを特徴とする請求項1記載の計算機装置。
  3. 前記第1の割込みトランザクションは、PCI express規定のAssert_INTxもしくはDeassert_INTxメッセージであって、
    前記割込みインジケータ更新部は、更に、
    受信した第1の割込みTxがAssert_INTxである場合に、対応するインジケータをセットする手段と、
    受信した第1の割込みTxがDeassert_INTxである場合に、対応するインジケータをリセットする手段とを有する請求項1記載の計算機装置。
  4. 前記識別子取得部は、更に、
    Assert_INTxもしくはDeassert_INTxメッセージに含まれる要求元ID(Requester ID)と、仮想ワイヤ区分(A〜D)の全て、もしくは一部を識別子として取得する手段を含む請求項3記載の計算機装置。
  5. 前記第1の割込みトランザクションは、PCI express規定のMessage Signaled Interrupt(MSI)であって、
    前記割込みインジケータ更新部は、更に、対応するインジケータをセットする手段を含む請求項1記載の計算機装置。
  6. 前記識別子取得部は、更に、
    MSIに含まれる要求元ID(Requester ID)と、宛先CPUのID情報と、割込みベクタ番号の全て、もしくは一部を識別子として取得する手段を含む請求項5記載の計算機装置。
  7. 前記I/Oデバイスは、PCI express規定のMSIアドレスおよびデータレジスタを1つ以上有し、
    前記仮想計算機モニタは、更に、
    前記I/Oデバイスのうち、割込みを使用するI/Oデバイスのセットを定義する手段と、
    前記割込みを使用するI/Oデバイスのセットに対して、ユニークな設定値を前記MSIアドレスおよびデータレジスタのペアに対して設定する手段とを有する請求項6記載の計算機装置。
  8. 前記中継回路は、
    前記第1の割込みトランザクションを受信し、受信した前記第1の割込みトランザクションをデコードし、前記デコードの情報を通知する割込み受信部と、
    前記デコードの情報を受信し、前記デコードの情報に基づき前記第1の割込みトランザクションの発行元を特定する識別子を取得し、前記デコードの情報に基づき更新要求及び通知要求を発行する識別子取得部と、
    前記更新要求を受信し、前記識別子に対応する割込みインジケータを更新する割込みインジケータ更新部と、
    前記通知要求を受信し、前記通知要求に基づき第2の割込みトランザクションを通知する割込み送出部とを有し、
    前記CPUは、前記第2の割込みトランザクションを受信し、前記第2の割込みトランザクションに基づく物理外部割込みを発行する割込みコントローラを有し、
    前記仮想計算機モニタは、前記物理外部割込みに基づき割込みインジケータを参照し、前記第1の割込みトランザクションを発行したI/Oデバイスを特定する割込みインジケータ参照部とを備えることを特徴とする請求項1記載の計算機装置。
  9. 前記割込みインジケータ保持部はメモリであり、
    前記割込みインジケータ更新部は、
    前記更新要求の受信により、前記メモリに保持される割込みインジケータを前記識別子に対応する割込みインジケータに更新するためのMWrTLP情報を生成し、
    前記生成したMWrTLP情報を前記メモリに送出することを特徴とする請求項1記載の計算機装置。
  10. 前記割込みインジケータ保持部は、前記中継回路内に保持され、
    前記割込みインジケータ更新部は、
    前記更新要求の受信により、前記保持情報部に保持される割込みインジケータを前記識別子に対応する割込みインジケータに更新することを特徴とする請求項1記載の計算装置。
  11. 1つ以上のCPUと、前記CPU上に生成された仮想計算機と、前記仮想計算機を制御する仮想計算機モニタと、メモリと、I/Oデバイスと、前記CPU、メモリ及びI/Oデバイスを接続する中継回路とを備える計算機装置における割込み中継方法であって、
    前記I/Oデバイスは、第1の割込みトランザクションを発行し、
    前記第1の割込みトランザクションの前記中継回路における受信状況は、割込みインジケータに記憶され、
    前記中継回路は、
    前記第1の割込みトランザクションを受信し、
    前記受信した第1の割込みトランザクションの情報に基づき、前記第1の割込みトランザクションの発行元を特定する識別子を取得し、
    前記取得した識別子に対応する前記割込みインジケータを更新し、
    前記第1の割込みトランザクションの受信に基づき、前記CPUに第2の割込みトランザクションを通知し、
    前記CPUは、前記第2の割込みトランザクションの受信に基づき、前記仮想計算機モニタを呼出し、
    前記仮想計算機モニタは、前記CPUによる呼出しに基づき、前記更新された割込みインジケータを参照し、前記第1の割込みトランザクションを発行したI/Oデバイスを特定することを特徴とする割込み中継方法。
  12. 前記仮想計算機モニタは、更に、
    I/Oデバイス制御情報部を参照して前記特定されたI/Oデバイスに対応する仮想計算機を特定し、
    前記特定された仮想計算機に前記I/Oデバイスの割込みを通知することを特徴とする請求項11記載の割込み中継方法。
  13. 前記第1の割込みトランザクションは、PCI express規定のAssert_INTxもしくはDeassert_INTxメッセージであって、
    前記取得した識別子に対応する前記割込みインジケータを更新するとき、
    受信した第1の割込みTxがAssert_INTxである場合に、対応するインジケータをセットし、
    受信した第1の割込みTxがDeassert_INTxである場合に、対応するインジケータをリセットすることを特徴とする請求項11記載の割込み中継方法。
  14. 前記第1の割込みトランザクションの発行元を特定する識別子を取得するとき、
    Assert_INTxもしくはDeassert_INTxメッセージに含まれる要求元ID(Requester ID)と、仮想ワイヤ区分(A〜D)の全て、もしくは一部を識別子として取得することを特徴とする請求項13記載の割込み中継方法。
  15. 前記第1の割込みトランザクションは、PCI express規定のMessage Signaled Interrupt(MSI)であって、
    前記取得した識別子に対応する前記割込みインジケータを更新するとき、対応するインジケータをセットすることを特徴とする請求項11記載の割込み中継方法。
  16. 前記第1の割込みトランザクションの発行元を特定する識別子を取得するとき、
    MSIに含まれる要求元ID(Requester ID)と、宛先CPUのID情報と、割込みベクタ番号の全て、もしくは一部を識別子として取得することを特徴とする請求項15記載の割込み中継方法。
  17. 前記I/Oデバイスは、PCI express規定のMSIアドレスおよびデータレジスタを1つ以上有し、
    前記仮想計算機モニタは、更に、
    前記I/Oデバイスのうち、割込みを使用するI/Oデバイスのセットを定義し、
    前記割込みを使用するI/Oデバイスのセットに対して、ユニークな設定値を前記MSIアドレスおよびデータレジスタのペアに対して設定することを特徴とする請求項16記載の割込み中継方法
  18. 計算機装置におけるCPU、メモリ及びI/Oデバイスを接続する中継回路であって、
    第1の割込みトランザクションを受信する割込み受信部と、
    前記受信した第1の割込みトランザクションの情報に基づき、前記第1の割込みトランザクションの発行元を特定する識別子を取得する識別子取得部と、
    前記取得した識別子に対応し、前記第1の割込みトランザクションの受信状況を記憶する割込みインジケータを更新する割込みインジケータ更新部と、
    前記割込み受信部における第1の割込みトランザクションの受信に基づき、第2の割込みトランザクションを通知する割込み送出部とを有することを特徴とする中継回路。
JP2009097587A 2009-04-14 2009-04-14 計算機システム、割込み中継回路及び割込み中継方法 Expired - Fee Related JP5320140B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009097587A JP5320140B2 (ja) 2009-04-14 2009-04-14 計算機システム、割込み中継回路及び割込み中継方法
US12/758,246 US20100262741A1 (en) 2009-04-14 2010-04-12 Computer system, interrupt relay circuit and interrupt relay method
EP10250760A EP2241978A1 (en) 2009-04-14 2010-04-13 Computer system, interrupt relay circuit and interrupt relay method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009097587A JP5320140B2 (ja) 2009-04-14 2009-04-14 計算機システム、割込み中継回路及び割込み中継方法

Publications (3)

Publication Number Publication Date
JP2010250453A true JP2010250453A (ja) 2010-11-04
JP2010250453A5 JP2010250453A5 (ja) 2011-07-28
JP5320140B2 JP5320140B2 (ja) 2013-10-23

Family

ID=42288873

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009097587A Expired - Fee Related JP5320140B2 (ja) 2009-04-14 2009-04-14 計算機システム、割込み中継回路及び割込み中継方法

Country Status (3)

Country Link
US (1) US20100262741A1 (ja)
EP (1) EP2241978A1 (ja)
JP (1) JP5320140B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014038438A (ja) * 2012-08-14 2014-02-27 Fujitsu Ltd 演算処理装置、情報処理装置及び割込制御方法
WO2016075813A1 (ja) * 2014-11-14 2016-05-19 株式会社日立製作所 計算機システム、及びその制御方法
US10042790B2 (en) 2014-03-07 2018-08-07 Hitachi, Ltd. Computer and method with interrupt vector management
US20210318973A1 (en) 2019-02-14 2021-10-14 International Business Machines Corporation Directed interrupt for multilevel virtualization
JP2022520713A (ja) * 2019-02-14 2022-04-01 インターナショナル・ビジネス・マシーンズ・コーポレーション 有向割り込みの仮想化方法、システム、プログラム
US11734037B2 (en) 2019-02-14 2023-08-22 International Business Machines Corporation Directed interrupt virtualization with running indicator
US11829790B2 (en) 2019-02-14 2023-11-28 International Business Machines Corporation Directed interrupt virtualization with fallback

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8606975B2 (en) 2010-05-21 2013-12-10 Oracle International Corporation Managing interrupts in a virtualized input/output device supporting multiple hosts and functions
CN105190582B (zh) * 2013-05-16 2018-01-16 三菱电机株式会社 总线中继装置
US9959224B1 (en) * 2013-12-23 2018-05-01 Google Llc Device generated interrupts compatible with limited interrupt virtualization hardware
US10922252B2 (en) 2015-06-22 2021-02-16 Qualcomm Incorporated Extended message signaled interrupts (MSI) message data
US10025727B2 (en) 2016-02-05 2018-07-17 Honeywell International Inc. Relay mechanism to facilitate processor communication with inaccessible input/output (I/O) device
CN106681816A (zh) * 2016-12-27 2017-05-17 深圳开立生物医疗科技股份有限公司 PCIe中断方法和系统
US11550745B1 (en) 2021-09-21 2023-01-10 Apple Inc. Remapping techniques for message signaled interrupts
CN115221083B (zh) * 2022-09-05 2023-01-24 浪潮电子信息产业股份有限公司 一种PCIe中断处理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02113339A (ja) * 1988-10-24 1990-04-25 Fujitsu Ltd 仮想計算機制御方式
JP2000276357A (ja) * 1999-03-24 2000-10-06 Nec Corp 割り込み処理装置および割り込み通知方法
JP2001229038A (ja) * 2000-02-17 2001-08-24 Hitachi Ltd マルチオペレーテング計算機システム
JP2008152567A (ja) * 2006-12-18 2008-07-03 Hitachi Ltd コンピュータ及びその制御方法
JP2008535099A (ja) * 2005-03-28 2008-08-28 マイクロソフト コーポレーション 拡張割込み制御装置および合成割込みソースに関するシステムおよび方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276815A (en) * 1988-10-24 1994-01-04 Fujitsu Limited Input and output processing system for a virtual computer
US5805929A (en) 1996-01-29 1998-09-08 International Business Machines Corporation Multiple independent I/O functions on a PCMCIA card share a single interrupt request signal using an AND gate for triggering a delayed RESET signal
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
JP4123942B2 (ja) * 2003-01-14 2008-07-23 株式会社日立製作所 情報処理装置
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7177967B2 (en) * 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
DE102004042170B4 (de) * 2004-08-31 2009-02-19 Advanced Micro Devices, Inc., Sunnyvale Nachrichtenbasierte Interrupttabelle
JP2006209386A (ja) 2005-01-27 2006-08-10 Hitachi Ltd 仮想計算機システム及びその外部割込み制御方法
US20060200616A1 (en) * 2005-03-02 2006-09-07 Richard Maliszewski Mechanism for managing resources shared among virtual machines
US7565471B2 (en) * 2005-09-16 2009-07-21 Emulex Design & Manufacturing Corporation Message signaled interrupt extended (MSI-X) auto clear and failsafe lock
US7689748B2 (en) * 2006-05-05 2010-03-30 Ati Technologies, Inc. Event handler for context-switchable and non-context-switchable processing tasks
US7613847B2 (en) * 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US7873770B2 (en) * 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US7743195B2 (en) * 2006-12-27 2010-06-22 Intel Corporation Interrupt mailbox in host memory
US20080162762A1 (en) * 2006-12-29 2008-07-03 Gilbert Neiger Interrupt remapping based on requestor identification
JP5108975B2 (ja) * 2008-04-28 2012-12-26 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法
JP5217929B2 (ja) * 2008-11-13 2013-06-19 ソニー株式会社 割込検出装置および情報処理システム
US20100169673A1 (en) * 2008-12-31 2010-07-01 Ramakrishna Saripalli Efficient remapping engine utilization
US8234432B2 (en) * 2009-01-26 2012-07-31 Advanced Micro Devices, Inc. Memory structure to store interrupt state for inactive guests

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02113339A (ja) * 1988-10-24 1990-04-25 Fujitsu Ltd 仮想計算機制御方式
JP2000276357A (ja) * 1999-03-24 2000-10-06 Nec Corp 割り込み処理装置および割り込み通知方法
JP2001229038A (ja) * 2000-02-17 2001-08-24 Hitachi Ltd マルチオペレーテング計算機システム
JP2008535099A (ja) * 2005-03-28 2008-08-28 マイクロソフト コーポレーション 拡張割込み制御装置および合成割込みソースに関するシステムおよび方法
JP2008152567A (ja) * 2006-12-18 2008-07-03 Hitachi Ltd コンピュータ及びその制御方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014038438A (ja) * 2012-08-14 2014-02-27 Fujitsu Ltd 演算処理装置、情報処理装置及び割込制御方法
US10042790B2 (en) 2014-03-07 2018-08-07 Hitachi, Ltd. Computer and method with interrupt vector management
WO2016075813A1 (ja) * 2014-11-14 2016-05-19 株式会社日立製作所 計算機システム、及びその制御方法
US20210318973A1 (en) 2019-02-14 2021-10-14 International Business Machines Corporation Directed interrupt for multilevel virtualization
JP2022520713A (ja) * 2019-02-14 2022-04-01 インターナショナル・ビジネス・マシーンズ・コーポレーション 有向割り込みの仮想化方法、システム、プログラム
US11734037B2 (en) 2019-02-14 2023-08-22 International Business Machines Corporation Directed interrupt virtualization with running indicator
JP7335339B2 (ja) 2019-02-14 2023-08-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 有向割り込みの仮想化方法、システム、プログラム
US11822493B2 (en) 2019-02-14 2023-11-21 International Business Machines Corporation Directed interrupt for multilevel virtualization
US11829790B2 (en) 2019-02-14 2023-11-28 International Business Machines Corporation Directed interrupt virtualization with fallback

Also Published As

Publication number Publication date
US20100262741A1 (en) 2010-10-14
EP2241978A1 (en) 2010-10-20
JP5320140B2 (ja) 2013-10-23

Similar Documents

Publication Publication Date Title
JP5320140B2 (ja) 計算機システム、割込み中継回路及び割込み中継方法
US11755527B2 (en) Techniques for command validation for access to a storage device by a remote client
US10228861B2 (en) Common platform for one-level memory architecture and two-level memory architecture
US9892069B2 (en) Posting interrupts to virtual processors
US9875208B2 (en) Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches
US8458368B2 (en) System and method for discovering and protecting shared allocated resources in a shared virtualized I/O device
US20210216453A1 (en) Systems and methods for input/output computing resource control
US8918568B2 (en) PCI express SR-IOV/MR-IOV virtual function clusters
US10474606B2 (en) Management controller including virtual USB host controller
US11741039B2 (en) Peripheral component interconnect express device and method of operating the same
CN107949837B (zh) 用于i/o数据包压缩的寄存器文件
US9229884B2 (en) Virtualized instruction extensions for system partitioning
US8312461B2 (en) System and method for discovering and protecting allocated resources in a shared virtualized I/O device
TW201030623A (en) Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
CN114003168B (zh) 用于处理命令的存储设备和方法
US20120137078A1 (en) Multiple Critical Word Bypassing in a Memory Controller
US8527745B2 (en) Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available
US8423693B2 (en) Circuit and method for pipe arbitration using available state information and arbitration
US8225007B2 (en) Method and system for reducing address space for allocated resources in a shared virtualized I/O device
US8966149B2 (en) Emulation of an input/output advanced programmable interrupt controller
US12013801B2 (en) Devices, systems, and methods for PCIe endpoint interrupt
US20220318170A1 (en) DEVICES, SYSTEMS, AND METHODS FOR PCIe ENDPOINT INTERRUPT
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
KR20230152394A (ko) PCIe 장치 및 이의 동작 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110610

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120816

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130311

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: 20130618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130712

LAPS Cancellation because of no payment of annual fees