(57)【要約】【課題】担当外の論理ボリュームを対象とするコマンドを受信したコントローラの負荷を低減させながら、簡易にコマンドに対する処理時間を高速化させ得る記憶制御装置及びその制御方法を提案する。【解決手段】記憶制御装置に、ローカルメモリに保持したホスト計算機からのコマンドに基づいて、対応する論理ユニットに対するデータの入出力を制御する複数のコントローラを設け、ローカルメモリに、論理ユニット及びコントローラの対応関係を表す対応付け情報と、各コントローラ内のローカルメモリのアドレス情報とを格納し、コントローラが、ホスト計算機からのマンドを受信したときに、対象とする論理ユニットがいずれのコントローラと対応付けられているかを対応付け情報に基づいて判断し、他系のコントローラと対応付けられているときには、アドレス情報に基づいて、当該コマンドをそのコントローラ内のローカルメモリに転送し格納するようにした。【選択図】図８
2008134776.tif 000002
【特許請求の範囲】
【請求項１】
上位装置としてのホスト計算機と、前記ホスト計算機に対してデータを読み書きするための記憶領域でなる複数の論理ユニットを提供する記憶装置との間において、前記論理ユニットに対するデータの入出力を制御する記憶制御装置において、
前記ホスト計算機から与えられるコマンドを保持するローカルメモリを有し、当該ローカルメモリに保持した前記コマンドに基づいて、対応する前記論理ユニットに対するデータの入出力を制御する複数のコントローラと、
前記複数のコントローラ間を通信可能な状態に接続するコントローラ間接続経路と
を備え、
前記ローカルメモリには、
前記論理ユニット及び前記コントローラの対応関係を表す対応付け情報と、
自系及び他系の各前記コントローラ内の前記ローカルメモリのアドレス情報とが格納され、
前記コントローラは、
前記ホスト計算機から送信されたコマンドを受信したときに、対象とする前記論理ユニットが自系及び他系のいずれの前記コントローラと対応付けられているかを前記対応付け情報に基づいて判断し、当該論理ユニットが前記他系のコントローラと対応付けられているときには、前記アドレス情報に基づいて、当該コマンドを対応する前記他系のコントローラ内の前記ローカルメモリに転送して格納する
ことを特徴とする記憶制御装置。
【請求項２】
前記ローカルメモリは、
前記自系のコントローラが受信した、当該自系のコントローラに対応付けられた前記論理ユニットを対象とする前記ホスト計算機からの前記コマンドを格納する第１の記憶領域と、前記他系のコントローラから転送された、前記自系のコントローラに対応付けられた前記論理ユニットを対象とする前記ホスト計算機からの前記コマンドを格納する第２の記憶領域とが別個に設けられた
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項３】
前記コントローラは、
前記ホスト計算機及び前記記憶装置間において送受されるデータを一時的に記憶するキャッシュメモリを備え、
前記キャッシュメモリには、
前記他系のコントローラのキャッシュメモリに格納されたデータが複写され、
前記コントローラは、
前記自系のコントローラの前記キャッシュメモリに複写されたデータを用いて、前記ホスト計算機と、前記自系のコントローラのキャッシュメモリとの間のデータ転送を制御する
ことを特徴とする請求項１記載の記憶制御装置。
【請求項４】
前記キャッシュメモリは、
自系のコントローラが受信した前記ホスト計算機又は前記記憶装置からの前記データを格納する第１のデータ記憶領域と、前記他系のコントローラにより複写される前記データを格納する第２のデータ記憶領域とが別個に設けられた
ことを特徴とする請求項３に記載の記憶制御装置。
【請求項５】
前記コントローラ間接続経路は、
ＰＣＩ（Peripheral Component Interconnect）−Ｅｘｐｒｅｓｓ規格に準拠したバスである
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項６】
前記コントローラは、
ＭＳＩ（Message Signal Interrupt）を用いて前記他系のコントローラに必要な情報を通知する
ことを特徴とする請求項５に記載の記憶制御装置。
【請求項７】
上位装置としてのホスト計算機と、前記ホスト計算機に対してデータを読み書きするための記憶領域でなる複数の論理ユニットを提供する記憶装置との間において、前記論理ユニットに対するデータの入出力を制御する記憶制御装置の制御方法において、
前記記憶制御装置は、
前記ホスト計算機から与えられるコマンドを保持するローカルメモリを有し、当該ローカルメモリに保持した前記コマンドに基づいて、対応する前記論理ユニットに対するデータの入出力を制御する複数のコントローラと、
前記複数のコントローラ間を通信可能な状態に接続するコントローラ間接続経路と
を備え、
前記ローカルメモリには、
前記論理ユニット及び前記コントローラの対応関係を表す対応付け情報と、
自系及び他系の各前記コントローラ内の前記ローカルメモリのアドレス情報とが格納され、
前記コントローラが、前記ホスト計算機から送信されたコマンドを受信したときに、対象とする前記論理ユニットが自系及び他系のいずれの前記コントローラと対応付けられているかを前記対応付け情報に基づいて判断する第１のステップと、
前記コントローラが、当該論理ユニットが前記他系のコントローラと対応付けられているときには、前記アドレス情報に基づいて、当該コマンドを対応する前記他系のコントローラ内の前記ローカルメモリに転送して格納する第２のステップと
を備えることを特徴とする記憶制御装置の制御方法。
【請求項８】
前記ローカルメモリは、
前記自系のコントローラが受信した、当該自系のコントローラに対応付けられた前記論理ユニットを対象とする前記ホスト計算機からの前記コマンドを格納する第１の記憶領域と、前記他系のコントローラから転送された、前記自系のコントローラに対応付けられた前記論理ユニットを対象とする前記ホスト計算機からの前記コマンドを格納する第２の記憶領域とが別個に設けられた
ことを特徴とする請求項７に記載の記憶制御装置の制御方法。
【請求項９】
前記コントローラは、
前記ホスト計算機及び前記記憶装置間において送受されるデータを一時的に記憶するキャッシュメモリを備え、
前記キャッシュメモリには、
前記他系のコントローラのキャッシュメモリに格納されたデータが複写され、
前記コントローラが、前記自系のコントローラの前記キャッシュメモリに複写されたデータを用いて、前記ホスト計算機と、前記自系のコントローラのキャッシュメモリとの間のデータ転送を制御する第３のステップと
を備えることを特徴とする請求項８記載の記憶制御装置の制御方法。
【請求項１０】
前記キャッシュメモリは、
自系のコントローラが受信した前記ホスト計算機又は前記記憶装置からの前記データを格納する第１のデータ記憶領域と、前記他系のコントローラにより複写される前記データを格納する第２のデータ記憶領域とが別個に設けられた
ことを特徴とする請求項９に記載の記憶制御装置の制御方法。
【請求項１１】
前記コントローラ間接続経路は、
ＰＣＩ（Peripheral Component Interconnect）−Ｅｘｐｒｅｓｓ規格に準拠したバスである
ことを特徴とする請求項１０に記載の記憶制御装置の制御方法。
【請求項１２】
前記コントローラは、
ＭＳＩ（Message Signal Interrupt）を用いて前記他系のコントローラに必要な情報を通知する
ことを特徴とする請求項１１に記載の記憶制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及びその制御方法に関し、特に、ホスト計算機からの情報の入出力要求を制御する複数のマイクロプロセッサを備えるストレージ装置に適用して好適なものである。
【背景技術】
【０００２】
従来、ストレージ装置においては、信頼性及び応答性の向上が求められている。これに対して、複数コントローラ間でデータを冗長に記憶し、データ処理を分散して実行する技術が知られている。下記特許文献１には、一方のコントローラが受信したコマンドに基づく処理を、そのコマンドを受信したコントローラが備えるロプロセッサと、他方のコントローラが備えるプロセッサとの両方のプロセッサを利用して実行する技術が開示されている。
【特許文献１】特開平９−１４６８４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、かかる特許文献１に開示された記憶サブシステムでは、多重化したコントローラを備える記憶サブシステムについて開示している。各コントローラのプロセッサにはそれぞれ担当する論理ボリュームが対応付けられており、担当外の論理ボリュームを対象とするコマンドを受信した場合には、その論理ボリュームに対応付けられたプロセッサに対する依頼処理を実行する。
【０００４】
しかしながら、この記憶サブシステムでは、コントローラがホスト計算機から担当外の論理ボリュームを対象とするコマンドを受信した場合にも、当該コマンドに基づくホスト計算機及びキャッシュメモリの間のデータ転送は、かかるコマンドを受信したコントローラ内のプロセッサによって処理されていた。このため、かかる記憶サブシステムでは、多重化された複数のコントローラの間で受信するコマンド数が偏った場合、多くのコマンドを受信したコントローラに負荷が集中する問題があった。
【０００５】
また、かかる記憶サブシステムでは、コントローラが担当外の論理ボリュームを対象とするコマンドを受信した場合、そのコントローラがコマンドを解析したり、その論理ボリュームに対応付けられたコントローラと通信を行なって当該コントローラにそのコマンドに応じた処理を依頼することになるため、その分かかる担当外の論理ボリュームを対象とするコマンドを受信したコントローラに余計な負荷が生じたり、当該コマンドに対する記憶サブシステム全体としての処理時間の遅延が発生するという問題があった。
【０００６】
従って、かかる記憶サブシステムにおいて、コマンドに対する記憶サブシステム全体としての処理時間の高速化を図るためには、そのとき対象となる論理ボリュームを担当するマイクロプロセッサやコントローラに対してコマンドを発行するようにホスト計算機を設定する必要があり、この設定作業のために多くの労力及び時間を要する問題があった。
【０００７】
本発明は以上の点を考慮してなされたもので、担当外の論理ボリュームを対象とするコマンドを受信したコントローラの負荷を低減させながら、簡易にコマンドに対する処理時間を高速化させ得る記憶制御装置及びその制御方法を提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため本発明においては、上位装置としてのホスト計算機と、前記ホスト計算機に対してデータを読み書きするための記憶領域でなる複数の論理ユニットを提供する記憶装置との間において、前記論理ユニットに対するデータの入出力を制御する記憶制御装置において、前記ホスト計算機から与えられるコマンドを保持するローカルメモリを有し、当該ローカルメモリに保持した前記コマンドに基づいて、対応する前記論理ユニットに対するデータの入出力を制御する複数のコントローラと、前記複数のコントローラ間を通信可能な状態に接続するコントローラ間接続経路とを備え、前記ローカルメモリには、前記論理ユニット及び前記コントローラの対応関係を表す対応付け情報と、自系及び他系の各前記コントローラ内の前記ローカルメモリのアドレス情報とが格納され、前記コントローラは、前記ホスト計算機から送信されたコマンドを受信したときに、対象とする前記論理ユニットが自系及び他系のいずれの前記コントローラと対応付けられているかを前記対応付け情報に基づいて判断し、当該論理ユニットが前記他系のコントローラと対応付けられているときには、前記アドレス情報に基づいて、当該コマンドを対応する前記他系のコントローラ内の前記ローカルメモリに転送して格納することを特徴とする。
【０００９】
この結果、この記憶制御装置では、コントローラが他系のコントローラと対応付けられた論理ユニットを対象とするコマンドを受信した場合に、コマンドを受信したコントローラがかかる他系のコントローラと通信を行なって当該他系のコントローラにそのコマンドに応じた処理を依頼するという処理が不要となる。かくするにつき、かかるコマンドの受け渡しの際に、かかる通信に起因するコマンドを受信したコントローラに余計な負荷が生じたり、当該コマンドに対する処理時間の遅延が発生するのを有効に防止できる。またこの場合において、ホスト計算機に何らの設定をも行う必要がない。
【００１０】
また本発明においては、上位装置としてのホスト計算機と、前記ホスト計算機に対してデータを読み書きするための記憶領域でなる複数の論理ユニットを提供する記憶装置との間において、前記論理ユニットに対するデータの入出力を制御する記憶制御装置の制御方法において、前記記憶制御装置は、前記ホスト計算機から与えられるコマンドを保持するローカルメモリを有し、当該ローカルメモリに保持した前記コマンドに基づいて、対応する前記論理ユニットに対するデータの入出力を制御する複数のコントローラと、前記複数のコントローラ間を通信可能な状態に接続するコントローラ間接続経路とを備え、前記ローカルメモリには、前記論理ユニット及び前記コントローラの対応関係を表す対応付け情報と、自系及び他系の各前記コントローラ内の前記ローカルメモリのアドレス情報とが格納され、前記コントローラが、前記ホスト計算機から送信されたコマンドを受信したときに、対象とする前記論理ユニットが自系及び他系のいずれの前記コントローラと対応付けられているかを前記対応付け情報に基づいて判断する第１のステップと、前記コントローラが、当該論理ユニットが前記他系のコントローラと対応付けられているときには、前記アドレス情報に基づいて、当該コマンドを対応する前記他系のコントローラ内の前記ローカルメモリに転送して格納する第２のステップとを備えることを特徴とする。
【００１１】
この結果、この制御方法によれば、コントローラが他系のコントローラと対応付けられた論理ユニットを対象とするコマンドを受信した場合に、コマンドを受信したコントローラがかかる他系のコントローラと通信を行なって当該他系のコントローラにそのコマンドに応じた処理を依頼するという処理が不要となる。かくするにつき、かかるコマンドの受け渡しの際に、かかる通信に起因するコマンドを受信したコントローラに余計な負荷が生じたり、当該コマンドに対する処理時間の遅延が発生するのを有効に防止できる。またこの場合において、ホスト計算機に何らの設定をも行う必要がない。
【発明の効果】
【００１２】
本発明によれば、担当外の論理ボリュームを対象とするコマンドを受信したコントローラの負荷を低減させながら、簡易にコマンドに対する処理時間を高速化させ得る記憶制御装置及びその制御方法を実現できる。
【発明を実施するための最良の形態】
【００１３】
以下図面について、本発明の一実施の形態を詳述する。
【００１４】
（１）第１の実施の形態
（１−１）本実施の形態による記憶システムの構成
図１において、１は全体として本実施の形態による記憶システムを示す。この記憶システム１は、ホスト計算機２Ａ，２Ｂが記憶制御装置３を介して複数の記憶装置４Ａ〜４Ｄに接続されることにより構成されている。
【００１５】
ホスト計算機２Ａ，２Ｂは、例えばＣＰＵ（Central Processing Unit）やメモリなどの情報処理資源を備えたコンピュータであり、具体的にはパーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。ホスト計算機２Ａ，２Ｂには、記憶制御装置３にアクセスするための通信ポート（例えばＬＡＮカードやホストバスアダプタに設けられたポート）が設けられており、この通信ポートを介してデータの入出力要求コマンドを記憶制御装置３に送信することができるようになされている。
【００１６】
記憶制御装置３は、それぞれ異なるホスト計算機が接続された０系及び１系のコントローラ６Ａ，６Ｂと、これらコントローラ６Ａ，６Ｂ間を通信可能な状態に接続するコントローラ間接続経路５とから構成される。
【００１７】
コントローラ間接続経路５としては、例えば１レーン片方向当たり（最大８レーン）のデータ転送量が２．５〔Gbit/sec〕と高速なデータ通信を実現するＰＣＩ（Peripheral Component Interconnect）−Ｅｘｐｒｅｓｓ規格に準拠したバスが適用される。０系及び１系のコントローラ６Ａ，６Ｂ間における後述のようなデータや各種情報の送受は、すべてこのコントローラ間接続経路５を介して行なわれる。
【００１８】
各コントローラ６Ａ，６Ｂは、それぞれ自コントローラに接続されたホスト計算機２Ａ，２Ｂからの要求に応じて記憶装置４Ａ〜４Ｄに対するデータの読み書きを制御するもので、ホスト通信制御部１０Ａ，１０Ｂ、データ転送制御部１１Ａ，１１Ｂ、キャッシュメモリ１２Ａ，１２Ｂ、ブリッジ１３Ａ，１３Ｂ、ローカルメモリ１４Ａ，１４Ｂ、マイクロプロセッサ１５Ａ，１５Ｂ、記憶装置通信制御部１６Ａ，１６Ｂ及び記憶装置側スイッチ１７Ａ，１７Ｂなどを備える。
【００１９】
このうちホスト通信制御部１０Ａ，１０Ｂは、ホスト計算機２Ａ，２Ｂとの通信制御を行なうインタフェースであり、複数の通信ポート２０Ａ，２０Ｂ及びホスト通信プロトコルチップ２１Ａ，２１Ｂを有する。
【００２０】
通信ポート２０Ａ，２０Ｂは、そのコントローラ６Ａ，６Ｂをネットワークやホスト計算機２Ａ，２Ｂに接続するためのものであり、例えばＩＰ（Internet Protocol）アドレスやＷＷＮ（World Wide Name）などの固有のネットワークアドレスがそれぞれ割り当てられる。
【００２１】
またホスト通信プロトコルチップ２１Ａ，２１Ｂは、ホスト計算機２Ａ，２Ｂとの間の通信時におけるプロトコル制御を行う。このためホスト通信プロトコルチップ２１Ａ，２１Ｂとしては、例えばホスト計算機２Ａ，２Ｂとの間の通信プロトコルがファイバーチャネル（ＦＣ：Fibre Channel）プロトコルである場合にはファイバーチャネル変換プロトコルチップ、かかる通信プロトコルがｉＳＣＳＩプロトコルである場合にはｉＳＣＳＩプロトコルチップというように、ホスト計算機２Ａ，２Ｂとの間の通信プロトコルに適合したものが適用される。
【００２２】
さらにホスト通信プロトコルチップ２１Ａ，２１Ｂには、複数のマイクロプロセッサとの間で通信を行い得るマルチマイクロプロセッサ機能が搭載されており、これによりホスト通信プロトコルチップ２１Ａ，２１Ｂが必要時に０系のコントローラ６Ａ内のマイクロプロセッサ１５Ａと、１系のコントローラ６Ｂ内のマイクロプロセッサ１５Ｂとの双方と通信を行い得るようになされている。
【００２３】
データ転送制御部１１Ａ，１１Ｂは、０系及び１系のコントローラ６Ａ，６Ｂ間のデータ転送と、０系又は１系のコントローラ６Ａ，６Ｂ内の各要素間でのデータ転送を制御する機能を備える。またデータ転送制御部１１Ａ，１１Ｂは、自系のマイクロプロセッサ１５Ａ，１５Ｂからの指示により、ホスト計算機２Ａ，２Ｂから与えられたライトデータを指定されたキャッシュメモリ１２Ａ，１２Ｂに複写（多重書き）する機能を備える。具体的には、０系又は１系のマイクロプロセッサ１５Ａ，１５Ｂが自系のキャッシュメモリ１２Ａ，１２Ｂにデータを格納した場合、このデータを他系のキャッシュメモリ１２Ｂ，１３Ａにも書き込む（二重書き）。
【００２４】
またデータ転送制御部１１Ａ，１１Ｂは、後述する自系及び他系のローカルメモリ１４Ａ，１４Ｂ内の共有領域３２Ａ，３２Ｂ（図２）に格納された情報が常に同じとなるように、一方の共有領域３２Ａ，３２Ｂ内の情報が更新されたときには、他方の共有領域３２Ｂ，３２Ａ内の情報も同様に更新する。
【００２５】
ブリッジ１３Ａ，１３Ｂは、自系のマイクロプロセッサ１５Ａ，１５Ｂ及びローカルメモリ１４Ａ，１４Ｂをそれぞれ自系のデータ転送制御部１１Ａ，１１Ｂに接続する中継装置であり、ホスト通信制御部１０Ａ，１０Ｂ、データ転送制御部１１Ａ，１１Ｂ、記憶装置通信制御部１６Ａ，１６Ｂ及びキャッシュメモリ１２Ａ，１２Ｂ間を接続するバスを流れるデータのうちの対応するデータのみを抽出してマイクロプロセッサ１５Ａ，１５Ｂやローカルメモリ１４Ａ，１４Ｂに転送する。
【００２６】
マイクロプロセッサ１５Ａ，１５Ｂは、それぞれ自系のコントローラ６Ａ，６Ｂ全体の動作制御を司る機能を有する。これらマイクロプロセッサ１５Ａ，１５Ｂは、後述のようにローカルメモリ１４Ａ，１４Ｂに格納されたライトコマンドやリードコマンドに応じて、予め自己に対して排他的に割り当てられた論理ボリューム（以下、これを担当論理ボリュームと呼ぶ）に対するデータの読み書き等の処理を行う。
【００２７】
このような各マイクロプロセッサ１５Ａ，１５Ｂに対する担当論理ボリュームの割り当ては、各マイクロプロセッサ１５Ａ，１５Ｂの負荷状況や、ホスト計算機２Ａ，２Ｂから与えられる論理ボリュームごとの担当マイクロプロセッサを指定する担当マイクロプロセッサ指定コマンドの受信によって動的に変更することが可能である。また、各マイクロプロセッサ１５Ａ，１５Ｂに対する担当論理ボリュームの割り当ては、記憶制御装置３及びホスト計算機２Ａ，２Ｂ間の接続経路や、記憶制御装置３及び記憶装置４Ａ〜４Ｄ間の接続経路等における障害発生の有無によっても動的に変更することができる。
【００２８】
ローカルメモリ１４Ａ，１４Ｂは、各種制御プログラムを格納するために用いられるほか、ホスト計算機２Ａ，２Ｂから与えられるリードコマンドやライトコマンド等の各種コマンドを一時的に保持するために用いられる。マイクロプロセッサ１５Ａ，１５Ｂは、このローカルメモリ１４Ａ，１４Ｂに格納されたリードコマンドやライトコマンドを、当該ローカルメモリ１４Ａ，１４Ｂに格納された順番で処理する。
【００２９】
キャッシュメモリ１２Ａ，１２Ｂは、主としてホスト計算機２Ａ，２Ｂ及び記憶装置４Ａ〜４Ｄ間や、０系及び１系のコントローラ６Ａ，６Ｂ間で転送されるデータを一時的に記憶するために用いられる。
【００３０】
記憶装置通信制御部１６Ａ，１６Ｂは、各記憶装置４Ａ〜４Ｄとの通信を制御するインタフェースであり、記憶装置通信プロトコルチップ２２Ａ，２２Ｂを備える。この記憶装置通信プロトコルチップ２２Ａ，２２Ｂとしては、例えば記憶装置４Ａ〜４ＤとしてＦＣハードディスクドライブを適用する場合にはＦＣプロトコルチップを適用でき、記憶装置４Ａ〜４ＤとしてＳＡＳハードディスクドライブを適用する場合にはＳＡＳプロトコルチップを適用できる。また記憶装置４Ａ〜４ＤとしてＳＡＴＡハードディスクドライブを適用する場合には、記憶装置通信プロトコルチップ２２Ａ，２２Ｂとして、ＦＣプロトコルチップ又はＳＡＳプロトコルチップを適用でき、ＳＡＴＡハードディスクドライブにはＳＡＴＡプロトコル変換チップを介して接続する構成とすることもできる。
【００３１】
記憶装置側スイッチ１７Ａ，１７Ｂは、通信相手となる記憶装置４Ａ〜４Ｄを切り替えるためのスイッチであり、例えばＳＡＳ−ＥｘｐａｎｄｅｒやＦＣループスイッチを適用することができる。また記憶装置側スイッチ１７Ａ，１７Ｂに代えて、例えばＦＣループで記憶装置４Ａ〜４Ｄと接続する構成とすることもできる。
【００３２】
記憶装置４Ａ〜４Ｄは、例えば複数のハードディスクドライブ、具体的にはＦＣハードディスクドライブ、ＳＡＳハードディスクドライブ及び又はＳＡＴＡハードディスクドライブ等が搭載されたディスクアレイ装置として構成される。これら複数のハードディスクドライブが提供する記憶領域上には、データを読み書きするための論理的な記憶領域である論理ユニットを複数設定することができる。
【００３３】
論理ユニットの設定においては、複数の記憶装置４Ａ〜４Ｄ間でＲＡＩＤ技術を適用することで信頼性及び応答性を高めることができる。具体的には、「ＲＡＩＤ０」、「ＲＡＩＤ１」、「ＲＡＩＤ３」、「ＲＡＩＤ５」、「ＲＡＩＤ６」又は「ＲＡＩＤ０＋１」等の様々なＲＡＩＤレベルを論理ユニットごとに設定することができる。
【００３４】
さらに記憶装置４Ａ〜４Ｄに搭載する記憶デバイスとして、ハードディスクドライブに代えて、フラッシュメモリ等の半導体メモリや、光ディスク装置を適用することができる。またフラッシュメモリとしては、安価で書込み速度が比較的低速であり、かつライト回数制限が低い第１のタイプのものと、高価でライトコマンド処理が当該第１のタイプよりも高速であり、かつライト回数制限が第１のタイプよりも高い第２のタイプとのいずれのタイプのフラッシュメモリを用いることもできる。
【００３５】
さらにこれら第１及び又は第２のタイプのフラッシュメモリと、ハードディスクドライブとを記憶デバイスとして記憶装置４Ａ〜４Ｄに混載する構成とすることもできる。
【００３６】
（１−２）記憶システムにおけるコマンド処理
（１−２−１）メモリ構成及びテーブル構成
次に、かかる記憶システム１の記憶制御装置３において行われるコマンド処理について説明する。
【００３７】
この記憶システム１の場合、記憶制御装置３を構成する０系及び１系の各コントローラ６Ａ，６Ｂのメモリ空間には、それぞれ自系のコントローラ６Ａ，６Ｂ内のメモリ領域に加えて、他系のコントローラ６Ｂ，６Ａ内のメモリ領域もがマッピングされており、これによりこれら０系及び１系のコントローラ６Ａ，６Ｂが他系のコントローラ６Ｂ，６Ａ内のメモリ領域にも直接アクセスできるようになされている。
【００３８】
そして、０系及び１系のコントローラ６Ａ，６Ｂ内のマイクロプロセッサ１５Ａ，１５Ｂは、ホスト計算機２Ａ，２Ｂから他系のコントローラ６Ｂ，６Ａに割り当てられている論理ユニットを対象とするライトコマンドやリードコマンドが与えられたときには、かかるライトコマンド又はリードコマンドを他系のローカルメモリ１４Ｂ，１４Ａに書き込むようにして当該他系のコントローラ６Ｂ，６Ａに転送する。
【００３９】
このようにこの記憶システム１においては、ホスト計算機２Ａ，２Ｂから０系又は１系のコントローラ６Ａ，６Ｂに対して他系のコントローラ６Ｂ，６Ａが実行すべきライトコマンドやリードコマンドが与えられたときに、そのライトコマンドやリードコマンドを他系のローカルメモリ１４Ｂ，１４Ａに直接書き込むようにして中継するため、当該ライトコマンド又はリードコマンドの受け渡しのために０系及び１系のコントローラ６Ａ，６Ｂ同士が通信を行なう必要がなく、その分迅速なライトコマンド処理又はリードコマンド処理を行うことができる。
【００４０】
ここで、図２（Ａ）は、０系（CTL0）及び１系（CTL1）のマイクロプロセッサ１５Ａ，１５Ｂがそれぞれ認識するメモリ空間のメモリマップを示し、図２（Ｂ）は、０系及び１系のホスト通信プロトコルチップ１０Ａ，１０Ｂがそれぞれ認識するメモリ空間のメモリマップを示している。
【００４１】
図２（Ａ）において、０系のマイクロプロセッサ１５Ａが認識するメモリ空間は、「CTL0 Memory Map（CTL0 プロセッサ）」のフィールド３０Ａに登録されたメモリ又はレジスタがそれぞれ提供する記憶領域（「ADR」フィールド３０Ａに格納されたアドレス範囲の領域）からなるメモリ空間であり、１系のマイクロプロセッサ１５Ｂが認識するメモリ領域は、「CTL1 Memory Map（CTL1 プロセッサ）」のフィールド３０Ｃに登録されたメモリ又はレジスタがそれぞれ提供する記憶領域（「ADR」フィールド３０Ａに格納されたアドレス範囲の領域）からなるメモリ空間である。
【００４２】
また図２（Ｂ）において、０系のホスト通信プロトコルチップ１０Ａが認識するメモリ空間は、「CTL0 Memory Map（CTL0 ホスト通信プロトコルチップ）」のフィールド３１Ａに登録されたメモリやレジスタがそれぞれ提供する記憶領域（「ADR」フィールド３１Ａに格納されたアドレス範囲の領域）からなるメモリ空間であり、１系のホスト通信プロトコルチップ１０Ｂが認識するメモリ領域は、「CTL1 Memory Map（CTL1 ホスト通信プロトコルチップ）」のフィールド３１Ｃに登録されたメモリがそれぞれ提供する記憶領域（「ADR」フィールド３１Ａに格納されたアドレス範囲の領域）からなるメモリ空間である。
【００４３】
図２（Ａ）及び（Ｂ）のメモリマップのデータのうち、自系のローカルメモリ１４Ａ，１４Ｂのアドレス（「0x0＿00000000-0x0＿7FFFFFFF」）及び自系のブリッジ１３Ａ，１３Ｂのアドレス（「0x0＿80000000-0x0＿FFFFFFFF」）は、それぞれ自系のマイクロプロセッサ１５Ａ，１５Ｂに接続された図示しないフラッシュメモリに第１のアドレス情報として予め格納され、図２（Ａ）のこれ以外のアドレスは自系のデータ転送制御部１１Ａ，１１Ｂ内に設けられた図示しないレジスタに第２のアドレス情報として予め格納されている。
【００４４】
そして、０系及び１系の各マイクロプロセッサ１５Ａ，１５Ｂは、それぞれこれらフラッシュメモリ及びレジスタに格納された第１及び第２のアドレス情報に基づいてメモリ空間を図２（Ａ）や図２（Ａ）のようにそれぞれ認識でき、この認識結果に基づいて、自系内のローカルメモリ１４Ａ，１４Ｂ及びキャッシュメモリ１２Ａ，１２Ｂ等に加えて、他系のローカルメモリ１４Ａ，１４Ａやキャッシュメモリ１２Ｂ，１２Ａなどにもアクセスすることができる。
【００４５】
一方、図３（Ａ）及び（Ｂ）は、０系及び１系のコントローラ６Ａ，６Ｂにおけるローカルメモリ１４Ａ，１４Ｂのメモリ構成をそれぞれ示す。この図３（Ａ）及び（Ｂ）に示すように、記憶システム１では、かかる０系及び１系のローカルメモリ１４Ａ，１４Ｂの記憶領域を、自系コントローラ受信コマンド格納領域４０Ａ，３４０Ｂ、他系コントローラ受信コマンド格納領域４１Ａ，３４１Ｂ及び共有領域４２Ａ，４２Ｂの別個の３つの記憶領域に分けて管理している。
【００４６】
このうち自系コントローラ受信コマンド格納領域４０Ａ，４０Ｂ内には、制御情報格納領域４０ＡＸ，４０ＢＸが設けられており、自系のホスト通信制御部１０Ａ，１０Ｂが受信したライトコマンドやリード等のコマンドがこの制御情報格納領域４０ＡＸ，４０ＢＸに格納される。
【００４７】
また他系コントローラ受信コマンド格納領域４１Ａ，４１Ｂには、制御情報格納領域４１ＡＸ，４１ＢＸ及び実行処理格納領域４１ＡＹ，４１ＢＹが設けられており、他系のコントローラ６Ｂ，６Ａのホスト通信制御部１０Ｂ，１０Ａが受信した一般的なコマンド及び制御情報が制御情報格納領域４１ＡＸ，４１ＢＸに格納される。さらに実行処理格納領域４１ＡＹ，４１ＢＹには、他系コントローラ６Ｂ，６Ａの担当論理ユニットに関する処理を自系コントローラ６Ａ，６Ｂが新たに担当する際に、他系コントローラ６Ｂ，６Ａ内で受信コマンドが解析された後の実行処理内容が格納される。
【００４８】
さらに共有領域３２Ａ，３２Ｂには、論理ユニット／プロセッサ対応付けテーブル４３Ａ，４３Ｂ、ローカルメモリ情報テーブル４４Ａ，４４Ｂ及びキャッシュメモリ情報テーブル４５Ａ，４５Ｂが格納される。これら論理ユニット／プロセッサ対応付けテーブル４３Ａ，４３Ｂ、ローカルメモリ情報テーブル４４Ａ，４４Ｂ及びキャッシュメモリ情報テーブル４５Ａ，４５Ｂについては、後述する。
【００４９】
他方、図４（Ａ）及び（Ｂ）は、０系及び１系の各コントローラ６Ａ，６Ｂにおけるキャッシュメモリ１２Ａ，１２Ｂのメモリ構成をそれぞれ示す。この図４（Ａ）及び（Ｂ）に示すように、記憶システム１では、かかる０系及び１系のキャッシュメモリ１２Ａ，１２Ｂの記憶領域を、自系プロセッサ領域５０Ａ，５０Ｂ及び他系プロセッサ領域５１Ａ，５１Ｂの別個の２つの記憶領域に分けて管理している。
【００５０】
自系プロセッサ領域５０Ａ，５０Ｂは、主として自系のマイクロプロセッサによって使用される領域であり、ホスト計算機２Ａ，２Ｂと記憶装置４Ａ〜４Ｄとの間のデータ転送の際にデータを一時的に記憶するデータ格納領域５０ＡＹ，５０ＢＹと、データ格納領域５０ＡＹ，５０ＢＹに格納されるデータの管理情報を格納するデータ管理情報格納領域５０ＡＸ，５０ＢＸとから構成される。
【００５１】
データ格納領域５０ＡＹ，５０ＢＹに格納されたデータや、データ管理情報格納領域５０ＡＸ，５０ＢＸに格納された管理情報は、その後、データ転送制御部１１Ａ，１１Ｂによって他系のキャッシュメモリ１２Ｂ，１２Ａの他系マイクロプロセッサ格納領域５１Ｂ，５１Ａ内の対応するデータ格納領域５１ＢＹ，５１ＡＹ又はデータ管理情報格納領域５１ＢＸ，５１ＡＸに複写（二重書き）される。
【００５２】
また他系マイクロプロセッサ格納領域５１Ａ，５１Ｂは、他系のキャッシュメモリ１２Ｂ，１２Ａ内の自系コントローラ格納領域５０Ｂ，５０Ａに格納した情報を複写（二重書き）するための領域である。
【００５３】
なお、管理情報は、キャッシュメモリ１２Ａ，１２Ｂに格納されたデータを管理するための情報であり、かかるデータがリードデータであるかライトデータであるかを示す情報と、マイクロプロセッサ１５Ａ，１５Ｂ及びホスト通信プロトコルチップ２１Ａ，２１Ｂ間でデータ保障を行うためのデータ保証コードとなどから構成される。
【００５４】
図５〜図７は、それぞれ上述の論理ユニット／プロセッサ対応付けテーブル４３Ａ，４３Ｂ、ローカルメモリ情報テーブル４４Ａ，４４Ｂ及びキャッシュメモリ情報テーブル４５Ａ，４５Ｂを示している。
【００５５】
このうち論理ユニット／プロセッサ対応付けテーブル４３Ａ，４３Ｂは、各論理ユニットと、当該論理ユニットに関する処理を担当するマイクロプロセッサ１５Ａ，１５Ｂ（以下、適宜、これを担当マイクロプロセッサと呼ぶ）との対応関係を管理するためのテーブルであり、図５に示すように、「ＬＵＮ（Logical unit number）」フィールド４３Ｃ、「担当コントローラ番号」フィールド４３Ｄ、「担当プロセッサ番号」フィールド４３Ｅ及び「処理フラグ」フィールド４３Ｆから構成される。
【００５６】
そして「ＬＵＮ」フィールド４３Ｃには、記憶装置４Ａ〜４Ｄ内に定義された各論理ユニットのＬＵＮがそれぞれ格納され、「担当コントローラ番号」フィールド４３Ｄには、その論理ユニットに関する処理を担当するコントローラ６Ａ，６Ｂ（以下、適宜、これを担当コントローラと呼ぶ）の識別子が格納される。
【００５７】
また「担当プロセッサ番号」フィールド４３Ｅには、対応する論理ユニットの担当マイクロプロセッサの識別子が格納される。なお、この「担当プロセッサ番号」フィールド４３Ｅは、担当コントローラ内に複数のマイクロプロセッサ１５Ａ，１５Ｂが存在するときに、そのうちのどれが担当マイクロプロセッサであるかを管理するために設けられたものである。ただし、本実施の形態においては、０系及び１系のコントローラ６Ａ，６Ｂにはいずれも１つのマイクロプロセッサ１５Ａ，１５Ｂしか存在しないため、担当コントローラ及び担当マイクロプロセッサは１対１で対応する。
【００５８】
さらに「処理フラグ」フィールド４３Ｆには、対応する論理ユニットのデータの整合性を管理するための処理フラグが格納される。例えば「ホスト０−０」は、識別子が「０」のホスト計算機２Ａ，２Ｂから与えられた、対応する論理ユニットを対象とした０番目のコマンドに関する処理が実行中であることを示し「ホスト１−０」は、識別子が「１」のホスト計算機２Ａ，２Ｂから与えられた、対応する論理ユニットを対象とした０番目のコマンドに関する処理が実行中であることを示す。
【００５９】
従って、例えば図５の例では、ＬＵＮが「０」、「２」及び「４」の各論理ユニットの担当コントローラは０系のコントローラ６Ａ，６Ｂ、担当マイクロプロセッサは識別子が「０」のマイクロプロセッサ１５Ａ，１５Ｂであり、ＬＵＮが「０」の論理ユニットについては、現在、識別子が「０」のホスト計算機２Ａ，２Ｂから与えられた、その論理ユニットを対象とした０番目のコマンドに関する処理が実行中であることが示されている。
【００６０】
また図５の例では、ＬＵＮが「１」、「３」及び「５」の各論理ユニットの担当コントローラ及び担当マイクロプロセッサは、それぞれ１系のコントローラ６Ａ及び当該コントローラ６Ａ内の識別子が「１」のマイクロプロセッサ１５Ａ，１５Ｂであり、ＬＵＮが「１」の論理ユニットについては、現在、識別子が「０」のホスト計算機２Ａ，２Ｂから与えられた、その論理ユニットを対象とした１番目のコマンドに関する処理が実行中であることが示されている。
【００６１】
そしてこの記憶システム１では、例えばこの図５の状態のときに、ＬＵＮが「０」の論理ユニットに対してホスト計算機２Ａ，２Ｂから「０」番目以外の新たなコマンドが与えられた場合には、かかる「０」番目のコマンドに関する処理が完了するまでは、かかる新たなコマンドに関する処理を実行せず、かかる「０」番目のコマンドに関する処理が完了してから新たなコマンドに関する処理を実行するように制御される。このような制御により、複数のホスト計算機２Ａ，２Ｂが論理ユニットを共有する場合等に、各論理ユニットへのデータ入出力処理を整合性を維持して行うことが可能となる。
【００６２】
一方、ローカルメモリ情報テーブル４４Ａ，４４Ｂは、０系のコントローラ６Ａ内のローカルメモリ１４Ａと、１系のコントローラ６Ｂ内のローカルメモリ１４Ｂとにそれぞれアクセスするために必要なアドレス情報等を管理するためのテーブルであり、図６に示すように、「メモリ識別子」フィールド４４Ｃ、「メモリアドレス」フィールド４４Ｄ、「セグメントブロック識別子」フィールド４４Ｅ、「先頭セグメントアドレス」フィールド４４Ｆ及び「開放フラグ」フィールド４４Ｇから構成される。
【００６３】
このうち「メモリ識別子」フィールド４４Ａには、対応するローカルメモリ１４Ａ，１４Ｂに付与された固有の識別子が格納される。また「メモリアドレス範囲」フィールド４４Ｄには、対応するローカルメモリ１４Ａ，１４Ｂが提供する記憶領域上の各領域にそれぞれ付与されたアドレスの範囲が格納される。この場合において、かかるアドレスは、０系及び１系のコントローラ６Ａ，６Ｂ内の各ローカルメモリ１４Ａ，１４Ｂがそれぞれ提供する記憶領域と、０系及び１系のコントローラ６Ａ，６Ｂ内の各キャッシュメモリ１２Ａ．１２Ｂが提供する記憶領域とを通じて重複しないように割り当てられる。
【００６４】
また「セグメントブロック識別子」フィールド４４Ｅには、対応するローカルメモリ１４Ａ，１４Ｂが提供する記憶領域を所定単位で分割してなる各分割領域（以下、これをセグメントと呼ぶ）の識別子が格納される。この識別子は、０系及び１系のコントローラ６Ａ，６Ｂ内の各ローカルメモリ１４Ａ，１４Ｂがそれぞれ提供する記憶領域内に定義された各セグメントと、０系及び１系のコントローラ６Ａ，６Ｂ内の各キャッシュメモリ１２Ａ，１２Ｂ内に定義された各セグメントとを通じて重複しないように割り当てられる。
【００６５】
さらに「先頭セグメントアドレス」フィールド４４Ｆには、対応するセグメントの先頭アドレスが格納され、「開放フラグ」フィールド４４Ｇには、そのセグメントへのデータ書込みの可否を表すフラグ（以下、これを開放フラグと呼ぶ）が格納される。具体的に、「開放フラグ」フィールド４４Ｇには、対応するセグメントに対するデータの書き込みが可能であるときには、開放フラグ（「１」）が格納され、当該セグメントに対するデータの書き込みができない（既にデータが格納されている）ときには、「０」が格納される。
【００６６】
従って、図６の例では、「ＬＭ０」という識別子が付与された０系のコントローラ６Ａ内に設けられたローカルメモリ１４Ａが提供する記憶領域はアドレス範囲が「ＬＡ０００」〜「ＬＡ９９９」であり、当該記憶領域はそれぞれ先頭アドレスがそれぞれ「ＬＡ１００」、「ＬＡ２００」、……のセグメントに分割されていることが示されている。また、この図６の例では、識別子が「ａ」及び「ｃ」のセグメントについては、現在、データの書き込みが禁止されており、識別子が「ｂ」のセグメントについては、現在、データの書き込みが可能であることが示されている。
【００６７】
同様に、図６の例では、「ＬＭ１」という識別子が付与された１系のコントローラ６Ｂ内に設けられたローカルメモリ１４Ｂが提供する記憶領域はアドレス範囲が「ＬＤ０００」〜「ＬＤ９９９」であり、当該記憶領域はそれぞれ先頭アドレスが「ＬＤ１００」、「ＬＤ２００」、……のセグメントに分割されていることが示されている。また、この図６の例では、識別子が「ｄ」及び「ｅ」のセグメントについては、現在、データの書き込みが可能であり、識別子が「ｆ」のセグメントについては、現在、データの書き込みが禁止されていることが示されている。
【００６８】
このように記憶システム１では、このローカルメモリ情報テーブル４４Ａ，４４Ｂを参照することによって、０系及び１系のコントローラ６Ａ，６Ｂが自系のローカルメモリ１４Ａ，１４Ｂのみならず他系のローカルメモリ１４Ｂ，１４Ａの情報をも取得することができるため、これら０系及び１系のコントローラ６Ａ，６Ｂ内のマイクロプロセッサ１５Ａ，１５Ｂ及びホスト通信プロトコルチップ２１Ａ，２１Ｂがそれぞれ自系だけでなく、他系のローカルメモリ１４Ｂ，１４Ａにもアクセスすることができる。
【００６９】
他方、キャッシュメモリ情報テーブル４５Ａ，４５Ｂは、０系のコントローラ６Ａ内のローカルメモリ１４Ａと、１系のコントローラ６Ｂ内のローカルメモリ１４Ｂとにそれぞれアクセスするための情報を記憶したテーブルであり、図７に示すように、「メモリ識別子」フィールド４５Ｃ、「メモリアドレス範囲」フィールド４５Ｄ、「セグメントブロック識別子」フィールド４５Ｅ、「先頭セグメントアドレス」フィールド４５Ｆ、「タイムスタンプ」フィールド４５Ｇ及び「ダーティフラグ」フィールド４５Ｈから構成される。
【００７０】
そして「メモリ識別子」フィールド４５Ｃには、対応するキャッシュメモリ１２Ａ，１２Ｂに付与された固有の識別子が格納される。また「メモリアドレス範囲」フィールド４５Ｄには、対応するキャッシュメモリ１２Ａ，１２Ｂが提供する記憶領域上の各領域にそれぞれ付与されたアドレスの範囲が格納される。
【００７１】
さらに「セグメントブロック識別子」フィールド４５Ｅは、対応するキャッシュメモリ１２Ａ，１２Ｂ内の各セグメントの識別子が格納され、「先頭セグメントアドレス」フィールド４５Ｆには、これらセグメントのうちの対応するセグメントの先頭アドレスが格納される。
【００７２】
さらに「タイムスタンプ」フィールド４５Ｇには、対応するセグメントにデータが格納された時刻を表すタイムスタンプが格納され、「ダーティフラグ」フィールド４５Ｈには、キャッシュメモリ１２Ａ，１２Ｂ上の対応するセグメントに格納されたデータを記憶装置４Ａ〜４Ｄに格納済みであるか否かを表すフラグ（以下、これをダーティフラグと呼ぶ）が格納される。具体的に、「ダーティフラグ」フィールド４５Ｈには、かかるデータを記憶装置４Ａ〜４Ｄに格納済みである場合にはダーティフラグ（「１」）が格納され、かかるデータを未だ記憶装置４Ａ〜４Ｄに格納していない場合には「０」が格納される。
【００７３】
従って、図７の例では、「ＣＭ０」という識別子が付与された０系のコントローラ６Ａ内に設けられたキャッシュメモリ１２Ａが提供する記憶領域はアドレス範囲が「ＣＡ０００」〜「ＣＡ９９９」であり、当該記憶領域はそれぞれ先頭アドレスがそれぞれ「ＣＡ１００」、「ＣＡ２００」、……のセグメントに分割されていることが示されている。また、この図７の例では、識別子が「Ａ」のセグメントについては、当該セグメントに格納されているデータを未だ記憶装置４Ａ〜４Ｄに格納しておらず、識別子が「Ｂ」及び「Ｃ」のセグメントについては、これらのセグメントに格納されているデータを既に記憶装置４Ａ〜４Ｄに格納し終えていることが示されている。
【００７４】
同様に、図７の例では、「ＣＭ１」という識別子が付与された１系のコントローラ６Ｂ内に設けられたキャッシュメモリ１２Ｂが提供する記憶領域はアドレス範囲が「ＣＢ０００」〜「ＣＢ９９９」であり、当該記憶領域はそれぞれ先頭アドレスが「ＣＢ１００」、「ＣＢ２００」、……のセグメントに分割されていることが示されている。また、この図７の例では、識別子が「Ｄ」及び「Ｆ」の各セグメントについては、これらセグメントに格納されているデータを未だ記憶装置４Ａ〜４Ｄに格納しておらず、識別子が「Ｅ」のセグメントについては、当該セグメントに格納されているデータを既に記憶装置４Ａ〜４Ｄに格納し終えていることが示されている。
【００７５】
このように記憶システム１では、このキャッシュメモリ情報テーブル４５Ａ，４５Ｂを参照することによって、０系及び１系のコントローラ６Ａ，６Ｂが自系のキャッシュメモリ１２Ａ，１２Ｂのみならず他系のキャッシュメモリ１２Ｂ，１２Ａの情報をも取得することができるため、これら０系及び１系のコントローラ６Ａ，６Ｂ内のマイクロプロセッサ１５Ａ，１５Ｂ及びホスト通信プロトコルチップ２１Ａ，２１Ｂがそれぞれ自系だけでなく、他系のキャッシュメモリ１２Ｂ，１２Ａにもアクセスすることができる。
【００７６】
なお、ローカルメモリ１４Ａ、１４Ｂの共有領域４２Ａ，４２Ｂ（図３（Ａ）及び（Ｂ）参照に格納される論理ユニット／プロセッサ対応付けテーブル４３Ａ，４３Ｂ、ローカルメモリ情報テーブル４４Ａ，４４Ｂ及びキャッシュメモリ情報テーブル４５Ａ，４５Ｂの一方が変更された場合には他方にも当該変更が反映され、０系及び１系のコントローラ６Ａ，６Ｂの間で整合性の取れた処理が実行される。
【００７７】
また、ローカルメモリ情報テーブル４４Ａ，４４Ｂに格納された情報のうち、０系のローカルメモリ１４Ａに関する情報のみ記憶した第１のローカルメモリ情報テーブル（図示せず）を０系のローカルメモリ１４Ａに格納し、１系のローカルメモリ１４Ｂに関する情報のみ記憶した第２のローカルメモリ情報テーブル（図示せず）を１系のローカルメモリ１４Ｂに格納しておき、代わりにかかる第１のローカルメモリ情報テーブルの格納先アドレスを１系のローカルメモリ１４Ｂに格納し、かかる第２のローカルメモリ情報テーブルの格納先アドレスを０系のローカルメモリ１４Ａに格納する構成とすることもできる。このようにすることによって、処理ごとに開放フラグを自系のローカルメモリ１４Ａ，１４Ｂの他に他系のローカルメモリ１４Ｂ，１４Ａにも二重に格納する必要がなくなり、処理速度の向上及び処理負荷の軽減という効果を得ることができる。
【００７８】
同様に、キャッシュメモリ情報テーブル４５Ａ，４５Ｂについても、０系のキャッシュメモリ１２Ａに関する情報のみ記憶した第１のキャッシュメモリ情報テーブル（図示せず）を０系のローカルメモリ１４Ａに格納し、１系のキャッシュメモリ１２Ｂに関する情報のみ記憶した第２のキャッシュメモリ情報テーブル（図示せず）を１系のローカルメモリ１４Ｂに格納しておき、それぞれのアドレス情報のみ他方のローカルメモリ１４Ｂ，１４Ａに格納する構成をとることができる。
【００７９】
さらにキャッシュメモリ情報テーブル４５Ａ，４５Ｂの「タイムスタンプ」フィールド４５Ｇに格納されたタイムスタンプを用いて格納可能な領域のうち最古の時刻に情報／データが更新された領域を優先して、格納先とする構成をとることも可能である。これによって新しく更新されたデータがキャッシュメモリ１２Ａ，１２Ｂ上に残ることとなり、キャッシュヒット率の向上が可能となる。
【００８０】
（１−２−２）ライトコマンド処理
次に、記憶システム１におけるライトコマンド処理の具体的な処理内容について、図８〜図１０を参照して説明する。ここでは、０系のコントローラ６Ａがホスト計算機２Ａからのライトコマンドを受信した場合について説明する。
【００８１】
０系のコントローラ６Ａのホスト通信プロトコルチップ２１Ａは、ホスト計算機２Ａからのライトコマンドを受信すると（ＳＰ１）、自系のローカルメモリ１４Ａに格納されている論理ユニット／プロセッサ対応付けテーブル４３Ａ（図５）及びローカルメモリ情報テーブル４４Ａ（図６）を参照して、対象となる論理ユニットの担当マイクロプロセッサが自系（０系）のマイクロプロセッサ１５Ａであるか否かを判断する（ＳＰ２）。
【００８２】
そして、ホスト通信プロトコルチップ２１Ａは、この判断において否定結果を得ると、ステップＳＰ１において受信したライトコマンドを１系のローカルメモリ１４Ｂに転送する（ＳＰ３）。この結果、このライトコマンドは、かかるローカルメモリ１４Ｂにおける図３について上述した他系コントローラ受信コマンド格納領域４１Ａ（図３）内の制御情報格納領域４１ＡＸ（図３）に格納される。
【００８３】
この際、０系の通信ホストプロトコルチップ２１Ａは、自系のローカルメモリ１４Ａに格納されたローカルメモリ情報テーブル４４Ａに基づいて、１系のローカルメモリ１４Ｂ上のかかる制御情報格納領域４１ＡＸの中で開放フラグが立っているセグメントを書込み先として指定してライトコマンドを１系のローカルメモリ１４Ｂに転送する。これによって、１系のローカルメモリ１４Ｂ内の情報を破壊することなく、０系及び１系のコントローラ６Ａ，６Ｂ間においてライトコマンドの受け渡しを行うことができる。
【００８４】
一方、１系のマイクロプロセッサ１５Ｂは、定期的なポーリングにより自系のローカルメモリ１４Ｂを監視しており、当該ローカルメモリ１４Ｂにかかるライトコマンドが格納されたことを認識すると（ＳＰ４）、このライトコマンドを解析し、ライトデータを自系のキャッシュメモリ１２Ｂに格納するためのＤＭＡ（Direct Memory Access）リスト５０（図８参照）を作成して、これを自系のローカルメモリ１４Ｂにおける他系コントローラ受信コマンド格納領域４１Ａ（図３）内の制御情報格納領域４１ＡＸ（図３）に格納する（ＳＰ５）。
【００８５】
このＤＭＡリスト５０の作成に際しては、かかるローカルメモリ１４Ｂに格納されたキャッシュメモリ情報テーブル４５Ｂ（図７）が参照され、データ格納先アドレスとして、例えばダーティフラグが０であり、かつタイムスタンプが最古のセグメントの先頭アドレスが指定される。このとき１系のマイクロプロセッサ１５Ｂは、自系のローカルメモリ１４Ｂに格納されているキャッシュメモリ情報テーブル４５Ｂ上のそのセグメントに対応する「ダーティフラグ」フィールド４５Ｈ（図７）にダーティフラグを格納（「１」を格納）する。
【００８６】
この後、１系のマイクロプロセッサ１５Ｂは、０系のコントローラ６Ａ内のホスト通信プロトコルチップ２１Ａのレジスタを設定することにより、当該ホスト通信プロトコルチップ２１Ａを起動し、当該ホスト通信プロトコルチップ２１Ａに対してステップＳＰ５において作成したＤＭＡリスト５０に従ったデータ転送を指示する（ＳＰ６）。
【００８７】
かかる指示を受けた０系のホスト通信プロトコルチップ２１Ａは、１系のローカルメモリ１４ＢからＤＭＡリスト５０を読み出す（ＳＰ７）。また、かかるホスト通信プロトコルチップ２１Ａは、このＤＭＡリスト５０に基づいて、ホスト計算機２Ａから送信されるライトデータを受信して自系のキャッシュメモリ１２Ａに格納すると共に、自系のデータ転送制御部１１ＡにＤＭＡアドレス５０を通知するなどの処理を実行する（ＳＰ８）。
【００８８】
そして０系のデータ転送制御部１１Ａは、上述のように自系のホスト通信プロトコルチップ２１ＡからＤＭＡアドレスが通知されると、自系のキャッシュメモリ１２Ａに格納されたライトデータを読み出して１系のコントローラ６Ｂに転送する。この結果、このライトデータが１系のコントローラ６Ｂ内のキャッシュメモリ１２Ｂにも格納され、これにより当該ライトデータが二重化される（ＳＰ９）。
【００８９】
また０系のホスト通信プロトコルチップ２１Ａは、かかるライトデータの二重化が完了すると、１系のマイクロプロセッサ１５Ｂにデータ転送（二重化）が完了した旨の通知（以下、これをデータ転送完了通知と呼ぶ）をＰＣＩ規格の割込み通知機能であるＭＳＩ（Message signal Interrupt）により送信する（ＳＰ１０）。このようにホスト通信プロトコルチップ２１Ａからマイクロプロセッサ１５Ｂへの通知方法としてＭＳＩを適用することにより、自系及び他系のコントローラ６Ａ，６Ｂ間の通信処理が必要なくなり、システム性能の低下を回避することができる。
【００９０】
１系のマイクロプロセッサ１５Ｂは、かかるデータ転送完了通知を受信すると、０系のホスト通信プロトコルチップ２１Ａに対して、ライトコマンド処理が終了した旨の通知を対応するホスト計算機２Ａに送信すべき旨の指示を与える。そして、この指示を受けた０系のホスト通信プロトコルチップ２１Ａは、かかるライトコマンドを送信してきたホスト計算機２Ａに対してライトデータの書き込みが完了した旨の報告を行う（ＳＰ１１）。
【００９１】
この後、１系のマイクロプロセッサ１５Ｂは、自系のキャッシュメモリ１２Ｂに格納されたライトデータを、対応する記憶装置４Ａ〜４Ｄ内の指定された論理ボリュームＬＵ１に移動（デステージング）させると共に、自系のローカルメモリ１４Ｂに格納されているキャッシュメモリ情報テーブル４５Ｂ上の対応する「ダーティフラグ」フィールド４５Ｈに格納されているダーティフラグを「０」とする（ＳＰ１２）。
【００９２】
一方、０系のホスト通信プロトコルチップ２１Ａは、上述のステップＳＰ２の判断において肯定結果を得たときには、そのライトコマンドを自系のローカルメモリ１４Ａにおける自系コントローラ受信コマンド格納領域４０Ａ（図３）内に格納する（ＳＰ１３）。この結果、かかるローカルメモリ１４Ａに格納されたライトコマンドは、やがて定期的なポーリングにより０系のマイクロプロセッサ１５Ａに認識される（ＳＰ１４）。
【００９３】
そしてマイクロプロセッサ１５Ａは、かかるライトコマンドが与えられたことを認識すると、このライトコマンドを解析し、対応するライトデータを自系のキャッシュメモリ１２Ａに格納するために、当該ライトデータを書き込むべきキャッシュメモリ１２Ａ上のアドレスと、当該ライトデータのデータ長とが格納されたＤＭＡリスト５０（図８）を作成し、これを自系のローカルメモリ１４Ａにおける自系コントローラ受信コマンド格納領域４０Ａ（図３）に格納する（ＳＰ１５）。
【００９４】
このＤＭＡリスト５０の作成に際しては、かかるローカルメモリ１４Ａに格納されたキャッシュメモリ情報テーブル４５Ａが参照され、データ格納先アドレスとして、例えばダーティフラグが０であり、かつタイムスタンプが最古のセグメントの先頭アドレスが指定される。このとき０系のマイクロプロセッサ１５Ａは、自系のローカルメモリ１４Ａに格納されているキャッシュメモリ情報テーブル４５Ａ上のそのセグメントに対応する「ダーティフラグ」フィールド４５Ｈ（図７）にダーティフラグを格納（「１」を格納）する。
【００９５】
続いて０系のマイクロプロセッサ１５Ａは、自系のホスト通信プロトコルチップ２１Ａを起動し、当該ホスト通信プロトコルチップ２１Ａに対してステップＳＰ１５において作成したＤＭＡリスト５０に従ったデータ転送を指示する（ＳＰ１６）。
【００９６】
かくして、かかる０系のホスト通信プロトコルチップ２１Ａは、自系のローカルメモリ１４ＡからＤＭＡリスト５０を読み出す（ＳＰ１７）。また、かかるホスト通信プロトコルチップ２１Ａは、このＤＭＡリスト５０に基づいて、ホスト計算機２Ａから送信されるライトデータを受信して自系のキャッシュメモリ１２Ａに格納すると共に、自系のデータ転送制御部１１ＡにＤＭＡアドレスを通知するなどの処理を実行する（ＳＰ１８）。
【００９７】
そして０系のデータ転送制御部１１Ａは、上述のように自系のホスト通信プロトコルチップ２１ＡからＤＭＡアドレスが通知されると、自系のキャッシュメモリ１２Ａに格納されたライトデータを読み出して１系のコントローラ６Ｂに転送する。この結果、このライトデータが１系のコントローラ６Ｂ内のキャッシュメモリ１２Ｂにも格納され、これにより当該ライトデータが二重化される（ＳＰ１９）。
【００９８】
さらに０系のマイクロプロセッサ１５Ａは、自系のホスト通信プロトコルチップ２１Ａに対して、ライトコマンド処理が終了した旨の通知を対応するホスト計算機２Ａに送信すべき旨の指示を与える。かくして、この指示を受けた０系のホスト通信プロトコルチップ２１Ａは、対応するホスト計算機２Ａに対してライトデータの書き込みが完了した旨の報告を行う（ＳＰ２０）。
【００９９】
この後、０系のマイクロプロセッサ１５Ａは、自系のキャッシュメモリ１２Ａに格納されたライトデータを、対応する記憶装置４Ａ〜４Ｄ内の指定された論理ボリュームＬＵ１に移動（デステージング）させると共に、自系のローカルメモリ１４Ａに格納されているキャッシュメモリ情報テーブル４５Ａ上の対応する「ダーティフラグ」フィールド４５Ｈに格納されているダーティフラグを「０」とする（ＳＰ２１）。
【０１００】
なお、このようなライトコマンド処理の過程において、０系及び１系のマイクロプロセッサ１５Ａ，１５Ｂは、自系又は他系のローカルメモリ１４Ａ，１４Ｂに情報を格納する際には、対応するローカルメモリ情報テーブル１４Ａ，１４Ｂ上の対応する「開放フラグ」フィールド４４Ｇに格納された開放フラグを「０」とし、その後その情報が後の処理で不必要となったときには、かかる開放フラグを「１」とする。
【０１０１】
また、ここでは０系のコントローラ６Ａがホスト計算機２Ａからのライトコマンドを受信した場合について説明したが、１系のコントローラ６Ｂがホスト計算機２Ｂからのライトコマンドを受信した場合も同様である。
【０１０２】
（１−２−３）リードコマンド処理
次に、記憶システム１におけるリードコマンド処理について、図１１〜図１３を参照して説明する。ここでは、０系のコントローラ６Ａがホスト計算機２Ａからのリードコマンドを受信した場合について説明する。
【０１０３】
０系のコントローラ６Ａのホスト通信プロトコルチップ２１Ａは、ホスト計算機２Ａからのリードコマンドを受信すると（ＳＰ３０）、自系のローカルメモリ１４Ａに格納されている論理ユニット／プロセッサ対応付けテーブル４３Ａ（図５）及びローカルメモリ情報テーブル４４Ａ（図６）を参照して、対象となる論理ユニットの担当マイクロプロセッサが自系（０系）のマイクロプロセッサ１５Ａであるか否かを判断する（ＳＰ３１）。
【０１０４】
そして、ホスト通信プロトコルチップ２１Ａは、この判断において否定結果を得ると、ステップＳＰ１において受信したリードコマンドを１系のローカルメモリ１４Ｂに転送する（ＳＰ３２）。この結果、このライトコマンドは、かかるローカルメモリ１４Ｂにおける図３について上述した他系コントローラ受信コマンド格納領域４１Ａ（図３）内の制御情報格納領域４１ＡＸ（図３）に格納される。
【０１０５】
この際、０系の通信ホストプロトコルチップ２１Ａは、自系のローカルメモリ１４Ａに格納されたローカルメモリ情報テーブル４４Ａに基づいて、１系のローカルメモリ１４Ｂ上のかかる制御情報格納領域４１ＡＸの中で開放フラグが立っているセグメントを書込み先として指定してリードコマンドを１系のローカルメモリ１４Ｂに転送する。これによって、１系のローカルメモリ１４Ｂ内の情報を破壊することなく、０系及び１系のコントローラ６Ａ，６Ｂ間においてリードコマンドの受け渡しを行うことができる。
【０１０６】
一方、１系のマイクロプロセッサ１５Ｂは、定期的なポーリングにより自系のローカルメモリ１４Ｂを監視しており、当該ローカルメモリ１４Ｂにかかるリードコマンドが格納されたことを認識すると（ＳＰ３３）、このリードコマンドを解析し、対象とするリードデータが１系のキャッシュメモリ１２Ｂ内に存在するか否かを判断する。
【０１０７】
そしてマイクロプロセッサ１５Ｂは、かかるリードデータがキャッシュメモリ１２Ｂ内に存在する場合にはステップＳＰ３８に進み、これに対して存在しない場合にはリードデータを対応する記憶装置４Ａ〜４Ｄから読み出してキャッシュメモリ１２Ｂに格納（ステージング）する（ＳＰ３４）。
【０１０８】
キャッシュメモリ１２Ｂに格納されたリードデータは、この後、１系のデータ転送制御部１１Ｂによって０系のコントローラ６Ａに転送され、当該コントローラ６Ａ内のキャッシュメモリ１２Ａのデータ格納領域５０ＡＹ（図４）に格納される。これにより、かかるリードデータが二重書きされる（ＳＰ３５）。
【０１０９】
また、このリードデータの管理情報も、１系のマイクロプロセッサ１５Ｂにより自系のキャッシュメモリ１２Ｂにおけるデータ管理情報格納領域５０Ｂ（図４（Ｂ））に格納されるが（ＳＰ３６）、この管理情報も０系のキャッシュメモリ１２Ａに転送されて、当該キャッシュメモリ１２Ａにおけるデータ管理情報格納領域５０Ａに格納される。これにより、リードデータの管理情報も二重書きされる（ＳＰ３７）。
【０１１０】
この後、１系のマイクロプロセッサ１５Ｂは、図９のステップＳＰ５について上述した方法と同様の方法によりＤＭＡリスト５０（図８）を作成すると共に、作成したＤＭＡリスト５０を自系のローカルメモリ１４Ｂに格納する（ＳＰ３８）。またこのマイクロプロセッサ１５Ｂは、０系のホスト通信プロトコルチップ２１Ａを起動し、当該ホスト通信プロトコルチップ２１Ａに対してステップＳＰ３８において作成したＤＭＡリスト５０に従ったデータ転送を、ＭＳＩを利用して指示する（ＳＰ３９）。
【０１１１】
かかる指示を受けた０系のホスト通信プロトコルチップ２１Ａは、１系のローカルメモリ１４ＢからＤＭＡリスト５０を読み出し（ＳＰ４０）、このＤＭＡリスト５０に基づいて、必要なＤＭＡアドレスを自系のデータ転送制御部１１Ａに通知する（ＳＰ４１）。また、この通知を受けたデータ転送制御部１１Ａは、与えられたＤＭＡアドレスに従ってリードデータの管理情報を自系のホスト通信プロトコルチップ２１Ａに転送する。
【０１１２】
一方、かかる管理情報を受信した０系のホスト通信プロトコルチップ２１Ａは、この管理情報に基づいて保障コードの確認及びそのデータがリードデータである旨の確認を行い（ＳＰ４２）、この後、リードデータを自系のキャッシュメモリ１２Ａから自系のホスト通信プロトコルチップ２１Ａに転送させる（ＳＰ４３）。なお、リードデータを１系のキャッシュメモリ１２Ｂから送信する構成とすることもできる。そしてホスト通信プロトコルチップ２１Ａは、この後このリードデータを対応するホスト計算機２Ａに送信する（ＳＰ４４）。
【０１１３】
一方、０系のホスト通信プロトコルチップ２１Ａは、上述のステップＳＰ３１の判断において肯定結果を得たときには、そのリードコマンドを自系のローカルメモリ１４Ａにおける自系コントローラ受信コマンド格納領域４０Ａ（図３）内に格納する（ＳＰ４５）。この結果、かかるローカルメモリ１４Ａに格納されたリードコマンドは、やがて定期的なポーリングにより０系のマイクロプロセッサ１５Ａに認識される（ＳＰ４６）。
【０１１４】
かくして、この後、図１２のステップＳＰ３４〜ステップＳＰ４４について上述した処理と同様の処理が第１のコントローラ６Ａにおいて行われ、これによりリードコマンドによって指定されたリードデータが対応する論理ユニットから読み出されてホスト計算機２Ａに送信される（ＳＰ４７〜ＳＰ５７）。
【０１１５】
なお、ここでは０系のコントローラ６Ａがホスト計算機２Ａからのリードコマンドを受信した場合について説明したが、１系のコントローラ６Ｂがホスト計算機２Ｂからのリードコマンドを受信した場合も同様である。
【０１１６】
（１−２−４）データ転送制御部及びブリッジにおけるアービトレーション機能
次に、データ転送制御部１１Ａ，１１Ｂ及びブリッジ１３Ａ，１３Ｂに搭載されたアービトレーション（調停）機能について説明する。
【０１１７】
図１について上述のように、本実施の形態の記憶システム１では、０系及び１系の各コントローラ６Ａ，６Ｂにおいて、データ転送制御部１１Ａ，１１Ｂには、ホスト通信制御部１０Ａ，１０Ｂ、キャッシュメモリ１２Ａ，１２Ｂ、ブリッジ１３Ａ，１３Ｂ及び記憶装置通信制御部１６Ａ，１６Ｂが所定のバスを介して接続されると共に、コントローラ間接続経路５を構成するバスも接続される。また０系及び１系の各コントローラ６Ａ，６Ｂにおいて、ブリッジ１３Ａ，１３Ｂには、ローカルメモリ１４Ａ，１４Ｂ、マイクロプロセッサ１５Ａ，１５Ｂ及びデータ転送制御部１１Ａ，１１Ｂが所定のバスを介して接続される。従って、これらデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂには、各バスを通じて種々のコマンドの転送要求が与えられる。
【０１１８】
そこで、これらデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂは、複数のコマンドの転送要求が与えられた場合、これらの転送要求に対する処理をその要求が到着した順番で行う。またデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂは、同時に複数の転送要求が到着した場合、優先度の高いコマンドから順番に転送処理を行う。
【０１１９】
この場合において、本実施の形態の記憶システム１では、データ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂを通過するコマンドとしては、マイクロプロセッサ１５Ａ，１５Ｂから自系のコントローラ６Ａ，６Ｂ内の各要素に与えられる各種コマンド、ローカルメモリ１４Ａ，１４Ｂに対するリフレッシュ要求コマンド、他系のコントローラ６Ｂ，６Ａからコントローラ間接続経路５を介して与えられるキャッシュメモリ１２Ａ，１２Ｂに対するアクセスコマンド、上述のようなＤＭＡに関する各種のコマンドがあり、これらコマンドの優先度が、種々の事情を勘案して、この順番で定められている。
【０１２０】
このためこの記憶システム１では、何らの手当てもしなければ、優先度の高い要求がデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂに順次与えられた結果、優先度が低く設定されたＤＭＡに関するコマンドに対する転送処理の転送が待たされ続けてしまうことになる。
【０１２１】
そこで、この実施の形態による記憶システム１では、データ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂにバスからの要求を均一に処理するアービトレーション（調停）機能が搭載されており、これにより順位の高い要求がデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂに順次与えられた場合においても、優先度が低く設定された上述のＤＭＡに関する各種コマンドの転送要求が待たされ続けるのを未然に防止し得るようになされている。
【０１２２】
（１−３）本実施の形態の効果
以上のように本実施例の記憶システム１では、１系のコントローラ６Ｂを担当コントローラとする論理ユニットを対象としたライトコマンドやリードコマンドを０系のコントローラ６Ａが受信した場合、０系のマイクロプロセッサ１５Ａがこのライトコマンド又はリードコマンドを１系のローカルメモリ１４Ｂに転送して直接書き込むようにしているため、０系及び１系のコントローラ６Ａ，６Ｂ間における当該ライトコマンド又はリードコマンドの受け渡しの際に０系及び１系のマイクロプロセッサ１５Ａ，１５Ｂ間の通信が不要となる。
【０１２３】
従って、この記憶システム１では、かかる通信に起因するコマンドを受信したコントローラ６Ａ，６Ｂに余計な負荷が生じたり、当該コマンドに対する処理時間の遅延が発生するのを有効に防止でき、担当外の論理ボリュームを対象とするコマンドを受信したコントローラの負荷を低減させながら、コマンドに対する処理時間を高速化させることができる。
【０１２４】
また本実施の形態による記憶システム１では、かかるライトコマンドやリードコマンドを、比較的アクセス速度の高い自系のローカルメモリ１５Ｂに書き込むようにしているため、例えば比較的アクセス速度の低いキャッシュメモリ１２Ｂを介してライトコマンドやリードコマンドをやり取りする場合に比べて、処理速度を向上させる効果を得ることができる。さらに０系のマイクロプロセッサ１５Ａを介入させることなく１系のマイクロプロセッサ１５Ｂ側が主体となって一連の処理行うことが可能なため、例えば０系のマイクロプロセッサ１５Ａの処理負荷が高く１系のマイクロプロセッサ１５Ｂの処理負荷が低い場合にも、０系のマイクロプロセッサ１５Ａの処理負荷がネックとなって応答性能が低下するという事態を回避することができる。
【０１２５】
また本実施の形態による記憶システム１では、ホスト計算機２Ａ，２Ｂからのライトコマンドやリードコマンドを受信した０系又は１系のコントローラ６Ａ，６Ｂが他系のコントローラ６Ｂ，６Ａに処理を依頼するジョブを新しく生成する必要がなくなり、ホスト計算機２Ａ，２Ｂから送信されるコマンドを０系のコントローラ６Ａで受信しても１系のコントローラ６Ｂで受信してもほぼ同じ処理効率で実行することが可能となる。
【０１２６】
かくするにつき、この記憶システム１では、そのとき対象とする論理ユニットの担当コントローラをホスト計算機２Ａ，２Ｂに意識させる必要がなくなり、多数のホスト計算機２Ａ，２Ｂから０系のコントローラ６Ａ，６Ｂに対してライトコマンドやリードコマンドを受信しても高い処理速度で応答することができるため、構成自由度の向上、保守作業の低減を図ることができる。例えば、０系及び１系のマイクロプロセッサ１５Ａ，１５Ｂ間で負荷状況に応じて担当する論理ユニットを動的に切り替える運用とした場合には、ホスト計算機２Ａ，２Ｂに対して負荷バランスが適切となるように送信先のコントローラ６Ａ，６Ｂを設定する設定作業が行われないときにも、処理効率の低下を防ぐことが可能となる。
【０１２７】
（２）第２の実施の形態
（２−１）本実施の形態によるライトコマンド処理及びリードコマンド処理
図１４は、第２の実施の形態による記憶システム６０を示す。この記憶システム６０は、記憶制御装置６１を構成する０系のコントローラ６２Ａ内のホスト通信制御部６３Ａに設けられたホスト通信プロトコルチップ６３ＡがマルチＣＰＵサポート機能を備えておらず、単一のマイクロプロセッサとのみデータ通信が可能な点を除いて第１の実施の形態による記憶システム１（図１）と同様に構成されている。
【０１２８】
図１４〜図１６は、この記憶システム６０におけるライトコマンド処理の流れを示すフローチャートである。ここでは、第１の実施の形態と同様に、０系のコントローラ６２Ａがホスト計算機２Ａからのライトコマンドを受信した場合について説明する。
【０１２９】
この場合、この記憶システム６０では、図８〜図１０のステップＳＰ１〜ステップＳＰ５と同様にして、ホスト計算機２Ａから０系のコントローラ６２Ａに与えられたライトコマンドが１系のコントローラ６Ｂに与えられ、このライトコマンドに基づいて１系のコントローラ６ＢにおいてＤＭＡリスト５０が作成されて１系のローカルメモリ１４Ｂに格納される（ＳＰ６０〜ＳＰ６４）。
【０１３０】
１系のマイクロプロセッサ１５Ｂは、この後、この１系のローカルメモリ１４Ｂに格納されているＤＭＡリスト５０を０系のローカルメモリ１４Ａにコピーする。この際、１系のマイクロプロセッサ１５Ｂは、ローカルメモリ情報テーブル４４Ｂ（図６）を参照して、０系のローカルメモリ１４Ａの他コントローラ受信コマンド格納領域４１Ａ内の制御情報格納領域４１ＡＸ（図３）をＤＭＡリスト５０のコピー先として指定する（ＳＰ６５）。これは、ＤＭＡリスト５０を読み込むように０系のホスト通信プロトコルチップ６４Ａに対して起動をかけるのが０系のマイクロプロセッサ１５Ａであるからである。
【０１３１】
一方、０系のマイクロプロセッサ１５Ａは、定期的なポーリングにより自系のローカルメモリ１４Ａを監視しており、当該ローカルメモリ１４Ａに上述のＤＭＡリスト５０が格納されたことを認識すると、このＤＭＡリスト５０を当該ローカルメモリ１４Ａの自コントローラ格納受信領域４０Ａ内の制御情報格納領域４０ＡＸにコピーする（ＳＰ６６）。
【０１３２】
またマイクロプロセッサ１５Ａは、この後、自系のホスト通信プロトコルチップ６４Ａを起動し、当該ホスト通信プロトコルチップ６４Ａに対してＤＭＡリスト５０に従ったデータ転送を指示する（ＳＰ６７）。
【０１３３】
かかる指示を受けたホスト通信プロトコルチップ６４Ａは、自系のローカルメモリ１４Ａにおける自コントローラ格納受信領域４０Ａ内の制御情報格納領域４０ＡＸに格納されているＤＭＡリスト５０を読み出し、自系のデータ転送制御部１１ＡにＤＭＡアドレス５０を通知する（ＳＰ６８）。
【０１３４】
そして０系のデータ転送制御部１１Ａは、上述のように自系のホスト通信プロトコルチップ２１ＡからＤＭＡアドレスが通知されると、このＤＭＡアドレスに従ってホスト計算機２Ａからのライトデータを受信し、これを自系のキャッシュメモリ１２Ａに格納する（ＳＰ６９）。
【０１３５】
また０系のデータ転送制御部１１Ａは、自系のキャッシュメモリ１２Ａに格納したライトデータを１系のコントローラ６Ｂに転送する。この結果、このライトデータが１系のコントローラ６Ｂ内のキャッシュメモリ１２Ｂにも格納され、これにより当該ライトデータが二重化される（ＳＰ７０）。さらに０系のホスト通信プロトコルチップ２１Ａは、かかるライトデータの二重化が完了すると、１系のマイクロプロセッサ１５Ｂにデータ転送完了通知をデータ転送制御部１１Ａに通知し、データ転送制御部１１Ａにより上述のＭＳＩを生成して送信する（ＳＰ７１）。
【０１３６】
この後、０系のマイクロプロセッサ１５Ａは、自系のホスト通信プロトコルチップ６４Ａに対して、ライトコマンド処理が終了した旨の通知を対応するホスト計算機２Ａに送信すべき旨の指示を与える。そして、この指示を受けた０系のホスト通信プロトコルチップ６４Ａは、かかるライトコマンドを送信してきたホスト計算機２Ａに対してライトデータの書き込みが完了した旨の報告を行う（ＳＰ７２）。
【０１３７】
かくして１系のマイクロプロセッサ１５Ｂは、この後、自系のキャッシュメモリ１２Ｂに格納されたライトデータを、対応する記憶装置４Ａ〜４Ｄ内の指定された論理ボリュームＬＵ１に移動（デステージング）させると共に、自系のローカルメモリ１４Ｂに格納されているキャッシュメモリ情報テーブル４５Ｂ上の対応する「ダーティフラグ」フィールド４５Ｈに格納されているダーティフラグを「０」とする（ＳＰ７３）。
【０１３８】
これに対して、０系のホスト通信プロトコルチップ６４Ａは、上述のステップＳＰ６１の判断において肯定結果を得たときには、図１０のステップＳＰ１３〜ステップＳＰ２１と同様の手順により、ホスト計算機２Ａからのライトデータを対応する記憶装置４Ａ〜４Ｄ内の指定された論理ボリュームＬＵ１に格納（デステージング）する（ステップＳＰ７４〜ステップＳＰ８２）。
【０１３９】
なお、ここでは０系のコントローラ６２Ａがホスト計算機２Ａからのライトコマンドを受信した場合について説明したが、１系のコントローラ６Ｂがホスト計算機２Ｂからのライトコマンドを受信した場合も同様である。
【０１４０】
一方、図１７〜図１９は、かかる記憶システム６０におけるリードコマンド処理の流れを示すフローチャートである。ここでは、第１の実施の形態と同様に、０系のコントローラ６２Ａがホスト計算機２Ａからのリードコマンドを受信した場合を想定している。
【０１４１】
この場合、この記憶システム６０では、図１１〜図１３のステップＳＰ３０〜ステップＳＰ３８と同様にして、ホスト計算機２Ａからのリード要求に応じたリードデータを記憶装置４Ａ〜４Ｄから１系のキャッシュメモリ１２Ｂにステージングされ、このリードデータ及びその管理情報が０系及び１系のキャッシュメモリ１２Ａ，１２Ｂに二重書きされる。また記憶システム６０では、このリードデータに対するＤＭＡリスト５０が１系のコントローラ２１において作成され、これが１系のローカルメモリ１４Ｂに格納される（ＳＰ９０〜ＳＰ９８）。
【０１４２】
この後、１系のマイクロプロセッサ１５Ｂは、ローカルメモリ１４Ｂに格納したＤＭＡリスト５０を０系のローカルメモリ１４Ａに転送する。かくして、このＤＭＡリスト５０が、図３について上述した０系のローカルメモリ１４Ａの他系コントローラ受信コマンド格納領域４１Ａ内の制御情報格納領域４１ＡＸに格納される（ＳＰ９９）。
【０１４３】
この０系のローカルメモリ１４Ａに格納されたＤＭＡリスト５０は、この後、ローカルメモリ１４Ａ内の自系コントローラ受信コマンド格納領域４０Ａ内の制御情報格納領域４０ＡＸ（図３）にコピーされる（ＳＰ１００）。
【０１４４】
この後、０系のマイクロプロセッサ１５Ａは、０系のホスト通信プロトコルチップ２１Ａを起動し（ＳＰ１０１）、当該ホスト通信プロトコルチップ２１Ａに対してステップＳＰ９８において作成したＤＭＡリスト５０に従ったデータ転送を指示する（ＳＰ１０１）。
【０１４５】
かかる指示を受けた０系のホスト通信プロトコルチップ６４Ａは、自系のローカルメモリ１４Ａ内の制御情報格納領域自系コントローラ受信コマンド格納領域４０ＡＸ（図３）からＤＭＡリスト５０を読み出し（ＳＰ１０２）、このＤＭＡリスト５０に基づいて、ＤＭＡアドレスを自系のデータ転送制御部１１Ａに通知する（ＳＰ１０３）。
【０１４６】
また、この通知を受けたデータ転送制御部１１Ａは、与えられたＤＭＡアドレスに従ってリードデータの管理情報を自系のホスト通信プロトコルチップ６４Ａに転送する。この後、０系のデータ転送制御部１１Ａは、送信されたＤＭＡアドレスに従ってデータ管理情報を取得して整合性が取れているか否かをチェックする（ＳＰ１０４）。
【０１４７】
次いで、０系のデータ転送制御部１１Ａは、０系のキャッシュメモリ１２Ａから自系のホスト通信プロトコルチップ６４Ａにリードデータを転送し（ＳＰ１０５）、ホスト通信プロトコルチップ２１Ａは、この後このリードデータを対応するホスト計算機２Ａに送信する（ＳＰ１０６）。さらに０系のホスト通信プロトコルチップ６４Ａは、かかるホスト計算機２Ａへのリードデータの転送を完了すると、自系のローカルメモリ１４Ａに完了情報を格納する。（ＳＰ１０７）。
【０１４８】
この後、０系のホスト通信プロトコルチップ６４Ａは完了情報を１系のローカルメモリ１４Ｂにコピーし（ＳＰ１０８）、ローカルメモリ１４Ｂをモニタリングしているマイクロプロセッサ１５Ｂは、この完了情報がローカルメモリ１４Ｂによって完了処理が実行される（ＳＰ１０９）。
【０１４９】
一方、０系のホスト通信プロトコルチップ２１Ａは、上述のステップＳＰ３１の判断において肯定結果を得たときには、図１９に示すステップＳＰ１１０〜ＳＰ１２２を図１３について上述したステップＳＰ４５〜ステップＳＰ５７と同様に処理する。
【０１５０】
なお、ここでは０系のコントローラ６２Ａがホスト計算機２Ａからのリードコマンドを受信した場合について説明したが、１系のコントローラ６Ｂがホスト計算機２Ｂからのリードコマンドを受信した場合も同様である。
【０１５１】
（２−２）本実施の形態の効果
以上のように本実施の形態による記憶システム６０では、０系及び１系のコントローラ６２Ａ，６Ｂ間において、ローカルメモリ１４Ａ，１４Ｂを経由して必要な情報のやり取りを行なうため、０系のコントローラ６２Ａ内のホスト通信プロトコルチップ６４ＡがマルチＣＰＵサポート機能を備えていない場合であっても０系及び１系のコントローラ６２Ａ，６Ｂ間でライトコマンドやリードコマンドをやり取りすることができ、処理の高速化が図れる。
【０１５２】
さらに記憶システム６０では、例えば１系のプロセッサ１５Ｂが担当する論理ユニットを対象とするライトコマンドやリードコマンドがホスト計算機２Ａから０系のコントローラ６２Ａに与えられた場合、ＤＭＡリスト５０等の作成は１系のコントローラ６Ｂ側において行ない、０系のコントローラ６Ａ内のプロセッサ１５Ａは自系のホスト通信プロトコルチップ６４Ａの起動のみを行なうように構成しているため、コマンド転送元、すなわちホスト計算機２Ａからかかるライトコマンドやリードコマンドを受信した側のマイクロプロセッサ１５Ａの処理負担を軽減することが可能となる。
【０１５３】
（３）他の実施の形態
なお上述の第１及び第２の実施の形態においては、０系及び１系のコントローラ６Ａ，６２Ａ，６Ｂのホスト通信制御部１０Ａ，６２Ａ，１０Ｂとして、それぞれホスト計算機２Ａ，２Ｂとの間で同じ通信プロトコルに従った通信を行なうホスト通信制御部１０Ａ，６３Ａ，１０Ｂを適用するようにした場合について述べたが、本発明はこれに限らず、例えば０系のコントローラ６Ａ，６２Ａ側にはホスト計算機２Ａとの間でＦＣプロトコルに従った通信を行うマルチマイクロプロセッサ機能を備えるホスト通信制御部を適用し、１系のコントローラ６Ｂ側にはホスト計算機２Ｂとの間でｉＳＣＳＩプロトコルに従った通信を行なうシングルマイクロプロセッサ機能を備えるホスト通信制御部を適用するようにしても良い。
【０１５４】
また上述の第１及び第２の実施の形態においては、本発明を、ホスト計算機２Ａ，２Ｂ及び記憶制御装置３，６１間を直接接続された記憶システム１，６０に適用するようにした場合について述べたが、本発明はこれに限らず、これらホスト計算機２Ａ，２Ｂ及び記憶制御装置３，６１間がＳＡＮ（Storage Area Network）又はＬＡＮ（Local Area Network）などのネットワークを介して接続された記憶システムにも本発明を広く適用することができる。
【０１５５】
さらに上述の第１及び第２の実施の形態においては、記憶システム１，６０を構成する記憶装置４Ａ〜４Ｄが４台である場合について述べたが、本発明はこれに限らず、記憶装置４Ａ〜４Ｄの数としてはこれ以外の数を設けるようにしても良い。
【０１５６】
さらに上述の第１及び第２の実施の形態においては、０系及び１系のコントローラ１０Ａ，６２Ａ，１０Ｂを同一構成とするようにした場合について述べたが、本発明はこれに限らず、これら０系及び１系のコントローラ１０Ａ，６２Ａ，１０Ｂを異なる構成とするようにしても良い。
【０１５７】
さらに上述の第１及び第２の実施の形態においては、０系及び１系のコントローラ６Ａ，６２Ａ，６Ｂにそれぞれホスト通信制御部１０Ａ，６３Ａ，１０Ｂを１つずつ設けるようにした場合について述べたが、本発明はこれに限らず、かかるホスト通信制御部１０Ａ，６３Ａ，１０Ｂを複数設けるようにしても良い。
【産業上の利用可能性】
【０１５８】
本発明は、特に、ホスト計算機からの情報の入出力要求を制御する複数のマイクロプロセッサを備えるストレージ装置に適用できる。
【図面の簡単な説明】
【０１５９】
【図１】第１の実施の形態による記憶システムの構成を示すブロック図である。
【図２】（Ａ）は、０系及び１系のマイクロプロセッサが認識するメモリ空間の一例を示す図表であり、（Ｂ）は、０系及び１系のホスト通信プロトコルチップ１０Ａ，１０Ｂがそれぞれ認識するメモリ空間の一例を示す図表である。
【図３】（Ａ）は、０系のローカルメモリのメモリ構成を示す概念図であり、（Ｂ）は、１系のローカルメモリのメモリ構成を示す概念図である。
【図４】（Ａ）は、０系のキャッシュメモリのメモリ構成を示す概念図であり、（Ｂ）は、１系のキャッシュメモリのメモリ構成を示す概念図である。
【図５】論理ユニット／プロセッサ対応付けテーブルの構成を示す概念図である。
【図６】ローカルメモリ情報テーブルの構成を示す概念図である。
【図７】キャッシュメモリ情報テーブルの構成を示す概念図である。
【図８】第１の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するブロック図である。
【図９】第１の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するフローチャートである。
【図１０】第１の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するフローチャートである。
【図１１】第１の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するブロック図である。
【図１２】第１の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するフローチャートである。
【図１３】第１の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するフローチャートである。
【図１４】第２の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するブロック図である。
【図１５】第２の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するフローチャートである。
【図１６】第２の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するフローチャートである。
【図１７】第２の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するブロック図である。
【図１８】第２の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するフローチャートである。
【図１９】第２の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するフローチャートである。
【符号の説明】
【０１６０】
１、６０……記憶システム、２Ａ，２Ｂ……ホスト計算機、３……記憶制御装置、４Ａ〜４Ｄ……記憶装置、５……コントローラ間接続経路、６Ａ，６Ｂ，６２Ａ……コントローラ、１０Ａ，１０Ｂ，６３Ａ……ホスト通信制御部、１１Ａ，１１Ｂ……データ転送制御部、１２Ａ，１２Ｂ……キャッシュメモリ、１４Ａ，１４Ｂ……ローカルメモリ、１５Ａ，１５Ｂ……マイクロプロセッサ、２１Ａ，２１Ｂ，６４Ａ……ホスト通信プロトコルチップ、４０Ａ，４０Ｂ……自系コントローラ受信コマンド格納領域、４０ＡＸ，４０ＢＸ，４１ＡＸ，４１ＢＸ……制御情報格納領域、４１ＡＹ，４１ＢＹ……実行処理格納領域、４１Ａ，４１Ｂ……他系コントローラ受信コマンド格納領域、４２Ａ，４２Ｂ……共有領域、４３Ａ，４３Ｂ……論理ユニット／プロセッサ対応付けテーブル、４４Ａ，４４Ｂ……ローカルメモリ情報テーブル、４５Ａ，４５Ｂ‥‥キャッシュメモリ情報テーブル、５０Ａ，５０Ｂ……自系プロセッサ領域、５１Ａ，５１Ｂ……他系プロセッサ領域。
【図１】
2008134776.tif 000003
【図２】
2008134776.tif 000004
【図３】
2008134776.tif 000005
【図４】
2008134776.tif 000006
【図５】
2008134776.tif 000007
【図６】
2008134776.tif 000008
【図７】
2008134776.tif 000009
【図８】
2008134776.tif 000010
【図９】
2008134776.tif 000011
【図１０】
2008134776.tif 000012
【図１１】
2008134776.tif 000013
【図１２】
2008134776.tif 000014
【図１３】
2008134776.tif 000015
【図１４】
2008134776.tif 000016
【図１５】
2008134776.tif 000017
【図１６】
2008134776.tif 000018
【図１７】
2008134776.tif 000019
【図１８】
2008134776.tif 000020
【図１９】
2008134776.tif 000021