説明

I/Oデバイス共有方法、および装置

【課題】 複数の物理計算機から1つのI/Oデバイスを共有する場合のタグの競合を回避する。
【解決手段】 複数の物理計算機150−1〜150−nと、I/Oデバイス160が、I/Oスイッチ100を経由して接続されたサーバ装置であって、複数の物理計算機が1つのI/Oデバイス160を共有する場合に、1つのI/Oスイッチ100内部で第1の物理計算機150−1からI/Oデバイス160への要求パケットに含まれるタグを、I/Oデバイスで未使用の値に変換した後に、I/Oデバイスに転送し、該要求パケットのI/Oデバイス160から第1の物理計算機150−1への応答パケットに含まれるタグを、元のタグに戻すことにより、複数の物理計算機から1つのI/Oデバイス160を共有する場合のタグの競合の回避を実現する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の物理計算機を備えたサーバ装置に関し、特に、1つのI/Oデバイスを複数の物理計算機で共有する技術に関する。
【背景技術】
【0002】
近年、情報セキュリティやコンプライアンスなどへの意識の高まりから、サーバ装置上でウイルスチェックやメールフィルタなどを行うようになっており、企業のサーバ装置に求められる処理要求が増大している。これらの処理要求の増大に対し、従来は処理内容ごとに個別に物理計算機を導入して対応してきた。しかし、物理計算機台数の増大は運用コストの増大を招き、企業のIT予算を圧迫して問題となっている。
【0003】
これに対し、複数の物理計算機で実行されていた処理を1台の物理計算機に集約し、物理計算機台数を削減するサーバ統合が注目されている。サーバ統合により、物理計算機の台数に比例して発生する消費電力やスペース、障害時のメンテナンスコストなどを削減できる。このようなサーバ統合が進んだ背景には、メモリの容量やプロセッサの速度が18ヶ月で2倍程度に向上することにより、物理計算機の処理能力が格段に向上したことが挙げられる。
【0004】
近年では、物理計算機と外部装置との通信帯域も同様に、18ヶ月で2倍もしくはそれ以上の速度で向上を続けている。物理計算機と外部の装置を接続するインターフェースの規格として、例えばイーサネット(登録商標)やファイバーチャネルがあり、物理計算機がこれらの規格を用いて通信を行う場合は、物理計算機1台に対して1つのイーサネット用のI/Oデバイス(NIC:Network Interface Card)やファイバーチャネル用のI/Oデバイス(HBA:Host Bus Adapter)を接続し、そのI/Oデバイスを介して通信を行う。物理計算機とI/Oデバイス間の通信は、PCI−SIGにおいて標準化が行われているPCIExpress(以下、PCIe)によって行われるのが一般的である。
【0005】
ここで、メモリやプロセッサの速度向上を背景に複数の物理計算機を1つに集約するサーバ統合が注目される事となったのと同様に、インターフェースの速度向上を背景に複数の物理計算機から1つのI/Oデバイスを共有するという、I/O共有が注目を浴びている。現在は1つの物理計算機あたりI/Oデバイスを1つ利用するが、I/O共有により複数の物理計算機から1つのI/Oデバイス共有することを可能にすれば、I/Oデバイス数を削減し、サーバ装置のコスト削減を行うことが出来る。
【0006】
このようなI/O共有を実現する技術として例えば、PCI−SIGで標準化が行われているシングルルートI/O仮想化技術(SR−IOV:Single Root I/O Virtualization)(非特許文献1参照)を利用し、本来1台の物理計算機に対して1つ接続されることが前提で設計されているI/Oデバイスを複数のサーバから共有することを可能にする技術が存在する(特許文献1参照)。
【0007】
また、同様の技術としてPCI−SIGで標準化が行われている、マルチルートI/O仮想化技術(MR−IOV:Multi Root I/O Virtualization)(非特許文献2参照)がある。しかし、こちらの技術ではMR−IOVに対応したI/Oデバイスの調達が困難であるという問題がある。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2010−79816号
【非特許文献】
【0009】
【非特許文献1】「Single−Root I/O Virtualization and Sharing Specification,Revision 1.0」、2007年11月発行、PCI−SIG著
【非特許文献2】「Multi−Root I/O Virtualization and Sharing Specification,Revision 1.0」、2008年5月発行、PCI−SIG著
【発明の概要】
【発明が解決しようとする課題】
【0010】
先に述べたように、物理計算機とI/Oデバイス間では一般的にPCIeを用いて通信が行われるが、PCIeではパケットを用いて通信が行われ、そしてパケットの種類として要求パケットとそれに対する応答パケットが存在する。物理計算機とI/Oデバイス間ではある要求パケットを出した場合にその応答パケットを待たずに次の要求パケットを出すことが可能であり、これらのパケットをタグと呼ぶ識別子を用いて区別する。すなわち、物理計算機とI/Oデバイスが1対1で接続されている場合に、ある要求パケットとそれに対応する応答パケットに同じタグを付け、要求パケット間では違うタグを付ける。これによって物理計算機とI/Oデバイス間のパケットの順序制御を緩和する。言い換えれば、物理計算機とI/Oデバイス間でノンブロッキングな転送を可能にしている。例えば、メモリリードという要求パケットに対しては、必ず読み込んだ値を返す応答パケットが返る。この、メモリリードパケットと応答パケットには同じタグが振られる。これによって、例えば物理計算機0からI/Oデバイス0へメモリリード0(タグ3)、メモリリード1(タグ5)がこの順番で発行され、I/Oデバイスからメモリリード1の応答が先に帰ってきたとしても、その応答パケットのタグは5になっているため、このタグによってどのメモリリードに対応する応答が帰ってきたのかを、メモリリードの順番通りに応答が帰って来なくても、物理計算機側で判別することが可能になる。
【0011】
ここで、特許文献1に示すような既存の複数の物理計算機から1つの単一物理計算機向けのI/Oデバイスを共有する技術では、このタグについて考慮されていない、という問題がある。
【0012】
例えば、物理計算機0と物理計算機1がI/Oデバイス2を共有する場合を考えると、物理計算機0からタグ2のパケットが、物理計算機1からもタグ2のパケットが、I/Oデバイス2に向けて同時に発行される事があり得る。この場合、物理計算機0からのタグ2のパケットがI/Oデバイス2に到着した後、I/Oデバイスでそのパケットの処理が終了する前に物理計算機1からのタグ2のパケットがI/Oデバイス2に到着する、といったことが発生し、I/Oデバイスで正しく処理が行えない状況が発生しうる。なお、このように同じタグを持つ要求パケットが複数同時に届いた場合のI/Oデバイスの動作は、PCIeの規格上未定義である。
【0013】
本発明では、上記の問題点に鑑み、1つの物理計算機に対してのみ利用されることを想定されて作成されたI/Oデバイスを複数の物理計算機から共有する場合にも、タグが適切に扱えるようにするI/Oデバイス共有方法、および装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明は、上記の目的を達成するため、複数の物理計算機が、I/Oスイッチを経由して接続される1つ以上のI/Oデバイスを共有するI/Oデバイス共有方法であって、物理計算機からI/Oデバイスに向けた通信、およびI/Oデバイスから物理計算機に向けた通信に、タグを含むパケットを用い、第1の物理計算機からI/Oデバイスへの要求パケットのタグを、当該I/Oデバイスで未使用のタグに書き換え、当該I/Oデバイスから第1の物理計算機への応答パケットのタグを、要求パケットの書き換え前のタグに戻すI/Oデバイス共有方法を提供する。
【0015】
また、本発明は、上記の目的を達成するため、サーバ装置であって、複数の物理計算機と、I/Oスイッチと、I/Oスイッチを介して複数の物理計算機との間でタグを含むパケットを用いた通信を行うI/Oデバイスとを備え、I/Oスイッチは、第1の物理計算機からI/Oデバイスへの要求パケットのタグを、当該I/Oデバイスで未使用のタグに書き換え、当該I/Oデバイスから第1の物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻すタグ変換機構を備えるサーバ装置を提供する。
【0016】
更に、本発明は、上記の目的を達成するため、複数の物理計算機とI/Oデバイスとの間で、タグを含むパケットを用いて通信を行うI/Oスイッチ装置であって、複数の物理計算機と、I/Oデバイスに接続される複数のポートと、複数のポートに接続されるクロスバスイッチと、第1の物理計算機からI/Oデバイスへの要求パケットのタグを、I/Oデバイスで未使用のタグに書き換え、I/Oデバイスから第1の前記物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻すタグ変換部を備えるI/Oスイッチ装置を提供する。
【発明の効果】
【0017】
本発明によれば、1つの物理計算機に接続されることを前提に設計されているI/Oデバイスを複数の物理計算機から共有した場合に、タグの競合を回避することが可能となる。
【図面の簡単な説明】
【0018】
【図1】各実施例に係るサーバ装置の一構成例を示すブロック図である。
【図2】各実施例に係る、PCI Expressのパケットのフォーマットを示す図である。
【図3】各実施例に係る、PCI Expressのパケットヘッダのフォーマットを示す図である。
【図4】第1の実施例に係る、タグ変換機構の構成例のブロック図である。
【図5】第1の実施例に係る、送信方向タグ変換モジュールの動作のフローチャートを示す図である。
【図6】第1の実施例に係る、受信方向タグ変換モジュールの動作のフローチャートを示す図である。
【図7】第1の実施例に係る、送信方向タグ変換モジュールの構成例のブロック図である。
【図8A】第1の実施例に係る、パケット種別判別回路の構成例のブロック図である。
【図8B】第1の実施例に係る、PCI Expressのパケットの種類をまとめた表を示す図である。
【図9】第1の実施例に係る、受信方向タグ変換モジュールの構成例のブロック図である。
【図10】第1の実施例に係る、最終応答判別回路の構成例のブロック図である。
【図11】第1の実施例に係る、タグプールの構成例のブロック図である。
【図12】第1の実施例に係る、タグ残数管理機構の構成例のブロック図である。
【図13】第1の実施例に係る、タイマー監視機構の第1の構成例のブロック図である。
【図14】第1の実施例に係る、タイマー管理機構の第2の構成例のブロック図である。
【図15】第1の実施例に係る、タグ保存テーブルの一構成例のブロック図である。
【図16】第1の実施例に係る、タグ変換機構起動時のフローチャートを示す図である。
【図17】第2の実施例に係る、タグ変換機構の動作例を説明するための図である。
【発明を実施するための形態】
【0019】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【実施例1】
【0020】
図1は、第1の実施例が適用されるサーバ装置の一構成例を示すブロック図である。図1においてサーバ装置は、150−1〜150−nのn台の物理計算機と、I/Oデバイス160と、物理計算機とI/Oデバイス間を接続するデータ転送装置として機能するI/Oスイッチ100と、I/Oデバイス160の物理計算機150−1〜150−nへの割り当てを管理する管理サーバ1400を有する。物理計算機150−1〜150−nとデータ転送装置間、及びデータ転送装置とI/Oデバイス間は、例えば、上記のPCI−SIGが策定したPCIExpress (PCIe)の規格に準拠したインターフェースで接続されているとする。なお、図1では、データ転送装置として、I/Oスイッチ100が1つの例を示したが、サーバ装置はI/Oスイッチを複数備えることができ、また図1ではI/Oスイッチ100にI/Oデバイスが1つ接続された例を示したが、I/Oスイッチ100は複数のI/Oデバイスを備える事が出来る。
【0021】
物理計算機150−1〜150−nと管理サーバ1400及びI/Oスイッチ100の間は管理ネットワーク1300で接続される。管理ネットワーク1300には、LAN(Local Area Network)やI2C(Inter−Integrated Circuit)等を用いることが出来る。
【0022】
物理計算機150−1は、処理部であるプロセッサ151−1と、記憶部であるメモリ152−1と、I/Oハブ154−1を有し、これらの間は少なくともプロセッサとメモリとI/Oハブ間を接続するメモリコントローラ153−1によって接続される。さらに、I/Oハブ154−1は1つ以上のPCIeの送信用及び受信用のポート155−1を有する。なお、図1ではプロセッサ151−1、メモリ151−2、メモリコントローラ151−3、I/Oハブ151−4それぞれが1つの例を示したが、物理計算機150−1はそれらを複数備えることが出来る。また、全ての物理計算機150−1〜150−nと、詳細内部構成を省略した管理サーバ1400は同一のハードウェアで構成することが可能である。
【0023】
I/Oデバイス160は、PCIe用のポート161を有し、ポート161は1つ以上のPCIe送信用及び受信用のポートを有する。
【0024】
I/Oスイッチ100は、複数のポート111−113とI/Oスイッチ設定レジスタ116とクロスバスイッチ117を有する。クロスバスイッチ117は、物理計算機に接続されているポート111および112と、I/Oデバイスに接続されているポート113の相互を接続するモジュールである。I/Oスイッチ100は、このクロスバスイッチ117のスイッチ機能により、ポートに接続された物理計算機と、I/Oデバイス間でパケットの転送を行う。図1の例では、ポート111に物理計算機150−1が、ポート112に物理計算機150−nが接続され、ポート113にI/Oデバイス160と接続されている。その為、図1の構成においては、物理計算機150−1と150−nがI/Oデバイス160と通信することが可能である。図1ではポートは111−113の3つ存在する例を示したが、I/Oスイッチのポートはいくつ存在しても良い。
【0025】
また、デバイスと接続されるポート113は、PCIeの送信部及び受信部と、本実施例の特徴であるタグ変換部として機能するタグ変換機構200を有する。このタグ変換機構200は、入力信号170R、S180Tをそれぞれ出力信号S180R,S170T変換する。なお、タグ変換機構200から出力されているS237については、後で説明する。図1ではタグ変換機構がポートの113の内部に含まれる構成を示しているが、タグ変換機構はI/Oスイッチ100の外部で独立したハードウェアとして存在しても良く、また、ソフトウェアとして存在しても良い。
【0026】
管理サーバ1400には、図示を省略した入出力装置を備えた管理端末1401が接続され、管理者などの操作により、後述するタグ変換機構に必要なレジスタの設定を行う事が出来る。
【0027】
ここで、本実施例に利用可能なPCIeのTLP(Transaction Layer Protocol)のパケットの構成について説明する。図2に示すように、PCIeのTLPパケット4000は、スタートフレーム(STP)と、シーケンス番号と、TLP Prefixと、TLPパケットヘッダと、ECRC(End to End Cyclic Redundancy Check)と、LCRC(Link Cyclic Redundancy Check)と、エンドフレーム(図中、END)から構成される。
【0028】
図3にTLPパケットヘッダの構成の詳細例を示す。PCIeのパケットヘッダにはアクセス形態ごとに幾つかの種類があり、パケットヘッダ4100Aは、32bitのMMIO(Memory mapped I/O)空間のアドレスを用いてアクセスを行うヘッダ、パケットヘッダ4100Bは、64bitのMMIO空間のアドレスを用いてアクセスのヘッダ、パケットヘッダ4200は対象のデバイスの構成情報(コンフィギュレーション)を設定する為の、ルーティングIDを用いてアクセスを行うヘッダ、パケットヘッダ4300は要求パケットに対する応答パケットのヘッダを示す。
【0029】
パケットヘッダ4100A、4100B、4200を用いるパケットが要求パケット、パケットヘッダ4300を用いるパケットが応答パケットである。応答パケットは要求パケットに対して存在するが、全ての要求パケットに対して応答パケットが存在するわけではない。例えば、MMIO空間のアドレスを用いた要求パケットであるメモリリードが物理計算機からI/Oデバイスに向けて送られた場合、I/Oデバイスは読み出した結果を応答パケットとして物理計算機に返すが、MMIO空間のアドレスを用いた要求であるメモリライトが物理計算機からI/Oデバイスに対して送られたとしても、I/Oデバイスは応答パケットを物理計算機に返さない。
【0030】
PCIeでは、パケットの区別の単位としてトランザクションIDが用いられる。これは、パケットヘッダ4100A、4100B、4200はbit40−63に示すRequesterIDとTagを組み合わせたフィールドであり、パケットヘッダ4300はbit72−95に示すRequesterIDとTagを組み合わせたフィールドである。トランザクションIDは以前に述べたように、要求パケットと応答パケットで同じ値が設定され、1つの物理計算機と1つのI/Oデバイス間のパケット間では、異なる要求パケットに対しては必ず異なる値が設定される。
【0031】
図4は、本実施例のタグ変換機構200の内部構成の一例を示すブロック図である。タグ変換機構200は、送信方向タグ変換モジュール210、受信方向タグ変換モジュール220、タグプール230、タグ保存テーブル240の4つから構成される。上述の通り、このタグ変換機構はI/Oスイッチ100の外部で独立したハードウェアとして存在しても良い。
【0032】
タグ変換機構200はパケットヘッダのトランザクションIDの一部を変換する。変換対象は、トランザクションIDのうち任意に取り出した数ビットである。以下の説明では、トランザクションIDの下位8bitを変換対象とし、タグと呼称するが、変換対象のbit数は8に制限されるものではなく、取り出す場所も下位bitに限るものではない。
【0033】
図5、図6に本実施例のタグ変換機構の全体のフローチャートを示す。以下、図5、図6を用いてタグ変換機構の動作を説明する。
【0034】
図5は物理計算機150−1〜150−nからI/Oデバイス160へ要求パケットが流れる場合の、送信方向タグ変換モジュール210のタグ変換の動作の一例を示したものである。まずS1では、送信方向タグ変換モジュール210が物理計算機からI/Oデバイスへの要求パケットを検出する。次にS2でパケットの種類を判別し、タグを変換する必要があるか否かの判別を行う。タグ変換機構200では、要求パケットに対して応答パケットが存在しないパケットに対しては、タグの変換を行っても行わなくても良い。
【0035】
次にS3では、タグを変換する事が必要な場合は、タグプール230からタグを取得する。タグプール230はI/Oデバイスで現在利用しているタグを管理しており、送信方向タグ変換モジュール210に対して現在I/Oデバイス側で未使用のタグの値を返す。以下、物理計算機から送られてきたパケットのタグをサーバタグ、タグプールから得られたI/Oデバイス側で未使用のタグをデバイスタグと呼称する。タグプール230における未使用のタグの管理は、フリーリストやビットマップ等を用いて行う事が出来る。また、タグプール230では初期値として任意の値を未使用とすることができ、特定のタグをタグ変換機構200として利用しないように設定することも出来る。
【0036】
S4では、タグ保存テーブル240に、物理計算機から送られてきたパケットのサーバタグを保存する。送信方向タグ変換モジュール210は、タグ保存テーブル240に対して書き込み要求、サーバタグ、デバイスタグの3つを送信し、タグ保存テーブル240は、書き込み要求を元にデバイスタグをアドレスとして、サーバタグをRAMやレジスタ上に保持する。これにより、物理計算機から送られてきたパケットのサーバタグと、デバイスタグが関連付けされて記憶される。
【0037】
S5では、パケットヘッダに含まれるサーバタグをタグプール230から得たデバイスタグに置換する。これにより、この要求パケットのパケットヘッダに含まれるタグは、I/Oデバイスにおいてユニークな値となることが保証される。最後にS6で、タグ変換を行う場合と行わない場合のパケット選択し、I/Oデバイスに対してパケットを送出する。
【0038】
図6は、I/Oデバイス160から物理計算機150−1〜150−nへ応答パケットが流れる場合の、応答方向タグ変換モジュール220の動作の一例を示したものである。まずS1では、応答方向タグ変換モジュール220がI/Oデバイスから物理計算機へのパケットを検出する。次に、S2でパケットの種類を判別し、タグを変換する必要があるか否かの判別を行う。タグ変換機構200では、応答方向では要求パケットに対してタグの変換を行わなくても良い。
【0039】
次にS3で、タグ保存テーブル240からサーバタグを読み出す。受信方向タグ変換モジュール220はタグ保存テーブル240に対して、読み出し要求、デバイスタグを送り、それに対してタグ保存テーブル240は、デバイスタグをアドレスとしてRAMやレジスタを引き、読みだした結果であるサーバタグを受信方向タグ変換モジュール220に返す。S4では、パケットヘッダに含まれるデバイスタグをタグ保存テーブル240から読みだしたサーバタグに置換する。これにより、パケットのタグをサーバタグへ元に戻すことが出来る。S5では、応答パケットが最終パケットであるか否かの判別を行い、この結果を元にタグプール230へのタグ解放信号の生成し、タグプールにおいてタグの解放を行う。このタグプール230へのタグ解放信号をもって、送信方向タグ変換モジュール210は再び同じタグをI/Oデバイスに対して利用出来るようになる。
【0040】
PCIeでは、要求パケットに対して応答パケットを複数に分割する場合がある。この場合、最終の応答パケットがI/Oデバイスから帰ってくる前にタグプール230に対してデバイスタグの解放を行なってしまうと、そのタグが送信方向タグ変換モジュール210で再度利用され、結果として、複数の要求パケットが同じタグでI/Oデバイスに到着するという結果になる可能性がある。そこで、応答パケットが最終のパケットではない場合はタグプール230への解放信号の生成を行わないという処理を行う。そして、ここで生成した解放信号と解放するデバイスタグをタグプール230に送り、タグの解放を行う。最後にS6で、物理計算機に対してパケットを送出する。
【0041】
図7に本実施例における、送信方向タグ変換モジュール210の回路図の一例を示したものである。図7に示す構成では、入力信号S170Rよりまず、サーバタグS213及びパケットヘッダS214を取り出す。パケットヘッダS214はパケット種別判別回路211に入力され、タグ変換を行うか否かの判別を行う。パケット種別判別回路211の出力はタグプール230に向けてタグ要求信号S2311として出力される。タグプール230はタグ要求信号S231を元にI/Oデバイス側で未使用のデバイスタグS232を送信方向タグ変換モジュール210に返す。次にS231のタグ要求信号を元に、サーバタグS213とデバイスタグS232のどちらのタグを用いるかをセレクタ212によって選択し、そのタグでパケットヘッダを置き換える。そしてタグを置き換えたパケットを出力信号S180RよりI/Oデバイス側に送出する。また、タグ要求信号、サーバタグ、デバイスタグをまとめてS241としてタグ保存テーブル240へ送出する。
【0042】
図8Aは、本実施例における送信方向タグ変換モジュール210に含まれるパケット種別判別回路211の回路図の一例を示したものである。パケット種別の判別は、例えばPCIeのパケットヘッダに含まれるFmtやTypeのフィールドによって行うことが出来る。Fmt、Typeは図3のパケットヘッダの図に示すように、全てのパケットにおいてbit24−31に含まれる。
【0043】
図8Bに、Fmt、Typeごとのパケットの種類の一覧表を示す。図8Bのパケット種類一覧表800に従って、図8Aに示すようにコンパレータ及びOR回路を用意すれば、必要なパケット種別に対してのみタグ要求をイネーブルすることが出来る。タグ変換は応答パケットが必要な要求パケットに対してのみ必要であるので、例えば、パケット種別判別回路211では、応答パケットが必要な要求パケットである、図8BにおけるMRd、MRdLk、I/ORd、I/OWr、CFgRd0、CFgWr0、CFgRd1、CFgWr1、TCFgRd、TCFgWrに対してのみタグの置き換え要求をイネーブルすれば良く、一部のパケット種別を利用しない場合等はさらにタグ変換行うパケット種別を絞り込むことができ、また、タグ変換を行うパケット種別を設定により変更可能にすることも可能である。
【0044】
図9は、本実施例における受信方向タグ変換モジュール220の回路図の一例を示したものである。図9に示す構成では、入力信号S180Tよりまず、デバイスタグS224及びパケットのS225を取り出す。パケットヘッダS225はパケット種別判別回路221及び最終応答判別回路222に入力される。パケット種別判別回路221の出力S226はタグ解放要求信号として、まずはデバイスタグS224と合わせてS243としてタグ保存テーブル240に出力される。タグ保存テーブル240はタグ解放要求を元にデバイスタグの値をキーとしてサーバタグの値を読み出し、S242にその値を返す。
【0045】
次にS226のタグ解放要求信号を元に、デバイスタグS224とサーバタグS242のどちらを利用するかをセレクタ223によって選択し、そのタグでパケットヘッダを置き換える。次に、ヘッダS225は最終応答判別回路222に入力され、判別が行われる。そして、タグ解放要求S226と最終応答判別結果S227のANDを取り、最終応答判別マスクタグ解放要求S228を作成する。そしてデバイスタグS224と最終応答判別マスクタグ解放要求S228を合わせてタグプール230に送出する。タグプール230では、タグ解放要求が有効な場合はデバイスタグの解放を行う。
【0046】
パケット種別判別回路221は送信方向タグ変換モジュール210に示すパケット種別判別回路211と同様のものである。例えば、受信方向タグ変換モジュール220では応答パケットに対してのみタグ変換を行えばよいので、図8Bに示す表において、Cpl,CplD,CplLk,CplLkDに対してのみタグ解放要求を出すようにすれば良い。一部のパケット種別を利用しない場合等はさらにタグ変換行うパケット種別を絞り込むことや、タグ変換を行うパケット種別を設定により変更可能にすることも可能であることも、同様である。
【0047】
図10は受信方向タグ変換モジュール220に含まれる最終応答判別回路222の回路図の一例を示したものである。図10に示す構成では、応答パケットのパケットヘッダ中の、Lower Addressフィールドの下位2bitをS2221に、Byte CountフィールドをS2222に、LengthフィールドをS2223に、Completion StatusフィールドをS2224に取り出し、これらのフィールドを用いて応答パケットの最終判別を行う。
【0048】
なお、これらはそれぞれ、図3の応答パケットヘッダ4300において、Lower Addressフィールドは64−71bit、Byte Countフィールドは32−43bit、Lengthフィールドは0−9bit、Completion Statusフィールドは45−47bitに含まれる。Lower Addressフィールドはアクセス先アドレスの下位bit、Byte Countフィールドは、このパケットに付属するデータを含む、ある1つの要求パケットに対して今までの応答パケットで返答したデータの総バイト数、Lengthフィールドはある1つの要求パケットに対して返さなければならない応答の総ダブルワード数、Completion Statusフィールドはその応答パケットが正常な応答パケットかエラー付きの応答パケットを示す。なお、1ダブルワードは4バイトである。
【0049】
図10に示す最終応答判別回路の構成ではまず、S2224のCompletion Statusフィールドでその応答パケットが正常なパケットかどうかを判別する。規格上、Completion Statusは0の場合のみ正常な応答であり、他の値の場合は応答パケットにおいてエラーが発生していることを示すので、S2224を正常で有ることを示す値、すなわち0と比較し判別を行っている。そしてその値のNOTを取った、正常なパケットの場合は0、エラーの場合は1を示す値をS2226に格納する。次に正常な応答パケットにおいて、最後の応答パケットか否かの判別を行う。これは、図10に示すように(Lower Addressの下位2bit)+3+(Byte Count)>>2を計算した値がLengthフィールドに等しいかどうかで判別を行う事が出来る。この結果がS2225に格納される。そして最後に、S2225とS2226のORを取ることにより、パケットがエラーの場合若しくは最終パケットと判別された場合にS227をイネーブルし、最終パケットで有ることを伝達する。
【0050】
図11は、図4のタグプール230の回路図の一例を示したものである。図11に示す構成ではタグプール230は、フリーリスト234を有し、タグ残数管理機構235及びタイマー監視機構236をそれぞれ有する事が出来る。フリーリスト234は送信方向タグ変換モジュール210よりS231を通じてタグ要求を受け取り、それに対してフリーリストから1つタグを取り出しS232を通じてデバイスタグとして送信方向タグ変換モジュール210に渡す。また、S2233を通じて受信方向タグ変換モジュール220よりタグ解放要求及びデバイスタグを受け取り、タグ解放要求に合わせてデバイスタグをフリーリストに書き戻す。このような制御によって、フリーリスト内部には常にI/Oデバイス側で利用していないタグのみ存在する事となる。
【0051】
図12に、図11のタグ残数管理機構235の一例を示す。図12に示す構成において、タグ残数管理機構235は、タグ残数管理レジスタ2352と比較器2352から構成される。タグ残数レジスタ2351には、例えばフリーリスト234に含まれるタグの数が設定される。そして、その値はタグ解放要求信号S233−1が有効になると1が加算され、タグ要求信号S231が有効になると1が減算される。このようにすると、タグ残数レジスタ2351にはフリーリストに234残っている現在のタグの残数が保持される。比較器2352は、タグ残数レジスタ2351とフリーリスト234に最低限残っていなければならないタグ数を比較し、フリーリスト234に残っているタグ数が最低限残っていなければならない個数以下になった場合にS237をアサートし、タグ数が不足していることを通知する。
【0052】
図1に示したように、このS237信号は、クロスバスイッチ117に出力される。本実施例においては、クロスバスイッチ117は、このS237信号を元に、タグ変換機構200を有するポートはパケットを新たにタグ変換機構200に挿入することを止めるなどの制御を行う。図1のサーバ装置の構成においては、S237信号をクロスバスイッチ117のポート113に対応する部分に入力することによって、クロスバスイッチ117がポート113への新たなパケットの挿入を停止することができる。なお、フリーリスト234に最低限残っていなければならないタグの個数は、例えば図1に示す管理サーバ1400より管理ネットワーク1300を介してI/Oスイッチ100のレジスタ116に設定することが可能である。
【0053】
図13に、図11のタイマー監視機構236の第1の構成例を示す。図13に示す構成では、タイマー監視機構236は、フリーリスト234が有するタグ1つ1つそれぞれに対応するタイマー2360−0〜2360−mを持つ。タイマー2360−0〜2360−mのタイムアウト時間は、図12に示すタグ残数管理機構233の場合と同様に、管理サーバ1400より管理ネットワーク1300を介して、S301よりI/Oスイッチのレジスタのとして設定する事が出来る。タイムアウト時間はPCIeのタイムアウト時間以上に設定する。そして、タグ要求信号S231がアサートされ、フリーリスト234から新たなタグが送信方向タグ変換モジュール210に送られるたびに、フリーリスト234から送られたタグに対応するタイマーのスタート信号をアサートして0からのカウントを開始し、タグ解放要求信号S233がアサートされ、フリーリスト234にタグが戻される度にフリーリスト234に戻されたタグに対応するタイマーのストップ信号をアサートしてオフにする。このようにすると、タイマーは、スタート信号がアサートされた後にPCIeのタイムアウト時間以上待ってもストップ信号がアサートされない場合のみ、タイムアウトを発生させる。これはすなわち、このタイマーに対応するタグは送信方向タグ変換モジュール210で利用されて以降、タイムアウト時間待っても受信方向タグ変換モジュール220を通過しなかったということを意味する。
【0054】
これは、図1に示す物理計算機150−1〜150−nからI/Oデバイス160への要求パケットが、I/Oデバイス160側でエラー等の何かしらの要因によって破棄されたと考えられる。すなわち、I/Oデバイス側にはタイムアウトしたタイマーに対応するタグを利用した要求パケットは既に残っていないと考えられるので、このタイマーに対応するタグは送信方向タグ変換モジュール210で再度利用することが出来る。そこで、タイマー監視機構236は、例えばフリーリスト234にタイムアウトした事とタイマーに対応するタグの番号をS239より通知し、フリーリスト234はこのタグの解放を行う。もしくは、タイマー監視機構236は、フリーリスト234にタイムアウトした事とタイマーに対応するタグの番号を管理サーバ1400に通知し、管理サーバ1400よりソフトウェアによって、フリーリスト234の解放を行うことも可能である。
【0055】
図14に、図11のタイマー監視機構236の第2の構成例を示す。図14に示す構成も、役割は図13に示す構成と同様である。図14に示す構成では、タイマー監視機構236は、タイマー2361とフリーリストシャドウ2362を有する。タイマー2361は図13に示す構成と同様に、管理サーバ1400より管理ネットワーク1300を介して、S301よりタイムアウト時間を設定することが出来る。この値は、PCIeのタイムアウト時間以上に設定する。図14に示す構成では、S238よりフリーリスト234に現在残っているデータを受け取る。そして、タイムアウトが発生した場合にフリーリスト234の値を全てフリーリストシャドウ2362にコピーする。その後、次のタイムアウトが発生するまではフリーリスト234の状態を常時監視し、最初のタイムアウトでのコピーの時は利用中であったが、その後受信方向タグ変換モジュール220から返却されたタグの解放をフリーリストシャドウ2362において行う。
【0056】
なお、最初のタイムアウトでのコピーで使用されていないタグや、一度フリーリストシャドウ2362において解放されたタグは、次のタイムアウトによるコピーまでに確保が行われることはない。このようにすると、あるタイムアウトから次のタイムアウトまではPCIeのタイムアウトの時間以上が経過する。この為、タイムアウトの時にフリーリストシャドウ2362で解放されていないタグがあったとすれば、それは図13に示す構成でタイマーがタイムアウトした場合と同様に、送信方向タグ変換モジュール210で利用されて以降タイムアウト時間待っても受信方向タグ変換モジュール220を通過しなかったということを意味する。よって、フリーリストシャドウ2362の値とタイマーのタイムアウトのANDを取り、その結果をフリーリスト234もしくは管理サーバ1400に通知すれば、図13の場合と同様にフリーリスト234はタグの解放を行う事が出来る。
【0057】
次に、図15は、図4のタグ保存テーブル240の構成の一例を示したものである。図15に示す構成では、タグ保存テーブル240はサーバタグの値をRAMやレジスタ上に保存する。タグ保存テーブル240は、送信方向タグ変換モジュール210よりS241を介してタグ要求信号、デバイスタグ、サーバタグを受け取り、タグ要求信号を元にデバイスタグをアドレスとしてサーバタグを保存する。そして受信方向タグ変換モジュール220よりS243を介してタグ解放要求信号及びデバイスタグを受け取り、タグ解放要求信号を元にデバイスタグをアドレスとしてサーバタグを読み出す。そして、S242を介して受信方向タグ変換モジュール220にサーバタグを返す。これにより、送信方向タグ変換モジュール210で変換したタグを受信方向タグ変換モジュール220で元に戻すことが出来る。
【0058】
また、図示していないが、タグ保存テーブル240ではパケットに付属するサーバタグ以外の値を保持することが可能である。保持する情報の一例として、VH(Virtual Hierarchy)番号を挙げることが出来る。図1に示す構成で物理計算機150−1〜150−nとI/Oデバイス160がパケットでデータをやり取りする場合、物理計算機150−1〜150−nを識別するために物理計算機150−1〜150−nに番号を付ける事が必要である。図1のI/Oスイッチ100がマルチルートI/O仮想化技術(以下、MR−IOV)に対応している場合、ポート113内部ではMR−IOV上で定義されるVH番号を元に物理計算機150−1〜150−nの識別を行う。I/Oスイッチ100がMR−IOVに対応しておりI/Oデバイス160がMR−IOV対応していない場合、物理計算機150−1〜150−nからのパケットに付属するVH番号をポート113で取り除き、応答パケットには再びVH番号を付ける必要がある。ここで、VH番号をタグ保存テーブル240に保存しておき、受信方向タグ変換モジュール220からのタグ保存テーブル240の読み出しと同時に読み出すことによって、応答パケットに対してVH番号を再び付加することが可能となる。
【0059】
図16は、本実施例のタグ変換機構200の初期化シーケンスの一例を示す。まずS1でI/Oスイッチ100の電源がONになる。これによりI/Oスイッチ内部にリセットがかかり、タグ変換機構200もリセットされる。ポート113は、図示を省略した、タグ変換機構200を利用するかしないかを設定するレジスタを含み、S1ではタグ変換機構200を利用しない設定で立ち上がる。次に、S2で管理サーバ1400が備える入出力装置を有する管理端末1401より、管理者などの操作によってタグ変換機構200の内部レジスタの設定を行う。例えば、タグプール230が有するタグ残数管理機構235の最小のタグ数やタイマー監視機構236のタイムアウト時間はこの段階で設定する。この情報は管理ネットワーク1300を介してI/Oスイッチ100の内部レジスタ116に設定される。そして、最後にS3で管理サーバ1400よりタグ変換機構200をONにして、タグ変換が利用可能な状態になる。
【実施例2】
【0060】
次に、第2の実施例について説明する。第2の実施例が適用されるサーバ装置も、図1に示す構成を持つ。また、I/Oスイッチ100はMR−IOVに対応しており、ポート113内部ではVH番号によって物理計算機150−1〜150−nまでの区別が行われているとする。
【0061】
I/Oデバイス160においては、実施例1で説明したように、要求パケットに含まれるトランザクションID、すなわちパケットヘッダ4100A、4100B、4200のbit40−63に示すRequesterIDとTagの組み合わせによって、パケットの区別を行う。このトランザクションIDの内、RequesterIDの利用する範囲は、物理計算機150−1〜150−n上で動作するBIOS(Basic Input Output System)や、EFI(Extensible Firmware Interface)を用いて設定され、TagはI/Oハブ154−1〜154−nによって設定される。よって、BIOSやEFIのRequesterIDの振り方に一定の制約を持たせることによって、RequesterIDの一部のフィールドを0に、I/Oハブ154−1〜154−nのタグの振り方に一定の制約を持たせることによって、Tagの一部のフィールドを0に固定することが出来る。
【0062】
図17に、第2の実施例における、タグ変換機構200の動作の一例を示す。図17に示す例では、VH番号として8bit利用しており、トランザクションIDの内8bitを、上述したBIOSやEFI、そしてI/Oハブ154−1〜154−nを用いて0に、サーバ装置として固定している。そしてタグ変換機構200のうち、送信方向タグ置換モジュール510では、図17に示すように物理計算機150−1〜150−nに振られるVH番号をトランザクションIDの内0に固定されているフィールドに挿入する。VH番号は物理計算機150−1〜150−nごとに独立した値が割り振られるので、物理計算機1台とI/Oデバイス1つの間のトランザクションIDは常にユニークな値であることが保証されている事を考慮すると、トランザクションIDの0に固定した場所にVH番号を挿入した値は、複数の物理計算機から1つのI/Oデバイスを共有する場合においても、I/Oデバイスから見てユニークな値となる。
【0063】
受信方向タグ置換モジュール520では、トランザクションIDのうち0に固定されているフィールドよりVH番号を取り出し、VH番号を取り出したフィールドを再び0で埋める。これによって、パケットのトランザクションIDを物理計算機が送信した時と同様の値にすることが出来る。なお、図17ではトランザクションIDの一部を0に固定する例を示したが、1や0と1を組み合わせた値に固定しても良い。
【0064】
以上詳述した本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。たとえば、サーバ装置は、1つのI/Oスイッチと、1つのI/Oデバイスを持つ構成を例示して説明したが、本発明は、複数のI/Oスイッチを持つ構成、複数のI/Oデバイスを持つシステム構成にも適用できる。
【0065】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現する場合を主体に説明したが、上記のタグ変換機構等は、その機能を実現するプログラムを実行することによりソフトウェアで実現してもよい。
【符号の説明】
【0066】
100 I/Oスイッチ
111、112 ポート
113 タグ変換機構付きポート
116 I/Oスイッチ設定レジスタ
117 クロスバスイッチ
150−1〜150−n 物理計算機
160 I/Oデバイス
161 ポート
200 タグ変換機構
210 送信方向タグ変換モジュール
211 パケット種別判別回路
220 受信方向タグ変換モジュール
221 パケット種別判別回路
222 最終応答判別回路
230 タグプール
235 タグ残数管理機構
2251 タグ残数管理レジスタ
236 タイマー管理機構
240 タグ保存テーブル
510 送信方向タグ置換モジュール
520 受信方向タグ置換モジュール
800 パケット種類一覧表
1300 管理ネットワーク
1400 管理サーバ
4000 PCIeのパケットフォーマット

