(57)【要約】【課題】開発の負担を軽減する。【解決手段】実施形態の記憶制御装置は、状態記憶手段と、判定手段と、ウェアレベリングブロック保持手段と、ブロック移動制御手段と、を備える。状態記憶手段は、データ消去の単位となるブロックを複数個含んでいる記憶手段内で、データが格納されたブロック毎に、消去時期及び当該ブロックの消去回数のいずれか１つ以上を含むブロック状態情報を記憶する。判定手段は、ブロック状態情報に基づいて、ウェアレベリングが必要なブロックがあるか否かを判定する。ウェアレベリングブロック保持手段は、ウェアレベリングなブロックを識別するブロック識別情報を保持する。ブロック移動制御手段は、複数のブロックに格納されたデータを移動させて、複数のブロック以外のブロックにまとめるコンパクションを行うと共に、ウェアレベリングブロック保持手段がブロック識別情報を保持している場合に、当該ブロック識別情報で識別されるブロックに格納されたデータを移動させる。【選択図】図２
2012053553.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位となるブロックを複数個含んでいる記憶手段内で、データが格納されたブロック毎に、前回消去された時期を示す消去時期情報及び当該ブロックの消去された回数を示す消去回数情報のいずれか１つ以上を含むブロック状態情報を記憶する状態記憶手段と、
前記状態記憶手段に記憶された前記ブロック状態情報に基づいて、ウェアレベリングが必要なブロックがあるか否かを判定する判定手段と、
前記判定部で前記ウェアレベリングが必要と判定された前記ブロックを識別するブロック識別情報を保持するウェアレベリングブロック保持手段と、
前記記憶手段の複数のブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめるコンパクションを行うと共に、前記ウェアレベリングブロック保持手段が前記ブロック識別情報を保持している場合に当該ブロック識別情報で識別されるブロックに格納されたデータを移動させるブロック移動制御手段と、
を備えることを特徴とする記憶制御装置。
【請求項２】
前記ブロック移動制御手段によるコンパクションの移動元となるブロックを識別するブロック識別情報を保持するコンパクションブロック保持手段と、
前記ウェアレベリングブロック保持手段及び前記コンパクションブロック保持手段のいずれか一方が保持している前記ブロック識別情報を、他方で保持することを抑止する抑止手段と、をさらに備え、
前記ブロック移動制御手段は、前記ウェアレベリングブロック保持手段により保持された前記ブロック識別情報で識別されるブロックに格納されたデータを移動させるほか、さらに、前記コンパクションとして、前記コンパクションブロック保持手段により保持される前記ブロック識別情報で識別されるブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめること、
を特徴とする請求項１に記載の記憶制御装置。
【請求項３】
前記記憶手段内で、データが書き込まれていない前記ブロックのうち、ウェアレベリング又はコンパクションで移動先となるブロックを識別するブロック識別情報を保持する移動先保持手段を、さらに備え、
前記ブロック移動制御手段は、さらに、前記移動先保持部が保持する前記ブロック識別情報で識別されるブロックを移動先として、データを移動させること、
を特徴とする請求項１又は２に記載の記憶制御装置。
【請求項４】
前記移動先保持手段は、前記ブロック識別情報に、当該ブロックの消去された回数を示す消去回数情報を対応付けて保持し、消去された回数が高いブロックを識別する前記ブロック識別情報から順に、前記ブロック移動制御手段に供給し、
前記ブロック移動制御手段は、前記ウェアレベリングブロック保持手段が前記ブロック識別情報を保持している場合、当該ブロック識別情報で識別されるブロックに格納されたデータを、前記移動先保持手段から供給される前記ブロック識別情報で識別されるブロックに移動させる制御を、コンパクションより優先して行うこと、
を特徴とする請求項３に記載の記憶制御装置。
【請求項５】
前記判定部で前記ウェアレベリングが必要と判定された場合に、前記移動先保持手段で保持される前記消去回数情報で消去回数が高いブロックから順に、前記ブロック移動制御手段によるデータの移動先として予約登録を行う登録手段を、さらに備え、
前記ブロック移動制御手段は、さらに、前記登録手段で予約登録されたブロックを、前記ウェアレベリングブロック保持手段で保持される前記ブロック識別情報で識別されるブロックに格納されたデータの移動先として用いること、
を特徴とする請求項４に記載の記憶制御装置。
【請求項６】
前記記憶手段のブロックに対して、外部からの要求に応じてデータの書き込みを行う制御手段をさらに備え、
前記移動先保持手段は、さらに、前記ブロック移動制御手段がコンパクションを行う場合又は前記制御手段がデータの書き込み制御を行う場合に、消去された回数が高い順以外の条件で、前記ブロック識別情報を、前記ブロック移動制御手段に供給すること、
を特徴とする請求項４又は５に記載の記憶制御装置。
【請求項７】
データ消去の単位となるブロックを複数個含んでいる記憶手段と、
前記記憶手段内で、データが格納されたブロック毎に、前回消去された時期を示す消去時期情報及び当該ブロックの消去された回数を示す消去回数情報のいずれか１つ以上を含むブロック状態情報を記憶する状態記憶手段と、
前記状態記憶手段に記憶された前記ブロック状態情報に基づいて、前記ウェアレベリングが必要なブロックがあるか否かを判定する判定手段と、
前記判定部で前記ウェアレベリングが必要と判定された前記ブロックを識別するブロック識別情報を保持するウェアレベリングブロック保持手段と、
前記記憶手段の複数のブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめるコンパクションを行うと共に、前記ウェアレベリングブロック保持手段が前記ブロック識別情報を保持している場合に当該ブロック識別情報で識別されるブロックに格納されたデータを移動させるブロック移動制御手段と、
を備えることを特徴とする記憶装置。
【請求項８】
記憶装置で実行されるデータ移動制御方法であって、
前記記憶装置は、データ消去の単位となるブロックを複数個含んでいる記憶手段内で、データが格納されたブロック毎に、前回消去された時期を示す消去時期情報及び当該ブロックの消去された回数を示す消去回数情報のいずれか１つ以上を含むブロック状態情報を記憶する状態記憶手段を備え、
判定手段が、前記状態記憶手段に記憶された前記ブロック状態情報に基づいて、前記ウェアレベリングが必要なブロックがあるか否かを判定する判定ステップと、
ウェアレベリングブロック保持手段が、前記判定部で前記ウェアレベリングが必要と判定された前記ブロックを識別するブロック識別情報を保持するウェアレベリングブロック保持手段と、
ブロック移動制御手段が、前記記憶手段の複数のブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめるコンパクションを行うと共に、前記ウェアレベリングブロック保持手段が前記ブロック識別情報を保持している場合に当該ブロック識別情報で識別されるブロックに格納されたデータを移動させるブロック移動制御ステップと、
を有することを特徴とするデータ移動制御方法。
【請求項９】
コンパクションブロック保持手段が、前記ブロック移動制御ステップによるコンパクションの移動元となるブロックを識別するブロック識別情報を保持するコンパクションブロック保持ステップと、
抑止手段が、前記ウェアレベリングブロック保持手段及び前記コンパクションブロック保持手段のいずれか一方が保持している前記ブロック識別情報を、他方で保持することを抑止する抑止ステップと、をさらに有し、
前記ブロック移動制御ステップは、前記ウェアレベリングブロック保持手段により保持された前記ブロック識別情報で識別されるブロックに格納されたデータを移動させるほか、さらに、前記コンパクションとして、前記コンパクションブロック保持手段により保持される前記ブロック識別情報で識別されるブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめること、
を特徴とする請求項８に記載のデータ移動制御方法。
【請求項１０】
移動先保持手段は、前記記憶手段内で、データが書き込まれていない前記ブロックのうち、ウェアレベリング又はコンパクションで移動先となるブロックを識別するブロック識別情報を保持する移動先保持ステップを、さらに有し、
前記ブロック移動制御ステップは、さらに、前記移動先保持部が保持する前記ブロック識別情報で識別されるブロックを移動先として、データを移動させること、
を特徴とする請求項８又は９に記載のデータ移動制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶制御装置、記憶装置、及びデータ移動制御方法に関する。
【背景技術】
【０００２】
従来から、端末装置の記憶装置として、様々な記憶装置が提案されている。このような記憶装置の種類として、例えばフラッシュメモリが存在する。このフラッシュメモリの一種類であるＮＡＮＤ型フラッシュメモリが近年利用される傾向にある。
【０００３】
ＮＡＮＤ型フラッシュメモリは、書き込みを行う前に消去処理が必要な不揮発性半導体メモリであり、その寿命は消去回数および消去時間間隔に依存している。このＮＡＮＤ型フラッシュメモリの延命手段として、各ブロックが均等に利用されるようするのが好ましい。
【０００４】
このため、近年、データ消去の最小単位である各ブロックの消去時期および消去回数を計測し、使用中状態かつ消去時期が古いブロックのデータを、空き状態かつ使用中ブロックより消去回数の一定数以上多いブロックに移動することで、ブロックの疲弊度を平準化するウェアレベリング処理が提案されている。
【０００５】
一方、書き込みが論理セクタ単位であり、消去が複数の論理セクタで構成されるブロック単位となる、ＮＡＮＤ型フラッシュメモリでは、書き換えが行われていくと、ブロックは、無効なデータが格納された論理セクタと、有効なデータが格納された論理セクタと、で構成されることになり、いわゆる穴あき状態となる。そこで、記憶領域を有効活用するため、疎密度になったブロック内の有効な最新データを集めて、別ブロックに書き直す、コンパクションと呼ばれる処理が行われている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−３２２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術においては、ウェアレベリング処理や、コンパクション処理は、同じデータの移動処理であるにもかかわらず、それぞれ独立して行われていたため、増長な構成となり、開発などの負担が大きかった。
【０００８】
本発明は、上記に鑑みてなされたものであって、開発の負担などを軽減した記憶制御装置、記憶装置、及びデータ移動制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態の記憶制御装置は、状態記憶手段と、判定手段と、ウェアレベリングブロック保持手段と、ブロック移動制御手段と、を備える。状態記憶手段は、データ消去の単位となるブロックを複数個含んでいる記憶手段内で、データが格納されたブロック毎に、前回消去された時期を示す消去時期情報及び当該ブロックの消去された回数を示す消去回数情報のいずれか１つ以上を含むブロック状態情報を記憶する。判定手段は、ブロック状態情報に基づいて、ウェアレベリングが必要なブロックがあるか否かを判定する。ウェアレベリングブロック保持手段は、判定部でウェアレベリングが必要と判定されたブロックを識別するブロック識別情報を保持する。ブロック移動制御手段は、複数のブロックに格納されたデータを移動させて、複数のブロック以外のブロックにまとめるコンパクションを行うと共に、ウェアレベリングブロック保持手段がブロック識別情報を保持している場合に当該ブロック識別情報で識別されるブロックに格納されたデータを移動させる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態にかかる情報処理装置の構成を示すブロック図である。
【図２】図２は、記憶装置内の各構成を示したブロック図である。
【図３】図３は、アクティブブロック管理部のテーブル構造の一例を示した図である。
【図４】図４は、フリーブロック管理部内のテーブル群の内部構成の例を示した図である。
【図５】図５は、コンパクション用ブロックＩＤ保持部のテーブル構造の例を示した図である。
【図６】図６は、ウェアレベリング用ブロックＩＤ保持部のテーブル構造の例を示した図である。
【図７】図７は、本実施形態にかかるＮＡＮＤコントローラにおける、ウェアレベリングのための予約登録までの処理の手順を示すフローチャートである。
【図８】図８は、本実施形態にかかるフリーブロック管理部における、フリーブロックの供給手順を示すフローチャートである。
【図９】図９は、本実施形態にかかる対象ブロック移動制御部における、データの移動制御の手順を示すフローチャートである。
【図１０】図１０は、変形例にかかるフリーブロック管理部内のテーブル群の内部構成の例を示した図である。
【発明を実施するための形態】
【００１１】
（実施形態）
後述する実施形態は、ＮＡＮＤ型フラッシュメモリを、記憶装置として備えた情報処理装置を例について説明する。後述する実施形態における各機能ブロックは、ハードウェアおよびソフトウェアのいずれか、またはこれらの組み合わせで実現できるものとする。
【００１２】
図１は、実施形態にかかる情報処理装置１００の構成を示すブロック図である。図１に示すように、情報処理装置１００は、記憶装置１０１と、ＣＰＵ１０２と、メインメモリ１０３と、メモリコントローラ１０４と、で構成されている。そして、記憶装置１０１と、ＣＰＵ１０２と、メインメモリ１０３と、メモリコントローラ１０４と、の間は、アドレスを受け渡しするためのアドレスバス１０５と、データを受け渡しするためのデータバス１０６と、により接続されている。
【００１３】
ＣＰＵ１０２は、情報処理装置１００全体の制御を行う。具体的には、記憶装置１０１から読み出したプログラムを、メモリコントローラ１０４を介してメインメモリ１０３上に展開し、展開されたプログラムに従って、情報処理装置１００全体の制御を行う。
【００１４】
メモリコントローラ１０４は、メインメモリ１０３を制御するコントローラとする。
【００１５】
メインメモリ１０３は、ＤＲＡＭ等が用いられ、ＣＰＵ１０２の作業領域やプログラムの展開領域として用いられる。
【００１６】
記憶装置１０１は、ＮＡＮＤ型フラッシュメモリ１１０と、ＮＡＮＤコントローラ１１１と、で構成されている。当該記憶装置１０１の例としては、ＮＡＮＤ型フラッシュメモリ１１０と、ＮＡＮＤ型フラッシュメモリ１１０に対するデータアクセスを実行するＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ）と、を備えたＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）がある。そして、本実施形態では、ＳＳＤのＳｏＣの例として以下に示すＮＡＮＤコントローラ１１１を備えている。
【００１７】
ＮＡＮＤコントローラ１１１は、不揮発性半導体メモリの一種であるＮＡＮＤ型フラッシュメモリ１１０を制御する。
【００１８】
ＮＡＮＤ型フラッシュメモリ１１０は、ＮＡＮＤコントローラ１１１を介して、ＣＰＵ１０２からの書き込み要求または読み込み要求に従って、データの読み書きが行われる。
【００１９】
ＮＡＮＤ型フラッシュメモリ１１０は、論理セクタを複数含んだブロックを複数個含んだ構成とする。論理セクタは、データの読み書きの単位とする。ブロックは、データの消去の単位とする。
【００２０】
図２は、記憶装置１０１内の各構成を示したブロック図である。図２に示すように、ＮＡＮＤコントローラ１１１は、ＮＡＮＤインタフェース２０１と、制御部２０２と、ウェアレベリング判定部２０３と、ウェアレベリング対象ブロック決定部２０４と、移動先ブロック予約登録部２０５と、移動元ブロック予約登録部２０６と、ブロック管理部２０７と、コンパクション部２０８と、で構成される。
【００２１】
そして、本実施形態にかかるＮＡＮＤコントローラ１１１は、ＣＰＵ１０２からの要求に従ったデータの読み書き以外に、ＮＡＮＤ型フラッシュメモリ１１０に対するコンパクション及びウェアレベリングなどの制御を行う。
【００２２】
コンパクションとは、１ブロックが、有効な論理セクタと無効な論理セクタとによる穴あき状態となった場合、密度が疎になったブロック内で有効な論理セクタに格納されたデータを集めて、別ブロックに書き直す処理をいう。これにより、連続した利用可能なメモリ領域を増加させ、記憶領域を有効活用することが可能となる。
【００２３】
ウェアレベリングは、使用中状態かつ消去時期が古いブロックのデータを、空き状態かつ消去回数の一定数以上多いブロックに移動させる。これは、使用中状態かつ消去時期が古いブロックに含まれるデータは劣化が生じる可能性があるため、ブロックの移動を行うことで、データの劣化を抑止させるとともに、更新の頻度が少ないデータを、消去回数が一定以上多いブロックに移動させることで、ブロックの疲弊度を平準化している。このように、書き込みが均等に分散されることで、当該ＮＡＮＤ型フラッシュメモリ１１０の寿命を向上させることができる。
【００２４】
ところで、従来のＮＡＮＤコントローラでは、ウェアレベリングとコンパクションとを行う構成がそれぞれ独立して構成されていた。つまり、従来のＮＡＮＤコントローラでは、本実施形態のＮＡＮＤコントローラ１１１と比べて、ウェアレベリングを行うための構成を含んでいた。そして、ウェアレベリングを行う構成（以下、従来のウェアレベリング部）と、コンパクション（以下、従来のコンパクション部）を行う構成とが、同一ブロックを処理対象とした場合、不要であるにもかかわらず、２重にデータ移動が発生するという問題が生じていた。
【００２５】
具体的には、従来のコンパクション部では、制御部等からの要求に従って、移動元ブロックを選定した後、ブロック管理部より移動先となるフリーブロックの供給を受けて、有効データの移動処理を行っていた。一方、ウェアレベリングを実行する場合は、従来のウェアレベリング部が、ウェアレベリングの実行に際する必要条件を満たしていると判定した場合、必要条件を満たしたブロックを移動元ブロックと選定するとともに、移動先のブロックを選定して、有効データの移動処理を行っていた。これらが独立して行われていたため、上述の問題が生じていた。
【００２６】
これに対し、本実施形態にかかるＮＡＮＤコントローラ１１１は、後述する構成を備えることで、コンパクションを行うコンパクション部２０８内で、ウェアレベリングのための移動制御を行うことを可能とした。これにより、本実施形態にかかるＮＡＮＤコントローラ１１１は、ウェアレベリングとコンパクションとのリソース共有化を実現している。
【００２７】
ＮＡＮＤインタフェース２０１は、ＮＡＮＤ型フラッシュメモリ１１０にアクセスするためのインタフェースとする。
【００２８】
制御部２０２は、ＮＡＮＤインタフェース２０１を介して、ＮＡＮＤ型フラッシュメモリ１１０のブロックに対して、ＣＰＵ１０２からの要求に応じてデータの読み込み、書き込みまたは消去を行う。
【００２９】
ブロック管理部２０７は、ブロック状態計測部２１３と、ブロック管理テーブル制御部２１４と、アクティブブロック管理部２１１と、フリーブロック管理部２１２と、を備え、ＮＡＮＤ型フラッシュメモリ１１０に含まれている各ブロックの状態を管理する。
【００３０】
ブロック状態計測部２１３は、各ブロックが消去される度に、当該ブロックが前回消去された時期に相当するデータや、消去回数などの、計測制御を行う。本実施形態では、ブロックのデータが前回消去された時期に相当するデータとして、消去シーケンス番号を用いる。
【００３１】
消去シーケンス番号とは、消去が行われたブロックに対して、小さい番号から順に、シーケンシャルに割り当てられる番号とする。当該消去シーケンス番号は、ブロックの消去が行われるたびに更新される。つまり、割り当てられた番号が小さいブロックほど、昔消去が行われたことを示している。消去回数は、同一ブロックで消去が行われた回数とする。
【００３２】
つまり、ＮＡＮＤ型フラッシュメモリ１１０は、書き込みを行う前に消去処理が必要な不揮発性半導体メモリであり、その寿命は消去回数および消去時間間隔に依存する。そこで、本実施形態にかかるＮＡＮＤコントローラ１１１では、ＮＡＮＤ型フラッシュメモリ１１０の延命手段として、ブロック状態計測部２１３が、データ消去の最小単位であるブロック単位で、消去シーケンス番号および消去回数を計測し、計測結果に基づいて、ウェアレベリング等の制御を行うこととした。
【００３３】
ブロック管理テーブル制御部２１４は、ブロックが使用中であるか否かと、ブロック状態計測部２１３の計測結果と、を対応付けて保持するテーブルの制御を行う。ブロック管理テーブル制御部２１４は、アクティブブロック管理部２１１と、フリーブロック管理部２１２と、を制御対象とする。
【００３４】
アクティブブロック管理部２１１は、有効なデータが格納されているブロック（以下、アクティブブロックと称す）を管理するテーブルとする。図３は、アクティブブロック管理部２１１のテーブル構造の一例を示した図である。図３に示すように、アクティブブロック管理部２１１では、ブロックＩＤと、消去回数と、消去シーケンス番号と、が対応づけている。ブロックＩＤは、個々のブロックを識別するために割り当てられたＩＤとする。そして、当該ブロックＩＤで識別されるブロック毎に、消去回数及び消去シーケンス番号が対応づけて記憶されている。これにより、各ブロックの状態を管理することができる。
【００３５】
また、アクティブブロック管理部２１１では、ＮＡＮＤ型フラッシュメモリ１１０内のアクティブブロックすべてを管理している。これにより、アクティブブロック管理部２１１を参照することで、全てのアクティブブロックの状態を把握できる。なお、本実施形態では、ブロックの状態を計測するためのパラメータとして、消去回数と、消去シーケンス番号と、を用いる例について説明するが、これら２つのパラメータに制限するものではなく、例えば消去時期を示すタイムスタンプ等など、他のパラメータを用いてもよい。
【００３６】
フリーブロック管理部２１２は、有効なデータが格納されていないブロック（以下、フリーブロックと称す）を管理するテーブル群とする。つまり、フリーブロック管理部２１２は、コンパクション部２０８等がウェアレベリングやコンパクションの移動先として、使用すべきフリーブロックを保持する。
【００３７】
図４は、フリーブロック管理部２１２内のテーブル群の内部構成の例を示した図である。図４に示すように、フリーブロック管理部２１２内は、返却ＦＩＦＯリスト４０１と、割り当てリスト４０２と、で構成されている。
【００３８】
返却ＦＩＦＯリスト４０１は、フリーブロックとなったブロックを識別するＩＤと、当該ブロックの消去回数と、消去シーケンス番号と、をフリーブロックごとに保持する。また、返却ＦＩＦＯリスト４０１では、受け取ったフリーブロックに関する情報を、消去シーケンスの小さい、すなわち消去時刻の古い順に配置する。例えば、コンパクション等によって有効なデータが移動された後のブロックは、消去処理が行われた後、フリーブロックとして、当該ブロックを識別するブロックＩＤ等が、返却ＦＩＦＯリストに挿入される。このため、返却ＦＩＦＯリスト４０１は、返却時には消去シーケンス番号に応じた位置に、当該フリーブロックに関する情報を、挿入する機構を有している。
【００３９】
そして、当該返却ＦＩＦＯリストに格納されたフリーブロックの情報は、割り当てリストのフリーブロックが、コンパクション部２０８などの処理部に供給される毎に、割り当てリスト４０２に対して供給される。
【００４０】
割り当てリスト４０２は、コンパクション部２０８等の処理部からのフリーブロックの供給要求に従って、当該処理部に供給するフリーブロックを管理するブロックリストとする。本実施形態にかかる割り当てリスト４０２では、消去回数の多い順に、フリーブロックに関する情報を配置する。このため、返却ＦＩＦＯリスト４０１から、フリーブロックの情報を補充する際、消去回数に応じた位置に挿入する機構を有している。割り当てリスト４０２でも、フリーブロックに関する情報として、ブロックごとに、ブロックＩＤ、消去回数、及び消去シーケンス番号を対応づけて保持している。
【００４１】
また、フリーブロック管理部２１２は、割り当てリスト４０２の先頭、つまり、もっとも消去回数が多いフリーブロックに対して、予約フラグを設定する。当該予約フラグは、予約の有無（例えば“有”または“無”）を保持するフラグとする。当該予約フラグで予約が“有”に設定されている場合には、フリーブロック管理部２１２は、コンパクション部２０８以外の処理部に対して、予約フラグが設定されたフリーブロックを供給せず、予約フラグが設定されていない次以降のフリーブロックを供給する。なお、当該予約フラグの有無は、ウェアレベリングを行うか否かに従って設定される。つまり、ウェアレベリングを行う場合には、もっとも消去回数が多いフリーブロックを確保されることになる。そして、ウェアレベリングを行わない場合には、フリーブロック管理部２１２が、もっとも消去回数が多いフリーブロックから順に処理部に供給する。
【００４２】
なお、本実施形態では、消去回数が多いフリーブロックから順に供給する例について説明するが、目的に応じて消去回数が少ない又は消去シーケンス番号が小さいフリーブロックを供給したりしてもよい。
【００４３】
ウェアレベリング判定部２０３は、アクティブブロック管理部２１１に記憶されたアクティブブロックの状態に基づいて、ウェアレベリングが必要なブロックがあるか否かを判定する。このウェアレベリングが必要か否かの判定基準として、消去シーケンス番号や、消去回数等に基づいた判定基準が定められているものとする。当該判定基準は、すでに提案された判定基準などを用いてもよいが、例えば、アクティブブロック管理部２１１で管理された消去シーケンス番号が、現在の消去シーケンス番号より予め定められた閾値以上離れたブロックを、同一ブロックに同一データが長期滞留しているブロックとして、ウェアレベリングの対象とすることが考えられる。
【００４４】
ウェアレベリング対象ブロック決定部２０４は、ＩＤ重複抑止部２３１を備え、ウェアレベリング判定部２０３でウェアレベリングが必要と判定された場合に、ウェアレベリングの対象となるブロックを決定する。ウェアレベリングの対象となるブロックの決定手法としては周知の手法を問わず、あらゆる手法を用いて良い。本実施形態にかかるウェアレベリング対象ブロック決定部２０４は、アクティブブロック管理部２１１及びフリーブロック管理部２１２を参照し、各ブロックリストを走査して、消去回数の差が一定数以上離れているアクティブブロックと、フリーブロックと、の組み合わせを検索し、ウェアレベリング対象ブロックを決定する。
【００４５】
ＩＤ重複抑止部２３１は、コンパクション用ブロックＩＤ保持部２２２から、すでにコンパクションの対象となっているアクティブブロックのブロックＩＤを参照する。そして、ＩＤ重複抑止部２３１は、ウェアレベリング対象ブロック決定部２０４で決定されたアクティブブロックが、すでにコンパクションの対象として保持されている場合、同一ブロックに対してウェアレベリング及びコンパクションの２重移動処理が行われないよう、ウェアレベリング対象ブロック決定部２０４による決定を抑止する。なお、本実施の形態では、ウェアレベリング対象ブロック決定部２０４内部のＩＤ重複抑止部２３１で、重複抑止を行う例を示したが、コンパクション部２０８内部で行ってもよい。
【００４６】
これは、アクティブブロックに対してコンパクションが行われる以上、当該ブロックのデータを他のブロックに移動するため、ウェアレベリングと同様、ブロックの移動に伴うデータの書き換え制御が行われることになる。つまり、コンパクションが行われる以上、古いデータが更新されるため、同一ブロックに対するウェアレベリングを行う必要がない。このため、本実施形態にかかるＩＤ重複抑止部２３１が、コンパクションの対象であるアクティブブロックについては、ウェアレベリングの実行を抑止することとした。
【００４７】
なお、本実施形態では、コンパクションの対象であるアクティブブロックに対する、ウェアレベリングの実行の抑止を行う例とするが、ウェアレベリングの対象であるアクティブブロックに対する、コンパクションの実行を抑止してもよい。この場合でも、同一ブロックに対してウェアレベリング及びコンパクションの２重移動処理が排除されるため、同様の効果を得ることができる。
【００４８】
移動元ブロック予約登録部２０６は、ＩＤ重複抑止部２３１による抑止もなく、ウェアレベリング対象ブロック決定部２０４でウェアレベリングの対象としてアクティブブロックが決定された場合に、当該アクティブブロックを移動元のブロックとして、コンパクション部２０８に対して予約登録する。これにより、コンパクション部２０８内のウェアレベリング用ブロックＩＤ保持部２２１に当該移動元のブロックのブロックＩＤが登録される。
【００４９】
移動先ブロック予約登録部２０５は、ＩＤ重複抑止部２３１による抑止もなく、ウェアレベリング対象ブロック決定部２０４でウェアレベリングの対象としてアクティブブロックが決定された場合に、ウェアレベリング用に移動先ブロックを確保するよう、ブロック管理部２０７に対して予約登録を要求する。そして、ブロック管理部２０７が、当該予約登録を受け付けた場合に、フリーブロック管理部２１２が、割り当てリスト４０２の予約フラグを設定し、最も消去回数が多いフリーブロックを、ウェアレベリングによるデータの移動先として確保する。これにより、コンパクション部２０８以外の処理部（例えば、制御部２０２）が、当該フリーブロックを書き込み対象として使用することを抑止する。
【００５０】
本実施形態では、最も消去回数が多いフリーブロックを、ウェアレベリングによるデータの移動先として用いる例とするが、最も消去回数が多いフリーブロックを移動先とすることに制限するものではない。本実施形態ではウェアレベリング用のデータの移動先として１つのフリーブロックのみ予約するが、複数のフリーブロックを予約しても良い。このような例では、移動先ブロック予約登録部２０５が、消去回数が高いブロックから順に所定の数を、コンパクション部２０８によるデータの移動先として予約することが考えられる。
【００５１】
コンパクション部２０８は、対象ブロック移動制御部２２３と、コンパクション用ブロックＩＤ保持部２２２と、ウェアレベリング用ブロックＩＤ保持部２２１と、を備え、ＮＡＮＤインタフェース２０１を介して、ＮＡＮＤ型フラッシュメモリ１１０に対して、コンパクションを行う。
【００５２】
コンパクション用ブロックＩＤ保持部２２２は、対象ブロック移動制御部２２３によるコンパクションの移動元となるブロックを識別するブロックＩＤを保持する。図５は、コンパクション用ブロックＩＤ保持部２２２のテーブル構造の例を示した図である。図５に示すように、コンパクション用ブロックＩＤ保持部２２２は、コンパクションの対象となるブロックＩＤを複数格納する。
【００５３】
ウェアレベリング用ブロックＩＤ保持部２２１は、移動元ブロック予約登録部２０６により予約登録がなされたブロックのブロックＩＤを、データの移動元として保持する。図６は、ウェアレベリング用ブロックＩＤ保持部２２１のテーブル構造の例を示した図である。図６に示すように、ウェアレベリング用ブロックＩＤ保持部２２１は、ウェアレベリングの対象となるブロックＩＤを１つだけ格納する。
【００５４】
ところで、ウェアレベリングは、アクティブブロック内のデータが長期滞留した段階で行われる。このため、ウェアレベル判定部２０３が判定を行う場合に、ウェアレベリングの対象となるアクティブブロックは一定期間内に１つあるか否かである。このため、本実施形態では、ウェアレベリング用のブロックを１個だけ予約登録可能な例について説明するが、当然に複数以上予約登録が可能としても良い。この場合、図６に示すレコードの数と、フリーブロック管理部２１２の予約フラグを設定可能なブロックの数とが、複数となる。
【００５５】
対象ブロック移動制御部２２３は、ＮＡＮＤ型フラッシュメモリ１１０のブロックに格納されたデータを移動させて、複数のブロック以外のブロックにまとめるコンパクションを行うと共に、ウェアレベリング用ブロックＩＤ保持部２２１がブロックＩＤを保持している場合に、当該ブロックＩＤで識別されるブロックに格納されたデータを移動させる制御（ウェアレベリング）を行う。本実施形態にかかる対象ブロック移動制御部２２３は、フリーブロック管理部２１２から供給されるブロックＩＤで識別されるフリーブロックを移動先として用いる。
【００５６】
ところで、本実施形態では、ウェアレベリングのために、ウェアレベリング対象ブロック決定部２０４でウェアレベリング対象のブロックが決定された場合、当該ウェアレベリングの移動元のブロックと、移動先のブロックと、が予約登録されている。そして、その後、ウェアレベリング用ブロックＩＤ保持部２２１にブロックＩＤが予約登録されている場合、対象ブロック移動制御部２２３が、当該ブロックＩＤで識別されるブロックに格納されたデータを、フリーブロック管理部２１２から供給されるブロックＩＤで識別されるブロックに移動させる制御（ウェアレベリング）を、コンパクションより優先して行う。
【００５７】
つまり、本実施形態では、コンパクション部２０８の対象ブロック移動制御部２２３はコンパクションのための移動制御を行うが、移動先のブロックと移動元のブロックとがウェアレベリング用に予約登録された場合に限り、コンパクションよりウェアレベリングを優先的に行うよう切り替えることで、別々に予約登録された移動元のブロック及び移動先のブロックによる移動制御が可能となる。
【００５８】
そして、対象ブロック移動制御部２２３によるウェアレベリングの処理が終了し、ウェアレベリング用ブロックＩＤ保持部２２１でブロックＩＤが格納されなくなった場合に、対象ブロック移動制御部２２３は、コンパクションを行うよう制御を切り替える。そして、対象ブロック移動制御部２２３は、コンパクション用ブロックＩＤ保持部２２２が保持するブロックＩＤで識別されるブロックに格納されたデータを、フリーブロック管理部２１２から供給されるブロックＩＤで識別されるブロックに、有効データを移動する制御を引き続き行う。
【００５９】
また、対象ブロック移動制御部２２３が移動制御を行った場合、その旨をブロック管理部２０７に通知する。そして、ブロック管理部２０７は、当該通知に従って、アクティブブロック管理部２１１が管理するアクティブブロックと、フリーブロック管理部２１２が管理するフリーブロックと、を変更する制御を行う。
【００６０】
以上の構成を備えることで、ＮＡＮＤコントローラ１１１は、ウェアレベリングに基づいてブロック間のデータを移動させる機能を、コンパクション機能と共用して実現することが可能となる。
【００６１】
次に、本実施形態にかかるＮＡＮＤコントローラ１１１のウェアレベリングのための予約登録までの処理について説明する。図７は、本実施形態にかかるＮＡＮＤコントローラ１１１における上述した処理の手順を示すフローチャートである。
【００６２】
まず、制御部２０２からの要求を受け、ウェアレベリング判定部２０３が、アクティブブロック管理部２１１を参照し、ウェアレベリングが必要なブロックがあるか否かを判定する（ステップＳ７０１）。必要ないと判定した場合（ステップＳ７０１：Ｎｏ）、特に処理を行わずに終了する。
【００６３】
一方、ウェアレベリングが必要なブロックがあると判定した場合（ステップＳ７０１：Ｙｅｓ）、ウェアレベリング対象ブロック決定部２０４が、ウェアレベリングの対象となるアクティブブロックを決定する（ステップＳ７０２）。
【００６４】
そして、ＩＤ重複抑止部２３１は、コンパクション用ブロックＩＤ保持部２２２を参照し、ステップＳ７０２で決定されたアクティブブロックのブロックＩＤが、すでにコンパクションの対象として、コンパクション用ブロックＩＤ保持部２２２に登録済みか否かを判定する（ステップＳ７０３）。登録済みと判定した場合（ステップＳ７０３：Ｙｅｓ）、特に処理を行わずに終了する。
【００６５】
一方、ＩＤ重複抑止部２３１が登録済みではないと判定した場合（ステップＳ７０３：Ｎｏ）、移動先ブロック予約登録部２０５が、消去回数が最も多いフリーブロックの予約登録を行うために、フリーブロック管理部２１２の割り当てリスト４０２の予約フラグを“有”とする要求を、フリーブロック管理部２１２に行う（ステップＳ７０４）。
【００６６】
さらに、移動元ブロック予約登録部２０６は、ステップＳ７０２で決定された移動元のフリーブロックの予約登録を、コンパクション部２０８のウェアレベリング用ブロック保持部２２１に対して行う（ステップＳ７０５）。
【００６７】
上述した処理で、ウェアレベリングを行うための設定が完了したことになる。その後、当該設定に従って、コンパクション部２０８が、有効データの移動処理を行うことで、ウェアレベリングが行われることになる。
【００６８】
次に、本実施形態にかかるＮＡＮＤコントローラ１１１のフリーブロック管理部２１２のフリーブロックの供給手順について説明する。図８は、本実施形態にかかるフリーブロック管理部２１２における上述した処理の手順を示すフローチャートである。
【００６９】
まず、フリーブロック管理部２１２は、フリーブロックの供給の要求を受け付ける（ステップＳ８０１）。
【００７０】
次に、フリーブロック管理部２１２は、受け付けた供給が、コンパクション部２０８からのものであるか否かを判定する（ステップＳ８０２）。コンパクション部２０８からのものではない、つまり制御部２０２などの他の処理部からのフリーブロックを受け付けた場合（ステップＳ８０２：Ｎｏ）、フリーブロック管理部２１２は、割り当てリスト４０２に予約フラグが“有”に設定されているか否かを判定する（ステップＳ８０４）。そして、予約フラグが“有”に設定されている場合（ステップＳ８０４：Ｙｅｓ）、割り当てリスト４０２の先頭はウェアレベリング用に確保されているものとして、割り当てリスト４０２の２番目のフリーブロックを示すブロックＩＤを、制御部２０２などの他の処理部に対して提供する（ステップＳ８０５）。
【００７１】
一方、予約フラグが“無”に設定されている場合（ステップＳ８０４：Ｎｏ）、特にウェアレベリングにフリーブロックの確保がなされていないものとして、割り当てリスト４０２の先頭のフリーブロックを示すブロックＩＤを、制御部２０２などの他の処理部に対して提供する（ステップＳ８０３）。
【００７２】
また、ステップＳ８０２で、フリーブロック管理部２１２が、コンパクション部２０８からの要求と判定した場合（ステップＳ８０２：Ｙｅｓ）、割り当てリスト４０２の１番目のフリーブロックを示すブロックＩＤを、コンパクション部２０８に対して提供する（ステップＳ８０３）。
【００７３】
上述した処理手順により、割り当てリスト４０２の先頭に予約フラグが設定されている場合には、コンパクション部２０８に対して当該予約フラグが設定されたフリーブロックが供給されることになる。そして、コンパクション部２０８では、ウェアレベリングをコンパクションより優先的に行うことで、予約フラグが設定されたフリーブロックを、ウェアレベリングの移動先として用いた移動制御が可能となる。
【００７４】
次に、本実施形態にかかるコンパクション部２０８の対象ブロック移動制御部２２３における、データの移動制御の手順について説明する。図９は、本実施形態にかかる対象ブロック移動制御部２２３における上述した処理の手順を示すフローチャートである。
【００７５】
まず、対象ブロック移動制御部２２３は、コンパクション実行過程で、移動先ブロックがフルになったか否か、即ち新規のフリーブロックが必要か否かを判定する（ステップＳ９０１）。新規のフリーブロックが必要ないと判定された場合（ステップＳ９０１：Ｎｏ）、対象ブロック移動制御部２２３は、コンパクション用ブロックＩＤ保持部２２２から、移動元のブロックを示すブロックＩＤを読み出す（ステップＳ９０２）。
【００７６】
一方、対象ブロック移動制御部２２３は、フリーブロックが必要と判定した場合（ステップＳ９０１：Ｙｅｓ）、フリーブロック管理部２１２から、移動先となるフリーブロックを示すブロックＩＤの供給を受け付ける（ステップＳ９０３）。
【００７７】
その後、対象ブロック移動制御部２２３は、ウェアレベリング用ブロックＩＤ保持部２２１を参照し、ウェアレベリングの対象となるブロックＩＤが保持されているか否かを判定する（ステップＳ９０４）。そして、ウェアレベリング用の対象となるブロックＩＤが保持されていないと判定された場合（ステップＳ９０４：Ｎｏ）、対象ブロック移動制御部２２３は、コンパクション用ブロックＩＤ保持部２２２から、移動元のブロックを示すブロックＩＤを読み出す（ステップＳ９０２）。
【００７８】
一方、ウェアレベリング用の対象となるブロックＩＤが保持されていると判定された場合（ステップＳ９０４：Ｙｅｓ）、対象ブロック移動制御部２２３は、ウェアレベリング用ブロックＩＤ保持部２２１から、移動元のブロックを示すブロックＩＤを読み出す（ステップＳ９０５）。
【００７９】
その後、対象ブロック移動制御部２２３は、ステップＳ９０５又はステップＳ９０２で移動元として読み出されたブロックＩＤで示されたブロックから、移動先として供給等されたブロックＩＤで示されたブロックまでのブロック間のデータ移動を行う（ステップＳ９０６）。
【００８０】
上述した処理手順により、フリーブロックが必要となった際に、ウェアレベリングの対象が保持されている場合には、ウェアレベリングを優先的に行うこととした。
【００８１】
本実施形態にかかる記憶装置１０１では、ウェアレベリングとコンパクションに共通する、有効データの移動制御に関するリソースの共有化をすることで、開発コード量削減、デバッグ効率向上、品質向上といった効果が得られ、当該装置を実現するためのコストの削減が期待できる。
【００８２】
さらに、本実施形態にかかる記憶装置１０１では、ウェアレベリングとコンパクションとで同一のブロックを対象とすることが抑止されることで、制御全体の効率化および性能向上を図ることができる。
【００８３】
従来は、ウェアレベリングとコンパクションとを行う構成がそれぞれ独立して存在していた。このため、これらの構成が同一ブロックを処理対象とした場合に排他制御が困難であった。これに対し、本実施形態では、コンパクション部２０８内にて処理対象を一元管理し、同一ブロックＩＤの２重登録を抑止するため、制御全体の効率化および性能向上に有効に作用する。
【００８４】
（変形例）
上述した実施形態では、割り当てリスト４０２から供給されるブロックＩＤは、消去回数が多いものから順に供給されていた。しかしながら、このような供給に制限するものではなく、ソート条件が異なる割り当てリストを複数備え、必要に応じて供給するブロックＩＤを切り替えても良い。本変形例では、フリーブロック管理部が複数の割り当てリストを備える例について説明する。なお、他の構成は上記の実施形態と同様の構成を備えているものとして説明を省略する。
【００８５】
図１０は、変形例にかかるフリーブロック管理部１００１内のテーブル群の内部構成の例を示した図である。図１０に示すように、フリーブロック管理部１００１内は、返却ＦＩＦＯリスト４０１と、複数の割り当てリスト４０２、１０１１と、で構成されている。
【００８６】
割り当てリスト１０１１では、消去回数の少ない順に配置した例について説明するが、当該条件に制限するものではなく、他の条件に従って、フリーブロックを保持しても良い。
【００８７】
そして、フリーブロック管理部１００１は、コンパクション部２０８や制御部２０２によるブロック供給用途に応じて、フリーブロックを供給するための割り当てリスト４０２、１０１１を使い分ける。例えば、フリーブロック管理部１００１は、さらに、対象ブロック移動制御部２２３がコンパクションを行う場合に、フリーブロック管理部１００１は、消去された回数が高い順以外の条件、つまり割り当てリスト１０１１に格納されたブロックＩＤを、対象ブロック移動制御部２２３に供給しても良い。さらには、フリーブロック管理部１００１は、制御部２０２からフリーブロックの供給要求を受け付けた場合には、制御部２０２に対しては、常に割り当てリスト１０１１からフリーブロックを供給してもよい。
【００８８】
さらには、割り当てリストについて、ウェアレベリング予約されたブロックを、別リストとして管理する機構を追加しても良い。これにより、複数のウェアレベリング要求を受け付け可能となる。その際、割り当てリストについて、予約フラグを有さないより簡易な構成としても良い。
【００８９】
なお、本実施形態のＮＡＮＤコントローラ１１１は、ＮＡＮＤ型フラッシュメモリ１１０を制御するメモリ制御プログラムを、ＮＡＮＤコントローラ１１１内部のＲＯＭ等に予め組み込まれて提供してもよい。
【００９０】
このようなＮＡＮＤコントローラ１１１のメモリ制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００９１】
本実施形態のＮＡＮＤコントローラ１１１のメモリ制御プログラムは、上述した各部（制御部、ウェアレベリング判定部、ウェアレベリング対象ブロック決定部、移動先ブロック予約登録部、移動元ブロック予約登録部、ブロック管理部、コンパクション部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭからメモリ制御プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、制御部、ウェアレベリング判定部、ウェアレベリング対象ブロック決定部、移動先ブロック予約登録部、移動元ブロック予約登録部、ブロック管理部、コンパクション部が主記憶装置上に生成されるようになっている。
【００９２】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００９３】
１００  情報処理装置
１０１  記憶装置
１０２  ＣＰＵ
１０３  メインメモリ
１０４  メモリコントローラ
１０５  アドレスバス
１０６  データバス
１１０  ＮＡＮＤ型フラッシュメモリ
１１１  ＮＡＮＤコントローラ
２０１  ＮＡＮＤインタフェース
２０２  制御部
２０３  ウェアレベリング判定部
２０４  ウェアレベリング対象ブロック決定部
２０５  移動先ブロック予約登録部
２０６  移動元ブロック予約登録部
２０７  ブロック管理部
２０８  コンパクション部
２１１  アクティブブロック管理部
２１２、１００１  フリーブロック管理部
２１３  ブロック状態計測部
２１４  ブロック管理テーブル制御部
２２１  ウェアレベリング用ブロック保持部
２２２  コンパクション用ブロックＩＤ保持部
２２３  対象ブロック移動制御部
２３１  ＩＤ重複抑止部
【図１】
2012053553.tif 000003
【図２】
2012053553.tif 000004
【図３】
2012053553.tif 000005
【図４】
2012053553.tif 000006
【図５】
2012053553.tif 000007
【図６】
2012053553.tif 000008
【図７】
2012053553.tif 000009
【図８】
2012053553.tif 000010
【図９】
2012053553.tif 000011
【図１０】
2012053553.tif 000012
【手続補正書】
【提出日】平成23年10月31日(2011.10.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ消去の単位となるブロックを複数個含んでいる記憶手段内で、データが格納されたブロック毎に、前回消去された時期を示す消去時期情報及び当該ブロックの消去された回数を示す消去回数情報のいずれか１つ以上を含むブロック状態情報を記憶する状態記憶手段と、
前記状態記憶手段に記憶された前記ブロック状態情報に基づいて、ウェアレベリングが必要なブロックがあるか否かを判定する判定手段と、
前記判定部で前記ウェアレベリングが必要と判定された前記ブロックを識別するブロック識別情報を保持するウェアレベリングブロック保持手段と、
前記記憶手段の複数のブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめるコンパクションを行うと共に、前記ウェアレベリングブロック保持手段が前記ブロック識別情報を保持している場合に当該ブロック識別情報で識別されるブロックに格納されたデータを移動させるブロック移動制御手段と、
前記ブロック移動制御手段によるコンパクションの移動元となるブロックを識別するブロック識別情報を保持するコンパクションブロック保持手段と、
前記ウェアレベリングブロック保持手段及び前記コンパクションブロック保持手段のいずれか一方が保持している前記ブロック識別情報を、他方で保持することを抑止する抑止手段と、を備え、
前記ブロック移動制御手段は、前記ウェアレベリングブロック保持手段により保持された前記ブロック識別情報で識別されるブロックに格納されたデータを移動させるほか、さらに、前記コンパクションとして、前記コンパクションブロック保持手段により保持される前記ブロック識別情報で識別されるブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめる、
記憶制御装置。
【請求項２】
前記記憶手段内で、データが書き込まれていない前記ブロックのうち、ウェアレベリング又はコンパクションで移動先となるブロックを識別するブロック識別情報を保持する移動先保持手段を、さらに備え、
前記ブロック移動制御手段は、さらに、前記移動先保持部が保持する前記ブロック識別情報で識別されるブロックを移動先として、データを移動させること、
を特徴とする請求項１に記載の記憶制御装置。
【請求項３】
前記移動先保持手段は、前記ブロック識別情報に、当該ブロックの消去された回数を示す消去回数情報を対応付けて保持し、消去された回数が高いブロックを識別する前記ブロック識別情報から順に、前記ブロック移動制御手段に供給し、
前記ブロック移動制御手段は、前記ウェアレベリングブロック保持手段が前記ブロック識別情報を保持している場合、当該ブロック識別情報で識別されるブロックに格納されたデータを、前記移動先保持手段から供給される前記ブロック識別情報で識別されるブロックに移動させる制御を、コンパクションより優先して行うこと、
を特徴とする請求項２に記載の記憶制御装置。
【請求項４】
前記判定部で前記ウェアレベリングが必要と判定された場合に、前記移動先保持手段で保持される前記消去回数情報で消去回数が高いブロックから順に、前記ブロック移動制御手段によるデータの移動先として予約登録を行う登録手段を、さらに備え、
前記ブロック移動制御手段は、さらに、前記登録手段で予約登録されたブロックを、前記ウェアレベリングブロック保持手段で保持される前記ブロック識別情報で識別されるブロックに格納されたデータの移動先として用いること、
を特徴とする請求項３に記載の記憶制御装置。
【請求項５】
データ消去の単位となるブロックを複数個含んでいる記憶手段と、
前記記憶手段内で、データが格納されたブロック毎に、前回消去された時期を示す消去時期情報及び当該ブロックの消去された回数を示す消去回数情報のいずれか１つ以上を含むブロック状態情報を記憶する状態記憶手段と、
前記状態記憶手段に記憶された前記ブロック状態情報に基づいて、前記ウェアレベリングが必要なブロックがあるか否かを判定する判定手段と、
前記判定部で前記ウェアレベリングが必要と判定された前記ブロックを識別するブロック識別情報を保持するウェアレベリングブロック保持手段と、
前記記憶手段の複数のブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめるコンパクションを行うと共に、前記ウェアレベリングブロック保持手段が前記ブロック識別情報を保持している場合に当該ブロック識別情報で識別されるブロックに格納されたデータを移動させるブロック移動制御手段と、
前記ブロック移動制御手段によるコンパクションの移動元となるブロックを識別するブロック識別情報を保持するコンパクションブロック保持手段と、
前記ウェアレベリングブロック保持手段及び前記コンパクションブロック保持手段のいずれか一方が保持している前記ブロック識別情報を、他方で保持することを抑止する抑止手段と、を備え、
前記ブロック移動制御手段は、前記ウェアレベリングブロック保持手段により保持された前記ブロック識別情報で識別されるブロックに格納されたデータを移動させるほか、さらに、前記コンパクションとして、前記コンパクションブロック保持手段により保持される前記ブロック識別情報で識別されるブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめる、
記憶装置。
【請求項６】
記憶装置で実行されるデータ移動制御方法であって、
前記記憶装置は、データ消去の単位となるブロックを複数個含んでいる記憶手段内で、データが格納されたブロック毎に、前回消去された時期を示す消去時期情報及び当該ブロックの消去された回数を示す消去回数情報のいずれか１つ以上を含むブロック状態情報を記憶する状態記憶手段を備え、
前記記憶装置の判定手段が、前記状態記憶手段に記憶された前記ブロック状態情報に基づいて、前記ウェアレベリングが必要なブロックがあるか否かを判定する判定ステップと、
前記記憶装置のウェアレベリングブロック保持手段が、前記判定部で前記ウェアレベリングが必要と判定された前記ブロックを識別するブロック識別情報を保持するウェアレベリングブロック保持ステップと、
前記記憶装置のブロック移動制御手段が、前記記憶手段の複数のブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめるコンパクションを行うと共に、前記ウェアレベリングブロック保持手段が前記ブロック識別情報を保持している場合に当該ブロック識別情報で識別されるブロックに格納されたデータを移動させるブロック移動制御ステップと、
前記記憶装置のコンパクションブロック保持手段が、前記ブロック移動制御ステップによるコンパクションの移動元となるブロックを識別するブロック識別情報を保持するコンパクションブロック保持ステップと、
前記記憶装置の抑止手段が、前記ウェアレベリングブロック保持手段及び前記コンパクションブロック保持手段のいずれか一方が保持している前記ブロック識別情報を、他方で保持することを抑止する抑止ステップと、を有し、
前記ブロック移動制御ステップは、前記ウェアレベリングブロック保持手段により保持された前記ブロック識別情報で識別されるブロックに格納されたデータを移動させるほか、さらに、前記コンパクションとして、前記コンパクションブロック保持手段により保持される前記ブロック識別情報で識別されるブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめる、
データ移動制御方法。
【請求項７】
前記記憶装置の移動先保持手段は、前記記憶手段内で、データが書き込まれていない前記ブロックのうち、ウェアレベリング又はコンパクションで移動先となるブロックを識別するブロック識別情報を保持する移動先保持ステップを、さらに有し、
前記ブロック移動制御ステップは、さらに、前記移動先保持部が保持する前記ブロック識別情報で識別されるブロックを移動先として、データを移動させること、
を特徴とする請求項６に記載のデータ移動制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
実施形態の記憶制御装置は、状態記憶手段と、判定手段と、ウェアレベリングブロック保持手段と、ブロック移動制御手段と、コンパクションブロック保持手段と、抑止手段と、を備える。状態記憶手段は、データ消去の単位となるブロックを複数個含んでいる記憶手段内で、データが格納されたブロック毎に、前回消去された時期を示す消去時期情報及び当該ブロックの消去された回数を示す消去回数情報のいずれか１つ以上を含むブロック状態情報を記憶する。判定手段は、ブロック状態情報に基づいて、ウェアレベリングが必要なブロックがあるか否かを判定する。ウェアレベリングブロック保持手段は、判定部でウェアレベリングが必要と判定されたブロックを識別するブロック識別情報を保持する。ブロック移動制御手段は、複数のブロックに格納されたデータを移動させて、複数のブロック以外のブロックにまとめるコンパクションを行うと共に、ウェアレベリングブロック保持手段がブロック識別情報を保持している場合に当該ブロック識別情報で識別されるブロックに格納されたデータを移動させる。ブロック移動制御手段は、さらに、ウェアレベリングブロック保持手段により保持されたブロック識別情報で識別されるブロックに格納されたデータを移動させるほか、さらに、コンパクションとして、コンパクションブロック保持手段により保持されるブロック識別情報で識別されるブロックに格納されたデータを移動させて、前記複数のブロック以外のブロックにまとめる。