(57)【要約】【課題】不揮発性メモリにおける空き容量の確保の効率化を図る。【解決手段】制御部は、データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う。制御部は、ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、不要論理TU情報に対応する物理TUのデータをフォールド処理におけるコピーの対象外に設定する。本技術は、メモリ管理を行う装置に適用することができる。【選択図】図８
2013250603.tif 000002
【特許請求の範囲】
【請求項１】
データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、
前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部と
を備え、
前記制御部は、ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定する
メモリ管理装置。
【請求項２】
前記不要論理TU情報を保持する保持部をさらに備える
請求項１に記載のメモリ管理装置。
【請求項３】
前記制御部は、電源断前に、前記保持部に保持されている前記不要論理TU情報を、前記ファイルシステム上のデータとして前記不揮発性メモリに保存し、起動時に、前記不揮発性メモリに保存されている前記不要論理TU情報を前記ファイルシステムに通知させる
請求項２に記載のメモリ管理装置。
【請求項４】
前記制御部は、電源断前に、前記保持部に保持されている前記不要論理TU情報を、前記不揮発性メモリの所定の論理TU番号が設定された物理TUに保存し、起動時に、前記所定の論理TU番号が設定された物理TUに保存されている前記不要論理TU情報を前記ファイルシステムに通知させる
請求項２に記載のメモリ管理装置。
【請求項５】
前記制御部は、前記ファイルシステムの管理情報に含まれる未使用領域に関する情報に基づいて、前記不要論理TU情報を前記ファイルシステムに生成させ、通知させる
請求項２に記載のメモリ管理装置。
【請求項６】
前記保持部は、各物理TUの状態を管理するための物理TU状態マップと、前記不要論理TU情報を格納する不要論理TUリストとを保持し、
前記制御部は、前記ファイルシステムにより前記不要論理TU情報が通知されると、前記物理TU状態マップにおいて前記不要論理TU情報に対応する物理TUの状態を書き込み済みの無効な物理TUとするとともに、前記不要論理TUリストに、通知された前記不要論理TU情報を追加する
請求項２に記載のメモリ管理装置。
【請求項７】
前記保持部は、論理TUのアドレスと物理TUのアドレスとを対応付けた論物変換テーブルをさらに保持し、
前記制御部は、前記ファイルシステムにより前記不要論理TU情報が通知されると、前記論物変換テーブルにおいて、前記不要論理TU情報に対応する物理TUのアドレスを未定義に設定する
請求項６に記載のメモリ管理装置。
【請求項８】
前記制御部は、前記物理TU状態マップにおいて、前記ブロックに含まれる全ての物理TUの状態が、書き込み済みの無効な物理TUとなったとき、前記ブロックを消去する
請求項６に記載のメモリ管理装置。
【請求項９】
前記制御部は、データ処理の結果、データのコピー元となる物理TUを含む前記ブロックが消去可能となる場合、前記データ処理において、消去可能となる前記ブロックを表すブロック番号を、前記データがコピーされる前記未書き込みの物理TUに書き込んで、前記ブロックを消去する
請求項８に記載のメモリ管理装置。
【請求項１０】
前記データ処理は、前記ファイルシステムからの要求に応じた論理TUのデータの書き換えである
請求項９に記載のメモリ管理装置。
【請求項１１】
前記データ処理は、前記フォールド処理である
請求項９に記載のメモリ管理装置。
【請求項１２】
前記制御部は、前記データ処理の結果、データのコピー元となる物理TUを含む前記ブロックが消去可能とならず、かつ、他のブロックが消去可能である場合、前記データ処理において、消去可能となる前記他のブロックを表すブロック番号を、前記データがコピーされる前記未書き込みの物理TUに書き込んで、前記他のブロックを消去する
請求項９に記載のメモリ管理装置。
【請求項１３】
データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、
前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部とを備えるメモリ管理装置のメモリ管理方法であって、
前記メモリ管理装置が、
ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定する
ステップを含むメモリ管理方法。
【請求項１４】
データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、
前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部と
を備えるコンピュータに、
ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定する
ステップを含む処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリ管理装置および方法、並びにプログラムに関し、特に、不揮発性メモリにおける空き容量の確保の効率化を図ることができるようにするメモリ管理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
NANDフラッシュメモリでは、“書き込み”、“読み出し”、“消去”により電気的にデータが操作される。例えば、“書き込み”による各ビットの書き換えは「１」から「０」への一方向だけであることから、新たにデータを書き込む際には、一旦“消去”により全てのビットを「１」にしてから書き込みを行う必要がある。
【０００３】
NANDフラッシュメモリにおいては、図１に示されるように、“書き込み”／“読み出し”の最小単位はページとされ、“消去”の最小単位は、ページが複数集まったブロックとされる。例えば、ページは、512バイトに予備の16バイトを加えた528バイトで構成され、ブロックは、32個のページを含むように構成される。
【０００４】
このように、NANDフラッシュメモリにおいては、“書き込み”の最小単位に比べて、“消去”の最小単位が数十倍大きいので、書き換えを効率良く行うには何らかの対策が必要であった。
【０００５】
また、NANDフラッシュメモリには、出荷時に不良ブロックと呼ばれる使用できないブロックが存在し、不良ブロックを避けてNANDフラッシュメモリへの読み書きを行う必要があった。
【０００６】
さらに、一般的に、NANDフラッシュメモリにおいて、ブロック内のページの書き込みは、図２のＡに示されるように、若い番号のページから順番に行われなければならない。すなわち、NANDフラッシュメモリにおいて、図２のＢに示されるような、ブロック内でのランダムな書き込みは禁止されている。
【０００７】
また、NANDフラッシュメモリの各ブロックには、書き換え回数の上限があるため、ブロックに対する書き換えが特定のブロックに偏らないようにする必要があった。
【０００８】
以上のような特徴を有するNANDフラッシュメモリを利用する際には、既存のファイルシステムやツールを、そのままで使えたり、若干の変更を加えるだけで使えることが望ましい。そのためには、“消去”の操作や不良ブロックを意識せずにNANDフラッシュメモリを利用できるようにしなければならなかった。そのため、NANDフラッシュメモリの利用側（例えば、ファイルシステム）からの要求を解釈してNANDフラッシュメモリを操作する命令に変換するレイヤ（論理−物理変換層（以下、論物変換層という））を実装する必要があった。
【０００９】
このような中、図３に示されるような、ブロックのサイズの整数分の１、かつページのサイズの整数倍となるTU（Translation Unit）単位で論理アドレス−物理アドレス変換を行うことで、不揮発性メモリのアクセス管理を行い、ブロックの内容のうち、使用中の物理TUを、別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効な物理TUの数だけ、新たに未使用の物理TUを増やすようにした技術が提案されている（特許文献１参照）。
【００１０】
特許文献１の技術によれば、ブロック内に書き込み済みの無効な物理TU（無効なデータが記録されている物理TU）が多ければ多いほど、未使用の物理TUを多く確保することができ、空き容量の確保の効率を向上させることができる。空き容量の確保の効率化は、不揮発性メモリの利用側からみた、不揮発性メモリにおけるデータの書き換えのパフォーマンス向上や、NANDフラッシュメモリのような不揮発性メモリの長寿命化に寄与する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００９−１１６６０１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ところで、近年、NANDフラッシュメモリにおける空き容量の確保の効率化、ひいてはNANDフラッシュメモリの長寿命化のために、物理的に不要なデータが書き込まれている領域に関する情報（以下、不要領域情報という）を、ファイルシステム等から論物変換層に通知する機能を実現するために発行されるTrimコマンドが知られている。
【００１３】
この不要なデータが書き込まれている領域は、新たに上書きされない限り、ファイルシステムからは参照されないので、論物変換層では、この領域のデータを削除してもよいし、そのまま保持し続けても問題はない。
【００１４】
しかしながら、本来であれば、論物変換層で不要なデータが削除されることで、空き容量の確保の効率化が実現されるはずが、従来、ファイルシステムから通知される不要領域情報を活用する構成がなかったため、不要なデータは保持されたままとなり、空き容量の確保の観点から無駄があった。
【００１５】
本技術は、このような状況に鑑みてなされたものであり、不揮発性メモリにおける空き容量の確保の効率化を図ることができるようにするものである。
【課題を解決するための手段】
【００１６】
本技術の一側面のメモリ管理装置は、データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部とを備え、前記制御部は、ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定する。
【００１７】
前記メモリ管理装置には、前記不要論理TU情報を保持する保持部をさらに設けることができる。
【００１８】
前記制御部には、電源断前に、前記保持部に保持されている前記不要論理TU情報を、前記ファイルシステム上のデータとして前記不揮発性メモリに保存し、起動時に、前記不揮発性メモリに保存されている前記不要論理TU情報を前記ファイルシステムに通知させることができる。
【００１９】
前記制御部には、電源断前に、前記保持部に保持されている前記不要論理TU情報を、前記不揮発性メモリの所定の論理TU番号が設定された物理TUに保存し、起動時に、前記所定の論理TU番号が設定された物理TUに保存されている前記不要論理TU情報を前記ファイルシステムに通知させることができる。
【００２０】
前記制御部には、前記ファイルシステムの管理情報に含まれる未使用領域に関する情報に基づいて、前記不要論理TU情報を前記ファイルシステムに生成させ、通知させることができる。
【００２１】
前記保持部には、各物理TUの状態を管理するための物理TU状態マップと、前記不要論理TU情報を格納する不要論理TUリストとを保持させ、前記制御部には、前記ファイルシステムにより前記不要論理TU情報が通知されると、前記物理TU状態マップにおいて前記不要論理TU情報に対応する物理TUの状態を書き込み済みの無効な物理TUとさせるとともに、前記不要論理TUリストに、通知された前記不要論理TU情報を追加させる。
【００２２】
前記保持部には、論理TUのアドレスと物理TUのアドレスとを対応付けた論物変換テーブルをさらに保持させ、前記制御部には、前記ファイルシステムにより前記不要論理TU情報が通知されると、前記論物変換テーブルにおいて、前記不要論理TU情報に対応する物理TUのアドレスを未定義に設定させることができる。
【００２３】
前記制御部は、前記物理TU状態マップにおいて、前記ブロックに含まれる全ての物理TUの状態が、書き込み済みの無効な物理TUとなったとき、前記ブロックを消去させることができる。
【００２４】
前記制御部には、データ処理の結果、データのコピー元となる物理TUを含む前記ブロックが消去可能となる場合、前記データ処理において、消去可能となる前記ブロックを表すブロック番号を、前記データがコピーされる前記未書き込みの物理TUに書き込んで、前記ブロックを消去させることができる。
【００２５】
前記データ処理は、前記ファイルシステムからの要求に応じた論理TUのデータの書き換えとすることができる。
【００２６】
前記データ処理は、前記フォールド処理とすることができる。
【００２７】
前記制御部には、前記データ処理の結果、データのコピー元となる物理TUを含む前記ブロックが消去可能とならず、かつ、他のブロックが消去可能である場合、前記データ処理において、消去可能となる前記他のブロックを表すブロック番号を、前記データがコピーされる前記未書き込みの物理TUに書き込んで、前記他のブロックを消去させることができる。
【００２８】
本技術の一側面のメモリ管理方法は、データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部とを備えるメモリ管理装置のメモリ管理方法であって、前記メモリ管理装置が、ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定するステップを含む。
【００２９】
本技術の一側面のプログラムは、データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部とを備えるコンピュータに、ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定するステップを含む処理を実行させる。
【００３０】
本技術の一側面においては、ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、不要論理TU情報に対応する物理TUのデータがフォールド処理におけるコピーの対象外に設定される。
【発明の効果】
【００３１】
本技術の一側面によれば、不揮発性メモリにおける空き容量の確保の効率化を図ることが可能となる。
【図面の簡単な説明】
【００３２】
【図１】NANDフラッシュメモリのブロックおよびページについて説明する図である。
【図２】ブロック内のページの書き込み順序について説明する図である。
【図３】NANDフラッシュメモリのブロック、ページ、およびTUの関係を示す図である。
【図４】データの書き換えについて説明する図である。
【図５】フォールド処理の概要について説明する図である。
【図６】従来のフォールド処理の例について説明する図である。
【図７】本技術のフォールド処理の例について説明する図である。
【図８】本技術を適用したメモリ管理装置の構成例を示すブロック図である。
【図９】不要論理TU番号取得処理について説明するフローチャートである。
【図１０】データ書き込み処理について説明するフローチャートである。
【図１１】フォールド処理について説明するフローチャートである。
【図１２】不要論理TUリスト保存処理について説明するフローチャートである。
【図１３】不要論理TU番号通知処理について説明するフローチャートである。
【図１４】不要論理TUリスト保存処理について説明するフローチャートである。
【図１５】不要論理TU番号通知処理について説明するフローチャートである。
【図１６】電源断対策を施したブロック消去処理の例について説明する図である。
【図１７】ブロック番号書き込み処理について説明するフローチャートである。
【図１８】電源断対策を施したブロック消去処理の他の例について説明する図である。
【図１９】ブロック番号書き込み処理について説明するフローチャートである。
【図２０】コンピュータのハードウェアの構成例を示すブロック図である。
【発明を実施するための形態】
【００３３】
まず、本技術の実施の形態について説明する前に、従来の技術について、より詳細に説明する。
【００３４】
［従来の技術について］
特許文献１においては、不揮発性メモリ上の実際のTU（Translation Unit）は物理TUと呼ばれ、アドレス変換されて不揮発性メモリの利用側に提供されるTUは論理TUと呼ばれている。これにより、特許文献１の技術では、ファイルシステムにおける読み書きの単位とTUとを一致させる等、データの読み書きのサイズを柔軟に設定することが可能となる。
【００３５】
また、特許文献１におけるデータの書き換えは、図４に示されるように、データが記録されていない空きの物理TUにデータを追記することで行われる。具体的には、書き換え前のデータが記録されていた物理TU P1を無効な状態へと更新し（図４のＣ）、書き換えを行う新たなデータを、データが記録されていない物理TU P2に書き込むことによって（図４のＤ）、データの書き換えが行われる。これにより、最新のデータが記録されている状態の物理TU（書き込み済みの有効な物理TU）と、消去対象の古いデータが記録されている状態の物理TU（書き込み済みの無効な物理TU）とが生じる。
【００３６】
なお、以降においては、適宜、物理TUにおいて、最新のデータが記録されている状態を「INUSE」といい、消去対象の古いデータが記録されている状態を「DIRTY」という。また、物理TUにおいて、消去後または初期化後でデータが記録されていない状態を「CLEAN」という。
【００３７】
上述したように、NANDフラッシュメモリのような不揮発性メモリは、ブロック単位でしかデータの消去を行うことができない。そのため、ブロックを構成する一部の物理TUに、例えば図４の物理TU P1のような“書き込み済みの無効な物理TU”があったとしても、“書き込み済みの有効な物理TU”が存在する場合には、消去を行うことができない。
【００３８】
したがって、データの書き換えが繰り返されるにつれて、不揮発性メモリにおける“書き込み済みの無効な物理TU”が増え、また、データの書き込みが可能な物理TU（例えば、CLEANな物理TU）の数が減ってしまう。すなわち、データの書き換えが繰り返されるにつれて、不揮発性メモリにおける空き容量が減ることになる。
【００３９】
そこで、特許文献１では、データの書き込みが可能な物理TUの数を増やして、不揮発性メモリにおける空き容量を確保するためのフォールド処理が提案されている。
【００４０】
フォールド処理とは、ブロックの内容のうち、書き込み済みの有効な物理TUのデータを、（データが記録されていない）未書き込みの物理TUがあるブロックへコピーし、コピー元のブロックを消去することによって、コピー元のブロックに含まれていた書き込み済みの無効な物理TUの数だけ、未書き込みの物理TUを増やす処理である。
【００４１】
図５は、フォールド処理の概要を示している。
【００４２】
図５の状態Ａ，Ｂ，Ｃは、それぞれ、フォールド処理前のブロックB1，B2の状態、フォールド処理中のブロックB1，B2の状態、フォールド処理後のブロックB1，B2の状態を示している。
【００４３】
フォールド処理によれば、図５の状態Ａに示されるように、コピー元のブロックB1の書き込み済みの有効な物理TUがコピー先のブロックB2にコピーされ、図５の状態Ｂに示されるように、コピー元のブロックB1においてコピーされた物理TUが、書き込み済みの無効な物理TUに更新される。そして、図５の状態Ｃに示されるように、コピー元のブロックB1が消去される。
【００４４】
このように、フォールド処理が行われることによって、“未書き込みの物理TU”が増え、ひいては、不揮発性メモリにおける空き容量が増えるようになる。
【００４５】
しかしながら、上述したように、従来の技術では、ファイルシステムにより通知される、NANDフラッシュメモリにおける空き容量の確保の効率化のための不要領域情報を活用する構成がなかったため、不要なデータは保持されたままとなり、空き容量の確保の観点から無駄があった。
【００４６】
［従来のフォールド処理の例］
ここで、図６を参照して、不要領域情報が考慮されずに実行される、従来のフォールド処理の例について説明する。
【００４７】
図６においては、不揮発性メモリの８個のブロックそれぞれの状態Ａ乃至状態Ｈが時系列で示されている。なお、図６において、各ブロックを構成する物理TUには、対応する論理TU（LTU）の番号と、物理TUの状態とが示されている。
【００４８】
また、ここでは、論物変換はTU単位で行われるので、以下においては、不要領域情報として、物理的に不要なデータが書き込まれている物理TUに対応する論理TU（不要論理TU）の番号を表す不要論理TU情報（以下、不要論理TU番号ともいう）が、ファイルシステムにより通知されるものとする。
【００４９】
まず、図６の状態Ａは、左から６番目のブロックに、論理TU 13（以下、LTU13等と記す）、LTU14、LTU17のデータが書き換えられ、さらにLTU17のデータがそのブロック内で書き換えられて、空き容量が少なくなってきた状態である。
【００５０】
次いで、図６の状態Ｂは、不要論理TU番号としてLTU10およびLTU11が通知された状態である。すなわち、LTU10およびLTU11のデータは、ファイルシステム側からみて不要なデータとなる。しかしながら、従来の技術では、不要論理TU番号は無視され、論物変換層で不要なデータが削除されることはない。
【００５１】
図６の状態Ｃは、LTU3の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU3のデータが書き込まれ、LTU3のデータが書き込まれていた物理TUの状態はDIRTYになる。
【００５２】
図６の状態Ｄは、LTU4の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU4のデータが書き込まれ、LTU4のデータが書き込まれていた物理TUの状態はDIRTYになる。
【００５３】
図６の状態Ｅは、LTU8の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU8のデータが書き込まれ、LTU8のデータが書き込まれていた物理TUの状態はDIRTYになる。
【００５４】
図６の状態Ｆは、LTU9の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU9のデータが書き込まれ、LTU9のデータが書き込まれていた物理TUの状態はDIRTYになる。
【００５５】
ここで、直近にデータを書き込んだ書き込み先がブロックにおける最終の物理TUであることを条件にフォールド処理が開始されるものとすると、図６の状態Ｆでフォールド処理が開始される。すなわち、図６の状態Ｇに示されるように、左から３番目のブロックにおけるLTU10およびLTU11のデータが、左から８番目のブロックにコピーされ、コピー元の左から３番目のブロックは全てDIRTYな物理TUとなり、消去される。
【００５６】
さらに、フォールド処理が行われると、図６の状態Ｈに示されるように、左から４番目のブロックにおけるLTU12およびLTU15のデータが、左から８番目のブロックにコピーされ、コピー元の左から４番目のブロックは全てDIRTYな物理TUとなり、消去される。
【００５７】
ここで、フォールド処理により、１ブロックのサイズの該当するサイズ分、未書き込みの物理TU（CLEANな物理TU）が増えることを条件にフォールド処理が停止されるものとすると、図６の状態Ｈで、フォールド処理は停止される。
【００５８】
このようにして、従来の技術におけるフォールド処理が実行されるが、図６の状態Ｂでは、不要論理TU番号は無視され、LTU10およびLTU11に対応する物理TUの状態はINUSEのままとなる。結果として、図６の状態Ｇで、本来不要なデータであるLTU10およびLTU11のデータのコピーが行われてしまう。
【００５９】
そこで、本技術においては、図６の状態Ｇで示されたような無駄なコピーが行われないように、通知される不要論理TU番号に対応する物理TUのデータを、フォールド処理におけるコピーの対象外とする。
【００６０】
［本技術のフォールド処理の例］
図７は、不要領域情報が考慮されて実行される、本技術のフォールド処理の例を示している。
【００６１】
図７においても、図６と同様、不揮発性メモリの８個のブロックそれぞれの状態Ａ乃至状態Ｇが時系列で示されている。
【００６２】
まず、図７の状態Ａは、左から６番目のブロックに、LTU13、LTU14、LTU17のデータが書き換えられ、さらにLTU17のデータがブロック内で書き換えられて、空き容量が少なくなってきた状態である。
【００６３】
次いで、図７の状態Ｂは、不要論理TU番号としてLTU10およびLTU11が通知された状態である。このとき、論物変換層側では、不要論理TU番号に対応する物理TUの状態がDIRTYとされる。
【００６４】
図７の状態Ｃは、LTU3の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU3のデータが書き込まれ、LTU3のデータが書き込まれていた物理TUの状態はDIRTYになる。
【００６５】
図７の状態Ｄは、LTU4の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU4のデータが書き込まれ、LTU4のデータが書き込まれていた物理TUの状態はDIRTYになる。
【００６６】
図７の状態Ｅは、LTU8の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU8のデータが書き込まれ、LTU8のデータが書き込まれていた物理TUの状態はDIRTYになる。
【００６７】
図７の状態Ｆは、LTU9の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU9のデータが書き込まれ、LTU9のデータが書き込まれていた物理TUの状態はDIRTYになる。
【００６８】
ここで、図６の場合と同様に、直近にデータを書き込んだ書き込み先がブロックにおける最終の物理TUであることを条件にフォールド処理が開始されるものとすると、図７の状態Ｆでフォールド処理が開始されるが、図７の状態Ｇに示されるように、左から３番目のブロックにおけるLTU10およびLTU11に対応する物理TUは、図７の状態Ｂで既にDIRTYに設定されているので、LTU10およびLTU11のデータはコピーされることなく、左から３番目のブロックは消去される。
【００６９】
なお、図６の場合と同様に、フォールド処理により、１ブロックのサイズの該当するサイズ分、未書き込みの物理TU（CLEANな物理TU）が増えることを条件にフォールド処理が停止されるものとすると、図７の状態Ｇで、フォールド処理は停止される。
【００７０】
なお、フォールド処理の開始条件や停止条件は、上述したものに限られない。
【００７１】
このように、本技術におけるフォールド処理においては、図７の状態Ｂで、不要論理TU番号として通知されたLTU10およびLTU11に対応する物理TUの状態がDIRTYとされ、LTU10およびLTU11のデータは、フォールド処理におけるコピーの対象外に設定される。
【００７２】
結果として、ファイルシステムからの同一の処理要求に対して、図６の例では、２回のブロック消去と１ブロック分のコピーとが行われるのに対し、図７の例では、１回のブロック消去のみが行われるようになる。したがって、本技術によれば、不揮発性メモリにおける空き容量の確保の効率化を図ることができ、ひいては、不揮発性メモリにおけるデータの書き換えのパフォーマンス向上や、NANDフラッシュメモリのような不揮発性メモリの長寿命化を図ることが可能となる。
【００７３】
［メモリ管理装置の構成例］
図８は、本技術を適用したメモリ管理装置の構成例を示している。
【００７４】
メモリ管理装置１０は、不揮発性メモリであるNANDフラッシュメモリ１１、例えばDRAM（Dynamic Random Access Memory）やSRAM（Static Random Access Memory）等の揮発性メモリにより構成されるメモリ１２、および制御部としてのCPU（Central Processing Unit）１３を備えている。NANDフラッシュメモリ１１、メモリ１２、およびCPU１３は、バス１４を介して相互に接続されている。
【００７５】
NANDフラッシュメモリ１１は、複数のメモリセルが直列に接続されたNANDストリングがアレイ状に配列されたメモリセルアレイを有し、電気的に書き込み、読み出し、および消去が可能である。
【００７６】
NANDフラッシュメモリ１１の書き込み／読み出しの最小単位はページであり、消去の最小単位はページが複数集まったブロックである。例えば、ページは512バイトのデータ領域に拡張領域の16バイトを加えた528バイト、つまり4224ビットにより形成され、ブロックは３２個のページを含む。
【００７７】
NANDフラッシュメモリ１１へのアクセス管理は、拡張領域に書き込まれる管理情報や、メモリ１２に構築される論理−物理変換テーブル（論物変換テーブル）、物理TU状態マップ、および不要論理TUリストの情報に基づいて、CPU１３の制御によって行われる。なお、NANDフラッシュメモリ１１へのアクセスには、書き込み、読み出し、および消去の各操作に関するメモリアクセスが含まれる。
【００７８】
メモリ１２は、プログラム格納用のROM（Read Only Memory）、作業用メモリであるRAM等を含む。メモリ１２には、CPU１３の制御の下、論物変換テーブル、および物理TU状態マップ、および不要論理TUリストが構築され、保持される。
【００７９】
CPU１３は、NANDフラッシュメモリ１１の拡張領域に書き込まれる管理情報や、メモリ１２に構築される論物変換テーブル、物理TU状態マップ、および不要論理TUリストの情報に基づいて、NANDフラッシュメモリ１１へのアクセスを管理する制御部として機能する。
【００８０】
CPU１３は、ブロックのサイズの整数分の１、かつページのサイズの整数倍のTU単位で論物変換を行い、NANDフラッシュメモリ１１のアクセス管理を行う。
【００８１】
また、CPU１３は、ブロックの内容のうち、書き込み済みの有効な物理TUのデータを、（データが記録されていない）未書き込みの物理TUがあるブロックへコピーし、コピー元のブロックを消去することによって、コピー元のブロックに含まれていた書き込み済みの無効な物理TUの数だけ、未書き込みの物理TUを増やすフォールド処理を行う機能を有する。
【００８２】
［メモリ上のデータ構造］
ここで、メモリ１２上のデータ構造について説明する。
【００８３】
メモリ１２上には、論物変換テーブル、物理TU状態マップ、および不要論理TUリストが形成される。
【００８４】
論物変換テーブルは、論理TU番号（アドレス）から対応する物理TU番号（アドレス）を得るためのテーブルである。論理TU番号に対応する物理TUが存在しない場合、その物理TU番号はUNDEF（未定義）とされる。
【００８５】
物理TU状態マップは、各物理TUの状態を管理するためのマップで、状態としては、以下の４種類が存在する。
CLEAN：消去操作を行った後の未書き込みの状態。
INUSE：論物変換テーブルで参照される有効なデータが格納されている状態。
DIRTY：論物変換テーブルで参照されない無効なデータが格納されている状態。
DEFECT：不良ブロックの中の物理TUである状態。
【００８６】
不要論理TUリストは、通知された不要論理TU情報（不要論理TU番号）を格納するためのリストである。新たに書き込みされるデータの論理TU番号が不要論理TUリストに格納されている場合、不要論理TUリストからは、その論理TU番号は削除される。
【００８７】
以下においては、CPU１３の制御によって行われる各種動作について説明する。
【００８８】
まず、図９を参照して、ファイルシステム等のNANDフラッシュメモリ１１の利用側から通知される不要論理TU番号の取得処理について説明する。
【００８９】
［不要論理TU番号取得処理］
まず、ステップＳ１１において、CPU１３は、NANDフラッシュメモリ１１の利用側から通知される不要論理TU番号Ｌを取得する。
【００９０】
ステップＳ１２において、CPU１３は、メモリ１２上の論物変換テーブルを参照することで、論物変換テーブルにおいて、取得した不要論理TU番号Ｌに対応する物理TU番号がUNDEF（未定義）であるか否かを判定する。
【００９１】
ステップＳ１２において、取得した不要論理TU番号Ｌに対応する物理TU番号がUNDEFでないと判定された場合、処理はステップＳ１３に進む。
【００９２】
ステップＳ１３において、CPU１３は、メモリ１２上の物理TU状態マップを参照することで、物理TU状態マップにおいて、取得した不要論理TU番号Ｌに対応する物理TUの状態をDIRTYに設定する。
【００９３】
ステップＳ１４において、CPU１３は、メモリ１２上の論物変換テーブルを参照することで、論物変換テーブルにおいて、取得した不要論理TU番号Ｌに対応する物理TU番号をUNDEFに設定する。
【００９４】
ステップＳ１５において、CPU１３は、メモリ１２上の不要論理TUリストに、取得した不要論理TU番号Ｌを追加し、処理は終了する。
【００９５】
一方、ステップＳ１２において、取得した不要論理TU番号Ｌに対応する物理TU番号がUNDEFであると判定された場合、ステップＳ１３乃至Ｓ１５はスキップされ、処理は終了する。
【００９６】
以上の処理によれば、物理TU状態マップにおいて、NANDフラッシュメモリ１１の利用側から通知された不要論理TU番号に対応する物理TUの状態がDIRTYに設定される。これにより、不要論理TU番号に対応する物理TUが、フォールド処理におけるコピーの対象外に設定されるようになるので、図７を参照して説明したように、不揮発性メモリにおける空き容量の確保の効率化を図ることができ、ひいては、不揮発性メモリにおけるデータの書き換えのパフォーマンス向上や、NANDフラッシュメモリのような不揮発性メモリの長寿命化を図ることが可能となる。
【００９７】
次に、データの読み出し動作について説明する。
【００９８】
［データの読み出し］
CPU１３は、読み出しを行う論理TU番号を、メモリ１２上の論物変換テーブルを参照することで、物理TU番号に変換する。そして、CPU１３は、変換された物理TU番号から、データの読み出しを実施する物理TUを特定し、そのデータ領域を読み込む。
【００９９】
ただし、読み出しを行う論理TU番号に対応する物理TUが存在しない場合（UNDEFの場合）、データ領域の読み込みは行われず、0xffのフィルまたは0x00のフィルによりデータが返される。
【０１００】
次に、図１０のフローチャートを参照して、データの書き込み動作について説明する。
【０１０１】
［データの書き込み］
まず、ステップＳ３１において、CPU１３は、直前に書き込まれた物理TUが、ブロックの最後の物理TUであるか否かを判定する。
【０１０２】
ステップＳ３１において、直前に書き込まれた物理TUが、ブロックの最後の物理TUでないと判定された場合、処理はステップＳ３２に進む。
【０１０３】
ステップＳ３２において、CPU１３は、書き込み対象となる物理TU（以下、書き込み対象PTUという）を、ブロックの次のPTU（物理TU）に設定する。
【０１０４】
一方、ステップＳ３１において、直前に書き込まれた物理TUが、ブロックの最後の物理TUであると判定された場合、処理はステップＳ３３に進む。
【０１０５】
ステップＳ３３において、CPU１３は、ブロックにおける先頭の物理TUが“未書き込みの物理TU”であるブロックを１つ選択し、そのブロックにおける先頭の物理TUを、書き込み対象PTUに設定する。
【０１０６】
ステップＳ３２またはステップＳ３３の後、ステップＳ３４において、CPU１３は、設定された書き込み対象PTUに、指定されたデータを書き込む。
【０１０７】
ステップＳ３５において、CPU１３は、メモリ１２上の論物変換テーブル、物理TU状態マップ、および不要論理TUリストを更新する。
【０１０８】
具体的には、書き込みが要求された論理TUの番号をL'とすると、CPU１３は、物理TU状態マップにおいて、論物変換テーブルで前に論理TU番号L'に対応していた物理TU番号がUNDEFでない場合には、その物理TUの状態をDIRTYとし、書き込み対象PTUの状態をINUSEとする。
【０１０９】
また、CPU１３は、論物変換テーブルにおいて、論理TU番号L'と書き込み対象PTUの番号とを対応させる。
【０１１０】
さらに、CPU１３は、不要論理リストにおいて、論理TU番号L'が含まれる場合には、不要論理リストから論理TU番号L'を削除する。
【０１１１】
次に、図１１のフローチャートを参照して、フォールド処理における動作について説明する。なお、図１１で示されるフォールド処理は、所定の開始条件が満たされたときに開始され、所定の終了条件が満たされるまで繰り返されるものとする。
【０１１２】
［フォールド処理］
まず、ステップＳ５１において、CPU１３は、フォールド処理の対象となるブロック（以下、フォールド対象ブロックという）を選択する。ここでは、例えば、NANDフラッシュメモリ１１におけるブロックの中から、“書き込み済みの無効な物理TU”（DIRTYな物理TU）の数がより多いブロックが選択される。
【０１１３】
ステップＳ５２において、CPU１３は、選択したフィールド対象ブロックから未コピーの“書き込み済みの有効な物理TU”（INUSEな物理TU）を選択する。
【０１１４】
ステップＳ５３において、CPU１３は、選択した物理TU内のデータを読み込む。
【０１１５】
ステップＳ５４において、CPU１３は、読み込んだデータの内容を、コピー先のブロックにおける未書き込みの物理TUにコピーする。
【０１１６】
ステップＳ５５において、CPU１３は、フォールド対象ブロックの全ての“書き込み済みの有効な物理TU”のコピーが完了したか否かを判定する。
【０１１７】
ステップＳ５５において、フォールド対象ブロックの全ての“書き込み済みの有効な物理TU”のコピーが完了していないと判定された場合、処理はステップＳ５２に戻り、これ以降の処理が繰り返される。
【０１１８】
一方、ステップＳ５５において、フォールド対象ブロックの全ての“書き込み済みの有効な物理TU”のコピーが完了したと判定された場合、処理はステップＳ５６に進み、CPU１３は、フォールド対象ブロックを消去し、処理は終了する。
【０１１９】
以上の処理によれば、“未書き込みの物理TU”（CLEANな物理TU）が増え、ひいては、不揮発性メモリにおける空き容量が増えるようになる。なお、フォールド対象ブロックにおいて、不要論理TU番号に対応する物理TUが存在する場合、その物理TUは、“書き込み済みの無効な物理TU”（DIRTYな物理TU）であるので、コピーの対象とならない。すなわち、図７を参照して説明したように、不揮発性メモリにおける空き容量の確保の効率化を図ることができ、ひいては、不揮発性メモリにおけるデータの書き換えのパフォーマンス向上や、NANDフラッシュメモリのような不揮発性メモリの長寿命化を図ることが可能となる。
【０１２０】
次に、起動時のテーブル構築について説明する。
【０１２１】
［起動時のテーブル構築］
上述したように、論物変換テーブル、物理TU状態マップ、および不要論理TUリストは、メモリ１２上のデータであるので、電源断により失われてしまう。これに対して、特許文献１では、電源断後の再起動時に、物理TUの拡張領域に書き込まれている管理情報をブロック毎に走査することで、論物変換テーブルと物理TU状態マップとを復元する手法が開示されている。なお、物理TUの拡張領域に書き込まれている管理情報には、その物理TUに対応する論理TU番号や、ブロック毎に割り当てられている書き込み順序を表す番号が含まれている。
【０１２２】
しかしながら、特許文献１の手法では、電源断時に、不要論理TUリストに格納されている不要論理TU番号に対応する物理TUが消去されずにNANDフラッシュメモリ１１上に存在していた場合、再起動時のテーブル構築の際、物理TU状態マップにおいて、不要論理TU番号に対応する物理TUの状態がINUSEとなって復元されてしまう。
【０１２３】
この場合、不要論理TU番号に対応する物理TUは、ファイルシステム側からはもともと参照されることはないものの、不要論理TUリストが失われているため、論物変換層側から見ればINUSEな状態と判断されてしまう。したがって、不要なデータが保持されたままとなり、空き容量の確保の効率化を妨げる恐れがある。
【０１２４】
そこで、以下においては、電源断後の再起動時に不要論理TUリストを復元させる手法について説明する。
【０１２５】
まず、電源断後の再起動時に不要論理TUリストを復元させる第１の手法について説明する。
【０１２６】
［不要論理TUリストをファイルシステム上のデータとして保存し、不要論理TU番号を通知させる手法］
図１２は、不要論理TUリストを保存する処理について説明するフローチャートである。
【０１２７】
ステップＳ７１において、CPU１３は、電源断を検知したか否かを判定する。ステップＳ７１においては、電源断が検知されるまで処理は進まない。
【０１２８】
ステップＳ７１において、電源断を検知したと判定されると、電源断の直前に、処理はステップＳ７２に進み、CPU１３は、メモリ１２上の不要論理TUリストを、ファイルシステム上のデータとして、NANDフラッシュメモリ１１のデータ領域に保存する。
【０１２９】
このようにして、電源断前に、不要論理TUリストが保存される。
【０１３０】
図１３は、不要論理TU番号を通知する処理について説明するフローチャートである。なお、図１３の不要論理TU番号通知処理は、電源断後の再起動時に実行される。
【０１３１】
ステップＳ９１において、CPU１３は、NANDフラッシュメモリ１１のデータ領域に保存されている不要論理TUリストを読み出す。
【０１３２】
ステップＳ９２において、CPU１３は、読み出した不要論理TUリストを基に、不要論理TU番号をファイルシステムに通知させる。
【０１３３】
このようにして、ファイルシステムから不要論理TU番号が通知されると、論物変換層において、図９のフローチャートを参照して説明したように、不要論理TUリストが再構築される。
【０１３４】
次に、電源断後の再起動時に不要論理TUリストを復元させる第２の手法について説明する。
【０１３５】
［不要論理TUリストを論物変換層側で保存し、不要論理TU番号を通知させる手法］
図１４は、不要論理TUリストを論物変換層側で保存する処理について説明するフローチャートである。
【０１３６】
ステップＳ１１１において、CPU１３は、電源断を検知したか否かを判定する。ステップＳ１１１においては、電源断が検知されるまで処理は進まない。
【０１３７】
ステップＳ１１１において、電源断を検知したと判定されると、電源断の直前に、処理はステップＳ１１２に進み、CPU１３は、メモリ１２上の不要論理TUリストを保存するための未書き込みの物理TUを選択する。
【０１３８】
ステップＳ１１３において、CPU１３は、選択された物理TUの拡張領域に書き込まれている管理情報に含まれる論理TU番号に特殊な番号を設定する。これにより、不要論理TUリストを保存するための物理TUが、ファイルシステムからのデータが保存されている他の物理TUと区別されるようになる。
【０１３９】
ステップＳ１１４において、CPU１３は、メモリ１２上の不要論理TUリストを、特殊な番号を設定した物理TUのデータ領域に保存する。
【０１４０】
このようにして、電源断前に、不要論理TUリストが保存される。
【０１４１】
保存された不要論理TUリストは、図１３のフローチャートを参照して説明した、電源断後の再起動時に実行される不要論理TU番号通知処理と同様にして読み出され、不要論理TU番号が通知される。結果として、論物変換層において、図９のフローチャートを参照して説明したように、不要論理TUリストが再構築される。
【０１４２】
さらに、電源断後の再起動時に不要論理TUリストを復元させる第３の手法について説明する。
【０１４３】
［ファイルシステムの管理情報から不要論理TU番号を生成し、通知させる手法］
図１５は、不要論理TU番号を生成し、通知する処理について説明するフローチャートである。なお、図１５の処理は、電源断後の再起動時に実行される。
【０１４４】
ステップＳ１３１において、CPU１３は、ファイルシステムの管理情報に含まれる未使用領域に関する情報から、不要論理TU番号を生成する。
【０１４５】
一般的に、ファイルシステムは、自身の管理情報により、自身が使用する領域のうちのどの領域にデータを保存しているか、どの領域が未使用領域かを把握している。したがって、ファイルシステムは、管理情報に含まれる未使用領域に関する情報から、未使用領域を不要論理TUとして認識し、不要論理TU番号を生成することができる。例えば、ファイルシステムが、FAT（File Allocation Table）ファイルシステムである場合、不要論理TU番号は、そのテーブルから生成されるようになる。
【０１４６】
ステップＳ１３２において、CPU１３は、生成した不要論理TU番号をファイルシステムに通知させる。
【０１４７】
このようにして、ファイルシステムから不要論理TU番号が通知されると、論物変換層において、図９のフローチャートを参照して説明したように、不要論理TUリストが再構築される。
【０１４８】
なお、図１５の処理においては、未使用領域に関する情報を収集するのに時間がかかってしまうものの、網羅的に不要論理TU情報を論物変換層に通知することが可能である。
【０１４９】
また、図１５の処理は、電源断後の再起動時に実行されるものとしたが、システムの空き時間を利用して実行されるようにしてもよい。
【０１５０】
以上の処理によれば、電源断後の再起動時に不要論理TUリストが復元されるようになるので、不要なデータが保持されたままとなることはなく、不揮発性メモリにおける空き容量の確保の効率化を図ることができ、ひいては、不揮発性メモリにおけるデータの書き換えのパフォーマンス向上や、NANDフラッシュメモリのような不揮発性メモリの長寿命化を図ることが可能となる。
【０１５１】
［書き込み中や消去中の電源断対策について］
次に、停電や動作不良等に起因するシステムダウンが生じた後に実施されるシステム復帰処理に伴ってNANDフラッシュメモリ１１におけるデータの記憶状態を正常化するための工夫について説明する。
【０１５２】
NANDフラッシュメモリ１１への書き込み中に電源断が発生した場合、書き込み中の物理TUのデータや管理情報が中途半端な値になってしまう可能性がある。また、NANDフラッシュメモリ１１の消去中に電源断が発生した場合、消去中のブロック中の物理TUのデータや管理情報が完全に消去されずに残ってしまう可能性がある。その結果、再起動時に、中途半端な状態の物理TUを有効な物理TUとみなして利用したり、未書き込みの物理TUとみなして上書きを行ってしまう恐れがあった。
【０１５３】
これに対して、特許文献１では、書き込み直後に、書き込みが完了したことを表す情報を物理TUの拡張領域に書き込んだり、再起動時に、物理TUの拡張領域に書き込まれている管理情報に含まれるCRC（Cyclic Redundancy Check）情報をチェックすることで、中途半端な状態の物理TUを正しい状態にする手法が開示されている。
【０１５４】
以下においては、消去中の電源断対策をより強化する手法について説明する。
【０１５５】
［消去中の電源断対策の強化１］
まず、図１６を参照して、電源断対策を施したブロック消去処理の例について説明する。
【０１５６】
図１６においては、不揮発性メモリの８個のブロックそれぞれの状態Ａ乃至状態Ｅが時系列で示されている。
【０１５７】
まず、図１６の状態Ａは、左から６番目のブロックに、LTU13、LTU14、LTU17のデータが書き換えられ、さらにLTU17のデータがブロック内で書き換えられ、さらにまた、LTU3、LTU4、LTU8の書き換えが行われて、左から７番目のブロックに新たにLTU3、LTU4、LTU8のデータが書き込まれた状態である。
【０１５８】
図１６の状態Ｂは、LTU9の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU9のデータが書き込まれ、LTU9のデータが書き込まれていた物理TUの状態はDIRTYになる。
【０１５９】
その結果、左から３番目のブロックは全てDIRTYな物理TUとなり、図１６の状態Ｃのように消去可能な状態となる。このとき、左から７番目のブロックの物理TUにLTU9のデータが書き込まれるとともに、消去可能となる左から３番目のブロックの番号（以下、消去ブロック番号ともいう）BN3が、LTU9のデータが書き込まれる物理TUの拡張領域に書き込まれるようにする。
【０１６０】
ここで、図１６の状態Ｃで、左から３番目のブロックが消去されている最中に、電源断が発生したとする。
【０１６１】
図１６の状態Ｄは、電源断後、再起動時の不揮発性メモリの状態である。図１６の状態Ｄでは、左から３番目のブロックは、消去中に電源断が発生したため、その状態は中途半端な状態となっている。
【０１６２】
そこで、図１６の状態Ｅで、フォールド処理において最後に書き込まれたデータ、すなわちLTU9のデータが書き込まれた物理TUの拡張領域に書き込まれた消去ブロック番号BN3に基づいて、左から３番目のブロックが消去される。
【０１６３】
このようにして、ブロックの消去中に電源断が発生した場合であっても、再起動時に、中途半端な状態のブロックが確実に消去される。
【０１６４】
次に、図１７のフローチャートを参照して、図１６を参照して説明したブロック消去中におけるブロック番号書き込み処理について説明する。
【０１６５】
なお、ブロックの消去は、図１６を参照して説明したような、ファイルシステムからの要求に応じた論理TUのデータの書き換えの処理の結果、消去可能となるブロック（含まれる全ての物理TUの状態がDIRTYとなるブロック）が発生したときの他、フォールド処理においてコピー元のブロックが消去可能となったときに実行される。
【０１６６】
すなわち、ステップＳ１５１において、CPU１３は、論理TUのデータの書き換えまたはフォールド処理で書き込み対象となる（コピー元の）物理TU内のデータを読み込む。
【０１６７】
ステップＳ１５２において、CPU１３は、書き込み対象PTUを含むブロックが消去可能となるか否かを判定する。
【０１６８】
ステップＳ１５２において、書き込み対象PTUを含むブロックが消去可能となると判定された場合、処理はステップＳ１５３に進み、CPU１３は、書き込まれる（コピーされる）データを書き込み先（コピー先）の物理TUに書き込むとともに、書き込み先（コピー先）の物理TUの拡張領域に、消去対象ブロックのブロック番号（消去ブロック番号）を書き込む。
【０１６９】
そして、ステップＳ１５４において、CPU１３は、消去対象ブロックを消去し、処理は終了する。
【０１７０】
一方、ステップＳ１５２において、書き込み対象PTUを含むブロックが消去可能とならないと判定された場合、処理はステップＳ１５５に進み、CPU１３は、書き込まれる（コピーされる）データのみを書き込み先（コピー先）の物理TUに書き込み、処理は終了する。
【０１７１】
以上の処理によれば、所定のデータ処理において消去可能となったブロックのブロック番号（消去ブロック番号）が、消去対象ブロックから最後にコピーされるデータとともに保存されるようになる。これにより、所定のデータ処理におけるブロックの消去中に電源断が発生した場合であっても、再起動時に、消去ブロック番号を参照することで、中途半端な状態のブロックを確実に消去することが可能となる。
【０１７２】
［消去中の電源断対策の強化２］
次に、図１８を参照して、電源断対策を施したブロック消去処理の他の例について説明する。
【０１７３】
図１８においては、不揮発性メモリの８個のブロックそれぞれの状態Ａ乃至状態Ｆが時系列で示されている。
【０１７４】
図１８の状態Ａは、図１６の状態Ａと同様に、左から６番目のブロックに、LTU13、LTU14、LTU17のデータが書き換えられ、さらにLTU17のデータがブロック内で書き換えられ、さらにまた、LTU3、LTU4、LTU8の書き換えが行われて、左から７番目のブロックに新たにLTU3、LTU4、LTU8のデータが書き込まれた状態である。
【０１７５】
次いで、図１８の状態Ｂは、不要論理TU番号としてLTU0、LTU1、およびLTU2が通知された状態である。このとき、論物変換層側では、不要論理TU番号に対応する物理TUの状態がDIRTYとされる。
【０１７６】
図１８の状態Ｃは、LTU9の書き換えが行われた状態である。これにより、左から７番目のブロックに新たにLTU9のデータが書き込まれ、LTU9のデータが書き込まれていた物理TUの状態はDIRTYになる。
【０１７７】
その結果、左から３番目のブロックは全てDIRTYな物理TUとなり、図１８の状態Ｄのように消去可能な状態となり、消去可能となる左から３番目のブロックの番号（消去ブロック番号）BN3が、LTU9のデータが書き込まれる物理TUの拡張領域に書き込まれる。
【０１７８】
図１８の状態Ｅは、LTU10の書き換えが行われた状態である。これにより、左から８番目のブロックに新たにLTU10のデータが書き込まれる。このとき、左から１番目のブロックは、全ての物理TUがDIRTYとなり消去可能となっている。
【０１７９】
そこで、図１８の状態Ｅでは、消去可能である左から１番目のブロックの番号（消去ブロック番号）BN1が、LTU10のデータが書き込まれる物理TUの拡張領域に書き込まれるようにする。
【０１８０】
そして、図１８の状態Ｆで、消去可能な左から１番目のブロックが消去される。
【０１８１】
次に、図１９のフローチャートを参照して、図１８を参照して説明したブロック消去中におけるブロック番号書き込み処理について説明する。
【０１８２】
なお、図１９のフローチャートのステップＳ１７１乃至Ｓ１７４の処理は、ステップＳ１７２における判定がNOである場合の処理を除いて、図１７のフローチャートのステップＳ１５１乃至Ｓ１５４の処理と、同様であるので、その説明は省略する。
【０１８３】
すなわち、ステップＳ１７２において、書き込み対象PTUを含むブロックが消去可能とならないと判定された場合、処理はステップＳ１７５進み、CPU１３は、消去可能な他のブロック、すなわち、論理TUのデータの書き換えまたは不要論理TU番号の通知により全ての物理TUがDIRTYとなっているブロックが存在するか否かを判定する。
【０１８４】
ステップＳ１７５において、消去可能な他のブロックが存在すると判定された場合、処理はステップＳ１７６に進み、CPU１３は、書き込まれる（コピーされる）データを書き込み先（コピー先）の物理TUに書き込むとともに、書き込み先（コピー先）の物理TUの拡張領域に、消去可能な他のブロックのブロック番号（消去ブロック番号）を書き込む。
【０１８５】
そして、ステップＳ１７７において、CPU１３は、消去可能な他のブロックを消去し、処理は終了する。
【０１８６】
一方、ステップＳ１７５において、消去可能な他のブロックが存在しないと判定された場合、処理はステップＳ１７８に進み、CPU１３は、書き込まれる（コピーされる）データのみを書き込み先（コピー先）の物理TUに書き込み、処理は終了する。
【０１８７】
以上の処理によれば、不要論理TU番号の通知により既に消去可能となっているブロックのブロック番号（消去ブロック番号）が、データ処理によりブロックからコピーされるデータとともに保存されるようになる。これにより、所定のデータ処理におけるブロックの消去中に電源断が発生した場合であっても、再起動時に、消去ブロック番号を参照することで、中途半端な状態のブロックを確実に消去することが可能となる。
【０１８８】
本技術によれば、次のような効果を実現することができる。
（１）不要論理TU情報（不要論理TU番号）を論物変換層内で保持し、フォールド処理時に不要論理TUの無駄なコピーを行わないようにしたので、書き換えのパフォーマンス向上およびNANDフラッシュメモリの長寿命化を図ることができる。
（２）不要論理TU情報を、通常動作時にはメモリ上で保持し、電源断直前にNANDフラッシュメモリに書き込むようにしたので、特定のファイルシステムに依存せずに、NANDフラッシュメモリへの書き込み負荷を抑えつつ、再起動時には不要論理TU情報を復元することが可能となる。
（３）再起動時に、ファイルシステム側から未使用領域（空き領域）を表す情報を、不要論理TU情報として通知するようにしたので、NANDフラッシュメモリへの書き込み負荷を抑えつつ、再起動時には不要論理TU情報を復元することが可能となる。
（４）フォールド処理において消去可能となったブロックのブロック番号を別のブロックに保持するようにしたので、消去可能となったブロックの消去中に電源断が発生し、そのブロックが中途半端な状態になった場合でも、再起動時にそのブロックを特定し、確実に消去することが可能となる。
【０１８９】
以上においては、本技術を、NANDフラッシュメモリのアクセス管理を行うメモリ管理装置に適用するものとしたが、その他の不揮発性メモリのアクセス管理を行うメモリ管理装置に適用することもできる。
【０１９０】
また、本技術の実施の形態は、例えば、不揮発性メモリを用いる記憶装置、パーソナルコンピュータ、テレビジョン受像機等の表示装置、携帯電話機等の携帯型通信装置、映像／音楽再生装置（または映像／音楽記録再生装置）、ゲーム機等、様々な機器に適用することができる。さらに、本技術の実施の形態は、以上のような様々な機器に組み込まれる記録媒体の制御IC（Integrated Circuit）に適用することもできる。
【０１９１】
なお、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等に、プログラム記録媒体からインストールされる。
【０１９２】
図２０は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【０１９３】
コンピュータにおいて、CPU（Central Processing Unit）９０１，ROM（Read Only Memory）９０２，RAM（Random Access Memory）９０３は、バス９０４により相互に接続されている。なお、CPU９０１は、本技術における制御部としてのCPU１３に対応し、ROM９０２およびRAM９０３は、本技術における保持部としてのメモリ１２に対応する。
【０１９４】
バス９０４には、さらに、入出力インタフェース９０５が接続されている。入出力インタフェース９０５には、キーボード、マウス、マイクロホン等よりなる入力部９０６、ディスプレイ、スピーカ等よりなる出力部９０７、ハードディスクや不揮発性のメモリ等よりなる記憶部９０８、ネットワークインタフェース等よりなる通信部９０９、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等のリムーバブルメディア９１１を駆動するドライブ９１０が接続されている。なお、記憶部９０８は、本技術における不揮発性メモリとしてのNANDフラッシュメモリ１１に対応する。
【０１９５】
以上のように構成されるコンピュータでは、CPU９０１が、例えば、記憶部９０８に記憶されているプログラムを、入出力インタフェース９０５およびバス９０４を介して、RAM９０３にロードして実行することにより、上述した一連の処理が行われる。
【０１９６】
コンピュータ（CPU９０１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリ等よりなるパッケージメディアであるリムーバブルメディア９１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０１９７】
そして、プログラムは、リムーバブルメディア９１１をドライブ９１０に装着することにより、入出力インタフェース９０５を介して、記憶部９０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部９０９で受信し、記憶部９０８にインストールすることができる。その他、プログラムは、ROM９０２や記憶部９０８に、あらかじめインストールしておくことができる。
【０１９８】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１９９】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０２００】
さらに、本技術は以下のような構成をとることができる。
（１）
データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、
前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部と
を備え、
前記制御部は、ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定する
メモリ管理装置。
（２）
前記不要論理TU情報を保持する保持部をさらに備える
（１）に記載のメモリ管理装置。
（３）
前記制御部は、電源断前に、前記保持部に保持されている前記不要論理TU情報を、前記ファイルシステム上のデータとして前記不揮発性メモリに保存し、起動時に、前記不揮発性メモリに保存されている前記不要論理TU情報を前記ファイルシステムに通知させる
（２）に記載のメモリ管理装置。
（４）
前記制御部は、電源断前に、前記保持部に保持されている前記不要論理TU情報を、前記不揮発性メモリの所定の論理TU番号が設定された物理TUに保存し、起動時に、前記所定の論理TU番号が設定された物理TUに保存されている前記不要論理TU情報を前記ファイルシステムに通知させる
（２）に記載のメモリ管理装置。
（５）
前記制御部は、前記ファイルシステムの管理情報に含まれる未使用領域に関する情報に基づいて、前記不要論理TU情報を前記ファイルシステムに生成させ、通知させる
（２）に記載のメモリ管理装置。
（６）
前記保持部は、各物理TUの状態を管理するための物理TU状態マップと、前記不要論理TU情報を格納する不要論理TUリストとを保持し、
前記制御部は、前記ファイルシステムにより前記不要論理TU情報が通知されると、前記物理TU状態マップにおいて前記不要論理TU情報に対応する物理TUの状態を書き込み済みの無効な物理TUとするとともに、前記不要論理TUリストに、通知された前記不要論理TU情報を追加する
（２）乃至（５）のいずれかに記載のメモリ管理装置。
（７）
前記保持部は、論理TUのアドレスと物理TUのアドレスとを対応付けた論物変換テーブルをさらに保持し、
前記制御部は、前記ファイルシステムにより前記不要論理TU情報が通知されると、前記論物変換テーブルにおいて、前記不要論理TU情報に対応する物理TUのアドレスを未定義に設定する
（６）に記載のメモリ管理装置。
（８）
前記制御部は、前記物理TU状態マップにおいて、前記ブロックに含まれる全ての物理TUの状態が、書き込み済みの無効な物理TUとなったとき、前記ブロックを消去する
（６）に記載のメモリ管理装置。
（９）
前記制御部は、データ処理の結果、データのコピー元となる物理TUを含む前記ブロックが消去可能となる場合、前記データ処理において、消去可能となる前記ブロックを表すブロック番号を、前記データがコピーされる前記未書き込みの物理TUに書き込んで、前記ブロックを消去する
（８）に記載のメモリ管理装置。
（１０）
前記データ処理は、前記ファイルシステムからの要求に応じた論理TUのデータの書き換えである
（９）に記載のメモリ管理装置。
（１１）
前記データ処理は、前記フォールド処理である
（９）に記載のメモリ管理装置。
（１２）
前記制御部は、前記データ処理の結果、データのコピー元となる物理TUを含む前記ブロックが消去可能とならず、かつ、他のブロックが消去可能である場合、前記データ処理において、消去可能となる前記他のブロックを表すブロック番号を、前記データがコピーされる前記未書き込みの物理TUに書き込んで、前記他のブロックを消去する
（９）乃至（１１）のいずれかに記載のメモリ管理装置。
（１３）
データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、
前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部とを備えるメモリ管理装置のメモリ管理方法であって、
前記メモリ管理装置が、
ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定する
ステップを含むメモリ管理方法。
（１４）
データの書き込みおよび読み出しはページ単位で行われ、消去はブロック単位で行われる不揮発性メモリと、
前記不揮発性メモリにおけるデータ処理を、TU（Translation Unit）単位で論物変換を行うことで管理し、フォールド処理を行う制御部と
を備えるコンピュータに、
ファイルシステムにより通知される、物理的に不要なデータが書き込まれている物理TUに対応する論理TUを表す不要論理TU情報に基づいて、前記不要論理TU情報に対応する物理TUのデータを前記フォールド処理におけるコピーの対象外に設定する
ステップを含む処理を実行させるためのプログラム。
【符号の説明】
【０２０１】
１０  メモリ管理装置，  １１  NANDフラッシュメモリ，  １２  メモリ，  １３  CPU
【図１】
2013250603.tif 000003
【図２】
2013250603.tif 000004
【図３】
2013250603.tif 000005
【図４】
2013250603.tif 000006
【図５】
2013250603.tif 000007
【図６】
2013250603.tif 000008
【図７】
2013250603.tif 000009
【図８】
2013250603.tif 000010
【図９】
2013250603.tif 000011
【図１０】
2013250603.tif 000012
【図１１】
2013250603.tif 000013
【図１２】
2013250603.tif 000014
【図１３】
2013250603.tif 000015
【図１４】
2013250603.tif 000016
【図１５】
2013250603.tif 000017
【図１６】
2013250603.tif 000018
【図１７】
2013250603.tif 000019
【図１８】
2013250603.tif 000020
【図１９】
2013250603.tif 000021
【図２０】
2013250603.tif 000022