(57)【特許請求の範囲】
【請求項１】
キャッシュメモリを備え、外部電源からの通電時には、ホストからの要求に応じてディスク装置に対して該キャッシュメモリを介してデータの読み込みまたは書き込みを行い、該外部電源の電力供給停止時には、該キャッシュメモリ内のデータを退避させる退避処理装置であって、
前記外部電源からの電力が供給されなくなった際に放電を行なう事で、前記退避処理装置への電力を供給する大容量コンデンサと、
前記外部電源からの通電時には、前記ホストからの要求に応じて前記ディスク装置に対して読み込みまたは書き込みを行うプロセッサと、
前記キャッシュメモリ内のデータの退避のための第１の不揮発性メモリと、
第２の不揮発性メモリと、
前記第１の不揮発性メモリへのデータの書き込みができなかった領域の情報を記録した管理テーブルを備え、かつ前記キャッシュメモリ内のデータを前記第１の不揮発性メモリへ書き込む第１のＦＰＧＡと、
前記第１のＦＰＧＡから送られてくる情報を、停電検知からの経過時間とともに前記第２の不揮発性メモリへ書き込む第２のＦＰＧＡと、を有し、
前記外部電源からの電力が供給されなくなったときには、
前記第１のＦＰＧＡは、
前記プロセッサから、停電処理の開始指示を受けると、前記キャッシュメモリに記憶されているデータを前記第１の不揮発性メモリに書き込む処理を開始するとともに、該書き込む処理に当たり、該書き込が正常に行われたかを検証するとともに、該検証にて正常に書き込まれていない場合、前記第１の不揮発性メモリへの正常な書き込ができなかった領域を示す情報を、前記管理テーブルに格納するとともに、前記第２のＦＰＧＡへ送信し、前記キャッシュメモリ内のデータの前記第１の不揮発性メモリへの退避が完了すると、前記管理テーブルを前記第２のＦＰＧＡへ送信し、
前記第２のＦＰＧＡは、
停電を検知すると、前記プロセッサに通知するとともにタイマをセットし、かつ停電発生フラグを前記第２の不揮発性メモリに書き込み、
前記第１のＦＰＧＡから前記第１の不揮発性メモリへの正常な書き込ができなかった領域を示す情報が送られてくると、停電検知からの経過時間とともに第２の不揮発性メモリに書き込み、
前記第１のＦＰＧＡから前記管理テーブルを受信したときには、停電検知からの経過時間および前記キャッシュメモリ内のデータの前記第１の不揮発性メモリへの退避が完了したことを示す完了フラグとともに前記第２の不揮発性メモリに格納し、
前記プロセッサは、
前記第２のＦＰＧＡから停電検知通知を受信すると、前記第１のＦＰＧＡに対して停電処理の開始を指示した後、スリープ状態に入る、
ことを特徴とする退避処理装置。
【請求項２】
前記第１の不揮発性メモリは、ＮＡＮＤフラッシュメモリであり、
前記第２の不揮発性メモリは、磁気抵抗メモリである
ことを特徴とする請求項１に記載の退避処理装置。
【請求項３】
前記第２のＦＰＧＡは、停電の検出から所定時間後に、退避処理装置への前記大容量コンデンサからの電力供給を止め、
前記外部電源が復電した時には、
前記プロセッサが、
前記第２の不揮発性メモリを参照して前記停電発生フラグ、前記完了フラグが記憶されていることを確認できた場合は、前記管理テーブルを前記第２の不揮発性メモリから前記第１のＦＰＧＡへ転送し、かつ前記第１の不揮発性メモリから前記キャッシュメモリへのデータの書き戻しを前記第１のＦＰＧＡに指示し、
前記第１のＦＰＧＡが、
前記プロセッサから前記第１の不揮発性メモリから前記キャッシュメモリへのデータの書き戻しの指示を受けると、前記管理テーブルを参照しながら、前記第１の不揮発性メモリから前記キャッシュメモリにデータを書き戻す、
ことを特徴とする請求項１、または、請求項２に記載の退避処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、退避処理装置、及び、退避処理方法に関する。
【背景技術】
【０００２】
複数のＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を組み合わせ、高速・大容量・高信頼性に優れたディスクシステムを構築する技術としてＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）が広く知られている。
【０００３】
一般に、ＲＡＩＤ装置は、その上位装置（例えば、ホストコンピュータ、以下、ホストとする）からのデータアクセスに要する処理時間を短縮するために、キャッシュメモリを用いたユーザデータのリード・ライトが行われている。
【０００４】
このキャッシュメモリには、通常、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）・ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）といった半導体の記憶装置が利用されている。
【０００５】
そして、ＲＡＩＤ装置は、ホストからユーザデータのリード要求を受け付けた場合に、キャッシュメモリ（以下、単にキャッシュとする）からユーザデータを検索し、リード要求に対応するユーザデータを取得したら、取得したキャッシュデータをホストに通知する。
【０００６】
一方、ＲＡＩＤ装置は、キャッシュメモリからユーザデータを取得しなかった場合、ハードディスク装置（以下、単にディスクとする）に記憶されているユーザデータを取得し、キャッシュメモリに書込みを行う。
【０００７】
また、ユーザデータのライト要求を受け付けた場合には、キャッシュメモリにユーザデータを記憶した時点で、ライト処理が完了した旨をホストへ通知する。その後、所定の条件を満たした時点で、キャッシュメモリに記憶したユーザデータをディスクに記憶する。
【０００８】
ところで、上述したキャッシュメモリは、揮発性の半導体の記憶装置が利用されていることから、キャッシュメモリへの電源供給がなくなれば、キャッシュのユーザデータが消去されてしまう。このため、停電発生時には、キャッシュ上の全データを不揮発性の記憶装置（例：ＮＡＮＤフラッシュ、コンパクトフラッシュ（登録商標）等）に退避させ、バックアップする必要がある。
【０００９】
例えば、図２０に示すように、停電発生時に、ＲＡＩＤ装置２０のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１は、ＮＡＮＤフラッシュ２３への書込み処理を行なうＦＰＧＡ２２を制御して、キャッシュメモリ２４に記憶されているキャッシュデータ２４ａを、ＮＡＮＤフラッシュ２３に書きこむことにより退避させる。
【００１０】
また、停電が発生すると、ＲＡＩＤ装置２０への電力供給が、ＰＳＵ（Ｐｏｗｅｒ  ＳｕｐｐｌｙＵｎｉｔ）２８からＳＣＵ（Ｓｙｓｔｅｍ  Ｃａｐａｃｉｔｙ  Ｕｎｉｔ）２７に切替えられ、ＲＡＩＤ装置２０は、ＳＣＵ２７に蓄えられている電力を使用して、上述した退避処理を行う。
【００１１】
なお、停電発生時のライトバック（ライトデータのハードディスクへの書込み）処理を効率的に行うとともに、停電時の省電力化を図る技術（例えば、特許文献１参照）や、ディスクのアクセス情報に基づき、論理ディスク装置における物理ディスク装置への再配置を行う技術が知られている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平９−３３０２７７号公報
【特許文献２】特開２００６−５９３７４号公報
【特許文献３】特開平６−２３０１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上記したＣＰＵは、ＲＡＩＤにおけるキャッシュメモリ内のデータの退避を効率的に行なうために、高性能なプロセッサを用い、通常は、内部もしくは外部にあるメモリを使用してソフトウエア処理している事が多い。このため、ＣＰＵを使用して退避処理を行った場合、消費電力が大きく、正常な退避処理を行なうためには、なるべく容量の大きいＳＣＵを用いることが望ましい。しかしながら、ＳＣＵは、容量が大きいほど、大型化し、ＳＣＵを搭載できる容積に制限があることから、ＳＣＵの大容量化にも限界がある。
【００１４】
このため、停電時には、このＣＰＵを使用せず、退避処理に限った機能に絞った専用の制御部を有して転送させ、消費電力を抑えることが好ましい。
【００１５】
一方、ＮＡＮＤフラッシュは通常のメモリに比べ、信頼性が低く、書き込み時に、その書き込み領域が不良になり、書込みエラーとなってしまうことがある。このため、ＮＡＮＤフラッシュへの書込みには、書き込みエラーとなった領域を記憶しておき、次回の退避時に活用できることが好ましい。
【００１６】
上記したように、ＣＰＵのようなプロセッサであれば、ソフトウエア処理などによって、エラーログを随時管理・記録させながら退避処理を行なうことは容易である。しかながらが、専用の制御部の場合、なるべく機能を絞るという観点から、より簡易な機能にて、エラーログを収集できるほうが望ましい。
【００１７】
本技術においては、このような課題に鑑み、簡易な構成で、エラーログの記録を可能とする退避処理装置を実現する事を目的とする。
【課題を解決するための手段】
【００１８】
本技術は、上記従来の課題に鑑み、キャッシュメモリを備え、外部電源からの通電時には、ホストからの要求に応じてディスク装置に対して該キャッシュメモリを介してデータの読み込みまたは書き込みを行い、該外部電源の電力供給停止時には、該キャッシュメモリ内のデータを退避させる退避処理装置であって、前記外部電源からの電力が供給されなくなった際に放電を行なう事で、前記退避処理装置への電力を供給する大容量コンデンサと、前記外部電源からの通電時には、前記ホストからの要求に応じて前記ディスク装置に対して読み込みまたは書き込みを行うプロセッサと、前記キャッシュメモリ内のデータの退避のための第１の不揮発性メモリと、第２の不揮発性メモリと、前記第１の不揮発性メモリへのデータの書き込みができなかった領域の情報を記録した管理テーブルを備え、かつ前記キャッシュメモリ内のデータを前記第１の不揮発性メモリへ書き込む第１のＦＰＧＡと、前記第１のＦＰＧＡから送られてくる情報を、停電検知からの経過時間とともに前記第２の不揮発性メモリへ書き込む第２のＦＰＧＡと、を有し、前記外部電源からの電力が供給されなくなったときには、前記第１のＦＰＧＡは、前記プロセッサから、停電処理の開始指示を受けると、前記キャッシュメモリに記憶されているデータを前記第１の不揮発性メモリに書き込む処理を開始するとともに、該書き込む処理に当たり、該書き込みが正常に行われたかを検証するとともに、該検証にて正常に書き込まれていない場合、前記第１の不揮発性メモリへの正常な書き込ができなかった領域を示す情報を、前記管理テーブルに格納するとともに、前記第２のＦＰＧＡへ送信し、前記キャッシュメモリ内のデータの前記第１の不揮発性メモリへの退避が完了すると、前記管理テーブルを前記第２のＦＰＧＡへ送信し、前記第２のＦＰＧＡは、停電を検知すると、前記プロセッサに通知するとともにタイマをセットし、かつ停電発生フラグを前記第２の不揮発性メモリに書き込み、前記第１のＦＰＧＡから前記第１の不揮発性メモリへの正常な書き込みができなかった領域を示す情報が送られてくると、停電検知からの経過時間とともに第２の不揮発性メモリに書き込み、前記第１のＦＰＧＡから前記管理テーブルを受信したときには、停電検知からの経過時間および前記キャッシュメモリ内のデータの前記第１の不揮発性メモリへの退避が完了したことを示す完了フラグとともに前記第２の不揮発性メモリに格納し、前記プロセッサは、前記第２のＦＰＧＡから停電検知通知を受信すると、前記第１のＦＰＧＡに対して停電処理の開始を指示した後、スリープ状態に入る、ことを特徴とする。 
【発明の効果】
【００１９】
本願技術によれば、第１の制御部は、エラー発生の度に第２の制御部へ転送するだけでよく、第２の制御部は、どの様な種別かを意識すること無く、第２の不揮発性メモリへデータを転送すれば、第２の不揮発性メモリには、エラーログと同等の記録内容が蓄積されることになる。これにより、全体のエラーログを管理せずとも、エラーログの記録を可能とする。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に示すＲＡＩＤ装置の構成を示す機能ブロック図である。
【図２】本実施の形態のＮＡＮＤフラッシュのデータ構造の一例を示す図である。
【図３】本実施の形態に示すキャッシュメモリのデータ構造の一例を示す図である。
【図４】本実施の形態に示すＦＰＧＡの構成を示す機能ブロック図である。
【図５】本実施の形態に示すバックアップ管理テーブルのデータ構造の一例を示す図である。
【図６】本実施の形態に示す不良ブロック管理テーブル（ＴＢＭ）のデータ構造の一例を示す図である。
【図７】本実施の形態に示すバックアップ完了フラグのデータ構造の一例を示す図である。
【図８】本実施の形態に示すＭＲＡＭ２０１ｇ１の記憶領域を示す図である。
【図９】本実施の形態の退避処理装置において、通電時における処理を示すフローチャートである。
【図１０】本実施の形態の退避処理装置における、監視ＦＰＧＡ２０１ｈの処理を示すフローチャートである。
【図１１】本実施の形態の退避処理装置における、ＣＰＵの停電時の処理を示すフローチャートである。
【図１２】本実施の形態の退避処理装置において、停電時の処理を説明する説明図である。
【図１３】本実施の形態の退避処理装置において、停電時の処理を示すフローチャートである。
【図１４】本実施の形態の退避処理装置において、停電時の処理を示すフローチャートである。
【図１５】本実施の形態の退避処理装置において、停電時の処理を説明する説明図である。
【図１６】本実施の形態の退避処理装置において、停電時の処理を説明する説明図である。
【図１７】本実施の形態の退避処理装置において、停電時の処理を説明する説明図である。
【図１８】本実施の形態の退避処理装置に置いて、停電時の処理を示すシーケンスチャートである。
【図１９】本実施の形態の退避処理装置に置いて、復電時の処理を示すシーケンスチャートである。
【図２０】従来技術を説明するための図である。
【発明を実施するための形態】
【００２１】
以下に、本願の開示する退避処理装置、退避処理方法について説明する。なお、以下の実施の形態によりこの発明が限定されるものではない。
【００２２】
次に、本実施の形態に示す、退避処理装置を含む、ＲＡＩＤ装置（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）について説明する。図１は、本実施の形態に示すＲＡＩＤ装置の構成を示す機能ブロック図である。
【００２３】
図１において、ＲＡＩＤ装置２００は、複数の上位装置（例えば、ホストコンピュータＡ、Ｂ、Ｃ・・・以下、単にホストとする）からの要求に応じて、ＨＤＤ（Ｈａｒｄ    Ｄｉｓｋ  Ｄｒｉｖｅ）２０３ａ〜ｚに記憶されている各種ユーザデータやプログラムデータの伝送を行う。また、ＲＡＩＤ装置２００は、停電発生時には、バックアップに必要とされるキャッシュメモリ２０１ｂ内のキャッシュデータをＮＡＮＤ型メモリに退避する処理を実行する。
【００２４】
また、ＲＡＩＤ装置２００は、ＣＭ（Ｃｏｎｔｒｏｌｌｅｒ  Ｍｏｄｕｌｅ）２０１と、ＰＳＵ（Ｐｏｗｅｒ  Ｓｕｐｐｌｙ  Ｕｎｉｔ）２０２と、ＨＤＤ２０３ａ〜ｚとを有する。
【００２５】
ＣＭ２０１は、キャッシュメモリ２０１ｂの管理や、ホストとのインターフェース制御や、各ＨＤＤ２０３ａ〜ｚの制御を行う制御部であり、退避処理装置の一種である。このＣＭ２０１は、ＮＡＮＤフラッシュ２０１ａ（第１の不揮発性メモリ）と、キャッシュメモリ２０１ｂ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ／第１の制御部）２０１ｃとを有する。また、ＣＭ２０１は、通電時にＲＡＩＤ装置２００のＲＡＩＤ及びキャッシュ制御を行うＣＰＵ（ＲＡＩＤ−ｏｎ−Ｃｈｉｐ）２０１ｄと、ＳＣＵ（Ｓｕｐｅｒ  Ｃａｐａｃｉｔｏｒ  Ｕｎｉｔ）２０１ｅと、Ｅｘｐ（エキスパンダ）２０１ｆとを有する。さらに、ＣＭ２０１は、ＭＲＡＭ（磁気抵抗メモリ：Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｓｅｓｓ  Ｍｅｍｏｒｙ／第２の不揮発性メモリ）２０１ｇ、ＭＲＡＭ２０１ｇへのアクセス制御を行なう監視ＦＰＧＡ２０１ｈ（第２の制御部）とを有する。このうち監視ＦＰＧＡ２０１ｈは、タイマ２０１ｈ１を有する。このタイマ２０１ｈ１は、監視ＦＰＧＡ２０１ｈによりセットさせると、このセットからの経過時間を出力するものである。
【００２６】
ＮＡＮＤフラッシュ２０１ａは、ＲＡＩＤ装置２００に停電が発生した場合に、キャッシュメモリ２０１ｂに記憶されているキャッシュデータがバックアップされるＮＡＮＤ型メモリである。
【００２７】
なお、ＮＡＮＤフラッシュ２０１ａは、ブロック単位でアクセスされる構造を有し、シーケンシャルライトにて、キャッシュメモリ２０１ｂのキャッシュデータが書込まれる。
【００２８】
図２は、本実施の形態のＮＡＮＤフラッシュ２０１ａのデータ構造を示す図である。図２のＮＡＮＤフラッシュ２０１ａは、複数のブロックａ０１〜ａ２０を有している。
【００２９】
このブロックａ０１〜ａ２０は、各々キャッシュデータを記憶するデータ領域であり、ブロックごとに、キャッシュデータが書込まれる。なお、本実施の形態のＮＡＮＤフラッシュ２０１ａの１ブロック当たりのデータ領域は、４Ｍｂｙｔｅとする。
【００３０】
次に、図１のキャッシュメモリ２０１ｂについて説明する。キャッシュメモリ２０１ｂは、ホストとＨＤＤ２０３ａ〜ｚとの間で転送が行われるユーザデータを一時的に記憶するキャッシュメモリである。なお、上述してきたようにキャッシュメモリ２０１ｂに記憶されているユーザデータをキャッシュデータとする。
【００３１】
図３は、本実施の形態に示すキャッシュメモリ２０１ｂのデータ構造の一例を示す図である。図３に示したキャッシュメモリ２０１ｂは、キャッシュデータを一時的に記憶する複数のテーブルｂ０１〜ｂ１０を有している。
【００３２】
なお、図３に示した各テーブルｂ０１〜ｂ１０は、４Ｍｂｙｔｅのユーザデータを保存する容量を有している。また、このユーザデータは６４ｋＢのデータ長単位で、ＣＰＵ２０１ｄに管理されるものとする。
【００３３】
また、ユーザデータの一例としては、リードデータとライトデータが挙げられる。「リードデータ」は、ＨＤＤ２０３ａ〜ｚのいずれかに記憶されているユーザデータを読み出したデータを一時記憶したものである。
【００３４】
ホストからＲＡＩＤ装置２００にユーザデータのリード要求があった場合、ＣＭ２０１は、キャッシュメモリ２０１ｂ内の各テーブルｂ０１〜ｂ１０から、リード要求に対応するユーザデータがキャッシュデータを取得できた場合は、取得したキャッシュデータをホストに出力する。
【００３５】
一方、キャッシュメモリ２０１ｂからキャッシュデータを取得できなかった場合、ＣＭ２０１は、ＨＤＤ２０３ａ等から、リード要求に対応するユーザデータを取得し、取得したユーザデータをキャッシュメモリ２０１ｂに複製する。このように、ＨＤＤ２０３ａ等から、リード要求に対応するユーザデータを取得することを以下、「ステージング」とする。
【００３６】
上記したように、リードデータは、ＨＤＤ２０３ａ〜ＨＤＤ２０３ｚから取得したデータであるので、キャッシュメモリ２０１ｂから、キャッシュデータがなくなったとしても、ＨＤＤ２０３ａ〜ＨＤＤ２０３ｚからの再取得が可能なデータである。
【００３７】
一方、「ライトデータ」は、ホストからＲＡＩＤ装置２００へ書込み要求があったユーザデータがキャッシュメモリに一時的に記憶されたものであり、所定の条件を満たした後、各ＨＤＤに書込まれる。このため、ライトデータは、ＨＤＤ２０３ａ〜ｚのいずれにも書き込まれていないデータの可能性がある。
【００３８】
次に、図１の説明に戻り、ＦＰＧＡ２０１ｃについて説明する。ＦＰＧＡ２０１ｃは、所定のプログラムによって制御される集積回路を示し、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）エンジンを有する。
【００３９】
このＤＭＡエンジンは、停電時に、ＣＰＵ２０１ｄを介さずに、キャッシュメモリ２０１ｂ内のキャッシュデータをＮＡＮＤフラッシュ２０１ａに退避・復元するために必要な機能を付加したものである。
【００４０】
なお、ＤＭＡエンジンの一例として、停電時に、キャッシュデータを退避するライトＤＭＡ（ＴＲＮ）、退避データをキャッシュメモリ２０１ｂに戻すリードＤＭＡ（ＲＣＶ）、ＮＡＮＤフラッシュ２０１ａのイレースやチェックを行うためのコマンド発行ＤＭＡ（ＵＣＥ）等が挙げられる。そして、このＤＭＡは、ＣＰＵ２０１ｄの命令によって、ハードウェア的にデータを転送する。
【００４１】
このＦＰＧＡ２０１ｃについて図を用いて説明する。図４は、本実施の形態に示すＦＰＧＡ２０１ｃの構成を示す機能ブロック図である。ＦＰＧＡ２０１ｃは、停電発生時、キャッシュメモリ２０１ｂの所定データをＮＡＮＤフラッシュ２０１ａに退避させる処理を実行する。また、ＦＰＧＡ２０１ｃは、復電時、ＣＰＵ２０１ｄからの指示に基づき、停電時にＮＡＮＤフラッシュ２０１ａへ退避させたデータをキャッシュメモリ２０１ｂに戻す。
【００４２】
そして、ＦＰＧＡ２０１ｃは、ＩＦ（Ｉｎｔｅｒｆａｃｅ）制御部２１１、アクセスコントローラ２１２、アクセス管理テーブル２１３、ＴＲＮ２１４、ＩＦ制御部２１５、監視ＦＰＧＡ２０１ｈとの通信を行なう監視ＦＰＧＡＩＦ制御部２１６、及び、キャッシュメモリへのアクセスを行なうキャッシュＩＦ制御部２１７とを有する。
【００４３】
ＩＦ制御部２１１は、図１に示したＣＰＵ２０１ｄとＴＲＮ２１４との各種データのやり取りや、このＣＰＵ２０１ｄと後述するアクセスコントローラ２１２との各種データのやり取りを制御するインターフェースである。
【００４４】
アクセスコントローラ２１２は、ＩＦ制御部２１１を介して、アクセス管理テーブル２１３と、ＣＰＵ２０１ｄとの各種データのやり取りを制御する制御部である。
【００４５】
アクセス管理テーブル２１３は、バックアップ管理テーブル２１３ａと、上述した不良ブロックを管理する不良ブロック管理テーブル（ＴＢＭ）２１３ｂとを有する。まず、バックアップ管理テーブル２１３ａのデータ構造について説明する。
【００４６】
図５は、バックアップ管理テーブル２１３ａのデータ構造の一例を示す図である。このバックアップ管理テーブル２１３ａは、図５に示されるように、キャッシュメモリ２０１ｂの各テーブルｂ０１〜ｂ１０の各々に対応する複数の３ｂｉｔフラグｃ０１〜ｃ１０を有する。
【００４７】
この３ｂｉｔフラグの各々のビットは、［２］ビットめ、［１］ビットめ、［０］ビットめの３ビットからなり、各々、停電時に、対応するテーブルに記憶されたデータに対し、どのような処理を行なうかを識別するためのフラグであり、本実施の形態における各ビットのフラグは、以下の意味を持つ。
【００４８】
まず、３ｂｉｔフラグの［２］ビットめは、２重書込み（Ｄｕａｌ）を行なうか否かを示すビットである。次に、［１］ビットめは、優先度を示すフラグで、フラグが立つもの（即ち１が記憶されているもの）が、立たないものの優先度が低い（Ｓｔａｙ）ことを示す。更に、［０］ビットめは、バックアップをスキップするかを判断するフラグで、「１」が立っていれば、停電時、バックアップを行わなくともよいことを示している。
【００４９】
このバックアップ管理テーブル２１３ａは、ＣＰＵ２０１ｄによって管理される。
【００５０】
次に、図４に示した不良ブロック管理テーブル（ＴＢＭ）２１３ｂについて説明する。不良ブロック管理テーブル（ＴＢＭ）２１３ｂは、図２に示したＮＡＮＤフラッシュ２０１ａの劣化によるライト失敗（Ｐｒｏｇｒａｍ  Ｆａｉｌ）、消去失敗（Ｅｒａｓｅ  Ｆａｉｌ）、リード不可（Ｒｅａｄ  Ｆａｉｌ）が発生する不良ブロックを管理するテーブルで、上述したＩｎｖａｌｉｄＴａｂｌｅに相当する。そして、ＣＰＵ２０１ｄのファームウェアにて各データが管理される。
【００５１】
具体的に図を用いて説明する。図６は、本実施の形態に示す不良ブロック管理テーブル（ＴＢＭ）２１３ｂのデータ構造の一例を示す図である。本実施の形態における不良ブロック管理テーブル（ＴＢＭ）２１３ｂは、ＮＡＮＤフラッシュの各ブロックａ０１〜ａ２０に対応した、項目ｃ０１〜ｃ２０を有する。この項目は、各々「Ｄｉｒｔｙ」「Ｉｎｖａｌｉｄ」を識別するフラグを有する。
【００５２】
「Ｄｉｒｔｙ」フラグは、バックアップ時に、ユーザデータの転送エラーが発生し、ＮＡＮＤフラッシュ２０１ａへの書込みが正常に終了しなかったか否かを識別するフラグである。
【００５３】
そして、図６に示すようにフラグ１が立っている場合は、Ｄｉｒｔｙな状態を示し、フラグ０の場合は、正常にユーザデータの転送が終了した場合を示す。
【００５４】
「Ｉｎｖａｌｉｄ」フラグは、各ＮＡＮＤフラッシュ２０１ａのブロックが「不良ブロック」であることを識別するためのフラグである。このフラグに「１」が格納されている項目に対応するＮＡＮＤフラッシュ２０１ａのブロックは、バックアップに使用することができないことを示している。
【００５５】
次に、図４の説明に戻り、ＴＲＮ２１４について説明する。ＴＲＮ２１４は、キャッシュメモリ２０１ｂのユーザデータを退避するＤＭＡを示し、メイン制御部２１４ａと、リード部２１４ｂと、エラー制御部２１４ｃと、データバッファ部２１４ｄ１と、ＣＲＣ生成部２１４ｄ２と、ＮＡＮＤライト制御部２１４ｅとを有する。
【００５６】
メイン制御部２１４ａは、不良ブロック管理テーブル（ＴＢＭ）２１３ｂに記憶されているＩｎｖａｌｉｄフラグや、Ｄｉｒｔｙフラグの更新を行う処理部である。
【００５７】
このメイン制御部２１４ａは、アドレス指定部２１４ａ１、Ｉｎｖａｌｉｄ判定部２１４ａ２、及び、Ｄｉｒｔｙ更新部２１４ａ３、エラー送信部２１４ａ４を有する。
【００５８】
アドレス指定部２１４ａ１は、不良ブロック管理テーブル（ＴＢＭ）２１３ｂのアドレス管理を行なう。また、Ｉｎｖａｌｉｄ判定部２１４ａ２は、不良ブロック管理テーブル（ＴＢＭ）２１３ｂに記憶されている各項目のＩｎｖａｌｉｄフラグを元に対象となるＮＡＮＤフラッシュ２０１ａのブロックが不良か否かを判定する。
【００５９】
更に、Ｄｉｒｔｙ更新部２１４ａ３は、エラー制御部２１４ｃのエラー検出に基づき、不良ブロック管理テーブル（ＴＢＭ）２１３ｂに記憶されている各項目のＤｉｒｔｙフラグを更新する。
【００６０】
また、エラー送信部２１４ａ４は、エラー制御部２１４ｃのエラー検出結果を、監視ＦＰＧＡＩＦ制御部２１６を制御して、監視ＦＰＧＡ２０１ｈへ送信するものである。
【００６１】
また、メイン制御部２１４ａは、停電発生時に、キャッシュメモリ２０１ｂのリード開始をリード部２１４ｂに要求する制御も行なう。
【００６２】
次に、リード部２１４ｂは、停電発生時に、キャッシュメモリ２０１ｂのデータの少なくとも一部を、ＮＡＮＤフラッシュ２０１ａへ退避させる制御部である。
【００６３】
このリード部２１４ｂは、フラグ判定部２２０と、キャッシュアドレス管理部２２１と、リード制御部２２２とを有する。
【００６４】
フラグ判定部２２０は、図４に示すように、バックアップ完了フラグ２２０ａを有する。このバックアップ完了フラグ２２０ａは、図７に示されるように、［０］［１］［２］の３ｂｉｔで形成されている。
【００６５】
各々のビットは、それぞれ１回目のバックアップ各々のバックアップ処理が完了したかを示すフラグである。
【００６６】
フラグ判定部２２０は、停電時、種類の異なる３回のデータ読み出しを、後述するリード制御部２２２に指示する。
【００６７】
１回目のバックアップ処理は、バックアップ管理テーブル２１３ａ内の３ｂｉｔフラグの［１］ビットめ（Ｓｔａｙ）及び［０］ビットめ（ｓｋｉｐ）に「０」が格納されている３ｂｉｔフラグに対応した、キャッシュメモリ２０１ｂのブロックに記憶されているデータのバックアップ処理である。即ち、１回目のバックアップ処理は、優先順位が低くなく、スキップ対象ではないキャッシュメモリ２０１ｂのブロックのデータを、ＮＡＮＤフラッシュ２０１ａへ退避させる処理を行なうものである。
【００６８】
また、２回目のバックアップ処理は、バックアップ管理テーブル２１３ａ内の３ｂｉｔフラグの［１］ビットめ（Ｓｔａｙ）に「１」が格納されている３ｂｉｔフラグに対応した、キャッシュメモリ２０１ｂのブロックに記憶されているデータのバックアップ処理である。即ち、２回目のバックアップ処理は、キャッシュメモリ２０１ｂのブロックのデータを、ＮＡＮＤフラッシュ２０１ａへ退避させる処理を行なうものである。
【００６９】
更に、３回目のバックアップ処理は、バックアップ管理テーブル２１３ａ内の３ｂｉｔフラグの［２］ビットめ（Ｄｕａｌ）に「１」が格納されている３ｂｉｔフラグに対応した、キャッシュメモリ２０１ｂのブロックに記憶されているデータのバックアップ処理である。３回目のバックアップされるデータは、１回目のバックアップ処理にて既にＮＡＮＤフラッシュ２０１ａに退避されているデータであるので、２度書込みがなされることにとなる。
【００７０】
ＴＢＭ送信部２１８は、フラグ判定部２２０のバックアップ完了フラグ２２０ａの書込みにおいて、「［２］３ｒｄ」フラグが「１」になったことを検出すると、監視ＦＰＧＡＩＦ制御部２１６を制御し、監視ＦＰＧＡ２０１ｈに対し、バックアップ管理テーブル（ＴＢＭ）２１３ｂ内のデータ、及び、バックアップが完了したことを示す情報を送信する。
【００７１】
キャッシュアドレス管理部２２１は、キャッシュデータのキャッシュメモリ２０１ｂにおける位置を示すキャッシュアドレスを管理し、管理しているキャッシュアドレスをフラグ判定部２２０に出力する処理部である。
【００７２】
リード制御部２２２は、キャッシュメモリ２０１ｂとの通信を行なうキャッシュＩＦ制御部２１７を介して、フラグ判定部２２０が指示するキャッシュメモリ２０１ｂの各テーブルのキャッシュデータの読み出しを行なう。読み出したデータは、エラー制御部２１４ｃ、データバッファ部２１４ｄ１へ出力する。
【００７３】
エラー制御部２１４ｃは、転送エラーが発生した場合、転送エラーが発生したＮＡＮＤブロックを識別するアドレスをメイン制御部２１４ａに通知する。メイン制御部２１４ａのＤｉｒｔｙ更新分２１４ａ３は、この通知を受信すると、不良ブロック管理テーブル（ＴＢＭ）２１３ｂのＤｉｒｔｙフラグの更新を要求する。
【００７４】
データバッファ部２１４ｄ１は、リード制御部２２２から入力されたキャッシュデータのデータを化け防止のために、ＸＯＲ（排他的論理和）演算を行って、パリティデータを生成し、キャッシュデータにＸＯＲパリティを付加する。
【００７５】
ＣＲＣ生成部２１４ｄ２は、ＣＲＣ（Ｃｙｃｌｉｃａｌ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）とＡＩＤ（Ａｒｅａ  ＩＤ）からなる冗長ビットをユーザデータに付加して、付加したユーザデータを保持するためのバッファを有し、そのバッファに記憶されているユーザデータをＮＡＮＤライト制御部２１４ｅに出力する。
【００７６】
ＮＡＮＤライト制御部２１４ｅは、ＮＡＮＤフラッシュ２０１ａの各ブロックが識別されるアドレスを有し、さらに、ＩＦ制御部２１５を介して、ＣＲＣ生成部２１４ｄ２から出力されたユーザデータをＮＡＮＤフラッシュ２０１ａに出力し、書込みを行う。
【００７７】
さらに、ＮＡＮＤライト制御部２１４ｅは、キャッシュデータをＮＡＮＤフラッシュ２０１ａに書込む際に、転送エラーが発生し、書込みに失敗した場合、対応するブロックの識別データをエラー制御部２１４ｃに出力する。
【００７８】
ＩＦ制御部２１５は、ＴＲＮ２１４とＮＡＮＤフラッシュ２０１ａとの各種データのやり取りを制御するインターフェースである。
【００７９】
図１に示したＳＣＵ（Ｓｕｐｅｒ  Ｃａｐａｃｉｔｏｒ  Ｕｎｉｔ）２０１ｅについて補足する。ＳＣＵ２０１ｅは、電解コンデンサなどの大容量コンデンサを示し、ＲＡＩＤ装置２００に停電が発生した際に、バッテリーフリーで、ＣＭ２０１に電力を供給する。このＳＣＵ２０１ｅは、図示しない電源装置が、ＣＭ２０１へ供給する電力を利用して蓄電を行い、停電時、蓄電していた電力を放電する事で、ＣＭ２０１への電力を供給する。上記したように、大容量のコンデンサで形成しているため、一時的に電力の供給が可能ではあるものの、長時間の連続てきな電力供給は困難である。本実施の形態では４０秒程度で、電力の供給が出来なくなるものとする。
【００８０】
ＥＸＰ（エキスパンダ）２０１ｆは、ＣＰＵ２０１ｄとＨＤＤ２０３ａ〜ＨＤＤ２０３ｚとの間で送受信されるユーザデータを中継する処理部である。
【００８１】
ＰＳＵ（Ｐｏｗｅｒ  Ｓｕｐｐｌｙ  Ｕｎｉｔ）２０２は、外部からＲＡＩＤ装置２００へ電力を供給する為の装置で、外部からの電力供給がなくなる、即ち、停電が発生した場合、ＲＡＩＤ装置２００への電力の供給が停止してしまう。この停電時は、ＳＣＵ２０１ｅが放電することにより、ＲＡＩＤ装置２００へ電力が供給される。
【００８２】
ＨＤＤ２０３ａ〜ＨＤＤ２０３ｚは、ＲＡＩＤグループを構成し、高速性や安全性のレベルに応じて、データが振り分けられており、ユーザデータの書込みやプログラムを記憶する記憶媒体（ディスク）等を有する。
【００８３】
また、監視ＦＰＧＡ２０１ｈは、ＭＲＡＭ２０１ｇへの書込み・読み込みを行なうものであり、ＦＰＧＡ２０１ｃ、ＣＰＵ２０１ｄと直接通信が可能で、ＦＰＧＡ２０１ｃ、ＣＰＵ２０１ｄからの指示に応じて、ＭＲＡＭ２０１ｇへのアクセスを行なう。また、監視ＦＰＧＡ２０１ｈは、タイマ２０１ｈ１を有している。
【００８４】
さらに、ＭＲＡＭ２０１ｇは、不揮発性のメモリの一種であり、ＮＡＮＤフラッシュに比べ信頼性が高い。
【００８５】
ＭＲＡＭ２０１ｇ内の構成について、図８を用いて説明する。
【００８６】
ＭＲＡＭ２０１ｇは、図８に示されるように、セッティング領域２０１ｇ１、完了フラグ記憶領域２０１ｇ２、エラーログ記憶領域２０１ｇ３、ＴＢＭ記憶領域２０１ｇ４の４つの記憶領域を有する。
【００８７】
このうち、完了フラグ記憶領域２０１ｇ２は、完了フラグを記憶する領域と記憶された際の経過時間（後述）が記憶される。
【００８８】
また、エラーログ記憶領域２０１ｇ３も、エラーログと共に経過時間が記憶される。さらにＴＢＭ記憶領域２０１ｇ４も、ＴＢＭ２１３ｂのデータと経過時間とが対応付けて記憶される。
これらの記憶は、監視ＦＰＧＡ２０１ｈによって行われる。
【００８９】
次に、本実施の形態のＲＡＩＤ装置の通電時の処理について図９を用いて説明する。
【００９０】
まず、本実施の形態のＲＡＩＤ装置２００のＣＰＵ２０１ｄは、図示しないホストからのリクエストを受信する（ステップＳ１００１）と、リクエストの内容がリード要求か否かを判定する（Ｓ１００２）。
【００９１】
Ｓ１００２にて、ホストから受信したリクエストがリード要求であった場合、ＣＰＵ２０１ｄは、ＰＳＵ２０２のリード要求に含まれるＨＤＤ２０３ａ〜ｚ内のアクセス位置を示すディスクアドレスを取得する。そしてＣＰＵ２０１ｄは、このディスクアドレスに対応するデータが、キャッシュメモリ２０１ｂ内の各テーブルｂ０１〜ｂ１０に記憶されているか検索を行う（ステップＳ１００３）。
【００９２】
ここで、ＣＰＵ２０１ｄは、ホストから要求されているデータを、キャッシュメモリ２０１ｂのテーブルｂ０１〜１０のいずれかから取得できた場合（ステップＳ１００４、Ｙｅｓ）、処理をステップＳ１００８へ移行する。
【００９３】
一方、キャッシュメモリ２０１ｂからリードデータを取得しなかった場合（ステップＳ１００４、Ｎｏ）、ＣＰＵ２０１ｄは、キャッシュメモリ２０１ｂにホストからのリクエストに含まれるディスクアドレスのデータを記憶する為のテーブルを確保する（ステップＳ１００５）。具体的には、ＣＰＵ２０１ｄは、キャッシュメモリ２０１ｂ内のテーブルｂ０１〜ｂ１０に、リクエストに含まれるディスクアドレスのデータを記憶する容量分のデータを記憶するだけの空きテーブル（キャッシュデータが入っていないテーブル）が存在すれば、それを確保する。もし、空きテーブルが存在しなければ、ＣＰＵ２０１ｄは、各テーブルｂ０１〜ｂ１０に記憶されているキャッシュデータのうち、記憶した時間が長いデータを記憶したテーブルのデータを、開放して空きテーブルを作ることにより、テーブルの確保を行なう。また、テーブルの開放にあたり、開放するテーブルに対応するバックアップ管理テーブル２１３ａの３ｂｉｔフラグを全てのビットを「０」に更新する。
【００９４】
そして、ＣＰＵ２０１ｄは、ＦＰＧＡ２０１ｃに対し、該ステージングの対象となるテーブルを通知する（Ｓ１００６）。この通知を受信したＦＰＧＡ２０１ｃのメイン制御部２１４ａは、キャッシュアドレス管理部２２１は、対象テーブルに対応したバックアップ管理テーブル２１３ａの３ｂｉｔフラグの［０］ｂｉｔめ、即ち、ｓｋｉｐフラグを「１」に更新する。
【００９５】
その後、ＣＰＵ２０１ｄは、ステージング処理を行なう（Ｓ１００７）。
【００９６】
このステージング処理は、具体的には、まず、ＣＰＵ２０１ｄが、Ｅｘｐ２０１ｆを介して、ＨＤＤ２０３ａ〜ＨＤＤ２０３ｚからリード要求に含まれていたディスクアドレスのデータを取得する。そして、ＣＰＵ２０１ｄは、キャッシュメモリ２０１ｂの確保領域に、取得したデータをコピーすることにより実行される。
【００９７】
そして、ＣＰＵ２０１ｄは、取得したデータをホストへ送信し、ステップＳ１００１の処理へ移行する。
【００９８】
なお、ＣＰＵ２０１ｄは、Ｓ１００２の、リード要求の判定処理において、ＰＳＵ２０２から受信したリクエストが、リード要求でなかった場合（Ｓ１００２：Ｎｏ）、このリクエストがライト要求かを判定する（Ｓ１００９）。
【００９９】
この処理で、Ｙｅｓ、即ち、ライト要求であると判定した場合（Ｓ１００９：Ｙｅｓ）、ＣＰＵ２０１ｄは、キャッシュメモリ２０１ｂにライト要求に含まれるアドレスと同一アドレスのデータが格納されていないか確認する（Ｓ１０１０）。
【０１００】
ここで、キャッシュデータがないと判定された場合（Ｓ１０１０：Ｎｏ）、ＣＰＵ２０１ｄは、キャッシュメモリ２０１ｂのキャッシュ領域の確保処理を行なう（Ｓ１０１１）。この処理は、前述したＳ１００５の処理と同様であるので、説明を省略する。
【０１０１】
次に、ＣＰＵ２０１ｄは、ライト要求が、構成情報などを含む特定領域への書込みかを確認する（Ｓ１０１２）。この確認において、特定領域への書込みであると判断した場合、ＣＰＵ２０１ｄは、ＦＰＧＡ２０１ｃへ通知を行なう（Ｓ１０１３）。この通知を受信したＦＰＧＡ２０１ｃのメイン制御部２１４ａは、キャッシュアドレス管理部２２１に、バックアップ管理テーブル２１３ａのキャッシュ確保領域となったテーブルに対応する３ｂｉｔフラグの［２］ビットめ（Ｄｕａｌ）のフラグを「１」に更新させる。
【０１０２】
そしてＣＰＵ２０１ｄは、キャッシュ確保領域となったキャッシュメモリ２０１ｂのテーブルに対し、ＰＳＵ２０２から、Ｗｒｉｔｅ要求に続けて送られてくるデータを記憶する（Ｓ１０１４）。
【０１０３】
そして、ＣＰＵ２０１ｄは、Ｅｘｐ２０１ｆを制御し、ホストからＷｒｉｔｅ要求に続けて送られてくるデータを、ＨＤＤ２０３ａ〜ｚのうち、Ｗｒｉｔｅ要求に含まれるディスクアドレスに対して書込みを行なう（Ｓ１０１６）。
【０１０４】
なお、Ｓ１０１０の処理において、Ｗｒｉｔｅ要求に含まれるディスクアドレスに含まれるデータが、既にキャッシュメモリ２０１ｂに存在した場合、ＣＰＵ２０１ｄは、キャッシュメモリ２０１ｂに存在するデータを、ホストからＷｒｉｔｅ要求に続けて送られてくるデータに更新し（Ｓ１０１５）、Ｓ１０１６の処理に移行する。
【０１０５】
ＣＰＵ２０１ｄは、Ｓ１０１６の処理が完了すると、Ｓ１００１の処理へ移行する。
【０１０６】
更に、ＣＰＵ２０１ｄは、Ｓ１００９の処理において、受信したリクエストがライト要求でもないと判断した場合、受信したリクエストがコピー要求か否かを判定する（Ｓ１０１７）。
【０１０７】
ここで、ＣＰＵ２０１ｄは、受信したリクエストがコピー要求でもないと判断した場合（Ｓ１０１７：Ｎｏ）、その他、リクエストに応じた処理を行い（Ｓ１０２３）、Ｓ１００１の処理へ移行する。
【０１０８】
また、ＣＰＵ２０１ｄは、受信したリクエストがコピー要求であると判断した場合（Ｓ１０１７：Ｙｅｓ）、コピー元となるデータが、キャッシュメモリ２０１ｂのテーブルｂ０１〜ｂ１０のいずれかに記憶されているか、確認する（Ｓ１０１８）。
【０１０９】
ここで、コピー元となるデータがキャッシュメモリ２０１ｂのテーブルｂ０１〜ｂ１０のいずれにも記憶されていない場合（Ｓ１０１８：Ｎｏ）、キャッシュメモリ２０１ｂのキャッシュ領域を確保する処理を行なう（Ｓ１０１９）。この処理は、前述のＳ１００５の同様の処理であるので、説明を省略する。
【０１１０】
そして、ＣＰＵ２０１ｄは、コピー要求に基づきステージング処理を行ったことを、ＦＰＧＡ２０１ｃへ通知する（Ｓ１０２０）。この通知を受信したＦＰＧＡ２０１ｃのメイン制御部２１４ａは、キャッシュアドレス管理部２２１に、バックアップ管理テーブル２１３ａのキャッシュ確保領域となったテーブルに対応する３ｂｉｔフラグの［１］ビットめ（Ｓｔａｙ）のフラグを「１」に更新させる。
【０１１１】
次にＣＰＵ２０１ｄは、Ｅｘｐ２０３を制御して、コピー要求で指定されているコピー元のＨＤＤのデータを読み出し、領域確保したキャッシュメモリ２０１ｂのテーブルに書き込む（Ｓ１０２１）。
【０１１２】
そしてＣＰＵ２０１ｄは、Ｅｘｐ２０３を制御して、キャッシュ２０１に書き込まれたコピー元データをコピー先のＨＤＤへ書込むことによりコピー処理を行なう（Ｓ１０２２）。
【０１１３】
なお、ＣＰＵ２０１ｄは、Ｓ１０１８の処理において、コピー元となるデータがキャッシュメモリ２０１ｂのテーブルｂ０１〜ｂ１０のいずれかに記憶されていると判定した場合は、Ｓ１０１９〜Ｓ１０２１のステージングに関する処理を行うこと無く、上記したＳ１０２２の処理へ移行する。
【０１１４】
ＣＰＵ２０１ｄは、Ｓ１０２２の処理を完了すると、Ｓ１００１の処理へと移行する。以上のように、ＣＰＵ２０１ｄ、及び、ＦＰＧＡ２０１ｃの処理により、バックアップ管理テーブル２１３ａの各３ｂｉｔフラグｃ０１〜ｃ１０は、以下のようなステータスとなる。
【０１１５】
まず、構成情報などが入っている様な重要な領域のキャッシュメモリ２０１ｂのテーブルに対応するバックアップ管理テーブル２１３ａの［２］ｂｉｔ（Ｄｕａｌ）めは「１」となる。即ち、このテーブルに記憶されているデータは、停電時のバックアップ時に、二重書き込みの対象となる。
【０１１６】
また、コピー命令に基づき、ステージングを行ったキャッシュメモリ２０１ｂのテーブルに対応するバックアップ管理テーブル２１３ａの［１］ｂｉｔ（Ｓｔａｙ）めが「１」となる。再度コピーをやり直す際に、キャッシュメモリ２０１ｂにデータが存在している方が、コピー元のデータを保存しているＨＤＤの負荷を軽くできる。よってコピー元のデータは、キャッシュメモリ２０１ｂに保存されていることが好ましい。しかし、そもそもコピー命令の場合、コピー元データは、ＨＤＤ２０３ａ〜ｚのいずれかに存在しており、データが無くなってしまうことがないので、その他の領域のデータより優先度を低くする。
【０１１７】
更に、ｒｅａｄ命令に基づき、ステージングを行ったキャッシュメモリ２０１ｂのテーブルに対応するバックアップ管理テーブル２１３ａの［０］ｂｉｔ（Ｓｋｉｐ）めが「１」となる。ｒｅａｄ命令の対象データは、ＨＤＤ２０３ａ〜ｚのいずれかに存在しており、データが無くなってしまうことがない。加えて、Ｒｅａｄ命令は、Ｃｏｐｙ命令のように、復電直後に再度同じ命令が繰り返されることがなく、Ｒｅａｄ命令にて取得したデータがキャッシュメモリ２０１ｂに無いことで、復電時に負荷増加してしまう可能性も少ない。
【０１１８】
よって、本実施の形態において、Ｒｅａｄ命令を取得した対象データは、バックアップの必要性が小さいとして、Ｓｋｉｐ、即ち、バックアップを行わないこととしている。
【０１１９】
なお、上記ＣＰＵ２０１ｄの処理を行った結果、バックアップ管理テーブル２１３ａの全ビットが「０」を示している３ｂｉｔフラグは、Ｗｒｉｔｅ命令に基づくデータをキャッシングしていることを示す。Ｗｒｉｔｅ命令に基づくデータは、ホストから受信したデータであり、停電のタイミングによっては、ＨＤＤ２０３ａ〜ｚのいずれかに格納される前のデータも含まれている可能性がある。よって、停電時には、ＨＤＤ２０３ａ〜ｚより、優先度を高めてバックアップされる必要がある。
【０１２０】
よって、後述する停電時の処理において、このＷｒｉｔｅ命令は、二重バックアップ対象とされている構成情報などの特定情報と共にＮＡＮＤフラッシュ２０１ａへのバックアップが行われる。
【０１２１】
次に、これまで説明してきたキャッシュメモリ２０１ｂ、バックアップ管理テーブル２１３ａ、不良ブロック管理テーブル（ＴＢＭ）２１３ｂ、ＮＡＮＤフラッシュ２０１ａ、及び監視ＦＰＧＡ２０１ｈを用いた、停電発生時に、ＲＡＩＤ装置２００で行われる処理について図１０以降の図を用いて説明する。
【０１２２】
まず、監視ＦＰＧＡ２０１ｈの処理について図１０のフローチャートを用い、説明する。
【０１２３】
監視ＦＰＧＡ２０１ｈは、外部電源からの電力の供給が停止したことを検出する検出機能を有している。
【０１２４】
この監視ＦＰＧＡ２０１ｈは、外部電源からの電力の供給停止（停電）を検出した場合（Ｓ２００１）、ＣＰＵ２０１ｄに対して、停電通知を行なう（Ｓ２００２）。
【０１２５】
そして、監視ＦＰＧＡ２０１ｈは、タイマ２０１ｈ１をセットするとともに、ＭＲＡＭ２０１ｇに停電発生フラグを書きこむ（Ｓ２００３）。このタイマ２０１ｈ１は、上記したように、セットされてからの経過時間を出力するものである。
【０１２６】
そして、監視ＦＰＧＡ２０１ｈは、ＦＰＧＡ２０１ｃからエラーログを受信したかを確認する（Ｓ２００４）。
【０１２７】
ＦＰＧＡ２０１ｃからエラーログを受信した場合、監視ＦＰＧＡ２０１ｈは、ＭＲＡＭ２０１ｇのエラーログ記憶領域２０１ｇ３へ、受信したエラーログと、タイマ２０１ｈ１の出力値、即ち経過時間とを書きこむ（Ｓ２００５）。
【０１２８】
監視ＦＰＧＡ２０１ｈは、該書込みが完了、もしくは、Ｓ２００４の処理において、ＦＰＧＡ２０１ｃからのエラーログを受信しなかったと判断した場合、ＦＰＧＡ２０１ｃから、ＴＢＭ２１３ｂを受信したかを確認する（Ｓ２００６）。
【０１２９】
ここで、ＴＢＭ２１３ｂを受信したかを受信したと判断した場合、監視ＦＰＧＡ２０１ｈは、受信したＴＢＭ２１３ｂと、タイマ２０１ｈ１の出力値、即ち経過時間とを書きこむ（Ｓ２００７）。
【０１３０】
監視ＦＰＧＡ２０１ｈは、該書込みが完了、もしくは、Ｓ２００６の処理において、ＦＰＧＡ２０１ｃからのＴＢＭ２１３ｂを受信しなかったと判断した場合、タイマ２０１ｈ１の値が３０秒以上経過したことを示していないか確認する（Ｓ２００８）。
【０１３１】
ここで、３０秒経過していないと判断した場合、監視ＦＰＧＡ２０１ｈは、Ｓ２００４の処理へ移行する。
【０１３２】
また、３０秒経過していると判断した場合、監視ＦＰＧＡ２０１ｈは、装置の電源を
切断する処理を行い（Ｓ２００９）、処理を完了する。
【０１３３】
次に、ＣＰＵ２０１ｄの処理について、図１１のフローチャートを用いて説明する。
【０１３４】
ＣＰＵ２０１ｄは、他の処理と並行しながら監視ＦＰＧＡ２０１ｈからの停電通知があったかを判断している（Ｓ２０５０、Ｓ２０５１）。
【０１３５】
ここで、監視ＦＰＧＡ２０１ｈからの停電通知を受信したと判断した場合、ＦＰＧＡ２０１ｃへ停電処理のシーケンスを起動すべく、指示を行なった後（Ｓ２０５２）、Ｓｌｅｅｐモードへ移行する（Ｓ２０５３）。
【０１３６】
このように、通電時に本装置におけるキャッシュメモリ２０１ｂの管理を含むＲＡＩＤの制御を行なうＣＰＵ２０１ｄは、監視ＦＰＧＡ２０１ｈからの停電通知を行なうと、ＦＰＧＡ２０１ｃの停電処理のシーケンス起動指示を行なうのみで、実質的な退避処理は行わない。本実施の形態において、この退避処理は、ＦＰＧＡ２０１ｃ及び監視ＦＰＧＡ２０１ｈによって行われる。
【０１３７】
このようにする事で、停電時には、消費電力の大きいＣＰＵ２０１ｄを使用せずにキャッシュメモリ２０１ｂ上のデータの退避処理を行ない、装置全体の消費電力を下げることで、ＳＣＵ２０１ｅに蓄電された電力をより長時間使用することを可能としている。
【０１３８】
次に、本実施の形態において、停電が起きる直前の、キャッシュメモリ２０１ｂ、バックアップ管理テーブル２１３ａ、ＦＰＧＡフラッシュ２０１ａ、不良ブロック管理テーブル（ＴＢＭ）２１３ｂ、及びバックアップ完了フラグ２２０ａの状態について、図１２を用いて、補足説明する。
【０１３９】
なお、図１２の状態は、あくまで一例であり、通電時は、キャッシュメモリ２０１ｂに記憶されたデータの内容は、随時更新されており、停電直前に、必ず図１２になるというわけではない。
【０１４０】
まず、上記処理によって、バックアップ管理テーブル２１３ａの各３ｂｉｔフラグｃ０１〜ｃ１０は、対応するキャッシュメモリ２０１ｂの各テーブルｂ０１〜ｂ１０に記憶されたデータの種別に応じて、内容が決定している。
【０１４１】
本実施の形態の場合、図１２に示すように、キャッシュメモリ２０１ｂのテーブルｂ０１に構成情報が記憶されているため、対応する３ｂｉｔテーブルｃ０１の［２］ｂｉｔめ（Ｄｕａｌ）には「１」が格納されている。
【０１４２】
また、Ｃｏｐｙ命令に基づき取得された、テーブルｂ０４及びｂ１０のデータに対応する３ｂｉｔフラグｃ０４，ｃ１０の「１」ｂｉｔめのフラグ（Ｓｔａｙ）には「１」が格納されている。
【０１４３】
更に、Ｒｅａｄ命令に基づき取得された、テーブルｂ０２及びｂ０８のデータに対応する３ｂｉｔフラグｃ０２，ｃ０８の「０」ｂｉｔめのフラグ（Ｓｋｉｐ）には「１」が格納されている。
【０１４４】
また、ＦＰＧＡフラッシュ２０１の不良管理テーブル２１３ｂの項目ｄ０５の［Ｉｎｖａｌｉｄ］フラグには「１」が格納されている。即ち、この項目ｄ０５に対応するＮＡＮＤフラッシュ２０１ａのブロックａ０５は、不良ブロックであることを示している。
【０１４５】
この状態におけるＦＰＧＡ２０１ｃの処理について、図１３を用いて説明する。
【０１４６】
上記したように、監視ＦＰＧＡ２０１ｈは、停電を検出すると、ＣＰＵ２０１ｄへ停電通知を送信し、これを受信したＣＰＵ２０１ｄは、この停電通知に応じて、ＦＰＧＡ２０１ｃへ停電処理のシーケンス起動を指示する。
【０１４７】
ＦＰＧＡ２０１ｃは、他の処理と並行して、この停電処理のシーケンス起動指示を受信したかを判断している（Ｓ３０００，Ｓ３００１）。
【０１４８】
そして、まず、ＦＰＧＡ２０１ｃは、バックアップ管理テーブル２１３ａの３ｂｉｔフラグｃ０１〜ｃ１０のうち、［１］ｂｉｔめ（Ｓｔａｙ）、［０］ｂｉｔめ（Ｓｋｉｐ）が共に「０」となっている領域のキャッシュメモリ２０１ｂのデータを、ＮＡＮＤフラッシュ２０１ａへ書き込む処理を行なう（Ｓ３００２）。
【０１４９】
次に、メイン制御部２１４ａは、リード制御部２２２に、バックアップ管理テーブル２１３ａの３ｂｉｔフラグｃ０１〜ｃ１０のうち、［１］ｂｉｔめ（Ｓｔａｙ）が共に「１」となっている領域のキャッシュメモリ２０１ｂのデータを、ＮＡＮＤフラッシュ２０１ａへ書き込む処理を行なう（Ｓ３００３）。
【０１５０】
さらに、ＦＰＧＡ２０１ｃは、バックアップ管理テーブル２１３ａの３ｂｉｔフラグｃ０１〜ｃ１０のうち、［２］ｂｉｔめ（Ｄｕａｌ）が「１」となっている領域のキャッシュメモリ２０１ｂのデータを、ＮＡＮＤフラッシュ２０１ａへ書き込む処理を行なう（Ｓ３００４）。
【０１５１】
そして、これらの処理が完了すると、ＦＰＧＡ２０１ｃは、不良ブロック管理テーブル（ＴＢＭ）２１３ｂ内のデータを監視ＦＰＧＡ２０１ｈへ送信し（Ｓ３００５）、処理を完了する。
【０１５２】
なお、Ｓ３００２，Ｓ３００３、Ｓ３００４の処理は、対象となるキャッシュメモリ２０１ｂのデータの領域がことなる以外は、同じ処理を行っている。
【０１５３】
この処理について、図１４を用いて説明する。
【０１５４】
まず、ＦＰＧＡ２０１ｃのメイン制御部２１４ａは、リード制御部２２２に、バックアップ管理テーブル２１３ａの３ｂｉｔフラグｃ０１〜ｃ１０を参照して、対象となるキャッシュメモリ２０１ｂのデータを読み出せる（Ｓ４００１）。例えば、図１３のＳ３００２の処理において、ＦＰＧＡ２０１ｃは、３ｂｉｔテーブル２１３ａの［１］ｂｉｔめ（Ｓｔａｙ）、［０］ｂｉｔめ（Ｓｋｉｐ）が共に「１」ではないものに対応する、キャッシュメモリ２０１ｂのデータを読出させる。
【０１５５】
図１２の例では、バックアップ管理テーブル２１３ａのｃ０１，ｃ０３，ｃ０５，ｃ０６，ｃ０７，及びｃ０９が該当するので、リード制御部２２２は、キャッシュメモリ２０１ｂのテーブルｂ０１、ｂ０３、ｂ０５、ｂ０６、ｂ０７、及びｂ０９のデータを読み出す事になる。
【０１５６】
リード制御部２２２で読み出されたデータは、ＣＲＣ制御部２１４ｄ２を経由することにより、ＣＲＣコードが付与される（Ｓ４００２）。そしてＣＲＣコードが付与されたデータは、図１５に示されるように、ＮＡＮＤライト制御部２１４ｅが、不良ブロック管理テーブルが参照して、［０］Ｉｎｖａｌｉｄフラグもしくは［１］ｄｉｒｔｙフラグが［１］となっていないブロックに書き込みを行なう（Ｓ４００３）。
【０１５７】
なお、この際、ＣＲＣコード付与と共に、読み出し元であるキャッシュメモリ２０１ｂのテーブル名（ｂ０１など）を付与しても良い。このようにすれば、復電時、キャッシュの復元を行なう際に、ＦＰＧＡ２０１ｃは、この付与されたテーブル名を参照して、キャッシュメモリ２０１ｂの各テーブルｂ０１〜ｂ１０の各々に、停電時に格納されていたデータと同じデータを再格納させることが可能となる。
【０１５８】
この際、ＮＡＮＤライト制御部２１４ｅは、ＮＡＮＤフラッシュ２０１ａのブロックに書き込みを行う度に、ＮＡＮＤフラッシュ内部状態を確認し、書き込みエラーが起きていないかの検証を行なう（Ｓ４００４）。
【０１５９】
ここで、書き込んだデータにエラーがあると判定された場合（Ｓ４００５）、エラー送信部２１４ａ４は、監視ＦＰＧＡＩＦ制御部２１６を制御して、監視ＦＰＧＡ２０１ｈへ、どのブロックのエラーかを示すエラーログを送信する（Ｓ４００６）。また、この際、ＮＡＮＤライト制御部２１４ｅは、不良ブロック管理テーブルのエラーを起こしたＮＡＮＤフラッシュ２０１ａのブロックに対応する領域の［１］Ｉｎｖａｌｉｄを「１」に更新し（Ｓ４００７）、Ｓ４００３へ移行する。上記したようにＳ４００３の処理では、ＮＡＮＤライト制御部２１４ｅが、不良ブロック管理テーブルが参照して、［０］Ｉｎｖａｌｉｄフラグもしくは［１］ｄｉｒｔｙフラグが［１］となっていないブロックに書き込みを行なう為、エラーを起こしたブロックへの書込みは行われない事となる。
【０１６０】
例えば、図１５に示されるように、キャッシュメモリ２０１ｂのテーブルｂ０９のデータをＮＡＮＤフラッシュ２０１ａのブロックａ０７に記憶させ、検証でエラーが検出された場合、ＮＡＮＤライト制御部２１４ｅは、次のブロックａ０８に再書き込みを行うことになる。
【０１６１】
そして、データが正常に書き込めた場合、メイン制御部２１４ａは、キャッシュメモリ２０１ｂの対象データがすべて書き込まれたかを確認し（Ｓ４００８）、書きこまれていなければ、Ｓ４００１へ移行し、キャッシュメモリ２０１ｂから、次のデータを読み出し、すべてのデータの転送が行われるまで同様の処理を行う。
【０１６２】
なお、Ｓ４００７にてキャッシュメモリ２０１ｂの対象データがすべて書き込まれたと判断した場合、Ｓ３００２，Ｓ３００３，Ｓ３００４において、メイン制御部２１４ａは、以下の処理を行う。
Ｓ３００２の場合、メイン制御部２１４ａは、図１５に示されるように、バックアップ完了フラグ２２０ａの［０］（１ｓｔ）Ｂｉｔめのフラグを「１」にする。
Ｓ３００３の場合、メイン制御部２１４ａは、図１６に示されるように、バックアップ完了フラグ２２０ａの［１］（２ｎｄ）Ｂｉｔめのフラグを「１」にする。
Ｓ３００４の場合、メイン制御部２１４ａは、図１７に示されるように、バックアップ完了フラグ２２０ａの［３］（３ｒｄ）Ｂｉｔめのフラグを「１」にする。
なお、この処理では、Ｓｋｉｐフラグに「１」が格納された３ｂｉｔフラグｃ０２，ｃ０８に対応するキャッシュメモリ２０１ｂのテーブルｂ０２，ｂ０８に格納されたデータは、ＮＡＮＤフラッシュ２０１ａへの格納は行われない。即ち、これらのデータのバックアップは行われない。
【０１６３】
以上のように、本実施の形態では、停電発生時にキャッシュデータをＮＡＮＤフラッシュ２０１ａへバックアップする際、３ｂｉｔフラグに基づいて、キャッシュデータのバックアップの優先順位及びバックアップの可否の判定を行っている。
【０１６４】
このように構成することで、停電時、構成情報などの重要情報や、Ｗｒｉｔｅデータ等のＨＤＤ２０３ａ〜ｚのいずれにも記憶されない可能性があるデータを、先にＮＡＮＤフラッシュ２０１ａへ格納させることが可能となる。上記したようにＳＣＵ２０１ｅは、一時的にしか電力を供給できないため、先にバックアップを行なうほうが、データのバックアップの確実性が増すことになる。即ち、本実施の形態では、重要なデータほど優先的にバックアップされることとなる。
【０１６５】
更に、特に重要なデータに対しては、他のデータのバックアップのあと、二重書き込みを行なうことにより、より確実なバックアップを可能としている。なお、本実施の携帯において、二重書き込みは、Ｃｏｐｙ命令など、バックアップ優先度が低いデータの格納迄終わったあとに、２回目の書込みを行っている。これは、停電発生から早い時点で、かつ、一度はＣＲＣによる書込みチェックを行った上でデータをＮＡＮＤフラッシュ２０１ａに格納させており、１回である程度確実に保存が出来ているため、２回目書き込みは、万が一、そのデータが消失した場合の保険として格納させるものであるていどの意味合いがあるためである。
【０１６６】
なお、本実施の形態では、ＦＰＧＡ２０１ｃの処理によりバックアップ処理を行っている。これは、ＦＰＧＡ２０１ｃの高速性と省電力性によるものである。
ＣＰＵ２０１ｄ、ＦＰＧＡ２０１ｃ、及び、監視ＦＰＧＡ２０１ｈについて、上記してきた処理が行われた場合について図１８を使用して説明する。
【０１６７】
まず、監視ＦＰＧＡ２０１ｈは、停電を検出すると、ＣＰＵ２０１ｄへ停電通知を送信する（Ｓ５００１）とともに、タイマ２０１ｈ１を起動する（Ｓ５００２）。
【０１６８】
また、監視ＦＰＧＡ２０１ｈは、停電が発生した事を示す停電発生フラグをＭＲＡＭ２０１ｇへ記憶する。これら処理は、図１０に示されるＳ２００１〜Ｓ２００３の処理に基づく。
【０１６９】
監視ＦＰＧＡ２０１ｈからの停電通知を受信したＣＰＵ２０１ｄ（Ｓ５００３）は、ＦＰＧＡ２０１ｃへシーケンス起動の指示を行ったあと（Ｓ５００５）、Ｓｌｅｅｐモードへ移行する（Ｓ５００６）。これらの処理は、上記した図１１の処理に基づくものである。
【０１７０】
このシーケンス起動指示を受信したＦＰＧＡ２０１ｃは、ＮＡＮＤフラッシュ２０１ａへの書込・検証を行う（Ｓ５００７）。この検証時、書き込みエラーを検出した場合（Ｓ５００８）、ＦＰＧＡ２０１ｃは、監視ＦＰＧＡ２０１ｈにエラーログを送信し（Ｓ５００９）、不良ブロック管理テーブル（ＴＢＭ）２１３ｂを更新する（Ｓ５０１１）。これらの処理は、図１４のフローチャートの処理に基づくものである。
【０１７１】
このエラーログを受信した監視ＦＰＧＡ２０１ｈは、タイマ２０１ｈ１の経過時間とともに該エラーログをＭＲＡＭ２０１ｇへ書きこむ（Ｓ５０１０）。この処理は、Ｓ２００４，Ｓ２００５の処理に基づく。
【０１７２】
その後、ＦＰＧＡ２０１ｃによる再書き込みなどにより（Ｓ５０１１〜Ｓ５０１３）、キャッシュデータ２０１ｂの書込が完了すると、ＦＰＧＡ２０１ｃは、不良ブロック管理テーブル（ＴＢＭ）２１３ｂを、監視ＦＰＧＡ２０１ｈへ送信する（Ｓ５０１４）。これらの処理は、図１０のＳ２００６、Ｓ２００７の処理に基づく。
【０１７３】
この不良ブロック管理テーブル（ＴＢＭ）２１３ｂを受信した監視ＦＰＧＡ２０１ｈは、タイマ２０１ｈ１の経過時間と共に、該不良ブロック管理テーブル（ＴＢＭ）２１３ｂをＭＲＡＭ２０１ｇへ書き込む（Ｓ５０１５）。そして、監視ＦＰＧＡ２０１ｈは、書き込みが完了したことを示す完了フラグをＭＲＡＭ２０１ｇへ書き込む（Ｓ５０１６）。その後、監視ＦＰＧＡ２０１ｈは、タイマ２０１ｈ１が、３０秒経過したことを検出すると（Ｓ５０１７）、装置の電源をＯＦＦにする（Ｓ５０１８）。これらの処理は、図１０のＳ２００８，Ｓ２００９の処理に基づくものである。
【０１７４】
次に、通電が再開された場合についての処理について、図１９を用いて説明する。
【０１７５】
まず、ＣＰＵ２０１ｄは、電源の再投入に伴い起動すると（Ｓ６００１）、ＭＲＡＭ２０１ｇを参照して、停電発生フラグが記憶されているかを確認する（Ｓ６００２）。ここで、フラグが記憶されていなければ、図１９に示される、それ以降の処理は行わず、通常の起動を行うこととなる。
【０１７６】
次に、ＣＰＵ２０１ｄは、ＭＲＡＭ２０１ｇに、完了フラグが記憶されているかを確認する（Ｓ６００３）。ここで、完了フラグが記憶されていない場合は、キャッシュの書込に失敗したとして、キャッシュメモリ２０１ｂの復元を行わず、通常の起動を行う。
【０１７７】
また、完了したと判断した場合、ＭＲＡＭ２０１ｇに記憶している不良ブロック管理テーブル（ＴＢＭ）２１３ｂをＦＰＧＡ２０１ｃへ転送する（Ｓ６００４）。
【０１７８】
ここで、不良ブロック管理テーブル（ＴＢＭ）２１３ｂを受信したＦＰＧＡ２０１ｃは、受信した不良ブロック管理テーブル（ＴＢＭ）２１３ｂを格納する（Ｓ６００５）。
【０１７９】
そして、ＣＰＵ２０１ｄからのキャッシュメモリへの書込指示をＦＰＧＡ２０１ｃに指示すると（Ｓ６００６）、ＦＰＧＡ２０１ｃが、不良ブロック管理テーブル（ＴＢＭ）２１３ｂを参照しながら、適宜ＮＡＮＤフラッシュ２０１ａから、記憶しているキャッシュデータをＣＰＵ２０１ｄへ転送する（Ｓ６００７）。
【０１８０】
ＣＰＵ２０１ｄは、この転送されたキャッシュデータを、キャッシュメモリ２０１ｂに書きこむ（Ｓ６００８）。そして、キャッシュメモリ２０１ｂへ書込が完了すると（Ｓ６００９）、ＣＰＵ２０１ｄは、監視ＦＰＧＡ２０１ｈへ、ＭＲＡＭ２０１ｇに記憶されている内容（停電ログ）をすべて消去する指示を行う（Ｓ６０１０）。
【０１８１】
この処理を受信した監視ＦＰＧＡ２０１ｈは、ＭＲＡＭ２０１ｇの停電時のログ内容を消去する（Ｓ６０１１）。
【０１８２】
そして、ＣＰＵ２０１ｄは、初期化が完了したことを示すフラグを監視ＦＰＧＡ２０１ｈへ転送し（Ｓ６０１２）、監視ＦＰＧＡ２０１ｈがこのフラグを記憶する（Ｓ６０１３）ことで、該復電処理は完了する。
【０１８３】
この情報を受信した監視ＦＰＧＡ２０１ｈは、該フラグを記憶する。
【０１８４】
以上によって、復電時のキャッシュの復元が行われる。
【０１８５】
以上のように、本実施の形態では、ＣＰＵ２０１ｄを、停電時のキャッシュメモリ２０１ｂのＮＡＮＤフラッシュ２０１ａへの転送に利用しない。ＣＰＵ２０１ｄは、汎用プロセッサを使用することが多く、ＲＡＩＤを制御するための複雑な処理な処理を可能としている。しかしながら、複雑な処理が可能である反面、消費電力が大きいことが多い。そこで、本実施の形態のように、ＦＰＧＡ２０１ｃ、監視ＦＰＧＡ２０１ｈのよう別途停電時用の構成要素を有していれば、停電時に、ＣＰＵ２０１ｄを使用しなくとも、ＭＲＡＭ２０１ｇへの書込を行うことができる。このＦＰＧＡ２０１ｃや監視ＦＰＧＡ２０１ｈは、消費電力の関係上、高速化したり、複雑な処理を行わせることが困難である。
【０１８６】
そのため、従来ではＣＰＵ２０１ｄが、停電時に行っていた、エラーログの生成などの複雑な処理を行うことができない。このエラーログは、停電時のＦＰＧＡ２０１ｃの書込に当たり、新たに不良と判断されたブロックが、どのブロックかなどの情報を記憶しているテーブルである。
【０１８７】
しかしながら、ファイルをまとめて保存するような複雑な処理を行わずとも、同様の記憶を行わせるために、本実施の形態では、監視ＦＰＧＡ２０１ｈに、タイマ２０１ｈ１を持たせると共に、単純に、ＦＰＧＡ２０１ｃから受信した経過時間とともに記憶させておくようにしている。
これにより、１つのファイルにまとめるような複雑な処理を行わずとも、ＭＲＡＭ２０１ｇに記憶されたエラーログを参照すれば、新たにＮＡＮＤフラッシュ２０１ａでエラー検出されたブロックを確認することも可能となる。
【符号の説明】
【０１８８】
２００  ＲＡＩＤ装置
２０１  ＣＭ
２０１ａ  ＮＡＮＤフラッシュ
２０１ｂ  キャッシュメモリ
２０１ｃ  ＦＰＧＡ
２０１ｄ  ＣＰＵ
２０１ｅ  ＳＣＵ
２０１ｆ  Ｅｘｐ
２０１ｇ  ＭＲＡＭ
２０１ｈ  監視ＦＰＧＡ
２０２  ＰＳＵ
２０３ａ〜ｚ  ＨＤＤ
２１１、２１５  ＩＦ制御部
２１２  アクセスコントローラ
２１３  アクセス管理テーブル
２１３ａ  バックアップ管理テーブル
２１３ｂ  不良ブロック管理テーブル（ＴＢＭ）
２１４  ＴＲＮ
２１４ａ  メイン制御部
２１４ｂ  リード部
２１４ｃ  エラー制御部
２１４ｄ１  データバッファ部
２１４ｄ２  ＣＲＣ生成部
２１４ｅ  ＮＡＮＤライト制御部
２１６    監視ＦＰＧＡＩＦ制御部
２１７  キャッシュＩＦ制御部
２１８  ＴＢＭ送信部
２２０ａ  バックアップ完了フラグ
【図１】
0005742362.tif 000002
【図２】
0005742362.tif 000003
【図３】
0005742362.tif 000004
【図４】
0005742362.tif 000005
【図５】
0005742362.tif 000006
【図６】
0005742362.tif 000007
【図７】
0005742362.tif 000008
【図８】
0005742362.tif 000009
【図９】
0005742362.tif 000010
【図１０】
0005742362.tif 000011
【図１１】
0005742362.tif 000012
【図１２】
0005742362.tif 000013
【図１３】
0005742362.tif 000014
【図１４】
0005742362.tif 000015
【図１５】
0005742362.tif 000016
【図１６】
0005742362.tif 000017
【図１７】
0005742362.tif 000018
【図１８】
0005742362.tif 000019
【図１９】
0005742362.tif 000020
【図２０】
0005742362.tif 000021