(57)【特許請求の範囲】
【請求項１】
複数の物理計算機が、Ｉ／Ｏスイッチを経由して接続されるＩ／Ｏデバイスを共有するＩ／Ｏデバイス共有方法であって、
前記物理計算機から前記Ｉ／Ｏデバイスに向けた通信、および前記Ｉ／Ｏデバイスから前記物理計算機に向けた通信に、タグを含むパケットを用い、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、当該Ｉ／Ｏデバイスで未使用のタグに書き換え、当該Ｉ／Ｏデバイスから第１の前記物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻し、
前記Ｉ／Ｏスイッチは、
前記Ｉ／Ｏデバイスで未使用のタグをタグプールで管理し、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、前記タグプール中のタグに書き換えた場合、前記Ｉ／Ｏデバイスから第１の前記物理計算機への前記応答パケットを受け取り、当該要求パケットの書き換え前のタグに戻した場合、当該応答パケットのタグを前記タグプールに戻し、
前記Ｉ／Ｏデバイスで未使用のタグの数を管理し、当該未使用のタグの数が所定値以下になった場合、前記Ｉ／Ｏデバイスへの前記要求パケットの送出を停止する、
ことを特徴とするＩ／Ｏデバイス共有方法。
【請求項２】
請求項１記載のＩ／Ｏデバイス共有方法であって、
前記Ｉ／Ｏスイッチは、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、前記Ｉ／Ｏデバイスで未使用タグに書き換えた場合に、前記Ｉ／Ｏデバイスが書き換えた前記タグを利用している時間を監視し、一定時間以上経過した場合は、前記Ｉ／Ｏデバイスは、既に当該タグは利用していないと判別する、
ことを特徴とするＩ／Ｏデバイス共有方法。
【請求項３】
サーバ装置であって、
複数の物理計算機と、Ｉ／Ｏスイッチと、前記Ｉ／Ｏスイッチを介して、複数の前記物理計算機との間でタグを含むパケットを用いて通信を行うＩ／Ｏデバイスとを備え、
前記Ｉ／Ｏスイッチは、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、前記Ｉ／Ｏデバイスで未使用のタグに書き換え、前記Ｉ／Ｏデバイスから第１の前記物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻すタグ変換機構と、
複数の前記物理計算機と前記Ｉ／Ｏデバイスに接続される複数のポートと、
複数の前記ポートに接続されるクロスバスイッチとを備え、
前記タグ変換機構は、
前記Ｉ／Ｏデバイスで未使用のタグの数を管理し、当該未使用のタグの数が所定値以下になった場合、前記Ｉ／Ｏデバイスへの前記要求パケットの送出を停止するための信号を前記クロスバスイッチに出力する、
ことを特徴とするサーバ装置。
【請求項４】
請求項３記載のサーバ装置であって、
前記タグ変換機構は、
前記Ｉ／Ｏデバイスで未使用のタグをタグプールで管理し、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、当該Ｉ／Ｏデバイスで未使用のタグに書き換えた場合、前記Ｉ／Ｏデバイスから第１の前記物理計算機への前記要求パケットに対する前記応答パケットを受け取った際、当該応答パケットのタグを、前記タグプールに戻す、
ことを特徴とするサーバ装置。
【請求項５】
請求項３記載のサーバ装置であって、
前記タグ変換機構は、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、前記Ｉ／Ｏデバイスで未使用のタグに書き換えた後の前記タグに関連付けして記憶するタグ保存テーブルを更に備える、
ことを特徴とするサーバ装置。
【請求項６】
複数の物理計算機とＩ／Ｏデバイスとの間で、タグを含むパケットを用いて通信を行うＩ／Ｏスイッチ装置であって、
複数の前記物理計算機と、前記Ｉ／Ｏデバイスとにそれぞれ接続される複数のポートと、
複数の前記ポートに接続されるクロスバスイッチと、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、前記Ｉ／Ｏデバイスで未使用のタグに書き換え、前記Ｉ／Ｏデバイスから第１の前記物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻すタグ変換部を備え、
前記タグ変換部は、
前記Ｉ／Ｏデバイスで未使用のタグの数を管理し、当該未使用のタグの数が所定値以下になった場合、前記Ｉ／Ｏデバイスへの前記要求パケットの送出を停止するための信号を前記クロスバスイッチに出力する、
ことを特徴とするＩ／Ｏスイッチ装置。
【請求項７】
請求項６記載のＩ／Ｏスイッチ装置であって、
前記タグ変換部は、
前記Ｉ／Ｏデバイスで未使用のタグをタグプールで管理し、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、当該Ｉ／Ｏデバイスで未使用のタグに書き換えた場合、前記Ｉ／Ｏデバイスから第１の前記物理計算機への前記要求パケットに対する前記応答パケットを受け取った際、当該応答パケットのタグを、前記タグプールに戻す、
ことを特徴とするＩ／Ｏスイッチ装置。
【請求項８】
請求項７記載のＩ／Ｏスイッチ装置であって、
前記タグ変換部は、
第１の前記物理計算機から前記Ｉ／Ｏデバイスへの要求パケットのタグを、前記Ｉ／Ｏデバイスで未使用のタグに書き換えた後の前記タグに関連付けして記憶するタグ保存テーブルを更に備え、
前記Ｉ／Ｏデバイスから、第１の前記物理計算機への前記要求パケットに対する応答パケットを受け取った際、前記保存テーブルを用いて、当該応答パケットのタグを、第１の前記物理計算機からの前記要求パケットのタグに戻す、
ことを特徴とするＩ／Ｏスイッチ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の物理計算機を備えたサーバ装置に関し、特に、１つのＩ／Ｏデバイスを複数の物理計算機で共有する技術に関する。
【背景技術】
【０００２】
近年、情報セキュリティやコンプライアンスなどへの意識の高まりから、サーバ装置上でウイルスチェックやメールフィルタなどを行うようになっており、企業のサーバ装置に求められる処理要求が増大している。これらの処理要求の増大に対し、従来は処理内容ごとに個別に物理計算機を導入して対応してきた。しかし、物理計算機台数の増大は運用コストの増大を招き、企業のＩＴ予算を圧迫して問題となっている。
【０００３】
これに対し、複数の物理計算機で実行されていた処理を１台の物理計算機に集約し、物理計算機台数を削減するサーバ統合が注目されている。サーバ統合により、物理計算機の台数に比例して発生する消費電力やスペース、障害時のメンテナンスコストなどを削減できる。このようなサーバ統合が進んだ背景には、メモリの容量やプロセッサの速度が１８ヶ月で２倍程度に向上することにより、物理計算機の処理能力が格段に向上したことが挙げられる。
【０００４】
近年では、物理計算機と外部装置との通信帯域も同様に、１８ヶ月で２倍もしくはそれ以上の速度で向上を続けている。物理計算機と外部の装置を接続するインターフェースの規格として、例えばイーサネット（登録商標）やファイバーチャネルがあり、物理計算機がこれらの規格を用いて通信を行う場合は、物理計算機１台に対して１つのイーサネット用のＩ／Ｏデバイス(ＮＩＣ：Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ)やファイバーチャネル用のＩ／Ｏデバイス(ＨＢＡ：Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ)を接続し、そのＩ／Ｏデバイスを介して通信を行う。物理計算機とＩ／Ｏデバイス間の通信は、ＰＣＩ−ＳＩＧにおいて標準化が行われているＰＣＩＥｘｐｒｅｓｓ(以下、ＰＣＩｅ)によって行われるのが一般的である。
【０００５】
ここで、メモリやプロセッサの速度向上を背景に複数の物理計算機を１つに集約するサーバ統合が注目される事となったのと同様に、インターフェースの速度向上を背景に複数の物理計算機から１つのＩ／Ｏデバイスを共有するという、Ｉ／Ｏ共有が注目を浴びている。現在は１つの物理計算機あたりＩ／Ｏデバイスを１つ利用するが、Ｉ／Ｏ共有により複数の物理計算機から１つのＩ／Ｏデバイス共有することを可能にすれば、Ｉ／Ｏデバイス数を削減し、サーバ装置のコスト削減を行うことが出来る。
【０００６】
このようなＩ／Ｏ共有を実現する技術として例えば、ＰＣＩ−ＳＩＧで標準化が行われているシングルルートＩ／Ｏ仮想化技術（ＳＲ−ＩＯＶ:Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ)(非特許文献１参照)を利用し、本来１台の物理計算機に対して１つ接続されることが前提で設計されているＩ／Ｏデバイスを複数のサーバから共有することを可能にする技術が存在する（特許文献１参照）。
【０００７】
また、同様の技術としてＰＣＩ−ＳＩＧで標準化が行われている、マルチルートＩ／Ｏ仮想化技術（ＭＲ−ＩＯＶ：Ｍｕｌｔｉ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）(非特許文献２参照)がある。しかし、こちらの技術ではＭＲ−ＩＯＶに対応したＩ／Ｏデバイスの調達が困難であるという問題がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開2010−79816号
【非特許文献】
【０００９】
【非特許文献１】「Single−Root  I/O  Virtualization  and  Sharing  Specification，Revision  1.0」、2007年11月発行、PCI−SIG著
【非特許文献２】「Multi−Root  I/O  Virtualization  and  Sharing  Specification，Revision  1.0」、2008年5月発行、PCI−SIG著
【発明の概要】
【発明が解決しようとする課題】
【００１０】
先に述べたように、物理計算機とＩ／Ｏデバイス間では一般的にＰＣＩｅを用いて通信が行われるが、ＰＣＩｅではパケットを用いて通信が行われ、そしてパケットの種類として要求パケットとそれに対する応答パケットが存在する。物理計算機とＩ／Ｏデバイス間ではある要求パケットを出した場合にその応答パケットを待たずに次の要求パケットを出すことが可能であり、これらのパケットをタグと呼ぶ識別子を用いて区別する。すなわち、物理計算機とＩ／Ｏデバイスが１対１で接続されている場合に、ある要求パケットとそれに対応する応答パケットに同じタグを付け、要求パケット間では違うタグを付ける。これによって物理計算機とＩ／Ｏデバイス間のパケットの順序制御を緩和する。言い換えれば、物理計算機とＩ／Ｏデバイス間でノンブロッキングな転送を可能にしている。例えば、メモリリードという要求パケットに対しては、必ず読み込んだ値を返す応答パケットが返る。この、メモリリードパケットと応答パケットには同じタグが振られる。これによって、例えば物理計算機０からＩ／Ｏデバイス０へメモリリード０（タグ３）、メモリリード１（タグ５）がこの順番で発行され、Ｉ／Ｏデバイスからメモリリード１の応答が先に帰ってきたとしても、その応答パケットのタグは５になっているため、このタグによってどのメモリリードに対応する応答が帰ってきたのかを、メモリリードの順番通りに応答が帰って来なくても、物理計算機側で判別することが可能になる。
【００１１】
ここで、特許文献１に示すような既存の複数の物理計算機から１つの単一物理計算機向けのＩ／Ｏデバイスを共有する技術では、このタグについて考慮されていない、という問題がある。
【００１２】
例えば、物理計算機０と物理計算機１がＩ／Ｏデバイス２を共有する場合を考えると、物理計算機０からタグ２のパケットが、物理計算機１からもタグ２のパケットが、Ｉ／Ｏデバイス２に向けて同時に発行される事があり得る。この場合、物理計算機０からのタグ２のパケットがＩ／Ｏデバイス２に到着した後、Ｉ／Ｏデバイスでそのパケットの処理が終了する前に物理計算機１からのタグ２のパケットがＩ／Ｏデバイス２に到着する、といったことが発生し、Ｉ／Ｏデバイスで正しく処理が行えない状況が発生しうる。なお、このように同じタグを持つ要求パケットが複数同時に届いた場合のＩ／Ｏデバイスの動作は、ＰＣＩｅの規格上未定義である。
【００１３】
本発明では、上記の問題点に鑑み、１つの物理計算機に対してのみ利用されることを想定されて作成されたＩ／Ｏデバイスを複数の物理計算機から共有する場合にも、タグが適切に扱えるようにするＩ／Ｏデバイス共有方法、および装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、上記の目的を達成するため、複数の物理計算機が、Ｉ／Ｏスイッチを経由して接続される１つ以上のＩ／Ｏデバイスを共有するＩ／Ｏデバイス共有方法であって、物理計算機からＩ／Ｏデバイスに向けた通信、およびＩ／Ｏデバイスから物理計算機に向けた通信に、タグを含むパケットを用い、第１の物理計算機からＩ／Ｏデバイスへの要求パケットのタグを、当該Ｉ／Ｏデバイスで未使用のタグに書き換え、当該Ｉ／Ｏデバイスから第１の物理計算機への応答パケットのタグを、要求パケットの書き換え前のタグに戻すＩ／Ｏデバイス共有方法を提供する。
【００１５】
また、本発明は、上記の目的を達成するため、サーバ装置であって、複数の物理計算機と、Ｉ／Ｏスイッチと、Ｉ／Ｏスイッチを介して複数の物理計算機との間でタグを含むパケットを用いた通信を行うＩ／Ｏデバイスとを備え、Ｉ／Ｏスイッチは、第１の物理計算機からＩ／Ｏデバイスへの要求パケットのタグを、当該Ｉ／Ｏデバイスで未使用のタグに書き換え、当該Ｉ／Ｏデバイスから第１の物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻すタグ変換機構を備えるサーバ装置を提供する。
【００１６】
更に、本発明は、上記の目的を達成するため、複数の物理計算機とＩ／Ｏデバイスとの間で、タグを含むパケットを用いて通信を行うＩ／Ｏスイッチ装置であって、複数の物理計算機と、Ｉ／Ｏデバイスに接続される複数のポートと、複数のポートに接続されるクロスバスイッチと、第１の物理計算機からＩ／Ｏデバイスへの要求パケットのタグを、Ｉ／Ｏデバイスで未使用のタグに書き換え、Ｉ／Ｏデバイスから第１の前記物理計算機への応答パケットのタグを、当該要求パケットの書き換え前のタグに戻すタグ変換部を備えるＩ／Ｏスイッチ装置を提供する。
【発明の効果】
【００１７】
本発明によれば、１つの物理計算機に接続されることを前提に設計されているＩ／Ｏデバイスを複数の物理計算機から共有した場合に、タグの競合を回避することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】各実施例に係るサーバ装置の一構成例を示すブロック図である。
【図２】各実施例に係る、PCI  Expressのパケットのフォーマットを示す図である。
【図３】各実施例に係る、PCI  Expressのパケットヘッダのフォーマットを示す図である。
【図４】第１の実施例に係る、タグ変換機構の構成例のブロック図である。
【図５】第１の実施例に係る、送信方向タグ変換モジュールの動作のフローチャートを示す図である。
【図６】第１の実施例に係る、受信方向タグ変換モジュールの動作のフローチャートを示す図である。
【図７】第１の実施例に係る、送信方向タグ変換モジュールの構成例のブロック図である。
【図８Ａ】第１の実施例に係る、パケット種別判別回路の構成例のブロック図である。
【図８Ｂ】第１の実施例に係る、PCI  Expressのパケットの種類をまとめた表を示す図である。
【図９】第１の実施例に係る、受信方向タグ変換モジュールの構成例のブロック図である。
【図１０】第１の実施例に係る、最終応答判別回路の構成例のブロック図である。
【図１１】第１の実施例に係る、タグプールの構成例のブロック図である。
【図１２】第１の実施例に係る、タグ残数管理機構の構成例のブロック図である。
【図１３】第１の実施例に係る、タイマー監視機構の第１の構成例のブロック図である。
【図１４】第１の実施例に係る、タイマー管理機構の第２の構成例のブロック図である。
【図１５】第１の実施例に係る、タグ保存テーブルの一構成例のブロック図である。
【図１６】第１の実施例に係る、タグ変換機構起動時のフローチャートを示す図である。
【図１７】第２の実施例に係る、タグ変換機構の動作例を説明するための図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【実施例１】
【００２０】
図１は、第１の実施例が適用されるサーバ装置の一構成例を示すブロック図である。図１においてサーバ装置は、１５０−１〜１５０−ｎのｎ台の物理計算機と、Ｉ／Ｏデバイス１６０と、物理計算機とＩ／Ｏデバイス間を接続するデータ転送装置として機能するＩ／Ｏスイッチ１００と、Ｉ／Ｏデバイス１６０の物理計算機１５０−１〜１５０−ｎへの割り当てを管理する管理サーバ１４００を有する。物理計算機１５０−１〜１５０−ｎとデータ転送装置間、及びデータ転送装置とＩ／Ｏデバイス間は、例えば、上記のＰＣＩ−ＳＩＧが策定したＰＣＩＥｘｐｒｅｓｓ  (ＰＣＩｅ)の規格に準拠したインターフェースで接続されているとする。なお、図１では、データ転送装置として、Ｉ／Ｏスイッチ１００が１つの例を示したが、サーバ装置はＩ／Ｏスイッチを複数備えることができ、また図１ではＩ／Ｏスイッチ１００にＩ／Ｏデバイスが１つ接続された例を示したが、Ｉ／Ｏスイッチ１００は複数のＩ／Ｏデバイスを備える事が出来る。
【００２１】
物理計算機１５０−１〜１５０−ｎと管理サーバ１４００及びＩ／Ｏスイッチ１００の間は管理ネットワーク１３００で接続される。管理ネットワーク１３００には、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等を用いることが出来る。
【００２２】
物理計算機１５０−１は、処理部であるプロセッサ１５１−１と、記憶部であるメモリ１５２−１と、Ｉ／Ｏハブ１５４−１を有し、これらの間は少なくともプロセッサとメモリとＩ／Ｏハブ間を接続するメモリコントローラ１５３−１によって接続される。さらに、Ｉ／Ｏハブ１５４−１は１つ以上のＰＣＩｅの送信用及び受信用のポート１５５−１を有する。なお、図１ではプロセッサ１５１−１、メモリ１５１−２、メモリコントローラ１５１−３、Ｉ／Ｏハブ１５１−４それぞれが１つの例を示したが、物理計算機１５０−１はそれらを複数備えることが出来る。また、全ての物理計算機１５０−１〜１５０−ｎと、詳細内部構成を省略した管理サーバ１４００は同一のハードウェアで構成することが可能である。
【００２３】
Ｉ／Ｏデバイス１６０は、ＰＣＩｅ用のポート１６１を有し、ポート１６１は１つ以上のＰＣＩｅ送信用及び受信用のポートを有する。
【００２４】
Ｉ／Ｏスイッチ１００は、複数のポート１１１−１１３とＩ／Ｏスイッチ設定レジスタ１１６とクロスバスイッチ１１７を有する。クロスバスイッチ１１７は、物理計算機に接続されているポート１１１および１１２と、Ｉ／Ｏデバイスに接続されているポート１１３の相互を接続するモジュールである。Ｉ／Ｏスイッチ１００は、このクロスバスイッチ１１７のスイッチ機能により、ポートに接続された物理計算機と、Ｉ／Ｏデバイス間でパケットの転送を行う。図１の例では、ポート１１１に物理計算機１５０−１が、ポート１１２に物理計算機１５０−ｎが接続され、ポート１１３にＩ／Ｏデバイス１６０と接続されている。その為、図１の構成においては、物理計算機１５０−１と１５０−ｎがＩ／Ｏデバイス１６０と通信することが可能である。図１ではポートは１１１−１１３の３つ存在する例を示したが、Ｉ／Ｏスイッチのポートはいくつ存在しても良い。
【００２５】
また、デバイスと接続されるポート１１３は、ＰＣＩｅの送信部及び受信部と、本実施例の特徴であるタグ変換部として機能するタグ変換機構２００を有する。このタグ変換機構２００は、入力信号１７０Ｒ、Ｓ１８０Ｔをそれぞれ出力信号Ｓ１８０Ｒ，Ｓ１７０Ｔ変換する。なお、タグ変換機構２００から出力されているＳ２３７については、後で説明する。図１ではタグ変換機構がポートの１１３の内部に含まれる構成を示しているが、タグ変換機構はＩ／Ｏスイッチ１００の外部で独立したハードウェアとして存在しても良く、また、ソフトウェアとして存在しても良い。
【００２６】
管理サーバ１４００には、図示を省略した入出力装置を備えた管理端末１４０１が接続され、管理者などの操作により、後述するタグ変換機構に必要なレジスタの設定を行う事が出来る。
【００２７】
ここで、本実施例に利用可能なＰＣＩｅのＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐｒｏｔｏｃｏｌ）のパケットの構成について説明する。図２に示すように、ＰＣＩｅのＴＬＰパケット４０００は、スタートフレーム(ＳＴＰ)と、シーケンス番号と、ＴＬＰ  Ｐｒｅｆｉｘと、ＴＬＰパケットヘッダと、ＥＣＲＣ（Ｅｎｄ  ｔｏ  Ｅｎｄ  Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）と、ＬＣＲＣ（Ｌｉｎｋ  Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）と、エンドフレーム（図中、ＥＮＤ）から構成される。
【００２８】
図３にＴＬＰパケットヘッダの構成の詳細例を示す。ＰＣＩｅのパケットヘッダにはアクセス形態ごとに幾つかの種類があり、パケットヘッダ４１００Ａは、３２ｂｉｔのＭＭＩＯ(Ｍｅｍｏｒｙ  ｍａｐｐｅｄ  Ｉ／Ｏ)空間のアドレスを用いてアクセスを行うヘッダ、パケットヘッダ４１００Ｂは、６４ｂｉｔのＭＭＩＯ空間のアドレスを用いてアクセスのヘッダ、パケットヘッダ４２００は対象のデバイスの構成情報（コンフィギュレーション）を設定する為の、ルーティングＩＤを用いてアクセスを行うヘッダ、パケットヘッダ４３００は要求パケットに対する応答パケットのヘッダを示す。
【００２９】
パケットヘッダ４１００Ａ、４１００Ｂ、４２００を用いるパケットが要求パケット、パケットヘッダ４３００を用いるパケットが応答パケットである。応答パケットは要求パケットに対して存在するが、全ての要求パケットに対して応答パケットが存在するわけではない。例えば、ＭＭＩＯ空間のアドレスを用いた要求パケットであるメモリリードが物理計算機からＩ／Ｏデバイスに向けて送られた場合、Ｉ／Ｏデバイスは読み出した結果を応答パケットとして物理計算機に返すが、ＭＭＩＯ空間のアドレスを用いた要求であるメモリライトが物理計算機からＩ／Ｏデバイスに対して送られたとしても、Ｉ／Ｏデバイスは応答パケットを物理計算機に返さない。
【００３０】
ＰＣＩｅでは、パケットの区別の単位としてトランザクションＩＤが用いられる。これは、パケットヘッダ４１００Ａ、４１００Ｂ、４２００はｂｉｔ４０−６３に示すＲｅｑｕｅｓｔｅｒＩＤとＴａｇを組み合わせたフィールドであり、パケットヘッダ４３００はｂｉｔ７２−９５に示すＲｅｑｕｅｓｔｅｒＩＤとＴａｇを組み合わせたフィールドである。トランザクションＩＤは以前に述べたように、要求パケットと応答パケットで同じ値が設定され、１つの物理計算機と１つのＩ／Ｏデバイス間のパケット間では、異なる要求パケットに対しては必ず異なる値が設定される。
【００３１】
図４は、本実施例のタグ変換機構２００の内部構成の一例を示すブロック図である。タグ変換機構２００は、送信方向タグ変換モジュール２１０、受信方向タグ変換モジュール２２０、タグプール２３０、タグ保存テーブル２４０の４つから構成される。上述の通り、このタグ変換機構はＩ／Ｏスイッチ１００の外部で独立したハードウェアとして存在しても良い。
【００３２】
タグ変換機構２００はパケットヘッダのトランザクションＩＤの一部を変換する。変換対象は、トランザクションＩＤのうち任意に取り出した数ビットである。以下の説明では、トランザクションＩＤの下位８ｂｉｔを変換対象とし、タグと呼称するが、変換対象のｂｉｔ数は８に制限されるものではなく、取り出す場所も下位ｂｉｔに限るものではない。
【００３３】
図５、図６に本実施例のタグ変換機構の全体のフローチャートを示す。以下、図５、図６を用いてタグ変換機構の動作を説明する。
【００３４】
図５は物理計算機１５０−１〜１５０−ｎからＩ／Ｏデバイス１６０へ要求パケットが流れる場合の、送信方向タグ変換モジュール２１０のタグ変換の動作の一例を示したものである。まずＳ１では、送信方向タグ変換モジュール２１０が物理計算機からＩ／Ｏデバイスへの要求パケットを検出する。次にＳ２でパケットの種類を判別し、タグを変換する必要があるか否かの判別を行う。タグ変換機構２００では、要求パケットに対して応答パケットが存在しないパケットに対しては、タグの変換を行っても行わなくても良い。
【００３５】
次にＳ３では、タグを変換する事が必要な場合は、タグプール２３０からタグを取得する。タグプール２３０はＩ／Ｏデバイスで現在利用しているタグを管理しており、送信方向タグ変換モジュール２１０に対して現在Ｉ／Ｏデバイス側で未使用のタグの値を返す。以下、物理計算機から送られてきたパケットのタグをサーバタグ、タグプールから得られたＩ／Ｏデバイス側で未使用のタグをデバイスタグと呼称する。タグプール２３０における未使用のタグの管理は、フリーリストやビットマップ等を用いて行う事が出来る。また、タグプール２３０では初期値として任意の値を未使用とすることができ、特定のタグをタグ変換機構２００として利用しないように設定することも出来る。
【００３６】
Ｓ４では、タグ保存テーブル２４０に、物理計算機から送られてきたパケットのサーバタグを保存する。送信方向タグ変換モジュール２１０は、タグ保存テーブル２４０に対して書き込み要求、サーバタグ、デバイスタグの３つを送信し、タグ保存テーブル２４０は、書き込み要求を元にデバイスタグをアドレスとして、サーバタグをＲＡＭやレジスタ上に保持する。これにより、物理計算機から送られてきたパケットのサーバタグと、デバイスタグが関連付けされて記憶される。
【００３７】
Ｓ５では、パケットヘッダに含まれるサーバタグをタグプール２３０から得たデバイスタグに置換する。これにより、この要求パケットのパケットヘッダに含まれるタグは、Ｉ／Ｏデバイスにおいてユニークな値となることが保証される。最後にＳ６で、タグ変換を行う場合と行わない場合のパケット選択し、Ｉ／Ｏデバイスに対してパケットを送出する。
【００３８】
図６は、Ｉ／Ｏデバイス１６０から物理計算機１５０−１〜１５０−ｎへ応答パケットが流れる場合の、応答方向タグ変換モジュール２２０の動作の一例を示したものである。まずＳ１では、応答方向タグ変換モジュール２２０がＩ／Ｏデバイスから物理計算機へのパケットを検出する。次に、Ｓ２でパケットの種類を判別し、タグを変換する必要があるか否かの判別を行う。タグ変換機構２００では、応答方向では要求パケットに対してタグの変換を行わなくても良い。
【００３９】
次にＳ３で、タグ保存テーブル２４０からサーバタグを読み出す。受信方向タグ変換モジュール２２０はタグ保存テーブル２４０に対して、読み出し要求、デバイスタグを送り、それに対してタグ保存テーブル２４０は、デバイスタグをアドレスとしてＲＡＭやレジスタを引き、読みだした結果であるサーバタグを受信方向タグ変換モジュール２２０に返す。Ｓ４では、パケットヘッダに含まれるデバイスタグをタグ保存テーブル２４０から読みだしたサーバタグに置換する。これにより、パケットのタグをサーバタグへ元に戻すことが出来る。Ｓ５では、応答パケットが最終パケットであるか否かの判別を行い、この結果を元にタグプール２３０へのタグ解放信号の生成し、タグプールにおいてタグの解放を行う。このタグプール２３０へのタグ解放信号をもって、送信方向タグ変換モジュール２１０は再び同じタグをＩ／Ｏデバイスに対して利用出来るようになる。
【００４０】
ＰＣＩｅでは、要求パケットに対して応答パケットを複数に分割する場合がある。この場合、最終の応答パケットがＩ／Ｏデバイスから帰ってくる前にタグプール２３０に対してデバイスタグの解放を行なってしまうと、そのタグが送信方向タグ変換モジュール２１０で再度利用され、結果として、複数の要求パケットが同じタグでＩ／Ｏデバイスに到着するという結果になる可能性がある。そこで、応答パケットが最終のパケットではない場合はタグプール２３０への解放信号の生成を行わないという処理を行う。そして、ここで生成した解放信号と解放するデバイスタグをタグプール２３０に送り、タグの解放を行う。最後にＳ６で、物理計算機に対してパケットを送出する。
【００４１】
図７に本実施例における、送信方向タグ変換モジュール２１０の回路図の一例を示したものである。図７に示す構成では、入力信号Ｓ１７０Ｒよりまず、サーバタグＳ２１３及びパケットヘッダＳ２１４を取り出す。パケットヘッダＳ２１４はパケット種別判別回路２１１に入力され、タグ変換を行うか否かの判別を行う。パケット種別判別回路２１１の出力はタグプール２３０に向けてタグ要求信号Ｓ２３１１として出力される。タグプール２３０はタグ要求信号Ｓ２３１を元にＩ／Ｏデバイス側で未使用のデバイスタグＳ２３２を送信方向タグ変換モジュール２１０に返す。次にＳ２３１のタグ要求信号を元に、サーバタグＳ２１３とデバイスタグＳ２３２のどちらのタグを用いるかをセレクタ２１２によって選択し、そのタグでパケットヘッダを置き換える。そしてタグを置き換えたパケットを出力信号Ｓ１８０ＲよりＩ／Ｏデバイス側に送出する。また、タグ要求信号、サーバタグ、デバイスタグをまとめてＳ２４１としてタグ保存テーブル２４０へ送出する。
【００４２】
図８Ａは、本実施例における送信方向タグ変換モジュール２１０に含まれるパケット種別判別回路２１１の回路図の一例を示したものである。パケット種別の判別は、例えばＰＣＩｅのパケットヘッダに含まれるＦｍｔやＴｙｐｅのフィールドによって行うことが出来る。Ｆｍｔ、Ｔｙｐｅは図３のパケットヘッダの図に示すように、全てのパケットにおいてｂｉｔ２４−３１に含まれる。
【００４３】
図８Ｂに、Ｆｍｔ、Ｔｙｐｅごとのパケットの種類の一覧表を示す。図８Ｂのパケット種類一覧表８００に従って、図８Ａに示すようにコンパレータ及びＯＲ回路を用意すれば、必要なパケット種別に対してのみタグ要求をイネーブルすることが出来る。タグ変換は応答パケットが必要な要求パケットに対してのみ必要であるので、例えば、パケット種別判別回路２１１では、応答パケットが必要な要求パケットである、図８ＢにおけるＭＲｄ、ＭＲｄＬｋ、Ｉ／ＯＲｄ、Ｉ／ＯＷｒ、ＣＦｇＲｄ０、ＣＦｇＷｒ０、ＣＦｇＲｄ１、ＣＦｇＷｒ１、ＴＣＦｇＲｄ、ＴＣＦｇＷｒに対してのみタグの置き換え要求をイネーブルすれば良く、一部のパケット種別を利用しない場合等はさらにタグ変換行うパケット種別を絞り込むことができ、また、タグ変換を行うパケット種別を設定により変更可能にすることも可能である。
【００４４】
図９は、本実施例における受信方向タグ変換モジュール２２０の回路図の一例を示したものである。図９に示す構成では、入力信号Ｓ１８０Ｔよりまず、デバイスタグＳ２２４及びパケットのＳ２２５を取り出す。パケットヘッダＳ２２５はパケット種別判別回路２２１及び最終応答判別回路２２２に入力される。パケット種別判別回路２２１の出力Ｓ２２６はタグ解放要求信号として、まずはデバイスタグＳ２２４と合わせてＳ２４３としてタグ保存テーブル２４０に出力される。タグ保存テーブル２４０はタグ解放要求を元にデバイスタグの値をキーとしてサーバタグの値を読み出し、Ｓ２４２にその値を返す。
【００４５】
次にＳ２２６のタグ解放要求信号を元に、デバイスタグＳ２２４とサーバタグＳ２４２のどちらを利用するかをセレクタ２２３によって選択し、そのタグでパケットヘッダを置き換える。次に、ヘッダＳ２２５は最終応答判別回路２２２に入力され、判別が行われる。そして、タグ解放要求Ｓ２２６と最終応答判別結果Ｓ２２７のＡＮＤを取り、最終応答判別マスクタグ解放要求Ｓ２２８を作成する。そしてデバイスタグＳ２２４と最終応答判別マスクタグ解放要求Ｓ２２８を合わせてタグプール２３０に送出する。タグプール２３０では、タグ解放要求が有効な場合はデバイスタグの解放を行う。
【００４６】
パケット種別判別回路２２１は送信方向タグ変換モジュール２１０に示すパケット種別判別回路２１１と同様のものである。例えば、受信方向タグ変換モジュール２２０では応答パケットに対してのみタグ変換を行えばよいので、図８Ｂに示す表において、Ｃｐｌ，ＣｐｌＤ，ＣｐｌＬｋ，ＣｐｌＬｋＤに対してのみタグ解放要求を出すようにすれば良い。一部のパケット種別を利用しない場合等はさらにタグ変換行うパケット種別を絞り込むことや、タグ変換を行うパケット種別を設定により変更可能にすることも可能であることも、同様である。
【００４７】
図１０は受信方向タグ変換モジュール２２０に含まれる最終応答判別回路２２２の回路図の一例を示したものである。図１０に示す構成では、応答パケットのパケットヘッダ中の、Ｌｏｗｅｒ  Ａｄｄｒｅｓｓフィールドの下位２ｂｉｔをＳ２２２１に、Ｂｙｔｅ  ＣｏｕｎｔフィールドをＳ２２２２に、ＬｅｎｇｔｈフィールドをＳ２２２３に、Ｃｏｍｐｌｅｔｉｏｎ  ＳｔａｔｕｓフィールドをＳ２２２４に取り出し、これらのフィールドを用いて応答パケットの最終判別を行う。
【００４８】
なお、これらはそれぞれ、図３の応答パケットヘッダ４３００において、Ｌｏｗｅｒ  Ａｄｄｒｅｓｓフィールドは６４−７１ｂｉｔ、Ｂｙｔｅ  Ｃｏｕｎｔフィールドは３２−４３ｂｉｔ、Ｌｅｎｇｔｈフィールドは０−９ｂｉｔ、Ｃｏｍｐｌｅｔｉｏｎ  Ｓｔａｔｕｓフィールドは４５−４７ｂｉｔに含まれる。Ｌｏｗｅｒ  Ａｄｄｒｅｓｓフィールドはアクセス先アドレスの下位ｂｉｔ、Ｂｙｔｅ  Ｃｏｕｎｔフィールドは、このパケットに付属するデータを含む、ある１つの要求パケットに対して今までの応答パケットで返答したデータの総バイト数、Ｌｅｎｇｔｈフィールドはある１つの要求パケットに対して返さなければならない応答の総ダブルワード数、Ｃｏｍｐｌｅｔｉｏｎ  Ｓｔａｔｕｓフィールドはその応答パケットが正常な応答パケットかエラー付きの応答パケットを示す。なお、１ダブルワードは４バイトである。
【００４９】
図１０に示す最終応答判別回路の構成ではまず、Ｓ２２２４のＣｏｍｐｌｅｔｉｏｎ  Ｓｔａｔｕｓフィールドでその応答パケットが正常なパケットかどうかを判別する。規格上、Ｃｏｍｐｌｅｔｉｏｎ  Ｓｔａｔｕｓは０の場合のみ正常な応答であり、他の値の場合は応答パケットにおいてエラーが発生していることを示すので、Ｓ２２２４を正常で有ることを示す値、すなわち０と比較し判別を行っている。そしてその値のNOTを取った、正常なパケットの場合は０、エラーの場合は１を示す値をＳ２２２６に格納する。次に正常な応答パケットにおいて、最後の応答パケットか否かの判別を行う。これは、図１０に示すように（Ｌｏｗｅｒ  Ａｄｄｒｅｓｓの下位２ｂｉｔ）＋３＋（Ｂｙｔｅ  Ｃｏｕｎｔ）＞＞２を計算した値がＬｅｎｇｔｈフィールドに等しいかどうかで判別を行う事が出来る。この結果がＳ２２２５に格納される。そして最後に、Ｓ２２２５とＳ２２２６のＯＲを取ることにより、パケットがエラーの場合若しくは最終パケットと判別された場合にＳ２２７をイネーブルし、最終パケットで有ることを伝達する。
【００５０】
図１１は、図４のタグプール２３０の回路図の一例を示したものである。図１１に示す構成ではタグプール２３０は、フリーリスト２３４を有し、タグ残数管理機構２３５及びタイマー監視機構２３６をそれぞれ有する事が出来る。フリーリスト２３４は送信方向タグ変換モジュール２１０よりＳ２３１を通じてタグ要求を受け取り、それに対してフリーリストから１つタグを取り出しＳ２３２を通じてデバイスタグとして送信方向タグ変換モジュール２１０に渡す。また、Ｓ２２３３を通じて受信方向タグ変換モジュール２２０よりタグ解放要求及びデバイスタグを受け取り、タグ解放要求に合わせてデバイスタグをフリーリストに書き戻す。このような制御によって、フリーリスト内部には常にＩ／Ｏデバイス側で利用していないタグのみ存在する事となる。
【００５１】
図１２に、図１１のタグ残数管理機構２３５の一例を示す。図１２に示す構成において、タグ残数管理機構２３５は、タグ残数管理レジスタ２３５２と比較器２３５２から構成される。タグ残数レジスタ２３５１には、例えばフリーリスト２３４に含まれるタグの数が設定される。そして、その値はタグ解放要求信号Ｓ２３３−１が有効になると１が加算され、タグ要求信号Ｓ２３１が有効になると１が減算される。このようにすると、タグ残数レジスタ２３５１にはフリーリストに２３４残っている現在のタグの残数が保持される。比較器２３５２は、タグ残数レジスタ２３５１とフリーリスト２３４に最低限残っていなければならないタグ数を比較し、フリーリスト２３４に残っているタグ数が最低限残っていなければならない個数以下になった場合にＳ２３７をアサートし、タグ数が不足していることを通知する。
【００５２】
図１に示したように、このＳ２３７信号は、クロスバスイッチ１１７に出力される。本実施例においては、クロスバスイッチ１１７は、このＳ２３７信号を元に、タグ変換機構２００を有するポートはパケットを新たにタグ変換機構２００に挿入することを止めるなどの制御を行う。図１のサーバ装置の構成においては、Ｓ２３７信号をクロスバスイッチ１１７のポート１１３に対応する部分に入力することによって、クロスバスイッチ１１７がポート１１３への新たなパケットの挿入を停止することができる。なお、フリーリスト２３４に最低限残っていなければならないタグの個数は、例えば図１に示す管理サーバ１４００より管理ネットワーク１３００を介してＩ／Ｏスイッチ１００のレジスタ１１６に設定することが可能である。
【００５３】
図１３に、図１１のタイマー監視機構２３６の第１の構成例を示す。図１３に示す構成では、タイマー監視機構２３６は、フリーリスト２３４が有するタグ１つ１つそれぞれに対応するタイマー２３６０−０〜２３６０−ｍを持つ。タイマー２３６０−０〜２３６０−ｍのタイムアウト時間は、図１２に示すタグ残数管理機構２３３の場合と同様に、管理サーバ１４００より管理ネットワーク１３００を介して、Ｓ３０１よりＩ／Ｏスイッチのレジスタのとして設定する事が出来る。タイムアウト時間はＰＣＩｅのタイムアウト時間以上に設定する。そして、タグ要求信号Ｓ２３１がアサートされ、フリーリスト２３４から新たなタグが送信方向タグ変換モジュール２１０に送られるたびに、フリーリスト２３４から送られたタグに対応するタイマーのスタート信号をアサートして０からのカウントを開始し、タグ解放要求信号Ｓ２３３がアサートされ、フリーリスト２３４にタグが戻される度にフリーリスト２３４に戻されたタグに対応するタイマーのストップ信号をアサートしてオフにする。このようにすると、タイマーは、スタート信号がアサートされた後にＰＣＩｅのタイムアウト時間以上待ってもストップ信号がアサートされない場合のみ、タイムアウトを発生させる。これはすなわち、このタイマーに対応するタグは送信方向タグ変換モジュール２１０で利用されて以降、タイムアウト時間待っても受信方向タグ変換モジュール２２０を通過しなかったということを意味する。
【００５４】
これは、図１に示す物理計算機１５０−１〜１５０−ｎからＩ／Ｏデバイス１６０への要求パケットが、Ｉ／Ｏデバイス１６０側でエラー等の何かしらの要因によって破棄されたと考えられる。すなわち、Ｉ／Ｏデバイス側にはタイムアウトしたタイマーに対応するタグを利用した要求パケットは既に残っていないと考えられるので、このタイマーに対応するタグは送信方向タグ変換モジュール２１０で再度利用することが出来る。そこで、タイマー監視機構２３６は、例えばフリーリスト２３４にタイムアウトした事とタイマーに対応するタグの番号をＳ２３９より通知し、フリーリスト２３４はこのタグの解放を行う。もしくは、タイマー監視機構２３６は、フリーリスト２３４にタイムアウトした事とタイマーに対応するタグの番号を管理サーバ１４００に通知し、管理サーバ１４００よりソフトウェアによって、フリーリスト２３４の解放を行うことも可能である。
【００５５】
図１４に、図１１のタイマー監視機構２３６の第２の構成例を示す。図１４に示す構成も、役割は図１３に示す構成と同様である。図１４に示す構成では、タイマー監視機構２３６は、タイマー２３６１とフリーリストシャドウ２３６２を有する。タイマー２３６１は図１３に示す構成と同様に、管理サーバ１４００より管理ネットワーク１３００を介して、Ｓ３０１よりタイムアウト時間を設定することが出来る。この値は、ＰＣＩｅのタイムアウト時間以上に設定する。図１４に示す構成では、Ｓ２３８よりフリーリスト２３４に現在残っているデータを受け取る。そして、タイムアウトが発生した場合にフリーリスト２３４の値を全てフリーリストシャドウ２３６２にコピーする。その後、次のタイムアウトが発生するまではフリーリスト２３４の状態を常時監視し、最初のタイムアウトでのコピーの時は利用中であったが、その後受信方向タグ変換モジュール２２０から返却されたタグの解放をフリーリストシャドウ２３６２において行う。
【００５６】
なお、最初のタイムアウトでのコピーで使用されていないタグや、一度フリーリストシャドウ２３６２において解放されたタグは、次のタイムアウトによるコピーまでに確保が行われることはない。このようにすると、あるタイムアウトから次のタイムアウトまではＰＣＩｅのタイムアウトの時間以上が経過する。この為、タイムアウトの時にフリーリストシャドウ２３６２で解放されていないタグがあったとすれば、それは図１３に示す構成でタイマーがタイムアウトした場合と同様に、送信方向タグ変換モジュール２１０で利用されて以降タイムアウト時間待っても受信方向タグ変換モジュール２２０を通過しなかったということを意味する。よって、フリーリストシャドウ２３６２の値とタイマーのタイムアウトのＡＮＤを取り、その結果をフリーリスト２３４もしくは管理サーバ１４００に通知すれば、図１３の場合と同様にフリーリスト２３４はタグの解放を行う事が出来る。
【００５７】
次に、図１５は、図４のタグ保存テーブル２４０の構成の一例を示したものである。図１５に示す構成では、タグ保存テーブル２４０はサーバタグの値をＲＡＭやレジスタ上に保存する。タグ保存テーブル２４０は、送信方向タグ変換モジュール２１０よりＳ２４１を介してタグ要求信号、デバイスタグ、サーバタグを受け取り、タグ要求信号を元にデバイスタグをアドレスとしてサーバタグを保存する。そして受信方向タグ変換モジュール２２０よりＳ２４３を介してタグ解放要求信号及びデバイスタグを受け取り、タグ解放要求信号を元にデバイスタグをアドレスとしてサーバタグを読み出す。そして、Ｓ２４２を介して受信方向タグ変換モジュール２２０にサーバタグを返す。これにより、送信方向タグ変換モジュール２１０で変換したタグを受信方向タグ変換モジュール２２０で元に戻すことが出来る。
【００５８】
また、図示していないが、タグ保存テーブル２４０ではパケットに付属するサーバタグ以外の値を保持することが可能である。保持する情報の一例として、ＶＨ（Ｖｉｒｔｕａｌ  Ｈｉｅｒａｒｃｈｙ）番号を挙げることが出来る。図１に示す構成で物理計算機１５０−１〜１５０−ｎとＩ／Ｏデバイス１６０がパケットでデータをやり取りする場合、物理計算機１５０−１〜１５０−ｎを識別するために物理計算機１５０−１〜１５０−ｎに番号を付ける事が必要である。図１のＩ／Ｏスイッチ１００がマルチルートＩ／Ｏ仮想化技術（以下、ＭＲ−ＩＯＶ）に対応している場合、ポート１１３内部ではＭＲ−ＩＯＶ上で定義されるＶＨ番号を元に物理計算機１５０−１〜１５０−ｎの識別を行う。Ｉ／Ｏスイッチ１００がＭＲ−ＩＯＶに対応しておりＩ／Ｏデバイス１６０がＭＲ−ＩＯＶ対応していない場合、物理計算機１５０−１〜１５０−ｎからのパケットに付属するＶＨ番号をポート１１３で取り除き、応答パケットには再びＶＨ番号を付ける必要がある。ここで、ＶＨ番号をタグ保存テーブル２４０に保存しておき、受信方向タグ変換モジュール２２０からのタグ保存テーブル２４０の読み出しと同時に読み出すことによって、応答パケットに対してＶＨ番号を再び付加することが可能となる。
【００５９】
図１６は、本実施例のタグ変換機構２００の初期化シーケンスの一例を示す。まずＳ１でＩ／Ｏスイッチ１００の電源がＯＮになる。これによりＩ／Ｏスイッチ内部にリセットがかかり、タグ変換機構２００もリセットされる。ポート１１３は、図示を省略した、タグ変換機構２００を利用するかしないかを設定するレジスタを含み、Ｓ１ではタグ変換機構２００を利用しない設定で立ち上がる。次に、Ｓ２で管理サーバ１４００が備える入出力装置を有する管理端末１４０１より、管理者などの操作によってタグ変換機構２００の内部レジスタの設定を行う。例えば、タグプール２３０が有するタグ残数管理機構２３５の最小のタグ数やタイマー監視機構２３６のタイムアウト時間はこの段階で設定する。この情報は管理ネットワーク１３００を介してＩ／Ｏスイッチ１００の内部レジスタ１１６に設定される。そして、最後にＳ３で管理サーバ１４００よりタグ変換機構２００をＯＮにして、タグ変換が利用可能な状態になる。
【実施例２】
【００６０】
次に、第２の実施例について説明する。第２の実施例が適用されるサーバ装置も、図１に示す構成を持つ。また、Ｉ／Ｏスイッチ１００はＭＲ−ＩＯＶに対応しており、ポート１１３内部ではＶＨ番号によって物理計算機１５０−１〜１５０−ｎまでの区別が行われているとする。
【００６１】
Ｉ／Ｏデバイス１６０においては、実施例１で説明したように、要求パケットに含まれるトランザクションＩＤ、すなわちパケットヘッダ４１００Ａ、４１００Ｂ、４２００のｂｉｔ４０−６３に示すＲｅｑｕｅｓｔｅｒＩＤとＴａｇの組み合わせによって、パケットの区別を行う。このトランザクションＩＤの内、ＲｅｑｕｅｓｔｅｒＩＤの利用する範囲は、物理計算機１５０−１〜１５０−ｎ上で動作するＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）や、ＥＦＩ（Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ）を用いて設定され、ＴａｇはＩ／Ｏハブ１５４−１〜１５４−ｎによって設定される。よって、ＢＩＯＳやＥＦＩのＲｅｑｕｅｓｔｅｒＩＤの振り方に一定の制約を持たせることによって、ＲｅｑｕｅｓｔｅｒＩＤの一部のフィールドを０に、Ｉ／Ｏハブ１５４−１〜１５４−ｎのタグの振り方に一定の制約を持たせることによって、Ｔａｇの一部のフィールドを０に固定することが出来る。
【００６２】
図１７に、第２の実施例における、タグ変換機構２００の動作の一例を示す。図１７に示す例では、ＶＨ番号として８ｂｉｔ利用しており、トランザクションＩＤの内８ｂｉｔを、上述したＢＩＯＳやＥＦＩ、そしてＩ／Ｏハブ１５４−１〜１５４−ｎを用いて０に、サーバ装置として固定している。そしてタグ変換機構２００のうち、送信方向タグ置換モジュール５１０では、図１７に示すように物理計算機１５０−１〜１５０−ｎに振られるＶＨ番号をトランザクションＩＤの内０に固定されているフィールドに挿入する。ＶＨ番号は物理計算機１５０−１〜１５０−ｎごとに独立した値が割り振られるので、物理計算機１台とＩ／Ｏデバイス１つの間のトランザクションＩＤは常にユニークな値であることが保証されている事を考慮すると、トランザクションＩＤの０に固定した場所にＶＨ番号を挿入した値は、複数の物理計算機から１つのＩ／Ｏデバイスを共有する場合においても、Ｉ／Ｏデバイスから見てユニークな値となる。
【００６３】
受信方向タグ置換モジュール５２０では、トランザクションＩＤのうち０に固定されているフィールドよりＶＨ番号を取り出し、ＶＨ番号を取り出したフィールドを再び０で埋める。これによって、パケットのトランザクションＩＤを物理計算機が送信した時と同様の値にすることが出来る。なお、図１７ではトランザクションＩＤの一部を０に固定する例を示したが、１や０と１を組み合わせた値に固定しても良い。
【００６４】
以上詳述した本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。たとえば、サーバ装置は、１つのＩ／Ｏスイッチと、１つのＩ／Ｏデバイスを持つ構成を例示して説明したが、本発明は、複数のＩ／Ｏスイッチを持つ構成、複数のＩ／Ｏデバイスを持つシステム構成にも適用できる。
【００６５】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現する場合を主体に説明したが、上記のタグ変換機構等は、その機能を実現するプログラムを実行することによりソフトウェアで実現してもよい。
【符号の説明】
【００６６】
１００  Ｉ／Ｏスイッチ
１１１、１１２  ポート
１１３  タグ変換機構付きポート
１１６  Ｉ／Ｏスイッチ設定レジスタ
１１７  クロスバスイッチ
１５０−１〜１５０−ｎ  物理計算機
１６０  Ｉ／Ｏデバイス
１６１  ポート
２００  タグ変換機構
２１０  送信方向タグ変換モジュール
２１１  パケット種別判別回路
２２０  受信方向タグ変換モジュール
２２１  パケット種別判別回路
２２２  最終応答判別回路
２３０  タグプール
２３５  タグ残数管理機構
２２５１  タグ残数管理レジスタ
２３６  タイマー管理機構
２４０  タグ保存テーブル
５１０  送信方向タグ置換モジュール
５２０  受信方向タグ置換モジュール
８００  パケット種類一覧表
１３００  管理ネットワーク
１４００  管理サーバ
４０００  ＰＣＩｅのパケットフォーマット
【図１】
0005687959.tif 000002
【図２】
0005687959.tif 000003
【図３】
0005687959.tif 000004
【図４】
0005687959.tif 000005
【図５】
0005687959.tif 000006
【図６】
0005687959.tif 000007
【図７】
0005687959.tif 000008
【図８Ａ】
0005687959.tif 000009
【図８Ｂ】
0005687959.tif 000010
【図９】
0005687959.tif 000011
【図１０】
0005687959.tif 000012
【図１１】
0005687959.tif 000013
【図１２】
0005687959.tif 000014
【図１３】
0005687959.tif 000015
【図１４】
0005687959.tif 000016
【図１５】
0005687959.tif 000017
【図１６】
0005687959.tif 000018
【図１７】
0005687959.tif 000019