段階的ガーベッジコレクション
不揮発性メモリ記憶システムを動作させる方法が提供される。この方法では、データを書き込む書き込みコマンドが受け取られる。書き込みコマンドは、書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられる。タイムアウト期間内に、ガーベッジコレクション動作の一部分が実行される。書き込みコマンドに関連付けられたデータは、不揮発性メモリ記憶システムに関連付けられたバッファに書き込まれる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的にはメモリ動作に関し、特に段階的ガーベッジコレクション動作を実行する方法およびシステムに関する。
【背景技術】
【0002】
不揮発性メモリ記憶システムでは、メモリに格納されているデータのブロックは、メモリの記憶容量を再生利用するために定期的にガーベッジコレクション(すなわち、圧縮または整理統合)される。代表的なガーベッジコレクション動作では、ブロックからの有効なデータが他のブロックにコピーされる。有効なデータが転送された後、オリジナルブロックは記憶容量を提供するために消去される。現在、書き込み動作は、不揮発性メモリ記憶システムをトリガしてガーベッジコレクション動作を実行させることができる。ホストは、書き込み動作の実行のために一定量の時間を許し、(トリガされたならば)ガーベッジコレクションを含む。例えば、セキュアデジタルプロトコルは、その時間量を250ミリ秒に制限する。不揮発性メモリ記憶システムが書き込み動作においてこの一定量の時間を越えれば、タイムアウトエラーに帰着する可能性がある。
【0003】
メモリブロックのサイズは、増大する容量、より高度の並列性、およびダイサイズのスケーリングに起因して大きくなってきている。従って、より多くのデータが転送されるので書き込み動作の実行により長い時間がかかるようになっている。従って、ガーベッジコレクション動作は、書き込み動作に割り当てられた一定量の時間を容易に超える可能性がある。その結果として、ガーベッジコレクション動作を実行するための時間の量がその一定量の時間を超えるときにタイムアウトエラーを防止する必要がある。
【発明の概要】
【0004】
本発明の種々の実施形態は、段階的ガーベッジコレクションの方法および/またはシステムを提供する。実施形態が、方法、回路、システム、あるいは装置を含む多くの仕方で実現され得ることが理解されるべきである。本発明のいくつかの実施形態が以下に記載される。
【0005】
本発明の1つの実施形態に従って、不揮発性メモリ記憶システムを動作させる方法が提供される。この方法では、データを書き込むために書き込みコマンドが受け取られる。書き込みコマンドには、書き込みコマンドの実行を完了させるためのタイムアウト期間が割り当てられる。このタイムアウト期間内に、ガーベッジコレクション動作の一部が実行される。書き込みコマンドに関連付けられたデータは、不揮発性メモリ記憶システムに関連付けられたバッファに書き込まれる。
【0006】
本発明の他の実施形態および利点は、本発明の原理を例を挙げて示す添付図面と関連して考慮される以下の詳細な記述から明らかである。
【0007】
本発明は、添付図面と関連する以下の詳細な記述によって容易に理解されるであろう。同様の参照数字は同様の構造要素を示す。
【図面の簡単な説明】
【0008】
【図1】本発明の1つの実施形態に従う、不揮発性メモリ記憶システムの例の簡略ブロック図である。
【図2】メモリセルアレイのプレーンへの編成の簡略ブロック図である。
【図3】メモリセルのページの簡略ブロック図である。
【図4】メモリセルのセクタの簡略ブロック図である。
【図5】ホストと不揮発性メモリ記憶システムとの間の論理インターフェイスの簡略ブロック図である。
【図6】本発明の1つの実施形態に従う、段階的ガーベッジコレクションのための動作の概略のフローチャート図である。
【図7】本発明の1つの実施形態に従う、複数の部分に分割された1つのガーベッジコレクション動作の簡略ブロック図を示す。
【図8】本発明の1つの実施形態に従う、段階的ガーベッジコレクションを実行するための詳細な動作のフローチャート図である。
【図9A】本発明の実施形態に従う、段階的にガーベッジコレクションされる順次更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図9B】本発明の実施形態に従う、段階的にガーベッジコレクションされる順次更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10A】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10B】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10C】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10D】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10E】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図11】本発明の1つの実施形態に従う、書き込みバッファブロックへのアクセスを最適化する動作のフローチャート図である。
【図12】本発明の1つの実施形態に従う、新しいデータをスクラッチパッドブロックに一時的に格納するための動作のフローチャート図である。
【図13】本発明の1つの実施形態に従う、シングルセクタ書き込みコマンドに関連付けられた不揮発性メモリ記憶システム動作のフローチャート図である。
【図14】本発明の1つの実施形態に従う、マルチセクタ書き込みコマンドに関連付けられた不揮発性メモリ記憶システム動作のフローチャート図である。
【発明を実施するための形態】
【0009】
添付図面と共に1つ以上の実施形態の詳細な記述が以下に提供される。この詳細な記述は、そのような実施形態と関連して提供されるけれども、特定の実施形態に限定されない。範囲は特許請求の範囲のみにより限定され、多くの変形例、改変、および同等物が含まれる。完全な理解を提供するために以下の記述において多くの特定の細部が明らかにされる。これらの細部は例示を目的として提供され、記述された実施形態はこれらの細部の一部または全部を用いずに特許請求の範囲に従って実現され得る。明瞭性を目的として、記述を不必要に分かりにくくしないように、実施形態に関連する技術分野で知られている技術的事項は詳しくは記述されていない。
【0010】
ここに記載されている実施形態は、段階的ガーベッジコレクションの方法および/またはシステムを提供する。一般的に、ガーベッジ動作は複数の段階に分割され得る。ガーベッジコレクション動作の段階(あるいは部分)は、複数のタイムアウト期間にわたって実行され得る。1つの実施形態では、以下でより詳しく説明されるように、ガーベッジコレクション動作の一部分は1タイムアウト期間内に実行され、書き込みコマンドから受け取られるデータはバッファに格納され得る。
【0011】
図1は、本発明の1つの実施形態に従う、不揮発性メモリ記憶システムの例の簡略ブロック図である。ホストシステム(例えば、デスクトップコンピュータ、オーディオプレーヤ、デジタルカメラ、および他の計算装置)は、不揮発性メモリ記憶システム102にデータを書き込み、またそこからデータを読み出すことができる。不揮発性メモリ記憶システム102は、ホストに組み込まれるか、あるいはホストに取り外し可能に接続され得る。図1に示されているように、不揮発性メモリ記憶システム102は、メモリ118と通信するメモリコントローラ110を含む。一般に、メモリコントローラ110はメモリ118の動作を制御する。動作の例は、データを書き込む(あるいはプログラムする)動作、データを読み出す動作、データを消去する動作、データをベリファイする動作、ガーベッジコレクション動作を処理する動作、および他の動作を含む。メモリコントローラ110はホストインターフェイス104を通してシステムバス126とインターフェイスするバス124を含み、メモリコントローラはメモリインターフェイス108を通してメモリ118とインターフェイスする。ホストインターフェイス104、プロセッサ106(例えば、マイクロプロセッサ、マイクロコントローラ、および他のプロセッサ)、メモリインターフェイス108、ランダムアクセスメモリ(RAM)112、誤り訂正符号(ECC)回路114、および読み出し専用メモリ(ROM)116は、バス124を通して通信する。ROM116は、メモリ118の動作を制御するためのプログラム命令を含む記憶システムファームウェアを記憶することができる。プロセッサ106は、ROM116からロードされたプログラム命令を実行するように構成される。記憶システムファームウェアはRAM112に一時的にロードされ、そして付加的に、RAMはホストとメモリ118との間で転送されるデータをバッファリングするために使用され得る。ECC回路114は、ホストとメモリ118との間でメモリコントローラ110を通るエラーがないかを調べる。エラーが発見されたならば、ECC回路114は数個のエラービットを訂正することができ、その個数は使用されるECCアルゴリズムによる。
【0012】
メモリ118は、アレイロジック120、不揮発性メモリセルアレイ122、およびメモリセルアレイ123を含むことができる。不揮発性メモリセルアレイ122は、いろいろな不揮発性メモリ構造および技術を含むことができる。不揮発性メモリ技術の例として、フラッシュメモリ(例えば、NAND、NOR、マルチレベルセル(MLC)、分割ビット線NOR(DINOR)、AND、大容量結合比(HiCR)、非対称無接点トランジスタ(ACT)、他のフラッシュメモリ)、消去可能でプログラム可能な読み出し専用メモリ(EPROM)、電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)、読み出し専用メモリ(ROM)、一回だけプログラム可能なメモリ(OTP)、および他のメモリ技術を含むことができる。
【0013】
1つの実施形態では、メモリ118は、付加的に、バッファを記憶するように構成されるメモリセルアレイ123を含むことができる。バッファは、段階的ガーベッジコレクション動作においてデータを記憶するように構成される。以下でより詳しく説明されるように、段階的ガーベッジコレクション動作では、書き込みコマンドから受け取られた新しいデータがバッファに格納され得る。本発明の実施形態に従って、バッファはRAM112および/または不揮発性メモリセルアレイ122に置かれてもよいということが理解されるべきである。不揮発性メモリセルアレイ122と同様に、メモリセルアレイ123はいろいろなメモリ構造および技術を含むことができる。メモリセルアレイ123はバッファリング動作のために構成されるので、メモリセルアレイは不揮発性メモリアレイ122より高速で、より経済的で、かつより信頼できる異なるメモリ構造を組み入れることができる。
【0014】
アレイロジック120は、メモリコントローラ110を不揮発性メモリセルアレイ122およびメモリセルアレイ123とインターフェイスさせ、そして、例えばアドレス指定、データ転送およびセンシング、および他のサポートを不揮発性メモリセルアレイおよびメモリセルアレイに提供することができる。不揮発性メモリセルアレイ122およびメモリセルアレイ123をサポートするために、アレイロジック120は行デコーダ、列デコーダ、電荷ポンプ、ワード線電圧発生器、ページバッファ、入出力バッファ、アドレスバッファ、および他の回路を含むことができる。
【0015】
図2は、メモリセルアレイのプレーンへの編成の簡略ブロック図である。1つ以上のメモリセルアレイは、複数のプレーンまたはサブアレイに分割され得る。図2の例では、1つのメモリセルアレイが4つのプレーン202〜205に分割されている。1,2,8,16,あるいはそれ以上など、他の数のプレーンが不揮発性メモリ記憶システムに存在し得ることが理解されるべきである。各プレーン202,203,204,または205は、それぞれのプレーン202〜205内に位置するブロック210〜213および220〜223のようなメモリセルのブロックに分割され得る。メモリセルのブロックは、物理的に一緒に消去可能な最小数のメモリセルである。並列性を高めるために、ブロックはより大きなメタブロック単位で操作され、その場合各プレーン202,203,204,または205からの1ブロックが互いに論理的にリンクされて1つのメタブロックを形成する。例えば、4つのブロック210〜213が互いに論理的にリンクされて1つのメタブロックを形成することができる。さらに、メタブロックを形成するために使用されるブロックは、プレーン202〜205のようなそれぞれのプレーン内のいろいろな位置からのブロックであり得る。例えば、それぞれのプレーン202〜205内のいろいろな位置からの4つのブロック220〜223は、論理的に互いにリンクされて他の1つのメタブロックを形成することができる。メタブロックは不揮発性メモリ記憶システム内の4つの論理プレーン202〜205の全てにわたって広がることができ、あるいは不揮発性メモリ記憶システムは1つ以上の異なるプレーン内の1つ以上のブロックから動的にメタブロックを形成することができる。
【0016】
図3は、メモリセルのページの簡略ブロック図である。ブロック210〜213のような各々のブロックは、メモリセルのページにさらに分割されている。図3に示されているように、各ブロック210,211,212,あるいは213は8ページP0〜P7に分割されている。代わりに、各ブロック210,211,212,あるいは213の中にメモリセルの16ページ、32ページ、あるいはもっと多くのページがあり得る。不揮発性メモリ記憶システムの動作並列性を高めるために、2つ以上のブロックの中のページが論理的にリンクされてメタページにされてもよい。例えば、4つのブロック210〜213の各々からの、P1のような1つずつのページでメタページが形成され得る。メタページは不揮発性メモリ記憶システム内の全てのプレーンにわたって広がることができ、あるいは不揮発性メモリ記憶システムは1つ以上の異なるプレーン内の1つ以上の別々のブロック内の1つ以上のページからメタページを動的に形成することができる。
【0017】
図4は、メモリセルのセクタの簡略ブロック図である。ページは1つ以上のセクタにさらに分割され得る。各ページ内のデータの量は、整数個の1つ以上のセクタのデータであることができ、各セクタは512バイトのデータを記憶することができる。図4は、2つのセクタ402および404に分割されたページ401を示す。各セクタ402または404は、512バイトのサイズであり得るデータ406と、データに関連付けられたオーバーヘッドデータ405とを含む。オーバーヘッドデータ405のサイズは16バイトであることができ、例えば、プログラミング中にデータ406から計算されたECCと、データに関連付けられた論理アドレスと、ブロックが消去され再プログラムされた総回数と、制御フラグと、動作電圧レベルと、データに関連付けられた他の情報とを記憶することができる。
【0018】
図5は、ホストと不揮発性メモリ記憶システムとの間の論理インターフェイスの簡略ブロック図である。連続的論理アドレス空間512はメモリに格納され得るデータのためにアドレスを提供する。ホストに見られる論理アドレス空間512は、データのクラスタのインクリメントに分割され得る。各クラスタは、例えば4セクタと64セクタとの間の数個のセクタのデータを含むことができる。
【0019】
図5に示されているように、ホスト上で実行されるアプリケーションプログラムは3つのデータファイル1,2,および3を作る。ファイル1,2,および3は、データの順序集合であることができて、一意の名前または他のリファレンスにより識別される。ホストは、他のファイルに既に配置されていない論理アドレス空間をファイル1に割り当てる。ここで、ファイル1は1つの連続的範囲の利用可能な論理アドレスを割り当てられているように示されている。
【0020】
ホストがファイル1の後にファイル2を作るとき、ホストは論理アドレス空間512の中の2つの異なる範囲の連続的アドレスを同様に割り当てる。ホストは、ファイル1,2,または3のようなファイルに連続的な論理アドレスを割り当てることはできず、既に他のファイルに割り当てられている論理アドレス範囲の間の論理アドレスのフラグメントを割り当てることができる。図5の例は、前にファイル1および2および他のデータに割り当てられていなかった論理アドレス空間512の中の1つの不連続的なアドレス範囲が他の1つのファイル3に割り当てられることを示している。
【0021】
ホストはファイル割り当てテーブル(FAT)を維持することによって論理アドレス空間512を追跡することができ、ここで変換によりファイル1〜3のような種々のデータファイルにホストによって割り当てられた論理アドレスが維持される。ホストはファイル1〜3を、不揮発性メモリ記憶システムがファイルを格納した物理的位置によってではなくて、それらの論理アドレスにより、参照する。一方、不揮発性メモリ記憶システムは、データが書き込まれている論理アドレスの部分によってファイル1〜3を参照するのであって、ファイルに割り当てられた論理アドレスによってファイルを参照するのではない。不揮発性メモリ記憶システムは、ホストにより提供された論理アドレスを、ホストからのデータが格納されるメモリセルアレイ502内の一意の物理アドレスに変換する。ブロック504は、これらの論理アドレス−物理アドレス変換のテーブルを表し、これは不揮発性メモリ記憶システムにより維持される。
【0022】
図6は、本発明の1つの実施形態に従う、段階的ガーベッジコレクションのための動作の概略のフローチャート図である。特定のホスト論理アドレスに格納されたデータはオリジナルの格納されているデータが陳腐化したときに新しいデータで上書きされ得るということが理解されるべきである。不揮発性メモリ記憶システムは、これに応じて、その新しいデータを更新ブロックに書き込み、そしてその新しいデータが格納された新しい物理的ブロックを特定するためにこれらの論理アドレスについて論理アドレス−物理アドレステーブルを変更する。これらの論理アドレスに存するオリジナルデータを含むブロックはその後消去され、付加的なデータの格納のために利用可能にされる。そのような消去は、書き込み動作の前に実行され得る。その結果として、メモリコントローラは、所与の論理アドレスに存するデータが新データが同じ論理アドレスに書き込まれた後にホストによって陳腐化あるいは無効にされたことを知る。従って、メモリの多数のブロックがある期間にわたって無効のデータを記憶しているということがあり得る。
【0023】
ブロックおよびメタブロックのサイズは増大しつつあり、この増大は、個々のデータ書込みの大きな部分が、1つのメタブロックの記憶容量より少ない、また多くの場合に1つのブロックのものよりも少ない量のデータを格納するという結果をもたらす。不揮発性メモリ記憶システムは、新しいデータを消去済みプールメタブロックに向け得るので、そのような向け方はブロックまたはメタブロックの部分が満たされないという結果をもたらし得る。新データが他の1つのメタブロックに格納されているあるデータの更新であるならば、他の1つのメタブロックからのデータの、新データメタページのものに連続する論理アドレスを有する残りの有効なメタページも新しいメタブロックに論理アドレス順にコピーされる。旧メタブロックは、他の有効なデータメタページを保つことができる。従って、個々のメタブロックのあるメタページのデータが陳腐化あるいは無効化され、同じ論理アドレスが異なるメタブロックに書き込まれて新データに取って代わられ得る。
【0024】
論理アドレス空間にデータを格納するための充分な物理メモリ空間を維持するために、そのようなデータは定期的にガーベッジコレクション(すなわち、圧縮または整理統合)され得る。一般に、ガーベッジコレクション動作は、ブロックから有効なデータを読み出してその有効なデータを新しいブロックに書き込むことを含み、その過程で無効なデータを無視する。例えば、図5のブロック図では、新データファイル3の作成は旧データファイル3を陳腐化する。旧データファイル3は、旧データファイル3により使用されていた物理容量を再生利用するために、消去され得る。しかし、そのような消去動作は、ファイル2と旧ファイル3とが同じ物理的ブロックに格納されていたならば、ガーベッジコレクション動作をトリガする。
【0025】
図6に戻って、不揮発性メモリ記憶システムは、書き込みコマンドに割り当てられたタイムアウト期間の中でガーベッジコレクション動作を実行することができる。ガーベッジコレクション動作が1タイムアウト期間内に完了され得なければ、本発明の1つの実施形態に従って、その1つのガーベッジコレクション動作は数個の異なる段階(または部分)に分割され得る。ここで、不揮発性メモリ記憶システムは、複数の書き込みコマンドに割り当てられたタイムアウト期間を用いてガーベッジコレクション動作の部分を実行する。換言すれば、不揮発性メモリ記憶システムは、1つのガーベッジコレクション動作の部分を実行するために、複数の書き込みコマンドに割り当てられたタイムアウト期間を利用する。
【0026】
図6に示されているように、新しいデータを書き込む書き込みコマンドが動作602で受け取られる。本願明細書で使用される“新しいデータ”という用語は、メモリに書き込まれるべき書き込みコマンドから不揮発性メモリ記憶システムにより受け取られるデータとして定義される。書き込みコマンドには、書き込みコマンドの実行を完了させるためのタイムアウト期間が割り当てられる。換言すれば、タイムアウト期間は、書き込みコマンドの実行のために割り当てられた期間である。割り当てられるタイムアウト期間の一例は250ミリ秒である。書き込みコマンドは、シングルセクタ書き込みコマンドまたはマルチセクタ書き込みコマンドであり得る。以下でより詳しく説明されるように、シングルセクタ書き込みコマンドでは、新しいデータは単一セクタとしてメモリ中のランダムなアドレスに書き込まれ得る。マルチセクタ書き込みコマンドでは、連続的な論理アドレスを有する新しいデータの複数のセクタがメモリに書き込まれる。
【0027】
1つのガーベッジコレクション動作がタイムアウト期間内に完了され得なければ、動作604に示されているように、ガーベッジコレクション動作の一部分が書き込みコマンドに割り当てられたタイムアウト期間内に実行される。ガーベッジコレクションの残りの部分は、後のタイムアウト期間に完了させられ得る。例えば、図7は、本発明の1つの実施形態に従う、複数の部分780および781に分割された1つのガーベッジコレクション動作の例の簡略ブロック図を示す。図7に示されているように、不揮発性メモリ記憶システムは、マルチセクタ書き込みコマンド704を受け取り、その後に新しいデータの複数のセクタ760〜762がメモリに格納されるべく受け取られる。データの各セクタ760,761,または762が受け取られた後にビジー信号702がアサートされる。不揮発性メモリ記憶システムは書き込みコマンドの実行を許すためにビジー信号702をアサートするが、それは(必要ならば)ガーベッジコレクション動作と他の動作とを含むことができる。ホストは、ビジー信号702がアサートされているときには他のコマンドまたは追加のデータを不揮発性メモリ記憶システムに送らない。ホストは書き込みコマンドの実行のために限られた一定量の時間(すなわち、タイムアウト期間750〜752)を与えるので、不揮発性メモリ記憶システムはデータの各セクタ760,761,または762が受け取られた後に限られた量の時間にわたってビジー信号702をアサートすることができる。ビジー信号がタイムアウト期間750,751,または752より長くアクティブであり続ければ、ホストは書き込みコマンドを反復するかあるいはプロセスをアボートすることができる。従って、不揮発性メモリ記憶システムは、タイムアウト期間750,751,または752より長くビジー信号702をアサートすることはできない。データの複数のセクタ760〜762の書き込みの完了後のビジー信号702の解除は、ホストが不揮発性メモリ記憶システムとさらに通信することを可能にする。
【0028】
図7をなお参照すると、ガーベッジコレクションの部分780および781は複数のタイムアウト期間750〜752の間に割り当てられ得る。換言すれば、不揮発性メモリ記憶システムは、1つのガーベッジコレクション動作の各部分780または781を実行するために各タイムアウト期間750,751,または752を利用することができる。例えば、1つのガーベッジコレクションの第1の部分780は第1のタイムアウト期間750の間に実行される。ここで、有効なデータの部分が第1のタイムアウト期間750中に1ブロックから他の1ブロックにコピーされ得る。第2のタイムアウト期間751において、第1のタイムアウト期間に開始された前のガーベッジコレクション動作が続けられる。不揮発性メモリ記憶システムは、前のガーベッジコレクションが完了するまで、タイムアウト期間751の間に前のガーベッジコレクション動作の第2の部分781を実行する。前のガーベッジコレクションは、有効なデータの残りの部分または最後の部分を1ブロックから他の1ブロックにコピーすることによって完了させられ得る。前のガーベッジコレクション動作が第2のタイムアウト期間751内に完了させられ得なければ、不揮発性メモリ記憶システムはガーベッジコレクション動作を完了させるために、第3のタイムアウト期間752のような後のタイムアウト期間を使用することができる。マルチセクタ書き込みコマンド704の終わりに、不揮発性メモリ記憶システムは、ストップコマンド706が受け取られた後に、データの全てのセクタ760〜762がメモリセルアレイに書き込まれるまでビジー信号をアサートすることができる。図7はマルチセクタ書き込みコマンドに関連する動作を示しているということに留意するべきである。以下でより詳しく説明されるように、実行されるガーベッジコレクション動作は、シングルセクタ書き込みコマンドとマルチセクタ書き込みコマンドとについては異なり得る。例えば、以下でより詳しく説明されるように、新しいデータを格納するために使用されるバッファのタイプは、受け取られた書き込みコマンドがシングルセクタ書き込みコマンドであるのか、それともマルチセクタ書き込みコマンドであるのかによる。
【0029】
図6に戻って、ガーベッジコレクション動作の一部分がタイムアウト期間内に実行された後、動作606で、書き込み動作から受け取られた新しいデータは不揮発性メモリ記憶システムに関連付けられたバッファに格納され得る。1つの実施形態では、バッファは不揮発性メモリセルアレイ(例えば、図1に示されている不揮発性メモリアレイ122)に関連付けられたデータ構造であり得る。データ構造の例は、書き込みバッファブロックのような不揮発性メモリセルアレイのブロックを含み、これは以下でより詳しく記載される。他の1つの実施形態では、バッファは揮発性メモリセルアレイのブロックであり得る。例えば、新しいデータは、不揮発性メモリ記憶システムに関連付けられたRAM(例えば、図1に示されているRAM112)に置かれたブロックに格納され得る。さらに他の1つの実施形態では、前に論じられたように、新しいデータは別のメモリセルアレイ(例えば、図1に示されているメモリセルアレイ123)に置かれたブロックに格納され得る。
【0030】
図8は、本発明の1つの実施形態に従う、段階的ガーベッジコレクションを実行するための詳細な動作のフローチャート図である。図8に示されているように、新しいデータをメモリに書き込むために書き込みコマンドが動作802で受け取られる。1つの実施形態では、書き込みコマンドはシングルセクタ書き込みコマンドである。ある環境では、以下でより詳しく説明されるように、他の1つの実施形態に従って、書き込みコマンドはマルチセクタ書き込みコマンドでもあり得る。書き込みコマンドが受け取られた後、不揮発性メモリ記憶システムは動作804でビジー信号をアサートする。
【0031】
書き込みコマンドが実行される前に、動作806でガーベッジコレクション期間の間にガーベッジコレクション動作の一部分が実行される。例えば、1つの実施形態では、1つ以上のブロックがガーベッジコレクション動作のために選択される。その1つ以上のブロックは有効なデータおよび/または無効なデータを含み得る。有効なデータは、ガーベッジコレクション期間中に第2のブロックにコピーされる。ガーベッジコレクション動作に割り当てられたガーベッジコレクション期間と、コピーされるべき有効なデータの量とにより、有効なデータの全部または有効なデータの一部分が第2のブロックにコピーされる。ガーベッジコレクション動作のために割り当てられたガーベッジコレクション期間は、
ガーベッジコレクション期間=タイムアウト期間−Tprog
と表現することができ、ここでタイムアウト期間は、前に論じられたように、固定された、限られた期間である。Tprogは、新しいデータをメモリに(例えば、バッファに)書き込むことに関連付けられた最大プログラミング時間であるか、あるいは不揮発性メモリ記憶システムが新しいデータをメモリに書き込むために必要とする最大時間である。その結果として、1つの実施形態では、不揮発性メモリ記憶システムは、有効なデータを1つ以上のブロックから第2のブロックにコピーするための時間の量を追跡する。不揮発性メモリ記憶システムは、時間がガーベッジコレクション期間を超える前にコピーをやめる。
【0032】
ガーベッジコレクション動作がガーベッジコレクション期間により完了させられ得なければ、書き込みコマンドに関連付けられた新しいデータは動作810で書き込みバッファブロックに書き込まれ得る。不揮発性メモリ記憶システムは、ガーベッジコレクション動作の前に、間に、または後に、新しいデータを書き込みバッファブロックに書き込むことができる。以下でより詳しく説明されるように、ガーベッジコレクション動作が完了すると直ぐに新しいデータは書き込みバッファブロックから更新ブロックにコピーされ得る。書き込みバッファブロックは不揮発性メモリ記憶システムによってメモリ内に維持される。一般に、書き込みバッファブロックは、不揮発性メモリ記憶システムにおいて新しいデータをバッファリングする。1つの実施形態では、書き込みバッファブロックは複数の論理アドレスにわたって広がる。他の1つの実施形態では、書き込みバッファブロックは1つの論理アドレス空間全体にわたって広がる。論理アドレス空間全体にわたって広がることで、書き込みバッファブロックは、不揮発性メモリ記憶システム全体にわたって全ての論理アドレスと論理アドレスの全てのグループ(すなわち、全ての論理グループ)に書き込まれようとしているデータを記憶することができる。換言すれば、複数の異なる論理グループと関連付けられた新しいデータが書き込みバッファブロックに格納され得る。論理グループは、メタブロックのサイズと同等であり得るサイズを有する論理アドレスのグループである。新しいデータは、順次にあるいは非順次に(すなわち、カオス的またはランダムな順序で)書き込みバッファブロックに書き込まれ得る。以下でより詳しく説明されるように、書き込みバッファブロックに書き込まれた新しいデータは後に他のブロック(例えば、更新ブロック)にコピーされるので、書き込みバッファブロックは一時的バッファとして役立つ。本願明細書で使用される“書き込みバッファブロッククリーニング”という用語は、書き込みバッファブロックに格納された新しいデータが他のブロックにコピーされることを意味する。
【0033】
1つの実施形態では不揮発性メモリ記憶システムが書き込みバッファブロックを段階的ガーベッジコレクション動作のために使用するということに留意するべきである。従って、書き込みバッファブロックは最も更新された新しいデータを記憶していないかもしれない。その結果として、新しいデータが後の読み出し動作で読み出されるならば、不揮発性メモリ記憶システムは、更新ブロックに格納されている新しいデータと書き込みバッファブロックに格納されている新しいデータとのどちらが最も新たに更新されたものであるかを調べる。読み出し動作は、その後、最も新たに更新された新しいデータにアクセスして戻す。他の1つの実施形態では、不揮発性メモリ記憶システムは、非段階的ガーベッジコレクション動作および段階的ガーベッジコレクション動作の両方のために書き込みバッファブロックを使用することができる。ここでは、書き込みバッファブロックは全ての書き込み動作のために使用される。換言すれば、非段階的ガーベッジコレクションおよび段階的ガーベッジコレクション動作からの新しいデータが書き込みバッファブロックに書き込まれる。従って、書き込みバッファブロックは、書き込みキャッシュのように動作し、従って最も新たに更新された新しいデータを包含する。
【0034】
書き込みバッファブロックに関連付けられたインデックス情報は、別のデータ構造に、あるいは書き込みバッファブロック自体の一部として、格納され得る。そのデータ構造はメモリコントローラのRAMに格納され得る。データ構造に格納されたインデックス情報は、書き込みバッファブロックに格納されたデータのトラッキングおよびアクセスを可能にする。インデックス情報は、例えば、書き込みバッファブロック内の位置への論理アドレスのマップまたは書き込みバッファブロックの有効な索引へのポインタを含むことができる。索引情報は、更新ブロックが閉じられた後あるいは書き込みバッファブロックへの数個の更新の後に、更新され得る。以下でより詳しく説明されるように、1つの実施形態では、書き込みバッファブロックはセクタレベルの索引のために構成され得る。他の1つの実施形態では、書き込みバッファブロックはページ境界索引のために構成され得る。書き込みバッファブロックは、満杯時に圧縮されることもできる。例えば、書き込みバッファブロックに格納されている有効なデータは新しいブロックにコピーされ、それは新しい書き込みバッファブロックとして参照されるべきあり、陳腐なエントリを有する既存の書き込みバッファブロックは消去される。本願明細書で使用される“書き込みバッファ圧縮”という用語は、書き込みバッファブロックに格納されている有効なデータが圧縮されることを意味する。
【0035】
図8をなお参照すると、新しいデータが書き込みバッファブロックに書き込まれ、かつガーベッジコレクション動作がガーベッジコレクション期間中に実行された後、不揮発性メモリ記憶システムは動作812でタイムアウト期間の前にビジー信号を解除する。従って、1つのガーベッジコレクション動作または1つのガーベッジコレクション動作の一部分を含む書き込みコマンドを実行するための合計時間はタイムアウト期間を越えない。タイムアウト期間内にガーベッジコレクション動作の一部分が実行されるのであれば、残りの部分は後のタイムアウト期間で完了させられる。ガーベッジコレクション動作が完了すると、ガーベッジコレクションされた1つ以上のブロックが消去されて付加的なデータの格納のために利用可能にされる。
【0036】
図9Aおよび9Bは、本発明の実施形態に従う、段階的にガーベッジコレクションされる順次更新ブロックを伴うメモリブロックの簡略ブロック図である。図9Aに示されているように、オリジナルのブロックA980と、関連する順次更新ブロックA982とがガーベッジコレクションのために選択される。一般に、書き込みコマンドから受け取られたデータは更新ブロックに書き込まれ得る。その中でデータが更新される各々の論理グループのために更新ブロックとして専用のメタブロックが割り当てられ得る。データの論理セクタは論理的に連続するセクタのセットを含む論理グループに格納されるということに留意するべきである。更新ブロックは、データを順次にあるいはカオス的順序で(すなわち、非順次に)受け入れるように管理され得る。順次更新ブロックA982のような順次更新ブロックは、全ての有効なセクタが現在同じメタブロックに置かれている論理グループにおいて1つ以上の物理ページを満たすデータを書き込むために書き込みコマンドがホストから受け取られたときに割り当てられるメタブロックであるということが理解されるべきである。順次更新ブロックに書き込まれるデータのセクタは、セクタがオリジナルブロックに書き込まれている対応する論理セクタに取って代わるように論理的にアドレス指定されて順次に書き込まれる。この論理グループの中の更新されるセクタは、順次更新ブロックが閉じられるかあるいはカオス的更新ブロックに変換されるまで、この順次更新ブロックに書き込まれ得る。順次更新ブロックは順次更新ブロックの最後の物理セクタ位置が書き込みされたときに閉じられたと見なされるということに留意するべきである。換言すれば、順次更新ブロックの閉鎖は、ホストにより書き込まれるかあるいはオリジナルブロックからコピーされる更新されるセクタデータによって順次更新ブロックが完全に満たされることに起因し得る。以下でより詳しく説明されるように、カオス的更新ブロックは、ホストにより書き込まれるデータのセクタが、更新される論理グループ内の前に書き込まれたデータのセクタに論理的に連続していないときに順次更新ブロックからの変換によって作られ得る。
【0037】
オリジナルブロックA980は無効なデータと有効なデータとを含むことができ、図9Aではそれぞれハッチパターンおよびドットパターンで表されている。オリジナルブロックA980からコピーされた有効なデータに加えて、順次更新ブロックA982はガーベッジコレクション動作の前に順次更新ブロックAに書き込まれた既存のデータ981を付加的に含むということに留意するべきである。新しいデータ983を書き込む書き込みコマンドが受け取られたとき、書き込みコマンドは順次更新ブロックA982の閉鎖を誘発し得るが、それは1種のガーベッジコレクション動作である。なぜならば、それは新しいデータが開いている更新ブロックを持っていない論理グループと関連付けられるかあるいは新しいデータがガーベッジコレクション動作を引き起こすからである。不揮発性メモリ記憶システムはビジー信号をアサートし、その後、第1のガーベッジコレクション期間970に達するまで有効なデータをオリジナルブロックA980から順次更新ブロックA982にコピーする。コピー中、不揮発性メモリ記憶システムは時間を追跡し、不揮発性メモリ記憶システムは第1のガーベッジコレクション期間970を超える前にコピー動作をやめる。図9Aに示されているように、オリジナルブロックA980に有効なデータがなお残っているので、ガーベッジコレクション動作はガーベッジコレクション期間970内に完了させられ得ない。その結果として、有効なデータの部分が順次更新ブロックA982にコピーされた後、新しいデータ983は、第1のタイムアウト期間に達する前に許された残っている時間内に書き込みバッファブロック908に書き込まれる。
【0038】
図9Bは、ガーベッジコレクション動作の残りの部分が第2のタイムアウト期間内に完了させられ得ることを示す。ここで、新しいデータ984を書き込む第2の書き込みコマンドが第1の書き込みコマンドの後に受け取られる。その結果として、第2の書き込みコマンドに第2のタイムアウト期間が割り当てられる。第2のタイムアウト期間の間に、残りの有効なデータがオリジナルブロックA980から順次更新ブロックA982にコピーされる。この例では、残っている有効なデータの全体(または有効なデータの最後の部分)が第2のガーベッジコレクション期間972内に順次更新ブロックA982にコピーされ得る。従って、ガーベッジコレクション動作は第2のタイムアウト期間内に完了させられ得る。順次更新ブロックA982は満杯にされているので、順次更新ブロックAは新しいオリジナルブロックA985または非更新ブロックに変換される。ガーベッジコレクション動作はこの第2のタイムアウト期間内に完了させられるので、オリジナルブロックA980は消去され、付加的なデータの格納に利用可能にされ得る。オリジナルブロックA980が消去された後、更新ブロックC986が割り当てられ、第2の書き込みコマンドから受け取られた新しいデータ984は新たに割り当てられた更新ブロックCに書き込まれる。更新ブロックC986は新しいオリジナルブロックA985に関連付けられるかもしれないしあるいは関連付けられないかもしれないということに留意するべきである。
【0039】
第2のタイムアウト期間内にガーベッジコレクションが完了した後、第2のタイムアウト期間内に利用可能な時間があれば、不揮発性メモリ記憶システムは書き込みバッファブロッククリーニング動作を行うことができる。書き込みバッファブロック908は、書き込みバッファブロックに書き込まれた新しいデータ983のような新しいデータが後に他のブロック(例えば、更新されたブロックC986)にコピーされるので、一時的バッファとして役立つ。図9Bの例では、第2のタイムアウト期間内に書き込みバッファブロッククリーニング動作のための時間がある。書き込みバッファブロック908に格納されている新しいデータ983は、新しいデータ984と同じ論理グループの中にある。従って、新しいデータ983は、ガーベッジコレクション動作の完了後に更新ブロックC986にコピーされる。書き込みバッファブロック908に格納されている新しいデータ983は無効としてマークされ、従って、書き込みバッファブロック内の付加的なスペースは付加的な新しいデータの格納のために利用可能にされ得る。書き込みバッファブロッククリーニング動作は全てのガーベッジコレクションの完了後に実行されるわけではないかもしれないということに留意するべきである。書き込みバッファブロッククリーニングのタイミングは以下でより詳しく説明される。
【0040】
図10A〜10Eは、本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。図10Aに示されているように、オリジナルブロックA902およびカオス的更新ブロックA904がガーベッジコレクションのために選択される。一般に、カオス的更新ブロックA904のようなカオス的更新ブロックは、データのセクタが1つの論理グループ内でランダムな順序で、個々のセクタの任意の反復を伴って、更新されることを可能にする。カオス的更新ブロックは、ホストにより書き込まれるデータのセクタが、更新される論理グループ内の前に書き込まれたデータのセクタに論理的に連続していないときに順次更新ブロックからの変換によって作成され得る。この論理グループにおいてその後に更新される全てのデータのセクタは、グループ内でのそれらの論理セクタアドレスが何であっても、カオス的更新ブロック内の次の利用可能なセクタ位置に書き込まれる。
【0041】
ここで、オリジナルブロックA902およびカオス的更新ブロックA904は、図10Aにおいてハッチパターンおよびドットパターンでそれぞれ表される無効なデータおよび有効なデータを含む。新しいデータ901を書き込む書き込みコマンドが受け取られたとき、不揮発性メモリ記憶システムはビジー信号をアサートし、その後、第1のガーベッジコレクション期間950に達するまで有効なデータをオリジナルブロックA902およびカオス的更新ブロックA904から新しいブロックA906にコピーする。コピー中、不揮発性メモリ記憶システムは時間を追跡し、不揮発性メモリ記憶システムは第1のガーベッジコレクション期間950を超える前にコピー動作をやめる。図10Aに示されているように、オリジナルブロックA902およびカオス的更新ブロックA904に有効なデータがなお残っているので、ガーベッジコレクション動作は第1のガーベッジコレクション期間950内に完了させられ得ない。その結果として、有効なデータの部分が新しいブロックA906にコピーされた後、ガーベッジコレクション動作が始まる前に受け取られた新しいデータ901は第1のタイムアウト期間に達する前に書き込みバッファブロック908に書き込まれる。
【0042】
図10Bは、その次のタイムアウト期間におけるガーベッジコレクション動作の続きを示す。ここで、第1の書き込みコマンドの後に第2の書き込みコマンドが受け取られ、第2のタイムアウト期間が第2の書き込みコマンドに割り当てられる。第2のタイムアウト期間の間に、残りの有効なデータが、第2のガーベッジコレクション期間951に達するまでオリジナルブロックA902およびカオス的更新ブロックA904から新しいブロックA906にコピーされる。図10Bに示されているように、オリジナルブロックA902およびカオス的更新ブロックA904に有効なデータがなお残っているので、ガーベッジコレクション動作は第2のガーベッジコレクション期間951内に完了させられ得ない。従って、有効なデータの部分が新しいブロックA906にコピーされた後、ガーベッジコレクション動作が始まる前に受け取られた新しいデータ905は書き込みバッファブロック908に書き込まれる。
【0043】
図10Cは、ガーベッジコレクション動作の残りの部分が第3のタイムアウト期間内に完了させられ得ることを示す。第2の書き込みコマンド後に第3の書き込みコマンドが受け取られる。その結果として、第3のタイムアウト期間が第3の書き込みコマンドに割り当てられる。第3のタイムアウト期間の間に、残りの有効なデータがオリジナルブロックA902およびカオス的更新ブロックA904から新しいブロックA906にコピーされる。ここで、全ての残りの有効なデータ(あるいは有効なデータの最後の部分)が第3のガーベッジコレクション期間953内に新しいブロックA906にコピーされ得る。従って、ガーベッジコレクション動作は第3のタイムアウト期間内に完了させられ得る。ガーベッジコレクション動作がこの第3のタイムアウト期間に完了させられるので、オリジナルブロックA902およびカオス的更新ブロックA904は消去されて付加的なデータの格納のために利用可能にされ得る。オリジナルブロックA902およびカオス的更新ブロックA904が消去された後、新しい更新ブロックB962が割り当てられ、第3の書き込みコマンドから受け取られた新しいデータ909は新たに割り当てられた更新ブロックBに書き込まれる。新しいデータ909は書き込みバッファブロック908に書き込まれないが、それは、ガーベッジコレクション動作が完了して、その次のタイムアウト期間まで新しいデータをバッファリングする必要がないからである。この例では、書き込みバッファブロッククリーニング動作が実行され、その動作で、新しいデータ901,905,および909が同じ論理グループに属すると仮定して、書き込みバッファブロック908に格納されている新しいデータ901および905が更新ブロックB962にコピーされる。
【0044】
図10Dは、第4のタイムアウト期間中に行われる他の1つのガーベッジコレクション動作を示す。図10Dに示されているように、オリジナルブロックB960およびカオス的更新ブロックB962がガーベッジコレクションのために選択される。カオス的更新ブロックに変換されている更新ブロックB962は、第1、第2、および第3の書き込みコマンドに関連する新しいデータ901,905,および909を含む。第4の書き込みコマンドが受け取られたとき、不揮発性メモリ記憶システムはビジー信号をアサートし、その後に有効なデータをオリジナルブロックB960およびカオス的更新ブロックB962から新しいブロックB964にコピーする。図10Dに示されているように、有効なデータがオリジナルブロックB960およびカオス的更新ブロックB962になお残っているので、ガーベッジコレクション動作は第4のガーベッジコレクション期間952内に完了させられ得ない。有効なデータの部分が新しいブロックB964にコピーされた後、第4の書き込みコマンドから受け取られた新しいデータ903は書き込みバッファブロック908に書き込まれる。
【0045】
図10Eは、図10Dのガーベッジコレクション動作の残りの部分が第5のタイムアウト期間に完了させられ得ることを示す。第4の書き込みコマンド後に第5の書き込みコマンドが受け取られる。その結果として、第5のタイムアウト期間が第5の書き込みコマンドに割り当てられる。第5のタイムアウト期間の間に、残りの有効なデータがオリジナルブロックB960およびカオス的更新ブロックB962から新しいブロックB964にコピーされる。ここで、全ての残りの有効なデータ(あるいは有効なデータの最後の部分)が第5のガーベッジコレクション期間953内に新しいブロックB964にコピーされ得る。従って、始めに第4のタイムアウト期間中に実行されたガーベッジコレクション動作は第5のタイムアウト期間内に完了させられ得る。ガーベッジコレクション動作がこの第5のタイムアウト期間に完了させられるので、オリジナルブロックB960およびカオス的更新ブロックB962は消去されて、付加的なデータの格納のために利用可能にされる。オリジナルブロックB960およびカオス的更新ブロックB962が消去された後、更新ブロックC965が割り当てられ、第5の書き込みコマンドから受け取られた新しいデータ907は新たに割り当てられた更新ブロックCに書き込まれる。更新ブロックC965は新しいブロックB964に関連付けられるかもしれないしあるいは関連付けられないかもしれないということに留意するべきである。ここで、書き込みバッファブロッククリーニング動作が実行され、従って、新しいデータ903および新しいデータ907が同じ論理グループに属すると仮定して、書き込みバッファブロック908に格納されている新しいデータ903は更新ブロックC965にコピーされる。
【0046】
図11は、本発明の1つの実施形態に従う、書き込みバッファブロックへのアクセスを最適化する動作のフローチャート図である。書き込みバッファブロックの維持は、あるオーバーヘッドを導入する。オーバーヘッドを減少させるために、1つの実施形態では、書き込みバッファブロックへの書き込みが最小にされ得る。図11に示されているように、動作1002で書き込みコマンドが受け取られる。その後、不揮発性メモリ記憶システムは動作1004で実行時間を推定する。実行時間は、書き込みコマンドを実行する期間である。書き込みコマンドの実行は、例えば、新しいデータをメモリにプログラムする(すなわち、書き込む)ことと、ガーベッジコレクション動作を実行することと、他の動作の実行とを含み得る。例えば、実行時間は、有効なデータを1つ以上のブロックから他の1つのブロックにコピーするための期間と新しいデータを書き込む期間とを含み得る。
【0047】
不揮発性メモリ記憶システムは、実行時間を即時に推定する。不揮発性メモリ記憶システムは、種々のパラメータに基づいて実行時間を推定することができる。パラメータの例として、ガーベッジコレクションのタイプ(例えば、ブロック閉鎖、整理統合、圧縮、および他のタイプ)、ガーベッジコレクションされるべきブロック(例えば、更新ブロックおよび他のブロック)に格納されている有効なデータの量、不揮発性メモリ記憶システムに関連するプログラミング時間、ガーベッジコレクションされるブロックのサイズ(例えば、メタブロックのサイズ)、プレパディング(pre-padding) が必要か否か、プレパディングされるべきデータの量、パイプライニング、キャッシング、周波数設定、プログラム破損、および他のパラメータを含む。実行時間を推定する1つの例では、最初の1つ以上のブロックは12ページの有効なデータを含み、その12ページの有効なデータが1つの第2のブロックにコピーされる。不揮発性メモリ記憶システムは、12ページの有効なデータを読み出すために不揮発性メモリ記憶システムが必要とする時間の量とその有効なデータを第2のブロックに書き込むために不揮発性メモリ記憶システムが必要とする時間の量とを加えることによって実行時間を推定することができる。
【0048】
不揮発性メモリ記憶システムが実行時間を推定した後、その実行時間は動作1006でタイムアウト期間と比較される。動作1008に示されているように、その推定された実行時間がタイムアウト期間より短ければあるいは動作がタイムアウト期間内に完了させられ得るならば、ガーベッジコレクション動作が、引き起こされたならば、実行されてタイムアウト期間内に完了させられ、新しいデータが更新ブロックに書き込まれる。一方、動作1010に示されているように、推定された実行時間がタイムアウト期間を超える(すなわち、タイムアウト期間より大きいかあるいはタイムアウト期間に等しい)ならば、新しいデータは書き込みバッファブロックに書き込まれ、割り当てられたガーベッジコレクション期間は、書き込みバッファブロッククリーニングのためにあるいはガーベッジコレクション動作(引き起こされたならば)の一部分を実行するために使用され得る。1つの実施形態では、以下でより詳しく説明されるように、書き込みバッファブロッククリーニングは、タイムアウト期間内に残っている時間の間に、書き込みバッファブロック内の第1の有効なエントリから始まることができる。推定された実行時間がタイムアウト期間を超えるときに書き込みバッファブロックに書き込むことによって、書き込みバッファブロックへの書き込みはより少数となり、従って、書き込みバッファブロックを維持することに関連するオーバーヘッドは低減され得る。
【0049】
書き込みバッファブロック−ページ境界索引付け
1つの実施形態では、書き込みバッファブロックは複数のページを含むように構成され、書き込みバッファブロック内の各ページは索引付けされる。書き込みバッファブロックの各ページは、1セクタ以上の新しいデータを記憶するように構成される。従って、1ポインタが1ページを指すかあるいは参照し、1ページ内の複数のセクタは1ポインタにより参照され得るが、それは、ポインタが1つのページを指すのであってページ内の複数のセクタを指すのではないからである。ここで、同じメタページに属する新しいデータのセクタは、書き込みバッファブロックの同じメタページに書き込まれる。しかし、別々のメタページに属する新しいデータのセクタは書き込みバッファブロックの別々のメタページに書き込まれる。例えば、第1の書き込みコマンドに関連付けられた新しいデータの第1のセクタは書き込みバッファブロックの第1のページに書き込まれる。その後、新しいデータの第2のセクタが第2の書き込みコマンドから受け取られる。その新しいデータの第2のセクタが新しいデータの第1、第2と同じメタページに属するならば、第2のセクタは書き込みバッファブロックの第1のページに書き込まれる。一方、新しいデータの第2のセクタが別のメタページに属するならば、第2のセクタは書き込みバッファブロックの別のメタページに書き込まれる。
【0050】
書き込みバッファブロック−セクタレベル索引付け
他の1つの実施形態では、書き込みバッファブロックは複数のセクタを含むように構成され、書き込みバッファブロック内の1つ以上のセクタは索引付けされ得る。例えば、1ポインタが複数のセクタ(例えば、4セクタ)を指すかあるいは参照することができる。他の1つの例では、1ポインタが1セクタを指すかあるいは参照することができる。書き込みバッファブロック内の各セクタが索引付けされる例では、新しいデータは書き込みバッファブロックの単一のセクタに書き込まれる。他の1つの書き込みコマンドに関連付けられたその次の新しいデータは書き込みバッファブロック内の次の利用可能なセクタに書き込まれる。例えば、複数の書き込みコマンドからの新しいデータのセクタは、書き込みバッファブロック内の同じページの別々のセクタに書き込まれ得る。従って、書き込みバッファブロックは複数のセクタを含むように構成されることができ、各セクタは新しいデータの1つのセクタを記憶するように構成される。
【0051】
タイムアウトエラーなしでシングルセクタ書き込みを持続させるために、不揮発性メモリ記憶システムは、割り当てられたセクタが不揮発性メモリ記憶システムのメタブロックの総数より多いように数個のセクタを書き込みバッファブロックに割り当てることができる。書き込みバッファブロックが複数のメタブロックで構成され得るということが理解されるべきである。書き込みバッファブロックに割り当てられるセクタの数を計算するために、例えば、書き込みバッファブロックを構成するメタブロックの数Mは、
M=M1+(M1*M2)/(Metablock_Size-M2) (1.0)
と定義することができ、“Metablock_Size"は“メタブロックサイズ”を意味し、ここで、
M1=RoundUp.to.Nearest.Integer[(N-1)*(Total.Number.of.Metablocks.in.System)/(Mtablock_Size)]
であり、ここで“RoundUp.to.Nearest.Integer"は“最近の整数への切り上げ”を意味し、“Total.Number.of.Metablocks.in.System"は“システム内のメタブロックの総数”を意味し、
M2=RoundUp.to.Nearest.Integer[(N*Tgc)/(N*TO-Tgc)]
であり、
N=RoundDown.to.Nearest.Integer[(Tgc+TO)/TO]
であり、ここで“RoundDown.to.Nearest.Integer"は“最近の整数への切り下げ”を意味し、TOはタイムアウト期間であり、Tgc は1つの完全なガーベッジコレクション動作を実行するための時間である。書き込みバッファブロックに割り当てられるセクタの総数は、
セクタの総数=M*Metablock_Size (1.2)
として定義されることができ、ここでMは方程式1.0で定義され、“Metablock_Size"は、512セクタ/メタブロック、1,024セクタ/メタブロック、2,048セクタ/メタブロックあるいは他のサイズのようなセクタ数で表した各メタブロックのサイズである。一般に、方程式1.0および1.2は、書き込みバッファブロックに割り当てられるセクタの総数を不揮発性メモリ記憶システム内のメタブロックの総数より大きく定義する。メタブロックの総数に加えて、方程式1.0は、書き込みバッファブロックに関連するオーバーヘッドを維持するための1つ以上のメタブロック(またはセクタ)(以降、“オーバーヘッドメタブロック”または“オーバーヘッドセクタ”)を割り当てる。例えば、オーバーヘッドメタブロックの数を定める方程式1.0の部分は(M1*M2)/(Metablock_size-M2) であり、ここでオーバーヘッドセクタはオーバーヘッドブロックをメタブロックサイズと乗じることによって計算され得る。
【0052】
方程式1.2で定められる数のセクタを書き込みバッファブロックに割り当てることにより、連続的でランダムなシングルセクタ書き込みという最悪の場合のシナリオにおいてもタイムアウトエラーが回避され得る。タイムアウトエラーは、書き込みバッファブロックが満杯でガーベッジコレクション動作が完了させられ得ないときに生じ得る。最悪の場合のシナリオは、各シングルセクタ書き込みコマンドが別々の論理グループに書き込み、これによりどの書き込みでも1つの完全なガーベッジコレクション動作を引き起こすときに、生じる。この悪い場合のシナリオでは、セクタが蓄積されて書き込みバッファブロックに書き込まれる。この悪い場合のシナリオは、全てのタイムアウト期間で新しいデータの単一のセクタが書き込みバッファブロックに書き込まれると共に不揮発性メモリ記憶システムが1つの完全なガーベッジコレクション動作を実行するために必要な全ての時間(Tgc)で1セクタが無効とマークされるかのように見られ得る。さらに、書き込みバッファブロックが満たされるかあるいは満杯であるとき、書き込みバッファブロックは、新しいセクタが受け取られるけれども書き込みバッファブロッククリーニング動作が実行され得ないように、圧縮される。従って、1つの悪い場合のシナリオでは、ガーベッジコレクション期間がタイムアウト期間より大きいときには書き込みバッファブロックは空にされるより速く満たされる。
【0053】
しかし、書き込みバッファブロック内の複数のセクタが同じ論理グループに属するならば、1ガーベッジコレクション動作中に全てのセクタが整理統合され得る。充分なメタブロックMを書き込みバッファブロックに割り当てることにより、不揮発性メモリ記憶システム内のメタブロックの総数より多くのセクタ(またはエントリ)が書き込みバッファブロックに存在することになり、従って、複数の有効なセクタが書き込みバッファブロックに書き込まれている論理グループが存在することになる。書き込みバッファブロックの1つのセクタがガーベッジコレクションされるあるいは整理統合されるとき、同じ論理グループに属する全てのセクタが1つの新しい更新ブロックに整理統合され、書き込みバッファブロックにおいて無効とマークされる。従って、書き込みバッファブロックを空にする速度は充填速度より大きくなり、これにより書き込みバッファブロックが満杯であるかあるいは満たされることを防止する。従って、前述した最悪の場合のシナリオについてもタイムアウトエラーの発生が防止され得るように、所与の全てのTgcについて、不揮発性メモリ記憶システムは不揮発性メモリ記憶システム内のメタブロックの総数より大きい数のセクタを書き込みバッファブロックに割り当てる。
【0054】
図12は、本発明の1つの実施形態に従う、新しいデータをスクラッチパッドブロックに一時的に格納するための動作のフローチャート図である。不揮発性メモリ記憶システムがマルチレベルバッファリングまたは複数のバッファレベルを持つことができ、それがマルチレベルキャッシングの思想と類似し得るということが理解されるべきである。この実施形態では、書き込みバッファブロックは、多数のバッファレベルのうちの1つに関連付けられ得る。複数バッファレベルでは、新しいデータを書き込みバッファブロックに直ぐに書き込む代わりに、新しいデータは、書き込みバッファブロックに書き込まれる前に一時的に他の1つのバッファレベルに格納され得る。書き込みバッファブロックのバッファレベルと異なるバッファレベルでの新しいデータの一時的格納は、段階的ガーベッジコレクション動作における書き込みバッファブロックの使用に関連する複雑さ、オーバーヘッド、および待ち時間を低減することができる。バッファの1つの例はスクラッチパッドブロックである。スクラッチパッドブロックは、書き込みバッファブロックとは異なるバッファレベルに関連付けられ得る。例えば、スクラッチパッドブロックは第1のバッファレベルとして使用され、書き込みバッファブロックは第2のバッファレベルとして使用され得る。前に論じられたように、シングルセクタ索引付けでは、複数の書き込みコマンドからの新しいデータのセクタは、書き込みバッファブロック内の同じページの別々のセクタに書き込まれ得る。不揮発性メモリ記憶システムは部分的なページをプログラムできないかもしれないので、本発明の1つの実施形態に従って、新しいデータは、書き込みバッファブロックに転送される前に、スクラッチパッドブロックのような第1のバッファレベルに一時的に格納され得る。スクラッチパッドブロックはデータ更新ブロックの1つの形であって、その中では関連する1つの論理グループ内の論理セクタがランダムな順序で任意の量の反復を伴って更新され得る。スクラッチパッドブロックは、意図された論理セクタが終了したりあるいは物理ページ境界を越えたりしない書き込みコマンドにより作られる。スクラッチパッドブロックは部分的物理ページに相当するデータを包含することができるけれども部分的プログラム済みページデータは許されない。スクラッチパッドブロックは、不揮発性メモリ記憶システム内の各更新ブロックのために1つの有効なページのデータを保持することができる。不揮発性メモリ記憶システムは、例えば、8個の更新ブロックを割り当てられることができ、従って、スクラッチパッドブロックは9個の有効なページのデータを記憶することができる。
【0055】
図12に示されているように、書き込みコマンドから受け取られた新しいデータは始めに動作1102でスクラッチパッドブロックに書き込まれる。スクラッチパッドブロックは複数のページを含むことができ、各ページは複数のセクタを含む。新しいデータはスクラッチパッドブロックのセクタにコピーされる。動作1104で、新しいデータは、その後、書き込みバッファブロックに関連付けられているスクラッチパッドブロック内の1つのページが満杯であるとき、スクラッチパッドブロックから書き込みバッファブロックにコピーされる。従って、不揮発性メモリ記憶システムは、スクラッチパッドブロック内のページのセクタを、ページの全てのセクタが種々の書き込みコマンドからの新しいデータで満たされるまで、蓄積する。不揮発性メモリ記憶システムは、その後、そのページ全体(例えば、8セクタの新しいデータ)をスクラッチパッドブロックから書き込みバッファブロックに1プログラム動作でコピーする。書き込みバッファブロックはスクラッチパッドブロックより大きくてより多くの有効なデータを収容し得るので、スクラッチパッドブロックはより少量のガーベッジコレクションされるべきデータを有する。従って、スクラッチパッドブロックのガーベッジコレクションは書き込みバッファブロックのガーベッジコレクションより高速である。その結果として、新しいデータをスクラッチパッドブロックを経由して書き込みバッファブロックに書き込む動作は、新しいデータを書き込みバッファブロックに直接書き込む動作より速い。
【0056】
オーディオ/ビデオデータ
不揮発性メモリ記憶システムに格納されているオーディオ/ビデオファイル(以降、“オーディオ/ビデオデータ”)に関連付けられたデータにアクセスするホストは、他のデータと比べて所定の速度でオーディオ/ビデオデータを書き込む必要があるかもしれない。ホストがオーディオ/ビデオデータを不揮発性メモリ記憶システムにおよび/または不揮発性メモリ記憶システムからストリーミングするとき、ストリームに割り当てられる帯域幅は、所定の速度と一致するかあるいはそれを超える。オーディオ/ビデオデータのアクセス中に行われるガーベッジコレクション動作は、オーディオ/ビデオデータの書き込み性能を低下させることがある。従って、1つの実施形態では、マルチセクタ書き込みコマンドがオーディオ/ビデオデータに関連付けられていないかあるいはマルチセクタ書き込みコマンドがオーディオ/ビデオ書き込みの始まりにあるときには段階的ガーベッジコレクションが行われる。
【0057】
オーディオ/ビデオデータを他のデータから区別するために、1つの実施形態では、不揮発性メモリ記憶システムは、マルチセクタ書き込みコマンドに関連付けられたターゲット論理アドレスを参照することができる。オーディオ/ビデオデータは順次に書き込まれるので、逆方向ジャンプ(backwards jump)として解釈されるターゲット論理アドレスは、新しいデータがオーディオ/ビデオデータ(あるいはオーディオ/ビデオデータの始まり)ではないことを示すことができる。他の1つの実施形態では、不揮発性メモリ記憶システムは、新しいデータに関連付けられたセクタの数を参照することによってもオーディオ/ビデオデータを他のデータから区別することができる。オーディオ/ビデオデータは、記録単位(recording unit)と称される単位で格納され得る。オーディオ/ビデオデータに関連付けられる最小の記録単位の長さは32セクタであり得る。従って、32セクタの整数倍ではない新しいデータに関連付けられたセクタの数は、その新しいデータがオーディオ/ビデオデータではないことを示すことができる。記録単位に整列しないか、あるいは記録単位の始まりから始まらない受け取られた新しいデータも、その新しいデータがオーディオ/ビデオデータではないことを示すことができる。
【0058】
その結果として、次の条件、すなわち(1)マルチセクタ書き込みコマンドがガーベッジコレクション動作を引き起こす、(2)ターゲット論理アドレスが逆方向ジャンプとして解釈される、(3)ターゲット論理アドレスが記録単位境界と整列させられていない、(4)新しいデータに関連付けられたセクタの数が32の整数倍でなければ、ストップコマンドが受け取られた(すなわち、マルチセクタ書き込みコマンドの終わり)後、という条件のうちの1つが当てはまるならば、段階的ガーベッジコレクションが実行され得る。
【0059】
シングルセクタ書き込み
図13は、本発明の1つの実施形態に従う、シングルセクタ書き込みコマンドに関連付けられた不揮発性メモリ記憶システム動作のフローチャート図である。新しいデータは、メモリセルアレイ全体の中でランダムなアドレスにシングルセクタとして書き込まれ得る。ホストアクティビティとカードフラグメンテーションとにより、ホストは複数のセクタを有する長いファイルをシングルセクタ書き込みコマンドを用いてランダムな位置に書き込むことができる。限られた数の割り当てられた更新ブロックがあるので、これらのシングルセクタ書き込みは、更新ブロックを速やかに用いることができ、これにより、その後の書き込み動作のためにブロックをクリアするガーベッジコレクション動作を実行するように不揮発性メモリ記憶システムを促すことができる。
【0060】
図13に示されているように、シングルセクタ書き込みコマンドが動作1202で受け取られる。その後、そのシングルセクタ書き込みコマンドがガーベッジコレクション動作を引き起こすか否かについて動作1204で判定が行われる。そのシングルセクタ書き込みコマンドがガーベッジコレクション動作を引き起こさなければ、新しいデータは動作1220でメモリに書き込まれる。しかし、シングルセクタ書き込みコマンドがガーベッジコレクション動作を引き起こすならば、ペンディングしている段階的ガーベッジコレクション(すなわち、既に始まっているけれども、ガーベッジコレクションが完了させられ得ないために段階的に実行されたガーベッジコレクション動作)があるか否かについて他の1つの判定が動作1206で行われる。段階的ガーベッジコレクションがあるならば、動作1208でその段階的ガーベッジコレクション動作が続行される。換言すれば、前のガーベッジコレクション動作からの残りの部分が続行される。動作1210に示されているように、ガーベッジコレクション期間(例えば、タイムアウト期間とプログラミング時間との差)まであるいは段階的ガーベッジコレクションが完了させられるまで、段階的ガーベッジコレクション動作が実行される。
【0061】
段階的ガーベッジコレクション動作がガーベッジコレクション期間内に完了させられ得なければ、新しいデータは動作1218で書き込みバッファブロックに書き込まれる。ガーベッジコレクション期間に達していないかあるいは段階的ガーベッジコレクション動作がガーベッジコレクション期間の前に完了させられ得たならば、段階的ガーベッジコレクション動作を完了させた後であっても、シングルセクタ書き込みコマンドがなおガーベッジコレクション動作を引き起こすか否かについての他の1つの判定が動作1212で行われる。シングルセクタ書き込みコマンドがガーベッジコレクションを引き起こさなければ、新しいデータが動作1220でメモリに書き込まれる。一方、シングルセクタ書き込みコマンドがガーベッジコレクションを引き起こすならば、動作1216に示されているガーベッジコレクション期間まで動作1214でガーベッジコレクション動作が実行される。ガーベッジコレクション動作がガーベッジコレクション期間までに完了させられ得なければ、新しいデータは動作1218で書き込みバッファブロックに書き込まれる。そうでなければ、新しいデータは動作1220でメモリに書き込まれる。段階的ガーベッジコレクションがあってかつ現在の書き込みコマンドもガーベッジコレクション動作を引き起こすならば、動作1216に示されているガーベッジコレクション期間は動作1210に示されているガーベッジコレクション期間の続きであるということに留意するべきである。従って、段階的ガーベッジコレクションがあってかつ現在のシングルセクタ書き込みコマンドがガーベッジコレクション動作を引き起こすならば、両方の動作が総ガーベッジコレクション期間内に完了させられる。換言すれば、動作1208に示されている段階的ガーベッジコレクション動作と動作1214に示されているガーベッジコレクション動作との両方のために割り当てられる実行時間は、例えば、タイムアウト期間とプログラミング時間との差である。
【0062】
新しいデータが動作1220でメモリに書き込まれた後、書き込みバッファブロックに有効なエントリがあるか否かについて、またタイムアウト期間に達しているか否かについて、動作1224で判定が行われる。書き込みバッファブロックに有効なエントリがないかあるいはタイムアウト期間に達しているならば、動作は終了する。一方、有効なエントリがあってかつタイムアウト期間に達していなければ、書き込みバッファブロッククリーニング動作が動作1226でタイムアウト期間まで実行される。書き込みバッファブロック圧縮動作も、この期間中にタイムアウト期間まで実行され得る。
【0063】
マルチセクタ書き込み
図14は、本発明の1つの実施形態に従う、マルチセクタ書き込みコマンドに関連付けられた不揮発性メモリ記憶システム動作のフローチャート図である。メモリセルアレイに書き込まれる大抵の新しいデータは、連続した順次論理アドレス空間を占める大きなデータファイルである。ホストアクティビティにより、ホストは大きなデータファイルをマルチセクタ書き込みコマンドを用いて書き込むことができる。そのような新しいデータは、複数のタイムアウト期間を有する新しいデータの複数のセクタを含む。図7は、マルチセクタ書き込みコマンドの例を示す。一般に、複数のタイムアウト期間が利用可能なので、新しいデータは、書き込みバッファブロックの代わりに、割り当てられた更新ブロックに書き込まれ得る。従って、ガーベッジコレクションは、普通は、マルチセクタ書き込みコマンドに割り当てられた複数のタイムアウト期間内に完了させられ得るので、書き込みバッファブロックは普通は複数の書き込みコマンドで使用されない。
【0064】
図14に示されているように、マルチセクタ書き込みコマンドが動作1302で受け取られる。その後、動作1304で、新しいデータのセクタは格納され(あるいはバッファリングされ)、必要ならばガーベッジコレクション動作が実行され得る。ここで、複数のタイムアウト期間がマルチセクタ書き込みコマンドに割り当てられ、1ガーベッジコレクション動作は普通はマルチセクタ書き込みコマンドの終わりまでに完了させられ得るので、不揮発性メモリ記憶システムは書き込みバッファブロックを利用しないかもしれない。従って、書き込みバッファブロックの代わりに、不揮発性メモリ記憶システムは、新しいデータを不揮発性メモリ記憶システムに関連付けられているRAMに、あるいは不揮発性メモリ記憶システムに関連付けられている他のメモリに格納することができるのと同時に、割り当てられたタイムアウト期間を用いてガーベッジコレクション動作を実行するために新しいデータのセクタとセクタとの間にビジー信号をアサートする。
【0065】
ホストセクタがバッファリングされた後、新しいデータのN個未満のセクタが受け取られたのか否かについて動作1306で判定が行われる。前に論じられたように、ガーベッジコレクション動作は、普通は、マルチセクタ書き込み動作に割り当てられた複数のタイムアウト期間内に完了させられ得るので、マルチセクタ書き込みコマンドに関連付けられた新しいデータは書き込みバッファブロックに書き込まれないかもしれない。しかし、1つの実施形態では、ガーベッジコレクション動作を完了させるために充分なタイムアウト期間が割り当てられなければ、書き込みバッファブロックがマルチセクタ書き込みコマンドで使用され得る。従って、ガーベッジコレクション動作が引き起こされるか否かに関わらず、
N=round-down to nearest integer [(Tgc+TO)/TO] (2.0)
として定義された新しいデータの少なくともN個のセクタを伴うマルチセクタ書き込みコマンドが書き込みバッファブロックにではなくて更新ブロックに直接書き込まれ得る。ここで“round-down to nearest integer" は、“最近の整数への切り捨て”を意味する。方程式2.0は、書き込みコマンドがシングルセクタ書き込みコマンドであるときあるいは不揮発性メモリ記憶システムがマルチセクタ書き込みコマンドで新しいデータのN個未満のセクタを受け取ったときに、新しいデータが書き込みバッファブロックに書き込まれることを示す。
【0066】
なお図14を参照すると、N個未満のセクタが受け取られたならば、不揮発性メモリ記憶システムは、図13に示されているシングルセクタ書き込みコマンド動作に従ってマルチセクタ書き込みコマンドを操作する。しかし、新しいデータのN個より多くのセクタが受け取られたならば、書き込みバッファブロッククリーニング動作が実行され得るか否かについて動作1310で判定が行われる。例えば、動作1302で受け取られた新しいデータがガーベッジコレクションを引き起こさなかったならば、あるいは新しいデータが割り当てられたガーベッジコレクション期間の前に完了させられたガーベッジコレクションを引き起こしたのであれば、書き込みバッファブロッククリーニング動作が実行され得る。しかし、新しいデータが記録単位境界に整列させられているならば、新しいデータはオーディオ/ビデオデータであるかもしれないので、書き込みバッファブロックリーニングは実行されない。書き込みバッファブロッククリーニング動作が実行され得なければ、新しいデータは動作1314でメモリに書き込まれる。書き込みバッファブロッククリーニング動作が実行され得るならば、マルチセクタ書き込みコマンド実行中に不揮発性メモリ記憶システムによりアサートされた合計のビジー期間がTgc−Tprogになるまで、動作1312で段階的ガーベッジコレクション動作および書き込みバッファブロッククリーニング動作が実行される。その後、新しいデータは動作1314で不揮発性メモリセルアレイに書き込まれる。この実施形態では、動作1312に示されている書き込みバッファブロッククリーニングは、Tgc−Tprogの期間まで、4タイムアウト期間、5タイムアウト期間、および他の期間などのいろいろな期間の間にマルチセクタ書き込みコマンドから受け取られた始めの数個のセクタの中間(例えば、第2のセクタと第3のセクタとの間)に、実行され得る。
【0067】
書き込みコマンドが実行された後、新しいデータが32セクタの整数倍であるか否かについて動作1316で判定が行われる。新しいデータが32セクタの整数倍であれば、新しいデータはオーディオ/ビデオ関連であるかも知れず、動作は終了する。一方、新しいデータが32セクタの整数倍でなければ、動作1318で、書き込みバッファブロック内に有効なエントリがあるか否かについて、またタイムアウト期間に達しているか否かについて、判定が行われる。有効なエントリが書き込みバッファブロック内にないかあるいはタイムアウト期間に達していれば、動作は終了する。一方、有効なエントリがあってかつタイムアウト期間に達していなければ、動作1320でタイムアウト期間まで書き込みバッファブロッククリーニング動作が実行される。
【0068】
前述した実施形態は、段階的ガーベッジコレクションのための方法および/またはシステムを提供する。ガーベッジコレクション動作は複数の段階に分割されることができ、その複数の段階は複数のタイムアウト期間にわたって実行される。ガーベッジコレクション動作を分割することにより、ガーベッジコレクション動作の各段階はタイムアウト期間内に完了させられることができ、これによりタイムアウトエラーを防止する。
【0069】
前述した実施形態は明確な理解を目的としてある程度詳細に記載されているけれども、実施形態は提示された細目に限定されない。実施形態を実現する多くの代わりの方法がある。従って、開示された実施形態は実例となるものであって制限するものではないと見なされるべきであり、実施形態は本願明細書で与えられた細目に限定されるべきではなくて、添付されている特許請求の範囲の範囲および同等物の中で改変され得る。特許請求の範囲で明示的に述べられていない限り、特許請求の範囲において要素および/または動作は動作の特定の順序を示唆しない。
【技術分野】
【0001】
本発明は、一般的にはメモリ動作に関し、特に段階的ガーベッジコレクション動作を実行する方法およびシステムに関する。
【背景技術】
【0002】
不揮発性メモリ記憶システムでは、メモリに格納されているデータのブロックは、メモリの記憶容量を再生利用するために定期的にガーベッジコレクション(すなわち、圧縮または整理統合)される。代表的なガーベッジコレクション動作では、ブロックからの有効なデータが他のブロックにコピーされる。有効なデータが転送された後、オリジナルブロックは記憶容量を提供するために消去される。現在、書き込み動作は、不揮発性メモリ記憶システムをトリガしてガーベッジコレクション動作を実行させることができる。ホストは、書き込み動作の実行のために一定量の時間を許し、(トリガされたならば)ガーベッジコレクションを含む。例えば、セキュアデジタルプロトコルは、その時間量を250ミリ秒に制限する。不揮発性メモリ記憶システムが書き込み動作においてこの一定量の時間を越えれば、タイムアウトエラーに帰着する可能性がある。
【0003】
メモリブロックのサイズは、増大する容量、より高度の並列性、およびダイサイズのスケーリングに起因して大きくなってきている。従って、より多くのデータが転送されるので書き込み動作の実行により長い時間がかかるようになっている。従って、ガーベッジコレクション動作は、書き込み動作に割り当てられた一定量の時間を容易に超える可能性がある。その結果として、ガーベッジコレクション動作を実行するための時間の量がその一定量の時間を超えるときにタイムアウトエラーを防止する必要がある。
【発明の概要】
【0004】
本発明の種々の実施形態は、段階的ガーベッジコレクションの方法および/またはシステムを提供する。実施形態が、方法、回路、システム、あるいは装置を含む多くの仕方で実現され得ることが理解されるべきである。本発明のいくつかの実施形態が以下に記載される。
【0005】
本発明の1つの実施形態に従って、不揮発性メモリ記憶システムを動作させる方法が提供される。この方法では、データを書き込むために書き込みコマンドが受け取られる。書き込みコマンドには、書き込みコマンドの実行を完了させるためのタイムアウト期間が割り当てられる。このタイムアウト期間内に、ガーベッジコレクション動作の一部が実行される。書き込みコマンドに関連付けられたデータは、不揮発性メモリ記憶システムに関連付けられたバッファに書き込まれる。
【0006】
本発明の他の実施形態および利点は、本発明の原理を例を挙げて示す添付図面と関連して考慮される以下の詳細な記述から明らかである。
【0007】
本発明は、添付図面と関連する以下の詳細な記述によって容易に理解されるであろう。同様の参照数字は同様の構造要素を示す。
【図面の簡単な説明】
【0008】
【図1】本発明の1つの実施形態に従う、不揮発性メモリ記憶システムの例の簡略ブロック図である。
【図2】メモリセルアレイのプレーンへの編成の簡略ブロック図である。
【図3】メモリセルのページの簡略ブロック図である。
【図4】メモリセルのセクタの簡略ブロック図である。
【図5】ホストと不揮発性メモリ記憶システムとの間の論理インターフェイスの簡略ブロック図である。
【図6】本発明の1つの実施形態に従う、段階的ガーベッジコレクションのための動作の概略のフローチャート図である。
【図7】本発明の1つの実施形態に従う、複数の部分に分割された1つのガーベッジコレクション動作の簡略ブロック図を示す。
【図8】本発明の1つの実施形態に従う、段階的ガーベッジコレクションを実行するための詳細な動作のフローチャート図である。
【図9A】本発明の実施形態に従う、段階的にガーベッジコレクションされる順次更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図9B】本発明の実施形態に従う、段階的にガーベッジコレクションされる順次更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10A】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10B】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10C】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10D】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図10E】本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。
【図11】本発明の1つの実施形態に従う、書き込みバッファブロックへのアクセスを最適化する動作のフローチャート図である。
【図12】本発明の1つの実施形態に従う、新しいデータをスクラッチパッドブロックに一時的に格納するための動作のフローチャート図である。
【図13】本発明の1つの実施形態に従う、シングルセクタ書き込みコマンドに関連付けられた不揮発性メモリ記憶システム動作のフローチャート図である。
【図14】本発明の1つの実施形態に従う、マルチセクタ書き込みコマンドに関連付けられた不揮発性メモリ記憶システム動作のフローチャート図である。
【発明を実施するための形態】
【0009】
添付図面と共に1つ以上の実施形態の詳細な記述が以下に提供される。この詳細な記述は、そのような実施形態と関連して提供されるけれども、特定の実施形態に限定されない。範囲は特許請求の範囲のみにより限定され、多くの変形例、改変、および同等物が含まれる。完全な理解を提供するために以下の記述において多くの特定の細部が明らかにされる。これらの細部は例示を目的として提供され、記述された実施形態はこれらの細部の一部または全部を用いずに特許請求の範囲に従って実現され得る。明瞭性を目的として、記述を不必要に分かりにくくしないように、実施形態に関連する技術分野で知られている技術的事項は詳しくは記述されていない。
【0010】
ここに記載されている実施形態は、段階的ガーベッジコレクションの方法および/またはシステムを提供する。一般的に、ガーベッジ動作は複数の段階に分割され得る。ガーベッジコレクション動作の段階(あるいは部分)は、複数のタイムアウト期間にわたって実行され得る。1つの実施形態では、以下でより詳しく説明されるように、ガーベッジコレクション動作の一部分は1タイムアウト期間内に実行され、書き込みコマンドから受け取られるデータはバッファに格納され得る。
【0011】
図1は、本発明の1つの実施形態に従う、不揮発性メモリ記憶システムの例の簡略ブロック図である。ホストシステム(例えば、デスクトップコンピュータ、オーディオプレーヤ、デジタルカメラ、および他の計算装置)は、不揮発性メモリ記憶システム102にデータを書き込み、またそこからデータを読み出すことができる。不揮発性メモリ記憶システム102は、ホストに組み込まれるか、あるいはホストに取り外し可能に接続され得る。図1に示されているように、不揮発性メモリ記憶システム102は、メモリ118と通信するメモリコントローラ110を含む。一般に、メモリコントローラ110はメモリ118の動作を制御する。動作の例は、データを書き込む(あるいはプログラムする)動作、データを読み出す動作、データを消去する動作、データをベリファイする動作、ガーベッジコレクション動作を処理する動作、および他の動作を含む。メモリコントローラ110はホストインターフェイス104を通してシステムバス126とインターフェイスするバス124を含み、メモリコントローラはメモリインターフェイス108を通してメモリ118とインターフェイスする。ホストインターフェイス104、プロセッサ106(例えば、マイクロプロセッサ、マイクロコントローラ、および他のプロセッサ)、メモリインターフェイス108、ランダムアクセスメモリ(RAM)112、誤り訂正符号(ECC)回路114、および読み出し専用メモリ(ROM)116は、バス124を通して通信する。ROM116は、メモリ118の動作を制御するためのプログラム命令を含む記憶システムファームウェアを記憶することができる。プロセッサ106は、ROM116からロードされたプログラム命令を実行するように構成される。記憶システムファームウェアはRAM112に一時的にロードされ、そして付加的に、RAMはホストとメモリ118との間で転送されるデータをバッファリングするために使用され得る。ECC回路114は、ホストとメモリ118との間でメモリコントローラ110を通るエラーがないかを調べる。エラーが発見されたならば、ECC回路114は数個のエラービットを訂正することができ、その個数は使用されるECCアルゴリズムによる。
【0012】
メモリ118は、アレイロジック120、不揮発性メモリセルアレイ122、およびメモリセルアレイ123を含むことができる。不揮発性メモリセルアレイ122は、いろいろな不揮発性メモリ構造および技術を含むことができる。不揮発性メモリ技術の例として、フラッシュメモリ(例えば、NAND、NOR、マルチレベルセル(MLC)、分割ビット線NOR(DINOR)、AND、大容量結合比(HiCR)、非対称無接点トランジスタ(ACT)、他のフラッシュメモリ)、消去可能でプログラム可能な読み出し専用メモリ(EPROM)、電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)、読み出し専用メモリ(ROM)、一回だけプログラム可能なメモリ(OTP)、および他のメモリ技術を含むことができる。
【0013】
1つの実施形態では、メモリ118は、付加的に、バッファを記憶するように構成されるメモリセルアレイ123を含むことができる。バッファは、段階的ガーベッジコレクション動作においてデータを記憶するように構成される。以下でより詳しく説明されるように、段階的ガーベッジコレクション動作では、書き込みコマンドから受け取られた新しいデータがバッファに格納され得る。本発明の実施形態に従って、バッファはRAM112および/または不揮発性メモリセルアレイ122に置かれてもよいということが理解されるべきである。不揮発性メモリセルアレイ122と同様に、メモリセルアレイ123はいろいろなメモリ構造および技術を含むことができる。メモリセルアレイ123はバッファリング動作のために構成されるので、メモリセルアレイは不揮発性メモリアレイ122より高速で、より経済的で、かつより信頼できる異なるメモリ構造を組み入れることができる。
【0014】
アレイロジック120は、メモリコントローラ110を不揮発性メモリセルアレイ122およびメモリセルアレイ123とインターフェイスさせ、そして、例えばアドレス指定、データ転送およびセンシング、および他のサポートを不揮発性メモリセルアレイおよびメモリセルアレイに提供することができる。不揮発性メモリセルアレイ122およびメモリセルアレイ123をサポートするために、アレイロジック120は行デコーダ、列デコーダ、電荷ポンプ、ワード線電圧発生器、ページバッファ、入出力バッファ、アドレスバッファ、および他の回路を含むことができる。
【0015】
図2は、メモリセルアレイのプレーンへの編成の簡略ブロック図である。1つ以上のメモリセルアレイは、複数のプレーンまたはサブアレイに分割され得る。図2の例では、1つのメモリセルアレイが4つのプレーン202〜205に分割されている。1,2,8,16,あるいはそれ以上など、他の数のプレーンが不揮発性メモリ記憶システムに存在し得ることが理解されるべきである。各プレーン202,203,204,または205は、それぞれのプレーン202〜205内に位置するブロック210〜213および220〜223のようなメモリセルのブロックに分割され得る。メモリセルのブロックは、物理的に一緒に消去可能な最小数のメモリセルである。並列性を高めるために、ブロックはより大きなメタブロック単位で操作され、その場合各プレーン202,203,204,または205からの1ブロックが互いに論理的にリンクされて1つのメタブロックを形成する。例えば、4つのブロック210〜213が互いに論理的にリンクされて1つのメタブロックを形成することができる。さらに、メタブロックを形成するために使用されるブロックは、プレーン202〜205のようなそれぞれのプレーン内のいろいろな位置からのブロックであり得る。例えば、それぞれのプレーン202〜205内のいろいろな位置からの4つのブロック220〜223は、論理的に互いにリンクされて他の1つのメタブロックを形成することができる。メタブロックは不揮発性メモリ記憶システム内の4つの論理プレーン202〜205の全てにわたって広がることができ、あるいは不揮発性メモリ記憶システムは1つ以上の異なるプレーン内の1つ以上のブロックから動的にメタブロックを形成することができる。
【0016】
図3は、メモリセルのページの簡略ブロック図である。ブロック210〜213のような各々のブロックは、メモリセルのページにさらに分割されている。図3に示されているように、各ブロック210,211,212,あるいは213は8ページP0〜P7に分割されている。代わりに、各ブロック210,211,212,あるいは213の中にメモリセルの16ページ、32ページ、あるいはもっと多くのページがあり得る。不揮発性メモリ記憶システムの動作並列性を高めるために、2つ以上のブロックの中のページが論理的にリンクされてメタページにされてもよい。例えば、4つのブロック210〜213の各々からの、P1のような1つずつのページでメタページが形成され得る。メタページは不揮発性メモリ記憶システム内の全てのプレーンにわたって広がることができ、あるいは不揮発性メモリ記憶システムは1つ以上の異なるプレーン内の1つ以上の別々のブロック内の1つ以上のページからメタページを動的に形成することができる。
【0017】
図4は、メモリセルのセクタの簡略ブロック図である。ページは1つ以上のセクタにさらに分割され得る。各ページ内のデータの量は、整数個の1つ以上のセクタのデータであることができ、各セクタは512バイトのデータを記憶することができる。図4は、2つのセクタ402および404に分割されたページ401を示す。各セクタ402または404は、512バイトのサイズであり得るデータ406と、データに関連付けられたオーバーヘッドデータ405とを含む。オーバーヘッドデータ405のサイズは16バイトであることができ、例えば、プログラミング中にデータ406から計算されたECCと、データに関連付けられた論理アドレスと、ブロックが消去され再プログラムされた総回数と、制御フラグと、動作電圧レベルと、データに関連付けられた他の情報とを記憶することができる。
【0018】
図5は、ホストと不揮発性メモリ記憶システムとの間の論理インターフェイスの簡略ブロック図である。連続的論理アドレス空間512はメモリに格納され得るデータのためにアドレスを提供する。ホストに見られる論理アドレス空間512は、データのクラスタのインクリメントに分割され得る。各クラスタは、例えば4セクタと64セクタとの間の数個のセクタのデータを含むことができる。
【0019】
図5に示されているように、ホスト上で実行されるアプリケーションプログラムは3つのデータファイル1,2,および3を作る。ファイル1,2,および3は、データの順序集合であることができて、一意の名前または他のリファレンスにより識別される。ホストは、他のファイルに既に配置されていない論理アドレス空間をファイル1に割り当てる。ここで、ファイル1は1つの連続的範囲の利用可能な論理アドレスを割り当てられているように示されている。
【0020】
ホストがファイル1の後にファイル2を作るとき、ホストは論理アドレス空間512の中の2つの異なる範囲の連続的アドレスを同様に割り当てる。ホストは、ファイル1,2,または3のようなファイルに連続的な論理アドレスを割り当てることはできず、既に他のファイルに割り当てられている論理アドレス範囲の間の論理アドレスのフラグメントを割り当てることができる。図5の例は、前にファイル1および2および他のデータに割り当てられていなかった論理アドレス空間512の中の1つの不連続的なアドレス範囲が他の1つのファイル3に割り当てられることを示している。
【0021】
ホストはファイル割り当てテーブル(FAT)を維持することによって論理アドレス空間512を追跡することができ、ここで変換によりファイル1〜3のような種々のデータファイルにホストによって割り当てられた論理アドレスが維持される。ホストはファイル1〜3を、不揮発性メモリ記憶システムがファイルを格納した物理的位置によってではなくて、それらの論理アドレスにより、参照する。一方、不揮発性メモリ記憶システムは、データが書き込まれている論理アドレスの部分によってファイル1〜3を参照するのであって、ファイルに割り当てられた論理アドレスによってファイルを参照するのではない。不揮発性メモリ記憶システムは、ホストにより提供された論理アドレスを、ホストからのデータが格納されるメモリセルアレイ502内の一意の物理アドレスに変換する。ブロック504は、これらの論理アドレス−物理アドレス変換のテーブルを表し、これは不揮発性メモリ記憶システムにより維持される。
【0022】
図6は、本発明の1つの実施形態に従う、段階的ガーベッジコレクションのための動作の概略のフローチャート図である。特定のホスト論理アドレスに格納されたデータはオリジナルの格納されているデータが陳腐化したときに新しいデータで上書きされ得るということが理解されるべきである。不揮発性メモリ記憶システムは、これに応じて、その新しいデータを更新ブロックに書き込み、そしてその新しいデータが格納された新しい物理的ブロックを特定するためにこれらの論理アドレスについて論理アドレス−物理アドレステーブルを変更する。これらの論理アドレスに存するオリジナルデータを含むブロックはその後消去され、付加的なデータの格納のために利用可能にされる。そのような消去は、書き込み動作の前に実行され得る。その結果として、メモリコントローラは、所与の論理アドレスに存するデータが新データが同じ論理アドレスに書き込まれた後にホストによって陳腐化あるいは無効にされたことを知る。従って、メモリの多数のブロックがある期間にわたって無効のデータを記憶しているということがあり得る。
【0023】
ブロックおよびメタブロックのサイズは増大しつつあり、この増大は、個々のデータ書込みの大きな部分が、1つのメタブロックの記憶容量より少ない、また多くの場合に1つのブロックのものよりも少ない量のデータを格納するという結果をもたらす。不揮発性メモリ記憶システムは、新しいデータを消去済みプールメタブロックに向け得るので、そのような向け方はブロックまたはメタブロックの部分が満たされないという結果をもたらし得る。新データが他の1つのメタブロックに格納されているあるデータの更新であるならば、他の1つのメタブロックからのデータの、新データメタページのものに連続する論理アドレスを有する残りの有効なメタページも新しいメタブロックに論理アドレス順にコピーされる。旧メタブロックは、他の有効なデータメタページを保つことができる。従って、個々のメタブロックのあるメタページのデータが陳腐化あるいは無効化され、同じ論理アドレスが異なるメタブロックに書き込まれて新データに取って代わられ得る。
【0024】
論理アドレス空間にデータを格納するための充分な物理メモリ空間を維持するために、そのようなデータは定期的にガーベッジコレクション(すなわち、圧縮または整理統合)され得る。一般に、ガーベッジコレクション動作は、ブロックから有効なデータを読み出してその有効なデータを新しいブロックに書き込むことを含み、その過程で無効なデータを無視する。例えば、図5のブロック図では、新データファイル3の作成は旧データファイル3を陳腐化する。旧データファイル3は、旧データファイル3により使用されていた物理容量を再生利用するために、消去され得る。しかし、そのような消去動作は、ファイル2と旧ファイル3とが同じ物理的ブロックに格納されていたならば、ガーベッジコレクション動作をトリガする。
【0025】
図6に戻って、不揮発性メモリ記憶システムは、書き込みコマンドに割り当てられたタイムアウト期間の中でガーベッジコレクション動作を実行することができる。ガーベッジコレクション動作が1タイムアウト期間内に完了され得なければ、本発明の1つの実施形態に従って、その1つのガーベッジコレクション動作は数個の異なる段階(または部分)に分割され得る。ここで、不揮発性メモリ記憶システムは、複数の書き込みコマンドに割り当てられたタイムアウト期間を用いてガーベッジコレクション動作の部分を実行する。換言すれば、不揮発性メモリ記憶システムは、1つのガーベッジコレクション動作の部分を実行するために、複数の書き込みコマンドに割り当てられたタイムアウト期間を利用する。
【0026】
図6に示されているように、新しいデータを書き込む書き込みコマンドが動作602で受け取られる。本願明細書で使用される“新しいデータ”という用語は、メモリに書き込まれるべき書き込みコマンドから不揮発性メモリ記憶システムにより受け取られるデータとして定義される。書き込みコマンドには、書き込みコマンドの実行を完了させるためのタイムアウト期間が割り当てられる。換言すれば、タイムアウト期間は、書き込みコマンドの実行のために割り当てられた期間である。割り当てられるタイムアウト期間の一例は250ミリ秒である。書き込みコマンドは、シングルセクタ書き込みコマンドまたはマルチセクタ書き込みコマンドであり得る。以下でより詳しく説明されるように、シングルセクタ書き込みコマンドでは、新しいデータは単一セクタとしてメモリ中のランダムなアドレスに書き込まれ得る。マルチセクタ書き込みコマンドでは、連続的な論理アドレスを有する新しいデータの複数のセクタがメモリに書き込まれる。
【0027】
1つのガーベッジコレクション動作がタイムアウト期間内に完了され得なければ、動作604に示されているように、ガーベッジコレクション動作の一部分が書き込みコマンドに割り当てられたタイムアウト期間内に実行される。ガーベッジコレクションの残りの部分は、後のタイムアウト期間に完了させられ得る。例えば、図7は、本発明の1つの実施形態に従う、複数の部分780および781に分割された1つのガーベッジコレクション動作の例の簡略ブロック図を示す。図7に示されているように、不揮発性メモリ記憶システムは、マルチセクタ書き込みコマンド704を受け取り、その後に新しいデータの複数のセクタ760〜762がメモリに格納されるべく受け取られる。データの各セクタ760,761,または762が受け取られた後にビジー信号702がアサートされる。不揮発性メモリ記憶システムは書き込みコマンドの実行を許すためにビジー信号702をアサートするが、それは(必要ならば)ガーベッジコレクション動作と他の動作とを含むことができる。ホストは、ビジー信号702がアサートされているときには他のコマンドまたは追加のデータを不揮発性メモリ記憶システムに送らない。ホストは書き込みコマンドの実行のために限られた一定量の時間(すなわち、タイムアウト期間750〜752)を与えるので、不揮発性メモリ記憶システムはデータの各セクタ760,761,または762が受け取られた後に限られた量の時間にわたってビジー信号702をアサートすることができる。ビジー信号がタイムアウト期間750,751,または752より長くアクティブであり続ければ、ホストは書き込みコマンドを反復するかあるいはプロセスをアボートすることができる。従って、不揮発性メモリ記憶システムは、タイムアウト期間750,751,または752より長くビジー信号702をアサートすることはできない。データの複数のセクタ760〜762の書き込みの完了後のビジー信号702の解除は、ホストが不揮発性メモリ記憶システムとさらに通信することを可能にする。
【0028】
図7をなお参照すると、ガーベッジコレクションの部分780および781は複数のタイムアウト期間750〜752の間に割り当てられ得る。換言すれば、不揮発性メモリ記憶システムは、1つのガーベッジコレクション動作の各部分780または781を実行するために各タイムアウト期間750,751,または752を利用することができる。例えば、1つのガーベッジコレクションの第1の部分780は第1のタイムアウト期間750の間に実行される。ここで、有効なデータの部分が第1のタイムアウト期間750中に1ブロックから他の1ブロックにコピーされ得る。第2のタイムアウト期間751において、第1のタイムアウト期間に開始された前のガーベッジコレクション動作が続けられる。不揮発性メモリ記憶システムは、前のガーベッジコレクションが完了するまで、タイムアウト期間751の間に前のガーベッジコレクション動作の第2の部分781を実行する。前のガーベッジコレクションは、有効なデータの残りの部分または最後の部分を1ブロックから他の1ブロックにコピーすることによって完了させられ得る。前のガーベッジコレクション動作が第2のタイムアウト期間751内に完了させられ得なければ、不揮発性メモリ記憶システムはガーベッジコレクション動作を完了させるために、第3のタイムアウト期間752のような後のタイムアウト期間を使用することができる。マルチセクタ書き込みコマンド704の終わりに、不揮発性メモリ記憶システムは、ストップコマンド706が受け取られた後に、データの全てのセクタ760〜762がメモリセルアレイに書き込まれるまでビジー信号をアサートすることができる。図7はマルチセクタ書き込みコマンドに関連する動作を示しているということに留意するべきである。以下でより詳しく説明されるように、実行されるガーベッジコレクション動作は、シングルセクタ書き込みコマンドとマルチセクタ書き込みコマンドとについては異なり得る。例えば、以下でより詳しく説明されるように、新しいデータを格納するために使用されるバッファのタイプは、受け取られた書き込みコマンドがシングルセクタ書き込みコマンドであるのか、それともマルチセクタ書き込みコマンドであるのかによる。
【0029】
図6に戻って、ガーベッジコレクション動作の一部分がタイムアウト期間内に実行された後、動作606で、書き込み動作から受け取られた新しいデータは不揮発性メモリ記憶システムに関連付けられたバッファに格納され得る。1つの実施形態では、バッファは不揮発性メモリセルアレイ(例えば、図1に示されている不揮発性メモリアレイ122)に関連付けられたデータ構造であり得る。データ構造の例は、書き込みバッファブロックのような不揮発性メモリセルアレイのブロックを含み、これは以下でより詳しく記載される。他の1つの実施形態では、バッファは揮発性メモリセルアレイのブロックであり得る。例えば、新しいデータは、不揮発性メモリ記憶システムに関連付けられたRAM(例えば、図1に示されているRAM112)に置かれたブロックに格納され得る。さらに他の1つの実施形態では、前に論じられたように、新しいデータは別のメモリセルアレイ(例えば、図1に示されているメモリセルアレイ123)に置かれたブロックに格納され得る。
【0030】
図8は、本発明の1つの実施形態に従う、段階的ガーベッジコレクションを実行するための詳細な動作のフローチャート図である。図8に示されているように、新しいデータをメモリに書き込むために書き込みコマンドが動作802で受け取られる。1つの実施形態では、書き込みコマンドはシングルセクタ書き込みコマンドである。ある環境では、以下でより詳しく説明されるように、他の1つの実施形態に従って、書き込みコマンドはマルチセクタ書き込みコマンドでもあり得る。書き込みコマンドが受け取られた後、不揮発性メモリ記憶システムは動作804でビジー信号をアサートする。
【0031】
書き込みコマンドが実行される前に、動作806でガーベッジコレクション期間の間にガーベッジコレクション動作の一部分が実行される。例えば、1つの実施形態では、1つ以上のブロックがガーベッジコレクション動作のために選択される。その1つ以上のブロックは有効なデータおよび/または無効なデータを含み得る。有効なデータは、ガーベッジコレクション期間中に第2のブロックにコピーされる。ガーベッジコレクション動作に割り当てられたガーベッジコレクション期間と、コピーされるべき有効なデータの量とにより、有効なデータの全部または有効なデータの一部分が第2のブロックにコピーされる。ガーベッジコレクション動作のために割り当てられたガーベッジコレクション期間は、
ガーベッジコレクション期間=タイムアウト期間−Tprog
と表現することができ、ここでタイムアウト期間は、前に論じられたように、固定された、限られた期間である。Tprogは、新しいデータをメモリに(例えば、バッファに)書き込むことに関連付けられた最大プログラミング時間であるか、あるいは不揮発性メモリ記憶システムが新しいデータをメモリに書き込むために必要とする最大時間である。その結果として、1つの実施形態では、不揮発性メモリ記憶システムは、有効なデータを1つ以上のブロックから第2のブロックにコピーするための時間の量を追跡する。不揮発性メモリ記憶システムは、時間がガーベッジコレクション期間を超える前にコピーをやめる。
【0032】
ガーベッジコレクション動作がガーベッジコレクション期間により完了させられ得なければ、書き込みコマンドに関連付けられた新しいデータは動作810で書き込みバッファブロックに書き込まれ得る。不揮発性メモリ記憶システムは、ガーベッジコレクション動作の前に、間に、または後に、新しいデータを書き込みバッファブロックに書き込むことができる。以下でより詳しく説明されるように、ガーベッジコレクション動作が完了すると直ぐに新しいデータは書き込みバッファブロックから更新ブロックにコピーされ得る。書き込みバッファブロックは不揮発性メモリ記憶システムによってメモリ内に維持される。一般に、書き込みバッファブロックは、不揮発性メモリ記憶システムにおいて新しいデータをバッファリングする。1つの実施形態では、書き込みバッファブロックは複数の論理アドレスにわたって広がる。他の1つの実施形態では、書き込みバッファブロックは1つの論理アドレス空間全体にわたって広がる。論理アドレス空間全体にわたって広がることで、書き込みバッファブロックは、不揮発性メモリ記憶システム全体にわたって全ての論理アドレスと論理アドレスの全てのグループ(すなわち、全ての論理グループ)に書き込まれようとしているデータを記憶することができる。換言すれば、複数の異なる論理グループと関連付けられた新しいデータが書き込みバッファブロックに格納され得る。論理グループは、メタブロックのサイズと同等であり得るサイズを有する論理アドレスのグループである。新しいデータは、順次にあるいは非順次に(すなわち、カオス的またはランダムな順序で)書き込みバッファブロックに書き込まれ得る。以下でより詳しく説明されるように、書き込みバッファブロックに書き込まれた新しいデータは後に他のブロック(例えば、更新ブロック)にコピーされるので、書き込みバッファブロックは一時的バッファとして役立つ。本願明細書で使用される“書き込みバッファブロッククリーニング”という用語は、書き込みバッファブロックに格納された新しいデータが他のブロックにコピーされることを意味する。
【0033】
1つの実施形態では不揮発性メモリ記憶システムが書き込みバッファブロックを段階的ガーベッジコレクション動作のために使用するということに留意するべきである。従って、書き込みバッファブロックは最も更新された新しいデータを記憶していないかもしれない。その結果として、新しいデータが後の読み出し動作で読み出されるならば、不揮発性メモリ記憶システムは、更新ブロックに格納されている新しいデータと書き込みバッファブロックに格納されている新しいデータとのどちらが最も新たに更新されたものであるかを調べる。読み出し動作は、その後、最も新たに更新された新しいデータにアクセスして戻す。他の1つの実施形態では、不揮発性メモリ記憶システムは、非段階的ガーベッジコレクション動作および段階的ガーベッジコレクション動作の両方のために書き込みバッファブロックを使用することができる。ここでは、書き込みバッファブロックは全ての書き込み動作のために使用される。換言すれば、非段階的ガーベッジコレクションおよび段階的ガーベッジコレクション動作からの新しいデータが書き込みバッファブロックに書き込まれる。従って、書き込みバッファブロックは、書き込みキャッシュのように動作し、従って最も新たに更新された新しいデータを包含する。
【0034】
書き込みバッファブロックに関連付けられたインデックス情報は、別のデータ構造に、あるいは書き込みバッファブロック自体の一部として、格納され得る。そのデータ構造はメモリコントローラのRAMに格納され得る。データ構造に格納されたインデックス情報は、書き込みバッファブロックに格納されたデータのトラッキングおよびアクセスを可能にする。インデックス情報は、例えば、書き込みバッファブロック内の位置への論理アドレスのマップまたは書き込みバッファブロックの有効な索引へのポインタを含むことができる。索引情報は、更新ブロックが閉じられた後あるいは書き込みバッファブロックへの数個の更新の後に、更新され得る。以下でより詳しく説明されるように、1つの実施形態では、書き込みバッファブロックはセクタレベルの索引のために構成され得る。他の1つの実施形態では、書き込みバッファブロックはページ境界索引のために構成され得る。書き込みバッファブロックは、満杯時に圧縮されることもできる。例えば、書き込みバッファブロックに格納されている有効なデータは新しいブロックにコピーされ、それは新しい書き込みバッファブロックとして参照されるべきあり、陳腐なエントリを有する既存の書き込みバッファブロックは消去される。本願明細書で使用される“書き込みバッファ圧縮”という用語は、書き込みバッファブロックに格納されている有効なデータが圧縮されることを意味する。
【0035】
図8をなお参照すると、新しいデータが書き込みバッファブロックに書き込まれ、かつガーベッジコレクション動作がガーベッジコレクション期間中に実行された後、不揮発性メモリ記憶システムは動作812でタイムアウト期間の前にビジー信号を解除する。従って、1つのガーベッジコレクション動作または1つのガーベッジコレクション動作の一部分を含む書き込みコマンドを実行するための合計時間はタイムアウト期間を越えない。タイムアウト期間内にガーベッジコレクション動作の一部分が実行されるのであれば、残りの部分は後のタイムアウト期間で完了させられる。ガーベッジコレクション動作が完了すると、ガーベッジコレクションされた1つ以上のブロックが消去されて付加的なデータの格納のために利用可能にされる。
【0036】
図9Aおよび9Bは、本発明の実施形態に従う、段階的にガーベッジコレクションされる順次更新ブロックを伴うメモリブロックの簡略ブロック図である。図9Aに示されているように、オリジナルのブロックA980と、関連する順次更新ブロックA982とがガーベッジコレクションのために選択される。一般に、書き込みコマンドから受け取られたデータは更新ブロックに書き込まれ得る。その中でデータが更新される各々の論理グループのために更新ブロックとして専用のメタブロックが割り当てられ得る。データの論理セクタは論理的に連続するセクタのセットを含む論理グループに格納されるということに留意するべきである。更新ブロックは、データを順次にあるいはカオス的順序で(すなわち、非順次に)受け入れるように管理され得る。順次更新ブロックA982のような順次更新ブロックは、全ての有効なセクタが現在同じメタブロックに置かれている論理グループにおいて1つ以上の物理ページを満たすデータを書き込むために書き込みコマンドがホストから受け取られたときに割り当てられるメタブロックであるということが理解されるべきである。順次更新ブロックに書き込まれるデータのセクタは、セクタがオリジナルブロックに書き込まれている対応する論理セクタに取って代わるように論理的にアドレス指定されて順次に書き込まれる。この論理グループの中の更新されるセクタは、順次更新ブロックが閉じられるかあるいはカオス的更新ブロックに変換されるまで、この順次更新ブロックに書き込まれ得る。順次更新ブロックは順次更新ブロックの最後の物理セクタ位置が書き込みされたときに閉じられたと見なされるということに留意するべきである。換言すれば、順次更新ブロックの閉鎖は、ホストにより書き込まれるかあるいはオリジナルブロックからコピーされる更新されるセクタデータによって順次更新ブロックが完全に満たされることに起因し得る。以下でより詳しく説明されるように、カオス的更新ブロックは、ホストにより書き込まれるデータのセクタが、更新される論理グループ内の前に書き込まれたデータのセクタに論理的に連続していないときに順次更新ブロックからの変換によって作られ得る。
【0037】
オリジナルブロックA980は無効なデータと有効なデータとを含むことができ、図9Aではそれぞれハッチパターンおよびドットパターンで表されている。オリジナルブロックA980からコピーされた有効なデータに加えて、順次更新ブロックA982はガーベッジコレクション動作の前に順次更新ブロックAに書き込まれた既存のデータ981を付加的に含むということに留意するべきである。新しいデータ983を書き込む書き込みコマンドが受け取られたとき、書き込みコマンドは順次更新ブロックA982の閉鎖を誘発し得るが、それは1種のガーベッジコレクション動作である。なぜならば、それは新しいデータが開いている更新ブロックを持っていない論理グループと関連付けられるかあるいは新しいデータがガーベッジコレクション動作を引き起こすからである。不揮発性メモリ記憶システムはビジー信号をアサートし、その後、第1のガーベッジコレクション期間970に達するまで有効なデータをオリジナルブロックA980から順次更新ブロックA982にコピーする。コピー中、不揮発性メモリ記憶システムは時間を追跡し、不揮発性メモリ記憶システムは第1のガーベッジコレクション期間970を超える前にコピー動作をやめる。図9Aに示されているように、オリジナルブロックA980に有効なデータがなお残っているので、ガーベッジコレクション動作はガーベッジコレクション期間970内に完了させられ得ない。その結果として、有効なデータの部分が順次更新ブロックA982にコピーされた後、新しいデータ983は、第1のタイムアウト期間に達する前に許された残っている時間内に書き込みバッファブロック908に書き込まれる。
【0038】
図9Bは、ガーベッジコレクション動作の残りの部分が第2のタイムアウト期間内に完了させられ得ることを示す。ここで、新しいデータ984を書き込む第2の書き込みコマンドが第1の書き込みコマンドの後に受け取られる。その結果として、第2の書き込みコマンドに第2のタイムアウト期間が割り当てられる。第2のタイムアウト期間の間に、残りの有効なデータがオリジナルブロックA980から順次更新ブロックA982にコピーされる。この例では、残っている有効なデータの全体(または有効なデータの最後の部分)が第2のガーベッジコレクション期間972内に順次更新ブロックA982にコピーされ得る。従って、ガーベッジコレクション動作は第2のタイムアウト期間内に完了させられ得る。順次更新ブロックA982は満杯にされているので、順次更新ブロックAは新しいオリジナルブロックA985または非更新ブロックに変換される。ガーベッジコレクション動作はこの第2のタイムアウト期間内に完了させられるので、オリジナルブロックA980は消去され、付加的なデータの格納に利用可能にされ得る。オリジナルブロックA980が消去された後、更新ブロックC986が割り当てられ、第2の書き込みコマンドから受け取られた新しいデータ984は新たに割り当てられた更新ブロックCに書き込まれる。更新ブロックC986は新しいオリジナルブロックA985に関連付けられるかもしれないしあるいは関連付けられないかもしれないということに留意するべきである。
【0039】
第2のタイムアウト期間内にガーベッジコレクションが完了した後、第2のタイムアウト期間内に利用可能な時間があれば、不揮発性メモリ記憶システムは書き込みバッファブロッククリーニング動作を行うことができる。書き込みバッファブロック908は、書き込みバッファブロックに書き込まれた新しいデータ983のような新しいデータが後に他のブロック(例えば、更新されたブロックC986)にコピーされるので、一時的バッファとして役立つ。図9Bの例では、第2のタイムアウト期間内に書き込みバッファブロッククリーニング動作のための時間がある。書き込みバッファブロック908に格納されている新しいデータ983は、新しいデータ984と同じ論理グループの中にある。従って、新しいデータ983は、ガーベッジコレクション動作の完了後に更新ブロックC986にコピーされる。書き込みバッファブロック908に格納されている新しいデータ983は無効としてマークされ、従って、書き込みバッファブロック内の付加的なスペースは付加的な新しいデータの格納のために利用可能にされ得る。書き込みバッファブロッククリーニング動作は全てのガーベッジコレクションの完了後に実行されるわけではないかもしれないということに留意するべきである。書き込みバッファブロッククリーニングのタイミングは以下でより詳しく説明される。
【0040】
図10A〜10Eは、本発明の実施形態に従う、段階的にガーベッジコレクションされるカオス的更新ブロックを伴うメモリブロックの簡略ブロック図である。図10Aに示されているように、オリジナルブロックA902およびカオス的更新ブロックA904がガーベッジコレクションのために選択される。一般に、カオス的更新ブロックA904のようなカオス的更新ブロックは、データのセクタが1つの論理グループ内でランダムな順序で、個々のセクタの任意の反復を伴って、更新されることを可能にする。カオス的更新ブロックは、ホストにより書き込まれるデータのセクタが、更新される論理グループ内の前に書き込まれたデータのセクタに論理的に連続していないときに順次更新ブロックからの変換によって作成され得る。この論理グループにおいてその後に更新される全てのデータのセクタは、グループ内でのそれらの論理セクタアドレスが何であっても、カオス的更新ブロック内の次の利用可能なセクタ位置に書き込まれる。
【0041】
ここで、オリジナルブロックA902およびカオス的更新ブロックA904は、図10Aにおいてハッチパターンおよびドットパターンでそれぞれ表される無効なデータおよび有効なデータを含む。新しいデータ901を書き込む書き込みコマンドが受け取られたとき、不揮発性メモリ記憶システムはビジー信号をアサートし、その後、第1のガーベッジコレクション期間950に達するまで有効なデータをオリジナルブロックA902およびカオス的更新ブロックA904から新しいブロックA906にコピーする。コピー中、不揮発性メモリ記憶システムは時間を追跡し、不揮発性メモリ記憶システムは第1のガーベッジコレクション期間950を超える前にコピー動作をやめる。図10Aに示されているように、オリジナルブロックA902およびカオス的更新ブロックA904に有効なデータがなお残っているので、ガーベッジコレクション動作は第1のガーベッジコレクション期間950内に完了させられ得ない。その結果として、有効なデータの部分が新しいブロックA906にコピーされた後、ガーベッジコレクション動作が始まる前に受け取られた新しいデータ901は第1のタイムアウト期間に達する前に書き込みバッファブロック908に書き込まれる。
【0042】
図10Bは、その次のタイムアウト期間におけるガーベッジコレクション動作の続きを示す。ここで、第1の書き込みコマンドの後に第2の書き込みコマンドが受け取られ、第2のタイムアウト期間が第2の書き込みコマンドに割り当てられる。第2のタイムアウト期間の間に、残りの有効なデータが、第2のガーベッジコレクション期間951に達するまでオリジナルブロックA902およびカオス的更新ブロックA904から新しいブロックA906にコピーされる。図10Bに示されているように、オリジナルブロックA902およびカオス的更新ブロックA904に有効なデータがなお残っているので、ガーベッジコレクション動作は第2のガーベッジコレクション期間951内に完了させられ得ない。従って、有効なデータの部分が新しいブロックA906にコピーされた後、ガーベッジコレクション動作が始まる前に受け取られた新しいデータ905は書き込みバッファブロック908に書き込まれる。
【0043】
図10Cは、ガーベッジコレクション動作の残りの部分が第3のタイムアウト期間内に完了させられ得ることを示す。第2の書き込みコマンド後に第3の書き込みコマンドが受け取られる。その結果として、第3のタイムアウト期間が第3の書き込みコマンドに割り当てられる。第3のタイムアウト期間の間に、残りの有効なデータがオリジナルブロックA902およびカオス的更新ブロックA904から新しいブロックA906にコピーされる。ここで、全ての残りの有効なデータ(あるいは有効なデータの最後の部分)が第3のガーベッジコレクション期間953内に新しいブロックA906にコピーされ得る。従って、ガーベッジコレクション動作は第3のタイムアウト期間内に完了させられ得る。ガーベッジコレクション動作がこの第3のタイムアウト期間に完了させられるので、オリジナルブロックA902およびカオス的更新ブロックA904は消去されて付加的なデータの格納のために利用可能にされ得る。オリジナルブロックA902およびカオス的更新ブロックA904が消去された後、新しい更新ブロックB962が割り当てられ、第3の書き込みコマンドから受け取られた新しいデータ909は新たに割り当てられた更新ブロックBに書き込まれる。新しいデータ909は書き込みバッファブロック908に書き込まれないが、それは、ガーベッジコレクション動作が完了して、その次のタイムアウト期間まで新しいデータをバッファリングする必要がないからである。この例では、書き込みバッファブロッククリーニング動作が実行され、その動作で、新しいデータ901,905,および909が同じ論理グループに属すると仮定して、書き込みバッファブロック908に格納されている新しいデータ901および905が更新ブロックB962にコピーされる。
【0044】
図10Dは、第4のタイムアウト期間中に行われる他の1つのガーベッジコレクション動作を示す。図10Dに示されているように、オリジナルブロックB960およびカオス的更新ブロックB962がガーベッジコレクションのために選択される。カオス的更新ブロックに変換されている更新ブロックB962は、第1、第2、および第3の書き込みコマンドに関連する新しいデータ901,905,および909を含む。第4の書き込みコマンドが受け取られたとき、不揮発性メモリ記憶システムはビジー信号をアサートし、その後に有効なデータをオリジナルブロックB960およびカオス的更新ブロックB962から新しいブロックB964にコピーする。図10Dに示されているように、有効なデータがオリジナルブロックB960およびカオス的更新ブロックB962になお残っているので、ガーベッジコレクション動作は第4のガーベッジコレクション期間952内に完了させられ得ない。有効なデータの部分が新しいブロックB964にコピーされた後、第4の書き込みコマンドから受け取られた新しいデータ903は書き込みバッファブロック908に書き込まれる。
【0045】
図10Eは、図10Dのガーベッジコレクション動作の残りの部分が第5のタイムアウト期間に完了させられ得ることを示す。第4の書き込みコマンド後に第5の書き込みコマンドが受け取られる。その結果として、第5のタイムアウト期間が第5の書き込みコマンドに割り当てられる。第5のタイムアウト期間の間に、残りの有効なデータがオリジナルブロックB960およびカオス的更新ブロックB962から新しいブロックB964にコピーされる。ここで、全ての残りの有効なデータ(あるいは有効なデータの最後の部分)が第5のガーベッジコレクション期間953内に新しいブロックB964にコピーされ得る。従って、始めに第4のタイムアウト期間中に実行されたガーベッジコレクション動作は第5のタイムアウト期間内に完了させられ得る。ガーベッジコレクション動作がこの第5のタイムアウト期間に完了させられるので、オリジナルブロックB960およびカオス的更新ブロックB962は消去されて、付加的なデータの格納のために利用可能にされる。オリジナルブロックB960およびカオス的更新ブロックB962が消去された後、更新ブロックC965が割り当てられ、第5の書き込みコマンドから受け取られた新しいデータ907は新たに割り当てられた更新ブロックCに書き込まれる。更新ブロックC965は新しいブロックB964に関連付けられるかもしれないしあるいは関連付けられないかもしれないということに留意するべきである。ここで、書き込みバッファブロッククリーニング動作が実行され、従って、新しいデータ903および新しいデータ907が同じ論理グループに属すると仮定して、書き込みバッファブロック908に格納されている新しいデータ903は更新ブロックC965にコピーされる。
【0046】
図11は、本発明の1つの実施形態に従う、書き込みバッファブロックへのアクセスを最適化する動作のフローチャート図である。書き込みバッファブロックの維持は、あるオーバーヘッドを導入する。オーバーヘッドを減少させるために、1つの実施形態では、書き込みバッファブロックへの書き込みが最小にされ得る。図11に示されているように、動作1002で書き込みコマンドが受け取られる。その後、不揮発性メモリ記憶システムは動作1004で実行時間を推定する。実行時間は、書き込みコマンドを実行する期間である。書き込みコマンドの実行は、例えば、新しいデータをメモリにプログラムする(すなわち、書き込む)ことと、ガーベッジコレクション動作を実行することと、他の動作の実行とを含み得る。例えば、実行時間は、有効なデータを1つ以上のブロックから他の1つのブロックにコピーするための期間と新しいデータを書き込む期間とを含み得る。
【0047】
不揮発性メモリ記憶システムは、実行時間を即時に推定する。不揮発性メモリ記憶システムは、種々のパラメータに基づいて実行時間を推定することができる。パラメータの例として、ガーベッジコレクションのタイプ(例えば、ブロック閉鎖、整理統合、圧縮、および他のタイプ)、ガーベッジコレクションされるべきブロック(例えば、更新ブロックおよび他のブロック)に格納されている有効なデータの量、不揮発性メモリ記憶システムに関連するプログラミング時間、ガーベッジコレクションされるブロックのサイズ(例えば、メタブロックのサイズ)、プレパディング(pre-padding) が必要か否か、プレパディングされるべきデータの量、パイプライニング、キャッシング、周波数設定、プログラム破損、および他のパラメータを含む。実行時間を推定する1つの例では、最初の1つ以上のブロックは12ページの有効なデータを含み、その12ページの有効なデータが1つの第2のブロックにコピーされる。不揮発性メモリ記憶システムは、12ページの有効なデータを読み出すために不揮発性メモリ記憶システムが必要とする時間の量とその有効なデータを第2のブロックに書き込むために不揮発性メモリ記憶システムが必要とする時間の量とを加えることによって実行時間を推定することができる。
【0048】
不揮発性メモリ記憶システムが実行時間を推定した後、その実行時間は動作1006でタイムアウト期間と比較される。動作1008に示されているように、その推定された実行時間がタイムアウト期間より短ければあるいは動作がタイムアウト期間内に完了させられ得るならば、ガーベッジコレクション動作が、引き起こされたならば、実行されてタイムアウト期間内に完了させられ、新しいデータが更新ブロックに書き込まれる。一方、動作1010に示されているように、推定された実行時間がタイムアウト期間を超える(すなわち、タイムアウト期間より大きいかあるいはタイムアウト期間に等しい)ならば、新しいデータは書き込みバッファブロックに書き込まれ、割り当てられたガーベッジコレクション期間は、書き込みバッファブロッククリーニングのためにあるいはガーベッジコレクション動作(引き起こされたならば)の一部分を実行するために使用され得る。1つの実施形態では、以下でより詳しく説明されるように、書き込みバッファブロッククリーニングは、タイムアウト期間内に残っている時間の間に、書き込みバッファブロック内の第1の有効なエントリから始まることができる。推定された実行時間がタイムアウト期間を超えるときに書き込みバッファブロックに書き込むことによって、書き込みバッファブロックへの書き込みはより少数となり、従って、書き込みバッファブロックを維持することに関連するオーバーヘッドは低減され得る。
【0049】
書き込みバッファブロック−ページ境界索引付け
1つの実施形態では、書き込みバッファブロックは複数のページを含むように構成され、書き込みバッファブロック内の各ページは索引付けされる。書き込みバッファブロックの各ページは、1セクタ以上の新しいデータを記憶するように構成される。従って、1ポインタが1ページを指すかあるいは参照し、1ページ内の複数のセクタは1ポインタにより参照され得るが、それは、ポインタが1つのページを指すのであってページ内の複数のセクタを指すのではないからである。ここで、同じメタページに属する新しいデータのセクタは、書き込みバッファブロックの同じメタページに書き込まれる。しかし、別々のメタページに属する新しいデータのセクタは書き込みバッファブロックの別々のメタページに書き込まれる。例えば、第1の書き込みコマンドに関連付けられた新しいデータの第1のセクタは書き込みバッファブロックの第1のページに書き込まれる。その後、新しいデータの第2のセクタが第2の書き込みコマンドから受け取られる。その新しいデータの第2のセクタが新しいデータの第1、第2と同じメタページに属するならば、第2のセクタは書き込みバッファブロックの第1のページに書き込まれる。一方、新しいデータの第2のセクタが別のメタページに属するならば、第2のセクタは書き込みバッファブロックの別のメタページに書き込まれる。
【0050】
書き込みバッファブロック−セクタレベル索引付け
他の1つの実施形態では、書き込みバッファブロックは複数のセクタを含むように構成され、書き込みバッファブロック内の1つ以上のセクタは索引付けされ得る。例えば、1ポインタが複数のセクタ(例えば、4セクタ)を指すかあるいは参照することができる。他の1つの例では、1ポインタが1セクタを指すかあるいは参照することができる。書き込みバッファブロック内の各セクタが索引付けされる例では、新しいデータは書き込みバッファブロックの単一のセクタに書き込まれる。他の1つの書き込みコマンドに関連付けられたその次の新しいデータは書き込みバッファブロック内の次の利用可能なセクタに書き込まれる。例えば、複数の書き込みコマンドからの新しいデータのセクタは、書き込みバッファブロック内の同じページの別々のセクタに書き込まれ得る。従って、書き込みバッファブロックは複数のセクタを含むように構成されることができ、各セクタは新しいデータの1つのセクタを記憶するように構成される。
【0051】
タイムアウトエラーなしでシングルセクタ書き込みを持続させるために、不揮発性メモリ記憶システムは、割り当てられたセクタが不揮発性メモリ記憶システムのメタブロックの総数より多いように数個のセクタを書き込みバッファブロックに割り当てることができる。書き込みバッファブロックが複数のメタブロックで構成され得るということが理解されるべきである。書き込みバッファブロックに割り当てられるセクタの数を計算するために、例えば、書き込みバッファブロックを構成するメタブロックの数Mは、
M=M1+(M1*M2)/(Metablock_Size-M2) (1.0)
と定義することができ、“Metablock_Size"は“メタブロックサイズ”を意味し、ここで、
M1=RoundUp.to.Nearest.Integer[(N-1)*(Total.Number.of.Metablocks.in.System)/(Mtablock_Size)]
であり、ここで“RoundUp.to.Nearest.Integer"は“最近の整数への切り上げ”を意味し、“Total.Number.of.Metablocks.in.System"は“システム内のメタブロックの総数”を意味し、
M2=RoundUp.to.Nearest.Integer[(N*Tgc)/(N*TO-Tgc)]
であり、
N=RoundDown.to.Nearest.Integer[(Tgc+TO)/TO]
であり、ここで“RoundDown.to.Nearest.Integer"は“最近の整数への切り下げ”を意味し、TOはタイムアウト期間であり、Tgc は1つの完全なガーベッジコレクション動作を実行するための時間である。書き込みバッファブロックに割り当てられるセクタの総数は、
セクタの総数=M*Metablock_Size (1.2)
として定義されることができ、ここでMは方程式1.0で定義され、“Metablock_Size"は、512セクタ/メタブロック、1,024セクタ/メタブロック、2,048セクタ/メタブロックあるいは他のサイズのようなセクタ数で表した各メタブロックのサイズである。一般に、方程式1.0および1.2は、書き込みバッファブロックに割り当てられるセクタの総数を不揮発性メモリ記憶システム内のメタブロックの総数より大きく定義する。メタブロックの総数に加えて、方程式1.0は、書き込みバッファブロックに関連するオーバーヘッドを維持するための1つ以上のメタブロック(またはセクタ)(以降、“オーバーヘッドメタブロック”または“オーバーヘッドセクタ”)を割り当てる。例えば、オーバーヘッドメタブロックの数を定める方程式1.0の部分は(M1*M2)/(Metablock_size-M2) であり、ここでオーバーヘッドセクタはオーバーヘッドブロックをメタブロックサイズと乗じることによって計算され得る。
【0052】
方程式1.2で定められる数のセクタを書き込みバッファブロックに割り当てることにより、連続的でランダムなシングルセクタ書き込みという最悪の場合のシナリオにおいてもタイムアウトエラーが回避され得る。タイムアウトエラーは、書き込みバッファブロックが満杯でガーベッジコレクション動作が完了させられ得ないときに生じ得る。最悪の場合のシナリオは、各シングルセクタ書き込みコマンドが別々の論理グループに書き込み、これによりどの書き込みでも1つの完全なガーベッジコレクション動作を引き起こすときに、生じる。この悪い場合のシナリオでは、セクタが蓄積されて書き込みバッファブロックに書き込まれる。この悪い場合のシナリオは、全てのタイムアウト期間で新しいデータの単一のセクタが書き込みバッファブロックに書き込まれると共に不揮発性メモリ記憶システムが1つの完全なガーベッジコレクション動作を実行するために必要な全ての時間(Tgc)で1セクタが無効とマークされるかのように見られ得る。さらに、書き込みバッファブロックが満たされるかあるいは満杯であるとき、書き込みバッファブロックは、新しいセクタが受け取られるけれども書き込みバッファブロッククリーニング動作が実行され得ないように、圧縮される。従って、1つの悪い場合のシナリオでは、ガーベッジコレクション期間がタイムアウト期間より大きいときには書き込みバッファブロックは空にされるより速く満たされる。
【0053】
しかし、書き込みバッファブロック内の複数のセクタが同じ論理グループに属するならば、1ガーベッジコレクション動作中に全てのセクタが整理統合され得る。充分なメタブロックMを書き込みバッファブロックに割り当てることにより、不揮発性メモリ記憶システム内のメタブロックの総数より多くのセクタ(またはエントリ)が書き込みバッファブロックに存在することになり、従って、複数の有効なセクタが書き込みバッファブロックに書き込まれている論理グループが存在することになる。書き込みバッファブロックの1つのセクタがガーベッジコレクションされるあるいは整理統合されるとき、同じ論理グループに属する全てのセクタが1つの新しい更新ブロックに整理統合され、書き込みバッファブロックにおいて無効とマークされる。従って、書き込みバッファブロックを空にする速度は充填速度より大きくなり、これにより書き込みバッファブロックが満杯であるかあるいは満たされることを防止する。従って、前述した最悪の場合のシナリオについてもタイムアウトエラーの発生が防止され得るように、所与の全てのTgcについて、不揮発性メモリ記憶システムは不揮発性メモリ記憶システム内のメタブロックの総数より大きい数のセクタを書き込みバッファブロックに割り当てる。
【0054】
図12は、本発明の1つの実施形態に従う、新しいデータをスクラッチパッドブロックに一時的に格納するための動作のフローチャート図である。不揮発性メモリ記憶システムがマルチレベルバッファリングまたは複数のバッファレベルを持つことができ、それがマルチレベルキャッシングの思想と類似し得るということが理解されるべきである。この実施形態では、書き込みバッファブロックは、多数のバッファレベルのうちの1つに関連付けられ得る。複数バッファレベルでは、新しいデータを書き込みバッファブロックに直ぐに書き込む代わりに、新しいデータは、書き込みバッファブロックに書き込まれる前に一時的に他の1つのバッファレベルに格納され得る。書き込みバッファブロックのバッファレベルと異なるバッファレベルでの新しいデータの一時的格納は、段階的ガーベッジコレクション動作における書き込みバッファブロックの使用に関連する複雑さ、オーバーヘッド、および待ち時間を低減することができる。バッファの1つの例はスクラッチパッドブロックである。スクラッチパッドブロックは、書き込みバッファブロックとは異なるバッファレベルに関連付けられ得る。例えば、スクラッチパッドブロックは第1のバッファレベルとして使用され、書き込みバッファブロックは第2のバッファレベルとして使用され得る。前に論じられたように、シングルセクタ索引付けでは、複数の書き込みコマンドからの新しいデータのセクタは、書き込みバッファブロック内の同じページの別々のセクタに書き込まれ得る。不揮発性メモリ記憶システムは部分的なページをプログラムできないかもしれないので、本発明の1つの実施形態に従って、新しいデータは、書き込みバッファブロックに転送される前に、スクラッチパッドブロックのような第1のバッファレベルに一時的に格納され得る。スクラッチパッドブロックはデータ更新ブロックの1つの形であって、その中では関連する1つの論理グループ内の論理セクタがランダムな順序で任意の量の反復を伴って更新され得る。スクラッチパッドブロックは、意図された論理セクタが終了したりあるいは物理ページ境界を越えたりしない書き込みコマンドにより作られる。スクラッチパッドブロックは部分的物理ページに相当するデータを包含することができるけれども部分的プログラム済みページデータは許されない。スクラッチパッドブロックは、不揮発性メモリ記憶システム内の各更新ブロックのために1つの有効なページのデータを保持することができる。不揮発性メモリ記憶システムは、例えば、8個の更新ブロックを割り当てられることができ、従って、スクラッチパッドブロックは9個の有効なページのデータを記憶することができる。
【0055】
図12に示されているように、書き込みコマンドから受け取られた新しいデータは始めに動作1102でスクラッチパッドブロックに書き込まれる。スクラッチパッドブロックは複数のページを含むことができ、各ページは複数のセクタを含む。新しいデータはスクラッチパッドブロックのセクタにコピーされる。動作1104で、新しいデータは、その後、書き込みバッファブロックに関連付けられているスクラッチパッドブロック内の1つのページが満杯であるとき、スクラッチパッドブロックから書き込みバッファブロックにコピーされる。従って、不揮発性メモリ記憶システムは、スクラッチパッドブロック内のページのセクタを、ページの全てのセクタが種々の書き込みコマンドからの新しいデータで満たされるまで、蓄積する。不揮発性メモリ記憶システムは、その後、そのページ全体(例えば、8セクタの新しいデータ)をスクラッチパッドブロックから書き込みバッファブロックに1プログラム動作でコピーする。書き込みバッファブロックはスクラッチパッドブロックより大きくてより多くの有効なデータを収容し得るので、スクラッチパッドブロックはより少量のガーベッジコレクションされるべきデータを有する。従って、スクラッチパッドブロックのガーベッジコレクションは書き込みバッファブロックのガーベッジコレクションより高速である。その結果として、新しいデータをスクラッチパッドブロックを経由して書き込みバッファブロックに書き込む動作は、新しいデータを書き込みバッファブロックに直接書き込む動作より速い。
【0056】
オーディオ/ビデオデータ
不揮発性メモリ記憶システムに格納されているオーディオ/ビデオファイル(以降、“オーディオ/ビデオデータ”)に関連付けられたデータにアクセスするホストは、他のデータと比べて所定の速度でオーディオ/ビデオデータを書き込む必要があるかもしれない。ホストがオーディオ/ビデオデータを不揮発性メモリ記憶システムにおよび/または不揮発性メモリ記憶システムからストリーミングするとき、ストリームに割り当てられる帯域幅は、所定の速度と一致するかあるいはそれを超える。オーディオ/ビデオデータのアクセス中に行われるガーベッジコレクション動作は、オーディオ/ビデオデータの書き込み性能を低下させることがある。従って、1つの実施形態では、マルチセクタ書き込みコマンドがオーディオ/ビデオデータに関連付けられていないかあるいはマルチセクタ書き込みコマンドがオーディオ/ビデオ書き込みの始まりにあるときには段階的ガーベッジコレクションが行われる。
【0057】
オーディオ/ビデオデータを他のデータから区別するために、1つの実施形態では、不揮発性メモリ記憶システムは、マルチセクタ書き込みコマンドに関連付けられたターゲット論理アドレスを参照することができる。オーディオ/ビデオデータは順次に書き込まれるので、逆方向ジャンプ(backwards jump)として解釈されるターゲット論理アドレスは、新しいデータがオーディオ/ビデオデータ(あるいはオーディオ/ビデオデータの始まり)ではないことを示すことができる。他の1つの実施形態では、不揮発性メモリ記憶システムは、新しいデータに関連付けられたセクタの数を参照することによってもオーディオ/ビデオデータを他のデータから区別することができる。オーディオ/ビデオデータは、記録単位(recording unit)と称される単位で格納され得る。オーディオ/ビデオデータに関連付けられる最小の記録単位の長さは32セクタであり得る。従って、32セクタの整数倍ではない新しいデータに関連付けられたセクタの数は、その新しいデータがオーディオ/ビデオデータではないことを示すことができる。記録単位に整列しないか、あるいは記録単位の始まりから始まらない受け取られた新しいデータも、その新しいデータがオーディオ/ビデオデータではないことを示すことができる。
【0058】
その結果として、次の条件、すなわち(1)マルチセクタ書き込みコマンドがガーベッジコレクション動作を引き起こす、(2)ターゲット論理アドレスが逆方向ジャンプとして解釈される、(3)ターゲット論理アドレスが記録単位境界と整列させられていない、(4)新しいデータに関連付けられたセクタの数が32の整数倍でなければ、ストップコマンドが受け取られた(すなわち、マルチセクタ書き込みコマンドの終わり)後、という条件のうちの1つが当てはまるならば、段階的ガーベッジコレクションが実行され得る。
【0059】
シングルセクタ書き込み
図13は、本発明の1つの実施形態に従う、シングルセクタ書き込みコマンドに関連付けられた不揮発性メモリ記憶システム動作のフローチャート図である。新しいデータは、メモリセルアレイ全体の中でランダムなアドレスにシングルセクタとして書き込まれ得る。ホストアクティビティとカードフラグメンテーションとにより、ホストは複数のセクタを有する長いファイルをシングルセクタ書き込みコマンドを用いてランダムな位置に書き込むことができる。限られた数の割り当てられた更新ブロックがあるので、これらのシングルセクタ書き込みは、更新ブロックを速やかに用いることができ、これにより、その後の書き込み動作のためにブロックをクリアするガーベッジコレクション動作を実行するように不揮発性メモリ記憶システムを促すことができる。
【0060】
図13に示されているように、シングルセクタ書き込みコマンドが動作1202で受け取られる。その後、そのシングルセクタ書き込みコマンドがガーベッジコレクション動作を引き起こすか否かについて動作1204で判定が行われる。そのシングルセクタ書き込みコマンドがガーベッジコレクション動作を引き起こさなければ、新しいデータは動作1220でメモリに書き込まれる。しかし、シングルセクタ書き込みコマンドがガーベッジコレクション動作を引き起こすならば、ペンディングしている段階的ガーベッジコレクション(すなわち、既に始まっているけれども、ガーベッジコレクションが完了させられ得ないために段階的に実行されたガーベッジコレクション動作)があるか否かについて他の1つの判定が動作1206で行われる。段階的ガーベッジコレクションがあるならば、動作1208でその段階的ガーベッジコレクション動作が続行される。換言すれば、前のガーベッジコレクション動作からの残りの部分が続行される。動作1210に示されているように、ガーベッジコレクション期間(例えば、タイムアウト期間とプログラミング時間との差)まであるいは段階的ガーベッジコレクションが完了させられるまで、段階的ガーベッジコレクション動作が実行される。
【0061】
段階的ガーベッジコレクション動作がガーベッジコレクション期間内に完了させられ得なければ、新しいデータは動作1218で書き込みバッファブロックに書き込まれる。ガーベッジコレクション期間に達していないかあるいは段階的ガーベッジコレクション動作がガーベッジコレクション期間の前に完了させられ得たならば、段階的ガーベッジコレクション動作を完了させた後であっても、シングルセクタ書き込みコマンドがなおガーベッジコレクション動作を引き起こすか否かについての他の1つの判定が動作1212で行われる。シングルセクタ書き込みコマンドがガーベッジコレクションを引き起こさなければ、新しいデータが動作1220でメモリに書き込まれる。一方、シングルセクタ書き込みコマンドがガーベッジコレクションを引き起こすならば、動作1216に示されているガーベッジコレクション期間まで動作1214でガーベッジコレクション動作が実行される。ガーベッジコレクション動作がガーベッジコレクション期間までに完了させられ得なければ、新しいデータは動作1218で書き込みバッファブロックに書き込まれる。そうでなければ、新しいデータは動作1220でメモリに書き込まれる。段階的ガーベッジコレクションがあってかつ現在の書き込みコマンドもガーベッジコレクション動作を引き起こすならば、動作1216に示されているガーベッジコレクション期間は動作1210に示されているガーベッジコレクション期間の続きであるということに留意するべきである。従って、段階的ガーベッジコレクションがあってかつ現在のシングルセクタ書き込みコマンドがガーベッジコレクション動作を引き起こすならば、両方の動作が総ガーベッジコレクション期間内に完了させられる。換言すれば、動作1208に示されている段階的ガーベッジコレクション動作と動作1214に示されているガーベッジコレクション動作との両方のために割り当てられる実行時間は、例えば、タイムアウト期間とプログラミング時間との差である。
【0062】
新しいデータが動作1220でメモリに書き込まれた後、書き込みバッファブロックに有効なエントリがあるか否かについて、またタイムアウト期間に達しているか否かについて、動作1224で判定が行われる。書き込みバッファブロックに有効なエントリがないかあるいはタイムアウト期間に達しているならば、動作は終了する。一方、有効なエントリがあってかつタイムアウト期間に達していなければ、書き込みバッファブロッククリーニング動作が動作1226でタイムアウト期間まで実行される。書き込みバッファブロック圧縮動作も、この期間中にタイムアウト期間まで実行され得る。
【0063】
マルチセクタ書き込み
図14は、本発明の1つの実施形態に従う、マルチセクタ書き込みコマンドに関連付けられた不揮発性メモリ記憶システム動作のフローチャート図である。メモリセルアレイに書き込まれる大抵の新しいデータは、連続した順次論理アドレス空間を占める大きなデータファイルである。ホストアクティビティにより、ホストは大きなデータファイルをマルチセクタ書き込みコマンドを用いて書き込むことができる。そのような新しいデータは、複数のタイムアウト期間を有する新しいデータの複数のセクタを含む。図7は、マルチセクタ書き込みコマンドの例を示す。一般に、複数のタイムアウト期間が利用可能なので、新しいデータは、書き込みバッファブロックの代わりに、割り当てられた更新ブロックに書き込まれ得る。従って、ガーベッジコレクションは、普通は、マルチセクタ書き込みコマンドに割り当てられた複数のタイムアウト期間内に完了させられ得るので、書き込みバッファブロックは普通は複数の書き込みコマンドで使用されない。
【0064】
図14に示されているように、マルチセクタ書き込みコマンドが動作1302で受け取られる。その後、動作1304で、新しいデータのセクタは格納され(あるいはバッファリングされ)、必要ならばガーベッジコレクション動作が実行され得る。ここで、複数のタイムアウト期間がマルチセクタ書き込みコマンドに割り当てられ、1ガーベッジコレクション動作は普通はマルチセクタ書き込みコマンドの終わりまでに完了させられ得るので、不揮発性メモリ記憶システムは書き込みバッファブロックを利用しないかもしれない。従って、書き込みバッファブロックの代わりに、不揮発性メモリ記憶システムは、新しいデータを不揮発性メモリ記憶システムに関連付けられているRAMに、あるいは不揮発性メモリ記憶システムに関連付けられている他のメモリに格納することができるのと同時に、割り当てられたタイムアウト期間を用いてガーベッジコレクション動作を実行するために新しいデータのセクタとセクタとの間にビジー信号をアサートする。
【0065】
ホストセクタがバッファリングされた後、新しいデータのN個未満のセクタが受け取られたのか否かについて動作1306で判定が行われる。前に論じられたように、ガーベッジコレクション動作は、普通は、マルチセクタ書き込み動作に割り当てられた複数のタイムアウト期間内に完了させられ得るので、マルチセクタ書き込みコマンドに関連付けられた新しいデータは書き込みバッファブロックに書き込まれないかもしれない。しかし、1つの実施形態では、ガーベッジコレクション動作を完了させるために充分なタイムアウト期間が割り当てられなければ、書き込みバッファブロックがマルチセクタ書き込みコマンドで使用され得る。従って、ガーベッジコレクション動作が引き起こされるか否かに関わらず、
N=round-down to nearest integer [(Tgc+TO)/TO] (2.0)
として定義された新しいデータの少なくともN個のセクタを伴うマルチセクタ書き込みコマンドが書き込みバッファブロックにではなくて更新ブロックに直接書き込まれ得る。ここで“round-down to nearest integer" は、“最近の整数への切り捨て”を意味する。方程式2.0は、書き込みコマンドがシングルセクタ書き込みコマンドであるときあるいは不揮発性メモリ記憶システムがマルチセクタ書き込みコマンドで新しいデータのN個未満のセクタを受け取ったときに、新しいデータが書き込みバッファブロックに書き込まれることを示す。
【0066】
なお図14を参照すると、N個未満のセクタが受け取られたならば、不揮発性メモリ記憶システムは、図13に示されているシングルセクタ書き込みコマンド動作に従ってマルチセクタ書き込みコマンドを操作する。しかし、新しいデータのN個より多くのセクタが受け取られたならば、書き込みバッファブロッククリーニング動作が実行され得るか否かについて動作1310で判定が行われる。例えば、動作1302で受け取られた新しいデータがガーベッジコレクションを引き起こさなかったならば、あるいは新しいデータが割り当てられたガーベッジコレクション期間の前に完了させられたガーベッジコレクションを引き起こしたのであれば、書き込みバッファブロッククリーニング動作が実行され得る。しかし、新しいデータが記録単位境界に整列させられているならば、新しいデータはオーディオ/ビデオデータであるかもしれないので、書き込みバッファブロックリーニングは実行されない。書き込みバッファブロッククリーニング動作が実行され得なければ、新しいデータは動作1314でメモリに書き込まれる。書き込みバッファブロッククリーニング動作が実行され得るならば、マルチセクタ書き込みコマンド実行中に不揮発性メモリ記憶システムによりアサートされた合計のビジー期間がTgc−Tprogになるまで、動作1312で段階的ガーベッジコレクション動作および書き込みバッファブロッククリーニング動作が実行される。その後、新しいデータは動作1314で不揮発性メモリセルアレイに書き込まれる。この実施形態では、動作1312に示されている書き込みバッファブロッククリーニングは、Tgc−Tprogの期間まで、4タイムアウト期間、5タイムアウト期間、および他の期間などのいろいろな期間の間にマルチセクタ書き込みコマンドから受け取られた始めの数個のセクタの中間(例えば、第2のセクタと第3のセクタとの間)に、実行され得る。
【0067】
書き込みコマンドが実行された後、新しいデータが32セクタの整数倍であるか否かについて動作1316で判定が行われる。新しいデータが32セクタの整数倍であれば、新しいデータはオーディオ/ビデオ関連であるかも知れず、動作は終了する。一方、新しいデータが32セクタの整数倍でなければ、動作1318で、書き込みバッファブロック内に有効なエントリがあるか否かについて、またタイムアウト期間に達しているか否かについて、判定が行われる。有効なエントリが書き込みバッファブロック内にないかあるいはタイムアウト期間に達していれば、動作は終了する。一方、有効なエントリがあってかつタイムアウト期間に達していなければ、動作1320でタイムアウト期間まで書き込みバッファブロッククリーニング動作が実行される。
【0068】
前述した実施形態は、段階的ガーベッジコレクションのための方法および/またはシステムを提供する。ガーベッジコレクション動作は複数の段階に分割されることができ、その複数の段階は複数のタイムアウト期間にわたって実行される。ガーベッジコレクション動作を分割することにより、ガーベッジコレクション動作の各段階はタイムアウト期間内に完了させられることができ、これによりタイムアウトエラーを防止する。
【0069】
前述した実施形態は明確な理解を目的としてある程度詳細に記載されているけれども、実施形態は提示された細目に限定されない。実施形態を実現する多くの代わりの方法がある。従って、開示された実施形態は実例となるものであって制限するものではないと見なされるべきであり、実施形態は本願明細書で与えられた細目に限定されるべきではなくて、添付されている特許請求の範囲の範囲および同等物の中で改変され得る。特許請求の範囲で明示的に述べられていない限り、特許請求の範囲において要素および/または動作は動作の特定の順序を示唆しない。
【特許請求の範囲】
【請求項1】
不揮発性メモリ記憶システムを動作させる方法であって、
複数のデータを書き込む書き込みコマンドを受け取るステップであって、前記書き込みコマンドが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
前記タイムアウト期間内にガーベッジコレクション動作の一部分を実行するステップと、
前記複数のデータを前記不揮発性メモリ記憶システムに関連付けられているバッファに格納するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記バッファは、書き込みバッファブロックである方法。
【請求項3】
不揮発性メモリ記憶システムを動作させる方法であって、
複数のデータを書き込む書き込みコマンドを受け取るステップであって、前記書き込みコマンドが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
ビジー信号をアサートするステップと、
ガーベッジコレクション期間の間に複数の有効なデータの一部分を1つ以上の第1のブロックから第2のブロックにコピーするステップと、
複数の論理アドレスにわたって広がるように構成された第3のブロックに前記複数のデータを書き込むステップと、
前記タイムアウト期間の前に前記ビジー信号を解除するステップと、
を含む方法。
【請求項4】
請求項3記載の方法において、
前記不揮発性メモリ記憶システムにおいて前記第3のブロックを維持するステップをさらに含む方法。
【請求項5】
請求項3記載の方法において、
前記複数の有効なデータの一部分をコピーするステップは、
前記複数の有効なデータの一部分を1つ以上の第1のブロックから第2のブロックにコピーするステップのための時間を追跡するステップと、
前記時間が前記ガーベッジコレクション期間を超える前に前記複数の有効なデータの一部分をコピーするステップを止めるステップと、
を含む方法。
【請求項6】
請求項3記載の方法において、
前記複数の有効なデータの一部分をコピーするステップおよび前記複数のデータを第3のブロックに書き込むステップの前に前記書き込みコマンドの実行のための実行時間を推定するステップをさらに含み、
前記実行時間が前記タイムアウト期間を越える場合、前記複数の有効なデータの一部分がコピーされかつ前記複数のデータが前記第3のブロックに書き込まれる方法。
【請求項7】
請求項3記載の方法において、
前記不揮発性メモリ記憶システムは複数のバッファリングレベルを含み、前記第3のブロックは前記複数のバッファリングレベルのうちの1つに関連付けられる方法。
【請求項8】
請求項3記載の方法において、
前記複数のデータを書き込むステップは、
前記複数のデータをスクラッチパッドブロックに書き込むステップと、
前記複数のデータを前記スクラッチパッドブロックから前記第3のブロックにコピーするステップと、
を含む方法。
【請求項9】
請求項8記載の方法において、
前記複数のデータは、前記スクラッチパッドブロックに関連付けられたセクタにコピーされる方法。
【請求項10】
請求項8記載の方法において、
前記複数のデータは、前記スクラッチパッドブロックに関連付けられた、前記複数のデータを含むように構成されたページが満杯であるときに、前記スクラッチパッドブロックから前記第3のブロックにコピーされる方法。
【請求項11】
請求項8記載の方法において、
前記スクラッチパッドブロックは第1のバッファレベルに関連付けられ、前記第3のブロックは第2のバッファレベルに関連付けられる方法。
【請求項12】
請求項3記載の方法において、
前記複数のデータを書き込むステップは、
前記複数のデータを第1のバッファレベルに書き込むステップと、
前記複数のデータを前記第1のバッファレベルから前記第3のブロックにコピーするステップであって、前記第3のブロックが第2のバッファレベルに関連付けられるステップと、
を含む方法。
【請求項13】
請求項3記載の方法において、
前記ガーベッジコレクション期間は、前記タイムアウト期間と前記複数のデータを書き込むステップに関連付けられたプログラミング時間との差である方法。
【請求項14】
請求項3記載の方法において、
前記第3のブロックは、書き込みバッファブロックである方法。
【請求項15】
請求項3記載の方法において、
前記第3のブロックは、論理アドレス空間全体にわたって広がるように構成される方法。
【請求項16】
請求項3記載の方法において、
前記第3のブロックは複数のページを含み、前記複数のページの各々は索引付けされる方法。
【請求項17】
請求項3記載の方法において、
前記第3のブロックは複数のセクタを含み、前記複数のセクタの各々は索引付けされる方法。
【請求項18】
請求項3記載の方法において、
前記書き込みコマンドは、シングルセクタ書き込みコマンドである方法。
【請求項19】
不揮発性メモリ記憶システムを動作させる方法であって、
第1の複数のデータを書き込む第1のシングルセクタ書き込みコマンドを受け取るステップであって、前記第1のシングルセクタ書き込みコマンドが前記第1のシングルセクタ書き込みコマンドの第1の実行を完了させるための第1のタイムアウト期間を割り当てられるステップと、
第1のビジー信号をアサートするステップと、
ガーベッジコレクション期間の間に複数の有効なデータの第1の部分を1つ以上の第1のブロックから第2のブロックにコピーするステップと、
複数の論理アドレスにわたって広がるように構成された書き込みバッファブロックに前記第1の複数のデータを書き込むステップと、
前記第1のタイムアウト期間の前に前記第1のビジー信号を解除するステップと、
第2の複数のデータを書き込む第2のシングルセクタ書き込みコマンドを受け取るステップであって、前記第2のシングルセクタ書き込みコマンドが前記第1のシングルセクタ書き込みコマンドを受け取るステップの後に受け取られ、前記第2のシングルセクタ書き込みコマンドが前記第2のシングルセクタ書き込みコマンドの第2の実行を完了させるための第2のタイムアウト期間を割り当てられるステップと、
第2のビジー信号をアサートするステップと、
前記ガーベッジコレクション期間の間に前記複数の有効なデータの第2の部分を前記1つ以上の第1のブロックから前記第2のブロックにコピーするステップと、
前記第2のタイムアウト期間の前に前記第2のビジー信号を解除するステップと、
を含む方法。
【請求項20】
請求項19記載の方法において、
前記第2の複数のデータを前記書き込みバッファブロックに書き込むステップをさらに含む方法。
【請求項21】
請求項19記載の方法において、
前記第2の複数のデータを更新ブロックに書き込むステップをさらに含む方法。
【請求項22】
請求項19記載の方法において、
前記複数の有効なデータの前記第2の部分をコピーするステップの後に前記1つ以上の第1のブロックを消去するステップをさらに含む方法。
【請求項23】
請求項22記載の方法において、
前記複数の有効なデータの前記第2の部分が前記複数の有効なデータの最後の部分である場合、前記1つ以上の第1のブロックは消去される方法。
【請求項24】
請求項19記載の方法において、
前記第1の複数のデータを前記書き込みバッファブロックから更新ブロックにコピーするステップをさらに含む方法。
【請求項25】
請求項19記載の方法において、
前記第1の複数のデータを前記書き込みバッファブロックに書き込むステップは、
前記第1の複数のデータをスクラッチパッドブロックのセクタに書き込むステップであって、前記セクタに関連付けられたページが複数のセクタを含むステップと、
前記ページに関連付けられた前記複数のセクタが満たされたときに前記ページを前記書き込みバッファブロックにコピーするステップと、
を含む方法。
【請求項26】
請求項19記載の方法において、
前記書き込みバッファブロックは、セクタレベル索引のために構成される方法。
【請求項27】
請求項19記載の方法において、
前記書き込みバッファブロックは、ページ境界索引のために構成される方法。
【請求項28】
請求項19記載の方法において、
前記書き込みバッファブロックは複数のセクタと複数のオーバーヘッドセクタとを含み、前記複数のセクタは前記不揮発性メモリ記憶システム内のメタブロックの総数より大きい方法。
【請求項29】
不揮発性メモリ記憶システムであって、
記憶システムファームウェアを記憶するように構成されたメモリと、
バッファを維持するように構成された不揮発性メモリセルアレイと、
前記メモリおよび前記不揮発性メモリセルアレイと通信するプロセッサであって、前記メモリに格納されている前記記憶システムファームウェアを実行するように構成されたプロセッサと、を備え、
前記記憶システムファームウェアは、
複数のデータを前記不揮発性メモリセルアレイに書き込む書き込みコマンドを受け取るステップであって、前記書き込みコマンドが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
前記タイムアウト期間内にガーベッジコレクション動作の一部分を実行するステップと、
前記複数のデータを前記バッファに格納するステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項30】
不揮発性メモリ記憶システムであって、
記憶システムファームウェアを記憶するように構成されたメモリと、
複数の論理アドレスにわたって広がるように構成された書き込みバッファブロックを維持するように構成された不揮発性メモリセルアレイと、
前記メモリおよび前記不揮発性メモリセルアレイと通信するプロセッサであって、前記メモリに格納されている前記記憶システムファームウェアを実行するように構成されたプロセッサと、を備え、
前記記憶システムファームウェアは、
複数のデータを前記不揮発性メモリセルアレイに書き込む書き込みコマンドを受け取るステップであって、前記書き込みコマンドが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
ビジー信号をアサートするステップと、
ガーベッジコレクション期間の間にガーベッジコレクション動作の一部分を実行するステップと、
前記複数のデータを前記書き込みバッファブロックに書き込むステップと、
前記タイムアウト期間の前に前記ビジー信号を解除するステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項31】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記ガーベッジコレクション期間の間にガーベッジコレクション動作の一部分を実行するステップを実行するための前記プログラム命令は、前記ガーベッジコレクション期間の間に複数の有効なデータの部分を1つ以上の第1のブロックから第2のブロックにコピーするステップを実行するためのプログラム命令を含む方法。
【請求項32】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、
前記ガーベッジコレクション動作の一部分を実行するステップおよび前記複数のデータを前記書き込みバッファブロックに書き込むステップの前に前記書き込みコマンドの実行のための実行時間を推定するステップを実行するためのプログラム命令をさらに含み、
前記実行時間が前記タイムアウト期間より大きければ、前記ガーベッジコレクション動作の一部分が実行されかつ前記複数のデータが前記書き込みバッファブロックに書き込まれる方法。
【請求項33】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記複数のデータを前記書き込みバッファブロックに書き込むステップを実行するための前記プログラム命令は、
前記複数のデータをスクラッチパッドブロックに書き込むステップと、
前記複数のデータを前記スクラッチパッドブロックから前記書き込みバッファブロックにコピーするステップと、を実行するためのプログラム命令を含む方法。
【請求項34】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは複数のページを含み、前記複数のページの各々は索引付けされる方法。
【請求項35】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは複数のセクタを含み、前記複数のセクタの各々は索引付けされる方法。
【請求項36】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは、複数のブロックを含む方法。
【請求項37】
不揮発性メモリ記憶システムであって、
記憶システムファームウェアを記憶するように構成された読み出し専用メモリ(ROM)と、
複数の論理アドレスにわたって広がるように構成された書き込みバッファブロックを維持するように構成されたメモリセルアレイと、
不揮発性メモリセルアレイと、
前記ROM、前記メモリセルアレイ、および前記不揮発性メモリセルアレイと通信するプロセッサであって、前記ROMに格納されている前記記憶システムファームウェアを実行するように構成されたプロセッサと、を備え、
前記記憶システムファームウェアは、
第1の複数のデータを前記不揮発性メモリセルアレイに書き込む第1の書き込みコマンドを受け取るステップであって、前記第1の書き込みコマンドは前記第1の書き込みコマンドの第1の実行を完了させるための第1のタイムアウト期間を割り当てられるステップと、
第1のビジー信号をアサートするステップと、
ガーベッジコレクション期間の間に複数の有効なデータの第1の部分を1つ以上の第1のブロックから第2のブロックにコピーするステップと、
前記第1の複数のデータを前記書き込みバッファブロックに書き込むステップと、
前記第1のタイムアウト期間の前に前記第1のビジー信号を解除するステップと、
第2の複数のデータを前記不揮発性メモリセルアレイに書き込む第2の書き込みコマンドを受け取るステップであって、前記第2の書き込みコマンドは前記第1の書き込みコマンドを受け取るステップの後に受け取られ、かつ前記第2の書き込みコマンドの第2の実行を完了させるための第2のタイムアウト期間を割り当てられるステップと、
第2のビジー信号をアサートするステップと、
前記ガーベッジコレクション期間の間に前記複数の有効なデータの第2の部分を前記1つ以上の第1のブロックから前記第2のブロックにコピーするステップと、
前記第2のタイムアウト期間の前に前記第2のビジー信号を解除するステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項38】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、前記第2の複数のデータを前記書き込みバッファブロックに書き込むステップを実行するためのプログラム命令をさらに含む不揮発性メモリ記憶システム。
【請求項39】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、前記第2の複数のデータを更新ブロックに書き込むステップを実行するためのプログラム命令をさらに含む不揮発性メモリ記憶システム。
【請求項40】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、前記複数の有効なデータの前記第2の部分が前記複数の有効なデータの最後の部分である場合、前記1つ以上の第1のブロックを消去するステップを実行するためのプログラム命令をさらに含む不揮発性メモリ記憶システム。
【請求項41】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、前記第1の複数のデータを前記書き込みバッファブロックから更新ブロックにコピーするステップを実行するためのプログラム命令をさらに含む不揮発性メモリ記憶システム。
【請求項42】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは複数のページを含み、前記第1の複数のデータは前記書き込みバッファブロックに関連付けられた第1のページに書き込まれ、前記第2の複数のデータは前記書き込みバッファブロックに関連付けられた第2のページに書き込まれる不揮発性メモリ記憶システム。
【請求項43】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは複数のセクタを含み、前記第1の複数のデータは前記書き込みバッファブロックに関連付けられた第1のセクタに書き込まれ、前記第2の複数のデータは前記書き込みバッファブロックに関連付けられた第2のセクタに書き込まれる不揮発性メモリ記憶システム。
【請求項44】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記不揮発性メモリ記憶システムは複数のバッファリングレベルを含み、前記書き込みバッファブロックは前記複数のバッファリングレベルの1つに関連付けられる不揮発性メモリ記憶システム。
【請求項45】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記第1の複数のデータを前記書き込みバッファブロックに書き込むステップを実行するための前記プログラム命令は、
前記第1の複数のデータをスクラッチパッドブロックのセクタに書き込むステップであって、前記セクタに関連付けられたページが複数のセクタを含むステップと、
前記ページに関連付けられた前記複数のセクタが満たされたときに前記ページを前記書き込みバッファブロックにコピーするステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項46】
請求項45記載の不揮発性メモリ記憶システムにおいて、
前記スクラッチパッドブロックは第1のバッファレベルに関連付けられ、前記書き込みバッファブロックは第2のバッファレベルに関連付けられる不揮発性メモリ記憶システム。
【請求項47】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記複数のデータを書き込むステップを実行するための前記プログラム命令は、
前記複数のデータを第1のバッファレベルに書き込むステップと、
前記複数のデータを前記第1のバッファレベルから前記書き込みバッファブロックにコピーするステップであって、前記書き込みバッファブロックが第2のバッファレベルに関連付けられるステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項48】
不揮発性メモリ記憶システムであって、
記憶システムファームウェアを記憶するように構成されたメモリと、
複数の論理アドレスにわたって広がるように構成された書き込みバッファブロックを維持するように構成された不揮発性メモリセルアレイと、
前記メモリおよび前記不揮発性メモリセルアレイと通信するプロセッサであって、前記メモリに格納されている前記記憶システムファームウェアを実行するように構成されたプロセッサと、を備え、
前記記憶システムファームウェアは、
複数のデータを前記不揮発性メモリセルアレイに書き込む書き込みコマンドを受け取るステップであって、前記不揮発性メモリセルアレイが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
ビジー信号をアサートするステップと、
ガーベッジコレクション期間の間に複数の有効なデータの一部分を1つ以上の第1のブロックから第2のブロックにコピーするステップと、
前記複数のデータを前記書き込みバッファブロックに書き込むステップと、
前記タイムアウト期間の前に前記ビジー信号を解除するステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項49】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記複数の有効なデータの一部分をコピーするステップを実行するための前記プログラム命令は、
前記複数の有効なデータの一部分を前記1つ以上の第1のブロックから前記第2のブロックにコピーするための時間を追跡するステップと、
前記時間が前記ガーベッジコレクション期間を超える前に前記複数の有効なデータの一部分をコピーするステップを止めるステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項50】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、
前記複数の有効なデータをコピーするステップおよび前記複数のデータを書き込むステップの前に前記書き込みコマンドの実行のための実行時間を推定するステップを実行するためのプログラム命令をさらに含み、
前記実行時間が前記タイムアウト期間を越える場合、前記複数の有効なデータの一部分がコピーされかつ前記複数のデータが前記書き込みバッファブロックに書き込まれる不揮発性メモリ記憶システム。
【請求項51】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記複数のデータの一部分を書き込むステップを実行するための前記プログラム命令は、
複数のセクタを含むページを含むスクラッチパッドブロックを提供するステップと、
前記複数のデータを前記ページに関連付けられているセクタに書き込むステップと、
前記ページが満杯であるときに前記ページを前記スクラッチパッドブロックから前記書き込みバッファブロックにコピーするステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項52】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記ガーベッジコレクション期間は、前記タイムアウト期間と前記複数のデータを書き込むステップに関連付けられたプログラミング時間との差である不揮発性メモリ記憶システム。
【請求項53】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは、論理アドレス空間全体にわたって広がるように構成される不揮発性メモリ記憶システム。
【請求項54】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは、セクタレベル索引のために構成される不揮発性メモリ記憶システム。
【請求項55】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは、ページ境界索引のために構成される不揮発性メモリ記憶システム。
【請求項56】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは複数のセクタを前記書き込みバッファブロックに割り当てるステップを実行するためのプログラム命令をさらに含み、前記複数のセクタは前記不揮発性メモリ記憶システム内のメタブロックの総数より大きい不揮発性メモリ記憶システム。
【請求項1】
不揮発性メモリ記憶システムを動作させる方法であって、
複数のデータを書き込む書き込みコマンドを受け取るステップであって、前記書き込みコマンドが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
前記タイムアウト期間内にガーベッジコレクション動作の一部分を実行するステップと、
前記複数のデータを前記不揮発性メモリ記憶システムに関連付けられているバッファに格納するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記バッファは、書き込みバッファブロックである方法。
【請求項3】
不揮発性メモリ記憶システムを動作させる方法であって、
複数のデータを書き込む書き込みコマンドを受け取るステップであって、前記書き込みコマンドが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
ビジー信号をアサートするステップと、
ガーベッジコレクション期間の間に複数の有効なデータの一部分を1つ以上の第1のブロックから第2のブロックにコピーするステップと、
複数の論理アドレスにわたって広がるように構成された第3のブロックに前記複数のデータを書き込むステップと、
前記タイムアウト期間の前に前記ビジー信号を解除するステップと、
を含む方法。
【請求項4】
請求項3記載の方法において、
前記不揮発性メモリ記憶システムにおいて前記第3のブロックを維持するステップをさらに含む方法。
【請求項5】
請求項3記載の方法において、
前記複数の有効なデータの一部分をコピーするステップは、
前記複数の有効なデータの一部分を1つ以上の第1のブロックから第2のブロックにコピーするステップのための時間を追跡するステップと、
前記時間が前記ガーベッジコレクション期間を超える前に前記複数の有効なデータの一部分をコピーするステップを止めるステップと、
を含む方法。
【請求項6】
請求項3記載の方法において、
前記複数の有効なデータの一部分をコピーするステップおよび前記複数のデータを第3のブロックに書き込むステップの前に前記書き込みコマンドの実行のための実行時間を推定するステップをさらに含み、
前記実行時間が前記タイムアウト期間を越える場合、前記複数の有効なデータの一部分がコピーされかつ前記複数のデータが前記第3のブロックに書き込まれる方法。
【請求項7】
請求項3記載の方法において、
前記不揮発性メモリ記憶システムは複数のバッファリングレベルを含み、前記第3のブロックは前記複数のバッファリングレベルのうちの1つに関連付けられる方法。
【請求項8】
請求項3記載の方法において、
前記複数のデータを書き込むステップは、
前記複数のデータをスクラッチパッドブロックに書き込むステップと、
前記複数のデータを前記スクラッチパッドブロックから前記第3のブロックにコピーするステップと、
を含む方法。
【請求項9】
請求項8記載の方法において、
前記複数のデータは、前記スクラッチパッドブロックに関連付けられたセクタにコピーされる方法。
【請求項10】
請求項8記載の方法において、
前記複数のデータは、前記スクラッチパッドブロックに関連付けられた、前記複数のデータを含むように構成されたページが満杯であるときに、前記スクラッチパッドブロックから前記第3のブロックにコピーされる方法。
【請求項11】
請求項8記載の方法において、
前記スクラッチパッドブロックは第1のバッファレベルに関連付けられ、前記第3のブロックは第2のバッファレベルに関連付けられる方法。
【請求項12】
請求項3記載の方法において、
前記複数のデータを書き込むステップは、
前記複数のデータを第1のバッファレベルに書き込むステップと、
前記複数のデータを前記第1のバッファレベルから前記第3のブロックにコピーするステップであって、前記第3のブロックが第2のバッファレベルに関連付けられるステップと、
を含む方法。
【請求項13】
請求項3記載の方法において、
前記ガーベッジコレクション期間は、前記タイムアウト期間と前記複数のデータを書き込むステップに関連付けられたプログラミング時間との差である方法。
【請求項14】
請求項3記載の方法において、
前記第3のブロックは、書き込みバッファブロックである方法。
【請求項15】
請求項3記載の方法において、
前記第3のブロックは、論理アドレス空間全体にわたって広がるように構成される方法。
【請求項16】
請求項3記載の方法において、
前記第3のブロックは複数のページを含み、前記複数のページの各々は索引付けされる方法。
【請求項17】
請求項3記載の方法において、
前記第3のブロックは複数のセクタを含み、前記複数のセクタの各々は索引付けされる方法。
【請求項18】
請求項3記載の方法において、
前記書き込みコマンドは、シングルセクタ書き込みコマンドである方法。
【請求項19】
不揮発性メモリ記憶システムを動作させる方法であって、
第1の複数のデータを書き込む第1のシングルセクタ書き込みコマンドを受け取るステップであって、前記第1のシングルセクタ書き込みコマンドが前記第1のシングルセクタ書き込みコマンドの第1の実行を完了させるための第1のタイムアウト期間を割り当てられるステップと、
第1のビジー信号をアサートするステップと、
ガーベッジコレクション期間の間に複数の有効なデータの第1の部分を1つ以上の第1のブロックから第2のブロックにコピーするステップと、
複数の論理アドレスにわたって広がるように構成された書き込みバッファブロックに前記第1の複数のデータを書き込むステップと、
前記第1のタイムアウト期間の前に前記第1のビジー信号を解除するステップと、
第2の複数のデータを書き込む第2のシングルセクタ書き込みコマンドを受け取るステップであって、前記第2のシングルセクタ書き込みコマンドが前記第1のシングルセクタ書き込みコマンドを受け取るステップの後に受け取られ、前記第2のシングルセクタ書き込みコマンドが前記第2のシングルセクタ書き込みコマンドの第2の実行を完了させるための第2のタイムアウト期間を割り当てられるステップと、
第2のビジー信号をアサートするステップと、
前記ガーベッジコレクション期間の間に前記複数の有効なデータの第2の部分を前記1つ以上の第1のブロックから前記第2のブロックにコピーするステップと、
前記第2のタイムアウト期間の前に前記第2のビジー信号を解除するステップと、
を含む方法。
【請求項20】
請求項19記載の方法において、
前記第2の複数のデータを前記書き込みバッファブロックに書き込むステップをさらに含む方法。
【請求項21】
請求項19記載の方法において、
前記第2の複数のデータを更新ブロックに書き込むステップをさらに含む方法。
【請求項22】
請求項19記載の方法において、
前記複数の有効なデータの前記第2の部分をコピーするステップの後に前記1つ以上の第1のブロックを消去するステップをさらに含む方法。
【請求項23】
請求項22記載の方法において、
前記複数の有効なデータの前記第2の部分が前記複数の有効なデータの最後の部分である場合、前記1つ以上の第1のブロックは消去される方法。
【請求項24】
請求項19記載の方法において、
前記第1の複数のデータを前記書き込みバッファブロックから更新ブロックにコピーするステップをさらに含む方法。
【請求項25】
請求項19記載の方法において、
前記第1の複数のデータを前記書き込みバッファブロックに書き込むステップは、
前記第1の複数のデータをスクラッチパッドブロックのセクタに書き込むステップであって、前記セクタに関連付けられたページが複数のセクタを含むステップと、
前記ページに関連付けられた前記複数のセクタが満たされたときに前記ページを前記書き込みバッファブロックにコピーするステップと、
を含む方法。
【請求項26】
請求項19記載の方法において、
前記書き込みバッファブロックは、セクタレベル索引のために構成される方法。
【請求項27】
請求項19記載の方法において、
前記書き込みバッファブロックは、ページ境界索引のために構成される方法。
【請求項28】
請求項19記載の方法において、
前記書き込みバッファブロックは複数のセクタと複数のオーバーヘッドセクタとを含み、前記複数のセクタは前記不揮発性メモリ記憶システム内のメタブロックの総数より大きい方法。
【請求項29】
不揮発性メモリ記憶システムであって、
記憶システムファームウェアを記憶するように構成されたメモリと、
バッファを維持するように構成された不揮発性メモリセルアレイと、
前記メモリおよび前記不揮発性メモリセルアレイと通信するプロセッサであって、前記メモリに格納されている前記記憶システムファームウェアを実行するように構成されたプロセッサと、を備え、
前記記憶システムファームウェアは、
複数のデータを前記不揮発性メモリセルアレイに書き込む書き込みコマンドを受け取るステップであって、前記書き込みコマンドが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
前記タイムアウト期間内にガーベッジコレクション動作の一部分を実行するステップと、
前記複数のデータを前記バッファに格納するステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項30】
不揮発性メモリ記憶システムであって、
記憶システムファームウェアを記憶するように構成されたメモリと、
複数の論理アドレスにわたって広がるように構成された書き込みバッファブロックを維持するように構成された不揮発性メモリセルアレイと、
前記メモリおよび前記不揮発性メモリセルアレイと通信するプロセッサであって、前記メモリに格納されている前記記憶システムファームウェアを実行するように構成されたプロセッサと、を備え、
前記記憶システムファームウェアは、
複数のデータを前記不揮発性メモリセルアレイに書き込む書き込みコマンドを受け取るステップであって、前記書き込みコマンドが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
ビジー信号をアサートするステップと、
ガーベッジコレクション期間の間にガーベッジコレクション動作の一部分を実行するステップと、
前記複数のデータを前記書き込みバッファブロックに書き込むステップと、
前記タイムアウト期間の前に前記ビジー信号を解除するステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項31】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記ガーベッジコレクション期間の間にガーベッジコレクション動作の一部分を実行するステップを実行するための前記プログラム命令は、前記ガーベッジコレクション期間の間に複数の有効なデータの部分を1つ以上の第1のブロックから第2のブロックにコピーするステップを実行するためのプログラム命令を含む方法。
【請求項32】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、
前記ガーベッジコレクション動作の一部分を実行するステップおよび前記複数のデータを前記書き込みバッファブロックに書き込むステップの前に前記書き込みコマンドの実行のための実行時間を推定するステップを実行するためのプログラム命令をさらに含み、
前記実行時間が前記タイムアウト期間より大きければ、前記ガーベッジコレクション動作の一部分が実行されかつ前記複数のデータが前記書き込みバッファブロックに書き込まれる方法。
【請求項33】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記複数のデータを前記書き込みバッファブロックに書き込むステップを実行するための前記プログラム命令は、
前記複数のデータをスクラッチパッドブロックに書き込むステップと、
前記複数のデータを前記スクラッチパッドブロックから前記書き込みバッファブロックにコピーするステップと、を実行するためのプログラム命令を含む方法。
【請求項34】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは複数のページを含み、前記複数のページの各々は索引付けされる方法。
【請求項35】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは複数のセクタを含み、前記複数のセクタの各々は索引付けされる方法。
【請求項36】
請求項30記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは、複数のブロックを含む方法。
【請求項37】
不揮発性メモリ記憶システムであって、
記憶システムファームウェアを記憶するように構成された読み出し専用メモリ(ROM)と、
複数の論理アドレスにわたって広がるように構成された書き込みバッファブロックを維持するように構成されたメモリセルアレイと、
不揮発性メモリセルアレイと、
前記ROM、前記メモリセルアレイ、および前記不揮発性メモリセルアレイと通信するプロセッサであって、前記ROMに格納されている前記記憶システムファームウェアを実行するように構成されたプロセッサと、を備え、
前記記憶システムファームウェアは、
第1の複数のデータを前記不揮発性メモリセルアレイに書き込む第1の書き込みコマンドを受け取るステップであって、前記第1の書き込みコマンドは前記第1の書き込みコマンドの第1の実行を完了させるための第1のタイムアウト期間を割り当てられるステップと、
第1のビジー信号をアサートするステップと、
ガーベッジコレクション期間の間に複数の有効なデータの第1の部分を1つ以上の第1のブロックから第2のブロックにコピーするステップと、
前記第1の複数のデータを前記書き込みバッファブロックに書き込むステップと、
前記第1のタイムアウト期間の前に前記第1のビジー信号を解除するステップと、
第2の複数のデータを前記不揮発性メモリセルアレイに書き込む第2の書き込みコマンドを受け取るステップであって、前記第2の書き込みコマンドは前記第1の書き込みコマンドを受け取るステップの後に受け取られ、かつ前記第2の書き込みコマンドの第2の実行を完了させるための第2のタイムアウト期間を割り当てられるステップと、
第2のビジー信号をアサートするステップと、
前記ガーベッジコレクション期間の間に前記複数の有効なデータの第2の部分を前記1つ以上の第1のブロックから前記第2のブロックにコピーするステップと、
前記第2のタイムアウト期間の前に前記第2のビジー信号を解除するステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項38】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、前記第2の複数のデータを前記書き込みバッファブロックに書き込むステップを実行するためのプログラム命令をさらに含む不揮発性メモリ記憶システム。
【請求項39】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、前記第2の複数のデータを更新ブロックに書き込むステップを実行するためのプログラム命令をさらに含む不揮発性メモリ記憶システム。
【請求項40】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、前記複数の有効なデータの前記第2の部分が前記複数の有効なデータの最後の部分である場合、前記1つ以上の第1のブロックを消去するステップを実行するためのプログラム命令をさらに含む不揮発性メモリ記憶システム。
【請求項41】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、前記第1の複数のデータを前記書き込みバッファブロックから更新ブロックにコピーするステップを実行するためのプログラム命令をさらに含む不揮発性メモリ記憶システム。
【請求項42】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは複数のページを含み、前記第1の複数のデータは前記書き込みバッファブロックに関連付けられた第1のページに書き込まれ、前記第2の複数のデータは前記書き込みバッファブロックに関連付けられた第2のページに書き込まれる不揮発性メモリ記憶システム。
【請求項43】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは複数のセクタを含み、前記第1の複数のデータは前記書き込みバッファブロックに関連付けられた第1のセクタに書き込まれ、前記第2の複数のデータは前記書き込みバッファブロックに関連付けられた第2のセクタに書き込まれる不揮発性メモリ記憶システム。
【請求項44】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記不揮発性メモリ記憶システムは複数のバッファリングレベルを含み、前記書き込みバッファブロックは前記複数のバッファリングレベルの1つに関連付けられる不揮発性メモリ記憶システム。
【請求項45】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記第1の複数のデータを前記書き込みバッファブロックに書き込むステップを実行するための前記プログラム命令は、
前記第1の複数のデータをスクラッチパッドブロックのセクタに書き込むステップであって、前記セクタに関連付けられたページが複数のセクタを含むステップと、
前記ページに関連付けられた前記複数のセクタが満たされたときに前記ページを前記書き込みバッファブロックにコピーするステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項46】
請求項45記載の不揮発性メモリ記憶システムにおいて、
前記スクラッチパッドブロックは第1のバッファレベルに関連付けられ、前記書き込みバッファブロックは第2のバッファレベルに関連付けられる不揮発性メモリ記憶システム。
【請求項47】
請求項37記載の不揮発性メモリ記憶システムにおいて、
前記複数のデータを書き込むステップを実行するための前記プログラム命令は、
前記複数のデータを第1のバッファレベルに書き込むステップと、
前記複数のデータを前記第1のバッファレベルから前記書き込みバッファブロックにコピーするステップであって、前記書き込みバッファブロックが第2のバッファレベルに関連付けられるステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項48】
不揮発性メモリ記憶システムであって、
記憶システムファームウェアを記憶するように構成されたメモリと、
複数の論理アドレスにわたって広がるように構成された書き込みバッファブロックを維持するように構成された不揮発性メモリセルアレイと、
前記メモリおよび前記不揮発性メモリセルアレイと通信するプロセッサであって、前記メモリに格納されている前記記憶システムファームウェアを実行するように構成されたプロセッサと、を備え、
前記記憶システムファームウェアは、
複数のデータを前記不揮発性メモリセルアレイに書き込む書き込みコマンドを受け取るステップであって、前記不揮発性メモリセルアレイが前記書き込みコマンドの実行を完了させるためのタイムアウト期間を割り当てられるステップと、
ビジー信号をアサートするステップと、
ガーベッジコレクション期間の間に複数の有効なデータの一部分を1つ以上の第1のブロックから第2のブロックにコピーするステップと、
前記複数のデータを前記書き込みバッファブロックに書き込むステップと、
前記タイムアウト期間の前に前記ビジー信号を解除するステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項49】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記複数の有効なデータの一部分をコピーするステップを実行するための前記プログラム命令は、
前記複数の有効なデータの一部分を前記1つ以上の第1のブロックから前記第2のブロックにコピーするための時間を追跡するステップと、
前記時間が前記ガーベッジコレクション期間を超える前に前記複数の有効なデータの一部分をコピーするステップを止めるステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項50】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは、
前記複数の有効なデータをコピーするステップおよび前記複数のデータを書き込むステップの前に前記書き込みコマンドの実行のための実行時間を推定するステップを実行するためのプログラム命令をさらに含み、
前記実行時間が前記タイムアウト期間を越える場合、前記複数の有効なデータの一部分がコピーされかつ前記複数のデータが前記書き込みバッファブロックに書き込まれる不揮発性メモリ記憶システム。
【請求項51】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記複数のデータの一部分を書き込むステップを実行するための前記プログラム命令は、
複数のセクタを含むページを含むスクラッチパッドブロックを提供するステップと、
前記複数のデータを前記ページに関連付けられているセクタに書き込むステップと、
前記ページが満杯であるときに前記ページを前記スクラッチパッドブロックから前記書き込みバッファブロックにコピーするステップと、を実行するためのプログラム命令を含む不揮発性メモリ記憶システム。
【請求項52】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記ガーベッジコレクション期間は、前記タイムアウト期間と前記複数のデータを書き込むステップに関連付けられたプログラミング時間との差である不揮発性メモリ記憶システム。
【請求項53】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは、論理アドレス空間全体にわたって広がるように構成される不揮発性メモリ記憶システム。
【請求項54】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは、セクタレベル索引のために構成される不揮発性メモリ記憶システム。
【請求項55】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記書き込みバッファブロックは、ページ境界索引のために構成される不揮発性メモリ記憶システム。
【請求項56】
請求項48記載の不揮発性メモリ記憶システムにおいて、
前記記憶システムファームウェアは複数のセクタを前記書き込みバッファブロックに割り当てるステップを実行するためのプログラム命令をさらに含み、前記複数のセクタは前記不揮発性メモリ記憶システム内のメタブロックの総数より大きい不揮発性メモリ記憶システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9A】
【図9B】
【図10A】
【図10B】
【図10C】
【図10D】
【図10E】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9A】
【図9B】
【図10A】
【図10B】
【図10C】
【図10D】
【図10E】
【図11】
【図12】
【図13】
【図14】
【公表番号】特表2009−545819(P2009−545819A)
【公表日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願番号】特願2009−522934(P2009−522934)
【出願日】平成19年7月19日(2007.7.19)
【特許番号】特許第4362549号(P4362549)
【特許公報発行日】平成21年11月11日(2009.11.11)
【国際出願番号】PCT/US2007/073891
【国際公開番号】WO2008/019218
【国際公開日】平成20年2月14日(2008.2.14)
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
【公表日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願日】平成19年7月19日(2007.7.19)
【特許番号】特許第4362549号(P4362549)
【特許公報発行日】平成21年11月11日(2009.11.11)
【国際出願番号】PCT/US2007/073891
【国際公開番号】WO2008/019218
【国際公開日】平成20年2月14日(2008.2.14)
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
[ Back to top ]