JP2009267771A - 情報処理装置及びパス制御方法 - Google Patents
情報処理装置及びパス制御方法 Download PDFInfo
- Publication number
- JP2009267771A JP2009267771A JP2008115090A JP2008115090A JP2009267771A JP 2009267771 A JP2009267771 A JP 2009267771A JP 2008115090 A JP2008115090 A JP 2008115090A JP 2008115090 A JP2008115090 A JP 2008115090A JP 2009267771 A JP2009267771 A JP 2009267771A
- Authority
- JP
- Japan
- Prior art keywords
- pcie
- packet
- path
- information processing
- standby
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】
PCIeパスの障害時に、障害でパケットを失わずに処理動作を継続する。
【解決手段】
冗長化したPCIeパスを用いて第1情報処理ユニットと第2情報処理ユニットとを接続する情報処理装置において、運用系のポートを用いた、通常のパケット通信時におけるパケットを第1の所定バッファに格納しておき、パス障害時に、第1の所定バッファの内容を、待機系ポートに備えられた第2の所定バッファにコピーし、障害で失われたパケットを待機系の該第2の所定バッファから送信する。
【選択図】図1
PCIeパスの障害時に、障害でパケットを失わずに処理動作を継続する。
【解決手段】
冗長化したPCIeパスを用いて第1情報処理ユニットと第2情報処理ユニットとを接続する情報処理装置において、運用系のポートを用いた、通常のパケット通信時におけるパケットを第1の所定バッファに格納しておき、パス障害時に、第1の所定バッファの内容を、待機系ポートに備えられた第2の所定バッファにコピーし、障害で失われたパケットを待機系の該第2の所定バッファから送信する。
【選択図】図1
Description
本発明は、情報処理装置及びパス制御方法に係り、特に、PCI Express(PCIe)スイッチを用いて接続されたCPUとI/Oデバイスを有する情報処理装置における、パス障害に対処するためのPCIeパスの制御に関する。
情報処理装置における、I/Oデバイスの接続インターフェースにPCIe(Peripheral Component Interconnect Express)が広く使われている。PCIeは、構成内部にスイッチを配置することで、接続可能なエンドポイントの数を増し、I/Oデバイスの拡張が可能である(非特許文献1参照)。
I/Oデバイスに障害が発生した場合、処理動作を維持するための手法として、一般的に冗長構成が知られている。I/Oデバイスに依存した機能による、冗長構成の実現方法の1つにTeamingがある。Teamingは、Network Interface Card(NIC)を複数用意して、専用のドライバで管理するものであり、障害が発生したNICを縮退させ、残りのNICで通信することで、障害発生後も動作の継続を可能とする。
また、ネットワーク分野において、パス障害に対処するために接続パスを二重化する構成が知られている。例えば、特許文献1及び2には、ネットワークにパス障害が発生した時、障害の発生したパスを待機中のパスに切り替え、その待機パス或いは迂回路を用いてデータ通信することが開示されている。
PCIeの仕様では、PCIeリンクに回復不可能な障害が発生した場合、リンクを遮断して停止するため、通信途中のパケットが失われてしまう。
従って、ネットワーク分野における接続パスの二重化構成と同様に、多段に配置したPCIeスイッチ間、又はマルチポートのルートコンプレックス(RC)-PCIeスイッチ間を複数のパスで接続したパス二重化構成を構築し、障害の発生したパスを待機中のパスに切り替えても、動作を継続することが出来ないという問題がある。
従って、ネットワーク分野における接続パスの二重化構成と同様に、多段に配置したPCIeスイッチ間、又はマルチポートのルートコンプレックス(RC)-PCIeスイッチ間を複数のパスで接続したパス二重化構成を構築し、障害の発生したパスを待機中のパスに切り替えても、動作を継続することが出来ないという問題がある。
本発明の目的は、冗長化したPCIeのパスを備えた情報処理装置におけるパス障害時に、パケットを失うことなく、OSやアプリケーションに対して障害の影響を与えずに、処理動作を継続することができるようにすることにある。
本発明は、冗長化したPCIeのパスを備えた情報処理装置において、パスの障害時に、運用系ポートのバッファ内容を待機系ポートのバッファにコピーし、障害で失われたパケットを待機系のパスにて再送することで実現する。
また、冗長化したPCIeのパスを備えた情報処理装置において、OSに対し、運用系ポートと待機系ポートを1つのポートとして見せるために、OSから参照可能な仮想レジスタを備え、運用系ポートと待機系ポートの状態及び動作管理レジスタを、OSには見せず、通常動作中は、仮想レジスタの参照先を、運用系ポートの状態及び動作管理レジスタとし、障害時は、仮想レジスタの参照先を、待機系ポートの状態及び動作管理レジスタに切り替えることで、OSに対して障害を隠蔽することが可能である。
好ましい例によれば、本発明に係る情報処理装置は、PCIe規格に準拠したスイッチを介して、該第1の情報処理ユニットと該第2の情報処理ユニット間でパケットを通信する情報処理装置であって、
少なくとも該第1情報処理ユニットと該PCIeスイッチとの間に、通常時に使用される運用系の第1のPCIeパスと、特定の場合に使用される待機系の第2のPCIeパスを設定し、
該運用系パスにおいて、該第1のPCIeパスを通して受信したパケットを送信のために一時格納する第1の送信バッファと、該第1の送信バッファ内のパケットを該第2情報処理ユニットへ送信したときに該パケットを一時格納する第1の所定バッファとを有し、
該待機系パスにおいて、該第2のPCIeパスを通して受信したパケットを送信のために一時格納する第2の送信バッファと、該第2の送信バッファ内のパケットを該第2情報処理ユニットへ送信したときに該パケットを一時格納する第2の所定バッファとを有し、
特定の場合に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信するのを止めて、該運用系パスを該待機系パスに切り替え、
少なくとも該第1の所定バッファの内容を、該待機系パスの該第2の所定バッファにコピーして、該第2の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信することを特徴とする情報処理装置として構成される。
少なくとも該第1情報処理ユニットと該PCIeスイッチとの間に、通常時に使用される運用系の第1のPCIeパスと、特定の場合に使用される待機系の第2のPCIeパスを設定し、
該運用系パスにおいて、該第1のPCIeパスを通して受信したパケットを送信のために一時格納する第1の送信バッファと、該第1の送信バッファ内のパケットを該第2情報処理ユニットへ送信したときに該パケットを一時格納する第1の所定バッファとを有し、
該待機系パスにおいて、該第2のPCIeパスを通して受信したパケットを送信のために一時格納する第2の送信バッファと、該第2の送信バッファ内のパケットを該第2情報処理ユニットへ送信したときに該パケットを一時格納する第2の所定バッファとを有し、
特定の場合に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信するのを止めて、該運用系パスを該待機系パスに切り替え、
少なくとも該第1の所定バッファの内容を、該待機系パスの該第2の所定バッファにコピーして、該第2の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信することを特徴とする情報処理装置として構成される。
また、好ましくは、本発明に係る情報処理装置は、複数のポートを有するルートコンプレックスと、複数のアップストリームポートを有するPCIeスイッチと、該ルートコンプコンプレックスの複数のポートと該PCIeスイッチの複数のアップストリームポートを接続し、該ルートコンプレックスと該PCIeスイッチ間のパスを冗長化したPCIeのパスと、を有する情報処理装置であって、
該ルートコンプレックス及び該PCIeスイッチは、
運用系ポートの、送信を待つパケットを格納する第1の送信バッファと、再送用としてパケットを格納する第1の所定バッファと、受信したパケットの識別番号を記録する第1レジスタと、
待機系ポートの、送信を待つパケットを格納する第2の送信バッファと、再送用としてパケットを格納する第2の所定バッファと、受信したパケットの識別番号を記録する第2レジスタと、を有し、
障害時にパス切り替え命令に従って、該運用系ポートの、該第1の送信バッファと、該第1の所定バッファと、該第1レジスタの内容を、該待機系ポートの、該第2の送信バッファと、該第2の所定バッファと、該第2レジスタにコピーし、
待機系ポートの該第2の所定バッファに格納されたパケットを送信することを特徴とする情報処理装置として構成される。
該ルートコンプレックス及び該PCIeスイッチは、
運用系ポートの、送信を待つパケットを格納する第1の送信バッファと、再送用としてパケットを格納する第1の所定バッファと、受信したパケットの識別番号を記録する第1レジスタと、
待機系ポートの、送信を待つパケットを格納する第2の送信バッファと、再送用としてパケットを格納する第2の所定バッファと、受信したパケットの識別番号を記録する第2レジスタと、を有し、
障害時にパス切り替え命令に従って、該運用系ポートの、該第1の送信バッファと、該第1の所定バッファと、該第1レジスタの内容を、該待機系ポートの、該第2の送信バッファと、該第2の所定バッファと、該第2レジスタにコピーし、
待機系ポートの該第2の所定バッファに格納されたパケットを送信することを特徴とする情報処理装置として構成される。
好ましくは、前記PCIeスイッチは、OSに対して、運用系ポートと待機系ポートを1つのポートとして見せるために、OSから参照可能な仮想レジスタを備え、運用系ポートと待機系ポートの状態及び動作管理レジスタを、OSには見せず、通常時には、該仮想レジスタの参照先を、運用系ポートの状態及び動作管理レジスタとし、障害時には、仮想レジスタの参照先を、待機系ポートの状態及び動作管理レジスタに切り替える。
また、好ましくは、該ルートコンプレックス及び該PCIeスイッチを管理する管理装置を有し、該管理装置は、障害発生時に該ルートコンプレックス及び該PCIeスイッチに対して、該運用系パスから該待機系パスへ切り替える命令を発行する。
また、他の例によれば、本発明に係る情報処理装置は、好ましくは、PCIe規格に準拠したスイッチを介して、該第1の情報処理ユニットと該第2の情報処理ユニット間でパケットを通信する情報処理装置であって、
複数のポートを有するルートコンプレックスと、該ルートコンプレックスと接続される、複数の該PCIeスイッチからなる中継用の第1のPCIeスイッチ群と、該第1のPCIeスイッチ群に接続される、複数の該PCIeスイッチからなる第2のPCIeスイッチ群と、少なくともパケットの発信元となる該第1の情報処理ユニットと該第1及び第2のPCIeスイッチ群の状態を管理する管理装置と、を有し、
該第1のPCIeスイッチ群において、通常時に該該第1の情報処理ユニットと第1のPCIeパスを用いて接続される運用系PCIeスイッチと、特定の場合に該該第1の情報処理ユニットと第2のPCIeパスを用いて接続される待機系PCIeスイッチを予め設定し、
該運用系PCIeスイッチにおいて、該第1のPCIeパスを通して受信したパケットを送信のために一時格納する第1の送信バッファと、該第1の送信バッファ内のパケットを該第2のPCIeスイッチ群へ送信したときに該パケットを一時格納する第1の所定バッファとを有し、
該待機系PCIeスイッチにおいて、該第2のPCIeパスを通して受信したパケットを送信のために一時格納する第2の送信バッファと、該第2の送信バッファ内のパケットを該第2のPCIeスイッチ群へ送信したときに該パケットを一時格納する第2の所定バッファとを有し、
特定の場合に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットの送信を止めて、該運用系PCIeスイッチを該待機系PCIeスイッチに切り替え、
少なくとも該第1の所定バッファの内容を、該管理装置を介して該待機系PCIeスイッチの該第2の所定バッファにコピーして、該第2の所定バッファに格納されたパケットを該第2のPCIeスイッチ群へ送信することを特徴とする情報処理装置として構成される。
複数のポートを有するルートコンプレックスと、該ルートコンプレックスと接続される、複数の該PCIeスイッチからなる中継用の第1のPCIeスイッチ群と、該第1のPCIeスイッチ群に接続される、複数の該PCIeスイッチからなる第2のPCIeスイッチ群と、少なくともパケットの発信元となる該第1の情報処理ユニットと該第1及び第2のPCIeスイッチ群の状態を管理する管理装置と、を有し、
該第1のPCIeスイッチ群において、通常時に該該第1の情報処理ユニットと第1のPCIeパスを用いて接続される運用系PCIeスイッチと、特定の場合に該該第1の情報処理ユニットと第2のPCIeパスを用いて接続される待機系PCIeスイッチを予め設定し、
該運用系PCIeスイッチにおいて、該第1のPCIeパスを通して受信したパケットを送信のために一時格納する第1の送信バッファと、該第1の送信バッファ内のパケットを該第2のPCIeスイッチ群へ送信したときに該パケットを一時格納する第1の所定バッファとを有し、
該待機系PCIeスイッチにおいて、該第2のPCIeパスを通して受信したパケットを送信のために一時格納する第2の送信バッファと、該第2の送信バッファ内のパケットを該第2のPCIeスイッチ群へ送信したときに該パケットを一時格納する第2の所定バッファとを有し、
特定の場合に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットの送信を止めて、該運用系PCIeスイッチを該待機系PCIeスイッチに切り替え、
少なくとも該第1の所定バッファの内容を、該管理装置を介して該待機系PCIeスイッチの該第2の所定バッファにコピーして、該第2の所定バッファに格納されたパケットを該第2のPCIeスイッチ群へ送信することを特徴とする情報処理装置として構成される。
また、本発明に係るパケット通信制御方法は、好ましくは、第1情報処理ユニットと第2情報処理ユニットの間に、PCIeスイッチを介して形成されるPCIeパスを使用して、該第1情報処理ユニットから該第2情報処理ユニットへパケットを送信するパケット通信制御方法であって、
少なくとも該第1情報処理ユニットと該PCIeスイッチとの間で、通常時に使用される運用系PCIeパスと、該運用系パスの障害時に使用される待機系PCIeパスを予め設定し、
通常時は運用系PCIeパスを用いて、該第1の情報処理ユニットから受信したパケットを送信するために第1の送信バッファに一時格納し、かつ該第1の送信バッファ内のパケットを該第2情報処理ユニットへ送信した時に該パケットを第1の所定バッファに一時格納し、
該運用系PCIeパスの障害時に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信するのを止めて、該運用系PCIeパスを該待機系PCIeパスに切り替え、
該第1の所定バッファの内容を、該待機系PCIeパスの該第2の所定バッファにコピーし、
該第2の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信することを特徴とするパケット通信制御方法として構成される。
少なくとも該第1情報処理ユニットと該PCIeスイッチとの間で、通常時に使用される運用系PCIeパスと、該運用系パスの障害時に使用される待機系PCIeパスを予め設定し、
通常時は運用系PCIeパスを用いて、該第1の情報処理ユニットから受信したパケットを送信するために第1の送信バッファに一時格納し、かつ該第1の送信バッファ内のパケットを該第2情報処理ユニットへ送信した時に該パケットを第1の所定バッファに一時格納し、
該運用系PCIeパスの障害時に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信するのを止めて、該運用系PCIeパスを該待機系PCIeパスに切り替え、
該第1の所定バッファの内容を、該待機系PCIeパスの該第2の所定バッファにコピーし、
該第2の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信することを特徴とするパケット通信制御方法として構成される。
本発明によれば、冗長化したPCIeのパスを有する情報処理装置においてパスの障害に対処するためにパスを切り替える場合、障害時に通信中のパケットを失うことなく、またOS又はアプリケーションに対して障害の影響を与えることなく、動作を継続することが可能である。
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
[実施例1]
図1は一実施形態による情報処理装置の構成を示す。
情報処理装置100は、CPUモジュール110と、I/Oモジュール120と、サービスプロセッサ(SVP)130を備えて構成される。CPUモジュール110は、システムバス250と接続したCPU200と、ルートコンプレックス(RC)300を有する。I/Oモジュール120は、PCIeスイッチ400と、複数のPCIeデバイス501、502、503を有する。CPUモジュール110内のRC300は、主系PCIeケーブル151と待機系PCIeケーブル161を介して、I/Oモジュール120内のPCIeスイッチ400と通信することができる。
[実施例1]
図1は一実施形態による情報処理装置の構成を示す。
情報処理装置100は、CPUモジュール110と、I/Oモジュール120と、サービスプロセッサ(SVP)130を備えて構成される。CPUモジュール110は、システムバス250と接続したCPU200と、ルートコンプレックス(RC)300を有する。I/Oモジュール120は、PCIeスイッチ400と、複数のPCIeデバイス501、502、503を有する。CPUモジュール110内のRC300は、主系PCIeケーブル151と待機系PCIeケーブル161を介して、I/Oモジュール120内のPCIeスイッチ400と通信することができる。
SVP130は、ルートコンプレックス300及びPCIeスイッチ400の状態を管理する管理装置としての機能を有し、複数の管理パス171、172を介して、CPUモジュール110内のRC300及びI/Oモジュール120内のPCIeスイッチ400と通信することができる。なお、情報処理装置100は、CPUで実行されるOSやアプリケーションプログラムを格納する記憶部を有するが、その図示は省略してある。
この情報処理装置100においてモジュール間をケーブルで接続しているが、そのケーブルの断線やコネクタ接触不良等に起因して、障害が高確率で発生する可能性がある。その場合、パスを適切に切り替えることが重要である。
情報処理装置100において、RC300はI/O階層の最上位に位置し、CPU200からリクエストを受けて、PCIeデバイス501〜503にPCIeパケットを発行する。RC300は、通常時には主系PCIeケーブル151を介してPCIeスイッチ400と通信する。しかし、主系PCIeケーブル151にパス障害が発生した場合、RC300はパスを切り替えて、待機系PCIeケーブル161を用いてPCIeスイッチ400と通信する。
さらに、情報処理装置100において、PCIeスイッチ400は、パケットの持つアドレス情報から、宛先となるいずれかのPCIeデバイスと接続するポートを選んでパケットを送信する。
さらに、情報処理装置100において、PCIeスイッチ400は、パケットの持つアドレス情報から、宛先となるいずれかのPCIeデバイスと接続するポートを選んでパケットを送信する。
図2はRC300の構成を示すブロック図である。
RC300は、システムバス250と接続するシステムバスポート310と、主系PCIeケーブル151と接続する主系ダウンストリームポート350と、待機系PCIeケーブル161と接続する待機系ダウンストリームポート360と、システムバスポート310と各ダウンストリームポートの接続を切り替えるポートスイッチ302と、ポートスイッチの接続先を設定するポートセレクタ303と、仮想コンフィグレジスタ304とを有して構成される。
RC300は、システムバス250と接続するシステムバスポート310と、主系PCIeケーブル151と接続する主系ダウンストリームポート350と、待機系PCIeケーブル161と接続する待機系ダウンストリームポート360と、システムバスポート310と各ダウンストリームポートの接続を切り替えるポートスイッチ302と、ポートスイッチの接続先を設定するポートセレクタ303と、仮想コンフィグレジスタ304とを有して構成される。
システムバスポート310は、システムバス250とPCI Expressのプロトコル変換を行うシステムバス制御部311と、システムバス側からのパケットを受信する受信キュー312と、受信キュー312のパケット格納状態を管理し、パケットをダウンストリームポート側に転送する受信キュー制御部313と、ダウンストリームポート側から転送されるパケットを格納する送信キュー315と、送信キュー315のパケット格納状態を管理し、パケットをシステムバス側に送信する送信キュー制御部316とを有する。
主系ダウンストリームポート350と待機系ダウンストリームポート360は同じ構成であり、それぞれ送信制御部700A、700Bと、受信制御部800A、800Bと、コンフィグレジスタ900A、900Bを有する。なお、ポート毎の送信制御部及び受信制御部を区別するため、構成要素の番号の末尾に、主系ダウンストリームポート350ならばAを、待機系ダウンストリームポート350ならばBを付加している。
主系ダウンストリームポート350、及び待機系ダウンストリームポート360のコンフィグレジスタ900A、900Bは、ポートのリンク ケイパビリティ、リンク コントロール、及びリンク ステータスを管理する。この詳細については非特許文献1に記載されている。
主系ダウンストリームポート350、及び待機系ダウンストリームポート360のコンフィグレジスタ900A、900Bは、ポートのリンク ケイパビリティ、リンク コントロール、及びリンク ステータスを管理する。この詳細については非特許文献1に記載されている。
仮想コンフィグレジスタ304は、OSから参照可能であり、通常時、主系ダウンストリームポート350のコンフィグレジスタ900Aが実体となる。OSは仮想コンフィグレジスタ304を介して、主系ダウンストリームポート350のコンフィグレジスタ900Aにアクセスする。このとき待機系ダウンストリームポート360のコンフィグレジスタ900BはOSから隠蔽される。OS或いはアプリケーションによるレジスタライト(write)は、コンフィグレジスタ900A及びコンフィグレジスタ900Bの両方に書き込まれ、レジスタ値の同期が取れている。障害時、仮想コンフィグレジスタ304の実体は、主系ダウンストリームポート350のコンフィグレジスタ900Aから、待機系ダウンストリームポート360のコンフィグレジスタ900Bに切り替わる。障害情報を格納した主系ダウンストリームポート360のコンフィグレジスタ900AはOSから隠蔽される。ただし、SVP130は、主系ダウンストリームポート350及び待機系ダウンストリームポート360のコンフィグレジスタ900A、900Bの両方に対して、常時アクセス可能である。
ポートスイッチ302は、通常時、システムバスポート310と主系ダウンストリームポート350とを接続する。パス障害発生時に、SVP130が発行したパス切り替え命令を受けると、接続先を主系ダウンストリームポート350から待機系ダウンストリームポート360へ切り替える。
図3は図1のPCIeスイッチ400の構成を示す。
PCIeスイッチ400は、主系PCIeケーブル151と接続する主系アップストリームポート410と、待機系PCIeケーブル161と接続する待機系アップストリームポート420と、アップストリームポートの接続を切り替えるアップストリームポートスイッチ401と、アップストリームポートスイッチ401の接続先を設定するアップストリームポートセレクタ402と、各PCIeデバイス501、501、503と接続するダウンストリームポート450、460、470と、各ダウンストリームポートとの接続を切り替えるダウンストリームポートスイッチ403と、ダウンストリームポートスイッチ403の接続先を設定するダウンストリームポートセレクタ404と、ルーティング情報を格納するルーティングテーブル405と、OSから参照可能なアップストリームポート用仮想コンフィグレジスタ406、を有して構成される。
PCIeスイッチ400は、主系PCIeケーブル151と接続する主系アップストリームポート410と、待機系PCIeケーブル161と接続する待機系アップストリームポート420と、アップストリームポートの接続を切り替えるアップストリームポートスイッチ401と、アップストリームポートスイッチ401の接続先を設定するアップストリームポートセレクタ402と、各PCIeデバイス501、501、503と接続するダウンストリームポート450、460、470と、各ダウンストリームポートとの接続を切り替えるダウンストリームポートスイッチ403と、ダウンストリームポートスイッチ403の接続先を設定するダウンストリームポートセレクタ404と、ルーティング情報を格納するルーティングテーブル405と、OSから参照可能なアップストリームポート用仮想コンフィグレジスタ406、を有して構成される。
主系アップストリームポート410と待機系アップストリームポート420は同じ構成であり、それぞれ送信制御部700C、700Dと、受信制御部800C、800D、コンフィグレジスタ900C,900Dを有する。
ダウンストリームポート450、460、470は同じ構成であり、それぞれ送信制御部700E、700F、700Gと、受信制御部800E、800F、800Gを有する。
なお、ポート毎の送信制御部及び受信制御部を区別するために、構成要素の番号の末尾にC〜Gを付し、主系アップストリームポート410ならばC、待機系アップストリームポート420ならばD、ダウンストリームポート450,460,470ならば順にE,F,Gを付加している。
ダウンストリームポート450、460、470は同じ構成であり、それぞれ送信制御部700E、700F、700Gと、受信制御部800E、800F、800Gを有する。
なお、ポート毎の送信制御部及び受信制御部を区別するために、構成要素の番号の末尾にC〜Gを付し、主系アップストリームポート410ならばC、待機系アップストリームポート420ならばD、ダウンストリームポート450,460,470ならば順にE,F,Gを付加している。
アップストリームポートスイッチ401は、通常時、主系アップストリームポート410とダウンストリームポートスイッチ403とを接続している。しかしリンク障害が発生した時に、SVP130が発行したパス切り替え命令を受けると、接続先を主系アップストリームポート410から待機系アップストリームポート420に切り替える。
図4は、図2及び図3に示す送信制御部700及び受信制御部800の構成を示すブロック図である。
ルートコンプレックス300及びPCIeスイッチ400の送信制御部及び受信制御部800は、以下に述べるように、同様の構成を成している。
送信制御部700は、PCIeパスに送信するパケットを格納する送信キュー701と、送信キュー701のパケット格納状態を管理し、パケット送信を制御する送信キュー制御部702と、パケットの再送に備えて送信したパケットのコピーを格納するリトライバッファ703と、リトライバッファ703の格納状態を管理し、パケット再送を制御するリトライバッファ制御部704と、送信キュー制御部702或いはリトライバッファ制御部704に対しパケット送信またはパケット再送を指示する送信パケット制御部706と、送信キュー701とリトライバッファ703の接続パスを切り替えるパススイッチ705と、クレジット管理を行うクレジットカウンタ707とを有して構成される。
なお、実装の仕方によっては、送信キュー701とリトライバッファ703を分離せず、一つに機能を集約する場合もある。
ルートコンプレックス300及びPCIeスイッチ400の送信制御部及び受信制御部800は、以下に述べるように、同様の構成を成している。
送信制御部700は、PCIeパスに送信するパケットを格納する送信キュー701と、送信キュー701のパケット格納状態を管理し、パケット送信を制御する送信キュー制御部702と、パケットの再送に備えて送信したパケットのコピーを格納するリトライバッファ703と、リトライバッファ703の格納状態を管理し、パケット再送を制御するリトライバッファ制御部704と、送信キュー制御部702或いはリトライバッファ制御部704に対しパケット送信またはパケット再送を指示する送信パケット制御部706と、送信キュー701とリトライバッファ703の接続パスを切り替えるパススイッチ705と、クレジット管理を行うクレジットカウンタ707とを有して構成される。
なお、実装の仕方によっては、送信キュー701とリトライバッファ703を分離せず、一つに機能を集約する場合もある。
受信制御部800は、PCIeパスから受信したパケットを格納する受信キュー801と、受信キュー801のパケット格納状態を管理し、パケット転送を制御する受信キュー制御部802と、PCIeパケットの受信及び、Ackパケットの発行を行う受信パケット制御部803と、Ackのシーケンス番号を格納するAck#カウンタ805と、クレジット管理を行うクレジットカウンタ804とを有して構成される。
次に、図5A〜図5Dのフローチャートを参照して、情報処理装置100で実行される通常時のパケット通信処理について、図2〜図4も参照しながら説明する。
この例は、CPU200が発行したPCIeデバイス501宛てのリクエストをRC300が受信して、PCIeスイッチ400へ転送し、PCIeスイッチ400がRC300からのパケットを受信して、PCIeデバイス501へ送信する一連の処理を示す。
この例は、CPU200が発行したPCIeデバイス501宛てのリクエストをRC300が受信して、PCIeスイッチ400へ転送し、PCIeスイッチ400がRC300からのパケットを受信して、PCIeデバイス501へ送信する一連の処理を示す。
CPU200がリクエストを発行すると、システムバス250を介して、RC300のシステムバス制御部311がそのリクエストを受信する(ステップ(以後Sを表す)1001、1002)。
システムバス制御部311は、受信キュー制御部313に対して、受信キュー312に空きエントリがあるかを問い合せる(S1003)。その結果、受信キューに空きエントリが無い場合、システムバス制御部311はCPU200にリトライを要求する(S1003)。一方、受信キュー312に空きエントリがある場合、システムバス制御部311は、受信したリクエストをPCI Expressのパケットに変換し、シーケンス番号を付加して、受信キュー312に格納する(S1004)。
そして、主系ダウンストリームポート350の送信キュー701Aに空きエントリがあるかを判定し(S1005)、その結果、送信キュー701Aに空きエントリがない場合、送信キュー制御部702Aは、受信キュー制御部313に対して、パケットの転送を抑止する。受信キュー制御部323は、送信キュー701Aのエントリが空くのを待つ。
一方、送信キュー701Aに空きエントリがある場合、受信キュー制御部323は、受信キュー312から送信キュー701Aに対し、パケットを転送する(S1006)。
一方、送信キュー701Aに空きエントリがある場合、受信キュー制御部323は、受信キュー312から送信キュー701Aに対し、パケットを転送する(S1006)。
送信パケット制御部706Aは、クレジットカウンタ707Aの値を確認し、クレジットがパケット送信に必要な値になるまで待つ(S1007)。そして、クレジットがパケット送信に必要な値に達すると、送信パケット制御部706Aはパススイッチ705Aを切り替え、送信キュー701Aと接続し、主系PCIeケーブル151を介し、PCIeスイッチ400の主系アップストリームポート410に対して、パケットを送信する。更に送信したパケットのコピーを、リトライバッファ703Aに格納し、送信したパケットに応じて、クレジットカウンタ707Aの値をデクリメントする(S1008)。なお、PCIeパス間のパケットフロー制御は、非特許文献1に記載の規格に従うものであり、その詳明は省略する。
RC300の主系ダウンストリームポート350が送信したパケットは、PCIeスイッチ400の主系アップストリームポート410内の受信パケット制御部803Cで受信される。受信パケット制御部803Cは、受信したパケットのシーケンス番号とLCRCをチェックする(S1009、1010)。
チェック結果が正常ならば、受信パケット制御部803Cがパケットを受信キュー801Cに格納し、AckをRC300に返信する。さらに、パケットのシーケンス番号をAck#カウンタ805Cに記録する。(S1011)。一方、チェック結果が異常ならば、受信パケット制御部803Cは、パケットを破棄し、Ack#カウンタ805Cの値を付記したNakをRC300に返信する(S1012)。
チェック結果が正常ならば、受信パケット制御部803Cがパケットを受信キュー801Cに格納し、AckをRC300に返信する。さらに、パケットのシーケンス番号をAck#カウンタ805Cに記録する。(S1011)。一方、チェック結果が異常ならば、受信パケット制御部803Cは、パケットを破棄し、Ack#カウンタ805Cの値を付記したNakをRC300に返信する(S1012)。
Ackを受信したRC300の主系ダウンストリームポート350は、Ackに付記されたシーケンス番号までのパケットを、リトライバッファ704Aから開放する(S1013)。一方、Nakを受信したRC 300の主系ダウンストリームポート350は、Nakに付記されたシーケンス番号の次のパケット以降をリトライバッファ703Aより再送する(S1014)。
受信キュー制御部802Cは、パケットのアドレスでルーティングテーブル405を引き、パケットのアドレスに対応するPCIeデバイス501とつながるダウンストリームポート450を選択する。ダウンストリームポートセレクタ404はルーティングテーブル405より接続情報を受けると、ダウンストリームポートスイッチを切り替え、ダウンストリームポート450と接続する(S1015)。
ダウンストリームポート450の送信キュー701Eに空きエントリがない場合、送信キュー制御部702Eは、受信キュー制御部802Cに対し、パケットの転送を抑止する。受信キュー制御部802Cは、送信キュー701Eのエントリが空くのを待つ(S1016)。送信キュー701Eに空きエントリがある場合、受信キュー制御部802Cは、受信キュー801Cから送信キュー701Eに対し、パケットを転送する(S1017)。
送信パケット制御部706Eは、クレジットカウンタ707Eの値を確認し、クレジットがパケット送信に必要な値になるまで待つ(S1018)。そして、クレジットがパケット送信に必要な値に達すると、送信パケット制御部705Eはパススイッチ705Eを切り替え、送信キュー701Eと接続し、PCIeデバイス501に対して、パケットを送信する。更に送信したパケットのコピーを、リトライバッファ703Eに格納し、送信したパケットに応じて、クレジットカウンタ707Eの値をデクリメントする(S1019)。
PCIeスイッチ400のダウンストリームポート450から送信されたパケットは、PCIeデバイス501で受信される。PCIeデバイス501は、受信したパケットのシーケンス番号とLCRCをチェックする(S1020、1021)。その結果、チェック結果が正常ならば、PCIeデバイスは、AckをPCIeスイッチ400へ返信する。(S1022)。一方、チェック結果が異常ならば、PCIeデバイスは、パケットを破棄し、NakをPCIeスイッチ400へ返信する(S1023)。
Ackを受信したPCIeスイッチ400のダウンストリームポート450は、Ackに付記されたシーケンス番号までのパケットを、リトライバッファ703Eから開放する(S1024)。また、Nakを受信したダウンストリームポート450は、Nakに付記されたシーケンス番号の次のパケット以降をリトライバッファ703Eより再送する(S1025)。
PCIデバイス501は、受信したパケットのリクエスト内容を実行する。これで、RC300及びPCIeスイッチ400は一連の処理を終了する(S1026)。
PCIデバイス501は、受信したパケットのリクエスト内容を実行する。これで、RC300及びPCIeスイッチ400は一連の処理を終了する(S1026)。
次に、図6A、6Bを参照して、情報処理装置における障害時のパケット通信処理について説明する。
この例は、情報処理装置100において通常時のパケット処理中にリンク障害を検出し、パスを切り替え、パケットを再送し、その後、通常のパケット送信を再開するまでの一連の処理を示す。
この例は、情報処理装置100において通常時のパケット処理中にリンク障害を検出し、パスを切り替え、パケットを再送し、その後、通常のパケット送信を再開するまでの一連の処理を示す。
まず、障害検出フェーズとして、主系PCIeケーブル151でリンク障害が発生し、RC300の主系ダウンストリームポート350がリンク障害を検出すると(S2001)、RC300は、管理パス171を介して、SVP130にリンク障害の発生を報告する(S2002)。
SVP130は、RC300からリンク障害の報告を受けると、RC300及びPCIeスイッチ400の両者に対してパス切り替え命令を送信する(S2003)。RC300及びPCIeスイッチ400は、パス切り替え命令を受信すると、再送準備フェーズを開始する。
SVP130は、RC300からリンク障害の報告を受けると、RC300及びPCIeスイッチ400の両者に対してパス切り替え命令を送信する(S2003)。RC300及びPCIeスイッチ400は、パス切り替え命令を受信すると、再送準備フェーズを開始する。
[RC300の再送準備フェーズ]
RC300がパス切り替え命令を受信すると、主系ダウンストリームポート350の送信キュー制御部701A及びリトライバッファ制御部704Aは、送信キュー701A及びリトライバッファ703Aからのパケット送信を停止し、かつ受信キュー制御部313に対してパケットの送信キュー701Aへの転送を抑止する(S2004)。
RC300がパス切り替え命令を受信すると、主系ダウンストリームポート350の送信キュー制御部701A及びリトライバッファ制御部704Aは、送信キュー701A及びリトライバッファ703Aからのパケット送信を停止し、かつ受信キュー制御部313に対してパケットの送信キュー701Aへの転送を抑止する(S2004)。
そして、リンクが休止状態だった待機系ダウンストリームポート360に対してリンクの活性化を開始する(S2005)。更に、仮想コンフィグレジスタ304の実体を、主系ダウンストリームポート350のコンフィグレジスタ900Aから、待機系ダウンストリームポート360のコンフィグレジスタ900Bに切り替える。これにより主系ダウンストリームポート350のリンク障害がOSから隠蔽される(S2006)。
主系ダウンストリームポート350の送信制御部700Aの送信キュー701Aとリトライバッファ703Aの内容を、待機系ダウンストリームポート360の送信制御部700Bの送信キュー701Bとリトライバッファ703Bにコピーする(S2007)。
コピーが終わると、ポートセレクタ302の接続設定を変更し、ポートスイッチ302の接続を、主系ダウンストリームポート350から、待機系ダウンストリームポート360に切り替える(S2008)。
コピーが終わると、ポートセレクタ302の接続設定を変更し、ポートスイッチ302の接続を、主系ダウンストリームポート350から、待機系ダウンストリームポート360に切り替える(S2008)。
送信キュー制御部702Aは、ポートスイッチ302の切り替えを確認すると、受信キュー制御部313に対するキュー転送抑止を解除し、受信キュー制御部313は、受信キュー312からのパケット転送を再開する(S2009)。
[PCIeスイッチ400の再送準備フェーズ]
PCIeスイッチ400がパス切り替え命令を受信すると、主系アップストリームポート410の受信制御部800Cは、Ack#カウンタ805Cの内容を、待機系アップストリームポート420の受信制御部800DのAck#カウンタ805Dにコピーする(S2010)。
そして、リンクが休止状態だった待機系アップストリームポート420に対し、リンクの活性化を開始する(S2011)。
PCIeスイッチ400がパス切り替え命令を受信すると、主系アップストリームポート410の受信制御部800Cは、Ack#カウンタ805Cの内容を、待機系アップストリームポート420の受信制御部800DのAck#カウンタ805Dにコピーする(S2010)。
そして、リンクが休止状態だった待機系アップストリームポート420に対し、リンクの活性化を開始する(S2011)。
主系アップストリームポート410の受信キュー801Cのエントリ内のパケットが空か否かを判定し、その結果、パケットが残っていれば、ダウンストリームポートにパケットの転送を続ける(S2012)。
そして、受信キュー801Cのエントリ内の全てのパケットの転送が完了したら、アップストリームポートセレクタ402の接続設定を変更し、アップストリームポートスイッチ401の接続を、主系アップストリームポート410から、待機系アップストリームポート420に切り替える(S2013)。
待機系PCIeケーブル161のリンクが活性化したら、RC 300及びPCIeスイッチ400は、再送フェーズに移る(S2014)。
そして、受信キュー801Cのエントリ内の全てのパケットの転送が完了したら、アップストリームポートセレクタ402の接続設定を変更し、アップストリームポートスイッチ401の接続を、主系アップストリームポート410から、待機系アップストリームポート420に切り替える(S2013)。
待機系PCIeケーブル161のリンクが活性化したら、RC 300及びPCIeスイッチ400は、再送フェーズに移る(S2014)。
[RC300の再送フェーズ]
待機系PCIeケーブル161のリンクの活性化が完了すると、RC300は待機系ダウンストリームポート350のリトライバッファ703Bに格納されているパケットを、シーケンス番号順に先頭から再送する開始する(S2015)。
待機系PCIeケーブル161のリンクの活性化が完了すると、RC300は待機系ダウンストリームポート350のリトライバッファ703Bに格納されているパケットを、シーケンス番号順に先頭から再送する開始する(S2015)。
[PCIeスイッチ400の再送フェーズ]
待機系アップストリームポート420の受信パケット制御部803Dは、再送されたパケットを受信し、パケットのシーケンス番号をAck#カウンタ805Dの値と比較する(S2016、2017)。
その結果、再送されたパケットのシーケンス番号がAck#カウンタ805Dの値以下ならば、受信パケット制御部803Dは、パケットを破棄する(2018)。
待機系アップストリームポート420の受信パケット制御部803Dは、再送されたパケットを受信し、パケットのシーケンス番号をAck#カウンタ805Dの値と比較する(S2016、2017)。
その結果、再送されたパケットのシーケンス番号がAck#カウンタ805Dの値以下ならば、受信パケット制御部803Dは、パケットを破棄する(2018)。
一方、再送されたパケットのシーケンス番号がAck#カウンタ805Dの値より大きい場合、受信パケット制御部803Dは、パケットを受信キュー801Dに格納し、RC300にAckを返信する。そして、Ack#カウンタ805Dの値をパケットのシーケンス番号に更新する(2019)。
その後、リトライバッファ703Bに格納されているパケットを全て再送し終わったら、RC300及びPCIeスイッチは再送フェーズを終了し、以後、待機系PCIeケーブル161にて通常の処理を行う。
その後、リトライバッファ703Bに格納されているパケットを全て再送し終わったら、RC300及びPCIeスイッチは再送フェーズを終了し、以後、待機系PCIeケーブル161にて通常の処理を行う。
上記した障害時におけるパケット処理の説明では、CPU200より発行されたPCIeデバイス501宛てリクエストのパケット処理において、送信側であるRC300の主系ダウンストリームポート350の送信制御部700Aと待機系ダウンストリームポート360の送信制御部700Bのパス切り替えと、それと対になる受信側のPCIeスイッチ400の主系アップストリーム410の受信制御部800Cと待機系アップストリーム420の受信制御部800Dについてパスを切り替える、旨述べた。
実際の障害時には、さらにPCIeデバイス501、502、503より発行されたCPU200宛てリクエストのパケット処理、つまりPCIeスイッチ400が送信側になり、主系アップストリーム410の送信制御部700Cと主系アップストリーム410の送信制御部700Dのパス切り替えと、それと対になるRC 300が受信側になり、主系ダウンストリームポート350の受信制御部800Aと待機系ダウンストリームポート360の受信制御部800Bのパス切り替えも同様に行なわれる。
図7A及び7Bは、PCIデバイス501からCPU200宛てに発行したリクエストをPCIeスイッチ400が受信及びRC300へ転送する際に、パス障害を検出し、パスを切り替え、パケットを再送する処理を示すフローチャートである。
この場合、パス切り替えの動作はRC300とPCIeスイッチ400で、受信と送信が入れ替わるだけであり、各処理動作は上記したパケット処理の場合と同様である。上記の説明から理解されるであろうから詳説は省略する。
この場合、パス切り替えの動作はRC300とPCIeスイッチ400で、受信と送信が入れ替わるだけであり、各処理動作は上記したパケット処理の場合と同様である。上記の説明から理解されるであろうから詳説は省略する。
以上説明したように、本実施例によれば、パス障害時に、CPUモジュール110のRC300と、I/Oモジュール120のPCIeスイッチ400において、主系ポートの送信キュー、リトライバッファ、Ack#カウンタの内容を、待機系ポートにコピーし、待機系のリトライバッファからパケットの再送を行うことによって、動作中の突発的なパス障害に対し、パケットを失うことなく、動作を継続することが可能となる。
また、ポートの状態及び動作の管理のためのレジスタに関し、OSから参照可能な仮想のレジスタを有し、通常動作時は運用系のレジスタを仮想レジスタの実体とし、障害時に運用系のレジスタから、待機系のレジスタに切り替えることで、OSに対して障害を隠蔽することが可能である。
なお、実施例1は種々変形して実施し得る。
例えば、実施例1では、RC300の主系ダウンストリームポート350がパス障害を検出し、RC300がSVP130に障害の発生を報告している。変形例によれば、主系PCIeケーブル151の接続先であるPCIeスイッチ400の主系アップストリームポート410がパス障害を検出し、PCIeスイッチ400が管理パス172を介してSVP130にパス障害の発生を報告した場合でも、上記と同様に、パスを切り替えることが可能である。
例えば、実施例1では、RC300の主系ダウンストリームポート350がパス障害を検出し、RC300がSVP130に障害の発生を報告している。変形例によれば、主系PCIeケーブル151の接続先であるPCIeスイッチ400の主系アップストリームポート410がパス障害を検出し、PCIeスイッチ400が管理パス172を介してSVP130にパス障害の発生を報告した場合でも、上記と同様に、パスを切り替えることが可能である。
また、実施例1では、RC300がSVP130に障害の発生を報告しているが、RC300とPCIeスイッチ400の両方が報告する場合もある。この場合、SVP130は先に受信した報告をトリガにして、パス切り替え命令を発行する。パス切り替え命令を発行した後に受信したパス障害の報告は破棄される。
また、実施例1では、RC300のダウンストリームポートの2ポートと、PCIeスイッチ400のアップストリームポートの2ポートを接続し、2本のパスを備えている。その変形例では、RC300及びPCIeスイッチ400のポート数は、これに縛られる事無く、2ポート以上ならば制限されない。例えば、RC300がダウンストリームポートを3ポート、PCIeスイッチ400がアップストリームポートを3ポート備え、それぞれを接続した3本のパスを備えた場合、1本のパスを運用系とし、残りの2本のパスを待機系とすることで、2回のパス障害までパス切り替えすることが可能となる。
また他の例として、2本のパスを運用形とし、1本のパスを待機系とし、運用系のどちらか一方のパスで障害が発生し、待機系のパスで切り替えを行う場合、パスの使用効率が高く、かつ1回のパス障害までパスの切り替えが可能となる。
また他の例として、2本のパスを運用形とし、1本のパスを待機系とし、運用系のどちらか一方のパスで障害が発生し、待機系のパスで切り替えを行う場合、パスの使用効率が高く、かつ1回のパス障害までパスの切り替えが可能となる。
[実施例2]
図8は、一実施形態による情報処理装置の構成を示す。
この例において、情報処理装置101は実施例1の情報処理装置100の構成を更に拡張したものであり、CPUモジュール110は複数のPCIeスイッチ141、142を介して複数のI/Oモジュール120、121、122と接続して通信する。
図8は、一実施形態による情報処理装置の構成を示す。
この例において、情報処理装置101は実施例1の情報処理装置100の構成を更に拡張したものであり、CPUモジュール110は複数のPCIeスイッチ141、142を介して複数のI/Oモジュール120、121、122と接続して通信する。
ここで、情報処理装置101の、CPUモジュール110、I/Oモジュール120〜122及びSVP130は、実施例1のCPUモジュール110、I/Oモジュール120及びSVP130と同様の構成を成す。
SVP130は、実施例1と同様に、管理パス(図示省略)を介して、PCIeスイッチ141、142、CPUモジュール110内のRC300、及びI/Oモジュール120〜122内のPCIeスイッチ400と、それぞれ接続される。
SVP130は、実施例1と同様に、管理パス(図示省略)を介して、PCIeスイッチ141、142、CPUモジュール110内のRC300、及びI/Oモジュール120〜122内のPCIeスイッチ400と、それぞれ接続される。
CPUモジュール110は、主系PCIeケーブル151を介して、主系のPCIeスイッチ141と接続され、主系のPCIeスイッチは141、主系PCIeケーブル152、153、154を介して、I/Oモジュール120、121,122と接続されるする。また、CPUモジュール110は、待機系PCIeケーブル161を介して、待機系のPCIeスイッチ142と接続され、待機系のPCIeスイッチは142、待機系PCIeケーブル162、163、164を介して、I/Oモジュール120、121,122と接続される。
PCIeスイッチ141、142は、実施例1による、PCIeスイッチ400と同様の構成を成し、CPUモジュール110とI/Oモジュール120、121、122の間で、パケットを中継する。PCIeスイッチ141の主系アップストリームポート410は、主系PCIeケーブル151を介してCPUモジュール110と接続されるが、待機系アップストリームポート420はケーブルと接続されない。PCIeスイッチ142の待機系アップストリームポート420は、待機系PCIeケーブル161を介してCPUモジュール110と接続されるが、主系アップストリームポート410はケーブルと接続されない。
情報処理装置101は、パス障害時、主系のPCIeスイッチ141を待機系のPCIeスイッチ142に切り替え、主系PCIeケーブル151、152〜154を、それぞれ待機系PCIeケーブル161、162〜164に切り替える。
実施例2における、RC300とPCIeスイッチ141,142の間、及びPCIeスイッチ141、142とI/Oモジュール120〜123内PCIeスイッチ120の間の通常時のパケット処理は、実施例1におけるパケット処理と同様である。
次に、図9A〜図9Fを参照して、情報処理装置における障害時のパケット通信処理について説明する。
この例は、CPU200から送信された、I/Oモジュール120内のPCIデバイス501宛てのパケットをPCIeスイッチ141が受信し、I/Oモジュール120内PCIeスイッチ400に転送する際に、主系PCIeケーブル152でパス障害が発生した場合、PCIeスイッチ141がパス障害を検出して、主系から待機系にパスを切り替えて、PCIeスイッチ142を経由してパケットを再送する処理である。
この例は、CPU200から送信された、I/Oモジュール120内のPCIデバイス501宛てのパケットをPCIeスイッチ141が受信し、I/Oモジュール120内PCIeスイッチ400に転送する際に、主系PCIeケーブル152でパス障害が発生した場合、PCIeスイッチ141がパス障害を検出して、主系から待機系にパスを切り替えて、PCIeスイッチ142を経由してパケットを再送する処理である。
PCIeスイッチ141がパス障害を検出した場合、CPUモジュール110から送信された、I/Oモジュール120宛てのパケットについて、RC300は主系ポート内の、送信キュー701A、及びリトライバッファ703A内に、I/Oモジュール120宛てのパケットが存在する可能性があるので、主系ポートから待機系ポートへパスを切り替える。RC300のパス切り替え動作は、実施例1における、RC300のパス切り替えと同様である(図9A,図9B;S4004〜S4009、図9E;S4024)。
I/Oモジュール120内のPCIeスイッチ400は、障害の発生した主系PCIeケーブル152から、待機系PCIeケーブル162へ、パスを切り替える。
I/Oモジュール121、122は、直接主系PCIeケーブル152のパス障害の影響を受けないが、RC300がパスを切り替えるので、I/Oモジュール121、122内のPCIeスイッチ400も合わせて、パスを切り替える。PCIeスイッチ400のパス切り替え動作は、実施例1における、PCIeスイッチ400のパス切り替えと同様である(図9B;S4010〜S4013)。
I/Oモジュール121、122は、直接主系PCIeケーブル152のパス障害の影響を受けないが、RC300がパスを切り替えるので、I/Oモジュール121、122内のPCIeスイッチ400も合わせて、パスを切り替える。PCIeスイッチ400のパス切り替え動作は、実施例1における、PCIeスイッチ400のパス切り替えと同様である(図9B;S4010〜S4013)。
CPUモジュール110と、I/Oモジュール120、121、122を中継するスイッチは、主系のPCIeスイッチ141から、待機系のPCIeスイッチ142と切り替わる。PCIeスイッチ141のパス切り替えの動作は、障害の検出から、SVP130が発行するパス切り替え命令を受信するまで、実施例1におけるPCIeスイッチ400と同様である(図9A,図9C;S4014)。
PCIeスイッチ141のパス切り替え命令を受信した後、主系のPCIeスイッチ141の送信キュー701、及びリトライバッファ703の内容について、PCIeスイッチ内のポート間のコピーではなく、待機系のPCIeスイッチ142に対してPCIeスイッチ間のコピーをする(S4015,S4016)。
PCIeスイッチ141のパス切り替え命令を受信した後、主系のPCIeスイッチ141の送信キュー701、及びリトライバッファ703の内容について、PCIeスイッチ内のポート間のコピーではなく、待機系のPCIeスイッチ142に対してPCIeスイッチ間のコピーをする(S4015,S4016)。
PCIeスイッチ141、142間のコピーは、まずSVP130が、管理パスを介して主系のPCIeスイッチ141の主系アップストリームポート410の受信キュー801CとAck#カウンタ805Cの内容、及びダウンストリームポート450、460、470の送信キュー701E、F、G及びリトライバッファ703E、F、Gの内容をリードし、SVP130内のメモリに記録する。次に、SVP130は、メモリに記録した主系のPCIeスイッチ141の主系アップストリームポート410の受信キュー801CとAck#カウンタ805Cの内容、及びダウンストリームポート450、460、470の送信キュー701E、F、G及びリトライバッファ703E、F、Gの内容を、管理パスを介して、待機系のPCIeスイッチ142の主系アップストリームポート410の受信キュー801CとAck#カウンタ805Cの内容、及びダウンストリームポート450、460、470の送信キュー701E、F、G及びリトライバッファ703E、F、Gにライトする(図9;S4015,4016)。
待機系のPCIeスイッチ142は、SVP130より送信キュー701、及びリトライバッファ703の内容を受けた後、実施例1におけるPCIeスイッチ400と同様に、I/Oモジュール120、121,122に対しパケットを再送する(図9D,9E,9F)。
パケットの再送が完了すると、RC300、及びPCIeスイッチ142は待機系パスにて通常の処理を行う。
パケットの再送が完了すると、RC300、及びPCIeスイッチ142は待機系パスにて通常の処理を行う。
なお、上記した、障害時のパス切り替えの説明では、CPU200から送信された、I/Oモジュール120内PCIeデバイス501宛てリクエストのパケット処理において、CPUモジュール110内RC300、I/Oモジュール内120〜122内PCIeスイッチ400、及びPCIeスイッチ141、142における動作について説明した。
実際の障害時には、さらにI/Oモジュール120、121、122内PCIeデバイス501、502、503から発行されたCPU200宛てリクエストのパケットに対する、パスの切り替えが行われる。これは、CPU200から発行された、I/Oモジュール120内PCIeデバイス501宛てのリクエストのパケットに対するパス切り替えの、CPUモジュール110内RC300、I/Oモジュール内120、121、122内PCIeスイッチ400、及びPCIeスイッチ142、142にて、送信と受信が入れ替わるだけで、それぞれの動作は上記した障害時パス切り替えの処理と同様である。
以上の障害時の処理により、パス障害時に、PCIeスイッチ141、142と、I/Oモジュール120、121、122のPCIeスイッチ120において、PCIeスイッチ141、142間で送信キュー701、及びリトライバッファ703の内容をコピーし、PCIスイッチ142のリトライバッファ701からパケットの再送を行うことによって、動作中の突発的なパス障害に対し、パケットを失うことなく、動作を継続することが可能となる。
なお、上記実施例2では、PCIe141の主系ダウンストリームポートがパス障害を検出し、PCIeスイッチ141がSVP130に障害の発生を報告しているが、主系PCIeケーブル152の接続先であるI/Oモジュール120内PCIeスイッチ400の主系アップストリームポート400が、パス障害を検出し、I/Oモジュール120内PCIeスイッチ120が、管理パスを介してSVP130にパス障害の発生を報告した場合でも、上記と同様に、パスを切り替えることが可能である。
また、実施例2では、主系PCIeケーブル152にパス障害が発生した場合にパスを切り替えるが、主系PCIeケーブル151、153、154に障害が発生した場合でも、上記と同様に、パスを切り替えることが可能である。
また、実施例2では、主系PCIeケーブル152にパス障害が発生した場合にパスを切り替えるが、PCIeスイッチ141の内部に障害が発生した場合、PCIeスイッチ141がその障害を検出し、管理パスを介してSVP130に障害を報告することで、上記と同様に、パスを切り替えることが可能である。
また、実施例2では、パス障害に対し、主系の全PCIeスイッチ及びケーブルについて待機系と切り替えるが、SVP130は、受信した障害検出の報告から、障害の発生したパスを判定し、パス切り替え命令に障害パスの情報を付加して、RC300及び各PCIeスイッチに送信し、RC300及びPCIeスイッチ141、142は、送信キュー、リトライバッファの中から、障害パスを通信するパケットをのみを、主系から待機系にコピーすることで、1つのI/Oモジュールに対して、パスを切り替えることが可能である。
例えば、I/Oモジュール120と接続する主系PCIeケーブル152でパス障害が発生し、待機系PCIeケーブル162に切り替える場合、障害の報告を受けたSVP130は、障害パスが主系PCIeケーブル152であることを付加した、パス切り替え命令を発行する。パス切り替え命令を受けたRC300は、主系ポートの送信キュー701Aと、リトライバッファ703Aの中からCPUモジュール110発I/Oモジュール120宛てのパケットのみを、待機系ポートの送信キュー701Bと、リトライバッファ703Bにコピーし、待機系ポートから再送する。
同様に、パス切り替え命令を受けた主系のPCIeスイッチ141は、障害の発生した主系PCIeケーブル152と接続するダウンストリームポートの送信キュー及びリトライバッファのパケットを、待機系のPCIeスイッチ142にコピーし、待機系PCIeスイッチ142は、待機系PCIeケーブル162を介して、パケットを再送する。I/Oモジュール120発CPUモジュール110宛てのパケットについても同様に、主系のPCIeスイッチ141は、アップストリームポートの送信キュー701とリトライバッファ703の中からI/Oモジュール120発CPUモジュール宛てのパケットのみを、待機系のPCIeスイッチ142にコピーし、待機系PCIeスイッチ142は、待機系PCIeケーブル161を介してパケットを再送する。RC300の主系ポート及びPCIeスイッチ141に残ったコピー元のパケットは破棄する。再送が完了したら、RC300は、I/Oモジュール120との通信を待機系ポート360を介して行い、I/Oモジュール121、122との通信を主系ポート350を介して行う。
また、実施例2では、CPUモジュール内RC300とI/Oモジュール120、121、122内PCIスイッチ400との間に、PCIスイッチ141、142をから成る中継用のPCIeスイッチ群を1段備え、このPCIeスイッチ群を通るパスを二重化して、障害時にパスを切り替えるように構成した。他の例によれば、中継用のPCIeスイッチ群は、1段に限らず、複数段に配置するようにしてもよい。頂点に位置するRC300とI/Oモジュール群に含まれる末端のPCIeスイッチ400群との間が、複数系のパスで接続して冗長化されていれば、中継のPCIeスイッチ郡の配列は特に制限されない。
また、実施例2では、CPUモジュール内RC300はダウンストリームポートを2ポート備えているが、例えば、シングルポートのみのルートコンプレックスを備えたCPUモジュールの場合、CPUモジュールとI/Oモジュールを中継するPCIeスイッチを2段に配置し、CPUモジュール-I/Oモジュール間のパスを二重化することで、パスの障害時にパスを動的切り替えることが可能となる。
100、101:情報処理装置 110:CPUモジュール
120、121、122:I/Oモジュール 130:サービスプロセッサ(SVP) 141、142、400:PCIeスイッチ
151〜154:主系PCIeケーブル 161〜164:待機系PCIeケーブル 171、172:管理パス 200:CPU
250:システムバス 300:ルートコンプレックス(RC)
301:システムバスポート 302:ポートスイッチ 303:ポートセレクタ 304:仮想コンフィグレジスタ 311:システムバス制御部 312、801:受信キュー 316、802:受信キュー制御部 315 701 送信キュー 316 702 送信キュー制御部 350:主系ダウンストリームポート 360:待機系ダウンストリームポート 401:アップストリームポートスイッチ 402:アップストリームポートセレクタ 403:ダウンストリームポートスイッチ 404:ダウンストリームポートセレクタ 405:ルーティングテーブル。
120、121、122:I/Oモジュール 130:サービスプロセッサ(SVP) 141、142、400:PCIeスイッチ
151〜154:主系PCIeケーブル 161〜164:待機系PCIeケーブル 171、172:管理パス 200:CPU
250:システムバス 300:ルートコンプレックス(RC)
301:システムバスポート 302:ポートスイッチ 303:ポートセレクタ 304:仮想コンフィグレジスタ 311:システムバス制御部 312、801:受信キュー 316、802:受信キュー制御部 315 701 送信キュー 316 702 送信キュー制御部 350:主系ダウンストリームポート 360:待機系ダウンストリームポート 401:アップストリームポートスイッチ 402:アップストリームポートセレクタ 403:ダウンストリームポートスイッチ 404:ダウンストリームポートセレクタ 405:ルーティングテーブル。
Claims (8)
- PCIe規格に準拠したスイッチを介して、該第1の情報処理ユニットと該第2の情報処理ユニット間でパケットを通信する情報処理装置であって、
少なくとも該第1情報処理ユニットと該PCIeスイッチとの間に、通常時に使用される運用系の第1のPCIeパスと、特定の場合に使用される待機系の第2のPCIeパスを設定し、
該運用系パスにおいて、該第1のPCIeパスを通して受信したパケットを送信のために一時格納する第1の送信バッファと、該第1の送信バッファ内のパケットを該第2情報処理ユニットへ送信したときに該パケットを一時格納する第1の所定バッファとを有し、
該待機系パスにおいて、該第2のPCIeパスを通して受信したパケットを送信のために一時格納する第2の送信バッファと、該第2の送信バッファ内のパケットを該第2情報処理ユニットへ送信したときに該パケットを一時格納する第2の所定バッファとを有し、
特定の場合に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信するのを止めて、該運用系パスを該待機系パスに切り替え、
少なくとも該第1の所定バッファの内容を、該待機系パスの該第2の所定バッファにコピーして、該第2の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信することを特徴とする情報処理装置。 - 複数のポートを有するルートコンプレックスと、複数のアップストリームポートを有するPCIeスイッチと、該ルートコンプコンプレックスの複数のポートと該PCIeスイッチの複数のアップストリームポートを接続し、該ルートコンプレックスと該PCIeスイッチ間のパスを冗長化したPCIeのパスと、を有する情報処理装置であって、
該ルートコンプレックス及び該PCIeスイッチは、
運用系ポートの、送信を待つパケットを格納する第1の送信バッファと、再送用としてパケットを格納する第1の所定バッファと、受信したパケットの識別番号を記録する第1レジスタと、
待機系ポートの、送信を待つパケットを格納する第2の送信バッファと、再送用としてパケットを格納する第2の所定バッファと、受信したパケットの識別番号を記録する第2レジスタと、を有し、
障害時にパス切り替え命令に従って、該運用系ポートの、該第1の送信バッファと、該第1の所定バッファと、該第1レジスタの内容を、該待機系ポートの、該第2の送信バッファと、該第2の所定バッファと、該第2レジスタにコピーし、
待機系ポートの該第2の所定バッファに格納されたパケットを送信することを特徴とする情報処理装置。 - 前記PCIeスイッチは、OSに対して、運用系ポートと待機系ポートを1つのポートとして見せるために、OSから参照可能な仮想レジスタを備え、運用系ポートと待機系ポートの状態及び動作管理レジスタを、OSには見せず、通常時には、該仮想レジスタの参照先を、運用系ポートの状態及び動作管理レジスタとし、障害時には、仮想レジスタの参照先を、待機系ポートの状態及び動作管理レジスタに切り替えることを特徴とする請求項1又は2記載の情報処理装置。
- 該ルートコンプレックス及び該PCIeスイッチを管理する管理装置を有し、該管理装置は、障害発生時に該ルートコンプレックス及び該PCIeスイッチに対して、該運用系パスから該待機系パスへ切り替える命令を発行することを特徴とする請求項2又は3の情報処理装置。
- PCIe規格に準拠したスイッチを介して、該第1の情報処理ユニットと該第2の情報処理ユニット間でパケットを通信する情報処理装置であって、
複数のポートを有するルートコンプレックスと、該ルートコンプレックスと接続される、複数の該PCIeスイッチからなる中継用の第1のPCIeスイッチ群と、該第1のPCIeスイッチ群に接続される、複数の該PCIeスイッチからなる第2のPCIeスイッチ群と、少なくともパケットの発信元となる該第1の情報処理ユニットと該第1及び第2のPCIeスイッチ群の状態を管理する管理装置と、を有し、
該第1のPCIeスイッチ群において、通常時に該該第1の情報処理ユニットと第1のPCIeパスを用いて接続される運用系PCIeスイッチと、特定の場合に該該第1の情報処理ユニットと第2のPCIeパスを用いて接続される待機系PCIeスイッチを予め設定し、
該運用系PCIeスイッチにおいて、該第1のPCIeパスを通して受信したパケットを送信のために一時格納する第1の送信バッファと、該第1の送信バッファ内のパケットを該第2のPCIeスイッチ群へ送信したときに該パケットを一時格納する第1の所定バッファとを有し、
該待機系PCIeスイッチにおいて、該第2のPCIeパスを通して受信したパケットを送信のために一時格納する第2の送信バッファと、該第2の送信バッファ内のパケットを該第2のPCIeスイッチ群へ送信したときに該パケットを一時格納する第2の所定バッファとを有し、
特定の場合に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットの送信を止めて、該運用系PCIeスイッチを該待機系PCIeスイッチに切り替え、
少なくとも該第1の所定バッファの内容を、該管理装置を介して該待機系PCIeスイッチの該第2の所定バッファにコピーして、該第2の所定バッファに格納されたパケットを該第2のPCIeスイッチ群へ送信することを特徴とする情報処理装置。 - パケットの送信先となる、該第2の情報処理ユニット又はPCIeスイッチ該又は該第2のPCIeスイッチ群がパケットを正常に受信しない場合、通常時は該第1の所定バッファに格納されたパケットを、障害時は該第2の所定バッファに格納されたパケットを、送信先へ送信することを特徴とする請求項1乃至5のいずれか1つの情報処理装置。
- 第1情報処理ユニットと第2情報処理ユニットの間に、PCIeスイッチを介して形成されるPCIeパスを使用して、該第1情報処理ユニットから該第2情報処理ユニットへパケットを送信するパケット通信制御方法であって、
少なくとも該第1情報処理ユニットと該PCIeスイッチとの間で、通常時に使用される運用系PCIeパスと、該運用系パスの障害時に使用される待機系PCIeパスを予め設定し、
通常時は運用系PCIeパスを用いて、該第1の情報処理ユニットから受信したパケットを送信するために第1の送信バッファに一時格納し、かつ該第1の送信バッファ内のパケットを該第2情報処理ユニットへ送信した時に該パケットを第1の所定バッファに一時格納し、
該運用系PCIeパスの障害時に、該第1の送信バッファ又は該第1の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信するのを止めて、該運用系PCIeパスを該待機系PCIeパスに切り替え、
該第1の所定バッファの内容を、該待機系PCIeパスの該第2の所定バッファにコピーし、
該第2の所定バッファに格納されたパケットを該第2の情報処理ユニットへ送信することを特徴とするパケット通信制御方法。 - 前記PCIeスイッチは、OSに対して、運用系ポートと待機系ポートを1つのポートとして見せるために、OSから参照可能な仮想レジスタを備えており、
運用系ポートと待機系ポートの状態及び動作管理レジスタを、OSには見せず、通常時には、該仮想レジスタの参照先を、運用系ポートの状態及び動作管理レジスタとし、障害時には、仮想レジスタの参照先を、待機系ポートの状態及び動作管理レジスタに切り替えることを特徴とする請求項10記載のPCIeのパス切り替え方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008115090A JP2009267771A (ja) | 2008-04-25 | 2008-04-25 | 情報処理装置及びパス制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008115090A JP2009267771A (ja) | 2008-04-25 | 2008-04-25 | 情報処理装置及びパス制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009267771A true JP2009267771A (ja) | 2009-11-12 |
Family
ID=41393056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008115090A Pending JP2009267771A (ja) | 2008-04-25 | 2008-04-25 | 情報処理装置及びパス制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009267771A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012118974A (ja) * | 2010-12-03 | 2012-06-21 | Internatl Business Mach Corp <Ibm> | フェイルオーバー動作のための方法、装置、およびコンピュータ・プログラム |
JP2012150544A (ja) * | 2011-01-17 | 2012-08-09 | Nec Computertechno Ltd | 情報処理装置、データ転送方法、及び情報処理システム |
JP2015135697A (ja) * | 2010-12-03 | 2015-07-27 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | マルチレーンpciエクスプレスio相互接続に対するケーブル冗長性およびフェイルオーバのための方法、装置、およびコンピュータ・プログラム |
CN111177041A (zh) * | 2018-11-13 | 2020-05-19 | 爱思开海力士有限公司 | 支持新能力的可配置集成电路 |
JP2020160919A (ja) * | 2019-03-27 | 2020-10-01 | Necプラットフォームズ株式会社 | カード、システム、カードによる制御方法、システムによる制御方法及びプログラム |
JP2021026421A (ja) * | 2019-08-02 | 2021-02-22 | 株式会社日立製作所 | ストレージ装置 |
-
2008
- 2008-04-25 JP JP2008115090A patent/JP2009267771A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012118974A (ja) * | 2010-12-03 | 2012-06-21 | Internatl Business Mach Corp <Ibm> | フェイルオーバー動作のための方法、装置、およびコンピュータ・プログラム |
JP2015135697A (ja) * | 2010-12-03 | 2015-07-27 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | マルチレーンpciエクスプレスio相互接続に対するケーブル冗長性およびフェイルオーバのための方法、装置、およびコンピュータ・プログラム |
JP2012150544A (ja) * | 2011-01-17 | 2012-08-09 | Nec Computertechno Ltd | 情報処理装置、データ転送方法、及び情報処理システム |
CN111177041A (zh) * | 2018-11-13 | 2020-05-19 | 爱思开海力士有限公司 | 支持新能力的可配置集成电路 |
JP2020160919A (ja) * | 2019-03-27 | 2020-10-01 | Necプラットフォームズ株式会社 | カード、システム、カードによる制御方法、システムによる制御方法及びプログラム |
JP6996757B2 (ja) | 2019-03-27 | 2022-01-17 | Necプラットフォームズ株式会社 | カード、システム、カードが実行する制御方法及びプログラム |
JP2021026421A (ja) * | 2019-08-02 | 2021-02-22 | 株式会社日立製作所 | ストレージ装置 |
JP7080863B2 (ja) | 2019-08-02 | 2022-06-06 | 株式会社日立製作所 | ストレージ装置 |
US11372552B2 (en) | 2019-08-02 | 2022-06-28 | Hitachi, Ltd. | Storage device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3709795B2 (ja) | コンピュータシステムと、コンピュータシステム内のモジュール間の通信方法 | |
US6545981B1 (en) | System and method for implementing error detection and recovery in a system area network | |
JP4512068B2 (ja) | ロックオペレーションを制御するネットワークインターフェイス、このネットワークインターフェイスが含まれたパケットデータ通信オンチップインターコネクトシステムおよびそのネットワークインターフェイスの動作方法 | |
US8233483B2 (en) | Communication apparatus, communication system, absent packet detecting method and absent packet detecting program | |
JP2009267771A (ja) | 情報処理装置及びパス制御方法 | |
US6876663B2 (en) | Switching system | |
JP2007088949A (ja) | 情報処理装置、通信負荷分散方法および通信負荷分散プログラム | |
US9019978B2 (en) | Port mirroring at a network interface device | |
WO1999035793A1 (en) | System and method for implementing multi-pathing data transfers in a system area network | |
JP2000506326A (ja) | フロー制御プロトコルシステムおよび方法 | |
JP4405277B2 (ja) | ディスク制御装置 | |
CN114520711B (zh) | 数据包的选择性重传 | |
US6826148B1 (en) | System and method for implementing a routing scheme in a computer network using intention packets when fault conditions are detected | |
US7564860B2 (en) | Apparatus and method for workflow-based routing in a distributed architecture router | |
WO2017011409A1 (en) | Minimum latency link layer metaframing and error correction | |
US20140010068A1 (en) | Network Node Apparatus System, Apparatus, and Method | |
JP4453238B2 (ja) | 2重化プロセッサシステム | |
US6741561B1 (en) | Routing mechanism using intention packets in a hierarchy or networks | |
JP4024876B2 (ja) | 冗長性終端 | |
JP2005527898A (ja) | チャネル・アダプタ障害に対する冗長性を提供する方法 | |
JP6394727B1 (ja) | 制御装置、制御方法、及び、フォールトトレラント装置 | |
JP6182779B1 (ja) | 転送装置、転送方法およびプログラム | |
US6925056B1 (en) | System and method for implementing a routing scheme using intention packets in a computer network | |
JP6841110B2 (ja) | 中継装置、ネットワークシステム、通信方法、およびプログラム | |
US11265268B1 (en) | High-throughput multi-node integrated circuits |