ユーザデータを内部で転送するストレージシステムであって、第一の転送エンジンと、第二の転送エンジンと、第一の記憶デバイスと、第二の記憶デバイスと、プロセッサと、前記プロセッサと異なるデバイスである転送シーケンサと、を含み、前記プロセッサは、ユーザデータの転送手順を示す転送シーケンス情報を作成し、前記転送シーケンサは、前記プロセッサが作成した前記転送シーケンス情報を受信し、当該転送シーケンス情報に従って、前記第一及び第二の転送エンジンを制御し、前記第一の転送エンジンは、前記転送シーケンサの指示に従って、受信したユーザデータを前記第一の記憶デバイスに転送し、前記第一の記憶デバイスは、前記転送されたユーザデータを格納し、前記第二の転送エンジンは、前記転送シーケンサの指示に従って、前記第一の記憶デバイスの前記ユーザデータを、前記第二の記憶デバイスに転送し、前記第二の記憶デバイスは、前記転送されたユーザデータを格納する、ストレージシステム。請求項1に記載のストレージシステムであって、前記プロセッサは、前記転送シーケンス情報に従った転送の開始前に、前記第一及び第二の記憶デバイスの記憶領域を確保し、前記転送シーケンス情報に従った転送が終了した後に、前記確保した記憶領域を解放する、ストレージシステム。請求項2に記載のストレージシステムであって、第二の転送シーケンサ、第三の転送エンジン及び第三のデータ記憶デバイスをさらに含み、前記転送シーケンサ並びに前記第一及び第二の転送エンジンは、第一の基板上に配置されており、前記第二の転送シーケンサ及び前記第三の転送エンジンは、第二の基板上に配置されており、前記第一及び第二の基板は内部ネットワークを介して接続し、前記プロセッサは、前記ユーザデータの転送のために、第二の転送シーケンス情報を生成し、前記第二の転送シーケンサは、前記第二の転送シーケンス情報を受信し、当該第二の転送シーケンス情報に従って前記第三の転送エンジンを制御する、ストレージシステム。請求項3に記載のストレージシステムであって、前記転送シーケンサは、前記転送シーケンス情報に従ったユーザデータ転送の正常終了後に、前記転送シーケンス情報に従って前記第二の転送シーケンサを起動し、起動された前記第二の転送シーケンサの指示に従って、前記第三の転送エンジンは、前記第二の記憶デバイスの前記ユーザデータを、前記第三の記憶デバイスに転送し、前記第三の記憶デバイスは、前記転送されたユーザデータを格納する、ストレージシステム。請求項4に記載のストレージシステムであって、前記プロセッサは、予め設定されている基準に従って、前記ユーザデータの内部転送において前記転送シーケンサを使用するか否かを判定する、ストレージシステム。請求項5に記載のストレージシステムであって、前記プロセッサは、前記ユーザデータの格納位置が複数の記憶デバイスに分かれる内部転送において、前記転送シーケンサの不使用を決定する、ストレージシステム。請求項6に記載のストレージシステムであって、前記プロセッサは、前記ユーザデータの格納領域が不連続の領域で構成されている内部転送において、前記転送シーケンサの不使用を決定する、ストレージシステム。請求項7に記載のストレージシステムであって、前記プロセッサは、内部転送する前記ユーザデータのデータ長と、前記第一の記憶デバイス及び第二の記憶デバイスの少なくとも一方における空き容量とを比較して、前記転送シーケンサを使用するいか否かを決定する、ストレージシステム。請求項8に記載のストレージシステムであって、前記プロセッサは、複数処理のアクセスが存在する前記ユーザデータの内部転送において、前記転送シーケンサの不使用を決定する、ストレージシステム。請求項9に記載のストレージシステムであって、前記プロセッサは、当該プロセッサの負荷及び/又は前記転送シーケンサの負荷に基づいて、前記転送シーケンサの使用の有無を決定する、ストレージシステム。請求項10に記載のストレージシステムであって、前記転送シーケンス情報は、前記ユーザデータの各転送を特定する転送先及び転送元の識別情報、前記転送先及び前記転送元での前記ユーザデータの格納アドレス情報、転送エンジンの識別情報を含む転送パメータと、前記ユーザデータの転送の順序を示す情報と、を含むストレージシステム。請求項11に記載のストレージシステムであって、前記転送シーケンサは、前記第一及び第二の転送エンジンのそれぞれに、前記転送先及び転送元での前記ユーザデータの格納アドレス情報及び前記ユーザデータのデータ長を通知し、前記転送シーケンサは、前記第一及び第二の転送エンジンのそれぞれからの、転送の正常終了/非正常終了を示すステータスを受信し、前記転送シーケンサは、受信したステータスが正常終了を示す場合に、次のデータ転送を起動する、ストレージシステム。請求項12に記載のストレージシステムであって、前記転送シーケンサは内蔵プロセッサを含み、前記内蔵プロセッサの動作周波数は、前記プロセッサの動作周波数よりも低い、ストレージシステム。このようなストレージシステムは、ホストコンピュータからの要求に対し、内部でユーザデータの複数回の転送を行う必要がある。ストレージシステム内のプロセッサは、ホストコンピュータからのコマンドリードコマンド又はライドコマンドに応じて、これら複数回のデータ転送を制御する。このため、ホストコンピュータからのI/OInput/Output要求リードコマンド又はライドコマンドに対して、システム内のデータ転送のためにプロセッサが複数回介在することになり、プロセッサの負荷が大きくなる。本発明の一態様は、ユーザデータを内部で転送するストレージシステムであって、第一の転送エンジンと、第二の転送エンジンと、第一の記憶デバイスと、第二の記憶デバイスと、プロセッサと、上記プロセッサと異なるデバイスである転送シーケンサと、を含む。上記プロセッサは、ユーザデータの転送手順を示す転送シーケンス情報を作成する。上記転送シーケンサは、上記プロセッサが作成した上記転送シーケンス情報を受信し、当該転送シーケンス情報に従って、上記第一及び第二の転送エンジンを制御する。上記第一の転送エンジンは、上記転送シーケンサの指示に従って、受信したユーザデータを上記第一の記憶デバイスに転送する。上記第一の記憶デバイスは、上記転送されたユーザデータを格納する。上記第二の転送エンジンは、上記転送シーケンサの指示に従って、上記第一の記憶デバイスの上記ユーザデータを、上記第二の記憶デバイスに転送する。上記第二の記憶デバイスは、上記転送されたユーザデータを格納する。本発明の一態様は、ホストコンピュータから受けたI/O要求に対して必要なプロセッサの介在回数を低減することができる。このため、I/O処理に必要なプロセッサ処理時間を削減することができる。特に、大規模なストレージにおいてI/O処理の効率化し、ストレージシステムの性能を向上する効果が大きい。上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。本発明は、ストレージシステムにおいて性能を向上させるための技術に関する。以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。第一の実施形態本実施形態は、従来のストレージシステムにおいてプロセッサが実施していた各データ内部転送の起動/終了の確認を自動化し、性能を向上させる方法の一実施形態である。以下、図面を用いて本実施形態の詳細について説明する。図1は、本実施形態のストレージシステム1及びデータ処理及び演算を行うホストコンピュータ12を含む、コンピュータシステムの一例を示す。ストレージシステム1は、ストレージコントローラ11、そしてデータを記憶するドライブ14を収容する筐体13を有する。コンピュータシステムは、複数のホストコンピュータ12を含むことができる。ストレージシステム1は、複数のドライブ筐体13を含むことができる。ドライブ筐体13は、複数のドライブ14を収容している。ドライブ14は、典型的には、不揮発性の磁気ディスクを有するハードディスクドライブHDD又は不揮発半導体メモリ例えばフラッシュメモリを搭載したSolidStateDriveSSDである。ドライブ14は、ホストコンピュータ12から送られたデータユーザデータを格納する。複数のドライブ14がRAID演算によるデータの冗長化を行うことで、1つのドライブ14に障害が発生した場合のデータ消失を防ぐことができる。ストレージコントローラ11は、ホストコンピュータ12と接続するためのフロントエンド基板2、ドライブ筐体13ドライブ14と接続するためのバックエンド基板3、キャッシュメモリ42を搭載するキャッシュメモリ基板41、内部処理を行うプロセッサ44を搭載するプロセッサ基板43、及びそれらを接続する内部ネットワーク46を有する。図1に示すように、ストレージコントローラ11は、典型的には、複数のフロントエンド基板2及び複数のバックエンド基板3を有する。各フロントエンド基板2は、ホストコンピュータ12との接続を行うためのホストインタフェースLSI21、ストレージコントローラ11内のデータ転送を行うためのデータ転送LSI22、及びホストコンピュータ12とストレージコントローラ11内部のデータ転送とを中継するユーザデータを一時的に記憶するフロントエンドバッファ25を有する。データ転送LSI22は、フロントエンドバッファ25とキャッシュメモリ42との間のデータ転送を行うフロントエンドDMA23、及びデータ転送の順序制御を行う転送シーケンサ24を有する。ホストインタフェースLSI21は、ホストコンピュータ12とストレージコントローラ11の通信に用いられるFibreChannelFC、FibreChannelOverEthernetFCoE、iSCSI等のプロトコルをストレージコントローラ11内部で用いられるプロトコル、例えばPCI-Expressに変換する機能を有する。各バックエンド基板3は、ドライブ筐体13との接続を行うためのドライブインタフェースLSI31、ストレージコントローラ11内のデータ転送を行うためのデータ転送LSI32、及びドライブ筐体13とストレージコントローラ11内部のデータ転送とを中継するユーザデータを一時的に記憶するバックエンドバッファ35を有する。データ転送LSI32は、バックエンドバッファ35とキャッシュメモリ42との間のデータ転送を行うバックエンドDMA33、データ転送の順序制御を行う転送シーケンサ34、及びRAID5、RAID6等のデータ冗長化におけるパリティ計算を行うパリティ生成器36を有する。ここで、ドライブインタフェースLSI31は、ドライブ14とストレージコントローラ11との間の通信に用いられるFibreChannelFC、SerialAttachedSCSISAS等のプロトコルをストレージコントローラ11内部で用いられるプロトコル、例えばPCI-Expressに変換する機能を有する。キャッシュメモリ基板41は、ホストコンピュータ12から読み書きされるユーザデータを一時的に記憶するキャッシュメモリ42を有する。プロセッサ基板43は、ストレージコントローラ11の制御を行うプロセッサ44、及びプロセッサ44が扱うデータやプログラムを格納するためのメモリ45を有する。プロセッサ44が扱うデータやプログラムは、ストレージコントローラ11内の不揮発性メモリ不図示又はドライブ14からロードされる。以降では、データ転送を行うホストインタフェースLSI21、フロントエンドDMA23、バックエンドDMA33、ドライブインタフェースLSI31を総称してデータ転送エンジンと呼ぶ。また、フロントエンドバッファ25、バックエンドバッファ35、及びキャッシュメモリ42を総称してデータ転送中継メモリ又は中継メモリと呼ぶ。キャッシュメモリ42とバッファ25、35は、典型的には、半導体メモリのRAMであり、電源不供給時に記憶データが消える揮発性メモリデバイスである。中継メモリは、ストレージシステムにおける最終的なデータの格納領域本例においてドライブ14内の記憶領域とホストコンピュータ12との間のユーザデータの転送において、ユーザデータを一時的に記憶する。データ転送エンジンは、中継メモリ間、中継メモリとホストコンピュータ12内の記憶領域との間、若しくは中継メモリとドライブ14との間においてデータを転送する。図1は示していないが、ストレージコントローラ11は、他のストレージシステムとの接続のための外部インタフェース基板を含むことができる。外部インタフェース基板は、例えば、外部インタフェースLSI、バッファそしてデータ転送LSIを含む。ストレージコントローラ11は、外部インタフェース基板を介して、他のストレージシステムとの間でコマンド及びユーザデータを送受信する。外部インタフェース基板は、他のストレージシステムのバックエンド基板3、キャッシュメモリ基板41及びフロンエンド基板2のいずれかと接続し、データを転送することができる。図2は、ホストコンピュータ12からのリード要求I/O要求の一つを受け、ストレージコントローラ11がドライブ14からホストコンピュータ12にデータを転送する際の、ストレージコントローラ11内のデータ転送手順、及び、転送シーケンサ24/34、プロセッサ44の役割分担の一例を示している。転送シーケンサ24/34は、転送シーケンサ24又は34の一方を示す。図2において、転送シーケンサ24、転送シーケンサ34及びプロセッサ44を示す矩形内の長円は、それぞれの回路が実行する処理を示している。図2に示すように、転送シーケンサ24及び34は同様の処理を行う。本実施形態において、プロセッサ44とは別に転送シーケンサ24、34が与えられている。プロセッサ44とは別のデバイスである転送シーケンサ24、34は、プロセッサ44が特定の処理を実行している間に、それとは異なる処理を実行することができる。転送シーケンサ24、34は、プロセッサ44から独立した別の回路であるが、同一のパッケージ又は同一チップ内に実装されていてもよい。ドライブ14に格納されているデータは、ドライブインタフェースLSI31によって、バックエンドバッファ35に読み込まれる。その後、バックエンドDMA33は、そのデータをバックエンドバッファ35からキャッシュメモリ42に転送する。その後、フロントエンドDMA23は、当該データをキャッシュメモリ42からフロントエンドバッファ25に転送し、最後に、ホストインタフェースLSI21は、フロントエンドバッファ25からホストコンピュータ12に当該データを転送する。プロセッサ44は、ホストコンピュータ12から送信されたデータ転送要求を解析する処理51、データが格納されている場所論理アドレスを特定すると共に、一連の処理に必要なデータ転送エンジン及びデータ転送中継メモリを特定する転送パス決定処理52、データ転送中継メモリ内の領域を必要に応じて確保するメモリ確保処理53を行う。プロセッサ44は、さらに、転送元アドレス、転送先アドレス及び転送手順等を記述する転送シーケンスを作成する処理54、転送シーケンサへ転送シーケンスを送信する転送シーケンス送信処理55、転送シーケンスの実行結果を転送シーケンサから受信する転送シーケンス実行結果受信処理56、及び、データ転送中継メモリ内の領域を必要に応じて解放するメモリ解放処理57を行う。以下において、メモリバッファ及びドライブを含むの確保及び解放は、そのメモリにおける記憶領域の確保及び解放である。プロセッサ44はプログラムに従って動作することでこれらの処理を実行し、これらの処理を実行する処理部例えば転送要求解析処理部、転送パス決定処理部、メモリ確保処理部として動作する。ストレージコントローラ11は、これら処理部を含むコントローラである。転送シーケンサ24/34は、一連のデータ転送の順序制御を行う。具体的には、直前のデータ転送が成功したかどうかを判定する処理61、データ転送コマンドをデータ転送エンジンに送信する処理62、データ転送エンジンから送られるデータ転送ステータスを受信する処理63、及び、ある転送が終了した際に次の転送コマンドを探す次処理64を行う。転送シーケンサ24/34は、プログラム命令コードに従って動作するプロセッサで構成しても、ハードウェア論理回路で構成してもよい。一部の機能処理をプロセッサプログラムにより実装し、他の機能処理をハードウェア論理回路で実装してもよい。バグフィックスや設計変更のため、プログラムに従って動作するプロセッサにより転送シーケンサの機能処理を実現することが好ましい。プロセッサ44は計算を中心とした演算処理を得意としているが、コマンド送信及び受信処理といった、ストレージコントローラ11内の他の回路ハードウェアデバイスとの通信処理は、処理内容の割にプロセッサ44の処理時間を消費する。また、プロセッサ44は、他の回路からの通信を受けて次の処理を行う際、関連するデータを読み書きできるようにするコンテキストスイッチ動作を必要とする。具体的には、プロセッサ44は、それまで行っていた処理で使っていたスタック領域やローカル変数などのデータを待避し、他の回路との通信で受領したデータの処理に必要なデータをスタック領域やローカル変数に回復する。このため、一連の転送シーケンスの内容を予め転送シーケンサ24、34に送信し、転送シーケンサ24、34が転送シーケンスに記載された内容に従って各転送を転送エンジンを使用して行うことで、プロセッサ44が各転送の監視、及び上記コンテキストスイッチを行う回数を削減することができる。このため、一連の転送に要するプロセッサ44の処理時間を大幅に削減することができる。一方、転送シーケンサ24、34の処理は予め指示された転送手順によってデータ転送をデータ転送エンジン21、23、31、33に指示し、転送結果を監視するのみであるので、複雑な処理を必要としない。従って、転送シーケンサ24、34自体の処理能力は低くても問題とならない。好ましくは、転送シーケンサ24、34の内蔵プロセッサの動作周波数は、メインプロセッサ44の動作周波数よりも低く、これによりコストを低減することができる。また、転送シーケンサ24、34が使用するメモリの容量は、プロセッサ44が使用するメモリ45の容量よりも小さくてよく、それによりコストを低減することができる。図3は、本発明が適用されるストレージシステム1における、ストレージコントローラ11が行うデータ転送の一例を示すシーケンス図である。本処理は、データ転送が必要となった際に行われる。データ転送が必要となるのは、例えばホストコンピュータ12からデータ転送要求を受領した場合、キャッシュメモリ42の容量不足を解消するためドライブ14に書き込まれていないデータをドライブ14に書き込む必要が生じた場合、若しくはドライブ14の障害や障害からの復旧によりデータの冗長性を回復する必要が生じた場合などである。本処理では、まず、プロセッサ44が、ユーザデータの転送パスを決定する52。具体的には、ユーザデータの一連の転送に用いる、データ転送シーケンサ、データ転送エンジン、データ転送中継メモリを決定する。例えば、ホストコンピュータ12からライトコマンドを受信した際には、ライトコマンドが指定するユーザデータライトデータの転送に用いる、ホストインタフェースLSI21、フロントエンドDMA23、及びデータの格納先キャッシュメモリ42を決定する。次に、プロセッサ44は、データ転送に必要なメモリ資源を確保する53。例えば、ホストコンピュータ12からライトコマンドを受信した場合であれば、ホストコンピュータ12に接続されているフロントエンド基板2上のフロントエンドバッファ23及びキャッシュメモリ42を確保する。プロセッサ44は、次に転送シーケンスを作成する54。具体的には、転送シーケンスを構成する転送コマンド及びそのコマンドを処理するデータ転送エンジン、及びデータ転送コマンドの実行順序を記述したデータを作成する。プロセッサ44は、転送シーケンサ24、34のそれぞれのデータ転送ための転送シーケンスを作成する。そして、作成したデータ転送シーケンスを、転送シーケンサ24、34のそれぞれに送信する55。このように、転送シーケンスは、転送方法を規定する情報を含む。転送シーケンスを受領した転送シーケンサ24/34は、転送シーケンス内から最初に実行すべき転送コマンド及びコマンドの送信先転送エンジンを抽出する。そして、転送シーケンサ24/34は、転送エンジンに対して転送コマンドを送信することで、データ転送実行を指示する62。転送シーケンサ24/34からデータ転送実行指示を受けたデータ転送エンジンは、指示された内容に従って、転送中継メモリ間、ホストコンピュータ12と転送中継メモリとの間若しくはドライブ14と転送中継メモリとの間のデータ転送を実行する。そして、データ転送が完了した場合、若しくは何らかのエラーによりデータ転送が失敗した場合、転送エンジンは、転送ステータスを転送シーケンサ24/34に送信する。転送ステータスを受け取った63転送シーケンサ24/34は、転送ステータスの内容を確認し、転送が成功したか失敗したかを判定する61。そして、転送が成功していた場合、転送シーケンサ24/34は、予め受け取っている転送シーケンスから次の転送コマンド及びコマンドの送信先転送エンジンを求め64、その転送エンジンに対し転送コマンドを送信する。転送シーケンサ24/34及び転送エンジンは以上を繰り返し、該当するシーケンスが定義するデータ転送を全て行う。転送シーケンサ24/34は、正常終了後は、転送シーケンスに記載されている終了時の処理に応じて、メッセージを他の転送シーケンサ24/34、またはプロセッサ44に送信する。図3では、一方の転送シーケンサ24/34は、受信した転送シーケンスの処理完了後、他方の転送シーケンサ24/34に転送起動メッセージを送信する。転送起動メッセージを受領した転送シーケンサ24/34は、上述のように、予め受け取った転送シーケンスに従って転送を行う。転送シーケンサ24/34は、以上の工程を、予めプロセッサ44が指示した全ての転送シーケンスが終了するまで繰り返す。全ての転送シーケンスの処理が終了した場合、最後の転送シーケンスを実行した転送シーケンサ24/34が、プロセッサ44に対して転送結果を送信する。そして、転送結果を受け取った56プロセッサ44は、確保したメモリ資源を解放する57。以上により、プロセッサ44は、ユーザデータの転送途中での転送終了ステータスの確認や次の転送コマンドの送信を行う必要がなくなる。これにより、プロセッサ44の処理量データ転送における負荷を減らすことができ、ストレージシステム1の処理能力を向上させることができる。上述のように、好ましい構成において、プロセッサ44は、一連のデータ転送の開始位置初期位置から最終位置までの一連のデータ転送の全てを規定する1又は複数のデータ転送シーケンスデータを作成し、それらを転送シーケンサ24/34に送信する。このように、必要とされるデータ転送における全ての転送工程を規定する1又は複数のデータ転送シーケンスを作成することで、転送開始から転送完了までのプロセッサ44の関与をより小さくすることができる。プロセッサ44は、上述のように、好ましい構成において、開始位置初期位置からのデータ転送の開始前に、必要な全てのメモリ資源を確保し、作成した全てのデータ転送シーケンスに従った処理が完了した後にユーザデータが最終位置最終記憶領域に格納された後に、確保したメモリ資源を解放する。これにより、データ転送完了までのプロセッサ44の関与をより小さくすることができる。設計によっては、プロセッサ44は、各転送シーケンスの終了のステータスを受信し、その後、その次の転送シーケンスの実行を指示してもよい。さらに、プロセッサ44は、各転送シーケンスの終了において、対応する確保したメモリ資源を解放してもよい。図4は、プロセッサ44が転送シーケンサ24/34に送信する転送シーケンス71の一例を示している。シーケンスID710は、該当転送シーケンサ24/34が扱う複数のシーケンスを識別するための情報であり、プロセッサ44が転送シーケンス71を生成する際、他の転送シーケンス71と重複しない値を設定する。転送ID711は、転送シーケンス71内の転送コマンドを識別するための情報である。転送エンジン712は、該当転送コマンドの送信先転送エンジンを示す情報である。この例において、1つ目のコマンドはドライブインタフェースLSI1Nは同一種類の各デバイスの番号を示すに、2つ目のコマンドはバックエンドDMA1に送信することを示している。転送コマンドの内容73については、図6で詳述する。シーケンス終了時処理内容714は、該当転送シーケンス71が完了した際に行う処理内容を示す。このフィールド714が他シーケンスの起動を示す場合、該当転送シーケンサ24/34は、別の転送シーケンサに対し、転送シーケンス起動のメッセージを送信する。一方、このフィールドがプロセッサ44へのメッセージ送信を示す場合、該当転送シーケンサ24/34は、プロセッサ44に対し転送シーケンス実行結果を送信する。図4の例において、フィールド714は、転送シーケンス起動のメッセージ送信を示している。送信先715は、メッセージの送信先を示す情報である。本例では、フロントエンドボード3の転送シーケンサ24である。図4の例のように、シーケンス終了時処理内容714が他シーケンス起動を示す場合、当フィールドは、送信先転送シーケンサ24/34の識別子を示す。シーケンス終了時処理内容714がプロセッサ44への転送シーケンス実行結果送信を示す場合、当フィールドは送信先プロセッサ44の識別子を示す。シーケンスID716は、シーケンス終了時処理内容714が他シーケンス起動を示す場合に、次に起動するシーケンスの識別子を示す。図4の転送シーケンス71は一例であって、転送シーケンスは、どのようなデータ構造を有していてもよい。この点は、ストレージシステム1が使用する他の情報、例えば、後述の転送シーケンス結果72やシーケンス追跡テーブル242等、に対しても同様である。例えば、本実施形態及び他の実施形態において、テーブル、リスト、データベース又はキューから適切に選択されたデータ構造体が、情報を格納することができる。図5は、転送シーケンサ24/34がプロセッサ44に送信する転送シーケンス実行結果72の一例を示している。転送シーケンスID721は、転送シーケンス実行結果72が、どの転送シーケンスに対応するかを示す情報である。転送コマンド実行結果722は、対応する転送シーケンスに含まれる各転送の成功/失敗を示す情報である。エラー転送ステータスは、転送シーケンスに含まれる転送コマンドのいずれかが失敗した場合に、転送失敗した転送エンジン及びエラー種別を示す情報である。エラー転送ステータスにおけるエラー転送エンジン723は、転送エラーが発生した転送エンジンの識別子を示す。本例において、ホストインタフェース3を示す。そして、エラー転送ステータスにおけるエラーID724は、転送エラーが発生した転送エンジンが出力した、エラー種別を示す識別子である。図6は、転送シーケンサ24/34が転送エンジンに送信する転送コマンド73の一例を示している。エクスチェンジID731は、転送エンジン内で複数の転送コマンド73を識別するための識別子である。転送元デバイス732は、該当転送コマンドが指示するデータ転送の転送元デバイスを示す情報である。この例は、転送元がドライブインタフェース1のバッファであることを示している。転送元アドレス733は、転送されるべきデータが転送元デバイスの中のどの場所領域に格納されているかを示す論理アドレスである。同様に、転送先デバイス734、転送先アドレス735は、それぞれ、転送されるデータの転送先デバイス、転送先デバイス内での格納場所を示す情報である。転送長736は、該当転送コマンドで転送すべきデータの長さを示す情報である。図7は、転送エンジンが転送コマンドの処理を終了する際に出力する転送ステータス74の一例を示している。エクスチェンジID741は、該当転送ステータス74が、どの転送コマンド73に対応するかを示す情報である。転送結果742は、対応する転送コマンド73の成功/失敗を示す情報である。そして、エラーID743は、転送が失敗していた場合に失敗の要因を示す識別子である。図8は、ホストコンピュータ12からコマンド典型的にリードコマンド又はライトコマンドを受領した際の、プロセッサ44の処理の一例を示したフローチャートである。プロセッサ44は、ホストコンピュータ12からコマンドを受領すると、まず転送パスを決定するS8111。具体的には、プロセッサ44は、転送元デバイス及び転送先デバイス、中継メモリ、そして利用する転送エンジンを決定する。そして、プロセッサ44は、予め定められている基準に従って、転送シーケンサ24/34を使うか否かを判定するS8112。例えば、プロセッサ44に余力がある場合及び/又は転送シーケンサ24/34の稼働率が高く余力が無い場合、プロセッサ44は、転送シーケンサ24/34を使わないと判定する。具体的には、プロセッサ44は、プロセッサ44及び/又は転送シーケンサ24/34の稼働率を参照して、転送シーケンサ24/34を使うか否かを決定する。例えば、プロセッサ44の稼働率が所定の閾値より小さい場合及び/又は転送シーケンサ24/34の稼働率が所定の閾値より大きい場合、転送シーケンサの能力不足により、性能向上効果が期待できない場合がある。そのため、プロセッサ44は、転送シーケンサ24/34を使わないと判定する。2つの閾値の値は典型的には異なる。データ転送が転送シーケンサ24、34の双方の担当転送エンジンを含む場合、プロセッサ44はその一方又は双方の使用の有無を決定する。このほか、好ましい構成において、プロセッサ44は、ホストコンピュータ12からのI/Oコマンドリードコマンド又はライトコマンドを解析し、コマンドの対象ユーザデータリードデータ又はライトデータの格納位置に応じて、転送シーケンサ24/34の使用/不使用の判定を行う。具体的には、対象ユーザデータの格納場所が異なる記憶デバイスである場合、全データを転送するためには、記憶デバイス毎に転送コマンドを作成し、これらを組み合わせなければならない場合がある。このような複雑なケースを全てサポートすると、転送シーケンサの構成が複雑になり、メモリも多く必要とする。これを避けるため、プロセッサ44は、転送シーケンサ24/34を使用しないと決定する。1つの記憶デバイスは1つのアドレス空間で定義され、転送エンジンは、1つのアドレス空間において、1つの記憶デバイスが提供する記憶領域にアクセスする。異なる記憶デバイスは、異なるアドレス空間を提供する。一般にこのようなケースは少ないため、転送シーケンサ24/34を使わないことによる性能への影響は小さい。例えば、ホストコンピュータ12からのリードコマンドに対応する転送元対象データの格納位置が複数のキャッシュメモリ42やドライブ14に跨る場合、若しくは、ホストコンピュータ12からのライトコマンドに対応する転送先対象データの格納位置が複数のキャッシュメモリ42に跨る場合、プロセッサ44は、転送シーケンサ24/34を使用しないと決定する。理由は複数の記憶デバイスにデータが跨る前述の場合と同様である。さらに好ましくは、ユーザデータの転送元又は転送先が連続領域論理アドレスが連続している領域ではない不連続領域である場合、プロセッサ44は、転送シーケンサ24/34を使用しないと決定する。理由は複数の記憶デバイスにデータが跨る前述の場合と同様である。このほか、転送長が大きく、中継メモリ上に連続した領域を確保できない場合、プロセッサ44は、転送シーケンサ24/34を使用しないと決定することが好ましい。こちらも、理由は複数の記憶デバイスにデータが跨る前述の場合と同様である。好ましい構成において、プロセッサ44は、バッファ空き容量と転送データ長との関係に基づいて、転送シーケンサ24/34の使用/不使用を判定してもよい。プロセッサ44は、フロントエンドバッファ25やバックエンドバッファ35の空き容量が転送長に対して十分では無い場合、例えば、それらの差が所定の閾値未満である場合に、転送シーケンサ24/34を使用しないと決定する。転送シーケンサを用いる場合バッファを長時間占有するため、このようにバッファを長時間確保することによる影響が大きい場合は、転送シーケンサを使わないようにすることで、バッファを有効活用することができる。この他、同一データへのアクセスが他に発生することが予想される場合、プロセッサ44は、転送シーケンサ24/34を使わないと判定することが好ましい。一般にデータ転送を行う際、データの不整合を防ぐため、他のデータアクセスが発生しないよう排他を行う。このとき、転送シーケンサを用いると、長時間該当データへのアクセスを排他することになるため、他の処理を長時間待たせることになる。転送シーケンサを用いないようにすることで、排他する時間を細かく分割でき、他処理への影響を小さくすることができる。これらの場合は、メモリドライブの記憶媒体を含む間の単純なデータ転送と異なる処理を必要とする。例えば、異なるキャッシュメモリデバイスへのデータの格納は、ホストコンピュータ12から受信したユーザデータを複数の部分に分け、それぞれ異なるキャッシュメモリに格納することを必要とする。転送シーケンサ24/34の構成処理をシンプルなものとして設計容易とするため、プロセッサ44が、これらの例外的処理を実行することが好ましい。プロセッサ44は、上記複数の判定基準のうちの予め設定されている1つ又は複数を参照し、転送シーケンサ24/34の使用の有無を判定することができる。複数の判定基準を使用する場合、典型的には、プロセッサ44は、任意の1つの条件が不使用条件を満たす場合、転送シーケンサ24/34を使用することなくデータを転送する。プロセッサ44は、転送シーケンサ24/34の使用/不使用判定を個別に行うことができる。又は、一方の転送シーケンサ24/34が不使用である場合、他方の転送シーケンサ24/34も不使用と判定してもよい。転送シーケンサを使う場合、プロセッサ44は、まず、転送パス上の全て中継メモリを確保する。つまり、プロセッサ44は、転送パス上のフロントエンドバッファ25、バックエンドバッファ35、キャッシュメモリ42等の中継メモリを確保するS8113。次に、プロセッサ44は、転送コマンド及び転送シーケンスを作成するS8114。具体的には、プロセッサ44は、S8113で確保したメモリ領域が転送元/転送先になるように、S8111で決定した転送エンジンを用いる転送コマンドを作成する。そして、作成した転送コマンドを元に転送シーケンスを作成する。次に、プロセッサ44は、作成した転送シーケンスを転送シーケンサ24及び/又は転送シーケンサ34に送信し、転送開始位置の転送シーケンサに転送実行を指示するS8115。そして、プロセッサ44は、最終転送位置の転送シーケンサからの応答を待ちS8116、最後にS8113で確保したバッファを解放してS8117処理を終了する。一方、プロセッサ44は、S8112で転送シーケンサ24及び転送シーケンサ34を用いないと判定した場合、転送シーケンサを使わずに各段階のデータ転送を一つずつ行う。具体的には、プロセッサ44は、まず次のデータ転送に必要なメモリを確保するS8118。そして、次の転送に必要な転送コマンドを作成するS8119。次に、プロセッサ44は、作成した転送コマンドを転送エンジンに送信するS8120。転送エンジンからの転送ステータス送信を待つS8121。転送ステータスが到着すると、プロセッサ44は、転送の成功を確認しS8122、この転送に使われたバッファを解放するS8123。プロセッサ44は、必要なデータ転送が全て行われたかどうかを判定しS8124、まだ残っている場合にはS8124:N、プロセッサ44はS8118に戻る。全て行われている場合にはS8124:Y、プロセッサ44は処理を終了する。図9は、転送シーケンサ24の構成の一例である。転送シーケンサ24は、図2に記載された処理を行うための内蔵プロセッサ241、実行中の転送シーケンスの進行状況を格納するシーケンス追跡テーブル242、転送シーケンスの内容を格納するシーケンステーブル243を有する。転送シーケンサ24の機能の少なくとも一部は、内蔵プロセッサ241と異なる論理回路で実装してもよい。転送シーケンサ24は、例えば内蔵メモリを備え、そのメモリ内に内蔵プロセッサ241の実行するプログラム並びにシーケンス追跡テーブル242及びシーケンステーブル243を含むデータを格納する。転送シーケンサ24は、バッファ25を使用してもよい。これらデータプログラムを含むは、ストレージコントローラ11内の不揮発性メモリ不図示又はドライブ14の不揮発性記憶領域からロードされる。尚、バックエンド基板3に搭載されている転送シーケンサ34も、同様の構成及び機能を有する。図10は、シーケンス追跡テーブル242の一例である。シーケンス追跡テーブル242は、複数の転送シーケンスを識別するためのシーケンスID2421に対し、どの段階まで転送が進んだかを示す転送フェーズ2422を記憶するフィールドを有する。図11は、転送シーケンサ24/34が行う処理の一例を示したフローチャートである。転送シーケンサ24/34はこの処理を繰り返し行うことで、プロセッサ44の代わりにデータ転送の順序制御を行う。図11のフローチャートに示すように、まず、転送シーケンサ24/34は、プロセッサ44からの転送シーケンスを登録する。具体的には、まず、転送シーケンサ24/34は、転送シーケンスがプロセッサ44から送信されたかどうかを確認するS8211。新しく転送シーケンスが到着していた場合S8212:Y、転送シーケンサ24/34は、到着した転送シーケンスを転送シーケンステーブル243に追加するS8213。転送シーケンサ24/34は、追加された転送シーケンスのうち、先頭の転送コマンドを転送シーケンスで指定された転送エンジンに送信するS8214。一方、S8212で転送シーケンスが到着していなかった場合、転送シーケンサ24/34は、そのままS8215に進む。次に、転送シーケンサ24/34は、DMA23/33やインタフェースLSI21/31といった転送エンジンの制御を行う。具体的には、まず、転送シーケンサ24/34は、転送エンジンからの転送ステータスが到着したかどうかを確認するS8215。ステータスが到着していない場合S8216:N、転送シーケンサ24/34は、処理を終了する。ステータスが到着している場合にはS8216:Y、転送シーケンサ24/34は、ステータスの内容を解析し、該当する転送が成功したのか失敗したのかを確認するS8217。転送に成功していた場合はS8218:Y、転送シーケンサ24/34は、シーケンス追跡テーブル242を基に、次に実行すべき転送コマンドを転送シーケンステーブル243から検索するS8219。次のコマンドが存在する、即ち終了したデータ転送がシーケンスの最後でない場合S8220:N、転送シーケンサ24/34は、次のコマンドを転送シーケンスで指定された転送エンジンに送信するS8221。そして、転送シーケンス追跡テーブル242の実行中転送コマンドを、今回実行したコマンドに更新しS8222、処理を終了する。一方、S8220において、今回完了したコマンドが最後のコマンドである場合S8220:Y、転送シーケンサ24/34は、転送シーケンスに記載されたシーケンス終了時処理内容714を調べるS8223。S8223において、その処理内容が他シーケンス起動の場合、転送シーケンサ24/34は、指定された転送シーケンサに対してシーケンス起動メッセージを送信しS8224、処理を終了する。一方、S8223において、シーケンス終了時処理内容714が、他シーケンス起動ではなく、プロセッサへのメッセージ結果の送信を示す場合、転送シーケンサ24/34は、転送シーケンス実行結果をプロセッサ44に対し送信しS8225、処理を終了する。一方、S8218で、転送失敗が判明した場合も、転送シーケンサ24/34は、シーケンスの実行結果をプロセッサ44に送信し、処理を終了する。以上のように、転送シーケンサ24/34を設けることで、プロセッサ44が転送シーケンサ24/34に予め転送シーケンスを送信し、転送シーケンサ24/34がプロセッサ44からの指示に従って一連のデータ転送処理を行えるようになる。この結果、一連のデータ転送を行う際、データ転送毎転送エンジンによる転送毎にプロセッサ44が介在する必要がなくなるため、プロセッサ44の処理量が減少する。この結果、プロセッサ44の他の処理能力が向上し、ストレージシステム1の性能向上を実現できる。本実施形態において、転送シーケンサ24、34は異なる基板2、3上に実装されている。転送シーケンサ24、34は、それぞれの基板2、3において、その基板上に実装されている転送エンジンを制御する。つまり、フロントエンド基板2上の転送シーケンサ24は、フロントエンドDMA23及びホストインタフェースLSI21を制御する。一方、バックエンド基板3上の転送シーケンサ34は、バックエンドDMA33及びドライブインタフェースLSI31を制御する。このように、転送シーケンサ24/34が、同一基板上の転送エンジンのみを制御することで、エラー箇所の特定を容易に行うことができる。設計によっては、転送シーケンサは、異なる基板上の転送エンジンを制御してもよい。第二の実施形態第二の実施形態は、ストレージコントローラ11がホストコンピュータ12からI/O要求リードコマンド又はライトコマンドを受け取った場合に、転送シーケンサ24/34を適宜活用してI/O要求を処理する例を示す。図12は、ホストコンピュータ12からストレージコントローラ11がI/O要求を受け取った場合にプロセッサ44が行うI/O処理のフローチャートの一例である。プロセッサ44は、ホストコンピュータ12からI/O要求を受け取ると、まず、コマンドの種別を解析するS8311。コマンドの種別がリードコマンドの場合S8311:READ、プロセッサ44は、要求されたデータがキャッシュメモリ42上に存在するかを調べるS8312。具体的には、プロセッサ44は、キャッシュメモリ42にどのデータが格納されているかを管理するキャッシュディレクトリを検索し、ホストコンピュータ12から要求されたボリューム番号及びアドレスのデータが、キャッシュメモリ42上に存在するか否かを調べる。データがキャッシュメモリ42上に存在する場合S8312:Y、プロセッサ44は、転送シーケンサ24を用いるかどうかを判定するS8313。転送シーケンサ24を用いる基準は、上述のように、要求されたデータがキャッシュメモリ42上の連続領域に格納されているか、フロントエンドバッファ25に十分な空きが存在するか、他に同一データにアクセスする処理が存在しないか等の一部又は全てを使用できる。転送シーケンサ24を使う場合S8313:Y、プロセッサ44は、転送シーケンサ24を使ったリードヒット処理84を行う。一方、転送シーケンサ24を使わない場合S8313:N、プロセッサ44は、転送シーケンサ24を使わないリードヒット処理85を行う。一方、S8312において、キャッシュメモリ42上に要求されたデータが存在しない場合S8312:N、プロセッサ44は、転送シーケンサ24及び34を使うかどうかを判定するS8316。転送シーケンサ24、34を用いる基準は、ユーザデータがドライブ14の連続領域に格納されているか、フロントエンドバッファ25及びバックエンドバッファ35に十分な空きが存在するか、他に同一データにアクセスする処理が存在しないか等の一部又は全てを使用できる。転送シーケンサ24及び34を用いる場合S8316:Y、プロセッサ44は、転送シーケンサ24及び34を用いたリードミス処理86を行う。一方、転送シーケンサ24及び34を用いないと決定した場合S8316:N、プロセッサ44は、転送シーケンサ24及び34を用いないリードミス処理87を実施する。一方、S8311において、ホストコマンドの種別がライトコマンドの場合S8313:WRITE、プロセッサ44は、転送シーケンサ24を使うかどうかを判定するS8319。ここで、転送シーケンサ24を用いる基準は、フロントエンドバッファ25に十分な空きが存在するか、他に同一データにアクセスする処理が存在しないか、転送先キャッシュメモリ42のアドレスが連続しているか等である。転送シーケンサ24を用いる場合S8319:Y、プロセッサ44は、転送シーケンサ24を用いたフロントエンドライト処理88を行う。一方、S8319において、転送シーケンサ24を用いないと決定した場合S8319:N、プロセッサ44は、転送シーケンサ24を用いないフロントエンドライト処理89を行う。図13は、転送シーケンサ24を使ったリードヒット処理84、或いは転送シーケンサ24を使わないリードヒット処理85における、転送エンジンホストインタフェースLSI21、DMA23が行うデータ転送処理の内容を示している。リードヒット処理84/85は、まず、フロントエンドDMAFEDMA23による、キャッシュメモリ42からフロントエンドバッファFEBUF.25へのデータ転送を行う。具体的には、フロントエンドDMA23が、キャッシュメモリ42に対し、リード要求を発行する。フロントエンドDMA23は、キャッシュメモリ42から応答されたデータを受け取り、それをフロントエンドバッファ25に書き込む。次に、ホストインタフェースLSI21が、フロントエンドバッファ25からホストコンピュータ12へデータを転送する。具体的には、ホストインタフェースLSI21がフロントエンドバッファ25に対しリード要求を発行する。そして、ホストインタフェースLSI21は、フロントエンドバッファ25から応答されたデータを受け取り、ホストコンピュータ12に返送する。図14は、転送シーケンサ24を用いたリードヒット処理84の一例を示している。図8のS8113~S8117が、本処理に対応する。本処理は、まず、フロントエンドバッファ25を確保するS841。これが、図8のS8113に対応する。次に、プロセッサ44は、要求されたデータが格納されているキャッシュメモリ42からS841で確保したフロントエンドバッファ25へデータ転送を行うフロントエンドDMA23のコマンドを作成するS842。そして、次に、プロセッサ44は、フロントエンドバッファ25からホストコンピュータ12にデータを返送するためのホストインタフェースLSI21の転送コマンドを作成するS843。そして、プロセッサ44は、これらの転送コマンドを基に、フロントエンドDMA23、ホストインタフェースLSI21を順に動作させる転送シーケンスを作成するS844。次に、プロセッサ44は、作成した転送シーケンスをフロントエンド転送シーケンサ24に送信するS845。そして、プロセッサ44は、フロントエンド転送シーケンサ24からの応答を待つS846。プロセッサ44は、フロントエンド転送シーケンサ24からの応答を受け取ると、転送シーケンスの成功を確認しS847、フロントエンドバッファ25を解放しS848、処理を終了する。図15は、転送シーケンサ24を用いないリードヒット処理85の一例を示したものである。図8のS8118~S8124が、本処理に対応する。本処理では、プロセッサ44は、まず、フロントエンドバッファ25を確保するS850。プロセッサ44は、要求されたデータが格納されているキャッシュメモリ42からS850で確保したフロントエンドバッファ25へデータ転送を行うフロントエンドDMA23のコマンドを作成するS851。次に、プロセッサ44は、作成した転送コマンドを、フロントエンドDMA23に送信するS852。そして、プロセッサ44は、フロントエンドDMA23からの転送ステータス送信を待つS853。プロセッサ44は、転送ステータスを受領すると、ステータスの内容を確認し、転送が成功したことを確認するS854。次に、プロセッサ44は、フロントエンドバッファ25からホストコンピュータ12にデータを転送するホストインタフェースLSI21の転送コマンドを作成するS855。そして、プロセッサ44は、作成したコマンドをホストインタフェースLSI21に送信するS856。プロセッサ44は、ホストインタフェースLSI21からの転送ステータス送信を待つS857。プロセッサ44は、転送ステータスを受領すると、ステータスの内容を確認し、転送が成功したことを確認するS858。プロセッサ44は、確保したフロントエンドバッファ25を解放しS859、処理を終了する。図16は、転送シーケンサ24及び34を使ったリードミス処理86、或いは転送シーケンサ24及び34を使わないリードミス処理87における、転送エンジンドライブインタフェースLSI31、バックエンドDMABEDMA33、フロントエンドDMA23、ホストインタフェースLSI21が行うデータ転送処理の内容を示したものである。リードミス処理86/87では、まず、ドライブインタフェースLSI31が、ドライブ14からバックエンドバッファBEBUF.35へデータを転送する。具体的には、ドライブインタフェースLSI31は、ドライブ14に対し、リードコマンドを発行する。ドライブインタフェースLSI31は、ドライブ14から応答されたデータを受け取り、バックエンドバッファ35に書き込む。次に、バックエンドDMA33が、バックエンドバッファ35からキャッシュメモリ42へのデータを転送する。具体的には、バックエンドDMA33がバックエンドバッファ35に対しリード要求を発行する。そして、バックエンドDMA33は、バックエンドバッファ35から応答されたデータを受け取り、キャッシュメモリ42に書き込む。次に、フロントエンドDMA23が、キャッシュメモリ42からフロントエンドバッファ25へのデータを転送する。具体的には、フロントエンドDMA23がキャッシュメモリ42に対しリード要求を発行する。そして、フロントエンドDMA23は、キャッシュメモリ42から応答されたデータを受け取り、フロントエンドバッファ25に書き込む。最後に、フロントエンドバッファ25からホストコンピュータ12へのデータが転送される。具体的には、ホストインタフェースLSI21がフロントエンドバッファ25に対しリード要求を発行する。そして、ホストインタフェースLSI21は、フロントエンドバッファ25から応答されたデータを受け取り、ホストコンピュータ12に返送する。図17は、転送シーケンサ24及び34を用いたリードミス処理86の一例を示したものである。図8のS8113~S8117が、本処理に対応する。本処理では、まず、プロセッサ44は、一連の転送に必要な中継メモリの確保を行う。具体的には、プロセッサ44は、リードコマンドによって指定されているユーザデータを読み出すドライブ14に接続されているバックエンド基板3を特定し、その上のバックエンドバッファ35を確保するS8611。次に、プロセッサ44は、キャッシュメモリ42のうち空いている領域の中から、今回要求されたデータを格納する領域を確保するS8612。次に、同様にして、プロセッサ44は、フロントエンドバッファ25を確保するS8613。以上により、一連の転送に必要な中継メモリの確保が完了する。次に、プロセッサ44は、転送に必要な転送コマンド及び転送シーケンスを作成する。具体的には、プロセッサ44は、ドライブインタフェースLSI31を用いてドライブ14からバックエンドバッファ35に転送する転送コマンドを作成するS8614。次に、プロセッサ44は、バックエンドDMA33を用いてバックエンドバッファ35からキャッシュメモリ42にデータを転送する転送コマンドを作成するS8615。次に、プロセッサ44は、フロントエンドDMA23を用いてキャッシュメモリ42からフロントエンドバッファ25にデータを転送する転送コマンドを作成するS8616。そして、プロセッサ44は、ホストインタフェースLSI21を用いてフロントエンドバッファ25のデータをホストコンピュータ12に転送する転送コマンドを作成するS8617。次に、プロセッサ44は、作成したドライブインタフェースLSI31の転送コマンド、バックエンドDMA33の転送コマンドを用い、この順序でデータ転送を行う転送シーケンスを作成するS8618。この時、プロセッサ44は、転送シーケンス終了時の処理を、フロントエンド転送シーケンサ24の転送シーケンス起動に設定する。次に、プロセッサ44は、作成したフロントエンドDMA33の転送コマンド、ホストインタフェースLSI21の転送コマンドを基に、この順序でデータ転送を行う転送シーケンスを作成するS8619。以上により、転送コマンド及び転送シーケンスの作成が完了する。そして、プロセッサ44は、フロントエンド転送シーケンサ24に対し、S8619で作成した転送シーケンスを送信するS8620。次に、プロセッサ44は、バックエンド転送シーケンサ34に対し、S8618で作成した転送シーケンスを送信するS8621。そして、プロセッサ44は、バックエンド転送シーケンサ34に対し、転送シーケンスの実行を指示するS8622。プロセッサ44は、フロントエンド転送シーケンサ24からの転送結果の応答を待つS8623。転送結果が到着すると、プロセッサ44は、転送結果の内容を解析し、転送シーケンスの処理の成功を確認するS8624。そして、プロセッサ44は、先ほど確保したフロントエンドバッファ25を解放しS8625、次に同様にしてバックエンドバッファ35を解放しS8626、処理を終了する。図18は、転送シーケンサ24及び34を用いないリードミス処理87の一例を示す。図8のS8118~S8124が、本処理に対応する。本処理は、まず、ドライブ14からバックエンドバッファ35へデータを転送する。具体的には、まず、プロセッサ44は、バックエンドバッファ35を確保するS8711。次に、プロセッサ44は、ドライブインタフェースLSI31を用いてドライブ14からバックエンドバッファ35にデータを転送する転送コマンドを作成するS8712。次に、プロセッサ44は、作成したコマンドをドライブインタフェースLSI31に送信するS8713。そして、プロセッサ44は、ドライブインタフェースLSI31からの実行結果ステータスが送信されるのを待つS8714。プロセッサ44は、ステータスを受け取ると、内容を解析し、転送の成功を確認するS8715。次に、プロセッサ44は、バックエンドバッファ35からキャッシュメモリ42へのデータ転送を行う。具体的には、まず、プロセッサ44は、キャッシュメモリ42を確保するS8716。次に、プロセッサ44は、バックエンドDMA33を用いてバックエンドバッファ35からキャッシュメモリ42にデータを転送する転送コマンドを作成するS8717。次に、プロセッサ44は、作成したコマンドをバックエンドDMA33に送信するS8718。そして、プロセッサ44は、バックエンドDMA33からの実行ステータスが送信されるのを待つS8719。プロセッサ44は、ステータスを受け取ると、内容を解析し、転送の成功を確認するS8720。そして、プロセッサ44は、バックエンドバッファ35を解放するS8721。次に、プロセッサ44は、キャッシュメモリ42からフロントエンドバッファ25へのデータ転送を行う。具体的には、まず、プロセッサ44は、フロントエンドバッファ25を確保するS8722。次に、プロセッサ44は、フロントエンドDMA23を用いてキャッシュメモリ42からフロントエンドバッファ25にデータを転送する転送コマンドを作成するS8723。次に、プロセッサ44は、作成したコマンドをフロントエンドDMA23に送信するS8724。そして、プロセッサ44は、フロントエンドDMA23からの実行結果ステータスが送信されるのを待つS8725。プロセッサ44は、ステータスを受け取ると、内容を解析し、転送の成功を確認するS8726。最後に、プロセッサ44は、フロントエンドバッファ25からホストコンピュータ12へのデータ転送を行う。具体的には、まず、プロセッサ44は、ホストインタフェースLSI21を用いてフロントエンドバッファ25からホストコンピュータ12にデータを転送する転送コマンドを作成するS8727。プロセッサ44は、作成したコマンドをホストインタフェースLSI21に送信するS8728。そして、プロセッサ44は、ホストインタフェースLSI21からの実行結果ステータスが送信されるのを待つS8729。プロセッサ44は、ステータスを受け取ると、内容を解析し、転送の成功を確認するS8730。最後に、プロセッサ44は、フロントエンドバッファ25を解放しS8731、処理を終了する。図19は、転送シーケンサ24を使ったフロントエンドライト処理88、或いは転送シーケンサ24を使わないフロントエンドライト処理89における、転送エンジンホストインタフェースLSI21、フロントエンドDMA23が行うデータ転送処理の内容を示している。フロントエンドライト処理88/89は、まず、ホストインタフェースLSI21による、ホストコンピュータ12からフロントエンドバッファ25へのデータ転送を行う。具体的には、ホストインタフェースLSI21は、ホストコンピュータ12から送られたユーザデータを受け取る。ホストインタフェースLSI21は、そのデータを、フロントエンドバッファ25の予め転送コマンドで指定された場所に書き込む。次に、フロントエンドDMA23が、フロントエンドバッファ25からキャッシュメモリ42へデータを転送する。具体的には、フロントエンドDMA23は、フロントエンドバッファ25に対し、リード要求を発行する。フロントエンドDMA23は、フロントエンドバッファ25から応答されたデータを受け取り、キャッシュメモリ42へ書き込む。この時、ホストコンピュータ12から送られたデータ又は電源やキャッシュメモリ基板41の障害などにより、データが読めないことがある。このため、書き込みの際には、2つのキャッシュメモリ42のそれぞれに同一のデータを書き込むことで、片方に障害が発生し読み取りが不可能になった場合でも、データの消失を防ぐことが好ましい。図20は、転送シーケンサ24を用いたフロントエンドライト処理88の一例を示している。図8のS8113~S8117が、本処理に対応する。本処理では、プロセッサ44は、まず、一連の転送に必要な中継メモリを確保する。具体的には、まず、プロセッサ44は、フロントエンドバッファ25を確保するS881。次に、プロセッサ44は、ホストコンピュータ12からのライトデータを格納するキャッシュメモリ42が既に確保されているかどうかを調べ、もし確保されていない場合には、キャッシュメモリ42を確保するS882。以上により、転送中継メモリの確保が完了する。次にプロセッサ44は、転送コマンド及び転送シーケンスの作成を行う。具体的には、まず、プロセッサ44は、ホストインタフェースLSI21によってホストコンピュータ12からフロントエンドバッファ25へのデータ転送を行う転送コマンドを作成するS883。次に、プロセッサ44は、フロントエンドDMA23によりフロントエンドバッファ25から2つのキャッシュメモリ42のそれぞれへデータを転送する転送コマンドを作成するS884。プロセッサ44は、作成した転送コマンドを基に、ホストインタフェースLSI21による転送及びフロントエンドDMA23による転送を順番に行う転送シーケンスを作成するS885。以上により、転送コマンド及び転送シーケンスの作成が完了する。次に、プロセッサ44は、作成した転送シーケンスを、フロントエンド転送シーケンサ24に送信し、転送シーケンスの実行を指示するS886。そして、プロセッサ44は、転送シーケンサ24からの応答を待つS887。プロセッサ44は、応答を受け取ると、転送シーケンスの実行の成功を確認しS888、フロントエンドバッファ25を解放するS889。そして、プロセッサ44は処理を終了する。図21は、転送シーケンサを用いないフロントエンドライト処理89の一例を示したものである。図8のS8118~S8124が、本処理に対応する。本処理では、プロセッサ44は、まず、ホストコンピュータ12からフロントエンドバッファ25へのデータ転送を行う。具体的には、まず、プロセッサ44は、フロントエンドバッファ25を確保するS890。次に、プロセッサ44は、ホストインタフェースLSI21を用いてホストコンピュータ12からフロントエンドバッファ25へのデータ転送を行う転送コマンドを作成するS891。プロセッサ44は、作成したコマンドをホストインタフェースLSI21に転送するS892。プロセッサ44は、ホストインタフェースLSI21からの実行結果ステータスが送信されるのを待つS893。プロセッサ44は、ステータスを受け取ると内容を解析し、転送の成功を確認するS894。以上により、ホストコンピュータ12からフロントエンドバッファ25へのデータ転送が完了する。次に、プロセッサ44は、フロントエンドバッファ25からキャッシュメモリ42へのデータ転送を行う。具体的には、プロセッサ44は、まず、フロントエンドDMA23を用いてフロントエンドバッファ25からキャッシュメモリ42へデータ転送を行う転送コマンドを作成するS895。そして、プロセッサ44は、作成したコマンドをフロントエンドDMA23に送信するS896。プロセッサ44は、フロントエンドDMA23からの実行結果ステータスが送信されるのを待つS897。プロセッサ44は、ステータスを受け取ると内容を解析し、転送の成功を確認するS898。最後に、プロセッサ44は、確保したフロントエンドバッファ25を解放しS899、処理を終了する。図22は、ホストコンピュータ12から書き込まれ、キャッシュメモリ42に存在しているユーザデータをドライブ14に書き込むデステージ処理90の一例である。この処理は、ホストコンピュータ12から書き込まれたユーザデータがキャッシュメモリ42に存在し、かつ、キャッシュメモリ42の空き容量が足りなくなった場合、或いはストレージシステム1の処理能力に余裕がある場合に実行される。本処理では、プロセッサ44は、書き込み先のドライブ14のRAIDレベルを調べるS901。そして、そのRAIDレベルがRAID1の場合S901:RAID1、プロセッサ44は、転送シーケンサ34を用いるかどうかを判定するS902。プロセッサ44は、転送シーケンサ34を用いる基準として、デステージ対象となるデータがキャッシュメモリ42上の連続領域に格納されていること、データの格納先が複数のドライブ14に跨っていないこと、ドライブ14の格納先領域が連続していること、バックエンドバッファ35に十分な空きが存在すること、他に同一データにアクセスする処理が存在しないこと、書き込み先ドライブ14が属するRAIDグループの他のドライブ14に、障害が発生していないこと等の一部又は全てを参照する。転送シーケンサ34を使う場合S902:Y、プロセッサ44は、転送シーケンサ34を使ったRAID1デステージ処理91を行う。一方、転送シーケンサ34を使わない場合S902:N、プロセッサ44は、転送シーケンサ34を使わないRAID1デステージ処理92を行う。S901において、書き込み先ドライブ14のRAIDレベルがRAID5の場合S901:RAID5、プロセッサ44は、転送シーケンサ34を用いるかどうかを判定するS905。プロセッサ44は、転送シーケンサ34を用いる基準として、デステージ対象となるデータがキャッシュメモリ42上の連続領域に格納されていること、データの格納先が複数のドライブ14に跨っていないこと、ドライブ14の格納先領域が連続していること、バックエンドバッファ35に十分な空きが存在すること、他に同一データにアクセスする処理が存在しないこと、書き込み先ドライブ14が属するRAIDグループの他のドライブに障害が発生していないこと等の一部又は全てを参照する。転送シーケンサ34を使う場合S905:Y、プロセッサ44は、転送シーケンサ34を使ったRAID5デステージ処理93を行う。一方、転送シーケンサ34を使わない場合S905:N、プロセッサ44は、転送シーケンサ34を使わないRAID5デステージ処理94を行う。図23は、転送シーケンサ34を使ったRAID1デステージ処理91、或いは転送シーケンサ34を使わないRAID1デステージ処理92における、転送エンジンが行うデータ転送処理の内容を示している。RAID1デステージ処理91/92は、キャッシュメモリ42上のデータを、2台のドライブ14DRIVE1、DRIVE2のそれぞれに書き込む。通常の構成において、ドライブ114、ドライブ214は別のバックエンド基板3、別のドライブインタフェースLSI31に接続されているため、転送に用いるバックエンドDMA33、バックエンドバッファ35も別のものである。まず、第一のバックエンドDMABE1DMA33は、キャッシュメモリ42から第一のバックエンドバッファBE1BUF.35へデータを転送する。この時、第一バックエンドDMA33は、キャッシュメモリ42に対してリード要求を発行し、応答として受け取ったデータを第一バックエンドバッファ35に書き込む。次に、第一のドライブインタフェースLSIDRIVEI/F1LSI31は、第一バックエンドバッファ35から第一ドライブDRIVE114へデータを転送する。同様に、第一のドライブインタフェースLSI31が第一バックエンドバッファ35に対してリード要求を発行してデータを受け取り、第一のドライブ14に対してライトコマンドを発行して受け取ったデータを書き込む。以上により、1台目のドライブ14への書き込みが終了する。次に同様にして、RAID1デステージ処理91/92は、2台目のドライブDRIVE214への書き込みを行う。第二のバックエンドDMABE2DMA33、第二のバックエンドバッファBE2BUF.35、第二のドライブインタフェースLSIDRIVEI/F2LSI31が、第二のドライブ14へのデータ書き込みのため、上記処理と同様の処理を行う。図24は、転送シーケンサを使ったRAID1デステージ処理91の一例を示している。図8のS8113~S8117が、本処理に対応する。本処理では、プロセッサ44は、まず、一連の転送に必要な中継メモリを確保する。具体的には、まず、プロセッサ44は、第一のドライブ14に書き込むための第一のバックエンドバッファ35を確保するS9111。次に、プロセッサ44は、同様にして、第二のバックエンドバッファ35を確保するS9112。以上により転送中継メモリの確保が完了する。次に、プロセッサ44は、転送コマンド及び転送シーケンスを作成する。具体的には、まず、プロセッサ44は、キャッシュメモリ41から第一のドライブ14へデステージを行う第一の転送シーケンスを作成するS9113。次に、プロセッサ44は、第二のドライブ14へデステージを行う第二のシーケンスを作成するS9114。これらの処理の詳細については図30で述べる。次に、プロセッサ44は、S9113で第一の転送シーケンスの終了時処理を、第二の転送シーケンス起動に設定するS9115。以上で、転送シーケンスの作成が完了する。次に、プロセッサ44は、第一のドライブ14が接続されている第一のバックエンド基板3上の第一のバックエンド転送シーケンサ34に対し、S9113で作成した第一の転送シーケンスを送信するS9116。次に、プロセッサ44は、同様にして、第二のドライブ14が接続されている第二のバックエンド基板3上の第二のバックエンド転送シーケンサ34に対し、S9114で作成した第二の転送シーケンスを送信するS9117。そして、プロセッサ44は、S9116で送信した転送シーケンサ34に対し、転送シーケンスの起動を指示するS9118。そして、プロセッサ44は、第二の転送シーケンスの終了したことを示すステータスが転送シーケンサ34から送信されるのを待つS9119。プロセッサ44は、転送ステータスを受け取ると、転送シーケンスの実行が成功したことを確認しS9120、第一のバックエンドバッファ35の解放を行いS9121、次に第二のバックエンドバッファ35を解放するS9122。そして、プロセッサ44は処理を終了する。図25は、転送シーケンサ34を使わないRAID1デステージ処理91の一例を示している。図8のS8118~S8124が本処理に対応する。本処理では、まず、プロセッサ44は、第一のドライブ14にデータをデステージするため、第一のドライブ14に接続された第一のバックエンド基板3上の第一のバックエンドバッファ35を確保するS921。そして、プロセッサ44は、キャッシュメモリ42から第一のドライブ14へのデステージを行うS922。本処理の詳細については図31で述べる。そして、プロセッサ44は、第一のバックエンドバッファ35を解放するS923。次に、同様に、プロセッサ44は、第二のドライブ14にデータをデステージするため、第二のドライブ14に接続された第二バックエンド基板3上の第二のバックエンドバッファ35を確保するS924。そして、プロセッサ44は、キャッシュメモリ42から第二のドライブ14へのデステージを行うS925。そして、プロセッサ44は、第二のバックエンドバッファ35を解放しS926、処理を終了する。図26は、転送シーケンサを使ったRAID5デステージ処理93、或いは転送シーケンサ34を使わないRAID5デステージ処理94における、転送エンジンが行うデータ転送処理の内容を示したものである。RAID5デステージ処理93/94は、RAID5のグループを構成するドライブ14のうち、データを格納するドライブ14以下、データドライブ、パリティを格納するドライブ14以下、パリティドライブの2台のドライブ14に更新されたデータを書き込む。図26において、データドライブはDRIVED.で表され、パリティドライブはDRIVEP.で表されている。本処理は、まず、データドライブ14から更新前のデータ以下、旧データをキャッシュメモリ42上に読み込む。具体的には、データドライブDRIVED.14に接続されている第一のドライブインタフェースLSID.I/F1LSI31が、同一基板上の第一のバックエンドバッファBE1BUF.35へ旧データを読み込む。具体的には、第一のドライブインタフェースLSI31は、データドライブ14に対し旧データを読み込むリードコマンドを発行し、受け取ったデータを第一のバックエンドバッファ35に書き込む。次に、第一のバックエンドバッファ35と同じバックエンド基板3上に存在する第一のバックエンドDMABE1DMA33が、第一のバックエンドバッファ35上の旧データをキャッシュメモリ42に転送する。具体的には、バックエンドDMA33は、第一のバックエンドバッファ35に対し、リード要求を発行し、受け取った旧データをキャッシュメモリ42に書き込む。次に、同様にして、RAID5デステージ処理93/94は、パリティドライブDRIVEP.14に格納されている更新前のパリティ以下、旧パリティを、キャッシュメモリ42上に読み込む。手順は、第二バックエンド基板3上の、第二のドライブインタフェースLSID.I/F2LSI31、第二のバックエンドバッファBE2BUF.35、第二のバックエンドDMABE2DMA33を用いることを除いて、上記ユーザデータの読み込みと同様である。次に、RAID5デステージ処理93/94は、キャッシュメモリ42上に元々存在するホストから書き込まれたデータ以下、新データ、及び読み込んだ旧データ、旧パリティから、更新後のパリティ以下、新パリティを生成する。具体的には、パリティ生成器PARITYGEN.36が、旧データ、旧パリティ、新データを読み込むリードコマンドをキャッシュメモリ42に対して発行する。パリティ生成器36は、受け取った3つのデータのXORを計算して新パリティを生成し、それをキャッシュメモリ42に書き込む。この後、RAID5デステージ処理93/94は、新データをキャッシュメモリ42からデータドライブ14に書き込む。具体的には、まず、第一のバックエンドDMA33がキャッシュメモリ42に対してリード要求を発行し、受け取った新データを第一のバックエンドバッファ35に書き込む。次に、第一のドライブインタフェースLSI31が第一のバックエンドバッファ35にリード要求を発行し、受け取った新データをデータドライブ14に書き込むライトコマンドを発行する。最後に、RAID5デステージ処理93/94は、旧パリティをキャッシュメモリ42からパリティドライブ14に書き込む。手順は、第二のバックエンドDMA33、第二のバックエンドバッファ35、第二のドライブインタフェースLSI31を用いることを除けば新データの書き込みと同様である。図27は、転送シーケンサ34を用いたRAID5デステージ処理93の一例を示している。図8のS8113~S8117が、本処理に対応する。本処理では、プロセッサ44は、まず転送中継メモリを確保する。具体的には、プロセッサ44は、旧データをデータドライブ14から読み込むため第一のバッファ領域を第一のバックエンドバッファBE1BUF.35において確保するS9311。次に、プロセッサ44は、旧パリティをパリティドライブ14から読み込むため第二のバッファ領域を、第二のバックエンドバッファBE2BUF.35において確保するS9312。同様にして、プロセッサ44は、新データをキャッシュメモリ42からデータドライブ14に書き込むデステージための第三のバッファ領域を、第一のバックエンドバッファ35において確保するS9313。プロセッサ44は、新パリティをキャッシュメモリ42からパリティドライブ14に書き込むための第四のバッファ領域を、第二のバックエンドバッファ35において確保するS9314。以上により、転送中継メモリの確保が完了する。次に、プロセッサ44は、転送コマンド及び転送シーケンスを作成する。具体的には、まず、プロセッサ44は、旧データをデータドライブ14からキャッシュメモリ42にステージする第一の転送シーケンスを作成するS9315。次に、プロセッサ44は、旧パリティをパリティドライブ14からキャッシュメモリ42にステージする第二の転送シーケンスを作成するS9316。次に、プロセッサ44は、パリティ生成器36を用いて旧データ、旧パリティ、新データから新パリティを生成する第三の転送シーケンスを作成するS9317。本シーケンスは、パリティ生成器36に対し送信するパリティ生成に対応するデータ転送コマンドのみで構成される。次に、プロセッサ44は、新データをキャッシュメモリ42からデータドライブ14にデステージする第四の転送シーケンスを作成するS9318。プロセッサ44は、新パリティをキャッシュメモリ42からデータドライブ14にデステージする第五の転送シーケンスを作成するS9319。プロセッサ44は、第一の転送シーケンスの終了時処理を第二の転送シーケンス起動にS9320、第二の転送シーケンスの終了時処理を第三の転送シーケンス起動にS9321、第三の転送シーケンスの終了時処理を第四の転送シーケンス起動にS9322、第四の転送シーケンスの終了時処理を第五の転送シーケンス起動にS9323、それぞれ設定する。以上により、転送シーケンスの作成が完了する。尚、ステージ、デステージを行う転送シーケンス作成処理の詳細は、図29、図30を参照して後述する。プロセッサ44は、生成した各転送シーケンスを対応するバックエンド転送シーケンサ34に送信する。具体的には、第一、第四の転送シーケンスは、データドライブ14が接続されている第一のバックエンド基板3上の第一の転送シーケンサ34に、第二、第五の転送シーケンスは、パリティドライブ14が接続されている第二のバックエンド基板3上の第二の転送シーケンサ34に送信される。第三の転送シーケンスは、今回のパリティ生成で用いるパリティ生成器36が存在するバックエンド基板3上の転送シーケンサ34に送信される。尚、パリティ生成器36及びパリティ生成器36を動作させる転送シーケンサは、キャッシュメモリ基板41上など、別の場所にあっても良い。次に、プロセッサ44は、第一の転送シーケンスの起動を、第一のバックエンド転送シーケンサ34に対し指示するS9325。プロセッサ44は、第五の転送シーケンスの完了を知らせるステータスが到着するのを待つS9326。プロセッサ44は、ステータスを受け取ると、転送の成功を確認しS9327、確保した第一から第四のバッファ領域を解放するS9328。そして、プロセッサ44は処理を終了する。図28は、転送シーケンサを使わないRAID5デステージ処理94の一例を示している。図8のS8118~S8124が本処理に対応する。本処理では、まず、プロセッサ44は、旧データをデータドライブ14からキャッシュメモリ42にステージするための第一のバッファ領域を、データドライブ14が接続されている第一のバックエンド基板3上の第一のバックエンドバッファ35に確保するS9411。次に、プロセッサ44は、旧データをデータドライブ14からキャッシュメモリ42にステージするS9412。そして、プロセッサ44は、確保した第一のバッファ領域を解放するS9413。次に、プロセッサ44は、旧パリティをパリティドライブ14からキャッシュメモリ42にステージするための第二のバッファ領域を、パリティドライブ14が接続されている第二のバックエンド基板3上の第二のバックエンドバッファ35に確保するS9414。プロセッサ44は、旧パリティをパリティドライブ14からキャッシュメモリ42にステージするS9415。プロセッサ44は、確保した第二のバッファ領域を解放するS9416。次に、プロセッサ44は、パリティ生成器36を用い、キャッシュメモリ42上の旧データ、旧パリティ、新データから、新パリティを生成するS9417。具体的には、プロセッサ44は、旧データ、旧パリティ、新データの3つを読み込んだ後に新パリティを生成し書き込むことを指示する転送コマンドを作成し、パリティ生成器36へ送信する。次に、プロセッサ44は、新データをキャッシュメモリ42からデータドライブ14にデステージするための第三のバッファ領域を、データドライブ14が接続されている第一のバックエンド基板3上の第一のバックエンドバッファ35に確保するS9418。プロセッサ44は、新データをキャッシュメモリ42からデータドライブ14にデステージするS9419。プロセッサ44は、確保した第三のバッファ領域を解放するS9420。次に、プロセッサ44は、新パリティをキャッシュメモリ42からパリティドライブ14にデステージするための第四のバッファ領域を、パリティドライブ14が接続されている第二のバックエンド基板3上の第二のバックエンドバッファ35に確保するS9421。プロセッサ44は、新パリティをキャッシュメモリ42からパリティドライブ14にデステージするS9422。プロセッサ44は、確保した第四のバッファ領域を解放するS9423。そして、プロセッサ44は処理を終了する。ここで、ステージ処理、デステージ処理の詳細は、図31、図32で述べる。図29は、データのステージを行うための転送シーケンスを生成するステージシーケンス生成処理95の一例である。本処理では、まず、プロセッサ44は、ドライブインタフェースLSI31を用いてドライブ14からバックエンドバッファ35にデータ転送を行う転送コマンドを作成するS951。次に、プロセッサ44は、バックエンドDMA33を用いてバックエンドバッファ35からキャッシュメモリ42にデータを転送する転送コマンドを作成するS952。さらに、プロセッサ44は、この2つの転送コマンドを順に行う転送シーケンスを作成しS953、処理を終了する。図30は、データのデステージを行うための転送シーケンスを生成するデステージシーケンス生成処理96の一例である。本処理では、まず、プロセッサ44は、バックエンドDMA33を用いてキャッシュメモリ42からバックエンドバッファ35にデータを転送する転送コマンドを生成するS961。次に、プロセッサ44は、ドライブインタフェースLSI31を用いてバックエンドバッファ35からドライブ14にデータ転送を行う転送コマンドを生成するS962。プロセッサ44は、この2つの転送コマンドを順に行う転送シーケンスを作成しS963、処理を終了する。図31は、転送シーケンサ34を用いないデステージ処理で用いられる、データのキャッシュメモリ42へのステージ処理97の一例である。本処理では、まず、プロセッサ44は、ドライブインタフェースLSI31を用いてドライブ14からバックエンドバッファ35にデータ転送を行う転送コマンドを作成するS971。次に、プロセッサ44は、作成したコマンドをドライブインタフェースLSI31に送信し、転送実施を指示するS972。プロセッサ44は、ドライブインタフェースLSI31からの転送が終了したことを示すステータスの送信を待つS973。プロセッサ44は、ステータスを受け取ると、内容を解析し、転送の成功を確認するS974。次に、プロセッサ44は、バックエンドDMA33を用いてバックエンドバッファ35からキャッシュメモリ42にデータ転送を行う転送コマンドを作成するS975。プロセッサ44は、作成したコマンドをバックエンドDMA33に送信し、転送実施を指示するS976。プロセッサ44は、バックエンドDMA33からの転送が終了したことを示すステータスの送信を待つS977。ステータスを受け取ると、内容を解析し、転送の成功を確認するS978。そして、プロセッサ44は、処理を終了する。図32は、転送シーケンサ34を用いない、ドライブ14へのデータのデステージ処理98の一例である。本処理では、まず、プロセッサ44は、バックエンドDMA33を用いてキャッシュメモリ42からバックエンドバッファ35にデータ転送を行う転送コマンドを作成するS981。プロセッサ44は、作成したコマンドをバックエンドDMA33に送信し、転送実施を指示するS982。プロセッサ44は、転送が終了したことを示すバックエンドDMA33からのステータス送信を待つS983。プロセッサ44は、ステータスを受け取ると、内容を解析し、転送の成功を確認するS984。次に、プロセッサ44は、ドライブインタフェースLSI31を用いてバックエンドバッファ35からドライブ14にデータ転送を行う転送コマンドを作成するS985。プロセッサ44は、作成したコマンドをドライブインタフェースLSI31に送信し、転送実施を指示するS986。プロセッサ44は、転送が終了したことを示すドライブインタフェースLSI31からのステータス送信を待つS987。プロセッサ44は、ステータスを受け取ると、内容を解析し、転送の成功を確認するS988。そして、プロセッサ44は、処理を終了する。転送シーケンサ24/34を用いる場合、転送を起動してから一連の転送が終わることを確認するまでの間、プロセッサ44が介在する必要が無い。このため、プロセッサ44の処理量が減少し、ストレージシステム1の処理能力が向上する。一方、転送シーケンサ24/34を用いない場合、バッファ領域を必要な時間だけ確保し解放するので、必要なバッファ領域の量を抑えることができる。このため、プロセッサ44の処理能力に余力が有るとき、バッファ量に余裕が無いとき等は、転送シーケンサ24/34を用いない方が良い場合がある。また、転送すべきデータが連続した領域に無い場合など、一段階の転送に複数の転送コマンドが必要となる場合も、転送シーケンサを用いない方が、転送シーケンサ24/34の構造を単純化できるので好ましい。また、同一データへのアクセスが集中している場合も、転送シーケンサ24/34を用いずにプロセッサ44が転送を行う方が、長時間、データへのアクセス排他をする必要が無くなるため、効率が良い。以上の構成により、ストレージシステムにおけるデータ転送において、プロセッサの処理量を減らすことができる。その結果、ストレージシステムの性能を向上させることができる。本実施形態において必要となる転送シーケンサはハードウェア通信を行うだけのシンプルなものであり、追加で必要となる資源回路規模及びメモリ量は小さい。以上、本発明の実施形態を説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、ある実施形態の構成に他の実施形態の構成を加えることも可能である。各実施形態の構成の一部について、他の構成の追加削除置換をすることが可能である。本発明は、ドライブ又はキャッシュメモリを有していないストレージシステムに適用することができる。ドライブを有していないストレージシステムは、上記実施形態におけるキャッシュメモリに相当する記憶デバイスが、ユーザデータの最終的な記憶領域を提供する。典型的には、そのようなストレージシステムは、複数の電源装置を有し、ユーザデータを複数の記憶デバイスのそれぞれに格納することで、データ消失の蓋然性を低下させる。