(57)【要約】【課題】従来よりも長寿命かつ処理速度の速い不揮発性記憶装置、不揮発性記憶システムを提供すること。【解決手段】書き換え回数計数部１０７が各物理ブロックの書き換え回数を管理する。最多及び最小書き換え回数の物理ブロックを判別する。初期化処理に未使用ブロック検出部１０６が検出した未使用ブロック数が閾値以下になった場合、データ移動処理部１０８は最多書き換え回数ブロックと最少書き換え回数ブロック間でデータ移動する。こうすれば書き換え頻度の高いデータを特定の物理ブロックばかりにアロケートさせないようにできるので、結果として不揮発性記憶装置１２０の長寿命化を図ることができる。【選択図】図１
2008097132.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに接続され、外部から指定された論理アドレスに従いデータの読み出し、書き込みを行うメモリコントローラであって、
前記論理アドレスを前記不揮発性メモリにおけるデータ等の記憶位置である物理アドレスに変換するアドレス管理部と、
前記不揮発性メモリの未使用ブロック数を検出する未使用ブロック検出部と、
前記不揮発性メモリを構成する各物理ブロックの書き換え回数を計数する書き換え回数計数部と、
電源立ち上げ時の初期化処理において前記未使用容量検出部が検出した未使用ブロックが予め定められた閾値以下になった場合に前記書き換え回数に基づき選択された２つの物理ブロック間でデータを入れ換えるデータ移動処理部と、を有するメモリコントローラ。
【請求項２】
前記データ移動処理部は、前記書き換え回数が最多の物理ブロックと前記書き換え回数が最少の物理ブロックとの間でデータ移動処理を実行する請求項１記載のメモリコントローラ。
【請求項３】
前記データ移動処理部は、前記物理ブロックに書き換え回数の平均値と、平均値より大きいランダムに選択した物理ブロックと、平均値より小さい任意に選択した物理ブロックとの間でデータ移動処理を実行する請求項１記載のメモリコントローラ。
【請求項４】
外部から指定された論理アドレスに従いデータの読み出し、書き込みを行う不揮発性記憶装置であって、
不揮発性メモリと、不揮発性メモリに接続され、外部から指定された論理アドレスに従いデータの読み出し、書き込みを行うメモリコントローラと、を有し、
前記メモリコントローラは、
前記論理アドレスを前記不揮発性メモリにおけるデータ等の記憶位置である物理アドレスに変換するアドレス管理部と、
前記不揮発性メモリの未使用ブロックの容量を検出する未使用ブロック検出部と、
前記不揮発性メモリを構成する各物理ブロックの書き換え回数を計数する書き換え回数計数部と、
電源立ち上げ時の初期化処理において前記未使用容量検出部が検出した未使用ブロックが予め定められた閾値以下になった場合に前記書き換え回数に基づき選択された２つの物理ブロック間でデータを入れ換えるデータ移動処理部と、を有する不揮発性記憶装置。
【請求項５】
前記データ移動処理部は、前記書き換え回数が最多の物理ブロックと前記書き換え回数が最少の物理ブロックとの間でデータ移動処理を実行する請求項４記載の不揮発性記憶装置。
【請求項６】
前記データ移動処理部は、前記物理ブロックに書き換え回数の平均値と、平均値より大きいランダムに選択した物理ブロックと、平均値より小さい任意に選択した物理ブロックとの間でデータ移動処理を実行する請求項４記載の不揮発性記憶装置。
【請求項７】
アクセス装置と、前記アクセス装置から指定された論理アドレスに従いデータの読み出し、書き込みを行う不揮発性記憶装置とを有する不揮発性記憶システムであって、
前記不揮発性記憶装置は、
不揮発性メモリと、不揮発性メモリに接続され、外部から指定された論理アドレスに従いデータの読み出し、書き込みを行うメモリコントローラとを有し、
前記メモリコントローラは、
前記論理アドレスを前記不揮発性メモリにおけるデータ等の記憶位置である物理アドレスに変換するアドレス管理部と、
前記不揮発性メモリの未使用ブロック数を検出する未使用ブロック検出部と、
前記不揮発性メモリを構成する各物理ブロックの書き換え回数を計数する書き換え回数計数部と、
電源立ち上げ時の初期化処理において前記未使用容量検出部が検出した未使用ブロックが予め定められた閾値以下になった場合に前記書き換え回数に基づき選択された２つの物理ブロック間でデータを入れ換えるデータ移動処理部と、を有する不揮発性記憶システム。
【請求項８】
前記データ移動処理部は、前記書き換え回数が最多の物理ブロックと前記書き換え回数が最少の物理ブロックとの間でデータ移動処理を実行する請求項７記載の不揮発性記憶システム。
【請求項９】
前記データ移動処理部は、前記物理ブロックに書き換え回数の平均値と、平均値より大きいランダムに選択した物理ブロックと、平均値より小さい任意に選択した物理ブロックとの間でデータ移動処理を実行する請求項７記載の不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを備えた半導体メモリカード等の不揮発性記憶装置、不揮発性メモリを制御するメモリコントローラ、及び不揮発性記憶装置にアクセス装置を構成要件として加えた不揮発性記憶システムに関する。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備える不揮発性記憶装置は、半導体メモリカードを中心にその需要が広まっている。半導体メモリカードは、光ディスクやテープメディアなどと比較して非常に高価格なものではあるが、小型・軽量・耐震性・取り扱いの簡便さ等のメリットにより、デジタルスチルカメラや携帯電話などのポータブル機器の記録媒体としてその需要が広まっている。この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリを備え、それを制御するメモリコントローラを有している。メモリコントローラは、デジタルスチルカメラやパソコン（パーソナルコンピュータ）本体等のアクセス装置からの読み書き指示に応じて、フラッシュメモリに対する読み書き制御を行うものである。またポータブルオーディオにおいては、半導体メモリカードに対応したものだけでなく、ポータブルオーディオ本体内にフラッシュメモリを実装したものもある。また、近年では前述したような民生用途だけでなく、例えば放送局向けのプロ用動画記録機器にも半導体メモリカードが使用されている。
【０００３】
半導体メモリカードやポータブルオーディオなどの製品に内蔵されたフラッシュメモリは、記憶単位であるメモリセルアレイへの書き込みや消去に比較的長い時間を必要とするため、複数のメモリセルを一括して消去したり書き込んだりできる構造となっている。具体的には、複数の物理ブロック（消去単位）から構成され、各物理ブロックは複数のページ（書き込み単位）を含み、消去は物理ブロック単位で、書き込みはページ単位で行われる。
【０００４】
近年フラッシュメモリは、大容量化と低コスト化への要望に対応して、多値ＮＡＮＤフラッシュメモリのように1つのメモリセルに２ビット又はそれ以上の情報が記憶できる品種が主流となってきている。このような多値ＮＡＮＤフラッシュメモリは、メモリセルの信頼性確保が難しいため、書き替え保証回数が低い。従来の２値ＮＡＮＤフラッシュメモリあっては、書き替え保証回数が例えば１０万回であったのに対して、多値ＮＡＮＤフラッシュメモリにあっては、書き替え保証回数が例えば１万回と約１０分の１まで低下している。更に、１万回の書き替え回数を保証できるフラッシュメモリを製造すること自体も難しくなっている。
【０００５】
フラッシュメモリの書き替え保証回数は、半導体メモリカードの寿命、及びポータブルオーディオなどの機器自体の寿命に直結している。従来、この寿命をできるだけのばすために、特定の物理ブロックに書き換えが集中しないウェアレベリングといったアドレス管理方法が適用されている。例えば、特許文献１によれば、ある論理アドレスのデータ書き換えにおいては、未使用ブロックに対して新たにデータを書き込み、書き換え前の旧データが記憶されていた物理ブロックを未使用ブロックとすることによって、ある論理アドレスに対応するデータが特定の物理ブロックに固定的にアロケートされない工夫がなされている。
【０００６】
しかしながら、特許文献１においては、未使用ブロックの残数が少なくなってくると、ある特定の論理アドレスばかりを書き換えた場合、未使用ブロックと該論理アドレスに対応するデータがアロケートされた物理ブロック間でデータの移動が頻繁に繰り返されることとなる。すなわち特定の物理ブロックの書き換えが急激に増加することになる。
【０００７】
この問題に対応するために、例えば特許文献２では各物理ブロックの書き換え回数を保持しておき、書き換え回数に基づいてデータをスワップさせるようにしている。ここで、スワップ処理とは、２つの物理ブロック（物理ブロックＡ，Ｂ）がいずれも有効データを記憶している場合、物理ブロックＡ，Ｂに夫々記憶されていたデータＡ，Ｂを読み出し、物理ブロックＡ，Ｂを消去した後にデータＡを物理ブロックＢに、データＢを物理ブロックＡに書き込み直す処理のことを言う。
【特許文献１】特開２００３−２６３８９４号公報
【特許文献２】特開平５−２８２８８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、スワップ処理によって下記（１），（２）のような新たな問題が生じる。
（１）スワップ処理自体により書き換え回数が増加するため、半導体メモリカード等の寿命が短くなる。
（２）スワップ処理に時間を要するため、通常動作時すなわちアクセス装置からのデータの読み書きを行う動作モードにおける処理速度が遅くなる。
【０００９】
そこで、本発明は上記問題点に鑑み、従来よりも長寿命かつ処理速度の速い不揮発性記憶装置、メモリコントローラ、及び不揮発性記憶システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
この課題を解決するために、本発明のメモリコントローラは、不揮発性メモリに接続され、外部から指定された論理アドレスに従いデータの読み出し、書き込みを行うメモリコントローラであって、前記論理アドレスを前記不揮発性メモリにおけるデータ等の記憶位置である物理アドレスに変換するアドレス管理部と、前記不揮発性メモリの未使用ブロック数を検出する未使用ブロック検出部と、前記不揮発性メモリを構成する各物理ブロックの書き換え回数を計数する書き換え回数計数部と、電源立ち上げ時の初期化処理において前記未使用容量検出部が検出した未使用ブロックが予め定められた閾値以下になった場合に前記書き換え回数に基づき選択された２つの物理ブロック間でデータを入れ換えるデータ移動処理部と、を有するものである。
【００１１】
この課題を解決するために、本発明の不揮発性記憶装置は、外部から指定された論理アドレスに従いデータの読み出し、書き込みを行う不揮発性記憶装置であって、不揮発性メモリと、不揮発性メモリに接続され、外部から指定された論理アドレスに従いデータの読み出し、書き込みを行うメモリコントローラと、を有し、前記メモリコントローラは、前記論理アドレスを前記不揮発性メモリにおけるデータ等の記憶位置である物理アドレスに変換するアドレス管理部と、前記不揮発性メモリの未使用ブロックの容量を検出する未使用ブロック検出部と、前記不揮発性メモリを構成する各物理ブロックの書き換え回数を計数する書き換え回数計数部と、電源立ち上げ時の初期化処理において前記未使用容量検出部が検出した未使用ブロックが予め定められた閾値以下になった場合に前記書き換え回数に基づき選択された２つの物理ブロック間でデータを入れ換えるデータ移動処理部と、を有するものである。
【００１２】
この課題を解決するために、本発明の不揮発性記憶システムは、アクセス装置と、前記アクセス装置から指定された論理アドレスに従いデータの読み出し、書き込みを行う不揮発性記憶装置とを有する不揮発性記憶システムであって、前記不揮発性記憶装置は、不揮発性メモリと、不揮発性メモリに接続され、外部から指定された論理アドレスに従いデータの読み出し、書き込みを行うメモリコントローラとを有し、前記メモリコントローラは、前記論理アドレスを前記不揮発性メモリにおけるデータ等の記憶位置である物理アドレスに変換するアドレス管理部と、前記不揮発性メモリの未使用ブロック数を検出する未使用ブロック検出部と、前記不揮発性メモリを構成する各物理ブロックの書き換え回数を計数する書き換え回数計数部と、電源立ち上げ時の初期化処理において前記未使用容量検出部が検出した未使用ブロックが予め定められた閾値以下になった場合に前記書き換え回数に基づき選択された２つの物理ブロック間でデータを入れ換えるデータ移動処理部と、を有するものである。
【００１３】
ここで前記データ移動処理部は、前記書き換え回数が最多の物理ブロックと前記書き換え回数が最少の物理ブロックとの間でデータ移動処理を実行するようにしてもよい。
【００１４】
ここで前記データ移動処理部は、前記物理ブロックに書き換え回数の平均値と、平均値より大きいランダムに選択した物理ブロックと、平均値より小さい任意に選択した物理ブロックとの間でデータ移動処理を実行するようにしてもよい。
【発明の効果】
【００１５】
本発明によれば、アドレス管理部の論物変換処理によってウェアレベリングを実施し、さらに未使用ブロック検出部が検出した未使用容量が予め定められた閾値以下になった場合にデータ移動部が書き換え回数に基づいて特定した２つの物理ブロック間でデータ移動処理を実行するようにしたので、未使用ブロックが少なくなった時にある特定の論理アドレスばかりを書き換えた場合において生じてしまう特定物理ブロックへの書き換え集中を回避することができる。
【００１６】
さらなる効果として、データ移動処理部が電源立ち上げ時の初期化処理においてデータ移動処理を実行するようにしたので、通常動作時すなわちアクセス装置からのデータの読み書きを行う動作モードにおける処理速度の低下を回避することが可能となる。
【発明を実施するための最良の形態】
【００１７】
（実施の形態）
図１は、本発明の実施の形態に於ける不揮発性記憶システムを示したブロック図である。図１において、不揮発性記憶システムは、アクセス装置１５０と不揮発性記憶装置１２０とから構成され、不揮発性記憶装置１２０は、メモリコントローラ１００と不揮発性メモリ１１０を含む。メモリコントローラ１００はホストインターフェース１０１、バッファ１０２、読み書き制御部１０３、ＣＰＵ部１０４、アドレス管理部１０５、未使用ブロック検出部１０６、書き換え回数計数部１０７、データ移動処理部１０８を含む。
【００１８】
不揮発性メモリ１１０はフラッシュメモリであり、ユーザ領域として例えば１Ｇバイトの容量を有する。不揮発性メモリ１１０は消去単位を物理ブロックとすると、図２に示すようにＰＢ０〜ＰＢ４０９５までの複数の物理ブロックから成り立っている。ここでハッチングを施したブロックはデータを保持している物理ブロックとする。図３は、１つの物理ブロックの構成を示す説明図である。1つの物理ブロックは、そのデータの記録のサイズを２５６ｋバイトとし、ページ番号ＰＮ０〜ＰＮ１２７までの１２８ページから成る。また各ページは書き込み単位であって、２ｋバイトのデータ領域と、６４バイトの管理領域とからなる。データ領域は４分割され、０〜３のセクタ番号が付されている。ここでページ番号ＰＮ０の管理領域には、ファイルの管理情報、即ちブロックステータス、論理ブロック番号、書き換え回数等が保持されている。
【００１９】
ホストインターフェース１０１は外部バスを介してアクセス装置１５０に接続されており、アクセス装置１５０からデータの書き込みや読み出しに係るコマンド、論理アドレスおよびデータを受信したり、データの読み出しにおいてはデータをアクセス装置１５０に送信するブロックである。
【００２０】
読み書き制御部１０３は、メモリバスを介して不揮発性メモリ１１０に接続され、アドレス管理部１０５の指示により、バッファ１０２に一時記憶されたデータを不揮発性メモリ１１０に書き込んだり、不揮発性メモリ１１０に記憶されたデータをバッファ１０２に読み出すものである。また、データ移動処理部１０８の指示により、不揮発性メモリ１１０内の２つの物理ブロック間でデータの移動を行うものである。ＣＰＵ部１０４は、メモリコントローラ１００の全体を制御するものである。
【００２１】
アドレス管理１０５は、アクセス装置１５０から受信した論理アドレスに基づいて不揮発性メモリ１１０の物理アドレスを生成するものであり、後述する物理領域管理テーブル１０５ａと論物変換テーブル１０５ｂを含む。図４Ａ，図４Ｂは、物理領域管理テーブル１０５ａを示すメモリマップであり、物理ブロック番号ＰＢ０〜ＰＢ４０９５についてブロックステータスが保持されている。ここで値０は使用ブロック、値１は未消去の未使用ブロック、値２は不良ブロック、値３は消去済みの未使用ブロックを示す。尚本実施の形態では値２、即ち不良ブロックとなる場合はないものとする。図５Ａ，図５Ｂは、アドレス管理部１０５に含まれる論理物理変換テーブル１０５ｂを示すメモリマップである。この変換テーブルは論理ブロック番号ＬＢＮに対応する物理ブロック番号ＰＢＮを示している。図６は、論理アドレスＬＡと物理アドレスＰＡとの対応関係を示す説明図である。
【００２２】
未使用ブロック検出部１０６は、データの書き込み処理を実施する都度、物理領域管理テーブル１０５ａを参照して未使用ブロック数を検出するものである。
【００２３】
書き換え回数計数部１０７は、データの書き込み処理を実施する都度、物理ブロック毎の書き換え回数を計数し、書き換え回数テーブル１０７ａに該書き換え回数を保持するものである。図７は、書き換え回数テーブル１０７ａの一例を示すメモリマップである。この書き換え回数テーブル１０７ａは物理ブロックＰＢＮ毎にその書き換え回数を保持している。このテーブルでは例えば物理ブロック番号ＰＢＮ０が書き換え回数３３３回で最大、ＰＢ２が９９回で最小となっている。
【００２４】
データ移動処理部１０８は、未使用ブロック検出部１０６が検出した未使用ブロック数をあらかじめ内部のＲＯＭに記憶している閾値（例えば５）と比較し、データ移動処理を行うか否かを判断する。実行する場合は書き換え回数テーブル１０７ａに基づきデータ移動処理対象となる２つの物理ブロックを選択し、読み書き制御部１０３を介してデータ移動処理を行うものである。ここで、データ移動処理とは、２つの物理ブロック（物理ブロックＡ，Ｂ）がいずれも有効データを記憶しているブロックである場合、物理ブロックＡ，Ｂに記憶されていたデータ（データＡ，Ｂ）を読み出し、物理ブロックＡ，Ｂを消去した後にデータＡを物理ブロックＢに、データＢを物理ブロックＡに書き込み直す処理のことを言う。またもし、一方の物理ブロック（例えば物理ブロックＢ）に有効なデータが記憶されていなかった場合、すなわち物理ブロックＢが未使用ブロックの場合は、単に物理ブロックＡに記憶されていたデータ（データＡ）を読み出し、物理ブロックＢを消去した後にデータＡを物理ブロックＢに書き込む処理をいう。
【００２５】
アクセス装置１５０は、不揮発性記憶装置１２０へのデータの書き込みおよび読み出しを行う装置である。
【００２６】
以上のように構成された、本発明の不揮発性記憶システムについて、電源立ち上げ時の初期化処理、通常動作時のデータ書き込み処理に分けてフローチャートを用いて説明する。図８は、メモリコントローラ１００の処理を示すフローチャートである。
【００２７】
［電源立ち上げ時の初期化処理］
アクセス装置１５０の電源の立ち上げにより、外部バスを通じて不揮発性記憶装置１２０の電源が立ち上がり、不揮発性記憶装置１２０は初期化処理に移行する。
【００２８】
初期化処理において、ＣＰＵ部１０４はバッファ１０２のクリア処理等の基本初期化処理を実行し（Ｓ１００）、その後、各物理ブロックの先頭ページの管理領域を調べ物理領域管理テーブル１０５ａと論物変換テーブル１０５ｂを作成する（Ｓ１０１）。具体的には、ＣＰＵ部１０４は読み書き制御部１０２を介して不揮発性メモリ１１０内の全物理ブロックの先頭ページの管理領域に記憶されたブロックステータスを読み出し、アドレス管理部１０５内のＲＡＭ上に物理領域管理テーブル１０５ａを作成する。それに併せて、不揮発性メモリ１１０内の全物理ブロックの先頭ページの管理領域に記憶された論理ブロック番号ＬＢＮを読み出し、アドレス管理部１０５内のＲＡＭ上に論理物理変換テーブル１０５ｂを作成する。以降、データの読み出しや書き込みにおいては、物理領域管理テーブル１０５ａと論理物理変換テーブル１０５ｂを用いて物理アドレスの決定を行う。
【００２９】
さらに、ＣＰＵ部１０４は読み書き制御部１０２を介して不揮発性メモリ１１０内の全物理ブロックの先頭ページの管理領域に記憶された書き換え回数を読み出し、書き換え回数計数部１０７内のＲＡＭに書き換え回数テーブル１０７ａを作成する（Ｓ１０２）。ＣＰＵ部１０４は未使用ブロック検出部１０６やデータ移動処理部１０８に制御を渡す。未使用ブロック検出部１０６は物理領域管理テーブル１０５ａからブロックステータスが値１又は３の物理ブロック、即ち未使用ブロックのブロック数をカウントする（Ｓ１０３）。そしてＳ１０４において未使用ブロック数が５以下かどうかを判定する。ここで未使用ブロック数が５を超えている場合には、後述するデータ移動処理を行うことなく、制御をＣＰＵ１０４に戻す。ＣＰＵ部１０４はアクセス装置１５０からホストインターフェース１０１を介した読み書き指示の転送がなされるまでウェイト状態となる（Ｓ１０５）。なお、初期化処理ＳＩにはＳ１００〜Ｓ１０４の処理に加えて、後述するＳ１１０〜Ｓ１１２のデータ移動処理が含まれる。
【００３０】
［通常動作時のデータ書き込み処理］
さてウエイト状態で読み書き指示があった場合はデータの書き込み又はデータの読み出し処理を実行し（Ｓ１０６）、終了すると再びＳ１０５に戻る。Ｓ１０５，Ｓ１０６は通常動作時の処理ＳＮであり、そのうち通常動作時のデータ書き込み処理について、図９のフローチャートを用いて詳細に説明する。なおデータ読み出し処理については、本発明とは関係がないので簡単のため省略する。
【００３１】
不揮発性記憶装置１２０はアクセス装置１５０からのデータ書き込み指示に伴いデータと論理アドレスを受信する。アクセス装置１５０は論理アドレスとして値０を指定すると、論理ブロック番号ＬＢＮは値０となる。また２５６ｋバイト分のデータを連続的に転送する。このとき書き込み先である物理ブロック番号ＰＢＮをアドレス管理部１０５が決定し、読み書き制御部１０３に物理ブロック番号ＰＢＮを渡す。そしてバッファ１０２を介して読み書き制御部１０３は不揮発性メモリ１１０にそのデータを書き込む。
【００３２】
書き込み先の物理ブロック番号ＰＢＮの選択に際し、まずアドレス管理部１０５が物理領域管理テーブルの先頭（ＰＢ０）から昇順にブロックステータスが値１もしくは値３である物理ブロックを検索し、１つの未使用の物理ブロックＰＢＮ、例えばここではＰＢ０を取得する（Ｓ２００）。取得したＰＢＮはアドレス管理部１０５が一時保持しておき、次の書き込みにおいては保持したＰＢＮを起点として昇順に検索を行い、ＰＢ４０９５に達すると再びＰＢ０の位置に戻る。このように巡回的に物理領域管理テーブルの未使用ブロックを検索することにより、特許文献１と同等のウェアレベリングを実現できる。
【００３３】
次に、アドレス管理部１０５が読み書き制御部１０３に書き込みの対象とする物理ブロック、ここではＰＢ０を消去し、そのブロックへの書き込みを指示する（Ｓ２０１）。さらにアドレス管理部１０５は書き換え回数計数部１０７にＰＢ０を指定する（Ｓ２０２）。こうすれば、書き換え回数計数部１０７は書き換え回数テーブル１０７ａのＰＢ０の書き換え回数をインクリメントし（Ｓ２０３）、インクリメント後の書き換え回数値を読み書き制御部１０３に転送する（Ｓ２０４）。
【００３４】
次に、アドレス管理部１０５が物理領域管理テーブル１０５ａと論物変換テーブル１０５ｂを更新する（Ｓ２０５）。具体的には、図５Ａに示すように、論物変換テーブルのＬＢＮ＝０に対応する位置に記憶された物理ブロック番号ＰＢ１に、論理ブロック番号ＬＢＮ＝０に対応するデータが記憶されていたことを確認する。その後、図５Ｂに示すように、論物変換テーブル１０５ｂのＬＢＮ＝０に対応する位置に記憶された物理ブロック番号を、値１から値０に更新する。こうして論理ブロックＬＢＮ０に対応するデータがＰＢ０に記憶されたものとして管理し直す。次に、図４Ａに示すように物理領域管理テーブル１０５ａのＰＢ０，ＰＢ１に夫々記憶されたブロックステータスの値１，０を、図４Ｂに示すように夫々値０，１に更新する。こうしてＰＢ０のブロックステータスを未使用ブロックから使用ブロックに変更すると共に、ＰＢ１のブロックステータスを使用ブロックから未使用ブロックに変更する。
【００３５】
次に、読み書き制御部１０３が書き込み対象の物理ブロックＰＢ０を消去した後、バッファ１０２から転送されたデータをＰＢ０のデータ領域にページ番号０から昇順に書き込む。同時に物理ブロックＰＢ０の管理領域に論理ブロック番号ＬＢＮと、物理領域管理テーブル上で更新されたＰＢ０のブロックステータス、及び書き換え回数の値を書き込む（Ｓ２０６）。以上のステップにより不揮発性メモリ１１０へのデータの書き込みが終了し、不揮発性メモリ１１０内の各物理ブロックは図２に示すような使用状態になったとする。すなわちＰＢ１、ＰＢ１５、ＰＢ１８、ＰＢ４０９４、ＰＢ４０９５の５つの物理ブロックが未使用ブロックであり、その他の物理ブロックは全て使用ブロックであるとする。
【００３６】
ここで、図２のように未使用ブロックが少なくなった状態で、特定の論理アドレスばかりが書き換えられたことを考える。例えばファイルアロケーションテーブル（以下、ＦＡＴという）を用いたＦＡＴファイルシステムに基づく不揮発性記憶システムにおいては、ＦＡＴが論理ブロック番号ＬＢ０の領域にアロケートされており、ＦＡＴはデータの書き込みに伴い頻繁に書き換えられる。
【００３７】
従って、図２のような状態でＦＡＴが頻繁に書き換えられた場合、論理ブロック番号ＬＢＮ＝０に対応する物理ブロックと数少ない未使用ブロック間のみで代替処理が頻繁に行われることとなり、これらの物理ブロックが他の物理ブロックよりも書き換え回数が多くなってしまう。書き換え回数の増加速度は未使用ブロック数が少なければ少ないほど速くなる。このような状況に対応するため、本実施の形態では電源立上げ時の初期化処理において、未使用ブロック数が少なくなってきた段階で、書き換え回数の多い物理ブロックと書き換え回数の少ない物理ブロック間でデータの移動を行う。例えばＦＡＴがアロケートされる論理ブロック番号ＬＢＮ＝０を書き込む物理ブロックを書き換え回数の少ない物理ブロックに移動させる。その結果、特定の物理ブロックの書き換え回数のみが増加してくることを回避することができる。
【００３８】
以降に、初期化処理の中で実行されるデータ移動処理について説明する。前述したステップＳ１０４において、未使用ブロック数がデータ移動処理部１０８内のＲＯＭに予め設定された閾値（本実施の形態では値５）以下になった場合に、データ移動処理を実行する。
【００３９】
データ移動処理において、まずデータ移動処理部１０８が書き換え回数テーブル１０７ａに基づき、書き換え回数が最多の物理ブロックＰＢmax（例えばＰＢ０）と書き換え回数が最少の物理ブロックＰＢmin（例えばＰＢ２）を特定する（Ｓ１１０）。次に、データ移動処理部１０８が読み書き制御部１０３を介してＰＢmaxとＰＢmin間のデータの移動を実行する（Ｓ１１１）。例えば物理ブロックＰＢ０とＰＢ２に記憶されていたデータ（それぞれデータ０、データ１とする）を読み出してバッファ１０２に一旦保持し、ＰＢ０とＰＢ２を消去した後にデータ０をＰＢ２に、データ２をＰＢ０に書き込み直す。データ移動処理部１０８がデータ移動の対象となった物理ブロックをアドレス管理部１０５と書き換え回数計数部１０７に通知する。アドレス管理部１０５は論物変換テーブル１０５ｂを更新し書き込み処理を終わる（Ｓ１１２）。具体的には、ＰＢ０に記憶されたデータの論理ブロック番号ＬＢＮが値０、ＰＢ２に記憶されたデータの論理ブロック番号ＬＢＮが値１００であるとすると、論物変換テーブル１０５ｂにおいてＬＢＮ＝０の位置に値０（ＰＢ０に対応する値）を、ＬＢＮ＝１００の位置に値２（ＰＢ２に対応する値）を書き込む。又書き換え回数計数部１０７はデータ移動の対象となった２つの物理ブロックの書き換え回数を夫々インクリメントする。
【００４０】
以上のように、書き換え回数計数部１０７が各物理ブロックの書き換え回数を管理することにより、初期化時に書き換え回数が最多あるいは最少となる物理ブロックがどの物理ブロックであるかを判別し、データ移動処理部１０８が未使用容量検出部の検出した未使用ブロック数が少なくなった場合（閾値以下になった場合）に最多書き換え回数ブロックと最少書き換え回数ブロック間でデータの移動を行う。これにより、例えばＦＡＴのような書き換え頻度の高いデータを特定の物理ブロックばかりにアロケートさせないようにできるので、結果として不揮発性記憶装置１２０の長寿命化を図ることができる。
【００４１】
また初期化時にデータ移動処理を実行するようにしたので、通常動作時すなわちアクセス装置からのデータの読み書きを行う動作モードにおける処理速度の低下を回避することが可能となる。
【００４２】
尚、データ移動対象の物理ブロックとして、書き換え回数が最多である物理ブロックＰＢmaxと書き換え回数が最少である物理ブロックＰＢminとしたが、書き換え回数計数部１０７が書き換え回数テーブル１０７ａに基づき、全物理ブロックに対する書き換え回数の平均値を算出し、該平均値より大きい書き換え回数の物理ブロックからランダムに選択した物理ブロックと、該平均値より小さい書き換え回数の物理ブロックからランダムに選択した物理ブロックとをデータ移動対象の物理ブロックとしても構わない。
【００４３】
又、データ移動は１組の物理ブロックに限らず、複数組の物理ブロックについてデータ移動処理を実行してもよい。更に書き換え回数順の上位数％と下位数％の等しい数の物理ブロック間でデータ移動を実行するようにしてもよい。
【産業上の利用可能性】
【００４４】
本発明にかかる不揮発性記憶システムは、長寿命かつ書き込み速度を両立する方法を提案したものであり、半導体メモリカード等の不揮発性記憶装置を使用した静止画記録再生装置や動画記録再生装置、あるいは携帯電話において有益である。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施の形態に於ける不揮発性記憶システムを示すブロック図
【図２】物理ブロックの構成を示す説明図
【図３】不揮発性メモリ１１０内の物理ブロックの使用状態を示す説明図
【図４Ａ】アドレス管理部１０５に含まれる物理領域管理テーブルを示すメモリマップ
【図４Ｂ】アドレス管理部１０５に含まれる物理領域管理テーブルを示すメモリマップ
【図５Ａ】アドレス管理部１０５に含まれる論理物理変換テーブルを示すメモリマップ
【図５Ｂ】アドレス管理部１０５に含まれる論理物理変換テーブルを示すメモリマップ
【図６】論理アドレスと物理アドレスの対応関係を示す説明図
【図７】書き換え回数計数部１０７に含まれる書き換え回数テーブルを示すメモリマップ
【図８】メモリコントローラ１００の処理を示すフローチャート
【図９】通常動作時の書き込み処理を示すフローチャート
【符号の説明】
【００４６】
１００  メモリコントローラ
１０１  ホストインターフェース
１０２  バッファ
１０３  読み書き制御部
１０４  ＣＰＵ部
１０５  アドレス管理部
１０５ａ  物理領域管理テーブル
１０５ｂ  論物変換テーブル
１０６  未使用ブロック検出部
１０７  書き換え回数計数部
１０７ａ  書き換え回数テーブル
１０８  データ移動処理部
１１０  不揮発性メモリ
【図１】
2008097132.tif 000003
【図２】
2008097132.tif 000004
【図３】
2008097132.tif 000005
【図４Ａ】
2008097132.tif 000006
【図４Ｂ】
2008097132.tif 000007
【図５Ａ】
2008097132.tif 000008
【図５Ｂ】
2008097132.tif 000009
【図６】
2008097132.tif 000010
【図７】
2008097132.tif 000011
【図８】
2008097132.tif 000012
【図９】
2008097132.tif 000013