(57)【要約】【課題】リード要求に応じたデータの読み出しの遅延を抑制するとともに、キャッシュメモリを制御するプロセッサの処理負荷を軽減すること。【解決手段】リード要求送信部５２ａは、送信したリード要求のタグを要求管理テーブル５２ｂへ通知する。要求管理テーブル５２ｂは、リード要求送信部５２ａから通知されるタグごとに、リード要求が送信されてからの経過時間を管理する。遅延監視部５２ｄは、要求管理テーブル５２ｂにおいてカウントされるリード要求ごとの経過時間を監視する。そして、遅延監視部５２ｄは、経過時間が警告レベルまたはエラーレベルに達すると、警告メッセージまたはエラーメッセージの送信をメッセージ送信部５１ｃに指示する。メッセージ送信部５１ｃは、キャッシュ接続部５２からの指示により、警告メッセージまたはエラーメッセージを送信する。【選択図】        図３
2008165269.tif 000002
【特許請求の範囲】
【請求項１】
データの読み出しを要求するリード要求とこのリード要求に応じたデータを含むリード応答とを中継するデータ中継装置であって、
リード要求送信元から受信したリード要求をリード応答送信元へ中継する中継手段と、
前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、
前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、
前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記リード要求送信元へ報知する報知手段と
を有することを特徴とするデータ中継装置。
【請求項２】
リード要求に応じたリード応答を前記リード応答送信元から受信する受信手段をさらに有し、
前記管理手段は、
前記受信手段によって受信されたリード応答に対応するリード要求に係る経過時間の計測を停止することを特徴とする請求項１記載のデータ中継装置。
【請求項３】
前記監視手段は、
経過時間が前記リード要求送信元においてタイムアウトエラーが発生するまでの時間未満の警告レベルに達したか否かを監視することを特徴とする請求項１記載のデータ中継装置。
【請求項４】
前記監視手段による監視の結果、経過時間が基準レベルに達したリード要求を経過時間が基準レベル未満のリード要求と区別して保持する保持手段をさらに有することを特徴とする請求項１記載のデータ中継装置。
【請求項５】
前記監視手段による監視の結果、経過時間が前記リード要求送信元においてタイムアウトエラーが発生するまでの時間と同等のエラーレベルに達した場合、このリード要求に対応するリード応答の中継を遮断する遮断手段をさらに有することを特徴とする請求項１記載のデータ中継装置。
【請求項６】
ホストコンピュータが読み出すユーザデータを記憶媒体に記憶するストレージ装置であって、
前記ホストコンピュータからのユーザデータ読み出しコマンドに応じてユーザデータのリード要求を送信する複数のチャネルアダプタと、
前記複数のチャネルアダプタによって送信されたリード要求を中継するスイッチと、
プロセッサを備え前記スイッチによって中継されたリード要求に対応するユーザデータをリード応答として返信するキャッシュコントローラとを有し、
前記スイッチは、
前記チャネルアダプタから受信したリード要求を前記キャッシュコントローラへ中継する中継手段と、
前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、
前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、
前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記チャネルアダプタへ報知する報知手段とを備える
ことを特徴とするストレージ装置。
【請求項７】
ホストコンピュータが読み書きするユーザデータを記憶媒体に記憶するストレージ装置であって、
状態データのリード要求を送信するプロセッサを備えたキャッシュコントローラと、
前記キャッシュコントローラから送信されたリード要求を中継するスイッチと、
前記スイッチによって中継されたリード要求に応じて状態データをリード応答として返信する複数のチャネルアダプタとを有し、
前記スイッチは、
前記キャッシュコントローラから受信したリード要求を前記チャネルアダプタへ中継する中継手段と、
前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、
前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、
前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記キャッシュコントローラへ報知する報知手段とを備える
ことを特徴とするストレージ装置。
【請求項８】
データの読み出しを要求するリード要求とこのリード要求に応じたデータを含むリード応答とを中継するデータ中継装置における応答遅延監視方法であって、
リード要求送信元から受信したリード要求をリード応答送信元へ中継する中継工程と、
前記中継工程にてリード要求が送信されてから経過したリード要求ごとの経過時間の計測を開始する計測工程と、
前記計測工程にて計測される経過時間がリード応答がないまま基準レベルに達したか否かを監視する監視工程と、
前記監視工程における監視の結果、経過時間が基準レベルに達したことを前記リード要求送信元へ報知する報知工程と
を有することを特徴とする応答遅延監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの読み出しを要求するリード要求とこのリード要求に応じたデータを含むリード応答とを中継するデータ中継装置、ストレージ装置、および応答遅延監視方法に関し、特に、リード要求に応じたデータの読み出しの遅延を抑制するとともに、キャッシュメモリを制御するプロセッサの処理負荷を軽減することができるデータ中継装置、ストレージ装置、および応答遅延監視方法に関する。
【背景技術】
【０００２】
近年のコンピュータの処理能力の向上に伴って、コンピュータが利用するデータは肥大化の一途をたどっており、膨大なデータを記憶しておくためのストレージに関する検討が多く行われている。具体的には、例えばＲＡＩＤ（Redundant Array of Independent Disks）と呼ばれ、複数のハードディスクドライブを組み合わせることにより、高速・大容量・高信頼性を実現するディスクシステムを構築する技術などが確立されている。
【０００３】
このＲＡＩＤなどのディスクシステムにおいては、データを記憶する複数のディスクを備えたディスクアレイ装置が上位装置であるホストコンピュータなどからコマンドを受け付け、データの書き込み（ライト）や読み出し（リード）が行われる。このとき、ホストコンピュータとディスクの間でやり取りされるデータは、ディスクアレイ装置内のキャッシュメモリにもキャッシュされ、以降の処理においては、キャッシュメモリからこのデータを読み出して高速化を図るのが一般的である。
【０００４】
また、ホストコンピュータとディスクアレイ装置の間のデータ転送を効率的に行うために、両者間に複数のチャネルが設けられ、ディスクアレイ装置内の複数のチャネルアダプタがホストコンピュータに接続される構成が採られることがある。この場合、ホストコンピュータとディスクアレイ装置内のキャッシュメモリとの間には、それぞれチャネルアダプタを含む複数のデータ転送経路が形成されることになる（例えば特許文献１参照）。
【０００５】
したがって、例えばコマンドやディスクアレイ装置内のディスクにライトされるユーザデータがホストコンピュータからいずれかのチャネルアダプタに入力されると、これらのコマンドやユーザデータは、データ転送経路を１つに変換して中継するスイッチを経由してキャッシュメモリへと転送される。また、スイッチを経由したコマンドやユーザデータは、直接キャッシュメモリへ転送されるのではなく、キャッシュメモリを制御するキャッシュコントローラによって処理される。すなわち、例えばホストコンピュータからユーザデータを読み出すコマンドが送信されると、チャネルアダプタからスイッチを介してキャッシュコントローラへリード要求が送信され、キャッシュコントローラ内のＣＰＵ（Central Processing Unit）などのプロセッサによってキャッシュメモリからユーザデータを読み出す処理が実行される。このユーザデータは、リード応答としてチャネルアダプタへ返信され、チャネルアダプタからホストコンピュータへ伝送される。
【０００６】
【特許文献１】特許第２５６７９２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、チャネルアダプタからのリード要求に応じた処理を行うキャッシュコントローラは、ディスクとキャッシュメモリの間のデータ転送処理なども行っており、処理の状況によっては、チャネルアダプタからのリード要求に対する応答が遅延することがある。そして、この遅延時間が所定時間以上となると、チャネルアダプタでは、リード応答が返ってこないことからタイムアウトエラーが発生し、ホストコンピュータへエラー通知を行うことになる。
【０００８】
具体的には、例えば図１０に示すように、ホストコンピュータからのコマンドに応じて、チャネルアダプタからスイッチを介してキャッシュコントローラへリード要求が送信される（ステップＳ１）。これに対して、キャッシュコントローラ内の特にＣＰＵなどのプロセッサの処理負荷が比較的小さい状態であれば、早急にキャッシュメモリからユーザデータがリードされ、リード応答としてチャネルアダプタへ返信される。しかし、プロセッサの処理負荷が比較的大きいと、リード要求に応じたリード実行までの時間が遅延し、リード要求を送信してからの経過時間が所定時間Ｔとなると、チャネルアダプタにおいてタイムアウトエラーが発生する（ステップＳ２）。
【０００９】
タイムアウトエラーが発生すると、チャネルアダプタは、ホストコンピュータに対してエラー発生を通知するとともに、キャッシュコントローラにもエラー発生を通知する（ステップＳ３）。このとき、キャッシュコントローラに対するエラー発生の通知は、ハードウェア割り込みとして行われるため、キャッシュコントローラ内のプロセッサは、最優先でエラー復旧のためのＲＡＳ（Reliability、Availability、Serviceability）処理を開始する（ステップＳ４）。これにより、キャッシュコントローラ内のプロセッサの処理負荷は、さらに大きくなってしまうという問題がある。そして、プロセッサの処理負荷が大きくなれば、本来のキャッシュコントローラの機能である、キャッシュメモリにおけるデータ転送処理が停滞してしまうことがある。
【００１０】
さらに、チャネルアダプタにおいてタイムアウトエラーが発生した後に、キャッシュコントローラからリード応答としてユーザデータがチャネルアダプタへ返信されることがある（ステップＳ５）。このユーザデータは、タイムアウトエラーが発生したものとされたリード要求に対するリード応答であるため、チャネルアダプタにおいては予定外のリード応答であり、予定外応答エラーが発生する（ステップＳ６）。
【００１１】
予定外応答エラーが発生した場合も、チャネルアダプタは、キャッシュコントローラに対してハードウェア割り込みとしてエラー発生を通知する（ステップＳ７）。これにより、キャッシュコントローラ内のプロセッサの処理負荷が大きくなり、データ転送処理に影響を及ぼすことがある。
【００１２】
本発明はかかる点に鑑みてなされたものであり、リード要求に応じたデータの読み出しの遅延を抑制するとともに、キャッシュメモリを制御するプロセッサの処理負荷を軽減することができるデータ中継装置、ストレージ装置、および応答遅延監視方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明は、データの読み出しを要求するリード要求とこのリード要求に応じたデータを含むリード応答とを中継するデータ中継装置であって、リード要求送信元から受信したリード要求をリード応答送信元へ中継する中継手段と、前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記リード要求送信元へ報知する報知手段とを有することを特徴とする。
【００１４】
また、本発明は、上記発明において、リード要求に応じたリード応答を前記リード応答送信元から受信する受信手段をさらに有し、前記管理手段は、前記受信手段によって受信されたリード応答に対応するリード要求に係る経過時間の計測を停止することを特徴とする。
【００１５】
また、本発明は、上記発明において、前記監視手段は、経過時間が前記リード要求送信元においてタイムアウトエラーが発生するまでの時間未満の警告レベルに達したか否かを監視することを特徴とする。
【００１６】
また、本発明は、上記発明において、前記監視手段は、経過時間が前記リード要求送信元においてタイムアウトエラーが発生するまでの時間と同等のエラーレベルに達したか否かを監視することを特徴とする。
【００１７】
また、本発明は、上記発明において、前記監視手段による監視の結果、経過時間が基準レベルに達したリード要求を経過時間が基準レベル未満のリード要求と区別して保持する保持手段をさらに有することを特徴とする。
【００１８】
また、本発明は、上記発明において、前記保持手段は、経過時間が基準レベルに達したリード要求の識別情報、リード応答があるまでの応答時間、リード応答があったか否かのフラグ情報、およびリード応答の遅延の大小を示す遅延種別を対応付けて保持することを特徴とする。
【００１９】
また、本発明は、上記発明において、前記管理手段は、リード要求の識別情報、経過時間、およびリード応答があったか否かのフラグ情報を対応付けて管理することを特徴とする。
【００２０】
また、本発明は、上記発明において、前記監視手段による監視の結果、経過時間が前記リード要求送信元においてタイムアウトエラーが発生するまでの時間と同等のエラーレベルに達した場合、このリード要求に対応するリード応答の中継を遮断する遮断手段をさらに有することを特徴とする。
【００２１】
また、本発明は、上記発明において、前記遮断手段は、経過時間がエラーレベルに達したリード要求に対応するリード応答を破棄することを特徴とする。
【００２２】
また、本発明は、ホストコンピュータが読み出すユーザデータを記憶媒体に記憶するストレージ装置であって、前記ホストコンピュータからのユーザデータ読み出しコマンドに応じてユーザデータのリード要求を送信する複数のチャネルアダプタと、前記複数のチャネルアダプタによって送信されたリード要求を中継するスイッチと、プロセッサを備え前記スイッチによって中継されたリード要求に対応するユーザデータをリード応答として返信するキャッシュコントローラとを有し、前記スイッチは、前記チャネルアダプタから受信したリード要求を前記キャッシュコントローラへ中継する中継手段と、前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記チャネルアダプタへ報知する報知手段とを備えることを特徴とする。
【００２３】
また、本発明は、ホストコンピュータが読み書きするユーザデータを記憶媒体に記憶するストレージ装置であって、状態データのリード要求を送信するプロセッサを備えたキャッシュコントローラと、前記キャッシュコントローラから送信されたリード要求を中継するスイッチと、前記スイッチによって中継されたリード要求に応じて状態データをリード応答として返信する複数のチャネルアダプタとを有し、前記スイッチは、前記キャッシュコントローラから受信したリード要求を前記チャネルアダプタへ中継する中継手段と、前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記キャッシュコントローラへ報知する報知手段とを備えることを特徴とする。
【００２４】
また、本発明は、データの読み出しを要求するリード要求とこのリード要求に応じたデータを含むリード応答とを中継するデータ中継装置における応答遅延監視方法であって、リード要求送信元から受信したリード要求をリード応答送信元へ中継する中継工程と、前記中継工程にてリード要求が送信されてから経過したリード要求ごとの経過時間の計測を開始する計測工程と、前記計測工程にて計測される経過時間がリード応答がないまま基準レベルに達したか否かを監視する監視工程と、前記監視工程における監視の結果、経過時間が基準レベルに達したことを前記リード要求送信元へ報知する報知工程とを有することを特徴とする。
【発明の効果】
【００２５】
本発明によれば、リード要求送信元から受信したリード要求をリード応答送信元へ中継し、リード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理し、管理される経過時間が基準レベルに達したか否かを監視し、監視の結果、経過時間が基準レベルに達したことをリード要求送信元へ報知する。このため、報知を受けたリード要求送信元は、リード要求の送信を抑制したり、無駄なリード要求の送信を停止したりすることにより、データの読み出しを制御するプロセッサの処理負荷を軽減し、リード要求に応じたデータの読み出しの遅延を抑制することができる。また、ディスクアレイ装置内のチャネルアダプタとキャッシュメモリの間のやり取りに適用した場合は、キャッシュメモリを制御するプロセッサの処理負荷を軽減することができる。
【００２６】
また、本発明によれば、リード要求に応じたリード応答をリード応答送信元から受信し、受信されたリード応答に対応するリード要求に係る経過時間の計測を停止するため、遅延することなくリード応答があったリード要求については、経過時間が基準レベルに達することがなく、リード応答が遅延したリード要求に関する報知のみを行うことができる。
【００２７】
また、本発明によれば、経過時間がリード要求送信元においてタイムアウトエラーが発生するまでの時間未満の警告レベルに達したか否かを監視するため、リード要求送信元へ警告メッセージを送信し、リード要求の送信を抑制させることができる。
【００２８】
また、本発明によれば、経過時間がリード要求送信元においてタイムアウトエラーが発生するまでの時間と同等のエラーレベルに達したか否かを監視するため、リード要求送信元へエラーメッセージを送信し、リード要求送信元にエラー処理を開始させることができる。
【００２９】
また、本発明によれば、監視の結果、経過時間が基準レベルに達したリード要求を経過時間が基準レベル未満のリード要求と区別して保持するため、データ中継装置に保持された情報を参照するのみで、リード応答の遅延の原因を効率良く特定することができる。
【００３０】
また、本発明によれば、経過時間が基準レベルに達したリード要求の識別情報、リード応答があるまでの応答時間、リード応答があったか否かのフラグ情報、およびリード応答の遅延の大小を示す遅延種別を対応付けて保持する。このため、リード応答が遅延したリード要求それぞれについて、リード応答の遅延の状況を明確に保持しておくことができる。
【００３１】
また、本発明によれば、リード要求の識別情報、経過時間、およびリード応答があったか否かのフラグ情報を対応付けて管理するため、個々のリード要求が中継された後の経過時間を効率良く管理することができる。
【００３２】
また、本発明によれば、監視の結果、経過時間がリード要求送信元においてタイムアウトエラーが発生するまでの時間と同等のエラーレベルに達した場合、このリード要求に対応するリード応答の中継を遮断する。このため、リード要求送信元において既にエラー処理されたリード要求に対応するリード応答が中継されることがなく、予定外のリード応答がリード要求送信元に受信され、エラーが発生することを防止することができる。
【００３３】
また、本発明によれば、経過時間がエラーレベルに達したリード要求に対応するリード応答を破棄するため、リード要求送信元における予定外のリード応答受信を確実に防止することができる。
【発明を実施するための最良の形態】
【００３４】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００３５】
（実施の形態１）
図１は、本発明の実施の形態１に係るディスクアレイ装置１０の概略構成を示すブロック図である。同図に示すディスクアレイ装置１０は、ＤＭＡ（Direct Memory Access：ダイレクトメモリアクセス）が適用されるコンピュータシステムの一例であり、ファイバチャネルリンク３０Ａ、３０Ｂを介してホストコンピュータ２０Ａ、２０Ｂと接続されている。このディスクアレイ装置１０は、高信頼性を確保するために二重化構成が採られており、各構成要素が２系統ずつ（図中、参照符号に付加したＡ、Ｂによって区別する）備えられている。それぞれの系統の構成要素は互いに同等の機能を有するため、以下では一方の系統についてのみ構成要素の説明をする。
【００３６】
ディスクアレイ装置１０は、複数のチャネルアダプタ４０Ａ−１〜Ｎ（Ｎは２以上の自然数）、スイッチ５０Ａ、キャッシュメモリ６０Ａ、キャッシュコントローラ７０Ａ、ディスクアダプタ８０Ａ、スイッチ９０Ａ、およびディスク１００Ａを有している。
【００３７】
チャネルアダプタ４０Ａ−１〜Ｎは、それぞれがホストコンピュータ２０Ａとデータの送受信を行う通信インタフェースとしての機能を有するとともに、ＤＭＡによりデータ転送を行うＤＭＡチップを有している。チャネルアダプタ４０Ａ−１〜Ｎは、すべて同等の機能を有しており、いずれかのチャネルアダプタ４０Ａ−Ｍ（Ｍは１以上Ｎ以下の自然数）に重大なエラーが発生した場合には、キャッシュコントローラ７０Ａによって強制的にまたは自発的にシャットダウンする。
【００３８】
スイッチ５０Ａは、データのリードを要求するリード要求やリード要求に応じたデータであるリード応答をチャネルアダプタ４０Ａ−１〜Ｎとキャッシュメモリ６０Ａとの間で中継する。このとき、スイッチ５０Ａは、チャネルアダプタ４０Ａ−１〜Ｎそれぞれから入力されたリード要求を１出力に変換した上でキャッシュコントローラ７０Ａへ中継する。また、スイッチ５０Ａは、リード要求を中継してからの経過時間をカウントし、経過時間が所定レベルの時間に達してもリード応答がない場合に、リード要求の発行元へ警告メッセージを送信し、リード要求の発行の抑制などを促す。スイッチ５０Ａの具体的な構成および動作については、後に詳述する。
【００３９】
キャッシュメモリ６０Ａは、ホストコンピュータ２０Ａから複数のディスク１００Ａへ書き込まれるユーザデータ、または複数のディスク１００Ａからホストコンピュータ２０Ａへ読み出されるユーザデータを一時的に記憶する。
【００４０】
キャッシュコントローラ７０Ａは、キャッシュメモリ６０Ａにおけるユーザデータの書き込みおよび読み出しを管理・制御する。具体的には、キャッシュコントローラ７０Ａは、例えばチャネルアダプタ４０Ａ−１〜Ｎから発行されスイッチ５０Ａを介して受信したリード要求に応じて、キャッシュメモリ６０Ａからユーザデータを読み出し、このユーザデータをリード応答としてチャネルアダプタ４０Ａ−１〜Ｎへ返信する。また、キャッシュコントローラ７０Ａは、必要に応じてチャネルアダプタ４０Ａ−１〜Ｎの状態を示す状態データのリード要求を発行する。なお、キャッシュコントローラ７０Ａは、他方の系統のキャッシュコントローラ７０Ｂとキャッシュ間リンクによって接続されており、キャッシュメモリ６０Ａ、６０Ｂに書き込まれるユーザデータが共有されるようになっている。
【００４１】
ディスクアダプタ８０Ａは、複数のディスク１００Ａとデータの送受信を行う通信インタフェースとしての機能を有する。すなわち、ディスクアダプタ８０Ａは、キャッシュメモリ６０Ａから読み出されたユーザデータを複数のディスク１００Ａへ送信したり、キャッシュメモリ６０Ａへ書き込まれるユーザデータを複数のディスク１００Ａから受信したりする。
【００４２】
スイッチ９０Ａは、複数のディスク１００Ａを接続するとともに、各ディスクとディスクアダプタ８０Ａの接続を切り替える。複数のディスク１００Ａは、例えば複数のハードディスクドライブからなり、それぞれのディスクがキャッシュメモリ６０Ａに読み書きされるユーザデータを記憶している。
【００４３】
図２は、本実施の形態に係るディスクアレイ装置１０の要部構成を示すブロック図である。同図においては、図１の参照符号におけるＡ、Ｂの表記を省略し、例えばホストコンピュータ２０Ａ、２０Ｂをホストコンピュータ２０と表記している。図２は、図１に示したディスクアレイ装置１０の構成要素のうちチャネルアダプタ４０−１、スイッチ５０、キャッシュメモリ６０、キャッシュコントローラ７０、およびディスクアダプタ８０を図示し、チャネルアダプタ４０−１およびキャッシュコントローラ７０の内部構成を示している。
【００４４】
チャネルアダプタ４０−１は、光モジュール４１、プロトコルチップ４２、ＤＭＡチップ４３、ブリッジチップ４４、メモリ４５、およびＣＰＵ４６を備えている。
【００４５】
光モジュール４１は、ホストコンピュータ２０と接続され、ホストコンピュータ２０から光ファイバなどによって伝送される光信号を電気信号に変換し、プロトコルチップ４２から出力される電気信号を光信号に変換してホストコンピュータ２０へ伝送する。
【００４６】
プロトコルチップ４２は、ホストコンピュータ２０との接続に用いられるファイバチャネル（図１のファイバチャネルリンク３０Ａ、３０Ｂ）のプロトコルを制御するためのＬＳＩ（Large Scale Integration）である。プロトコルチップ４２は、チャネルアダプタ４０−１とホストコンピュータ２０との間でやり取りされるコマンドやユーザデータを電気信号として光モジュール４１またはＤＭＡチップ４３へ出力する。
【００４７】
ＤＭＡチップ４３は、キャッシュコントローラ７０に接続されたキャッシュメモリ６０と通信するインタフェース機能およびＤＭＡ機能を有している。ＤＭＡチップ４３は、ＣＰＵ４６からの指示に従って、キャッシュメモリ６０との間で通信処理を行い、ＤＭＡによるデータ転送を実行する。具体的には、例えばホストコンピュータ２０からユーザデータを読み出すコマンドが受信された場合、ＤＭＡチップ４３は、キャッシュメモリ６０に記憶されたユーザデータの転送を要求するリード要求を発行し、ブリッジチップ４４からキャッシュコントローラ７０へ送信する。また、ＤＭＡチップ４３は、リード応答の遅延が発生している旨の警告メッセージがスイッチ５０から受信されると、例えばホストコンピュータ２０からのコマンドの受け付けを停止し、リード要求の発行を抑制する。
【００４８】
ブリッジチップ４４は、スイッチ５０と接続され、ＤＭＡチップ４３によって発行されるリード要求をスイッチ５０へ送信したり、リード要求に応じたリード応答をスイッチ５０から受信したりする。また、ブリッジチップ４４は、リード要求に対するリード応答が遅延した場合にスイッチ５０から送信される警告メッセージやエラーメッセージを受信する。
【００４９】
メモリ４５は、例えばＤＲＡＭ（Dynamic Random Access Memory）などから構成され、ＣＰＵ４６により生成されたディスクリプタ（ＣＰＵ４６からＤＭＡチップ４３に対する命令）などを記憶する。
【００５０】
ＣＰＵ４６は、チャネルアダプタ４０−１の全体を統括制御するプロセッサであり、ホストコンピュータ２０からのコマンドを解釈してＤＭＡチップ４３へデータ転送に関する命令を出す。具体的には、例えばユーザデータを読み出すコマンドがホストコンピュータ２０から受信された場合、ＣＰＵ４６は、キャッシュコントローラ７０に対するリード要求の発行をＤＭＡチップ４３に実行させる。また、ＣＰＵ４６は、リード要求に対するリード応答が遅延してエラーメッセージがスイッチ５０から受信された場合に、チャネルアダプタ４０−１を自発的にシャットダウンしてシステムから切り離すなどのエラー処理を実行する。
【００５１】
プロトコルチップ４２、ＤＭＡチップ４３、およびＣＰＵ４６は、互いにＰＣＩバスによって接続されており、データやデータ転送に関する命令などは、ＰＣＩ（Peripheral Component Interconnect）バスを介してやり取りされる。
【００５２】
一方、図２に示すキャッシュコントローラ７０は、ＣＰＵ７１、チップセット７２、およびメモリ７３を備えている。
【００５３】
ＣＰＵ７１は、キャッシュコントローラ７０の全体を統括制御するプロセッサであり、キャッシュメモリ６０におけるユーザデータの読み書きやディスクアダプタ８０との間のユーザデータの転送をチップセット７２へ指示する。具体的には、ＣＰＵ７１は、例えばチャネルアダプタ４０−１からのリード要求が受信された場合、チップセット７２に指示して要求されたユーザデータをキャッシュメモリ６０から読み出させ、リード応答としてチャネルアダプタ４０−１へ返信させる。また、ＣＰＵ７１は、例えばチャネルアダプタ４０−１〜Ｎにおける異常発生時に、エラー復旧のためのＲＡＳ処理を実行し、各チャネルアダプタ４０−１〜Ｎの状態を示す状態データのリード要求をチップセット７２からスイッチ５０へ送信させる。
【００５４】
チップセット７２は、ＣＰＵ７１からの命令に従って、キャッシュメモリ６０からユーザデータを読み出し、リード応答としてスイッチ５０へ送信したり、ディスクアダプタ８０へ転送したりする。また、チップセット７２は、ＣＰＵ７１によってＲＡＳ処理が実行されると、状態データのリード要求をスイッチ５０へ送信する。
【００５５】
メモリ７３は、例えばＤＲＡＭなどから構成され、ＣＰＵ７１により生成されたチップセット７２に対する命令などを記憶する。
【００５６】
図３は、本実施の形態に係るスイッチ５０の内部構成を示すブロック図である。図３に示すスイッチ５０は、チャネルアダプタ４０−１〜Ｎにそれぞれ接続するチャネルアダプタ接続部（以下「ＣＡ接続部」と略記する）５１と、キャッシュコントローラ７０に接続するキャッシュ接続部５２とを有している。さらに、ＣＡ接続部５１は、リード要求受信部５１ａ、リード応答送信部５１ｂ、およびメッセージ送信部５１ｃを有している。なお、図３においては、チャネルアダプタ４０−１に接続されたＣＡ接続部５１のみを詳細に図示しているが、その他のＣＡ接続部５１も同様の構成を有している。
【００５７】
リード要求受信部５１ａは、ホストコンピュータ２０からユーザデータ読み出しのコマンドを受信したチャネルアダプタ４０−１が送信するリード要求を受信し、キャッシュ接続部５２へ送出する。
【００５８】
リード応答送信部５１ｂは、キャッシュ接続部５２から送出されるリード応答をホストコンピュータ２０へ返信するために、チャネルアダプタ４０−１へ送信する。すなわち、リード応答送信部５１ｂは、ホストコンピュータ２０から要求されたユーザデータをチャネルアダプタ４０−１へ送信する。
【００５９】
メッセージ送信部５１ｃは、キャッシュ接続部５２からの指示により、リード要求をキャッシュコントローラ７０へ送信してから警告レベルの時間が経過した場合には警告メッセージをチャネルアダプタ４０−１へ送信し、エラーレベルの時間が経過した場合にはエラーメッセージをチャネルアダプタ４０−１へ送信する。
【００６０】
一方、キャッシュ接続部５２は、リード要求送信部５２ａ、要求管理テーブル５２ｂ、リード応答受信部５２ｃ、遅延監視部５２ｄ、遅延状態テーブル５２ｅ、およびリード応答マスク部５２ｆを有している。
【００６１】
リード要求送信部５２ａは、ＣＡ接続部５１のリード要求受信部５１ａから送出されるリード要求をキャッシュコントローラ７０へ送信する。また、リード要求送信部５２ａは、送信したリード要求を識別するタグを要求管理テーブル５２ｂへ通知する。
【００６２】
要求管理テーブル５２ｂは、リード要求送信部５２ａから通知されるタグごとに、リード要求が送信されてからの経過時間を管理する。具体的には、要求管理テーブル５２ｂは、例えば図４に示すような形式のテーブルである。すなわち、要求管理テーブル５２ｂは、リード要求送信部５２ａから送信されるリード要求ごとのタグ、経過時間、リード中フラグを記憶しており、リード要求送信部５２ａから新たにリード要求のタグが通知されると、このタグを登録するとともに経過時間のカウントを開始し、リード中フラグを「有」にセットする。また、要求管理テーブル５２ｂは、リード応答受信部５２ｃによってリード要求に応じたリード応答が受信されると、該当するリード要求に対応する経過時間のカウントを停止し、リード中フラグをクリアする。
【００６３】
なお、要求管理テーブル５２ｂは、リード要求送信部５２ａからリード要求のタグが通知されると、リード中フラグがクリアされている段にこのリード要求を登録する。また、要求管理テーブル５２ｂの段数は、同時に処理され得るリード要求の数以上とし、例えばＰＣＩ−Ｘ規格が適用される場合には３２段以上とする。
【００６４】
リード応答受信部５２ｃは、キャッシュコントローラ７０によってキャッシュメモリから読み出されたユーザデータをキャッシュコントローラ７０からのリード応答として受信し、リード応答マスク部５２ｆへ出力する。そして、リード応答受信部５２ｃは、受信したリード応答に対応するリード要求のタグを要求管理テーブル５２ｂへ通知する。
【００６５】
遅延監視部５２ｄは、要求管理テーブル５２ｂにおいてカウントされるリード要求ごとの経過時間を監視する。具体的には、遅延監視部５２ｄは、各リード要求に対応する経過時間が警告レベルに達したか否かを判定し、警告レベルに達しているリード要求に関しては、さらに経過時間がエラーレベルに達したか否かを判定する。ここで、警告レベルとは、チャネルアダプタ４０−１〜Ｎがホストコンピュータ２０からコマンドを受信してからタイムアウトエラーが発生したと判断するまでの時間未満の経過時間であり、エラーレベルとは、チャネルアダプタ４０−１〜Ｎがホストコンピュータ２０からコマンドを受信してからタイムアウトエラーが発生したと判断するまでの時間にほぼ等しい経過時間である。
【００６６】
遅延監視部５２ｄは、経過時間が警告レベルに達したリード要求があれば、このリード要求を遅延状態テーブル５２ｅに登録する。また、遅延監視部５２ｄは、経過時間がエラーレベルに達したリード要求があれば、このリード要求に対応するリード応答を破棄するようにリード応答マスク部５２ｆに指示するとともに、遅延状態テーブル５２ｅに登録されたリード要求の遅延種別を警告状態からエラー状態に更新する。さらに、遅延監視部５２ｄは、経過時間が警告レベルまたはエラーレベルに達したリード要求を送出したＣＡ接続部５１内のメッセージ送信部５１ｃへ、対応するチャネルアダプタ４０−１〜Ｎに対する警告メッセージまたはエラーメッセージの送信を指示する。
【００６７】
遅延状態テーブル５２ｅは、キャッシュコントローラ７０へ送信後の経過時間が警告レベル以上となったリード要求の遅延状態を管理する。具体的には、遅延状態テーブル５２ｅは、例えば図５に示すような形式のテーブルである。すなわち、遅延状態テーブル５２ｅは、遅延監視部５２ｄによる経過時間の監視の結果、経過時間が警告レベル以上となっているリード要求ごとのタグ、アドレス、応答時間、応答フラグ、および遅延種別などを記憶している。
【００６８】
図５において、例えば番号「０」のリード要求については、応答時間が「９００」であり、応答フラグが「有」にセットされていることから、経過時間が９００となった時にリード応答があったものの、既に経過時間がエラーレベルを超えていたため、遅延種別がエラー状態を示す「Ｅ」となっていることがわかる。同様に、番号「１」のリード要求については、応答フラグがセットされていないことから、まだリード応答がないことがわかる。また、番号「６３」のリード要求については、応答時間が「６００」であり、応答フラグが「有」にセットされていることから、経過時間が６００となった時にリード応答があったものの、経過時間が警告レベルを超えていたため、遅延種別が警告状態を示す「Ｗ」となっていることがわかる。
【００６９】
遅延状態テーブル５２ｅは、経過時間が警告レベルに達したリード要求を新たに登録して遅延種別を「Ｗ」とし、このリード要求の経過時間がエラーレベルに達すると遅延種別を「Ｅ」に更新する。また、リード応答があった時点で、それぞれのリード要求の応答時間を登録し、応答フラグを「有」にセットする。
【００７０】
リード応答マスク部５２ｆは、遅延監視部５２ｄからの指示に従い、リード応答受信部５２ｃから出力されたリード応答の一部を破棄してマスクする。すなわち、リード応答マスク部５２ｆは、経過時間がエラーレベルに達したリード要求に対応するリード応答を破棄する。また、リード応答マスク部５２ｆは、リード要求を送出したＣＡ接続部５１内のリード応答送信部５１ｂへ、このリード要求に対応し破棄対象とはならないリード応答を送出する。
【００７１】
次いで、上記のように構成されたスイッチ５０の動作について、図６に示すフロー図を参照しながら説明する。以下では、ホストコンピュータ２０からのコマンドを受け付けたチャネルアダプタ４０−１がリード要求を送信したものとして説明する。
【００７２】
チャネルアダプタ４０−１から送信されたリード要求は、チャネルアダプタ４０−１に接続されたＣＡ接続部５１内のリード要求受信部５１ａによって受信される（ステップＳ１０１）。このリード要求は、キャッシュ接続部５２内のリード要求送信部５２ａへ送出され、リード要求送信部５２ａによって、新たなリード要求として要求管理テーブル５２ｂに登録されるとともに（ステップＳ１０２）、キャッシュコントローラ７０へ送信される（ステップＳ１０３）。その後、キャッシュコントローラ７０からのリード応答がリード応答受信部５２ｃによって待機される（ステップＳ１０４）。
【００７３】
ここで、キャッシュコントローラ７０内のＣＰＵ７１の処理負荷が比較的小さければ、キャッシュメモリ６０から早急にユーザデータが読み出され、リード応答としてキャッシュコントローラ７０から送信されるため、このリード応答は、スイッチ５０のキャッシュ接続部５２内のリード応答受信部５２ｃによって受信される（ステップＳ１０４Ｙｅｓ）。リード応答受信部５２ｃによってリード応答が受信されると、要求管理テーブル５２ｂにおいて、このリード応答に対応するリード要求のリード中フラグがクリアされる（ステップＳ１０５）。すなわち、例えば図４に示した要求管理テーブル５２ｂにおいては、「有」となっているリード中フラグが「−」にクリアされる。
【００７４】
そして、リード応答受信部５２ｃによって受信されたリード応答は、リード応答マスク部５２ｆへ出力され、マスク対象として設定されているか否かが判定される（ステップＳ１０６）。すなわち、リード要求送信後の経過時間がエラーレベルに達した後に受信されたリード応答がマスク対象のリード応答と判定される。マスク対象の設定は、要求管理テーブル５２ｂによって管理されている経過時間がエラーレベルに達した際に遅延監視部５２ｄによって行われている。
【００７５】
判定の結果、リード応答がマスク対象となっていなければ（ステップＳ１０６Ｎｏ）、このリード応答は、チャネルアダプタ４０−１〜Ｎからリード要求を受信したＣＡ接続部５１内のリード応答送信部５１ｂへ送出され、対応するチャネルアダプタ４０−１〜Ｎへ送信される（ステップＳ１０７）。そして、リード応答は、チャネルアダプタ４０−１〜Ｎからホストコンピュータ２０へ送信され、要求したユーザデータがホストコンピュータ２０に受信されることになる。また、リード応答がマスク対象となっていれば（ステップＳ１０６Ｙｅｓ）、このリード応答は、チャネルアダプタ４０−１〜Ｎへ送信されることなく破棄される（ステップＳ１０８）。これにより、既にチャネルアダプタ４０−１〜Ｎにおいてタイムアウトエラーが発生したリード要求に対応するリード応答がチャネルアダプタ４０−１〜Ｎへ送信されることがなく、チャネルアダプタ４０−１〜Ｎに予定外のリード応答が受信されることがない。
【００７６】
一方、リード応答受信部５２ｃによるリード応答の待機時において、キャッシュコントローラ内のＣＰＵ７１の処理負荷が比較的大きければ、キャッシュコントローラ７０によるキャッシュメモリ６０からのユーザデータの読み出しが遅延し、リード応答受信部５２ｃによってリード応答が受信されない（ステップＳ１０４Ｎｏ）。この間、遅延監視部５２ｄによって、要求管理テーブル５２ｂにおいてリード中フラグがセットされたリード要求の経過時間が警告レベルに達していないか常時監視されており（ステップＳ１０９）、経過時間が警告レベルに達していないリード要求については（ステップＳ１０９Ｎｏ）、引き続きリード応答の受信が待機される。
【００７７】
また、経過時間が警告レベルに達しているリード要求については（ステップＳ１０９Ｙｅｓ）、さらに経過時間がエラーレベルに達しているか否かが判定される（ステップＳ１１０）。そして、経過時間が警告レベル以上エラーレベル未満である場合は（ステップＳ１１０Ｎｏ）、遅延監視部５２ｄによって、このリード要求が遅延状態テーブル５２ｅに登録される（ステップＳ１１１）。すなわち、例えば図５に示した遅延状態テーブル５２ｅにおいては、リード要求のタグおよびアドレスが登録され、応答フラグは「−」とされ、遅延種別は警告状態を示す「Ｗ」とされる。さらに、遅延監視部５２ｄによって、警告メッセージを送信する旨の指示がＣＡ接続部５１内のメッセージ送信部５１ｃへ出される。なお、このメッセージ送信部５１ｃは、警告レベルとなったリード要求をチャネルアダプタ４０−１〜Ｎから受信したＣＡ接続部５１内のメッセージ送信部５１ｃである。この指示を受け、メッセージ送信部５１ｃによって、接続されたチャネルアダプタ４０−１〜Ｎへ、リード応答が遅延している旨の警告メッセージが送信され（ステップＳ１１２）、引き続きリード応答受信部５２ｃによってリード応答が待機される。
【００７８】
チャネルアダプタ４０−１〜Ｎは、スイッチ５０からの警告メッセージを受信すると、リード要求に対する処理が遅延していることを把握し、以後、リード要求の送信を抑制したり、ホストコンピュータ２０からのコマンドの受け付けを停止したりする。こうすることにより、チャネルアダプタ４０−１〜Ｎから送信されるリード要求が減少し、キャッシュコントローラ７０のＣＰＵ７１の処理負荷が軽減され、結果として、リード応答の遅延の改善を見込むことができる。
【００７９】
経過時間がエラーレベルに達しているか否かの判定の結果、経過時間がエラーレベルに達している場合は（ステップＳ１１０Ｙｅｓ）、このリード要求は、経過時間が警告レベルに達した時点で遅延監視部５２ｄによって既に遅延状態テーブル５２ｅに登録されているため、この登録における遅延種別が更新される（ステップＳ１１３）。すなわち、例えば図５に示した遅延状態テーブル５２ｅにおいては、遅延種別がエラー状態を示す「Ｅ」に更新される。さらに、遅延監視部５２ｄによって、このリード要求に対応するリード応答をマスク対象とするようにリード応答マスク部５２ｆに設定される（ステップＳ１１４）。したがって、上述したように、以後エラーレベルとなったリード要求に対応するリード応答がキャッシュコントローラ７０から返信されても、このリード応答は破棄され、チャネルアダプタ４０−１〜Ｎへ送信されることがない。
【００８０】
これらの遅延状態テーブル５２ｅの更新およびマスク対象の設定とともに、遅延監視部５２ｄによって、エラーメッセージを送信する旨の指示がＣＡ接続部５１内のメッセージ送信部５１ｃへ出される。なお、このメッセージ送信部５１ｃは、エラーレベルとなったリード要求をチャネルアダプタ４０−１〜Ｎから受信したＣＡ接続部５１内のメッセージ送信部５１ｃである。この指示を受け、メッセージ送信部５１ｃによって、接続されたチャネルアダプタ４０−１〜Ｎへ、リード要求がエラーとなる旨のエラーメッセージが送信される（ステップＳ１１５）。
【００８１】
チャネルアダプタ４０−１〜Ｎは、スイッチ５０からのエラーメッセージを受信するのとほぼ同時にタイムアウトエラーが発生することから、ホストコンピュータ２０およびキャッシュコントローラ７０へのエラー発生の通知や、自発的にシャットダウンしてシステムから切り離すなどのエラー処理を実行する。エラーメッセージを受信したチャネルアダプタ４０−１〜Ｎがシャットダウンすることにより、キャッシュコントローラ７０へ送信されるリード要求は減少することになり、キャッシュコントローラ７０のＣＰＵ７１の処理負荷が軽減される。
【００８２】
また、チャネルアダプタ４０−１〜Ｎからエラー発生を通知されたキャッシュコントローラ７０のＣＰＵ７１は、エラー復旧のためのＲＡＳ処理を開始するが、このとき、ＣＰＵ７１は、個々のチャネルアダプタ４０−１〜Ｎの状態データをリードするのではなく、スイッチ５０の遅延状態テーブル５２ｅを参照することにより、エラーが発生したチャネルアダプタ４０−１〜Ｎを確認することができる。このため、すべてのチャネルアダプタ４０−１〜Ｎの状態データをリードする場合と比べて、ＣＰＵ７１の処理負荷をさらに軽減することができる。
【００８３】
次に、上述のようにホストコンピュータ２０からのコマンドによりキャッシュメモリ６０に記憶されたユーザデータがリードされる際の、チャネルアダプタ４０−１、スイッチ５０、およびキャッシュコントローラ７０の動作について、図７に示すシーケンス図を参照してまとめておく。
【００８４】
ホストコンピュータ２０からユーザデータ読み出しのコマンドを受けたチャネルアダプタ４０−１は、リード要求をスイッチ５０へ送信する（ステップＳ２０１）。このリード要求は、スイッチ５０のＣＡ接続部５１内のリード要求受信部５１ａによって受信され、キャッシュ接続部５２内のリード要求送信部５２ａからキャッシュコントローラ７０へ送信される（ステップＳ２０２）。このとき、リード要求は、要求管理テーブル５２ｂに登録され、経過時間のカウントが開始される。リード要求を受信したキャッシュコントローラ７０においては、リード要求に対するリード応答としてキャッシュメモリ６０からユーザデータの読み出し処理を行うが、他の処理によってＣＰＵ７１の処理負荷が大きければ、読み出し処理はすぐには実行されず遅延が生じる。
【００８５】
そして、経過時間が警告レベルＴwに達すると、遅延監視部５２ｄによって、リード要求が遅延状態テーブル５２ｅに新たに登録されるとともに、メッセージ送信部５１ｃからチャネルアダプタ４０−１へ警告メッセージが送信される（ステップＳ２０３）。警告メッセージを受信したチャネルアダプタ４０−１は、キャッシュコントローラ７０へ送信するリード要求を抑制する（ステップＳ２０４）。ただし、この時点ではタイムアウトエラーは発生しておらず、チャネルアダプタ４０−１は、引き続きキャッシュコントローラ７０からスイッチ５０を介してリード応答が返信されることを待機している。
【００８６】
そして、チャネルアダプタ４０−１がリード要求を抑制したにも拘らず、キャッシュコントローラ７０からのリード応答がないまま経過時間がエラーレベルＴEに達すると、遅延監視部５２ｄによって、このリード要求の遅延状態テーブル５２ｅにおける遅延種別がエラー状態に更新されるとともに、このリード要求に対するリード応答がマスク対象としてリード応答マスク部５２ｆに設定される（ステップＳ２０５）。また、メッセージ送信部５１ｃからチャネルアダプタ４０−１へエラーメッセージが送信される（ステップＳ２０６）。エラーメッセージを受信したチャネルアダプタ４０−１においては、ほぼ同時にホストコンピュータ２０との間の処理に関するタイムアウトエラーも発生するため、チャネルアダプタ４０−１は、ホストコンピュータ２０へエラー通知をしたり、自発的にシャットダウンしたりするなどのエラー処理を実行する（ステップＳ２０７）。
【００８７】
その後、キャッシュコントローラ７０のＣＰＵ７１における処理負荷が小さくなり、エラー状態となったリード要求に対するリード応答がキャッシュコントローラ７０からスイッチ５０へ送信されると（ステップＳ２０８）、このリード応答は、キャッシュ接続部５２のリード応答受信部５２ｃによって受信され、リード応答マスク部５２ｆへ出力される。リード応答マスク部５２ｆには、このリード応答がマスク対象として設定されているため、リード応答送信部５１ｂからチャネルアダプタ４０−１へ送信されることなく破棄される（ステップＳ２０９）。これにより、既にエラー処理されたリード要求に対するリード応答がチャネルアダプタ４０−１に受信されることがなく、予定外のリード応答がチャネルアダプタ４０−１に受信されるエラーの発生を防止することができる。結果として、予定外のリード応答エラーに伴うＣＰＵ７１によるＲＡＳ処理を削減することができ、ＣＰＵ７１の処理負荷を軽減することができる。
【００８８】
また、ＣＰＵ７１の処理負荷が軽減されることから、本来のキャッシュコントローラ７０の機能であるデータ転送処理が停滞せず、ホストコンピュータ２０とディスクアレイ装置１０の間のデータ転送が迅速に実行されることになる。
【００８９】
以上のように、本実施の形態によれば、チャネルアダプタがキャッシュメモリのユーザデータをリードする際に、リード要求およびリード応答としてのユーザデータを中継するスイッチがリード要求発行後の経過時間をカウントし、経過時間が所定の警告レベルに達するとチャネルアダプタへ警告メッセージを送信してリード要求の発行を抑制させる。このため、キャッシュメモリ側のＣＰＵの処理負荷を軽減することができ、リード応答の遅延の改善を見込むことができる。また、リード要求発行後の経過時間が所定のエラーレベルに達した以後は、このリード要求に応じたリード応答をスイッチが破棄してチャネルアダプタへ返信されないようにする。このため、チャネルアダプタにおいて予定外のリード応答が受信されることがなく、キャッシュメモリ側のＣＰＵによるＲＡＳ処理を削減することができ、さらにＣＰＵの処理負荷を軽減することができる。結果として、リード要求に応じたデータの読み出しの遅延を抑制するとともに、キャッシュメモリを制御するプロセッサの処理負荷を軽減することができる。
【００９０】
（実施の形態２）
本発明の実施の形態２の特徴は、キャッシュコントローラのＣＰＵがＲＡＳ処理の際にチャネルアダプタの状態を示す状態データをリードする際に、スイッチがリード応答の遅延を監視する点である。
【００９１】
本実施の形態に係るディスクアレイ装置１０の概略構成およびチャネルアダプタ４０−１〜Ｎとキャッシュコントローラ７０の内部構成は、実施の形態１（図１および図２）と同じであるため、その説明を省略する。本実施の形態においては、スイッチ５０の内部構成が実施の形態１と異なっている。
【００９２】
図８は、本実施の形態に係るスイッチ５０の内部構成を示すブロック図である。図８に示すスイッチ５０は、キャッシュコントローラ７０に接続するキャッシュ接続部５３と、チャネルアダプタ４０−１〜Ｎにそれぞれ接続するＣＡ接続部５４とを有している。さらに、キャッシュ接続部５３は、リード要求受信部５３ａ、リード応答送信部５３ｂ、およびメッセージ送信部５３ｃを有している。
【００９３】
リード要求受信部５３ａは、キャッシュコントローラ７０のＣＰＵ７１がＲＡＳ処理の際にチャネルアダプタ４０−１〜Ｎの状態データのリードを要求するリード要求を受信し、対象となるチャネルアダプタ４０−１〜Ｎに接続されたＣＡ接続部５４へ送出する。
【００９４】
リード応答送信部５３ｂは、ＣＡ接続部５４から送出されるリード応答をキャッシュコントローラ７０へ送信する。すなわち、リード応答送信部５３ｂは、チャネルアダプタ４０−１〜Ｎの状態データをキャッシュコントローラ７０へ送信する。
【００９５】
メッセージ送信部５３ｃは、ＣＡ接続部５４からの指示により、リード要求をチャネルアダプタ４０−１〜Ｎへ送信してから警告レベルの時間が経過した場合には警告メッセージをキャッシュコントローラ７０へ送信し、エラーレベルの時間が経過した場合にはエラーメッセージをキャッシュコントローラ７０へ送信する。このとき、メッセージ送信部５３ｃは、リード応答が遅延しているチャネルアダプタ４０−１〜Ｎを特定した警告メッセージおよびエラーメッセージをキャッシュコントローラ７０へ送信する。すなわち、メッセージ送信部５３ｃは、メッセージ送信の指示を出したＣＡ接続部５４に接続するチャネルアダプタ４０−１〜Ｎの情報を警告メッセージおよびエラーメッセージに含める。
【００９６】
一方、ＣＡ接続部５４は、リード要求送信部５４ａ、要求管理テーブル５４ｂ、リード応答受信部５４ｃ、遅延監視部５４ｄ、遅延状態テーブル５４ｅ、およびリード応答マスク部５４ｆを有している。なお、図８においては、チャネルアダプタ４０−１に接続されたＣＡ接続部５４のみを詳細に図示しているが、その他のＣＡ接続部５４も同様の構成を有している。
【００９７】
リード要求送信部５４ａは、キャッシュ接続部５３のリード要求受信部５３ａから送出されるリード要求を接続されたチャネルアダプタ４０−１へ送信する。また、リード要求送信部５４ａは、送信したリード要求のタグを要求管理テーブル５４ｂへ通知する。
【００９８】
要求管理テーブル５４ｂは、リード要求送信部５４ａから通知されるタグごとに、リード要求が送信されてからの経過時間を管理する。この要求管理テーブル５４ｂは、実施の形態１における要求管理テーブル５２ｂと同様の形式のものである。また、要求管理テーブル５４ｂは、リード応答受信部５４ｃによってリード要求に応じたリード応答が受信されると、該当するリード要求に対応する経過時間のカウントを停止し、リード中フラグをクリアする。
【００９９】
リード応答受信部５４ｃは、チャネルアダプタ４０−１のメモリ４５に保持された状態データをチャネルアダプタ４０−１からのリード応答として受信し、リード応答マスク部５４ｆへ出力する。そして、リード応答受信部５４ｃは、受信したリード応答に対応するリード要求のタグを要求管理テーブル５４ｂへ通知する。
【０１００】
遅延監視部５４ｄは、要求管理テーブル５４ｂにおいてカウントされるリード要求ごとの経過時間を監視する。具体的には、遅延監視部５４ｄは、各リード要求に対応する経過時間が警告レベルに達したか否かを判定し、警告レベルに達しているリード要求に関しては、さらに経過時間がエラーレベルに達したか否かを判定する。そして、遅延監視部５４ｄは、経過時間が警告レベルに達したリード要求があれば、このリード要求を遅延状態テーブル５４ｅに登録する。また、遅延監視部５４ｄは、経過時間がエラーレベルに達したリード要求があれば、このリード要求に対応するリード応答を破棄するようにリード応答マスク部５４ｆに指示するとともに、遅延状態テーブル５４ｅに登録されたリード要求の遅延種別を警告状態からエラー状態に更新する。さらに、遅延監視部５４ｄは、キャッシュ接続部５３内のメッセージ送信部５３ｃへ、キャッシュコントローラ７０に対する警告メッセージまたはエラーメッセージの送信を指示する。
【０１０１】
遅延状態テーブル５４ｅは、チャネルアダプタ４０−１〜Ｎへ送信後の経過時間が警告レベル以上となったリード要求の遅延状態を管理する。この遅延状態テーブル５４ｅは、実施の形態１における遅延状態テーブル５２ｅと同様の形式のものである。すなわち、遅延状態テーブル５４ｅは、遅延監視部５４ｄによる経過時間の監視の結果、経過時間が警告レベル以上となっているリード要求ごとのタグ、アドレス、応答時間、応答フラグ、および遅延種別などを記憶している。
【０１０２】
リード応答マスク部５４ｆは、遅延監視部５４ｄからの指示に従い、リード応答受信部５４ｃから出力されたリード応答の一部を破棄してマスクする。すなわち、リード応答マスク部５４ｆは、経過時間がエラーレベルに達したリード要求に対応するリード応答を破棄する。また、リード応答マスク部５４ｆは、キャッシュ接続部５３内のリード応答送信部５３ｂへ、破棄対象とはならないリード応答を送出する。
【０１０３】
本実施の形態においては、キャッシュコントローラ７０のＣＰＵ７１がチャネルアダプタ４０−１〜Ｎの状態データをリードするため、リード要求がキャッシュコントローラ７０からチャネルアダプタ４０−１〜Ｎへ送信され、リード応答がチャネルアダプタ４０−１〜Ｎからキャッシュコントローラ７０へ送信される。そして、スイッチ５０は、これらのリード要求およびリード応答を中継する。このため、本実施の形態においては、実施の形態１とは対照的に、チャネルアダプタ４０−１〜Ｎからのリード応答の遅延を監視することになる。
【０１０４】
チャネルアダプタ４０−１〜Ｎからのリード応答が遅延する原因としては、例えばチャネルアダプタ４０−１〜Ｎの内部のバスに障害が発生していたり、チャネルアダプタ４０−１〜Ｎの内部でリード要求が消失したりすることが考えられる。そこで、本実施の形態においては、キャッシュコントローラ７０がスイッチ５０からの警告メッセージを受信すると、リード要求に対する処理が遅延していることを把握し、以後、このチャネルアダプタ４０−１〜Ｎへのリード要求の送信を抑制する。こうすることにより、障害やエラーが発生している可能性があるチャネルアダプタ４０−１〜Ｎに対するリード要求が抑制されることになり、キャッシュコントローラ７０のＣＰＵ７１による無駄なリード要求の送信を削減し、ＣＰＵ７１の処理負荷を軽減することができる。
【０１０５】
また、スイッチ５０の各ＣＡ接続部５４内の遅延状態テーブル５４ｅには、チャネルアダプタ４０−１〜Ｎそれぞれに対するリード要求の遅延状態が記憶されているため、キャッシュコントローラ７０においてタイムアウトエラーが発生した場合に、ＣＰＵ７１は、スイッチ５０に記憶された遅延状態を参照することにより、どのチャネルアダプタ４０−１〜Ｎにおいてエラーが発生しているか把握することができる。このため、タイムアウトエラー時のＣＰＵ７１の処理負荷を軽減することができる。
【０１０６】
次に、キャッシュコントローラ７０がチャネルアダプタ４０−１の状態データがリードされる際の、キャッシュコントローラ７０、スイッチ５０、およびチャネルアダプタ４０−１の動作について、図９に示すシーケンス図を参照してまとめておく。なお、ここでは、チャネルアダプタ４０−１において何らかの障害が発生しており、リード応答が遅延しているものとする。
【０１０７】
キャッシュコントローラ７０は、ＲＡＳ処理を開始すると、チャネルアダプタ４０−１の状態データのリード要求をスイッチ５０へ送信する（ステップＳ３０１）。このリード要求は、スイッチ５０のキャッシュ接続部５３内のリード要求受信部５３ａによって受信され、ＣＡ接続部５４内のリード要求送信部５４ａからチャネルアダプタ４０−１へ送信される（ステップＳ３０２）。このとき、リード要求は、要求管理テーブル５４ｂに登録され、経過時間のカウントが開始される。リード要求を受信したチャネルアダプタ４０−１においては、リード要求に対するリード応答として状態データの返信処理を行うが、チャネルアダプタ４０−１内において障害が発生していれば、返信処理はすぐには実行されず遅延が生じる。
【０１０８】
そして、経過時間が警告レベルＴwに達すると、遅延監視部５４ｄによって、リード要求が遅延状態テーブル５４ｅに新たに登録されるとともに、メッセージ送信部５３ｃからキャッシュコントローラ７０へ警告メッセージが送信される（ステップＳ３０３）。警告メッセージを受信したキャッシュコントローラ７０は、チャネルアダプタ４０−１へ送信するリード要求を抑制する（ステップＳ３０４）。ただし、この時点ではタイムアウトエラーは発生しておらず、キャッシュコントローラ７０は、引き続きチャネルアダプタ４０−１からスイッチ５０を介してリード応答が返信されることを待機している。
【０１０９】
そして、キャッシュコントローラ７０がリード要求を抑制したにも拘らず、チャネルアダプタ４０−１からのリード応答がないまま経過時間がエラーレベルＴEに達すると、遅延監視部５４ｄによって、このリード要求の遅延状態テーブル５４ｅにおける遅延種別がエラー状態に更新されるとともに、このリード要求に対するリード応答がマスク対象としてリード応答マスク部５４ｆに設定される（ステップＳ３０５）。また、メッセージ送信部５３ｃからキャッシュコントローラ７０へエラーメッセージが送信される（ステップＳ３０６）。エラーメッセージを受信したキャッシュコントローラ７０においては、ほぼ同時にタイムアウトエラーも発生するため、エラー原因特定のためにＲＡＳ処理を開始するが、すべてのチャネルアダプタ４０−１〜Ｎの状態を改めて調査するのではなく、スイッチ５０の遅延状態テーブル５４ｅを参照する（ステップＳ３０７）。このため、キャッシュコントローラ７０のＣＰＵ７１の処理負荷は、大幅に軽減される。
【０１１０】
その後、チャネルアダプタ４０-１の障害が復旧し、エラー状態となったリード要求に対するリード応答がチャネルアダプタ４０−１からスイッチ５０へ送信されると（ステップＳ３０８）、このリード応答は、ＣＡ接続部５４のリード応答受信部５４ｃによって受信され、リード応答マスク部５４ｆへ出力される。リード応答マスク部５４ｆには、このリード応答がマスク対象として設定されているため、リード応答送信部５３ｂからキャッシュコントローラ７０へ送信されることなく破棄される（ステップＳ３０９）。これにより、既にタイムアウトエラーとなったリード要求に対するリード応答がキャッシュコントローラ７０に受信されることがなく、予定外のリード応答がキャッシュコントローラ７０に受信されるエラーの発生を防止することができる。
【０１１１】
以上のように、本実施の形態によれば、キャッシュコントローラのＣＰＵがチャネルアダプタの状態データをリードする際に、リード要求およびリード応答としての状態データを中継するスイッチがリード要求発行後の経過時間をカウントし、経過時間が所定の警告レベルに達するとキャッシュコントローラへ警告メッセージを送信してリード要求の発行を抑制させる。このため、キャッシュコントローラのＣＰＵが障害が発生している可能性があるチャネルアダプタへリード要求を送信する無駄な処理を削減し、ＣＰＵの処理負荷を軽減することができる。また、リード要求発行後の経過時間が所定のエラーレベルに達した以後は、このリード要求に応じたリード応答をスイッチが破棄してキャッシュコントローラへ返信されないようにするとともに、キャッシュコントローラのＣＰＵが参照可能なように各チャネルアダプタの遅延状態を保持しておく。このため、キャッシュコントローラにおいて予定外のリード応答が受信されることがないとともに、キャッシュコントローラのＣＰＵは、スイッチに保持された遅延状態を参照して障害が発生したチャネルアダプタを特定することができる。
【０１１２】
なお、上記各実施の形態においては、それぞれチャネルアダプタ４０−１〜Ｎからキャッシュコントローラ７０へのリード要求およびキャッシュコントローラ７０からチャネルアダプタ４０−１〜Ｎへのリード要求のいずれか一方向のリード要求をスイッチ５０が中継する場合について説明したが、スイッチ５０は、両方向のリード要求を中継することも当然可能である。この場合には、スイッチ５０が実施の形態１のＣＡ接続部５１および実施の形態２のＣＡ接続部５４の機能を併せ持つＣＡ接続部を有するとともに、実施の形態１のキャッシュ接続部５２および実施の形態２のキャッシュ接続部５３の機能を併せ持つキャッシュ接続部を有する。
【０１１３】
また、上記各実施の形態においては、スイッチ５０がキャッシュコントローラ７０と別体として設けられるものとしたが、スイッチ５０と同等の機能がキャッシュコントローラ７０に組み込まれ、一体的に構成されても良い。また、チャネルアダプタ４０−１〜Ｎやキャッシュコントローラ７０の内部には、ＣＰＵの代わりに例えばＭＰＵ（Micro Processing Unit）など他のプロセッサが設けられていても良い。
【０１１４】
（付記１）データの読み出しを要求するリード要求とこのリード要求に応じたデータを含むリード応答とを中継するデータ中継装置であって、
リード要求送信元から受信したリード要求をリード応答送信元へ中継する中継手段と、
前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、
前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、
前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記リード要求送信元へ報知する報知手段と
を有することを特徴とするデータ中継装置。
【０１１５】
（付記２）リード要求に応じたリード応答を前記リード応答送信元から受信する受信手段をさらに有し、
前記管理手段は、
前記受信手段によって受信されたリード応答に対応するリード要求に係る経過時間の計測を停止することを特徴とする付記１記載のデータ中継装置。
【０１１６】
（付記３）前記監視手段は、
経過時間が前記リード要求送信元においてタイムアウトエラーが発生するまでの時間未満の警告レベルに達したか否かを監視することを特徴とする付記１記載のデータ中継装置。
【０１１７】
（付記４）前記監視手段は、
経過時間が前記リード要求送信元においてタイムアウトエラーが発生するまでの時間と同等のエラーレベルに達したか否かを監視することを特徴とする付記１記載のデータ中継装置。
【０１１８】
（付記５）前記監視手段による監視の結果、経過時間が基準レベルに達したリード要求を経過時間が基準レベル未満のリード要求と区別して保持する保持手段をさらに有することを特徴とする付記１記載のデータ中継装置。
【０１１９】
（付記６）前記保持手段は、
経過時間が基準レベルに達したリード要求の識別情報、リード応答があるまでの応答時間、リード応答があったか否かのフラグ情報、およびリード応答の遅延の大小を示す遅延種別を対応付けて保持することを特徴とする付記５記載のデータ中継装置。
【０１２０】
（付記７）前記管理手段は、
リード要求の識別情報、経過時間、およびリード応答があったか否かのフラグ情報を対応付けて管理することを特徴とする付記１記載のデータ中継装置。
【０１２１】
（付記８）前記監視手段による監視の結果、経過時間が前記リード要求送信元においてタイムアウトエラーが発生するまでの時間と同等のエラーレベルに達した場合、このリード要求に対応するリード応答の中継を遮断する遮断手段をさらに有することを特徴とする付記１記載のデータ中継装置。
【０１２２】
（付記９）前記遮断手段は、
経過時間がエラーレベルに達したリード要求に対応するリード応答を破棄することを特徴とする付記８記載のデータ中継装置。
【０１２３】
（付記１０）ホストコンピュータが読み出すユーザデータを記憶媒体に記憶するストレージ装置であって、
前記ホストコンピュータからのユーザデータ読み出しコマンドに応じてユーザデータのリード要求を送信する複数のチャネルアダプタと、
前記複数のチャネルアダプタによって送信されたリード要求を中継するスイッチと、
プロセッサを備え前記スイッチによって中継されたリード要求に対応するユーザデータをリード応答として返信するキャッシュコントローラとを有し、
前記スイッチは、
前記チャネルアダプタから受信したリード要求を前記キャッシュコントローラへ中継する中継手段と、
前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、
前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、
前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記チャネルアダプタへ報知する報知手段とを備える
ことを特徴とするストレージ装置。
【０１２４】
（付記１１）ホストコンピュータが読み書きするユーザデータを記憶媒体に記憶するストレージ装置であって、
状態データのリード要求を送信するプロセッサを備えたキャッシュコントローラと、
前記キャッシュコントローラから送信されたリード要求を中継するスイッチと、
前記スイッチによって中継されたリード要求に応じて状態データをリード応答として返信する複数のチャネルアダプタとを有し、
前記スイッチは、
前記キャッシュコントローラから受信したリード要求を前記チャネルアダプタへ中継する中継手段と、
前記中継手段によってリード要求が送信されてからリード応答があるまでに経過したリード要求ごとの経過時間を管理する管理手段と、
前記管理手段によって管理される経過時間が基準レベルに達したか否かを監視する監視手段と、
前記監視手段による監視の結果、経過時間が基準レベルに達したことを前記キャッシュコントローラへ報知する報知手段とを備える
ことを特徴とするストレージ装置。
【０１２５】
（付記１２）データの読み出しを要求するリード要求とこのリード要求に応じたデータを含むリード応答とを中継するデータ中継装置における応答遅延監視方法であって、
リード要求送信元から受信したリード要求をリード応答送信元へ中継する中継工程と、
前記中継工程にてリード要求が送信されてから経過したリード要求ごとの経過時間の計測を開始する計測工程と、
前記計測工程にて計測される経過時間がリード応答がないまま基準レベルに達したか否かを監視する監視工程と、
前記監視工程における監視の結果、経過時間が基準レベルに達したことを前記リード要求送信元へ報知する報知工程と
を有することを特徴とする応答遅延監視方法。
【産業上の利用可能性】
【０１２６】
本発明は、リード要求に応じたデータの読み出しの遅延を抑制するとともに、キャッシュメモリを制御するプロセッサの処理負荷を軽減する場合に適用することができる。
【図面の簡単な説明】
【０１２７】
【図１】実施の形態１に係るディスクアレイ装置の概略構成を示すブロック図である。
【図２】実施の形態１に係るディスクアレイ装置の要部構成を示すブロック図である。
【図３】実施の形態１に係るスイッチの内部構成を示すブロック図である。
【図４】実施の形態１に係る要求管理テーブルの一例を示す図である。
【図５】実施の形態１に係る遅延状態テーブルの一例を示す図である。
【図６】実施の形態１に係るスイッチの動作を示すフロー図である。
【図７】実施の形態１に係るユーザデータリード時の動作を示すシーケンス図である。
【図８】実施の形態２に係るスイッチの内部構成を示すブロック図である。
【図９】実施の形態２に係る状態データリード時の動作を示すシーケンス図である。
【図１０】タイムアウトエラー発生の例を示すシーケンス図である。
【符号の説明】
【０１２８】
４０  チャネルアダプタ
５０  スイッチ
５１、５４  ＣＡ接続部
５１ａ  リード要求受信部
５１ｂ  リード応答送信部
５１ｃ  メッセージ送信部
５４ａ  リード要求送信部
５４ｂ  要求管理テーブル
５４ｃ  リード応答受信部
５４ｄ  遅延監視部
５４ｅ  遅延状態テーブル
５４ｆ  リード応答マスク部
５２、５３  キャッシュ接続部
５２ａ  リード要求送信部
５２ｂ  要求管理テーブル
５２ｃ  リード応答受信部
５２ｄ  遅延監視部
５２ｅ  遅延状態テーブル
５２ｆ  リード応答マスク部
５３ａ  リード要求受信部
５３ｂ  リード応答送信部
５３ｃ  メッセージ送信部
６０  キャッシュメモリ
７０  キャッシュコントローラ
【図１】
2008165269.tif 000003
【図２】
2008165269.tif 000004
【図３】
2008165269.tif 000005
【図４】
2008165269.tif 000006
【図５】
2008165269.tif 000007
【図６】
2008165269.tif 000008
【図７】
2008165269.tif 000009
【図８】
2008165269.tif 000010
【図９】
2008165269.tif 000011
【図１０】
2008165269.tif 000012