(57)【要約】  ブロックの消去の最小単位を有するメモリアレイにおいて、後で他のブロックへ書き込まれるデータを記憶するためにスクラッチパッドブロックが使用される。データは、低い並列性でスクラッチパッドブロックへ書き込まれて、その後、高い密度で記憶されるように、高い並列性で他の位置に書き込まれてもよい。データは、他の場所により効率的に記憶することができるまで、スクラッチパッドブロック内に一時的に記憶されてもよい。これは、何らかの他のデータが受信された場合であってもよい。関連性のないデータが、スクラッチパッドブロックの同一ページ内に記憶されてもよい。
2008524705.tif 000002
【特許請求の範囲】
【請求項１】
ブロックの消去最小単位とページのプログラミング最小単位とを有する不揮発性メモリアレイ内に、アドレス指定可能なデータの単位を記憶する方法であって、ページは、１つ以上のアドレス指定可能なデータの単位を含むとともにブロックよりも少ないデータを含む、方法において、
第１の並列性で第１のブロック内に複数のアドレス指定可能なデータの単位を書き込むステップと、
その後、複数のアドレス指定可能なデータの単位を第２のブロックへ複写するステップであって、前記単位は、第１の並列性よりも高い第２の並列性を有する書き込み動作で書き込まれる、ステップと、
その後、追加のアドレス指定可能なデータの単位を、複数のアドレス指定可能なデータの単位を含む第１のブロックへ書き込むステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
第１の並列性は、データの完全ページをプログラムする並列性より低く、第２の並列性は、データの完全ページをプログラムする並列性である方法。
【請求項３】
請求項１記載の方法において、
複数のアドレス指定可能なデータの単位は、第１のファイルの部分を形成し、前記部分は、データの１つのページより小さいデータを含み、その後、第１のファイルの部分と、第２のファイルの部分とが第２のブロック内にデータのページを形成するように、複数のアドレス指定可能なデータの単位を複写するステップは、第２のファイルの部分のプログラミングと並列的に行われる方法。
【請求項４】
請求項１記載の方法において、
第２のブロックは、複数のマルチレベルセルを含み、複数のアドレス指定可能なデータの単位は、第１のブロック内に第１のページを形成し、第１のページと第２のページとが複数のマルチレベルセルのプログラミングの上位および下位ページを形成するように、データの第２のページを第２のブロックへ書き込むのと並列して、複数のアドレス指定可能なデータの単位は第２のブロックへ複写される方法。
【請求項５】
請求項１記載の方法において、
複数のアドレス指定可能なデータの単位は、追加のデータと並列して第２のブロックへ書き込まれて、第２の並列性を実現する方法。
【請求項６】
ブロックの消去単位を有する不揮発性メモリアレイ内にある、１ビット以上のデータに対応する２つ以上のプログラムされた状態候補を有するマルチレベルセルへ、複数のアドレス指定可能なデータの単位を書き込む方法において、
第１のアドレス指定可能なデータの単位と、第２のアドレス指定可能なデータの単位とをホストから受信するステップと、
第１のアドレス指定可能なデータの単位を、第１のブロックと、第２のブロックの複数のマルチレベルセルとの両方にプログラムするステップと、
第１のブロックに対して第２のアドレス可能なデータの単位をプログラムすることなく、第１のアドレス指定可能なデータの単位が第１のブロック内に保持されている間に、第２のブロックの複数のマルチレベルセルを第２のデータの単位のビットに従ってプログラムするステップと、
その後、第２のブロックの複数のマルチレベルセルが第２のデータの単位のビットを反映する状態へ完全にプログラムされたことをベリファイした後にのみ、第１のブロック内の第１のアドレス指定可能なデータの単位を古いものとしてマーク付けするステップと、
を含む方法。
【請求項７】
請求項６記載の方法において、
第２のアドレス指定可能な単位のビットに従った第２のブロックの複数のマルチレベルセルのプログラミングを、セルが第２のデータの単位のビットを反映する状態には達していないが、セルが第１のデータの単位のビットを反映する状態から修正されたという中間段階において終了し、その後、第１のブロックから第１のデータの単位のビットを回復する方法。
【請求項８】
請求項６記載の方法において、
第１のアドレス指定可能なデータの単位は、最初に第１のブロックへプログラムされ、その後、第１および第２のアドレス指定可能なデータの単位は、第２のアドレス指定可能なデータの単位が受信された２回目に、第２のブロックへプログラムされる方法。
【請求項９】
請求項６記載の方法において、
第１のブロック内のすべてのデータが古いものであるとマーク付けされる場合に、第１のブロックを消去するステップをさらに含む方法。
【請求項１０】
ブロックの消去最小単位とページのプログラミング最小単位とを有する不揮発性メモリアレイ内に、論理的に不連続なアドレス指定可能なデータの単位を記憶する方法において、
第１の少なくとも１つのアドレス指定可能なデータの単位を第１のブロックの第１のページ内に記憶するステップと、
第１の少なくとも１つのアドレス指定可能なデータの単位と論理的に連続していない第２の少なくとも１つのアドレス指定可能なデータの単位を、第１の少なくとも１つのアドレス指定可能なデータの単位と並列して、第１のブロックの第１のページ内に記憶するステップと、
その後、第１の少なくとも１つのアドレス指定可能なデータの単位を第２のブロックへ複写し、第２の少なくとも１つのアドレス指定可能なデータの単位を第３のブロックへ複写するステップと、
その後、第１のブロックが、第１の少なくとも１つのアドレス指定可能なデータの単位と、第２の少なくとも１つのアドレス指定可能なデータの単位とを保持する間に、第３の少なくとも１つのアドレス指定可能なデータの単位を第１のブロック内に記憶するステップと、
を含む方法。
【請求項１１】
請求項１０記載の方法において、
第１の少なくとも１つのアドレス指定可能なデータの単位は、ホストデータを含み、第２の少なくとも１つのアドレス指定可能なデータの単位は、制御データを含む方法。
【請求項１２】
請求項１０記載の方法において、
第１の少なくとも１つのアドレス指定可能なデータの単位は、第１のファイルのホストデータの複数の論理的に連続するアドレス指定可能なデータの単位を含み、第２の少なくとも１つのアドレス指定可能なデータの単位は、第２のファイルのホストデータの複数の論理的に連続するアドレス指定可能な単位を含む方法。
【請求項１３】
請求項１０記載の方法において、
第３の少なくとも１つのアドレス指定可能なデータの単位は、第１のブロックの第２のページ内に記憶され、かつ第１および第２の少なくとも１つのアドレス指定可能なデータの単位とは論理的に連続していない方法。
【請求項１４】
請求項１３記載の方法において、
第１の少なくとも１つのデータの単位は、第１のファイルからのデータを含み、第２の少なくとも１つのデータの単位は、第２のファイルからのデータを含み、第３の少なくとも１つのデータの単位は、第３のファイルからのデータを含む方法。
【請求項１５】
消去ブロックの消去最小単位内に配列されたメモリセルを有する不揮発性メモリアレイ内にデータを記憶する方法であって、消去ブロック群がリンクされてメタブロックを形成し、メタページは、メタブロックのプログラミング単位である、方法において、
第１のデータのセクタを第１のメタブロックの第１のメタページ内に記憶するステップと、
少なくとも１つの第２のセクタを第１のメタブロックの第２のメタページ内に記憶するステップと、
第１のデータのセクタと、少なくとも１つの第２のデータのセクタと、第３のデータのセクタとを、第３のデータのセクタが受信されたときに、共に第２のメタブロックのメタページへ書き込むステップと、
その後、第１のデータのセクタと、少なくとも１つの第２のデータのセクタとを第１のメタブロックから消去せずに、第４のデータのセクタを第１のメタブロック内に記憶するステップと、
を含む方法。
【請求項１６】
請求項１５記載の方法において、
第１のデータのセクタと、少なくとも１つの第２のデータのセクタと、第３のデータのセクタとが結合されて、データの完全メタページを形成する方法。
【請求項１７】
請求項１５記載の方法において、
第１のデータのセクタを書き込んだ後に、少なくとも１つの第２のデータのセクタと第３のデータのセクタとは、共に第２のメタブロックのメタページへ書き込まれ、第１のメタブロックは、直ちには古いものとしてマーク付けされない方法。
【請求項１８】
請求項１５記載の方法において、
第１のデータのセクタは、第１のメタページから少なくとも１つの第２のメタページへ複写される方法。
【請求項１９】
請求項１５記載の方法において、
少なくとも１つの第２のセクタは、第２のセクタと、追加のセクタとからなり、第１および第２のセクタは、第１のメタブロックの第２のメタページ内に記憶され、第１および第２のセクタならびに追加のセクタが、第１のメタブロックの第３のメタページ内に記憶される方法。
【請求項２０】
請求項１５記載の方法において、
第１のデータのセクタと、少なくとも１つの第２のデータのセクタと、第３のデータのセクタとは、第２のメタブロックのメタページを形成する方法。
【請求項２１】
消去ブロックの消去最小単位内に配列されたメモリセルを有する不揮発性メモリアレイ内にデータを記憶する方法であって、ページは、消去ブロックのプログラミングの最小単位である、方法において、
第１のデータのセクタを第１の消去ブロックの第１のページ内に記憶するステップと、
少なくとも１つの追加のセクタを第１の消去ブロックの少なくとも１つの追加のページ内に記憶するステップと、
第１のデータのセクタと、少なくとも１つの追加のデータのセクタと、データの最終セクタとを、最終セクタが受信されたときに、第２の消去ブロックのページへ書き込むステップと、
その後、第１のデータのセクタと少なくとも１つの追加のセクタとを第１の消去ブロックから消去せずに、第２のデータのセクタを第１の消去ブロック内に記憶するステップと、
を含む方法。
【請求項２２】
請求項２１記載の方法において、
第１のデータのセクタと、少なくとも１つの追加のデータのセクタと、最終のデータのセクタとは、第２の消去ブロックのページを共に完全に埋める方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、不揮発性フラッシュメモリシステムの動作に関し、より詳細には、不揮発性フラッシュメモリ内のデータをプログラムする、より効率的な方法に関する。
【背景技術】
【０００２】
今日、商業的に成功している数多くの不揮発性メモリ製品は、特に、１つ以上の集積回路チップ上に形成されたフラッシュＥＥＰＲＯＭ（電気的に消去可能でプログラム可能な読み出し専用メモリ）セルのアレイを用いる小形形状のファクタカードの形態で用いられている。通常、別個の集積回路チップ上に形成されているが必ずしもそうとは限らないメモリコントローラは、カードが取り外し可能に接続されているホストとインターフェイスをとり、カード内のメモリアレイの動作を制御する。一般的に、このようなコントローラは、マイクロプロセッサ、何らかの不揮発性読み出し専用メモリ（ＲＯＭ）、揮発性ランダムアクセスメモリ（ＲＡＭ）、およびデータのプログラミングおよび読み出し中にデータがコントローラを通過するとデータから誤り訂正符号（ＥＣＣ）を計算する回路のような１つ以上の特殊回路を含む。市販のカードの一部は、コンパクトフラッシュ（登録商標）（ＣＦ）カード、マルチメディアカード（ＭＭＣ）、セキュアデジタル（ＳＤ）カード、パーソナルタグ（Ｐ‐Ｔａｇ）およびメモリスティックカードである。ホストは、パーソナルコンピュータ、ノートブック形コンピュータ、個人用携帯情報端末（ＰＤＡ）、様々なデータ通信装置、デジタルカメラ、携帯電話、携帯オーディオプレーヤ、自動車サウンドシステムおよび類似の機器を含む。幾つかのシステムでは、取り外し可能なカードはコントローラを含まず、ホストが、カード内のメモリアレイの動作を制御する。この種のメモリシステムの例として、スマートメディアカードおよびｘＤカードが挙げられる。従って、カード内のコントローラのソフトウェアまたはホスト内の制御ソフトウェアによってメモリアレイの制御を達成することができる。メモリカードの実施例以外に、この種のメモリを様々な種類のホストシステム内に埋め込むこともできる。取り外し可能な用途および埋め込み用途の双方では、メモリ制御ソフトウェアによって実装された記憶方式に従ってホストデータをメモリアレイ内に記憶することができる。
【０００３】
商業用途で見られる２つの汎用メモリセルアレイ構造は、ＮＯＲおよびＮＡＮＤである。一般的なＮＯＲアレイでは、メモリセルは、列方向に延在する隣接のビット線のソース拡散領域とドレイン拡散領域との間に接続され、セルの行に沿って延在するワード線にはコントロールゲートが接続されている。メモリセルは、ソースとドレインとの間のセルチャネル領域の少なくとも一部分にわたって位置付けられた少なくとも１つの記憶素子を含む。従って、記憶素子上の電荷のプログラムレベルはセルの動作特性を制御し、アドレス指定されたメモリセルに適切な電圧を印加することによってセルを読み出すことができる。このようなセル、メモリシステムでの使用および製造方法の例が、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１３，４２１号（特許文献３）、第５，３１５，５４１号（特許文献４）、第５，３４３，０６３号（特許文献５）、第５，６６１，０５３号（特許文献６）および第６，２２２，７６２号（特許文献７）に示されている。
【０００４】
ＮＡＮＤアレイは、セルの列を形成するため、個々のビット線と基準電位との間の１つ以上の選択トランジスタと一緒に接続された１６または３２のような３つ以上のメモリセルの直列ストリングを用いる。ワード線は、多数のこれら列内のセルにまたがって延在する。ストリングに流れる電流が、アドレス指定されたセルに記憶された電荷のレベルに依存するようにストリング内の残りのセルを確実にオンに転換させることにより列内の個々のセルはプログラミング中、読み出され、ベリファイされる。ＮＡＮＤ構造アレイおよびメモリシステムの一部としての動作の例が、米国特許第５，５７０，３１５号（特許文献８）、第５，７７４，３９７号（特許文献９）、第６，０４６，９３５号（特許文献１０）および第６，５２２，５８０号（特許文献１１）で見られる。
【０００５】
前述した援用されている特許のような現在のフラッシュＥＥＰＲＯＭアレイの電荷記憶素子は、最も一般的には導電性フローティングゲートであり、導電的にドープされたポリシリコン材料から一般的に形成されている。フラッシュＥＥＰＲＯＭシステムで有用であるメモリセルの代替の種類は、導電性フローティングゲートの代わりに非導電性の誘電体材料を用いて、不揮発的に電荷を記憶する。酸化シリコン、窒化シリコンおよび酸化シリコン（ＯＮＯ）から形成された３層誘電体は、メモリセルチャネル上の半導体基板の表面と導電性コントロールゲートとの間に挟まれている。セルは、セルチャネルから窒化物へ電子を注入し、窒化物で電子が捕捉され、限定領域内に記憶されることによってプログラムされ、ホットホールを窒化物へ注入することによって消去される。誘電性の記憶素子を用いる幾つかの特定のセル構造およびアレイは、ハラリらの米国公開特許出願第２００３／０１０９０９３号（特許文献１２）で説明されている。
【０００６】
大部分の集積回路用途でのように、ある集積回路機能を実装するのに必要とされるシリコン基板領域を縮小させるという圧力は、フラッシュＥＥＰＲＯＭメモリセルアレイの場合にも存在する。所定の大きさのメモリカードおよび他の種類のパッケージの記憶容量を増大させるため、シリコン基板の所定の領域に記憶することができるデジタルデータの量を増大させること、または、容量を増大させ、かつ大きさを減少させることが絶えず望まれている。データの記憶密度を増大させる１つの方法は、１メモリセル当たりおよび／または１記憶ユニットまたは素子当たり２ビット以上のデータを記憶することである。このことは、記憶素子の電荷レベル電圧範囲のウィンドウ（窓）を３つ以上の状態に分割することによって達成される。例えば、このような状態を４つ使用することによって、各セルが２ビットのデータを記憶することが可能となり、８つの状態が１記憶素子当たり３ビットのデータを記憶するなどである。フローティングゲートを用いる多状態のフラッシュＥＥＰＲＯＭ構造およびその動作は、米国特許第５，０４３，９４０号（特許文献１３）および第５，１７２，３３８号（特許文献１４）で説明され、誘電性のフローティングゲートを用いる構造については、前述した米国公開特許出願第２００３／０１０９０９３号（特許文献１２）で説明されている。また、米国特許第５，９３０，１６７号（特許文献１５）および第６，４５６，５２８号（特許文献１６）で説明されているように、多状態メモリセルアレイの選択された部分を、様々な理由で２つの状態（２値）で動作することができる。本願明細書で説明した他のすべての特許および特許出願と同様に、これら特許もその全体が本願明細書において参照により援用されている。
【０００７】
一般的なフラッシュＥＥＰＲＯＭアレイのメモリセルは、同時に消去されるセルの離散的なブロック（消去ブロック）に分割されている。すなわち、消去ブロックは消去単位であり、最小数のセルは同時に消去できる。一般的に、各消去ブロックはデータの２つ以上のページを記憶し、ページは、プログラミングおよび読み出しの最小単位である。しかし、１つ以上のページを、異なるサブアレイまたはプレーンに並行してプログラムまたは読み出すことができる。一般的に、各ページはデータの１つ以上のセクタを記憶し、セクタの大きさはホストシステムによって定義される。例示的なセクタは、磁気ディスクドライブよって確立された規格に従う５１２バイトのユーザデータと、ユーザデータおよび／またはそれらが記憶される消去ブロックに関する幾らかのバイト数のオーバーヘッド情報とを含む。一般的に、このようなメモリは、各消去ブロック内に１６，３２またはそれ以上のページを有し、各ページが１つまたはごくわずかのホストセクタのデータを記憶するように構成されている。
【０００８】
ユーザデータをメモリアレイ内にプログラムし、そこからユーザデータを読み出す間、並列性の度合いを増大させるため、一般的に、アレイは、プレーンと一般に称されるサブアレイに分割され、プレーンは、データのセクタを幾つかまたはすべてのプレーンの各々に同時にプログラムするかまたはそこから読み出しできるように並列動作を可能にするデータレジスタおよび他の回路を含む。単一集積回路上のアレイをプレーンに物理的に分割することができ、または分離した１つ以上の集積回路チップから各プレーンを形成することができる。このようなメモリの実施例は、米国特許第５，７９８，９６８号（特許文献１７）および第５，８９０，１９２号（特許文献１８）で説明されている。
【０００９】
メモリを更に効率良く管理するため、消去ブロックを結合して仮想ブロックまたはメタブロックを形成することができる。すなわち、各メタブロックは、各プレーンから１つの消去ブロックを含むように定義されている。メタブロックの使用は、米国特許第６，７６３，４２４号（特許文献１９）で説明されている。メタブロックは、データをプログラムし読み出す出力先としてホスト論理ブロックアドレスによって識別される。同様に、メタブロックの消去ブロックのすべては同時に消去される。メタブロックは、メタブロック内の各消去ブロックからの１つのページを含むメタページ単位でプログラムされてもよい。このような大規模なブロックおよび／またはメタブロックで動作されるメモリシステム内のコントローラは、ホストから送信された論理ブロックアドレス（ＬＢＡ）と、メモリセルアレイ内の物理ブロック番号（ＰＢＮ）との間の変換を含む多くの機能を実行する。一般的に、消去ブロック内の個々のページは、ブロックアドレス内のオフセットによって識別される。アドレス変換は、論理ブロック番号（ＬＢＮ）および論理ページの中間の使用を含むことが多い。メタブロックを使用するメモリシステムにおいて、メタブロックは、メモリアレイの消去の有効最小単位であってもよい。よって、消去の最小単位（ブロック）は、メモリ構造により、消去ブロックであっても、メタブロックであってもよい。「ブロック」という用語は、構造により、消去ブロックまたはメタブロックのいずれを指してもよい。同様に、「ページ」という用語は、メモリシステムのプログラミングの最小単位を指してもよい。これは、メモリシステム構造により、単一の消去ブロック内のページであってもよいし、いくつかの消去ブロックにわたって広がるメタページであってもよい。
【００１０】
メタブロックに記憶されたデータは、更新されることが多く、更新の可能性は、メタブロックのデータ容量が多いほど高まる。あるメタブロックの更新されたセクタは、通常、他のメタブロックへ書き込まれる。変更されなかったセクタも、通常、同一のプログラミング動作の一部として、元のメタブロックから新しいメタブロックへ複写されて、データを統合する。代替例として、変更されなかったデータは、更新されたデータが単一のメタブロックに後に再び統合されるまで元のメタブロックに残っていてもよい。現在のデータを新しいブロックに統合して、古いデータのみを含むブロックを消去する動作は、一般的には「ガーベッジコレクション」動作と称される。
【００１１】
消去されたブロックのプール内に保持されたいくつかの余分なブロックと共に大きなブロックまたはメタブロックシステムを動作させることは一般的である。あるブロックの容量未満のデータの１つ以上のページが更新されようとする場合、一般的には、更新されたページをプールからの消去されたブロックへ書き込み、その後、元のブロックから変更されなかったページのデータを複写して、プールブロックを消去する。この手法の変形例については、米国特許第６，７６３，４２４号（特許文献１９）に記載されている。時間が経つにつれて、ホストデータファイルが再書き込みされ、かつ更新される結果、数多くのブロックが、有効データを含む比較的少ない数のページと、もはや新しくないデータを含む残りのページとになりうる。アレイのデータ記憶容量を効率的に使用できるようにするために、有効データのうちの論理的に関連したデータページを複数のブロック内の断片からときどき収集して、より少ない数のブロックに統合する。この処理は、通常、「ガーベッジコレクション」と称される。
【００１２】
幾つかのメモリシステムでは、物理メモリセルは２つ以上の区域に分類されている。区域を、物理メモリまたはメモリシステムの任意の区画されたサブセットとすることができ、これらサブセットには、指定された範囲の論理ブロックアドレスがマッピングされる。例えば、６４メガバイトのデータを記憶できるメモリシステムを４つの区域に区画することができ、１区域当たり１６メガバイトのデータを記憶する。次に、論理ブロックアドレスの範囲も４つの群に分割され、１つの群は、４つの各々の区域の物理ブロックに割り当てられる。一般的な実施例において、論理ブロックアドレスは制約されているので、論理ブロックアドレスがマッピングされた単一物理区域の外には各々のデータは決して書き込まれない。アドレス指定、プログラミングおよび読み出し回路を各々有するプレーン（サブアレイ）に分割されたメモリセルアレイでは、各区域は、複数のプレーンからブロックを含むのが好ましく、一般的には、各プレーンから同数のブロックを含む。主として、区域は、論理−物理変換のようなアドレス管理を単純にして、その結果、変換テーブルを小さくし、これらテーブルを保持するのに必要とされるＲＡＭメモリを小さくし、メモリの現在アクティブな領域をアドレス指定するためのアクセス時間を速めるために用いられているが、制限された性質のため、結果として、最適な消耗平均化に満たないことがある。
【００１３】
個々のフラッシュＥＥＲＯＭセルは、１ビット以上のデータを表す電荷量を電荷記憶素子またはユニット内に記憶する。記憶素子の電荷レベルは、セルの記憶状態を読み出す基準として用いられるメモリセルの（一般にＶT と称される）しきい値電圧を制御する。一般に、しきい値電圧のウィンドウ（窓）は、メモリセルの２つ以上の記憶状態の各々にそれぞれ１つ対応する多数の範囲に分割されている。これら範囲は、個々のセルの記憶状態を決定させる公称感知レベルを含む保護帯域によって分離されている。これら記憶レベルは、隣接または他の関連するメモリセル、ページまたはブロックに実行される電荷による妨害プログラミング動作、妨害読み出し動作または妨害消去動作の結果として変化する。従って、誤り訂正符号（ＥＣＣ）は一般的にコントローラによって計算され、プログラムされるホストデータと一緒に記憶され、読み出し中、データをベリファイし、必要に応じて、あるレベルのデータ訂正を実行するのに用いられる。また、妨害動作が電荷レベルを所定範囲から大きく変化させ、誤りデータを読み出させる前に、変化し電荷レベルを時々、それらの状態範囲の中心に戻し復元することができる。この処理は、データリフレッシュまたは消し込みと称され、米国特許第５，５３２，９６２号（特許文献２０）および第５，９０９，４４９号（特許文献２１）で説明されている。
【００１４】
あるメモリアレイにおいて、ページは、データの複数のセクタを保持可能な消去ブロックの部分からなってもよい。ページが一旦書き込まれると、既に書き込まれているデータを破損させることなくさらなる書き込みが可能であってもよい。そのようなシステムを使用するメモリアレイについて、ページは、同一のワード線に結合されたメモリセルのセットによって規定されてもよい。そのようなメモリアレイは、ページのサイズよりも少ない量のデータが受信されるように、非効率的にプログラムされてもよい。例えば、データが一度に１セクタずつ受信される場合、１セクタだけがページに対してプログラムされてもよい。既にそこにセーブされているデータのセクタを破損するという危険を冒すことなく、追加のデータがページに対してプログラムされることはなくてもよい。ときには、一連の単一セクタがいくらかの遅延を伴って受信される場合がある。この場合に、各セクタは、メモリアレイの別々のページへ書き込まれる。よって、セクタは、メモリアレイ内のスペースをどのように使うかについて非効率的なやり方で記憶される。マルチレベル論理が使用される場合には、メモリセルは、近傍のセルの後のプログラミングの効果による影響を特に受けやすい。加えて、マルチレベルセルのプログラミングは、一般的には、データの第１のページでセル群をプログラムし、その後、データの第２のページでセルをプログラムすることによって行われる。データの第２のページのプログラミングは、場合によっては、データの第１のページを破損させることがある。よって、ページより少ない量のデータをメモリアレイが受信する場合に、マルチセクタページを有するメモリアレイ内にデータを記憶させるためのより効率的な方法の必要性がある。また、マルチレベルセル群をプログラムする場合に、後続のページのプログラミング中に第１のページのデータを破損させない手法の必要性もある。
【特許文献１】米国特許第５，０７０，０３２号
【特許文献２】米国特許第５，０９５，３４４号
【特許文献３】米国特許第５，３１３，４２１号
【特許文献４】米国特許第５，３１５，５４１号
【特許文献５】米国特許第５，３４３，０６３号
【特許文献６】米国特許第５，６６１，０５３号
【特許文献７】米国特許第６，２２２，７６２号
【特許文献８】米国特許第５，５７０，３１５号
【特許文献９】米国特許第５，７７４，３９７号
【特許文献１０】米国特許第６，０４６，９３５号
【特許文献１１】米国特許第６，５２２，５８０号
【特許文献１２】米国公開特許出願第２００３／０１０９０９３号
【特許文献１３】米国特許第５，０４３，９４０号
【特許文献１４】米国特許第５，１７２，３３８号
【特許文献１５】米国特許第５，９３０，１６７号
【特許文献１６】米国特許第６，４５６，５２８号
【特許文献１７】米国特許第５，７９８，９６８号
【特許文献１８】米国特許第５，８９０，１９２号
【特許文献１９】米国特許第６，７６３，４２４号
【特許文献２０】米国特許第５，５３２，９６２号
【特許文献２１】米国特許第５，９０９，４４９号
【発明の開示】
【００１５】
消去単位としてのブロックを有するメモリアレイにおいて、１つ以上のブロックが、スクラッチパッドブロックとして指定されて、メモリシステムの性能を改善するために使用されてもよい。スクラッチパッドブロックは、低い並列性でデータがスクラッチパッドブロックへ書き込まれて、その後、高い並列性でメモリアレイ内の他の位置に複写されるように、バッファとして動作してもよい。データは、より効率的に他の位置へ書き込まれるようになるまで、スクラッチパッドブロックに蓄積されてもよい。マルチセクタページを有するメモリにおいて、セクタは、システムの最大並列性を使用して完全なページが書き込まれてもよくなるまで、蓄積されてもよい。マルチレベルセルメモリにおいて、下位ページは、上位および下位ページが共に記憶されるように上位ページが利用可能になるまで、スクラッチパッドブロック内に記憶されてもよい。
【００１６】
特定のプログラミング動作の並列性は、共にプログラムされるデータのビット数に比例する。よって、大量のデータを共にプログラムすることは、高い並列性を有する書き込みとみなされ、少量のデータを共にプログラムすることは、低い並列性であるとみなされる。１つのページより少ない並列性を使用する場合には、メモリアレイ内のスペースが無駄になる場合があり、この無駄なスペースがあるということは、ガーベッジコレクションをより頻繁に行わなければならないことを意味し、それによって、メモリシステムの効率性に悪影響を与える。ときには、少量のデータをメモリシステムに記憶しなければならない。これら小さい書き込みをスクラッチパッドブロックという１つの位置へ書き込んだ後に、それらを高い並列性で他の位置に書き込むによって、メモリシステムの効率性が高くなることもある。
【００１７】
データの複数のセクタからなるページのプログラミングの最小単位を有するメモリシステムにおいて、１ページ未満の量で受信されるデータを記憶する方法が開示される。完全なページがフラッシュメモリアレイへ書き込まれるようになるまで、受信されたセクタを記憶するために、スクラッチパッドブロックとして指定されたブロックを使用する。第１のセクタは、スクラッチパッドブロックの第１のページに記憶される。その後に受信されたセクタは、スクラッチパッドブロックの追加のページに記憶されてもよい。個別に受信されたセクタまたはセクタ群は、それらが受信された際に、スクラッチパッドブロックの新しいページにセーブされる。スクラッチパッドブロック内の他のページからの以前に記憶されたセクタは、新しいデータと共に、最新のページへ複写されてもよい。よって、データのセクタは、スクラッチパッドブロックのページ内の新しいデータの完全なページ未満である限り、スクラッチパッドブロック内に蓄積される。セクタは、ブロックの最大有効並列性よりも低い並列性でスクラッチパッドブロックへ書き込まれる。セクタがスクラッチパッドブロックに記憶されている間、更新されてもよい。データの新しいセクタが受信されて、データの完全なページがプログラミング用に利用可能になった場合には、新しいセクタおよびスクラッチパッドブロックに以前に記憶されたセクタは、メモリアレイの他のブロック内の同一ページに共にプログラムされてもよい。このページは、データで完全に埋まり、最大有効並列性で書き込まれる。その後、スクラッチパッドブロックに記憶されたデータは、古いもの (obsolete) であるとマーク付けされて、都合のよいときに消去されてもよい。よって、フラッシュメモリ内のスペースは、より効率的に使用され、ガーベッジコレクション動作の頻度は減少する。
【００１８】
マルチレベルセルを有するメモリにおいて、スクラッチパッドブロックは、アクティブブロックにも書き込まれるデータのページを記憶してもよい。記憶されたページは、データの他のページが受信されるまで、スクラッチパッドブロック内に保持されてもよく、これは、データの２つのページがアクティブブロック内のそれらの宛先へ共に書き込まれるようにするためである。これらのページは、高い並列性を使用して、上位ページおよび下位ページとして共に書き込まれてもよく、別個に書き込まれた場合よりも破損の危険性が低い状態となる。電力の損失がある場合に下位ページ内のデータがスクラッチパッドブロックから回復されるようにするために、関連する上位ページのプログラミング中に、以前にプログラムされた下位ページの複写を保持するために使用されてもよい。
【００１９】
スクラッチパッドブロックは、他の位置へ書き込まれるべきデータの一時記憶を許容してもよい。データは、あるブロックのデータのセクタの更新中にスクラッチパッドブロック内に記憶されてもよい。あるブロック内のあるページは、互いに異なるファイルからのデータのセクタを含む場合に、ページは、いずれかのブロックが更新されると更新される。従来の方法を使用して２つのファイルからの更新データを記憶するために、１つ以上のブロックが必要となる場合がある。なぜならば、マルチファイルページの２つの複写が必要な場合があるからである。スクラッチパッドブロックを使用すれば、あるファイルからのページの一部を、（他のファイルからの）残りのページが利用可能になるまで記憶することができる。その後、完全な更新ページが、最大並列性を使用してその宛先にプログラムされる。
【００２０】
スクラッチパッドブロックは、関連性のないデータのセクタを含んでもよい。ホストデータセクタおよび制御データセクタの両方が、スクラッチパッドブロック内に記憶されてもよい。ホストデータセクタおよび制御データセクタの両方が、スクラッチパッドブロック内の同一のページ内に記憶されてもよい。２つの互いに異なるファイルからのセクタ、または同一のファイルの論理的にリモートな部分からのセクタが、スクラッチパッドブロックの同一のページに記憶されてもよい。これにより、データを受信しながら高速を維持するように、最大並列性でスクラッチパッドブロックのプログラミングが可能になってもよい。データを低速で受信する場合には、ページ内の追加のスペースは、制御データを含むセクタによって占有される。これにより、制御データ構造が低い頻度で更新されるようになってもよいことから、ガーベッジコレクションの頻度が減少する。
【００２１】
スクラッチパッドは、コントローラが容易に識別できるように、マーク付けセクタによって識別されてもよい。スクラッチパッドブロック内に記憶されたデータのインデックスが、これもまたスクラッチパッドブロック内に記憶されたインデックスセクタ内で維持されてもよい。新しいセクタがスクラッチパッドブロック内に記憶されるにつれて、古いインデックスセクタが新しいインデックスセクタに置き換わることによって、インデックスセクタが更新される。同様に、スクラッチパッドブロック内のセクタが他の位置に複写されるにつれて、インデックスセクタは更新されて、スクラッチパッドブロック内のこれらのセクタが古いものであることを示してもよい。
【発明を実施するための最良の形態】
【００２２】
メモリ構造および動作
最初に図１Ａを参照する。フラッシュメモリは、メモリセルアレイおよびコントローラを含む。図に示されている例では、２つの集積回路装置（チップ）１１，１３は、メモリセルのアレイ１５および様々な論理回路１７を含む。論理回路１７は、データ、命令および状態回路を介して別個のチップ上のコントローラ１９とインターフェイスをとり、しかも、アドレス指定、データ転送および感知を行い、アレイ１３への他の支援を行う。設けられている記憶容量に応じてメモリアレイチップの数を１から多数とすることができる。コントローラと、一部または全部のアレイとを単一集積回路チップ上に結合することができる。しかし、これは現在のところ経済的ではない。
【００２３】
一般的なコントローラ１９は、マイクロプロセッサ２１と、主としてファームウェアを記憶する読み出し専用メモリ（ＲＯＭ）２３と、主として、メモリチップ１１，１３へ書き込むか、そこから読み出されるユーザデータを一時的に記憶するバッファメモリ（ＲＡＭ）２５とを含む。回路２７は（１つ以上の）メモリアレイチップとインターフェイスをとり、回路２９は接続部３１を介してホストとインターフェイスをとる。この例において、データの完全性は、コードの計算専用の回路３３でＥＣＣを計算することによって判断される。ユーザデータが記憶のためにホストからフラッシュメモリアレイへ転送されるにつれて、回路は当該データからＥＣＣを計算し、コードはメモリに記憶される。ユーザデータがメモリから後で読み出される場合には、ユーザデータは、再び回路３３を通じてわたされる。回路３３は、同一のアルゴリズムによってＥＣＣを計算して、当該コードを、計算されてデータと共に記憶されたコードと比較する。これらが同等であれば、データの完全性が確認される。これらが異なっていれば、使用される具体的なＥＣＣアルゴリズムによっては、アルゴリズムによってサポートされた数までのエラーのビットを識別および訂正できる。
【００２４】
図１Ａのメモリの接続部３１は、一例として図１Ｂに示されているホストシステムの接続部３１’と結合する。ホストと図１Ａのメモリとの間のデータ転送は、インターフェイス回路３５を介する。また、一般的なホストは、マイクロプロセッサ３７と、ファームウェアコードを記憶するＲＯＭ３９と、ＲＡＭ４１とを含む。他の回路およびサブシステム４３は、特定のホストシステムに応じて大容量磁気データ記憶ディスクドライブ、キーボード用のインターフェイス回路、モニタなどを含むことが多い。このようなホストの幾つかの例として、ディスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、個人用携帯情報端末（ＰＤＡ）、ＭＰ３および他のオーディオプレーヤ、デジタルカメラ、ビデオカメラ、電子ゲーム機、無線および有線電話装置、留守番電話機、音声録音装置、ネットワークルータなどが挙げられる。
【００２５】
図１Ａのメモリは、図１Ｂのホストと取り外し可能に接続できる形態をとるコントローラおよびすべてのメモリアレイ回路装置を含む小形の封入カードとして実装することができる。すなわち、結合している接続部３１，３１’によって、カードを外し別のホストに移動し、または別のカードをホストに接続することによりカードを取り替えることができる。代替例として、コントローラおよび接続部３１を含むカードと電気的かつ機械的に接続可能である別個のカード内にメモリアレイ装置を封入することができる。更なる代替例として、図１Ａのメモリを図１Ｂのホスト内に埋め込むことができ、接続部３１，３１’は取り外せないように形成される。この場合、通常、メモリは、他の構成要素と一緒にホストの筐体内に含まれる。
【００２６】
図２には、メモリアレイの一部を示し、メモリセルは消去ブロックに分類され、各消去ブロック内のセルは、通常同時に生じる単一消去動作の一部として同時に消去可能である。消去ブロックは、この種のメモリの消去の最小単位である。
【００２７】
図２の個々のメモリセルの消去ブロックの大きさは異なることができる。しかし、１つの商業的に実施されている形態は、個々の消去ブロック内に単一セクタのデータを含む。このようなデータセクタの内容は図３に示されている。ユーザデータ５１は一般的に５１２バイトである。ユーザデータから計算されたＥＣＣ５３と、セクタデータに関連し、および／または、セクタがプログラムされた消去ブロックに関連するパラメータ５５と、パラメータ５５から計算されたＥＣＣ５７とを含むオーバーヘッドデータと、を含めることができる任意の他のオーバーヘッドデータとがユーザデータ５１に追加されている。
【００２８】
また、１つ以上のフラグがステータスまたはステートを示すパラメータ５５に含まれてもよい。また、消去ブロックをプログラムおよび／または消去するために使用される電圧レベルの表示をパラメータ５５内に記憶することもでき、これらの電圧は、消去ブロックによって経験された周期の数および他の要因が変化するに従って更新される。パラメータ５５の他の例には、消去ブロック内の任意の不良セルの識別、この物理消去ブロックにマッピングされた消去ブロックの論理アドレス、および一次消去ブロックが不良である場合の任意の代替消去ブロックのアドレスが含まれる。任意のメモリシステムにおいて使用されるパラメータ５５の特定の組み合わせは、設計に従って様々となりうる。また、オーバーヘッドデータのいくつかまたはすべてを、ユーザデータを含むかまたはオーバーヘッドデータが関連する消去ブロック内ではなく、そのような機能専用の消去ブロック内に記憶することもできる。
【００２９】
図２の単一のデータセクタ消去ブロックと異なるのは、図４のマルチセクタ消去ブロックである。消去ブロック５９も、消去の最小単位であるが、４つのページ０〜３を含み、それぞれがプログラミングの最小単位である。データの１つ以上のホストセクタが、通常、セクタのデータから計算されたＥＣＣを少なくとも含むオーバーヘッドデータと共に各ページ内に記憶され、図３のデータセクタの形式であってもよい。
【００３０】
ブロック全体のデータの書き換えは、通常、新しいデータを消去ブロックプールのブロック内にプログラムして、その後、元のブロックは消去されて消去プールに配置されることを伴う。ブロックのすべてのページより少ないデータが更新される場合には、更新データは、一般的には、消去済みブロックプールからのブロックのページに記憶され、残りの変更されなかったページ内のデータは、元のブロックから新しいブロックへ複写される。その後、元のブロックは消去される。この大規模なブロック管理手法の変形例には、元のブロックからのデータを動かすことも消去することもせずに、他のブロックのページ内に更新されたデータを書き込むことが含まれる。この結果、複数のページが同一の論理アドレスを有することになる。データの直近のページは、セクタまたはページオーバーヘッドデータ内のフィールドとして記録されたプログラミング時間などの何らかの都合のよい手法によって識別される。
【００３１】
さらなるマルチセクタブロック配列を図５に示す。ここで、総メモリセルアレイは、物理的に２つ以上のプレーンに分割され、４つのプレーン０〜３が示されている。各プレーンは、他のプレーンからほとんど独立して動作できるように、自身のデータレジスタ、センス増幅器、アドレス指定デコーダなどを有するメモリセルのサブアレイである。すべてのプレーンは、単一の集積回路装置上または複数の装置上に設けられてもよく、一例では、１つ以上の別個の集積回路装置から各プレーンが形成される。図５のシステム例における各ブロックは、１６のページＰ０〜Ｐ１５を含み、各ページは、１、２、またはそれ以上のホストデータセクタおよび何らかのオーバーヘッドデータの容量を有する。
【００３２】
さらに他のメモリセル配列を図６に示す。各プレーンは、セルの数多くの消去ブロックを含む。動作の並列性を高めるために、互いに異なるプレーン内の消去ブロックを論理的にリンクさせて、メタブロックを形成する。そのようなあるメタブロックを、プレーン０の消去ブロック３と、プレーン１の消去ブロック１と、プレーン２の消去ブロック１と、プレーン３の消去ブロック２とから形成されるものとして、図６に示す。各メタブロックは、論理的にアドレス指定可能であり、メモリコントローラは、個々のメタブロックを形成する消去ブロックを割り当てて常時監視する。ホストシステムは、好ましくは、個々のメタブロックの容量に等しいデータ単位でメモリシステムとインターフェイスをとる。図６のそのような論理データブロック６１は、例えば、メタブロックを構成するブロックの物理ブロック番号（ＰＢＮ）にコントローラによってマッピングされた論理ブロックアドレス（ＬＢＡ）によって識別される。メタブロックのすべての消去ブロックは共に消去され、各消去ブロックからのページは、好ましくは同時にプログラムおよび読み出される。メタブロックは、このように消去ブロックがリンクされたシステム内の消去単位とみなされてもよい。メタブロック構造を有するあるメモリアレイにおいて、ページは、メタブロックの他のページと並列にプログラムされるだけであってもよい。これらのメモリアレイにおいて、メタページは、メタブロックの各プレーンからのページからなるメタブロックのプログラミングの最小単位である。
【００３３】
図２〜図６に関して前述したメモリを実施するために使用されてもよいような、数多くの互いに異なるメモリアレイ構造、構成、および特定のセル構成がある。ＮＡＮＤ形のメモリアレイの消去ブロックの１つを図７に示す。直列接続されたメモリセルの数多くの縦向きの列が、電圧ＶSSの共通のソース６５とビット線ＢＬ０〜ＢＬＮのうちの１つとの間に接続され、さらには、ビット線は、アドレスデコーダ、ドライバ、読み出しセンス増幅器などを含む回路６７に接続されている。具体的には、そのようなある列は、列の向かい合わせの端部にある選択トランジスタ７７と７９との間に直列接続された電荷蓄積トランジスタ７０，７１，…７２，および７４を含む。この例において、各列は１６個の記憶トランジスタを含むが、他の個数も可能である。ワード線ＷＬ０〜ＷＬ１５が、各列の１つの記憶トランジスタにわたって延び、ワード線のアドレスデコーダと電圧ソースドライバとを含む回路８１に接続されている。線８３および８４上の電圧は、電圧ソース６５および／またはビット線ＢＬ０〜ＢＬＮのいずれかに対する、消去ブロック内のすべての列の、選択レジスタを通じた接続を合わせて制御する。データおよびアドレスは、メモリコントローラから生じる。
【００３４】
消去ブロックの電気記憶レジスタ（メモリセル）の各行は、共にプログラムされ、かつ読み出されるページを形成してもよい。適切な電圧がそのようなページのワード線（ＷＬ）に印加されて、そのデータをプログラムまたは読み出す一方で、残りのワード線に印加される電圧が、各記憶トランジスタを導電状態にするために選択される。記憶トランジスタの１つの列（ページ）をプログラムまたは読み出す過程において、未選択行上の以前に記憶された電荷レベルが、すべての列にわたって印加された電圧とそのワード線に印加された電圧とによって乱される。これにより、特定の行のセルのプログラミングが当該行内の他のセルがプログラムされた後に妨げられる場合がある。複数ステートフラッシュメモリは、特に外乱の影響を受ける。論理状態の数が多くなる結果、個々のステートについてのしきい値電圧の範囲が狭くなり、電荷レベルの小さな変化が、論理状態の変化を生じさせる場合がある。データ記憶密度がセル内の数の増えた論理状態を使用して増加されると、外乱に対する感度が増す。よって、列内のセルにデータをプログラムすることは、当該列内の他のセルがプログラムされた後では、当該プログラムされたセル内のデータを破損せずにはできない場合がある。よって、隣接のセルの後続のプログラミングからの外乱によってページサイズが規定されてもよい。ある行内のセルが同一の行内の他のセルのプログラミング後にプログラムできないような場合には、当該行によってプログラミングの最小単位が規定される。よって、セルの行は、データの１つのページを含んでもよい。そのようなメモリアレイにおいて、ある行のセル群をプログラムする場合に、当該行内のいくつかのセルがデータを含まない場合であっても、当該行はプログラムされたものとみなされる。後でメモリアレイ内にプログラムすることができない空のセルを有することは効率的でない。
【００３５】
プログラムされたページ内の空のセルは、一度にメモリシステムによって受信される少数のセクタから生じてもよい。例えば、単一のセクタは、ホストによってメモリシステムに送られてもよい。セクタは、フラッシュメモリアレイのページ内に記憶される。セクタは、当該ページに対する後続の書き込みを阻止する。これは、ページが複数のセクタを保持するメモリシステムにおいて、効率的でない場合がある。例えば、ページがデータの４つのセクタを含む場合に、単一のセクタがページへ書き込まれる場合には、データの３つのセクタを保持可能なメモリアレイの部分が空になっている。ページサイズが大きくなるにつれて、部分的に一杯なページからの無駄なスペースが増加する。メタページは、数多くのセクタを含んでもよいので、メタブロックを使用するメモリアレイにおいて、特に非効率な記憶となる場合がある。同様の問題は、２つ以上のセクタが受信されるが受信セクタの数がページ内のセクタの数より少ない場合にも生じる。そのような部分的なページは、データの完全なページが受信されるまで、スクラッチパッドブロック内に記憶されてもよい。
【００３６】
データが部分的に一杯のページへ書き込みを行った後で、記憶されたデータの統合を行って、部分的に一杯のページからのデータを一杯のページに結合してもよい。これは、周期的に行われるガーベッジコレクションの一部として行われてもよい。そのようなデータの統合により、部分的に一杯のページから、異なる消去ブロック内にある完全なページへデータが複写される。部分的に一杯のページを保持する消去ブロックは、その後、消去および再利用可能なように、古いものとしてマーク付けがなされる。そのような動作は、他の機能のためにも使用可能なシステムリソースを利用してもよい。
【００３７】
メモリへの単一セクタ書き込みの例
図８は、消去ブロックである、ページがデータの４つのセクタからなるメモリシステム内のメモリアレイの指定アクティブブロック８００を示す。ページ０〜５が示され、それぞれは水平方向に延びている。各ページは、セクタ０，セクタ１，セクタ２，およびセクタ３として指定されたデータの４つのセクタを含んでもよい。ホストは、データの単一セクタをメモリシステムに送り、これらのセクタは、アクティブブロック８００に記憶される。セクタＸが受信されて、ページ０のセクタ０として記憶される。これにより、ページ０の後続のプログラミングが阻害される。よって、ページ０のセクタ１，２，および３はプログラムされず、空のままである（消去される）。ページ０がプログラムされた後に、セクタＸ＋１が受信される。セクタＸ＋１は、ページ１のセクタ０として記憶される。ページ１のセクタ１，２，および３は空のままである。セクタＸ＋１がプログラムされた後に、セクタＸ＋２が受信される。セクタＸ＋２は、ページ２のセクタ０として記憶される。ページ２のセクタ１，２，および３は空のままである。セクタＸ＋２がプログラムされた後に、セクタＸ＋３が受信される。セクタＸ＋３は、ページ３のセクタ０として記憶される。ページ３のセクタ１，２，および３は空のままである。
【００３８】
図９は、指定されたアクティブロック９００である消去ブロック内にセクタを記憶するための一代替手法を示す。ここで、ページ毎に１つだけのセクタを記憶する代わりに、以前に記憶されたセクタが同一の消去ブロック内の新しいページへ複写され、これらのセクタは、より最近受信されたセクタと共に記憶される。前述したのと同様に、セクタＸが、ページ０のセクタ０として記憶される。その後、セクタＸ＋１が受信され、セクタＸがページ０からページ１のセクタ０へ複写された状態で、セクタＸ＋１は、ページ１のセクタ０として記憶される。よって、セクタＸおよびセクタＸ＋１は、共にページ１内に記憶される。その後、セクタＸ＋２が受信され、ページ２のセクタ２として記憶される。セクタＸは、ページ２のセクタ０として記憶され、セクタＸ＋１は、ページ２のセクタ１として記憶される。よって、セクタＸ，Ｘ＋１，およびＸ＋２は、共にページ２に記憶される。その後、セクタＸ＋３が受信され、ページ３のセクタ３として記憶される。セクタＸは、ページ３のセクタ０として記憶され、セクタＸ＋１はセクタ１として記憶され、セクタＸ＋２は、セクタ２として記憶される。よって、ページ３が完全にデータで埋まるように、データの４つのセクタが、ページ３内に記憶される。
【００３９】
図８または図９に示されているセクタの記憶に続いて、データは統合されてもよい。図８または図９のいずれかのセクタＸ，Ｘ＋１，Ｘ＋２，およびＸ＋３は、新しい消去ブロックの単一のページへ複写されてもよい。これは、都合がよいときにはガーベッジコレクションの一部として行われてもよい。図１０Ａは、指定アクティブブロック１０００のページ０に記憶されたセクタＸ，Ｘ＋１，Ｘ＋２，およびＸ＋３を示す。消去ブロック１０００のページ０は、データで埋まっている。アクティブブロック１１００のページ０がセクタＸ，Ｘ＋１，Ｘ＋２，およびＸ＋３でプログラムされる場合には、セクタＸ，Ｘ＋１，Ｘ＋２，およびＸ＋３は、複写元である消去ブロックから消去されてもよい。アクティブブロック８００および９００は、その内容がガーベッジコレクション中に統合される場合には消去されて、新しいデータを記憶するために利用可能となってもよい。
【００４０】
ページ０のプログラミングの後に、セクタＸ＋４が受信され、アクティブブロック１０００のページ１のセクタ０として記憶される。その後、セクタＸ＋５，Ｘ＋６，およびＸ＋７がそれぞれ受信され、ページ２，３，および４内にそれぞれ記憶される。セクタＸ＋４，Ｘ＋５，Ｘ＋６，およびＸ＋７を単一のページに統合するために、セクタの統合が再び必要であってもよい。そのようなセクタの統合には時間がかかり、その間ホストデータは書き込まれなくてもよい。データの他の消去ブロックへの第２の統合の後、複写元の消去ブロック１０００は、古いものとしてマーク付けされて、その後に消去されてもよい。
【００４１】
図１０Ｂは、第２のガーベッジコレクション動作が以前のアクティブロック１０００からのデータを再配置した後のアクティブブロック１０１０を示す。セクタＸ＋４からＸ＋７が、アクティブブロック１０１０の単一のページ（ページ１）に統合される。その後、より多くのセクタが受信され、アクティブブロック１０１０内に記憶されてもよい。それらのセクタが単一セクタの形態で受信される場合には、単一セクタは、前述したようにあるページ内に記憶されてもよい。
【００４２】
図１０Ｃは、ページ２〜５内に記憶された追加のセクタＸ＋８からＸ＋１１を伴うアクティブブロック１０１０を示す。この時点でセクタＸ＋８からＸ＋１１を統合するために、他のガーベッジコレクション動作が必要であってもよい。よって、単一セクタとしてホストから受信されるセクタを効率的に記憶するために、この方法は、データをある消去ブロックから他の消去ブロックに転送して最初の消去ブロックを消去することを要する複数のガーベッジコレクション動作を使用する。より大きな消去ブロックにおいては、ガーベッジコレクション動作の数はより多くなる。メタブロックを使用するメモリシステムにおいては、消去ブロックが共に消去されかつ共にプログラムされるように、消去ブロック群がリンクされてもよい。データは、数多くのセクタを含むメタページ内にプログラムされてもよい。したがって、単一セクタを記憶することは、必要なガーベッジコレクションの量によって、非常に非効率的になる。
【００４３】
図１１Ａは、データを記憶する代替方法を示す。図１１Ａは、メモリアレイの２つの消去ブロックを示す。アクティブブロック１１１０は、データが長期記憶のためにプログラムされるような消去ブロックである。スクラッチパッドブロック１１２０は、データが短期記憶のためにプログラムされるような消去ブロックである。少ない数のセクタが受信される場合、これらはスクラッチパッドブロック１１２０内にまず記憶される。セクタは、データのページを一杯にするのに充分なセクタが受信されるまで、スクラッチパッドブロック１１２０内に継続して記憶される。その後、これらのセクタは、アクティブブロック１１１０のページへ複写される。
【００４４】
セクタＸが受信され、前述したように、スクラッチパッドブロック１１２０内のページ０のセクタ０としてプログラムされる。その後、セクタＸ＋１が受信され、セクタＸがページ１のセクタ０へ複写された状態で、スクラッチパッドブロック１１２０のページ１のセクタ１として記憶される。その後、セクタＸ＋２が受信され、セクタＸおよびＸ＋１がページ２のセクタ０とセクタ１とにそれぞれ記憶された状態で、スクラッチパッドブロック１１２０のページ２のセクタ２として記憶される。セクタＸ＋２をスクラッチパッドブロック１１２０内に記憶した後に、セクタＸ＋３が受信される。この時点で、セクタＸ，Ｘ＋１，Ｘ＋２，およびＸ＋３は、アクティブブロック１１１０のページ０に書き込まれている。これら４つのセクタは、データの完全なページを形成する。よって、セクタＸ，Ｘ＋１，Ｘ＋２，およびＸ＋３は、アクティブブロック１１１０のページ０内に効率的に記憶される。その後、セクタＸ＋４，Ｘ＋５，Ｘ＋６，およびＸ＋７がそれぞれ受信される。セクタＸ＋４，Ｘ＋５，およびＸ＋６は、スクラッチパッドブロック１１２０のページ３，４，および５内に記憶され、セクタＸ＋７が受信されると、アクティブブロック１１１０のページ１のセクタ０，１，および２へ複写される。セクタＸ＋７は、アクティブブロック１１１０のページ１のセクタ３へ直接プログラムされる。この時点で、スクラッチパッドブロック１１２０には、データを記憶するための利用可能なページを有しておらず、消去準備ができている（古いもの）として指定されてもよい。新しい消去ブロックを、受信される次のセクタまたはセクタ群用にスクラッチパッドブロックとして指定してもよい。この例は単一セクタが受信される様子を示すが、この方法は、セクタ群が、ページ内のセクタ数より少ない数のセクタを有するようなセクタ群用に使用されてもよい。また、前述した例は、データをスクラッチパッドブロックからアクティブブロックへ最大並列性で書き込むことを示すが、そのような書き込みは、最大未満の並列性で行われてもよく、それでも効率性の利点が提供される。よって、データがより高密度に詰め込まれ、かつガーベッジコレクションの頻度が少なくてすむように、セクタは、ある並列性でスクラッチパッドブロックへ書き込まれ、その後に、より高い並列性で他のブロックへ書き込まれる。
【００４５】
スクラッチパッドブロックは、メタブロックを使用するメモリアレイ内で使用されてもよい。例えば、図１１Ｂは、２つのメタブロックであるアクティブブロック１１３０およびスクラッチパッドブロック１１４０を示す。アクティブブロック１１３０およびスクラッチパッドブロック１１４０は共に、プレーン０〜３として示される４つのプレーンを有する。各プレーンは、幅が１セクタなので、４つのセクタがブロック１１３０または１１４０のメタページ内に記憶される。ブロックは共に、メタページ０〜５として示される６つのメタページを有する。データを効率的に記憶するための手法は、消去ブロックに関する前述したものと同一である。データの完全なメタページが利用可能になるまで、セクタは、スクラッチパッドブロック１１４０内に蓄積され、その時点で、完全なメタページが、アクティブブロック１１３０にプログラムされる。例えば、セクタＸ＋３が受信されると、完全なメタページ（セクタＸ，Ｘ＋１，Ｘ＋２，およびＸ＋３）が、アクティブブロック１１３０のメタページにプログラムされる。メタブロックは数多くのプレーンを有する場合があり、かつプレーンはその幅が数ページである場合があるので、メタページは、数多くのセクタを有する場合がある。そのような大きなメタページにとって、前述した手法は特に価値がある。なぜならば、そうでなければ無駄になってしまうメモリアレイ内のスペース量が大量だからである。図１１Ａおよび図１１Ｂに関して示されているように、消去ブロック構造を使用する例に関して説明したこの発明の態様を、メタブロック構造に適用してもよいし、その逆であってもよい。「ブロック」という用語は、メモリアレイの構成により、消去ブロックまたはメタブロックのいずれを示してもよい。いずれの場合においても、ブロックは、当該構成において使用される消去単位である。同様に、「ページ」という用語は、単一の消去ブロック内のページまたはメタブロックのメタページのいずれを指してもよい。いずれの場合においても、ページは、当該構成のためのプログラミング単位である。
【００４６】
ページ内のセクタ数より多くを有するセクタ群が受信される場合、セクタは、スクラッチパッドブロック内にまず記憶されることなく、メモリアレイのアクティブブロックへ直接プログラムされてもよい。よって、データの完全なページが、高い並列性でアクティブブロックへ直接プログラムされてもよい一方で、データの部分ページは、完全なページのプログラミングの一部としてアクティブブロックへ書き込まれるようになるまで、低い並列性でスクラッチパッドブロックへプログラムされる。コントローラが、特定のセクタまたはセクタ群の宛先を判断してもよい。セクタ群をアクティブブロックへ書き込むことは、部分ページ書き込みおよび完全ページ書き込みの両方を含むことになり、完全ページは、アクティブブロックへ書き込まれ、部分ページはスクラッチパッドブロックへ書き込まれてもよい。
【００４７】
図１２Ａは、ホストからのセクタがスクラッチパッドブロック内に記憶されている間に更新される、さらなる例を示す。第１のセクタＸ0 が受信され、スクラッチパッドブロック１２５０のページ０に記憶される。この例におけるページは、データの４つのセクタを記憶する。その後、Ｘ1 として示されているＸ0 の代わりが受信される。この例におけるセクタは、その論理アドレスに従って番号付けされ、下付き文字は、セクタが更新バージョンであるかどうか、そしてもしそうであればどのバージョンかを示す。よって、セクタＸ1 は、論理アドレスがＸのセクタであって、このセクタの第１の更新バージョンである。これは、Ｘ0 と同じ論理アドレスを有するデータのセクタであるが、何らかの更新された情報を反映している異なるデータを含む場合がある。セクタＸ1 は、スクラッチパッドブロック１２５０のページ１へ書き込まれる。コントローラは、どのセクタが現在のものでどれが古いものかを常時監視している。スクラッチパッドブロック１２５０において、特定の論理アドレスを有するセクタの直近に書き込まれた複写が、現在のバージョンである。他のバージョンはどれも古いものである。よって、Ｘ1 がプログラムされると、Ｘ0 は古いものとなる。セクタＸ1 を受信後、セクタ（Ｘ＋１）0 が受信される。これは、セクタＸ1 と論理的に連続するセクタである。セクタＸ1 および（Ｘ＋１）0 は共に、ページ２へ書き込まれる。その後、セクタ（Ｘ＋１）0 は（Ｘ＋１）1 に置き換わる。これは、セクタ（Ｘ＋１）0 を置き換える（Ｘ＋１）0 の更新バージョンである。セクタ（Ｘ＋１）1 は、セクタＸ1 と共にページ３へ書き込まれる。その後、セクタ（Ｘ＋２）0 が受信され、ページ４へ書き込まれる。（Ｘ＋２）0 は、その後セクタ（Ｘ＋２）1 に置き換わり、セクタＸ1 および（Ｘ＋１）1 と共にページ５へ書き込まれる。その後、セクタ（Ｘ＋３）0 が受信される。よって、データのページ（セクタＸ1 ，（Ｘ＋１）1 ，（Ｘ＋２）1 ，および（Ｘ＋３）0 ）が利用可能である。セクタＸ1 ，（Ｘ＋１）1 ，（Ｘ＋２）1 ，および（Ｘ＋３）0 は、アクティブブロック１２５２として指定されたブロックへ書き込まれる。セクタＸ1 ，（Ｘ＋１）1 ，（Ｘ＋２）1 ，および（Ｘ＋３）0 は、完全ページ書き込みの並列性で、アクティブブロック１２５２へ書き込まれる。これは、この場合の予想最大並列性である。よって、セクタＸ1 ，（Ｘ＋１）1 ，（Ｘ＋２）1 ，および（Ｘ＋３）0 が低い並列性でスクラッチパッドブロック１２５０へ書き込まれた場合であっても、後で高い並列性でアクティブブロック１２５２へ書き込まれる。これは、セクタＸ1 ，（Ｘ＋１）1 ，（Ｘ＋２）1 ，および（Ｘ＋３）0 がアクティブブロック内により効率的に記憶されることを意味する。より効率的な記憶により、必要なガーベッジコレクションの頻度が減り、これによって性能が向上する。
【００４８】
一代替例が図１２Ｂに与えられている。この例は、図１２Ａに示すものと類似しているが、ここでは、セクタ（Ｘ＋３）0 が、アクティブブロック１２５２へ複写される前に、スクラッチパッドブロック１２５０内に記憶されている。これにより、セクタ（Ｘ＋３）0 をアクティブブロック１２５２へ書き込む前に更新することができる。図に示されているセクタ（Ｘ＋３）0 は、セクタ（Ｘ＋３）1 で置き換えることによって更新されている。データの完全ページ（セクタＸ1 ，（Ｘ＋１）1 ，（Ｘ＋２）1 ，および（Ｘ＋３）1 ）は、スクラッチパッドブロック１２５０に保持されてもよく、何らかのトリガイベントがあるまでは更新準備完了となっている。この場合、セクタ（Ｘ＋４）0 が受信されて、トリガイベントが提供される。セクタＸ1 ，（Ｘ＋１）1 ，（Ｘ＋２）1 ，および（Ｘ＋３）1 は、この時点で、最大並列性でアクティブブロック１２５２へ書き込まれる。セクタ（Ｘ＋４）0 は、スクラッチパッドブロック１２５０内の次に利用可能なページ（ページ８）へ書き込まれる。
【００４９】
図１２Ｃは、スクラッチパッドブロック１２５０を使用してデータを更新する他の例を示す。データＸ0 から（Ｘ＋１５）0 のセクタが、元ブロック１２５４に記憶されている。ホストが、論理アドレスがセクタ（Ｘ＋６）0 と同一の更新されたセクタであるセクタ（Ｘ＋６）1 を送る。よって、セクタ（Ｘ＋６）1 は、（Ｘ＋６）0 を置き換えるものである。セクタ（Ｘ＋６）0 を置き換えるためには、元ブロック１２５４のページ１（セクタ（Ｘ＋４）0 から（Ｘ＋７）0 を含む）がセクタ（Ｘ＋６）1 と結合され、この結合が、スクラッチパッドブロック１２５０のページ０へ書き込まれる。これらのセクタを結合することは、コントローラＲＡＭ２５などのランダムアクセスメモリにおいて生じてもよく、メモリアレイに接続されているメモリレジスタ内で行われてもよい。更新されたページデータは、しばらくの間、アクティブブロックへ書き込むことなく、スクラッチパッドブロック１２５０内に保持されてもよい。後続の更新されたセクタ（Ｘ＋５）1 がホストから受信されると、セクタ（Ｘ＋５）1 が複写されたセクタ（Ｘ＋４）0 ，（Ｘ＋６）1 ，および（Ｘ＋７）0 と共にスクラッチパッドブロック１２５０の他のページ（この場合、ページ１）へ書き込まれることによって、データは、スクラッチパッドブロック１２５０において更新されてもよい。スクラッチパッドブロック１２５０内のデータのページの複数の更新がこのように行われてもよい。更新は、更新されたデータのセクタまたは複数のデータのセクタを置き換えて、スクラッチパッドブロック１２５０の新しいページにデータの変更されなかったセクタを複写することによって行われる。複写されたセクタは、効率的に複写を行うことができるように、同一プレーン内で複写される。その後、データの更新されたページは、メモリアレイ内のアクティブブロック１２５２へ複写されてもよい。無秩序な更新ブロックを要せずに、不連続の更新がこのように行われてもよい。例えば、前述した例において、更新されたセクタ（Ｘ＋６）1 および（Ｘ＋５）1 が不連続で受信されているが、アクティブブロック１２５２は連続的である。データの複数のページがこのようにスクラッチパッドブロック内で同時に保持および更新されてもよい。ページがもはや更新されることが予想されない場合には、ページは、アクティブブロックへ複写されてもよい。
【００５０】
マルチレベルセルのプログラミング例
ある種のメモリは、フローティングゲートメモリセルのしきい値電圧範囲を２つのレベルより多くに分割することによって、メモリアレイの各セル内に１ビットより多くのデータを記憶してもよい。図１３は、そのようなマルチレベルセル（ＭＬＣ）メモリを、互いに異なる論理状態を示す複数のしきい値電圧を提供するようにプログラムするやり方の例を示す。４つの互いに異なるしきい値電圧が、Ａ，Ｂ，Ｃ，およびＤで示されている。複数のセルは、各電圧へプログラムされる。図１３は、縦軸上に表されたセル数と共に、セル状態の分布を表している。各しきい値電圧Ａ，Ｂ，Ｃ，およびＤは、異なる論理状態を表す。４つの状態は、２ビットのデータを表し、図に示されているように、１ビットは下位ページのデータを、１ビットは上位ページのデータを表す。ある例においては、下位ページが最初にプログラムされてもよい。下位ページのプログラミングの後で、セルは状態ＡまたはＢとなる。その後、セルが状態ＡまたはＢ（上位ビット＝１なので）のいずれかのままであるように、または状態ＣまたはＤ（上位ビット＝０なので）に修正されるように、上位ページがプログラムされてもよい。これらの４つの状態は、それぞれ比較的狭い電圧ウィンドウを有するので、ＭＬＣメモリは、しきい値電圧の比較的小さな変化によるデータの破損を特に受けやすい。ある場合には、下位および上位ページの両方を同時にプログラムするのが有利なこともある。これにより、上位ページデータのプログラミング中に生じるであろう破損といった、隣接のセルのプログラミングによって生じたセル内のデータの破損を減少させる助けとなりうる。
【００５１】
図１４は、スクラッチパッドブロック１４６０がＭＬＣメモリ内のデータの破損を減少させるためにどのように使用されうるかの一例を示す。図１４は、アクティブブロック１４６２およびスクラッチパッドブロック１４６０の両方をＭＬＣメモリのブロックとして示す。両方のブロックは、番号付けがなされ、どのしきい値電圧状態がページのデータのビットを記憶するために使用されるかによって、「上位」または「下位」のいずれかとして示されている。この例において、メモリは、セクタＸからＸ＋３をまず受信して、スクラッチパッドブロック１４６０の下位ページ０内にこれらのセクタを記憶する。その後、メモリはセクタＸ＋４からＸ＋７を受信する。このとき、下位ページ（セクタＸからＸ＋３）および上位ページ（セクタＸ＋４からＸ＋７）は、同時にアクティブブロック１４６２へ書き込まれる。これにより、アクティブブロック１４６２の上位ページ０のプログラミング中にアクティブブロック１４６２の下位ページ０が破損することを防止することができうる。一般的には、このシステムが時間的な不利益がないように、上位および下位ページを共にプログラムするのに必要な時間は、上位ページだけをプログラムするのに必要な時間と同一である。セクタＸからＸ＋７でのアクティブブロック１４６２の下位ページ０および上位ページ０のプログラミングの後、セクタＸ＋８からＸ＋１１が受信され、スクラッチパッドブロック１４６０の上位ページ０へプログラムされる。セクタＸ＋１２からＸ＋１５が受信されると、セクタＸ＋８からＸ＋１１およびセクタＸ＋１２からＸ＋１５は、アクティブブロックの上位ページ１および下位ページ１へ並列的にプログラムされる。このシステムは、図に示されているように、データの後続セクタに対して継続する。よって、データのページは、スクラッチパッドブロック１４６０へ書き込まれて、その後、このページは、メモリセルの同一群の上位および下位ページとして、追加のページと共にアクティブブロック１４６２へ書き込まれる。スクラッチパッドブロック１４６０へのプログラミングは、ページの並列性で生じる一方で、アクティブブロック１４６２へのプログラミングは、ページの並列性の２倍で生じる。
【００５２】
一つの代替の実施形態において、上位および下位ページがアクティブブロックへ互いに異なるときに書き込まれてもよいが、アクティブブロック内の下位ページが上位ページのプログラミング中に破損した場合には、下位ページの複写は、スクラッチパッドブロックに保持される。図１４において、セクタＸからＸ＋３が受信されて、アクティブブロック１４６２の下位ページ０と、スクラッチパッドブロック１４６０の下位ページ０との両方へ同時にプログラムされてもよい。その後、セクタＸ＋４からＸ＋７が受信されて、アクティブブロック１４６２の上位ページ０へプログラムされる。セクタＸ＋４からＸ＋７は、スクラッチパッドブロック１４６０内にセーブされない。セクタＸ＋４からＸ＋７のアクティブブロック１４６２の上位ページ０へのプログラミング中に何らかの問題（電力消失など）がある場合には、アクティブブロック１４６２の下位ページ０内のデータも破損している可能性がある。すなわち、プログラミング中のセルのしきい値電圧が、もはや下位ページのデータを表す状態でないはないが、上位ページのデータを表す状態になるまでは完全にプログラムされていないといったように修正されている可能性がある。例えば、図１３における状態Ａから状態Ｄへプログラムされているセルは、プログラミングが停止したときには状態ＢまたはＣである可能性がある。データがこのように破損されると、書き込み中のデータの上位ページは、複写元の位置から回復されてもよい。しかし、多くの場合、下位ページの他の複写は存在しない。ここで、下位ページの複写は、上位ページのプログラミングが完了するまで、スクラッチパッドブロック１４６０内に保持されている。よって、下位ページの未破損の複写が存在し、下位ページのデータを回復するために使用されてもよい。
【００５３】
複数ファイルの例
１つ以上のホストデータファイルからのデータが、単一ブロックに記憶されてもよい。ページの一部があるファイルからのデータを含み、ページの一部が他のファイルからのデータを含むように、ページ内でファイル間の区切りが生じる場合がある。図１５は、元ブロック１５７０のページ０からページｉ−１が第１のファイル（ファイル１）からのデータを含み、ページｉ＋１からページｎ−１が第２のファイル（ファイル２）からのデータを含む例を示す。ページｉは、ファイル１からのセクタ（ｉ＊４）および（ｉ＊４）＋１と、ファイル２からのセクタ（ｉ＊４）＋２および（ｉ＊４）＋３とを含む。２つのファイルからのセクタがあることを示すために、ファイル２のセクタは、網掛け表示されている。
【００５４】
図１５は、ファイル２が新しいブロック１５７２に更新される様子を示す。新しいブロック１５７２の第１のページ（ページ０）は、元ブロック１５７０のページｉの内容で書き込まれる。よって、新しいブロック１５７２のページ０は、ファイル２およびファイル１の両方からのセクタを含む。ファイル１からのセクタ（ｉ＊４）および（ｉ＊４）＋１は、この時点では更新されないが、データの完全ページをプログラムするために複写されてもよい。更新されたファイル２の残りは、新しいブロック１５７２のページ１からｉ−１へプログラムされる。その後、ファイル１が更新される。セクタ０からセクタ（ｉ＊４）−１は、ページｉからページｎ−１内に記憶される。しかし、セクタ（ｉ＊４）および（ｉ＊４）＋１は、ファイル１の一部でもあり、更新されなければならない。新しいブロック１５７２はこの時点で一杯なので、更新されたセクタ（ｉ＊４）および（ｉ＊４）＋１は、他のブロックへプログラムされる。その後、セクタ（ｉ＊４）および（ｉ＊４）＋１ならびに新しいブロック１５７２内のセクタは、ガーベッジコレクション動作の一部として、単一ブロックに統合されてもよい。しかし、これには時間とシステム資源がかかり、一般的には望ましくない。
【００５５】
図１６は、２つの互いに異なるファイルからのセクタを含む図１５の元ブロック１５７０のセクタを更新するための一代替手法を示す。この手法は、スクラッチパッドブロック１６７４を使用して、更新されたセクタを、完全に更新されたページの一部としてシステムの最大並列性で書き込まれてもよいようなときまで記憶する。ファイル２が更新されると、更新されたセクタ（ｉ＊４）＋２および（ｉ＊４）＋３は、スクラッチパッドブロック１６７４へ書き込まれる。ここで、これらのセクタは、スクラッチパッドブロック１６７４のページ０へ書き込まれ、低い並列性が使用される残りのページへはデータは書き込まれない。ファイル２の残りのセクタ（セクタ（ｉ＊４）＋４からＮ−１）は、新しいブロック１６７６のページ０からｎ−ｉへ複写される。これらのセクタは、最大並列性を使用する完全ページ書き込みですべて書き込まれる。その後、ファイル１が更新される。セクタ０から（ｉ＊４）−１は、ページｎ−ｉ＋１からｎ−２へ最大並列性でプログラムされる。その後、ファイル１のセクタ（ｉ＊４）および（ｉ＊４）＋１は、セクタ（ｉ＊４）＋２および（ｉ＊４）＋３を新しいブロック１６７６のページｎ−１へ複写するのと並列に書き込まれる。よって、元ブロック１５７０内に以前保持されていたすべてのセクタの更新された複写は、現在、新しいブロック１６７６内に保持され、新しいブロック１６７６には古いデータは保持されていない。一般的に、新しいブロック１６７６などのブロックに対してガーベッジコレクションを行う必要はない。新しいブロック１６７６の各ページは、最大並列性でプログラムされて、ブロック内のデータの最大密度を達成する。スクラッチパッドブロック１６７４内のセクタ（ｉ＊４）＋２および（ｉ＊４）＋３は、この時点で古いものとしてマーク付けされてもよい。しかし、スクラッチパッドブロック１６７４は、ガーベッジコレクション処理を必要とせずにさらなる処理のために使用されてもよい。なぜならば、スクラッチパッドブロックは、定期的に現在および古いデータを両方含むからである。
【００５６】
データの不連続セクタの記憶の例
以前の例の中には、完全ページを書き込むよりも低い並列性でデータのセクタをスクラッチパッドブロックへ書き込むものがあった。そのような例において、書き込み中のスクラッチパッドブロックのページ内の残りのスペースは、空のままである場合がある。なぜならば、既に記憶されたデータを妨害せずに後にプログラムすることができないからである。ある場合には、このようなともすれば空のスペースと、ともすれば未使用のプログラミング帯域幅を使用して、同一ページ内に関連性のないデータを記憶することができる。例えば、メモリシステムが単一セクタまたはページより小さいセクタ群内のホストデータを受信する場合、ホストデータのこれらのセクタを、関連性のないホストデータなどの関連性のないデータまたは制御データのセクタも保持するページ内のスクラッチパッドブロック内に記憶してもよい。同様に、完全ページの一部として後に記憶されるスクラッチパッドブロック内に記憶中のファイルの最初からのセクタが、論理的に関連性のない、同一のスクラッチパッドブロックのページに記憶された追加のセクタを有していてもよい。
【００５７】
図１７は、以前の例のように、セクタＸ，Ｘ＋１，およびＸ＋２がスクラッチパッドブロック１７８０内に記憶される場合の一例を示す。しかし、ここで、セクタＸ，Ｘ＋１，およびＸ＋２を保持するスクラッチパッドブロックのページ内の残りのスペースを、他のデータを記憶するために使用する。セクタＹ，Ｙ＋１，およびＹ＋２が、ページ０内にセクタＸと共に記憶される。セクタＹ，Ｙ＋１，およびＹ＋２は、セクタＸ，Ｘ＋１，およびＸ＋２と論理的に関連性がなくてもよい。これらのセクタは、他のホストデータファイルからのものであってもよく、または同一ファイル内のセクタの他のクラスタからのものであってもよい。セクタＹ，Ｙ＋１，およびＹ＋２は、セクタＸ，Ｘ＋１，およびＸ＋２と連続していなくてもよく、論理アドレススペース内で分離されていてもよい。同様に、セクタＺおよびＺ＋１が、セクタＸおよびＸ＋１と共にページ１内に記憶される。セクタＺおよびＺ＋１は、セクタＸ，Ｘ＋１，およびＸ＋２ならびにセクタＹ，Ｙ＋１，およびＹ＋２の両方に論理的に関連性がなくてもよい。その後、Ｘ＋３が受信されると、セクタＸ，Ｘ＋１，Ｘ＋２，およびＸ＋３は、他のブロックのページへ書き込まれる。その後、Ｙ＋３が受信されると、セクタＹ，Ｙ＋１，Ｙ＋２，およびＹ＋３は、他のブロックのページへ書き込まれる。よって、利用可能なリソースをより効率的に使用するために、関連性のないデータは、スクラッチパッドブロックの同一ページ内に記憶されてもよい。
【００５８】
図１８は、スクラッチパッドブロック１８９０内に記憶された関連性のないデータの他の例を示す。ここで、セクタＸ，Ｘ＋１，およびＸ＋２は、前述したように記憶され更新される。しかし、ここで、セクタＹも並列的に記憶され更新される。更新されたセクタは、どのバージョンが記憶されているかを示す下付き文字によって表される。例えば、セクタＸ0 は、セクタＸの元のバージョンである一方で、Ｘ1 は、セクタＸの第１の更新バージョンである。セクタＹは、頻繁に更新されるホストデータのセクタあるいは制御データのセクタであってもよい。あるシステムにおいて、ＦＡＴ情報などの制御データは、ホストデータが記憶される際に更新される。少量のホストデータが受信される場合、スクラッチパッドブロック１８９０内の制御データを更新するのは利点である。これにより、制御データの単一セクタのみが更新される制御構造を更新することを避けるようにしてもよい。後の時点で、スクラッチパッドブロックからの制御データを使用して、制御データ構造を更新してもよい。
【００５９】
スクラッチパッドブロック管理
スクラッチパッドブロックは、メモリアレイ内の指定されたブロックであってもよい。固定物理位置が、スクラッチパッドブロックとして選ばれてもよい。しかし、これは、メモリアレイを不均一に消耗させる結果となる場合がある。代替例として、スクラッチパッドブロックが古いデータで一杯になると他の消去ブロックがスクラッチパッドブロックとして選ばれるように、指定されたブロックは時々変更されてもよい。この場合において、メモリコントローラによって使用されるデータ構造により、スクラッチパッドブロックの位置が識別されてもよく、またはコントローラがメモリアレイの消去ブロックを走査した場合にどの消去ブロックがスクラッチパッドブロックであるかを判断するように、指定されたスクラッチパッドブロックがマーク付けされてもよい。スクラッチパッドブロックは、セクタを使用してマーク付けされて、それがスクラッチパッドブロックであると識別されるようにしてもよい。例えば、図１９は、スクラッチパッドブロック２１００の第１のセクタとしてのマーク付けセクタ２１１０を示す。カードに電源が投入されると、メモリアレイの消去ブロック（またはメモリアレイの一部分）が走査されて、１つのスクラッチパッドブロックまたは複数のスクラッチパッドブロックの位置を判断してもよい。図１９の例において、各消去ブロックの第１のセクタが読み出されて、スクラッチパッドブロックを示すマーク付けセクタかどうかが判断される。
【００６０】
データは、データ群としてスクラッチパッドブロックへ書き込まれてもよい。データ群は、ホストから受信されたセクタの論理的に連続した群である。データ群がスクラッチパッドブロック内に記憶される場合、記憶されたデータ群についての情報を提供するインデックスセクタも書き込まれる。データ群のセクタの位置が、インデックスセクタ内に記憶されてもよい。複数のデータ群を記憶するために、図１９のスクラッチパッドブロック２１００などのスクラッチパッドブロックを使用してもよい。図２０は、１つのデータ群を記憶するスクラッチパッドブロック２１００を示す。データ群１は、２つのセクタ２２２０および２２２１からなる。これらのセクタと、マーク付けセクタ２１１０と、インデックスセクタ２２３０とが、スクラッチパッド２１００に記憶される。インデックスセクタ２２３０は、群１についての情報を記憶する。
【００６１】
図２１は、２つのセクタ２３４０および２３４１からなるデータ群２がプログラムされた後の、図２０のスクラッチパッドブロック２１００を示す。インデックスセクタ２３５０は、群１および群２についての情報を記憶する新しいインデックスセクタである。よって、インデックスセクタ２２３０は、古いものである。なぜならば、インデックスセクタ２３５０は、群１を含むスクラッチパッドブロック２１００のデータ群の完全な記録を含むからである。
【００６２】
図２２は、３つのセクタ２４６０，２４６１，および２４６２からなるデータ群３のプログラミング後の、図２１のスクラッチパッドブロック２１００を示す。インデックスセクタ２４７０は、群１，２，および３についての情報を記憶する新しいインデックスセクタである。よって、インデックスセクタ２４７０は、スクラッチパッドブロック２１００のデータの完全な記録を含むので、インデックスセクタ２３５０は古いものとなる。
【００６３】
図２３は、データ群１およびデータ群２がスクラッチパッドブロック２１００から読み出されて、メモリアレイの他のブロック内の単一のページとして書き込まれた後の、図２２のスクラッチパッドブロック２１００を示す。インデックスセクタ２５６０は、データ群３についての情報を記憶する。スクラッチパッド２１００内のデータ群１およびデータ群２は、古いものであり、別のところに記憶されているので、インデックス付けは必要ない。よって、インデックスセクタ２５６０は、スクラッチパッドブロック２１００内にすべての現在のデータの完全な記録を含む。
【００６４】
ホストがメモリアレイに対してデータのあるセクタまたは複数のセクタを要求する場合、コントローラは、要求されたセクタがスクラッチパッドブロック内にあるかどうかをまずチェックしてもよい。セクタがスクラッチパッドブロック内にない場合には、セクタは、通常のやり方で探索されてもよい。よって、スクラッチパッドは、メモリアレイ内のデータのセクタの位置を常時監視するために使用される通常のメディア管理に変更することを要求しない。
【００６５】
本発明を様々な実施形態に関連して説明してきたが、本発明は、添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【００６６】
【図１Ａ】ホストシステムと共に動作する不揮発性メモリのブロック図である。
【図１Ｂ】不揮発性メモリと共に動作するホストシステムのブロック図である。
【図２】図１Ａのメモリアレイの第１の編成例を示す。
【図３】図１Ａのメモリアレイに記憶されるようなオーバーヘッドデータを有するホストデータセクタの例を示す。
【図４】図１Ａのメモリアレイの第２の編成例を示す。
【図５】図１Ａのメモリアレイの第３の編成例を示す。
【図６】図１Ａのメモリアレイの第３の編成例を拡張したものを示す。
【図７】ある特定の構成において、図１Ａのアレイのメモリセル群の回路図である。
【図８】図１Ａのメモリアレイなどのメモリアレイのブロック内に、データのセクタを記憶する様子を示す。
【図９】図１Ａのメモリアレイなどメモリアレイのブロック内に、データのセクタを記憶する他の様子を示す。
【図１０Ａ】ガーベッジコレクション動作中に、他のブロックへ複写した後の、図８または図９のデータのセクタを示す。
【図１０Ｂ】第２のガーベッジコレクション動作中に、他のブロックへ複写した後の、図１０Ａのデータのセクタを示す。
【図１０Ｃ】さらにデータのセクタを受信した後の図１０Ｂのブロックを示す。
【図１１Ａ】２つの消去ブロックであるアクティブブロックとスクラッチパッドブロックとを使用して図１０Ａおよび図１０Ｂのデータのセクタを記憶する、他の記憶構成を示す。
【図１１Ｂ】２つのメタブロックであるアクティブブロックとスクラッチパッドブロックとを使用して図１０Ａおよび図１０Ｂのデータのセクタを記憶する、他の記憶構成を示す。
【図１２Ａ】ガーベッジコレクション動作をトリガせずにデータのセクタを記憶中に更新してもよいように、データのセクタを記憶するために使用される２つのブロックであるアクティブブロックとスクラッチパッドブロックとを示す。
【図１２Ｂ】ガーベッジコレクションをトリガせずにページのすべてのセクタを記憶中に更新することができる、図１２Ａの他の記憶システムを示す。
【図１３】マルチレベルセル内に２ビットのデータを記憶するために使用される４つのしきい値電圧の範囲を示す。
【図１４】スクラッチパッドブロックが、アクティブブロックの下位ページの複写を保持する、マルチレベルセルの２つのブロックと、アクティブブロックと、スクラッチパッドブロックとを示す。
【図１５】あるブロックに記憶された２つのファイルからのデータのセクタと、その後に、当該２つのファイルがメモリアレイ内に１ブロック以上のスペースを必要として更新される場合の、当該データのセクタを記憶する様子とを示す。
【図１６】アクティブブロックへ複写される前のいくつかのセクタをスクラッチパッドブロックが記憶する場合の、図１５のデータのセクタの更新の他のシステムを示す。
【図１７】同一ページ内に関連性のないデータのセクタを記憶するスクラッチパッドブロックと、その後に、このデータを互いに異なる場所へ複写する様子とを示す。
【図１８】複数の更新を受けている関連性のないデータのセクタを記憶するスクラッチパッドブロックを示す。
【図１９】マーク付けセクタによって識別されるスクラッチパッドブロックを示す。
【図２０】セクタ群と、インデックスセクタとを記憶する図１９のスクラッチパッドブロックを示す。
【図２１】第２のセクタ群と、第１のインデックスセクタに取って代わる第２のインデックスセクタとを記憶する、図２０のスクラッチパッドブロックを示す。
【図２２】第３のセクタ群と、第２のインデックスセクタに取って代わる第３のインデックスセクタとを記憶する、図２１のスクラッチパッドブロックを示す。
【図２３】群が他のブロックに複写される場合の第３のインデックスセクタに取って代わる第４のインデックスセクタを有する図２２のスクラッチパッドブロックを示す。
【図１Ａ】
2008524705.tif 000003
【図１Ｂ】
2008524705.tif 000004
【図２】
2008524705.tif 000005
【図３】
2008524705.tif 000006
【図４】
2008524705.tif 000007
【図５】
2008524705.tif 000008
【図６】
2008524705.tif 000009
【図７】
2008524705.tif 000010
【図８】
2008524705.tif 000011
【図９】
2008524705.tif 000012
【図１０Ａ】
2008524705.tif 000013
【図１０Ｂ】
2008524705.tif 000014
【図１０Ｃ】
2008524705.tif 000015
【図１１Ａ】
2008524705.tif 000016
【図１１Ｂ】
2008524705.tif 000017
【図１２Ａ】
2008524705.tif 000018
【図１２Ｂ】
2008524705.tif 000019
【図１２Ｃ】
2008524705.tif 000020
【図１３】
2008524705.tif 000021
【図１４】
2008524705.tif 000022
【図１５】
2008524705.tif 000023
【図１６】
2008524705.tif 000024
【図１７】
2008524705.tif 000025
【図１８】
2008524705.tif 000026
【図１９】
2008524705.tif 000027
【図２０】
2008524705.tif 000028
【図２１】
2008524705.tif 000029
【図２２】
2008524705.tif 000030
【図２３】
2008524705.tif 000031
【国際調査報告】
2008524705.tif 000032
2008524705.tif 000033