(57)【要約】【課題】プロセッサやコントローラに対する負荷を分散して、データ処理速度を向上させた記憶サブシステムを提供する。【解決手段】ホスト計算機がデータを読み書きする記憶領域となる複数の論理ユニットをホスト計算機に提供し、ホスト計算機が発行するコマンドを処理し、論理ユニットに対する記憶資源を備える記憶装置へのデータの入出力を制御するコントローラを備える記憶サブシステムである。コントローラは、コマンドを格納するローカルメモリと、コマンドに基づいてデータの入出力の対象となった論理ユニットに対する当該データの入出力を制御する、複数のコアからなるプロセッサと、を備え、ローカルメモリには、複数の論理ユニット及び複数のコアとの間の対応関係を表す対応付け情報が格納され、複数の各コアは、対応付け情報に基づいて、自コアが担当する論理ユニットに対するコマンドを処理し、論理ユニットに対してデータの入出力の処理を行う。【選択図】図２
2008134775.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機がデータを読み書きするための記憶領域となる複数の論理ユニットを、前記ホスト計算機に提供し、さらに、前記ホスト計算機が発行するコマンドを処理して、前記論理ユニットに対する記憶資源を備える記憶装置へのデータの入出力を制御するコントローラを備える記憶サブシステムにおいて、
前記コントローラは、前記コマンドを格納するローカルメモリと、前記コマンドに基づいてデータの入出力の対象となった前記論理ユニットに対する当該データの入出力を制御する、複数のコアからなるプロセッサと、を備え、
前記ローカルメモリには、前記複数の論理ユニット及び前記複数のコアとの間の対応関係を表す対応付け情報が格納され、
前記複数の各コアは、前記対応付け情報に基づいて、自コアが担当する前記論理ユニットに対する前記コマンドを処理して、当該論理ユニットに対して前記データの入出力の処理を実行する記憶サブシステム。
【請求項２】
前記ローカルメモリの前記コマンドを格納する記憶領域はキュー構造から構成され、当該キュー構造は複数のキューを備え、各キューが前記複数のコアの中の特定コアに割り当てられている、請求項１記載の記憶サブシステム。
【請求項３】
前記キュー構造は、前記コントローラが受領した前記コマンドを格納する受領キューと、前記各コアが実行すべき前記コマンドを格納するコマンドキューとを備える、請求項２記載の記憶サブシステム。
【請求項４】
前記受領キューは、前記コントローラが備える前記ホストに対する複数のポートの各ポートに対して設定され、前記コマンドキューは前記複数のコアの各コアに対して設定されている、請求項３記載の記憶サブシステム。
【請求項５】
前記複数のコアの各コアが前記受領キューに割り当てられている、請求項４記載の記憶サブシステム。
【請求項６】
前記ローカルメモリは、前記複数の受領キュー、前記複数のコマンドキュー、そして前記複数のコアとの間での対応関係を規定する第２の対応付け情報を備え、前記複数のコアの各コアは前記第２対応付け情報に基づいて、自コアが担当する前記受領キュー及び前記コマンドキューに格納されたコマンドを処理する、請求項５記載の記憶サブシステム。
【請求項７】
前記複数のコマンドキューの各コマンドキューは、前記複数の論理ユニットのうちの特定の論理ユニットに割り当てられ、前記複数のコアの各コアは前記コマンドキューに格納されたコマンドに基づいて前記特定の論理ユニットに対する前記データの入出力を処理する請求項６記載の記憶サブシステム。
【請求項８】
前記複数のコアを備える前記プロセッサを持つ前記コントローラを複数備え、さらに、前記複数のコントローラ間を通信可能な状態に接続するコントローラ間接続経路を備え、
前記ローカルメモリには、前記複数の論理ユニット及び前記複数のコントローラの対応関係を表す制御情報と、前記複数の前記コントローラ内の前記ローカルメモリのアドレス情報とが格納され、
前記コントローラは、前記ホスト計算機から送信された前記コマンドを受信したときに、当該コマンドにおいて対象とする前記論理ユニットが自系及び他系のいずれの前記コントローラと対応付けられているかを前記制御情報に基づいて判断し、当該論理ユニットが前記他系のコントローラと対応付けられているときには、前記アドレス情報に基づいて、当該コマンドを対応する前記他系のコントローラ内の前記ローカルメモリに転送して格納する、請求項１記載の記憶サブシステム。
【請求項９】
前記自系のコントローラに属する前記コアを前記ホスト計算機からのコマンドを処理する主担当とし、他系のコントローラに属する前記コアを前記主担当のコアに対する代替にする制御情報を前記自系のコントローラの前記ローカルメモリが備える請求項８記載の記憶サブシステム。
【請求項１０】
前記自系のコントローラの前記ローカルメモリは、前記他系のコントローラの前記プロセッサの前記コアに実行させるための前記コマンドを格納するダミーキューを備える、請求項８記載の記憶サブシステム。
【請求項１１】
上位装置としてのホスト計算機と、前記ホスト計算機に対してデータを読み書きするための記憶領域となる複数の論理ユニットを提供する記憶装置との間において、前記論理ユニットに対するデータの入出力を制御する記憶サブシステムにおいて、
前記ホスト計算機から与えられるコマンドを保持するローカルメモリと、当該ローカルメモリに保持した前記コマンドに基づいて、対応する前記論理ユニットに対するデータの入出力を制御するプロセッサと、をそれぞれ有する複数のコントローラと、
前記複数のコントローラ間を通信可能な状態に接続するコントローラ間接続経路と、を備え、
前記ローカルメモリには、前記論理ユニット及び前記コントローラの対応関係を表す対応付け情報と、自系及び他系の各前記コントローラ内の前記ローカルメモリのアドレス情報とが格納され、
前記コントローラは、前記ホスト計算機から送信されたコマンドを受信したときに、対象とする前記論理ユニットが自系及び他系のいずれの前記コントローラと対応付けられているかを前記対応付け情報に基づいて判断し、当該論理ユニットが前記他系のコントローラと対応付けられているときには、前記アドレス情報に基づいて、当該コマンドを対応する前記他系のコントローラ内の前記ローカルメモリに転送して格納するものであり、
前記自系及び他系のコントローラの各前記ローカルメモリの前記コマンドを保持する記憶領域はキュー構造から構成され、当該キュー構造は前記ホスト計算機から受領したコマンドを保持する受領キューと、前記プロセッサが前記複数の論理ユニットのうち前記コマンドで指定された論理ユニットにアクセスするためのコマンドを保持するコマンドキューとを備えている、記憶サブシステム。
【請求項１２】
前記ローカルメモリは、前記自系のコントローラが受信した、当該自系のコントローラに対応付けられた前記論理ユニットを対象とする前記ホスト計算機からの前記コマンドを格納する第１の記憶領域と、前記他系のコントローラから転送された、前記自系のコントローラに対応付けられた前記論理ユニットを対象とする前記ホスト計算機からの前記コマンドを格納する第２の記憶領域とが別個に設けられた、請求項１１記載の記憶サブシステム。
【請求項１３】
前記コントローラは、前記ホスト計算機及び前記記憶装置間において送受されるデータを一時的に記憶するキャッシュメモリを備え、
前記キャッシュメモリには、前記他系のコントローラのキャッシュメモリに格納されたデータが複写され、
前記コントローラは、前記自系のコントローラの前記キャッシュメモリに複写されたデータを用いて、前記ホスト計算機と、前記自系のコントローラのキャッシュメモリとの間のデータ転送を制御する、請求項１１記載の記憶サブシステム。
【請求項１４】
前記キャッシュメモリは、自系のコントローラが受信した前記ホスト計算機又は前記記憶装置からの前記データを格納する第１のデータ記憶領域と、前記他系のコントローラにより複写される前記データを格納する第２のデータ記憶領域とが別個に設けられた、請求項１１記載の記憶サブシステム。
【請求項１５】
前記自系のコントローラは、前記自系のローカルメモリの前記受領キューにあるコマンドを他系のコントローラの前記ローカルメモリの前記コマンドキューに転送し、前記他系のコントローラのプロセッサが当該コマンドキューに保持されたコマンドを処理する、請求項１１記載の記憶サブシステム。
【請求項１６】
前記自系のコントローラは前記ローカルメモリの前記受領キューに保持されたコマンドを他系のコントローラの前記ローカルメモリのダミーキューにコピーし、前記他系のコントローラのプロセッサが当該ダミーキューを定期的にポーリングして前記コマンドキューに当該コマンドを格納する、請求項１１記載の記憶サブシステム。
【請求項１７】
前記自系及び他系のコントローラの前記ローカルメモリのそれぞれは、前記コマンドキューを複数有し、当該各ローカルメモリ各コマンドキューと前記各論理ユニットとの対応関係についての情報を持っている請求項１１記載の記憶サブシステム。
【請求項１８】
前記自系のコントローラのプロセッサが処理すべきコマンドを、当該コントローラが他系のコントローラのプロセッサに転送し、次いで、前記自系のコントローラのプロセッサに対する制御プログラムを新たに交換可能な、請求項１１記載の記憶サブシステム。
【請求項１９】
前記各コントローラの前記プロセッサが、複数のコアから形成されてなる、請求項１１記載の記憶サブシステム。
【請求項２０】
それぞれ請求項１１記載の記憶サブシステムから構成される、第１のシステムと第２のシステムとを備え、当該第２のシステムは当該第１のシステムに対するリモートサイトであり、前記第１のシステムと前記第２のシステムとの間でリモートコピーを実現するリモートコピーシステム。
【請求項２１】
前記第１のシステムの自系コントローラから前記第２のシステムに対するパスが閉塞している場合、前記第１のシステムの自系コントローラは前記第１のシステムの他系コントローラから別のパスを経由して前記第２のシステムにアクセスする、請求項２０記載のリモートコピーシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶サブシステムに係わり、特に、ホスト計算機からの情報の入出力要求を制御するマイクロプロセッサが主として複数のコアから構成されてなる、記憶サブシステムに関するものである。
【背景技術】
【０００２】
記憶サブシステムは、記憶装置と、この記憶装置と上位装置としてのホスト計算機との間のデータ処理を仲介するコントローラとを備えて構成されている。このコントローラと記憶装置とが同一の筐体に収納されているものの他、コントローラと記憶装置とが通信手段を介して接続されるものの、それぞれが別な筐体として構成されているものも記憶サブシステムである。記憶サブシステムは、ホスト計算機がデータを読み書きする記憶領域となる複数の論理ユニットをホスト計算機に提供し、コントローラがホスト計算機と記憶装置との間のデータの入出力を仲介しかつ制御する。
【０００３】
従来から、この記憶サブシステムにおいては、ホスト計算機との間でのデータ処理について信頼性及び応答性の向上が求められている。そこで、記憶サブシステムが複数のコントローラを備え、この複数コントローラ間でデータを冗長に記憶し、データ処理を分散して実行する技術が知られている。
【０００４】
特許文献１には、一方のコントローラが受信したコマンドに基づく処理を、そのコマンドを受信したコントローラが備えるロプロセッサと、他方のコントローラが備えるプロセッサとの両方のプロセッサを利用して実行する技術が開示されている。特許文献２にも、デュアルコントローラ構成を備えた、記憶サブシステムが記載されている。
【特許文献１】特開平９−１４６８４２号公報
【特許文献２】特開平１１−３１２０５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
既述の公報は、多重化したコントローラを備える記憶サブシステムについて開示している。各コントローラのプロセッサにはそれぞれ担当する論理ユニット（論理ボリューム）が対応付けられており、プロセッサが担当外の論理ボリュームを対象とするコマンドをホスト計算機から受信した場合には、そのプロセッサはその論理ボリュームに対応付けられた別のプロセッサに対してコマンドの処理を依頼する。
【０００６】
しかしながら、この記憶サブシステムでは、コントローラがホスト計算機から担当外の論理ボリュームを対象とするコマンドを受信した場合にも、当該コマンドに基づくホスト計算機及びキャッシュメモリの間のデータ転送は、かかるコマンドを受信したコントローラ内のプロセッサによって処理されていた。このため、かかる記憶サブシステムでは、多重化された複数のコントローラの間で受信するコマンド数に偏りが生じた場合、多くのコマンドを受信したコントローラに負荷が集中する問題があった。
【０００７】
また、かかる記憶サブシステムでは、コントローラが担当外の論理ボリュームを対象とするコマンドを受信した場合、そのコントローラがコマンドを解析したり、その論理ボリュームに対応付けられたコントローラと通信を行なって当該コントローラにそのコマンドに応じた処理を依頼することになるため、その分かかる担当外の論理ボリュームを対象とするコマンドを受信したコントローラに余計な負荷が生じたり、当該コマンドに対する記憶サブシステム全体としての処理時間が遅延するという問題があった。従って、かかる記憶サブシステムにおいて、コマンドに対する記憶サブシステム全体としての処理時間の高速化を図るためには、そのとき対象となる論理ボリュームを担当するマイクロプロセッサやコントローラに対してコマンドを発行するようにホスト計算機を設定する必要があり、この設定作業のために多くの労力及び時間を要する問題があった。
【０００８】
本発明はプロセッサやコントローラに対する負荷を分散して、データ処理速度を向上させた記憶サブシステムを提供することを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明は、担当外の論理ボリュームを対象とするコマンドを受信したコントローラの負荷を低減させながら、簡易にコマンドに対する処理時間を高速化させ得る記憶サブシステムを提供する記憶サブシステムであることを特徴とするものである。
【００１０】
即ち、本発明の第１は、ホスト計算機がデータを読み書きする記憶領域となる複数の論理ユニットを前記ホスト計算機に提供し、前記ホスト計算機が発行するコマンドを処理し、前記論理ユニットに対する記憶資源を備える記憶装置へのデータの入出力を制御するコントローラを備える記憶サブシステムにおいて、前記コントローラは、前記コマンドを格納するローカルメモリと、前記コマンドに基づいてデータの入出力の対象となった前記論理ユニットに対する当該データの入出力を制御する、複数のコアからなるプロセッサと、を備え、前記ローカルメモリには、前記複数の論理ユニット及び前記複数のコアとの間の対応関係を表す対応付け情報が格納され、前記複数の各コアは、前記対応付け情報に基づいて、自コアが担当する前記論理ユニットに対する前記コマンドを処理して、当該論理ユニットに対して前記データの入出力の処理を実行することを特徴とする。
【００１１】
さらに本発明の第２は、上位装置としてのホスト計算機と、前記ホスト計算機に対してデータを読み書きするための記憶領域でなる複数の論理ユニットを提供する記憶装置との間において、前記論理ユニットに対するデータの入出力を制御する記憶サブシステムにおいて、前記ホスト計算機から与えられるコマンドを保持するローカルメモリと、当該ローカルメモリに保持した前記コマンドに基づいて、対応する前記論理ユニットに対するデータの入出力を制御するプロセッサと、をそれぞれ有する複数のコントローラと、前記複数のコントローラ間を通信可能な状態に接続するコントローラ間接続経路と、を備え、前記ローカルメモリには、前記論理ユニット及び前記コントローラの対応関係を表す対応付け情報と、自系及び他系の各前記コントローラ内の前記ローカルメモリのアドレス情報とが格納され、前記コントローラは、前記ホスト計算機から送信されたコマンドを受信したときに、対象とする前記論理ユニットが自系及び他系のいずれの前記コントローラと対応付けられているかを前記対応付け情報に基づいて判断し、当該論理ユニットが前記他系のコントローラと対応付けられているときには、前記アドレス情報に基づいて、当該コマンドを対応する前記他系のコントローラ内の前記ローカルメモリに転送して格納するものであり、前記自系及び他系のコントローラの各前記ローカルメモリの前記コマンドを保持する記憶領域はキュー構造から構成され、当該キュー構造は前記ホスト計算機から受領したコマンドを保持する受領キューと、前記プロセッサが前記複数の論理ユニットのうち前記コマンドで指定された論理ユニットにアクセスするためのコマンドを保持するコマンドキューと、を備えていることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、プロセッサやコントローラに対する負荷を分散して、データ処理速度を向上させた記憶サブシステムを提供することができる。
【発明を実施するための最良の形態】
【００１３】
図１に本発明に係わる記憶サブシステムを備えた記憶システムを示す。この記憶システム１は、ホスト計算機２Ａ，２Ｂが記憶サブシステム３を介して複数の記憶装置４Ａ〜４Ｄに接続されることにより構成されている。記憶サブシステムは記憶制御装置とも言われる。
【００１４】
ホスト計算機２Ａ，２Ｂは、例えばＣＰＵ（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）」フィールド４３Ｃ、「担当コントローラ番号」フィールド４３Ｄ、「担当コア番号」フィールド４３Ｅ、代替コア番号フィールド４３Ｆ及び「処理フラグ」フィールド４３Ｇから構成される。
【００５９】
そして「ＬＵＮ」フィールド４３Ｃには、記憶装置４Ａ〜４Ｄ内に定義された各論理ユニットのＬＵＮがそれぞれ格納され、「担当コントローラ番号」フィールド４３Ｄには、その論理ユニットに関する処理を担当するコントローラ６Ａ，６Ｂの識別子が格納される。
【００６０】
また「担当コア番号」フィールド４３Ｅには、対応する論理ユニットの担当コアの識別子が格納される。なお、この「担当コア番号」フィールド４３Ｅは、担当コントローラ内のマイクロプロセッサ１５Ａ，１５Ｂにある複数のコアのうちのどれが担当コアプロセッサであるかを管理するために設けられたものである。既述の例では、一つのコントローラにある一つのマイクロプロセッサに複数のコアが存在する場合について説明したが、一つのコントローラに複数のプロセッサがあり、各プロセッサが複数のコアを備える場合には、複数のコントローラの複数のコアをそれぞれ区別して論理ユニット／プロセッサ対応付けテーブル４３Ａ，４３Ｂが構築される。さらに、マイクロプロセッサのコア数は２に限られない。なお、図２の特性表２０４はこの対応付けテーブルを簡易的に表示したものである。
【００６１】
さらに、「代替コア番号」フィールド４３Ｆには担当コアに障害が発生した際に代替となるコア番号が格納される。この代替コアは同一コントローラ内のコアではなく、異なるコントローラのコアに対して設定される。図７に、各ＬＵと担当コア、代替コアの対応関係を示す特性図を示す。図７において、直線は直線が指し示す論理ボリュームに対するライト・リードアクセスを担当する担当コアを示し、一点鎖線は担当コアに対して代替となる代替コアを示す。このように担当コアと代替コアとが異なるコントローラに設定されるようにしたのは次の理由による。担当コアと同一のコントローラのプロセッサに代替コアを設定すると、一つのコントローラ全体に障害が発生した際に、そのコントローラに属する担当コアと代替コアの両方ともがホスト計算機からのＩＯアクセスを処理できないからである。
【００６２】
記憶システム１がコントローラ６Ａとコントローラ６Ｂとの間でコマンドを通信することで、コントローラ６Ａが受領したコマンドをコントローラ６Ｂが処理すること、そしてコントローラ６Ｂで受領したコマンドをコントローラ６Ａが処理することを、コマンドを受けたコントローラが自身でコマンドを処理することに比較して、さほどコマンド処理に要する処理時間に差が生じない。このためコントローラ間で代替コアを設定し、担当コアに障害が発生して代替コアが相手コントローラからコマンドを受けてホストＩＯを処理する場合でも、実質上処理時間が延びることもない。
【００６３】
図６に戻り「処理フラグ」フィールド４３Ｇには、対応する論理ユニットのデータの整合性を管理するための処理フラグが格納される。例えば「ホスト０−０」は、識別子が「０」のホスト計算機２Ａ，２Ｂから与えられた、対応する論理ユニットを対象とした０番目のコマンドに関する処理が実行中であることを示し「ホスト１−０」は、識別子が「１」のホスト計算機２Ａ，２Ｂから与えられた、対応する論理ユニットを対象とした０番目のコマンドに関する処理が実行中であることを示す。
【００６４】
従って、例えば、図６の例では、ＬＵＮが「０」、「２」及び「４」の各論理ユニットの担当コントローラは０系のコントローラ６Ａであり、担当コアはＬＵＮが「０」、「４」の場合は識別子が「Ｘ０」のコアであり、ＬＵＮが「２」の場合は識別子が「Ｙ０」のコアであり、ＬＵＮが「０」の論理ユニットについては、現在、識別子が「０」のホスト計算機２Ａから与えられた、その論理ユニットを対象とした０番目のコマンドに関する処理が実行中であることが示されている。
【００６５】
また、例えば、図６の例では、ＬＵＮが「１」、「３」及び「５」の各論理ユニットの担当コントローラは１系のコントローラ６Ｂであり、担当コアはＬＵＮが「１」、「５」の場合は識別子が「Ｘ１」のコアであり、ＬＵＮが「３」の場合は識別子が「Ｙ１」のコアであり、ＬＵＮが「１」の論理ユニットについては、現在、識別子が「０」のホスト計算機２Ｂから与えられた、その論理ユニットを対象とした１番目のコマンドに関する処理が実行中であることが示されている。なお、コアＸ０及びコアＹ０は０系コントローラのプロセッサ１５Ａの各コアであり、コアＸ１及びコアＹ１は１系コントローラのプロセッサＢの各コアである。
【００６６】
そして、この記憶システム１では、例えばこの図６の状態のときに、ＬＵＮが「０」の論理ユニットに対してホスト計算機２Ａから「０」番目以外の新たなコマンドが与えられた場合には、かかる「０」番目のコマンドに関する処理が完了するまでは、かかる新たなコマンドに関する処理を実行せず、かかる「０」番目のコマンドに関する処理が完了してから新たなコマンドに関する処理を実行するように制御される。このような制御により、複数のホスト計算機２Ａ，２Ｂが論理ユニットを共有する場合等に、各論理ユニットへのデータ入出力処理を、整合性を維持しながら行なわれることが可能となる。
【００６７】
一方、図８に示すローカルメモリ情報テーブル４４Ａ，４４Ｂは、０系のコントローラ６Ａ内のローカルメモリ１４Ａと、１系のコントローラ６Ｂ内のローカルメモリ１４Ｂとにそれぞれアクセスするために必要なアドレス情報等を管理するためのテーブルであり、「メモリ識別子」フィールド４４Ｃ１、「コア識別子」フィールド４４Ｃ２、「メモリアドレス範囲」フィールド４４Ｄ、「セグメントブロック識別子」フィールド４４Ｅ、「先頭セグメントアドレス」フィールド４４Ｆ及び「開放フラグ」フィールド４４Ｇから構成される。
【００６８】
このうち「メモリ識別子」フィールド４４Ｃ1には、対応するローカルメモリ１４Ａ，１４Ｂに付与された固有の識別子が格納される。「コア識別子」フィールド４４Ｃ２には、コアに付与された固有の識別子が格納される。コアの識別子の意味は図６において説明したものと同じである。
【００６９】
また「メモリアドレス範囲」フィールド４４Ｄには、対応するローカルメモリ１４Ａ，１４Ｂが提供する記憶領域上の各領域にそれぞれ付与されたアドレスの範囲が格納される。この場合において、かかるアドレスは、０系及び１系のコントローラ６Ａ，６Ｂ内の各ローカルメモリ１４Ａ，１４Ｂがそれぞれ提供する記憶領域と、０系及び１系のコントローラ６Ａ，６Ｂ内の各キャッシュメモリ１２Ａ．１２Ｂが提供する記憶領域とを通じて重複しないように割り当てられる。
【００７０】
また「セグメントブロック識別子」フィールド４４Ｅには、対応するローカルメモリ１４Ａ，１４Ｂが提供する記憶領域を所定単位で分割してなる各分割領域（以下、これをセグメントと呼ぶ）の識別子が格納される。この識別子は、０系及び１系のコントローラ６Ａ，６Ｂ内の各ローカルメモリ１４Ａ，１４Ｂがそれぞれ提供する記憶領域内に定義された各セグメントと、０系及び１系のコントローラ６Ａ，６Ｂ内の各キャッシュメモリ１２Ａ，１２Ｂ内に定義された各セグメントとを通じて重複しないように割り当てられる。
【００７１】
さらに「先頭セグメントアドレス」フィールド４４Ｆには、対応するセグメントの先頭アドレスが格納され、「開放フラグ」フィールド４４Ｇには、そのセグメントへのデータ書込みの可否を表すフラグ（以下、これを開放フラグと呼ぶ）が格納される。具体的に、「開放フラグ」フィールド４４Ｇには、対応するセグメントに対するデータの書き込みが可能であるときには、開放フラグ（「１」）が格納され、当該セグメントに対するデータの書き込みができない（既にデータが格納されている）ときには、「０」が格納される。
【００７２】
図８に示すように、例えば、「ＬＭ０」という識別子が付与された０系のコントローラ６Ａ内に設けられたローカルメモリ１４Ａが提供する記憶領域は、コアＸ０について「Ａ０００〜Ａ９９９」であり、当該記憶領域はそれぞれ先頭アドレスがそれぞれ「Ａ１００」、「Ａ２００」、……のセグメントに分割されていることが示されている。また、この図８の例では、識別子が「ａ」及び「ｃ」のセグメントについては、現在、データの書き込みが禁止されており、識別子が「ｂ」のセグメントについては、現在、データの書き込みが可能であることが示されている。
【００７３】
また、「ＬＭ０」という識別子が付与された０系のコントローラ６Ａ内に設けられたローカルメモリ１４Ａが提供する記憶領域は、コアＹ０について「Ｂ０００〜Ｂ９９９」であり、当該記憶領域はそれぞれ先頭アドレスがそれぞれ「Ｂ１００」、「Ｂ２００」、……のセグメントに分割されていることが示されている。識別子が「ｆ」のセグメントについては、現在、データの書き込みが禁止されており、識別子が「ｄ」及び「ｅ」のセグメントについては、現在、データの書き込みが可能であることが示されている。
【００７４】
このように記憶システム１では、このローカルメモリ情報テーブル４４Ａ，４４Ｂを参照することによって、０系及び１系のコントローラ６Ａ，６Ｂが自系のローカルメモリ１４Ａ，１４Ｂのみならず他系のローカルメモリ１４Ｂ，１４Ａの情報をも取得することができるため、これら０系及び１系のコントローラ６Ａ，６Ｂ内のマイクロプロセッサ１５Ａ，１５Ｂ及びホスト通信プロトコルチップ２１Ａ，２１Ｂがそれぞれ自系だけでなく、他系のローカルメモリ１４Ｂ，１４Ａにもアクセスすることができる。しかも、マイクロプロセッサは複数のコアが存在するために、既述の図２に示すように、各コアが担当するポート及び論理ユニットを定めて、各コアがホスト計算機からのコマンドを処理するようにした。
【００７５】
他方、図９に示すキャッシュメモリ情報テーブル４５Ａ，４５Ｂは、０系のコントローラ６Ａ内のローカルメモリ１４Ａと、１系のコントローラ６Ｂ内のローカルメモリ１４Ｂとにそれぞれアクセスするための情報を記憶したテーブルであり、「メモリ識別子」フィールド４５Ｃ、「メモリアドレス範囲」フィールド４５Ｄ、「セグメントブロック識別子」フィールド４５Ｅ、「先頭セグメントアドレス」フィールド４５Ｆ、「タイムスタンプ」フィールド４５Ｇ及び「ダーティフラグ」フィールド４５Ｈから構成される。
【００７６】
そして「メモリ識別子」フィールド４５Ｃには、対応するキャッシュメモリ１２Ａ，１２Ｂに付与された固有の識別子が格納される。また「メモリアドレス範囲」フィールド４５Ｄには、対応するキャッシュメモリ１２Ａ，１２Ｂが提供する記憶領域上の各領域にそれぞれ付与されたアドレスの範囲が格納される。
【００７７】
さらに「セグメントブロック識別子」フィールド４５Ｅは、対応するキャッシュメモリ１２Ａ，１２Ｂ内の各セグメントの識別子が格納され、「先頭セグメントアドレス」フィールド４５Ｆには、これらセグメントのうちの対応するセグメントの先頭アドレスが格納される。
【００７８】
さらに「タイムスタンプ」フィールド４５Ｇには、対応するセグメントにデータが格納された時刻を表すタイムスタンプが格納され、「ダーティフラグ」フィールド４５Ｈには、キャッシュメモリ１２Ａ，１２Ｂ上の対応するセグメントに格納されたデータを記憶装置４Ａ〜４Ｄに格納済みであるか否かを表すフラグ（以下、これをダーティフラグと呼ぶ）が格納される。具体的に、「ダーティフラグ」フィールド４５Ｈには、かかるデータを記憶装置４Ａ〜４Ｄに格納済みである場合にはダーティフラグ（「１」）が格納され、かかるデータを未だ記憶装置４Ａ〜４Ｄに格納していない場合には「０」が格納される。
【００７９】
従って、図９の例では、「ＣＭ０」という識別子が付与された０系のコントローラ６Ａ内に設けられたキャッシュメモリ１２Ａが提供する記憶領域はアドレス範囲が「ＣＡ０００」〜「ＣＡ９９９」であり、当該記憶領域はそれぞれ先頭アドレスがそれぞれ「ＣＡ１００」、「ＣＡ２００」、……のセグメントに分割されていることが示されている。また、この図７の例では、識別子が「Ａ」のセグメントについては、当該セグメントに格納されているデータを未だ記憶装置４Ａ〜４Ｄに格納しておらず、識別子が「Ｂ」及び「Ｃ」のセグメントについては、これらのセグメントに格納されているデータを既に記憶装置４Ａ〜４Ｄに格納し終えていることが示されている。
【００８０】
同様に、図９の例では、「ＣＭ１」という識別子が付与された１系のコントローラ６Ｂ内に設けられたキャッシュメモリ１２Ｂが提供する記憶領域はアドレス範囲が「ＣＢ０００」〜「ＣＢ９９９」であり、当該記憶領域はそれぞれ先頭アドレスが「ＣＢ１００」、「ＣＢ２００」、……のセグメントに分割されていることが示されている。また、この図９の例では、識別子が「Ｄ」及び「Ｆ」の各セグメントについては、これらセグメントに格納されているデータを未だ記憶装置４Ａ〜４Ｄに格納しておらず、識別子が「Ｅ」のセグメントについては、当該セグメントに格納されているデータを既に記憶装置４Ａ〜４Ｄに格納し終えていることが示されている。
【００８１】
このように記憶システム１では、このキャッシュメモリ情報テーブル４５Ａ，４５Ｂを参照することによって、０系及び１系のコントローラ６Ａ，６Ｂが自系のキャッシュメモリ１２Ａ，１２Ｂのみならず他系のキャッシュメモリ１２Ｂ，１２Ａの情報をも取得することができるため、これら０系及び１系のコントローラ６Ａ，６Ｂ内のマイクロプロセッサ１５Ａ，１５Ｂ及びホスト通信プロトコルチップ２１Ａ，２１Ｂがそれぞれ自系だけでなく、他系のキャッシュメモリ１２Ｂ，１２Ａにもアクセスすることができる。なお、実際には、図８で説明したと同様に、図９の各フィールドはコア毎に分類して設定されている。
【００８２】
なお、ローカルメモリ１４Ａ、１４Ｂの共有領域４２Ａ，４２Ｂ（図４（Ａ）及び（Ｂ）参照に格納される論理ユニット／プロセッサ対応付けテーブル４３Ａ，４３Ｂ、ローカルメモリ情報テーブル４４Ａ，４４Ｂ及びキャッシュメモリ情報テーブル４５Ａ，４５Ｂの一方が変更された場合には他方にも当該変更が反映され、０系及び１系のコントローラ６Ａ，６Ｂの間で整合性の取れた処理が実行される。
【００８３】
また、ローカルメモリ情報テーブル４４Ａ，４４Ｂに格納された情報のうち、０系のローカルメモリ１４Ａに関する情報のみ記憶した第１のローカルメモリ情報テーブル（図示せず）を０系のローカルメモリ１４Ａに格納し、１系のローカルメモリ１４Ｂに関する情報のみ記憶した第２のローカルメモリ情報テーブル（図示せず）を１系のローカルメモリ１４Ｂに格納しておき、代わりにかかる第１のローカルメモリ情報テーブルの格納先アドレスを１系のローカルメモリ１４Ｂに格納し、かかる第２のローカルメモリ情報テーブルの格納先アドレスを０系のローカルメモリ１４Ａに格納する構成とすることもできる。このようにすることによって、処理ごとに開放フラグを自系のローカルメモリ１４Ａ，１４Ｂの他に他系のローカルメモリ１４Ｂ，１４Ａにも二重に格納する必要がなくなり、処理速度の向上及び処理負荷の軽減という効果を得ることができる。
【００８４】
同様に、キャッシュメモリ情報テーブル４５Ａ，４５Ｂについても、０系のキャッシュメモリ１２Ａに関する情報のみ記憶した第１のキャッシュメモリ情報テーブル（図示せず）を０系のローカルメモリ１４Ａに格納し、１系のキャッシュメモリ１２Ｂに関する情報のみ記憶した第２のキャッシュメモリ情報テーブル（図示せず）を１系のローカルメモリ１４Ｂに格納しておき、それぞれのアドレス情報のみ他方のローカルメモリ１４Ｂ，１４Ａに格納する構成をとることができる。
【００８５】
さらにキャッシュメモリ情報テーブル４５Ａ，４５Ｂの「タイムスタンプ」フィールド４５Ｇに格納されたタイムスタンプを用いて格納可能な領域のうち最古の時刻に情報／データが更新された領域を優先して、格納先とする構成をとることも可能である。これによって新しく更新されたデータがキャッシュメモリ１２Ａ，１２Ｂ上に残ることとなり、キャッシュヒット率の向上が可能となる。
【００８６】
次に、記憶システム１におけるライトコマンド処理の具体的な処理内容について、図１０〜図１２を参照して説明する。ここでは、０系のコントローラ６Ａがホスト計算機２Ａからのライトコマンドを受信した場合について説明する。なお、図１０〜図１２の説明では、プロセッサ１５Ａとプロセッサ１５Ｂの動作について、コアＸとコアＹとを一緒にして便宜上「プロセッサ」と称して説明する。なお、図１０〜図１２の説明の後に、各コアに着目して各コアの動作を改めて図２を利用して説明することとする。
【００８７】
０系のコントローラ６Ａのホスト通信プロトコルチップ２１Ａは、ホスト計算機２Ａからのライトコマンドを受信すると（ＳＰ１）、自系のローカルメモリ１４Ａに格納されている論理ユニット／プロセッサ対応付けテーブル４３Ａ（図６）及びローカルメモリ情報テーブル４４Ａ（図８）を参照して、対象となる論理ユニットの担当マイクロプロセッサが自系（０系）のマイクロプロセッサ１５Ａであるか否かを判断する（ＳＰ２）。
【００８８】
そして、ホスト通信プロトコルチップ２１Ａは、この判断において否定結果を得ると、ステップＳＰ１において受信したライトコマンドを１系のローカルメモリ１４Ｂに転送する（ＳＰ３）。この結果、このライトコマンドは、かかるローカルメモリ１４Ｂにおける図３について上述した他系コントローラ受信コマンド格納領域４１Ａ（図４）内の制御情報格納領域４１ＡＸ（図４）に格納される。なお、コマンドを格納する格納領域はキュー構造から構成されていることは既述のとおりである。
【００８９】
この際、０系のホスト通信プロトコルチップ２１Ａは、自系のローカルメモリ１４Ａに格納されたローカルメモリ情報テーブル４４Ａに基づいて、１系のローカルメモリ１４Ｂ上のかかる制御情報格納領域４１ＡＸの中で開放フラグが立っているセグメントを書込み先として指定してライトコマンドを１系のローカルメモリ１４Ｂに転送する。これによって、１系のローカルメモリ１４Ｂ内の情報を破壊することなく、０系及び１系のコントローラ６Ａ，６Ｂ間においてライトコマンドの受け渡しを行うことができる。
【００９０】
一方、１系のマイクロプロセッサ１５Ｂは、定期的なポーリングにより自系のローカルメモリ１４Ｂを監視しており、当該ローカルメモリ１４Ｂにかかるライトコマンドが格納されたことを認識すると（ＳＰ４）、このライトコマンドを解析し、ライトデータを自系のキャッシュメモリ１２Ｂに格納するためのＤＭＡ（Direct Memory Access）リスト５０（図１０参照）を作成して、これを自系のローカルメモリ１４Ｂにおける他系コントローラ受信コマンド格納領域４１Ａ（図４）内の制御情報格納領域４１ＡＸ（図４）に格納する（ＳＰ５）。
【００９１】
このＤＭＡリスト５０の作成に際しては、かかるローカルメモリ１４Ｂに格納されたキャッシュメモリ情報テーブル４５Ｂ（図９）が参照され、データ格納先アドレスとして、例えばダーティフラグが０であり、かつタイムスタンプが最古のセグメントの先頭アドレスが指定される。このとき１系のマイクロプロセッサ１５Ｂは、自系のローカルメモリ１４Ｂに格納されているキャッシュメモリ情報テーブル４５Ｂ上のそのセグメントに対応する「ダーティフラグ」フィールド４５Ｈ（図９）にダーティフラグを格納（「１」を格納）する。
【００９２】
この後、１系のマイクロプロセッサ１５Ｂは、ＰＣＩ−Ｅｘｐｒｅｓｓ規格で定義されるＰＣＩ−Ｅｘｐｒｅｓｓメッセージシグナル割り込み（以下、これをＭＳＩ（Message signal Interrupt）と呼ぶ）を用いて０系のコントローラ６Ａ内のホスト通信プロトコルチップ２１Ａを起動し、当該ホスト通信プロトコルチップ２１Ａに対してステップＳＰ５において作成したＤＭＡリスト５０に従ったデータ転送を指示する（ＳＰ６）。
【００９３】
かかる指示を受けた０系のホスト通信プロトコルチップ２１Ａは、１系のローカルメモリ１４ＢからＤＭＡリスト５０を読み出す（ＳＰ７）。また、かかるホスト通信プロトコルチップ２１Ａは、このＤＭＡリスト５０に基づいて、ホスト計算機２Ａから送信されるライトデータを受信して自系のキャッシュメモリ１２Ａに格納すると共に、自系のデータ転送制御部１１ＡにＤＭＡアドレス５０を通知するなどの処理を実行する（ＳＰ８）。
【００９４】
そして０系のデータ転送制御部１１Ａは、上述のように自系のホスト通信プロトコルチップ２１ＡからＤＭＡアドレスが通知されると、自系のキャッシュメモリ１２Ａに格納されたライトデータを読み出して１系のコントローラ６Ｂに転送する。この結果、このライトデータが１系のコントローラ６Ｂ内のキャッシュメモリ１２Ｂにも格納され、これにより当該ライトデータが二重化される（ＳＰ９）。
【００９５】
また０系のホスト通信プロトコルチップ２１Ａは、かかるライトデータの二重化が完了すると、１系のマイクロプロセッサ１５Ｂにデータ転送（二重化）が完了した旨の通知（以下、これをデータ転送完了通知と呼ぶ）をＭＳＩにより送信する（ＳＰ１０）。このようにホスト通信プロトコルチップ２１Ａからマイクロプロセッサ１５Ｂへの通知方法としてＭＳＩを適用することにより、自系及び他系のコントローラ６Ａ，６Ｂ間の通信負荷を低下でき、システム性能の低下を回避することができる。
【００９６】
１系のマイクロプロセッサ１５Ｂは、かかるデータ転送完了通知を受信すると、０系のホスト通信プロトコルチップ２１Ａに対して、ライトコマンド処理が終了した旨の通知を対応するホスト計算機２Ａに送信すべき旨の指示を与える。そして、この指示を受けた０系のホスト通信プロトコルチップ２１Ａは、かかるライトコマンドを送信してきたホスト計算機２Ａに対してライトデータの書き込みが完了した旨の報告を行う（ＳＰ１１）。
【００９７】
この後、１系のマイクロプロセッサ１５Ｂは、自系のキャッシュメモリ１２Ｂに格納されたライトデータを、対応する記憶装置４Ａ〜４Ｄ内の指定された論理ボリュームＬＵ１に移動（デステージング）させると共に、自系のローカルメモリ１４Ｂに格納されているキャッシュメモリ情報テーブル４５Ｂ上の対応する「ダーティフラグ」フィールド４５Ｈに格納されているダーティフラグを「０」とする（ＳＰ１２）。
【００９８】
一方、０系のホスト通信プロトコルチップ２１Ａは、上述のステップＳＰ２の判断において肯定結果を得たときには、そのライトコマンドを自系のローカルメモリ１４Ａにおける自系コントローラ受信コマンド格納領域４０Ａ（図３）内に格納する（ＳＰ１３）。この結果、かかるローカルメモリ１４Ａに格納されたライトコマンドは、やがて定期的なポーリングにより０系のマイクロプロセッサ１５Ａに認識される（ＳＰ１４）。
【００９９】
そしてマイクロプロセッサ１５Ａは、かかるライトコマンドが与えられたことを認識すると、このライトコマンドを解析し、対応するライトデータを自系のキャッシュメモリ１２Ａに格納するために、当該ライトデータを書き込むべきキャッシュメモリ１２Ａ上のアドレスと、当該ライトデータのデータ長とが格納されたＤＭＡリスト５０（図１０）を作成し、これを自系のローカルメモリ１４Ａにおける自系コントローラ受信コマンド格納領域４０Ａ（図４）に格納する（ＳＰ１５）。
【０１００】
このＤＭＡリスト５０の作成に際しては、かかるローカルメモリ１４Ａに格納されたキャッシュメモリ情報テーブル４５Ａが参照され、データ格納先アドレスとして、例えばダーティフラグが０であり、かつタイムスタンプが最古のセグメントの先頭アドレスが指定される。このとき０系のマイクロプロセッサ１５Ａは、自系のローカルメモリ１４Ａに格納されているキャッシュメモリ情報テーブル４５Ａ上のそのセグメントに対応する「ダーティフラグ」フィールド４５Ｈ（図９）にダーティフラグを格納（「１」を格納）する。
【０１０１】
続いて０系のマイクロプロセッサ１５Ａは、自系のホスト通信プロトコルチップ２１Ａを起動し、当該ホスト通信プロトコルチップ２１Ａに対してステップＳＰ１５において作成したＤＭＡリスト５０に従ったデータ転送を指示する（ＳＰ１６）。
【０１０２】
かくして、かかる０系のホスト通信プロトコルチップ２１Ａは、自系のローカルメモリ１４ＡからＤＭＡリスト５０を読み出す（ＳＰ１７）。また、かかるホスト通信プロトコルチップ２１Ａは、このＤＭＡリスト５０に基づいて、ホスト計算機２Ａから送信されるライトデータを受信して自系のキャッシュメモリ１２Ａに格納すると共に、自系のデータ転送制御部１１ＡにＤＭＡアドレスを通知するなどの処理を実行する（ＳＰ１８）。
【０１０３】
そして０系のデータ転送制御部１１Ａは、上述のように自系のホスト通信プロトコルチップ２１ＡからＤＭＡアドレスが通知されると、自系のキャッシュメモリ１２Ａに格納されたライトデータを読み出して１系のコントローラ６Ｂに転送する。この結果、このライトデータが１系のコントローラ６Ｂ内のキャッシュメモリ１２Ｂにも格納され、これにより当該ライトデータが二重化される（ＳＰ１９）。
【０１０４】
さらに０系のマイクロプロセッサ１５Ａは、自系のホスト通信プロトコルチップ２１Ａに対して、ライトコマンド処理が終了した旨の通知を対応するホスト計算機２Ａに送信すべき旨の指示を与える。かくして、この指示を受けた０系のホスト通信プロトコルチップ２１Ａは、対応するホスト計算機２Ａに対してライトデータの書き込みが完了した旨の報告を行う（ＳＰ２０）。
【０１０５】
この後、０系のマイクロプロセッサ１５Ａは、自系のキャッシュメモリ１２Ａに格納されたライトデータを、対応する記憶装置４Ａ〜４Ｄ内の指定された論理ボリュームＬＵ１に移動（デステージング）させると共に、自系のローカルメモリ１４Ａに格納されているキャッシュメモリ情報テーブル４５Ａ上の対応する「ダーティフラグ」フィールド４５Ｈに格納されているダーティフラグを「０」とする（ＳＰ２１）。
【０１０６】
なお、このようなライトコマンド処理の過程において、０系及び１系のマイクロプロセッサ１５Ａ，１５Ｂは、自系又は他系のローカルメモリ１４Ａ，１４Ｂに情報を格納する際には、対応するローカルメモリ情報テーブル１４Ａ，１４Ｂ上の対応する「開放フラグ」フィールド４４Ｇに格納された開放フラグを「０」とし、その後その情報が後の処理で不必要となったときには、かかる開放フラグを「１」とする。
【０１０７】
また、ここでは０系のコントローラ６Ａがホスト計算機２Ａからのライトコマンドを受信した場合について説明したが、１系のコントローラ６Ｂがホスト計算機２Ｂからのライトコマンドを受信した場合も同様である。
【０１０８】
図２を利用してプロセッサの各コアの動作を説明する。ホスト計算機２Ａからホスト通信制御部１０ＡのポートＡにＬＵＮ１である論理ユニットに対するライトコマンド２０６が発行されたとする。通信プロトコルチップ２１Ａはライトコマンドをローカルメモリ１４ＡのＸコア領域にある受領キューａに格納する（Ｓ２００）。Ｘコア１５ＡＸはキューａにあるコマンドを順に受領し（Ｓ２０２）、受領したコマンドを分析する。
【０１０９】
Ｘコア１５ＡＸは受領したコマンドのＳ＿ＩＤ（ホスト識別子）、論理ユニット番号ＬＵＮからこのコマンドを適切なコマンドキュー２０２に分配する。Ｘコア１５ＡＸは、論理ユニットＬＵＮ１に対するコマンドであること、この論理ユニットＬＵＮ１に対するコマンドはＹコアが担当であることを特性表２０４に基づいて判断し、このコマンドをコマンドキューＣに格納する。Ｙコア１５ＡＹはコマンドキューＣからコマンドを順に呼び出し（Ｓ２０６）、ラインロビンでこのコマンドに基づいて論理ユニットＬＵＮ１に対するライト処理を実行する。
【０１１０】
このようなマルチコア方式により、ポート単位でのコマンド処理性能を向上させ、かつコマンド処理の負荷バランスの最適化が達成可能である。なお、０系のコントローラ６Ａに１系のコントローラ６Ｂに対するコマンドがホスト計算機２Ａから入力された場合には、０系プロセッサ１５ＡのコアＸ０又はコアＹ０がＳ＿ＩＤ（ホスト識別子）、論理ユニット番号ＬＵＮと図６に示す制御情報テーブルに基づいて、コマンドを１系コントローラ６Ｂに転送してプロセッサ１５Ｂの担当コア（コアＸ１又はコアＹ１）に割り当てられた既述のコマンドキューにコマンドを格納する。
【０１１１】
図１３は、０系記憶サブシステム６ＡのポートＡにホスト計算機から、ＬＵＮ２の識別子を持つ論理ユニットに対するライトコマンドが発行された場合の処理動作を示している。０系コントローラ６Ａのマイクロプロセッサ１５Ａのコアが受領キューからコマンドを受領し（Ｓ１３００）、これを１系のコントローラ６Ｂのローカルメモリ１４ＢのコマンドキューＢ´に格納する（Ｓ１３０２）。１系コントローラ６Ｂのマイクロプロセッサ１５ＢのコアがコマンドキューＢ´に格納されたコマンドを実行して（Ｓ１３０４）、論理ユニットＬＵ２に対してライト処理を実行する（Ｓ１３０６）。
【０１１２】
図１４は図１３の変形例である。この変形例が図１３の形態と異なる点は、次のとおりである。ホスト通信プロトコルチップ２１Ａ，２１Ｂとして、４Gb/sのデータ転送レートに対応した、ファイバチャネル用プロトコルIC（Agilent HPFC-5700A Tachyon（タキオン）DX4＋ファイバチャネル・プロトコルIC（商品名））などを用いて、マイクロプロセッサコア１５Ａを介することなくホスト通信プロトコルチップが受領キュー２００Ａに格納されているコマンドを１系(他系)のローカルメモリ１４Ｂに格納した。
【０１１３】
０系コントローラ６Ａのローカルメモリ１４Ａと１系コントローラ６Ｂのローカルメモリ１４Ｂには、他系のコントローラから転送されたか、あるいは他系のコントローラに転送されるべきコマンドを格納するダミーキュー１４００Ａ、１４０２Ａ、１４００Ｂ、１４０Ｂが設けられている。“ダミー”キューというのは、自系のコントローラに対するコマンドが格納されるキューではないからである。さらに、ダミーキューがコントローラ毎にＡとＢの二つが設けられているのは、一つがＸコア用である、他の一つがＹコア用だからである。プロセッサがシングルコアから構成されている場合は、ダミューキューは各コントローラについて一つでよい。コア１５Ａ，１５Ｂは定期的にこれらダミューキューをポーリングしてキューをコマンドキューに格納する。図１４において、０系コントローラのホスト通信プロトコルチップ２１Ａがローカルメモリ１４Ａの受領キュー２００Ａに格納されていたコマンドを１系コントローラのローカルメモリ１４Ｂのダミーキュー１４００Ｂに格納する（Ｓ１４００）。コア１５Ｂはダミーキューを定期的にチェックして論理ユニットＬＵ２に対するコマンドを発見した場合にはこれを論理ユニットＬＵ２に対して設定されたコマンドキューＡ´に格納し（１４０２）、コマンドキューＡ´に格納されたコマンドを順番に処理する。
【０１１４】
次に、記憶システム１におけるリードコマンド処理について、図１５〜図１７を参照して説明する。ここでは、０系のコントローラ６Ａがホスト計算機２Ａからのリードコマンドを受信した場合について説明する。なお、図１５〜図１7に対する以下述べる説明において、プロセッサ１５Ａとプロセッサ１５Ｂの動作が、コアＸとコアＹとを一緒にした「プロセッサ」として便宜上説明されている。
【０１１５】
０系のコントローラ６Ａのホスト通信プロトコルチップ２１Ａは、ホスト計算機２Ａからのリードコマンドを受信すると（ＳＰ３０）、自系のローカルメモリ１４Ａに格納されている論理ユニット／プロセッサ対応付けテーブル４３Ａ（図６）及びローカルメモリ情報テーブル４４Ａ（図８）を参照して、対象となる論理ユニットの担当マイクロプロセッサが自系（０系）のマイクロプロセッサ１５Ａであるか否かを判断する（ＳＰ３１）。
【０１１６】
そして、ホスト通信プロトコルチップ２１Ａは、この判断において否定結果を得ると、ステップＳＰ１において受信したリードコマンドを１系のローカルメモリ１４Ｂに転送する（ＳＰ３２）。この結果、このライトコマンドは、かかるローカルメモリ１４Ｂにおける図３について上述した他系コントローラ受信コマンド格納領域４１Ａ（図４）内の制御情報格納領域４１ＡＸ（図４）に格納される。
【０１１７】
この際、０系の通信ホストプロトコルチップ２１Ａは、自系のローカルメモリ１４Ａに格納されたローカルメモリ情報テーブル４４Ａに基づいて、１系のローカルメモリ１４Ｂ上のかかる制御情報格納領域４１ＡＸの中で開放フラグが立っているセグメントを書込み先として指定してリードコマンドを１系のローカルメモリ１４Ｂに転送する。これによって、１系のローカルメモリ１４Ｂ内の情報を破壊することなく、０系及び１系のコントローラ６Ａ，６Ｂ間においてリードコマンドの受け渡しを行うことができる。
【０１１８】
一方、１系のマイクロプロセッサ１５Ｂは、定期的なポーリングにより自系のローカルメモリ１４Ｂを監視しており、当該ローカルメモリ１４Ｂにかかるリードコマンドが格納されたことを認識すると（ＳＰ３３）、このリードコマンドを解析し、対象とするリードデータが１系のキャッシュメモリ１２Ｂ内に存在するか否かを判断する。
【０１１９】
そしてマイクロプロセッサ１５Ｂは、かかるリードデータがキャッシュメモリ１２Ｂ内に存在する場合にはステップＳＰ３８に進み、これに対して存在しない場合にはリードデータを対応する記憶装置４Ａ〜４Ｄから読み出してキャッシュメモリ１２Ｂに格納（ステージング）する（ＳＰ３４）。
【０１２０】
キャッシュメモリ１２Ｂに格納されたリードデータは、この後、１系のデータ転送制御部１１Ｂによって０系のコントローラ６Ａに転送され、当該コントローラ６Ａ内のキャッシュメモリ１２Ａのデータ格納領域５０ＡＹ（図５）に格納される。これにより、かかるリードデータが二重書きされる（ＳＰ３５）。
【０１２１】
また、このリードデータの管理情報も、１系のマイクロプロセッサ１５Ｂにより自系のキャッシュメモリ１２Ｂにおけるデータ管理情報格納領域５０Ｂ（図５）に格納されるが（ＳＰ３６）、この管理情報も０系のキャッシュメモリ１２Ａに転送されて、当該キャッシュメモリ１２Ａにおけるデータ管理情報格納領域５０Ａに格納される。これにより、リードデータの管理情報も二重書きされる（ＳＰ３７）。
【０１２２】
この後、１系のマイクロプロセッサ１５Ｂは、図１０のステップＳＰ５について上述した方法と同様の方法によりＤＭＡリスト５０（図１０）を作成すると共に、作成したＤＭＡリスト５０を自系のローカルメモリ１４Ｂに格納する（ＳＰ３８）。またこのマイクロプロセッサ１５Ｂは、０系のホスト通信プロトコルチップ２１Ａを起動し、当該ホスト通信プロトコルチップ２１Ａに対してステップＳＰ３８において作成したＤＭＡリスト５０に従ったデータ転送を、ＭＳＩを利用して指示する（ＳＰ３９）。
【０１２３】
かかる指示を受けた０系のホスト通信プロトコルチップ２１Ａは、１系のローカルメモリ１４ＢからＤＭＡリスト５０を読み出し（ＳＰ４０）、このＤＭＡリスト５０に基づいて、必要なＤＭＡアドレスを自系のデータ転送制御部１１Ａに通知する（ＳＰ４１）。また、この通知を受けたデータ転送制御部１１Ａは、与えられたＤＭＡアドレスに従ってリードデータの管理情報を自系のホスト通信プロトコルチップ２１Ａに転送する。
【０１２４】
一方、かかる管理情報を受信した０系のホスト通信プロトコルチップ２１Ａは、この管理情報に基づいて保障コードの確認及びそのデータがリードデータである旨の確認を行い（ＳＰ４２）、この後、リードデータを自系のキャッシュメモリ１２Ａから自系のホスト通信プロトコルチップ２１Ａに転送させる（ＳＰ４３）。なお、リードデータを１系のキャッシュメモリ１２Ｂから送信する構成とすることもできる。そしてホスト通信プロトコルチップ２１Ａは、この後このリードデータを対応するホスト計算機２Ａに送信する（ＳＰ４４）。
【０１２５】
一方、０系のホスト通信プロトコルチップ２１Ａは、上述のステップＳＰ３１の判断において肯定結果を得たときには、そのリードコマンドを自系のローカルメモリ１４Ａにおける自系コントローラ受信コマンド格納領域４０Ａ（図４）内に格納する（ＳＰ４５）。この結果、かかるローカルメモリ１４Ａに格納されたリードコマンドは、やがて定期的なポーリングにより０系のマイクロプロセッサ１５Ａに認識される（ＳＰ４６）。
【０１２６】
かくして、この後、図１６のステップＳＰ３４〜ステップＳＰ４４について上述した処理と同様の処理が第１のコントローラ６Ａにおいて行われ、これによりリードコマンドによって指定されたリードデータが対応する論理ユニットから読み出されてホスト計算機２Ａに送信される（ＳＰ４７〜ＳＰ５７）。
【０１２７】
なお、ここでは０系のコントローラ６Ａがホスト計算機２Ａからのリードコマンドを受信した場合について説明したが、１系のコントローラ６Ｂがホスト計算機２Ｂからのリードコマンドを受信した場合も同様である。
【０１２８】
次に、データ転送制御部１１Ａ，１１Ｂ及びブリッジ１３Ａ，１３Ｂに搭載されたアービトレーション（調停）機能について説明する。図１について上述のように、本実施の形態の記憶システム１では、０系及び１系の各コントローラ６Ａ，６Ｂにおいて、データ転送制御部１１Ａ，１１Ｂには、ホスト通信制御部１０Ａ，１０Ｂ、キャッシュメモリ１２Ａ，１２Ｂ、ブリッジ１３Ａ，１３Ｂ及び記憶装置通信制御部１６Ａ，１６Ｂが所定のバスを介して接続されると共に、コントローラ間接続経路５を構成するバスも接続される。また０系及び１系の各コントローラ６Ａ，６Ｂにおいて、ブリッジ１３Ａ，１３Ｂには、ローカルメモリ１４Ａ，１４Ｂ、マイクロプロセッサ１５Ａ，１５Ｂ及びデータ転送制御部１１Ａ，１１Ｂが所定のバスを介して接続される。従って、これらデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂには、各バスを通じて種々のコマンドの転送要求が与えられる。
【０１２９】
そこで、これらデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂは、複数のコマンドの転送要求が与えられた場合、これらの転送要求に対する処理をその要求が到着した順番で行う。またデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂは、同時に複数の転送要求が到着した場合、優先度の高いコマンドから順番に転送処理を行う。
【０１３０】
この場合において、本実施の形態の記憶システム１では、データ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂを通過するコマンドとしては、マイクロプロセッサ１５Ａ，１５Ｂから自系のコントローラ６Ａ，６Ｂ内の各要素に与えられる各種コマンド、ローカルメモリ１４Ａ，１４Ｂに対するリフレッシュ要求コマンド、他系のコントローラ６Ｂ，６Ａからコントローラ間接続経路５を介して与えられるキャッシュメモリ１２Ａ，１２Ｂに対するアクセスコマンド、上述のようなＤＭＡに関する各種のコマンドがあり、これらコマンドの優先度が、種々の事情を勘案して、この順番で定められている。
【０１３１】
このためこの記憶システム１では、何らの手当てもしなければ、優先度の高い要求がデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂに順次与えられた結果、優先度が低く設定されたＤＭＡに関するコマンドに対する転送処理の転送が待たされ続けてしまうことになる。
【０１３２】
そこで、この実施の形態による記憶システム１では、データ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂにバスからの要求を均一に処理するアービトレーション（調停）機能が搭載されており、これにより順位の高い要求がデータ転送制御部１１Ａ，１１Ｂやブリッジ１３Ａ，１３Ｂに順次与えられた場合においても、優先度が低く設定された上述のＤＭＡに関する各種コマンドの転送要求が待たされ続けるのを未然に防止し得るようになされている。
【０１３３】
以上のように本実施例の記憶システム１では、１系のコントローラ６Ｂを担当コントローラとする論理ユニットを対象としたライトコマンドやリードコマンドを０系のコントローラ６Ａが受信した場合、０系のマイクロプロセッサ１５Ａがこのライトコマンド又はリードコマンドを１系のローカルメモリ１４Ｂに転送して直接書き込むようにしているため、０系及び１系のコントローラ６Ａ，６Ｂ間における当該ライトコマンド又はリードコマンドの受け渡しの際に０系及び１系のマイクロプロセッサ１５Ａ，１５Ｂ間の通信が不要となる。
【０１３４】
従って、この記憶システム１では、かかる通信に起因するコマンドを受信したコントローラ６Ａ，６Ｂに余計な負荷が生じたり、当該コマンドに対する処理時間の遅延が発生するのを有効に防止でき、担当外の論理ボリュームを対象とするコマンドを受信したコントローラの負荷を低減させながら、コマンドに対する処理時間を高速化させることができる。
【０１３５】
また本実施の形態による記憶システム１では、かかるライトコマンドやリードコマンドを、比較的アクセス速度の高い自系のローカルメモリ１５Ｂに書き込むようにしているため、例えば比較的アクセス速度の低いキャッシュメモリ１２Ｂを介してライトコマンドやリードコマンドをやり取りする場合に比べて、処理速度を向上させる効果を得ることができる。さらに０系のマイクロプロセッサ１５Ａを介入させることなく１系のマイクロプロセッサ１５Ｂ側が主体となって一連の処理行うことが可能なため、例えば０系のマイクロプロセッサ１５Ａの処理負荷が高く１系のマイクロプロセッサ１５Ｂの処理負荷が低い場合にも、０系のマイクロプロセッサ１５Ａの処理負荷がネックとなって応答性能が低下するという事態を回避することができる。
【０１３６】
また本実施の形態による記憶システム１では、ホスト計算機２Ａ，２Ｂからのライトコマンドやリードコマンドを受信した０系又は１系のコントローラ６Ａ，６Ｂが他系のコントローラ６Ｂ，６Ａに処理を依頼するジョブを新しく生成する必要がなくなり、ホスト計算機２Ａ，２Ｂから送信されるコマンドを０系のコントローラ６Ａで受信しても１系のコントローラ６Ｂで受信してもほぼ同じ処理効率で実行することが可能となる。
【０１３７】
この記憶システム１では、そのとき対象とする論理ユニットの担当コントローラをホスト計算機２Ａ，２Ｂに意識させる必要がなくなり、多数のホスト計算機２Ａ，２Ｂから０系のコントローラ６Ａ，６Ｂに対してライトコマンドやリードコマンドを受信しても高い処理速度で応答することができるため、構成自由度の向上、保守作業の低減を図ることができる。例えば、０系及び１系のマイクロプロセッサ１５Ａ，１５Ｂ間で負荷状況に応じて担当する論理ユニットを動的に切り替える運用とした場合には、ホスト計算機２Ａ，２Ｂに対して負荷バランスが適切となるように送信先のコントローラ６Ａ，６Ｂを設定する設定作業が行われないときにも、処理効率の低下を防ぐことが可能となる。
【０１３８】
図１８は、他の実施の形態による記憶システム６０を示す。この記憶システム６０は、記憶制御装置６１を構成する０系のコントローラ６２Ａ内のホスト通信制御部６３Ａに設けられたホスト通信プロトコルチップ６３ＡがマルチＣＰＵサポート機能を備えておらず、単一のマイクロプロセッサとのみデータ通信が可能な点を除いて、図１の実施の形態による記憶システム１（図１）と同様に構成されている。
【０１３９】
図１９及び図２０はこの記憶システム６０におけるライトコマンド処理の流れを示すフローチャートである。ここでは、図１の実施の形態と同様に、０系のコントローラ６２Ａがホスト計算機２Ａからのライトコマンドを受信した場合について説明する。
【０１４０】
この場合、この記憶システム６０では、図１０〜図１２のステップＳＰ１〜ステップＳＰ５と同様にして、ホスト計算機２Ａから０系のコントローラ６２Ａに与えられたライトコマンドが１系のコントローラ６Ｂに与えられ、このライトコマンドに基づいて１系のコントローラ６ＢにおいてＤＭＡリスト５０が作成されて１系のローカルメモリ１４Ｂに格納される（ＳＰ６０〜ＳＰ６４）。
【０１４１】
１系のマイクロプロセッサ１５Ｂは、この後、この１系のローカルメモリ１４Ｂに格納されているＤＭＡリスト５０を０系のローカルメモリ１４Ａにコピーする。この際、１系のマイクロプロセッサ１５Ｂは、ローカルメモリ情報テーブル４４Ｂ（図８）を参照して、０系のローカルメモリ１４Ａの他コントローラ受信コマンド格納領域４１Ａ内の制御情報格納領域４１ＡＸ（図４）をＤＭＡリスト５０のコピー先として指定する（ＳＰ６５）。これは、ＤＭＡリスト５０を読み込むように０系のホスト通信プロトコルチップ６４Ａに対して起動をかけるのが０系のマイクロプロセッサ１５Ａであるからである。
【０１４２】
一方、０系のマイクロプロセッサ１５Ａは、定期的なポーリングにより自系のローカルメモリ１４Ａを監視しており、当該ローカルメモリ１４Ａに上述のＤＭＡリスト５０が格納されたことを認識すると、このＤＭＡリスト５０を当該ローカルメモリ１４Ａの自コントローラ格納受信領域４０Ａ内の制御情報格納領域４０ＡＸにコピーする（ＳＰ６６）。
【０１４３】
またマイクロプロセッサ１５Ａは、この後、自系のホスト通信プロトコルチップ６４Ａを起動し、当該ホスト通信プロトコルチップ６４Ａに対してＤＭＡリスト５０に従ったデータ転送を指示する（ＳＰ６７）。
【０１４４】
かかる指示を受けたホスト通信プロトコルチップ６４Ａは、自系のローカルメモリ１４Ａにおける自コントローラ格納受信領域４０Ａ内の制御情報格納領域４０ＡＸに格納されているＤＭＡリスト５０を読み出し、自系のデータ転送制御部１１ＡにＤＭＡアドレス５０を通知する（ＳＰ６８）。
【０１４５】
そして０系のデータ転送制御部１１Ａは、上述のように自系のホスト通信プロトコルチップ６４ＡからＤＭＡアドレスが通知されると、このＤＭＡアドレスに従ってホスト計算機２Ａからのライトデータを受信し、これを自系のキャッシュメモリ１２Ａに格納する（ＳＰ６９）。
【０１４６】
また０系のデータ転送制御部１１Ａは、自系のキャッシュメモリ１２Ａに格納したライトデータを読み出して１系のコントローラ６Ｂに転送する。この結果、このライトデータが１系のコントローラ６Ｂ内のキャッシュメモリ１２Ｂにも格納され、これにより当該ライトデータが二重化される（ＳＰ７０）。さらに０系のホスト通信プロトコルチップ６４Ａは、かかるライトデータの二重化が完了すると、１系のマイクロプロセッサ１５Ｂにデータ転送完了通知を上述のＭＳＩにより送信する（ＳＰ７１）。
【０１４７】
この後、０系のマイクロプロセッサ１５Ａは、自系のホスト通信プロトコルチップ６４Ａに対して、ライトコマンド処理が終了した旨の通知を対応するホスト計算機２Ａに送信すべき旨の指示を与える。そして、この指示を受けた０系のホスト通信プロトコルチップ６４Ａは、かかるライトコマンドを送信してきたホスト計算機２Ａに対してライトデータの書き込みが完了した旨の報告を行う（ＳＰ７２）。
【０１４８】
かくして１系のマイクロプロセッサ１５Ｂは、この後、自系のキャッシュメモリ１２Ｂに格納されたライトデータを、対応する記憶装置４Ａ〜４Ｄ内の指定された論理ボリュームＬＵ１に移動（デステージング）させると共に、自系のローカルメモリ１４Ｂに格納されているキャッシュメモリ情報テーブル４５Ｂ上の対応する「ダーティフラグ」フィールド４５Ｈに格納されているダーティフラグを「０」とする（ＳＰ７３）。
【０１４９】
これに対して、０系のホスト通信プロトコルチップ６４Ａは、上述のステップＳＰ６１の判断において肯定結果を得たときには、図１２のステップＳＰ１３〜ステップＳＰ２１と同様の手順により、ホスト計算機２Ａからのライトデータを対応する記憶装置４Ａ〜４Ｄ内の指定された論理ボリュームＬＵ１に格納（デステージング）する（ステップＳＰ７４〜ステップＳＰ８２）。
【０１５０】
なお、ここでは０系のコントローラ６２Ａがホスト計算機２Ａからのライトコマンドを受信した場合について説明したが、１系のコントローラ６Ｂがホスト計算機２Ｂからのライトコマンドを受信した場合も同様である。
【０１５１】
一方、図２１〜図２３は、図１８の記憶システム６０におけるリードコマンド処理の流れを示すフローチャートである。ここでは、第１の実施の形態と同様に、０系のコントローラ６２Ａがホスト計算機２Ａからのリードコマンドを受信した場合を想定している。
【０１５２】
この場合、この記憶システム６０では、図１５〜図１７のステップＳＰ３０〜ステップＳＰ３８と同様にして、ホスト計算機２Ａからのリード要求に応じたリードデータを記憶装置４Ａ〜４Ｄから１系のキャッシュメモリ１２Ｂにステージングされ、このリードデータ及びその管理情報が０系及び１系のキャッシュメモリ１２Ａ，１２Ｂに二重書きされる。また記憶システム６０では、このリードデータに対するＤＭＡリスト５０が１系のコントローラ２１において作成され、これが１系のローカルメモリ１４Ｂに格納される（ＳＰ９０〜ＳＰ９８）。
【０１５３】
この後、１系のマイクロプロセッサ１５Ｂは、ローカルメモリ１４Ｂに格納したＤＭＡリスト５０を０系のローカルメモリ１４Ａに転送する。かくして、このＤＭＡリスト５０が、図４について上述した０系のローカルメモリ１４Ａの他系コントローラ受信コマンド格納領域４１Ａ内の制御情報格納領域４１ＡＸに格納される（ＳＰ９９）。
【０１５４】
この０系のローカルメモリ１４Ａに格納されたＤＭＡリスト５０は、この後、ローカルメモリ１４Ａ内の自系コントローラ受信コマンド格納領域４０Ａ内の制御情報格納領域４０ＡＸ（図４）にコピーされる（ＳＰ１００）。
【０１５５】
この後、０系のマイクロプロセッサ１５Ａは、０系のホスト通信プロトコルチップ６４Ａを起動し（ＳＰ１０１）、当該ホスト通信プロトコルチップ６４Ａに対してステップＳＰ９８において作成したＤＭＡリスト５０に従ったデータ転送を指示する（ＳＰ１０１）。
【０１５６】
かかる指示を受けた０系のホスト通信プロトコルチップ６４Ａは、自系のローカルメモリ１４Ａ内の制御情報格納領域自系コントローラ受信コマンド格納領域４０ＡＸ（図３）からＤＭＡリスト５０を読み出し（ＳＰ１０２）、このＤＭＡリスト５０に基づいて、ＤＭＡアドレスを自系のデータ転送制御部１１Ａに通知する（ＳＰ１０３）。
【０１５７】
また、この通知を受けたデータ転送制御部１１Ａは、与えられたＤＭＡアドレスに従ってリードデータの管理情報を自系のホスト通信プロトコルチップ６４Ａに転送する。この後、０系のデータ転送制御部１１Ａは、送信されたＤＭＡアドレスに従ってデータ管理情報を取得して整合性が取れているか否かをチェックする（ＳＰ１０４）。
【０１５８】
次いで、０系のデータ転送制御部１１Ａは、０系のキャッシュメモリ１２Ａから自系のホスト通信プロトコルチップ６４Ａにリードデータを転送し（ＳＰ１０５）、ホスト通信プロトコルチップ６４Ａは、この後このリードデータを対応するホスト計算機２Ａに送信する（ＳＰ１０６）。さらに０系のホスト通信プロトコルチップ６４Ａは、かかるホスト計算機２Ａへのリードデータの転送を完了すると、自系のローカルメモリ１４Ａに完了情報を格納する。（ＳＰ１０７）。
【０１５９】
この後、０系のホスト通信プロトコルチップ６４Ａは完了情報を１系のローカルメモリ１４Ｂにコピーし（ＳＰ１０８）、ローカルメモリ１４Ｂをモニタリングしているマイクロプロセッサ１５Ｂは、この完了情報がローカルメモリ１４Ｂによって完了処理が実行される（ＳＰ１０９）。
【０１６０】
一方、０系のホスト通信プロトコルチップ６４Ａは、上述のステップＳＰ３１の判断において肯定結果を得たときには、図２３に示すステップＳＰ１１０〜ＳＰ１２２を図１7について上述したステップＳＰ４５〜ステップＳＰ５７と同様に処理する。
【０１６１】
なお、ここでは０系のコントローラ６２Ａがホスト計算機２Ａからのリードコマンドを受信した場合について説明したが、１系のコントローラ６Ｂがホスト計算機２Ｂからのリードコマンドを受信した場合も同様である。
【０１６２】
以上のように本実施の形態による記憶システム６０では、０系及び１系のコントローラ６２Ａ，６Ｂ間において、ローカルメモリ１４Ａ，１４Ｂを経由して必要な情報のやり取りを行なうため、０系のコントローラ６２Ａ内のホスト通信プロトコルチップ６４ＡがマルチＣＰＵサポート機能を備えていない場合であっても０系及び１系のコントローラ６２Ａ，６Ｂ間でライトコマンドやリードコマンドをやり取りすることができ、処理の高速化が図れる。
【０１６３】
さらに記憶システム６０では、例えば１系のプロセッサ１５Ｂが担当する論理ユニットを対象とするライトコマンドやリードコマンドがホスト計算機２Ａから０系のコントローラ６２Ａに与えられ、他系（１系）の担当するＬＵに対するコマンドである場合、ＤＭＡリスト５０等の作成は１系のコントローラ６Ｂ側において行ない、０系のコントローラ６Ａ内のプロセッサ１５Ａは自系のホスト通信プロトコルチップ６４Ａの起動のみを行なうように構成しているため、コマンド転送元、すなわちホスト計算機２Ａからかかるライトコマンドやリードコマンドを受信した側のマイクロプロセッサ１５Ａの処理負担を軽減することが可能となる。
【０１６４】
次に本発明のさらに他の実施形態について説明する。この実施形態では、図２４及び図２５を用いて、プロセッサ１５Ａ，１５Ｂ上で動作するマイクロプログラムの交換処理について説明する。図１で説明した実施形態によれば、記憶システムはそれぞれコントローラを備える複数の記憶サブシステム６Ａ，６Ｂを備え、コマンドをコントローラ間で転送ることができるために、第１のプロセッサのマイクロプログラムを交換する際に第２のマイクロプロセッサが第１のマイクロプロセッサを代行することによりホスト計算機からのＩＯを継続することが可能となる。図２４は、マイクロプログラムの交換前の処理プロセス、図２５は交換後の処理のプロセスを示す。なお、図２４及び図２５においても、Ｘコア及びＹコア特別することなく、両コアを纏めてプロセッサとして説明している。既述の他の実施形態でも同様であるが、マイクロプロセッサとしてシングルコアのプロセッサが本発明の範囲から排除されるものではない。
【０１６５】
始めに、マイクロプロセッサ１５Ａは、マイクロプログラム（以下、単に「マイクロ」と略記することがある。）の交換指示を受領する（Ｓ１５ａ−１）。この指示は、ＭＰ１５ＡがＩＯコマンドを送信するホスト計算機１０００から受領する方式としてもよいし、ホスト計算機１０００とは別にコントローラ６Ａに接続される管理用計算機等から受領する方式としてもよい。
【０１６６】
マイクロの交換指示を受領したプロセッサ１５Ａは、ローカルメモリ１４Ａ内の自コントローラ受領格納領域４０Ａ（図４）内のコマンドキュー２０２（図２）に格納されたコマンドのジョブの生成を停止する（Ｓ１５ａ−２）。図２の受領キュー２００はホスト計算機２Ａから送信され、コマンド解析がなされる前にローカルメモリ１４Ａに格納されるコマンドが格納されるキューを示し、コマンドキュー２０２はコマンド解析されて内部で実行されるべきコマンドが格納されるキューを示し、送信キューは内部処理が実行された後のホスト計算機１０００に送信するコマンドが格納されるキューを示す。図２に送信キューは示されていない。これら各キューは、図４に示す自系コントローラコマンド格納領域４０Ａの制御情報格納領域４０ＡＸ（Ｘコア用４０ＡＸＸ,Ｙコア用４０ＡＸＹ）に設定される。
【０１６７】
受領キューに格納されたコマンドは、解析の後コマンドキューに格納され、内部処理実行の後送信キューに格納される。Ｓ１５ａ−２にてコマンドキュー３７２０に格納されたコマンドのジョブ生成は停止するが、ジョブ生成した処理については処理が行われる（Ｓ１５ａ−３）。また、受領キュー、送信キューは夫々停止することなく実行される（Ｓ１５ａ−４）。受領キューを実行する構成とすることで、ホスト計算機からのコマンドを継続的に受領することができる。
【０１６８】
受領キュー、送信キューの実行を繰り返し、送信キューに格納されたコマンドが全て実行されたときに（Ｓ１５ａ−５）、０系のプロセッサ１５Ａから１系のホスト通信プロトコルにプロセッサ２１Ｂが担当する全論理ユニットを、プロセッサ１５Ｂに切り替える旨をホスト計算機に通知する通信を発行し、１系のホスト通信プロトコルチップ２１ＢにＬＵ切り替えを指示する（Ｓ１５ａ−６）。
【０１６９】
この後、プロセッサ１５Ａはホスト通信プロトコルチップ２１ＢにホストからのＩＯを停止させる旨通知し（Ｓ１５ａ−７）、この後にＩＯ割り振り設定の変更を行う（Ｓ１５ａ−８）。ＩＯ割り振り設定の変更は、例えばプロセッサ１５Ａによって全ての論理ユニットを担当するプロセッサを１５Ｂとするように論理ユニット／プロセッサ対応付けテーブル(図６)を更新し、この後ホストプロトコルチップ２１Ａが更新された論理ユニット／プロセッサ対応付けテーブルを参照し、内部設定を変更することによる。
【０１７０】
この後、ホスト通信プロトコルチップはＩＯ停止を解除し、ホスト計算機２Ａからのコマンドの受領を開始する。一方、ＬＵ切り替え指示を受領したホスト通信プロトコルチップ２１Ｂは、ＩＯを停止し（Ｓ１５ａ−１０）、既述の説明と同様の手順でＩＯ振り分け設定を変更し（Ｓ１５ａ−１１）、ＩＯ受領停止の解除を行なう（Ｓ１５Ａ−１１Ａ）。なお、Ｓ１５ａ−７とＳ１５ａ−８との間、即ちＩＯ受領が停止されている間にホスト計算機２Ａから送信されたコマンドは、例えばホスト計算機２Ａによるタイムアウト検出等によって再送される構成をとることができる。再度ホスト計算機２Ａから再送されたコマンド（図２４のコマンド（１１））は、０系のローカルメモリ１４Ａ内の制御情報格納領域(図４)の受領キューに格納されること無く１系のローカルメモリ１４Ｂ内の制御情報格納領域内の受領キューに格納される。この後、プロセッサ１５Ｂは、制御情報格納領域内の受領キューからコマンドキューにキューイングしないように指示する（Ｓ１５ａ−１２）。データの順序性が入れ替わることによる整合性矛盾・データ破壊を防ぐためである。
【０１７１】
Ｓ１５ａ−９が終了した後、プロセッサ１５Ａは、ジョブの生成を停止していたローカルメモリ（ＬＭ）１４Ａ内の自系コントローラコマンド格納領域３７１０内のコマンドキューのコマンドをＬＭ１４Ｂ内の実行処理格納領域のコマンドキューに転送する（Ｓ１５ａ−１３）。
【０１７２】
プロセッサ１５ＢはＳ１５ａ−１３にて転送されたコマンドキューを自コントローラ受領格納領域内の制御情報格納領域内のコマンドキューにコピーした後、ホスト計算機２Ａに対してＩＯを再開する（Ｓ１５ａ−１４）。この後、ホスト通信プロトコルチップ２１Ａは自身にとってマイクロ交換が可能である状態にあることをプロセッサ１５Ａに通知し（Ｓ１５ａ−１５）、Ｓ１５ａ−１３の処理を完了したプロセッサ１５Ａはマイクロ交換を開始する（Ｓ１５ａ−１６）。
【０１７３】
上記の処理を行うことで、マイクロ交換処理中にも、ホスト計算機２Ａは、コントローラ６Ａからコントローラ６Ｂにホストパス変更などの処理を行うことなくコマンド発行を継続して行うことができる。これは、Ｓ１５ａ−１０の処理の後は、上述のコントローラ間ライト／リードコマンド中継処理と同様に、ホスト通信プロトコルチップ２１Ａによって論理ユニット／プロセッサ対応付けテーブル、ローカルメモリアドレス情報テーブルが参照されることで、コントローラ６Ａ、6Ｂ間のコントローラ通信にプロセッサ１５Ａが介入することなく実行される為である。
【０１７４】
次に、図２５を用いて、マイクロ交換終了後に、マイクロ交換前に論理ユニットの担当を戻す処理について説明する。マイクロ交換が完了した際、プロセッサ１５Ａは交換完了をプロセッサ１５Ｂに通知する（Ｓ１５ｂ−１，Ｓ１５ｂ−２）。通知を受領したプロセッサ１５Ｂは、コマンドキューについてはジョブ生成されたもののみ起動要求し、それ以外のものはジョブ生成を行わない（Ｓ１５ｂ−３）。受信キュー、送信キューについては実行をくり返し（Ｓ１５−４）、送信キューに残りがなくなった場合に（Ｓ１５ｂ−５）、プロセッサ１５Ｂがホスト通信プロトコルチップ２１Ａに通信を発行し、ＬＵ切り替えを行うよう指令を発行する（Ｓ１５ｂ−６）。
【０１７５】
この後、プロセッサ１５Ｂはホスト通信プロトコルチップ２１Ｂに対して、ホストＩＯを停止するよう指示し、この後ＩＯ割り振り設定の変更（マイクロ交換前のＳ１５ａ−８の処理と同様の手順でＬＵを担当するプロセッサを、マイクロ交換前の状態に戻す変更）を行い、当該ＩＯ割り振り設定変更が完了したらホスト通信プロトコルチップ２１ＢはＩＯ停止を解除する（Ｓ１５ｂ−７〜Ｓ１５ｂ−９）。
【０１７６】
一方、ＬＵ切り替えを実行するよう通知されたホスト通信プロトコルチップ３１０１は、ＩＯを停止し、上述のＳ１５ａ−１１と同様にＩＯ割り振り設定を変更する（Ｓ１５ｂ−９Ａ，Ｓ１５ｂ−９Ｂ）。また、ホスト計算機２ＡはＳ１５ｂ−７〜Ｓ１５ｂ−９の間に送信したがＩＯ停止のために応答されなかったコマンド２０を再発行する。このコマンドはローカルメモリ１４Ｂ内の自コントローラ受領格納領域内制御情報格納領域の受領キューに格納されず、０系のローカルメモリ１４Ａの自コントローラ受領領域内の受領キューに格納される。
【０１７７】
ここで、プロセッサ１５Ａは、当該コマンド２０の実行を停止し（Ｓ１５ｂ−１３）、１系ローカルメモリ１４Ｂの自コントローラ領域の制御情報格納領域内のコマンドキューを０系ローカルメモリの他コントローラ受領格納領域内の実行処理格納領域内のコマンドキューにコピーし、この後、他コントローラ受領コマンド格納領域内の制御情報格納領域内のコマンドキューにコピーされる（Ｓ１５ｂ−１４）。０系のコントローラから１系のコントローラに、１系のコントローラのローカルメモリ内のコマンドキューが全てコピーされた通知を受けて、プロセッサ１５Ａは他系コントローラ受領格納領域内の制御情報格納領域内の受領キュー内のコマンド２０を実行し、このコマンド２０は実行後、コマンドキューに格納される。この後ホスト通信プロトコルチップ２１ＡはＩＯ停止を解除する（Ｓ１５ｂ−１４Ａ）。また、ホスト通信プロトコルチップ２１Ｂはプロセッサ１５１５Ａに切り替え完了を報告し（Ｓ１５ｂ−１５）、マイクロ交換処理が終了する（Ｓ１５ｂ−１６）。１系のコントローラにおいても同様にマイクロ交換される。
【０１７８】
本処理においては、ホスト通信プロトコルチップにおけるＩＯ割振り設定処理の間以外にはＩＯを停止せずに、プロセッサ１５Ａのマイクロプログラム交換を実行することができる。また、ホスト計算機２Ａと０系のコントローラ６Ａとの接続経路を、１系のコントローラ６Ｂに切り替えるといった切り替え処理を行う必要がない。この為、例えばホスト計算機２Ａ上でパス切り替えソフトウェアを動作させてコントローラとホスト計算機２Ａとの経路を変更してプロセッサ１５Ａのマイクロプログラムを交換する方法に比較して、ホスト計算機２Ａにパス切り替えソフトウェアの動作に掛かる処理負荷を低減する効果を奏する。
【０１７９】
本発明のさらに他の実施形態を示したものである。図２６及び図２７はそれぞれ本発明の０系コントローラと１系コントローラとを有する記憶システムをメインサイトとし、別の０系コントローラと１系コントローラとを有する記憶システムをリモートサイトとしたリモートコピーシステムに係わるものである。図２６及び図２７は、メインサイトの０系コントローラからのポート０Ｂからのリモートサイトの０系コントローラのポート０Ｄへのパスが障害によって閉塞している際に、ホスト計算機からメインサイトに送られたライトコマンドをリモートサイトに閉塞していないパスを経由して転送することを示している。
【０１８０】
図２６において、メインサイト２６００は０系のコントローラ６Ａと１系のコントローラ６Ｂとからなり、リモートサイト２６０２は、０系のコントローラ６Ｃと１系のコントローラ６Ｄとから構成される。メインサイトはローカルサイトともいう。また、他の図説においても同様であるが。“０系”及び“１系”とは、二つのコントローラを区別するために付された符号である。一方の系が自系のコントローラとすると他方の系が他系のコントローラとなる。図２６の実施形態では、ホスト通信プロトコルチップ２１Ａは、マルチＣＰＵ機能を備えており、自身のホスト通信プロトコルチップが他系のホスト通信プロトコルチップ２１Ｂに働きかけてリモートサイトのコントローラにホスト計算機２Ａからのライトコマンドやライトデータを転送することができる。
【０１８１】
コントローラ６Ａの処理動作を説明する。コントローラ６Ａのポート０Ｂとリモートサイト側コントローラ６Ｃとの間のパス２６０２は閉塞している。そこで、メインサイト側コントローラ６Ａは他のパスを使用してリモートサイト側コントローラ６Ｄのパス０Ｄにコマンドやデータを送信しなければならない。
【０１８２】
コントローラ６Ａはホスト計算機２Ａからコマンド及びライトデータをポート０Ａに受領する(Ｓ２６００)。コントローラ６Ａのホストプロトコルチップ２１Ａはローカルメモリ１４Ａの受領キュー（完了Queue）にコマンドを格納する（Ｓ２６０２）。マイクロプロセッサ１５Ａはコマンドキュー（CMD  Queue）にコマンドを格納し(Ｓ２６０４)、指定された論理ユニットにライト処理のジョブ２６１２を実行する。この過程で、マイクロプロセッサ１５Ａはライトデータをキャッシュメモリ１２Ａ及び１２Ｂに二重書きする。
【０１８３】
次いで、マイクロプロセッサ１５Ａは、ローカルメモリ１４ＡのＣＴＬ１（６Ｂ）用起動キュー２６１４にコマンドを格納する（Ｓ２６０６）。この起動キューは先に既述されたダミーキューに用途を持たせたものである。ダミーキューとは、自系のコントローラに対するコマンドを格納するキューではなく、他系のコントローラに対するコマンドを格納するキューである。
【０１８４】
ホスト通信プロトコルチップ２１Ａが、一つのＣＰＵによってＳ２６０２に示すコマンドの格納処理を行いながら、他のＣＰＵによって起動キューのコマンドを、コントローラ間通信経路５を介して他系のコントローラ６Ｂに送信し、他系のホスト通信プロトコルチップ２１Ｂに起動をかけてこのプロトコルチップ２１Ｂからリモートサイトのコントローラにコマンドを送信する。パス２６０２は閉塞しているため、ホスト通信プロトコルチップ２１Ａは、ホスト通信プロトコルチップ２１Ｂを介して閉塞していないパス２６０４を介してコマンドをリモートサイト側のコントローラ６Ｄに送信する(Ｓ２６０８)。
【０１８５】
パス２６０４はメインサイト側のコントローラ６Ｂのポート０Ｄとリモートサイト側のコントローラ６Ｄのポート０Ｄ間に形成され閉塞されていない。これによりホスト計算機２Ａからコントローラ６Ａに送られたライトコマンドがリモートサイト側に無事転送される。次いで、メインサイト側のコントローラ６Ｂのホスト通信プロトコルチップ２１Ｂは、キャッシュアドレスとレングスに基づいて、キャッシュメモリ１２Ｂのライトデータをリモートサイト側コントローラ６Ｄに送り、リモートサイト６Ｄ側のマイクロプロセッサはライトデータをキャッシュメモリ１２Ｄにライトし、ライトコマンドに基づいてライトデータをライトコマンドでのライト先論理ユニットにライトする。
【０１８６】
以上により、メインサイトからリモートサイトにリモートコピーされる。このように、メインサイト側の０系のコントローラのダミーキューを利用することにより、同サイト側の１系のコントローラに０系コントローラにホスト計算機から送信されたコマンドを転送し、かつ１系のポートを利用して他の記憶制御システムに同コマンドを送ることができる。従来データコピーに使用しているパスが閉塞した場合、生きているパスを利用してデータコピーを継続していた。この時、閉塞されたパスのポートにマッピングされたボリュームを生きているパスのポートに対してマッピングされたボリュームに切り替えて、リモートコピーを継続しなければならない。しかしながら、図２６実施形態では、パス閉塞中でもこのような論理ボリュームの切り替えをすることなくリモートコピーを継続することができる。
【０１８７】
次に、図２７の実施形態について説明する。この実施形態が図２６の実施形態と異なる点はメインサイト側のコントローラ６Ａのホスト通信プロトコルチップ２１ＡがマルチＣＰＵ機能を備えていない点である。したがって、コントローラ６Ａのホスト通信プロトコルチップ２１Ａがコントローラ６Ｂのホストプロトコルチップ２１Ｂに起動を掛けることができない。そこで、０系のコントローラ６Ａのマイクロプロセッサ１５Ａがローカルメモリ１４Ａの起動キュー２６１４のコマンドを１系のコントローラ６Ｂに送り、マイクロプロセッサ６Ｂがこのコマンドを自身の起動キュー２６２６にコピーする（Ｓ２６２０）。次いで、コントローラ６Ｂのホストプロトコル通信チップ２１Ｂは起動キュー２６２６に格納されたコマンドをポート０Ｄからリモートサイト側のコントローラ６Ｄのポート０Ｄにパス２６０４を介して送信する(Ｓ２６２２)。そして、ホスト通信プロトコルチップ２１Ａは、キャッシュアドレスとレングスからキャッシュメモリ１２Ｂからライトデータをリモートサイト側に転送する(Ｓ２６２４)。
【０１８８】
なお既述の実施の形態においては、０系及び１系のコントローラ６Ａ，６２Ａ，６Ｂのホスト通信制御部１０Ａ，６２Ａ，１０Ｂとして、それぞれホスト計算機２Ａ，２Ｂとの間で同じ通信プロトコルに従った通信を行なうホスト通信制御部１０Ａ，６３Ａ，１０Ｂを適用するようにした場合について述べたが、本発明はこれに限らず、例えば０系のコントローラ６Ａ，６２Ａ側にはホスト計算機２Ａとの間でＦＣプロトコルに従った通信を行うマルチマイクロプロセッサ機能を備えるホスト通信制御部を適用し、１系のコントローラ６Ｂ側にはホスト計算機２Ｂとの間でｉＳＣＳＩプロトコルに従った通信を行なうシングルマイクロプロセッサ機能を備えるホスト通信制御部を適用するようにしても良い。
【０１８９】
また、既述の実施の形態においては、本発明を、ホスト計算機２Ａ，２Ｂ及び記憶制御装置３，６１間を直接接続された記憶システム１，６０に適用するようにした場合について述べたが、本発明はこれに限らず、これらホスト計算機２Ａ，２Ｂ及び記憶制御装置３，６１間がＳＡＮ（Storage Area Network）又はＬＡＮ（Local Area Network）などのネットワークを介して接続された記憶システムにも本発明を広く適用することができる。
【０１９０】
さらに既述の実施の形態においては、記憶システム１，６０を構成する記憶装置４Ａ〜４Ｄが４台である場合について述べたが、本発明はこれに限らず、記憶装置４Ａ〜４Ｄの数としてはこれ以外の数を設けるようにしても良い。
【０１９１】
さらに、既述の実施の形態においては、０系及び１系のコントローラ１０Ａ，６２Ａ，１０Ｂを同一構成とするようにした場合について述べたが、本発明はこれに限らず、これら０系及び１系のコントローラ１０Ａ，６２Ａ，１０Ｂを異なる構成とするようにしても良い。
【０１９２】
さらに、既述の実施の形態においては、０系及び１系のコントローラ６Ａ，６２Ａ，６Ｂにそれぞれホスト通信制御部１０Ａ，６３Ａ，１０Ｂを１つずつ設けるようにした場合について述べたが、本発明はこれに限らず、かかるホスト通信制御部１０Ａ，６３Ａ，１０Ｂを複数設けるようにしても良い。
【図面の簡単な説明】
【０１９３】
【図１】本発明に係わる記憶サブシステムの一実施形態を備えた記憶システムの構成を示すブロック図である。
【図２】図１における自系コントローラを中心としたマイクロプロセッサとキューメモリとの間の処理動作を示すブロック図であって、プロセッサの各コアについての処理動作を説明したブロック図である。
【図３】（Ａ）は、０系及び１系のマイクロプロセッサが認識するメモリ空間の一例を示す図表であり、（Ｂ）は、０系及び１系のホスト通信プロトコルチップ１０Ａ，１０Ｂがそれぞれ認識するメモリ空間の一例を示す図表である。
【図４】（Ａ）は、０系のローカルメモリのメモリ構成を示す概念図であり、（Ｂ）は、１系のローカルメモリのメモリ構成を示す概念図である。
【図５】（Ａ）は、０系のキャッシュメモリのメモリ構成を示す概念図であり、（Ｂ）は、１系のキャッシュメモリのメモリ構成を示す概念図である。
【図６】論理ユニット／プロセッサ対応付けテーブルの構成を示す概念図である。
【図７】０系コントローラの各コアと１系コントローラの各コアと複数の論理ユニットとの対応関係を示すブロック図である。
【図８】ローカルメモリ情報テーブルの構成を示す概念図である。
【図９】キャッシュメモリ情報テーブルの構成を示す概念図である。
【図１０】第１の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するブロック図である。
【図１１】第１の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するフローチャートである。
【図１２】第１の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するフローチャートである。
【図１３】０系コントローラと１系コントローラと間における、キューを介したコマンドの転送動作を示すブロック図である。
【図１４】図１３とは他の実施形態に係わるブロック図である。
【図１５】第１の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するブロック図である。
【図１６】第１の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するフローチャートである。
【図１７】第１の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するフローチャートである。
【図１８】第２の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するブロック図である。
【図１９】第２の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するフローチャートである。
【図２０】第２の実施の形態の記憶システムにおけるライトコマンド処理の説明に供するフローチャートである。
【図２１】第２の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するブロック図である。
【図２２】第２の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するフローチャートである。
【図２３】第２の実施の形態の記憶システムにおけるリードコマンド処理の説明に供するフローチャートである。
【図２４】図１の記憶システムにおいて０系のマイクロプロセッサのマイクロプログラムの交換する処理を説明するタイミングチャートである。
【図２５】図２４のタイミングチャートに続く処理を説明するためのタイミングチャートである。
【図２６】本発明に係わる記憶サブシステムを利用したリモートコピーシステムの実施形態を示すブロック図である。
【図２７】リモートコピーシステムの第２の実施形態を示すブロック図である。
【符号の説明】
【０１９４】
１、６０……記憶システム、２Ａ，２Ｂ……ホスト計算機、３……記憶制御装置、４Ａ〜４Ｄ……記憶装置、５……コントローラ間接続経路、６Ａ，６Ｂ，６２Ａ……コントローラ、１０Ａ，１０Ｂ，６３Ａ……ホスト通信制御部、１１Ａ，１１Ｂ……データ転送制御部、１２Ａ，１２Ｂ……キャッシュメモリ、１４Ａ，１４Ｂ……ローカルメモリ、１５Ａ，１５Ｂ……マイクロプロセッサ、１５ＡＸ……Ｘコア、１５ＡＹ……Ｙコア、２１Ａ，２１Ｂ，６４Ａ……ホスト通信プロトコルチップ、４０Ａ，４０Ｂ……自系コントローラ受信コマンド格納領域、４０ＡＸ，４０ＢＸ，４１ＡＸ，４１ＢＸ……制御情報格納領域、４１ＡＹ，４１ＢＹ……実行処理格納領域、４１Ａ，４１Ｂ……他系コントローラ受信コマンド格納領域、４２Ａ，４２Ｂ……共有領域、４３Ａ，４３Ｂ……論理ユニット／プロセッサ対応付けテーブル、４４Ａ，４４Ｂ……ローカルメモリ情報テーブル、４５Ａ，４５Ｂ‥‥キャッシュメモリ情報テーブル、５０Ａ，５０Ｂ……自系プロセッサ領域、５１Ａ，５１Ｂ……他系プロセッサ領域。
【図１】
2008134775.tif 000003
【図２】
2008134775.tif 000004
【図３】
2008134775.tif 000005
【図４】
2008134775.tif 000006
【図５】
2008134775.tif 000007
【図６】
2008134775.tif 000008
【図７】
2008134775.tif 000009
【図８】
2008134775.tif 000010
【図９】
2008134775.tif 000011
【図１０】
2008134775.tif 000012
【図１１】
2008134775.tif 000013
【図１２】
2008134775.tif 000014
【図１３】
2008134775.tif 000015
【図１４】
2008134775.tif 000016
【図１５】
2008134775.tif 000017
【図１６】
2008134775.tif 000018
【図１７】
2008134775.tif 000019
【図１８】
2008134775.tif 000020
【図１９】
2008134775.tif 000021
【図２０】
2008134775.tif 000022
【図２１】
2008134775.tif 000023
【図２２】
2008134775.tif 000024
【図２３】
2008134775.tif 000025
【図２４】
2008134775.tif 000026
【図２５】
2008134775.tif 000027
【図２６】
2008134775.tif 000028
【図２７】
2008134775.tif 000029