【特許請求の範囲】
【請求項1】
複数の物理計算機が、I/Oスイッチを経由して接続されるI/Oデバイスを共有するI/Oデバイス共有方法であって、
前記物理計算機から前記I/Oデバイスに向けた通信、および前記I/Oデバイスから前記物理計算機に向けた通信に、タグを含むパケットを用い、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、当該I/Oデバイスで未使用のタグに書き換え、当該I/Oデバイスから第1の前記物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻す、
ことを特徴とするI/Oデバイス共有方法。
【請求項2】
請求項1記載のI/Oデバイス共有方法であって、
前記I/Oスイッチは、
第1の前記物理計算機から前記I/Oデバイスへの通信に用いられる前記パケットの種別の判別を行い、当該パケットが応答パケットを伴わないパケットの場合はタグを書き換えることなく、当該パケットを前記I/Oデバイスに送信する、
ことを特徴とするI/Oデバイス共有方法。
【請求項3】
請求項1記載のI/Oデバイス共有方法であって、
前記I/Oスイッチは、
前記I/Oデバイスで未使用のタグをタグプールで管理し、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、前記タグプール中のタグに書き換えた場合、前記I/Oデバイスから第1の前記物理計算機への前記応答パケットを受け取り、当該要求パケットの書き換え前のタグに戻した場合、当該応答パケットのタグを前記タグプールに戻す、
ことを特徴とするI/Oデバイス共有方法。
【請求項4】
請求項3記載のI/Oデバイス共有方法であって、
前記I/Oスイッチは、
前記I/Oデバイスで未使用のタグの数を管理し、当該未使用のタグの数が所定値以下になった場合、前記I/Oデバイスへの前記要求パケットの送出を停止する、
ことを特徴とするI/Oデバイス共有方法。
【請求項5】
請求項3記載のI/Oデバイス共有方法であって、
前記I/Oスイッチは、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、前記I/Oデバイスで未使用タグに書き換えた場合に、前記I/Oデバイスが書き換えた前記タグを利用している時間を監視し、一定時間以上経過した場合は、前記I/Oデバイスは、既に当該タグは利用していないと判別する、
ことを特徴とするI/Oデバイス共有方法。
【請求項6】
サーバ装置であって、
複数の物理計算機と、I/Oスイッチと、前記I/Oスイッチを介して、複数の前記物理計算機との間でタグを含むパケットを用いて通信を行うI/Oデバイスとを備え、
前記I/Oスイッチは、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、前記I/Oデバイスで未使用のタグに書き換え、前記I/Oデバイスから第1の前記物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻すタグ変換機構を備える、
ことを特徴とするサーバ装置。
【請求項7】
請求項6に記載のサーバ装置であって、
前記タグ変換機構は、
第1の前記物理計算機から前記I/Oデバイスへの通信に用いられる前記パケットの種別の判別を行い、当該パケットが応答パケットを伴わないパケットの場合は、タグを書き換えないで当該パケットを前記I/Oデバイスに送信する、
ことを特徴とするサーバ装置。
【請求項8】
請求項6記載のサーバ装置であって、
前記タグ変換機構は、
前記I/Oデバイスで未使用のタグをタグプールで管理し、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、当該I/Oデバイスで未使用のタグに書き換えた場合、前記I/Oデバイスから第1の前記物理計算機への前記要求パケットに対する前記応答パケットを受け取った際、当該応答パケットのタグを、前記タグプールに戻す、
ことを特徴とするサーバ装置。
【請求項9】
請求項6記載のサーバ装置であって、
前記I/Oスイッチは、
複数の前記物理計算機と前記I/Oデバイスに接続される複数のポートと、複数の前記ポートに接続されるクロスバスイッチとを更に備え、
前記タグ変換機構は、
前記I/Oデバイスで未使用のタグの数を管理し、当該未使用のタグの数が所定値以下になった場合、前記I/Oデバイスへの前記要求パケットの送出を停止するための信号を前記クロスバスイッチに出力する、
ことを特徴とするサーバ装置。
【請求項10】
請求項6記載のサーバ装置であって、
前記タグ変換機構は、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、前記I/Oデバイスで未使用のタグに書き換えた後の前記タグに関連付けして記憶するタグ保存テーブルを更に備える、
ことを特徴とするサーバ装置。
【請求項11】
複数の物理計算機とI/Oデバイスとの間で、タグを含むパケットを用いて通信を行うI/Oスイッチ装置であって、
複数の前記物理計算機と、前記I/Oデバイスとにそれぞれ接続される複数のポートと、
複数の前記ポートに接続されるクロスバスイッチと、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、前記I/Oデバイスで未使用のタグに書き換え、前記I/Oデバイスから第1の前記物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻すタグ変換部を備える、
ことを特徴とするI/Oスイッチ装置。
【請求項12】
請求項11に記載のI/Oスイッチ装置であって、
前記タグ変換部は、
前記I/Oデバイスに接続される前記ポート内に設置され、
前記第1の前記物理計算機から前記I/Oデバイスへの通信に用いられる前記パケットの種別の判別を行い、当該パケットが応答パケットを伴わないパケットの場合はタグを書き換えないで、前記I/Oデバイスに送信する、
ことを特徴とするI/Oスイッチ装置。
【請求項13】
請求項12記載のI/Oスイッチ装置であって、
前記タグ変換部は、
前記I/Oデバイスで未使用のタグをタグプールで管理し、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、当該I/Oデバイスで未使用のタグに書き換えた場合、前記I/Oデバイスから第1の前記物理計算機への前記要求パケットに対する前記応答パケットを受け取った際、当該応答パケットのタグを、前記タグプールに戻す、
ことを特徴とするI/Oスイッチ装置。
【請求項14】
請求項13記載のI/Oスイッチ装置であって、
前記タグ変換部は、
前記I/Oデバイスで未使用のタグの数を管理し、当該未使用のタグの数が所定値以下になった場合、前記I/Oデバイスへの前記要求パケットの送出を停止するための信号を前記クロスバスイッチに出力する、
ことを特徴とするI/Oスイッチ装置。
【請求項15】
請求項13記載のI/Oスイッチ装置であって、
前記タグ変換部は、
第1の前記物理計算機から前記I/Oデバイスへの要求パケットのタグを、前記I/Oデバイスで未使用のタグに書き換えた後の前記タグに関連付けして記憶するタグ保存テーブルを更に備え、
前記I/Oデバイスから、第1の前記物理計算機への前記要求パケットに対する応答パケットを受け取った際、前記保存テーブルを用いて、当該応答パケットのタグを、第1の前記物理計算機からの前記要求パケットのタグに戻す、
ことを特徴とするI/Oスイッチ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2013−3958(P2013−3958A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−136175(P2011−136175)
【出願日】平成23年6月20日(2011.6.20)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】