(57)【要約】【課題】ロット、個体、ブロック間のバラツキを吸収して、精度の高いウェアレベリングを行うこと。【解決手段】データ消去の単位であるブロックを複数個有する不揮発性半導体メモリ２０と、不揮発性半導体メモリ２０における書き込みに要する書き込み時間および消去に要する消去時間の少なくとも一方をモニタするモニタ部１２，１３と、モニタ部１２，１３によってモニタされた書き込み時間および消去時間の少なくとも一方をブロック単位に管理するための管理テーブル３１と、管理テーブル３１に基づいてブロック間の書き換え回数を平均化させるウェアレベリング処理を行うウェアレベリング制御部１０とを具える。【選択図】図１
2011070346.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、
前記不揮発性半導体メモリのデータ消去に要する時間をモニタする消去時間モニタ部と、
前記消去時間を前記ブロック単位に管理するための管理テーブルと、
前記管理テーブルに基づいてブロック間の書き換え回数を平均化させるウェアレベリング制御部と、
を備えることを特徴とするメモリシステム。
【請求項２】
前記不揮発性半導体メモリのデータ書き込みに要する時間をモニタする書き込み時間モニタ部を更に備え、
前記管理テーブルは、更に、前記書き込み時間を前記ブロック単位に管理する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記ウェアレベリング制御部は、新たなデータの書き込みに際して、有効データを含まない空きブロックのなかから、最も消去時間が短いブロックを選択することを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記ウェアレベリング制御部は、前記消去時間が所定の閾値を超えた第１のブロックが発生したことを検出した場合、前記第１のブロックを、前記消去時間が最も短い第２のブロックと交換することを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記ウェアレベリング制御部は、新たなデータの書き込みに際して、有効データを含まない空きブロックのなかから、最も書き込み時間が長いブロックを選択することを特徴とする請求項２に記載のメモリシステム。
【請求項６】
前記ウェアレベリング制御部は、前記書き込み時間が所定の閾値を超えた第１のブロックが発生したことを検出した場合、前記第１のブロックを、前記書き込み時間が最も短い第２のブロックと交換することを特徴とする請求項２に記載のメモリシステム。
【請求項７】
前記管理テーブルに基づいて、前記不揮発性半導体メモリが寿命に到達したか否かを判断する寿命管理部をさらに具えることを特徴とする請求項１に記載のメモリシステム。
【請求項８】
前記寿命管理部は、前記管理テーブルに登録された各ブロックの消去時間の平均値が所定の閾値よりも長くなった場合に、寿命に到達したと判断することを特徴とする請求項７に記載のメモリシステム。
【請求項９】
前記管理テーブルに基づいて、前記不揮発性半導体メモリが寿命に到達したか否かを判断する寿命管理部をさらに具えることを特徴とする請求項２に記載のメモリシステム。
【請求項１０】
前記寿命管理部は、前記管理テーブルに登録された各ブロックの書き込み時間の平均値が所定の閾値よりも短くなった場合に、寿命に到達したと判断することを特徴とする請求項９に記載のメモリシステム。
【請求項１１】
各ブロックの書き換え回数をモニタする書き換え回数モニタ部を更に備え、
前記管理テーブルは、更に、前記書き換え回数を前記ブロック単位に管理する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項１２】
前記ウェアレベリング制御部は、新たなデータの書き込みに際して、
有効データを含まない空きブロックのなかから最も消去時間が短いブロックを選択し、
最も消去時間が短いブロックが複数存在する場合は、前記書き換え回数が最も少ないブロックを選択する、
ことを特徴とする請求項１１に記載のメモリシステム。
【請求項１３】
各ブロックの書き換え回数をモニタする書き換え回数モニタ部を更に備え、
前記管理テーブルは、更に、前記書き換え回数を前記ブロック単位に管理する、
ことを特徴とする請求項２に記載のメモリシステム。
【請求項１４】
前記ウェアレベリング制御部は、新たなデータの書き込みに際して、
有効データを含まない空きブロックのなかから最も書き込み時間が長いブロックを選択し、
最も書き込み時間が長いブロックが複数存在する場合は、前記書き換え回数が最も少ないブロックを選択する、
ことを特徴とする請求項１３に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリである。その寿命は、書き換え回数に依存している。ＮＡＮＤ型フラッシュメモリのデータの書き込み／消去は、基板−制御ゲート間に高電圧を印加することにより、浮遊ゲートに電子を注入／放出させる。これを多数回行うと浮遊ゲート周りのゲート酸化膜が劣化し、浮遊ゲートに注入した電子が抜けていき、データが破壊されてしまう。すなわち、書き換え回数が増えると、書き換えてからデータを保持（リテンション）する期間が短くなる（リテンション特性の低下）。
【０００３】
一方、パーソナルコンピュータなどのホスト機器が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている。そのため、データを記録する際にホスト機器から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、すなわち消去処理が集中し、消去回数の偏りが大きくなる。そのため、ＮＡＮＤ型フラッシュメモリでは、データ更新箇所を均等に分散させるウェアレベリングと呼ばれる処理が行われている。
【０００４】
ウェアレベリングでは、特定の消去単位(ブロック)への、書き込み、消去の集中を防ぐために、ブロック間で書き換え回数が均一に分布するようにしており、その制御に、書き込み回数・消去回数を使っている（例えば特許文献１）。特許文献１には、消去回数（書き込み回数）が所定数を越えたブロックと消去回数（書き込み回数）が少ないブロックとの物理アドレスを交換することが示されている。
【０００５】
しかし、書き込み回数・消去回数の耐量は、デバイス品種の他、同一の品種においてもロット・個体・ブロック間などによってある程度のバラツキがあるので、書き込み回数・消去回数に基づく従来のウェアレベリング制御では、想定の回数より早く劣化したり、その逆の場合があったりし、精度の高いウェアレベリング制御が難しいという問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２７６８３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、ロット、個体、ブロック間のバラツキを吸収して、精度の高いウェアレベリングをなし得るメモリシステムを提供する。
【課題を解決するための手段】
【０００８】
本願発明の一態様によれば、データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、前記不揮発性半導体メモリのデータ消去に要する時間をモニタする消去時間モニタ部と、前記消去時間を前記ブロック単位に管理するための管理テーブルと、前記管理テーブルに基づいてブロック間の書き換え回数を平均化させるウェアレベリング制御部と、を具えるメモリシステムが提供される。
【発明の効果】
【０００９】
本発明によれば、ロット・個体・ブロック間などのばらつきに左右されず各個体・ブロック毎の劣化具合に合わせた精度の高いウェアレベリングが可能となり、メモリシステムの信頼性の向上に寄与することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施の形態にかかるメモリシステムのシステム構成を示すブロック図。
【図２】図２は、書き込み／消去時間管理テーブルの管理データを示す図。
【図３】図３は、書き換え回数と消去時間の関係を示す図。
【図４】図４は、消去動作シーケンスを示すタイムチャート。
【図５】図５は、書き換え回数と書き込み時間の関係を示す図。
【図６】図６は、書き込み動作シーケンスを示すタイムチャート。
【図７】図７は、書き込み電圧の印加動作を示すタイムチャート。
【図８】図８は、動的ウェアレベリング手順を示すフローチャート。
【図９】図８は、静的ウェアレベリング手順を示すフローチャート。
【図１０】図１０は、他のメモリシステムのシステム構成を示すブロック図。
【図１１】図１１は、他の書き込み／消去時間管理テーブルの管理データを示す図。
【図１２】図１２は、他の動的ウェアレベリング手順を示すフローチャート。
【図１３】図１３は、他の静的ウェアレベリング手順を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
【００１２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかるメモリシステムとしてのＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、コントローラ１０と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）２０と、揮発性半導体メモリとしてのＤＲＡＭ３０と、ホスト装置１と接続するためのホスト接続インタフェース（ホストＩ／Ｆ）４０などを備えている。ＳＳＤ１００は、ホストＩ／Ｆ４０を介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。
【００１３】
ＮＡＮＤメモリ２０は、ホスト１によって指定されたユーザデータを記憶したり、ＤＲＡＭ３０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ２０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページおよび下位ページを使用して多値記憶が可能である。ＮＡＮＤメモリ２０は、複数のＮＡＮＤメモリチップによって構成され、各ＮＡＮＤメモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤメモリ２０では、物理ページごとにデータの書き込みおよびデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【００１４】
物理ブロックアドレスは、物理ブロックに割り当てられた固定的なアドレスである。論理ブロックアドレスは、ホスト１から指定されるアドレスや、仮想的なブロックである論理ブロックに割り当てられる変更可能なアドレスである。論理ブロックとは、例えば、物理ブロックを複数組み合わせて構成される仮想的なブロックのことをいう。
【００１５】
ＤＲＡＭ３０は、データ転送用、管理情報記録用の記憶部として使用される。具体的には、データ転送用の記憶部（データ転送用キャッシュ領域）は、ホスト１から書込要求があったデータをＮＡＮＤメモリ２０に書込む前に一時的に保存したり、ホスト１から読出要求があったデータをＮＡＮＤメモリ２０から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、ＮＡＮＤメモリ２０に記憶されるデータの格納位置を管理するための管理情報（論理アドレスと物理アドレスとの対応など）、書き込み時間Ｔｗおよび消去時間Ｔｅを物理ブロック単位に管理するための管理情報などを含む各種管理情報を格納するために使用される。
【００１６】
ＮＡＮＤメモリ２０には、図２に示すような、書き込み／消去時間管理テーブル３１が記憶されており、書き込み／消去時間管理テーブル３１はシステム起動時、ＮＡＮＤメモリ２０から読み出されて、ＤＲＡＭ３０に格納される。書き込み／消去時間管理テーブル３１は、書き込みに要する書き込み時間Ｔｗと、消去に要する消去時間Ｔｅを、物理ブロック単位（物理ブロックアドレス単位）に管理するためのテーブルであり、書き込み時間Ｔｗ、消去時間Ｔｅとしては、実際にモニタされた最新の時間が登録されている。
【００１７】
コントローラ１０は、ホスト１とＮＡＮＤメモリ２０との間でＤＲＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御する。コントローラ１０とＮＡＮＤメモリ２０との間は、コマンド、アドレス、データなどを入出力するためのコントロールＩ／Ｏ線（ＣｔｒｌＩ／Ｏ）によって接続され、また、ＮＡＮＤメモリ２０がレディ状態にあるかビジー状態にあるかを示すレディ／ビジー信号（Ｒｙ／Ｂｙ）がＮＡＮＤメモリ２０からコントローラ１０に入力されている。コントローラ１０は、読み書き制御部１１、消去時間モニタ部１２、書き込み時間モニタ部１３、ウェアレベリング制御部１４、寿命管理部１５を具えている。
【００１８】
読み書き制御部１１は、ＤＲＡＭ３０に格納された管理情報に基づいて、ＤＲＡＭ３０のキャッシュ領域を介してＮＡＮＤメモリ２０に対するデータの読み書き制御を行う。
【００１９】
消去時間モニタ部１２は、ＮＡＮＤメモリ２０の物理ブロックの消去の度、もしくは予め決めた所定の周期、頻度で各物理ブロックの消去時間Ｔｅを測定する。図３は、書き換え回数と、消去時間Ｔｅとの関係を示すグラフである。このグラフは、多数の物理ブロックについての検証データの平均をとったものであり、このグラフによれば、初期状態では、消去時間は４ｍｓであるが、書き換え回数が増加するにしたがって、消去時間が増加している。また、書き換え回数がｋ１を越えたあたりから消去時間が８ｍｓを超えだして、急激に消去特性が悪くなっており、劣化が始まっていると解釈できる。したがって、消去時間Ｔｅの履歴からブロックの劣化具合がわかり、消去時間をウェアレベリングの対象ブロックを選ぶ基準とすることができる。
【００２０】
図４は、消去処理の動作シーケンスを示すタイムチャートである。消去処理では、コントロールＩ／Ｏ線を介して、消去を示すコマンド「６０ｈ」、アドレス、コマンド「Ｄ０ｈ」が入力され、消去処理が実行される。消去処理の実行中は、レディ／ビジー信号（Ｒｙ／Ｂｙ）がビジーに立ち下がっている。消去処理が終了すると、レディ／ビジー信号（Ｒｙ／Ｂｙ）がレディに立ち上がり、コントロールＩ／Ｏ線を介して、コマンド「７０ｈ」が入力され、これに応答してステータス信号（正常終了／異常終了など）が出力されている。
【００２１】
消去時間モニタ部１２では、消去コマンド「６０ｈ」を入力した後のレディ／ビジー信号（Ｒｙ／Ｂｙ）をモニタし、レディ／ビジー信号（Ｒｙ／Ｂｙ）がビジーに立ち下がってからレディに立ち上がるまでの時間（ｔBERASE）を消去時間Ｔｅとして測定し、測定した消去時間Ｔｅを、書き込み／消去時間管理テーブル３１の対応する物理ブロックのエントリに登録する。
【００２２】
書き込み時間モニタ部１３は、物理ページに対する書き込みの度、もしくは予め決めた所定の周期、頻度で各物理ページの書き込み時間Ｔｗｐを測定する。図５は、書き換え回数と、ページ書き込み時間Ｔｗｐとの関係を示すグラフである。このグラフは、多数の物理ページについての検証データの平均をとったものであり、このグラフによれば、書き込み時間Ｔｗｐは、書き換え回数が増加するにしたがって、徐々に減少している。したがって、書き込み時間の履歴からブロックの劣化具合がわかり、書き込み時間をウェアレベリングの対象ブロックを選ぶ基準とすることができる。
【００２３】
図６は、書き込み処理の動作シーケンスを示すタイムチャートである。書き込み処理では、コントロールＩ／Ｏ線を介して、書き込みを示すコマンド「８０ｈ」、アドレス、データ、コマンド「１０ｈ」が入力され、書き込み処理が実行される。書き込み処理の実行中は、レディ／ビジー信号（Ｒｙ／Ｂｙ）がビジーに立ち下がっている。書き込み処理が終了すると、レディ／ビジー信号（Ｒｙ／Ｂｙ）がレディに立ち上がり、コントロールＩ／Ｏ線を介して、コマンド「７０ｈ」が入力され、これに応答してステータス信号（正常終了／異常終了など）が出力されている。
【００２４】
書き込み時間モニタ部１３は、書き込みコマンド「８０ｈ」を入力した後のレディ／ビジー信号（Ｒｙ／Ｂｙ）をモニタし、レディ／ビジー信号（Ｒｙ／Ｂｙ）がビジーに立ち下がってからレディに立ち上がるまでの時間（ｔPROG）をページ書き込み時間Ｔｗｐとして測定する。このようにして、書き込み時間モニタ部１３は、各ページのページ書き込み時間Ｔｗｐを測定し、測定した各ページのページ書き込み時間Ｔｗｐを物理ブロック単位の書き込み時間Ｔｗに変換する。物理ブロック単位の書き込み時間Ｔｗを求める手法としては、下記のいずれかを採用する。
・物理ブロッ内の各ページのページ書き込み時間Ｔｗｐの平均値を求める
・最もページ書き込み時間が短い（最も経年変化が大きいページ）ものを当該物理ブロックの書き込み時間Ｔｗとして採用する
・予め決めた所定の物理ページのページ書き込み時間を当該物理ブロックの書き込み時間Ｔｗとして採用する
書き込み時間モニタ部１３では、導出した書き込み時間Ｔｗを書き込み／消去時間管理テーブル３１の対応する物理ブロックのエントリに登録する。
【００２５】
書き込み時間Ｔｗを測定するために、書き込みの際の電圧印加の繰り返し回数ｎ（ループ回数という）を代用してもよい。書き込みの際は、図７に示すように、メモリセルに書き込み電圧Ｖpgmを印加する度に、ベリファイ動作を行って書き込みが正常に行われたか否かをチェックし、書き込みが正常に行われていない場合は、書き込み電圧Ｖpgmの増加、ベリファイ動作を、正常な書き込みが行われるまであるいはタイムアウトするまで繰り返し実行する。したがって、このループ回数ｎを、書き込み時間Ｔｗに代用させることが可能である。消去処理の際も、同様の、消去電圧印加、ベリファイの繰り返し制御を行っているので、ループ回数を消去時間に代用させることが可能であるが、消去処理のループ回数は一般的に少ないので、ループ回数ｎを代用するのは、書き込み時間のほうが有効である。
【００２６】
ウェアレベリング制御部１４では、ＤＲＡＭ３０に記憶された書き込み／消去時間管理テーブル３１を用いてウェアレベリング制御を実行する。ウェアレベリング制御は、ブロック間での書き換え回数を平均化させるものであるが、ウェアレベリング制御には、書き換え回数の少ないブロックから書き込み・消去を行う動的ウェアレベリングと、書き換えが長い間行われず書き換え回数の少ないブロックを書き換え回数の多いブロックと交換する静的ウェアレベリングとがある。ウェアレベリング制御部１４は、書き込み／消去時間管理テーブル３１に登録された、各物理ブロック毎の書き込み時間Ｔｗ、消去時間Ｔｅを用いて対象ブロックを選び、動的および静的ウェアレベリングを実行する。動的および静的ウェアレベリングを実行する際、書き込み時間Ｔｗ、消去時間Ｔｅのうちのどちらまたは両方を使用するかは、デバイスの種類によって予め決めておく。以下の説明では、消去時間Ｔｅを使用するものとする。
【００２７】
まず、図８に示すフローチャートにしたがって動的ウェアレベリングの一手法について説明する。ホスト１からの新たなデータの書き込み要求が発生した場合（ステップＳ１００）、ウェアレベリング制御部１４は、書き込み／消去時間管理テーブル３１を参照して、未使用の空き物理ブロックのなかから、消去時間Ｔｅの最も短いブロックを選択する（ステップＳ１１０）。そして、ウェアレベリング制御部１４は、選択した消去時間Ｔｅの最も短いブロックを読み書き制御部１１に報告する。読み書き制御部１１は、報告された消去時間Ｔｅの最も短いブロックに対しデータの書き込みを実行する（ステップＳ１２０）。書き込み時間Ｔｗをブロック選択基準とする場合も、同様の動的ウェアレベリング制御を実行する。なお、動的ウェアレベリングには、図８で説明した他にも各種手法があり、これら他の動的ウェアレベリング手法に本発明を適用してもよい。
【００２８】
つぎに、図９に示すフローチャートにしたがって静的ウェアレベリングの一手法について説明する。ウェアレベリング制御部１４は、書き込み／消去時間管理テーブル３１に登録されている各ブロックの消去時間Ｔｅをチェックしており、消去時間が所定の閾値時間より長いブロックが発生したことを検出した場合（ステップＳ２００）、消去時間が閾値を超過したブロックを消去時間が最も短いブロックに交換する（ステップＳ２１０）。
【００２９】
例えば、消去時間が閾値を超過したブロックが物理ブロックアドレス「ＢＰ１」を持ち、論理ブロックアドレス「ＢＬ２」を持ち、このブロックに有効データが書き込まれているとする。一方、消去時間が最も短いブロックが空きブロック（内部に有効データが存在しないブロック）であり、この空きブロックが物理ブロックアドレス「ＢＰ３」を持つとする。ウェアレベリング制御部１４は、空きブロック「ＢＰ３」の無効データを消去して、この空きブロック「ＢＰ３」に、ブロック「ＢＰ１」の有効データを、ＤＲＡＭ３０を経由して書き込み、ブロック「ＢＰ３」の論理ブロックアドレスを「ＢＬ２」に変更する。さらに、ウェアレベリング制御部１４は、物理ブロック「ＢＰ１」を空きブロックとし、その論理ブロックアドレスを無効化する。消去時間が閾値を超過したブロックおよび消去時間が最も短いブロックの双方に有効データが書き込まれている場合も、同様のデータの入れ替えおよび論理アドレスの付け替えが行われる。
【００３０】
なお、書き込み時間Ｔｗをブロック選択基準とする場合も、同様の静的ウェアレベリング制御を実行する。また、書き換え回数が０の時の初期の消去時間Ｔｅから所定パーセントだけ消去時間が増加したとき、あるいは書き換え回数が０の時の初期の書き込み時間Ｔｗから所定パーセントだけ書き込み時間が減少したときに、上記静的ウェアレベリングを行うようにしてもよい。書き込み時間Ｔｗおよび消去時間Ｔｅの両方を用いて静的ウェアレベリングを実行する場合は、ステップＳ２００の判断の際に、書き込み時間Ｔｗおよび消去時間Ｔｅの両方を判定し、一方が静的ウェアレベリングの閾値を越えたときに、静的ウェアレベリングを行うようにすればよい。また、静的ウェアレベリングには、図９で説明した他にも各種手法があり、これら他の動的ウェアレベリング手法に本発明を適用してもよい。
【００３１】
寿命管理部１５は、書き込み／消去時間管理テーブル３１の登録データに基づき、当該ＳＳＤ１００の寿命を判断するもので、当該ＳＳＤに寿命が来たと判断した場合、ホスト１にその旨を示す警告を出力する。具体的には、寿命管理部１５は、例えば、書き込み／消去時間管理テーブル３１に登録された各物理ブロックの書き込み時間Ｔｗの平均値、消去時間Ｔｅの平均値を求め、書き込み時間Ｔｗの平均値が寿命管理用の所定の閾値よりも短くなった場合、あるいは消去時間Ｔｅの平均値が寿命管理用の所定の閾値よりも長くなった場合、当該ＳＳＤに寿命が来たと判断した場合、ホスト１にその旨を示す警告を出力する。書き込み時間Ｔｗに関する寿命管理用の閾値は、前述した静的ウェアレベリングのステップＳ２００で使用する書き込み時間Ｔｗ用の閾値よりも小さい値を使用し、消去時間Ｔｅに関する寿命管理用の閾値は、前述した静的ウェアレベリングのステップＳ２００で使用する消去時間Ｔｅ用の閾値よりも大きい値を使用する。
【００３２】
なお、上記では、寿命を平均で判断するようにしたが、最も経年劣化が小さいと判断されるブロックについての書き込み時間Ｔｗおよび／または消去時間Ｔｅと、寿命管理用の閾値との比較に基づいて寿命がきたことを判断するようにしてもよい。すなわち、最も書き込み時間が長いブロックの書き込み時間Ｔｗが所定の寿命管理用の閾値よりも短くなった場合、あるいは最も消去時間が短いブロックの消去時間Ｔｅが所定の寿命管理用の閾値よりも長くなった場合に、寿命がきたことを判断する。また、書き込み時間Ｔｗおよび／または消去時間Ｔｅにより経年劣化が小さいと判断されるブロックが、所定パーセントより少なくなったとき、寿命がきたことを判断してもよい。
【００３３】
このように本実施の形態では、実際にモニタした消去時間および／または書き込み時間に基づいてウェアレベリングを行うようにしているので、ロット・個体・ブロック間などのばらつきに左右されず各個体・ブロック毎の劣化具合に合わせた精度の高いウェアレベリングが可能となる。また、実際にモニタした消去時間および／または書き込み時間に基づいて寿命を判断しているので、ロット・個体・ブロック間などのばらつきに左右されず、正確な寿命判断が可能となる。
【００３４】
図１０は、他のメモリシステムのシステム構成を示すブロック図である。図１０に示すメモリシステムは、図１に示すメモリシステムと比較して、物理ブロック単位の書き換え回数ｋをモニタする書き換え回数モニタ部１６を更に備えている。図１１は、他の書き込み／消去時間管理テーブル３２を示すものである。図１１に示す書き込み／消去時間管理テーブル３２では、書き込み時間Ｔｗ、消去時間Ｔｅの他に、モニタされた物理ブロック単位の書き換え回数（書き込み回数または消去回数）ｋが追加されている。図１２は、管理テーブル３２を用いた動的ウェアレベリングの動作手順を示すものである。
【００３５】
ホスト１からの新たなデータの書き込み要求が発生した場合（ステップＳ３００）、ウェアレベリング制御部１４は、管理テーブル３２を参照して、未使用の空き物理ブロックのなかから、消去時間Ｔｅの最も短いブロックを選択する（ステップＳ３１０）。つぎに、ウェアレベリング制御部１４は、選択した消去時間Ｔｅが最も短いブロックが複数あるか否かを判断する（ステップＳ３２０）。選択したブロックが１個の場合は（ステップＳ３２０ＮＯ）、ウェアレベリング制御部１４は、選択した１個のブロックを読み書き制御部１１に報告する。読み書き制御部１１は、報告された消去時間Ｔｅの最も短いブロックに対しデータの書き込みを実行する（ステップＳ３４０）。
【００３６】
一方、ウェアレベリング制御部１４は、消去時間Ｔｅが最も短いブロックが複数あると判断した場合（ステップＳ３２０ＹＥＳ）、管理テーブル３２を参照して、選択した消去時間Ｔｅの最も短い複数のブロックのなかから、書き換え回数ｋの最も少ないブロックを選択する（ステップＳ３３０）。そして、書き換え回数ｋに基づき選択したブロックを読み書き制御部１１に報告する。書き換え回数ｋのほうが消去時間Ｔｅや書き込み時間Ｔｗよりブロック間の疲労度の定量的（数値的）な差別化が容易なので、書き換え回数ｋを基準にすることにより疲労度が少ないブロックを容易に選択することが可能である。読み書き制御部１１は、報告されたブロックに対しデータの書き込みを実行する（ステップＳ３４０）。
【００３７】
動的ウェアレベリングの際、書き込み時間Ｔｗをブロック選択基準とする場合も、書き込み時間Ｔｗによって選択したブロックが複数存在した場合には、書き換え回数ｋに基づいてブロックを選択させるようにすればよい。また、動的ウェアレベリングにおいて、消去時間Ｔｅをブロック選択基準とする場合、消去時間Ｔｅによって選択したブロックが複数存在した場合、書き込み時間Ｔｗに基づいてブロックを選択させるようにしてもよい。同様に、動的ウェアレベリングにおいて、書き込み時間Ｔｗをブロック選択基準とする場合、書き込み時間Ｔｗによって選択したブロックが複数存在した場合、消去時間Ｔｅに基づいてブロックを選択させるようにしてもよい。
【００３８】
図１３は、管理テーブル３２を用いた静的ウェアレベリングの動作手順を示すものである。ウェアレベリング制御部１４は、管理テーブル３２に登録されている各ブロックの消去時間Ｔｅをチェックしており、消去時間Ｔｅが所定の閾値より長いブロックが発生したことを検出した場合（ステップＳ４００）、検出したブロックが複数有るか否かを判断する（ステップＳ４１０）。検出したブロックが１個の場合は（ステップＳ４１０ＮＯ）、ウェアレベリング制御部１４は、管理テーブル３２を参照して消去時間Ｔｅが最も短いブロックを選択する（ステップＳ４２０）。つぎに、ウェアレベリング制御部１４は、選択した消去時間Ｔｅの最も短いブロックが複数あるか否かを判断する（ステップＳ４３０）。選択したブロックが１個の場合は（ステップＳ４３０ＮＯ）、ウェアレベリング制御部１４は、消去時間が所定の閾値を超過した１つのブロックと、消去時間が最も短い１つのブロックとの交換を行なう（ステップＳ４８０）。
【００３９】
ステップＳ４３０において、選択されたブロックが複数あると判断した場合、ウェアレベリング制御部１４は、管理テーブル３２を参照して、選択した消去時間Ｔｅの最も短い複数のブロックのなかから、書き換え回数ｋの最も少ない１つのブロックを選択する（ステップＳ４４０）。前述したように、書き換え回数ｋのほうが消去時間Ｔｅや書き込み時間Ｔｗよりブロック間の疲労度の定量的（数値的）な差別化が容易なので、書き換え回数ｋを基準により疲労度が少ないブロックを容易に選択することが可能である。この場合は、消去時間が所定の閾値を超過した１つのブロックと、消去時間Ｔｅおよび書き換え回数ｋを基準に選択した１つのブロックとの交換が行われる（ステップＳ４８０）。
【００４０】
一方、ステップＳ４１０において、消去時間Ｔｅが所定の閾値より長いブロックが複数個Ｎ（Ｎ≧２）発生したことを検出した場合（ステップＳ４１０）、ウェアレベリング制御部１４は、これらＮ個のブロックを静的ウェアレベリングの対象とする。具体的には、まず、ウェアレベリング制御部１４は、管理テーブル３２を参照して消去時間Ｔｅがより短いブロックをＮ個選択する（ステップＳ４５０）。消去時間Ｔｅを基準にＮ個のブロックを選択できる場合は、手順がステップＳ４８０に移行され、Ｎ個の消去時間Ｔｅが長いブロックと、消去時間Ｔｅがより短いＮ個のブロックとの交換が行われる。
【００４１】
例えば、消去時間Ｔｅが最も短いブロックがＮ個より多くあるとか、Ｎ個に満たないとか、消去時間Ｔｅを基準に消去時間Ｔｅがより短いブロックをＮ個選択できない場合がある（ステップＳ４６０ＮＯ）。このような場合、ウェアレベリング制御部１４は、管理テーブル３２を参照して、書き換え回数ｋのより少ないブロックをＮ個選択する（ステップＳ４７０）。例えば、消去回数Ｔｅを基準に選択したブロックがＮ個より多くある場合は、これら消去回数Ｔｅを基準に選択した複数のブロックのなかから、書き換え回数ｋのより少ないブロックをＮ個選択する。また、消去回数Ｔｅを基準に選択したブロックがＮ個に満たない場合は、書き換え回数ｋのより少ないブロックを足りない個数だけ選択して、Ｎ個のブロックを選択する。この場合は、この場合は、消去時間が所定の閾値を超過したＮ個のブロックと、消去時間Ｔｅおよび書き換え回数ｋを基準に選択した消去時間が少ないＮ個のブロックとの交換が行われる（ステップＳ４８０）。
【００４２】
なお、静的ウェアレベリングの際に、書き込み時間Ｔｗをブロック選択基準とする場合、書き込み時間Ｔｗによって選択したブロックが複数存在した場合には、書き換え回数に基づいてブロックを選択させるようにすればよい。また、静的ウェアレベリングにおいて、消去時間Ｔｅをブロック選択基準とする場合、消去時間Ｔｅによって選択したブロックが複数存在した場合、書き込み時間Ｔｗに基づいてブロックを選択させるようにしてもよい。同様に、静的ウェアレベリングにおいて、書き込み時間Ｔｗをブロック選択基準とする場合、書き込み時間Ｔｗによって選択したブロックが複数存在した場合、消去時間Ｔｅに基づいてブロックを選択させるようにしてもよい。
【００４３】
また、図１２に示した動的ウェアレベリングにおいて、消去時間Ｔｅ、書き込み時間Ｔｗの代わりに、前述した消去ループ回数、書き込みループ回数を使用しても良い。同様に、図１３に示した静的ウェアレベリングにおいて、消去時間、書き込み時間Ｔｗの代わりに、前述した消去ループ回数、書き込みループ回数を使用しても良い。消去時間Ｔｅや書き込み時間Ｔｗを測定する際に、どの解像度をもって「同じ」時間と判断するかの決定が困難な場合は、消去ループ回数、書き込みループ回数を用いれば定量的判断が容易となる。このような場合は、図１２、図１３で示したように、消去時間Ｔｅ、書き込み時間Ｔｗが最も短いブロックが複数存在する、という状況が多数発生し得るため、書き換え回数ｋを基準としたブロック選択が特に有効である。
【００４４】
また、消去時間Ｔｅの測定において、例えば一度のループに平均４ｍｓ程度を有する場合は、各ブロックの消去時間Ｔｅは、４ｍｓの整数倍近傍に集中すると考えられる。このような場合に、消去時間Ｔｅが４ｍｓ近傍（例えば、３．９ｍｓ、４．１ｍｓなど）のブロック同士で消去時間Ｔｅに差異があると判断するのは煩雑であるから、例えば、ループ回数１回の時の消去時間４ｍｓと、ループ回数２回の時の消去時間８ｍｓとの中間値６ｍｓを閾値として、消去時間Ｔｅが６ｍｓ以下のブロックは全て同じ消去時間を持ち、同様に、消去時間Ｔｅが６ｍｓより大きいブロックは全て同じ消去時間を持つ、と判断してもよい。また、書き込み時間Ｔｗの測定においても同様に、一度のループに要する平均時間を測定することで閾値を設定し、書き込み時間Ｔｗの測定を簡易化してもよい。
【００４５】
また、図１３に示した静的ウェアレベリングにおいて、消去時間Ｔｅが閾値を越える複数のブロックが発生した場合、書き込み回数ｋの多いブロックから優先して先に静的ウェアレベリングを行わせるようにしてもよい。このような制御は、例えばホストからの割り込みが入ってウェアレベリングが途中で中断される際に有利である。
【００４６】
また、図１３に示した静的ウェアレベリングにおいて、ステップＳ４００の判断がＮＯの場合、書き込み回数ｋに基づいて静的ウェアレベリングを行うか否かを判断するようにしてもよい。このように、消去時間Ｔｅ、書き込み時間Ｔｗ、書き込み回数ｋを２つ以上組み合わせて、静的ウェアレベリングを行うか否かを判断すれば、より精度の高い静的ウェアレベリングをなし得る。
【００４７】
また、静的ウェアレベリングを行う際に、消去時間が長く、書き込み時間が短い疲労度の高いブロックを選択する際の閾値基準を緩く設定することで（消去時間の場合は、閾値は短め、書き込み時間の場合は、閾値は長め）、疲労度の高いブロックの選別範囲を広げ、選別したブロックのなかから書き換え回数を基準に静的ウェアレベリングの対象ブロックを選択しても良い。消去時間が短く、書き込み時間が長い疲労度の低いブロックを選択する際も、同様に選別範囲を広げ、選別範囲を広げたなかから書き換え回数を基準に静的ウェアレベリングの被交換用のブロックを選択してもよい。このようにすることで、消去時間あるいか書き込み時間を選別基準とする場合の長所（ロット、個体、ブロック間のバラツキを吸収できる）と、書き込み回数を選別基準とする場合の長所（定量的にブロック間の差別化が容易）を活かしたより精度の高いウェアレベリングを行うことが可能となる。
【符号の説明】
【００４８】
１  ホスト装置、１０  コントローラ、１１  読み書き制御部、１２  消去時間モニタ部、１３  書き込み時間モニタ部、１４  ウェアレベリング制御部、１５  寿命管理部、１６  書き換え回数モニタ部、２０  ＮＡＮＤメモリ、３０  ＤＲＡＭ、３１  書き込み／消去時間管理テーブル。
【図１】
2011070346.tif 000003
【図２】
2011070346.tif 000004
【図３】
2011070346.tif 000005
【図４】
2011070346.tif 000006
【図５】
2011070346.tif 000007
【図６】
2011070346.tif 000008
【図７】
2011070346.tif 000009
【図８】
2011070346.tif 000010
【図９】
2011070346.tif 000011
【図１０】
2011070346.tif 000012
【図１１】
2011070346.tif 000013
【図１２】
2011070346.tif 000014
【図１３】
2011070346.tif 000015