(57)【要約】【課題】  ディスクアレイ装置のホストに対する応答速度を高速化する。【解決手段】  ホスト５０に接続されたチャネルアダプタ１１がローカルキャッシュメモリ１０５をもつ。チャネルアダプタ１１はホスト５０からデータライト要求を受けるとライトデータをローカルキャッシュメモリ１０５に二重化して書き、ライト完了をホスト５０に送信し、その後、非同期タイミングで、ローカルキャッシュメモリ１０５内のライトデータを一括してメインキャッシュメモリ１４へ転送する。チャネルアダプタ１１は、ローカルキャッシュメモリ１０５内のデータのディレクトリ情報を管理し、ホスト５０からデータリード要求を受けると、ディレクトリ情報に基づきローカルキャッシュメモリ１０５でリードデータがヒットするか判断し、ヒットすれば、ローカルキャッシュメモリ１０５からホスト５０へリードデータを転送する。【選択図】図１
2005157815.tif 000002
【特許請求の範囲】
【請求項１】
１以上のホスト装置とのデータ通信をそれぞれ行う複数のチャネルアダプタと、
データを保存する複数のストレージデバイスと、
前記複数のストレージデバイスとのデータ通信をそれぞれ行う複数のストレージアダプタと、
前記複数のチャネルアダプタと前記複数のストレージアダプタと間で送受されるデータを一時的に記憶するためのメインキャッシュメモリと、
前記複数のチャネルアダプタと前記複数のストレージアダプタを前記メインキャッシュメモリに接続するための接続ネットワークと
を備え、前記複数のチャネルアダプタの各々が、
前記ホスト装置とのデータ通信を制御するプロセッサと、
前記ホスト装置によりアクセスされるデータを一時的に記憶するためのローカルキャッシュメモリと
を有し、
各チャネルアダプタ内の各プロセッサが、前記ホスト装置からライトデータ及び前記ライトデータについてのライト要求を受信した場合、前記ライトデータを前記ローカルキャッシュメモリに書き、前記ライトデータの前記ストレージデバイス内での記憶場所を特定するためのディレクトリ情報を記憶し、前記ライト要求に対する応答を前記ホスト装置に送り、そして、前記ライトデータが前記ストレージアダプタによって前記ストレージデバイスに書かれるようにするために、前記ライトデータを前記ローカルキャッシュメモリから前記メインキャッシュメモリへ前記接続ネットワークを介して転送する、
ように構成されているストレージシステム。
【請求項２】
請求項１記載のものにおいて、
前記各プロセッサが、
前記ライト要求を受信してから前記応答を前記ホスト装置に送るまでの処理と同期的なタイミングで、前記ライトデータを前記ローカルキャッシュメモリに書き、前記ライトデータのディレクトリ情報を記憶し、
前記ライト要求を受信してから前記応答を前記ホスト装置に送るまでの処理とは非同期的なタイミングで、バックライトキャッシングの方法により、前記ライトデータを前記ローカルキャッシュメモリから前記メインキャッシュメモリへ転送する
ように構成されているストレージシステム。
【請求項３】
請求項１記載のものにおいて、
前記各プロセッサは、前記ホスト装置からリードデータについてのリード要求を受信した場合、
前記各プロセッサが記憶している前記ディレクトリ情報に基づいて前記リードデータが前記ローカルキャッシュメモリ内に存在するか否かの判断を行い、
前記判断の結果、前記リードデータが前記ローカルキャッシュメモリ内に存在する場合、前記ローカルキャッシュメモリ内の前記リードデータを前記ホスト装置に送り、
前記判断の結果、前記リードデータが前記ローカルキャッシュメモリ内に存在しない場合、前記リードデータを前記メインキャッシュメモリから前記接続ネットワークを介して読み、前記メインキャッシュメモリから読まれた前記リードデータを前記ローカルキャッシュメモリに書き、前記リードデータの前記ストレージデバイス内での記憶場所を特定するためのディレクトリ情報を記憶し、そして、前記リードデータを前記ホスト装置に送る
ように構成されているストレージシステム。
【請求項４】
請求項１記載のものにおいて、
前記各チャネルアダプタが、
2以上の前記プロセッサと、
少なくとも１つの前記ローカルキャッシュメモリと、
前記2以上のプロセッサと前記少なくとも一つのローカルキャッシュメモリとを接続した、前記接続ネットワークよりも高速にデータ伝送可能な内部バスと
を有し、
前記各チャネルアダプタ内で、各プロセッサがそれぞれ前記内部バスを介して前記少なくとも一つのローカルキャッシュメモリに直接的にアクセスできるように構成されているストレージシステム。
【請求項５】
請求項４記載のものにおいて、
少なくとも１つのチャネルアダプタパッケージを備え、前記チャネルアダプタパッケージには２以上の前記チャネルアダプタが搭載され、前記２以上のチャネルアダプタが前記内部バスを介して相互に接続されており、
前記チャネルアダプタパッケージ上で、前記２以上のチャネルアダプタ内の各プロセッサが前記内部バスを介して、同じチャネルアダプタ内の前記ローカルキャッシュメモリだけでなく他のチャネルアダプタ内の前記ローカルキャッシュメモリにも直接的にアクセスできるように構成されているストレージシステム。
【請求項６】
請求項１記載のものにおいて、
前記接続ネットワークが階層スターネットアーキテクチャに従った構造を有しているストレージシステム。
【請求項７】
請求項１記載のものにおいて、
前記各プロセッサが、前記ホスト装置から前記ライト要求を受けた場合、前記ライトデータを２重化して前記ローカルキャッシュメモリに書くように構成されているストレージシステム。
【請求項８】
請求項７記載のものにおいて、
前記各プロセッサが、前記ホスト装置から前記ライト要求を受けた場合、前記ライト要求がデータリモートコピーを目的とする場合には、前記ライトデータを前記ローカルキャッシュメモリに書くときに２重化を省略するように構成されているストレージシステム。
【請求項９】
請求項１記載のものにおいて、
前記ローカルキャッシュメモリの記憶領域が、ホストリード／ライト用のキャッシュ領域と、リモートコピー用のキャッシュ領域とを含み、
前記各プロセッサが、前記ホスト装置から前記ライト要求を受けた場合、前記ライト要求がデータリモートコピーを目的とする場合には、前記ライトデータを前記リモートコピー用のキャッシュ領域に書き、そうでない場合には、前記ライトデータを前記ホストリード／ライト用のキャッシュ領域に書くように構成されているストレージシステム。
【請求項１０】
請求項１記載のものにおいて、
前記ローカルキャッシュメモリの記憶領域が、前記ホスト装置によるランダムアクセスの対象となるデータを記憶するためのランダムアクセス用のキャッシュ領域と、シーケンシャルアクセスの対象となるデータを記憶するためのシーケンシャルアクセス用のキャッシュ領域とを含み、
前記各プロセッサが、前記ランダムアクセス又は前記シーケンシャルアクセスが実行された頻度に応じて、前記ランダムアクセス用のキャッシュ領域と前記シーケンシャルアクセス用のキャッシュ領域の割合を可変制御する
ように構成されているストレージシステム。
【請求項１１】
請求項１記載のものにおいて、
前記複数のチャネルアダプタにより共有される共有メモリを更に備え、
前記共有メモリには、前記ローカルキャッシュメモリ内のデータについての排他制御情報が格納されており、
前記各チャネルアダプタ内の前記各プロセッサは、前記ローカルキャッシュメモリ内のデータにアクセスする場合、同じデータに対する他の前記プロセッサによるアクセスとの競合を回避するように、前記共有メモリ内の前記排他制御データを使用するように構成されているストレージシステム。
【請求項１２】
ホスト装置とのデータ通信を行うチャネルアダプタと、
データを保存するストレージデバイスと、
前記ストレージデバイスとのデータ通信を行うストレージアダプタと、
前記チャネルアダプタと前記ストレージアダプタとに接続され、前記チャネルアダプタと前記ストレージアダプタの間で送受されるデータを一時的に記憶するためのメインキャッシュメモリと、
前記チャネルアダプタ内に設けられた、前記ホスト装置によりアクセスされるデータを一時的に記憶するためのローカルキャッシュメモリと
を備え、
前記チャネルアダプタが、前記ホスト装置からライトデータ及び前記ライトデータについてのライト要求を受信した場合に、前記ライトデータを前記ローカルキャッシュメモリに書き、前記ライトデータの前記ストレージデバイス内での記憶場所を特定するためのディレクトリ情報を記憶し、前記ライト要求に対する応答を前記ホスト装置に送信し、そして、前記ライトデータが前記ストレージアダプタによって前記ストレージデバイスに書かれるようにするために、前記ライトデータを前記ローカルキャッシュメモリから前記メインキャッシュメモリへ転送する
ように構成されたストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、RAID方式のディスクアレイ装置に代表されるようなストレージシステムに関わり、特に、ホスト装置からのデータ入出力要求への応答を高速にするためのデータキャッシングの技術の改良に関する。
【背景技術】
【０００２】
RAID方式のディスクアレイ装置に代表されるストレージシステムは、例えば、ホスト装置に対するコマンド及びデータの通信を行う複数のチャネルアダプタ、データを保存するためのハードディスクドライのような多数のストレージデバイス、それらストレージデバイスに対するコマンド及びデータの通信を行う複数のストレージアダプタ、上記複数のチャネルアダプタとストレージアダプタ間で送受されるデータを一時的に記憶するためのキャッシュメモリ、及び上記複数のチャネルアダプタとストレージアダプタをキャッシュメモリに接続するための接続ネットワークなどを備える。キャッシュメモリは、いずれのチャネルアダプタ及びストレージアダプタからもアクセスされ得るように、それらと接続される。ストレージデバイスのデータリード／ライト速度が低速であっても、キャッシュメモリを利用することで、ホスト装置からのデータリード／ライト要求に対する応答速度をより高速にすることができる。
【０００３】
このようなストレージシステムにおいて、複数のチャネルアダプタをキャッシュメモリに接続するための接続ネットワークには、様々なアーキテクチャが採用され得る。例えば、特許文献１には、階層スターネットアーキテクチャと呼ばれ得るものが記載されており、そこでは、複数のチャネルアダプタとキャッシュメモリとがセレクタに接続され、このセレクタがキャッシュメモリと複数のチャネルアダプタ間の複数の通信パスを切り替えるようになっている。また、クロスバースイッチを介して両者を接続するクロスバースイッチアーキテクチャや、共通バスを介して接続するクロスバースイッチアーキテクチャなども知られている。また、複数のチャネルアダプタの各々が、一対一の専用接続線で直接的に、キャッシュメモリに接続されている種類の接続ネットワークも知られている。
【０００４】
【特許文献１】特開２０００−３３９１０１号（図１、図２、段落０００５〜０００６など）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のようなストレージシステムにおいて、ホスト装置からデータリード／ライト要求が到来すると、リード／ライト対象のデータは、キャッシュメモリから上述した接続ネットワークを経由してチャネルアダプタに読み込まれ、そこからホスト装置に転送されるか、又は、ホスト装置から前記と逆の経路を通ってキャッシュメモリに書き込まれる。従って、ホスト装置からの要求が到来した時から、チャネルアダプタと接続ネットワークの制御が行われ、そして、データがキャッシュメモリから接続ネットワークを通ってチャネルアダプタ内のバッファに届く（又は、それとは逆の経路でデータが転送される）のに要する時間だけ、ホスト装置に対するストレージシステムの応答が遅れる。
【０００６】
従って、本発明の目的は、ホスト装置からのデータリード／ライト要求に対するストレージシステムの応答を一層高速化することができる、新規なキャッシュメモリの構成と制御を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一つに観点に従うストレージシステムは、１以上のホスト装置とのデータ通信をそれぞれ行う複数のチャネルアダプタと、データを保存する複数のストレージデバイスと、前記複数のストレージデバイスとのデータ通信をそれぞれ行う複数のストレージアダプタと、前記複数のチャネルアダプタと前記複数のストレージアダプタと間で送受されるデータを一時的に記憶するためのメインキャッシュメモリと、前記複数のチャネルアダプタと前記複数のストレージアダプタを前記メインキャッシュメモリに接続するための接続ネットワークとを備える。前記複数のチャネルアダプタの各々が、前記ホスト装置とのデータ通信を制御するプロセッサと、前記ホスト装置によりアクセスされるデータを一時的に記憶するためのローカルキャッシュメモリとを有する。そして、各チャネルアダプタ内の各プロセッサが、前記ホスト装置からライトデータ及び前記ライトデータについてのライト要求を受信した場合、前記ライトデータを前記ローカルキャッシュメモリに書き、前記ライトデータの前記ストレージデバイス内での記憶場所を特定するためのディレクトリ情報を記憶し、前記ライト要求に対する応答を前記ホスト装置に送り、そして、前記ライトデータが前記ストレージアダプタによって前記ストレージデバイスに書かれるようにするために、前記ライトデータを前記ローカルキャッシュメモリから前記メインキャッシュメモリへ前記接続ネットワークを介して転送するように構成されている。
【０００８】
一つの実施形態においては、前記各プロセッサが、前記ライト要求を受信してから前記応答を前記ホスト装置に送るまでの処理と同期的なタイミングで、前記ライトデータを前記ローカルキャッシュメモリに書き、前記ライトデータのディレクトリ情報を記憶し、一方、前記ライト要求を受信してから前記応答を前記ホスト装置に送るまでの処理とは非同期的なタイミングで、バックライトキャッシングの方法により、前記ライトデータを前記ローカルキャッシュメモリから前記メインキャッシュメモリへ転送するように構成されている。このように、データライト要求の処理とは非同期のタイミングでライトデータをメインキャッシュメモリに書くキャッシング方法を、この明細書では、ライトバックキャッシング処理方法と呼ぶ。因みに、ライト要求の処理の一環で、つまり、ライト要求処理と同期したタイミングで、ライトデータをメインキャッシュメモリに書くキャッシング方法を、この明細書ではライトスルーキャッシング処理方法と呼ぶ。
【０００９】
一つの実施形態においては、前記各プロセッサは、前記ホスト装置からリードデータについてのリード要求を受信した場合、前記各プロセッサが記憶している前記ディレクトリ情報に基づいて前記リードデータが前記ローカルキャッシュメモリ内に存在するか否かの判断を行い、前記判断の結果、前記リードデータが前記ローカルキャッシュメモリ内に存在する場合、前記ローカルキャッシュメモリ内の前記リードデータを前記ホスト装置に送り、前記判断の結果、前記リードデータが前記ローカルキャッシュメモリ内に存在しない場合、前記リードデータを前記メインキャッシュメモリから前記接続ネットワークを介して読み、前記メインキャッシュメモリから読まれた前記リードデータを前記ローカルキャッシュメモリに書き、前記リードデータの前記ストレージデバイス内での記憶場所を特定するためのディレクトリ情報を記憶し、そして、前記リードデータを前記ホスト装置に送るように構成されている。
【００１０】
一つの実施形態においては、前記各チャネルアダプタが、2以上の前記プロセッサと、少なくとも１つの前記ローカルキャッシュメモリと、前記2以上のプロセッサと前記少なくとも一つのローカルキャッシュメモリとを接続した、前記接続ネットワークよりも高速にデータ伝送可能な内部バスとを有する。そして、前記各チャネルアダプタ内で、各プロセッサが、前記内部バスを介して前記少なくとも一つのローカルキャッシュメモリに直接的にアクセスできるように構成されている。
【００１１】
一つの実施形態においては、少なくとも１つのチャネルアダプタパッケージが備えられ、前記チャネルアダプタパッケージには２以上の前記チャネルアダプタが搭載され、前記２以上のチャネルアダプタが前記内部バスを介して相互に接続されている。そして、前記チャネルアダプタパッケージ上で、前記２以上のチャネルアダプタ内の各プロセッサが、前記内部バスを介して、同じチャネルアダプタ内の前記ローカルキャッシュメモリだけでなく他のチャネルアダプタ内の前記ローカルキャッシュメモリにも直接的にアクセスできるように構成されている。
【００１２】
一つの実施形態においては、前記接続ネットワークが階層スターネットアーキテクチャに従った構造を有している。
【００１３】
一つの実施形態においては、前記各プロセッサが、前記ホスト装置から前記ライト要求を受けた場合、前記ライトデータを２重化して前記ローカルキャッシュメモリに書くように構成されている。
【００１４】
一つの実施形態においては、前記各プロセッサが、前記ホスト装置から前記ライト要求を受けた場合、前記ライト要求がデータリモートコピーを目的とする場合には、前記ライトデータを前記ローカルキャッシュメモリに書くときに２重化を省略するように構成されている。
【００１５】
一つの実施形態においては、前記ローカルキャッシュメモリの記憶領域が、ホストリード／ライト用のキャッシュ領域と、リモートコピー用のキャッシュ領域とを含む。前記各プロセッサが、前記ホスト装置から前記ライト要求を受けた場合、前記ライト要求がデータリモートコピーを目的とする場合には、前記ライトデータを前記リモートコピー用のキャッシュ領域に書き、そうでない場合には、前記ライトデータを前記ホストリード／ライト用のキャッシュ領域に書くように構成されている。
【００１６】
一つの実施形態においては、前記ローカルキャッシュメモリの記憶領域が、前記ホスト装置によるランダムアクセスの対象となるデータを記憶するためのランダムアクセス用のキャッシュ領域と、シーケンシャルアクセスの対象となるデータを記憶するためのシーケンシャルアクセス用のキャッシュ領域とを含む。そして、前記各プロセッサが、前記ランダムアクセス又は前記シーケンシャルアクセスが実行された頻度に応じて、前記ランダムアクセス用のキャッシュ領域と前記シーケンシャルアクセス用のキャッシュ領域の割合を可変制御するように構成されている。
【００１７】
一つの実施形態においては、前記複数のチャネルアダプタにより共有される共有メモリが更に備えられる。前記共有メモリには、前記ローカルキャッシュメモリ内のデータについての排他制御情報が格納されており、前記各チャネルアダプタ内の前記各プロセッサは、前記ローカルキャッシュメモリ内のデータにアクセスする場合、同じデータに対する他の前記プロセッサによるアクセスとの競合を回避するように、前記共有メモリ内の前記排他制御データを使用するように構成されている。
【００１８】
本発明の別の観点に従うストレージシステムは、ホスト装置とのデータ通信を行うチャネルアダプタと、データを保存するストレージデバイスと、前記ストレージデバイスとのデータ通信を行うストレージアダプタと、前記チャネルアダプタと前記ストレージアダプタとに接続され、前記チャネルアダプタと前記ストレージアダプタの間で送受されるデータを一時的に記憶するためのメインキャッシュメモリと、前記チャネルアダプタ内に設けられた、前記ホスト装置によりアクセスされるデータを一時的に記憶するためのローカルキャッシュメモリとを備える。前記チャネルアダプタが、前記ホスト装置からライトデータ及び前記ライトデータについてのライト要求を受信した場合に、前記ライトデータを前記ローカルキャッシュメモリに書き、前記ライトデータの前記ストレージデバイス内での記憶場所を特定するためのディレクトリ情報を記憶し、前記ライト要求に対する応答を前記ホスト装置に送信し、そして、前記ライトデータが前記ストレージアダプタによって前記ストレージデバイスに書かれるようにするために、前記ライトデータを前記ローカルキャッシュメモリから前記メインキャッシュメモリへ転送するように構成されている。
【発明の効果】
【００１９】
本発明によれば、ホスト装置からのデータリード／ライト要求の処理速度を一層高速化することができる。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明に従うストレージシステム、特にＲＡＩＤ方式のディスクアレイ装置、の一実施形態の全体的な基本構成を示す。
【００２１】
図１に示すように、ディスクアレイ制御装置１は、１又は複数のホストコンピュータ（HOST）５０とのデータ通信をそれぞれ行うための複数のチャネルアダプタ（DHA）１１と、多数のストレージデバイス（例えばハードディスクドライブ）（DSK）１２と、それらディスクドライブ（DSK）１２とのデータ通信をそれぞれ行うための複数のディスクアダプタ（DKA）１３と、上述したチャネルアダプタ（CHA）１１及びディスクアダプタ（DKA）１３の間で送受信されるデータを一時的に記憶するための複数のメインキャッシュメモリ（MCM）１４と、チャネルアダプタ（CHA）１１及びディスクアダプタ（DKA）１３によって使用される制御や管理のための情報を記憶するための複数の共有メモリ（SM）１５を備える。チャネルアダプタ（CHA）１１及びディスクアダプタ（DKA）１３による制御の下で、多数のディスクドライブ（DSK）１２はRAIDの原理に従うディスクアレイ１４１を構成するようになっている。
【００２２】
ディスクアレイ制御装置１は、また、複数のチャネルアダプタ（DSK）１１と複数のメインキャッシュメモリ（MCM）１４との間の通信接続、及び、複数のディスクアダプタ（DKA）１３と複数のメインキャッシュメモリ（MCM)１４との間の通信接続を制御するための接続ネットワークを備える。この接続ネットワーク１６は、例えば階層スターネットアーキテクチャに従った構成をもつものであり、これを以下、階層スターネット（HSN）という。階層スターネット（HSN）１６は、複数のセレクタ（SEL）２１を有し、各セレクタ（SEL）２は、複数のチャネルアダプタ（CHA)１１と複数のメインキャッシュメモリ（MCM）１４と複数のディスクアダプタ（DKA）１３に接続されている。各セレクタ（SEL）２１は相互接続された複数のスイッチ（SW）２２を有し、これらのスイッチ（SW）２２により、複数のチャネルアダプタ（CHA）１１の中から選択した一つのチャネルアダプタ（CHA)１１と、複数のメインキャッシュメモリ（MCM)１４の中から選択した一つのメインキャッシュメモリ（MCM)１４との間に通信パスを確立し、また、複数のディスクアダプタ（DSK）１３の中から選択した一つのディスクアダプタ（DKA）１３と、複数のメインキャッシュメモリ（MCM）１４の中から選択した一つのメインキャッシュメモリ（MCM)１４との間に通信パスを確立する。複数のセレクタ（SEL）２１が存在することにより、複数のチャネルアダプタ（CHA）１１と複数のメインキャッシュメモリ（MCM）１４との間の複数の通信パスが同時に形成されることができ、また、複数のディスクアダプタ（DKA）１３と複数のメインキャッシュメモリ（MCM）１４との間の複数の通信パスが同時に形成されることができる。各セレクタ（SEL）２１は、その内部に、追加のメインキャッシュメモリ（MCM）２３を有している。この追加のメインキャッシュメモリ（MCM）２３も、スイッチ（SW）２２によって、セレクタ（SEL）２１外の上述したメインキャッシュメモリ（MCM）１４と同様に選択されて、選択されたチャネルアダプタ（CHA）１１及び選択されたディスクアダプタ（DKA）１３に接続され得るようになっており、上述したメインキャッシュメモリ（MCM）１４と同様の用途に使用され得る。
【００２３】
ディスクアレイ制御装置１は、さらに、複数のチャネルアダプタ（CHA）１１と複数の共有メモリ（SM）１５との間の通信接続、及び、複数のディスクアダプタ（DKA）１３と複数の共有メモリ（SM）１５との間の通信接続を制御するための接続ネットワーク１７を備える。この接続ネットワーク１７は、例えばスターネットアーキテクチャに従った構成をもつもので、以下、スターネット（SN）という。スターネット（SN）１７は、個々のチャネルアダプタ（DKA）１１と個々の共有メモリ（SM）１５とをポイントツーポイントで接続した複数の専用通信ラインと、個々のディスクアダプタ（DKA）１３と個々の共有メモリ（SM）１５とをポイントツーポイントで接続した複数の専用通信ラインとを有する。
【００２４】
図１では、チャネルアダプタ（CHA）１１、ディスクアダプタ（DKA）１３、メインキャッシュメモリ（MCM）１４、共有メモリ（SM）１５及びセレクタ（SEL）２１のそれぞれの個数は２であるが、これは図示の都合による単なる例示にすぎず、より多くの個数であってよいし、むしろその方が実際のディスクアレイ装置では普通である。
【００２５】
各チャネルアダプタ（CHA）１１は、図１に示すように、ホストコンピュータ（HOST）５０との通信インタフェースとしてそれぞれ機能する１又は複数のホストインタフェース（HIF）１０１と、ホストコンピュータ（HOST）５０とのデータ通信をそれぞれ制御する1又は複数のマイクロプロセッサ（MP）１０２と、階層スターネット（HSN）１６を通じたメインキャッシュメモリ（MCM)１４とのデータ通信を制御するキャッシュメモリコントローラ（CMC)１０３と、スターネット（SN）１７を通じた共有メモリ（SM）１５との通信を制御する共有メモリコントローラ（SMC）１０４と、ホストコンピュータ（HOST）５０に対して送受信するデータを一時的に記憶するためのローカルキャッシュメモリ（LCM）１０５とを有する。チャネルアダプタ（CHA）１１内のホストインタフェース（HIF）１０１、マイクロプロセッサ（MP）１０２、キャッシュメモリコントローラ（CMC）１０３、共有メモリコントローラ（SMC)１０４及びローカルキャッシュメモリ（LCM）１０５などのパーツ間は、内部バス１０６によって直接的に通信可能に接続されている。内部バス１０６は、例えばPCI規格に従った高速バスであり、その通信速度は階層スターネット（HSN）１６或いはスターネット（SN）１７の通信速度よりも明らかに高速である。所定個数（図１の例では２つであるが、他の個数でも良い）の上記構成のチャネルアダプタ（CHA）１１が、一つのチャネルアダプタパッケージ（典型的には一つの回路基板）（CHAPK)１２１上に実装されている。同一パッケージ（CHAPK)１２１上の異なるチャネルアダプタ（CHA）１１間も、上述した高速な内部バス１０６を通じて接続されている。よって、同じパッケージ１（CHAPK)２１上では、各チャネルアダプタ（CHA）１１の内部での通信と同様に、異なるチャネルアダプタ（CHA）１１間の通信も、内部バス１０６を通じて高速かつ直接的に行うことが可能である。本実施形態では、後に詳述するように、チャネルアダプタパッケージ（CHAPK)１２１上でホストインタフェース（HIF）１０１及びマイクロプロセッサ（MP）１０２と内部バス１０６を介して接続されたローカルキャッシュメモリ（LCM）１０５が、本発明の原理に従ってメインキャッシュメモリ（MCM）１４の補助又は代替として活用される。それにより、ホストコンピュータ（HOST）５０からのデータリード／ライト要求に対するディスクアレイ装置１の応答速度が従来よりも高速化されることになる。
【００２６】
各ディスクアダプタ（DKA）１３は、図１に示すように、ディスクドライブ（DSK）１２との通信インタフェースとしてそれぞれ機能する１又は複数のディスクインタフェース（DIF）１1１と、ディスクドライブ（DSK）１２とのデータ通信をそれぞれ制御する1又は複数のマイクロプロセッサ（MP）１１２と、メインキャッシュメモリ（MCM）１４とのデータ通信を制御するキャッシュメモリコントローラ（CMC）１１３と、スターネット（SN）１７を通じた共有メモリ（SM）１５との通信を制御する共有メモリコントローラ（SMC）１１４と、ディスクドライブ（DSK）１２に対して送受信されるデータが一時的に記憶されるローカルバッファメモリ（LBF）１１５を有する。ディスクアダプタ１３内のディスクインタフェース（DIF）１１１、マイクロプロセッサ（MP）１１２、キャッシュメモリコントローラ（CMC）１１３、共有メモリコントローラ（SMC）１１４及びローカルバッファメモリ（LBM）１１５などのパーツ間は、内部バス（例えば、チャネルアダプタ（CHA）１１の内部バス１０６と同様のPCIバス）１１６によって直接的に通信可能に接続されている。所定個数（図１の例では２つであるが、他の個数でも良い）の上記構成のディスクアダプタ（DKA）１３が、一つのディスクアダプタパッケージ（典型的には一つの回路基板）（DKAPK）１３１上に実装されている。同一パッケージ（DKAPK）１３１上の異なるディスクアダプタ（DKA）１３はそれぞれの内部バス１１６を通じて互いに接続されている。よって、同じパッケージ（DKAPK）１３１上では、各ディスクアダプタ（DKA）１３の内部での通信と同様に、異なるディスクアダプタ（DKA）１３間の通信も、内部バス１１６を通じて高速に行うことが可能である。
【００２７】
ところで、図１に示した構成は一つの例示にすぎず、他の様々な構成でも本発明を実施することが可能である。例えば、チャネルアダプタ（CHA）１１とメインキャッシュメモリ（MCM）１４とディスクアダプタ（DKA）１３を接続するための接続ネットワーク１６の構成に関して、図１に例示した追加のメインキャッシュメモリ２３をもつセレクタ（SEL）２２を用いた階層スターネット（HSN）に代えて、追加のメインキャッシュメモリをもたないセレクタを用いた階層スターネット、或いは、図２に例示するようなクロスバースイッチで接続するコモンバス方式の構成、或いは、図３に例示するような個々のチャネルアダプタ１１と個々のキャッシュメモリ１４と個々のディスクアダプタ１３をポイントツーポイントの専用通信ラインで接続するような構成などを採用してもよい。
【００２８】
接続ネットワーク１６についていかなる構成を採用するにせよ、本実施形態では、ホストコンピュータ（HOST）５０との通信を制御する複数のチャネルアダプタ（CHA)１１にそれぞれ搭載された複数のメモリ（LBM）１０５が、分散されたローカルキャッシュメモリ（LCM）として使用される。これらのローカルキャッシュメモリ（LCM）１０５には、ホストコンピュータ（HOST）５０により使用される可能性が高いであろうデータが蓄積されることになる。
【００２９】
後の動作説明から明らかになるように、ホストコンピュータ５０からデータのリード要求が到来した場合、リードされるべきデータ（以下、リードデータという）がローカルキャッシュメモリ１０５内に存在するならば（リードヒットの場合）、チャネルアダプタ１１は、低速の接続ネットワーク１６を通じてメインキャッシュメモリ１４にアクセスせずに、高速アクセスが可能なローカルキャッシュメモリ１０５からリードデータを読んでホストコンピュータ５０に転送する。一方、リードデータがローカルキャッシュメモリ１０５内に存在しない場合（リードミスの場合）には、チャネルアダプタ１１は、低速のメインキャッシュメモリ１４から（又はディスクドライブ１２からメインキャッシュメモリ１４を経由して）、そのリードデータを読み込む。チャネルアダプタ１１に読み込まれたデータは、ローカルキャッシュメモリ１０５を経由して（つまり、ローカルキャッシュメモリ１０５に書かれてから）ホストコンピュータ５０に転送される。
【００３０】
ローカルキャッシュメモリ１０５に新しいデータを書くとき、ホストコンピュータ５０からローカルキャッシュメモリ１０５が満杯である場合、その中の最も古いキャッシュデータが消去されて、新たなデータが書き込まれる。よって、ローカルキャッシュメモリ１０５には、データがある程度の期間にわたり保存される。メインキャッシュメモリ１４上のデータが無くても、ローカルキャッシュメモリ１０５上にそのデータが保存されていれば、そのデータに対するホストコンピュータ５０からのリード要求に直ちに応答することができる。その意味で、ローカルキャッシュメモリ１０５は、メインキャッシュメモリ１４の補助的な役割だけでなく、代替的な役割を担うものであり、メインキャッシュメモリ１４の有効活用が促進される。
【００３１】
同じチャネルアダプタパッケージ１２１上に実装された複数のチャネルアダプタ１１間では、各マイクロプロセッサ１０２が、内部バス１０６を通じて、複数のローカルキャッシュメモリ１０５のいずれにも直接アクセスすることができる。換言すれば、同じチャネルアダプタパッケージ１２１上では、複数のマイクロプロセッサ１０２が複数のローカルキャッシュメモリ１０５を共有する。そして、それら複数のマイクロプロセッサ１０２が、それらが共有する複数のローカルキャッシュメモリ１０５内のキャッシュデータのディレクトリ情報（そのデータのディスクアレイ１４１内での論理的又は物理的な記憶場所を特定する情報）を分散して記憶し管理している。例えば、各マイクロプロセッサ１０２は、そのマイクロプロセッサ１０２自身が過去に処理したキャッシュデータのディレクトリ情報を記憶し管理している。ディレクトリ情報は、例えばキャッシュスロット単位で管理される。因みに、各マイクロプロセッサ１０２は、各ロ−カルキャッシュメモリ１０５の記憶領域（例えば、２５６MB）を多数のキャッシュページ（例えば、２５６ｋB）に論理的に分割し、各キャッシュページを多数のキャッシュスロット（例えば４ｋB、１６ｋB、又は２４ｋなど)に論理的に分割して管理する。或るマイクロプロセッサ１０２が、リードデータをローカルキャッシュメモリ１０５から探すとき、まず、そのマイクロプロセッサ１０２自身が管理しているディレクトリ情報からリードデータを探し、その結果ヒットしなければ、同じチャネルアダプタパッケージ１２１上の他のマイクロプロセッサ１０２に問い合わせて、それら他のマイクロプロセッサ１０２が管理するディレクトリ情報からリードデータを探すことができる。こうして、各マイクロプロセッサ１０２は、同じチャネルアダプタパッケージ１２１上の全てのローカルキャッシュメモリ１０５からリードデータを探すことができ、その結果見つかれば、そのリードデータを該当するローカルキャッシュメモリ１０５から読んでホストコンピュータ５０に転送することができる。このように、マイクロプロセッサ１０２は、リードデータが同じチャネルアダプタパッケージ１２１上のいずれかのローカルキャッシュメモリ１０５に存在すれば、メインキャッシュメモリ１４にアクセスすることなく、より高速のローカルキャッシュメモリ１０５からそのリードデータを得てホストコンピュータ５０に転送できる。
【００３２】
ホストコンピュータ５０からデータのライト要求が到来した場合、チャネルアダプタ１１は、ライトされるべきデータ(以下、ライトデータという）を同じチャネルアダプタパッケージ１２１上の適当なローカルキャッシュメモリ１０５に書いてから、それをメインキャッシュメモリ１４に転送する前に、ホストコンピュータ５０に対してライト完了の応答を送信することができる。この場合、通常、ライトデータは、障害時のデータロストのリスクを減らすために、二重化されてローカルキャッシュメモリ１０５に書かれる（つまり、ライトデータとそのコピーデータの双方がローカルキャッシュメモリ１０５に書かれる）。但し、データのリモートコピーが行われる場合（すなわち、マスターホストコンピュータ５０に接続されたディスクアレイ装置１にデータライトが行われると共に、遠隔のリモートホストコンピュータ５０に接続されたディスクアレイ装置１にも同じライトデータが転送されてそこでデータライトが行われることで、データの二重化がなされる場合）においては、マスターホストコンピュータ５０に接続されたディスクアレイ装置１では、ライトデータが二重化されてローカルキャッシュメモリ１０５に書かれるが、リモートホストコンピュータ５０に接続されたディスクアレイ装置１では、ライトデータは二重化されずにローカルキャッシュメモリ１０５に書かれる。オリジナルのライトデータがマスター側のディスクアレイ装置１で保存されるため、リモート側で障害によりライトデータが失われたとしても、マスター側からリモード側へ同じデータを再送できるからである。勿論、リモート側でもローカルキャッシュメモリ１０５への二重化キャッシングを行ってもよい。
【００３３】
チャネルアダプタ１１内のデータライト要求を処理するスレッド(マイクロプロセッサ１０２のプロセスを分割した処理単位）は、ライトデータをローカルキャッシュメモリ１０５に書いたならば、そのライトデータがメインキャッシュメモリ１４に書かれたことを意味するトランスファーレディレスポンスを待つことなく、直ちにホストコンピュータ５０に対してライト完了の応答を返して、次の処理に移ることができる。ローカルキャッシュメモリ１０５に書かれたライトデータは、ライトバックキャッシング処理方法により、データライト要求の処理とは非同期のより遅いタイミングで、メインキャッシュメモリ１４に転送されて書き込まれることになる。ライトバックキャッシング処理方法を採用しても、上述したローカルメモリ１０５への二重化キャッシングにより、データロストのリスクが相殺される。ライトバックキャッシング処理方法では、ライトスルーキャッシング処理方法（すなわち、ホストコンピュータ５０からのライト要求の処理の一環で（つまり、要求処理と同期したタイミングで）メインキャッシュメモリ１４にライトデータを書く方法）とは異なり、低速のメインキャッシュメモリ１４にホストコンピュータ５０からのライトデータを直ちに転送する必要が無いので、例えばローカルメモリ１０５が一杯になるまで、或いは、ローカルメモリ１０５内のデータが上書きされるまで、或いはその他の所定のタイミングで、ローカルメモリ１０５内の複数のライトデータを一括してメインキャッシュメモリ１４に転送することができる。これにより、低速のメインキャッシュメモリ１４へのデータ書き込みの処理回数が削減される。
【００３４】
ローカルメモリ１０５の領域を複数の部分領域に分割して、それぞれの部分領域を異なる使い方のキャッシュデータに割り当てることもできる。例えば、異なるホスト接続方式によりキャッシュデータの使い方が異なる場合がある。その典型例は、ホストリード／ライト（通常のホストコンピュータ５０又は上述したマスタホストコンピュータ５０から要求されたデータリード／ライト処理）とリモートコピー（上述したリモートホストコンピュータ５０から要求されたデータライト（コピー）処理）である。ローカルメモリ１０５の一つの部分領域をホストリード／ライトのためのデータキャッシングに割り当てる、別の部分領域をリモートコピーのための割り当てることができる。
【００３５】
以下、本実施形態にかかるディスクアレイ装置１の動作について説明する。以下の説明は、図１に示した構成だけでなく、図２及び図３に示した構成をもつディスクアレイ装置１についても同様にあてはまる。
【００３６】
図４及び図５は、ホストコンピュータ５０からデータのリード要求を受けた場合のディスクアレイ装置１内でのコマンド及びデータの流れを示す。図６は、同場合のディスクアレイ装置１内の各部の動作シーケンスを示す。図４〜図６を参照して、ホストコンピュータ５０からデータリード要求を受けた場合のディスクアレイ装置１の動作を説明する。
【００３７】
まず、図４及び図６を参照して、ホストコンピュータ５０から到来したデータのリード要求（矢印２０１）が、或るチャネルアダプタ１１内のホストインタフェース１０１を通じて或るマイクロプロセッサ１０２Aに入力される。そのマイクロプロセッサ１０２Aは、同じチャネルアダプタパッケージ１２１のいずれかのローカルキャッシュメモリ１０５内にそのリード要求の対象となるリードデータがキャッシュされているか否かチェックする（以下、LCM（ローカルキャッシュメモリ）チェックという）。このLCMチェックを行う場合、マイクロプロセッサ１０２Aは、まず、そのマイクロプロセッサ１０２A内のローカルメモリ１２１に記憶されているキャッシュデータのディレクトリ情報１３１を参照して、このディレクトリ情報１３１からリードデータを探す（図６の「LCMチェック」３０１）。このマイクロプロセッサ１０２A自身が管理するディレクトリ情報１３１には、同じチャネルアダプタパッケージ１２１上のローカルキャッシュメモリ１０５に記憶されている全てのキャッシュデータのうち、このマイクロプロセッサ１０２A自身がライトしたキャッシュデータについてのディレクトリ情報（例えば、そのキャッシュデータのディスクアレイ１４１内の記憶場所の論理アドレスと、ローカルキャッシュメモリ１０５内の記憶場所のアドレス（ローカルキャッシュアドレス）など）が記録されている。この「LCMチェック」３０１では、例えば、このディレクトリ情報１３１に記録されているキャッシュデータの論理アドレスと、ホストコンピュータ５０からのリード要求に含まれているリードデータの論理アドレスとを照合することで、リードデータを探すことができる。
【００３８】
この「LCMチェック」３０１で、マイクロプロセッサ１０２A自身が管理するディレクトリ情報１３１からリードデータが見つかった場合（図６、「HIT」３０３）、マイクロプロセッサ１０２Aは、ディレクトリ情報１３１に記録されているそのリードデータのローカルキャッシュアドレスが指し示すローカルキャッシュメモリ１０５内の記憶場所から、そのリードデータを読み込む。この場合、マイクロプロセッサ１０２Aは、そのローカルキャッシュアドレスが指し示す記憶場所が、同じチャネルアダプタ１１内のローカルキャッシュメモリ１０５A内に存在するならば、図４で矢印１０５Aで示すように、そのローカルキャッシュメモリ１０５Aからリードデータを読み込むことになるが、その記憶場所が別のチャネルアダプタ１１内のローカルキャッシュメモリ１０５B内に存在するならば、図５に矢印２０５Bで示すように、その別のチャネルアダプタ１１内のローカルキャッシュメモリ１０５Bからリードデータを読み込むことになる。いずれにしても、マイクロプロセッサ１０２Aは内部バス１０６を通じて高速にリードデータを取得することができる。
【００３９】
なお、ローカルキャッシュメモリ１０５A又は１０５Bからリードデータを読む際、マイクロプロセッサ１０２Aは、図４で矢印２０３で示すように、共有メモリ１５内に記憶されている排他制御テーブル１３２を参照する。この排他制御テーブル１３２には、このディスクアレイ装置１内の全てのデータの論理アドレスについて、複数アクセスの競合を回避するための排他制御情報（例えば、それぞれの論理アドレスに対して現在ライト及びリードがそれぞれ行われているか否かを示すライトフラグ及びリードフラグなど）が記録されている。マイクロプロセッサ１０２Aは、この排他制御テーブル１３２を参照して、例えばそのリードデータについてライトが行われていない時にのみそのリードデータを読むといようにして、他の排他的アクセスと競合しないタイミングで、ローカルキャッシュメモリ１０５A又は１０５Bからリードデータを読むとともに、リードデータを読んでいる間は、例えばリードフラグを「リード中」にすることにより、そのリードデータにライトが行われないように制御する。
【００４０】
このようにして、ローカルキャッシュメモリ１０５A又は１０５Bからリードデータを読み込んだ後、マイクロプロセッサ１０２Aは、そのリードデータをホストインタフェース１０１を通じてホストコンピュータ５０に送る（矢印２０７）。
【００４１】
一方、上述した「LCMチェック」３０１で、マイクロプロセッサ１０２A自身が管理するディレクトリ情報１３１からはリードデータが見つからなかった場合（図６、「MISS」３０５）、マイクロプロセッサ１０２Aは、図５で矢印２２１で示すように、同じチャネルアダプタパッケージ１２１内の他のマイクロプロセッサ１０２B〜１０２Dに対して、リードデータの問い合わせを行う（図６、「他MP問合せ」３０７）。すると、他のマイクロプロセッサ１０２B〜１０２Dはそれぞれ、それ自身のローカルメモリ１２１に記憶しているディレクトリ情報１３１（それぞれのマイクロプロセッサ１０２B〜１０２Dがローカルルキャッシュメモリ１０５A又は１０５Bにライトしたキャッシュデータのディレクトリ情報）の中からリードデータを探し（図６、「LCMチェック」３０９）、その答え（例えば、ヒットした場合にはそのリードデータのローカルキャッシュアドレス、ミスの場合にはその旨）をマイクロプロセッサ１０２Aに返す。マイクロプロセッサ１０２Aは、他のマイクロプロセッサ１０２B〜１０２Dからの答えによりそのリードデータのローカルキャッシュアドレスを得た場合には（図６、「HIT」３１１）、ローカルキャッシュアドレスが指し示すローカルキャッシュメモリ１０５A又は１０５B内の記憶場所からライトデータを読み込む（矢印２０５A、２０５B)。その際、上述した排他制は勿論行なわれる。そして、マイクロプロセッサ１０２Aは、読み込んだライトデータをホストコンピュータ５０に送信する（矢印２０７）。
【００４２】
上述した他のマイクロプロセッサ１０２B〜１０２Dによる「LCMチェック」３０９の答えが全てミスだった場合には（図６、「MISS」３１３）、マイクロプロセッサ１０２Aと同じチャネルアダプタパッケージ１２１上のローカルキャッシュメモリ１２１上にはリードデータがキャッシュされていないことを意味する。この場合、マイクロプロセッサ１０２Aは、メインキャッシュメモリ１４内でそのリードデータが存在するかどうかチェックし（図６、「MCMチェック」３１５）、その結果、リードデータが見つかれば（図６、「HIT」３１７）、図４で矢印２０９で示すように、メインキャッシュメモリ１４からそのリードデータを読み込み、図４で矢印２１１A又は図６で矢印２１１Bで示すように、そのリードデータをローカルキャッシュメモリ１０５A又は１０５B内の適当な空きアドレスに書き込む(空きアドレスが無ければ、ローカルキャッシュメモリ１０５A又は１０５B内の最も古いキャッシュデータを消去して、そこにそのリードデータを書き込む）。加えて、マイクロプロセッサ１０２Aは、そのリードデータの論理アドレスやローカルキャッシュアドレスなどのディレクトリ情報を、マイクロプロセッサ１０２A内のディレクトリ情報１３１に追加登録する（図６、「DIR登録」３２１）。そして、マイクロプロセッサ１０２Aは、ローカルキャッシュメモリ１０５A又は１０５Bからそのリードデータを読み(矢印２０５A又は２０５B)、そのリードデータをホストコンピュータ５０に送信する（矢印２０７）。
【００４３】
上述した「MCMチェック」３１５の結果、リードデータが見つからなければ（図６、「MISS」３１９）、マイクロプロセッサ１０２Aは、そのリードデータのディスクアレイ１４１からのリードをディスクアダプタ１３に要求する（図６、「リード要求」３２１）。ディスクアダプタ１３は、図４で矢印２１３、２１５で示すように、ディスクアレイ１４１からそのリードデータを読み、これをメインキャッシュメモリ１４に書く。マイクロプロセッサ１０２Aは、メインキャッシュメモリ１４からリードデータを読み、そして、既に説明したようにして、そのリードデータをローカルキャッシュメモリ１０５A又は１０５Bに格納し、そのディレクトリ情報を追加登録するとともに、そのリードデータをホストコンピュータに送る。
【００４４】
以上が、データライト処理の動作である。次に、ホストコンピュータ５０からデータのライト要求を受けた場合のディスクアレイ装置１の動作を説明する。
【００４５】
図７は、同場合のディスクアレイ装置１内でのコマンド及びデータの流れを示す。図８は、同場合のディスクアレイ装置１内の各部の動作シーケンスを示す。
【００４６】
なお、データのライト要求を受けた場合には、それを発したホストコンピュータ５０の種類に応じてディスクアレイ装置１の動作が異なる。以下の説明では、ホストコンピュータ５０を、通常ホストコンピュータ（すなわち、リモートコピーを行う必要がないデータのライト要求を発するホストコンピュータ）（N_HOST）５０Nと、マスターホストコンピュータ（すなわち、リモートコピーを行う必要があるデータのライト要求を発するホストコンピュータ）（M_HOST）５０Mと、リモートホストコンピュータ（リモートコピーのためのライト要求を発するホストコンピュータ）（R_HOST）５０Rの３種類に分類する。
【００４７】
図７に示したシステム例では、通常ホストコンピュータ（N_HOST）５０N又はマスターホストコンピュータ（M_HOST）５０Mに、一つのディスクアレイ装置（以下、メインのディスクアレイ装置という）１が接続される。また、リモートホストコンピュータ（R_HOST）５０Rには、別のリモートコピー用のディスクアレイ装置（以下、サブのディスクアレイ装置という）１Rが接続される。また、メインのディスクアレイ装置１は、リモートホストコンピュータ５０Rにも接続されている。以下、図7に示したシステム構成の下でのデータライトの動作を説明するが、その説明から当業者は、別のシステム構成において本発明の原理がどのように適用されるかということを、容易に理解できる筈である。
【００４８】
図７及び図８を参照して、通常ホストコンピュータ５０N又はマスターホストコンピュータ５０Mからのライトデータを含んだデータライト要求が、矢印４０１で示すように、メインのディスク装置１内の或るチャネルアダプタ１１内のマイクロプロセッサ１０２Aに受信される。そのマイクロプロセッサ１０２Aは、同じチャネルアダプタパッケージ１２１のいずれかのローカルキャッシュメモリ１０５A又は１０５B内にライトデータがキャッシュされているか否かチェックする（図８、「LCMチェック」５０１）。この「LCMチェック」５０１において、マイクロプロセッサ１０２Aは、そのマイクロプロセッサ１０２A内のローカルメモリ１２１に記憶されているキャッシュデータのディレクトリ情報１３１を参照して、このディレクトリ情報１３１からライトデータを探す。その結果、ライトデータが見つかった場合（図８、「HIT」５０３）、マイクロプロセッサ１０２Aは、ディレクトリ情報１３１に記録されているそのライトデータのローカルキャッシュアドレスが指し示すローカルキャッシュメモリ１０５A又は１０５B（ローカルキャッシュメモリ１０５Bは図７では図示省略されている）内の記憶場所に、ホストコンピュータ５０N又は５０Mから受け取ったライトデータを書く（矢印４０３A又は４０３B）（つまり、ローカルキャッシュメモリ１０５A又は１０５B内の古いライトデータに新しいライトデータを上書きする）。この場合、マイクロプロセッサ１０２Aは、そのライトデータを二重化してローカルキャッシュメモリ１０５A又は１０５Bに書く。すなわち、図７に示すように、そのライトデータ６０１と、それの複製データ６０３とを、ローカルキャッシュメモリ１０５A又は１０５B内の異なるアドレスにそれぞれ書く。
【００４９】
なお、ローカルキャッシュメモリ１０５A又は１０５Bにライトデータを書く際、マイクロプロセッサ１０２Aは、（図７では図示省略されているが、）共有メモリ１５内の排他制御テーブル１３２を参照して、例えばそのライトデータに対してライトもリードも行われていない時にのみそのライトデータを書くというように、他のアクセスと競合しないタイミングでライト処理を行うとともに、ライト処理を行っている間は、例えばライトフラグを「ライト中」にすることにより、他のリード／ライト処理が同時に行われないように制御する。
【００５０】
このようにして、ローカルキャッシュメモリ１０５A又は１０５Bにライトデータを書き込んだ後、マイクロプロセッサ１０２Aは、そのライトデータがメインキャッシュメモリ１４に書かれたことを意味するトランスファーレディレスポンスを待つことなく、直ちにライト完了の応答をホストインタフェース１０１を通じてホストコンピュータ５０に送る（矢印４０５）。
【００５１】
一方、上述した「LCMチェック」３０１で、マイクロプロセッサ１０２A自身が管理するディレクトリ情報１３１からはライトデータが見つからなかった場合（図８、「MISS」５０５）、マイクロプロセッサ１０２Aは、そのライトデータをローカルキャッシュメモリ１０５A又は１０５B内の適当な空きアドレスに書き込む(空きアドレスが無ければ、ローカルキャッシュメモリ１０５A又は１０５B内の最も古いキャッシュデータを消去して、そこにそのライトデータを書き込む）（矢印４０３A又は４０３B)。この場合も、ライトデータは二重化して書かれる。排他制御も行われる。加えて、マイクロプロセッサ１０２Aは、そのライトデータの論理アドレスやローカルキャッシュアドレスなどのディレクトリ情報を、マイクロプロセッサ１０２A内のディレクトリ情報１３１に追加登録する（図８、「DIR登録」５０７）。そして、マイクロプロセッサ１０２Aは、ライト完了の応答をホストインタフェース１０１を通じてホストコンピュータ５０に送る（矢印４０５）。
【００５２】
或いは、上述した「LCMチェック」３０１でマイクロプロセッサ１０２A自身が管理するディレクトリ情報１３１からはライトデータが見つからなかった場合、マイクロプロセッサ１０２Aは、（図７及び図８では図示省略してあるが、）前述したデータリードの場合と同様の方法で、同じチャネルアダプタパッケージ１２１内の他のマイクロプロセッサ１０２B〜１０２Dに問い合わせて、それらが管理するディレクトリ情報からライトデータを探し、ヒットすれば、図８の「HIT」５０３の場合と同様に、ライトデータを二重化してローカルキャッシュメモリ１０５A又は１０５Bに上書し、また、全てミスであれば、図８の「MISS」５０５の場合と同様に、ライトデータの二重化してローカルキャッシュメモリ１０５A又は１０５Bに追加書きするようにしてもよい。
【００５３】
通常ホストコンピュータ５０Nからデータライト要求を受けた場合には必要ないが、マスタホストコンピュータ５０Mからデータライト要求を受けた場合には、マイクロプロセッサ１０２Aは、上述したローカルキャッシュメモリ１０５A又は１０５Bへのライトデータのキャッシングが終わった後、適当なタイミングで（図８では、後述するライトバックキャッシングの前であるように示されているが、その前でも後でもよい）、そのライトデータについてのリモートコピーの処理を行う（図８、「リモートコピー」５０９）。すなわち、マイクロプロセッサ１０２Aは、ローカルキャッシュメモリ１０５A又は１０５Bからライトデータを読み出し（矢印４０７A又は４０７B)、そのライトデータを含んだリモートコピー要求を、ホストインタフェース１０１B通じて、リモートホストコンピュータ５０Rに送る（矢印４０９）。リモートホストコンピュータ５０Rは、そのライトデータのライト要求をサブディスクアレイ装置１Rに送る（矢印４１１）。サブディスクアレイ装置１R内のチャネルアダプタ１１R内のマイクロプロセッサ１０２Rは、上述したメインディスクアレイ装置１での処理手順と同様の手順で、そのリモートコピー対象のライトデータをローカルキャッシュメモリ１０５Rに書く（図７、矢印４１３）。但し、このとき、ライトデータの二重化は行われない（勿論、二重化を行っても良い）。サブディスクアレイ装置１Rのマイクロプロセッサ１０２Rは、そのライトデータのローカルキャッシュメモリ１０５Rへの格納が終わると、そのライトデータがメインキャッシュメモリ１４Rに書かれたことを意味するトランスファーレディレスポンスを待つことなく、直ちにライト完了の応答をリモートホストコンピュータ５０Rに返す（図７、矢印４１５）。そのライト完了の応答を受けて、リモートホストコンピュータ５０Rは、リモートコピー完了の応答をメインディスクアレイ装置１に送り（矢印４１６）、メインディスクアレイ装置１内では、マイクロプロセッサ１０２Aがその応答を受ける。
【００５４】
さて、メインディスクアレイ装置１のマイクロプロセッサ１０２Aは、ホストコンピュータ５０N又は５０Mからのデータライト要求の処理とは非同期的な所定のタイミングで（例えば、ローカルキャッシュメモリ１０５A又は１０５Bが満杯になったとき、或いは、ローカルキャッシュメモリ１０５A又は１０５Bにキャッシュされたデータが後のライト処理で更新されたとき、或いはその他のタイミングで）、ライトバックキャッシング（図８、「ライトバックキャッシング」５１１）を実行する。すなわち、マイクロプロセッサ１０２Aは、ローカルキャッシュメモリ１０５A又は１０５Bに蓄積されたライトデータを一括的に読んで（矢印４１７A又は４１７B）、それらをメインキャッシュメモリ１４に転送してそこに書き込み（矢印４１９）、そして、ディスクアダプタ１３に対して、メインキャッシュメモリ１４に転送されたライトデータのディスクアレイ１４１への書き込みを要求する。この要求を受けて、ディスクアダプタ１３は、上記「ライトバックキャッシング」５１１と非同期の適当なタイミングで、ディスクライト処理（図８、「DSKライト」５１３）を行って、メインキャッシュメモリ１４内のライトデータをディスクアレイ１４１に書き込む（矢印４２１、４２３）。
【００５５】
サブディスクアレイ装置１Rにおいても、ローカルキャッシュメモリ１０５R内のライトデータのメインキャッシュメモリ１４Rへのライトバックキャッシング、及びメインキャッシュメモリ１４Rにキャッシュされたライトデータのディスクドライブ１４１Rへの書き込みが、それぞれ、リモートホストコンピュータ５０Rからのデータライト要求の処理とは非同期の独自のタイミングで行われる。
【００５６】
以上がデータライト処理の動作である。
【００５７】
図９及び図１０は、以上説明したようなデータリード及びデータライトの動作を行う場合のチャネルアダプタ１１内のマイクロプロセッサ１０２の処理の流れを示す。
【００５８】
図９を参照して、ステップ６０１で、マイクロプロセッサ１０２は、ホストコンピュータからデータのリード／ライト要求が受信されたか否か判断する。リード／ライト要求が受信されると、ステップ６０３で、リード要求かライト要求かの識別が行われる。その結果、ライト要求であれば、制御は図１０に示した流れへ進み、リード要求であれば、ステップ６０６で、そのマイクロプロセッサ１０２自身が管理するディレクトリ情報に基づいて、ローカルキャッシュメモリ１０５にリードデータがキャッシュされているかどうかのチェックが行われる。その結果がリードヒットであれば、ステップ６１５で、ローカルキャッシュメモリ１０５からリードデータが読み出され、ステップ６１７で、リードデータがリード完了応答とともにホストコンピュータ送られる。
【００５９】
ステップ６０５のチェック結果がリードミスであれば、ステップ６０７で、同じチャネルアダプタパッケージ内の他のマイクロプロセッサに対して問合せが行われて、それら他のマイクロプロセッサに管理するディレクトリ情報に基づいて、ローカルキャッシュメモリ１０５にリードデータがキャッシュされているかどうかのチェックが行われる。その結果がリードヒットであれば、ステップ６１５で、ローカルキャッシュメモリ１０５からリードデータが読み出され、ステップ６１７で、リードデータがリード完了応答とともにホストコンピュータ送られる。
【００６０】
ステップ６０７のチェック結果が他の全てリードミスである場合には、ステップ６０９で、メインキャッシュメモリ１４にリードデータがキャッシュされているかどうかのチェックが行われる。その結果がリードヒットであれば、ステップ６１３で、リードデータがメインキャッシュメモリ１４から読み出されてローカルキャッシュメモリ１０５に書き込まれる。同時に、マイクロプロセッサ１０２内のディレクトリ情報に、そのリードデータのディレクトリ情報が追加登録される。続いて、ステップ６１５で、ローカルキャッシュメモリ１０５からリードデータが読み出され、ステップ６１７で、リードデータがリード完了応答とともにホストコンピュータ送られる。
【００６１】
ステップ６０９のチェック結果がリードミスである場合には、ステップ６１１で、ディスクアダプタ１３に指示がなされて、リードデータがディスクアレイ１４１から読み出されてメインキャッシュメモリ１４に書かれ、そして、ステップ６１３で、リードデータがメインキャッシュメモリ１４から読み出されてローカルキャッシュメモリ１０５に書き込まれる。同時に、マイクロプロセッサ１０２内のディレクトリ情報に、そのリードデータのディレクトリ情報が追加登録される。続いて、ステップ６１５で、ローカルキャッシュメモリ１０５からリードデータが読み出され、ステップ６１７で、リードデータがリード完了応答とともにホストコンピュータ送られる。これで、受信されたリード要求の処理は終わるので、マイクロプロセッサ１０２内のリード／ライト要求を処理するスレッドは、図９のステップ６０１に戻って、次に到来するリード／ライト要求の処理に移ることができる。
【００６２】
次に、図１０を参照して、ホストコンピュータ５０からのライト要求が受信された場合、ステップ６２１で、ホストコンピュータ５０の種類が識別される。また、ステップ６２３又は６３１で、ライトデータがローカルキャッシュメモリ１０５内にあるかどうかがチェックされる。ステップ６２１のチェックの結果が通常又はマスタホストコンピュータである場合において、ステップ６２３のチェックの結果がライトヒットである場合には、ステップ６２５で、ライトデータが二重化されてローカルキャッシュメモリ１０５の対応するアドレスに上書きされ、一方、ステップ６２３のチェックの結果がライトミスである場合には、ステップ６２７で、ライトデータが二重化されてローカルキャッシュメモリ１０５の空きアドレスに追加書きされる。また、ステップ６２１のチェックの結果がリモートホストコンピュータである場合において、ステップ６３２のチェックの結果がライトヒットである場合には、ステップ６３３で、ライトデータが二重化されることなしにローカルキャッシュメモリ１０５の対応するアドレスに上書きされ、一方、ステップ６３１のチェックの結果がライトミスである場合には、ステップ６３５で、ライトデータが二重化されることなくローカルキャッシュメモリ１０５の空きアドレスに追加書きされる。このようにしてライトデータがローカルキャッシュメモリ１０５に格納された後、ステップ６２９で、ライト完了の応答がホストコンピュータ５０に返される。これで、受信されたライト要求の処理は終わるので、マイクロプロセッサ１０２内のリード／ライト要求を処理するスレッドは、図９のステップ６０１に戻って、次に到来するリード／ライト要求の処理に移ることができる。
【００６３】
また、ステップ６２１のチェックの結果がマスタホストコンピュータである場合には、上述したライト要求の処理とは非同期のタイミングで、ステップ６３７で、リモートホストコンピュータに対してライトデータのリモートコピー要求が送られる。
【００６４】
さらに、上述したライト要求の処理とは非同期のタイミングで、ステップ６４１で、ライトバックキャッシング処理が行われえる。この処理では、ローカルキャッシュメモリ１０５に蓄積されているがまだディスクアレイ１４１に記録されていないライトデータが、まとめてローカルキャッシュメモリ１０５から読み出されてメインキャッシュメモリ１４に転送されそこに書き込まれる(ステップ６４３、６４５）。
【００６５】
図１１及び図１２は、ローカルキャッシュメモリ１０５の記憶領域を複数に分割して、分割された領域を用途に応じて使い分ける２種類の動作例を示す。
【００６６】
図１１は、ローカルキャッシュメモリ１０５の記憶領域をホストリード／ライト（HOST READ/WRITE）用とリモートコピー（REMOTE
COPY）用に使い分ける動作例を示している。
【００６７】
図１１に示すように、例えば、通常ホストコンピュータ５０N又はマスタホストコンピュータ５０Mからのデータアクセス要求を受けることも、リモートホストコンピュータ５０Rからのデータアクセス要求を受けることもできるようになったディスクアレイ装置において、チャネルアダプタのマイクロプロセッサ１０２が、ローカルキャッシュメモリ１０５の記憶領域を、ホストリード／ライト（HOST READ/WRITE）用のキャッシュ領域７０５とリモートコピー（REMOTE COPY）用のキャッシュ領域７０７とに分割して管理する。そして、通常ホストコンピュータ５０N又はマスタホストコンピュータ５０Mからデータライト要求（矢印７０１A)を受信した場合には、マイクロプロセッサ１０２は、受信したライトデータをローカルキャッシュメモリ１０５に書くとき（「ローカルキャッシュ処理」７０２）、そのライトデータを二重化してホストリード／ライト用のキャッシュ領域７０５に書く（矢印７０３A）。一方、リモートホストコンピュータ５０Rからリモートコピーのためのデータライト要求（矢印７０１B)を受信した場合には、マイクロプロセッサ１０２は、「ローカルキャッシュ処理」７０２において、そのライトデータを二重化せずにリモートコピー用のキャッシュ領域７０７に書く（矢印７０３B）。
【００６８】
図１２は、ローカルキャッシュメモリ１０５の記憶領域をランダムアクセス用とシーケンシャルアクセス用に使い分ける動作例を示している。
【００６９】
図１２に示すように、チャネルアダプタのマイクロプロセッサ１０２は、ローカルキャッシュメモリ１０５の記憶領域を、ランダムアクセス（RANDOM ACCESS）用のキャッシュ領域８０５とシーケンシャルアクセス（SEQUENTIAL ACCESS）用のキャッシュ領域８０７とに分割して管理する。ローカルキャッシュメモリ１０５の記憶領域は、多数のキャッシュページ（（PAGE No.1 - PAGE No. MAX）に論理的に分割されている。チャネルアダプタのマイクロプロセッサ１０２は、原則的に、ヒットが期待できるランダムアクセス（RANDOM ACCESS）用のキャッシュ領域８０５に、シーケンシャルアクセス（SEQUENTIAL ACCESS）用のキャッシュ領域８０７よりも大きい記憶領域（例えば、より多くのキャッシュページを割り当てる。シーケンシャルアクセス用のキャッシュ領域８０７は、主に、キャッシュデータの先読みに使うことができる。例えば、1回のデータアクセスが４ｋBである場合に、２５６ｋB分のデータを一括してメインキャッシュメモリ１４から先読みしてローカルキャッシュメモリ１０５のシーケンシャルアクセス用領域８０７に転送しておけば、６４回のアクセスに対してローカルキャッシュメモリ１０５でヒットを得ることができる。
【００７０】
マイクロプロセッサ１０２は、キャッシュ動的割当処理８０２を行って、ランダムアクセス用キャッシュ領域８０５とシーケンシャルアクセス用のキャッシュ領域８０７のサイズ（例えばページ数）の割合を、ランダムアクセスとシーケンシャルアクセスが行われた頻度に応じてダイナミックに調節して最適化する。例えば、シーケンシャルアクセスの頻度が増えた場合には、シーケンシャルアクセス用のキャッシュ領域８０７の領域サイズを増加させ、それにより、キャッシュの先読量を増加させて、ヒット率の向上を図ることができる。また、シーケンシャルアクセスの頻度が少ない場合であっても、最低でも一定サイズのキャッシュ領域はシーケンシャルアクセスに割り当てる。例えば、ローカルキャッシュメモリ１０５が256個のメモリチップから構成されている場合、最低でも例えば１６個のメモリチップはシーケンシャルアクセスに割り当てる。
【００７１】
キャッシュ動的割当処理８０２は例えば次のようにして行うことができる。
【００７２】
一例として、ローカルキャッシュメモリ１０５がもつ総キャッシュページ数（Total CashePageNo）が１０２４ページであり、並行的に異なるアクセス要求を処理できるマルチスレッド数が１２８スレッドである場合を想定する。この場合、シーケンシャルアクセス用のキャッシュ領域８０７に割り当てられる最小のキャッシュページ数（MIN_CashePageNo）を例えば１ページと設定し、最大のキャッシュページ数（MAX_CashePageNo）を例えばマルチスレッド数と同じ１２８ページと設定することができる。このように設定した上で、シーケンシャルアクセス用のキャッシュ領域８０７に現時点で割り当てられられるキャッシュページ数（DynamIndex）を、設定された最小キャッシュページ数（MIN_CashePageNo）と最大キャッシュページ数（MAX_CashePageNo）の間の範囲内で、例えば次式を用いて決定することができる。
【００７３】
DynamIndex  = MAX_CashePageNo x ( fSequential / fTotal )
ここで、「fSequential」は、最近過去に実行されたシーケンシャルアクセスの回数であり、その初期値は０で、シーケンシャルアクセスが行われる都度にインクレメントされる。また、「fTotal」は、最近過去に実行されたシーケンシャルアクセス及びランダムアクセスを合わせたアクセスの合計回数であり、その初期値は０で、シーケンシャルアクセス又はランダムアクセスが行われる都度にインクレメントされる。なお、「fSequential」も「fTotal」も、一定時間（例えば５０ms）にわたり何のアクセスも行われなかった場合には、共に０に初期化される。
【００７４】
上記の例では、シーケンシャルアクセス用のキャッシュ領域８０７に割り当てられるキャッシュページ数（DynamIndex）が、所定の最小キャッシュページ数（MIN_CashePageNo）から最大キャッシュページ数（MAX_CashePageNo、例えばマルチスレッド数に等しいページ数）までの間で、最近過去の全てのアクセス中のシーケンシャルアクセスの頻度割合に応じてダイナミックに調節される。残りのキャッシュページ数（Total CashePageNo − DynamIndex）は、ランダムアクセス用キャッシュ領域８０５に割り当てられる。
【００７５】
以上のようにしてローカルキャッシュメモリ１０５のランダムアクセス用キャッシュ領域８０５とシーケンシャルアクセス用のキャッシュ領域８０７の割合を動的に制御しつつ、メインキャッシュメモリ１４からローカルキャッシュメモリ１０５（特にシーケンシャルアクセス用キャッシュ領域８０７）へのデータの先読み、及びローカルキャッシュメモリ１０５からメインキャッシュメモリ１４へのキャッシュデータの一括ローディングの制御を行うことで、ホストコンピュータ５０に対するデータ入出力性能を高速化することができる。
【００７６】
以上、本発明の実施形態を説明したが、この実施形態は本発明の説明のための例示にすぎず、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【図面の簡単な説明】
【００７７】
【図１】本発明に従うストレージシステム、特にＲＡＩＤ方式のディスクアレイ装置、の一実施形態の全体的な基本構成を示すブロック図。
【図２】チャネルアダプタ１１とメインキャッシュメモリ１４間の接続ネットワーク１６の変形例を示すブロック図。
【図３】チャネルアダプタ１１とメインキャッシュメモリ１４間の接続ネットワーク１６の別の変形例を示すブロック図。
【図４】ホストコンピュータ５０からデータのリード要求を受けた場合のディスクアレイ装置１内でのコマンド及びデータの流れを示す図。
【図５】同場合のディスクアレイ装置１内でのコマンド及びデータの流れを示す図。
【図６】同場合のディスクアレイ装置１内の各部の動作シーケンスを示す図。
【図７】ホストコンピュータ５０からデータのライト要求を受けた場合のディスクアレイ装置１内でのコマンド及びデータの流れを示す図。
【図８】同場合のディスクアレイ装置１内の各部の動作シーケンスを示す図。
【図９】データリード及びデータライトの動作を行う場合のチャネルアダプタ１１内のマイクロプロセッサ１０２の処理の流れを示す図。
【図１０】データリード及びデータライトの動作を行う場合のチャネルアダプタ１１内のマイクロプロセッサ１０２の処理の流れを示す図。
【図１１】ローカルキャッシュメモリ１０５の記憶領域をホストリード／ライト用とリモートコピー用に使い分ける動作を説明する図。
【図１２】ローカルキャッシュメモリ１０５の記憶領域をランダムアクセス用とシーケンシャルアクセス用に使い分ける動作を説明する図。
【符号の説明】
【００７８】
１  ディスクアレイ装置(ストレージ装置）
１１  チャネルアダプタ（CHA）
１２  ディスクドライブ（DSK）
１３  ディスクアダプタ（DKA）
１４  メインキャッシュメモリ（MCM）
１５  共有メモリ（SM）
１６  接続ネットワーク
１７  接続ネットワーク
５０  ホストコンピュータ（HOST）
５０N  通常ホストコンピュータ（N_HOST）
５０M  マスタホストコンピュータ（M_HOST）
５０R  リモートホストコンピュータ（R_HOST）
１０１  ホストインタフェース（HIF）
１０２  マイクロプロセッサ（MP）
１０３  キャッシュメモリコントローラ（CMC）
１０４  共有メモリコントローラ（SMC）
１０５  ローカルキャッシュメモリ（LCM）
１０６  内部バス
１２１  チャネルアダプタパッケージ（CHAPK）
１３１  ローカルキャッシュデータのディレクトリ情報
１３２  排他制御テーブル
１４１  ディスクアレイ
６４１  バックライトキャッシング処理
７０５  ホストリード／ライト（HOST
READ/WRITE）用のローカルキャッシュ領域
７０７  リモートコピー（REMOTE COPY）用のローカルキャッシュ領域
８０５  ランダムアクセス（RANDOM
ACCESS）用のローカルキャッシュ領域
８０７  シーケンシャルアクセス（SEQUENTIAL
ACCESS）用のローカルキャッシュ領域
【図１】
2005157815.tif 000003
【図２】
2005157815.tif 000004
【図３】
2005157815.tif 000005
【図４】
2005157815.tif 000006
【図５】
2005157815.tif 000007
【図６】
2005157815.tif 000008
【図７】
2005157815.tif 000009
【図８】
2005157815.tif 000010
【図９】
2005157815.tif 000011
【図１０】
2005157815.tif 000012
【図１１】
2005157815.tif 000013
【図１２】
2005157815.tif 000014