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