(57)【要約】【課題】ブロック消去回数平均化をより高精度に行うメモリコントローラを提供する。【解決手段】ブロックを複数有する不揮発性メモリ４０の書換え制御を行うメモリコントローラ１０であって、ホスト３が指定するブロック単位の論理アドレスである論理ブロックアドレスとブロックのメモリ４０での記憶位置を示す物理ブロックアドレスとの対応を記憶する第１管理テーブル３１と、ホスト３からメモリ４０への書き込み回数を論理ブロックアドレス毎に記憶する第２管理テーブル３１と、物理ブロックアドレス毎の消去回数を記憶する第３管理テーブル３１、３２と、ホスト３からの論理アドレスを指定した書き込み要求に対して、対応する論理アドレスをもたないスペアブロックを選択して書き込む制御部２３とを備え、論理ブロックアドレス毎に記憶される書き込み回数と物理ブロックアドレス毎に記憶される消去回数に基づいて、消去回数を複数ブロック間で平均化する。【選択図】図１
2011203916.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位であるブロックを複数個有する不揮発性半導体メモリのデータを書き換えるための制御を行うメモリコントローラであって、
ホストが指定する前記ブロック単位の論理アドレスとしての論理ブロックアドレスと、前記ブロックの前記不揮発性半導体メモリでの記憶位置を示す物理ブロックアドレスとの対応を記憶する第１の管理テーブルと、
前記ホストから前記不揮発性半導体メモリへのデータの書き込み回数を前記論理ブロックアドレス毎に記憶する第２の管理テーブルと、
前記物理ブロックアドレス毎のデータ消去回数を記憶する第３の管理テーブルと、
前記ホストからの論理アドレスを指定した書き込み要求に対して、対応する論理アドレスをもたない前記ブロックであるスペアブロックを選択し、当該スペアブロックにデータを書き込む書き込み制御部とを備え、
前記論理ブロックアドレス毎に記憶されるデータの書き込み回数と前記物理ブロックアドレス毎に記憶されるデータ消去回数に基づいて、データ消去回数を複数の前記ブロックの間で平均化することを特徴とするメモリコントローラ。
【請求項２】
前記書き込み制御部は、
前記第２の管理テーブルに記憶されている書き込み回数が相対的に多い論理ブロックアドレスを指定した書き込み要求に対しては前記第３の管理テーブルに記憶されている消去回数が前記スペアブロックの中で相対的に少ないスペアブロックを選択し、
前記第２の管理テーブルに記憶されている書き込み回数が相対的に少ない論理ブロックアドレスを指定した書き込み要求に対しては前記第３の管理テーブルに記憶されている消去回数が前記スペアブロックの中で相対的に多いスペアブロックを選択する
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第２の管理テーブルおよび前記第３の管理テーブルに基づき、前記書き込み回数の大小関係と前記消去回数の大小関係が逆になるように前記論理ブロックアドレスと前記スペアブロックを対応づけ、
前記書き込み制御部は、前記ホストからの論理アドレスを指定した書き込み要求に対して、前記対応づけに基づいてスペアブロックを選択する
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
前記第２の管理テーブルに記憶された書き込み回数の大小関係に基づいて前記論理ブロックアドレスを複数の論理アドレスグループに分類し、前記第３の管理テーブルに記憶された消去回数の大小関係に基づいて前記スペアブロックを複数のスペアブロックグループに分類し、前記書き込み回数の大小関係と前記消去回数の大小関係が逆になるように前記論理アドレスグループと前記スペアブロックグループを対応づけ、
前記書き込み制御部は、前記ホストからの論理アドレスを指定した書き込み要求に対して、当該論理アドレスが分類されている前記論理アドレスグループに対応づけられている前記スペアブロックグループに分類されているスペアブロックを選択する
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項５】
前記書き込み回数の大小関係に基づく前記論理ブロックアドレスの分類は、前記第２の管理テーブルに記憶されている前記書き込み回数の最大値に対する前記書き込み回数の比を閾値と比較することにより行い、
前記消去回数の大小関係に基づく前記スペアブロックの分類は、前記第３の管理テーブルに記憶されている前記消去回数の前記スペアブロックの中での最大値に対する前記消去回数の比を閾値と比較することにより行う
ことを特徴とする請求項４に記載のメモリコントローラ。
【請求項６】
前記書き込み制御部は、前記ホストからの書き込み要求が無いときに、前記第２の管理テーブルに記憶された書き込み回数が第１閾値より小さい論理ブロックアドレスに前記第１の管理テーブルで対応する物理ブロックアドレスの前記第３の管理テーブルに記憶された消去回数が第２閾値より小さい条件を満たす場合に、当該条件を満たす論理ブロックアドレスである有閑論理アドレスに対応する物理ブロックアドレスが示す有閑物理ブロックに書き込まれているデータを、前記スペアブロックの中から前記第３の管理テーブルに記憶された消去回数が第３閾値よりも大きい疲労スペアブロックを選択して書き込み、
前記疲労スペアブロックの物理ブロックアドレスを前記有閑論理アドレスに対応するように前記第１の管理テーブルに書き込んで前記有閑物理ブロックの物理ブロックアドレスを消去することにより当該有閑物理ブロックを前記スペアブロックにする
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項７】
前記第１閾値は、前記第２の管理テーブルに記憶された書き込み回数の最大値に所定の定数を乗じた値である
ことを特徴とする請求項６に記載のメモリコントローラ。
【請求項８】
請求項１から請求項７のいずれか１項に記載のメモリコントローラと、前記不揮発性半導体メモリとを具備することを特徴とする半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、および半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、ブロックと呼ばれる複数のメモリセルに記憶されたデータを一括して消去処理を行うことにより構造を簡略化し、安価でかつ大容量を実現している。そしてさらに、ＮＡＮＤ型フラッシュメモリは、可動部がなく低消費電力であることから、ＨＤＤに代わる記憶装置、携帯電話または携帯音楽プレーヤ等のホストの記憶装置として広く利用されている。しかし、ＮＡＮＤ型フラッシュメモリには書き込み／消去回数に制限があることが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３２６５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、ブロックの消去回数の平均化を高い精度で行うことができるメモリコントローラ、および半導体記憶装置を提供する。
【課題を解決するための手段】
【０００５】
本願発明の一態様によれば、データ消去の単位であるブロックを複数個有する不揮発性半導体メモリのデータを書き換えるための制御を行うメモリコントローラであって、ホストが指定する前記ブロック単位の論理アドレスとしての論理ブロックアドレスと、前記ブロックの前記不揮発性半導体メモリでの記憶位置を示す物理ブロックアドレスとの対応を記憶する第１の管理テーブルと、前記ホストから前記不揮発性半導体メモリへのデータの書き込み回数を前記論理ブロックアドレス毎に記憶する第２の管理テーブルと、前記物理ブロックアドレス毎のデータ消去回数を記憶する第３の管理テーブルと、前記ホストからの論理アドレスを指定した書き込み要求に対して、対応する論理アドレスをもたない前記ブロックであるスペアブロックを選択し、当該スペアブロックにデータを書き込む書き込み制御部とを備え、前記論理ブロックアドレス毎に記憶されるデータの書き込み回数と前記物理ブロックアドレス毎に記憶されるデータ消去回数に基づいて、データ消去回数を複数の前記ブロックの間で平均化することを特徴とするメモリコントローラが提供される。
【発明の効果】
【０００６】
本発明によれば、ブロックの消去回数の平均化を高い精度で行うことができるメモリコントローラ、および半導体記憶装置を提供できる。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１乃至３の実施の形態のメモリシステムの構成を示すブロック図である。
【図２】図２は、第１乃至３の実施の形態の半導体記憶装置における物理アドレスと論理アドレスとの関係を示す図である。
【図３】図３は、第１及び第３の実施の形態の論理アドレス管理テーブルを示す図である。
【図４】図４は、第１及び第３の実施の形態のスペアブロック管理テーブルを示す図である。
【図５】図５は、第１の実施の形態のメモリコントローラが行う受動的ウェアレベリングの具体的な手順を示すフローチャートである。
【図６】図６は、第２の実施の形態の論理アドレス管理テーブルを示す図である。
【図７】図７は、論理アドレス毎の書き込み回数の分布を示す図である。
【図８】図８は、図７を書き込み回数の大小関係でグループ分けした図である。
【図９】図９は、第２の実施の形態のスペアブロック管理テーブルを示す図である。
【図１０】図１０は、スペアブロック毎のブロック消去の回数の分布を示す図である。
【図１１】図１１は、図１０をブロック消去の回数の大小関係でグループ分けした図である。
【図１２】図１２は、第２の実施の形態のメモリコントローラが行う受動的ウェアレベリングの具体的な手順を示すフローチャートである。
【図１３】図１３は、第３の実施の形態のメモリコントローラが行う能動的ウェアレベリングの具体的な手順を示すフローチャートである。
【発明を実施するための形態】
【０００８】
ＮＡＮＤ型フラッシュメモリのメモリセルに対する書き込み／消去回数の制限は、基板に対してゲートに高電圧がかけられフローティングゲートに電子が注入されること（書き込み）、及び、ゲートに対してソースに高電圧がかけられフローティングゲートから電子が引き抜かれること（消去）に起因する。即ち、書き込み／消去処理が特定のメモリセルで何回も実行されるとフローティングゲート周りの酸化膜が劣化し、データが破壊されてしまうことがある。
【０００９】
このような書き込み／消去処理が特定のメモリセルに集中することを回避するために、メモリコントローラが書き込み／消去処理回数の平均化をはかっている。これは、メモリコントローラが、消去処理の単位である物理ブロックの消去回数をカウントし消去処理回数の多い物理ブロックと少ない物理ブロックとを入れ替えて、書き込み／消去処理回数の平均化をはかる、いわゆるウェアレベリングによって実施されている。
【００１０】
しかしながら、従来のウェアレベリングにおいては、物理ブロックの属性としての書き込み／消去回数しか参照していなかった（例えば、特許文献１参照。）。特許文献１では、最も書き込み回数が少ない物理ブロックと書き込み回数が所定のチェック回数に達した物理ブロックとを交換するブロック交換手段を備えることにより書き込み回数の平均化を試みている。
【００１１】
ウェアレベリングを行う半導体記憶装置では一般に、論理アドレスを物理アドレスに変換するための論理アドレス／物理アドレス変換（以下、「論物変換」という。）テーブルが用いられている。この論物変換テーブルを用いることによって、ホストが論理アドレスで指定する更新位置に偏りがあった場合でも、半導体記憶装置内部における物理的な記憶位置を分散させることが可能となる。ウェアレベリングを行う半導体記憶装置では、このように書き換えの都度、論理アドレス／物理アドレスの対応関係が変化する。
【００１２】
ＳＳＤ（Solid State Drive）等のウェアレベリングが行われている半導体記憶装置のように、書き換えの都度、論理アドレス／物理アドレスの対応関係が変わる場合において、ホストからの外部要求としての書き換え頻度の偏りは、物理ブロックの属性ではなく、本来論理アドレスの属性である。しかしながら従来のウェアレベリングにおいては、上記したように物理ブロックの属性としての書き込み／消去回数しか参照されておらず、論理アドレスの属性としての書き換え頻度の偏り特性が全く考慮されていなかった。
【００１３】
従って、従来のウェアレベリングにおいては、例えば、ホストからの外部要求としての書き換え頻度が少ない論理アドレスに対して、書き込み／消去回数が少ない物理ブロックの物理アドレスを割り当てる可能性があった。この場合、その物理ブロックは割り当て後の新しい論物変換の関係において更新される可能性が低く、書き込み／消去回数が少ないままである可能性が高く、結果として物理ブロックの書き換え回数の平均化が適切に行われないという問題があった。
【００１４】
以下に添付図面を参照して、本発明の実施の形態にかかるメモリコントローラ、半導体記憶装置を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１５】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかるメモリシステムとしての半導体記憶装置２の構成を示すブロック図である。半導体記憶装置２は、パソコンまたはデジタルカメラ等のホスト３と着脱可能に接続されるメモリカード、または、ホスト３の内部に収納され、ホスト３の外部記憶装置として機能するエンベデッドタイプのメモリ等である。
【００１６】
半導体記憶装置２は、不揮発性半導体メモリ（以下、単に「メモリ部」ともいう。）４０と、メモリコントローラ１０とを有する。メモリ部４０は例えばＮＡＮＤ型フラッシュメモリであり、単位セルである多数のメモリセル４１が、ビット線（図示せず）およびワード線４２の交点にマトリクス状に配置された構造を有している。メモリ部４０におけるデータ消去は、単位セル複数個からなる物理ブロック単位で行われ、メモリ部４０は複数の物理ブロックを備えている。メモリ部４０に対する書き込み／読み出しは、物理ページ単位に行われる。１つの物理ブロックは複数の物理ページから構成されるので、物理ページのサイズは物理ブロックのサイズより小さい。
【００１７】
メモリコントローラ１０は、制御部であるＣＰＵ２０と、ＲＡＭ３０と、ホスト  Ｉ／Ｆ（インターフェイス）１２と、ＲＯＭ１３と、記憶するデータの符号化処理および記憶されたデータの復号化処理を行う誤り訂正（ＥＣＣ：Error Correcting Code）回路１４と、ＮＡＮＤ  Ｉ／Ｆ（インターフェイス）１５とを備え、これらがバス１１を介して接続されている。
【００１８】
メモリコントローラ１０は、ＣＰＵ２０による制御に従って、ホストＩ／Ｆ１２を介してホスト３とＲＡＭ３０との間でデータ送受信を行い、ＮＡＮＤ  Ｉ／Ｆ１５を介してメモリ部４０とＲＡＭ３０との間でデータ送受信を行う。ＣＰＵ２０は、ホスト３とＲＡＭ３０との間のデータ送受信制御、メモリ部４０とＲＡＭ３０との間のデータ送受信制御を行う通常制御部の他に、メモリ部４０へのデータの書き込み回数を論理アドレス毎に計数する書き込み回数計数部２１、メモリ部４０のデータ消去の単位である物理ブロック毎のデータ書き換え回数としてデータ消去回数を計数する消去回数計数部２２、対応する論理アドレスが割り当てられていない物理ブロックであるスペアブロックの選択を行うスペアブロック選択処理部２３を備える。スペアブロック（フリーブロック）は、内部に有効データを含まない、用途未割り当ての物理ブロックである。
【００１９】
スペアブロック選択処理部２３は、ホスト３からデータの書き込み要求が発生すると、バス１１を介してＲＡＭ３０にアクセスして、そこに保持された管理情報（例えば、後述するスペアブロック管理テーブル）などに基づいて、データを書き込むスペアブロックの選択を行う。
【００２０】
図２は、本実施の形態における論物変換の概念を示すものであるが、その前提となる用語を説明する。論理アドレスとは、ホストが使用するアドレスであり、例えばＬＢＡ（Logical Block Addressing）である。ＬＢＡは、セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。セクタは前述した物理ページよりも小さい単位である。物理アドレスとは、メモリ部４０での記憶位置を示すアドレスである。
【００２１】
本実施の形態では、データ消去の単位である物理ブロックのサイズと同一の区分サイズとなる論理アドレスの単位として、上記論理アドレス（例えばＬＢＡ）の上位アドレスである論理ブロックアドレスを用いて、物理ブロックの物理アドレスである物理ブロックアドレスに対応付ける。即ち図２に示すように、１個の論理ブロックアドレスに対して１個の物理ブロックアドレスが対応付けられる論物変換が行われることとする。しかし、本実施の形態の要旨に含まれる技術思想の範囲であるならば、この論物変換関係に必ずしも限定されるわけではない。
【００２２】
ＲＡＭ３０は、ホスト３とメモリ部４０との間に介在するキャッシュ領域として機能する領域の他に、論理アドレス管理テーブル３１及びスペアブロック管理テーブル３２を備えている。論理アドレス管理テーブル３１は、図３に示すように論理ブロックアドレスをメモリ部４０における物理ブロックアドレスに変換する第１の管理テーブルである論理アドレス／物理アドレス変換テーブル（論物変換テーブル）７０を含んでいる。
【００２３】
上述したように、スペアブロック選択処理部２３はホスト３からのデータの書き込み指示に対して、対応する論理アドレスが割り当てられていないスペアブロックを選択するので、本実施の形態においては、データ書き換えの都度、論物変換の関係が変わることになる。ホスト３からのメモリ部４０に対する書き込み指示には、通常、先頭論理アドレス、データサイズが含まれている。
【００２４】
さらに、論理アドレス管理テーブル３１は、図３に示すように上記論物変換テーブル７０に登録された物理ブロックアドレスが示す物理ブロックのデータ消去回数（物理ブロック消去回数）、及び論理ブロックアドレス毎にホスト３から指示された書き込み回数（論理アドレス書き込み回数）を記憶している。
【００２５】
従って、論理アドレス管理テーブル３１は論理ブロックアドレス毎のホスト３からの書き込み回数を記憶する第２の管理テーブルである論理書き込み回数テーブルも含んでいることになる。論理書き込み回数テーブルは、論理アドレスの属性としての書き換え頻度の偏り特性を反映したものとなる。
【００２６】
スペアブロック管理テーブル３２は、図４に示すように、対応する論理アドレスが割り当てられていない物理ブロックであるスペアブロックの物理ブロックアドレスと、それに対応する物理ブロックのデータ消去回数（物理ブロック消去回数）とを記憶している。このテーブルは、例えば図４に示すように、物理ブロック消去回数の大小に従って物理ブロックアドレスがソートされていてもよい。
【００２７】
従って、論理アドレス管理テーブル３１に登録された物理ブロックアドレス毎の物理ブロックのデータ消去回数の情報と、スペアブロック管理テーブル３２に登録された物理ブロックアドレス毎の物理ブロックのデータ消去回数の情報とを合わせると、物理ブロックアドレス毎のデータ消去回数を記憶する第３の管理テーブルである物理消去回数テーブルが構成される。物理消去回数テーブルは、物理ブロック毎の消去（及び書き込み）回数の頻度、即ち当該物理ブロックの物理的な疲労度を反映したものとなる。
【００２８】
ＣＰＵ２０は、論理アドレス管理テーブル３１に含まれる論物変換テーブル７０にもとづいて論理アドレスと物理アドレスとの変換を行うアドレス変換部（図示せず）としての動作をファームウエア（ＦＷ）により実行する。ホスト３からのコマンド入力に応じた半導体記憶装置２全体の制御もＣＰＵ２０においてファームウエアで実行される。
【００２９】
ＲＯＭ１３は、半導体記憶装置２のブートプログラム等が格納されている記憶部であり、半導体メモリ部３０の一部または図示しない不揮発性記憶部にもメモリコントローラ１０が半導体記憶装置２を制御するための情報が記憶される。
【００３０】
本実施の形態においては、メモリコントローラ１０が備えるＣＰＵ２０は、ホスト３から任意の論理アドレスへのデータの書き込み指示があった場合、書き込み回数計数部２１が論理ブロックアドレス毎に計数している論理アドレス書き込み回数をインクリメントする。その結果は、バス１１を介してＲＡＭ３０内の論理アドレス管理テーブル３１の論理アドレス書き込み回数の欄に記憶される。
【００３１】
また、ＣＰＵ２０は、メモリ部４０の各物理ブロックにおいてデータの消去があった場合も、消去回数計数部２２が物理ブロックアドレス毎に計数している物理ブロック消去回数をインクリメントする。その結果は、当該物理ブロックが対応する論理アドレス（即ち、論理ブロックアドレス）を有している場合は、バス１１を介してＲＡＭ３０内の論理アドレス管理テーブル３１の当該物理ブロックの物理ブロックアドレスが登録された行（即ち、上記論理ブロックアドレスが登録された行）の物理ブロック消去回数の欄に記憶される。
【００３２】
データ消去のあった物理ブロックが、対応する論理アドレスが割り当てられていない物理ブロックであるスペアブロックの場合は、バス１１を介してＲＡＭ３０内のスペアブロック管理テーブル３２の当該物理ブロックの物理ブロックアドレスが記憶された行の物理ブロック消去回数の欄に記憶される。
【００３３】
従来、ホスト３からの書き込み要求時に行われていたウェアレベリング（以下、受動的ウェアレベリングと呼ぶ）は、ホスト３からの書き込み要求で指定された論理アドレスへの過去の書き込み（書き換え）要求回数は全く考慮されずに行われていた。即ち、従来の受動的ウェアレベリングにおいては、スペアブロックの消去回数のみに依存して、例えば、図４のスペアブロック管理テーブル３２において物理ブロック消去回数が少ないスペアブロックを選択して、書き込み（または、ブロック消去及び書き込み）を行い、当該物理ブロックにホストから指定された論理アドレスを割り当てていた。
【００３４】
しかし、このような受動的ウェアレベリングでは、消去回数の平均化というウェアレベリングの目的が適切に実現出来ない可能性があった。例えば、ホストからの外部要求としての書き換え頻度が少ない論理アドレスに偶々書き換え要求が来た場合に、消去回数が少ない物理ブロックをスペアブロックから選択してデータを書き込む可能性があった。この場合、その物理ブロックは当該論理アドレス割り当て後の新しい論物変換の関係においても消去回数が少ないままである可能性が高く、結果として物理ブロックの書き換え回数の偏りが生じてしまい、平均化が適切に行われないという問題があった。
【００３５】
そこで、本実施の形態においては、ホストからデータの書き込み（書き換え）指示があった論理アドレスの書き込み頻度が少ない場合は、当該論理アドレスに対しては、あえて消去回数が大きいスペアブロックを選択して当該論理アドレスを割り当て、選択したスペアブロックに当該データを書き込む。逆に、ホストから書き込み指示があった論理アドレスの書き込み頻度が大きい場合は、当該論理アドレスに対しては、消去回数が少ないスペアブロックを選択して当該論理アドレスを割り当て、選択したスペアブロックに当該データを書き込む。これにより、上述した平均化が適切に行われないという問題を解決することが可能となる。
【００３６】
具体的には、スペアブロック選択処理部２３（書き込み制御部）が、論理アドレス管理テーブル３１に記憶されている書き込み回数が相対的に多い論理ブロックアドレスを指定した書き込み要求に対しては、スペアブロック管理テーブル３２に記憶されている消去回数が相対的に少ないスペアブロックを選択し、書き込み回数が相対的に少ない論理アドレスを指定した書き込み要求に対しては、消去回数が相対的に多いスペアブロックを選択する。
【００３７】
例えば、ホスト３から図３の論理ブロックアドレス「ｎ−１」を指定した書き込み要求が来た場合は、論理アドレス管理テーブル３１内での論理アドレス書き込み回数「１５０」が相対的に少ないと判断して、スペアブロック管理テーブル３２内での物理ブロック消去回数が相対的に多い図４の物理ブロックアドレス「ＷＷＷ」のスペアブロックを選択してデータを書き込む。逆に、図３の論理ブロックアドレス「ｎ」を指定した書き込み要求が来た場合は、論理アドレス管理テーブル３１内での論理アドレス書き込み回数「４００」が相対的に多いと判断して、スペアブロック管理テーブル３２内での物理ブロック消去回数が相対的に少ない図４の物理ブロックアドレス「ａａａ」のスペアブロックを選択してデータを書き込む。
【００３８】
更に具体的には、図３の論理アドレス管理テーブル３１の論理アドレス書き込み回数の大小関係でソートした論理ブロックアドレスと、図４のスペアブロック管理テーブル３２の物理ブロック消去回数の大小関係でソートしたスペアブロックの物理ブロックアドレスを、両者の大小関係が逆になるように対応づけておいてもよい。
【００３９】
また、大小関係を逆順に対応づける方法としては、上記のように生の回数値を用いるのでない方法で行うこともできる。例えば、図３の論理アドレス管理テーブル３１にさらに「書き込み回数相対値」の欄を設け、各論理アドレス書き込み回数をその時点での論理アドレス書き込み回数の最大値で割った値（０〜１）を論理ブロックアドレス毎に保持しておく。さらに、スペアブロック管理テーブル３２にも「消去回数相対値」の欄を設け、各物理ブロック消去回数をその時点でのスペアブロックの中での物理ブロック消去回数の最大値で割った値（０〜１）をスペアブロック毎に保持しておく。
【００４０】
そして、ホスト３からの論理ブロックアドレスを指定した書き込み要求に対して、図３の当該論理ブロックアドレスの「書き込み回数相対値」がＸであった場合。例えば、以下の（式１）に従い、「好適消去回数相対値」Ｙを算出する。
【００４１】
Ｙ＝１−Ｘ    （式１）
【００４２】
スペアブロック選択処理部２３は、ここで求まったＹに最も近い「消去回数相対値」を有するスペアブロックをスペアブロック管理テーブル３２から選択してデータを書き込む。例えば、「書き込み回数相対値」Ｘ＝０．２のように書き込み回数が相対的に小さい論理ブロックアドレスを指定した書き込み要求に対しては、「好適消去回数相対値」Ｙ＝０．８に最も近い消去回数がスペアブロックの中で相対的に大きいスペアブロックを選択する。
【００４３】
上記（式１）はＸとＹが逆順の関係になるような式であれば、上記の式に限定されない。また、図７に示すホストからの論理アドレス毎の書き込み回数頻度の偏りと図１０に示すスペアブロック毎のブロック消去回数頻度の偏りを反映させた非線形な式を用いて対応づけがより均等になるように工夫しても構わない。
【００４４】
以下に、図５のフローチャートを用いて、本実施の形態のメモリコントローラ１０が行う受動的ウェアレベリングの具体的な手順を示す。
【００４５】
＜ステップＳ１０１＞  データ書き込み指示
ホスト３からメモリコントローラ１０に、例えば論理ブロックアドレスＬＡ１を指定したデータ書き込み要求が来る。
【００４６】
＜ステップＳ１０２＞  スペアブロックの選択
スペアブロック選択処理部２３は、指定された論理ブロックアドレスＬＡ１に対して、上記（式１）に基づいてスペアブロックＳＢ１を選択する。
【００４７】
＜ステップＳ１０３＞  ブロック消去及びデータの書き込み
ステップＳ１０２で選択したスペアブロックＳＢ１に相当するメモリ部４０内の物理ブロックアドレスの物理ブロックをブロック消去し、その物理ブロックにホスト３から指示のあったデータの書き込みを行う。
【００４８】
＜ステップＳ１０４＞  物理ブロック消去回数のインクリメント
ＣＰＵ２０内の消去回数計数部２２は、ステップＳ１０３におけるブロック消去を物理ブロックアドレス毎に計数しており、図４のスペアブロック管理テーブル３２の当該物理ブロックアドレスの物理ブロック消去回数を１増やす。
【００４９】
＜ステップＳ１０５＞  論理アドレス書き込み回数のインクリメント
ＣＰＵ２０内の書き込み回数計数部２１は、ステップＳ１０１におけるホスト３からの各論理ブロックアドレスへの書き込み指示を論理ブロックアドレス毎に計数しており、図３の論理アドレス管理テーブル３１の論理ブロックアドレスＬＡ１の論理アドレス書き込み回数を１増やす。
【００５０】
＜ステップＳ１０６＞  物理ブロックの交換
さらにステップＳ１０２で選択したスペアブロックＳＢ１のスペアブロック管理テーブル３２に記載された物理ブロックアドレス及び物理ブロック消去回数と、論理アドレス管理テーブル３１の論理ブロックアドレスＬＡ１の物理ブロックアドレス及び物理ブロック消去回数とを交換する。交換時に例えば、ＲＡＭ３０内の所定の記憶領域（図示せず）等を一時記憶領域として利用しても構わない。これにより論理アドレス管理テーブル３１にエントリされていた物理ブロックとスペアブロック管理テーブル３２にエントリされていた物理ブロックが入れ替えられたことになる。交換後、スペアブロック管理テーブル３２を物理ブロック消去回数（データ消去回数）の大小に従ってソートする。
【００５１】
＜ステップＳ１０７＞  テーブルソート
スペアブロック管理テーブル３２を物理ブロック消去回数（データ消去回数）の大小関係に従ってソートする。
【００５２】
ホスト３からメモリコントローラ１０に、任意の論理アドレスへのデータ書き込み指示が来る度にステップＳ１０１〜Ｓ１０７を繰り返す。
【００５３】
以上説明したように本実施の形態においては、ホストからデータの書き込み指示があった論理アドレスの書き込み頻度が少ない場合は、あえて消去回数が大きいスペアブロックを選択して当該データを書き込み、ホストから書き込み指示があった論理アドレスの書き込み頻度が大きい場合は、消去回数が少ないスペアブロックを選択して当該データを書き込むようにする。
【００５４】
このように、本実施の形態に係る半導体記憶装置２は、データ書き換えの都度、論物変換の関係が変わる場合において、論理アドレスの属性である書き換え回数、即ち論理アドレスの書き換え頻度を参照して、物理ブロックの書き換え回数の平均化を行う。
【００５５】
本実施の形態では、受動的ウェアレベリングにおいて、書き込み頻度が少ない論理ブロックアドレスには消去回数が大きく物理的な疲労の程度が大きい物理（スペア）ブロックを割り当て、逆に、書き込み頻度が大きい論理ブロックアドレスには消去回数が少ない物理的な疲労の程度が小さい物理（スペア）ブロックを割り当てることによって、物理ブロックの書き換え回数の平均化の精度を高めることが可能になると考えられる。
【００５６】
即ち、従来の受動的ウェアレベリングにおいて生じていた、書き換え頻度が少ない論理アドレスに書き込み／消去回数が少ない物理ブロックをスペアブロックとして選択する現象を回避することができるので、物理ブロックの書き換え回数の平均化というウェアレベリングの目的をより精度を高めて実現することが可能となり、メモリシステムの寿命を従来に比べて延ばすことが可能となる。
【００５７】
一方、ホストからのデータ書き換え指示が無いときであっても、消去回数が少ない物理ブロックに書き込まれているデータを消去回数が多いスペアブロックにメモリシステムが自主的に書き移すことにより、当該消去回数が少ない物理ブロックをスペアブロックにするウェアレベリング（以下、能動的ウェアレベリングと呼ぶ）の方法がある。
【００５８】
上記実施の形態においては、受動的ウェアレベリングの物理ブロック消去回数平均化が高精度になることによって、能動的ウェアレベリングの必要回数も低減されると考えられる。従って、能動的ウェアレベリングにおけるメモリシステムの自主的なデータ書き換えに伴う物理ブロックの消去の回数を減らすことも可能になるので、これによるメモリシステムの長寿命化も期待できる。
【００５９】
（第２の実施の形態）
本発明の第２の実施の形態にかかるメモリシステムとしての半導体記憶装置２の構成を示すブロック図は図１と同様である。同じ構成要素の説明は省略する。本実施の形態においても、例として図２に示すように１個の論理ブロックアドレスに対して１個の物理ブロックアドレス、即ち、メモリ部４０の１つの物理ブロックが対応付けられた論物変換が行われることとする。しかし、本実施の形態の要旨を逸脱しない範囲であるならば、この論物変換関係に限定されるわけではない。
【００６０】
また、ホスト３から任意の論理アドレスへのデータの書き込み指示に対して（論理アドレスが割り当てられていない）スペアブロックを選択してデータを書き込んで当該論理アドレスと対応づける。即ち、データ書き換えの都度、論物変換の関係が変わるところも、第１の実施の形態と同様である。
【００６１】
本実施の形態においては、スペアブロック選択処理部２３の処理と、ＲＡＭ３０内に備えられる論理アドレス管理テーブル３１及びスペアブロック管理テーブル３２の構成が第１の実施の形態とは異なる。
【００６２】
図６に示す本実施の形態における論理アドレス管理テーブル３１は、第１の実施の形態と同様に、論理ブロックアドレスを対応する物理ブロックのメモリ部４０における物理アドレスである物理ブロックアドレスに変換する論理アドレス／物理アドレス変換テーブル（論物変換テーブル）７０を含んでいる。論物変換テーブル７０に記載された物理ブロックアドレスのデータ消去回数（物理ブロック消去回数）を記憶し、論理ブロックアドレス毎の書き込み回数（論理アドレス書き込み回数）を記憶して論理書き込み回数テーブルを含んでいることも第１の実施の形態と同様である。
【００６３】
しかし図６に示すように、本実施の形態の論理アドレス管理テーブル３１には、論理ブロックアドレス毎に論理アドレスグループのインデックスがさらに記憶されている。一般に、ホスト３からの論理アドレス毎の書き込み回数頻度には図７に示すように偏りが存在する。従って、図６の論理アドレス書き込み回数の大小関係に基づいて論理ブロックアドレス全てを複数の論理アドレスグループのいずれかに分類することが可能である。例えば、図８に示すようにＡ〜Ｄのインデックスをそれぞれ持った４つの論理アドレスグループに分類することができる。
【００６４】
具体的には、例えば図６に示された全ての論理ブロックアドレスに対する論理アドレス書き込み回数の最大値に対する各論理ブロックアドレス書き込み回数の比（０〜１）を、３つの閾値、例えば、０．２５、０．５、０．７５との大小関係で４つに分類し、図８に示すように比が大きい方から、Ａ、Ｂ、Ｃ、Ｄのインデックスをそれぞれ持った４つ論理アドレスグループに分類することができる。
【００６５】
論理アドレスグループの数は複数であればよく４に限定されるわけではない。また、論理アドレス書き込み回数の大小関係に基づいて、全ての論理ブロックアドレスをほぼ同数ずつの論理ブロックアドレスを有する複数の論理アドレスグループに分類してもよく、論理アドレス書き込み回数の大小関係に基づいた分類ならば閾値の間隔を含め上記分類方法に限定されない。このように定めたインデックスを図６の論理アドレス管理テーブル３１の論理アドレスグループの欄に各論理ブロックアドレスの属性として、論理ブロックアドレス毎に記憶させる。
【００６６】
一方図９に示す本実施の形態におけるスペアブロック管理テーブル３２も、第１の実施の形態と同様に、対応する論理アドレスが割り当てられていない物理ブロックであるスペアブロックの物理ブロックアドレスとそれに対応する物理ブロックの物理ブロック消去回数（データ消去回数）を記憶している。そして、物理ブロック消去回数の大小に従って物理ブロックアドレスがソートされている。
【００６７】
しかし図９に示すように、本実施の形態のスペアブロック管理テーブル３２には、スペアブロックの物理ブロックアドレス毎にスペアブロックグループのインデックスがさらに記憶されている。
【００６８】
一般に、スペアブロック毎のブロック消去の回数頻度には図１０に示すように偏りが存在する。従って、図９の物理ブロック消去回数の大小関係に基づいてスペアブロック全てを、上記論理アドレスグループの数と例えば同数のスペアブロックグループのいずれかに分類することが可能である。例えば、図１１に示すようにＡ〜Ｄのインデックスをそれぞれ持った４つのスペアブロックグループに分類することができる。
【００６９】
具体的には、例えば図９に示された全てのスペアブロックに対する物理ブロック消去回数の最大値に対する各物理ブロック消去回数の比（０〜１）を、３つの閾値、例えば、０．２５、０．５、０．７５との大小関係で４つに分類し、図１１に示すように比が小さい方から、Ａ、Ｂ、Ｃ、Ｄのインデックスをそれぞれ持ったスペアブロックグループに分類することができる。
【００７０】
スペアブロックグループの数は上記論理アドレスグループの数と、例えば同数であればよく４に限定されるわけではない。また、物理ブロック消去回数の大小関係に基づいて、全てのスペアブロックをほぼ同数ずつのスペアブロックを有する複数のスペアブロックグループに分類してもよく、物理ブロック消去回数の大小関係に基づいた分類ならば閾値の間隔を含め上記分類方法に限定されない。このインデックスを図９のスペアブロック管理テーブル３２のスペアブロックグループの欄に、スペアブロックの物理ブロックアドレス毎に記憶させる。
【００７１】
本実施の形態においては、ホストからデータの書き込み（書き換え）指示があった論理ブロックアドレスが書き込み頻度の少ない論理アドレスグループに属している場合は、当該論理ブロックアドレスに対しては、消去回数の頻度が大きいスペアブロックグループに属するスペアブロックを選択して当該論理ブロックアドレスを割り当て、選択したスペアブロックに相当するメモリ部４０内の物理ブロックに当該データを書き込む。
【００７２】
逆に、ホストから書き込み指示があった論理ブロックアドレスが書き込み頻度の大きい論理アドレスグループに属している場合は、当該論理ブロックアドレスに対しては、消去回数の頻度が少ないスペアブロックグループに属するスペアブロックを選択して当該論理ブロックアドレスを割り当て、選択したスペアブロックに相当するメモリ部４０内の物理ブロックに当該データを書き込む。
【００７３】
上述した図８及び図１１の例の場合、論理アドレス書き込み回数の大小関係と物理ブロック消去回数の大小関係が逆になるように、それぞれの論理アドレスグループには同じインデックスのスペアブロックグループ、すなわち、Ａ同士、Ｂ同士、Ｃ同士、Ｄ同士を組み合わせる。この組み合わせの中から、書き込み指示があった論理アドレスに対してスペアブロックの選択を行う。
【００７４】
以下に、図１２のフローチャートを用いて、本実施の形態のメモリコントローラ１０が行う受動的ウェアレベリングの具体的な手順を示す。
【００７５】
＜ステップＳ２０１＞  データ書き込み指示
ホスト３からメモリコントローラ１０に、例えば論理ブロックアドレスＬＡ１を指定したデータ書き込み要求が来る。
【００７６】
＜ステップＳ２０２＞  論理アドレスグループの判定
スペアブロック選択処理部２３は、図６の論理アドレス管理テーブル３１にアクセスし論理ブロックアドレスＬＡ１の論理アドレスグループのインデックスに基づき、論理アドレスグループを判定する。
【００７７】
＜ステップＳ２０３＞  スペアブロックの選択
スペアブロック選択処理部２３は、図９のスペアブロック管理テーブル３２にアクセスして、ステップＳ２０２で判定した論理アドレスグループと同じインデックスのスペアブロックグループに属するスペアブロックＳＢ１を選択する。
【００７８】
上述したように、それぞれの論理アドレスグループには論理アドレス書き込み回数の大小関係と物理ブロック消去回数の大小関係が逆になるようにスペアブロックグループが対応付けられている。従って、ステップＳ２０２で判定した論理アドレスグループに対応するスペアブロックグループに属するスペアブロックであれば、どれを選択しても、例えば当該スペアブロックグループに属するスペアブロックをランダムに１つ選択するようにしても構わない。
【００７９】
しかし、第１の実施の形態の考えをここでも反映させて、ステップＳ２０２で判定した論理アドレスグループの中での論理ブロックアドレスＬＡ１の論理アドレス書き込み回数の相対的な大小の程度に応じて、同一インデックスのスペアブロックグループからスペアブロックＳＢ１を選択するようにした方が、物理ブロックの消去回数の平均化がさらに効果的に行える。即ち、ステップＳ２０２で判定した論理アドレスグループの中で論理アドレスＬＡ１の論理アドレス書き込み回数が相対的に大きい場合は、対応するスペアブロックグループに属するスペアブロックの中で物理ブロック消去回数が相対的に小さいスペアブロックを選択し、逆に論理アドレス書き込み回数が相対的に大きい場合は、物理ブロック消去回数が相対的に小さいスペアブロックを選択してもよい。
【００８０】
このような機構は、例えば第１の実施の形態で説明した（式１）等を用いれば実現できる。この場合、図６の論理アドレス管理テーブル３１の論理アドレスグループの欄に論理アドレスグループのインデックスに付加して、当該インデックスの論理アドレスグループ内での書き込み回数の最大値でその行の論理アドレス書き込み回数を割った値である論理アドレスグループ毎の「書き込み回数相対値」をさらに記憶させる。例えば「Ａ：０．３」等である。同様に図９のスペアブロック管理テーブル３２のスペアブロックグループの欄にも、各スペアブロックグループ内での消去回数の最大値でその行の物理ブロック消去回数を割った値スペアブロックグループ毎の「消去回数相対値」を「Ｄ：０．４」のように付加記憶させる。そしてステップＳ２０２で判定した論理アドレスグループと同じインデックスのスペアブロックグループを選択した後、その中で（式１）等に従って「好適消去回数相対値」に最も近いスペアブロックグループＳＢ１を選択する。
【００８１】
＜ステップＳ２０４＞  ブロック消去及びデータの書き込み
ステップＳ２０３で選択したスペアブロックＳＢ１に相当するメモリ部４０内の物理ブロックアドレスの物理ブロックをブロック消去し、その物理ブロックにホスト３から指示のあったデータの書き込みを行う。
【００８２】
＜ステップＳ２０５＞  物理ブロック消去回数のインクリメント
ＣＰＵ２０内の消去回数計数部２２は、ステップＳ２０４におけるブロック消去を物理ブロックアドレス毎に計数しており、図９のスペアブロック管理テーブル３２の当該物理ブロックアドレスの物理ブロック消去回数を１増やす。
【００８３】
＜ステップＳ２０６＞  論理アドレス書き込み回数のインクリメント
ＣＰＵ２０内の書き込み回数計数部２１は、ステップＳ２０１におけるホスト３からの各論理ブロックアドレスへの書き込み指示を論理ブロックアドレス毎に計数しており、図６の論理アドレス管理テーブル３１の論理ブロックアドレスＬＡ１の論理アドレス書き込み回数を１増やす。
【００８４】
＜ステップＳ２０７＞  物理ブロックの交換
さらにステップＳ２０３で選択したスペアブロックＳＢ１のスペアブロック管理テーブル３２に記載された物理ブロックアドレス及び物理ブロック消去回数と、論理アドレス管理テーブル３１の論理ブロックアドレスＬＡ１の物理ブロックアドレス及び物理ブロック消去回数を交換する。交換時に例えば、ＲＡＭ３０内の所定の記憶領域（図示せず）等を一時記憶領域として利用しても構わない。これにより論理アドレス管理テーブル３１にエントリされていた物理ブロックとスペアブロック管理テーブル３２にエントリされていた物理ブロックが入れ替えられたことになる。交換後、スペアブロック管理テーブル３２を物理ブロック消去回数（データ消去回数）の大小に従ってソートする。
【００８５】
＜ステップＳ２０８＞  論理アドレスグループのインデックスの更新
ステップＳ２０６で論理アドレス管理テーブル３１の論理アドレス書き込み回数がインクリメントされているので、論理アドレスグループのインデックスの更新の必要が生じる場合がある。具体的には、全ての論理ブロックアドレスに対する論理アドレス書き込み回数の最大値と各論理アドレス書き込み回数との比（０〜１）を計算し、例えば、０．２５、０．５、０．７５の３つの閾値で再度４つのインデックスＡ、Ｂ、Ｃ、Ｄに分類する。以前と異なるインデックスになった論理ブロックアドレスがあった場合は、図６の当該論理ブロックアドレスの論理アドレスグループの欄をそのインデックスに更新する。
【００８６】
＜ステップＳ２０９＞  スペアブロックグループのインデックスの更新
ステップＳ２０７で、スペアブロック管理テーブル３２に記載された物理ブロックアドレス及び物理ブロック消去回数が書き換えられ、物理ブロック消去回数の大小に従ってソートされているので、スペアブロックグループのインデックスの更新の必要が生じる。具体的には、全てのスペアブロックの物理ブロック消去回数の最大値と各物理ブロック消去回数との比（０〜１）を計算し、例えば、０．２５、０．５、０．７５の３つの閾値で再度４つのインデックスＡ、Ｂ、Ｃ、Ｄに分類する。そして、スペアブロック管理テーブル３４の全ての物理ブロックアドレスのスペアブロックグループの欄をそのインデックスに更新する。
【００８７】
ホスト３からメモリコントローラ１０に、任意の論理アドレスへのデータ書き込み指示が来る度にステップＳ２０１〜Ｓ２０９を繰り返す。
【００８８】
以上説明したように本実施の形態においては、データ書き換えの都度、論物変換の関係が変わるメモリシステムにおいて、論理ブロックアドレスの属性として書き込み回数頻度を計数してその頻度の相対的な大小関係で論理ブロックアドレスをグループ分けし、スペアブロックを構成する物理ブロックも消去回数の相対的な大小関係でグループ分けしておく。
【００８９】
論物変換の関係が変わるデータ書き換え時に、書き込み回数頻度が小さい論理アドレスグループは消去回数が大きいスペアブロックグループと、書き込み回数頻度が大きい論理アドレスグループは消去回数が小さいスペアブロックグループと組み合わせて、その組み合わせの中で書き換え要請があった論理アドレスにスペアブロックを選択する。
【００９０】
これにより、従来の受動的ウェアレベリングにおいて生じていた、書き換え頻度が少ない論理アドレスに書き込み／消去回数が少ない物理ブロックをスペアブロックとして選択する現象を回避することができるので、物理ブロックの書き換え回数の平均化というウェアレベリングの目的をより精度を高めて実現することが可能となり、メモリシステムの寿命を従来に比べて延ばすことが可能となる。また、第１の実施の形態同様、能動的ウェアレベリングの必要回数の低減によるメモリシステムの長寿命化も期待できる。
【００９１】
なお、本実施の形態においては、スペアブロックグループの数は論理アドレスグループの数と同数として説明したが、論理アドレスの属性として書き込み回数の大小関係とスペアブロックの消去回数の大小関係が逆順となるグループの組み合わせにする趣旨が実現できるのであれば、必ずしも同数でなくてもかまわない。
【００９２】
また、本実施の形態のより簡易な実現例として以下のようにしてもよい。即ち、論理アドレス書き込み回数の最大値に対する各論理ブロックアドレス毎の書き込み回数の比を、例えば閾値０．１と０．９との大小関係により大きい方からＡ、Ｂ、Ｃの論理アドレスグループに分類し、全てのスペアブロックに対する物理ブロック消去回数の最大値に対する各物理ブロック消去回数の比も、例えば閾値０．１と０．９との大小関係により小さい方からＡ、Ｂ、Ｃのスペアブロックグループに分類して同一インデックスのグループ同士を対応づけてもよい。
【００９３】
（第３の実施の形態）
本発明の第３の実施の形態にかかるメモリシステムの構成を示すブロック図は、図１と同様であるが、本実施の形態は能動的ウェアレベリングに関するものである。ＲＡＭ３０は、図３に示す論理アドレス管理テーブル３１と、図４に示すスペアブロック管理テーブル３２を備えている。各構成要素の第１の実施の形態と共通な動作の説明は省略する。
【００９４】
本実施の形態においても、例として図２に示すように１個の論理ブロックアドレスに対して１個の物理ブロックアドレス、即ち、メモリ部４０の１つの物理ブロックが対応付けられた論物変換が行われることとする。しかし、本実施の形態の要旨を逸脱しない範囲であるならば、この論物変換関係に限定されるわけではない。また、ホスト３から任意の論理アドレスへのデータの書き込み指示に対して（論理アドレスを持たない）スペアブロックを選択してデータを書き込んで当該論理アドレスと対応づける。即ち、データ書き換えの都度、論物変換の関係が変わるところも、第１及び第２の実施の形態と同様である。
【００９５】
本実施の形態においては、ホスト３からの書き換え指示が無いときの物理ブロックの書き換え回数平均化制御である能動的ウェアレベリングにおいて、物理ブロックの書き換え回数が少なく且つ論理ブロックアドレスへの書き込み回数が少ない物理ブロックを疲労度が高いスペアブロックと交換する。しかし、物理ブロックの書き換え回数が少なくても論理ブロックアドレスへの書き込み回数が多い物理ブロックに対しては能動的ウェアレベリングを実行しない。これにより、物理ブロックの書き換え回数平均化の精度を従来に比べて高めることが可能となる。
【００９６】
即ち、能動的ウェアレベリングにおいて、有効なデータが書き込まれている物理ブロックの論理ブロックアドレスの書き換え頻度を考慮する。具体的には、メモリコントローラ１０が図３の論理アドレス管理テーブル３１の論理アドレス書き込み回数を考慮に入れた上で能動的ウェアレベリングを行う。
【００９７】
以下に、図１３のフローチャートを用いて、本実施の形態のメモリコントローラ１０が行う能動的ウェアレベリングの具体的な手順を示す。
【００９８】
＜ステップＳ３０１＞  開始条件判定
ホスト３から論理アドレスへのデータの書き込み指示が無いときに、ＣＰＵ２０が、ＲＡＭ３０内の論理アドレス管理テーブル３１の物理ブロック消去回数とスペアブロック管理テーブル３２の物理ブロック消去回数をチェックし、全ての物理ブロックの中での消去回数の最大値と最小値の差が所定の閾値以上になったとき等、物理ブロックの消去回数の不均衡が所定の条件を超えたかどうかを開始条件として判定する。また、一定時間毎に周期的に開始する、或いは開始条件を判定するとしてもよい。開始条件を満たす場合にステップＳ３０２に進む。満たさない場合はステップＳ３０１を繰り返す。
【００９９】
＜ステップＳ３０２＞  論理アドレス書き込み回数の閾値判定
ＣＰＵ２０は、ＲＡＭ３０内の論理アドレス管理テーブル３１にアクセスして、論理アドレス管理テーブル３１の論理アドレス書き込み回数の中で第１閾値より小さいという条件を満たすものがあるかどうかを判定する。第１閾値はＲＡＭ３０等に保持されていればよい。第１閾値の値としては、例えば図３に示された全ての論理ブロックアドレスに対する論理アドレス書き込み回数の最大値に例えば０．１〜０．３等の係数を掛けた値にして、相対的に論理アドレス書き込み回数が小さいものを選別出来るようにしてもよい。
【０１００】
しかし、ホスト３からの今後の書き込み要求が少ないことが予測される論理ブロックアドレスを選択するのが第１閾値の目的であるので、上記例や係数に限定されず、相対値ではなく例えば具体的な書き込み回数の数値にしても構わない。条件を満たす論理ブロックアドレスが全く無い場合は、ステップＳ３０１に戻り、条件を満たす論理ブロックアドレスがある場合は、ステップＳ３０３に進む。
【０１０１】
＜ステップＳ３０３＞  物理ブロック消去回数の閾値判定
ＣＰＵ２０は、ＲＡＭ３０内の論理アドレス管理テーブル３１の中でステップＳ３０２の条件を満たした論理ブロックアドレスの行の物理ブロック消去回数の中で第２閾値より小さいという条件を満たすものがあるかどうかを判定する。第２閾値はＲＡＭ３０等に保持されていればよい。その値としては、例えば図３の全ての論理ブロックアドレスに対する物理ブロック消去回数の最大値に例えば０．１〜０．３等の係数を掛けた値にして、有効なデータが書き込まれている物理ブロックの中からさらに物理ブロック消去回数が小さいものを選別出来るようなものを選べばよい。
【０１０２】
ステップＳ３０２の条件を満たした論理ブロックアドレスに対応する物理ブロックの中からさらに物理的な疲労度が少ない物理ブロックを選択するのが目的であるので、第２閾値も上記例や係数に限定されず、具体的な物理ブロック消去回数でもかまわない。条件を満たす物理ブロックが全く無い場合は、ステップＳ３０１に戻る。条件を満たす物理ブロックがある場合は、当該物理ブロックを有閑物理ブロックとし、それに対応する論理ブロックアドレスを有閑論理アドレスとする。そしてステップＳ３０４に進む。
【０１０３】
＜ステップＳ３０４＞  疲労スペアブロックのブロック消去及びデータの書き込み
スペアブロック選択処理部２３が、図４のスペアブロック管理テーブル３２に示されたスペアブロックの中での物理ブロック消去回数が第３閾値よりも大きいか或いは最大値である疲労スペアブロックを選択する。そして、当該疲労スペアブロックをブロック消去した上で、上記有閑物理ブロックに書き込まれているデータを書き込む。
【０１０４】
第３閾値としては、基本的に第２閾値より大きいことが条件であるが、物理ブロックの物理的な絶対的な疲労度を基準にするのであれば定数を選択してもよい。しかし、例えば図４に示された全てのスペアブロックに対する物理ブロック消去回数の最大値に例えば０．９等の係数を掛けた値のように相対的な値を選択してもよい。疲労度が高いスペアブロックを選択できるのであれば、第３閾値は上記例や係数に限定されるものではない。
【０１０５】
また、ステップＳ３０３の条件を満たす有閑物理ブロックが１つであれば、物理ブロック消去回数がスペアブロック管理テーブル３２の中で最大値をとる疲労スペアブロックを選択してもよい。有閑物理ブロックが複数ある場合は、その中で対応する論理アドレス書き込み回数がより小さいもの程、物理ブロック消去回数がより大きい疲労スペアブロックにデータを書き込むように逆順に選択すればより効果的な能動的ウェアレベリングとなる。
【０１０６】
また、第２閾値より大きい物理ブロック消去回数のスペアブロックを疲労スペアブロックとして選択して有閑物理ブロックに書き込まれているデータを書き込むのであれば、能動的ウェアレベリングは実現されるので、必ずしも第３閾値を考慮して疲労スペアブロックを選択しなくてもよい。次にステップＳ３０５に進む。
【０１０７】
＜ステップＳ３０５＞  疲労スペアブロックの消去回数のインクリメント
ＣＰＵ２０内の消去回数計数部２２は、ステップＳ３０４におけるブロック消去を物理ブロックアドレス毎に計数しており、図４のスペアブロック管理テーブル３２の当該物理ブロックアドレスの物理ブロック消去回数を１増やす。
【０１０８】
＜ステップＳ３０６＞  有閑物理ブロックと疲労スペアブロックの交換
スペアブロック選択処理部２３は、ステップＳ３０４で有閑物理ブロックに書き込まれているデータを書き込んだ疲労スペアブロックの物理ブロックアドレス及び物理ブロック消去回数と、論理アドレス管理テーブル３１の当該有閑物理ブロックの物理ブロックアドレス及び物理ブロック消去回数を交換する。交換時に例えば、ＲＡＭ３０内の所定の記憶領域（図示せず）等を一時記憶領域として利用しても構わない。
【０１０９】
これにより当該有閑物理ブロックの物理ブロックアドレスが論理アドレス管理テーブル３１から消去されて、スペアブロック管理テーブル３２に新たにエントリされ、当該有閑物理ブロックは新たにスペアブロックになる。交換後、スペアブロック管理テーブル３２を物理ブロック消去回数（データ消去回数）の大小に従ってソートする。
【０１１０】
ホスト３からメモリコントローラ１０に、データ書き込み指示が来ないときに、ステップ３０１〜ステップ３０６を行う。
【０１１１】
以上説明したように本実施の形態においては、ホストからの書き換え指示が無いときの能動的ウェアレベリングにおいて、ホストからの書き込み要求頻度が少ない論理ブロックアドレスの物理ブロックに限定して、当該物理ブロックの消去回数が少ない場合に、疲労度が高いスペアブロックと交換する。これにより、従来、ホストからの書き込み要求頻度が多い論理ブロックアドレスの物理ブロックに対しても当該物理ブロックの消去回数が少ないという条件のみに基づいて疲労度が高いスペアブロックと交換していた能動的ウェアレベリングを回避できる。
【０１１２】
即ち、上記有閑論理アドレス以外のデータ書き換え頻度が高い論理アドレスに対しては、例え当該アドレスに対応する物理ブロックの書き換え回数が少なくても能動的ウェアレベリングの対象とはしない。これは、そのような物理ブロックはあえて能動的ウェアレベリングの対象としなくても、ホストからの書き込み要求が頻繁に来るはずなので、そのときに、強制的にスペアブロックと物理ブロックが交換されるからである。
【０１１３】
従って、本実施の形態によって、従来の能動的ウェアレベリングによる物理ブロックの書き換え回数平均化の精度を維持しつつ能動的ウェアレベリングの必要回数を減らすことが可能になる。よって、能動的ウェアレベリングの自主的なデータ書き換えに伴う物理ブロックの消去回数を減らすことが可能になるので、メモリシステムの長寿命化が期待できる。
【０１１４】
また、上記ステップＳ３０４で述べたように、有閑物理ブロックが複数ある場合は、その中で対応する論理アドレス書き込み回数がより小さいもの程、物理ブロック消去回数がより大きい疲労スペアブロックにデータを書き込むように逆順に選択することにより、第１及び２の実施の形態で説明したのと同様な理由により物理ブロックの書き換え回数平均化の精度を高めることが可能となる。即ち、本実施の形態によって能動的ウェアレベリングによる物理ブロックの書き換え回数平均化の精度を高めることも可能であり、メモリシステムのさらなる長寿命化が可能となる。
【０１１５】
さらに、本実施の形態は能動的ウェアレベリングを改良するものであるので、第１及び第２の実施の形態で説明した改良した受動的ウェアレベリングと併用可能であり、併用により更なる効果が期待できる。即ち、ホストからの書き換え指示があったときは、図５或いは図１２のフローチャートに従い、ホストからの書き換え指示がないときは、図１３のフローチャートに従って、メモリコントローラ１０が動作すればよい。これにより、上記した第１乃至３の実施の形態より、物理ブロックの消去回数平均化の精度をさらに高めることが期待でき、メモリシステムの長寿命化がさらに図れることになる。
【０１１６】
上記したいずれの実施の形態も、物理的な書き換え回数に依存した劣化特性を有する記憶素子を複数搭載し、論物変換の対応関係が書き換えの都度変化するストレージデバイスにおいて、論理アドレスへの書き込み回数が、今後の当該論理アドレスへの書き込み頻度の予測値になるという考えに基づいている。即ち、論理アドレスへの書き込み回数が少ないものには消去回数が多く疲労度が高いスペアブロックをあえて割り当て、記憶素子の物理的な書き換え回数の平均化を将来にわたってより高精度に行えるようにしてストレージデバイスの長寿命化を図っている。
【０１１７】
従って、本願発明は上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施の形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。更に、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１１８】
２  半導体記憶装置、３  ホスト、１０  メモリコントローラ、１１  バス、１２  ホスト  Ｉ／Ｆ（インターフェイス）、１３  ＲＯＭ、１４  誤り訂正部、１５  ＮＡＮＤ  Ｉ／Ｆ、２０  ＣＰＵ、２１  書き込み回数係数部、２２  消去回数計数部、２３  スペアブロック選択処理部、３０  ＲＡＭ、３１  論理アドレス管理テーブル、３２  スペアブロック管理テーブル、４０  不揮発性半導体メモリ部、４１  メモリセル、４２  ワード線、５０、５１  論理ブロックアドレス、６０、６１  物理ブロックアドレス、７０  論物変換テーブル、Ｓ１０１〜Ｓ１０７、Ｓ２０１〜Ｓ２０９、Ｓ３０１〜Ｓ３０６  ステップ。
【図１】
2011203916.tif 000003
【図２】
2011203916.tif 000004
【図３】
2011203916.tif 000005
【図４】
2011203916.tif 000006
【図５】
2011203916.tif 000007
【図６】
2011203916.tif 000008
【図７】
2011203916.tif 000009
【図８】
2011203916.tif 000010
【図９】
2011203916.tif 000011
【図１０】
2011203916.tif 000012
【図１１】
2011203916.tif 000013
【図１２】
2011203916.tif 000014
【図１３】
2011203916.tif 000015