(57)【要約】【課題】復電処理中に停電が発生した場合に、キャッシュデータのロストを精度よく防止することを課題とする。【解決手段】復電処理内のイレース実行中に停電が発生した場合には、イレースを中断させる。そして、イレースが中断されるまでの間にフラッシュメモリ２３０から消去されたバックアップデータに対応するキャッシュメモリ２２０内のデータを、イレースにより消去されなかったバックアップデータが書き込まれているフラッシュメモリ２３０内の最終ブロックの次ブロックからリード転送（再バックアップ）する。【選択図】図１
2010277194.tif 000002
【特許請求の範囲】
【請求項１】
停電発生時に、第１の記憶部に記憶されているデータを第２の記憶部が有するデータブロックに書き込んでバックアップする停電処理部と、
停電からの復帰に伴って、前記第２の記憶部内のバックアップデータを前記第１の記憶部にリストアするとともに、前記第２の記憶部が有するデータブロックの先頭から最後までに渡って消去処理を実行する復電処理部と、
前記復電処理部による前記消去処理の実行中に停電が発生した場合に、前記消去処理を中断させる消去処理中断部と、
前記消去処理中断部により前記消去処理が中断されるまでの間に前記第２の記憶部から消去されたバックアップデータに対応する第１の記憶部内のデータを、前記消去処理により消去されなかったバックアップデータが書き込まれている前記第２の記憶部内の最終ブロックの次ブロックから書き込んで再バックアップする再バックアップ処理部と
を有することを特徴とする記憶装置。
【請求項２】
前記復電処理部は、前記再バックアップ処理部による再バックアップが完了した後、前記再バックアップ処理部により再バックアップされたバックアップデータから、前記第１の記憶部に順次リストアすることを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記再バックアップされたバックアップデータを含むバックアップデータのリストア後、前記復電処理部による消去処理実行中に停電が発生した場合には、前記消去処理中断部は前記消去処理を中断させ、
前記再バックアップ処理部は、前記消去処理中断部により前記消去処理が中断されるまでの間に前記第２の記憶部から消去されたバックアップデータに対応する第１の記憶部内のデータを、前記消去処理により消去されなかった再バックアップデータが書き込まれている前記第２の記憶部内の最終ブロックの次ブロックから書き込んで再バックアップすることを特徴とする請求項２に記載の記憶装置。
【請求項４】
停電発生時に、第１の記憶部に記憶されているデータを第２の記憶部が有するデータブロックに書き込んでバックアップする停電処理ステップと、
停電からの復帰に伴って、前記第２の記憶部内のバックアップデータを前記第１の記憶部にリストアするとともに、前記第２の記憶部が有するデータブロックの先頭から最後までに渡って消去処理を実行する復電処理ステップと、
前記復電処理ステップによる前記消去処理の実行中に停電が発生した場合に、前記消去処理を中断させる消去処理中断ステップと、
前記消去処理中断ステップにより前記消去処理が中断されるまでの間に前記第２の記憶部から消去されたバックアップデータに対応する第１の記憶部内のデータを、前記消去処理により消去されなかったバックアップデータが書き込まれている前記第２の記憶部内の最終ブロックの次ブロックから書き込んで再バックアップする再バックアップ処理ステップと
を含んだことを特徴とするデータ処理方法。
【請求項５】
停電発生時に、第１の記憶部に記憶されているデータを第２の記憶部が有するデータブロックに書き込んでバックアップする停電処理手順と、
停電からの復帰に伴って、前記第２の記憶部内のバックアップデータを前記第１の記憶部にリストアするとともに、前記第２の記憶部が有するデータブロックの先頭から最後までに渡って消去処理を実行する復電処理手順と、
前記復電処理手順による前記消去処理の実行中に停電が発生した場合に、前記消去処理を中断させる消去処理中断手順と、
前記消去処理中断手順により前記消去処理が中断されるまでの間に前記第２の記憶部から消去されたバックアップデータに対応する第１の記憶部内のデータを、前記消去処理により消去されなかったバックアップデータが書き込まれている前記第２の記憶部内の最終ブロックの次ブロックから書き込んで再バックアップする再バックアップ処理手順と
をコンピュータに実行させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記憶装置、データ処理方法およびデータ処理プログラムに関する。
【背景技術】
【０００２】
従来より、記憶装置において、電力の供給が絶たれている状態のときに、データをバックアップする技術が提案されている（例えば、特許文献１参照）。
【０００３】
また、複数の記憶装置で構成されるＲＡＩＤ装置（Redundant Arrays of Inexpensive (もしくはIndependent) Disks）には、停電発生時のデータ保全を目的とした停電処理および復電処理というものが存在する。停電処理は、停電発生時にキャッシュデータをフラッシュメモリへバックアップする処理である。復電処理は、フラッシュメモリにバックアップしたデータをキャッシュにリストアする処理である。
【０００４】
停電処理および復電処理について、以下に簡単に説明する。停電が発生すると、ＲＡＩＤ装置の制御部は、コンデンサ（スーパーキャパシタ）に充電される電力によって、キャッシュデータをフラッシュメモリへバックアップする停電処理を実行する（停電処理）。そして、停電が復旧して復電されると、ＲＡＩＤ装置の制御部は、フラッシュメモリにバックアップしたデータをキャッシュにリストアする（復電処理）。さらに、電力が豊富にある復電処理の中で、フラッシュメモリ内の全データブロックについてデータを消去する処理（イレース処理）を実行する。
【０００５】
また、復電処理中に、停電が発生した場合には、イレース処理後に停電処理を実施する必要があるが、コンデンサで充電されている電力だけでは、イレース処理完了後に停電処理を実施することは難しく、キャッシュデータのロストに繋がってしまう。そこで、例えば、図８に示すように、ＲＡＩＤ装置を二つの制御部（ＣＰＵ）が分散配置された冗長構成として、一方のコントローラによる復電処理の完了後に、もう一方のコントローラにより復電処理を実施することで対応する技術も提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４１３１１１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、ＲＡＩＤ装置内に二つの制御部を用意して、復電処理中に発生した停電に対処する技術では、単一の制御部を備えたＲＡＩＤ装置には適用できないので、キャッシュデータのロストを防止できない。
【０００８】
また、ＲＡＩＤ装置内の制御部を冗長化しても、コンデンサ（スーパーキャパシタ）に充電される電力が、イレース処理完了後に停電処理を実施するのに必ずしも十分であるとはいえない。このようなことから、キャッシュデータのロストを防止できない場合が考えられる。
【０００９】
開示の技術は、上記に鑑みてなされたものであって、復電処理中に停電が発生した場合に、キャッシュデータのロストを精度よく防止することが可能な記憶装置、データ処理方法およびデータ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示する技術は、一つの態様において、停電発生時に、第１の記憶部に記憶されているデータを第２の記憶部が有するデータブロックに書き込んでバックアップする停電処理部と、停電からの復帰に伴って、前記第２の記憶部内のバックアップデータを前記第１の記憶部にリストアするとともに、前記第２の記憶部が有するデータブロックの先頭から最後までに渡って消去処理を実行する復電処理部と、前記復電処理部による前記消去処理の実行中に停電が発生した場合に、前記消去処理を中断させる消去処理中断部と、前記消去処理中断部により前記消去処理が中断されるまでの間に前記第２の記憶部から消去されたバックアップデータに対応する第１の記憶部内のデータを、前記消去処理により消去されなかったバックアップデータが書き込まれている前記第２の記憶部内の最終ブロックの次ブロックから書き込んで再バックアップする再バックアップ処理部とを有する。
【発明の効果】
【００１１】
本願の開示する技術の一つの態様によれば、復電処理中に停電が発生した場合に、キャッシュデータのロストを精度よく防止できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る記憶装置の構成を示す図である。
【図２】図２は、実施例１に係る記憶装置による処理の流れを示す図である。
【図３】図３は、実施例１に係る記憶装置による処理を説明するための図である。
【図４】図４は、実施例１に係る記憶装置による処理の流れを示す図である。
【図５】図５は、実施例１に係る記憶装置による処理を説明するための図である。
【図６】図６は、実施例２に係る記憶装置による処理を説明するための図である。
【図７】図７は、実施例２に係るデータ処理プログラムを実行するコンピュータを示す図である。
【図８】図８は、従来技術を説明するための図である。
【発明を実施するための形態】
【００１３】
以下に、図面を参照しつつ、本願の開示する記憶装置、データ処理方法およびデータ処理プログラムの一実施形態について詳細に説明する。なお、記憶装置、データ処理方法およびデータ処理プログラムの一実施形態として後述する実施例１により、本願が開示する技術が限定されるものではない。
【実施例１】
【００１４】
実施例１に係る記憶装置は、停電発生時に、キャッシュメモリに記憶されているデータをフラッシュメモリが有するデータブロックに書き込んでバックアップする停電処理を実行する。さらに、停電からの復帰に伴って、フラッシュメモリ内のバックアップデータをキャッシュメモリにリストアするとともに、フラッシュメモリが有するデータブロックの先頭から最後までに渡ってイレースする復電処理を実行する。実施例１に係る記憶装置は、停電処理および復電処理により、電力の供給が絶たれている状態のときに、装置内のデータをバックアップすることを概要とする。
【００１５】
そして、実施例１に係る記憶装置の骨子は、以下に説明する点にある。すなわち、復電処理内のイレース実行中に停電が発生した場合には、イレースを中断させる。そして、イレースが中断されるまでの間にフラッシュメモリから消去されたバックアップデータに対応するキャッシュメモリ内のデータを、イレースにより消去されなかったバックアップデータが書き込まれているフラッシュメモリ内の最終ブロックの次ブロックから書き込んで再バックアップする。以下、実施例１に係る記憶装置について具体的に説明する。
【００１６】
［記憶装置の構成（実施例１）］
図１は、実施例１に係る記憶装置の構成を示す図である。なお、同図には、実施例１に係る記憶装置を説明する上で必要となる処理機能部のみを図示している。
【００１７】
同図に示すように、実施例１に係る記憶装置２００は、ホストコンピュータ１００と通信可能な状態に接続される。そして、記憶装置２００は、入出力制御部２１０と、キャッシュメモリ２２０と、フラッシュメモリ２３０と、制御部２４０とを有する。
【００１８】
入出力制御部２１０は、ホストコンピュータ１００との間でやり取りされる各種情報の入出力を制御する。例えば、入出力制御部２１０は、ホストコンピュータ１００から送信されたデータ処理要求の入力を制御する。
【００１９】
キャッシュメモリ２２０は、制御部２４０による処理において使用される頻度の高いデータを蓄え、制御部２４０からの高速なデータの読出しを可能とする。フラッシュメモリ２３０は、キャッシュメモリ２２０に蓄えられているデータをバックアップする。
【００２０】
制御部２４０は、所定の制御プログラム、各種の処理手順などを規定したプログラムおよび所要データをキャッシュメモリ２２０から読込んで、記憶装置２００の制御やデータの演算、加工等の種々の処理を実行する。そして、制御部２４０は、図１に示すように、レジスタ２４１、停電処理部２４２、復電処理部２４３およびライト転送処理部２４４を有する。
【００２１】
レジスタ２４１は、停電処理部２４２、復電処理部２４３およびライト転送処理部２４４による処理に必要なデータを記憶する。例えば、レジスタ２４１は、フラッシュメモリ２３０内のリード転送（リストア）完了アドレス（ＲＤ＃＿ＰＮＴ）の設定を復電処理部２４３から受け付けて記憶する。
【００２２】
また、レジスタ２４１は、復電処理部２４３によるイレース処理中に停電が発生した場合に、イレース処理を中断させるためのビット情報の設定を復電処理部２４３から受け付けて記憶する。
【００２３】
また、レジスタ２４１は、復電処理部２４３によるイレース処理中が中断された場合に、フラッシュメモリ２３０内のイレース処理完了位置を示すイレース完了アドレス（ＥＲＳ＃＿ＰＮＴ）の設定を復電処理部２４３から受け付けて記憶する。
【００２４】
また、レジスタ２４１は、フラッシュメモリ２３０からイレースされてしまったデータを再バックアップするライト転送処理用のディスクリプタの設定を復電処理部２４３から受け付けて記憶する。例えば、ライト転送処理用のディスクリプタは、フラッシュメモリ２３０内のライト転送開始アドレス（ＷＴ＃＿ＦＬＡ）と、フラッシュメモリ２３０への転送サイズ（イレースされてしまったデータブロック分）とを含む。
【００２５】
また、レジスタ２４１は、ライト転送処理開始時に、ライト転送処理部２４４から設定されるビット情報（例えば、「１」）を記憶する。
【００２６】
停電処理部２４２は、停電発生時に、キャッシュメモリに記憶されているデータをフラッシュメモリが有するデータブロックに書き込んでバックアップする停電処理を実行する。
【００２７】
復電処理部２４３は、停電からの復帰に伴って、フラッシュメモリ２３０内のバックアップデータをキャッシュメモリ２２０にリストアするとともに、フラッシュメモリ２３０が有するデータブロックの先頭から最後までに渡ってイレースする復電処理を実行する。
【００２８】
また、復電処理部２４３は、復電処理内のイレース処理実行中に停電が発生した場合に、イレース処理を中断して、イレース処理により消去されたデータを再度バックアップ（ライト転送）するためのディスクリプタを生成して、レジスタ２４１に設定する。
【００２９】
そして、復電処理部２４３は、ライト転送処理部２４４によるライト転送が完了すると、再復電処理を実行する。なお、復電処理部２４３による具体的な処理内容については、後述する記憶装置２００の処理の流れ（図２〜図５等）の中で説明する。
【００３０】
ライト転送処理部２４４は、復電処理部２４３によりレジスタ２４１に設定されたライト転送用のディスクリプタに基づいて、イレース処理で消去されたデータをキャッシュメモリ２２０からフラッシュメモリ２３０に再度バックアップ（ライト転送）する。
【００３１】
また、プログラムＡおよびプログラムＢは、非特権モードで動作し、互いに異なる物理アドレス領域に対応付けられた仮想アドレス空間を有する。共有メモリは、プログラムＡおよびプログラムＢが有する各仮想アドレス空間の一部が対応付けられた同一の物理アドレス領域である。
【００３２】
［記憶装置の処理（実施例１）］
以下、図を参照しつつ、実施例１に係る記憶装置による処理を説明する。図２は、実施例１に係る記憶装置による処理の流れを示す図である。図３は、実施例１に係る記憶装置による処理を説明するための図である。図４は、実施例１に係る記憶装置による処理を説明するための図である。図５は、実施例１に係る記憶装置による処理を説明するための図である。
【００３３】
［イレース処理中断、ライト転送処理］
まず、図２および図３を用いて、実施例１に係るイレース中断、ライト転送処理の流れを説明する。図２に示すように、停電からの復帰に伴い、フラッシュメモリ２３０からキャッシュメモリ２２０へのバックアップデータのリストア（リード転送）が完了すると（ステップＳ１肯定）、復電処理部２４３は、フラッシュメモリ２３０のイレース処理を開始する（ステップＳ２）。
【００３４】
そして、復電処理部２４３は、イレース処理中における停電の発生を監視する（ステップＳ３）。停電の発生を確認すると（ステップＳ３肯定）、復電処理部２４３は、イレース処理を中断させるためのビット情報をレジスタ２４１に設定して、イレース処理を中断する（ステップＳ４）。この時、復電処理部２４３は、停電発生中にイレース処理中であったフラッシュメモリ２３０内のデータブロックのイレースを完了させる。そして、図３に示すように、フラッシュメモリ２３０内のイレース処理完了位置を示すイレース完了アドレス（ＥＲＳ＃＿ＰＮＴ）をレジスタ２４１に設定する。
【００３５】
イレース処理の中断後、復電処理部２４３は、ライト転送用のディスクリプタを生成する（ステップＳ５）。例えば、図３に示すように、復電処理部２４３は、リード転送（リストア）完了アドレス（ＲＤ＃＿ＰＮＴ）をライト転送開始アドレス（ＷＴ＃＿ＦＬＡ）とする。すなわち、イレースにより消去されなかったバックアップデータが書き込まれているフラッシュメモリ２３０内の最終ブロックの次ブロックからライト転送を開始させる。
【００３６】
さらに、復電処理部２４３は、図３に示すように、イレース完了アドレス（ＥＲＳ＃＿ＰＮＴ）に基づいて、フラッシュメモリ２３０からイレースされたデータブロック分に相当する転送サイズを算出する。なお、データの読み書きに不具合を及ぼす不良ブロックがある場合には、不良ブロック分を加味して転送サイズを算出してもよい。不良ブロックの情報は、図３に示す「ＢＬＫＬ」に格納されている。
【００３７】
そして、復電処理部２４３は、フラッシュメモリ２３０内のライト転送開始アドレス（ＷＴ＃＿ＦＬＡ）と、フラッシュメモリ２３０への転送サイズ（イレースされてしまったデータブロック分）とを含むライト転送用のディスクリプタを生成する。
【００３８】
復電処理部２４３は、生成したライト転送用のディスクリプタをレジスタ２４１に設定する（ステップＳ６）。
【００３９】
ライト転送処理部２４４は、復電処理部２４３によりレジスタ２４１に設定されたライト転送用のディスクリプタに基づいて、イレース処理で消去されたデータをキャッシュメモリ２２０からフラッシュメモリ２３０に再度バックアップするためのライト転送を実行する（ステップＳ７）。
【００４０】
ここで、ステップＳ３の説明に戻ると、イレース処理中に停電の発生を確認できなかった場合には（ステップＳ３否定）、復電処理部２４３は、イレース処理の完了とともに処理を終了する。
【００４１】
復電処理部２４３は、ライト転送処理部２４４によるライト転送が完了すると、再復電処理（図４および図５参照）を実行して（ステップＳ８）、処理を終了する。
【００４２】
［再復電処理］
続いて、図４および図５を用いて、ライト転送処理完了後の再復電処理の流れを説明する。図４に示すように、復電処理部２４３は、ライト転送処理部２４４によるライト転送が完了すると、イレース処理に伴ってライト転送された領域ａ（図５参照）のバックアップデータからリード転送処理を実行する（ステップＳ１）。なお、復電処理部２４３は、ライト転送処理部２４４によるライト転送によって、キャッシュメモリ２２０から領域ａにバックアップされたデータの先頭ブロックのアドレス（ＲＣＶ＃＿ＦＬＡ（１度目））を記憶しており、この領域ａの先頭ブロックのアドレスおよび領域ａのサイズに従ってリード転送処理を実行する。
【００４３】
そして、復電処理部２４３は、領域ａのリード転送完了を待機して（ステップＳ２）、領域ａのリード転送が完了すると（ステップＳ２肯定）、続いて、復電処理部２４３は、領域ｂのバックアップデータについてリード転送処理を実行する（ステップＳ３）。領域ｂのバックアップデータは、イレース処理が停電に伴って中断されることにより、消去されずに残存したフラッシュメモリ２３０内のバックアップデータである。なお、復電処理部２４３は、イレース処理の中断によりフラッシュメモリ２３０の領域ｂに残存したデータの先頭ブロックのアドレス（ＲＣＶ＃＿ＦＬＡ（２度目））を記憶しており、この領域ｂの先頭ブロックのアドレスおよび領域ｂのサイズに従ってリード転送処理を実行する。
【００４４】
そして、復電処理部２４３は、領域ｂのリード転送完了を待機して（ステップＳ４）、領域ｂのリード転送が完了すると（ステップＳ４肯定）、フラッシュメモリ２３０のイレース処理を実行して（ステップＳ５）、処理を終了する。具体的には、停電発生によりイレースが中断されたフラッシュメモリ２３０のアドレス（ＥＲＳ＿ＰＮＴ、図５参照）から、引き続いて、フラッシュメモリ２３０の全域をイレースする。
【００４５】
再復電処理は、領域ａの先頭ブロックのアドレス（ＲＣＶ＃＿ＦＬＡ（１度目））および領域ａのサイズ、領域ｂの先頭ブロックのアドレス（ＲＣＶ＃＿ＦＬＡ（２度目））および領域ｂのサイズに従って、イレース処理に伴ってキャッシュメモリ２２０からライト転送された領域ａ、イレース処理が停電に伴って中断されることにより消去されずにフラッシュメモリ２３０に残存した領域ｂの順にバックアップデータをリード転送する。このような順序で処理を実行することで、イレース処理中に停電が発生しない場合と同様に、フラッシュメモリ２３０からキャッシュメモリ２２０へのリストアを実現する。
【００４６】
［実施例１による効果］
上述してきたように、実施例１によれば、復電処理内のイレース実行中に停電が発生した場合には、イレースを中断させる。そして、イレースが中断されるまでの間にフラッシュメモリ２３０から消去されたバックアップデータに対応するキャッシュメモリ２２０内のデータを、イレース処理により消去されなかったバックアップデータが書き込まれているフラッシュメモリ２３０内の最終ブロックの次ブロックからライト転送（再バックアップ）する。
【００４７】
このようなことから、単一のコントローラを備えたＲＡＩＤ装置等の記憶装置において、復電処理中に停電が発生した場合に、キャッシュデータのロストを精度よく防止できる。
【００４８】
また、イレース処理により消去されなかったバックアップデータが書き込まれているフラッシュメモリ２３０内の最終ブロックの次ブロックから書き込んで再バックアップするので、フラッシュメモリ２３０内のライト回数やイレース回数をデータブロック間で平準化できる。このようなことから、フラッシュメモリ２３０として「ＮＡＮＤ  ＦＬＡＳＨ」を採用した場合に、「ＮＡＮＤ  ＦＬＡＳＨ」の特性であるライトおよびイレースの回数制限を平準化でき、フラッシュメモリ２３０を最大限に効率的に利用できる。
【００４９】
また、実施例１によれば、イレース処理中に停電が発生しない場合と同様に、フラッシュメモリ２３０からキャッシュメモリ２２０へのリストアを実現する。
【実施例２】
【００５０】
以下、再復電処理内のイレース処理実行中に停電が発生した場合の処理を説明する。図６は、実施例２に係る記憶装置による処理を説明するための図である。
【００５１】
停電からの復帰（復電）に伴い、フラッシュメモリ２３０からキャッシュメモリ２２０へバックアップデータのリストア（リード転送）を実行する（図４および図５参照）。リストア（リード転送）が完了すると、復電処理部２４３は、図６に示す「ＵＣＥ＿ＦＬＡ」からイレース処理を実行する。「ＵＣＥ＿ＦＬＡ」は、図５に示す「ＥＲＳ＿ＰＮＴ」に対応し、レジスタ２４１に設定される。
【００５２】
そして、再復電後のイレース処理中に再び停電が発生した場合は、上記の実施例１と同様に、復電処理部２４３は、ライト転送処理のディスクリプタを生成し、ライト転送処理部２４４は、図６に示す「ＷＴ＃＿ＦＬＡ（２度目）」からライト転送処理を実行する。「ＷＴ＃＿ＦＬＡ（２度目）」は、図５に示す「バックアップ完了時のＷＴ＃＿ＰＮＴ」に対応し、レジスタ２４１に設定される。
【００５３】
ライト転送処理中にフラッシュメモリ２３０の最終領域まで到達した場合は、復電処理部２４３は、「ＢＬＫＬ」領域をスキップしてラップアラウンドし、フラッシュメモリ２３０の先頭領域から継続する。なお、復電処理部２４３は、「ＢＬＫＬ」領域に書き込まれた領域コード（不良ブロックを格納するデータブロックであることを示す領域コード）に基づいて、「ＢＬＫＬ」領域であることを認識し、ラウンドアップする。
【００５４】
ライト転送処理が完了すると、以降は、再復電後の再々復電処理となるが、実施例１と同様である（図４参照）。すなわち、領域ａ→領域ｂ→領域ｂ−ｃの順にリード転送（リスト）を実行し、リード転送が完了すると、フラッシュメモリ２３０のイレース処理を実行して、イレース処理中に停電が発生しなければ、イレース処理の完了をもって処理を終了する。
【００５５】
上述してきたように、再復電処理内のイレース処理実行中に停電が発生した場合であっても、キャッシュデータのロストを精度よく防止し、ライトおよびイレースの回数制限を平準化して、フラッシュメモリを最大限に効率的に利用できる。
【実施例３】
【００５６】
以下、本願の開示する記憶装置、データ処理方法およびデータ処理プログラムの他の実施形態を説明する。
【００５７】
（１）装置構成等
図１に示した記憶装置２００の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、記憶装置２００の分散・統合の具体的形態は図示のものに限られず、例えば、復電処理部２４３およびライト転送処理部２４４を機能的あるいは物理的に統合する。
【００５８】
このように、記憶装置２００の全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、記憶装置２００にて行なわれる各処理機能（図２、図４等参照）は、その全部または任意の一部が、ＣＰＵ２１０および当該ＣＰＵ２１０にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５９】
（２）データ処理方法
上記の実施例１で説明した記憶装置２００により、以下のようなデータ処理方法が実現される。
【００６０】
すなわち、停電発生時に、第１の記憶部に記憶されているデータを第２の記憶部が有するデータブロックに書き込んでバックアップする停電処理ステップと、停電からの復帰に伴って、第２の記憶部内のバックアップデータを第１の記憶部にリストアするとともに、第２の記憶部が有するデータブロックの先頭から最後までに渡って消去処理を実行する復電処理ステップと、復電処理ステップによる消去処理の実行中に停電が発生した場合に、消去処理を中断させる消去処理中断ステップと（例えば、図２のステップＳ３およびステップＳ４参照）、消去処理中断ステップにより消去処理が中断されるまでの間に第２の記憶部から消去されたバックアップデータに対応する第１の記憶部内のデータを、消去処理により消去されなかったバックアップデータが書き込まれている第２の記憶部内の最終ブロックの次ブロックから書き込んで再バックアップする再バックアップ処理ステップと（例えば、図２のステップＳ５〜Ｓ７参照）を含んだデータ処理方法が実現される。
【００６１】
（３）データ処理プログラム
また、上記の実施例で説明した記憶装置２００の各種の処理（例えば、図２、４等参照）は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図７を用いて、上記の実施例で説明した記憶装置２００と同様の機能を有するデータ処理プログラムを実行するコンピュータの一例を説明する。図７は、実施例２に係るデータ処理プログラムを実行するコンピュータを示す図である。
【００６２】
同図に示すように、記憶装置２００としてコンピュータ３００は、入出力制御部３１０、ＨＤＤ３２０、ＲＡＭ３３０およびＣＰＵ３４０をバス４００で接続して構成される。
【００６３】
ここで、入出力制御部３１０は、各種情報の入出力を制御する。ＨＤＤ３２０は、ＣＰＵ３４０による各種処理の実行に必要な情報を記憶する。ＲＡＭ３３０は、各種情報を一時的に記憶する。ＣＰＵ３４０は、各種演算処理を実行する。
【００６４】
そして、ＨＤＤ３２０には、図７に示すように、図１に示した記憶装置２００の各処理部と同様の機能を発揮するデータ処理プログラム３２１と、データ処理用データ３２２とがあらかじめ記憶されている。なお、このデータ処理プログラム３２１を適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
【００６５】
そして、ＣＰＵ３４０が、このデータ処理プログラム３２１をＨＤＤ３２０から読み出してＲＡＭ３３０に展開することにより、図７に示すように、データ処理プログラム３２１はデータ処理プロセス３３１として機能するようになる。すなわち、データ処理プロセス３３１は、データ処理用データ３２２等をＨＤＤ３２０から読み出して、ＲＡＭ３３０において自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種処理を実行する。なお、データ処理プロセス３３１は、図１に示した記憶装置２００の制御部２４０（停電処理部２４２、復電処理部２４３およびライト転送処理部２４４等）において実行される処理に対応する。
【００６６】
なお、上記したデータ処理プログラム３２１については、必ずしも最初からＨＤＤ３２０に記憶させておく必要はなく、例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などに各プログラムを記憶させておき、コンピュータ３００がこれらから各プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００６７】
２００  記憶装置
２１０  入出力制御部
２２０  キャッシュメモリ
２３０  フラッシュメモリ
２４０  制御部
２４１  レジスタ
２４２  停電処理部
２４３  復電処理部
２４４  ライト転送処理部
３００  コンピュータ
３１０  入出力制御部
３２０  ＨＤＤ（Hard Disk Drive）
３２１  データ処理プログラム
３２２  データ処理用データ
３３０  ＲＡＭ（Random Access Memory）
３３１  データ処理プロセス
３４０  ＣＰＵ（Central Processing Unit）
４００  バス
【図１】
2010277194.tif 000003
【図２】
2010277194.tif 000004
【図３】
2010277194.tif 000005
【図４】
2010277194.tif 000006
【図５】
2010277194.tif 000007
【図６】
2010277194.tif 000008
【図７】
2010277194.tif 000009
【図８】
2010277194.tif 000010