以下、一実施形態に係るメモリシステムが適用されたフラッシュメモリシステム(以下、FMシステム)を説明する。なお、本発明は以下の実施形態に限定されるものではない。また以下に記載した構成要素には、当業者が容易に想定できるもの、実質的に同一のものが含まれる。
図1は、本発明の実施形態に係るFMシステムの構成を示す。
FMシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。
FMシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、FMシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
メモリコントローラ3は、マイクロプロセッサ6と、ホストインタフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインタフェースブロック10と、ECC(Error Correcting Code)ブロック11と、ROM(Read Only Memory)12とから構成される。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインタフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム4がFMシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりFMシステム1に供給されるデータ等は、ホストインタフェースブロック7を入口としてFMシステム1の内部(例えば、バッファ9)に取り込まれる。また、FMシステム1からホストシステム4に供給されるデータ等は、ホストインタフェースブロック7を出口としてホストシステム4に供給される。
ホストインタフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えている。コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2には、アクセス対象領域のセクタ数が書き込まれる。LBAレジスタR3には、アクセス対象領域の先頭のLBA(Logical Block Address)が書き込まれる。
記憶部の一実施例であるワークエリア8は、フラッシュメモリ2の制御に必要なデータを一時的に格納する作業領域であり、例えば複数のSRAM(Static Random Access Memory)セルによって構成されている。ワークエリア8には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル等が記憶される。アドレス変換テーブルを用いて、論理アドレスを物理アドレスに変換することができる(アクセス先の論理ブロックにマッピングされている物理ブロックを特定することができる)。
バッファ9は、フラッシュメモリ2から読み出したデータを、ホストシステム4が受け取り可能な状態となるまで保持する。また、バッファ9は、フラッシュメモリ2に書き込むデータを、フラッシュメモリ2が書き込み可能な状態となるまで保持する。
フラッシュメモリインタフェースブロック10は、内部バス14を介して、フラッシュメモリ2との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error Correcting Code)を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、メモリコントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、ROM12から読み出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインタフェースブロック10に処理を実行させる。
フラッシュメモリ2は、NAND型フラッシュメモリからなる。NAND型フラッシュメモリは、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ(物理ページ)単位で行われ、データ消去動作はブロック(物理ブロック)単位で行われる。物理ブロックは、複数の物理ページで構成される。
本実施形態の書込み処理では、ホストシステム4によって、コマンドレジスタR1に、書き込みコマンドを示すコマンドコードが書き込まれ、セクタ数レジスタR2に、書き込むデータのセクタ数が書き込まれ、LBAレジスタR3には、書き込みを開始する先頭データに対応するLBAが書き込まれる。セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム4から与えられるデータが書き込まれる。ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域(以下、論理セクタ領域と言う)に付けた通番であるLBAで管理されている。また、複数個の論理セクタ領域で構成された論理ブロックが形成され、この論理ブロックに対して、1個又は複数個の物理ブロックが割り当てられる。
論理ブロックと物理ブロックの対応関係は、アドレス変換テーブルを用いて管理される。アドレス変換テーブルは、例えばワークエリア8に記憶される。
図2は、ワークエリア8に記憶される情報の一例を示す。
ワークエリア8には、例えば、物理ブロック管理テーブル201、システム最大消去回数202、スペア最大消去回数203、スペア最小消去回数204、アドレス変換テーブル205、閾値Th1、閾値Th2及び閾値Th3が記憶される。
物理ブロック管理テーブル201は、各物理ブロックに関する情報を有し、例えば、物理ブロック毎に、種類及び消去回数を有する。物理ブロック(種類)としては、使用中ブロック(論理アドレスにマッピングされている物理ブロック)と、スペアブロック(マッピング可能であり空き状態の物理ブロック)と、不良ブロック(マッピング不可の物理ブロック)とがある。
システム最大消去回数202は、物理ブロック管理テーブル201から取得された情報の一例であり、システム最大消去回数を表す値である。「システム最大消去回数」とは、FMシステム1のフラッシュメモリ2についての最大の消去回数である。
スペア最大消去回数203は、物理ブロック管理テーブル201から取得された情報の一例であり、スペア最大消去回数を表す値である。「スペア最大消去回数」とは、1以上のスペアブロックにそれぞれ対応した1以上の消去回数のうちの最大の消去回数である。
スペア最小消去回数204は、物理ブロック管理テーブル201から取得された情報の一例であり、スペア最小消去回数を表す値である。「スペア最小消去回数」とは、1以上のスペアブロックにそれぞれ対応した1以上の消去回数のうちの最小の消去回数である。
アドレス変換テーブル205は、LBN(論理ブロック番号)毎に、マッピングされている物理ブロックのPBA(物理ブロックアドレス(例えば番号))と、登録消去回数とを有する。論理ブロックは論理領域の一例であり、物理ブロックは物理領域の一例である。本実施形態において、「登録消去回数」とは、アドレス変換テーブル205に登録された消去回数であり、物理ブロックがマッピングされたときのシステム最大消去回数である。すなわち、LBN毎の登録消去回数は、そのLBNに割り当てられた物理ブロックの消去回数ではなく、そのLBNに物理ブロックがマッピングされたときのシステム最大消去回数である。マイクロプロセッサ6は、論理ブロックに物理ブロックをマッピングするとき、その時点でのシステム最大消去回数を、登録消去回数として、物理ブロックのPBAと一緒にアドレス変換テーブル205に登録する。
閾値Th1、閾値Th2及び閾値Th3の各々は、ウエアレベリング処理(後述の第1及び第2のウエアレベリング処理)において比較される閾値である。閾値Th1、閾値Th2及び閾値Th3のうちの少なくとも1つは、ユーザにより変更可能な値であってもよいし、変更不可能な固定値でもよい。
各消去回数202〜204は、物理ブロック管理テーブル201がマイクロプロセッサ6により更新される都度に(いずれかの物理ブロックの消去回数が更新される都度、又は、スペアブロックが論理ブロックに割り当てられる都度に)、マイクロプロセッサ6により必要に応じて更新される。また、各消去回数202〜204は、ワークエリア8に常駐されないでもよい。また、図2に示した情報の少なくとも一部が、メモリコントローラ3における、ワークエリア8とは別の記憶領域に、記憶されてもよい。また、図2に示した情報の少なくとも一部(例えばアドレス変換テーブル205)が、フラッシュメモリ2に保存されてもよい。
以下、本実施形態に係るウエアレベリング処理を説明する。
図3は、本実施形態に係る第1ウエアレベリング処理のフローチャートである。
第1ウエアレベリング処理は、例えば、スタティックなウエアレベリング処理の一例であり、繰り返し(例えば、定期的に、又は、FMシステム1の状況が所定の条件を満たす都度に)開始される。
マイクロプロセッサ6が、アドレス変換テーブル205から最小の登録消去回数を検索し、且つ、システム最大消去回数202を取得する(S301)。
マイクロプロセッサ6が、取得されたシステム最大消去回数202と検索により得られた最小登録消去回数との差(第1の差)が閾値Th1未満か否かを判断する(S302)。
S302の判断結果が否定の場合(つまり、第1の差が閾値Th1以上の場合)(S302:NO)、マイクロプロセッサ6は、スペア最大消去回数203を取得し(S303)、システム最大消去回数202とスペア最大消去回数203との差(第2の差)が閾値Th2未満か否かを判断する(S304)。
S304の判断結果が肯定の場合(S304:YES)、マイクロプロセッサ6は、データコピー処理を行う(S305)。具体的には、次の処理を行う。すなわち、図4に示すように、マイクロプロセッサ6は、最小登録消去回数に対応した物理ブロック(コピー元ブロック)からスペア最大消去回数203に対応したスペアブロック(コピー先ブロック)にデータをコピーする(S401)。マイクロプロセッサ6は、コピー先ブロックを、コピー元ブロックに代えてコピー元ブロックのマッピング先の論理ブロックにマッピングする(S402)。マイクロプロセッサ6は、コピー元ブロックからデータを消去し、コピー元ブロックの消去回数を更新し(例えば1を加算し)、コピー元ブロックをスペアブロックとして管理する(S403)。S402により、アドレス変換テーブル205が更新される。また、S403により、物理ブロック管理テーブル201が更新され、それに伴い、スペア最大消去回数203及びスペア最小消去回数204のうちの少なくともスペア最大消去回数203が更新される。
S302の判断結果が肯定の場合(S302:YES)、又は、S304の判断結果が否定の場合(つまり、第2の差が閾値Th2以上の場合)(S304:NO)、マイクロプロセッサ6は、データコピー処理(S305)を行うことなく第1ウエアレベリング処理を終了する。
第1ウエアレベリング処理によれば、「閾値Th1」が設定されている意味は、当面消去も書き込みも行われていない物理ブロックを認識するためであり、「閾値Th2」は、最近までに消去されているスペアブロックがあるか否かを判断するためである。「閾値Th1」及び「閾値Th2」の少なくとも1つは、フラッシュメモリ2の耐久性等により適宜決めることができる。
以下、閾値Th1及び閾値Th2の意義と、S302及びS304の判断の意義を説明する。
まず、ウエアレベリングの基本的な考え方によれば、高頻度更新論理ブロック(比較的更新頻度が高い論理ブロック)に割り当てられる物理ブロックは、消去回数が大きくなりやすく、低頻度更新論理ブロック(比較的更新頻度が低い論理ブロック)に割り当てられる物理ブロックは、消去回数が小さく、故に、高頻度更新論理ブロックには、消去回数が小さい物理ブロックが割り当てられ、低頻度更新論理ブロックには、消去回数が大きい物理ブロックが割り当てられることが、消去回数の平準化の観点で好ましい。
本実施形態によれば、論理ブロックに物理ブロックが新たにマッピングされたときに、その論理ブロックに、物理ブロックのマッピング時点のシステム最大消去回数(登録消去回数)が関連付けられる。各論理ブロックの登録消去回数は、その論理ブロックにマッピングされている物理ブロックが別の物理ブロックに変更されたときに、その時点のシステム最大消去回数に更新される。
閾値Th1とS302との意義を説明する。最小登録消去回数に対応した論理ブロックは、いつまでも更新がされていない論理ブロックである。本実施形態では、そのような論理ブロックに割り当てられる物理ブロックの消去回数は最小とみなされる。S302の判断では、最小登録消去回数に対応した論理ブロックにマッピングされている物理ブロックの実際の消去回数は考慮されない。システム最大消去回数と最小登録消去回数の差が大きければ、いつまでも更新がされていない論理ブロックが存在し故に消去回数にばらつきが生じているとみなされ、データコピー処理(S305)が行われる方向に処理が進む。
また、閾値Th1と比較される差分は、システム最大消去回数と最小登録消去回数との差分であるが、登録消去回数は、いずれかの物理ブロックからデータが消去されたからといって更新されるものではない。このため、ウエアレベリング処理の頻発を回避できる。
次に、閾値Th2とS304との意義を説明する。システム最大消去回数とスペア最大消去回数との差が小さければ、データコピー処理(S305)が行われる。システム最大消去回数とスペア最大消去回数との差が小さいということは、スペア最大消去回数は十分大きいということである。そして、閾値Th1について述べたように、最小登録消去回数に対応した論理ブロックは、いつまでも更新がされていない論理ブロックであり、本実施形態では、そのような論理ブロックにマッピングされている物理ブロックの消去回数は最小とみなされる。従って、消去回数が最小とみなされた物理ブロックから、スペア最大消去回数のスペアブロックにデータをコピーすることは、消去回数の平準化の理屈にかなう。
図5は、本実施形態に係る第2ウエアレベリング処理のフローチャートである。
第2ウエアレベリング処理は、例えば、ダイナミックなウエアレベリング処理の一例であり、具体的には、例えば、新規マッピング書込み処理である。新規マッピング書込み処理とは、ホストシステム4からの書込みコマンドで指定されているLBAが属する論理ブロック(書込み先論理ブロック)にマッピングされている物理ブロックに空きの物理ページが無くスペアブロックをマッピングする必要があるケースでの書込み処理である。
マイクロプロセッサ6は、書込み先論理ブロックに対応した登録消去回数をアドレス変換テーブル205から取得する(S501)。マイクロプロセッサ6は、システム最大消去回数202と取得した登録消去回数との差(第3の差)が閾値Th3未満か否かを判断する(S502)。
S502の判断結果が肯定の場合(S502:YES)、マイクロプロセッサ6は、スペア最大消去回数203を取得し(S503)、スペア最大消去回数203のスペアブロックを書込み先論理ブロックにマッピングし、そのマッピングしたスペアブロックにデータ(ホストシステム4からの書込みコマンドに従う書込み対象データ)を書き込む(S505)。
一方、S502の判断結果が否定の場合(S502:NO)、マイクロプロセッサ6は、スペア最小消去回数204を取得し(S504)、スペア最小消去回数204のスペアブロックを書込み先論理ブロックにマッピングし、そのマッピングしたスペアブロックにデータを書き込む(S505)。
第2ウエアレベリング処理によれば、システム最大消去回数と書込み先論理ブロックに対応する登録消去回数との差が大きければ(閾値Th3以上であれば)、書込み先論理ブロックに対する書込みの頻度は低く、故に、スペア最大消去回数のスペアブロックが割り当てられる。一方、システム最大消去回数と書込み先論理ブロックに対応する登録消去回数との差が小さければ(閾値Th3未満であれば)、書込み先論理ブロックに対する書込みの頻度は高く、故に、スペア最小消去回数のスペアブロックが割り当てられる。これにより、消去回数の平準化が実現される。
本実施形態によれば、ほとんど書込み先とならない論理ブロックについても消去回数を平準化できる。また、過去の期間において書込み先となる頻度が高かったが直近の期間において書込み先となる頻度が低い論理ブロック群についても、消去回数を平準化できる。更に、フラッシュメモリ2の容量又は耐久性によって閾値Th1及びTh2の少なくとも1つを設定できるので、フラッシュメモリ2の耐久性等に基づき第1ウエアレベリング処理の頻度を調節できる。
以上、本発明の一実施形態を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。例えば、上述したFMシステム1は、フラッシュメモリ以外のメモリ(揮発性メモリ又は不揮発性メモリ)を有するメモリシステム全般に適用することができる。また、メモリコントローラが有するプロセッサは、典型的にはマイクロプロセッサでよいが、処理の一部を実行するハードウェア回路を含んでいてもよい。また、登録消去回数は、アドレス変換テーブルに登録されなくてもよく、アドレス変換テーブルとは別のテーブル等により論理アドレスに関連付けられていればよい。