(57)【要約】【課題】ＮＡＮＤ型フラッシュメモリの耐メモリ破壊性を向上させるとともに、メモリを効率的に使用してデータ及びバックアップデータの保存を行う。【解決手段】ＮＡＮＤ型フラッシュメモリ１１にデータを保存する際、各ページを順番に使用してデータを保存する。このとき、保存すべきデータごとに識別番号（ＩＤ番号）を付与して各データのヘッダ部に識別番号を挿入するとともに、ヘッダ部の先頭にマーカを付加する。さらに、各データ内にマーカと同じ値がある場合には、データ内のマーカの値を、マーカの値が連続（重複）して配列されるように、更にマーカの値を挿入する変換を行う。これにより、ビット配列が重複していないマーカの値を検索することで、ヘッダ部の先頭位置を容易に特定することが可能となり、メモリ内の任意の位置にヘッダ部を配置することが可能となる。【選択図】図１
2009093528.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリへのデータの書き込み・読み出しの管理を行うメモリデータ管理装置において、
前記ＮＡＮＤ型フラッシュメモリは、記憶領域があらかじめ所定容量ごとに分割されている複数の分割領域を、それぞれページと定義されており、前記記憶領域の最初の分割領域である先頭ページから最後の分割領域である最終ページまで連続したページ番号が割り当てられており、このページ番号を指定することで前記ページ毎にデータの書き込み・読み出しが行われるメモリであり、また、データの消去処理は、ページ番号が連続する所定数の前記ページからなるブロックごとに一括して行われ、かつ、消去済みブロック内のすべての記録領域は、前記消去処理によってあらかじめ定まる所定値となるメモリであり、
種類の異なるデータをそれぞれ識別するために割り当てた識別番号、及びその識別番号を割り当てたデータのデータ長情報を含むヘッダ部の先頭に前記消去処理によってあらかじめ定まる所定値とは異なり、かつ、前記識別番号に使用しない値に設定したマーカを付加するとともに、前記データ内に前記マーカの値と同じ値が存在する場合には、その値が重複するようにデータを変換して変換データを生成し、前記マーカが付加されたヘッダ部及び前記変換データを結合して書き込み用データを生成する書き込み用データ生成手段と、
前記ＮＡＮＤ型フラッシュメモリの各ページを参照して、前記各ページ内に記憶されているデータの値が前記所定値である消去済みページを未使用領域として特定する未使用領域特定手段と、
前記未使用領域特定手段で特定された前記未使用領域を前記書き込み可能領域として、前記書き込み可能領域の先頭位置から、前記書き込み用データを書き込む書き込み手段と、
前記書き込み可能領域の直前の書き込み済み領域からページ番号をさかのぼって、前記マーカの値と一致する値のデータを検索し、前記マーカの値と一致する値のデータが重複して配列されていなかった場合、このデータを前記マーカと判断し、このマーカの位置を前記ヘッダの先頭位置と特定するヘッダ部特定手段と、
前記ヘッダ部特定手段で特定される前記ヘッダ部から、前記書き込み用データ生成手段で生成された前記種類の異なるデータそれぞれに割り当てた前記各識別番号を含むヘッダ部を特定し、それぞれの識別番号を最初に検出した書き込み済み領域を前記各識別番号が割り当てられた種類の異なるデータの最終書き込み領域とすることで、前記各識別番号が割り当てられた種類の異なるデータの最新書き込みデータの保存位置を特定する最新データ特定手段と、
を有することを特徴とするメモリデータ管理装置。
【請求項２】
前記書き込み用データ生成手段は、前記ヘッダ部に前記マーカを付加する際に、前記マーカの直後に、前記消去処理によってあらかじめ定まる前記所定値及び前記マーカとは異なる特定の値を配置するか、あるいは、前記ヘッダ部に前記マーカを付加する際に、前記マーカの直後に配置する前記識別番号の先頭部分の値を、前記マーカの値と一致しないように設定する請求項１に記載のメモリデータ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ（特に、ＮＡＮＤ型フラッシュメモリ）などの不揮発性記憶装置へのデータ書き込みやデータ読み出しを管理するメモリデータ管理装置に関する。
【背景技術】
【０００２】
フラッシュメモリのデータ書き換え回数には物理的な限界があり、通常、最大データ書き換え回数は１０万回程度である。それ以上の書き換えを行ったフラッシュメモリのセル（メモリセル）は、破壊される可能性が高くなり、そして、一度破壊されると、それ以後、データ書き換えは不可能となる。
【０００３】
フラッシュメモリには複数の種類が存在しているが、近年、特にＮＡＮＤ型フラッシュメモリの集積度が上がり、低価格化が進んでいる。ＮＡＮＤ型フラッシュメモリでは、データの書き換えが行われる場合、ブロック単位でデータが消去された後に、新たなデータの書き込みが行われる。すなわち、データの書き換え時には、たとえ１バイトのデータ書き換えであっても、ブロック単位（通常、数１０キロバイト）の消去が常に必要となる。
【０００４】
したがって、データを何度も書き換える場合に、書き込み位置（アドレス）が常に固定されていると、やがてその位置のメモリセルが破壊されてしまうことになる。このようなある一部の書き込み位置のメモリセルの破壊は、そのメモリセルが含まれるブロック全体を使用不能としてしまうため、容量、効率及び信頼性の損失が大きい。
【０００５】
上記の問題を解決するため、
・データ書き込みの集中によるメモリセルの破壊が起こらないように、データの書き込み位置を分散してデータ書き込みを行う
・誤り符号などにより破壊が検出された場合には、予備のブロックを代替して使う
などの従来の技術が知られている。
【０００６】
従来の技術として、メモリ領域の使用・未使用の管理、書き換え（消去）回数の管理をブロック単位で行い、これらの管理情報を、フラッシュメモリの任意の場所に保存しておく技術が知られている。例えば、下記の特許文献１には、フラッシュメモリは初期状態でないとデータ書き込みができないことから、効率の良いデータ書き換えを行うために、フラッシュメモリ上にブロックやデータの管理情報を保存し、この管理情報を利用して書き込み処理と消去処理を別に行う仕組みが開示されている。
【０００７】
また、データの消去又は書き込みをしている最中に、何らかの要因で電源供給が断たれた場合においても、データの破壊が起こる。この場合、再度電源が供給されたときに、データの復旧が行われることが望ましい。このためには、例えば、電源供給が再度行われた場合に、常に固定の初期値に戻すという方法や、あるいは、データの破壊に備えて、前もってバックアップデータを保存しておく方法などが存在する。後者のバックアップデータの保存を行う方法は、最後に正しく書けたデータを消去しないで保存しておき、新たなデータ書き込み時にデータ破壊が起こった場合に、その保存しておいたデータを最新のデータとして扱う方法である。
【特許文献１】特開２０００−２２２２９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、ブロック単位の管理によってブロックごとの書き込み回数の分散を行う従来の方法では、ブロック内の同じ位置（ブロック先頭バイトからのオフセット）への書き込みが集中的に起こる場合には、たとえブロックを分散させても、ブロックの寿命は一部のメモリセルの破壊のために短くなるという第１の問題点がある。
【０００９】
また、管理情報をデータとは別のブロックにまとめて保持する従来の方法では、書き込みのたびに管理情報の更新が必要であり、さらに、管理情報が保持されているブロックの破壊を考慮した復旧の仕組みが必要である。これは、処理量の面でもメモリ使用量の面でも非効率であり、依然としてブロックの破壊の懸念が残るという第２の問題点がある。すなわち、管理情報をフラッシュメモリに保存する技術によれば、データの書き換えと同時に、管理情報の更新も行われる必要があり、管理情報の更新の分だけ、メモリセルのデータ書き換え回数を消費してしまうことになる。また、管理情報自体の破壊の可能性（あるいは、管理情報が書き込まれているメモリセルの破壊の可能性）があるため、管理情報を別ブロックにバックアップしておく必要もある。
【００１０】
また、バックアップデータを保存する方法を行う場合、どのような電源遮断であっても確実にデータを復旧できるようにするためには、少なくとも、バックアップデータは別のブロックに書いておく必要があり、さらに、バックアップデータがどのブロック（又はアドレス）に存在しているという情報をメモリのどこかに保存しておく必要が生じる場合もある。また、データの書き込みのたびにバックアップデータを消去せずに保存しておく必要もある。
【００１１】
また、データが破壊された際にデータ復旧が行われる場合、なるべく破壊される前のデータに近い状態にデータが復旧されることが望ましい。この場合、バックアップデータは別ブロックに保存される必要があるが、バックアップの単位をブロックにした場合には、データのサイズがブロックサイズに比べて小さいときには、メモリの使用量の面で非効率であるという第３の問題点がある。
【００１２】
また、従来の技術によれば、新たにデータが保存されるたびにバックアップが同時に行われるので、処理量や書き込み回数、書き込み時間が、バックアップ処理によって増大してしまうという第４の問題点がある。
【００１３】
上記の問題点を解決するため、本発明は、ＮＡＮＤ型フラッシュメモリの耐メモリ破壊性能を向上するとともに、効率的なデータ管理及びバックアップデータの保存を行って、効率的なメモリ使用を実現できるようなメモリデータ管理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の目的を達成するため、本発明によれば、ＮＡＮＤ型フラッシュメモリへのデータの書き込み・読み出しの管理を行うメモリデータ管理装置において、
前記ＮＡＮＤ型フラッシュメモリは、記憶領域があらかじめ所定容量ごとに分割されている複数の分割領域を、それぞれページと定義されており、前記記憶領域の最初の分割領域である先頭ページから最後の分割領域である最終ページまで連続したページ番号が割り当てられており、このページ番号を指定することで前記ページ毎にデータの書き込み・読み出しが行われるメモリであり、また、データの消去処理は、ページ番号が連続する所定数の前記ページからなるブロックごとに一括して行われ、かつ、消去済みブロック内のすべての記録領域は、前記消去処理によってあらかじめ定まる所定値となるメモリであり、
種類の異なるデータをそれぞれ識別するために割り当てた識別番号、及びその識別番号を割り当てたデータのデータ長情報を含むヘッダ部の先頭に前記消去処理によってあらかじめ定まる所定値とは異なり、かつ、前記識別番号に使用しない値に設定したマーカを付加するとともに、前記データ内に前記マーカの値と同じ値が存在する場合には、その値が重複するようにデータを変換して変換データを生成し、前記マーカが付加されたヘッダ部及び前記変換データを結合して書き込み用データを生成する書き込み用データ生成手段と、
前記ＮＡＮＤ型フラッシュメモリの各ページを参照して、前記各ページ内に記憶されているデータの値が前記所定値である消去済みページを未使用領域として特定する未使用領域特定手段と、
前記未使用領域特定手段で特定された前記未使用領域を前記書き込み可能領域として、前記書き込み可能領域の先頭位置から、前記書き込み用データを書き込む書き込み手段と、
前記書き込み可能領域の直前の書き込み済み領域からページ番号をさかのぼって、前記マーカの値と一致する値のデータを検索し、前記マーカの値と一致する値のデータが重複して配列されていなかった場合、このデータを前記マーカと判断し、このマーカの位置を前記ヘッダの先頭位置と特定するヘッダ部特定手段と、
前記ヘッダ部特定手段で特定される前記ヘッダ部から、前記書き込み用データ生成手段で生成された前記種類の異なるデータそれぞれに割り当てた前記各識別番号を含むヘッダ部を特定し、それぞれの識別番号を最初に検出した書き込み済み領域を前記各識別番号が割り当てられた種類の異なるデータの最終書き込み領域とすることで、前記各識別番号が割り当てられた種類の異なるデータの最新書き込みデータの保存位置を特定する最新データ特定手段と、
を有することを特徴とするメモリデータ管理装置が提供される。
【００１５】
さらに、本発明によれば、上記の構成に加えて、前記書き込み用データ生成手段は、前記ヘッダ部に前記マーカを付加する際に、前記マーカの直後に、前記消去処理によってあらかじめ定まる前記所定値及び前記マーカとは異なる特定の値を配置するか、あるいは、前記ヘッダ部に前記マーカを付加する際に、前記マーカの直後に配置する前記識別番号の先頭部分の値を、前記マーカの値と一致しないように設定するメモリデータ管理装置が提供される。
【発明の効果】
【００１６】
本発明によれば、ＮＡＮＤ型フラッシュメモリの耐メモリ破壊性能を向上するとともに、効率的なデータ管理及びバックアップデータの保存を行って、効率的なメモリ使用が実現できるという効果を有する。
【発明を実施するための最良の形態】
【００１７】
以下、図１を参照しながら、本発明の実施の形態における不揮発性記憶装置のデータ管理装置（メモリデータ管理装置）の構成の一例について説明する。図１は、本発明の実施の形態における不揮発性記憶装置のデータ管理装置の構成の一例を示す図である。
【００１８】
図１に図示されているように、ＮＡＮＤ型フラッシュメモリ１１を使った不揮発性記憶装置のデータ管理装置は、例えば、ＣＰＵ（中央演算処理装置：Central Processing Unit）１２に実装されているコントローラ１３によって実現される。また、ＣＰＵ１２は、ＮＡＮＤ型フラッシュメモリ１１や、例えば、不揮発性記憶装置が有する演算用ＲＡＭ（Random Access Memory）などのＲＡＭ１４へのデータの読み書きを行うことが可能なように構成されている。
【００１９】
また、図２は、本発明の実施の形態において、ＮＡＮＤ型フラッシュメモリのメモリ分割の一例を示す図である。図２に図示されているように、ＮＡＮＤ型フラッシュメモリ１１には、ＣＰＵ１２によって実行されるプログラムが格納されており、さらに、データを保存するための記憶スペース（データ保存用スペース）が確保されている。ＣＰＵ１２によってＮＡＮＤ型フラッシュメモリ１１に書き込み・読み出しされるデータは、このデータ保存用スペースに保存される。
【００２０】
また、図３は、本発明の実施の形態において、ＮＡＮＤ型フラッシュメモリに書き込み・読み出しされるデータが配置されるアドレス空間の一例を示す図である。ＮＡＮＤ型フラッシュメモリ１１に書き込み・読み出しされるデータは、図３に図示されているようなアドレス空間に配置される。これは上記ＲＡＭ１４上のアドレス空間にあたる。図３において、連続したアドレス空間はいくつかの領域に分割され、分割された各領域にはＩＤが付与される（図３のＩＤ＝１〜３）。そして、例えば、ＩＤ＝２の領域のデータは、ＮＡＮＤ型フラッシュメモリ１１への書き込みの際にデータ圧縮されたデータとして以降の説明を行う。なお、図３は、連続したアドレス空間を分割した領域にそれぞれＩＤを付加する例が図示されているが、ＩＤを付加する各領域は連続したアドレス空間に存在する必要はなく、それぞれ独立したアドレス空間（互いのアドレスが重複する）であっても、ＩＤによって互いの領域は区別できるので問題ない。
【００２１】
また、本発明では、後述のように、データに付加するヘッダ情報に、これから書き込むデータ（ヘッダ情報の後続のデータ）のサイズが含まれている。そのため、アドレス空間におけるデータのサイズと、フラッシュメモリに書き込まれるデータのサイズとが必ずしも一致する必要はない。また、書き込みの都度、データのサイズが変化してもよい。したがって、本発明では、データ圧縮技術を用いて、データのサイズを縮小することが可能である。
【００２２】
ＣＰＵ１２のコントローラ１３は、例えばシステム起動時に、ＮＡＮＤ型フラッシュメモリ１１の内容を解析することで、メモリ管理情報及びデータ管理情報を生成することが可能である。そして、ＣＰＵ１２のコントローラ１３は、各ＩＤが付加されたデータをＲＡＭ１４上に読み込み、このときチェックサムを検査する。このチェックサムの検査の結果、データが破壊されていることを検出した場合には、この破壊されたデータに対応する古いデータをバックアップデータとして、新たにＲＡＭ１４上に読み込む。なお、データ圧縮されているデータ（例えばＩＤ＝２のデータ）は、ＲＡＭ１４上に読み込むと同時に解凍され、その結果、ＲＡＭ１４上には解凍されたデータが置かれる。
【００２３】
このように、ＮＡＮＤ型フラッシュメモリ１１に保存されているデータをＲＡＭ１４上に読み込む構成とすることにより、ＮＡＮＤ型フラッシュメモリ１１に係るデータ読み込み処理は、システム起動時などに１回のみ行うだけでよくなる。すなわち、ＮＡＮＤ型フラッシュメモリ１１に保存されているデータは、システム起動時にＲＡＭ１４上に展開されるので、その都度、データをＮＡＮＤ型フラッシュメモリ１１から読む必要がなくなる。ＲＡＭ１４は、ＮＡＮＤ型フラッシュメモリ１１に比較してデータの書き込み、読み出しの処理速度が速い。したがって、本発明によれば、データの読み出し要求に応じてその都度ＮＡＮＤ型フラッシュメモリ１１からデータを読み出す場合に比べて、データを読み出す処理速度が速くなる。
【００２４】
一方、ＮＡＮＤ型フラッシュメモリ１１のデータを更新する場合には、まず、ＲＡＭ１４上に展開されているＲＡＭ１４のデータの更新を行う。この更新時点では、ＮＡＮＤ型フラッシュメモリ１１のデータは更新しない。ＮＡＮＤ型フラッシュメモリ１１のデータの更新は別の任意のタイミングで、そのタイミングまでに更新されたＲＡＭ１４のデータを書き込むことで行われる。これにより、従来必要であったＮＡＮＤ型フラッシュメモリ１１への複数のデータ書き込みを、一回のデータ書き込みにまとめることが可能となり、ＮＡＮＤ型フラッシュメモリ１１へのデータ書き込み回数を低減させることが可能となる。
【００２５】
また、マルチスレッドをサポートしているオペレーティングシステムを使用する場合、書き込み専用スレッドを用意する。そして、この書き込み用スレッドを用いて、あるタイミング（例えば１秒ごと）にＲＡＭ１４上に書き込まれている各ＩＤが付与されたデータが書き換えられたかどうかをチェックし、任意のＩＤのデータが書き換えられたことを検出した場合には、ＮＡＮＤ型フラッシュメモリ１１にデータを書き込む。また、この書き込み専用スレッドによって、一定以上の容量の未使用領域が存在しているかどうかを常に検査し、未使用領域が不足している場合には、未使用領域を増やすための処理を行う。
【００２６】
次に、本発明の実施の形態においてデータの書き込み・読み出しの際に参照されるデータの識別番号（ＩＤ番号）について説明する。
【００２７】
上述のように、ＮＡＮＤ型フラッシュメモリ１１に保存されるデータは、同一のアドレス空間内に配置され、さらに、そのアドレス空間はいくつかの領域に分割されて、分割されたそれぞれの領域には固有の識別番号（ＩＤ番号）が割り当てられる。そして、データの書き込み・読み出しは、このＩＤ番号単位で行われる。
【００２８】
また、図４は、本発明の実施の形態における実際にＮＡＮＤ型フラッシュメモリに書き込まれるデータの構造の一例を示す図である。なお、このデータの長さは、ＮＡＮＤ型フラッシュメモリの１ページの長さを超えてもよい。
【００２９】
図４（ａ）は、本発明の実施の形態において、データのヘッダ情報部の先頭にマーカ（指標）が付加されている構造の一例を示す図である。図４（ａ）において、ヘッダ情報部は、ＩＤ番号の記述領域であるＩＤ番号部として２バイト、ＩＤが付加されている１つのデータのデータサイズを記述する領域であるサイズ部として２バイト、データ部の有効性を検査するためのチェックサムを記述する領域であるチェックサム挿入部として２バイトを有し、さらに、これらの情報をメモリ内で正しく検索できるようにするための１バイトのサイズのマーカが先頭に付加されている。上記のような合計７バイトのヘッダ情報部が、データの先頭に付加される。
【００３０】
ただし、マーカの値は次の条件を満たす必要がある。すなわち、ヘッダ情報部において、マーカの次に配置される２バイトのＩＤのうちの先頭の１バイト（マーカの直後の１バイト）はマーカの値とは異なる値を有する必要があり、さらに、ＮＡＮＤ型フラッシュメモリの未使用領域のビットはすべて１にセットされるので、バイト単位では０ｘＦＦとなるが、マーカの値はこの値（０ｘＦＦ）とも異なる必要がある。なお、前者の条件を確実に満たすようにするため、図４（ｂ）のように、マーカの値とは異なる特定の値（例えば０ｘ００などの値）をマーカの直後に挿入してもよい。この場合は、ヘッダ情報部の長さは合計８バイトになる。
【００３１】
また、データ部に配置されるデータに関して、そのデータの中にマーカと同じ値が含まれている場合には、そのデータに含まれているマーカと同じ値のビット配列の直後に、マーカと同じ値を挿入してからメモリに書き込むようにする。すなわち、データにマーカと同じ値が含まれている場合には、メモリに格納されている状態において、マーカと同じ値が、連続して重複したビット配列状態（マーカと同じ値が２回連続して配置されている状態）で記録されることになる。このマーカによって、各データのヘッダ情報部の位置が特定され、メモリの各データを調べることによって、ヘッダ情報部、データ部、未使用領域を区別することが可能となる。このマーカの位置はページに依存しないので、各ページの先頭にＩＤが固定されることなく任意の位置にＩＤが配置可能となり、直前に書き込んだデータの直後に続けてデータを詰めて書き込むことができるようになる。したがって、メモリを効率良く使用できるようになる。なお、データ部において、マーカの値と同一の値を有する箇所は、メモリに格納されている状態では重複したビット配列を有しているが、実際に読み出される際には、元のビット配列に戻される必要がある。
【００３２】
また、データ部にマーカと同じ値が含まれている場合であっても、データ部に含まれるマーカと同じ値に関しては、マーカと同じ値が連続して重複したビット配列状態（マーカと同じ値が２回連続して配置されている状態）でメモリに書き込むようにすることで、ＩＤの先頭部分やマーカの直後に挿入される特定の値（例えば０ｘ００）の設定によって、同一の値が繰り返されることのないヘッダ情報部のマーカと区別できるようになり、ヘッダ情報部に存在するマーカと、データ部に存在するマーカと同じ値とが確実に識別できるようになる。
【００３３】
また、メモリ上のある領域が初期化状態又は消去済みの状態である場合（すなわち、その領域が未使用であり書き込み可能な状態の場合）には、その領域のヘッダ情報部には、特定の値（０ｘＦＦ）のＩＤ番号が設定される。これは、ＮＡＮＤ型フラッシュメモリ１１の値が初期化状態や消去直後に０ｘＦＦに設定されることによる。これにより、各領域のＩＤ番号の値を調べることで、各ページが未使用か使用中かを判定することが可能となる。なお、マーカの値やマーカの直後に挿入される特定の値（例えば０ｘ００）は、上記の未使用領域を示す０ｘＦＦとは異なる値に設定される必要がある。
【００３４】
次に、本発明の実施の形態における不揮発性記憶装置のデータ管理装置（メモリデータ管理装置）の動作について説明する。まず、図５を参照しながら、本発明の実施の形態における不揮発性記憶装置のデータ管理装置の起動時の処理について説明する。図５は、本発明の実施の形態における不揮発性記憶装置のデータ管理装置の起動時の処理の一例を示すフローチャートである。
【００３５】
まず、データ管理装置は、起動時（電源投入時）に、メモリ管理情報をクリアした後（ステップＳ１０１）、メモリ内の各ページを順番に読み出して、全ページ読み出し済みになるまで（ステップＳ１０２）マーカを検出する処理を繰り返す。なお、検索して見つかったマーカの値の直後にマーカと同一の値が連続している場合には、その値はデータ部に存在するものであり、その値に関してはそのまま何もせず、引き続きマーカの検索を行う。一方、ヘッダ情報部のマーカが見つかれば、ＮＡＮＤ型フラッシュメモリ１１内のデータに付加されているヘッダ情報部を読み出し（ステップＳ１０３）、ヘッダ情報部を解析してメモリ管理情報を生成する（ステップＳ１０４）。
【００３６】
ここで、図６を参照しながら、ステップＳ１０４で生成されるメモリ管理情報について説明する。図６は、本発明の実施の形態における不揮発性記憶装置のデータ管理装置によって管理されるメモリ管理情報の一例を示す図である。メモリ管理情報は、ＮＡＮＤ型フラッシュメモリ１１のデータ保存用スペースに含まれている全領域に関して、未使用又は消去済み（書き込み可能状態）であるか、既に書き込み済み（書き込み不可能状態）であるかを管理するための情報である。
【００３７】
上述のように、本発明では、各情報領域に対応するヘッダ情報部内のＩＤ番号の値を調べることで、その情報領域が未使用か使用中かを判定することが可能である。したがって、例えば、図６に図示されているように、ヘッダ情報部のＩＤ番号部の値が抽出され、そのときの情報領域及び情報領域内のデータ位置の情報を、ＲＡＭ１４上に保持することによって、メモリ管理情報を構成する。
【００３８】
そして、ステップＳ１０３で読み出したヘッダ情報部内の情報（例えばＩＤ番号）に基づいてメモリ管理情報を生成し（ステップＳ１０４）、ページカウンタを１つインクリメントして（ステップＳ１０５）、再びステップＳ１０２に係る処理に戻ることで、全ページの全領域に含まれる全バイトを順番に解析して、全領域の情報を含むメモリ管理情報を生成する。
【００３９】
全ページの読み出しが終了して全領域の情報を含むメモリ管理情報を生成した場合、データ管理装置は、メモリ管理情報に基づいて、ＮＡＮＤ型フラッシュメモリ１１のデータ保存用スペースに含まれている領域の使用／未使用の判定を行うとともに（ステップＳ１０６）、未使用領域を検索して、該当する連続領域を書き込み可能領域とし、さらに、その未使用の連続領域の先頭位置を書き込み開始位置とする（ステップＳ１０７）。
【００４０】
続いて、データ管理装置は、最新のデータが書き込まれている位置及びデータサイズを管理するデータ管理情報を生成する処理を全ＩＤ番号ごとのデータに対して検索済みになるまで繰り返し行う（ステップＳ１０８）。この処理では、データ管理装置は、書き込み開始位置の１つ前のバイトからさかのぼってヘッダ情報部に含まれるマーカを検索することで各ヘッダ情報部を特定し、各ヘッダ情報部に含まれる各ＩＤ番号の最新情報部（最新情報領域）を検索する（ステップＳ１０９）。
【００４１】
そして、検索の結果見つかった最新情報部のチェックサム部に含まれているチェックサムを抽出するとともに、最新情報部のデータ部に存在するデータのチェックサムを計算して、これらのチェックサムが一致するかどうかを検査する（ステップＳ１１０）。この検査の結果、ヘッダ情報部内のチェックサムと計算の結果得られたチェックサムとが一致した場合（ステップＳ１１０で『はい』）には、その最新情報部内のデータは正しいデータ（破壊されていないデータ）であると判断し、その最新情報部のＩＤ番号、最新情報部を特定するアドレス、データサイズのセットをテータ管理情報に追加して、データ管理情報の更新を行う（ステップＳ１１１）。
【００４２】
一方、ステップＳ１１０の検査の結果、ヘッダ情報部内のチェックサムと計算の結果得られたチェックサムとが一致しなかった場合（ステップＳ１１０で『いいえ』）には、その最新データは破壊されていると判断して、データの復旧処理を行う。この復旧処理では、最新位置から更にさかのぼって同一のＩＤ番号を有するバックアップ用データを検索し（ステップＳ１１２）、見つかったバックアップデータに対して、再度チェックサムによるデータの有効性の検査を行う。なお、有効なデータ（破壊されていないデータ）が見つかるまでバックアップ用データの再検索を行う。そして、有効なバックアップ用データを最新情報部（最新位置）とするデータ復元を行った後、このデータ復元に対応して、メモリ管理情報及びデータ管理情報の更新を行う。そして、すべてのＩＤ番号のデータ管理情報の更新を行った後、データの書き込み要求待ち状態となる（ステップＳ１１３）。
【００４３】
ここで、図７、図８を参照しながら、データ管理情報の生成処理について説明する。図７は、本発明の実施の形態におけるＮＡＮＤ型フラッシュメモリの最終書き込みページ及びバックアップページの一例を示す図である。また、図８は、本発明の実施の形態における不揮発性記憶装置のデータ管理装置によって管理されるデータ管理情報の一例を示す図である。なお、ここでは、説明を簡単にするために、マーカが常にページの先頭に位置する（すなわち、マーカを含むヘッダ情報部、データの長さの合計が１ページのバイト数と一致する）と仮定しているが、本発明はこの仮定に限定されるものではなく、ヘッダ情報部及びデータ部を含む情報部（情報領域）がページサイズに一致しない場合など、より一般性を有する条件においても適用可能である。
【００４４】
例えば、起動時にＮＡＮＤ型フラッシュメモリ１１の最終書き込みデータの領域（上記のように図７ではページ単位と仮定）が図７の状態である場合、ＩＤ番号がＡの最終書き込みデータは、『ＩＤ：Ａ 最終書き込みページ』となる。また、この『ＩＤ：Ａ 最終書き込みページ』からさかのぼって、マーカの最初に見つかった情報領域が各ＩＤの最終書き込みデータの領域となる。図７においては、ＩＤ番号がＢの最終書き込みデータである『ＩＤ：Ｂ 最終書き込みページ』、ＩＤ番号がＣの最終書き込みデータである『ＩＤ：Ｃ 最終書き込みページ』が特定される。
【００４５】
また、例えば、『ＩＤ：Ａ 最終書き込みページ』のチェックサムの検査によって、『ＩＤ：Ａ 最終書き込みページ』内のデータが破壊されていると判断された場合には、情報領域をさかのぼってＩＤ番号がＡのバックアップデータの検索が行われ、その結果、『ＩＤ：Ａ バックアップページ』が発見される。なお、図７には、ＩＤ番号がＢのバックアップデータである『ＩＤ：Ｂ バックアップページ』も図示されており、『ＩＤ：Ｂ 最終書き込みページ』のデータが破壊されている場合には、この『ＩＤ：Ｂ バックアップページ』を用いて、データ復元が行われる。
【００４６】
この結果、図７に図示されているように、各ＩＤ番号に関して、その最新情報部（最終書き込みデータ）のＩＤ番号、最新情報部（最終書き込みデータ）のアドレス、データサイズのセットを有するデータ管理情報が作成される。データ管理情報は、ＩＤ番号ごとに最新のデータがどの情報領域に含まれているかを管理するための情報である。このデータ管理情報は、この後、新たに書き込みが行われた時点で逐次更新される。
【００４７】
以上、説明したように、本発明の実施の形態における不揮発性記憶装置のデータ管理装置は、ＮＡＮＤ型フラッシュメモリ１１に書き込まれている情報を解析することで、メモリ管理情報及びデータ管理情報を生成し、これらの情報をＲＡＭ１４上に保持することができるので、ＮＡＮＤ型フラッシュメモリ１１上にこれらの情報を保持するための領域を確保しなくてもよい。また、これによって、メモリ管理情報及びデータ管理情報は、例えばシステムが起動されるたびに生成されるため、メモリ管理情報及びデータ管理情報がＮＡＮＤ型フラッシュメモリ１１に保持されることはなく、ＮＡＮＤ型フラッシュメモリ１１の劣化などに伴ってメモリ管理情報及びデータ管理情報自体が破壊されることはない。
【００４８】
また、ステップＳ１１３のデータの書き込み要求待ち状態において、データの書き換えが起こると、データ管理装置は、ＮＡＮＤ型フラッシュメモリ１１上の書き込み可能領域サイズと新たに書き込むデータのサイズとを比較し、このデータの書き込みが可能かどうかを判定する。
【００４９】
データの書き込みが可能な場合は、データ管理装置は、データにヘッダ情報を付加して、書き込み開始位置より書き込みを開始し、データの書き込みが正常に終わった場合に、データ管理情報及びメモリ管理情報を更新する。このように、本発明では、データ書き込み時に、以前のデータを消去する処理を行わないので、バックアップデータを別の場所（別の情報領域）にコピーして保存する処理を行う必要がない。
【００５０】
一方、データの書き込みが不可能な場合には、ＮＡＮＤ型フラッシュメモリ１１上にデータの書き込みを行うことができるだけの領域を確保するために、以下の処理を行う。まず、書き込み可能領域に連続する次のブロックのデータ（書き込み可能領域の後続のブロック）が消去可能かどうかを調べる。
【００５１】
図９は、本発明の実施の形態における不揮発性記憶装置のデータ管理装置が消去不可領域のデータのバックアップを行ってからブロック消去を行う方法の一例を示す図である。なお、図９においても説明を簡単にするために、マーカを含むヘッダ情報部及びデータの長さの合計が１ページのバイト数と一致するように図示されているが、より一般性を有する条件においても適用可能である。
【００５２】
図９に図示されているように、このブロック（消去候補ブロック）内にバックアップが必要なデータ（消去不可領域）が含まれる場合には、そのデータをまず書き込み可能領域にコピーすることによってデータのバックアップを行う。その後、その消去候補ブロック内のデータの消去が行われる。なお、消去不可領域とは、データ管理情報に記憶されているＩＤ番号のいずれかによって特定される最新情報領域である。
【００５３】
しかしながら、図９に図示されている消去不可領域のデータのバックアップを行ってからブロック消去を行う方法では、バックアップの必要なＩＤ番号のデータサイズが書き込み可能領域のサイズを超えている場合には問題が生じる。すなわち、この場合には、消去不可領域のデータサイズが書き込み可能領域のデータサイズを超えているため、消去不可領域のデータを書き込み可能領域に直接バックアップすることができず、ブロック消去によって書き込み可能領域を拡大した後でなければ、消去不可領域のデータのコピーを行うことができない。
【００５４】
このような問題が生じたときに存在するパターンとしては、以下のＡ〜Ｃの３パターンが存在する。
Ａ．バックアップが必要なデータが１つのみの場合
Ｂ．バックアップが必要なデータは１つだが、書き込み可能領域を２ブロック以上に拡大する必要がある場合
Ｃ．バックアップの必要なデータが複数存在する場合
【００５５】
以下、上記のパターンＡ〜Ｃのそれぞれの場合におけるバックアップ処理Ａ〜Ｃについて、図１０〜図１２を参照しながら説明する。なお、図１０〜図１２においても説明を簡単にするために、マーカを含むヘッダ情報部及びデータの長さの合計が１ページのバイト数と一致するように図示されているが、より一般性を有する条件においても適用可能である。
【００５６】
まず、上記のパターンＡの場合におけるバックアップ処理Ａについて説明する。図１０は、本発明の実施の形態における不揮発性記憶装置のデータ管理装置のバックアップ処理Ａの一例を模式的に示す図である。
【００５７】
図１０において、（１）ＩＤ：Ａの消去不可領域のバックアップが必要となった場合には、消去不可領域のデータサイズと、書き込み可能領域のデータサイズとの比較を行う。そして、（２）書き込み可能領域のデータサイズが不足しており、消去不可領域のデータを直接コピーすることができない場合には、（３）まず、ＲＡＭ１４などの別のメモリ上に消去不可領域のデータを一時保存する。そして、（４）消去不可領域が存在していたブロック（消去候補ブロック）に係るブロック消去を行い、書き込み可能領域及び消去候補ブロックを合わせた領域を書き込み可能領域に拡大して、（５）ＲＡＭ１４から消去不可領域のデータを書き込み可能領域にコピーする。
【００５８】
次に、上記のパターンＢの場合におけるバックアップ処理Ｂについて説明する。図１１は、本発明の実施の形態における不揮発性記憶装置のデータ管理装置のバックアップ処理Ｂの一例を模式的に示す図である。
【００５９】
図１１は、図１０に図示されているバックアップ処理Ａと同様に、（１）ＩＤ：Ａの消去不可領域のバックアップが必要となった場合には、消去不可領域のデータサイズと、書き込み可能領域のデータサイズとの比較を行う。そして、（２）書き込み可能領域のデータサイズが不足しており、消去不可領域のデータを直接コピーすることができない場合には、（３）まず、ＲＡＭ１４などの別のメモリ上に消去不可領域のデータを一時保存する。そして、（４）消去不可領域が存在していたブロック（消去候補ブロック）に係るブロック消去を行い、書き込み可能領域及び消去候補ブロックを合わせた領域を書き込み可能領域に拡大する。
【００６０】
しかしながら、書き込み可能領域を拡大しても、依然として（５）書き込み可能領域のデータサイズが不足しており、消去不可領域のデータを直接コピーすることができない場合には、（６）ＲＡＭ１４上に消去不可領域を保存したまま、次のブロックを消去して更に書き込み可能領域を拡大した後に、消去不可領域のデータを書き込み可能領域にコピーする。
【００６１】
次に、上記のパターンＣの場合におけるバックアップ処理Ｃについて説明する。図１２は、本発明の実施の形態における不揮発性記憶装置のデータ管理装置のバックアップ処理Ｃの一例を模式的に示す図である。
【００６２】
バックアップ処理Ｃでは、バックアップの必要なデータが複数存在する場合に、書き込み可能領域にコピーできるデータは順にコピーする一方、書き込み可能領域のサイズが不足した場合には、コピーできなかったデータをＲＡＭ１４などに一時保存してブロック消去を行い、書き込み可能領域を拡大した後に、データのコピーを行う。
【００６３】
図１２では、２つのデータ（ＩＤ：Ａの消去不可領域及びＩＤ：Ｂの消去不可領域）に係るバックアップ処理Ｃについて説明する。なお、ここでは、ＩＤ：Ａの消去不可領域は、初期の書き込み可能領域よりデータサイズが大きく、ＩＤ：Ｂの消去不可領域は初期の書き込み可能領域よりデータサイズが小さいものとする。
【００６４】
図１２において、（１）バックアップが必要なＩＤ：Ａの消去不可領域のデータサイズと、書き込み可能領域のデータサイズとの比較を行う。そして、（２）書き込み可能領域のデータサイズが不足しており、消去不可領域のデータを直接コピーすることができない場合には、（３）ＲＡＭ１４などの別のメモリ上にＩＤ：Ａの消去不可領域のデータを一時保存するとともに、消去候補ブロックを決定する。
【００６５】
消去候補ブロックには、バックアップが必要なＩＤ：Ｂの消去不可領域のデータが存在しており、続いて、ＩＤ：Ｂの消去不可領域のデータのバックアップ処理を開始する。すなわち、（４）バックアップが必要なＩＤ：Ｂの消去不可領域のデータサイズと、書き込み可能領域のデータサイズとの比較を行い、（５）ＩＤ：Ｂの消去不可領域のデータを書き込み可能領域にコピーする。
【００６６】
そして、（６）消去候補ブロックのブロック消去を行って、書き込み可能領域を消去候補ブロック全体にまで拡大した後、（７）ＲＡＭ１４からＩＤ：Ａの消去不可領域のデータを書き込み可能領域にコピーする。
【００６７】
なお、上述の処理では、バックアップ処理Ａ〜Ｃをそれぞれ独立して説明しているが、これらのバックアップ処理Ａ〜Ｃを組み合わせ、バックアップ処理Ａ〜Ｃに準じてバックアップ処理を繰り返すことで、あらゆるデータのバックアップ処理を実現することが可能である。
【００６８】
次に、図１３を参照しながら、ＮＡＮＤ型フラッシュメモリ１１のデータ記録状態の遷移について説明する。図１３は、本発明の実施の形態において、ＮＡＮＤ型フラッシュメモリのデータ記録状態の遷移の一例を模式的に示す図である。図１３には、ブロックを単位とするＮＡＮＤ型フラッシュメモリ１１の構造が図示されている。
【００６９】
ＮＡＮＤ型フラッシュメモリ１１へのデータの書き込み・読み出しは、ページを単位として一連のデータごとに行う。また、データの書き込みにおいては、ブロックごとの消去回数を均一化するため、書き込み要求のたびに特定ブロックのみにデータの消去・書き込みを繰り返すのではなく、ＮＡＮＤ型フラッシュメモリ１１全体をリング状に使用し、各ブロックに順番にデータを書き込む。すなわち、本発明では、ＮＡＮＤ型フラッシュメモリ１１のデータ保存用スペース全体の最終位置の次の位置を、データ保存用スペース全体の先頭位置として使用する。
【００７０】
なお、図１３においても、説明を簡単にするために、マーカが常にページの先頭に位置する（すなわち、マーカを含むヘッダ情報部、データの長さの合計が１ページのバイト数と一致する）状態が仮定されているが、本発明はこの仮定に限定されるものではなく、ヘッダ情報部及びデータ部を含む情報部（情報領域）がページサイズに一致しない場合など、より一般性を有する条件においても適用可能である。
【００７１】
まず、未使用又は消去済みのページが連続している領域を書き込み可能領域として、不揮発性記憶装置の起動時には、その書き込み可能領域の先頭位置からデータ書き込みを開始する。例えば、図１３（ａ）に図示されているようにすべての領域が未使用の状態で起動した場合には、図１３（ｂ）に図示されているように、先頭ブロックの先頭ページ（先頭位置）から順にデータの書き込みを行う。そして、書き込み中のブロックの全領域におけるデータの書き込みが終了すると、続いて、図１３（ｃ）に図示されているように、連続した次の未使用ブロックへのデータの書き込みを開始し、以降同様に、次のブロックへのデータの書き込みを順次行う。
【００７２】
また、例えば図１３（ｄ）に図示されている状態において書き込み可能領域が不足した場合には、現在書き込み中のブロック以外に対してデータの消去判定を行い、データの消去が可能ならばブロック消去を行って、図１３（ｅ）に図示されているように書き込み可能領域を拡大する。そして、図１３（ｆ）に図示されているように最終ブロックの最終ページまでデータの書き込みを行うと、先頭ページに戻って、図１３（ｇ）に図示されているように、再度、先頭ブロックの先頭ページからデータの書き込みを行う。また、決められたタイミングで随時ブロック消去処理を行い、例えば、図１３（ｈ）に図示されているように、書き込み可能領域を拡大する。
【００７３】
また、次回の不揮発性記憶装置の起動時には、前回の最終書き込み位置の次のバイトからデータの書き込みを行う。例えば、図１３（ｇ）の状態で終了した場合には、次回起動時には再び先頭ブロックの最終書き込み位置の次のバイトからデータの書き込みを行い、再び、ページ順に連続したデータの書き込み及びブロック消去の判定を繰り返し行う。
【００７４】
上述のように、図１３に図示されているような順序でブロックを使用することで、ＮＡＮＤ型フラッシュメモリ１１の全メモリ領域（データ保存用スペースの全領域）を均等に使用して、データ書き込みを行うことが可能となり、データ書き込み回数を分散させることが可能となる。また、図１３に図示されているような順序でブロックを使用することで、データの書き込みを開始する際に前回までの書き込みデータの消去を必要としないので、バックアップ用として前回までの複数の書き込みデータを保存しておくことが可能となる。また、システム起動時にＮＡＮＤ型フラッシュメモリ１１の書き込み位置などの分析を行うことで、ＮＡＮＤ型フラッシュメモリ１１の別領域（別ブロック）に管理情報を格納しておく必要はなく、管理情報の更新やバックアップを行う必要もない。
【産業上の利用可能性】
【００７５】
本発明は、ＮＡＮＤ型フラッシュメモリの耐メモリ破壊性を向上させるとともに、効率的にメモリを使用したデータ及びバックアップデータの保存を行うという効果を有しており、フラッシュメモリ（特に、ＮＡＮＤ型フラッシュメモリ）などの不揮発性記憶装置へのデータ書き込みやデータ読み出しを管理するための技術に適用可能である。
【図面の簡単な説明】
【００７６】
【図１】本発明の実施の形態における不揮発性記憶装置のデータ管理装置の構成の一例を示す図である。
【図２】本発明の実施の形態において、ＮＡＮＤ型フラッシュメモリのメモリ分割の一例を示す図である。
【図３】本発明の実施の形態において、ＮＡＮＤ型フラッシュメモリに書き込み・読み出しされるデータが配置されるアドレス空間の一例を示す図である。
【図４】（ａ）は、本発明の実施の形態において、マーカを含むヘッダ情報部を有するデータ構造の一例を示す図であり、（ｂ）は、本発明の実施の形態において、マーカの直後に特定の値（マーカとは異なる値）が挿入されたヘッダ情報部を有するデータ構造の一例を示す図である。
【図５】本発明の実施の形態における不揮発性記憶装置のデータ管理装置の起動時の処理の一例を示すフローチャートである。
【図６】本発明の実施の形態における不揮発性記憶装置のデータ管理装置によって管理されるメモリ管理情報の一例を示す図である。
【図７】本発明の実施の形態におけるＮＡＮＤ型フラッシュメモリの最終書き込みページ及びバックアップページの一例を示す図である。
【図８】本発明の実施の形態における不揮発性記憶装置のデータ管理装置によって管理されるデータ管理情報の一例を示す図である。
【図９】本発明の実施の形態における不揮発性記憶装置のデータ管理装置が消去不可領域のページのバックアップを行ってからブロック消去を行う方法の一例を示す図である。
【図１０】本発明の実施の形態における不揮発性記憶装置のデータ管理装置のバックアップ処理Ａの一例を模式的に示す図である。
【図１１】本発明の実施の形態における不揮発性記憶装置のデータ管理装置のバックアップ処理Ｂの一例を模式的に示す図である。
【図１２】本発明の実施の形態における不揮発性記憶装置のデータ管理装置のバックアップ処理Ｃの一例を模式的に示す図である。
【図１３】本発明の実施の形態において、ＮＡＮＤ型フラッシュメモリのデータ記録状態の遷移の一例を模式的に示す図である。
【符号の説明】
【００７７】
１１  ＮＡＮＤ型フラッシュメモリ
１２  ＣＰＵ
１３  コントローラ
１４  演算用ＲＡＭ
【図１】
2009093528.tif 000003
【図２】
2009093528.tif 000004
【図３】
2009093528.tif 000005
【図４】
2009093528.tif 000006
【図５】
2009093528.tif 000007
【図６】
2009093528.tif 000008
【図７】
2009093528.tif 000009
【図８】
2009093528.tif 000010
【図９】
2009093528.tif 000011
【図１０】
2009093528.tif 000012
【図１１】
2009093528.tif 000013
【図１２】
2009093528.tif 000014
【図１３】
2009093528.tif 000015