(57)【要約】【課題】PCIeパスの障害時に、障害でパケットを失わずに処理動作を継続する。【解決手段】冗長化したPCIeパスを用いて第１情報処理ユニットと第２情報処理ユニットとを接続する情報処理装置において、運用系のポートを用いた、通常のパケット通信時におけるパケットを第１の所定バッファに格納しておき、パス障害時に、第１の所定バッファの内容を、待機系ポートに備えられた第２の所定バッファにコピーし、障害で失われたパケットを待機系の該第２の所定バッファから送信する。【選択図】図１
2009267771.tif 000002
【特許請求の範囲】
【請求項１】
PCIe規格に準拠したスイッチを介して、該第１の情報処理ユニットと該第２の情報処理ユニット間でパケットを通信する情報処理装置であって、
少なくとも該第１情報処理ユニットと該PCIeスイッチとの間に、通常時に使用される運用系の第１のPCIeパスと、特定の場合に使用される待機系の第２のPCIeパスを設定し、
該運用系パスにおいて、該第１のPCIeパスを通して受信したパケットを送信のために一時格納する第１の送信バッファと、該第１の送信バッファ内のパケットを該第２情報処理ユニットへ送信したときに該パケットを一時格納する第１の所定バッファとを有し、
該待機系パスにおいて、該第２のPCIeパスを通して受信したパケットを送信のために一時格納する第２の送信バッファと、該第２の送信バッファ内のパケットを該第２情報処理ユニットへ送信したときに該パケットを一時格納する第２の所定バッファとを有し、
特定の場合に、該第１の送信バッファ又は該第１の所定バッファに格納されたパケットを該第２の情報処理ユニットへ送信するのを止めて、該運用系パスを該待機系パスに切り替え、
少なくとも該第１の所定バッファの内容を、該待機系パスの該第２の所定バッファにコピーして、該第２の所定バッファに格納されたパケットを該第２の情報処理ユニットへ送信することを特徴とする情報処理装置。
【請求項２】
複数のポートを有するルートコンプレックスと、複数のアップストリームポートを有するPCIeスイッチと、該ルートコンプコンプレックスの複数のポートと該PCIeスイッチの複数のアップストリームポートを接続し、該ルートコンプレックスと該PCIeスイッチ間のパスを冗長化したPCIeのパスと、を有する情報処理装置であって、
該ルートコンプレックス及び該PCIeスイッチは、
運用系ポートの、送信を待つパケットを格納する第１の送信バッファと、再送用としてパケットを格納する第１の所定バッファと、受信したパケットの識別番号を記録する第１レジスタと、
待機系ポートの、送信を待つパケットを格納する第２の送信バッファと、再送用としてパケットを格納する第２の所定バッファと、受信したパケットの識別番号を記録する第２レジスタと、を有し、
障害時にパス切り替え命令に従って、該運用系ポートの、該第１の送信バッファと、該第１の所定バッファと、該第１レジスタの内容を、該待機系ポートの、該第２の送信バッファと、該第２の所定バッファと、該第２レジスタにコピーし、
待機系ポートの該第２の所定バッファに格納されたパケットを送信することを特徴とする情報処理装置。
【請求項３】
前記PCIeスイッチは、ＯＳに対して、運用系ポートと待機系ポートを１つのポートとして見せるために、ＯＳから参照可能な仮想レジスタを備え、運用系ポートと待機系ポートの状態及び動作管理レジスタを、ＯＳには見せず、通常時には、該仮想レジスタの参照先を、運用系ポートの状態及び動作管理レジスタとし、障害時には、仮想レジスタの参照先を、待機系ポートの状態及び動作管理レジスタに切り替えることを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
該ルートコンプレックス及び該PCIeスイッチを管理する管理装置を有し、該管理装置は、障害発生時に該ルートコンプレックス及び該PCIeスイッチに対して、該運用系パスから該待機系パスへ切り替える命令を発行することを特徴とする請求項２又は３の情報処理装置。
【請求項５】
PCIe規格に準拠したスイッチを介して、該第１の情報処理ユニットと該第２の情報処理ユニット間でパケットを通信する情報処理装置であって、
複数のポートを有するルートコンプレックスと、該ルートコンプレックスと接続される、複数の該PCIeスイッチからなる中継用の第１のPCIeスイッチ群と、該第１のPCIeスイッチ群に接続される、複数の該PCIeスイッチからなる第２のPCIeスイッチ群と、少なくともパケットの発信元となる該第１の情報処理ユニットと該第１及び第２のPCIeスイッチ群の状態を管理する管理装置と、を有し、
該第１のPCIeスイッチ群において、通常時に該該第１の情報処理ユニットと第１のPCIeパスを用いて接続される運用系PCIeスイッチと、特定の場合に該該第１の情報処理ユニットと第２のPCIeパスを用いて接続される待機系PCIeスイッチを予め設定し、
該運用系PCIeスイッチにおいて、該第１のPCIeパスを通して受信したパケットを送信のために一時格納する第１の送信バッファと、該第１の送信バッファ内のパケットを該第２のPCIeスイッチ群へ送信したときに該パケットを一時格納する第１の所定バッファとを有し、
該待機系PCIeスイッチにおいて、該第２のPCIeパスを通して受信したパケットを送信のために一時格納する第２の送信バッファと、該第２の送信バッファ内のパケットを該第２のPCIeスイッチ群へ送信したときに該パケットを一時格納する第２の所定バッファとを有し、
特定の場合に、該第１の送信バッファ又は該第１の所定バッファに格納されたパケットの送信を止めて、該運用系PCIeスイッチを該待機系PCIeスイッチに切り替え、
少なくとも該第１の所定バッファの内容を、該管理装置を介して該待機系PCIeスイッチの該第２の所定バッファにコピーして、該第２の所定バッファに格納されたパケットを該第２のPCIeスイッチ群へ送信することを特徴とする情報処理装置。
【請求項６】
パケットの送信先となる、該第２の情報処理ユニット又はPCIeスイッチ該又は該第２のPCIeスイッチ群がパケットを正常に受信しない場合、通常時は該第１の所定バッファに格納されたパケットを、障害時は該第２の所定バッファに格納されたパケットを、送信先へ送信することを特徴とする請求項１乃至５のいずれか１つの情報処理装置。
【請求項７】
第１情報処理ユニットと第２情報処理ユニットの間に、PCIeスイッチを介して形成されるPCIeパスを使用して、該第１情報処理ユニットから該第２情報処理ユニットへパケットを送信するパケット通信制御方法であって、
少なくとも該第１情報処理ユニットと該PCIeスイッチとの間で、通常時に使用される運用系PCIeパスと、該運用系パスの障害時に使用される待機系PCIeパスを予め設定し、
通常時は運用系PCIeパスを用いて、該第１の情報処理ユニットから受信したパケットを送信するために第１の送信バッファに一時格納し、かつ該第１の送信バッファ内のパケットを該第２情報処理ユニットへ送信した時に該パケットを第１の所定バッファに一時格納し、
該運用系PCIeパスの障害時に、該第１の送信バッファ又は該第１の所定バッファに格納されたパケットを該第２の情報処理ユニットへ送信するのを止めて、該運用系PCIeパスを該待機系PCIeパスに切り替え、
該第１の所定バッファの内容を、該待機系PCIeパスの該第２の所定バッファにコピーし、
該第２の所定バッファに格納されたパケットを該第２の情報処理ユニットへ送信することを特徴とするパケット通信制御方法。
【請求項８】
前記PCIeスイッチは、ＯＳに対して、運用系ポートと待機系ポートを１つのポートとして見せるために、ＯＳから参照可能な仮想レジスタを備えており、
運用系ポートと待機系ポートの状態及び動作管理レジスタを、ＯＳには見せず、通常時には、該仮想レジスタの参照先を、運用系ポートの状態及び動作管理レジスタとし、障害時には、仮想レジスタの参照先を、待機系ポートの状態及び動作管理レジスタに切り替えることを特徴とする請求項１０記載のPCIeのパス切り替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びパス制御方法に係り、特に、PCI Express（PCIe）スイッチを用いて接続されたＣＰＵとＩ／Ｏデバイスを有する情報処理装置における、パス障害に対処するためのPCIeパスの制御に関する。
【背景技術】
【０００２】
情報処理装置における、Ｉ／Ｏデバイスの接続インターフェースにPCIe（Peripheral Component Interconnect Express）が広く使われている。PCIeは、構成内部にスイッチを配置することで、接続可能なエンドポイントの数を増し、Ｉ／Ｏデバイスの拡張が可能である(非特許文献１参照)。
【０００３】
Ｉ／Ｏデバイスに障害が発生した場合、処理動作を維持するための手法として、一般的に冗長構成が知られている。Ｉ／Ｏデバイスに依存した機能による、冗長構成の実現方法の1つにTeamingがある。Teamingは、Network Interface Card(ＮＩＣ)を複数用意して、専用のドライバで管理するものであり、障害が発生したＮＩＣを縮退させ、残りのＮＩＣで通信することで、障害発生後も動作の継続を可能とする。
【０００４】
また、ネットワーク分野において、パス障害に対処するために接続パスを二重化する構成が知られている。例えば、特許文献１及び２には、ネットワークにパス障害が発生した時、障害の発生したパスを待機中のパスに切り替え、その待機パス或いは迂回路を用いてデータ通信することが開示されている。
【０００５】
【特許文献１】特開２００１−６０９５９号公報
【特許文献２】特開２００７−１５９０６３号公報
【非特許文献１】PCI Express Base Specification 2.０
【発明の開示】
【発明が解決しようとする課題】
【０００６】
PCIeの仕様では、PCIeリンクに回復不可能な障害が発生した場合、リンクを遮断して停止するため、通信途中のパケットが失われてしまう。
従って、ネットワーク分野における接続パスの二重化構成と同様に、多段に配置したPCIeスイッチ間、又はマルチポートのルートコンプレックス(ＲＣ)-PCIeスイッチ間を複数のパスで接続したパス二重化構成を構築し、障害の発生したパスを待機中のパスに切り替えても、動作を継続することが出来ないという問題がある。
【０００７】
本発明の目的は、冗長化したPCIeのパスを備えた情報処理装置におけるパス障害時に、パケットを失うことなく、ＯＳやアプリケーションに対して障害の影響を与えずに、処理動作を継続することができるようにすることにある。
【課題を解決するための手段】
【０００８】
本発明は、冗長化したPCIeのパスを備えた情報処理装置において、パスの障害時に、運用系ポートのバッファ内容を待機系ポートのバッファにコピーし、障害で失われたパケットを待機系のパスにて再送することで実現する。
【０００９】
また、冗長化したPCIeのパスを備えた情報処理装置において、ＯＳに対し、運用系ポートと待機系ポートを１つのポートとして見せるために、ＯＳから参照可能な仮想レジスタを備え、運用系ポートと待機系ポートの状態及び動作管理レジスタを、ＯＳには見せず、通常動作中は、仮想レジスタの参照先を、運用系ポートの状態及び動作管理レジスタとし、障害時は、仮想レジスタの参照先を、待機系ポートの状態及び動作管理レジスタに切り替えることで、ＯＳに対して障害を隠蔽することが可能である。
【００１０】
好ましい例によれば、本発明に係る情報処理装置は、PCIe規格に準拠したスイッチを介して、該第１の情報処理ユニットと該第２の情報処理ユニット間でパケットを通信する情報処理装置であって、
少なくとも該第１情報処理ユニットと該PCIeスイッチとの間に、通常時に使用される運用系の第１のPCIeパスと、特定の場合に使用される待機系の第２のPCIeパスを設定し、
該運用系パスにおいて、該第１のPCIeパスを通して受信したパケットを送信のために一時格納する第１の送信バッファと、該第１の送信バッファ内のパケットを該第２情報処理ユニットへ送信したときに該パケットを一時格納する第１の所定バッファとを有し、
該待機系パスにおいて、該第２のPCIeパスを通して受信したパケットを送信のために一時格納する第２の送信バッファと、該第２の送信バッファ内のパケットを該第２情報処理ユニットへ送信したときに該パケットを一時格納する第２の所定バッファとを有し、
特定の場合に、該第１の送信バッファ又は該第１の所定バッファに格納されたパケットを該第２の情報処理ユニットへ送信するのを止めて、該運用系パスを該待機系パスに切り替え、
少なくとも該第１の所定バッファの内容を、該待機系パスの該第２の所定バッファにコピーして、該第２の所定バッファに格納されたパケットを該第２の情報処理ユニットへ送信することを特徴とする情報処理装置として構成される。
【００１１】
また、好ましくは、本発明に係る情報処理装置は、複数のポートを有するルートコンプレックスと、複数のアップストリームポートを有するPCIeスイッチと、該ルートコンプコンプレックスの複数のポートと該PCIeスイッチの複数のアップストリームポートを接続し、該ルートコンプレックスと該PCIeスイッチ間のパスを冗長化したPCIeのパスと、を有する情報処理装置であって、
該ルートコンプレックス及び該PCIeスイッチは、
運用系ポートの、送信を待つパケットを格納する第１の送信バッファと、再送用としてパケットを格納する第１の所定バッファと、受信したパケットの識別番号を記録する第１レジスタと、
待機系ポートの、送信を待つパケットを格納する第２の送信バッファと、再送用としてパケットを格納する第２の所定バッファと、受信したパケットの識別番号を記録する第２レジスタと、を有し、
障害時にパス切り替え命令に従って、該運用系ポートの、該第１の送信バッファと、該第１の所定バッファと、該第１レジスタの内容を、該待機系ポートの、該第２の送信バッファと、該第２の所定バッファと、該第２レジスタにコピーし、
待機系ポートの該第２の所定バッファに格納されたパケットを送信することを特徴とする情報処理装置として構成される。
【００１２】
好ましくは、前記PCIeスイッチは、ＯＳに対して、運用系ポートと待機系ポートを１つのポートとして見せるために、ＯＳから参照可能な仮想レジスタを備え、運用系ポートと待機系ポートの状態及び動作管理レジスタを、ＯＳには見せず、通常時には、該仮想レジスタの参照先を、運用系ポートの状態及び動作管理レジスタとし、障害時には、仮想レジスタの参照先を、待機系ポートの状態及び動作管理レジスタに切り替える。
【００１３】
また、好ましくは、該ルートコンプレックス及び該PCIeスイッチを管理する管理装置を有し、該管理装置は、障害発生時に該ルートコンプレックス及び該PCIeスイッチに対して、該運用系パスから該待機系パスへ切り替える命令を発行する。
【００１４】
また、他の例によれば、本発明に係る情報処理装置は、好ましくは、PCIe規格に準拠したスイッチを介して、該第１の情報処理ユニットと該第２の情報処理ユニット間でパケットを通信する情報処理装置であって、
複数のポートを有するルートコンプレックスと、該ルートコンプレックスと接続される、複数の該PCIeスイッチからなる中継用の第１のPCIeスイッチ群と、該第１のPCIeスイッチ群に接続される、複数の該PCIeスイッチからなる第２のPCIeスイッチ群と、少なくともパケットの発信元となる該第１の情報処理ユニットと該第１及び第２のPCIeスイッチ群の状態を管理する管理装置と、を有し、
該第１のPCIeスイッチ群において、通常時に該該第１の情報処理ユニットと第１のPCIeパスを用いて接続される運用系PCIeスイッチと、特定の場合に該該第１の情報処理ユニットと第２のPCIeパスを用いて接続される待機系PCIeスイッチを予め設定し、
該運用系PCIeスイッチにおいて、該第１のPCIeパスを通して受信したパケットを送信のために一時格納する第１の送信バッファと、該第１の送信バッファ内のパケットを該第２のPCIeスイッチ群へ送信したときに該パケットを一時格納する第１の所定バッファとを有し、
該待機系PCIeスイッチにおいて、該第２のPCIeパスを通して受信したパケットを送信のために一時格納する第２の送信バッファと、該第２の送信バッファ内のパケットを該第２のPCIeスイッチ群へ送信したときに該パケットを一時格納する第２の所定バッファとを有し、
特定の場合に、該第１の送信バッファ又は該第１の所定バッファに格納されたパケットの送信を止めて、該運用系PCIeスイッチを該待機系PCIeスイッチに切り替え、
少なくとも該第１の所定バッファの内容を、該管理装置を介して該待機系PCIeスイッチの該第２の所定バッファにコピーして、該第２の所定バッファに格納されたパケットを該第２のPCIeスイッチ群へ送信することを特徴とする情報処理装置として構成される。
【００１５】
また、本発明に係るパケット通信制御方法は、好ましくは、第１情報処理ユニットと第２情報処理ユニットの間に、PCIeスイッチを介して形成されるPCIeパスを使用して、該第１情報処理ユニットから該第２情報処理ユニットへパケットを送信するパケット通信制御方法であって、
少なくとも該第１情報処理ユニットと該PCIeスイッチとの間で、通常時に使用される運用系PCIeパスと、該運用系パスの障害時に使用される待機系PCIeパスを予め設定し、
通常時は運用系PCIeパスを用いて、該第１の情報処理ユニットから受信したパケットを送信するために第１の送信バッファに一時格納し、かつ該第１の送信バッファ内のパケットを該第２情報処理ユニットへ送信した時に該パケットを第１の所定バッファに一時格納し、
該運用系PCIeパスの障害時に、該第１の送信バッファ又は該第１の所定バッファに格納されたパケットを該第２の情報処理ユニットへ送信するのを止めて、該運用系PCIeパスを該待機系PCIeパスに切り替え、
該第１の所定バッファの内容を、該待機系PCIeパスの該第２の所定バッファにコピーし、
該第２の所定バッファに格納されたパケットを該第２の情報処理ユニットへ送信することを特徴とするパケット通信制御方法として構成される。
【発明の効果】
【００１６】
本発明によれば、冗長化したPCIeのパスを有する情報処理装置においてパスの障害に対処するためにパスを切り替える場合、障害時に通信中のパケットを失うことなく、またＯＳ又はアプリケーションに対して障害の影響を与えることなく、動作を継続することが可能である。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
[実施例１]
図１は一実施形態による情報処理装置の構成を示す。
情報処理装置１００は、ＣＰＵモジュール１１０と、Ｉ／Ｏモジュール１２０と、サービスプロセッサ(ＳＶＰ)１３０を備えて構成される。ＣＰＵモジュール１１０は、システムバス２５０と接続したＣＰＵ２００と、ルートコンプレックス(ＲＣ)３００を有する。Ｉ／Ｏモジュール１２０は、PCIeスイッチ４００と、複数のPCIeデバイス５０１、５０２、５０３を有する。ＣＰＵモジュール１１０内のＲＣ３００は、主系PCIeケーブル１５１と待機系PCIeケーブル１６１を介して、Ｉ／Ｏモジュール１２０内のPCIeスイッチ４００と通信することができる。
【００１８】
ＳＶＰ１３０は、ルートコンプレックス３００及びPCIeスイッチ４００の状態を管理する管理装置としての機能を有し、複数の管理パス１７１、１７２を介して、ＣＰＵモジュール１１０内のＲＣ３００及びＩ／Ｏモジュール１２０内のPCIeスイッチ４００と通信することができる。なお、情報処理装置１００は、ＣＰＵで実行されるＯＳやアプリケーションプログラムを格納する記憶部を有するが、その図示は省略してある。
【００１９】
この情報処理装置１００においてモジュール間をケーブルで接続しているが、そのケーブルの断線やコネクタ接触不良等に起因して、障害が高確率で発生する可能性がある。その場合、パスを適切に切り替えることが重要である。
【００２０】
情報処理装置１００において、ＲＣ３００はＩ／Ｏ階層の最上位に位置し、ＣＰＵ２００からリクエストを受けて、PCIeデバイス５０１〜５０３にPCIeパケットを発行する。ＲＣ３００は、通常時には主系PCIeケーブル１５１を介してPCIeスイッチ４００と通信する。しかし、主系PCIeケーブル１５１にパス障害が発生した場合、ＲＣ３００はパスを切り替えて、待機系PCIeケーブル１６１を用いてPCIeスイッチ４００と通信する。
さらに、情報処理装置１００において、PCIeスイッチ４００は、パケットの持つアドレス情報から、宛先となるいずれかのPCIeデバイスと接続するポートを選んでパケットを送信する。
【００２１】
図２はＲＣ３００の構成を示すブロック図である。
ＲＣ３００は、システムバス２５０と接続するシステムバスポート３１０と、主系PCIeケーブル１５１と接続する主系ダウンストリームポート３５０と、待機系PCIeケーブル１６１と接続する待機系ダウンストリームポート３６０と、システムバスポート３１０と各ダウンストリームポートの接続を切り替えるポートスイッチ３０２と、ポートスイッチの接続先を設定するポートセレクタ３０３と、仮想コンフィグレジスタ３０４とを有して構成される。
【００２２】
システムバスポート３１０は、システムバス２５０とPCI Expressのプロトコル変換を行うシステムバス制御部３１１と、システムバス側からのパケットを受信する受信キュー３１２と、受信キュー３１２のパケット格納状態を管理し、パケットをダウンストリームポート側に転送する受信キュー制御部３１３と、ダウンストリームポート側から転送されるパケットを格納する送信キュー３１５と、送信キュー３１５のパケット格納状態を管理し、パケットをシステムバス側に送信する送信キュー制御部３１６とを有する。
【００２３】
主系ダウンストリームポート３５０と待機系ダウンストリームポート３６０は同じ構成であり、それぞれ送信制御部７００Ａ、７００Ｂと、受信制御部８００Ａ、８００Ｂと、コンフィグレジスタ９００Ａ、９００Ｂを有する。なお、ポート毎の送信制御部及び受信制御部を区別するため、構成要素の番号の末尾に、主系ダウンストリームポート３５０ならばＡを、待機系ダウンストリームポート３５０ならばＢを付加している。
主系ダウンストリームポート３５０、及び待機系ダウンストリームポート３６０のコンフィグレジスタ９００Ａ、９００Ｂは、ポートのリンク ケイパビリティ、リンク コントロール、及びリンク ステータスを管理する。この詳細については非特許文献１に記載されている。
【００２４】
仮想コンフィグレジスタ３０４は、ＯＳから参照可能であり、通常時、主系ダウンストリームポート３５０のコンフィグレジスタ９００Ａが実体となる。ＯＳは仮想コンフィグレジスタ３０４を介して、主系ダウンストリームポート３５０のコンフィグレジスタ９００Ａにアクセスする。このとき待機系ダウンストリームポート３６０のコンフィグレジスタ９００ＢはＯＳから隠蔽される。ＯＳ或いはアプリケーションによるレジスタライト（write）は、コンフィグレジスタ９００Ａ及びコンフィグレジスタ９００Ｂの両方に書き込まれ、レジスタ値の同期が取れている。障害時、仮想コンフィグレジスタ３０４の実体は、主系ダウンストリームポート３５０のコンフィグレジスタ９００Ａから、待機系ダウンストリームポート３６０のコンフィグレジスタ９００Ｂに切り替わる。障害情報を格納した主系ダウンストリームポート３６０のコンフィグレジスタ９００ＡはＯＳから隠蔽される。ただし、ＳＶＰ１３０は、主系ダウンストリームポート３５０及び待機系ダウンストリームポート３６０のコンフィグレジスタ９００Ａ、９００Ｂの両方に対して、常時アクセス可能である。
【００２５】
ポートスイッチ３０２は、通常時、システムバスポート３１０と主系ダウンストリームポート３５０とを接続する。パス障害発生時に、ＳＶＰ１３０が発行したパス切り替え命令を受けると、接続先を主系ダウンストリームポート３５０から待機系ダウンストリームポート３６０へ切り替える。
【００２６】
図３は図１のPCIeスイッチ４００の構成を示す。
PCIeスイッチ４００は、主系PCIeケーブル１５１と接続する主系アップストリームポート４１０と、待機系PCIeケーブル１６１と接続する待機系アップストリームポート４２０と、アップストリームポートの接続を切り替えるアップストリームポートスイッチ４０１と、アップストリームポートスイッチ４０１の接続先を設定するアップストリームポートセレクタ４０２と、各PCIeデバイス５０１、５０１、５０３と接続するダウンストリームポート４５０、４６０、４７０と、各ダウンストリームポートとの接続を切り替えるダウンストリームポートスイッチ４０３と、ダウンストリームポートスイッチ４０３の接続先を設定するダウンストリームポートセレクタ４０４と、ルーティング情報を格納するルーティングテーブル４０５と、ＯＳから参照可能なアップストリームポート用仮想コンフィグレジスタ４０６、を有して構成される。
【００２７】
主系アップストリームポート４１０と待機系アップストリームポート４２０は同じ構成であり、それぞれ送信制御部７００Ｃ、７００Ｄと、受信制御部８００Ｃ、８００Ｄ、コンフィグレジスタ９００Ｃ，９００Ｄを有する。
ダウンストリームポート４５０、４６０、４７０は同じ構成であり、それぞれ送信制御部７００Ｅ、７００Ｆ、７００Ｇと、受信制御部８００Ｅ、８００Ｆ、８００Ｇを有する。
なお、ポート毎の送信制御部及び受信制御部を区別するために、構成要素の番号の末尾にＣ〜Ｇを付し、主系アップストリームポート４１０ならばＣ、待機系アップストリームポート４２０ならばＤ、ダウンストリームポート４５０,４６０,４７０ならば順にＥ,Ｆ,Ｇを付加している。
【００２８】
アップストリームポートスイッチ４０１は、通常時、主系アップストリームポート４１０とダウンストリームポートスイッチ４０３とを接続している。しかしリンク障害が発生した時に、ＳＶＰ１３０が発行したパス切り替え命令を受けると、接続先を主系アップストリームポート４１０から待機系アップストリームポート４２０に切り替える。
【００２９】
図４は、図２及び図３に示す送信制御部７００及び受信制御部８００の構成を示すブロック図である。
ルートコンプレックス３００及びPCIeスイッチ４００の送信制御部及び受信制御部８００は、以下に述べるように、同様の構成を成している。
送信制御部７００は、PCIeパスに送信するパケットを格納する送信キュー７０１と、送信キュー７０１のパケット格納状態を管理し、パケット送信を制御する送信キュー制御部７０２と、パケットの再送に備えて送信したパケットのコピーを格納するリトライバッファ７０３と、リトライバッファ７０３の格納状態を管理し、パケット再送を制御するリトライバッファ制御部７０４と、送信キュー制御部７０２或いはリトライバッファ制御部７０４に対しパケット送信またはパケット再送を指示する送信パケット制御部７０６と、送信キュー７０１とリトライバッファ７０３の接続パスを切り替えるパススイッチ７０５と、クレジット管理を行うクレジットカウンタ７０７とを有して構成される。
なお、実装の仕方によっては、送信キュー７０１とリトライバッファ７０３を分離せず、一つに機能を集約する場合もある。
【００３０】
受信制御部８００は、PCIeパスから受信したパケットを格納する受信キュー８０１と、受信キュー８０１のパケット格納状態を管理し、パケット転送を制御する受信キュー制御部８０２と、PCIeパケットの受信及び、Ackパケットの発行を行う受信パケット制御部８０３と、Ackのシーケンス番号を格納するAck#カウンタ８０５と、クレジット管理を行うクレジットカウンタ８０４とを有して構成される。
【００３１】
次に、図５Ａ〜図５Ｄのフローチャートを参照して、情報処理装置１００で実行される通常時のパケット通信処理について、図２〜図４も参照しながら説明する。
この例は、ＣＰＵ２００が発行したPCIeデバイス５０１宛てのリクエストをＲＣ３００が受信して、PCIeスイッチ４００へ転送し、PCIeスイッチ４００がＲＣ３００からのパケットを受信して、PCIeデバイス５０１へ送信する一連の処理を示す。
【００３２】
ＣＰＵ２００がリクエストを発行すると、システムバス２５０を介して、ＲＣ３００のシステムバス制御部３１１がそのリクエストを受信する(ステップ（以後Ｓを表す）１００１、１００２)。
【００３３】
システムバス制御部３１１は、受信キュー制御部３１３に対して、受信キュー３１２に空きエントリがあるかを問い合せる（Ｓ１００３）。その結果、受信キューに空きエントリが無い場合、システムバス制御部３１１はＣＰＵ２００にリトライを要求する(Ｓ１００３)。一方、受信キュー３１２に空きエントリがある場合、システムバス制御部３１１は、受信したリクエストをPCI Expressのパケットに変換し、シーケンス番号を付加して、受信キュー３１２に格納する(Ｓ１００４)。
【００３４】
そして、主系ダウンストリームポート３５０の送信キュー７０１Ａに空きエントリがあるかを判定し（Ｓ１００５）、その結果、送信キュー７０１Ａに空きエントリがない場合、送信キュー制御部７０２Ａは、受信キュー制御部３１３に対して、パケットの転送を抑止する。受信キュー制御部３２３は、送信キュー７０１Ａのエントリが空くのを待つ。
一方、送信キュー７０１Ａに空きエントリがある場合、受信キュー制御部３２３は、受信キュー３１２から送信キュー７０１Ａに対し、パケットを転送する(Ｓ１００６)。
【００３５】
送信パケット制御部７０６Ａは、クレジットカウンタ７０７Ａの値を確認し、クレジットがパケット送信に必要な値になるまで待つ(Ｓ１００７)。そして、クレジットがパケット送信に必要な値に達すると、送信パケット制御部７０６Ａはパススイッチ７０５Ａを切り替え、送信キュー７０１Ａと接続し、主系PCIeケーブル１５１を介し、PCIeスイッチ４００の主系アップストリームポート４１０に対して、パケットを送信する。更に送信したパケットのコピーを、リトライバッファ７０３Ａに格納し、送信したパケットに応じて、クレジットカウンタ７０７Ａの値をデクリメントする(Ｓ１００８)。なお、PCIeパス間のパケットフロー制御は、非特許文献１に記載の規格に従うものであり、その詳明は省略する。
【００３６】
ＲＣ３００の主系ダウンストリームポート３５０が送信したパケットは、PCIeスイッチ４００の主系アップストリームポート４１０内の受信パケット制御部８０３Cで受信される。受信パケット制御部８０３Ｃは、受信したパケットのシーケンス番号とＬＣＲＣをチェックする(Ｓ１００９、１０１０)。
チェック結果が正常ならば、受信パケット制御部８０３Ｃがパケットを受信キュー８０１Ｃに格納し、AckをＲＣ３００に返信する。さらに、パケットのシーケンス番号をAck#カウンタ８０５Ｃに記録する。(Ｓ１０１１)。一方、チェック結果が異常ならば、受信パケット制御部８０３Ｃは、パケットを破棄し、Ack#カウンタ８０５Ｃの値を付記したNakをＲＣ３００に返信する(Ｓ１０１２)。
【００３７】
Ackを受信したＲＣ３００の主系ダウンストリームポート３５０は、Ackに付記されたシーケンス番号までのパケットを、リトライバッファ７０４Ａから開放する(Ｓ１０１３)。一方、Nakを受信したＲＣ ３００の主系ダウンストリームポート３５０は、Nakに付記されたシーケンス番号の次のパケット以降をリトライバッファ７０３Ａより再送する(Ｓ１０１４)。
【００３８】
受信キュー制御部８０２Ｃは、パケットのアドレスでルーティングテーブル４０５を引き、パケットのアドレスに対応するPCIeデバイス５０１とつながるダウンストリームポート４５０を選択する。ダウンストリームポートセレクタ４０４はルーティングテーブル４０５より接続情報を受けると、ダウンストリームポートスイッチを切り替え、ダウンストリームポート４５０と接続する(Ｓ１０１５)。
【００３９】
ダウンストリームポート４５０の送信キュー７０１Ｅに空きエントリがない場合、送信キュー制御部７０２Ｅは、受信キュー制御部８０２Ｃに対し、パケットの転送を抑止する。受信キュー制御部８０２Ｃは、送信キュー７０１Ｅのエントリが空くのを待つ(Ｓ１０１６)。送信キュー７０１Ｅに空きエントリがある場合、受信キュー制御部８０２Ｃは、受信キュー８０１Ｃから送信キュー７０１Ｅに対し、パケットを転送する(Ｓ１０１７)。
【００４０】
送信パケット制御部７０６Ｅは、クレジットカウンタ７０７Ｅの値を確認し、クレジットがパケット送信に必要な値になるまで待つ(Ｓ１０１８)。そして、クレジットがパケット送信に必要な値に達すると、送信パケット制御部７０５Ｅはパススイッチ７０５Ｅを切り替え、送信キュー７０１Ｅと接続し、PCIeデバイス５０１に対して、パケットを送信する。更に送信したパケットのコピーを、リトライバッファ７０３Ｅに格納し、送信したパケットに応じて、クレジットカウンタ７０７Ｅの値をデクリメントする(Ｓ１０１９)。
【００４１】
PCIeスイッチ４００のダウンストリームポート４５０から送信されたパケットは、PCIeデバイス５０１で受信される。PCIeデバイス５０１は、受信したパケットのシーケンス番号とＬＣＲＣをチェックする(Ｓ１０２０、１０２１)。その結果、チェック結果が正常ならば、PCIeデバイスは、AckをPCIeスイッチ４００へ返信する。(Ｓ１０２２)。一方、チェック結果が異常ならば、PCIeデバイスは、パケットを破棄し、NakをPCIeスイッチ４００へ返信する(Ｓ１０２３)。
【００４２】
Ackを受信したPCIeスイッチ４００のダウンストリームポート４５０は、Ackに付記されたシーケンス番号までのパケットを、リトライバッファ７０３Eから開放する(Ｓ１０２４)。また、Nakを受信したダウンストリームポート４５０は、Nakに付記されたシーケンス番号の次のパケット以降をリトライバッファ７０３Eより再送する(Ｓ１０２５)。
PCIデバイス５０１は、受信したパケットのリクエスト内容を実行する。これで、ＲＣ３００及びPCIeスイッチ４００は一連の処理を終了する(Ｓ１０２６)。
【００４３】
次に、図６Ａ、６Ｂを参照して、情報処理装置における障害時のパケット通信処理について説明する。
この例は、情報処理装置１００において通常時のパケット処理中にリンク障害を検出し、パスを切り替え、パケットを再送し、その後、通常のパケット送信を再開するまでの一連の処理を示す。
【００４４】
まず、障害検出フェーズとして、主系PCIeケーブル１５１でリンク障害が発生し、ＲＣ３００の主系ダウンストリームポート３５０がリンク障害を検出すると(Ｓ２００１)、ＲＣ３００は、管理パス１７１を介して、ＳＶＰ１３０にリンク障害の発生を報告する(Ｓ２００２)。
ＳＶＰ１３０は、ＲＣ３００からリンク障害の報告を受けると、ＲＣ３００及びPCIeスイッチ４００の両者に対してパス切り替え命令を送信する(Ｓ２００３)。ＲＣ３００及びPCIeスイッチ４００は、パス切り替え命令を受信すると、再送準備フェーズを開始する。
【００４５】
［ＲＣ３００の再送準備フェーズ］
ＲＣ３００がパス切り替え命令を受信すると、主系ダウンストリームポート３５０の送信キュー制御部７０１Ａ及びリトライバッファ制御部７０４Ａは、送信キュー７０１Ａ及びリトライバッファ７０３Ａからのパケット送信を停止し、かつ受信キュー制御部３１３に対してパケットの送信キュー７０１Ａへの転送を抑止する(Ｓ２００４)。
【００４６】
そして、リンクが休止状態だった待機系ダウンストリームポート３６０に対してリンクの活性化を開始する(Ｓ２００５)。更に、仮想コンフィグレジスタ３０４の実体を、主系ダウンストリームポート３５０のコンフィグレジスタ９００Ａから、待機系ダウンストリームポート３６０のコンフィグレジスタ９００Ｂに切り替える。これにより主系ダウンストリームポート３５０のリンク障害がＯＳから隠蔽される(Ｓ２００６)。
【００４７】
主系ダウンストリームポート３５０の送信制御部７００Ａの送信キュー７０１Ａとリトライバッファ７０３Ａの内容を、待機系ダウンストリームポート３６０の送信制御部７００Ｂの送信キュー７０１Ｂとリトライバッファ７０３Ｂにコピーする(Ｓ２００７)。
コピーが終わると、ポートセレクタ３０２の接続設定を変更し、ポートスイッチ３０２の接続を、主系ダウンストリームポート３５０から、待機系ダウンストリームポート３６０に切り替える(Ｓ２００８)。
【００４８】
送信キュー制御部７０２Ａは、ポートスイッチ３０２の切り替えを確認すると、受信キュー制御部３１３に対するキュー転送抑止を解除し、受信キュー制御部３１３は、受信キュー３１２からのパケット転送を再開する(Ｓ２００９)。
【００４９】
[PCIeスイッチ４００の再送準備フェーズ]
PCIeスイッチ４００がパス切り替え命令を受信すると、主系アップストリームポート４１０の受信制御部８００Ｃは、Ack#カウンタ８０５Ｃの内容を、待機系アップストリームポート４２０の受信制御部８００ＤのAck#カウンタ８０５Ｄにコピーする(Ｓ２０１０)。
そして、リンクが休止状態だった待機系アップストリームポート４２０に対し、リンクの活性化を開始する(Ｓ２０１１)。
【００５０】
主系アップストリームポート４１０の受信キュー８０１Ｃのエントリ内のパケットが空か否かを判定し、その結果、パケットが残っていれば、ダウンストリームポートにパケットの転送を続ける(Ｓ２０１２)。
そして、受信キュー８０１Ｃのエントリ内の全てのパケットの転送が完了したら、アップストリームポートセレクタ４０２の接続設定を変更し、アップストリームポートスイッチ４０１の接続を、主系アップストリームポート４１０から、待機系アップストリームポート４２０に切り替える(Ｓ２０１３)。
待機系PCIeケーブル１６１のリンクが活性化したら、ＲＣ ３００及びPCIeスイッチ４００は、再送フェーズに移る(Ｓ２０１４)。
【００５１】
[ＲＣ３００の再送フェーズ]
待機系PCIeケーブル１６１のリンクの活性化が完了すると、ＲＣ３００は待機系ダウンストリームポート３５０のリトライバッファ７０３Ｂに格納されているパケットを、シーケンス番号順に先頭から再送する開始する(Ｓ２０１５)。
【００５２】
[PCIeスイッチ４００の再送フェーズ]
待機系アップストリームポート４２０の受信パケット制御部８０３Ｄは、再送されたパケットを受信し、パケットのシーケンス番号をAck#カウンタ８０５Ｄの値と比較する(Ｓ２０１６、２０１７)。
その結果、再送されたパケットのシーケンス番号がAck#カウンタ８０５Ｄの値以下ならば、受信パケット制御部８０３Ｄは、パケットを破棄する(２０１８)。
【００５３】
一方、再送されたパケットのシーケンス番号がAck#カウンタ８０５Ｄの値より大きい場合、受信パケット制御部８０３Ｄは、パケットを受信キュー８０１Ｄに格納し、ＲＣ３００にAckを返信する。そして、Ack#カウンタ８０５Ｄの値をパケットのシーケンス番号に更新する(２０１９)。
その後、リトライバッファ７０３Ｂに格納されているパケットを全て再送し終わったら、ＲＣ３００及びPCIeスイッチは再送フェーズを終了し、以後、待機系PCIeケーブル１６１にて通常の処理を行う。
【００５４】
上記した障害時におけるパケット処理の説明では、ＣＰＵ２００より発行されたPCIeデバイス５０１宛てリクエストのパケット処理において、送信側であるＲＣ３００の主系ダウンストリームポート３５０の送信制御部７００Ａと待機系ダウンストリームポート３６０の送信制御部７００Ｂのパス切り替えと、それと対になる受信側のPCIeスイッチ４００の主系アップストリーム４１０の受信制御部８００Cと待機系アップストリーム４２０の受信制御部８００Ｄについてパスを切り替える、旨述べた。
【００５５】
実際の障害時には、さらにPCIeデバイス５０１、５０２、５０３より発行されたＣＰＵ２００宛てリクエストのパケット処理、つまりPCIeスイッチ４００が送信側になり、主系アップストリーム４１０の送信制御部７００Ｃと主系アップストリーム４１０の送信制御部７００Ｄのパス切り替えと、それと対になるＲＣ ３００が受信側になり、主系ダウンストリームポート３５０の受信制御部８００Ａと待機系ダウンストリームポート３６０の受信制御部８００Ｂのパス切り替えも同様に行なわれる。
【００５６】
図７Ａ及び７Ｂは、PCIデバイス５０１からＣＰＵ２００宛てに発行したリクエストをPCIeスイッチ４００が受信及びＲＣ３００へ転送する際に、パス障害を検出し、パスを切り替え、パケットを再送する処理を示すフローチャートである。
この場合、パス切り替えの動作はＲＣ３００とPCIeスイッチ４００で、受信と送信が入れ替わるだけであり、各処理動作は上記したパケット処理の場合と同様である。上記の説明から理解されるであろうから詳説は省略する。
【００５７】
以上説明したように、本実施例によれば、パス障害時に、ＣＰＵモジュール１１０のＲＣ３００と、Ｉ／Ｏモジュール１２０のPCIeスイッチ４００において、主系ポートの送信キュー、リトライバッファ、Ack#カウンタの内容を、待機系ポートにコピーし、待機系のリトライバッファからパケットの再送を行うことによって、動作中の突発的なパス障害に対し、パケットを失うことなく、動作を継続することが可能となる。
【００５８】
また、ポートの状態及び動作の管理のためのレジスタに関し、ＯＳから参照可能な仮想のレジスタを有し、通常動作時は運用系のレジスタを仮想レジスタの実体とし、障害時に運用系のレジスタから、待機系のレジスタに切り替えることで、ＯＳに対して障害を隠蔽することが可能である。
【００５９】
なお、実施例１は種々変形して実施し得る。
例えば、実施例１では、ＲＣ３００の主系ダウンストリームポート３５０がパス障害を検出し、ＲＣ３００がＳＶＰ１３０に障害の発生を報告している。変形例によれば、主系PCIeケーブル１５１の接続先であるPCIeスイッチ４００の主系アップストリームポート４１０がパス障害を検出し、PCIeスイッチ４００が管理パス１７２を介してＳＶＰ１３０にパス障害の発生を報告した場合でも、上記と同様に、パスを切り替えることが可能である。
【００６０】
また、実施例１では、ＲＣ３００がＳＶＰ１３０に障害の発生を報告しているが、ＲＣ３００とPCIeスイッチ４００の両方が報告する場合もある。この場合、ＳＶＰ１３０は先に受信した報告をトリガにして、パス切り替え命令を発行する。パス切り替え命令を発行した後に受信したパス障害の報告は破棄される。
【００６１】
また、実施例１では、ＲＣ３００のダウンストリームポートの２ポートと、PCIeスイッチ４００のアップストリームポートの２ポートを接続し、２本のパスを備えている。その変形例では、ＲＣ３００及びPCIeスイッチ４００のポート数は、これに縛られる事無く、２ポート以上ならば制限されない。例えば、ＲＣ３００がダウンストリームポートを３ポート、PCIeスイッチ４００がアップストリームポートを３ポート備え、それぞれを接続した３本のパスを備えた場合、１本のパスを運用系とし、残りの２本のパスを待機系とすることで、２回のパス障害までパス切り替えすることが可能となる。
また他の例として、２本のパスを運用形とし、１本のパスを待機系とし、運用系のどちらか一方のパスで障害が発生し、待機系のパスで切り替えを行う場合、パスの使用効率が高く、かつ１回のパス障害までパスの切り替えが可能となる。
【００６２】
[実施例２]
図８は、一実施形態による情報処理装置の構成を示す。
この例において、情報処理装置１０１は実施例１の情報処理装置１００の構成を更に拡張したものであり、ＣＰＵモジュール１１０は複数のPCIeスイッチ１４１、１４２を介して複数のＩ／Ｏモジュール１２０、１２１、１２２と接続して通信する。
【００６３】
ここで、情報処理装置１０１の、ＣＰＵモジュール１１０、Ｉ／Ｏモジュール１２０〜１２２及びＳＶＰ１３０は、実施例１のＣＰＵモジュール１１０、Ｉ／Ｏモジュール１２０及びＳＶＰ１３０と同様の構成を成す。
ＳＶＰ１３０は、実施例１と同様に、管理パス（図示省略）を介して、PCIeスイッチ１４１、１４２、ＣＰＵモジュール１１０内のＲＣ３００、及びＩ／Ｏモジュール１２０〜１２２内のPCIeスイッチ４００と、それぞれ接続される。
【００６４】
ＣＰＵモジュール１１０は、主系PCIeケーブル１５１を介して、主系のPCIeスイッチ１４１と接続され、主系のPCIeスイッチは１４１、主系PCIeケーブル１５２、１５３、１５４を介して、Ｉ／Ｏモジュール１２０、１２１,１２２と接続されるする。また、ＣＰＵモジュール１１０は、待機系PCIeケーブル１６１を介して、待機系のPCIeスイッチ１４２と接続され、待機系のPCIeスイッチは１４２、待機系PCIeケーブル１６２、１６３、１６４を介して、Ｉ／Ｏモジュール１２０、１２１,１２２と接続される。
【００６５】
PCIeスイッチ１４１、１４２は、実施例１による、PCIeスイッチ４００と同様の構成を成し、ＣＰＵモジュール１１０とＩ／Ｏモジュール１２０、１２１、１２２の間で、パケットを中継する。PCIeスイッチ１４１の主系アップストリームポート４１０は、主系PCIeケーブル１５１を介してＣＰＵモジュール１１０と接続されるが、待機系アップストリームポート４２０はケーブルと接続されない。PCIeスイッチ１４２の待機系アップストリームポート４２０は、待機系PCIeケーブル１６１を介してＣＰＵモジュール１１０と接続されるが、主系アップストリームポート４１０はケーブルと接続されない。
【００６６】
情報処理装置１０１は、パス障害時、主系のPCIeスイッチ１４１を待機系のPCIeスイッチ１４２に切り替え、主系PCIeケーブル１５１、１５２〜１５４を、それぞれ待機系PCIeケーブル１６１、１６２〜１６４に切り替える。
【００６７】
実施例２における、ＲＣ３００とPCIeスイッチ１４１,１４２の間、及びPCIeスイッチ１４１、１４２とＩ／Ｏモジュール１２０〜１２３内PCIeスイッチ１２０の間の通常時のパケット処理は、実施例１におけるパケット処理と同様である。
【００６８】
次に、図９Ａ〜図９Ｆを参照して、情報処理装置における障害時のパケット通信処理について説明する。
この例は、ＣＰＵ２００から送信された、Ｉ／Ｏモジュール１２０内のPCIデバイス５０１宛てのパケットをPCIeスイッチ１４１が受信し、Ｉ／Ｏモジュール１２０内PCIeスイッチ４００に転送する際に、主系PCIeケーブル１５２でパス障害が発生した場合、PCIeスイッチ１４１がパス障害を検出して、主系から待機系にパスを切り替えて、PCIeスイッチ１４２を経由してパケットを再送する処理である。
【００６９】
PCIeスイッチ１４１がパス障害を検出した場合、ＣＰＵモジュール１１０から送信された、Ｉ／Ｏモジュール１２０宛てのパケットについて、ＲＣ３００は主系ポート内の、送信キュー７０１Ａ、及びリトライバッファ７０３Ａ内に、Ｉ／Ｏモジュール１２０宛てのパケットが存在する可能性があるので、主系ポートから待機系ポートへパスを切り替える。ＲＣ３００のパス切り替え動作は、実施例１における、ＲＣ３００のパス切り替えと同様である（図９Ａ，図９Ｂ；Ｓ４００４〜Ｓ４００９、図９Ｅ；Ｓ４０２４）。
【００７０】
Ｉ／Ｏモジュール１２０内のPCIeスイッチ４００は、障害の発生した主系PCIeケーブル１５２から、待機系PCIeケーブル１６２へ、パスを切り替える。
Ｉ／Ｏモジュール１２１、１２２は、直接主系PCIeケーブル１５２のパス障害の影響を受けないが、ＲＣ３００がパスを切り替えるので、Ｉ／Ｏモジュール１２１、１２２内のPCIeスイッチ４００も合わせて、パスを切り替える。PCIeスイッチ４００のパス切り替え動作は、実施例１における、PCIeスイッチ４００のパス切り替えと同様である（図９Ｂ；Ｓ４０１０〜Ｓ４０１３）。
【００７１】
ＣＰＵモジュール１１０と、Ｉ／Ｏモジュール１２０、１２１、１２２を中継するスイッチは、主系のPCIeスイッチ１４１から、待機系のPCIeスイッチ１４２と切り替わる。PCIeスイッチ１４１のパス切り替えの動作は、障害の検出から、ＳＶＰ１３０が発行するパス切り替え命令を受信するまで、実施例１におけるPCIeスイッチ４００と同様である（図９Ａ,図９Ｃ；Ｓ４０１４）。
PCIeスイッチ１４１のパス切り替え命令を受信した後、主系のPCIeスイッチ１４１の送信キュー７０１、及びリトライバッファ７０３の内容について、PCIeスイッチ内のポート間のコピーではなく、待機系のPCIeスイッチ１４２に対してPCIeスイッチ間のコピーをする（Ｓ４０１５,Ｓ４０１６）。
【００７２】
PCIeスイッチ１４１、１４２間のコピーは、まずＳＶＰ１３０が、管理パスを介して主系のPCIeスイッチ１４１の主系アップストリームポート４１０の受信キュー８０１ＣとAck#カウンタ８０５Ｃの内容、及びダウンストリームポート４５０、４６０、４７０の送信キュー７０１Ｅ、Ｆ、Ｇ及びリトライバッファ７０３Ｅ、Ｆ、Ｇの内容をリードし、ＳＶＰ１３０内のメモリに記録する。次に、ＳＶＰ１３０は、メモリに記録した主系のPCIeスイッチ１４１の主系アップストリームポート４１０の受信キュー８０１ＣとAck#カウンタ８０５Ｃの内容、及びダウンストリームポート４５０、４６０、４７０の送信キュー７０１Ｅ、Ｆ、Ｇ及びリトライバッファ７０３Ｅ、Ｆ、Ｇの内容を、管理パスを介して、待機系のPCIeスイッチ１４２の主系アップストリームポート４１０の受信キュー８０１ＣとAck#カウンタ８０５Ｃの内容、及びダウンストリームポート４５０、４６０、４７０の送信キュー７０１Ｅ、Ｆ、Ｇ及びリトライバッファ７０３Ｅ、Ｆ、Ｇにライトする（図９；Ｓ４０１５，４０１６）。
【００７３】
待機系のPCIeスイッチ１４２は、ＳＶＰ１３０より送信キュー７０１、及びリトライバッファ７０３の内容を受けた後、実施例１におけるPCIeスイッチ４００と同様に、Ｉ／Ｏモジュール１２０、１２１，１２２に対しパケットを再送する（図９Ｄ,９Ｅ，９Ｆ）。
パケットの再送が完了すると、ＲＣ３００、及びPCIeスイッチ１４２は待機系パスにて通常の処理を行う。
【００７４】
なお、上記した、障害時のパス切り替えの説明では、ＣＰＵ２００から送信された、Ｉ／Ｏモジュール１２０内PCIeデバイス５０１宛てリクエストのパケット処理において、ＣＰＵモジュール１１０内ＲＣ３００、Ｉ／Ｏモジュール内１２０〜１２２内PCIeスイッチ４００、及びPCIeスイッチ１４１、１４２における動作について説明した。
【００７５】
実際の障害時には、さらにＩ／Ｏモジュール１２０、１２１、１２２内PCIeデバイス５０１、５０２、５０３から発行されたＣＰＵ２００宛てリクエストのパケットに対する、パスの切り替えが行われる。これは、ＣＰＵ２００から発行された、Ｉ／Ｏモジュール１２０内PCIeデバイス５０１宛てのリクエストのパケットに対するパス切り替えの、ＣＰＵモジュール１１０内ＲＣ３００、Ｉ／Ｏモジュール内１２０、１２１、１２２内PCIeスイッチ４００、及びPCIeスイッチ１４２、１４２にて、送信と受信が入れ替わるだけで、それぞれの動作は上記した障害時パス切り替えの処理と同様である。
【００７６】
以上の障害時の処理により、パス障害時に、PCIeスイッチ１４１、１４２と、Ｉ／Ｏモジュール１２０、１２１、１２２のPCIeスイッチ１２０において、PCIeスイッチ１４１、１４２間で送信キュー７０１、及びリトライバッファ７０３の内容をコピーし、PCIスイッチ１４２のリトライバッファ７０１からパケットの再送を行うことによって、動作中の突発的なパス障害に対し、パケットを失うことなく、動作を継続することが可能となる。
【００７７】
なお、上記実施例２では、PCIe１４１の主系ダウンストリームポートがパス障害を検出し、PCIeスイッチ１４１がＳＶＰ１３０に障害の発生を報告しているが、主系PCIeケーブル１５２の接続先であるＩ／Ｏモジュール１２０内PCIeスイッチ４００の主系アップストリームポート４００が、パス障害を検出し、Ｉ／Ｏモジュール１２０内PCIeスイッチ１２０が、管理パスを介してＳＶＰ１３０にパス障害の発生を報告した場合でも、上記と同様に、パスを切り替えることが可能である。
【００７８】
また、実施例２では、主系PCIeケーブル１５２にパス障害が発生した場合にパスを切り替えるが、主系PCIeケーブル１５１、１５３、１５４に障害が発生した場合でも、上記と同様に、パスを切り替えることが可能である。
【００７９】
また、実施例２では、主系PCIeケーブル１５２にパス障害が発生した場合にパスを切り替えるが、PCIeスイッチ１４１の内部に障害が発生した場合、PCIeスイッチ１４１がその障害を検出し、管理パスを介してＳＶＰ１３０に障害を報告することで、上記と同様に、パスを切り替えることが可能である。
【００８０】
また、実施例２では、パス障害に対し、主系の全PCIeスイッチ及びケーブルについて待機系と切り替えるが、ＳＶＰ１３０は、受信した障害検出の報告から、障害の発生したパスを判定し、パス切り替え命令に障害パスの情報を付加して、ＲＣ３００及び各PCIeスイッチに送信し、ＲＣ３００及びPCIeスイッチ１４１、１４２は、送信キュー、リトライバッファの中から、障害パスを通信するパケットをのみを、主系から待機系にコピーすることで、１つのＩ／Ｏモジュールに対して、パスを切り替えることが可能である。
【００８１】
例えば、Ｉ／Ｏモジュール１２０と接続する主系PCIeケーブル１５２でパス障害が発生し、待機系PCIeケーブル１６２に切り替える場合、障害の報告を受けたＳＶＰ１３０は、障害パスが主系ＰＣＩeケーブル１５２であることを付加した、パス切り替え命令を発行する。パス切り替え命令を受けたＲＣ３００は、主系ポートの送信キュー７０１Ａと、リトライバッファ７０３Ａの中からＣＰＵモジュール１１０発Ｉ／Ｏモジュール１２０宛てのパケットのみを、待機系ポートの送信キュー７０１Ｂと、リトライバッファ７０３Ｂにコピーし、待機系ポートから再送する。
【００８２】
同様に、パス切り替え命令を受けた主系のPCIeスイッチ１４１は、障害の発生した主系PCIeケーブル１５２と接続するダウンストリームポートの送信キュー及びリトライバッファのパケットを、待機系のPCIeスイッチ１４２にコピーし、待機系PCIeスイッチ１４２は、待機系PCIeケーブル１６２を介して、パケットを再送する。Ｉ／Ｏモジュール１２０発ＣＰＵモジュール１１０宛てのパケットについても同様に、主系のPCIeスイッチ１４１は、アップストリームポートの送信キュー７０１とリトライバッファ７０３の中からＩ／Ｏモジュール１２０発ＣＰＵモジュール宛てのパケットのみを、待機系のPCIeスイッチ１４２にコピーし、待機系PCIeスイッチ１４２は、待機系PCIeケーブル１６１を介してパケットを再送する。ＲＣ３００の主系ポート及びPCIeスイッチ１４１に残ったコピー元のパケットは破棄する。再送が完了したら、ＲＣ３００は、Ｉ／Ｏモジュール１２０との通信を待機系ポート３６０を介して行い、Ｉ／Ｏモジュール１２１、１２２との通信を主系ポート３５０を介して行う。
【００８３】
また、実施例２では、ＣＰＵモジュール内ＲＣ３００とＩ／Ｏモジュール１２０、１２１、１２２内PCIスイッチ４００との間に、PCIスイッチ１４１、１４２をから成る中継用のPCIeスイッチ群を１段備え、このPCIeスイッチ群を通るパスを二重化して、障害時にパスを切り替えるように構成した。他の例によれば、中継用のPCIeスイッチ群は、１段に限らず、複数段に配置するようにしてもよい。頂点に位置するＲＣ３００とＩ／Ｏモジュール群に含まれる末端のPCIeスイッチ４００群との間が、複数系のパスで接続して冗長化されていれば、中継のPCIeスイッチ郡の配列は特に制限されない。
【００８４】
また、実施例２では、ＣＰＵモジュール内ＲＣ３００はダウンストリームポートを２ポート備えているが、例えば、シングルポートのみのルートコンプレックスを備えたＣＰＵモジュールの場合、ＣＰＵモジュールとＩ／Ｏモジュールを中継するPCIeスイッチを２段に配置し、ＣＰＵモジュール-Ｉ／Ｏモジュール間のパスを二重化することで、パスの障害時にパスを動的切り替えることが可能となる。
【図面の簡単な説明】
【００８５】
【図１】一実施形態（実施例１）による情報処理装置の構成を示すブロック図。
【図２】図１のルートコンプレックス３００の構成を示すブロック図。
【図３】図１のPCIeスイッチ４００の構成を示すブロック図。
【図４】図２及び図３の送信制御部７００及び受信制御部８００の構成を示すブロック図。
【図５Ａ】情報処理装置における通常時のパケット通信処理を示すフローチャート(その１)。
【図５Ｂ】情報処理装置における通常時のパケット通信処理を示すフローチャート(その２)。
【図５Ｃ】情報処理装置における通常時のパケット通信処理を示すフローチャート(その３)。
【図５Ｄ】情報処理装置における通常時のパケット通信処理を示すフローチャート(その４)。
【図６Ａ】情報処理装置における障害時のパケット通信処理を示すフローチャート(その１)。
【図６Ｂ】情報処理装置における障害時のパケット通信処理を示すフローチャート(その２)。
【図７Ａ】情報処理装置における障害時のパケット通信処理を示すフローチャート(その１)。
【図７Ｂ】情報処理装置における障害時のパケット通信処理を示すフローチャート(その２)。
【図８】実施例２による情報処理装置の構成を示すブロック図。
【図９Ａ】実施例２による情報処理装置における障害時のパケット通信処理を示すフローチャート(その１)。
【図９Ｂ】実施例２による情報処理装置における障害時のパケット通信処理を示すフローチャート(その２)。
【図９Ｃ】実施例２による情報処理装置における障害時のパケット通信処理を示すフローチャート(その３)。
【図９Ｄ】実施例２による情報処理装置における障害時のパケット通信処理を示すフローチャート(その４)。
【図９Ｅ】実施例２による情報処理装置における障害時のパケット通信処理を示すフローチャート(その５)。
【図９Ｆ】実施例２による情報処理装置における障害時のパケット通信処理を示すフローチャート(その６)。
【符号の説明】
【００８６】
１００、１０１：情報処理装置  １１０：ＣＰＵモジュール  
１２０、１２１、１２２：Ｉ／Ｏモジュール  １３０：サービスプロセッサ(ＳＶＰ)  １４１、１４２、４００：PCIeスイッチ  
１５１〜１５４：主系PCIeケーブル  １６１〜１６４：待機系PCIeケーブル  １７１、１７２：管理パス  ２００：ＣＰＵ
２５０：システムバス  ３００：ルートコンプレックス(ＲＣ)
３０１：システムバスポート  ３０２：ポートスイッチ  ３０３：ポートセレクタ  ３０４：仮想コンフィグレジスタ  ３１１：システムバス制御部  ３１２、８０１：受信キュー  ３１６、８０２：受信キュー制御部  ３１５  ７０１  送信キュー  ３１６  ７０２  送信キュー制御部  ３５０：主系ダウンストリームポート  ３６０：待機系ダウンストリームポート  ４０１：アップストリームポートスイッチ  ４０２：アップストリームポートセレクタ  ４０３：ダウンストリームポートスイッチ  ４０４：ダウンストリームポートセレクタ  ４０５：ルーティングテーブル。
【図１】
2009267771.tif 000003
【図２】
2009267771.tif 000004
【図３】
2009267771.tif 000005
【図４】
2009267771.tif 000006
【図５Ａ】
2009267771.tif 000007
【図５Ｂ】
2009267771.tif 000008
【図５Ｃ】
2009267771.tif 000009
【図５Ｄ】
2009267771.tif 000010
【図６Ａ】
2009267771.tif 000011
【図６Ｂ】
2009267771.tif 000012
【図７Ａ】
2009267771.tif 000013
【図７Ｂ】
2009267771.tif 000014
【図８】
2009267771.tif 000015
【図９Ａ】
2009267771.tif 000016
【図９Ｂ】
2009267771.tif 000017
【図９Ｃ】
2009267771.tif 000018
【図９Ｄ】
2009267771.tif 000019
【図９Ｅ】
2009267771.tif 000020
【図９Ｆ】
2009267771.tif 000021