(57)【要約】【課題】  他装置とのデータ入出力において、ストレージ制御装置のデータ転送制御部（ＤＴＣ）は、他装置とのデータ転送を、メモリ間での退避／回復動作を利用して多重に処理し、かつその負荷を抑えて性能を向上する。【解決手段】  第１のストレージ装置６０１は、ＤＴＣのデータ転送ＬＳＩ１１４で２つのＤＭＡ部８００を備え、これらを用いて１つ以上のデータ転送を並行的に処理し、１つのＤＭＡ部８００でもメモリ＃３（１１５）への退避や回復の動作を用いてデータ転送を切り替えながら処理させ、複数のデータ転送を多重に処理する。ＤＴＣは、ＩＯＣからの指示に基づき、一方のＤＭＡ部８００で、そのメモリに、必要なデータ転送情報とデータをメモリ＃３（１１５）から回復してデータ転送を行わせ、並行して、処理中でない他方のＤＭＡ部８００で、そのメモリに記憶されているデータ転送情報やデータを、先行してメモリ＃３（１１５）へ退避させる。【選択図】  図３
2006185000.tif 000002
【特許請求の範囲】
【請求項１】
他装置からデータ入出力要求を受信して、記憶装置上の記憶ボリュームに対してデータ入出力処理する制御装置を備えるストレージ装置であって、
前記制御装置は、
前記データ入出力処理のために前記他装置との間でのデータ転送を制御するものであり、
前記データ入出力処理を制御する入出力制御部と、
前記入出力制御部の指示に基づいて前記データ転送を制御するデータ転送制御部と、
前記データ転送における転送先または転送元となる第１のメモリ部と、
前記データ転送を制御するためのデータ転送情報を記憶する第２のメモリ部とを有し、
前記データ転送制御部は、
ＤＭＡデータ転送制御を行うデータ転送回路と、
前記他装置との通信インタフェースを備え通信処理を行う通信インタフェース部とを有し、
前記データ転送回路は、
ＤＭＡ制御部と、前記データ転送情報を記憶するレジスタと、転送されるデータを記憶するバッファとを備えたＤＭＡ部を複数有し、前記ＤＭＡ部の前記レジスタに記憶されるデータ転送情報と前記バッファに記憶されるデータとを前記第２のメモリ部へ退避する動作と、前記第２のメモリ部に退避されているデータ転送情報とデータとを前記ＤＭＡ部の前記レジスタと前記バッファに回復する動作とを行わせ、前記複数のＤＭＡ部を用いて１つ以上のデータ転送を並行的に処理し、１つのＤＭＡ部においても前記退避や回復の動作を用いて前記データ転送を切り替えながら処理させて、複数のデータ転送を多重に処理し、前記データ転送処理中でないＤＭＡ部で、前記レジスタに記憶されているデータ転送情報と前記バッファに記憶されているデータとを、先行して前記第２のメモリ部へと退避させる制御を行うことを特徴とするストレージ装置。
【請求項２】
請求項１記載のストレージ装置において、
前記制御装置のデータ入出力処理において、
前記入出力制御部は、前記他装置からのデータの受信や前記制御装置内からのコマンドに応じて、前記第１のメモリ部におけるデータ記憶位置と前記他装置におけるデータ記憶位置とを含むデータ転送情報を前記第２のメモリ部に書き込んで前記データ転送制御部を起動し、
前記起動されたデータ転送制御部は、前記複数のＤＭＡ部のいずれかを起動し、
前記起動されたＤＭＡ部は、前記第２のメモリ部から前記レジスタに読み出した前記データ転送情報に基づいて、前記バッファを介して、前記退避や回復の動作を用いながら、前記第１のメモリ部と前記通信インタフェース部の第３のメモリ部との間のデータ転送を制御することを特徴とするストレージ装置。
【請求項３】
請求項１記載のストレージ装置において、
前記データ転送制御部によるデータ転送は、前記他装置との間で送受信される対象のデータを１つ以上に分割してなる各データブロックを単位として制御されることを特徴とするストレージ装置。
【請求項４】
請求項１記載のストレージ装置において、
前記制御装置と前記他装置との間は、１つ以上のスイッチを介して通信可能に接続されており、
前記通信インタフェース部により、前記スイッチを介して、前記他装置との間で送受信される対象のデータを１つ以上に分割してなる各データブロックを単位として、データ転送を行うことを特徴とするストレージ装置。
【請求項５】
請求項１記載のストレージ装置において、
前記通信インタフェース部は、前記他装置との通信処理で使用する第３のメモリ部を有し、
前記ＤＭＡ部は、前記データ転送において、前記第１のメモリ部と前記第３のメモリ部との間でのデータ転送を行うことを特徴とするストレージ装置。
【請求項６】
請求項１記載のストレージ装置において、
前記制御装置は、前記ＤＭＡ部ごとに前記レジスタに記憶されるデータ転送情報と前記バッファに記憶されるデータとの組を、前記退避及び回復させるための個別の制御領域が設けられた第３のメモリが前記データ転送回路に接続された構成であり、
前記ＤＭＡ部のそれぞれは、前記第３のメモリの制御領域に対して前記退避や回復の動作を行うことを特徴とするストレージ装置。
【請求項７】
請求項１記載のストレージ装置において、
前記データ転送回路が、第１のＤＭＡ部で第１のデータ転送情報に基づく第１のデータ転送を行わせることを契機として、
前記第１のＤＭＡ部は、前記第２のメモリ部から前記第１のデータ転送情報とデータとを回復し、これを用いて前記第１のデータ転送を行い、
前記第１のデータ転送と並行して、第２のＤＭＡ部は、前記レジスタとバッファに記憶されている第２のデータ転送情報とデータとを、先行して前記第２のメモリ部へと退避することを特徴とするストレージ装置。
【請求項８】
請求項１記載のストレージ装置において、
前記データ転送回路は、前記入出力制御部からの指示に応じて、前記データ入出力要求とデータ転送処理状況とを考慮しつつ、前記複数のＤＭＡ部のうちで、処理途中でないＤＭＡ部を優先して選択するように、前記データ転送を担当させるＤＭＡ部を決定し、前記決定したＤＭＡ部でのデータ転送を起動することを特徴とするストレージ装置。
【請求項９】
請求項１記載のストレージ装置において、
前記制御装置は、
前記入出力制御部と、前記データ転送制御部と、前記第２のメモリ部とが形成された回路基板を備えるチャネル制御部と、
前記第１のメモリ部が形成された回路基板を備えるキャッシュメモリと、
前記キャッシュメモリから前記記憶装置上の記憶ボリュームの記憶領域に対するデータの読み書きを行う回路が形成された回路基板を備えるディスク制御部と、
前記チャネル制御部、キャッシュメモリ、及びディスク制御部を相互接続する接続部とを有して構成され、
前記データ転送回路は、前記バッファを介して、前記キャッシュメモリと前記通信インタフェース部の第３のメモリ部との間のデータ転送を制御することを特徴とするストレージ装置。
【請求項１０】
請求項１記載のストレージ装置において、
前記入出力制御部は、第１のプロセッサを有し、
前記第２のメモリ部は、前記第１のプロセッサにより前記データ転送情報が書き込まれる第１のメモリと、前記ＤＭＡ部により使用される第３のメモリを有し、
前記通信インタフェース部は、前記他装置との間での通信を制御する第２のプロセッサと、前記他装置との間で転送されるデータを記憶する第２のメモリとを有して構成され、
前記ＤＭＡ部は、前記データ転送において、前記第１のメモリから読み出したデータ転送情報を用い、前記第３のメモリに対する前記退避と回復を用いて、前記第１のメモリ部と前記第２のメモリとの間でのデータ転送を行うことを特徴とするストレージ装置。
【請求項１１】
請求項１記載のストレージ装置において、
前記入出力制御部は、第１のプロセッサを有し、
前記第２のメモリ部は、前記第１のプロセッサにより前記データ転送情報が書き込まれる第１のメモリと、前記ＤＭＡ部により前記退避及び回復のために使用される第３のメモリを有し、
前記通信インタフェース部は、内部メモリにデータを記憶しながら前記他装置との間での通信を制御するプロトコルＬＳＩで構成され、
前記ＤＭＡ部は、前記データ転送において、前記第１のメモリから読み出したデータ転送情報を用い、前記第３のメモリに対する前記退避と回復を用いて、前記第１のメモリ部と前記プロトコルＬＳＩの内部メモリとの間でのデータ転送を行うことを特徴とするストレージ装置。
【請求項１２】
請求項１記載のストレージ装置において、
前記データ転送制御部は、前記ＤＭＡ部で第２のデータ転送を行わせる際、その第２のデータ転送が、そのＤＭＡ部での過去の第１のデータ転送に関連するデータ入出力であり、前記退避済みのレジスタとバッファにその第２のデータ転送に必要なデータ転送情報やデータが記憶されている場合は、それを利用して前記回復動作無しで前記第２のデータ転送を行わせることを特徴とするストレージ装置。
【請求項１３】
請求項１２記載のストレージ装置において、
前記データ転送制御部は、前記他装置からのデータの受信や前記制御装置内からのコマンドに応じて、前記データ入出力で関連する複数のデータ転送である場合には、それら複数のデータ転送を、できる限り同じＤＭＡ部に連続して担当させ、前記回復動作無しで前記複数のデータ転送を行わせることを特徴とするストレージ装置。
【請求項１４】
請求項９記載のストレージ装置において、
前記制御装置は、前記データ入出力処理において、
通常時には、前記退避や回復の動作を用いてデータ転送を処理し、
前記ＤＭＡ部のバッファから前記キャッシュメモリへ、関連する複数のデータをまとめて書き込む処理の時には、前記データ転送制御部は、前記他装置側から前記ＤＭＡ部のバッファへと前記複数のデータにおける各データを蓄積するごとに、前記第２のメモリ部に対する退避と回復の動作無しで前記キャッシュメモリへ書き込みする制御を行うことを特徴とするストレージ装置。
【請求項１５】
請求項９記載のストレージ装置において、
前記制御装置は、前記データ入出力処理において、
通常時には、前記退避や回復の動作を用いてデータ転送を処理し、
前記キャッシュメモリから前記ＤＭＡ部のバッファへ、関連する複数のデータをまとめて読み出す処理の時には、前記データ転送制御部は、前記複数のデータについて、その各データを前記ＤＭＡ部のバッファから前記他装置側へと転送するごとに、前記第２のメモリ部に対する退避と回復の動作無しで前記キャッシュメモリから再読み出ししたデータを用いて前記他装置側へデータ転送する制御を行うことを特徴とするストレージ装置。
【請求項１６】
他装置からデータ入出力要求を受信して、記憶装置上の記憶ボリュームに対してデータ入出力処理する制御装置を備えるストレージ装置であって、
前記制御装置は、前記データ入出力処理のために前記他装置との間でのデータ転送を制御するもので、前記データ入出力処理を制御する第１のプロセッサと、前記第１のプロセッサの指示に基づいて前記データ転送を制御するデータ転送制御部と、前記データ転送における転送先または転送元となるキャッシュメモリと、前記第１のプロセッサにより書き込まれる前記データ転送を制御するためのデータ転送情報を記憶する第１のメモリと前記データ転送制御部により使用される第３のメモリとを有し、
前記データ転送制御部は、ＤＭＡデータ転送制御を行うデータ転送回路と、前記他装置との通信インタフェースを備え通信処理を行う通信インタフェース部とを有し、
前記通信インタフェース部は、前記他装置との間での通信を制御する第２のプロセッサと、前記他装置との間で転送されるデータを記憶する第２のメモリとを有し、
前記データ転送回路は、ＤＭＡ制御部と、前記データ転送情報を記憶するレジスタと、転送されるデータを記憶するバッファとを備えたＤＭＡ部を複数有し、
前記ＤＭＡ部は、前記データ転送の制御において、前記第１のメモリから読み出したデータ転送情報に従って、前記レジスタに記憶されるデータ転送情報と前記バッファに記憶されるデータとを前記第３のメモリへ退避する動作と、前記第３のメモリに退避されているデータ転送情報とデータとを前記レジスタと前記バッファに回復する動作とを用いて、前記キャッシュメモリと前記第２のメモリとの間でのデータ転送を行い、
前記データ転送制御部は、前記複数のＤＭＡ部を用いて１つ以上のデータ転送を並行的に処理し、１つのＤＭＡ部においても前記退避や回復の動作を用いて前記データ転送を切り替えながら処理させて、複数のデータ転送を多重に処理し、前記データ転送処理中でないＤＭＡ部で前記レジスタに記憶されているデータ転送情報と前記バッファに記憶されているデータとを、先行して前記第３のメモリへと退避させる制御を行うことを特徴とするストレージ装置。
【請求項１７】
情報処理装置からデータ入出力要求を受信して、記憶装置上の第１の記憶ボリュームに対してデータ入出力処理を行う第１の制御装置を備えた第１のストレージ装置と、
前記第１の制御装置と通信可能に接続され、記憶装置上の第２の記憶ボリュームに対してデータ入出力処理を行う第２の制御装置を備えた第２のストレージ装置とを有するストレージシステムを構成する、前記第１のストレージ装置であって、
前記第１の制御装置は、
前記第１または第２の記憶ボリュームに対するデータ入出力処理のために、他装置である前記情報処理装置または前記第２の制御装置との間でのデータ転送を制御するものであり、
前記データ入出力処理を制御する入出力制御部と、
前記入出力制御部の指示に基づいて前記データ転送を制御するデータ転送制御部と、
前記データ転送における転送先または転送元となる第１のメモリ部と、
前記データ転送を制御するためのデータ転送情報を記憶する第２のメモリ部とを有し、
前記データ転送制御部は、
ＤＭＡデータ転送制御を行うデータ転送回路と、
前記他装置との通信インタフェースを備え通信処理を行う通信インタフェース部とを有し、
前記データ転送回路は、
ＤＭＡ制御部と、前記データ転送情報を記憶するレジスタと、転送されるデータを記憶するバッファとを備えたＤＭＡ部を複数有し、前記ＤＭＡ部の前記レジスタに記憶されるデータ転送情報と前記バッファに記憶されるデータとを前記第２のメモリ部へ退避する動作と、前記第２のメモリ部に退避されているデータ転送情報とデータとを前記ＤＭＡ部の前記レジスタと前記バッファに回復する動作とを行わせ、前記複数のＤＭＡ部を用いて１つ以上のデータ転送を並行的に処理し、１つのＤＭＡ部においても前記退避や回復の動作を用いて前記データ転送を切り替えながら処理させて、複数のデータ転送を多重に処理し、前記データ転送処理中でないＤＭＡ部で、前記レジスタに記憶されているデータ転送情報と前記バッファに記憶されているデータとを、先行して前記第２のメモリ部へと退避させる制御を行うことを特徴とするストレージ装置。
【請求項１８】
請求項１７記載のストレージ装置において、
前記入出力制御部は、
前記他装置である情報処理装置から、前記第２のストレージ装置内にある第２の記憶ボリュームに対するデータ入出力要求を受信すると、それに対応した前記第２のストレージ装置に対するデータ入出力処理のためのデータ転送を制御するためのデータ転送情報を、前記第２のメモリ部に書き込み、
前記データ転送制御部は、前記第２のメモリ部から前記レジスタに読み出した前記データ転送情報に基づいて、前記第１のメモリ部と前記第２の制御装置との間のデータ転送を制御することを特徴とするストレージ装置。
【請求項１９】
請求項１７記載のストレージ装置において、
前記入出力制御部は、
前記他装置である情報処理装置から、前記第１の記憶ボリュームに対するデータ書き込み要求及び書き込みデータを受信すると、それに対応して、前記第１の記憶ボリュームに対するデータ書き込み処理と、前記書き込みデータの複製を前記第２のストレージ装置内にある第２の記憶ボリュームにも書き込む処理とのためのデータ転送を制御するためのデータ転送情報を、前記第２のメモリ部に書き込み、
前記データ転送制御部は、前記第２のメモリ部から前記レジスタに読み出した前記データ転送情報に基づいて、前記第１のメモリ部と前記第２の制御装置との間の前記書き込みデータの転送を含むデータ転送を制御することを特徴とするストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置（ディスクアレイ装置ともいう）に関し、特に、ホストとなる情報処理装置や他のストレージ装置などの他装置との間でのデータ転送を制御する技術に関する。
【背景技術】
【０００２】
近年、ストレージ装置の技術において、複数のストレージ装置を通信可能に接続した構成において、情報処理装置からデータ入出力要求を受信した第１のストレージ装置が、これに通信接続される他の第２のストレージ装置に記憶されるデータをアクセスするような運用が行われるようになっている。このような運用の例としては、ディザスタリカバリを実現するためのストレージ装置間のリモートコピー機能や、ストレージ・コンソリデーションなどが挙げられる。
【０００３】
特許文献１には、上記のような運用が行われるストレージ装置の技術例について記載されている。
【特許文献１】米国特許第５７４２７９２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、前記運用のような場合では、第１のストレージ装置と、情報処理装置や第２のストレージ装置などの他装置との間でのデータ入出力の性能は、他装置との間で行われる通信により制約される。特に、前記他装置との間の通信においてストレージ制御装置（制御装置と略称する）のデータ転送制御部（ＤＴＣと略称する）でデータ転送を多重に処理することを考えた場合、この処理の性能に応じて前記データ入出力の性能が左右されることとなる。
【０００５】
本発明は以上のような問題に鑑みてなされたものであり、その目的は、ストレージ装置と他装置との間でデータ入出力が行われる場合に、制御装置のデータ転送制御部で、他装置とのデータ転送を、メモリ間でのデータ転送情報やデータの退避／回復動作を利用して多重に処理し、なおかつ前記退避／回復による負荷を抑えてデータ入出力性能を向上できる技術を提供することにある。
【課題を解決するための手段】
【０００６】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明のストレージ装置は、ハードディスクドライブ（ＨＤＤ）等の記憶装置と、記憶装置に対するデータの記憶を制御する制御装置とを備え、ＲＡＩＤ制御機能を持つ装置であって、以下に示す技術的手段を有することを特徴とする。
【０００７】
本発明のストレージ装置は、ホストとなる情報処理装置や他のストレージ装置などの他装置と、通信手段を通じて通信接続されて、ストレージシステムを構成する。このストレージシステムにおいて、情報処理装置からストレージ装置に対するデータ入出力や、複数のストレージ装置の間でのデータ入出力などが行われる。本発明のストレージ装置（第１のストレージ装置とする）は、他装置である前記情報処理装置または第２のストレージ装置との間でのデータ入出力に係わり、制御装置において、他装置との間でのデータ転送を多重に処理する。前記データ入出力は、第１や第２のストレージ装置の記憶装置上に設けられた記憶ボリュームに対するデータの書き込みや読み出し等である。前記データ転送は、他装置のメモリと制御装置のメモリとの間でのデータ転送である。
【０００８】
制御装置において、データ入出力を制御する入出力制御部（ＩＯＣと略称する）と、データ転送を制御するデータ転送制御部（ＤＴＣ）と、データ転送先や転送元となるメモリ部（第１のメモリ部とする）とを有する。ＤＴＣは、例えば、ＤＭＡ（ダイレクトメモリアクセス）データ転送制御を行う集積回路（データ転送回路）と、他装置との前記通信手段を通じた通信を処理する通信インタフェース部とを有する。またＤＴＣは、データ転送制御のために使用するメモリ部（第２のメモリ部とする）にも接続される。通信インタフェース部は、通信に使用するメモリ部（第３のメモリ部とする）を有する。他装置は、データ転送先や転送元となるメモリ部（第４のメモリ部とする）を有する。制御装置は、他装置とのデータ入出力において、前記第１のメモリ部と第４のメモリ部との間で、ＤＴＣによって、転送元のメモリ部におけるデータ記憶位置から、転送先のメモリ部のデータ記憶位置へのデータ転送を制御する。前記第１のメモリ部は、例えば、第１のストレージ装置の制御装置内に有するキャッシュメモリである。また前記第４のメモリ部は、情報処理装置のメモリや第２のストレージ装置の制御装置内に有するメモリなどである。なお第１〜第４の「メモリ部」を論理的なメモリ資源とし、第１〜第３の「メモリ」（メモリ＃１〜＃３）を独立した物理的なメモリ資源とすることに注意しておく。
【０００９】
前記データ転送回路は、ＤＭＡ制御部（ＤＭＡＣ）と、データ転送制御に用いるメモリとを備えたＤＭＡ部を、少なくとも２つ以上備える。前記ＤＭＡ部の備えるメモリは、データ転送情報を記憶するレジスタと、データを記憶するバッファとを有する。以下、ＤＴＣで扱う「データ」とは、データ転送における転送データに対応している。
【００１０】
制御装置において、データ転送回路は、ＩＯＣからの指示をもとにレジスタへデータ転送情報を構成する。例えばＩＯＣが作成したスクリプトに従ってデータ転送情報を作成する。ＤＭＡ部は、ＤＭＡＣによって、レジスタのデータ転送情報に従って、バッファにデータをストア・アンド・フォワードしながら、第１のメモリ部方向や第３のメモリ部方向に対するデータ転送を制御する。また、データ転送回路は、データ転送情報やデータの退避／回復用のメモリに接続される。前記第２のメモリ部の一部が前記退避／回復用のメモリに対応する。
【００１１】
ＤＭＡ部は、自身のメモリに記憶されるデータ転送情報とデータについて、第２のメモリ部に対して、データ転送情報又はデータ又はその組を、退避すなわち書き出したり、回復すなわち読み出したりといった動作を行いながら、データ転送を制御する。
【００１２】
データ転送回路は、複数のＤＭＡ部を用いて１つ以上のデータ転送を並行的に処理すると共に、１つのＤＭＡ部においても前記退避／回復の動作を用いてデータ転送を切り替えながら処理することで、複数のデータ転送を多重に処理する。ＤＴＣは、複数のＤＭＡ部のいずれでデータ転送を担当させるかを決定する。例えばデータ転送回路は、ＩＯＣからの指示に基づき、複数のＤＭＡ部のいずれでデータ転送を処理させるかを決定する。
【００１３】
前記ＩＯＣは、例えば第１のプロセッサで構成される。前記通信インタフェース部は、例えば第２のメモリコントローラと、第２のメモリコントローラに接続される第２のプロセッサ及び第２のメモリとで構成される。前記第２のメモリ部は、第１のメモリコントローラと、第１のメモリコントローラに接続される第１のメモリと、データ転送回路に接続される第３のメモリとで構成される。
【００１４】
制御装置は、例えば、他装置との通信インタフェースを備えたチャネル制御部、記憶装置との通信インタフェースを備えたディスク制御部、データを記憶するキャッシュメモリ、制御情報を記憶する共有メモリ、これら各部を相互接続する接続部などにより構成される。例えば、チャネル制御部が、前記ＩＯＣと、前記ＤＴＣと、前記第２のメモリ部とを備える構成である。チャネル制御部は、他装置との間で通信を行い、キャッシュメモリに対してデータを読み書きする。ディスク制御部は、キャッシュメモリや記憶ボリュームに対してデータを読み書きする。
【００１５】
また他のチャネル制御部の構成として、前記通信インタフェース部が、他装置との通信を処理する１つのプロトコルＬＳＩで構成される。プロトコルＬＳＩの持つメモリと他装置のメモリとの間でのデータ転送を含んだ通信処理が行われる。
【００１６】
本発明のストレージ装置は、前記制御装置において、データ転送制御に関する、以下のような第１〜第４の制御を行う。ストレージ装置のハードウェア構成に応じて各制御が行われる構成である。また複数の制御を選択的に実行する構成とすることもできる。また処理状況などに応じて各制御を選択的に実行可能な構成とすることもできる。
【００１７】
（１）  本発明のストレージ装置は、第１の制御として、ＤＴＣは、データ転送処理中でないＤＭＡ部で、メモリに記憶されているデータ転送情報又はデータ又はその組を、今後のデータ転送のために、あらかじめ時間的に先行して第２のメモリ部へと退避しておく制御を行う。例えば、或るＤＭＡ部でデータ転送を行わせるのと並行して、他のＤＭＡ部でメモリに記憶されているデータ転送情報とデータを、先行して第２のメモリ部へと退避しておく。例えば、ＤＴＣは、第１のＤＭＡ部で第１のデータ転送を担当させ、第２のメモリ部から必要なデータ転送情報やデータを回復させて、回復したデータ転送情報とデータを用いて第１のデータ転送を行わせる。そしてＤＴＣは、前記第１のデータ転送を契機として、第２のＤＭＡ部でメモリに記憶されているデータ転送情報やデータを第２のメモリ部へと退避させる。また同様に、ＤＴＣは、前記第２のＤＭＡ部で第２のデータ転送を行わせるのと並行して、前記第１のＤＭＡ部で先行して退避を行わせる。
【００１８】
（２）  また本発明の他のストレージ装置は、第２の制御として、ＤＴＣは、前記第１の制御における先行退避を行うのに加えて、或るＤＭＡ部でデータ転送を行わせる際、ＤＭＡ部の退避済みのメモリに、回復すべきデータ転送情報やデータが残っている場合は、その残っているデータ転送情報やデータを利用して、回復動作を行わずにデータ転送を行わせる。ＤＴＣは、或るＤＭＡ部で第１、第２のデータ転送を順に行わせる際に、第２のデータ転送が第１のデータ転送に関連するデータ入出力である場合に、ＤＭＡ部のメモリに記憶されているデータ転送情報とデータを利用して回復動作無しでデータ転送を行わせる。例えば、ＤＴＣは、順次データである複数のデータブロックの連続的な転送の場合などに、或るＤＭＡ部でそれらデータ転送を続けて担当させ、ＤＭＡ部のメモリに残っているデータ転送情報とデータを利用して回復動作無しでそれらデータ転送を行わせる。なお前記退避動作が第２のメモリ部へのコピーであることが条件である。
【００１９】
（３）  また本発明の他のストレージ装置は、第３の制御として、キャッシュライト処理など、ＤＭＡ部のバッファから前記第１のメモリ部へ、データ入出力において関連する複数のデータをまとめて書き込む処理を行う場合などにおいて以下の制御を行う。ＤＴＣは、他装置側からＤＭＡ部のバッファへと前記複数のデータにおける各データを蓄積するごとに、前記第２のメモリ部に対する退避と回復の動作無しで、前記第１のメモリ部へ書き込みすなわちデータ掃き出しする制御を行う。
【００２０】
（４）  また本発明の他のストレージ装置は、第４の制御として、キャッシュリード処理など、前記第１のメモリ部からＤＭＡ部のバッファへ、データ入出力において関連する複数のデータをまとめて読み出す処理を行う場合などにおいて以下の制御を行う。ＤＴＣは、前記複数のデータについて、その各データをＤＭＡ部のバッファから他装置側へと転送するごとに、前記第２のメモリ部に対する退避と回復の動作無しで、前記第１のメモリ部から再読み出ししたデータを用いて他装置側へデータ転送する制御を行う。
【発明の効果】
【００２１】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。本発明によれば、ストレージ装置と他装置との間でデータ入出力が行われる場合に、制御装置のデータ転送制御部で、他装置とのデータ転送を、メモリ間でのデータ転送情報やデータの退避／回復動作を利用して多重に処理し、なおかつ前記退避／回復による負荷を抑えてデータ入出力性能を向上できる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。図１〜１８は、本発明の各実施の形態におけるストレージ装置６００を説明するための図である。まず、各実施の形態で共通となる構成について説明する。各実施の形態は、基本となるハードウェア構成は同様であり、制御装置における制御論理が異なる。
【００２３】
＜ハードウェア構成＞
図１は、ストレージ装置６００の全体のハードウェア外観構成を示す斜視図である。ストレージ装置６００は、例えば、基本筐体１１と複数の増設筐体１２とから構成することができる。基本筐体１１は、ストレージ装置６００の最小構成単位であり、後述する制御装置１００などが担う制御機能及び記憶装置３０が担う記憶機能の両方を備えている。制御機能は、上位装置などからの命令や要求に応じて記憶装置３０の記憶領域に対するデータの記憶を制御する機能である。制御装置１００は、例えば、機能ごとの制御パッケージ１３が相互接続されることにより構成される。記憶機能は、ユーザデータ等のデータを記憶領域に記憶する機能である。本実施の形態では、記憶装置３０としてＨＤＤが記憶領域を提供する。増設筐体１２は、ストレージ装置６００のオプション単位であり、記憶機能を備える。増設筐体１２は、基本筐体１１の有する制御機能により制御される。例えば、基本筐体１１に対して４つの増設筐体１２を接続した構成が可能である。各筐体間が通信ケーブルで接続される。
【００２４】
基本筐体１１には、複数の制御パッケージ１３と、複数の電源ユニット１４と、複数のバッテリユニット１５と、複数の記憶装置３０とがそれぞれ着脱可能に設けられている。筐体の上部などには、複数の冷却ファン１６もそれぞれ設けられている。電源ユニット１４は筐体内各部に対する電源を供給する。バッテリユニット１５はバックアップ電源として機能する。冷却ファン１６は筐体内の冷却を行う。記憶装置３０はディスク領域にデータを記憶する装置であり、筐体装着のための機械的構造も備えている。増設筐体１２では、多数の記憶装置３０を並列的に装着可能である。
【００２５】
制御パッケージ１３は、後述のチャネル制御部１１０などの各機能をそれぞれ実現するモジュールである。制御パッケージ１３は、機能を実装したボードに筐体装着のための機械的構造を備えたユニットである。基本筐体１１には、制御パッケージ１３として、複数のＣＨＡパッケージ、複数のＤＫＡパッケージ及び１つ以上のメモリパッケージ等がそれぞれ着脱可能に設けられ、制御パッケージ１３単位で交換可能となっている。各制御パッケージ１３は、筐体に設けられているスロットに挿入され、スロット内部で各部相互接続のためのバックプレーンボードに接続される。
【００２６】
＜ストレージシステム構成＞
図２は、ストレージ装置６００を含んで構成されるストレージシステムの全体の構成を示すブロック図である。本ストレージシステムは、ストレージ装置６００として、第１のストレージ装置（Ａ）６０１と、第２のストレージ装置（Ｂ）６０２を有し、ＳＡＮ５００を介して、第１のストレージ装置６０１と情報処理装置２００が通信接続される。また、ＳＡＮ５００を介して、第１のストレージ装置６０１と第２のストレージ装置６０２が通信接続される。
【００２７】
第１のストレージ装置６０１は、第１のストレージ制御装置（制御装置）（Ａ）１０１と、第１のストレージ駆動装置（以下、駆動装置と称する）（Ａ）３０１とを有して構成される。第２のストレージ装置（Ｂ）６０２は、第２の制御装置（Ｂ）１０２と、第２の駆動装置（Ｂ）３０２とを有して構成される。各制御装置及び駆動装置については、同じ機能としても異なる機能としてもよいが、本例では同じ機能とする。以下、第１、第２のストレージ装置６０１，６０２、制御装置１０１，１０２、駆動装置３０１，３０２を区別しない場合は、それぞれ、ストレージ装置６００、制御装置１００、駆動装置３００と称する。
【００２８】
情報処理装置２００は、ＣＰＵやメモリを備えたコンピュータ等の機器であり、第１のストレージ装置６０１に対するデータ入出力のアクセスを行うホストコンピュータである。情報処理装置２００は、例えばＰＣ、ワークステーション、サーバ、メインフレームコンピュータといった形態のホストコンピュータである。情報処理装置２００は、ＣＰＵにより各種プログラムが実行されることにより、ホストコンピュータとしての様々な機能が実現される。情報処理装置２００は、第１のストレージ装置６０１に対するデータ入出力のアクセスを行うためのソフトウェア（管理プログラムと称する）と、第１のストレージ装置６０１に対するアクセスを利用して情報処理サービスを行うためのアプリケーションプログラム等とを備える。情報処理装置２００からの入出力データは、第１のストレージ装置６０１や第２のストレージ装置６０２内の記憶ボリューム３１０に格納される。
【００２９】
制御装置１０１は、情報処理装置２００からデータ入出力要求を受信し、駆動装置３０１が備える、データを記憶するための第１の記憶ボリューム３１１に対して、データ入出力処理を行う。制御装置１０２は、制御装置１０１と通信可能に接続され、駆動装置３０２が備える、データを記憶するための第２の記憶ボリューム３１１に対して、データ入出力処理を行う。第１、第２の記憶ボリューム３１１，３１２を区別しない場合は単に記憶ボリュームを３１０と称する。
【００３０】
記憶ボリューム３１０は、例えばＨＤＤ等の記憶装置３０により提供される物理的な記憶領域である物理ボリュームと、物理ボリューム上に論理的に設定される記憶領域である論理ボリュームとを含む、データを記憶するための記憶リソースをいう。以下、論理ボリュームをＬＵ（論理ユニット）とも称する。
【００３１】
制御装置１０１は、ＳＡＮ５００を介して情報処理装置２００に通信接続される。ＳＡＮ５００を介して行われる通信は、例えばファイバチャネル（ＦＣ）・プロトコルに従って行われる。情報処理装置２００と制御装置６０１はＳＡＮ５００上でＦＣプロトコルに従った通信を行う機能を備えている。情報処理装置２００からは、第１のストレージ装置６０１に対して、ＦＣプロトコルに従ってデータ入出力要求が送信される。
【００３２】
また、制御装置１０１は、ＳＡＮ５００を介して制御装置１０２に通信接続される。こちらも同様に、ＳＡＮ５００を介して例えばＦＣ・プロトコルに従って通信が行われる。制御装置６０１と制御装置６０２はＳＡＮ５００上でＦＣプロトコルに従った通信を行う機能を備えており、制御装置１００間で、ＦＣプロトコルに従ってデータ入出力要求が送信される。
【００３３】
ＳＡＮ５００は、例えば、ＦＣプロトコルに準拠した少なくとも１つ以上のスイッチ等の通信機器により構成される。また、ＦＣプロトコルに従って通信が行われる場合には、送受信されるデータは、所定のデータ長（例えば２ｋｂ）ごとに１つ以上のデータブロックに分割され、データブロックを単位として通信が制御される。また、情報処理装置２００と制御装置１０１を接続するＳＡＮ５００は、制御装置１０１と制御装置１０２を接続するＳＡＮ５００と、通信可能に接続された同一ネットワークとしてもよいし、通信可能に接続されていない別ネットワークとしてもよい。また、ＳＡＮ５００及びＦＣプロトコル以外の通信手段を用いて通信接続してもよい。例えば、情報処理装置２００と制御装置１０１の間の通信は、ＦＩＣＯＮ（Fibre Connection）（登録商標）やＥＳＣＯＮ（Enterprise System Connection）（登録商標）等のメインフレーム系のプロトコルを用いてもよいし、インターネット等で用いられるＴＣＰ／ＩＰなどのプロトコルを用いてもよい。また、複数の異なる通信手段を用いてそれぞれ独立して通信接続してもよい。
【００３４】
第２のストレージ装置６０２は、第１のストレージ装置６０１とは遠隔したサイトに設置されるようにすることができる。この場合、第１、第２のストレージ装置６０１，６０２の間でリモートコピーの実行が可能な構成とすることにより、災害などで第１のストレージ装置６０１に記憶されているデータが消失あるいは読み書き不能となった場合でも、第２のストレージ装置６０２に記憶されているデータを用いて、情報処理装置２００による情報処理サービスの提供を継続可能とするようにすることができる。リモートコピーとは、記憶ボリューム３１０のコピーペアの制御を行って、第１のストレージ装置６０１に記憶されるデータの複製を、第２のストレージ装置６０２に記憶すること又はその技術をいう。この場合、第１、第２のストレージ装置６０１，６０２に記憶されるデータを一致させておくために、情報処理装置２００によって第１のストレージ装置６０１の記憶ボリューム３１０に対してデータが書き込まれると、その書き込みデータの複製が第１のストレージ装置６０１から第２のストレージ装置６０２へ送信される。そして、第２のストレージ装置６０２が、前記書き込みデータの複製を駆動装置３０２内の複製用の記憶ボリューム３１０に記憶する。前記コピーペアの制御は公知技術である。
【００３５】
また、第１、第２のストレージ装置６０１，６０２を通信接続することにより、ストレージ・コンソリデーションを実現可能である。ストレージ・コンソリデーションとは、複数のストレージ装置６００に分散して蓄積されている大量のデータを有効に活用するために、各ストレージ装置６００にばらばらに記憶されているデータを統合管理する技術である。これにより、例えば、第１のストレージ装置６０１を新たにシステムに導入する場合に、それまで使用してきた古い第２のストレージ装置６０２をそのまま使用して、過去からの大量のデータの蓄積を有効に活用できる。また、異なるメーカのストレージ装置６００にそれぞれ記憶されているデータを統合管理可能である。この場合、情報処理装置２００は、第１のストレージ装置６０１に対してデータ入出力要求を送信することにより、第１のストレージ装置６０１のみならず、第２のストレージ装置６０２に記憶されるデータに対してもアクセス可能となる。
【００３６】
なお、本例に示すストレージシステムは、第１のストレージ装置６０１と第２のストレージ装置６０２とを１台ずつ有する構成であるが、それぞれを複数台とした構成も可能である。
【００３７】
駆動装置３００は、多数の記憶装置３０を備えている。これにより、ストレージ装置６００は、情報処理装置２００に対して大容量の記憶領域を提供する。駆動装置３００は、記憶装置３０として例えば複数のディスクドライブにより、ディスクアレイを構成可能である。この場合、情報処理装置２００に対して提供される記憶領域は、ＲＡＩＤにより管理されたディスクアレイ（ＲＡＩＤグループともいう）により提供されるようにすることが可能である。
【００３８】
各記憶ボリューム３１０には、それぞれ固有の識別子（ＬＵＮ（ＬＵ番号）とも称する）が付与されている。情報処理装置２００から第１のストレージ装置６０１に対するデータ入出力要求には、データ記憶領域を指定するためのＬＵＮが記述されている。第１のストレージ装置６０１は、情報処理装置２００に対して、ＬＵＮ指定による記憶領域を提供する機能を備える。
【００３９】
制御装置１００と駆動装置３００の間は、図２に示すように直接に接続される形態とすることもできるし、ネットワークを介して接続される形態とすることもできる。更に、駆動装置３００が制御装置１００と一体として構成される形態とすることもできる。
【００４０】
＜制御装置＞
制御装置１００は、チャネル制御部（ＣＨＡと略称する）１１０、共有メモリ（ＳＭと略称する）１２０、キャッシュメモリ（ＣＭと略称する）１３０、ディスク制御部（ＤＫＡと略称する）１４０、接続部１５０、管理端末（ＳＶＰ）１６０を備えて構成される。各部は、例えばユニット化された１つ以上の回路基板により実現される。
【００４１】
ＣＨＡ１１０は、情報処理装置２００や他のストレージ装置６００等の他装置との間で通信を行うための通信インタフェースを備え、他装置と制御装置１００内の処理部との間でデータ入出力要求やデータを授受する機能を備える。ＣＨＡ１１０としては、通信インタフェースに応じたものを１つ以上用意して使用可能である。第１のストレージ装置６０１に対して、情報処理装置２００や第２のストレージ装置６０２を、他装置７００と称する。
【００４２】
ＤＫＡ１４０は、駆動装置３００が備える記憶ボリューム３１０に記憶されるデータの読み書きを行う。ＤＫＡ１４０は、例えば、ＣＨＡ１１０が情報処理装置２００から受信したデータ書き込み要求に従って、駆動装置３００へデータの書き込みを行う。ＤＫＡ１４０としては同機能のものを１つ以上用意して使用可能である。
【００４３】
各ＣＨＡ１１０と各ＤＫＡ１４０は、管理端末１６０と共に内部ＬＡＮ１５１で接続されている。これにより、各ＣＨＡ１１０や各ＤＫＡ１４０で実行されるプログラム等を管理端末１６０から送信してインストール可能となっている。
【００４４】
接続部１５０は、ＣＨＡ１１０、ＳＭ１２０、ＣＭ１３０、ＤＫＡ１４０を相互に接続し、例えば高速クロスバースイッチで構成される。ＣＨＡ１１０、ＳＭ１２０、ＣＭ１３０、ＤＫＡ１４０の間でのデータやコマンドの授受は、接続部１５０を介して行われる。
【００４５】
ＳＭ１２０とＣＭ１３０は、ＣＨＡ１１０とＤＫＡ１４０により共有して使用されるメモリである。ＳＭ１２０は、主に制御情報やコマンド等を記憶するために使用される。ＣＭ１３０は、主にデータ（情報処理装置２００から入出力されるデータを含む）を記憶するために使用される。ＳＭ１２０とＣＭ１３０は、例えば、データ・情報を記憶するためのメモリが形成された回路基板を備えて構成される。
【００４６】
ストレージ装置６００でのデータ入出力処理は例えば以下のような流れになる。或るＣＨＡ１１０が情報処理装置２００から受信したデータ入出力要求がデータ書き込み要求であった場合、当該ＣＨＡ１１０は、データ書き込み要求をＳＭ１２０に書き込むと共に、情報処理装置２００から受信した書き込みデータをＣＭ１３０に書き込む。一方、ＤＫＡ１４０は、ＳＭ１２０を監視しており、ＳＭ１２０にデータ書き込み要求が書き込まれたことを検出すると、当該データ書き込み要求に従ってＣＭ１３０から書き込みデータを読み出して、駆動装置３００に書き込む。また、或るＣＨＡ１１０が情報処理装置２００から受信したデータ入出力要求がデータ読み出し要求であった場合、読み出し対象となるデータがＣＭ１３０に存在するかどうかを調べる。ここでＣＭ１３０に前記データが存在する場合、ＣＨＡ１１０はそのデータを情報処理装置２００に送信する。一方、ＣＭ１３０に前記データが存在しない場合、ＣＨＡ１１０はデータ読み出し要求をＳＭ１２０に書き込むと共に、ＳＭ１２０を監視する。データ読み出し要求がＳＭ１２０に書き込まれたことを検出したＤＫＡ１４０は、駆動装置３００から読み出し対象となるデータを読み出してＣＭ１３０に書き込むと共に、その旨をＳＭ１２０に書き込む。そしてＣＨＡ１１０は、読み出し対象となるデータがＣＭ１３０に書き込まれたことを検出すると、そのデータを情報処理装置２００へ送信する。このように、ＣＨＡ１１０とＤＫＡ１４０の間では、ＣＭ１３０を介してデータの授受が行われる。なお、ＣＭ１３０とＳＭ１２０とを一体的に形成された構成とすることもできる。
【００４７】
ＣＭ１３０には、第１の制御装置１０１と、情報処理装置２００または第２の制御装置１０２の少なくともいずれかとの間で送受信されるデータが記憶される。例えば、第１のストレージ装置６０１が、情報処理装置２００から、第２のストレージ装置６０２に対するデータ書き込み要求と書き込みデータを受信した場合には、制御装置１０１のＣＨＡ１１０は、当該データ書き込み要求と書き込みデータを、ＣＭ１３０に記憶し、第２の制御装置１０２に送信する。そして第２の制御装置１０２は、受信したデータ書き込み要求に従って書き込みデータを第２の駆動装置３０２に書き込む。また、第１のストレージ装置６０１が情報処理装置２００から第１の駆動装置３０１に対するデータ書き込み要求と書き込みデータを受信した場合に、その書き込みデータを第２のストレージ装置６０２へリモートコピーする場合には、第１の制御装置１０１のＣＨＡ１１０は、ＣＭ１３０に記憶された書き込みデータを、第２の制御装置１０２に送信する。そして、第２の制御１０２は、受信した書き込みデータを第２の駆動装置３０２に書き込む。
【００４８】
なお、ＣＨＡ１１０からＤＫＡ１４０に対するデータの書き込みや読み出しの指示を、ＳＭ１２０を介在させて間接的に行う構成の他、例えばＳＭ１２０を介在させずに直接的に行う構成とすることもできる。また、ＣＨＡ１１０にＤＫＡ１４０の機能を持たせることにより、ＣＨＡ１１０が駆動装置３００に記憶されたデータの読み書きを行うようにすることもできる。
【００４９】
また、本実施の形態では、ＳＭ１２０とＣＭ１３０がＣＨＡ１１０とＤＫＡ１４０に対して独立に設けられている構成であるが、これに限らず、ＳＭ１２０またはＣＭ１３０がＣＨＡ１１０とＤＫＡ１４０の各々に分散されて設けられた構成も好ましい。この場合、接続部１５０は、分散されたＳＭ１２０またはＣＭ１３０を有するＣＨＡ１１０及びＤＫＡ１４０を相互に接続させることになる。
【００５０】
＜情報処理装置＞
情報処理装置２００は、ＣＰＵ、メモリ、ポート、記録媒体読み取り装置、入力装置、出力装置、記憶装置などを備える。前記ＣＰＵが全体の制御を行い、前記メモリに記憶されるプログラムを実行して各種機能を実現する。ＣＰＵがアプリケーションプログラムを実行することにより、例えば銀行の自動預金預け払いサービスなどの各種情報処理サービスの提供が行われる。またＣＰＵが管理プログラムを実行することにより、ストレージ装置６００で扱う記憶ボリューム３１０についての管理が行われる。例えば、第１の駆動装置３０１が備える第１の記憶ボリューム３１１と、第２の駆動装置３０２が備える第２の記憶ボリューム３１１とを対応付け、前記第１の記憶ボリューム３１１にデータが書き込まれると前記第２の記憶ボリューム３１１へそのデータの複製が書き込まれるようにするためのコマンドを、制御装置１０１に送信可能である。また、記憶ボリューム３１０のＬＵＮの設定なども可能である。
【００５１】
前記記録媒体読み取り装置は、情報処理装置２００に内蔵あるいは外付けされ、記録媒体に記録されているプログラムやデータを読み取る。読み取られたプログラムやデータは、前記メモリや前記記憶装置に格納される。例えば、前記記録媒体読み取り装置によって、記録媒体に記録されている管理プログラムやアプリケーションプログラムを読み取り、メモリに格納することができる。また、前記ポートを介して他の情報処理装置２００からプログラムを受信してメモリに格納することもできる。記録媒体は、フレキシブルディスク、ＣＤ、半導体メモリなどである。前記記憶装置は、例えばＨＤＤや半導体記憶装置である。前記入力装置は、例えばオペレータ等によるデータ入力のためのキーボードやマウス等である。前記出力装置は、例えばデータを外部に出力するためのディスプレイやプリンタ等である。前記ポートは、ストレージ装置６００や他の情報処理装置２００などと通信を行うためのもので、本例ではＳＡＮ５００に接続される。これにより制御装置１０１と通信可能である。なお、ＦＣにおいては、周知技術として、ポートにはＳＡＮ５００上の機器を特定する識別子であるＷＷＮ（World Wide Name）が付与されている。
【００５２】
＜管理端末（ＳＶＰ）＞
管理端末１６０は、ストレージ装置６００を保守・管理するためのコンピュータである。管理端末１６０を操作することにより、例えば駆動装置３００が備える物理ディスク構成の設定や、ＬＵの設定、ＣＨＡ１１０やＤＫＡ１４０において実行されるプログラムのインストール等が可能である。管理端末１６０は、制御装置１００に内蔵された形態や、外付けされた形態が可能である。また、管理端末１６０は、制御装置１００と駆動装置３００の保守・管理を専用に行うコンピュータの形態や、汎用コンピュータに保守・管理機能を持たせた形態などが可能である。管理端末１６０は、情報処理装置２００と同様に、ＣＰＵ、メモリ、ポート、記録媒体読み取り装置、入力装置、出力装置、記憶装置などを備える。前記ＣＰＵが全体の制御を行い、前記メモリに記憶されるプログラムを実行して保守・管理機能を実現する。前記ポートは内部ＬＡＮ１５１に接続され、これによりＣＨＡ１１０やＤＫＡ１４０と通信可能である。
【００５３】
＜ＤＫＡ＞
ＤＫＡ１４０は、従来の構成に従うものであり、簡単に説明する。ＤＫＡ１４０は、インタフェース部、メモリ、ＣＰＵ、ＮＶＲＡＭ（不揮発性ＲＡＭ）、コネクタ等を備え、これらが、ＣＨＡ１１０と同様に一枚もしくは複数枚の回路基板に一体的なユニットとして形成される。前記インタフェース部は、接続部１５０を介してＣＨＡ１１０等との間で通信を行うための通信インタフェースや、駆動装置３００との間で通信を行うための通信インタフェースを備える。前記ＣＰＵは、ＤＫＡ１４０を構成する回路基板の全体の制御を行うと共に、ＣＨＡ１１０や駆動装置３００、管理端末１６０との間の通信を行う。前記ＣＰＵにより前記メモリや前記ＮＶＲＡＭに格納された各種プログラムが実行されることにより、ＤＫＡ１４０としての機能が実現される。ＤＫＡ１４０の機能としては、駆動装置３００に記憶されるデータの読み書きの制御や、ＲＡＩＤグループに対するＲＡＩＤ制御などがある。前記ＮＶＲＡＭは、制御プログラムなどを格納し、管理端末１６０から書き込みや書き替えが可能である。
【００５４】
＜データ入出力に係わる構成＞
図３は、第１のストレージ装置６０１と他装置７００との間でのデータ入出力に係わる構成の概要を示し、主にデータ転送に係わる処理部とメモリ部についてまとめた図である。１つの論理的な接続パスについて示している。データ入出力として、他装置７００から第１のストレージ装置６０１の記憶ボリューム３１０に対するデータ書き込みとデータ読み出しがある。データ書き込み処理において、他装置７００のメモリを転送元、制御装置１００のＣＭ１３０を転送先としたデータ転送が行われ、データ読み出し処理において、ＣＭ１３０を転送元、他装置７００のメモリを転送先としたデータ転送が行われる。記憶ボリューム３１０はＬＵ等に対応する。
【００５５】
ＣＨＡ１１０において、データ入出力を制御するＩＯＣと、データ転送ＬＳＩ１１４と通信インタフェース部を有しＣＭ１３０と他装置７００の間のデータ転送を制御するＤＴＣと、メモリ＃１（１１７）とメモリ＃３（１１５）などとを有する。通信インタフェース部は、メモリ＃２（１１３）を有する。ＣＭ１３０と駆動装置３００の記憶ボリューム３１０の間では、ＤＫＡ１４０によってデータ転送が行われる。通信インタフェース部と他装置７００の間で、ＳＡＮ５００を介してデータ転送が行われる。データ転送ＬＳＩ１１４は、少なくとも２つのＤＭＡ部＃１（８００Ａ），＃２（８００Ｂ）を備える。区別しない場合は、ＤＭＡ部８００と称する。データ転送ＬＳＩ１１４は、ＤＭＡ部８００によりＣＭ１３０と通信インタフェース部のメモリ＃２（１１３）との間のＤＭＡデータ転送を制御する。
【００５６】
また、本実施の形態においてデータ転送に係わり使用される複数のメモリ部がある。制御装置１００において、ＣＭ１３０を第１のメモリ部、データ転送ＬＳＩ１１４が使用するメモリ＃１（１１７）とメモリ＃３（１１５）を第２のメモリ部、通信インタフェース部が使用するメモリ＃２（１１３）を第３のメモリ部と称し、また他装置７００のメモリを第４のメモリ部と称することとする。
【００５７】
ＤＴＣは、第１のメモリ部と第３のメモリ部との間で、データ転送ＬＳＩ及び第２のメモリ部を用いて、ＤＭＡデータ転送を行う。通信インタフェース部は、第３のメモリ部と第４のメモリ部との間で、通信処理を行う。ＤＫＡ１４０は、第１のメモリ部からＬＵに対するディスクライトやディスクリードを行う。
【００５８】
＜第１のＣＨＡ＞
図４は、ＣＨＡ１１０の構成（第１のＣＨＡ）の例を示す。ＣＨＡ１１０は、回路基板１１０Ａを備えた１つのユニット化されたボードとして構成される。ＣＨＡ１１０は、一枚もしくは複数枚の回路基板１１０Ａを含んで構成される。回路基板１１０Ａには、第１のプロセッサ（プロセッサ＃１）１１９、第２のプロセッサ（プロセッサ＃２）１１２、データ転送ＬＳＩ１１４、第１のメモリ（メモリ＃１）１１７、第２のメモリ（メモリ＃２）１１３、第１のメモリコントローラ（メモリコントローラ＃１）１１６、第２のメモリコントローラ（メモリコントローラ＃２）１１１、第３のメモリ（メモリ＃３）１１５、及び各コネクタ１１８が形成されている。
【００５９】
プロセッサ＃１（１１９），＃２（１１２）、データ転送ＬＳＩ１１４、メモリコントローラ＃１（１１６），＃２（１１１）、メモリ＃３（１１５）は、それぞれ、ＰＣＩバスで通信可能に接続されている。なおＰＣＩバスでの接続に限らず、その一部またはすべての接続を他の規格に準拠した構成とすることができる。
【００６０】
回路基板１１０Ａにおいて、大別すると、プロセッサ＃１（１１９）により入出力制御部（ＩＯＣ）が構成される。また、データ転送ＬＳＩ１１４とプロセッサ＃２（１１２）とメモリコントローラ＃２（１１１）とメモリ＃２（１１３）により、データ転送制御部（ＤＴＣ）が構成される。また、ＤＴＣは、メモリコントローラ＃１（１１６）とメモリ＃１（１１７）とメモリ＃３（１１５）とにより構成される第２のメモリ部を有している。プロセッサ＃２（１１２）とメモリコントローラ＃２（１１１）とメモリ＃２（１１３）から成る部分は、他装置７００との間での通信を行うための通信インタフェース機能を提供する通信インタフェース部を構成する。通信インタフェース部は、メモリコントローラ＃２（１１１）とメモリ＃２（１１３）で構成される第３のメモリ部を有している。
【００６１】
メモリコントローラ＃２（１１１）と接続されるコネクタ１１８は、他装置７００と通信を行うためのコネクタである。データ転送ＬＳＩ１１４と接続されるコネクタ１１８は、接続部１５０を介してＣＭ１３０側と通信を行うためのコネクタである。
【００６２】
ＩＯＣは、データ入出力制御のためにメモリ＃１（１１７）に対して読み書きし、ＤＴＣを制御する。ＤＴＣは、データ転送制御のために第２のメモリ部に対して読み書きし、データ入出力に係わる、ＣＭ１３０とメモリ＃２（１１３）との間でのデータ転送を制御する。通信インタフェース部は、第３のメモリ部を読み書きして他装置７００との通信を行う。通信インタフェース部は、例えば、他装置７００に送信するデータをＦＣプロトコルに従ったデータ形式に変換して送信し、他装置７００から受信するデータを元の形式に変換する処理を行う。
【００６３】
プロセッサ＃１（１１９）は、メモリ＃１（１１７）に記憶される制御プログラムを実行することにより、ＣＨＡ１１０を構成する回路基板１１０Ａの全体の制御を行う。例えば、情報処理装置２００から送信されたデータ入出力要求を解析して、その要求が第１の駆動装置３０１に対するものなのか、第２の駆動装置３０２に対するものなのか、第１の駆動装置３０１に対するものである場合にはリモートコピーを行う必要があるのか／ないのか等を判断し、それらに応じて、データ転送ＬＳＩ１１４にデータ転送の指示を行う。プロセッサ＃１（１１９）は、データ転送の指示のために、メモリ＃１（１１７）に、ＣＭ１３０と他装置７００との間でのデータ転送制御のためのデータ転送情報を、スクリプトの形式で書き込む。
【００６４】
通信インタフェース部において、プロセッサ＃２（１１２）は、メモリ＃２（１１３）に記憶された様々なプログラムを実行することにより、前記通信インタフェース機能を実現するための制御を行う。また、他装置７００との間で授受されるデータは、メモリ＃２（１１３）に記憶される。メモリコントローラ＃２（１１１）は、メモリ＃２（１１３）に対する制御を行う。プロセッサ＃２（１１２）は、メモリ＃２（１１３）に記憶される転送データを他装置７００に送信し、また他装置７００から受信した転送データをメモリ＃２（１１３）に記憶する。通信インタフェース部とコネクタ１１８から成る部分は、ＳＡＮ５００を構成するＦＣスイッチのポートに接続されるポートとしても機能する。ポートにはＷＷＮが付与されている。
【００６５】
データ転送ＬＳＩ１１４は、プロセッサ＃１（１１９）からの指示により、ＰＣＩバスのマスタとして、ＣＭ１３０すなわち第１のメモリ部と、メモリ＃２（１１３）すなわち第３のメモリ部との間のデータ転送を制御する。具体的には、データ転送ＬＳＩ１１４は、プロセッサ＃１（１１９）からの指示に従って、メモリ＃１（１１７）に書き込まれているデータ転送情報を読み出して、読み出したデータ転送情報あるいはそれをもとに作成したデータ転送情報に従って、ＣＭ１３０とメモリ＃２（１１３）との間でのデータ転送を制御する。前記データ転送情報は、ＣＭ１３０におけるデータの記憶位置と他装置７００におけるデータの記憶位置、すなわち転送元アドレスと転送先アドレスを少なくとも含む情報である。メモリコントローラ＃１（１１６）は、メモリ＃１（１１７）に対する制御を行う。第２のメモリ部において、メモリ＃３（１１５）は、特に、データ転送ＬＳＩ１１４がデータ転送情報とデータの退避用の領域として使用する。
【００６６】
＜メモリ構成＞
図５は、データ転送に係わる各メモリの構成と関連を示す。メモリ＃１（１１７）は、プロセッサ＃１（１１９），＃２（１１２）用のそれぞれのスクリプト領域＃１，＃２と、図示しない制御プログラムの領域を有する。メモリ＃２（１１３）は、データ領域を有する。ＣＭ１３０は、データ領域を有する。スクリプト領域には、データ入出力制御のためのスクリプトが記憶される。スクリプトをもとにデータ転送情報が構成される。スクリプト領域＃１には、「プロセッサ＃１用スクリプト（以下、Ｓ１と略称する）」が記憶される。スクリプト領域＃２には、「プロセッサ＃２用スクリプト（以下、Ｓ２と略称する）」が記憶される。各データ領域には、スクリプトに対応して処理される転送データである「スクリプトデータ」が記憶される。
【００６７】
メモリ＃２（１１３）のデータ領域には、ＣＭ１３０に転送されるデータ、あるいは、ＣＭ１３０から転送されたデータが記憶される。メモリ＃２（１１３）のデータ領域に記憶される各データの記憶位置や記憶領域サイズ（エリア長）などのデータ転送情報は、各データに対応してＰ２として、メモリ＃１（１１７）のスクリプト領域＃２に記憶される。
【００６８】
前記Ｐ２やＰ１は、「スクリプト識別子」、「領域先頭アドレス」、「エリア長」、「連続フラグ」等の各欄を備える。「スクリプト識別子」は、スクリプトごとに付与されるＩＤ番号である。「領域先頭アドレス」は、メモリ＃２（１１３）やＣＭ１３０におけるデータ領域に記憶されるデータの記憶アドレスを示す。「エリア長」は、データの記憶領域サイズを示す。「連続フラグ」は、データ領域に記憶される複数のデータ（例えば複数のデータブロック）を１つのまとまりとして連続的に転送したい場合に設定されるフラグである。
【００６９】
一方、ＣＭ１３０のデータ領域には、メモリ＃２（１１３）に転送されるデータ、あるいは、メモリ＃２（１１３）から転送されたデータが記憶される。ＣＭ１３０のデータ領域に記憶される各データの記憶位置や記憶領域サイズなどのデータ転送情報は、各データに対応してＳ１として、メモリ＃１（１１７）のスクリプト領域＃１に記憶される。Ｓ１は、Ｓ２と同様の構成である。
【００７０】
Ｓ２、Ｓ１は、プロセッサ＃１（１１９）により設定され、それぞれ、メモリ＃１（１１７）のスクリプト領域＃２、スクリプト領域＃１に書き込まれる。
【００７１】
データ転送ＬＳＩ１１４は、メモリ＃１に書き込まれたスクリプトをもとに、データ転送情報をレジスタに書き込む。また、ＣＭ１３０やメモリ＃２（１１３）との間で転送するデータをバッファに記憶する。また、データ転送ＬＳＩ１１４は、メモリ＃３（１１５）との間で、レジスタのデータ転送情報やバッファのデータを、退避／回復する。
【００７２】
＜データ転送ＬＳＩの構成＞
次に、図６は、データ転送ＬＳＩ１１４の構成と他処理部との接続構成を示す。データ転送ＬＳＩ１１４は、前記各スクリプト（Ｓ１，Ｓ２）に基づいて、ＣＭ１３０とメモリ＃２（１１３）との間のデータ転送を制御する。本実施の形態に係わるデータ転送ＬＳＩ１１４は、少なくとも２つのＤＭＡ部８００である、第１のＤＭＡ部（ＤＭＡ部＃１）８００Ａと第２のＤＭＡ部（ＤＭＡ部＃２）８００Ｂを備える。
【００７３】
データ転送ＬＳＩ１１４は、例えばＰＣＩインタフェースによって、ＤＭＡ部８００と、他の各部、すなわちプロセッサ＃２（１１２）、プロセッサ＃１（１１９）、メモリ＃３（１１５）、ＣＭ１３０等とが接続される。ＰＣＩインタフェースは、ＰＣＩバスを介して各部と通信を行うためのインタフェースである。本図６では、論理的な構成を示しており、２つのＤＭＡ部８００が各プロセッサ１１２，１１９に対して接続されるものとして示している。
【００７４】
データ転送ＬＳＩ１１４は、或るデータ転送の制御にあたり、２つのＤＭＡ部｛８０１，８０２｝のいずれで制御させるかを決定する。例えばプロセッサ＃１（１１９）と２つのＤＭＡ部８００との間で、或るデータについての転送処理をいずれのＤＭＡ部８００で処理させるかが決定される。
【００７５】
ＤＭＡ部８００は、ＤＭＡ制御部（ＤＭＡＣ）８０１と、レジスタ８０７と、転送データバッファ（バッファ）８１０とから成り、ＤＭＡ部８００が二重化された形態である。すなわち、データ転送ＬＳＩ１１４は、第１のＤＭＡＣ（ＤＭＡＣ＃１）８０１Ａと、第１のレジスタ（レジスタ＃１）８０７Ａと、第１のバッファ（バッファ＃１）８１０Ａと、第２のＤＭＡＣ（ＤＭＡＣ＃２）８０１Ｂと、第２のレジスタ（レジスタ＃２）８０７Ｂと、第２のバッファ（バッファ＃２）８１０Ｂとを有する。二重化されている各部は機能的に同等であるものとする。
【００７６】
ＤＭＡＣ８０１は、ＤＭＡ部８００におけるＤＭＡデータ転送処理を制御する論理を含む回路である。ＤＭＡＣ８０１は、ハードウェアのみでの構成でもよいし、ハードウェアとソフトウェアの組み合わせでの構成でもよい。レジスタ８０７は、スクリプトに基づいたデータ転送情報が格納される。バッファ８１０は、転送データが格納される。データ転送ＬＳＩ１１４では、２系統のＤＭＡ部８００を利用して、２つのデータ転送を同時並行的に実行可能である。またこれに伴って後述する退避／回復処理を行うことで、複数のデータ転送を切り替えながら多重に実行可能である。
【００７７】
ＤＭＡＣ８０１は、例えば、メモリ＃１（１１７）に記憶された前記スクリプトについて、レジスタ８０７へのデータ転送情報の読み込みや、読み込んだデータ転送情報に基づいてバッファ８１０を介して行うデータ転送の制御や、データ転送終了ステータスの出力などを行う。またＤＭＡＣ８０１は、メモリ＃３（１１５）に対する制御を行う。従って、ＤＭＡＣ８０１により、レジスタ８０７に記憶されるデータ転送情報やバッファ８１０に記憶されるデータを、メモリ＃３（１１５）の制御領域に書き出すこと（退避とも称する）、あるいは逆に、メモリ＃３（１１５）の制御領域から、退避しておいたデータ転送情報やデータをレジスタ８０７やバッファ８１０に読み込むこと（回復とも称する）が可能となっている。ＤＭＡ部８００Ａのデータ転送情報やデータは、メモリ＃３（１１５）の制御領域＃１に対して退避／回復される。ＤＭＡ部８００Ｂのデータ転送情報やデータは、メモリ＃３（１１５）の制御領域＃２に対して退避／回復される。なおメモリ＃３（１１５）に退避される情報は、スクリプト形式でもよいし、その一部のデータ転送情報（パラメータ）でもよい。
【００７８】
また拡張形態として、データ転送ＬＳＩ１１４で、２つのＤＭＡ部８００を備えた部分を更に複数備えた構成としてもよい。また、ＤＭＡ部８００とＣＭ１３０との接続バスを、通信インタフェース部側との接続バスよりも多重の構成としてもよい。例えば、バッファ８１０とメモリコントローラ＃２（１１１）との間の通信路が、バッファ＃１（８１０Ａ）とバッファ＃２（８１０Ｂ）とで共用され、バッファ８１０とＣＭ１３０との間の通信路が、バッファ＃１（８１０Ａ）とバッファ＃２（８１０Ｂ）とで個別に設けられた構成としてもよい。これは、メモリコントローラ＃２（１１１）側との通信は同一回路基板上のため比較的高速となるのに対し、ＣＭ１３０側との通信は、異なる回路基板を介するために比較的低速になるためである。
【００７９】
＜レジスタ構成＞
図７は、ＤＭＡ部８００内のレジスタ８０７の詳細構成例を示す。レジスタ８０７は、転送起動レジスタ８０３、転送レジスタ８０４、初期設定レジスタ８０５、スクリプトレジスタ８０６を有する。
【００８０】
転送起動レジスタ８０３は、「要求転送長」、「転送方向」、「プロセッサ＃２開始スクリプト番号」、「プロセッサ＃１開始スクリプト番号」の各レジスタを備える。
【００８１】
「要求転送長」レジスタは、ＣＭ１３０と他装置７００との間で転送されるデータの総データ長が記憶される。「要求転送長」は、情報処理装置２００から受信したデータ入出力要求に基づいて決定される。例えば８ｋｂサイズのデータ書き込み要求を受信した場合には、８ｋｂを示す情報が記憶される。
【００８２】
「転送方向」レジスタは、他装置７００からＣＭ１３０への方向のデータ転送か、ＣＭ１３０から他装置７００への方向のデータ転送かを示す情報が記憶される。「転送方向」は、プロセッサ＃１（１１９）が情報処理装置２００から受信したデータ入出力要求に基づいて決定される。例えば、プロセッサ＃１（１１９）が、情報処理装置２００から、第１の駆動装置３０１へのデータ書き込み要求を受信した場合には、「転送方向」は、メモリコントローラ＃２（１１１）からＣＭ１３０への方向となる。またプロセッサ＃１（１１９）が、情報処理装置２００から、第１の駆動装置３０１に記憶されているデータのデータ読み出し要求を受信した場合は、「転送方向」は、ＣＭ１３０からメモリコントローラ＃２（１１１）への方向となる。また、第２の制御装置１０２から第１の制御装置１０１へとデータを受信する場合には、「転送方向」は、メモリコントローラ＃２（１１１）からＣＭ１３０への方向となる。
【００８３】
前記「要求転送長」や「転送方向」は、プロセッサ＃１（１１９）がＤＭＡ部８００にデータの転送を開始させる際に、プロセッサ＃１（１１９）によりＤＭＡ部８００の転送起動レジスタ８０３に書き込まれる。
【００８４】
「プロセッサ＃２−開始スクリプト番号」レジスタは、メモリ＃１（１１７）に記憶されたＰ２の識別子が記憶される。ＤＭＡＣ８０１は、本レジスタが示すＰ２をメモリ＃１（１１７）から読み出して、データの転送を開始する。「プロセッサ＃２−開始スクリプト番号」は、プロセッサ＃１（１１９）がＤＭＡ部８００にデータの転送を開始させる際に、プロセッサ＃１（１１９）により転送起動レジスタ８０３に書き込まれる。あるいは、Ｐ２に前記連続フラグが設定されている場合は、ＤＭＡＣ８０１により、「プロセッサ＃２−開始スクリプト番号」が更新される。
【００８５】
「プロセッサ＃１−開始スクリプト番号」レジスタは、メモリ＃１（１１７）に記憶されたＰ１の識別子が記憶されるもので、役割は「プロセッサ＃２−開始スクリプト番号」レジスタと同様である。
【００８６】
転送レジスタ８０４は、「転送単位」、「転送元アドレス」、「転送先アドレス」、「残転送長」の各レジスタを備える。
【００８７】
「転送単位」レジスタは、１回のデータ転送におけるデータ転送長が記憶される。１回のデータ転送におけるデータ転送長は、ＤＭＡＣ８０１により算出される。
【００８８】
「転送元アドレス」レジスタは、転送前のデータの記憶位置を示す。また「転送先アドレス」レジスタは、転送後のデータの記憶位置を示す。「転送元アドレス」や「転送先アドレス」は、ＣＭ１３０または情報処理装置２００または第２のストレージ装置６０２におけるデータの記憶位置である。「転送元アドレス」や「転送先アドレス」は、「転送方向」と、Ｐ１あるいはＰ２の記載に基づいて決定される。データ転送中は、転送の進捗と共にＤＭＡＣ８０１によって本レジスタの値が適宜インクリメントあるいはデクリメントされる。
【００８９】
「残転送長」レジスタは、「要求転送長」から、転送済みのデータ転送長を減じた値を示す。「残転送長」は、データ転送の進捗と共に、ＤＭＡＣ８０１によって適宜更新される。
【００９０】
初期設定レジスタ８０５は、「プロセッサ＃２−スクリプト領域先頭アドレス」、「プロセッサ＃２−スクリプト数」、「プロセッサ＃２−スクリプトサイズ」、「プロセッサ＃１−スクリプト領域先頭アドレス」、「プロセッサ＃１−スクリプト数」、「プロセッサ＃１−スクリプトサイズ」の各レジスタを備える。本レジスタのこれらの設定値は、例えばＣＨＡ１１０のパワーオンリセット時に、ＤＭＡＣ８０１によりＣＨＡ１１０が備える図示しないＮＶＲＡＭから読み込まれるようにすることができる。
【００９１】
「プロセッサ＃２−スクリプト領域先頭アドレス」レジスタは、メモリ＃１（１１７）におけるスクリプトレジスタの先頭アドレスを示す。つまり、Ｐ２＃０が記憶されるアドレスを示す。
【００９２】
「プロセッサ＃２−スクリプト数」レジスタは、Ｐ２の数を示す。
【００９３】
「プロセッサ＃２−スクリプトサイズ」レジスタは、Ｐ２のサイズを示す。Ｐ２のサイズを固定とすることにより、Ｐ２の識別子を特定することによって、スクリプト領域の先頭アドレスを基準とした、目的のＰ２の記憶アドレスを算出できる。
【００９４】
「プロセッサ＃１−スクリプト領域先頭アドレス」、「プロセッサ＃１−スクリプト数」、「プロセッサ＃１−スクリプトサイズ」の各レジスタは、プロセッサ＃１用の情報が記憶されるもので、役割は前記プロセッサ＃２用の各レジスタと同様である。
【００９５】
スクリプトレジスタ８０６は、「プロセッサ＃２−実行スクリプト番号」、「プロセッサ＃２−有効エリア長」、「プロセッサ＃１−実行スクリプト番号」、「プロセッサ＃１−有効エリア長」の各レジスタを備える。
【００９６】
「プロセッサ＃２−実行スクリプト番号」レジスタは、現在実行中のＰ２の識別子を示す。「プロセッサ＃２−実行スクリプト番号」は、ＤＭＡＣ８０１によって設定される。
【００９７】
「プロセッサ＃２−有効エリア長」レジスタは、Ｐ２における前記エリア長の欄に記載されたエリア長から、転送済みのデータサイズを減じた値である。この値は、データ転送の進捗と共にＤＭＡＣ８０１によって適宜デクリメントされる。
【００９８】
「プロセッサ＃１−実行スクリプト番号」、「プロセッサ＃１−有効エリア長」の各レジスタは、プロセッサ＃１用の情報が記憶されるもので、役割は前記プロセッサ＃２用の各レジスタと同様である。
【００９９】
バッファ８１０は、ＣＭ１３０とメモリ＃２（１１３）との間でデータを転送する際に転送データが記憶される。すなわち、ＤＭＡＣ８０１は、ＣＭ１３０とメモリ＃２（１１３）との間でデータを転送する際には、バッファ８１０を介してストア・アンド・フォワード方式で転送を行う。例えば、ＣＭ１３０からメモリ＃２（１１３）へデータを転送する場合は、ＤＭＡＣ８０１は、ＣＭ１３０から読み出したデータをバッファ８１０に一旦書き込み、そして転送のタイミングでバッファ８１０からデータを読み出してメモリ＃２（１１３）に書き込む。
【０１００】
＜データ入出力処理＞
次に、前記図２に示すストレージシステムにおけるデータ入出力処理の全体について説明する。情報処理装置２００からデータ入出力要求が送信されると、プロセッサ＃１（１１９）は、受信されたデータ入出力要求を解析して、その要求での入出力先となる駆動装置３００やリモートコピーの必要性などを判断する。そして、プロセッサ＃１（１１９）は、その判断に応じて、データ転送ＬＳＩ１１４に対し、前記スクリプトを介して、データ転送の指示を行う。その判断は、ＳＭ１２０に記憶されるペア管理テーブル及び構成情報管理テーブルを参照することにより行われる。ペア管理及び構成情報管理は周知技術である。
【０１０１】
構成情報管理テーブルは、第１のストレージ装置６０１が、情報処理装置２００に対して、第２のストレージ装置６０２の記憶ボリューム３１０を第１のストレージ装置６０１の記憶ボリューム３１０として提供する機能を可能にする管理情報である。構成情報管理テーブルには、第１、第２のストレージ装置６０１，６０２が備える各記憶ボリューム３１０についての情報が記述されている。構成情報管理テーブルは、ポートＩＤ、ＷＷＮ、ＬＵＮ、容量、マッピングＬＵＮといった欄を有する。ポートＩＤの欄は、記憶ボリューム３１０に対応付けられるＣＨＡ１１０のポートＩＤが記述される。ＷＷＮの欄は、ポートＩＤに対応するＷＷＮが記述される。ＬＵＮの欄は、各記憶ボリューム３１０に対応するＬＵＮが記述される。容量の欄は、各記憶ボリュームにより提供される記憶容量が記述される。マッピングＬＵＮの欄には、ポートＩＤ及びＬＵＮに対応付けられている第２のストレージ装置６０２が備える記憶ボリューム３１０のＬＵＮが記述される。
【０１０２】
第１のストレージ装置６０１は、構成情報管理テーブルを用いて、第２のストレージ装置６０２の記憶ボリューム３１０を、第１のストレージ装置６０１の記憶ボリューム３１０であるかのように、すなわち仮想的な記憶ボリュームとして提供可能である。つまり、情報処理装置２００は、第２のストレージ装置６０２の記憶ボリューム３１０に対するデータ入出力要求を、第１のストレージ装置６０１に対して行ってデータ読み書きが可能である。第１のストレージ装置６０１は、情報処理装置２００から前記仮想的な記憶ボリュームに対するデータ入出力要求を受信すると、第２のストレージ装置６０２との間でデータ転送を行って、仮想的な記憶ボリュームに対応する実記憶ボリュームにアクセスする。
【０１０３】
次に、情報処理装置２００から第１のストレージ装置６０１に対して、第１のストレージ装置６０１の記憶ボリューム３１１もしくは第２のストレージ装置６０２の記憶ボリューム３１２に対するデータ入出力要求が行われた場合の処理について説明する。
【０１０４】
情報処理装置２００から発行されるデータ入出力要求は、一例として、ホストＩＤ、ポートＩＤ、ＬＵＮ、アドレス、データ長といった情報を有する形式である。ホストＩＤは、そのデータ入出力要求を送信した情報処理装置２００の識別子であり、例えば情報処理装置２００のポートのＷＷＮが記述される。ポートＩＤは、そのデータ入出力要求の対象となる記憶ボリューム３１０に対応付けられているＣＨＡ１１０のポートＩＤである。ＬＵＮは、そのデータ入出力要求の対象となる記憶ボリューム３１０のＬＵＮである。アドレスは、データ入出力対象データの記憶アドレスである。データ長は、データ入出力対象データのデータ長である。
【０１０５】
情報処理装置２００から送信されたデータ入出力要求が、第２のストレージ装置６０２の記憶ボリューム３１２へのデータ書き込み要求であった場合を例に説明する。まず、第１のストレージ装置６０１で制御装置１０１のＣＨＡ１１０でデータ書き込み要求が受信される。プロセッサ＃１（１１９）は、このデータ書き込み要求と共に受信した書き込みデータを、ＣＭ１３０に記憶する処理を行う。
【０１０６】
次に、プロセッサ＃１（１１９）は、構成情報管理テーブルを参照し、このデータ書き込み要求を実行可能かどうか判断する。ここで、実行不可能な場合とは、例えば、データ書き込み要求の処理対象となる記憶ボリューム３１０が存在しない、あるいは存在しても書き込みデータのサイズが記憶ボリューム３１０の容量を超えている等の場合である。このようにデータ入出力要求を実行できない場合は、情報処理装置２００に対してその旨のメッセージを送信して当該データ入出力要求に対応する処理を終了する。
【０１０７】
一方、前記データ書き込み要求を実行可能な場合は、プロセッサ＃１（１１９）は、第２のストレージ装置６０２に対し、データ書き込み要求と書き込みデータを送信する。この送信は、まず、プロセッサ＃１（１１９）がデータ転送のためのスクリプトをメモリ＃１（１１７）に書き込み、次に、データ転送ＬＳＩ１１４が、メモリ＃１（１１７）からレジスタ８０７に前記スクリプトを読み出し、読み出したスクリプトに基づいたデータ転送情報に従ってメモリ＃１（１１７）と第２の制御装置１０２との間のデータ転送を制御することにより行われる。そして、第２のストレージ装置６０２は、このデータ書き込み要求を受信して、書き込みデータを第２の駆動装置３０２の記憶ボリューム３１２に書き込む。データ読み出しの場合も同様である。
【０１０８】
なお、第１のストレージ装置６０１から第２のストレージ装置６０２へ送信されるデータ書き込み要求は、情報処理装置２００から受信するデータ書き込み要求と同一プロトコルに従ったものであり、例えばそのデータ形式が同一である。従って、第２のストレージ装置６０２が第１のストレージ装置６０１に対して記憶ボリューム３１０を提供する装置として機能するように運用される場合は、第２のストレージ装置６０２の構成や仕様について特に変更などを行う必要がなく第２のストレージ装置６０２の有効利用が可能となる。
【０１０９】
次に、ペア管理テーブルについて説明する。ペア管理テーブルは、「ペア種類」、「複製方式」、「複製元装置」、「複製先装置」、「複製元ボリューム」、「複製先ボリューム」、「ペア状態」といった欄を有する。
【０１１０】
ペアとは２つの記憶ボリューム３１０により形成される組み合わせをいう。またペアを形成する２つの記憶ボリューム３１０が同一のストレージ装置６００にある場合を「ローカルペア」、異なるストレージ装置６００にある場合を「リモートペア」と表現する。ペアを形成する記憶ボリューム３１０は、一方を「主記憶ボリューム」、他方を「副記憶ボリューム」として管理される。１つの主記憶ボリュームに対して複数の副記憶ボリュームを組み合わせことも可能である。
【０１１１】
情報処理装置２００が、データの複製元となる第１のストレージ装置６０１にリモートペアの形成を指示すると、ストレージ装置６０１は、ＳＭ１２０のペア管理テーブルを更新する。その後、ストレージ装置６０１は、データの複製先となる第２のストレージ装置６０２に、リモートペアの形成を指示する。そして第２のストレージ装置６０２は、ストレージ装置６０２内のＳＭ１２０のペア管理テーブルを更新する。
【０１１２】
ペア管理テーブルの「ペア種類」欄は、当該ペアがローカルペアであるかリモートペアであるかを示す。「複製方式」欄は、当該ペアがリモートペアである場合に、リモートコピーの方式が同期方式か非同期方式かを示す。「複製元装置」欄と「複製先装置」欄は、当該ペアがリモートペアである場合に、それぞれ複製元と複製先のストレージ装置６００を示す。「複製元ボリューム」欄は、当該ペアの主記憶ボリュームのＬＵＮを、「複製先ボリューム」欄は、当該ペアの副記憶ボリュームのＬＵＮを示す。
【０１１３】
「ペア状態」欄は、当該ペアの状態を示す。状態としては、「ペア中」、「スプリット中」、「リシンク中」といったものがある。「ペア中」状態は、情報処理装置２００から主記憶ボリュームに書き込まれたデータの複製が、副記憶ボリュームにも反映される。主記憶ボリュームと副記憶ボリュームとの対応付けにより、主記憶ボリュームに記憶されている内容と副記憶ボリュームに記憶されている内容との同一性を確保できる。「スプリット中」状態は、情報処理装置２００から主記憶ボリュームにデータが書き込まれても副記憶ボリュームには反映されない。「リシンク中」状態は、「スプリット中」から「ペア中」の状態へ移行する途中の状態である。すなわち、「スプリット中」に主記憶ボリュームになされたデータの更新を、副記憶ボリュームに反映している状態である。反映の完了により「ペア中」状態となる。
【０１１４】
前記ペアの形成、ペアのスプリット、ペアのリシンクは、管理プログラムが実行されている情報処理装置２００に対して入力装置からオペレータが指示入力を与えることにより実行可能とすることができる。前記指示入力はストレージ装置６００のＣＨＡ１１０に送信され、ＣＨＡ１１０は、制御プログラムを実行して、前記指示に従って、ペアの形成やペア状態の変更等を行う。ＣＨＡ１１０は、形成したペアのペア状態に応じて、例えば、「ペア中」状態の主記憶ボリューム（３１１）に対するデータ書き込み要求を受信した場合は、書き込みデータの複製を、第２のストレージ装置６０２に送信して副記憶ボリューム（３１２）に反映させる。
【０１１５】
具体的には、まず第１のストレージ装置６０１は、情報処理装置２００から、データ記憶要求を受信すると、プロセッサ＃１（１１９）は、このデータ書き込み要求と共に受信した書き込みデータを、ＣＭ１３０に記憶する。そしてプロセッサ＃１（１１９）は、ＤＫＡ１４０に対して、第１の記憶ボリューム（主記憶ボリューム）３１１へのデータの書き込みを指示すると共に、ペア管理テーブルを参照して、データの複製が書き込まれる第２の記憶ボリューム（副記憶ボリューム）３１２を特定する。そしてプロセッサ＃１（１１９）は、書き込みデータの複製を、記憶ボリューム３１２にも書き込むべく、データ転送制御のためのスクリプトをメモリ＃１（１１７）に書き込み、次にデータ転送ＬＳＩ１１４が、メモリ＃１（１１７）から読み出したスクリプトに基づいて第２の制御装置１０２への書き込みデータの送信を制御することにより行われる。そして第２のストレージ装置６０２は、データ書き込み要求を受信して、書き込みデータを記憶ボリューム３１２に書き込む。
【０１１６】
このように、ストレージシステムにおいて、第１のストレージ装置６０１が情報処理装置２００から受信したデータ入出力要求に応じて、第１のストレージ装置６０１と第２のストレージ装置６０２との間でデータ転送が行われる。このデータ転送は、前記プロセッサ＃１（１１９）を含むＩＯＣ、データ転送ＬＳＩ１１４を含むＤＴＣにより行われるが、従来構成では、第１、第２のストレージ装置６０１，６０２の間で第１のデータ転送が行われている間は、第２のデータ転送は、前記第１のデータ転送が終了するまで実行されることはない。例えば、或る系列のデータＡについての１つ以上のデータブロックの転送が行われている間は、それが終了するまで、他の系列のデータＢについての１つ以上のデータブロックの転送が実行されることはない。すなわち従来構成では、ＤＴＣで複数のデータ転送を多重に実行可能には構成されていなかった。
【０１１７】
図８は、従来構成における複数のデータ入出力の処理例を示すシーケンス図である。特にデータ読み出し処理の場合を示す。なお、１つのリードコマンドに対応した応答処理で複数のリードデータが送受信されることを示しているが、これはデータ転送がデータブロック単位に制御されることに対応している。まず、情報処理装置２００から第１のストレージ装置（Ａ）６０１に対してリードコマンド＃１が発行・送信される（Ｓ１０００）。第１のストレージ装置６０１から第２のストレージ装置（Ｂ）６０２に対して対応したリードコマンド＃１が発行・送信される（Ｓ１００１）。第２のストレージ装置６０２は、受信したリードコマンド＃１に応じたリードデータ＃１応答処理を行う（Ｓ１００２）。この応答処理によって、リードデータ＃１が第１のストレージ装置６０１に送信される（Ｓ１００２）。そして、第１のストレージ装置６０１から情報処理装置２００に対してリードデータ＃１が送信される。転送処理＃１は、リードコマンド＃１に対応した処理を示している。また、情報処理装置２００からリードコマンド＃２が発行され、転送処理＃１と同様に転送処理＃２が行われる（Ｓ１００５〜Ｓ１００９）。従来構成では、ストレージ装置６０１のＤＴＣでのデータ転送の多重処理が不可能なので、転送処理＃１，＃２が順次に処理される。
【０１１８】
一方、図９（ａ），（ｂ）は、ストレージ装置６００での複数のデータ入出力の処理例を示すシーケンス図である。第１の制御装置１０１では、ＤＴＣで、転送処理＃１が終了するまで待つことなく、第１と第２の転送処理＃１，＃２を多重に実行できる。情報処理装置２００からのリードコマンド＃１の発行に応じて第２のストレージ装置６０２へリードコマンド＃１が送信され、第２のストレージ装置６０２でリードデータ＃１応答処理が行われる。第１のストレージ装置６０１では、第２のストレージ装置６０２からのリードデータ＃１の受信が開始される前に、情報処理装置２００から次のリードコマンド＃２を受信した場合に、リードコマンド＃２を第２のストレージ装置６０２に送信することができる。
【０１１９】
図９（ａ）に示す処理例では、第１のストレージ装置６０１で第２のストレージ装置６０２からリードデータ＃１を受信する前にリードコマンド＃２を第２のストレージ装置６０２に送信し（Ｓ２００３）、第２のストレージ装置６０２からリードデータ＃１の受信（Ｓ２００６）が終了した後に、リードデータ＃２の受信（Ｓ２００７）が行われる場合である。
【０１２０】
図９（ｂ）に示す処理例は、第１のストレージ装置６０１で第２のストレージ装置６０２からリードデータ＃１を受信する前にリードコマンド＃２を第２のストレージ装置６０２に送信し（Ｓ３００３）、第２のストレージ装置６０２からリードデータ＃１の受信（Ｓ３００６及びＳ３００８）が終了する前に、リードデータ＃２の受信（Ｓ３００７）が行われる場合である。
【０１２１】
第１のストレージ装置６０１のデータ転送ＬＳＩ１１４において、２つのＤＭＡ部８００を利用して退避／回復の制御も行いながら、前記転送処理＃１，＃２を多重に制御可能である。すなわち、ＤＭＡ部８００でリードデータ＃１についての第１のデータ転送を開始して、その処理途中においてリードデータ＃２についての第２のデータ転送を開始可能であり、また第２のデータ転送の処理途中で第１のデータ転送を再開して処理可能である。
【０１２２】
＜データ転送のフロー＞
次に、図１０は、ストレージ装置６００のＣＨＡ１１０（第１のＣＨＡ）でのデータ転送処理を示すフロー図である。プロセッサ＃２（１１２）、プロセッサ＃１（１１９）、データ転送ＬＳＩ１１４の各部間での処理の関係を示している。まず、第１の制御装置１０１が、情報処理装置２００からデータ入出力要求を受信すると、プロセッサ＃２（１１２）は、メモリ＃２（１１３）にデータ領域を確保する（Ｓ４０００）。データ領域の確保とは、情報処理装置２００から送信されたデータ入出力要求が書き込み要求の場合は、書き込みデータをメモリ＃２（１１３）に記憶することであり、また読み出し要求の場合は、読み出しデータを記憶するための記憶領域をメモリ＃２（１１３）に確保することである。ここで確保されるデータ領域は１つとは限らない。メモリ＃２（１１３）におけるデータの記憶可能領域の分布状況などによっては、１つのデータ入出力要求に係わるデータを複数に分割してメモリ＃２（１１３）に記憶する場合もあるからである。
【０１２３】
続いて、プロセッサ＃２（１１２）は、情報処理装置２００から受信したデータ入出力要求とメモリ＃２（１１３）に確保したデータ領域に関する情報とを、データ転送要求として、プロセッサ＃１（１１９）に送信する（Ｓ４００１）。本データ転送要求において領域先頭アドレスが通知される。
【０１２４】
そうするとプロセッサ＃１（１１９）は、プロセッサ＃２（１１２）から送信されたデータ入出力要求を解析する（Ｓ４００２）。これにより、プロセッサ＃１（１１９）は、要求転送長と転送方向とを認識し、また領域先頭アドレスが認識する。続いて、プロセッサ＃１８１１９）は、要求転送長で指定されたサイズのデータ領域を、ＣＭ１３０に確保する（Ｓ４００３）。ここでもＣＭ１３０における状況などによっては、複数のデータ領域が確保される場合がある。そしてプロセッサ＃１（１１９）は、ＣＭ１３０に確保した各データ領域に対応して、Ｐ１を作成する。同様に、プロセッサ＃２（１１２）から送信されたデータ転送要求から、メモリ＃２（１１３）に確保された各データ領域に対応したＰ２を作成する（Ｓ４００４）。複数のデータ領域が確保された場合には、各Ｐ１及びＰ２を一まとまりで管理するために、前記連続フラグが設定される。これにより、ＣＭ１３０におけるデータ記憶位置情報を含むＰ１と、他装置７００におけるデータ記憶位置情報を含むＰ２とが、メモリ＃１（１１７）に書き込まれる。
【０１２５】
その後、プロセッサ＃１（１１９）は、データ転送ＬＳＩ１１４が備えるＤＭＡ部８００内のレジスタ８０７に、要求転送長、転送方向、Ｐ２の識別子、及びＰ１の識別子を含む転送起動情報を送信し、転送起動レジスタ８０３にこれら情報を書き込む。これにより、プロセッサ＃１（１１９）はデータ転送ＬＳＩ１１４を起動する（Ｓ４００５）。転送起動情報によりデータ転送ＬＳＩ１１４がいずれかのＤＭＡ部８００を起動し、ＤＭＡ部８００がＤＭＡ転送処理（Ｓ４００６）を開始する。
【０１２６】
ＤＭＡ転送処理において、まず、ＤＭＡＣ８０１は、転送起動情報に基づいて、プロセッサ＃１（１１９）からの転送起動情報に記載されたＰ１の識別子とＰ２の識別子とにより、メモリ＃１（１１７）からＰ１とＰ２とをそれぞれ取得する。スクリプトの取得において、まずＤＭＡＣ８０１は、転送起動情報に基づいて、プロセッサ＃１（１１９）から送信された転送起動情報に記載されたＰ１の識別子と、初期設定レジスタ８０５に記憶されたプロセッサ＃１−スクリプトサイズとから、メモリ＃１（１１７）におけるＰ１の記憶アドレスを算出する。Ｐ１の記憶アドレスが算出できたら、続いて、メモリ＃１（１１７）のその記憶アドレスからＰ１を読み出す。ここで、ＤＭＡＣ８０１は、Ｐ１に記載された領域先頭アドレスを、転送方向に応じて転送レジスタ８０４の転送先アドレスまたは転送元アドレスの欄に記載する。そして、スクリプトレジスタ８０６のプロセッサ＃１−実行スクリプト番号、プロセッサ＃１−有効エリア長の欄に、それぞれＰ１に記載されたスクリプト識別子、エリア長欄に記載されたエリア長を書き込む。またこのようなＰ１についての処理と同様に、ＤＭＡＣ８０１は、転送起動情報に基づいて、Ｐ２についての処理を行う。
【０１２７】
続いて、ＤＭＡＣ８０１は、転送単位を決定する。転送単位の決定において、まずＤＭＡＣ８０１は、転送レジスタ８０４の残転送長の欄に、残転送長を書き込む。転送開始時は、要求転送長を書き込む。そして、プロセッサ＃１（１１９）の有効エリア長とプロセッサ＃２（１１２）の有効エリア長と、残転送長のうちの最小のものを、転送単位とする。そして、ＤＭＡＣ８０１は、転送レジスタ８０４に記憶された転送元アドレスに記憶されたデータを、転送先アドレスに、転送単位のデータサイズだけ転送する。転送はバッファ８１０を介して行われる。
【０１２８】
転送実行中は、転送レジスタ８０４の転送元アドレス、転送先アドレス、及び残転送長が順次更新されると共に、スクリプトレジスタ８０６のプロセッサ＃２−有効エリア長及びプロセッサ＃１−有効エリア長が、順次、転送済みデータのサイズの分ずつ減少される。
【０１２９】
スクリプトレジスタ８０６のプロセッサ＃２−有効エリア長及びプロセッサ＃１−有効エリア長、または残転送長のいずれかの値が０になったら、ＤＭＡＣ８０１は、転送終了判定処理を行う。転送終了判定処理において、まずＤＭＡＣ８０１は、転送レジスタ８０４の残転送長を確認する。残転送長が０の場合は、要求転送長に対応した全データの転送が完了しているので、処理を終了する。一方、残転送長が０でない場合は、プロセッサ＃１−有効エリア長あるいはプロセッサ＃２−有効エリア長の少なくともいずれか一方が０である。この場合、有効エリア長が０となった方のスクリプトには、連続フラグで連結された、次に実行すべきスクリプトが存在する。従って、次に実行すべきスクリプトがＰ１であるかＰ２であるかを決定する。
【０１３０】
次に実行すべきスクリプトの決定の処理において、まずＤＭＡＣ８０１は、スクリプトレジスタ８０６のプロセッサ＃１−有効エリア長が０であるか否かを確認する。０であればプロセッサ＃１−開始スクリプト番号を更新（インクリメント）する。０でなければ、続いて、スクリプトレジスタ８０６のプロセッサ＃２−有効エリア長が０であるか否かを確認する。０であればプロセッサ＃２−開始スクリプト番号を更新（インクリメント）する。０でなければ終了する。
【０１３１】
続いて、ＤＭＡＣ８０１は、前記スクリプト取得の処理を再び実行する。この際、ＤＭＡＣ８０１は、前記処理で更新された転送起動レジスタ８０３のプロセッサ＃１−開始スクリプト番号またはプロセッサ＃２−開始スクリプト番号を指定されるスクリプトを読み出す。そして、ＤＭＡＣ８０１は、新たに読み出したスクリプトに従ってＤＭＡ転送を行う。
【０１３２】
最終的に、前記転送終了判定処理における転送レジスタ８０４の残転送長が０になったら、ＤＭＡＣ８０１は転送処理を終了する。そして、ＤＭＡＣ８０１は、転送処理の結果が記載された終了ステータスをメモリ＃１（１１７）に書き込み（Ｓ４００７）、プロセッサ＃１（１１９）に対し終了通知を行う（Ｓ４００８）。この終了通知は、例えば割り込み信号の送信により行うことができる。
【０１３３】
プロセッサ＃１（１１９）は、メモリ＃１（１１７）から終了ステータスを読み出し、その内容に応じた処理を実行する（Ｓ４００９）。そして、プロセッサ＃１（１１９）は、プロセッサ＃２（１１２）に終了通知を送信する（Ｓ４０１０）。プロセッサ＃２（１１２）は、終了通知を受信すると、データ入出力要求に応じた処理を行う。データ入出力要求がデータ読み出し要求であった場合には、メモリ＃２（１１３）のデータ領域に転送された読み出しデータを読み出して、情報処理装置２００に送信することができる。またデータ入出力要求が書き込み要求であった場合には、書き込み終了報告を情報処理装置２００に送信する。
【０１３４】
ここで、前記したように、ＤＭＡ部８００は、ＤＭＡデータ転送処理に伴って、メモリ＃３（１１５）の制御が可能である。従って、ＤＭＡ部８００は、必要に応じて、レジスタ８０７に記憶されるデータ転送情報とバッファ８１０に記憶されているデータとを、メモリ＃３（１１５）の制御領域へ書き出したり（退避）、メモリ＃３（１１５）の制御領域から読み出したり（回復）することができる。
【０１３５】
前記図６に示すように、ＤＭＡ部８００内のメモリと、メモリ＃３（１１５）との間で、データ転送情報及びデータについての退避／回復がＤＭＡＣ８０１の制御により行われる。レジスタ８０７上のデータ転送情報あるいはその一部であるパラメータは、前記スクリプトに対応している。バッファ８１０上のデータは、前記スクリプトデータに対応している。メモリ＃３（１１５）に、２つのＤＭＡ部８００と対応して、それぞれのスクリプトとスクリプトデータを保持する制御領域＃１，＃２が確保されている。退避動作において、例えばＤＭＡ部＃１（８００Ａ）のレジスタ＃１（８０７Ａ）に記憶されているデータ転送情報あるいはパラメータが、メモリ＃３（１１５）の制御領域＃１のスクリプト＃０の領域へ書き出される。また、バッファ＃１（８１０Ａ）に記憶されているデータが、メモリ＃３（１１５）の制御領域＃１のスクリプト＃０データの領域へ書き出される。また、回復動作の場合も、例えばメモリ＃３（１１５）の制御領域＃１から、スクリプトやスクリプトデータが、ＤＭＡ部８００内のメモリへ読み出される。
【０１３６】
ＣＨＡ１１０では、退避／回復の制御を行うことにより、１つのＤＭＡ部８００で第１のデータ転送情報に基づく第１のデータ転送を制御している途中で、第２のデータ転送情報に基づく第２のデータ転送を制御可能である。つまり、ＤＭＡ部８００においてレジスタ８０７に記憶されている第１のデータ転送情報とバッファ８１０に記憶されているデータ（例えばデータＡを構成するデータブロック）とをメモリ＃３（１１５）に退避して、メモリ＃３（１１５）からレジスタ８０７に第２のデータ転送情報とバッファ８１０に転送処理中のデータとを回復することにより制御可能である。
【０１３７】
また、メモリ＃３（１１５）に退避されるデータ転送情報及びデータは、１つのスクリプトに対応したものに限られず、複数とすることが可能である。従って、メモリ＃３（１１５）への退避／回復を用いることにより、データ転送ＬＳＩ１１４で複数のデータ転送を多重に処理可能である。
【０１３８】
メモリ＃３（１１５）の制御領域には、１つのデータ転送に対応したパラメータとして、例えば、転送元アドレスと転送先アドレス、転送長、転送コマンド、制御情報、チェックコードといった情報が退避される。前記転送元アドレスと転送先アドレスは、前記転送レジスタ８０４に記憶される各アドレスに対応する。また、前記転送長は、前記転送レジスタ８０４に記憶される残転送長や、前記転送起動レジスタ８０３に記憶される要求転送長から残転送長を減じた値などとすることができる。また、前記転送コマンドは、転送起動レジスタ８０３に記憶される転送方向や、情報処理装置２００から制御装置１００に送信されたデータ入出力要求などとすることができる。後者の場合には、ＤＭＡ部８００にはデータ入出力要求を記憶するレジスタが設けられ、そのレジスタに記憶されるデータ入出力要求がメモリ＃３（１１５）に書き出される。また、前記制御情報は、ＤＭＡＣ８０１がデータ転送制御の際に記憶しておく各種ステータス情報などとすることができる。また、前記チェックコードは、例えばチェックサムやＣＲＣ（Cyclic Redundancy Check）とすることができる。
【０１３９】
＜第２のＣＨＡ＞
図１１は、ストレージ装置６００におけるＣＨＡ１１０の別の構成（第２のＣＨＡ）の例を示す。前記図４に示す第１のＣＨＡ１１０における通信インタフェース機能は、前記プロセッサ＃２（１１２）とメモリコントローラ＃２（１１１）とメモリ＃２（１１３）とによる通信インタフェース部の構成に限らず、本図１１に示すようにプロトコルＬＳＩ１１２Ｂによって実現した形態とすることが可能である。プロトコルＬＳＩ１１２Ｂを有する回路基板１１０Ｂの構成において、前記第１のＣＨＡ１１０と同様にデータ転送処理の制御を行う。
【０１４０】
第２のＣＨＡ１１０で、プロトコルＬＳＩ１１２Ｂ以外は前記第１のＣＨＡと同様である。データ転送ＬＳＩ１１４とプロトコルＬＳＩ１１２Ｂとにより、ＤＴＣが構成される。プロセッサ＃１（１１９）、プロトコルＬＳＩ１１２Ｂ、データ転送ＬＳＩ１１４、メモリコントローラ＃１（１１６）、メモリ＃１（１１７）、メモリ＃３（１１５）は、第１のＣＨＡと同様に、それぞれＰＣＩバスで通信可能に接続されている。第２のＣＨＡ１１０の構成でも、第１のＣＨＡ１１０と同様に、後述する第１〜第４の制御が可能である。
【０１４１】
プロトコルＬＳＩ１１２Ｂは、他装置７００との通信を行うための通信インタフェース機能を提供し、通信インタフェース部を構成する。例えば、他のストレージ装置６００に送信されるデータをＦＣプロトコルに従ったデータ形式に変換する。プロトコルＬＳＩ１１２Ｂとこれに接続されるコネクタ１１８は、ＳＡＮ５００を構成するＦＣスイッチのポートに接続されるポートとしても機能する。また、他装置７００との間でのデータの授受は、プロトコルＬＳＩ１１２Ｂが備えるバッファメモリを介して行われる。プロトコルＬＳＩ１１２Ｂが備えるバッファメモリが前記第２のメモリ部に相当する。
【０１４２】
データ転送ＬＳＩ１１４は、プロセッサ＃１（１１９）からの指示に従って、ＰＣＩバスのターゲットとして、ＰＣＩバスからの動作要求により、ＣＭ１３０と他装置７００との間のデータ転送を制御する。具体的には、データ転送ＬＳＩ１１４は、プロセッサ＃１（１１９）がメモリ＃１（１１７）に書き込んだ、ＣＭ１３０におけるデータ記憶位置と他装置７００におけるデータ記憶位置とを含むデータ転送情報を、メモリ＃１（１１７）から読み出して、ＰＣＩバスからのアクセスによりデータ転送を行う。
【０１４３】
プロトコルＬＳＩ１１２ＢからみたＰＣＩバス空間すなわちプロトコルＬＳＩメモリ空間において、データ空間と制御空間を有する。データ空間は、前記図５に示したデータ領域に対応し、Ｐ２に対応したスクリプトデータが記憶される。制御空間は、前記メモリ＃１（１１７）におけるＰ２を記憶するスクリプト領域＃２に対応し、前記Ｐ２が記憶される。
【０１４４】
前記ＰＣＩバス空間におけるデータ空間には、ＣＭ１３０に転送されるデータやＣＭ１３０から転送されたデータが記憶される。また制御空間には、データ空間に記憶される各データの記憶位置や記憶領域サイズ等のデータ転送情報が、各データに対応したＰ２として記憶される。同様に、ＣＭ１３０のデータ領域には、前記ＰＣＩバス空間におけるデータ空間に転送されるデータや前記データ空間から転送されたデータが記憶される。またメモリ＃１（１１７）のスクリプト領域＃１に、データ領域に記憶される各データについてのデータ転送情報が、各データに対応したＰ１として記憶される。
【０１４５】
図１２は、第２のＣＨＡ１１０でのデータ転送処理を示すフロー図である。第１のストレージ装置６０１が、情報処理装置２００から、第２のストレージ装置６０２に記憶されるデータの読み出し要求を受信した場合の処理を例に説明する。まず、第１の制御装置１０１で情報処理装置２００からデータ読み出し要求を受信すると、プロセッサ＃１（１１９）は、メモリ＃１（１１７）とＣＭ１３０とにデータ領域を確保する（Ｓ９０００）。ここでメモリ＃１（１１７）にデータ領域を確保するとは、Ｐ１及びＰ２を記憶するための記憶領域を確保することである。また、ＣＭ１３０にデータ領域を確保するとは、読み出しデータを記憶するための記憶領域を確保することである。ここで確保されるデータ領域は１つとは限らない。
【０１４６】
続いて、プロセッサ＃１（１１９）は、Ｐ１を作成し、作成したＰ１をメモリ＃１（１１７）に記憶する（Ｓ９００１）。Ｐ１には、ＣＭ１３０のアドレスがデータの送信先アドレスとして記憶されている。次にプロセッサ＃１は、Ｐ２を作成し、作成したＰ２をメモリ＃１（１１７）に記憶する（Ｓ９００２）。Ｐ２には、ＰＣＩアドレスがデータの送信元アドレスとして記憶されている。
【０１４７】
そしてプロセッサ＃１（１１９）は、プロトコルＬＳＩ１１２Ｂに対してＰ２の番号を送信することによりデータ転送要求を行う（Ｓ９００３）。前記データ転送要求に従って、プロトコルＬＳＩ１１２Ｂは、メモリ＃１（１１７）からＰ２を読み出して取得し（Ｓ９００４）、Ｐ２に従って、第２のストレージ装置６０２との間でＳＡＮ５００を介して通信を行う（Ｓ９００５）。この通信により、プロトコルＬＳＩ１１２Ｂは、第２のストレージ装置６０２に対してデータ読み出し要求を送信する。そして第２のストレージ装置６０２から読み出しデータが送信されてきたら、プロトコルＬＳＩ１１２Ｂは、ＰＣＩアドレスを送信先として読み出しデータを送信することで、データ転送を開始する（Ｓ９００６）。
【０１４８】
一方、プロセッサ＃１（１１９）は、データ転送ＬＳＩ１１４に対してＰ１の番号を送信する。そうするとデータ転送ＬＳＩ１１４は、Ｐ１の番号に基づいて、メモリ＃１（１１７）からＰ１を読み出して取得する（Ｓ９００７）。そしてデータ転送ＬＳＩ１１４は、ターゲットとして、ＰＣＩバスの動作に応じて、Ｐ１に従ってＣＭ１３０へのＤＭＡ転送処理（Ｓ９００８）を開始する。ＤＭＡ転送処理（Ｓ９００８）は、前記第１のＣＨＡについて説明した処理と同様である。
【０１４９】
ＤＭＡ転送処理（Ｓ９００８）が終了したら、ＤＭＡＣ８０１は、転送処理の結果が記載された終了ステータスをメモリ＃１（１１７）に書き込み（Ｓ９００９）、プロセッサ＃１（１１９）に対し終了通知を行う（Ｓ９０１０）。そしてプロセッサ＃１（１１９）は、メモリ＃１（１１７）から終了ステータスを読み出し、その内容に応じた処理を実行する（Ｓ９０１１）。
【０１５０】
ここで、第２のＣＨＡ１１０におけるＤＭＡ部８００も、第１のＣＨＡのＤＭＡ部８００と同様に、メモリ＃３（１１５）の制御すなわちデータ転送情報とデータの退避や回復を用いたデータ転送制御が可能であり、複数のデータ転送を多重に処理可能である。従って、第１のＣＨＡの場合と同様の効果を得られる。例えば、前記Ｓ９００５におけるプロトコルＬＳＩ１１２Ｂから第２のストレージ装置６０２へのアクセスは、比較的長時間を要するので、この間に複数のデータ読み出し要求を第２のストレージ装置６０２へ送信することが可能である。また各データ読み出し要求に応じて送信されてくる複数の読み出しデータを受信可能である。このとき１つのデータ読み出し要求に対して複数の分割されたデータ（データブロック）を受信可能である。
【０１５１】
＜データ転送の多重処理−基本動作＞
次に、以上のようなストレージ装置６００の構成を踏まえて、データ転送の詳細について説明する。図１３は、各実施の形態のストレージ装置６００において、データ転送ＬＳＩ１１４におけるデータ転送の多重処理に係わる基本動作の例を示すタイミングチャートである。本例では、２つのＤＭＡ部８００｛８００Ａ，８００Ｂ｝を有する構成で双方のＤＭＡ部８００を使用して並行的にデータ転送を制御し、かつ、退避／回復の動作を用いてデータ転送を切り替えながら複数のデータ転送を多重処理する場合について示す。特にＣＨＡ１１０における他装置７００からのデータ受信に応じてＣＭ１３０へデータ転送する場合を示す。「ＤＭＡ−Ａ」は、ＤＭＡ部＃１（８００Ａ）を示し、「ＤＭＡ−Ｂ」は、他方側のＤＭＡ部＃２（８００Ｂ）を示す。「メモリ＃３」は、データ転送ＬＳＩ１１４内のメモリ、すなわちレジスタ８０７やバッファ８１０から、メモリ＃３（１１５）の制御領域に対する退避／回復の動作を示す。「退」は退避動作を、「回」は回復動作を示す。ＤＭＡ−ＡとＤＭＡ−Ｂは、１：起動（データ受信）、２：データ（Ｄ）／パラメータ（Ｐ）退避、３：パラメータ（Ｐ）／データ（Ｄ）回復、及び４：データ転送の各処理を行う。データ受信によってＤＭＡ部８００のＤＭＡデータ転送処理が起動される。前記データ（Ｄ）は転送データ、前記パラメータ（Ｐ）はデータ転送情報に対応する。また、Ａ１，Ｂ１，Ｃ１，Ｄ１，Ｘ，Ｙ等は、１つのデータ転送単位となるデータ、又はそのデータ転送のためのデータ転送情報、又はそれらデータ転送情報とデータの組（以下、単に組とも称する）を示し、例えば前記データブロックに対応する。なお退避動作においては、状況に応じてデータ転送情報のみが退避される場合などもある。Ａ０，Ａ１等は、同系列の順次データを示し、例えば或るデータＡが複数のデータブロックに分割されたものである。本例は、ＣＨＡ１１０で、データを、Ａ１，Ｂ１，Ｃ１，Ｄ１の順で受信した場合に対応した第１〜第４のデータ転送の例を示している。「ｔ１」等は処理タイミングを示す。
【０１５２】
まず、第１のデータ転送が行われる。プロセッサ＃１（１１９）は、データＡ１の受信に応じて、データ転送ＬＳＩ１１４に対しデータ転送の開始を指示し、一方のＤＭＡ部８００を起動させる（ｔ１）。ここでは、指示に応じてデータ転送ＬＳＩ１１４がＤＭＡ−Ａ側を起動する場合を示す。起動されたＤＭＡ−ＡのＤＭＡＣ８０１Ａは、過去の１つ前のデータ転送処理で使用していた、レジスタ８０７とバッファ８１０に残っているパラメータとデータの組（Ｘ）を、メモリ＃３（１１５）の制御領域＃１に退避する（ｔ２）。例えばデータ、パラメータの順で退避する。退避後、ＤＭＡＣ８０１Ａは、メモリ＃３（１１５）から、データＡ１の転送に必要な、過去に退避しておいたパラメータとデータの組（Ａ０）を、それぞれレジスタ８０７Ａとバッファ８１０Ａへ回復する（ｔ３）。例えばパラメータ、データの順に回復する。そして、ＤＭＡＣ８０１Ａは、回復された組（Ａ０）を用いつつ、バッファ８１０Ａを介してデータＡ１についてのデータ転送を行う。例えば、他装置７００からのデータ書き込みの場合に、ＤＭＡ部８００は、プロセッサ＃２（１１２）のメモリ＃２（１１３）側から、ＣＭ１３０側へと書き込みデータを転送する。本例では、ＤＭＡＣ８０１Ａは、メモリ＃２（１１３）からデータＡ１をバッファ８１０Ａへと転送する。ＤＭＡ部８００は、データ転送が終了したら、プロセッサ＃１（１１９）に終了報告を行う。なお、実行すべきデータ転送が、或る系列のデータの転送における最初のデータ（例えばデータブロック）の転送などの場合には、回復ではなくスクリプトに基づくデータ転送情報の新規作成が行われる。
【０１５３】
次に、第２のデータ転送が行われる。２つのＤＭＡ部８００を有するので、一方のＤＭＡ部８００を用いて第１のデータ転送を行うのと並行して、他方のＤＭＡ部８００を用いて第２のデータ転送が可能である。ＤＭＡ−Ａで前記第１のデータ転送を処理中に、データＢ１を受信した場合（ｔ３）、第２のデータ転送を開始させる場合に、ＤＭＡ−Ｂを起動して、前記第１のデータ転送と同様に、ＤＭＡ−Ｂのメモリに残っている組（Ｙ）をメモリ＃３（１１５）へ退避し（ｔ５）、第２のデータ転送のために必要な組（Ｂ０）を回復して（ｔ６）、データＢ１についての転送を行う（ｔ７）。
【０１５４】
更に、第３のデータ転送が行われる。前記第１と第２のデータ転送の処理中に、データＣ１を受信した場合（ｔ７）、第３のデータ転送を行わせるために、一方のＤＭＡ部８００ここではＤＭＡ−Ａを起動し、同様にデータ転送を行う。ＤＭＡ−Ａで、処理中のためにメモリに残っている前記第１のデータ転送についての組（Ａ１）をメモリ＃３（１１５）に退避して（ｔ８）、第３のデータ転送に必要となる組（Ｃ０）を回復し（ｔ９）、データＣ１のデータ転送を行う（ｔ１０）。
【０１５５】
また更に、第４のデータ転送が行われる。データＤ１を受信した場合（ｔ１０）、前記第３のデータ転送を処理中のＤＭＡ−Ａの他方側のＤＭＡ−Ｂを起動して、そこで処理中の組（Ｂ１）を退避し（ｔ１１）、第４のデータ転送に必要な組（Ｄ０）を回復して（ｔ１２）、データＤ１の転送を行う（ｔ１３）。
【０１５６】
このように、退避／回復動作を用いて、ＤＭＡ−Ａで第１、第３のデータ転送が順に行われ、ＤＭＡ−Ｂで第２、第４のデータ転送が順に行われる。これらの各データ転送は、同系列のデータの処理でも異なる系列のデータの処理でもよい。例えば、転送データの内容に係わらず、転送要求の都度に、空いているＤＭＡ部８００を使用する処理が可能である。また、データ転送ＬＳＩ１１４で、ＤＭＡ−Ａでは第１の系列のデータＡについて処理するように決め、ＤＭＡ−Ｂでは第２の系列のデータＢについて処理するように決めて、複数のデータ転送を制御すること等が可能である。また同様に、メモリ＃３（１１５）に複数のデータ転送に係わるデータ転送情報とデータの組を退避／回復により保持することで、更に多重度を上げたデータ転送処理が可能である。また、第１、第２のストレージ装置６０１，６０２の間での通信がＦＣプロトコルに従って行われる場合など、データ転送がデータブロック単位で行われる場合には、複数の異なる系列のデータの転送における各データブロックが混在してデータ転送が処理されることとなる。複数のストレージ装置６００を備えたシステムにおいては、更に多くのデータブロックが混在することになる。このような場合でも、各データ転送に対応してメモリ＃３（１１５）に対する退避／回復を行うことで、多重にデータ転送処理が可能である。
【０１５７】
このような基本動作によって、前記図９のシーケンスに示すように、１つのＤＭＡ部８００において、第１のデータ転送が終了するまで待たずに別のデータ転送を開始可能である。例えば、第１のストレージ装置６０１から、第２のストレージ装置６０２の記憶ボリューム３１０に記憶されているデータの読み出しを複数回行う場合に、第１の制御装置１０１から第２の制御装置１０２に送信された第１のデータ読み出し要求に応じて読み出されるデータが制御装置１０１に送信されてくる前に、あるいは、制御装置１０１に前記読み出されるデータが送信されてきた後でも、すべてのデータブロックの送信が終了する前に、第２のデータ読み出し要求を制御装置１０２に送信してしまうことが可能である。この場合、第２のデータ読み出し要求を送信する際には、データ転送ＬＳＩ１１４のレジスタ８０７には第１のデータ読み出し要求に対応した第１のデータ転送情報が記憶されているが、前記メモリ＃３（１１５）への退避を行うことにより、第２のデータ読み出し要求に対応するデータ転送情報をレジスタ８０７に読み出して第２のデータ転送を行うことが可能である。そして、第１のデータ読み出し要求に応じて第２のストレージ装置６０２の記憶ボリューム３１０から読み出されたデータを受信する際には、レジスタ８０７に記憶されている第２のデータ転送情報をメモリ＃３（１１５）に退避して、前記メモリ＃３（１１５）に退避されていた第１のデータ転送情報を再びレジスタ８０７に読み出して、前記第１のデータ読み出しに係わるデータを受信すればよい。
【０１５８】
また例えば第１の制御装置１０１と第２の制御装置１０２の間でデータ転送を行う場合の転送待ち時間に、他のデータ転送を行うことが可能である。また例えば、前記データ読み出しにおいて、第２の制御装置１０２のＣＭ１３０に読み出しデータが記憶されていない場合、すなわちキャッシュ・ミスヒットの場合でも、記憶ボリューム３１０からデータを読み出している間に、他のデータ転送を行うことが可能となる。このように、データ転送の多重処理によってスループットを向上できるので、データ入出力性能が向上される。
【０１５９】
上記基本動作において、ＤＴＣは、自身が持つメモリにデータ転送情報やデータを記憶しながらデータ転送を制御し、また別のメモリ＃３（１１５）に対してデータ転送情報やデータの退避／回復動作を行うことで、複数のデータ転送についての多重処理が可能であるが、前記退避／回復動作の負荷は、データ入出力性能を左右する。
【０１６０】
＜キャッシュライト時の基本動作＞
図１４（ａ），（ｂ）は、データ転送の多重処理に係わる、キャッシュライト時とキャッシュリード時とにおける基本動作の処理例を示すタイミングチャートである。制御装置１００における接続部１５０を含む構成を考慮して、ＣＨＡ１１０からＣＭ１３０に対するデータ書き込みとデータ読み出しの処理において、複数のデータ転送をまとめて処理することが効果的となる。例えば、複数のデータブロックを単位としてＣＭ１３０に対する読み書きを行う。例えば１つのデータブロックが２ｋｂのサイズであり、合計で８ｋｂのサイズのデータを単位としてＣＭ１３０に対する読み書きを行う。
【０１６１】
図１４（ａ）は、キャッシュライト時の基本動作の処理例を示す。本例は、ＤＭＡ−ＡとＤＭＡ−Ｂで、それぞれ、データＡ１〜Ａ４とデータＢ１〜Ｂ４とについてのデータ転送を行う場合を示し、４つのデータブロックをまとめてＣＭ１３０へ書き込む場合について示している。ＣＨＡ１１０で、データを、｛Ａ１，Ｂ１，Ａ２，Ｂ２，Ａ３，Ｂ３，Ａ４，Ｂ４｝の順で受信した場合を示す。データＡ１，Ｂ１は、それぞれ同系列のデータＡ，Ｂにおける最初のデータブロックとする。
【０１６２】
ＣＭ１３０へのデータ書き込みのために、ＤＭＡ部８００のバッファ８１０に４つのデータＡ１〜Ａ４を蓄積してからＣＭ１３０に対する書き込みが行われる。しかしながら、その間の退避と回復の処理による負荷が大きくなってしまう。
【０１６３】
まず、データＡ１の受信に応じてＤＭＡ−Ａでの第１のデータ転送が起動される（ｔ１）。データＡ１についてメモリ＃２（１１３）からバッファ８１０Ａへの転送を行う（ｔ２）。同様に、データＢ１の受信に応じてＤＭＡ−Ｂが起動され（ｔ２）、ＤＭＡＣ８０１ＢによりデータＢ１についてメモリ＃２（１１３）からバッファ８１０Ｂへの転送を行う（ｔ３）。
【０１６４】
次に、データＡ２の受信で（ｔ３）、前記基本動作の場合では、ＤＭＡ部８００のメモリから前記データＡ１についてのデータ転送情報とデータの組のメモリ＃３（１１５）への退避と、メモリ＃３（１１５）からの前記データＡ１についてのデータ転送情報とデータの組についてのＤＭＡ部８００のメモリへの回復とが行われ、その後データＡ２についての転送が行われることとなる（ｔ３〜ｔ６）。次のデータＢ２についてもＤＭＡ−Ｂで同様に退避と回復を含む処理が行われることとなる（ｔ５〜ｔ９）。また、次のデータＡ３，Ｂ３についても同様に、それぞれＤＭＡ−Ａ，ＤＭＡ−Ｂで退避と回復を含む処理が行われる（ｔ７〜ｔ１２及びｔ１１〜ｔ１６）。
【０１６５】
次に、データＡ４の受信で（ｔ１５）、ＤＭＡ−Ａにおいて、前記データＡ１〜Ａ３についてのデータ転送情報とデータの組についての、ＤＭＡ−Ａのメモリからメモリ＃３（１１５）への退避と、メモリ＃３（１１５）からＤＭＡ−Ａのメモリへの回復とが行われ、その後データＡ４についての転送が行われることとなる（ｔ１５〜ｔ２２）。そして、バッファ８１０ＡにデータＡ１〜Ａ４の４つのデータブロックが蓄積されたら、ＤＭＡ−ＡのＤＭＡＣ８０１Ａは、バッファ８１０Ａから、ＣＭ１３０における転送先となるデータ領域へ、前記データＡ１〜Ａ４を書き込む（ｔ２３〜ｔ２６）。次のデータＢ４についてもＤＭＡ−Ｂで同様にＣＭ１３０への書き込みまでの処理が行われることとなる（ｔ２１〜ｔ３２）。
【０１６６】
上記のように、キャッシュライト時に、ＤＭＡ部８００で同系列のデータ（例えばデータＡ，Ｂ）の連続的なデータ転送、例えば順次データを構成する複数のデータブロックの転送が行われる場合に、前記基本動作を行うと、退避と回復の動作分の負荷が大きくなる。従って、第３の制御では、前記キャッシュライト時の負荷を削減するために、以下に示すように、同系列の連続的なデータなどの複数のデータをＣＭ１３０へ書き込む際には、その各データの転送についての退避と回復を１つのデータ転送の都度に行わずにＣＭ１３０へデータ書き込みする。
【０１６７】
＜キャッシュリード時の基本動作＞
図１４（ｂ）は、キャッシュリード時の基本動作の処理例を示す。本例は、ＤＭＡ−ＡとＤＭＡ−Ｂで、それぞれ、データＡ１〜Ａ４とデータＢ１〜Ｂ４とについてのデータ転送を行う場合を示し、４つのデータブロックをまとめてＣＭ１３０から読み出して、他装置７００に対して転送する場合について示している。ＣＨＡ１１０で、前記キャッシュライト時と同様のデータを送出する場合を示す。
【０１６８】
データ転送ＬＳＩ１１４は、ＣＭ１３０からのデータ読み出しにおいて、ＤＭＡ部８００のバッファ８１０にデータＡ１〜Ａ４を１回でまとめて読み出して蓄積し、読み出した各データを個別にメモリ＃２（１１３）への転送を行う。しかしながら、その間の退避と回復の処理による負荷が大きくなってしまう。
【０１６９】
まず、データＡ１の転送のためのコマンド（Ｃ）の受信に応じて、ＤＭＡ−Ａでの第１のデータ転送が起動される（ｔ１）。ＤＭＡ−ＡのＤＭＡＣ８０１Ａで、データＡ１〜Ａ４についてＣＭ１３０から続けて読み出してバッファ８１０Ａへ蓄積する（ｔ２〜ｔ５）。そしてＤＭＡＣ８０１Ａは、バッファ８１０ＡからデータＡ１をメモリ＃２（１１３）へ転送する（ｔ３）。同様に、データＢ１の転送のためにＤＭＡ−Ｂが起動され（ｔ３）、データＢ１〜Ｂ４についてＣＭ１３０から読み出してバッファ８１０Ｂへ蓄積され（ｔ４〜ｔ７）、データＢ１がメモリ＃２（１１３）へ転送される（ｔ５）。
【０１７０】
次に、データＡ２の転送でＤＭＡ−Ａが起動され（ｔ５）、前記データＡ２〜Ａ４についてのデータ転送情報とデータの組について、ＤＭＡ−Ａのメモリからメモリ＃３（１１５）への退避と、メモリ＃３（１１５）からＤＭＡ−Ａのメモリへの回復とが行われ、その後データＡ２についての転送が行われることとなる（ｔ５〜ｔ１２）。次のデータＢ２についてもＤＭＡ−Ｂで同様に退避と回復を含む処理が行われることとなる（ｔ１１〜ｔ１８）。また、次のデータＡ３，Ｂ３についても同様に、それぞれＤＭＡ−Ａ，ＤＭＡ−Ｂで退避と回復を含む処理が行われる（ｔ１７〜ｔ２２及びｔ２１〜ｔ２６）。
【０１７１】
次に、データＡ４の転送で（ｔ２５）、ＤＭＡ−Ａにおいて、前記データＡ４についてのデータ転送情報とデータの組について、メモリ＃３（１１５）への退避と、メモリ＃３（１１５）からの回復とが行われ、その後データＡ４についての転送が行われることとなる（ｔ２５〜ｔ２８）。これにより、前記バッファ８１０Ａに蓄積されていたデータＡ１〜Ａ４の４つのデータブロックについて、メモリ＃２（１１３）への転送が完了し、転送先となる他装置７００のメモリのデータ領域への転送も行われる。次のデータＢ４についてもＤＭＡ−Ｂで同様に処理が行われることとなる（ｔ２７〜３０）。
【０１７２】
上記のように、キャッシュリード時に、ＤＭＡ部８００で同系列のデータ（例えばデータＡ，Ｂ）の連続的なデータ転送、例えば順次データを構成する複数のデータブロックの転送が行われる場合に、前記基本動作を行うと、退避と回復の動作分の負荷が大きくなる。従って、第４の制御では、前記キャッシュリード時の負荷を削減するために、同系列の連続的なデータなどの複数のデータをＣＭ１３０から読み出す場合に、退避と回復を１つのデータ転送の都度に行わずに、ＣＭ１３０からバッファ３１０へ再読み込みしてデータ転送を行う。
【０１７３】
（実施の形態１）
次に、実施の形態１のストレージ装置６００について説明する。前記基本動作は、データ転送の都度にデータ転送情報及びデータの退避と回復の動作を行う制御を示しているが、退避と回復が頻繁に行われる場合には、その分の負荷が大きい。各実施の形態のストレージ装置６００では、前記基本動作が可能であるのに加えて、データ転送ＬＳＩ１１４でのＤＭＡ部８００のメモリの効率的な使用と、退避／回復動作のタイミングの制御により、前記退避や回復に要する負荷を減少させたデータ転送の制御を可能とする。また、状況などに応じて複数の制御を選択的に実行可能である。以下、退避や回復に要する負荷を減少させた第１から第４の制御について説明する。
【０１７４】
まず、実施の形態１のストレージ装置６００では、制御装置１００においてＤＴＣで２つのＤＭＡ部８００を有する構成で、第１の制御として、ＤＭＡ部８００に記憶されるデータ転送情報及びデータについて、他のメモリ＃３（１１５）への先行退避を行うデータ転送制御を行う。
【０１７５】
＜１：先行退避の制御＞
第１の制御として、先行退避を行うデータ転送制御について説明する。第１の制御として、データ転送ＬＳＩにおいて、片側のＤＭＡ部８００のメモリ、すなわちレジスタ８０７とバッファ８１０を、今後のデータ転送のために、常にあるいは可能な限り、空けておく制御を行う。そのために、データ受信などのタイミングではなく、時間的に先行してメモリ＃３（１１５）へデータ転送情報やデータを退避しておく制御を行う。これにより、データ転送の起動からデータ転送終了までに要する時間を短縮する。プロセッサ＃１（１１９）とデータ転送ＬＳＩ１１４とにより、データ転送の起動を契機として、一方のＤＭＡ部８００で回復とデータ転送を行わせるのと並行して、他方のＤＭＡ部８００で退避を先行して行わせる。
【０１７６】
本例では、一方のＤＭＡ部８００のメモリ、例えばＤＭＡ部＃１（８００Ａ）のレジスタ＃１（８０７Ａ）とバッファ＃１（８１０Ａ）を、データ転送のために使用している状況において、他方のＤＭＡ部８００のメモリ、すなわちＤＭＡ部＃２（８００Ｂ）のレジスタ＃２（８０７Ｂ）とバッファ＃２（８１０Ｂ）について、あらかじめ退避を行っておく。すなわち、ＤＭＡ部＃２（８００Ｂ）で次のデータ転送を開始させる事前に、そのメモリに残っているデータ転送情報とデータの組をメモリ＃３（１１５）へ退避しておく。例えば、ＤＭＡ部＃１（８００Ａ）で第１のデータ転送を、ＤＭＡ部＃２（８００Ｂ）で第２のデータ転送をそれぞれ行っていた状況において、ＤＭＡ部＃１（８００Ａ）で第３のデータ転送を起動して開始させたことを契機として、ＤＭＡ部＃２（８００Ｂ）のメモリから前記第２のデータ転送についての組の退避を行って、今後の第４のデータ転送に備えておく。
【０１７７】
図１５（ａ），（ｂ）は、第１の制御と第２の制御について示す。図１５（ａ）は、第１の制御の例を示すタイミングチャートである。本例では、２つのＤＭＡ部８００を有する構成で、前記基本動作を改良した先行退避の制御を行う場合を示す。特にＣＨＡ１１０でのデータ受信の場合を示す。ＤＭＡ−ＡとＤＭＡ−Ｂは、起動（データ受信）、Ｄ／Ｐ退避、Ｐ／Ｄ回復、及びデータ転送の各処理を行う。本例は、ＣＨＡ１１０でデータをＡ１，Ｂ１，Ｃ１，Ｄ１の順で受信した場合に対応した第１〜第４のデータ転送の例を示している。矢印は、或る処理を契機として他の処理が起動されることを示している。
【０１７８】
まず、第１のデータ転送を行う。プロセッサ＃１（１１９）は、データＡ１の受信に応じて、データ転送ＬＳＩ１１４に対しデータ転送の開始を指示し、一方のＤＭＡ部８００、ここではＤＭＡ−Ａを起動する（ｔ１）。起動されたＤＭＡ−ＡのＤＭＡＣ８０１Ａは、データＡ１の転送に必要なデータ転送情報とデータの組（Ａ０）をメモリ＃３（１１５）の制御領域＃１から回復して（ｔ２）、データ転送を行う（ｔ３）。そしてデータ転送ＬＳＩ１１４では、データＡ１の受信を契機として、ＤＭＡ−Ａでのデータ転送の実行と共に、他方のＤＭＡ−Ｂ側についての退避を行わせる。ＤＭＡ−ＢのＤＭＡＣ８０１Ｂは、レジスタ８０７Ｂとバッファ８１０Ｂに記憶されている過去の１つ前のデータ転送処理で使用していたデータ転送情報とデータの組（Ｙ）を、メモリ＃３（１１５）の制御領域＃２に退避する。データ転送ＬＳＩ１１４で、一方のＤＭＡ−Ａで組（Ａ０）の回復とデータＡ１の転送、他方のＤＭＡ−Ｂで組（Ｙ）の退避を、並行的に処理させることになる。本例では特に、ｔ２のタイミングでＤＭＡ−Ａでの組（Ａ０）の回復が行われ、次にｔ３のタイミングで、ＤＭＡ−ＡでのデータＡ１の転送と、同時にＤＭＡ−Ｂでの組（Ｙ）の退避とが行われる場合を示している。メモリ＃３（１１５）では、退避、回復の順に処理されている。なお、本例では並行的に処理された場合を示しているが、先に行うべき処理がある場合など、状況によって、回復、データ転送、退避の各タイミングが前後し得る。
【０１７９】
次に、第２のデータ転送が行われる。前記データＡ１の転送後、データＢ１を受信している。これに応じて、他方側のＤＭＡ−Ｂが起動される（ｔ４）。ＤＭＡ−ＢのＤＭＡＣ８０１Ｂは、前記第１のデータ転送と同様に、データＢ１の転送に必要な組（Ｂ０）をメモリ＃３から回復し（ｔ５）、データＢ１の転送を行う（ｔ６）。ＤＭＡ−ＢでデータＢ１の転送を行わせる際、既に退避が先行して行われているので、退避を行う必要がない。そしてデータＢ１の転送と並行して、ＤＭＡ−Ａで退避を行わせる。ＤＭＡ−Ａは、メモリに記憶されている、前記データＡ１の転送についての組（Ａ１）をメモリ＃３へ退避する（ｔ６）。
【０１８０】
次に、第３のデータ転送が行われる。前記データＢ１の転送後、データＣ１を受信している。これに応じて、ＤＭＡ−Ａが起動される（ｔ７）。前記第１のデータ転送と同様に、ＤＭＡ−ＡのＤＭＡＣ８０１Ａは、データＣ１について回復（ｔ８）とデータ転送（ｔ９）を行い、並行して、ＤＭＡ−Ｂで、データＢ１の転送についての退避を行わせる（ｔ９）。その後、同様に、第４のデータ転送が行われる。
【０１８１】
このように、第１の制御により、一方のＤＭＡ部８００でデータ転送を行うと共に他方のＤＭＡ部８００で先行して退避を行わせるので、次のデータ転送を開始させる際に既に退避が済んでいる分、処理全体に要する時間が短縮される。第１の制御は、３つ以上のＤＭＡ部を有する場合等でも同様に可能である。
【０１８２】
＜キャッシュライト時の第１の制御＞
図１６（ａ），（ｂ）は、キャッシュライト時とキャッシュリード時に第１の制御を行う場合を示す。図１６（ａ）は、キャッシュライト時に第１の制御を行う処理例を示すタイミングチャートである。データ転送ＬＳＩ１１４のＤＭＡ部８００のバッファ８１０からＣＭ１３０に対して４つのデータブロックをまとめて書き込む場合を示す。
【０１８３】
データＡ１の受信でＤＭＡ−Ａが起動され（ｔ１）、ＤＭＡＣ８００Ａにより、データＡ１がバッファ８１０Ａへ転送される（ｔ２）。次に、データＢ１の受信でＤＭＡ−Ｂが起動され（ｔ２）、ＤＭＡＣ８０１Ｂより、データＢ１がバッファ８１０Ｂへ転送される（ｔ３）。それに応じて、ＤＭＡ−Ａで、メモリに記憶されている組（Ａ１）をメモリ＃３（１１５）へ退避させる（ｔ３）。
【０１８４】
次に、データＡ２の受信でＤＭＡ−Ａが起動され（ｔ３）、ＤＭＡＣ８０１Ａにより、データＡ２の転送に必要な組（Ａ１）がメモリ＃３（１１５）から回復される（ｔ４）。そしてデータＡ２の転送が行われる（ｔ５）。それと並行して、ＤＭＡ−Ｂで、メモリに記憶されている組（Ｂ１）がメモリ＃３（１１５）へ退避される（ｔ５）。
【０１８５】
次に、データＢ２の受信で（ｔ５）、同様に、ＤＭＡ−Ｂで組（Ｂ１）の回復（ｔ６）とデータＢ２の転送（ｔ７）が行われ、並行してＤＭＡ−Ａで、組（Ａ１〜Ａ２）の退避（ｔ７〜ｔ８）が行われる。次に、データＡ３の受信で（ｔ７）、同様に、ＤＭＡ−Ａで組（Ａ１〜Ａ２）の回復（ｔ９〜ｔ１０）とデータＡ３の転送（ｔ１１）が行われ、並行してＤＭＡ−Ｂで、組（Ｂ１〜Ｂ２）の退避（ｔ１１〜ｔ１２）が行われる。次に、データＢ３の受信で（ｔ１１）、同様に、ＤＭＡ−Ｂで組（Ｂ１〜Ｂ２）の回復（ｔ１３〜ｔ１４）とデータＢ３の転送（ｔ１５）が行われ、並行してＤＭＡ−Ａで、組（Ａ１〜Ａ３）の退避（ｔ１５〜ｔ１７）が行われる。次に、データＡ４の受信で（ｔ１５）、同様に、ＤＭＡ−Ａで組（Ａ１〜Ａ３）の回復（ｔ１８〜ｔ２０）とデータＡ４の転送（ｔ２１）が行われ、並行してＤＭＡ−Ｂで組（Ｂ１〜Ｂ３）の退避（ｔ２１〜ｔ２３）が行われる。そして更に、ＤＭＡ−ＡでデータＡ１〜Ａ４がバッファ８１０Ａに蓄積されたので、ＤＭＡＣ８０１Ａにより、バッファ８１０ＡからＣＭ１３０のデータ領域へ、データＡ１〜Ａ４が続けて書き込まれる（ｔ２２〜ｔ２５）。次に、データＢ４の受信で（ｔ２１）、同様に、ＤＭＡ−Ａで組（Ｂ１〜Ｂ３）の回復（ｔ２４〜ｔ２６）とデータＢ４の転送（ｔ２７）が行われる。そして更に、ＤＭＡ−ＢでデータＢ１〜Ｂ４がバッファ８１０Ｂに蓄積されたので、ＤＭＡＣ８０１Ｂにより、バッファ８１０ＢからＣＭ１３０のデータ領域へ、データＢ１〜Ｂ４が続けて書き込まれる（ｔ２２〜ｔ２５）。このように、ＤＭＡ部８００でデータ転送情報とデータの先行退避を行いながら、ＣＭ１３０に対するキャッシュライト処理を実行可能であり、基本動作に比べて処理時間が短縮される。
【０１８６】
ＣＭ１３０に対してデータをまとめて書き込む処理を行う場合、クロスバースイッチなどの接続部１５０における処理効率がよいという効果がある。それにより、例えば、情報処理装置２００から記憶ボリューム３１０へとデータ書き込みを行う場合の処理効率がよいという効果がある。
【０１８７】
＜キャッシュリード時の第１の制御＞
図１６（ｂ）は、キャッシュリード時に第１の制御を行う処理例を示すタイミングチャートである。データ転送ＬＳＩ１１４のＤＭＡ部８００で、ＣＭ１３０からバッファ８１０に対して４つのデータブロックをまとめて読み出す場合を示す。
【０１８８】
データＡ１の転送のためにＤＭＡ−Ａが起動され（ｔ１）、ＤＭＡＣ８０１Ａにより、ＣＭ１３０からデータＡ１〜Ａ４が続けてバッファ８１０Ａへ読み出される（ｔ２〜ｔ５）。そして、バッファ８１０Ａからメモリ＃２（１１３）へデータＡ１が転送される（ｔ３）。次に、データＢ１の転送でＤＭＡ−Ｂが起動され（ｔ３）、ＤＭＡＣ８０１Ｂにより、ＣＭ１３０からデータＢ１〜Ｂ４がバッファ８１０Ｂへ読み出される（ｔ４〜ｔ７）。そして、バッファ８１０Ｂからメモリ＃２（１１３）へデータＢ１が転送される（ｔ５）。また前記データＢ１の転送に応じて、並行してＤＭＡ−Ａで、メモリに記憶されている組（Ａ２〜Ａ４）をメモリ＃３（１１５）へ退避させる（ｔ６〜ｔ８）。
【０１８９】
次に、データＡ２の転送でＤＭＡ−Ａが起動され（ｔ５）、ＤＭＡＣ８０１Ａにより、データＡ２の転送に必要な組（Ａ２〜Ａ４）がメモリ＃３（１１５）から回復される（ｔ９〜ｔ１１）。そしてデータＡ２の転送が行われる（ｔ１２）。それと並行してＤＭＡ−Ｂで、メモリに記憶されている組（Ｂ２〜Ｂ４）がメモリ＃３（１１５）へ退避される（ｔ１２〜ｔ１４）。
【０１９０】
次に、データＢ２の転送で（ｔ１１）、同様に、ＤＭＡ−Ｂで組（Ｂ２〜Ｂ４）の回復（ｔ１５〜ｔ１７）とデータＢ２の転送（ｔ１８）が行われ、並行してＤＭＡ−Ａで組（Ａ３〜Ａ４）の退避（ｔ１８〜ｔ１９）が行われる。次に、データＡ３の転送で（ｔ１７）、同様に、ＤＭＡ−Ａで組（Ａ３〜Ａ４）の回復（ｔ２０〜ｔ２１）とデータＡ３の転送（ｔ２２）が行われ、並行してＤＭＡ−Ｂで組（Ｂ３〜Ｂ４）の退避（ｔ２２〜ｔ２３）が行われる。次に、データＢ３の転送で（ｔ２１）、同様に、ＤＭＡ−Ｂで組（Ｂ３〜Ｂ４）の回復（ｔ２４〜ｔ２５）とデータＢ３の転送（ｔ２６）が行われ、並行してＤＭＡ−Ａで組（Ａ４）の退避（ｔ２６）が行われる。次に、データＡ４の転送で（ｔ２５）、同様に、ＤＭＡ−Ａで組（Ａ４）の回復（ｔ２７）とデータＡ４の転送（ｔ２８）が行われ、並行してＤＭＡ−Ｂで組（Ｂ４）の退避（ｔ２８）が行われる。これにより、バッファ８１０Ａに蓄積されていたデータＡ１〜Ａ４のメモリ＃２（１１３）への転送が完了する。次に、データＢ４の転送で（ｔ２７）、同様に、ＤＭＡ−Ｂで組（Ｂ４）の回復（ｔ２９）とデータＢ４の転送（ｔ３０）が行われ、データＢ１〜Ｂ４のメモリ＃２（１１３）への転送が完了する。このように、ＤＭＡ部８００でデータ転送情報とデータの先行退避を行いながら、ＣＭ１３０に対するキャッシュリード処理を実行可能であり、基本動作に比べて処理時間が短縮される。
【０１９１】
ＣＭ１３０からデータをまとめて読み出す処理を行う場合、（ａ）の書き込み処理を行う場合と同様に、接続部１５０における処理効率がよいという効果がある。それにより、例えば、情報処理装置２００が記憶ボリューム３１０からデータ読み出しを行う場合の処理効率がよいという効果がある。
【０１９２】
（実施の形態２）
次に、実施の形態２のストレージ装置６００について説明する。実施の形態２のストレージ装置６００は、データ転送に関する第２の制御を行う。
【０１９３】
＜２：回復短縮の制御＞
第２の制御として、回復短縮を行うデータ転送制御について説明する。第２の制御として、データ転送ＬＳＩ１１４において、ＤＭＡ部８００のメモリに残っているデータ転送情報とデータを利用することで、回復動作を削減する制御を行う。すなわち、或るＤＭＡ部８００において、第１のデータ転送を行って退避を行った後、第２のデータ転送が、前記第１のデータ転送に関連するデータ入出力である場合、第２のデータ転送に必要なデータ転送情報とデータが当該ＤＭＡ部８００のレジスタ８０７とバッファ８１０に残っている場合は、それを利用して回復の動作を省略して第２のデータ転送を行う。これにより、データ転送の起動からデータ転送終了までに要する時間を短縮する。なお、退避動作でメモリ＃３（１１５）に対してデータ転送情報やデータをコピーして、レジスタ８０７やバッファ８１０に同じデータ転送情報やデータが残されることが条件となる。ＤＭＡ部８００のメモリに残されたデータ転送情報やデータが、上書きで消去されない限り利用できる。第２の制御は、独立して使用することも可能であるが、本例では第１の制御と組み合わせた場合を示す。
【０１９４】
図１５（ｂ）は、第２の制御の例を示すタイミングチャートである。本例では、２つのＤＭＡ部８００を有する構成で、前記先行退避の動作に加えて回復短縮を行う制御を示す。特にデータ受信の場合を示す。本例は、ＣＨＡ１１０でデータを、｛Ａ１，Ｂ１，Ａ２，Ｂ２｝の順で受信した場合に対応した第１〜第４のデータ転送の例を示している。
【０１９５】
まず、第１のデータ転送が行われる。データＡ１の受信に応じて、（ａ）に示す第１の制御と同様に、データ転送と先行退避の制御が行われる（ｔ１〜ｔ３）。同様に、第２のデータ転送が行われる（ｔ４〜ｔ６）。
【０１９６】
次に、第３のデータ転送が行われる。データＢ１の転送後、データＡ２を受信している（ｔ７）。これに応じて、ＤＭＡ−Ａが起動される。ここで、前記第１の制御であればデータＡ２についての転送に必要なデータ転送情報とデータの組（Ａ１）の回復を行うが、第２の制御では、必要な組（Ａ１）がＤＭＡ部＃１（８００Ａ）のレジスタ８０７Ａとバッファ８１０Ａに残っているので回復する必要が無く、そのままそのメモリに記憶されている組（Ａ１）を利用して、データＡ２についての転送を行う（ｔ８）。また、第１の制御に従って他方側のＤＭＡ−ＢでデータＢ１についての退避を行わせる（ｔ８）。データ転送ＬＳＩ１１４では、ｔ８のタイミングで、ＤＭＡ−ＡでデータＡ２の転送を行わせ、並行してＤＭＡ−ＢでデータＢ１についての退避を行わせることとなる。データ転送ＬＳＩ１１４は、受信データＡ２がデータＡ１に続く順次データであるので、メモリに組（Ａ１）が残っているＤＭＡ−Ａ側を起動する。その後、データＢ２を受信しており（ｔ１０）、ＤＭＡ−ＢのメモリでデータＢ１についての組（Ｂ１）が残っているので、同様に、ＤＭＡ−Ｂにおいて回復無しでそのままデータＢ２について転送が行われる（ｔ１１）。
【０１９７】
このように、第２の制御では、データ転送ＬＳＩ１１４において、関連する連続的なデータ転送を行う場合、例えば同じ系列の順次データを転送する場合などにおいて、ＤＭＡ部８００のメモリに保持されているデータ転送情報とデータをそのまま利用することで回復動作を省略し、処理全体に要する時間が短縮される。第２の制御は、３つ以上のＤＭＡ部を有する場合でも同様に可能である。
【０１９８】
＜キャッシュライト時の第２の制御＞
図１７（ａ），（ｂ）は、キャッシュライト時とキャッシュリード時に第２の制御を行う場合を示す。図１７（ａ）は、キャッシュライト時に第２の制御を行う処理例を示すタイミングチャートである。データ転送ＬＳＩ１１４のＤＭＡ部８００のバッファ８１０からＣＭ１３０に対して４つのデータブロックをまとめて書き込む場合を示す。
【０１９９】
データＡ１の受信でＤＭＡ−Ａが起動され（ｔ１）、ＤＭＡＣ８０１Ａにより、データＡ１がバッファ８１０Ａへ転送される（ｔ２）。次に、データＢ１の受信でＤＭＡ−Ｂが起動され（ｔ２）、ＤＭＡＣ８０１Ｂにより、データＢ１がバッファ８１０Ｂへ転送される（ｔ３）。それに応じて、ＤＭＡ−Ａで、メモリに記憶されている組（Ａ１）をメモリ＃３（１１５）へ退避させる（ｔ３）。
【０２００】
次に、データＡ２の受信でＤＭＡ−Ａが起動され（ｔ３）、ＤＭＡＣ８０１Ａにより、データＡ２の転送に必要な組（Ａ１）がメモリに記憶されているので、回復無しでデータＡ２の転送が行われる（ｔ４）。それと並行してＤＭＡ−Ｂで、メモリに記憶されている組（Ｂ１）がメモリ＃３（１１５）へ退避される（ｔ４）。
【０２０１】
次に、データＢ２の受信で（ｔ４）、同様に、ＤＭＡ−Ｂで組（Ｂ１）の回復無しでデータＢ２の転送（ｔ５）が行われ、並行してＤＭＡ−Ａで組（Ａ１〜Ａ２）の退避（ｔ５〜ｔ６）が行われる。次に、データＡ３の受信で（ｔ５）、同様に、ＤＭＡ−Ａで組（Ａ１〜Ａ２）の回復無しでデータＡ３の転送（ｔ７）が行われ、並行してＤＭＡ−Ｂで組（Ｂ１〜Ｂ２）の退避（ｔ７〜ｔ８）が行われる。次に、データＢ３の受信で（ｔ７）、同様に、ＤＭＡ−Ｂで組（Ｂ１〜Ｂ２）の回復無しでデータＢ３の転送（ｔ９）が行われ、並行してＤＭＡ−Ａで組（Ａ１〜Ａ３）の退避（ｔ９〜ｔ１１）が行われる。次に、データＡ４の受信で（ｔ９）、同様に、ＤＭＡ−Ａで組（Ａ１〜Ａ３）の回復無しでデータＡ４の転送（ｔ１２）が行われ、並行してＤＭＡ−Ｂで組（Ｂ１〜Ｂ３）の退避（ｔ１２〜ｔ１４）が行われる。そして更に、ＤＭＡ−Ａで、データＡ１〜Ａ４がバッファに蓄積されたので、ＤＭＡＣ８０１Ａにより、バッファ８１０ＡからＣＭ１３０のデータ領域へ、データＡ１〜Ａ４が続けて書き込まれる（ｔ１３〜ｔ１６）。次に、データＢ４の受信で（ｔ１２）、同様に、ＤＭＡ−Ａで組（Ｂ１〜Ｂ３）の回復無しでデータＢ４の転送（ｔ１５）が行われる。そして更に、ＤＭＡ−Ｂで、データＢ１〜Ｂ４がバッファ８１０Ｂに蓄積されたので、ＤＭＡＣ８０１Ｂにより、バッファ８１０ＢからＣＭ１３０のデータ領域へ、データＢ１〜Ｂ４が続けて書き込まれる（ｔ１６〜ｔ１９）。このように、ＤＭＡ部８００でデータ転送情報とデータの先行退避と回復短縮を行いながら、ＣＭ１３０に対するキャッシュライト処理を実行可能であり、基本動作に比べて処理時間が短縮される。
【０２０２】
＜キャッシュリード時の第２の制御＞
図１７（ｂ）は、キャッシュリード時に第２の制御を行う処理例を示すタイミングチャートである。データ転送ＬＳＩ１１４のＤＭＡ部８００で、ＣＭ１３０からバッファ８１０に対して４つのデータブロックをまとめて読み出す場合を示す。
【０２０３】
データＡ１の転送のためにＤＭＡ−Ａが起動され（ｔ１）、ＤＭＡＣ８０１Ａにより、ＣＭ１３０からデータＡ１〜Ａ４が続けてバッファ８１０Ａへ読み出される（ｔ２〜ｔ５）。そして、バッファ８１０Ａからメモリ＃２（１１３）へデータＡ１が転送される（ｔ３）。次に、データＢ１の転送でＤＭＡ−Ｂが起動され（ｔ３）、ＤＭＡＣ８０１Ｂにより、ＣＭ１３０からデータＢ１〜Ｂ４がバッファ８１０Ｂへ読み出される（ｔ４〜ｔ７）。そして、バッファ８１０Ｂからメモリ＃２（１１３）へデータＢ１が転送される（ｔ５）。また前記データＢ１の受信に応じて、並行してＤＭＡ−Ａで、メモリに記憶されている組（Ａ２〜Ａ４）をメモリ＃３（１１５）へ退避させる（ｔ６〜ｔ８）。
【０２０４】
次に、データＡ２の転送でＤＭＡ−Ａが起動され（ｔ５）、ＤＭＡＣ８０１Ａにより、データＡ２の転送に必要な組（Ａ２〜Ａ４）の回復無しでメモリに記憶されている組（Ａ２〜Ａ４）をそのまま利用してデータＡ２の転送が行われる（ｔ９）。それと並行してＤＭＡ−Ｂで、メモリに記憶されている組（Ｂ２〜Ｂ４）がメモリ＃３（１１５）へ退避される（ｔ９〜ｔ１１）。
【０２０５】
次に、データＢ２の転送で（ｔ８）、同様に、ＤＭＡ−Ｂで組（Ｂ２〜Ｂ４）の回復無しでデータＢ２の転送（ｔ１２）が行われ、並行してＤＭＡ−Ａで組（Ａ３〜Ａ４）の退避（ｔ１２〜ｔ１３）が行われる。次に、データＡ３の転送で（ｔ１１）、同様に、ＤＭＡ−Ｂで組（Ａ３〜Ａ４）の回復無しでデータＡ３の転送（ｔ１４）が行われ、並行してＤＭＡ−Ｂで組（Ｂ３〜Ｂ４）の退避（ｔ１４〜ｔ１５）が行われる。次に、データＢ３の転送で（ｔ１３）、同様に、ＤＭＡ−Ｂで組（Ｂ３〜Ｂ４）の回復無しでデータＢ３の転送（ｔ１６）が行われ、並行してＤＭＡ−Ａで組（Ａ４）の退避（ｔ１６）が行われる。次に、データＡ４の転送で（ｔ１５）、同様に、ＤＭＡ−Ａで組（Ａ４）の回復無しでデータＡ４の転送（ｔ１７）が行われ、並行してＤＭＡ−Ｂで組（Ｂ４）の退避（ｔ１７）が行われる。これにより、バッファ８１０Ａに蓄積されていたデータＡ１〜Ａ４のメモリ＃２（１１３）への転送が完了する。次に、データＢ４の受信で（ｔ１６）、同様に、ＤＭＡ−Ｂで組（Ｂ４）の回復無しでデータＢ４の転送（ｔ１８）が行われ、データＢ１〜Ｂ４のメモリ＃２（１１３）への転送が完了する。このように、ＤＭＡ部８００でデータ転送情報とデータの先行退避と回復短縮を行いながら、ＣＭ１３０に対するキャッシュリード処理を実行可能であり、基本動作に比べて処理時間が短縮される。
【０２０６】
（実施の形態３）
次に、実施の形態３のストレージ装置６００について説明する。実施の形態３のストレージ装置６００は、データ転送に関する第３の制御を行う。
【０２０７】
＜３：キャッシュライト時の第３の制御＞
第３の制御として、キャッシュライト時に退避・回復の短縮を行うデータ転送制御について説明する。第３の制御として、データ転送ＬＳＩ１１４において、ＤＭＡ部８００でデータ転送を行う際に、メモリ＃２（１１３）からＣＭ１３０に対して複数のデータを転送して書き込む処理を行う場合に、その各データの転送ではメモリ＃３（１１５）に対する退避や回復を行わずに、バッファ８１０からＣＭ１３０へ転送データの書き込み（掃き出し）を行ってしまう。これにより、退避と回復の動作を短縮する。データ転送ＬＳＩ１１４では、一方のＤＭＡ部８００でのデータ転送を契機として、他方のＤＭＡ部８００でバッファ８１０からＣＭ１３０に対するデータ掃き出しを行わせる。
【０２０８】
図１８（ａ），（ｂ）は、第３の制御と第４の制御を示す。図１８（ａ）は、第３の制御の処理例を示すタイミングチャートである。なお、図１８（ａ）では、前記データ｛Ａ１，Ｂ１，Ａ２，Ｂ２，……｝が時間的に最短のタイミングで受信された場合を示している。
【０２０９】
データＡ１の受信に応じてＤＭＡ−Ａが起動され（ｔ１）、ＤＭＡＣ８０１Ａにより、データＡ１について、メモリ＃２（１１３）からバッファ８１０Ａへの転送が行われる。次に、データＢ１の受信でＤＭＡ−Ｂが起動され（ｔ２）、同様に、ＤＭＡＣ８０１Ｂにより、データＢ１について、メモリ＃２（１１３）からバッファ８１０Ｂへの転送が行われる。次に、データＡ２の受信でＤＭＡ−Ａが起動され（ｔ３）、ここで前記基本動作の場合なら、メモリに記憶されている組（Ａ１）の退避と、データＡ２の転送に必要な組（Ａ１）の回復を行うが、第３の制御の場合では行わない。第３の制御では、前記ＤＭＡ−ＢでのデータＢ１の受信及びデータ転送の起動に応じて、他方のＤＭＡ−Ａで、データＡ１について、退避の代わりにバッファ８１０ＡからＣＭ１３０へデータＡ１の書き込みを行わせる（ｔ３）。この際、ＤＭＡ−Ａのメモリには、前記データＡ１の転送で使用していたデータ転送情報とデータの組（Ａ１）が残っているので、それをそのまま利用してデータＡ２の転送が制御可能である。そして同様に、前記データＢ２の受信に応じて（ｔ３）、ＤＭＡ−Ｂで、データＢ１について、退避の代わりにバッファ８１０ＢからＣＭ１３０へデータＢ１の書き込みを行わせる（ｔ４）。データＡ３，Ｂ３以後の制御についても同様である。
【０２１０】
このように、基本動作ではＣＭ１３０へ４つのデータブロックをまとめて書き込みしたが、第３の制御では、前記データ掃き出しの動作により、退避と回復無しでＣＭ１３０へ個別にデータブロックを書き込むこととなる。これにより、前記基本動作で行っていた退避と回復の動作分が削減されるので、処理全体に要する時間が短縮される。
【０２１１】
第３の制御は、前記第１、第２の制御と独立しても、組み合わせても実行可能である。なお、前記キャッシュライトの処理では、ＣＨＡ１１０のデータ転送ＬＳＩ１１４から、接続部１５０を介して、ＣＭ１３０へデータ書き込みが行われる。従って、制御装置１００の構成において、接続部１５０の構成との整合が問題にならない場合では、第３の制御を行うことが有利である。
【０２１２】
（実施の形態４）
次に、実施の形態４のストレージ装置６００について説明する。実施の形態４のストレージ装置６００は、データ転送に関する第４の制御を行う。
【０２１３】
＜４：キャッシュリード時の第４の制御＞
第４の制御として、キャッシュリード時に退避・回復の短縮を行うデータ転送制御について説明する。第４の制御として、データ転送ＬＳＩ１１４において、ＤＭＡ部８００でデータ転送を行う際に、ＣＭ１３０からメモリ＃２（１１３）に対して複数のデータを転送して読み出す処理を行う場合に、ＣＭ１３０からバッファ８０１へまとめて読み出した各データの転送の際に、メモリ＃３（１１５）に対する退避や回復は行わずに一旦レジスタ８０７やバッファ８１０に記憶されているデータ転送情報とデータの組については廃棄してしまい、次のデータ転送においてＣＭ１３０からバッファ８１０への転送データの再読み込みを行って、メモリ＃２（１１３）へのデータ転送を行う。なお前記廃棄とは、バッファ８１０上の当該データ転送情報とデータの組についてそのまま何も動作が行われないこと、あるいは他の組によって上書きされることである。
【０２１４】
図１８（ｂ）は、第４の制御の処理例を示すタイミングチャートである。なお図１８（ｂ）では、前記データ｛Ａ１，Ｂ１，Ａ２，Ｂ２，……｝が時間的に最短のタイミングで転送される場合を示している。
【０２１５】
データＡ１の転送のためにＤＭＡ−Ａが起動され（ｔ１）、ＤＭＡＣ８０１Ａにより、データＡ１〜Ａ４についてＣＭ１３０からバッファ８１０Ａへ続けて読み出しが行われる（ｔ２〜ｔ５）。そして、バッファ８１０Ａからメモリ＃２（１１３）へデータＡ１が転送される（ｔ３）。次に、データＢ１の転送でＤＭＡ−Ｂが起動され（ｔ３）、同様に、データＢ１〜Ｂ４についてＣＭ１３０からバッファ３１０Ｂへ転送が行われ（ｔ４〜ｔ７）、バッファ３１０Ｂからメモリ＃２（１１３）へデータＢ１が転送される（ｔ５）。次に、データＡ２の転送でＤＭＡ−Ａが起動され（ｔ５）、ここで、前記基本動作の場合なら、メモリに記憶されている組の退避と、データＡ２の転送に必要なデータ転送情報とデータの組（Ａ２〜Ａ４）の回復を行うが、第４の制御の場合では、ＤＭＡ−Ａで、前記組（Ａ２〜Ａ４）についてメモリ＃３（１１５）からの回復ではなく、ＣＭ１３０からバッファ３１０Ａへと前記データＡ２〜Ａ４を再読み込みさせ（ｔ６〜ｔ８）、そしてバッファ８１０Ａからメモリ＃２（１１３）へとデータＡ２の転送を行わせる（ｔ７）。ＣＭ１３０から再読み込みされたデータ（Ａ２〜Ａ４）を用いてデータＡ２の転送が制御可能である。同様に、データＢ２の転送に応じて（ｔ７）、ＤＭＡ−Ｂで、データＢ２〜Ｂ４について、ＣＭ１３０から再読み込みを行わせ（ｔ８〜ｔ１０）、データＢ２をメモリ＃２（１１３）へ転送する（ｔ９）。データＡ３，Ｂ３以後の転送についても同様である（ｔ９〜ｔ１１、ｔ１１〜ｔ１３、ｔ１３〜ｔ１５、及びｔ１５〜ｔ１７）。
【０２１６】
このように、前記基本動作ではＣＭ１３０からメモリ＃２（１１３）へのデータ転送で退避と回復を行ったが、第４の制御では、前記ＤＭＡ部８００のメモリに記憶された組の廃棄とＣＭ１３０からの転送データ再読み込みの動作により、各データ転送の都度の退避と回復無しで各データブロックをメモリ＃２（１１３）へ転送することとなる。これにより、前記基本動作で行っていた退避と回復の動作分が削減されるので、処理全体に要する時間が短縮される。
【０２１７】
第４の制御は、前記第１、第２、第３の制御と独立しても、組み合わせても実行可能である。なお、前記キャッシュリードの処理では、ＣＨＡ１１０のデータ転送ＬＳＩ１１４から、接続部１５０を介して、ＣＭ１３０からのデータ読み出しが行われる。従って、第３の制御と同様に、制御装置１００の構成において、接続部１５０の構成との整合が問題にならない場合では、第４の制御を行うことが有利である。
【０２１８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【０２１９】
本発明は、複数のデータ転送を多重に処理する装置や情報処理システムなどに利用可能である。
【図面の簡単な説明】
【０２２０】
【図１】本発明の一実施の形態であるストレージ装置の全体のハードウェア外観構成を示す斜視図である。
【図２】本発明の一実施の形態であるストレージ装置を含んで構成されるストレージシステムの全体の構成を示すブロック図である。
【図３】本発明の一実施の形態である第１のストレージ装置と他装置との間でのデータ入出力に係わる構成の概要を示し、主にデータ転送に係わる処理部とメモリ部についてまとめた図である。
【図４】本発明の一実施の形態のストレージ装置において、ＣＨＡの構成（第１のＣＨＡ）の例を示す図である。
【図５】本発明の一実施の形態のストレージ装置において、データ転送に係わる各メモリの構成と関連を示す図である。
【図６】本発明の一実施の形態のストレージ装置において、ＣＨＡにおけるデータ転送ＬＳＩの構成と他処理部との接続構成を示す図である。
【図７】本発明の一実施の形態のストレージ装置において、データ転送ＬＳＩにおけるＤＭＡ部内のレジスタの詳細構成例を示す図である。
【図８】従来構成における複数のデータ入出力の処理例を示すシーケンス図である。
【図９】（ａ），（ｂ）は、本発明の一実施の形態のストレージ装置での、複数のデータ入出力の処理例を示すシーケンス図である。
【図１０】本発明の一実施の形態のストレージ装置における、ＣＨＡ（第１のＣＨＡ）でのデータ転送処理を示すフロー図である。
【図１１】本発明の一実施の形態のストレージ装置において、ＣＨＡの別の構成（第２のＣＨＡ）の例を示す図である。
【図１２】本発明の一実施の形態のストレージ装置における、第２のＣＨＡでのデータ転送処理を示すフロー図である。
【図１３】各実施の形態のストレージ装置において、データ転送ＬＳＩにおけるデータ転送の多重処理に係わる基本動作の例を示すタイミングチャートである。
【図１４】（ａ），（ｂ）は、本発明の一実施の形態のストレージ装置における、データ転送の多重処理に係わる、キャッシュライト時とキャッシュリード時とにおける基本動作の処理例を示すタイミングチャートである。
【図１５】（ａ），（ｂ）は、本発明の実施の形態１のストレージ装置における第１の制御と、実施の形態２のストレージ装置における第２の制御とについての処理例を示すタイミングチャートである。
【図１６】（ａ），（ｂ）は、本発明の実施の形態１のストレージ装置において、キャッシュライト時とキャッシュリード時に第１の制御を行う場合の処理例を示すタイミングチャートである。
【図１７】（ａ），（ｂ）は、本発明の実施の形態２のストレージ装置において、キャッシュライト時とキャッシュリード時に第２の制御を行う場合の処理例を示すタイミングチャートである。
【図１８】（ａ），（ｂ）は、本発明の実施の形態３のストレージ装置における第３の制御と、実施の形態４のストレージ装置における第４の制御とについての処理例を示すタイミングチャートである。
【符号の説明】
【０２２１】
１１…基本筐体、１２…増設筐体、１３…制御パッケージ、１４…電源ユニット、１５…バッテリ、１６…ファン、３０…記憶装置、１００，１０１，１０２…ストレージ制御装置、１１０…チャネル制御部、１１０Ａ，１１０Ｂ…回路基板、１１１…メモリコントローラ＃２、１１２…プロセッサ＃２、１１２Ｂ…プロトコルＬＳＩ、１１３…メモリ＃２、１１４…データ転送ＬＳＩ、１１５…メモリ＃３、１１６…メモリコントローラ＃１、１１７…メモリ＃１、１１８…コネクタ、１１９…プロセッサ＃１、１２０…共有メモリ、１３０…キャッシュメモリ、１４０…ディスク制御部、１５０…接続部、１５１…内部ＬＡＮ、２００…情報処理装置、３００，３０１，３０２…ストレージ駆動装置、３１０…記憶ボリューム、５００…ＳＡＮ、６００，６０１，６０２…ストレージ装置、７００…他装置、８００，８００Ａ，８００Ｂ…ＤＭＡ部、８０１，８０１Ａ，８０１Ｂ…ＤＭＡ制御部、８０３…転送起動レジスタ、８０４…転送レジスタ、８０５…初期設定レジスタ、８０６…スクリプトレジスタ、８０７，８０７Ａ，８０７Ｂ…レジスタ、８１０，８１０Ａ，８１０Ｂ…転送データバッファ。
【図２】
2006185000.tif 000003
【図３】
2006185000.tif 000004
【図４】
2006185000.tif 000005
【図５】
2006185000.tif 000006
【図６】
2006185000.tif 000007
【図７】
2006185000.tif 000008
【図８】
2006185000.tif 000009
【図９】
2006185000.tif 000010
【図１０】
2006185000.tif 000011
【図１１】
2006185000.tif 000012
【図１２】
2006185000.tif 000013
【図１３】
2006185000.tif 000014
【図１４】
2006185000.tif 000015
【図１５】
2006185000.tif 000016
【図１６】
2006185000.tif 000017
【図１７】
2006185000.tif 000018
【図１８】
2006185000.tif 000019
【図１】
2006185000.tif 000020