(57)【要約】【課題】寿命の低下を抑制することが可能なメモリシステムを実現する。【解決手段】実施形態によれば、メモリシステムは、複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去時間またはプログラム時間の少なくとも一つを監視し、第１の論理ブロックに、第１閾値によって規定される第１範囲内に収まっている消去時間またはプログラム時間を有する第１の物理ブロックと、第１範囲から外れている消去時間またはプログラム時間を有する第２の物理ブロックとが存在する場合、前記メモリシステムは、第１の論理ブロックを解体し、同じ範囲内に属する消去時間またはプログラム時間を有する第３の物理ブロックの集合によって新たな論理ブロックを再構築する。【選択図】図１２
2018142240.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、物理ブロックの集合を各々が含む複数の論理ブロックを管理し、論理ブロックの単位で消去動作を実行するコントローラとを具備し、
前記コントローラは、
前記複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去時間またはプログラム時間の少なくとも一つを監視し、
前記複数の論理ブロック内の第１の論理ブロックに、第１閾値によって規定される第１範囲内に収まっている消去時間またはプログラム時間を有する第１の物理ブロックと、前記第１範囲から外れている消去時間またはプログラム時間を有する第２の物理ブロックとが存在する場合、前記第１の論理ブロックを解体し、同じ範囲内に属する消去時間または同じ範囲内に属するプログラム時間を有する第３の物理ブロックの集合によって新たな論理ブロックを再構築するように構成されている、メモリシステム。
【請求項２】
前記コントローラは、
解体済みの各論理ブロックから割り当て解除された物理ブロックそれぞれを解体済み物理ブロック集合として管理し、
前記解体済み物理ブロック集合から前記第３の物理ブロックの集合を選択するように構成されている請求項１記載のメモリシステム。
【請求項３】
前記第３の物理ブロックの集合は、同じ範囲内に属する消去時間または同じ範囲内に属するプログラム時間を有し且つ同じ範囲内に属する消去回数を有する物理ブロックそれぞれを含む請求項１記載のメモリシステム。
【請求項４】
前記コントローラは、前記複数の論理ブロックそれぞれに対応する消去時間またはプログラム時間に基づいて、前記複数の論理ブロックの消去時間またはプログラム時間を均一化するためのウェアレベリングを実行するように構成されている請求項１記載のメモリシステム。
【請求項５】
前記コントローラは、
前記複数の論理ブロックそれぞれに対応する消去時間またはプログラム時間に基づいて、有効データを含まない論理ブロックの集合から、最も短い消去時間または最も長いプログラム時間を有する論理ブロックを選択し、
前記選択された論理ブロックを、ユーザデータが書き込まれるべき書き込み先論理ブロックとして優先的に割り当てるように構成されている請求項４記載のメモリシステム。
【請求項６】
前記コントローラは、
前記複数の論理ブロックそれぞれに対応する消去時間またはプログラム時間に基づいて、有効データを含む論理ブロックの集合から、最も短い消去時間または最も長いプログラム時間を有する論理ブロックを選択し、
前記選択された論理ブロック内の有効データを、前記選択された論理ブロックの消去時間よりも長い消去時間または前記選択された論理ブロックのプログラム時間よりも短いプログラム時間を有し、且つ有効データを含まない論理ブロックに移動するように構成されている請求項４記載のメモリシステム。
【請求項７】
複数の物理ブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、物理ブロックの集合を各々が含む複数の論理ブロックを管理し、論理ブロックの単位で消去動作を実行するコントローラとを具備し、
前記コントローラは、
前記複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去時間を監視し、
前記複数の論理ブロック内の第１の論理ブロックに、第１閾値によって規定される第１範囲内に収まっている消去時間を有する第１の物理ブロックと、前記第１範囲から外れている消去時間を有する第２の物理ブロックとが存在する場合、前記第１の論理ブロックを解体し、同じ範囲内に属する消去時間を有する第３の物理ブロックの集合によって新たな論理ブロックを再構築するように構成されている、メモリシステム。
【請求項８】
前記コントローラは、
解体済みの各論理ブロックから割り当て解除された物理ブロックそれぞれを解体済み物理ブロック集合として管理し、
前記解体済み物理ブロック集合から前記第３の物理ブロックの集合を選択するように構成されている請求項７記載のメモリシステム。
【請求項９】
前記第３の物理ブロックの集合は、同じ範囲内に属する消去時間を有し且つ同じ範囲内に属する消去回数を有する物理ブロックそれぞれを含む請求項７記載のメモリシステム。
【請求項１０】
前記コントローラは、前記複数の論理ブロックそれぞれに対応する消去時間に基づいて、前記複数の論理ブロックの消去時間を均一化するためのウェアレベリングを実行するように構成されている請求項７記載のメモリシステム。
【請求項１１】
前記コントローラは、前記第１閾値よりも大きい第２閾値以上の消去時間を有する物理ブロックを不良ブロックとして扱うように構成されている請求項７記載のメモリシステム。
【請求項１２】
前記コントローラは、前記不良ブロックを含む論理ブロックを解体するように構成されている請求項１１記載のメモリシステム。
【請求項１３】
前記不良ブロックは、新たな論理ブロックの再構築には用いられない請求項１１記載のメモリシステム。
【請求項１４】
複数の物理ブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、物理ブロックの集合を各々が含む複数の論理ブロックを管理し、論理ブロックの単位で消去動作を実行するコントローラとを具備し、
前記コントローラは、
前記複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去時間またはプログラム時間の少なくとも一つを監視し、
前記複数の論理ブロック内の第１の論理ブロックに、（ａ）第１の消去回数以下の消去回数を有し且つ第１の消去回数に対応する第１閾値によって規定される第１範囲内に収まっている消去時間またはプログラム時間を有する第１の物理ブロックと、前記第１の消去回数以下の消去回数を有し且つ前記第１範囲から外れている消去時間またはプログラム時間を有する第２の物理ブロックとが存在するか、（ｂ）前記第１の消去回数よりも多く且つ第２の消去回数以下の消去回数を有し且つ前記第２の消去回数に対応する第２閾値によって規定される第２範囲内に収まっている消去時間またはプログラム時間を有する第３の物理ブロックと、前記第１の消去回数よりも多く且つ第２の消去回数以下の消去回数を有し且つ前記第２範囲から外れている消去時間またはプログラム時間を有する第４の物理ブロックとが存在するか、（ｃ）前記第１の物理ブロックと前記第４の物理ブロックとが存在するか、または、（ｄ）前記第２の物理ブロックと前記第３の物理ブロックとが存在する場合に、前記第１の論理ブロックを解体し、同じ範囲内に属する消去時間または同じ範囲内に属するプログラム時間を有する第５の物理ブロックの集合によって新たな論理ブロックを再構築するように構成されている、メモリシステム。
【請求項１５】
前記コントローラは、
解体済みの各論理ブロックから割り当て解除された物理ブロックそれぞれを解体済み物理ブロック集合として管理し、
前記解体済み物理ブロック集合から前記第５の物理ブロックの集合を選択するように構成されている請求項１４記載のメモリシステム。
【請求項１６】
前記コントローラは、前記複数の論理ブロックそれぞれに対応する消去時間またはプログラム時間に基づいて、前記複数の論理ブロックの消去時間またはプログラム時間を均一化するためのウェアレベリングを実行するように構成されている請求項１４記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
【０００３】
このようなメモリシステムの一つとして、ＮＡＮＤ型フラッシュメモリを備えるソリッドステートドライブ（ＳＳＤ）が知られている。ＳＳＤは、様々なコンピューティングデバイスのメインストレージとして使用されている。
【０００４】
ＮＡＮＤ型フラッシュメモリにおいては、メモリセルそれぞれへのプログラム電圧または消去電圧の印加が反復されることに起因してこれらメモリセルのトンネル酸化膜の劣化（消耗）が生じうる。メモリセルの消耗（トンネル酸化膜の消耗）に起因してＮＡＮＤ型フラッシュメモリのプログラム動作または消去動作が失敗する可能性がある。
【０００５】
例えば、ＮＡＮＤ型フラッシュメモリ内のある物理ブロックの消去動作が成功しなかった場合には、消去動作の失敗を示すステータス（ｆａｉｌステータス）がＮＡＮＤ型フラッシュメモリからＳＳＤ内のコントローラに通知される。この場合、ＳＳＤにおいては、この物理ブロックは、利用できない不良ブロック（つまり、バッドブロック）として扱われる場合がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１９８４３３号公報
【特許文献２】特開２０１１−７０３４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、バッドブロックとして扱われる物理ブロックの数が増加すると、ＳＳＤの総物理容量が減少される。この結果、スペア領域として利用可能な容量（オーパプロビジョン）が減少されるため、ＳＳＤの性能および信頼性も劣化する。バッドブロックのさらなる増加によって総物理容量がユーザ容量を下回ったならば、ＳＳＤはもはやストレージとしての役割を果たすことができなくなる。よって、バッドブロックとして扱われる物理ブロックの数の増加は、ＳＳＤの寿命の低下を引き起こす要因となる。
【０００８】
本発明が解決しようとする課題は、寿命の低下を抑制することが可能なメモリシステムを提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、メモリシステムは、複数の物理ブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続され、物理ブロックの集合を各々が含む複数の論理ブロックを管理し、論理ブロックの単位で消去動作を実行するコントローラとを具備する。前記コントローラは、前記複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去時間またはプログラム時間の少なくとも一つを監視する。前記コントローラは、前記複数の論理ブロック内の第１の論理ブロックに、第１閾値によって規定される第１範囲内に収まっている消去時間またはプログラム時間を有する第１の物理ブロックと、前記第１範囲から外れている消去時間またはプログラム時間を有する第２の物理ブロックとが存在する場合、前記第１の論理ブロックを解体し、同じ範囲内に属する消去時間または同じ範囲内に属するプログラム時間を有する第３の物理ブロックの集合によって新たな論理ブロックを再構築する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係るメモリシステムの構成例を示すブロック図。
【図２】第１実施形態のメモリシステム内のＮＡＮＤインタフェースと複数のＮＡＮＤ型フラッシュメモリチップとの関係を示すブロック図。
【図３】第１実施形態のメモリシステムにおいて使用される論理ブロックの構成例を示す図。
【図４】第１実施形態のメモリシステム内のＮＡＮＤインタフェースによって実行される消去動作のシーケンスを示すタイミングチャート。
【図５】第１実施形態のメモリシステム内のＮＡＮＤインタフェースによって実行される書き込み動作のシーケンスを示すタイミングチャート。
【図６】第１実施形態のメモリシステムによって管理される論理ブロック管理テーブルを示す図。
【図７】第１実施形態のメモリシステムによって管理される物理ブロック消去時間テーブルを示す図。
【図８】第１実施形態のメモリシステムによって管理される論理ブロック消去時間テーブルを示す図。
【図９】第１実施形態のメモリシステムによって管理される物理ブロック消去回数テーブルを示す図。
【図１０】第１実施形態のメモリシステムによって管理される論理ブロック消去回数テーブルを示す図。
【図１１】第１実施形態のメモリシステムによって管理される、アクティブブロックプールとフリーブロックプールと解体済みブロックプールとの関係を示す図。
【図１２】第１実施形態のメモリシステムによって実行される論理ブロックの解体のアルゴリズムを説明するための図。
【図１３】第１実施形態のメモリシステムによって実行される論理ブロックの解体のアルゴリズムを説明するための図。
【図１４】第１実施形態のメモリシステムによって実行される論理ブロックの再構築のアルゴリズムを説明するための図。
【図１５】同じ論理ブロックに含まれる物理ブロックそれぞれの消去回数と消去時間との間の関係と第１実施形態で使用される論理ブロック解体条件とを説明するための図。
【図１６】同じ論理ブロックに含まれる物理ブロックそれぞれの消去回数と消去時間との間の関係と第１実施形態で使用される論理ブロック解体条件とを説明するための図。
【図１７】第１実施形態のメモリシステムによって実行される論理ブロック解体および再構築動作を示す図。
【図１８】第１実施形態のメモリシステムによって実行されるダイナミックウェアレベリング動作を示す図。
【図１９】第１実施形態のメモリシステムによって実行されるスタティックウェアレベリング動作を示す図。
【図２０】第１実施形態のメモリシステムによって実行される各物理ブロックの消去時間を監視し、その結果を保存する手順を示すフローチャート。
【図２１】第１実施形態のメモリシステムによって実行される論理ブロック解体および再構築動作の手順を示すフローチャート。
【図２２】同じ論理ブロックに含まれる物理ブロックそれぞれの消去回数と消去時間との間の関係と第２実施形態で使用される論理ブロック解体条件とを説明するための図。
【図２３】第２実施形態のメモリシステムによって実行される論理ブロック解体および再構築動作を示す図。
【図２４】第２実施形態のメモリシステムによって実行される、物理ブロックを消去時間および消去回数に基づいて分類する手順を示すフローチャート。
【図２５】第２実施形態のメモリシステムによって実行される論理ブロック解体動作の手順を示すフローチャート。
【図２６】同じ論理ブロックに含まれる物理ブロックそれぞれの消去回数とプログラム時間との間の関係と第３実施形態で使用される論理ブロック解体条件とを説明するための図。
【図２７】第３実施形態のメモリシステムによって管理される物理ブロックプログラム時間テーブルを説明するための図。
【図２８】第３実施形態のメモリシステムによって管理される論理ブロックプログラム時間テーブルを説明するための図。
【図２９】第３実施形態のメモリシステムによって実行される論理ブロック解体および再構築動作を示す図。
【図３０】第３実施形態のメモリシステムによって実行される各物理ブロックのプログラム時間を監視し、その結果を保存する手順を示すフローチャート。
【図３１】第３実施形態のメモリシステムによって実行される論理ブロック解体および再構築動作の手順を示すフローチャート。
【図３２】ホストの構成例を示すブロック図。
【図３３】ホストと第１、第２または第３実施形態のメモリシステムとを含むコンピュータの構成例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、実施形態を説明する。  
（第１実施形態）
まず、図１を参照して、第１実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
【００１２】
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み込むように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、ＮＡＮＤ型フラッシュメモリを備えたソリッドステートドライブ（ＳＳＤ）３として実現されている。
【００１３】
情報処理システム１は、ホスト（ホストデバイス）２と、ＳＳＤ３とを含む。ホスト２は、ＳＳＤ３をアクセスする情報処理装置（コンピューティングデバイス）である。ホスト２は、大量且つ多様なデータをＳＳＤ３に保存するストレージサーバ（サーバ）であってもよいし、パーソナルコンピュータであってもよい。
【００１４】
ＳＳＤ３は、ホスト２として機能する情報処理装置のメインストレージとして使用され得る。ＳＳＤ３は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１５】
ホスト２とＳＳＤ３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等を使用し得る。
【００１６】
ＳＳＤ３は、コントローラ４および不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）５を備える。ＳＳＤ３は、ランダムアクセスメモリ、例えば、ＤＲＡＭ６も備えていてもよい。
【００１７】
ＮＡＮＤ型フラッシュメモリ５は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。ＮＡＮＤ型フラッシュメモリ５は、２次元構造のＮＡＮＤ型フラッシュメモリであってもよいし、３次元構造のＮＡＮＤ型フラッシュメモリであってもよい。
【００１８】
ＮＡＮＤ型フラッシュメモリ５のメモリセルアレイは、複数の物理ブロックＢ０〜Ｂｍ−１を含む。物理ブロックＢ０〜Ｂｍ−１の各々は多数のページ（ここではページＰ０〜Ｐｎ−１）によって編成される。物理ブロックＢ０〜Ｂｍ−１は、アドレス指定可能な最小の消去単位として機能する。物理ブロックは、「消去ブロック」、「物理消去ブロック」、または単に「ブロック」と称されることもある。ページＰ０〜Ｐｎ−１の各々は、同一ワード線に接続された複数のメモリセルを含む。ページＰ０〜Ｐｎ−１は、データ書き込み動作およびデータ読み込み動作の単位である。
【００１９】
物理ブロックＢ０〜Ｂｍ−１は限られた消去回数を有している。消去回数は、プログラム／消去サイクル（Ｐｒｏｇｒａｍ／Ｅｒａｓｅ  ｃｙｃｌｅｓ）の数によって表されてもよい。ある物理ブロックの一つのプログラム／消去サイクル（Ｐｒｏｇｒａｍ／Ｅｒａｓｅ  ｃｙｃｌｅｓ）は、この物理ブロック内の全てのメモリセルを消去状態にするための消去動作と、この物理ブロックのページそれぞれにデータを書き込む書き込み動作（プログラム動作）とを含む。物理ブロックＢ０〜Ｂｍ−１は限られた消去回数（限られたプログラム／消去サイクル）を有しているので、物理ブロックＢ０〜Ｂｍ−１のプログラム／消去サイクルをできるだけ均一化することが好ましい。
【００２０】
本実施形態では、コントローラ４は、物理ブロックの集合を各々が含む複数の論理ブロックを管理し、論理ブロックの単位で消去動作を実行する。したがって、論理ブロックは、実際上、消去単位として機能する。よって、同じ論理ブロックに含まれる物理ブロックそれぞれの消去回数を同じにすることができる。
【００２１】
コントローラ４は、Ｔｏｇｇｌｅ、Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）のようなＮＡＮＤインタフェース１３を介して、不揮発性メモリであるＮＡＮＤ型フラッシュメモリ５に電気的に接続されている。ＮＡＮＤインタフェース１３は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたＮＡＮＤ制御回路として機能する。
【００２２】
ＮＡＮＤ型フラッシュメモリ５は、図２に示すように、複数のＮＡＮＤ型フラッシュメモリチップを含む。個々のＮＡＮＤ型フラッシュメモリチップは独立して動作可能である。このため、ＮＡＮＤ型フラッシュメモリチップは、並列動作可能な単位として機能する。図２においては、ＮＡＮＤインタフェース１３に１６個のチャンネルＣｈ．１〜Ｃｈ．１６が接続されており、１６個のチャンネルＣｈ．１〜Ｃｈ．１６の各々に２つのＮＡＮＤ型フラッシュメモリチップが接続されている場合が例示されている。この場合、チャンネルＣｈ．１〜Ｃｈ．１６に接続された１６個のＮＡＮＤ型フラッシュメモリチップ＃１〜＃１６がバンク＃０として編成されてもよく、またチャンネルＣｈ．１〜Ｃｈ．１６に接続された残りの１６個のＮＡＮＤ型フラッシュメモリチップ＃１７〜＃３２がバンク＃１として編成されてもよい。バンクは、複数のメモリモジュールをバンクインタリーブによって並列動作させるための単位として機能する。図２の構成例においては、１６チャンネルと、２つのバンクを使用したバンクインタリーブとによって、最大３２個のＮＡＮＤ型フラッシュメモリチップを並列動作させることができる。
【００２３】
一つの論理ブロックは、これに限定されないが、ＮＡＮＤ型フラッシュメモリチップ＃１〜＃３２から一つずつ選択される計３２個の物理ブロックを含んでいてもよい。図２においては、ハッチングによって示される物理ブロックそれぞれは、ある一つの論理ブロックに含まれる物理ブロックを表している。各ＮＡＮＤ型フラッシュメモリチップは、チャンネル番号およびバンク番号によって識別可能である。また、各物理ブロックは、チップ番号およびチップ内物理ブロック番号によって識別可能である。
【００２４】
なお、ＮＡＮＤ型フラッシュメモリチップ＃１〜＃３２の各々はマルチプレーン構成を有していてもよい。例えば、ＮＡＮＤ型フラッシュメモリチップ＃１〜＃３２の各々が、２つのプレーンを含むマルチプレーン構成を有する場合には、一つの論理ブロックは、ＮＡＮＤ型フラッシュメモリチップ＃１〜＃３２に対応する６４個のプレーンから一つずつ選択される計６４個の物理ブロックを含んでいてもよい。
【００２５】
ここで、図３に示すように、ある一つの論理ブロックが、３２個の物理ブロック（ＮＡＮＤ型フラッシュメモリチップ＃１内の物理ブロックＢｌｋ２、ＮＡＮＤ型フラッシュメモリチップ＃２内の物理ブロックＢｌｋ３、ＮＡＮＤ型フラッシュメモリチップ＃３内の物理ブロックＢｌｋ７、ＮＡＮＤ型フラッシュメモリチップ＃４内の物理ブロックＢｌｋ４、ＮＡＮＤ型フラッシュメモリチップ＃５内の物理ブロックＢｌｋ６、…ＮＡＮＤ型フラッシュメモリチップ＃３２内の物理ブロックＢｌｋ３）を含む場合を想定する。
【００２６】
上述したように、コントローラ４は、論理ブロックの単位で消去動作を実行する。したがって、同一の論理ブロックに含まれるこれら３２個の物理ブロックの消去動作は並列に実行される。
【００２７】
また、この論理ブロックへのデータ書き込みにおいては、コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ＃１内の物理ブロックＢｌｋ２のページ０、ＮＡＮＤ型フラッシュメモリチップ＃２内の物理ブロックＢｌｋ３のページ０、ＮＡＮＤ型フラッシュメモリチップ＃３内の物理ブロックＢｌｋ７のページ０、ＮＡＮＤ型フラッシュメモリチップ＃４内の物理ブロックＢｌｋ４のページ０、ＮＡＮＤ型フラッシュメモリチップ＃５内の物理ブロックＢｌｋ６のページ０、…ＮＡＮＤ型フラッシュメモリチップ＃３２内の物理ブロックＢｌｋ３のページ０という順序でデータを書き込んでもよい。これにより、最大３２ページへのデータ書き込みを並列に実行することができる。また、この論理ブロックからのデータ読み込みにおいても、最大で３２ページからのデータ読み込みを並列に実行することができる。
【００２８】
次に、図１のコントローラ４の構成について説明する。
【００２９】
コントローラ４は、複数のチャンネル（例えば１６個のチャンネル）を介して複数のＮＡＮＤ型フラッシュメモリチップに電気的に接続される。コントローラ４は、ＮＡＮＤ型フラッシュメモリ５（複数のＮＡＮＤ型フラッシュメモリチップ）を制御する。
【００３０】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能してもよい。このＦＴＬによって実行されるデータ管理には、（１）論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ページ単位のリード／ライトと論理ブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、ＳＳＤ３をアドレス指定するためにホストによって使用されるアドレスである。この論理アドレスとしては、ＬＢＡ（logical block address(addressing)）が使用され得る。
【００３１】
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル（論理物理アドレス変換テーブル）として機能するルックアップテーブル（ＬＵＴ）３２を用いて実行される。コントローラ４は、ルックアップテーブル（ＬＵＴ）３２を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータがライトされたＮＡＮＤ型フラッシュメモリ５内の最新の物理記憶位置を示す。アドレス変換テーブル（ＬＵＴ３２）は、ＳＳＤ３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。
【００３２】
ページへのデータ書き込みは、１消去サイクル当たり１回のみ可能である。このため、コントローラ４は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ４は、ルックアップテーブル（ＬＵＴ）３２を更新してこの論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。
【００３３】
ブロック管理には、バッドブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、物理ブロックそれぞれの消耗を均一化するための動作である。ガベージコレクションは、データを書き込むことが可能なフリーブロック（フリー論理ブロック）の個数を増やすため、有効データと無効データとが混在する幾つかの対象ブロック（対象論理ブロック）内の有効データを別のブロック（例えばフリー論理ブロック）に移動する。ここで、有効データとは、ＬＵＴ３２から参照されているデータ(すなわち論理アドレスから最新のデータとして紐付けられているデータ)であって、後にホスト２からリードされる可能性があるデータを意味する。無効データとは、もはやホスト２からリードされる可能性が無いデータを意味する。例えば、ある論理アドレスに関連付けられているデータは有効データであり、どの論理アドレスにも関連付けられていないデータは無効データである。
【００３４】
そして、コントローラ４は、ルックアップテーブル（ＬＵＴ）３２を更新して、移動された有効データの論理アドレスそれぞれを移動先の物理アドレスにマッピングする。有効データが別のブロックに移動されることによって無効データのみになったブロック（論理ブロック）はフリーブロック（フリー論理ブロック）として解放される。これによって、この論理ブロックはその消去後に再利用することが可能となる。
【００３５】
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４等を含んでもよい。これらＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４は、バス１０を介して相互接続されていてもよい。
【００３６】
ホストインタフェース１１は、ホスト２から様々なコマンド（例えば、ライトコマンド、リードコマンド、アンマップ（ＵＮＭＡＰ）／トリム（Ｔｒｉｍ）コマンド、等）を受信する。
【００３７】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、およびＤＲＡＭインタフェース１４を制御するように構成されたプロセッサである。ＣＰＵ１２は、ＳＳＤ３の電源オンに応答して、ＮＡＮＤ型フラッシュメモリ５に格納されている制御プログラム（ファームウェア）をＤＲＡＭ６上にロードし、このファームウェアを実行することによって様々な処理を行う。このＣＰＵ１２は、例えば、上述のＦＴＬの処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、ＦＴＬ処理およびコマンド処理の一部または全部は、コントローラ４内の専用ハードウェアによって実行してもよい。
【００３８】
ＣＰＵ１２は、消去時間モニタ部２１、プログラム時間モニタ部２２、論理ブロック解体／再構築部２３、およびウェアレベリング動作制御部２４として機能することができる。
【００３９】
消去時間モニタ部２１は、コントローラ４によって管理される上述の複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去時間を監視する。ある物理ブロックの消去時間とは、この物理ブロックに対する消去動作が完了するまでに要する時間を意味する。本実施形態では、消去動作は論理ブロックの単位で実行されるので、ある論理ブロックに対する消去動作が実行される時、この論理ブロックに含まれる全ての物理ブロックの消去動作が並列に実行される。そして、これら全ての物理ブロックの消去時間それぞれが消去時間モニタ部２１によって監視される。消去時間モニタ部２１は、ＮＡＮＤインタフェース１３内に含まれる消去時間測定部１３Ａから、各物理ブロックの消去時間を取得してもよい。
【００４０】
図４のタイミングチャートは、あるＮＡＮＤ型フラッシュメモリチップ内のある物理ブロックに対する消去動作シーケンスの例を示す。ＮＡＮＤインタフェース１３は、イレーズセットアップコマンド“６０ｈ”、消去動作が実行されるべき物理ブロックを指定するアドレス、イレーズ開始コマンド“Ｄ０ｈ”を、あるチャンネル内のＩＯバスを介してこのＮＡＮＤ型フラッシュメモリチップに送出する。そして、ＮＡＮＤインタフェース１３は、このＮＡＮＤ型フラッシュメモリチップのレディー／ビジー信号（ＲＹ／ＢＹ）を監視し、消去動作の完了を待つ。このＮＡＮＤ型フラッシュメモリチップにおいて物理ブロックの消去動作が実行されている間は、このＮＡＮＤ型フラッシュメモリチップはビジー状態に維持される。ＮＡＮＤ型フラッシュメモリチップがビジー状態の期間は、レディー／ビジー信号（ＲＹ／ＢＹ）は、例えば、ロウレベルに維持される。消去時間測定部１３Ａは、ＮＡＮＤ型フラッシュメモリチップが物理ブロックの消去動作によってビジー状態に維持されている時間（ｔＢＥＲＡＳＥ）を、この物理ブロックの消去時間として測定してもよい。この場合、消去時間測定部１３Ａは、消去動作シーケンスにおいてレディー／ビジー信号（ＲＹ／ＢＹ）がロウレベルに維持されている時間を測定し、測定された時間を消去時間モニタ部２１に報告してもよい。
【００４１】
ＮＡＮＤ型フラッシュメモリチップは、物理ブロックの消去動作が成功したか否かを検証するためのベリファイ動作を実行する。消去およびベリファイ動作は、消去動作が成功するか、あるいは消去およびベリファイ動作のループ回数が設定された最大ループ回数に達するまで繰り返される。消去およびベリファイ動作が完了すると、ＮＡＮＤ型フラッシュメモリチップは、レディー状態に戻る。この時、レディー／ビジー信号（ＲＹ／ＢＹ）は、例えば、ロウレベルからハイレベルに戻る。ＮＡＮＤ型フラッシュメモリチップがレディー状態になると、ＮＡＮＤインタフェース１３は、ステータスリードコマンド“７０ｈ”をＩＯバスを介してＮＡＮＤ型フラッシュメモリチップに送出する。消去動作が成功したならば、成功を示すステータス（ｐａｓｓステータス）がＮＡＮＤ型フラッシュメモリチップからＮＡＮＤインタフェース１３に通知される。一方、消去動作が成功しなかったならば、失敗を示すステータス（ｆａｉｌステータス）がＮＡＮＤ型フラッシュメモリチップからＮＡＮＤインタフェース１３に通知される。
【００４２】
あるいは、コントローラ４は、レディー／ビジー信号（ＲＹ／ＢＹ）を使用せずに、ｔＢＥＲＡＳＥを測定してもよい。この場合、コントローラ４は、消去動作の間、ＮＡＮＤ型フラッシュメモリチップにステータスリードコマンドを繰り返し発行することでポーリングを行ってもよい。
【００４３】
図１のプログラム時間モニタ部２２は、上述の複数の論理ブロックの各々に含まれる物理ブロックそれぞれに対するプログラム時間を監視する。ある物理ブロックのプログラム時間とは、この物理ブロックに含まれる各ページ（あるいは、各ワード線）へのデータ書き込み動作（プログラム動作）に要する時間（平均プログラム時間）を意味する。ここで、監視するプログラム時間は全ページの平均プログラム時間の他、複数ページの平均プログラム時間であってもよい。ここで、プログラム時間の平均値を算出するために対象となるページは連続する複数のページ、もしくは非連続的な複数のページであっても構わない。あるいは、監視するプログラム時間は全ワード線の平均プログラム時間の他、複数ワード線の平均プログラム時間であってもよい。例えば、ある物理ブロック内のあるページに対するデータ書き込み動作（プログラム動作）が実行されるべき時、このページへのプログラム動作に要する時間がプログラム時間モニタ部２２によって監視されてもよい。プログラム時間モニタ部２２は、ＮＡＮＤインタフェース１３内に含まれるプログラム時間測定部１３Ｂから、このプログラム時間を取得してもよい。
【００４４】
なお、プログラム動作においては、一つのメモリセルに対してデータが複数の段階（プログラム段階）を経て書き込まれるケースもある。これら複数のプログラム段階の例には、（１）マルチレベルセル（ＭＬＣ）におけるページ・バイ・ページプログラム動作におけるロアページプログラムとアッパーページプログラム、（２）トリプルレベルセル（ＴＬＣ）やクワドレベルセル（ＱＬＣ）における、ｆｏｇｇｙ−ｆｉｎｅプログラム動作、等がある。また、ｆｕｌｌ  ｓｅｑｕｅｎｃｅプログラム動作であっても、ワード線ごとに特性が異なるときには、ワード線によってプログラム時間が違うことがある。
【００４５】
したがって、物理ブロックのプログラム時間を求める処理においては、コントローラ４は、測定されたプログラム時間それぞれをプログラム段階、ワードライン等によって分類し、プログラム段階、ワードライン等毎に平均プログラム時間を求めてもよい。
【００４６】
図５のタイミングチャートは、あるＮＡＮＤ型フラッシュメモリチップ内のある物理ブロックのあるページへのプログラム動作シーケンスの例を示す。ＮＡＮＤインタフェース１３は、シリアル入力コマンド“８０ｈ”、プログラム動作が実行されるべき物理ブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“１０ｈ”を、あるチャンネル内のＩＯバスを介してこのＮＡＮＤ型フラッシュメモリチップに送出する。そして、ＮＡＮＤインタフェース１３は、このＮＡＮＤ型フラッシュメモリチップのレディー／ビジー信号（ＲＹ／ＢＹ）を監視し、プログラム動作の完了を待つ。このＮＡＮＤ型フラッシュメモリチップにおいてプログラム動作が実行されている間は、このＮＡＮＤ型フラッシュメモリチップはビジー状態に維持される。プログラム時間測定部１３Ｂは、ＮＡＮＤ型フラッシュメモリチップがプログラム動作によってビジー状態に維持されている時間（ｔＰＲＯＧ）を、プログラム時間として測定してもよい。この場合、プログラム時間測定部１３Ｂは、プログラム動作シーケンスにおいてレディー／ビジー信号（ＲＹ／ＢＹ）がロウレベルに維持されている時間を測定し、測定された時間をプログラム時間モニタ部２２に報告してもよい。
【００４７】
ＮＡＮＤ型フラッシュメモリチップは、プログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が設定された最大ループ回数に達するまで繰り返される。プログラムおよびベリファイ動作が完了すると、ＮＡＮＤ型フラッシュメモリチップは、レディー状態に戻る。ＮＡＮＤ型フラッシュメモリチップがレディー状態になると、ＮＡＮＤインタフェース１３は、ステータスリードコマンド“７０ｈ”をＩＯバスを介してＮＡＮＤ型フラッシュメモリチップに送出する。プログラム動作が成功したならば、成功を示すステータス（ｐａｓｓステータス）がＮＡＮＤ型フラッシュメモリチップからＮＡＮＤインタフェース１３に通知される。一方、プログラム動作が成功しなかったならば、失敗を示すステータス（ｆａｉｌステータス）がＮＡＮＤ型フラッシュメモリチップからＮＡＮＤインタフェース１３に通知される。
【００４８】
図１の論理ブロック解体／再構築部２３は、論理ブロック毎に、この論理ブロックに、異なる消耗度を有する物理ブロックが混在しているか否かを判定する。具体的には、論理ブロック解体／再構築部２３は、処理対象の論理ブロックに含まれる物理ブロックそれぞれの消去時間またはプログラム時間の少なくとも一つに基づいて、処理対象の論理ブロックに、ある設定された範囲内に属する消去時間またはプログラム時間を有する物理ブロックと、別の設定された範囲内に属する消去時間またはプログラム時間を有する別の物理ブロックとが存在するか否かを判定する。
【００４９】
ある物理ブロックの消耗が進むにつれて、この物理ブロックの消去時間は長くなる傾向がある。一方、ある物理ブロックの消耗が進むにつれて、この物理ブロックのプログラム時間（例えば、平均プログラム時間）は短くなる傾向がある。
【００５０】
なぜなら、物理ブロックの消耗が進むにつれて、この物理ブロック内のメモリセルそれぞれのトンネル酸化膜の劣化（トラップ生成）が起こるからである。トンネル酸化膜の劣化（トラップ生成）は、消去動作が成功するまでに繰り返される消去およびベリファイ動作のループ回数の増加を引き起こす。また、トンネル酸化膜の劣化（トラップ生成）は、プログラム動作の成功までに繰り返されるプログラムおよびベリファイ動作のループ回数の減少も引き起こす。よって、物理ブロックの消去時間またはプログラム時間は、この物理ブロックの消耗度を示す指標となり得る。また、消去時間とプログラム時間の替りに、消去ループ回数とプログラムループ回数を代用してもよい。また、消去時間と消去ループ回数の比もしくはプログラム時間とプログラムループ回数の比を、消耗度指標として導入しても構わない。
【００５１】
もし、ある論理ブロックに特性の悪い物理ブロック（消耗を受けやすい物理ブロック）が含まれていたならば、この物理ブロックは、この論理ブロック内の他の物理ブロックよりも早く消耗する。この結果、この物理ブロックの消去時間は、この論理ブロック内の他の物理ブロックの消去時間に比べて長くなる。同様に、この物理ブロックのプログラム時間は、この論理ブロック内の他の物理ブロックのプログラム時間よりも短くなる。
【００５２】
上述したように、一つの論理ブロックを構成する物理ブロックの集合には、特性の悪い物理ブロック（消耗を受けやすい物理ブロック）が含まれているケースがあるので、異なる消耗度を有する物理ブロックが同じ論理ブロック内に混在されるという状況が生じうる。異なる消耗度を有する物理ブロックが混在される論理ブロックを使用し続けると、高い消耗度を有する物理ブロック（つまり特性の悪い物理ブロック）の消耗が限界値に早く達しやすくなり、やがてこの物理ブロックの消去動作またはプログラム動作が正常に実行できなくなる。この場合、この物理ブロックを、利用できない不良ブロック（つまり、バッドブロック）として扱うことが余儀なくされる。この結果、ＳＳＤ３の総物理容量の低下、さらにはＳＳＤ３の性能および信頼性の劣化が引き起こされる。
【００５３】
そこで、本実施形態では、もし処理対象の論理ブロックに、ある設定された閾値によって規定される範囲内に収まっている消去時間またはプログラム時間を有する物理ブロックと、この範囲から外れている消去時間またはプログラム時間を有する別の物理ブロックとが存在することが判定されたならば、論理ブロック解体／再構築部２３は、この論理ブロックを解体する。そして、論理ブロック解体／再構築部２３は、ある同じ範囲内に属する消去時間またはある同じ範囲内に属するプログラム時間を有する物理ブロックの集合によって、新たな論理ブロックを再構築する。
【００５４】
ここで、論理ブロックを解体するとは、この論理ブロックに含まれる物理ブロックそれぞれをこの論理ブロックから解放することを意味する。また、新たな論理ブロックを再構築するとは、物理ブロックの集合を含む一つの論理ブロックを新たに作成することを意味する。
【００５５】
論理ブロック解体／再構築部２３の動作により、特性の悪い物理ブロックが実際にバッドブロックになる前に、この特性の悪い物理ブロックが属する論理ブロックを積極的に解体することが可能となる。この積極的な論理ブロック解体と新たな論理ブロックの再構築とにより、個々の論理ブロックに含まれる物理ブロックそれぞれの消耗度を同程度に揃えることが可能となる。つまり、論理ブロック解体および新たな論理ブロックの再構築により、同じ論理ブロックに属する物理ブロックそれぞれの消耗度（消去時間／プログラム時間、あるいは消去ループ回数／プログラムループ回数）を同程度の消耗度（同程度の消去時間／プログラム時間、あるいは同程度の消去ループ回数／プログラムループ回数）に揃えることが可能となる。
【００５６】
したがって、本実施形態では、同じ論理ブロックに属する物理ブロックそれぞれの消耗度を均一化することができるので、同じ論理ブロック内のある特定の物理ブロックがバッドブロックになるタイミングを遅らせることができる。
【００５７】
ウェアレベリング動作制御部２４は、論理ブロックの解体および新たな論理ブロックの再構築により各論理ブロックが同程度の消耗度（同程度の消去時間、または同程度のプログラム時間、等）を有する物理ブロックの集合によって編成されることを利用して、複数の論理ブロックの消去時間または複数の論理ブロックのプログラム時間を均一化するためのウェアレベリングを実行する。ここで、複数の論理ブロックの消去時間を均一化するとは、最大消去時間を有する論理ブロックと最小消去時間を有する論理ブロックとの間の消去時間差を減少することを意味する。また、複数の論理ブロックのプログラム時間を均一化するとは、最大の平均プログラム時間を有する論理ブロックと最小の平均プログラム時間を有する論理ブロックとの間のプログラム時間差を減少することを意味する。
【００５８】
通常のウェアレベリング動作では、最大消去回数を有する論理ブロックと最小消去回数を有する論理ブロックとの間の消去回数の差を減少するための動作が実行される。しかし、消去回数のみを使用する通常のウェアレベリング動作では、論理ブロックの消耗を同程度に揃えることは困難である。なぜなら、たとえ消去回数が同じ論理ブロック同士であっても、これら論理ブロックに含まれる物理ブロックの実際の消耗度は互い異なる場合があるからである。
【００５９】
本実施形態では、複数の論理ブロックの消去時間またはプログラム時間を均一化するためのウェアレベリングが実行されるので、複数の論理ブロックそれぞれの消耗を同程度に揃えることができる。
【００６０】
図１のＤＲＡＭインタフェース１４は、ＤＲＡＭ６をアクセス制御するように構成されたＤＲＡＭコントローラである。ＤＲＡＭ６の記憶領域は、ライトバッファ（ＷＢ）３１、ルックアップテーブル（ＬＵＴ）３２、システム管理情報３３を格納するために利用される。システム管理情報３３は、上述の論理ブロック解体／再構築に必要な様々な管理情報を含む。
【００６１】
次に、ホスト２の構成について説明する。
【００６２】
ホスト２は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ４１、オペレーティングシステム（ＯＳ）４２、ファイルシステム４３等が含まれる。
【００６３】
一般に知られているように、オペレーティングシステム（ＯＳ）４２は、ホスト２全体を管理し、ホスト２内のハードウェアを制御し、アプリケーションがハードウェアおよびＳＳＤ３を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
【００６４】
ファイルシステム４３は、ファイルの操作（作成、保存、更新、削除等）のための制御を行うために使用される。例えば、ＺＦＳ、Ｂｔｒｆｓ、ＸＦＳ、ｅｘｔ４、ＮＴＦＳなどがファイルシステム４３として使用されてもよい。あるいは、ファイルオブジェクトシステム（例えば、Ceph Object Storage Daemon）、Key Value Store System (例えば、Rocks DB) がファイルシステム４３として使用されても良い。
【００６５】
様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ４１上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
【００６６】
アプリケーションソフトウェアレイヤ４１がリードコマンドまたはライトコマンドのようなリクエストをＳＳＤ３に送出することが必要な時、アプリケーションソフトウェアレイヤ４１は、ＯＳ４２にそのリクエストを送出する。ＯＳ４２はそのリクエストをファイルシステム４３に送出する。ファイルシステム４３は、そのリクエストを、コマンド（リードコマンド、ライトコマンド等）にトランスレートする。ファイルシステム４３は、コマンドを、ＳＳＤ３に送出する。ＳＳＤ３からのレスポンスが受信された際、ファイルシステム４３は、そのレスポンスをＯＳ４２に送出する。ＯＳ４２は、そのレスポンスをアプリケーションソフトウェアレイヤ４１に送出する。
【００６７】
図６は、論理ブロック管理テーブル３３Ａを示す。
【００６８】
論理ブロック管理テーブル３３Ａは、システム管理情報３３の一部であり、各論理ブロックに対応する複数の物理ブロックアドレスを管理する。
【００６９】
論理ブロック管理テーブル３３Ａは、複数のエントリを含む。これらエントリの各々は、論理ブロックＩＤフィールドと、複数（例えば３２個）の物理ブロックＩＤフィールドとを含んでもよい。論理ブロックＩＤフィールドは、論理ブロックＩＤを保持する。論理ブロックＩＤは、個々の論理ブロックを一意に識別可能な識別子である。論理ブロックＩＤは、例えば、複数の論理ブロックにそれぞれ割り当てられた連続する数字（論理ブロック番号）であってもよい。
【００７０】
複数（例えば３２個）の物理ブロックＩＤフィールドは、対応する論理ブロックに含まれる複数の物理ブロックそれぞれに対応する複数の物理ブロックＩＤを保持する。物理ブロックＩＤは、個々の物理ブロックを一意に識別可能な識別子である。物理ブロックＩＤは、例えば、チップ番号とチップ内ブロック番号との組み合わせによって表現されてもよい。チップ番号は、チャンネル番号とバンク番号との組み合わせによって表現されてもよい。
【００７１】
図２で説明したように、ＳＳＤ３が１６チャンネル×２バンクで構成されているケースにおいては、各ＮＡＮＤ型フラッシュメモリチップがもしシングルプレーン構成であるならば、各論理ブロックは、３２個のＮＡＮＤ型フラッシュメモリチップから１つずつ選出される合計３２個の物理ブロックによって構成される。
【００７２】
例として、論理ブロック＃１が、図６の下部に示されているように、チャンネルｃｈ１とバンクｂｋ０の組みに属するＣｈｉｐ１内の物理ブロックＢｌｋ２と、チャンネルｃｈ２とバンクｂｋ０の組みに属するＣｈｉｐ２内の物理ブロックＢｌｋ３と、チャンネルｃｈ３とバンクｂｋ０の組みに属するＣｈｉｐ３内の物理ブロックＢｌｋ７と、…、チャンネルｃｈ１とバンクｂｋ１の組みに属するＣｈｉｐ１７内の物理ブロックＢｌｋ４と、チャンネルｃｈ２とバンクｂｋ１の組みに属するＣｈｉｐ１８内の物理ブロックＢｌｋ１と、チャンネルｃｈ３とバンクｂｋ１の組みに属するＣｈｉｐ１９内の物理ブロックＢｌｋ６と、…から構成される場合を想定する。この場合、論理ブロック管理テーブル３３Ａの論理ブロック＃１に対応するエントリには、（Ｃｈｉｐ１，Ｂｌｋ２）、（Ｃｈｉｐ２，Ｂｌｋ３）、（Ｃｈｉｐ３，Ｂｌｋ７）、…、（Ｃｈｉｐ１７，Ｂｌｋ４）、（Ｃｈｉｐ１８，Ｂｌｋ１）、（Ｃｈｉｐ１９，Ｂｌｋ６）、…が登録される。
【００７３】
（Ｃｈｉｐ１，Ｂｌｋ２）は、チャンネルｃｈ１とバンクｂｋ０の組に属するＣｈｉｐ１内の物理ブロックＢｌｋ２を示す。（Ｃｈｉｐ２，Ｂｌｋ３）は、チャンネルｃｈ２とバンクｂｋ０の組に属するＣｈｉｐ２内の物理ブロックＢｌｋ３を示す。（Ｃｈｉｐ３，Ｂｌｋ７）は、チャンネルｃｈ３とバンクｂｋ０の組に属するＣｈｉｐ３内の物理ブロックＢｌｋ７を示す。（Ｃｈｉｐ１７，Ｂｌｋ４）は、チャンネルｃｈ１とバンクｂｋ１の組に属するＣｈｉｐ１７内の物理ブロックＢｌｋ４を示す。（Ｃｈｉｐ１８，Ｂｌｋ１）は、チャンネルｃｈ２とバンクｂｋ１の組に属するＣｈｉｐ１８内の物理ブロックＢｌｋ１を示す。（Ｃｈｉｐ１９，Ｂｌｋ６）は、チャンネルｃｈ３とバンクｂｋ１の組に属するＣｈｉｐ１９内の物理ブロックＢｌｋ６を示す。
【００７４】
図７は、物理ブロック消去時間テーブル３３Ｂを示す。
【００７５】
物理ブロック消去時間テーブル３３Ｂは、システム管理情報３３の一部であり、上述の複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去時間（ｔＢＥＲＡＳＥ）を管理する。各物理ブロックの消去時間（ｔＢＥＲＡＳＥ）は、消去時間モニタ部２１が各物理ブロックの消去動作のシーケンスを監視することによって得られる。
【００７６】
例として、図７には、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ１）の物理ブロックの消去時間は、２．５ミリ秒、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ２）の物理ブロックの消去時間は、２．７ミリ秒、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ３）の物理ブロックの消去時間は、２．６ミリ秒、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ４）の物理ブロックの消去時間は、５．０ミリ秒であることが示されている。
【００７７】
図８は、論理ブロック消去時間テーブル３３Ｃを示す。
【００７８】
論理ブロック消去時間テーブル３３Ｃは、システム管理情報３３の一部であり、上述の複数の論理ブロックそれぞれに対応する消去時間（ｔＢＥＲＡＳＥ）を管理する。本実施形態では、一つの論理ブロックに含まれる物理ブロックそれぞれの消去時間（ｔＢＥＲＡＳＥ）は、基本的には、同程度に揃えられる。したがって、各論理ブロックに対応する消去時間（ｔＢＥＲＡＳＥ）としては、この同程度の消去時間（ｔＢＥＲＡＳＥ）を表すことが可能な任意の値を使用し得る。例えば、各論理ブロックに対応する消去時間（ｔＢＥＲＡＳＥ）は、平均消去時間、または、最大消去時間であってもよい。ある論理ブロックに対応する平均消去時間は、この論理ブロックに含まれる物理ブロックそれぞれの消去時間の平均値を示す。ある論理ブロックに対応する最大消去時間は、この論理ブロックに含まれる物理ブロックの消去時間の中で、最も長い消去時間を示す。なお、tBERASEはＮＡＮＤ型フラッシュメモリ５の消去動作によって種々の値を取り得る。具体的には、消去電圧VERA、消去ステップアップ電圧DVERA、消去パルス印加時間STCなどの値に依存する。
【００７９】
図９は、物理ブロック消去回数テーブル３３Ｄを示す。
【００８０】
物理ブロック消去回数テーブル３３Ｄは、システム管理情報３３の一部であり、上述の複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去回数（例えば、プログラム／消去サイクルの数）を管理する。
【００８１】
例として、図９には、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ１）の物理ブロックのプログラム／消去サイクルの数が１００回、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ２）の物理ブロックのプログラム／消去サイクルの数が１０５回、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ３）の物理ブロックのプログラム／消去サイクルの数が１０３回、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ４）の物理ブロックのプログラム／消去サイクルの数が９９回であることが示されている。 
図１０は、論理ブロック消去回数テーブル３３Ｅを示す。
【００８２】
論理ブロック消去回数テーブル３３Ｅは、システム管理情報３３の一部であり、上述の複数の論理ブロックそれぞれの消去回数（例えば、平均プログラム／消去サイクルの数、または最大プログラム／消去サイクルの数）を管理する。本実施形態では、ある論理ブロックに含まれる物理ブロックそれぞれの消去回数は、この論理ブロックの解体が行われない限りは、同じである。一方、新たな論理ブロックが再構築された場合には、この新たな論理ブロックに、異なる消去回数を有する物理ブロックの集合が含まれる可能性がある。したがって、各論理ブロックに対応する消去回数としては、例えば、平均消去回数（平均プログラム／消去サイクルの数）または最大消去回数（最大プログラム／消去サイクルの数）が使用されてもよい。ある論理ブロックに対応する平均消去回数は、この論理ブロックに含まれる物理ブロックそれぞれの消去回数の平均値を示す。ある論理ブロックに対応する最大消去回数は、この論理ブロックに含まれる物理ブロックの消去回数の中で、最も多い消去回数を示す。
【００８３】
図１１は、コントローラ４によって管理される、アクティブブロックプール５１とフリーブロックプール５２と解体済みブロックプール５３との関係を示す。
【００８４】
各論理ブロックの状態は、有効データを格納しているアクティブブロックと、有効データを格納していないフリーブロックとに大別される。アクティブブロックである各論理ブロックは、アクティブブロックプール５１と称されるリストによって管理される。一方、フリーブロックである各論理ブロックは、フリーブロックプール５２と称されるリストによって管理される。
【００８５】
解体済みブロックプール５３は、解体済みの各論理ブロックから割り当て解除された物理ブロックそれぞれを管理するためのリストである。
【００８６】
本実施形態では、コントローラ４は、フリーブロックプール５２から選択された一つの論理ブロック（フリーブロック）を、ホスト２から受信されたライトデータが書き込まれるべき書き込み先論理ブロックとして割り当てる。この場合、コントローラ４は、まず、選択された論理ブロック（フリーブロック）内の各物理ブロックに対する消去動作を実行し、これによってこの論理ブロック内の各物理ブロックを、書き込み可能な消去状態にする。現在の書き込み先論理ブロックの全体がホスト２からのライトデータで満たされると、コントローラ４は、現在の書き込み先論理ブロックをアクティブブロックプール５１に移動し、フリーブロックプール５２から新たな一つの論理ブロック（フリーブロック）を新たな書き込み先論理ブロックとして割り当てる。
【００８７】
アクティブブロックプール５１内のある論理ブロック内の全ての有効データが、データ更新、アンマップ、ガベージコレクション等によって無効化されると、コントローラ４は、この論理ブロックをフリーブロックプール５２に移動する。
【００８８】
コントローラ４は、必要に応じて、フリーブロックプール５２内のある論理ブロックに対する消去動作を実行する。この時、コントローラ４の消去時間モニタ部２１は、この論理ブロックに含まれる物理ブロックそれぞれの消去時間を監視してもよく、さらに、コントローラ４の論理ブロック解体／再構築部２３は、この論理ブロックに含まれる物理ブロックそれぞれの監視された消去時間に基づいて、この論理ブロックに、消耗度合いが異なる物理ブロックが混在されているかを判定する。具体的には、論理ブロック解体／再構築部２３は、この論理ブロックに、ある設定された閾値によって規定される範囲内に収まっている消去時間を有する物理ブロックと、この範囲から外れている消去時間を有する別の物理ブロックとが存在するか否かを判定してもよい。閾値によって規定される範囲内に収まっている消去時間を有する物理ブロックは、比較的消耗度の小さい「消耗度小」の物理ブロックとして決定されてもよく、また、この範囲から外れている消去時間を有する物理ブロックは、比較的消耗度の大きい「消耗度大」の物理ブロックとして決定されてもよい。この論理ブロックに、閾値によって規定される範囲内に収まっている消去時間を有する物理ブロックと、この範囲から外れている消去時間を有する別の物理ブロックとが存在することが判定されたならば、論理ブロック解体／再構築部２３は、この論理ブロックを解体すべき論理ブロックとして予約してもよい。
【００８９】
解体すべき論理ブロックとして予約された論理ブロックを解体する処理では、論理ブロック解体／再構築部２３は、この論理ブロックを解体し、解体された論理ブロックに含まれていた物理ブロックそれぞれを、解体済みブロックプール５３に移動する。つまり、解体された論理ブロックに含まれていた物理ブロックそれぞれは、解体済みブロックプール５３によって管理される。解体済みブロックプール５３においては、物理ブロックそれぞれは、チャンネルとバンクの組別に管理されてもよい。さらに、これら物理ブロックそれぞれは、チャンネルとバンクの組毎に、その消耗度別に管理されていてもよい。例えば、論理ブロック＃１を解体する処理では、論理ブロック＃１を構成していた物理ブロックそれぞれがチャンネル、バンク、消耗度別に分類されて、解体済みブロックプール５３にプールされる。この解体処理のアルゴリズムの詳細は図１２、図１３を参照して後述する。
【００９０】
論理ブロック＃１を解体する処理では、論理ブロック解体／再構築部２３は、図６の論理ブロック管理テーブル３３Ａ内の論理ブロック＃１に対応するエントリの内容（登録されている論理ブロック＃１のＩＤおよび論理ブロック＃１を構成していた各物理ブロックＩＤ）を削除してもよい。
【００９１】
この後、論理ブロック解体／再構築部２３は、解体済みブロックプール５３内の物理ブロック集合（解体済み物理ブロック集合）から、同じ範囲内に属する消去時間を有する物理ブロックの集合を選択する。この場合、論理ブロック解体／再構築部２３は、解体済みブロックプール５３から、同じ範囲内に属する消去時間を有し（つまり同程度の消耗度を有し）、且つ異なるチャンネルとバンクの組にそれぞれ属する複数の物理ブロックを選択する。そして、論理ブロック解体／再構築部２３は、これら選択された物理ブロックによって、新たな論理ブロックを再構築する。この再構築処理のアルゴリズムの詳細は図１４を参照して後述する。
【００９２】
新たな論理ブロックを再構築する処理では、論理ブロック解体／再構築部２３は、再構築された論理ブロックに対応するエントリを図６の論理ブロック管理テーブル３３Ａに追加してもよい。この論理ブロックの論理ブロックＩＤに対応する各物理ブロックＩＤフィールドには、選択された各物理ブロックの物理ブロックＩＤが登録される。例えば、論理ブロック＃Ｘが再構築された場合には、論理ブロック管理テーブル３３Ａに論理ブロック＃Ｘ用のエントリが追加され、このエントリに論理ブロックＩＤ＃Ｘおよび論理ブロック＃Ｘを構成する物理ブロックそれぞれの物理ブロックＩＤが登録される。そして、論理ブロック解体／再構築部２３は、再構築された新たな論理ブロック（選択された物理ブロックそれぞれ）を、フリーブロックプール５２に移動する。
【００９３】
次に、図１２、図１３を参照して、論理ブロックを解体する処理を説明する。ここでは各論理ブロックが、２チャンネル×２バンク構成の合計４個のＮＡＮＤ型フラッシュメモリチップから１つずつ選出される合計４個の物理ブロックによって構成されている場合について説明する。
【００９４】
図１２においては、論理ブロックＡは、物理ブロックａ、物理ブロックｂ、物理ブロックｃ、および物理ブロックｄから構成されている。物理ブロックａはチャンネルｃｈ１、バンクｂｋ０の組に属する。物理ブロックｂはチャンネルｃｈ２、バンクｂｋ０の組に属する。物理ブロックｃはチャンネルｃｈ１、バンクｂｋ１の組に属する。物理ブロックｄはチャンネルｃｈ２、バンクｂｋ１の組に属する。
【００９５】
解体済みブロックプール５３は、８つのプール、つまりプール（ｃｈ１、ｂｋ０、消耗度小）、プール（ｃｈ１、ｂｋ０、消耗度大）、プール（ｃｈ２、ｂｋ０、消耗度小）、プール（ｃｈ２、ｂｋ０、消耗度大）、プール（ｃｈ１、ｂｋ１、消耗度小）、プール（ｃｈ１、ｂｋ１、消耗度大）、プール（ｃｈ２、ｂｋ１、消耗度小）、プール（ｃｈ２、ｂｋ１、消耗度大）を有していてもよい。
【００９６】
プール（ｃｈ１、ｂｋ０、消耗度小）は、チャンネルｃｈ１、バンクｂｋ０の組に属し且つ「消耗度小」の物理ブロック群を管理するためのプールである。プール（ｃｈ１、ｂｋ０、消耗度大）は、チャンネルｃｈ１、バンクｂｋ０の組に属し且つ「消耗度大」の物理ブロック群を管理するためのプールである。
【００９７】
プール（ｃｈ２、ｂｋ０、消耗度小）は、チャンネルｃｈ２、バンクｂｋ０の組に属し且つ「消耗度小」の物理ブロック群を管理するためのプールである。プール（ｃｈ２、ｂｋ０、消耗度大）は、チャンネルｃｈ２、バンクｂｋ０の組に属し且つ「消耗度大」の物理ブロック群を管理するためのプールである。
【００９８】
プール（ｃｈ１、ｂｋ１、消耗度小）は、チャンネルｃｈ１、バンクｂｋ１の組に属し且つ「消耗度小」の物理ブロック群を管理するためのプールである。プール（ｃｈ１、ｂｋ１、消耗度大）は、チャンネルｃｈ１、バンクｂｋ１の組に属し且つ「消耗度大」の物理ブロック群を管理するためのプールである。
【００９９】
プール（ｃｈ２、ｂｋ１、消耗度小）は、チャンネルｃｈ２、バンクｂｋ１の組に属し且つ「消耗度小」の物理ブロック群を管理するためのプールである。プール（ｃｈ２、ｂｋ１、消耗度大）は、チャンネルｃｈ２、バンクｂｋ１の組に属し且つ「消耗度大」の物理ブロック群を管理するためのプールである。
【０１００】
論理ブロックＡを解体する処理では、物理ブロックａ、物理ブロックｂ、物理ブロックｃ、および物理ブロックｄは、チャンネル、バンク、消耗度別に分類されて解体済みブロックプール５３にプールされる。例えば、物理ブロックｃが「消耗度大」の物理ブロックであり、物理ブロックａ，ｂ，ｄが「消耗度小」の物理ブロックであると判定された場合を想定する。
【０１０１】
物理ブロックａは、ｃｈ１、ｂｋ０、消耗度小のグループに分類され、プール（ｃｈ１、ｂｋ０、消耗度小）に置かれる。物理ブロックｂは、ｃｈ２、ｂｋ０、消耗度小のグループに分類され、プール（ｃｈ２、ｂｋ０、消耗度小）に置かれる。物理ブロックｃは、ｃｈ１、ｂｋ１、消耗度大のグループに分類され、プール（ｃｈ１、ｂｋ１、消耗度大）に置かれる。物理ブロックｄは、ｃｈ２、ｂｋ１、消耗度小のグループに分類され、プール（ｃｈ２、ｂｋ１、消耗度小）に置かれる。
【０１０２】
図１３は、別の論理ブロック（ここでは、論理ブロックＢ）の解体処理を示す。
【０１０３】
論理ブロックＢは、物理ブロックｅ、物理ブロックｆ、物理ブロックｇ、および物理ブロックｈから構成されている。物理ブロックｅはチャンネルｃｈ１、バンクｂｋ０の組に属する。物理ブロックｆはチャンネルｃｈ２、バンクｂｋ０の組に属する。物理ブロックｇはチャンネルｃｈ１、バンクｂｋ１の組に属する。物理ブロックｆはチャンネルｃｈ２、バンクｂｋ１の組に属する。
【０１０４】
論理ブロックＢを解体する処理では、物理ブロックｅ、物理ブロックｆ、物理ブロックｇ、および物理ブロックｈは、チャンネル、バンク、消耗度別に分類されて解体済みブロックプール５３にプールされる。例えば、物理ブロックｆが「消耗度大」の物理ブロックであり、物理ブロックｅ，ｇ，ｈが「消耗度小」の物理ブロックであると判定された場合を想定する。
【０１０５】
物理ブロックｅは、ｃｈ１、ｂｋ０、消耗度小のグループに分類され、プール（ｃｈ１、ｂｋ０、消耗度小）に置かれる。物理ブロックｆは、ｃｈ２、ｂｋ０、消耗度大のグループに分類され、プール（ｃｈ２、ｂｋ０、消耗度大）に置かれる。物理ブロックｇは、ｃｈ１、ｂｋ１、消耗度小のグループに分類され、プール（ｃｈ１、ｂｋ１、消耗度小）に置かれる。物理ブロックｈは、ｃｈ２、ｂｋ１、消耗度小のグループに分類され、プール（ｃｈ２、ｂｋ１、消耗度小）に置かれる。
【０１０６】
図１４は、新たな論理ブロックを再構築する処理を示す。
【０１０７】
図１３で説明した論理ブロックＢの解体によって、全てのチャンネル・バンクの組について、同等の消耗度を有する物理ブロックが存在するようになる。図１３、１４の例では、プール（ｃｈ１、ｂｋ０、消耗度小）、プール（ｃｈ２、ｂｋ０、消耗度小）、プール（ｃｈ１、ｂｋ１、消耗度小）、およびプール（ｃｈ２、ｂｋ１、消耗度小）にそれぞれ物理ブロックａ、ｂ、ｇ、ｄが存在している。したがって、論理ブロック解体／再構築部２３は、これら同一消耗度に対応するプールから物理ブロック（ここでは、物理ブロックａ、物理ブロックｂ、物理ブロックｇ、物理ブロックｄ）を１つずつ選択し、選択したこれら物理ブロックによって新たな論理ブロックＣを再構築する。
【０１０８】
図１５は、同じ論理ブロックに含まれる４つの物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数（プログラム／イレーズサイクルの数）と消去時間（ｔＢＥＲＡＳＥ）との間の関係と本実施形態で使用される論理ブロック解体条件の例とを示す。
【０１０９】
上述したように、同じ論理ブロックに含まれる物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去時間は、これら物理ブロックＡ，Ｂ，Ｃ，Ｄの消去回数（プログラム／イレーズサイクルの数）が増えるにつれて長くなる。この論理ブロックが解体されない限り、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数は同じである。
【０１１０】
したがって、これら物理ブロックＡ，Ｂ，Ｃ，Ｄの特性が全く同じであれば、これら物理ブロックＡ，Ｂ，Ｃ，Ｄの消去時間は同じように遷移する。つまり、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去時間はこれら物理ブロックＡ，Ｂ，Ｃ，Ｄの消去回数（プログラム／イレーズサイクルの数）が増えるにつれて長くなるものの、これら物理ブロックＡ，Ｂ，Ｃ，Ｄの消去時間の差は、どの消去回数に対応する時点においても、ある限られた範囲内に収まるはずである。
【０１１１】
しかしながら、実際には、物理ブロックＡ，Ｂ，Ｃ，Ｄの中に特性の悪い物理ブロックと特性の良い物理ブロックとが混在されている場合がある。ここで、特性の良い物理ブロックとは、期待される通常の信頼性を有する物理ブロックを意味する。特性の悪い物理ブロックとは、期待される通常の信頼性を有する物理ブロックよりも早く消耗する物理ブロックを意味する。
【０１１２】
図１５では、物理ブロックＡが、通常の信頼性を有する他の物理ブロックＢ，Ｃ，Ｄに比べて特性の悪い物理ブロックである場合が想定されている。この場合、この論理ブロックの消去回数が増えるにつれ、つまり物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えるにつれ、物理ブロックＡは、他の物理ブロックＢ，Ｃ，Ｄよりも早く消耗する。このため、物理ブロックＡの消去時間と他のある物理ブロックの消去時間との間の差は、ある消去回数に対応する時点において、ある範囲よりも大きくなる。
【０１１３】
このように、特定の一つ以上の物理ブロックのみの消耗が早く進行するという兆候を検出できるようにするために、論理ブロック解体／再構築部２３は、同じ論理ブロック内に含まれる物理ブロックそれぞれの消去時間（ｔＢＥＲＡＳＥ）に基づいて、この論理ブロックが上述の論理ブロック解体条件を満たすか否かを判定する。
【０１１４】
論理ブロック解体条件としては、物理ブロックＡ，Ｂ，Ｃ，Ｄの中の少なくとも１つの物理ブロックの消去時間が閾値によって規定されるある範囲（時間範囲）に収まっており、且つ物理ブロックＡ，Ｂ，Ｃ，Ｄの中の他の少なくとも１つの物理ブロックの消去時間がこの範囲（時間範囲）から外れているという条件を使用することができる。閾値の数は、一つであってもよいし、複数であってもよい。
【０１１５】
図１５では、この解体条件を満たすか否かを判定するために、異なる３つの閾値ｔ１，ｔ２，ｔ３が設定されている。閾値ｔ１は消去回数基準値ＰＥ１に対応する閾値であってもよい。閾値ｔ２は消去回数基準値ＰＥ２に対応する閾値であってもよい。閾値ｔ３は消去回数基準値ＰＥ３に対応する閾値であってもよい。これら閾値は、全消去回数範囲（全ｐ／ｅサイクル数範囲）に亘って有効である。また、これらの閾値は複数設けても構わない。論理ブロック解体／再構築部２３は、同じ論理ブロックに含まれる物理ブロックＡ，Ｂ，Ｃ，Ｄの消去時間をまず以下の４つの範囲（消去時間範囲）に分類してもよい。
【０１１６】
０＜消去時間≦ｔ１
ｔ１＜消去時間≦ｔ２
ｔ２＜消去時間≦ｔ３
ｔ３＜消去時間
この分類結果に基づいて、論理ブロック解体／再構築部２３は、この論理ブロックの解体が必要か否かを判定してもよい。
【０１１７】
図１５の例においては、各物理ブロックＡ，Ｂ，Ｃ，Ｄの消去回数（プログラム／イレーズサイクルの数）がｒ１の消去回数範囲のときには、各物理ブロックＡ，Ｂ，Ｃ，Ｄの消去時間は同程度である。物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、ｒ２の消去回数範囲に達する。そして、ｒ２の消去回数範囲においては、物理ブロックＡの消去時間は、他の物理ブロックＢ，Ｃ，Ｄの消去時間よりも高いレートで増加する。そして、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数がｒ３の消去回数範囲に達する。ｒ３の消去回数範囲においては、物理ブロックＡの消去時間のみが閾値ｔ１よりも長い。つまり、ｒ３の消去回数範囲においては、物理ブロックＢ，Ｃ，Ｄの消去時間が閾値ｔ１以下である間に、物理ブロックＡの消去時間のみが閾値ｔ１よりも長くなるという状態（消去／プログラム領域）が現れる。したがって、物理ブロックＢ，Ｃ，Ｄの消去時間は閾値ｔ１によって規定される範囲（０＜消去時間≦ｔ１）内に収まっていると判定される一方、物理ブロックＡの消去時間は、閾値ｔ１によって規定される範囲から外れていると判定される。この場合、論理ブロック解体／再構築部２３は、論理ブロックを構成する各物理ブロックの信頼性が劣化したものと判断し、つまり論理ブロックに異なる消耗度を有する物理ブロックが混在していると判断し、この論理ブロックを解体すべき論理ブロックとして予約する。
【０１１８】
この結果、物理ブロックＡが実際にバッドブロックになる前に、この物理ブロックＡが属する論理ブロックを積極的に解体することが可能となる。この積極的な論理ブロック解体と新たな論理ブロックの再構築により、個々の論理ブロックに含まれる物理ブロックそれぞれの消耗度（ここでは、消去時間）を同程度に揃えることが可能となる。
【０１１９】
なお、物理ブロックＡの特性によっては、この論理ブロックの消去回数がより多い消去回数に達するまでは、物理ブロックＡの消去時間が他の物理ブロックＢ，Ｃ，Ｄの消去時間と同様のレートで増加する場合もある。
【０１２０】
その場合における論理ブロックの解体条件について図１６を用いて説明する。
【０１２１】
図１６において、ｒ１の消去回数範囲においては、物理ブロックＡ，Ｂ，Ｃ，Ｄの消去時間はほぼ同じレートで増加する。物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、ｒ２の消去回数範囲に達する。そして、ｒ２の消去回数範囲においては、物理ブロックＡの消去時間は、他の物理ブロックＢ，Ｃ，Ｄの消去時間よりも高いレートで増加する。そして、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、物理ブロックＡ，Ｂ，Ｃ，Ｄの消去回数がｒ３の消去回数範囲に達する。ｒ３の消去回数範囲においては、物理ブロックＡの消去時間のみが閾値ｔ２よりも長い。つまり、ｒ３の消去回数範囲においては、物理ブロックＢ，Ｃ，Ｄの消去時間が閾値ｔ２以下である間に、物理ブロックＡの消去時間のみが閾値ｔ２よりも長くなるという状態（消去／プログラム領域）が現れる。したがって、物理ブロックＢ，Ｃ，Ｄの消去時間は閾値ｔ２によって規定される範囲（０＜消去時間≦ｔ２）内に収まっていると判定される一方、物理ブロックＡの消去時間は、閾値ｔ２によって規定される範囲（０＜消去時間≦ｔ２）から外れていると判定される。この場合、論理ブロック解体／再構築部２３は、この論理ブロックを解体すべき論理ブロックとして予約する。
【０１２２】
このように、本実施形態では、閾値ｔ１よりも大きい閾値ｔ２と、閾値ｔ２よりも大きい閾値ｔ３も設定されている。したがって、たとえば、ある消去／プログラム回数を繰り返した論理ブロックの物理ブロックＢ，Ｃ，Ｄの消去時間が閾値ｔ２（または閾値ｔ３）によって規定される範囲内に収まっていると判定される一方、物理ブロックＡの消去時間が閾値ｔ２（または閾値ｔ３）によって規定されるこの範囲から外れていると判定されたならば、論理ブロック解体／再構築部２３は、この論理ブロックが解体条件を満たしたと判定することができ、この論理ブロックを解体すべき論理ブロックとして予約することができる。
【０１２３】
なお、図１５および図１６の例では、消去時間の閾値が３つの場合を例示しているが、閾値の数はこの例に限定されない。
【０１２４】
また、物理ブロックそれぞれの消去時間（ｔＢＥＲＡＳＥ）は、論理ブロックを解体するか否かの判定に利用されるだけでなく、バッドブロック（不良ブロック）として取り扱うべき物理ブロックの決定のために利用されてもよい。この場合、例えば、ある論理ブロックに属する物理ブロックそれぞれの消去動作が実行された時、コントローラ４は、これら物理ブロックそれぞれの消去動作に要した消去時間（ｔＢＥＲＡＳＥ）とバッドブロック判定用の閾値ｔＢＡＤとを比較する。閾値ｔＢＡＤ以上の消去時間（ｔＢＥＲＡＳＥ）を有する物理ブロックが存在するならば、コントローラ４は、この物理ブロックをバッドブロックとして取り扱う。これにより、消耗度の大きい物理ブロック（ｔＢＡＤ以上の消去時間ｔＢＥＲＡＳＥを有する物理ブロック）に対する書き込み／読み出し／消去動作が失敗するという事態が生じる前に、この物理ブロックの使用を中止することが可能となる。閾値ｔＢＡＤは、図１５、図１６で説明した閾値ｔ３よりも大きい値であってもよい。
【０１２５】
図１７は、本実施形態の論理ブロック解体および再構築動作を示す。
【０１２６】
ここでは、論理ブロック＃１が４つの物理ブロックＡ，Ｂ，Ｃ，Ｄから構成されている場合を想定する。
【０１２７】
論理ブロック解体／再構築部２３は、論理ブロック＃１に含まれる物理ブロックそれぞれの消去時間を上述の複数の消去時間範囲に分類することによって、ある１つの物理ブロックの消去時間（ｔＢＥＲＡＳＥ）が、ある閾値によって規定される消去時間範囲（第１範囲）に収まっており、別の一つの物理ブロックの消去時間（ｔＢＥＲＡＳＥ）が、この範囲から外れているか否かを判定する。図１５で説明したように、例えば、物理ブロックＢ，Ｃ，Ｄの消去時間がある閾値によって規定される消去時間範囲に収まっており、且つ物理ブロックＡの消去時間がこの消去時間範囲から外れていることが判定されたならば、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体すべき論理ブロックとして決定する。この場合、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体すべき論理ブロックとして予約する。そして、論理ブロック＃１がフリーブロックになったタイミングのような適切なタイミングで、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体する。解体処理では、論理ブロック解体／再構築部２３は、論理ブロック＃１を構成していた物理ブロックＡ、物理ブロックＢ、物理ブロックＣ、物理ブロックＤを解体済みブロックプール５３に移動する。この場合、図１２、図１３で説明したように、物理ブロックＡ、物理ブロックＢ、物理ブロックＣ、物理ブロックＤは、チャンネル、バンク別に解体済みブロックプール５３にプールされる。また、解体済みブロックプール５３では、物理ブロックの消耗度が区別されて管理される。
【０１２８】
なお、物理ブロックＡ、物理ブロックＢ、物理ブロックＣ、物理ブロックＤが既に消去状態となっている場合には、この論理ブロック＃１をすぐに解体せずに、例えば、この論理ブロック＃１を、まず、書き込み先論理ブロックとして割り当ててもよい。その後、この論理ブロック＃１がアクティブブロックプール５１からフリーブロックプール５２に移動した時に、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体してもよい。
【０１２９】
新たな論理ブロック＃Ｘの再構築は、次のように行われる。
【０１３０】
論理ブロック解体／再構築部２３は、図１４で説明したように、解体済みブロックプール５３内の物理ブロックの中から、消去時間（ｔＢＥＲＡＳＥ）が一致もしくは同等の４つの物理ブロックを選択する。すなわち、論理ブロック解体／再構築部２３は、消去時間（ｔＢＥＲＡＳＥ）が一致もしくは同等の物理ブロックを各チャンネル・バンクから１つずつ選択する。そして、論理ブロック解体／再構築部２３は、選択された４つの物理ブロックによって新たな論理ブロック＃Ｘを再構築する。消去時間（ｔＢＥＲＡＳＥ）が一致もしくは同等の物理ブロックとは、同じ範囲（消去時間範囲）内に属する消去時間を有する物理ブロック群を意味する。
【０１３１】
図１７では、ｃｈ１、ｂｋ０の組に属する物理ブロックＥ、ｃｈ２、ｂｋ０の組に属する物理ブロックＢ、ｃｈ１、ｂｋ１の組に属する物理ブロックＣ、ｃｈ２、ｂｋ１の組に属する物理ブロックＨによって論理ブロック＃Ｘが再構築された場合が例示されている。
【０１３２】
なお、論理ブロック＃Ｘは、消去時間および消去回数の双方が同等の消去回数を有する４つの物理ブロック、つまり同じ消去時間範囲内に属する消去時間を有し且つ同じ消去回数範囲内に属する消去回数を有する４つの物理ブロックによって再構築してもよい。これにより、論理ブロック＃Ｘを新たに構成する物理ブロックの消去時間を揃えることができるだけで無く、論理ブロック＃Ｘを新たに構成する物理ブロックの消去回数も揃えることができる。
【０１３３】
解体済みブロックプール５３内に新たな論理ブロックの再構築の条件を満たす４個の物理ブロックが存在しない場合には、論理ブロック解体／再構築部２３は、論理ブロックの再構築を一時中断してもよい。そして、論理ブロック解体／再構築部２３は、別の論理ブロックが解体されることによって解体済みブロックプール５３内に新たな幾つかの物理ブロックが追加された後に、新たな論理ブロックの再構築を試行してもよい。
【０１３４】
次に、本実施形態で実行されるダイナミックウェアレベリング、およびスタティックウェアレベリングについて説明する。
【０１３５】
ウェアレベリング動作制御部２４は、全ての論理ブロックそれぞれに対応する消去時間に基づいて、これら論理ブロックの消去時間を均一化するためのウェアレベリングを実行する。
【０１３６】
はじめに、図１８を参照して、ウェアレベリング動作制御部２４によって実行されるダイナミックウェアレベリングについて説明する。
【０１３７】
ウェアレベリング動作制御部２４は、論理ブロックそれぞれに対応する消去時間に基づいて、フリーブロックプール５２の論理ブロック（有効データを含まない論理ブロックの集合）の中から、最も短い消去時間（最小ｔＢＥＲＡＳＥ）を有する論理ブロックを選択する。そして、ウェアレベリング動作制御部２４、選択された論理ブロック（フリーブロック）内の各物理ブロックに対する消去動作を実行し、これによってこの論理ブロック内の各物理ブロックを、書き込み可能な消去状態にする。その後、ウェアレベリング動作制御部２４は、その選択された論理ブロックを、ユーザデータが書き込まれるべき書き込み先論理ブロックとして優先的に割り当てる。この書き込み先論理ブロックは、ホスト２からのライトデータが書き込まれる論理ブロック（ホスト書き込み用の論理ブロック）として利用することもできるし、ガベージコレクション（ＧＣ）によって別の論理ブロックから移動される有効データが書き込まれる論理ブロック（ＧＣ用の移動先論理ブロック）として利用することもできる。
【０１３８】
ダイナミックウェアレベリングの実行によって、消去時間が短い論理ブロックが書き込み先論理ブロックに選ばれやすくなる。これにより、消去時間が短い論理ブロックを、ユーザデータ（ホスト２からのライトデータ、またはＧＣによって別の論理ブロックから移動される有効データ、等）の書き込みに優先的に使用することができる。よって、最大消去時間を有する論理ブロックと最小消去時間を有する論理ブロックとの間の消去時間差を減少することが可能となり、複数の論理ブロックそれぞれの消耗度を均一化することができる。
【０１３９】
次に、図１９を参照して、ウェアレベリング動作制御部２４によって実行されるスタティックウェアレベリングについて説明する。
【０１４０】
ウェアレベリング動作制御部２４は、論理ブロックそれぞれに対応する消去時間に基づいて、アクティブブロックプール５１（有効データを含む論理ブロックの集合）から、最も短い消去時間（最小ｔＢＥＲＡＳＥ）を有する論理ブロックを選択する。そして、ウェアレベリング動作制御部２４は、選択された論理ブロック内の有効データを、選択された論理ブロックの消去時間よりも長い消去時間を有し、且つフリーブロックプール５２で管理されている論理ブロックに移動する。
【０１４１】
最小ｔＢＥＲＡＳＥを有する論理ブロックに格納されている有効データは、更新頻度の低いコールドデータである可能性が高い。したがって、コールドデータを長い消去時間を有する別の論理ブロックに移動することにより、最小ｔＢＥＲＡＳＥを有する論理ブロックを他のデータの書き込みに利用する事が可能となる。
【０１４２】
有効データの移動によって有効データが無くなった論理ブロック（最小ｔＢＥＲＡＳＥを有する論理ブロック）はアクティブブロックプール５１からフリーブロックプール５２に移動される。最小ｔＢＥＲＡＳＥを有する論理ブロックに格納されている有効データが書き込まれた論理ブロックは、アクティブブロックプール５１に移動される。監視する消去時間は、当該ブロックが最後に消去を行った際の消去時間であり、動作ログにおいて最新の情報として扱う。
【０１４３】
このスタティックウェアレベリングの実行によって、消去時間が短い論理ブロックがフリーブロックプール５２に移動されやすくなるため、消去時間が短い論理ブロックが書き込み先の論理ブロックとして選択されやすくなる。よって、最大消去時間を有する論理ブロックと最小消去時間を有する論理ブロックとの間の消去時間差を減少することが可能となり、複数の論理ブロックそれぞれの消耗度を均一化することができる。
【０１４４】
図２０のフローチャートは、コントローラ４（消去時間モニタ部２１）によって実行される各物理ブロックの消去時間を監視し、その結果を保存する手順を示す。
【０１４５】
消去時間モニタ部２１は、各物理ブロックの消去時間を監視する（ステップＳ１０１）。ステップＳ１０１では、例えば、ある論理ブロックの消去動作が実行される時に、消去時間モニタ部２１が、この論理ブロックに含まれる物理ブロックそれぞれの消去時間を監視してもよい。そして、消去時間モニタ部２１は、監視によって得られる各物理ブロックの消去時間を物理ブロック消去時間テーブル３３Ｂに保存する（ステップＳ１０２）。
【０１４６】
図２１のフローチャートは、論理ブロックを解体する動作と新たな論理ブロックを再構築する動作の手順を示す。
【０１４７】
論理ブロック解体／再構築部２３は、処理対象の一つの論理ブロックを選択し、この選択された論理ブロックに、消去時間がある閾値によって規定される消去時間範囲（第１範囲）内に収まっている物理ブロックと、消去時間がこの消去時間範囲（第１範囲）から外れている物理ブロックとが存在するか否かを判定する（ステップＳ２０１）。
【０１４８】
この選択された論理ブロック内のすべての物理ブロックの消去時間が消去時間範囲（第１範囲）内に収まっているならば（ステップＳ２０１のＮＯ）、論理ブロック解体／再構築部２３は、当該論理ブロックを維持する（ステップＳ２０５）。
【０１４９】
一方、この選択された論理ブロックに、消去時間が消去時間範囲（第１範囲）内に収まっている物理ブロックと、消去時間がこの消去時間範囲（第１範囲）から外れている物理ブロックとが存在するならば（ステップＳ２０１のＹＥＳ）、論理ブロック解体／再構築部２３は、当該論理ブロックを解体すべき論理ブロックとして予約し、この予約した論理ブロックを、適切なタイミングで解体する（ステップＳ２０２）。
【０１５０】
解体すべき論理ブロックとして予約された論理ブロックを解体する処理では、論理ブロック解体／再構築部２３は、この論理ブロックを解体し、解体された論理ブロックに含まれていた物理ブロックそれぞれを、解体済みブロックプール５３に移動する。解体された論理ブロックに含まれていた物理ブロックそれぞれは、解体済みブロックプール５３によって管理される。解体済みブロックプール５３においては、物理ブロックそれぞれは、チャンネルとバンクの組別に管理されてもよい。さらに、これら物理ブロックそれぞれは、チャンネルとバンクの組毎に、その消耗度別に管理されていてもよい。
【０１５１】
この論理ブロックを解体した後、論理ブロック解体／再構築部２３は、解体済みブロックプール５３から、同等の消去時間を有する物理ブロックの集合を検索する（ステップＳ２０３）。この場合、論理ブロック解体／再構築部２３は、解体済みブロックプール５３から、同じ範囲内に属する消去時間を有し（つまり同程度の消耗度を有し）、且つ異なるチャンネルとバンクの組にそれぞれ属する複数の物理ブロックを選択する。解体済みブロックプール５３の物理ブロックの中から論理ブロックを構築するのに適した物理ブロックの集合を見つけると、論理ブロック解体／再構築部２３は、それらの物理ブロックの集合によって、新たな論理ブロックを再構築する（ステップ２０４）。
【０１５２】
なお、解体済みブロックプール５３の物理ブロックの中から同等の消去時間および同等の消去回数を有する物理ブロックの集合を検索し、同等の消去時間および同等の消去回数を有する物理ブロックの集合によって、解体された論理ブロックを再構築してもよい。
【０１５３】
（第２実施形態）
第１実施形態では、論理ブロックを構成する物理ブロックそれぞれの消去時間のみに基づいて論理ブロック解体条件が満たされるか否かを判定したが、第２実施形態では、一つの論理ブロックを構成している物理ブロックそれぞれの消去回数とこれら物理ブロックそれぞれの消去時間との関係に基づいて論理ブロック解体条件が満たされるか否かが判定される。
【０１５４】
第２実施形態に係るＳＳＤ３のハードウェア構成は第１実施形態のＳＳＤ３と同様であり、第２実施形態と第１実施形態とでは、論理ブロック解体／再構築部２３によって実行される処理の手順のみが異なる。以下、第１実施形態と異なる点のみを説明する。
【０１５５】
図２２は、同じ論理ブロックに含まれる４つの物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数（プログラム／イレーズサイクルの数）と消去時間（ｔＢＥＲＡＳＥ）との間の関係と第２実施形態で使用される論理ブロック解体条件の例とを示す。
【０１５６】
第２実施形態では、設定された３つの消去回数基準値ＰＥ１、ＰＥ２、ＰＥ３それぞれに対応する３つの閾値ｔ１、ｔ２、ｔ３が規定されている。さらに、閾値ｔ１の有効範囲は、消去回数基準値ＰＥ１以下の消去回数に限定され、閾値ｔ２の有効範囲は、消去回数基準値ＰＥ１よりも大きく消去回数基準値ＰＥ２以下の消去回数に限定され、閾値ｔ３の有効範囲は、消去回数基準値ＰＥ２よりも大きく消去回数基準値ＰＥ３以下の消去回数に限定されている。
【０１５７】
論理ブロック解体／再構築部２３は、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数と物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去時間とを考慮して、この論理ブロックに、ある閾値によって規定される範囲（消去時間範囲）内に収まっている消去時間を有する物理ブロックと、この範囲（消去時間範囲）から外れている消去時間を有する別の物理ブロックとが存在するか否かを判定する。
【０１５８】
具体的には、論理ブロックの消去回数がＰＥ１以下の場合、つまり物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数がＰＥ１以下の場合には、論理ブロック解体／再構築部２３は、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去時間を、閾値ｔ１以下の消去時間範囲と、閾値ｔ１よりも大きい消去時間範囲とに分類する。もし物理ブロックＡ，Ｂ，Ｃ，Ｄ内の一つ以上の物理ブロックの消去時間が閾値ｔ１よりも長く、他の一つ以上の物理ブロックの消去時間が閾値ｔ１以下であるならば、論理ブロック解体／再構築部２３は、この論理ブロックを解体すべきことを決定する。
【０１５９】
論理ブロックの消去回数がＰＥ１よりも多く且つＰＥ２以下である場合、つまり物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数がＰＥ１よりも多く且つＰＥ２以下である場合には、論理ブロック解体／再構築部２３は、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去時間を、閾値ｔ２以下の消去時間範囲と、閾値ｔ２よりも大きい消去時間範囲とに分類する。物理ブロックＡ，Ｂ，Ｃ，Ｄ内の一つ以上の物理ブロックの消去時間が閾値ｔ２よりも長く、他の一つ以上の物理ブロックの消去時間が閾値ｔ２以下であるならば、論理ブロック解体／再構築部２３は、この論理ブロックを解体すべきことを決定する。
【０１６０】
論理ブロックの消去回数がＰＥ２よりも多く且つＰＥ３以下である場合、つまり物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数がＰＥ２よりも多く且つＰＥ３以下である場合には、論理ブロック解体／再構築部２３は、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去時間を、閾値ｔ３以下の消去時間範囲と、閾値ｔ３よりも大きい消去時間範囲とに分類する。物理ブロックＡ，Ｂ，Ｃ，Ｄ内の一つ以上の物理ブロックの消去時間が閾値ｔ３よりも長く、他の一つ以上の物理ブロックの消去時間が閾値ｔ３以下であるならば、論理ブロック解体／再構築部２３は、この論理ブロックを解体すべきことを決定する。
【０１６１】
図２２の例においては、ｒ１の消去回数範囲においては、全ての物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去時間は閾値ｔ１以下の範囲（０＜消去時間≦ｔ１）内に収まっている。したがって、論理ブロック解体条件は満たされない。
【０１６２】
物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、ｒ２の消去回数範囲に達する。そして、ｒ２の消去回数範囲においては、物理ブロックＡ，Ｂ，Ｃ，Ｄ中で、消去時間が閾値ｔ１を超える物理ブロックと、消去時間が閾値ｔ１以下に維持される物理ブロックとが混在する。しかし、閾値ｔ１の有効範囲はＰＥ１以下に制限されているため、ｒ２の消去回数範囲では、閾値ｔ１は論理ブロック解体条件を満たすか否かの判定には用いられず、閾値ｔ２が論理ブロック解体条件を満たすか否かの判定に用いられる。
【０１６３】
ｒ２の消去回数範囲では、全ての物理ブロックＡ、Ｂ，Ｃ，Ｄそれぞれの消去時間は、閾値ｔ２以下の範囲内に収まっている。したがって、論理ブロック解体条件は満たされない。
【０１６４】
物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、ｒ３の消去回数範囲に達する。ｒ３の消去回数範囲においては、物理ブロックＡの消去時間は、他の物理ブロックＢ，Ｃ，Ｄの消去時間よりも高いレートで増加する。そして、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、それらの消去回数がｒ４の消去回数範囲に達する。ｒ４の消去回数範囲においては、物理ブロックＡの消去時間のみが閾値ｔ２よりも長い。つまり、ｒ４の消去回数範囲においては、物理ブロックＢ，Ｃ，Ｄの消去時間が閾値ｔ２以下である間に、物理ブロックＡの消去時間のみが閾値ｔ２よりも長くなるという状態が現れる。したがって、物理ブロックＢ，Ｃ，Ｄの消去時間は閾値ｔ２によって規定される範囲（０＜消去時間≦ｔ２）内に収まっていると判定される一方、物理ブロックＡの消去時間は、閾値ｔ２によって規定される範囲（０＜消去時間≦ｔ２）から外れていると判定される。この場合、論理ブロック解体／再構築部２３は、この論理ブロックに異なる消耗度を有する物理ブロックが混在していると判断し、この論理ブロックを解体すべき論理ブロックとして予約する。
【０１６５】
この結果、物理ブロックＡが実際にバッドブロックになる前に、この物理ブロックＡが属する論理ブロックを解体することが可能となる。この論理ブロック解体と新たな論理ブロックの再構築とにより、個々の論理ブロックに含まれる物理ブロックそれぞれの消耗度（ここでは、消去時間）を同程度に揃えることが可能となる。また、第２実施形態では、各閾値の有効範囲は特定の消去回数範囲にのみ制限されているので、論理ブロックの解体のやりすぎを防止することができる。
【０１６６】
なお、図２２の例では、３つの消去回数基準値に対応する３つの閾値を使用する例を示しているが、消去回数基準値および閾値の数はこの例に限定されず、１以上の任意の数の消去回数基準値および閾値を使用し得る。
【０１６７】
図２３は、第２実施形態における論理ブロック解体および再構築動作を示す。
【０１６８】
ここでは、論理ブロック＃１が４つの物理ブロックＡ，Ｂ，Ｃ，Ｄから構成されている場合を想定する。
【０１６９】
論理ブロック解体／再構築部２３は、論理ブロック＃１に含まれる物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数に対応する消去回数基準値を特定し、この特定された消去回数基準値に関連付けられた閾値とこれら物理ブロックＡ，Ｂ，Ｃ，Ｄの消去時間とを比較する。
【０１７０】
図２２で説明したように、物理ブロックＡ，Ｂ，Ｃ，Ｄの内、物理ブロックＡの消去時間のみが、特定された消去回数基準値に関連付けられた閾値よりも長くなると、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体し、論理ブロック＃１を構成していた物理ブロックＡ、物理ブロックＢ、物理ブロックＣ、物理ブロックＤを解体済みブロックプール５３に移動する。ここで、物理ブロックＡ、物理ブロックＢ、物理ブロックＣ、物理ブロックＤは、チャンネル、バンク別に解体済みブロックプール５３にプールされる。また、解体済みブロックプール５３では、物理ブロックの消耗度が区別されて管理される。
【０１７１】
なお、物理ブロックＡ、物理ブロックＢ、物理ブロックＣ、物理ブロックＤが既に消去状態となっている場合には、上述したように、この論理ブロック＃１をすぐに解体せずに、例えば、この論理ブロック＃１を、まず、書き込み先論理ブロックとして割り当ててもよい。その後、この論理ブロック＃１がアクティブブロックプール５１からフリーブロックプール５２に移動した時に、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体してもよい。
【０１７２】
新たな論理ブロック＃Ｘの再構築は、次のように行われる。
【０１７３】
論理ブロック解体／再構築部２３は、解体済みブロックプール５３内の物理ブロックの中から、消去時間（ｔＢＥＲＡＳＥ）が一致もしくは同等の４つの物理ブロックを選択する。すなわち、論理ブロック解体／再構築部２３は、消去時間（ｔＢＥＲＡＳＥ）が一致もしくは同等の物理ブロックを各チャンネル・バンクから１つずつ選択する。そして、論理ブロック解体／再構築部２３は、選択された４つの物理ブロックによって新たな論理ブロック＃Ｘを再構築する。消去時間（ｔＢＥＲＡＳＥ）が一致もしくは同等の物理ブロックとは、同じ範囲（消去時間範囲）内に属する消去時間を有する物理ブロック群を意味する。
【０１７４】
図２３では、ｃｈ１、ｂｋ０の組に属する物理ブロックＥ、ｃｈ２、ｂｋ０の組に属する物理ブロックＢ、ｃｈ１、ｂｋ１の組に属する物理ブロックＣ、ｃｈ２、ｂｋ１の組に属する物理ブロックＨによって論理ブロック＃Ｘが再構築された場合が例示されている。
【０１７５】
なお、第１実施形態と同様に、論理ブロック＃１は、同じ範囲（消去時間範囲）内に属する消去時間を有し且つ同じ範囲（消去回数範囲）内に属する消去回数を有する４つの物理ブロックによって再構築してもよい。また、解体済みブロックプール５３内に論理ブロック＃１の再構築の条件を満たす４個の物理ブロックが存在しない場合には、論理ブロック解体／再構築部２３は、論理ブロック＃１の再構築を一時中断してもよい。そして、論理ブロック解体／再構築部２３は、別の論理ブロックが解体されることによって解体済みブロックプール５３内に新たな幾つかの物理ブロックが追加された後に、論理ブロック＃１の再構築を試行してもよい。
【０１７６】
図２４のフローチャートは、第２実施形態のＳＳＤ３によって実行される、物理ブロックを消去時間および消去回数に基づいて分類する処理の手順を示す。
【０１７７】
コントローラ４は、各物理ブロックの消去回数および消去時間を監視する（ステップＳ３０１）。
【０１７８】
次に、コントローラ４は、各物理ブロックの消去回数と消去時間とに応じて物理ブロックの分類処理を行う（ステップＳ３０２〜Ｓ３１２）。分類処理では、図２４の右上に示すように、物理ブロックをグループＡ、グループＢ、グループＣ、グループＤ、グループＥ、グループＦに分類してもよい。グループＡは、消去回数がＰＥ１以下で且つ消去時間が閾値ｔ１以下の物理ブロックのグループである。グループＢは、消去回数がＰＥ１以下で且つ消去時間が閾値ｔ１よりも長い物理ブロックのグループである。グループＣは、消去回数がＰＥ１よりも多くＰＥ２以下で且つ消去時間が閾値ｔ２以下の物理ブロックのグループである。グループＤは、消去回数がＰＥ１よりも多くＰＥ２以下で且つ消去時間が閾値ｔ２よりも長い物理ブロックのグループである。グループＥは、消去回数がＰＥ２よりも多くＰＥ３以下で且つ消去時間が閾値ｔ３以下の物理ブロックのグループである。グループＦは、消去回数がＰＥ２よりも多くＰＥ３以下で且つ消去時間が閾値ｔ３よりも長い物理ブロックのグループである。
【０１７９】
以下、物理ブロックの分類処理の詳細を説明する。
【０１８０】
コントローラ４は、処理対象の一つの物理ブロックを選択し、この選択された物理ブロックの消去回数がＰＥ１以下である場合、（ステップＳ３０２のＮＯ）、この選択された物理ブロックの消去時間が閾値ｔ１よりも長いか否かを判定する（ステップＳ３０３）。
【０１８１】
選択された物理ブロックの消去時間が閾値ｔ１以下であった場合（ステップＳ３０３のＮＯ）、コントローラ４は、選択された物理ブロックをグループＡに分類する（ステップＳ３０４）。
【０１８２】
選択された物理ブロックの消去時間が閾値ｔ１よりも長い場合（ステップＳ３０３のＹＥＳ）、コントローラ４は、選択された物理ブロックをグループＢに分類する（ステップＳ３０５）。
【０１８３】
選択された物理ブロックの消去回数がＰＥ１を超えていて且つＰＥ２以下である場合（ステップＳ３０２のＹＥＳ、ステップＳ３０６のＮＯ）、コントローラ４は、選択された物理ブロックが閾値ｔ２よりも長いか否かを判定する（ステップＳ３０７）。選択された物理ブロックの消去時間が閾値ｔ２以下であった場合（ステップＳ３０７のＮＯ）、コントローラ４は、選択された物理ブロックをグループＣに分類する（ステップＳ３０８）。
【０１８４】
選択された物理ブロックの消去時間が閾値ｔ２よりも長い場合（ステップＳ３０７のＹＥＳ）、コントローラ４は、選択された物理ブロックをグループＤに分類する（ステップＳ３０９）。
【０１８５】
選択された物理ブロックの消去回数がＰＥ２を超えていて且つＰＥ３以下である場合（ステップＳ３０２のＹＥＳ、Ｓ３０６のＹＥＳ）、コントローラ４は、選択された物理ブロックの消去時間が閾値ｔ３よりも長いか否かを判定する（ステップＳ３１０）。
【０１８６】
選択された物理ブロックの消去時間が閾値ｔ３以下であった場合（ステップＳ３１０のＮＯ）、コントローラ４は、選択された物理ブロックをグループＥに分類する（ステップＳ３１１）。
【０１８７】
選択された物理ブロックの消去時間が閾値ｔ３よりも長い場合（ステップＳ３１０のＹＥＳ）、コントローラ４は、選択された物理ブロックをグループＦに分類する（ステップＳ３１２）。
【０１８８】
なお、選択された物理ブロックの消去時間が上述の閾値ｔＢＡＤ以上であるならば、コントローラ４はこの物理ブロックをバッドブロックとして扱うことを決定してもよい。この場合、コントローラ４は、閾値ｔＢＡＤ以上の消去時間を有する物理ブロックそれぞれをバッドブロック用のグループＸに分類してもよい。グループＸ（バッドブロック）として分類された物理ブロックは、新たな論理ブロックの再構築には用いられない。つまり、コントローラ４は、グループＡ〜Ｆに分類された物理ブロック群のみを論理ブロックの再構築に用いる。
【０１８９】
図２５のフローチャートは、第２実施形態のＳＳＤ３によって実行される論理ブロック解体動作の手順を示す。
【０１９０】
論理ブロック解体／再構築部２３は、図２４の処理によって得られた物理ブロック分類結果を参照し（ステップＳ４０１）、論理ブロックの解体が必要か否かを論理ブロック毎に判定する（ステップＳ４０２）。ステップＳ４０２では、論理ブロック解体／再構築部２３は、まず、処理対象の論理ブロックを１つ選択し、選択された論理ブロックに含まれる物理ブロックの分類結果に基づいて、この選択された論理ブロックの解体が必要か否かを判定する。
【０１９１】
この場合、論理ブロック解体／再構築部２３は、選択された論理ブロックが、例えば、（１）グループＡに属する物理ブロックとグループＢに属する物理ブロックとが混在する論理ブロック、（２）グループＣに属する物理ブロックとグループＤに属する物理ブロックとが混在する論理ブロック、または（３）グループＥに属する物理ブロックとグループＦに属する物理ブロックとが混在する論理ブロックのいずれかである場合に、この選択された論理ブロックの解体が必要と判定してもよい。
【０１９２】
また、選択された論理ブロックを構成する物理ブロックの中に、グループＡ、グループＣ、またはグループＥのいずれかに属する物理ブロックと、グループＢ、グループＤ、またはグループＦのいずれかに属する物理ブロックとが混在する場合も、論理ブロック解体／再構築部２３は、論理ブロックの解体が必要と判定してもよい。
【０１９３】
論理ブロックの解体が必要と判定されたならば（ステップＳ４０３のＹＥＳ）、論理ブロック解体／再構築部２３は、選択された論理ブロックを、解体すべき論理ブロックとして予約し、この論理ブロックを適切なタイミングで解体する（ステップＳ４０４）。論理ブロックの解体が必要なしと判定されたならば（ステップＳ４０３のＮＯ）、論理ブロック解体／再構築部２３は、選択された論理ブロックを解体せずに維持する（ステップＳ４０５）。
【０１９４】
解体すべき論理ブロックとして予約された論理ブロックを解体する処理では、論理ブロック解体／再構築部２３は、この論理ブロックを解体し、解体された論理ブロックに含まれていた物理ブロックそれぞれを、解体済みブロックプール５３に移動する。解体された論理ブロックに含まれていた物理ブロックそれぞれは、解体済みブロックプール５３によって管理される。解体済みブロックプール５３においては、物理ブロックそれぞれは、図１２、図１３で説明したように、チャンネルとバンクの組毎に、消耗度別に管理されてもよい。
【０１９５】
そして、新たな論理ブロックを再構築する処理では、論理ブロック解体／再構築部２３は、解体済みブロックプール５３から、同じ範囲内に属する消去時間を有し（つまり同程度の消耗度を有し）、且つ異なるチャンネルとバンクの組にそれぞれ属する複数の物理ブロックを選択する。論理ブロック解体／再構築部２３は、これら選択された物理ブロックの集合によって、新たな論理ブロックを再構築する。
【０１９６】
なお、上述のステップＳ４０２では、グループＸに分類された物理ブロック（ｔＢＡＤ以上の消去時間を有する物理ブロック）を含む論理ブロックも、解体が必要であると判定されてもよい。この場合、論理ブロック解体／再構築部２３は、グループＸに分類された物理ブロック（バッドブロック）を含む論理ブロックを解体し、この論理ブロックに含まれていたバッドブロックを、バッドブロックを管理するためのバッドブロックプールに移動し、且つ解体された論理ブロックに含まれていた他の物理ブロックそれぞれを、解体済みブロックプール５３に移動する。バッドブロックプール内の物理ブロックは論理ブロックの再構築には用いられない。
【０１９７】
（第３実施形態）
第１および第２実施形態では、各物理ブロックの消去時間（または消去時間および消去回数の双方）をモニタリングすることによって、論理ブロックの解体および再構築を実行していた。第３実施形態では、物理ブロックのプログラム時間（またはプログラム時間および消去回数の双方）をモニタリングすることで、論理ブロックの解体および再構築が実行される。
【０１９８】
第３実施形態に係るＳＳＤのハードウェア構成は第１実施形態のＳＳＤ３と同様であり、第３実施形態と第１実施形態とでは、論理ブロック解体／再構築部２３によって実行される処理の手順のみが異なる。以下、第１実施形態と異なる点のみを説明する。
【０１９９】
図２６は、同じ論理ブロックに含まれる４つの物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数（プログラム／イレーズサイクルの数）とプログラム時間（ｔＰＲＯＧ）との間の関係と第３実施形態で使用される論理ブロック解体条件の例とを示す。
【０２００】
上述したように、同じ論理ブロックに含まれる物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれのプログラム時間は、これら物理ブロックＡ，Ｂ，Ｃ，Ｄの消去回数（プログラム／イレーズサイクルの数）が増えるにつれて短くなる。この論理ブロックが解体されない限り、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数は同じである。
【０２０１】
したがって、これら物理ブロックＡ，Ｂ，Ｃ，Ｄの特性が全く同じであれば、これら物理ブロックＡ，Ｂ，Ｃ，Ｄのプログラム時間は同じように遷移する。つまり、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれのプログラム時間はこれら物理ブロックＡ，Ｂ，Ｃ，Ｄの消去回数（プログラム／イレーズサイクルの数）が増えるにつれて短くなるものの、これら物理ブロックＡ，Ｂ，Ｃ，Ｄのプログラム時間の差は、どの消去回数に対応する時点においても、ある限られた範囲内に収まるはずである。
【０２０２】
しかしながら、実際には、物理ブロックＡ，Ｂ，Ｃ，Ｄの中に特性の悪い物理ブロックと特性の良い物理ブロックとが混在されている場合がある。
【０２０３】
図２６では、物理ブロックＡが、通常の信頼性を有する他の物理ブロックＢ，Ｃ，Ｄに比べて特性の悪い物理ブロックである場合が想定されている。この場合、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数（プログラム／イレーズサイクルの数）が増えるにつれ、物理ブロックＡのプログラム時間（ｔＰＲＯＧ）は、他の物理ブロックＢ，Ｃ，Ｄよりも高いレートで減少する。このため、物理ブロックＡのプログラム時間と他のある物理ブロックのプログラム時間との間の差は、ある消去回数に対応する時点において、ある範囲よりも大きくなる。
【０２０４】
このように、特定の一つ以上の物理ブロックのみの消耗が早く進行するという兆候を検出できるようにするために、論理ブロック解体／再構築部２３は、同じ論理ブロック内に含まれる物理ブロックそれぞれのプログラム時間（ｔＰＲＯＧ）に基づいて、この論理ブロックが論理ブロック解体条件を満たすか否かを判定する。
【０２０５】
論理ブロック解体条件としては、物理ブロックＡ，Ｂ，Ｃ，Ｄの中の少なくとも１つの物理ブロックのプログラム時間がある範囲（時間範囲）に収まり、且つ物理ブロックＡ，Ｂ，Ｃ，Ｄの中の他の少なくとも１つの物理ブロックのプログラム時間がその時間範囲から外れるという条件を使用することができる。
【０２０６】
図２６の例においては、各物理ブロックＡ，Ｂ，Ｃ，Ｄの消去回数（プログラム／イレーズサイクルの数）がｒ１の消去回数範囲のときには、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれのプログラム時間は同程度である。物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、ｒ２の消去回数範囲に達する。ｒ２の消去回数範囲においては、物理ブロックＡのプログラム時間は、他の物理ブロックＢ，Ｃ，Ｄよりも高いレートで減少する。物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数が増えていき、物理ブロックＡ，Ｂ，Ｃ，Ｄそれぞれの消去回数がｒ３の消去回数範囲に達する。ｒ３の消去回数範囲においては、物理ブロックＡのプログラム時間のみが閾値ｔ１１より短い。つまり、ｒ３の消去回数範囲においては、物理ブロックＢ，Ｃ，Ｄのプログラム時間が閾値ｔ１１以上である間に、物理ブロックＡのプログラム時間のみが閾値ｔ１１よりも短くなるという状態が現れる。したがって、物理ブロックＢ，Ｃ，Ｄそれぞれのプログラム時間は閾値ｔ１１によって規定される範囲（ｔ１１を下限とするプログラム時間範囲）内に収まっていると判定される一方、物理ブロックＡのプログラム時間は閾値ｔ１１によって規定されるこの範囲から外れていると判定される。この場合、論理ブロック解体／再構築部２３は、この論理ブロックを解体すべき論理ブロックとして予約する。
【０２０７】
この結果、物理ブロックＡが実際にバッドブロックになる前に、この物理ブロックＡが属する論理ブロックを積極的に解体および再構築することが可能となる。この積極的な論理ブロック解体および再構築により、個々の論理ブロックに含まれる物理ブロックそれぞれの消耗度（ここでは、プログラム時間）を同程度に揃えることが可能となる。
【０２０８】
図２７は、第３実施形態で使用される物理ブロックプログラム時間テーブル３３Ｆを示す。
【０２０９】
物理ブロックプログラム時間テーブル３３Ｆは、システム管理情報３３の一部であり、ＮＡＮＤ型フラッシュメモリ＃１〜＃３２の全ての物理ブロックのプログラム時間（ｔＰＲＯＧ）を管理する。物理ブロックそれぞれのプログラム時間は、論理ブロックを解体する否かを判定する際、および論理ブロック再構築を行う際に用いられる。ここで、tPROGは論理ブロックもしくは各物理ブロック内部の全ページの平均書き込み時間でもよいし、あるいは複数ページの平均書き込み時間でもよい。ここで、プログラム時間の平均値を算出するために対象となるページは連続する複数のページ、もしくは非連続的な複数のページであっても構わない。
【０２１０】
例として、図２７には、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ１）の物理ブロックのプログラム時間は、３００マイクロ秒、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ２）の物理ブロックのプログラム時間は、３２０マイクロ秒、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ３）の物理ブロックのプログラム時間は、３１０マイクロ秒、物理ブロックＩＤが（Ｃｈｉｐ１，Ｂｌｋ４）の物理ブロックのプログラム時間は、６００マイクロ秒であることが示されている。
【０２１１】
図２８は、第３実施形態で使用される論理ブロックプログラム時間テーブル３３Ｇを示す。
【０２１２】
論理ブロックプログラム時間テーブル３３Ｇは、システム管理情報３３の一部であり、上述の複数の論理ブロックそれぞれに対応するプログラム時間（ｔＰＲＯＧ）を管理する。第３実施形態では、一つの論理ブロックに含まれる物理ブロックそれぞれのプログラム時間（ｔＰＲＯＧ）は、基本的には、同程度に揃えられる。したがって、各論理ブロックに対応するプログラム時間（ｔＰＲＯＧ）としては、この同程度のプログラム時間（ｔＰＲＯＧ）を表すことが可能な任意の値を使用し得る。例えば、各論理ブロックに対応するプログラム時間（ｔＰＲＯＧ）は、平均プログラム時間であってもよいし、または、最小プログラム時間であってもよい。ある論理ブロックに対応する平均プログラム時間は、この論理ブロックに含まれる物理ブロックそれぞれのプログラム時間の平均値を示す。ある論理ブロックに対応する最小プログラム時間は、この論理ブロックに含まれる物理ブロックのプログラム時間の中で、最も短いプログラム時間を示す。
【０２１３】
図２９は、第３実施形態における論理ブロック解体および再構築動作を示す。
【０２１４】
ここでは、論理ブロック＃１が４つの物理ブロックＡ，Ｂ，Ｃ，Ｄから構成されている場合を想定する。
【０２１５】
論理ブロック解体／再構築部２３は、論理ブロック＃１に含まれる物理ブロックそれぞれのプログラム時間を複数のプログラム時間範囲に分類することによって、ある１つの物理ブロックのプログラム時間（ｔＰＲＯＧ）が、あるプログラム時間範囲（第１範囲）に収まっており、別の一つの物理ブロックのプログラム時間（ｔＰＲＯＧ）が、そのプログラム時間範囲（第１範囲）から外れているか否かを判定する。図２６で説明したように、例えば、物理ブロックＢ，Ｃ，Ｄのプログラム時間が閾値ｔ１１によって規定されるプログラム時間範囲に収まっており、且つ物理ブロックＡのプログラム時間が閾値ｔ１１によって規定されるこのプログラム時間範囲から外れていることが判定されたならば、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体すべき論理ブロックとして予約する。この場合、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体すべき論理ブロックとして予約する。そして、論理ブロック＃１がフリーブロックになったタイミングのような適切なタイミングで、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体する。解体処理では、論理ブロック解体／再構築部２３は、論理ブロック＃１を解体し、論理ブロック＃１を構成していた物理ブロックＡ、物理ブロックＢ、物理ブロックＣ、物理ブロックＤを解体済みブロックプール５３に移動する。
【０２１６】
ここで、物理ブロックＡ、物理ブロックＢ、物理ブロックＣ、物理ブロックＤは、チャンネル、バンク別に解体済みブロックプール５３にプールされる。また、解体済みブロックプール５３では、物理ブロックの消耗度が区別されて管理される。
【０２１７】
解体された論理ブロック＃１の再構築は、次のように行われる。
【０２１８】
論理ブロック解体／再構築部２３は、解体済みブロックプール５３内の物理ブロックの中から、プログラム時間（ｔＰＲＯＧ）が一致もしくは同等の４つの物理ブロックを検索する。そして、論理ブロック解体／再構築部２３は、各チャンネル・バンクから１つずつ消去時間が一致もしくは同等の物理ブロックを選択し、選択された４つの物理ブロックを束ねて新たな論理ブロック＃Ｘを再構築する。プログラム時間（ｔＰＲＯＧ）が同等の物理ブロックとは、同じ範囲（プログラム時間範囲）内に属するプログラム時間を有する物理ブロック群を意味する。なお、tPROGはＮＡＮＤ型フラッシュメモリ５の書き込み動作により種々の値を取得る。具体的には、書き込み電圧VPGM、書き込みステップアップ電圧DVPGM、書き込み電圧印加時間STCVPGMなどに依存する。
【０２１９】
図２９では、物理ブロックＥ、物理ブロックＢ、物理ブロックＣ、物理ブロックＨによって論理ブロック＃Ｘが再構築された場合が例示されている。
【０２２０】
なお、基本的には、プログラム時間のみで物理ブロックそれぞれの消耗度を測ることが可能であるが、消耗度がプログラム時間に現れにくい場合もあり得る。この場合には、論理ブロック＃Ｘは、同じプログラム時間範囲内に属するプログラム時間を有し且つ同じ消去回数範囲内に属する消去回数（プログラム／イレーズサイクルの数）を有する物理ブロックを、各チャンネル・バンクから１つずつ選出し、その選出された４つの物理ブロックによって再構築してもよい。これにより、論理ブロック＃Ｘを構成する物理ブロックのプログラム時間を揃えることができるだけで無く、論理ブロック＃Ｘを構成する物理ブロックの消去回数（プログラム／イレーズサイクルの数）も揃えることができる。よって、消耗度がプログラム時間に現れにくい場合であっても、新たな論理ブロックを同程度の消耗度を有する物理ブロックによって構築することができる。
【０２２１】
解体済みブロックプール５３内に論理ブロック＃Ｘの再構築の条件を満たす４個の物理ブロックが存在しない場合には、論理ブロック解体／再構築部２３は、論理ブロック＃１の再構築を一時中断してもよい。そして、論理ブロック解体／再構築部２３は、別の論理ブロックが解体されることによって解体済みブロックプール５３内に新たな幾つかの物理ブロックが追加された後に、論理ブロック＃Ｘの再構築を試行してもよい。
【０２２２】
図３０のフローチャートは、コントローラ４によって実行される各物理ブロックのプログラム時間を監視し、その結果を保存する手順を示す。
【０２２３】
プログラム時間モニタ部２２は、各物理ブロックのプログラム時間を監視する（ステップＳ５０１）。このとき、コントローラ４は、各物理ブロックのプログラム時間のデータを取得する。
【０２２４】
ステップＳ５０１では、例えば、ある論理ブロックの書き込み動作が実行される時に、プログラム時間モニタ部２２が、この論理ブロックに含まれる物理ブロックそれぞれのプログラム時間を監視してもよい。
【０２２５】
そして、コントローラ４は、各物理ブロックのプログラム時間のデータを物理ブロックプログラム時間テーブル３３Ｆに保存する（ステップＳ５０２）。
【０２２６】
図３１のフローチャートは、論理ブロックを解体する動作と新たな論理ブロックを再構築する動作の手順を示す。
【０２２７】
論理ブロック解体／再構築部２３は、処理対象の一つの論理ブロックを選択し、この選択された論理ブロックに、プログラム時間があるプログラム時間範囲（第１範囲）に収まっている物理ブロックと、プログラム時間がそのプログラム時間範囲（第１範囲）から外れている物理ブロックとが存在するか否かを判定する（ステップＳ６０１）。
【０２２８】
この選択された論理ブロック内のすべての物理ブロックのプログラム時間が１つのプログラム時間範囲に収まっているならば（ステップＳ６０１のＮＯ）、論理ブロック解体／再構築部２３は、当該論理ブロックを維持する（ステップＳ６０５）。
【０２２９】
一方、この選択された論理ブロックに、プログラム時間があるプログラム時間範囲（第１範囲）に収まっている物理ブロックと、プログラム時間がそのプログラム時間範囲（第１範囲）から外れている物理ブロックとが存在するならば（ステップＳ６０１のＹＥＳ）、論理ブロック解体／再構築部２３は、当該論理ブロックを解体すべき論理ブロックとして予約し、この論理ブロックを適切なタイミングで解体する（ステップＳ６０２）。解体すべき論理ブロックとして予約された論理ブロックを解体する処理では、論理ブロック解体／再構築部２３は、この論理ブロックを解体し、解体された論理ブロックに含まれていた物理ブロックそれぞれを、解体済みブロックプール５３に移動する。解体された論理ブロックに含まれていた物理ブロックそれぞれは、解体済みブロックプール５３によって管理される。解体済みブロックプール５３においては、物理ブロックそれぞれは、図１２、図１３で説明したように、チャンネルとバンクの組毎に、消耗度別（ここでは、プログラム時間範囲別）に管理されてもよい。
【０２３０】
新たな論理ブロックを再構築する処理では、論理ブロック解体／再構築部２３は、解体済みブロックプール５３の物理ブロックの中から同等のプログラム時間を有する物理ブロックの集合を検索する（ステップＳ６０３）。この場合、論理ブロック解体／再構築部２３は、解体済みブロックプール５３から、同じ範囲内に属するプログラム時間を有し（つまり同程度の消耗度を有し）、且つ異なるチャンネルとバンクの組にそれぞれ属する複数の物理ブロックを選択する。解体済みブロックプール５３の物理ブロックの中から論理ブロックを構築するのに適した物理ブロックの集合を見つけると、論理ブロック解体／再構築部２３は、それらの物理ブロックの集合によって、新たな論理ブロックを再構築する（ステップＳ６０４）。
【０２３１】
なお、ステップＳ６０３、Ｓ６０４では、論理ブロック解体／再構築部２３は、解体済みブロックプール５３の物理ブロックの中から同等のプログラム時間および同等の消去回数を有する物理ブロックの集合を検索し、同等のプログラム時間および同等の消去回数を有する物理ブロックの集合によって、解体された論理ブロックを再構築してもよい。
【０２３２】
また、この第３実施形態においても、第２実施形態と同様に、消去回数ごとに閾値の有効範囲が区切られている幾つかの閾値（消去回数基準値ＰＥ１、ＰＥ２、ＰＥ３それぞれに対応する３つの閾値ｔ１１、ｔ１２、ｔ１３）が使用されてもよい。
【０２３３】
具体的には、論理ブロック解体／再構築部２３は、第２実施形態と同様に、まず、ＮＡＮＤ型フラッシュメモリ５内の全ての物理ブロックの消去回数とプログラム時間とに応じてこれら物理ブロックの分類処理を行う。この分類処理により、物理ブロックは以下のグループに分類されてもよい。
【０２３４】
グループａ：ＰＥ１以下の消去回数を有し、且つプログラム時間が閾値ｔ１１以上の物理ブロックのグループ
グループｂ：ＰＥ１以下の消去回数を有し、且つプログラム時間が閾値ｔ１１未満の物理ブロックのグループ
グループｃ：ＰＥ１よりも多くＰＥ２以下の消去回数を有し、且つプログラム時間が閾値ｔ１２（＜ｔ１１）以上の物理ブロックのグループ
グループｄ：ＰＥ１よりも多くＰＥ２以下の消去回数を有し、且つプログラム時間が閾値ｔ１２未満の物理ブロックのグループ
グループｅ：ＰＥ２よりも多くＰＥ３以下の消去回数を有し、且つプログラム時間が閾値ｔ１３（＜ｔ１２）以上の物理ブロックのグループ
グループｆ：ＰＥ２よりも多くＰＥ３以下の消去回数を有し、且つプログラム時間が閾値ｔ１３未満の物理ブロックのグループ
そして、論理ブロック解体／再構築部２３は、物理ブロック分類結果を参照し、論理ブロックの解体が必要か否かを論理ブロック毎に判定する。この場合、論理ブロック解体／再構築部２３は、まず、処理対象の論理ブロックを１つ選択し、選択された論理ブロックに含まれる物理ブロックの分類結果に基づいて、この選択された論理ブロックの解体が必要か否かを判定する。
【０２３５】
論理ブロック解体／再構築部２３は、選択された論理ブロックが、例えば、（１）グループａに属する物理ブロックとグループｂに属する物理ブロックとが混在する論理ブロック、（２）グループｃに属する物理ブロックとグループｄに属する物理ブロックとが混在する論理ブロック、または（３）グループｅに属する物理ブロックとグループｆに属する物理ブロックとが混在する論理ブロックのいずれかである場合に、この選択された論理ブロックの解体が必要と判定してもよい。
【０２３６】
また、選択された論理ブロックを構成する物理ブロックの中に、グループａ、グループｃ、またはグループｅのいずれかに属する物理ブロックと、グループｂ、グループｄ、またはグループｆのいずれかに属する物理ブロックとが混在する場合も、論理ブロック解体／再構築部２３は、論理ブロックの解体が必要と判定してもよい。
【０２３７】
次に、第３実施形態で実行されるダイナミックウェアレベリング、およびスタティックウェアレベリングについて説明する。
【０２３８】
ウェアレベリング動作制御部２４は、全ての論理ブロックそれぞれに対応するプログラム時間に基づいて、これら論理ブロックのプログラム時間を均一化するためのウェアレベリングを実行する。
【０２３９】
最初に、ダイナミックウェアレベリングについて説明する。
【０２４０】
ウェアレベリング動作制御部２４は、論理ブロックそれぞれに対応するプログラム時間に基づいて、フリーブロックプール５２の論理ブロック（有効データを含まない論理ブロックの集合）の中から、最も長いプログラム時間（最大ｔＰＲＯＧ）を有する論理ブロックを選択し、その選択された論理ブロックを、ユーザデータが書き込まれるべき書き込み先論理ブロックとして優先的に割り当てる。
【０２４１】
ダイナミックウェアレベリングの実行によって、プログラム時間が長い論理ブロックが書き込み先論理ブロックに選ばれやすくなる。これにより、プログラム時間が長い論理ブロックを、ユーザデータ（例えば、ホスト２から受信されるライトデータ、またはガベージコレクションによって他の論理ブロックから移動される有効データ、等）の書き込みに優先的に使用することができる。よって、最大プログラム時間（最大ｔＰＲＯＧ）を有する論理ブロックと最小プログラム時間（最小ｔＰＲＯＧ）を有する論理ブロックとの間のプログラム時間差が減少して、複数の論理ブロックそれぞれのプログラム時間が均一化される。よって、複数の論理ブロックそれぞれの消耗度を均一化することができる。
【０２４２】
次に、ウェアレベリング動作制御部２４によって実行されるスタティックウェアレベリングについて説明する。
【０２４３】
ウェアレベリング動作制御部２４は、論理ブロックそれぞれに対応するプログラム時間に基づいて、アクティブブロックプール５１（有効データを含む論理ブロックの集合）から、最も長いプログラム時間（最大ｔＰＲＯＧ）を有する論理ブロックを選択する。そして、ウェアレベリング動作制御部２４は、選択された論理ブロック内の有効データを、選択された論理ブロックのプログラム時間よりも短いプログラム時間を有し、且つフリーブロックプール５２で管理されている論理ブロックに移動する。
【０２４４】
最大プログラム時間（最大ｔＰＲＯＧ）を有する論理ブロックに格納されている有効データは、更新頻度の低いコールドデータである可能性が高い。したがって、コールドデータを短いプログラム時間を有する別の論理ブロックに移動することにより、最大ｔＰＲＯＧを有する論理ブロックを他のデータの書き込みに利用する事が可能となる。
【０２４５】
有効データの移動によって有効データが無くなった論理ブロック（最大ｔＰＲＯＧを有する論理ブロック）はアクティブブロックプール５１からフリーブロックプール５２に移動され、有効データが書き込まれた論理ブロックはアクティブブロックプール５１に移動される。
【０２４６】
このスタティックウェアレベリングの実行によって、プログラム時間が長い論理ブロックがフリーブロックプール５２に移動されやすくなるため、プログラム時間が長い論理ブロックが書き込み先の論理ブロックとして選択されやすくなる。よって、最大プログラム時間（最大ｔＰＲＯＧ）を有する論理ブロックと最小プログラム時間（最小ｔＰＲＯＧ）を有する論理ブロックとの間のプログラム時間差が減少して、複数の論理ブロックそれぞれのプログラム時間が均一化される。よって、複数の論理ブロックそれぞれの消耗度を均一化することができる。
【０２４７】
（ホスト２の構成例）
図３２は、第１、第２または第３実施形態においてホスト２として機能する情報処理装置（コンピューティングデバイス）のハードウェア構成例を示す。
【０２４８】
この情報処理装置は、サーバ（例えばストレージサーバ）のようなコンピューティングデバイスとして実現される。この情報処理装置は、プロセッサ（ＣＰＵ）１０１、メインメモリ１０２、ＢＩＯＳ−ＲＯＭ１０３、ネットワークコントローラ１０５、周辺インタフェースコントローラ１０６、コントローラ１０７、およびエンベデッドコントローラ（ＥＣ）１０８等を含む。
【０２４９】
プロセッサ１０１は、この情報処理装置の各コンポーネントの動作を制御するように構成されたＣＰＵである。このプロセッサ１０１は、複数のＳＳＤ３のいずれか１つからメインメモリ１０２にロードされる様々なプログラムを実行する。メインメモリ１０２は、ＤＲＡＭのようなランダムアクセスメモリから構成される。プロセッサ１０１によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ４１、ＯＳ４２、ファイルシステム４３を含む。
【０２５０】
また、プロセッサ１０１は、不揮発性メモリであるＢＩＯＳ−ＲＯＭ１０３に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳはハードウェア制御のためのシステムプログラムである。
【０２５１】
ネットワークコントローラ１０５は、有線ＬＡＮコントローラ、無線ＬＡＮコントローラのような通信デバイスである。周辺インタフェースコントローラ１０６は、ＵＳＢデバイスのような周辺デバイスとの通信を実行するように構成されている。
【０２５２】
コントローラ１０７は、複数のコネクタ１０７Ａにそれぞれ接続されるデバイスとの通信を実行するように構成されている。複数のＳＳＤ３が複数のコネクタ１０７Ａにそれぞれ接続されてもよい。コントローラ１０７は、ＳＡＳ  ｅｘｐａｎｄｅｒ、ＰＣＩｅ  Ｓｗｉｔｃｈ、ＰＣＩｅ  ｅｘｐａｎｄｅｒ、フラッシュアレイコントローラ、またはＲＡＩＤコントローラ等である。
【０２５３】
ＥＣ１０８は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。ＥＣ１０８は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。ＥＣ１０８はワンチップマイクロコントローラのような処理回路として実現されている。ＥＣ１０８は、キーボード（ＫＢ）などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
【０２５４】
図３３は、第１、第２または第３実施形態における複数のＳＳＤ３とホスト２とを含む情報処理装置（コンピューティングデバイス）の構成例を示す。
【０２５５】
この情報処理装置は、ラックに収容可能な薄い箱形の筐体２０１を備える。多数のＳＳＤ３は筐体２０１内に配置されても良い。この場合、各ＳＳＤ３は筐体２０１の前面２０１Ａに設けられたスロットに取り外し可能に挿入されてもよい。
【０２５６】
システムボード（マザーボード）２０２は筐体２０１内に配置される。システムボード（マザーボード）２０２上においては、ＣＰＵ１０１、メインメモリ１０２、ネットワークコントローラ１０５、コントローラ１０７を含む様々な電子部品が実装されている。これら電子部品がホスト２として機能する。
【０２５７】
以上説明したように、第１〜３実施形態によれば、複数の論理ブロックの各々に含まれる物理ブロックそれぞれの消去時間またはプログラム時間が監視される。そして、ある論理ブロック内に、ある範囲内に収まっている消去時間（またはプログラム時間）を有する物理ブロックと、この範囲から外れている消去時間（またはプログラム時間）を有する物理ブロックとが存在する場合には、この論理ブロックが解体され、同じ範囲内に属する消去時間（またはプログラム時間）を有する複数の物理ブロックにより、新たな論理ブロックが再構築される。
【０２５８】
よって、ある論理ブロック内に特性の悪い物理ブロックが存在する場合には、その特性の悪い物理ブロックがバッドブロックになる前にこの論理ブロックを解体し、新たな論理ブロックを再構築することができ、この論理ブロックに含まれる物理ブロックそれぞれの消耗度を同程度に揃えることができる。したがって、同じ論理ブロックに属する物理ブロックそれぞれの消耗度を均一化することができるので、特性の悪い物理ブロックと特性の良い物理ブロックとが混在される論理ブロックをそのまま使用し続ける場合に比し、この論理ブロック内の特性の悪い物理ブロックがバッドブロックになるタイミングを遅らせることができる。よって、バッドブロックとして扱われる物理ブロックの数の過度の増加を防ぐことができ、これによってＳＳＤ３の寿命の低下を抑制することができる。
【０２５９】
（変形例）
上述した第１〜３実施形態では、論理ブロック解体条件を物理ブロックの消去時間、またはプログラム時間のいずれか一方に基づいて設定しているが、消去時間とプログラム時間の両方に基づいて、論理ブロック解体条件を設定してもよい。
【０２６０】
例えば、論理ブロックの解体および再構築をより積極的に行いたい場合には、以下の条件１または条件２のいずれかが満たされる場合に当該論理ブロックを解体することにしてもよい。
【０２６１】
条件１：  論理ブロックを構成する複数の物理ブロックの少なくとも一つの物理ブロックの消去時間（ｔＢＥＲＡＳＥ）がある時間範囲に収まっており、これら複数の物理ブロックの別の少なくとも一つの物理ブロックの消去時間（ｔＢＥＲＡＳＥ）がこの時間範囲から外れている。
【０２６２】
条件２：  論理ブロックを構成する複数の物理ブロックの少なくとも一つの物理ブロックのプログラム時間（ｔＰＲＯＧ）がある時間範囲に収まっており、これら複数の物理ブロックの別の少なくとも一つの物理ブロックのプログラム時間（ｔＰＲＯＧ）がこの時間範囲から外れている。
【０２６３】
また、論理ブロック内の物理ブロックの消耗度をできるだけ正確に求め、それに基づいて論理ブロックの解体および再構築を行いたい場合には、上述の条件１および条件２の双方が満たされる場合に当該論理ブロックを解体することにしてもよい。
【０２６４】
あるいは、物理ブロックの消去時間（ｔＢＥＲＡＳＥ）とプログラム時間（ｔＰＲＯＧ）とを変数とする関数ｆ（ｔＢＥＲＡＳＥ，ｔＰＲＯＧ）を使用してもよい。この場合、論理ブロック解体／再構築部２３は、まず、論理ブロックを構成する複数の物理ブロックの消去時間およびプログラム時間に基づいて各物理ブロックに対応する関数ｆの値を算出し、以下の条件が満たされる場合に当該論理ブロックを解体することにしてもよい。
【０２６５】
条件：  論理ブロックを構成する複数の物理ブロックの少なくとも一つの物理ブロックに対応する関数ｆの値がある範囲に属し、且つこれら物理ブロックの別の少なくとも一つの物理ブロックに対応する関数ｆの値が別の範囲に属する。また、tPROGは必ずしも書き込み完了時の値で無くてもよく、書き込み途中の値として前記論理ブロックの解体判断に供してもよい。同様に、tBERASEは必ずしも消去完了時の値で無くてもよく、消去途中の値として前記論理ブロックの解体判断に供してもよい。
【０２６６】
なお、上述の各条件が満たされているか否かを判定する処理では、図２２で説明したような、消去回数ごとに閾値の有効範囲が区切られている幾つかの閾値が使用されてもよいし、図１６で説明したような、有効範囲の制限のない１以上の閾値が使用されてもよい。例えば、条件（１）、（２）の判定のどちらについても、消去回数ごとに閾値の有効範囲が区切られている幾つかの閾値を使用してもよいし、有効範囲の制限のない１以上の閾値を使用してもよい。あるいは、条件（１）の判定に、消去回数ごとに閾値の有効範囲が区切られている幾つかの閾値を使用し、条件（２）の判定に、有効範囲の制限のない１以上の閾値を使用してもよい。あるいは、条件（１）の判定に、有効範囲の制限のない１以上の閾値を使用してもよいし、条件（２）の判定に、消去回数ごとに閾値の有効範囲が区切られている幾つかの閾値を使用してもよい。
【０２６７】
なお、本実施形態では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【０２６８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２６９】
２…ホスト、３…ＳＳＤ、４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、２１…消去時間モニタ部、２２…プログラム時間モニタ部、２３…論理ブロック解体／再構築部、２４…ウェアレベリング動作制御部。
【図１】
2018142240.tif 000003
【図２】
2018142240.tif 000004
【図３】
2018142240.tif 000005
【図４】
2018142240.tif 000006
【図５】
2018142240.tif 000007
【図６】
2018142240.tif 000008
【図７】
2018142240.tif 000009
【図８】
2018142240.tif 000010
【図９】
2018142240.tif 000011
【図１０】
2018142240.tif 000012
【図１１】
2018142240.tif 000013
【図１２】
2018142240.tif 000014
【図１３】
2018142240.tif 000015
【図１４】
2018142240.tif 000016
【図１５】
2018142240.tif 000017
【図１６】
2018142240.tif 000018
【図１７】
2018142240.tif 000019
【図１８】
2018142240.tif 000020
【図１９】
2018142240.tif 000021
【図２０】
2018142240.tif 000022
【図２１】
2018142240.tif 000023
【図２２】
2018142240.tif 000024
【図２３】
2018142240.tif 000025
【図２４】
2018142240.tif 000026
【図２５】
2018142240.tif 000027
【図２６】
2018142240.tif 000028
【図２７】
2018142240.tif 000029
【図２８】
2018142240.tif 000030
【図２９】
2018142240.tif 000031
【図３０】
2018142240.tif 000032
【図３１】
2018142240.tif 000033
【図３２】
2018142240.tif 000034
【図３３】
2018142240.tif 000035