(57)【特許請求の範囲】
【請求項１】
物理領域単位でデータが消去されるメモリが有する複数の物理領域のうちのスペア物理領域を論理領域にマッピングし、マッピングした前記スペア物理領域に、ホストシステムからの書込み要求に従うデータを書き込むメモリコントローラであって、
論理空間を構成する複数の論理領域の各々について登録消去回数が登録される記憶部と、
前記複数の論理領域のうちのいずれかの論理領域にスペア物理領域をマッピングするときのシステム最大消去回数をそのマッピング先の論理領域に関連付けられる前記登録消去回数として前記記憶部に登録するプロセッサと
を有し、
前記システム最大消去回数は、前記複数の物理領域にそれぞれ対応した複数の消去回数のうちの最大値である、
メモリコントローラ。
【請求項２】
前記プロセッサは、
前記システム最大消去回数と、前記複数の論理領域にそれぞれ対応した複数の登録消去回数のうちの最小値である最小登録消去回数とを取得し、
前記取得したシステム最大消去回数と前記取得した最小登録消去回数との差が第１の閾値未満か否かの第１の判断を行い、
前記第１の判断の結果が否定の場合、データコピー処理を行い、
前記データコピー処理は、コピー元物理領域からコピー先物理領域へデータをコピーする処理と、前記コピー先物理領域を前記取得した最小登録消去回数が関連付けられている論理領域にマッピングする処理とを含み、
前記コピー元物理領域は、前記取得した最小登録消去回数が関連付けられている論理領域にマッピングされている物理領域であり、
前記コピー先物理領域は、スペア最大消去回数のスペア物理領域であり、
前記スペア最大消去回数は、１以上のスペア物理領域にそれぞれ対応した消去回数のうちの最大値である、
請求項１記載のメモリコントローラ。
【請求項３】
前記プロセッサは、
前記取得したシステム最大消去回数と、前記スペア最大消去回数との差が第２の閾値未満か否かの第２の判断を行い、
前記第１の判断の結果が否定であり前記第２の判断の結果が肯定の場合に、前記データコピー処理を行う、
請求項２記載のメモリコントローラ。
【請求項４】
前記プロセッサは、
前記複数の物理領域にそれぞれ対応した複数の消去回数のうちの最大値であるシステム最大消去回数と前記ホストシステムからの書込み要求に従う書込み先論理領域に関連付けられている登録消去回数との差が第３の閾値未満か否かの第３の判断を行い、
前記第３の判断の結果が否定の場合に、前記スペア最大消去回数のスペア物理領域を前記書込み先論理領域にマッピングし、
前記第３の判断の結果が肯定の場合に、スペア最小消去回数のスペア物理領域を前記書込み先論理領域にマッピングし、
前記スペア最大消去回数は、１以上のスペア物理領域にそれぞれ対応した消去回数のうちの最大値であり、
前記スペア最小消去回数は、前記１以上のスペア物理領域にそれぞれ対応した消去回数のうちの最小値である、
請求項１記載のメモリコントローラ。
【請求項５】
請求項１乃至４のうちのいずれか１項に記載のメモリコントローラと、
前記メモリコントローラに接続されたメモリと
を有するメモリシステム。
【請求項６】
複数の物理領域を有し物理領域単位でデータが消去されるメモリの制御方法であって、
前記メモリが有する複数の物理領域のうちのスペア物理領域を、前記ホストシステムに提供される論理空間を構成する複数の論理領域のうちのいずれかの論理領域にマッピングし、
前記スペア物理領域を前記論理領域にマッピングするときの、前記複数の物理領域にそれぞれ対応した複数の消去回数のうちの最大値であるシステム最大消去回数を、そのマッピング先の論理領域に登録消去回数として関連付ける、
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、メモリ制御に関し、特に、メモリが有する複数の物理領域の消去回数の平準化に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、複数の物理ブロックにより構成され、各物理ブロックは、複数の物理ページにより構成され、ページ（物理ページ）単位でデータが入出力され、ブロック（物理ブロック）単位でデータが消去される。ＮＡＮＤ型フラッシュメモリのメモリコントローラは、一般に、複数の物理ブロックの消去回数を平準化する、すなわちウエアレベリング処理を行う。
【０００３】
例えば、特許文献１のウエアレベリング処理は、次の通りである。すなわち、フラッシュメモリを構成する複数の物理ブロックの各々について消去回数が管理されているが、最大消去回数と最小消去回数との差が閾値を超えた場合に、最小消去回数の物理ブロックに書かれているデータがスペアブロック（コピー先ブロック）にコピーされ、コピー先ブロックが、コピー元ブロック（最小消去回数の物理ブロック）に代えてコピー元ブロックのマッピング先の論理アドレスにマッピングされ、コピー元のブロックが、スペアブロックとして管理される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２７５７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１によれば、ウエアレベリング処理が頻発する可能性がある。なぜなら、ウエアレベリング処理の後に、複数のスペアブロックにおいて消去回数が最小のスペアブロックが、論理アドレスにマッピングされ、その後に、最大消去回数の物理ブロックの消去回数が更新されれば、フラッシュメモリについて最大消去回数と最小消去回数との差が再び閾値を超えるからである。ウエアレベリング処理が頻発してしまうと、物理ブロックの消去回数が無駄に増えて製品寿命が低下し、また、処理時間がかかるためフラッシュメモリコントローラのパフォーマンスの低下にもつながる。
【０００６】
このような問題は、ＮＡＮＤ型フラッシュメモリに限らず、物理領域に書き込まれているデータを更新するために、その物理領域からデータを消去する必要がある他種のメモリにも存在し得る。
【０００７】
従って、本発明の目的は、ウエアレベリング処理が頻発すること無しに消去回数を平準化することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明のメモリコントローラは、論理領域毎に登録消去回数が登録される記憶部と、いずれかの論理領域にスペア物理領域をマッピングするときのシステム最大消去回数（複数の物理領域にそれぞれ対応した複数の消去回数のうちの最大値）をそのマッピング先の論理領域に関連付けられる登録消去回数として記憶部に登録するプロセッサとを有する。
【発明の効果】
【０００９】
論理領域毎の登録消去回数を基にウエアレベリング処理を行うことにより、ウエアレベリング処理が頻発すること無しに消去回数を平準化できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るフラッシュメモリシステムの構成を示す。
【図２】本発明の実施形態に係るワークエリアに記憶される情報の一例を示す。
【図３】本発明の実施形態に係る第１ウエアレベリング処理のフローチャートである。
【図４】本発明の実施形態に係るデータコピー処理のフローチャートである。
【図５】本発明の実施形態に係る第２ウエアレベリング処理のフローチャートである。
【発明を実施するための形態】
【００１１】
以下、一実施形態に係るメモリシステムが適用されたフラッシュメモリシステム（以下、ＦＭシステム）を説明する。なお、本発明は以下の実施形態に限定されるものではない。また以下に記載した構成要素には、当業者が容易に想定できるもの、実質的に同一のものが含まれる。
【００１２】
図１は、本発明の実施形態に係るＦＭシステムの構成を示す。
【００１３】
ＦＭシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。
【００１４】
ＦＭシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central  Processing  Unit）、ＦＭシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１５】
メモリコントローラ３は、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインタフェースブロック１０と、ＥＣＣ（Error  Correcting  Code）ブロック１１と、ＲＯＭ（Read  Only  Memory）１２とから構成される。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００１６】
ホストインタフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム４がＦＭシステム１に対して処理の実行を指示するためのコマンドである。ホストシステム４よりＦＭシステム１に供給されるデータ等は、ホストインタフェースブロック７を入口としてＦＭシステム１の内部（例えば、バッファ９）に取り込まれる。また、ＦＭシステム１からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００１７】
ホストインタフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２には、アクセス対象領域のセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、アクセス対象領域の先頭のＬＢＡ（Logical  Block  Address）が書き込まれる。
【００１８】
記憶部の一実施例であるワークエリア８は、フラッシュメモリ２の制御に必要なデータを一時的に格納する作業領域であり、例えば複数のＳＲＡＭ（Static  Random  Access  Memory）セルによって構成されている。ワークエリア８には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル等が記憶される。アドレス変換テーブルを用いて、論理アドレスを物理アドレスに変換することができる（アクセス先の論理ブロックにマッピングされている物理ブロックを特定することができる）。
【００１９】
バッファ９は、フラッシュメモリ２から読み出したデータを、ホストシステム４が受け取り可能な状態となるまで保持する。また、バッファ９は、フラッシュメモリ２に書き込むデータを、フラッシュメモリ２が書き込み可能な状態となるまで保持する。
【００２０】
フラッシュメモリインタフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２１】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加される誤り訂正符号（ＥＣＣ：Error  Correcting  Code）を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００２２】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
【００２３】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、メモリコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、ＲＯＭ１２から読み出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインタフェースブロック１０に処理を実行させる。
【００２４】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリからなる。ＮＡＮＤ型フラッシュメモリは、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ（物理ページ）単位で行われ、データ消去動作はブロック（物理ブロック）単位で行われる。物理ブロックは、複数の物理ページで構成される。
【００２５】
本実施形態の書込み処理では、ホストシステム４によって、コマンドレジスタＲ１に、書き込みコマンドを示すコマンドコードが書き込まれ、セクタ数レジスタＲ２に、書き込むデータのセクタ数が書き込まれ、ＬＢＡレジスタＲ３には、書き込みを開始する先頭データに対応するＬＢＡが書き込まれる。セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム４から与えられるデータが書き込まれる。ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域（以下、論理セクタ領域と言う）に付けた通番であるＬＢＡで管理されている。また、複数個の論理セクタ領域で構成された論理ブロックが形成され、この論理ブロックに対して、１個又は複数個の物理ブロックが割り当てられる。
論理ブロックと物理ブロックの対応関係は、アドレス変換テーブルを用いて管理される。アドレス変換テーブルは、例えばワークエリア８に記憶される。
【００２６】
図２は、ワークエリア８に記憶される情報の一例を示す。
【００２７】
ワークエリア８には、例えば、物理ブロック管理テーブル２０１、システム最大消去回数２０２、スペア最大消去回数２０３、スペア最小消去回数２０４、アドレス変換テーブル２０５、閾値Ｔｈ１、閾値Ｔｈ２及び閾値Ｔｈ３が記憶される。
【００２８】
物理ブロック管理テーブル２０１は、各物理ブロックに関する情報を有し、例えば、物理ブロック毎に、種類及び消去回数を有する。物理ブロック（種類）としては、使用中ブロック（論理アドレスにマッピングされている物理ブロック）と、スペアブロック（マッピング可能であり空き状態の物理ブロック）と、不良ブロック（マッピング不可の物理ブロック）とがある。
【００２９】
システム最大消去回数２０２は、物理ブロック管理テーブル２０１から取得された情報の一例であり、システム最大消去回数を表す値である。「システム最大消去回数」とは、ＦＭシステム１のフラッシュメモリ２についての最大の消去回数である。
【００３０】
スペア最大消去回数２０３は、物理ブロック管理テーブル２０１から取得された情報の一例であり、スペア最大消去回数を表す値である。「スペア最大消去回数」とは、１以上のスペアブロックにそれぞれ対応した１以上の消去回数のうちの最大の消去回数である。
【００３１】
スペア最小消去回数２０４は、物理ブロック管理テーブル２０１から取得された情報の一例であり、スペア最小消去回数を表す値である。「スペア最小消去回数」とは、１以上のスペアブロックにそれぞれ対応した１以上の消去回数のうちの最小の消去回数である。
【００３２】
アドレス変換テーブル２０５は、ＬＢＮ（論理ブロック番号）毎に、マッピングされている物理ブロックのＰＢＡ（物理ブロックアドレス（例えば番号））と、登録消去回数とを有する。論理ブロックは論理領域の一例であり、物理ブロックは物理領域の一例である。本実施形態において、「登録消去回数」とは、アドレス変換テーブル２０５に登録された消去回数であり、物理ブロックがマッピングされたときのシステム最大消去回数である。すなわち、ＬＢＮ毎の登録消去回数は、そのＬＢＮに割り当てられた物理ブロックの消去回数ではなく、そのＬＢＮに物理ブロックがマッピングされたときのシステム最大消去回数である。マイクロプロセッサ６は、論理ブロックに物理ブロックをマッピングするとき、その時点でのシステム最大消去回数を、登録消去回数として、物理ブロックのＰＢＡと一緒にアドレス変換テーブル２０５に登録する。
【００３３】
閾値Ｔｈ１、閾値Ｔｈ２及び閾値Ｔｈ３の各々は、ウエアレベリング処理（後述の第１及び第２のウエアレベリング処理）において比較される閾値である。閾値Ｔｈ１、閾値Ｔｈ２及び閾値Ｔｈ３のうちの少なくとも１つは、ユーザにより変更可能な値であってもよいし、変更不可能な固定値でもよい。
【００３４】
各消去回数２０２〜２０４は、物理ブロック管理テーブル２０１がマイクロプロセッサ６により更新される都度に（いずれかの物理ブロックの消去回数が更新される都度、又は、スペアブロックが論理ブロックに割り当てられる都度に）、マイクロプロセッサ６により必要に応じて更新される。また、各消去回数２０２〜２０４は、ワークエリア８に常駐されないでもよい。また、図２に示した情報の少なくとも一部が、メモリコントローラ３における、ワークエリア８とは別の記憶領域に、記憶されてもよい。また、図２に示した情報の少なくとも一部（例えばアドレス変換テーブル２０５）が、フラッシュメモリ２に保存されてもよい。
【００３５】
以下、本実施形態に係るウエアレベリング処理を説明する。
【００３６】
図３は、本実施形態に係る第１ウエアレベリング処理のフローチャートである。
【００３７】
第１ウエアレベリング処理は、例えば、スタティックなウエアレベリング処理の一例であり、繰り返し（例えば、定期的に、又は、ＦＭシステム１の状況が所定の条件を満たす都度に）開始される。
【００３８】
マイクロプロセッサ６が、アドレス変換テーブル２０５から最小の登録消去回数を検索し、且つ、システム最大消去回数２０２を取得する（Ｓ３０１）。
【００３９】
マイクロプロセッサ６が、取得されたシステム最大消去回数２０２と検索により得られた最小登録消去回数との差（第１の差）が閾値Ｔｈ１未満か否かを判断する（Ｓ３０２）。
【００４０】
Ｓ３０２の判断結果が否定の場合（つまり、第１の差が閾値Ｔｈ１以上の場合）（Ｓ３０２：ＮＯ）、マイクロプロセッサ６は、スペア最大消去回数２０３を取得し（Ｓ３０３）、システム最大消去回数２０２とスペア最大消去回数２０３との差（第２の差）が閾値Ｔｈ２未満か否かを判断する（Ｓ３０４）。
【００４１】
Ｓ３０４の判断結果が肯定の場合（Ｓ３０４：ＹＥＳ）、マイクロプロセッサ６は、データコピー処理を行う（Ｓ３０５）。具体的には、次の処理を行う。すなわち、図４に示すように、マイクロプロセッサ６は、最小登録消去回数に対応した物理ブロック（コピー元ブロック）からスペア最大消去回数２０３に対応したスペアブロック（コピー先ブロック）にデータをコピーする（Ｓ４０１）。マイクロプロセッサ６は、コピー先ブロックを、コピー元ブロックに代えてコピー元ブロックのマッピング先の論理ブロックにマッピングする（Ｓ４０２）。マイクロプロセッサ６は、コピー元ブロックからデータを消去し、コピー元ブロックの消去回数を更新し（例えば１を加算し）、コピー元ブロックをスペアブロックとして管理する（Ｓ４０３）。Ｓ４０２により、アドレス変換テーブル２０５が更新される。また、Ｓ４０３により、物理ブロック管理テーブル２０１が更新され、それに伴い、スペア最大消去回数２０３及びスペア最小消去回数２０４のうちの少なくともスペア最大消去回数２０３が更新される。
【００４２】
Ｓ３０２の判断結果が肯定の場合（Ｓ３０２：ＹＥＳ）、又は、Ｓ３０４の判断結果が否定の場合（つまり、第２の差が閾値Ｔｈ２以上の場合）（Ｓ３０４：ＮＯ）、マイクロプロセッサ６は、データコピー処理（Ｓ３０５）を行うことなく第１ウエアレベリング処理を終了する。
【００４３】
第１ウエアレベリング処理によれば、「閾値Ｔｈ１」が設定されている意味は、当面消去も書き込みも行われていない物理ブロックを認識するためであり、「閾値Ｔｈ２」は、最近までに消去されているスペアブロックがあるか否かを判断するためである。「閾値Ｔｈ１」及び「閾値Ｔｈ２」の少なくとも１つは、フラッシュメモリ２の耐久性等により適宜決めることができる。
【００４４】
以下、閾値Ｔｈ１及び閾値Ｔｈ２の意義と、Ｓ３０２及びＳ３０４の判断の意義を説明する。
【００４５】
まず、ウエアレベリングの基本的な考え方によれば、高頻度更新論理ブロック（比較的更新頻度が高い論理ブロック）に割り当てられる物理ブロックは、消去回数が大きくなりやすく、低頻度更新論理ブロック（比較的更新頻度が低い論理ブロック）に割り当てられる物理ブロックは、消去回数が小さく、故に、高頻度更新論理ブロックには、消去回数が小さい物理ブロックが割り当てられ、低頻度更新論理ブロックには、消去回数が大きい物理ブロックが割り当てられることが、消去回数の平準化の観点で好ましい。
【００４６】
本実施形態によれば、論理ブロックに物理ブロックが新たにマッピングされたときに、その論理ブロックに、物理ブロックのマッピング時点のシステム最大消去回数（登録消去回数）が関連付けられる。各論理ブロックの登録消去回数は、その論理ブロックにマッピングされている物理ブロックが別の物理ブロックに変更されたときに、その時点のシステム最大消去回数に更新される。
【００４７】
閾値Ｔｈ１とＳ３０２との意義を説明する。最小登録消去回数に対応した論理ブロックは、いつまでも更新がされていない論理ブロックである。本実施形態では、そのような論理ブロックに割り当てられる物理ブロックの消去回数は最小とみなされる。Ｓ３０２の判断では、最小登録消去回数に対応した論理ブロックにマッピングされている物理ブロックの実際の消去回数は考慮されない。システム最大消去回数と最小登録消去回数の差が大きければ、いつまでも更新がされていない論理ブロックが存在し故に消去回数にばらつきが生じているとみなされ、データコピー処理（Ｓ３０５）が行われる方向に処理が進む。
【００４８】
また、閾値Ｔｈ１と比較される差分は、システム最大消去回数と最小登録消去回数との差分であるが、登録消去回数は、いずれかの物理ブロックからデータが消去されたからといって更新されるものではない。このため、ウエアレベリング処理の頻発を回避できる。
【００４９】
次に、閾値Ｔｈ２とＳ３０４との意義を説明する。システム最大消去回数とスペア最大消去回数との差が小さければ、データコピー処理（Ｓ３０５）が行われる。システム最大消去回数とスペア最大消去回数との差が小さいということは、スペア最大消去回数は十分大きいということである。そして、閾値Ｔｈ１について述べたように、最小登録消去回数に対応した論理ブロックは、いつまでも更新がされていない論理ブロックであり、本実施形態では、そのような論理ブロックにマッピングされている物理ブロックの消去回数は最小とみなされる。従って、消去回数が最小とみなされた物理ブロックから、スペア最大消去回数のスペアブロックにデータをコピーすることは、消去回数の平準化の理屈にかなう。
【００５０】
図５は、本実施形態に係る第２ウエアレベリング処理のフローチャートである。
【００５１】
第２ウエアレベリング処理は、例えば、ダイナミックなウエアレベリング処理の一例であり、具体的には、例えば、新規マッピング書込み処理である。新規マッピング書込み処理とは、ホストシステム４からの書込みコマンドで指定されているＬＢＡが属する論理ブロック（書込み先論理ブロック）にマッピングされている物理ブロックに空きの物理ページが無くスペアブロックをマッピングする必要があるケースでの書込み処理である。
【００５２】
マイクロプロセッサ６は、書込み先論理ブロックに対応した登録消去回数をアドレス変換テーブル２０５から取得する（Ｓ５０１）。マイクロプロセッサ６は、システム最大消去回数２０２と取得した登録消去回数との差（第３の差）が閾値Ｔｈ３未満か否かを判断する（Ｓ５０２）。
【００５３】
Ｓ５０２の判断結果が否定の場合（Ｓ５０２：ＮＯ）、マイクロプロセッサ６は、スペア最大消去回数２０３を取得し（Ｓ５０３）、スペア最大消去回数２０３のスペアブロックを書込み先論理ブロックにマッピングし、そのマッピングしたスペアブロックにデータ（ホストシステム４からの書込みコマンドに従う書込み対象データ）を書き込む（Ｓ５０５）。
【００５４】
一方、Ｓ５０２の判断結果が肯定の場合（Ｓ５０２：ＹＥＳ）、マイクロプロセッサ６は、スペア最小消去回数２０４を取得し（Ｓ５０４）、スペア最小消去回数２０４のスペアブロックを書込み先論理ブロックにマッピングし、そのマッピングしたスペアブロックにデータを書き込む（Ｓ５０５）。
【００５５】
第２ウエアレベリング処理によれば、システム最大消去回数と書込み先論理ブロックに対応する登録消去回数との差が大きければ（閾値Ｔｈ３以上であれば）、書込み先論理ブロックに対する書込みの頻度は低く、故に、スペア最大消去回数のスペアブロックが割り当てられる。一方、システム最大消去回数と書込み先論理ブロックに対応する登録消去回数との差が小さければ（閾値Ｔｈ３未満であれば）、書込み先論理ブロックに対する書込みの頻度は高く、故に、スペア最小消去回数のスペアブロックが割り当てられる。これにより、消去回数の平準化が実現される。
【００５６】
本実施形態によれば、ほとんど書込み先とならない論理ブロックについても消去回数を平準化できる。また、過去の期間において書込み先となる頻度が高かったが直近の期間において書込み先となる頻度が低い論理ブロック群についても、消去回数を平準化できる。更に、フラッシュメモリ２の容量又は耐久性によって閾値Ｔｈ１及びＴｈ２の少なくとも１つを設定できるので、フラッシュメモリ２の耐久性等に基づき第１ウエアレベリング処理の頻度を調節できる。
【００５７】
以上、本発明の一実施形態を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。例えば、上述したＦＭシステム１は、フラッシュメモリ以外のメモリ（揮発性メモリ又は不揮発性メモリ）を有するメモリシステム全般に適用することができる。また、メモリコントローラが有するプロセッサは、典型的にはマイクロプロセッサでよいが、処理の一部を実行するハードウェア回路を含んでいてもよい。また、登録消去回数は、アドレス変換テーブルに登録されなくてもよく、アドレス変換テーブルとは別のテーブル等により論理アドレスに関連付けられていればよい。
【符号の説明】
【００５８】
１：ＦＭシステム
【図１】
0005858081.tif 000002
【図２】
0005858081.tif 000003
【図３】
0005858081.tif 000004
【図４】
0005858081.tif 000005
【図５】
0005858081.tif 000006