(57)【要約】【課題】通信異常の予兆の診断をデータ通信を継続しながら実行すること。【解決手段】情報処理装置１０は、通信装置１１と、伝送路１〜３を介して通信装置１１と接続された通信装置１２とを備える。通信装置１１は、送信部１１ａと制御部１１ｂと、を有する。送信部１１ａは、伝送路１〜３を用いた通信装置１２とのデータ通信が可能な状態で、伝送路１〜３の中から診断を行う対象の伝送路１が指定されると、伝送路１〜３のうち伝送路１以外の残りの伝送路２，３を用いて通信装置１２とのデータ通信が可能な状態を継続しながら、伝送路１にテスト信号を送信する。制御部１１ｂは、伝送路１におけるテスト信号の検出結果に基づいて、伝送路１における異常の予兆の有無を診断し、診断結果を出力する。【選択図】図１
2018056841.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信装置と、
複数の伝送路を介して前記第１の通信装置と接続された第２の通信装置と、を備え、
前記第１の通信装置は、
前記複数の伝送路を用いた前記第２の通信装置とのデータ通信が可能な状態で、前記複数の伝送路の中から診断を行う対象伝送路が指定されると、前記複数の伝送路のうち前記対象伝送路以外の残りの伝送路を用いて前記第２の通信装置とのデータ通信が可能な状態を継続しながら、前記対象伝送路にテスト信号を送信する送信部と、
前記対象伝送路における前記テスト信号の検出結果に基づいて、前記対象伝送路における異常の予兆の有無を診断し、診断結果を出力する制御部と、
を有する、
情報処理装置。
【請求項２】
前記制御部は、
前記第２の通信装置との通信開始時に、前記送信部に、前記複数の伝送路のそれぞれに前記テスト信号を送信させ、前記複数の伝送路のそれぞれにおける前記テスト信号の波形の立ち上がりにかかる第１の立ち上がり時間を検出し、
前記対象伝送路が指定され、前記対象伝送路に前記テスト信号が送信されると、前記対象伝送路における前記テスト信号の波形の立ち上がりにかかる第２の立ち上がり時間が、前記対象伝送路における前記第１の立ち上がり時間を基準として決定される判定範囲に含まれるかを判定し、その判定結果に基づいて前記対象伝送路における異常の予兆の有無を診断する、
請求項１記載の情報処理装置。
【請求項３】
前記送信部は、
複数の入力端子のうちの第１の入力端子に前記テスト信号を供給するテスト信号出力部と、
前記第２の通信装置へ送信するデータを、前記複数の入力端子のうち前記第１の入力端子を除く残りの複数の第２の入力端子に対して振り分けて供給し、前記複数の第２の入力端子の数は前記複数の伝送路の数と同じである、データ出力部と、
前記複数の入力端子のそれぞれと、前記複数の伝送路のそれぞれとの間の接続経路を切り替えるスイッチと、
を有し、
前記制御部は、
前記第２の通信装置に対するデータ送信を前記複数の伝送路を用いて実行させる場合、前記複数の第２の入力端子と前記複数の伝送路とが一対一で接続されるように前記スイッチを制御し、
前記第２の通信装置に対するデータ通信を前記残りの伝送路を用いて実行させる場合、前記複数の伝送路のうち前記対象伝送路の接続先を前記第１の入力端子に切り替えるように前記スイッチを制御する、
請求項１または２記載の情報処理装置。
【請求項４】
前記制御部は、前記複数の伝送路のうち、通信プロトコルで規定された代表伝送路として使用されていた第１の伝送路が前記対象伝送路として指定された場合、前記第１の伝送路の接続先を前記第１の入力端子に切り替えるとともに、前記複数の第２の入力端子のうち前記第１の伝送路に接続されていた第３の入力端子の接続先を、前記複数の伝送路のうち前記第１の伝送路以外の第２の伝送路に切り替えるように前記スイッチを制御し、前記第２の伝送路を前記代表伝送路として使用可能状態に維持させる、
請求項３記載の情報処理装置。
【請求項５】
前記複数の伝送路の中から前記対象伝送路を順次選択し、選択された前記対象伝送路を前記第１の通信装置に指定する診断制御装置をさらに有する、
請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記診断制御装置は、前記対象伝送路を指定して前記対象伝送路における診断を実行させる際に、前記複数の伝送路の数が所定の閾値以下の場合、前記第１の通信装置から前記第２の通信装置へのデータ通信に対する前記第２の通信装置からの応答のタイムアウト時間を長くするように、前記第１の通信装置に設定する、
請求項５記載の情報処理装置。
【請求項７】
前記情報処理装置は、
前記第１の通信装置と前記第２の通信装置とをそれぞれ含む第１の通信装置群と第２の通信装置群と、
送信するデータを前記第１の通信装置群に含まれる前記第１の通信装置と前記第２の通信装置群に含まれる前記第１の通信装置とに振り分ける第３の通信装置と、
を有し、
前記診断制御装置は、前記第１の通信装置群に含まれる前記第１の通信装置に前記対象伝送路を指定して前記対象伝送路における診断を実行させる際に、前記第１の通信装置群に含まれる前記第１の通信装置に対して振り分けるデータ量の比率を低下させるように前記第３の通信装置に指示する、
請求項５または６記載の情報処理装置。
【請求項８】
前記情報処理装置は、前記第１の通信装置と前記第２の通信装置とをそれぞれ含む複数の通信装置群を有し、
前記診断制御装置は、診断順情報に基づいて、前記複数の通信装置群のうちのどの通信装置群に含まれるどの伝送路を前記対象伝送路に指定するかを決定し、
前記診断順情報には、第１の通信経路上に前記複数の通信装置群のうちの第１の通信装置群が存在し、前記第１の通信経路から分岐して同一装置に接続する複数の第２の通信経路のそれぞれに前記複数の通信装置群のうち第２の通信装置群が存在する場合、前記第１の通信装置群に含まれる前記複数の伝送路の数と、前記第２の通信装置群のそれぞれに含まれる前記複数の伝送路の数の合計数との差または比率に基づいて、前記複数の通信装置群に含まれる前記複数の伝送路のそれぞれと、前記第２の通信装置群のそれぞれに含まれる前記複数の伝送路のそれぞれとの間で、同時に前記対象伝送路として指定する伝送路の組み合わせが登録される、
請求項５または６記載の情報処理装置。
【請求項９】
前記第１の通信装置は、前記複数の伝送路に加えて予備の伝送路を介して前記第２の通信装置と接続され、
前記送信部は、前記複数の伝送路を用いた前記第２の通信装置に対するデータ通信中に前記対象伝送路が指定されると、前記残りの伝送路と前記予備の伝送路とを用いて前記第２の通信装置に対するデータ通信を継続しながら、前記対象伝送路にテスト信号を送信する、
請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
第１の通信装置が複数の伝送路を用いて第２の通信装置とのデータ通信が可能な状態で、前記複数の伝送路の中から診断を行う対象伝送路を前記第１の通信装置に指定することで、前記複数の伝送路のうち前記対象伝送路以外の残りの伝送路を用いて前記第２の通信装置とのデータ通信が可能な状態を継続しながら、前記対象伝送路にテスト信号を送信する診断動作を前記第１の通信装置に実行させる制御部と、
前記対象伝送路における前記テスト信号の検出結果に基づく、前記対象伝送路における異常の予兆の有無の診断結果を、前記第１の通信装置から受信する受信部と、
を有する診断制御装置。
【請求項１１】
複数の伝送路を介して他の通信装置と接続された通信装置であって、
前記複数の伝送路を用いた前記他の通信装置とのデータ通信が可能な状態で、前記複数の伝送路の中から診断を行う対象伝送路が指定されると、前記複数の伝送路のうち前記対象伝送路以外の残りの伝送路を用いて前記他の通信装置とのデータ通信が可能な状態を継続しながら、前記対象伝送路にテスト信号を送信する送信部と、
前記対象伝送路における前記テスト信号の検出結果に基づいて、前記対象伝送路における異常の予兆の有無を診断し、診断結果を出力する制御部と、
を有する通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、診断制御装置および通信装置に関する。
【背景技術】
【０００２】
情報処理装置の内部や、情報処理装置と周辺機器との間では、信号を高速に伝送するためにシリアル伝送が行われることが多くなっている。このような高速シリアル伝送の代表的な規格としては、ＰＣＩ  Ｅｘｐｒｅｓｓ（Peripheral Component Interconnect Express。以下、“ＰＣＩｅ”と略称する）、ＳＡＳ（Serial Attached ＳＣＳＩ，ＳＣＳＩ：Small Computer System Interface）がある。また、これらの規格では、複数のシリアル伝送路を束ねて利用することで、データ伝送の高速化を図ることが可能となっている。
【０００３】
ＰＣＩｅを用いた技術として、例えば、次のような情報伝送装置が提案されている。この情報伝送装置は、省エネ切り替えイベントを検知すると、複数のレーンのうち１つのレーンを有効状態にし、残りのレーンを休止状態にして、省電力状態に移行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１４７７０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上記のような高速シリアル伝送により通信回路間で通信しているときに、突然通信不能になる場合がある。その原因としては、例えば、ＡＣ（Alternate Current）カップリングコンデンサなど、伝送路上のコンデンサの経年劣化がある。そこで、通信不能になるような異常の予兆を検出するための診断を行うことが考えられるが、診断を行うためには通信を中断しなければならないという問題がある。
【０００６】
１つの側面では、本発明は、通信異常の予兆の診断をデータ通信を継続しながら実行可能な情報処理装置、診断制御装置および通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、情報処理装置が提供される。この情報処理装置は、第１の通信装置と、複数の伝送路を介して第１の通信装置と接続された第２の通信装置と、を備える。第１の通信装置は、送信部と制御部とを有する。送信部は、複数の伝送路を用いた第２の通信装置とのデータ通信が可能な状態で、複数の伝送路の中から診断を行う対象伝送路が指定されると、複数の伝送路のうち対象伝送路以外の残りの伝送路を用いて第２の通信装置とのデータ通信が可能な状態を継続しながら、対象伝送路にテスト信号を送信する。制御部は、対象伝送路におけるテスト信号の検出結果に基づいて、対象伝送路における異常の予兆の有無を診断し、診断結果を出力する。
【０００８】
また、１つの態様では、診断制御装置が提供される。この診断制御装置は、制御部と受信部を有する。制御部は、第１の通信装置が複数の伝送路を用いて第２の通信装置とのデータ通信が可能な状態で、複数の伝送路の中から診断を行う対象伝送路を第１の通信装置に指定することで、複数の伝送路のうち対象伝送路以外の残りの伝送路を用いて第２の通信装置とのデータ通信が可能な状態を継続しながら、対象伝送路にテスト信号を送信する診断動作を第１の通信装置に実行させる。受信部は、対象伝送路におけるテスト信号の検出結果に基づく、対象伝送路における異常の予兆の有無の診断結果を、第１の通信装置から受信する。
【０００９】
また、１つの態様では、複数の伝送路を介して他の通信装置と接続された通信装置が提供される。この通信装置は、送信部と制御部とを有する。送信部は、複数の伝送路を用いた他の通信装置とのデータ通信が可能な状態で、複数の伝送路の中から診断を行う対象伝送路が指定されると、複数の伝送路のうち対象伝送路以外の残りの伝送路を用いて他の通信装置とのデータ通信が可能な状態を継続しながら、対象伝送路にテスト信号を送信する。制御部は、対象伝送路におけるテスト信号の検出結果に基づいて、対象伝送路における異常の予兆の有無を診断し、診断結果を出力する。
【発明の効果】
【００１０】
１つの側面では、通信異常の予兆の診断をデータ通信を継続しながら実行できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の情報処理装置の構成例および動作例を示す図である。
【図２】第２の実施の形態のストレージシステムの例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】ＤＥのハードウェア構成例を示す図である。
【図５】ストレージ装置内の回路間のレーン数の例を示す図である。
【図６】インタフェース回路の構成と接続形態の例を示す図である。
【図７】レーンの構成例を示す図である。
【図８】テスト信号送信時の電圧の推移を示す第１の図である。
【図９】テスト信号送信時の電圧の推移を示す第２の図である。
【図１０】スイッチの接続状態の第１の例を示す図である。
【図１１】スイッチの接続状態の第２の例を示す図である。
【図１２】スイッチの接続状態の第３の例を示す図である。
【図１３】ＣＭが備える処理機能の構成例を示すブロック図である。
【図１４】診断対象経路テーブルの例を示す図である。
【図１５】結果管理テーブルの例を示す図である。
【図１６】リンクアップ時の診断処理のフローチャートの例を示す図である。
【図１７】判定処理のフローチャートの例を示す図（その１）である。
【図１８】判定処理のフローチャートの例を示す図（その２）である。
【図１９】診断結果受信処理のフローチャートの例を示す図である。
【図２０】通常運用時の診断制御処理のシーケンスの例を示す図（その１）である。
【図２１】通常運用時の診断制御処理のシーケンスの例を示す図（その２）である。
【図２２】通常運用時にインタフェース回路が実行する診断処理の例を示すフローチャートである。
【図２３】異常対応処理の例を示すフローチャート（その１）である。
【図２４】異常対応処理の例を示すフローチャート（その２）である。
【図２５】ポート内のレーン数が少ない場合に行う診断処理のシーケンスの例を示す図である。
【図２６】第３の実施の形態のストレージ装置におけるレーン数の例を示す図である。
【図２７】第３の実施の形態におけるインタフェース回路の内部構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置の構成例および動作例を示す図である。図１に示す情報処理装置１０は、通信装置１１，１２を有する。通信装置１１と通信装置１２とは、伝送路１〜３を介して接続されている。通信装置１１，１２は、伝送路１〜３を介して通信を行う通信インタフェースである。また、伝送路１〜３は、それぞれシリアル伝送路である。そして、通信装置１１は、伝送路１〜３のうち複数の伝送路をまとめて用いて通信装置１２にデータを送信することが可能になっている。なお、通信装置１１と通信装置１２とは、３本の伝送路１〜３に限らず、２以上の任意の数の伝送路を介して接続されていればよい。
【００１３】
通信装置１１は、送信部１１ａと制御部１１ｂを有する。通信装置１１では、伝送路１〜３を用いた通信装置１２とのデータ通信が可能な状態で、伝送路１〜３の中から異常の予兆の有無の診断を行う対象伝送路が指定されると、次のような動作が行われる。なお、ここでは例として、伝送路１が対象伝送路に指定されたとする。また、データ通信可能な状態とは、例えば、データの送受信が可能な状態、データ送信中の状態、データ受信中の状態などを含み得る。
【００１４】
送信部１１ａは、伝送路１〜３のうち、対象伝送路に指定された伝送路１以外の残りの伝送路２，３を用いて通信装置１２とのデータ通信が可能な状態を継続しながら、伝送路１に診断用のテスト信号を送信する。ここで、送信部１１ａは、通信装置１２からデータを受信する機能を有してもよい。制御部１１ｂは、伝送路１におけるテスト信号の検出結果に基づいて、伝送路１における異常の予兆の有無を診断し、診断結果を出力する。これにより、通信装置１１は、伝送路１における異常の予兆の診断を、通信装置１２との通信を継続しながら実行できる。すなわち、伝送路１におけるデータ通信が正常に実行されている状態において、テスト信号の検出結果を基に伝送路１において通信の異常が発生する可能性が高いか否かを判定できる。
【００１５】
送信部１１ａは例えば、図１に示すように、テスト信号出力部１１ａ１、データ出力部１１ａ２およびスイッチ１１ａ３を有していてもよい。テスト信号出力部１１ａ１は、スイッチ１１ａ３が備える入力端子の１つにテスト信号を出力する。データ出力部１１ａ２は、スイッチ１１ａ３が備える、伝送路１〜３と同数の入力端子に、通信装置１２へ送信するデータを振り分けて供給する。スイッチ１１ａ３は、制御部１１ｂからの指示に応じて、これらの入力端子と伝送路１〜３との間の接続経路を切り替える。
【００１６】
制御部１１ｂは、通信装置１２へのデータ送信を伝送路１〜３を用いて実行させる場合、スイッチ１１ａ３の入力端子のうちデータ出力部１１ａ２と接続された各入力端子と、伝送路１〜３とが一対一で接続されるようにスイッチ１１ａ３を制御する。一方、制御部１１ｂは、例えば伝送路１の診断を実行させる場合、スイッチ１１ａ３における伝送路１の接続先を、スイッチ１１ａ３の入力端子のうちテスト信号出力部１１ａ１に接続された入力端子に切り替えるようにスイッチ１１ａ３を制御する。これにより、データ出力部１１ａ２による伝送路２，３を用いたデータ通信を継続させながら、伝送路１において診断を実行できる。
【００１７】
なお、対象伝送路は、例えば、診断制御装置１３から指定されてもよい。診断制御装置１３は、例えば、伝送路１〜３の中から対象伝送路を順次選択して通信装置１１に指定する。これにより、通信装置１１は、通信装置１２との通信を継続しながら、伝送路１〜３のそれぞれにおける通信異常の診断を実行できる。また、診断結果は、制御部１１ｂから診断制御装置１３に送信されてもよい。このような診断制御装置１３は、図１の例のように情報処理装置１０の内部に搭載されていてもよい。
【００１８】
伝送路１〜３における異常の予兆の診断は、例えば、次のように行われる。なお、テスト信号としては、例えば、パルス信号が用いられる。制御部１１ｂは、通信装置１１が通信装置１２と通信を開始する際に、送信部１１ａに、伝送路１〜３のそれぞれにテスト信号を送信させる。制御部１１ｂは、伝送路１〜３のそれぞれにおけるテスト信号の波形の立ち上がりにかかる立ち上がり時間を検出し、例えば通信装置１１内のメモリに保存する。
【００１９】
その後、通信装置１１と通信装置１２との通信が開始され、伝送路１〜３を用いて通信装置１２に対するデータ通信が行われている状態において、対象伝送路が指定される。対象伝送路として伝送路１が指定されたとすると、上記のように、送信部１１ａは、伝送路１〜３のうち伝送路１以外の残りの伝送路２，３を用いて通信装置１２に対するデータ通信を継続しながら、伝送路１に診断用のテスト信号を送信する。制御部１１ｂは、伝送路１において検出された、テスト信号の波形の立ち上がり時間が判定範囲に含まれるかを判定する。この判定範囲は、通信開始時に伝送路１において検出された立ち上がり時間を基準として決定される。制御部１１ｂは、検出された立ち上がり時間が判定範囲に含まれない場合、伝送路１に異常の予兆があると判定する。
【００２０】
このような診断方法によれば、制御部１１ｂは、ＡＣカップリングコンデンサなどの伝送路１上に挿入されたコンデンサにおいて、経年劣化が進んでいるか否かを判定できる。そして、通信装置１１は、上記のように残りの伝送路２，３を用いたデータ通信を継続しながら、このような診断を実行できる。
【００２１】
［第２の実施の形態］
次に、図１の情報処理装置１０の例としてストレージ装置を適用したストレージシステムについて説明する。
【００２２】
図２は、第２の実施の形態のストレージシステムの例を示す図である。ストレージシステムは、ストレージ装置１００およびホスト装置４００を含む。ストレージ装置１００とホスト装置４００とは、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。
【００２３】
ストレージ装置１００は、ＣＭ（Controller Module）２００ａ，２００ｂおよびＤＥ（Device Enclosure）３００を有する。ＣＭ２００ａ，２００ｂは、ホスト装置４００からの要求に応じて、ＤＥ３００に搭載された記憶装置へのアクセスを制御するストレージ制御装置である。ＣＭ２００ａ，２００ｂは、例えば、一方が運用系として動作し、他方が待機系として動作する。あるいは、ＣＭ２００ａ，２００ｂは、それぞれ個別の論理記憶領域に対するアクセス制御を実行してもよい。
【００２４】
ＤＥ３００は、ホスト装置４００からのアクセス対象の記憶装置として、ＨＤＤ（Hard Disk Drive）を備えたディスクアレイ装置である。なお、ＤＥ３００は、ＨＤＤに代えてＳＳＤ（Solid State Drive）などの他の種類の記憶装置を搭載してもよい。ホスト装置４００は、ＣＭ２００ａまたはＣＭ２００ｂを介してＤＥ３００に搭載されているＨＤＤにアクセスする。
【００２５】
図３は、ＣＭのハードウェア構成例を示す図である。ＣＭ２００ａは、ＣＰＵ（Central Processing Unit）２０１ａ、ＲＡＭ（Random Access Memory）２０２ａ、ＰＣＩｅスイッチ２０３ａ、ＣＡ（Channel Adapter）２０４ａ，ＩＯＣ（In/Out Controller）２０５ａ、ＳＡＳエクスパンダ２０６ａ、ＰＣＨ（Platform Controller Hub）２０７ａ、ＳＳＤ２０８ａ、ＦＰＧＡ（Field Programmable Gate Array）２０９ａおよびフラッシュメモリ２０９ａ１を有する。ＣＭ２００ｂは、ＣＰＵ２０１ｂ、ＲＡＭ２０２ｂ、ＰＣＩｅスイッチ２０３ｂ、ＣＡ２０４ｂ、ＩＯＣ２０５ｂ、ＳＡＳエクスパンダ２０６ｂ、ＰＣＨ２０７ｂ、ＳＳＤ２０８ｂ、ＦＰＧＡ２０９ｂおよびフラッシュメモリ２０９ｂ１を有する。ＣＭ２００ａとＣＭ２００ｂは、同じハードウェア構成である。そこで、第２の実施の形態では主としてＣＭ２００ａのハードウェア構成について説明し、ＣＭ２００ｂのハードウェア構成の説明については適宜省略する。
【００２６】
ＣＰＵ２０１ａは、ＣＭ２００ａ全体を統括的に制御する。ＣＰＵ２０１ａは、複数のプロセッシング要素を含むマルチプロセッサであってもよい。ＲＡＭ２０２ａは、ＣＭ２００ａの主記憶装置として使用され、ＣＰＵ２０１ａに実行させるプログラムの少なくとも一部や、このプログラムによる処理に用いられる各種データを一時的に記憶する。
【００２７】
ＰＣＩｅスイッチ２０３ａは、ＰＣＩｅバスを介してＣＰＵ２０１ａと接続されている。また、ＰＣＩｅスイッチ２０３ａは、ＰＣＩｅケーブルを介して、他方のＣＭ２００ｂ内のＰＣＩｅスイッチ２０３ｂと接続されている。ここで、ＣＰＵ２０１ａとＣＰＵ２０１ｂとは、ＰＣＩｅスイッチ２０３ａとＰＣＩｅスイッチ２０３ｂとの間の通信経路を通じて通信できる。例えば、ＣＰＵ２０１ａ，２０１ｂは、ＲＡＭ２０２ａ，２０２ｂにそれぞれ記憶されたデータを、上記通信経路を通じて他方のＣＭのＣＰＵに送信することができる。
【００２８】
ＣＡ２０４ａは、ＰＣＩｅバスを介してＣＰＵ２０１ａと接続されている。ＣＡ２０４ａは、ＣＰＵ２０１ａとホスト装置４００との間でデータを送受信するインタフェース処理を実行する。
【００２９】
ＩＯＣ２０５ａは、ＰＣＩｅバスを介してＣＰＵ２０１ａと接続されている。また、ＩＯＣ２０５ａは、ＳＡＳケーブルを介して、ＳＡＳエクスパンダ２０６ａおよびＳＡＳエクスパンダ２０６ｂと接続されている。ＩＯＣ２０５ａは、ＣＰＵ２０１ａとＤＥ３００内のＨＤＤとの間のインタフェース処理を実行する。
【００３０】
ＳＡＳエクスパンダ２０６ａは、ＩＯＣ２０５ａに接続されているとともに、ＳＡＳケーブルを介してＩＯＣ２０５ｂにも接続されている。また、ＳＡＳエクスパンダ２０６ａは、ＳＡＳケーブルを介して、ＤＥ３００と接続されている。ＳＡＳエクスパンダ２０６ａは、ＩＯＣ２０５ａ，２０５ｂとＤＥ３００内のＨＤＤとの間でデータを中継する。
【００３１】
ここで、ＩＯＣ２０５ａは、ＳＡＳエクスパンダ２０６ａを通じてＤＥ３００と接続されている。これとともに、ＩＯＣ２０５ａは、ＳＡＳエクスパンダ２０６ｂを通じてＤＥ３００と接続されている。このように、ＩＯＣ２０５ａとＤＥ３００とが２つのＳＡＳエクスパンダ２０６ａ，２０６ｂを通じて接続されることで、ＩＯＣ２０５ａからＤＥ３００へのアクセス経路が冗長化されている。
【００３２】
同様に、ＩＯＣ２０５ｂは、ＳＡＳエクスパンダ２０６ｂを通じてＤＥ３００と接続されている。これとともに、ＩＯＣ２０５ｂは、ＳＡＳエクスパンダ２０６ａを通じてＤＥ３００と接続されている。このように、ＩＯＣ２０５ｂとＤＥ３００とが２つのＳＡＳエクスパンダ２０６ａ，２０６ｂを通じて接続されることで、ＩＯＣ２０５ｂからＤＥ３００へのアクセス経路も冗長化されている。
【００３３】
ＰＣＨ２０７ａは、ＣＰＵ２０１ａとＳＳＤ２０８ａおよびＦＰＧＡ２０９ａとの間で、データを送受信する。ＳＳＤ２０８ａは、ＣＭ２００ａの補助記憶装置として使用され、ＣＰＵ２０１ａにより実行されるファームウェア等を記憶する。なお、補助記憶装置としては、例えば、ＨＤＤ等の他の種類の不揮発性記憶装置が使用されてもよい。
【００３４】
ＦＰＧＡ２０９ａは、ＣＭ２００ａ内の各部における異常の有無を監視する。本実施の形態では、このような異常監視機能の１つとして、ＦＰＧＡ２０９ａは、ストレージ装置１００内のＰＣＩｅおよびＳＡＳの伝送路の異常を検出するための診断を制御する機能を有する。なお、ＦＰＧＡ２０９ａは、例えば、プログラムを実行可能なプロセッサや、プログラムなどのデータを一時的に蓄積可能なメモリを有している。この場合、ＦＰＧＡ２０９ａの異常監視機能は、例えば、フラッシュメモリ２０９ａ１に記憶されたプログラムをＦＰＧＡ２０９ａが有するプロセッサが実行することによって実現される。フラッシュメモリ２０９ａ１は、ＦＰＧＡ２０９ａが実行する処理に用いられる情報を記憶する。
【００３５】
また、ＦＰＧＡ２０９ａとＦＰＧＡ２０９ｂとは互いに接続されており、例えば、一方のフラッシュメモリ２０９ａ１に格納されたデータを他方のフラッシュメモリ２０９ｂ１にミラーリングすることが可能になっている。
【００３６】
図４は、ＤＥのハードウェア構成例を示す図である。ＤＥ３００は、ＳＡＳエクスパンダ３１１ａ，３１１ｂと、ＨＤＤ３１２ａ，３１２ｂ，３１２ｃ，・・・とを備える。
ＳＡＳエクスパンダ３１１ａは、ＳＡＳエクスパンダ２０６ａに接続されているとともに、ＳＡＳケーブルを介してＨＤＤ３１２ａ，３１２ｂ，３１２ｃ，・・・と接続されている。ＳＡＳエクスパンダ３１１ａは、ＳＡＳエクスパンダ２０６ａと、ＨＤＤ３１２ａ，３１２ｂ，３１２ｃ，・・・との間でデータを中継する。
【００３７】
ＳＡＳエクスパンダ３１１ｂは、ＳＡＳエクスパンダ２０６ｂに接続されているとともに、ＳＡＳケーブルを介してＨＤＤ３１２ａ，３１２ｂ，３１２ｃ，・・・と接続されている。ＳＡＳエクスパンダ３１１ｂは、ＳＡＳエクスパンダ２０６ｂと、ＨＤＤ３１２ａ，３１２ｂ，３１２ｃ，・・・との間でデータを中継する。
【００３８】
ところで、ＰＣＩｅおよびＳＡＳの通信では、１つのポートでシリアル伝送路を複数束ねて利用することで、データ伝送の高速化を図ることが可能となっている。ここでいうシリアル伝送路とは、送信用の差動信号線ペアと、受信用の差動信号線ペアの合計４本の信号線を含む。このようなシリアル伝送路は、ＰＣＩｅでは「レーン」と呼ばれる。以下、説明を簡単にするために、ＰＣＩｅのシリアル伝送路だけでなく、ＳＡＳのシリアル伝送路についても「レーン」と記載する。
【００３９】
図５は、ストレージ装置内の回路間のレーン数の例を示す図である。
ＣＰＵ２０１ａとＰＣＩｅスイッチ２０３ａとの間は、４つのレーンにより接続される。ＣＰＵ２０１ａとＣＡ２０４ａとの間は、４つのレーンにより接続される。ＣＰＵ２０１ａとＩＯＣ２０５ａとの間は、８つのレーンにより接続される。ＣＰＵ２０１ａとＰＣＨ２０７ａとの間は、４つのレーンにより接続される。ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ａとの間は、４つのレーンにより接続される。ＳＡＳエクスパンダ２０６ａとＤＥ３００のＳＡＳエクスパンダ３１１ａ（図４参照）との間は、１つのレーンにより接続される。
【００４０】
ＣＰＵ２０１ｂとＰＣＩｅスイッチ２０３ｂとの間は、４つのレーンにより接続される。ＣＰＵ２０１ｂとＣＡ２０４ｂとの間は、４つのレーンにより接続される。ＣＰＵ２０１ｂとＩＯＣ２０５ｂとの間は、８つのレーンにより接続される。ＣＰＵ２０１ｂとＰＣＨ２０７ｂとの間は、４つのレーンにより接続される。ＩＯＣ２０５ｂとＳＡＳエクスパンダ２０６ｂとの間は、４つのレーンにより接続される。ＳＡＳエクスパンダ２０６ｂとＤＥ３００のＳＡＳエクスパンダ３１１ｂ（図４参照）との間は、１つのレーンにより接続される。
【００４１】
ＰＣＩｅスイッチ２０３ａとＰＣＩｅスイッチ２０３ｂとの間は、４つのレーンにより接続される。ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ｂとの間は、４つのレーンにより接続される。ＩＯＣ２０５ｂとＳＡＳエクスパンダ２０６ａとの間は、４つのレーンにより接続される。
【００４２】
また、図５に示すように、各ポートには、そのポートに接続された伝送路を通じた通信を実行するためのインタフェース回路が配置されている。ＰＣＩｅのポートには、ＰＣＩｅに基づく通信を実行するＰＣＩｅインタフェースが配置され、ＳＡＳのポートには、ＳＡＳに基づく通信を実行するＳＡＳインタフェースが配置される。
【００４３】
図５の例では、ＣＰＵ２０１ａ，２０１ｂ、ＰＣＩｅスイッチ２０３ａ，２０３ｂ、ＣＡ２０４ａ，２０４ｂ、ＩＯＣ２０５ａ，２０５ｂ、ＰＣＨ２０７ａ，２０７ｂは、ＰＣＩｅインタフェースを有する。ＩＯＣ２０５ａ，２０５ｂ、ＳＡＳエクスパンダ２０６ａ，２０６ｂ、ＳＡＳエクスパンダ３１１ａ，３１１ｂは、ＳＡＳインタフェースを有する。ＩＯＣ２０５ａ，２０５ｂは、ＰＣＩｅインタフェースとＳＡＳインタフェースとを有する。
【００４４】
ＰＣＩｅインタフェースとＳＡＳインタフェースの基本的な構成は同じである。そのため、以下の説明では、これら２種類のインタフェース回路を区別せずに説明する。
図６は、インタフェース回路の構成と接続形態の例を示す図である。図６では例として、４つのレーン２２ａ〜２２ｄによって接続されたインタフェース回路２１ａ，２１ｂについて示している。すなわち、図６の例では、インタフェース回路２１ａ，２１ｂは、最大４レーンを１つの論理的な通信ポートとして使用して互いに通信できる。
【００４５】
インタフェース回路２１ａは、送受信部２１０ａ〜２１０ｄ、制御回路２２０ａ、メモリ２３０ａ、パルスジェネレータ（ＰＧ）２４０ａ、ＭＵＸ／ＤＥＭＵＸ（Multiplexer／Demultiplexer）２５０ａおよびスイッチ２６０ａを有する。インタフェース回路２１ｂは、送受信部２１０ｅ〜２１０ｈ、制御回路２２０ｂ、メモリ２３０ｂ、パルスジェネレータ２４０ｂ、ＭＵＸ／ＤＥＭＵＸ２５０ｂおよびスイッチ２６０ｂを有する。
【００４６】
送受信部２１０ａは、レーン２２ａを介して送受信部２１０ｅと接続されている。送受信部２１０ｂは、レーン２２ｂを介して送受信部２１０ｆと接続されている。送受信部２１０ｃは、レーン２２ｃを介して送受信部２１０ｇと接続されている。送受信部２１０ｄは、レーン２２ｄを介して送受信部２１０ｈと接続されている。送受信部２１０ａ〜２１０ｈのそれぞれは、接続された他方の送受信部との間のデータ送受信を制御する。また、前述のように、レーン２２ａ，２２ｂ，２２ｃ，２２ｄは、それぞれ差動信号線ペアのセットであり、一方からの送信用の信号線ペア（２本）と、他方からの送信用の信号線ペア（２本）とを含む。
【００４７】
なお、送受信部２１０ａ〜２１０ｄは、レーン２２ａ〜２２ｄをそれぞれ構成する差動信号ペアのセットと、共通のコネクタを介して接続する。同様に、送受信部２１０ｅ〜２１０ｈは、レーン２２ａ〜２２ｄをそれぞれ構成する差動信号ペアのセットと、共通のコネクタを介して接続する。
【００４８】
制御回路２２０ａは、パルスジェネレータ２４０ａ、ＭＵＸ／ＤＥＭＵＸ２５０ａおよびスイッチ２６０ａを制御する。制御回路２２０ａは、ＣＰＵ２０１ａと通信可能になっており、例えば、ＣＰＵ２０１ａからの指示に応じて、使用するレーン数の切り替えや後述するレーンの診断制御などを実行する。メモリ２３０ａは、制御回路２２０ａの処理で用いられる各種のデータを記憶する。なお、制御回路２２０ａはプロセッサを有し、制御回路２２０ａの処理の少なくとも一部は、メモリ２３０ａに記憶されたファームウェアプログラムを制御回路２２０ａのプロセッサが実行することで実現されてもよい。
【００４９】
パルスジェネレータ２４０ａは、レーンにおける異常および異常予兆の診断用のテスト信号（パルス信号）を出力する回路である。ＭＵＸ／ＤＥＭＵＸ２５０ａは、インタフェース回路２１ｂに送信する送信データを送受信部２１０ａ〜２１０ｄのいずれかに振り分ける。また、ＭＵＸ／ＤＥＭＵＸ２５０ａは、インタフェース回路２１ｂから受信した受信データを送受信部２１０ａ〜２１０ｄから受信する。
【００５０】
スイッチ２６０ａは、ＭＵＸ／ＤＥＭＵＸ２５０ａからレーン２２ａ〜２２ｄのそれぞれに対する出力端子およびパルスジェネレータ２４０ａの出力端子と、送受信部２１０ａ〜２１０ｄのそれぞれの入力端子との間の経路を切り替える。このスイッチ２６０ａの詳細については後述する。なお、送受信部２１０ａ〜２１０ｄによって受信された信号は、スイッチ２６０ａを介さずにＭＵＸ／ＤＥＭＵＸ２５０ａに直接入力される。
【００５１】
制御回路２２０ｂ、メモリ２３０ｂ、パルスジェネレータ２４０ｂ、ＭＵＸ／ＤＥＭＵＸ２５０ｂおよびスイッチ２６０ｂの機能は、制御回路２２０ａ、メモリ２３０ａ、パルスジェネレータ２４０ａ、ＭＵＸ／ＤＥＭＵＸ２５０ａおよびスイッチ２６０ａと同じなので、説明を省略する。
【００５２】
図７は、レーンの構成例を示す図である。図７では例として、送受信部２１０ａと送受信部２１０ｅとを接続するレーン２２ａについて示している。
送受信部２１０ａは、Ｔｘドライバ２１１ａ、Ｒｘドライバ２１２ａおよび検出回路２１３ａを有する。Ｔｘドライバ２１１ａは、ＭＵＸ／ＤＥＭＵＸ２５０ａからスイッチ２６０ａを介して入力された送信データ、または、パルスジェネレータ２４０ａからスイッチ２６０ａを介して入力されたテスト信号を、差動信号に変換して出力する。Ｒｘドライバ２１２ａは、送受信部２１０ｅから受信した差動信号を所定形式の信号に変換し、ＭＵＸ／ＤＥＭＵＸ２５０ａに出力する。
【００５３】
検出回路２１３ａは、Ｔｘドライバ２１１ａにテスト信号が入力された場合に、Ｔｘドライバ２１１ａから出力される差動信号の電圧を監視し、電圧が所定の下限閾値から所定の上限閾値に到達するまでの時間を検出し、制御回路２２０ａに通知する。下限閾値は、テスト信号の立ち上がり開始タイミングを検出するための閾値であり、上限閾値は、テスト信号の立ち上がり完了タイミングを検出するための閾値である。したがって、検出回路２１３ａは、下限閾値と上限閾値とを用いることで、テスト信号の立ち上がり時間を検出できる。
【００５４】
なお、実際には、送受信部２１０ａは例えば、シリアライザ、Ｔｘイコライザ、Ｒｘイコライザ、デシリアライザなどをさらに有している。シリアライザは、入力された送信データまたはテスト信号をシリアル化してＴｘドライバ２１１ａに出力する。Ｔｘイコライザは、Ｔｘドライバ２１１ａからの出力信号の波形を整形する。この波形整形の種類としては、例えば、プリエンファシス調整とプリシュート調整とがある。また、検出回路２１３ａは、Ｔｘイコライザからの出力されるテスト信号の立ち上がり時間を検出してもよい。Ｒｘイコライザは、送受信部２１０ｅから受信した差動信号の波形を整形し、Ｒｘドライバ２１２ａに出力する。この波形生成の方法としては、ＤＦＥ（Decision Feedback Equalization）やＦＦＥ（Feed-Forward Equalization）などの方法が用いられる。デシリアライザは、Ｒｘドライバ２１２ａから出力されたシリアル信号をパラレル信号に変換し、ＭＵＸ／ＤＥＭＵＸ２５０ａに出力する。
【００５５】
一方、送受信部２１０ｅは、Ｔｘドライバ２１１ｂ、Ｒｘドライバ２１２ｂおよび検出回路２１３ｂを有する。Ｔｘドライバ２１１ｂ、Ｒｘドライバ２１２ｂおよび検出回路２１３ｂの機能は、それぞれＴｘドライバ２１１ａ、Ｒｘドライバ２１２ａおよび検出回路２１３ａと同様であるので、ここでは説明を省略する。
【００５６】
また、送受信部２１０ａから送受信部２１０ｅへの差動信号線においては、送信端に、ＡＣカップリングコンデンサＣ１ａ，Ｃ２ａが直列に接続されており、受信端に、一端がグランドに接続された終端抵抗Ｒ１ａ，Ｒ２ａの他端が接続されている。ＡＣカップリングコンデンサＣ１ａ，Ｃ２ａは、送信側の送受信部２１０ａの内部または外部に設けられており、ＤＣ（Direct Current）信号成分を除去する。終端抵抗Ｒ１ａ，Ｒ２ａは、通信規格で決められた抵抗値（例えば５０Ω）を有しており、受信側の送受信部２１０ｅの内部に設けられて、受信端での送信信号の反射を抑制する。同様に、送受信部２１０ｅから送受信部２１０ａへの差動信号線においては、送信端に、ＡＣカップリングコンデンサＣ１ｂ，Ｃ２ｂが直列に接続されており、受信端に、一端がグランドに接続された終端抵抗Ｒ１ｂ，Ｒ２ｂの他端が接続されている。
【００５７】
次に、インタフェース回路において実行されるレーンの診断について説明する。インタフェース回路は、パルスジェネレータからのパルス状のテスト信号を各レーンに送信して差動信号線の送信端における電圧の立ち上がりタイミングを検出することで、レーンの診断を行うことができる。この診断としては、レーンの異常を検出するための診断と、レーンの異常予兆を検出するための診断とがある。前者の診断は、相手側のインタフェース回路が新たに接続された直後のリンクアップ時に実行される。後者の診断は、基本的に、リンクアップ後に相手側との通信が実行されている通常運用時に実行される。
【００５８】
以下、例として、インタフェース回路２１ａの送受信部２１０ａにおける診断の方法について説明する。
図８は、テスト信号送信時の電圧の推移を示す第１の図である。この図８に示す電圧は、送受信部２１０ａのＴｘドライバ２１１ａからテスト信号が送信された際に検出回路２１３ａによって検出される差動信号の電圧である。また、図８における時間の原点（時刻０）は、検出回路２１３ａによって検出された電圧が所定の下限閾値を超えたタイミング（立ち上がり開始タイミング）である。さらに、電圧ｖ１は、立ち上がり完了タイミングを判定するための上限閾値である。なお、以上の点は図９についても同様である。
【００５９】
図８において、時間ｔ１は、インタフェース回路２１ａに相手側のインタフェース回路が接続されていない状態でのテスト信号の立ち上がり時間の一例である。一方、時間ｔ２は、インタフェース回路２１ａに相手側のインタフェース回路（ここでは、図５のインタフェース回路２１ｂとする）が接続されている状態でのテスト信号の立ち上がり時間の一例である。相手側のインタフェース回路２１ｂが接続された場合、差動信号線にはインタフェース回路２１ｂの終端抵抗Ｒ１ａ，Ｒ２ａが接続されるため、テスト信号の立ち上がり時間が長くなる。
【００６０】
ＰＣＩｅやＳＡＳなどのシリアル通信規格では、リンクアップ時において、このような終端抵抗の有無によるテスト信号の立ち上がり時間の違いから、相手側のインタフェース回路が接続されているか否かを判定するデバイス検出手順が規定されている。この手順では、終端抵抗などの回路の規定に基づいて立ち上がり時間の閾値が決められており、リンクアップ時におけるテスト信号の立ち上がり時間の検出値が閾値以上の場合に、相手側のインタフェース回路が接続されていると判定される。本実施の形態のインタフェース回路２１ａにも、このようなデバイス検出機能が実装されている。
【００６１】
これに加えて、インタフェース回路２１ａには、相手側のインタフェース回路が接続されていると判定された場合に、レーンに異常が発生しているか否かを診断する機能も実装されている。この診断では、インタフェース回路２１ａの制御回路２２０ａは、リンクアップ時に検出されたテスト信号の立ち上がり時間が時間Ｌ１から時間Ｌ２の範囲（以下、第１の正常範囲）に含まれるか否かを判定する。制御回路２２０ａは、検出された立ち上がり時間が第１の正常範囲に含まれる場合、レーンを正常と判定し、含まれない場合、レーンを異常と判定する。例えば、制御回路２２０ａは、立ち上がり時間として図８に示す時間ｔ３が検出された場合、時間ｔ３が第１の正常範囲に含まれないため、レーンを異常と判定する。
【００６２】
この診断により、レーン上のデバイスに発生した何らかの異常に起因する立ち上がり時間の異常が検出される。立ち上がり時間の異常が発生した場合、診断対象レーンにおいて信号を正常に送信できない可能性がある。上記診断により異常が検出された場合、例えば、異常が発生したレーンを使用せずに通信を行うことで、通信異常の発生を回避できる。なお、このような立ち上がり時間の異常の原因としては、例えば、ＳＥＲＤＥＳ（Serializer／Deserializer）回路など、送受信部２１０ａや相手側の送受信部２１０ｂの内部回路の製造バラツキがある。
【００６３】
閾値となる時間Ｌ１，Ｌ２としては、ＰＣＩｅインタフェースとＳＡＳインタフェースのそれぞれについて、あらかじめ決められた時間が用いられる。第１の正常範囲は、少なくとも、規格上の正常な立ち上がり時間を含むように設定される。また、時間Ｌ１は、デバイス検出手順において相手側のインタフェース回路が接続されていると判定するための閾値の時間より長い時間とされる。これにより、相手側のインタフェース回路が接続されていると判定された場合でも、立ち上がり時間の異常が発生しているか否かを判断することができる。
【００６４】
図９は、テスト信号送信時の電圧の推移を示す第２の図である。この図９を用いて、レーンの異常予兆を検出するための診断について説明する。
図７に示したＡＣカップリングコンデンサＣ１ａ，Ｃ２ａ，Ｃ１ｂ，Ｃ２ｂのような伝送路上のコンデンサは本来、数百ＭΩ程度の抵抗値を有している。しかし、このようなコンデンサにクラックなどの異常が発生すると、抵抗値は徐々に低下していく。コンデンサの経年劣化が進み、異常の程度が悪化していくと、抵抗値は数百Ω程度まで下がってしまう場合がある。
【００６５】
このように抵抗値が低下していくと、差動信号の立ち上がり時間が短くなっていき、通常運用中に突然リンクダウンが発生する確率が高くなっていく。そこで、インタフェース回路２１ａは、通常運用中に各リンクにテスト信号を送信し、その立ち上がり時間を検出する。インタフェース回路２１ａの制御回路２２０ａは、検出された立ち上がり時間が、上記の第１の正常範囲より狭い第２の正常範囲に含まれるか否かを判定し、第２の正常範囲に含まれない場合には、そのレーンに異常の予兆があると判定する。
【００６６】
第２の正常範囲は、次のように設定される。制御回路２２０ａは、リンクアップ時に検出された時間ｔ２を基準に第２の正常範囲を決定する。具体的は、制御回路２２０ａは、時間ｔ２に所定の値を減算することで、第２の正常範囲の下限の時間Ｌ３を算出し、時間ｔ２に同一の値を加算することで、第２の正常範囲の上限の時間Ｌ４を算出する。このように、リンクアップ時に検出された時間ｔ２を基準に第２の正常範囲が設定されることで、コンデンサの経年劣化の進み具合を推定できる。
【００６７】
また、前述のように、第２の正常範囲は、第１の正常範囲より狭く設定される。これにより、リンクアップ時には異常と判定されず、現在通信が可能なレーンについても、その後の時間経過に伴う異常の予兆を検出できる。例えば、図９に示すように、通常運用中にある診断対象レーンにおいて、テスト信号の立ち上がり時間として時間ｔ４が検出されたとする。時間ｔ４は第１の正常範囲に含まれるので、リンクアップ時には異常と判定されず、診断対象レーンでは現在でも正常な通信が可能となっている。しかし、立ち上がり時間が第２の正常範囲に含まれないと判定されることで、異常予兆があり、その後に通信不能になる可能性が高いことを認識できる。
【００６８】
このような異常予兆を検出できることで、ＣＭ２００ａ（またはＣＭ２００ｂ）は、その後に発生し得るレーンの通信異常の影響を低減するための様々な対策をとることができる。例えば、ＣＭ２００ａは、異常予兆が検出されたレーンでの通信を停止して、そのレーンで通信不能になることによるポートのリンクダウンの発生を防止できる。あるいは、ＣＭ２００ａは、異常予兆が検出された場合に警告を発して、インタフェース回路や伝送路上の部品の交換をユーザに促すこともできる。
【００６９】
ところで、上記の異常予兆の診断は、通常運用時に実行される。従来のインタフェース回路は、通常運用時にポートでの通信を停止させずに診断を行うことは不可能であった。一方、ＰＣＩｅなどのシリアル通信規格では、複数束ねたシリアル伝送路のうちの少なくとも１つにおける通信を停止させる省電力状態（Ｌ０ｓ状態）が規定されている。
【００７０】
そこで、本実施の形態のインタフェース回路は、上記のＬ０ｓ状態への遷移機能と、診断対象レーンを他のレーンと物理的に分離するためのスイッチとを用いて、診断対象レーン以外のレーンでの通信を継続しながら、診断対象レーンで診断を行うことを可能とする。
【００７１】
図１０は、スイッチの接続状態の第１の例を示す図である。ここではまず、図１０を用いて、インタフェース回路２１ａ内のスイッチ２６０ａおよびその周辺の構成例について説明する。
【００７２】
ＭＵＸ／ＤＥＭＵＸ２５０ａは、バイト・ストライピング２５１を有する。バイト・ストライピング２５１は、送信データをレーン＃０〜＃３のいずれかに振り分ける。ここで、レーン＃０〜＃３とは、通信プロトコル上で用いられるレーンの識別番号である。例えば、インタフェース回路２１ａを制御するドライバは、インタフェース回路２１ａにレーンを指定する場合、レーン＃０〜＃３という識別番号を用いる。
【００７３】
スイッチ２６０ａは、入力端子２６１〜２６５と出力端子２６６〜２６９とを有する。スイッチ２６０ａは、制御回路２２０ａからの指示に応じて、入力端子２６１〜２６５と出力端子２６６〜２６９との間の接続を切り替える。入力端子２６１には、パルスジェネレータ２４０ａからのテスト信号が入力される。入力端子２６２〜２６５には、それぞれバイト・ストライピング２５１のレーン＃０〜＃３からの出力データが入力される。出力端子２６６〜２６９からの出力信号は、それぞれ送受信部２１０ａ〜２１０ｄに入力される。
【００７４】
図１０は、診断が行われていない場合におけるスイッチ２６０ａの接続状態を示している。この状態では、入力端子２６２〜２６５がそれぞれ出力端子２６６〜２６９に接続されている。この場合、バイト・ストライピング２５１のレーン＃０〜＃３からの出力データは、それぞれレーン２２ａ〜２２ｄを通じて出力される。この状態では、レーン２２ａ〜２２ｄをそれぞれレーン＃０〜＃３と認識しながら通信が行われる。
【００７５】
図１１は、スイッチの接続状態の第２の例を示す図である。この図１１は、制御回路２２０ａに対してレーン＃１の診断が指示された場合におけるスイッチ２６０ａの接続状態を示している。この場合、スイッチ２６０ａは、制御回路２２０ａからの指示に応じて、出力端子２６７の接続先を入力端子２６３から入力端子２６１に切り替える。これにより、レーン２２ａ，２２ｃ，２２ｄでの通信を継続しながら、パルスジェネレータ２４０ａからのテスト信号を送受信部２１０ｂに供給してレーン２２ｂの診断を行うことが可能になる。
【００７６】
実際の処理では、制御回路２２０ａは、インタフェース回路２１ａの状態を、通常状態（Ｌ０状態）から、レーン＃１を休止させた省電力状態（Ｌ０ｓ状態）に遷移させる。これにより、インタフェース回路２１ａは、通信プロトコルを変更することなく、レーン＃１を使用せずに残りのレーン＃０，＃２，＃３を用いて通信を継続できる。そして、遷移が完了した後、制御回路２２０ａは、出力端子２６７の接続先を入力端子２６３から入力端子２６１に切り替えるようにスイッチ２６０ａに指示する。切り替えが完了すると、制御回路２２０ａは、パルスジェネレータ２４０ａにテスト信号を出力させる。これにより、通信に使用されていないレーン＃１に対応付けられていたレーン２２ｂにおける診断を実行できる。
【００７７】
図１２は、スイッチの接続状態の第３の例を示す図である。この図１２は、制御回路２２０ａに対してレーン＃０の診断が指示された場合におけるスイッチ２６０ａの接続状態を示している。この場合、診断対象レーンは、レーン＃０に対応付けられているレーン２２ａとなる。
【００７８】
ここで、ＰＣＩｅ規格では、代表レーンであるレーン＃０を使用せずに通信することはできない。そこで、制御回路２２０ａは、レーン＃０の接続先を、診断対象のレーン２２ａから他のレーンに切り替えるようにスイッチ２６０ａに指示する。これにより、レーン＃０での通信を継続しながら、それまでレーン＃０に対応付けられていた診断対象レーンにおける診断を実行できるようになる。
【００７９】
具体的には、制御回路２２０ａの制御によって、例えば図１２に示すような状態に切り替えが行われる。まず、レーン＃３を休止させた省電力状態（Ｌ０ｓ状態）に遷移し、レーン＃３が通信に使用されない状態とされる。そして、レーン＃０に接続する入力端子２６２の接続先が、診断対象のレーン２２ａに接続する出力端子２６６から他の出力端子２６７に切り替えられる。また、この切り替えに伴い、入力端子２６３，２６４の接続先も、それぞれ出力端子２６８，２６９に切り替えられる。これにより、レーン２２ｂ〜２２ｄをそれぞれレーン＃０〜＃２を認識した状態で通信が継続される。
【００８０】
そして、入力端子２６１と出力端子２６６とが接続されて、パルスジェネレータ２４０ａから出力されたテスト信号が送受信部２１０ａに送信され、レーン２２ａにおける診断が行われる。このような制御により、通信プロトコルを変更せずに、レーン＃０を用いた通信を継続しつつ、レーン＃０に対応付けられていた診断対象レーンにおける診断を実行できる。
【００８１】
次に、図１３は、ＣＭが備える処理機能の構成例を示すブロック図である。図１３では例として、ＣＭ２００ａの処理機能について示している。
ＣＭ２００ａは、診断制御部２０９ａａ、動作制御部２０９ａｂ、ドライバ２０１ａａ，２０１ａｂを有する。診断制御部２０９ａａおよび動作制御部２０９ａｂは、ＦＰＧＡ２０９ａによって実現され、ドライバ２０１ａａ，２０１ａｂは、ＣＰＵ２０１ａによって実現される。例えば、プログラムを実行可能なプロセッサ２０９ａｃをＦＰＧＡ２０９ａが備える場合、診断制御部２０９ａａおよび動作制御部２０９ａｂの処理は、プロセッサ２０９ａｃが所定のファームウェアプログラムを実行することで実現される。また、ドライバ２０１ａａ，２０１ａｂの処理は、ＣＰＵ２０１ａが所定のファームウェアプログラムを実行することで実現される。
【００８２】
また、フラッシュメモリ２０９ａ１には、ＦＰＧＡ２０９ａの処理の実行時に参照される情報として、診断対象経路テーブル２７０と結果管理テーブル２８０が格納される。診断対象経路テーブル２７０には、ストレージ装置１００内のインタフェース回路およびレーンの診断順を示す情報が登録される。結果管理テーブル２８０には、各インタフェース回路における診断結果と、レーンの使用状態を示す情報が登録される。なお、結果管理テーブル２８０は、シリアル伝送路を介して接続されたインタフェース回路のペアごとに作成される。
【００８３】
診断制御部２０９ａａは、診断対象経路テーブル２７０に基づいて、診断対象のインタフェース回路およびレーンを決定する。診断制御部２０９ａａは、ドライバ２０１ａａ，２０１ａｂのいずれかを介して、診断対象のインタフェース回路に対して診断対象レーンを指定して診断の開始を指示する。
【００８４】
動作制御部２０９ａｂは、ドライバ２０１ａａ，２０１ａｂのいずれかを介して診断結果を受信し、診断結果を結果管理テーブル２８０に登録する。また、動作制御部２０９ａｂは、結果管理テーブル２８０に登録されたストレージ装置１００全体の診断結果に基づき、ドライバ２０１ａａ，２０１ａｂのいずれかを介して、各インタフェース回路におけるレーンごとの使用、不使用を制御する。
【００８５】
ドライバ２０１ａａは、ストレージ装置１００内のインタフェース回路のうち、ＰＣＩｅインタフェース２１−１ａ，２１−１ｂ，・・・における通信動作や診断動作を制御する。診断動作の制御では、ドライバ２０１ａａは、診断制御部２０９ａａからの診断対象レーンおよび診断開始の指示を受信して、それらの指示を対応するＰＣＩｅインタフェースに送信する。また、ドライバ２０１ａａは、ＰＣＩｅインタフェースから送信された診断結果を、診断制御部２０９ａａに送信する。さらに、ドライバ２０１ａａは、動作制御部２０９ａｂからの指示に応じて、ＰＣＩｅインタフェースの各レーンの使用、不使用を制御する。
【００８６】
ドライバ２０１ａｂは、ストレージ装置１００内のインタフェース回路のうち、ＳＡＳインタフェース２１−２ａ，２１−２ｂ，・・・における通信動作や診断動作を制御する。ドライバ２０１ａｂの処理は、ドライバ２０１ａａがＰＣＩｅインタフェース２１−１ａ，２１−１ｂ，・・・に対して行う処理と同様であるので、説明を省略する。
【００８７】
なお、ＣＭ２００ｂも、図１３に示したＣＭ２００ａの処理機能と同様の処理機能を有する。また、ＣＭ２００ａのＦＰＧＡ２０９ａとＣＭ２００ｂのＦＰＧＡ２０９ｂは、例えば、一方がマスタとして動作し、他方がスレーブとして動作する。例えばＦＰＧＡ２０９ａがマスタとすると、インタフェース回路の診断動作やレーンの使用、不使用の制御は、ＦＰＧＡ２０９ａの診断制御部２０９ａａおよび動作制御部２０９ａｂが主導して実行される。
【００８８】
また、他方のＣＭ２００ｂ内のインタフェース回路に指示が送信される場合、例えば、ＦＰＧＡ２０９ａからの指示はＦＰＧＡ２０９ｂに送信され、ＣＰＵ２０１ｂにより実現されるドライバを介して、ＣＭ２００ｂ内のインタフェース回路に伝達される。また、診断結果など、インタフェース回路からＦＰＧＡ２０９ｂに送信される情報は、上記と逆順のルートによって伝達される。
【００８９】
図１４は、診断対象経路テーブルの例を示す図である。診断対象経路テーブル２７０は、フラッシュメモリ２０９ａ１に格納される。診断対象経路テーブル２７０は、レーンを診断する順番を特定可能な情報である。診断する順番は、ＦＰＧＡ２０９ａの診断制御部２０９ａａにより、ホスト装置４００からＤＥ３００へのアクセス性能を考慮して決定される。診断する順番の決定方法は、後で詳細に説明する。診断対象経路テーブル２７０は、グループおよび診断対象経路の項目を有する。グループの項目は、グループを識別する情報を示す。診断対象経路の項目は、診断対象経路の情報を示す。
【００９０】
１つのグループに対応する診断対象経路は、診断対象とされる伝送路の位置が、その伝送路の両端に接続する各デバイスの名称によって指定される。診断対象経路の項目には、このようなデバイス名のペアが少なくとも１組登録される。また、診断対象経路には、伝送路において診断対象とされるレーン番号がさらに指定されていてもよい。
【００９１】
また、診断対象経路テーブル２７０に登録されている１つのグループは、さらに小グループに分類される。例えば、グループ“１”は小グループ“１ａ”〜“１ｄ”にさらに分類される。小グループは、対応するグループの診断対象経路に登録された伝送路を、レーンごとに分割したものである。
【００９２】
診断制御部２０９ａａは、診断対象経路テーブル２７０を参照して、診断するレーンを決定する。診断制御部２０９ａａは、グループ“１”から順番に診断するレーンを決定する。また、診断制御部２０９ａａは、グループ“１”の小グループ“１ａ”から順番に診断するレーンを決定する。
【００９３】
例えば、図１４では、小グループ“１ａ”に対応する診断対象経路として“ＣＭ＃０  ＣＰＵ−ＣＭ＃０  ＩＯＣ間  Ｌａｎｅ＃０”が登録されている。これは、ＣＭ＃０（ＣＭ２００ａ）のＣＰＵ２０１ａとＩＯＣ２０５ａとを接続する伝送路のレーン＃０が、診断対象とされることを示す。この場合、診断制御部２０９ａａは、該当する伝送路の両端に接続されているインタフェース回路に対し、ドライバ（このケースではドライバ２０１ａａ）を介して、レーン＃０における診断開始指示を送信する。各インタフェース回路は、レーン＃０における送信用の差動信号線における診断を実行し、診断結果をドライバ２０１ａａを介して診断制御部２０９ａａに通知する。
【００９４】
また、図１４では、小グループ“１ａ”に対応する診断対象経路として、“ＣＭ＃０  ＣＰＵ−ＣＭ＃０  ＩＯＣ間  Ｌａｎｅ＃０”と“ＣＭ＃０  ＩＯＣ−ＣＭ＃０  ＳＡＳＥｘｐ間  Ｌａｎｅ＃０”という２カ所の伝送路が登録されている。この場合、診断制御部２０９ａａは、２カ所の伝送路において並行して診断を実行させる。
【００９５】
図１５は、結果管理テーブルの例を示す図である。結果管理テーブル２８０ａ，２８０ｂ，２８０ｃ，・・・は、フラッシュメモリ２０９ａ１に格納される。結果管理テーブル２８０ａ，２８０ｂ，２８０ｃ，・・・にはそれぞれ、１組のデバイスのペア間における１方向に対する伝送路の診断結果が、レーンごとに登録されている。例えば、結果管理テーブル２８０ａは、“ＣＭ＃０  ＣＰＵ  →  ＣＭ＃０  ＰＣＨ間”で特定される伝送路の各レーンの診断結果を示す。すなわち、結果管理テーブル２８０ａには、ＣＰＵ２０１ａからＰＣＨ２０７ａへの送信用伝送路における各レーンの診断結果が登録されている。
【００９６】
診断結果の項目には、“正常”、“異常予兆”、“異常”の何れかが登録される。“正常”は、診断対象レーンが正常であることを示す。“異常予兆”は、診断対象レーンに異常予兆があることを示す。“異常”は、診断対象レーンが異常であることを示す。
【００９７】
さらに、各結果管理テーブルには、レーンごとに使用フラグおよび時間Ｌ３，Ｌ４が登録されている。使用フラグの項目は、レーンを使用する（アクティブにする）か、あるいはそのレーンを使用せずに閉塞するかを示す。使用フラグの項目には、使用する場合、“ｔｒｕｅ”が登録され、使用しない場合、“ｆａｌｓｅ”が登録される。時間Ｌ３，Ｌ４は、異常予兆の診断に用いる第２の正常範囲の下限、上限をそれぞれ示す。
【００９８】
次に、リンクアップ時の診断処理について、フローチャートを用いて説明する。
図１６は、リンクアップ時の診断処理のフローチャートの例を示す図である。以下、図１６に示す処理をステップ番号に沿って説明する。
【００９９】
（Ｓ１１）このステップＳ１１の処理は、例えば、ストレージ装置１００の電源がオンになるのに伴ってインタフェース回路２１ａが起動した場合や、インタフェース回路２１ａがリセットされて再起動した場合に実行される。インタフェース回路２１ａの制御回路２２０ａは、診断対象レーンを切り替えながら、テスト信号の立ち上がり時間の検出処理を実行する。
【０１００】
具体的には、制御回路２２０ａは、診断対象レーンを決定する。制御回路２２０ａは、パルスジェネレータ２４０ａに接続された入力端子２６１を、診断対象レーンに接続された出力端子に接続するために経路の切り替えをスイッチ２６０ａに実行させる。そして、制御回路２２０ａは、パルスジェネレータ２４０ａにテスト信号を送信させる。検出回路２１３ａは、診断対象レーンにおけるテスト信号の立ち上がり時間を検出し、制御回路２２０ａに通知する。制御回路２２０ａは、検出された立ち上がり時間に基づいて相手側のインタフェース回路２１ｂが接続されていることを検出すると、検出された立ち上がり時間を診断対象レーンの番号に対応付けてメモリ２３０ａに格納する。
【０１０１】
インタフェース回路２１ａは、ポート内の全てのレーンに対して上記処理を実行し、レーン毎に立ち上がり時間を検出してメモリ２３０ａに格納する。なお、制御回路２２０ａによって相手側のインタフェース回路が接続されていないと判定された場合には、ステップＳ１２以降の処理は実行されない。
【０１０２】
（Ｓ１２）インタフェース回路２１ａの制御回路２２０ａは、診断開始通知をＣＰＵ２０１ａに送信する。
（Ｓ１３）ＣＰＵ２０１ａのドライバ（ここでは例として、ドライバ２０１ａａとする）は、診断開始通知をＦＰＧＡ２０９ａに送信する。
【０１０３】
（Ｓ１４）ＦＰＧＡ２０９ａの診断制御部２０９ａａは、フラッシュメモリ２０９ａ１を参照し、診断開始通知の送信元のインタフェース回路２１ａに対応する第２の正常範囲の情報（時間Ｌ３，Ｌ４）が格納されているか否かを判定する。この判定は、例えば、診断開始通知の送信元のインタフェース回路２１ａに対応する結果管理テーブル２８０がフラッシュメモリ２０９ａ１に格納されているか否かによって行うことができる。該当する結果管理テーブル２８０が格納されている場合、その結果管理テーブル２８０に第２の正常範囲の情報が登録されている。診断制御部２０９ａａは、結果管理テーブル２８０が格納されている場合、処理をステップＳ１５に進める。結果管理テーブル２８０が格納されていない場合、処理をステップＳ１６に進める。
【０１０４】
ここで、第２の正常範囲の情報が登録されていない場合とは、例えば、診断開始通知の送信元のインタフェース回路２１ａが新規に搭載された場合である。あるいは、以前に同じ位置に搭載されていてインタフェース回路が、診断開始通知の送信元のインタフェース回路２１ａに交換された場合も考えられる。
【０１０５】
（Ｓ１５）診断制御部２０９ａａは、ステップＳ１４で参照した結果管理テーブル２８０から、各レーンについての第２の正常範囲の情報（時間Ｌ３，Ｌ４）を取得する。診断制御部２０９ａａは、第２の正常範囲の情報を異常予兆診断の開始指示とともにＣＰＵ２０１ａに送信し、診断開始通知の送信元のインタフェース回路２１ａに対するこれらの情報の送信を指示する。
【０１０６】
（Ｓ１６）診断制御部２０９ａａは、フラッシュメモリ２０９ａ１にあらかじめ記憶されている第１の正常範囲の情報（時間Ｌ１，Ｌ２）を取得する。診断制御部２０９ａａは、第１の正常範囲の情報を異常診断の開始指示とともにＣＰＵ２０１ａに送信し、診断開始通知の送信元のインタフェース回路２１ａに対するこれらの情報の送信を指示する。
【０１０７】
なお、第１の正常範囲を示す時間Ｌ１，Ｌ２は固定値であるので、メモリ２３０ａにあらかじめ記憶されていてもよい。この場合、ステップＳ１６では、第１の正常範囲の情報は送信されなくてよい。
【０１０８】
（Ｓ１７）診断制御部２０９ａａは、新しいインタフェース回路２１ａが搭載されたことに伴い、診断対象経路テーブル２７０を更新する。詳しくは、診断制御部２０９ａａは、ホスト装置４００からＤＥ３００へのアクセス性能を考慮して、次の（１）〜（３）のようなルールにしたがって診断対象経路テーブル２７０を更新する。なお、（１）、（２）、（３）の順で優先度が高い。
【０１０９】
（１）診断制御部２０９ａａは、上流と下流とでデータ流量の差が大きくならないようにバランスを取りながら、同時に診断対象とする伝送路の位置を決定する。例えば、ＩＯＣ２０５ａの上流のレーン数、すなわち、ＣＰＵ２０１ａとＩＯＣ２０５ａとの間のレーン数は、８である。一方、ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ａとの間のレーン数は、４であり、ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ｂとの間のレーン数は、４である。このため、ＩＯＣ２０５ａの下流のレーン数の合計は、８である。この場合、上流のレーン数と下流のレーン数が同じであるため、上流と下流でそれぞれ１レーンの診断を行っても、上流と下流とでデータ流量に差がでない。そこで、診断制御部２０９ａａは、例えば、ＣＰＵ２０１ａとＩＯＣ２０５ａとの間の４レーンと、ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ａとの間の４レーンとを、同時に診断させる１つのグループに登録する。また、診断制御部２０９ａａは、ＣＰＵ２０１ａとＩＯＣ２０５ａとの間の残りの４レーンと、ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ｂとの間の４レーンとを、同時に診断させる別のグループに登録する。このように、上流と下流とでデータ流量に差がないように診断対象レーンが選択されることで、ストレージ装置１００内で部分的に通信の停滞が発生し、それが原因でＤＥ３００へのアクセス性能が低下する可能性を低減できる。
【０１１０】
なお、上記の例では、ＣＰＵ２０１ａとＩＯＣ２０５ａとの間で通信に利用されるレーン数と、ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ａ，２０６ｂとの間で通信に利用されるレーン数とが同数になるように、同時に診断させるレーンの組み合わせが決定された。しかし、他の例として、ＣＰＵ２０１ａとＩＯＣ２０５ａとの間で通信に利用されるレーン数と、ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ａ，２０６ｂとの間で通信に利用されるレーン数との差が一定値以下になるように、同時に診断させるレーンの組み合わせが決定されてもよい。あるいは、ＣＰＵ２０１ａとＩＯＣ２０５ａとの間で通信に利用されるレーン数と、ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ａ，２０６ｂとの間で通信に利用されるレーン数との比率が一定範囲に収まるように、同時に診断させるレーンの組み合わせが決定されてもよい。
【０１１１】
（２）診断制御部２０９ａａは、ＤＥ３００へのアクセス性能への影響が小さい範囲で、多数のレーンで同時に診断されるようにする。例えば、上記のようにＩＯＣ２０５ａの上流と下流のレーン数はともに８であり、比較的多いと言える。このため、上流と下流でそれぞれ１レーンを診断対象としても、ＤＥ３００へのアクセス性能の低下幅は比較的小さい。そこで、診断制御部２０９ａａは、ＩＯＣ２０５ａの上流の１レーンと下流の１レーンとが同時に診断対象となるようにグループの設定を行う。
【０１１２】
（３）診断制御部２０９ａａは、ＣＭ２００ａ内の伝送路が優先して診断され、ＣＭ２００ｂ内の伝送路がその後に診断されるように、レーンの診断順を決定する。これにより、診断の実行中でも、ＣＭ２００ａ，２００ｂのうち一方は、アクセス性能を維持しながら動作できる。
【０１１３】
また、診断制御部２０９ａａは、上記のような診断対象経路テーブル２７０の更新に加え、新しいインタフェース回路２１ａに対応する結果管理テーブル２８０を作成し、フラッシュメモリ２０９ａ１に格納する。
【０１１４】
（Ｓ１８）ＣＰＵ２０１ａのドライバ２０１ａａは、ステップＳ１５またはステップＳ１６でＦＰＧＡ２０９ａから送信された情報をインタフェース回路２１ａに送信する。
（Ｓ１９）インタフェース回路２１ａの制御回路２２０ａは、ＣＰＵ２０１ａから受信した第１の正常範囲または第２の正常範囲の情報をメモリ２３０ａに格納する。制御回路２２０ａは、異常診断の開始指示を受信した場合、ステップＳ１１で検出された立ち上がり時間が、受信した第１の正常範囲に含まれるか否かを判定することで、各レーンの異常の有無を判定する。これにより、各レーンにおける異常の診断が実行される。一方、制御回路２２０ａは、異常予兆診断の開始指示を受信した場合、ステップＳ１１で検出された立ち上がり時間が、受信した第２の正常範囲に含まれるか否かを判定することで、各レーンの異常予兆の有無を判定する。これにより、各レーンにおける異常予兆の診断が実行される。制御回路２２０ａは、診断結果をＣＰＵ２０１ａに送信する。
【０１１５】
（Ｓ２０）ＣＰＵ２０１ａのドライバ２０１ａａは、受信した診断結果をＦＰＧＡ２０９ａに送信する。
（Ｓ２１）ＦＰＧＡ２０９ａの動作制御部２０９ａｂは、診断結果受信処理を実行する。この処理では、動作制御部２０９ａｂは、受信した診断結果を、その送信元のインタフェース回路２１ａに対応する結果管理テーブル２８０に登録する。また、動作制御部２０９ａｂは、レーンの異常が検出された場合、インタフェース回路２１ａのどのレーンを使用状態にし、どのレーンを閉塞させるかを制御する異常対応処理を実行する。なお、この診断結果受信処理については、後の図１９において詳しく説明する。
【０１１６】
図１７は、判定処理のフローチャートの例を示す図（その１）である。図１７の処理は、図１６のステップＳ１９の処理に対応する。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１１７】
（Ｓ３１）制御回路２２０ａは、ポート内の複数のレーンの中から診断対象レーンを１つ選択する。制御回路２２０ａは、診断対象レーンについて検出された立ち上がり時間をメモリ２３０ａから取得する。
【０１１８】
（Ｓ３２）制御回路２２０ａは、ＦＰＧＡ２０９ａから第２の正常範囲の情報を取得したか否かを判定する。第２の正常範囲の情報を取得した場合、処理をステップＳ４１に進める。第２の正常範囲の情報を取得していない場合（すなわち、第１の正常範囲の情報を取得した場合）、処理をステップＳ３３に進める。
【０１１９】
（Ｓ３３）制御回路２２０ａは、ステップＳ３１で取得した立ち上がり時間が、ＦＰＧＡ２０９ａから通知された第１の正常範囲外であるか否かを判定する。立ち上がり時間が第１の正常範囲外である場合、処理をステップＳ３４に進める。立ち上がり時間が第１の正常範囲に含まれる場合、処理をステップＳ３５に進める。
【０１２０】
（Ｓ３４）制御回路２２０ａは、診断対象レーンが異常であることをＣＰＵ２０１ａに通知する。そして、制御回路２２０ａは、処理をステップＳ３９に進める。
通知を受けたＣＰＵ２０１ａは、診断対象レーンが異常であることをＦＰＧＡ２０９ａに通知する。
【０１２１】
（Ｓ３５）送受信部２１０は、制御回路２２０ａの指示に基づき、診断対象レーンのＴｘ−Ｒｘ間のリンクを確立する。
（Ｓ３６）制御回路２２０ａは、図９で説明した手順で、立ち上がり時間を基準に第２の正常範囲を決定する。
【０１２２】
（Ｓ３７）制御回路２２０ａは、診断対象レーンが正常であることをＣＰＵ２０１ａに通知する。通知を受けたＣＰＵ２０１ａは、診断対象レーンが正常であることをＦＰＧＡ２０９ａに通知する。
【０１２３】
（Ｓ３８）制御回路２２０ａは、第２の正常範囲の情報（時間Ｌ３，Ｌ４）をＣＰＵ２０１ａに送信する。ＣＰＵ２０１ａは、第２の正常範囲の情報をＦＰＧＡ２０９ａに通知する。
【０１２４】
（Ｓ３９）制御回路２２０ａは、ポート内の全てのレーンを診断したか否かを判定する。全てのレーンを診断した場合、判定処理を終了する。全てのレーンを診断していない場合、処理をステップＳ３１に進める。
【０１２５】
図１８は、判定処理のフローチャートの例を示す図（その２）である。以下、図１８に示す処理をステップ番号に沿って説明する。
（Ｓ４１）制御回路２２０ａは、ステップＳ３１で取得した立ち上がり時間が、ＦＰＧＡ２０９ａから通知された第２の正常範囲外であるか否かを判定する。立ち上がり時間が第２の正常範囲外である場合、処理をステップＳ４２に進める。立ち上がり時間が第２の正常範囲に含まれる場合、処理をステップＳ４３に進める。
【０１２６】
（Ｓ４２）制御回路２２０ａは、診断対象レーンが異常予兆であることをＣＰＵ２０１ａに通知する。そして、処理をステップＳ３９に進める。通知を受けたＣＰＵ２０１ａは、診断対象レーンが異常予兆であることをＦＰＧＡ２０９ａに通知する。
【０１２７】
（Ｓ４３）送受信部２１０は、制御回路２２０ａの指示に基づき、診断対象レーンのＴｘ−Ｒｘ間のリンクを確立する。
（Ｓ４４）制御回路２２０ａは、診断対象レーンが正常であることをＣＰＵ２０１ａに通知する。そして、処理をステップＳ３９に進める。通知を受けたＣＰＵ２０１ａは、診断対象レーンが正常であることをＦＰＧＡ２０９ａに通知する。
【０１２８】
このように、インタフェース回路２１ａは、リンクアップ時の診断処理で異常レーンや異常予兆レーンを検出することができる。
次に、図１９は、診断結果受信処理のフローチャートの例を示す図である。図１９の処理は、図１６のステップＳ２１の処理に対応する。以下、図１９に示す処理をステップ番号に沿って説明する。
【０１２９】
（Ｓ５１）ＦＰＧＡ２０９ａの動作制御部２０９ａｂは、ＣＰＵ２０１ａから、インタフェース回路２１ａの各レーンの診断結果を受信する。また、診断結果に加えてレーンごとの第２の正常範囲の情報も受信される場合もある。
【０１３０】
（Ｓ５２）動作制御部２０９ａｂは、各レーンの診断結果を、診断が行われたインタフェース回路２１ａに対応する結果管理テーブル２８０に登録する。
（Ｓ５３）動作制御部２０９ａｂは、すべてのレーンの診断結果が正常であるか否かを判定する。診断結果が正常でないレーンがある場合、処理をステップＳ５４に進める。一方、すべてのレーンの診断結果が正常の場合、動作制御部２０９ａｂは、各レーンに対応する結果管理テーブル２８０の使用フラグの項目にｔｒｕｅを登録する。また、動作制御部２０９ａｂは、第２の正常範囲の情報を受信した場合、それらの情報を各レーンに対応する結果管理テーブル２８０の時間Ｌ３，Ｌ４の項目に登録する。そして、動作制御部２０９ａｂは、診断結果処理を終了する。
【０１３１】
（Ｓ５４）動作制御部２０９ａｂは、異常対応処理を実行する。この処理については、後の図２３、図２４において詳しく説明する。
なお、動作制御部２０９ａｂは、例えばステップＳ５１またはステップＳ５２の後に、診断結果を外部機器（例えば、ホスト装置４００またはストレージ装置１００の管理端末）に通知するようにＣＰＵ２０１ａに指示してもよい。この場合、指示を受けたＣＰＵ２０１ａは、例えば、診断内容を示す表示情報を外部機器に表示させる。これにより、表示情報を視認したユーザは、異常または異常予兆が検出されたことや、それらがどのデバイスのどのレーンで検出されたかを認識することができる。
【０１３２】
次に、通常運用時の診断処理について、シーケンス図とフローチャートを用いて説明する。通常運用とは、ストレージ装置１００内でホスト装置４００からの要求に応じたＤＥ３００へのアクセス処理が実行されている状態である。
【０１３３】
図２０は、通常運用時の診断制御処理のシーケンスの例を示す図（その１）である。以下、図２０に示す処理をステップ番号に沿って説明する。
（ＳＴ１００）ＦＰＧＡ２０９ａの診断制御部２０９ａａは、診断対象経路テーブル２７０を参照して、診断対象レーンを決定する。以下、インタフェース回路２１ａとインタフェース回路２１ｂとの間の伝送路に含まれる１つのレーンが診断対象レーンに決定されたとする。
【０１３４】
（ＳＴ１０１）ＦＰＧＡ２０９ａの診断制御部２０９ａａは、診断対象レーンに対する診断開始指示をＣＰＵ２０１ａに送信する。この診断開始指示には、診断対象レーンの一方に接続されたデバイスまたはインタフェース回路２１ａの識別情報と、診断対象レーンの番号とが含まれる。
【０１３５】
（ＳＴ１０２）ＦＰＧＡ２０９ａの診断制御部２０９ａａは、診断対象レーンに対する診断開始指示をＣＰＵ２０１ａに送信する。この診断開始指示には、診断対象レーンの他方に接続されたデバイスまたはインタフェース回路２１ｂの識別情報と、診断対象レーンの番号とが含まれる。なお、診断対象レーンの番号は、ステップＳＴ１０１と同じである。
【０１３６】
なお、上記のステップＳＴ１０１，ＳＴ１０２の処理は、診断制御部２０９ａａが、診断対象経路テーブル２７０の小グループを先頭から順に選択するたびに実行される。ここで、選択された小グループに伝送路が複数登録されている場合、登録されている伝送路ごとにステップＳＴ１０１，ＳＴ１０２以降の処理が実行される。これにより、登録された複数の伝送路において並列的に診断が行われる。
【０１３７】
（ＳＴ１０３）ＣＰＵ２０１ａのドライバ（ここでは例として、ドライバ２０１ａａとする）は、ステップＳＴ１０１で送信された診断開始指示において指定されたインタフェース回路２１ａに診断開始指示を送信する。この診断開始指示には、診断対象レーンの番号が含まれる。
【０１３８】
（ＳＴ１０４）ＣＰＵ２０１ａのドライバ２０１ａａは、ステップＳＴ１０２で送信された診断開始指示において指定されたインタフェース回路２１ｂに診断開始指示を送信する。この診断開始指示には、診断対象レーンの番号が含まれる。
【０１３９】
（ＳＴ１０５）インタフェース回路２１ａは、診断開始通知をインタフェース回路２１ｂに送信する。
（ＳＴ１０６）インタフェース回路２１ｂは、診断開始承諾通知をインタフェース回路２１ａに送信する。
【０１４０】
（ＳＴ１０７）インタフェース回路２１ａは、診断対象レーンを休止させた省電力状態（Ｌ０ｓ状態）に遷移する。なお、診断対象レーンとして代表レーン（レーン＃０）が指定された場合、インタフェース回路２１ａは、レーン＃０以外のあらかじめ決められたレーン（図１２の例ではレーン＃３）を休止させる。
【０１４１】
（ＳＴ１０８）インタフェース回路２１ａは、省電力状態への遷移完了通知をインタフェース回路２１ｂに送信する。なお、診断対象レーンとしてレーン＃０が指定された場合には、ステップＳＴ１０８と同様にレーン＃０以外のあらかじめ決められたレーンが休止される。
【０１４２】
（ＳＴ１０９）インタフェース回路２１ｂは、診断対象レーンを休止させた省電力状態（Ｌ０ｓ状態）に遷移する。
（ＳＴ１１０）インタフェース回路２１ｂは、省電力状態への遷移完了通知をインタフェース回路２１ａに送信する。
【０１４３】
（ＳＴ１１１）インタフェース回路２１ａは、診断対象レーンについての異常予兆の診断を実行する。
（ＳＴ１１２）インタフェース回路２１ｂは、診断対象レーンについての異常予兆の診断を実行する。
【０１４４】
図２１は、通常運用時の診断制御処理のシーケンスの例を示す図（その２）である。以下、図２１に示す処理をステップ番号に沿って説明する。
（ＳＴ１２１）インタフェース回路２１ａは、診断対象レーンの診断が完了すると、診断完了通知をインタフェース回路２１ｂに送信する。
【０１４５】
（ＳＴ１２２）インタフェース回路２１ｂは、診断対象レーンの診断が完了すると、診断完了通知をインタフェース回路２１ａに送信する。
（ＳＴ１２３）インタフェース回路２１ａは、ステップＳＴ１２１の送信処理とステップＳＴ１２２で送信された情報の受信処理とが完了すると、省電力状態を解除し、通常状態（Ｌ０状態）に遷移する。
【０１４６】
（ＳＴ１２４）インタフェース回路２１ａは、通常状態への遷移完了通知をインタフェース回路２１ｂに送信する。
（ＳＴ１２５）インタフェース回路２１ｂは、ステップＳＴ１２１で送信された情報の受信処理と、ステップＳＴ１２２の送信処理とが完了すると、省電力状態を解除し、通常状態（Ｌ０状態）に遷移する。
【０１４７】
（ＳＴ１２６）インタフェース回路２１ｂは、通常状態への遷移完了通知をインタフェース回路２１ａに送信する。インタフェース回路２１ｂは、遷移完了通知の送信を契機として、診断開始前に使用していた、診断対象レーンを含むすべてのレーンを用いた通信を再開する。インタフェース回路２１ａも、遷移完了通知の受信を契機として、診断開始前に使用していた、診断対象レーンを含むすべてのレーンを用いた通信を再開する。
【０１４８】
（ＳＴ１２７）インタフェース回路２１ａは、診断結果をＣＰＵ２０１ａに送信する。
（ＳＴ１２８）ＣＰＵ２０１ａは、ステップＳＴ１２７で送信された診断結果をＦＰＧＡ２０９ａに送信する。ＦＰＧＡ２０９ａの診断制御部２０９ａａは、インタフェース回路２１ａからインタフェース回路２１ｂへの伝送路に対応する結果管理テーブル２８０を特定する。診断制御部２０９ａａは、特定した結果管理テーブル２８０において診断対象レーンに対応付けられた診断結果を、ＣＰＵ２０１ａから受信した診断結果によって更新する。
【０１４９】
（ＳＴ１２９）インタフェース回路２１ｂは、診断結果をＣＰＵ２０１ａに送信する。
（ＳＴ１３０）ＣＰＵ２０１ａは、ステップＳＴ１２９で送信された診断結果をＦＰＧＡ２０９ａに送信する。ＦＰＧＡ２０９ａの診断制御部２０９ａａは、インタフェース回路２１ｂからインタフェース回路２１ａへの伝送路に対応する結果管理テーブル２８０を特定する。診断制御部２０９ａａは、特定した結果管理テーブル２８０において診断対象レーンに対応付けられた診断結果を、ＣＰＵ２０１ａから受信した診断結果によって更新する。
【０１５０】
なお、ステップＳＴ１２８，ＳＴ１３０で診断結果を受信したとき、診断制御部２０９ａａは、診断結果を外部機器（例えば、ホスト装置４００またはストレージ装置１００の管理端末）に通知するようにＣＰＵ２０１ａに指示してもよい。この場合、指示を受けたＣＰＵ２０１ａは、例えば、診断内容を示す表示情報を外部機器に表示させる。これにより、表示情報を視認したユーザは、異常予兆が検出されたことや、それらがどのデバイスのどのレーンで検出されたかを認識することができる。
【０１５１】
（ＳＴ１３１）ＦＰＧＡ２０９ａの動作制御部２０９ａｂは、診断対象レーンに異常予兆があると診断された場合、異常対応処理を実行する。この異常対象処理は、後の図２３、図２４において詳しく説明する。
【０１５２】
以上の図２０、図２１の処理では、ステップＳＴ１０５，ＳＴ１０６の処理によって、インタフェース回路２１ａ，２１ｂの双方での診断の開始タイミングを同期させることができる。そして、ステップＳＴ１２１，ＳＴ１２２の処理によって、インタフェース回路２１ａ，２１ｂの双方での診断の終了タイミングを同期させることができる。インタフェース回路２１ａ，２１ｂの間では双方向通信が行われるため、一方向でのみ診断が行われると通信のエラーが発生する場合がある。上記のようにインタフェース回路２１ａ，２１ｂの双方での診断の開始および終了タイミングを同期させることで、このような通信エラーの発生を防止できる。
【０１５３】
図２２は、通常運用時にインタフェース回路が実行する診断処理の例を示すフローチャートである。図２２の処理は、図２０のステップＳＴ１１１でインタフェース回路２１ａが実行する処理に対応する。なお、図２０のステップＳＴ１１２でも、インタフェース回路２１ｂによって図２２と同様の処理が実行される。以下、図２２に示す処理をステップ番号に沿って説明する。
【０１５４】
（Ｓ６１）制御回路２２０ａは、診断が指示された診断対象レーンが、パルスジェネレータ２４０ａに接続されるようにスイッチ２６０ａに接続切り替えを指示する。スイッチ２６０ａは、指示に応じてスイッチ２６０ａの接続を切り替える。このとき、診断実行前に使用されていたレーンのうち、診断対象レーンを除くレーンを用いたインタフェース回路２１ｂとの通信が継続される。
【０１５５】
ここで、伝送路において実際に診断されるレーンは、ＦＰＧＡ２０９ａの診断制御部２０９ａａからＣＰＵ２０１ａのドライバ２０１ａａを介して指定された診断対象レーンの番号に対応付けられているレーンである。例えば、図１０〜図１３の構成では、診断対象レーンとしてレーン＃０が指定された場合、レーン２２ａの診断が行われ、診断対象レーンとしてレーン＃１が指定された場合、レーン２２ｂの診断が行われる。
【０１５６】
ステップＳ６１では、診断対象レーンとしてレーン＃０以外のレーンが指定された場合、図１１のように、スイッチ２６０ａでは実際に診断されるレーンに関する接続の切り替えのみが実行される。一方、診断対象レーンとしてレーン＃０が指定された場合には、図１２のようにレーン＃０に対する伝送路上のレーンの付け替えが行われるようにスイッチ２６０ａの接続が切り替えられる。なお、診断対象レーンとしてレーン＃０が指定された場合、図２０のステップＳＴ１０７では、制御回路２２０ａは、レーン＃０でなく、他のレーンのうち伝送路上のレーンとの接続が切断されるレーン（図１２ではレーン＃３）を休止させる。
【０１５７】
（Ｓ６２）制御回路２２０ａは、パルスジェネレータ２４０ａにテスト信号の出力を指示する。パルスジェネレータ２４０ａは、指示に応じてテスト信号を送信する。これにより、伝送路上の診断対象レーンの差動信号線にテスト信号が送信される。検出回路２１３ａは、差動信号線における電圧の立ち上がり時間を検出し、検出された立ち上がり時間を制御回路２２０ａに通知する。
【０１５８】
（Ｓ６３）制御回路２２０ａは、メモリ２３０ａから診断対象レーンに対応する第２の正常範囲の情報（時間Ｌ３，Ｌ４）を取得する。制御回路２２０ａは、検出された立ち上がり時間が第２の正常範囲外であるか否かを判定する。立ち上がり時間が第２の正常範囲外である場合、処理をステップＳ６４に進める。立ち上がり時間が第２の正常範囲に含まれる場合、処理をステップＳ６５に進める。
【０１５９】
（Ｓ６４）制御回路２２０ａは、診断対象レーンに異常予兆があると判定する。そして、制御回路２２０ａは、処理をステップＳ６６に進める。
（Ｓ６５）制御回路２２０ａは、診断対象レーンを正常と判定する。
【０１６０】
（Ｓ６６）制御回路２２０ａは、接続状態をステップＳ６１の開始前の状態に戻すようにスイッチ２６０ａに指示する。スイッチ２６０ａは、指示に応じてスイッチ２６０ａの接続を切り替える。そして、診断処理を終了する。
【０１６１】
このように、制御回路２２０ａは、第２の正常範囲の情報を用いて、診断対象レーンに異常予兆があるか否かを判定できる。
次に、異常対応処理について説明する。
【０１６２】
図２３は、異常対応処理の例を示すフローチャート（その１）である。図２３の処理は、図１９のステップＳ５４または図２１のステップＳＴ１３１においてＦＰＧＡ２０９ａの動作制御部２０９ａｂが実行する処理に対応する。また、図２３の処理は、同一ポートにおける異常または異常予兆が検出された診断対象レーンごとに実行される。以下、図２３に示す処理をステップ番号に沿って説明する。
【０１６３】
（Ｓ７１）動作制御部２０９ａｂは、診断対象レーンと同じポート内に、使用しているレーンが２以上存在しているか否かを判定する。使用しているレーンとは、結果管理テーブル２８０の使用フラグの項目がｔｒｕｅになっているレーンである。
【０１６４】
使用しているレーンが２以上存在している場合、処理をステップＳ７２に進める。使用しているレーンが２以上存在しない場合、処理をステップＳ７５に進める。
（Ｓ７２）動作制御部２０９ａｂは、診断対象レーンの診断結果が異常であるか否かを判定する。診断結果が異常である場合、処理をステップＳ７３に進める。診断結果が異常でない場合（すなわち異常予兆が検出された場合）、処理をステップＳ７７に進める。
【０１６５】
（Ｓ７３）動作制御部２０９ａｂは、診断対象レーンと同じポート内に、使用禁止になっている異常予兆レーンが存在するか否かを判定する。使用禁止になっているレーンとは、結果管理テーブル２８０の使用フラグの項目がｆａｌｓｅになっているレーンである。異常予兆レーンとは、結果管理テーブル２８０において診断結果が異常予兆となっているレーンである。使用禁止の異常予兆レーンが存在する場合、処理をステップＳ７４に進める。使用禁止の異常予兆レーンが存在しない場合、処理をステップＳ８１に進める。
【０１６６】
（Ｓ７４）動作制御部２０９ａｂは、診断対象レーンと同じポート内に存在する異常予兆レーンから１つを選択し、選択したレーンの使用禁止を解除する。すなわち、動作制御部２０９ａｂは、選択したレーンに対応する結果管理テーブル２８０の使用フラグの項目にｔｒｕｅを登録する。動作制御部２０９ａｂは、処理をステップＳ８１に進める。
【０１６７】
（Ｓ７５）動作制御部２０９ａｂは、診断対象レーンの診断結果が異常であるか否かを判定する。診断結果が異常である場合、処理をステップＳ７６に進める。診断結果が異常でない場合（すなわち異常予兆が検出された場合）、処理をステップＳ７９に進める。
【０１６８】
（Ｓ７６）動作制御部２０９ａｂは、診断対象レーンを使用禁止に設定する。すなわち、動作制御部２０９ａｂは、診断対象レーンに対応する結果管理テーブル２８０の使用フラグの項目にＦａｌｓｅを登録する。そして、処理をステップＳ８２に進める。
【０１６９】
（Ｓ７７）動作制御部２０９ａｂは、診断対象レーンと同じポート内に使用禁止になっている異常レーンが存在するか否かを判定する。異常レーンとは、結果管理テーブル２８０において診断結果が異常となっているレーンである。使用禁止の異常レーンが存在する場合、処理をステップＳ７９に進める。使用禁止の異常レーンが存在しない場合、処理をステップＳ７８に進める。
【０１７０】
（Ｓ７８）動作制御部２０９ａｂは、診断対象レーンと同じポート内に使用禁止になっている異常予兆レーンが存在するか否かを判定する。使用禁止の異常予兆レーンが存在する場合、処理をステップＳ７９に進める。使用禁止の異常予兆レーンが存在しない場合、処理をステップＳ８１に進める。
【０１７１】
（Ｓ７９）動作制御部２０９ａｂは、診断対象レーンの使用を継続する。すなわち、動作制御部２０９ａｂは、診断対象レーンに対応する結果管理テーブル２８０の使用フラグの項目にｔｒｕｅを登録する。そして、処理をステップＳ８２に進める。
【０１７２】
図２４は、異常対応処理の例を示すフローチャート（その２）である。以下、図２４に示す処理をステップ番号に沿って説明する。
（Ｓ８１）動作制御部２０９ａｂは、診断対象レーンを使用禁止に設定する。すなわち、動作制御部２０９ａｂは、診断対象レーンに対応する結果管理テーブル２８０の使用フラグの項目にＦａｌｓｅを登録する。この場合、同じポートにおいて使用されている他のレーンが存在しているので、このレーンを用いて運用が継続される。
【０１７３】
（Ｓ８２）動作制御部２０９ａｂは、ポート内の全レーンにおける診断が完了したか否かを判定する。診断が未実行のレーンがある場合、処理を終了する。全レーンにおける診断が完了した場合、処理をステップＳ８３に進める。
【０１７４】
（Ｓ８３）動作制御部２０９ａｂは、ポートにおけるレーン使用状況の変更内容をインタフェース回路２１ａ，２１ｂに反映する。具体的には、動作制御部２０９ａｂは、結果管理テーブル２８０から使用フラグが変更されたレーンを特定する。動作制御部２０９ａｂは、特定されたレーンのうち、使用フラグがｔｒｕｅのレーンの使用を再開させ、使用フラグがｆａｌｓｅのレーンを閉塞するようにＣＰＵ２０１ａに指示する。ＣＰＵ２０１ａのドライバ２０１ａａは、指示に応じてインタフェース回路２１ａ，２１ｂにおけるレーンの使用状況を変更させる。
【０１７５】
なお、ステップＳ８３では、動作制御部２０９ａｂは、レーン使用状況の変更内容を外部機器（例えば、ホスト装置４００あるいはストレージ装置１００の管理端末）に通知するようにＣＰＵ２０１ａに指示してもよい。この場合、指示を受けたＣＰＵ２０１ａは、例えば、変更内容を示す表示情報を外部機器に表示させる。
【０１７６】
以上の図２３，２４の処理によれば、異常および異常予兆が検出されていないレーンは、そのまま継続して使用される一方、異常が検出されたレーンは閉塞される。また、異常予兆が検出されたレーンは、他のレーンの中に、異常の検出によって閉塞されているレーンがある場合に限って使用される。このように限定された条件下でのみ異常予兆が検出されたレーンが使用されることで、通信性能を可能な限り高く維持しつつ、コンデンサの経年劣化に伴う通信の切断が発生する確率を低減できる。
【０１７７】
また、異常予兆が検出されたレーンを使用し続ける場合、動作制御部２０９ａｂは、そのレーンの使用優先度を下げるようにＣＰＵ２０１ａを介してインタフェース回路２１ａに指示してもよい。これにより、当該レーンにおいて通信の切断が発生する確率をさらに低減できる。
【０１７８】
なお、代表レーン（レーン＃０）を閉塞するように指示された場合、インタフェース回路２１ａでは、図１２のようにレーン＃０に対する伝送路上のレーンの付け替えが行われるようにスイッチ２６０ａの接続が切り替えられる。すなわち、入力端子２６２，２６３，２６４がそれぞれ出力端子２６７，２６８，２６９に接続されるようにスイッチ２６０ａの接続が切り替えられる。また、出力端子２６６はどの入力端子にも接続されないようにスイッチ２６０ａの接続が切り替えられる。これにより、レーン＃０を使用する状態のまま、異常または異常予兆が検出されたレーン２２ａが使用しないようにすることができる。
【０１７９】
次に、ポート内のレーン数が少ない場合の処理を説明する。インタフェース回路では、診断対象レーンに対して診断を実行している間、診断対象レーンと同じポート内の残りのレーンで通信が継続される。このように、診断の実行前より少ない数のレーンを用いて通信が継続されるので、これらのレーンにおける通信負荷が高くなる。そのため、通信のタイムアウトが発生しやすくなる、応答遅延が大きくなる可能性があるといった問題がある。そこで、ポート内のレーン数が少ない場合には、次の図２５に示すような診断制御処理が実行される。
【０１８０】
図２５は、ポート内のレーン数が少ない場合に行う診断処理のシーケンスの例を示す図である。図２５では、図２０と同じ処理には同じステップ番号を付して示している。また、図２５では例として、ＩＯＣ２０５ａとＳＡＳエクスパンダ２０６ａとの間の伝送路が診断対象に指定されたものとする。そして、図２０におけるインタフェース回路２１ａは、診断対象の伝送路においてＩＯＣ２０５ａ側に接続されたＳＡＳインタフェースであるものとする。また、図２０におけるインタフェース回路２１ｂは、診断対象の伝送路においてＳＡＳエクスパンダ２０６ａ側に接続されたＳＡＳインタフェースであるものとする。なお、ＣＰＵ２０１ａでの処理は、ＳＡＳインタフェース用のドライバ２０１ａｂによって実行される。
【０１８１】
まず、図２０のステップＳＴ１００に代えてステップＳＴ１００ａが実行される。
（ＳＴ１００ａ）ＦＰＧＡ２０９ａの診断制御部２０９ａａは、ステップＳＴ１００と同様に、診断対象経路テーブル２７０を参照して、診断対象レーンを決定する。これに加えて、診断制御部２０９ａａは、診断対象経路テーブル２７０、または、診断対象レーンが含まれる伝送路に対応する結果管理テーブル２８０を参照して、診断対象レーンと同じポート内のレーンの数を特定する。このとき、診断制御部２０９ａａは、レーン数が少ないと判定したとする。例えば、ポート内のレーン数が４以下の場合、レーン数が少ないと判定される。
【０１８２】
レーン数が少なくないと判定された場合、図２０のステップＳＴ１０１以降の処理が実行される。一方、レーン数が少ないと判定された場合、図２０のステップＳＴ１０１の前に、以下のステップＳＴ１００ｂ〜ＳＴ１００ｊの処理が実行される。
【０１８３】
（ＳＴ１００ｂ）ＦＰＧＡ２０９ａの診断制御部２０９ａａは、診断対象の伝送路の一方に接続されたインタフェース回路２１ａを宛先とするタイムアウト時間の延長指示を、ＣＰＵ２０１ａに送信する。
【０１８４】
（ＳＴ１００ｃ）ＣＰＵ２０１ａのドライバ２０１ａｂは、通信のタイムアウト時間の延長指示をインタフェース回路２１ａに送信する。インタフェース回路２１ａは、タイムアウト時間を延長する設定処理を実行し、ＣＰＵ２０１ａに延長完了通知を送信する。
【０１８５】
（ＳＴ１００ｄ）ＣＰＵ２０１ａのドライバ２０１ａｂは、ＦＰＧＡ２０９ａに延長完了通知を送信する。
（ＳＴ１００ｅ）ＦＰＧＡ２０９ａの診断制御部２０９ａａは、診断対象の伝送路の他方に接続されたインタフェース回路２１ｂを宛先とするタイムアウト時間の延長指示を、ＣＰＵ２０１ａに送信する。
【０１８６】
（ＳＴ１００ｆ）ＣＰＵ２０１ａのドライバ２０１ａｂは、通信のタイムアウト時間の延長指示をインタフェース回路２１ｂに送信する。インタフェース回路２１ｂは、タイムアウト時間を延長する設定処理を実行し、ＣＰＵ２０１ａに延長完了通知を送信する。
【０１８７】
（ＳＴ１００ｇ）ドライバ２０１ａｂは、ＦＰＧＡ２０９ａに延長完了通知を送信する。
（ＳＴ１００ｈ）ＦＰＧＡ２０９ａの診断制御部２０９ａａは、診断対象の伝送路の上流側に接続されたインタフェース回路２１ａを備えるデバイス、すなわちＩＯＣ２０５ａを宛先としたＩＯ（Input Output）負荷調整指示を、ＣＰＵ２０１ａに送信する。また、ＩＯ負荷調整指示では、ＩＯＣ２０５ａがＳＡＳエクスパンダ２０６ａに送信データを振り分ける割合を低くし、ＩＯＣ２０５ａがＳＡＳエクスパンダ２０６ｂに送信データを振り分ける割合を高くすることが指示される。
【０１８８】
（ＳＴ１００ｉ）ＣＰＵ２０１ａのドライバ２０１ａｂは、ＩＯＣ２０５ａにＩＯ負荷調整指示を送信する。ＩＯＣ２０５ａは、指示にしたがってＳＡＳエクスパンダ２０６ａ，２０６ｂのそれぞれに対するデータ振り分けの割合を変更し、ＣＰＵ２０１ａに調整完了通知を送信する。
【０１８９】
（ＳＴ１００ｊ）ＣＰＵ２０１ａのドライバ２０１ａｂは、ＦＰＧＡ２０９ａに調整完了通知を送信する。
ＦＰＧＡ２０９ａの診断制御部２０９ａａは、調整完了指示を受信すると、図２０のステップＳＴ１０１，ＳＴ１０２の処理を実行する。以後、図２０と同様の処理が実行される。
【０１９０】
なお、図示しないが、ＦＰＧＡ２０９ａの診断制御部２０９ａａは、図２１のステップＳＴ１２８，ＳＴ１３０で送信された診断結果を受信すると、ステップＳＴ１００ｂ，ＳＴ１００ｅ，ＳＴ１００ｈで指示した内容を元に戻すための指示を、ＣＰＵ２０１ａを介して対応する各部に送信する。
【０１９１】
以上の図２５の処理によれば、診断の実行中にインタフェース回路２１ａ，２１ｂ間でタイムアウトによる通信の中断が発生する可能性を低減できる。また、ＩＯＣ２０５ａからＳＡＳエクスパンダ２０６ａを経由してＤＥ３００に送信されるデータ量が低減される。そのため、インタフェース回路２１ａ，２１ｂ間の通信がボトルネックとなってホスト装置４００からＤＥ３００に対するアクセス性能が低下する可能性を低減できる。
【０１９２】
なお、ステップＳＴ１００ｂ〜１００ｇの処理と、ステップＳＴ１００ｈ〜ＳＴ１００ｊの処理のうち、一方だけが実行されてもよい。また、ステップＳＴ１００ｈ〜ＳＴ１００ｊの処理は、ＣＰＵ２０１ａまたはＣＰＵ２０１ｂからＤＥ３００への通信経路が途中で分岐している構成で、その分岐先の通信経路上に位置するインタフェース回路で診断が実行される場合に適用可能である。
【０１９３】
［第３の実施の形態］
次に、ＰＣＩｅバス、ＰＣＩｅケーブル、ＳＡＳケーブルに予備レーンが追加される場合を説明する。
【０１９４】
図２６は、第３の実施の形態のストレージ装置におけるレーン数の例を示す図である。図２６に示すように、第３の実施の形態のストレージ装置では、第２の実施の形態に対してインタフェース回路間の接続レーン数だけが異なる。具体的には、インタフェース回路間の伝送路に、診断時に通信するための予備レーンが追加されている。例えば、ＣＰＵ２０１ａとＰＣＩｅスイッチ２０３ａとの間は、予備レーンが追加されることで合計５レーンが接続される。
【０１９５】
図２７は、第３の実施の形態におけるインタフェース回路の内部構成例を示す図である。第３の実施の形態では、図１０〜図１２に示したインタフェース回路２１ａは、図２７のインタフェース回路２１ａ１のように変形される。
【０１９６】
インタフェース回路２１ａ１は、相手側のインタフェース回路とレーン２２ａ〜２２ｅによって接続されている。これらのうち、レーン２２ｅが予備レーンに設定される。また、インタフェース回路２１ａ１は、レーン２２ｅを介して信号を送受信するための送受信部２１０ｅをさらに有する。また、インタフェース回路２１ａ１のスイッチ２６０ａ１は、送受信部２１０ｅと接続する出力端子２６９ａをさらに有する点で、図１０〜図１２のスイッチ２６０ａと異なる。
【０１９７】
診断が実行されていない状態では、図１０と同様に、入力端子２６２〜２６５がそれぞれ出力端子２６６〜２６９に接続されている。また、例えば、レーン＃１の診断が指示された場合には、図２７に示すように、入力端子２６３の接続先が出力端子２６７から出力端子２６９ａに変更され、さらに、入力端子２６１と出力端子２６７とが接続される。この状態で、送受信部２１０ｂがレーン２２ｂの診断を実行する。これとともに、レーン２２ａ，２２ｃ〜２２ｅを用いて相手側のインタフェース回路との間の通信が継続される。このような構成によれば、相手側のインタフェース回路との通信で使用されるレーン数が診断実行前と変化しない。このため、相手側のインタフェース回路との間の通信負荷が高まることが原因となって、通信速度が低下することや、タイムアウトの発生による通信の中断が発生しやすくなることがなくなる。
【０１９８】
また、上記構成によれば、診断実行時と未実行時とで使用レーン数が変化しないため、図１６のステップＳ１７で示したようにホスト装置４００からＤＥ３００へのアクセス性能を考慮しながら同時に診断を実行する箇所を決定する必要がなくなる。さらに、図２５に示したようなタイムアウト時間の延長やＩＯ負荷調整を行う必要もなくなる。したがって、ホスト装置４００からＤＥ３００へのアクセス性能の低下や、部分的な通信の断絶といった事態を招くことなく、診断制御手順を簡易化できる。
【０１９９】
また、以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  第１の通信装置と、
複数の伝送路を介して前記第１の通信装置と接続された第２の通信装置と、を備え、
前記第１の通信装置は、
前記複数の伝送路を用いた前記第２の通信装置とのデータ通信が可能な状態で、前記複数の伝送路の中から診断を行う対象伝送路が指定されると、前記複数の伝送路のうち前記対象伝送路以外の残りの伝送路を用いて前記第２の通信装置とのデータ通信が可能な状態を継続しながら、前記対象伝送路にテスト信号を送信する送信部と、
前記対象伝送路における前記テスト信号の検出結果に基づいて、前記対象伝送路における異常の予兆の有無を診断し、診断結果を出力する制御部と、
を有する、
情報処理装置。
【０２００】
（付記２）  前記制御部は、
前記第２の通信装置との通信開始時に、前記送信部に、前記複数の伝送路のそれぞれに前記テスト信号を送信させ、前記複数の伝送路のそれぞれにおける前記テスト信号の波形の立ち上がりにかかる第１の立ち上がり時間を検出し、
前記対象伝送路が指定され、前記対象伝送路に前記テスト信号が送信されると、前記対象伝送路における前記テスト信号の波形の立ち上がりにかかる第２の立ち上がり時間が、前記対象伝送路における前記第１の立ち上がり時間を基準として決定される判定範囲に含まれるかを判定し、その判定結果に基づいて前記対象伝送路における異常の予兆の有無を診断する、
付記１記載の情報処理装置。
【０２０１】
（付記３）  前記送信部は、
複数の入力端子のうちの第１の入力端子に前記テスト信号を供給するテスト信号出力部と、
前記第２の通信装置へ送信するデータを、前記複数の入力端子のうち前記第１の入力端子を除く残りの複数の第２の入力端子に対して振り分けて供給し、前記複数の第２の入力端子の数は前記複数の伝送路の数と同じである、データ出力部と、
前記複数の入力端子のそれぞれと、前記複数の伝送路のそれぞれとの間の接続経路を切り替えるスイッチと、
を有し、
前記制御部は、
前記第２の通信装置に対するデータ送信を前記複数の伝送路を用いて実行させる場合、前記複数の第２の入力端子と前記複数の伝送路とが一対一で接続されるように前記スイッチを制御し、
前記第２の通信装置に対するデータ送信を前記残りの伝送路を用いて実行させる場合、前記複数の伝送路のうち前記対象伝送路の接続先を前記第１の入力端子に切り替えるように前記スイッチを制御する、
付記１または２記載の情報処理装置。
【０２０２】
（付記４）  前記制御部は、前記複数の伝送路のうち、通信プロトコルで規定された代表伝送路として使用されていた第１の伝送路が前記対象伝送路として指定された場合、前記第１の伝送路の接続先を前記第１の入力端子に切り替えるとともに、前記複数の第２の入力端子のうち前記第１の伝送路に接続されていた第３の入力端子の接続先を、前記複数の伝送路のうち前記第１の伝送路以外の第２の伝送路に切り替えるように前記スイッチを制御し、前記第２の伝送路を前記代表伝送路として使用可能状態に維持させる、
付記３記載の情報処理装置。
【０２０３】
（付記５）  前記複数の伝送路の中から前記対象伝送路を順次選択し、選択された前記対象伝送路を前記第１の通信装置に指定する診断制御装置をさらに有する、
付記１乃至４のいずれか１つに記載の情報処理装置。
【０２０４】
（付記６）  前記診断制御装置は、前記対象伝送路を指定して前記対象伝送路における診断を実行させる際に、前記複数の伝送路の数が所定の閾値以下の場合、前記第１の通信装置から前記第２の通信装置へのデータ通信に対する前記第２の通信装置からの応答のタイムアウト時間を長くするように、前記第１の通信装置に設定する、
付記５記載の情報処理装置。
【０２０５】
（付記７）  前記情報処理装置は、
前記第１の通信装置と前記第２の通信装置とをそれぞれ含む第１の通信装置群と第２の通信装置群と、
送信するデータを前記第１の通信装置群に含まれる前記第１の通信装置と前記第２の通信装置群に含まれる前記第１の通信装置とに振り分ける第３の通信装置と、
を有し、
前記診断制御装置は、前記第１の通信装置群に含まれる前記第１の通信装置に前記対象伝送路を指定して前記対象伝送路における診断を実行させる際に、前記第１の通信装置群に含まれる前記第１の通信装置に対して振り分けるデータ量の比率を低下させるように前記第３の通信装置に指示する、
付記５または６記載の情報処理装置。
【０２０６】
（付記８）  前記情報処理装置は、前記第１の通信装置と前記第２の通信装置とをそれぞれ含む複数の通信装置群を有し、
前記診断制御装置は、診断順情報に基づいて、前記複数の通信装置群のうちのどの通信装置群に含まれるどの伝送路を前記対象伝送路に指定するかを決定し、
前記診断順情報には、第１の通信経路上に前記複数の通信装置群のうちの第１の通信装置群が存在し、前記第１の通信経路から分岐して同一装置に接続する複数の第２の通信経路のそれぞれに前記複数の通信装置群のうち第２の通信装置群が存在する場合、前記第１の通信装置群に含まれる前記複数の伝送路の数と、前記第２の通信装置群のそれぞれに含まれる前記複数の伝送路の数の合計数との差または比率に基づいて、前記複数の通信装置群に含まれる前記複数の伝送路のそれぞれと、前記第２の通信装置群のそれぞれに含まれる前記複数の伝送路のそれぞれとの間で、同時に前記対象伝送路として指定する伝送路の組み合わせが登録される、
付記５または６記載の情報処理装置。
【０２０７】
（付記９）  前記第１の通信装置は、前記複数の伝送路に加えて予備の伝送路を介して前記第２の通信装置と接続され、
前記送信部は、前記複数の伝送路を用いた前記第２の通信装置に対するデータ通信中に前記対象伝送路が指定されると、前記残りの伝送路と前記予備の伝送路とを用いて前記第２の通信装置に対するデータ通信を継続しながら、前記対象伝送路にテスト信号を送信する、
付記１乃至８のいずれか１つに記載の情報処理装置。
【０２０８】
（付記１０）  第１の通信装置が複数の伝送路を用いて第２の通信装置とのデータ通信が可能な状態で、前記複数の伝送路の中から診断を行う対象伝送路を前記第１の通信装置に指定することで、前記複数の伝送路のうち前記対象伝送路以外の残りの伝送路を用いて前記第２の通信装置とのデータ通信が可能な状態を継続しながら、前記対象伝送路にテスト信号を送信する診断動作を前記第１の通信装置に実行させる制御部と、
前記対象伝送路における前記テスト信号の検出結果に基づく、前記対象伝送路における異常の予兆の有無の診断結果を、前記第１の通信装置から受信する受信部と、
を有する診断制御装置。
【０２０９】
（付記１１）  前記制御部は、前記対象伝送路を指定して前記対象伝送路における診断を実行させる際に、前記複数の伝送路の数が所定の閾値以下の場合、前記第１の通信装置から前記第２の通信装置へのデータ通信に対する前記第２の通信装置からの応答のタイムアウト時間を長くするように、前記第１の通信装置に設定する、
付記１０記載の診断制御装置。
【０２１０】
（付記１２）  前記第１の通信装置と前記第２の通信装置とをそれぞれ含む第１の通信装置群と第２の通信装置群とが存在し、前記第１の通信装置群に含まれる前記第１の通信装置と前記第２の通信装置群に含まれる前記第１の通信装置とが第３の通信装置に搭載されている場合に、前記診断制御装置は、前記第１の通信装置群に含まれる前記第１の通信装置に前記対象伝送路を指定して前記対象伝送路における診断を実行させる際に、前記第３の通信装置が前記第１の通信装置群に含まれる前記第１の通信装置と前記第２の通信装置群に含まれる前記第１の通信装置とに送信データを振り分ける際の振り分けデータ量の比率について、前記第１の通信装置群に含まれる前記第１の通信装置に対するデータ量を低下させるように前記第３の通信装置に指示する、
付記１０または１１記載の診断制御装置。
【０２１１】
（付記１３）  複数の伝送路を介して他の通信装置と接続された通信装置であって、
前記複数の伝送路を用いた前記他の通信装置とのデータ通信が可能な状態で、前記複数の伝送路の中から診断を行う対象伝送路が指定されると、前記複数の伝送路のうち前記対象伝送路以外の残りの伝送路を用いて前記他の通信装置とのデータ通信が可能な状態を継続しながら、前記対象伝送路にテスト信号を送信する送信部と、
前記対象伝送路における前記テスト信号の検出結果に基づいて、前記対象伝送路における異常の予兆の有無を診断し、診断結果を出力する制御部と、
を有する通信装置。
【０２１２】
（付記１４）  前記制御部は、
前記他の通信装置との通信開始時に、前記送信部に、前記複数の伝送路のそれぞれに前記テスト信号を送信させ、前記複数の伝送路のそれぞれにおける前記テスト信号の波形の立ち上がりにかかる第１の立ち上がり時間を検出し、
前記対象伝送路が指定され、前記対象伝送路に前記テスト信号が送信されると、前記対象伝送路における前記テスト信号の波形の立ち上がりにかかる第２の立ち上がり時間が、前記対象伝送路における前記第１の立ち上がり時間を基準として決定される判定範囲に含まれるかを判定し、その判定結果に基づいて前記対象伝送路における異常の予兆の有無を診断する、
付記１３記載の通信装置。
【０２１３】
（付記１５）  前記送信部は、
複数の入力端子のうちの第１の入力端子に前記テスト信号を供給するテスト信号出力部と、
前記他の通信装置へ送信するデータを、前記複数の入力端子のうち前記第１の入力端子を除く残りの複数の第２の入力端子に対して振り分けて供給し、前記複数の第２の入力端子の数は前記複数の伝送路の数と同じである、データ出力部と、
前記複数の入力端子のそれぞれと、前記複数の伝送路のそれぞれとの間の接続経路を切り替えるスイッチと、
を有し、
前記制御部は、
前記他の通信装置に対するデータ送信を前記複数の伝送路を用いて実行させる場合、前記複数の第２の入力端子と前記複数の伝送路とが一対一で接続されるように前記スイッチを制御し、
前記他の通信装置に対するデータ通信を前記残りの伝送路を用いて実行させる場合、前記複数の伝送路のうち前記対象伝送路の接続先を前記第１の入力端子に切り替えるように前記スイッチを制御する、
付記１３または１４記載の通信装置。
【符号の説明】
【０２１４】
１，２，３  伝送路
１０  情報処理装置
１１，１２  通信装置
１１ａ  送信部
１１ａ１  テスト信号出力部
１１ａ２  データ出力部
１１ａ３  スイッチ
１１ｂ  制御部
１３  診断制御装置
【図１】
2018056841.tif 000003
【図２】
2018056841.tif 000004
【図３】
2018056841.tif 000005
【図４】
2018056841.tif 000006
【図５】
2018056841.tif 000007
【図６】
2018056841.tif 000008
【図７】
2018056841.tif 000009
【図８】
2018056841.tif 000010
【図９】
2018056841.tif 000011
【図１０】
2018056841.tif 000012
【図１１】
2018056841.tif 000013
【図１２】
2018056841.tif 000014
【図１３】
2018056841.tif 000015
【図１４】
2018056841.tif 000016
【図１５】
2018056841.tif 000017
【図１６】
2018056841.tif 000018
【図１７】
2018056841.tif 000019
【図１８】
2018056841.tif 000020
【図１９】
2018056841.tif 000021
【図２０】
2018056841.tif 000022
【図２１】
2018056841.tif 000023
【図２２】
2018056841.tif 000024
【図２３】
2018056841.tif 000025
【図２４】
2018056841.tif 000026
【図２５】
2018056841.tif 000027
【図２６】
2018056841.tif 000028
【図２７】
2018056841.tif 000029