"キャッシュメモリを有する記憶装置おいて、電力供給停止時に該キャッシュメモリ内のデータを退避させる制御装置であって、前記記憶装置へのアクセス時のデータをキャッシュメモリに一時記憶し、該キャッシュメモリを使用して、記憶装置に対するアクセス制御を行なう記憶処理部と、外部からの電力を前記制御装置へ供給する第1の電源部と、前記第1の電源部からの電力に基づき蓄電され、前記第1の電源部からの電力が供給されなくなった際に放電を行なう事で、前記制御装置への電力を供給する前記蓄電部と、前記キャッシュメモリの退避を行う第1の不揮発性メモリと、第2の不揮発性メモリと、前記第1の不揮発性メモリへの退避処理を行う第1の制御部と、前記第1の制御部から送られてくる情報を、第2の不揮発性メモリへ書きこむ第2の制御部と、を有する退避処理装置であって、前記第1の制御部は、停電発生時に、前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに書き込む処理を実行するとともに、前記退避処理に当たり、該書込が正常に行われたかを検証するとともに、該検証にて正常に書きこまれていない場合、前記不揮発性メモリの正常な書込ができなかった領域の情報を、前記記憶部に記憶するとともに、前記第2の制御部へ送信する、事を特徴とする退避処理装置。前記第1の不揮発性メモリは、NANDフラッシュメモリであり、前記第2の不揮発性メモリは、磁気効果型メモリである事を特徴とする請求項1に記載の退避処理装置。前記第2の制御部は、停電の検出から予め設定された所定時間後に、退避処理装置の電力供給を止めることを特徴とする請求項1、または、請求項2に記載の退避処理装置。前記キャッシュメモリ内に記憶されているデータにおいて、前記第1の不揮発性メモリの書込が失敗した領域の情報を記憶する管理テーブルを記憶する記憶部を有し、前記第1の制御部は、前記退避処理が完了したあと、前記記憶部に記憶されている、管理テーブルを前記第2の記憶部へ送信する事を特徴とする請求項1から3のいずれかに記載の退避処理装置。キャッシュメモリの退避を行う第1の不揮発性メモリ、第2の不揮発性メモリと、記憶装置へのアクセス時のデータをキャッシュメモリに一時記憶し、該キャッシュメモリを使用して、記憶装置に対するアクセス制御を行なう記憶処理部、第1の制御部、及び、前記第2の制御部、外部からの電力を供給する第1の電源部、前記第1の電源部からの電力に基づき蓄電され、前記第1の電源部からの電力が供給されなくなった際に放電を行なう事で、前記制御装置への電力を供給する前記蓄電部、及び、電力供給停止時に該キャッシュメモリ内のデータを退避させる制御装置が行なう制御方法であって、前記第1の制御部が、停電発生時に、前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに書き込む処理を実行するとともに、前記退避処理に当たり、該書込が正常に行われたかを検証するとともに、該検証にて正常に書きこまれていない場合、前記不揮発性メモリの正常な書込ができなかった領域の情報を、前記記憶部に記憶するとともに、前記第2の制御部へ送信し、前記第2の制御部が、前記第1の制御部から送られてくる情報を、時間情報と共に、第2の不揮発性メモリへ書き込みを行なう事を特徴とする退避処理方法。前記第1の不揮発性メモリは、NANDフラッシュメモリであり、前記第2の不揮発性メモリは、NVRAMもしくは磁気効果型メモリである事を特徴とする請求項5に記載の退避処理方法。前記第2の制御部が、停電の検出から予め設定された所定時間後に、退避処理装置の電力供給を止めることを特徴とする請求項5、または、請求項6に記載の退避処理装置。前記キャッシュメモリ内に記憶されているデータにおいて、前記第1の不揮発性メモリの書込が失敗した領域の情報を記憶する管理テーブルを記憶する記憶部を有し、前記第1の制御部は、前記退避処理が完了したあと、前記記憶部に記憶されている、管理テーブルを前記第2の記憶部へ送信する事を特徴とする請求項5から7のいずれかに記載の退避処理方法。上記したCPUは、RAIDにおけるキャッシュメモリ内のデータの退避を効率的に行なうために、高性能なプロセッサを用い、通常は、内部もしくは外部にあるメモリを使用してソフトウエア処理している事が多い。このため、CPUを使用して退避処理を行った場合、消費電力が大きく、正常な退避処理を行なうためには、なるべく容量の大きいSCUを用いることが望ましい。しかしながら、SCUは、容量が大きいほど、大型化し、SCUを搭載できる容積に制限があることから、SCUの大容量化にも限界がある。このため、停電時には、このCPUを使用せず、退避処理に限った機能に絞った専用の制御部を有して転送させ、消費電力を抑えることが好ましい。一方、NANDフラッシュは通常のメモリに比べ、信頼性が低く、書き込み時に、その書き込み領域が不良になり、書込みエラーとなってしまうことがある。このため、NANDフラッシュへの書込みには、書き込みエラーとなった領域を記憶しておき、次回の退避時に活用できることが好ましい。上記したように、CPUのようなプロセッサであれば、ソフトウエア処理などによって、エラーログを随時管理記録させながら退避処理を行なうことは容易である。しかながらが、専用の制御部の場合、なるべく機能を絞るという観点から、より簡易な機能にて、エラーログを収集できるほうが望ましい。本技術においては、このような課題に鑑み、簡易な構成で、エラーログの記録を可能とする退避処理装置を実現する事を目的とする。本技術は、上記従来の課題に鑑み、キャッシュメモリの退避を行う為の第1の不揮発性メモリと、第2の不揮発性メモリと、キャッシュメモリ内のデータにおいて、第1の不揮発性メモリの書込が失敗した領域の情報の履歴を記録した管理テーブルを記憶する記憶部と、第1の不揮発性メモリへの退避処理を行う第1の制御部と、第1の制御部から送られてくる情報を、時間情報と共に、第2の不揮発性メモリへ書きこむ第2の制御部とを有し、第1の制御部は、停電発生時に、キャッシュメモリに記憶されているデータを不揮発性メモリに書き込む処理を実行するとともに、前記退避処理に当たり、該書込が正常に行われたかを検証するとともに、該検証にて正常に書きこまれていない場合、前記不揮発性メモリの正常な書込ができなかった領域の情報を、記憶部に記憶する。本願技術によれば、第1の制御部は、エラー発生の度に第2の制御部へ転送するだけでよく、第2の制御部は、どの様な種別かを意識すること無く、第2の不揮発性メモリへデータを転送すれば、第2の不揮発性メモリには、エラーログと同等の記録内容が蓄積されることになる。これにより、全体のエラーログを管理せずとも、エラーログの記録を可能とする。以下に、本願の開示する退避処理装置、退避処理方法について説明する。なお、以下の実施の形態によりこの発明が限定されるものではない。次に、本実施の形態に示す、退避処理装置を含む、RAID装置RedundantArraysofIndependentDisksについて説明する。図1は、本実施の形態に示すRAID装置の構成を示す機能ブロック図である。図1において、RAID装置200は、複数の上位装置例えば、ホストコンピュータA、B、C以下、単にホストとするからの要求に応じて、HDDHardDiskDrive203a~zに記憶されている各種ユーザデータやプログラムデータの伝送を行う。また、RAID装置200は、停電発生時には、バックアップに必要とされるキャッシュメモリ201b内のキャッシュデータをNAND型メモリに退避する処理を実行する。また、RAID装置200は、CMControllerModule201と、PSUPowerSupplyUnit202と、HDD203a~zとを有する。CM201は、キャッシュメモリ201bの管理や、ホストとのインターフェース制御や、各HDD203a~zの制御を行う制御部であり、退避処理装置の一種である。このCM201は、NANDフラッシュ201a第1の不揮発性メモリと、キャッシュメモリ201b、FPGAFieldProgrammableGateArray/第1の制御部201cとを有する。また、CM201は、通電時にRAID装置200のRAID及びキャッシュ制御を行うCPURAID-on-Chip201dと、SCUSuperCapacitorUnit201eと、Expエキスパンダ201fとを有する。さらに、CM201は、MRAM磁気抵抗メモリ:MagnetoresistiveRandomAccsessMemory/第2の不揮発性メモリ201g、MRAM201gへのアクセス制御を行なう監視FPGA201h第2の制御部とを有する。このうち監視FPGA201hは、タイマ201h1を有する。このタイマ201h1は、監視FPGA201hによりセットさせると、このセットからの経過時間を出力するものである。NANDフラッシュ201aは、RAID装置200に停電が発生した場合に、キャッシュメモリ201bに記憶されているキャッシュデータがバックアップされるNAND型メモリである。なお、NANDフラッシュ201aは、ブロック単位でアクセスされる構造を有し、シーケンシャルライトにて、キャッシュメモリ201bのキャッシュデータが書込まれる。図2は、本実施の形態のNANDフラッシュ201aのデータ構造を示す図である。図2のNANDフラッシュ201aは、複数のブロックa01~a20を有している。このブロックa01~a20は、各々キャッシュデータを記憶するデータ領域であり、ブロックごとに、キャッシュデータが書込まれる。なお、本実施の形態のNANDフラッシュ201aの1ブロック当たりのデータ領域は、4Mbyteとする。次に、図1のキャッシュメモリ201bについて説明する。キャッシュメモリ201bは、ホストとHDD203a~zとの間で転送が行われるユーザデータを一時的に記憶するキャッシュメモリである。なお、上述してきたようにキャッシュメモリ201bに記憶されているユーザデータをキャッシュデータとする。図3は、本実施の形態に示すキャッシュメモリ201bのデータ構造の一例を示す図である。図3に示したキャッシュメモリ201bは、キャッシュデータを一時的に記憶する複数のテーブルb01~b10を有している。なお、図3に示した各テーブルb01~b10は、4Mbyteのユーザデータを保存する容量を有している。また、このユーザデータは64kBのデータ長単位で、CPU201dに管理されるものとする。また、ユーザデータの一例としては、リードデータとライトデータが挙げられる。リードデータは、HDD203a~zのいずれかに記憶されているユーザデータを読み出したデータを一時記憶したものである。ホストからRAID装置200にユーザデータのリード要求があった場合、CM201は、キャッシュメモリ201b内の各テーブルb01~b10から、リード要求に対応するユーザデータがキャッシュデータを取得できた場合は、取得したキャッシュデータをホストに出力する。一方、キャッシュメモリ201bからキャッシュデータを取得できなかった場合、CM201は、HDD203a等から、リード要求に対応するユーザデータを取得し、取得したユーザデータをキャッシュメモリ201bに複製する。このように、HDD203a等から、リード要求に対応するユーザデータを取得することを以下、ステージングとする。上記したように、リードデータは、HDD203a~HDD203zから取得したデータであるので、キャッシュメモリ201bから、キャッシュデータがなくなったとしても、HDD203a~HDD203zからの再取得が可能なデータである。一方、ライトデータは、ホストからRAID装置200へ書込み要求があったユーザデータがキャッシュメモリに一時的に記憶されたものであり、所定の条件を満たした後、各HDDに書込まれる。このため、ライトデータは、HDD203a~zのいずれにも書き込まれていないデータの可能性がある。次に、図1の説明に戻り、FPGA201cについて説明する。FPGA201cは、所定のプログラムによって制御される集積回路を示し、DMADirectMemoryAccessエンジンを有する。このDMAエンジンは、停電時に、CPU201dを介さずに、キャッシュメモリ201b内のキャッシュデータをNANDフラッシュ201aに退避復元するために必要な機能を付加したものである。なお、DMAエンジンの一例として、停電時に、キャッシュデータを退避するライトDMATRN、退避データをキャッシュメモリ201bに戻すリードDMARCV、NANDフラッシュ201aのイレースやチェックを行うためのコマンド発行DMAUCE等が挙げられる。そして、このDMAは、CPU201dの命令によって、ハードウェア的にデータを転送する。このFPGA201cについて図を用いて説明する。図4は、本実施の形態に示すFPGA201cの構成を示す機能ブロック図である。FPGA201cは、停電発生時、キャッシュメモリ201bの所定データをNANDフラッシュ201aに退避させる処理を実行する。また、FPGA201cは、復電時、CPU201dからの指示に基づき、停電時にNANDフラッシュ201aへ退避させたデータをキャッシュメモリ201bに戻す。そして、FPGA201cは、IFInterface制御部211、アクセスコントローラ212、アクセス管理テーブル213、TRN214、IF制御部215、監視FPGA201hとの通信を行なう監視FPGAIF制御部216、及び、キャッシュメモリへのアクセスを行なうキャッシュIF制御部217とを有する。IF制御部211は、図1に示したCPU201dとTRN214との各種データのやり取りや、このCPU201dと後述するアクセスコントローラ212との各種データのやり取りを制御するインターフェースである。アクセスコントローラ212は、IF制御部211を介して、アクセス管理テーブル213と、CPU201dとの各種データのやり取りを制御する制御部である。アクセス管理テーブル213は、バックアップ管理テーブル213aと、上述した不良ブロックを管理する不良ブロック管理テーブルTBM213bとを有する。まず、バックアップ管理テーブル213aのデータ構造について説明する。図5は、バックアップ管理テーブル213aのデータ構造の一例を示す図である。このバックアップ管理テーブル213aは、図5に示されるように、キャッシュメモリ201bの各テーブルb01~b10の各々に対応する複数の3bitフラグc01~c10を有する。この3bitフラグの各々のビットは、[2]ビットめ、[1]ビットめ、[0]ビットめの3ビットからなり、各々、停電時に、対応するテーブルに記憶されたデータに対し、どのような処理を行なうかを識別するためのフラグであり、本実施の形態における各ビットのフラグは、以下の意味を持つ。まず、3bitフラグの[2]ビットめは、2重書込みDualを行なうか否かを示すビットである。次に、[1]ビットめは、優先度を示すフラグで、フラグが立つもの即ち1が記憶されているものが、立たないものの優先度が低いStayことを示す。更に、[0]ビットめは、バックアップをスキップするかを判断するフラグで、1が立っていれば、停電時、バックアップを行わなくともよいことを示している。このバックアップ管理テーブル213aは、CPU201dによって管理される。次に、図4に示した不良ブロック管理テーブルTBM213bについて説明する。不良ブロック管理テーブルTBM213bは、図2に示したNANDフラッシュ201aの劣化によるライト失敗ProgramFail、消去失敗EraseFail、リード不可ReadFailが発生する不良ブロックを管理するテーブルで、上述したInvalidTableに相当する。そして、CPU201dのファームウェアにて各データが管理される。具体的に図を用いて説明する。図6は、本実施の形態に示す不良ブロック管理テーブルTBM213bのデータ構造の一例を示す図である。本実施の形態における不良ブロック管理テーブルTBM213bは、NANDフラッシュの各ブロックa01~a20に対応した、項目c01~c20を有する。この項目は、各々DirtyInvalidを識別するフラグを有する。Dirtyフラグは、バックアップ時に、ユーザデータの転送エラーが発生し、NANDフラッシュ201aへの書込みが正常に終了しなかったか否かを識別するフラグである。そして、図6に示すようにフラグ1が立っている場合は、Dirtyな状態を示し、フラグ0の場合は、正常にユーザデータの転送が終了した場合を示す。Invalidフラグは、各NANDフラッシュ201aのブロックが不良ブロックであることを識別するためのフラグである。このフラグに1が格納されている項目に対応するNANDフラッシュ201aのブロックは、バックアップに使用することができないことを示している。次に、図4の説明に戻り、TRN214について説明する。TRN214は、キャッシュメモリ201bのユーザデータを退避するDMAを示し、メイン制御部214aと、リード部214bと、エラー制御部214cと、データバッファ部214d1と、CRC生成部214d2と、NANDライト制御部214eとを有する。メイン制御部214aは、不良ブロック管理テーブルTBM213bに記憶されているInvalidフラグや、Dirtyフラグの更新を行う処理部である。このメイン制御部214aは、アドレス指定部214a1、Invalid判定部214a2、及び、Dirty更新部214a3、エラー送信部214a4を有する。アドレス指定部214a1は、不良ブロック管理テーブルTBM213bのアドレス管理を行なう。また、Invalid判定部214a2は、不良ブロック管理テーブルTBM213bに記憶されている各項目のInvalidフラグを元に対象となるNANDフラッシュ201aのブロックが不良か否かを判定する。更に、Dirty更新部214a3は、エラー制御部214cのエラー検出に基づき、不良ブロック管理テーブルTBM213bに記憶されている各項目のDirtyフラグを更新する。また、エラー送信部214a4は、エラー制御部214cのエラー検出結果を、監視FPGAIF制御部216を制御して、監視FPGA201hへ送信するものである。また、メイン制御部214aは、停電発生時に、キャッシュメモリ201bのリード開始をリード部214bに要求する制御も行なう。次に、リード部214bは、停電発生時に、キャッシュメモリ201bのデータの少なくとも一部を、NANDフラッシュ201aへ退避させる制御部である。このリード部214bは、フラグ判定部220と、キャッシュアドレス管理部221と、リード制御部222とを有する。フラグ判定部220は、図4に示すように、バックアップ完了フラグ220aを有する。このバックアップ完了フラグ220aは、図7に示されるように、[0][1][2]の3bitで形成されている。各々のビットは、それぞれ1回目のバックアップ各々のバックアップ処理が完了したかを示すフラグである。フラグ判定部220は、停電時、種類の異なる3回のデータ読み出しを、後述するリード制御部222に指示する。1回目のバックアップ処理は、バックアップ管理テーブル213a内の3bitフラグの[1]ビットめStay及び[0]ビットめskipに0が格納されている3bitフラグに対応した、キャッシュメモリ201bのブロックに記憶されているデータのバックアップ処理である。即ち、1回目のバックアップ処理は、優先順位が低くなく、スキップ対象ではないキャッシュメモリ201bのブロックのデータを、NANDフラッシュ201aへ退避させる処理を行なうものである。また、2回目のバックアップ処理は、バックアップ管理テーブル213a内の3bitフラグの[1]ビットめStayに1が格納されている3bitフラグに対応した、キャッシュメモリ201bのブロックに記憶されているデータのバックアップ処理である。即ち、2回目のバックアップ処理は、キャッシュメモリ201bのブロックのデータを、NANDフラッシュ201aへ退避させる処理を行なうものである。更に、3回目のバックアップ処理は、バックアップ管理テーブル213a内の3bitフラグの[2]ビットめDualに1が格納されている3bitフラグに対応した、キャッシュメモリ201bのブロックに記憶されているデータのバックアップ処理である。3回目のバックアップされるデータは、1回目のバックアップ処理にて既にNANDフラッシュ201aに退避されているデータであるので、2度書込みがなされることにとなる。TBM送信部218は、フラグ判定部220のバックアップ完了フラグ220aの書込みにおいて、[2]3rdフラグが1になったことを検出すると、監視FPGAIF制御部216を制御し、監視FPGA201hに対し、バックアップ管理テーブルTBM213b内のデータ、及び、バックアップが完了したことを示す情報を送信する。キャッシュアドレス管理部221は、キャッシュデータのキャッシュメモリ201bにおける位置を示すキャッシュアドレスを管理し、管理しているキャッシュアドレスをフラグ判定部220に出力する処理部である。リード制御部222は、キャッシュメモリ201bとの通信を行なうキャッシュIF制御部217を介して、フラグ判定部220が指示するキャッシュメモリ201bの各テーブルのキャッシュデータの読み出しを行なう。読み出したデータは、エラー制御部214c、データバッファ部214d1へ出力する。エラー制御部214cは、転送エラーが発生した場合、転送エラーが発生したNANDブロックを識別するアドレスをメイン制御部214aに通知する。メイン制御部214aのDirty更新分214a3は、この通知を受信すると、不良ブロック管理テーブルTBM213bのDirtyフラグの更新を要求する。データバッファ部214d1は、リード制御部222から入力されたキャッシュデータのデータを化け防止のために、XOR排他的論理和演算を行って、パリティデータを生成し、キャッシュデータにXORパリティを付加する。CRC生成部214d2は、CRCCyclicalRedundancyCheckとAIDAreaIDからなる冗長ビットをユーザデータに付加して、付加したユーザデータを保持するためのバッファを有し、そのバッファに記憶されているユーザデータをNANDライト制御部214eに出力する。NANDライト制御部214eは、NANDフラッシュ201aの各ブロックが識別されるアドレスを有し、さらに、IF制御部215を介して、CRC生成部214d2から出力されたユーザデータをNANDフラッシュ201aに出力し、書込みを行う。さらに、NANDライト制御部214eは、キャッシュデータをNANDフラッシュ201aに書込む際に、転送エラーが発生し、書込みに失敗した場合、対応するブロックの識別データをエラー制御部214cに出力する。IF制御部215は、TRN214とNANDフラッシュ201aとの各種データのやり取りを制御するインターフェースである。図1に示したSCUSuperCapacitorUnit201eについて補足する。SCU201eは、電解コンデンサなどの大容量コンデンサを示し、RAID装置200に停電が発生した際に、バッテリーフリーで、CM201に電力を供給する。このSCU201eは、図示しない電源装置が、CM201へ供給する電力を利用して蓄電を行い、停電時、蓄電していた電力を放電する事で、CM201への電力を供給する。上記したように、大容量のコンデンサで形成しているため、一時的に電力の供給が可能ではあるものの、長時間の連続てきな電力供給は困難である。本実施の形態では40秒程度で、電力の供給が出来なくなるものとする。EXPエキスパンダ201fは、CPU201dとHDD203a~HDD203zとの間で送受信されるユーザデータを中継する処理部である。PSUPowerSupplyUnit202は、外部からRAID装置200へ電力を供給する為の装置で、外部からの電力供給がなくなる、即ち、停電が発生した場合、RAID装置200への電力の供給が停止してしまう。この停電時は、SCU201eが放電することにより、RAID装置200へ電力が供給される。HDD203a~HDD203zは、RAIDグループを構成し、高速性や安全性のレベルに応じて、データが振り分けられており、ユーザデータの書込みやプログラムを記憶する記憶媒体ディスク等を有する。また、監視FPGA201hは、MRAM201gへの書込み読み込みを行なうものであり、FPGA201c、CPU201dと直接通信が可能で、FPGA201c、CPU201dからの指示に応じて、MRAM201gへのアクセスを行なう。また、監視FPGA201hは、タイマ201h1を有している。さらに、MRAM201gは、不揮発性のメモリの一種であり、NANDフラッシュに比べ信頼性が高い。MRAM201g内の構成について、図8を用いて説明する。MRAM201gは、図8に示されるように、セッティング領域201g1、完了フラグ記憶領域201g2、エラーログ記憶領域201g3、TBM記憶領域201g4の4つの記憶領域を有する。このうち、完了フラグ記憶領域201g2は、完了フラグを記憶する領域と記憶された際の経過時間後述が記憶される。また、エラーログ記憶領域201g3も、エラーログと共に経過時間が記憶される。さらにTBM記憶領域201g4も、TBM213bのデータと経過時間とが対応付けて記憶される。これらの記憶は、監視FPGA201hによって行われる。次に、本実施の形態のRAID装置の通電時の処理について図9を用いて説明する。まず、本実施の形態のRAID装置200のCPU201dは、図示しないホストからのリクエストを受信するステップS1001と、リクエストの内容がリード要求か否かを判定するS1002。S1002にて、ホストから受信したリクエストがリード要求であった場合、CPU201dは、PSU202のリード要求に含まれるHDD203a~z内のアクセス位置を示すディスクアドレスを取得する。そしてCPU201dは、このディスクアドレスに対応するデータが、キャッシュメモリ201b内の各テーブルb01~b10に記憶されているか検索を行うステップS1003。ここで、CPU201dは、ホストから要求されているデータを、キャッシュメモリ201bのテーブルb01~10のいずれかから取得できた場合ステップS1004、Yes、処理をステップS1008へ移行する。一方、キャッシュメモリ201bからリードデータを取得しなかった場合ステップS1004、No、CPU201dは、キャッシュメモリ201bにホストからのリクエストに含まれるディスクアドレスのデータを記憶する為のテーブルを確保するステップS1005。具体的には、CPU201dは、キャッシュメモリ201b内のテーブルb01~b10に、リクエストに含まれるディスクアドレスのデータを記憶する容量分のデータを記憶するだけの空きテーブルキャッシュデータが入っていないテーブルが存在すれば、それを確保する。もし、空きテーブルが存在しなければ、CPU201dは、各テーブルb01~b10に記憶されているキャッシュデータのうち、記憶した時間が長いデータを記憶したテーブルのデータを、開放して空きテーブルを作ることにより、テーブルの確保を行なう。また、テーブルの開放にあたり、開放するテーブルに対応するバックアップ管理テーブル213aの3bitフラグを全てのビットを0に更新する。そして、CPU201dは、FPGA201cに対し、該ステージングの対象となるテーブルを通知するS1006。この通知を受信したFPGA201cのメイン制御部214aは、キャッシュアドレス管理部221は、対象テーブルに対応したバックアップ管理テーブル213aの3bitフラグの[0]bitめ、即ち、skipフラグを1に更新する。その後、CPU201dは、ステージング処理を行なうS1007。このステージング処理は、具体的には、まず、CPU201dが、Exp201fを介して、HDD203a~HDD203zからリード要求に含まれていたディスクアドレスのデータを取得する。そして、CPU201dは、キャッシュメモリ201bの確保領域に、取得したデータをコピーすることにより実行される。そして、CPU201dは、取得したデータをホストへ送信し、ステップS1001の処理へ移行する。なお、CPU201dは、S1002の、リード要求の判定処理において、PSU202から受信したリクエストが、リード要求でなかった場合S1002:No、このリクエストがライト要求かを判定するS1009。この処理で、Yes、即ち、ライト要求であると判定した場合S1009:Yes、CPU201dは、キャッシュメモリ201bにライト要求に含まれるアドレスと同一アドレスのデータが格納されていないか確認するS1010。ここで、キャッシュデータがないと判定された場合S1010:No、CPU201dは、キャッシュメモリ201bのキャッシュ領域の確保処理を行なうS1011。この処理は、前述したS1005の処理と同様であるので、説明を省略する。次に、CPU201dは、ライト要求が、構成情報などを含む特定領域への書込みかを確認するS1012。この確認において、特定領域への書込みであると判断した場合、CPU201dは、FPGA201cへ通知を行なうS1013。この通知を受信したFPGA201cのメイン制御部214aは、キャッシュアドレス管理部221に、バックアップ管理テーブル213aのキャッシュ確保領域となったテーブルに対応する3bitフラグの[2]ビットめDualのフラグを1に更新させる。そしてCPU201dは、キャッシュ確保領域となったキャッシュメモリ201bのテーブルに対し、PSU202から、Write要求に続けて送られてくるデータを記憶するS1014。そして、CPU201dは、Exp201fを制御し、ホストからWrite要求に続けて送られてくるデータを、HDD203a~zのうち、Write要求に含まれるディスクアドレスに対して書込みを行なうS1016。なお、S1010の処理において、Write要求に含まれるディスクアドレスに含まれるデータが、既にキャッシュメモリ201bに存在した場合、CPU201dは、キャッシュメモリ201bに存在するデータを、ホストからWrite要求に続けて送られてくるデータに更新しS1015、S1016の処理に移行する。CPU201dは、S1016の処理が完了すると、S1001の処理へ移行する。更に、CPU201dは、S1009の処理において、受信したリクエストがライト要求でもないと判断した場合、受信したリクエストがコピー要求か否かを判定するS1017。ここで、CPU201dは、受信したリクエストがコピー要求でもないと判断した場合S1017:No、その他、リクエストに応じた処理を行いS1023、S1001の処理へ移行する。また、CPU201dは、受信したリクエストがコピー要求であると判断した場合S1017:Yes、コピー元となるデータが、キャッシュメモリ201bのテーブルb01~b10のいずれかに記憶されているか、確認するS1018。ここで、コピー元となるデータがキャッシュメモリ201bのテーブルb01~b10のいずれにも記憶されていない場合S1018:No、キャッシュメモリ201bのキャッシュ領域を確保する処理を行なうS1019。この処理は、前述のS1005の同様の処理であるので、説明を省略する。そして、CPU201dは、コピー要求に基づきステージング処理を行ったことを、FPGA201cへ通知するS1020。この通知を受信したFPGA201cのメイン制御部214aは、キャッシュアドレス管理部221に、バックアップ管理テーブル213aのキャッシュ確保領域となったテーブルに対応する3bitフラグの[1]ビットめStayのフラグを1に更新させる。次にCPU201dは、Exp203を制御して、コピー要求で指定されているコピー元のHDDのデータを読み出し、領域確保したキャッシュメモリ201bのテーブルに書き込むS1021。そしてCPU201dは、Exp203を制御して、キャッシュ201に書き込まれたコピー元データをコピー先のHDDへ書込むことによりコピー処理を行なうS1022。なお、CPU201dは、S1018の処理において、コピー元となるデータがキャッシュメモリ201bのテーブルb01~b10のいずれかに記憶されていると判定した場合は、S1019~S1021のステージングに関する処理を行うこと無く、上記したS1022の処理へ移行する。CPU201dは、S1022の処理を完了すると、S1001の処理へと移行する。以上のように、CPU201d、及び、FPGA201cの処理により、バックアップ管理テーブル213aの各3bitフラグc01~c10は、以下のようなステータスとなる。まず、構成情報などが入っている様な重要な領域のキャッシュメモリ201bのテーブルに対応するバックアップ管理テーブル213aの[2]bitDualめは1となる。即ち、このテーブルに記憶されているデータは、停電時のバックアップ時に、二重書き込みの対象となる。また、コピー命令に基づき、ステージングを行ったキャッシュメモリ201bのテーブルに対応するバックアップ管理テーブル213aの[1]bitStayめが1となる。再度コピーをやり直す際に、キャッシュメモリ201bにデータが存在している方が、コピー元のデータを保存しているHDDの負荷を軽くできる。よってコピー元のデータは、キャッシュメモリ201bに保存されていることが好ましい。しかし、そもそもコピー命令の場合、コピー元データは、HDD203a~zのいずれかに存在しており、データが無くなってしまうことがないので、その他の領域のデータより優先度を低くする。更に、read命令に基づき、ステージングを行ったキャッシュメモリ201bのテーブルに対応するバックアップ管理テーブル213aの[0]bitSkipめが1となる。read命令の対象データは、HDD203a~zのいずれかに存在しており、データが無くなってしまうことがない。加えて、Read命令は、Copy命令のように、復電直後に再度同じ命令が繰り返されることがなく、Read命令にて取得したデータがキャッシュメモリ201bに無いことで、復電時に負荷増加してしまう可能性も少ない。よって、本実施の形態において、Read命令を取得した対象データは、バックアップの必要性が小さいとして、Skip、即ち、バックアップを行わないこととしている。なお、上記CPU201dの処理を行った結果、バックアップ管理テーブル213aの全ビットが0を示している3bitフラグは、Write命令に基づくデータをキャッシングしていることを示す。Write命令に基づくデータは、ホストから受信したデータであり、停電のタイミングによっては、HDD203a~zのいずれかに格納される前のデータも含まれている可能性がある。よって、停電時には、HDD203a~zより、優先度を高めてバックアップされる必要がある。よって、後述する停電時の処理において、このWrite命令は、二重バックアップ対象とされている構成情報などの特定情報と共にNANDフラッシュ201aへのバックアップが行われる。次に、これまで説明してきたキャッシュメモリ201b、バックアップ管理テーブル213a、不良ブロック管理テーブルTBM213b、NANDフラッシュ201a、及び監視FPGA201hを用いた、停電発生時に、RAID装置200で行われる処理について図10以降の図を用いて説明する。まず、監視FPGA201hの処理について図10のフローチャートを用い、説明する。監視FPGA201hは、外部電源からの電力の供給が停止したことを検出する検出機能を有している。この監視FPGA201hは、外部電源からの電力の供給停止停電を検出した場合S2001、CPU201dに対して、停電通知を行なうS2002。そして、監視FPGA201hは、タイマ201h1をセットするとともに、MRAM201gに停電発生フラグを書きこむS2003。このタイマ201h1は、上記したように、セットされてからの経過時間を出力するものである。そして、監視FPGA201hは、FPGA201cからエラーログを受信したかを確認するS2004。FPGA201cからエラーログを受信した場合、監視FPGA201hは、MRAM201gのエラーログ記憶領域201g3へ、受信したエラーログと、タイマ201h1の出力値、即ち経過時間とを書きこむS2005。監視FPGA201hは、該書込みが完了、もしくは、S2004の処理において、FPGA201cからのエラーログを受信しなかったと判断した場合、FPGA201cから、TBM213bを受信したかを確認するS2006。ここで、TBM213bを受信したかを受信したと判断した場合、監視FPGA201hは、受信したTBM213bと、タイマ201h1の出力値、即ち経過時間とを書きこむS2007。監視FPGA201hは、該書込みが完了、もしくは、S2006の処理において、FPGA201cからのTBM213bを受信しなかったと判断した場合、タイマ201h1の値が30秒以上経過したことを示していないか確認するS2008。ここで、30秒経過していないと判断した場合、監視FPGA201hは、S2004の処理へ移行する。また、30秒経過していないと判断した場合、監視FPGA201hは、装置の電源を切断する処理を行いS2009、処理を完了する。次に、CPU201dの処理について、図11のフローチャートを用いて説明する。CPU201dは、他の処理と並行しながら監視FPGA201hからの停電通知があったかを判断しているS2050、S2051。ここで、監視FPGA201hからの停電通知を受信したと判断した場合、FPGA201cへ停電処理のシーケンスを起動すべく、指示を行なった後S2052、Sleepモードへ移行するS2053。このように、通電時に本装置におけるキャッシュメモリ201bの管理を含むRAIDの制御を行なうCPU201dは、監視FPGA201hからの停電通知を行なうと、FPGA201cの停電処理のシーケンス起動指示を行なうのみで、実質的な退避処理は行わない。本実施の形態において、この退避処理は、FPGA201c及び監視FPGA201hによって行われる。このようにする事で、停電時には、消費電力の大きいCPU201dを使用せずにキャッシュメモリ201b上のデータの退避処理を行ない、装置全体の消費電力を下げることで、SCU201eに蓄電された電力をより長時間使用することを可能としている。次に、本実施の形態において、停電が起きる直前の、キャッシュメモリ201b、バックアップ管理テーブル213a、FPGAフラッシュ201a、不良ブロック管理テーブルTBM213b、及びバックアップ完了フラグ220aの状態について、図12を用いて、補足説明する。なお、図12の状態は、あくまで一例であり、通電時は、キャッシュメモリ201bに記憶されたデータの内容は、随時更新されており、停電直前に、必ず図12になるというわけではない。まず、上記処理によって、バックアップ管理テーブル213aの各3bitフラグc01~c10は、対応するキャッシュメモリ201bの各テーブルb01~b10に記憶されたデータの種別に応じて、内容が決定している。本実施の形態の場合、図12に示すように、キャッシュメモリ201bのテーブルb01に構成情報が記憶されているため、対応する3bitテーブルc01の[2]bitめDualには1が格納されている。また、Copy命令に基づき取得された、テーブルb04及びb10のデータに対応する3bitフラグc04,c10の1bitめのフラグStayには1が格納されている。更に、Read命令に基づき取得された、テーブルb02及びb08のデータに対応する3bitフラグc02,c08の0bitめのフラグSkipには1が格納されている。また、FPGAフラッシュ201の不良管理テーブル213bの項目d05の[Invalid]フラグには1が格納されている。即ち、この項目d05に対応するNANDフラッシュ201aのブロックa05は、不良ブロックであることを示している。この状態におけるFPGA201cの処理について、図13を用いて説明する。上記したように、監視FPGA201hは、停電を検出すると、CPU201dへ停電通知を送信し、これを受信したCPU201dは、この停電通知に応じて、FPGA201cへ停電処理のシーケンス起動を指示する。FPGA201cは、他の処理と並行して、この停電処理のシーケンス起動指示を受信したかを判断しているS3000,S3001。そして、まず、FPGA201cは、バックアップ管理テーブル213aの3bitフラグc01~c10のうち、[1]bitめStay、[0]bitめSkipが共に0となっている領域のキャッシュメモリ201bのデータを、NANDフラッシュ201aへ書き込む処理を行なうS3002。次に、メイン制御部214aは、リード制御部222に、バックアップ管理テーブル213aの3bitフラグc01~c10のうち、[1]bitめStayが共に1となっている領域のキャッシュメモリ201bのデータを、NANDフラッシュ201aへ書き込む処理を行なうS3003。さらに、FPGA201cは、バックアップ管理テーブル213aの3bitフラグc01~c10のうち、[2]bitめDualが1となっている領域のキャッシュメモリ201bのデータを、NANDフラッシュ201aへ書き込む処理を行なうS3004。そして、これらの処理が完了すると、FPGA201cは、不良ブロック管理テーブルTBM213b内のデータを監視FPGA201hへ送信しS3005、処理を完了する。なお、S3002,S3003、S3004の処理は、対象となるキャッシュメモリ201bのデータの領域がことなる以外は、同じ処理を行っている。この処理について、図14を用いて説明する。まず、FPGA201cのメイン制御部214aは、リード制御部222に、バックアップ管理テーブル213aの3bitフラグc01~c10を参照して、対象となるキャッシュメモリ201bのデータを読み出せるS4001。例えば、図13のS3002の処理において、FPGA201cは、3bitテーブル213aの[1]bitめStay、[0]bitめSkipが共に1ではないものに対応する、キャッシュメモリ201bのデータを読出させる。図12の例では、バックアップ管理テーブル213aのc01,c03,c05,c06,c07,及びc09が該当するので、リード制御部222は、キャッシュメモリ201bのテーブルb01、b03、b05、b06、b07、及びb09のデータを読み出す事になる。リード制御部222で読み出されたデータは、CRC制御部214d2を経由することにより、CRCコードが付与されるS4002。そしてCRCコードが付与されたデータは、図15に示されるように、NANDライト制御部214eが、不良ブロック管理テーブルが参照して、[0]Invalidフラグもしくは[1]dirtyフラグが[1]となっていないブロックに書き込みを行なうS4003。なお、この際、CRCコード付与と共に、読み出し元であるキャッシュメモリ201bのテーブル名b01などを付与しても良い。このようにすれば、復電時、キャッシュの復元を行なう際に、FPGA201cは、この付与されたテーブル名を参照して、キャッシュメモリ201bの各テーブルb01~b10の各々に、停電時に格納されていたデータと同じデータを再格納させることが可能となる。この際、NANDライト制御部214eは、NANDフラッシュ201aのブロックに書き込みを行う度に、NANDフラッシュ内部状態を確認し、書き込みエラーが起きていないかの検証を行なうS4004。ここで、書き込んだデータにエラーがあると判定された場合S4005、エラー送信部214a4は、監視FPGAIF制御部216を制御して、監視FPGA201hへ、どのブロックのエラーかを示すエラーログを送信するS4006。また、この際、NANDライト制御部214eは、不良ブロック管理テーブルのエラーを起こしたNANDフラッシュ201aのブロックに対応する領域の[1]Invalidを1に更新しS4007、S4003へ移行する。上記したようにS4003の処理では、NANDライト制御部214eが、不良ブロック管理テーブルが参照して、[0]Invalidフラグもしくは[1]dirtyフラグが[1]となっていないブロックに書き込みを行なう為、エラーを起こしたブロックへの書込みは行われない事となる。例えば、図15に示されるように、キャッシュメモリ201bのテーブルb09のデータをNANDフラッシュ201aのブロックa07に記憶させ、検証でエラーが検出された場合、NANDライト制御部214eは、次のブロックa08に再書き込みを行うことになる。そして、データが正常に書き込めた場合、メイン制御部214aは、キャッシュメモリ201bの対象データがすべて書き込まれたかを確認しS4008、書きこまれていなければ、S4001へ移行し、キャッシュメモリ201bから、次のデータを読み出し、すべてのデータの転送が行われるまで同様の処理を行う。なお、S4007にてキャッシュメモリ201bの対象データがすべて書き込まれたと判断した場合、S3002,S3003,S3004において、メイン制御部214aは、以下の処理を行う。S3002の場合、メイン制御部214aは、図15に示されるように、バックアップ完了フラグ220aの[0]1stBitめのフラグを1にする。S3003の場合、メイン制御部214aは、図16に示されるように、バックアップ完了フラグ220aの[1]2ndBitめのフラグを1にする。S3004の場合、メイン制御部214aは、図17に示されるように、バックアップ完了フラグ220aの[3]3rdBitめのフラグを1にする。なお、この処理では、Skipフラグに1が格納された3bitフラグc02,c08に対応するキャッシュメモリ201bのテーブルb02,b08に格納されたデータは、NANDフラッシュ201aへの格納は行われない。即ち、これらのデータのバックアップは行われない。以上のように、本実施の形態では、停電発生時にキャッシュデータをNANDフラッシュ201aへバックアップする際、3bitフラグに基づいて、キャッシュデータのバックアップの優先順位及びバックアップの可否の判定を行っている。このように構成することで、停電時、構成情報などの重要情報や、Writeデータ等のHDD203a~zのいずれにも記憶されない可能性があるデータを、先にNANDフラッシュ201aへ格納させることが可能となる。上記したようにSCU201eは、一時的にしか電力を供給できないため、先にバックアップを行なうほうが、データのバックアップの確実性が増すことになる。即ち、本実施の形態では、重要なデータほど優先的にバックアップされることとなる。更に、特に重要なデータに対しては、他のデータのバックアップのあと、二重書き込みを行なうことにより、より確実なバックアップを可能としている。なお、本実施の携帯において、二重書き込みは、Copy命令など、バックアップ優先度が低いデータの格納迄終わったあとに、2回目の書込みを行っている。これは、停電発生から早い時点で、かつ、一度はCRCによる書込みチェックを行った上でデータをNANDフラッシュ201aに格納させており、1回である程度確実に保存が出来ているため、2回目書き込みは、万が一、そのデータが消失した場合の保険として格納させるものであるていどの意味合いがあるためである。なお、本実施の形態では、FPGA201cの処理によりバックアップ処理を行っている。これは、FPGA201cの高速性と省電力性によるものである。CPU201d、FPGA201c、及び、監視FPGA201hについて、上記してきた処理が行われた場合について図18を使用して説明する。まず、監視FPGA201hは、停電を検出すると、CPU201dへ停電通知を送信するS5001とともに、タイマ201h1を起動するS5002。また、監視FPGA201hは、停電が発生した事を示す停電発生フラグをMRAM201gへ記憶する。これら処理は、図10に示されるS2001~S2003の処理に基づく。監視FPGA201hからの停電通知を受信したCPU201dS5003は、FPGA201cへシーケンス起動の指示を行ったあとS5005、Sleepモードへ移行するS5006。これらの処理は、上記した図11の処理に基づくものである。このシーケンス起動指示を受信したFPGA201cは、NANDフラッシュ201aへの書込検証を行うS5007。この検証時、書き込みエラーを検出した場合S5008、FPGA201cは、監視FPGA201hにエラーログを送信しS5009、不良ブロック管理テーブルTBM213bを更新するS5011。これらの処理は、図14のフローチャートの処理に基づくものである。このエラーログを受信した監視FPGA201hは、タイマ201h1の経過時間とともに該エラーログをMRAM201gへ書きこむS5010。この処理は、S2004,S2005の処理に基づく。その後、FPGA201cによる再書き込みなどによりS5011~S5013、キャッシュデータ201bの書込が完了すると、FPGA201cは、不良ブロック管理テーブルTBM213bを、監視FPGA201hへ送信するS5014。これらの処理は、図10のS2006、S2007の処理に基づく。この不良ブロック管理テーブルTBM213bを受信した監視FPGA201hは、タイマ201h1の経過時間と共に、該不良ブロック管理テーブルTBM213bをMRAM201gへ書きこむS5015。そして、監視FPGA201hは、書込が完了したことを示す完了フラグをMRAM201gへ書きこむS5016。その後、監視FPGA201hは、タイマ201h1が、30秒したことを検出するとS5017、装置の電源をOFFにするS5018。これらの処理は、図10のS2008,S2009の処理に基づくものである。次に、通電が再開された場合についての処理について、図19を用いて説明する。まず、CPU201dは、電源の再投入に伴い起動するとS6001、MRAM201gを参照して、停電発生フラグが記憶されているかを確認するS6002。ここで、フラグが記憶されていなければ、図19に示される、それ以降の処理は行わず、通常の起動を行うこととなる。次に、CPU201dは、MRAM201gに、完了フラグが記憶されているかを確認するS6003。ここで、完了フラグが記憶されていない場合は、キャッシュの書込に失敗したとして、キャッシュメモリ201bの復元を行わず、通常の起動を行う。また、完了したと判断した場合、MRAM201gに記憶している不良ブロック管理テーブルTBM213bをFPGA201cへ転送するS6004。ここで、不良ブロック管理テーブルTBM213bを受信したFPGA201cは、受信した不良ブロック管理テーブルTBM213bを格納するS6005。そして、CPU201dからのキャッシュメモリへの書込指示をFPGA201cに指示するとS6006、FPGA201cが、不良ブロック管理テーブルTBM213bを参照しながら、適宜NANDフラッシュ201aから、記憶しているキャッシュデータをCPU201dへ転送するS6007。CPU201dは、この転送されたキャッシュデータを、キャッシュメモリ201bに書きこむS6008。そして、キャッシュメモリ201bへ書込が完了するとS6009、CPU201dは、監視FPGA201hへ、MRAM201gに記憶されている内容停電ログをすべて消去する指示を行うS6010。この処理を受信した監視FPGA201hは、MRAM201gの停電時のログ内容を消去するS6011。そして、CPU201dは、初期化が完了したことを示すフラグを監視FPGA201hへ転送しS6012、監視FPGA201hがこのフラグを記憶するS6013ことで、該復電処理は完了する。この情報を受信した監視FPGA201hは、該フラグを記憶する。以上によって、復電時のキャッシュの復元が行われる。以上のように、本実施の形態では、CPU201dを、停電時のキャッシュメモリ201bのNANDフラッシュ201aへの転送に利用しない。CPU201dは、汎用プロセッサを使用することが多く、RAIDを制御するための複雑な処理な処理を可能としている。しかしながら、複雑な処理が可能である反面、消費電力が大きいことが多い。そこで、本実施の形態のように、FPGA201c、監視FPGA201hのよう別途停電時用の構成要素を有していれば、停電時に、CPU201dを使用しなくとも、MRAM201gへの書込を行うことができる。このFPGA201cや監視FPGA201hは、消費電力の関係上、高速化したり、複雑な処理を行わせることが困難である。そのため、従来ではCPU201dが、停電時に行っていた、エラーログの生成などの複雑な処理を行うことができない。このエラーログは、停電時のFPGA201cの書込に当たり、新たに不良と判断されたブロックが、どのブロックかなどの情報を記憶しているテーブルである。しかしながら、ファイルをまとめて保存するような複雑な処理を行わずとも、同様の記憶を行わせるために、本実施の形態では、監視FPGA201hに、タイマ201h1を持たせると共に、単純に、FPGA201cから受信した経過時間とともに記憶させておくようにしている。これにより、1つのファイルにまとめるような複雑な処理を行わずとも、MRAM201gに記憶されたエラーログを参照すれば、新たにNANDフラッシュ201aでエラー検出されたブロックを確認することも可能となる。"