説明

メモリ装置、メモリ管理方法、およびプログラム

【課題】書き換えの効率化と使用率の向上を図ることができ、また、停電時等の書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰することが可能なメモリ装置、メモリ管理方法、およびプログラムを提供する。
【解決手段】CPU13は、ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット単位(TU単位)で論物変換を行って、NANDフラッシュメモリ11のアクセス管理を行い、ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、たとえばNANDフラッシュメモリに適用可能な、不揮発性メモリを有するメモリ装置、メモリ管理方法、およびプログラムに関するものである。
【背景技術】
【0002】
NANDフラッシュメモリは“書き込み”、“読み込み”、“消去”により電気的にデータを操作することができる。
たとえば、“書き込み”による各ビットの書き換えは「1」から「0」の一方向だけであることから、新たにデータを書き込む際にはいったん“消去”により全てのビットを「1」にしてから“書き込み”を行う必要がある。
【0003】
NANDフラッシュメモリにおいては、図1に示すように、書き込み/読み込みの最小単位はページPG、“消去”の最小単位はページが複数集まったブロックBLKである。
たとえば、ページPGは512バイトに予備の16バイトを加えた528バイト、つまり4224ビットにより形成され、ブロックBLKはPG0〜PG31の32個のページを含む。
“書き込み”の最小単位にくらべて、“消去”の最小単位は数十倍大きいので、NANDフラッシュの書き換えを効率よく行うにはなんらかの対策が必要である。
【0004】
NANDフラッシュメモリの各ページPGは、図2に示すように、データを書き込むデータ領域1と付加的な情報を書き込む拡張領域2により構成される。
一般的に、NANDフラッシュメモリは、ブロックBLK内のページPG(拡張領域も含む)の書き込みを、図3(A)に示すように、若い番号のページから順番に行わなければならない。すなわち、NANDフラッシュメモリは、図3(B)に示すように、ブロックBLKB内でランダムな書き込みは禁止されている。
また、NANDフラッシュメモリには出荷時に不良ブロックと呼ばれる使用できないブロックが存在し、不良ブロックをよけてNANDフラッシュメモリへの読み書きを行う必要がある。
【0005】
NANDフラッシュメモリには以上のような特徴があるが、NANDフラッシュメモリに対しても既存のファイルシステムやツールをそのまま、または若干の変更を加えるだけで使えるようにできることが望ましい。
そのためには“消去”の操作や不良ブロックを意識せずに使用できるようにする必要がある。
【0006】
このため、NANDフラッシュメモリの利用側、たとえばファイルシステムからの要求を解釈してNANDフラッシュメモリを操作する命令に変換するレイヤー(論理‐物理(論物)変換層)を実装する必要がある。
これに関する技術は種々提案されている(たとえば、特許文献1,2参照)。
【0007】
特許文献1に記載されている不揮発性メモリは、停電等のデバイス操作中のシステムダウン時においても、正常な記憶状態に復帰する仕組みを備えている。また、この不揮発性メモリの論理アドレス‐物理アドレス変換(論物変換)の単位がブロックサイズであり、書き込みサイズがブロックサイズである。
【0008】
また、特許文献2に記載されているNANDフラッシュメモリは、ページ単位の論物変換を行っており、ブロック単位の論物変換より、効率よくデータの書き換えを行うことができる。
【特許文献1】特開2003-36209号公報
【特許文献2】特開2002-32256号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
ところが、上記の特許文献1に記載された不揮発性メモリにおいては、停電等のデバイス操作中のシステムダウン時においても、正常な記憶状態に復帰する仕組みを備えているが、論物変換の単位がブロックサイズであり、書き込みサイズがブロックサイズに限定される。
そのため、ブロックサイズより小さいデータの書き換えでも、NANDフラッシュメモリへのブロックサイズの書き込みが必要で、データの書き込みの無駄が大きいという不利益がある。
【0010】
また、特許文献2に記載されたNANDフラッシュメモリにおいては、ブロック単位の論物変換より、効率よくデータの書き換えを行うことができる。
しかし、図3に示すNANDフラッシュメモリのブロック内のページの書き込み順序の制約を満たすためには、論物変換に必要な管理情報を格納するために別途不揮発性メモリやNANDフラッシュメモリのデータ領域が必要になり、システムの構成が複雑になってしまうという不利益がある。
また、特許文献2においては、停電等のデバイス操作中のシステムダウン時において正常な記憶状態に復帰する仕組みが何ら考慮されていない。
【0011】
本発明は、書き換えの効率化と使用率を向上を図ることができ、また、停電時等の書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰することが可能なメモリ装置、メモリ管理方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0012】
本発明の第1の観点のメモリ装置は、電気的にデータの書き込み、読み込み、消去が可能で、書き込みおよび読み込みはページ単位で行われ、消去は複数のページを含むブロック単位で行われる不揮発性メモリと、上記不揮発性メモリへのアクセスを管理する制御部と、を有し、上記制御部は、上記ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット(TU)単位で論理アドレス‐物理アドレス変換(論物変換)を行って、上記不揮発性メモリのアクセス管理を行う。
【0013】
好適には、上記制御部は、ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行う。
【0014】
好適には、メモリをさらに有し、上記不揮発性メモリにおける物理TUは、データ領域と拡張領域を含み、上記制御部は、上記不揮発性メモリの拡張領域に、対応する論理TU番号、およびブロックの書き込み順序をあらわすシーケンシャル番号を含む管理情報を書き込み、起動時に不揮発性メモリの上記拡張領域の上記情報を走査することにより論物変換テーブルを構築し、上記メモリに格納し、上記メモリ上の上記論物変換テーブルにより論物変換処理を行う。
【0015】
好適には、上記制御部は、上記起動時に、不揮発性メモリの上記拡張領域の上記管理情報を走査することにより上記論物変換テーブルの構築に並行して、物理TUを管理するための物理TU状態マップを復元し、上記物理TU状態復元マップは、上記物理TUが、消去操作を行った後の未書き込みのクリーン(CLEAN)状態、上記論物変換テーブルから参照される有効なデータが格納されているインユース(INUSE)状態、および上記論物変換テーブルから参照されない無効なデータが格納されているインバリッド状態のいずれの状態にあるかを示す。
【0016】
好適には、上記制御部は、上記拡張領域に論理TU番号の書き込みを行う場合、最新の上記シーケンシャル番号を持つブロック内の物理TUで、その最終物理TUから連続する最も番号の若いクリーン(CLEAN)な状態の物理TUに対して書き込みを行う。
【0017】
好適には、上記制御部は、上記最終物理TUがクリーン(CLEAN)状態でない場合、未書き込みのブロックをランダムに選択し、シーケンシャル番号を1ステップ進めて、当該ブロックに書き込む。
【0018】
好適には、上記制御部は、上記物理TU状態マップを、上記論物変換テーブルで論理TUに前に対応していた物理TUの状態をインバリッドに、書き込み対象物理TUの状態をインユース(INUSE)に設定して更新し、上記論物変換テーブルは、書き込み対象物理TUに書き換えて更新する。
【0019】
好適には、上記制御部は、不揮発性メモリの上記拡張領域の上記管理情報を走査して、同じ論理TU番号を持つ物理TUが複数存在した場合、一番新しく書き込まれた物理TUをインユース(INUSE)と判別し、それ以外をインバリッドと判別する。
【0020】
好適には、上記制御部は、物理TUの新旧の判別処理を、物理TUが異なるブロックにある場合には、シーケンシャル番号の大小で判別し、物理TUが同一ブロック内にある場合、物理TU番号で判別する。
【0021】
好適には、上記制御部は、ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行うフォールド操作を行う場合、フォールド対象のブロック内の全てのインユース(INUSE)のTUに対して、物理TU内のデータおよび管理情報を読み込み、読み込んだデータ、論理TU番号を指定して、論理TUの書き込みを行った後、フォールド対象のブロックを消去する。
【0022】
好適には、上記制御部は、上記拡張領域に上記管理情報の他に書き込みを完了した否かを判別可能なステート情報を書き込み、起動時に、最後に書き込みを行った最新のシーケンシャル番号を持つブロックについて書き込み完了ステート情報をチェックすることにより、書き込み中の電源断があったか否かを検出する。
【0023】
好適には、上記制御部は、上記拡張領域に上記管理情報の他に当該管理情報が正しいか否かを示す情報を書き込み、起動時に、上記管理情報が正しいか否かを示す情報をチェックすることにより管理情報の値が正しいかどうかをチェックする。
【0024】
本発明の第2の観点は、電気的にデータの書き込み、読み込み、消去が可能で、書き込みおよび読み込みはページ単位で行われ、消去は複数のページを含むブロック単位で行われる不揮発性メモリを有するメモリ装置の管理方法であって、上記ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット(TU)単位で論理アドレス‐物理アドレス変換(論物変換)を行い、変換結果に応じた上記不揮発性メモリのアクセス管理を行う。
【0025】
本発明の第3の観点は、電気的にデータの書き込み、読み込み、消去が可能で、書き込みおよび読み込みはページ単位で行われ、消去は複数のページを含むブロック単位で行われる不揮発性メモリを有するメモリ装置の管理処理であって、上記ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット(TU)単位で論理アドレス‐物理アドレス変換(論物変換)を行う処理と、変換結果に応じた上記不揮発性メモリのアクセス管理を行う処理とをコンピュータに実行させるプログラムである。
【0026】
本発明によれば、ページサイズ以上ブロックサイズ以下のサイズで論物変換の単位を選択できる。本発明においては、ブロックの書き込み順序(シーケンシャル番号)という情報を導入することにより、不揮発性メモリ内のページの書き込み順序の制約を満たしながら、論物変換に必要な管理情報を拡張領域に納めることができるようになる。
【発明の効果】
【0027】
本発明によれば、書き換えの効率化と使用率の向上を図ることができ、また、停電時等の書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰することができる。
【発明を実施するための最良の形態】
【0028】
以下、本発明の実施形態を添付図面に関連付けて説明する。
【0029】
図4は、本発明の実施形態に係るメモリ装置の基本的な構成例を示すブロック図である。
【0030】
本メモリ装置10は、不揮発性メモリであるNANDフラッシュメモリ11、たとえばDRAMやSRAMの揮発性メモリにより構成されるメモリ12、および制御部としてのCPU13を有している。
NANDフラッシュメモリ11、メモリ12、およびCPU13は、バス14を介して相互に接続されている。
【0031】
NANDフラッシュメモリ11は、複数のメモリセルが直列に接続されたNANDストリングがアレイ状に配列されたメモリセルアレイを有し、電気的に書き込み、読み込み、および消去が可能である。
NANDフラッシュメモリ11の書き込み/読み込みの最小単位はページPG、消去の最小単位はページが複数集まったブロックBLKである。
たとえば、ページPGは512バイトのデータ領域に拡張領域の16バイトを加えた528バイト、つまり4224ビットにより形成され、ブロックBLKはPG0〜PG31の32個のページを含む。
たとえば、2Gbitチップの場合には、128KBのブロックBLK0〜BLK2047の2048個あり、各ブロックには、2KBのページPGが64個あり、各ブロックは128KB=2KB×64で構成される。
NANDフラッシュメモリ11へのアクセス管理は、拡張領域に書き込まれる管理情報、書き込み完了データ情報、あるいはCRC情報等、並びにメモリ12に構築される論物変換テーブル(論理‐物理変換テーブル)、物理トランスレーションユニット(TU)状態マップの情報に基づきCPU13の制御に従って行われる。
なお、ここで、NANDフラッシュメモリ11へのアクセスとは、書き込み、読み込み、および消去の各操作(アドレス変換、ガーベッジコレクション、ウェアーレベリング等に相当する制御処理も含む)に係るメモリアクセスを含む。
【0032】
メモリ12は、プログラム格納用のROM、作業用メモリであるRAM等を含む。
メモリ12には、CPU13の制御の下、後で詳述する論物変換テーブル(論理‐物理ス変換テーブル)、および物理(TU)状態マップが構築される。
【0033】
CPU13は、NANDフラッシュメモリ11の拡張領域に書き込まれる管理情報、書き込み完了データ、あるいはCRC情報等、並びにメモリ12に構築される論物変換テーブル(論理アドレス‐物理アドレス変換テーブル)、物理(TU)状態マップの情報に基づき、NANDフラッシュメモリ11へのアクセスを管理する制御部として機能する。
【0034】
CPU13は、ブロックBLKの整数分の1かつページサイズの整数倍のトランスレーションユニット(TU)単位で論物変換を行って、NANDフラッシュメモリ11のアクセス管理を行う。
CPU13は、ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行う機能を有する。
以下の説明では、この操作をフォールド操作という。
【0035】
また、CPU13は、NANDフラッシュメモリ11の拡張領域に、対応する論理TU番号LTUN、およびブロックの書き込み順序をあらわすシーケンシャル番号SQNを書き込むことにより、再起動時にNANDフラッシュメモリの拡張領域の情報のみから論物変換テーブルを構築し、メモリ12に格納する。
また、CPU13は、NANDフラッシュメモリ11の拡張領域に、書き込みが完了したことを示すステート情報と拡張領域の管理情報のCRCを書き込むことにより、NANDフラッシュメモリ11への書き込み中または消去中の電源断から正常な状態に復旧する。
【0036】
ここで、NANDフラッシュメモリ11上における物理TUの構成例および拡張領域のデータ構造について説明する。
図5は、本実施形態における、物理TU内の基本的な構成例および拡張領域に格納される管理情報に係るデータ構造を示す図である。
【0037】
物理TUは、図5に示すように、通常のデータが記憶されるデータ領域21、少なくとも物理TUの管理情報22が記憶される拡張領域23により構成される。
管理情報22は、対応する論理TU番号LTUN、およびブロックBLKごとに割り当てられる書き込み順序情報であるシーケンシャル番号SQNを含む。
そして、拡張領域23は、シーケンシャル番号記憶領域231と、論理TU番号記憶領域232とを有している。拡張領域23におけるシーケンシャル番号記憶領域231と論理TU番号記憶領域232を管理領域という場合もある。
拡張領域23には、後で説明するように、管理情報22の他に、書き込み完了データやCRC等の書き込みが完了したTUであるかを判別するための情報が記録される。
また、本実施形態においては、最も新しいシーケンシャル番号が割り当てられているブロックのことを最新ブロックと呼ぶ。
【0038】
次に、メモリ12上のデータ構造について説明する。
図6は、本実施形態におけるメモリ上のデータ構造について説明するための図である。ここでは、ブロック、論理TU、物理TUを管理するためのメモリ上のデータ構造について説明する。
【0039】
メモリ12上には、論物変換テーブルLPTT、物理TU状態マップSTMP、およびシーケンシャル番号テーブルSQNTが形成される。
論物変換テーブルLPTTは、論理TU番号(アドレス)LTUNから対応する物理TU番号(アドレス)BTUNを得るためのテーブルである。
物理TU状態マップSTMPは、各物理TUの状態を管理するためのマップで、状態は、クリーン(CLEAN)、インユース(INUSE)、ダーディ(DIRTY)、およびディフェクト(DEFECT)
の4種類存在する。
クリーン(CLEAN)は、消去操作を行った後の未書き込みの状態である。
インユース(INUSE)は、論物変換テーブルLPTTから参照される有効なデータが格納されている状態である(有効(バリッド)状態ということができる)。
ダーティ(DIRTY)は、論物変換テーブルLPTTから参照されない無効なデータが格納されている状態である(無効(インバリッド)状態ということができる)。
ディフェクト(DEFECT)は、不良ブロックの中の物理TUである状態である。
シーケンシャル番号テーブルSQNTは、各ブロックに割り当てられたシーケンシャル番号SQNを格納するためのテーブルである。論物変換テーブルLPTTの構築の処理の際のみに使用する。
【0040】
以下に、本実施形態の制御部としてのCPU13のより具体的な機能および管理情報や書き込み完了を判別する情報に基づく制御機能について具体的に説明する。
【0041】
本実施形態に係るCPU13の特徴は、上述したように、TU(トランスレーションユニット)単位の論物変換である。
【0042】
図7は、NANDフラッシュメモリの物理的なブロック、ページ、TUの関係を示す図である。
【0043】
TUのサイズは、ブロックサイズの整数分の1かつページサイズの整数倍である。
NANDフラッシュメモリデバイス上の実際のTUを物理TU、本発明の実施形態によってアドレス変換されて利用側に提供されるTUを論理TUと呼ぶ。
これにより、ファイルシステムの読み書きの単位と一致させるなど、柔軟な読み書きのサイズを設定することができる。
CPU13は、TU単位の論物変換を実現するために、論理TU番号(アドレス)から対応する物理TU番号(アドレス)を得るためのテーブルである論物変換テーブルLPTTを利用する。
【0044】
CPU13は、基本的に論理TUの読み込み、論理TUの書き込み、フォールド、論物変換テーブルの構築を行う機能を有する。以下に、これらの機能について説明する。
【0045】
<論理TUの読み込み>
図8は、論理TUの読み込み動作を示す図である。
CPU13は、論理TUを読み込む際には、図8に示すように、論物変換テーブルLPTTから論理TU番号に対応する物理TU番号を求め、その物理TUを読み込む。論物変換テーブルLPTTを介すことにより、不良ブロックを回避することができる。
【0046】
<論理TUの書き込み>
図9は、論理TUの書き込み動作を示す図である。
書き込み前は、論理TU L1には物理TU P1が対応している。
CPU13は、まず、未書き込みの物理TU P2に書き換えを行いたいデータを書き込む(図9のST1)。
次に、CPU13は、論物変換テーブルLPTTの論理TU L1に、書き込みを行った物理TU P2を対応させる(図9のST2)。
ここでは、物理TU P2のように最新のデータが格納されている状態を有効、前の物理TU P1のように消去対象の古いデータが格納されている状態を無効と呼ぶ。
【0047】
<フォールド>
図10は、本実施形態に係るフォールド動作を示す図である。
NANDフラッシュメモリ11はブロックBLK単位でしか消去できないため、図9の物理TU P1のようにブロックBLK内の他に有効な物理TUがあると、無効な物理TUであっても消去することができない。
そのため、書き込みを繰り返すにつれ無効な物理TUが増加する一方で、書き込み可能な未書き込みの物理TUが減少する。
そこで、CPU13は、図10に示すように、無効な物理TUの数を減らし、未書き込みの物理TUを増やすために、有効な物理TUだけを書き込み対象ブロックBLKに移動し(ST11)、移動元のブロックを消去する操作を行う(ST12)。
本実施形態においては、この操作をフォールドと呼ぶ。
【0048】
<論物変換テーブルの構築>
論物変換テーブルLPTTは揮発性のメモリ12上の情報であり、電源が切れると失われる。その場合でも、電源投入後に、NANDフラッシュメモリ11上の情報から論物変換テーブルLPTTの構築ができるように、CPU13は、物理TUへデータの書き込み時に拡張領域に論理TU番号の書き込みを行う。
CPU13は、起動時に、各物理TUの拡張領域の管理情報を走査することにより、論物変換テーブルLPTTをメモリ12上に構築する。
ただし、論理TU の書き込みの際に古くなった物理TU(無効な物理TU)はすぐには消去しないので、たとえば図9における物理TU P1と物理TU P2のように、複数の物理TU が同じ論理TU番号を持つことが起こる。
CPU13は、論物変換テーブルLPTTの構築の際に、論理TU番号に対応する有効な物理TUを知るためには、最後に書き込んだ物理TUを判別する必要がある。
【0049】
そこで、本実施形態においては、CPUI3は、図11に示すように、ブロックBLKの書き込みの順序情報であるシーケンシャル番号SQNをブロックBLKごとに割り当てながら、順序が若いブロックから順に書き込みを行う。
CPU13は、同一ブロックBLK内では、図3のブロック内のページの書き込み順序を満たすように、物理TU番号の若い物理TUから順に書き込みを行う。
CPU13は、物理TUの書き込みの際に、拡張領域に論理TU番号に加えてシーケンシャル番号SQNを記録する。
図11の例においては、ブロックBLKBLKmにはシーケンシャル番号SQNとしてSが付与され、次のブロックBLKBLKm+1にはシーケンシャル番号SQNとしてS+1が付与され、次のブロックBLKBLKm+2にはシーケンシャル番号SQNとしてS+2が付与され、次のブロックBLKBLKm+3にはシーケンシャル番号SQNとしてS+3が付与されている。
CPU13は、論物変換テーブルLPTTの構築の際に、シーケンシャル番号SQNから物理TUの書き込み順序が一意にわかるので、同じ論理TU番号を持つ物理TUのうち、最後に書き込んだ物理TU、つまり有効な物理TUを判別することができる。
【0050】
次に、論物変換テーブル構築の具体例について、図12および図13(A)〜(C)に関連付けて説明する。
図12は、メモリ上の論物変換テーブルとNANDフラッシュメモリの各物理TUの拡張領域に書き込まれている管理情報(論理TU番号LTUNとシーケンシャル番号(SQN))の関係の一例を示す図である。
図13(A)〜(C)は、図12のNANDフラッシュメモリの管理情報を物理TU0から順に走査することにより、論物変換テーブルが構築されていく様子を示す図である。
【0051】
図13(A)〜(C)では、論物変換テーブルLPTTで更新があった項目についてのみ矢印(→)で新たに割り当てられた物理TUを指し示すようになっている。また、図中(*)で示す物理TUがダーティ(DIRTY)と判別された理由について記述している。
【0052】
図13(A)は、ブロックBLK0の走査直後の状態を示している。
この場合、ブロックBLK0において、同じ論理TU番号4を持つ物理TU3の方が新しいため、(*)で示す物理TUがダーティ(DIRTY)と判別されている。
【0053】
図13(B)は、ブロックBLK1の走査直後の状態を示している。
この場合、ブロックBKL0とBLK1において、同じ論理TU番号1を持つ物理TU4の方が新しいため、(*)で示すブロックBLK0のブロック物理TUがダーティ(DIRTY)と判別されている。
【0054】
図13(C)は、ブロックBLK2、BLK3の走査直後の状態を示している。
この場合、ブロックBKL3とBLK0において、同じ論理TU番号5を持つ物理TU0の方が新しいため、(*)で示すブロックBLK3のブロック物理TUがダーティ(DIRTY)と判別されている。
【0055】
次に、上記構成による具体的な各種動作をCPU13の制御を中心に説明する。
まず、論理TUの読み込み動作について説明する。
【0056】
<論理TUの読み込み>
CPU13は、読み込みを行う論理TUの番号を、メモリ12に格納されている論物変換テーブルLPTTを参照することで物理TU番号に変換する。そして、CPU13は、データの読み出しを実施する物理TUを特定し、そのデータ領域を読み込む。
【0057】
次に、論理TUの書き込み動作ついて説明する。
【0058】
<論理TUの書き込み>
図14は、データの書き込みの動作を示すフローチャートである。
図14においては、物理TUをPTUとして表記している。
【0059】
CPU13は、まず、書き込み対象PTUがブロックの最後のTUであるか否かを判別する(ST101)。
ステップST101において、書き込み対象PTUがブロックの最後のTUであると判別すると、未書き込みのブロックを一つ選び、その先頭TUを書き込み対象PTUとする(ST102)。
そして、最新のシーケンシャル番号SQNを1増加する(ST103)。
次に、書き込み対象PTUに、指定されたデータ、論理TU番号(L)、最新のシーケンシャル番号を書き込む(ST104)。
次に、CPU13は、論物変換テーブルLPTT、物理TU状態マップSTMPを更新する(ST105)。
なお、ステップST101において、書き込み対象PTUがブロックの最後のTUではないと判別すると、ステップST102ではなくステップST106に移行し、書き込み対象PTUを次の物理TUに進め、ステップST104の処理に移行する。
【0060】
このように、論理TU番号の書き込みにおいては、最新のシーケンシャル番号SQNを持つブロックBLK内の物理TUで、その最終物理TUから連続する最も番号の若いクリーン(CLEAN)な物理TUに対して書き込みを行う。
もし、最終物理TUがクリーン(CLEAN)でなければ、未書き込みのブロック(すべての物理TUがクリーン(CLEAN)なブロック)をランダムに選択し、シーケンシャル番号SQNを1ステップ進めて、そのブロックに書き込む(この書き込みの対象になっている物理TUのことを書き込み対象PTU、書き込みの対象PTUが含まれるブロックのことを書き込み対象ブロックと呼ぶ)。
【0061】
ステップST105においては、論物変換テーブルLPTT、物理TU状態マップSTMPを次のように更新する。
物理TU状態マップSTMPは、論物変換テーブルLPTTで論理TU Lに前に対応していた物理TUの状態をダーティ(DIRTY)に、書き込み対象PTUの状態をインユース(INUSE)に設定する。
論物変換テーブルLPTTは、論理TU Lに書き込み対象PTUを対応させる。
【0062】
次に、フォールド動作について説明する。
【0063】
<フォールド>
図15は、本実施形態に係るフォールドの動作を示すフローチャートを示す。
図15のフローチャート中においては、フォールド処理中の物理TUをPと表記している。
【0064】
CPU13は、フォールド対象のブロックとして少なくとも一つのダーティ(DIRTY)な物理TUを含むブロックを選択する(ST111)。
フォールド対象のブロック内の全てのインユース(INUSE)のTUに対して、以下の処理行う。
物理TU内のデータおよび管理情報を読み込む(ST112)。
次に、ステップST112で読み込んだデータ、論理TU番号を指定して、読み込んだ内容を書き込む。換言すれば、論理TUの書き込みを行う(ST113)。
フォールド対象のブロック内の全てのインユース(INUSE)をTUに対して、上記の処理行った後、フォールド対象のブロックを消去する。
【0065】
次に、起動時のテーブル構築について説明する。
【0066】
<起動時のテーブル構築>
論物変換テーブルLPTT、物理TU状態マップSTMPはメモリ12上のデータであり、電源断により失われてしまう。
本実施形態においては、その場合でも、NANDフラッシュの拡張領域23に書き込まれた管理情報(論理TU番号LTUNおよびシーケンシャル番号SQN)を走査することにより、論物変換テーブルLPTT、物理TU状態マップSTMPを復元することができる。
【0067】
図16は、ブロックごとの拡張領域の走査と、論物変換テーブルおよび物理TU状態マップの復元の手順について示すフローチャートである。
図16のフローチャート中において、走査中の物理TUをP1と表記している。
【0068】
NANDフラッシュの拡張領域の走査は、走査対象ブロック内の不良ブロック以外のすべてのブロック内に対して以下の処理を行う。
CPU13は、物理TUP1の拡張領域23における管理情報22の記憶領域(ここでは管理領域という)231,232を読み込む(ST121)。
次に、物理TUP1の管理領域が未書き込み(全てが0xFF)であるか否かを判別する(ST122)。
ステップST122において、管理領域が未書き込みであると判別すると、物理TUP1の状態をクリーン(CLEAN)に設定する(ST123)。
ステップST122において、管理領域が未書き込みでないと判別すると、物理TUP1の管理領域の論理TU番号をLとする。管理領域のシーケンシャル番号SQNをシーケンシャル番号テーブルSQNTに保存する(ST124)。
次に、現在までに構築された論物変換テーブルLPTTに論理TU番号Lを指す別の物理TUP2が登録されているか否かを判別する(ST125)。
ステップST125において、別の物理TUP2が登録されていないと判別すると、論物変換テーブルLPTTにおいて、論理TU番号Lには物理TU番号P1を対応させる(ST126)。
そして、物理TUP1の状態をインユース(INUSE)に設定する(ST127)。
ステップST125において、別の物理TUP2が登録されていると判別すると、物理TUP1の方が物理TUP2より新しいか否かを判別する(ST128)。これは、シーケンシャル番号SQNとブロック内の位置から判別する。
ステップST128において、物理TUP1の方が物理TUP2より新しいと判別すると、論物変換テーブルLPTTにおいて、論理TU番号Lには物理TU番号P1を対応させる(ST129)。
そして、物理TUP1の状態をインユース(INUSE)に設定し、物理TUP2の状態をダーティ(DIRTY)に設定する(ST130)。
ステップST128において、物理TUP1の方が物理TUP2より新しくないと判別すると、物理TUP1の状態をダーティ(DIRTY)に設定する(ST131)。
走査対象ブロック内の全ての物理TUに対して、上記の処理を行う。
【0069】
このように起動時のテーブル構築において、同じ論理TU番号を持つ物理TUが複数存在した場合、一番新しく書き込まれた物理TUをインユース(INUSE)と判別し、それ以外をダーティ(DIRTY)と判別する。
書き込み順序はシーケンシャル番号とブロック内の位置から判別できる。
【0070】
図17(A),(B)は、物理TUの新旧の判別処理を説明するための図である。
図17(A)に示すように、物理TUが異なるブロックにある場合には、シーケンシャル番号SQNの大小で判別する。この例では、シーケンシャル番号SQNがS1<S2であることから、物理TUP2が物理TUP1より新しいと判別する。
【0071】
図17(B)に示すように、物理TUが同一ブロック内にある場合、物理TU番号PTUNがP2<P1であることから、物理TUP1が物理TUP2より新しいと判別する。
【0072】
<NANDフラッシュメモリへ書き込み中または消去中の電源断対策>
次に、停電や動作不良等に起因するシステムダウンが生じた後に実施されるシステム復帰処理に伴ってNANDフラッシュメモリ11におけるデータの記憶状態を正常化するための工夫について述べる。
【0073】
NANDフラッシュメモリ11の書き込み中に電源断が発生すると、書き込み中の物理TUのデータや管理情報が中途半端な値になっている可能性がある。また、NANDフラッシュメモリ11の消去中に電源断が発生すると、消去中のブロック中の物理TUのデータや管理情報が完全に消去しきらずに残ってしまう可能性がある。
再起動時に、そのような中途半端な状態の物理TUを有効な物理TUとみなして利用したり、未書き込みとみなして上書きを行ってしまったりしないための仕組みが必要である。
そこで、次のような仕組みを追加する。
【0074】
<書き込み中の電源断対策>
図18は、書き込み中の電源断と修復処理の一例を示す図である。
【0075】
データと管理情報の書き込み直後に図18に示すように、別途書き込みを完了したことを表すステート(書き込み完了ステート)情報24を拡張領域23に書き込む。
再起動時に、最後に書き込みを行ったブロック(最新のシーケンシャル番号を持つブロック)について書き込み完了ステートをチェックすることにより、書き込み中の物理TUを検出する。
たとえば、図18に示すように、再起動時に、物理TUP3について、データや管理情報の書き込みがある一方、書き込み完了ステート情報が未書き込みであることから、CPU13は書き込み中の電源断を検出する。
そして、ブロックBLK1の有効な物理TUの内容のみを未書き込みのブロックBLK2に移動する。
そして、ブロックBLK1を消去する。
すなわち、書き込み中の物理TUを検出したら、図18に示すような修復処理を行って、書き込み中の物理TUを消去する。
【0076】
<消去中の電源断対策>
図19は、消去中の電源断と修復処理の一例を示す図である。
【0077】
図19に示すように、管理情報22に対するCRC25を拡張領域23に追加する。
再起動時に、管理情報のCRCをチェックすることにより管理情報の値が正しいかどうかをチェックする。
図19では、消去中の電源断が発生してデータ領域21や拡張領域23が不正な状態になった場合にも、修復処理によって消去中だったブロックが再度消去されること示している。
たとえば、図19に示すように、論物変換テーブル構築時に、このブロック内の物理TUを、その消去の状態に応じて、次のように、ダーティ(DIRTY)またはクリーン(CLEAN)と判断する。
(a):管理情報、CRCが完全に残っている場合、もともともこの物理TUはダーティ(DIRTY)であり、正しくダーティ(DIRTY)と判断する。
(b):管理情報、CRCの一部が残っている場合、CRCのチェックが正しくないことからダーティ(DIRTY)と判断する。
(c):管理情報、CRCが全て消去されている場合、クリーン(CLEAN)と判断する。
【0078】
そしT、ブロックBLKにはインユース(INUSE)な物理TUがないので消去する。修復処理では、インユース(INUSE)な物理TUを一つも含まないブロックを消去する。
【0079】
次に、デバイス操作中の電源断対策を行う場合について、前節の“動作説明”で述べた動作と異なる点を述べる。以下のように「論理TUの書き込み」および「論物変換テーブルの構築」が異なる。
【0080】
<論理TUの書き込み>
図20は、電源断対策を行う場合の論理TUの書き込みの動作のフローチャートである。
この図20の処理と図14の処理と比較すると、ステップST104Aの処理において、拡張領域に書き込む管理情報にCRCが追加された点、およびステップST105の処理の前に、データと管理情報の書き込み直後に、別途書き込みを完了したことを表すステートを書き込むステップST107が設けられている点が異なる。
【0081】
<論物変換テーブルの構築>
図21は、電源断対策を行う場合の論理TUの書き込みの動作のフローチャートである。
この図21の処理と図16の処理を比較すると、ステップST122において否定的な判別を行った場合に、拡張領域23に書き込み完了ステート情報が正しく書き込まれているか否かを判別するステップST132と、正しく書き込まれていると判別した場合に、拡張領域のCRCが正しいか否かを判別するステップST133が設けられている点が異なる。
【0082】
論物変換テーブル構築後には、さらに修復処理を行う。
図22は、書き込み中または消去中の電源断からの修復処理を示すフローチャートである。
【0083】
たとえば、不良ブロック以外で、インユース(INUSE)な物理TUが一つも含まれないブロックを全て消去する(ST141)。ここでは、消去中の電源断のための修復処理を行う。
次に、最新ブロックをB1、最新ブロックB1の最も物理TU番号の大きいクリーン(CLEAN)でない物理TUをP1とする(ST142)。
物理TUP1はダーティ(DIRTY)であるか否かを判別する(ST143)。
ステップST143において、物理TUP1はダーティ(DIRTY)でないと判別すると、物理TUP1はブロックB1の最終物理TUであるか否かを判別する(ST144)。
ステップST144において、最終物理TUでないと判別すると、物理TUP1より1つ物理TU番号の大きい物理TUをP2とする。そして、物理TUP2のデータ領域21、拡張領域23全体を読み込む(ST145)。
次に、読み込んだデータが全て“FFh”のパターンであるか否かを判別する(ST146)。そして、ステップST146において、全て“FFh”のパターンである判別した場合、ステップST144で最終物理TUであると判別した場合は処理を終了する。
一方、ステップST143において、物理TUP1がダーティ(DIRTY)であると判別した場合、または、ステップST146において、全て“FFh”のパターンでないと判別した場合には、ブロックB1の修復処理(リロケート)を行う(ST147)。
ステップST147においては、書き込み中の電源断のための修復処理(リロケート)を行う。
【0084】
図23は、リロケート処理のフローチャートである。
図23のフローチャ中では、リロケート処理中の物理TUはPと表記している。
【0085】
書き込み対象PTUを書き込み対象ブロックの最終物理TUに設定する(ST1471)。
リロケート対象のブロック内の全てのインユース(INUSE)なTUに対し、以下の処理を行う。
物理TU内のデータ、および管理領域(管理情報が記憶されている記憶領域)を読み込む(ST1472)。
読み込んだ内容を書き込む(ST1473)。
リロケート対象のブロック内の全てのインユース(INUSE)なTUに対し、上記の処理を行う。
そして、リロケート対象のブロックを消去する(ST1474)。
【0086】
なお、ステップST1471において、あらかじめ書き込み対象PTUをブロックの最終物理TUにしているのは、ステップST1473での書き込みの開始の物理TUとして、未書き込みのブロックの先頭の物理TUを設定するためである。
【0087】
以上説明したように、本実施形態によれば、CPU13は、ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット単位(TU単位)で論物変換を行って、NANDフラッシュメモリ11のアクセス管理を行い、ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行う機能と、NANDフラッシュメモリの拡張領域に、対応する論理TU番号、およびブロックの書き込み順序をあらわすシーケンシャル番号を書き込むことにより、再起動時にNANDフラッシュメモリの拡張領域の情報のみから論物変換テーブルを構築し、メモリ12に格納する機能を有することから、以下の効果を得ることができる。
【0088】
論物変換の単位をページサイズ以上ブロックサイズ以下で選択することができ、ファイルシステム等の要求単位に合わせた論物変換を実現できる。
NANDフラッシュの拡張領域に、論物変換テーブル等の管理情報の構築に必要な情報をすべて格納するので、NANDフラッシュの利用率を向上できる(論物変換テーブル等の管理情報の構築に必要な情報を格納するために、NANDフラッシュのデータ領域を利用したり、別途不揮発性メモリを使用したりせずに済む)。
NANDフラッシュにデータを書き込む際に、同時に論物変換テーブル等の管理情報の構築に必要な情報を書き込むので、論物変換に関する管理情報の書き込みを別途行うことが不要で、効率よくデータの書き換えができる。
【0089】
また、CPU13は、NANDフラッシュメモリ11の拡張領域に、書き込みが完了したことを示すステート情報と拡張領域の管理情報のCRCを書き込むことにより、NANDフラッシュメモリ11への書き込み中または消去中の電源断から正常な状態に復旧する機能を有することから、停電等のNANDフラッシュの書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰する仕組みを持たせることもできる。
【0090】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【0091】
【図1】NANDフラッシュメモリのブロックとページとの関係を示す図である。
【図2】一般的なページの構成例を示す図である。
【図3】ブロック内のページの書き込み順序について説明するための図である。
【図4】本発明の実施形態に係るメモリ装置の基本的な構成例を示すブロック図である。
【図5】本実施形態における、物理TU内の基本的な構成例および拡張領域に格納される管理情報に係るデータ構造を示す図である。
【図6】本実施形態におけるメモリ上のデータ構造について説明するための図である。
【図7】NANDフラッシュメモリの物理的なブロック、ページ、TUの関係を示す図である。
【図8】論理TUの読み込み動作を示す図である。
【図9】論理TUの書き込み動作を示す図である。
【図10】本実施形態に係るフォールド動作を示す図である。
【図11】シーケンシャル番号の具体的な付与例を説明するための図である。
【図12】メモリ上の論物変換テーブルとNANDフラッシュメモリの各物理TUの拡張領域に書き込まれている管理情報(論理TU番号LTUNとシーケンシャル番号(SQN))の関係の一例を示す図である。
【図13】図12のNANDフラッシュメモリの管理情報を物理TU0から順に走査することにより、論物変換テーブルが構築されていく様子を示す図である。
【図14】データの書き込みの動作を示すフローチャートである。
【図15】本実施形態に係るフォールドの動作を示すフローチャートを示す。
【図16】ブロックごとの拡張領域の走査と、論物変換テーブルおよび物理TU状態マップの復元の手順について示すフローチャートである。
【図17】物理TUの新旧の判別処理を説明するための図である。
【図18】書き込み中の電源断と修復処理の一例を示す図である。
【図19】消去中の電源断と修復処理の一例を示す図である。
【図20】電源断対策を行う場合の論理TUの書き込みの動作のフローチャートである。
【図21】電源断対策を行う場合のブロックごとの拡張領域の走査と、論物変換テーブルおよび物理TU状態マップの復元の手順について示すフローチャートである。
【図22】書き込み中または消去中の電源断からの修復処理を示すフローチャートである。
【図23】リロケート処理のフローチャートである。
【符号の説明】
【0092】
10・・・メモリ装置、11・・・NANDフラッシュメモリ、12・・・メモリ、13・・・CPU(制御部)、14・・・バス、LPTT・・・論物変換テーブル、21・・・データ領域、22・・・管理情報、23・・・拡張領域、PG・・・ページ、BLK・・・ブロック、TU・・・トランスレーションユニット、SQN・・・シーケンシャル番号。

