(57)【要約】  フラッシュメモリの隣接する領域でのフラッシュメモリの動作による外乱に対して感受性が強いフラッシュメモリに蓄積されるデータの完全性を保持するために、有効データが破損され回復不能になる前に、外乱を引き起こすイベントに起因してデータの読み出し、修正、および書き換えが行われる。メモリシステムが実行すべき別の高い優先順位の処理がある場合、修正アクションのうちのいくつかの実行指令を保留することによって、データの完全性とシステムパフォーマンスとを保持するという、時として相矛盾する必要性のバランスがとられる。非常に大きな消去単位を利用するメモリシステムでは、消去単位の容量よりもずっと少ないデータ量の効率的な書き換え処理に一致するように修正アクションが実行される。
2007507804.tif 000002
【特許請求の範囲】
【請求項１】
編成されてサブアレイに変えられるフラッシュメモリセルアレイを動作させる方法であって、前記サブアレイが、一括消去可能な最小数のメモリセルからなるブロックを備え、前記ブロックが複数のデータ単位を蓄積する方法において、
前記ブロックの第１のブロック内の前記データ単位のうちの少なくとも１つのデータ単位に蓄積されるデータに対してスクラブ・トリガイベントが発生した時点を特定するステップと、
前記特定された少なくとも１つのデータ単位を前記第１のブロックから読み出すステップと、
前記第１のブロックから読み出された前記データ内の何らかのエラーを修正して、修正された第１のブロックデータを出力するステップと、
前記修正された第１のブロックデータを少なくとも１つのデータ単位として前記ブロックのうちの第２のブロックへ書き込むステップと、
その後、前記第１のブロックの修正されていないデータ単位を前記第２のブロックの中へコピーし、それによって前記第１のブロックに元々属する修正されたデータ単位と修正されていないデータ単位を前記第２のブロックの中に統合するステップと、
を有する方法。
【請求項２】
前記修正された第１のブロックデータを第２のブロックへ書き込むステップの前に、前記修正された第１のブロックデータを第３のブロックに一時的に蓄積するステップをさらに有する請求項１記載の方法。
【請求項３】
前記ブロックのうちの第４のブロックに蓄積される前記データ単位のうちの少なくとも１つのデータ単位に対して外乱を引き起こすイベントが発生した時点を特定するステップと、
前記特定された少なくとも１つのデータ単位を前記第４のブロックから読み出すステップと、
前記第４のブロックから読み出された前記データ内の何らかのエラーを修正して、修正された第４のブロックデータを出力するステップと、
前記修正された第４のブロックデータを前記第３のブロックに一時的に蓄積するステップと、
その後、前記修正された第４のブロックデータを少なくとも１つのデータ単位として前記ブロックのうちの第５のブロックへ書き込むステップと、
その後、前記第４のブロックの修正されていないデータ単位を前記第５のブロックの中へコピーし、それによって前記第４のブロックに元々属する修正されたデータ単位と修正されていないデータ単位を前記第５のブロックの中に統合するステップと、
をさらに有する請求項２記載の方法。
【請求項４】
前記スクラブ・トリガイベントは、前記第１のブロックに蓄積されるデータ単位のうちの前記少なくとも１つのデータ単位に外乱を与えるイベントを含む請求項１記載の方法。
【請求項５】
別の優先度の高い処理が実行されるまで、前記データを読み出した後で、しかも前記処理の何らかのエラーを修正する前に、前記処理を一時停止するステップをさらに有する請求項１記載の方法。
【請求項６】
別の優先度の高い処理が実行されるまで、何らかのエラーを修正した後で、しかも前記修正されたデータを書き込む前に、前記処理を一時停止するステップをさらに有する請求項１記載の方法。
【請求項７】
フラッシュメモリセルアレイを動作させる方法において、
前記アレイ内の少なくとも１つの記憶位置に蓄積されるデータに対してスクラブ・トリガイベントが発生した時点を特定するステップと、
前記アレイ内の前記少なくとも１つの記憶位置に蓄積される前記データを読み出すステップと、
前記少なくとも１つの記憶位置と前記記憶位置から読み出される前記データとに関する情報を一時的に蓄積するステップと、
この情報が蓄積されたままの状態にある間、別のデータのプログラミングを行うか、或いは前記少なくとも１つの記憶位置以外のアレイ内の少なくとも記憶位置から別のデータを読み出したり、または前記記憶位置へ別のデータを読み込んだりするステップと、
その後、前記アレイ内の前記少なくとも１つの記憶位置から読み出される前記読み出されたデータの中に何らかのエラーが存在するかどうかを判定するステップと、
前記アレイ内の前記少なくとも１つの記憶位置から読み出される前記データ内の何らかのエラーを修正しながら、前記蓄積された情報を利用するステップと、
前記修正されたデータを前記アレイの中へ書き込むステップと、
を有する方法。
【請求項８】
前記スクラブ・トリガイベントは、前記第１のブロックに蓄積される前記データ単位のうちの前記少なくとも１つのデータ単位に外乱を与えるイベントを含む請求項７記載の方法。
【請求項９】
フラッシュメモリセルアレイを動作させる方法において、
前記アレイ内の少なくとも１つの記憶位置に蓄積されるデータに対してスクラブ・トリガイベントが発生した時点を特定するステップと、
前記アレイ内の前記少なくとも１つの記憶位置に蓄積される前記データを読み出すステップと、
その後、前記アレイ内の前記少なくとも１つの記憶位置から読み出される前記読み出されたデータの中に何らかのエラーが存在するかどうかを判定するステップと、
前記アレイ内の前記少なくとも１つの記憶位置から読み出されるデータ内の何らかのエラーを修正するステップと、
前記修正されたデータを一時的に蓄積するステップと、
前記修正されたデータが蓄積されたままの状態にある間、別のデータのプログラミングを行うか、或いは前記少なくとも１つの記憶位置以外のアレイ内の少なくとも記憶位置から別のデータを読み出したり、または前記記憶位置へ別のデータを読み込んだりするステップと、
その後、前記修正されたデータを前記アレイの中へ書き込むステップと、
を有する方法。
【請求項１０】
前記スクラブ・トリガイベントは、前記第１のブロックに蓄積されるデータ単位のうちの前記少なくとも１つのデータ単位に外乱を与えるイベントを含む請求項９記載の方法。
【請求項１１】
一括消去可能な最小数のメモリセルからなるブロックに編成されるメモリセルアレイであって、１以上のデータ単位を個々に蓄積する複数のページを含むメモリセルアレイを有する消去可能で再プログラム可能な不揮発性メモリシステムを動作させる方法において、
複数の予め定義されたイベントのうちの少なくとも１つのイベントの発生に応じて、スクラブされるべき少なくとも１つのブロックの少なくとも１つのページを特定するステップと、
第１のセットの読み出し条件と共に前記少なくとも１つのページに蓄積されるデータを読み出すステップと、
前記読み出されたデータの中に何らかのエラーが存在するかどうかを判定し、何らかのエラーが存在すれば、前記エラーを修正することができるかどうかを判定するステップと、
前記読み出されたデータ内の前記エラーを修正できないことを決定するステップに応じて、第２のセットの読み出し条件と共に前記少なくとも１つのページに蓄積される前記データを再び読み出すステップと、
前記再び読み出されたデータの中に何らかのエラーが存在するかどうかを判定し、何らかのエラーが存在すれば、前記エラーを修正することができるかどうかを判定するステップと、
スケジュールされている別のメモリ活動に応じて、前記読み出されたデータまたは再び読み出されたデータに関するさらなるアクションを保留するステップと、
前記別のメモリ活動が終了した後で、かつ前記読み出されたデータまたは再び読み出されたデータのいずれかの中のエラーを修正することができることを決定するステップに応じて、このようなエラーを修正して、修正されたデータを出力するステップと、
前記１つのブロックとは異なる第２のブロックの少なくとも第２のページの中へ前記修正されたデータを書き込むステップと、
を有する方法。
【請求項１２】
前記１つのブロック以外の前記少なくとも１つのブロックの範囲内のページから変化のないデータを前記第２のブロックの中へコピーするステップをさらに有する請求項１１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に不揮発性フラッシュメモリシステムの処理に関し、より詳細には、メモリシステム、特に、非常に大きなメモリセルブロックを有するメモリシステムに蓄積されたデータをリフレッシュし、修正する技術に関する。
【背景技術】
【０００２】
今日使用されている商業的に成功を収めた多数の不揮発性メモリ製品、特に小形のファクタカードの形のメモリ製品が存在し、これらのメモリ製品では、１以上の集積回路チップ上に形成されるフラッシュＥＥＰＲＯＭ（電気的に消去可能でプログラム可能な読み出し専用メモリ）セルアレイが用いられている。必ずというわけではないが、通常別々の集積回路チップ上に在るメモリコントローラは、カードが取り外し可能に接続されるホストとインターフェイスを行い、カード内のメモリアレイの動作の制御を行う。このようなコントローラには典型的に、マイクロプロセッサ、或る不揮発性の読み出し専用メモリ（ＲＯＭ）、揮発性ランダムアクセスメモリ（ＲＡＭ）、並びにプログラミング中およびデータの読み出し中にデータがコントローラを通り抜けるときそのデータから誤り訂正符号（ＥＣＣ）を算出するような１以上の特別の回路が含まれる。いくつかの市販されているカードとして、コンパクト・フラッシュ（登録商標）（ＣＦ）カード、マルチメディアカード（ＭＭＣ）、セキュアデジタル（ＳＤ）カード、スマートメディアカード、パーソナルタグ（Ｐ−Ｔａｇ）、およびメモリスティックカードが挙げられる。ホストには、パーソナルコンピュータ、ノート形コンピュータ、個人用情報機器（ＰＤＡ）、種々のデータ通信装置、デジタルカメラ、携帯電話、携帯用オーディオプレイヤ、自動車用サウンドシステム、および同様のタイプの機器が含まれる。メモリカードの実施構成の他にも、種々のタイプのホストシステムの中へこのタイプのメモリを内蔵することができる。
【０００３】
２つの一般的なメモリセルアレイの構成には、市販のアプリケーションとしてＮＯＲおよびＮＡＮＤがある。典型的なＮＯＲアレイでは、メモリセルは、列方向に延在して隣接するビットラインのソース拡散部とドレイン拡散部との間で接続され、コントロールゲートが、セル行に沿って延在するワードラインと接続される。メモリセルは、ソースとドレインとの間のセルのチャネル領域の少なくとも１部分の上にわたって配置された少なくとも１つの蓄積素子を含む。したがって、蓄積素子上でプログラムされた電荷レベルは、アドレス指定されたメモリセルへ適正な電圧を印加することによってその後読み出すことができるセルの動作特性を制御する。このようなセル、メモリシステムにおけるこれらのセルの利用およびこれらのセルの製造方法についての例が、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１３，４２１号（特許文献３）、第５，３１５，５４１号（特許文献４）、第５，３４３，０６３号（特許文献５）、第５，６６１，０５３号（特許文献６）および第６，２２２，７６２号（特許文献７）に記載されている。
【０００４】
ＮＡＮＤアレイは、個々のビットライン間で１以上の選択トランジスタと接続される１６や３２などの３以上のメモリセルの連続ストリングと１つの基準電位とを利用して複数のセル列を形成する。ワードラインは、これらの多数の列内の複数のセルの両端にわたって延在する。ストリング内の残りのセルを強くオンに転換させることによって、プログラミング中に１つの列内の個々のセルの読み出しと検証とを行うため、ストリングの中を流れる電流は、アドレス指定されたセルに蓄積される電荷レベルに依存するようになる。１つのメモリシステムの一部としてのＮＡＮＤ構成のアレイとその動作との例が、米国特許第５，５７０，３１５号（特許文献８）、第５，７７４，３９７号（特許文献９）、第６，０４６，９３５号（特許文献１０）および第６，５２２，５８０号（特許文献１１）に見られる。
【０００５】
前に援用されている特許で説明されているような最新のフラッシュＥＥＰＲＯＭアレイの電荷蓄積素子は、最も一般的な導電性を有するフローティングゲートであり、典型的には導通的にドープされたポリシリコン材から形成される。フラッシュＥＥＰＲＯＭシステムにおいて有用な別のタイプのメモリセルとして、不揮発性の態様で電荷を蓄積する導通性フローティングゲートの代わりに、非導通性誘電体材料を利用するものがある。シリコン酸化膜、窒化シリコン、およびシリコン酸化膜（ＯＮＯ）から形成される３層誘電体が、導通性コントロールゲートとメモリセルチャネルの上方にある半導通基板の表面との間に挟まれる。セルはセルチャネルから窒化物の中へ電子を注入することによりプログラムされ、その場合これらの電子はトラップされ、限定領域に蓄積され、ホットホールを窒化物の中へ注入することによりセルは消去される。誘電体蓄積素子を用いるいくつかの特定のセル構造とアレイとが、米国公開特許出願第２００３／０１０９０９３号（特許文献１２）に記載されている。
【０００６】
ほとんどすべての集積回路用アプリケーションにおける場合のように、フラッシュＥＥＰＲＯＭメモリセルアレイの場合にも、いくつかの集積回路機能の実現に必要なシリコン基板面積の縮小に対する圧力が存在する。所定のサイズのメモリカードおよび別のタイプのパッケージの蓄積容量を増加させるために、所定の面積のシリコン基板に蓄積することができるデジタルデータ量を増加するか、或いは容量の増加とサイズの小形化の双方を図るようにする要望が継続的に存在する。データの記憶密度を高める１つの方法として、１個のメモリセル当たりおよび／または記憶ユニット或いは蓄積素子当たり２ビット以上のデータを蓄積する方法がある。これは、蓄積素子の電荷レベルの電圧範囲のウィンドウを３以上の状態に分割することにより達成される。このような４状態を利用することにより、個々のセルは、蓄積素子当たり２ビットのデータや、３ビットのデータを記憶する８状態などの蓄積が可能となる。フローティングゲートを利用する多状態フラッシュＥＥＰＲＯＭの構造とその動作については、米国特許第５，０４３，９４０号（特許文献１３）および第５，１７２，３３８号（特許文献１４）に記載されている。さらに、誘電体フローティングゲートを用いる構造については、前述した米国特許出願第１０／２８０，３５２号（特許文献１５）に記載されている。多状態メモリセルアレイの選択された部分は、米国特許第５，９３０，１６７号（特許文献１６）および米国特許第６，４５６，５２８号（特許文献１７）に記載されているように、種々の理由のために２状態（２進）で動作することも可能である。
【０００７】
典型的なフラッシュＥＥＰＲＯＭアレイのメモリセルは、一括消去される個別のセルブロックに分割される。すなわち、この１ブロックが消去単位であり、同時に消去可能な最小数のセルである。個々のブロックは通常１以上のデータページを記憶し、１ページがプログラミングと読み出しとを行う最小限の単位であるが、同時に異なるサブアレイ、すなわちプレーンで２以上のページのプログラミングや読み出しを行うことも可能である。個々のページは通常１以上のデータセクタを記憶し、このセクタサイズはホストシステムによって規定される。一つの例示のセクタには、磁気ディスク駆動装置に関して規定されている標準規格に準拠して５１２バイトのユーザデータと共にユーザデータおよび／またはユーザデータが蓄積されるブロックに関する数バイトのオーバーヘッド情報を示す或る数値が含まれる。このようなメモリは一般に、１６、３２またはそれ以上のページを持つ個々のブロック内に構成され、個々のページは１セクタまたはわずか数セクタのホストデータを蓄積する。
【０００８】
ユーザデータをプログラムしてメモリアレイの中へ入れ、このメモリアレイからユーザデータを読み出す最中の並列性レベルを高めるために、このアレイはプレーンと一般に呼ばれるサブアレイに通常分割され、このプレーンは、並列処理が可能となるようにプレーン自身のデータレジスタおよびその他の回路を備えるため、数個のプレーンまたはすべてのプレーンの各々に対してデータセクタを同時にプログラムしたり、或いはデータセクタを同時に読み出したりすることができるようになる。単一の集積回路上のアレイを物理的に分割してプレーンに変えることも可能であり、或いは別々の１以上の集積回路チップから個々のプレーンを形成することも可能である。このようなメモリの実施構成の例については、米国特許第５，７９８，９６８号（特許文献１８）および米国特許第５，８９０，１９２号（特許文献１９）に記載されている。
【０００９】
メモリをさらに効率的に管理するために、物理ブロックを仮想ブロックまたはメタブロックと一体に論理的にリンクすることも可能である。すなわち、個々のメタブロックが個々のプレーンから１つのブロックを含むように定義される。メタブロックの利用については、国際公開特許出願第ＷＯ０２／０５８０７４号（特許文献２０）に記載されている。メタブロックは、データのプログラミングと読み出し用の宛先としてホストの論理ブロックアドレスにより特定される。同様に、メタブロックのすべてのブロックは一括消去される。このような大きなブロックおよび／またはメタブロックを用いて動作するメモリシステム内のコントローラは、ホストから受信した論理ブロックアドレス（ＬＢＡ）およびメモリセルアレイ内の物理ブロック数（ＰＢＮ）の間での変換を含む複数の機能を実行する。ブロック内の個々のページは典型的に、このブロックアドレス内のオフセット値によって特定される。アドレス変換は、論理ブロック数（ＬＢＮ）と論理ページ用の中間項の利用を伴う場合がしばしばある。
【００１０】
メタブロックのデータ容量が増すにつれて、メタブロックに蓄積されるデータの更新頻度（更新の可能性）はしばしば高くなる。１つの論理的メタブロックの更新されたセクタは通常、別の物理的メタブロックへ書き込まれる。データを統合するための同じプログラミング処理の一部として、変化のないセクタも原メタブロックから新たな物理的メタブロックへコピーされる。これとは別に、変化のないデータは、この変化のないデータが更新データと共に将来単一のメタブロックの中へ統合されるまで、原メタブロックの中にそのまま残っていてもよい。
【００１１】
消去されたブロックプール内に保持されるいくつかの特別のブロックを用いて大きなブロック、すなわちメタブロックシステムを動作させることは、一般に行われていることである。１ブロックの容量よりも少ない１以上のデータページが更新されるとき、プールから消去されたブロックへ更新されたページを書き込み、原ブロックから消去プールブロックへ変化のないページデータをコピーすることは、一般に行われていることである。この技法の変形例については、前述した国際公開特許出願第ＷＯ０２／０５８０７４号（特許文献２０）に記載されている。時間の経過に伴い、ホストデータファイルが書き換えられ、更新された結果、多くのブロックが、有効データを含む相対的に少数のページと、もはや最新のものではないデータを含む残りのページとに結局落ち着くことが可能となる。アレイのデータ蓄積容量を効率的に利用することができるようにするために、有効データの論理的に関連づけられたデータページが、複数のブロックの間でフラグメントから一括して時折収集され、より少数の数のブロックの中へ一体に統合される。この処理は、“ガーベッジコレクション”と一般に称される。
【００１２】
個々のフラッシュＥＥＰＲＯＭセルは、１以上のビットデータを表す電荷量を電荷蓄積素子または電荷蓄積ユニットの中に蓄積する。蓄積素子の電荷レベルはそのメモリセルのしきい値電圧（一般にＶＴとして引用される）を制御し、このしきい値電圧はセルの蓄積状態を読み出す基礎として利用される。しきい値電圧ウィンドウは複数の範囲に分割され、メモリセルの２または３以上の蓄積状態の各々の蓄積状態に対して１つの範囲が当てられる。これらの範囲は、個々のセルの蓄積状態の決定を可能にする基準となる検知レベルを含む保護帯域によって分離される。隣接するメモリセルまたは他の関連づけられたメモリセル、ページまたはブロックで行われる電荷外乱プログラミング処理、読み出し処理または消去処理の結果として、これらの蓄積レベルはシフトする。例えば、第２のセットのメモリセルと回線または回路を共用する１つのセットのメモリセルのプログラミングは第２のセットの電荷レベルに外乱を与える可能性がある。この寄生的外乱の最終的結果として、蓄積システムコントローラの部分で修正アクションが行われなかったならば、曝された領域内の処理中でないデータが破損している場合もあり、極端な場合、データと共に蓄積されたいずれの誤り修正符号（ＥＣＣ）の修正能力を越えている場合もあるという点が挙げられる。このようなデータの破損はユーザに対してデータ損失を生じる結果となり、したがって蓄積システムを信頼できないものにすることになる。特定のメモリセルアレイにおけるこのような外乱の程度および性質はメモリセルアレイの特定の構成、構造および処理に依存する。
【００１３】
したがって、外乱を引き起こす処理によって、電荷レベルの定義範囲から電荷レベルが完全にシフトされてしまう前に、エラーを含むデータが読み出される電荷レベルの状態範囲の元の中心へシフトする電荷レベルを時折復元することができると有益である。データリフレッシュまたはスクラブと称されるこのような処理については、米国特許第５，５３２，９６２号（特許文献２１）および第５，９０９，４４９号（特許文献２２）に記載されている。前述したさらなる態様として、誤り修正符号（ＥＣＣ）を利用するメモリシステムにおいて、メモリから読み出される或る数のエラーを含むデータビットをＥＣＣを用いて修正することも可能であり、修正されたデータはメモリの以前消去された部分へ書き換えられる。データの書き換え処理は、書き込まれたメモリセルのしきい値レベルの各々をその指定された状態範囲内へ戻す原因になる。というのは、データのプログラミングは通常、セルに蓄積されるデータを表す所望の範囲に達するまで、蓄積された電荷の調整と、結果として生じたメモリセルのしきい値レベルの読み出し検証処理とを伴うことになるからである。
【特許文献１】米国特許第５，０７０，０３２号
【特許文献２】米国特許第５，０９５，３４４号
【特許文献３】米国特許第５，３１３，４２１号
【特許文献４】米国特許第５，３１５，５４１号
【特許文献５】米国特許第５，３４３，０６３号
【特許文献６】米国特許第５，６６１，０５３号
【特許文献７】米国特許第６，２２２，７６２号
【特許文献８】米国特許第５，５７０，３１５号
【特許文献９】米国特許第５，７７４，３９７号
【特許文献１０】米国特許第６，０４６，９３５号
【特許文献１１】米国特許第６，５２２，５８０号
【特許文献１２】米国公開特許出願第２００３／０１０９０９３号
【特許文献１３】米国特許第５，０４３，９４０号
【特許文献１４】米国特許第５，１７２，３３８号
【特許文献１５】米国特許出願第１０／２８０，３５２号
【特許文献１６】米国特許第５，９３０，１６７号
【特許文献１７】米国特許第６，４５６，５２８号
【特許文献１８】米国特許第５，７９８，９６８号
【特許文献１９】米国特許第５，８９０，１９２号
【特許文献２０】国際公開特許出願第ＷＯ０２／０５８０７４号
【特許文献２１】米国特許第５，５３２，９６２号
【特許文献２２】米国特許第５，９０９，４４９号
【発明の開示】
【００１４】
包括的なスクラブ処理は、フラッシュメモリシステムの中に含まれ、同じ集積回路チップ上の１つのグループのメモリセルに対して行われるプログラミング処理、読み出し処理や消去処理に起因して生じる別のグループのメモリセル内の蓄積レベルの外乱を補正するものである。メモリセルアレイのサイズが縮小するにつれて、このようなデータ外乱が生じる潜在的可能性は大きくなる。スペースを節減するために、種々の信号ラインをグループのメモリセル間で共用するため、１つのグループが、別のグループのメモリセルのプログラミング中、読み出し中或いは消去中に、電圧および／または電流に潜在的に反復して曝される経験を受ける傾向がある。すべてのグループのメモリセルに蓄積されるデータのスクラブを組織的に、連続して行うことによって、時間経過に伴う蓄積されたデータの破損は大幅に減少する。また、電荷レベルの意図されたレベルに合わせて電荷レベルを系統的に復元することによって外乱を受けた電荷レベルが修正されるとき、さらに狭い電圧しきい値状態範囲の数の増加を伴う１個のメモリセル当たりの増加ビット数の蓄積が実際に行われる。
【００１５】
スクラブ処理は、潜在的に外乱を引き起こす信号に曝された領域内のデータの読み出し処理を必然的に伴い、このデータが外乱を受けていると判定されるならば、何らかの修正アクションを実施する。データの完全性をチェックすることによって外乱を検出することも可能であり、例えば、データの読み出しおよびデータのＥＣＣのチェック結果の取得などを行うことができる。修正アクションは同じ記憶位置または別の記憶位置におけるデータの書き換えを必然的に伴う場合もあり、またより高いレベルの欠陥処理またはデータ管理処理を含む場合もある。
【００１６】
スクラブ処理は読み出されるデータの完全性に合わせて適宜行うことも可能である。例えば、データエラーを示す１つのしきい値レベルが１つの領域のメモリセルアレイで発見された場合、その領域でのスクラブレートを上げることも可能である。逆に、エラーがなかったり、或いはしきい値未満の数個のデータエラーしか所定の領域内で検知されなかった場合、これによって所定の領域のスクラブレートを下げることが可能となる。スクラブの頻度と位置とを利用レベルに適合させ、別のシステムパラメータに適合させることも可能である。スクラブのこれらの特徴およびその他の特徴が算出されて、データの完全性を保持する必要性と、高レベルのシステムパフォーマンスを保持する必要性との間のバランスが与えられる。データの完全性の改善を図る可能性が大きくないスクラブ処理は特に回避される。
【００１７】
メモリシステムがデータの読み出しや書き込みを行っていないとき、バックグラウンドでスクラブ処理を行うことが望ましい。メモリシステムは、ホストがメモリに対してデータの蓄積や検索を要求しなくなる時点を示すためにホストへ目を向けることも可能であり、時間中スクラブ処理の実行が可能である。
【００１８】
たとえ特定のスクラブ読み出し時に１以上のデータエラーが検出されているとしても、ＥＣＣによってデータを読み出すことによりエラーの修正が可能であれば、システムパフォーマンスを保持するために、修正アクションを行わない決定をすることも可能である。個々のセクタのユーザデータとオーバーヘッドデータとがこれらデータ自体のＥＣＣを含むとき、オーバーヘッドデータ内のデータエラーが修正されていない状態になることが許される可能性は、ユーザデータ内における場合よりも低い。
【００１９】
通常の条件下で読み出されるスクラブデータ用としてＥＣＣによって修正すべきビットエラーの数が多すぎる場合には、さらに緩和されたセルの読み出し基準条件で、通常の範囲の外側にシフトされている蓄積された電荷レベルを有するデータの再読み出しを行うことが可能である。ＥＣＣによって正しく検証されるとすぐに、通常の電荷範囲レベル内に読み出されたデータを再び書き込むことも可能となる。逆に、データのスクラブ読み出しがエラーを露呈しない場合、蓄積されたデータの品質を決定するためにさらに限定的な基準条件の下でデータを再び読み出すことも可能である。すなわち、電荷レベルの最適範囲の外側にシフトした電荷レベルが検出されるため、元のスクラブ修正アクションの一部として、このような範囲内へ電荷レベルを再び書き込むことが可能となる。
【００２０】
多数のホストデータセクタを個々に蓄積するメモリセルからなる大きなブロック、すなわちメタブロックを利用するメモリシステムでは、スクラブ処理中に修正される第１の物理ブロックのデータセクタを第２のブロックの中へ再び書き込むことも可能である。第１のブロックの残りのデータセクタは第２のブロックの中へコピーされ、この処理は前述したメモリ管理の消去プール法に一致するものである。修正されたセクタと同じブロックまたはメタブロックから得られる別のデータセクタを何らかの別の理由のために動かす必要が生じるまで、ブロックまたはメタブロックを交互にスクラブ修正されたデータセクタの一時記憶域の専用ブロックとすることも可能であり、この時点で、スクラブ修正されたデータセクタにおけるガーベッジコレクションを同じブロックまたはメタブロックの別のデータセクタと再結合することも可能である。これによってシステムパフォーマンスの改善が図られる。
【００２１】
或る指定されたデータに関して修正アクションを行う必要があることが決定されるとすぐに、その時点で修正アクションを行うことがシステムパフォーマンスに不利な影響を与える可能性があり、かつ修正アクションが後で行われる前に必要な場合に修正アクションを行うことなくデータの読み出しが可能であれば、その修正アクションを保留することも可能である。この保留の時点に決定されるようなすべての修正データ、アドレスおよび種々のパラメータは一時的に蓄積され、その後、保留された修正アクションの実行の際にこれらのデータ、アドレスおよびパラメータは検索される。メモリセルからなる大きなブロック、すなわちメタブロック内に編成されたシステムでは、所定のブロックまたはメタブロックから得られる所定のデータ量が修正アクションに対してスケジュールされるまで、修正スクラブアクションを保留することも可能であり、その場合、所定のブロックまたはメタブロックのすべての保留されたデータセクタも同時に修正される。これによって、所定のブロックまたはメタブロックのデータセクタを再び一体に統合するときに行われるデータのコピー量と書き換え量とを減らすことが可能となる。
【００２２】
最後に、所定のメモリセル（セル列、セルブロック、またはある別のセルユニット）が頻繁なスクラブを必要とすることが判明した場合、セルユニットの中に蓄積されたデータがそれ以上もはや可読不能になったり、或いは修正不能になったりするところまでデータのセルユニットが劣化しないうちに、システムの中からユニットのマップアウトを行うことも可能である。
【００２３】
前述した特徴は、具体的な用途に応じて、種々の組合せで、個別にまたは一体として実現可能である。本願のスクラブシステムの追加の態様、利点および特徴は、添付図面と関連して行うことが望ましい例示の実施形態についての以下の説明の中に含まれる。本願明細書のすべての特許、特許出願、論文、並びにその他の文献は、その全体が参考により本願明細書において援用されている。
【発明を実施するための最良の形態】
【００２４】
メモリ構成およびそれらの処理
最初に図１Ａを参照すると、フラッシュメモリにはメモリセルアレイおよびコントローラが設けられている。図に示されている例では、２つの集積回路装置（チップ）１１と１３は、メモリセルアレイ１５と種々の論理回路１７とを含む。論理回路１７は、データ、コマンドおよび状態回路を介して別々のチップ上でコントローラ１９とインターフェイスを行い、アレイ１３に対するアドレス指定、データ転送および検知およびその他の支援も行う。複数のメモリアレイチップは、設定された蓄積容量に応じて１つのチップから多くのチップとすることができる。コントローラおよびアレイの一部または全体を単一の集積回路チップ上へ交互に組み合わせることも可能であるが、これは一般に経済的な代替ではない。
【００２５】
典型的なコントローラ１９には、マイクロプロセッサ２１、主としてファームウェアを蓄積するための読み出し専用メモリ（ＲＯＭ）２３およびメモリチップ１１と１３へ書き込むか、或いはメモリチップ１１と１３から読み出すかのいずれかを行うための主としてユーザデータの一時記憶域用のバッファメモリ（ＲＡＭ）２５が含まれる。回路２７はメモリアレイチップとインターフェイスを行い、回路２９は接続部３１を介してホストとインターフェイスを行う。この例では、データの完全性はコード計算専用回路３３を用いてＥＣＣの算出を行うことにより決定される。ユーザデータが蓄積用としてホストからフラッシュメモリアレイへ転送されるとき、回路はデータからＥＣＣを算出し、コードはメモリに蓄積される。ユーザデータがその後メモリから読み出されると、これらのデータは同じアルゴリズムによってＥＣＣを算出し、また算出されかつデータと共に蓄積されたコードとコードを比較する回路３３の中をデータは再び通り抜ける。これらのコードの比較が行われる場合、データの完全性が確認される。これらのコードが異なるものであった場合、利用される特定のＥＣＣアルゴリズムに応じて、アルゴリズムによってサポートされている数まで、エラー状態にあるビットを特定し、修正することが可能である。
【００２６】
図１Ａの接続部３１のメモリはホストシステムの接続部３１’に差込まれ、その一例が図１Ｂに示されている。インターフェイス回路３５を介する図１Ａのホストとメモリとの間でデータは転送される。また、典型的なホストには、マイクロプロセッサ３７、ファームウェアコードを蓄積するためのＲＯＭ３９およびＲＡＭ４１も含まれる。別の回路およびサブシステム４３には、特定のホストシステムに応じて、大容量磁気データ蓄積用ハードディスク、キーボード用インターフェイス回路、モニタなどが含まれる場合が多い。このようなホストのいくつかの例には、デスクトップ形コンピュータ、ラップトップ形コンピュータ、ハンドヘルド形コンピュータ、パームトップ形コンピュータ、個人用情報機器（ＰＤＡ）、ＭＰ３、並びに他のオーディオプレイヤ、デジタルカメラ、ビデオカメラ、電子ゲーム用機械、無線電話装置および有線電話装置、応答用機器、ボイスレコーダ、ネットワークルータ、その他が含まれる。
【００２７】
図１Ａのメモリは、図１Ｂのホストを用いて取り外し可能に接続可能な形の小形の封入形カードとして実現可能であり、このカードには、コントローラおよびコントローラのすべてのメモリアレイ回路装置が含まれる。すなわち、差込み形接続部３１と３１’によって、カードの切断および別のホストへの移動が可能になり、或いは別のカードをホストと接続することによる交換が可能になる。これとは別に、このメモリアレイ装置は電気的におよび機械的にカードと接続可能な別個の封入形カードであってもよく、このカードは、コントローラと接続部３１とを含むカードであってもよい。さらなる代替例として、図１Ａのメモリは図１Ｂのホスト内に内蔵することも可能であり、その場合、接続部３１と３１’は取り外せないようにつくられている。この場合、メモリは通常他の構成要素と共にホストのエンクロージャ内に内包される。
【００２８】
本願明細書で使用するいくつかの用語について或る程度説明して便宜を図ることにする。“セクタ”とは、ホストの読み出し処理中および書き込み処理中にアクセスされる独立にアドレス指定可能なデータ単位を意味する。１データセクタは典型的には５１２バイトのサイズである。
【００２９】
本願明細書で使用されているような“メモリシステム”とは、１以上の不揮発性記憶装置と、メモリ間を往来するデータの蓄積、並びに検索に必要なハードウェアおよび／またはソフトウェアから成るシステムである。メモリシステムの機能性全体の変動部分は、完全にデータの蓄積専用のサブシステムまたはホストシステム自体に実装可能である。メモリシステムはホストシステム内に内蔵することも可能であるし、或いは非常に小形のカードなどの形で取り外し可能にすることも可能である。例えば、記憶媒体がコントローラ部分から取り外し可能である場合のように、取り外し可能なメモリシステムの部分それ自体も取り外し可能にすることが可能である。ホストシステムの、特にメモリシステムにおけるデータ蓄積専用のいずれの部分もメモリシステムの一部と見される。このようなホストの機能性は、ホストシステムに常駐する任意のハードウェアに併せて、専門化されたソフトウェアライブラリ、ドライバ、またはアプリケーションを含むようにすることも可能である。
【００３０】
本願明細書で使用する“ホストシステム”とは一般に、データ蓄積以外の機能性を有し、しかもメモリシステムと接続するか、或いはその中にメモリシステムを内蔵するかのいずれかのシステムである。データの蓄積のみを目的とするホストシステムも在り得る。
【００３１】
本願明細書に記載されているフラッシュメモリに蓄積されるデータのリフレッシュ処理およびスクラブ処理を行う種々の技法は、種々の特定の構成を有するシステムで実現可能であり、そのシステムの例が図２〜図６に示されている。図２は、メモリアレイの一部分を示し、メモリセルがブロックにグループ分けされている。個々のブロック内のセルは単一の消去処理の一部として通常同時に一括消去可能である。物理ブロックが最小消去単位である。
【００３２】
図２の個々のメモリセルブロックのサイズは変更可能であるが、１つの市販の実施形態では、個々のブロック内に単一のデータセクタが含まれている。このようなデータセクタの内容が図３に例示されている。ユーザデータ５１は典型的には５１２バイトである。ユーザデータ５１に加えて、ユーザデータから算出されるＥＣＣ５３と、セクタデータおよび／またはセクタがプログラムされるブロックに関連するパラメータ５５と、パラメータ５５から算出されるＥＣＣ５７と、その他の任意の包含可能なオーバーヘッドデータとを含むオーバーヘッドデータがある。パラメータ５５はブロックが経験したプログラミング／消去サイクルの数（“ホットカウント値”）と関連する量を含むことも可能であり、この量は個々のサイクルまたはプリセットされたサイクル数の後に更新される。この経験量の１つの利用例として、すべてのブロックの使用状況の均等化（消耗度の均等化）を図るために、異なる物理ブロックアドレスに対する論理ブロックアドレスの定期的な再マッッピングがある。経験量の別の利用として、電圧の変更並びに異なるセクタが経験したサイクル数の関数としてのプログラミング、読み出しおよび／または消去の他のパラメータの変更がある。スクラブされるべきブロックを特定するプロセスでの経験量の追加の利用例について以下説明する。
【００３３】
パラメータ５５は、メモリセルの蓄積状態の各々に割り当てられるビット値の指示（メモリセルの蓄積状態の“回転”と一般に呼ばれる）を含むことも可能である。すなわち、データの論理状態は異なる物理的な蓄積状態にマップされる。このマッピングも消耗度の均等化の際に有益な影響を与えることになる。１以上のフラグがステータス、すなわち状態を示すパラメータ５５に含まれる場合もある。プログラミングおよび／またはブロックの消去に使用されるべき電圧レベルの指示はパラメータ５５内に蓄積することも可能であり、ブロックが経験したサイクル数および他の要因が変わるにつれて、これらの電圧は更新される。オーバーヘッドパラメータ５５の別の例には、ブロック内の任意の欠陥セルの識別子と、この物理ブロックの中へマップされるデータブロックの論理アドレスと、主要ブロックに欠陥がある場合の任意の代用物理ブロックのアドレスとが含まれる。任意のメモリシステム内で使用されるパラメータ５５の特定の組合せは設計に基づいて変動する。また、オーバーヘッドデータのいくつかまたはすべても、ユーザデータ、或いはこのユーザデータに関連するオーバーヘッドデータを含むブロックの中にではなく、このような機能専用の物理ブロックに蓄積することも可能である。
【００３４】
図４のマルチセクタ物理ブロックは図２の単一のデータセクタブロックとは異なるものである。ブロック５９の例には、未だ最小消去単位であるが、４ページ（ページ０〜３）が含まれ、これらページの各々が最小のプログラミング単位となる。通常セクタのデータから算出される少なくともＥＣＣを含むオーバーヘッドデータと共に、１以上のホストデータセクタが個々のページに蓄積され、このホストデータセクタは図３のデータセクタの形にすることも可能である。すべてのページよりも少ないデータを更新するとき、この更新データは典型的には消去されたブロックプールから得られる消去されたブロックのページに蓄積され、残りの変化のないページ内のデータは原ブロックから新しいブロックの中へコピーされる。次いで、原ブロックは消去される。この大きなブロック管理技法の変形例には、原ブロックからデータを移動させたり、或いは消去したりすることなく、別のブロックのページ内へ更新データを書き込む処理が含まれる。この結果、同じ論理アドレスを持つ複数のページが生じることになる。最新のデータページは、セクタオーバーヘッドデータまたはページオーバーヘッドデータ内のフィールドとして記録されるプログラミング時刻などの或る便利な技法によって特定される。
【００３５】
さらに別のマルチセクタ物理ブロックの配置構成が図５に例示されている。この例では、メモリセルアレイの総計は２または３以上のプレーンに物理的に分画され、４つのプレーン（プレーン０〜３）が示されている。個々のプレーンは、それ自身のデータレジスタ、センス増幅器、アドレス指定デコーダなどを備えるメモリサブアレイであり、他のプレーンから広く独立して処理することができるようになっている。すべてのプレーンを単一の集積回路装置または複数の装置に設けることも可能であり、一例として、個々のプレーンを１以上の別個の集積回路装置に形成することが挙げられる。図５のシステム内の各ブロックには１６ページ（ページ０〜１５）が含まれ、各ページには１、２または３以上のホストデータセクタの容量と或るオーバーヘッドデータとが含まれる。
【００３６】
さらに別のメモリセルの配置構成が図６に例示されている。個々の物理プレーンには多数のセルブロックが含まれている。処理の並列性レベルを上げるために、異なるプレーン内のブロックが論理的にリンクされて、メタブロックが形成される。このような１つのメタブロックが、プレーン０のブロック３、プレーン１のブロック１、プレーン２のブロック１およびプレーン３のブロック２から形成されるとして図６に例示されている。個々のメタブロックは論理的にアドレス指定可能であり、メモリコントローラは個々のメタブロックを形成するブロックの割り当てと追跡とを行う。ホストシステムは個々のメタブロックの容量に等しいデータ単位でメモリシステムとインターフェイスを行うことが望ましい。図６のこのような論理データブロック６１は、例えば、論理ブロックアドレス（ＬＢＡ）によって特定され、この論理データブロック６１はコントローラによってマップされ、メタブロックを形成するブロックからなる物理ブロック数（ＰＢＮ）にされる。メタブロックのすべてのブロックは一括消去され、個々のブロックから得られるページがプログラムされ、同時に読み出されることが望ましい。
【００３７】
図２〜６に関して前述したメモリを実施するために用いることができる多くの異なるメモリアレイ構成、構造および固有のセル構造が存在する。２、３の外乱メカニズムを例示するためにＮＡＮＤ形メモリアレイの１つのブロックが図７に示されている。共通電圧源６５（ＶＳＳ）と、多数の列方向のストリング直列接続のメモリセルが、アドレス指定デコーダ、ドライバ、読み出しセンス増幅器などを含む回路６７と順番に接続されるビットラインＢＬ０〜ＢＬＮのうちの１本のビットラインとの間で接続される。詳細には、このような１つのストリングには、ストリングの対向する終端において選択トランジスタ７７と７９との間で直列に接続される電荷蓄積トランジスタ７０，７１．．．７２，７４が含まれる。この例では、個々のストリングに１６個の蓄積トランジスタが含まれるが、別の個数の蓄積トランジスタも可能である。ワードラインＷＬ０〜ＷＬ１５が、個々のストリングの１つの蓄積トランジスタの両端にわたって延在し、アドレス指定デコーダとワードラインの電圧源ドライバとを含む回路８１と接続される。ライン８３と８４にかかる電圧が、電圧源６５および／またはビットラインＢＬ０〜ＢＬＮのいずれかとのブロック内のすべてのストリングの接続をストリングの選択トランジスタを介して一括制御している。データとアドレスとはメモリコントローラから得られる。
【００３８】
ブロックの電荷蓄積トランジスタ（メモリセル）からなる個々の行によって、まとめてプログラムされ、読み出されるページが形成される。ページデータのプログラミングまたは読み出しを行うためのこのようなページのワードライン（ＷＬ）に適正な電圧が印加される一方、残りのワードラインに印加されるべき電圧が選択されて、ワードラインのそれぞれの蓄積トランジスタに導通性が与えられる。１行（１ページ）の蓄積トランジスタのプログラミングまたは読み出しを行う過程で、事前に蓄積された、選択されていない行にかかる電荷レベルが、すべてのストリングの両端にわたって、かつストリングのワードラインに印加される電圧に起因して外乱を受ける可能性がある。
【００３９】
スクラブ処理の種々の態様
２つの主要なスクラブ段、すなわち読み出し段と修正アクション段とが存在する。スクラブ読み出し段は、特別のホスト処理の終了と直接関連しない、また消耗度の均等化のような複数の他のシステム処理とも直接関連しないメモリシステム領域でのデータの選択と読み出し処理とを一般に必要とするという点で他のシステムの読み出し処理とは区別される。スクラブ読み出しの別の顕著な特徴として、このシステムによって、読み出されたデータから有益な情報が収集されることはなく、代わりにデータの完全性のチェックの結果を得ることがこの処理の目的であるという点が挙げられる。システムに対する後続するアクションは、完全性のチェックの結果によってガイドされるものであり、特にデータ自体によってガイドされるわけではない。このシステムは、データが完全性のチェックに失敗し、修正アクションが必要となる場合、オーバーヘッドデータなどの読み出されたデータから得られる何らかの情報の利用をその後必要とする可能性もある。特別のホスト処理を終了しないこと、およびいずれの有益なデータもメモリから取得しないという特徴が、このシステムにより行われるスクラブ読み出しと他のデータ読み出しとの間の根本的な相違点である。
【００４０】
スクラブ読み出しに対する特定領域の選択は、記憶装置の物理的性質との関係の中で、システム処理の通常の進行時に行われる読み出し処理、書き込み処理、消去処理を行う位置と回数とによって一般にガイドされる。一般に、スクラブ読み出しは、別の領域での処理の結果として電圧、電流、またはクロストークに曝されているメモリアレイ領域で行われる。これとは別に、スクラブ読み出し位置を別のメモリ処理から分離させ、決定論的数列または乱数列に従わせることも可能である。しかし、これは、さらに多くの外乱を受けた領域と同じ量のカバーエリアを得るためにはさらに多くの読み出しを行う必要があるため、システムパフォーマンスの損失を招く結果となることもある。
【００４１】
追加のスクラブ読み出しの態様として、スクラブ読み出し処理を行う時点の選択がある。一般に、複数のホスト処理、複数の物理的読み出し、書き込み処理および／または消去処理、時間、ホストの使用状況の特徴、或いは或る乱数列または疑似乱数列などのいずれかの要因の数に応じてスクラブ処理を開始することができ、乱数列の生成とチェックとが、このうちのいずれかの係数と関連することがある。
【００４２】
スクラブ書き込みは一般に、スクラブ読み出し中に読み出されるデータの完全性のチェックの失敗の結果としてこのスクラブ書き込みが行われるという点で他のシステムの書き込みとは区別される。スクラブ書き込みはスクラブ読み出しとの関係の中で一意のものである。スクラブ書き込みに類似するメカニズムを持つ別の書き込み処理を行うことも可能であるが、スクラブ書き込み処理の特定の目的のためにこのような書き込みメカニズムが実行されることはない。１つの例では、通常のメモリシステム処理の過程で行われる読み出し処理または書き込み処理の後、完全性のチェックの失敗の結果として書き込み処理を行うことも可能である。別の例では、スクラブ読み出しが存在しない場合にリフレッシュ処理を行うことを目的として、データの読み出し処理とデータの完全性のチェック処理に基づかず、代わりに何らかの別の要因に基づいて書き込みを行う決定をして、書き換え処理を行うことも可能である。このような要因の１つとして、高度の利用または露出を含むアレイ領域の存在が考えられ、その場合、領域内のデータを書き換えたり、或いは移動させたりすることが可能となる。決定論的またはランダムにデータの連続的な移動処理またはリフレッシュ処理を行うことも可能である。消耗度の均等化を意図してデータの読み出しと書き換えとを行うことが可能となるが、データには、データのリフレッシュ処理が行われるという意図しない利点が得られ、外乱問題が解決されることになる。
【００４３】
特に、データ単位の相対的な新しさを利用して、データ単位がスクラブを開始する別の基準を満たすとき、データ単位のスクラブを開始するかどうかの判定を行うことができる。すなわち、データ単位が消耗度の均等化の一部として新しく再プログラムされる場合、データ統合（ガーベッジコレクション）や、以前のスクラブ処理、または他の処理や現在のスクラブ処理をスキップすることができる。というのは、これらのデータは新しくリフレッシュされたばかりであるからである。例えば、経験カウント値（“ホットカウント値”）またはブロックのオーバーヘッドデータの一部などにデータ単位と共に蓄積されるタイムスタンプを用いて種々のデータ単位の相対的な新しさを保持することも可能である。これとは別に、物理ブロックに蓄積されるデータの新しさに従って物理ブロックのグループ分けを行うことも可能であり、１つのブロックが属するグループはそのブロックのオーバーヘッドデータとして蓄積される。別様にスクラブの候補になるブロックの相対的な新しさは、実際にスクラブされるブロックの選択時の１つの要因として利用される。次いで、注意を必要とするほどそれらの蓄積された電荷レベルが十分に外乱を受けることが予想されるような長い間蓄積されているデータ単位にスクラブ処理を限定することによってシステムパフォーマンスの改善が図られる。
【００４４】
蓄積されたデータの相対的な新しさをモニタするために、どのくらい新しくブロックが再プログラムされるかに基づいて、論理ブロックまたは物理ブロックのいずれかを効果的に複数のセットにグループ分けすることも可能である。メモリアレイ全体内のすべてのブロック、或いはこれとは別に、アレイのプレーン、ゾーン或いは他の部分内のブロックに初期の相対的なホットカウント値を設けることも可能であり、ブロックが再プログラムされる度に、相対的なホットカウント値を最も新しく移動させたセットまたはグループの値に更新することも可能である。最も新しく再プログラムされたグループの中に一定数のブロックが生じるとすぐに、最も新しく再プログラムされたグループ値を増分することも可能であり、次いでその後再プログラムされるいずれのブロックも新たなグループ値に更新することが可能である。この結果、最も新しく再プログラムされたブロックと、最も古く再プログラムされたブロックとを相対的に明瞭に区別することによって別個のグループを形成することも可能となる。一般に、ブロックの相対的なホットカウント値のロールオーバーを行って相対的に少数のフィールドを利用することができるようにすることが可能となる。
【００４５】
相対的なホットカウント値を利用するとき、８個の可能な値が存在する場合、値‘０’〜‘７’などの具体例では、ほぼすべてのブロックはベース値‘０’から始まることも可能である。最も古いデータを含むブロックを特定する値から最も新しくプログラムされたブロックを表す値の間の空隙を示す１つの値を予約しながら、８つの値の中から７つの値を使用することも可能である。この例では、書き込まれたブロックは、これらのブロックが最も新しくプログラムされるものであることを示す新たな値‘１’を受け取る。一定数のブロックが新たな値‘１’に更新されるとすぐに、その後にプログラムされるブロックは新たな値‘２’を受け取ることも可能である。一定数のブロックが最終的に値‘２’に割り当てられるとすぐに、新たに再プログラムされたブロックに値‘３’を割り当てることも可能となる。ある時点で、カウント値がロールオーバーして、最も古く使用されたブロックが値‘２’を有するようになり、最も新しくプログラムされたブロックは値‘０’を有し、値‘１’が２つの値の間の空隙を示すため、最も古いデータと最も新しいデータとを持つブロックの値が明瞭に特定されるようになる。最終的に、最も古いビンの中のすべてのブロックは、ホスト書き込み、スクラブ、消耗度の均等化、または別のメカニズムのいずれかを介して書き換えられる。前述した例では、ビン‘２’は空になり、この値は空隙として使用することができる一方、ビン‘１’を用いて最も新しく書き込まれたブロックを特定することができる。ブロックが別の基準に基づいてスクラブ処理の候補になるとき、ブロックの相対的なホットカウント値が、さらに新しく再プログラムされるブロックのグループのうちの１つのグループの中にブロックを置くならば、ブロックのスクラブをスキップすることも可能となる。
【００４６】
これとは別に、論理ブロックまたは物理ブロックのいずれかまたは双方の絶対ホットカウント値を保持することも可能であり、この場合システムはスクラブ決定を行うことができるようなホットカウント値を利用することが望ましい。すなわち、ブロックが再プログラムされると、その絶対ホットカウント値は増分、減分されるか、またそうでない場合には保持されて、ブロックが再プログラムされる総回数が表示される。多数の再プログラミング処理を示す絶対ホットカウント値を持つブロックは典型的に、少数の再プログラム処理を示す絶対ホットカウント値を持つブロックよりも新しく再プログラムされる。したがって、相対的に多数の再プログラム処理によってブロックに蓄積されるデータのスクラブ処理のスキップを行うことも可能となる。というのは、データが著しい外乱を受けているということはありそうにないからである。
【００４７】
多くの特定のスクラブアルゴリズムおよび交互に行うことも可能な関連するメモリ処理が存在する。スクラブ処理はメモリシステムコントローラによって、またはメモリセル集積回路装置（チップ）の各々で制御可能であるか、或いは部分的または全体的にホストによって制御することさえ可能である。メモリシステムは取り外し可能にホストと接続することも可能であり、或いはホスト内に内蔵することも可能である。
【００４８】
スクラブ処理の読み出し段は複数の様々な方法で実行することも可能である。スクラブレートを同調させて、指定されたレベルのデータの完全性を保持しながら、パフォーマンスの最適化を図るようにすることも可能である。例えば、スクラブ処理と、データセクタの読み出しとが同時に行われる双方のレートを同調させることも可能である。このような同調はスクラブアルゴリズムの一部として自動的に行うことができる。例えば、スクラブ処理を行うレートおよび位置は、異なるメモリ領域内の不均等な外乱への露出レートに一致させることも可能である。システムパフォーマンスの最適化を図ったり、或いは特定のリアルタイムの必要性を満たしたりするために、スクラブ読み出しを保留することも可能である。
【００４９】
スクラブ読み出しを行う方法には種々の代替例が存在する。例えば、基準となる基準レベルとマージンを設けた基準レベルの双方の基準レベルと共に１つのセットのデータを読み出すことも可能である。このマージン量は、遭遇する特定の外乱メカニズムを目標としてもよい。例えば、ＥＣＣによって読み出されたデータを修正できない場合、より広いマージンの読み出しによってデータを回復することも可能である。データがまったくエラーなく正常に読み出される場合、より狭いマージンによる読み出しによってデータの品質情報を提供することができる。
【００５０】
スクラブ読み出し後、修正アクションに関与するかどうかの判定が行われる。このような決定を行う基礎になり得る要因の中に、検出されるエラービット数および／またはエラービットパターンに基づく活動レベルが含まれる。
【００５１】
修正アクションは、メモリ内の同じ記憶位置または別の記憶位置に、読み出しデータの書き換えを行う処理を含むのが最も一般的である。システムパフォーマンスの最適化を図るために、このようなスクラブ書き込みを保留して、或いは特定のリアルタイムの必要性を満たすことも可能である。修正アクションは、スクラブ書き込み処理中のデータの回転をさらに含むことができる。すなわち、特定の蓄積データを表すメモリセル状態は以前の状態から変更される。修正アクションは、システムからの外乱に対して感受性が強いと見なされるセル、列或いは別の構造のマッピングも含むことができる。
【００５２】
ホストプロトコルの大部分は、メモリシステムとの抽象的なインターフェイスを有し、それによってホストは、メモリの論理ブロックアドレス（ＬＢＡ）番号によって一般的にアドレス指定を行う。ＡＴＡホストプロトコルにおけるシリンダヘッドセクタなどの同等の代替のアドレス指定モードが存在するが、基本的なコンセプトとして、メモリシステムが所定のホストデータセクタを蓄積する物理的位置についての情報がホストにはないという点が挙げられる。ホストシステムは、データセクタの蓄積と検索とが行われる記憶位置を指定する、線形的に切れ目なく連続する独立した論理ブロックアドレスのセットを利用することが可能となる。これらの抽象化されたホストプロトコルは一般に、メモリ処理の制御、マッピング機能、データ管理、エラー回復などを実行するために、コントローラの存在をメモリシステムに必要としている。ホストは一般にメモリシステムの物理的態様についての情報を持たないため、これらの抽象化されたホストプロトコルによって動作するメモリシステムはメモリシステム内のコントローラに依拠してスクラブ処理を行うことが望ましい。
【００５３】
一方、ホストプロトコルのなかには、ホスト自身がメモリ管理機能を行うインターフェイスを有するものもある。これらのプロトコルに従うメモリシステムは典型的に、全く何も備えていない場合であっても、最低限のコントローラ機能を有する。ＥＣＣの生成、ＥＣＣのチェックまたはＥＣＣの修正などのみに限定されるわけではない、機能の変動部分が存在する場合もあり、これらの機能は、ホストシステムの代わりにメモリシステムによって行うことも可能である。これらのホストメモリ管理プロトコルで動作するメモリシステムは通常、スクラブ処理を行うためにホストによって決まる。というのは、メモリシステムにはスクラブ処理を行うのに十分な論理回路が通常存在しないからである。
【００５４】
メモリシステムのなかには、記憶装置を動作させて、メモリ管理機能を実行する目的を持つ専用コントローラを備えるものもある。専用メモリコントローラを備えない代わりにホストのインフラストラクチャの部分に依拠してメモリ管理機能を実行する他のメモリシステムもある。一例として、不揮発性記憶装置をホストシステム内の汎用目的のマイクロプロセッサと直接接続して、メモリ管理機能をソフトウェアによって行うようにすることも可能である。コントローラを備えていないこのようなメモリシステムでは、メモリ管理処理の役割を果たす同じサブシステムがスクラブ機能も果たすのが望ましい。
【００５５】
コントローラを備えていないメモリシステムのうち、不揮発性記憶装置（集積回路チップ）自体の中へコントローラ機能を組み込むことが可能なものもある。極端な例では、コントローラ全体を記憶装置の中に組み込むことも可能である。
【００５６】
ホストシステムの中にメモリシステムを内蔵し、メモリシステムが、変動するレベルに合せて、汎用目的または別の機能性を有するホストサブシステムの中へ機能性を組み込むようにすることも可能である。このような内蔵されたメモリシステムでは、一般に、同じホストプロトコルに従って処理が行われるが、これは、必ずしもこの場合と同じである必要はない。しかし、一般的なルールとして、メモリシステムを動作させるには同じセットの機能性が必要となる。
【００５７】
抽象化されたホストプロトコルの場合、典型的にはメモリシステムがスクラブ処理を実行するのに対して、ホストシステムが、特別のコマンドまたは別の予め定義されたインターフェイス処理の利用を通じて、このようなシステムでスクラブ処理を開始することも可能である。この機能を実現する１つの理由として、データの蓄積或いは検索のためにメモリシステムがアクセスされなくなる時間を最もよく知っているのはホストシステムであり、このような時間中にホストシステムがスクラブ処理を開始する機会を得ることが可能であるということを挙げることもできる。このようにして、パフォーマンスに対する最低限のインパクトでシステムの信頼性全体を上げることも可能となる。スクラブ処理の開始に用いるメカニズムを、スクラブ処理の特定の目的として用いることも可能であり、或いはハウスキーピング処理を行うのにその時間が利用可能である旨をメモリシステムに通知するための汎用メカニズムとすることも可能である。後者の場合、スクラブ処理は、このような時間中にメモリシステムによって行われるいくつの処理のうちの１つの処理であってもよい。
【００５８】
所定のメモリ処理に起因して生じる露出領域は一般に広い範囲のものになるため、処理が実行される度に、露出された領域全体のスクラブ処理を行うことは実際上可能な処理ではない。一般に、スクラブ処理を行う対象領域として露出された領域の一部分のみが選択され、スクラブレートの設定を行って、エラー状態にあるビット数と、シフトされたセルレベルとが、メモリシステムで利用可能ないずれかのデータ回復方式の能力を上回る前に、スクラブ処理が最も外乱を受けた領域を検出するようにしなければならない。
【００５９】
スクラブ処理が行われるレートは、データの完全性とメモリシステムパフォーマンスとの双方に影響を与える重要なパラメータである。スクラブレートが高ければ高いほど、エラー状態にあるビット数と、シフトされたセルレベルとが、メモリシステムで利用可能ないずれかのデータ回復方式の能力を上回る前に、外乱を受けたセルをデータブロック内で検出することができる可能性はより高くなる。しかし、メモリ量とコントローラ時間との増加がこの処理に占有されるため、スクラブレートが高くなればなるほど、メモリシステムパフォーマンス時の減損はより大きくなる。パフォーマンスの犠牲を可能なかぎり小さくしながら、データの完全性を示す所望のレベルを保証するために、どのようなガードバンドであれ適正であると見なされるガードバンドを用いて、スクラブレートの必要最低限の最適化が図られる。スクラブ処理を行うレートの変更も２通りの方法で可能である。すなわち、１）スクラブ処理を行う時刻の選択と、２）スクラブ読み出し処理を同時に行うためのセクタ数の選択である。
【００６０】
データの完全性の保持に必要なスクラブレートが製品の寿命にわたって変化する可能性がある。例えば、セルがサイクルされるにつれて、外乱を生じるレートが上昇したり、低下したりする場合がある。スクラブ処理の固定レートが製造時点に設定された場合、メモリシステムの寿命にわたってメモリシステムの完全性を保持するために、メモリシステムの寿命にわたって必要な最高レートを使用しなければならなくなる。この結果、低い方のレートで充分であるとき、より高いレートのスクラブ処理が得られ、メモリシステムの寿命において或る時点で必要とされるよりもメモリシステムパフォーマンスの犠牲が高くなるということがもたらされる。メモリシステムの寿命にわたってスクラブレートの同調を行ういくつのアプローチが存在する。
【００６１】
メモリシステムの製造時点に可変のスクラブレートを設定することが可能である。１つの方法として、どのようなメトリックであれ外乱を生じるレートに影響を与えるメトリックを含む異なるスクラブレートを設定するレート値のテーブルを設ける方法がある。一例として、メモリアレイの様々な部分が経験する異なるプログラム／消去サイクルカウント値用のスクラブレートを含むテーブルがある。メモリシステムがサイクルカウント値を保持する場合、スクラブレートパラメータは、アレイの所定の領域の最悪の場合のサイクルカウント値または平均サイクルカウント値に基づいてテーブルから選択される。
【００６２】
別のアプローチとして、前回のスクラブ処理の結果に基づいてメモリシステムにスクラブレートの自動調整を行うことを可能にするアプローチがある。例えば、メモリシステムがスクラブ処理のログ記録を保持していて、非常に低い割合のスクラブ処理が修正アクションを必要とすると判断される場合、スクラブ読み出しを行うレートの下方調整を行うことが可能となる。一方、非常に高い割合のスクラブ処理が修正アクションを必要とすると判断される場合、スクラブ読み出しを行うレートの下方調整を行うことも可能である。メモリシステムがスクラブレートの調整を行うことが可能な別のメトリックとして、個々の蓄積素子内の前回のスクラブ処理中に検出されたシフト量またはエラー状態にあるビット数が挙げられる。これら事例のいずれの場合でも、システムは、個々の新たな結果を用いてスクラブレートパラメータを適宜調整することが可能であり、或いは定期的な調整に関連する情報のログ記録をとることも可能である。
【００６３】
スクラブ処理をいつ行うかを選択するために利用することができるいくつかの技法が存在し、それらの技法のうちのいくつかの例として、１）乱数列または疑似乱数列による技法、２）ホスト処理の回数に基づく技法、３）記憶装置での処理回数に基づく技法、および４）時間間隔に基づく技法がある。前に説明した方法のうちのいずれかを利用して、スクラブ処理を行うレートの同調を行うことが可能である。以下の仮説は、スクラブ決定に必要な何らかのパラメータが製造時に与えられるというものである。読み出し、書き込みおよび消去処理用の異なるレートパラメータが存在することも可能であり、これらの処理の各々は異なるレートでメモリに外乱を与える可能性がある。
【００６４】
システムが乱数を利用することができる場合、或いはシステムが乱数を生成する場合、乱数（ＲＮ）または疑似乱数（ＰＲＮ）を利用して、スクラブ処理の頻度を決定することが可能である。ＲＮ数列またはＰＲＮ数列を利用して、スクラブ処理を行うか否かを決定する複数の方法について以下説明する。以下の方法のすべては、或る定期的な間隔でＲＮのチェックを行い、ＲＮ値の或るテストに基づいてスクラブ処理を行うか否かの決定を行うことを想定するものである。
【００６５】
乱数を利用して、スクラブレートを決定する１つの方法として、或るビット数を値１にセットし、残りのビット数を０にセットしたビット数を含むマスクパラメータを用いてＲＮまたはＰＲＮの論理ＡＮＤを実行する方法がある。スクラブ処理を行うか否かの決定は、ＡＮＤ演算の結果がゼロ値になるか非ゼロ値になるかに基づいて行われる。より多くの０を持つマスク値に比べて、より多くの１を持つマスクパラメータの方が０値の結果を生じる頻度が低くなる。以下のテーブルに、異なる８ビットマスク値を持つ近似的なスクラブレートが示され、０ＡＮＤによってスクラブ処理を生じると想定する。真の乱数列を用いることによって、値１を持つビット数のみがレートに影響を与えるものであり、値自体が影響を与えるものではないこと、したがって、テーブル内の値は例示的な値にすぎないことに留意されたい。
マスク値（１６値）      マスク値（２進値）      スクラブレート
０×００            ００００００００          １／１
０×０１            ０００００００１          １／２
０×０３            ００００００１１          １／４
０×０７            ０００００１１１          １／８
０×０Ｆ            ００００１１１１          １／１６
０×１Ｆ            ０００１１１１１          １／３２
０×３Ｆ            ００１１１１１１          １／６４
０×７Ｆ            ０１１１１１１１          １／１２８
０×ＦＦ            １１１１１１１１          １／２５６
【００６６】
別の関連する方法として、値１のＲＮでビット数をカウントして、スクラブ処理を行うか否かを決定する方法がある。再び、ＲＮでのビット数をマスク値またはしきい値を示す値と比較することが可能である。さらに別の方法は、ＲＮの値をスクラブレートパラメータの値と比較する処理を必然的に伴う方法がある。スクラブ処理を行うか否かの決定は、ＲＮが数値としてしきい値を上回ったかどうかに基づいて行われる。例えば、しきい値５の場合、ＲＮは５／２５６倍よりも大きくなる。
【００６７】
これとは別に、スクラブレートはホスト処理の実施回数と関連する場合もある。例えば、Ｎ回のホストの読み出し処理、書き込み処理および／または消去処理毎にスクラブ処理を行うことも可能であり、ここでＮはスクラブレートがセットされたレートパラメータである。さらに、スクラブレートは、メモリ処理の実施回数と関連する場合もある。例えば、ＮＲ回の読み出し処理、ＮＷ回の書き込み処理および／またはＮＥ回の消去処理毎にスクラブ処理を行うことも可能であり、ここでＮＲ、ＮＷ、ＮＥはスクラブレートがセットされるレートパラメータである。メモリシステムが時間間隔を測定する方法を含むさらに別の代替例として、或る規則的な時間間隔Ｔでスクラブを行うことも可能であり、ここでＴはスクラブレートをセットするために与えられたパラメータである。
【００６８】
メモリシステムのパフォーマンスを保持するために、スクラブ読み出しを行うことが決定された後であっても、スクラブ読み出しを保留することが望ましい場合もある。スクラブ読み出しを保留する理由にはリアルタイムに対する配慮が含まれる場合がある。例えば、ホストは或る一定のデータ転送を必要とする場合があり、或る時点でスクラブ処理を行うためにリソースを占有することが、保証されたデータレートを満たすメモリシステムの能力に衝撃を与える可能性があることが考えられる。このような目的のために、メモリシステムは、スクラブ処理の実行がホストのパフォーマンスに対して衝撃を与えなくなる将来の時点に処理を行うスクラブ処理用のパラメータを待ち行列に入れることも可能である。将来のホストコマンド処理時まで、コマンド処理後の将来の時点まで、或いは将来のホストコマンド時までスクラブ処理を保留することも可能である。このような場合、決定されているスクラブ処理用のパラメータの蓄積と処理とはホストにとって最も都合のよい将来の時点で行われる。
【００６９】
メモリアレイの露出された領域のほんの一部分しか所定時にスクラブされない場合もあるため、適切なカバーエリアを達成する１つの重要な態様として、ひとたびスクラブの実行を決定した場合、どこをスクラブの対象とするかの選択がある。どこをスクラブの対象とするかの選択は一般に、記憶装置に対する読み出し処理、書き込み処理および／または消去処理を行う位置と関連する問題である。所定のメモリ処理が他の蓄積素子に外乱を与えることになる領域についての情報は選択の中に組み込まれる。外乱を受けたことが予想されないメモリ領域に対してはスクラブ処理を行わないという点で、領域を処理対象のスクラブ領域と関係づけることが最も効率的なスクラブ処理を可能にする。
【００７０】
スクラブ記憶位置を選択する１つの方法として、ＲＮまたはＰＲＮを利用してスクラブ記憶位置を所定の処理対象の露出領域内から選択するステップを必然的に伴う方法がある。平均すると、最も露出を経験する領域はスクラブ用として選択される機会が最も大きくなる。或る領域を選択する頻度の方が他の領域よりも高く、さらに専ら平均的に見て均等なカバーエリアが存在すれば、スクラブレートの調整を行って、予想される最悪のケースの乱数カバーエリアに対する考慮が払われることになる。
【００７１】
スクラブ記憶位置を選択する別の方法として、露出された領域の中を通って決定論的に移動するステップを必然的に伴う方法がある。しかし、この方法は、十分なカバーエリアを確保するためにメモリ処理とスクラブ処理の双方のログ記録をとるステップを必要とする。
【００７２】
メモリに対する活動のログ記録をとる場合、潜在的に外乱を引き起こす処理に対して所定の領域が受け取る露出量の測定値を得ることが可能である。このような情報が与えられれば、メモリシステムは最高に露出を受け取った領域を求めてログ記録の中を探索し、スクラブ処理を領域に限定することが可能となる。これら方法を用いて、スクラブレートと記憶位置との決定時にこれらの方法のうちのいずれかの方法をガイドすることが可能となる。一般に、サイクルカウント値の管理情報を通じてプログラミング／消去サイクルを追跡することも可能である。しかし、読み出し活動のログ記録をとることは一般に実行不可能であり、したがってこれら方法は読み出し露出の追跡には用いられないことが予想される。
【００７３】
これとは別に、修正アクションの記憶位置のログ記録をとって、他の領域よりも外乱に対して感受性が強い領域または他の領域よりも大きな露出を受け取る領域に対するガイドとして用いることも可能である。メモリシステムは重み付けスクラブ領域の選択のために、特に、他の領域よりも頻繁に修正アクションを要求したスクラブ領域のためにこの情報を利用することも可能である。
【００７４】
外乱を生じる潜在露出領域が保持されないシステムでは、ランダムな方法か、或いは決定論的方法かのいずれかの方法をこのような情報とは独立に利用することも可能である。この場合では、ホスト活動がメモリシステムのどこで処理を引き起こすかに関係なく、スクラブはメモリシステムを通じてずっと行われる。しかし、スクラブレートは、十分なカバーエリアを保証することができるほど十分に高くなるように調整される。一般に、これはリソースの大きな浪費となる。というのは、メモリシステムの或る領域は他の領域よりもより多くの露出を経験するものであり、この領域がスクラブ処理の焦点となる主要領域となることが望ましいからである。
【００７５】
スクラブ処理の目的は、エラー状態にあるビット数と、シフトされたセルレベルとが、メモリシステムで利用可能ないずれかのデータ回復方式の能力を上回る前に、外乱を受けた蓄積素子の検出を図ることである。この目的のために、一般に、所定の電圧しきい値レベル用のガードバンドの多くが紛失して外乱を受けてしまう前に、可能なかぎり早めに外乱の検出を行うことが望ましい。
【００７６】
背景技術の欄で前述したように、フラッシュメモリは通常、データまたは電荷蓄積レベルの範囲を離散した状態で蓄積し、この範囲の各々は、何らかのガードバンドによって他の状態から切り離されたものである。一般に、個々の状態を識別する基準となる検知レベルが存在し、この基準によって、蓄積素子が或るレベル以上の１つの状態にあると見なされ、また或るレベル以下の別の状態にあると見なされる。所定の蓄積素子が外乱を受けると、この蓄積素子のプログラミングレベルまたは消去レベルがシフトし始める可能性がある。蓄積素子のレベルが識別検知レベルに近づいたり、或いはこの識別検知レベルを越えたりする場合、蓄積素子のプログラミングレベルまたは消去レベルとは異なる状態でデータが生成される。エラーは一般に、エラー状態にあるデータ内の１以上のビットとして表され、一般にデータフィールドをカバーするＥＣＣの利用を通じて検出される。
【００７７】
識別検知レベルが１つの状態または別の状態の方へさらにシフトされるように読み出し条件にマージン或いはバイアスを設けることによって、たとえシフト量が、基準となる読み出し条件の下でエラーを生じる原因にならない場合にも、エラー状態にある外乱を受けた蓄積素子の検知を引き起こすことになる。これによってシステムは、正常なメモリシステムの処理中にエラーを生じるポイントに近づく前にシフトの検出を行うことが可能となる。
【００７８】
外乱メカニズムが、ある特定の方法でデータ蓄積レベルに影響を与えることがわかっている場合、予想されるレベルシフトの方へ読み出し条件のマージンを設けることによって、これらの特定の外乱メカニズムの検出を目標にすることが可能である。理想的な状況として、単一セットのマージン条件の下で単一の読み出し処理を有する予想される外乱メカニズムを目標にすることになるが、これは通常可能なことではない。異なる条件の下で複数の読み出し処理を行うことが必要となる場合がある。例えば、メモリの蓄積素子内に在る異なる外乱メカニズムに起因してさらにプログラムが行われたり、或いはさらに消去が行われたりするかのいずれかが生じることになる場合がある。識別レベル以上および識別レベル以下の双方のレベルにある蓄積素子を識別レベルの方へシフトすることも可能であり、その場合、一方の状態から識別レベルの方へ、次いで他方の状態から識別レベルの方への蓄積レベルのシフトをまずチェックする必要がある場合もある。
【００７９】
修正アクションを行うべきかどうかを決定するためにしきい値として利用可能なデータ品質の２つの個々の測定値が存在する。すなわち、１）ＥＣＣの利用によるデータエラーの検出値と、２）たとえほとんど或いは全くデータエラーが検出されない場合であっても、データエラーがデータ読み出しエラーを生じる前に、電荷蓄積レベルのシフトを検出することが可能である。
【００８０】
前述したように、或る予想される外乱メカニズムを目標にするために、スクラブ読み出し条件にマージンを設けたり、或いは蓄積されたレベルでの十分なマージンを単にチェックしたりすることも可能である。基準となる条件またはマージンを設けた条件の下でデータが読み出されたか否かにかかわらず、修正アクションを行うかどうかの決定は、スクラブ読み出し処理中に検出されるエラー状態にあるビット数に基づいて行うことも可能である。例えば、エラー状態にあるビット数がシステムのＥＣＣの修正能力を越えないものであれば、システムは修正アクションを保留したり、或いは完全にエラーを無視したりする決定を行うことが可能となる。
【００８１】
修正アクションを開始するためのしきい値としてエラー状態にあるビット数を利用するステップに加えて、システムは、エラー状態にあるビットパターンのような別の要因に基づいて修正を行う決定を行うことも可能である。例えば、ＥＣＣの修正能力がビットエラーパターンに感応する場合があったり、或いはビットエラーパターンが不揮発性メモリ内で特定の周知の外乱メカニズムを示す場合がある。しきい値の基礎をビットエラーパターンに依拠する別の理由が存在する場合もある。一般にビットエラーパターンはＥＣＣによる修正処理中に露出される。
【００８２】
パフォーマンスの目的のために、スクラブ修正アクションを行うことが必要であると決定された後であっても、スクラブ修正アクションを保留することが望ましい場合もある。スクラブ修正アクションを保留する理由にはリアルタイムに対する配慮が含まれる場合がある。例えば、ホストは或る一定のデータ転送を必要とする場合があり、或る時点でスクラブ修正アクションを行うためにリソースを占有することが、保証されたデータレートを満たすメモリシステムの能力に衝撃を与える場合があることが考えられる。このような目的のために、メモリシステムは、スクラブ修正アクション処理用のパラメータを待ち行列に入れて、スクラブ修正アクション処理の実行がホストのパフォーマンスに衝撃を与えなくなる将来の時点で処理を行うようにすることも可能である。スクラブ修正アクション処理は、将来のホストコマンド処理時まで、コマンド処理後の将来の時点まで、或いは将来のホストコマンド時まで保留することも可能である。主要なポイントとして、決定されたスクラブ修正アクション用のパラメータの蓄積と処理とをホストにとって最も都合のよい将来の時点で行う点が挙げられる。
【００８３】
メモリ構成の２つの著しくはっきり異なる極端な例が存在し、これらメモリ構成の各々は、物理的位置に対して記憶装置上のホストデータのマッピングを行う異なる方法と、一度プログラムされたデータの管理とアクセスを行う異なる方法とに関連するものである。これら２つの構成間の根本的な相違は、最小消去単位のサイズ、並びにそのサイズとホストプロトコルデータセクタのサイズとの関係に係る相違である。
【００８４】
最小消去単位のサイズがホストデータセクタの最小消去単位に近似する場合、ホストによって書き込まれる書き込み先と同じ物理的位置に所定のホストデータセクタを一般にマップする直接アドレス指定方式の実行が可能となる。このような方式では、以前の内容は、置換用データが代わりに書き込まれる前に、一般に物理的位置から消去される。この書き換えステップは、最小消去単位のサイズがホストセクタの最小消去単位よりも大きい場合、読み出し修正−書き込みステップを必然的に伴うことが可能である。アドレス指定方式では、ホストセクタの再マッピングを蓄積システム内の１個置きの記憶位置に対して行うことが可能であるが、この方式では一般に欠陥管理処理の一部として或いはシステムの信頼性を得る何らかの別の目的のためにセクタの再割当て中に行われるものにすぎない。このようなマッピングを行った後、ホストセクタは一般に、ある別の再割当てイベントまで新たな物理的位置へマップされたままの状態になる。このような直接アドレス指定マッピング方式では、外乱に起因して生じる修正アクションは一般に、外乱を受けたと判定された物理的位置から内容を消去し、その内容を同じ記憶位置に書き換えるステップを必然的に伴うことになる。書き換え中に生じたいずれのエラーも、再消去、書き換え、再割当て、消去または書き込みパラメータの変更などを含むが、これらのみに限定されるわけではない、システムにより用いられる一般的な例外処理に一致する方法で処理される。
【００８５】
一方、最小消去単位のサイズがホストセクタの最小消去単位よりもずっと大きい場合、消去−プーリングアドレス指定方式の実施は通常行われることである。このようなアドレス指定方式は、小さな最小の消去単位を有するメモリを用いて実施することも可能である。消去−プーリング方式では、ホストセクタは通常論理ブロックにマップされ、次いでこの論理ブロックは物理的消去単位にグループ分けされる。所定のホストデータセクタは消去単位内にある別のホストデータセクタによって囲まれている。ホストが所定のデータセクタを書き込むとき、目標セクタをとり囲んでいるすべてのセクタを読み出し、ブロックを消去し、かつ新しいデータを含む１つのホストセクタと共にすべてのセクタを元の消去単位へ書き込むことは実際上実行不能である。このような過度のオーバーヘッド処理を避けるために、消去−プーリング方式は一般に、新しいバージョンのデータが書き込まれたとき、これらのデータの保有を目的として或る一定数の消去単位を消去された状態で保持している。セクタは一般に、データの管理を目的としてまとめてグループ化され、論理的グループに変えられ、さらに一般に、システムは同じ論理的グループのセクタの物理的近接性の保持を試みることになる。いくつかの消去単位を組合せて、メタブロックと呼ばれる論理的構成や、通常高度の書き込み並列性を可能にすることを目的とする仮想ブロックを形成する場合もある。一般に、ホストから得られる新しいデータは消去された記憶位置へ書き込まれる。ある時点で、新しいデータと置換されなかった、同じ論理的グループからの別のセクタを同じメタブロックの中へコピーするか、或いは新しく書き込まれたデータと共に別のメタブロックの中へコピーするかのいずれかのステップが行われる。その後、所定のメタブロック内または消去単位内のすべてのデータが置換されてしまうか、或いはどこか別の場所にコピーされてしまうとすぐに、メタブロックまたは消去単位は消去され、消去された消去単位のプールの一部と見なされることになる。このような消去−プーリングアドレス指定方式では、外乱に起因して生じる修正アクションは一般に、通常のメモリシステムの振舞いを行うためにシステムが要求する何らかのデータ統合と共に、影響を受けたデータをメモリシステムの別の記憶位置へコピーするステップを必然的に伴うことになる。
【００８６】
しかし、スクラブ処理中のデータ要求修正アクションが、ホスト活動または一般的なデータ管理に起因して書き込み処理とは別様に処理される可能性がある。システムが、論理的に連続するデータとデータの統合を行うのに都合がよくなるまで、短時間の間このようなデータを保有するために予約された特別の記憶位置へデータを書き込むことが可能であり、前記領域は予約して保有された領域か、或いは要求時に割り当てられた領域かのいずれかの領域である。或る環境下では、システムが単に同じ記憶位置に対してデータの消去と書き換えとを行うことになる可能性もある。例えば、別のデータがほとんど或いは全く物理ブロック内に存在しない場合、これら別のデータはどこか別の場所へ永久に移されたか、或いは消去中に、どこか別の場所に、おそらく揮発性メモリの中に一時的に蓄積され、またデータ要求修正アクションと共に書き戻されたかのいずれかであると考えられる。データ書き込み中の何らかのエラーは、書き換え、再割当て、新たな記憶位置への書き込み、消去または書き込みパラメータの変更などを含むが、これらのみに限定されるわけではない、システムにより用いられる一般的な例外処理に一致する方法で処理される。
【００８７】
いくつかの個々の蓄積素子、蓄積素子からなるグループ、またはその他の構造の方が他の部分よりも外乱に対して感受性が強い場合がある。可能な構造またはグループの一例として、共通のドレイン、ソース、ゲートラインを共有するようにフラッシュメモリ蓄積素子を構成することも可能であり、工程における分散に起因して、このような１つのセットの接続された蓄積素子の方が、潜在的に外乱を引き起こす信号に対する強い露出を平均的な蓄積素子よりも経験する可能性がある。同様に、個々の蓄積素子の方が、アレイ形成に用いられる工程時の分散に起因して他の蓄積素子よりも外乱に対して感受性が強くなる場合がある。蓄積システムは、外乱に対して感受性が強いと見なされるこれら領域の永久的なマップアウトまたは再割当てが行われるように設計することも可能である。極端な場合、スクラブ修正アクションの第１の発生時に、いずれの蓄積素子または別の構造でも再マッピングを行うことが可能である。例えば、冗長な蓄積素子が利用可能ならば、ＥＣＣ修正を要求するビットを含む蓄積素子のマップアウトを行うことも可能である。別の実施形態では、修正アクションの記憶位置のログ記録をとり、蓄積素子の将来の再マッピングやグループ化を目的として後で解析を行うようにすることも可能である。解析では、所定のグループ化が修正アクションに要求した回数を示すしきい値を含むようにすることも可能である。場合によっては、記憶装置の物理的な態様についての情報を利用して、ログ記録をとったデータの解析を行い、接続された蓄積素子のような予想される物理的構造の存在を検出することが必要となる場合もある。蓄積素子や蓄積素子のグループ化の再マッピングを行う方法はメモリシステムの実施構成に依存することになる。例えば、論理的セクタを含む物理領域は、マップアウトされる蓄積素子の交換を目的として冗長な蓄積素子を含むものであってもよい。別の例では、セクタ全体またはセクタグループが修正アクションを要求する場合、セクタ全体またはセクタグループのマップアウトを行うようにしてもよい。
【００８８】
ホスト処理のバックグラウンドまたはホスト処理の間でスクラブ処理を行うことも可能である。ホストが要求した処理タイプに依拠してスクラブ処理の振舞いを変更する方が望ましい場合もある。例えば、ホストの読み出しコマンドの実行中にスクラブ修正アクションが行われると不都合な場合もあり、その場合、メモリシステムにとってもっと都合のよい時点まで修正アクションを保留してもよい。
【００８９】
外乱回避のための代替のアプローチとして、データがエラー状態にあるかどうかを決定する第１のチェックを行うことなく、潜在的に外乱を引き起こす露出を受け取ったデータを移すアプローチがある。移動すべきデータの頻度と記憶位置とを選択するための多くのアプローチが存在する。これらのアプローチのほとんどについては前に説明した。
【００９０】
スクラブの一般的な実施形態
図８のフローチャートは、例示のフラッシュメモリのスクラブアルゴリズムにおける主要なステップの概略を示す。第１のステップ９１は、スクラブ処理用のトリガイベントが生じた時点を検出するメモリシステムの活動をモニタするステップである。このようなトリガイベントは１以上の以下のステップであってもよい。
１．データが読み出されるとき、別のユニットの電荷レベルに外乱を与える可能性があるアレイの所定のブロックまたは別のユニットの中でデータの書き込み処理または消去処理が行われる。スクラブ処理並びに（個々の状態を画定する狭い電荷レベルの範囲を有する多状態でメモリが動作しているときのような）外乱に対するアレイの感受性をトリガするかどうかの決定時に、処理の強さおよび／または継続時間が重要になる場合がある。
２．少なくとも１つのビットエラーまたは予めセットされた数のビットエラーを用いて所定のユニットの正常なシステム読み出し処理によりデータを読み出すとき。
３．ビットエラーが存在しないにもかかわらず、（通常の読み出しよりも狭いプログラムされた分布データを読み出すようにセットされた基準レベルによる）マージン読み出しによって、プログラムされたセルのしきい値レベルが最適なものではないことが示されるとき。
４．最後のスクラブ処理から予め定義された時間間隔が経過した後。
５．ホストがスクラブ処理を開始するとき。
【００９１】
全体の目標として、メモリシステムで利用可能ないずれかのデータ回復方式（ＥＣＣなど）の能力を上回るほど外乱を受けたデータの数が多数になる前に、外乱を受けたデータを検出することができるほど十分頻繁にスクラブ処理を行うということがある。
【００９２】
スクラブ・トリガイベントを検出するとすぐに、次のステップ９３はスクラブ処理を行うためのメモリアレイ内の記憶位置を決定する。候補例は以下のように決定することができる。
１．ビットライン、ワードライン、または別の信号ラインを所定のユニットと共用する所定のユニットの外側にあるブロックまたは別のユニットであり、読み出し中、書き込み中、または消去処理中にブロックまたは別のユニットに電圧または電流が印加される。
２．信号ラインの間でクロストークが生じるように所定のユニットの信号ラインと電磁界結合される信号ラインを有する所定のユニットの外側にある別のユニットである。
３．このような別のユニットがプログラムされるか、或いは消去されるかによって、所定のユニットでの処理により潜在的に影響を受けるかどうかが決定される。
４．ユニットの処理が読み出し処理であるのか、書き込み処理であるのか、或いは消去処理であるのかによって、潜在的に影響を受けるユニットを決めてもよい。
５．読み出しデータ中にエラーを発見する所定のユニットの正常なシステム読み出しによってトリガされる場合、この所定のユニットはスクラブ処理用として特定される。
６．候補ブロックにおけるデータの相対的な新しさを利用して、さらに新しく書き換えられているブロックを取り除くことができる。
【００９３】
スクラブの対象候補としてのメモリブロックの識別子または別のユニットは必ずしもスクラブ処理の実行を後に伴う必要はない。次のステップ９５によって示されているように、或る環境の下でスクラブ処理の開始を保留することが可能であり、環境の例として、
１．システムパフォーマンスを最適化するために、或いはメモリシステムの特定のリアルタイムの必要性を満たすためにスクラブ読み出しを保留することが可能である。
２．自己調節スクラブ。スクラブ処理を行うレートを動的に調整して、パフォーマンスとデータの完全性とを保持する最適なバランスをとるようにすることが可能である。
３．スクラブ処理の緊急度は、それらの経験レベル（プログラミングサイクル／消去サイクルの数）などの潜在的な影響を受けるものとして特定されるようなユニットの特徴と、トリガされるスクラブ処理を引き起こしたイベントのタイプとからある程度決定される。
４．決定論的に、乱数を用いて或いは擬似乱数を用いてスクラブ・トリガイベントが生じるように限定することも可能である。
（ａ）指定した回数のホスト処理の後
（ｂ）指定した回数の物理的読み出し処理、書き込み処理／消去処理の後
（ｃ）指定した時間後
（ｄ）ホストの使用状況の特徴に基づいて
（ｅ）（ａ）〜（ｄ）のうちのいずれかと関連する可能性のある乱数列、疑似乱数列の生成およびチェック
【００９４】
次のステップ９７では、スクラブ候補としてステップ９３で特定されるメモリブロックまたは別のメモリユニットのすべてまたはいくつかがスクラブ処理を行うために選択される。選択基準には以下の基準が含まれる。
１．任意の１回の処理時にスクラブ用として特定された決定されたユニットの数を選択して、システムパフォーマンスのためにスクラブを行うのにかかった時間の影響と、データの完全性を保持する必要性とのバランスをとることも可能である。
２．このバランスを保持する方法として、メモリの耐用年数、特定されたユニットが経験したプログラミングサイクル／消去サイクルの数、スクラブ処理をトリガしたイベントのタイプ、並びに特定されたユニット内のデータに対して必ず行われる修正アクションの履歴によって決められる現在のスクラブ処理を行うために、複数のユニットを特定する方法を挙げることができる。
３．スクラブ処理に含まれるユニットの数は、メモリの耐用年数、所定のユニットが経験したプログラミングサイクル／消去サイクルの数、並びにスクラブ処理をトリガしたイベントのタイプによって決めることができる。
４．これとは別に、通常の用途とは関連性のない態様で決定論的数列、乱数列または疑似乱数列に従うことによって、すべての特定されたユニット数未満のユニットをスクラブ用として選択することも可能である。
【００９５】
次に、ステップ９９によって示されているように、データは選択されたユニットから以下のように読み出される（スクラブ読み出し）。
１．スクラブ読み出しはいずれかの特別のホスト処理の終了または消耗度の均等化のような他のシステム処理と直接関連するものではなく、通常のデータ読み出しと同様に実行される。
２．マージン読み出し（通常のデータ読み出しの基準レベルとは異なる基準レベルを用いる読み出し）を特定の環境で行うことも可能である。
（ａ）エラーが多すぎてＥＣＣによる修正ができない第２のデータの読み出しのとき。この場合、第２の読み出しの基準レベルは緩和されて、通常の読み出しよりも広いプログラムされた分布データが読み出される（或いはこれとは別に、後述するデータ修正ステップ１０７で行うことも可能である）。
（ｂ）トリガイベントに起因して生じることが予想される特定の外乱メカニズムが、プログラムされたレベルを大幅にシフトさせそうに思われるとき、初期の読み出しはより広い基準レベルを用いるマージン読み出しであってもよい。
（ｃ）最適レベルからシフトして離れた電荷レベルとして蓄積されたデータを特定するためにＥＣＣによって修正可能な２、３のビットエラーを含むか、ビットエラーをまったく含まない第２のデータ読み出しを行うとき。この場合、通常の読み出しよりも狭い分布データを読み出すためにこの第２の読み出しの基準レベルはタイトにされる（マージンスクラブ読み出しについては図１０と関連して後程さらに説明する）。
３．１つのブロックのデータ読み出しの一部として、オーバーヘッドデータも読み出される。データの相対的な新しさがヘッダに蓄積される場合、この新しさを利用して、スクラブする必要のない新しく書き換えられたブロックを特定することが可能である。
【００９６】
次のステップ１０１は読み出されたデータの完全性を評価するステップである。スクラブ読み出しの一部として、メモリユニットから読み出されたユーザデータからＥＣＣを算出し、前に算出したＥＣＣと比較し、プログラミング中のユーザデータと共に蓄積することも可能である。ビットエラーが存在しないか、或いはＥＣＣによる修正が可能な少数のエラーが存在する限り、前述したような緩和された基準レベルを持つ第２のマージン読み出しを行う必要はない。
【００９７】
オプションとして行うことも可能な追加の読み出しとして、それらの蓄積された値が追跡セルの蓄積値が変化したかどうかを調べるためにメモリアレイの中で行われる場合の追跡セルのレベルの読み出しがある。追跡用メモリセルは、メモリセルの読み出しに用いる基準レベルの設定のためにしばしば設けられる。
【００９８】
データが読み出され、（何らかのエラーが存在する場合）読み出されたデータのエラー数がわかるとすぐに、次のステップ１０３によって、修正アクションが必要かつ望ましいものであるかどうかを決定する。いくつかの考慮事項として以下がある。
１．１つのアプローチとして、何らかの数のビットエラーを含むデータを修正するアプローチがあり、このアプローチに起因して、スクラブによりメモリシステムパフォーマンスに最も大きな衝撃が与えられる。
２．別のアプローチとして、データビットエラーの数が単位読み出し当たり或るしきい値Ｎを超えなければ、データの修正を先行して行うアプローチがあり、これによってパフォーマンスに対するスクラブの衝撃が小さくなる。
３．ＥＣＣの比較によって決定されるようなエラーを含むデータビットのパターンを用いて、データの修正が望ましいかどうかを決定することが可能となる。
４．新しく書き換えられた（相対的に高いレベルの新しさの）データはスクラブしない方が望ましい。一般に、エラーを含むデータを修正するかどうかの決定を行う場合、パフォーマンスに対するスクラブ処理が終了した結果と、現在および将来のデータの完全性に対するエラーの深刻さとのバランスをとることが望ましい。
【００９９】
次のステップ１０５で、スクラブ修正アクションを行うのか、或いはスクラブ修正アクションを後程まで保留するのかの決定を行う。この決定を行う上での考慮事項の１つは、ステップ９５の場合と同じであり、すなわち現時点でのメモリシステムの特定のリアルタイム処理の必要性を満たすためにスクラブ読み出しを保留することである。一般に、スクラブ処理のその後の終了の方が現時点の場合よりもシステムパフォーマンスに対して少ない衝撃を生じるのであれば、スクラブ処理の終了を保留することが望ましい。特に、ＥＣＣによって修正すべき多数のエラー、データ統合の必要性などのためにスクラブ処理が通常の場合よりも多くの時間をとる場合、コントローラによって正常な処理を中断してスクラブ処理を行うことは通常望ましくない。保留が行われた場合、スクラブ読み出しによって読み出されたデータ、データのアドレス、ＥＣＣ解析、および先行するステップで生じたスクラブ処理の別のパラメータによって決定された何らかのエラーは一時的に蓄積される。これらのデータおよびパラメータは、その後読み出され、システムパフォーマンスに対する衝撃が小さくなった時点でスクラブ処理は終了する。
【０１００】
スクラブ処理が終了すると、データは次のステップ１０７で修正される。データは、この場合、ＥＣＣを利用して修正される。前述したステップ９９の一部としてデータの回復が行われない場合であっても、通常の読み出しまたはスクラブ読み出しによって、利用するＥＣＣが修正することができる場合よりも多くのエラー状態にあるビットが生じるならば、１以上のマージン読み出し（基準レベルが緩和されて、前回の読み出し中に用いたものよりも広いプログラムされた分布データが読み出される）を要求して、データの回復を行うことも可能である。次いで、ステップ１０９で、適正な修正アクションを行う。この修正アクションは、データを読み出したのと同じ記憶位置に修正されたデータを書き換えるステップを含むことが可能である。このステップは、言うまでもなく、データが書き換えられるブロックをまず消去するステップを必要とし、個々の修正されたデータセクタがメモリセルブロックを充填する図２のメモリ配置構成で実際に行うことが可能である。しかし、このステップは、ブロックを充填するか、或いはほとんど充填する論理的に連続するアドレスを用いて書き換えを必要とするすでに修正された十分な修正データセクタが存在しなければ、図５と６の大きなブロックのメモリ配置構成で行うには効率のよいステップではない。
【０１０１】
これとは別に、修正されたデータを書き換えて、前にスクラブ処理時に読み出したものとは別の記憶位置の中へ入れることが可能である。メモリ配置構成が図５と６に示されているように大きな記憶ブロックを利用する場合、書き換えられるべきデータが１ブロックの容量よりも少なければ、前述した消去プールまたは別の大きなブロック管理技法を用いることも可能である。例えば、１６、３２またはそれ以上のページを含むブロックから１、２ページ分だけのデータを修正することも稀なことではない。このような場合、１または数ページ分の修正されたデータの一時的な蓄積のためにアレイの１以上のプレーンで１ブロックを占有することも可能である。次いで、書き換えられたデータは、そうすることが都合のよい場合、メモリの通常の動作中に別の要因によって開始されるデータ統合（ガーベッジコレクション）中などの原ブロックのページに蓄積される修正されていないデータと組み合わされる。これとは別に、主データページが書き込まれて、専用ブロックの中へ入れられた後、予め設定した時間量の経過後いっぱいになるこの専用ブロックによって、或いは他の理由によりシステム処理にとって都合の良いときに、このような統合を開始することも可能である。
【０１０２】
一般的な単数または複数の指定された物理ブロックを利用して、他の多くのブロックのページからのスクラブデータの書き換えを一時的に蓄積し、その後書き換えられたページデータを書き換えられたページの原ブロックのその他のページから得られるデータと統合するのが好都合になる場合もある。例えば、ブロック１と２から得られるページのスクラブ書き換えがブロック３に一時的に蓄積される。その後、ブロック１のスクラブ書き換えはブロック３からコピーされて、消去されたブロック４の中へ入れられ、物理ブロック１の中へマップされたデータを統合するために、ブロック１の残りの変化のないページもコピーされて、ブロック３の中へ入れられる。次いで、別の消去されたブロック５において同じステップが行われ、この消去されたブロック５においてブロック３に蓄積されたブロック２のスクラブ書き換えと、ブロック２から得られた変化のないデータページとの統合が行われる。
【０１０３】
メタブロックを利用する図６のシステムには、他のブロックからの書き換えられたデータを蓄積するための個々のプレーン内のこのような１つの専用ブロックまたは単一の専用ブロックのいずれかが、システム全体の中に存在することが可能であり、任意のプレーン内のすべてのページから得られる修正されたデータがこのシステムの中へ書き込まれる。選択される特定の処理は、個々のブロック内のページ数、メモリアレイ全体内のページ数、並びにスクラブ処理によって修正されるデータを含むページの予想数および発生頻度の予測値によって決められる。外乱に対する感受性を強くする構造および／または処理を有するメモリアレイは、そうでない場合よりも多くの専用ブロックを必要とする。データエラーがないことがスクラブ読み出しによって明らかになり、しかもシフトされた蓄積された電荷レベルを電荷レベルの状態範囲の中央へ戻すためにスクラブ処理が実行中であるならば、読み出されたデータは単に書き換えられるだけとなる。というのは、修正が不要であることは明白であるからである。
【０１０４】
或るメモリシステムを利用する方法では外乱がほとんど生じないものがある。この方法の場合、スクラブ処理が行われる頻度は低くなる。というのは、トリガイベントがほとんど認識されないからである。さらに、スクラブされたデータが元々存在していた物理ブロックに関係なく、１以上の指定された物理ブロックの中に相対的に少量の書き換えられたデータを一緒にまとめて永久に蓄積することは実際上可能である。この場合、スクラブ処理のステップとして、スクラブされたデータページが再結合され、別の論理的に連続するデータページを含む物理ブロックの中へ入れられることはない。修正アクションの別の要素として、データが当初書き込まれた回転とは別の回転がつけられて、修正されたデータを書き換えることがある。例えば、４状態システムの４つのアナログ蓄積状態範囲を最初に指定して、００、０１、１０、１１をそれぞれ表すようにし、書き換え時に、１１、１０、０１、００を表すように指定することが可能である。オーバーヘッドデータの一部として保持される特定の回転データを用いて、データが読み出されると、メモリコントローラにより変換は行われる。データの回転は、修正されたデータと修正を必要としなかったデータの双方の書き換えに有効に適用される。
【０１０５】
設けることが可能な修正アクションのさらなる要素として、平均値よりも多く外乱の影響を受けたことを示す履歴を構成するメモリページまたはメモリブロックのマップアウトを行うことがある。これは、アレイの種々のページ、ブロック、プレーンおよび／または他の画定された領域内のデータエラー数をモニタすることによって検出される。言うまでもなく、ブロックが平均値より多く、或いは平均値とは別様に使用されるというような理由のために、外乱に対する高い感受性以外の理由によりデータエラーを経験するページまたはブロックのマップアウトは行わないように注意すべきである。
【０１０６】
スクラブアルゴリズムは通常メモリコントローラによって制御されるが、これとは別に、ホストによって制御される場合も考えられる。メモリコントローラによって制御される場合、このアルゴリズムは符号化されて、マイクロプロセッサ２１（図１Ａ）によって典型的にはメモリの動作中にコントローラＲＡＭ２５から実行されるメモリシステムのファームウェアの中へ入る。
【０１０７】
利用される特定のスクラブアルゴリズムは、メモリシステムの或る特徴、特に記憶装置１１と１３（図１Ａ）の特徴によって決められる。これらの特徴の例として、以下のような特徴が挙げられる。
（ａ）プログラミングメモリユニット（通常ページ）に蓄積されるホストデータセクタ数
（ｂ）メモリセルの蓄積状態の個数および個々の蓄積状態用として指定されるしきい値範囲の程度
（ｃ）プログラミング単位（通常ページ）が単一のホストデータセクタまたは複数のホストデータセクタを含む
（ｄ）消去単位（通常ブロック）でのプログラミング単位（通常ページ）の数
（ｅ）メモリセルの密度並びに１回の単位での処理が別の単位でデータの外乱を引き起こす場合の処理の範囲および固有の傾向
【０１０８】
スクラブの具体的な実施形態
スクラブアルゴリズムのさらに具体的な実施形態が図９のフローチャートに例示されている。一般に、前述した処理ステップと同じ処理ステップを利用するが、４状態システムの例（個々の物理的電荷蓄積単位に蓄積される２ビット）を表す図１０と関連して説明されるマージンスクラブ読み出しを含む実施構成がさらに詳細に示されている。図９には、処理に対する２つのエントリポイント（スクラブ・トリガイベントが検出されたときの１１５および保留されたスクラブを実行するコマンドを受け取ったときの１１７）が示されている。
【０１０９】
ステップ１１５で、図８のステップ９１に関連して前述したようにメモリはスクラブ・トリガイベントに対してモニタされる。同様に、ステップ１１９で、図８のステップ９３に関連して説明したのと同じように候補メモリセルユニットがスクラブについて決定される。次いで、ステップ９５の場合と同様に、図９のステップ１２１はその時点に行う必要がある別のシステム処理に起因して候補のうちのいずれかに対するスクラブを保留すべきかどうかを決定する。保留すべきであれば、１２３で示されているように、候補セルユニットのアドレスおよび他の必要なデータが一時的に蓄積され、処理は、処理を再開するために優先度の高いシステムの処理が終了するのを待機する。これとは別に、後の処理時に保留される場合のように、後程特別のコマンドがホストから受信されるか、或いはステップ１１７でメモリコントローラによって生成されるまで、スクラブ処理の終了を保留することが可能である。保留されたスクラブのデータがステップ１２３に蓄積された後、スクラブすべきさらなるセルユニットが存在しなければ、ステップ１２４に定められているように、実行中の特別のスクラブ処理は終了する。スクラブ処理を行うセルユニットがさらに存在すれば、処理はステップ１１９へ戻る。
【０１１０】
次のステップ１２５は、図８のステップ９７と同じ機能、すなわちスクラブすべき候補のメモリセルユニットの選択を実行する。後続する図９のステップが選択されたユニットのうちの１つのユニットに対して同時に行われる。次のステップ１２６によって、読み出しブレイクポイントレベルと別の読み出し条件とが初期設定として通常の読み出しレベルに設定される。次いで、設定条件の下で、ステップ１２７は、図８のステップ９９に対応するメモリセルユニットの第１のユニットに対するスクラブ読み出しを行う。後続するステップはこの同一の１つのユニットに対して実行され、ループ１２９は次の選択されたユニットに関連するステップ１２７へ戻るが、このステップは選択されたユニットがすべてスクラブされるまで順番に行われる。言うまでもなく、特別の処理時にスクラブを行うために１つのユニットだけが選択されるならば、ループバック１２９は存在しない。
【０１１１】
ステップ１２６で設定された読み出しマージンを用いてステップ１２７でスクラブ読み出しを行った後、ステップ１３１は図８のステップ１０１の場合と同様に、何らかのデータエラーが生じたかどうかの判定を行う。エラーが生じた場合、次のステップ１３３はエラーが修正可能かどうかの判定を行う。ＥＣＣを利用してデータの完全性を確かめる場合、このステップ１３３は、データ読み出し単位内の不良ビット数が、利用されている特別のＥＣＣアルゴリズムの修正能力の範囲内にあるかどうかを判定する。エラーが修正可能であれば、図８のステップ１０３に対応して、次のステップ１３５で修正が必要かつ望ましいものであるかどうかが判定される。ステップ１３５は、エラーを含むけれども修正可能なビットの数が１未満のしきい値または非常に少ないしきい値であるかどうかを単純に判定することが可能であり、その場合、修正アクションを行わないように決定することができる。
【０１１２】
ステップ１３５での判定は、データおよびデータのＥＣＣがユーザデータであるのか、或いはオーバーヘッドデータであるのかによって影響を受ける可能性もある。図３と関連して記載されているように、オーバーヘッドデータはそれ自体のＥＣＣを持つことができる。この場合、ステップ１３１と１３３でユーザデータとオーバーヘッドデータとの完全性のチェックを別々に行い、たとえこれらのユーザデータとオーバーヘッドデータとが同じページに蓄積される可能性がある場合であっても、ユーザデータとそのＥＣＣとを１つの単位として、またオーバーヘッドデータとそのＥＣＣとを別のデータ単位として見なすことによって、リターンを備える完全なループ１２９を介して、１回の処理について一度、ユーザデータとオーバーヘッドデータとの完全性の処理を行うことさえ可能である。オーバーヘッドデータのＥＣＣとユーザデータのＥＣＣのそれぞれの利用は通常同じになるものの、オーバーヘッドデータの完全性に対する処理工程の方がよりタイトな処理工程になる場合がある。これは過度のスクラブ処理が低下を招くシステムパフォーマンスの保持と、スクラブの達成が設計される蓄積データの完全性の長期間にわたる保持との間のバランスを示す一例である。
【０１１３】
ステップ１３５での判定が関心対象のデータ単位内の修正可能なエラーの修正を行うべきである場合、次のステップ１３７はデータの修正を保留すべきかどうかを尋ねるものとなる。例えば、この段で利用可能な時間よりもそれらの修正の方に多くの時間がかかる多くの不良ビットが読み出しデータの中に存在するならば、スクラブの保留が望ましい。保留が行われない場合、エラーは図８のステップ１０７の場合と同様にステップ１３９で修正される。次いで、次のステップ１４０は修正アクションを保留すべきかどうかを尋ねるものとなる。利用可能な時間よりも多くの時間がかかることになる必要な統合に起因して、データの書き換えが別のデータの移動も伴うことになるならば、スクラブは典型的に保留される。保留が行われない場合、図８の一般的な実施形態について説明した際に前述した書き換えオプションのうちの１つのオプションに従って、修正されたデータをステップ１４１で書き換える。修正されたデータ単位を首尾よく書き換えた後、ステップ１２５で選択したスクラブ対象のメモリセルユニットが何か存在するかどうかをステップ１４３で決定する。メモリセルユニットが存在すれば、ステップ１４５は次のユニットへ順番に増分し、処理は新たなユニットのためにループ１２９を通ってステップ１２７へ戻る。
【０１１４】
以上、図９のフローチャートの主要経路について説明してきた。しかし、問題のうちのいくつかの解決が前述した解決策とは異なる場合、途中に入る多くの分岐が存在することになる。説明しておくべき第１のこのような分岐として、非常に多くのデータビットエラーが主ユニットの中に存在しているためＥＣＣによって修正できない場合、ステップ１３３から分かれる分岐がある。ステップ１５１によって示されているように、読み出ししきい値レベルがステップ１２７でスクラブ読み出しに用いられるレベルとは異なるように設定され、次いで、ステップ１５３で、データ単位がこれらの異なるしきい値レベルと共に再び読み出される。このようなマージンされた読み出しが図１０に例示されている。
【０１１５】
４状態にあるフラッシュメモリアレイ内の個々の蓄積素子を動作させる一例を図１０で用いる。４個のしきい値電圧レベル範囲の各々における外乱のないメモリセルユニット内での蓄積素子の個数分布が示されている。しきい値電圧ガードバンド１５５、１５６、１５７が、蓄積状態のしきい値レベル範囲の間でいずれのセルからのデータもレベル範囲の中に存在しない状態で保持される。これは、セルユニットの状態のプログラミングと検証とを行った直後に存在する所望のプログラム条件である。しかし、別のユニットがその後プログラムされ、読み出しおよび／または消去が行われるため、このデータは外乱を受ける可能性がある。一方の側または他方の側へシフトして隣接するガードバンドの中へ入るしきい値レベルによって外乱は示される。これは個々の状態分布の範囲内で小さな部分のセルについて生じる可能性があるか、或いは分布全体がシフトしたり、または拡散したりして、外乱の性質に応じて隣接するガードバンドの中へ入る可能性がある。
【０１１６】
通常の読み出しの場合、それぞれのガードバンド１５５、１５６、１５７の中央の周辺にあるブレイクポイントレベル１５９、１６０、１６１が用いられる。すなわち、読み出し中のセルのしきい値レベルはこれらのブレイクポイントレベルと比較されて、これらしきい値レベルの蓄積状態が決定される。１つの状態の範囲内のセルのしきい値レベルが、ブレイクポイントレベルの両端にわたってガードバンドの中をシフトするとき、エラーが生じる。例えば、状態１にあるセルのしきい値レベルがブレイクポイントレベル１５９以下にまで下方へシフトするとき、それらのセルは読み出されて状態０になる。同様に、状態１にあるセルのしきい値レベルがシフトしてブレイクポイントレベル１６０以上まで高くなる場合、通常の読み出しは、それらのセルが状態２にあると言われることになる。次いで、このような読み出されたデータエラーはＥＣＣ処理によって特定される。しかし、このようなエラーの存在が多すぎてＥＣＣが修正できない場合、状態間に別のブレイクポイントレベルを持つ第２の読み出しがステップ１５１と１５３とによって行われる（図９）。ブレイクポイントレベル１５９、１６０、１６１はそれらのそれぞれのガードバンドの範囲内で蓄積しきい値レベルの予想されるシフトの方向に外乱からシフトされるため、シフトされたレベルが前に外乱を受けたときと同じガードバンドの側に今度はあるようになる。
【０１１７】
このようにデータを再び読み出した後、ＥＣＣを用いて何らかのデータエラーが残っているかどうかがステップ１６５で決定される。データエラーが残っていなければ、処理は、データ修正および書き換えを保留すべきかどうかの判定にあるステップを含む主要処理経路のステップ１３５へ進む。ステップ１６５によってデータエラーの存在が発見される場合、データがＥＣＣによって修正可能であるかどうかが次のステップ１６７で判定される。修正可能であれば、処理はやはり主要処理経路のステップ１３５へジャンプする。
【０１１８】
しかし、データエラーが修正不能であることがステップ１６７によって判明した場合、偶数個の異なるブレイクポイントレベルを持つさらなる読み出しを含むようにすることも可能である。ステップ１６９で、いずれかの試行されていない残りの緩和された読み出し条件が存在するかどうかを決定する。そのような読み出し条件が存在すれば、ステップ１７０によって再試行条件を増分し、処理はステップ１５１と１５３とへ戻り、このような新たな条件を用いてデータを読み出す。しかし、さらなる読み出し条件が提供されなければ、主アレイユニット内のデータはその修正不能のエラーと共にそのまま残る必要がある。その場合、アレイユニットに対するスクラブ処理は失敗したと決定する。この１つの結果として、すべての有効データが新たなメモリシステムへコピーされ、次いで現在のメモリが破棄されるということを挙げることができる。別の結果として、オーバーヘッドデータに蓄積されるフラグなどによって、不良マークとしてこのユニットに単にマークが付けられるだけで、処理は、別のアレイユニットのスクラブを続けるためにステップ１４３へ進むということを挙げることができる。次いで、ユニット内のデータは紛失される。原プログラミングの一部としてこれらのデータがデータのしきい値レベルの修正範囲に在ることが初期設定で検証されたことに起因して、時間経過に伴って外乱を与える処理の累積が示されるこの起こり得る結果は、このような悪い結果に対して十分頻繁にスクラブを実施することの望ましさを示している。
【０１１９】
ここでステップ１３５に戻ると、データの修正が必要でもなければ望ましくもないと決定された場合、処理は、ステップ１４３へジャンプし、特定されたユニットのうちのいずれかの追加ユニットに対してスクラブを継続する。また、ステップ１３７と１４０に戻ると、データの修正または書き換えの保留が望ましい旨が決定された場合、それらの読み出されたデータ、アドレス、ＥＣＣ並びにエラーを含むビットの何らかの識別子および他の事前に決定されたデータはステップ１７１に蓄積され、次いで処理はステップ１４３へジャンプする。次いで、これらのデータは、以下説明するように、保留されたアクションが到着したとき終了処理用として読み出される。
【０１２０】
ステップ１３１に戻ると、データエラーが存在しないと決定された後の次のアクションは、ステップ１４３へジャンプすることによって、現在のユニットと何ら関わりがなくなる可能性がある。しかし、偶数個の有効データが読み出された源のセルの蓄積レベルをさらにチェックし、調整する方が望ましい場合もある。このことは、種々の状態用として定義されたレベルの間のガードバンドの中へ移動したいずれかのセルを特定するために、たとえそれらのレベルがブレイクポイントレベルを超えなかった場合であっても、蓄積された電荷が、最初の読み出し時に使用したブレイクポイントレベルとは別の、通常の読み出しデータエラーを生じさせるブレイクポイントレベルを持つデータの再読み出しを伴うことになる（図１０を参照）。ステップ１７２によって、事前に試行されなかったこのような何らかの読み出し条件が存在するかどうかが決定される。そのような読み出し条件が存在すれば、ステップ１７３は、新たなブレイクポイントレベルおよび／または別のスクラブ読み出し条件が選択されるようにする。次いで、処理はステップ１２６へ戻り、ここでそれらの読み出し条件が設定され、そのデータはその後条件と共にステップ１２７で読み込まれる。この読み出し中に使用されるブレイクポイントレベルは、例えば、図１０のガードバンド１５５、１５６、１５７のエッジへシフトされる。ステップ１３１で、データエラーの存在がＥＣＣを用いて決定される場合、エラーを含むビットデータが電荷レベルのガードバンドの精度でシフトを示すことになる。したがって、このようなアクションを保留すべきかどうかをまず判定した後、これらのデータを修正し、書き換え、それによって図１０の電荷レベルの意図した状態分布の精度で、蓄積された電荷レベルがシフトされてガードバンドから外へ出るようになることが望ましい。
【０１２１】
限定するマージンと共に読み出されるデータの中にエラーが存在しないことがステップ１３１で決定される場合、現在のデータ単位に対する処理は終了する。次いで、このデータ単位を用いてまだ試されていないさらに多くの定義されたスクラブ読み出し条件が存在するかどうかがステップ１７２によって決定される。そのようなスクラブ読み出し条件が存在すれば、さらにタイトなブレイクポイントレベルを用いてデータを再び読み出すことも可能となる。すなわち、それらのそれぞれのガードバンドに沿った方向のほんの一部へシフトされたブレイクポイントレベルを用いて、ステップ１７２で利用可能な第１のセットの代替の読み出し条件を用いてデータを２度目に読み出し、次いで必要に応じて電荷蓄積レベルのさらなる細かな調整を行うためにガードバンドのエッジの方へさらに動かされる、ステップ１７２によって選択された第２のセットの代替の読み出し条件のブレイクポイントレベルを用いて今回で３度繰り返してデータを読み出すことも可能となる。同数のこのような追加のスクラブ読み出し条件を実際に実行可能なものとして提供することもできる。
【０１２２】
ステップ１３５に戻ると、このステップでは  或るレベルのデータエラーを修正なしで受け入れるように決定することが可能であるが、これは、今説明したばかりの、ステップ１７２と１７３の分岐によって行われるエラーを含まない蓄積されたデータに対する調整の正確さと矛盾するものであることに留意されたい。したがって、この処理分岐を利用する場合、ステップ１３５は、修正なしのエラーを含むデータの受け入れを最も許さないことが予想されるステップである。
【０１２３】
ステップ１４３で、スクラブの対象として現在特定されているすべてのデータ単位が実際にスクラブを受けてしまったと判定された後で、データ単位のデータが外乱を受ける異常な傾向を示したそれらのデータ単位のうちのいずれのデータ単位も、オプションとしてシステムからマップアウトすることも可能である。ステップ１８５は、システムから取り除くべきこのような何らかの物理的メモリユニットが存在するかどうかを判定するステップであり、存在すれば、そのような物理的メモリユニットはステップ１８７によってマップアウトされる。次いで、スクラブ処理は終了する。
【０１２４】
しかし、データ修正および／または書き換えが保留されている場合、メモリシステムコントローラまたはホストシステムはこの保留についてユーザの注意を喚起させることになる。適正な時点で、保留中の優先度の高いメモリ処理が存在しないとき、ステップ１１７から始まる部分的にスクラブされたユニットのスクラブを終了することも可能である。ステップ１７１によって蓄積された１つのユニット用のデータ、ＥＣＣおよび他の情報は、ステップ１９１によって読み出される。ユニットからのデータが修正を必要とするならば、修正はステップ１９３で行われる。ステップ１９５で、正しいデータが書き換えられる。競合を必要とする他の部分的に競合するスクラブ処理が存在しなければ、その旨がステップ１９７で決定され、ステップ１８５が実行されるか、或いは処理が終了されるかのいずれかとなる。終了すべき別のユニットが存在すれば、ステップ１９９で処理は次のユニットへ増分され、次いでステップ１９１、１９３、１９５がそれらのユニットから得られるデータに対して反復される。
【０１２５】
保留されたスクラブ用の候補のメモリセルユニットから得られるアドレスがステップ１２３で蓄積される場合、実行すべき優先度の高いアクションがコントローラになくなった時点で、保留されたユニットのうちの１つのユニットのためのスクラブ処理の継続へ処理は自動的に戻ることができる。保留ステップ１２１が図９の処理ステップの中で非常に初めの部分にあるため、その時保留されていたユニットへのリターンが結果としてステップ１２５から始まる処理の再開をもたらすことになり、前述したように、その経路に沿って処理が継続されることになる。ステップ１３７または１４０のうちの一方のステップでこのようなユニットの修正および／または書き換えを再び保留することが可能である。
【０１２６】
結論
本発明の例示の実施形態と関連して本発明の種々の態様について説明してきたが、本発明が、添付の特許請求の範囲の最大の範囲内においてその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【０１２７】
【図１Ａ】一体に動作する不揮発性メモリのブロック図である。
【図１Ｂ】一体に動作するホストシステムのブロック図である。
【図２】図１Ａのメモリアレイの第１の編成例を示す。
【図３】図１Ａのメモリアレイにオーバーヘッドデータと共に蓄積されるようなホストデータセクタの例を示す。
【図４】図１Ａのメモリアレイの第２の編成例を示す。
【図５】図１Ａのメモリアレイの第３の編成例を示す。
【図６】図１Ａのメモリアレイの第３の編成例の拡張部を示す。
【図７】１つの特定の構成を備える図１Ａのアレイの１つのグループのメモリセルの回路図である。
【図８】データスクラブ処理時の主要ステップを示すフローチャートである。
【図９】図９Ａおよび図９Ｂとして２ページにわたって示されているスクラブ処理のさらに具体的な例示のフローチャートである。
【図１０】プログラムされたメモリセルグループの電圧しきい値レベルの分布を示す。
【図１Ａ】
2007507804.tif 000003
【図１Ｂ】
2007507804.tif 000004
【図２】
2007507804.tif 000005
【図３】
2007507804.tif 000006
【図４】
2007507804.tif 000007
【図５】
2007507804.tif 000008
【図６】
2007507804.tif 000009
【図７】
2007507804.tif 000010
【図８】
2007507804.tif 000011
【図９Ａ】
2007507804.tif 000012
【図９Ｂ】
2007507804.tif 000013
【図１０】
2007507804.tif 000014
【国際調査報告】
2007507804.tif 000015
2007507804.tif 000016
2007507804.tif 000017
2007507804.tif 000018
2007507804.tif 000019