(57)【要約】  不揮発性記憶システムは、性能データに基づいて、不良になるブロック（または記憶装置の他の単位）を予測する。不良になると予測されるそれらのブロック内のユーザーデータは他のブロックに再プログラムされてもよく、不良になると予測されたブロックは以後使用されないよう除外されてもよい。【選択図】図１１
2013504836.tif 000002
【特許請求の範囲】
【請求項１】
危険状態にある不揮発性記憶素子を検出する方法であって
第１のデータを第１のセットの不揮発性記憶素子にプログラムするステップと、
前記プログラムを成功裏に終了した後に、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するステップと、
前記第１のセットの不揮発性記憶素子が不合格になりやすい場合に、前記第１のセットの不揮発性記憶素子とは異なる第２のセットの不揮発性記憶素子に前記第１のデータを再プログラムするステップ、
を備える方法。
【請求項２】
前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断する前記ステップが、
前記第１のセットの不揮発性記憶素子が不合格になりやすいかかどうかを判断するために前記第１のセットの不揮発性記憶素子に対して第１の試験を実施するステップと、
前記第１のセットの不揮発性記憶素子が前記第１の試験に不合格である場合に、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために前記第１のセットの不揮発性記憶素子に対して第２の試験を実施するステップと、
前記第１のセットの不揮発性記憶素子が前記第２の試験に不合格である場合に、前記第１のセットの不揮発性記憶素子は不合格になりやすいとの結論を下すステップ、
を備える請求項１に記載の方法。
【請求項３】
前記第１のセットの不揮発性記憶素子は、メモリシステムの特定ワード線に接続されており、
前記メモリシステムは、コントローラおよびメモリ回路を備え、
前記メモリ回路は、メモリアレイおよびサポート回路を備え、
前記メモリアレイは、不揮発性記憶素子のブロックを備え、
各ブロックは、複数のワード線を備え、
前記特定ワード線は、特定ブロック内にあり、
プログラムする前記ステップは、プログラム動作の複数回の反復を実施するステップと、前記第１のセットの不揮発性記憶素子に対して実施された前記プログラム動作の反復回数を示す特定プログラムループカウンタを前記メモリ回路内に維持するステップとを備え、
前記第１の試験を実施する前記ステップは、メモリ回路から前記特定プログラムループカウンタを読み出すステップと、前記特定ブロックの他のワード線に接続された不揮発性記憶素子に対する前記メモリ回路から他のプログラムループカウンタを読み出すステップと、読み出された前記特定プログラムループカウンタと他のプログラムループカウンタの平均値を計算するステップと、前記特定プログラムループカウンタが前記平均値の範囲内にあるかどうかを判断するステップと、前記特定プログラムループカウンタが前記平均値の範囲内にない場合に、前記第１のセットの不揮発性記憶素子が前記第１の試験に不合格であるとの結論を下すステップとを備える方法を前記コントローラに実施させる、
請求項２に記載の方法。
【請求項４】
プログラムする前記ステップは、プログラム動作の複数回の反復を実施するステップと、前記第１のセットの不揮発性記憶素子に対する特定プログラミングループカウンタを維持するステップとを備え、
前記第１の試験を実施する前記ステップは、前記特定メモリループカウンタを他のメモリループカウンタに基づくデータと比較するステップを備える、
請求項２に記載の方法。
【請求項５】
前記第１のセットの不揮発性記憶素子は、メモリシステムの特定ワード線に接続されており、
前記メモリシステムは、コントローラおよびメモリ回路を備え、
前記メモリ回路はメモリアレイおよびサポート回路を備え、
前記メモリアレイは特定ワード線を備える複数のワード線を備え、
前記第２の試験を実施する前記ステップは、閾値電圧の区間内に閾値電圧を有する前記第１のセットの不揮発性記憶素子の数を特定し、区間内に閾値電圧を有する前記第１のセットの不揮発性記憶素子の数が所定範囲外にある場合に、前記第１のセットの不揮発性記憶素子は前記第２の試験に不合格であると判断するステップをコントローラに実施させる、
請求項２〜４の何れか一項に記載の方法。
【請求項６】
前記区間は、第１の電圧より高い閾値電圧値を備える請求項５に記載の方法。
【請求項７】
前記区間は、第１の電圧より低い閾値電圧値を備える請求項５に記載の方法。
【請求項８】
前記区間は、第１の電圧と第２の電圧の間の閾値電圧値を備える請求項５に記載の方法。
【請求項９】
前記第２の試験を実施する前記ステップは、
前記第１のセットの不揮発性記憶素子を備える不揮発性記憶素子の母集団の閾値電圧分布を特定するステップと、
複数の最小点を識別するステップと、
前記最小点のうちの２つの間の前記母集団の不揮発性記憶素子の数を計算するステップであって、前記２つの最小点の間の前記母集団の不揮発性記憶素子の数が比較値よりも大きい場合に、前記第１のセットの不揮発性記憶素子は前記第２の試験に不合格になるステップ、
を備える請求項２〜４の何れか一項に記載の方法。
【請求項１０】
不揮発性記憶素子の母集団は、前記第１のセットの不揮発性記憶素子である請求項１に記載の方法。
【請求項１１】
前記第２の試験を実施するステップは、
前記第１のセットの不揮発性記憶素子に記憶された前記第１のデータを読み出すステップと、
読み出された前記第１のデータを元のデータと比較するステップと、
読み出された第１のデータと前記元のデータとの差の量が基準数よりも小さいかどうかを判断するステップであって、読み出された第１のデータと前記元のデータとの差の量が前記基準数以上である場合に、前記第１のセットの不揮発性記憶素子は前記第２の試験に不合格になるステップ、
を備える請求項２〜４の何れか一項に記載の方法。
【請求項１２】
前記第１の不揮発性記憶素子が不合格になりやすい場合に、前記第１の不揮発性記憶素子を不良としてマークするステップと、
不良としてマークされている不揮発性記憶素子のユニットの数を特定するステップであって、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断する前記ステップは、前記第１のセットの不揮発性記憶素子に対する試験を実施するステップを備え、
不良としてマークされている不揮発性記憶素子のユニットの数に基づいて前記試験を調整するステップ、
をさらに備える請求項１〜１１の何れか一項に記載の方法。
【請求項１３】
前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するステップは、
前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかどうかを判断するために前記第１のセットの不揮発性記憶素子に対して第１の試験を実施するステップと、
前記第１のセットの不揮発性記憶素子が第１の状態に起因して前記第１の試験に不合格である場合に、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために前記第１のセットの不揮発性記憶素子に対して第２の試験を実施するステップと、
前記第１のセットの不揮発性記憶素子が前記第２の試験に不合格である場合に、前記第１のセットの不揮発性記憶素子は不合格になりやすいとの結論を下すステップと、
前記第１のセットの不揮発性記憶素子が第２の状態に起因して前記第１の試験に不合格である場合に、前記第１のセットの不揮発性記憶素子は不合格になりやすいとの結論を下すステップ、
を備える請求項１に記載の方法。
【請求項１４】
複数の不揮発性記憶素子を備えるメモリ回路と、
メモリ回路と通信するコントローラ、
を備え、
前記コントローラは、第１のセットの不揮発性記憶素子の記憶状態を変更し、
前記記憶状態の変更後に、前記コントローラは、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために前記第１のセットの不揮発性記憶素子に対して第１の試験を実施し、
前記第１のセットの不揮発性記憶素子が第１の状態に起因して前記第１の試験に不合格である場合に、前記コントローラは、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために前記第１のセットの不揮発性記憶素子に対して第２の試験を実施し、
前記第１のセットの不揮発性記憶素子が前記第２の試験に不合格である場合に、前記コントローラは、前記第１のセットの不揮発性記憶素子を不良としてマークする、
不揮発性記憶装置。
【請求項１５】
前記第１のセットの不揮発性記憶素子が前記第１の状態とは異なる第２の状態に起因して前記第１の試験に不合格である場合に、前記コントローラは、前記第１のセットの不揮発性記憶素子を不良としてマークする請求項１４に記載の不揮発性記憶装置。
【請求項１６】
記憶条件の前記変更が、前記メモリ回路に、メモリ動作の複数回の反復を実施させ、前記第１のセットの不揮発性記憶素子に対する前記メモリ動作の反復回数を示す前記第１のセットの不揮発性記憶素子に対する特定ループカウンタを維持させ、
前記第１の試験の前記実施するステップが、前記コントローラに、前記特定ループカウンタを前記第１のセット以外の不揮発性記憶素子に対するループカウンタに基づくデータと比較させ、
前記第１の状態は、前記特定ループカウンタとある値よりも大きい前記第１のセット以外の不揮発性記憶素子に対するループカウンタに基づくデータとの間の第１の相違である、
請求項１４または１５に記載の不揮発性記憶装置。
【請求項１７】
前記コントローラは、不良としてマークされている不揮発性記憶素子のユニットの数を特定し、不良としてマークされている不揮発性記憶素子のユニットの前記数に基づいて前記第１の試験を調整する請求項１４〜１６の何れか一項に記載の不揮発性記憶装置。
【請求項１８】
複数の不揮発性記憶素子を備えるメモリ回路と、
前記メモリ回路と通信するコントローラ、
を備え、
前記コントローラは、第１のデータを第１のセットの不揮発性記憶素子にプログラムし、
前記プログラムを成功裏に終了した後に、前記コントローラは、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断し、
前記第１のセットの不揮発性記憶素子が不合格になりやい場合に、前記コントローラは、前記第１のデータを前記第１のセットの不揮発性記憶素子とは異なる前記第２のセットの不揮発性記憶素子に再プログラムする、
不揮発性記憶装置。
【請求項１９】
前記コントローラは、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために前記第１のセットの不揮発性記憶素子に対して第１の試験を実施することによって前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断し、
前記第１のセットの不揮発性記憶素子が前記第１の試験に不合格である場合に、前記コントローラは、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために前記第１のセットの不揮発性記憶素子に対して第２の試験を実施し、
前記第１のセットの不揮発性記憶素子が前記第２の試験に不合格である場合に、前記コントローラは、前記第１のセットの不揮発性記憶素子は不合格になりやすいとの結論を下す請求項１８に記載の不揮発性記憶装置。
【請求項２０】
前記コントローラは、前記メモリ回路によって実施されるプログラム動作を複数回反復することによって前記第１のデータをプログラムし、
前記メモリ回路は、前記第１のセットの不揮発性記憶素子に対する前記プログラム動作の反復回数を示す前記第１のセットの不揮発性記憶素子に対する特定ループカウンタを維持し、
前記コントローラは、前記第１のセットの不揮発性記憶素子に対する前記プログラムループカウンタを他の不揮発性記憶素子に対する他のプログラムループカウンタに基づくデータと比較することによって前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断する、
請求項１８または１９に記載の不揮発性記憶装置。
【請求項２１】
前記メモリ回路は、複数のワード線を備え、
前記第１のセットの不揮発性記憶素子は、前記複数の特定ワード線に接続され、
前記コントローラは、閾値電圧の区間内に閾値電圧を有する前記第１のセットの不揮発性記憶素子の数を特定することによって前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断し、
区間内に閾値電圧を有する前記第１のセットの不揮発性記憶素子の数が予想される範囲外であれば、前記第１のセットの不揮発性記憶素子は不合格になりやすい、
請求項１８〜２０の何れか一項に記載の不揮発性記憶装置。
【請求項２２】
第１のデータを第１のセットの不揮発性記憶素子にプログラムする手段と、
プログラムを成功裏に終了した後に、前記第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断する手段と、
前記第１のセットの不揮発性記憶素子が不合格になりやすい場合に、前記第１のデータを前記第１のセットの不揮発性記憶素子とは異なる第２のセットの不揮発性記憶素子に再プログラムする手段、
を備える不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００９年９月１１日に出願された米国仮特許出願６１／２４１，７５０号に基づく優先権を主張するものである。
本発明は、不揮発性記憶装置に関する。
【背景技術】
【０００２】
半導体メモリデバイスは、様々な電子デバイスで普及している。例えば、不揮発性半導体メモリは、携帯電話、ディジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピューティングデバイス、非モバイルコンピューティングデバイスなどのデバイスにおいて使用される。電気的消去可能なＲＯＭ（ＥＥＰＲＯＭ）およびフラッシュメモリは、最も普及している不揮発性半導体メモリの１つである。
【０００３】
ＥＥＰＲＯＭおよびフラッシュメモリは、いずれも、半導体基板のチャネル領域の上方に配置されており、そのチャネル領域から絶縁されているフローティングゲートを利用するものである。フローティングゲートは、ソース領域とドレイン領域の間に配置されている。制御ゲートが、フローティングゲートから絶縁されている状態で、フローティングゲート上に設けられている。トランジスタの閾値電圧は、フローティングゲートに保持される電荷量によって制御される。すなわち、トランジスタがターンオンしてそのソースとドレインの間の導通が可能になる前に制御ゲートに印加されなければならない電圧の最小量は、フローティングゲートの電荷レベルによって制御される。
【０００４】
ＥＥＰＲＯＭまたはフラッシュメモリデバイスをプログラミングするときには、典型的には、プログラム電圧が制御ゲートに印加され、ビット線が接地される。チャネルから電子がフローティングゲートに注入される。電子がフローティングゲートに蓄積すると、フローティングゲートは負に充電された状態になり、メモリセルの閾値電圧が上昇して、メモリセルがプログラムされた状態となる。プログラミングに関するさらなる情報は、「Ｓｏｕｒｃｅ  Ｓｉｄｅ  Ｓｅｌｆ  Ｂｏｏｓｔｉｎｇ  Ｔｅｃｈｎｉｑｕｅ  Ｆｏｒ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ」と題する米国特許第６，８５９，３９７号と「Ｄｅｔｅｃｔｉｎｇ  Ｏｖｅｒ  Ｐｒｏｇｒａｍｍｅｄ  Ｍｅｍｏｒｙ」と題する米国特許第６，９１７，５４２号とに見られ、これらはいずれもそれらの全体が参照によって本明細書に組み込まれる。
【０００５】
一部のＥＥＰＲＯＭおよびフラッシュメモリデバイスは、２つの範囲の電荷を記憶するために使用されるフローティングゲートを有しており、したがって、メモリセルは２つの状態、データ「１」およびデータ「０」に対応する消去状態およびプログラム状態の間でプログラム／消去されうる。このようなデバイスは、バイナリデバイスまたは単一レベルメモリセルを有すると称される。
【０００６】
マルチステート（またはマルチレベル）フラッシュメモリセルは、複数の個別の許容閾値電圧範囲を識別することによって実現される。個別の各閾値電圧範囲は、１セットのデータビットに対する所定値に対応する。
【０００７】
不揮発性メモリは、他の集積回路と同様に、製造欠陥の影響を受けやすい。製造欠陥には集積回路が適切に機能しないほど深刻なものもある。これらの欠陥は、通常は、製造段階における試験によって発見される。
【０００８】
他の欠陥は、深刻でないか、あるいは集積回路がある期間使用されるまで現われない。一部のメモリメーカーは、製造工程の一環として不良ユニットを識別しようと試みている。たとえば、フラッシュメモリのいくつかの試験方法では、ある作動期間後に故障を引き起こす可能性のある欠陥を有するメモリブロックの故障を加速するためにメモリの各ブロックにストレス（温度、電圧、サイクリング）を加えるステップを含む。場合によっては、メモリはストレス後またはストレス中にプログラムされ、プログラムされたデータはリードバックされ、元のデータがプログラムされてリードバックされたデータと比較される。ある所定閾値よりも差が大きければ、ブロックは不良として表示され使用されることはない。全デバイス容量が製品仕様の範囲内に入るように、１セットの予備ブロックが不良ブロックに対応するために存在する。第２の状況は、プログラミング動作または消去動作が失敗するときに不良ブロックを識別するステップを含む。失敗したブロックは不良として表示されて再び使用されることはない。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述の試験ソリューションは、何れも、プログラミング処理が成功となる状況を検出することはできないが、メモリデバイスは後に劣化して（アクセスされなくても、あるいは読み出しのためにアクセスされただけで）その内容またはその内容を読み出す機能を次第に失う。
【課題を解決するための手段】
【００１０】
本明細書では、不揮発性記憶システムにおいて危険状態データを識別しそのデータをより安全な場所に再プログラムする技術を説明する。一実施形態では、システムは性能データに基づいて不良になるブロック（または他の記憶単位）を予測することができる。不良になると予測されるこれらのブロック内のデータは他のブロックにプログラムされてもよく、不良になると予測されるブロックはさらに使用されないように除去されてもよい。
【図面の簡単な説明】
【００１１】
【図１】ＮＡＮＤストリングの平面図である。
【００１２】
【図２】ＮＡＮＤストリングの等価回路図である。
【００１３】
【図３】不揮発性メモリシステムのブロック図である。
【００１４】
【図４】メモリアレイの一実施形態を描くブロック図である。
【００１５】
【図５】検出ブロックの一実施形態を描くブロック図である。
【００１６】
【図６】コントローラの一実施形態のブロック図である。
【００１７】
【図７】メモリセルの閾値電圧分布を示す。
【００１８】
【図８】図８Ａ〜図８Ｆは、プログラミング処理中のメモリセルの閾値電圧分布を示す。
【００１９】
【図９】図９Ａと図９Ｂは、消去処理中のメモリセルの閾値電圧分布を示す。
【００２０】
【図１０】不揮発性メモリを動作させる処理の一実施形態を記述するフローチャートである。
【００２１】
【図１１】データを不揮発性メモリにプログラムする処理の一実施形態を記述するフローチャートである。
【００２２】
【図１２】不揮発性メモリ素子をプログラムする処理の一実施形態を記述するフローチャートである。
【００２３】
【図１３】１セットのワード線をプログラムする順序の一例を説明する図である。
【００２４】
【図１４】不揮発性メモリ素子をプログラムするときに実施される処理の一実施形態を記述するフローチャートである。
【００２５】
【図１５】読出し比較レベルおよび検証比較レベルとともにメモリセルの閾値電圧分布を示す。
【００２６】
【図１６】読出し処理を説明するタイミング図である。
【００２７】
【図１７】不揮発性メモリ素子を消去する処理の一実施形態を記述するフローチャートである。
【００２８】
【図１８】ブロックが不合格になりやすいかどうかをチェックする処理の一実施形態を記述するフローチャートである。
【００２９】
【図１９】ブロックが不合格になりやすいかどうかをチェックするときに試験を実施する処理の一実施形態を記述するフローチャートである。
【００３０】
【図２０】ブロックが不合格になりやすいかどうかをチェックするときに試験を実施する処理の一実施形態を記述するフローチャートである。
【００３１】
【図２１】ブロックが不合格になりやすいかどうかをチェックするときに試験を実施する処理の一実施形態を記述するフローチャートである。
【００３２】
【図２２】ブロックが不合格になりやすいかどうかをチェックするときに試験を実施する処理の一実施形態を記述するフローチャートである。
【００３３】
【図２３】ブロックが不合格になりやすいかどうかをチェックするときに試験を実施する処理の一実施形態を記述するフローチャートである。
【００３４】
【図２４】ブロックが不合格になりやすいかどうかをチェックするときに試験を実施する処理の一実施形態を記述するフローチャートである。
【００３５】
【図２５】ブロックが不合格になりやすいかどうかをチェックするときに試験を実施する処理の一実施形態を記述するフローチャートである。
【００３６】
【図２６】ブロックが不合格になりやすいかどうかをチェックするときに試験を実施する処理の一実施形態を記述するフローチャートである。
【発明を実施するための形態】
【００３７】
本明細書に記述する技術を実施しうる不揮発性記憶システムの一例は、ＮＡＮＤフラッシュメモリであるが、不揮発性記憶装置に関する他のタイプも使用されてよい。ＮＡＮＤフラッシュメモリは、２つの選択ゲート間に挟まれた複数の直列に配置されたトランジスタを含む。直列のトランジスタおよび選択ゲートは、ＮＡＮＤストリングと呼ばれる。図１は１つのＮＡＮＤストリングを示す平面図である。図２はＮＡＮＤストリングの等価回路である。図１および２に示すＮＡＮＤストリングは、第１の（ドレイン側）選択ゲート１２０と第２の（ソース側）選択ゲート１２２で挟まれた直列の４個のトランジスタ１００、１０２、１０４および１０６を有している。選択ゲート１２０は、ビット線コンタクト１２６を介してＮＡＮＤストリングをビット線に接続する。選択ゲート１２２は、ＮＡＮＤストリングをソース線１２８に接続する。選択ゲート１２０は、適切な電圧を選択線ＳＧＤに印加することによって制御される。選択ゲート１２２は、適切な電圧を選択線ＳＧＳに印加することによって制御される。トランジスタ１００、１０２、１０４および１０６の各々は、制御ゲートおよびフローティングゲートを有する。例えば、トランジスタ１００は、制御ゲート１００ＣＧおよびフローティングゲート１００ＦＧを有する。トランジスタ１０２は、制御ゲート１０２ＣＧおよびフローティングゲート１０２ＦＧを有する。トランジスタ１０４は、制御ゲート１０４ＣＧおよびフローティングゲート１０４ＦＧを有する。トランジスタ１０６は、制御ゲート１０６ＣＧおよびフローティングゲート１０６ＦＧを有する。制御ゲート１００ＣＧはワード線ＷＬ３に接続されており、制御ゲート１０２ＣＧはワード線ＷＬ２に接続されており、制御ゲート１０４ＣＧはワード線ＷＬ１に接続されており、制御ゲート１０６ＣＧはワード線ＷＬ０に接続されている。
【００３８】
なお、図１および２はＮＡＮＤストリング内の４つのメモリセルを示すが、４つのメモリセルの使用は例として提供されているに過ぎない。ＮＡＮＤストリングは、４つ以下のメモリセル、あるいは４つ以上のメモリセルを有していてもよい。例えば、一部のＮＡＮＤストリングは、８個のメモリセル、１６個のメモリセル、３２個のメモリセル、６４個のメモリセル、１２８個のメモリセルなどを含むことがある。本明細書における説明は、特定数のメモリセルを有するＮＡＮＤストリングに限定されない。一実施形態では、６６個のメモリセルを有するＮＡＮＤストリングが使用され、６４個のメモリセルはデータの記憶に使用され、２つのメモリセルはデータを記憶しないのでダミーメモリセルと呼ばれる。
【００３９】
ＮＡＮＤ構造を用いるフラッシュメモリシステムの典型的なアーキテクチャは、複数のＮＡＮＤストリングを含む。各ＮＡＮＤストリングは、選択線ＳＧＳによって制御されるソース選択ゲートによって共通ソース線に接続されており、選択線ＳＧＤによって制御されるドレイン選択ゲートによって関連するビット線に接続されている。各ビット線と、ビット線コンタクトを介してそのビット線に接続される各ＮＡＮＤストリングは、メモリセルのアレイの列を有する。ビット線は複数のＮＡＮＤストリングと共有されている。典型的には、ビット線は、ＮＡＮＤストリングの上部をワード線に垂直な方向に伸びており、センスアンプに接続されている。ＮＡＮＤタイプのフラッシュメモリおよびそれらの動作の関連例は、米国特許第５，５７０，３１５号、米国特許第５，７７４，３９７号、米国特許第６，０４６，９３５号、米国特許第６，４５６，５２８号、および米国特許公開第ＵＳ２００３／０００２３４８号の米国特許／特許出願において提供され、これらのすべてが参照によって本明細書に組み込まれる。
【００４０】
ＮＡＮＤフラッシュメモリに加えて、フラッシュメモリでない不揮発性記憶装置だけでなく、他のタイプのフラッシュメモリ（たとえば、ＮＯＲ）を含む他のタイプの不揮発性記憶デバイスも採用されうる。例えば、不揮発性記憶装置は、電荷を保持する誘電体層を使用するメモリセルからも製造される。前述の導電性フローティングゲート素子の代わりに、誘電体層が使用される。誘電体記憶素子を利用するこのようなメモリデバイスは、Ｅｉｔａｎら著、「ＮＲＯＭ：Ａ  Ｎｏｖｅｌ  Ｌｏｃａｌｉｚｅｄ  Ｔｒａｐｐｉｎｇ，２−Ｂｉｔ  Ｎｏｎｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｃｅｌｌ」ＩＥＥＥ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅ  Ｌｅｔｔｅｒｓ、ｖｏｌ．２１、ｎｏ．１１、Ｎｏｖｅｍｂｅｒ  ２０００、ｐｐ．５４３−５４５に記載されている。ＯＮＯ誘電体層が、ソース拡散とドレイン拡散の間のチャネルにわたって延びている。一方のデータビットの電荷はドレインに隣接する誘電体層内に局在し、他方のデータビットの電荷はソースに隣接する誘電体層内に局在する。米国特許第５，７６８，１９２号および米国特許第６，０１１，７２５号は、２つの二酸化ケイ素層に挟まれた捕捉誘電体を有する不揮発性メモリセルを開示している。マルチ状態データ記憶装置は、誘電体内で空間的に分離された電荷蓄積領域の２進状態を別々に読み出すことによって実現される。また、ＭＯＮＯＳまたはＴＡＮＯＳタイプの構造またはナノ結晶に基づく不揮発性記憶装置が使用される場合もある。他のタイプの不揮発性記憶装置を使用してもよい。
【００４１】
図３は、メモリセルのページ、ワード線、またはその他の単位（たとえば、ＮＡＮＤマルチステートフラッシュメモリ）を並列に読み出してプログラムする読出し／書込み回路を有するメモリデバイス２１０を示す。メモリデバイス２１０は、１つまたは複数のメモリダイまたはチップ２１２を含んでいてもよい。メモリダイ／チップ２１２は、メモリセル２００、制御回路２２０、ならびに読出し／書込み回路２３０Ａおよび２３０Ｂの１つまたは複数のアレイ（２次元または３次元）を含む。一実施形態において、様々な周辺回路によるメモリアレイ２００へのアクセスはアレイの反対側で対称的に実行され、したがって、各側でのアクセス線および回路の密度は半分に減らされている。読出し／書込み回路２３０Ａおよび２３０Ｂは、メモリセルのページを並列に読み出しあるいはプログラムすることを許容する複数の検出ブロック３００を含む。メモリアレイ２００は、行デコーダ２４０Ａ及び２４０Ｂを介してワード線によって、並びに、列デコーダ２４２Ａ及び２４２Ｂを介してビット線によってアドレス指定可能である。ワード線およびビット線は、制御線の例である。  典型的な実施形態では、コントローラ２４４は、１つまたは複数のメモリダイ／チップ２１２と同じメモリデバイス２１０（たとえば、リムーバブル記憶カードまたはパッケージ）に含まれる。コマンドおよびデータは、線２３２を介してホストとコントローラ２４４の間で、また、線２３４を介してコントローラと１つまたは複数のメモリダイ２１２の間で転送される。
【００４２】
一実施形態では、メモリチップ２１２はメモリアレイ２００を１つだけ含む。他の実施形態では、メモリチップ２１２は複数のメモリアレイ２００を含む。複数のメモリアレイを使用する一部の実施例では、各メモリアレイは、独自の１セットの周辺回路（たとえば、デコーダ、ドライバーなど）を有する平面として機能する。一例では、メモリ動作が両アレイで同時に実施されるように、各アレイの周囲に関連周辺回路を有する同じメモリチップ２１２に隣り合った２つの平面（２つのアレイ）がある。すなわち、各メモリアレイは、両側に行デコーダを有し、上下に列デコーダを有し、上下に読出し／書込み回路を有することになる。
【００４３】
制御回路２２０は、読出し／書込み回路２３０Ａおよび２３０Ｂと連携してメモリアレイ２００でメモリ動作を実行する。制御回路２２０は、状態マシン２２２、オンチップアドレスデコーダ２２４、および電力制御モジュール２２６を有する。状態マシン２２２は、メモリ動作のチップレベル制御を提供する。オンチップアドレスデコーダ２２４は、ホストまたはメモリコントローラによって使用されるハードウェアアドレスからデコーダ２４０Ａ、２４０Ｂ、２４２Ａ、および２４２Ｂによって使用されるハードウェアアドレスまでのアドレスインターフェースを提供する。電力制御モジュール２２６は、メモリ動作中にワード線およびビット線に供給される電力および電圧を制御する。一実施形態において、電力制御モジュール２２６は、供給電圧よりも大きい電圧を生成することができる１つまたは複数のチャージポンプを含む。制御回路２２０は、列デコーダ２４２Ａおよび２４２Ｂだけでなく行デコーダ２４０Ａおよび２４０Ｂにアドレス線ＡＤＤＲを提供する。列デコーダ２４２Ａおよび２４２Ｂは、データＩ／Ｏと表示された信号線を介してコントローラ２４４にデータを提供する。
【００４４】
一実施形態において、制御回路２２０、電力制御回路２２６、デコーダ回路２２４、状態マシン回路２２２、デコーダ回路２４２Ａ、デコーダ回路２４２Ｂ、デコーダ回路２４０Ａ、デコーダ回路２４０Ｂ、読出し／書込み回路２３０Ａ、読出し／書込み回路２３０Ｂ、および／または、コントローラ２４４の１つまたは任意の組合せは、１つまたは複数の管理回路と呼ばれうる。１つまたは複数の管理回路は、本明細書に記載される処理を実行する。
【００４５】
図４は、メモリアレイ２００の例示的な構成を示す。一実施形態においては、メモリセルのアレイは、メモリセルの多数のブロックに区分される。フラッシュメモリシステムでは一般的であるが、ブロックは消去の単位である。すなわち、各ブロックは、同時に消去される最小数のメモリセルを含む。他の消去単位も採用してもよい。
【００４６】
ブロックは、ビット線（たとえば、ビット線ＢＬ０〜ＢＬ６９，６２３）およびワード線（ＷＬ０、ＷＬ１、ＷＬ２、ＷＬ３）を介してアクセスされる１セットのＮＡＮＤストリングを含む。図４は、直列接続されることでＮＡＮＤストリングを構成している４つのメモリセルを示している。各ＮＡＮＤストリングに４つのセルが含まれることが示されているが、４つよりも多いセルまたは少ないセルを使用してもよい（たとえば、１６、３２、６４、１２８または別の数のメモリセルがＮＡＮＤストリング上にあってもよい）。ＮＡＮＤストリングの１つの端子は（選択ゲートドレイン線ＳＧＤに接続された）ドレイン選択ゲートを介して対応するビット線に接続されており、別の端子は（選択ゲートソース線ＳＧＳに接続された）ソース選択ゲートを介してソース線に接続されている。
【００４７】
各ブロックは、一般的に、多数のページに区分されている。一実施形態において、ページがプログラミングの単位である。他のプログラミング単位を採用してもよい。１または複数ページのデータは、一般的に、メモリセルの１つの行に記憶される。例えば、１または複数ページのデータは、共通ワード線に接続されたメモリセルに記憶されてもよい。ページは、１つまたは複数のセクターを記憶することができる。セクターは、ユーザーデータおよびオーバーヘッドデータ（システムデータとも呼ばれる）を含む。オーバーヘッドデータは、典型的に、セクターのユーザーデータから計算されたヘッダー情報およびエラー補正コード（ＥＣＣ）冗長度を含む。コントローラ２４４（または他の構成要素）は、データがアレイにプログラムされているときにＥＣＣバイトを計算し、さらにＥＣＣバイトを使用してデータがアレイから読み出されているときにユーザーデータで読み出されたエラーを検出および／または補正する。あるいは、ＥＣＣおよび／または他のオーバーヘッドデータは、これらが関連するユーザーデータと異なるページ、または、異なるブロックに記憶される。ユーザーデータのセクターは、例えば５１２バイトであり、磁気ディスクドライブのセクターのサイズに対応する。また、種々のサイズのブロック、ページ、およびセクターを採用することができる。さらに、ブロックは６９６２４本、またはこれより多い、またはこれより少ないビット線を有しうる。
【００４８】
図５は、検出モジュール４８０と呼ばれるコア部と、共通部４９０とに仕切られた個々の検出ブロック３００のブロック図である。一実施形態において、各ビット線に対する個別の検出モジュール４８０と、１セットの複数の検出モジュール４８０に対する１つの共通部４９０とがある。一例においては、検出ブロックは１つの共通部４９０と８つの検出モジュール４８０を含む。グループ内の検出モジュールの各々は、データバス４７２を介して関連する共通部と通信する。一例が米国特許出願公開第２００６／０１４０００７号に開示されており、その全体が参照によって本明細書に組み込まれる。
【００４９】
検出モジュール４８０は、接続されたビット線の伝導電流が所定のレベルより高いか低いかを判断するセンス回路４７０を有する。一部の実施形態では、センス回路４７０は、一般にセンスアンプと呼ばれる回路を含む。また、検出モジュール４８０は、接続されたビット線上の電圧状態を設定するために使用されるビット線ラッチ４８２を含む。たとえば、ビット線ラッチ４８２にラッチされた所定の状態によって、メモリセルをプログラミングからロックアウトするために、接続されたビット線が、プログラム抑止を指定する状態（たとえば、Ｖｄｄ）にプルされる。
【００５０】
共通部４９０は、プロセッサ４９２、１セットのデータラッチ４９４、及び、１セットのデータラッチ４９４とデータバス４２０の間に接続されているＩ／Ｏインターフェース４９６を備えている。プロセッサ４９２は計算を実行する。例えば、その機能の１つは、検出されたメモリセルに記憶されるデータを特定し、特定したデータを１セットのデータラッチに記憶することである。１セットのデータラッチ４９４は、読出し動作中にプロセッサ４９２によって特定されたデータビットを記憶するために使用される。また、１セットのデータラッチ４９４は、プログラム動作中にデータバス４２０からインポートされるデータビットを記憶するために使用される。インポートされたデータビットは、メモリにプログラムすることが意図された書込みデータを表わす。Ｉ／Ｏインターフェース４９６は、データラッチ４９４とデータバス４２０の間のインターフェースを提供する。
【００５１】
読出し中または検出中に、システムの動作は、アドレス指定されたメモリセルに対する種々の制御ゲート電圧の供給を（電力制御２２６を用いて）制御する状態マシン２２２の制御下にある。メモリによってサポートされる様々なメモリ状態に対応する様々な所定の制御ゲート電圧を順次印加するときに、検出モジュール４８０はこれらの電圧の１つでトリップすることがあり、出力がバス４７２を介して検出モジュール４８０からプロセッサ４９２に提供される。その時点で、プロセッサ４９２は、検出モジュールがトリップしたことと入力線４９３を介した状態マシンからの印加制御ゲート電圧に関する情報とを考慮することによって、結果として得られるメモリ状態を判断する。その後、プロセッサ４９２は、メモリ状態に関する２進コードを計算し、結果として得られたデータビットをデータラッチ４９４に記憶する。コア部の別の実施形態においては、ビット線ラッチ４８２は、２つの役目、すなわち、検出モジュール４８０の出力をラッチするラッチとしての機能と上記のビット線ラッチとしての機能の両方を果たす。
【００５２】
一部の実施例が複数のプロセッサ４９２を含むことが予想される。一実施形態においては、各プロセッサ４９２は、出力線の各々がともにワイヤードＯＲ接続されるような出力線（図５では図示省略）を含む。一部の実施形態においては、出力線はワイヤードＯＲ線に接続される前に反転される。この構成は、ワイヤードＯＲ線を受ける状態マシンがプログラムされているすべてのビットが所望レベルに達したことを判断することができるので、プログラム検証処理中にプログラミング処理が終了したことを素早く判断することができる。例えば、各ビットがその所望レベルに達すると、そのビットに対する論理０がワイヤードＯＲ線に送られる（または、データ１が反転される）。すべてのビットがデータ０を出力すると（または、データ１が反転されると）、状態マシンはプログラミング処理を終了すべきことを認識する。各プロセッサが８つの検出モジュールと通信する実施形態においては、状態マシンは（一部の実施形態において）ワイヤードＯＲ線を場合によっては８回読み出す必要があるか、又は、状態マシンがワイヤードＯＲ線を１回読み出すだけで済むように、関連するビット線の結果を蓄積する論理がプロセッサ４９２に追加される。別の実施形態では、プロセッサ４９２は「１」の数をカウントし、これらがある所定の小さい閾値よりも小さい場合、プログラミング動作が成功裏に終了したと宣言される。その閾値は、「無視ビット数」と呼ばれることもある。
【００５３】
データラッチスタック４９４は、検出モジュールに対応するデータラッチのスタックを含んでいる。一実施形態においては、１つの検出モジュール４８０当たり３個の（または、４個、または別の数の）データラッチがある。一実施形態において、ラッチは各々が１ビットである。
【００５４】
プログラム中または検証中に、プログラムされるべきデータは、データバス４２０から１セットのデータラッチ４９４に記憶される。検証処理中に、プロセッサ４９２は所望のメモリ状態に対する検証されるメモリ状態をモニタする。２つの状態が一致していると、プロセッサ４９２は、ビット線がプログラム抑止を示す状態となるようにビット線ラッチ４８２を設定する。これによって、ビット線に結合されているメモリセルは、その制御ゲートでプログラミングパルスを受けても、さらにプログラムされることが抑止される。他の実施形態においては、プロセッサは最初にビット線ラッチ４８２をロードし、検出回路は検証処理中にこれを抑止値に設定する。
【００５５】
一部の実施形態において（ただし、必須ではないが）、データラッチはシフトレジスタとして実現され、これによって、シフトレジスタに記憶された並列データがデータバス４２０用のシリアルデータに変換され、かつ、この逆の変換が行われる。好ましい一実施形態においては、メモリセルの読出し／書込みブロックに対応するすべてのデータラッチは一緒にリンクされてブロックシフトレジスタを形成する場合があり、これによって、データのブロックがシリアル転送によって入力または出力されるようになる。特に、読出し／書込みモジュールのバンクは、データラッチのセットの各々が読出し／書込みブロック全体に対してシフトレジスタの一部であるかのように順次データをデータバス内に、または、データバスからシフトするように調整される。
【００５６】
検出動作およびセンスアンプに関するさらなる情報は、（１）２００４年３月２５日に公開された「Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ａｎｄ  Ｍｅｔｈｏｄ  Ｗｉｔｈ  Ｒｅｄｕｃｅｄ  Ｓｏｕｒｃｅ  Ｌｉｎｅ  Ｂｉａｓ  Ｅｒｒｏｒｓ」と題する米国特許出願公開第２００４／００５７２８７号、（２）２００４年６月１０日に公開された「Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ａｎｄ  Ｍｅｔｈｏｄ  ｗｉｔｈ  Ｉｍｐｒｏｖｅｄ  Ｓｅｎｓｉｎｇ」と題する米国特許出願公開第２００４／０１０９３５７号、（３）米国特許出願公開第２００５／０１６９０８２号、（４）２００５年４月５日に出願された発明者Ｊｉａｎ  Ｃｈｅｎによる「Ｃｏｍｐｅｎｓａｔｉｎｇ  ｆｏｒ  Ｃｏｕｐｌｉｎｇ  Ｄｕｒｉｎｇ  Ｒｅａｄ  Ｏｐｅｒａｔｉｏｎｓ  ｏｆ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ」と題する米国特許出願公開第２００６／０２２１６９２号、および（５）２００５年１２月２８日に出願された発明者Ｓｉｕ  Ｌｕｎｇ  ＣｈａｎおよびＲａｕｌ−Ａｄｒｉａｎ  Ｃｅｒｎｅａによる「Ｒｅｆｅｒｅｎｃｅ  Ｓｅｎｓｅ  Ａｍｐｌｉｆｉｅｒ  Ｆｏｒ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ」と題する米国特許出願公開第２００６／０１５８９４７号に開示されている。ここに掲げた５つの特許文献はすべて、その全体が参照によって本明細書に組み込まれる。
【００５７】
図６は、コントローラ２４４の一実施形態のブロック図である。他のアーキテクチャも採用されうる。図６は、ホスト（たとえば、ディジタルカメラ、携帯電話、ＰＤＡ、コンピュータなど）からデータおよびコマンドを受け取るホストインターフェース５０２を示す。また、ホストインターフェース５０２は、データおよびステータスをホストに提供しうる。一実施形態では、ホストインターフェース５０２は、ホストに対して情報を送受信する様々な回路を含む。一部の実施例では、ホストインターフェース５０２は、プロセッサとそのプロセッサをプログラムするソフトウェアとを含む。ホストインターフェース５０２は、バッファキャッシュ５０４に接続される。ホストインターフェース５０２によってホストから受け取られたデータは、ホストインターフェース５０２からバッファキャッシュ５０４に転送されてバッファキャッシュ５０４に記憶される。バッファキャッシュ５０４は、メモリインターフェース５０６に接続される。バッファキャッシュ５０４から、データはメモリインターフェース５０６に提供され、メモリインターフェース５０６はデータおよびコマンドをメモリチップ２１２（図３）に伝達し、データおよびステータスをメモリチップ２１２（図３）から受け取るインターフェースを備える。メモリインターフェース５０６においてメモリチップ２１２（図３）から受け取られたデータは、この後、ホストインターフェース５０２を介してホストに伝送するためにバッファキャッシュ５０４に記憶される。メモリインターフェース５０６は１つまたは複数の回路を含む。一部の実施形態では、メモリインターフェースは、プロセッサとそのプロセッサをプログラムするソフトウェアとを含みうる。
【００５８】
コントローラ２４４は、当技術分野で周知なＣＰＵ５０８を含む。ＣＰＵ５０８は、ホストインターフェース５０２、バッファキャッシュ５０４、メモリインターフェース５０６、ＥＣＣアクセラレータ５１０、ＲＡＭ５１２、およびコードストア５１４と通信する。ＥＣＣアクセラレータ５１０は、ＣＰＵ５０８が、メモリに記憶されるデータに対するエラー補正冗長度を計算したり、メモリから読み出されたデータのエラーを補正するためにメモリから読み出される冗長度を使用したりするのを支援する１つまたは複数の回路を含む。一部の実施形態では、ＥＣＣアクセラレータ５１０がエラー補正冗長度を計算しているときにデータはバッファキャッシュ５０４に記憶される。ＥＣＣアクセラレータ５１０は、バッファキャッシュ５０４からデータを読み出してエラー補正冗長度をバッファキャッシュ５０４に記憶しうる。一実施形態では、ＥＣＣアクセラレータ５１０は、上記計算を実施するプロセッサおよびソフトウェアを含みうる。ＥＣＣアクセラレータ５１０の一部の実施例は、すべてのエラー補正に関係する計算を実施するが、他の実施形態では、ＥＣＣアクセラレータ５１０はエラー補正手順に関係する計算を実施する際にＣＰＵ５０８を支援する。生データはホストインターフェースから読み込まれ、エラー補正冗長度はデータに加えられ、冗長度を有するデータは最終的にメモリチップに記憶するためにバッファキャッシュ５０４に記憶されうる。
【００５９】
ＲＡＭ５１２はＣＰＵ５０８のメモリとして機能する。コードストア５１４はＣＰＵ５０８を動作させるファームウェアを含む。また、コントローラ２４４は、コントローラ２４４の構成要素とメモリチップ２１２（図３）とに安定した電圧を提供する電圧レギュレータ５１６を含む。また、クロック発生器５１８は、安定したクロックをコントローラ２４４（図３）の構成要素とメモリチップ２１２（図３）とに提供する。
【００６０】
一実施形態では、メモリアレイ２００（図３）のメモリセルはデータを２進データとして記憶する。すなわち、データの１ビットが各メモリセルに記憶され、各メモリセルは読み出されるときのその閾値電圧が２つの閾値電圧分布の１つに対応するように充電される。たとえば、図７は、２つの閾値電圧分布を示しており、１つの閾値電圧分布Ｅｒは消去されているメモリセルに関連し、第２の閾値電圧分布Ｐはプログラムされているメモリセルに関連する。一実施形態では、閾値電圧分布Ｅｒのメモリセルはデータ「１」を記憶し、閾値電圧分布Ｐのメモリセルはデータ「０」を記憶する。メモリアレイが消去されると、すべてのメモリセル（不良列に起因するセルを除く）は分布Ｅｒとなる。データをメモリアレイに記憶する必要があるとき、メモリセルの一部は分布Ｐにプログラムされる。一部の実施形態では、分布Ｅｒは０Ｖより小さく、分布Ｐは０Ｖより大きい。
【００６１】
他の実施形態では、メモリアレイ２００（図３）のメモリセルは、各メモリセルに複数のビットを記憶する。たとえば、メモリセルは、メモリセル当たり２ビット、メモリセル当たり３ビット、メモリセル当たり４ビット等を記憶することができる。本明細書に記述する技術では、メモリセル当たりの特定のビット数やこれらのビットのデータの符号化は必要でない。例示のみを目的として、以下の議論では、メモリセル当たり４ビットを使用する実施形態を説明する。しかしながら、他の実施形態では、メモリセル当たり様々なビット数が使用される。
【００６２】
メモリセル当たり４ビットを使用するシステムでは、１６の可能なデータ状態に対応する１６の閾値電圧分布が利用される。本明細書の目的においては、データ状態と閾値電圧分布は同じ意味で使用される。１６のデータ状態を有するシステムの場合、データ状態は０〜９およびＡ〜Ｆと表示される。状態０は消去されたメモリセルに対する閾値電圧分布に対応する。したがって、母集団のすべてのメモリセルが消去されると、すべてのメモリセルが状態０にある。メモリセルが消去された後に、これらは０から他の１５の状態のいずれかにプログラムされうる。下表は、データを１６の状態に符号化する一例を示す。一実施形態では、各メモリセルがデータを４ページに記憶するようにデータの各ビットは独立したページに関連付けられる。
【表１】
2013504836.tif 000003
【００６３】
データの符号化にはほかにも多くの適切な方式がある。たとえば、米国特許第６，２２２，７６２号および米国特許出願公開第２００４／０２５５０９０号は、いずれもその全体が参照によって本明細書に組み込まれるが、これらにはマルチステートフラッシュメモリセルに対する様々なデータ符号化方式が記述されている。一実施形態では、フローティングゲートの閾値電圧が間違って隣接する物理的状態にシフトする場合に１ビットしか影響を受けないように、データ値はグレイコード割当を用いて閾値電圧範囲に割り当てられる。一部の実施形態では、データ符号化方式は、種々のワード線、種々のビット線、ビット線の種々のグループ、および種々のブロックに対して変更されうる。データ符号化方式は時間とともに変更されてもよく、あるいは、ランダムワード線に対するデータビットは反転されてもよく、データパターン感度およびさらにはメモリセルの磨耗を低減するようにランダム化されてもよい。
【００６４】
本明細書に記述する技術で利用できる、当技術分野で現在周知である種々のプログラミング処理がある。すなわち、本明細書に記述する技術はいずれか１つの特定のプログラミング処理に限定されるものではなく、まだ開発されていないものを含む様々なプログラミング処理が本明細書に記述する技術とともに採用されうる。一実施形態では、共通ワード線（選択ワード線と呼ばれる）に接続されたメモリセルをプログラムするために、３パスプログラミング処理が採用される。メモリセルはすべて消去状態で開始する。プログラミング処理の第１のパスでは、メモリセルは消去状態から３つの中間状態にプログラムされる。これは図８Ａにグラフで示される。図から分かるように、状態０のメモリセルは状態Ｉ１、Ｉ２、およびＩ３にプログラムされる。大量のメモリセルが状態０からプログラムされるので、状態０の高さは点線から実線に低減される。また、状態０は、同じワード線でのプログラミングによって広げられる。
【００６５】
最終的に状態０、１、２または３にプログラムされる上記のメモリセルは、プログラミングの第１のパスの間は状態０に保たれる。状態４、５、６および７にプログラムされるメモリセルは、プログラミング処理の第１のパスにおいて状態Ｉ１にプログラムされる。状態８、９、ＡおよびＢにプログラムされるメモリセルは、プログラミングの第１のパスの間に状態Ｉ２にプログラムされる。状態Ｃ、Ｄ、ＥおよびＦにプログラムされる上記のメモリセルは、プログラミングの第１のパスの間に状態Ｉ３にプログラムされる。
【００６６】
一実施形態では、プログラミングの３つのパスの各々は、途切れることなく連続的に実施されうる。別の実施形態では、プログラミング処理の各パスの間に、１つまたは複数の他のワード線上のメモリセルがプログラミングを受けることができる。このような方式では、隣接するメモリセル間の結合を減らすことができる。隣接するワード線のメモリセルがプログラミングを受けるとき、隣接するメモリセルはプログラミングの第１のパスでプログラムされたメモリセルに結合する。この結合によって、選択ワード線のメモリセルの見かけの閾値電圧が上昇し、これによって、状態（０、Ｉ１、Ｉ２、およびＩ３）の各々が広げられる。図８Ｂは、点線で示される最初の状態と実線で示されるその後に広がった状態とでこの広がりを示している。広がりは、その後のパスで補正されることになる。
【００６７】
プログラミング処理の第２のパスは、図８Ｂの広がった状態に基づいて実施される。図８Ｃは、プログラミング処理の第２のパスをグラフで示しており、最初の分布を点線で、新たな分布を実線で示している。状態０から、状態１に向かうメモリセルは状態１にプログラムされ、状態２に向かうメモリセルは状態２にプログラムされ、状態３に向かうメモリセルは状態３にプログラムされる。状態０にあって状態０に保たれることになっているメモリセルは、状態０に保たれる。一部の実施形態では、状態０は、同じワード線でのプログラミングに起因して広げられる。状態０におけるメモリセル数は減少されているので、状態０に対する閾値電圧分布の高さは減少される。中間状態Ｉ１から、状態４に向かうメモリセルは状態４にプログラムされ、状態５に向かうメモリセルは状態５にプログラムされ、状態６に向かうメモリセルは状態６にプログラムされ、状態７に向かうメモリセルは状態７にプログラムされる。メモリセルは１つの閾値電圧分布から３つ／４つの閾値電圧分布にプログラムされているので、閾値電圧分布の高さは減少される。中間状態Ｉ２から、状態８に向かうメモリセルは状態８にプログラムされ、状態９に向かうメモリセルは状態９にプログラムされ、状態Ａに向かうメモリセルは状態Ａにプログラムされ、状態Ｂに向かうメモリセルは状態Ｂにプログラムされる。中間状態Ｉ３から、状態Ｃに向かうメモリセルは状態Ｃにプログラムされ、状態Ｄに向かうメモリセルは状態Ｄにプログラムされ、状態Ｅに向かうメモリセルは状態Ｅにプログラムされ、状態Ｆに向かうメモリセルは状態Ｆにプログラムされる。
【００６８】
プログラミング処理の第２のパスが選択ワード線に対して実施された後に、近くの他のワード線上のメモリセルは、選択ワード線でプログラムされている現在のメモリセルに結合されるプログラミングの第１、第２および第３のパスを受け得る。この結合によって、点線で示される最初の分布と実線で示されるその後に広がった分布とによって図８Ｄに示されるように、閾値電圧分布が広げられるように、いくつか、または、より多くのメモリセルの見掛けの閾値電圧が上昇される。
【００６９】
結合に起因する閾値電圧分布の広がりを説明するために、第３のプログラミングパスが使用されて閾値電圧分布を狭める。プログラミングの第３のパスは図８Ｅに示され、図８Ｅは状態１〜Ｆの各々が狭められていることを示す。図８Ｅで分かるように、最初の閾値電圧分布は点線で示され、狭い閾値電圧分布は実線で示される。さらに、同じＷＬのプログラミングによって消去状態が広げられる。なお、状態０は狭められない。閾値電圧分布が狭められると、データ状態にあるメモリセルの閾値電圧は閾値電圧分布を狭めるために上昇される。他の隣接するメモリセルは第３のプログラミングパスの後にさらにプログラミングを受ける可能性があるので、状態８Ｅの閾値電圧分布の各々は、状態８Ｆに示すように隣接するメモリセルからの結合に起因して広げられ得る。図８Ｆの点線は結合に起因して広がる前の閾値電圧分布を示し、実線は結合に起因して閾値電圧分布が広がった後の閾値電圧分布を表す。
【００７０】
図９Ａは、メモリセル当たり４ビットのデータを記憶するメモリセルの１６のデータ状態を示す。一実施形態では、図９Ａに示すように１６の状態間にデータが均一に分布されるように、コントローラが様々なメモリセルに対するデータをスクランブルする。すなわち、均一な分布を実現するために、先の表におけるデータ符号化は一部のメモリのために使用されるが、他のメモリセルには種々のデータ符号化が採用される。他の実施形態では、データ符号化は各メモリセルに対して変更されない。他の実施形態では、データ符号化は均一でない分布を記憶するためにスクランブルされる。
【００７１】
図９Ａおよび９Ｂは、メモリセルを消去する処理を示すために使用されうる。図９Ａは消去処理を実施する前のメモリセルの閾値電圧分布を示し、図９Ｂは消去後のメモリセルの閾値電圧を示す。消去されたメモリセルの閾値電圧がすべて図９Ｂで閾値電圧分布０としてしめされる消去後の閾値電圧分布内に入るように、消去処理は状態１〜Ｆ（図９Ａに示す）にプログラムされたメモリセルの閾値電圧を変化させる。図９Ｂの消去された閾値電圧分布は、状態０に対応する。図９Ｂの消去された閾値電圧分布から、メモリセルは図８Ａ〜８Ｆの処理に従ってプログラムされうる。
【００７２】
一実施形態においては、メモリセルは、ｐ型ウェルを十分な期間にわたって消去電圧（たとえば、２０Ｖ）に上昇させ、ソース線およびビット線をフローティング状態とするとともに、選択されたブロックのワード線を接地することによって消去される。消去されるものとして選択されていないブロックにおいては、ワード線はフローティングされる。容量結合によって、非選択ワード線、ビット線、選択ゲート線、および共通ソース線は、さらに、消去電圧のかなりの割合まで上昇され、それによって消去のために選択されていないブロックに対する消去を防止する。消去されるものとして選択されているブロックにおいては、強力な電場が選択されたメモリセルのトンネル酸化物層に印加され、典型的にはファウラーノルドハイムトンネリング機構によってフローティングゲートの電子が基板側に放出されることによって選択されたメモリセルが消去される。電子がフローティングゲートからｐ型ウェル領域に移動するので、選択されたセルの閾値電圧が低下する。消去は、メモリアレイ全体、個々のブロック、又は、別のメモリセル単位で実行されうる。消去処理の一実施例は、ｐウェルに複数の消去パルスを印加し、消去パルス間でＮＡＮＤストリングが適切に消去されているかどうかを検証する。
【００７３】
図１０は、図３のシステム（またはその他のシステム）など、不揮発性メモリを動作させる処理の一実施形態を記述するフローチャートである。ステップ６００では、データをプログラムする要求が、コントローラ２４４（図３の）においてホストから受信される。プログラムされるデータも受信される。要求に応じて、コントローラ２４４は、ステップ６０２において、データを記憶するために使用するフラッシュメモリセルのブロックを決定する。データは、ステップ６０４において、本明細書に記述するプログラミング処理（または他のプログラミング処理）のいずれかを用いて、決定されたブロックにプログラムされる。プログラムされたデータは、ステップ６０６において、コントローラ２４４の指示で１回または複数回読み出される。ステップ６０４と６０６の間に点線があるが、これは、これらのステップの間に経過する時間が予測不可能であるためであり、ステップ６０６は、ステップ６０４に応答して実施されるものではない。ステップ６０６は、データの読出し要求やその他の事象に応答して実施される。
【００７４】
図１１は、ブロック内のメモリセルをプログラムするプログラミング処理を記述するフローチャートである。図１１の処理は、図１０のステップ６０４の一実施形態である。図１１のステップ６３２では、メモリセルがプログラミングに先立って（ブロックやその他の単位で）消去される。たとえば、閾値電圧が図９Ａの閾値電圧分布から図９Ｂの単一の消去された閾値電圧分布に変更される。図１１のステップ６３４では、消去されたメモリセルの閾値電圧分布を狭めるためにソフトプログラミングが実施される。一部のメモリセルは、消去処理の結果として必要以上に深く消去された状態にある可能性がある。ソフトプログラミング処理では、深く消去されたメモリセルの閾値電圧を消去された状態の有効範囲におけるより高い閾値電圧に移動するためにプログラミングパルスを印加することができる。ブロック全体が１回の動作で消去されるとセルをそれ以上深く消去されるのを選択的に阻止することは不可能であるので、制御を可能にする唯一の方法は、消去パルスがさらに送られてブロックにおいてまだ消去されないセルの数をチェックすることである。これによって消去状態の分布が広くなり、これを狭めるためにソフトプログラミングが必要となる。ステップ６３６において、ブロックのメモリセルが本明細書に記述されるようにプログラムされる。ステップ６３２〜６３６は、前述の様々な回路を用いて、状態マシン、コントローラ、または状態マシンとコントローラの組合せによる指示に従って実施され得る。たとえば、コントローラ２４４（図３）は、データをプログラムするために、コマンドおよびデータを状態マシンに発行してもよい。それに応答して、状態マシンは、プログラミング動作を実行するために前述の回路を動作させてもよい。ステップ６３８において、コントローラ２４４は、成功裏に書き込まれた１つまたは複数のブロックが不合格になりやすいかどうかを判断する。不合格になりやすければ、コントローラ２４４は、不合格になりやすいブロックを管理し、たとえば、データは１つまたは複数の新たなブロックに再プログラムされ、不合格になりやすいブロックは不良としてマークされ、したがってもはや使用されない。一実施形態では、プログラミングは、コントローラ２４４による指示（またはコントローラ２４４によって生じる指示）に従ってメモリチップ２１２で実施される。
【００７５】
図１２は、共通ワード線に接続されたメモリセルにプログラミングを実施する処理の一実施形態を記述するフローチャートである。図１２の処理は、図８Ａ〜Ｆのプログラミング処理の各パスの間に１回または複数回実施され得る。別の実施形態では、各パス後に、ＰＬＣ（図１２参照）がチェックされ、これがある所定の制限値を超えると、ブロックは不良としてマークされる。この実施形態は、高いＰＬＣの場合でなければ達成できないのでさほど効果的でないが、フラッシュ回路２１２が不変であり、かつコントローラ２４４内のファームウェアだけを修正するだけでよいので実施することは比較的簡単である。
【００７６】
一般的に、プログラム動作中に制御ゲートに印加されるプログラム電圧は一連のプログラムパルスとして印加される。各プログラミングパルス間に、検証を可能にするために１セットの検証パルスが印加される。多くの実施例では、プログラムパルスの振幅は、各連続パルスごとに所定のステップサイズだけ増加する。図１２のステップ７１０において、プログラミング電圧（Ｖｐｇｍ）が初期振幅（たとえば、約１２〜１６Ｖまたは別の適切なレベル）に初期化され、状態マシン２２２によって維持されるプログラムループカウントＰＬＣが１に初期化される。ステップ７１２において、プログラム信号Ｖｐｇｍのプログラムパルスが選択ワード線（プログラミングのために選択されたワード線）に印加される。非選択ワード線は、当技術分野で周知であるブースティング方式を実施するために、１つまたは複数のブースティング電圧（たとえば、約９Ｖまたは個々の実施に適しているその他の振幅）を受ける。メモリセルをプログラムする必要がある場合には、対応するビット線は接地される。一方、メモリセルを現在の閾値電圧に保つ必要がある場合には、対応するビット線はＶｄｄ（たとえば、約３．５〜５Ｖ）に接続されてプログラミングが阻止される。ブースティング方式に関するさらなる情報は、米国特許第６，８５９，３９７号および米国特許出願公開第２００８／０１２３４２５号に見られ、これらはいずれも参照によって本明細書に組み込まれる。ステップ７１２において、選択ワード線に接続されたメモリセルのすべてが一緒にプログラムされるように、プログラムパルスが選択ワード線に接続されたすべてのメモリセルに同時に印加される。すなわち、すべてのメモリセルは同時に（または、時間的に重なって）プログラムされる。このように、選択ワード線に接続されたメモリセルのすべては、プログラミングからロックアウトされていない限り、閾値電圧に同時に変化を来たすことになる。
【００７７】
ステップ７１４において、選択メモリセルのデータ状態は、適切な１セットの目標レベルを用いて検証される。ステップ７１４は、１つまたは複数の検証動作の実施を含む。選択メモリセルの閾値電圧が適切な目標レベルに達していることが検出されると、メモリセルは、たとえば、後続のプログラミングパルスの期間においてそのビット線電圧をＶｄｄに上昇させることによって、さらなるプログラミングからロックアウトされる。ステップ７１６において、メモリセルのすべてがそれらの目標閾値電圧に達しているかどうかがチェックされる。達していれば、すべての選択メモリセルがプログラムされてそれらの目標状態が検証されたときに、プログラミング処理は成功裏に終了される。「合格」のステータスがステップ７１８において報告される。すべてのメモリセルがそれらの目標閾値電圧レベルに達しているとは限らない場合（ステップ７１６）、ステップ７２０において、それらの目標閾値電圧レベルに達していないメモリセルの数が所定数よりも少ないかどうかがチェックされる。この所定数は、読出し処理中にエラー補正を用いて補正されうるメモリセルの数に等しいかそれよりも少ない。それらの目標閾値電圧レベルに達していないメモリセルの数が所定数よりも少なければ（ステップ７２０）、プログラミング処理は終了し「合格」のステータスがステップ７１８において報告される。それらの目標閾値電圧レベルに達していないメモリセルの数が所定数以上であれば（ステップ７２０）、プログラミング処理は成功裏に終了しておらず、処理はステップ７２２に続く。
【００７８】
ステップ７２２では、プログラムループカウントＰＬＣが、プログラム制限値（ＬＩＭＩＴ）に対してチェックされる。プログラム制限値ＬＩＭＩＴの一例は４０であるが、他の値も採用されうる。プログラムループカウントＰＬＣがプログラム制限値ＬＩＭＩＴ以上であれば（ステップ７２２）、プログラム処理が失敗しており、不合格のステータスがステップ７２４において報告される。ステップ７２２において、プログラムループカウントＰＬＣがプログラム制限値ＬＩＭＩＴより低いと判断されると（ステップ７２２）、処理はステップ７２６に継続し、その時にプログラムループカウントＰＬＣが１だけインクリメントされ、プログラム電圧Ｖｐｇｍが次の振幅にステップアップされる。たとえば、次のパルスはステップサイズ（たとえば、０．２５Ｖのステップサイズ）だけ前のパルスよりも大きい振幅を有することになる。ステップ７２６の後、処理はステップ７１２にループバックし、別のプログラムパルスが選択ワード線に印加され、処理は前述のように継続する。一部の製品では、プログラミングが複数の段階で実現される。各段階は、プログラム電圧を典型的に一度、ときには、低い状態をプログラムする前に高い状態をプログラムする場合において二度上げる段からなる。プログラミングの各段階は、その段階に関連する１つまたは２つのＰＬＣを有していてもよい。あるいは、３つの段階の１つだけでループカウントを追跡すれば十分であるかもしれない。また、たとえば、第３段階の高い状態のループカウントのみを追跡することを選定してもよい。あるいは、第３段階のループカウントは、高い状態をプログラムするのに必要なパルス数と低い状態をプログラムするのに必要なパルス数との和として定義されうる。
【００７９】
図１２の処理は、同じワード線に接続された複数のメモリセルをプログラムするために使用される。一実施形態では、ページが同時にプログラムされるメモリセルの単位である。一例では、各ワード線は１ページを含む。別の実施形態では、各ワード線は、各ビットに対して１ページの４ページを含むことになる。図１２の処理は、ワード線に接続されたすべてのメモリセルまたは特定ページ内のメモリセルのみをプログラムするために使用されうる。図８Ａ〜Ｆの３パスプログラミング処理を振り返ってみると、図１２の処理は各パスに対して１回実施されうる。別の実施形態では、図１２の処理は、各パスに対して複数回実施されうる。たとえば、第１パス（図８Ａ）では、状態Ｉ１、Ｉ２、およびＩ３を同時にプログラムするために図１２の処理が１回採用されうる。あるいは、図１２の処理は、各状態に対して１回、第１パスの間に３回採用されうる。別の実施形態では、図１２の処理は、まず状態Ｉ３をプログラムし、続いて図１２の処理を使用して状態Ｉ１および２（一緒にまたは別々に）をプログラムするために採用され得る。
【００８０】
第２パスは、１５の状態すべてを同時にプログラムするために図１２の処理を用いるステップを含み得る。あるいは、図１２の処理は初めは状態１、２、３、４を同時にプログラムするために使用されてもよく、図１２の処理は二度目は状態５、６、７、８を同時にプログラムするために使用されてもよく、図１２の処理は三度目は状態８、９、Ａ、Ｂを同時にプログラムするために使用されてもよく、図１２の処理は四度目は状態Ｃ、Ｄ、Ｅ、Ｆを同時にプログラムするために使用されてもよい。一部の実施形態では、より高い状態がより低い状態よりも前にプログラムされてもよい（Ｃ、Ｄ、Ｅ、Ｆは最初にプログラムされてもよく、あるいは８、９、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆは状態１〜７の前にプログラムされてもよい）。別の実施形態では、各状態は図１２の処理を用いて別々にプログラムされる。
【００８１】
また、プログラミング処理の第３パスでは、図１２の方法を採用することができる。一実施形態では、図１２の方法は、各状態に対して別々に実施される。別の実施形態では、すべての状態が図１２の処理を用いて同時にプログラムされる。別の実施形態では、より高い状態が図１２の処理を用いて最初にプログラムされ、続いてより低い状態がプログラムされる（Ｃ、Ｄ、Ｅ、Ｆは最初にプログラムされてもよく、あるいは８、９、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆは状態１〜７の前にプログラムされてもよい）。他の変形形態も採用されうる。
【００８２】
前述のように、プログラミング処理の各パスの間に、隣接するワード線のメモリセルもプログラムされ得る。図１３は、ワード線をプログラムする順序の一例を記述する図である。図から分かるように、ワード線０（ソース線に最も近いワード線）はプログラム処理の第１パスを受け取ることによって最初にプログラムされ、続いてワード線１はプログラム処理の第１パスを受け取ることによってプログラムされ、続いてワード線０はプログラム処理の第２パスを受け取ることによってプログラムされ、続いてワード線２はプログラム処理の第１パスを受け取ることによってプログラムされる、といった具合である。
【００８３】
一実施形態では、データはまず２進データとして記憶される。たとえば、コントローラ２４４（図３）はまずプログラムするデータをバッファキャッシュ５０４（図６）に記憶する。バッファキャッシュ５０４から、データはメモリアレイ２００（図３）に２進データとして記憶される。十分なデータがメモリセル当たり４ビットのフルブロックを満たす２進データとしてメモリアレイに記憶されると（たとえば、２進データの４ブロックがあると）、データはメモリセル当たり４ビットとしてメモリセル内のプロックに再書込みされる（折りたたまれる）。この処理は図１４によって説明される。ステップ７４０において、データがコントローラ２４４（図３）においてホストから受け取られる。このデータはバッファキャッシュ５０４（図６）に記憶される。バッファキャッシュからのデータは、この後、ステップ７４２において、２進データとしてメモリアレイにプログラムされる。ステップ７４４において、メモリセル当たり４ビットを記憶するメモリセルのブロックに十分なデータ（またはセル当たり別のビット量）がないと判断されると、図１４の処理は終了する（ステップ７４５）。データ当たり４ビットを記憶するメモリセルのブロックに十分なデータがあれば、ステップ７４６において、新たなブロックに対するデータがメモリアレイから読み出され、バッファキャッシュ５０４（図６）に記憶される。ステップ７４８において、データの各ページに対して、コントローラ２４４（図３）がエラー補正コードを計算し、エラー補正コードをデータに加え、すべてのデータ（ＥＣＣ付き）を４ページの２進データとしてメモリアレイおよびバッファキャッシュ５０４に戻して一時的に記憶する。ステップ７５０において、４ページの２進データがメモリセル当たり４ビットの１ブロックとしてバッファキャッシュ５０４からメモリアレイ２００（図３）にプログラムされる。図１４の処理は他の分解能（たとえば、セル当たり２ビット、セル当たり３ビット、など）で使用され得る。あるいは、図１４では、ステップ７４８において２進データの書込みがスキップされ得るが、ステップ７５０において、スクランブリングおよびＥＣＣ冗長ビットがステップ７４２またはステップ７５０において既に計算されているものとして、データは各セルに４ビットを保持するメモリセルに直接書き込まれてもよい。
【００８４】
前述のように、プログラミング処理の間に、システムは閾値電圧が目標閾値電圧に達しているかどうかを検証する。プログラミングの後に、システムはメモリセルによって記憶されたデータを読み出すために閾値電圧を読み出すこともできる。一般に、読出しおよび検証動作の間に、対象のメモリセルに対する閾値電圧が各読出しまたは検証動作に対して指定される電圧レベルに達しているかどうかを判断するために、選択ワード線は上記電圧レベルに接続される。電圧をワード線の制御ゲートに印加した後に、メモリセルの伝導電流が測定されてメモリセルがワード線に印加された電圧に応じてターンオンしたかどうかが判断される。一定値よりも大きい伝導電流が測定されると、メモリセルがターンオンしており、ワード線に印加された電圧がメモリセルの閾値電圧よりも大きいものと考えられる。一定値よりも大きい伝導電流が測定されなければ、メモリセルがターンオンしておらず、ワード線に印加された電圧がメモリセルの閾値電圧以下であると考えられる。
【００８５】
読出しまたは検証動作の間にメモリセルの伝導電流を測定する方法は数多くある。一例では、メモリセルの伝導電流は、センスアンプ内のコンデンサを放電または充電する速度によって測定される。別の例では、選択メモリセルの伝導電流によって、メモリセルを含むＮＡＮＤストリングにビット線に電圧を放電させることができる（またはできない）。ビット線の電荷は、これが放電されたか否かを検証するために、所定時間後に測定される。
【００８６】
前述のように、読出しおよび検証動作の間に、選択ワード線の制御ゲートには個々の読出しおよび検証動作に対応する電圧が印加される。すなわち、メモリセルがプログラムされうるあらゆるデータ状態が少なくとも１つの読出し比較値と検証比較値とを有する。検証処理では、適切なメモリセルがその個々のデータ状態に達しているかどうかを判断するために検証比較値が使用される。読出し比較値は、メモリセルが一定のデータ状態にあるか否かを判断するために使用される。図１５は、図９Ａの閾値電圧分布の一部を読出し比較値および検証比較値とともに示す。たとえば、状態０と状態１の間には読出し比較値Ｖｒ１がある。データ状態１と２の間には読出し比較値Ｖｒ２がある。データ状態２と３の間には読出し比較値Ｖｒ３がある。４ビットを保持するメモリセルの場合、データ状態（Ｖｒ１、ＶＲ２、Ｖｒ３、ＶＲ４．．．Ｖｒ１５）の各々の間に読出し比較値がある。たとえば、ワード線がＶｒ１を受け取るときメモリセルが電流を導くかどうかを試験することによって、システムはメモリセルがデータ状態０にあるか否かを判断する。ワード線に印加されているＶｒ１およびＶｒ２に応じてメモリセルが電流を導くかどうかを判断することによって、システムはメモリセルが状態１にあるかどうかを判断する。各閾値電圧分布の下端には検証比較値がある。たとえば、データ状態１の下端にはＶｖ１があり、状態２の下端には検証比較値Ｖｖ２があり、状態３の下端には検証比較値Ｖｖ３があるといった具合である。たとえば、メモリセルは、その閾値電圧がＶｖ２以上であるときに状態２に成功裏にプログラムされている。
【００８７】
図１６は、読出し処理中の非選択ワード線、選択ワード線、およびソース線の挙動を示すタイミング図である。この具体的な読出し処理では、非選択ワード線は、非選択メモリセルが導通しているようにオーバードライブ信号まで上昇されることになる。選択ワード線は、非選択ワード線がそれらの目標電圧に達するように初期にランプアップされる。その後、Ｔ１で始まり、選択ワード線は読出し比較値（Ｖｒ１．．．Ｖｒ１５）の各々を繰り返す。ソース線は、安定化、検知、安定化、検知などと、安定化と検知を二者択一的に行なうように、各読出しの間にパルスされる。別の実施形態では、選択ワード線は読出し比較値の各々に対してパルスを受け、非選択ワード線は各パルスの前に昇圧され、各パルスの後に降圧される。当技術分野で周知である他の読出し処理も採用されうる。本明細書に記述する技術は、特定タイプの読出し処理に限定されない。
【００８８】
図１７は、消去処理の一実施形態を記述するフローチャートである。一般に、消去処理は、メモリアレイのｐウェルに消去パルスを印加するステップを含む。一実施形態では、メモリセルは、ｐウェルの表面に実現され、ｐウェルはｎウェル内にあり、ｎウェルはｐ基板内にある。各パルス間で、システムはブロックが適切に消去されるかどうかを検証する。プログラミング処理と同様に、システムはパルス数のカウントを続ける（消去ループ）。消去ループの数は消去カウントＥＣによって維持される。図１７のステップ７７０において、消去カウンターＥＣが１に初期化される。ステップ７７２において、ビット線およびソース線がフローティングされる。ステップ７７４において、選択ブロックに対するワード線が接地され、非選択ブロックに対するワード線はフローティングされる。ステップ７７６において、電圧パルスがｐウェルに印加される。一実施形態では、電圧パルスは２０Ｖである。ステップ７７８において、システムは、ブロックが適切に消去されたかどうかを検証する。一実施形態では、消去検証電圧がすべてのワード線に印加され、システムはブロックに対する最少数のＮＡＮＤストリング（すべてのＮＡＮＤストリングまたは所定の制限値よりも大きい数）が消去検証電圧に応じて導通するかどうかを判断する。一実施形態では、消去閾値電圧分布が完全に０Ｖ以下であるときには、ワード線に印加される消去検証電圧は０Ｖである。すべてのＮＡＮＤストリング（または所定最少数のＮＡＮＤストリング）がすべて検証処理に合格すると（ステップ７８０）、消去処理は成功裏に終了する（ステップ７８２）。最少数より少ないＮＡＮＤストリングがワード線に印加された消去検証電圧に応じて導通すると、システムはステップ７８４において消去カウントＥＣが消去制限値ＬＩＭＩＴより低いか否かを判断する。消去カウントＥＣが消去制限値ＬＩＭＩＴより低ければ、システムはステップ７８６において電圧パルスの振幅をステップサイズだけ変化させて消去カウントＥＣを１だけインクリメントする。ステップ７８６の後に、処理はステップ７７６にループバックして別の電圧パルスを印加する。一実施形態では、電圧パルスがステップされず、各反復において同じ振幅の電圧パルスが印加される。他の実施形態では、電圧パルスの幅が各反復に対して変更される。消去カウントＥＣが消去制限値ＬＩＭＩＴ以上であれば（ステップ７８４）、消去処理は失敗となる（ステップ７８８）。消去制限値ＬＩＭＩＴの一例は１０である。なお、プログラミングと同様に、一部の実施形態では、ＥＣＣがメモリセルを後で補正できる場合はシステムが少数のメモリセルを無視し得るので、すべてのメモリセルが検証に合格する必要はない。このようなメモリセルはスタックセルと呼ばれる。
【００８９】
前述のように、データがブロックに成功裏にプログラムされ、その後、ワード線、メモリセル、またはメモリの他の部分の劣化が原因でそのデータを読み出すことがもはや不可能な時がある。プログラミングを実施してプログラミング動作が成功したというステータスを受け取った後に、プログラム直後のブロックが将来不合格になりやすいかどうかを予測する技術を提案する。それゆえ、１セットの不揮発性記憶素子がまだ不合格になっていなくても、その１セットの不揮発性記憶素子が不合格になりやすいとの予測が行なわれる。ブロックが将来不合格になりやすければ、そのブロックに記憶されたデータは別のブロックに再プログラムされ得るが、これは、データがコントローラ２４４（図３）のバッファキャッシュ５０４（図５）またはメモリチップ２１２（図３）のバイナリバッファのいずれかがまだ利用可能だからである。一実施形態では、コントローラ２４４は、一連の試験を実施して通常とは異なる挙動を探す。ブロックが成功裏にプログラムされあるいは消去されるときでも、このような差は識別されて故障予測の目安として利用され得る。
【００９０】
１セットの実施形態では、コントローラ２４４（図３）（または別の構成要素）は２段階の試験を実施する。第１段階の試験中に、コントローラは迅速に完了可能な試験を実施する。ブロックが試験に不合格になれば、そのブロックは疑わしいブロックであると考えられる。試験に合格したブロックは、疑わしいブロックとしてマークされず、これ以上の試験を受けない。疑わしいブロックであるブロックは、より厳格でかつより多くの時間を要する第２のセットの試験を受ける。第２の試験に不合格になったブロックは、不合格になりやすい不良ブロックであると考えられる。これらの不良ブロックからのデータはどこかで再プログラムされ、そのブロックは将来使用されないように不良としてマークされる。第２の一連の試験に合格したブロックは、正常と考えられる。この２段階方式は、すべてのブロックに対してデバイスの耐用期間中にリアルタイムで過度に時間のかかる試験を回避することによって性能（プログラミングスループット）を維持するとともに、一方で劣化しているブロックをまだ利用可能な時点で誤検出することをできる限り防止するのに役立つ。
【００９１】
図１８は、不合格になりやすいブロックを識別して管理するために２段階の試験を実施する高レベルの処理を記述するフローチャートである。コントローラによって実施される図１８の処理は、図１１のステップ６３８の一実施例である。図１８の処理は、メモリセルのプログラミング（および／または消去）を成功裏に終了した後で実施される。ステップ８０２において、コントローラ２４４（図３）は第１段階の試験を実施する。コントローラ２４４は、試験を実施したり、試験を実施するためにメモリチップ２１２（図３）に指示したりすることが可能である。ステップ８０４において、ブロックの試験における合否が判断される。ブロックが試験に合格すると、そのブロックは不良ブロックとしてマークされず（ステップ８０６）、図１８の処理が終了する。ブロックがステップ８０２の試験に不合格になると、（一実施形態において）ブロックは疑わしいとしてマークされ、ステップ８０８において、第２段階の試験がそのブロックに対して実施される。それゆえ、一実施形態では、第２の試験は第１の試験に不合格になったメモリセルに対してのみ実施される。第２段階の試験は、コントローラによって実施されてもよく、コントローラの指示に従ってメモリチップ２１２によって実施されてもよい。ステップ８１０において、ブロックの第２段階の試験における合否が判断される。ブロックが第２段階の試験に合格すると、このブロックは良好であると考えられ、ステップ８０６において不良ブロックとしてマークされない。ブロックが第２段階の試験に不合格になれば（ステップ８０８）、ステップ８１０の後に、ブロックはステップ８１２において不良としてマークされる。前述のように、第１段階の試験（ステップ８０２）は迅速に実施されうるが、第２段階の試験はより多くの時間を要するより綿密な試験である。第２段階の試験をブロックの小さいサブセットのみに受けさせることで、この試験に対する性能ペナルティが軽減される。
【００９２】
一実施形態では、コントローラ２４４はブロック識別の表とブロックが不良であるか否かを示すフラグとを維持する。この表はコントローラ用管理データの記憶専用のメモリアレイの一部に記憶されうる。あるいは、この表は、コントローラに記憶されうる。また、このデータは、他の不揮発性記憶装置に記憶されうる。データは、電源切断によってこのデータが喪失しないように不揮発性記憶装置に記憶される。
【００９３】
ステップ８１２においてブロックを不良としてマークした後に、コントローラ２４４はデータを新たなブロックに再プログラムする。データは、バッファキャッシュ５０４にあるか、あるいは２進データとしてメモリアレイ２００に記憶されている可能性がある（図１４のステップ７４２またはステップ７４８参照）。コントローラは、これらのいずれかの場所から不良としてマークされていない新たなブロックにデータをプログラムするようメモリチップ２１２に指示することができる。プログラミングは、たとえば、図１０、１２、１４および１７において前述した処理のいずれかを用いて行なわれ得る。
【００９４】
ステップ８１６において、コントローラ２４４は、不良ブロックの数をカウントすることができる。ステップ８１８において、ステップ８０２および８０８において試験に用いられた閾値がステップ８１６においてカウントされた不良ブロックの数に基づいて調整され得る。たとえば、不良ブロックの数が多くなりすぎる場合は、コントローラ２４４はブロックが試験に不合格であると判断するための閾値を上昇させもよい。すなわち、利用可能なブロックの数が少なくなるにつれて、コントローラは、ユーザーデータを記憶するためのローテーションからブロックを除外する際に、そのブロックが不合格になる可能性があるとの高い確信を持つことが望まれる。一部の実施形態では、ステップ８１６および８１８が必ず実施される、他の実施形態では、図１８の処理が実施されるたびに実施されるのとは対照的に、ステップ８１６および８１８は一定期間ごとに実施されるだけである。あるいは、ステップ８１６および８１８は、図１８の処理とは別に実施される。一部の実施形態では、ステップ８１６および８１８は実施されない。
【００９５】
図１２に関して前述したように、プログラミング処理は、ループ（複数回の反復）を繰り返す。各ループにおいて、プログラムループカウント（ＰＬＣ）はインクリメントされる。一実施形態では、プログラミングループの数は、ブロックが劣化しているか、さもなければ故障しやすさの目安として使用されうる。それゆえ、一実施形態では、第１段階の試験は、プログラミングが終了するまでに過多なループを必要としたかどうかを判断するために、プログラムループカウントＰＬＣを調べるステップを含む。他の実施形態では、この試験が第２段階の試験に採用されてもよい。図１９は、第１段階の試験としてプログラムループカウントＰＬＣを用いる処理の一実施形態を記述するフローチャートである。すなわち、図１９の処理は、図１８のステップ８０２の一実施例である。一実施形態では、図１９の処理は、コントローラ２４４によるコマンドによって、または、これに従って実施される。
【００９６】
図１９のステップ８４０において、コントローラ２４４は各ワード線（またはブロックの他の部分）に対して１つまたは複数のプログラムループカウントＰＬＣを得る。プログラミングが終了すると、メモリチップ２１２は、各ワード線に対するプログラムループカウントＰＬＣをそのワード線に関連するラッチ、レジスタ、またはメモリ位置に記憶する。コントローラは、メモリチップ２１２に対してコマンドを発行することによってプログラムループカウントＰＬＣを要求することができる。一実施形態では、メモリチップ２１２は、３パスプログラミング技術の各パスに対するプログラムループカウントを記憶し、３つすべてのプログラムループカウントがコントローラ２４４に送られる。別の実施形態では、３つのプログラムループカウントの平均値のみが各ワード線に対して送られる。別の実施形態では、メモリチップは最新（たとえば、３パスプログラミング処理の第３パス）のプログラムループカウントのみを記憶する。したがって、最新のプログラムループカウントのみがコントローラ２４４に伝送される。別の実施形態では、メモリチップ２１２はすべてのプログラミングパスのカウントの和を備えるプログラムループカウントを記憶する。一部の実施形態では、図１２の処理は、各パスに対して複数回実施されうる。これらの場合、メモリチップは、最後のパスに対する図１２の処理の最終性能に対するプログラムループカウントをさらに送ることもできる。あるいは、メモリチップ２１２は、すべてのパス、すべてのプログラムループカウントの平均値、または一部の他のサブセットに対する図１２の処理のあらゆる性能に対するプログラムループカウントを送ることになる。
【００９７】
なお、フラッシュメモリシステムの一部の実施形態では、フラッシュは、ワード線のメタデータの一部としてフラッシュ自体におけるワード線当たりのＰＬＣを保持しない。各パスの後に、この数はコントローラ２２４によってフラッシュから読み出され得る。しかしながら、新たなプログラミングパス（図１２のプログラミングパスなど）が開始されると、ＰＬＣはゼロに設定されてＰＬＣの以前の値はすべて失われる。
【００９８】
一部の実施例では、システムはより低い状態のプログラムに先立って高い状態をプログラムする。たとえば、図１２の処理は、最高の８つの状態をプログラムする第３パスにおいて使用され、この後、図１２の処理は状態１〜７をプログラムする第３パスにおいて使用される。一部の実施形態では、第３パスに対する両方のプログラムループカウントが各ワード線に対してステップ８４０において伝達される。他の実施形態では、高い状態に対する第３パスからのプログラムループカウントのみが伝達されるか、あるいは低い状態に対する第３パスからのプログラムループカウントのみが伝達される。
【００９９】
２つの平面が同時にプログラムされる一部の実施形態では、２つの平面内の対応するワード線に対する両プログラムループカウントがチップ２１２（図３）からコントローラ２４４（図３）に送られる。同時にプログラムされている２つの平面を有する他の実施形態では、２つの平面内の対応するワード線に対する２つのプログラムループカウントの大きい方のみが伝達される。他のバリエーションのプログラムループカウントが送られて使用され得る。
【０１００】
図１９のステップ８４２において、コントローラ２４４は、受け取られたプログラムループカウントＰＬＣに対する平均値を計算する。たとえば、一実施形態では、コントローラ２４４は、各ワード線に対して１つのプログラムループカウント（ＰＬＣ）を受け取る。これらのＰＬＣは、加算されて平均化され、ブロック全体に対する平均プログラムループカウントを生成する。ステップ８４４において、各ワード線に対する各ＰＬＣが平均値と比較される。ステップ８４６において、コントローラ２４４は、ステップ８４４において比較されたＰＬＣのいずれかが平均値よりもある定数Ｋ１だけ大きいかどうか（たとえば、ＰＬＣ＞平均値＋Ｋ１か？）を判断する。Ｋ１の一例は６である。すべてのＰＬＣが「平均値＋Ｋ１」以下であれば、ブロックは第１段階の試験に合格する（ステップ８４８）。いずれかのＰＬＣが平均ＰＬＣよりも大きいＫ１ループよりも大きければ、ブロックは不合格になる（ステップ８５０）。その不合格になったブロックは疑わしいとされ、ブロックに不合格をもたらしたワード線が指摘されてＲＡＭ５１２（図６）に記憶される。別の実施形態では、ＰＬＣは、第１の試験が不合格になるかどうかを判断するために、平均値ではなく定数に対して比較される。
【０１０１】
図１９の処理の１つの代替は、プログラムループカウントに関してＰＬＣが図１９で使用されるのと同様にして、消去カウントＥＣを比較することである。すなわち、図１７に関して先に述べたように、システムは消去処理を何度も反復することができる。反復の回数（消去カウントＥＣ）は記憶されて平均ＥＣと比較され得る。ある所定数よりも大きいＥＣを有するブロックは、疑わしいとしてマークされる。あるいは、すべてのブロックに対するＥＣの平均値よりも大きいＥＣを有するブロックは、疑わしいとしてマークされる。ＥＣとともに図１９の処理を採用するときには、ステップ８４０は各ブロックに対するＥＣを得るステップを含み、ステップ８４２は平均ＥＣを計算するステップを含み、ステップ８４４は現在のブロックに対する１つのＥＣを平均ＥＣと比較するステップを含む。ステップ８４６および８５０は、ＰＣの代わりにＥＣを同様に含み、Ｋ１に対する異なる値の使用を含む。ステップ８５０において、ＷＬよりも大きい平均ＥＣを有するブロックが注目される。
【０１０２】
もう１つの代替例では、ＰＬＣがある所定数または平均値を第２の定数（第２の定数は第１の定数Ｋ１よりも大きい）以上上回るか、あるいは、ＥＣがある所定数または平均値を第２の定数以上上回る場合に、ブロックは不良であると考えられ、第２段階の試験を実施する必要がない。
【０１０３】
第２段階の試験を実施する一例は、プログラミングの直後にデータを読み戻して読み出されたデータをまだバッファキャッシュ５０４で利用可能な所望の正しいビットと比較する。図２０は、このような処理を記述するフローチャートである。ステップ８７０において、コントローラ２４４（図３）は、メモリチップ２１２（図３の）からデータを読み出すことを要求する。コントローラは、メモリチップ２１２から、ブロック全体、ワード線全体、またはワード線の一部のみを読み出すことができる。一実施形態では、コントローラ２４４は、図１９の試験に合格しなかったワード線（たとえば、ＰＬＣ≦平均値＋Ｋ１であったワード線）だけを読み出す。別の実施形態では、コントローラ２４４は、図１９の試験に合格しなかったワード線のメモリセルの一部だけを読み出す。一例では、メモリセルの一部は、ワード線ドライバーから最も遠いワード線に接続されたメモリセルの２５％である。別の実施形態では、コントローラ２４４は、メモリセルの最初および最後の２５％が読み出されるようにワード線の両端においてメモリセルを読み出す。他のサブセットも読み出され得る。ステップ８７２において、ステップ８７０で読み出されたデータはバッファキャッシュ５０４（図６）にあるデータと比較される。ステップ８７４において、コントローラ２４４は、メモリから読み出されるデータにおけるエラーの数を判断する。エラーの数が定数Ｋ２よりも大きければ、ブロックは試験に不合格になり、不良としてマークされる。メモリから読み出されるデータにおけるエラーの数がＫ２以下であれば、ブロックは試験に合格となる。Ｋ２の一例は７２ビットである。
【０１０４】
図２１は、第２段階の試験（図１８のステップ８０８）を実施する別の実施形態を記述するフローチャートである。図２１の処理において、システムはメモリセルの母集団に対する閾値電圧分布を特定し、これを期待される閾値電圧分布と比較する。その閾値電圧分布が期待される閾値電圧分布からかなりの量異なっている場合には、コントローラ２４４（図３）はブロックが不合格になりやすいと見なす。前述のように、一部の実施形態では、コントローラ２４４は、各状態においてほぼ等しい数のセルがある場合に均一な閾値電圧分布（たとえば、図９Ａ）を有するようにデータをスクランブルする。その実施形態では、システムは一部またはすべての状態のセルの数を特定し、カウント中のいずれかの状態のメモリセルの数が期待される安全領域の範囲を超える場合は、対応するブロックが疑わしいとしてフラグが立てられる。状態のいずれか１つまたはサブセットにあるセルのカウントが期待される安全領域から所定量以上逸脱する場合、システムはブロックが不合格になりやすいと見なす。図２１のステップ９０２において、コントローラ２４４は、ワード線（あるいはワード線の一部またはメモリセルの他の単位）に対する閾値電圧の分布を得る。一実施形態では、メモリチップ２１２は、コントローラ２１２によるコマンドに応じて自動的に閾値電圧分布を得るための内蔵論理を有しうる。ステップ９０２の閾値電圧分布は、選択ワード線の制御ゲートに１セットの増加する電圧を印加しながら読出し動作を実施することによって得られる。たとえば、第１の読出し動作は、０Ｖのワード線電圧で行なわれてもよい。その後の反復は０．０５Ｖまたはその他のステップサイズだけステップすることができる。各読出し動作に対して、システムは読出し動作中に導通して以前の読出し動作中に導通しなかったメモリセルの数を特定する。得られるデータは、図９Ａに似ているはずである。一実施形態では、閾値電圧分布はワード線ドライバーから最も遠いメモリセルに対してのみ特定される。
【０１０５】
図２１のステップ９０４において、コントローラ２４４（図３）は閾値電圧分布においてＭ個の最大点を探す。ここで、Ｍは、データ状態の総数である。一実施形態では、消去閾値電圧分布は０Ｖより低く、したがって、コントローラ２４４は０Ｖより高いＭ−１個の最大点のみを探す。ステップ９０６において、コントローラ２４４は、ステップ９０４で見つけられた最大点の間にあるＭ−１個の最小点を探す。状態０が負である場合は、Ｍ−１はＭ−２に置き換えられる。ステップ９０８において、コントローラ２４４は、２つの連続する最小点の間のメモリセルの数を計算する。したがって、ステップ９０８の終わりに、コントローラ２４４は各データ状態にあるメモリセルのおおよその（分布の間に重複が生じる場合があるので）数を知る。コントローラ２４４が均一な分布を実現するためにデータをスクランブルする場合は、各データ状態にあるメモリセルの数は、メモリセルの総数を状態の数で割った値にほぼ等しいはずである。一実施形態では、１ブロックのユーザーデータは、６４本の利用可能なワード線（＋２本のダミーワード線）およびユーザーデータに対する６５５３６本のビット線によって定義される領域内の約５００万個のメモリセルからなる。また、ブロックは、エラーの訂正及び他のメモリ管理のために使用される追加ビットを保持するための数千本のさらなるビット線とＮＡＮＤストリングとを含む。ステップ９１０において、コントローラ２４４は、合計（各データ状態におけるメモリセルの数）のいずれかが定数Ｋ３よりも大きいかどうかを判断する。６５５３６本のビット線と１６の状態とを有する前述の実施形態において、システムはいずれか１つのデータ状態が（６５５３６）×（１／１６）＋２Ｑより多いメモリセルを有するかどうかを検証し、ここで、Ｑは１９６〜２１６（実施例に応じて）である。Ｋ３に対しては個々の実施例に適した他の値も採用されうる。データ状態のいずれもがＫ３よりも大きいセルの合計を有していなければ、ブロックは試験に合格する（ステップ９１２）。データ状態のいずれかがＫ３よりも多数のセルを有していれば、ブロックは試験に不合格になる（ステップ９１４）。別の代替では、図２１の処理は、第２段階の試験よりもむしろ第１段階の試験として採用され得る。
【０１０６】
閾値電圧分布全体を取得してあらゆるデータ状態を試験するには長い時間を要し得る。第２段階の試験を実施するより速い方法は、１つのデータ状態または２つのデータ状態（または別のサブセット）のみを調べることである。外側のデータ状態（たとえば、図９の例では状態０または状態Ｆ）のメモリセルの数を読み出そうとするだけであれば、１回の読出し動作を行なうだけでよい。たとえば、コントローラ２４４が消去状態に起因するメモリセルの数を探しているだけであれば、選択ワード線にＶｒ１を印加する１回の読出し動作を実施すればよいる。コントローラ２４４が状態Ｆを調べているだけであれば、選択ワード線にＶｒ１５を印加する１回の読出し動作を実施すればよい。図２２は、このような実施形態を記述するフローチャートであり、第１または第２段階の試験を実施における代替案である。ステップ８４０において、コントローラ２４４（図３）は、選択ワード線にＶｒ１またはＶｒ１５を印加する読出し動作を実施することによって外側の状態（たとえば、状態０または状態Ｆ、外側の状態は最低および最高の閾値電圧分布である）の１つからデータを読み出すようメモリチップ２１２（図３）に指示する。そのデータ状態にあるメモリセルの数は、メモリチップ２１２からコントローラ２４４に送られる。ステップ８４２において、コントローラ２４４は、その外側の状態にあるメモリセルの数が定数Ｋ３よりも大きいかどうかを判断する。大きくなければ、ブロックは試験に合格する（ステップ８４４）。試験された状態にあるメモリセルの数がＫ３よりも大きければ、ブロックは試験に不合格になる（ステップ８４６）。コントローラは、最高の状態にあるセルの数を計算するために導通セル（読出しから「０」に戻る）の数をカウントし得るが、ＷＬにＶｒ１を印加したときに消去状態にあるセルの数を得るために非導通セル（読出しから「１」に戻る）の数もカウントし得る。
【０１０７】
一実施形態では、ブロックが不合格になりやすいことを予測するシステムは、データを２つの状態のみで記憶する１つまたは複数のメモリアレイ（２進記憶装置）とともに使用される。その場合、ステップ８４０は消去状態にあるビット数を読み出すステップを含んでいてもよく、あるいはステップ８４０は最高のプログラム状態または最高のプログラム状態のサブセットにあるセル数を読み出すステップを含んでいてもよい。たとえば、消去状態が０Ｖを下回る閾値電圧を有し、かつプログラム状態が正の閾値電圧（またはＰボルトよりも大きい閾値電圧、ここでＰは０よりも大きい正の数）を含む場合に、ステップ８４０で０Ｖを選択ワード線に印加してもよい。高いプログラム状態の連続的サブセットの例は、全部で１６状態があると仮定して、３つの最高のプログラミング状態にあるセルの数をＶｒ１３において読み出してチェックするものである。この場合、メモリセルの数の期待値は、これらのセルがスクランブラを用いて均一にプログラムされる場合、３×Ｋ１に等しい。
【０１０８】
第１または第２段階の試験を実施するもう１つの実施形態である図２３の処理は、最低および最高の両方の状態を試験するステップを含む。ステップ９７０において、コントローラ２４４は最低状態（たとえば、状態０）にあるメモリセルの数を読み出すようメモリチップ２１２に指示する。ステップ９７２において、コントローラ２４４は最高状態（たとえば、図９の例では状態Ｆ）にあるメモリセルの数を読み出すようメモリチップ２１２に指示する。ステップ９７４において、コントローラ２４４は最低状態または最高状態のいずれかにあるメモリセルの数がＫ３よりも大きいかどうかを判断する。大きくなければ、ブロックは試験に合格する（ステップ９７６）。最高状態または最低状態のいずれかにあるメモリセルの数がＫ３よりも大きければ、ブロックは試験に不合格となる（ステップ９７８）。メモリアレイがデータを２つの状態のみで記憶する実施形態では、ステップ９７０および９７２の機能はいずれも選択ワード線に０Ｖを印加することによって達成されうるので、これらの機能は１ステップとして実施され得る。別の実施形態では、（図２１に記載する方法に従って）外側の各状態に起因するメモリセルの数がある閾値Ｋ４を下回る場合に、外側の各状態をチェックするステップを含む。これがある閾値Ｋ４を下回ることが判明した場合には、ブロックは試験に不合格であると判断される。本発明に関する別の実施形態は、（図２１に記載する方法に従って）外側の各状態に起因するセルの数が、たとえば、ある閾値Ｋ４を上回り、かつある閾値Ｋ５を下回る安全領域内にあるかどうかを、各外側状態についてチェックする。セルの数が安全領域内にある場合は、ブロックが試験に合格したことが宣言され、そうでなければブロックが試験に不合格になったと判断される。なお、最低状態および最高状態は、図２２に関して述べた外側の状態である。図２２の処理と図２３の処理との違いは、図２２の処理が外側の状態の一方のみをチェックするのに対して、図２３の処理は外側の状態の両方をチェックすることである。
【０１０９】
図２４は、不合格になりやすいブロックをチェックして、これらのブロックを管理する（図１１のステップ６３８）別の実施形態である。図２４の処理と図１８の処理との１つの違いは、図２４の処理が一度にブロックの一部に作用するだけであるのに対して、図２１の処理は各段階の試験においてブロック全体に作用することである。ステップ１０００において、第１段階の試験がブロックの一部に対して実施される。たとえば、第１段階の試験は、１本のワード線のみに対して実施される。ブロックの他の部分は１本のワード線の代わりに使用されうる。ステップ１００８において、ブロックの試験済み部分が試験に合格であるか、それとも不合格であるかが判断される。ブロックの一部が試験に合格していれば、ステップ１００２において、試験を必要とする部分がまだほかにあるかどうかが判断される。なければ、図２４の処理は終了し（ステップ１００６）、ブロックは成功裏にプログラムされ、ブロックは不良としてマークされる必要はない。試験を必要とするブロックの部分がほかにあれば、ブロックの次の部分がステップ１００４において選択され、第１段階の試験がブロックの新たな部分に対して実施されるように処理はステップ１０００にループバックする。
【０１１０】
ブロックの一部が第１段階の試験に不合格になると（ステップ１００８）、ステップ１０１０において第２段階の試験がブロックのその部分に対して実施される。図２０〜２３の処理は、ステップ１０１０において第２段階の試験として採用されうる。ブロックの一部が第２段階の試験に合格すると（ステップ１０１２）、処理はブロックの新たな部分を検討するためにステップ１００２にループする。ブロックの一部が試験に不合格になると（ステップ１０１２）、ブロックはステップ１０１４において不良としてマークされる。追加でブロックの部分が試験される必要はない。他の実施形態では、ブロックの不良の程度を判断して、不良である複数のワード線と複数の部分とを有する一定のブロックのみが不良としてマークされるように、ブロックの他の部分が試験され得る。ステップ１０１６では、ブロックに記憶されたデータが新たなブロックに再プログラムされる。ステップ１０１８において、コントローラ２４４が不良ブロックの数をカウントする。ステップ１０２０において、コントローラ２４４が、ステップ１０２０における不良ブロック数のカウントに基づいて第１および／または第２段階の試験に使用される閾値を（オプションとして）調整する。調整される閾値の例は、前述のＫ１、Ｋ２、およびＫ３を含む。別の実施形態では、ステップ１０２０の後に図２４に（あるいは、ステップ８１８の後に図１８に）１つのステップを追加することを含み、そこでフリーブロックの数がカウントされて新たな不良ブロックを検討する。フリーブロックの数がある閾値よりも小さければ、不揮発性メモリ（たとえば、メモリアレイ２００）は満杯であると考えられ、一部のデータがそこから消去されるまで新たなデータをそこにプログラムすることはできない。これは、新たなデータを記憶デバイスにプログラムする前にのみフリーブロックの数をチェックする先行技術と異なる。
【０１１１】
図２４の一実施例では、対象のブロックの一部が共通ワード線に接続されたメモリセルを含む。コントローラは、各ワード線に対して第１段階の試験を実施する。ワード線が第１段階の試験に不合格になると、そのワード線は図２４に記述するように第２段階の試験を受ける。
【０１１２】
図２５は、ブロックの一部がワード線であるときブロックの一部に対して第１段階の試験を実施する（図２４のステップ１０００）一実施形態を記述するフローチャートである。動作中の現在のワード線が動作すべきブロックにおける第１のワード線である場合には（ステップ１１０２）、コントローラ２４４は、ステップ１１０４において（前述のように）各ワード線に対して１つまたは複数のプログラムループカウントＰＬＣを得る。ステップ１１０６において、コントローラ２４４は、ステップ１１０４で得られたプログラムループカウントＰＬＣに対する平均値を計算する。ステップ１１０８において、コントローラ２４４は、現在のワード線に対するプログラムループカウントＰＬＣを平均値と比較する。ステップ１１１０において、現在のワード線に対するプログラムループカウントＰＬＣが平均値よりもＫ１だけ大きければ（たとえば、ＰＬＣ＞平均値＋Ｋ１）、ブロックは第１段階の試験に不合格となる（ステップ１０１４）。現在のワード線に対するプログラムループカウントＰＬＣが平均値＋Ｋ１よりも大きくなければ（ステップ１１１０）ブロックは合格となる。
【０１１３】
図２６は、不合格になりやすいブロックをチェックして管理する処理（図１１のステップ６３８）の別の実施形態を記述するフローチャートを示す。ステップ１１００において、コントローラ２４４は、ブロック（またはブロックの他の部分）内の各ワード線に対して１つまたは複数のプログラムループカウントＰＬＣを得る。プログラムループカウントＰＬＣを得るための前述の様々な実施形態のいずれもが採用され得る。ステップ１１０２において、ステップ１１００で得られたプログラムループカウントＰＬＣの平均値が計算される。ステップ１１０４において、第１のワード線が選択される。ステップ１１０６において、コントローラ２４４は、選択された現在のワード線がワード線の最大数よりも大きいかどうかを判断する。最大数よりも大きければ、ブロックは成功裏にプログラムされている（ステップ１１１０）。したがって、不良としてマークされるブロックはない。
【０１１４】
選択された現在のワード線がワード線の最大数以下であれば（ステップ１１０６）、ステップ１１０８において、現在のワード線に対するプログラムループカウントＰＬＣは、ステップ１１００において得られたすべてのプログラムループカウントの平均値と比較される。現在のワード線に対するプログラムループカウントＰＬＣが平均値よりもＮ１以上大きければ（たとえば１０）、ブロックはステップ１１１２において不良としてマークされる。ステップ１１１４において、上記ブロックに対してプログラムされるように選択されたデータは新たなブロックに再プログラムされる。ステップ１１１６において、コントローラ２４４は、不良ブロックの数をカウントする。ステップ１１１８において、コントローラ２４４は、不良ブロックのカウントされた数に基づいて、必要に応じて、閾値を調整する。閾値の例は、Ｎ１、Ｎ２、Ｎ３およびステップ１１３２（後述の）において使用される任意の閾値を含む。ステップ１１１６および１１１８はオプションである。
【０１１５】
ステップ１１１０において、現在のワード線に対するＰＬＣが平均ＰＬＣ（ステップ１１０２参照）＋Ｎ１よりも大きくないと判断されれば、ステップ１１３０において、現在のワード線に対するＰＬＣが平均ＰＬＣ（ステップ１１０２参照）＋Ｎ２よりも大きいかどうかが判断される。Ｎ２の一例は６である。現在のワード線に対するＰＬＣがＮ２＋平均値よりも大きければ、ブロックは疑いがあるとしてマークされ、ステップ１１３２において、コントローラ２４４は現在のワード線に対するデータを読み出してこれをバッファキャッシュ５０４内のデータと比較する。ステップ１１３２における比較が不合格になると（ステップ１１３４）、ブロックはステップ１１１２において不良としてマークされ、処理はステップ１１１４まで続く。一例では、読み出されたデータとバッファキャッシュ５０４内のデータとの間のエラービットの数が７２以上であればステップ１１３２の比較が不合格になる。エラービットの数に対しては他の閾値も採用され得る。ステップ１１３２の比較が合格すると（たとえば、エラーの数が７２よりも小さい場合）、次のワード線が選択されて（ステップ１１３６）処理がステップ１１０６にループバックする。一部の実施形態では、ワード線に対するビットのすべてを試験するのではなく、コントローラ２４４はワード線ドライバーから最も遠いワード線に接続されたメモリセルの一部（たとえば、２５％）に対するデータのみを試験する。
【０１１６】
ステップ１１３０において、コントローラ２４４は現在のワード線に対するＰＬＣがＮ２＋平均値よりも大きくないと判断すれば、その後、ステップ１１５０において、コントローラ２４４は、最低状態にあるデータを読み出して最低状態（たとえば、状態０）にあるメモリセルの数を判断する。ステップ１１５２において、コントローラ２４４は、最高状態にあるデータを読み出して最高状態（たとえば、１６状態の場合は状態「Ｆ」）にあるメモリセルの数を判断する。ステップ１１５４において、最低状態または最高状態のいずれかにあるメモリセルの数がＫ３よりも大きいかどうかが判断される。Ｋ３よりも大きければ、処理はステップ１１３２まで続く。Ｋ３よりも大きくなければ、処理はステップ１１３６まで続く。一部の実施形態では、ステップ１１５０〜１１５４は、ワード線ドライバーから最も遠いワード線に接続されたメモリセルの一部（たとえば、２５％）に対するデータのみに作用する。
【０１１７】
図２６の処理は、第１段階の試験に対する２つの閾値を含み、ブロックが閾値の１つに不合格になると（ステップ１１１０参照）、ブロックは第２段階の試験を実施せずに不良として表示される。図２６におけるもう１つの違いは、３段階の試験があることである。第１段階の試験はＰＬＣを比較するステップを含み、第２段階の試験は最低および最高状態にあるメモリセルの数を読み出すステップを含み、第３段階の試験はプログラミングの後の読出しデータをバッファキャッシュ内のデータと比較するステップを含む。あるいは、図２６の処理は、２段階の試験であると考えることもでき、ここでは、第１段階の試験はＰＬＣを比較するステップ（ステップ１１０８）と最低状態および最高状態にあるメモリセルの数が閾値より多く逸脱するかどうかを判断するステップ（ステップ１１５０〜１１５４）を含み、第２段階はステップ１１３２においてデータを比較するステップを含む。
【０１１８】
前述のように、コントローラ２４４は、性能データに基づいて不合格になりやすいブロックを識別する。前述の性能データに加えて、他の性能データも採用されうる。たとえば、プログラミング電流、読出し電流、ＥＣＣ反復数、低速プログラミングメモリセルの数、オーバープログラムされたメモリセルの数、および他のパラメータも、第１段階の試験または第２段階の試験のいずれにも採用されうる。
【０１１９】
前述の技術の一実施形態は、第１データを第１のセットの不揮発性記憶素子にプログラムするステップと、（プログラミングを成功裏に終了した後に）第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するステップと、（第１のセットの不揮発性記憶素子が不合格になりやすい場合に）第１のデータを第１のセットの不揮発性記憶素子と異なる第２のセットの不揮発性記憶素子に再プログラムするステップとを含む。
【０１２０】
一実施形態は、第１のセットの不揮発性記憶素子に記憶されたデータを変更する（たとえば、プログラミング、消去など）ステップと、（データを変更した後に）第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために第１の不揮発性記憶素子に対して第１の試験を実施するステップと、（第１の不揮発性記憶素子が第１の状態に起因して第１の試験に不合格になる場合に）第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために第１のセットの不揮発性記憶素子に対して第２の試験を実施するステップと、（第１のセットの不揮発性記憶素子が第２の試験に不合格になる場合に）第１のセットの不揮発性記憶素子を不良としてマークするステップとを含む。
【０１２１】
一実施形態は、メモリシステムの特定のワード線に接続された不揮発性記憶素子に記憶されたデータを変更するステップを含む。データを変更するステップは、メモリ動作の複数回の反復を実施するステップと、メモリ動作が実施される反復回数を示す特定ワード線に接続された不揮発性記憶素子に対する特定メモリ動作ループカウンタを維持するステップとを含む。処理は、さらに、メモリシステムに対する他のメモリループカウンタに基づいて特定メモリループカウンタをデータと比較するステップと、比較するステップに基づいて特定ワード線に接続された不揮発性記憶素子が不合格になりやすいかどうかを判断するステップとを備える。
【０１２２】
一実施形態は、第１データをメモリシステムの特定ワード線に接続された不揮発性記憶素子にプログラムするステップを含む。メモリシステムはコントローラおよびメモリ回路を含む。メモリ回路はメモリアレイおよびサポート回路を含む。メモリアレイは不揮発性記憶素子のブロックを含む。各ブロックは複数のワード線を含む。特定ワード線は特定ブロック内にある。プログラミングは、プログラミング動作の複数回の反復を実施するステップと、プログラミング動作が実施された反復回数を示すプログラムループカウンタを維持するステップとを含む。方法は、さらに、閾値電圧の特定区間内にそれらの閾値電圧を有する特定ワード線に接続された不揮発席記憶素子の数を特定するコントローラを含む。処理は、さらに、特定区間内にそれらの閾値電圧を有する特定ワード線に接続された不揮発性記憶素子の特定された数に基づいて特定ブロックが不良であるかどうかを判断するコントローラを含み、特定ブロックが不良であるかどうかの判断はコントローラによって実施され、特定ブロックが不良であると判断されると第１のデータがメモリシステムの異なるブロックの異なるワード線に接続された不揮発性記憶素子にプログラムされる。
【０１２３】
一実施形態は、複数の不揮発性記憶素子を含むメモリ回路とメモリ回路と通信するコントローラとを含む。コントローラは、第１のセットの不揮発性記憶素子の記憶条件を変化させる。記憶条件を変化させた後に、コントローラは、第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために、第１のセットの不揮発性記憶素子に対して第１の試験を実施する。第１のセットの不揮発性記憶素子が第１の状態に起因して第１の試験に不合格になると、コントローラは第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断するために第１のセットの不揮発性素子に対して第２の試験を実施する。第１のセットの不揮発性記憶素子が第２の試験に不合格になれば、コントローラは第１のセットの不揮発性記憶素子を不良としてマークする。
【０１２４】
一実施形態は、複数の不揮発性記憶素子を含むメモリ回路とメモリ回路と通信するコントローラとを含む。コントローラは、第１のデータを第１のセットの不揮発性記憶素子にプログラムする。プログラミングが成功裏に終了すると、コントローラは、第１のセットの不揮発性記憶素子が不合格になりやすいかどうかを判断する。第１のセットの不揮発性記憶素子が不合格になりやすい場合には、コントローラは、第１の不揮発性記憶素子とは異なる第２のセットの不揮発性記憶素子に第１のデータを再プログラムする。
【０１２５】
本発明の前述の詳細な記述は、図示および説明を目的として提示されている。これは、本発明を網羅することや本発明を開示された正確な形態に限定することを目的とするものではない。上記の教示を考慮すると、多くの修正形態および変形形態が可能である。記載された実施形態は、本発明の原理およびその実際的応用を最もよく説明し、それによって、考えられる具体的な使用に適した様々な実施形態および様々な修正形態で当業者が本発明を最もよく利用しうるように選定された。本発明の範囲は本明細書に添付される特許請求の範囲によって規定されるよう意図される。
【図１】
2013504836.tif 000004
【図２】
2013504836.tif 000005
【図３】
2013504836.tif 000006
【図４】
2013504836.tif 000007
【図５】
2013504836.tif 000008
【図６】
2013504836.tif 000009
【図７】
2013504836.tif 000010
【図８Ａ】
2013504836.tif 000011
【図８Ｂ】
2013504836.tif 000012
【図８Ｃ】
2013504836.tif 000013
【図８Ｄ】
2013504836.tif 000014
【図８Ｅ】
2013504836.tif 000015
【図８Ｆ】
2013504836.tif 000016
【図９Ａ】
2013504836.tif 000017
【図９Ｂ】
2013504836.tif 000018
【図１０】
2013504836.tif 000019
【図１１】
2013504836.tif 000020
【図１２】
2013504836.tif 000021
【図１３】
2013504836.tif 000022
【図１４】
2013504836.tif 000023
【図１５】
2013504836.tif 000024
【図１６】
2013504836.tif 000025
【図１７】
2013504836.tif 000026
【図１８】
2013504836.tif 000027
【図１９】
2013504836.tif 000028
【図２０】
2013504836.tif 000029
【図２１】
2013504836.tif 000030
【図２２】
2013504836.tif 000031
【図２３】
2013504836.tif 000032
【図２４】
2013504836.tif 000033
【図２５】
2013504836.tif 000034
【図２６】
2013504836.tif 000035
【国際調査報告】
2013504836.tif 000036
2013504836.tif 000037