(57)【特許請求の範囲】
【請求項１】
データを記憶する方法において、
多数のアナログメモリセルがブロックに配列されたメモリにデータを記憶し、ブロックの第１サブセットは、第１の記憶密度で第１のデータを記憶するように定義され、そしてブロックの第２サブセットは、前記第１の記憶密度より高い第２の記憶密度で第２のデータを記憶するように定義され、
前記第１及び第２の各サブセットにおいて、１つ以上のブロックをスペアブロックとして働くように割り当て、欠陥となったブロックをスペアブロックと置き換え、
前記第２のサブセットにおけるスペアブロックの数が既定スレッシュホールドより少なくなったことを検出すると、前記第２のサブセットにおける少なくとも１つのブロックから前記第１のサブセットへデータをコピーし、前記少なくとも１つのブロックを前記第２のサブセットのスペアブロックに追加する、
ことを含む方法。
【請求項２】
前記データを記憶することは、メモリセル当たり第１の数のプログラミングレベルを使用して第１のサブセットにおけるメモリセルをプログラミングし、そしてメモリセル当たり前記第１の数より大きな第２の数のプログラミングレベルを使用して前記第２のサブセットにおけるメモリセルをプログラミングすることを含む、請求項１に記載の方法。
【請求項３】
前記第１の記憶密度は、メモリセル当たり１ビットを含む、請求項１に記載の方法。
【請求項４】
前記データをコピーしそして少なくとも１つのブロックを追加することは、前記第２のサブセットにおけるスペアブロックの数を既定上限以下に維持することを含む、請求項１に記載の方法。
【請求項５】
前記上限は、単一のスペアブロックを含む、請求項４に記載の方法。
【請求項６】
前記データを記憶することは、前記第１のサブセットにおけるスペアブロックをオーバープロビジョニングオーバーヘッドとして使用するブロックコンパクト化プロセスを前記第１のサブセットにおいて実行することを含む、請求項１に記載の方法。
【請求項７】
既定の選択基準に基づいて前記第２のサブセットにおいて少なくとも１つのブロックを選択することを含む、請求項１に記載の方法。
【請求項８】
前記選択基準は、前記少なくとも１つのブロックの有効データの量に依存する、請求項７に記載の方法。
【請求項９】
前記選択基準は、前記少なくとも１つのブロックの有効データが断片化された断片の数に依存する、請求項７に記載の方法。
【請求項１０】
前記選択基準は、前記少なくとも１つのブロックのデータが最も最近に無効化された時刻に依存する、請求項７に記載の方法。
【請求項１１】
多数のアナログメモリセルがブロックに配列されたメモリと通信するように構成されたインターフェイスであって、ブロックの第１サブセットは、第１の記憶密度で第１のデータを記憶するように定義され且つブロックの第２サブセットは、前記第１の記憶密度より高い第２の記憶密度で第２のデータを記憶するように定義されたインターフェイスと、
前記第１及び第２の各サブセットにおいて、１つ以上のブロックをスペアブロックとして働くように割り当て、欠陥となったブロックをスペアブロックと置き換え、且つ第２のサブセットにおけるスペアブロックの数が既定スレッシュホールドより少なくなったことを検出すると、第２のサブセットにおける少なくとも１つのブロックから第１のサブセットへデータをコピーし、少なくとも１つのブロックを第２のサブセットのスペアブロックに追加するように構成されたプロセッサと、
を備えたデータ記憶装置。
【請求項１２】
前記プロセッサは、メモリセル当たり第１の数のプログラミングレベルを使用して第１のサブセットにおけるメモリセルをプログラミングし、そしてメモリセル当たり前記第１の数より大きな第２の数のプログラミングレベルを使用して前記第２のサブセットにおけるメモリセルをプログラミングするように構成された、請求項１１に記載の装置。
【請求項１３】
前記第１の記憶密度は、メモリセル当たり１ビットを含む、請求項１１に記載の装置。
【請求項１４】
前記プロセッサは、前記第２のサブセットにおけるスペアブロックの数を既定上限以下に維持するように構成される、請求項１１に記載の装置。
【請求項１５】
前記上限は、単一のスペアブロックを含む、請求項１４に記載の装置。
【請求項１６】
前記プロセッサは、前記第１のサブセットにおけるスペアブロックをオーバープロビジョニングオーバーヘッドとして使用するブロックコンパクト化プロセスを前記第１のサブセットにおいて実行するように構成される、請求項１１に記載の装置。
【請求項１７】
前記プロセッサは、既定の選択基準に基づいて前記第２のサブセットにおいて少なくとも１つのブロックを選択するように構成される、請求項１１に記載の装置。
【請求項１８】
前記選択基準は、前記少なくとも１つのブロックの有効データの量に依存する、請求項１１に記載の装置。
【請求項１９】
前記選択基準は、前記少なくとも１つのブロックの有効データが断片化された断片の数に依存する、請求項１１に記載の装置。
【請求項２０】
前記選択基準は、前記少なくとも１つのブロックのデータが最も最近に無効化された時刻に依存する、請求項１１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、データ記憶に関するもので、より詳細には、メモリ装置のメモリブロック管理方法及びシステムに関する。
【背景技術】
【０００２】
フラッシュ装置のような幾つかのメモリ装置は、多数のメモリブロックを備えている。この分野ではメモリブロックを管理するための種々の技術が知られている。例えば、参考としてここに援用する米国特許第８，０４０，７４４号は、フラッシュＥＥＰＲＯＭシステムのような再プログラム可能な不揮発性メモリシステムにおけるスペアブロックの管理技術について述べている。１組の技術において、バイナリー区分及び多状態区分のような２つの区分にメモリが仕切られ、一方の区分のブロックの方が、エラーの発生傾向が高い場合には、エラー発生傾向の高い区画からエラー発生傾向の低い区画へスペアブロックを転送することができる。別の１組の技術において、エラー発生傾向の高い区画に入るブロックは、他方の区画のスペアブロックとして働くように転送される。
【０００３】
別の例として、参考としてここに援用する米国特許出願公告第２０１０／０１７４８４７号は、不揮発性メモリの一部分をメイン多レベルメモリアレイからキャッシュとして働くように仕切る技術について述べている。キャッシュメモリは、メインメモリに比して、メモリセル当たりの記憶容量が少なく、且つ書き込み単位の粒度が微細になるように構成される。キャッシュメモリは、容量増加需要に応答してメインメモリからブロックを割り当てることにより容量が動的に増加される。耐久カウントが平均より高いブロックが割り当てられるのが好ましい。キャッシュのインデックスのサイズを制限するためにデータの論理的アドレスがゾーンに仕切られる。
【発明の概要】
【０００４】
ここに述べる本発明の一実施形態は、データを記憶する方法を提供する。この方法は、多数のアナログメモリセルがブロックに配列されたメモリにデータを記憶することを含む。ブロックの第１サブセットは、第１の記憶密度で第１のデータを記憶するように定義され、そしてブロックの第２サブセットは、第１の記憶密度より高い第２の記憶密度で第２のデータを記憶するように定義される。第１及び第２の各サブセットにおいて、１つ以上のブロックがスペアブロックとして働くように割り当てられ、欠陥となったブロックがスペアブロックに置き換えられる。第２のサブセットにおけるスペアブロックの数が既定のスレッシュホールドより少なくなったことを検出すると、第２のサブセットにおける少なくとも１つのブロックから第１のサブセットへデータがコピーされ、少なくとも１つのブロックが第２のサブセットのスペアブロックへ追加される。
【０００５】
幾つかの実施形態において、データを記憶することは、メモリセル当たり第１の数のプログラミングレベルを使用して第１のサブセットにおけるメモリセルをプログラミングし、そしてメモリセル当たり第１の数より大きな第２の数のプログラミングレベルを使用して第２のサブセットにおけるメモリセルをプログラミングすることを含む。一実施形態において、第１の記憶密度は、メモリセル当たり１ビットを含む。ここに開示する実施形態では、データをコピーしそして少なくとも１つのブロックを追加することは、第２のサブセットにおけるスペアブロックの数を既定上限以下に維持することを含む。一実施形態では、上限は、単一のスペアブロックを含む。
【０００６】
幾つかの実施形態において、データを記憶することは、第１のサブセットにおけるスペアブロックをオーバープロビジョニング(over-provisioning)オーバーヘッドとして使用するブロックコンパクト化プロセスを第１のサブセットにおいて実行することを含む。一実施形態では、この方法は、既定の選択基準に基づいて第２のサブセットにおいて少なくとも１つのブロックを選択することを含む。１つの規範的な実施形態において、選択基準は、少なくとも１つのブロックにおける有効データの量に依存する。別の実施形態において、選択基準は、少なくとも１つのブロックにおける有効データが断片化された断片の数に依存する。更に別の実施形態において、選択基準は、少なくとも１つのブロックのデータが最も最近に(most recently)無効化された時間に依存する。
【０００７】
更に、本発明の一実施形態によれば、インターフェイス及びプロセッサを備えたデータ記憶装置が提供される。インターフェイスは、多数のアナログメモリセルがブロックに配列されたメモリと通信するように構成され、ブロックの第１サブセットは、第１の記憶密度で第１のデータを記憶するように定義され、そしてブロックの第２サブセットは、第１の記憶密度より高い第２の記憶密度で第２のデータを記憶するように定義される。プロセッサは、第１及び第２の各サブセットにおいて、１つ以上のブロックをスペアブロックとして働くように割り当て、欠陥となったブロックをスペアブロックに置き換え、そして第２のサブセットにおけるスペアブロックの数が既定のスレッシュホールドより少なくなったことを検出すると、第２のサブセットにおける少なくとも１つのブロックから第１のサブセットへデータをコピーし、少なくとも１つのブロックを第２のサブセットのスペアブロックへ追加する、ように構成される。
【０００８】
又、本発明の一実施形態によれば、複数のブロックを含むメモリにデータを記憶する方法が提供される。この方法は、有効データ及び無効データの両方を含む１つ以上のブロックを選択し、その選択されたブロックから有効データを他の記憶位置へコピーし、次いで、その選択されたブロックを消去するコンパクト化プロセスを実行することを含む。メモリの所与のエリア内において、その所与のエリアに記憶された有効データ間で最も以前に(least-recently)プログラムされた有効データを含むブロックが識別される。その識別されたブロックは、コンパクト化プロセスの候補として選択される。一実施形態において、ブロックの識別及び選択は、ブロックにおける有効データの量に関わりなく遂行される。
【０００９】
更に、本発明の一実施形態によれば、インターフェイス及びプロセッサを含むデータ記憶装置が提供される。インターフェイスは、多数のブロックを含むメモリと通信するように構成される。プロセッサは、有効データ及び無効データの両方を含む１つ以上のブロックを選択し、その選択されたブロックから有効データを他の記憶位置へコピーし、次いで、その選択されたブロックを消去するコンパクト化プロセスを実行するように構成されると共に、更に、メモリの所与のエリア内で、その所与のエリアに記憶された有効データの中で最も以前にプログラムされた有効データを含むブロックを識別し、そしてその識別されたブロックをコンパクト化プロセスの候補として選択するように構成される。
【００１０】
更に、多数のブロックを含むメモリであって、データキャッシングのための第１エリア及び長期データ記憶のための第２エリアに分割されたメモリにデータを記憶する方法が提供される。この方法は、有効データ及び無効データの両方を含む１つ以上のブロックを第１エリアにおいて選択し、その選択されたブロックから有効データをメモリ内の他の記憶位置へコピーし、次いで、その選択されたブロックを消去するコンパクト化プロセスを実行することを含む。候補ブロックのコンパクト化により受ける第２エリアでの書き込み動作の数に基づいてコンパクト化プロセスの候補として第１エリアにおいてブロックが選択される。
【００１１】
幾つかの実施形態において、物理的記憶位置を、少なくとも１つのブロックを各々含む各論理的マッピング単位に指定する論理的／物理的アドレスマッピングに基づき第２エリアにデータが記憶され、ブロックを選択することは、ブロックの有効データが属する論理的マッピング単位の数に基づいてブロックを選択することを含む。一実施形態において、ブロックを選択することは、第１エリアにおける少なくとも幾つかのブロックに、ブロックのコンパクト化により受ける第２エリアでの書き込み動作の各数に逆に関係した各スコアを指定し、そしてコンパクト化プロセスのためのブロックの選択において高いスコアを有するブロックに高いプライオリティを与えることを含む。
【００１２】
更に、本発明の一実施形態によれば、インターフェイス及びプロセッサを備えたデータ記憶装置が提供される。インターフェイスは、多数のブロックを含むメモリであって、データキャッシングのための第１エリア及び長期データ記憶のための第２エリアに分割されたメモリと通信するように構成される。プロセッサは、有効データ及び無効データの両方を含む１つ以上のブロックを第１エリアにおいて選択し、その選択されたブロックから有効データをメモリ内の他の記憶位置へコピーし、次いで、その選択されたブロックを消去するコンパクト化プロセスを実行するように構成されると共に、更に、候補ブロックのコンパクト化により受ける第２エリアでの書き込み動作の数に基づいてコンパクト化プロセスの候補として第１エリアにおいてブロックを選択するように構成される。
【００１３】
本発明は、添付図面を参照した実施形態の以下の詳細な説明より完全に理解されよう。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態によるメモリシステムを概略的に示すブロック図である。
【図２】本発明の実施形態によりメモリブロックを管理する方法を概略的に示すフローチャートである。
【図３】本発明の実施形態によりメモリブロックを管理する方法を概略的に示すフローチャートである。
【図４】本発明の実施形態によりメモリブロックを管理する方法を概略的に示すフローチャートである。
【発明を実施するための形態】
【００１５】
概略
あるメモリシステム、例えば、フラッシュベースのソリッドステートドライブ（ＳＳＤ）では、あるメモリエリアが、メモリの他部分に比して低い記憶密度でデータを保持するように構成される。例えば、低密度エリアは、メモリセル当たり単一ビットを保持するように構成され（単一レベルセル−ＳＬＣ−構成と称され）、そして高密度エリアは、メモリセル当たり多数のビットを保持するように構成される（多レベルセル−ＭＬＣ−構成と称される）。記憶密度の差は種々の仕方で具現化されるが、低密度及び高密度エリアは、ここでは、一般的に、各々、ＳＬＣ及びＭＬＣエリアと称される。
【００１６】
次いで、低い記憶密度の場合に、ＳＬＣエリアは、典型的に、ＭＬＣエリアに比して、プログラミング及び読み出しが迅速であり、且つ耐久性、保持性及び記憶信頼性が改善されていることを特徴とする。ＳＬＣエリアは、到来するデータを、ＭＬＣエリアに転送するまでキャッシュ記憶し、或いは繊細な又は頻繁に更新される（ホット）データを記憶するといった種々の目的で使用することができる。典型的に、ＳＬＣエリアは、ＭＬＣエリアより著しく小さい。
【００１７】
ここに述べる本発明の実施形態は、ＳＬＣ及びＭＬＣエリアに仕切られたメモリにおいてメモリを管理する改良された方法及びシステムを提供する。典型的に、メモリは、多数のアナログメモリセルを各々含む多数のメモリブロックより成る。幾つかの実施形態において、メモリコントローラは、１つ以上のメモリブロックを、ＳＬＣ及びＭＬＣの各エリアにおいてスペアブロックとして働くように割り当てる。スペアブロックは、例えば、欠陥となったブロック（不良ブロック）に置き換わるか、又は以下に詳細に述べるメモリのオーバープロビジョニングオーバーヘッドを増加するのに使用される。
【００１８】
ここに開示する幾つかの実施形態において、メモリコントローラは、ＭＬＣエリアには最少数のスペアブロックのみを、そしてＳＬＣエリアにはできるだけ多くのスペアブロックを割り当てる。ＳＬＣエリアは、ＭＬＣエリアより著しく小さいので、各スペアブロックは、ＭＬＣエリアよりＳＬＣエリアに非常に大きな割合のスペアメモリを追加する。それ故、ＳＬＣエリアに付加的なスペアブロックを割り当てることにより得られる性能利得は、通常、ＭＬＣエリアに少数のスペアブロックを割り当てることにより生じる性能低下より著しく大きい。
【００１９】
ＭＬＣエリアに少数のスペアブロックを維持することは、リスクがあり、即ちＭＬＣメモリブロックは、使用中に欠陥を生じることがあり、そしてＭＬＣエリアは、それらに置き換わるためにスペアブロックがなくなることがある。従って、ここに開示する幾つかの実施形態では、メモリコントローラは、ＭＬＣエリアのスペアブロックの数が、ある最小スレッシュホールドより低下しないことを検証する。ＭＬＣエリアのスペアブロックの数が少な過ぎることを検出すると、メモリコントローラは、ＭＬＣエリアの１つ以上のブロックからＳＬＣエリアへデータをコピーし、そしてＭＬＣにおいて解放されたブロックをスペアブロックとして使用する。
【００２０】
上述した技術は、メモリコントローラが、多数のスペアブロックをＳＬＣエリアへ割り当て、従って、ＳＬＣエリアを、高いオーバープロビジョニング比率のために高いスループット及び耐久性で動作することができるようにする。同時に、ＭＬＣエリアは、充分な数のスペアブロックが連続的に与えられる。このトレードオフは、メモリシステムの全体的性能を改善する上で助けとなる。例えば、ＳＬＣエリアが、データのキャッシュ記憶に使用されるか、又はＭＬＣエリアに関連した管理情報の記憶に使用されるとき、この情報を記憶すると、ＭＬＣ性能も効率的に改善される。
【００２１】
ここに開示する他の実施形態は、ＳＬＣエリアにおいてメモリコントローラにより遂行されるブロックコンパクト化プロセス（「ガーベージコレクション」とも称される）を取り扱う。これらの実施形態は、コンパクト化の候補ブロックを選択するための改善された基準を与える。幾つかの実施形態において、メモリコントローラは、コンパクト化の候補として、最も古いブロック、即ち最も以前に書かれたデータを収容するブロックを選択する。この基準は、例えば、メモリコントローラが各ブロック内の有効データの量を評価することを要求しないので、迅速で且つ単純な管理を可能にする。
【００２２】
別の実施形態では、メモリコントローラは、コンパクト化が招くＭＬＣエリアにおける書き込み動作の数を考慮することによりコンパクト化のための候補ＳＬＣブロックを選択する。コンパクト化がＭＬＣエリアにおいて少数の書き込み動作を招くところのＳＬＣブロックは、典型的に、好ましいものである。規範的な実施形態では、メモリコントローラは、例えば、ブロック又はブロックのグループのようなあるサイズのマッピング単位にわたって定義された論理的／物理的アドレスマッピングを使用してメモリにデータを記憶する。これらの実施形態では、メモリコントローラは、ブロック内の有効データの量だけではなく、その有効データが属するマッピング単位の数も考慮することで、コンパクト化の候補ブロックを選択する。典型的に、データが少数のマッピング単位に属するブロックに対してコンパクト化を遂行することが好ましい。というのは、コンパクト化は、ＭＬＣエリアへ僅かな量のデータをコピーすることを伴うからである。
【００２３】
システムの説明
図１は、本発明の一実施形態によるメモリシステム２０を概略的に示すブロック図である。このシステム２０は、種々のホストシステム及び装置、例えば、コンピューティング装置、セルラー電話又は他の通信ターミナル、除去可能なメモリモジュール（時々「ＵＳＢフラッシュ装置」とも称される）、ソリッドステートディスク（ＳＳＤ）、デジタルカメラ、音楽及び他のメディアプレーヤ、及び／又はデータが記憶され検索される他のシステム又は装置に使用される。
【００２４】
システム２０は、メモリセルアレイ２８にデータを記憶するメモリ装置２４を備えている。メモリアレイは、多数のメモリブロック３０を備えている。各メモリブロック３０は、多数のアナログメモリセルを含む。本特許出願及び請求項の文脈において、「アナログメモリセル」という語は、電圧又は電荷のような物理的パラメータの連続的アナログ値を保持するメモリセルを記述するのに使用される。アレイ２８は、例えば、ＮＡＮＤ、ＮＯＲ、及び電荷トラップフラッシュ（ＣＴＦ）フラッシュセル、相変化ＲＡＭ（ＰＲＡＭ、相変化メモリＰＣＭとも称される）、ニトライドリードオンリメモリ（ＮＲＯＭ）、強誘電性ＲＡＭ（ＦＲＡＭ（登録商標））、磁気ＲＡＭ（ＭＲＡＭ）及び／又はダイナミックＲＡＭ（ＤＲＡＭ）セルのような任意の種類のアナログメモリセルを含む。
【００２５】
セルに蓄積される電荷レベル、及び／又はセルに書き込まれ及びセルから読み出されるアナログ電圧又は電流は、ここでは、総体的に、アナログ値、アナログ記憶値又は記憶値と称される。記憶値は、例えば、スレッシュホールド電圧、又は他の適当な種類の記憶値を含む。システム２０は、プログラミングレベルとも称される各プログラミング状態をとるようにセルをプログラミングすることによりアナログメモリセルにデータを記憶する。プログラミング状態は、考えられる状態の限定セットから選択され、そして各プログラミング状態は、ある公称記憶値に対応する。例えば、３ビット／セルＭＬＣは、８つの考えられる公称記憶値の１つをセルに書き込むことにより、８つの考えられるプログラミング状態の１つをとるようにプログラムされる。
【００２６】
メモリ装置２４は、メモリ装置に記憶するためのデータをアナログ記憶値へ変換しそしてそれらをメモリセルに書き込む読み取り／書き込み（Ｒ／Ｗ）ユニット３６を備えている。別の実施形態では、Ｒ／Ｗユニットは、変換を行わないが、電圧サンプルが与えられ、即ちセルに記憶するための記憶値が与えられる。アレイ２８からデータを読み出すときに、Ｒ／Ｗユニット３６は、メモリセルの記憶値を、１ビット以上の解像度を有するデジタルサンプルへ変換する。データは、典型的に、ページと称されるグループでメモリセルへ書き込まれ及びメモリセルから読み取られる。幾つかの実施形態において、Ｒ／Ｗユニットは、１つ以上の負の消去パルスをセルに印加することによりメモリセルのグループを消去することができる。消去は、典型的に、全メモリブロックで遂行される。
【００２７】
メモリ装置２４へのデータの記憶及びメモリ装置２４からのデータの検索は、メモリコントローラ４０により遂行される。メモリコントローラは、メモリ装置２４と通信するためのインターフェイス４４と、種々のメモリ管理機能を実行するプロセッサ４８とを備えている。特に、プロセッサ４８は、ここに述べるメモリブロック構成を実行する。
【００２８】
メモリコントローラ４０は、メモリ装置に記憶するためのデータを受け入れ、そしてメモリ装置から検索されたデータを出力するためにホスト５２と通信する。メモリコントローラ４０、特に、プロセッサ４８は、ハードウェアで具現化される。或いは又、メモリコントローラ４０は、適当なソフトウェア、又はハードウェア及びソフトウェアエレメントの組み合わせを実行するマイクロプロセッサを備えてもよい。
【００２９】
図１の構成は、概念を明瞭にするために示された規範的なシステム構成に過ぎない。他の適当なメモリシステム構成が使用されてもよい。本発明の原理を理解するために必要な要素、例えば、種々のインターフェイス、アドレス回路、タイミング・シーケンス回路、及びデバッグ回路は、図示明瞭化のために省略されている。
【００３０】
図１の例は、単一のメモリ装置２４しか示していないが、システム２０は、メモリコントローラ４０によってコントロールされる多数のメモリ装置を備えてもよい。図１に示す規範的なシステム構成では、メモリ装置２４及びメモリコントローラ４０は、２つの個別の集積回路（ＩＣ）として具現化されている。しかしながら、別の実施形態では、メモリ装置及びメモリコントローラは、単一のマルチチップパッケージ（ＭＣＰ）又はシステムオンチップ（ＳｏＣ）において個別の半導体ダイに一体化されて、内部バスで相互接続されてもよい。更に、それとは別に、メモリアレイが配置された同じダイにメモリコントローラ回路の若干又は全部が存在してもよい。更に、それとは別に、メモリコントローラ４０の若干又は全部の機能がソフトウェアで具現化されて、ホストシステムのプロセッサ又は他の要素によって実行されてもよい。幾つかの実施形態において、ホスト４４及びメモリコントローラ４０は、同じダイ上に製造されてもよいし、又は同じ装置パッケージ内の個別のダイ上に製造されてもよい。
【００３１】
幾つかの実施形態において、メモリコントローラ４０は、ここに述べる機能を実行するようにソフトウェアでプログラムされた汎用プロセッサを備えている。ソフトウェアは、例えば、ネットワークを経て電子的形態でプロセッサにダウンロードされてもよいし、或いはそれとは別に又はそれに加えて、磁気、光学又は電子メモリのような非一時的な有形媒体上に設けられ及び／又は記憶されてもよい。
【００３２】
アレイ２８の規範的構成において、各ブロック３０のメモリセルは、多数の行及び列に配置され、そして各メモリセルは、フローティングゲートトランジスタを含む。各行のトランジスタのゲートは、ワード線により接続され、そして各列のトランジスタのソースは、ビット線により接続される。メモリアレイは、典型的に、多数のページに分割され、即ち同時にプログラム及び読み取りされるメモリセルのグループに分割される。ページは、時々、セクタに細分化される。幾つかの実施形態において、各ページは、アレイの全行よりなる。別の実施形態において、各行（ワード線）は、２つ以上のページに分割される。例えば、ある装置では、各行は、２つのページに分割され、一方のページは、奇数順のセルであり、そして他方のページは、偶数順のセルである。
【００３３】
典型的に、メモリコントローラ４０は、データをページ単位でプログラムするが、全メモリブロック３０を消去する。必ずしもそうでないが、典型的に、メモリブロックは、１０6程度のメモリセルであり、一方、ページは、１０3−１０4程度のメモリセルである。
【００３４】
スペアブロックを有するＳＬＣ及びＭＬＣエリアへのメモリ区画化
幾つかの実施形態において、メモリブロック３０は、単一レベルセル（ＳＬＣ）エリア３４及びマルチレベルセル（ＭＬＣ）エリア３６へ区画化される。エリア３４及び３６は、互いに記憶密度が異なり、即ちデータを記憶するのに使用されるメモリセル当たりのビット数が異なり、ＭＬＣエリア３６の記憶密度は、ＳＬＣエリア３４より高い。幾つかの実施形態において、ＳＬＣエリア３４のメモリセルは、メモリセル当たり単一ビットを保持し（例えば、２つの考えられるプログラミングレベルへプログラムすることにより）、一方、ＭＬＣエリア３６のメモリセルは、セル当たり多数のビットを保持する（例えば、３つ以上の考えられるプログラミングレベルへプログラムすることにより）。或いは又、エリア３４のメモリセルは、エリア３６のメモリセルより低い、他の適当な記憶密度を有してもよい。
【００３５】
ここに述べる実施形態は、１ビット／セルでデータを記憶するＳＬＣエリア及び１ビット／セルより高い密度でデータを記憶するＭＬＣエリアを参照しているが、ここに開示する技術は、あるメモリエリアに別のメモリエリアより高い密度でデータを記憶する他の適当な技術にも使用できる。異なる数のプログラミングレベルを使用するのとは別に、他の適当な技術を使用してエリア３４及び３６に異なる記憶密度を具現化することができる。
【００３６】
記憶密度が低いために、ＳＬＣエリア３４は、典型的に、迅速なプログラミング、長期の耐久性及び保持性、そして時々、高い記憶信頼性を特徴とする。種々の実施形態では、ＳＬＣエリアは、システム２０において異なる機能を果たす。例えば、ＳＬＣエリア３４は、ホストから受け取ったデータを、そのデータがＭＬＣエリア３６の長期行先アドレスへコピーされるまで、一時的にキャッシュ記憶するのに使用される。この機能は、時々、「バイナリーキャッシュ」又は「ＳＬＣキャッシュ」と称される。それに加えて又はそれとは別に、ＳＬＣエリア３４は、マッピングテーブルのような非常に繊細な情報を記憶するのに使用される。更に別の実施例では、ＳＬＣエリア３４は、頻繁に更新されるデータ（「ホット」データ）を記憶するのに使用される。
【００３７】
典型的に、ＳＬＣエリア３４のサイズは、ＭＬＣエリア３６のサイズより相当に小さい。１つの規範的実施形態では、ＳＬＣエリアは、５０個のブロック３４より成り、一方、ＭＬＣエリア３６は、２０００個のブロックより成る。或いは又、ＳＬＣのサイズとＭＬＣのサイズとの間の他の適当な割合を使用することができる。ある実施形態では、ＳＬＣエリアのメモリセル及びメモリブロックは、ＭＬＣエリアとは構造が異なる。他の実施形態では、ＳＬＣエリアのメモリセル及びメモリブロックは、ＭＬＣエリアと同様又は同一である。
【００３８】
幾つかの実施形態において、ＳＬＣ及びＭＬＣの各エリアは、スペアブロックとして働くある数のブロック３４を含む。スペアブロックは、種々の目的で使用され、例えば、欠陥となったブロック（不良ブロック）に置き換わるために使用されたり、以下に述べるコンパクト化又は「ガーベージコレクション」プロセスに使用されるオーバープロビジョニングに使用されたりする。
【００３９】
装置２４のようなアナログメモリでは、データは、ページ単位でメモリに書き込まれるが、消去は、全メモリブロックに適用される。データは、消去されたページのみに書き込まれ、それ故、その場所でデータを更新することはできない。データを更新することは、更新されたデータを別の物理的な記憶位置に書き込み、データの以前のバージョンを無効とマークし、そして論理的アドレスを物理的記憶位置へ動的にマップすることを含む。
【００４０】
以上の特性のために、メモリのメモリブロックは、無効データページを徐々に蓄積し、その更新されたバージョンは、他の物理的記憶位置に記憶される。無効ページの数を減少するために、メモリコントローラは、コンパクト化又は「ガーベージコレクション」プロセスを実行する。このプロセスは、コンパクト化のために１つ以上のメモリブロックを選択し、その選択されたブロックから他の記憶位置へ有効データをコピーし、次いで、その選択されたメモリブロックを消去する。次いで、消去されたブロックは、その後のプログラミングのための準備ができる。
【００４１】
コンパクト化プロセスの効率（例えば、ブロックのコンパクト化ごとに遂行されるコピー動作の平均数で定量化される）は、メモリのオーバープロビジョニング比率（メモリの真の物理的容量と、データを記憶する外部エンティティに与えられる指定容量との比率）の関数として改善される。
【００４２】
典型的に、ブロック３０内に有効データ（ホール）を保持しないメモリエリアの総計サイズは、オーバープロビジョニングオーバーヘッドと称される。オーバープロビジョニングオーバーヘッドは、指定のメモリ容量の小部分として定義されたオーバープロビジョニング比率として指定される。例えば、メモリが５％のオーバープロビジョニング比率を使用し、そしてメモリが論理的にいっぱいであるときには、各メモリブロックは、平均で、９５％しかプログラムされない。
【００４３】
メモリがオーバープロビジョニングされると、ガーベージコレクションをより効率的に遂行することができる。換言すれば、ブロックコンパクト化当たりのコピー動作の数を減少することができる。ガーベージコレクションプロセスの効率は、メモリに使用されるオーバープロビジョニング比率の関数として増加する。オーバープロビジョニング比率が高くなると、メモリセルの消耗(wearing)が減少し、プログラミングスループットが高くなる。セルの消耗及び記憶スループットに対するオーバープロビジョニングオーバーヘッドの作用は、メモリがいっぱいであるか又はほぼいっぱいであるときに特に強くなる。
【００４４】
典型的に、プロセッサ４８は、１つ以上のブロックをＳＬＣエリア３４のスペアブロックとして働くように割り当て、そして１つ以上のブロックをＭＬＣエリア３６のスペアブロックとして働くように割り当てる。各スペアブロックは、その各エリア（ＳＬＣ又はＭＬＣ）内で、例えば、使用中に欠陥となるブロックに置き換わるための候補として、又はオーバープロビジョニング比率を高め、ひいては、コンパクト化プロセスの効率を改善するために使用される。
【００４５】
ＳＬＣ及びＭＬＣエリアにおけるスペアブロックの効率的な割り当て
メモリコントローラ４０は、望ましい数のブロック３０を、ＳＬＣエリア３４又はＭＬＣエリア３６のスペアブロックとして働くように割り当てる。更に、メモリコントローラは、あるエリアにおけるスペアブロックの数を、他のエリアを犠牲にして、増加するために、あるエリアから別のエリアへデータをコピーする。
【００４６】
本発明の幾つかの実施形態において、メモリコントローラ４０は、ＭＬＣエリアに最少数のスペアブロックしか維持しないとの犠牲において、ＳＬＣエリアに非常に多数のスペアブロックを割り当てる。この種の割り当ては、ＳＬＣエリアの性能を著しく改善する。上述したように、ＳＬＣエリアは、典型的に、ＭＬＣエリアより著しく小さい。それ故、ＳＬＣエリアに付加的なスペアブロックを割り当てることにより達成される性能利得は、通常は、ＭＬＣエリアからそれらのスペアブロックを除去することにより生じる性能低下より非常に大きい。
【００４７】
例えば、指定サイズの２０００個のブロック及び２０個の付加的なスペアブロックを有する２ビット／セルのＭＬＣエリアと、５０個のブロックを有する１ビット／セルのＳＬＣエリアとに仕切られたメモリについて考える。比較のため、２０個のスペアブロックのうちの１９個がＳＬＣエリアへ再割り当てされるシナリオを考える。これは、ＭＬＣエリアが１つのスペアブロックしかもたず、一方、ＳＬＣエリアが５０個ではなくて６９個のスペアブロックを有することを意味する。この再割り当ては、ＳＬＣエリアにおいてスペアブロックの数が約４０％増加したこと、即ち著しい性能改善を与える増加を意味する。ＭＬＣエリアにおける単一のスペアブロックは、依然、メモリコントローラがブロックコンパクト化を実行できるようにするが、おそらく効率は悪いものである。
【００４８】
実際に、ＭＬＣエリア３６における幾つかのメモリブロックは、時間と共に欠陥（不良ブロック）となる。メモリコントローラ４０は、メモリブロックが欠陥であることを検出すると、そのブロックをスペアブロックに置き換える。ＭＬＣエリアに最少数のスペアメモリブロックしか割り当てられないときには（例えば、前記例のように単一のスペアブロック）、ＭＬＣエリアにおけるスペアブロックがある時点で全て使用されることになる。そのようなケースでは、ユーザデータを記憶するのに利用できるメモリスペースが指定サイズより小さくなる。
【００４９】
従って、幾つかの実施形態では、メモリコントローラのプロセッサ４８は、ＭＬＣエリアにおけるスペアブロックの数がある最小値より低下したことを検出すると、ＭＬＣエリアにおける付加的なスペアブロックを解放するためにＭＬＣエリア３６からＳＬＣエリア３４へデータをコピーする。幾つかの実施形態において、プロセッサ４８は、ＭＬＣエリアにおけるスペアブロックの数を、ある上限以下に維持する。これらのメカニズムは、ＭＬＣエリアに充分な数のスペアブロックを適応的に維持すると同時に、考えられる最大数のスペアブロックをＳＬＣエリアに割り当てる。
【００５０】
プロセッサ４８は、例えば、消去し損なったブロック、又はデータを正しくプログラムし損なったブロックを検出することにより、適当な技術を使用してＭＬＣエリアにおける欠陥ブロックを検出する。
【００５１】
図２は、本発明の一実施形態によりメモリブロックを管理する方法を概略的に示すフローチャートである。この方法は、初期割り当てステップ６０において、メモリコントローラ４０のプロセッサ４８がＳＬＣ及びＭＬＣエリアにスペアメモリブロックを割り当てることで始まる。プロセッサ４８は、１つ以上のブロックをＳＬＣエリア３４におけるスペアブロックとして働くように割り当てると共に、１つ以上のブロックをＭＬＣエリア３６におけるスペアブロックとして働くように割り当てる。上述したように、プロセッサ４８は、典型的に、ＳＬＣエリアにできるだけ多くのスペアブロックを割り当て、そしてＭＬＣエリアに最少数のスペアブロックだけを割り当てる。
【００５２】
プロセッサ４８は、記憶ステップ６４において、ＳＬＣ及びＭＬＣエリアにデータを記憶する。この特定の記憶プロセスは、例えば、ＳＬＣエリアの機能（例えば、バイナリーキャッシュ、或いは繊細な又は頻繁に更新されるデータのための記憶スペース）に基づいてある実施形態から別の実施形態へと異なってもよい。典型的に、プロセッサ４８は、各エリアに割り当てられるスペアブロックを使用してＳＬＣ及びＭＬＣの各エリア内でガーベージコレクション及び不良ブロック置き換えを別々に実行する。
【００５３】
動作中に、プロセッサ４８は、不良ブロックチェックステップ６８において、ＭＬＣエリア３６に新たな欠陥ブロックが存在するかどうかチェックする。新たな不良ブロックが検出されない場合には、この方法は、前記ステップ６４へループバックし、システム２０がデータの記憶を続ける。
【００５４】
新たな欠陥ブロックがＭＬＣエリアで検出された場合には、プロセッサ４８は、スペアブロックチェックステップ７２において、ＭＬＣエリアにスペアブロックが得られるかどうかチェックする。ＭＬＣエリアにスペアブロックが得られる場合には、プロセッサ４８は、置き換えステップ７６において、欠陥ブロックをスペアブロックに置き換える。この方法は、次いで、前記ステップ６４へループバックする。
【００５５】
他方、ＭＬＣエリアにスペアブロックがそれ以上ない場合には、プロセッサ４８は、スペア発生ステップ８０において、ＭＬＣエリア３６の１つ以上のブロックを、付加的なスペアブロックとして働くように解放する。一実施形態では、プロセッサ４８は、ＭＬＣエリア３６の１つ以上のブロックからＳＬＣエリア３４へデータをコピーし、次いで、ＭＬＣブロックを消去してそれらをスペアブロックとして働くよう指定する。それらのＭＬＣブロックにそれアで存在したデータは、今や、ＳＬＣエリアに記憶され、必要に応じてこの別の位置から検索される。ＳＬＣエリアの記憶密度が低いために、所与のＭＬＣブロックからのデータは、典型的に、２つ以上のＳＬＣブロックへコピーされる。次いで、プロセッサ４８は、ステップ７６において、欠陥ブロックを、新たに指定されたスペアブロックに置き換え、そしてこの方法は、前記ステップ６４へループバックする。
【００５６】
図２の方法は、概念を明確にするために選択された規範的な方法に過ぎない。別の実施形態では、他の適当な方法を使用することもできる。例えば、図２の方法において、ＭＬＣエリアにおける利用可能なスペアブロックの数がゼロまで減少した（即ち、利用可能なスペアブロックがそれ以上ない）ときにＭＬＣエリアに新たなスペアブロックが生成される。別の実施形態では、ＭＬＣエリアにおけるスペアブロックの数が他の適当なスレッシュホールドより下がったときにプロセスが開始される。前記プロセスは、ＭＬＣエリアに適当な数の新たなスペアブロックを生成するのに使用される。
【００５７】
別の例として、図２の方法では、ＭＬＣエリアにおいて不良ブロックを検出するのに応答して新たなスペアＭＬＣブロックが生成される。別の実施形態において、必要に応じて、他の事象に応答して又は周期的に、新たなスペアブロックが生成される。例えば、プロセッサ４８は、ＭＬＣエリアにおけるスペアブロックの数が許容最小数より低いかどうかチェックするバックグランドタスクを実行する。ＭＬＣエリアにおけるスペアブロックの数が少な過ぎる場合には、プロセッサ４８は、データをＳＬＣエリアへコピーすることにより１つ以上の新たなスペアＭＬＣブロックを発生する。
【００５８】
プロセッサ４８は、どのＭＬＣブロックを解放しそしてスペアブロックへ変換すべきか選択するために種々の方法及び基準を使用する。規範的な実施形態では、プロセッサ４８は、最少量の有効データを有するブロックを選択する−典型的に、ブロックを解放するのに必要なコピー動作の数を減少する基準。別の実施形態では、プロセッサ４８は、有効データが最小数の断片に細分化されるブロックを選択する−典型的に、ＳＬＣエリアの仮想的／物理的アドレスマッピングのサイズを減少する基準。更に別の実施形態では、プロセッサ４８は、データが最も最近無効とされたブロックを選択する（例えば、ＭＬＣエリアにおいてコンパクト化中にデータをコピーする結果として）。更に、それとは別に、プロセッサ４８は、他の適当な基準を使用して、スペアブロックへ変換するためのＭＬＣブロックを選択する。
【００５９】
ＳＬＣエリアにおいてコンパクト化のためのブロックを選択する基準
幾つかの実施形態において、メモリコントローラ４０のプロセッサ４８は、ＳＬＣエリア３４においてコンパクト化（ガーベージコレクション）プロセスを実行する。コンパクト化プロセスは、エリア３４において有効データ及び無効データの両方を含む１つ以上のブロック３０を選択し、有効データを他の記憶位置（ＳＬＣエリア３４及び／又はＭＬＣエリア３６における）へコピーし、次いで、それらのブロックを消去する。
【００６０】
ブロックコンパクト化動作は、ある量のデータをある位置から別の位置へコピーすることを含む。コンパクト化のための候補ブロックを選択するとき、典型的に、コンパクト化に僅かな量のデータのコピーしか含まれないブロックを選択するのが好ましい。この種の選択は、メモリスループット及び耐久性を高める上で役立つ。別の事柄は、候補選択プロセスに含まれる管理オーバーヘッドである。
【００６１】
本発明の幾つかの実施形態において、プロセッサ４８は、コンパクト化のための候補として、ＳＬＣエリアにおける（１つ以上の）最も古いブロックを選択する。換言すれば、プロセッサ４８は、ＳＬＣエリアにおいて最も以前にプログラムされたデータを含む１つ以上のブロックを選択する。「最も以前にプログラムされたデータ」という語は、書き込み動作がホストから受け取られた新たなデータの結果であるか、又は内部コピー（例えば、コンパクト化）動作の結果であるかに関わりなく、データが書かれた時刻を指す。
【００６２】
コンパクト化のために最も古いブロックを選択することで、メモリコントローラは、近い将来更新されないであろうブロックを高い確率でコンパクト化することができる。更に、この選択基準は、ブロック内の有効データの量に依存しないので、迅速且つ単純な仕方で具現化することができる。この基準を使用するために、メモリコントローラは、ブロック当たりの有効又は無効データの量を評価又は追跡する必要がない。
【００６３】
図３は、本発明の一実施形態によりメモリブロックを管理するための方法を概略的に示すフローチャートである。この図の左側は、記憶プロセスを示し、この図の右側は、ブロック選択・コンパクト化プロセスを示す。２つのプロセスは、典型的に、メモリコントローラにより並列に実行される。
【００６４】
記憶プロセスは、入力ステップ９０において、メモリコントローラ４０のプロセッサ４８がホスト５２から記憶のためのデータを受け入れることで始まる。プロセッサ４８は、キャッシュステップ９４において、ＳＬＣエリア３４にデータをキャッシュ記憶する。その後の時点で、メモリコントローラは、転送ステップ９８において、長期記憶のためにＳＬＣエリアからＭＬＣエリア３６にデータを転送する。
【００６５】
選択・コンパクト化プロセスは、最も古いブロックの識別ステップ１００において、プロセッサ４８がＳＬＣエリアの最も古いブロック（１つ又は複数）を識別することで始まる。最も古いブロックは、ＳＬＣエリアにおいて最も以前に書かれたデータを含むブロックとして定義される。次いで、プロセッサ４８は、コンパクト化ステップ１０４において、識別されたブロック（１つ又は複数）をコンパクト化する。コンパクト化は、識別された最も古いブロック（１つ又は複数）からの有効データをＳＬＣエリア又はＭＬＣエリアの新たな位置へコピーすることを含む。次いで、最も古いブロックが消去され、新たなプログラミングの準備ができる。
【００６６】
別の実施形態において、メモリコントローラ４０は、論理的／物理的アドレスマッピング構成を使用してメモリ装置２４にデータを記憶する。これら実施形態において、データは、論理的アドレスを使用してホスト５２によりアドレスされ、メモリコントローラは、論理的アドレスを装置２４の物理的記憶位置へ変換する。ある物理的な記憶位置から別の位置へデータを移動するときに（例えば、コンパクト化中に）、メモリコントローラは、移動されたデータの論理的アドレスへマップされた物理的記憶位置を更新する。
【００６７】
メモリコントローラの論理的／物理的アドレスマッピング構成は、典型的に、あるサイズのマッピング単位にわたって定義される。換言すれば、マッピング単位は、マッピングが定義されて遂行される基本的な粒度である。マッピング単位のサイズは、例えば、単一ブロック又は２つ以上のブロックである。
【００６８】
規範的な実施形態において、ＳＬＣエリアは、データキャッシングに使用され、ＭＬＣエリアは、長期データ記憶に使用され、そしてプロセッサ４８は、次のポリシーに従ってＳＬＣエリアにおいてコンパクト化を遂行するブロックベースのフラッシュ変換レイヤ（ＦＴＬ）を実行する。
■コンパクト化のためにＳＬＣブロックを選択する。
■選択されたＳＬＣブロックからのデータの少なくとも幾つかを、ＭＬＣエリアにおけるそのデータのターゲット論理的アドレスへコピーする。この動作は、ＳＬＣエリアの他のブロックからの付加的なデータをＭＬＣエリアへコピーすることを含む。というのは、選択されたＭＬＣブロックのデータが、ＭＬＣエリアへ総括的にコピーされるべきマッピング単位（この例では論理的ＭＬＣブロック）に属するからである。
■選択されたブロックの残りのデータを、ＳＬＣエリアの別の位置（例えば、オープンブロック）へコピーする。
【００６９】
幾つかの実施形態において、メモリコントローラ４０のプロセッサ４８は、コンパクト化が被るＭＬＣエリア内の書き込み動作の数を考慮することによりコンパクト化のための候補ブロックをＳＬＣエリア３４において選択する。そのような書き込み動作は、例えば、選択されたブロックからＭＬＣエリアへデータをコピーするとき、及び選択されたＳＬＣブロックからコピーされたデータと同じマッピング単位に属する他のＳＬＣブロックからのデータをＭＬＣエリアへコピーするときに行われる。プロセッサ４８は、典型的に、コンパクト化によりＭＬＣエリアに少数の（例えば、考えられる最小数の）書き込み動作を生じさせるＳＬＣブロックを選択する。ＭＬＣ書き込み動作は、レイテンシーに関して有力であるために、この種の選択基準は、ＳＬＣコンパクト化プロセスの効率を高める。
【００７０】
幾つかの実施形態において、プロセッサ４８は、ＳＬＣブロックのコンパクト化が被るＭＬＣ書き込み動作の数と逆の関係にある各スコアをＳＬＣエリアの各ブロックに指定する。これらの実施形態では、プロセッサ４８は、コンパクト化のためのＳＬＣブロックを選択する上で高いスコアをもつブロックに優先権を与える。
【００７１】
プロセッサ４８は、所与のＳＬＣブロックをコンパクト化することで生じるＭＬＣエリアにおける書き込み動作の数を推定するための適当な方法を使用する。幾つかの実施形態において、この推定は、ＳＬＣブロックのデータが属するマッピング単位の数を考慮するものである。従って、幾つかの実施形態において、プロセッサ４８は、ブロックにおける有効データの量だけでなく、その有効データが属するマッピング単位の数も考慮することにより、コンパクト化のための候補ブロックをＳＬＣエリア３４において選択する。例えば、同じ量の有効データを含む２つのブロックを考える。しかしながら、１つのブロックでは、全ての有効データが単一のマッピング単位に属し、一方、他のブロックでは、有効データが多数のマッピング単位に属する。
【００７２】
コンパクト化を遂行するときには、有効データが、コンパクト化されるブロックから別の記憶位置へマッピング単位粒度でコピーされる。それ故、有効データが多数のマッピング単位に属する場合には、大量のデータをコピーしなければならない。このため、典型的に、有効データが少数のマッピング単位に属するブロックをコンパクト化することが好ましい。
【００７３】
幾つかの実施形態において、プロセッサ４８は、ブロックの有効データが属するマッピング単位の数を考慮する基準を使用してコンパクト化のための候補ブロックをＳＬＣエリア３４において選択する。有効データが少数のマッピング単位に属するブロックは、典型的に、コンパクト化のために好ましく、そしてその逆のことも言える。有効データの量が少ないブロックは、典型的に、コンパクト化のために好ましく、そしてその逆のことも言える。幾つかの実施形態において、プロセッサ４８は、ブロックにおける有効データの量に逆に関係し且つブロックにおける有効データが属するマッピング単位の数にも逆に関係する各スコアをＳＬＣエリアの各ブロックに指定する。これらの実施形態では、プロセッサ４８は、コンパクト化のためのブロックを選択する上で高いスコアのブロックに優先権を与える。
【００７４】
図４は、本発明の一実施形態によりメモリブロックを管理するための方法を概略的に示すフローチャートである。この図の左側は、記憶プロセスを示し、この図の右側は、ブロック選択・コンパクト化プロセスを示す。２つのプロセスは、典型的に、メモリコントローラ４０により並列に実行される。
【００７５】
記憶プロセスは、データ入力ステップ１１０において、メモリコントローラ４０のプロセッサ４８がホスト５２から記憶のためのデータを受け入れることで始まる。データは、ある論理的アドレスに記憶するためにホストによりアドレスされる。プロセッサ４８は、データキャッシングステップ１１４において、ＳＬＣエリア３４にデータをキャッシュ記憶する。プロセッサ４８は、アドレス変換ステップ１１８において、論理的／物理的アドレスマッピングに従い、ＭＬＣエリア３６におけるデータの物理的記憶位置を決定する。次いで、プロセッサ４８は、データ転送ステップ１２２において、ＳＬＣエリアからＭＬＣエリアの適当な物理的記憶位置へデータを転送する。
【００７６】
選択・コンパクト化プロセスは、選択ステップ１２６において、プロセッサ４８がコンパクト化のために１つ以上の候補ブロックを選択することで始まる。プロセッサ４８は、候補ブロックのコンパクト化が被るＭＬＣ書き込み動作（例えば、ＳＬＣからＭＬＣへのコピー）の数に基づいて各候補ブロックを選択する。典型的に、コンパクト化がＭＬＣエリアにおいて少数の書き込み動作しか被らないＳＬＣブロックに優先権が与えられる。幾つかの実施形態において、プロセッサ４８は、コンパクト化の魅力を定量化するメトリックをブロックごとに計算する。次いで、プロセッサ４８は、ブロックコンパクト化ステップ１３０において、選択された候補ブロック（１つ又は複数）をコンパクト化する。
【００７７】
ここに述べる実施形態は、主として、ＳＬＣ及びＭＬＣメモリより成るメモリシステムに向けられたが、ここに述べる方法及びシステムは、異なるハイアラーキー又は記憶密度を有するメモリより成る他の形式のメモリシステムのような他の用途に使用することもできる。
【００７８】
従って、上述した実施形態は、一例として述べたもので、本発明は、特に図示して上述したものに限定されない。むしろ、本発明の範囲は、上述した種々の特徴の組み合わせやサブ組み合わせの両方を包含すると共に、前記説明を読んだときに当業者に明らかとなり且つ従来技術には開示されていない変更や修正も包含する。本特許出願に参考として援用された文書は、本特許出願の一体的部分と考えるべきであるが、本明細書に明確に又は暗示的になされた定義と矛盾するようにそれらの援用文書に用語が定義されたものについては、本明細書の定義のみを考慮されたい。
【符号の説明】
【００７９】
２０：メモリシステム
２４：メモリ装置
２８：メモリセルアレイ
３０：メモリブロック
３６：読み取り／書き込み（Ｒ／Ｗ）ユニット
４０：メモリコントローラ
４４：インターフェイス
４８：プロセッサ
５２：ホスト
【図１】
0005674999.tif 000002
【図２】
0005674999.tif 000003
【図３】
0005674999.tif 000004
【図４】
0005674999.tif 000005