(57)【要約】  不揮発性メモリにおけるプログラム操作は、所定の接合部で、別々の時に実行される複数のより小さいセグメントに分割される。その所定の接合部は、操作を次のセグメントでリスタートする時に操作が操作の始めからリスタートすることを必要とせずに続行し得るように、一義的な識別を可能とするような接合部である。これは、各セグメントのプログラミングシーケンスがアトミックであること、すなわち単に所定のタイプのプログラミングステップで終わることを要求することによって成し遂げられる。次のセグメントにおいて、その終了プログラミングステップは、プログラム済みワード線のグループを横断する所定のパターンのＥＣＣエラーを検出することによって識別される。
2013514602.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
【発明の概要】
【００１８】
本発明の一般的な態様に従って、不揮発性メモリにおけるプログラム操作は、所定の接合部で、別々の時間に実行される複数の小さいセグメントに分割される。その所定の接合部は、操作を次のセグメントでリスタートする時に操作が操作の始めからリスタートすることを必要とせずに続行し得るように、一義的な識別を可能とするような接合部である。これは、各セグメントのプログラミングシーケンスがアトミックであること、すなわち単に所定のタイプのプログラミングステップで終わることを要求することによって成し遂げられる。次のセグメントにおいて、終了プログラミングステップは、プログラム済みワード線のグループを横断するＥＣＣエラーの所定のパターンを検出することによって識別される。
【００１９】
本発明の１つの態様に従って、アトミックなプログラミングシーケンスは次の不揮発性メモリにおいて提供される。不揮発性メモリはプログラミングパスの複数のタイプのセットを用いて各ワード線を通してマルチビットデータをプログラム可能とする。１つのグループのワード線でのプログラム操作は、通例、１シリーズのプログラミングステップを含み、各ステップは最後のステップから異なるワード線に対して異なるタイプのプログラミングパスを実行する。プログラム操作は、複数のより小さなセグメントに分解されることを許され、各セグメントにおけるプログラミングステップは、プログラミングパスの複数のタイプのセットのうちの所定のタイプだけで終わる。その所定のタイプは、終了プログラミングステップをそのセットのうちのそうでない他のタイプと比べて識別可能とするものである。アトミックなプログラムシーケンスが所定のタイプのプログラミングパスで終わるので、終了プログラミングステップは、次のセグメントにおいて、リスタートし操作をそこから続行するために一義的に識別され得る。
【００２０】
１つの好ましい実施形態では、ワード線上の３ビットメモリセルのページは３つのタイプのプログラミングパス（すなわち、下位（Ｌｏｗｅｒ）、フォギー（Ｆｏｇｇｙ）およびファイン（Ｆｉｎｅ））によりプログラムされる。１つの特定の実施形態では、アトミックなプログラムシーケンスは下位パスを実行するプログラミングステップで終わる。他の１つの特定の実施形態では、アトミックなプログラムシーケンスはファインパスを実行するプログラミングステップで終わる。
本発明の他の１つの態様に従って、セグメントにおける終了プログラミングステップは、次のセグメントにおいて、プログラム済みワード線のグループを横断するＥＣＣエラーの所定のパターンを検出することによって識別される。
【００２１】
１つの好ましい実施形態では、最後のセグメントの終了プログラミングステップは次のセグメントで識別される。プログラム済みワード線と消去済みワード線との間の境界はバイナリーサーチによって突き止められる。境界からのプログラム済みワード線のグループのＥＣＣエラーは、最後のセグメントにおいて最後のプログラミングステップが終わったワード線の識別を可能とするために検出可能なＥＣＣパターンまたはシグニチャーを形成する。識別されたワード線とアトミックなプログラムシーケンスの終了パスのタイプとが与えられたならば、プログラム操作がリスタートし続行するように最後のプログラミングステップが判定される。
【図面の簡単な説明】
【００２２】
【図１】本発明の特徴が具体化されているメモリデバイスと通信するホストを示す。
【図２】不揮発性メモリセルを概略的に示す。
【図３】メモリセルのＮＯＲアレイの例を示す。
【図４】並行して感知あるいはプログラムされる、例えばＮＡＮＤ構成に編成されたメモリセルのページを示す。
【図５Ａ】メモリセルのアレイにわたってｐ個のセンスモジュールのバンクを包含するように図１に示されているセンスモジュールをより詳しく示す。
【図５Ｂ】センスアンプを含むセンスモジュールを示す。
【図６】複数の消去可能なブロックを成すように編成されたメモリアレイの例を概略的に示す。
【図７】各セルが２つの可能な状態のうちの１つとなっているセルの集団を有するバイナリメモリを示す。
【図８】各セルが８個の可能な状態のうちの１つとなっているセルの集団を有する多状態メモリを示す。
【図９】（１）〜（３）は、ワード線上の１つのページの各メモリセルに３ビットのデータをプログラムするための好ましい（フォギー−ファイン）マルチパスプログラミングを示す。
【図１０Ａ】２ビットメモリセル（Ｄ２）を有し、そのページが隣接ワード線上のメモリセル間のユーピン効果を最小にするように最適のシーケンスでプログラムされるメモリの例を示す。
【図１０Ｂ】図１０Ａの２ビットメモリのためのプログラミング順序の他の１つの図を示す。
【図１１Ａ】各ワード線にセル当たりに３ビットのページがプログラムされ得る３ビットメモリセル（Ｄ３）を有するメモリの例を示す。
【図１１Ｂ】３ビットメモリセル（Ｄ３）を有し、そのページが隣接ワード線上のメモリセル間のユーピン効果を最小にするように最適のシーケンスでプログラムされるメモリの例を示す。
【図１１Ｃ】図１１Ｂの３ビットメモリのためのプログラミング順序の他の１つの図を示す。
【図１２Ａ】連続的なホストアドレスにおけるページの好ましい順序付けの例を示す。
【図１２Ｂ】Ｄ３メモリにおけるページの好ましい格納順序を示す。
【図１３Ａ】ＥＣＣフィールドを包含するデータページを概略的に示す。
【図１３Ｂ】Ｄ３におけるページの可能なステータスを示す表である。
【図１４】本発明を実施するのに適するメモリの例を示す。
【図１５】図１１ＢのＳ１０までのプログラミングステップを示す。
【図１６Ａ】プログラミングステップＳ７〜Ｓ１０の種々の接合部での書き込みアボートの効果をリストする。
【図１６Ｂ】プログラミングステップＳ７〜Ｓ１０の種々の接合部での書き込みアボートの効果をリストする。
【図１７Ａ】同じくプログラミングステップＳ７〜Ｓ１０の種々の接合部での書き込みアボートの効果をリストする。
【図１７Ｂ】同じくプログラミングステップＳ７〜Ｓ１０の種々の接合部での書き込みアボートの効果をリストする。
【図１８】本発明のアトミックなプログラムシーケンスを示す流れ図である。
【図１９】前のプログラムセグメントからの最後のプログラミングステップの発見を示す流れ図である。
【発明を実施するための形態】
【００２３】
メモリシステム
図１は、本発明の特徴が具体化されているメモリデバイスと通信するホストを示す。ホスト８０は、通例、メモリデバイス９０に格納されるべきデータを送るか、あるいはメモリデバイス９０を読み出すことによりデータを取り出す。メモリデバイス９０は、コントローラ１０２により管理される１つ以上のメモリチップ１００を含む。メモリチップ１００はメモリセルのメモリアレイ２００を含み、各セルは、データの複数のビットを記憶するためのマルチレベルセル（「ＭＬＣ」）として構成され得る。メモリチップは、センスモジュール４８０、データラッチ４３０およびＩ／Ｏ回路４４０のような周辺回路も含む。オンチップ制御回路１１０は、各チップの低レベルメモリ動作を制御する。制御回路１１０は、周辺回路と協同してメモリアレイ２００に対してメモリ操作を実行するオンチップコントローラである。制御回路１１０は、通例、メモリ操作のチップレベル制御を提供するための状態マシン１１２を含む。
【００２４】
多くの実現形態において、ホスト８０はコントローラ１０２を介してメモリチップ１００と通信し相互作用する。コントローラ１０２は、メモリチップと協同し、より高いレベルのメモリ操作を制御し管理する。例えば、ホスト書込みでは、ホスト８０は、ホストのオペレーティングシステムのファイルシステムから割り当てられた論理セクタを成してメモリアレイ２００に書き込まれるデータを送る。コントローラに実装されたメモリブロック管理システムは、セクタをステージし、それらをメモリアレイの物理的構造にマッピングし格納する。
【００２５】
好ましいブロック管理システムが、その全体が本願明細書において参照により援用されている、２０１０年７月８日に公開された米国特許出願公開第２０１０／０１７２１８０号（特許文献１３）に開示されている。
ファームウェア６０は、コントローラ１０２の機能を実行するためのコードを提供する。エラー訂正符号（「ＥＣＣ」）プロセッサ６２は、メモリデバイスの動作中にＥＣＣを処理する。別の実施形態では、コントローラ１０２はホスト内に実装される。
【００２６】
物理的メモリ構造
図２は、不揮発性メモリセルを概略的に示す。メモリセル１０は、フローティングゲートまたは誘電体層のような電荷蓄積ユニット２０を有する電界効果トランジスタにより実現され得る。メモリセル１０はソース１４、ドレイン１６、およびコントロールゲート３０も含む。
【００２７】
今日使用されている商業的に成功した不揮発性ソリッドステートメモリデバイスが多くある。それらのメモリデバイスは種々のタイプのメモリセルを採用することができ、各々のタイプは１つ以上の電荷蓄積素子を有する。代表的な不揮発性メモリセルはＥＥＰＲＯＭおよびフラッシュＥＥＰＲＯＭを含む。ＥＥＰＲＯＭセルの例およびそれらを製造する方法が、米国特許第５，５９５，９２４号（特許文献１４）において与えられている。フラッシュＥＥＰＲＯＭセルの例、メモリシステムにおけるそれらの使用法およびそれらを製造する方法が、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１５，５４１号（特許文献３）、第５，３４３，０６３号（特許文献４）、第５，６６１，０５３号（特許文献５）、第５，３１３，４２１号（特許文献６）、および第６，２２２，７６２号（特許文献７）において与えられている。特に、ＮＡＮＤセル構造を有するメモリデバイスの例が、米国特許第５，５７０，３１５号（特許文献８）、第５，９０３，４９５号（特許文献９）、第６，０４６，９３５号（特許文献１０）に記載されている。さらに、誘電体蓄積素子を利用するメモリデバイスの例が、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 のうちの１つである基準を超えて移動したかどうかをベリファイするために感知される。このようなメモリセル分割を有するメモリは「多状態」メモリまたはマルチレベルセル（「ＭＬＣ」）メモリと称される。
【００４５】
同様に、４ビットコードを記憶するメモリは、１６個の状態の各々を表す下側、第１の中央、第２の中央および上側ビットを有する。しきい値ウィンドウは少なくとも１５個の区分レベルによって１６個の識別可能なゾーンに区分される。
メモリの有限のしきい値ウィンドウがより多くの領域に分割されるにつれて、プログラミングおよび読み出しのための分解能は必然的により細かくなってゆく。従って、多状態またはＭＬＣメモリは、必然的に、より少なく分割されたゾーンを有するメモリのものと比べてより狭いエラーマージンで動作する。換言すれば、エラー率は、各セルに格納されるビットの数と共に増大する。一般的に、エラー率は、しきい値ウィンドウ内の分割されたゾーンの数と共に増大する。
【００４６】
フローティングゲート間結合（「ユーピン効果））
１つのメモリセルの電荷蓄積素子にプログラムされた電荷は、隣接するメモリセルの電界を乱す電界を生じさせる。第１の電界環境下でプログラム−ベリファイされ、後に、隣接するセルが爾後に異なる電荷でプログラムされたことに起因して異なる電界環境下で再び読み出されれば、読み出し精度は、フローティングゲート間結合あるいは「ユーピン効果」と称されるものによって影響されることがある。半導体メモリにおいて常に集積化が進むと、メモリセル間での蓄積された電荷に起因する電界の摂動（ユーピン効果）は、セル間隔が縮小するに連れてますます顕著となる。
【００４７】
ユーピン効果は、プログラム−ベリファイの時と隣接するセルがプログラムされた後の読み出しの時との間でのセルの電界環境における非対称性を最小にすることによって緩和され得る。この問題は、メモリアレイの１つの行に沿いビット線を横断する隣接セル（ＢＬ−ＢＬユーピン効果）ならびに１つの列に沿いワード線を横断する隣接セル（ＷＬ−ＷＬユーピン効果）に影響を及ぼす。
【００４８】
ＢＬ−ＢＬユーピン効果を低減する１つの方法は、プログラミングの各パス間で電荷の大きな変化を回避するマルチパスプログラミングを実行することである。
図９（１）〜（３）は、１つのワード線上の１つのページの各メモリセルに３ビットのデータをプログラムするための好ましい（フォギー−ファイン）マルチパスプログラミングを示す。３つのプログラミングパスのタイプ（下位、フォギー、およびファイン）がある。
図９（１）は、下位（または第１の）ページプログラミングパスを示す。これは下位ページデータだけの関数である。このプログラムパスからのデータはバイナリのように見えるけれども、データはメモリデザイン制約に起因して確実に読み返せることも読み返せないこともあり得る。図９（３）から分かるように、下位ページ読み出しのための正規の区分点は境界３１０である。下位パスの後にバイナリデータを読み出すために、代わりの読み出し境界３１０’が必要とされる。
図９（２）は、フォギーページプログラミングパスを示す。これは全３ページのデータの関数である。これは最後にはセルが重なり合うプログラムレベルを有する中間パスであるので、データは確実には読み返され得ない。
図９（３）は、ファインページプログラミングパスを示す。これも全３ページのデータの関数である。これはワード線の最終プログラミングパスである。ファインプログラム後、データは全３データページについて読み出し可能である。下位（「０」）論理ページは区分点３１０を有する。中央（「１」）論理ページは読み出し区分点３２０および３２２を有する。上位（「２」）論理ページは読み出し区分点３３０、３３２、３３４および３３６を有する。
【００４９】
この「フォギー−ファイン」マルチパスプログラミング方式によりプログラムされたデータは最終のファインプログラミングパスが完了した後に初めて読み出し可能になることが分かる。フォギーパスの後には、読み出し可能なデータはない。下位パスの後、データは、区分読み出ししきい値が正規境界３１０から代わりの境界３１０’に変更されたならば初めて読み出し可能である。メモリが代わりの下位ページ読み出し境界をサポートしなければ、下位ページデータも下位パス直後に読み出し可能ではない。
同様のマルチパスプログラミング手法が、米国特許第６，６５７，８９１号（特許文献１５）および米国特許第７，０４６，５４８号（特許文献１６）に開示されている。
【００５０】
ワード線間のユーピン効果
ＷＬ−ＷＬユーピン効果を低減する１つの方法は、メモリアレイ内のページを最適な順序でプログラムすることである。
摂動が隣接するワード線上のメモリセル間に生じるＷＬ−ＷＬユーピン効果は、好ましいプログラミング方式を用いてプログラミング中に緩和され得る。これは実際上、摂動を半分低減する。残りの半分も、読み出し中に好ましい「ルックアヘッド」読み出し方式を用いることによって訂正され得る。
【００５１】
好ましいプログラミング方式は、ワード線と関連付けられたページを最適のシーケンスでプログラムさせる。例えば、どの物理的ページも１ページのバイナリデータを保持するバイナリメモリの場合には、ページは、好ましくは、下から上への方向のような１つの一貫した方向に沿って順にプログラムされる。このやり方では、１つの特定のページがプログラムされる時に、その下側のページは既にプログラムされている。下側のページが現在のページに対してどんな摂動効果を及ぼすとしても、摂動効果は、現在のページが摂動を考慮してプログラム−ベリファイされるので、償われる。本質的に、ページをプログラムするシーケンスは、プログラムされている現在のページが、自分がプログラムされた後に自分の環境に最小の変化を見ることを可能にするべきである。このようにして、各々のプログラム済みページは自分の上の側のページによってのみ摂動を起こさせられ、このプログラムシーケンスによってＷＬ−ＷＬユーピン効果は実際上半減させられる。
メモリセルの各物理的ページが多状態で、結果としての複数の論理データページが別々のパスでプログラムされるメモリの場合には、シーケンスは余り簡単ではない。
【００５２】
図１０Ａは、２ビットメモリセル（Ｄ２）を有し、そのページが隣接ワード線上のメモリセル間のユーピン効果を最小にするように最適のシーケンスでプログラムされるメモリの例を示す。便宜上、表示法は、物理的ページＰ０、Ｐ１、Ｐ２・・・がそれぞれワード線ＷＬ０、ＷＬ１、ＷＬ２・・・上に存在するようになっている。２ビットメモリに関して、各物理的ページは、それぞれバイナリデータを有する２つの論理ページ（すなわち、下位ビット論理ページおよび上位ビット論理ページ）と関連付けられる。一般的に、論理ページはＬＰ（ＷＬ＃．論理ページ＃）により与えられる。例えば、Ｗ０上のＰ０の下位ビットページおよび上位ビットページはそれぞれＬＰ（０．０）およびＬＰ（０．１）と称され、ＷＬ２上の対応するものはＬＰ（２．０）およびＬＰ（２．１）と称される。
【００５３】
本質的に、論理ページのプログラミングは、プログラムされる現在のページが、自分がプログラムされた後に自分の環境に最小の変化を見ることとなるようにシーケンスｎに従う。この場合、再び下から上への１つの一貫した方向にインクリメンタルに移動することが、一方の側からの摂動を取り除くのに役立つ。さらに、各物理的ページが２つのプログラミングパスを受け得るので、プログラミングが物理的ページを上って移動してゆく時に、現在の上位ビットページは、自分に隣接する下位ビットページがプログラムされ終えた後に、それらの摂動効果が、その現在の上位ビットページをプログラムする時に償われるように、プログラムされるほうがよい。従って、プログラミングがＬＰ（０．０）から始まるとすれば、シーケンスは、それぞれＬＰ（０．０）、ＬＰ（１．０）、ＬＰ（０．１）、ＬＰ（２．０）、ＬＰ（１．１）、ＬＰ（３．０）、ＬＰ（２．１）・・・に向けられるプログラミングステップ順序Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５・・・Ｓｎにより指定されるようになる。
【００５４】
図１０Ｂは、図１０Ａの２ビットメモリのためのプログラミング順序の他の１つの図を示す。この図では、プログラミングステップの順序が、２つのプログラミングパス（下位パスおよび上位パス）の間を交互に横断する時に、この表においてワード線を渡って一連の斜めのジグザグ経路をたどることが分かる。
同様のマルチパスプログラミング手法が、その全体が本願明細書において参照により援用されている、米国特許第７，０４６，５４８号（特許文献１６）に開示されている。
【００５５】
図１１Ａは、各ワード線にセル当たりに３ビットのページがプログラムされ得る３ビットメモリセル（Ｄ３）を有するメモリの例を示す。例えば、ＷＬ５のようなワード線は、並行してプログラムされ読み出される３ビットセルのグループにリンクされる。図１０Ａの場合のように各ワード線が２つの論理ページでプログラムされる代わりに、Ｄ３メモリでは各ワード線を３つの論理ページでプログラムさせる。例えば、ＷＬ５は、ＬＰ（５．０）、ＬＰ（５．１）、ＬＰ（５．２）により与えられる３つの１ビット論理ページでプログラムされ得る。
【００５６】
図１１Ｂは、３ビットメモリセル（Ｄ３）を有し、そのページが隣接ワード線上のメモリセル間のユーピン効果を最小にするように最適のシーケンスでプログラムされるメモリの例を示す。プログラミングは、所定の非連続的順序で曲がりくねってワード線を通って進む。ビット線間のユーピン効果をさらに最小にするために、３つの論理ページは、図９に示されている好ましいフォギー−ファインマルチパスプログラミング手法によってＷＬ５にプログラムされ得る。３つの異なるタイプの３つのパスは、下位パス、フォギーパス、およびファインパスである。所与のワード線と関連付けられた論理ページが連続するステップでプログラムされないことが分かる。換言すれば、プログラミングパスの３つのタイプは同じワード線に連続的には適用されない。さらに、図９に関連して前に記載したように、フォギー−ファインマルチパスプログラミングは、フォギーパスおよびファインパスの両方のためにプログラムターゲットデータとして３ページの全てからのデータを必要とする。
【００５７】
図１１Ｃは、図１１Ｂの３ビットメモリのためのプログラミング順序の他の１つの図を示す。この図において、種々の論理ページがプログラムされるステップ順序は、３タイプのプログラミングパス（下位、フォギー、およびファイン）を通って循環する時に図の表のワード線を渡る一連の斜めのジグザグ経路によって容易に組み立てることができる。
【００５８】
Ｄ１およびＤ３の間のアドレスマッピング
より良い読み出し性能を目的として、Ｄ３において各ワード線上の論理ページの各トリプレットはホストデータアドレスの連続的順序に格納されるべきである。この場合、ホストは、Ｄ３から読み返す時に、１つのワード線に対して連続するアドレスを有する３つの論理ページの全てを目的として単一の読み出しを行うことができて、１つのワード線から単一の論理ページを、そして他の１つのワード線から他の１つを、非能率的に読み出すことを必要としない。
【００５９】
ＷＬ−ＷＬユーピン効果を最小にするための図１１Ｂおよび図１１Ｃに示されている不連続的なワード線プログラミング順序は、各プログラミングステップを実行する時に適切なプログラムターゲットデータが利用可能でなければならないということを意味する。ホストアドレスをＤ３内の各ワード線において整列させるために、Ｄ１にもステージされている適切なソースページは、各ステップを実行する前にプログラミング回路のプログラムラッチにロードされなければならない。
【００６０】
図１２Ａは、連続的なホストアドレスにおけるページの好ましい順序付けの例を示す。これは、通例、ホストが読み出しの時にページを要求する順序である。
【００６１】
図１２Ｂは、Ｄ３メモリにおけるページの好ましい格納順序を示す。例えば、ホストアドレスＨ０、Ｈ１、Ｈ２を有するページは下位論理ページ、中央論理ページ、上位論理ページとしてワード線ＷＬ０に格納され、ページＨ３、Ｈ４、Ｈ５は同様にＷＬ１に格納される等々である。
【００６２】
図１４に関連して後に記述するように、ソースページは、Ｄ３へのプログラミングのためにプログラムターゲットデータとして使用される前にメモリのバイナリ部分Ｄ１にステージされる。従って、Ｄ１におけるソースページの位置を、それがＤ３においてプログラムされた位置に関連付けるために物理対物理Ｄ１対Ｄ３マッピングが使用される。
【００６３】
好ましい実現形態では、Ｄ１内のページは、メモリセルのアレイの中での平均的な電荷密度を保証するためにスクランブルもされる。これは、不規則なフローティングゲート間結合を回避する。オンチップでＤ１ページをスクランブルすることの例は、ビット値をそのＤ１物理アドレスの関数として反転させるかまたは反転させないことである。スクランブルされたＤ１ページは、その後、Ｄ１対Ｄ３マッピングに従ってＤ３にプログラムされる。それらがＤ３から読み返される時に、それらのＤ１アドレスはＤ１対Ｄ３マッピングの逆によって得られることができる。Ｄ１アドレスが分かったならば、その逆マッピングにより、読み返されたページのスクランブル解除が可能となる。
【００６４】
エラー訂正符号（「ＥＣＣ」）によるエラー検出および訂正
フラッシュメモリはエラーを生じがちである。エラーのないデータを保証するために、エラー訂正符号（「ＥＣＣ」）がエラーを訂正するために実施される。
図１３Ａは、ＥＣＣフィールドを包含するデータページを概略的に示す。図４および図６Ａと関連して記載したように、物理的ページのメモリセルは、対応するページの並行して動作するセンスモジュールの力により並行してプログラムされ読み出される。各メモリセルが複数ビットのデータを記憶する時に、１つのワード線上の各物理的ページと関連付けられる複数のデータページが存在する。データページ７０’はユーザ部分７２’およびシステム部分７４’を含む。ユーザ部分７２’は、ユーザデータの格納のためのものである。システム部分７４’は、一般的にメモリシステムによってシステムデータの格納のために使用される。システムデータにはＥＣＣが含まれる。ＥＣＣは、データページのために計算される。通例、ＥＣＣは、コントローラ１０２内のＥＣＣプロセッサ６２によって計算される（図１を参照）。或る実施形態では、データページが大きい時に、データページは、自分自身のＥＣＣをそれぞれ有する複数のより小さな部分に分割され得る。
【００６５】
データがホストから受け取られると、データのページがコントローラ１０２にステージされ、データページのＥＣＣ７６’がＥＣＣプロセッサ６２によって計算される。その後、ＥＣＣを組み込んだデータページがメモリアレイ２００に書き込まれる。通例、データページが読み出される時に、データページはデータラッチ４３０にラッチされてＩ／Ｏ回路４４０からコントローラ１０２へシフトアウトされる。コントローラ１０２において、データページの既存のＥＣＣは、読み出されたデータに関して計算されたＥＣＣの第２のバージョンと比較される。ＥＣＣは、通例、データページ内のエラーを迅速に検出するためのエラー検出コード（「ＥＤＣ」）を含む。ＥＤＣが読み出されたデータページ内にエラーが存在することを示したならば、ＥＣＣは、その読み出されたデータページ内の誤ったビットを訂正するために呼び出される。ＥＣＣは、所定の最大数までのエラーを訂正するように設計される。実際には、メモリの寿命において任意の所与の時点で、ＥＣＣは、その所定の最大値より少ない所定数のエラーを訂正するための割り当て量を持つことができる。
ＥＣＣによるエラー管理が、その全体が本願明細書において参照により援用されている、本願と同じ日に出願されたDusijaらの「NON-VOLATILE MEMORY AND METHOD WITH POST-WRITE READ AND ADAPTIVE RE-WRITE TO MANAGE ERRORS」という米国特許出願公開第２０１１/ ００９９４６０号（特許文献１７）に開示されている。
【００６６】
図１３Ｂは、Ｄ３におけるページの可能なステータスを示す表である。前に記載したように、ＥＣＣは１つのページ中の所定数のエラーを訂正するように設計される。データのページのステータスは次のうちの１つであり得る。
ＣＥＣＣ−ＥＣＣにより訂正可能である。全３データページ中のその数のエラーが、ＥＣＣの能力のうちにあるので、訂正可能である。しかし、データの品質は、エラーが所定しきい値より上にある場合に限って良好である。
ＵＥＣＣ−ＥＣＣにより訂正することはできない。エラーの数は、ＥＣＣの能力を上回るか、あるいは依然としてＥＣＣによって訂正可能ではあるけれども所定のしきい値より上である。データは無効である。
良好なＤ３は、ワード線の全３データページがＥＣＣにより訂正可能で所定のしきい値より下であるエラーを有するということを意味する。データは有効である。
消去済みということは、どのデータページも、非消去済み状態であるセルを所定数より多く有しないということを意味する。
【００６７】
プログラムアボート後のメモリブロックにおける不定のデータ
以上の記述から、フォギー−ファインおよび非連続的ワード線プログラミング順序の組み合わせを含むマルチパスプログラミングを用いて部分的にプログラムされた消去ブロックは、どの時点においても数個のワード線の全３個未満の論理ページがプログラムされているという結果になることが分かる。フォギー−ファインプログラミングは、データが読み出し可能となる前に全ての論理ページがワード線にプログラムされることを必要とするので、１つのブロックをプログラムしている最中にプログラミングが（例えば、電源異常あるいは突然の中断により）アボートしたならば、それらの部分的にプログラムされたワード線は読み出し不能であり得る。
【００６８】
部分的にプログラムされたワード線は、そのワード線のための始めの２つのパスを終えた後にも、フォギー−ファインプログラミング方式における３つのパスのいずれかの間の書き込みアボートの後にも、読み返せば訂正不能なＥＣＣ（ＵＥＣＣ：Uncorrectable ECC ）エラーを伴っている。これは、中間のプログラムセグメントが正常に完了したのか、それとも突然の電力損失による書き込みアボートがあったのかを見分けるメカニズムがないので、プログラムセグメント間で可能なパワーサイクルで部分的ブロックプログラミングを行う問題に相当する。従って、従来、プログラムアボートが発生したならば１つのブロック全体のためのデータが新しいブロックに再書き込みされる。ブロック再書き込みは時間を消費する。プログラミングのリスタート時に、前に書き込まれたデータを新しいブロックに再書き込みすることを必要とせずに同じブロックでそれが最後に終わった箇所から続行できることが望ましい。
【００６９】
アトミックな書き込みシーケンスおよびプログラムアボート検出
本発明の１つの態様に従って、下位ビット記憶のために構成されたメモリの第１の部分から上位ビット記憶のために構成された第２の部分のメモリブロックにデータをコピーする方法が提供される。この方法は、各セグメント後のリスタートが新しいブロックで行われる必要がなく、最後のセグメントにおいてそのブロックでコピー操作が最後に停止した箇所から続行するようにコピー操作を複数の互いに素なプログラムセグメントに分解することを可能にする。
【００７０】
この方法は、各ワード線に対するマルチパスプログラミングの文脈において各ワード線へのマルチビットページのデータのプログラミングを完了させるために作用する。マルチパスプログラミングは、プログラムされたデータが一定の所定のパスの完了後に初めて有効になるようなプログラミングである。同時に、最適のプログラミング方式は、ブロック内の異なるワード線に対して各プログラミングステップを所定の非連続的順序で行う。これは、各ステップが最後のステップから異なるワード線に対して異なるタイプのプログラミングパスを実行するという結果をもたらす。プログラミングが現在のセグメント内のプログラミングステップのうちの１つでランダムに終了させられたならば、数個の隣接するステップからの読み返しデータが同じ識別パターンを共有することがあり得るので、その終了ステップのブロックは次のセグメントにおけるプログラムのリスタート時に発見されない可能性がある。
【００７１】
この方法は、各セグメントにおけるプログラミングシーケンスが指定されたタイプのパスで終了するようにされるので「アトミックな書き込みシーケンス」と称されるものを規定する。その指定されたタイプのパスは、リスタートが最後のプログラミングステップから続行できるように次のセグメントにおいて終了ステップを一義的に判定できるようにするものである。
【００７２】
図１４は、本発明を実施するのに適するメモリの例を示す。メモリセルのアレイ２００（図１を参照）は第１の部分４１０および第２の部分４２０に分割されている。第２の部分４２０は、各セルが複数ビットのデータを記憶する高密度記憶装置として構成されたメモリセルを有する。第１の部分４１０は、各セルが第２の部分のビット数より少ない数のビットを記憶する、より低い密度の記憶装置として構成されたメモリセルを有する。例えば、第１の部分内のメモリセルは、第２の部分における３ビットのデータと比べて１ビットのデータを記憶するように構成される。セル当たりに１ビットのデータを記憶する第１の部分はＤ１とも称され、セル当たりに３ビットのデータを記憶する第２の部分はＤ３とも称される。前の議論の見地から、第１の部分は第２の部分のエラーマージンと比べて遥かに広いエラーマージンで動作する。従って、第１の部分でのメモリ操作は、第２の部分でのエラーよりエラーが少ない。
【００７３】
一実施形態では、第１の部分４１０あるいはＤ１は、第１のセクション４１１および第２のセクション４１２にさらに分割される。
ステップ（１）において、ホスト書き込み中、入力データは始めに第１のセクション４１１にキャッシュされるか、あるいは第２のセクション４１２に直接書き込まれる。入力データが断片化されているならば、それは始めに第１のセクションにキャッシュされる。入力データが連続的データの相当なランであるならば、それは直接に第２のセクション４１２に１ページずつ書き込まれる。
ステップ（２）において、いずれにせよ、入力データは結局、書き込まれたページがブロックｍ．１、ｍ．２およびｍ．３のような仮想Ｄ１ブロックにステージされる第２のセクション４１２に収まる。各ブロックが論理アドレスのよく画定された１つのグループからのデータを包含する方式では、仮想ブロックは、物理的ブロックに対応しないかもしれないが、依然としてそのグループの論理アドレスは数個の物理的Ｄ１ブロックに分散させられる。
ステップ（３）において、データは１ページずつＤ１に書き込まれるので、バイナリページのトリプレットがＤ１内にある時に、バイナリページのトリプレットは、Ｄ１からＤ３への折り込みとも称されるものでＤ３内の３ビットセルを有する単一のページにコピーされ得る。Ｄ３ブロックｍは、仮想Ｄ１ブロックｍ．１、ｍ．２およびｍ．３のページ全体がＤ３ブロックｍに折り込まれた後に完成する。折り込み操作は、コントローラ１０２内のファームウェア６０により制御されるメモリによって実行される。操作は、好ましくは、ホストコマンドが動作している時に予備期間中にフォアグラウンドで行われる。
【００７４】
Ｄ１およびＤ３部分を有するように構成されたメモリは、その全体が本願明細書において参照により援用されている、本願と同じ日に出願されたGorobetsらによる「MAINTAINING UPDATES OF MULTI-LEVEL NON-VOLATILE MEMORY IN BINARY NON-VOLATILE MEMORY」という米国特許出願公開第２０１１／０１５３９１２号（特許文献１８）に開示されている。
各ホストコマンド内の予備期間は１つの折り込み操作を完了させるには充分でないかもしれないので、折り込み操作を複数のより小さなセグメントに分解するのが望ましく、その各セグメントは１つのホストコマンドの予備期間のうちに完了され得る。アトミックなプログラムシーケンスのフィーチャは、折り込みを複数のより小さなセグメントに分割することを可能にし、同時に、次のセグメントにおいて同じブロック内で最後のプログラミングステップからリスタートされ得る。
セル当たりに３ビットの１つのページを有するＤ３内の各ワード線をプログラムするために３パス（第１の、フォギー、ファイン）プログラミングが実行される時に、アトミックな書き込みシーケンスは、指定されたタイプのパスのための各プログラムセグメントのための１つのプログラミングステップで終了する。この指定されたタイプは、終了プログラミングステップが次のセグメントで識別可能となるように予め定められる。
【００７５】
図１５は、図１１ＢのＳ１０までのプログラミングステップを示す。特に、Ｓ７からＳ１０までのプログラミングステップは次のとおりである。
Ｓ７−ＷＬ３に対して下位パスプログラミングが実行される。
Ｓ８−ＷＬ２に対してフォギーパスプログラミングが実行される。
Ｓ９−ＷＬ１に対してファインパスプログラミングが実行される。
Ｓ１０−ＷＬ４に対して他の１つの下位パスプログラミングが実行される。
【００７６】
図１６Ａおよび図１６Ｂは、プログラミングステップＳ７〜Ｓ１０の種々の接合部での書き込みアボートの効果をリストしている。これは、３パスのフォギー−ファインプログラミングおよび非連続的ワード線順序のフィーチャが実現される時である。プログラミングステップＳ７からＳ９までは図１６Ａの表の第１の行でリストされている。プログラミングステップＳ１０は図１６Ｂの表の第１の行でリストされている。各ステップと一緒に、図１５に示されているように実行されるプログラミングパスがある。
各プログラミングステップ中、図１６Ａおよび図１６Ｂの表の第２の行（イベント）においてリストされているように、各タイプのパスの４つの場所（「スタート付近で」、「中央で」、「終わり付近で」、および「完了」）のいずれにおいてもインターラプトあるいは書き込みアボート（「ＷＡ」）が生じ得る。
【００７７】
前に記載したように、フォギー−ファイン、３パスプログラミングでは、データはファインパスが完了した後に初めてワード線から読み出され得る。図１６Ａで「下位、Ｓ７」の列に示されているように、ステップＳ７の下位パスのプログラミングが完了した時でも、ＷＬ３、ＷＬ２およびＷＬ１は全てのパス、少なくとも１つを欠いている。従って、次のセグメントでリスタート時にこれらのワード線からデータが読み返されれば、それらは全て、ＥＣＣによっては訂正され得ない（ＵＥＣＣ）（第１の３図を参照）ので、無効なデータをもたらす。３つのパスの全てを受ける唯一のワード線はＷＬ０であり、従ってそれは「良好なＤ３」により表示されているように良好なデータをもたらす。プログラミングステップＳ７はＷＬ５を未だ訪れていないので、それは依然として消去済みの状態である。この消去済みワード線から逆にスキャンすると、ワード線のグループについて消去済み、ＵＥＣＣ、ＵＥＣＣ、ＵＥＣＣ、良好なＤ３としてのＥＣＣシグニチャーあるいはパターン４４０が得られる。従って、Ｓ７での下位パスの完了後に書き込みアボートが発生したならば、ブロック内の消去済みワード線から１グループのワード線のデータを読み返すとＥＣＣシグニチャー４４０が検出され、データは無効であり得る。
【００７８】
同じ分析により、プログラミングステップＳ８（フォギーパス）における全ての書き込みアボートイベントについてのＥＣＣシグニチャーもＥＣＣシグニチャー４４０となり、データは無効である。
同じ分析により、ワード線ＷＬ１は、プログラミングステップＳ９が完了した後に（最後の列）初めて自分の３タイプのパスを得る。その場合、ＷＬ１は今度は「良好なＤ３」により示されるように有効なデータをもたらす。消去済みワード線から逆にスキャンすると、ワード線のグループについて消去済み、ＵＥＣＣ、ＵＥＣＣ、良好なＤ３としてのＥＣＣシグニチャーあるいはパターン４５０が得られる。従って、Ｓ９でのファインパスの完了後に書き込みアボートが発生したならば、ブロック内の消去済みワード線から１グループのワード線のデータを読み返すとＥＣＣシグニチャー４５０が検出される。良好なデータを有するワード線（例えば、ＷＬ１）は消去済みのＷＬ４から３ワード線離れ、ＷＬ１上のデータは有効である。
【００７９】
前の記述から、ブロック内の消去済みワード線とプログラム済みワード線との境界から１グループのワード線を逆にスキャンすると、そのグループについて２つの可能なＥＣＣシグニチャーが存在する。シグニチャー４４０は、データが無効であること、および下位パス、フォギーパス、あるいはファインパスのいずれかの部分の間にでも、書き込みアボートが発生した可能性があることを示す。しかし、有効データシグニチャー４５０は、前の書き込みアボートがファインパスの完了後に発生した場合にのみ現れる。
【００８０】
シグニチャー４５０には１対の曖昧さがある。１つは、書き込みアボートがＳ９においてファインパスの完了に近いところで発生したかもしれないということをも意味し得ることである。その場合、そのファインパスはほとんど終わっているけれども完全に終わってはおらず、生じたどんなエラーもＥＣＣによって訂正される。それ故、データは、より多くのＥＣＣビットを消費するという代償を払ってではあるが、有効である。好ましい実施形態では、この曖昧さは、読み出し区分点のより厳格なセット（より小さなしきい値）を用いることにより、かつ／またはエラービットの数が、ＥＣＣにより訂正可能であるとしても、所定のしきい値を超えているかどうかを監視することにより、解消され得る。
【００８１】
図１６Ｂは、プログラミングステップＳ１０のための図１６Ａの続きである。図１６Ｂは、書き込みアボートがファインパス後に次のステップで発生したかもしれないことを意味する可能性もあるという、シグニチャー４５０に伴う他の１つの曖昧さを示す。Ｓ１０ステップにおいて示されているように、書き込みアボートが次の下位パスのスタート付近で発生したならば同じシグニチャー４５０が現れる。これは、Ｓ１０が下位パスプログラミングを幾分続けたということを意味する。しかし、そのことは、Ｓ９が最後のプログラミングステップであると識別されたならば、次のリスタートはＳ１０で再び始まってその不完全な下位パスプログラミングを仕上げるべく続けられるので、重要ではない。
【００８２】
アトミックなプログラムシーケンスの１つの実施形態は、プログラムシーケンスをファインパスで終わらせる。前に記載したように、これは、次のプログラムシーケンスにおいて、リスタートの起点として正しいプログラミングステップが識別され得ることを保証する。前に記載したように、良好なデータを有する第１のワード線は、プログラム済みワード線と消去済みワード線との間の境界に関してのシグニチャーの位置により識別され得る。例えばこの場合には、第１の良好なＤ３はＷＬ１であると分かり、図１５の表から、最後のプログラミングステップがＳ９であったことが判定され得る。従って、次のプログラムセグメントにおいて、ブロックに対するプログラミングはＳ１０からスタートすることによって再開することができる。
アトミック書き込みシーケンスの他の１つの好ましい実施形態は、第１のパスで終わることである。これは、メモリが下位パスの直後に下位ページデータを読み出すために正規の読み出しの境界３１０からの代わりの境界３１０’（図９を参照）をサポートするならば、実際的である。
【００８３】
図１７Ａおよび図１７Ｂも、プログラミングステップＳ７〜Ｓ１０の種々の接合部での書き込みアボートの効果をリストしている。これは、３パスのフォギー−ファインプログラミングおよび非連続的ワード線順序のフィーチャが実施される時である。図１６Ａおよび図１６Ｂとの差異は、今度はメモリが正規読み出しの代わりの境界３１０’をサポートし、それによって下位パスの直後に下位ページデータを読み出すことを可能にすることである。
【００８４】
分析は、図１６Ａおよび図１６Ｂについての分析と類似する。この場合、消去済みワード線から逆にスキャンして、消去済み、良好なＬＰ、良好なＬＰ、ＵＥＣＣ、良好なＤ３としてのワード線の１つのグループについてのＥＣＣシグニチャーあるいはパターン４６０は下位パスの完了を識別するために使用され得る。「良好なＬＰ」は、その下位ページデータが有効であることを意味する。特に、シグニチャー４６０は、消去ワード線に続く２つのワード線が有効な下位ページデータをもたらすことを特徴とする。シグニチャー４６０は、下位パスが完了した後にあるいはそのすぐ前または後にプログラムアボートがあった場合にだけ発生する。これは、図１７ＡにおいてはＳ７、下位パスで「完了」の下で、およびＳ８、ファイン「スタート付近でアボートされる」で、図１７ＢにおいてはＳ１０、下位パス、「終わり付近でアボートされる」で、それぞれ見られる。
換言すれば、シグニチャー４６０を検出したということは、書き込みアボートが３つの可能な接合部のうちのいずれか１つで発生した可能性があるということを意味する。しかし、実際にはアボートは下位パスのまさに完了時にあったと見なされてもよい。それは、他の２つの曖昧さが実際上ほとんど重要でないからである。
【００８５】
理由は、下位パスの完了の直前の接合部について、下位ページデータ（ＬＰ）は完全にプログラムされているのに近いということである。生じ得るどんなエラーもＥＣＣにより訂正される。それ故、ＬＰデータは、少しだけ余分のＥＣＣビットを消費するという代償を払ってではあるが有効である。好ましい実施形態では、この曖昧さは、読み出し区分点のより厳格なセット（より小さなしきい値）を用いることにより、かつ／またはエラービットの数が、ＥＣＣにより訂正可能であるとしても、所定のしきい値を超えているかどうかを監視することにより、解消され得る。
【００８６】
下位パスの完了の直後の接合部については、既にフォギーパスのスタートに少し入っている。プログラムステップが後に下位パス後にリスタートされれば、次のフォギーパスでデータは完全にプログラムされるチャンスをもう一度得る。
プログラミングが最後のセグメントで停止された後、最後のセグメントで最後に行われたプログラミングステップが次のセグメントで識別され、プログラミングは、その識別された最後のプログラミングステップから続行されることによりリスタートされる。
【００８７】
図１８は、本発明のアトミックなプログラムシーケンスを示す流れ図である。
ステップ５００：複数のブロックを成すように編成されたメモリセルのアレイを有する不揮発性メモリを設け、各ブロックのメモリセルが一緒に消去可能であると共に複数のワード線によりアクセス可能であり、ワード線の一部分が複数のタイプのプログラミングパスのセットによりマルチビットデータでプログラム可能な１ページのセルをそれぞれ有する。
ステップ５１０：ブロック内のワード線のグループに１ステップずつプログラムすることによってブロックにデータをプログラムする。
ステップ５２０：プログラミングを複数のプログラムセグメントに分割する。各セグメントは、最後のプログラミングステップが次のセグメントで識別可能であるようにプログラミングステップをセットのうちの指定されたタイプのプログラミングパスを有する最後のプログラミングステップで終わらせる。
【００８８】
本発明の他の１つの態様に従って、プログラミングが最後に停止される前に行われた最後のプログラミングステップは、（１）ブロック内のプログラム済みワード線と消去済みワード線との間の境界を突き止めること、（２）それにアトミック書き込みを行った後に最後のプログラミングステップが停止したワード線を識別するために、所定のＥＣＣシグニチャーを有する１グループのワード線を求めて境界からプログラム済みワード線のほうへ逆向きにスキャンすることによって識別される。その識別されたワード線とアトミック書き込みシーケンスの指定された最終パスにより、リスタートが基づくべき最後のプログラミングステップが識別され得る。
【００８９】
図１９は、前のプログラムセグメントからの最後のプログラミングステップの発見を示す流れ図である。
ステップ６００：複数のブロックを成すように編成されたメモリセルのアレイを有する不揮発性メモリを設け、各ブロックのメモリセルは一緒に消去可能であると共に複数のワード線によりアクセス可能であり、ワード線の一部分が複数のタイプのプログラミングパスのセットによりマルチビットデータでプログラム可能な１ページのセルをそれぞれ有する。
ステップ６０２：１シリーズの互いに素なプログラムセグメントによりデータをブロックにプログラムする。
ステップ６１０：プログラミングパスの各々の間にプログラムされたデータのビットについてＥＣＣによるエラー検査を提供する。
ステップ６２０：現在のプログラムセグメントでブロック内のプログラム済みワード線と消去済みワード線との間の境界を識別する。境界は、好ましくは、バイナリーサーチによって突き止められる。好ましくは、上位ページが、消去済み状態の直ぐ上に下位しきい値３３０を有するので（図９を参照）、読み出される。
ステップ６３０：境界からの１グループのプログラム済みワード線の中から、終わった最後のプログラムセグメントの中の最後のプログラミングパスがプログラミングパスの指定されたタイプのものであるかどうかおよび最後のプログラミングパスによってどのワード線が処理されたかを示す所定のＥＣＣシグニチャーを検出する。スキャンされるべき各ワード線は「ＵＥＣＣ」であるかあるいは良好なデータを有するものとして検出される。最初の検出は、好ましくは、中央ページ読み出しにより行われる（理論的には上位ページ読み出しが最善であるけれども、後で記載するように、第１のパスだけでワード線上の上位ページを読み出す時にはＣＥＣＣの可能性がある）。
Ｄ３のための例では、図１６Ａおよび図１６Ｂに示されているようにアトミック書き込みシーケンスがファインパスで終わる時に、検出は２つのＥＣＣシグニチャー４４０および４５０を区別するだけでよい。違いは、ＥＣＣシグニチャー４４０（書き込みアボート）では消去済みから３番目のワード線が「ＵＥＣＣ」を示すのに対してＥＣＣシグニチャー４５０（ファインパスで終わる完全なアトミック書き込み）では３番目のワード線が３論理ページの全てについて良好なデータを示す（「良好なＤ３」）ことである。従って、この場合には迅速な検出は、単に境界に存する消去済みワード線を突き止め、そこから３番目のプログラム済みワード線へ進んで、読み出してそのＥＣＣが「ＵＥＣＣ」（書き込みアボート）であるのかそれとも「良好なＤ３」（完了したアトミック書き込み）であるのかを調べることである。
「良好なＤ３」の検出は、好ましくは、読み出ししきい値のより厳格なセットの下で読み出しを行うことによって実行される。読み出されたデータがＥＣＣで調べられる前に、ワード線の３つの（下位、中央および上位）ページの全てが調べられる。
ステップ６４０：プログラミングパスの指定されたタイプと、最後のプログラミングパスにより処理されたワード線とに基づいて最後のプログラムセグメントにおける最後のプログラミングステップを識別する。
【００９０】
本発明の前述した詳細な記述は、説明および記述の目的のために提示されている。網羅的であることや、発明を開示された形そのものに限定することは意図されていない。前の教示を考慮すれば多くの改変および変形例が可能である。記述された実施形態は、本発明の原理およびその実際的応用を最善に説明し、それにより他の当業者が本発明を、種々の実施形態で意図された特定の用途に適する種々の改変を用いて最善に利用できるようにするために選択された。本発明の範囲はここに添付されている特許請求の範囲により定義されるべく意図されている。
【図１】
2013514602.tif 000003
【図２】
2013514602.tif 000004
【図３】
2013514602.tif 000005
【図４】
2013514602.tif 000006
【図５Ａ】
2013514602.tif 000007
【図５Ｂ】
2013514602.tif 000008
【図６】
2013514602.tif 000009
【図７】
2013514602.tif 000010
【図８】
2013514602.tif 000011
【図９】
2013514602.tif 000012
【図１０Ａ】
2013514602.tif 000013
【図１０Ｂ】
2013514602.tif 000014
【図１１Ａ】
2013514602.tif 000015
【図１１Ｂ】
2013514602.tif 000016
【図１１Ｃ】
2013514602.tif 000017
【図１２Ａ】
2013514602.tif 000018
【図１２Ｂ】
2013514602.tif 000019
【図１３Ａ】
2013514602.tif 000020
【図１３Ｂ】
2013514602.tif 000021
【図１４】
2013514602.tif 000022
【図１５】
2013514602.tif 000023
【図１６Ａ】
2013514602.tif 000024
【図１６Ｂ】
2013514602.tif 000025
【図１７Ａ】
2013514602.tif 000026
【図１７Ｂ】
2013514602.tif 000027
【図１８】
2013514602.tif 000028
【図１９】
2013514602.tif 000029
【国際調査報告】
2013514602.tif 000030
2013514602.tif 000031