【特許請求の範囲】
【請求項1】
電気的にデータの書き込み、読み込み、消去が可能で、書き込みおよび読み込みはページ単位で行われ、消去は複数のページを含むブロック単位で行われる不揮発性メモリと、
上記不揮発性メモリへのアクセスを管理する制御部と、を有し、
上記制御部は、
上記ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット(TU)単位で論理アドレス‐物理アドレス変換(論物変換)を行って、上記不揮発性メモリのアクセス管理を行う
メモリ装置。
【請求項2】
上記制御部は、
ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行う
請求項1記載のメモリ装置。
【請求項3】
メモリをさらに有し、
上記不揮発性メモリにおける物理TUは、データ領域と拡張領域を含み、
上記制御部は、
上記不揮発性メモリの拡張領域に、対応する論理TU番号、およびブロックの書き込み順序をあらわすシーケンシャル番号を含む管理情報を書き込み、
起動時に不揮発性メモリの上記拡張領域の上記情報を走査することにより論物変換テーブルを構築し、上記メモリに格納し、
上記メモリ上の上記論物変換テーブルにより論物変換処理を行う
請求項1記載のメモリ装置。
【請求項4】
上記制御部は、
上記起動時に、不揮発性メモリの上記拡張領域の上記管理情報を走査することにより上記論物変換テーブルの構築に並行して、物理TUを管理するための物理TU状態マップを復元し、
上記物理TU状態復元マップは、
上記物理TUが、消去操作を行った後の未書き込みのクリーン(CLEAN)状態、上記論物変換テーブルから参照される有効なデータが格納されているインユース(INUSE)状態、および上記論物変換テーブルから参照されない無効なデータが格納されているインバリッド状態のいずれの状態にあるかを示す
請求項3記載のメモリ装置。
【請求項5】
上記制御部は、
上記拡張領域に論理TU番号の書き込みを行う場合、最新の上記シーケンシャル番号を持つブロック内の物理TUで、その最終物理TUから連続する最も番号の若いクリーン(CLEAN)な状態の物理TUに対して書き込みを行う
請求項4記載のメモリ装置。
【請求項6】
上記制御部は、上記最終物理TUがクリーン(CLEAN)状態でない場合、未書き込みのブロックをランダムに選択し、シーケンシャル番号を1ステップ進めて、当該ブロックに書き込む
請求項5記載のメモリ装置。
【請求項7】
上記制御部は、
上記物理TU状態マップを、上記論物変換テーブルで論理TUに前に対応していた物理TUの状態をインバリッドに、書き込み対象物理TUの状態をインユース(INUSE)に設定して更新し、上記論物変換テーブルは、書き込み対象物理TUに書き換えて更新する
請求項6記載のメモリ装置。
【請求項8】
上記制御部は、
不揮発性メモリの上記拡張領域の上記管理情報を走査して、同じ論理TU番号を持つ物理TUが複数存在した場合、一番新しく書き込まれた物理TUをインユース(INUSE)と判別し、それ以外をインバリッドと判別する
請求項4記載のメモリ装置。
【請求項9】
上記制御部は、
物理TUの新旧の判別処理を、物理TUが異なるブロックにある場合には、シーケンシャル番号の大小で判別し、物理TUが同一ブロック内にある場合、物理TU番号で判別する
請求項8記載のメモリ装置。
【請求項10】
上記制御部は、
ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行うフォールド操作を行う場合、
フォールド対象のブロック内の全てのインユース(INUSE)のTUに対して、物理TU内のデータおよび管理情報を読み込み、読み込んだデータ、論理TU番号を指定して、論理TUの書き込みを行った後、フォールド対象のブロックを消去する
請求項4記載のメモリ装置。
【請求項11】
上記制御部は、
上記拡張領域に上記管理情報の他に書き込みを完了した否かを判別可能なステート情報を書き込み、
起動時に、最後に書き込みを行った最新のシーケンシャル番号を持つブロックについて書き込み完了ステート情報をチェックすることにより、書き込み中の電源断があったか否かを検出する
請求項4記載のメモリ装置。
【請求項12】
上記制御部は、
上記拡張領域に上記管理情報の他に当該管理情報が正しいか否かを示す情報を書き込み、
起動時に、上記管理情報が正しいか否かを示す情報をチェックすることにより管理情報の値が正しいかどうかをチェックする
請求項4記載のメモリ装置。
【請求項13】
電気的にデータの書き込み、読み込み、消去が可能で、書き込みおよび読み込みはページ単位で行われ、消去は複数のページを含むブロック単位で行われる不揮発性メモリを有するメモリ装置の管理方法であって、
上記ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット(TU)単位で論理アドレス‐物理アドレス変換(論物変換)を行い、
変換結果に応じた上記不揮発性メモリのアクセス管理を行う
メモリ管理方法。
【請求項14】
電気的にデータの書き込み、読み込み、消去が可能で、書き込みおよび読み込みはページ単位で行われ、消去は複数のページを含むブロック単位で行われる不揮発性メモリを有するメモリ装置の管理処理であって、
上記ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット(TU)単位で論理アドレス‐物理アドレス変換(論物変換)を行う処理と、
変換結果に応じた上記不揮発性メモリのアクセス管理を行う処理と
をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate