(57)【要約】      （修正有）【課題】ストレージ装置に対するデータ入出力性能が、ストレージ装置間で行われる通信により制約されないストレージ制御装置、及びストレージ制御装置の制御方法を提供する。【解決手段】第１ストレージ制御装置と、第１ストレージ制御装置に接続される第２ストレージ制御装置とを備えるシステムにおける第１ストレージ制御装置であって、第１メモリと、第２メモリと、データ転送情報を第２メモリに書込む入出力制御部と、データバッファ及びデータ転送レジスタを有し第２メモリからのデータ転送情報に基づいて第１メモリと第２ストレージ制御装置との間のデータ転送を制御するデータ転送制御部とを備え、データ転送制御部は第１データ転送情報に基づく第１データ転送を制御している途中で第２データ転送情報に基づく第２データ転送を制御する場合は、第１データ転送情報及びデータバッファに記憶されているデータを第２メモリに書出し第２メモリから第２データ転送情報を読出して第２データ転送を制御する。【選択図】図２１
2005149082.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置からデータ入出力要求を受信し、データを記憶する第１の記憶ボリウムに対してデータ入出力処理を行う第１のストレージ制御装置と、前記第１のストレージ制御装置と通信可能に接続され、データを記憶する第２の記憶ボリウムに対してデータ入出力処理を行う第２のストレージ制御装置とを備えて構成されるストレージシステムにおける、前記第１のストレージ制御装置であって、
前記第１のストレージ制御装置と前記第２のストレージ制御装置との間で送受信されるデータを記憶する第１のメモリと、
第２のメモリと、
前記第１のメモリにおけるデータの記憶位置と前記第２のストレージ制御装置におけるデータの記憶位置とを含むデータ転送情報を前記第２のメモリに書き込む入出力制御部と、
データを記憶するデータバッファ、及び前記データ転送情報を記憶するデータ転送レジスタを有し、前記第２のメモリから前記データ転送レジスタに読み出した前記データ転送情報に基づいて、前記データバッファを介して、前記第１のメモリと前記第２のストレージ制御装置との間のデータ転送を制御するデータ転送制御部と、
を備え、
前記データ転送制御部は、
第１の前記データ転送情報に基づく第１の前記データ転送を制御している途中で、第２の前記データ転送情報に基づく第２の前記データ転送を制御する場合には、前記データ転送レジスタに記憶されている前記第１のデータ転送情報、及び前記データバッファに記憶されているデータを、前記第２のメモリに書き出し、
前記第２のメモリから前記データ転送レジスタに前記第２のデータ転送情報を読み出して、前記第２のデータ転送情報に基づいて前記第２のデータ転送を制御すること
を特徴とするストレージ制御装置。
【請求項２】
前記データ転送制御部は、前記データバッファ及び前記データ転送レジスタをそれぞれ複数有し、
前記第１のデータ転送情報に基づく前記第１のデータ転送を制御している途中で、前記第２のデータ転送情報に基づく前記第２のデータ転送を制御する場合には、
前記第１のデータ転送情報を記憶している第１の前記データ転送レジスタ、及び前記第１のデータ転送により送受信されるデータを記憶している第１の前記データバッファから、前記第２のメモリへの、前記第１のデータ転送情報、及び前記第１のデータ転送により送受信されるデータの書き出しが完了する前に、前記第２のメモリから第２の前記データ転送レジスタに前記第２のデータ転送情報を読み出して、前記第２のデータ転送情報に基づいて、第２の前記データバッファを介して、前記第２のデータ転送を制御すること
を特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記データ転送は、前記第１のストレージ制御装置と前記第２のストレージ制御装置との間で送受信されるデータを少なくとも１つ以上に分割してなる各データブロックを単位として制御されること
を特徴とする請求項１に記載のストレージ制御装置。
【請求項４】
前記第１のストレージ制御装置と、前記第２のストレージ制御装置との間は、少なくとの一つ以上のスイッチを介して通信可能に接続されていること
を特徴とする請求項１に記載のストレージ制御装置。
【請求項５】
前記入出力制御部は、
前記情報処理装置から前記第２の記憶ボリウムに対する前記データ入出力要求を受信すると、前記データ転送情報を前記第２のメモリに書き込み、
前記データ転送制御部は、
前記第２のメモリから前記データ転送レジスタに前記データ転送情報を読み出し、
前記読み出した前記データ転送情報に基づいて、前記第１のメモリと前記第２のストレージ制御装置との間のデータ転送を制御すること
を特徴とする請求項１に記載のストレージ制御装置。
【請求項６】
前記入出力制御部は、
前記情報処理装置から前記第１の記憶ボリウムに対するデータ書き込み要求及び書き込みデータを受信すると、前記書き込みデータの複製を前記第２の記憶ボリウムにも書き込むべく、前記データ転送情報を前記第２のメモリに書き込み、
前記データ転送制御部は、
前記第２のメモリから前記データ転送レジスタに前記データ転送情報を読み出し、
前記読み出した前記データ転送情報に基づいて、前記第１のメモリから前記第２のストレージ制御装置への前記書き込みデータの送信を制御すること
を特徴とする請求項１に記載のストレージ制御装置。
【請求項７】
前記第２のメモリと、前記入出力制御部と、前記データ転送制御部とが形成された回路基板を備えるチャネル制御部と、
前記第１のメモリが形成された回路基板を備えるキャッシュメモリ部と、
前記第１の記憶ボリウムに記憶されるデータの読み書きを行うディスク制御部と
を備え、
前記第１のメモリには、
前記第１のストレージ制御装置と、前記情報処理装置又は前記第２のストレージ制御装置の少なくともいずれかとの間で送受信されるデータが記憶され、
前記入出力制御部は、
前記第１のメモリにおけるデータの記憶位置と、前記情報処理装置又は前記第２のストレージ制御装置におけるデータの記憶位置とを含むデータ転送情報を前記第２のメモリに書き込み、
前記データ転送制御部は、
前記第２のメモリから前記データ転送レジスタに読み出した前記データ転送情報に基づいて、前記データバッファを介して、前記第１のメモリと、前記情報処理装置又は前記第２のストレージ制御装置との間のデータ転送を制御すること
を特徴とする請求項１に記載のストレージ制御装置。
【請求項８】
情報処理装置からデータ入出力要求を受信し、データを記憶する第１の記憶ボリウムに対してデータ入出力処理を行う第１のストレージ制御装置と、前記第１のストレージ制御装置と少なくとも一つ以上のスイッチを介して通信可能に接続され、データを記憶する第２の記憶ボリウムに対してデータ入出力処理を行う第２のストレージ制御装置とを備えて構成されるストレージシステムにおける、前記第１のストレージ制御装置であって、
前記第１のストレージ制御装置と、前記情報処理装置又は前記第２のストレージ制御装置の少なくともいずれかとの間で送受信されるデータを記憶する第１のメモリが形成された回路基板を備えるキャッシュメモリ部と、
第２のメモリ、前記第１のメモリにおけるデータの記憶位置と前記情報処理装置又は前記第２のストレージ制御装置におけるデータの記憶位置とを含むデータ転送情報を前記第２のメモリに書き込む入出力制御部、及びデータを記憶する複数のデータバッファと前記データ転送情報を記憶する複数のデータ転送レジスタとを有し、前記第２のメモリから前記データ転送レジスタに読み出した前記データ転送情報に基づいて、前記データバッファを介して、前記第１のメモリと、前記情報処理装置又は前記第２のストレージ制御装置との間のデータ転送を制御するデータ転送制御部とが形成された回路基板を備えるチャネル制御部と、
前記第１の記憶ボリウムに記憶されるデータの読み書きを行うディスク制御部と、
を備え、
前記データ転送制御部は、
前記第１のデータ転送情報に基づく前記第１のデータ転送を制御している途中で、前記第２のデータ転送情報に基づく前記第２のデータ転送を制御する場合には、
前記第１のデータ転送情報を記憶している第１の前記データ転送レジスタ、及び前記第１のデータ転送により送受信されるデータを記憶している第１の前記データバッファから、前記第１のデータ転送情報、及び前記第１のデータ転送により送受信されるデータを前記第２のメモリへ書き出すと共に、前記書き出しが完了する前に、前記第２のメモリから第２の前記データ転送レジスタに前記第２のデータ転送情報を読み出して、前記第２のデータ転送情報に基づいて、第２の前記データバッファを介して、前記第２のデータ転送を制御すること
を特徴とするストレージ制御装置。
【請求項９】
情報処理装置からデータ入出力要求を受信し、データを記憶する第１の記憶ボリウムに対してデータ入出力処理を行う第１のストレージ制御装置と、前記第１のストレージ制御装置と通信可能に接続され、データを記憶する第２の記憶ボリウムに対してデータ入出力処理を行う第２のストレージ制御装置とを備えて構成されるストレージシステムにおける、
前記第１のストレージ制御装置と前記第２のストレージ制御装置との間で送受信されるデータを記憶する第１のメモリと、
第２のメモリと、
前記第１のメモリにおけるデータの記憶位置と前記第２のストレージ制御装置におけるデータの記憶位置とを含むデータ転送情報を前記第２のメモリに書き込む入出力制御部と、
データを記憶するデータバッファ、及び前記データ転送情報を記憶するデータ転送レジスタを有し、前記第２のメモリから前記データ転送レジスタに読み出した前記データ転送情報に基づいて、前記データバッファを介して、前記第１のメモリと前記第２のストレージ制御装置との間のデータ転送を制御するデータ転送制御部と、
を備える前記第１のストレージ制御装置の制御方法であって、
前記データ転送制御部は、
第１の前記データ転送情報に基づく第１の前記データ転送を制御している途中で、第２の前記データ転送情報に基づく第２の前記データ転送を制御する場合には、前記データ転送レジスタに記憶されている前記第１のデータ転送情報、及び前記データバッファに記憶されているデータを、前記第２のメモリに書き出し、
前記第２のメモリから前記データ転送レジスタに前記第２のデータ転送情報を読み出して、前記第２のデータ転送情報に基づいて前記第２のデータ転送を制御すること
を特徴とするストレージ制御装置の制御方法。
【請求項１０】
前記データ転送制御部は、前記データバッファ及び前記データ転送レジスタをそれぞれ複数有し、
前記第１のデータ転送情報に基づく前記第１のデータ転送を制御している途中で、前記第２のデータ転送情報に基づく前記第２のデータ転送を制御する場合には、
前記第１のデータ転送情報を記憶している第１の前記データ転送レジスタ、及び前記第１のデータ転送により送受信されるデータを記憶している第１の前記データバッファから、前記第２のメモリへの、前記第１のデータ転送情報、及び前記第１のデータ転送により送受信されるデータの書き出しが完了する前に、前記第２のメモリから第２の前記データ転送レジスタに前記第２のデータ転送情報を読み出して、前記第２のデータ転送情報に基づいて、第２の前記データバッファを介して、前記第２のデータ転送を制御すること
を特徴とする請求項９に記載のストレージ制御装置の制御方法。
【請求項１１】
前記データ転送は、前記第１のストレージ制御装置と前記第２のストレージ制御装置との間で送受信されるデータを少なくとも１つ以上に分割してなる各データブロックを単位として制御されること
を特徴とする請求項９に記載のストレージ制御装置の制御方法。
【請求項１２】
前記第１のストレージ制御装置と、前記第２のストレージ制御装置との間は、少なくとの一つ以上のスイッチを介して通信可能に接続されていること
を特徴とする請求項９に記載のストレージ制御装置の制御方法。
【請求項１３】
前記入出力制御部は、
前記情報処理装置から前記第２の記憶ボリウムに対する前記データ入出力要求を受信すると、前記データ転送情報を前記第２のメモリに書き込み、
前記データ転送制御部は、
前記第２のメモリから前記データ転送レジスタに前記データ転送情報を読み出し、
前記読み出した前記データ転送情報に基づいて、前記第１のメモリと前記第２のストレージ制御装置との間のデータ転送を制御すること
を特徴とする請求項９に記載のストレージ制御装置の制御方法。
【請求項１４】
前記入出力制御部は、
前記情報処理装置から前記第１の記憶ボリウムに対するデータ書き込み要求及び書き込みデータを受信すると、前記書き込みデータの複製を前記第２の記憶ボリウムにも書き込むべく、前記データ転送情報を前記第２のメモリに書き込み、
前記データ転送制御部は、
前記第２のメモリから前記データ転送レジスタに前記データ転送情報を読み出し、
前記読み出した前記データ転送情報に基づいて、前記第１のメモリから前記第２のストレージ制御装置への前記書き込みデータの送信を制御すること
を特徴とする請求項９に記載のストレージ制御装置の制御方法。
【請求項１５】
前記第２のメモリと、前記入出力制御部と、前記データ転送制御部とが形成された回路基板を備えるチャネル制御部と、
前記第１のメモリが形成された回路基板を備えるキャッシュメモリ部と、
前記第１の記憶ボリウムに記憶されるデータの読み書きを行うディスク制御部と
を備え、
前記第１のメモリには、
前記第１のストレージ制御装置と、前記情報処理装置又は前記第２のストレージ制御装置の少なくともいずれかとの間で送受信されるデータが記憶され、
前記入出力制御部は、
前記第１のメモリにおけるデータの記憶位置と、前記情報処理装置又は前記第２のストレージ制御装置におけるデータの記憶位置とを含むデータ転送情報を前記第２のメモリに書き込み、
前記データ転送制御部は、
前記第２のメモリから前記データ転送レジスタに読み出した前記データ転送情報に基づいて、前記データバッファを介して、前記第１のメモリと、前記情報処理装置又は前記第２のストレージ制御装置との間のデータ転送を制御すること
を特徴とする請求項９に記載のストレージ制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、及びストレージ制御装置の制御方法に関する。
【背景技術】
【０００２】
近年の情報技術の進歩に伴い、ディザスタリカバリを実現するリモートコピーなど、複数のストレージ装置を通信可能に接続し、情報処理装置からデータ入出力要求を受信したストレージ装置が、他のストレージ装置に記憶されるデータをアクセスするような運用が行われるようになっている。
【特許文献１】米国特許第５，７４２，７９２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、この場合には、他のストレージ装置に対するデータ入出力性能は、ストレージ装置間で行われる通信により制約される。
【０００４】
本発明は上記課題を鑑みてなされたものであり、ストレージ制御装置、及びストレージ制御装置の制御方法を提供することを主たる目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明は、情報処理装置からデータ入出力要求を受信し、データを記憶する第１の記憶ボリウムに対してデータ入出力処理を行う第１のストレージ制御装置と、前記第１のストレージ制御装置と通信可能に接続され、データを記憶する第２の記憶ボリウムに対してデータ入出力処理を行う第２のストレージ制御装置とを備えて構成されるストレージシステムにおける、前記第１のストレージ制御装置であって、
前記第１のストレージ制御装置と前記第２のストレージ制御装置との間で送受信されるデータを記憶する第１のメモリと、第２のメモリと、前記第１のメモリにおけるデータの記憶位置と前記第２のストレージ制御装置におけるデータの記憶位置とを含むデータ転送情報を前記第２のメモリに書き込む入出力制御部と、データを記憶するデータバッファ、及び前記データ転送情報を記憶するデータ転送レジスタを有し、前記第２のメモリから前記データ転送レジスタに読み出した前記データ転送情報に基づいて、前記データバッファを介して、前記第１のメモリと前記第２のストレージ制御装置との間のデータ転送を制御するデータ転送制御部とを備え、前記データ転送制御部は、第１の前記データ転送情報に基づく第１の前記データ転送を制御している途中で、第２の前記データ転送情報に基づく第２の前記データ転送を制御する場合には、前記データ転送レジスタに記憶されている前記第１のデータ転送情報、及び前記データバッファに記憶されているデータを、前記第２のメモリに書き出し、前記第２のメモリから前記データ転送レジスタに前記第２のデータ転送情報を読み出して、前記第２のデータ転送情報に基づいて前記第２のデータ転送を制御することを特徴とするストレージ制御装置に関する。
【０００６】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための最良の形態の欄、及び図面により明らかにされる。
【発明の効果】
【０００７】
ストレージ制御装置、及びストレージ制御装置の制御方法を提供することができる。
【発明を実施するための最良の形態】
【０００８】
＜＜＜第１の実施の形態＞＞＞
＝＝＝全体構成例＝＝＝
まず、本実施の形態に係るストレージ制御装置Ａ（第１のストレージ制御装置）１００を含むストレージ装置Ａ６００と、ストレージ装置Ｂ６００を備えて構成されるストレージシステムの全体構成を示すブロック図を図１に示す。なお、ストレージ装置Ａ６００の構成とストレージ装置Ｂ６００の構成とは同様とすることができるため、特にストレージ装置Ａ６００とストレージ装置Ｂ６００とを区別する必要の無い場合には、ＡやＢという識別子をつけない。
【０００９】
ストレージ装置６００は、ストレージ制御装置１００とストレージ駆動装置３００とを備える。ストレージ制御装置Ａ１００は、情報処理装置２００からデータ入出力要求を受信し、ストレージ駆動装置Ａ３００が備えるデータを記憶する記憶ボリウムＡ（第１の記憶ボリウム）３１０に対してデータ入出力処理を行う。ストレージ制御装置Ｂ（第２のストレージ制御装置）１００は、ストレージ制御装置Ａ１００と通信可能に接続され、ストレージ駆動装置Ｂ３００が備えるデータを記憶する記憶ボリウムＢ（第２の記憶ボリウム）３１０に対してデータ入出力処理を行う。
【００１０】
記憶ボリウム３１０は、例えばハードディスク装置などのディスクドライブにより提供される物理的な記憶領域である物理ボリウムと、物理ボリウム上に論理的に設定される記憶領域である論理ボリウムとを含む、データを記憶するための記憶リソースをいう。以下、記憶ボリウム３１０又は論理ボリウムをＬＵ（Logical Unit）とも記す。
【００１１】
情報処理装置２００はＣＰＵやメモリを備えたコンピュータ等の情報機器である。情報処理装置２００が備えるＣＰＵにより各種プログラムが実行されることにより様々な機能が実現される。情報処理装置２００は、例えばパーソナルコンピュータやワークステーションとすることもできるし、メインフレームコンピュータとすることもできる。
【００１２】
ストレージ制御装置Ａ１００は、ＳＡＮ（Storage Area Network）５００を介して情報処理装置２００と通信可能に接続されている。ＳＡＮ５００を介して行われる情報処理装置２００とストレージ制御装置Ａ１００との間の通信は、一般にファイバチャネルプロトコルに従って行われる。この場合ＳＡＮ５００は、ファイバチャネルプロトコルに準拠した少なくとも一つ以上のスイッチ等の通信機器により構成される。情報処理装置２００からは、ストレージ制御装置Ａ１００に対して、ファイバチャネルプロトコルに従ってデータ入出力要求が送信される。ファイバチャネルプロトコルに従って通信が行われる場合には、送受信されるデータは所定のデータ長毎（例えば２キロバイト毎）に一つ以上のデータブロックに分割される。通信は各データブロックを単位として制御されることになる。
【００１３】
もちろん、ＳＡＮ５００によらずに情報処理装置２００とストレージ制御装置Ａ１００とを接続するようにすることもできる。この場合、情報処理装置２００とストレージ制御装置Ａ１００との間の通信は、例えばＦＩＣＯＮ（Fibre Connection）（登録商標）やＥＳＣＯＮ(Enterprise System Connection) （登録商標）等のメインフレーム系の通信プロトコルとすることもできるし、インターネット等で用いられているＴＣＰ／ＩＰ（Transmission Control Protocol / Internet Protocol）などの通信プロトコルとすることもできる。
【００１４】
またストレージ制御装置Ａ１００は、ＳＡＮ５００を介して、ストレージ制御装置Ｂ１００と通信可能に接続されている。従って、ストレージ制御装置Ａ１００とストレージ制御装置Ｂ１００との間のＳＡＮ５００は、例えばファイバチャネルプロトコルに準拠した少なくとも一つ以上のスイッチ等の通信機器により構成される。ファイバチャネルプロトコルに従って通信が行われる場合には、送受信されるデータは所定のデータ長毎に一つ以上のデータブロックに分割される。通信は各データブロックを単位として制御されることになる。ストレージ制御装置Ａ１００とストレージ制御装置Ｂ１００とを接続するＳＡＮ５００は、ストレージ制御装置Ａ１００と情報処理装置２００とを接続するＳＡＮ５００と通信可能に接続されているようにすることもできるし、通信可能に接続されていないようにすることもできる。もちろん、ストレージ制御装置Ａ１００とストレージ制御装置Ｂ１００との間は、ＳＡＮ５００によらずに接続されるようにすることもできる。この場合、ストレージ制御装置Ａ１００とストレージ制御装置Ｂ１００との間の通信は、例えばＦＩＣＯＮ（登録商標）やＥＳＣＯＮ（登録商標）等のメインフレーム系の通信プロトコルとすることもできるし、インターネット等で用いられているＴＣＰ／ＩＰなどの通信プロトコルとすることもできる。
【００１５】
ストレージ装置Ｂ６００は、ストレージ装置Ａ６００とは遠隔した場所に設置されるようにすることができる。この場合、ストレージ装置Ａ６００とストレージ装置Ｂ６００との間でリモートコピーを行うようにすることにより、災害などでストレージ装置Ａ６００に記憶されるデータが消失あるいは読み書き不能となった場合であっても、ストレージ装置Ｂ６００に記憶されているデータを用いて、情報処理装置２００による情報処理サービスの提供を継続することを可能とするようにすることができる。リモートコピーとは、ストレージ装置Ａ６００に記憶されるデータの複製を、ストレージ装置Ｂ６００に記憶すること、またはその技術をいう。この場合、ストレージ装置Ａ６００に記憶されるデータとストレージ装置Ｂ６００に記憶されるデータとを一致させておくために、情報処理装置２００によってストレージ装置Ａ６００にデータが書き込まれると、その書き込みデータの複製がストレージ装置Ａ６００からストレージ装置Ｂ６００に送信される。そして、ストレージ装置Ｂ６００が書き込みデータの複製をストレージ駆動装置Ｂ３００に記憶する。ストレージ装置Ａ６００とストレージ装置Ｂ６００との間で行われるリモートコピーについては後述する。
【００１６】
また、ストレージ装置Ｂ６００をストレージ装置Ａ６００と通信可能に接続することにより、ストレージコンソリデーションを実現することも可能である。ストレージコンソリデーションとは、複数のストレージ装置に分散して蓄積されている大量のデータを有効に活用するため、各ストレージ装置にばらばらに記憶されている大量のデータを統合管理する技術である。これにより、例えばストレージ装置Ａ６００を新たに情報処理システムに導入する場合に、それまで使用してきた古いストレージ装置Ｂ６００をそのまま使用し、過去からの大量のデータの蓄積を有効に活用することができるようになる。また、異なるメーカのストレージ装置６００にそれぞれ記憶されているデータを統合管理することもできる。この場合、情報処理装置２００は、ストレージ装置Ａ６００に対してデータ入出力要求を送信することにより、ストレージ装置Ａ６００に記憶されるデータのみならず、ストレージ装置Ｂ６００に記憶されるデータに対してもアクセスすることが可能となる。ストレージコンソリデーションについても詳細は後述する。
【００１７】
なお、図１に示すストレージシステムには、ストレージ装置Ａ６００とストレージ装置Ｂ６００とが１台ずつ記載されているが、それぞれ複数台とする構成とすることもできる。
【００１８】
＝＝＝記憶ボリウム＝＝＝
ストレージ駆動装置３００は多数のディスクドライブを備えている。これによりストレージ装置６００は情報処理装置２００に対して大容量の記憶領域を提供する。ストレージ駆動装置３００は例えば複数のディスクドライブによりディスクアレイを構成するようにすることもできる。この場合、情報処理装置２００に対して提供される記憶領域は、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）により管理された複数のディスクドライブにより提供されるようにすることもできる。
【００１９】
各記憶ボリウム３１０には、それぞれ固有の識別子（以下、ＬＵＮ（Logical Unit Number）とも称する）が付与されている。詳細は後述するが、図１４に示すように情報処理装置２００がストレージ装置Ａ６００に送信するデータ入出力要求には、データ記憶領域を指定するためのＬＵＮが記述されている。ストレージ装置Ａ６００は、情報処理装置２００に対してＬＵＮ指定による記憶領域を提供する機能を備える。
【００２０】
ストレージ制御装置１００とストレージ駆動装置３００との間は図１のように直接に接続される形態とすることもできるし、ネットワークを介して接続されるようにすることもできる。さらにストレージ駆動装置３００はストレージ制御装置１００と一体として構成されることもできる。
【００２１】
＝＝＝ストレージ制御装置＝＝＝
ストレージ制御装置１００はチャネル制御部１１０、共有メモリ１２０、キャッシュメモリ（キャッシュメモリ部）１３０、ディスク制御部１４０、管理端末１６０、接続部１５０を備える。  
チャネル制御部１１０は情報処理装置２００や他のストレージ装置６００との間で通信を行うための通信インタフェースを備え、情報処理装置２００や他のストレージ装置６００との間でデータ入出力要求やデータを授受する機能を備える。
【００２２】
各チャネル制御部１１０は管理端末１６０と共に内部ＬＡＮ１５１で接続されている。これにより各チャネル制御部１１０に実行させるマイクロプログラム等を管理端末１６０から送信しインストールすることが可能である。チャネル制御部１１０の構成については後述する。
【００２３】
接続部１５０はチャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、ディスク制御部１４０を相互に接続する。チャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、ディスク制御部１４０間でのデータやコマンドの授受は接続部１５０を介することにより行われる。接続部１５０は例えばクロスバスイッチで構成される。
【００２４】
共有メモリ１２０及びキャッシュメモリ１３０は、チャネル制御部１１０及びディスク制御部１４０により共有される記憶メモリである。共有メモリ１２０は主に制御情報やコマンド等を記憶するために利用されるのに対し、キャッシュメモリ１３０は主にデータを記憶するために利用される。キャッシュメモリ１３０及び共有メモリ１２０はデータを記憶するためのメモリが形成された回路基板を備えて構成される。
【００２５】
例えば、あるチャネル制御部１１０が情報処理装置２００から受信したデータ入出力要求がデータ書き込み要求であった場合には、当該チャネル制御部１１０はデータ書き込み要求を共有メモリ１２０に書き込むと共に、情報処理装置２００から受信した書き込みデータをキャッシュメモリ１３０に書き込む。一方、ディスク制御部１４０は共有メモリ１２０を監視しており、共有メモリ１２０にデータ書き込み要求が書き込まれたことを検出すると、当該データ書き込み要求に従ってキャッシュメモリ１３０から書き込みデータを読み出してストレージ駆動装置３００に書き込む。
【００２６】
またあるチャネル制御部１１０が情報処理装置２００から受信したデータ入出力要求がデータ読み出し要求であった場合には、読み出し対象となるデータがキャッシュメモリ１３０に存在するかどうかを調べる。ここでキャッシュメモリ１３０に存在すれば、チャネル制御部１１０はそのデータを情報処理装置２００に送信する。一方、読みだし対象となるデータがキャッシュメモリ１３０に存在しない場合には、当該チャネル制御部１１０はデータ読み出し要求を共有メモリ１２０に書き込むと共に、共有メモリ１２０を監視する。データ読み出し要求が共有メモリ１２０に書き込まれたことを検出したディスク制御部１４０は、ストレージ駆動装置３００から読みだし対象となるデータを読み出してこれをキャッシュメモリ１３０に書き込むと共に、その旨を共有メモリ１２０に書き込む。そして、チャネル制御部１１０は読みだし対象となるデータがキャッシュメモリ１３０に書き込まれたことを検出すると、そのデータを情報処理装置２００に送信する。
【００２７】
このようにチャネル制御部１１０及びディスク制御部１４０の間では、キャッシュメモリ１３０を介してデータの授受が行われる。なお、キャッシュメモリ１３０と共有メモリ１２０とが、一体的に形成されているような構成とすることもできる。
【００２８】
キャッシュメモリ１３０には、ストレージ制御装置Ａ１００と、情報処理装置２００又はストレージ制御装置Ｂ１００の少なくともいずれかとの間で送受信されるデータが記憶される。例えば、ストレージ装置Ａ６００が、情報処理装置２００からストレージ装置Ｂ６００に対するデータ書き込み要求と書き込みデータを受信した場合には、ストレージ装置Ａ６００のチャネル制御部１１０は、当該データ書き込み要求と書き込みデータをキャッシュメモリ１３０に記憶し、ストレージ装置Ｂ６００に送信する。そしてストレージ装置Ｂ６００は、受信したデータ書き込み要求に従って書き込みデータをストレージ駆動装置Ｂ３００に書き込む。また、ストレージ装置Ａ６００が、情報処理装置２００からストレージ駆動装置Ａ３００に対するデータ書き込み要求と書き込みデータを受信した場合に、その書き込みデータをストレージ装置Ｂ６００にリモートコピーする場合には、ストレージ装置Ａ６００のチャネル制御部１１０は、キャッシュメモリ１３０に記憶された書き込みデータをストレージ装置Ｂ６００に送信する。そしてストレージ装置Ｂ６００は、受信した書き込みデータをストレージ駆動装置Ｂ３００に書き込む。
【００２９】
なお、チャネル制御部１１０からディスク制御部１４０に対するデータの書き込みや読み出しの指示を共有メモリ１２０を介在させて間接的に行う構成の他、例えばチャネル制御部１１０からディスク制御部１４０に対してデータの書き込みや読み出しの指示を共有メモリ１２０を介さずに直接に行う構成とすることもできる。
【００３０】
また、チャネル制御部１１０にディスク制御部１４０の機能を持たせることにより、チャネル制御部１１０がストレージ駆動装置３００に記憶されたデータの読み書きを行うようにすることもできる。
【００３１】
ディスク制御部１４０はストレージ駆動装置３００が備える記憶ボリウム３１０に記憶されるデータの読み書きを行う。例えば上述のように、チャネル制御部１１０が情報処理装置２００から受信したデータ書き込み要求に従ってストレージ駆動装置３００へデータの書き込みを行う。
【００３２】
各ディスク制御部１４０は管理端末１６０と共に内部ＬＡＮ１５１で接続されており、相互に通信を行うことが可能である。これにより、各ディスク制御部１４０に実行させるマイクロプログラム等を管理端末１６０から送信しインストールすることが可能となっている。ディスク制御部１４０の構成については後述する。
【００３３】
本実施例においては、共有メモリ１２０及びキャッシュメモリ１３０がチャネル制御部１１０及びディスク制御部１４０に対して独立に設けられていることについて記載したが、本実施例はこの場合に限られるものでなく、共有メモリ１２０又はキャッシュメモリ１３０がチャネル制御部１１０及びディスク制御部１４０の各々に分散されて設けられることも好ましい。この場合、接続部１５０は、分散された共有メモリ１２０又はキャッシュメモリ１３０を有するチャネル制御部１１０及びディスク制御部１４０を相互に接続させることになる。
【００３４】
＝＝＝管理端末＝＝＝
管理端末１６０はストレージ装置６００を保守・管理するためのコンピュータである。管理端末１６０を操作することにより、例えばストレージ駆動装置３００が備える物理ディスク構成の設定や、ＬＵ３１０の設定、チャネル制御部１１０やディスク制御部１４０において実行されるマイクロプログラムのインストール等を行うことができる。  
管理端末１６０はストレージ制御装置１００に内蔵されている形態とすることもできるし、外付けされている形態とすることもできる。また管理端末１６０は、ストレージ制御装置１００及びストレージ駆動装置３００の保守・管理を専用に行うコンピュータとすることもできるし、汎用のコンピュータに保守・管理機能を持たせたものとすることもできる。
【００３５】
管理端末１６０の構成を示すブロック図を図２に示す。  
管理端末１６０は、ＣＰＵ１６１、メモリ１６２、ポート１６３、記録媒体読取装置１６４、入力装置１６５、出力装置１６６、記憶装置１６８を備える。
【００３６】
ＣＰＵ１６１は管理端末１６０の全体の制御を司るもので、メモリ１６２に格納されたプログラム１６２Ａを実行することにより上記保守管理機能を実現する。メモリ１６２にはプログラム１６２Ａが記憶されている。記録媒体読取装置１６４は、記録媒体１６７に記録されているプログラムやデータを読み取るための装置である。読み取られたプログラムやデータはメモリ１６２や記憶装置１６８に格納される。従って、例えば記録媒体１６７に記録されたプログラム１６２Ａを、記録媒体読取装置１６４を用いて上記記録媒体１６７から読み取って、メモリ１６２や記憶装置１６８に格納するようにすることができる。また例えば同様に、チャネル制御部１１０やディスク制御部１４０で実行させるためのマイクロプログラムが記録された記録媒体１６７からマイクロプログラムを記録媒体読取装置１６４を用いて読み取って、メモリ１６２や記憶装置１６８に格納し、チャネル制御部１１０やディスク制御部１４０にインストールするようにすることもできる。  
記録媒体１６７としてはフレキシブルディスクやＣＤ−ＲＯＭ、半導体メモリ等を用いることができる。記録媒体読取装置１６４は管理端末１６０に内蔵されている形態とすることもできるし、外付されている形態とすることもできる。記憶装置１６８は、例えばハードディスク装置や半導体記憶装置等である。入力装置１６５はオペレータ等による管理端末１６０へのデータ入力等のために用いられる。入力装置１６５としては例えばキーボードやマウス等が用いられる。出力装置１６６は情報を外部に出力するための装置である。出力装置１６６としては例えばディスプレイやプリンタ等が用いられる。ポート１６３は内部ＬＡＮ１５１に接続されており、これにより管理端末１６０はチャネル制御部１１０やディスク制御部１４０等と通信を行うことができる。
【００３７】
＝＝＝チャネル制御部＝＝＝
チャネル制御部１１０の構成を図３に示す。チャネル制御部１１０は回路基板１１８を備えた一つのユニット化されたボードとして構成される。チャネル制御部１１０は一枚もしくは複数枚の回路基板１１８を含んで構成される。回路基板１１８には、プロセッサ１（１１９）、プロセッサ２（１１２）、データ転送ＬＳＩ（１１４）、メモリ１（１１７）、メモリ２（１１３）、メモリコントローラ１（１１１）、メモリコントローラ２（１１１）、メモリ３（１１５）及びコネクタ１１６が形成されている。
【００３８】
プロセッサ１（１１９）、プロセッサ２（１１２）、データ転送ＬＳＩ（１１４）、メモリコントローラ１（１１１）、メモリコントローラ２（１１１）、及びメモリ３（１１５）はそれぞれＰＣＩ（Peripheral Component Interconnect）バスで通信可能に接続されている。なお、必ずしも全てがＰＣＩバスで接続されている必要はなく、一部又は全ての接続が他の規格に準拠する構成とすることもできる。このうち、メモリ１（１１７）、メモリ３（１１５）、メモリコントローラ１（１１１）により第２のメモリが形成される。またデータ転送ＬＳＩ（１１４）、プロセッサ２（１１２）、メモリ２（１１３）、及びメモリコントローラ２（１１１）によりデータ転送制御部が形成される。またプロセッサ１（１１９）により入出力制御部が形成される。
【００３９】
プロセッサ２（１１２）、メモリ２（１１３）及びメモリコントローラ２（１１１）は、情報処理装置２００や他のストレージ装置６００との間で通信を行うための通信インタフェース機能を提供する。例えば、他のストレージ装置６００に送信するデータをファイバチャネルプロトコルに従ったデータ形式に変換して送信する。メモリコントローラ２（１１１）と接続されるコネクタ１１６は情報処理装置２００や他のストレージ装置６００と通信を行うためのコネクタである。プロセッサ２（１１２）は、メモリ２（１１３）に記憶された様々なプログラムを実行することにより、上記通信インタフェース機能を実現するための制御を行う。また、情報処理装置２００や他のストレージ装置６００との間で授受されるデータはメモリ２（１１３）に記憶される。つまりプロセッサ２（１１２）は、メモリ２（１１３）に記憶されるデータを情報処理装置２００や他のストレージ装置６００に送信し、また情報処理装置２００や他のストレージ装置６００から受信したデータをメモリ２（１１３）に記憶する。
【００４０】
プロセッサ２（１１２）、メモリ２（１１３）、メモリコントローラ２（１１１）及びコネクタ１１６は、ＳＡＮ５００を構成するファイバチャネルスイッチのポートに接続されるポートとしても機能する。なお、ファイバチャネルの技術分野においては周知であるが、ポートには、ＳＡＮ５００上の機器を特定する識別子であるＷＷＮ（World Wide Name）が付与されている。
【００４１】
プロセッサ１（１１９）は、メモリ１（１１７）に記憶される制御プログラム７００を実行することにより、チャネル制御部１１０全体の制御を司る。例えば情報処理装置２００から送信されたデータ入出力要求を解析して、そのデータ入出力要求がストレージ駆動装置Ａ３００に対するものなのか、ストレージ駆動装置Ｂ３００に対するものなのか、ストレージ駆動装置Ａ３００に対するものである場合にはリモートコピーを行う必要があるのか、ないのか等を判断し、それに応じてデータ転送ＬＳＩ（１１４）にデータ転送の指示を行う。
【００４２】
データ転送ＬＳＩ（１１４）は、プロセッサ１（１１９）からの指示により、ＰＣＩバスのマスタとして、キャッシュメモリ１３０と、メモリ２（１１３）との間のデータ転送を制御する。具体的には、データ転送ＬＳＩ（１１４）は、プロセッサ１（１１９）からの指示により、プロセッサ１（１１９）がメモリ１（１１７）に書き込んだ、キャッシュメモリ１３０におけるデータの記憶位置と情報処理装置２００、ストレージ制御装置Ｂ１００、又はストレージ装置Ｂ６００におけるデータの記憶位置とを含むデータ転送情報をメモリ１（１１７）から読み出して、データ転送情報に従って、キャッシュメモリ１３０とメモリ２（１１３）との間のデータ転送を行う。
【００４３】
キャッシュメモリ１３０とメモリ２（１１３）との間で行われるデータ転送の詳細については、後述する。
【００４４】
＝＝＝ディスク制御部＝＝＝
次にディスク制御部１４０の構成を示す図を図４に示す。  
ディスク制御部１４０は、インタフェース部１４１、メモリ１４３、ＣＰＵ１４２、ＮＶＲＡＭ（nonvolatile random-access memory）１４４、コネクタ１４５を備え、これらが一枚もしくは複数枚の回路基板に一体的なユニットとして形成されている。
【００４５】
インタフェース部１４１は、接続部１５０を介してチャネル制御部１１０等との間で通信を行うための通信インタフェースや、ストレージ駆動装置３００との間で通信を行うための通信インタフェースを備える。  
ＣＰＵ１４２は、ディスク制御部１４０全体の制御を司ると共に、チャネル制御部１１０やストレージ駆動装置３００、管理端末１６０との間の通信を行う。ＣＰＵ１４２によりメモリ１４３やＮＶＲＡＭ１４４に格納された各種プログラムが実行されることによりディスク制御部１４０の機能が実現される。ディスク制御部１４０により実現される機能としては、ストレージ駆動装置３００に記憶されるデータの読み書きの制御やＲＡＩＤの制御等である。  
ＮＶＲＡＭ１４４はＣＰＵ１４２の制御を司るプログラムを格納する不揮発性メモリである。ＮＶＲＡＭ１４４に記憶されるプログラムの内容は、管理端末１６０を用いて書き込みや書き換えを行うことができる。
【００４６】
＝＝＝情報処理装置＝＝＝
次に、情報処理装置２００の構成を示すブロック図を図５に示す。  
情報処理装置２００は、ＣＰＵ２０１、メモリ２０２、ポート２０３、記録媒体読取装置２０４、入力装置２０５、出力装置２０６を備える。
【００４７】
ＣＰＵ２０１は情報処理装置２００の全体の制御を司るもので、メモリ２０２に格納されたプログラムを実行することにより各種機能を実現する。例えば、ＣＰＵ２０１がアプリケーションプログラム２０２Ｂを実行することにより各種情報処理サービスの提供が行われる。例えば銀行の自動預金預け払いサービスや、航空機の座席予約サービスを提供することができる。またＣＰＵ２０１が記憶デバイス管理プログラム２０２Ａを実行することにより、記憶ボリウム３１０の管理が行われる。例えば、ストレージ駆動装置Ａ３００が備える記憶ボリウムＡ３１０と、ストレージ駆動装置Ｂ３００が備える記憶ボリウムＢ３１０とを対応付け、上記記憶ボリウムＡ３１０にデータが書き込まれると、上記対応付けられた記憶ボリウムＢ３１０にそのデータの複製が書き込まれるようにするためのコマンドを、ストレージ制御装置Ａ１００に送信することができる。また、記憶ボリウム３１０のＬＵＮの設定なども行うようにすることができる。記録媒体読取装置２０４は、記録媒体２０７に記録されているプログラムやデータを読み取るための装置である。読み取られたプログラムやデータはメモリ２０２に格納される。従って、例えば記録媒体２０７に記録された記憶デバイス管理プログラム２０２Ａやアプリケーションプログラム２０２Ｂを、記録媒体読取装置２０４を用いて上記記録媒体２０７から読み取って、メモリ２０２に格納するようにすることができる。記録媒体２０７としてはフレキシブルディスクやＣＤ−ＲＯＭ、半導体メモリ等を用いることができる。記録媒体読取装置２０４は情報処理装置２００に内蔵されている形態とすることもできるし、外付されている形態とすることもできる。入力装置２０５はオペレータ等による情報処理装置２００へのデータ入力等のために用いられる。入力装置２０５としては例えばキーボードやマウス等が用いられる。出力装置２０６は情報を外部に出力するための装置である。出力装置２０６としては例えばディスプレイやプリンタ等が用いられる。ポート２０３はストレージ装置６００と通信を行うための装置である。ポート２０３にはＳＡＮ５００上の機器を特定するための識別子であるＷＷＮ（World Wide Name）が付与されている。またポート２０３は、他の情報処理装置２００との間で通信を行うために使用することもできる。この場合、例えば記憶デバイス管理プログラム２０２Ａやアプリケーションプログラム２０２Ｂを、ポート２０３を介して他の情報処理装置２００から受信して、メモリ２０２に格納するようにすることもできる。
【００４８】
＝＝＝データ転送＝＝＝
次に、本実施の形態に係るチャネル制御部１１０におけるキャッシュメモリ１３０と情報処理装置２００又はストレージ制御装置Ｂ１００との間のデータ転送について説明する。
【００４９】
メモリ２（１１３）は、図８に示すように、データ領域を有する。データ領域には、キャッシュメモリ１３０に転送されるデータ、あるいはキャッシュメモリ１３０から転送されたデータが記憶される。データ領域に記憶されるこれらの各データの記憶位置や、各データの記憶領域のサイズ（エリア長）等は、図９に示すように、各データに対応してプロセッサ２用スクリプト（データ転送情報）としてメモリ１（１１７）のスクリプト領域に記憶される。プロセッサ２用スクリプトは、「スクリプト識別子」、「領域先頭アドレス」、「エリア長」、「連続Ｆｌａｇ」の各欄を備える。「スクリプト識別子」は、プロセッサ２用スクリプト毎に付される識別番号を示す。「領域先頭アドレス」は、メモリ２（１１３）のデータ領域に記憶されるデータの記憶アドレスを示す。「エリア長」はデータの記憶領域のサイズを示す。「連続Ｆｌａｇ」は、データ領域に記憶される複数のデータをひとまとまりとして転送したい場合に設定されるフラグである。メモリ１（１１７）に記憶されるこれらのプロセッサ２用スクリプトは、プロセッサ１（１１９）により設定され、メモリ１（１１７）のスクリプト領域に書き込まれる。
【００５０】
一方、図１０に示すように、キャッシュメモリ１３０のデータ領域には、メモリ２（１１３）に転送されるデータ、あるいはメモリ２（１１３）から転送されたデータが記憶される。データ領域に記憶されるこれらの各データの記憶位置や、各データの記憶領域のサイズ（エリア長）等は、図９に示すように、各データに対応してプロセッサ１用スクリプト（データ転送情報）としてメモリ１（１１７）のスクリプト領域に記憶される。プロセッサ１用スクリプトは、「スクリプト識別子」、「領域先頭アドレス」、「エリア長」、「連続Ｆｌａｇ」の各欄を備える。これらの各欄の意味は、メモリ２（１１３）におけるプロセッサ２用スクリプトと同様である。メモリ１（１１７）に記憶されるこれらのプロセッサ１用スクリプトは、プロセッサ１（１１９）により設定され、メモリ１（１１７）のスクリプト領域に書き込まれる。
【００５１】
次に、これらの各スクリプトに基づいてキャッシュメモリ１３０とメモリ２（１１３）との間のデータ転送を制御するデータ転送ＬＳＩ（１１４）の構成について、図６及び図７を参照しながら説明する。
【００５２】
本実施の形態に係るデータ転送ＬＳＩ（１１４）は、４つのＤＭＡ８００と、ＰＣＩインタフェース８０２とを備える。ＰＣＩインタフェース８０２は、ＰＣＩバスを介してメモリコントローラ１１１等と通信を行うための通信インタフェースである。なお、メモリコントローラ１１１やキャッシュメモリ等とは必ずしもＰＣＩバスで接続されている必要はなく、一部又は全ての接続が他の規格に準拠する構成とすることもできる。その場合には、ＰＣＩインタフェース８０２に代わって、他の規格に準拠したインタフェースとすることもできる。
【００５３】
ＤＭＡ８００は、ＤＭＡ制御部Ａ８０１、ＤＭＡ制御部Ｂ８０１、転送データバッファＡ（データバッファ）８１０、転送データバッファＢ（データバッファ）８１０、レジスタＡ（データ転送レジスタ）８０７、レジスタＢ（データ転送レジスタ）８０７を備える。レジスタＡ８０７及びレジスタＢ８０７はそれぞれ、転送起動レジスタ８０３、転送レジスタ８０４、初期設定レジスタ８０５、スクリプトレジスタ８０６を備える。なお、ＤＭＡ制御部Ａ８０１とＤＭＡ制御部Ｂ８０１、転送データバッファＡ８１０と転送データバッファＢ８１０、及びレジスタＡ８０７とレジスタＢ８０７との構成はそれぞれ同様のため、特に区別する必要の無い場合には、ＡやＢという識別子をつけない。
【００５４】
ＤＭＡ制御部８０１はデータ転送の制御を司る。例えばメモリ１（１１７）に記憶された上記スクリプト（データ転送情報）のレジスタＡ８０７又はレジスタＢ８０７への読み込みや、読み込んだスクリプトに基づいて転送データバッファＡ８１０又は転送データバッファＢ８１０を介して行うデータ転送の制御、データ転送終了ステータスの出力等を行う。ＤＭＡ制御部８０１は、ハードウエアのみで構成されるようにすることもできるし、ハードウエアとソフトウエアとの組み合わせにより構成されるようにすることもできる。またＤＭＡ制御部８０１はメモリ３（１１５）の制御を行う。従って、転送データバッファ８１０に記憶されるデータやレジスタ８０７に記憶されるスクリプトを、レジスタメモリ３（１１５）に書き出したり、メモリ３（１１５）から読み込んだりすることができる。
【００５５】
転送起動レジスタ８０３は、「要求転送長」、「転送方向」、「プロセッサ２開始スクリプト番号」、「プロセッサ１開始スクリプト番号」の各レジスタを備える。
【００５６】
「要求転送長」レジスタは、キャッシュメモリ１３０と情報処理装置２００又はストレージ制御装置Ｂ１００との間で転送されるデータの総データ長が記載される。要求転送長は、情報処理装置２００から受信したデータ入出力要求に基づいて決定される。例えば情報処理装置２００から８キロバイト（ｋＢ）のデータの書き込み要求を受信した場合には、「要求転送長」レジスタには８ｋＢが記憶される。詳細は後述するが、要求転送長はプロセッサ１（１１９）がＤＭＡ８００にデータの転送を開始させる際に、プロセッサ１（１１９）によりＤＭＡ８００の転送起動レジスタ８０３に書き込まれる。
【００５７】
「転送方向」レジスタは、情報処理装置２００又はストレージ制御装置Ｂ１００からキャッシュメモリ１３０への転送であるか、キャッシュメモリ１３０から情報処理装置２００又はストレージ制御装置Ｂ１００への転送であるかが記載される。転送方向は、プロセッサ１（１１９）が情報処理装置２００から受信したデータ入出力要求に基づいて決定される。例えば、プロセッサ１（１１９）が情報処理装置２００からストレージ駆動装置Ａ３００へのデータの書き込み要求を受信した場合には、転送方向はメモリコントローラ２（１１１）からキャッシュメモリ１３０となる。また、プロセッサ１（１１９）が情報処理装置２００からストレージ駆動装置Ａ３００に記憶されたデータの読み出し要求を受信した場合には、転送方向はキャッシュメモリ１３０からメモリコントローラ２（１１１）となる。また、ストレージ制御装置Ａ１００からストレージ制御装置Ｂ１００にデータを送信する場合には、転送方向はキャッシュメモリ１３０からメモリコントローラ２（１１１）となる。ストレージ制御装置Ｂ１００からストレージ制御装置Ａ１００にデータを受信する場合には、転送方向はメモリコントローラ２（１１１）からキャッシュメモリ１３０となる。詳細は後述するが、転送方向は、要求転送長と同様に、プロセッサ１（１１９）がＤＭＡ８００にデータの転送を開始させる際に、プロセッサ１（１１９）によりＤＭＡ８００の転送起動レジスタ８０３に書き込まれる。
【００５８】
「プロセッサ２開始スクリプト番号」レジスタには、メモリ１（１１７）に記憶されたプロセッサ２用スクリプトの識別子が記載される。ＤＭＡ制御部８０１は、「プロセッサ２開始スクリプト番号」レジスタに記憶されたプロセッサ２用スクリプトをメモリ１（１１７）から読み出して、データの転送を開始する。プロセッサ２開始スクリプト番号は、プロセッサ１（１１９）がＤＭＡ８００にデータの転送を開始させる際に、プロセッサ１（１１９）によりＤＭＡ８００の転送起動レジスタ８０３に書き込まれる。あるいは、プロセッサ２用スクリプトに連続Ｆｌａｇが設定されている場合には、ＤＭＡ制御部８０１により、プロセッサ２開始スクリプト番号が更新される。
【００５９】
「プロセッサ１開始スクリプト番号」には、メモリ１（１１７）に記憶されたプロセッサ１用スクリプトの識別子が記載される。ＤＭＡ制御部８０１は、「プロセッサ１開始スクリプト番号」レジスタに記憶されたプロセッサ１用スクリプトをメモリ１（１１７）から読み出して、データの転送を開始する。プロセッサ１開始スクリプト番号は、プロセッサ１（１１９）がＤＭＡ８００にデータの転送を開始させる際に、プロセッサ１（１１９）によりＤＭＡ８００の転送起動レジスタ８０３に書き込まれる。あるいは、プロセッサ１用スクリプトに連続Ｆｌａｇが設定されている場合には、ＤＭＡ制御部８０１により、プロセッサ１開始スクリプト番号が更新される。
【００６０】
転送レジスタ８０４は、「転送単位」、「転送元アドレス」、「転送先アドレス」、「残転送長」の各レジスタを備える。  
「転送単位」レジスタには１回のデータ転送におけるデータ転送長が記載される。１回のデータ転送におけるデータ転送長は、ＤＭＡ制御部８０１により算出される。  
「転送元アドレス」レジスタは、転送前のデータの記憶位置を示す。転送元アドレスは、キャッシュメモリ１３０におけるデータの記憶位置、情報処理装置２００におけるデータの記憶位置、又はストレージ装置Ｂ６００におけるデータの記憶位置である。転送元アドレスは、転送方向と、プロセッサ１用スクリプトあるいはプロセッサ２用スクリプトとの記載に基づいて決定される。データの転送中は、転送の進捗と共にＤＭＡ制御部８０１によって「転送元アドレス」レジスタの値が適宜インクリメント、あるいはデクリメントされる。  
「転送先アドレス」レジスタは、転送後のデータの記憶位置を示す。転送先アドレスは、キャッシュメモリ１３０におけるデータの記憶位置、情報処理装置２００におけるデータの記憶位置、又はストレージ装置Ｂ６００におけるデータの記憶位置である。転送先アドレスは、転送方向と、プロセッサ１用スクリプトあるいはプロセッサ２用スクリプトとの記載に基づいて決定される。データの転送中は、転送の進捗と共にＤＭＡ制御部８０１によって「転送先アドレス」レジスタの値が適宜インクリメント、あるいはデクリメントされる。  
「残転送長」レジスタは、要求転送長から、転送済みのデータ転送長を引いた値を示す。残転送長は、データ転送の進捗と共に、ＤＭＡ制御部８０１によって適宜更新される。
【００６１】
初期設定レジスタ８０５は、「プロセッサ２用スクリプト領域先頭アドレス」、「プロセッサ２用スクリプト数」、「プロセッサ２用スクリプトサイズ」、「プロセッサ１用スクリプト領域先頭アドレス」、「プロセッサ１用スクリプト数」、「プロセッサ１用スクリプトサイズ」の各レジスタを備える。初期設定レジスタ８０５のこれらの値は、例えばチャネル制御部１１０のパワーオンリセット時に、ＤＭＡ制御部８０１により、チャネル制御部１１０が備えるＮＶＲＡＭから読み込まれるようにすることができる。
【００６２】
「プロセッサ２用スクリプト領域先頭アドレス」レジスタは、メモリ１（１１７）におけるスクリプト領域の先頭アドレスを示す。つまり、プロセッサ２用スクリプト０が記憶されるアドレスを示す。  
「プロセッサ２用スクリプト数」レジスタは、プロセッサ２用スクリプトの数を示す。  
「プロセッサ２用スクリプトサイズ」レジスタは、プロセッサ２用スクリプトのサイズを示す。このようにプロセッサ２用スクリプトのサイズを固定とすることにより、プロセッサ２用スクリプトの識別子を特定することにより、スクリプト領域の先頭アドレスを基準とした、目的のプロセッサ２用スクリプトの記憶アドレスを算出することができる。  
「プロセッサ１用スクリプト領域先頭アドレス」レジスタ、「プロセッサ１用スクリプト数」レジスタ、及び「プロセッサ１用スクリプトサイズ」レジスタは、それぞれプロセッサ２用スクリプトと同様である。
【００６３】
スクリプトレジスタ８０６は、「プロセッサ２用実行スクリプト番号」、「プロセッサ２用有効エリア長」、「プロセッサ１用実行スクリプト番号」、「プロセッサ１用有効エリア長」の各レジスタを備える。  
「プロセッサ２用実行スクリプト番号」レジスタは、現在実行中のプロセッサ２用スクリプトの識別子を示す。プロセッサ２用実行スクリプト番号は、ＤＭＡ制御部８０１により設定される。  
「プロセッサ２用有効エリア長」レジスタは、プロセッサ２用スクリプトのエリア長欄に記載されたエリア長から、転送済みのデータサイズを引いた値である。データ転送の進捗と共に、ＤＭＡ制御部８０１によって適宜デクリメントされる。  
「プロセッサ１用実行スクリプト番号」レジスタ、及び「プロセッサ１用有効エリア長」レジスタは、「プロセッサ２用実行スクリプト番号」レジスタ、及び「プロセッサ２用有効エリア長」レジスタと同様である。
【００６４】
転送データバッファ８１０は、キャッシュメモリ１３０とメモリ２（１１３）との間でデータを転送する際にデータを記憶するバッファである。すなわちＤＭＡ制御部８０１は、キャッシュメモリ１３０とメモリ２（１１３）との間でデータを転送する際には、ストアアンドフォワード形式に、転送データバッファ８１０を介して行う。例えば、キャッシュメモリ１３０からメモリ２（１１３）へデータを転送する場合には、ＤＭＡ制御部８０１は、キャッシュメモリ１３０から読み出したデータを転送データバッファ８１０に一旦書き込み、そして転送データバッファ８１０からデータを読み出してメモリ２（１１３）に書き込む。
【００６５】
転送データバッファ８１０とメモリコントローラ２（１１１）との間の通信路は、転送データバッファＡ８１０と転送データバッファＢ８１０とで共用されている。また転送データバッファ８１０とキャッシュメモリ１３０との間の通信路は、転送データバッファＡ８１０と転送データバッファＢ８１０とでそれぞれ個別に設けられている。これは、転送データバッファ８１０とメモリコントローラ２（１１１）との間の通信は、同一回路基板１１８上における通信であるので、比較的高速にデータ転送が行えるのに対し、転送データバッファ８１０とキャッシュメモリ１３０との間は、異なる回路基板を跨る通信であるので、データ転送が比較的低速となるためである。このようにすることより、キャッシュメモリ１３０との間のデータ転送性能を向上させることが可能となり、ＤＭＡ８００内の２つの転送データバッファ８１０、ＤＭＡ制御部８０１、及びレジスタ８０７を並列に実行させて２つのデータ転送を同時に行う場合にも、高いデータ転送性能を実現することが可能となる。また、転送データバッファ８１０とメモリコントローラ２（１１１）との間のデータ通信路が共有される結果、回路基板１１８上に占める通信路の面積を減少させることができる。これにより回路基板１１８上に実装される部品の配置自由度を増すことができるので、回路基板１１８のパターン設計の容易化を図ることも可能となる。さらに回路基板１１８、ひいてはストレージ制御装置１００を小型化することも可能となる。
【００６６】
＝＝＝データ入出力の処理＝＝＝
上述したように、情報処理装置２００からデータ入出力要求が送信されると、プロセッサ１（１１９）はデータ入出力要求を解析して、そのデータ入出力要求がストレージ駆動装置Ａ３００に対するものなのか、ストレージ駆動装置Ｂ３００に対するものなのか、ストレージ駆動装置Ａ３００に対するものである場合にはリモートコピーを行う必要があるのか、ないのか等を判断し、それに応じてデータ転送ＬＳＩ（１１４）にデータ転送の指示を行う。その判断は、図１１に示すように共有メモリ１２０に記憶されるペア管理テーブル７１０、及び構成情報管理テーブル７２０を参照することにより行われる。
【００６７】
まず構成情報管理テーブル７２０を図１３に示す。構成情報管理テーブル７２０は、ストレージ装置Ａ６００が、ストレージ装置Ｂ６００の記憶ボリウム３１０を、ストレージ装置Ａ６００の記憶ボリウム３１０として情報処理装置２００に提供する機能を実現するためのテーブルである。
【００６８】
構成情報管理テーブル７２０には、ストレージ装置Ａ６００が備える記憶ボリウム３１０だけでなく、ストレージ装置Ｂ６００が備える記憶ボリウム３１０についての情報も記述されている（なお、図１３ではストレージ装置Ｂ６００が備える記憶ボリウム３１０に関する情報のみが示してある）。
【００６９】
図１３において、ＰｏｒｔＩＤの欄には、記憶ボリウム３１０に対応付けられているチャネル制御部１１０のポートＩＤが記述される。ＷＷＮの欄には、ポートＩＤに対応するＷＷＮが記述される。ＬＵＮの欄には、各記憶ボリウム３１０のＬＵＮが記述される。Capacity（ＫＢ）の欄には、各記憶ボリウム３１０により提供される記憶容量が記述される。マッピングＬＵＮの欄には、そのポートおよびＬＵＮに対応づけられているストレージ装置Ｂ６００が備える記憶ボリウム３１０のＬＵＮが記述される。
【００７０】
構成情報管理テーブル７２０の内容は、例えばストレージ装置Ａ６００が備える管理端末１６０などから登録されるようにすることができる。
【００７１】
ストレージ装置Ａ６００は、構成情報管理テーブル７２０を用いることにより、ストレージ装置Ｂ６００の記憶ボリウム３１０を、あたかもストレージ装置Ａ６００の記憶ボリウム３１０であるかのように情報処理装置２００に提供する。つまり、情報処理装置２００は、ストレージ装置Ｂ６００の記憶ボリウム３１０に対するデータ入出力要求を、ストレージ装置Ａ６００に対して行うことができる。図１５に示す例では、情報処理装置２００は、ストレージ装置Ａ６００のＫ＋１乃至Ｎで識別される記憶ボリウム３１０に対して、０乃至Ｋで識別される記憶ボリウム３１０と何ら変わることなく、データの読み書きを行うことができるが、実際には、Ｋ＋１乃至Ｎで識別される記憶ボリウム３１０はストレージ装置Ｂ６００が備える０乃至Ｍで識別される記憶ボリウム３１０である。従って、ストレージ装置Ａ６００は、情報処理装置２００からＫ＋１乃至Ｎで識別される記憶ボリウム３１０に対するデータ入出力要求を受信した場合には、ストレージ装置Ｂ６００との間でデータ転送を行って、ストレージ装置Ｂ６００の０乃至Ｍで識別される記憶ボリウム３１０にアクセスする。
【００７２】
つぎに、情報処理装置２００からストレージ装置Ａ６００に対して、ストレージ装置Ａ６００の記憶ボリウム３１０もしくはストレージ装置Ｂ６００の記憶ボリウム３１０に対するデータ入出力要求があった場合の処理について説明する。
【００７３】
情報処理装置２００からストレージ装置Ａ６００に送信されるデータ入出力要求のデータフォーマットの一例を図１４に示す。図１４において、ホストＩＤ欄は、そのデータ入出力要求を送信した情報処理装置２００の識別子である。例えば情報処理装置２００のポート２０３のＷＷＮが記載される。ポートＩＤ欄は、そのデータ入出力要求の対象となる記憶ボリウム３１０に対応付けられているチャネル制御部１１０のポートＩＤである。ＬＵＮ欄は、データ入出力要求の対象となる記憶ボリウム３１０のＬＵＮである。アドレス欄は、データ入出力要求の対象となるデータの記憶アドレスが記載される。データ長欄は、データ入出力要求の対象となるデータのデータ長が記載される。
【００７４】
情報処理装置２００から送信されたデータ入出力要求が、データ書き込み要求であった場合を例に説明する。まず、ストレージ装置Ａ６００は、情報処理装置２００からデータ書き込み要求を受信すると、プロセッサ１（１１９）は、このデータ書き込み要求とともに受信した書き込みデータを、キャッシュメモリ１３０に記憶する。
【００７５】
つぎに、プロセッサ１（１１９）は、構成情報管理テーブル７２０を参照し、このデータ書き込み要求を実行できるかどうかを判断する。ここで実行できない場合とは、例えば、データ書き込み要求の処理対象となる記憶ボリウム３１０が存在しないか、存在した場合でも、書き込みデータのサイズが、記憶ボリウム３１０の記憶容量を超えている場合などである。データ入出力要求を実行できない場合には、情報処理装置２００に対してその旨を記載したメッセージを送信し、当該データ入出力要求に対応する処理を終了する。
【００７６】
一方、データ書き込み要求を実行できる場合には、プロセッサ１（１１９）は、ストレージ装置Ｂ６００に対し、データ書き込み要求及び書き込みデータを送信する。送信は、まずプロセッサ１（１１９）がデータ転送のためのスクリプトをメモリ１（１１７）に書き込み、次にデータ転送ＬＳＩ（１１４）が、メモリ１（１１７）からレジスタ８０７にスクリプトを読み出し、読み出したスクリプトに基づいてメモリ１（１１７）とストレージ制御装置Ｂ１００との間のデータ転送を制御することにより行われる。そしてストレージ装置Ｂ６００は、このデータ書き込み要求を受信して、書き込みデータを記憶ボリウム３１０Ｂに書き込む。データの読み出しの場合も同様である。
【００７７】
なお、ストレージ装置Ａ６００からストレージ装置Ｂ６００に送信されるデータ書き込み要求は、ストレージ装置Ｂ６００が情報処理装置２００から直接に受信する場合のデータ書き込み要求と同一のプロトコル（例えば、データフォーマットが同一）に従うものである。従って、ストレージ装置Ｂ６００が、ストレージ装置Ａ６００に記憶ボリウム３１０を提供する装置として機能するように運用される場合には、ストレージ装置Ｂ６００の装置構成や仕様についてとくに変更や改造をする必要が無く、最小限の手間で、かつ、低コストでストレージ装置Ｂ６００の有効利用が可能となる。
【００７８】
次にペア管理テーブル７１０を図１２に示す。  
ペア管理テーブル７１０は、「ペア種類」欄、「複製方式」欄、「複製元装置」欄、「複製先装置」欄、「複製元ボリウム」欄、「複製先ボリウム」欄、「ペア状態」欄を備える。
【００７９】
ペアとは２つの記憶ボリウム３１０により形成される記憶ボリウム３１０の組み合わせを言う。また、ペアを形成する２つの記憶ボリウム３１０が同一のストレージ装置６００にある場合を「ローカルペア」、異なるストレージ装置６００にある場合を「リモートペア」と表現する。ペアを形成する記憶ボリウム３１０は、一方を主記憶ボリウム３１０、他方を副記憶ボリウム３１０として管理される。一つの主記憶ボリウム３１０に対して複数の副記憶ボリウム３１０を組み合わせることも可能である。
【００８０】
情報処理装置２００が、データの複製元となるストレージ装置Ａ６００にリモートペアの形成を指示すると、ストレージ装置Ａ６００は共有メモリ１２０のペア管理テーブル７１０を更新する。その後ストレージ装置Ａ６００は、データの複製先となるストレージ装置Ｂ６００にリモートペアの形成を指示する。そしてストレージ装置Ｂ６００は、ストレージ装置Ｂ６００内の共有メモリ１２０のペア管理テーブル７１０を更新する。
【００８１】
ペア管理テーブル７１０の「ペア種類」欄は当該ペアがローカルペアであるかリモートペアであるかを示す。「複製方式」欄は、当該ペアがリモートペアである場合に、リモートコピーの方式が同期方式であるか非同期方式であるかを示す。「複製元装置」欄と「複製先装置」欄は、当該ペアがリモートペアである場合に、複製元のストレージ装置６００と複製先のストレージ装置６００を示す。「複製元ボリウム」欄は当該ペアの主記憶ボリウム３１０のＬＵＮを、「複製先ボリウム」欄は当該ペアの副記憶ボリウム３１０のＬＵＮを示す。
【００８２】
「ペア状態」欄は当該ペアの状態を示す。ペアの状態としては、「ペア中」、「スプリット中」、及び「リシンク中」がある。  
「ペア中」の場合は、情報処理装置２００から主記憶ボリウム３１０に書き込まれたデータの複製が副記憶ボリウム３１０にも反映される。このような主記憶ボリウム３１０と副論理ボリウム３１０との対応付けにより、主記憶ボリウム３１０に記憶されている内容と副記憶ボリウム３１０に記憶されている内容との同一性を確保することができる。  
「スプリット中」の場合は、情報処理装置２００から主記憶ボリウム３１０にデータが書き込まれても副記憶ボリウム３１０には反映されない。  
「リシンク中」は「スプリット中」から「ペア中」に移行する途中の状態である。すなわち、「スプリット中」に主記憶ボリウム３１０に対してなされたデータの更新を副論理ボリウム３１０に反映している状態である。反映が完了すると当該ペアの状態は「ペア中」になる。
【００８３】
上記ペアの形成、ペアのスプリット、及びペアのリシンクは、記憶デバイス管理プログラム２０２Ａが実行されている情報処理装置２００に対して入力装置２０５からオペレータが指示入力を与えることにより行われるようにすることができる。オペレータにより与えられた指示入力はストレージ装置６００のチャネル制御部１１０に送信される。チャネル制御部１１０は制御プログラム７００を実行して、上記指示に従って、ペアの形成やペア状態の変更を行う。チャネル制御部１１０は、形成したペアのペア状態に応じて、例えば「ペア中」主記憶ボリウム３１０に対してデータの書き込み要求を情報処理装置２００から受信した場合には、書き込みデータの複製をストレージ装置Ｂ６００に送信し、副記憶ボリウム３１０へ反映する。具体的には、まずストレージ装置Ａ６００は、情報処理装置２００からデータ書き込み要求を受信すると、プロセッサ１（１１９）は、このデータ書き込み要求とともに受信した書き込みデータを、キャッシュメモリ１３０に記憶する。そしてプロセッサ１（１１９）は、ディスク制御部１４０に対して、記憶ボリウムＡ３１０へのデータの書き込みを指示すると共に、ペア管理テーブル７１０を参照して、データの複製が書き込まれる記憶ボリウムＢ３１０を特定する。そしてプロセッサ１（１１９）は、書き込みデータの複製を記憶ボリウムＢ３１０にも書き込むべく、データ転送のためのスクリプトをメモリ１（１１７）に書き込み、次にデータ転送ＬＳＩ（１１４）が、メモリ１（１１７）からレジスタ８０７にスクリプトを読み出し、読み出したスクリプトに基づいてメモリ１（１１７）からストレージ制御装置Ｂ１００への書き込みデータの送信を制御することにより行われる。そしてストレージ装置Ｂ６００は、このデータ書き込み要求を受信して、書き込みデータを記憶ボリウムＢ３１０に書き込む。
【００８４】
このように、本実施の形態に係るストレージシステムにおいては、ストレージ装置Ａ６００が情報処理装置２００から受信したデータ入出力要求に応じて、ストレージ装置Ａ６００とストレージ装置Ｂ６００との間でデータ転送が行われる。このデータ転送は、上述したようにプロセッサ１（１１９）を含む入出力制御部、及びデータ転送ＬＳＩ（１１４）を含むデータ転送制御部により行われるが、通常は、ストレージ装置Ａ６００とストレージ装置Ｂ６００との間で第１のデータ転送が行われている間は、第２のデータ転送は、第１のデータ転送が終了するまで実行されることはない。
【００８５】
すなわち図１６に示すように、情報処理装置２００がストレージ装置Ｂ６００に記憶されているデータを読みだす場合を例に説明すると、ストレージ装置Ａ６００が情報処理装置２００から受信した（S1000）リードコマンド（データ読み出し要求）１をストレージ装置Ｂ６００に送信（S1001）し、ストレージ装置Ｂ６００が記憶ボリウム３１０からデータの読み出しを行って（S1002）、読みだされたデータをストレージ装置Ｂ６００から受信して（S1003）、情報処理装置２００に送信する（S1004）までは、リードコマンド２の処理は行われない。図１６には、リードコマンド１の処理が終了した後に情報処理装置２００からリードコマンド２の送信が行われる場合が示されているが、リードデータ（読み出しデータ）１の読み出し処理が終了する前にリードコマンド２が送信されたとしても、リードコマンド２の処理はリードデータ１の読み出しが終了してから行われる（S1005乃至S1009）。これは、データ転送ＬＳＩ（１１４）が第１のデータ転送を行っている間に、第２のデータ転送を行うことができるように構成されていないからである。
【００８６】
しかしながら本実施の形態に係るストレージ制御装置Ａ１００においては、図１７及び図１８に示すように、ストレージ装置Ｂ６００からリードデータ１の受信が開始される前に情報処理装置２００からリードコマンド２を受信した場合には、リードデータ１の受信を開始する前に、リードコマンド２をストレージ装置Ｂ６００に送信することができる。図１７に示す例は、ストレージ装置Ｂ６００からリードデータ１を受信する前にリードコマンド２をストレージ装置Ｂ６００に送信し、ストレージ装置Ｂ６００からリードデータ１の受信が終了した後にリードデータ２の受信が行われる場合の例である（S2000乃至S2009）。図１８に示す例は、ストレージ装置Ｂ６００からリードデータ１を受信する前にリードコマンド２をストレージ装置Ｂ６００に送信し、ストレージ装置Ｂ６００からリードデータ１の受信が終了する前に、リードデータ２の受信も行われる場合の例である（S3000乃至S3013）。
【００８７】
なお、図１６乃至図１８において、一つのリードコマンドに対応して複数のリードデータが送信されるように記載されているが、これは、データ転送がデータブロック単位に制御されることを表したものである。
【００８８】
＝＝＝データ転送の流れ＝＝＝
次に、本実施の形態に係るデータ転送の処理の流れについて図２５乃至図２９のフローチャートに従って説明する。
【００８９】
まずストレージ制御装置Ａ１００が、情報処理装置２００からデータ入出力要求を受信すると、プロセッサ２（１１２）はメモリ２（１１３）にデータ領域を確保する（S4000）。データ領域を確保するとは、情報処理装置２００から送信されたデータ入出力要求が書きこみ要求の場合は、書き込みデータをメモリ２（１１３）に記憶するということである。また情報処理装置２００から送信されたデータ入出力要求が読み出し要求の場合は、読み出しデータを記憶するための記憶領域をメモリ２（１１３）に確保するということである。ここで確保されるデータ領域は一つとは限らない。メモリ２（１１３）におけるデータの記憶可能領域の分布状況等によっては、一つのデータ入出力要求に係るデータを複数に分割してメモリ２（１１３）に記憶せざるを得ない場合もあるからである。
【００９０】
続いてプロセッサ２（１１２）は、情報処理装置２００から受信したデータ入出力要求とメモリ２（１１３）に確保したデータ領域に関する情報とをプロセッサ１（１１９）に送信する（S4001）。  
そうするとプロセッサ１（１１９）はプロセッサ２（１１２）から送信されたデータ入出力要求を解析する（S4002）。これによりプロセッサ１（１１９）は要求転送長と転送方向とを認識する。  
続いてプロセッサ１（１１９）は、要求転送長で指定されたサイズのデータ領域をキャッシュメモリ１３０に確保する（S4003）。ここでもキャッシュメモリ１３０における記憶可能メモリ空間の分布状況等によっては、複数のデータ領域が確保される場合がある。
【００９１】
そしてプロセッサ１（１１９）は、キャッシュメモリ１３０に確保した各データ領域に対応して、プロセッサ１用スクリプトを作成する。同様に、プロセッサ２（１１２）から送信された、データ入出力要求とメモリ２（１１３）に確保されたデータ領域に関する情報とから、メモリ２（１１３）に確保された各データ領域に対応してプロセッサ２用スクリプトを作成する（S4004）。複数のデータ領域が確保された場合には、各プロセッサ１用スクリプト及び各プロセッサ２用スクリプトをひとまとまりに管理するために、連続Ｆｌａｇがセットされる。  
これによりキャッシュメモリ１３０におけるデータの記憶位置を示す情報を含むプロセッサ１用スクリプトと、情報処理装置２００又はストレージ装置Ｂ６００におけるデータの記憶位置を示す情報を含むプロセッサ２用スクリプトがメモリ１（１１７）に書き込まれる。
【００９２】
その後プロセッサ１（１１９）は、データ転送ＬＳＩ（１１４）が備えるＤＭＡ８００の内のレジスタＡ８０７又はレジスタＢ８０７に、要求転送長、転送方向、プロセッサ２用スクリプトの識別子、及びプロセッサ１用スクリプトの識別子を含む転送起動情報を送信し、データ転送ＬＳＩ（１１４）が備えるＤＭＡ８００の転送起動レジスタ８０３にこれらのデータを書き込む。これによりプロセッサ１（１１９）はデータ転送ＬＳＩ（１１４）を起動する（S4005）。  
そうすると、ＤＭＡ８００はＤＭＡ転送処理を開始する（4006）。ＤＭＡ転送処理については、図２６に示すフローチャートに従って説明する。
【００９３】
まずＤＭＡ制御部８０１が、転送起動情報に記載されたプロセッサ１用スクリプトの識別子とプロセッサ２用スクリプトの識別子とにより、プロセッサ１用スクリプトとプロセッサ２用スクリプトとをそれぞれ取得する（S5000）。スクリプトの取得は図２７に示すフローチャートに従って行われる。
【００９４】
まずＤＭＡ制御部８０１は、転送起動情報に基づいて、プロセッサ１（１１９）から送信された転送起動情報に記載されたプロセッサ１用スクリプトの識別子と、初期設定レジスタ８０５に記憶されたプロセッサ１用スクリプトサイズとから、メモリ１（１１７）におけるプロセッサ１用スクリプトの記憶アドレスを算出する（S6000）。プロセッサ１用スクリプトの記憶アドレスが算出できたら、続いてメモリ１（１１７）のその記憶アドレスからプロセッサ１用スクリプトを読み出す（S6001）。ここで、ＤＭＡ制御部８０１は、プロセッサ１用スクリプトに記載された領域先頭アドレスを、転送方向に応じて転送レジスタ８０４の転送先アドレス欄又は転送元アドレス欄に記載する。そしてスクリプトレジスタ８０６のプロセッサ１用実行スクリプト番号欄、プロセッサ１用有効エリア長欄にそれぞれ、プロセッサ１用スクリプトに記載されたスクリプト識別子、エリア長欄に記載されたエリア長を書き込む（S6002）。
【００９５】
同様に、ＤＭＡ制御部８０１は、転送起動情報に基づいて、プロセッサ１（１１９）から送信された転送起動情報に記載されたプロセッサ２用スクリプトの識別子と、初期設定レジスタ８０５に記憶されたプロセッサ２用スクリプトサイズとから、メモリ１（１１７）におけるプロセッサ２用スクリプトの記憶アドレスを算出する（S6000）。プロセッサ２用スクリプトの記憶アドレスが算出できたら、続いてメモリ１（１１７）のその記憶アドレスからプロセッサ２用スクリプトを読み出す（S6001）。  
ここで、ＤＭＡ制御部８０１は、プロセッサ２用スクリプトに記載された領域先頭アドレスを、転送方向に応じて転送レジスタ８０４の転送元アドレス欄又は転送先アドレス欄に記載する。そしてスクリプトレジスタ８０６のプロセッサ２用実行スクリプト番号欄、プロセッサ２用有効エリア長欄にそれぞれ、プロセッサ２用スクリプトに記載されたスクリプト識別子、エリア長欄に記載されたエリア長を書き込む（S6002）。
【００９６】
続いてＤＭＡ制御部８０１は転送単位を決定する（S5001）。転送単位の決定は図２８に示すフローチャートに従って行われる。  
まずＤＭＡ制御部８０１は、転送レジスタ８０４の残転送長欄に残転送長を書き込む（S7000）。転送開始時は、要求転送長を書き込む。  
そしてプロセッサ１の有効エリア長とプロセッサ２の有効エリア長と、残転送長のうちの最小のものを転送単位とする（S7001乃至S7007）。  
そしてＤＭＡ制御部８０１は、転送レジスタ８０４に記憶された転送元アドレスに記憶されたデータを、転送先アドレスに、転送単位のデータサイズだけ転送する（S5002）。転送は、転送データバッファ８１０を介して行われる。  
転送実行中は、転送レジスタ８０４の転送元アドレス、転送先アドレス、及び残転送長が順次更新されると共に、スクリプトレジスタ８０６のプロセッサ２用有効エリア長及びプロセッサ１用有効エリア長が順次転送済みデータのサイズの分ずつ減少される。  
スクリプトレジスタ８０６のプロセッサ２用有効エリア長、プロセッサ１用有効エリア長、又は残転送長のいずれかの値が０になったら、ＤＭＡ制御部８０１は転送終了判定処理を行う（S5003）。
【００９７】
転送終了判定処理は図２９に示すフローチャートに従って行われる。  
まずＤＭＡ制御部８０１は、転送レジスタ８０４の残転送長を確認する。残転送長が０の場合は要求転送長の全データの転送が完了しているので、”No”に進み、処理を終了する（S8000）。
【００９８】
一方、残転送長が０でない場合は、プロセッサ１用有効エリア長あるいはプロセッサ２用有効エリア長の少なくともいずれか一方が０である。この場合、有効エリア長が０となった方のスクリプトには、連続Ｆｌａｇで連結された、次に実行すべきスクリプトが存在する。S8001乃至S8004の処理により、連続Ｆｌａｇで連結された、次に実行すべきスクリプトが存在するスクリプトは、プロセッサ１用スクリプトであるのか、あるいはプロセッサ２用スクリプトであるのかが決定される。
【００９９】
まずS8001において、スクリプトレジスタ８０６のプロセッサ１用有効エリア長が０であるか否かを確認する。０であれば”Yes”に進み、S8002 においてプロセッサ１用開始スクリプト番号を更新する。０でなければ”No”に進む。  
続いてプロセッサ２用有効エリア長が０であるか否かを確認する（S8003）。０であれば”Yes”に進み、S8004 においてプロセッサ２用開始スクリプト番号を更新する。０でなければ”No”に進む。  
続いてＤＭＡ制御部８０１はS5000を再び実行する。この際ＤＭＡ制御部８０１は、S8002又はS8004において更新された転送起動レジスタ８０３のプロセッサ１用開始スクリプト番号又はプロセッサ２用開始スクリプトで指定されるスクリプトを読み出す。そしてＤＭＡ制御部８０１は新たに読み出したスクリプトに従って、ＤＭＡ転送を行う。  
最終的に、S5003における転送終了判定処理において転送レジスタ８０４の残転送長が０になったら、ＤＭＡ制御部８０１は転送処理を終了する。そしてＤＭＡ制御部８０１は、転送処理の結果が記載された終了ステータスをメモリ１（１１７）に書き込み（S4007）、プロセッサ１（１１９）に終了通知を行う（S4008）。この終了通知は、例えば割り込み信号の送信により行うことができる。
【０１００】
プロセッサ１（１１９）は、メモリ１（１１７）から終了ステータスを読み出して、その内容に応じた処理を実行する（S4009）。そしてプロセッサ１（１１９）はプロセッサ２（１１２）に終了通知を送信する（S4010）。  
そうするとプロセッサ２（１１２）は、データ入出力要求がデータの読み出し要求であった場合には、メモリ２（１１３）のデータ領域に転送された読み出しデータを読み出して、情報処理装置２００に送信することができる。またデータ入出力要求がデータの書きこみ要求であった場合には、書き込み終了報告を情報処理装置２００に送信する。
【０１０１】
ここで、上述したように、本実施の形態に係るＤＭＡ８００は、メモリ３（１１５）の制御を行うことができる。従って、レジスタ８０７に記憶されるデータ転送情報、及び転送データバッファ８１０に記憶されているデータを、メモリ３（１１５）へ書き出したり、メモリ３（１１５）から読み込んだりすることができる。その様子を図１９及び図２０に示す。メモリ３（１１５）へのデータの書き出しや読み込みの制御はＤＭＡ制御部８０１により行われる。
【０１０２】
このため、本実施の形態に係るストレージ制御装置１００では、第１のデータ転送情報に基づく第１のデータ転送を制御している途中でも、第２のデータ転送情報に基づく第２のデータ転送を制御することができる。つまり、レジスタ８０７に記憶されている第１のデータ転送情報、及び転送データバッファ８１０に記憶されているデータを、メモリ３（１１５）に書き出して、メモリ３（１１５）からレジスタ８０７に第２のデータ転送情報を読み出すことにより、第１のデータ転送を制御している途中でも、第２のデータ転送を制御することができるのである。図２０に示すように、メモリ３（１１５）に書き出されるデータ転送情報やデータは一つに限られず、複数とすることができる。
【０１０３】
なお、図２０には、メモリ３（１１５）に書き出されるデータ転送情報のうちの少なくとも一部が記載されている。すなわち、”転送元アドレス”、”転送先アドレス”、”転送長”、”転送コマンド”、”制御情報”、”チェックコード”である。”転送元アドレス”、及び”転送先アドレス”は、転送レジスタ８０４に記憶されている、それぞれ転送元アドレス、転送先アドレスである。また”転送長”は、転送レジスタ８０４に記憶されている残転送長とすることができるし、転送起動レジスタ８０３に記憶される要求転送長から残転送長を引いた値とすることもできる。また”転送コマンド”は、転送起動レジスタ８０３に記憶されている転送方向とすることもできるし、情報処理装置２００からストレージ制御装置１００に送信されたデータ入出力要求とすることもできる。後者の場合には、ＤＭＡ８００にはデータ入出力要求を記憶するレジスタが設けられ、そのレジスタに記憶されるデータ入出力要求がメモリ３（１１５）に書き出される。”制御情報”は、ＤＭＡ制御部８０１がデータ転送の制御の際に記憶しておく各種ステータス情報とすることができる。また”チェックコード”は、転送されるデータに基づいて計算されるチェックコードの途中結果である。チェックコードは例えばチェックサムや、ＣＲＣ（Cyclic Redundancy Check）とすることができる。
【０１０４】
このように、レジスタ８０７に記憶されるデータ転送情報、及び転送データバッファ８１０に記憶されているデータを、メモリ３（１１５）へ書き出すことにより、第１のデータ転送情報に基づく第１のデータ転送を制御している途中に、第２のデータ転送情報に基づく第２のデータ転送を制御することができる。第１のデータ転送情報に基づく第１のデータ転送を制御している途中に、第２のデータ転送情報に基づく第２のデータ転送を制御する場合の処理の流れを図２１及び図２２を用いて説明する。
【０１０５】
図２１及び図２２に記載されている丸付き数字は処理の順序を示す。すなわちまずプロセッサ１（１１９）は、ＤＭＡ８００にデータ転送の開始を指示する（ＤＭＡ８００を起動）。そうすると、ＤＭＡ制御部８０１は、レジスタ８０７に記憶されている第１のデータ転送情報と転送データバッファ８１０に記憶されているデータ転送中のデータをメモリ３（１１５）に書き出す（退避させる）。書き出しが完了したら、ＤＭＡ制御部８０１は、メモリ３（１１５）から、第２のデータ転送情報と第２のデータ転送情報に対応するデータを、それぞれレジスタ８０７と転送データバッファ８１０に読み込む。そしてＤＭＡ制御部８０１は、転送データバッファ８１０を介して第２のデータ転送を行う。第２のデータ転送が終了したら、プロセッサ１（１１９）に終了報告を送信する。
【０１０６】
このようにすることにより、本実施の形態に係るストレージ制御装置１００では、第１のデータ転送が終了するまで待たなくても、第２のデータ転送を行うことができる。例えばストレージ装置Ａ６００からストレージ装置Ｂ６００の記憶ボリウム３１０に記憶されたデータの読み出しを複数回行う場合に、ストレージ制御装置Ａ１００からストレージ制御装置Ｂ１００に送信された第１のデータ読み出し要求に応じて読み出されるデータがストレージ制御装置Ｂ１００からストレージ制御装置Ａ１００に送信されてくる前に、あるいは、ストレージ制御装置Ｂ１００からストレージ制御装置Ａ１００へデータが送信されてきた後でも全てのデータブロックの送信が終了する前に、第２のデータ読み出し要求をストレージ制御装置Ｂ１００に送信してしまうことが可能となる。この場合、第２のデータ読み出し要求を送信する際には、データ転送ＬＳＩ（１１４）のレジスタ８０７には第１のデータ読み出し要求に対応する第１のデータ転送情報が記憶されているが、第１のデータ転送情報をメモリ３（１１５）に書き出すことにより、第２のデータ読み出し要求に対応する第２のデータ転送情報をレジスタ８０７に読み出して第２のデータ転送を行うことが可能となる。そして、第１のデータ読み出し要求に応じてストレージ装置Ｂ６００の記憶ボリウム３１０から読み出されたデータを受信する際には、レジスタ８０７に記憶されている第２のデータ転送情報をメモリ３（１１５）に書き出して、メモリ３（１１５）に書き出されていた第１のデータ転送情報を再びレジスタ８０７に読み出して、データを受信すればよい。
【０１０７】
このようにすれば、例えばストレージ制御装置Ａ１００とストレージ制御装置Ｂ１００との間でデータ転送を行う場合の転送待ち時間に、他のデータ転送を行うことができる。また、例えばストレージ制御装置Ｂ１００のキャッシュメモリ１３０に読み出しデータが記憶されていない場合（キャッシュミスヒットの場合）であっても、記憶ボリウムＢ３１０からデータを読みだしている間に、他のデータ転送を行うことも可能となる。これによりデータ転送のスループットを向上させることができるので、データ入出力性能を向上させることができる。
【０１０８】
上述したように、メモリ３（１１５）には複数のデータ転送情報やデータを書き出すことができるので、もちろん、第２のデータ読み出し要求に応じて読み出されるデータがストレージ制御装置Ａ１００に送信されてくるまでの間に、第３のデータ読み出し要求をストレージ制御装置Ｂ１００に送信し、さらに多重度を上げたデータ入出力を行うことも可能である。
【０１０９】
このように本実施の形態においては、通信可能に接続されたストレージ装置Ｂ６００に記憶されたデータをアクセスする場合においても、通信によるデータ転送遅れ時間を隠蔽し、性能を低下させずに、データの入出力を行うことが可能となる。
【０１１０】
また、ストレージ装置Ａ６００とストレージ装置Ｂ６００との間の通信がファイバチャネルプロトコルに従って行われる場合など、データ転送がデータブロックを単位として行われる場合には、第１のデータ転送によるデータブロックや第２のデータ転送によるデータブロックが混在してデータ転送が行われることになる。複数のストレージ装置Ａ６００やストレージ装置Ｂ６００を備えたストレージシステムにおいては、さらに多くのデータブロックが混在することになる。本実施の形態に係るストレージ制御装置においては、かかる場合においても、第１のデータ転送のデータブロックの送受信中に第２のデータ転送のデータブロックの送受信を行う場合には、第１のデータ転送に係るデータ転送情報やデータブロックをメモリ３（１１５）に書き出すことにより、第２のデータ転送を行うことができる。そして第２のデータ転送の終了後に第１のデータ転送に係るデータ転送情報やデータブロックをメモリ３（１１５）から読みだして、第１のデータ転送を再開することもできる。
【０１１１】
また図７に示したように、本実施の形態に係るＤＭＡ８００には、ＤＭＡ制御部８０１、転送データバッファ８１０、及びレジスタ８０７がそれぞれ２つずつ設けられている。そのため、以下に述べるように、本実施の形態に係るストレージ制御装置１００においては、より好ましい態様のデータ転送を行うことが可能である。
【０１１２】
すなわち、図２３に示すように、第１のデータ転送のデータブロックの送受信中に第２のデータ転送のデータブロックの送受信を行う場合には、一方のＤＭＡ８００のレジスタ８０７に記憶されている第１のデータ転送情報と転送データバッファ８１０に記憶されているデータ転送中のデータブロックのメモリ３（１１５）への書き出しが完了する前に、第２のデータ転送情報と第２のデータ転送情報に対応するデータブロックを、他方のＤＭＡ８００のレジスタ８０７と転送データバッファ８１０に読み込むようにする。このようにすることより、レジスタ８０７に記憶されている第１のデータ転送情報と転送データバッファ８１０に記憶されているデータ転送中のデータブロックのメモリ３（１１５）への書き出しが完了するまで待たなくても、第２のデータ転送情報と第２のデータ転送情報に対応するデータブロックを、他方のＤＭＡ８００のレジスタ８０７と転送データバッファ８１０に読み込み、第２のデータ転送をより早く開始することが可能となる。このため、ストレージ装置Ａ６００とストレージ装置Ｂ６００との間のデータ入出力処理をさらにより高速に行うことが可能となるのである。
【０１１３】
その様子を示したのが図２４である。ＤＭＡ制御部８０１、転送データバッファ８１０、及びレジスタ８０７が１つずつしか設けられていない構成のＤＭＡ８００によりデータ転送を行う場合に第１のデータ転送から第２のデータ転送に切り替える場合の様子を示した図２２と、ＤＭＡ制御部８０１、転送データバッファ８１０、及びレジスタ８０７が２つずつ設けられている構成の本実施の形態に係るＤＭＡ８００を用いて第１のデータ転送から第２のデータ転送に切り替える場合の様子を示した図２４とを比較すると分かるように、ＤＭＡ制御部８０１、転送データバッファ８１０、及びレジスタ８０７がそれぞれ２つずつ設けられている構成の本実施の形態に係るデータ転送ＬＳＩ（１１４）によれば、ＤＭＡ転送の切り替えオーバヘッドを隠蔽することができるのである。そのためストレージ装置Ａ６００とストレージ装置Ｂ６００との間のデータ入出力処理をより高速に行うことが可能となるのである。
【０１１４】
＜＜＜第２の実施の形態＞＞＞
次に、第２の実施の形態について説明する。第２の実施の形態においては、チャネル制御部１１０における通信インタフェース機能はプロトコルＬＳＩ（Large-Scale Integrated circuit）１１２により実現される。
【０１１５】
第２の実施の形態に係るチャネル制御部１１０の構成を図３０に示す。  
チャネル制御部１１０は回路基板１１８を備えた一つのユニット化されたボードとして構成される。チャネル制御部１１０は一枚もしくは複数枚の回路基板１１８を含んで構成される。回路基板１１８には、プロセッサ１（１１９）、プロトコルＬＳＩ（１１２）、データ転送ＬＳＩ（１１４）、メモリ１（１１７）、メモリコントローラ１（１１１）、メモリ３（１１５）及びコネクタ１１６が形成されている。
【０１１６】
プロセッサ１（１１９）、プロトコルＬＳＩ（１１２）、データ転送ＬＳＩ（１１４）、メモリコントローラ１（１１１）、メモリ１（１１７）、及びメモリ３（１１５）はそれぞれＰＣＩ（Peripheral Component Interconnect）バスで通信可能に接続されている。なお、必ずしも全てがＰＣＩバスで接続されている必要はなく、一部又は全ての接続が他の規格に準拠する構成とすることもできる。このうち、メモリ１（１１７）、メモリ３（１１５）、メモリコントローラ１（１１１）により第２のメモリが形成される。またデータ転送ＬＳＩ（１１４）、及びプロトコルＬＳＩ（１１２）によりデータ転送制御部が形成される。またプロセッサ１（１１９）により入出力制御部が形成される。
【０１１７】
プロトコルＬＳＩ（１１２）は、情報処理装置２００や他のストレージ装置６００との間で通信を行うための通信インタフェース機能を提供する。例えば、他のストレージ装置６００に送信されるデータをファイバチャネルプロトコルに従ったデータ形式に変換する。プロトコルＬＳＩ（１１２）と接続されるコネクタ１１６は情報処理装置２００や他のストレージ装置６００と通信を行うためのコネクタである。プロトコルＬＳＩ（１１２）は、上記通信インタフェース機能を実現するための制御を行う。また、情報処理装置２００や他のストレージ装置６００との間でのデータの授受は、プロトコルＬＳＩ（１１２）が備えるバッファメモリを介して行われる。
【０１１８】
プロトコルＬＳＩ（１１２）、及びコネクタ１１６は、ＳＡＮ５００を構成するファイバチャネルスイッチのポートに接続されるポートとしても機能する。なお、ファイバチャネルの技術分野においては周知であるが、ポートには、ＳＡＮ５００上の機器を特定する識別子であるＷＷＮが付与されている。
【０１１９】
プロセッサ１（１１９）は、メモリ１（１１７）に記憶される制御プログラム７００を実行することにより、チャネル制御部１１０全体の制御を司る。例えば情報処理装置２００から送信されたデータ入出力要求を解析して、そのデータ入出力要求がストレージ駆動装置Ａ３００に対するものなのか、ストレージ駆動装置Ｂ３００に対するものなのか、ストレージ駆動装置Ａ３００に対するものである場合にはリモートコピーを行う必要があるのか、ないのか等を判断し、それに応じてデータ転送ＬＳＩ（１１４）にデータ転送の指示を行う。
【０１２０】
データ転送ＬＳＩ（１１４）は、プロセッサ１（１１９）からの指示により、ＰＣＩバスのターゲットとして、ＰＣＩバスからの動作要求により、キャッシュメモリ１３０と情報処理装置２００又はストレージ装置Ｂ６００との間のデータ転送を制御する。具体的には、データ転送ＬＳＩ（１１４）は、プロセッサ１（１１９）からの指示により、プロセッサ１（１１９）がメモリ１（１１７）に書き込んだ、キャッシュメモリ１３０におけるデータの記憶位置と情報処理装置２００、ストレージ制御装置Ｂ１００、又はストレージ装置Ｂ６００におけるデータの記憶位置とを含むデータ転送情報をメモリ１（１１７）から読み出して、ＰＣＩバスからのアクセスによりデータ転送を行う。
【０１２１】
＝＝＝データ転送＝＝＝
次に、第２の実施の形態に係るチャネル制御部１１０におけるキャッシュメモリ１３０と情報処理装置２００又はストレージ制御装置Ｂ１００との間のデータ転送について説明する。
【０１２２】
まず、プロトコルＬＳＩ（１１２）からみたＰＣＩバス空間を図３１に示す。プロトコルＬＳＩ（１１２）のＰＣＩバス空間には、データ空間と制御空間とが形成されている。制御空間は、物理的には図９に示したメモリ１（１１７）のスクリプト領域に形成されている。  
ＰＣＩバスのデータ空間には、キャッシュメモリ１３０に転送されるデータ、あるいはキャッシュメモリ１３０から転送されたデータが記憶される。ＰＣＩバスの制御空間には、データ空間に記憶されるこれらの各データの記憶位置や、各データの記憶領域のサイズ（エリア長）等が、各データに対応してプロセッサ２用スクリプト（データ転送情報）として記憶される。プロセッサ２用スクリプトは、第１の実施の形態におけるプロセッサ２用スクリプトと同様である。これらのプロセッサ２用スクリプトは、プロセッサ１（１１９）により設定され、プロトコルＬＳＩ（１１２）のＰＣＩバス空間の制御空間、すなわちメモリ１（１１７）のスクリプト領域に書き込まれる。
【０１２３】
第２の実施の形態におけるキャッシュメモリ１３０のデータ領域には、第１の実施の形態と同様に、図１０に示すように、ＰＣＩバス空間のデータ空間に転送されるデータ、あるいはＰＣＩバス空間のデータ空間から転送されたデータが記憶される。キャッシュメモリ１３０のデータ領域に記憶されるこれらの各データの記憶位置や、各データの記憶領域のサイズ（エリア長）等は、図９に示すように、各データに対応してプロセッサ１用スクリプト（データ転送情報）としてメモリ１（１１７）のスクリプト領域に記憶される。プロセッサ１用スクリプトは、第１の実施の形態におけるプロセッサ１用スクリプトと同様である。メモリ１（１１７）に記憶されるこれらのプロセッサ１用スクリプトは、プロセッサ１（１１９）により設定され、メモリ１（１１７）のスクリプト領域に書き込まれる。
【０１２４】
＝＝＝データ転送の流れ＝＝＝
次に、本実施の形態に係るデータ転送の処理の流れについて、ストレージ装置Ａ６００が情報処理装置２００から、ストレージ装置Ｂ６００に記憶されるデータの読み出し要求を受信した場合の処理を例に、図３２のフローチャートに従って説明する。
【０１２５】
まずストレージ制御装置Ａ１００が、情報処理装置２００からデータ読み出し要求を受信すると、プロセッサ１（１１９）はメモリ１（１１７）とキャッシュメモリ１３０とにデータ領域を確保する（S9000）。ここでメモリ１（１１７）にデータ領域を確保するとは、プロセッサ１用スクリプト及びプロセッサ２用スクリプトを記憶するための記憶領域をメモリ１（１１７）に確保するということである。また、キャッシュメモリ１３０にデータ領域を確保するとは、読み出しデータを記憶するための記憶領域をキャッシュメモリ１３０に確保するということである。ここで確保されるデータ領域は複数の場合もある。
【０１２６】
続いてプロセッサ１（１１９）は、プロセッサ１用スクリプトを作成する。プロセッサ１用スクリプトには、キャッシュメモリ１３０のアドレスがデータの送信先アドレスとして記憶されている。そして作成したプロセッサ１用スクリプトをメモリ１（１１７）に記憶する（S9001）。次にプロセッサ１（１１９）は、プロセッサ２用スクリプトを作成して、作成したプロセッサ２用スクリプトをメモリ１（１１７）に記憶する（S9002）。プロセッサ２用スクリプトには、ＰＣＩアドレスがデータの送信元アドレスとして記憶されている。
【０１２７】
そしてプロセッサ１（１１９）は、プロトコルＬＳＩ（１１２）に対してプロセッサ２用スクリプトの番号を送信することによりデータ転送要求を行う（S9003）。  
そうすると、プロトコルＬＳＩ（１１２）はメモリ１（１１７）からプロセッサ２用スクリプトを読みだして（S9004）、ストレージ装置Ｂ６００との間でＳＡＮ５００を介して通信を行う（S9005）。この通信によりプロトコルＬＳＩ（１１２）はストレージ装置Ｂ６００に対してデータ読み出し要求を送信する。そしてストレージ装置Ｂ６００から読み出しデータが送信されてきたら、プロトコルＬＳＩ（１１２）は、ＰＣＩアドレスを送信先として読み出しデータを送信する（S9006）。
【０１２８】
一方、プロセッサ１（１１９）は、データ転送ＬＳＩ（１１４）に対してプロセッサ１用スクリプトの番号を送信する。そうするとデータ転送ＬＳＩ（１１４）は、プロセッサ１用スクリプトの番号に基づいて、メモリ１（１１７）からプロセッサ１用スクリプトを読みだす（S9007）。そしてデータ転送ＬＳＩ（１１４）は、ターゲットとして、ＰＣＩバスの動作に応じて、プロセッサ１用スクリプトに従ってキャッシュメモリ１３０へのＤＭＡ転送を開始する（S9008）。ＤＭＡ転送処理については、図２６乃至図２９に示すフローチャートに示される処理と同様である。
【０１２９】
ＤＭＡ転送処理が終了したら、ＤＭＡ制御部８０１は、転送処理の結果が記載された終了ステータスをメモリ１（１１７）に書き込み（S9009）、プロセッサ１（１１９）に終了通知を行う（S9010）。この終了通知は、例えば割り込み信号の送信により行うことができる。  
そしてプロセッサ１（１１９）は、メモリ１（１１７）から終了ステータスを読み出して、その内容に応じた処理を実行する（S9011）。
【０１３０】
ここで、第２の形態に係るＤＭＡ８００も、第１の実施の形態に係るＤＭＡ８００と同様に、メモリ３（１１５）の制御を行うことができる。従ってレジスタ８０７に記憶されるデータ転送情報、及び転送データバッファ８１０に記憶されているデータを、メモリ３（１１５）へ書き出したり、メモリ３（１１５）から読み込んだりすることができる。  
このため、本実施の形態に係るストレージ制御装置１００でも、第１のデータ転送情報に基づく第１のデータ転送を制御している途中でも、第２のデータ転送情報に基づく第２のデータ転送を制御することができる。
【０１３１】
例えば、S9005の処理、すなわちプロトコルＬＳＩ（１１２）によるストレージ装置Ｂ（６００）へのアクセスは比較的長時間を要するので、この間に複数のデータ読み出し要求をストレージ装置Ｂ６００へ送信するようにすることができる。また各データ読み出し要求に応じてストレージ装置Ｂ６００から送信されてくる複数の読み出しデータを受信するようにすることができる。このとき一つのデータ読み出し要求に対して複数の分割されたデータ（データブロック）を受信するようにすることができる。
【０１３２】
またストレージ装置Ａ６００からストレージ装置Ｂ６００の記憶ボリウム３１０に記憶されたデータの読み出しを複数回行う場合には、ストレージ制御装置Ａ１００からストレージ制御装置Ｂ１００に送信された第１のデータ読み出し要求に応じて読み出されるデータがストレージ制御装置Ｂ１００からストレージ制御装置Ａ１００に送信されてくる前に、あるいは、ストレージ制御装置Ｂ１００からストレージ制御装置Ａ１００へデータが送信されてきた後でも全てのデータブロックの送信が終了する前に、第２のデータ読み出し要求をストレージ制御装置Ｂ１００に送信してしまうことが可能となる。この場合、第２のデータ読み出し要求を送信する際には、データ転送ＬＳＩ（１１４）のレジスタ８０７には第１のデータ読み出し要求に対応する第１のデータ転送情報が記憶されているが、第１のデータ転送情報をメモリ３（１１５）に書き出すことにより、第２のデータ読み出し要求に対応する第２のデータ転送情報をレジスタ８０７に読み出して第２のデータ転送を行うことが可能となる。そして、第１のデータ読み出し要求に応じてストレージ装置Ｂ６００の記憶ボリウム３１０から読み出されたデータを受信する際には、レジスタ８０７に記憶されている第２のデータ転送情報をメモリ３（１１５）に書き出して、メモリ３（１１５）に書き出されていた第１のデータ転送情報を再びレジスタ８０７に読み出して、データを受信すればよい。
【０１３３】
このようにすれば、例えばストレージ制御装置Ａ１００とストレージ制御装置Ｂ１００との間でデータ転送を行う場合の転送待ち時間に、他のデータ転送を行うことができる。また、例えばストレージ制御装置Ｂ１００のキャッシュメモリ１３０に読み出しデータが記憶されていない場合（キャッシュミスヒットの場合）であっても、記憶ボリウムＢ３１０からデータを読みだしている間に、他のデータ転送を行うことも可能となる。これによりデータ転送のスループットを向上させることができるので、データ入出力性能を向上させることができる。
【０１３４】
また上述したように、メモリ３（１１５）には複数のデータ転送情報やデータを書き出すことができるので、もちろん、第２のデータ読み出し要求に応じて読み出されるデータがストレージ制御装置Ａ１００に送信されてくるまでの間に、第３のデータ読み出し要求をストレージ制御装置Ｂ１００に送信し、さらに多重度を上げたデータ入出力を行うことも可能である。
【０１３５】
このように本実施の形態においては、通信可能に接続されたストレージ装置Ｂ６００に記憶されたデータをアクセスする場合においても、通信によるデータ転送遅れ時間を隠蔽し、性能を低下させずに、データの入出力を行うことが可能となる。
【０１３６】
また、ストレージ装置Ａ６００とストレージ装置Ｂ６００との間の通信がファイバチャネルプロトコルに従って行われる場合など、データ転送がデータブロックを単位として行われる場合には、第１のデータ転送によるデータブロックや第２のデータ転送によるデータブロックが混在してデータ転送が行われることになる。複数のストレージ装置Ａ６００やストレージ装置Ｂ６００を備えたストレージシステムにおいては、さらに多くのデータブロックが混在することになる。本実施の形態に係るストレージ制御装置においては、かかる場合においても、第１のデータ転送のデータブロックの送受信中に第２のデータ転送のデータブロックの送受信を行う場合には、第１のデータ転送に係るデータ転送情報やデータブロックをメモリ３（１１５）に書き出すことにより、第２のデータ転送を行うことができる。そして第２のデータ転送の終了後に第１のデータ転送に係るデータ転送情報やデータブロックをメモリ３（１１５）から読みだして、第１のデータ転送を再開することもできる。
【０１３７】
また、第２の実施の形態に係るＤＭＡ８００にも、ＤＭＡ制御部８０１、転送データバッファ８１０、及びレジスタ８０７がそれぞれ２つずつ設けられている。そのため、本実施の形態に係るストレージ制御装置１００においても、第１のデータ転送のデータブロックの送受信中に第２のデータ転送のデータブロックの送受信を行う場合には、一方のＤＭＡ８００のレジスタ８０７に記憶されている第１のデータ転送情報と転送データバッファ８１０に記憶されているデータ転送中のデータブロックのメモリ３（１１５）への書き出しが完了する前に、第２のデータ転送情報と第２のデータ転送情報に対応するデータブロックを、他方のＤＭＡ８００のレジスタ８０７と転送データバッファ８１０に読み込むようにすることができる。このようにすることより、レジスタ８０７に記憶されている第１のデータ転送情報と転送データバッファ８１０に記憶されているデータ転送中のデータブロックのメモリ３（１１５）への書き出しが完了するまで待たなくても、第２のデータ転送情報と第２のデータ転送情報に対応するデータブロックを、他方のＤＭＡ８００のレジスタ８０７と転送データバッファ８１０に読み込み、第２のデータ転送をより早く開始することが可能となる。このため、ストレージ装置Ａ６００とストレージ装置Ｂ６００との間のデータ入出力処理をさらにより高速に行うことが可能となるのである。
【０１３８】
以上発明を実施するための最良の形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【０１３９】
【図１】本実施の形態に係るストレージシステムの全体構成を示すブロック図である。
【図２】本実施の形態に係る管理端末の構成を示すブロック図である。
【図３】本実施の形態に係るチャネル制御部の構成を示すブロック図である。
【図４】本実施の形態に係るディスク制御部の構成を示すブロック図である。
【図５】本実施の形態に係る情報処理装置の構成を示すブロック図である。
【図６】本実施の形態に係るデータ転送ＬＳＩの構成を示すブロック図である。
【図７】本実施の形態に係るＤＭＡの構成を示すブロック図である。
【図８】本実施の形態に係るメモリ２を示す図である。
【図９】本実施の形態に係るメモリ１を示す図である。
【図１０】本実施の形態に係るキャッシュメモリを示す図である。
【図１１】本実施の形態に係る共有メモリを示す図である。
【図１２】本実施の形態に係るペア管理テーブルを示す図である。
【図１３】本実施の形態に係る構成情報管理テーブルを示す図である。
【図１４】本実施の形態に係るデータ入出力要求を示す図である。
【図１５】本実施の形態に係る記憶ボリウムの管理を示すブロック図である。
【図１６】他の実施形態に係るリードコマンドの処理を示すフローチャートである。
【図１７】本実施の形態に係るリードコマンドの処理を示すフローチャートである。
【図１８】本実施の形態に係るリードコマンドの処理を示すフローチャートである。
【図１９】本実施の形態に係るデータ転送の様子を示すブロック図である。
【図２０】本実施の形態に係るメモリ３を示す図である。
【図２１】本実施の形態に係るデータ転送の概要を示すブロック図である。
【図２２】本実施の形態に係るデータ転送の概要を示すフローチャートである。
【図２３】本実施の形態に係るデータ転送の概要を示すブロック図である。
【図２４】本実施の形態に係るデータ転送の概要を示すフローチャートである。
【図２５】本実施の形態に係るデータ転送の処理の流れを示すフローチャートである。
【図２６】本実施の形態に係るデータ転送の処理の流れを示すフローチャートである。
【図２７】本実施の形態に係るデータ転送の処理の流れを示すフローチャートである。
【図２８】本実施の形態に係るデータ転送の処理の流れを示すフローチャートである。
【図２９】本実施の形態に係るデータ転送の処理の流れを示すフローチャートである。
【図３０】第２の実施の形態に係るチャネル制御部の構成を示すブロック図である。
【図３１】第２の実施の形態に係るプロトコルＬＳＩのメモリ空間を示す図である。
【図３２】第２の実施の形態に係るデータ転送の処理の流れを示すフローチャートである。
【符号の説明】
【０１４０】
１００    ストレージ制御装置      １１０    チャネル制御部
１１２    プロセッサ２            １１３    メモリ２
１１４    データ転送ＬＳＩ        １１５    メモリ３
１１７    メモリ１                １１８    回路基板
１１９    プロセッサ１            １２０    共有メモリ
１３０    キャッシュメモリ        １４０    ディスク制御部
１５０    接続部                  １６０    管理端末
２００    情報処理装置            ３００    ストレージ駆動装置
３１０    記憶ボリウム            ５００    ＳＡＮ
６００    ストレージ装置
７１０    ペア管理テーブル        ７２０    構成情報管理テーブル
８００    ＤＭＡ                  ８０１    ＤＭＡ制御部
８０２    ＰＣＩインタフェース    ８０３    転送起動レジスタ
８０４    転送レジスタ            ８０５    初期設定レジスタ
８０６    スクリプトレジスタ      ８０７    レジスタ
８１０    転送データバッファ
【図１】
2005149082.tif 000003
【図２】
2005149082.tif 000004
【図３】
2005149082.tif 000005
【図４】
2005149082.tif 000006
【図５】
2005149082.tif 000007
【図６】
2005149082.tif 000008
【図７】
2005149082.tif 000009
【図８】
2005149082.tif 000010
【図９】
2005149082.tif 000011
【図１０】
2005149082.tif 000012
【図１１】
2005149082.tif 000013
【図１２】
2005149082.tif 000014
【図１３】
2005149082.tif 000015
【図１４】
2005149082.tif 000016
【図１５】
2005149082.tif 000017
【図１６】
2005149082.tif 000018
【図１７】
2005149082.tif 000019
【図１８】
2005149082.tif 000020
【図１９】
2005149082.tif 000021
【図２０】
2005149082.tif 000022
【図２１】
2005149082.tif 000023
【図２２】
2005149082.tif 000024
【図２３】
2005149082.tif 000025
【図２４】
2005149082.tif 000026
【図２５】
2005149082.tif 000027
【図２６】
2005149082.tif 000028
【図２７】
2005149082.tif 000029
【図２８】
2005149082.tif 000030
【図２９】
2005149082.tif 000031
【図３０】
2005149082.tif 000032
【図３１】
2005149082.tif 000033
【図３２】
2005149082.tif 000034