(57)【要約】  不揮発性メモリにおけるデータエラーは、使用されると、またセル当たりに格納されるビットの密度が高くなると、必然的に増える。メモリは、より少数のエラーで動作するけれども記憶密度がより低い第１の部分と、より高い密度で動作するけれども記憶装置の堅固性がより低い第２の部分とを有するように構成される。１つのエラー管理は、第２の部分へのコピー後のコピーの読み出しおよび検査を提供する。コピーが過多なエラービットを有するならば、第２の部分または第１の部分の中の別の位置において反復される。コピーの読み出しおよび検査は、そのサンプルだけを読み出すことによって加速される。サンプルは、それ自体のＥＣＣを有する、それがサンプリングしているコピーの中の最悪エラー率を表すと推定されるコピーのサブセットから選択される。一実施形態では、サンプルは、１つのグループの各マルチビットメモリセルの１つのビットから取られる。
2013509651.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリを操作する方法であって、
各グループ内のメモリセルが並行して動作するメモリセルの複数のグループを設けるステップと、
データの各サブセットがＥＣＣを与えられているデータの複数のサブセットをメモリセルの第１のグループにプログラムするステップと、
メモリセルの第１のグループにプログラムされたデータのサンプルを選択するステップであって、前記サンプルが第１のグループにプログラムされたデータの複数のサブセットのデータの１つのサブセットから選択されるステップと、
前記サンプルを読み出すステップと、
エラーがあるかないかサンプルを検査するステップと、
前記サンプルから検査されたエラーが所定数のエラービットより多い時にはいつでも、データの複数のサブセットをメモリセルの第２のグループに再プログラムするステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
メモリセルの第１のグループは、１つのワード線上に存在する方法。
【請求項３】
請求項１記載の方法において、
第１のグループは、最小の消去単位であるメモリセルの１つのブロックを形成する方法。
【請求項４】
請求項１記載の方法において、
前記サンプルは、第１のグループにプログラムされたデータの複数のサブセットのうちの最高のエラー率を有すると推定されたデータの１つのサブセットである方法。
【請求項５】
請求項１記載の方法において、
第１のグループの各メモリセルは、ｎビットのデータを記憶し、
前記データの複数のサブセットをプログラムするステップは、ｎ個のデータページをメモリセルの第１のグループに格納し、各データページは第１のグループの中の各メモリセルからの１ビットにより構成される方法。
【請求項６】
請求項１記載の方法において、
ｎは、３に等しい方法。
【請求項７】
請求項１記載の方法において、
前記エラーがあるかないかサンプルを検査するステップは、エラービットの数を判定するためにサンプルのＥＣＣを検査することを含む方法。
【請求項８】
請求項１記載の方法において、
第１の部分および第２の部分を成すように前記不揮発性メモリを構成するステップをさらに含み、
第１の部分は、第２の部分と比べてより低いエラー率であるけれどもより低い記憶密度で動作するメモリセルを有し、
メモリセルの第１および第２のグループは、第１の部分の中にあり、
メモリセルの第２のグループは、第２の部分の中にある方法。
【請求項９】
請求項１記載の方法において、
第１の部分および第２の部分を成すように前記不揮発性メモリを構成するステップをさらに含み、
第１の部分は、第２の部分と比べてより低いエラー率であるけれどもより低い記憶密度で動作するメモリセルを有し、
メモリセルの第１のグループは、第１の部分の中にあり、
メモリセルの第２のグループは、第２の部分の中にある方法。
【請求項１０】
請求項１記載の方法において、
前記メモリは、ＮＡＮＤチェーンの複数の行を成すようにさらに編成され、
各ＮＡＮＤチェーンは、ソース端子およびドレイン端子で終端するデイジーチェーン接続されたメモリセルの１つのストリングの１つの列であり、
サンプルは、各ＮＡＮＤチェーンのソース端子に最も近いメモリセルに格納されているデータの１つのサブセットである方法。
【請求項１１】
請求項１記載の方法において、
前記メモリは、ＮＡＮＤチェーンの複数の行を成すようにさらに編成され、
各ＮＡＮＤチェーンは、ソース端子およびドレイン端子で終端するデイジーチェーン接続されたメモリセルの１つのストリングの１つの列であり、
サンプルは、各ＮＡＮＤチェーンのドレイン端子に最も近いメモリセルに格納されているデータの１つのサブセットである方法。
【請求項１２】
不揮発性メモリであって、
各グループの中のメモリセルが並行して動作するメモリセルの複数のグループと、
データの各サブセットがＥＣＣを与えられているデータの複数のサブセットをメモリセルの第１のグループにプログラムするためのプログラミング回路と、
メモリセルの第１のグループにプログラムされているデータのサンプルであって、第１のグループにプログラムされているデータの複数のサブセットのデータの１つのサブセットから選択されるサンプルと、
サンプルを読み出すための読み出し回路と、
サンプル内のエラーを検査するためのＥＣＣデコーダと、
サンプルから検査されたエラーが所定数のエラービットより多い時にはいつでも、データの複数のサブセットをメモリセルの第２のグループに再プログラムするための再プログラミング回路と、
を備える不揮発性メモリ。
【請求項１３】
請求項１２記載の不揮発性メモリにおいて、
メモリセルの第１のグループは、１つのワード線上に存在する不揮発性メモリ。
【請求項１４】
請求項１２記載の不揮発性メモリにおいて、
第１のグループは、最小の消去単位であるメモリセルの１つのブロックを形成する不揮発性メモリ。
【請求項１５】
請求項１２記載の不揮発性メモリにおいて、
サンプルは、第１のグループにプログラムされたデータの複数のサブセットのうちの最高のエラー率を有すると推定されたデータの１つのサブセットである不揮発性メモリ。
【請求項１６】
請求項１２記載の不揮発性メモリにおいて、
第１のグループの各メモリセルは、ｎビットのデータを記憶し、
データの複数のサブセットをプログラムすることは、ｎ個のデータページをメモリセルの第１のグループに格納し、各データページは第１のグループの中の各メモリセルからの１ビットにより構成される不揮発性メモリ。
【請求項１７】
請求項１２記載の不揮発性メモリにおいて、
ｎは、３に等しい不揮発性メモリ。
【請求項１８】
請求項１２記載の不揮発性メモリにおいて、
前記ＥＣＣデコーダは、エラービットの数を判定するためにサンプルのＥＣＣを検査する不揮発性メモリ。
【請求項１９】
請求項１２記載の不揮発性メモリにおいて、
第１のおよび第２の部分をさらに備え、
第１の部分は、第２の部分と比べてより低いエラー率およびより低い記憶密度で動作するメモリセルを有し、
メモリセルの第１のおよび第２のグループは、第１の部分の中にあり、
メモリセルの第２のグループは、第２の部分の中にある不揮発性メモリ。
【請求項２０】
請求項１２記載の不揮発性メモリにおいて、
第１および第２の部分をさらに備え、
第１の部分は、第２の部分と比べてより低いエラー率およびより低い記憶密度で動作するメモリセルを有し、
メモリセルの第１のグループは、第１の部分の中にあり、
メモリセルの第２のグループは、第２の部分の中にある不揮発性メモリ。
【請求項２１】
請求項１２記載の不揮発性メモリにおいて、
前記メモリは、ＮＡＮＤチェーンの複数の行を成すようにさらに編成され、
各ＮＡＮＤチェーンは、ソース端子およびドレイン端子で終端するデイジーチェーン接続されたメモリセルの１つのストリングの１つの列であり、
サンプルは、各ＮＡＮＤチェーンのソース端子に最も近いメモリセルに格納されているデータの１つのサブセットである不揮発性メモリ。
【請求項２２】
請求項１２記載の不揮発性メモリにおいて、
前記メモリは、ＮＡＮＤチェーンの複数の行を成すようにさらに編成され、
各ＮＡＮＤチェーンは、ソース端子およびドレイン端子で終端するデイジーチェーン接続されたメモリセルの１つのストリングの１つの列であり、
サンプルは、各ＮＡＮＤチェーンのドレイン端子に最も近いメモリセルに格納されているデータの１つのサブセットである不揮発性メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体フラッシュメモリのような再プログラム可能な不揮発性メモリシステムの操作に関し、特にメモリ操作におけるエラー処理および効率的管理に関する。
【背景技術】
【０００２】
特に小型のフォームファクタカードとして実装されたＥＥＰＲＯＭおよびフラッシュＥＥＰＲＯＭの形の、電荷を不揮発性に蓄積することのできるソリッドステートメモリは、最近、いろいろなモバイルおよびハンドヘルドデバイス、特に情報装置および家電製品において一般的に好まれる記憶装置になっている。同じくソリッドステートメモリであるＲＡＭ（ランダムアクセスメモリ）とは違って、フラッシュメモリは不揮発性であり、そのメモリ自体に蓄積されたデータを電力がオフにされた後でも保持する。さらに、ＲＯＭ（読み出し専用メモリ）とは違って、フラッシュメモリはディスク記憶装置と同様に再書き込み可能である。コストが高いにもかかわらず、フラッシュメモリは大容量記憶用にますます使用されるようになっている。ハードドライブおよびフロッピー（登録商標）ディスクのような回転式磁気媒体に基づく従来の大容量記憶装置は、モバイルおよびハンドヘルド環境には不適である。というのは、ディスクドライブがかさばりがちであり、機械的故障を起こしやすく、待ち時間が長く、所要電力が大きいからである。これらの望ましくない属性があるために、ディスクベースの記憶装置は大抵のモバイルおよび携帯用途において実用的でない。一方、フラッシュメモリは、埋め込み式でも取り外し可能のカードの形でも、サイズが小さく、電力消費が少なく、高速で信頼性が高いという特徴があるために、モバイルおよびハンドヘルド環境に理想的に適している。
【０００３】
フラッシュＥＥＰＲＯＭは、消去可能であって、そのメモリセルに新しいデータを書き込める、すなわち「プログラムする」ことのできる不揮発性メモリという点で、ＥＥＰＲＯＭ（電気的に消去可能でプログラム可能な読み出し専用メモリ）に類似している。両方が、ソース領域およびドレイン領域の間で半導体基板内のチャネル領域の上に位置する、電界効果トランジスタ構造内のフローティング（非結合）伝導性ゲートを利用する。ここで、フローティングゲートの上にコントロールゲートが設けられる。トランジスタのしきい値電圧特性は、フローティングゲートに保持される電荷の量により制御される。すなわち、フローティングゲート上の所与のレベルの電荷に対して、トランジスタが「オン」に転換されてそのソース領域とドレイン領域の間の伝導を許すようになる前にコントロールゲートに印加されなければならない対応する電圧（しきい値）がある。特に、フラッシュＥＥＰＲＯＭのようなフラッシュメモリにおいて、メモリセルのブロックの全てが同時に消去され得る。
【０００４】
フローティングゲートは、１つの範囲の電荷を保持することができ、従って１つのしきい値電圧ウィンドウ内の任意のしきい値電圧レベルにプログラムすることができる。しきい値電圧ウィンドウのサイズはデバイスの最低しきい値レベルおよび最高しきい値レベルにより画定され、それはフローティングゲートにプログラムされ得る電荷の範囲に対応する。しきい値ウィンドウは、一般的に、メモリデバイスの特性、動作条件および履歴によって決まる。ウィンドウ内の各々の識別可能で、分解可能なしきい値電圧レベル範囲は、原則として、セルの一定のメモリ状態を指示するために使用され得る。
【０００５】
現在の市販製品ではフラッシュＥＥＰＲＯＭアレイの各記憶素子がバイナリモードで動作することによって単一ビットのデータを記憶することが普通であり、その場合、記憶素子トランジスタのしきい値レベルの２つの範囲が記憶レベルとして定義される。トランジスタのしきい値レベルは、それらの記憶素子に蓄積されている電荷レベルの範囲に対応する。メモリアレイのサイズを小さくする他に、各記憶素子トランジスタに１ビットより多いデータを格納することによってそのようなメモリアレイのデータ記憶密度をさらに高めることが趨勢となっている。これは、各記憶素子トランジスタについて２つより多いしきい値レベルを記憶状態として定義することによって成し遂げられ、今日では４つのそのような状態（記憶素子当たりに２ビットのデータ）が市販製品に含まれている。記憶素子当たりに１６状態など、より多くの記憶状態も実施されている。各々の記憶素子メモリトランジスタは、それがその中で実際的に操作され得るしきい値電圧の一定の総範囲（ウィンドウ）を有し、その範囲は、そのものについて定義された状態の数に加えて、それらを互いに明瞭に区別し得るようにするための状態間のマージンに分割される。明らかに、メモリセルがより多くのビットを記憶するように構成されるほど、それがその中で動作しなければならないエラーのマージンは小さくなる。
【０００６】
メモリセルの役割を果たす働くトランジスタは、通例、２つのメカニズムのうちの１つによって「プログラム済み」状態にプログラムされる。「ホットエレクトロン注入」では、ドレインに印加された高電圧が電子を基板チャネル領域にわたって加速させる。同時に、コントロールゲートに印加された高電圧がホットエレクトロンを薄いゲート誘電体を通してフローティングゲートに引き付ける。「トンネル注入」では、コントロールゲートに基板と比較して高い電圧が印加される。このようにして、電子が基板から、介在するフローティングゲートに引き付けられる。メモリ状態を変えるためにメモリセルの初めは消去されていた電荷蓄積ユニットに電子を注入することによるメモリへの書き込みを記述するために歴史的に「プログラムする」という用語が使われているけれども、今日では、「書き込む」または「記録する」というようなより一般的な用語と交換可能に使用されている。
【０００７】
メモリデバイスは、幾つかのメカニズムによって消去され得る。ＥＥＰＲＯＭでは、フローティングゲート内の電子を薄い酸化物を通して基板チャネル領域へトンネルさせるためにコントロールゲートと比較して高い電圧を基板に印加することにより、メモリセルは電気的に消去可能である（すなわち、ファウラー・ノルドハイムのトンネリング）。通例、ＥＥＰＲＯＭはバイト単位で消去可能である。フラッシュＥＥＰＲＯＭでは、メモリは全体が一度に、または一度に１つ以上の最小消去可能ブロックごとに、電気的に消去可能であり、ここで最小消去可能ブロックは１つ以上のセクタから成ることができ、各セクタは５１２バイト以上のデータを記憶することができる。
【０００８】
メモリデバイスは、通例、カードに搭載され得る１つ以上のメモリチップを含む。各メモリチップは、デコーダならびに消去回路、書き込み回路および読み出し回路のような周辺回路によりサポートされるメモリセルのアレイを含む。より高性能のメモリデバイスは、インテリジェントで高レベルのメモリ操作およびインターフェーシングを実行するコントローラをも伴っている。
【０００９】
今日では、多くの商業的に成功している不揮発性ソリッドステートメモリデバイスが使用されている。それらのメモリデバイスはフラッシュＥＥＰＲＯＭである場合があり、または他のタイプの不揮発性メモリセルを採用している場合がある。フラッシュメモリならびにそれらを製造するシステムおよび方法の例が、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１５，５４１号（特許文献３）、第５，３４３，０６３号（特許文献４）、第５，６６１，０５３号（特許文献５）、第５，３１３，４２１号（特許文献６）、および第６，２２２，７６２号（特許文献７）において与えられている。特に、ＮＡＮＤストリング構造を有するフラッシュメモリデバイスが、米国特許第５，５７０，３１５号（特許文献８）、第５，９０３，４９５号（特許文献９）、第６，０４６，９３５号（特許文献１０）に記載されている。さらに、不揮発性メモリデバイスは、電荷を蓄積するための誘電体層を有するメモリセルからも製造される。前に記載された伝導性フローティングゲート素子の代わりに、誘電体層が使用される。そのような誘電体記憶素子を利用するメモリデバイスは、Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545（非特許文献１）に記載されている。ＯＮＯ誘電体層がソース拡散およびドレイン拡散の間のチャネルを横断して広がる。１つのデータビットのための電荷はドレインに隣接して誘電体層に局在させられ、もう１つのデータビットのための電荷はソースに隣接して誘電体層に局在させられる。例えば、米国特許第５，７６８，１９２号（特許文献１１）および第６，０１１，７２５号（特許文献１２）は、２つの二酸化ケイ素層に挟まれたトラッピング誘電体を有する不揮発性メモリセルを開示している。多状態データ蓄積は、誘電体の中の空間的に分けられている電荷蓄積領域のバイナリ状態を別々に読み出すことによって実現されている。
【００１０】
読み出しおよびプログラム性能を高めるために、アレイ内の複数の電荷蓄積素子またはメモリトランジスタが並行して読み出されるかあるいはプログラムされる。このように、１「ページ」の記憶素子が一緒に読み出されるかあるいはプログラムされる。既存のメモリアーキテクチャでは、１つの行は通例数個のインターリーブされたページを包含するか、あるいは１ページを構成することができる。１ページに属する全ての記憶素子が一緒に読み出されるかあるいはプログラムされる。
【００１１】
書き込まれたデータの中のエラー
ここに記載されたタイプのメモリシステムにおいても、磁気ディスク記憶システムを含む他のものにおいても、蓄積されているデータの完全性は、エラー訂正手法の使用により維持される。最も普通には、一度に格納されるデータの各セクタまたは他の単位についてエラー訂正符号（ＥＣＣ）が計算され、そのＥＣＣはデータと共に格納される。ＥＣＣは、最も一般的には、ＥＣＣがそこから計算されたユーザデータのユニットグループと共に格納される。ユーザデータのユニットグループは、１つのセクタまたは１つのマルチセクタページであり得る。このデータがメモリから読み出される時に、ＥＣＣは、読み出されるユーザデータの完全性を判定するために使用される。データのユニットグループの中のデータの誤っているビットは、しばしば、ＥＣＣの使用により訂正され得る。
【００１２】
より多くのメモリセルをシステム内に置けるようにメモリシステムのサイズを小さくし、より小さなホストデバイスに収まるようにシステムをなるべく小さくすることが趨勢となっている。回路をより高度に集積化することと、より多くのデータのビットを記憶するように各メモリセルを構成することとを組み合わせることによって記憶容量が増やされる。両方の技術が、ますます厳密なエラーのマージンでメモリが動作することを必要とする。そのために、エラーを訂正するＥＣＣに対してより大きな要求が課されることになる。
【００１３】
ＥＣＣは、所定数のエラービットを訂正するように設計され得る。訂正しなければならないビットが増えるほど、ＥＣＣはより複雑に、かつ計算集中的になる。品質保証のために、従来のＥＣＣは、メモリデバイスの寿命の終わりに予想される最悪の場合のセルエラー率に基づいて設計される。従って、エラー率の統計的母集団の遠末端に至るまでの最大数のエラービットを訂正しなければならない。
フラッシュメモリが古くなると、そのエラー率はデバイスの寿命の終わり近くで急に大きくなる。従って、最悪の場合のために設計された強力なＥＣＣは、その全能力をメモリデバイスの寿命の終わりに発揮するように要求されるだけである。
【００１４】
最悪の場合の数のエラービットを訂正するためにＥＣＣを使用すると、大量の処理時間が消費される。それが訂正しなければならないビットが増えるほど、より多くの計算時間が必要となる。メモリの性能は低下する。ＥＣＣを適度な時間内に実行するために追加の専用ハードウェアが実装され得る。そのような専用ハードウェアはコントローラＡＳＩＣチップ上の相当の量のスペースを占めることがある。さらに、デバイスの寿命の大部分の間、ＥＣＣはほんの僅かに利用されるだけであるので、その大きなオーバーヘッドは無駄にされ、現実の利益を実現しない。
従って、悪い場合のために過度に設計されたリソース集中的ＥＣＣを必要とすることなく大記憶容量の不揮発性メモリを提供する必要がある。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】米国特許第５，０７０，０３２号
【特許文献２】米国特許第５，０９５，３４４号
【特許文献３】米国特許第５，３１５，５４１号
【特許文献４】米国特許第５，３４３，０６３号
【特許文献５】米国特許第５，６６１，０５３号
【特許文献６】米国特許第５，３１３，４２１号
【特許文献７】米国特許第６，２２２，７６２号
【特許文献８】米国特許第５，５７０，３１５号
【特許文献９】米国特許第５，９０３，４９５号
【特許文献１０】米国特許第６，０４６，９３５号
【特許文献１１】米国特許第５，７６８，１９２号
【特許文献１２】米国特許第６，０１１，７２５号
【特許文献１３】米国特許出願公開第２０１０／０１７２１８０号
【特許文献１４】米国特許第５，５９５，９２４号
【特許文献１５】米国特許第５，３２１，６９９号
【特許文献１６】米国特許第５，３８６，４２２号
【特許文献１７】米国特許第５，４６９，４４４号
【特許文献１８】米国特許第５，６０２，７８９号
【特許文献１９】米国特許第６，１３４，１４０号
【特許文献２０】米国特許第６，９１４，８２３号
【特許文献２１】米国特許第６，９１７，５４２号
【特許文献２２】米国特許第５，８６７，４２９号
【特許文献２３】米国特許第６，４５６，５２８号
【特許文献２４】米国特許第７，００９，８８９号
【特許文献２５】米国特許第５，９３０，１６７号
【特許文献２６】米国特許出願第１２／６４２，５８４号
【特許文献２７】米国特許第６，６５７，８９１号
【非特許文献】
【００１６】
【非特許文献１】Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545
【発明の概要】
【００１７】
エラー率を制御するためにデータを高密度メモリ部分から低エラー率メモリ部分に適応的に再書き込みする
本発明の一般的な態様に従って、メモリセルのアレイを有するフラッシュメモリが第１の部分および第２の部分を有するように構成されるという点で、書き込み後読み出しエラー管理が提供される。第２の部分は、第１の部分と比べてより高い密度でデータを記憶するけれどもより小さなエラーマージンで動作する。データは、効率的記憶のために第２の部分に書き込まれる。その後、過多なエラービットがあるかないかを検査するためにデータは書き込み後読み出し操作で読み返される。エラービットが所定量を超えるならば、データはエラーがより生じにくい第１の部分において再書き込みされるかまたは維持される。これにより、データをメモリに書き込むことから生じるエラービットの最大数に限界が設けられることになる。エラー率の統計的分布において、この限界は、分布の遠末端（エラー率がより高い）が無視され得るように分布の標準偏差数の限界を表す。これにより、より少数のエラービットを訂正するためにより小さくてより効率的なエラー訂正符号（「ＥＣＣ」）を設計し、これによりメモリの性能を改善すると共にメモリのコストを低減することができる。
【００１８】
１つの好ましい実施形態では、第１の部分は各メモリセルに１ビットのデータを記憶させ、第２の部分は各メモリセルに１ビットより多いデータを記憶させる。
１つの代替の実施形態では、第１の部分は着信データのためのキャッシュとして動作し、入力データのキャッシュコピーがキャッシュにプログラムされる。その後、データの第１のコピーが第２の部分にプログラムされる。書き込み後読み出しが第１のコピー内に過多な量のエラーを検出していなければ、第１のコピーは有効であると見なされてその後のアクセスは第１のコピーにアクセスするように指示される。一方、書き込み後読み出しが第１のコピー内に過多な量のエラーを検出していれば、第１の部分の中のキャッシュされたコピーが有効なデータとして第２の部分の中の第１のコピーに取って代わる。第１のコピーは陳腐化し、その後のアクセスは、キャッシュされているコピーに向けられる。
【００１９】
好ましい実施形態では、第１の部分はさらに第１のセクションおよび第２のセクションを備える。着信データは第１の部分の第１のセクションにキャッシュされ、データの第１のコピーが第２の部分に書き込まれる。その後、第２の部分内の第１のコピーは、過多なエラービットがあるかどうかを検査するために読み返される。エラービットが所定量を超えるならば、着信データの第２のコピーが第１の部分の第２のセクションに書き込まれる。
【００２０】
別の好ましい実施形態に従って、メモリアレイは集積回路チップ上にデータラッチのセットを備え、第１のコピー内のエラービットの検査は、第１のコピーおよびキャッシュされたコピーをデータラッチのセットにロードすると共にデータラッチのセットにおいて比較を行うことによって成し遂げられる。
【００２１】
１つの代わりの実施形態では、書き込み後読み出しが第１のコピー内に過多な量のエラーを検出した後、第１の部分内のキャッシュされたコピーが有効なデータとして第２の部分内の第１のコピーに取って代わる。第１のコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスをキャッシュされたコピーに向けるように更新される。
【００２２】
従って、メモリの高密度記憶部分に書き込む時に、書き込み後読み出しは、エラー率が所定限界内にあるかどうかを検査する。そうであれば、データは、メモリの別の、エラーがより生じにくい部分において再書き込みされるかまたは維持される。そのエラーがより生じにくい部分は、通例、各メモリセルに、セル当たりに高密度記憶部分より少ないデータビットを記憶させる。高密度メモリへの書き込み後に生じるエラーを制御し制限するメカニズムを設けると共に、高密度メモリ内のコピーが過多なエラーを有するならばエラーのより少ないデータを再書き込みする第２のチャンスを提供することにより、ＥＣＣが訂正しなければならなくなるエラーの数が大幅に低減される。この利点は、追加の書き込み後読み出しおよびより低密度のメモリ部分への稀な追加再書き込みという僅かな犠牲を払って得られる。
【００２３】
例えば、メモリの高密度記憶部分は、各メモリセルに３ビットのデータを記憶させる。エラーがより生じにくい部分は、各メモリセルに１ビットのデータを記憶させる。エラー率を６σの従来の最悪の場合のアプローチの代わりに３標準偏差（３σ）以内に制限することによって、ＥＣＣは４２ビットの代わりに僅か４ビットを訂正しなければならないに過ぎないと推定される。３σに制限するということは、母集団の０．１３％が４ビットを超えるエラー率を有すると期待されるということである。課されるコストは、４より多いエラービットを有する高密度記憶装置に書き込まれたデータ（母集団の０．１３％）が、エラー率を超えないように単にデータを低密度記憶装置において再書き込みさせるかあるいは維持させるということである。比較すると、従来のアプローチでは、書き込みエラーのために４２ビットを訂正する最悪の場合のために設計されたＥＣＣは大きなオーバーヘッドを常時保持しているけれども、その時間の大部分の間、それは遥かに少数のビットを訂正しなければならないに過ぎない。
【００２４】
強化書き込み後読み出しエラー管理
本発明の別の態様において、強化書き込み後読み出しエラー管理が実行される。書き込み後読み出しエラー管理はメモリデバイスの寿命の始まりの時にはイネーブルされない。メモリデバイスのエラー率は寿命の始まりの時には非常に低く、書き込み後読み出しを操作する必要はない。これにより、書き込み後読み出しを行うために時間を浪費しなくてもよくなる。メモリデバイスは使用されると古くなるので、デバイスが所定の古さに達すると本発明の強化書き込み後読み出しおよびエラー管理がイネーブルされる。
【００２５】
１つの好ましい実施形態では、メモリデバイスの古さはメモリセルの各消去ブロックと共に維持されるホットカウントにより判定される。ホットカウントは、耐久性、すなわち消去およびプログラミング操作を通して消去ブロックがサイクルされた回数を追跡する。消去ブロックのホットカウントが所定のホットカウントしきい値を超えると、強化書き込み後読み出しエラー管理が始まって、メモリデバイスの寿命が終わるまで動作する。
【００２６】
本発明の別の態様の１つの好ましい実施形態において、メモリの高密度記憶部分（Ｄ３）は各メモリに３ビットのデータを記憶させる。メモリの、エラーがより生じにくい低密度記憶部分（Ｄ１）は、各メモリセルに１ビットのデータを記憶させる。入力データは、初めにＤ１にステージされ、後にＤ３に折り込まれる。強化書き込み後読み出しエラー管理がイネーブルされると、Ｄ３にある現在の充填済みブロックが読み返される。エラー率が所定のしきい値を超えていれば、その現在のＤ３ブロックは拒否され、再試行が行われてデータが新しいＤ３ブロックに再折り込みされる。その新しいＤ３ブロックは再び読み返されてエラー率が過多であるかどうかが検査される。その新しいＤ３ブロックが合格であれば、良好なデータを持つことになり、Ｄ１内のオリジナルデータは陳腐化される。その新しいＤ３ブロックが再び過多なエラー率を示せば、その新しいＤ３ブロックは再び廃棄される。再試行が所定回数行われた後に過多なエラー率がなお存続していれば、再試行はそれ以上は行われず、Ｄ１からＤ３への折り込み操作は断念され、オリジナルデータはＤ１において維持される。この時点で、メモリデバイスはそれ以上プログラム操作を行うには古すぎると見なされ、メモリデバイスに格納されている既存データの完全性を保つために読み出し専用にされる。
【００２７】
加速書き込み後読み出し
本発明の別の態様に従って、何が書き込まれているかを検査するために多量の時間およびシステムリソースを消費することのある書き込み後読み出しを全てのメモリセルに対して行う代わりに、書き込み後読み出しは、書き込み済みのメモリセルの母集団を代表するメモリセルの小さなサンプルに対して行われるだけである。サンプルの書き込み後読み出しが所定値内のエラー率をもたらしたならば、その母集団は検査に合格したと見なされる。そうでなければ、そのセルの母集団に前に書き込まれたデータは過多なエラーを有すると見なされて、同じエリア内の異なる位置あるいは固有のより低いエラー率を有するメモリの別のエリアに再書き込みされる。
【００２８】
不揮発性メモリにおけるデータエラーは、使用されると、またセル当たりに格納されるビットの密度が高くなると、必然的に増える。メモリは、より少数のエラーで動作するけれども記憶密度がより低い第１の部分と、より高い密度で動作するけれども記憶装置の堅固性がより低い第２の部分とを有するように構成される。１つのエラー管理は、第２の部分へのコピーの後の読み出しおよび検査を提供する。コピーが過多なエラービットを有するならば、第２の部分または第１の部分の中の異なる位置において反復される。コピーの読み出しおよび検査は、そのサンプルだけを読み出すことによって加速される。サンプルは、それ自身のＥＣＣを有すると共にそれがサンプリングしているコピーの中の最悪エラー率を表すと推定されるコピーのサブセットから選択される。
【００２９】
一実施形態では、検査されるべきサンプルは、１つのワード線上のセルの１つのグループに書き込まれた全てのＥＣＣページの１つのサブセットである。特に、サブセットは、全ＥＣＣページの中の、最高のエラー率を有すると推定されるものである。
別の実施形態では、検査されるべきサンプルは、１つのブロック内のセルの１つのグループに書き込まれた全ＥＣＣページの１つのサブセットである。ブロック内の全てのセルは同時に消去可能である。特に、サブセットは、全ＥＣＣページの中の、最高のエラー率を有すると推定されるものである。
【図面の簡単な説明】
【００３０】
【図１】本発明の特徴が具体化されているメモリデバイスと通信するホストを示す。
【図２】不揮発性メモリセルを概略的に示す。
【図３】メモリセルのＮＯＲアレイの例を示す。
【図４】並行して感知あるいはプログラムされる、例えばＮＡＮＤ構成に編成されたメモリセルのページを示す。
【図５Ａ】メモリセルのアレイにわたってｐ個のセンスモジュールのバンクを包含するように図１に示されているセンスモジュールをより詳しく示す。
【図５Ｂ】センスアンプを含むセンスモジュールを示す。
【図６】複数の消去可能なブロックを成すように編成されたメモリアレイの例を概略的に示す。
【図７】各セルが２つの可能な状態のうちの１つとなっているセルの集団を有するバイナリメモリを示す。
【図８】各セルが８個の可能な状態のうちの１つとなっているセルの集団を有する多状態メモリを示す。
【図９】ＥＣＣフィールドを包含するデータページを概略的に示す。
【図１０Ａ】標準偏差σの種々の範囲における母集団のパーセンテージでエラー率の正規分布を示す。
【図１０Ｂ】図１０Ａの分布を表形式で示す。
【図１１】フラッシュメモリのエラーの主な発生源を記録した表である。
【図１２】一例であるメモリデバイスについて、その寿命の始まりの時および終わりの時において推定される総エラーを示す表である。
【図１３】従来のＥＣＣは最悪の場合の総エラーＥTOTを訂正するように設計されなければならないことを示す表である。
【図１４Ａ】本発明の好ましい実施形態に従って２部分に分割されたメモリアレイを示す。
【図１４Ｂ】図１４Ａのメモリアレイの第１の部分へのデータページの第２のコピーの再書き込みを示す。
【図１５】図１４Ａおよび図１４Ｂに記載されている実施形態に従う書き込み後読み出しおよび適応再書き込みのプロセスを示す流れ図である。
【図１６Ａ】本発明の好ましい実施形態に従う、２部分に分割されたメモリアレイを示し、第１の部分はキャッシュセクションおよび再書き込みセクションをさらに備えている。
【図１６Ｂ】書き込み後読み出しの好ましい実施形態に従うページ比較手法を示す。
【図１６Ｃ】書き込み後読み出しが第２の部分内のデータページにおける過多な量のエラーを判定した後の第１の部分への再書き込みを示す。
【図１７】図１６Ａ〜図１６Ｃに記載されている実施形態に従う書き込み後読み出しおよび適応再書き込みのプロセスを示す流れ図である。
【図１８】複数の消去ブロックを成すように編成されたメモリを示す。
【図１９】ホットカウントにより判定される所定の程度までメモリデバイスが古くなった時にエラー管理がイネーブルされることを示す流れ図である。
【図２０Ａ】本発明の好ましい実施形態に従って２部分に分割されているメモリアレイを示す。
【図２０Ｂ】図２０ＡのＤ３ブロックが書き込み後読み出しテストに不合格となる別の例を示す。
【図２０Ｃ】図２０Ｂの新しいＤ３ブロックが書き込み後読み出しテストに再び不合格となる別の例を示す。
【図２１】強化書き込み後読み出しエラー管理と関連する例としてのパラメータを示す表である。表は、好ましくは、メモリに格納されているファイルシステム構成ファイルにおいて維持される。
【図２２Ａ】Ｄ１からＤ３への折り込みを有するメモリに適用されたＥＰＷＲエラー管理の好ましい実現形態を示す流れ図である。
【図２２Ｂ】強化書き込み後読み出しエラー管理のデバイスの古さによって決まるイネーブル特徴をより詳しく示す。
【図２２Ｃ】強化書き込み後読み出しエラー管理の好ましい実現形態をより詳しく示す。
【図２３】好ましい２ビット論理コード（「ＬＭ」コード）でコード化される４状態メモリの論理ページごとのプログラミングを示す。
【図２４Ａ】２ビットＬＭコードでコード化された４状態メモリの下側ビットを識別するために必要とされる読み出し操作を示す。
【図２４Ｂ】２ビットＬＭコードでコード化された４状態メモリの上側ビットを識別するために必要とされる読み出し操作を示す。
【図２５】好ましい３ビット論理コード（「ＬＭ」コード）でコード化される８状態メモリのプログラミングを示す。
【図２６】図２６Ａは、図９に示されているものに類似するＥＣＣフィールドを包含するＥＣＣページを概略的に示し、図２６Ｂは、データページを構成する複数のＥＣＣページを示す。
【図２７】加速ＰＷＲの一般的な実施形態を示すフローチャートである。
【図２８】図２７に示されている加速ＰＷＲの好ましい実施形態を示すフローチャートである。
【図２９】ワード線上の３ビットメモリセルのグループが書き込まれた後に書き込み後読み出しのために選択されるサンプルを示す。
【発明を実施するための形態】
【００３１】
メモリシステム
図１は、本発明の特徴が具体化されているメモリデバイスと通信するホストを示す。ホスト８０は、通例、メモリデバイス９０に格納されるべきデータを送るか、あるいはメモリデバイス９０を読み出すことによりデータを取り出す。メモリデバイス９０は、コントローラ１０２により管理される１つ以上のメモリチップ１００を含む。メモリチップ１００はメモリセルのメモリアレイ２００を含み、各セルは、データの複数のビットを記憶するためのマルチレベルセル（「ＭＬＣ」）として構成され得る。メモリチップは、センスモジュール４８０、データラッチ４３０およびＩ／Ｏ回路４４０のような周辺回路も含む。オンチップ制御回路１１０は、各チップの低レベルメモリ動作を制御する。制御回路１１０は、周辺回路と協同してメモリアレイ２００に対してメモリ操作を実行するオンチップコントローラである。制御回路１１０は、通例、メモリ操作のチップレベル制御を提供するための状態マシン１１２を含む。
【００３２】
多くの実現形態において、ホスト８０はコントローラ１０２を介してメモリチップ１００と通信し相互作用する。コントローラ１０２は、メモリチップと協同し、より高いレベルのメモリ操作を制御し管理する。例えば、ホスト書込みでは、ホスト８０は、ホストのオペレーティングシステムのファイルシステムから割り当てられた論理セクタを成してメモリアレイ２００に書き込まれるデータを送る。コントローラに実装されたメモリブロック管理システムは、セクタをステージし、それらをメモリアレイの物理的構造にマッピングし格納する。
【００３３】
好ましいブロック管理システムが、その全体が本願明細書において参照により援用されている、２０１０年７月８日に公開された米国特許出願公開第２０１０／０１７２１８０号（特許文献１３）に開示されている。
ファームウェア６０は、コントローラ１０２の機能を実行するためのコードを提供する。エラー訂正符号（「ＥＣＣ」）プロセッサ６２は、メモリデバイスの動作中にＥＣＣを処理する。別の実施形態では、コントローラ１０２はホスト内に実装される。
【００３４】
物理的メモリ構造
図２は、不揮発性メモリセルを概略的に示す。メモリセル１０は、フローティングゲートまたは誘電体層のような電荷蓄積ユニット２０を有する電界効果トランジスタにより実現され得る。メモリセル１０はソース１４、ドレイン１６、およびコントロールゲート３０も含む。
【００３５】
今日使用されている商業的に成功した不揮発性ソリッドステートメモリデバイスが多くある。それらのメモリデバイスは種々のタイプのメモリセルを採用することができ、各々のタイプは１つ以上の電荷蓄積素子を有する。代表的な不揮発性メモリセルはＥＥＰＲＯＭおよびフラッシュＥＥＰＲＯＭを含む。ＥＥＰＲＯＭセルの例およびそれらを製造する方法が、米国特許第５，５９５，９２４号（特許文献１４）において与えられている。フラッシュＥＥＰＲＯＭセルの例、メモリシステムにおけるそれらの使用法およびそれらを製造する方法が、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１５，５４１号（特許文献３）、第５，３４３，０６３号（特許文献４）、第５，６６１，０５３号（特許文献５）、第５，３１３，４２１号（特許文献６）、および第６，２２２，７６２号（特許文献７）において与えられている。特に、ＮＡＮＤセル構造を有するメモリデバイスの例が、米国特許第５，５７０，３１５号（特許文献８）、第５，９０３，４９５号（特許文献９）、第６，０４６，９３５号（特許文献１０）に記載されている。さらに、誘電体蓄積素子を利用するメモリデバイスの例が、Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545（非特許文献１）に記載され、さらに米国特許第５，７６８，１９２号（特許文献１１）および第６，０１１，７２５号（特許文献１２）に記載されている。
【００３６】
実際には、セルのメモリ状態は、普通、コントロールゲートに基準電圧が印加された時のセルのソース電極およびドレイン電極にわたる伝導電流を感知することによって読み出される。従って、セルのフローティングゲート上の各々の所与の電荷について、固定された基準コントロールゲート電圧に関して対応する伝導電流が検出され得る。逆に、しきい値電圧は、所与の電荷を有するセルをちょうどオンに転換させるコントロールゲートに掛かる電圧として定義される。同様に、フローティングゲートにプログラムすることのできる電荷の範囲は、対応するしきい値電圧ウィンドウまたは対応する伝導電流ウィンドウを画定する。
【００３７】
代替的に、分割された電流ウィンドウの中で伝導電流を検出する代わりに、試験される所与のメモリ状態についてしきい値電圧をコントロールゲートにセットし、伝導電流がしきい値電流より少ないかあるいは多いかを検出することが可能である。一実現形態では、しきい値電流と比較しての伝導電流の検出は、ビット線のキャパシタンスまたは既知のキャパシタを通して伝導電流が放電する速度を検査することによって成し遂げられる。
【００３８】
前の記述から分かるように、メモリセルが記憶させられる状態が増えれば、そのしきい値ウィンドウはより細かく分割される。例えば、メモリデバイスは、−１．５Ｖから５Ｖに及ぶしきい値ウィンドウを有するメモリセルを有することができる。これは６．５Ｖの最大幅を提供する。メモリセルが１６個の状態を記憶しなければならないとすると、各状態はしきい値ウィンドウの中で２００ｍＶから３００ｍＶまでを占めることができる。このことは、所要の分解能を達成し得るようにプログラミング操作および読み出し操作においてより高い精度を要求する。
メモリアレイ２００は、通例、行および列を成すように配列されてワード線およびビット線によりアドレス指定可能なメモリセルの２次元アレイとして編成される。アレイは、ＮＯＲタイプアーキテクチャまたはＮＡＮＤタイプアーキテクチャに従って形成され得る。
【００３９】
図３は、メモリセルのＮＯＲアレイの例を示す。メモリアレイ２００において、各行のメモリセルは、それらのソース１４およびドレイン１６によりデイジーチェーン方式で接続される。この設計は、時には仮想接地設計と称される。１つの行の中のセル１０のコントロールゲート３０は、ワード線４２のような１つのワード線に接続される。１つの列の中のセルのソースおよびドレインはビット線３４および３６のような選択されたビット線にそれぞれ接続される。
【００４０】
図４は、並行して感知またはプログラムされる、例えばＮＡＮＤ構成に編成されたメモリセルの１つのページを示す。図４は、本質的に、メモリアレイ２００内のＮＡＮＤストリング５０の１つのバンクを示す。ＮＡＮＤストリング５０は、それらのソースおよびドレインによりデイジーチェーン接続された一連のメモリトランジスタ（例えば、４個、８個、１６個またはそれ以上）から成る。１対の選択トランジスタＳ１、Ｓ２は、それぞれＮＡＮＤストリングのソース端子およびドレイン端子を介してメモリトランジスタチェーンの外部への接続を制御する。メモリアレイの中で、ソース選択トランジスタＳ１がオンに転換されると、ソース端子はソース線３４に結合される。同様に、ドレイン選択トランジスタＳ２がオンに転換されると、ＮＡＮＤストリングのドレイン端子はメモリアレイのビット線３６に結合される。チェーン内の各メモリトランジスタ１０はメモリセルとして機能する。それは、１つの意図されたメモリ状態を表すように１つの所与の量の電荷を蓄積する電荷蓄積素子２０を有する。各メモリトランジスタのコントロールゲートは、読み出し操作および書き込み操作の制御を可能にする。ＮＡＮＤストリングの１つの行の対応するメモリトランジスタのコントロールゲートは全て同じワード線（ＷＬ０、ＷＬ１・・・のような）に接続される。同様に、（それぞれ選択線ＳＧＳおよびＳＧＤを介してアクセスされる）選択トランジスタＳ１、Ｓ２の各々のコントロールゲートは、それぞれそれのソース端子およびドレイン端子を介してＮＡＮＤストリングへの制御アクセスを提供する。
【００４１】
ＮＡＮＤストリング内のアドレス指定されたメモリトランジスタ１０がプログラミング中に読み出されるかあるいはベリファイされる時に、そのコントロールゲートに共通のワード線を介して適切な電圧が供給される。同時に、ＮＡＮＤストリング５０内のアドレス指定されていないメモリトランジスタの残りは、それらのコントロールゲートへの充分な電圧の印加によって完全にオンに転換される。このようにして、個々のメモリトランジスタのソースからＮＡＮＤストリングのソース端子へ、さらに同様に個々のメモリトランジスタのドレインのためにセルのドレイン端子へ伝導経路が効果的に作成される。このようなＮＡＮＤストリング構造を有するメモリデバイスは、米国特許第５，５７０，３１５号（特許文献８）、第５、９０３，４９５号（特許文献９）、第６，０４６，９３５号（特許文献１０）に記載されている。
【００４２】
ページ７０のような「ページ」は、並行して感知またはプログラムされるべくイネーブルされるメモリセルのグループである。これは、センスアンプの対応するページによって成し遂げられる。例えば、ページ７０は１つの行に沿っていて、共通にワード線ＷＬ３に接続されているページのセルのコントロールゲートに印加された感知電圧によって感知される。各列に沿って、セル１０のような各セルは、ビット線３６を介してセンスアンプによりアクセス可能である。前に言及されたページは、物理的ページメモリセルであるかあるいはセンスアンプである。文脈次第で、各セルが蓄積する場合がある。
【００４３】
感知回路および手法
図５Ａは、メモリセルのアレイを横断するｐ個のセンスモジュールのバンクを包含する図１に示されているセンスモジュールをより詳しく示す。並行して動作するｐ個のセンスモジュール４８０のバンク全体により、１つの行に沿うｐ個のセル１０の１つのグループ（すなわち、物理的ページ）を並行して読み出すかあるいはプログラムすることができる。本質的に、センスモジュール１はセル１における電流Ｉ1 を感知し、センスモジュール２はセル２における電流Ｉ2 を感知し・・・センスモジュールｐはセルｐにおける電流Ｉp を感知する等である。ソース線３４から集合ノードＣＬＳＲＣに流入し、そこから接地へ流れるページの総セル電流ｉTOT は、ｐ個のセルの全電流の総和である。
【００４４】
従来のメモリアーキテクチャでは、１つの共通ワード線を有する１行のメモリセルは２つ以上のページを形成し、ここで１ページ中のメモリセルは並行して読み出されプログラムされる。２ページを有する行の場合、１ページは偶数ビット線によりアクセスされ、他方のページは奇数ビット線によりアクセスされる。いずれの一時点においても、１つの物理的ページの感知回路が偶数ビット線または奇数ビット線に結合されている。
現在生産されているチップでは、物理的ページは６４ｋまたはそれより大きいことがある。好ましい実施形態では、グループはセルの行全体のうちの一連なりである。これは、隣接するビット線にそれぞれ結合されている隣接するメモリセルの１つの行からページが構成されるいわゆる「全ビット線」アーキテクチャである。
【００４５】
図５Ｂは、センスアンプを含むセンスモジュールを示す。センスアンプ４９０は、１つのセルの伝導電流が基準レベルより高いか低いかを検出する。感知された結果は、ラッチ４３０の対応するセットの中にラッチされる（図１を参照）。
【００４６】
消去ブロック
フラッシュメモリと他のタイプのメモリとの１つの重要な違いは、セルが消去済みの状態からプログラムされなければならないことである。すなわち、フローティングゲートは初めに電荷を除去されて空にされなければならない。その後、プログラミングは、フローティングゲートに所望の量の電荷を加え直す。それは、より強くプログラムされた状態からより弱い状態になるようにフローティングから電荷の一部分を除去することをサポートしない。これは、更新データは既存のものを上書きすることができず、前に書き込まれていない位置に書き込まれなければならないということを意味する。
【００４７】
さらに、消去は、フローティングゲートから全ての電荷を除去して空にすることであって、一般にかなり時間がかかる。この理由から、１セルずつあるいは１ページずつでさえも、消去することは煩わしくて非常に低速である。実際には、メモリセルのアレイはメモリセルの多数のブロックに分割される。フラッシュＥＥＰＲＯＭシステムでは普通のことであるように、ブロックは消去の単位である。すなわち、各ブロックは、一緒に消去される最小数のメモリセルを包含する。
【００４８】
図６は、複数の消去可能なブロックを成すように編成されているメモリアレイの例を概略的に示す。電荷蓄積メモリデバイスをプログラムすることは、より多くの電荷をその電荷蓄積素子に加えるという結果をもたらすことができるだけである。従って、プログラム操作の前に、メモリセルの電荷蓄積素子内に存在する電荷は除去され（すなわち、消去され）なければならない。ＥＥＰＲＯＭのような不揮発性メモリは、セルのアレイ２００全体あるいはアレイのセルのかなりのグループが電気的に一緒に（すなわち、一瞬で）消去されるならば、「フラッシュ」ＥＥＰＲＯＭと称される。一旦消去されたならば、セルのグループは、以後、再プログラムされ得る。一緒に消去可能なセルのグループは、１つ以上のアドレス指定可能な消去ユニット３００から成ることができる。消去ユニットあるいはブロック３００は、通例、１ページ以上のデータを記憶し、ページはプログラミングおよび読み出しの最小単位であるが、単一の操作で１ページより多くがプログラムされるかあるいは読み出され得る。各ページは、通例、１セクタ以上のデータを記憶し、セクタのサイズはホストシステムにより定義される。一例は、磁気ディスクドライブに対して確立されている標準規格に従う、５１２バイトのユーザデータに加えて、ユーザデータおよび／またはそれが格納されるブロックに関する数バイトのオーバーヘッド情報のセクタである。
【００４９】
図６に示されている例では、メモリアレイ２００内の個々のメモリセルは、ＷＬ０〜ＷＬｙのようなワード線４２およびＢＬ０〜ＢＬｘのようなビット線３６によりアクセス可能である。メモリは、消去ブロック０、１・・・ｍのような消去ブロックを成すように編成されている。図５Ａおよび５Ｂも参照すると、ＮＡＮＤストリング５０が１６個のメモリセルを包含していれば、アレイ内のＮＡＮＤストリングの第１のバンクは選択線４４とＷＬ０〜ＷＬ１５のようなワード線４２とによりアクセス可能である。消去ブロック０は、一緒に消去されるＮＡＮＤストリングの第１のバンクの全メモリセルを有するように編成される。別のメモリアーキテクチャでは、ＮＡＮＤストリングの１つより多いバンクが一緒に消去され得る。
【００５０】
バイナリ（ＳＬＣ）および多状態（ＭＬＣ）メモリ分割の例
前に記載したように、不揮発性メモリの一例は、そのチャネル領域とそのコントロールゲートの間に電荷蓄積層をそれぞれ有する電界効果トランジスタのアレイから形成される。その電荷蓄積層あるいはユニットは、１つの範囲の電荷を蓄積して、各電界効果トランジスタにしきい値電圧の１つの範囲を生じさせることができる。その可能なしきい値電圧の範囲は１つのしきい値ウィンドウにわたる。しきい値ウィンドウがしきい値電圧の複数のサブレンジまたはゾーンに分割された時に、各々の分解可能なゾーンは１つのメモリセルについて異なる複数のメモリ状態を表すのに使用される。複数のメモリ状態は、１つ以上のバイナリビットによってコード化され得る。
【００５１】
図７は、セルの集団を有するバイナリメモリを示し、各セルは２つの可能な状態のうちの１つにある。各メモリセルのしきい値ウィンドウは、単一の区分レベルによって２つの識別可能なゾーンに分割される。図７（０）に示されているように、読み出し中、下側ゾーンおよび上側ゾーンの間の読み出し区分レベルｒＶ1 は、そのセルのしきい値レベルがどちらのゾーンにあるかを判定するために使用される。セルは、そのしきい値が下側ゾーンの中にあれば「消去済み」状態にあり、そのしきい値が上側ゾーンの中にあれば「プログラム済み」状態にある。図７（１）は、メモリの全セルが初めに「消去済み」状態にあることを示す。図７（２）は、セルのうちの幾つかが「プログラム済み」状態にプログラムされることを示す。メモリ状態をコード化するために１ビットあるいはバイナリコードが使用される。例えば、ビット値「１」は「消去済み」状態を表し、「０」は「プログラム済み」状態を表す。通例、プログラミングは、１つ以上のプログラミング電圧パルスの印加によって実行される。各パルス後、しきい値がベリファイ区分レベルｖＶ1を超えて移動したかどうかをベリファイするためにセルは感知される。このようなメモリセル分割を有するメモリは「バイナリ」メモリまたはシングルレベルセル（「ＳＬＣ」）メモリと称される。バイナリあるいはＳＬＣメモリは、しきい値ウィンドウ全体が２つのゾーンにより占められるだけであるので、広いエラーマージンで動作するということが理解される。
【００５２】
図８は、セルの集団を有する多状態メモリを示し、各セルは８個の可能な状態のうちの１つにある。各メモリセルのしきい値ウィンドウは、少なくとも７個の区分レベルにより８個の識別可能なゾーンに分割される。図８（０）に示されているように、読み出し中、セルのしきい値レベルがどのゾーンにあるかを判定するために読み出し区分レベルｒＶ1 〜ｒＶ7 が使用される。セルは、そのしきい値が最低のゾーンにあれば「消去済み」状態にあり、そのしきい値が上側のゾーンにあれば複数の「プログラム済み」状態のうちの１つにある。図８（１）は、メモリが初めはその全セルが「消去済み」状態にあることを示す。図８（２）は、セルのうちの幾つかが「プログラム済み」状態にプログラムされていることを示す。８個のメモリ状態の各々を表すために、下側、中央および上側ビットを有する３ビットコードが使用され得る。例えば、「０」、「１」、「２」、「３」、「４」、「５」、「６」および「７」状態はそれぞれ「１１１」、「０１１」、「００１」、「１０１」、「１００」、「０００」、「０１０」および「１１０」により表される。通例、プログラミングは１つ以上のプログラミング電圧パルスの印加により実行される。各パルス後、セルは、しきい値がベリファイ区分レベルｖＶ1 〜ｖＶ7 のうちの１つである基準を超えて移動したかどうかをベリファイするために感知される。このようなメモリセル分割を有するメモリは「多状態」メモリまたはマルチレベルセル（「ＭＬＣ」）メモリと称される。
【００５３】
同様に、４ビットコードを記憶するメモリは、１６個の状態の各々を表す下側、第１の中央、第２の中央および上側ビットを有する。しきい値ウィンドウは少なくとも１５個の区分レベルによって１６個の識別可能なゾーンに区分される。
メモリの有限のしきい値ウィンドウがより多くの領域に分割されるにつれて、プログラミングおよび読み出しのための分解能は必然的により細かくなってゆく。従って、多状態またはＭＬＣメモリは、必然的に、より少なく分割されたゾーンを有するメモリのものと比べてより狭いエラーマージンで動作する。換言すれば、エラー率は、各セルに格納されるビットの数と共に増大する。一般的に、エラー率は、しきい値ウィンドウ内の分割されたゾーンの数と共に増大する。
【００５４】
エラー訂正符号（「ＥＣＣ」）による訂正
フラッシュメモリはエラーを生じがちである。エラーのないデータを保証するために、エラーを訂正するべくエラー訂正符号（「ＥＣＣ」）が実施される。
図９は、ＥＣＣフィールドを包含するデータページを概略的に示す。図４および図６Ａに関して記述したように、メモリセルの物理的ページは、並行して動作するセンスモジュールの対応するページにより並行してプログラムされ読み出される。各メモリセルが複数ビットのデータを記憶する時には、各物理的ページに関連付けられた複数のデータページがある。データページ７０’はユーザ部分７２’およびシステム部分７４’を含む。ユーザ部分７２’はユーザデータの格納のためのものである。システム部分７４’は、一般的にメモリシステムによりシステムデータの格納のために使用される。システムデータにはＥＣＣが含まれる。ＥＣＣは、データページのために計算される。通例、ＥＣＣは、コントローラ１０２内のＥＣＣプロセッサ６２（図１を参照）により計算される。
【００５５】
ホストからデータが受け取られると、データの１つのページがコントローラ１０２にステージされ、そのＥＣＣ７６’がＥＣＣプロセッサ６２により計算される。ＥＣＣを組み入れたデータページは、その後、メモリアレイ２００に書き込まれる。通例、データページが読み出される時に、データページはデータラッチ４３０にラッチされ、Ｉ／Ｏ回路４４０からコントローラ１０２にシフトアウトされる。コントローラ１０２において、データページの既存のＥＣＣが、読み出されたデータに関して計算されたＥＣＣの第２のバージョンと比較される。ＥＣＣは、通例、データページ中の任意のエラーを迅速に検出するためのエラー検出符号（「ＥＤＣ」）を含む。ＥＤＣが読み出されたデータページ中のエラーの存在を示したならば、読み出されたデータページ中の誤っているビットを訂正するためにＥＣＣが呼び出される。
【００５６】
ＥＣＣは、任意の数のエラービットを訂正するように設計され得る。それが訂正しなければならないビットが多いほど、ＥＣＣはより複雑で計算集中的となる。品質保証のために、従来のＥＣＣは、メモリデバイスの寿命の終わりの時（「ＥＯＬ」）に予想される最悪の場合のセルエラー率（「ＣＥＲ」）に基づいて設計される。従って、それらは、統計的エラー母集団の遠末端に至るまでの最大数のエラービットを訂正しなければならない。
【００５７】
図１０Ａは、標準偏差σの種々の範囲における母集団のパーセンテージでエラー率の正規分布を示す。例えば、２σから３σまでの範囲の中には母集団の僅か２．１％があるだけである。３σから４σまでの範囲の中には母集団の僅か０．１％があるだけである。
【００５８】
図１０Ｂは、図１０Ａの分布を表形式で示す。母集団のＥ−０９あるいは１０億に１つだけが６σを超えて存在するということが理解され得る。表の最後の列は、最悪の場合におけるメモリデバイスの例についての推定エラー率を示す。例えば、母集団の５％は１個のエラービットを有し、母集団の０．１３５％は４個のエラービットを有し、母集団の１０億に１つは４２個のエラービットを有する。
【００５９】
１２５個のメモリカードから成るサンプルを考察する。各カードは、それぞれ２ＫＢのデータページを有する１６ＧＢの容量を有する。これは、それぞれ２ＫＢの１０億ページから成る母集団となる。１２５個のメモリカードのサンプルのうちに、カードの寿命の終わりの時にエラーのあるページが１つもないことを保証するためには、４２ビットまで訂正することのできるＥＣＣが必要とされる。
【００６０】
メモリの寿命の間のエラー
前に記載したように、ＥＣＣは、通例、メモリの実用寿命の間に予想される任意のエラーを訂正するように設計される。エラーは、幾つかの発生源から生じる。
図１１は、フラッシュメモリについてエラーの主な発生源を記録した表である。図１１（Ａ）は、ページが書き込まれた後に存在するビットエラーである書き込み後ＥPW（ＮCYC ）からのエラーの第１の発生源を示す。フラッシュメモリでは、「プログラミング」は、セルのしきい値を消去済み状態から大きくするプロセスを指す。この用語は、「書き込み」と交換可能に使用される。エラー率は、プログラム−消去サイクルの数ＮCYC と共に増大する。データがセルに書き込まれた後、ベリファイ操作に合格しても、データはなお２つの原因から誤っていることがある。
【００６１】
書き込み後エラーの第１の原因は、ベリファイ操作により検出されなかったオーバープログラミングによる。オーバープログラミングは、メモリセルのうちの幾つかが同時にプログラムされる時に生じ得る。その理由は、メモリセルを構成する半導体デバイスの構造および操作に僅かな変動があることに起因して各メモリセルの特性が異なり、従って、セルによりプログラミング速度が通例違うということにある。その結果として、メモリセルの中には他よりも速くプログラムされるものがあり、さらに幾つかのメモリセルが意図されたものとは異なる状態にプログラムされる可能性がある。複数のメモリセルを速くプログラムすれば、所望のしきい値電圧レベルを通り越して、格納されるデータにエラーを生じさせるという結果になる可能性がある。
【００６２】
通例、データがプログラムされる時に、デバイスについてのプログラム−ベリファイのプロセスは、メモリセルのプログラムされたしきい値電圧が、現在の状態を隣接するより少なくプログラムされた状態から区別する基準レベルより高いかどうかを検査する。しかし、プログラム−ベリファイは、プログラムされたしきい値電圧が基準電圧よりどれだけ高いかを知らない。従って、デバイスは、通例、しきい値電圧の上限を保証しない。或るデバイスは、確かに、ソフトプログラミングプロセス（後で記述する）がしきい値電圧を過度に高めたかどうかを検査するけれども、そのようなデバイスは正規のプログラミングプロセスがしきい値電圧を過度に高めたかどうかを検査しない。従って、所望の状態のための範囲を超えてしきい値電圧を高めるオーバープログラミングが、気づかれることなく生じる可能性がある。オーバープログラミングは、メモリセルに次のプログラム済み状態へ通り越させ、従って誤ったデータを記憶させる原因と成り得る。このエラーはその後の読み出し操作中に検出され、その時にセルのプログラムされたしきい値は、通例、所与のメモリ状態のためのしきい値範囲を区分する下限および上限の両方に関して検査される。オーバープログラミングに関するさらなる情報は、米国特許第５，３２１，６９９号（特許文献１５）、第５，３８６，４２２号（特許文献１６）、第５，４６９，４４４号（特許文献１７）、第５，６０２，７８９号（特許文献１８）、第６，１３４，１４０号（特許文献１９）、第６，９１４，８２３号（特許文献２０）、および第６，９１７，５４２号（特許文献２１）で見出され得る。
【００６３】
書き込み後エラーの第２の原因は、記憶素子間の場結合による、蓄積電荷レベルの見かけ上のシフトにある。この結合の程度は、メモリセルアレイのサイズが小さくされるに連れて必然的に大きくなるが、それは集積回路製造技術の改良の結果として生じる。問題は、異なる時点でプログラムされた隣接するセルの２グループの間で最も顕著に生じる。１グループのセルは、１セットのデータに対応するレベルの電荷をそれ自身の記憶素子に加えるようにプログラムされる。第２のグループのセルが第２のセットのデータでプログラムされた後、第２のグループの記憶素子上の電荷が第１のものと容量的に結合されることの効果の故に、しばしば、第１のグループのセルの記憶素子から読み出された電荷レベルはプログラムされたのとは異なるように見える。特に、感知された時のメモリセルは、より少なく乱された時より高い（あるいは、より大きくプログラムされた）しきい値レベルを有するように見える。これはユーピン効果としても知られていて、その全体が本願明細書において参照により援用されている、米国特許第５，８６７，４２９号（特許文献２２）に記載されている。特許文献２２は、その２グループの記憶素子を物理的に互いに分離させるか、あるいは第２のグループの記憶素子上の電荷の効果を第１のグループのものを読み出す時に考慮に入れることを記載している。
【００６４】
図１１（Ｂ）は、ＥＯＬにおけるデータ保持に起因するビットエラーであるエラーの第２の発生源ＥDR（Ｔ，ＮCYC ）を示す。エラー率は、温度Ｔ、およびプログラム−消去サイクルの数ＮCYC と共に増大する。データエラーは、デバイスの履歴に起因する。それは、通例、データ保持問題に関連し、それはメモリデバイスの、環境、例えば温度への暴露に依存する。時間が経つと、実際の蓄積されている電荷レベルはゆっくりリークし、プログラムされたしきい値を低下させる。
【００６５】
各メモリセルに格納される状態の数が増えると、記憶素子にプログラムされた電荷レベルの任意のシフトの許容範囲は小さくなる。各メモリセルの記憶素子で記憶される状態の数が増えると、各記憶状態のために指定される電荷の範囲は必然的に狭くされて互いにより近く置かれることになるから、プログラミングはより高い精度で行われなければならず、蓄積された電荷レベルの任意のプログラミング後のシフトの許容され得る大きさは、現実のシフトであっても見かけ上のシフトであっても、小さくなる。１つのセルに蓄積されている電荷に対する現実の外乱は、そのセルをプログラムしおよび読み出す時に、さらに、同じ列または行の中のものおよび線またはノードを共有するもののような、そのセルと或る程度の電気的結合を有する他のセルを読み出し、プログラムしおよび消去する時に、生じさせられ得る。
【００６６】
図１１（Ｃ）は、読み出し外乱に起因するビットエラーであるエラーの第３の発生源ＥRD（ＮR ，ＮCYC ）を示す。エラー率は、読み出しの回数とプログラム−消去サイクルの数ＮCYC と共に増大する。
フラッシュメモリについての１つの重要な考慮事項は、それが使用されれば古くなるので耐久性問題を有することである。セルが繰り返しプログラムされ消去される時に、誘電体にわたるトンネリングによって電荷がフローティングゲート２０（図２を参照）に出入りさせられる。そのたびに、或る程度の電荷が誘電体に捉えられてセルのしきい値を変化させる。セルが経験したプログラム−消去サイクルの数は、サイクルカウントＮCYC （「ホットカウント」としても知られている）により測られる。繰り返されるサイクルを通して、所与の消去ブロックについてＮCYC の値は大きくなり、ブロック内のセルのためのしきい値ウィンドウを漸次狭めてゆく。従って、プログラム−消去サイクルの効果は、図１１に記載されているエラーの全発生源に著しい影響を及ぼす。
【００６７】
図１２は、例としてのメモリデバイスについて、その寿命の始まりの時と終わりの時における推定総エラーを示す表である。図１２（Ａ）は、図１１（Ａ）〜図１１（Ｃ）に示されている３つの発生源からの総エラーがＥTOT （ＮCYC ，ＮR ）＝ＥPW（ＮCYC ）＋ＥDR（Ｔ，ＮCYC ）＋ＥRD（ＮR ，ＮCYC ）であることを示す。
【００６８】
図１２（Ｂ）は、メモリが比較的に新しい（ＮCYC が低い）けれども８５℃で５年間焼かれて１０6 回読み出された時の推定ＥTOT を示す。種々の成分エラーについての推定値は、ＥPW（１）〜３、ＥDR（８５℃，１）〜２、およびＥRD（１Ｍ，１）〜０である。これらは、総推定エラーＥTOT （１，１Ｍ）＝３＋２＋０＝５ビットをもたらす。
図１２（Ｃ）は、メモリがデバイスの寿命の終わりの時（「ＥＯＬ」）に近い時の推定ＥTOT を示す。それは、他のパラメータが図１２（Ｂ）のものと同様でプログラム−消去サイクルが大きいこと（ＮCYC ＝１０Ｋ）を特徴としている。種々の成分エラーについての推定値は、ＥPW（１０Ｋ）〜１０、ＥDR（８５℃，１０Ｋ）〜１０、およびＥRD（１Ｍ，１０Ｋ）〜１である。これらは、総推定エラーＥTOT （１０Ｋ，１Ｍ）＝１０＋１０＋１＝２１ビットをもたらす。
【００６９】
図１１および図１２に示されているエラーの３つの発生源のうち、一般的に読み出し外乱に起因するエラーＥRDは、書き込みに起因するエラーＥPWおよびデータ保持に起因するエラーＥDRほど重要ではない。データ保持エラーは、セルのしきい値レベルを「読み出しスクラブ」操作において定期的にリフレッシュすることによって緩和され得る。
【００７０】
メモリに生じることのある種々のエラー、特に書き込み後に生じるエラーを訂正するために、（前に図９に関して説明した）ＥＣＣが使用される。しかし、エラーを訂正するためにＥＣＣを使用すれば処理時間がかかり、それが訂正しなければならないビットが増えれば、より多くの計算時間が必要になる。多数のエラービットを訂正することのできる強力なＥＣＣを使用すればメモリ性能は低下する。適当な量の時間でＥＣＣを実行するために追加の専用ハードウェアが実装されることがある。そのような専用ハードウェアは、コントローラＡＳＩＣチップ上の相当の量のスペースを取る可能性がある。
【００７１】
図１３は、従来のＥＣＣが最悪の場合の総エラーＥTOT を訂正するように設計されなければならないことを示す表である。それは、大きなプログラム−消去サイクル総数およびデータ保持仕様を有する寿命の終わりの時における工夫である。図１２（Ｃ）において与えられている例では、ＥＣＣは少なくとも２１個のエラービットを訂正することができなければならない。
【００７２】
エラー率を制御するためにデータを高密度メモリ部分から低エラー率メモリ部分に適応的に再書き込みする
本発明の一般的な態様に従って、メモリセルのアレイを有するフラッシュメモリは第１の部分および第２の部分を有するように構成される。第１の部分と比べて第２の部分はより高い密度でデータを記憶するけれどもより小さなエラーマージンで動作する。データは、効率の良い記憶を目的として第２の部分に書き込まれる。その後、過多なエラービットがあるかないかを検査するためにデータは読み返される。エラービットが所定量を超えたならば、そのデータは、エラーがより生じにくい第１の部分に再書き込みされる。これにより、データをメモリに書き込むことから生じるエラービットの最大数に限界が設けられることになる。エラー率の統計的分布において、この限界は、分布の遠末端（エラー率がより高い）が無視され得るように分布の標準偏差数の限界を表す。これにより、より少数のエラービットを訂正するためにより小さくてより効率的なエラー訂正符号（「ＥＣＣ」）を設計し、これによりメモリの性能を改善すると共にメモリのコストを低減することができる。
【００７３】
図１４Ａは、本発明の１つの好ましい実施形態に従って２つの部分に分割されているメモリアレイを示す。メモリセルのアレイ２００は、第１の部分４１０および第２の部分４２０を成すように分割されている。第２の部分４２０のメモリセルは高密度記憶装置として構成され、各セルは複数ビットのデータを記憶する。第１の部分４１０のメモリセルはより低い密度の記憶装置として構成され、各セルは第２の部分のものより少ない数のビットを記憶する。例えば、第１の部分のメモリセルは、第２の部分における３ビットのデータと比べて１ビットのデータを記憶するように構成される。前の記載の見地から、第１の部分は、第２の部分のものと比べて遥かに広いエラーマージンで動作する。従って、第１の部分でのメモリ操作は、第２の部分におけるものより少ないエラーを有する。
【００７４】
その全体が本願明細書において参照により援用されている、「Selective Operation of a Multi-state Non-volatile Memory System in a Binary Mode」という米国特許第６，４５６，５２８号（特許文献２３）は、普通は２より多い状態で動作するメモリセルを有するけれども、選択されたメモリセルが２状態動作中に増大したマージンを提供するために僅か２状態で動作するフラッシュ不揮発性メモリを開示している。これにより、２状態で動作させられるメモリセルのより高速のプログラミングとより長い動作寿命とが、多状態動作が提供する大きなデータ記憶密度よりもこれらの利点のほうが望ましい時に、可能となる。
【００７５】
１ページの着信データがメモリアレイ２００に書き込まれる時に、好ましくは、効率および大容量のために高密度の第２の部分に格納される。従って、データページの第１のコピーが第２の部分に書き込まれる。
その後、データページの第１のコピーは、エラーがあるかどうかを判定するために「書き込み後読み出し」で読み返される。これは、キャッシュされ得るオリジナルコピーとの比較によるかまたはＥＣＣのＥＤＣ部分を検査することにより成し遂げられる。
読み出されたコピーの中のエラービットの数が所定量を超えるかどうかが判定される。エラービットの数が所定量を超えなければ、第１のコピーは第２の部分に格納されていると考えられ有効であると見なされる。データページのその後の読み出しは第２の部分の中の第１のコピーから行われ、エラーがあれば、コントローラにおいてＥＣＣにより訂正される。
【００７６】
図１１に関連して前に説明したように、プログラミング中のベリファイプロセスは、アンダープログラミングについて検査するだけであってオーバープログラミングについては検査しない。従って、データページがプログラム−ベリファイされた後にエラーがなお存在していることがある。データページ中のどんなエラーでも検出するためには全ての区分レベル（図７および図８を参照）に関して読み出し操作が必要である。さらに、隣接するセルのその後のプログラミングのユーピン効果が問題のデータページを乱し、見かけ上の感知結果をシフトさせる可能性がある。従って、読み返しは、少なくとも、現在のデータページに顕著なユーピン効果を及ぼす可能性のある全ての隣接セルのプログラミングの後に行われるべきである。別の実施形態では、読み返しは、問題のデータページを含むブロックの中の全てのセルがプログラムされ終わった後に行われる。
「書き込み後読み出し」は、その全体が本願明細書において参照により援用されている、米国特許第６，９１４，８２３号（特許文献２０）、第６，９１７，５４２号（特許文献２１）、および第７，００９，８８９号（特許文献２４）にも開示されている。
【００７７】
図１４Ｂは、データページの第２のコピーの、図１４Ａのメモリアレイの第１の部分への再書き込みを示す。データページ中のエラービットの数が所定量を超えていることを書き込み後読み出しが検出した後、データページの第２のコピーが第１の部分に再書き込みされる。第２のコピーは、キャッシュされ得るオリジナルデータのものであるか、あるいは別の実施形態では第１のコピーを取り出してエラーをＥＣＣで訂正することによる。
【００７８】
第２のコピーが第１の部分に書き込まれた後、有効なコピーとして第２の部分内の第１のコピーに取って代わる。第１のコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスを第２のコピーに向けるように更新される。
１つの好ましい実施形態では、第１の部分の各メモリセルは１ビットのデータを記憶し、第２の部分の各メモリセルは１ビットより多いデータを記憶する。
【００７９】
図１５は、図１４Ａおよび図１４Ｂに示されている実施形態に従う書き込み後読み出しおよび適応再書き込みのプロセスを示す流れ図である。
ステップ５００：メモリを第１および第２の部分を成すように構成する。第１の部分は第２の部分のものより大きなエラーマージンで動作するメモリセルを有する。
ステップ５１０：入力データのグループの第１のコピーを第２の部分にプログラムする。
ステップ５２０：所定時間後にエラーを検査するために第２の部分から第１のコピーを読み出す。
ステップ５３０：エラーはエラービットの所定数を超えるか？所定数を超えたならば、ステップ５４０に進む。そうでなければ、ステップ５５０に進む。
ステップ５４０：入力データのグループの第２のコピーを第１の部分にプログラムする。
ステップ５５０：最後に書き込まれたコピーをその後の読み出しのための有効なデータとして特定する。
ステップ５６０：入力データのグループは不揮発性メモリに格納され終えた。
【００８０】
１つの代替の実施形態では、第１の部分は着信データのためのキャッシュとして動作し、入力データのキャッシュコピーがキャッシュにプログラムされる。その後、データの第１のコピーが第２の部分にプログラムされる。
【００８１】
書き込み後読み出しが第１のコピーの中に過多な量のエラーを検出しなかったならば、第１のコピーは有効と見なされ、その後の読み出しは第１のコピーにアクセスするように管理される。
一方、書き込み後読み出しが第１のコピーの中に過多な量のエラーを検出したならば、第１の部分内のキャッシュされているコピーが有効なデータとして第２の部分内の第１のコピーに取って代わる。第１のコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスをキャッシュされたコピーに向けるように更新される。
【００８２】
その全体が本願明細書において参照により援用されている、「Multi-state Non-volatile Flash Memory Capable of Being its Own Two State Write Cache」という米国特許第５，９３０，１６７号（特許文献２５）は、２つの部分を有するフラッシュメモリアレイを開示している。第１の部分はセル当たりに１ビットを記憶するように構成され、第２の部分はセル当たりに１ビットより多くを記憶するように構成されている。第１の部分は低密度書き込みキャッシュとして動作する。着信データは、初めに第１の部分にキャッシュされる。後の時点で、バックグラウンドで、そのキャッシュされたデータは、より高い記憶密度を有する第２の部分に転送される。
【００８３】
好ましい実施形態では、第１の部分はさらに第１のセクションおよび第２のセクションを備える。着信データは第１の部分の第１のセクションにキャッシュされ、データの第１のコピーが第２の部分に書き込まれる。その後、第２の部分の中の第１のコピーは、過多なエラービットがあるかどうかを検査するために読み返される。エラービットが所定量を超えたならば、着信データの第２のコピーが第１の部分の第２のセクションに書き込まれる。
【００８４】
図１６Ａは、本発明の好ましい実施形態に従って、２つの部分に分割され、第１の部分がさらにキャッシュセクションおよび再書き込みセクションを備えているメモリアレイを示す。図１４Ａの場合と同じく、メモリセルのアレイ２００は第１の部分４１０および第２の部分４２０を成すように分割されている。第２の部分４２０のメモリセルは高密度記憶装置として構成され、各セルは複数ビットのデータを記憶する。第１の部分４１０のメモリセルは第２の部分のものより低い密度の記憶装置として構成され、各セルは第２の部分のものより少数のビットを記憶する。従って、第１の部分は、第２の部分のものより広いエラーマージンで動作する。
【００８５】
第１の部分４１０は、着信データをキャッシュするための第１のセクション４１１および第２の部分からの再書き込みを格納するための第２のセクション４１２をさらに備えている。
１ページの着信データがメモリアレイ２００に書き込まれる時に、キャッシュコピーが第１の部分４１０の第１のセクション４１１にキャッシュされる。第１のコピーは、好ましくは、効率および高密度のために高密度の第２の部分に格納される。従って、データページの第１のコピーが第２の部分に書き込まれる。
別の好ましい実施形態では、メモリアレイは集積回路チップ上にデータラッチのセットを備え、第１のコピー中のエラービットの検査は、第１のコピーおよびキャッシュコピーをそのデータラッチのセットにロードしてデータラッチのセットにおいて比較を行うことによって成し遂げられる。
比較をコントローラにおいて行わないことにより、データはコントローラへトグルアウトされなくてもよく、多くの時間が節約され得る。図１は、データラッチ４３０を示し、データ比較が行われるように、オンチップである。
【００８６】
図１６Ｂは、書き込み後読み出しの好ましい実施形態に従うページ比較手法を示す。第２の部分の中のデータページの第１のコピーは、エラーがあるかどうかを判定するために「書き込み後読み出し」で読み返される。これは、キャッシュコピーとの比較により成し遂げられる。
【００８７】
エラービットの数が所定量を超えなければ、第２の部分に格納されている第１のコピーは有効であると見なされる。キャッシュコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスを第１のコピーに向けるように更新される。データページのその後の読み出しは第２の部分内の第１のコピーからであり、エラーがあれば、コントローラにおいてＥＣＣにより訂正される。
【００８８】
図１６Ｃは、書き込み後読み出しが第２の部分内のデータページに過多な量のエラーを判定した後の第１の部分への再書き込みを示す。第１のコピーのデータページ内のエラービットの数が所定量を超えていることを書き込み後読み出しが検出した後、データページの第２のコピーが第１の部分４１０の第２のセクション４１２に再書き込みされる。第２のコピーは、キャッシュコピーから取られる。
【００８９】
第２のコピーは、第１の部分の第２のセクション４１２に書き込まれた後、第２の部分内の第１のコピーに取って代わる。第１のコピーおよびキャッシュコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスを第２のコピーに向けるように更新される。
【００９０】
図１７は、図１６Ａ〜図１６Ｃに示されている実施形態に従う書き込み後読み出しおよび適応再書き込みのプロセスを示す流れ図である。
ステップ６００：メモリを第１および第２の部分を成すように構成する。第１の部分は第２の部分より大きなエラーマージンで動作するメモリセルを有する。
ステップ６０２：入力データのグループのキャッシュコピーを第１の部分の第１のセクションにプログラムする。
ステップ６１０：入力データのグループの第１のコピーを第２の部分にプログラムする。
ステップ６２０：所定時間後にエラーを検査するために第２の部分から第１のコピーを読み出す。
ステップ６３０：エラーはエラービットの所定数を超えるか？所定数を超えたならば、ステップ６３２に進む。そうでなければステップ６５０に進む。
ステップ６３２：入力データのグループのキャッシュコピーを第１の部分の第１のセクションから読み出す。
ステップ６４２：キャッシュコピーを入力データのグループの第２のコピーとして第１の部分の第２のセクションにプログラムする。
ステップ６５０：最後に書き込まれたコピーをその後の読み出しのための有効なコピーとして特定する。
ステップ６６０：入力データのグループは不揮発性メモリに格納され終えた。
【００９１】
本発明の前の詳細な記述は、説明および記述の目的のために提示されている。網羅的であることも、発明を開示された形そのものに限定することも意図されていない。前の教示を考慮すれば多くの改変および変更が可能である。記述された実施形態は、本発明の原理およびその実際的応用を最善に説明し、それにより他の当業者が本発明を、意図された特定の用途に適する種々の実施形態で種々の改変を用いて最善に利用できるようにするために選択された。本発明の範囲は添付されている特許請求の範囲により定義されるべく意図されている。
【００９２】
強化書き込み後読み出しエラー管理
本発明の別の態様において、強化書き込み後読み出しエラー管理が実行される。書き込み後読み出しは、メモリデバイスの寿命の始まりの時にはイネーブルされない。メモリデバイスのエラー率は寿命の始まりの時には非常に低くて、書き込み後読み出しを動作させる必要はない。これにより、書き込み後読み出しを行うための時間の浪費が避けられる。メモリデバイスは使用すれば古くなるので、本発明の強化書き込み後読み出しおよびエラー管理は、デバイスの所定の古さでイネーブルされる。
【００９３】
１つの好ましい実施形態では、メモリデバイスの古さはメモリセルの各消去ブロックと共に維持されるホットカウントにより判定される。ホットカウントは、耐久性、すなわち消去およびプログラミング操作を通して消去ブロックがサイクルされた回数を追跡する。消去ブロックのホットカウントが所定のホットカウントしきい値を超えるといつでも、強化書き込み後読み出しエラー管理が始まって、メモリデバイスの寿命が終わるまで動作する。
【００９４】
図１８は、複数の消去ブロックを成すように編成されたメモリを示す。前に図６に関して説明したように、各消去ブロックは、一緒に消去されるメモリセルのグループである。さらに、セルが繰り返しプログラムされ消去されると、誘電体にわたるトンネリングによって電荷がフローティングゲート２０（図２を参照）に出入りさせられることも前に記載した。そのたびに、或る程度の電荷が誘電体に捉えられる場合があり、セルのしきい値を変化させる。セルが経験したプログラム−消去サイクルの数は、サイクルカウントＮCYC （「ホットカウント」としても知られている）により測られる。繰り返されるサイクルを通して、所与の消去ブロックについてＮCYC の値は大きくなり、ブロック内のセルのためのしきい値ウィンドウは漸次狭まる。図１８は、各消去ブロック（ｍ）においてホットカウントＮCYC （ｍ）３０２が維持される１つの好ましい実施形態を示す。プログラム可能な単位は１ページであるので、各ブロックのためのホットカウントは、図９に示されているデータページ７０’のシステムデータエリアに格納され得る。代替的に、ホットカウントは、メモリ内のマスターリストに格納され得る。ブロックが消去されるたびに、そのホットカウントは１つずつインクリメントされる。
【００９５】
図１９は、ホットカウントにより判定される所定の程度までメモリデバイスが古くなるとエラー管理がイネーブルされることを示す流れ図である。
ステップ７００：メモリセルの複数の消去ブロックを成すように編成された不揮発性メモリを設ける。各消去ブロックのメモリセルは、一緒に消去され、各ブロックの消去／プログラムのサイクルの数と共に古くなる。
ステップ７１０：古くなりつつあるメモリデバイスに関連付けられたエラーを訂正するためのエラー管理を提供する。好ましい実施形態では、エラー管理は、前に記載した書き込み後読み出しエラー管理である。
ステップ７２０：各ブロックが受けたプログラム−消去サイクルの数を記録するホットカウントを維持することによって各ブロックの古さを追跡する。
ステップ７３０：メモリブロックのホットカウント＞所定のホットカウントしきい値であるか？好ましい実施形態では、所定のホットカウントしきい値は、メモリに格納されているファイルシステム構成ファイル内のパラメータＨｏｔ＿ｃｏｕｎｔ＿ｔｈｒｅｓｈｏｌｄ＿ＥＰＷＲにより与えられる（図２１を参照）。より大きければ、ステップ７４０に行き、そうでなければステップ７５０に行く。
ステップ７４０：メモリの寿命の残りの間、エラー管理をイネーブルする。
ステップ７５０：エラー管理を未だイネーブルしない。
【００９６】
本発明のさらに別の態様の１つの好ましい実施形態では、メモリの高密度記憶部分（Ｄ３）の各メモリは３ビットのデータを記憶する。メモリの、エラーがより生じにくい、低密度記憶部分（Ｄ１）の各メモリセルは１ビットのデータを記憶する。入力データは初めにＤ１にステージされ、後にＤ３に折り込まれる。強化書き込み後読み出しエラー管理がイネーブルされると、Ｄ３内の現在の充填されているブロックが読み返され、エラー率が所定のしきい値を超えたならば、その現在のＤ３ブロックはリジェクトされ、再試行が行われてデータが新しいＤ３ブロックに再折り込みされる。その新しいＤ３ブロックは再び読み返され、過多なエラー率かどうかを検査される。その新しいＤ３ブロックが合格すれば、良好なデータを有し、Ｄ１内のオリジナルデータは陳腐化される。その新しいＤ３ブロックが再び過多なエラー率を示したならば、その新しいＤ３ブロックは再び廃棄される。過多なエラー率が所定数の再試行の後に持続しているならば、それ以上の再試行は試みられず、Ｄ１からＤ３への折り込み操作は断念されてオリジナルデータはＤ１で維持される。この時点で、そのメモリデバイスは、それ以上のプログラミング操作のためには古すぎると見なされて、メモリデバイスに格納されている現存するデータの完全性を維持するために読み出し専用にされる。
【００９７】
図２０Ａ〜図２０Ｃは、Ｄ１部分およびＤ３部分で構成されたメモリにおける書き込み後読み出しエラー管理を実行することの種々の例を示す。Ｄ１部分およびＤ３部分で構成されたメモリは、その全体が本願明細書において参照により援用されている、Gorobetsらによる２００９年１２月１８日に出願された「MAINTAINING UPDATES OF MULTI-LEVEL NON-VOLATILE MEMORY IN BINARY NON-VOLATILE MEMORY」という米国特許出願第１２／６４２，５８４号（特許文献２６）にも開示されている。
【００９８】
図２０Ａは、本発明の好ましい実施形態に従ってメモリアレイが２つの部分に分割されることを示す。メモリセルのアレイ２００（図１を参照）は第１の部分４１０および第２の部分４２０を成すように分割される。第２の部分４２０のメモリセルは高密度記憶装置として構成され、各セルは複数ビットのデータを記憶する。第１の部分４１０のメモリセルはより低い密度の記憶装置として構成され、各セルは、第２の部分のものより少ない数のビットを記憶する。例えば、第１の部分のメモリセルは、第２の部分で３ビットのデータであるのと比べて、１ビットのデータを記憶するように構成される。１セル当たりに１ビットのデータを記憶する第１の部分はＤ１とも称され、１セル当たりに３ビットのデータを記憶する第２の部分はＤ３とも称される。前の記載の見地から、第１の部分は第２の部分のものと比べて遥かに広いエラーマージンで動作する。従って、第１の部分におけるメモリ動作は、第２の部分におけるものよりエラーが少ない。
【００９９】
一実施形態では、第１の部分４１０すなわちＤ１はさらに第１のセクション４１１および第２のセクション４１２を成すように分割される。
ステップ（１）において、ホスト書き込み中、入力データは初めに第１のセクション４１１にキャッシュされるか、あるいは第２のセクション４１２に直接書き込まれる。入力データが断片化されていれば、初めに第１のセクションにキャッシュされる。入力データが連続するデータの相当大きな連なりであるならば、直接第２のセクション４１２に１ページずつ書き込まれる。
ステップ（２）において、いずれにせよ、入力データは結局終わりには第２のセクション４１２に存在することになり、ここに書き込まれたページは、ブロックｍ１、ｍ２およびｍ３のような仮想Ｄ１ブロックにステージされる。各ブロックが論理アドレスのよく画定された１つのグループからのデータを包含する方式では、仮想ブロックは物理的ブロックに対応しないことがあるけれども依然としてその論理アドレスのグループは数個の物理的Ｄ１ブロックに分散させられる。
【０１００】
ステップ（３）において、データが１ページずつＤ１に書き込まれてゆく時に、バイナリページのトリプレットがＤ１内にあると、Ｄ１からＤ３への折り込みとも称されることでＤ３内の単一の３ビットページにコピーされ得る。
強化書き込み後読み出しエラー管理（「ＥＰＷＲ」）を実行することにより、メモリの寿命の或る段階で書き込み後読み出しエラー管理が始まる。
ステップ（４）において、Ｄ３ブロックｍは、仮想Ｄ１ブロックｍ１、ｍ２およびｍ３のページ全体がそれに折り込まれた後に、完成する。その後、ＥＰＷＲにより処理することができ、その処理でＤ３ブロック内のデータが読み返されてＥＣＣエラーに関して検査される。ＥＣＣエラーの数が、ファイルシステム構成ファイルにおいてセットされているパラメータＥ＿ｐｗ＿ｃｈｅｃｋによりそれ自体に与えられる所定のしきい値より少なければ、Ｄ３ブロック内のデータは有効であると見なされる。対応するＤ１ページを、その時に安全に取り換えてリタイアさせることができる。
【０１０１】
図２０Ｂは、図２０ＡのＤ３ブロックが書き込み後読み出しテストで不合格になる別の例を示す。ステップ（１）からステップ（３）までは図２０Ａのものと同じである。
ステップ（４’）において、Ｄ３ブロック内のデータが読み返される時に、ＥＣＣエラーの数はＥ＿ｐｗ＿ｃｈｅｃｋより大きいことが見出される。これは、Ｄ３内のデータがせいぜい限界的で、使用されることはできないということを意味する。
ステップ（５）において、現存するＤ３ブロックが書き込み後読み出しテストに不合格であった場合に、ＥＰＷＲは、データを新しいＤ３ブロックに折り込もうとする再試行を処方する。
ステップ（６）において、新しいＤ３ブロックの中のデータは別の書き込み後読み出しテストを受けさせられる。それがテストに合格すれば、その新しいＤ３ブロックの中のデータは有効であるとみなされる。その後、対応するＤ１ページを、安全に取って換えてリタイアさせることができる。
【０１０２】
図２０Ｃは別の例を示し、この例では図２０Ｂの新しいＤ３ブロックは書き込み後読み出しテストに再び不合格となる。ステップ（１）からステップ（５）までは図２０Ｂのものと同じである。
ステップ（６’）において、新しいＤ３ブロック内のデータが読み返される時に、ＥＣＣエラーの数はＥ＿ｐｗ＿ｃｈｅｃｋより大きいことが見出される。これは、再試行されたＤ３ブロック内のデータが依然として不良で、使用され得ないということを意味する。
ＥＰＷＲプロセスは、別のＤ３ブロックへのさらなる再試行を処方することができる。再試行の回数は、ファイルシステム構成ファイルの中のパラメータＥＰＷＲ＿ｒｅｔｒｉｅｓによりセットされる。例えば、ＥＰＷＲ＿ｒｅｔｒｉｅｓが１であれば、プロセスは、その新しいブロックがテストに不合格になった後に終了する。
その場合、ステップ（７）において、新しいＤ３ブロックを使用することができず、ファイルシステムは、代わりにアクセスをＤ１内に存在している対応するデータに向ける。
【０１０３】
図２１は、強化書き込み後読み出しエラー管理に関連付けられた例としてのパラメータを示す表である。この表は、好ましくは、メモリに格納されているファイルシステム構成ファイルにおいて維持される。
Ｅ＿ｐｗ＿ｃｈｅｃｋ：何個のＥＣＣビットのレベルでＤ３ブロックがハイリスクであると見なされて新しいＤ３ブロックへの、Ｄ１からＤ３への折り込みの再開が必要かを指定する、ファイルシステム構成ファイルにおいてセットされる変数。
ＥＣＣ＿ｔｈｒｅｓｈｏｌｄ＿ＳＬＣ：ＥＰＷＲで続行するか否かを決定するために比較するＳＬＣしきい値を維持するためにファイルシステム構成ファイルにおいて変数が必要とされる。
ＥＰＷＲ＿ｅｎａｂｌｅ＿ｆｌａｇ：ファイルシステム構成ファイルにおいて制御される。０＝セットされていない（デフォルト）。１＝ＥＰＷＲがイネーブルされている時にセットされている。
Ｈｏｔ＿ｃｏｕｎｔ＿ｅｎａｂｌｅ＿ｆｌａｇ：０＝イネーブルされていない。１＝イネーブルされている。
Ｈｏｔ＿ｃｏｕｎｔ＿ｔｈｒｅｓｈｏｌｄ＿ＥＰＷＲ：どんなホットカウントレベルでＥＰＷＲが必要とされるかを指定する、ファイルシステム構成ファイルにおいてセットされる変数。全てのＤ３ブロックのホットカウントが＜ホットカウントしきい値であれば、ＥＰＷＲイネーブルフラグがオンであっても、ＥＰＷＲプロセスはトリガされない。
ＥＰＷＲ＿ｖｅｒｉｆｙ＿ｐａｇｅ＿ｂｕｄｇｅｔ：ＥＰＷＲの１フェーズの間に何ページが読み出され得るかを指定する、ファイルシステム構成ファイルにおいてセットされる変数。
ＥＰＷＲ＿ｒｅｔｒｉｅｓ：再試行の回数を制限する、ファイルシステム構成ファイル内の変数。  Ｄ３＿Ｂｌｏｃｋ＿ｍａｘ＿ｒｅｔｒｉｅｓ：寿命時間が終わるまでの１つのＤ３ブロックに対する再試行の総数を制限する、ファイルシステム構成ファイル内の変数。
【０１０４】
図２２Ａは、Ｄ１からＤ３への折り込みを有するメモリに適用されたＥＰＷＲエラー管理の好ましい実現態様を示す流れ図である。
ステップ８００：開始する。
ステップ８１０：Ｄ１の３つのバイナリデータページからのデータが、図２０Ａに関連して説明したようにＤ３の１つの３次ページにプログラムされる、Ｄ１からＤ３への折り込みである。
ステップ８１２：１つのＤ３ブロックが完全に満たされたか？完全に満たされたならば、ステップ８２０に進み、そうでなければステップ８１０に戻る。
ステップ８２０：強化書き込み後読み出しエラー管理（「ＥＰＷＲ」）がイネーブルされたか？デバイスの古さに依存するイネーブルのさらなる詳細が図２２Ｂにおいて与えられる。ＥＰＷＲがイネーブルされると、ステップ８３０でＥＰＷＲを処理する。そうでなければ、書き込まれたＤ３ブロックの完全性は不明であるが、楽観的に良好であると仮定される。ステップ８５０に進む。
ステップ８３０：ＥＰＷＲを処理する。ＥＰＷＲのより詳細な実現形態が図２２Ｃにおいて与えられる。
ステップ８４０：より高いレベルで、本質的に、ＥＰＷＲはＤ３ブロックの書き込み後読み出しおよびＥＣＣエラー率のテストを行う。エラーがＥ＿ｐｗ＿ｃｈｅｃｋ（図２１を参照）を超えなければ、そのＤ３ブロックは良好である。ステップ８５０に進む。そうでなければ、そのＤ３ブロック内のデータを使用することができず、Ｄ１データを新しいＤ３ブロックに折り込もうとする再試行が考慮される。ステップ８６０に進む。
ステップ８５０：Ｄ３ブロックは良好であると見なされるので、Ｄ１に存在するデータのオリジナルコピーを陳腐化してリタイアさせることができる。
ステップ８６０：図２２Ｃにおいて詳しく述べられている幾つかの考慮事項に基づいて新しいＤ３ブロックで再試行を行うかどうかを決定する。再試行が許されなければ、ステップ８７０に進む。そうでなければ、ステップ８６２に進む（図２２Ｃに示す）。
ステップ８６２：Ｄ１からＤ３への折り込みが新しいＤ３ブロックで反復される。別のブロックを処理するために戻る。
ステップ８７０：Ｄ３ブロック内のデータは不良であると見なされるので、データはＤ１内のオリジナルコピーからアクセスされなければならない。
ステップ８７２：このステップには、Ｄ３ブロックを再書き込みしようとする再試行が幾度か失敗した後に到達するので、そのメモリは、その寿命の終わりに近いと見なされる。プログラミング操作によるデータの破壊を防止するために、読み出し専用状態にされる。ステップ８９０に進む。
ステップ８９０：終了する。
【０１０５】
図２２Ｂは、強化書き込み後読み出しエラー管理のデバイス古さに依存するイネーブル特徴をより詳しく示す。図２２Ａのステップ８２０は、図２２Ｂにおいて次のものをさらに含むように示されている。
ステップ８２２：ＥＰＷＲ＿ｅｎａｂｌｅ＿ｆｌａｇ（図２１を参照）がイネーブルされているかを検査する。イネーブルされていなければ、ＥＰＷＲはまったく実行されていない。デフォルトでステップ８５０に進み、そこでＤ３ブロックは良好と見なされる。イネーブルされていれば、メモリデバイスが或る古さになった後にＥＰＷＲが始まるかどうかを制御するためにステップ８２４に進む。
ステップ８２４：Ｈｏｔ＿ｃｏｕｎｔ＿ｅｎａｂｌｅ＿ｆｌａｇ（図２１を参照）がイネーブルされているかを検査する。イネーブルされていなければ、ＥＰＷＲはメモリデバイスの寿命の始まりの時から実行される。ＥＰＷＲを処理するためにステップ８３０に直接進む。フラグがイネーブルされていればステップ８２６に進み、ＥＰＷＲがいつ始まるべきかを制御する。
ステップ８２６：Ｄ３ブロックのうちのいずれか１つがＨｏｔ＿ｃｏｕｎｔ＿ｔｈｒｅｓｈｏｌｄ＿ＥＰＷＲの値を超えるホットカウントを有するかを検査する。超えていなければ、そのメモリデバイスは未だ若くて過多なエラーを生じにくく、ステップ８５０に進み、ＥＰＷＲは本質的に保留される。ホットカウントがしきい値を超えたならばそのメモリデバイスはエラーが顕著になる古さに達していて、ＥＰＷＲプロセスの利益を被る。ステップ８３０に進んでＥＰＷＲを処理する。
【０１０６】
図２２Ｃは、強化書き込み後読み出しエラー管理の好ましい実現形態をより詳しく示す。図２２Ａのステップ８３０は、図２２Ｃでは次のものをさらに含むように示されている。
ステップ８３２：Ｄ３ブロックの書き込み後読み出しおよびあり得る再試行を行うために利用可能な処理時間があるかどうかを検査する。その利用可能な時間は、好ましくは、フォアグラウンドでのホストコマンドの実行中の使用されていない時間から取られる。必要ならば、処理は、各ホストコマンド中の予備時間をより良く利用するように、複数のより小さなチャンクに分解され得る。処理を開始するために利用可能な時間があれば、ステップ８３４に進み、そうでなければステップ８３８に進む。
ステップ８３４：処理を開始するか、あるいは処理が既に開始されたけれども合間に中断されていたならば、処理を継続する。
ステップ８３６：ＥＤＣ（エラー検出コード）を検査するためにＤ３からデータのページを読み出してコントローラへ転送する。ステップ８３８に進む。
ステップ８４０：ＥＰＷＲはＤ３ブロックの書き込み後読み出しおよびＥＣＣエラー率のテストを行う。エラーがＥ＿ｐｗ＿ｃｈｅｃｋ（図２１を参照）を超えなければ、テストされているページはＤ３内にあり、良好である。ステップ８４２に進む。ページがテストで不良とされたならば、そのＤ３ブロック内のデータは使用され得ず、Ｄ１データを新しいＤ３ブロックに折り込もうとする再試行が考慮される。ステップ８６４に進む。
ステップ８４２：Ｄ３ブロック内の全ページがテストされたか？そうでなければ、次のページを処理するべくステップ８４４に進む。ブロック全体がテストで良好とされたならば、ステップ８５０に進む。
ステップ８４４：Ｄ３ブロック内の次のページを選択する。ステップ８３６に戻る。
ステップ８６２：再試行が試みられる前に、再試行の数がセットされている限界値ＥＰＷＲ＿ｒｅｔｒｉｅｓ（図２１を参照）を既に超えているかどうかを検査する。超えていなければ、ステップ８６６に進むことによって再試行が試みられる。再試行の数がセットされている限界値を超えていれば、そのメモリデバイスはその寿命の終わりの時にあると見なされ、コントロールはステップ８７０に進む。
ステップ８６６：再試行を試みる前の別の考慮事項は、過多なエラーがＤ１内のデータに固有のものであってＤ１からＤ３へのプログラミングエラーに起因するものではないのかどうかを検査することである。Ｄ１データは初めに過多なＥＣＣエラーがあるかどうかが検査される。エラーの数がＥＣＣ＿ｔｈｒｅｓｈｏｌｄ＿ＳＬＣ（図２１を参照）のような所定のしきい値を超えたならば、再試行は無益である。別のＤ３ブロックを処理するためにステップ８３４に戻る。
しかし、次の任意選択の特徴が実行されるならば、代わりに任意選択のステップ８６８に進む。一方、Ｄ１データが良好であれば、さらに進んでステップ８６９において別のＤ３ブロックの再試行を試みる。別の実施形態では、ステップ８６６はステップ８６２の前に実行される。
【０１０７】
図２２Ｃは、破線のボックスにより示される任意選択の特徴をも示している。１つの選択肢は、ブロックがその寿命の終わりの時までに過度に多くの再試行を受けたかどうかを検査するステップ８６４および８６５により示されている。そうならば、そのブロックの物理的完全性は問題であるかも知れず、そのブロックを、それが再び使用されないように、リタイアさせるのが最善である。この選択肢が実行される時には、ステップ８６２におけるＮＯからの流れはステップ８６４へ向けられる。
ステップ８６４：Ｄ３ブロックはパラメータＢｌｏｃｋ＿ｍａｘ−ｒｅｔｒｉｅｓ（図２１を参照）により定義されるしきい値より多い再試行を経験したか？そうならば、ステップ８６５に進んでそのブロックをリタイアさせ、そうでなければステップ８６６に進んでさらに再書き込み決定を行う。  ステップ８６５：Ｄ３ブロックは、その寿命の終わりの時までに、余りに多くの再試行を受けさせられ、堅固であるとは見なされ得ない。リタイアさせられて流通から回収される。その後、コントロールは、Ｄ３ブロックを再書き込みするステップ８６９に直接進む。
【０１０８】
他の選択肢は、Ｄ１データが余り良くない場合、初めにＥＣＣによって訂正されて、Ｄ３に折り込まれる前にＤ１に再ステージされることである。この選択肢が実行される時に、ステップ８６６におけるＹＥＳからの流れはステップ８３４の代わりにステップ８６８へ向けられる。
ステップ８６８：問題のあるＤ１データはＥＣＣにより訂正されてＤ１に再ステージされる。ステップ８６９に進む。
【０１０９】
加速書き込み後読み出し
前のセクションは、データを、それが書き込まれた（「プログラムされた」とも称される）後に、実際に読み返す手法を記述した。この手法は「ＰＷＲ」（書き込み後読み出し））と呼ばれる。前に記載した本発明の１つの態様に従って、ＰＷＲ手法は強化されて「ＥＰＷＲ」（強化書き込み後読み出し）と称される。この場合、ＰＷＲ操作は、必要な時にだけオンにされる。例えば、ＰＷＲは、メモリが使用されたためにより多くのエラーを生じさせ始めた後に初めて開始される。これにより、ＰＷＲに関連するオーバーヘッドのうちの幾つかが緩和される。
【０１１０】
本発明の別の態様に従って、多量の時間およびシステムリソースを消費する可能性のある、何が書き込まれているのかを検査するために全てのメモリセルについて書き込み後読み出しを行う代わりに、書き込み後読み出しは、同様のエラー率を有するメモリセルの母集団を代表するメモリセルの小さなサンプルに対してだけ実行される。そのサンプルの書き込み後読み出しが所定値内のエラー率をもたらすならば、その母集団は検査に合格したと考えられる。そうでなければ、セルのその母集団に前に書き込まれたデータは過多なエラーを有すると見なされて、同じエリア内の異なる位置またはメモリ内のより低い固有のエラー率を有する他のエリアに再び再書き込みされる。
【０１１１】
前に説明したように、書き込み後読み出しの検査は、プログラミング操作の一部である普通のプログラム−ベリファイとは異なる。セルをプログラムする時には、１パルスずつのプログラミング電圧にさらされる。各パルス間で、セルのプログラムされたしきい値は基準読み出ししきい値と比較される。セルのしきい値が基準読み出ししきい値を通り越してプログラムされていることが検出されたならば、そのセルは、そのビット線に印加されるプログラム禁止電圧によってそれ以上プログラムされないように締め出される。従って、プログラム−ベリファイは、セルが基準しきい値を通り越してプログラムされているかどうかを保証するだけであって、発生しているかもしれないオーバープログラミングについての指示を与えない。ＭＬＣメモリのための読み出し操作は、プログラムされたしきい値が１対の基準しきい値の間にあるかどうかを実際に検査する。
【０１１２】
ＭＬＣメモリにおいて、各セルは１ビットより多いデータを記憶する。例えば、Ｄ２メモリでは、各セルは２ビットのデータを記憶する。セルによりサポートされるしきい値ウィンドウは、１つの基準しきい値によって２つの半部に分割される。セルのプログラムされたしきい値が第１の半部の中にあれば、１つのビット値、例えば「１」を有し、第２の半部の中にあれば、他方のビット値、例えば「０」を有する。同様に、Ｄ３メモリでは、各セルは３ビットのデータを記憶し、Ｄ４メモリでは各セルは４ビットのデータを記憶する。一般的に、Ｄｍメモリについて、各セルはｍビットを記憶し、しきい値ウィンドウは２m −１個の基準しきい値によって２m 個の電圧帯域に分割される。電圧帯域の各々にｍビット符号語を割り当てるためにコード化方式が使用される。
【０１１３】
２ビットまたは４状態メモリのための代表的な好ましい「ＬＭ」コード化
図２３（０）〜図２３（３）は、好ましい２ビット論理コード（「ＬＭ」コード）でコード化された４状態メモリの１論理ページずつのプログラミングを示す。１ページの各メモリセルからの２つのコードビットは２つの論理ページを形成し、各ページはページの全てのメモリセルから与えられる１つのコードビットから形成される。プログラミングは、下側ページの次に上側ページが続いて１論理ページずつ行われ得る。このコードはフォールトトレランスを提供し、ＢＬ−ＢＬフローティングゲート結合（ユーピン）効果を緩和する。
【０１１４】
図２３（０）は、４状態メモリアレイのしきい値電圧分布を示す。各メモリセルの可能なしきい値電圧は、４つの可能なメモリ状態、「Ｇｒ」、「Ａ」、「Ｂ」および「Ｃ」を区分するように４つの領域に分割されているしきい値ウィンドウに広がる。「Ｇｒ」は接地状態であり、これは引き締められた分布の中の消去済み状態であり、「Ａ」、「Ｂ」および「Ｃ」は３つの漸次プログラムされた状態である。読み出し中、この４つの状態は３つの区分基準しきい値ＤA 、ＤB およびＤC によって区分される。
【０１１５】
図２３（３）は、４つの可能なメモリ状態を表すための好ましい２ビットＬＭコード化を示す。メモリ状態（すなわち、「Ｇｒ」、「Ａ」、「Ｂ」および「Ｃ」）の各々は１対の「上側、下側」コードビット、すなわち「１１」、「０１」、「００」および「１０」によってそれぞれ表される。ＬＭコード化は、上側ビットおよび下側ビットが状態「Ａ」および「Ｃ」については逆にされている点で、従来のグレイコードとは異なる。「ＬＭ」コードは、米国特許第６，６５７，８９１号（特許文献２７）に開示され、電荷の大きな変化を必要とするプログラム操作を避けることによって隣接するフローティングゲート間の電界効果結合を低減する上で有利である。図２３（２）および図２３（３）に見られるように、各プログラミング操作は、しきい値電圧ＶT の中位の変化から明らかなように、電荷蓄積ユニット内の電荷の中位の変化をもたらす。
【０１１６】
コード化は、２つのコードビット、すなわち「下側」および「上側」ビットが別々にプログラムされ読み出され得るように設計されている。下側ビットをプログラムする時に、セルのしきい値レベルは、「消去済み」領域に残るか、あるいはしきい値ウィンドウの「下側中央」領域へ動かされる。上側ビットをプログラムする時に、これら２つの領域のいずれかにあるセルのしきい値レベルは、しきい値ウィンドウの「下側中間」領域内の、僅かにより高いレベルへさらに進められる。
【０１１７】
図２３（１）および図２３（２）は、２ビットＬＭコードを用いる下側ページのプログラミングを示す。フォールトトレラントのＬＭコードは、任意の中間の状態を通過するいかなるその後の上側ページのプログラミングも避けるように設計されている。従って、第１のラウンド、下側ページのプログラミングは、下側ビットが「１」ならばセルを「消去済み」あるいは「Ｇｒ」状態に留まらせ、下側ビットが「０」ならば「下側中間」状態へプログラムする。基本的に、「Ｇｒ」または「接地」状態は、深く消去された状態をしきい値のよく画定された範囲の中にプログラムさせることによる、引き締まった分布を有する「消去済み」状態である。「下側中間」状態は、メモリ状態「Ａ」および「Ｂ」の間に広がるしきい値電圧の広い分布を有し得る。プログラミング中、「下側中間」状態はＤA のような粗い境界に関してベリファイされる。
【０１１８】
図２３（２）および図２３（３）は、２ビットＬＭコードを用いる上側ページのプログラミングを示す。上側ページのプログラミングは、第１のラウンドの下側ページプログラミングに基づいて実行される。所与の上側ビットは、下側ビットの値に依存して異なるメモリ状態を表すことができる。プログラミングの第２のラウンドにおいて、下側ビットが「１」である時にセルが「１」としての上側ビットを持つ、すなわち（１、１）となるべきであるならば、そのセルについてのプログラミングは行われず、「Ｇｒ」に留まる。上側ビットが「０」で下側ビットが「１」である、すなわち（０、１）であるならば、そのセルは「Ｇｒ」状態から「Ａ」状態へプログラムされる。「Ａ」へのプログラミング中、ベリファイは境界ＤＶA に関して行われる。一方、下側ビットが「０」である時にセルが「０」としての上側ビットを持つ、すなわち（０、０）であるべきならば、そのセルは「下側中間」状態から「Ｂ」へプログラムされる。プログラム−ベリファイは境界ＤＶB に関して行われる。同様に、下側ページが「０」である時にセルが「１」としての上側ビットを持つ、すなわち（１、０）であるべきならば、そのセルは「下側中間」状態から「Ｃ」へプログラムされる。プログラム−ベリファイは境界ＤＶC に関して行われる。上側ページのプログラミングは「Ｇｒ」状態または「下側中間」状態から次の隣接メモリ状態へのプログラミングを包含するだけであるから、１ラウンドから他のラウンドへ大量の電荷が変更されることはない。さらに、「Ｇｒ」から大ざっぱな「下側中間」状態への下側ページのプログラミングは、時間を節約するように設計されている。
【０１１９】
図２４Ａは、２ビットＬＭコードでコード化された４状態メモリの下側ビットを識別するために必要とされる読み出し操作を示す。復号は、上側ページがプログラムされているか否かによる。上側ページがプログラムされていれば、下側ページの読み出しは区分しきい値電圧ＤB に関してのｒｅａｄＢの１回の読み出しパスを必要とする。一方、上側ページが未だプログラムされていなければ、下側ページは「中間」状態（図２３（２）を参照）にプログラムされ、ｒｅａｄＢはエラーを引き起こす。むしろ、下側ページを読み出すためには区分しきい値電圧ＤA に関してのｒｅａｄＡの１回の読み出しパスが必要である。この２つの場合を区別するために、上側ページがプログラムされている時に上側ページに（普通はオーバーヘッドまたはシステムエリアに）フラグ（「ＬＭ」フラグ）が書き込まれる。読み出し中、初めに上側ページがプログラムされていると仮定し、従ってｒｅａｄＢ操作が実行される。ＬＭフラグが読み出されれば、この仮定は正しく、読み出し操作は終了する。一方、第１の読み出しがフラグをもたらさなければ、上側ページがプログラムされていないことを示し、従って下側ページはｒｅａｄＡ操作によって読み出されなければならない。
【０１２０】
図２４Ｂは、２ビットＬＭコードでコード化された４状態メモリの上側ビットを識別するために必要とされる読み出し操作を示す。図から明らかなように、上側ページ読み出しは、それぞれ区分しきい値電圧ＤA およびＤC に関してのｒｅａｄＡおよびｒｅａｄＣの２パス読み出しを必要とする。同様に、上側ページが未だプログラムされていなければ上側ページの復号は「中間」状態によって混乱させられることもあり得る。再び、ＬＭフラグは、上側ページがプログラムされているか否かを示す。上側ページがプログラムされていなければ、読み出されたデータは、上側ページデータがプログラムされていないことを示す「１」にリセットされる。
【０１２１】
読み出しが「フルシーケンス」読み出しまたは「全ビット」読み出しの場合のように区分された状態の全シーケンスを通してスキャンすることである場合には、読み出しは、基準しきい値電圧ＤA 、ＤB およびＤC によってそれぞれ区分されるメモリ状態「Ｇｒ」、「Ａ」、「Ｂ」および「Ｃ」に関して行われる。全ての可能な状態がフルシーケンス読み出しによって区別されるので、ＬＭフラグについて検査する必要はない。この読み出しモードでは、全てのビットが同時に判定される。
【０１２２】
３ビットすなわち８状態メモリのための代表的な好ましい「ＬＭ」コード化
２ビットＬＭコードについての例は、３ビットまたはそれ以上に類似して拡張され得る。
図２５（０）〜図２５（４）は、好ましい３ビット論理コード（「ＬＭ」コード）でコード化された８状態メモリのプログラミングを示す。１つのページの各メモリセルからの３ビットは３つの論理ページを形成し、プログラミングを１論理ページずつ行うことができる。このコードは、前に記載した２ビットＬＭコード化に類似し、８個の可能なメモリ状態をコード化するための３ビットへの拡張である。図２５（０）は、８状態メモリアレイのしきい値電圧分布を示す。各メモリセルの可能なしきい値電圧は、８個の可能なメモリ状態、「Ｇｒ」、「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」および「Ｇ」を区分するように８個の領域に分割されたしきい値ウィンドウに広がる。「Ｇｒ」は接地状態であり、これは引き締められた分布の中の消去済み状態であり、「Ａ」〜「Ｇ」は７個の漸次プログラムされた状態である。読み出し中、この８個の状態は７個の区分基準しきい値ＤA 〜ＤG により区分される。
【０１２３】
図２５（４）は、８個の可能なメモリ状態を表すための好ましい３ビットＬＭコード化を示す。８個のメモリ状態の各々は「上側、中央、下側」ビットのトリプレット、すなわち「１１１」、「０１１」、「００１」、「１０１」、「１００」、「０００」、「０１０」および「１１０」によってそれぞれ表される。図２５（１）および図２５（４）に見られるように、各プログラミング操作は、しきい値電圧ＶT の中位の変化から明らかなように、電荷蓄積ユニット内の電荷の中位の変化をもたらす。
【０１２４】
コード化は、３つのコードビット、すなわち「下側」、「中央」および「上側」のビットが別々にプログラムされ読み出され得るように設計されている。従って、第１のラウンド、下側ページのプログラミングは、下側ビットが「１」ならばセルを「消去済み」または「Ｇｒ」状態に留まらせ、下側ビットが「０」ならば「下側中間」状態へプログラムさせる。基本的に、「Ｇｒ」または「接地」状態は、深く消去された状態をしきい値の狭い範囲の中にプログラムさせることによる、引き締まった分布を有する「消去済み」状態である。「下側中間」状態は、メモリ状態「Ｂ」および「Ｄ」の間に広がるしきい値電圧の広い分布を有することができる。プログラミング中、「下側中間」状態を、ＤB のような粗い区分基準しきい値レベルに関してベリファイすることができる。中央ビットをプログラムする時に、セルのしきい値レベルは、下側ページのプログラミングから生じた２つの領域のうちの一方から出発して４個の可能な領域のうちの１つへ移動する。上側ビットをプログラムする時に、セルのしきい値レベルは、中央ページのプログラミングから生じた４個の可能な領域のうちの１つから出発して８個の可能なメモリ状態のうちの１つへ移動する。
【０１２５】
一般的に、１ページのメモリセルは並行してプログラムされ、各メモリセルは３ビットを有する。従って、メモリセルのページは３つの論理データページを有すると見なされる場合があり、各論理データページはページの全てのセルの１コードビットから与えられる。従って、「下側ビット」ページはページの全てのメモリセルの下側ビットから形成され、「中央ビット」ページは全てのセルの中央ビットから形成され、「上側ビット」ページはページの全てのセルの上側ビットから形成される。
【０１２６】
図２５（１）および図２５（２）は、３ビットＬＭコードを使用する下側ページのプログラミングを示す。フォールトトレラントのＬＭコードは、任意のその後のより上側のページのプログラミングが任意の中間の状態を通過することを避けるように設計されている。従って、第１のラウンド、下側ページプログラミングは、下側ビットが「１」、すなわち（ｘ、ｘ、１）ならば、セルを「消去済み」または「Ｇｒ」状態に留まらせ、下側ビットが「０」、すなわち（ｘ、ｘ、０）ならば、「下側中間」状態へプログラムさせる。基本的に、「Ｇｒ」または「接地」状態は、深く消去された状態をしきい値のよく画定された範囲の中にプログラムさせることによる、引き締まった分布を有する「消去済み」状態である。「下側中間」状態は、メモリ状態「Ｂ」および「Ｄ」の間に広がるしきい値電圧の広い分布を有し得る。プログラミング中、「下側中間」状態はＤB のような粗い境界に関してベリファイされる。
【０１２７】
図２５（２）および図２５（３）は、３ビットＬＭコードを使用する中央ページのプログラミングを示す。中央ページのプログラミングは、第１のラウンド、下側ページプログラミングに基づいて行われる。所与の中央ビットは、下側ビットに依存して異なるメモリ状態を表すことができる。プログラミングの第２のラウンドにおいて、下側ビットが「１」である時にセルが「１」としての中央ビットを持つ、すなわち（ｘ、１、１）となるべきであるならば、そのセルについてのプログラミングは行われず、「Ｇｒ」に留まる。下側ビットが「１」である時に中央ビットが「０」、すなわち（ｘ、０、１）ならば、そのセルは「Ｇｒ」状態から、「Ａ」および「Ｂ」の間に広がる第１の「中央中間」状態へプログラムされる。第１の「中央中間」状態へのプログラミング中、ベリファイは境界ＤＶA に関して行われる。一方、下側ビットが「０」である時にセルが「０」としての中央ビットを持つべき、すなわち（ｘ、０、０）であるべきならば、セルは「下側中間」状態から「Ｃ」および「Ｄ」の間に広がる第２の「中央中間」状態へプログラムされる。プログラム−ベリファイは、境界ＤＶC に関して行われる。同様に、下側ページが「０」である時にセルが「１」としての中央ビットを持つべき、すなわち（ｘ、１、０）であるべきならば、セルは「下側中間」状態から「Ｅ」および「Ｆ」の間に広がる第３の「中央中間」状態へプログラムされる。プログラム−ベリファイは境界ＤＶE に関して行われる。
【０１２８】
図２５（３）および図２５（４）は、３ビットＬＭコードを使用する上側ページのプログラミングを示す。上側ページのプログラミングは、第１のラウンドおよび第２のラウンド、すなわち下側ページおよび中央ページのプログラミングに基づいて行われる。所与の上側ビットは、下側および中央のビットに依存して異なるメモリ状態を表すことができる。プログラミングの第３のラウンドでは、下側および中央のビットが「１」である時にセルが「１」としての上側ビットを持つ、すなわち（１、１、１）となるべきであるならば、そのセルについてのプログラミングは行われず、「Ｇｒ」に留まる。一方、下側および中央のビットが「１」である時に上側ビットが「０」、すなわち（０、１、１）であれば、セルは「Ｇｒ」状態から「Ａ」状態へプログラムされる。「Ａ」へのプログラミング中、ベリファイは境界ＤＶA に関して行われる。
【０１２９】
同様に、下側ビットおよび中央ビットがそれぞれ「０」および「１」である時にセルが「０」としての上側ビットを持つべきであれば、すなわち（０、０、１）であるべきならば、セルは第１の「中央中間」状態から「Ｂ」へプログラムされる。プログラム−ベリファイは境界ＤＶB に関して行われる。下側ビットおよび中央ビットがそれぞれ「０」および「１」である時にセルが「１」としての上側ビットを持つべき、すなわち（１、０、１）であるべきならば、セルは第１の「中央中間」状態から「Ｃ」へプログラムされる。プログラム−ベリファイは境界ＤＶC に関して行われる。
【０１３０】
同様に、下側ビットおよび中央ビットがそれぞれ「０」および「０」である時にセルが「１」としての上側ビットを持つべき、すなわち（１、０、０）であるべきならば、セルは第２の「中央中間」状態から「Ｄ」へプログラムされる。プログラム−ベリファイは境界ＤＶD に関して行われる。下側ビットおよび中央ビットがそれぞれ「０」および「０」である時にセルが「０」としての上側ビットを持つべきであれば、すなわち（０、０、０）であるべきならば、セルは第２の「中央中間」状態から「Ｅ」へプログラムされる。プログラム−ベリファイは境界ＤＶE に関して行われる。
【０１３１】
同様に、下側ビットおよび中央ビットがそれぞれ「１」および「０」である時にセルが「０」としての上側ビットを持つべき、すなわち（０、１、０）であるべきならば、セルは第３の「中央中間」状態から「Ｆ」へプログラムされる。プログラム−ベリファイは境界ＤＶF に関して行われる。下側ビットおよび中央ビットがそれぞれ「０」および「０」である時にセルが「１」としての上側ビットを持つべきであれば、すなわち（１、１、０）であるべきならば、セルは第３の「中央中間」状態から「Ｇ」へプログラムされる。プログラム−ベリファイは境界ＤＶG に関して行われる。
【０１３２】
上側ページのプログラミングは「Ｇｒ」状態または「中央中間」状態のうちの１つから次の隣接メモリ状態へのプログラミングを包含するだけであるから、１ラウンドから他のラウンドへ大量の電荷が変更されることはない。これはＢＬ−ＢＬユーピン効果を緩和するのに役立つ。
【０１３３】
従って、Ｄｍ（ｍ＝１、２、３・・・）メモリは一度に１ビットずつプログラムされ、一度に１ビットずつ読み出され得るということが分かる。１つのワード線ＷＬｎ上の１つのグループのメモリセルが並行してプログラムされるかまたは読み出される時に、そのグループに関連付けられたｍ個のデータページがあり、各データページはグループの各セルからの１ビットに対応する。漸進読み出しモードでは、感知は基準しきい値のサブセットに関して行われ、各感知時にｍ個のデータページのうちの１つだけがＷＬｎから読み出されてコントローラへ転送される。フルシーケンス読み出しモードでは、感知は全ての基準しきい値に関して行われ、ｍ個のデータページの全てが、１ページずつ転送される前にＷＬｎから読み出される。
【０１３４】
例えば、図４に示されているＮＡＮＤアーキテクチャを有するメモリの場合、各ＮＡＮＤストリングはｎ個のメモリセルから成るデイジーチェーンを有する。一実施形態では、そのようなＮＡＮＤチェーンの１つの行が、図６に示されている１つの消去ブロック３００を形成する。図４では、ＷＬ３上のページ７０のような１つのページのメモリセルが並行して操作される。
【０１３５】
図９は、ワード線ＷＬｎ上のｍビットメモリについてｍ個のデータページのうちの１つであるデータページ７０’を示す。前述したように、別の好ましい実施形態では、デバイス集積度が高くなって、１つのＥＣＣフィールドを共有する１つのページの中に最適数より多いメモリセルが存在するようになると、ページ７０は、「複数のＥＣＣページ」から成るより小さなユニットに分割される。
【０１３６】
図２６Ａは、図９に示されているものに類似するＥＣＣフィールドを包含するＥＣＣページを概略的に示す。ＥＣＣページ８０は、ユーザ部分８２およびシステム部分８４を含む。ユーザ部分８２は、ユーザデータを格納するためのものである。システム部分８４は、一般的に、メモリシステムによりシステムデータを格納するために使用される。システムデータにはＥＣＣが含まれる。ＥＣＣは、ＥＣＣページのために計算される。通例、ＥＣＣは、コントローラ１０２内のＥＣＣプロセッサ６２（図１を参照）により計算される。図２６Ａと図９との違いは、ＥＣＣページ８０が、データページ７０’の全体を占めるのではなくて、データページを構成する数個のうちの１つであることである。
【０１３７】
図２６Ｂは、１つのデータページを構成する複数のＥＣＣページを示す。図４に示されているデータページ７０’のようなデータページは、１つのＷＬ上のセルの１つのページの各セルからの１つの論理ビットから構成されるデータのセットである。一般的にＮ個のＥＣＣページが１つのデータページを構成する。例えば、Ｎ＝４、１つのデータページ７０’を構成する４つのＥＥＣページ８０がある。
【０１３８】
ホストからデータが受け取られる時に、データのＥＣＣページはコントローラ１０２にステージされ、そのＥＣＣ８６がＥＣＣプロセッサ６２（図１を参照）により計算される。その後、それら自身のＥＣＣを組み込んだ幾つかのＥＣＣページ８０がステージされてメモリアレイ２００にデータページ７０’として書き込まれる。通例、データページ７０’が読み出される時に、データページはデータラッチ４３０にラッチされ、Ｉ／Ｏ回路４４０からコントローラ１０２へシフトアウトされる。コントローラ１０２において、データページの各ＥＣＣページのＥＣＣ８６は、読み出されたデータについて計算されたＥＣＣの第２のバージョンと比較される。ＥＣＣは、通例、データページ内の任意のエラーを速く検出するためのエラー検出符号（「ＥＤＣ」）を含む。ＥＤＣが読み出されたデータページ内に任意のエラーが存在することを示していれば、読み出されたデータページ内の誤っているビットを訂正するためにＥＣＣが呼び出される。ＥＣＣは、所定の最大数までのエラーを訂正するように設計されている。実際には、メモリの寿命のうちの任意の所与の時点で、ＥＣＣは、その所定の最大数より少ない所定数のエラーを訂正するための予算を有することができる。
【０１３９】
２ビットメモリについて、各セルは２ビットのデータを記憶し、図４の例では各ＷＬと関連付けられた２つのデータページがある。各データページが４個のＥＣＣページを有するならば、１つのＷＬにプログラムされ、ＰＷＲ検査のために読み出される合計８個のＥＣＣページがある。
同様に、３ビットメモリについて、各セルは３ビットのデータを記憶し、図４の例では各ＷＬと関連付けられた３個のデータページがある。各データページが４個のＥＣＣページを有するならば、１つのＷＬにプログラムされＰＷＲ（書き込み後読み出し）検査のために読み出される合計１２個のＥＣＣページがある。
【０１４０】
従って、３ビットメモリについて、全てのＷＬを書き込んだ後にＰＷＲ検査を実行することは、１２個のＥＣＣページを感知し、その後コントローラへＥＣＣ検査のために送り出すことを含み得るということが分かる。１２個のＥＣＣページのうちのいずれか１つが所定のエラー予算を超えていることをＥＣＣデコーダが発見すれば、そのＷＬへの書き込みは許容され得ないと見なされて異なるＷＬで再試行される。例えば、書き込みは、同じブロックの中、あるいはメモリの、エラーに対してより高い耐性を有する１ビットセルを有するような部分の中の別のＷＬに再書き込みされる。
【０１４１】
３ビットメモリの例では、感知されるべき３個のデータページがある。図２５に関連する記述から分かるように、これは、各データページのために１つずつ、３つの読み出しサイクルを招く。各読み出しサイクルは１つ以上の基準しきい値に関しての感知であり、従ってＷＬを読み出すには時間がかかる。さらに、各データページが４個のＥＣＣページを有し、合計１２個のＥＣＣページがコントローラへ逐次転送されなければならない。感知操作より多くの時間ではないとしても、その転送操作にも時間がかかる。
【０１４２】
母集団全体の代わりのサンプルに対するＰＷＲ検査
本発明の１つの一般的な実施形態では、書き込まれているものに対する書き込み後読み出し（ＰＷＲ）検査は、書き込まれているもののサブセットだけを検査することにより加速される。書き込み後読み出し検査は、書き込まれたもののサンプルだけに対して行われる。
【０１４３】
図２７は、加速ＰＷＲの一般的な実施形態を示すフローチャートである。
ステップ９００：メモリセルの複数のグループを設ける。各グループ内のメモリセルは並行して動作する。
ステップ９０２：データの複数のサブセットを第１のグループのメモリセルにプログラムする。データの各サブセットは１つのＥＣＣを与えられている。
ステップ９１０：メモリセルの第１のグループにプログラムされているデータの１つのサンプルを選択する。そのサンプルは第１のグループにプログラムされているデータの複数のサブセットのデータの１つのサブセットから選択される。
ステップ９２０：サンプルを読み出す。
ステップ９２２：エラーがあるかないかサンプルを検査する。
ステップ９３０：そのサンプルから検査されたエラーが所定数のエラービットより多い時はいつでも、複数のサブセットのデータを第２のグループのメモリセルに再プログラムする。
一実施形態では、検査されるべきサンプルは１つのワード線上の１つのグループのセルに書き込まれている全ＥＣＣページの１つのサブセットである。特に、そのサブセットはその全ＥＣＣページのうちの最高のエラー率を有すると推定されている１つである。
【０１４４】
図２８は、図２７に示されている加速ＰＷＲの好ましい実施形態を示すフローチャートである。プロセスは、ステップ９１０がステップ９１０’により取って代わられていることを除いて、図２７のものと同様である。
ステップ９１０’：第１のグループのメモリセルにプログラムされているデータの１つのサンプルを選択する。そのサンプルは、第１のグループにプログラムされているデータの複数のサブセットのデータの１つのサブセットから選択されると共に、第１のグループにプログラムされているデータの複数のサブセットの中で最高のエラー率を有すると推定されているデータの１つのサブセットである。
【０１４５】
図２９は、１つのワード線上の３ビットメモリセルから成る１つのグループが書き込まれた後に書き込み後読み出しのために選択されたサンプルを示す。３ビットメモリでは、１つのワード線ＷＬ４２に書き込まれる３つのデータページ、すなわち下側、中央および上側のページがある。メモリのしきい値ウィンドウ内の種々の電圧帯域を区分する基準しきい値の設計された配置に依存して、データページのうちの１つは他よりも僅かに高いエラー率を有することがある。例えば、３つのデータページのうちで上側データページが推定最高データ率を有するとすれば、それが選択される。選択されたデータページ内の全てのＥＣＣページが同じエラー率を有すると推定されれば、コントローラへ最初にシフトアウトされる位置を有するＥＣＣページを選択すれば十分である。さらに、コード化方式の選択もエラー率と関係がある。例えば、プログラムされたしきい値がシフトされる時にはグレイコードが最小のビットエラーを提供する。コード化の選択に依存して、メモリセルの同じグループに格納されている種々のデータページは同様のあるいは異なるエラー率を有することがあり得る。
【０１４６】
実際には、ワード線上のエラーは、開回路を生じさせる亀裂あるいは異常に高い抵抗を有するもののような物理的欠陥に起因する可能性がある。その欠陥が問題のセルとＷＬデコーダとの間に生じていれば、検査はエラーを示す。その欠陥がセルのＷＬデコーダから遠い他方の側に生じているならば、検査はエラーを示さないかもしれない。従って、ＷＬ４２に沿う全てのＥＣＣページのうちで、ＷＬのＷＬデコーダ４０から最も遠い端にあるサンプルＥＣＣページ８２は、ＷＬ上の欠陥の位置に関わらず欠陥の影響を受けそうである。
【０１４７】
従って、１つのワード線（ＷＬ）に書き込まれる複数のデータページがある好ましい実施形態では、ＷＬに書き込まれたデータを検査するために使用されるサンプルは、始めは最高の推定エラー率を有するデータページから選択される。さらに、選択されたデータページの中に複数のＥＣＣページがあるならば、ワード線デコーダから最も遠く離れて位置するＥＣＣページがサンプルのために選択される。
【０１４８】
別の実施形態では、検査されるべきサンプルは１つのブロックの中のセルの１つのグループに書き込まれた全てのＥＣＣページの１つのサブセットである。ブロックの中の全てのセルは一緒に消去可能である。特に、サブセットは全てのＥＣＣページのうちの、最高のエラー率を有すると推定されている１つである。
【０１４９】
例えば、図４に示されているＮＡＮＤメモリでは、消去ブロックはＮＡＮＤチェーンの１つの行から構成される。各ＮＡＮＤチェーンは、それらのソースおよびドレインによりデイジーチェーン接続されて一端がソース端子、他端がドレイン端子で終端している１６個のメモリセルである。ソース端子およびドレイン端子に最も近いセルがよりエラーを起こしがちであることはよく知られている。従って、そのようなブロックのためには、ワード線ＷＬ１またはＷＬ１６が選択されるべきである。この場合、好ましくは、サンプルは、ＷＬ１のワード線デコーダから最も遠い端にあるＥＣＣページである。
【０１５０】
さらに、１セットのワード線を有するメモリセルの１つのブロックが消去単位として消去可能であり、セットに属する各ワード線に書き込まれているデータがチェックアウトしなければならないという要件があり、そうでなければそのブロック全体が再書き込みされるようになっている別の実施形態では、セットのうちの最高のエラー率を有すると推定されたＷＬが優先的に最初に検査される。このようにして、発生することのあるエラーが早く検出され、ブロックの再書き込みは遅滞なく始まることができる。
従って、図４に示されているＮＡＮＤメモリのためには、ワード線ＷＬ１およびＷＬ１６が最初に検査のために選択されるべきである。
各々１ビットデータを記憶するメモリセルを有する第１の部分と各々３ビットデータを記憶するメモリセルを有する第２の部分とに分割されているメモリについて１つの例が与えられているけれども、本発明はその例によって限定されない。
【０１５１】
本発明の前の詳細な記述は、説明および記述の目的のために提示されている。網羅的であることも、発明を開示された形そのものに限定することも意図されていない。前の教示を考慮すれば多くの改変および変更が可能である。記述された実施形態は、本発明の原理およびその実際的応用を最善に説明し、それにより他の当業者が本発明を、意図された特定の用途に適する種々の実施形態で種々の改変を用いて最善に利用できるようにするために選択された。本発明の範囲は添付されている特許請求の範囲により定義されるべく意図されている。
【図１】
2013509651.tif 000003
【図２】
2013509651.tif 000004
【図３】
2013509651.tif 000005
【図４】
2013509651.tif 000006
【図５Ａ】
2013509651.tif 000007
【図５Ｂ】
2013509651.tif 000008
【図６】
2013509651.tif 000009
【図７】
2013509651.tif 000010
【図８】
2013509651.tif 000011
【図９】
2013509651.tif 000012
【図１０Ａ】
2013509651.tif 000013
【図１０Ｂ】
2013509651.tif 000014
【図１１】
2013509651.tif 000015
【図１２】
2013509651.tif 000016
【図１３】
2013509651.tif 000017
【図１４Ａ】
2013509651.tif 000018
【図１４Ｂ】
2013509651.tif 000019
【図１５】
2013509651.tif 000020
【図１６Ａ】
2013509651.tif 000021
【図１６Ｂ】
2013509651.tif 000022
【図１６Ｃ】
2013509651.tif 000023
【図１７】
2013509651.tif 000024
【図１８】
2013509651.tif 000025
【図１９】
2013509651.tif 000026
【図２０Ａ】
2013509651.tif 000027
【図２０Ｂ】
2013509651.tif 000028
【図２０Ｃ】
2013509651.tif 000029
【図２１】
2013509651.tif 000030
【図２２Ａ】
2013509651.tif 000031
【図２２Ｂ】
2013509651.tif 000032
【図２２Ｃ】
2013509651.tif 000033
【図２３】
2013509651.tif 000034
【図２４Ａ】
2013509651.tif 000035
【図２４Ｂ】
2013509651.tif 000036
【図２５】
2013509651.tif 000037
【図２６】
2013509651.tif 000038
【図２７】
2013509651.tif 000039
【図２８】
2013509651.tif 000040
【図２９】
2013509651.tif 000041
【国際調査報告】
2013509651.tif 000042
2013509651.tif 000043