(57)【要約】【課題】電源遮断／リセットによるデータ消失からデータを保護して信頼性を向上させる。【解決手段】データが記憶される複数のフラッシュメモリブロックによって構成されるフラッシュメモリ部１１と、フラッシュメモリ部１１を構成する各ブロック毎にデータ状態、論理アドレス、論理ブロック番号、ブロック状態、フラッシュメモリ部の書き換え回数、フラッシュメモリ部の再構築時の情報である再構築対象の物理ブロック番号およびブロック書き換え回数が記憶されるブロック状態保持部１２と、外部からのデータ書き込み／読み出し要求に従って、フラッシュメモリ部１１へのデータ書き込み／データ読み出しおよびブロック状態保持部１２の制御を行うデータ制御部１０とを有する。フラッシュメモリ部１１のデータ書き込み／消去処理においてデータ状態が変化する毎に、ブロック状態保持部１２のデータ状態／ブロック状態を順次変化させる。【選択図】    図１
2004152331.tif 000002
【特許請求の範囲】
【請求項１】
データが記憶される複数のフラッシュメモリブロックによって構成されるフラッシュメモリ部と、
該フラッシュメモリ部を構成する各ブロック毎に、当該ブロックへのデータ記憶状態、当該ブロックに含まれる物理領域へのデータ記憶状態、記憶データのアドレス情報およびフラッシュメモリ部の再構築処理時に用いられる情報が記憶されるブロック状態保持部と、
外部からデータの書き込みが指示された場合に、該ブロック状態保持部の情報に従って該フラッシュメモリ部へデータを書き込むと共に該ブロック状態保持部の情報更新を行い、該フラッシュメモリ部のブロック毎に新しいデータを書き込む領域が無くなった場合に、当該ブロックを再構築して書き込み領域を確保すると共に該ブロック状態保持部の情報更新を行い、外部からデータの読み出しが指示された場合に、該ブロック状態保持部の情報に従って該フラッシュメモリ部からデータを読み出すデータ制御部とを備えている記憶装置。
【請求項２】
前記ブロック状態保持部は、前記ブロックおよびブロックに含まれる物理領域へのデータ記憶状態としてブロック状態およびデータ状態が記憶され、記憶データのアドレス情報として論理アドレスおよび論理ブロック番号が記憶され、フラッシュメモリ部の再構築処理時に用いられる情報としてフラッシュメモリ部のブロック書き換え回数、再構築対象の物理ブロック番号および再構築対象のブロック書き換え回数が記憶される請求項１に記載の記憶装置。
【請求項３】
前記データ制御部は、電源投入／リセット後において、前記ブロック状態保持部のブロック状態を参照して、前記フラッシュメモリ部の再構築中に電源遮断／リセットが発生していないかを確認し、該フラッシュメモリ部の再構築中に電源遮断／リセットが発生していた場合には、該フラッシュメモリ部および該ブロック状態保持部を修復すると共に、該ブロック状態保持部のデータ状態を参照して、前記フラッシュメモリ部へのデータ書き込み中またはブロック状態保持部の情報更新中に電源遮断／リセットが発生していないかを確認し、該フラッシュメモリ部へのデータ書き込み中またはブロック状態保持部の情報更新中に電源遮断／リセットが発生していた場合には、該ブロック状態保持部を修復する請求項２に記載の記憶装置。
【請求項４】
前記フラッシュメモリ部およびブロック状態保持部はそれぞれ再構築用領域を有し、再構築が行われる度に、該再構築用領域と再構築対象となった領域とが入れ替えられる請求項１〜３のいずれかに記載の記憶装置。
【請求項５】
前記データ制御部は、前記フラッシュメモリ部の再構築処理が必要な場合に、再構築対象のブロックのデータを、ブロック状態保持部に記憶されたデータ状態に従って再構築用領域へコピーした後、当該再構築対象のブロックのデータを消去させる請求項４に記載の記憶装置。
【請求項６】
前記ブロック状態保持部は、複数のフラッシュメモリブロックによって構成されている請求項１〜５のいずれかに記載の記憶装置。
【請求項７】
前記データ制御部は、電源投入／リセット後に、前記フラッシュメモリ部の物理ブロック番号および論理ブロック番号の対応関係をテーブルとして保持し、該フラッシュメモリ部およびブロック状態保持部へのアクセス時に該テーブルを参照する請求項１〜６のいずれかに記載の記憶装置。
【請求項８】
前記ブロック状態保持部は、データ状態として、未使用、データ書き込み中、論理アドレス書き込み中、旧データ無効化中、有効および無効の６種類の情報のうちのいずれかが記憶される請求項２〜７のいずれかに記載の記憶装置。
【請求項９】
前記ブロック状態保持部は、ブロック状態として、未使用、コピー中、ブロック消去中および有効の４種類の情報のうちのいずれかが記憶される請求項２〜８のいずれかに記載の記憶装置。
【請求項１０】
前記データ制御部は、前記フラッシュメモリ部へのデータ書き込みまたは再構築処理において、該フラッシュメモリ部に記憶されているデータの状態を変化させる度に、前記ブロック状態保持部に記憶されているデータ状態またはブロック状態を順次変化させる請求項２〜９のいずれかに記載の記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性半導体メモリとしてフラッシュメモリを用いた記憶装置に関する。
【０００２】
【従来の技術】
不揮発性半導体メモリとしてフラッシュメモリを用いた従来のデータ記憶装置として、例えば、特許文献１には、フラッシュメモリをバックアップメモリとして用いたデータ記憶装置が開示されている。
【０００３】
図１６は、特許文献１に開示されているデータ記憶装置の構成を示すブロック図である。
【０００４】
このデータ記憶装置１０２は、データ記憶装置１０２に対してデータの読み出し／書き込みを要求するホスト（ホスト計算機）１０１と接続されている。データ記憶装置１０２は、ホストインタフェース部１１０、記憶回路制御手段１１１、フラッシュメモリ部１１２、書き換え情報保持部１１３およびメモリ部１１４によって構成されている。
【０００５】
ホストインタフェース部１１０は、ホスト１０１から指示されたデータの読み出し／書き込みを行う際に、ホスト１０１と記憶装置１０２との間のインタフェースを制御する。記憶回路制御手段１１１は、ホストインタフェース部１１０、フラッシュメモリ部１１２、書き換え情報保持部１１３およびメモリ部１１４のそれぞれを制御する。
【０００６】
フラッシュメモリ部１１２は、複数のフラッシュメモリブロックによって構成され、メモリ部１１４のバックアップメモリとして用いられる。書き換え情報保持部１１３は、複数のフラッシュメモリブロックによって構成され、フラッシュメモリ部１１２のデータが書き換えられる毎に、書き換えアドレスおよび書き換えデータが記憶される。また、書き換え情報保持部１１３には、フラッシュメモリ部１１２の書き換え回数も記憶される。メモリ部１４は、ＲＡＭ等によって構成され、常に最新のデータが記憶される。
【０００７】
以下に、フラッシュメモリ部１１２、書き換え情報保持部１１３およびメモリ部１１４の内部構成、並びに記憶回路制御手段１１１の動作について、図１７〜図２０を用いて説明する。
【０００８】
図１７は、従来のデータ記憶装置１０２の起動／リセット時におけるメモリ部１１４、フラッシュメモリ部１１２および書き換え情報保持部１１３の状態の一例を示す図である。また、図１８は、メモリ部１１４のデータ書き換え時の状態の一例を示す図であり、図１９および図２０は、フラッシュメモリ部１１２のデータ書き換え時の状態の一例を示す図である。
【０００９】
メモリ部１１４は、（ｍ＋１）ワードに分けられており、最新のデータが記憶されている。各ワードにはアドレス”０”〜”ｍ”が割り当てられており、これらのアドレスは、記憶回路制御手段１１１からのアクセス時に利用される。
【００１０】
フラッシュメモリ部１１２は、メモリ部１１４と同様に（ｍ＋１）ワードに分けられて各ワードにアドレス”０”〜”ｍ”が割り当てられており、メモリ部１１４の各アドレスに対応するデータのバックアップデータが記憶されている。
【００１１】
書き換え情報保持部１１３は、（ｎ＋１）ワードに分けられており、メモリ部１１４の全データがフラッシュメモリ部１１２へバックアップされた後にメモリ部１１４のデータが書き換えられた場合、そのアドレスおよびデータがセットで記憶される。書き換え状態保持部１１３の各ワードには、アドレス”０”〜”ｎ”が割り当てられており、これらのアドレスは、記憶回路制御手段１１１からのアクセス時に利用される。アドレス番地”ｎ”のワードには、対応するフラッシュメモリ部１１２の書き換え回数が記憶される。また、書き換え情報記憶部１１３に記憶されるアドレスおよびデータは、この順に、先頭アドレスから未書き込みワードに記憶される。
【００１２】
図１７に示すデータ記憶装置１０２の起動／リセット時において、記憶回路制御手段１１１は、フラッシュメモリ部１１２の全データを、対応するメモリ部１１４へコピーする。記憶回路制御手段１１１は、書き換え情報保持部１１３を、先頭のアドレスから順に未書き込みワードが見つかるまで検索し、書き換えデータが存在する場合には、メモリ部１１４において書き換えアドレスに対応するアドレスに記憶されているデータを、書き換え情報保持部１１３に記憶されている書き換えデータに書き換える。
【００１３】
図１７の例では、書き換え情報保持部１１３のアドレス番地”０”およびアドレス番地”１”の領域に、メモリ部１１４のアドレス”１”（書き換えアドレス０００１Ｈ：Ｈは１６進数を示す。以下同様）および書き換えデータ”Ｆ２Ｆ３Ｈ”が記憶されている。よって、メモリ部１１４のアドレス番地”１”のデータは、フラッシュメモリ部１１２のアドレス番地”１”の領域からコピーされたデータ”０２０３Ｈ”から、”Ｆ２Ｆ３Ｈ”へ書き換えられる。以上により、メモリ１１４のデータが最新の状態へ復帰される。
【００１４】
また、図１８に示すメモリ部１１４のデータ書き換えは、ホスト１０１からホストインタフェース部１１０を介してメモリ部１１４のデータ書き換えが指示された場合に行われる。このとき、記憶回路制御手段１１１は、メモリ部１１４の指示されたアドレスのデータを書き換える。記憶回路制御手段１１１は、書き換え情報保持部１１３の未書き込みワードに、書き換えアドレスおよび書き換えデータを順に記憶させる。
【００１５】
図１８の例では、メモリ部１１４のアドレス番地”４”のデータが”Ｅ８Ｃ９Ｈ”へ書き換えられている。また、書き換え情報保持部１１３のアドレス番地”２”の領域に書き換えアドレス４が記憶され、書き換え情報保持部１１３のアドレス番地”３”の領域に書き換えデータ”Ｅ８Ｃ９Ｈ”が記憶されている。このとき、フラッシュメモリ部１１２のデータは変化しない。
【００１６】
また、図１９および図２０に示すフラッシュメモリ部１１２のデータ書き換えは、メモリ部１１４の書き換えを繰り返した結果、書き換え情報保持部１１３の未書き込みワードを使い切った場合、または、メモリ部１１４のデータ書き換えによって書き換え情報保持部１１３の未書き込みワードが不足する場合に行われる。まず、図１９に示すように、記憶回路制御手段１１１は、フラッシュメモリ部１１２の全データを消去する。次に、図２０に示すように、メモリ部１１４の全データをフラッシュメモリ部１１２へコピーする。メモリ部１１４のデータ書き換えに備えて、書き込み情報保持部１１３の全情報を消去し、（書き換え回数＋１）を新たな書き換え回数としてアドレスｎへ記憶させる。
【００１７】
図２０の例では、書き込み情報保持部１１３の全情報が消去され、フラッシュメモリ部１１２の書き換え回数”３”（＝２＋１）がアドレス番地”ｎ”の領域に記憶されている。
【００１８】
【特許文献１】
特許第３１６６６５９号公報
【００１９】
【発明が解決しようとする課題】
上述した特許文献１に開示されているデータ記憶装置１０２においては、フラッシュメモリ部１１２のデータ書き換えを行う際に、図２０に示すようにメモリ部１１４のデータをバックアップする（フラッシュメモリ部１１２にメモリ部１１４のデータをコピーする）ために、まず、図１９に示すように、フラッシュメモリ部１１２にバックアップされているデータを消去する必要がある。
【００２０】
このため、フラッシュメモリ部１１２のデータ消去が開始されてから、メモリ部１１４のデータをフラッシュメモリ部１１２へコピー完了するまでの間に、データ記憶装置１０２の電源が遮断されるか、またはデータ記憶装置１０２がリセットされると、メモリ部１１４のデータが消失されることは当然のことながら、さらに、フラッシュメモリ部１１２のバックアップデータも消去されているために、フラッシュメモリ部１１２のデータを用いてメモリ部１１４のデータを復帰させることも不可能であるという問題点を有している。
【００２１】
本発明は、上記従来の問題を解決するもので、電源遮断／リセットによるデータ消失からデータを保護して信頼性を向上させることができる記憶装置を提供することを目的とする。
【００２２】
【課題を解決するための手段】
本発明の記憶装置は、データが記憶される複数のフラッシュメモリブロックによって構成されるフラッシュメモリ部と、該フラッシュメモリ部を構成する各ブロック毎に、当該ブロックへのデータ記憶状態、当該ブロックに含まれる物理領域へのデータ記憶状態、記憶データのアドレス情報およびフラッシュメモリ部の再構築処理時に用いられる情報が記憶されるブロック状態保持部と、外部からデータの書き込みが指示された場合に、該ブロック状態保持部の情報に従って該フラッシュメモリ部へデータを書き込むと共に該ブロック状態保持部の情報更新を行い、該フラッシュメモリ部のブロック毎に新しいデータを書き込む領域が無くなった場合に、当該ブロックを再構築して書き込み領域を確保すると共に該ブロック状態保持部の情報更新を行い、外部からデータの読み出しが指示された場合に、該ブロック状態保持部の情報に従って該フラッシュメモリ部からデータを読み出すデータ制御部とを備えておりそのことにより上記目的が達成される。
【００２３】
前記ブロック状態保持部は、前記ブロックおよびブロックに含まれる物理領域へのデータ記憶状態としてブロック状態およびデータ状態が記憶され、記憶データのアドレス情報として論理アドレスおよび論理ブロック番号が記憶され、フラッシュメモリ部の再構築処理時に用いられる情報としてフラッシュメモリ部のブロック書き換え回数、再構築対象の物理ブロック番号および再構築対象のブロック書き換え回数が記憶される。
【００２４】
前記データ制御部は、電源投入／リセット後において、前記ブロック状態保持部のブロック状態を参照して、前記フラッシュメモリ部の再構築中に電源遮断／リセットが発生していないかを確認し、該フラッシュメモリ部の再構築中に電源遮断／リセットが発生していた場合には、該フラッシュメモリ部および該ブロック状態保持部を修復すると共に、該ブロック状態保持部のデータ状態を参照して、前記フラッシュメモリ部へのデータ書き込み中もしくはブロック状態保持部の情報更新中に電源遮断／リセットが発生していないかを確認し、該フラッシュメモリ部へのデータ書き込み中もしくはブロック状態保持部の情報更新中に電源遮断／リセットが発生していた場合には、該ブロック状態保持部を修復することができる。
【００２５】
前記フラッシュメモリ部および前記ブロック状態保持部は、それぞれ再構築用領域を有し、再構築が行われる度に、再構築用領域と再構築対象となった領域とが入れ替えられる。
【００２６】
前記データ制御部は、前記フラッシュメモリ部の再構築処理が必要な場合に、再構築対象のブロックのデータを、ブロック状態保持部に記憶されたデータ状態に従って再構築用領域へコピーした後、当該再構築対象のブロックのデータを消去させる。
【００２７】
前記ブロック状態保持部は、複数のフラッシュメモリブロックによって構成されている。
【００２８】
前記データ制御部は、電源投入／リセット後に、前記フラッシュメモリ部の物理ブロック番号および論理ブロック番号の対応関係をテーブルとして保持し、該フラッシュメモリ部および前記ブロック状態保持部へのアクセス時に該テーブルを参照することができる。
【００２９】
前記ブロック状態保持部は、データ状態として、未使用、データ書き込み中、論理アドレス書き込み中、旧データ無効化中、有効および無効の６種類の情報のうちのいずれかが記憶される。
【００３０】
前記ブロック状態保持部は、ブロック状態として、未使用、コピー中、ブロック消去中および有効の４種類の情報のうちのいずれかが記憶される。
【００３１】
前記データ制御部は、前記フラッシュメモリ部へのデータ書き込みまたは再構築処理において、該フラッシュメモリ部に記憶されているデータの状態を変化させる度に、前記ブロック状態保持部に記憶されているデータ状態またはブロック状態を順次変化させる。
【００３２】
以下に、本発明の作用について説明する。
【００３３】
本発明においては、フラッシュメモリ部は、データが記憶される複数のフラッシュメモリブロックによって構成されている。各ブロックはｋ個の物理的な領域に分けられており、各領域にはアドレス０〜ｋ−１が割り当てられている。このアドレス（物理アドレス）は、データ制御部からのアクセス時に利用される。また、フラッシュメモリ部を構成するブロックのうち、１個のブロックがフラッシュメモリ部の再構築時に使用されるブロック（再構築用領域）として割り当てられ、この再構築用領域へのデータ記憶は行われない。この再構築用領域は、再構築が行われる度に、再構築対象となったブロックと入れ替えられることによって、再利用することができる。
【００３４】
不揮発性半導体メモリであるフラッシュメモリ部に常に最新のデータを記憶させることができるので、特許文献１に開示されているデータ記憶装置のように、予期しない電源遮断／リセットによるデータ消失からデータを保護することができる。
【００３５】
ブロック状態保持部は、複数のブロックに分けられており、フラッシュメモリ部を構成するブロック毎に、そのブロックへのデータ記憶状態およびそのブロックに含まれる物理領域へのデータ記憶状態としてブロック状態およびデータ状態が記憶され、記憶データのアドレス情報として論理ブロック番号および論理アドレスが記憶され、フラッシュメモリ部の再構築処理時に用いられる情報としてフラッシュメモリ部のブロック書き換え回数、再構築対象の物理ブロック番号および再構築対象のブロック書き換え回数が記憶されている。ブロック状態保持部は、１個のブロックがフラッシュメモリ部の再構築時に使用される再構築用領域として割り当てられており、この再構築用領域には情報が記憶されない。この再構築用領域は、再構築が行われる度に、再構築対象となったブロックと入れ替えられることによって、再利用することができる。
【００３６】
フラッシュメモリ部にデータを書き込む際にブロック状態保持部の情報更新を行い、フラッシュメモリ部のブロックを再構築する際にブロック状態保持部の情報更新を行うことによって、常に最新の情報をブロック状態保持部に記憶させることができる。また、フラッシュメモリ部へのデータ書き込み（書き換え）またはフラッシュメモリ部の再構築時のデータ消去処理において、データ状態またはブロック状態を順次変化させることによって、記憶装置の電源遮断／リセットによるデータ消失に対して、フラッシュメモリ部の書き換え時を含めたあらゆる状況で記憶装置内のデータを保護することが可能となる。
【００３７】
このブロック状態保持部は、フラッシュメモリで構成することによって、記憶装置における不揮発性半導体メモリをフラッシュメモリのみで構成することができるため、複数種類のメモリを混在させる必要がなく、部品点数を削減することが可能となる。この場合、ブロック状態保持部は、フラッシュメモリ部と物理的に同一のブロック、または物理的に異なるブロックのいずれに配置しても良い。
【００３８】
データ制御部は、フラッシュメモリ部のデータにアクセスする際に、物理アドレス順には不連続であるデータを、ブロック状態保持部に記憶された各領域のデータ状態、その論理的なアドレスおよび論理ブロック番号に従って、論理的に連続しているように変換して、フラッシュメモリ部からのデータの読み出しおよびフラッシュメモリ部へのデータの書き込みを行うことができる。これによって、外部からは、フラッシュメモリ部内のデータ配置を意識することなく、フラッシュメモリ部へのアクセスが可能となる。
【００３９】
また、データ制御部は、フラッシュメモリ部の再構築処理が必要な状態であるか否かを判断して、再構築処理が必要な場合に、そのブロックのデータを、ブロック状態保持部に記憶されたデータ状態に従って再構築用ブロックへコピーした後、そのブロックのデータを消去させることができる。これによって、特許文献１に開示されているデータ記憶装置のように、フラッシュメモリ部の再構築中にデータ記憶装置の電源遮断／リセットが生じても、フラッシュメモリ部のデータが消失されることはない。
【００４０】
また、データ制御部は、フラッシュメモリ部の再構築中に予期しない記憶装置の電源遮断／リセットが生じても、ブロック状態保持部のブロック状態を参照することによって、フラッシュメモリ部およびブロック状態保持部を修復することができる。また、データ制御部は、フラッシュメモリ部へのデータ書き込み中もしくはブロック状態保持部の情報更新中に予期しない記憶装置の電源遮断／リセットが生じても、ブロック状態保持部のデータ状態を参照することによって、ブロック状態保持部を修復することができる。
【００４１】
【発明の実施の形態】
以下に、本発明の実施の形態について、図面に基づいて説明する。
【００４２】
図１は、本発明の一実施形態であるデータ記憶装置１の構成を示すブロック図である。
【００４３】
このデータ記憶装置１は、データ制御部１０、フラッシュメモリ部１１およびブロック状態保持部１２によって構成されている。
【００４４】
フラッシュメモリ部１１は、複数のフラッシュメモリブロックによって構成されており、データ制御部１０を介して指示されたデータが記憶される。
【００４５】
ブロック状態保持部１２は、複数のフラッシュメモリブロックによって構成されており、各ブロックは、フラッシュメモリ部１１のブロックにそれぞれ対応している。ブロック状態保持部１２には、フラッシュメモリ部１１において対応する各ブロック毎に、当該ブロックへのデータ記憶状態に関する情報、当該ブロックに含まれる物理領域へのデータ記憶状態に関する情報、データのアドレス情報およびフラッシュメモリ部１１の再構築処理時に用いられる情報が記憶されており、フラッシュメモリ部１１において対応するブロックにデータが書き込まれたり、再構築処理が行われる度に、ブロック状態保持部１２の情報が更新される。
【００４６】
データ制御部１０は、データ記憶装置１の外部からデータ書き込み／読み出しが要求されると、その要求に従って、フラッシュメモリ部１１へのデータ記憶／データ読み出し、およびフラッシュメモリ部１１の各ブロックに対応するブロック状態保持部１２を制御する。
【００４７】
次に、フラッシュメモリ部１１およびブロック状態保持部１２の内部構成について、図２を用いて説明する。
【００４８】
フラッシュメモリ部１１を構成する各ブロックは、図２（ｂ）に示すように、ｋ個の物理的な領域に分けられており、データ制御部１０を介して書き込み指示されたデータが記憶されている。各物理的な領域には、アドレス（物理アドレス）”０”〜”ｋ−１”が割り当てられており、これらのアドレスは、データ制御部１０からのアクセス時に利用される。フラッシュメモリ部１１において、物理的な領域には、それぞれ、データ制御部１０によって書き込み指示された順にデータが記憶されている。この物理的なデータ配置は、図２（ａ）に示す論理的なデータ配置とは異なっているため、データ制御部１０からのアクセス時には、物理ブロック番号と論理ブロック番号との変換が行われると共に、各ブロック内の論理アドレス（”０”〜”ｉ−１”）と物理アドレスとの変換が行われる。
【００４９】
ブロック状態保持部１２を構成する各ブロックは、図２（ｃ）に示すように、ｋ個のデータ状態保持領域および論理アドレス保持領域を有しており、フラッシュメモリ部１１において対応するブロックのデータ（図２（ａ）に示す論理的な領域のデータ）が書き換えられる際に、そのデータ状態および論理アドレスが各領域毎に記憶される。また、ブロック状態保持部１２を構成する各ブロックは、対応するフラッシュメモリ部１１の論理ブロック番号、ブロック状態およびそのブロックの書き換え回数、並びにフラッシュメモリ部１１の再構築処理時に用いられる情報であるデータコピー元（再構築対象）の物理ブロック番号およびデータコピー元のブロック書き換え回数が記憶される領域を有している。
【００５０】
図３は、フラッシュメモリ部１１を構成するｎ個のブロックの物理的な順序関係を表す物理ブロック番号と論理的な順序関係を表す論理ブロック番号との対応関係の一例をテーブル（ブロック番号テーブル）として示す図である。
【００５１】
例えば、物理ブロック番号０のブロックには論理ブロック番号”０”のデータが記憶され、物理ブロック番号１のブロックに論理ブロック番号”ｎ−２”のデータが記憶されている。また、物理ブロック番号”２”のブロックは未使用であり、データが記憶されていない。データ制御部１０は、データ記憶装置１への電源投入／リセット後に、このような物理ブロック番号と論理ブロック番号との対応関係をテーブルとして、フラッシュメモリ部１１およびブロック状態保持部１２へのアクセス時に参照することによって、フラッシュメモリ部１１およびブロック状態保持部１２へのアクセスを円滑に行うことができる。
【００５２】
図４は、ブロック状態保持部１２のデータ状態遷移を示す図である。
【００５３】
データ状態としては、未使用”ＦＦＨ”、データ書き込み中”ＦＥＨ”、論理アドレス書き込み中”ＦＣＨ”、旧データ無効化中”Ｆ８Ｈ”、有効”Ｆ０Ｈ”および無効”００Ｈ”の６種類の状態を有しており、矢印の方向へ状態が遷移する。
【００５４】
ここで、未使用は、フラッシュメモリ部１１の対応する領域にデータが記憶されていないことを示し、有効および無効は、それぞれ、フラッシュメモリ部１１の対応する領域に記憶されているデータが有効および無効であることを示す。また、データ書き込み中は、フラッシュメモリ部１１の対応する領域に対してデータの書き込み中（またはデータのコピー中）であることを示し、論理アドレス書き込み中は、ブロック状態保持部１２に対して論理アドレスの書き込み中であることを示し、旧データ無効化中は、フラッシュメモリ部１１の対応する領域のデータが書き換えられたことによってブロック状態保持部１２のデータ状態を更新中であることを示す。
【００５５】
図５は、ブロック状態保持部１２のブロック状態遷移を示す図である。
【００５６】
フラッシュメモリ部１１のブロック状態としては、未使用”ＦＦＨ”、コピー中”ＦＥＨ”、ブロック消去中”ＦＣＨ”および有効”Ｆ０Ｈ”の４種類の状態を有しており、矢印の方向へ状態が遷移する。
【００５７】
ここで、未使用は、フラッシュメモリ部１１の対応するブロック（論理ブロック）にデータが記憶されていないことを示し、有効は、フラッシュメモリ部１１の対応するブロックに有効なデータが記憶されていることを示す。また、コピー中は、そのブロックが再構築用ブロックであり、フラッシュメモリ部１１およびブロック状態保持部１２において、再構築対象のブロックから再構築用ブロックへデータがコピーされている途中であることを示し、ブロック消去中は、そのブロックが再構築用ブロックであり、フラッシュメモリ部１１およびブロック状態保持部１２において、再構築対象のブロックからデータが消去されている途中であることを示す。
【００５８】
次に、このように構成されたデータ記憶装置１の動作について説明する。
【００５９】
まず、フラッシュメモリ部１１からのデータ読み出し時の動作について、図２、図３、図４および図６を用いて説明する。
【００６０】
図２は、データ記憶装置１において、フラッシュメモリ部１１からのデータ読み出し時におけるフラッシュメモリ部１１およびブロック状態保持部１２の状態の一例を示す図である。図２（ａ）は、フラッシュメモリ部１１のデータ内容（論理的な配置）を示し、図２（ｂ）は、フラッシュメモリ部１１のデータ内容（物理的な配置）を示し、図２（ｃ）は、ブロック状態保持部１２のデータ内容を示す。
【００６１】
図２（ｂ）に示すように、フラッシュメモリ部１１の各領域（物理領域）には、データ制御部１０を介して書き込み指示された順にデータが記憶されている。例えば、図２（ｂ）に示すブロックには、論理ブロック番号”０００１Ｈ”のデータが記憶されてブロック状態が有効”Ｆ０Ｈ”となっており、図２（ａ）に示す論理アドレス”０”のデータ”０００１Ｈ”が図２（ｂ）に示す物理アドレス”０”の領域に記憶され、図２（ａ）に示す論理アドレス”１”のデータ”Ａ２９３Ｈ”が図２（ｂ）に示す物理アドレス”ｊ＋３”の領域に記憶されている。また、このブロックは、ブロックの書き換えが２回（”０００００００２Ｈ”）行われている。
【００６２】
データ制御部１０は、図２（ｃ）に示すように、対応するブロック状態保持部１２に記憶されているデータ状態を参照することによって、フラッシュメモリ部１１のデータ状態を得ることができる。この図２の例では、フラッシュメモリ部１１の物理アドレス”０”、”３”および”ｊ”〜”ｊ＋３”の領域にデータ状態が有効”Ｆ０Ｈ”なデータが記憶されており、物理アドレス”１”、”２”および”４”の領域にはデータ状態が無効”００Ｈ”なデータが記憶されており、物理アドレス”ｋ−２”および”ｋ−１”の領域は未使用”ＦＦＨ”となっている。
【００６３】
図６は、フラッシュメモリ部１１のデータ読み出し時におけるデータ制御部１０の動作を示すフローチャートである。
【００６４】
データ記憶装置１の外部からデータの読み出しが要求されると、データ制御部１０は、要求の受付を行い（ステップＳ１）、データの読み出しが要求されているか、またはデータの書き込みが要求されているかを判断する（ステップＳ２）。
【００６５】
データの読み出しが要求されている場合、データ制御部１０は、読み出し対象のアドレスを取り込み（ステップＳ３）、図３に示すブロック番号テーブルを参照して、読み出し対象の論理ブロック番号に対応する物理ブロック番号（物理的なアドレス）を取得する（ステップＳ４）。
【００６６】
次に、データ制御部１０は、フラッシュメモリ部１１において、ステップＳ４で取得された物理ブロック番号のブロックにおける目的の物理領域を検索するためにループカウンタをリセットし（ステップＳ５）、そのフラッシュメモリ部１１のブロックに対応するブロック状態保持部１２におけるカウンタ番地の論理アドレスを順に参照する（ステップＳ７）。
【００６７】
参照した論理アドレスがステップＳ３で取り込まれた論理アドレスと一致し（ステップＳ８）、かつ、データ状態が有効である（ステップＳ９）という条件を満たすまで、ループカウンタをインクリメント（ステップＳ１０）しながら、ブロック状態保持部１２の参照を繰り返す。例えば、ステップＳ３で取り込まれた論理アドレスが”４”である場合、図２の例では、フラッシュメモリ部１１の物理アドレス”４”の領域ではデータ状態が”００Ｈ”（無効）であるので条件に該当せず、フラッシュメモリ部１１の物理アドレス”ｊ＋２”の領域ではデータ状態が”Ｆ０Ｈ”（有効）であるので条件に該当する。
【００６８】
ブロック状態保持部１２を最後まで参照しても、ステップＳ８およびステップＳ９の条件を満足しなかった場合（ステップＳ６：ループカウンタ＝ｋ）、フラッシュメモリ部１１に目的の領域は存在しないため、エラー通知を行い（ステップＳ１１）、処理を終了する。
【００６９】
一方、ステップＳ８およびステップＳ９の条件を満足した場合には、フラッシュメモリ部１１においてカウンタ番地の物理アドレスの領域からデータを読み出すため、読み出しアドレスをセットし（ステップＳ１２）、フラッシュメモリ部１１からデータの読み出しを行う（ステップＳ１３）。最後に終了を通知し（ステップＳ１４）、処理を終了する。
【００７０】
このように、データ制御部１０によって、フラッシュメモリ部１１内のデータに対して、ブロック状態保持部１２の論理アドレス順にアクセスする手段を提供することにより、データ記憶装置１の外部からは、フラッシュメモリ部１１内のデータ配置（物理的なアドレス）を意識することなく、論理的な配置（論理アドレス）によってアクセスすることが可能となる。
【００７１】
次に、フラッシュメモリ部１１へのデータ書き込み（データ書き換え）時の動作について、図３、図４、図７および図８を用いて説明する。
【００７２】
図７は、データ記憶装置１において、フラッシュメモリ部１１へのデータ書き込み（データ書き換え）完了時におけるフラッシュメモリ部１１およびブロック状態保持部１２の状態の一例を示す図である。図７（ａ）は、フラッシュメモリ部１１のデータ内容（論理的な配置）を示し、図７（ｂ）は、フラッシュメモリ部１１のデータ内容（物理的な配置）を示し、図７（ｃ）は、ブロック状態保持部１２のデータ内容を示す。
【００７３】
この図７の例では、論理アドレス”３”の領域にデータ”８６７７Ｈ”を書き込むように指示が与えられている。フラッシュメモリ部１１において物理アドレス”３”の領域に記憶されている書き換え前のデータ”０６０７Ｈ”を無効にするために、ブロック状態保持部１２において対応する領域のデータ状態が無効”００Ｈ”とされている。また、フラッシュメモリ部１１において未使用であった物理アドレス”ｋ−２”の領域にデータ”８６７７Ｈ”が書き込まれ、ブロック状態保持部１２において対応する領域の論理アドレスに”３”が記憶されると共に、データ状態が有効”Ｆ０Ｈ”とされている。
【００７４】
図８は、フラッシュメモリ部１１へのデータ書き込み（データ書き換え）時におけるデータ制御部１０の動作を示すフローチャートである。
【００７５】
データ記憶装置１の外部からデータの書き込みが要求されると、データ制御部１０は、要求の受付を行い（図６のステップＳ１）、データ読み出しが要求されているか、またはデータ書き込みが要求されているかを判断する（図６のステップＳ２）。
【００７６】
データの書き込みが要求されている場合、データ制御部１０は、書き込み対象のアドレスおよび書き込みデータを取り込み（ステップＳ２１）、図３に示すブロック番号テーブルを参照して、書き込み対象の論理ブロック番号に対応する物理ブロック番号（物理的なアドレス）を取得する（ステップＳ２２）。
【００７７】
次に、データ制御部１０は、フラッシュメモリ部１１において、ステップＳ２２で取得された物理ブロック番号のブロックにおける書き込み可能な物理領域を検索するためにループカウンタをリセットし（ステップＳ２３）、そのフラッシュメモリ部１１のブロックに対応するブロック状態保持部１２におけるカウンタ番地の論理アドレスを順に参照する（ステップＳ２５）。
【００７８】
データ状態が未使用である（ステップＳ２９）という条件を満たすまで、ループカウンタをインクリメント（ステップＳ３０）しながら、ブロック状態保持部１２の参照を繰り返す。例えば、図７の例では、フラッシュメモリ部１１の物理アドレス”ｋ−２”の領域のデータ状態が”ＦＦＨ”（図示しない書き換え前）であるので条件に該当する。
【００７９】
ここで、参照された論理アドレスがステップＳ２１で取り込まれた論理アドレスと一致し（ステップＳ２６）、かつ、データ状態が有効である（ステップＳ２７）データが存在する場合には、書き込もうとしているデータが書き換えデータであり、未使用領域に新たなデータを書き込んだ後、この古いデータを無効にする必要があるため、現在のカウンタ値を記憶しておく（ステップＳ２８）。例えば、図７の例では、フラッシュメモリ部１１の物理アドレス”３”の領域に対応するブロック状態保持部１２の論理アドレスが”３”であり、データ状態が”Ｆ０Ｈ”（図示しない書き換え前）であるので条件に該当する。
【００８０】
ブロック状態保持部１２を最後まで参照しても、ステップＳ２９の条件を満足しなかった場合（ステップＳ２４：ループカウンタ＝ｋ）、フラッシュメモリ部１１に未使用の領域は存在しないため、後述するフラッシュメモリ部１１の再構築処理を行う。
【００８１】
一方、ステップＳ２９の条件を満足した場合には、ブロック状態保持部１２における現在のカウンタ番地のデータ状態を、未使用→データ書き込み中へ更新する（ステップＳ３１）。フラッシュメモリ部１１においてカウンタ番地の物理アドレスの領域へデータを書き込むため、書き込みアドレスをセットし（ステップＳ３２）、フラッシュメモリ部１１へデータの書き込みを行う（ステップＳ３３）。例えば、図７の例では、フラッシュメモリ部１１の物理アドレス”ｋ−２”の領域にデータ”８６７７Ｈ”が書き込まれる。
【００８２】
次に、ブロック状態保持部１２における現在のカウンタ番地のデータ状態を、データ書き込み中→論理アドレス書き込み中へ更新し（ステップＳ３４）、ステップＳ２１で取り込まれた論理アドレスをブロック状態保持部１２に書き込む（ステップＳ３５）。例えば、図７の例では、ブロック状態保持部１２の”ｋ−２”番地に論理アドレス”３”が書き込まれる。
【００８３】
ステップＳ２８でカウンタ値を記憶していない場合（ステップＳ３６：Ｎｏ）には、ブロック状態保持部１２における現在のカウンタ番地のデータ状態を、論理アドレス書き込み中→有効へ更新し（ステップＳ３９）、最後に終了を通知して（図６のステップＳ１４）、処理を終了する。
【００８４】
一方、ステップＳ２８でカウンタ値を記憶している場合（ステップＳ３６：Ｙｅｓ）、ブロック状態保持部１２における現在のカウンタ番地のデータ状態を、論理アドレス書き込み中→旧データ無効化中へ更新し（ステップＳ３７）、ステップＳ２８で記憶したカウンタ番地のデータ状態を、有効→無効へ更新して（ステップＳ３８）、ステップＳ３９へ進む。例えば、図７の例では、ブロック状態保持部１２の”３”番地のデータ状態が無効”００Ｈ”とされ、ブロック状態保持部１２の”ｋ−２”番地のデータ状態が有効”Ｆ０Ｈ”とされる。
【００８５】
以上、データ書き換え時の処理について説明したが、フラッシュメモリ部１１の物理ブロックに最初にデータが書き込まれるときには、データ制御部１０によって論理ブロック番号と物理ブロック番号との対応関係が以下のように処理される。まず、最初の物理ブロック番号と論理ブロック番号との対応関係は、物理ブロック番号０〜ｎ−２の各ブロックの論理ブロック番号として、それぞれ物理ブロック番号と同じ番号０〜ｎ−２が格納され、物理ブロック番号ｎ−１のブロックの論理ブロック番号としては未使用（ＦＦＦＦＨ）が格納されるように、ブロック状態保持部１２の論理ブロック番号が割り当てられる。図３は、フラッシュメモリ部１１の再構築処理がある程度行われた後の状態を示している。また、ブロック状態保持部１２のデータコピー元の物理ブロック番号およびデータコピー元のブロック書き換え回数の最初の状態は、まだ再構築処理が１度も行われていないため、それぞれ、”ＦＦＦＦＨ”および”ＦＦＦＦＦＦＦＦＨ”が設定されている。
【００８６】
次に、フラッシュメモリ部１１の再構築時の動作について、図３、図４、図５、図９、図１０、図１１および図１２を用いて説明する。
【００８７】
図９は、データ記憶装置１において、フラッシュメモリ部１１のブロック再構築中におけるフラッシュメモリ部１１およびブロック状態保持部１２の状態の一例を示す図である。図９（ａ）は、フラッシュメモリ部１１のデータ内容（物理的な配置）を示し、図９（ｂ）は、ブロック状態保持部１２のデータ内容を示す。また、図９（ｃ）は、フラッシュメモリ部１１の再構築用領域のデータ内容（物理的な配置）を示し、図９（ｄ）は、ブロック状態保持部１２の再構築用領域のデータ内容を示す。
【００８８】
また、図１０は、データ記憶装置１において、フラッシュメモリ部１１のブロック再構築完了後におけるフラッシュメモリ部１１およびブロック状態保持部１２の状態の一例を示す図である。図１０（ａ）は、新しいフラッシュメモリ部１１の再構築用領域のデータ内容（物理的な配置）を示し、図１０（ｂ）は、新しいブロック状態保持部１２の再構築用領域のデータ内容を示す。図１０（ｃ）は、再構築後のフラッシュメモリ部１１のデータ内容（物理的な配置）を示し、図１０（ｄ）は、再構築後のブロック状態保持部１２のデータ内容を示す。
【００８９】
フラッシュメモリ部１１における各ブロックは、データ書き込み（書き換え）を繰り返すと未使用領域が減少し、最終的には、新たな書き込み（書き換え）データが記憶される領域が無くなる。図９の例では、フラッシュメモリ部１１のブロックにおいて、物理アドレス”ｋ−１”の領域まで使用済の状態になっている。このため、ブロックの使用済領域のうち、データ状態が無効である領域のデータを消去して再使用可能にする処理を行う必要があり、この処理を再構築処理と称する。図９の例では、フラッシュメモリ部１１のブロックにおいて、物理アドレス”０”〜”ｊ−１”の領域でデータ状態が無効”００Ｈ”となっており、物理アドレス”ｊ”〜”ｋ−１”の領域でデータ状態が有効”Ｆ０Ｈ”となっているため、物理アドレス”ｊ”〜”ｋ−１”の領域のデータは残し、物理アドレス”０”〜”ｊ−１”の領域のデータを消去する処理を行う。
【００９０】
再構築に際しては、再構築対象であるフラッシュメモリ部１１のブロックと同じ容量のブロック（再構築用領域）、および再構築対象であるフラッシュメモリ部１１のブロックに対応するブロック状態保持部１２と同容量の再構築用領域をそれぞれ必要とする。フラッシュメモリ部１１の再構築用領域およびブロック状態保持部１２の再構築用領域は、それぞれ、再構築対象であるフラッシュメモリ部１１のブロックおよびそれに対応するブロック状態保持部１２のブロックと入れ替えて利用される。図１０の例では、図９（ａ）に示すフラッシュメモリ部１１が図１０（ａ）に示す新しいフラッシュメモリ部１１の再構築用領域として利用され、図９（ｂ）に示すブロック状態保持部１２のブロックが図１０（ｂ）に示す新しいブロック状態保持部１２の再構築用領域として利用される。また、図９（ｃ）に示すフラッシュメモリ部１１の再構築用領域には、図９（ａ）に示すフラッシュメモリ部１１の有効なデータがコピーされて再構築後のフラッシュメモリ部１１として利用され、図９（ｄ）に示すブロック状態保持部１２の再構築用領域には、図９（ｂ）に示すブロック状態保持部１２の有効なデータがコピーされて再構築後のフラッシュメモリ部１１として利用される。
【００９１】
図１１は、フラッシュメモリ部１１の再構築時におけるデータ制御部１０の動作を示すフローチャートであり、図１２は、図１１の続きのフローチャートである。
【００９２】
フラッシュメモリ部１１において未使用領域が存在しない場合（図８のステップ２４：ループカウンタ＝ｋ）、データ制御部１０は、フラッシュメモリ部１１の再構築処理を開始する。
【００９３】
まず、データ制御部１０は、フラッシュメモリ部１１における再構築用領域を検索するためにループカウンタをリセットし（ステップＳ４１）、図３に示すブロック番号テーブルにおける論理アドレスを順に参照する（ステップＳ４３）。論理ブロック番号が”ＦＦＦＦＨ”（ステップＳ４４）である物理ブロック番号が取得されるまで、ループカウンタをインクリメント（ステップＳ４５）しながら、図３に示すブロック番号テーブルの参照を繰り返す。例えば、図３の例では、物理ブロック番号が”２”のときに論理ブロック番号が”ＦＦＦＦＨ”となって条件に該当する。
【００９４】
図３に示すブロック番号テーブルを最後まで参照しても、ステップＳ４４の条件を満足しなかった場合（ステップＳ４２：ループカウンタ＝ｎ）、フラッシュメモリ部１１に再構築用領域が存在しないため、エラー通知を行い（図６のステップＳ１１）、処理を終了する。
【００９５】
一方、ステップＳ４４の条件を満足した場合には、図９に示すブロック状態保持部１２における再構築用領域のブロック状態を、未使用→コピー中へ更新する（ステップＳ４６）。再構築対象となっているブロック（データコピー元）の論理ブロック番号（図８のステップＳ２１にて取得）、物理ブロック番号（図８のステップＳ２２にて取得）およびブロック書き換え回数を、再構築用領域のそれぞれの領域に書き込む（ステップＳ４７）。例えば、図９の例では、図９（ｄ）に示すブロック状態保持部１２の再構築用領域においてブロック状態がコピー中”ＦＥＨ”とされ、図９（ｂ）に示すブロック状態保持部１２において再構築対象となっているブロック（データコピー元）の論理ブロック番号”０００１Ｈ”およびブロック書き換え回数”０００００００２Ｈ”、図３に示す論理ブロック番号”１”に対応する物理ブロック番号”０００３Ｈ”（＝３）がそれぞれ、図９（ｄ）に示すブロック状態保持部１２の再構築用領域の論理ブロック番号、データコピー元の物理ブロック番号およびデータコピー元のブロック書き換え回数に書き込まれる。
【００９６】
次に、データ制御部１０は、再構築対象のフラッシュメモリ部１１から再構築用領域にデータをコピーするためにループカウンタをリセットし（ステップＳ４８）、再構築対象のブロック状態保持部１２における論理アドレスを、ループカウンタをインクリメント（ステップＳ５９）しながら、順に参照する（ステップＳ５０）。
【００９７】
ここで、参照された論理アドレスがカウンタ値と一致し（ステップＳ５１）、かつ、データ状態が有効である（ステップＳ５２）場合には、ブロック状態保持部１２の再構築用領域におけるカウンタ番地のデータ状態を、未使用→データ書き込み中へ更新する（ステップＳ５３）。例えば、カウンタ値が”２”である場合、図９の例では、再構築対象のフラッシュメモリ部１１における物理アドレス”ｊ＋１”の領域に対応するブロック状態保持部１２の論理アドレスが”２”であり、データ状態が有効”Ｆ０Ｈ”であるので条件に該当する。
【００９８】
再構築対象のフラッシュメモリ部１１からデータを読み出し、フラッシュメモリ部１１の再構築用領域におけるカウンタ番地のアドレスへデータを書き込むために書き込みアドレスをセット（ステップＳ５４）した後、再構築用領域にデータをコピー（書き込み）する（ステップＳ５５）。例えば、カウンタ値が”２”である場合、図９（ａ）に示す再構築対象のフラッシュメモリ部１１における物理アドレス”ｊ＋１”の領域のデータ”Ｅ４Ｃ５Ｈ”が、図９（ｃ）に示すフラッシュメモリ部１１の再構築用領域の物理アドレス”２”の領域に書き込まれる。
【００９９】
その後、ブロック状態保持部１２の再構築用領域におけるカウンタ番地のデータ状態を、データ書き込み中→論理アドレス書き込み中へ更新し（ステップＳ５６）、カウンタ値（＝論理アドレス）を書き込み（ステップＳ５７）、データ状態を、論理アドレス書き込み中→有効へ更新する（ステップＳ５８）。例えば、カウンタ値が”２”である場合、図９（ｄ）に示すブロック状態保持部１２の再構築用領域においてフラッシュメモリ部１１の物理アドレス”２”に対応する領域の論理アドレスが”２”とされ、データ状態が有効”Ｆ０Ｈ”とされる。
【０１００】
上記ステップＳ４９〜ステップＳ５８の処理を、再構築対象のブロック状態保持部１２の最後（ステップＳ４９：ループカウンタ＝ｋ）まで繰り返し、図１２に示す次のステップＳ６１へ進む。例えば、図９の例では、再構築対象のフラッシュメモリ部１１における物理アドレス”ｊ”〜”ｋ−１”の領域から、論理アドレス”０”〜”ｉ−１”のｉ個のデータが、フラッシュメモリ部１１の再構築用領域における物理アドレス”０”〜”ｉ−１”の領域に書き込まれ、ブロック状態保持部１２の再構築用領域における”０”〜”ｉ−１”番地にそれぞれの論理アドレスが書き込まれると共にそれぞれの領域のデータ状態が有効”Ｆ０Ｈ”とされている。
【０１０１】
次に、ブロック状態保持部１２の再構築用領域におけるブロック状態を、コピー中→ブロック消去中へ更新し（ステップＳ６１）、再構築対象（データコピー元）のフラッシュメモリ部１１およびブロック状態保持部１２のデータを消去する（ステップＳ６２）。
【０１０２】
その後、ステップＳ４７においてブロック状態保持部１２の再構築用領域へコピーされたブロック書き換え回数を参照して（ステップＳ６３）、この回数をインクリメントし、消去が完了したブロック状態保持部１２（新しい再構築用領域）におけるフラッシュメモリ部１１のブロック書き換え回数領域へ書き込む（ステップＳ６４）。例えば、図１０の例では、再構築後のブロック状態保持部１２にコピーされているデータコピー元のブロック書き換え回数”０００００００２Ｈ”＋１＝”０００００００３Ｈ”が、新しいブロック状態保持部１２の再構築用領域におけるフラッシュメモリ部のブロック書き換え回数の領域へ書き込まれる。
【０１０３】
図３に示すブロック番号テーブルにおいて、再構築対象の論理ブロック番号（図８のステップＳ２１にて取得）と再構築用領域の論理ブロック番号（図１１のステップＳ４４にて取得）を交換し、更新後のブロック状態保持部１２（元の再構築用領域）におけるブロック状態を、ブロック消去中→有効へ更新して、図８のステップＳ２２に戻る。例えば、図３の例では、物理ブロック番号”２”および”３”の論理ブロック番号”ＦＦＦＦＨ”および”１”が交換される。消去が行われたフラッシュメモリ部１１および対応するブロック状態保持部１２は、次の再構築処理に用いられる再構築用領域として利用される。
【０１０４】
次に、データ記憶装置１の電源ＯＮ／リセット時の動作について、図３、図４、図５、図１３〜図１５を用いて説明する。
【０１０５】
図１３は、データ記憶装置１の電源投入（ＯＮ）／リセット時におけるデータ制御部１０の動作を示すフローチャートである。また、図１４は、図１３の続きのフローチャートであり、図１５は、図１４の続きのフローチャートである。
【０１０６】
データ記憶装置１が電源ＯＮ／リセットされると、データ制御部１０は、まず、フラッシュメモリ部１１の再構築処理中に電源遮断（ＯＦＦ）／リセットが行われていないかを確認するため、ブロック状態保持部１２における各ブロックのブロック状態を確認する。
【０１０７】
最初に、データ制御部１０は、ループカウンタをリセットし（ステップＳ７１）、ブロック状態保持部１２において物理ブロック番号＝カウンタ値のブロックにおけるブロック状態を参照する（ステップＳ７３）。参照されたブロック状態が有効”Ｆ０Ｈ”（ステップＳ７４）であるか、または未使用”ＦＦＨ”（ステップＳ７５）であれば、カウンタをインクリメントして（ステップＳ８５）、次のブロックのブロック状態を確認する。
【０１０８】
一方、ステップＳ７３で参照されたブロック状態が、コピー中”ＦＥＨ”（ステップＳ７６：Ｙｅｓ）であった場合、そのブロックは再構築処理中の再構築用領域であり、再構築対象のブロックからデータをコピーしている途中の状態である。よって、その再構築用領域をリセットするために、ブロック状態保持部１２において再構築用領域のブロック書き換え回数を記憶し（ステップＳ７７）、フラッシュメモリ部１１およびブロック状態保持部１２の再構築用領域を消去する（ステップＳ７８）。その後、ステップＳ７７で記憶されたブロック書き換え回数をインクリメントして、消去後の再構築領域のブロック書き換え回数の領域へ書き込み（ステップＳ７９）、ステップＳ８５の処理に進む。
【０１０９】
また、ステップＳ７３で参照されたブロック状態が、ブロック消去中”ＦＣＨ”（ステップＳ８０：Ｙｅｓ）であった場合、そのブロックは再構築処理中の再構築用領域であり、再構築対象のブロックからデータを消去している途中の状態である。よって、以降の処理を継続して行うため、ブロック状態保持部１２において再構築対象（データコピー元）の物理ブロック番号を参照し（ステップＳ８１）、再構築対象のフラッシュメモリ部１１およびブロック状態保持部１２を消去する（ステップＳ８２）。再構築用領域のブロック状態保持部１２におけるデータコピー元のブロック書き換え回数を参照し（ステップＳ８３）、この回数をインクリメントして、消去完了した再構築対象（新しい再構築用領域）のブロック状態保持部１２におけるフラッシュメモリ部のブロック書き換え回数の領域へ書き込み（ステップＳ８４）、ステップＳ８５へ進む。
【０１１０】
また、ステップＳ７３で参照されたブロック状態が、有効”Ｆ０Ｈ”、未使用”ＦＦＨ”、コピー中”ＦＥＨ”およびブロック消去中”ＦＣＨ”のいずれでもなかった場合、エラーを通知し（図１５のステップＳ１１９）、起動／リセット失敗として処理を終了する。
【０１１１】
さらに、ステップＳ７２で、（ブロック状態保持部１２における全ブロックのブロック状態を参照完了した場合（ループカウンタ＝ｎ）、図１４のステップＳ９１へ進む。
【０１１２】
次に、データ制御部１０は、フラッシュメモリ部１１へのデータ書き込み（書き換え）中またはブロック状態保持部１２の情報更新中に電源遮断／リセットが行われていないを確認するため、ブロック状態保持部１２における各データ状態を確認する。
【０１１３】
最初に、データ制御部１０は、ブロックカウント用のループカウンタをリセットし（ステップＳ９１）、次に、データ状態カウント用のループカウンタ’をリセットして（ステップＳ９３）、物理ブロック番号＝カウンタ値のブロックにおいて、カウンタ’番地のブロック状態保持部１２のデータ状態を参照する（ステップＳ９５）。データ状態が有効”Ｆ０Ｈ”（ステップＳ９６）、無効”００Ｈ”（ステップＳ９７）または未使用”ＦＦＨ”（ステップＳ９８）であれば、カウンタ’をインクリメントして（ステップＳ１０２）、次のデータ状態を確認する。
【０１１４】
一方、ステップＳ９５で参照されたデータ状態がデータ書き込み中”ＦＥＨ”（ステップＳ９９）であるか、または論理アドレス書き込み中”ＦＣＨ”（ステップＳ１００）であれば、対応するフラッシュメモリ部１１へのデータ書き込み（書き換え）中またはそのブロック状態保持部１２の情報更新中であるので、そのデータ状態を無効へ更新して（ステップＳ１０１）、ステップＳ１０２の処理に進む。
【０１１５】
また、ステップＳ９５で参照されたデータ状態が旧データ無効化中”Ｆ８Ｈ”（ステップＳ１０３）であれば、対応する論理アドレスを参照して記憶する（図１５のステップＳ１１０）。データ状態カウント用のループカウンタ”をリセットし（ステップＳ１１１）、物理ブロック番号＝カウンタ値のブロックにおいて、カウンタ”番地のブロック状態保持部１２の論理アドレスを参照する（ステップＳ１１３）。参照された論理アドレスがステップＳ１１０で記憶された論理アドレスと一致し（ステップＳ１１４）、かつ、そのデータ状態が有効（ステップＳ１１５）という条件を満たすまで、カウンタ”をインクリメントしながら（ステップＳ１１６）、ブロック状態保持部１２の参照を繰り返す。
【０１１６】
ここで、ステップＳ１１４およびステップＳ１１５の条件を満たす場合には、カウンタ”番地のデータ状態を有効→無効へ更新（ステップＳ１１７）した後、ステップＳ１０３で参照されたブロック状態保持部１２のデータ状態を旧データ無効化中→有効へ更新し（ステップＳ１１８）、図１４のステップＳ１０２の処理に進む。
【０１１７】
ステップＳ１１２においてカウンタ”値＝ｋ（全データ状態を参照完了）となるまで、ステップＳ１１４およびステップＳ１１５の条件を満たす論理アドレスが存在しない場合には、ステップＳ１１９へ進む。
【０１１８】
ステップＳ９４においてカウンタ’値＝ｋ（ブロックの全データ状態を参照完了した）となった場合、図３に示すブロック番号テーブルにおいて、物理ブロック番号＝カウンタ値の論理ブロック番号をセットし（ステップＳ１０４）、カウンタをインクリメントして（ステップＳ１０５）、ステップＳ９２へ進む。
【０１１９】
ステップＳ９２において、カウンタ値＝ｎ（全ブロックのデータ状態を参照完了した）となった場合、終了を通知し（ステップＳ１０６）、起動／リセット成功として処理を終了する。
【０１２０】
以上のように、本発明によれば、データが記憶される複数のフラッシュメモリブロックによって構成されるフラッシュメモリ部１１と、フラッシュメモリ部１１を構成する各ブロック毎にデータ状態、論理アドレス、論理ブロック番号、ブロック状態、フラッシュメモリ部の書き換え回数、フラッシュメモリ部の再構築時の情報である再構築対象の物理ブロック番号およびブロック書き換え回数が記憶されるブロック状態保持部１２と、外部からのデータ書き込み／読み出し要求に従って、フラッシュメモリ部１１へのデータ書き込み／データ読み出しおよびブロック状態保持部１２の制御を行うデータ制御部１０とを有している。このフラッシュメモリ部１１のデータ書き込み／消去処理においてデータ状態が変化する毎に、ブロック状態保持部１２のデータ状態／ブロック状態を順次変化させる。これによって、電源遮断／リセットによるデータ消失からデータを保護することができて、記憶装置としてのデータ記憶装置１の信頼性を向上させることができる。
【０１２１】
【発明の効果】
以上説明したように、本発明によれば、不揮発性半導体メモリからなるフラッシュメモリ部に常に最新のデータを記憶させると共に、データ書き込み（書き換え）または消去処理においてデータの状態を変化させる度に、ブロック状態保持部におけるデータ状態またはブロック状態を順次変化させることにより、記憶装置の電源遮断／リセットによるデータ消失に対して、フラッシュメモリ部の書き換え時を含めたあらゆる状況で、記憶装置内のデータを保護することが可能となる。従って、フラッシュメモリを用いた従来の記憶装置よりも信頼性を向上させることができる。
【０１２２】
また、ブロック状態保持部もフラッシュメモリで構成することによって、不揮発性半導体メモリとしてフラッシュメモリのみを用いて記憶装置を構成することが可能となるため、複数種類のメモリを混在させる必要がなくなり、データ記憶装置の部品点数を削減することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態であるデータ記憶装置１の構成を示すブロック図である。
【図２】本発明の一実施形態であるデータ記憶装置において、フラッシュメモリ部からのデータ読み出し時におけるフラッシュメモリ部およびブロック状態保持部の状態の一例を示す図であり、（ａ）はフラッシュメモリ部のデータ内容（論理的な配置）を示し、（ｂ）はフラッシュメモリ部のデータ内容（物理的な配置）を示し、（ｃ）はブロック状態保持部のデータ内容を示す。
【図３】本発明の一実施形態であるデータ記憶装置におけるブロック番号テーブルの一例を示す図である。
【図４】本発明の一実施形態であるデータ記憶装置におけるブロック状態保持部のデータ状態遷移を示す図である。
【図５】本発明の一実施形態であるデータ記憶装置におけるブロック状態保持部のブロック状態遷移を示す図である。
【図６】本発明の一実施形態であるデータ記憶装置において、フラッシュメモリ部のデータ読み出し時におけるデータ制御部の動作を示すフローチャートである。
【図７】本発明の一実施形態であるデータ記憶装置において、フラッシュメモリ部へのデータ書き込み（データ書き換え）完了時におけるフラッシュメモリ部およびブロック状態保持部の状態の一例を示す図であり、（ａ）はフラッシュメモリ部のデータ内容（論理的な配置）を示し、（ｂ）はフラッシュメモリ部のデータ内容（物理的な配置）を示し、（ｃ）はブロック状態保持部のデータ内容を示す。
【図８】本発明の一実施形態であるデータ記憶装置において、フラッシュメモリ部へのデータ書き込み（データ書き換え）時におけるデータ制御部の動作を示すフローチャートである。
【図９】本発明の一実施形態であるデータ記憶装置において、フラッシュメモリ部のブロック再構築中におけるフラッシュメモリ部およびブロック状態保持部の状態の一例を示す図であり、（ａ）はフラッシュメモリ部のデータ内容（物理的な配置）を示し、（ｂ）はブロック状態保持部のデータ内容を示し、（ｃ）はフラッシュメモリ部の再構築用領域のデータ内容（物理的な配置）を示し、（ｄ）はブロック状態保持部の再構築用領域のデータ内容を示す。
【図１０】本発明の一実施形態であるデータ記憶装置において、フラッシュメモリ部のブロック再構築完了後におけるフラッシュメモリ部およびブロック状態保持部の状態の一例を示す図であり、（ａ）は新しいフラッシュメモリ部の再構築用領域のデータ内容（物理的な配置）を示し、（ｂ）は新しいブロック状態保持部の再構築用領域のデータ内容を示し、（ｃ）は再構築後のフラッシュメモリ部のデータ内容（物理的な配置）を示し、（ｄ）は再構築後のブロック状態保持部のデータ内容を示す。
【図１１】本発明の一実施形態であるデータ記憶装置において、フラッシュメモリ部の再構築時におけるデータ制御部の動作を示すフローチャートである。
【図１２】本発明の一実施形態であるデータ記憶装置において、フラッシュメモリ部の再構築時におけるデータ制御部の動作を示すフローチャートである。
【図１３】本発明の一実施形態であるデータ記憶装置において、データ記憶装置の電源投入／リセット時におけるデータ制御部の動作を示すフローチャートである。
【図１４】本発明の一実施形態であるデータ記憶装置において、データ記憶装置の電源投入／リセット時におけるデータ制御部の動作を示すフローチャートである。
【図１５】本発明の一実施形態であるデータ記憶装置において、データ記憶装置の電源投入／リセット時におけるデータ制御部の動作を示すフローチャートである。
【図１６】従来のデータ記憶装置の構成を示すブロック図である。
【図１７】従来のデータ記憶装置の起動／リセット時におけるメモリ部、フラッシュメモリ部および書き換え情報保持部の状態の一例を示す図である。
【図１８】従来のデータ記憶装置において、メモリ部のデータ書き換え時の状態の一例を示す図である。
【図１９】従来のデータ記憶装置において、フラッシュメモリ部のデータ書き換え時の状態の一例を示す図である。
【図２０】従来のデータ記憶装置において、フラッシュメモリ部のデータ書き換え時の状態の一例を示す図である。
【符号の説明】
１，１０２    データ記憶装置
１０    データ制御部
１１    フラッシュメモリ部
１２    ブロック状態保持部
１０１    ホスト
１１０    ホストインタフェース部
１１１    記憶回路制御手段
１１２    フラッシュメモリ部
１１３    書き換え情報保持部
１１４    メモリ部
【図１】
2004152331.tif 000003
【図２】
2004152331.tif 000004
【図３】
2004152331.tif 000005
【図４】
2004152331.tif 000006
【図５】
2004152331.tif 000007
【図６】
2004152331.tif 000008
【図７】
2004152331.tif 000009
【図８】
2004152331.tif 000010
【図９】
2004152331.tif 000011
【図１０】
2004152331.tif 000012
【図１１】
2004152331.tif 000013
【図１２】
2004152331.tif 000014
【図１３】
2004152331.tif 000015
【図１４】
2004152331.tif 000016
【図１５】
2004152331.tif 000017
【図１６】
2004152331.tif 000018
【図１７】
2004152331.tif 000019
【図１８】
2004152331.tif 000020
【図１９】
2004152331.tif 000021
【図２０】
2004152331.tif 000022