以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、実施形態が適用されるシステム構成例を示す図である。本実施形態は、同一の接続先に対してシリアルリンク(ビットシリアル通信経路)で構成される独立した複数のポートで接続された装置に適用される。図1の構成例では、CPU#0 101およびCPU#1 102の2つのCPU(中央演算処理装置)が、それぞれが内蔵するシリアルリンクポート#0 103とシリアルリンクポート#1 104の2つのポートを経由して接続される。CPU#0 101は第1の演算処理装置として動作し、CPU#1 102は、第2の演算処理装置として動作する。CPU#0 101及びCPU#1 102は、相互に独立したメモリ107及び108にそれぞれ個別にアクセスして各種演算処理を実行するとともに、それぞれ独立したI/O(入出力インタフェース)109及び110を有する。
CPU#0 101とCPU#1 102間において、それぞれが内蔵するCPUコア106がデータの送受信を行うときには、それぞれが内蔵するシステムコントローラ105によって、次のような制御が実行される。送信側のCPUのシステムコントローラ105は、CPUコア106から出力される送信データで指定されるアクセス先のアドレス情報により、シリアルリンクポート#0 103又はシリアルリンクポート#1 104のどちらのポートを経由するかを決定する。システムコントローラ105は、決定したポートに送信データを出力する。決定されたシリアルリンクポートは、送信データをシリアルデータに変換して、相手側のCPUのシリアルリンクポートに出力する。CPUコア106から順次出力される送信データで指定されるアドレス情報ごとに、シリアルリンクポート#0 103又はシリアルリンクポート#1 104がインタリーブされて使用される。
図2及び図3は、図1のシリアルリンクポート#0 103及びシリアルリンクポート#1 104(以下単に「シリアルリンクポート」と記載する場合がある)の基本構成例を示すブロック図である。図2は、CPU#0 101及びCPU#1 102内の各シリアルリンクポート#0 103である。図3は、CPU#0 101及びCPU#1 102内の各シリアルリンクポート#1 104である。シリアルリンクポートは、以下の機能に分割される。
1.トランザクション層:送受信メッセージや割込みなどを規定する層である。図2に示されるように、CPU#0 101のシリアルリンクポート#0 103の中ではトランザクション層#00 201が、CPU#1 102のシリアルリンクポート#0 103の中ではトランザクション層#10 221が該当する。図3に示されるように、CPU#0 101のシリアルリンクポート#1 104の中ではトランザクション層#01 301が、CPU#1 102のシリアルリンクポート#1 104の中ではトランザクション層#11 321が該当する。以下の説明で、トランザクション層#00 201、#10 221、#01 301、又は#11 321を一般的に、単に「トランザクション層」と記載する場合がある。
2.データリンク層:CRC(巡回冗長検査)や、パケット・ロス又はエラー発生時の再送などを規定する層である。図2に示されるように、CPU#0 101のシリアルリンクポートの中ではデータリンク層#00 202が、CPU#1 102のシリアルリンクポート#0 103の中ではデータリンク層#10 222が該当する。図3に示されるように、CPU#0 101のシリアルリンクポート#1 104の中ではデータリンク層#01 302が、CPU#1 102のシリアルリンクポート#1 104の中ではデータリンク層#11 322が該当する。以下の説明で、データリンク層#00 202、#10 222、#01 302、又は#11 322を一般的に、単に「データリンク層」と記載することがある。
3.物理層:最小転送単位であるフレームの初期化、構築・分解、送受信などを規定する層である。物理層は、物理論理層と物理電気層(SERDES)とに分割される。図2に示されるように、CPU#0 101のシリアルリンクポートの中では物理論理層#00 203と物理電気層#00 204が、CPU#1 102のシリアルリンクポート#0 103の中では物理論理層#10 223と物理電気層#10 224が該当する。図3に示されるように、CPU#0 101のシリアルリンクポート#1 104の中では物理論理層#01 303と物理電気層#01 304が、CPU#1 102のシリアルリンクポート#1 104の中では物理論理層#11 323と物理電気層#11 324が該当する。以下の説明で、物理論理層#00 203、#10 223、#01 303、又は#11 323を一般的に、単に「物理論理層」と記載することがある。同様に、物理電気層#00 204、#10 224、#01 304、又は#11 324を一般的に、単に「物理電気層」と記載することがある。
トランザクション層は、トランザクション・レイヤ・パケット(TLP)を処理する。TLPは、リードやライトといったコマンドや、アドレス/データで構成される。TLPを送受信することで、シリアルリンクポート間のデータ送受信が行われる。
データリンク層は、トランザクション層と物理層の中間に位置し、フロー制御のバッファの管理、エラー検出を行う。エラー検出時には、受信側では接続先に対して再送要求を行ったり、送信側ではTLPの再送を実行する。それによりシリアル伝送に伴うエラーが発生したとしてもTLPが消失しないようにしている。TLPの再送を実行するために、データリンク層内に、再送バッファが実装される。図2に示されるように、データリンク層#00 202内には再送バッファ#00 205が、データリンク層#10 222内には再送バッファ#10 225が、それぞれ実装される。同様に、図3に示されるように、データリンク層#01 302内には再送バッファ#01 305が、データリンク層#11 322内には再送バッファ#11 325が、それぞれ実装される。以下の説明で、再送バッファ#00 205、#10 225、#01 305、又は#11 325を一般的に、単に「再送バッファ」と記載することがある。
図2に示される、CPU#0 101及びCPU#1 102の各シリアルリンクポート#0 103内の物理電気層#00 204及び物理電気層#10 224はそれぞれ、シリアル・パラレルデータ変換回路(SERDES)を有する。同様に、図3に示される、CPU#0 101及びCPU#1 102の各シリアルリンクポート#1 104内の物理電気層#01 304及び物理電気層#11 324はそれぞれ、シリアル・パラレルデータ変換回路(SERDES)を有する。
物理論理層は、送信側回路部分にFraming回路とTx−lane固有回路を、受信側回路部分にRx−lane固有回路とDe−Framing回路を、それぞれ有する。また、物理論理層は、シリアルリンクの初期化及び状態制御のために、LTSSM(Link Training Status State Machine)を実装する。図2に示されるように、CPU#0 101のシリアルリンクポート#0 103内の物理論理層#00 203には、次のものが実装される。物理論理層#00 203には、Framing回路#00 206、Tx−lane固有回路#00 207、Rx−lane固有回路#00 208、De−Framing回路#00 209、及びLTSSM#00 210が実装される。図2に示されるように、CPU#1 102のシリアルリンクポート#0 103内の物理論理層#10 223には、次のものが実装される。物理論理層#10 223には、Framing回路#10 226、Tx−lane固有回路#10 227、Rx−lane固有回路#10 228、De−Framing回路#10 229、及びLTSSM#10 230が実装される。同様に、図3に示されるように、CPU#0 101のシリアルリンクポート#1 104内の物理論理層#01 303には、次のものが実装される。物理論理層#01 303には、Framing回路#01 306、Tx−lane固有回路#01 307、Rx−lane固有回路#01 308、De−Framing回路#01 309、及びLTSSM#01 310が実装される。図3に示されるように、CPU#1 102のシリアルリンクポート#1 104内の物理論理層#11 323には、次のものが実装される。物理論理層#11 323には、Framing回路#11 326、Tx−lane固有回路#11 327、Rx−lane固有回路#11 328、De−Framing回路#11 329、及びLTSSM#11 330が実装される。以下の説明で、Framing回路#00 206、#10 226、#01 306、又は#11 326を一般的に、単に「Framing回路」と記載することがある。同様に、Tx−lane固有回路#00 207、#10 227、#01 307、又は#11 327を一般的に、単に「Tx−lane固有回路」と記載することがある。同様に、Rx−lane固有回路#00 208、#10 228、#01 308、又は#11 328を一般的に、単に「Rx−lane固有回路」と記載することがある。同様に、De−Framing回路#00 209、#10 229、#01 309、又は#11 329を一般的に、単に「De−Framing回路」と記載することがある。更に同様に、LTSSM#00 210、#10 230、#01 310、又は#11 330を一般的に、単に「LTSSM」と記載することがある。
Tx−lane固有回路とRx−lane固有回路は、特には図示しないが、シリアル伝送に伴う符号化/復号化回路、及びシリアルリンクを構成するレーン間のズレ(skew)を調整する回路等を実装する。
Framing回路は、再送バッファから読み出したデータを複数のレーンに分割し、Tx−lane固有回路に出力する。De−Framing回路は、Rx−lane固有回路を介して複数のレーンからデータを再構成する。
LTSSMは、シリアルリンクの初期化及び状態制御を実行する。以下の説明において、エラーが検出されたポートを「エラー検出ポート」、エラー検出ポートと通信を行っている対向ポートを「エラー検出対向ポート」と記載する。図2の例では、エラー検出ポートは、CPU#1 102のシリアルリンクポート#0 103である。また、エラー検出対向ポートは、CPU#0 101のシリアルリンクポート#0 103である。
エラー検出ポートのLTSSMは、リンクのエラー検出を行うとともに、エラー検出時にエラー復帰を行う状態であるRecoveryステートへの状態遷移を行い、Recovery遷移通知をエラー検出対向ポートへ送信する。
エラー検出対向ポートのLTSSMは、Recovery遷移通知の受信時に、Recoveryステートへの状態遷移を行い、Recovery遷移通知をエラー検出ポートへ返す。
エラー検出ポートのLTSSMは、エラー検出対向ポートからRecovery遷移通知の返信を受信することにより、エラー検出対向ポートのRecovery遷移を判別すると、所定のリンク再調整の手順を実行する。エラー検出対向ポートのLTSSMでも、Recovery遷移通知をエラー検出ポートに通知した後、所定のリンク再調整の手順を実行する。
エラー検出ポート及びエラー検出対向ポートの各LTSSMは、リンク再調整の手順に成功すると、TLPを送信可能な状態であるL0のステートに遷移する。この結果、エラー検出ポート及びエラー検出対向ポートのトランザクション層は、TLPを送受信可能な状態に戻る。
エラー検出ポート及びエラー検出対向ポートの各LTSSMは、リンク再調整の手順に失敗し、調停状態であるConfigurationのステートにも遷移できない場合には、リンクダウンを検出する。また、エラー検出ポートのLTSSMが、エラー検出対向ポートからのRecovery遷移通知を受信できずにタイムアウトした場合も、リンクダウンを検出する。
ここで、シリアルリンクを構成する全てのレーンが故障するといった場合には、エラー検出ポートとエラー検出対向ポートの各LTSSMは、相互に通信を行うことができなくなる。この結果、リンクの再調整や再構築を行うことができなくなるため、各LTSSMは、状態遷移を正常にできなくなる。この場合は、各LTSSMは、リンクダウンを検知し、それぞれ初期ステートであるPortDisへ遷移する。
図4は、LTSSMのステート遷移例を示す図である。各状態は以下のようになる。
ステートS1:PortDis : 初期状態。
ステートS2:Polling : 接続先もPollingに遷移したことを待つステート。
ステートS3:Configuration : レーンの構成を接続先と調停し決定するステート。
ステートS4:L0 : シリアルリンクの通常状態でTLPを送受信できるステート。
ステートS5:Recovery : エラーが検出され、シリアルリンクの再調整を行うステート。
リンクの初期化は以下のようなステートの遷移を経て、リンクアップする。
PortDis(S1)→Polling(S2)
→Configuration(S3)→L0(S4)
リンクの初期化や状態制御のためにLTSSMがあるが、その状態遷移のためにTSOS(Training Sequence Ordered Set)と呼ばれる特殊なパケットが用意される。L0以外のステートの場合には、TSOSを送受信することにより状態遷移を行う。図5に、TSOSのフォーマット例を示す。TSOSを示す特殊なシンボル(SYM)を格納するフィールド501や、TSOSの種別を示す識別子を格納するフィールド502、及びLTSSMの状態に合わせて制御情報をやり取りするフィールド503がある。
物理層のリンクアップ後に、データリンク層の初期化が行われ、フロー制御のバッファ(図示せず)の初期化や再送バッファの初期化を行って、TLPの送受信が行えるようになる。
シリアルリンクポートが不調になりTLPの送受信中にエラーが検出されると、LTSSMは、図4のステートS5のRecoveryに遷移し、リンクの再調整を実行する。再調整に成功すると再度図4のステートS4のL0に遷移し、TLPの送受信が可能になる。リンクの不調により破棄されたTLPは、データリンク層の再送機能により再送された場合は、消失することはない。
シリアルリンクポートを構成する一部のレーンにおいて固定的な故障が発生した場合には、LTSSMは、リンクの再調整は失敗するが、図4のステートS5のRecoveryからステートS3のConfigurationへ遷移する。この結果、LTSSMは、故障レーンを除く正常なレーンのみでリンクを再構築することにより再度図4のステートS4のL0へ遷移し、TLPの送受信が可能になる。この場合も、データリンク層の再送機能により破棄されたTLPは再送され、TLPが消失することはない。
図6及び図7は、LTSSMにおける一般的なリンク再調整の処理例を示すフローチャートである。図6及び図7において、ステップS101からステップS108は、エラー検出ポートであるCPU#1 102のシリアルリンクポート#0 103のLTSSM#10 230の処理例を示すフローチャートである。ステップS201からステップS206は、エラー検出対向ポートであるCPU#0 101のシリアルリンクポート#0 103のLTSSM#00 210の処理例を示すフローチャートである。
図2のCPU#1 102のシリアルリンクポート#0 103のLTSSM#10 230内のlinkdown検出回路#10 231は通常は、エラー(リンクダウン)の検出待ちの待機状態になっている(図6のステップS101の判定がNの繰返し)。なお、図2のCPU#0 101のシリアルリンクポート#0 103のLTSSM#00 210内にも、同様のlinkdown検出回路が実装されるが、本実施形態での説明上不要なので、省略してある。図3のCPU#0 101、#1 102の各シリアルリンクポート#1 104内の各LTSSM#01 310、#11 330でも同様である。
この状態で例えば、図2に示されるように、シリアルリンクポート#0 103側でCPU#0 101からCPU#1 102に向かうレーン(伝送路)の一部で故障が発生したとする。この故障により、データが正しく受信できなくなり、図2のCPU#1 102のシリアルリンクポート#0 103内のデータリンク層#10 222において、CRCエラーが検出される(図6のステップS101の判定がY)。データリンク層#10 222がエラーを検出すると、リンク再調整要求をLTSSM#10 230に発行する。リンク再調整要求を受信すると、LTSSM#10 230は、次の制御を実行する。LTSSM#10 230は、エラー検出ポートのステートを、図4のステートS5のRecoveryに遷移させる(図6のステップS102)。
次に、LTSSM#10 230は、対向して通信をしているポートであるエラー検出対向ポートに、Recoveryに遷移したことを示す通知を送信する(図6のステップS103)。この通知は、TSOSを送信することで行われる。
エラー検出対向ポート、例えば図2のCPU#0 101のシリアルリンクポート#0 103内のLTSSM#00 210は、Recovery遷移通知を受信するまで待機している(図6のステップS201の判定がNの繰返し)。LTSSM#00 210は、対向ポートのLTSSM#10 230からRecovery遷移通知を受信すると(図6のステップS201の判定がY)、自身も図4のステートS5のRecoveryに遷移する(図6のステップS202)。
その後、LTSSM#00 210は、遷移したことを示す通知をエラーを検出した対向ポート(エラー検出ポート)に送信する(図6のステップS203)。
エラー検出ポートのLTSSM#10 230は、図6のステップS103でRecovery遷移通知を送信した後、次の処理を実行する。LTSSM#10 230は、エラー検出対向ポートからのRecovery遷移通知の受信の有無とタイムアウトの有無を判別しながら待機している(図6のステップS104の判定がN、S105の判定もNの繰返し)。
エラー検出ポートのLTSSM#10 230がエラー検出ポートからのRecovery遷移通知を受信しエラー検出対向ポートのRecovery遷移を判別すると、LTSSM#10 230は次の処理を実行する(図6のステップS105の判定がY)。LTSSM#10 230は、所定のリンク再調整の手順を実行する。そして、LTSSM#10 230は、リンク再調整の手順に成功すると(図7のステップS106の判定がY)、図4のステートS4のL0に遷移する。この結果、CPU#1 102のシリアルリンクポート#0 103内のトランザクション層#10 221は、TLPを送受信可能な状態に戻る。
一方、エラー検出対向ポートのLTSSM#00 210でも、図6のステップS203でRecovery遷移通知をエラー検出ポートに通知した後、所定のリンク再調整の手順を実行する。そして、LTSSM#00 210は、リンク再調整の手順に成功すると(図7のステップS204の判定がY)、送信可能な図4のステートS4のL0に遷移する。この結果、CPU#0 101のシリアルリンクポート#0 103内のトランザクション層#00 201も、TLPを送受信可能な状態に戻る。
リンク再調整の手順に失敗し、調停状態である図4のステートS3のConfigurationにも遷移できない場合には、LTSSM#10 230又はLTSSM#00 210は、リンクダウンを検出する(図7のステップS106又はS204の判定がN)。また、エラー検出ポートのLTSSM#10 230が、エラー検出対向ポートからのRecovery遷移通知を受信できずにタイムアウトした場合も、リンクダウンを検出する(図6のステップS104の判定がY)。
ここで、図2のFとして示されるように、例えばシリアルリンクポート#0 103を構成する全てのレーンが故障するといった場合には、LTSSM#00 210とLTSSM#10 230間で通信を行うことができなくなる。この結果、リンクの再調整や再構築を行うことができなくなるため、LTSSM#00 210及びLTSSM#10 230でのステート遷移が正常にできなくなる。この場合は、LTSSM#00 210及びLTSSM#10 230は、リンクダウンを検知し、それぞれ図4のステートS1のPortDisへ遷移する。
この後、LTSSM#00 210及びLTSSM#01 310は、それぞれ再度リンクアップを試みることになるが、故障が固定的な場合は再びリンクアップすることができない。
また、一過性の故障であった場合に再度リンクアップすることは可能である。しかしこの場合、再リンクアップ後に、図2のCPU#0 101及びCPU#1 102内の各シリアルリンクポート#0 103内のデータリンク層#00 202及び#10 222の初期化が行われる。この結果、データリンク層#00 202及び#10 222内の各再送バッファ#00 205及び#10 225の各データはその際に破棄され、転送されていたデータが消失する。データが消失することは、データ化けになる可能性があり、データの再構成が必要になる。
また、故障したシリアルリンクを使用させないため、アドレスによるインタリーブの設定を変更する必要があるが、動的に変更できないため、システム停止が必要になる。システムの停止は、高信頼で継続動作が要求されるミッションクリティカルなサーバでは大きな問題となる。
そこで、本実施形態は、以下に説明する構成を有する。まず、本実施形態では、シリアルリンクで構成された複数の独立したポートで接続された装置で、ある一つのポートのシリアルリンクにおいて故障等によりリンクダウンが発生した場合に、次のような動作を実行することができる。この場合、本実施形態では、リンクダウンしたポートの従来からあるシリアルリンクの再送機能を使用して、もう一方の正常なポートにデータ転送を代行させる機能を追加することで、システムを停止することなく継続してシステムを動作させる。
図2及び図3を用いて前述した通り、シリアルリンクポートは、シリアル転送に伴うエラー救済のために、データリンク層に再送機能を持つ。本実施形態ではその点に着目し、物理論理層に、リンクダウンしたポートのデータ転送の代行機能を持たせることで、データリンク層の再送機能を生かしたまま、代行シーケンスを実行できるようにする。それにより、代行シーケンス終了後は、データリンク層の再送機能によりデータの再送が行われるため、システムを停止することなく継続した動作が可能になるものである。
図8は、上述の機能を実現する本実施形態の基本構成例を示すブロック図である。
本実施形態は、独立して動作する複数のリンクがポート回路を介して同一の装置に接続される情報処理装置である。具体的には、図8の例では、リンク9(#0)及びリンク9(#1)の2本のリンク9が、各リンク9(#0、#1)に情報を送信する第1の演算処理装置1と、各リンク(#0、#1)から情報を受信する第2の演算処理装置2に接続される構成を有する。即ち、第1の演算処理装置1は送信回路として動作し、第2の演算処理装置2は受信回路として動作する。なお、対向する2つの装置がそれぞれ、逆方向に通信を行う第1の演算処理装置1と第2の演算処理装置2を共に備えてもよい。
第1の演算処理装置1側には、リンク9(#0)及びリンク9(#1)のそれぞれに、各リンクを終端するための送信側ポート回路3(#0)及び3(#1)が実装される。送信側ポート回路3(#0)及び3(#1)は少なくともそれぞれ、データリンク層5(#0)及び5(#1)と、物理層6(#0)及び6(#1)を含む。データリンク層5(#0)及び5(#1)は、再送データを含む送信データの送信機能を有する。物理層6(#0)及び6(#1)は、データリンク層5(#0)及び5(#1)から送信された送信データから、物理的なリンク9(#0)及びリンク9(#1)に送信可能なフレームデータを生成して、リンク9(#0)及びリンク9(#1)に送出する。
送信側ポート回路3(#1)の物理層6(#1)は、代行通信部10を有する。代行通信部10は、リンク9(#0)でリンクダウンが発生した場合に、自リンク9(#1)のデータと同時に時分割で、制御ライン14を介して入力するリンク9(#0)のデータの送信を代行する。
また、送信側ポート回路3(#0)の物理層6(#0)は、データパス切換部11を有する。データパス切換部11は、自リンク9(#0)でリンクダウンが検出された場合に、次の処理を実行する。データパス切換部11は、データリンク層5(#0)から送信されるデータを、制御ライン14を介して、正常なリンク9(#1)が接続される送信側ポート回路3(#1)の代行通信部10に転送する。代行通信部10は、制御ライン14を介して入力するリンクダウンが検出されたリンク9(#0)のデータを代行して、データリンク層5(#1)から入力する自リンク9(#1)のデータと時分割で送信する。データパス切換部11は、リンク9(#0)でリンクダウンが検出されていなければ、データリンク層5(#0)から送信されるデータを、リンク9(#0)に送信する。
以上の送信側ポート回路3(#0)内のデータパス切換部11と送信側ポート回路3(#1)内の代行通信部10の動作により、次の動作が実現される。リンク9(#0)でリンクダウンが検出された場合であっても、リンク9(#0)のデータの送信動作を、正常なリンク9(#1)で代行させて、継続することができる。
一方、第2の演算処理装置2側には、リンク9(#0)及びリンク9(#1)のそれぞれに、各リンクを終端するための受信側ポート回路4(#0)及び4(#1)が実装される。受信側ポート回路4(#0)及び4(#1)は少なくともそれぞれ、物理層7(#0)及び7(#1)と、データリンク層8(#0)及び8(#1)とを含む。物理層7(#0)及び7(#1)は、リンク9(#0)及びリンク9(#1)から受信したフレームデータから元の受信データを生成して、データリンク層8(#0)及び8(#1)に転送する。データリンク層8(#0)及び8(#1)は、再送データを含む受信データの受信機能を有する。
受信側ポート回路4(#1)内の物理層7(#1)は、代行通信部12を有する。代行通信部12は、リンク9(#0)でリンクダウンが発生した場合に、自リンク9(#1)のデータと同時に時分割でリンク9(#0)のデータの受信を代行する。
また、受信側ポート回路4(#0)内の物理層7(#0)は、データパス切換部13を有する。データパス切換部13は、リンク9(#0)でリンクダウンが検出された場合に、次の処理を実行する。データパス切換部13は、正常なリンク9(#1)が接続される受信側ポート回路4(#1)内の代行通信部12で代行して受信されるリンク9(#0)のデータを、制御ライン15を介してデータリンク層8(#0)に転送する。データパス切換部13は、リンク9(#0)でリンクダウンが検出されていなければ、リンク9(#0)のデータを、データリンク層8(#0)に転送する。
以上の受信側ポート回路4(#1)内の代行通信部12と受信側ポート回路4(#0)内のデータパス切換部13の動作により、次の動作が実現される。リンク9(#0)でリンクダウンが検出された場合であっても、リンクダウンが検出されたリンク9(#0)のデータの受信動作を、正常なリンク9(#1)で代行させて、継続することができる。
このようにして、システムの再起動を必要とせずに、故障したリンクの処理を、他のリンクで代行することが可能となる。
図9及び図10は、図2及び図3に示したシリアルリンクポートの基本構成に対応する、本実施形態のシリアルリンクポートの構成例を示す図である。図9は、CPU#0 101及びCPU#1 102内の各シリアルリンクポート#0 103である。図10は、CPU#0 101及びCPU#1 102内の各シリアルリンクポート#1 104である。図9及び図10において、図2及び図3の場合と同じ番号が付されたブロックは、図2及び図3の場合と同じ機能を有するものとする。
本実施形態は、一例として、シリアルリンクポート#0 103側のCPU#0 101からCPU#1 102への伝送路で故障が発生し、CPU#1 102のシリアルリンクポート#0 103においてデータ受信不可能な状態となった場合で説明する。この場合に、図9に示されるように、CPU#1 102のシリアルリンクポート#0 103は代行依頼部Aとして、CPU#0 101のシリアルリンクポート#0 103は代行受諾部Dとして動作する。また、図10に示されるように、CPU#1 102のシリアルリンクポート#1 104は代行送信部Bとして、CPU#0 101のシリアルリンクポート#1 104は代行受信部Cとして動作する。すなわち、本実施形態では、上記故障が、CPU#0 101からCPU#1 102への伝送路で発生した場合、代行依頼部Aから代行依頼が発行され、代行受諾部Dがその依頼を受諾する。そして、代行受信部Cの制御ライン648と、代行送信部Bの制御ライン646を介して、データがCPU#0 101からCPU#1 102へ代行送信される。
本実施形態では、図9に示されるように、CPU#0 101及びCPU#1 102の各シリアルリンクポート#0 103内にそれぞれ、代行制御回路#00 601及び代行制御回路#10 621が実装される。同様に、図10に示されるように、CPU#0 101及びCPU#1 102の各シリアルリンクポート#1 104内にそれぞれ、代行制御回路#01 701及び代行制御回路#11 721が実装される。
また、図9に示されるように、CPU#0 101のシリアルリンクポート#0 103内の代行制御回路#00 601内には、データパス切換制御回路#00 603が実装される。同様に、CPU#1 102のシリアルリンクポート#0 103内の代行制御回路#10 621にも、データパス切換制御回路#10 623が実装される。なお、図9中では、「データパス切換制御回路」は、「データパス切換」と省略して記載されている。データパス切換制御回路は、図10のCPU#0 101、#1 102の各シリアルリンクポート#1 104内の各代行制御回路#01 701、#11 721にも実装されるが、本実施形態での動作説明上使用しないので、それらの記載は省略してある。データパス切換制御回路は、シリアルリンクポートが図9に示される代行依頼部A又は代行受諾部Dとして動作するときに使用される。
また、図9に示されるように、CPU#0 101のシリアルリンクポート#0 103内の代行制御回路#00 601内には、代行状態制御回路#00 602が実装される。同様に、CPU#1 102のシリアルリンクポート#0 103内の代行制御回路#10 621にも、代行状態制御回路#10 622が実装される。更に、図10に示されるように、CPU#0 101のシリアルリンクポート#1 104内の代行制御回路#01 701内にも、代行状態制御回路#01 702が実装される。同様に、CPU#1 102のシリアルリンクポート#1 104内の代行制御回路#11 721にも、代行状態制御回路#11 722が実装される。なお、図9及び図10中では、「代行状態制御回路」は、「代行状態制御」と省略して記載されている。
また、図9に示されるように、CPU#1 102のシリアルリンクポート#0 103内の代行制御回路#10 621内には、代行依頼回路#10 624が実装される。なお、図9中では、「代行依頼回路#10」は、単に「#10」と省略して記載されている。代行依頼回路は、図9のCPU#0 101のシリアルリンクポート#0 103内の代行制御回路#00 601にも実装されるが、本実施形態での動作説明上使用しないので、それらの記載は省略してある。図10のCPU#0 101、#1 102の各シリアルリンクポート#1 104内の各代行制御回路#01 701、#11 721も同様である。代行依頼回路#10 624は、シリアルリンクポートが図9に示される代行依頼部Aとして動作するときに使用される。
更に、図10に示されるように、CPU#0 101のシリアルリンクポート#1 104内の代行制御回路#01 701内には、データ転送タイミング同期制御回路#01 705が実装される。同様に、CPU#1 102のシリアルリンクポート#1 104内の代行制御回路#11 721にも、データ転送タイミング同期制御回路#11 725が実装される。なお、図10中では、「データ転送タイミング同期制御回路」は、「データ転送T同期制御」と省略して記載されている。データ転送タイミング同期制御回路は、図9のCPU#0 101、#1 102の各シリアルリンクポート#0 103内の各代行制御回路#00 601、#01 621にも実装されるが、本実施形態での動作説明上使用しないので、記載は省略してある。データ転送タイミング同期制御回路は、シリアルリンクポートが図10に示される代行送信部B又は代行受信部Cとして動作するときに使用される。
図9に示されるように、CPU#0 101及び#1 102の各シリアルリンクポート#0 103内の各Framing回路#00 206及び#10 226は、送信データ送出切換回路#00 606及び#10 626を有する。送信データ送出切換回路は、図10のCPU#0 101及び#1 102の各シリアルリンクポート#1 104内の各Framing回路#01 306及び#11 326にも実装されるが、本実施形態での動作説明上使用しないので、記載は省略してある。送信データ送出切換回路は、シリアルリンクポートが図9に示される代行依頼部A又は代行受諾部Dとして動作するときに使用される。
また、図9に示されるように、CPU#0 101及び#1 102の各シリアルリンクポート#0 103内の各De−Framing回路#00 209及び#10 229は、受信データ選択回路#00 607及び#10 627を有する。受信データ選択回路は、図10のCPU#0 101及び#1 102の各シリアルリンクポート#1 104内の各De−Framing回路#01 309及び#11 329にも実装されるが、本実施形態での動作説明上使用しないので、記載は省略してある。受信データ選択回路は、シリアルリンクポートが図9に示される代行依頼部A又は代行受諾部Dとして動作するときに使用される。
図10に示されるように、CPU#0 101及び#1 102の各シリアルリンクポート#1 104内の各Framing回路#01 306及び#11 326は、送信データ時分割選択回路#01 708及び#11 728を有する。なお、図10中では、「送信データ時分割選択回路」は、「送信データ時分割選択」と省略して記載されている。送信データ時分割選択回路は、図9のCPU#0 101及び#1 102の各シリアルリンクポート#0 103内の各Framing回路#00 206及び#10 226にも実装されるが、本実施形態での動作説明上使用しないので、記載は省略してある。送信データ時分割選択回路は、シリアルリンクポートが図10に示される代行送信部B又は代行受信部Cとして動作するときに使用される。
また、図10に示されるように、CPU#0 101及び#1 102の各シリアルリンクポート#1 104内の各De−Framing回路#01 309及び#11 329は、受信データ時分割送出切換回路#01 709及び#11 729を有する。なお、図10中では、「受信データ時分割送出切換回路」は、「受信データ時分割送出切換」と省略して記載されている。受信データ時分割送出切換回路は、図9のCPU#0 101及び#1 102の各シリアルリンクポート#0 103内の各De−Framing回路#00 209及び#10 229にも実装されるが、本実施形態での動作説明上使用しないので、記載は省略してある。受信データ時分割送出切換回路は、シリアルリンクポートが図10に示される代行送信部B又は代行受信部Cとして動作するときに使用される。
図10のCPU#0 101のシリアルリンクポート#1 104の物理論理層#01 303のFraming回路#01 306内の送信データ時分割選択回路#01 708と、代行制御回路#01 701は、図8と次の関係にある。送信データ時分割選択回路#01 708と代行制御回路#01 701は、図8の第1の演算処理装置1内の送信側ポート回路3(#1)内の代行通信部10に対応する。図9のCPU#0 101のシリアルリンクポート#0 103の物理論理層#00 203のFraming回路#00 206内の送信データ送出切換回路#00 606と、代行制御回路#00 601内のデータパス切換制御回路#00 603は、図8と次の関係にある。送信データ送出切換回路#00 606とデータパス切換制御回路#00 603は、図8の第1の演算処理装置1内の送信側ポート回路3(#0)内のデータパス切換部11に対応する。
一方、図10のCPU#1 102のシリアルリンクポート#1 104の物理論理層#11 323のDe−Framing回路#11 329内の受信データ時分割送出切換回路#11 729と、代行制御回路#11 721は、図8と次の関係にある。受信データ時分割送出切換回路#11 729と代行制御回路#11 721は、図8の第2の演算処理装置2内の受信側ポート回路4(#1)内の代行通信部12に対応する。図9のCPU#1 102のシリアルリンクポート#0 103の物理論理層#10 223のDe−Framing回路#10 229内の受信データ選択回路#10 627と、代行制御回路#10 621内のデータパス切換制御回路#10 623は、図8と次の関係にある。受信データ選択回路#10 627とデータパス切換制御回路#10 623は、図8の第2の演算処理装置2内の受信側ポート回路4(#0)内のデータパス切換部13に対応する。
シリアルリンクポート#0 103側のCPU#0 101からCPU#1 102への伝送路で故障が発生した場合について、図9及び図10を参照して説明する。
1.代行依頼部A(CPU#1 102、シリアルリンクポート#0 103の物理論理層#10 223)で、エラーが検出される。この結果、リンクの再調整を実行するために、シリアルリンクポート#0 103がRecoveryに遷移させられると共に、Recoveryに遷移したことが接続先であるCPU#0 101のシリアルリンクポート#0 103に通知される。
2.Recovery遷移通知を受信した代行受諾部D(CPU#0 101、シリアルリンクポート#0 103の物理論理層#00 203)では、シリアルリンクポート#0 103がRecoveryに遷移させられる。これと共に、代行受諾部Dは、Recoveryに遷移したことを示すRecovery遷移通知を、代行依頼部Aに通知する。
3.代行依頼部Aでは、代行受諾部DからのRecovery遷移通知を待つが、伝送路故障のために受信できない。そのため、代行依頼部Aは、受信タイムアウトを検出し、リンクダウンを検知する。CPU#1 102において、代行依頼部Aは、リンクダウンを検知すると、代行処理を、正常に動作しているシリアルリンクポート#1 104側の代行送信部Bに対して依頼する。
4.代行処理を依頼された代行送信部B(CPU#1 102、シリアルリンクポート#1 104の物理論理層#11 323)では、代行シーケンスを行うため、シリアルリンクポート#1 104をまずRecoveryに遷移させる。その後、代行送信部Bは、自身がRecoveryに遷移したことを示すRecovery遷移通知を、代行受信部C(CPU#0 101、シリアルリンクポート#1 104の物理論理層#01 303)に送信する。
5.代行受信部Cは、Recovery遷移通知を受信するとシリアルリンクポート#1 104をRecoveryに遷移させ、その後、代行送信部B側にRecovery遷移通知を送信する。
6.代行送信部Bは、Recovery遷移通知を受信することにより代行受信部CがRecoveryに遷移できたことを確認すると、代行受信部Cとの間でデータ転送のタイミングの同期化を行うため、代行受信部Cに代行要求通知を送信する。
7.代行受信部Cは、代行送信部Bから代行要求通知を受信すると、代行受諾部Dに対して代行が開始されたことを指示する。更に、代行受信部Cは、代行処理が可能であることを示す代行受諾通知を、代行送信部Bへ送信する。
8.代行送信部Bは、代行受信部Cからの代行受諾通知を受信すると、Framing回路#11 326内の送信データ時分割選択回路#11 728のデータ送信タイミングを初期化する。これと共に、代行送信部Bは、代行受信部Cの受信回路のデータ転送タイミングを同期させるために、代行受信部Cにデータ転送タイミング初期化通知を送信する。
9.代行受信部Cは、代行送信部Bからデータ転送タイミング初期化通知を受信すると、それに合わせて、De−Framing回路#01 309の受信データ時分割送出切換回路#01 709のデータ受信タイミングの初期化を行う。また、代行受信部Cは、Framing回路#01 306の送信データ時分割選択回路#01 708のデータ送信タイミングを初期化する。これと共に、代行受信部Cは、代行送信部Bの受信データを送出する回路のデータ転送タイミングを同期させるため、代行送信部Bにデータ転送タイミング初期化通知を送信する。
10.代行送信部Bは、代行受信部Cからデータ転送タイミング初期化通知を受信すると、De−Framing回路#11 329の受信データ時分割送出切換回路#11 729のデータ受信タイミングの初期化を行う。
11.Recoveryのリンク再調整のシーケンスを正常に終了すると、代行送信部Bは代行依頼部Aに対して、代行受信部Cは代行受諾部Dに対して、代行シーケンスが完了したことを通知する。それと共にそれぞれが、シリアルリンクをL0に遷移させTLPが送受信可能な状態とする。
12.代行送信部Bにおいて、Framing回路#11 326の送信データ時分割選択回路#11 728は、データ送信タイミングに従って、データリンク層#11 322及びFraming回路#10 226からの送信データを時分割で送信する。De−Framing回路#11 329の受信データ時分割送出切換回路#11 729は、データ受信タイミングに従って、受信データをDe−Framing回路#11 329自身及びDe−Framing回路#10 229へ時分割で振り分ける。
13.代行依頼部Aにおいて、Framing回路#10 226の送信データ送出切換回路#10 626では、データリンク層#10 222からの送信データを、代行送信部BのFraming回路#11 326に送信するようにする。De−Framing回路#10 229の受信データ選択回路#10 627では、代行送信部BのDe−Framing回路#11 329からの受信データを受信するようにする。
14.代行受信部Cにおいて、De−Framing回路#01 309の受信データ時分割送出切換回路#01 709では、データ受信タイミングに従って、受信データをDe−Framing回路#01 309自身及びDe−Framing回路#00 209へ時分割で振り分ける。Framing回路#01 306の送信データ時分割選択回路#01 708では、データ送信タイミングに従って、データリンク層#01 302及びFraming回路#00 206かのからの送信データを時分割で送信する。
15.代行受諾部Dにおいては、Framing回路#00 206の送信データ送出切換回路#00 606では、データリンク層#00 202からの送信データを、代行受信部CのFraming回路#01 306に送信するようにする。De−Framing回路#00 209の受信データ選択回路#00 607では、代行受信部CのDe−Framing回路#01 309からの受信データを受信するようにする。
次に、図11から図14のフローチャートに従って、図9及び図10の構成を有する本実施形態におけるシリアルリンクポートの動作の詳細について、以下に説明する。
図11〜図14において、ステップS301からステップS310は、図9のCPU#1 102のシリアルリンクポート#0 103の物理論理層#10 223である代行依頼部Aの動作例を示すフローチャートである。ステップS401からステップS415は、図10のCPU#1 102のシリアルリンクポート#1 104の物理論理層#11 323である代行送信部Bの動作例を示すフローチャートである。ステップS501からステップS515は、図10のCPU#0 101のシリアルリンクポート#1 104の物理論理層#01 303である代行受信部Cの動作例を示すフローチャートである。ステップS601からステップS610は、図9のCPU#0 101のシリアルリンクポート#0 103の物理論理層#00 203である代行受諾部Dの動作例を示すフローチャートである。
まず、代行依頼部A(CPU#1 102のシリアルリンクポート#0 103の物理論理層#10 223)のLTSSM#10 230は、前述した図2のLTSSM#10 230の場合と同様の制御を実行している。すなわち、図6のステップS101と同様に、LTSSM#10 230内のlinkdown検出回路#10 231は通常は、エラー(リンクダウン)の検出待ちの待機状態になっている(図11のステップS301の判定がNの繰返し)。
この状態で例えば、図9のFとして示されるように、シリアルリンクポート#0 103側でCPU#0 101からCPU#1 102に向かう全てのレーン(伝送路)で故障が発生したとする。この故障により、データが正しく受信できなくなり、図9のCPU#1 102のシリアルリンクポート#0 103内のデータリンク層#10 222において、CRCエラーが検出される(図11のステップS301の判定がY)。図9のCPU#1 102のシリアルリンクポート#0 103内のデータリンク層#10 222においてエラーが検出されると、図6のステップS102と同様に、LTSSM#10 230は、次の制御を実行する。LTSSM#10 230は、エラー検出ポートのステートを、図4のステートS5のRecoveryに遷移させる(図11のステップS302)。
次に、LTSSM#10 230は、図6のステップS103と同様に、対向して通信をしているCPU#0 101のシリアルリンクポート#0 103に、Recoveryに遷移したことを示す通知を送信する(図11のステップS303)。ここで、シリアルリンクポート#0 103側でCPU#1 102からCPU#0 101に向かうレーン(伝送路)では故障は発生していないとする。上記通知は、CPU#1 102のシリアルリンクポート#0 103内で、物理論理層#10 223内のTx−lane固有回路#10 227から物理電気層#10 224に送出され、代行受諾部DであるCPU#0 101側に送信される。
代行受諾部Dである図9のCPU#0 101のシリアルリンクポート#0 103の物理論理層#00 203内のLTSSM#00 210は、Recovery遷移通知を受信するまで待機している(図11のステップS601の判定がNの繰返し)。この処理は、前述した図6のステップS201の場合と同様である。図9で、CPU#0 101のシリアルリンクポート#0 103において、物理電気層#00 204で受信された上記Recovery遷移通知は、物理論理層#00 203内のRx−lane固有回路#00 208からLTSSM#00 210に送られる。LTSSM#00 210は、対向ポートのLTSSM#10 230からRecovery遷移通知を受信すると(図11のステップS601の判定がY)、自身も図4のステートS5のRecoveryに遷移する(図11のステップS602)。この処理は、前述した図6のステップS202と同様である。
その後、LTSSM#00 210は、前述した図6のステップS203と同様に、遷移したことを示す通知をエラーを検出した対向ポート(エラー検出ポート)に送信する(図11のステップS603)。この通知は、CPU#0 101のシリアルリンクポート#0 103内で、物理論理層#00 203内のTx−lane固有回路#00 207から物理電気層#00 204に送出され、代行依頼部AであるCPU#1 102側に送信される。しかし、シリアルリンクポート#0 103側でCPU#0 101からCPU#1 102に向かう全てのレーンは図9のFに示されるように故障しているため、上記通知の送信は失敗する。
代行依頼部AであるCPU#1 102のシリアルリンクポート#0 103の物理論理層#10 223内のLTSSM#10 230は、図11のステップS303でRecovery遷移通知を送信した後、次の処理を実行する。LTSSM#10 230は、対向ポートからのRecovery遷移通知の受信の有無とタイムアウトの有無を判別しながら待機している(図11のステップS304の判定がNの繰返し)。
この場合、上述のように、対向ポートからの通知を受信することができない。このため、LTSSM#10 230は、図9のS2として示されるように、受信タイムアウトを検出しリンクダウンを検知する(図11のステップS304の判定がY→図12のステップS305)。
LTSSM#10 230は、リンクダウンを検知すると、図4のステートS0の初期状態PortDisに遷移する(図11のステップS306)。
次に、CPU#1 102において、LTSSM#10 230は、自身が属する物理論理層#10 223の代行制御回路#10 621内の切換代行状態制御回路#10 622を介して代行依頼回路#10 624に制御を移す。CPU#1 102において、代行依頼回路#10 624は、エラーが検出されたシリアルリンクポート#0 103ではない、正常に動作している図10のシリアルリンクポート#1 104に、代行依頼を送信する(以上、図12のステップS307)。制御ライン630に出力された代行依頼は、代行送信部Bである、図10に示される、CPU#1 102のシリアルリンクポート#1 104の物理論理層#11 323の代行制御回路#11 721内の代行状態制御回路#11 722に入力する。
図10の代行状態制御回路#11 722は、代行依頼630による代行要求が発生するまで待機している(図12のステップS401の判定がNの繰返し)。
代行状態制御回路#11 722は、代行要求の発生を検知すると(図12のステップS401の判定がY)、自身が属する物理論理層#11 323内のLTSSM#11 330に制御を移す。LTSSM#11 330は、代行シーケンスを行うため、シリアルリンクポート#1 104をまず図4のステートS5のRecoveryに遷移させる(図12のステップS402)。
次に、LTSSM#11 330は、図6のステップS103と同様に、対向して通信をしているCPU#0 101のシリアルリンクポート#1 104に、Recoveryに遷移したことを示す通知を送信する(図12のステップS403)。この通知は、CPU#1 102のシリアルリンクポート#1 104内で、物理論理層#11 323内のLTSSM#11 330からTx−lane固有回路#11 327に送られる(図10の制御ライン631)。その後、Tx−lane固有回路#11 327から物理電気層#11 324に送出され、代行受信部CであるCPU#0 101側に送信される。
代行受信部Cである図10のCPU#0 101のシリアルリンクポート#1 104の物理論理層#01 303内のLTSSM#01 310は、Recovery遷移通知を受信するまで待機している(図12のステップS501の判定がNの繰返し)。この処理は、前述した図6のステップS201の場合と同様である。図10で、CPU#0 101のシリアルリンクポート#1 104において、物理電気層#01 304で受信された上記Recovery遷移通知は、物理論理層#01 303内のRx−lane固有回路#01 308に送られる。その後、Rx−lane固有回路#01 308からLTSSM#01 310に送られる(図10の制御ライン632)。LTSSM#01 310は、対向ポートのLTSSM#11 330からRecovery遷移通知を受信すると(図12のステップS501の判定がY)、自身も図4のステートS5のRecoveryに遷移する(図12のステップS502)。この処理は、前述した図6のステップS202と同様である。
その後、LTSSM#01 310は、前述した図6のステップS203と同様に、遷移したことを示す通知を対向ポートに送信する(図12のステップS503)。この通知は、CPU#0 101のシリアルリンクポート#1 104内で、物理論理層#01 303内のTx−lane固有回路#01 307に送られる(図10の制御ライン633)。その後、Tx−lane固有回路#01 307から物理電気層#01 304に送出され、代行送信部BであるCPU#1 102側に送信される。
代行送信部Bである図10のCPU#1 102のシリアルリンクポート#1 104の物理論理層#11 323内のLTSSM#11 330は、図12のステップS403でRecovery遷移通知を送信した後、次の処理を実行する。LTSSM#11 330は、対向ポートからのRecovery遷移通知の受信の有無とタイムアウトの有無を判別しながら待機している(図12のステップS404の判定がNの繰返し)。図10で、CPU#1 102のシリアルリンクポート#1 104において、物理電気層#11 324で受信された上記Recovery遷移通知は、物理論理層#11 323内のRx−lane固有回路#11 328に送られる。その後、Rx−lane固有回路#11 328からLTSSM#11 330に送られる(図10の制御ライン634)。LTSSM#11 330は、Recovery遷移通知を受信すると(図12のステップS404の判定がY)、代行受信部Cとの間でデータ転送のタイミングの同期化を行うため、代行受信部C側に代行要求通知を送信する(図12のステップS405)。この通知は、CPU#1 102のシリアルリンクポート#1 104内で、物理論理層#11 323内のLTSSM#11 330からTx−lane固有回路#11 327に送られる(図10の制御ライン631)。その後、Tx−lane固有回路#11 327から物理電気層#11 324に送出され、代行受信部CであるCPU#0 101側に送信される。
代行受信部Cである図10のCPU#0 101側のLTSSM#01 310は、ステップS503でRecovery遷移通知を送信した後、代行送信部Bから代行要求通知の受信を待機する(図12のステップS504)。図10で、CPU#0 101のシリアルリンクポート#1 104において、物理電気層#01 304で受信された上記代行要求通知は、物理論理層#01 303内のRx−lane固有回路#01 308に送られる。その後、Rx−lane固有回路#01 308からLTSSM#01 310に送られる(図10の制御ライン632)。
図10で、LTSSM#01 310は、対向ポートのLTSSM#11 330から代行要求通知を受信すると(図12のステップS504の判定がY)、代行制御回路#01 701内の代行状態制御回路#01 702に制御を移す。代行状態制御回路#01 702は、同じCPU#0 101内の代行受諾部D内の代行状態制御回路#00 602に、代行が開始されたことを代行開始指示として指示する(図12のステップS505)。CPU#0 101で、代行状態制御回路#00 602から制御ライン635に出力された代行開始指示は、図9のシリアルリンクポート#0 103の物理論理層#00 203の代行制御回路#00 601の代行状態制御回路#00 602で受信される。代行状態制御回路#00 602は、代行開始指示の受信を、LTSSM#00 210に通知する。
代行受諾部DのLTSSM#00 210は、図11のステップS603でRecovery遷移通知を送信後、リンク再調整が完了したか否か及び代行開始が指示されたか否かを判別する(図12のステップS604の判定がN→S605の判定がNの繰返し)。ステップS604のリンク再調整が完了したか否かの判別は、前述した図7のステップS204の判別と同様である。故障が全レーンの故障ではない場合は、LTSSM#00 210は、リンク再調整の手順に成功すると、図4のステートS4のL0に遷移する(図12のステップS604の判定がY→ステップS605)。この結果、CPU#0 101のシリアルリンクポート#0 103内のトランザクション層#00 201も、TLPを送受信可能な状態に戻る。一方、本実施形態のように故障が全レーンの故障の場合は、図9のLTSSM#00 210は、代行制御回路#00 601内の代行状態制御回路#00 602を介して、代行受信部Cであるシリアルリンクポート#1 104側から代行開始指示を受信する(図12のステップS606の判定がY)。
これ以降、LTSSM#00 210は、代行制御回路#00 601内の代行状態制御回路#00 603に制御を移す。代行状態制御回路#00 602は、代行受信部Cであるシリアルリンクポート#1 104側から代行完了の通知を受信するまで、待機状態となる(図14のステップS607の判定がNの繰返し)。
一方、代行受信部C内の代行状態制御回路#01 702は、図12のステップS505で代行受諾部D側へ代行開始指示を送信後、LTSSM#01 310に制御を戻す。LTSSM#01 310は、代行送信部BであるCPU#1 102のシリアルリンクポート#1 104側へ、代行受諾通知を送信する(図12のステップS506)。この通知は、CPU#0 101のシリアルリンクポート#1 104内で、物理論理層#01 303内のTx−lane固有回路#01 307に送られる(図10の制御ライン633)。その後、Tx−lane固有回路#01 307から物理電気層#01 304に送出され、代行送信部BであるCPU#1 102側に送信される。
代行送信部Bである図10のCPU#1 102のシリアルリンクポート#1 104の物理論理層#11 323内のLTSSM#11 330は、図12のステップS405で代行要求通知を送信した後、次の処理を実行する。LTSSM#11 330は、対向ポートからの代行受諾通知の受信を待機している(図12のステップS406の判定がNの繰返し)。図10で、CPU#1 102のシリアルリンクポート#1 104において、物理電気層#11 324で受信された上記代行受諾通知は、物理論理層#11 323内のRx−lane固有回路#11 328に送られる。その後、Rx−lane固有回路#11 328からLTSSM#11 330に送られる(図10の制御ライン634)。
LTSSM#11 330は、代行受諾通知を受信すると(図12のステップS406の判定がY)、データ転送タイミング初期化通知を、代行受信部C側に送信する(図13のステップS407)。この通知は、CPU#1 102のシリアルリンクポート#1 104内で、物理論理層#11 323内のLTSSM#11 330からTx−lane固有回路#11 327に送られる(図10の制御ライン631)。その後、Tx−lane固有回路#11 327から物理電気層#11 324に送出され、代行受信部CであるCPU#0 101側に送信される。
その後、LTSSM#11 330は、代行制御回路#11 721において、代行状態制御回路#11 722を介してデータ転送タイミング同期制御回路#11 725に指示を出す(図13のステップS408)。この結果、データ転送タイミング同期制御回路#11 725は、制御ライン636を介して、Framing回路#11 326内の送信データ時分割選択回路#11 728に対して、データ送信タイミング初期化指示を出力する。これを受けて、送信データ時分割選択回路#11 728は、送信タイミングを初期化する。
代行受信部Cである図10のCPU#0 101内のLTSSM#01 310は、図12のステップS506で代行受諾通知を送信後、データ転送タイミング初期化通知を受信するまで待機している(図13のステップS507の判定がNの繰返し)。図10で、CPU#0 101のシリアルリンクポート#1 104において、物理電気層#01 304で受信された上記データ転送タイミング初期化通知は、物理論理層#01 303内のRx−lane固有回路#01 308に送られる。その後、Rx−lane固有回路#01 308からLTSSM#01 310に送られる(図10の制御ライン632)。
LTSSM#01 310は、対向ポートのLTSSM#11 330からデータ転送タイミング初期化通知を受信すると(図13のステップS507の判定がY)、次の処理を実行する。LTSSM#01 310は、代行制御回路#01 701において、代行状態制御回路#01 702を介してデータ転送タイミング同期制御回路#01 705に指示を出す(図13のステップS508)。この結果、データ転送タイミング同期制御回路#01 705は、制御ライン637を介して、De−Framing回路#01 309内の受信データ時分割送出切換回路#01 709に対して、データ受信タイミング初期化指示を出力する。これを受けて、受信データ時分割送出切換回路#01 709は、受信タイミングを初期化する。
LTSSM#01 310は、図13のステップS508の処理の後、代行送信部B側に、データ転送タイミング初期化通知を送信する(図13のステップS509)。この通知は、CPU#0 101のシリアルリンクポート#1 104内で、物理論理層#01 303内のTx−lane固有回路#01 307に送られる(図10の制御ライン633)。その後、Tx−lane固有回路#01 307から物理電気層#01 304に送出され、代行送信部BであるCPU#1 102側に送信される。
その後、LTSSM#01 310は、代行制御回路#01 701において、代行状態制御回路#01 702を介してデータ転送タイミング同期制御回路#01 705に指示を出す(図13のステップS510)。この結果、データ転送タイミング同期制御回路#01 705は、制御ライン638を介して、Framing回路#01 306内の送信データ時分割選択回路#01 708に対して、データ送信タイミング初期化指示を出力する。これを受けて、送信データ時分割選択回路#01 708は、送信タイミングを初期化する。
代行送信部Bである図10のCPU#1 102のシリアルリンクポート#1 104の物理論理層#11 323内のLTSSM#11 330は、図13のステップS407でデータ転送タイミング初期化通知を送信した後、次の処理を実行する。LTSSM#11 330は、対向ポートからのデータ転送タイミング初期化通知の受信を待機している(図13のステップS409の判定がNの繰返し)。図10で、CPU#1 102のシリアルリンクポート#1 104において、物理電気層#11 324で受信された上記データ転送タイミング初期化通知は、物理論理層#11 323内のRx−lane固有回路#11 328に送られる。その後、Rx−lane固有回路#11 328からLTSSM#11 330に送られる(図10の制御ライン634)。
LTSSM#11 330は、データ転送タイミング初期化通知を受信すると(図13のステップS409の判定がY)、次の処理を実行する。LTSSM#11 330は、代行制御回路#11 721において、代行状態制御回路#11 722を介してデータ転送タイミング同期制御回路#11 725に指示を出す(図13のステップS410)。この結果、データ転送タイミング同期制御回路#11 725は、制御ライン639を介して、De−Framing回路#11 329内の受信データ時分割送出切換回路#11 729に対して、データ受信タイミング初期化指示を出力する。これを受けて、受信データ時分割送出切換回路#11 729は、受信タイミングを初期化する。
代行送信部B側のLTSSM#11 330及び代行受信部C側のLTSSM#01 310はそれぞれ、所定のリンク再調整の手順を実行する。そして、LTSSM#11 330及びLTSSM#01 310は、リンク再調整の手順に成功すると(図13のステップS411及びS511の各判定がY)、次の処理を実行する。代行送信部BのLTSSM#11 330は、代行制御回路#11 721を介して、代行依頼部A側に、代行シーケンスの完了を通知する(図14のステップS413)。代行受信部CのLTSSM#01 310は、代行制御回路#01 701を介して、代行受諾部D側に、代行シーケンスの完了を通知する(図14のステップS513)。
具体的には、図14のステップS413において、代行送信部BのLTSSM#11 330は、代行制御回路#11 721内の代行状態制御回路#11 722に制御を移す。代行状態制御回路#11 722は、代行依頼部A内の代行制御回路#10 621に、代行シーケンスが完了したことを通知する。代行状態制御回路#11 722から制御ライン640に出力された代行完了通知は、図9のシリアルリンクポート#0 103の物理論理層#10 223の代行制御回路#10 621の代行状態制御回路#10 622で受信される。
一方、図14のステップS513において、代行受信部CのLTSSM#01 310は、代行制御回路#01 701内の代行状態制御回路#01 702に制御を移す。代行状態制御回路#01 702は、代行受諾部D内の代行制御回路#00 601に、代行シーケンスが完了したことを通知する。代行制御回路#01 701から制御ライン635に出力された代行完了通知は、図9のシリアルリンクポート#0 103の物理論理層#00 203の代行制御回路#00 601の代行状態制御回路#00 602で受信される。
代行送信部B側のLTSSM#11 330及び代行受信部C側のLTSSM#01 310はそれぞれ、ステップS413又はS513での代行完了通知の送信後、図4のステートS4のL0に遷移する(図14のステップS414、S514)。
代行依頼部AのLTSSM#10 230は、図12のステップS307で代行依頼を代行送信部Bに送信した後、代行制御回路#10 621内の代行状態制御回路#10 622に制御を移している。代行状態制御回路#10 622は、代行送信部Bから代行完了通知を受信するまで待機状態となっている(図14のステップS308の判定がNの繰返し)。代行状態制御回路#10 622は、代行送信部Bから上述の代行完了通知を受信すると(図14のステップS308の判定がY)、データパス切換制御回路#10 623に指示を出す。データパス切換制御回路#10 623は、制御ライン641を介して、Framing回路#10 226内の送信データ送出切換回路#10 626に、出力データパスの切換を指示する。同様に、データパス切換制御回路#10 623は、制御ライン642を介して、De−Framing回路#10 229内の受信データ選択回路#10 627に、入力データパスの切換を指示する(以上、図14のステップS309)。
代行受諾部Dでは、代行制御回路#00 601内の代行状態制御回路#00 602が、図14のステップS607の待機状態となっている。代行状態制御回路#00 602は、代行受信部Cから代行完了通知を受信すると(図14のステップS607の判定がY)、まず代行完了通知の受信をLTSSM#00 210に通知する。
LTSSM#00 210は、通知を受けると、図4のステートS0の初期状態PortDisに遷移する(図14のステップS608)。
また、代行状態制御回路#00 602は、データパス切換制御回路#00 603に指示を出す。データパス切換制御回路#00 603は、制御ライン643を介して、Framing回路#00 206内の送信データ送出切換回路#00 606に、出力データパスの切換を指示する。同様に、データパス切換制御回路#00 603は、制御ライン644を介して、De−Framing回路#00 209内の受信データ選択回路#00 607に、入力データパスの切換を指示する(以上、図14のステップS609)。
以上の図14のステップS309、S414、S514、及びS609の一連の処理が完了すると、代行ポートを用いた通信が可能となる。
図10の代行送信部Bにおいて、Framing回路#11 326の送信データ時分割選択回路#11 728では、次の動作を実行する(図14のステップS415)。送信データ時分割選択回路#11 728は、データ送信タイミングに従い、データリンク層#11 322からの送信データと、制御ライン645経由の図9のFraming回路#10 226からの送信データを、時分割で送信する。De−Framing回路#11 329の受信データ時分割送出切換回路#11 729は、次の動作を実行する。受信データ時分割送出切換回路#11 729は、データ受信タイミングに従って、受信データを、De−Framing回路#11 329と、制御ライン646経由で図9のDe−Framing回路#10 229へ、時分割で振り分ける。
図9の代行依頼部Aにおいて、Framing回路#10 226の送信データ送出切換回路#10 626は、次の動作を実行する(図14のステップS310)。送信データ送出切換回路#10 626は、データリンク層#10 222からの送信データを、制御ライン645を介して、図10の代行送信部BのFraming回路#11 326に送信されるように制御する。De−Framing回路#10 229の受信データ選択回路#10 627は、制御ライン646を介して、図10の代行送信部BのDe−Framing回路#11 329からの受信データを受信するように制御する。
図10の代行受信部Cにおいて、De−Framing回路#01 309の受信データ時分割送出切換回路#01 709は、次の動作を実行する(図14のステップS515)。受信データ時分割送出切換回路#01 709は、データ受信タイミングに従って、受信データを、De−Framing回路#01 309と、制御ライン647経由で図9のDe−Framing回路#00 209へ、時分割で振り分ける。Framing回路#01 306の送信データ時分割選択回路#01 708は、次の動作を実行する。送信データ時分割選択回路#01 708は、データ送信タイミングに従って、データリンク層#01 302からの送信データと、制御ライン648経由の図9のFraming回路#00 206からの送信データを、時分割で送信する。
図9の代行受諾部Dにおいて、Framing回路#00 206の送信データ送出切換回路#00 606は、次の動作を実行する(図14のステップS610)。送信データ送出切換回路#00 606は、データリンク層#00 202からの送信データを、制御ライン648経由で図10の代行受信部CのFraming回路#01 306に送信するように制御する。De−Framing回路#00 209の受信データ選択回路#00 607は、制御ライン647経由で図10の代行受信部CのDe−Framing回路#01 309からの受信データを受信するように制御する。
図15は、図9又は図10の代行状態制御回路(#00 602、#10 622、#01 702、又は#11 722)における、代行状態ステートの遷移例を示す図である。代行状態ステートは以下の状態を持つ。
a)Idle:代行シーケンス及び代行を実行していない状態を示す。
b)Wait_degene:図9の代行依頼部A及び代行受諾部Dにおいて、代行シーケンスの完了を待っていることを示す。代行依頼部Aにおいては、リンクダウンが検知され、代行依頼指示を行うとIdleから遷移する。代行受諾部Dでは、代行受信部からの代行開始指示によりIdleから遷移する。
c)Progress_master:図10の代行送信部Bにおいて、代行要求を実行していること示す。図9の代行依頼部Aからの代行依頼指示(図12のステップS307参照)により、Idleから遷移する。
d)Progress_slave:図10の代行受信部Cにおいて、代行要求を処理していることを示す。図10の代行送信部Bからの代行要求通知(図12のステップS405参照)の受信により、Idleから遷移する。
e)Degenerate:代行シーケンスが終了し、図9の代行依頼部A及び代行受諾部Dにおいて、代行を行って貰い縮退している状態を示す(図14のステップS310とS610参照)。図10の代行送信部B及び代行受信部Cからの代行完了通知(図14のステップS413とS513参照)の受信により、Wait_degeneから遷移する。
f)Proxy:代行シーケンスが終了し、図10の代行送信部B及び代行受信部Cにおいて、縮退ポート(リンクダウンが発生したポート)の代行を実行している状態を示す(図14のステップS415とS515参照)。
図10の代行送信部Bにおいては、代行完了通知の発行(図14のステップS413参照)により、Progress_masterから遷移する。図10の代行受信部Cにおいては、代行完了通知の発行(図14のステップS513参照)により、Progress_slaveから遷移する。
以上説明した通り、本実施形態では、リンクダウンが発生したとしても、正常に動作している代行ポートの物理層を通してデータの送受信が可能となる。そのため、データリンク層の再送バッファを破棄する必要がなく、代行シーケンスを完了後はデータの再送によりデータを消失させることなく継続して動作が行えるようになる。
代行シーケンスを行うために図10の代行送信部B及び代行受信部Cとの間で各種通知を送受信する必要がある。図4のRecoveryのステートS5で代行シーケンスを行うため各種通知の送受信には、TSOSを使用する。図16は、本実施形態におけるTSOSのフォーマット例を示す図である。
本実施形態のTSOSのフォーマットでは、破線部1501のように、代行要求通知(図12のステップS405参照)を示すビット(ProxyReq)及び代行受諾通知(図12のステップS506参照)を示すビット(ProxyAck)が、追加される。また、通常複数レーンでシリアルリンクが構成されている場合に、レーン間のズレ(skew)を調整するためのdeskewシンボル(図16の1502)がTSOSの一部に含まれる。本実施形態では、上記deskewシンボルが、データ転送タイミング初期化通知(図13のステップS407及びS509参照)に使用される。
図17及び図18は、図9及び図10に示したCPU#0 101又はCPU#1 102のシリアルリンクポート#0 103及びシリアルリンクポート#1 104内の、送信回路部分のより詳細な構成例を示す図である。図17は、図9のCPU#0 101のシリアルリンクポート#0 103内の送信回路部分の構成例を示す図、図18は、図10のCPU#0 101内のシリアルリンクポート#1 104内の送信回路部分の構成例を示す図である。CPU#1 102のシリアルリンクポート#0 103及びシリアルリンクポート#1 104についても同様であるので、それらの説明は省略する。
図17のように、CPU#0 101のシリアルリンクポート#0 103の物理論理層#00 203内の送信回路部分は、データリンク層#00 202とFraming回路#00 206との間に、送信バッファ#00 1601を有する。同様に、図18のように、CPU#0 101のシリアルリンクポート#1 104の物理論理層#01 303内の送信回路部分は、データリンク層#01 302とFraming回路#01 306との間に、送信バッファ#01 1701を有する。
また、図18のように、CPU#0 101のシリアルリンクポート#1 104の物理論理層#00 203内の送信回路部分は、OS検出部#01 1703とOS生成部#01 1704を有する。OS検出部#01 1703は、Rx−lane固有回路#01 308を介してシリアルリンク(物理電気層#01 304)から、どのようなTSOSを受信したかを識別する。OS生成部#01 1704は、Tx−lane固有回路#01 307を介してシリアルリンク(物理電気層#01 304)に、TSOSを発行する。OS生成部#01 1704及びOS検出部#01 1703は、LTSSM#01 310に接続され、リンクの初期化や状態制御を行う際のTSOSの送受信の制御に使用される。
代行ポートである図18のCPU#0 101のシリアルリンクポート#1 104の送信回路部分では、次の動作が実行される。(代行受信部として動作する場合を例にして説明する。)
LTSSM#01 310と代行制御回路#01 701内の代行状態制御回路#01 702は、OS検出部#01 1703から、Recovery遷移/代行要求/データ転送タイミング初期化通知を受信する(図12のS501、S504、図13のS507)。この結果、代行状態制御回路#01 702は代行状態ステートになり、LTSSM#01 310は状態を遷移させる。
代行状態制御回路#01 703は、自身が代行状態ステートになっていることと、LTSSM#01 310の遷移状態に基づき、またLTSSM#01 310を経由してOS検出部#01 1703から各種通知を受信することにより、次の動作を実行する。代行状態制御回路#01 702は、縮退ポートであるシリアルリンクポート#0 103の代行制御回路#00 601(図17)に、制御ライン635を介して、代行開始/代行完了通知(図12のS505、図14のS513)を発行する。
更に、代行状態制御回路#01 702は、LTSSM#01 310を経由してOS生成部#01 1704に対して、Recovery遷移/代行受諾/データ転送タイミング初期化通知の発行(図12のS503、S506、図13のS509)を指示する。
データ転送タイミング同期制御回路#01 705は、代行状態ステート及びデータ転送タイミング初期化通知の送信(図13のS509)により、次の動作を実行する。データ転送タイミング同期制御回路#01 705は、送信データ時分割選択回路#01 708に対して、データ送信タイミング初期化指示(図18の制御ライン638)及び代行実行有効指示(図18の制御ライン638′)を出力する。
送信データ時分割選択回路#01 708は、縮退ポートと代行ポートの送信データを時分割で送信するために、データ送信タイミングカウンタ#01 1702を有する。本実施例では例えば、時分割のタイミングを8サイクル毎で行う場合を想定し、データ送信タイミングカウンタ#01 1702は4ビットのカウンタである。データ送信タイミングカウンタ#01 1702は、代行制御回路#01 701のデータ転送タイミング同期制御回路#01 705から制御ライン638経由でデータ送信タイミング初期化指示を受信することで、初期化される(図13のS510)。データ送信タイミングカウンタ#01 1702は、初期化以外のタイミングでは1サイクル毎に1を加算する動作を実行する。
Framing回路#01 306内の送信データ時分割選択回路#01 708は、制御ライン638′に代行実行有効指示の値1が出力されているときに、次の動作を実行する。送信データ時分割選択回路#01 708は、データ送信タイミングカウンタ#01 1702の最上位ビットの値に応じて、代行ポート側の送信データ(送信バッファ#01 1701の出力)又は縮退ポート側の送信データ(制御ライン648)を選択する。
具体的には、最上位ビット値が0のときは、この値0と代行実行有効指示の値1とがアンド回路1705でアンド演算された出力値0がインバータ1706で反転された値1が、代行ポートの送信バッファ#01 1701に、バッファ読出し通知として指定される。このとき、制御ライン1707の値は0となるため、図17の縮退ポートの送信バッファ#00 1601には、バッファ読出し通知は指定されない。この結果、代行ポートのFraming回路#01 306からは、代行ポートの送信バッファ#01 1701内の送信データが送信される。
一方、最上位ビット値が1のときは、この値1と代行実行有効指示の値1とがアンド回路1705でアンド演算された出力値1が、制御ライン1707を介して縮退ポートの図17の送信バッファ#00 1601に、バッファ読出し通知として指定される。このとき、インバータ1706の出力値は0となるため、代行ポートの送信バッファ#01 1701には、バッファ読出し通知は指定されない。この結果、代行ポートのFraming回路#01 306からは、縮退ポートの図17の送信バッファ#00 1601内の送信データが送信される。
制御ライン638′に代行実行有効指示の値1が出力されていないときには、アンド回路1705の出力値は常に0となる。従って、インバータ1706の出力値は常に1となり、制御ライン1707の値は常に0となる。この結果、代行ポートのFraming回路#01 306からは、常に、代行ポートの送信バッファ#01 1701内の送信データが送信される。
以上の図18の構成は、シリアルリンクポート#0 103側の物理論理層#00 203(および#10 223)でも同様であるが、本実施形態において代行依頼/受諾部として説明している図17のシリアルリンクポート#0 103の構成では、図18の上述した構成は省略されている。
縮退ポートである図17のCPU#0 101のシリアルリンクポート#0 103の送信回路部分では、次の動作が実行される。(代行受諾部として動作する場合を例にして説明する。)
代行制御回路#00 601内の代行状態制御回路#00 602は、図18のシリアルリンクポート#1 104の代行制御回路#01 701から制御ライン635を介して代行開始指示及び代行完了通知を受ける(図12のS606、図14のS607)。この結果、代行制御回路#00 601は、代行状態ステート及びLTSSM#00 210を遷移させる。
データパス切換制御回路#00 603は、代行状態ステートに従い、制御ライン643を介して送信データ送出切換回路#00 606に、切換指示を発行する。送信データ送出切換回路#00 606は、上記切換指示に従い、送信バッファ#00 1601からの送信データを、制御ライン648を介して、代行ポートである図18のシリアルリンクポート#1 104のFraming回路#01 306に送る。
以上の図17の構成は、シリアルリンクポート#1 104側の物理論理層#01 303(および#11 323)でも同様であるが、本実施形態において代行送/受信部として説明している図18のシリアルリンクポート#1 104の構成では、図17の上述した構成は省略されている。
図19及び図20は、図9及び図10に示したCPU#0 101又はCPU#1 102のシリアルリンクポート#0 103及びシリアルリンクポート#1 104内の、受信回路部分のより詳細な構成例を示す図である。図19は、図9のCPU#0 101のシリアルリンクポート#0 103内の受信回路部分の構成例を示す図、図20は、図10のCPU#0 101内のシリアルリンクポート#1 104内の受信回路部分の構成例を示す図である。CPU#1 102のシリアルリンクポート#0 103及びシリアルリンクポート#1 104についても同様であるので、それらの説明は省略する。
図19のように、CPU#0 101のシリアルリンクポート#0 103の物理論理層#00 203内の受信回路部分は、De−Framing回路#00 209とデータリンク層#00 202との間に、受信バッファ#00 1801を有する。同様に、図20のように、CPU#0 101のシリアルリンクポート#1 104の物理論理層#01 303内の受信回路部分は、De−Framing回路#00 309とデータリンク層#00 302との間に、受信バッファ#01 1901を有する。
図20に示されるOS検出部#01 1703及びOS生成部#01 1704の構成は、図18の場合と同様である。OS生成部#01 1704及びOS検出部#01 1703は、LTSSM#01 310に接続され、リンクの初期化や状態制御を行う際のTSOSの送受信の制御に使用される。
代行ポートである図20のCPU#0 101のシリアルリンクポート#1 104の受信回路部分では、次の動作が実行される。(代行送信部として動作する場合を例にして説明する。)
代行制御回路#01 701内の代行状態制御回路#01 702は、制御ライン630を介して図19の代行依頼部内の代行依頼回路#00 624(図9の説明では代行依頼回路#10)から、代行依頼指示(図12のS401)を受信する。また、LTSSM#01 310と代行状態制御回路#01 702は、OS検出部#01 1703から、Recovery遷移/代行受諾/データ転送タイミング初期化通知を受信する(図12のS404、S406、図13のS409)。この結果、代行状態制御回路#01 702は代行状態ステートになり、LTSSM#01 310は状態を遷移させる。
代行状態制御回路#01 702は、自身が代行状態ステートになっていることと、LTSSM#01 310の遷移状態に基づき、またLTSSM#01 310を経由してOS検出部#01 1703から各種通知を受信することにより、次の動作を実行する。代行状態制御回路#01 702は、縮退ポートであるシリアルリンクポート#0 103の代行制御回路#00 601(図19)に、制御ライン640を介して、代行完了通知(図14のS413)を発行する。
更に、代行状態制御回路#01 702は、LTSSM#01 310を経由してOS生成部#01 1704に対して、Recovery遷移/代行要求/データ転送タイミング初期化通知の発行(図12のS403、S405、図13のS407)を指示する。
データ転送タイミング同期制御回路#01 705は、代行状態ステート及びデータ転送タイミング初期化通知の受信(図13のS409)により、次の動作を実行する。データ転送タイミング同期制御回路#01 705は、受信データ時分割送出切換回路#01 709に対して、データ送信タイミング初期化指示(図20の制御ライン637)及び代行実行有効指示(図20の制御ライン637′)を出力する。
受信データ時分割送出切換回路#01 709は、縮退ポートと代行ポートへの受信データを時分割で受信するためにデータ受信タイミングカウンタ#01 1902有する。本実施例では例えば、時分割のタイミングを8サイクル毎で行う場合を想定し、データ受信タイミングカウンタ#01 1902は4ビットのカウンタである。データ受信タイミングカウンタ#01 1902は、代行制御回路#01 701のデータ転送タイミング同期制御回路#01 705から制御ライン637経由でデータ送信タイミング初期化指示を受信することで、初期化される(図13のS409、S410)。データ受信タイミングカウンタ#01 1902は、初期化以外のタイミングでは1サイクル毎に1を加算する動作を実行する。
De−Framing回路#01 309内の受信データ時分割送出切換回路#01 709は、制御ライン638′に代行実行有効指示の値1が出力されているときに、次の動作を実行する。受信データ時分割送出切換回路#01 709は、データ受信タイミングカウンタ#01 1902の最上位ビットの値に応じて、受信データを代行ポート側(受信バッファ#01 1901)又は縮退ポート側(制御ライン647)に送出する。
具体的には、最上位ビット値が0のときは、この値0と代行実行有効指示の値1とによって、アンド回路1903の出力値は0となる。受信データ時分割送出切換回路#01 709は、上記出力値が0のときは、受信データを、代行ポート側(受信バッファ#01 1901)に出力する。
一方、最上位ビット値が1のときは、この値1と代行実行有効指示の値1とによって、アンド回路1903の出力値は1となる。受信データ時分割送出切換回路#01 709は、上記出力値が1のときは、受信データを、制御ライン647を介して縮退ポート側の図19の受信バッファ#00 1801に出力する。
制御ライン637′に代行実行有効指示の値1が出力されていないときには、アンド回路1903の出力値は常に0となる。従って、受信データ時分割送出切換回路#01 709は、受信データを常に、代行ポート側(受信バッファ#01 1901)に出力する。
以上の図20の構成は、シリアルリンクポート#0 103側の物理論理層#00 203(および#10 223)でも同様であるが、本実施形態において代行依頼/受諾部として説明している図19のシリアルリンクポート#0 103の構成では、図20の上述した構成は省略されている。
縮退ポートである図19のCPU#0 101のシリアルリンクポート#0 103の受信回路部分では、次の動作が実行される。(代行依頼部として動作する場合を例にして説明する。)
代行制御回路#00 601内の代行状態制御回路#00 602は、LTSSM#00 210内のlinkdown検出回路#00 1802からリンクダウン検知を受ける。この結果、代行状態制御回路#00 602は、自身が代行状態ステートにないことと、LTSSM#00 210の遷移状態により、次の動作を実行する。代行状態制御回路#00 602は、代行依頼回路#00 624から制御ライン630経由で、代行ポートの図20の代行制御回路#01 701内の代行状態制御回路#01 702に、代行依頼指示を送信する(図12のS307)。これにより、この代行依頼指示により、代行ポートの代行状態制御回路#01 702が代行状態ステートに遷移させられ、LTSSM#01 310の状態も遷移させられる。
縮退ポートの図19の代行状態制御回路#00 602は、代行ポートの図20の代行制御回路#01 701の代行状態制御回路#01 702から制御ライン640を介して、代行完了通知を受信する(図14のS308)。この代行完了通知により、縮退ポートの代行状態制御回路#00 602が代行状態ステートに遷移させられ、LTSSM#00 210の状態も遷移させられる。
この結果、代行状態制御回路#00 602からデータパス切換制御回路#00 603に指示が出される。この指示により、データパス切換制御回路#00 603は、制御ライン642を介して、De−Framing回路#00 209内の受信データ選択回路#00 607に、切換指示を出力する。受信データ選択回路#00 607は、上記切換指示に従って、代行ポートから制御ライン647を介して入力する受信データを選択して、受信バッファ#00 1801に出力する。
図21は、図8に示した本実施形態の基本構成例に関連する本実施形態の他の構成例を示す図である。図21の構成例では、図8に示した基本構成例に対して、シリアルリンクポート#1 104でリンクダウンが発生した場合に対応可能な構成が付加されている。図21において、図8に示される送信側ポート回路3(#1)の物理層6(#1)内の代行通信部10と同様の代行通信部10−2が、送信側ポート回路3(#0)の物理層6(#0)内に実装される。代行通信部10−2は、リンク9(#1)でリンクダウンが発生した場合に、自リンク9(#0)のデータと同時に時分割で、制御ライン16を介して入力するリンク9(#1)のデータの送信を代行する。
また、図8に示される送信側ポート回路3(#0)の物理層6(#0)内のデータパス切換部11と同様のデータパス切換部11−2が、送信側ポート回路3(#1)の物理層6(#1)内に実装される。データパス切換部11−2は、自リンク9(#1)でリンクダウンが検出された場合に、次の処理を実行する。データパス切換部11−2は、データリンク層5(#1)から送信されるデータを、制御ライン16を介して、正常なリンク9(#0)が接続される送信側ポート回路3(#0)の代行通信部10−2に転送する。代行通信部10−2は、制御ライン16を介して入力するリンクダウンが検出されたリンク9(#1)のデータを代行して、データリンク層5(#0)から入力する自リンク9(#0)のデータと時分割で送信する。データパス切換部11−2は、リンク9(#1)でリンクダウンが検出されていなければ、データリンク層5(#1)から送信されるデータを、代行通信部10を介してリンク9(#0)に送信する。
以上の送信側ポート回路3(#1)内のデータパス切換部11−2と送信側ポート回路3(#0)内の代行通信部10−2の動作により、次の動作が実現される。リンク9(#1)でリンクダウンが検出された場合であっても、リンク9(#1)のデータの送信動作を、正常なリンク9(#0)で代行させて、継続することができる。
一方、第2の演算処理装置2側において、図8に示される受信側ポート回路4(#1)の物理層7(#1)内の代行通信部12と同様の代行通信部12−2が、受信側ポート回路4(#0)の物理層7(#0)内に実装される。代行通信部12−2は、リンク9(#1)でリンクダウンが発生した場合に、自リンク9(#0)のデータと同時に時分割でリンク9(#1)のデータの受信を代行する。
また、図8に示される受信側ポート回路4(#0)の物理層7(#0)内のデータパス切換部13と同様のデータパス切換部13−2が、受信側ポート回路4(#1)内の物理層7(#1)に実装される。データパス切換部13−2は、リンク9(#1)でリンクダウンが検出された場合に、次の処理を実行する。データパス切換部13−2は、正常なリンク9(#0)が接続される受信側ポート回路4(#0)内の代行通信部12−2で代行して受信されるリンク9(#1)のデータを、制御ライン17を介してデータリンク層8(#1)に転送する。データパス切換部13−2は、リンク9(#1)でリンクダウンが検出されていなければ、リンク9(#1)のデータを、代行通信部12を介してデータリンク層8(#1)に転送する。
以上の受信側ポート回路4(#0)内の代行通信部12−2と受信側ポート回路4(#1)内のデータパス切換部13−2の動作により、次の動作が実現される。リンク9(#1)でリンクダウンが検出された場合であっても、リンクダウンが検出されたリンク9(#1)のデータの受信動作を、正常なリンク9(#0)で代行させて、継続することができる。
このようにして、図21の構成により、リンク9(#0)でリンクダウンが検出された図8の場合と同様に、リンク9(#1)でリンクダウンが検出された場合も、システムの再起動を必要とせずに、故障したリンクの処理を、他のリンクで代行可能となる。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
独立して動作する複数のリンクを備える情報処理装置において、
前記複数のリンクの各々を接続する各ポート回路の下位層に設けられ、自リンクのデータの通信と、リンクダウンが検出された他のリンクのデータの代行通信とを時分割で行う代行通信部と、
前記複数のリンクのいずれかでリンクダウンが検出された場合、前記リンクダウンが検出されたリンクを接続するポート回路の上位層の再送機能を用いて送信できなかった転送情報を前記代行通信部に送信することにより、前記代行通信部に前記リンクダウンが検出されたリンクのデータを送信させる切換部と、
を有する情報処理装置。
(付記2)
前記上位層はデータリンク層であり、前記下位層は物理層であり、
前記各リンクは、前記各リンクに情報を送信する第1の演算処理装置と前記各リンクから前記情報を受信する第2の演算処理装置に接続され、
前記ポート回路が前記第1の演算処理装置内に設けられる送信側ポート回路である場合に、
前記代行通信部は、自リンクのデータの通信とリンクダウンが検出された他のリンクのデータの代行通信とを同時に時分割で行い、
前記切換部は、前記リンクダウンが検出されたリンクの前記送信側ポート回路の前記データリンク層から送信されるデータを、前記代行通信部に転送して、前記リンクダウンが検出されたリンクのデータの送信動作を継続させる、
付記1に記載の情報処理装置。
(付記3)
前記ポート回路が前記第2の演算処理装置内に設けられる受信側ポート回路である場合に、前記受信側ポート回路に、
自リンクの受信データの通信とリンクダウンが検出された他のリンクの受信データの代行受信とを同時に時分割で行う受信側の代行通信部と、
前記受信側の代行通信部で受信された前記リンクダウンが検出されたリンクのデータを、前記リンクダウンが検出されたリンクの前記受信側ポート回路のデータリンク層に転送して、前記リンクダウンが検出されたリンクのデータの受信動作を継続させる受信側の切換部と、
を更に有する付記2記載の情報処理装置。
(付記4)
前記リンクは、シリアルリンクである、
付記3記載の情報処理装置。
(付記5)
前記リンクのいずれかでリンクダウンが検出された場合に、前記リンクダウンが検出されていない他のリンクを介して、前記代行通信部と前記切換部の設定を変更する、
付記1乃至4の何れかに記載の情報処理装置。
(付記6)
前記リンクのいずれかでリンクダウンが検出された場合に、送信側の前記ポート回路と受信側の前記ポート回路との間で、前記代行通信部における時分割動作のタイミングを同期化する、
付記5に記載の情報処理装置。
(付記7)
独立して動作する複数のリンクで第2の演算装置に接続され前記各リンクに情報を送信する第1の演算処理装置であって、
前記第1の演算処理装置内で前記各リンクを接続する各送信側ポート回路の物理層に設けられ、自リンクのデータの通信とリンクダウンが検出された他のリンクのデータの代行送信とを同時に時分割で行う代行送信部と、
前記各送信側ポート回路の物理層に設けられ、前記リンクのいずれかでリンクダウンが検出された場合に、前記リンクダウンが検出されたリンクの前記送信側ポート回路のデータリンク層から送信されるデータを、前記送信側ポート回路の前記代行送信部に転送して、前記リンクダウンが検出されたリンクのデータの送信動作を継続させる送信データ送出切換部と、
を有する演算処理装置。
(付記8)
独立して動作する複数のリンクで第1の演算処理装置に接続され前記各リンクから情報を受信する第2の演算処理装置であって、
前記第2の演算処理装置内で前記各リンクを接続する各受信側ポート回路の物理層に設けられ、自リンクのデータの通信と同時に時分割でリンクダウンが検出された他のリンクの代行データの受信とを同時に時分割で行う代行受信部と、
前記各受信側ポート回路の物理層に設けられ、前記リンクのいずれかでリンクダウンが検出された場合に、前記リンクダウンが検出されたリンクのデータを、前記リンクダウンが検出されたリンクの前記受信側ポート回路のデータリンク層に転送して、前記リンクダウンが検出されたリンクのデータの受信動作を継続させる受信データ選択部と、
を有する演算処理装置。
(付記9)
独立して動作する複数のリンクを備える情報処理装置の制御方法において、
前記情報処理装置が有する代行通信部が、前記複数のリンクの各々を接続する各ポート回路の下位層に設けられ、自リンクのデータの通信と、リンクダウンが検出された他のリンクのデータの代行通信とを時分割で行い、
前記複数のリンクのいずれかでリンクダウンが検出された場合、前記情報処理装置が有する切換部が、前記リンクダウンが検出されたリンクを接続するポート回路の上位層の再送機能を用いて送信できなかった転送情報を前記代行通信部に送信することにより、前記代行通信部に前記リンクダウンが検出されたリンクのデータを送信させる情報処理装置の制御方法。