(57)【要約】【課題】データのライト完了を検知する機能を有したストレージシステムの処理速度が低下しないようにする。【解決手段】コントローラ部が、一以上のプロセッサ部と、一以上の記憶資源と、プロセッサ部及び記憶資源に接続された一以上の転送制御部とを有する。転送制御部は、受信部と送信部とを有する。受信部が、プロセッサ部からライトパケットを受信し、そのライトパケットに特定のコードを含めて送信する。送信部が、ライトパケットを受信した場合、受信したライトパケットが特定のコードを含んでいれば、そのライトパケット内のライト対象のデータをライト先の記憶資源にライトした後に、ライトの完了を表す応答である応答パケットを生成し、生成した応答パケットを送信する。（選択図：図１）
2011523109.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置と、
前記複数の記憶装置に接続されたコントローラ部と
を備え、
前記コントローラ部は、
ライトパケットを送信する一以上のプロセッサ部と、
一以上の記憶資源と、
前記プロセッサ部及び前記記憶資源に接続された一以上の転送制御部と
を有し、
前記転送制御部は、受信部と送信部とを有し、
（１−１）前記受信部が、プロセッサ部からライトパケットを受信し、そのライトパケットを基に、下記（１−Ａ）乃至（１−Ｄ）を有するライトパケットを送信し、
（１−Ａ）ライトを意味するコードであるライトコード；
（１−Ｂ）特定のコード；
（１−Ｃ）ライト対象のデータ；
（１−Ｄ）ライト先の記憶資源を表す宛先情報；
（１−２）前記送信部は、ライトパケットを受信した場合、受信したライトパケットが、前記特定のコードを含んでいれば、前記受信したライトパケット内の前記ライト対象のデータをそのパケット内の前記宛先情報が表す記憶資源にライトした後に、ライトの完了を表す応答に相当するパケットである応答パケットを生成し、前記生成した応答パケットを送信する、
ストレージシステム。
【請求項２】
前記コントローラ部は、複数のコントローラ（３０，６０）で構成されており、
前記複数のコントローラが、直列に接続されており、コントローラ間では、PCI-Express（PCI-EX）規格に従う通信が行われ、
各コントローラは、
パケットの転送を制御する転送制御部（１９，３９）と、
前記転送制御部に接続されている記憶装置インタフェース部（１５Ａ、１５Ｂ，３５Ａ，３５Ｂ）と、
前記転送制御部に接続されているプロセッサ部（１１，３１）と
を備え、
前記プロセッサ部は、マイクロプロセッサ（１４，３４）と、ローカルメモリ（１２，３２）とを有し、
前記記憶資源は、キャッシュメモリ（１３，３３）と、前記ローカルメモリとを含んだ資源であり、
前記キャッシュメモリは、前記転送制御部に接続されており、
前記記憶装置インタフェース部は、前記複数の記憶装置（４０Ａ，４０Ｂ，４０Ｃ，４０Ｄ）のうちの少なくとも一つに接続されており、
前記複数のコントローラのうちの少なくとも一つが、外部装置（１Ａ、１Ｂ，１Ｃ，１Ｄ，２１Ａ，２１Ｂ，２１Ｃ，２１Ｄ）からＩ／Ｏコマンドを受け付ける外部装置インタフェース部（９Ａ，９Ｂ，２９Ａ，２９Ｂ）を有し、前記外部インタフェース部は、その外部装置インタフェース部を有するコントローラ内の前記転送制御部に接続されており、
前記転送制御部は、複数のPCI-EX制御部（４１，４３，４５，５９，６１，６３）と、前記キャッシュメモリに接続されるメモリ制御部（５５，６５）とを有し、各PCI-EX制御部は、前記外部装置インタフェース部、前記記憶装置インタフェース部、前記プロセッサ部、及び、隣のコントローラ内の前記転送制御部のうちのいずれかに接続されており、
前記複数のPCI-EX制御部のうち、少なくとも、前記プロセッサ部に接続されているPCI-EX制御部である第一のPCI-EX制御部と、他のコントローラに接続されている第二のPCI-EX制御部とが、受信部（４１Ａ，４５Ａ，５９Ａ，６１Ａ）及び送信部（４１Ｂ，４５Ｂ，５９Ｂ，６１Ｂ）を有し、
前記ライトパケットは、Postedパケットであり、
前記応答パケットは、ライトコードを含んだPostedパケットである応答ライトパケットであり、
送信元のプロセッサ部（１１）を有するコントローラである第一のコントローラ（３０）において、前記（１−１）として、下記（２−１）及び（２−２）の処理が行なわれ、
（２−１）前記第一のPCI-EX制御部（４１）が有する前記受信部（４１Ａ）が、前記マイクロプロセッサ（１４）から、下記（２−Ａ）乃至（２−Ｄ）を有する第一種のライトパケットを受信し、
（２−Ａ）前記（１−Ａ）；
（２−Ｂ）送信元を表すＩＤであるリクエスタＩＤ；
（２−Ｃ）前記（１−Ｃ）；
（２−Ｄ）前記（１−Ｄ）；
（２−２）前記受信部（４１Ａ）が、前記第一種のライトパケットを受信し、前記受信した第一種のライトパケットを第二種のライトパケットに変換し、前記第二種のライトパケットを送信し、
（２−３）前記ライト先の記憶資源を有するコントローラである第二のコントローラに直接的又は間接的に接続されている前記第二のPCI-EX制御部（４５）が有する前記送信部（４５Ｂ）が、前記第二種のライトパケットを受信し、前記第二種のライトパケットを送信し、
前記第二種のライトパケットは、前記リクエスタＩＤを記録可能な範囲のフィールドに、前記リクエスタＩＤに代えて、前記（１−Ｂ）である特定のコードと、前記リクエスタＩＤに対応するソースＩＤとが記入されたライトパケットであり、
前記第二のコントローラにおいて、前記（１−２）として、下記（２−４）及び（２−５）の処理が行なわれ、
（２−４）前記第二のPCI-EX制御部（６１）が有する前記受信部（６１Ａ）が、前記（２−３）で送信された前記第二種のライトパケットを、前記第一のコントローラから直接的に、又は、前記第一のコントローラに接続されているコントローラ内の前記第二のPCI-EX制御部を通じて受信し、前記受信した第二種のライトパケットを送信し、送信された第二種のライトパケットは、前記ライト先の記憶資源がキャッシュメモリ（３３）であれば前記メモリ制御部（６５）に到達し、前記ライト先の記憶資源がローカルメモリ（３２）であれば前記第一のPCI-EX制御部（５９）に到達し、
（２−５）前記第二種のライトパケットを受信した前記メモリ制御部（６５）、又は、前記第一のPCI-EX制御部（５９）が有する前記送信部（５９Ｂ）は、前記受信した第二種のライトパケットが、ライトコードを含んだライトパケットであって、前記特定のコードを含んでいれば、前記受信した第二種のライトパケット内の前記ライト対象のデータをその第二種のライトパケット内の前記宛先情報が表すキャッシュメモリ又はローカルメモリにライトした後に、ライトの完了を表すパケットとしてライトコードを含んだPostedパケットである前記応答ライトパケットを生成し、前記生成した応答ライトパケットを送信し、
前記（２−５）で送信された応答ライトパケットは、前記第二種のライトパケットが流れた経路を通って、前記第一のコントローラ（３０）内の前記転送制御部（１９）における前記第一のPCI-EX制御部（４１）が有する前記受信部（４１Ａ）に到達し、その受信部が、ライトの完了を表す応答ライトパケットを受信した場合に、ライト完了報告処理を行うことで、前記マイクロプロセッサ（１４）が、ライトの完了を検知する、
請求項１記載のストレージシステム。
【請求項３】
前記マイクロプロセッサは、第一のライト保証機能を指定する場合には、第一のアドレス範囲に属するアドレスを前記第一種のライトパケットに含め、第二のライト保証機能を指定する場合には、前記第一のアドレス範囲と非重複の第二のアドレス範囲に属するアドレスを前記第一種のライトパケットに含め、
前記（２−２）において、前記第一のPCI-EX制御部が有する前記受信部が、前記第一種のライトパケットに、前記第一のアドレス範囲に属するアドレスが含まれていれば、前記特定のコードとして第一の特定のコードを含め、前記第二のアドレス範囲に属するアドレスが含まれていれば、前記特定のコードとして第二の特定のコードを含め、
前記（２−５）において、前記メモリ制御部、又は、前記第一のPCI-EX制御部が有する送信部は、
（３−１）前記特定のコードが、第一の特定のコードであれば、前記ライト対象のデータのライトが終了した場合に、ライトの完了を表す前記応答ライトパケットを生成し、
（３−２）前記特定のコードが、第二の特定のコードであれば、前記ライト対象のデータのライトが終了したら、前記ライト対象のデータを、ライト先からリードし、リードされたデータと、前記ライト対象のデータとを比較し、それらのデータの一致が得られた場合に、ライトの完了を表す前記応答ライトパケットを生成する、
請求項２記載のストレージシステム。
【請求項４】
前記応答ライトパケットを受信した、前記第一のコントローラ内の前記第一のPCI-EX制御部が有する前記受信部が、前記ライト完了報告処理として、自分が有するレジスタに、ライト完了を示すライト完了情報を書き、
前記第一のコントローラ内の前記プロセッサ部が有する前記マイクロプロセッサが、前記第一のPCI-EX制御部が有する前記受信部の前記レジスタから前記ライト完了情報を取得することで、ライトの完了を検知する、
請求項２記載のストレージシステム。
【請求項５】
前記応答ライトパケットを受信した、前記第一のコントローラ内の前記第一のPCI-EX制御部が有する前記受信部が、前記ライト完了報告処理として、前記プロセッサ部が有する前記ローカルメモリに、ライト完了を示すライト完了情報を書き、
前記第一のコントローラ内の前記プロセッサ部が有する前記マイクロプロセッサが、前記ローカルメモリから前記ライト完了情報を取得することで、ライトの完了を検知する、
請求項２記載のストレージシステム。
【請求項６】
前記応答ライトパケットを受信した、前記第一のコントローラ内の前記第一のPCI-EX制御部が有する前記受信部が、前記ライト完了報告処理として、前記プロセッサ部が有する前記マイクロプロセッサに、割込み信号を出力し、
前記マイクロプロセッサが、前記割込み信号を受けたことにより、ライトの完了を検知する、
請求項２記載のストレージシステム。
【請求項７】
前記（２−５）において、前記メモリ制御部、又は、前記第一のPCI-EX制御部が有する送信部は、前記ライト対象のデータのライトが終了したら、前記ライト対象のデータを、ライト先からリードし、リードされたデータであるリードデータを含んだ前記応答ライトパケットを生成し、
前記応答ライトパケットを受信した、前記第一のコントローラ内の前記第一のPCI-EX制御部が有する前記受信部が、前記ライト完了報告処理として、その応答ライトパケット内のリードデータを、前記プロセッサ部が有する前記ローカルメモリに書き込み、
前記第一のコントローラ内の前記プロセッサ部が有する前記マイクロプロセッサが、前記ローカルメモリから前記リードデータを取得する、
請求項２又は３記載のストレージシステム。
【請求項８】
前記第一のコントローラが外部装置からライトコマンドを受け付けた場合、前記第一のコントローラ内の前記マイクロプロセッサが、前記ライトコマンドで指定されている論理ボリュームの基になっている記憶装置が接続されている前記第二のコントローラ内の前記キャッシュメモリを宛先とした前記第一種のライトパケットを発行し、
前記（２−５）において、前記発行されたライトパケットに含まれている、前記ライトコマンドに従うライト対象のデータが、前記第二のコントローラ内の前記キャッシュメモリに書き込まれる、
請求項２乃至７のうちのいずれかに記載のストレージシステム。
【請求項９】
前記（１−１）において、前記受信部は、前記特定のコードとして、第一の特定のコードと第二の特定のコードのいずれかをライトパケットに含め、
前記（１−２）において、前記送信部は、
（９−１）前記特定のコードが、第一の特定のコードであれば、前記ライト対象のデータのライトが終了した場合に、ライトの完了を表す応答パケットを生成し、
（９−２）前記特定のコードが、第二の特定のコードであれば、前記ライト対象のデータのライトが終了したら、前記ライト対象のデータを、ライト先からリードし、リードされたデータと、前記ライト対象のデータとを比較し、それらのデータの一致が得られた場合に、ライトの完了を表す応答パケットを生成し、それらのデータの不一致が得られた場合に、ライトの失敗を表す応答パケットを生成する、
請求項１記載のストレージシステム。
【請求項１０】
前記プロセッサ部から送信されるライトパケットは、所定の通信規格に従うフォーマットのパケットであり、
前記受信部が、前記所定の通信規格に従うフォーマットのライトパケットを受けて、そのライトパケットのヘッダにおける特定のフィールドに、前記特定のコードを記入することで、前記特定のコードを有するライトパケットを作成する、
請求項１又は９記載のストレージシステム。
【請求項１１】
前記特定のフィールドは、送信元のＩＤが記入されるフィールドであり、
前記特定のフィールドには、前記送信元のＩＤに代えて、前記特定のコードと、前記送信元ＩＤに対応したＩＤとが記入される、
請求項１０記載のストレージシステム。
【請求項１２】
前記コントローラ部は、複数のコントローラを有し、
各コントローラが、前記プロセッサ部と、前記転送制御部と、前記記憶資源とを有し、
前記（１−１）における前記受信部は、ライトパケットを送信するプロセッサ部に接続されている受信部であり、
前記（１−２）における前記送信部は、前記ライト先の記憶資源に接続されている送信部であり、
他の受信部及び送信部は、前記ライトパケットの転送を行う、
請求項１、９乃至１１のいずれかに記載のストレージシステム。
【請求項１３】
前記ライトパケットは、応答不要型のパケットであり、
前記（１−２）において、前記送信部は、受信したパケットが、応答不要型のパケットであっても、前記ライトコードの他に前記特定のコードを含んでいれば、ライトの完了を表す応答としてのパケットである応答パケットを生成する、
請求項１、９乃至１２のうちのいずれかに記載のストレージシステム。
【請求項１４】
前記応答パケットは、ライトとしての応答不要型のパケットである、
請求項１３記載のストレージシステム。
【請求項１５】
複数の記憶装置とそれら複数の記憶装置に接続されている一以上のコントローラとを備えたストレージシステムで実現される方法であって、
を備え、
前記一以上のコントローラのうちの或るコントローラが、下記（１３−Ａ）乃至（１３−Ｄ）を含んだライトパケットを送信し、
（１３−Ａ）ライトを意味するコードであるライトコード；
（１３−Ｂ）特定のコード；
（１３−Ｃ）ライト対象のデータ；
（１３−Ｄ）ライト先の記憶資源を表す宛先情報；
前記一以上のコントローラのうちの、前記ライト先の記憶資源を有するコントローラが、受信したライトパケットが、前記特定のコードを含んでいれば、前記受信したライトパケット内の前記ライト対象のデータをそのライトパケット内の前記宛先情報が表す記憶資源にライトした後に、ライトの完了を表す応答である応答パケットを生成し、前記生成した応答パケットを送信する、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのライトの完了を検知する機能を有するストレージシステムの制御に関する。
【背景技術】
【０００２】
例えば、特許文献１に開示のメモリ制御装置が知られている。このメモリ制御装置では、処理モジュールと、ブリッジモジュールと、メモリモジュールとが備えられている。処理モジュールに、検証コマンド生成制御部が設けられ、ブリッジモジュールに、検証コマンド応答部が設けられる。検証コマンド生成制御部は、メモリモジュールにライトコマンドを発行して転送を正常終了した後に、ライトコマンドの転送の状態を検証する検証コマンドを発行する。検証コマンド応答部は、ブリッジモジュールが検証コマンドを受信した際に、ライトコマンドの転送に対応して受信しているリプライパケットをリードデータとして応答する。
【０００３】
【特許文献１】特開２００１−２４３２０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、コントローラ部と複数の記憶装置とを備えるストレージシステムが知られている。コントローラ部には、例えば、プロセッサ部と、キャッシュメモリと、プロセッサ部及びキャッシュメモリに接続された転送制御部とが備えられる。プロセッサ部は、例えば、ライト対象のデータをキャッシュメモリに一旦ライトし、キャッシュメモリから記憶装置にライト対象のデータをライトする。
【０００５】
キャッシュメモリへのライト対象データのライトが完了されたことを検知する方法として、例えば、特許文献１に開示の技術を利用する方法が考えられる。具体的には、例えば、プロセッサ部は、ライト対象のデータを含みキャッシュメモリを宛先としたライトパケットを送信した後、キャッシュメモリを宛先としたリードパケットを送信し、そのリードパケットの応答として、ライト対象のデータをキャッシュメモリから取得することで、ライト対象のデータがキャッシュメモリにライトされたことを検知する。
【０００６】
しかし、この方法を採用すると、ストレージシステムの処理速度が低下するおそれがある。なぜなら、プロセッサ部は、リードパケットを送信してからそのリードパケットの応答を待つことになり、その間、他の処理を行わないためである。
【０００７】
ストレージシステムの処理速度の低下は、コントローラ部が、直列に接続されている三以上のコントローラで構成されているケースでは、一層問題になると考えられる。なぜなら、例えば、直列に接続されている三以上のコントローラの一端のコントローラが有するプロセッサ部が、それら三以上のコントローラの他端のコントローラが有するキャッシュメモリを宛先としてリードパケットを発行する可能性があり、その場合には、リードパケットを送信してからそのリードパケットの応答を受信するまでに長い時間がかかる可能性があるからである。
【０００８】
従って、本発明の目的は、データのライト完了を検知する機能を有したストレージシステムの処理速度が低下しないようにすることにある。
【課題を解決するための手段】
【０００９】
コントローラ部が、一以上のプロセッサ部と、一以上の記憶資源と、プロセッサ部及び記憶資源に接続された一以上の転送制御部とを有する。転送制御部は、受信部と送信部とを有する。受信部が、プロセッサ部からライトパケットを受信し、そのライトパケットに特定のコードを含めて送信する。送信部が、ライトパケットを受信した場合、受信したライトパケットが特定のコードを含んでいれば、そのライトパケット内のライト対象のデータをライト先の記憶資源にライトした後に、ライトの完了を表す応答である応答パケットを生成し、生成した応答パケットを送信する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の一実施形態に係る計算機システムの構成例を示す。
【図２】図２は、データ転送制御ＬＳＩの内部構成を示す機能ブロック図である。
【図３】図３は、ストレージシステムにおいて直列に接続されている三台以上のストレージ制御装置を示す。
【図４Ａ】図４Ａは、ライトパケットが発行されてからライト完了が検知されるまでの流れについて、ライトパケットの送信元におけるストレージ制御装置を示す。
【図４Ｂ】図４Ｂは、ライトパケットが発行されてからライト完了が検知されるまでの流れについて、ライトパケットの送信先におけるストレージ制御装置を示す。
【図５Ａ】変更前ライトパケットのヘッダ部を示す。
【図５Ｂ】変更後ライトパケットのヘッダ部を示す。
【図６】ライト先がキャッシュメモリであり、且つ、ライト保証処理が行われていることを示す。
【図７】ライト先がローカルメモリであり、且つ、コンペア保証処理が行われていることを示す。
【図８】ライト先がキャッシュメモリであり、且つ、コンペア保証処理が行われていることを示す。
【図９】第一のライト完了報告処理を示す。
【図１０】第二のライト完了報告処理を示す。
【図１１】第三のライト完了報告処理を示す。
【図１２】Ｗｉｎｄｏｗとライト保証処理との関係を示す。
【図１３Ａ】ＰＣＩ−ＥＸ制御部内の受信部及び送信部の機能ブロック図である。
【図１３Ｂ】メモリ制御部の機能ブロック図である。
【図１４】変更後ライトパケットが送信されてからタイムアウトになった場合にプロセッサにエラーが報告されることを示す。
【図１５】ＰＣＩ−ＥＸ制御部内の受信部が行う処理のフローを示す。
【図１６】ＰＣＩ−ＥＸ制御部内の送信部が行う処理のフローを示す。
【図１７】第四のライト完了報告処理を示す。
【符号の説明】
【００１１】
２０…ストレージシステム
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して、本発明の一実施形態を説明する。
【００１３】
図１は、本発明の一実施形態に係る計算機システムの構成例を示す。
【００１４】
ストレージシステム２０に、ＳＡＮ（Storage Area Network）３Ａ、３Ｂ、２３Ａ及び２３Ｂを通じて、複数のホスト１Ａ、１Ｂ、１Ｃ、１Ｄ、２１Ａ、２１Ｂ、２１Ｃ、２１Ｄが接続されている。ホストの数は、図示の８に限定されず、８より多くても少なくても良い。また、ＳＡＮに代えて、ＬＡＮ（Local Area Network）等の他種の通信ネットワークが採用されても良い。
【００１５】
ホスト１Ａを例に採り説明すると、例えば、ホスト１Ａは、例えば、ＣＰＵ（Central Processing Network）やメモリ等の情報処理資源を備えた計算機であり、例えば、パーソナルコンピュータや、ワークステーションや、メインフレーム等である。ホスト１Ａは、ＳＡＮ３Ａを介して、ストレージ制御装置３０と通信可能に接続されている。
【００１６】
ストレージシステム２０は、ストレージ駆動装置４０と、複数のストレージ制御装置３０、６０、…とを備える。
【００１７】
ストレージ駆動装置４０は、例えば、複数のＨＤＤ群４０Ａ、４０Ｂ、４０Ｃ、４０Ｄを有する。ＨＤＤ群４０Ａを例に採り説明すると、ＨＤＤ群４０Ａは、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループである。ＨＤＤ群４０Ａには、所定のＲＡＩＤレベルに従ってデータが記憶される。ＨＤＤ群４０Ａを基に、一又は複数の論理ボリュームが形成される。なお、ＨＤＤ群の数は、図示の４に限定されず、４より多くても少なくても良い。また、ストレージ駆動装置４０には、ＨＤＤに限らず他種の記憶装置、例えば、フラッシュメモリ等の半導体メモリが採用されても良い。
【００１８】
ストレージ制御装置の数は、図１に例示する２に限らず、例えば図３に示すように、ストレージシステム２０において、三台以上のストレージ制御装置３０，６０，８０，…を直列に接続することが可能である。しかし、以下の説明では、説明を分かり易くするために、互いに接続されている二台のストレージ制御装置３０，６０を例に採って説明する。
【００１９】
ストレージ制御装置３０（６０）は、ホスト１Ａ乃至１Ｄ（２１Ａ乃至２１Ｄ）のいずれかからＩ／Ｏコマンド（ライトコマンド又はリードコマンド）を受信し、受信したＩ／Ｏコマンドに従って、ＨＤＤ群４０Ａ又は４０Ｂ（４０Ｃ又は４０Ｄ）に対するＩ／Ｏ（Input/Output）処理を行う。
【００２０】
ストレージ制御装置３０（６０）は、ホストＩＦ（Interface）９Ａ及び９Ｂ（２９Ａ及び２９Ｂ）と、ＭＰ（Micro Processor）制御部１１（３１）と、キャッシュメモリ１３（３３）と、ディスクＩＦ１５Ａ及び１５Ｂ（３５Ａ及び３５Ｂ）と、データ転送制御ＬＳＩ（Large Scale Integration）１９（３９）とを備える。
【００２１】
ホストＩＦ９Ａ及び９Ｂ（２９Ａ及び２９Ｂ）について、ホストＩＦ９Ａを例に採り説明する。ホストＩＦ９Ａは、ホスト１Ａとの通信におけるプロトコル処理を制御するＬＳＩであり、いわゆるプロトコルチップである。ホストＩＦ９Ａは、ホスト１Ａ又は１ＢからＩ／Ｏコマンドを受信し、ホスト１Ａ又は１Ｂとの間でデータの送受信を行う。
【００２２】
ＭＰ制御部１１（３１）は、ホストＩＦ９Ａ又は９Ｂで受信したＩ／Ｏコマンドに応答して、Ｉ／Ｏ処理を行う。そのＩ／Ｏ処理において（又は他の処理において）、ＭＰ制御部１１（３１）は、ストレージシステム２０内の他のストレージ制御装置が有する記憶資源（ローカルメモリ又はキャッシュメモリ）を宛先としたライトパケットを発行する。
【００２３】
キャッシュメモリ１３（３３）は、例えば、揮発性（或いは不揮発性）のメモリであり、ホスト１Ａ乃至１Ｄ（２１Ａ乃至２１Ｄ）とＨＤＤ群４０Ａ乃至４０Ｄとの間で授受されるデータを一時的に記憶する。
【００２４】
ディスクＩＦ１５Ａ及び１５Ｂ（３５Ａ及び３５Ｂ）について、ディスクＩＦ１５Ａを例に採り説明する。ディスクＩＦ１５Ａは、ＨＤＤの通信におけるプロトコル処理を制御するＬＳＩであり、いわゆるプロトコルチップである。ディスクＩＦ１５Ａは、ＨＤＤ群４０Ａからデータをリードしたり、キャッシュメモリ１３に記憶されているデータをＨＤＤ群４０Ａにライトしたりする。
【００２５】
データ転送制御ＬＳＩ１９（３９）は、ホストＩＦ９Ａ及び９Ｂ（２９Ａ及び２９Ｂ）、ディスクＩＦ１５Ａ及び１５Ｂ（３５Ａ及び３５Ｂ）、ＭＰ制御部１１、キャッシュメモリ１３、及び他のストレージ制御装置内のデータ転送制御ＬＳＩの各々間の通信を制御する。
【００２６】
ホストＩＦ９Ａ及び９Ｂ（２９Ａ及び２９Ｂ）とデータ転送制御ＬＳＩ１９（３９）との間、ＭＰ制御部１１（３１）とデータ転送制御ＬＳＩ１９（３９）との間、ディスクＩＦ１５Ａ及び１５Ｂ（３５Ａ及び３５Ｂ）とデータ転送制御ＬＳＩ１９（３９）との間、及びデータ転送制御ＬＳＩ同士の間では、PCI-Express（以下、「ＰＣＩ−ＥＸ」という）規格に従う通信が行われる。
【００２７】
以下、データ転送制御ＬＳＩ１９を例に採って、データ転送制御ＬＳＩの構成を説明する。
【００２８】
図２は、データ転送制御ＬＳＩ１９の内部構成を示す機能ブロック図である。
【００２９】
データ転送制御ＬＳＩ１９は、符号４１、符号４３、符号４５、符号４７、符号４９、符号５１、及び符号５３（以下、符号４１乃至５３）で示すＰＣＩ−ＥＸ制御部と、メモリ制御部５５と、パケットスイッチ部５７とを備える。ＰＣＩ−ＥＸ制御部４１は、ＭＰ制御部１１に接続されており、ＰＣＩ−ＥＸ制御部４３は、別のストレージ制御装置内のデータ転送制御ＬＳＩに接続されており、ＰＣＩ−ＥＸ制御部４５は、また別のストレージ制御装置６０内のデータ転送制御ＬＳＩ３９に接続されており、ＰＣＩ−ＥＸ制御部４７及び４９は、ホストＩＦ９Ａ及び９Ｂに接続されており、ＰＣＩ−ＥＸ制御部５１及び５３は、ディスクＩＦ１５Ａ及び１５Ｂに接続されている。本実施形態では、符号４１乃至５３で示すＰＣＩ−ＥＸ制御部の構成は同一のため、ＰＣＩ−ＥＸ制御部４１を例に採って説明を行い、他のＰＣＩ−ＥＸ制御部（符号４３乃至５３）については、適時説明する。
【００３０】
ＰＣＩ−ＥＸ制御部４１は、ＭＰ制御部１１に接続されており、ＭＰ制御部１１との間の通信を制御する機能を有するインタフェース回路である。ＰＣＩ−ＥＸ制御部４１は、受信部４１Ａ及び送信部４１Ｂを備えている。ちなみに、図２では、ＰＣＩ−ＥＸ制御部４３内の受信部４３Ａ及び送信部４３Ｂと、ＰＣＩ−ＥＸ制御部４５内の受信部４５Ａ及び送信部４５Ｂとも図示されている。以下、受信部４１Ａ、４３Ａ及び４５Ａについて、受信部４１Ａを例に採り説明し、送信部４１Ｂ、４３Ｂ及び４５Ｂについて、送信部４１Ｂを例に採り説明する。
【００３１】
受信部４１Ａは、外部（ここではＭＰ制御部１１）からパケットを受信する回路であり、送信部４１Ｂは、外部（ここではＭＰ制御部１１）にパケットを送信する回路である。
【００３２】
受信部４１Ａは、図１３Ａに示すように、以下に示す機能（Ａ−１）乃至（Ａ−４）、
（Ａ−１）フォーマット変更部１４１；
（Ａ−２）Ｗｉｎｄｏｗ判定部１４２；
（Ａ−３）タグ保持部１４３；
（Ａ−４）ライト完了報告部１４４；
を有する。一方、送信部４１Ｂは、図１３Ａに示すように、以下に示す機能（Ｂ−１）及び（Ｂ−２）、
（Ｂ−１）パケット解析部１４５；
（Ｂ−２）ライト保証処理部１４６；
を有する。これらの機能の説明は後述する。
【００３３】
メモリ制御部５５は、パケットスイッチ部５７と通信可能に接続されており、パケットスイッチ部５７から転送されたパケットを受信する。メモリ制御部５５は、キャッシュメモリ１３に接続されており、キャッシュメモリ１３に対しデータの入出力の制御を行う。メモリ制御部５５は、図１３Ｂに示すように、以下に示す機能（Ｃ−１）及び（Ｃ−２）、
（Ｃ−１）パケット解析部１４７；
（Ｃ−２）ライト保証処理部１４８；
を有する。これら（Ｃ−１）及び（Ｃ−２）の機能は、前述の（Ｂ−１）及び（Ｂ−２）の機能と同じである。
【００３４】
パケットスイッチ部５７は、符号４１乃至５３で示すＰＣＩ−ＥＸ制御部や、メモリ制御部５５と通信可能に接続されている。パケットスイッチ部５７は、これら各部から出力されたパケットを受け、そのパケットに含まれている宛先情報を基に、符号４１乃至５３で示すＰＣＩ−ＥＸ制御部とメモリ制御部５５とのいずれかへ出力する。
【００３５】
本実施形態に係るストレージシステム２０は、ＭＰ制御部が発行したライトパケット内のライト対象データのライトが完了したことを検知する機能を有する。本実施形態では、後述する工夫により、ＭＰ制御部がライトパケットを発行した後にライト先を指定したリードパケットを発行しなくても（つまり、いわゆる読み返しを行うことなく）、ライト完了を検知することが可能となっている。
【００３６】
以下、図４Ａ及び図４Ｂを参照して、MP制御部１１（３１）の構成を説明し、その後で、ライトパケットが発行されてからライト完了が検知されるまでの流れを説明する。なお、図４及び図４Ｂでは、ライトの流れを太い実線で示し、応答の流れを破線で示す（これは、それ以降の図６〜１１及び図１４についても同様である）。
【００３７】
＜MP制御部１１（３１）の構成＞。
【００３８】
図４Ａ（図４Ｂ）に示すように、MP制御部１１（３１）は、ローカルメモリ１２（３２）と、プロセッサ１４（３４）と、プロセッサブリッジ１６（３６）とを備えている。ローカルメモリ１２（３２）は、例えば、揮発性（又は不揮発性）のメモリであり、プロセッサ１４（３４）によって入出力される情報が格納される。プロセッサ１４（３４）は、マイクロプロセッサであり、ローカルメモリ１２（３２）に格納されているコンピュータプログラムを実行する。プロセッサブリッジ１６（３６）は、ローカルメモリ１２（３２）とプロセッサ１４（３４）が接続されたスイッチ回路であり、ＰＣＩ−ＥＸに従うパケットをＰＣＩ−ＥＸ制御部４１（５９）との間で送受信する。
【００３９】
＜ライトパケットが発行されてからライト完了が検知されるまでの流れ＞。
【００４０】
図４Ａに示すように、まず、ＭＰ制御部１１内のプロセッサ１４が、ライトパケットを送信する。
【００４１】
ここで送信されたライトパケットの宛先は、図４Ｂに示すように、ＭＰ制御部３１内のローカルメモリ３２である。このように、ライトパケットの発行元のプロセッサ１４を有するストレージ制御装置３０とは別のストレージ制御装置６０内のローカルメモリ３２が、ライトパケットの宛先となるケースとしては、例えば、下記（４Ａ−１）及び（４Ａ−２）を具備するケースがある。
（４Ａ−１）ホストＩＦ９Ａ又は９Ｂが、ホスト１Ａ乃至１ＤのいずれかからＩ／Ｏコマンド（例えばリードコマンド）を受信する；
（４Ａ−２）プロセッサ１４が、例えば、キャッシュメモリ１３（又は別種の記憶資源）に記憶されている構成情報（例えば、どの論理ボリュームがどのＨＤＤ群を基に構成されており、どのＨＤＤ群がどのストレージ制御装置に接続されているかを表す情報）を参照する等の方法により、受信したＩ／Ｏコマンドで指定されている論理ボリュームの基になっているＨＤＤ群が、ストレージ制御装置３０ではなくストレージ制御装置６０に接続されていることがわかる。
【００４２】
また、ＰＣＩ−ＥＸでサポートされているパケットの種類として、下記の３種類、
（１）応答不要型のパケットであるPostedパケット；
（２）応答必要型のパケットであるNon-Postedパケット；
（３）応答としてのパケットであるCompletionパケット；
があるが、本実施形態では、ライトパケットは、Postedパケットである。また、ライトパケットに対しての応答として発行されるパケットも、Postedパケットであり、具体的には、ライトパケットである。そのため、以下、その応答としてのパケットを、「応答ライトパケット」と言う。
【００４３】
プロセッサ１４からプロセッサブリッジ１６を介して、受信部４１Ａが、ライトパケットを受信する。受信部４１ＡがＭＰ制御部１１（プロセッサ１４）からライトパケットを受信すると、受信部４１Ａ内のＷｉｎｄｏｗ判定部１４２がＷｉｎｄｏｗ判定処理を実行し、タグ保持部１４１がタグ付与処理を実行し、フォーマット変更部１４１（図１３Ａ参照）が、フォーマット変更処理を実行する。
【００４４】
ここで、図５Ａ及び図５Ｂを用いて、Ｗｉｎｄｏｗ判定処理、タグ付与処理、及びフォーマット変更処理について説明する。以下、フォーマット変更処理前のライトパケットを「変更前ライトパケット」と言い、フォーマット変更処理後のライトパケットを「変更後ライトパケット」と言う。
【００４５】
受信部１４Ａは、ＰＣＩ−ＥＸ標準フォーマットのライトパケット（つまり変更前ライトパケット）を受信する。変更前ライトパケットは、例えば、ヘッダ部とデータ部に大別することができ、データ部に、ライト対象のデータが含まれている。ヘッダ部は、図５Ａに示すように、種々の情報要素を有している。例えば、「Type」は、コマンド種別を表すコード（例えばライトを意味するライトコード）を含んだ情報要素である。「Tag」は、このライトパケットのＩＤである。「Requestor ID」は、ライトパケットの発行元のＩＤ（例えばプロセッサ１４のＩＤ）である。「Address」は、ライトパケットが有するライト対象データのライト先（例えば、図４Ａ及び図４Ｂの例によれば、ローカルメモリ３２）を表すアドレスを含んだ情報要素である。
【００４６】
「Address」には、ライト保証処理としてライト完了保証処理とコンペア保証処理のいずれを実行するかの指定に相当するアドレス（以下、「保証指定アドレス」と言う）が含まれている。保証指定アドレスは、Ｗｉｎｄｏｗと呼ばれるアドレス範囲から選択されたアドレスである。具体的には、例えば、図１２に示すように、ライト完了保証処理に対応したＷｉｎｄｏｗ１（アドレス範囲）０〜９と、コンペア保証処理に対応したＷｉｎｄｏｗ２（アドレス範囲）１０〜１９がある。保証指定アドレスは、プロセッサ１４が任意に選択可能である。例えば、プロセッサ１４は、信頼性の高さよりも処理速度が速いことが優先される場合には、Ｗｉｎｄｏｗ１に属するアドレスを、保証指定アドレスとして変更前ライトパケットに設定する。一方、プロセッサ１４は、処理速度が速いことよりも信頼性の高さが優先される場合（例えば、ライト対象のデータが重要なデータである場合）には、Ｗｉｎｄｏｗ２に属するアドレスを保証指定アドレスとして変更前ライトパケットに設定する。
【００４７】
本実施形態で言うＷｉｎｄｏｗ判定処理とは、Ｗｉｎｄｏｗ判定部１４２が、ＰＣＩ−ＥＸ標準フォーマットのライトパケット内の保証指定アドレスがＷｉｎｄｏｗ１及び２のどちらに属するアドレスかを判定する処理である。
【００４８】
また、本実施形態で言うタグ付与処理とは、タグ保持部１４３が、変更後ライトパケットに含められる「Tag」を付与し且つその「Tag」を保持する処理である。タグ保持部１４３は、記憶資源（以下、タグ用記憶資源）を有し、その記憶資源（例えばバッファ或いはレジスタ）に、付与した「Tag」を保持する。後述する流れによって受信部４１Ａが変更後ライトパケットに対する応答ライトパケットを受信し、その応答ライトパケット内の「Tag」と同じ「Tag」がタグ用記憶資源から見つかった場合に、変更後ライトパケットについての応答を受信したことを受信部４１Ａが認識できる。タグ用記憶資源は、付与された「Tag」と、変更前ライトパケット内の「Tag」とが対応付けて記憶されても良い。
【００４９】
また、本実施形態で言うフォーマット変更処理とは、フォーマット変更部１４１が、変更前ライトパケットが有するヘッダ部（図５Ａに示すヘッダ部）の一部分を別の情報要素に変更することにより変更後ライトパケットを生成する処理である。変更される情報要素は、「Requestor ID」である。具体的には、「Requestor ID」は、図５Ｂに示すように、情報要素「Kind」と情報要素「Source ID」とを含んだ情報要素に書き換えられる。より具体的には、図５Ａに示すように、１６バイトの所定のフィールド７２に、「Requestor ID」が記入されているが、フォーマット変換処理が行われることにより、「Requestor ID」の上位部分が「Kind」に書き換えられ、下位部分が「Source ID」に書き換えられる。
【００５０】
「Source ID」は、フォーマット変更処理の前に記入されていた「Requestor ID」を基に作成された、「Requestor ID」に対応する情報要素である。
【００５１】
そして、「Kind」は、ライト先の記憶資源（図４Ｂの例によればローカルメモリ３２）に接続されているＰＣＩ−ＥＸ制御部内の送信部がどのようなライト保証処理を行うかを指定した情報要素である。「Kind」としての値は、Ｗｉｎｄｏｗ判定処理での判定結果に基づく値とされる。例えば、Ｗｉｎｄｏｗ判定処理でＷｉｎｄｏｗ１が判定された場合には、「Kind」としての値は、ライト保証処理としてライト完了保証処理を行うことを意味する値（例えば“0001”）である。一方、Ｗｉｎｄｏｗ判定処理でＷｉｎｄｏｗ２が判定された場合には、「Kind」としての値は、ライト保証処理としてコンペア保証処理を行うことを意味する値（例えば“0010”）である。
【００５２】
「Requestor ID」は、ＰＣＩ−ＥＸ標準フォーマットのライトパケット（変更前ライトパケット）のヘッダ部に含まれる複数種類の情報要素のうち、書き換えられても影響の小さい情報要素である。この点に着目し、本実施形態では、変更前ライトパケット内のヘッダ部における、「Requestor ID」が記入される領域として予め確保されている所定サイズのフィールド７２内に、「Requestor ID」に相当する情報要素「Source ID」が設定され、且つ、そのフィールド７２内に「Kind」が設定される。このため、データ部が有するライト対象データの一部分を削減したり、データ部に情報要素を付加したりすることなく、ライト先の記憶資源に接続されているＰＣＩ−ＥＸ制御部内の送信部にライト保証処理を行うことを指定することができる。
【００５３】
なお、図５Ｂは、変更後ライトパケットのヘッダ部の構成を示すが、そのヘッダ部に含められる「Tag」は、前述したように、タグ付与処理によって付与された「Tag」である。
【００５４】
再び、図４Ａの説明に戻る。
【００５５】
受信部４１Ａは、ＭＰ制御部４１からの変更前ライトパケットを受信し、前述したＷｉｎｄｏｗ判定処理、タグ付与処理及びフォーマット変更処理を実行して、変更後ライトパケットをパケットスイッチ部５７へ出力する。パケットスイッチ部５７は、受信部４１Ａから変更後ライトパケットを受けて、その変更後ライトパケット内の「Address」に基づき、変更後ライトパケットを送信部４５Ｂへ出力する。送信部４５Ｂは、パケットスイッチ部５７からの変更後ライトパケットを、図４Ｂに示すように、別のストレージ制御装置６０内の受信部６１Ａに転送する。
【００５６】
受信部６１Ａは、送信部４５Ｂから変更後ライトパケットを受信し、その変更後ライトパケットをパケットスイッチ部６７に出力する。パケットスイッチ部６７は、その変更後ライトパケット内の「Address」に基づき、変更後ライトパケットを送信部５９Ｂ（つまり、ライト先のローカルメモリ３２を有するＭＰ制御部３１に接続されているＰＣＩ−ＥＸ５９内の送信部５９Ｂ）へ出力する。
【００５７】
送信部５９Ｂが変更後ライトパケットを受信すると、送信部５９Ｂ内のパケット解析部１４５（図１３Ａ参照）が、パケット解析処理を実行する。パケット解析処理では、受信した変更後ライトパケットに含まれている「Kind」が、ライト保証処理として、ライト完了保証処理とコンペア保証処理のいずれを実行することを指定しているかが特定される。
【００５８】
送信部５９Ｂは、変更後ライトパケット内のライト対象データを、変更後ライトパケット内の「Address」が表すローカルメモリ３２内の領域にライトする（具体的には、変更後ライトパケットをローカルメモリ３２に転送する）。
【００５９】
そして、送信部５９Ｂ内のライト保証処理部１４６が、パケット解析部１４５によって特定されたライト保証処理を実行する。実行されるライト保証処理としては、前述したように、ライト完了保証処理とコンペア保証処理のいずれかであるが、図４Ｂは、ライト完了保証処理を示している。すなわち、変更後ライトパケット内のライト対象データをローカルメモリ３２にライトしたことが完了した場合、ライト保証処理部１４６が、変更後ライトパケットに対する応答ライトパケットを作成して送信する。応答ライトパケットは、ライトコードを含んだPostedパケット、つまりライトパケットであり、この応答ライトパケットのヘッダ部には、例えば、変更後ライトパケット内の「Tag」と同じ「Tag」が含まれ、「Type」としてライトコードが含まれ、「Requestor ID」として送信部５９ＢのＩＤが含まれる。応答ライトパケットは、図４Ｂ及び図４Ａに示すように、変更後ライトパケットが流れた経路と同じ経路を辿って、変更後ライトパケットの送信元である受信部４１Ａに戻る。具体的には、以下の通りである。すなわち、パケットスイッチ部５６（６７）に接続されているＰＣＩ−ＥＸ制御部及びメモリ制御部には、それぞれ固有のポートナンバー（以下、ＰＮ）が割り振られている。図４Ａにおいて、受信部４１Ａは、変更後ライトパケットを送信するときに、自分のＰＣＩ−ＥＸ制御部４１のＰＮ（以下、ＰＮ＃４１）を送信する。送信部４５Ｂは、受信部４１Ａから変更後ライトパケット及びＰＮ＃４１を受信すると、変更後ライトパケット内のＴＡＧと、ＰＮ＃４１とを関連付けて保持する（例えばバッファなどの記憶資源に保持する）。そして、送信部４５Ｂは、受信した変更後ライトパケットと、自分のＰＣＩ−ＥＸ制御部４５のＰＮ（以下、ＰＮ＃４５）を送信する。このような処理が、図４Ｂにおいても繰り返される。その結果、受信部６１Ａが、ＴＡＧとＰＮ＃４５との関連付けを保持し、送信部５９Ｂが、ＴＡＧとＰＮ＃６１との関連付けを保持する。送信部５９Ｂは、受信した変更後ライトパケット内のＴＡＧと同じＴＡＧを含んだ応答ライトパケットを送信するときは、そのＴＡＧに関連付いているＰＮ＃６１を指定して応答ライトパケットを送信する。それにより、応答ライトパケットは、受信部６１Ａで受信される。受信部６１Ａは、受信した応答ライトパケット内のＴＡＧに関連付いているＰＮ＃４５を指定して応答ライトパケットを送信する。それにより、応答ライトパケットは、送信部４５Ｂで受信される。送信部４５Ｂは、受信した応答ライトパケット内のＴＡＧに関連付いているＰＮ＃４１を指定して応答ライトパケットを送信する。それにより、応答ライトパケットは、受信部４１Ａで受信される。受信部４１Ａは、応答ライトパケット内のＴＡＧから、変更後ライトパケットの応答が返ってきたことを認識する。以上のようにして、応答ライトパケットが、変更後ライトパケットが流れた経路と同じ経路を辿って、変更後ライトパケットの送信元である受信部４１Ａに戻る。
【００６０】
図４Ａに示すように、受信部４１Ａが応答ライトパケットを受信すると、その受信部４１Ａ内のライト完了報告部１４４が、その応答ライトパケット内の「Tag」と同じタグがタグ用記憶資源に記憶されているか否かを判断し、その判断の結果が肯定的の場合に、ライト完了報告処理を実行する。ライト完了報告処理とは、変更前ライトパケットに従うライトが完了したことをその変更前ライトパケットの送信元であるプロセッサ１４に通知する処理である。ライト完了報告処理が行われることにより、プロセッサ１４は、変更前ライトパケットに従うライトが完了したことを検知することができる。
【００６１】
以上、図４Ａ及び図４Ｂを参照して説明した処理流れによれば、変更前ライトパケットの宛先（ライト先の記憶資源）は、変更前ライトパケットの発行元のプロセッサ１４を有するストレージ制御装置３０とは別のストレージ制御装置６０内のローカルメモリ３２であるが、変更前ライトパケットの宛先は、図６に示すように、ストレージ制御装置６０内のキャッシュメモリ３３となることもある。このように、キャッシュメモリ３３が変更前ライトパケットの宛先となるケースとしては、例えば、下記（６Ａ−１）及び（６Ａ−２）を具備するケースがある。
（６Ａ−１）ホストＩＦ９Ａ又は９Ｂが、ホスト１Ａ乃至１Ｄのいずれかからライトコマンドを受信する；
（６Ａ−２）プロセッサ１４が、例えば、キャッシュメモリ１３（又は別種の記憶資源）に記憶されている構成情報（例えば、どの論理ボリュームがどのＨＤＤ群を基に構成されており、どのＨＤＤ群がどのストレージ制御装置に接続されているかを表す情報）を参照する等の方法により、受信したライトコマンドで指定されている論理ボリュームの基になっているＨＤＤ群が、ストレージ制御装置３０ではなくストレージ制御装置６０に接続されていることがわかる。
【００６２】
図６に示した例によれば、ライト先がキャッシュメモリ３３であるが、この場合、図４Ｂを参照して説明した、送信部５９Ｂのパケット解析部１４５及びライト保証処理部１４６が行う処理を、メモリ制御部６５のパケット解析部１４７及びライト保証処理部１４８（図１３Ｂ参照）が行うことができる。
【００６３】
また、図４Ａ及び図４Ｂを参照して説明した処理流れによれば、ライト保証処理として、ライト完了保証処理が行われているが、変更後ライトパケットに含まれている「Kind」が、コンペア保証処理を指定する値であれば、ライト完了保証処理に代えて、コンペア保証処理が行われる。
【００６４】
具体的には、例えば、図７に示すように、変更後ライトパケット内のライト対象データがローカルメモリ３２の領域（以下、「領域Ｔ」と言う）にライトされたら、送信部５９Ｂ内のライト保証処理部１４６が、ローカルメモリ３２の領域Ｔからライト対象データをリードする（例えば、ローカルメモリ３２の領域Ｔを宛先としたリードパケット（Non-Postedパケット）を送信し、そのリードパケットに対して、リードされたライト対象データを含んだCompletionパケットを受信する）。ライト保証処理部１４６は、リードされたライト対象データと、ローカルメモリ３２にライトしたライト対象データ（例えば、送信部５９Ｂが有する記憶資源（例えばバッファ）に一時的に記憶されているライト対象データ）とをコンペアする。ライト保証処理部１４６は、コンペアの結果を表す情報を含んだ応答ライトパケットを生成して送信する。例えば、コンペア結果が一致であれば、ＯＫを表す情報を含んだ応答ライトパケットが生成され、コンペア結果が不一致であれば、ＮＧを表す情報を含んだ応答ライトパケットが生成される。この場合、変更後ライトパケットの送信元である受信部４１Ａでは、ＯＫを表す情報を含んだ応答ライトパケットが受領された場合に、ライト完了報告処理が行われる。
【００６５】
なお、コンペア保証処理は、図８に示すように、ライト先が、キャッシュメモリ３３であっても、行うことが可能である。
【００６６】
ライト保証完了処理の結果としての応答ライトパケット、又は、ＯＫを表す情報を含んだ応答ライトパケットが、変更後ライトパケットの送信元である受信部４１Ａで受領されると、前述したように、受領部４１Ａ内のライト完了報告部１４４が、ライト完了報告処理を行う。ライト完了報告処理としては、例えば、以下に説明する第一乃至第三のライト完了報告処理のいずれかを採用することが可能である。以下、各ライト完了報告処理を説明する。
【００６７】
＜第一のライト完了報告処理＞
変更後ライトコマンドを発行する際、受信部４１Ａのフォーマット変更部１４１が、受信部４１Ａ内のレジスタ（以下、受信レジスタ）に、ライト完了ビットとして“１”を設定しておく（例えば、ライト完了ビット“１”と、発行した変更後ライトコマンド内の「Tag」との対応を管理する）。その後、その変更後ライトコマンドに対する応答ライトコマンドを受信部４１Ａが受領した場合、図９に示すように、受領部４１Ａ内のライト完了報告部１４４が、受信レジスタに設定されているライト完了ビットを“１”から“０”に更新する。プロセッサ１４は、受信レジスタを定期的にチェックし（ポーリングし）、受信レジスタにライト完了ビット“０”を検出した場合に、変更前ライトパケットに対応したライト完了を検知する。
【００６８】
＜第二のライト完了報告処理＞
図１０に示すように、受領部４１Ａ内のライト完了報告部１４４が、変更前ライトパケットの発行元プロセッサ１４を有するMP制御部１１内のローカルメモリ１２に、ライト完了を表す情報（以下、ライト完了情報）を書き込む。プロセッサ１４は、ローカルメモリ１２を定期的にチェックし（ポーリングし）、ローカルメモリ１２から、発行した変更前ライトパケットに対応したライト完了情報を取得する。これにより、その変更前ライトパケットに対応したライト完了が検知される。なお、ライト完了情報には、例えば、変更前ライトパケット内の「Tag」と、ステータス情報（OK）とが含まれている。その「Tag」は、例えば、応答ライトパケット内の「Tag」をキーにタグ用記憶資源から取得された、変更前ライトパケット内の「Tag」である。また、ステータス情報（OK）は、例えば、応答ライトパケットのデータ部にライト対象データとして含まれているステータス情報である。プロセッサ１４は、変更前ライトパケット内の「Tag」と同じ「Tag」を含んだライト完了情報を取得した場合に、ライト完了を検知する。
【００６９】
＜第三のライト完了報告処理＞
図１１に示すように、受領部４１Ａ内のライト完了報告部１４４が、プロセッサ１４に対して、データが正常にライトされたことを意味する信号である終了割り込み信号を出力する。終了割込み信号を受けた場合に、プロセッサ１４は、ライト完了を検知する。
【００７０】
以上の第一乃至第三のライト完了報告処理のいずれかを行うことによって、受信部４１Ａ内のライト完了報告部１４４は、受信部４１Ａが応答ライトパケットを受けた場合にライト完了をプロセッサ１４に知らしめることができる。
【００７１】
なお、受信部４１Ａは、変更後ライトパケットが送信してからの時間を計測しており、所定の時間以内に応答ライトパケットを受信しない場合（例えば、図１４に示すように、応答ライトパケットの経路における送信部４５Ｂで障害が生じているが故に応答ライトパケットが受信部４１Ａに受信されない場合）、図１４に示すように、プロセッサ１４にエラーを報告する。
【００７２】
図１５は、受信部４１Ａが行う処理のフローを示す。このフローは、受信部４１Ａを有するＰＣＩ−ＥＸ制御部４１以外のＰＣＩ−ＥＸ制御部内の受信部についても同様である。
【００７３】
受信部４１Ａは、変更前ライトパケットを受領した場合、Ｗｉｎｄｏｗ判定処理を行う（Ｓ１０１）。
【００７４】
Ｓ１０１のＷｉｎｄｏｗ判定処理の結果が、保証指定アドレスがＷｉｎｄｏｗ１に属するとの結果であれば（Ｓ１０１：ＹＥＳ）、ライト完了保証を行うことを意味する「Kind」としての値“０００１”を取得する（Ｓ１０２）。一方、Ｓ１０１のＷｉｎｄｏｗ判定処理の結果が、保証指定アドレスがＷｉｎｄｏｗ２に属するとの結果であれば（Ｓ１０１：ＮＯ）、コンペア保証を行うことを意味する「Kind」としての値“００１０”を取得する（Ｓ１０９）。
【００７５】
受信部４１Ａは、タグ付与処理を行うことで、「Tag」（ＩＤ）を保持する（Ｓ１０３）。
【００７６】
受信部４１Ａは、Ｓ１０３で取得した「Tag」と、Ｓ１０２又はＳ１０９で取得した「Kind」とを含んだ変更後ライトパケットを発行し（つまりフォーマット変更処理を行い）、タイマを起動する（Ｓ１０４）。
【００７７】
受信部４１Ａは、応答ライトパケットを受信した場合（Ｓ１０５：ＹＥＳ）、Ｓ１０８を実行する。具体的には、例えば、保持されている「Tag」と同じ「Tag」を含んだライトパケットが受領された場合に、受信部４１Ａが応答ライトパケットを受領したことになる。
【００７８】
受信部４１Ａは、変更後ライトパケットを送信してから一定時間経ってもその変更後ライトパケットに対する応答ライトパケットを受領しない場合（Ｓ１０５：ＮＯ、Ｓ１０６ＹＥＳ）、エラーステータスを生成する（Ｓ１０７）。
【００７９】
受信部４１Ａは、Ｓ１０７又はＳ１０５：ＹＥＳの後に、ライト完了報告を行い、且つ、タイマをリセットする（Ｓ１０８）。Ｓ１０７の後のライト完了報告では、エラーが報告される。Ｓ１０５：ＹＥＳの後のライト完了報告では、前述した第一乃至第三のライト完了報告処理のいずれかが行われる。
【００８０】
図１６は、送信部５９Ｂが行う処理のフローを示す。このフローは、送信部５９Ｂを有するＰＣＩ−ＥＸ制御部５９以外のＰＣＩ−ＥＸ制御部内の送信部、及びメモリ制御部についても同様である。
【００８１】
送信部５９Ｂは、変更後ライトパケットを受信し（Ｓ１２１）、その変更後ライトパケット内の「Kind」をチェックする。
【００８２】
チェックした「Kind」が“０００１”の場合（Ｓ１２２：ＹＥＳ）、つまり、ライト完了保証処理が指定されている場合、送信部５９Ｂは、ライト先のローカルメモリ（このフローにおける各処理の主体がメモリ制御部であれば、ライト先はキャッシュメモリ）に、変更後ライトパケット内のライト対象データを送信する（Ｓ１２３）。具体的には、例えば、送信部５９Ｂは、変更後ライトパケットをローカルメモリに転送する、又は、変更後ライトパケット内のライト対象データを含み宛先をローカルメモリとしたライトパケット（Postedパケット）を生成し、そのライトパケットを送信する。送信部５９Ｂは、ライト対象データを送信し終えた時（Ｓ１２４）、ライトで応答を返す（Ｓ１３５）。すなわち、送信部５９Ｂは、前出した応答ライトパケットを生成して送信する。
【００８３】
チェックした「Kind」が“００１０”の場合（Ｓ１２２：ＮＯ）、つまり、コンペア保証処理が指定されている場合、送信部５９Ｂは、ライト先のローカルメモリに、変更後ライトパケット内のライト対象データを送信し、且つ、そのライト対象データを、送信部５９Ｂが有するバッファに一時蓄積する（Ｓ１２７）。送信部５９Ｂは、ライト対象データを送信し終えた場合（Ｓ１２８）、ローカルメモリから、Ｓ１２７で送信したライト対象データをリードする（Ｓ１２９）。具体的には、例えば、送信部５９Ｂは、ライト対象データのライト先を指定したリードパケット（Non-Postedパケット）を送信する。送信部５９Ｂは、リード対象のデータ（つまりＳ１２７で送信したライト対象データ）を取得したら（Ｓ１３０）、バッファに蓄積されているライト対象のデータと、Ｓ１３０で取得されたデータとをコンペアし、コンペアの結果を表す情報を生成する。そして、送信部５９Ｂは、その情報を含んだ応答ライトパケットを生成して送信する（Ｓ１３５）。
【００８４】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００８５】
例えば、ストレージ制御装置が直列に接続される構成に代えて、一つのスイッチ回路に複数のストレージ制御装置が接続され、ストレージ制御装置間でのパケットのやり取りが、そのスイッチ回路を介して行われても良い。
【００８６】
また、例えば、第一乃至第三のライト完了報告処理に代えて、図１７に示す第四のライト報告完了処理が行われても良い。このケースでは、応答ライトパケットに、コンペア保証処理でリードされたデータが含まれている（或いは、コンペアを目的としないでライト対象データがライト先のメモリからライト対象データがリードされても良い）。応答ライトパケットを受けた受信部４１Ａは、その応答ライトパケット内のライト対象データ（つまりライト先のメモリからリードされたデータ）を、ローカルメモリ１２にライトする。プロセッサ１４は、ローカルメモリ１２をチェックし、自分が発行した変更前ライトパケットに含まれたライト対象データと同一のデータが記憶されているか否かをチェックする。同一のデータが検出された場合、ライト完了が検知される。
【図１】
2011523109.tif 000003
【図２】
2011523109.tif 000004
【図３】
2011523109.tif 000005
【図４Ａ】
2011523109.tif 000006
【図４Ｂ】
2011523109.tif 000007
【図５Ａ】
2011523109.tif 000008
【図５Ｂ】
2011523109.tif 000009
【図６】
2011523109.tif 000010
【図７】
2011523109.tif 000011
【図８】
2011523109.tif 000012
【図９】
2011523109.tif 000013
【図１０】
2011523109.tif 000014
【図１１】
2011523109.tif 000015
【図１２】
2011523109.tif 000016
【図１３Ａ】
2011523109.tif 000017
【図１３Ｂ】
2011523109.tif 000018
【図１４】
2011523109.tif 000019
【図１５】
2011523109.tif 000020
【図１６】
2011523109.tif 000021
【図１７】
2011523109.tif 000022
【国際調査報告】
2011523109.tif 000023
2011523109.tif 000024