(57)【特許請求の範囲】
【請求項１】
データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、
上記不揮発性メモリへのアクセスを管理する制御部と、
揮発性メモリと
を有し、
上記不揮発性メモリは、
上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の１かつ上記ページのサイズの整数倍のトランスレーションユニット（ＴＵ）単位で分割した物理ＴＵ毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有し、
上記揮発性メモリは、
上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット（ＴＵ）単位で分割した論理ＴＵと上記物理ＴＵとを対応付けた変換テーブルと、
上記不揮発性メモリの各上記物理ＴＵの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理ＴＵ状態マップと
を記憶し、
上記制御部は、
上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット（ＴＵ）単位で上記不揮発性メモリにアクセスし、
上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理ＴＵの拡張領域に、当該物理ＴＵに対応する論理ＴＵと、当該物理ＴＵを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込み、
上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理ＴＵに対して、当該論理ＴＵに対応付けられた最新のシーケンシャル番号の物理ＴＵを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理ＴＵを管理するための物理ＴＵ状態マップを生成し、
上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理ＴＵ状態マップを用いてクリーン状態の物理ＴＵを書き込み先に選択する
メモリ装置。
【請求項２】
上記制御部は、
上記不揮発性メモリにデータを書き込む場合に、上記物理ＴＵ状態マップにおいて、最新のシーケンシャル番号を持つブロックにクリーン状態の物理ＴＵが複数含まれているときには、当該最新のシーケンシャル番号を持つブロックを選択し、選択した当該ブロックのクリーン状態の複数の物理ＴＵに対して、予め定められた一定の順番でデータを書き込む
請求項１記載のメモリ装置。
【請求項３】
上記制御部は、
上記不揮発性メモリにデータを書き込む場合に、上記物理ＴＵ状態マップにおいて、最新のシーケンシャル番号を持つブロックにクリーンな物理ＴＵが含まれていないときには、未書き込みの新たなブロックをランダムに選択し、選択した当該ブロックのクリーン状態の複数の物理ＴＵに対して、予め定められた一定の順番でデータを書き込み、データを書き込んだ物理ＴＵの拡張領域に、上記最新のシーケンシャル番号を持つブロックの次の書き込み順を示すシーケンシャル番号を書き込む
請求項２記載のメモリ装置。
【請求項４】
上記制御部は、
上記変換テーブルにおいて既に物理ＴＵが対応付けられている論理ＴＵに対して新たなデータが書き込まれる場合には、当該新たなデータを当該既対応の物理ＴＵとは異なる別の物理ＴＵへ書き込み、
上記変換テーブルにおいて上記論理ＴＵに当該別の物理ＴＵを対応付け、
上記物理ＴＵ状態マップにおいて上記既対応の物理ＴＵをインバリッド状態とし、上記別の物理ＴＵをインユース状態に更新する
請求項３記載のメモリ装置。
【請求項５】
上記制御部は、
上記不揮発性メモリの拡張領域の上記管理情報を走査し、同じ論理ＴＵに対応付けられた物理ＴＵが複数存在する場合には、当該複数の物理ＴＵのうち、一番新しくデータが書き込まれた物理ＴＵの上記物理ＴＵ状態マップの登録状態をインユース状態とし、それ以外の物理ＴＵの上記物理ＴＵ状態マップの登録状態をインバリッド状態に更新する
請求項１から４のいずれか一項記載のメモリ装置。
【請求項６】
上記制御部は、
上記同じ論理ＴＵに対応付けられた複数の物理ＴＵが異なるブロックにある場合には、その内の最新のシーケンシャル番号に対応するブロックの物理ＴＵを、上記一番新しく書き込まれた物理ＴＵとし、
上記同じ論理ＴＵに対応付けられた複数の物理ＴＵが同じブロックにある場合には、予め定められた同一ブロック内でのデータの書き込み順において、その内の最も後にデータが書き込まれる物理ＴＵを、上記一番新しく書き込まれた物理ＴＵとする
請求項５記載のメモリ装置。
【請求項７】
上記制御部は、
上記不揮発性メモリにデータを書き込む場合には、上記不揮発性メモリから未使用のブロックを選択し、選択した当該未使用のブロック内の物理ＴＵ単位でデータの書き込み処理を実行し、
上記データの書き込みによりデータ書き込み処理が完了した有効な物理ＴＵとデータ書き込み処理が完了しなかった無効な物理ＴＵとを含むブロックが生じた場合には、当該ブロックのうち上記有効な物理ＴＵを別の未使用のブロックへコピーし、当該コピー元のブロックを消去するフォールド操作を行う
請求項１から６のいずれか一項記載のメモリ装置。
【請求項８】
上記制御部は、
上記フォールド操作において、フォールド元のブロック内の全てのインユース状態の物理ＴＵから、各々の物理ＴＵのデータおよび管理情報を読み込み、読み込んだデータおよび論理ＴＵ番号をフォールド先のブロックに書き込み、その後にフォールド元のブロックを消去する
請求項７記載のメモリ装置。
【請求項９】
上記制御部は、
上記不揮発性メモリにデータを書き込む場合には、上記物理ＴＵ毎にデータを書き込み、書き込みを完了した物理ＴＵの拡張領域に、当該物理ＴＵへのデータ書き込みが完了した時点で、データの書き込みが完了したか否かを示すステート情報を書き込み、
上記不揮発性メモリを起動する場合に、最後に書き込みを行った最新のシーケンシャル番号を持つブロックの各物理ＴＵの上記ステート情報をチェックし、データを有しかつ上記ステート情報が書き込まれていない物理ＴＵを検出したときには、前記フォールド操作を実行する
請求項１から８のいずれか一項記載のメモリ装置。
【請求項１０】
上記制御部は、
上記不揮発性メモリにデータを書き込む場合、データの書き込み対象の物理ＴＵの拡張領域に、当該拡張領域の管理情報が正しいか否かを示す情報を書き込み、
上記不揮発性メモリを起動する場合に、上記管理情報が正しいか否かを示す情報をチェックすることにより管理情報の値が正しいかどうかをチェックする
請求項１から９のいずれか一項記載のメモリ装置。
【請求項１１】
データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、
上記不揮発性メモリへのアクセスを管理する制御部と、
揮発性メモリと
を有し、
上記不揮発性メモリは、
上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の１かつ上記ページのサイズの整数倍のトランスレーションユニット（ＴＵ）単位で分割した物理ＴＵ毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有する、
メモリ装置の管理方法であって、
上記揮発性メモリは、
上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット（ＴＵ）単位で分割した論理ＴＵと上記物理ＴＵとを対応付けた変換テーブルと、
上記不揮発性メモリの各上記物理ＴＵの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理ＴＵ状態マップと
を記憶し、
上記制御部は、
上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット（ＴＵ）単位で上記不揮発性メモリにアクセスし、
上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理ＴＵの拡張領域に、当該物理ＴＵに対応する論理ＴＵと、当該物理ＴＵを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込み、
上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理ＴＵに対して、当該論理ＴＵに対応付けられた最新のシーケンシャル番号の物理ＴＵを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理ＴＵを管理するための物理ＴＵ状態マップを生成し、
上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理ＴＵ状態マップを用いてクリーン状態の物理ＴＵを書き込み先に選択する
メモリ管理方法。
【請求項１２】
データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、
上記不揮発性メモリへのアクセスを管理する制御部と、
揮発性メモリと
を有し、
上記不揮発性メモリは、
上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の１かつ上記ページのサイズの整数倍のトランスレーションユニット（ＴＵ）単位で分割した物理ＴＵ毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有する、
メモリ装置での上記制御部としてのコンピュータに実行されるプログラムであって、
上記揮発性メモリに、上記コンピュータによる上記プログラムの実行により、
上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット（ＴＵ）単位で分割した論理ＴＵと上記物理ＴＵとを対応付けた変換テーブルと、
上記不揮発性メモリの各上記物理ＴＵの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理ＴＵ状態マップと
を記憶させ、
上記コンピュータに、
上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット（ＴＵ）単位で上記不揮発性メモリにアクセスする手順と、
上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理ＴＵの拡張領域に、当該物理ＴＵに対応する論理ＴＵと、当該物理ＴＵを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込む手順と、
上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理ＴＵに対して、当該論理ＴＵに対応付けられた最新のシーケンシャル番号の物理ＴＵを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理ＴＵを管理するための物理ＴＵ状態マップを生成する手順と、
上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理ＴＵ状態マップを用いてクリーン状態の物理ＴＵを書き込み先に選択する手順と
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばＮＡＮＤフラッシュメモリに適用可能な、不揮発性メモリを有するメモリ装置、メモリ管理方法、およびプログラムに関するものである。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリは“書き込み”、“読み込み”、“消去”により電気的にデータを操作することができる。
たとえば、“書き込み”による各ビットの書き換えは「１」から「０」の一方向だけであることから、新たにデータを書き込む際にはいったん“消去”により全てのビットを「１」にしてから“書き込み”を行う必要がある。
【０００３】
ＮＡＮＤフラッシュメモリにおいては、図１に示すように、書き込み/読み込みの最小単位はページＰＧ、“消去”の最小単位はページが複数集まったブロックＢＬＫである。
たとえば、ページＰＧは５１２バイトに予備の１６バイトを加えた５２８バイト、つまり４２２４ビットにより形成され、ブロックＢＬＫはＰＧ０〜ＰＧ３１の３２個のページを含む。
“書き込み”の最小単位にくらべて、“消去”の最小単位は数十倍大きいので、ＮＡＮＤフラッシュの書き換えを効率よく行うにはなんらかの対策が必要である。
【０００４】
ＮＡＮＤフラッシュメモリの各ページＰＧは、図２に示すように、データを書き込むデータ領域１と付加的な情報を書き込む拡張領域２により構成される。
一般的に、ＮＡＮＤフラッシュメモリは、ブロックＢＬＫ内のページＰＧ(拡張領域も含む)の書き込みを、図３（Ａ）に示すように、若い番号のページから順番に行わなければならない。すなわち、ＮＡＮＤフラッシュメモリは、図３（Ｂ）に示すように、ブロックＢＬＫＢ内でランダムな書き込みは禁止されている。
また、ＮＡＮＤフラッシュメモリには出荷時に不良ブロックと呼ばれる使用できないブロックが存在し、不良ブロックをよけてＮＡＮＤフラッシュメモリへの読み書きを行う必要がある。
【０００５】
ＮＡＮＤフラッシュメモリには以上のような特徴があるが、ＮＡＮＤフラッシュメモリに対しても既存のファイルシステムやツールをそのまま、または若干の変更を加えるだけで使えるようにできることが望ましい。
そのためには“消去”の操作や不良ブロックを意識せずに使用できるようにする必要がある。
【０００６】
このため、ＮＡＮＤフラッシュメモリの利用側、たとえばファイルシステムからの要求を解釈してＮＡＮＤフラッシュメモリを操作する命令に変換するレイヤー(論理‐物理（論物）変換層)を実装する必要がある。
これに関する技術は種々提案されている（たとえば、特許文献１，２参照）。
【０００７】
特許文献１に記載されている不揮発性メモリは、停電等のデバイス操作中のシステムダウン時においても、正常な記憶状態に復帰する仕組みを備えている。また、この不揮発性メモリの論理アドレス‐物理アドレス変換（論物変換）の単位がブロックサイズであり、書き込みサイズがブロックサイズである。
【０００８】
また、特許文献２に記載されているＮＡＮＤフラッシュメモリは、ページ単位の論物変換を行っており、ブロック単位の論物変換より、効率よくデータの書き換えを行うことができる。
【特許文献１】特開２００３-３６２０９号公報
【特許文献２】特開２００２-３２２５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところが、上記の特許文献１に記載された不揮発性メモリにおいては、停電等のデバイス操作中のシステムダウン時においても、正常な記憶状態に復帰する仕組みを備えているが、論物変換の単位がブロックサイズであり、書き込みサイズがブロックサイズに限定される。
そのため、ブロックサイズより小さいデータの書き換えでも、ＮＡＮＤフラッシュメモリへのブロックサイズの書き込みが必要で、データの書き込みの無駄が大きいという不利益がある。
【００１０】
また、特許文献２に記載されたＮＡＮＤフラッシュメモリにおいては、ブロック単位の論物変換より、効率よくデータの書き換えを行うことができる。
しかし、図３に示すＮＡＮＤフラッシュメモリのブロック内のページの書き込み順序の制約を満たすためには、論物変換に必要な管理情報を格納するために別途不揮発性メモリやＮＡＮＤフラッシュメモリのデータ領域が必要になり、システムの構成が複雑になってしまうという不利益がある。
また、特許文献２においては、停電等のデバイス操作中のシステムダウン時において正常な記憶状態に復帰する仕組みが何ら考慮されていない。
【００１１】
本発明は、書き換えの効率化と使用率を向上を図ることができ、また、停電時等の書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰することが可能なメモリ装置、メモリ管理方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の観点のメモリ装置は、データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、上記不揮発性メモリへのアクセスを管理する制御部と、揮発性メモリとを有し、上記不揮発性メモリは、上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の１かつ上記ページのサイズの整数倍のトランスレーションユニット（ＴＵ）単位で分割した物理ＴＵ毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有し、上記揮発性メモリは、上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット（ＴＵ）単位で分割した論理ＴＵと上記物理ＴＵとを対応付けた変換テーブルと、上記不揮発性メモリの各上記物理ＴＵの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理ＴＵ状態マップとを記憶し、上記制御部は、上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット（ＴＵ）単位で上記不揮発性メモリにアクセスし、上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理ＴＵの拡張領域に、当該物理ＴＵに対応する論理ＴＵと、当該物理ＴＵを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込み、上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理ＴＵに対して、当該論理ＴＵに対応付けられた最新のシーケンシャル番号の物理ＴＵを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理ＴＵを管理するための物理ＴＵ状態マップを生成し、上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理ＴＵ状態マップを用いてクリーン状態の物理ＴＵを書き込み先に選択する。
【００１４】
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合に、上記物理ＴＵ状態マップにおいて、最新のシーケンシャル番号を持つブロックにクリーン状態の物理ＴＵが複数含まれているときには、当該最新のシーケンシャル番号を持つブロックを選択し、選択した当該ブロックのクリーン状態の複数の物理ＴＵに対して、予め定められた一定の順番でデータを書き込んでもよい。
【００１５】
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合に、上記物理ＴＵ状態マップにおいて、最新のシーケンシャル番号を持つブロックにクリーンな物理ＴＵが含まれていないときには、未書き込みの新たなブロックをランダムに選択し、選択した当該ブロックのクリーン状態の複数の物理ＴＵに対して、予め定められた一定の順番でデータを書き込み、データを書き込んだ物理ＴＵの拡張領域に、上記最新のシーケンシャル番号を持つブロックの次の書き込み順を示すシーケンシャル番号を書き込んでもよい。
【００１６】
好適には、上記制御部は、上記変換テーブルにおいて既に物理ＴＵが対応付けられている論理ＴＵに対して新たなデータが書き込まれる場合には、当該新たなデータを当該既対応の物理ＴＵとは異なる別の物理ＴＵへ書き込み、上記変換テーブルにおいて上記論理ＴＵに当該別の物理ＴＵを対応付け、上記物理ＴＵ状態マップにおいて上記既対応の物理ＴＵをインバリッド状態とし、上記別の物理ＴＵをインユース（INUSE）状態に更新してもよい。
【００１７】
好適には、上記制御部は、上記不揮発性メモリの拡張領域の上記管理情報を走査し、同じ論理ＴＵに対応付けられた物理ＴＵが複数存在する場合には、当該複数の物理ＴＵのうち、一番新しくデータが書き込まれた物理ＴＵの上記物理ＴＵ状態マップの登録状態をインユース（INUSE）状態とし、それ以外の物理ＴＵの上記物理ＴＵ状態マップの登録状態をインバリッド状態に更新してもよい。
【００１８】
好適には、上記制御部は、上記同じ論理ＴＵに対応付けられた複数の物理ＴＵが異なるブロックにある場合には、その内の最新のシーケンシャル番号に対応するブロックの物理ＴＵを、上記一番新しく書き込まれた物理ＴＵとし、上記同じ論理ＴＵに対応付けられた複数の物理ＴＵが同じブロックにある場合には、予め定められた同一ブロック内でのデータの書き込み順において、その内の最も後にデータが書き込まれる物理ＴＵを、上記一番新しく書き込まれた物理ＴＵとしてもよい。
【００１９】
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合には、上記不揮発性メモリから未使用のブロックを選択し、選択した当該未使用のブロック内の物理ＴＵ単位でデータの書き込み処理を実行し、上記データの書き込みによりデータ書き込み処理が完了した有効な物理ＴＵとデータ書き込み処理が完了しなかった無効な物理ＴＵとを含むブロックが生じた場合には、当該ブロックのうち上記有効な物理ＴＵを別の未使用のブロックへコピーし、当該コピー元のブロックを消去するフォールド操作を行ってもよい。
【００２０】
好適には、上記制御部は、上記フォールド操作において、フォールド元のブロック内の全てのインユース(INUSE)の物理ＴＵから、各々の物理ＴＵのデータおよび管理情報を読み込み、読み込んだデータおよび論理ＴＵ番号をフォールド先のブロックに書き込み、その後にフォールド元のブロックを消去してもよい。
【００２１】
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合には、上記物理ＴＵ毎にデータを書き込み、書き込みを完了した物理ＴＵの拡張領域に、当該物理ＴＵへのデータ書き込みが完了した時点で、データの書き込みが完了したか否かを示すステート情報を書き込み、上記不揮発性メモリを起動する場合に、最後に書き込みを行った最新のシーケンシャル番号を持つブロックの各物理ＴＵの上記ステート情報をチェックし、データを有しかつ上記ステート情報が書き込まれていない物理ＴＵを検出したときには、前記フォールド操作を実行してもよい。
【００２２】
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合、データの書き込み対象の物理ＴＵの拡張領域に、当該拡張領域の管理情報が正しいか否かを示す情報を書き込み、上記不揮発性メモリを起動する場合に、上記管理情報が正しいか否かを示す情報をチェックすることにより管理情報の値が正しいかどうかをチェックしてもよい。
【００２４】
本発明の第２の観点のメモリ管理方法は、データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、上記不揮発性メモリへのアクセスを管理する制御部と、揮発性メモリとを有し、上記不揮発性メモリは、上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の１かつ上記ページのサイズの整数倍のトランスレーションユニット（ＴＵ）単位で分割した物理ＴＵ毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有する、メモリ装置の管理方法であって、上記揮発性メモリは、上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット（ＴＵ）単位で分割した論理ＴＵと上記物理ＴＵとを対応付けた変換テーブルと、上記不揮発性メモリの各上記物理ＴＵの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理ＴＵ状態マップとを記憶し、上記制御部は、上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット（ＴＵ）単位で上記不揮発性メモリにアクセスし、上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理ＴＵの拡張領域に、当該物理ＴＵに対応する論理ＴＵと、当該物理ＴＵを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込み、上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理ＴＵに対して、当該論理ＴＵに対応付けられた最新のシーケンシャル番号の物理ＴＵを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理ＴＵを管理するための物理ＴＵ状態マップを生成し、上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理ＴＵ状態マップを用いてクリーン状態の物理ＴＵを書き込み先に選択する。
【００２５】
本発明の第３の観点のプログラムは、データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、上記不揮発性メモリへのアクセスを管理する制御部と、揮発性メモリとを有し、上記不揮発性メモリは、上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の１かつ上記ページのサイズの整数倍のトランスレーションユニット（ＴＵ）単位で分割した物理ＴＵ毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有する、メモリ装置での上記制御部としてのコンピュータに実行されるプログラムであって、上記揮発性メモリに、上記コンピュータによる上記プログラムの実行により、上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット（ＴＵ）単位で分割した論理ＴＵと上記物理ＴＵとを対応付けた変換テーブルと、上記不揮発性メモリの各上記物理ＴＵの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理ＴＵ状態マップとを記憶させ、上記コンピュータに、上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット（ＴＵ）単位で上記不揮発性メモリにアクセスする手順と、上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理ＴＵの拡張領域に、当該物理ＴＵに対応する論理ＴＵと、当該物理ＴＵを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込む手順と、上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理ＴＵに対して、当該論理ＴＵに対応付けられた最新のシーケンシャル番号の物理ＴＵを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理ＴＵを管理するための物理ＴＵ状態マップを生成する手順と、上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理ＴＵ状態マップを用いてクリーン状態の物理ＴＵを書き込み先に選択する手順とを実行させる。
【００２６】
本発明によれば、ページサイズ以上ブロックサイズ以下のサイズで論物変換の単位を選択できる。本発明においては、ブロックの書き込み順序(シーケンシャル番号)という情報を導入することにより、不揮発性メモリ内のページの書き込み順序の制約を満たしながら、論物変換に必要な管理情報を拡張領域に納めることができるようになる。
【発明の効果】
【００２７】
本発明によれば、書き換えの効率化と使用率の向上を図ることができ、また、停電時等の書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施形態を添付図面に関連付けて説明する。
【００２９】
図４は、本発明の実施形態に係るメモリ装置の基本的な構成例を示すブロック図である。
【００３０】
本メモリ装置１０は、不揮発性メモリであるＮＡＮＤフラッシュメモリ１１、たとえばＤＲＡＭやＳＲＡＭの揮発性メモリにより構成されるメモリ１２、および制御部としてのＣＰＵ１３を有している。
ＮＡＮＤフラッシュメモリ１１、メモリ１２、およびＣＰＵ１３は、バス１４を介して相互に接続されている。
【００３１】
ＮＡＮＤフラッシュメモリ１１は、複数のメモリセルが直列に接続されたＮＡＮＤストリングがアレイ状に配列されたメモリセルアレイを有し、電気的に書き込み、読み込み、および消去が可能である。
ＮＡＮＤフラッシュメモリ１１の書き込み/読み込みの最小単位はページＰＧ、消去の最小単位はページが複数集まったブロックＢＬＫである。
たとえば、ページＰＧは５１２バイトのデータ領域に拡張領域の１６バイトを加えた５２８バイト、つまり４２２４ビットにより形成され、ブロックＢＬＫはＰＧ０〜ＰＧ３１の３２個のページを含む。
たとえば、２Ｇｂｉｔチップの場合には、１２８ＫＢのブロックＢＬＫ０〜ＢＬＫ２０４７の２０４８個あり、各ブロックには、２ＫＢのページＰＧが６４個あり、各ブロックは１２８ＫＢ＝２ＫＢ×６４で構成される。
ＮＡＮＤフラッシュメモリ１１へのアクセス管理は、拡張領域に書き込まれる管理情報、書き込み完了データ情報、あるいはＣＲＣ情報等、並びにメモリ１２に構築される論物変換テーブル（論理‐物理変換テーブル）、物理トランスレーションユニット（ＴＵ）状態マップの情報に基づきＣＰＵ１３の制御に従って行われる。
なお、ここで、ＮＡＮＤフラッシュメモリ１１へのアクセスとは、書き込み、読み込み、および消去の各操作（アドレス変換、ガーベッジコレクション、ウェアーレベリング等に相当する制御処理も含む）に係るメモリアクセスを含む。
【００３２】
メモリ１２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を含む。
メモリ１２には、ＣＰＵ１３の制御の下、後で詳述する論物変換テーブル（論理‐物理ス変換テーブル）、および物理（ＴＵ）状態マップが構築される。
【００３３】
ＣＰＵ１３は、ＮＡＮＤフラッシュメモリ１１の拡張領域に書き込まれる管理情報、書き込み完了データ、あるいはＣＲＣ情報等、並びにメモリ１２に構築される論物変換テーブル（論理アドレス‐物理アドレス変換テーブル）、物理（ＴＵ）状態マップの情報に基づき、ＮＡＮＤフラッシュメモリ１１へのアクセスを管理する制御部として機能する。
【００３４】
ＣＰＵ１３は、ブロックＢＬＫの整数分の１かつページサイズの整数倍のトランスレーションユニット（ＴＵ）単位で論物変換を行って、ＮＡＮＤフラッシュメモリ１１のアクセス管理を行う。
ＣＰＵ１３は、ブロックの内容のうち、使用中の物理ＴＵだけ全てを別の未使用の物理ＴＵがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理ＴＵの数だけ、新たに未使用の物理ＴＵを増やす操作制御を行う機能を有する。
以下の説明では、この操作をフォールド操作という。
【００３５】
また、ＣＰＵ１３は、ＮＡＮＤフラッシュメモリ１１の拡張領域に、対応する論理ＴＵ番号ＬＴＵＮ、およびブロックの書き込み順序をあらわすシーケンシャル番号ＳＱＮを書き込むことにより、再起動時にＮＡＮＤフラッシュメモリの拡張領域の情報のみから論物変換テーブルを構築し、メモリ１２に格納する。
また、ＣＰＵ１３は、ＮＡＮＤフラッシュメモリ１１の拡張領域に、書き込みが完了したことを示すステート情報と拡張領域の管理情報のＣＲＣを書き込むことにより、ＮＡＮＤフラッシュメモリ１１への書き込み中または消去中の電源断から正常な状態に復旧する。
【００３６】
ここで、ＮＡＮＤフラッシュメモリ１１上における物理ＴＵの構成例および拡張領域のデータ構造について説明する。
図５は、本実施形態における、物理ＴＵ内の基本的な構成例および拡張領域に格納される管理情報に係るデータ構造を示す図である。
【００３７】
物理ＴＵは、図５に示すように、通常のデータが記憶されるデータ領域２１、少なくとも物理ＴＵの管理情報２２が記憶される拡張領域２３により構成される。
管理情報２２は、対応する論理ＴＵ番号ＬＴＵＮ、およびブロックＢＬＫごとに割り当てられる書き込み順序情報であるシーケンシャル番号ＳＱＮを含む。
そして、拡張領域２３は、シーケンシャル番号記憶領域２３１と、論理ＴＵ番号記憶領域２３２とを有している。拡張領域２３におけるシーケンシャル番号記憶領域２３１と論理ＴＵ番号記憶領域２３２を管理領域という場合もある。
拡張領域２３には、後で説明するように、管理情報２２の他に、書き込み完了データやＣＲＣ等の書き込みが完了したＴＵであるかを判別するための情報が記録される。
また、本実施形態においては、最も新しいシーケンシャル番号が割り当てられているブロックのことを最新ブロックと呼ぶ。
【００３８】
次に、メモリ１２上のデータ構造について説明する。
図６は、本実施形態におけるメモリ上のデータ構造について説明するための図である。ここでは、ブロック、論理ＴＵ、物理ＴＵを管理するためのメモリ上のデータ構造について説明する。
【００３９】
メモリ１２上には、論物変換テーブルＬＰＴＴ、物理ＴＵ状態マップＳＴＭＰ、およびシーケンシャル番号テーブルＳＱＮＴが形成される。
論物変換テーブルＬＰＴＴは、論理ＴＵ番号（アドレス）ＬＴＵＮから対応する物理ＴＵ番号（アドレス）ＢＴＵＮを得るためのテーブルである。
物理ＴＵ状態マップＳＴＭＰは、各物理ＴＵの状態を管理するためのマップで、状態は、クリーン(CLEAN)、インユース(INUSE)、ダーディ(DIRTY)、およびディフェクト(DEFECT)
の４種類存在する。
クリーン（CLEAN）は、消去操作を行った後の未書き込みの状態である。
インユース（INUSE）は、論物変換テーブルＬＰＴＴから参照される有効なデータが格納されている状態である（有効（バリッド）状態ということができる）。
ダーティ（DIRTY）は、論物変換テーブルＬＰＴＴから参照されない無効なデータが格納されている状態である（無効（インバリッド）状態ということができる）。
ディフェクト（DEFECT）は、不良ブロックの中の物理ＴＵである状態である。
シーケンシャル番号テーブルＳＱＮＴは、各ブロックに割り当てられたシーケンシャル番号ＳＱＮを格納するためのテーブルである。論物変換テーブルＬＰＴＴの構築の処理の際のみに使用する。
【００４０】
以下に、本実施形態の制御部としてのＣＰＵ１３のより具体的な機能および管理情報や書き込み完了を判別する情報に基づく制御機能について具体的に説明する。
【００４１】
本実施形態に係るＣＰＵ１３の特徴は、上述したように、ＴＵ（トランスレーションユニット）単位の論物変換である。
【００４２】
図７は、ＮＡＮＤフラッシュメモリの物理的なブロック、ページ、ＴＵの関係を示す図である。
【００４３】
ＴＵのサイズは、ブロックサイズの整数分の１かつページサイズの整数倍である。
ＮＡＮＤフラッシュメモリデバイス上の実際のＴＵを物理ＴＵ、本発明の実施形態によってアドレス変換されて利用側に提供されるＴＵを論理ＴＵと呼ぶ。
これにより、ファイルシステムの読み書きの単位と一致させるなど、柔軟な読み書きのサイズを設定することができる。
ＣＰＵ１３は、ＴＵ単位の論物変換を実現するために、論理ＴＵ番号（アドレス）から対応する物理ＴＵ番号（アドレス）を得るためのテーブルである論物変換テーブルＬＰＴＴを利用する。
【００４４】
ＣＰＵ１３は、基本的に論理ＴＵの読み込み、論理ＴＵの書き込み、フォールド、論物変換テーブルの構築を行う機能を有する。以下に、これらの機能について説明する。
【００４５】
＜論理ＴＵの読み込み＞
図８は、論理ＴＵの読み込み動作を示す図である。
ＣＰＵ１３は、論理ＴＵを読み込む際には、図８に示すように、論物変換テーブルＬＰＴＴから論理ＴＵ番号に対応する物理ＴＵ番号を求め、その物理ＴＵを読み込む。論物変換テーブルＬＰＴＴを介すことにより、不良ブロックを回避することができる。
【００４６】
＜論理ＴＵの書き込み＞
図９は、論理ＴＵの書き込み動作を示す図である。
書き込み前は、論理ＴＵ Ｌ１には物理ＴＵ Ｐ１が対応している。
ＣＰＵ１３は、まず、未書き込みの物理ＴＵ Ｐ２に書き換えを行いたいデータを書き込む(図９のＳＴ１)。
次に、ＣＰＵ１３は、論物変換テーブルＬＰＴＴの論理ＴＵ Ｌ１に、書き込みを行った物理ＴＵ Ｐ２を対応させる(図９のＳＴ２)。
ここでは、物理ＴＵ Ｐ２のように最新のデータが格納されている状態を有効、前の物理ＴＵ Ｐ１のように消去対象の古いデータが格納されている状態を無効と呼ぶ。
【００４７】
＜フォールド＞
図１０は、本実施形態に係るフォールド動作を示す図である。
ＮＡＮＤフラッシュメモリ１１はブロックＢＬＫ単位でしか消去できないため、図９の物理ＴＵ Ｐ１のようにブロックＢＬＫ内の他に有効な物理ＴＵがあると、無効な物理ＴＵであっても消去することができない。
そのため、書き込みを繰り返すにつれ無効な物理ＴＵが増加する一方で、書き込み可能な未書き込みの物理ＴＵが減少する。
そこで、ＣＰＵ１３は、図１０に示すように、無効な物理ＴＵの数を減らし、未書き込みの物理ＴＵを増やすために、有効な物理ＴＵだけを書き込み対象ブロックＢＬＫに移動し（ＳＴ１１）、移動元のブロックを消去する操作を行う（ＳＴ１２）。
本実施形態においては、この操作をフォールドと呼ぶ。
【００４８】
＜論物変換テーブルの構築＞
論物変換テーブルＬＰＴＴは揮発性のメモリ１２上の情報であり、電源が切れると失われる。その場合でも、電源投入後に、ＮＡＮＤフラッシュメモリ１１上の情報から論物変換テーブルＬＰＴＴの構築ができるように、ＣＰＵ１３は、物理ＴＵへデータの書き込み時に拡張領域に論理ＴＵ番号の書き込みを行う。
ＣＰＵ１３は、起動時に、各物理ＴＵの拡張領域の管理情報を走査することにより、論物変換テーブルＬＰＴＴをメモリ１２上に構築する。
ただし、論理ＴＵ の書き込みの際に古くなった物理ＴＵ（無効な物理ＴＵ)はすぐには消去しないので、たとえば図９における物理ＴＵ Ｐ１と物理ＴＵ Ｐ２のように、複数の物理ＴＵ が同じ論理ＴＵ番号を持つことが起こる。
ＣＰＵ１３は、論物変換テーブルＬＰＴＴの構築の際に、論理ＴＵ番号に対応する有効な物理ＴＵを知るためには、最後に書き込んだ物理ＴＵを判別する必要がある。
【００４９】
そこで、本実施形態においては、ＣＰＵＩ３は、図１１に示すように、ブロックＢＬＫの書き込みの順序情報であるシーケンシャル番号ＳＱＮをブロックＢＬＫごとに割り当てながら、順序が若いブロックから順に書き込みを行う。
ＣＰＵ１３は、同一ブロックＢＬＫ内では、図３のブロック内のページの書き込み順序を満たすように、物理ＴＵ番号の若い物理ＴＵから順に書き込みを行う。
ＣＰＵ１３は、物理ＴＵの書き込みの際に、拡張領域に論理ＴＵ番号に加えてシーケンシャル番号ＳＱＮを記録する。
図１１の例においては、ブロックＢＬＫＢＬＫｍにはシーケンシャル番号ＳＱＮとしてＳが付与され、次のブロックＢＬＫＢＬＫｍ＋１にはシーケンシャル番号ＳＱＮとしてＳ＋１が付与され、次のブロックＢＬＫＢＬＫｍ＋２にはシーケンシャル番号ＳＱＮとしてＳ＋２が付与され、次のブロックＢＬＫＢＬＫｍ＋３にはシーケンシャル番号ＳＱＮとしてＳ＋３が付与されている。
ＣＰＵ１３は、論物変換テーブルＬＰＴＴの構築の際に、シーケンシャル番号ＳＱＮから物理ＴＵの書き込み順序が一意にわかるので、同じ論理ＴＵ番号を持つ物理ＴＵのうち、最後に書き込んだ物理ＴＵ、つまり有効な物理ＴＵを判別することができる。
【００５０】
次に、論物変換テーブル構築の具体例について、図１２および図１３（Ａ）〜（Ｃ）に関連付けて説明する。
図１２は、メモリ上の論物変換テーブルとＮＡＮＤフラッシュメモリの各物理ＴＵの拡張領域に書き込まれている管理情報（論理ＴＵ番号ＬＴＵＮとシーケンシャル番号（ＳＱＮ））の関係の一例を示す図である。
図１３（Ａ）〜（Ｃ）は、図１２のＮＡＮＤフラッシュメモリの管理情報を物理ＴＵ０から順に走査することにより、論物変換テーブルが構築されていく様子を示す図である。
【００５１】
図１３（Ａ）〜（Ｃ）では、論物変換テーブルＬＰＴＴで更新があった項目についてのみ矢印（→）で新たに割り当てられた物理ＴＵを指し示すようになっている。また、図中（＊）で示す物理ＴＵがダーティ(DIRTY)と判別された理由について記述している。
【００５２】
図１３（Ａ）は、ブロックＢＬＫ０の走査直後の状態を示している。
この場合、ブロックＢＬＫ０において、同じ論理ＴＵ番号４を持つ物理ＴＵ３の方が新しいため、（＊）で示す物理ＴＵがダーティ(DIRTY)と判別されている。
【００５３】
図１３（Ｂ）は、ブロックＢＬＫ１の走査直後の状態を示している。
この場合、ブロックＢＫＬ０とＢＬＫ１において、同じ論理ＴＵ番号１を持つ物理ＴＵ４の方が新しいため、（＊）で示すブロックＢＬＫ０のブロック物理ＴＵがダーティ(DIRTY)と判別されている。
【００５４】
図１３（Ｃ）は、ブロックＢＬＫ２、ＢＬＫ３の走査直後の状態を示している。
この場合、ブロックＢＫＬ３とＢＬＫ０において、同じ論理ＴＵ番号５を持つ物理ＴＵ０の方が新しいため、（＊）で示すブロックＢＬＫ３のブロック物理ＴＵがダーティ(DIRTY)と判別されている。
【００５５】
次に、上記構成による具体的な各種動作をＣＰＵ１３の制御を中心に説明する。
まず、論理ＴＵの読み込み動作について説明する。
【００５６】
＜論理ＴＵの読み込み＞
ＣＰＵ１３は、読み込みを行う論理ＴＵの番号を、メモリ１２に格納されている論物変換テーブルＬＰＴＴを参照することで物理ＴＵ番号に変換する。そして、ＣＰＵ１３は、データの読み出しを実施する物理ＴＵを特定し、そのデータ領域を読み込む。
【００５７】
次に、論理ＴＵの書き込み動作ついて説明する。
【００５８】
＜論理ＴＵの書き込み＞
図１４は、データの書き込みの動作を示すフローチャートである。
図１４においては、物理ＴＵをＰＴＵとして表記している。
【００５９】
ＣＰＵ１３は、まず、書き込み対象ＰＴＵがブロックの最後のＴＵであるか否かを判別する（ＳＴ１０１）。
ステップＳＴ１０１において、書き込み対象ＰＴＵがブロックの最後のＴＵであると判別すると、未書き込みのブロックを一つ選び、その先頭ＴＵを書き込み対象ＰＴＵとする（ＳＴ１０２）。
そして、最新のシーケンシャル番号ＳＱＮを１増加する（ＳＴ１０３）。
次に、書き込み対象ＰＴＵに、指定されたデータ、論理ＴＵ番号（Ｌ）、最新のシーケンシャル番号を書き込む（ＳＴ１０４）。
次に、ＣＰＵ１３は、論物変換テーブルＬＰＴＴ、物理ＴＵ状態マップＳＴＭＰを更新する（ＳＴ１０５）。
なお、ステップＳＴ１０１において、書き込み対象ＰＴＵがブロックの最後のＴＵではないと判別すると、ステップＳＴ１０２ではなくステップＳＴ１０６に移行し、書き込み対象ＰＴＵを次の物理ＴＵに進め、ステップＳＴ１０４の処理に移行する。
【００６０】
このように、論理ＴＵ番号の書き込みにおいては、最新のシーケンシャル番号ＳＱＮを持つブロックＢＬＫ内の物理ＴＵで、その最終物理ＴＵから連続する最も番号の若いクリーン（CLEAN）な物理ＴＵに対して書き込みを行う。
もし、最終物理ＴＵがクリーン（CLEAN）でなければ、未書き込みのブロック(すべての物理ＴＵがクリーン（CLEAN）なブロック)をランダムに選択し、シーケンシャル番号ＳＱＮを１ステップ進めて、そのブロックに書き込む(この書き込みの対象になっている物理ＴＵのことを書き込み対象ＰＴＵ、書き込みの対象ＰＴＵが含まれるブロックのことを書き込み対象ブロックと呼ぶ)。
【００６１】
ステップＳＴ１０５においては、論物変換テーブルＬＰＴＴ、物理ＴＵ状態マップＳＴＭＰを次のように更新する。
物理ＴＵ状態マップＳＴＭＰは、論物変換テーブルＬＰＴＴで論理ＴＵ Ｌに前に対応していた物理ＴＵの状態をダーティ（DIRTY）に、書き込み対象ＰＴＵの状態をインユース（INUSE）に設定する。
論物変換テーブルＬＰＴＴは、論理ＴＵ Ｌに書き込み対象ＰＴＵを対応させる。
【００６２】
次に、フォールド動作について説明する。
【００６３】
＜フォールド＞
図１５は、本実施形態に係るフォールドの動作を示すフローチャートを示す。
図１５のフローチャート中においては、フォールド処理中の物理ＴＵをＰと表記している。
【００６４】
ＣＰＵ１３は、フォールド対象のブロックとして少なくとも一つのダーティ（DIRTY）な物理ＴＵを含むブロックを選択する（ＳＴ１１１）。
フォールド対象のブロック内の全てのインユース(INUSE)のＴＵに対して、以下の処理行う。
物理ＴＵ内のデータおよび管理情報を読み込む（ＳＴ１１２）。
次に、ステップＳＴ１１２で読み込んだデータ、論理ＴＵ番号を指定して、読み込んだ内容を書き込む。換言すれば、論理ＴＵの書き込みを行う（ＳＴ１１３）。
フォールド対象のブロック内の全てのインユース(INUSE)をＴＵに対して、上記の処理行った後、フォールド対象のブロックを消去する。
【００６５】
次に、起動時のテーブル構築について説明する。
【００６６】
＜起動時のテーブル構築＞
論物変換テーブルＬＰＴＴ、物理ＴＵ状態マップＳＴＭＰはメモリ１２上のデータであり、電源断により失われてしまう。
本実施形態においては、その場合でも、ＮＡＮＤフラッシュの拡張領域２３に書き込まれた管理情報（論理ＴＵ番号ＬＴＵＮおよびシーケンシャル番号ＳＱＮ)を走査することにより、論物変換テーブルＬＰＴＴ、物理ＴＵ状態マップＳＴＭＰを復元することができる。
【００６７】
図１６は、ブロックごとの拡張領域の走査と、論物変換テーブルおよび物理ＴＵ状態マップの復元の手順について示すフローチャートである。
図１６のフローチャート中において、走査中の物理ＴＵをＰ１と表記している。
【００６８】
ＮＡＮＤフラッシュの拡張領域の走査は、走査対象ブロック内の不良ブロック以外のすべてのブロック内に対して以下の処理を行う。
ＣＰＵ１３は、物理ＴＵＰ１の拡張領域２３における管理情報２２の記憶領域（ここでは管理領域という）２３１，２３２を読み込む（ＳＴ１２１）。
次に、物理ＴＵＰ１の管理領域が未書き込み（全てが０ｘＦＦ）であるか否かを判別する（ＳＴ１２２）。
ステップＳＴ１２２において、管理領域が未書き込みであると判別すると、物理ＴＵＰ１の状態をクリーン(CLEAN)に設定する（ＳＴ１２３）。
ステップＳＴ１２２において、管理領域が未書き込みでないと判別すると、物理ＴＵＰ１の管理領域の論理ＴＵ番号をＬとする。管理領域のシーケンシャル番号ＳＱＮをシーケンシャル番号テーブルＳＱＮＴに保存する（ＳＴ１２４）。
次に、現在までに構築された論物変換テーブルＬＰＴＴに論理ＴＵ番号Ｌを指す別の物理ＴＵＰ２が登録されているか否かを判別する（ＳＴ１２５）。
ステップＳＴ１２５において、別の物理ＴＵＰ２が登録されていないと判別すると、論物変換テーブルＬＰＴＴにおいて、論理ＴＵ番号Ｌには物理ＴＵ番号Ｐ１を対応させる（ＳＴ１２６）。
そして、物理ＴＵＰ１の状態をインユース(INUSE)に設定する（ＳＴ１２７）。
ステップＳＴ１２５において、別の物理ＴＵＰ２が登録されていると判別すると、物理ＴＵＰ１の方が物理ＴＵＰ２より新しいか否かを判別する（ＳＴ１２８）。これは、シーケンシャル番号ＳＱＮとブロック内の位置から判別する。
ステップＳＴ１２８において、物理ＴＵＰ１の方が物理ＴＵＰ２より新しいと判別すると、論物変換テーブルＬＰＴＴにおいて、論理ＴＵ番号Ｌには物理ＴＵ番号Ｐ１を対応させる（ＳＴ１２９）。
そして、物理ＴＵＰ１の状態をインユース(INUSE)に設定し、物理ＴＵＰ２の状態をダーティ(DIRTY)に設定する（ＳＴ１３０）。
ステップＳＴ１２８において、物理ＴＵＰ１の方が物理ＴＵＰ２より新しくないと判別すると、物理ＴＵＰ１の状態をダーティ(DIRTY)に設定する（ＳＴ１３１）。
走査対象ブロック内の全ての物理ＴＵに対して、上記の処理を行う。
【００６９】
このように起動時のテーブル構築において、同じ論理ＴＵ番号を持つ物理ＴＵが複数存在した場合、一番新しく書き込まれた物理ＴＵをインユース（INUSE）と判別し、それ以外をダーティ（DIRTY）と判別する。
書き込み順序はシーケンシャル番号とブロック内の位置から判別できる。
【００７０】
図１７（Ａ），（Ｂ）は、物理ＴＵの新旧の判別処理を説明するための図である。
図１７（Ａ）に示すように、物理ＴＵが異なるブロックにある場合には、シーケンシャル番号ＳＱＮの大小で判別する。この例では、シーケンシャル番号ＳＱＮがＳ１＜Ｓ２であることから、物理ＴＵＰ２が物理ＴＵＰ１より新しいと判別する。
【００７１】
図１７（Ｂ）に示すように、物理ＴＵが同一ブロック内にある場合、物理ＴＵ番号ＰＴＵＮがＰ２＜Ｐ１であることから、物理ＴＵＰ１が物理ＴＵＰ２より新しいと判別する。
【００７２】
＜ＮＡＮＤフラッシュメモリへ書き込み中または消去中の電源断対策＞
次に、停電や動作不良等に起因するシステムダウンが生じた後に実施されるシステム復帰処理に伴ってＮＡＮＤフラッシュメモリ１１におけるデータの記憶状態を正常化するための工夫について述べる。
【００７３】
ＮＡＮＤフラッシュメモリ１１の書き込み中に電源断が発生すると、書き込み中の物理ＴＵのデータや管理情報が中途半端な値になっている可能性がある。また、ＮＡＮＤフラッシュメモリ１１の消去中に電源断が発生すると、消去中のブロック中の物理ＴＵのデータや管理情報が完全に消去しきらずに残ってしまう可能性がある。
再起動時に、そのような中途半端な状態の物理ＴＵを有効な物理ＴＵとみなして利用したり、未書き込みとみなして上書きを行ってしまったりしないための仕組みが必要である。
そこで、次のような仕組みを追加する。
【００７４】
＜書き込み中の電源断対策＞
図１８は、書き込み中の電源断と修復処理の一例を示す図である。
【００７５】
データと管理情報の書き込み直後に図１８に示すように、別途書き込みを完了したことを表すステート(書き込み完了ステート)情報２４を拡張領域２３に書き込む。
再起動時に、最後に書き込みを行ったブロック(最新のシーケンシャル番号を持つブロック)について書き込み完了ステートをチェックすることにより、書き込み中の物理ＴＵを検出する。
たとえば、図１８に示すように、再起動時に、物理ＴＵＰ３について、データや管理情報の書き込みがある一方、書き込み完了ステート情報が未書き込みであることから、ＣＰＵ１３は書き込み中の電源断を検出する。
そして、ブロックＢＬＫ１の有効な物理ＴＵの内容のみを未書き込みのブロックＢＬＫ２に移動する。
そして、ブロックＢＬＫ１を消去する。
すなわち、書き込み中の物理ＴＵを検出したら、図１８に示すような修復処理を行って、書き込み中の物理ＴＵを消去する。
【００７６】
＜消去中の電源断対策＞
図１９は、消去中の電源断と修復処理の一例を示す図である。
【００７７】
図１９に示すように、管理情報２２に対するＣＲＣ２５を拡張領域２３に追加する。
再起動時に、管理情報のＣＲＣをチェックすることにより管理情報の値が正しいかどうかをチェックする。
図１９では、消去中の電源断が発生してデータ領域２１や拡張領域２３が不正な状態になった場合にも、修復処理によって消去中だったブロックが再度消去されること示している。
たとえば、図１９に示すように、論物変換テーブル構築時に、このブロック内の物理ＴＵを、その消去の状態に応じて、次のように、ダーティ(DIRTY)またはクリーン(CLEAN)と判断する。
（ａ）：管理情報、ＣＲＣが完全に残っている場合、もともともこの物理ＴＵはダーティ(DIRTY)であり、正しくダーティ(DIRTY)と判断する。
（ｂ）：管理情報、ＣＲＣの一部が残っている場合、ＣＲＣのチェックが正しくないことからダーティ(DIRTY)と判断する。
（ｃ）：管理情報、ＣＲＣが全て消去されている場合、クリーン(CLEAN)と判断する。
【００７８】
そしＴ、ブロックＢＬＫにはインユース(INUSE)な物理ＴＵがないので消去する。修復処理では、インユース(INUSE)な物理ＴＵを一つも含まないブロックを消去する。
【００７９】
次に、デバイス操作中の電源断対策を行う場合について、前節の“動作説明”で述べた動作と異なる点を述べる。以下のように「論理ＴＵの書き込み」および「論物変換テーブルの構築」が異なる。
【００８０】
＜論理ＴＵの書き込み＞
図２０は、電源断対策を行う場合の論理ＴＵの書き込みの動作のフローチャートである。
この図２０の処理と図１４の処理と比較すると、ステップＳＴ１０４Ａの処理において、拡張領域に書き込む管理情報にＣＲＣが追加された点、およびステップＳＴ１０５の処理の前に、データと管理情報の書き込み直後に、別途書き込みを完了したことを表すステートを書き込むステップＳＴ１０７が設けられている点が異なる。
【００８１】
＜論物変換テーブルの構築＞
図２１は、電源断対策を行う場合の論理ＴＵの書き込みの動作のフローチャートである。
この図２１の処理と図１６の処理を比較すると、ステップＳＴ１２２において否定的な判別を行った場合に、拡張領域２３に書き込み完了ステート情報が正しく書き込まれているか否かを判別するステップＳＴ１３２と、正しく書き込まれていると判別した場合に、拡張領域のＣＲＣが正しいか否かを判別するステップＳＴ１３３が設けられている点が異なる。
【００８２】
論物変換テーブル構築後には、さらに修復処理を行う。
図２２は、書き込み中または消去中の電源断からの修復処理を示すフローチャートである。
【００８３】
たとえば、不良ブロック以外で、インユース(INUSE)な物理ＴＵが一つも含まれないブロックを全て消去する（ＳＴ１４１）。ここでは、消去中の電源断のための修復処理を行う。
次に、最新ブロックをＢ１、最新ブロックＢ１の最も物理ＴＵ番号の大きいクリーン(CLEAN)でない物理ＴＵをＰ１とする（ＳＴ１４２）。
物理ＴＵＰ１はダーティ(DIRTY)であるか否かを判別する（ＳＴ１４３）。
ステップＳＴ１４３において、物理ＴＵＰ１はダーティ(DIRTY)でないと判別すると、物理ＴＵＰ１はブロックＢ１の最終物理ＴＵであるか否かを判別する（ＳＴ１４４）。
ステップＳＴ１４４において、最終物理ＴＵでないと判別すると、物理ＴＵＰ１より１つ物理ＴＵ番号の大きい物理ＴＵをＰ２とする。そして、物理ＴＵＰ２のデータ領域２１、拡張領域２３全体を読み込む（ＳＴ１４５）。
次に、読み込んだデータが全て“ＦＦｈ”のパターンであるか否かを判別する（ＳＴ１４６）。そして、ステップＳＴ１４６において、全て“ＦＦｈ”のパターンである判別した場合、ステップＳＴ１４４で最終物理ＴＵであると判別した場合は処理を終了する。
一方、ステップＳＴ１４３において、物理ＴＵＰ１がダーティ(DIRTY)であると判別した場合、または、ステップＳＴ１４６において、全て“ＦＦｈ”のパターンでないと判別した場合には、ブロックＢ１の修復処理（リロケート）を行う（ＳＴ１４７）。
ステップＳＴ１４７においては、書き込み中の電源断のための修復処理(リロケート)を行う。
【００８４】
図２３は、リロケート処理のフローチャートである。
図２３のフローチャ中では、リロケート処理中の物理ＴＵはＰと表記している。
【００８５】
書き込み対象ＰＴＵを書き込み対象ブロックの最終物理ＴＵに設定する（ＳＴ１４７１）。
リロケート対象のブロック内の全てのインユース(INUSE)なＴＵに対し、以下の処理を行う。
物理ＴＵ内のデータ、および管理領域（管理情報が記憶されている記憶領域）を読み込む（ＳＴ１４７２）。
読み込んだ内容を書き込む（ＳＴ１４７３）。
リロケート対象のブロック内の全てのインユース(INUSE)なＴＵに対し、上記の処理を行う。
そして、リロケート対象のブロックを消去する（ＳＴ１４７４）。
【００８６】
なお、ステップＳＴ１４７１において、あらかじめ書き込み対象ＰＴＵをブロックの最終物理ＴＵにしているのは、ステップＳＴ１４７３での書き込みの開始の物理ＴＵとして、未書き込みのブロックの先頭の物理ＴＵを設定するためである。
【００８７】
以上説明したように、本実施形態によれば、ＣＰＵ１３は、ブロックサイズの整数分の１かつページサイズの整数倍のトランスレーションユニット単位(ＴＵ単位)で論物変換を行って、ＮＡＮＤフラッシュメモリ１１のアクセス管理を行い、ブロックの内容のうち、使用中の物理ＴＵだけ全てを別の未使用の物理ＴＵがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理ＴＵの数だけ、新たに未使用の物理ＴＵを増やす操作制御を行う機能と、ＮＡＮＤフラッシュメモリの拡張領域に、対応する論理ＴＵ番号、およびブロックの書き込み順序をあらわすシーケンシャル番号を書き込むことにより、再起動時にＮＡＮＤフラッシュメモリの拡張領域の情報のみから論物変換テーブルを構築し、メモリ１２に格納する機能を有することから、以下の効果を得ることができる。
【００８８】
論物変換の単位をページサイズ以上ブロックサイズ以下で選択することができ、ファイルシステム等の要求単位に合わせた論物変換を実現できる。
ＮＡＮＤフラッシュの拡張領域に、論物変換テーブル等の管理情報の構築に必要な情報をすべて格納するので、ＮＡＮＤフラッシュの利用率を向上できる(論物変換テーブル等の管理情報の構築に必要な情報を格納するために、ＮＡＮＤフラッシュのデータ領域を利用したり、別途不揮発性メモリを使用したりせずに済む)。
ＮＡＮＤフラッシュにデータを書き込む際に、同時に論物変換テーブル等の管理情報の構築に必要な情報を書き込むので、論物変換に関する管理情報の書き込みを別途行うことが不要で、効率よくデータの書き換えができる。
【００８９】
また、ＣＰＵ１３は、ＮＡＮＤフラッシュメモリ１１の拡張領域に、書き込みが完了したことを示すステート情報と拡張領域の管理情報のＣＲＣを書き込むことにより、ＮＡＮＤフラッシュメモリ１１への書き込み中または消去中の電源断から正常な状態に復旧する機能を有することから、停電等のＮＡＮＤフラッシュの書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰する仕組みを持たせることもできる。
【００９０】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【００９１】
【図１】ＮＡＮＤフラッシュメモリのブロックとページとの関係を示す図である。
【図２】一般的なページの構成例を示す図である。
【図３】ブロック内のページの書き込み順序について説明するための図である。
【図４】本発明の実施形態に係るメモリ装置の基本的な構成例を示すブロック図である。
【図５】本実施形態における、物理ＴＵ内の基本的な構成例および拡張領域に格納される管理情報に係るデータ構造を示す図である。
【図６】本実施形態におけるメモリ上のデータ構造について説明するための図である。
【図７】ＮＡＮＤフラッシュメモリの物理的なブロック、ページ、ＴＵの関係を示す図である。
【図８】論理ＴＵの読み込み動作を示す図である。
【図９】論理ＴＵの書き込み動作を示す図である。
【図１０】本実施形態に係るフォールド動作を示す図である。
【図１１】シーケンシャル番号の具体的な付与例を説明するための図である。
【図１２】メモリ上の論物変換テーブルとＮＡＮＤフラッシュメモリの各物理ＴＵの拡張領域に書き込まれている管理情報（論理ＴＵ番号ＬＴＵＮとシーケンシャル番号（ＳＱＮ））の関係の一例を示す図である。
【図１３】図１２のＮＡＮＤフラッシュメモリの管理情報を物理ＴＵ０から順に走査することにより、論物変換テーブルが構築されていく様子を示す図である。
【図１４】データの書き込みの動作を示すフローチャートである。
【図１５】本実施形態に係るフォールドの動作を示すフローチャートを示す。
【図１６】ブロックごとの拡張領域の走査と、論物変換テーブルおよび物理ＴＵ状態マップの復元の手順について示すフローチャートである。
【図１７】物理ＴＵの新旧の判別処理を説明するための図である。
【図１８】書き込み中の電源断と修復処理の一例を示す図である。
【図１９】消去中の電源断と修復処理の一例を示す図である。
【図２０】電源断対策を行う場合の論理ＴＵの書き込みの動作のフローチャートである。
【図２１】電源断対策を行う場合のブロックごとの拡張領域の走査と、論物変換テーブルおよび物理ＴＵ状態マップの復元の手順について示すフローチャートである。
【図２２】書き込み中または消去中の電源断からの修復処理を示すフローチャートである。
【図２３】リロケート処理のフローチャートである。
【符号の説明】
【００９２】
１０・・・メモリ装置、１１・・・ＮＡＮＤフラッシュメモリ、１２・・・メモリ、１３・・・ＣＰＵ（制御部）、１４・・・バス、ＬＰＴＴ・・・論物変換テーブル、２１・・・データ領域、２２・・・管理情報、２３・・・拡張領域、ＰＧ・・・ページ、ＢＬＫ・・・ブロック、ＴＵ・・・トランスレーションユニット、ＳＱＮ・・・シーケンシャル番号。
【図１】
0004535117.tif 000002
【図２】
0004535117.tif 000003
【図３】
0004535117.tif 000004
【図４】
0004535117.tif 000005
【図５】
0004535117.tif 000006
【図６】
0004535117.tif 000007
【図７】
0004535117.tif 000008
【図８】
0004535117.tif 000009
【図９】
0004535117.tif 000010
【図１０】
0004535117.tif 000011
【図１１】
0004535117.tif 000012
【図１２】
0004535117.tif 000013
【図１３】
0004535117.tif 000014
【図１４】
0004535117.tif 000015
【図１５】
0004535117.tif 000016
【図１６】
0004535117.tif 000017
【図１７】
0004535117.tif 000018
【図１８】
0004535117.tif 000019
【図１９】
0004535117.tif 000020
【図２０】
0004535117.tif 000021
【図２１】
0004535117.tif 000022
【図２２】
0004535117.tif 000023
【図２３】
0004535117.tif 000024