(57)【要約】  データを格納するための一つまたは複数のメモリブロックを有する不揮発性メモリと、前記一つまたは複数のメモリブロックをデータの格納のために割り当てる制御部と、前記不揮発性メモリ内の割り当てられていないメモリブロックに対するポインタが格納されているウェアレベリングテーブルと、を備え、前記制御部は、前記ウェアレベリングテーブル内で一つまたは複数のポインタを識別し、その後その識別されたポインタと関連している割り当てられていないメモリブロックをデータの格納のために割り当てるようになっているシステムおよび方法。【選択図】  図１
2009507302.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ内の一つまたは複数のメモリブロックをデータの格納のために割り当てる制御部と、
前記不揮発性メモリ内のメモリブロックに対する複数のポインタを格納している論理−物理変換テーブルと、
前記不揮発性メモリ内の割り当てられていないメモリブロックに対するポインタを格納しているウェアレベリングテーブルと、
を備えているシステムであって、
前記制御部は、最初に、前記論理−物理テーブル内の前記ポインタにしたがって、データを格納するメモリブロックを割り当てるようになっており、
前記割り当てられていないメモリブロックは、前記論理−物理テーブル内の前記ポインタにしたがって、既に、前記制御部によってデータを格納するように割り当てられており、
前記制御部は、前記ウェアレベリングテーブル内の一つまたは複数のポインタを識別するとともに、当該識別されたポインタと関連している前記メモリブロックにデータを格納するようになっていることを特徴とする前記システム。
【請求項２】
前記制御部は、前記一つまたは複数のメモリブロック内に格納されているデータを消去するとともに、前記ウェアレベリングテーブルに、前記消去済みメモリブロックに対するポインタを加えるように構成されている請求項１に記載のシステム。
【請求項３】
前記制御部は、前記ポインタと関連している前記メモリブロックがいつ消去されたかに応じて、前記ウェアレベリングテーブル内の前記ポインタを優先するように構成されている請求項２に記載のシステム。
【請求項４】
前記制御部は、データの格納に利用できる割り当てられていないメモリブロックに対するポインタを、前記ウェアレベリングテーブル内で線形検索するように構成されている請求項３に記載のシステム。
【請求項５】
前記制御部は、前記不揮発性メモリにおける消去されたメモリブロックおよび欠陥のあるメモリブロックを識別し、識別された消去されたメモリブロックおよび欠陥のあるメモリブロックの数をスレッショルドと比較し、前記比較結果または前記不揮発性メモリの初期化に応じて、前記ウェアレベリングテーブルに前記比較結果に応じてポインタを加えるようになっている請求項１に記載のシステム。
【請求項６】
前記制御部は、前記割り当てられていないメモリブロックに対するポインタを前記ウェアレベリングテーブルに加えると同時に前記ポインタを有する前記論理−物理変換テーブルを初期化する請求項１に記載のシステム。
【請求項７】
前記制御部は、前記割り当てられていないメモリブロックに対するポインタを求めて前記ウェアレベリングテーブルにアクセスする前に、前記論理−物理変換テーブル内の前記ポインタと関連している前記メモリブロックが割り当てられるように構成されている請求項６に記載のシステム。
【請求項８】
前記ウェアレベリングテーブルは、前記割り当てられたメモリブロックに対するポインタを格納しておらず、かつ前記割り当てられていないメモリブロックは、既に、前記制御部によって消去済みである請求項１に記載のシステム。
【請求項９】
前記割り当てられていないメモリブロックには、データの格納に利用できる一つまたは複数のメモリブロックと、データを格納できない一つまたは複数の欠陥メモリブロックと、が含まれる請求項1に記載のシステム。
【請求項１０】
前記ウェアレベリングテーブルは、前記制御部に、前記ポインタのうちのどのポインタが前記欠陥メモリブロックと関連しているのかを示すように構成されている請求項９に記載のシステム。
【請求項１１】
前記不揮発性メモリが、複数のメモリ領域を備えており、各メモリ領域が複数のメモリブロックと別のウェアレベリングテーブルとを有しており、前記制御部は、データを格納するメモリ領域を特定する書き込み命令を受け取り、前記ウェアレベリングテーブルが前記特定されたメモリ領域に対応していないことを判定し、さらに前記特定されたメモリ領域に対応するメモリブロックに対するポインタを前記ウェアレベリングテーブルに再格納するようになっている請求項１に記載のシステム。
【請求項１２】
ウェアレベリングテーブルに、フラッシュメモリ内の一つまたは複数のメモリブロックに対するポインタであって、複数の消去済みメモリブロックまたは欠陥メモリブロックと関連するポインタを加えるステップと、
前記ウェアレベリングテーブル内の消去済みメモリブロックと関連している少なくとも一つのポインタを識別するステップと、
前記識別されたポインタと関連している前記メモリブロックにデータを格納するステップと、
前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
消去済みメモリブロックと欠陥メモリブロックの数をスレッショルドと比較するステップと、
前記比較結果または前記フラッシュメモリの初期化に応じて、前記ウェアレベリングテーブルに、前記比較結果に対応する前記メモリブロックに対するポインタを加えるステップと、を含む方法。
【請求項１３】
前記ウェアレベリングテーブル内のポインタを少なくとも一つ識別することに応じて、前記識別されたポインタと関連している前記メモリブロックにデータを格納する前に、一つまたは複数の前記メモリブロック内に格納されているデータを消去するステップをさらに含む請求項１２に記載の方法。
【請求項１４】
前記ポインタと関連している前記メモリブロックがいつ消去されたかに応じて、前記ウェアレベリングテーブル内の前記ポインタを優先するステップをさらに含む請求項１２に記載の方法。
【請求項１５】
前記優先ステップに従って、ポインタを求めて前記ウェアレベリングテーブルにアクセスするステップをさらに含む請求項１４に記載の方法。
【請求項１６】
前記ポインタと関連している前記メモリブロックに対して行われた書き込み操作の数に基づいて、前記ウェアレベリングテーブル内の前記ポインタを優先するステップを含む請求項１２に記載の方法。
【請求項１７】
前記ウェアレベリングテーブルに、前記消去済みメモリブロックと関連しているポインタを加えるのと同時に、前記フラッシュメモリ内の前記メモリブロックに対するポインタを格納している論理−物理変換テーブルを初期化するステップをさらに含む請求項１２に記載の方法。
【請求項１８】
前記消去済みメモリブロックに対するポインタを求めて、前記ウェアレベリングテーブルにアクセスする前に、前記論理−物理変換テーブル内の前記ポインタと関連している前記メモリブロックを割り当てるステップをさらに含む請求項１７に記載の方法。
【請求項１９】
ウェアレベリングテーブルに、フラッシュメモリ内の一つまたは複数のメモリブロックに対するポインタであって、複数の消去済みメモリブロックまたは欠陥メモリブロックと関連するポインタを加えるステップと、
データを格納する前記フラッシュメモリの領域を識別する書き込みコマンドを受け取るステップと、
前記ウェアレベリングテーブルが前記識別された領域に対応していないかを判定するステップと、
前記識別された領域に対応するメモリブロックに対するポインタを前記ウェアレベリングテーブルに再格納するステップと、
前記再格納されたウェアレベリングテーブル内の少なくとも一つのポインタを識別するステップと、
前記識別されたポインタと関連する前記メモリブロックにデータを格納するステップと、
を含むことを特徴とする方法。
【請求項２０】
前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
前記識別された消去済みメモリブロックおよび欠陥メモリブロックの数をスレッショルドと比較するステップと、
前記比較結果に応じて、前記ウェアレベリングテーブルに、前記識別された消去済みメモリブロックおよび欠陥メモリブロックに対するポインタを加えるステップと、
を含む請求項１９に記載の方法。
【請求項２１】
前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
前記識別された消去済みメモリブロックおよび欠陥メモリブロックの数をスレッショルドと比較するステップと、
前記比較結果に応じて、前記メモリブロックに対するポインタを格納している前記フラッシュメモリを初期化するステップと、
を含む請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大まかにはメモリデバイスに関し、より詳しくは、改良されたフラッシュメモリのウェアレベリングに関する。
【発明の背景】
【０００２】
フラッシュメモリのような不揮発性のメモリデバイスは、データ格納用途で広く用いられている。フラッシュメモリの物理的特性は、不揮発性なデータ格納を可能にするが、フラッシュメモリには、寿命が有限であるという欠点がある。例えば、NAND型のフラッシュメモリブロックは、通常、おおよそ十万回から百万回の書き込み操作が行われると、損耗するか(wear out)機能しなくなる。
【０００３】
フラッシュドライバは、通常、読み込みや、書き込みや、消去などのメモリ操作をメモリブロックに対して行う。通常、フラッシュドライバは、書き込み操作時に、データの格納に利用できる消去済みメモリブロックを識別する（特定する）ように要求される。多くのフラッシュドライバは、これらの書き込み操作を、直前に(most recently)消去されたメモリブロックに対して行う。この方法ならば、書き込み操作を行う消去済みメモリブロックを最も効率よく見つけることができるが、その一方、この方法では、書き込み操作は必ずしもメモリブロック間で均等に割り振られるわけではなく、そのためフラッシュメモリの寿命を減らすこととなる。
【０００４】
多くのシステムでは、フラッシュメモリの寿命を最大限に延ばすために、メモリブロックに対してより均等に書き込み操作(write operation)を割り振るようにするウェアレベリング技術(wear-leveling techniques)が実施される。例えば、フラッシュドライバは、フラッシュメモリ内の全メモリブロックに対してポインタを提供する論理−物理変換テーブル(logical-to-physical table)内で線形検索(linear search)を行うことで、ウェアレベリングの達成度を高めることがある。一般的に、この論理−物理変換テーブル内のポインタには付随するフラグが存在する。このフラグには、例えば、そのポインタに対応するメモリブロックは消去されているということを示す消去フラグ(erase flag)や、メモリブロックが機能しなくなったということを示す不良ブロックフラグ(bad block flag)などがある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
確かに、このウェアレベリング技術は、書き込み操作を割り振ることによってフラッシュメモリの寿命を延ばすことができるが、次にデータを書き込む消去済みブロックを探すのに利用される論理−物理変換テーブル内での線形検索は、非効率的である。さらに、フラッシュドライバに対する処理要求を考えると、状況次第では、線形検索は実行できない。例えば、フラッシュドライバが24個の利用可能な消去済みメモリブロックを含む1024個のメモリブロックを有するフラッシュメモリに対して論理−物理変換テーブル内で線形検索を行うと、消去済みメモリブロックを一つ見つけるのに、平均して44回論理−物理変換テーブルにアクセスすることが必要となる。この場合、論理−物理変換テーブルに1000回アクセスしてやっと消去済みメモリブロックが見つかるという最悪のシナリオも考えられる。フラッシュメモリが、10個の不良メモリブロックと、わずか14個の消去済みメモリブロックしか有していない場合、フラッシュドライバは、消去済みブロックを見つけるために、平均して77回論理−物理変換テーブルにアクセスしなければならない。
【０００６】
本発明は、添付図面を参照しつつ開示内容を読むことで最もよく理解できるであろう。
【好適実施形態の詳細な説明】
【０００７】
図１は、本発明の実施形態で利用可能なメモリシステム100をブロック図で示している。図１に関して、メモリシステム100は、データを格納するための複数のメモリブロック105−1〜105−Nを有するフラッシュメモリ110を備えている。いくつかの実施形態では、フラッシュメモリ110は、例えば、スマートメディア（登録商標）の仕様に従って構成された1024個のメモリブロックを有しており、その1024個のメモリブロックのうち最大1000個のメモリブロックが常にデータの格納のために割り当てられていてもよい。残りの割り当てられていないメモリブロックには、データの格納に利用できる消去済みまたは消去可能メモリブロックか、不良または欠陥メモリブロックもしくはその両方が含まれる。フラッシュメモリ110は、NAND型のフラッシュメモリであるか、あるいはデータを格納可能な何らかの他のタイプの不揮発性メモリであってもよい。
【０００８】
メモリシステム100は、フラッシュメモリ110内のメモリブロック105−1〜105−Nに対して、読み込みや、書き込みや、消去などのメモリアクセス操作を行うフラッシュメモリ制御部(flash memory controller)120を備えている。このフラッシュメモリ制御部120は、フラッシュメモリ110にデータを書き込むように指示されると、フラッシュメモリ110内のデータの格納に利用できる割り当てられていないメモリブロック(unallocated memory blocks)を一つまたは複数個識別し（特定し）、その後、その(それらの)識別されたメモリブロックにデータを書き込む。フラッシュメモリ制御部120は、ファームウェアや、コンピュータで読み取り可能な媒体内に格納された命令を実行するプロセッサまたは複数間で通信可能なプロセッサ(multiple communicating processors)や、離散的(discrete)ハードウェア構成要素のセットなどとして実施してもよい。
【０００９】
メモリシステム100は、フラッシュメモリ110内のメモリブロック105−1〜105−Nに対するポインタを格納している論理−物理変換テーブル130を備えている。これらのポインタは、フラッシュメモリ110内のメモリブロック105−1〜105〜Nの物理的位置に対するアドレスであってもよい。論理−物理変換テーブル130は、フラッシュメモリの冗長(redundant)領域に設けられてもよいし、もしくはメモリシステム100が備えている別のメモリ(例えばランダムアクセスメモリ(RAM)など)に格納されてもよい。
【００１０】
フラッシュメモリ制御装置120は、メモリシステム100の初期構成時に、論理−物理変換テーブル130内のポインタを、例えば、フラッシュメモリ110内のメモリブロック105−1〜105−Nと1対1対応する構成へと初期化する。いくつかの実施形態では、メモリブロック105−1〜105−Nに対する1対1マッピングは、メモリシステム100の製造中または初使用時に行われてもよい。したがって、フラッシュメモリ110に最初にデータを書き込むとき、フラッシュメモリ制御部120は、論理−物理変換テーブル130を線形シーケンシンス(linearly sequencing)することで、データを格納するメモリブロック105−1〜105−Nを識別することができる。
【００１１】
論理−物理変換テーブル130の初期化後もしくはフラッシュメモリ制御部120が論理−物理変換テーブル130を通しての線形シーケンス化を終えた後、フラッシュメモリ制御部120は、データ書き込み操作時に、フラッシュメモリ110内の消去済みまたは消去可能メモリブロックに対するポインタを識別する。論理−物理変換テーブル130内での検索は、フラッシュメモリ制御部120にとって非効率的で、厄介なタスクとなる可能性があるので、メモリシステム100の実施形態は、フラッシュメモリ110内の割り当てられていないメモリブロックに対するポインタを格納しているウェアレベリングテーブル(wear-leveling table) 140を備えている。これらの割り当てられていないメモリブロックは、フラッシュメモリ制御部120が以前に消去したメモリブロックのようなデータの格納に利用できるメモリブロック105−1〜105−Nと、機能しなくなったまたは欠陥のあるメモリブロック105−1〜105−Nのどちらかであるか、もしくはそれらの組み合わせからなる。ウェアレベリングテーブル140は、フラッシュメモリの冗長領域に設けられてもよいし、もしくはメモリシステム100が備えている別のメモリ(例えばランダムアクセスメモリ(RAM)など)に格納されてもよい。
【００１２】
フラッシュメモリ制御部120は、ウェアレベリングテーブル140に、割り当てられていないメモリブロックに対するポインタを加えるウェアレベリングユニット(wear-leveling unit) 125を有している。いくつかの実施形態では、このウェアレベリングユニット125は下記のタイミングで、ウェアレベリングテーブル140に割り当てられていないメモリブロックに対するポインタを加える。ここで言うタイミングとしては、論理−物理変換テーブル130の初期化後またはそれと同時、もしくはフラッシュメモリ制御部120が論理−物理変換テーブル130内の初期化されたポインタに対応するメモリブロック105−1〜105−Nにデータを格納した後またはそれと同時などがある。
【００１３】
フラッシュメモリ制御部120がフラッシュメモリ110にデータを書き込むことを決定すると、ウェアレベリングユニット125はウェアレベリングテーブル140にアクセスしてフラッシュメモリ110内の、データの格納に利用できる消去済みまたは消去可能メモリブロックを少なくとも一つ識別する（特定する）。また、ウェアレベリングテーブル140は、どのポインタが消去済みまたは消去可能メモリブロックに対応し、どのポインタが欠陥のあるまたは機能しないメモリブロック(faulty or failed memory blocks)に対応するのかを示すデータを格納していてもよい。ウェアレベリングテーブル140は、フラッシュメモリ110内の割り当てられていないメモリブロックに対するポインタを格納しているので、ウェアレベリングユニット125がデータ書き込み操作時に消去済みまたは消去可能メモリブロックを識別するのにかかる時間を減らすことができる。
【００１４】
ウェアレベリングユニット125は、例えばウェアレベリングテーブル140にデータを投入する際にウェアレベリングテーブル140に優先順位を付ける優先スキームを実施してもよい。ウェアレベリングユニット125は、各メモリブロックに対して行われた書き込み操作の数に基づいて、割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。別のやり方としては、ウェアレベリングユニット125は、メモリブロックがいつ消去されたかあるいは消去可能とみなされたかに応じて、それらの割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。このウェアレベリングテーブル140での優先順位付けによって、ウェアレベリングユニット125は、消去済みまたは消去可能メモリブロックに対するポインタに線形アクセス(linearly access)することが可能となる。これにより、メモリシステム100は、メモリブロック105−1〜105−N間でより均等に書き込み操作を割り振り、フラッシュメモリ110の寿命を延ばすことができる。
【００１５】
図２は、図１に示されているメモリシステムの動作の例を示すフローチャート200である。図２に関して、ブロック210では、フラッシュメモリ制御部120は、フラッシュメモリ110内の割り当てられていないメモリブロックを識別する。いくつかの実施形態では、フラッシュメモリ制御部120は、フラッシュメモリ110内の一つまたは複数のメモリブロック105−1〜105−Nはこれ以上データを格納し続ける必要がないという判定に応じて、フラッシュメモリ110内の割り当てられていないメモリブロックを識別してもよい。そして、そのように判定されたメモリブロックを消去するかそれを消去可能とみなす。また、フラッシュメモリ制御部120は、フラッシュメモリ110内のあるメモリブロック105−1〜105−Nは欠陥があるもしくは機能しないという判定に応じて割り当てられていないメモリブロックを識別してもよい。
【００１６】
ブロック220では、フラッシュメモリ制御部120は、ウェアレベリングテーブル140にフラッシュメモリ内の割り当てられていないメモリブロックに対するポインタを加える。いくつかの実施形態では、ウェアレベリングユニット125がウェアレベリングテーブル140にポインタを加える。ウェアレベリングテーブル140は、フラッシュメモリ110内の消去済みまたは消去可能メモリブロックに対するポインタを含んでいるかもしれないし、フラッシュメモリ110内の欠陥のあるまたは機能しないメモリブロックに対するポインタを含んでいるかもしれない。
【００１７】
フラッシュメモリ制御部120は、例えばウェアレベリングテーブル140にデータを投入する際にウェアレベリングテーブル140に優先順位を付ける優先スキームを実行してもよい。フラッシュメモリ制御部120は、各メモリブロックに対して行われた書き込み操作の数に基づいて、割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。別のやり方としては、ウェアレベリングユニット125は、メモリブロックがいつ消去されたかあるいは消去可能とみなされたかに応じて、それらの割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。
【００１８】
ブロック230では、フラッシュメモリ制御部120は、ウェアレベリングテーブル140内において、フラッシュメモリ制御部120からのデータを格納するのに利用できる割り当てられていないメモリブロックに対するポインタを識別する。識別されたポインタは、消去済みまたは消去可能メモリブロックのような、データの格納に利用できる割り当てられていないメモリブロックに対するポインタである可能性がある。そのメモリブロックが消去可能なメモリブロックである場合、フラッシュメモリ制御部120は、そのメモリブロックにデータを書き込む前にそのメモリブロックを消去してもよい。
【００１９】
フラッシュメモリ制御部120は、フラッシュメモリ110内の消去済みまたは消去可能メモリブロックに対するポインタを求めてウェアレベリングテーブル140にアクセスすることで、割り当てられていないメモリブロックに対するポインタを識別してもよい。ウェアレベリングテーブル140がフラッシュメモリ制御部120によって優先順位付けされている場合、ウェアレベリングユニット125は、消去済みまたは消去可能メモリブロックに対するポインタに線形アクセス(linearly access)でき、それによって検索時間を減らすとともにメモリシステム100がメモリブロック105−1〜105−N間でより均等に書き込み操作を割り振ることを可能にする。
【００２０】
次のブロック240では、フラッシュメモリ制御部120は、識別されたポインタに対応するメモリブロックにデータを書き込む。いくつかの実施形態では、フラッシュメモリ制御部120は、このメモリブロックにデータを書き込む前に、この識別されたポインタに対応するメモリブロックのデータを消去してもよい。
【００２１】
図３は、本発明の実施形態で利用できる別のメモリシステム300をブロック図で示している。図３に関して、メモリシステム300は、フラッシュメモリ制御部330からのデータを格納するための複数のフラッシュメモリ領域(flash memory zones) 310−1〜310−Nを備えている。いくつかの実施形態では、各フラッシュメモリ領域310−1〜310−Nは、例えば、スマートメディア（登録商標）の仕様に従って構成された1024個のメモリブロックを有しており、その1024個のメモリブロックのうち最大1000個のメモリブロックが常にデータの格納のために割り当てられていてもよい。残りの割り当てられていないメモリブロックには、データの格納に利用できる消去済みまたは消去可能メモリブロックか、不良または欠陥メモリブロックもしくはその両方が含まれる。フラッシュメモリ領域310−1〜310−Nは、NAND型のフラッシュメモリであるか、あるいはデータを格納可能な何らかの他種の不揮発性メモリであってもよい。
【００２２】
メモリシステム300は、フラッシュメモリ領域310−1〜310−Nに対して、読み込みや、書き込みや、消去などのメモリアクセス操作を行うフラッシュメモリ制御部320を備えている。このフラッシュメモリ制御部320は、フラッシュメモリ領域310−1〜310−Nのうちの一つにデータを書き込むように指示されると、フラッシュメモリ領域310と関連しているデータの格納に利用できる割り当てられていない(unallocated)メモリブロックを一つまたは複数個識別し、その後、その(それらの)識別されたメモリブロックにデータを書き込む。フラッシュメモリ制御部320は、ファームウェアや、コンピュータに読み込み可能な媒体内に格納された命令を実行するプロセッサまたは複数間で通信可能なプロセッサ(multiple communicating processors)や、離散的(discrete)ハードウェア構成要素のセットなどとして実施してもよい。
【００２３】
メモリシステム300は、一つまたは複数のフラッシュメモリ領域310−1〜310−N内のメモリブロックに対するポインタを格納している論理−物理変換テーブル330を備えている。これらのポインタは、フラッシュメモリ領域310−1〜310−N内のメモリブロックの物理的位置に対するアドレスであってもよい。論理−物理変換テーブル330は、フラッシュメモリの冗長(redundant)領域に設けられてもよいし、もしくはメモリシステム300が備えている別のメモリ(例えばランダムアクセスメモリ(RAM)など)に格納されてもよい。
【００２４】
フラッシュメモリ制御装置320は、メモリシステム300の初期構成時に、論理−物理変換テーブル330内のポインタを、例えば、少なくとも一つのフラッシュメモリ領域310−1〜310−N内のメモリブロックと1対1対応する構成へと初期化する。いくつかの実施形態では、これらのメモリブロックに対する1対1マッピングは、メモリシステム300の製造中または初使用時に行われてもよい。したがって、フラッシュメモリ領域310−1〜310−Nに最初にデータを書き込むとき、フラッシュメモリ制御部320は、論理−物理変換テーブル330を線形シーケンシンス(linearly sequencing)することで、データを格納するメモリブロックを識別することができる。
【００２５】
論理−物理変換テーブル330の初期化後もしくは、フラッシュメモリ制御部320が論理−物理変換テーブル330の線形シーケンス化を終えた後、フラッシュメモリ制御部320は、データ書き込み操作時に、フラッシュメモリ領域310−1〜310−N内の消去済みまたは消去可能メモリブロックに対するポインタを識別するように要求される。論理−物理変換テーブル330内での検索は、フラッシュメモリ制御部320にとって非効率的で、厄介なタスクとなる可能性があるので、メモリシステム300の実施形態は、一つまたは複数のフラッシュメモリ領域310−1〜310−N内の割り当てられていないメモリブロックに対するポインタを格納しているウェアレベリングテーブル(wear-leveling table) 340を備えている。ウェアレベリングテーブル340は、フラッシュメモリの冗長領域に設けられてもよいし、もしくはメモリシステム300が備えている別のメモリ(例えばランダムアクセスメモリ(RAM)など)に格納されてもよい。
【００２６】
フラッシュメモリ制御部320は、ウェアレベリングテーブル340に、一つまたは複数のフラッシュメモリ領域310−1〜310−N内の割り当てられていないメモリブロックに対するポインタを加えるウェアレベリングユニット(wear-leveling unit) 325を有している。いくつかの実施形態では、ウェアレベリングユニット325は、フラッシュメモリ領域310−1〜310−Nからのウェアレベリングテーブルのデータに従って、ウェアレベリングテーブル340にポインタを加えてもよい。ウェアレベリングテーブルのデータは、対応するフラッシュメモリ領域310−1〜310−N内の割り当てられていないメモリブロックに対するポインタであってもよい。ウェアレベリングユニット325は、下記のタイミングで、ウェアレベリングテーブル340に、割り当てられていないメモリブロックに対するポインタを加える。ここで言うタイミングとしては、論理−物理変換テーブル330の初期化後またはそれと同時、もしくはフラッシュメモリ制御部320が、論理−物理変換テーブル330内の初期化されたポインタに対応するメモリブロックにデータを格納した後またはそれと同時などがある。
【００２７】
ウェアレベリングユニット325は、例えばウェアレベリングテーブル340にデータを投入する際に、ウェアレベリングテーブル340に優先順位を付ける優先スキームを実施してもよい。ウェアレベリングユニット325は、各メモリブロックに対して行われた書き込み操作の数に基づいて、割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。別のやり方としては、ウェアレベリングユニット325は、メモリブロックがいつ消去されたかあるいは消去可能とみなされたかに応じて、それらの割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。このウェアレベリングテーブル340での優先順位付けによって、ウェアレベリングユニット325は、消去済みまたは消去可能メモリブロックに対するポインタに線形アクセス(linearly access)することが可能となる。これにより、メモリシステム300は、メモリブロック間でより均等に書き込み操作を割り振り、フラッシュメモリ領域310−1〜310−Nの寿命を延ばすことができる。
【００２８】
フラッシュメモリ制御部320が、フラッシュメモリ領域のうちの一つ（例えばフラッシュメモリ領域310−1）にデータを書き込むことを決定したとき、ウェアレベリングユニット325は、ウェアレベリングテーブル340内に格納されているポインタの中にフラッシュメモリ領域310−1と対応しているものがあるかどうか確認してもよい。ウェアレベリングテーブル340内に格納されているポインタの中にフラッシュメモリ領域310−1と対応しているものがあった場合、ウェアレベリングユニット325は、ウェアレベリングテーブル340にアクセスして、フラッシュメモリ領域310−1〜310−N内におけるデータの格納に利用できる消去済みまたは消去可能メモリブロックを、少なくとも一つ識別することができる。
【００２９】
ウェアレベリングテーブル340内に、フラッシュメモリ領域310−1に対応するポインタが格納されていなかった場合、ウェアレベリングユニット325は、ウェアレベリングテーブル340にフラッシュメモリ領域310−1に対するポインタを加える。例えば、ウェアレベリングユニット325は、ウェアレベリングテーブル340に、フラッシュメモリ領域310−1の冗長領域に格納されていたウェアレベリングテーブルのデータを格納してもよい。いくつかの実施形態では、フラッシュメモリ制御部320は、ウェアレベリングテーブル340にフラッシュメモリ領域310−1に対応するポインタを加える前に、ウェアレベリングテーブル340内に格納されているポインタを、それぞれが対応しているフラッシュメモリ領域310−2〜310−Nの冗長領域に格納してもよい
図４は、図３に示されているメモリシステムの動作の例を示すフローチャート400である。図４に関して、ブロック410では、フラッシュメモリ制御部320は、フラッシュメモリ領域310−1〜310−Nのうちの一つと関連している割り当てられていないメモリブロックを識別する。フラッシュメモリ制御部320は、そのフラッシュメモリ領域と関連しているウェアレベリングテーブルのデータに基づいて、それらの割り当てられていないメモリブロックを識別してもよい。
【００３０】
判定ブロック415では、フラッシュメモリ制御部320は、識別された、割り当てられていないメモリブロックの数がスレッショルド（閾値）を超えているかどうか判定する。このスレッショルドは、フラッシュメモリ制御部320内であらかじめ設定されているか、動的に決定される。このスレッショルドは、ウェアレベリングテーブル内のエントリーの数に対応するものであってもよいし、フラッシュメモリ制御部320に、論理−物理変換テーブル330が初期化されたかどうかを示すものであってもよい。
【００３１】
識別された割り当てられていないメモリブロックの数が、スレッショルドを超えている場合、ブロック420において、フラッシュメモリ制御部320は、論理−物理変換テーブル330を当該フラッシュメモリ領域310−1〜310−Nに関して初期化する。論理−物理変換テーブル330の初期化には、ウェアレベリングテーブル340にアクセスする前に、論理−物理変換テーブル330内のポインタに線形アクセス(linearly access)を行うことが含まれていてもよい。識別された割り当てられていないメモリブロックの数がスレッショルドを超えていない場合、実行プログラムはブロック430へ進む。
【００３２】
ブロック430では、フラッシュメモリ制御部320は、ウェアレベリングテーブル340に、当該フラッシュメモリ領域310−1〜310−N内の識別されたメモリブロックに対するポインタを加える。ブロック440では、フラッシュメモリ制御部320は、当該フラッシュメモリ領域310−1〜310−N内の一つまたは複数のメモリブロックにデータを書き込めという命令を受け取る。この命令は、データを格納するフラッシュメモリ領域310−1〜310−Nを指示するものであってもよい。
【００３３】
判定ブロック445では、フラッシュメモリ制御部320は、この書き込み命令が現在のフラッシュメモリ領域310−1〜310−Nと対応関係を持っているかどうかどうか判定する。書き込み命令が現在のフラッシュメモリ領域310−1〜310−Nと対応している場合、ブロック450において、フラッシュメモリ制御部320は、ウェアレベリングテーブル340内のポインタに対応するメモリブロックにデータを書き込む。
【００３４】
書き込み命令が現在のフラッシュメモリ領域310−1〜310−Nと対応していない場合、実行プログラムはブロック410へ戻り、そこで、フラッシュメモリ制御部320は、書き込み命令によって特定されたフラッシュメモリ領域310−1〜310−Nと関連している割り当てられていないメモリブロックを識別する。いくつかの実施形態では、ウェアレベリングテーブル340内のポインタは、ブロック410が再実行される前に、関連しているフラッシュメモリ領域310−1〜310−Nへ格納されてもよい。
【００３５】
当業者であればここで教示された概念が多くの他の有効な方法で独特な用途に適用できるということを理解するであろう。特に、当業者であれば、図示された実施形態が本件出願の開示を読むことで明らかとなるであろう多くの代替の実施形態のほんの一例であるということを理解するであろう。
【００３６】
上述した実施形態は、一例にすぎない。本明細書は、様々な個所で、“ある”、“ひとつの”、“別の”または“いくつかの”実施形態について言及することがあるが、これは必ずしもこれらの各言及が同一の実施形態に対するものであることを意味せず、また上述した特徴が一つの実施形態だけに適用されることを意味しない。
【図面の簡単な説明】
【００３７】
【図１】本発明の実施形態で利用できるメモリシステムをブロック図で示している。
【図２】図１に示されているメモリシステムのオペレーションの例を示しているフローチャートである。
【図３】本発明の実施形態で利用できる別のメモリシステムをブロック図で示している。
【図４】図３に示されているメモリシステムのオペレーションの例を示しているフローチャートである。
【図１】
2009507302.tif 000003
【図２】
2009507302.tif 000004
【図３】
2009507302.tif 000005
【図４】
2009507302.tif 000006
【国際調査報告】
2009507302.tif 000007