(57)【要約】【課題】一度のエラーに基づいて障害部位を特定する。【解決手段】ディスク制御装置であって、複数のチャネル制御部と、複数のキャッシュメモリと、複数のディスク制御部と、前記チャネル制御部、複数の内部スイッチ部と、を備え、前記チャネル制御部又は前記ディスク制御部は、処理の実行を要求する要求パケットを、前記キャッシュメモリに送信し、前記キャッシュメモリは、前記受信した要求パケットに対する応答パケットを送信し、前記内部スイッチ部は、前記チャネル制御部又は前記ディスク制御部から送信される要求パケット及び前記キャッシュメモリから送信される応答パケットを監視し、前記要求パケットが通過してから第１の所定の時間内に、当該要求パケットに対する応答パケットが通過したか否かを判定し、前記第１の所定の時間内に前記応答パケットが通過していない場合、障害発生の通知を送信する。【選択図】図１３
2008084066.tif 000002
【特許請求の範囲】
【請求項１】
ディスクドライブに対するデータの読み書きを制御するディスク制御装置であって、
チャネルを介してホストコンピュータに接続される複数のチャネル制御部と、
前記ホストコンピュータから読み書きを要求されるデータを一時的に記憶する複数のキャッシュメモリと、
前記ディスクドライブに接続される複数のディスク制御部と、
前記チャネル制御部、前記キャッシュメモリ及び前記ディスク制御部を接続する複数の内部スイッチ部と、を備え、
前記チャネル制御部又は前記ディスク制御部は、処理の実行を要求する要求パケットを、前記キャッシュメモリに送信し、
前記キャッシュメモリは、
前記チャネル制御部又は前記ディスク制御部から、前記要求パケットを受信し、
前記受信した要求パケットによって要求された処理を実行し、
前記受信した要求パケットに対する応答パケットを、当該要求パケットの送信元である前記チャネル制御部又は前記ディスク制御部に送信し、
前記内部スイッチ部は、
前記チャネル制御部又は前記ディスク制御部から送信される要求パケット及び前記キャッシュメモリから送信される応答パケットを監視し、
前記要求パケットが通過してから第１の所定の時間内に、当該要求パケットに対する応答パケットが通過したか否かを判定し、
前記第１の所定の時間内に前記応答パケットが通過していない場合、障害発生の通知を送信することを特徴とするディスク制御装置。
【請求項２】
前記内部スイッチ部は、前記要求パケットの送信元である前記チャネル制御部又は前記ディスク制御部に、前記障害発生の通知を送信することを特徴とする請求項１に記載のディスク制御装置。
【請求項３】
前記チャネル制御部又は前記ディスク制御部は、前記障害発生の通知を受信した場合に、障害が発生した部位を特定することを特徴とする請求項２に記載のディスク制御装置。
【請求項４】
前記チャネル制御部又は前記ディスク制御部は、前記特定された障害発生部位を経由しない経路で、前記要求パケットを再度送信することを特徴とする請求項３に記載のディスク制御装置。
【請求項５】
前記前記チャネル制御部及び前記ディスク制御部と前記内部スイッチ部とは、内部パスによって接続され、
前記特定された障害発生部位が前記内部スイッチ部である場合に、前記チャネル制御部又は前記ディスク制御部は、前記要求パケットの送信に使用する内部パスを変更することを特徴とする請求項３に記載のディスク制御装置。
【請求項６】
前記特定された障害発生部位が前記キャッシュメモリである場合に、前記チャネル制御部又は前記ディスク制御部は、当該障害発生部位であるキャッシュメモリを冗長化しているキャッシュメモリに、前記要求パケットを再度送信することを特徴とする請求項３に記載のディスク制御装置。
【請求項７】
チャネル制御部又はディスク制御部は、
前記送信した要求パケットに対する応答パケットを監視し、
前記要求パケットを送信してから第２の所定の時間内に、当該要求パケットに対する応答パケットを受信したか否かを判定し、
前記第２の所定の時間内に前記応答パケットを受信しない場合、前記内部スイッチ部に障害が発生したと判断することを特徴とする請求項１に記載のディスク制御装置。
【請求項８】
前記第２の所定の時間は、前記第１の所定の時間よりも長いことを特徴とする請求項７に記載のディスク制御装置。
【請求項９】
チャネル制御部又はディスク制御部は、前記内部スイッチ部から障害発生の通知を受信すると、前記応答パケットの監視を終了することを特徴とする請求項７に記載のディスク制御装置。
【請求項１０】
前記内部スイッチ部は、複数のポートを備え、
前記各ポートは、前記チャネル制御部、前記ディスク制御部、前記キャッシュメモリ又は他の内部スイッチ部のいずれか一つに接続され、
前記第１の所定の時間は、前記各ポートの接続先に対応して設定されることを特徴とする請求項１に記載のディスク制御装置。
【請求項１１】
ストレージシステムであって、
ホストコンピュータから読み書きを要求されるデータを記憶するディスクドライブと、
チャネルを介して前記ホストコンピュータに接続される複数のチャネル制御部と、
前記ホストコンピュータから読み書きを要求されるデータを一時的に記憶する複数のキャッシュメモリと、
前記ディスクドライブに接続される複数のディスク制御部と、
前記チャネル制御部、前記キャッシュメモリ及び前記ディスク制御部を接続する複数の内部スイッチ部と、を備え、
前記チャネル制御部又は前記ディスク制御部は、処理の実行を要求する要求パケットを、前記キャッシュメモリに送信し、
前記キャッシュメモリは、
前記チャネル制御部又は前記ディスク制御部から、前記要求パケットを受信し、
前記受信した要求パケットによって要求された処理を実行し、
前記受信した要求パケットに対する応答パケットを、当該要求パケットの送信元である前記チャネル制御部又は前記ディスク制御部に送信し、
前記内部スイッチ部は、
前記チャネル制御部又は前記ディスク制御部から送信される要求パケット及び前記キャッシュメモリから送信される応答パケットを監視し、
前記要求パケットが通過してから第１の所定の時間内に、当該要求パケットに対する応答パケットが通過したか否かを判定し、
前記第１の所定の時間内に前記応答パケットが通過していない場合、障害発生の通知を送信することを特徴とするストレージシステム。
【請求項１２】
前記内部スイッチ部は、前記要求パケットの送信元である前記チャネル制御部又は前記ディスク制御部に、前記障害発生の通知を送信することを特徴とする請求項１１に記載のストレージシステム。
【請求項１３】
前記チャネル制御部又は前記ディスク制御部は、前記障害発生の通知を受信した場合に、障害が発生した部位を特定することを特徴とする請求項１２に記載のストレージシステム。
【請求項１４】
前記チャネル制御部又は前記ディスク制御部は、前記特定された障害発生部位を経由しない経路で、前記要求パケットを再度送信することを特徴とする請求項１３に記載のストレージシステム。
【請求項１５】
前記前記チャネル制御部及び前記ディスク制御部と前記内部スイッチ部とは、内部パスで接続され、
前記特定された障害発生部位が前記内部スイッチ部である場合に、前記チャネル制御部又は前記ディスク制御部は、前記要求パケットの送信に使用する内部パスを変更することを特徴とする請求項１３に記載のストレージシステム。
【請求項１６】
前記特定された障害発生部位が前記キャッシュメモリである場合に、前記チャネル制御部又は前記ディスク制御部は、当該障害発生部位であるキャッシュメモリを冗長化しているキャッシュメモリに、前記要求パケットを再度送信することを特徴とする請求項１３に記載のストレージシステム。
【請求項１７】
チャネル制御部又はディスク制御部は、
前記送信した要求パケットに対する応答パケットを監視し、
前記要求パケットを送信してから第２の所定の時間内に、当該要求パケットに対する応答パケットを受信したか否かを判定し、
前記第２の所定の時間内に前記応答パケットを受信しない場合、前記内部スイッチ部に障害が発生したと判断することを特徴とする請求項１１に記載のストレージシステム。
【請求項１８】
前記第２の所定の時間は、前記第１の所定の時間よりも長いことを特徴とする請求項１７に記載のストレージシステム。
【請求項１９】
チャネル制御部又はディスク制御部は、前記内部スイッチ部から障害発生の通知を受信すると、前記応答パケットの監視を終了することを特徴とする請求項１７に記載のストレージシステム。
【請求項２０】
前記内部スイッチ部は、複数のポートを備え、
前記各ポートは、前記チャネル制御部、前記ディスク制御部、前記キャッシュメモリ又は他の内部スイッチ部のいずれか一つに接続され、
前記第１の所定の時間は、前記各ポートの接続先に対応して設定されることを特徴とする請求項１１に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関し、特に、障害部位を特定する技術に関する。
【背景技術】
【０００２】
ストレージシステムを有する情報システムでは、ホストコンピュータのタイムアウトエラーを防止する必要がある。なぜなら、タイムアウトエラーが生じると、ホストコンピュータのオペレーティングシステムがパニックを起こし、情報システム全体がダウンしてしまうからである。
【０００３】
そのため、高信頼且つ高可用を特徴とするストレージシステムにおいては、データ及びコンポーネントの冗長度を高めることによってデータ消失を防ぐとともに、ホストコンピュータのタイムアウトエラーの回避及びリトライ回数の最小化を図る必要がある。
【０００４】
例えば、ホストコンピュータのタイムアウトエラーを回避する技術が、特許文献１に開示されている。特許文献１に開示されている技術では、ストレージシステムとホストコンピュータとが協調して動作することによって、ホストコンピュータのタイムアウトエラーを回避する。
【０００５】
また、コンポーネントが冗長化されたストレージシステムが、特許文献２に開示されている。特許文献２に開示されているストレージシステムでは、データが格納されるハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、キャッシュメモリ及びアクセスパス等を含むコンポーネントが冗長化される。特許文献２に開示されているストレージシステムでは、障害が発生すると、代替のコンポーネントに切り替えることによって、障害を回避してデータにアクセスされる。このため、ホストコンピュータは、タイムアウトすることなく処理を継続できる。
【０００６】
ところで、障害には、固定障害及び間欠障害が存在する。コンポーネントは、固定障害に陥ると、同一のアクセスに対して、正しくない同一の挙動を行う。一方、間欠障害は、固定障害に陥る前の段階の障害である。そのため、コンポーネントは、間欠障害に陥ると、同一のアクセスに対して、正しい挙動と誤った挙動とを混在して行う。
【０００７】
このため、障害部位を特定するためのアクセスに対しても、間欠障害に陥ったコンポーネントの挙動は一定しない。よって、間欠障害の場合、障害が発生した部位（障害部位）を特定できないことがある。
【０００８】
そこで、間欠障害時において障害部位を特定する技術が特許文献３に開示されている。特許文献３に開示されている技術では、障害情報が収集される。そして、収集された障害情報に基づいて、障害部位が特定される。
【特許文献１】特開２００２−３５８１７０号公報
【特許文献２】特開２００１−２５６００３号公報
【特許文献３】特開２００１−９４５８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献３に開示されている技術では、障害部位が特定されるまでの間に、ホストコンピュータのタイムアウトエラーが発生してしまう可能性がある。ホストコンピュータのタイムアウトエラーを防ぐために、高信頼のストレージシステムは、障害部位を特定するためのアクセスを行わずに、一度のエラーに基づいて障害部位を特定する必要がある。
【００１０】
本発明は、前述した問題点に鑑みてなされたものであって、一度のエラーに基づいて障害部位を特定するストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の代表的な形態は、ディスクドライブに対するデータの読み書きを制御するディスク制御装置であって、チャネルを介してホストコンピュータに接続される複数のチャネル制御部と、前記ホストコンピュータから読み書きを要求されるデータを一時的に記憶する複数のキャッシュメモリと、前記ディスクドライブに接続される複数のディスク制御部と、前記チャネル制御部、前記キャッシュメモリ及び前記ディスク制御部を接続する複数の内部スイッチ部と、を備え、前記チャネル制御部又は前記ディスク制御部は、処理の実行を要求する要求パケットを、前記キャッシュメモリに送信し、前記キャッシュメモリは、前記チャネル制御部又は前記ディスク制御部から、前記要求パケットを受信し、前記受信した要求パケットによって要求された処理を実行し、前記受信した要求パケットに対する応答パケットを、当該要求パケットの送信元である前記チャネル制御部又は前記ディスク制御部に送信し、前記内部スイッチ部は、前記チャネル制御部又は前記ディスク制御部から送信される要求パケット及び前記キャッシュメモリから送信される応答パケットを監視し、前記要求パケットが通過してから第１の所定の時間内に、当該要求パケットに対する応答パケットが通過したか否かを判定し、前記第１の所定の時間内に前記応答パケットが通過していない場合、障害発生の通知を送信することを特徴とする。
【発明の効果】
【００１２】
本発明の代表的な形態によれば、ストレージシステムは、一度のエラーに基づいて障害部位を特定できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。
【００１４】
なお、本実施の形態では、複数の障害が同時に発生しないことを前提としている。本実施の形態では、障害が発生したコンポーネントの利用を早期に回避することが重要となる。
【００１５】
図１は、本発明の実施の形態の計算機システムの構成のブロック図である。
【００１６】
計算機システムは、ストレージシステム及びホストコンピュータ２を含む。ホストコンピュータ２は、プロセッサ、メモリ及びインタフェースを備える。
【００１７】
ストレージシステムは、ディスク制御装置１及び一つ以上のハードディスクドライブ（ＨＤＤ）３を備える。
【００１８】
ディスク制御装置１とホストコンピュータ２とは、チャネル１２を介して接続される。また、ディスク制御装置１とＨＤＤ３とは、ＨＤＤチャネル１３を介して接続される。チャネル１２及びＨＤＤチャネル１３には、例えば、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）又はＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）等が用いられる。また、ディスク制御装置１とホストコンピュータ２とは、ＦＣ等で構成されるＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して接続されてもよい。
【００１９】
ディスク制御装置１は、ＨＤＤチャネル１３を介して接続されたＨＤＤ３との間でデータを送受信する。
【００２０】
例えば、ディスク制御装置１は、ホストコンピュータ２からリード要求を受信する。すると、ディスク制御装置１は、受信したリード要求に基づいて、ＨＤＤ３からデータを読み出す。また、ディスク制御装置１は、ホストコンピュータ２からライト要求を受信する。すると、ディスク制御装置１は、受信したライト要求に基づいて、ＨＤＤ３にデータを書き込む。
【００２１】
ディスク制御装置１は、一つ以上のモジュール１０を備える。本実施の形態では、ディスク制御装置１は、モジュール１０Ａ及びモジュール１０Ｂを備えるが、いくつのモジュール１０を備えていてもよい。なお、それぞれのモジュール１０は、モジュール間パス１１を介して相互に接続される。これによって、モジュール１０は、当該モジュール１０に直接接続されていないＨＤＤ３に格納されているデータにアクセスできる。更に、複数のモジュール１０及び複数のＨＤＤ３が、一台のストレージシステムとして、ホストコンピュータ２に提供される。
【００２２】
それぞれのモジュール１０は、チャネル制御部４、ディスク制御部５、キャッシュメモリ部７、共有メモリ部８及び内部スイッチ部９を含むコンポーネントを備える。
【００２３】
これらのコンポーネントが協調して動作することによって、ストレージシステムは、ホストコンピュータ２から受信したアクセス要求を処理する。なお、アクセス要求は、リード要求及びライト要求を含む。
【００２４】
チャネル制御部４は、プロセッサを備え、チャネル１２を介してホストコンピュータ２に接続される。チャネル制御部４は、ホストコンピュータ２からアクセス要求を受信する。そして、チャネル制御部４は、受信したアクセス要求に基づいて、要求されたデータをホストコンピュータ２に対して送受信する。また、本実施の形態では、チャネル制御部４は、障害部位を特定する。
【００２５】
ディスク制御部５は、プロセッサを備え、ＨＤＤチャネル１３を介してＨＤＤ３と接続されている。ディスク制御部５は、接続されているＨＤＤ３を制御することによって、キャッシュメモリ部７に格納されているデータを、ＨＤＤ３に書き込む。また、ディスク制御部４は、接続されているＨＤＤ３を制御することによって、ＨＤＤ３から読み出したデータを、キャッシュメモリ部７に格納する。また、ディスク制御部５は、ＲＡＩＤ制御等も行う。例えば、ディスク制御部３は、ＨＤＤ３の記憶領域を一つ以上の論理ユニット（ＬＵ：Ｌｏｇｉｃａｌ  Ｕｎｉｔ）として、ホストコンピュータ２に提供する。更に、本実施の形態では、ディスク制御部５は、障害部位を特定する。
【００２６】
キャッシュメモリ部７は、ＨＤＤ３から読み出されたデータ及びＨＤＤ３に書き込まれるデータを一時的に記憶する。モジュール１０は、キャッシュメモリ部７を備えることによって、ＨＤＤ３への書き込み及びＨＤＤ３からの読み出しの性能を向上できる。
【００２７】
なお、キャッシュメモリ部７には、いかなるメモリ素子が用いられてもよい。また、キャッシュメモリ部７には、複数の種類のメモリ素子が混在して用いられてもよい。
【００２８】
例えば、ディスク制御装置１は、キャッシュメモリ部７の他に、ＦＭキャッシュメモリ部７０を備えてもよい。キャッシュメモリ部７には、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等がメモリ素子として用いられる。ＦＭキャッシュメモリ部７０には、フラッシュメモリがメモリ素子として用いられる。フラッシュメモリは、レイテンシが大きいが、不揮発性のメモリである。よって、停電等が発生しても、ＦＭキャッシュメモリ部７０は、記憶しているデータを消失しない。一方、キャッシュメモリ部７は、バックアップのためのバッテリ等を備えないと、停電の際にデータを消失してしまう。つまり、ディスク装置１は、ＦＭキャッシュメモリ部７０を備えることによって、低コスト化及び実装の高密度化できる。
【００２９】
共有メモリ部８は、ディレクトリ情報及びストレージシステムの構成情報等の各種情報を記憶する。ディレクトリ情報は、キャッシュメモリ部７の管理に必要な情報である。
【００３０】
内部スイッチ部９は、内部パス１５を介して、チャネル制御部４、ディスク制御部５、キャッシュメモリ部７及び共有メモリ部８と接続される。これによって、内部スイッチ部９は、チャネル制御部４、ディスク制御部５、キャッシュメモリ部７及び共有メモリ部８を相互に接続する。更に、内部スイッチ部９は、モジュール間パス１１を介して、他のモジュール１０に備わる内部スイッチ部９と接続される。
【００３１】
チャネル制御部４、ディスク制御部５、キャッシュメモリ部７、共有メモリ部８及び内部スイッチ部９のそれぞれは、ストレージシステムの高信頼性及び高可用性のために、冗長化されている。そのため、１つのコンポーネントに障害が発生しても、ストレージシステムは、ホストコンピュータ２からのデータを失うことなく運転を継続できる。
【００３２】
なお、ストレージシステムは、ＨＤＤ３の代わりに、半導体記憶装置を備えてもよい。半導体記憶装置には、例えば、フラッシュメモリがメモリ素子として用いられる。
【００３３】
次に、本実施の形態のストレージシステムにおけるコンポーネント及びアクセスパスの冗長化について説明する。
【００３４】
図２は、本発明の実施の形態のストレージシステムにおけるコンポーネント及びアクセスパスの冗長化の説明図である。
【００３５】
本説明図では、モジュール１０Ａに備わるチャネル制御部４Ａから、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃへのアクセス経路（アクセスパス）について、説明する。
【００３６】
モジュール１０Ａは、チャネル制御部４Ａ、内部スイッチ部９Ａ、９Ｂ及びキャッシュメモリ部７Ａ、７Ｂを備える。また、モジュール１０Ｂは、内部スイッチ部９Ｃ、９Ｄ及びキャッシュメモリ部７Ｃ、７Ｄを備える。なお、本説明図では、モジュール１０Ａ及びモジュールＢ１０Ｂに備わるコンポーネントのうち、チャネル制御部４Ａからキャッシュメモリ部７Ｃへのアクセスに関係のないコンポーネントは省略されている。
【００３７】
キャッシュメモリ部７には、ライトキャッシュ領域７２１及びリードキャッシュ領域７２２が含まれる。
【００３８】
リードキャッシュ領域７２２は、ホストコンピュータ２から読み出し要求されたデータ（リードデータ）を一時的に記憶する。なお、リードキャッシュ領域７２２は、複数のキャッシュメモリ部７間で冗長化されていてもよいし、冗長化されてなくてもよい。なぜなら、リードデータは、ＲＡＩＤ制御によって冗長化されているＨＤＤ３に記憶されているからである。
【００３９】
ライトキャッシュ領域７２１は、ホストコンピュータ２から書き込み要求されたデータ（ライトデータ）を一時的に記憶する。
【００４０】
なお、ライトデータは、複数のキャッシュメモリ部７に記憶される。つまり、ライトキャッシュ領域７２１は、複数のキャッシュメモリ部７間で冗長化されている。本説明図では、ライトキャッシュ領域７２１は、キャッシュメモリ部７Ａとキャッシュメモリ部７Ｂとで二重化されている。なお、チャネル制御部４Ａが、それぞれのキャッシュメモリ部７Ａ及び７Ｂにライトデータを格納することによって、ライトキャッシュ領域７２１の二重化が実現される。また、本説明図では、ライトキャッシュ領域７２１は、キャッシュメモリ部７Ｃとキャッシュメモリ部７Ｄとで二重化されている。
【００４１】
このため、一つのキャッシュメモリ部７に障害が発生しても、ライトデータは消失しない。ただし、一方のキャッシュメモリ部７に障害が発生している最中に、もう一方のキャッシュメモリ部７にも障害が発生すれば、ライトデータが消失してしまう。
【００４２】
また、一方のキャッシュメモリ部７に障害が発生していると、もう一方のキャッシュメモリ部７のリードキャッシュ領域７２２が減ってしまう。そのため、ストレージシステムの処理能力（スループット性能）が低減してしまう。これらの問題は、キャッシュメモリ部７自体に障害が発生した場合のみでなく、アクセスパスの障害によってキャッシュメモリ部７にアクセスができなくなった場合にも、同様に発生する。
【００４３】
こういったことから、キャッシュメモリ部７へのアクセスが一つでも不能になることは、極力避けるべきである。そのため、本実施の形態では、アクセスパスも冗長化されている。
【００４４】
例えば、モジュール１０Ａに備わるチャネル制御部４Ａから、モジュール１０Ａに備わるキャッシュメモリ部７Ａへのアクセスには、アクセスパス２３０１又はアクセスパス２３０２のいずれかが使用される。なお、アクセスパス２３０１は、内部パス１５Ａ、内部スイッチ部９Ａ及び内部パス１５Ｃを経由する。また、アクセスパス２３０２は、内部パス１５Ｂ、内部スイッチ部９Ｂ及び内部パス１５Ｄを経由する。
【００４５】
また、モジュール１０Ａに備わるチャネル制御部４Ａから、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃへのアクセスには、アクセスパス２３０３又はアクセスパス２３０４のいずれかが使用される。なお、アクセスパス２３０３は、内部パス１５Ａ、内部スイッチ部９Ａ、モジュール間パス１１Ａ、内部スイッチ部９Ｃ及び内部パス１５Ｅを経由する。また、アクセスパス２３０４は、内部パス１５Ｂ、内部スイッチ部９Ｂ、モジュール間パス１１Ｂ、内部スイッチ部９Ｄ及び内部パス１５Ｆを経由する。このように、異なる二つのモジュール間のアクセスパスも、冗長化されている。
【００４６】
図３は、本発明の実施の形態のホストコンピュータ２からリード要求を受信したディスク制御装置１の処理のシーケンス図である。
【００４７】
チャネル制御部４は、チャネル１２を介してホストコンピュータ２からリード要求を受信する（Ｓ７０１）。すると、チャネル制御部４は、受信したリード要求を解析することによって、読み出し対象となるＬＵの番号（ＬＵＮ）及び読み出し対象となるブロックのアドレス（対象ブロックアドレス）を特定する（Ｓ７０２）。
【００４８】
次に、チャネル制御部４は、共有メモリ部８に格納されているディレクトリ情報にアクセスする。そして、チャネル制御部４は、アクセスしたディレクトリ情報を参照して、読み出しを要求されたデータ（リードデータ）がキャッシュメモリ部７に格納されているか否かを判定する（Ｓ７０３及びＳ７０４）。本説明図では、チャネル制御部４は、リードデータがキャッシュメモリ部７に格納されているか否かを判定するために、共有メモリ部８に一回だけアクセスしているが、共有メモリ部８に複数回アクセスしてもよい。
【００４９】
リードデータがキャッシュメモリ部７に格納されている場合、チャネル制御部４は、キャッシュメモリ部７からリードデータを取得する（Ｓ７１５及びＳ７１６）。そして、チャネル制御部４は、取得したリードデータを、ホストコンピュータ２に送信する（Ｓ７１７）。
【００５０】
一方、リードデータがキャッシュメモリ部７に格納されていない場合、チャネル制御部４は、共有メモリ部８に格納されているディレクトリ情報にアクセスする。そして、チャネル制御部４は、アクセスしたディレクトリ情報を参照して、リードデータを格納可能な空き領域がキャッシュメモリ部７に存在するか否かを判定する（Ｓ７０５及びＳ７０６）。空き領域が存在しない場合、チャネル制御部４は、空き領域をキャッシュメモリ部７に作成する。
【００５１】
空き領域が存在又は作成されると、チャネル制御部４は、共有メモリ部８の通信領域にメッセージを書き込むことによって、ディスク制御部５にステージング要求を通知する（Ｓ７０７）。当該ステージング要求は、リードデータをキャッシュメモリ部７の空き領域へ転送することをディスク制御部５に要求する。
【００５２】
一方、ディスク制御部５は、一連の処理の終了ごと又は定期的に、共有メモリ部８の通信領域を読み込む。これによって、ディスク制御部５は、チャネル制御部４からの通知を受け取る。
【００５３】
このように、チャネル制御部４及びディスク制御部５は、共有メモリ部８の通信領域を用いて、連携を行う。共有メモリ部８の通信領域が用いられるのは、ディスク制御部５がＨＤＤ３からデータを読み出す処理の時間が、不定且つその他の処理時間と比較して長いためである。つまり、共有メモリ部８に通信領域が用いられることによって、チャネル制御部４及びディスク制御部５は、バックグラウンドで他の処理を行うことができる。
【００５４】
ここでは、ディスク制御部５は、共有メモリ部８の通信領域を読み込むことによって、ステージング要求の通知を受け取る（Ｓ７０８及びＳ７０９）。すると、ディスク制御部５は、ＨＤＤチャネル１３を通じてＨＤＤ３を制御することによって、ＨＤＤ３からリードデータを取得する（Ｓ７１０）。
【００５５】
次に、ディスク制御部５は、取得したリードデータを、キャッシュメモリ部７の空き領域に格納（ステージング）する（Ｓ７１１）。次に、ディスク制御部５は、共有メモリ部８の通信領域にメッセージを書き込むことによって、ステージングの終了を、チャネル制御部４に通知する（Ｓ７１２）。
【００５６】
一方、チャネル制御部４は、ディスク制御部５と同様に、定期的又は一連の処理の終了ごとに、共有メモリ部８の通信領域を読み込む。これによって、チャネル制御部４は、ディスク制御部５からの通知を受け取る。
【００５７】
ここでは、チャネル制御部５は、共有メモリ部８の通信領域を読み込むことによって、ステージングの終了の通知を受け取る（Ｓ７１３及びＳ７１４）。すると、チャネル制御部４は、転送リストを設定して、キャッシュメモリ部７からリードデータを取得する（Ｓ７１５及びＳ７１６）。そして、チャネル制御部４は、取得したリードデータを、ホストコンピュータ２に転送する（Ｓ７１７）。
【００５８】
以上のように、ディスク制御装置１は、ホストコンピュータ２から受信したリード要求を処理する。なお、ディスク制御装置１は、リードデータがキャッシュメモリ部７に格納されている場合、ＨＤＤ３にアクセスしない。そのため、ディスク制御装置１は、リード要求を迅速に処理できる。
【００５９】
一方、ディスク制御装置１は、ホストコンピュータ２から受信したライト要求も、リード要求と同様に処理する。具体的には、ディスク制御装置１は、書き込みを要求されたデータ（ライトデータ）を、キャッシュメモリ部７に格納した時点で、ライトの完了をホストコンピュータ２に応答する。つまり、ディスク制御装置１は、ライトデータをＨＤＤ３に格納しなくても、ライト完了をホストコンピュータ２に応答できる。そのため、ディスク制御装置１は、ライト要求を迅速に処理できる。
【００６０】
次に、ディスク制御装置１の内部で使用されるパケットについて説明する。
【００６１】
図４は、本発明の実施の形態のリードリクエストパケット３００の構成図である。
【００６２】
リードリクエストパケット３００は、データの読み出しを要求するためのパケットである。リードリクエストパケット３００は、例えば、チャネル制御部４又はディスク制御部５がキャッシュメモリ部７からデータを読み出すときに発行される。
【００６３】
なお、リクエストパケットを発行するコンポーネントをリクエスタという。また、リクエストパケットの送信先となるコンポーネントをコンプリータという。
【００６４】
リードリクエストパケット３００は、パケット種類３０１、送信先アドレス３０２、リクエスタＩＤ３０３、タグ番号３０４及びデータ長３０５を含む。
【００６５】
パケット種類３０１は、当該パケットの種類を示す。当該パケットはリードリクエストパケット３００なので、パケット種類３０１は、リードリクエストパケット３００であることを示す。
【００６６】
送信先アドレス３０２は、当該リードリクエストパケット３００によって読み出しを要求されるデータが格納されている位置を示す。例えば、送信先アドレス３０２は、キャッシュメモリ部７の識別子及び当該キャッシュメモリ部７内の記憶領域を識別するアドレスを含む。
【００６７】
リクエスタＩＤ３０３は、当該リードリクエストパケット３００を発行したコンポーネント（リクエスタ）の一意な識別子である。例えば、当該リードリクエストパケット３００がチャネル制御部１０Ａによって発行された場合、リクエスタＩＤ３０３は、チャネル制御部１０Ａの一意な識別子となる。
【００６８】
タグ番号３０４は、リクエスタＩＤ３０３によって識別されるリクエスタが発行したパケットの中から、当該リードリクエストパケット３００を識別するための識別子である。例えば、リクエスタは、パケットを発行するたびに、前回発行されたパケットのタグ番号に１を加算する。つまり、リードリクエストパケット３００は、リクエスタＩＤ３０３及びタグ番号３０４の組み合せによって識別される。
【００６９】
データ長３０５は、当該リードリクエストパケット３００によって読み出しを要求されるデータの大きさである。
【００７０】
図５は、本発明の実施の形態のリードコンプリーションパケット３１０の構成図である。
【００７１】
リードコンプリーションパケット３１０は、リードリクエストパケット３００によって読み出しを要求されたデータを送信するためのパケットである。リードコンプリーションパケット３１０は、例えば、リードリクエストパケット３００によって読み出しを要求されたデータをキャッシュメモリ部７が送信するときに発行される。
【００７２】
リードコンプリーションパケット３１０は、パケット種類３１１、リクエスタＩＤ３１２、タグ番号３１３、コンプリータＩＤ３１４、データ長３１５、データ３１６及び保護コード３１７を含む。
【００７３】
パケット種類３１１は、当該パケットの種類を示す。当該パケットはリードコンプリーションパケット３１０なので、パケット種類３１１は、リードコンプリーションパケット３１０であることを示す。
【００７４】
リクエスタＩＤ３１２は、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００を発行したコンポーネントの一意な識別子である。つまり、リードリクエストパケット３００のリクエスタＩＤ３０３と、当該リードリクエストパケット３００に対応するリードコンプリーションパケット３１０のリクエスタＩＤ３１２とは、同一の値となる。
【００７５】
タグ番号３１３は、リクエスタＩＤ３１２によって識別されるコンポーネントが発行したパケットの中から、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００を識別するための識別子である。つまり、リードリクエストパケット３００のタグ番号３０４と、当該リードリクエストパケット３００に対応するリードコンプリーションパケット３１０のタグ番号３１３とは、同一の値となる。
【００７６】
コンプリータＩＤ３１４は、当該リードコンプリーションパケット３１０を発行したコンポーネントの一意な識別子である。なお、当該リードコンプリーションパケット３１０を発行したコンポーネントは、リードリクエストパケット３００を受信しているので、コンプリータである。
【００７７】
データ長３１５は、当該リードコンプリーションパケット３１０のデータ３１６の大きさである。よって、リードリクエストパケット３００のデータ長３０５と、当該リードリクエストパケット３００に対応するリードコンプリーションパケット３１０のデータ長３１５とは、同一の値となる。
【００７８】
データ３１６は、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００によって読み出しを要求されたデータである。
【００７９】
保護コード３１７は、当該リードコンプリーションパケット３１０のデータ３１６の妥当性を確認するために使用されるコードである。保護コード３１７は、例えば、ＣＲＣ値である。
【００８０】
コンプリータは、リードリクエストパケット３００をリクエスタから受信する。すると、コンプリータは、受信したリードリクエストパケット３００によって読み出しを要求されたデータ３１６を含むリードコンプリーションパケット３１０を、リードリクエストパケット３００と同一の経路で（同一のアクセスパスを用いて）、リクエスタに送信する。
【００８１】
図６は、本発明の実施の形態のライトリクエストパケット３２０の構成図である。
【００８２】
ライトリクエストパケット３２０は、データの書き込みを要求するためのパケットである。ライトリクエストパケット３２０は、例えば、チャネル制御部４又はディスク制御部５がキャッシュメモリ部７にデータを書き込むときに発行される。
【００８３】
ライトリクエストパケット３２０は、パケット種類３２１、送信先アドレス３２２、リクエスタＩＤ３２３、タグ番号３２４、データ長３２５、データ３２６及び保護コード３２７を含む。
【００８４】
パケット種類３２１は、当該パケットの種類を示す。当該パケットはライトリクエストパケット３２０なので、パケット種類３２１は、ライトリクエストパケット３２０であることを示す。
【００８５】
送信先アドレス３２２は、当該ライトリクエストパケット３２０によって書き込みを要求されるデータが格納される位置を示す。例えば、送信先アドレス３２２は、キャッシュメモリ部７の識別子及び当該キャッシュメモリ部７内の記憶領域を識別するアドレスを含む。
【００８６】
リクエスタＩＤ３２３は、当該ライトリクエストパケット３２０を発行したコンポーネント（リクエスタ）の一意な識別子である。例えば、当該ライトリクエストパケット３２０がチャネル制御部１０Ａによって発行された場合、リクエスタＩＤ３２３は、チャネル制御部１０Ａの一意な識別子となる。
【００８７】
タグ番号３２４は、リクエスタＩＤ３２３によって識別されるリクエスタが発行したパケットの中から、当該ライトリクエストパケット３２０を識別するための識別子である。例えば、リクエスタは、パケットを発行するたびに、前回発行されたパケットのタグ番号に１を加算する。つまり、ライトリクエストパケット３２０は、リクエスタＩＤ３２３及びタグ番号３２４の組み合せによって識別される。
【００８８】
データ長３２５は、当該ライトリクエストパケット３２０によって書き込みを要求されるデータの大きさである。つまり、データ長３２６は、当該ライトリクエストパケット３２０のデータ３２６の大きさである。
【００８９】
データ３２６は、当該ライトリクエストパケット３２０によって書き込みを要求されるデータである。保護コード３２７は、当該ライトリクエストパケット３２０のデータ３２６の妥当性を確認するために使用されるコードである。
【００９０】
図７は、本発明の実施の形態のライトコンプリーションパケット３３０の構成図である。
【００９１】
ライトコンプリーションパケット３３０は、ライトリクエストパケット３２０によって要求されたデータの書き込みの完了を通知するためのパケットである。ライトコンプリーションパケット３３０は、例えば、キャッシュメモリ部７がライトリクエストパケット３２０によって要求されたデータの書き込みを完了したときに発行される。
【００９２】
ライトコンプリーションパケット３３０は、パケット種類３３１、リクエスタＩＤ３３２、タグ番号３３３及びコンプリータＩＤ３３４を含む。
【００９３】
パケット種類３３１は、当該パケットの種類を示す。当該パケットはライトコンプリーションパケット３３０なので、パケット種類３３１は、ライトコンプリーションパケット３３０であることを示す。
【００９４】
リクエスタＩＤ３３２は、当該ライトコンプリーションパケット３３０に対応するライトリクエストパケット３２０を発行したコンポーネントの一意な識別子である。つまり、ライトリクエストパケット３２０のリクエスタＩＤ３２３と、当該ライトリクエストパケット３２０に対応するライトコンプリーションパケット３３０のリクエスタＩＤ３３２とは、同一の値となる。
【００９５】
タグ番号３３３は、リクエスタＩＤ３３２によって識別されるコンポーネントが発行したパケットの中から、当該ライトコンプリーションパケット３３０に対応するライトリクエストパケット３２０を識別するための識別子である。つまり、ライトリクエストパケット３２０のタグ番号３２４と、当該ライトリクエストパケット３２０に対応するライトコンプリーションパケット３３０のタグ番号３３３とは、同一の値となる。
【００９６】
コンプリータＩＤ３３４は、当該ライトコンプリーションパケット３３０を発行したコンポーネントの一意な識別子である。なお、当該ライトコンプリーションパケット３３０を発行したコンポーネントは、ライトリクエストパケット３２０を受信しているので、コンプリータである。
【００９７】
コンプリータは、ライトリクエストパケット３２０をリクエスタから受信する。すると、コンプリータは、受信したライトリクエストパケット３２０に含まれるデータ３２６を書き込む。そして、コンプリータは、データ３２６の書き込みを完了すると、ライトコンプリーションパケット３３０を、ライトリクエストパケット３２０と同一の経路で（同一のアクセスパスを用いて）、リクエスタに送信する。
【００９８】
図８は、本発明の実施の形態の障害報告パケット３４０の構成図である。
【００９９】
障害報告パケット３４０は、障害を通知するためのパケットである。障害報告パケット３４０は、例えば、キャッシュメモリ部７がライトリクエストパケット３２０によって要求されたデータの書き込み時に障害が検出されたときに発行される。
【０１００】
障害報告パケット３４０は、パケット種類３４１、リクエスタＩＤ３４２、タグ番号３４３、報告部位ＩＤ３４４及びエラー内容３４３を含む。
【０１０１】
パケット種類３４１は、当該パケットの種類を示す。当該パケットは障害報告パケット３４０なので、パケット種類３４１は、障害報告パケット３４０であることを示す。
【０１０２】
リクエスタＩＤ３４２は、障害検出時に処理されていたリードリクエストパケット３００又はライトリクエストパケット３２０を発行したコンポーネントの一意な識別子である。つまり、リードリクエストパケット３００のリクエスタＩＤ３０３と、当該リードリクエストパケット３００に対応する障害報告パケット３４０のリクエスタＩＤ３４２とは、同一の値となる。又は、ライトリクエストパケット３２０のリクエスタＩＤ３２３と、当該ライトリクエストパケット３２０に対応する障害報告パケット３４０のリクエスタＩＤ３４２とは、同一の値となる。
【０１０３】
タグ番号３４３は、リクエスタＩＤ３４２によって識別されるコンポーネントが発行したパケットの中から、障害検出時に処理されていたリードリクエストパケット３００又はライトリクエストパケット３２０を識別するための識別子である。つまり、リードリクエストパケット３００のタグ番号３０４と、当該リードリクエストパケット３００に対応する障害報告パケット３４０のタグ番号３４３とは、同一の値となる。又は、ライトリクエストパケット３２０のタグ番号３２４と、当該ライトリクエストパケット３２０に対応する障害報告パケット３４０のタグ番号３４３とは、同一の値となる。
【０１０４】
報告部位ＩＤ３４４は、当該障害報告パケット３４０を発行したコンポーネントの一意な識別子である。
【０１０５】
エラー内容３４５は、当該障害報告パケット３４０によって通知される障害の内容である。例えば、エラー内容３４５は、障害がタイムアウトエラー又はリンクエラーであることを示す。
【０１０６】
コンプリータは、リードリクエストパケット３００又はライトリクエストパケット３２０をリクエスタから受信する。すると、コンプリータは、受信したリードリクエストパケット３００又はライトリクエストパケット３２０を処理する。このときに、コンプリータが、障害を検出したとする。すると、コンプリータは、受信したリードリクエストパケット３００又はライトリクエストパケット３２０と同一の経路で（同一のアクセスパスを用いて）、障害報告パケット３４０をリクエスタに送信する。
【０１０７】
図９は、本発明の実施の形態のモジュール１０に備わるチャネル制御部４の構成のブロック図である。
【０１０８】
チャネル制御部４は、一つ以上のプロセッサ１１１、メモリモジュール１１２、周辺処理部１１３、一つ以上のチャネルプロトコル処理部１１４、内部ネットワークインタフェース部１１７、パケット制御部１１８及びパケット管理部９０を備える。
【０１０９】
周辺処理部１１３は、バス等を介してプロセッサ１１１、メモリモジュール１１２及びチャネルプロトコル処理部１１４に接続される。そして、周辺処理部１１３は、接続されているメモリモジュール１１２を制御する。また、周辺処理部１１３は、障害報告信号線１１９を介してパケット管理部９０に接続される。
【０１１０】
周辺処理部１１３は、プロセッサ１１１、チャネルプロトコル処理部１１４及び内部ネットワークインタフェース部１１７からパケットを受信する。次に、周辺処理部１１３は、受信したパケットの送信先アドレスがメモリモジュール１１２を示すか否かを判定する。パケットの送信先アドレスがメモリモジュール１１２を示す場合、周辺処理部１１３は、受信したパケットによって要求された処理を行う。このとき、周辺処理部１１３は、必要ならばデータを送信する。
【０１１１】
一方、パケットの送信先アドレスがメモリモジュール１１２以外を示す場合、周辺処理部１１３は、受信したパケットの送信先アドレスを参照して、受信したパケットを転送する。
【０１１２】
プロセッサ１１１は、周辺処理部１１３を介してメモリモジュール１１２にアクセスする。そして、プロセッサ１１１は、メモリモジュール１１２に記憶されている制御プログラム１１２１を実行することによって、各種処理を行う。なお、プロセッサ１１１は、四つを図示しているが、チャネル制御部４にいくつ備わっていてもよい。
【０１１３】
メモリモジュール１１２は、プロセッサ１１１に実行されるプログラム及びプロセッサ１１１に必要とされる情報等を記憶する。具体的には、メモリモジュール１１２は、制御プログラム１１２１、メールボックス１１２２、転送リスト１１２３及び資源管理テーブル１１２４を記憶する。
【０１１４】
制御プログラム１１２１は、プロセッサ１１１に実行されるプログラムであり、チャネル制御部４の全体を制御する。メールボックス１１２２は、複数のプロセッサ１１１間で通信を行うための記憶領域である。転送リスト１１２３は、チャネルプロトコル処理部１１４がＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を行うための情報である。具体的には、転送リスト１１２３は、キャッシュメモリ部７内のアドレスのリストである。
【０１１５】
資源管理テーブル１１２４は、キャッシュメモリ部７を含むそれぞれのコンポーネントの状態を示す。プロセッサ１１１は、資源管理テーブル１１２４に基づいて、それぞれのコンポーネントにアクセスできるか否かを判定する。
【０１１６】
チャネルプロトコル処理部１１４は、チャネル１２のプロトコルを制御する。具体的には、チャネルプロトコル処理部１１４は、ストレージシステム１の外部のプロトコルとストレージシステム１の内部のプロトコルとを相互に変換する。
【０１１７】
例えば、チャネルプロトコル処理部１１４が、チャネル１２を介してホストコンピュータ２から、リード要求を受信したとする。すると、チャネルプロトコル１１４は、受信したリード要求を解析することによって、リード要求の送信元であるホストコンピュータ２の識別子、読み出し対象となるＬＵの番号（ＬＵＮ）及び読み出し対象となるブロックのアドレス（対象ブロックアドレス）を特定する。そして、チャネルプロトコル処理部１１４は、特定したホストコンピュータの識別子、ＬＵＮ及び対象ブロックアドレスをプロセッサ１１１に通知する。
【０１１８】
プロセッサ１１１は、チャネルプロトコル処理部１１４から通知を受けると、共有メモリ部８に記憶されるディレクトリ情報にアクセスする。これによって、プロセッサ１１１は、リード要求によって読み出しを要求されたデータ（リードデータ）がキャッシュメモリ部７に格納されているか否かを判定する。
【０１１９】
リードデータがキャッシュメモリ部７に格納されている場合、プロセッサ１１１は、転送リスト１１２３を作成し、メモリモジュール１１２に格納する。すると、チャネルプロトコル１１４は、作成された転送リスト１１２３に基づいて、キャッシュメモリ部７に格納されているリードデータを、ホストコンピュータ２に転送する。
【０１２０】
一方、リードデータがキャッシュメモリ部７に格納されていない場合、プロセッサ１１１は、リードデータのステージングをディスク制御部５に要求する。すると、ディスク制御部５は、ＨＤＤ３に格納されているリードデータを、キャッシュメモリ部７に格納する。そして、プロセッサ１１１は、転送リスト１１２３を作成し、メモリモジュール１１２に格納する。すると、チャネルプロトコル１１４は、作成された転送リスト１１２３に基づいて、キャッシュメモリ部７に格納されているリードデータを、ホストコンピュータ２に転送する。
【０１２１】
また、チャネルプロトコル処理部１１４が、チャネル１２を介してホストコンピュータ２から、ライト要求を受信したとする。すると、チャネルプロトコル１１４は、受信したライト要求を解析することによって、ライト要求の送信元であるホストコンピュータ２の識別子、書き込み対象となるＬＵの番号（ＬＵＮ）及び書き込み対象となるブロックのアドレス（対象ブロックアドレス）を特定する。そして、チャネルプロトコル処理部１１４は、特定したホストコンピュータの識別子、ＬＵＮ及び対象ブロックアドレスをプロセッサ１１１に通知する。
【０１２２】
プロセッサ１１１は、通知を受けると、共有メモリ部８に記憶されるディレクトリ情報にアクセスする。これによって、プロセッサ１１１は、ライト要求によって書き込みを要求されたデータ（ライトデータ）を格納すべき記憶領域（ライト領域）がキャッシュメモリ部７に存在するか否かを判定する。
【０１２３】
ライト領域がキャッシュメモリ部７に存在する場合、プロセッサ１１１は、転送リスト１１２３を作成し、メモリモジュール１１２に格納する。すると、チャネルプロトコル１１４は、作成された転送リスト１１２３に基づいて、ライトデータをキャッシュメモリ部７に転送する。
【０１２４】
一方、ライト領域がキャッシュメモリ部７に存在しない場合、プロセッサ１１１は、デステージをディスク制御部５に要求する。すると、ディスク制御部５は、デステージを行うことによって、ライト領域をキャッシュメモリ部７内に作成する。そして、プロセッサ１１１は、転送リスト１１２３を作成し、メモリモジュール１１２に格納する。すると、チャネルプロトコル１１４は、作成された転送リスト１１２３に基づいて、ライトデータをキャッシュメモリ部７に転送する。
【０１２５】
内部ネットワークインタフェース部１１７は、内部パス１５を介して内部スイッチ部９と接続されるインタフェースである。内部ネットワークインタフェース部１１７は、例えば、パラレル／シリアル等の信号変換、物理的な電圧変換及びプロトコル実行等を行う。
【０１２６】
パケット制御部１１８は、パケット生成部１１８１、パス選択部１１８２、パケットデコード部１１８３及びパス状態レジスタ１１８４を備える。
【０１２７】
パス状態レジスタ１１８４は、それぞれの内部パス１５が使用可能であるか否かを示す。
【０１２８】
パケット生成部１１８１は、プロセッサ１１１又はチャネルプロトコル処理部１１４からのパケット生成要求に基づいて、パケットを生成する。
【０１２９】
パス選択部１１８２は、パケット生成要求及びパス状態レジスタ１１８４に基づいて、生成されたパケットの送信に使用されるパスを選択する。具体的には、パス選択部１１８２は、パス状態レジスタ１１８４が使用不可を示している内部パス１５を選択しない。つまり、パス選択部１１８２は、パス状態レジスタ１１８４が使用可能を示している内部パス１５の中から、生成されたパケットの送信に使用される内部パス１５を選択する。
【０１３０】
例えば、パス選択部１１８２は、パス状態レジスタ１１８４が使用可能を示している内部パス１５の中から、使用量が少ない内部パス１５を選択してもよいし、ラウンドロビンアルゴリズムなどを用いて内部パス１５を選択してもよい。
【０１３１】
そして、パス選択部１１８２は、選択した内部パス１５を、パケット生成部１１８１に通知する。すると、パケット生成部１１８１は、通知された内部パス１５に接続されているパケット管理部９０に、生成したパケットを送信する。
【０１３２】
パケットデコード部１１８３は、パケット管理部９０からパケットを受信する。すると、パケットデコーダ部１１８３は、受信したパケットを解釈し、受信したパケットを、プロセッサ１１１及びチャネルプロトコル処理部１１４が処理できる形式に変換する。
【０１３３】
また、パケットデコード部１１８３は、障害報告パケット３４０を受信すると、障害報告信号線１１９を介してプロセッサ１１１に障害を通知する。このとき、パケットデコード部１１８３は、割り込みなどの手段を用いて、プロセッサ１１１に障害を通知する。なお、障害を通知されたときのプロセッサ１１１の処理（障害処理）については、図１７で詳細を説明する。
【０１３４】
パケット管理部９０は、リクエストパケット３００、３２０とコンプリーションパケット３１０、３３０との対応を把握しながら、タイマー監視を行う。これによって、パケット管理部９０は、コンポーネントの障害を検出する。パケット管理部については図１４で詳細を説明する。
【０１３５】
なお、ディスク制御部５の構成は、チャネル制御部４の構成と同様である。ただし、ディスク制御部５とチャネル制御部４とでは、制御プログラム１１２１が異なる。また、ディスク制御部５に備わるチャネルプロトコル処理部１１４は、ホストコンピュータ２でなく、ハードディスクドライブ５０と通信する。なお、チャネル１２のプロトコルとＨＤＤチャネル１３のプロトコルとは、同一であってもよいし、異なっていてもよい。
【０１３６】
ディスク制御部５に備わるチャネルプロトコル処理部１１４は、ＨＤＤチャネル１３のプロトコルを制御する。
【０１３７】
ディスク制御部５に備わるプロセッサ１１１は、所定の間隔で、キャッシュメモリ部７に格納されているデータを、ＨＤＤ３に格納する。また、ディスク制御部５に備わるプロセッサ１１１は、チャネル制御部４からの要求に応じて、キャッシュメモリ部７に格納されているデータを、ＨＤＤ３に格納してもよい。
【０１３８】
また、ディスク制御部５に備わるプロセッサ１１１は、ステージングの要求をチャネル制御部４から受けると、ハードディスクドライブ５０に格納されているデータを読み出す。そして、ディスク制御部５に備わるプロセッサ１１１は、読み出したデータを、キャッシュメモリ部７に書き込む。
【０１３９】
一方、ディスク制御部５に備わるプロセッサ１１１は、デステージの要求をチャネル制御部４から受けると、ライトデータを格納すべき記憶領域をキャッシュメモリ部７に作成する。具体的には、ディスク制御部５に備わるプロセッサ１１１は、キャッシュメモリ部７に格納されているデータを、ＨＤＤ３に戻すことによって、ライトデータを格納すべき記憶領域をキャッシュメモリ部７に作成する。
【０１４０】
更に、ディスク制御部５に備わるプロセッサ１１１は、ＨＤＤ３の可用性及び性能を向上させるため、ＨＤＤ３に対してＲＡＩＤ制御を行う。
【０１４１】
図１０は、本発明の実施の形態のチャネル制御部４に備わるパケット生成部１１８１の説明図である。
【０１４２】
パケット生成部１１８１は、リクエスタＩＤレジスタ１１８５及びタグ番号生成部１１８６を含む。リクエスタＩＤレジスタ１１８５は、当該リクエスタＩＤレジスタ１１８５を備えるチャネル制御部４の一意な識別子（リクエスタＩＤ）を記憶する。なお、リクエスタＩＤレジスタ１１８５に記憶されるリクエスタＩＤは、当該リクエスタＩＤレジスタ１１８５を備えるチャネル制御部４の接続位置によって決定される。
【０１４３】
タグ番号生成部１１８６は、リクエストパケット３００、３２０のタグ番号３０４、３２４を生成する。具体的には、タグ番号生成部１１８６は、リクエストパケット３００、３２０を発行するたびに、前回発行されたリクエストパケット３００、３２０のタグ番号３０４、３２４に「１」を加算する。そして、前回発行されたリクエストパケット３００、３２０のタグ番号３０４、３２４が最大値の場合、タグ番号生成部１１８６は、最小値の「０」をタグ番号３０４、３２４として生成する。
【０１４４】
プロセッサ１１１は、パケット生成要求をパケット生成部１１８１に送信する。なお、パケット生成要求には、生成が要求されるパケットの種類及び当該パケットの送信先アドレスが含まれる。パケットの種類は、リードリクエストパケット３００又はライトリクエストパケット３２０のいずれの生成が要求されるかを示す。
【０１４５】
このとき、プロセッサ１１１は、資源管理テーブル１１２４を参照して、パス状態レジスタ１１８４を設定する。具体的には、プロセッサ１１１は、それぞれの内部パス１５がパケットの送信に使用できるか否かを判定する。そして、プロセッサ１１２４は、判定した結果を、パス状態レジスタ１１８４に格納する。
【０１４６】
つまり、パス状態レジスタ１１８４は、当該パス状態レジスタ１１８４に対応する内部パス１５がパケットの送信に使用できるか否かを示す。
【０１４７】
本説明図では、一つの内部パス１５と一つのパス状態レジスタ１１８４とが対応する。しかし、内部パス１５及び送信先アドレスの一つの組み合わせと一つのパス状態レジスタ１１８４とが対応してもよい。この場合は、パス選択部１１８２は、転送先アドレスをも考慮して、パケットの送信に使用されるパスを選択する。
【０１４８】
また、パス状態レジスタ１１８４が、チャネル制御部４に備わらなくてもよい。この場合、パス選択部１１８２は、メモリモジュール１１２に記憶される資源管理テーブル１１２４を参照することによって、パケットの送信に使用されるパスを選択する。
【０１４９】
パケット生成部１１８１は、パケット生成要求をプロセッサ１１１から受信する。すると、パケット生成部１１８１は、受信したパケット生成要求に基づいて、パケットを生成する。
【０１５０】
まず、受信したパケット生成要求に含まれるパケットの種類が、リードリクエストパケット３００を示す場合を説明する。この場合、パケット生成部１１８１は、リードリクエストパケット３００を作成する。
【０１５１】
まず、パケット生成部１１８１は、リードリクエストパケット３００のパケット種類３０１に、リードリクエストパケット３００であることを示す情報を格納する。次に、パケット生成部１１８１は、リードリクエストパケット３００の送信先アドレス３０２に、パケット生成要求に含まれる送信先アドレスを格納する。
【０１５２】
次に、パケット生成部１１８１は、リードリクエストパケット３００のリクエスタＩＤ３０３に、リクエスタＩＤレジスタ１１８５に記憶される値を格納する。次に、パケット生成部１１８１は、リードリクエストパケット３００のタグ番号３０４に、タグ番号生成部１１８６によって生成されるタグ番号を格納する。次に、パケット生成部１１８１は、読み出しを要求されるデータの大きさを、リードリクエストパケット３００のデータ長３０５に格納する。
【０１５３】
一方、受信したパケット生成要求に含まれるパケットの種類が、ライトリクエストパケット３２０を示す場合を説明する。この場合、パケット生成部１１８１は、ライトリクエストパケット３２０を作成する。
【０１５４】
まず、パケット生成部１１８１は、ライトリクエストパケット３２０のパケット種類３２１に、ライトリクエストパケット３２０であることを示す情報を格納する。次に、パケット生成部１１８１は、ライトリクエストパケット３２０の送信先アドレス３２２に、パケット生成要求に含まれる送信先アドレスを格納する。
【０１５５】
次に、パケット生成部１１８１は、ライトリクエストパケット３２０のリクエスタＩＤ３２３に、リクエスタＩＤレジスタ１１８５に記憶される値を格納する。次に、パケット生成部１１８１は、ライトリクエストパケット３２０のタグ番号３２４に、タグ番号生成部１１８６によって生成されるタグ番号を格納する。次に、パケット生成部１１８１は、書き込みを要求されるデータの大きさを、ライトリクエストパケット３２０のデータ長３２５に格納する。
【０１５６】
次に、パケット生成部１１８１は、書き込みを要求されるデータを、ライトリクエストパケット３２０のデータ３２６に格納する。次に、パケット生成部１１８１は、書き込みを要求されるデータの妥当性を確認するために使用されるコードを、ライトリクエストパケット３２０の保護コード３２７に格納する。
【０１５７】
なお、ディスク制御部５に備わるパケット生成部１１８４も、チャネル制御部４に備わるものと同一である。よって、詳細な説明は省略する。
【０１５８】
図１１は、本発明の実施の形態のチャネル制御部４に記憶される資源管理テーブル１１２４の説明図である。
【０１５９】
また、資源管理テーブル１１２４は、資源状態１１２４１、パスＡ経由状態１１２４２及びパスＢ経由状態１１２４３を含む。
【０１６０】
資源状態１１２４１は、障害報告によって推測された各コンポーネントの状態を示す。具体的には、資源状態１１２４１は、各コンポーネントが正常であるか否かを示す。例えば、資源状態１１２４１は、キャッシュメモリ部７Ａが正常であり、キャッシュメモリ部７Ｂに障害が発生していることを示す。障害が発生しているコンポーネントの使用は避けるべきなので、正常なコンポーネントのみが使用される。
【０１６１】
パスＡ経由状態１１２４２は、内部パス１５Ａを用いて、各コンポーネントにアクセスできるか否かを示す。また、パスＢ経由状態１１２４３は、内部パス１５Ｂを用いて、各コンポーネントにアクセスできるか否かを示す。
【０１６２】
例えば、内部パス１５Ａに接続する内部スイッチ部９の障害が検出された場合、パスＡ経由状態１１２４２は、すべてのコンポーネントへのアクセスが不可能であることを示す。このように、内部スイッチ部９に障害が発生する場合のみを考慮すれば、パスＡ経由状態１１２４２が、コンポーネントごとにアクセスできるか否かを示す必要はない。
【０１６３】
しかし、内部パス１５Ａに接続する内部スイッチ部９以外の障害も考慮するため、資源管理テーブル１１２４は、内部パス１５と送信先のコンポーネントとの組み合わせごとに、状態を記憶する。
【０１６４】
リンクダウンが検出された場合、リンクダウンした内部パス１５に接続されるコンポーネントへのアクセスのみが不可能となる。また、モジュール１０Ｂの内部スイッチ部９が障害となった場合、障害が発生した内部スイッチ部９に接続する内部パス１５を経由してのアクセスのみが不可能になる。
【０１６５】
本実施の形態では、アクセスされるコンポーネントに障害が発生しない限り、コンポーネントの利用を継続できる。例えば、内部パス１５に障害が発生した場合、異なる内部パス１５を経由することによって、アクセス先のコンポーネントはアクセスされる。これによって、ストレージシステムの高信頼性を保つことができる。
【０１６６】
ストレージシステムは、冗長構成を備えれば、内部パス１５又はコンポーネントのいずれに障害が発生しても、データを失わない。なぜなら、ストレージシステムは、アクセス先となるコンポーネントを、冗長化ペアを構成するもう一方のコンポーネントに切り替えればよいからである。
【０１６７】
しかし、障害が発生してから即座にコンポーネントを切り替えてしまうのは望ましくない。なぜなら、冗長化ペアを構成するもう一方のコンポーネントに障害が発生すると、ストレージシステムがダウンしてしまうからである。すなわち、ストレージシステムの可用性を高めるには、コンポーネントの冗長性を如何に保っていられるかが鍵となる。
【０１６８】
また、コンポーネントが冗長化されていると、リードアクセスが負荷分散される。さらに、コンポーネントを切り替える際には、キャッシュメモリ部７に格納されているデータの再構成が必要となる場合もある。例えば、キャッシュメモリ部７に格納されるリードデータは冗長化される必要がない。そのため、コンポーネントが切り替えた時点で、多くのリードデータが捨てられる。このように、コンポーネントの冗長性を保つことは、ストレージシステムの可能性だけでなく、ストレージシステムの性能をも高めることができる。
【０１６９】
図１２は、本発明の実施の形態のモジュール１０に備わるキャッシュメモリ部７の構成のブロック図である。
【０１７０】
キャッシュメモリ部７は、メモリコントローラ７１、メモリモジュール７２、バッファ７３、コマンド処理部７４、調停器（ＡＲＢ）７５及び内部ネットワークインタフェース部７８を備える。なお、キャッシュメモリ部７は、当該キャッシュメモリ部７に接続される内部パス１５ごとに、内部ネットワークインタフェース７８、バッファ７３及びコマンド処理部７４を備える。
【０１７１】
メモリモジュール７２は、ホストコンピュータ２から読み出しを要求されたデータ及びホストコンピュータ２から書き込みを要求されたデータを一時的に記憶する。メモリコントローラ７１は、メモリモジュール７２を制御することによって、メモリモジュール７２に対してデータを読み書きする。
【０１７２】
内部ネットワークインタフェース部７８は、内部パス１５を介して内部スイッチ部９に接続されるインタフェースである。内部ネットワークインタフェース部７８は、外部からパケットを受信し、受信したパケットをキャッシュメモリ部７の内部で処理できる形式に変換する。そして、内部ネットワークインタフェース部７８は、変換したパケットをバッファ７３に格納する。
【０１７３】
バッファ７３は、内部ネットワークインタフェース部７８から受信したパケットを一時的に記憶する。
【０１７４】
コマンド処理部７４は、バッファ７３に格納されているパケットを順番に抽出し、抽出したパケットを処理する。具体的には、コマンド処理部７４は、抽出したパケットがリードリクエストパケット３００又はライトリクエストパケット３２０のいずれであるかを判定する。
【０１７５】
抽出したパケットがリードリクエストパケット３００の場合、コマンド処理部７４は、当該リードリクエストパケット３００によって読み出しを要求されたデータを、メモリモジュール７２から読み出す。次に、コマンド処理部７４は、読み出したデータを含むリードコンプリーションパケット３１０を作成する。そして、コマンド処理部７４は、作成したリードコンプリーションパケット３１０を、リードリクエストパケット３００の送信元であるリクエスタに送信する。
【０１７６】
一方、抽出したパケットがライトリクエストパケット３２０の場合、コマンド処理部７４は、当該ライトリクエストパケット３２０によって書き込みを要求されたデータを、メモリモジュール７２に書き込む。次に、コマンド処理部７４は、ライトコンプリーションパケット３３０を作成する。そして、コマンド処理部７４は、作成したライトコンプリーションパケット３３０を、ライトリクエストパケット３２０の送信元であるリクエスタに送信する。
【０１７７】
なお、メモリコントローラ７１及びメモリモジュール７２は、複数のコマンド処理部７４によって共有されている。そこで、調停器７５は、コマンド処理部７４からメモリコントローラ７１へのアクセスの競合を調停する。具体的には、調停器７５は、ラウンドロビンアルゴリズムなどによって、メモリコントローラ７１へのアクセスが許可されるコマンド処理部７４を決定する。
【０１７８】
そのため、コマンド処理部７４は、メモリコントローラ７１にアクセスする際に、ＲＥＱ信号線７６を介して調停器７５にアクセス要求を送信する。すると、調停器７５は、メモリコントローラ７１へのアクセスが許可されるコマンド処理部７４を決定する。そして、調停器７５は、ＧＮＴ信号線７７を介して、決定したコマンド処理部７４にアクセス許可を送信する。
【０１７９】
なお、共有メモリ部８の構成は、キャッシュメモリ部７の構成と同様である。ただし、共有メモリ部８に格納されるデータと、キャッシュメモリ部７に格納されるデータとでは、用途が異なるため、平均のデータ長が異なる。そのため、共有メモリ部８とキャッシュメモリ部７とでは、メモリモジュール７２及びバッファ７３の容量が異なる。
【０１８０】
図１３は、本発明の実施の形態のモジュール１０に備わる内部スイッチ部９の構成のブロック図である。
【０１８１】
内部スイッチ部９は、パケット管理部９０、交換部９１、リクエストパケット用ルーティングテーブル９２、コンプリーション・障害報告パケット用ルーティングテーブル９３、障害報告パケット作成部９４及び内部ネットワークインタフェース部９８を備える。なお、内部スイッチ部９は、当該内部スイッチ部９に接続される内部パス１５ごとに、パケット管理部９０及び内部ネットワークインタフェース部９８を備える。
【０１８２】
リクエストパケット用ルーティングテーブル９２は、リクエストパケット３００、３２０に含まれる送信先アドレス３０２、３２２と、当該リクエストパケット３００、３２０の送信に使用される内部パス１５との対応を示す。
【０１８３】
コンプリーション・障害報告パケット用ルーティングテーブル９３は、コンプリーションパケット３１０、３３０又は障害報告パケット３４０に含まれるリクエスタＩＤ３１２、３３２又は３４２と、当該コンプリーションパケット３１０、３３０又は障害報告パケット３４０の送信に使用される内部パス１５との対応を示す。
【０１８４】
なお、リクエストパケット用ルーティングテーブル９２及びコンプリーション・障害報告パケット用ルーティングテーブル９３は、初期設定時又は増設時等に設定される。
【０１８５】
内部ネットワークインタフェース部９８は、内部パス１５を介してチャネル制御部４、ディスク制御部５、キャッシュメモリ部７、共有メモリ部８又は他の内部スイッチ部９等のいずれかに接続されるインタフェースである。内部ネットワークインタフェース部９８は、外部からパケットを受信し、受信したパケットを内部スイッチ部９の内部で処理できる形式に変換する。そして、内部ネットワークインタフェース部９８は、変換したパケットを、パケット管理部９０に送信する。
【０１８６】
パケット管理部９０は、内部ネットワークインタフェース部９８からパケットを受信する。すると、パケット管理部９０は、受信したパケットの種類を特定する。受信したパケットがコンプリーションパケット３１０、３３０又は障害報告パケット３４０である場合、パケット管理部９０は、当該受信したパケット３１０、３３０、３４０に設定されたタイムアウトの時刻をリセットする。そして、パケット管理部９０は、内部ネットワークインタフェース部９８から受信したパケットを交換部９１に送信する。なお、パケット管理部９０については、図１４で詳細を説明する。
【０１８７】
交換部９１は、パケット管理部９０から受信したパケットに基づいて、当該パケットの送信に使用する内部パス１５を選択する。
【０１８８】
具体的には、交換部９１は、受信したパケットの種類を特定する。受信したパケットがコンプリーションパケット３１０、３３０又は障害報告パケット３４０である場合、交換部９１は、受信したパケット３１０、３３０、３４０から、リクエスタＩＤ３１２、３３２、３４２を抽出する。次に、交換部９１は、抽出したリクエスタＩＤ３１２、３３２、３４２及びコンプリーション・障害報告パケット用ルーティングテーブル９３に基づいて、当該受信したパケット３１０、３３０、３４０の送信に使用する内部パス１５を選択する。
【０１８９】
一方、受信したパケットがリクエストパケット３００、３２０である場合、交換部９１は、受信したリクエストパケット３００、３２０から、送信先アドレス３０２、３２２を抽出する。次に、交換部９１は、抽出した送信先アドレス３０２、３２２及びリクエストパケット用ルーティングテーブル９２に基づいて、当該受信したリクエストパケット３０２、３２２の送信に使用する内部パス１５を選択する。
【０１９０】
次に、交換部９１は、選択した内部パス１５に接続されるパケット管理部９０に、受信したパケットを送信する。
【０１９１】
パケット管理部９０は、交換部９１からパケットを受信する。すると、パケット管理部９０は、受信したパケットの種類を特定する。受信したパケットがリクエストパケット３００、３２０である場合、パケット管理部９０は、受信したリクエストパケット３００、３２０から、リクエスタＩＤ３０３、３２３及びタグ番号３０４、３２４を抽出する。次に、パケット管理部９０は、抽出したリクエスタＩＤ３０３、３２３及びタグ番号３０４、３２４を記憶する。これによって、パケット管理部９０は、受信したリクエストパケット３００、３２０に対応するコンプリケーションパケット３１０、３３０にタイムアウトの時刻を設定する。そして、パケット管理部９０は、交換部９１から受信したパケットを、内部ネットワークインタフェース部９８に送信する。
【０１９２】
内部ネットワークインタフェース部９８は、パケット管理部９０から受信したパケットを、内部パス１５から送信可能な形式に変換する。そして、内部ネットワークインタフェース部９８は、変換したパケットを内部パス１５から送信する。
【０１９３】
一方、パケット管理部９０は、コンプリーションパケット３１０、３３０に設定されたタイムアウト時刻の経過を検知すると、障害報告パケット作成部９４に、タイムアウトの障害報告パケット３４０の作成を要求する。このとき、パケット管理部９０は、タイムアウトを起こしたリクエストパケット３００、３２０のリクエスタＩＤ３０３、３２３及びタグ番号３０４、３２４を障害報告パケット作成部９４に通知する。
【０１９４】
すると、障害報告パケット作成部９４は、障害報告パケット３４０を作成する。そして、障害報告パケット作成部９４は、作成した障害報告パケット３４０を交換部９１に送信する。なお、障害報告パケット３４０は、パケット管理部９０から通知されたリクエスタＩＤ３０３、３２３及びタグ番号３０４、３２４を含む。そのため、障害報告パケット３４０は、パケット管理部９０から通知されたリクエスタＩＤ３０３、３２３によって識別されるコンポーネントに送信される。
【０１９５】
なお、内部パス１５のリンクダウンが発生すると、当該内部パス１５に接続するパケット管理部９０は、当該リンクダウンが発生した内部パス１５からリクエストパケット３００、３２０を送信できない。よって、パケット管理部９０は、障害報告パケット作成部９４に、リンクダウンの障害報告パケット３４０の作成を要求する。このとき、パケット管理部９０は、送信できなかったリクエストパケット３００、３２０のリクエスタＩＤ３０３、３２３及びタグ番号３０４、３２４を障害報告パケット作成部９４に通知する。
【０１９６】
図１４は、本発明の実施の形態のパケット管理部９０の構成のブロック図である。
【０１９７】
パケット管理部９０は、チャネル制御部４、ディスク制御部５又は内部スイッチ部９（コンポーネント）に備わる。パケット管理部９０は、当該パケット管理部９０を備えるコンポーネントに接続される内部パス１５ごとに備わる。パケット管理部９０は、リクエストパケット３００、３２０に対応するコンプリーションパケット３１０、３３０が設定された時間内に返ってくるか否かを判定する。
【０１９８】
パケット管理部９０は、タグ番号テーブル９０１、タイムアウト値設定レジスタ（ＴＯＶ設定レジスタ）９０２、リクエストパケット送信部９０３、空きエントリ検索部９０４、加算器９０５、タイマ９０６、リクエスタＩＤ・タグ番号検索部９０７、コンプリーションパケット・障害報告パケット受信部９０８及び比較器（ＣＭＰ）９０９を備える。
【０１９９】
タグ番号テーブル９０１は、有効欄９０１１、リクエスタＩＤ９０１２、タグ番号９０１３及びタイムアウト時刻９０１４を含む。
【０２００】
有効欄９０１１は、当該エントリに格納されている情報が有効であるか否かを示す。例えば、当該エントリが有効である場合、有効欄９０１１には「ｖａｌｉｄ」が格納される。一方、当該エントリが無効である場合、有効欄９０１１には「ｉｎｖａｌｉｄ」が格納される。
【０２０１】
リクエスタＩＤ９０１２は、当該エントリのタイムアウト時刻９０１４が設定されているコンプリケーションパケット３１０、３３０に対応するリクエストパケット３００、３２０を発行したコンポーネントの一意な識別子を示す。よって、リクエスタＩＤ９０１２は、当該エントリのタイムアウト時刻９０１４が設定されているコンプリケーションパケット３１０、３３０のリクエスタＩＤ３１２、３３２をも示す。
【０２０２】
タグ番号９０１３は、当該エントリのタイムアウト時刻９０１４が設定されているコンプリケーションパケット３１０、３３０に対応するリクエストパケット３００、３２０を識別するための識別子を示す。よって、タグ番号９０１３は、当該エントリのタイムアウト時刻９０１４が設定されているコンプリケーションパケット３１０、３３０のタグ番号３１３、３３３をも示す。
【０２０３】
タイムアウト時刻９０１４は、当該エントリのリクエスタＩＤ９０１２及びタグ番号９０１３によって識別されるコンプリケーションパケット３１０、３３０がタイムアウトエラーであると判定される時刻である。
【０２０４】
ＴＯＶ設定レジスタ９０２は、タイムアウト値を記憶する。タイムアウト値は、リクエストパケット３００、３２０が送信されてから、当該リクエストパケット３００、３２０に対応するコンプリケーションパケット３１０、３３０がタイムアウトエラーと判定されるまでの時間である。タイマ９０６は、現在の時刻を示す。
【０２０５】
まず、パケット管理部９０が、内部パス１５からリクエストパケット３００、３２０を送信する場合の処理を説明する。
【０２０６】
リクエストパケット送信部９０３は、リクエストパケット３００、３２０を受信する。次に、リクエストパケット送信部９０３は、受信したリクエストパケット３００、３２０から、リクエスタＩＤ３０３、３２３及びタグ番号３０４、３２４を抽出する。
【０２０７】
次に、空きエントリ検索部９０４は、有効な値が格納されていないエントリ（空きエントリ）を、タグ番号テーブル９０１から検索する。具体的には、空きエントリ検索部９０４は、有効欄９０１１に「ｉｎｖａｌｉｄ」が格納されているエントリを、タグ番号テーブル９０１から検索する。
【０２０８】
次に、リクエストパケット送信部９０３は、空きエントリ検索部９０４によって検索されたエントリの有効欄９０１１に、「ｖａｌｉｄ」を格納する。次に、リクエストパケット送信部９０３は、抽出したリクエスタＩＤ３０３、３２３を、空きエントリ検索部９０４によって検索されたエントリのリクエスタＩＤ９０１２に格納する。次に、リクエストパケット送信部９０３は、抽出したタグ番号３０４、３２４を、空きエントリ検索部９０４によって検索されたエントリのタグ番号９０１３に格納する。
【０２０９】
次に、加算器９０５は、ＴＯＶレジスタ９０２から、タイムアウト値を取得する。次に、加算器９０５は、タイマ９０６から、現在の時刻を取得する。次に、加算器９０５は、取得した現在の時刻に、取得したタイムアウト値を加算する。そして、加算器９０５は、加算した結果を、空きエントリ検索部９０４によって検索されたエントリのタイムアウト時刻９０１４に格納する。
【０２１０】
一方、比較器９０９は、有効欄９０１１に「ｖａｌｉｄ」が格納されているエントリを選択し、以下の処理を行う。比較器９０９は、選択したエントリから、タイムアウト時刻９０１４を抽出する。次に、比較器９０９は、タイマ９０６から、現在の時刻を取得する。次に、比較器９０９は、取得した現在の時刻が、抽出したタイムアウト時刻９０１４に到達したか否かを判定する。
【０２１１】
現在の時刻がタイムアウト時刻９０１４に到達した場合、比較器９０９は、選択したエントリに対応するコンプリーションパケット３１０、３３０をタイムアウトエラーと判定する。そこで、比較器９０９は、選択したエントリから、リクエスタＩＤ９０１２及びタグ番号９０１３を抽出する。そして、比較器９０９は、障害報告パケット作成部９４に、タイムアウトの障害報告パケット３４０の作成を要求する。このとき、比較器９０９は、抽出したリクエスタＩＤ９０１２及び抽出したタグ番号９０１３を障害報告パケット作成部９４に通知する。なお、比較器９０９は、パケット管理部９０によるパケットの送受信の処理とは独立して、タイムアウト検出処理を行う。
【０２１２】
次に、パケット管理部９０が、内部パス１５からコンプリーションパケット３１０、３３０又は障害報告パケット３４０を受信する場合の処理を説明する。
【０２１３】
コンプリーションパケット・障害報告パケット受信部９０８は、コンプリーションパケット３１０、３３０又は障害報告パケット３４０を受信する。次に、コンプリーションパケット・障害報告パケット受信部９０８は、受信したコンプリーションパケット３１０、３３０又は障害報告パケット３４０から、リクエスタＩＤ３１２、３３２、３４２及びタグ番号３１３、３３３、３４３を抽出する。
【０２１４】
次に、コンプリーションパケット・障害報告パケット受信部９０８は、有効欄９０１１に「ｖａｌｉｄ」が格納されているエントリを、タグ番号テーブル９０１から選択する。次に、コンプリーションパケット・障害報告パケット受信部９０８は、抽出したリクエスタＩＤ３１２、３３２、３４２とタグ番号テーブル９０１のリクエスタＩＤ９０１２とが一致するエントリを、選択したエントリの中から選択する。次に、コンプリーションパケット・障害報告パケット受信部９０８は、抽出したタグ番号３１３、３３３、３４３とタグ番号テーブル９０１のタグ番号９０１３とが一致するエントリを、選択したエントリの中から選択する。
【０２１５】
次に、コンプリーションパケット・障害報告パケット受信部９０８は、選択したエントリの有効欄９０１１に、「ｉｎｖａｌｉｄ」を格納する。このとき、コンプリーションパケット・障害報告パケット受信部９０８は、選択したエントリのリクエスタＩＤ９０１２、タグ番号９０１３及びタイムアウト時刻９０１４に格納されている情報を削除してもよい。これによって、コンプリーションパケット・障害報告パケット受信部９０８は、受信したコンプリーションパケット３１０、３３０に設定されたタイムアウト時刻をリセットする。なお、パケット管理部９０は、プロセッサなどによって実現されてもよい。
【０２１６】
図１５は、本発明の実施の形態のパケット管理部９０によって実行されるタグ番号テーブル更新処理のフローチャートである。
【０２１７】
パケット管理部９０は、パケットを受信すると、タグ番号テーブル更新処理を開始する。まず、パケット管理部９０は、受信したパケットの種類を判別する（Ｓ９１１）。
【０２１８】
受信したパケットがリクエストパケット３００、３２０であると、パケット管理部９０は、タグ番号テーブル９０１から、空きエントリを検索する（Ｓ９１２）。具体的には、パケット管理部９０は、有効欄９０１１に「ｉｎｖａｌｉｄ」が格納されているエントリの一つを、タグ番号テーブル９０１から検索する。
【０２１９】
次に、パケット管理部９０は、受信したリクエストパケット３００、３２０から、リクエスタＩＤ３０３、３２３及びタグ番号３０４、３２４を抽出する。次に、パケット管理部９０は、抽出したリクエスタＩＤ３０３、３２３を、検索したエントリのリクエスタＩＤ９０１２に格納する。次に、抽出したタグ番号３０４、３２４を、検索したエントリのタグ番号９０１３に格納する（Ｓ９１３）。
【０２２０】
次に、パケット管理部９０は、タイマ９０６から取得される現在の時刻に、ＴＯＶレジスタ９０２に記憶されるタイムアウト値を加算する。そして、パケット管理部９０は、加算した結果を、検索したエントリのタイムアウト時刻９０１４に格納する。更に、パケット管理部９０は、検索したエントリの有効欄９０１１に「ｖａｌｉｄ」を格納することによって、検索したエントリを有効化する（Ｓ９１４）。そして、パケット管理部９０は、タグ番号テーブル更新処理を終了する。
【０２２１】
一方、受信したパケットがコンプリーションパケット３１０、３３０であると、パケット管理部９０は、受信したコンプリーションパケット３１０、３３０に対応するエントリを、タグ番号テーブル９０１から検索する（Ｓ９１５）。
【０２２２】
具体的には、パケット管理部９０は、受信したコンプリーションパケット３１０、３３０から、リクエスタＩＤ３１２、３３２及びタグ番号３１３、３３３を抽出する。次に、パケット管理部９０は、有効欄９０１１に「ｖａｌｉｄ」が格納されているエントリを、タグ番号テーブル９０１から選択する。
【０２２３】
次に、パケット管理部９０は、抽出したリクエスタＩＤ３１２、３３２とタグ番号テーブル９０１のリクエスタＩＤ９０１２とが一致するエントリを、選択したエントリの中から選択する。次に、パケット管理部９０は、抽出したタグ番号３１３、３３３とタグ番号テーブル９０１のタグ番号９０１３とが一致するエントリを、選択したエントリの中から選択する。
【０２２４】
次に、パケット管理部９０は、選択したエントリの有効欄９０１１に、「ｉｎｖａｌｉｄ」を格納する。これによって、パケット管理部９０は、受信したコンプリーションパケット３１０、３３０に対応するエントリを無効化する（Ｓ９１６）。そして、パケット管理部９０は、タグ番号テーブル更新処理を終了する。
【０２２５】
一方、受信したパケットが障害報告パケット３４０であると、パケット管理部９０は、受信した障害報告パケット３４０に対応するエントリを、タグ番号テーブル９０１から検索する（Ｓ９１７）。
【０２２６】
具体的には、パケット管理部９０は、受信した障害報告パケット３４０から、リクエスタＩＤ３４２及びタグ番号３４３を抽出する。次に、パケット管理部９０は、有効欄９０１１に「ｖａｌｉｄ」が格納されているエントリを、タグ番号テーブル９０１から選択する。
【０２２７】
次に、パケット管理部９０は、抽出したリクエスタＩＤ３４２とタグ番号テーブル９０１のリクエスタＩＤ９０１２とが一致するエントリを、選択したエントリの中から選択する。次に、パケット管理部９０は、抽出したタグ番号３４３とタグ番号テーブル９０１のタグ番号９０１３とが一致するエントリを、選択したエントリの中から選択する。
【０２２８】
次に、パケット管理部９０は、選択したエントリの有効欄９０１１に、「ｉｎｖａｌｉｄ」を格納する。これによって、パケット管理部９０は、受信した障害報告パケット３４０に対応するエントリを無効化する（Ｓ９１８）。
【０２２９】
次に、パケット管理部９０は、抽出したリクエスタＩＤと当該パケット管理部９０を備えるコンポーネントの識別子とが一致するか否かを判定する（Ｓ９１９）。抽出したリクエスタＩＤと当該パケット管理部９０を備えるコンポーネントの識別子とが一致しない場合、当該障害報告パケット３４０に対応するリクエストパケット３００、３２０は、当該パケット管理部９０を備えるコンポーネント以外によって生成されたものである。そこで、パケット管理部９０は、そのまま、タグ番号テーブル更新処理を終了する。
【０２３０】
一方、抽出したリクエスタＩＤと当該パケット管理部９０を備えるコンポーネントの識別子とが一致する場合、当該障害報告パケット３４０に対応するリクエストパケット３００、３２０は、当該パケット管理部９０を備えるコンポーネントによって生成されたものである。そこで、パケット管理部９０は、障害検出を上位の処理層に通知する（Ｓ９２０）。例えば、パケット管理部９０は、障害検出を、障害報告信号線１１９を介してプロセッサ１１１などに通知する。このとき、パケット管理部９０は、当該障害報告パケット３４０の内容も併せて通知する。そして、パケット管理部９０は、タグ番号テーブル更新処理を終了する。
【０２３１】
なお、プロセッサ１１１は、障害検出の通知を受けると、障害処理を行う。なお、プロセッサ１１１が行う障害処理については、図１７で詳細を説明する。
【０２３２】
図１６は、本発明の実施の形態のパケット管理部９０によって実行されるタイムアウト検出処理のフローチャートである。
【０２３３】
パケット管理部９０は、タグ番号テーブル更新処理とタイムアウト検出処理とを非同期で実行する。例えば、パケット管理部９０は、所定の間隔で、タイムアウト検出処理を行う。
【０２３４】
まず、パケット管理部９０は、タグ番号テーブル９０１に含まれる一つエントリを、上から順番に選択する（Ｓ１００１）。
【０２３５】
次に、パケット管理部９０は、選択したエントリの有効欄９０１１に「ｖａｌｉｄ」が格納されているか否かを判定する。有効欄９０１１に「ｉｎｖａｌｉｄ」が格納されている場合、パケット管理部９０は、そのままステップＳ１００４に進む。
【０２３６】
一方、有効欄９０１１に「ｖａｌｉｄ」が格納されている場合、パケット管理部９０は、選択したエントリのタイムアウト時刻９０１４を経過したか否かを判定する（Ｓ１００２）。
【０２３７】
タイムアウト時刻９０１４を経過していない場合、パケット管理部９０は、そのままステップＳ１００４に進む。一方、タイムアウト時刻９０１４を経過した場合、パケット管理部９０は、選択したエントリに対応するコンプリーションパケット３１０、３３０のタイムアウトエラーの検出と判定する。
【０２３８】
そこで、パケット管理部９０は、選択したエントリから、リクエスタＩＤ９０１２及びタグ番号９０１３を抽出する。次に、パケット管理部９０は、抽出したリクエストＩＤ９０１２と当該パケット管理部９０を備えるコンポーネントの識別子とが一致するか否かを判定する。
【０２３９】
抽出したリクエストＩＤ９０１２と当該パケット管理部９０を備えるコンポーネントの識別子とが一致しない場合、パケット管理部９０は、障害報告パケット３４０を作成して、送信する。そして、パケット管理部９０は、ステップＳ１００４に進む。
【０２４０】
当該作成された障害報告パケット３４０のパケット種類３４１は、障害報告パケット３４０であることを示す。また、当該作成された障害報告パケット３４０のリクエスタＩＤ３４２は、抽出されたリクエスタＩＤ９０１２となる。また、当該作成された障害報告パケット３４０のタグ番号ＩＤ３４３は、抽出されたリクエスタＩＤ９０１３となる。また、当該作成された障害報告パケット３４０の報告部位ＩＤ３４４は、当該パケット管理部９０を備えるコンポーネントの識別子となる。また、また、当該作成された障害報告パケット３４０のエラー内容３４５は、タイムアウトエラーを示す。
【０２４１】
一方、抽出したリクエストＩＤ９０１２と当該パケット管理部９０を備えるコンポーネントの識別子とが一致する場合、パケット管理部９０は、タイムアウトエラーの障害検出を上位の処理層に通知する。例えば、パケット管理部９０は、タイムアウトエラーの障害検出を、障害報告信号線１１９を介してプロセッサ１１１などに通知する（Ｓ１００３）。
【０２４２】
次に、パケット管理部９０は、タグ番号テーブル９０１に含まれるすべてのエントリをステップＳ１００１で選択したか否かを判定する（Ｓ１００４）。すべてのエントリを選択していない場合、パケット管理部９０は、ステップＳ１００１に戻る。そして、パケット管理部９０は、すべてのエントリを選択するまで処理を繰り返す。
【０２４３】
一方、すべてのエントリを選択した場合、パケット管理部９０は、当該タイムアウト検出処理を終了する。
【０２４４】
図１７は、本発明の実施の形態のプロセッサ１１１によって実行される障害処理のフローチャートである。
【０２４５】
本フローチャートでは、簡単のため、同一のモジュール１０内のアクセスにおける障害発生時の処理を説明する。また、プロセッサ１１１は、チャネル制御部４に備わるものであってもよいし、ディスク制御部５に備わるものであってもよい。
【０２４６】
パケット管理部９０は、障害報告パケット３４０を受信した場合又はタイムアウトエラーの障害を検出した場合に、障害検出の通知をプロセッサ１１１に送信する。このとき、パケット管理部９０は、障害の内容及び障害報告部位等を通知する。
【０２４７】
プロセッサ１１１は、パケット管理部９０から、障害検出の通知を受信する（Ｓ１１０１）。次に、プロセッサ１１１は、検出された障害の内容を特定する。そして、プロセッサは、検出された障害がタイムアウトエラー又はリンクダウンエラーのいずれであるかを判定する（Ｓ１１０２）。
【０２４８】
障害がタイムアウトエラーであると、プロセッサ１１１は、障害の報告部位を特定する。そして、プロセッサ１１１は、特定した障害の報告部位が、内部スイッチ部９又は当該プロセッサ１１１と同一のコンポーネントに備わるパケット管理部９０のいずれであるかを判定する（Ｓ１１０３）。
【０２４９】
障害の報告部位が当該プロセッサ１１１と同一のコンポーネントに備わるパケット管理部９０であると、プロセッサ１１１は、内部スイッチ部９の障害と判定する。そこで、プロセッサ１１１は、検出された障害に対応するリクエストパケット３００、３２０を特定する。次に、プロセッサ１１１は、特定したリクエストパケット３００、３２０の送信に用いた内部パス１５を使用不可にする。ここでは、プロセッサ１１１は、障害の報告部位であるパケット管理部９０に接続される内部パス１５を使用不可にする（Ｓ１１０４）。
【０２５０】
例えば、プロセッサ１１１が、内部パス１５Ａを使用不可にする場合を説明する。この場合、プロセッサ１１１は、資源管理テーブル１１２４のパスＡ経由状態１１２４２を、すべてのコンポーネントへのアクセスが不可能であることを示すように変更する。これによって、内部パス１５Ａに接続される内部スイッチ部９が、使用されない。
【０２５１】
次に、プロセッサ１１１は、使用不可にした内部パス１５に接続される内部スイッチ部９を、交換要求部位に追加する（Ｓ１１０５）。
【０２５２】
具体的には、プロセッサ１１１は、資源管理テーブル１１２４の資源状態１１２４１を、当該内部スイッチ部９に障害が発生していることを示すように変更する。そして、プロセッサ１１１は、障害処理を終了する。
【０２５３】
一方、障害の報告部位が内部スイッチ部９であると、プロセッサ１１１は、検出された障害に対応するリクエストパケット３００、３２０の送信先のコンポーネントの障害と判定する。例えば、障害と判定されるコンポーネントは、キャッシュメモリ部７又は共有メモリ部８などである。
【０２５４】
そこで、プロセッサ１１１は、検出された障害に対応するリクエストパケット３００、３２０を特定する。具体的には、プロセッサ１１１は、パケット管理部９０が受信した障害報告パケット３４０のリクエスタＩＤ３４２及びタグ番号３４３に基づいて、リクエストパケット３００、３２０を特定する。
【０２５５】
次に、プロセッサ１１１は、特定したリクエストパケット３００、３２０に含まれる送信先アドレス３０２、３２２を取得する。そして、プロセッサ１１１は、取得した送信先アドレス３０２、３２２によって識別されるコンポーネントを使用不可とする（Ｓ１１０６）。
【０２５６】
例えば、プロセッサ１１１が、キャッシュメモリ部７Ａを使用不可にする場合を説明する。この場合、プロセッサ１１１は、資源管理テーブル１１２４のパスＡ経由状態１１２４２及びパスＢ経由状態１１２４３を、キャッシュメモリ部７Ａへのアクセスが不可能であることを示すように変更する。これによって、キャッシュメモリ部７Ａが、使用されない。
【０２５７】
次に、プロセッサ１１１は、、取得した送信先アドレス３０２、３２２によって識別されるコンポーネントを、交換要求部位に追加する（Ｓ１１０７）。
【０２５８】
例えば、プロセッサ１１１が、キャッシュメモリ部７Ａを交換要求部位に追加する場合を説明する、この場合、プロセッサ１１１は、資源管理テーブル１１２４の資源状態１１２４１を、当該キャッシュメモリ部７Ａに障害が発生していることを示すように変更する。そして、プロセッサ１１１は、障害処理を終了する。
【０２５９】
つまり、プロセッサ１１１は、タイムアウトエラーの障害の通知を受けた場合、障害の報告部位に接続されるコンポーネントに障害が発生したと判定する。つまり、プロセッサ１１１は、障害の報告部位がリクエストパケット３００、３２０を次に転送するコンポーネントに障害が発生したと判定する。
【０２６０】
ここで、異なるモジュール１０間のアクセスにおけるタイムアウトエラーの障害時の処理について説明する。
【０２６１】
プロセッサ１１１は、当該プロセッサ１１１と同一のモジュール１０内に備わる内部スイッチ部９が障害の報告部位の場合、当該障害報告部位である内部スイッチ部９が次にリクエストパケット３００、３２０を転送する内部スイッチ部９に障害が発生したと判定する。つまり、プロセッサ１１１は、リクエストパケット３００、３２０の転送先となるモジュール１０に備わる内部スイッチ部９に障害が発生したと判定する。
【０２６２】
また、プロセッサ１１１は、当該プロセッサ１１１と異なるモジュール１０内に備わる内部スイッチ部９が障害の報告部位の場合、当該障害に対応するリクエストパケット３００、３２０の送信先のコンポーネントの障害と判定する。
【０２６３】
一方、障害がリンクダウンエラーであると、プロセッサ１１１は、障害の報告部位を特定する。そして、プロセッサ１１１は、特定した障害の報告部位が、内部スイッチ部９又は当該プロセッサ１１１と同一のコンポーネントに備わるパケット管理部９０のいずれであるかを判定する。
【０２６４】
障害の報告部位が当該プロセッサ１１１と同一のコンポーネントに備わるパケット管理部９０であると、プロセッサ１１１は、検出された障害に対応するリクエストパケット３００、３２０を特定する。次に、プロセッサ１１１は、当該プロセッサ１１１を備えるコンポーネントに接続される内部パス１５のうち、特定したリクエストパケット３００、３２０の送信に用いた内部パス１５の障害であると判定する。そこで、プロセッサ１１１は、障害と判定した内部パス１５を使用不可にする。ここでは、プロセッサ１１１は、障害の報告部位であるパケット管理部９０に接続される内部パス１５を使用不可にする（Ｓ１１０９）。
【０２６５】
例えば、プロセッサ１１１が、内部パス１５Ａを使用不可にする場合を説明する。この場合、プロセッサ１１１は、資源管理テーブル１１２４のパスＡ経由状態１１２４２を、すべてのコンポーネントへのアクセスが不可能であることを示すように変更する。これによって、内部パス１５Ａが使用されない。
【０２６６】
次に、プロセッサ１１１は、使用不可にした内部パス１５を、交換要求部位に追加する（Ｓ１１１１）。
【０２６７】
具体的には、プロセッサ１１１は、資源管理テーブル１１２４の資源状態１１２４１を、当該内部パス１５に障害が発生していることを示すように変更する。そして、プロセッサ１１１は、障害処理を終了する。
【０２６８】
一方、障害の報告部位が内部スイッチ部９であると、プロセッサ１１１は、検出された障害に対応するリクエストパケット３００、３２０を特定する。具体的には、プロセッサ１１１は、パケット管理部９０が受信した障害報告パケット３４０のリクエスタＩＤ３４２及びタグ番号３４３に基づいて、リクエストパケット３００、３２０を特定する。
【０２６９】
次に、プロセッサ１１１は、特定したリクエストパケット３００、３２０に含まれる送信先アドレス３０２、３２２を取得する。次に、プロセッサ１１１は、取得した送信先アドレス３０２、３２２によって識別されるコンポーネントを、当該特定したリクエストパケット３００、３２０の送信先として特定する。
【０２７０】
そして、プロセッサ１１１は、特定した送信先のコンポーネントと内部スイッチ部９とを接続する内部パス１５の障害であると判定する。そこで、プロセッサ１１１は、障害と判定した内部パス１５を使用不可にする（Ｓ１１１０）。
【０２７１】
例えば、プロセッサ１１１が、内部パス１５Ａを用いることによるキャッシュメモリ部７Ａへのアクセスを不可能にする場合を説明する。この場合、プロセッサ１１１は、資源管理テーブル１１２４のパスＡ経由状態１１２４２を、キャッシュメモリ部７Ａへのアクセスが不可能であることを示すように変更する。
【０２７２】
次に、プロセッサ１１１は、使用不可にした内部パス１５を、交換要求部位に追加する（Ｓ１１１１）。そして、プロセッサ１１１は、障害処理を終了する。
【０２７３】
ここで、異なるモジュール１０間のアクセスにおけるリンクダウンエラーの障害時の処理について説明する。
【０２７４】
プロセッサ１１１は、当該プロセッサ１１１と同一のモジュール１０内に備わる内部スイッチ部９が障害の報告部位の場合、モジュール間パス１１に障害が発生したと判定する。
【０２７５】
また、プロセッサ１１１は、当該プロセッサ１１１と異なるモジュール１０内に備わる内部スイッチ部９が障害の報告部位の場合、内部スイッチ部９と送信先のコンポーネントとを接続する内部パス１５の障害であると判定する。
【０２７６】
以降、本実施の形態のディスク制御装置１における障害検出及びフェイルオーバを説明する。ここでは、チャネル制御部４がキャッシュメモリ部７のライトキャッシュ領域７２１にアクセスする場合を説明する。
【０２７７】
まずは、チャネル制御部４Ａが、当該チャネル制御部４Ａと同じモジュール１０Ａに備わるキャッシュメモリ部７Ａのライトキャッシュ領域７２１にアクセスする場合を説明する。
【０２７８】
図１８は、本発明の実施の形態の正常時におけるディスク制御装置１の処理の説明図である。
【０２７９】
本説明図は、チャネル制御部４Ａから、キャッシュメモリ部７のライトキャッシュ領域７２１へのアクセスが正常に終了した場合である。なお、本説明図において、垂直方向は時間の進行を示す。また、水平方向に並ぶ線は、コンポーネントを示す。
【０２８０】
まず、チャネル制御部４Ａは、キャッシュメモリ部７Ａへリードリクエストパケット３００を送信する（Ｓ２０１）。すると、リードリクエストパケット３００は、内部スイッチ部９Ａを経由して、送信先であるキャッシュメモリ部７Ａに到達する。
【０２８１】
キャッシュメモリ部７Ａは、リードリクエストパケット３００を受信すると、当該リードリクエストパケット３００によって要求されたデータを、メモリモジュール７２から読み出す。そして、キャッシュメモリ部７Ａは、読み出したデータを含むリードコンプリーションパケット３１０を、チャネル制御部４Ａに送信する（Ｓ２０２）。このとき、キャッシュメモリ部７Ａは、リードリクエストパケット３００を受信した内部パス１５から、リードコンプリーションパケット３１０を送信する。
【０２８２】
すると、リードコンプリーションパケット３１０の転送及び当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の転送には、同一のアクセスパスが使用される。すなわち、コンプリーションパケット３１０は、内部スイッチ部９Ａを経由して、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の送信元であるチャネル制御部４Ａに到達する。
【０２８３】
チャネル制御部４Ａは、リードコンプリーションパケット３１０を受信する。よって、当該アクセスは、正常に終了する。
【０２８４】
図１９は、本発明の実施の形態のキャッシュメモリ部７Ａの障害時におけるディスク制御装置１の処理の説明図である。
【０２８５】
本説明図において、垂直方向は時間の進行を示す。また、水平方向に並ぶ線は、コンポーネントを示す。
【０２８６】
まず、チャネル制御部４Ａは、キャッシュメモリ部７Ａへリードリクエストパケット３００を送信する（Ｓ２１１）。すると、リードリクエストパケット３００は、内部スイッチ部９Ａを経由して、送信先であるキャッシュメモリ部７Ａに到達する。
【０２８７】
しかし、キャッシュメモリ部７Ａは、障害に陥っており、リードコンプリーションパケット３１０を送信できない。
【０２８８】
すると、内部スイッチ部９Ａが、転送したリードリクエストパケット３００に対応するリードコンプリーションパケット３１０をキャッシュメモリ部７Ａから受信せずに、所定の時間が経過してしまう。よって、内部スイッチ部９Ａは、タイムアウトエラーの障害を検出する。そこで、内部スイッチ部９Ａは、障害報告パケット３４０を生成する。次に、内部スイッチ部９Ａは、リードリクエストパケット３００の送信元であるチャネル制御部４Ａに、生成した障害報告パケット３４０を送信する（Ｓ２１２）。
【０２８９】
チャネル制御部４Ａは、障害報告パケット３４０を受信する。すると、チャネル制御部４Ａは、障害報告パケット３４０から、リクエスタＩＤ３４２及びタグ番号３４３を抽出する。次に、チャネル制御部４Ａは、抽出したリクエスタＩＤ３４２とタグ番号テーブル９０１のリクエスタＩＤ９０１２とが一致するエントリを、タグ番号テーブル９０１から選択する。次に、チャネル制御部４Ａは、抽出したタグ番号３４３とタグ番号テーブル９０１のタグ番号９０１３とが一致するエントリを、選択したエントリの中から選択する。
【０２９０】
次に、チャネル制御部４Ａは、選択したエントリの有効欄９０１１に「ｉｎｖａｌｉｄ」を格納することによって、選択したエントリを無効化する。これによって、一つのリードコンプリーションパケット３１０に対するタイムアウトが複数検出されることが防止される。但しこのためには、チャネル制御部４Ａに設定されるタイムアウト値及び内部スイッチ部９Ａに設定されるタイムアウト値が適切でなければならない。タイムアウト値の設定については、後述する。
【０２９１】
更に、チャネル制御部４Ａは、障害処理（図１７）を実行する。これによって、チャネル制御部４Ａは、キャッシュメモリ部７Ａの障害と判定する。
【０２９２】
そこで、チャネル制御部４Ａは、キャッシュメモリ部７Ａのライトキャッシュ領域７２１を冗長化しているキャッシュメモリ部７Ｂへ、リードリクエストパケット３００を送信する。すると、リードリクエストパケット３００は、内部スイッチ部９Ａを経由して、送信先であるキャッシュメモリ部７Ｂに到達する（Ｓ２１３）。
【０２９３】
キャッシュメモリ部７Ｂは、リードリクエストパケット３００を受信すると、当該リードリクエストパケット３００によって要求されたデータを、メモリモジュール７２から読み出す。そして、キャッシュメモリ部７Ｂは、読み出したデータを含むリードコンプリーションパケット３１０を、チャネル制御部４Ａに送信する（Ｓ２１４）。このとき、キャッシュメモリ部７Ｂは、リードリクエストパケット３００を受信した内部パス１５から、リードコンプリーションパケット３１０を送信する。
【０２９４】
すると、リードコンプリーションパケット３１０の転送及び当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の転送には、同一のアクセスパスが使用される。すなわち、リードコンプリーションパケット３１０は、内部スイッチ部９Ａを経由して、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の送信元であるチャネル制御部４Ａに到達する。
【０２９５】
チャネル制御部４Ａは、リードコンプリーションパケット３１０を受信する。そして、当該アクセスは終了する。
【０２９６】
このように、キャッシュメモリ部７Ａの障害時には、チャネル制御部４Ａは、要求したデータを、キャッシュメモリ部７Ａを冗長化しているキャッシュメモリ部７Ｂから取得できる。
【０２９７】
図２０は、本発明の実施の形態の内部スイッチ部９Ａの障害時におけるディスク制御装置１の処理の説明図である。
【０２９８】
本説明図において、垂直方向は時間の進行を示す。また、水平方向に並ぶ線は、コンポーネントを示す。
【０２９９】
まず、チャネル制御部４Ａは、キャッシュメモリ部７Ａへリードリクエストパケット３００を送信する（Ｓ２２１）。しかし、内部スイッチ部９Ａに障害が発生しているので、リードリクエストパケット３００は、送信先であるキャッシュメモリ部７Ａに到達しない。
【０３００】
すると、チャネル制御部４Ａが、送信したリードリクエストパケット３００に対応するリードコンプリーションパケット３１０を受信せずに、所定の時間が経過してしまう。よって、チャネル制御部４Ａは、タイムアウトエラーの障害を検出する。そこで、チャネル制御部４Ａは、障害処理（図１７）を実行する。これによって、チャネル制御部４Ａは、内部スイッチ部９Ａの障害と判定する。そこで、チャネル制御部４Ａは、障害と判定した内部スイッチ部９Ａを使用不可とする。
【０３０１】
次に、チャネル制御部４Ａは、内部スイッチ部９Ａを冗長化している内部スイッチ部９Ｂ経由でキャッシュメモリ部７Ａへ、リードリクエストパケット３００を送信する（Ｓ２２２）。すると、リードリクエストパケット３００は、内部スイッチ部９Ｂを経由して、送信先であるキャッシュメモリ部７Ａに到達する。
【０３０２】
キャッシュメモリ部７Ａは、リードリクエストパケット３００を受信すると、当該リードリクエストパケット３００によって要求されたデータを、メモリモジュール７２から読み出す。そして、キャッシュメモリ部７Ａは、読み出したデータを含むリードコンプリーションパケット３１０を、チャネル制御部４Ａに送信する（Ｓ２２３）。このとき、キャッシュメモリ部７Ａは、リードリクエストパケット３００を受信した内部パス１５から、リードコンプリーションパケット３１０を送信する。
【０３０３】
すると、リードコンプリーションパケット３１０の転送及び当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の転送には、同一のアクセスパスが使用される。すなわち、リードコンプリーションパケット３１０は、内部スイッチ部９Ｂを経由して、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の送信元であるチャネル制御部４Ａに到達する。
【０３０４】
チャネル制御部４Ａは、リードコンプリーションパケット３１０を受信する。そして、当該アクセスは終了する。
【０３０５】
このように、内部スイッチ部９Ａの障害時には、チャネル制御部４Ａは、障害が発生している内部スイッチ部９Ａと異なる内部スイッチ部９Ｂを経由して、キャッシュメモリ部７Ａにアクセスできる。
【０３０６】
次に、チャネル制御部４が、当該チャネル制御部４と異なるモジュール１０に備わるキャッシュメモリ部７のライトキャッシュ領域７２１にアクセスする場合を説明する。具体的には、モジュール１０Ａに備わるチャネル制御部４Ａが、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃのライトキャッシュ領域７２１にアクセスする場合を説明する。
【０３０７】
図２１は、本発明の実施の形態の正常時におけるディスク制御装置１の処理の説明図である。
【０３０８】
本説明図は、モジュール１０Ａに備わるチャネル制御部４Ａから、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃのライトキャッシュ領域７２１へのアクセスが正常に終了した場合である。なお、本説明図において、垂直方向は時間の進行を示す。また、水平方向に並ぶ線は、コンポーネントを示す。
【０３０９】
まず、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃへリードリクエストパケット３００を送信する（Ｓ２３１）。すると、リードリクエストパケット３００は、モジュール１０Ａに備わる内部スイッチ部９Ａ及びモジュール１０Ｂに備わる内部スイッチ部９Ｃを経由して、送信先であるキャッシュメモリ部７Ｃに到達する。
【０３１０】
モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、リードリクエストパケット３００を受信すると、当該リードリクエストパケット３００によって要求されたデータを、メモリモジュール７２から読み出す。そして、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、読み出したデータを含むリードコンプリーションパケット３１０を、モジュール１０Ａに備わるチャネル制御部４Ａに送信する（Ｓ２３２）。このとき、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、リードリクエストパケット３００を受信した内部パス１５から、リードコンプリーションパケット３１０を送信する。
【０３１１】
すると、リードコンプリーションパケット３１０の転送及び当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の転送には、同一のアクセスパスが使用される。すなわち、リードコンプリーションパケット３１０は、モジュール１０Ｂに備わる内部スイッチ部９Ｃ及びモジュール１０Ａに備わる内部スイッチ部９Ｃを経由して、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の送信元であるチャネル制御部４Ａに到達する。
【０３１２】
モジュール１０Ａに備わるチャネル制御部４Ａは、リードコンプリーションパケット３１０を受信する。よって、当該アクセスは、正常に終了する。
【０３１３】
図２２は、本発明の実施の形態のモジュール１０Ｂに備わるキャッシュメモリ部７Ｃの障害時におけるディスク制御装置１の処理の説明図である。
【０３１４】
本説明図において、垂直方向は時間の進行を示す。また、水平方向に並ぶ線は、コンポーネントを示す。
【０３１５】
まず、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃへリードリクエストパケット３００を送信する（Ｓ２４１）。すると、リードリクエストパケット３００は、モジュール１０Ａに備わる内部スイッチ部９Ａ及びモジュール１０Ｂに備わる内部スイッチ部９Ｃを経由して、送信先であるキャッシュメモリ部７Ｃに到達する。
【０３１６】
しかし、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、障害に陥っており、リードコンプリーションパケット３１０を送信できない。
【０３１７】
すると、モジュール１０Ｂに備わる内部スイッチ部９Ｃが、転送したリードリクエストパケット３００に対応するリードコンプリーションパケット３１０を、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃから受信せずに、所定の時間が経過してしまう。よって、モジュール１０Ｂに備わる内部スイッチ部９Ｃは、タイムアウトエラーの障害を検出する。そこで、モジュール１０Ｂに備わる内部スイッチ部９Ｃは、障害報告パケット３４０を生成する。次に、モジュール１０Ｂに備わる内部スイッチ部９Ｃは、モジュール１０Ａに備わる内部スイッチ部９Ａを経由して、リードリクエストパケット３００の送信元であるチャネル制御部４Ａに、生成した障害報告パケット３４０を送信する（Ｓ２４２）。
【０３１８】
モジュール１０Ａに備わる内部スイッチ部９Ａは、障害報告パケット３４０を、モジュール１０Ａに備わるチャネル制御部４Ａに転送する。このとき、モジュール１０Ａに備わる内部スイッチ部９Ａは、転送する障害報告パケット３４０から、リクエスタＩＤ３４２及びタグ番号３４３を抽出する。次に、モジュール１０Ａに備わる内部スイッチ部９Ａは、抽出したリクエスタＩＤ３４２とタグ番号テーブル９０１のリクエスタＩＤ９０１２とが一致するエントリを、タグ番号テーブル９０１から選択する。次に、モジュール１０Ａに備わる内部スイッチ部９Ａは、抽出したタグ番号３４３とタグ番号テーブル９０１のタグ番号９０１３とが一致するエントリを、選択したエントリの中から選択する。
【０３１９】
次に、モジュール１０Ａに備わる内部スイッチ部９Ａは、選択したエントリの有効欄９０１１に「ｉｎｖａｌｉｄ」を格納することによって、選択したエントリを無効化する。これによって、一つのリードリクエストコンプリーションパケット３１０に対するタイムアウトが、モジュール１０Ａに備わる内部スイッチ部９Ａ及びモジュール１０Ｂに備わる内部スイッチ部９Ｃの双方によって検出されることを防止する。但しこのためには、モジュール１０Ａに備わる内部スイッチ部９Ａに設定されるタイムアウト値及びモジュール１０Ｂに備わる内部スイッチ部９Ｃに設定されるタイムアウト値が適切でなければならない。
【０３２０】
モジュール１０Ａに備わるチャネル制御部４Ａは、障害報告パケット３４０を受信する。すると、モジュール１０Ａに備わるチャネル制御部４Ａは、障害報告パケット３４０から、リクエスタＩＤ３４２及びタグ番号３４３を抽出する。次に、モジュール１０Ａに備わるチャネル制御部４Ａは、抽出したリクエスタＩＤ３４２とタグ番号テーブル９０１のリクエスタＩＤ９０１２とが一致するエントリを、タグ番号テーブル９０１から選択する。次に、モジュール１０Ａに備わるチャネル制御部４Ａは、抽出したタグ番号３４３とタグ番号テーブル９０１のタグ番号９０１３とが一致するエントリを、選択したエントリの中から選択する。
【０３２１】
次に、モジュール１０Ａに備わるチャネル制御部４Ａは、選択したエントリの有効欄９０１１に「ｉｎｖａｌｉｄ」を格納することによって、選択したエントリを無効化する。これによって、一つのリードコンプリーションパケット３１０に対するタイムアウトが、モジュール１０Ａに備わるチャネル制御部４Ａ及びモジュール１０Ｂに備わる内部スイッチ部９Ｃの双方によって検出されることを防止する。但しこのためには、モジュール１０Ａに備わるチャネル制御部４Ａに設定されるタイムアウト値及びモジュール１０Ｂに備わる内部スイッチ部９Ｃに設定されるタイムアウト値が適切でなければならない。タイムアウト値の設定については、後述する。
【０３２２】
更に、モジュール１０Ａに備わるチャネル制御部４Ａは、障害処理（図１７）を実行する。これによって、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃの障害と判定する。
【０３２３】
そこで、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃのライトキャッシュ領域７２１を冗長化しているキャッシュメモリ部７Ｄへ、リードリクエストパケット３００を送信する。すると、リードリクエストパケット３００は、モジュール１０Ａに備わる内部スイッチ部９Ａ及びモジュール１０Ｂに備わる内部スイッチ部９Ｃを経由して、送信先であるキャッシュメモリ部７Ｄに到達する（Ｓ２４３）。
【０３２４】
モジュール１０Ｂに備わるキャッシュメモリ部７Ｄは、リードリクエストパケット３００を受信すると、当該リードリクエストパケット３００によって要求されたデータを、メモリモジュール７２から読み出す。そして、モジュール１０Ｂに備わるキャッシュメモリ部７Ｄは、読み出したデータを含むリードコンプリーションパケット３１０を、モジュール１０Ａに備わるチャネル制御部４Ａに送信する（Ｓ２４４）。このとき、モジュール１０Ｂに備わるキャッシュメモリ部７Ｄは、リードリクエストパケット３００を受信した内部パス１５から、リードコンプリーションパケット３１０を送信する。
【０３２５】
すると、リードコンプリーションパケット３１０の転送及び当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の転送には、同一のアクセスパスが使用される。すなわち、リードコンプリーションパケット３１０は、モジュール１０Ｂに備わる内部スイッチ部９Ｃ及びモジュール１０Ａに備わる内部スイッチ部９Ａを経由して、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の送信元であるチャネル制御部４Ａに到達する。
【０３２６】
モジュール１０Ａに備わるチャネル制御部４Ａは、リードコンプリーションパケット３１０を受信する。そして、当該アクセスは終了する。
【０３２７】
このように、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃの障害時には、モジュール１０Ａに備わるチャネル制御部４Ａは、要求したデータを、キャッシュメモリ部７Ｃを冗長化しているキャッシュメモリ部７Ｄから取得できる。
【０３２８】
図２３は、本発明の実施の形態のモジュール１０Ｂに備わる内部スイッチ部９Ｃの障害時におけるディスク制御装置１の処理の説明図である。
【０３２９】
本説明図において、垂直方向は時間の進行を示す。また、水平方向に並ぶ線は、コンポーネントを示す。
【０３３０】
まず、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃへリードリクエストパケット３００を送信する（Ｓ２５１）。しかし、モジュール１０Ｂに備わる内部スイッチ部９Ｃに障害が発生しているので、リードリクエストパケット３００は、送信先であるキャッシュメモリ部７Ｃに到達しない。
【０３３１】
すると、モジュール１０Ａに備わる内部スイッチ部９Ａが、転送したリードリクエストパケット３００に対応するリードコンプリーションパケット３１０を受信せずに、所定の時間が経過してしまう。よって、モジュール１０Ａに備わる内部スイッチ部９Ａは、タイムアウトエラーの障害を検出する。そこで、モジュール１０Ａに備わる内部スイッチ部９Ａは、障害報告パケット３４０を生成する。次に、モジュール１０Ａに備わる内部スイッチ部９Ａは、リードリクエストパケット３００の送信元であるチャネル制御部４Ａに、生成した障害報告パケット３４０を送信する（Ｓ２５２）。
【０３３２】
モジュール１０Ａに備わるチャネル制御部４Ａは、障害報告パケット３４０を受信する。すると、モジュール１０Ａに備わるチャネル制御部４Ａは、障害報告パケット３４０から、リクエスタＩＤ３４２及びタグ番号３４３を抽出する。次に、モジュール１０Ａに備わるチャネル制御部４Ａは、抽出したリクエスタＩＤ３４２とタグ番号テーブル９０１のリクエスタＩＤ９０１２とが一致するエントリを、タグ番号テーブル９０１から選択する。次に、モジュール１０Ａに備わるチャネル制御部４Ａは、抽出したタグ番号３４３とタグ番号テーブル９０１のタグ番号９０１３とが一致するエントリを、選択したエントリの中から選択する。
【０３３３】
次に、モジュール１０Ａに備わるチャネル制御部４Ａは、選択したエントリの有効欄９０１１に「ｉｎｖａｌｉｄ」を格納することによって、選択したエントリを無効化する。これによって、一つのリードコンプリーションパケット３１０に対するタイムアウトが、モジュール１０Ａに備わるチャネル制御部４Ａ及びモジュール１０Ａに備わる内部スイッチ部９Ａの双方によって検出されることを防止する。但しこのためには、モジュール１０Ａに備わるチャネル制御部４Ａに設定されるタイムアウト値及びモジュール１０Ａに備わる内部スイッチ部９Ａに設定されるタイムアウト値が適切でなければならない。タイムアウト値の設定については、後述する。
【０３３４】
更に、モジュール１０Ａに備わるチャネル制御部４Ａは、障害処理（図１７）を実行する。これによって、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わる内部スイッチ部９Ｃの障害と判定する。
【０３３５】
そこで、モジュール１０Ａに備わるチャネル制御部４Ａは、障害と判定した内部スイッチ部９Ｃを使用不可とする。
【０３３６】
次に、モジュール１０Ａに備わるチャネル制御部４Ａは、内部スイッチ部９Ｃを冗長化している内部スイッチ部９Ｄ経由でモジュール１０Ｂに備わるキャッシュメモリ部７Ｃへ、リードリクエストパケット３００を送信する（Ｓ２５３）。すると、リードリクエストパケット３００は、モジュール１０Ａに備わる内部スイッチ部９Ｂ及びモジュール１０Ｂに備わる内部スイッチ部９Ｄを経由して、送信先であるキャッシュメモリ部７Ｃに到達する。
【０３３７】
モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、リードリクエストパケット３００を受信すると、当該リードリクエストパケット３００によって要求されたデータを、メモリモジュール７２から読み出す。そして、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、読み出したデータを含むリードコンプリーションパケット３１０を、モジュール１０Ａに備わるチャネル制御部４Ａに送信する（Ｓ２５４）。このとき、モジュール１０Ａに備わるキャッシュメモリ部７Ｃは、リードリクエストパケット３００を受信した内部パス１５から、リードコンプリーションパケット３１０を送信する。
【０３３８】
すると、リードコンプリーションパケット３１０の転送及び当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の転送には、同一のアクセスパスが使用される。すなわち、リードコンプリーションパケット３１０は、モジュール１０Ｂに備わる内部スイッチ部９Ｄ及びモジュール１０Ａに備わる内部スイッチ部９Ｂを経由して、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の送信元であるチャネル制御部４Ａに到達する。
【０３３９】
モジュール１０Ａに備わるチャネル制御部４Ａは、リードコンプリーションパケット３１０を受信する。そして、当該アクセスは終了する。
【０３４０】
このように、モジュール１０Ｂに備わる内部スイッチ部９Ｃの障害時には、モジュール１０Ａに備わるチャネル制御部４Ａは、障害が発生している内部スイッチ部９Ｃと異なる内部スイッチ部９Ｄを経由して、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃにアクセスできる。
【０３４１】
図２４は、本発明の実施の形態のモジュール１０Ａに備わる内部スイッチ部９Ａの障害時におけるディスク制御装置１の処理の説明図である。
【０３４２】
本説明図において、垂直方向は時間の進行を示す。また、水平方向に並ぶ線は、コンポーネントを示す。
【０３４３】
まず、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃへリードリクエストパケット３００を送信する（Ｓ２６１）。しかし、モジュール１０Ａに備わる内部スイッチ部９Ａに障害が発生しているので、リードリクエストパケット３００は、送信先であるキャッシュメモリ部７Ｃに到達しない。
【０３４４】
すると、モジュール１０Ａに備わるチャネル制御部４Ａが、送信したリードリクエストパケット３００に対応するリードコンプリーションパケット３１０を受信せずに、所定の時間が経過してしまう。よって、モジュール１０Ａに備わるチャネル制御部４Ａは、タイムアウトエラーの障害を検出する。そこで、モジュール１０Ａに備わるチャネル制御部４Ａは、障害処理（図１７）を実行する。これによって、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ａに備わる内部スイッチ部９Ａの障害と判定する。そこで、モジュール１０Ａに備わるチャネル制御部４Ａは、障害と判定した内部スイッチ部９Ａを使用不可とする。
【０３４５】
次に、モジュール１０Ａに備わるチャネル制御部４Ａは、内部スイッチ部９Ａを冗長化している内部スイッチ部９Ｂ経由でモジュール１０Ｂに備わるキャッシュメモリ部７Ｃへ、リードリクエストパケット３００を送信する（Ｓ２６２）。すると、リードリクエストパケット３００は、モジュール１０Ａに備わる内部スイッチ部９Ｂ及びモジュール１０Ｂに備わる内部スイッチ部９Ｄを経由して、送信先であるキャッシュメモリ部７Ｃに到達する。
【０３４６】
モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、リードリクエストパケット３００を受信すると、当該リードリクエストパケット３００によって要求されたデータを、メモリモジュール７２から読み出す。そして、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、読み出したデータを含むリードコンプリーションパケット３１０を、モジュール１０Ａに備わるチャネル制御部４Ａに送信する（Ｓ２６３）。このとき、モジュール１０Ａに備わるキャッシュメモリ部７Ｃは、リードリクエストパケット３００を受信した内部パス１５から、リードコンプリーションパケット３１０を送信する。
【０３４７】
すると、リードコンプリーションパケット３１０の転送及び当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の転送には、同一のアクセスパスが使用される。すなわち、リードコンプリーションパケット３１０は、モジュール１０Ｂに備わる内部スイッチ部９Ｄ及びモジュール１０Ａに備わる内部スイッチ部９Ｂを経由して、当該リードコンプリーションパケット３１０に対応するリードリクエストパケット３００の送信元であるチャネル制御部４Ａに到達する。
【０３４８】
モジュール１０Ａに備わるチャネル制御部４Ａは、リードコンプリーションパケット３１０を受信する。そして、当該アクセスは終了する。
【０３４９】
このように、モジュール１０Ａに備わる内部スイッチ部９Ａの障害時には、モジュール１０Ａに備わるチャネル制御部４Ａは、障害が発生している内部スイッチ部９Ａと異なる内部スイッチ部９Ｂを経由して、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃにアクセスできる。
【０３５０】
本実施の形態では、タイムアウト値が適切に設定されていなければ、ディスク制御装置１は、障害部位を特定できない。そこで、タイムアウト値が適切に設定されていない場合について説明する。
【０３５１】
図２５は、本発明の実施の形態のタイムアウト値が適切に設定されていない場合のディスク制御装置１の処理の説明図である。
【０３５２】
また、本説明図において、垂直方向は時間の進行を示す。また、水平方向に並ぶ線は、コンポーネントを示す。
【０３５３】
本説明図は、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃに障害が発生した場合である。更に、本説明図では、モジュール１０Ａに備わるチャネル制御部４Ａ、モジュール１０Ａに備わる内部スイッチ部９Ａ及びモジュール１０Ｂに備わる内部スイッチ部９Ｃには、同じタイムアウト値が設定されている。
【０３５４】
まず、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃへリードリクエストパケット３００を送信する（Ｓ２４１）。すると、リードリクエストパケット３００は、モジュール１０Ａに備わる内部スイッチ部９Ａ及びモジュール１０Ｂに備わる内部スイッチ部９Ｃを経由して、送信先であるキャッシュメモリ部７Ｃに到達する。
【０３５５】
しかし、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、障害に陥っており、リードコンプリーションパケット３１０を送信できない。すると、モジュール１０Ａに備わるチャネル制御部４Ａが、タイムアウトエラーの障害を最初に検出してしまう。つまり、モジュール１０Ａに備わる内部スイッチ部９Ａ及びモジュール１０Ｂに備わる内部スイッチ部９Ｃは、モジュール１０Ａに備わるチャネル制御部４Ａによるタイムアウトエラーの障害の検出後に、タイムアウトエラーの障害を検出する。
【０３５６】
そのため、モジュール１０Ａに備わるチャネル制御部４Ａは、誤った障害検出によって、障害処理（図１７）を実行してしまう。これによって、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ７Ｃの障害と判定せずに、モジュール１０Ａに備わる内部スイッチ部９Ａの障害と判定してしまう。つまり、モジュール１０Ａに備わるチャネル制御部４Ａは、障害が発生した部位（障害部位）を誤って特定してしまう。
【０３５７】
そのため、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ａに備わる内部スイッチ部９Ｂ及びモジュール１０Ｂに備わる内部スイッチ部９Ｄを経由して、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃにリクエストパケット３００を送信する。しかし、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃは、障害に陥っており、リードコンプリーションパケット３１０を送信できない。
【０３５８】
そして、モジュール１０Ａに備わるチャネル制御部４Ａは、タイムアウトエラーの障害を再度検出してしまう。これによって、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ａに備わる内部スイッチ部９Ｂの障害と判定してしまう。つまり、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ａに備わる内部スイッチ部９Ａ及び内部スイッチ部９Ｂの双方の障害と判定してしまう。そのため、モジュール１０Ａに備わるチャネル制御部４Ａは、モジュール１０Ｂに備わるキャッシュメモリ部７Ｃにアクセス不能となる。すると、計算機システムの全体がダウンしてしまう。
【０３５９】
つまり、高信頼のストレージシステムを実現するためには、タイムアウト値を適切に設定することが重要である。そこで、タイムアウト値の設定方法について説明する。
【０３６０】
図２６は、本発明の実施の形態の接続コンポーネント種タイムアウト値（ＴＯＶ）テーブル２０１０の構成図である。
【０３６１】
接続コンポーネント種ＴＯＶテーブル２０１０は、送信先種類２０１１及びタイムアウト値２０１２を含む。
【０３６２】
送信先種類２０１１は、内部スイッチ部９から転送されるパケットの送信先となるコンポーネントの種類を示す。タイムアウト値２０３２は、内部スイッチ部９から送信先種類２０１１に対応するコンポーネントへのアクセス時に、内部スイッチ部９に設定されるタイムアウト値である。
【０３６３】
例えば、内部スイッチ部９から送信先種類２０１１に対応するコンポーネントへの正常なアクセスにおける最も長い遅延等が考慮されて、タイムアウト値２０３２が決定される。更に、競合による遅延も考慮されて、タイムアウト値２０３２が決定されるのが望ましい。
【０３６４】
また、内部スイッチ部９は、それぞれのコンポーネントに対してダミーのアクセスを行って、当該アクセスに対する応答時間を計測してもよい。この場合、内部スイッチ部９によって計測された応答時間に基づいて、タイムアウト値２０３２が決定される。
【０３６５】
次に、内部スイッチ部９が、当該内部スイッチ部９と異なるモジュール１０に備わるコンポーネントにアクセスする場合（異なるモジュール間のアクセス）を説明する。この場合、アクセス先のコンポーネントと同一のモジュール１０に備わる内部スイッチ９にも、タイムアウト値が設定される。そこで、障害部位が正しく判定されるには、異なるモジュール１０間のアクセスの際に内部スイッチ９に設定されるタイムアウト値は、モジュール１０内のアクセスでの最も遅い遅延が考慮されて決定されなければならない。
【０３６６】
よって、異なるモジュール１０間のアクセスの際に内部スイッチ９に設定されるタイムアウト値は、同一のモジュール１０内のＦＭキャッシュメモリ７０へのアクセスの際に内部スイッチ９に設定されるタイムアウト値よりも大きくなければならない。例えば、異なるモジュール１０間へのアクセスの際に内部スイッチ９に設定されるタイムアウト値は、同一のモジュール１０内のＦＭキャッシュメモリ７０へのアクセスの際に内部スイッチ９に設定されるタイムアウト値の二倍とする。
【０３６７】
図２７は、本発明の実施の形態の内部スイッチ部９に記憶される内部スイッチ部タイムアウト値（ＴＯＶ）テーブル２０２０の構成図である。
【０３６８】
内部スイッチ部ＴＯＶテーブル２０２０は、内部スイッチ部９に備わるそれぞれのポートに設定されるタイムアウト値を示す。内部スイッチ部ＴＯＶテーブル２０２０は、ポート番号２０２１及びタイムアウト値２０２２を含む。
【０３６９】
ポート番号２０２１は、内部スイッチ部９に備わるポートの一意な識別子である。タイムアウト値２０２２は、当該ポート番号２０２１によって識別されるポートに設定されるタイムアウト値である。よって、タイムアウト値２０２２は、当該ポート番号２０２１によって識別されるポートに対応するパケット管理部９０のＴＯＶレジスタ９０２に記憶される。
【０３７０】
なお、内部スイッチ部ＴＯＶテーブル２０２０は、接続コンポーネント種ＴＯＶテーブル２０１０に基づいて作成される。内部スイッチ部ＴＯＶテーブル２０２０の作成については、図３０で詳細を説明する。
【０３７１】
図２８は、本発明の実施の形態のチャネル制御部４に記憶されるチャネル制御部タイムアウト値（ＴＯＶ）テーブル２０３０の構成図である。
【０３７２】
チャネル制御部ＴＯＶテーブル２０３０は、送信先種類２０３１及びタイムアウト値２０３２を含む。
【０３７３】
送信先種類２０３１は、チャネル制御部４から転送されるパケットの送信先となるコンポーネントの種類を示す。タイムアウト値２０３２は、チャネル制御部４から送信先種類２０３１に対応するコンポーネントへのアクセス時に、チャネル制御部４に設定されるタイムアウト値である。よって、タイムアウト値２０３２は、チャネル制御部４に備わるパケット管理部９０のＴＯＶ設定レジスタ９０２に記憶される。
【０３７４】
なお、プロセッサ１１１又はパケット制御部１１８のいずれかが、パケット管理部９０のＴＯＶレジスタ９０２に、タイムアウト値２０３２を格納すればよい。また、パケット管理部９０が、タイムアウト値を記憶する複数のＴＯＶ設定レジスタ９０２から、パケットの送信先に対応するＴＯＶ設定レジスタ９０２を選択してもよい。そして、パケット管理部９０は、選択したＴＯＶ設定レジスタ９０２に記憶されているタイムアウト値を使用する。
【０３７５】
なお、チャネル制御部ＴＯＶテーブル２０３０は、モジュール内のアクセスの際にチャネル制御部４に設定されるタイムアウト値及び異なるモジュール間のアクセスの際にチャネル制御部４に設定されるタイムアウト値を含む。
【０３７６】
なお、チャネル制御部ＴＯＶテーブル２０３０は、接続コンポーネント種ＴＯＶテーブル２０１０に基づいて作成される。チャネル制御部ＴＯＶテーブル２０３０の作成については、図２９で詳細を説明する。
【０３７７】
なお、ディスク制御部５も、チャネル制御部タイムアウト値テーブル２０３０と同様のテーブルを記憶する。
【０３７８】
図２９は、本発明の実施の形態のチャネル制御部ＴＯＶテーブル２０３０を作成する処理のフローチャートである。
【０３７９】
まず、チャネル制御部４は、接続コンポーネント種テーブル２０１０のタイムアウト値２０１２に、内部スイッチ部定数ｍを乗じることによって、モジュール内のアクセスの際にチャネル制御部４に設定されるタイムアウト値を求める。そして、チャネル制御部４は、求めたタイムアウト値を、チャネル制御部ＴＯＶテーブル２０３０のタイムアウト値２０３２に格納する（Ｓ２１０１）。
【０３８０】
内部スイッチ部定数ｍは、内部スイッチ部９からチャネル制御部４へのパケットの送信における遅延に対応する定数である。よって、内部スイッチ部定数ｍは、「１」よりも大きい。本実施の形態では、内部スイッチ部定数ｍは、「２」とする。
【０３８１】
なお、チャネル制御部４は、接続コンポーネント種テーブル２０１０のタイムアウト値２０１２に、内部スイッチ部遅延最悪値を加算することによって、モジュール内のアクセスの際にチャネル制御部４に設定されるタイムアウト値を求めてもよい。内部スイッチ部遅延最悪値は、内部スイッチ部９からチャネル制御部４へのパケットの送信における遅延時間の最悪値である。
【０３８２】
次に、チャネル制御部４は、接続コンポーネント種テーブル２０１０のタイムアウト値２０１２に、内部スイッチ部定数ｍ及び他モジュール定数ｎを乗じることによって、異なるモジュール間のアクセスの際にチャネル制御部４に設定されるタイムアウト値を求める。そして、チャネル制御部４は、求めたタイムアウト値を、チャネル制御部ＴＯＶテーブル２０３０のタイムアウト値２０３２に格納する（Ｓ２１０２）。
【０３８３】
他モジュール定数ｎは、内部スイッチ部９間のパケットの送信に要する遅延に対応する定数である。よって、他モジュール定数ｎは、「１」よりも大きい。本実施の形態では、他モジュール定数ｎは、「４」とする。
【０３８４】
なお、チャネル制御部４は、接続コンポーネント種テーブル２０１０のタイムアウト値２０１２に、内部スイッチ部遅延最悪値及びモジュール間遅延最悪値を加算することによって、異なるモジュール間のアクセスの際にチャネル制御部４に設定されるタイムアウト値を求めてもよい。モジュール間遅延最悪値は、内部スイッチ部９間のパケットの送信における遅延時間の最悪値である。
【０３８５】
次に、チャネル制御部４は、異なるモジュール１０間のアクセスの際に内部スイッチ９に設定されるタイムアウト値２０１２を、接続コンポーネント種テーブル２０１０から抽出する。次に、チャネル制御部４は、抽出したタイムアウト値２０１２に、マージン定数ｐを乗じることによって、下限値を求める。なお、マージン定数ｐは、「１」よりも大きい。本実施の形態では、マージン定数ｐは、「１．５」とする。また、下限値は、異なるモジュール間のアクセスの際にチャネル制御部４に設定されるタイムアウト値の下限となる値である。
【０３８６】
次に、チャネル制御部４は、異なるモジュール間のアクセスの際にチャネル制御部４に設定されるタイムアウト値のそれぞれが、下限値以上であるか否かを判定する（Ｓ２１０３）。異なるモジュール間のアクセスの際にチャネル制御部４に設定されるタイムアウト値のすべてが下限値以上であると、チャネル制御部４は、そのままチャネル制御部ＴＯＶテーブル作成処理を終了する。
【０３８７】
一方、異なるモジュール間のアクセスの際にチャネル制御部４に設定されるタイムアウト値の少なくとも一つでも下限値未満であると、チャネル制御部４は、下限値未満のタイムアウト値のすべてを、下限値に修正する（Ｓ２１０４）。例えば、チャネル制御部４は、共有メモリ８へのアクセスの際に設定されるタイムアウト値の「２００」を、下限値の「３００」に修正する。そして、チャネル制御部４は、チャネル制御部ＴＯＶテーブル作成処理を終了する。
【０３８８】
図３０は、本発明の実施の形態の内部スイッチ部ＴＯＶテーブル２０１０を作成する処理のフローチャートである。
【０３８９】
ストレージシステムの初期設定時又は構成変更時に、内部スイッチ部９は、内部スイッチ部ＴＯＶテーブル作成処理を実行する。
【０３９０】
まず、内部スイッチ部９は、タイムアウト値を設定するポート番号を示す変数ｉを「０」に設定する（Ｓ２２０１）。
【０３９１】
次に、内部スイッチ部９は、変数ｉによって識別されるポートの接続先であるコンポーネントの種類を特定する（Ｓ２２０２）。例えば、内部スイッチ部９は、共有メモリ部８に記憶される構成情報を参照することによって、コンポーネントの種類を特定する。
【０３９２】
次に、内部スイッチ部９は、特定したコンポーネントの種類に対応するタイムアウト値２０１２を、接続コンポーネント種ＴＯＶテーブル２０１０から抽出する（Ｓ２２０３）。
【０３９３】
次に、内部スイッチ部９は、変数ｉと内部スイッチ部ＴＯＶテーブル２０２０のポート番号２０２１とが一致する列を、内部スイッチ部ＴＯＶテーブル２０２０から選択する。次に、内部スイッチ部９は、選択した列のタイムアウト値２０２２に、抽出したタイムアウト値２０１２を格納する（Ｓ２２０４）。
【０３９４】
次に、内部スイッチ部９は、当該内部スイッチ部９に備わるすべてのポートに対する処理を終了したか否かを判定する（Ｓ２２０５）。すべてのポートに対する処理を終了していない場合、内部スイッチ部９は、変数ｉに「１」を加算する（Ｓ２２０６）。そして、内部スイッチ部９は、ステップＳ２２０２に戻り、処理を繰り返す。
【０３９５】
一方、すべてのポートに対する処理を終了した場合、内部スイッチ部９は、内部スイッチ部ＴＯＶテーブル作成処理を終了する。
【０３９６】
なお、ストレージシステムの初期設定時には、ストレージシステムの運転が開始されていない。そこで、障害部位を即座に特定できなくてもよい。よって、初期設定時には、内部スイッチ部９は、大きなタイムアウト値をすべてのポートに自動的に設定してもよい。
【０３９７】
また、内部スイッチ部９は、各種設定のためなどの特別なアクセス（設定アクセス）に対して、大きなタイムアウト値を設定してもよい。又は、内部スイッチ部９は、設定アクセスに対して、タイムアウトエラーの検出を行わなくてもよい。
【０３９８】
また、内部スイッチ部９は、転送するリクエストパケット３００、３２０を分析することによって、タイムアウト値を算出してもよい。これによって、タイムアウト値の精度を向上できる。
【０３９９】
図３１は、本発明の実施の形態の内部スイッチ部９によって実行されるタイムアウト値算出処理のフローチャートである。
【０４００】
内部スイッチ部９は、リクエストパケットを受信すると、当該タイムアウト値算出処理を実行する（Ｓ２３０１）。まず、内部スイッチ部９は、受信したリクエストパケットを解析する。これによって、内部スイッチ部９は、受信したリクエストパケットのコマンド種類を判定する（Ｓ２３０２）。
【０４０１】
受信したリクエストパケットがリードリクエストパケット３００又はライトリクエストパケット３２０のいずれかであると、内部スイッチ部９は、コマンド種類が通常アクセスであると判定する。この場合、内部スイッチ部９は、変数ＴＯＶに、遅延最悪値が最も小さいコンポーネントの遅延最悪値を代入する。本実施の形態では、内部スイッチ部９は、変数ＴＯＶに、共有メモリ部８の遅延最悪値である「２５」を代入する（Ｓ２３０４）。なお、共有メモリ部８の遅延最悪値は、内部スイッチ部９から共有メモリ部８へのパケットの送信における遅延時間の最悪値である。
【０４０２】
一方、内部スイッチ部９は、コマンド種類が設定アクセスであると判定すると、変数ＴＯＶに「１０００」を代入する（Ｓ２３０５）。このことは、前述したように、設定アクセスには大きなタイムアウト値が設定されるほうが好適だからである。
【０４０３】
次に、内部スイッチ部９は、受信したリクエストパケットの送信先となるコンポーネントを特定する。次に、内部スイッチ部９は、当該内部スイッチ部９と送信先のコンポーネントとが異なるモジュール１０に備わっているか否かを判定する（Ｓ２３０６）。
【０４０４】
内部スイッチ部９と送信先のコンポーネントとが同じモジュール１０に備わっている場合、内部スイッチ部９は、そのままステップＳ２３０８に進む。
【０４０５】
一方、内部スイッチ部９と送信先のコンポーネントとが異なるモジュール１０に備わっている場合、内部スイッチ部９は、変数ＴＯＶに、内部スイッチ部９間の遅延最悪値である「１００」を加算する（Ｓ２３０７）。
【０４０６】
次に、内部スイッチ部９は、受信したリクエストパケットの送信先となるコンポーネントの種類を特定する（Ｓ２３０８）。送信先のコンポーネントがキャッシュメモリ部７であると、内部スイッチ部９は、変数ＴＯＶに「２５」を加算する（Ｓ２３０９）。そして、内部スイッチ部９は、ステップＳ２３１２に進む。
【０４０７】
一方、送信先のコンポーネントがＦＭキャッシュメモリ部７０であると、内部スイッチ部９は、変数ＴＯＶに「７５」を加算する（Ｓ２３１０）。そして、内部スイッチ部９は、ステップＳ２３１２に進む。
【０４０８】
一方、送信先のコンポーネントがチャネル制御部４又はディスク制御部５のいずれかであると、内部スイッチ部９は、変数ＴＯＶに「１４」を加算する（Ｓ２３１１）。そして、内部スイッチ部９は、ステップＳ２３１２に進む。
【０４０９】
一方、送信先のコンポーネントが共有メモリ部８又は不明であると、内部スイッチ部９は、そのままステップＳ２３１２に進む。
【０４１０】
次に、内部スイッチ部９は、変数ＴＯＶを、ＴＯＶレジスタ９０２に格納する（Ｓ２３１２）。そして、内部スイッチ部９は、タイムアウト値算出処理を終了する。
【０４１１】
なお、内部スイッチ部９だけでなく、チャネル制御部４及びディスク制御部５も、タイムアウト値算出処理を実行してもよい。但し、チャネル制御部４及びディスク制御部５によって実行されるタイムアウト値算出処理では、変数ＴＯＶに代入される値及び加算される値が異なる。
【０４１２】
なお、それぞれのコンポーネントに設定されるすべてのタイムアウト値は、ホストコンピュータ２のタイムアウト値よりも小さくなければならない。ホストコンピュータ２のタイムアウト値が「ＴＯＶ＿ｈ」であると、ディスク制御装置１は、「ＴＯＶ＿ｈ」以内に、ホストコンピュータ２から要求された処理を行わなければならない。
【０４１３】
例えば、リードアクセスの場合（図３を参照。）、チャネル制御部４から共有メモリ部８へ少なくとも６回のアクセスが必要となる。更に、チャネル制御部４からキャッシュメモリ部７へ少なくとも２回のアクセスが必要となる。
【０４１４】
そのため、障害部位を特定するためには、以下の数式（１）を満たさなければならない。言い換えると、ディスク制御装置１は、数式（１）を満たすようなコンポーネントを備える必要がある。
【０４１５】
ＴＯＶ＿ｈ＞６×Ｔ＿ＣＳＭ＋２×Ｔ＿ＣＦＭ＋Ｔ＿Ｓ７１０＋Ｔ＿ｏｖｈ・・（１）
なお、「Ｔ＿ＣＳＭ」は、チャネル制御部４から共有メモリ部８へのアクセス時に、チャネル制御部４に設定されるタイムアウト値である。また、「Ｔ＿ＣＦＭ」は、チャネル制御部４からＦＭキャッシュメモリ部７０へのアクセス時に、チャネル制御部４に設定されるタイムアウト値である。また、「Ｔ＿Ｓ７１０」は、ディスク制御部５がＨＤＤ３からリードデータを取得する処理（図３のステップＳ７１０）の時間の最悪値である。また、「Ｔ＿ｏｖｈ」は、オーバヘッドによる遅延時間の最悪値である。
【図面の簡単な説明】
【０４１６】
【図１】本発明の実施の形態の計算機システムの構成のブロック図である。
【図２】本発明の実施の形態のストレージシステムにおけるコンポーネント及びアクセスパスの冗長化の説明図である。
【図３】本発明の実施の形態のホストコンピュータからリード要求を受信したディスク制御装置の処理のシーケンス図である。
【図４】本発明の実施の形態のリードリクエストパケットの構成図である。
【図５】本発明の実施の形態のリードコンプリーションパケットの構成図である。
【図６】本発明の実施の形態のライトリクエストパケットの構成図である。
【図７】本発明の実施の形態のライトコンプリーションパケットの構成図である。
【図８】本発明の実施の形態の障害報告パケットの構成図である。
【図９】本発明の実施の形態のモジュールに備わるチャネル制御部の構成のブロック図である。
【図１０】本発明の実施の形態のチャネル制御部に備わるパケット生成部の説明図である。
【図１１】本発明の実施の形態のチャネル制御部に記憶される資源管理テーブルの説明図である。
【図１２】本発明の実施の形態のモジュールに備わるキャッシュメモリ部の構成のブロック図である。
【図１３】本発明の実施の形態のモジュールに備わる内部スイッチ部の構成のブロック図である。
【図１４】本発明の実施の形態のパケット管理部の構成のブロック図である。
【図１５】本発明の実施の形態のパケット管理部によって実行されるタグ番号テーブル更新処理のフローチャートである。
【図１６】本発明の実施の形態のパケット管理部によって実行されるタイムアウト検出処理のフローチャートである。
【図１７】本発明の実施の形態のプロセッサによって実行される障害処理のフローチャートである。
【図１８】本発明の実施の形態の正常時におけるディスク制御装置の処理の説明図である。
【図１９】本発明の実施の形態のキャッシュメモリ部の障害時におけるディスク制御装置の処理の説明図である。
【図２０】本発明の実施の形態の内部スイッチ部の障害時におけるディスク制御装置の処理の説明図である。
【図２１】本発明の実施の形態の正常時におけるディスク制御装置の処理の説明図である。
【図２２】本発明の実施の形態のモジュールに備わるキャッシュメモリ部の障害時におけるディスク制御装置の処理の説明図である。
【図２３】本発明の実施の形態のモジュールに備わる内部スイッチ部の障害時におけるディスク制御装置の処理の説明図である。
【図２４】本発明の実施の形態のモジュールに備わる内部スイッチ部の障害時におけるディスク制御装置の処理の説明図である。
【図２５】本発明の実施の形態のタイムアウト値が適切に設定されていない場合のディスク制御装置の処理の説明図である。
【図２６】本発明の実施の形態の接続コンポーネント種タイムアウト値（ＴＯＶ）テーブルの構成図である。
【図２７】本発明の実施の形態の内部スイッチ部に記憶される内部スイッチ部タイムアウト値（ＴＯＶ）テーブルの構成図である。
【図２８】本発明の実施の形態のチャネル制御部に記憶されるチャネル制御部タイムアウト値（ＴＯＶ）テーブルの構成図である。
【図２９】本発明の実施の形態のチャネル制御部ＴＯＶテーブルを作成する処理のフローチャートである。
【図３０】本発明の実施の形態の内部スイッチ部ＴＯＶテーブルを作成する処理のフローチャートである。
【図３１】本発明の実施の形態の内部スイッチ部によって実行されるタイムアウト値算出処理のフローチャートである。
【符号の説明】
【０４１７】
１  ディスク制御装置
２  ホストコンピュータ
３  ＨＤＤ
４  チャネル制御部
５  ディスク制御部
７  キャッシュメモリ部
８  共有メモリ部
９  内部スイッチ部
１０、１０Ａ、１０Ｂ  モジュール
１１  モジュール間パス
１２  チャネル
１３  ＨＤＤチャネル
１５  内部パス
７０  ＦＭキャッシュメモリ部
７１  メモリコントローラ
７２  メモリモジュール
７３  バッファ
７４  コマンド処理部
７５  調停器
７６  ＲＥＱ信号線
７７  ＧＮＴ信号線
９０  パケット管理部
１１１  プロセッサ
１１２  メモリモジュール
１１３  周辺処理部
１１４  チャネルプロトコル処理部
１１７  内部ネットワークインタフェース部
１１８  パケット制御部
１１９  障害報告信号線
９０１  タグ番号テーブル
９０２  ＴＯＶ設定レジスタ
９０３  リクエストパケット送信部
９０４  空きエントリ検索部
９０５  加算器
９０６  タイマ
９０７  リクエスタＩＤ・タグ番号検索部
９０８  コンプリーションパケット・障害報告パケット受信部
９０９  比較器
【図１】
2008084066.tif 000003
【図２】
2008084066.tif 000004
【図３】
2008084066.tif 000005
【図４】
2008084066.tif 000006
【図５】
2008084066.tif 000007
【図６】
2008084066.tif 000008
【図７】
2008084066.tif 000009
【図８】
2008084066.tif 000010
【図９】
2008084066.tif 000011
【図１０】
2008084066.tif 000012
【図１１】
2008084066.tif 000013
【図１２】
2008084066.tif 000014
【図１３】
2008084066.tif 000015
【図１４】
2008084066.tif 000016
【図１５】
2008084066.tif 000017
【図１６】
2008084066.tif 000018
【図１７】
2008084066.tif 000019
【図１８】
2008084066.tif 000020
【図１９】
2008084066.tif 000021
【図２０】
2008084066.tif 000022
【図２１】
2008084066.tif 000023
【図２２】
2008084066.tif 000024
【図２３】
2008084066.tif 000025
【図２４】
2008084066.tif 000026
【図２５】
2008084066.tif 000027
【図２６】
2008084066.tif 000028
【図２７】
2008084066.tif 000029
【図２８】
2008084066.tif 000030
【図２９】
2008084066.tif 000031
【図３０】
2008084066.tif 000032
【図３１】
2008084066.tif 000033