(57)【要約】  不揮発性記憶素子の集合がデータの集合を記憶するためにプログラミング処理を受ける。プログラミング処理の間、不揮発性記憶素子が適切なデータを記憶するためにその目標状態に到達したかどうかを決定するために１又は複数の検証動作が実行される。プログラミングを続行するかどうか、あるいはプログラミングが成功であるかどうかについての判断は、不揮発性記憶素子の重複するグループが、適切にプログラミングされていない不揮発性記憶素子の閾値数未満を有するかどうかに基づいて下される。
2010511263.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶装置をプログラミングする方法であり、
不揮発性記憶素子の集合が不揮発性記憶素子の重複するグループを含み、不揮発性記憶素子の前記集合に、プログラミング処理の一部としてプログラミングを受けさせる工程と、
各グループが、適切にプログラミングされていない不揮発性記憶素子の閾値数未満を有するかどうかを試験する試験工程と、
各グループが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有するかどうかに基づいて、前記プログラミング処理を進めるプログラミング工程、
を備える方法。
【請求項２】
前記プログラミング工程が、
前記グループの少なくとも１つが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有さない場合に、不揮発性記憶素子の前記集合に追加のプログラミングを受けさせるステップと、
前記グループの全てが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有する場合に、前記プログラミング処理を停止するステップ、
を備える請求項１に記載の方法。
【請求項３】
前記プログラミング工程が、
前記グループの全てが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有する場合に、前記プログラミング処理が成功したと判断するステップと、
前記グループの少なくとも１つが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有さない場合に、前記プログラミング処理が不成功であったと判断するステップ、
を備える請求項１に記載の方法。
【請求項４】
前記試験工程が、
適切にプログラミングされていなかった特定のグループの冗長な不揮発性記憶素子の第１の数を判断するステップと、
適切にプログラミングされていなかった前記特定のグループの元の不揮発性記憶素子の第２の数を判断するステップと、
前記第１の数と前記第２の数の合計を前記閾値数と比較するステップ、
を備える請求項１に記載の方法。
【請求項５】
前記試験工程が、
適切にプログラミングされていなかった特定のグループの冗長な不揮発性記憶素子の第１の数を判断するステップと、
適切にプログラミングされていなかった前記特定のグループの第２の半分の元の不揮発性記憶素子の第２の数を判断するステップと、
第３の数が、適切にプログラミングされていなかった前記特定のグループの第１の半分の元の不揮発性記憶素子を表すとともに、前のグループを処理するときに判断されており、前記第１の数、前記第２の数、及び前記第３の数の合計を生成するステップと、
前記合計を前記閾値数と比較するステップ、
を備える請求項１に記載の方法。
【請求項６】
前記不揮発性記憶素子がセクタ単位でデータを記憶し、
各グループがセクタよりも大きく、少なくとも２つのセクタの部分にわたる、
請求項１に記載の方法。
【請求項７】
前記試験工程が、
（ａ）適切にプログラミングされていない第１の不揮発性記憶素子を検出するために特定のグループでバイナリ検索を実行するステップと、
（ｂ）適切にプログラミングされていない不揮発性記憶素子のカウントを更新するステップと、
（ｃ）前記第１の不揮発性記憶素子に、それが再度カウントされないようにタグを付けるステップと、
適切にプログラミングされていない不揮発性揮発素子の数を判断するためにステップ（ａ）、（ｂ）、及び（ｃ）を繰り返すステップ、
を備える請求項１に記載の方法。
【請求項８】
前記試験工程が、
（ａ）適切にプログラミングされていない第１の不揮発性記憶素子を検出するために特定のグループでバイナリ検索を実行するステップと、
（ｂ）適切にプログラミングされていない不揮発性記憶素子のカウントを更新するステップと、
（ｃ）前記第１の不揮発性記憶素子に、それが再度カウントされないようにタグを付けるステップと、
（ｄ）前記特定のグループのための、適切にプログラミングされていない全ての不揮発性記憶素子がカウントされるまでステップ（ａ）、（ｂ）、及び（ｃ）を繰り返すステップ、
を備える請求項１に記載の方法。
【請求項９】
前記不揮発性記憶素子が、フラッシュメモリ素子ごとにデータの複数のビットを記憶するフラッシュメモリ素子であり、
それぞれのフラッシュメモリ素子上のデータの各ビットが別のページにあり、
各ページがデータの複数のセクタを有し、
各グループがセクタよりも大きく、少なくとも２つのセクタの部分にわたる、
請求項１に記載の方法。
【請求項１０】
前記不揮発性記憶素子がフラッシュメモリ素子であり、
不揮発性記憶素子の前記集合にプログラミングを受けさせる前記工程が、前記フラッシュメモリ素子の制御ゲートに電圧パルスを印加するステップを含み、
前記試験工程が、グループごとにどのくらいのフラッシュメモリ素子が、それぞれの目標レベルに達していなかったそれぞれの閾値電圧を有するのかを判断するステップを含む、
請求項１に記載の方法。
【請求項１１】
不揮発性記憶システムであり、
複数の不揮発性記憶素子と、
前記不揮発性記憶素子と通信する１又は複数の電圧生成回路であり、前記複数の不揮発性記憶素子に検証電圧を提供する前記１又は複数の電圧生成回路と、
前記不揮発性記憶素子と通信する複数の検出回路であり、前記不揮発性記憶素子の状態を検出する検出回路と、
前記検出回路と通信する複数のデータ処理回路と、
前記不揮発性記憶素子の重複する各グループが適切にプログラミングされていない不揮発性記憶素子の閾値数未満を有するかどうかを判断し、前記１つ又は複数の電圧生成回路と前記データ処理回路と通信する制御回路、を備え、
前記データ処理回路は、前記不揮発性記憶素子が適切にプログラミングされていたかどうかに関する表示を前記制御回路に提供する、
不揮発性記憶システム。
【請求項１２】
前記制御回路がフラグラインを含み、
前記複数のデータ処理回路が、それぞれの不揮発性記憶素子が適切にプログラミングされていたかどうかを示すために前記フラグラインに接続される、
請求項１１に記載の不揮発性記憶システム。
【請求項１３】
前記制御回路がマルチラインフラグバスを含み、
前記複数のデータ処理回路が、それぞれの不揮発性記憶素子が適切にプログラミングされていたかどうかを示すために前記フラグバスの１つのラインにそれぞれ接続される、
請求項１１に記載の不揮発性記憶システム。
【請求項１４】
前記制御回路が第１のレジスタと、第２のレジスタと、第３のレジスタとを含み、
前記制御回路が、前記第１のレジスタ、前記第２のレジスタ、及び前記第３のレジスタに接続される入力の集合を有する加算回路をさらに含み、
前記複数の不揮発性記憶素子が、元データの不揮発性記憶素子と、冗長な不揮発性記憶素子とを含み、
前記第３のレジスタが冗長な不揮発性記憶素子のカウントを記憶し、
前記第１のレジスタが、前記重複するグループの内の特定のグループの第１の半分のカウントを記憶し、
前記第２のレジスタが、前記重複するグループ内の前記特定のグループの第２の半分のカウントを記憶する、
請求項１１に記載の不揮発性記憶システム。
【請求項１５】
前記複数の不揮発性記憶素子が、不揮発性記憶素子及び冗長な不揮発性記憶素子の元データを含み、
前記制御回路が前記不揮発性記憶素子のグループのために適切にプログラミングされていなかった不揮発性記憶素子の合計を計算し、前記合計がそれぞれのグループのために適切にプログラミングされていなかった不揮発性記憶素子の元データの数と、冗長な不揮発性記憶素子の数とをそれぞれ含み、前記制御回路が各合計を限界と比較する、
請求項１１に記載の不揮発性記憶システム。
【請求項１６】
前記制御回路が、前記グループの内の少なくとも１つが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有していないと決定する場合に、前記制御回路が前記不揮発性記憶素子のために追加のプログラミングを行わせ、
前記不揮発性記憶素子の前記重複するグループが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満をそれぞれ有すると前記制御回路が判断すると、前記不揮発性記憶素子のためのプログラミングが完了する、
請求項１１に記載の不揮発性記憶システム。
【請求項１７】
前記制御回路は、
前記グループの全てが適切にプログラミングされていない不揮発性記憶素子の前記閾値未満を有する場合に、前記不揮発性記憶素子のプログラミングが成功したと判断し、
前記グループの少なくとも１つが、適切にプログラミングされていない不揮発性揮発素子の前記閾値数未満を有さない場合に、前記不揮発性記憶素子のプログラミングが不成功であったと判断する、
請求項１１に記載の不揮発性記憶システム。
【請求項１８】
前記制御回路は、
適切にプログラミングされていない第１の不揮発性記憶素子を検出するために特定のグループでバイナリ検索を実行し、適切にプログラミングされていない不揮発性記憶素子のカウントを更新し、前記第１の不揮発性記憶素子に、それが再びカウントされないようにタグを付け、前記バイナリ検索を繰り返すことによって、前記不揮発性記憶素子の前記重複するグループが適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満をそれぞれ有すると判断する、
請求項１１に記載の不揮発性記憶システム。
【請求項１９】
前記不揮発性記憶素子がＮＡＮＤフラッシュメモリ素子である請求項１１に記載の不揮発性記憶システム。
【請求項２０】
前記不揮発性記憶素子がマルチ状態フラッシュメモリ素子である請求項１１に記載の不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶装置の技術に関する。
【０００２】
半導体メモリ装置は、様々な電子装置に使用されることが一般的になってきている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピュータ、非モバイルコンピュータ及び他の装置の中に使用されている。電気的消去・プログラム可能型読取専用メモリ（ＥＥＰＲＯＭ）と、フラッシュメモリは、最も普及している不揮発性半導体メモリの１つである。
【０００３】
ＥＥＰＲＯＭとフラッシュメモリの多くのタイプは、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されたフローティングゲートを利用している。フローティングゲートは、ソース領域とドレイン領域の間に配置されている。制御ゲートは、フローティングゲート上に設けられており、そのフローティングゲートから絶縁されている。トランジスタの閾値電圧は、フローティングゲート上に保持される電荷量によって制御される。即ち、そのソースとドレインの間の導通を可能にするためにトランジスタをオンにする前に制御ゲートに印加すべき電圧の最小量は、そのフローティングゲート上の電荷レベルにより制御される。
【０００４】
フラッシュメモリシステムの一例では、ＮＡＮＤ型の構造を使用する。ＮＡＮＤ型フラッシュメモリ構造では、２つの選択ゲートの間に複数のトランジスタが直列に配置されている。直列のトランジスタと選択ゲートは、ＮＡＮＤストリングと呼ばれる。図１は、１つのＮＡＮＤストリングを示す上面図である。図２は、その等価回路である。図１および図２に示すＮＡＮＤストリングは、直列の４つのトランジスタ１００、１０２、１０４、１０６を備え、第１の（又はドレイン）選択ゲート１２０と第２の（又はソース）選択ゲート１２２との間に挟まれている。選択ゲート１２０は、ビット線コンタクト１２６を介してＮＡＮＤストリングをビット線１２６に接続する。選択ゲート１２２は、ＮＡＮＤストリングをソース線１２８に接続する。選択ゲート１２０は、選択線ＳＧＤを介して制御ゲート１２０ＣＧに適切な電圧を印加することによって制御される。選択ゲート１２２は、選択線ＳＧＳに適切な電圧を印加することによって制御される。トランジスタ１００、１０２、１０４、１０６のそれぞれは、制御ゲートと浮遊ゲートを有する。例えば、トランジスタ１００は、制御ゲート１００ＣＧと浮遊ゲート１００ＦＧを有する。トランジスタ１０２は、制御ゲート１０２ＣＧと浮遊ゲート１０２ＦＧとを有する。トランジスタ１０４は、制御ゲート１０４ＣＧと浮遊ゲート１０４ＦＧを有する。トランジスタ１０６は、制御ゲート１０６ＣＧと浮遊ゲート１０６ＦＧを有する。制御ゲート１００ＣＧは、ワード線ＷＬ３に接続されている。制御ゲート１０２ＣＧは、ワード線ＷＬ２に接続されている。制御ゲート１０４ＣＧは、ワード線ＷＬ１に接続されている。制御ゲート１０６ＣＧは、ワード線ＷＬ０に接続されている。
【０００５】
図１および図２では、ＮＡＮＤストリング内に４つのメモリセルを示しているが、４つのトランジスタの使用する構成は、一例であることに留意されたい。ＮＡＮＤストリングは、４つ未満のメモリセルを有していてもよく、又は、４つを超えるメモリセルを有していてもよい。例えば、一部のＮＡＮＤストリングは、８つのメモリセル、１６のメモリセル、３２のメモリセル、６４のメモリセル、１２８のメモリセルなどを含むことができる。本明細書における説明では、ＮＡＮＤストリング内のメモリセルの数は、いかなる特定の数にも限定されない。
【０００６】
ＮＡＮＤ構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのＮＡＮＤストリングを含んでいる。各ＮＡＮＤストリングは、選択線ＳＧＳによって制御されるソース選択ゲートによってソース線と接続され、選択線ＳＧＤによって制御されるドレイン選択ゲートによってそれらの結合されたビット線と接続されている。ビット線コンタクトを介してそれらのビット線と接続されている各ビット線とそれぞれのＮＡＮＤストリングは、メモリセルのアレイを含む列を構成している。概して、ビット線は、ワード線と直行する方向においてＮＡＮＤストリングの上に伸びており、１つ以上の検知増幅器と接続されている。ワード線（ＷＬ３、ＷＬ２、ＷＬ１およびＷＬ０）は、アレイの行を備えている。
【０００７】
各メモリセルは、データ（アナログデータまたはデジタルデータ）を記憶することが可能である。１ビットのデジタルデータ（バイナリメモリセルとして参照されるデータ）を記憶する場合には、このメモリセルの可能な閾値電圧の範囲は２つの範囲に分割され、これらの範囲に論理データ「１」と「０」が割り当てられる。ＮＡＮＤタイプのフラッシュメモリの一例では、この閾値電圧は、メモリセルが消去された後では負の値となり、論理「１」と定義される。プログラミング後の閾値電圧は、正の値となり、論理「０」と定義される。閾値電圧が負の状態で制御ゲートに０ボルトを印加することによって読み出しが試みられた場合、メモリセルはオンとなり、論理「１」が記憶されていることを示す。閾値電圧が正の状態で制御ゲートに０ボルトを印加することによって読み出しが試みられた場合、メモリセルはオンにならず、論理「０」が記憶されていることを示す。
【０００８】
メモリセルはまた、複数のレベルの情報（複数の状態のメモリセルとして参照された情報）を記憶することが可能である。複数のレベルのデータを記憶する場合、可能な閾値電圧の範囲は、このデータのレベルの数に分割される。例えば、４つのレベルの情報を記憶する場合（２ビットのデータ）、４つの閾値電圧範囲が存在し、これらがデータ値「１１」、「１０」、「０１」、「００」に割り当てられる。ＮＡＮＤタイプのメモリの一例では、消去動作の後の閾値電圧は負の値となり、論理「１１」と定義される。正の閾値電圧は「１０」、「０１」、「００」という状態に対して用いられる。８つのレベルの情報が記憶される（３ビットのデータ）場合、データ値「０００」、「００１」、「０１０」、「０１１」、「１００」、「１０１」、「１１０」、及び「１１１」に割り当てられる８つの閾値電圧範囲がある。メモリセルにプログラミングされるデータとセルの閾値電圧レベルの間の具体的な関係は、セルに採用されるデータ符号化方式によって決まる。例えば、両方ともその全体を参照することにより本明細書に組み込まれる米国特許第６，２２２，７６２号及び米国特許出願公報第２００４／０２５５０９０号は、マルチ状態フラッシュメモリセルのための多様なデータ符号化方式を説明している。一実施形態においては、浮遊ゲートの閾値電圧が誤ってその近傍の物理状態にシフトすると、1つのビットだけが影響を受けるように、グレーコード割り当てを使用してデータ値が閾値電圧範囲に割り当てられる。
【０００９】
ＮＡＮＤタイプのフラッシュメモリおよびそれらの動作に関連する例は、以下の米国出願／特許出願に記載されている。米国特許第５，５７０，３１５号、米国特許第５，７７４，３９７号、米国特許第６，０４６，９３５号、米国特許第６，４５６，５２８号、米国公開公報第ＵＳ２００３／０００２３４８号、米国公開公報第ＵＳ２００６／０１４００１１号。これらの引用文献は、その全体を参照することにより本明細書に援用される。本明細書では、他のタイプの不揮発性記憶素子と同様に、ＮＡＮＤを加えた他のタイプのフラッシュメモリにも利用できる技術を開示する。
【００１０】
フラッシュメモリセルをプログラミングすると、プログラム電圧が制御ゲートに印加され、ビットラインが接地される。フラッシュメモリセルのチャネルと浮遊ゲート間の電圧差のため、浮遊ゲート下のチャネル領域からの電子は浮遊ゲートに注入される。電子が浮遊ゲート内に蓄積すると、浮遊ゲートは負に帯電され、メモリセルの閾値電圧が引き上げられる。
【００１１】
いくつかの実装形態では、プログラミング電圧は一連の電圧パルスとして印加される。各プログラミングパルスの後には、メモリセルが所望の状態にプログラミングされたかどうかを判断するために１つ又は複数の検証動作が続く。
【００１２】
特にＮＡＮＤアーキテクチャのフラッシュメモリ素子で、マルチ状態のメモリセルを含む現代のフラッシュメモリ素子は、ブロック及びページ単位で配列される。ブロックは消去の単位であり、単一の消去動作で同時に消去されるメモリセルのグループを明確にする。通常、メモリセルのブロックは、消去できるメモリセルの最小のグループである。ページはプログラミングの単位であり、同時にプログラミングされる（メモリセルであろう）データビットのグループを明確にする。通常、各ブロックは複数のページを含む。一般的には、メモリセルのページ及びブロックへの配列は、メモリアレイの物理的な実現に基づいている。例えば、多くのＮＡＮＤメモリアレイでは、メモリセルの１ページは同じワードラインを共有するセルによって明確にされ、１ブロックは同じＮＡＮＤストリング内にあるページによって明確にされる。例えば、ＮＡＮＤストリングが直列の３２個のメモリセルを含む場合、ブロックは、通常、３２ページ、または３２ページの整数倍のページ数を含む。１つのワードラインを２ページ分のメモリセルで共有できるＮＡＮＤメモリアレイもある。即ち、第１ページのデータは偶数番号の列のメモリセルに記憶され、一方第２ページのデータはそのワードラインに沿った奇数番号の列のメモリセルに記憶される。他の配列も可能である。
【００１３】
マルチ状態メモリセルを活用するいくつかのメモリシステムでは、メモリセル内のデータの各ビットが別のページにある。例えば、メモリセルのアレイがメモリセルごとに３ビットのデータ（８つの状態又はレベルのデータ）を記憶する場合、各メモリセルは３ページにデータを記憶し、３個のビットのそれぞれが別のページにある。従って、この例のブロックの中では、各ワードラインが３ページ又は３ページの整数の倍数と関連付けられる。他の配列も考えられる。
【００１４】
歴史的に、フラッシュメモリに記憶されるデータの編成は、データをセクタ単位で記憶する磁気ディスク記憶装置に関連して使用されるファイルシステムにならってきた。通常、セクタは、例えば何らかの数のバイトのオーバヘッドが加えられた５１２バイトのユーザデータ等、固定サイズのデータのグループである。多くの最新のファイルシステムでは、コンピュータ又は他のホストシステムのオペレーティングシステムはデータをセクタ内に配列し、セクタ単位で、不揮発性記憶装置にデータを書き込み、不揮発性記憶装置からデータを読み出す。このようなシステム及びアプリケーションでのフラッシュメモリ素子の便利な使用を可能にするために、多くの最新のフラッシュメモリが同様の方法でデータを処理し、論理セクタアドレスをフラッシュメモリアレイの物理アドレスにマッピングする。
【００１５】
近年では、フラッシュメモリデバイスのサイズ及び容量は大幅に増大し、４０億セルを超えるメモリアレイがもたらされた。このようなアレイでは、単一のワードラインが数万を超えるメモリセルに及ぶことがある。このような大規模なフラッシュメモリでは、各ページは複数のセクタを含む。このように、ホストシステムにより処理されるデータの単位（即ち、「セクタ」）は、フラッシュメモリ素子の最小プログラミング単位よりも小さい。しかしながら、通常、１ページのフラッシュメモリを構成するデータの複数のセクタが順次フラッシュメモリに通信され、同時に単一の動作でフラッシュメモリのページにプログラミングされる。
【００１６】
追加の背景として、データ通信システムにおいてだけではなく、大量データ記憶装置及び記憶システムにおいての誤り訂正コーディング（ＥＣＣ）の使用が周知である。この技術の基礎として、誤り訂正コーディングは、符号化されている「ペイロード」（又は元データ）データビットから決定又は計算される追加ビット（一般的には、パリティビット、コードビット、チェックサム数字、ＥＣＣビット等と呼ばれる）の記憶又は通信を伴う。例えば、誤り訂正コーディングされたデータのメモリリソースへの記憶は、選択されたコードを使用する、実際のデータ及び追加コードビットを含む１個又は複数の符号語の符号化を必要とする。記憶されたデータの取り出しは、記憶された符号語を符号化するために使用されるのと同じ符号に従った記憶された符号語の復号を含む。コードビットは、符号語の実際のデータ部分を「過多に指定」するため、復号後の明白な実際のデータ損失を被らずに数個のエラービットを許容することができる。
【００１７】
多くのＥＣＣコーディング方式は周知技術である。これらの従来の誤り訂正符号は、このようなコーディング方式が提供できる製造歩留まり及び装置信頼性に対する多大な影響のため、フラッシュ（及び他の不揮発性）メモリを含む大規模メモリにおいて特に有効であり、数個のプログラミング不可能なセル又は欠陥のあるセルを有する装置を使用できるようにする。言うまでもなく、歩留まりの節減（蓄え）とコードビット（即ち、コード「レート」）を記憶するために追加のメモリセルを提供する費用の間にはトレードオフが存在する。フラッシュメモリ素子用のいくつかのＥＣＣ符号は、（１／２ほど低いコードレートを有しうる）データ通信アプリケーションで使用される符号よりも高いコードレート（即ち、コードビット対データビットの低い比）を有する傾向がある。フラッシュメモリ記憶装置に関連して使用される周知のＥＣＣ符号の例は、リードソロモン符号、他のＢＣＨ符号、ハミング符号等を含む。通常、フラッシュメモリ記憶装置に関連して使用される誤り訂正符号は、最終的な符号語のデータ部分が符号化されている実際のデータから変わらず、データビットに加えられた符号又はパリティビットが完全な符号語を形成するという点で体系的である。
【００１８】
既定の誤り訂正符号のための特定のパラメータは、符号のタイプ、符号語が引き出される実際のデータのブロックのサイズ、及び符号化後の符号語の全長を含む。例えば、５１２バイト（４０９６ビット）のデータのセクタに適用される典型的なＢＣＨ符号は、少なくとも６０個のＥＣＣ又はパリティビットが使用される場合に、最高４個のエラービットを訂正できる。リードソロモン符号はＢＣＨ符号の部分集合であり、誤り訂正のためにも一般的に使用される。例えば、典型的なリードソロモン符号は、約７２個のＥＣＣビットを使用して、５１２バイトセクタのデータで最高４つのエラーを訂正できる。フラッシュメモリに関して、誤り訂正コーディングは、経時的なフラッシュメモリの信頼性においてだけではなく、製造歩留まりの多大な改善も提供する。
【００１９】
追加の背景として、従来のフラッシュメモリ素子のプログラミング及び消去は、動作を受けるセルのそれぞれについて所望の状態に到達したことを確実にするために、プログラミング又は消去中のメモリセルの状態を検証することを伴ってよい。実際に、フラッシュメモリセルのプログラミング及び消去が、通常、適切な電圧のパルスシーケンスの印加によって実行されることを検討し、又パルスシーケンスが多大な時間と電力を消費することも検討し、多くのフラッシュメモリは、現在では、プログラミング動作又は消去動作自体の間に検証動作を含む。例えば、通常、１ページのメモリセルのプログラミングは、プログラミングパルスを印加し、次にプログラミングされているデータレベル（複数の場合がある）の１つ又は複数の所望の「検証」電圧と対照してプログラミングされたセルを検証することによって実行される。必ずしも全てのメモリセルが第１パルスの後に適切な所望のレベルに対して検証しない場合、プログラミングパルスは（多くの場合さらに高圧で）繰り返され、セルは再び検証される。メモリセルの全てが所望のプログラムレベルに達すると、プログラミング動作は終了する。
【００２０】
検証は、通常、フラッシュメモリセルのブロックの消去時に実行され、追加の消去パルスが、全てのセルが消去されていることを確実にするために必要に応じて印加される。一般的にはＮＡＮＤフラッシュメモリの場合、消去検証は通常、セルのどれかが制御ゲート電圧で伝導するかどうかを判断するために、消去されているブロックのワードラインの全てに選択された制御ゲート電圧を印加することによって実行される。消去されるセルの閾値電圧は通常０ボルト未満であり、又、負のワードライン電圧の印加は望ましくないため、多くの場合は負の消去電圧の検証はワードラインでの低電圧又はゼロ電圧によって行われ、共通ソースラインは、ＮＡＮＤチェーンの各メモリセルに負のゲート対ソース電圧を効果的にかけるためにバイアスをかけられる。同様の方法は、セルのいくつか又は全てが徹底的に消去されないようにするために、消去されたフラッシュメモリセルをわずかにプログラミングする従来の動作を指す「ソフトプログラミング」の間に使用される。
【００２１】
プログラミングを検証する典型的な方法は、制御ゲート電圧によって設定される特定の比較点での各セルの伝導を試験することである。十分にプログラミングされているとして過去に検証されたことのあるセルは、それらのセルのプログラミング処理を停止するために、例えば、プログラミング中のページ内のセルのビットライン電圧を高レベル（例えば、Ｖｄｄ電源の電圧）に引き上げることによってロックアウトされる。まだ十分にプログラミングされていないそれらのセルは、別の検証動作が後に続くプログラミングシーケンスにおいて次に高い電圧パルスを受け取る。
【００２２】
この技術で周知であるように、いくつかのメモリセルは、それらのセル間の製造変動のため、それらのセルが、既に他よりも低い閾値電圧に消去されたため、ページの中のセルの一様ではない摩耗のため等の理由で、他よりもプログラミング又は消去が低速である。そして、言うまでもなく、いくつかのセルは、欠陥又は他の理由のため、全くプログラミング又は消去することができない。前述されたように、誤り訂正コーディングは、メモリを使用可能に維持しながらも、何らかの数の低速のセル又は故障したセルを許容する能力を提供する。いくつかの用途では、１ページのデータが、そのページ上の全てのメモリセルが所望のプログラミング状態に対して検証するまでプログラミングパルスを繰り返し印加することによってプログラミングされる。これらの用途では、プログラミングは、プログラミングページが無事検証される前に、最大数のプログラミングパルスに達すると終了し、その後まだ所望の状態に検証されていないセルの数が閾値と比較され、そのページからのデータの読み出しに使用される誤り訂正コーディングの能力に依存する。誤り訂正が十分に堅牢である他の用途では、プログラミング及び消去の時間は、十分にプログラミング又は消去されていない低速の（又はエラーの）セルの数が訂正可能であるビット数より少なくなると、パルスをプログラミング又は消去するシーケンスを終了することによって節約される。
【００２３】
誤り訂正は、通常セクタ単位で実行される。従って、各セクタはＥＣＣ符号の独自の集合を有する。セクタは、ホストシステムへの及びホストシステムからのデータ転送の所望の単位であるため、この誤り訂正は便利且つ有効である。
【発明の概要】
【発明が解決しようとする課題】
【００２４】
ＢＣＨ符号又はリードソロモン符号を使用して５１２バイトのセクタ内で訂正可能なビットの通常の最大数は、４個である。従って、プログラミング処理が２つのエラーを生じさせる場合、それらの２つのエラーが、以後の読み出し工程の間にＥＣＣを使用して訂正できるため、上記工程は成功と見なすことができる。８つのセクタを記憶するページでは、エラー訂正は３２個のエラービット（セクタ毎４ビット  ｘ  ８セクタ）を許容できなければならない。ただし、従来の回路網では、検証工程はエラービットの位置に関係なくページ全体でエラー（適切にプログラミングされていないビット）をカウントする。全てのエラービットが同じセクタの範囲内にある可能性があるため、ページ上でプログラミング（又は消去）検証中に無視できる最大数のエラービットは、セクタについて無視する許容ビットの最大数未満に保たれなければならない。通常、多くのメモリシステムでは、何らかの誤り補正が読み出し工程中に検出される他のエラーを補正するために留まることを確実にするために、無視できるビットの最大数はさらに低い。１ビットがページ内の８個のセクタのそれぞれでフェイルした例を考える。前述された典型的なシステムは、セクタ毎１個のエラーを訂正できるＥＣＣの能力にも関わらず、プログラミングが成功したとは結論しない。
【課題を解決するための手段】
【００２５】
不揮発性メモリシステムでさらに多くのエラービットを許容できるようにする新しいシステムが提案されている。ページのデータのビットは、重複するゾーンの集合にグループ化される。一実施形態では、ゾーンはセクタより大きく、各ゾーンは２つ又は３つ以上のセクタに跨ってよい。しかしながら、他のサイズのゾーンを使用することが可能であり、他の実施形態では、ゾーンはセクタよりも小さいことがある。ゾーンは重複しているため、セクタは２つ又は３つ以上のゾーンにある可能性がある。プログラミング（又は消去）の一部として実行される検証の間、ゾーン内のエラービット数がセクタの訂正可能なビットの最大数未満であるかどうかの決定がゾーンごとに下される。この方式は、さらに多くのエラービットを許容できるようにする。
【００２６】
一実施形態は、不揮発性記憶素子の集合が、プログラミング処理の一部としてプログラミングを受けることを含み、その場合、不揮発性記憶素子の集合は不揮発性記憶素子の重複するグループを含む。各グループは、それが、適切にプログラミングされていない不揮発性記憶素子の閾値数未満を有するかどうかを判断するために試験される。プログラミング処理は、各グループが適切にプログラミングされていない不揮発性揮発素子の閾値数未満を有するかどうかに基づいて進む（例えば、続行する／続行しない、又は成功／不成功として終了する）。１つの例の実装形態では、各グループの試験は、適切にプログラミングされていない冗長な不揮発性記憶素子の第１の数を決定することと、適切にプログラミングされていない、ある特定のグループの元データの不揮発性記憶素子の第２の数を決定することと、第１の数と第２の数の合計を閾値数と比較することとを含む。
【００２７】
一実施形態は、複数の不揮発性記憶素子と、不揮発性記憶素子と通信する１つ又は複数の電圧生成回路と、不揮発性記憶素子と通信する複数の検出回路と、検出回路と通信する複数のデータ処理回路と、１つ又は複数の電圧生成回路及びデータ処理回路と通信する制御回路とを含む。１つ又は複数の電圧生成回路は、複数の不揮発性記憶素子に検証電圧を提供する。検出回路は前記不揮発性記憶素子の状態を検出する。データ処理回路は、不揮発性記憶素子が適切にプログラミングされていたかどうかに関して制御回路に表示を提供する。制御回路は、不揮発性記憶素子の重複するグループのそれぞれが、適切にプログラミングされていない不揮発性記憶素子の閾値数未満を有するかどうかを判断する。
【図面の簡単な説明】
【００２８】
【図１】ＮＡＮＤストリングの平面図を示す。
【図２】上記ＮＡＮＤストリングの等価回路図を示す。
【図３】不揮発性メモリシステムのブロック図を示す。
【図４】検出ブロックの一実施形態を描くブロック図を示す。
【図５Ａ】メモリアレイの一実施形態を描くブロック部を示す。
【図５Ｂ】データのページを示す。
【図６】閾値電圧分布の例の集合を示し、不揮発性メモリをプログラミングする工程を示す。
【図７】閾値電圧分布の例の集合を示し、不揮発性メモリをプログラミングする工程を示す。
【図８Ａ】多様な閾値電圧分布を示し、不揮発性メモリをプログラミングする工程を示す。
【図８Ｂ】多様な閾値電圧分布を示し、不揮発性メモリをプログラミングする工程を示す。
【図８Ｃ】多様な閾値電圧分布を示し、不揮発性メモリをプログラミングする工程を示す。
【図９】一実施形態において不揮発性メモリをプログラミングする順序の表を示す。
【図１０】不揮発性メモリをプログラミングする工程の一実施形態を説明するフローチャートを示す。
【図１１】データのページ及びゾーンにグループ化される冗長データを示す。
【図１２】セクタの集合の例の範囲の表を示す。
【図１３】重複するゾーンの集合の範囲の例の表を示す。
【図１４】ゾーンあたりのエラービット数を決定する工程の一実施形態を説明するフローチャートを示す。
【図１５】ゾーンあたりのエラービット数を決定するために使用される回路のブロック図を示す。
【図１６Ａ】エラービット数を決定する工程の一実施形態を説明するフローチャートを示す。
【図１６Ｂ】エラービット数を決定する工程の一実施形態を説明するフローチャートを示す。
【図１７】エラーを報告する回路を描くブロック図を示す。
【図１８】不揮発性記憶素子をプログラミングする工程の一実施形態を説明するフローチャートを示す。
【発明を実施するための形態】
【００２９】
本発明を実現するために適切なメモリシステムの一例は、ＮＡＮＤフラッシュメモリ構造を使用する。しかしながら、他のタイプの不揮発性記憶装置も使用できる。例えば、基本的に（浮遊ゲートの代わりに）窒化物層内の電荷のトラッピングを使用するメモリセルである、いわゆるＴＡＮＯＳ構造（ＴａＮ−Ａｌ２Ｏ３−ＳｉＮ−ＳｉＯ２のシリコン基板上に積み重ねられた層から構成される）も本発明と使用できる。フラッシュＥＥＰＲＯＭシステムで有効な別のタイプのメモリセルは、不揮発方式で電荷を蓄積するために導電性浮遊ゲートの代わりに非導電性の誘電物質を活用する。このようなセルは、Chanらによる記事、「A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device」、ＩＥＥＥ電子デバイスレター、第ＥＤＬ−８巻、第３号、１９８７年３月、９３から９５ページに説明されている。酸化ケイ素、窒化ケイ素、及び酸化ケイ素（「ＯＮＯ」）から形成される三層の誘電体が、導電性制御ゲートと、メモリセルチャネル上の半導電性基板の表面の間に挟まれている。セルはセルチャネルから窒化物の中に電子を注入することによりプログラミングされ、窒化物において電荷はトラッピングされ、制限領域内に蓄積される。次にこの蓄積された電荷が、検出可能である方法で、セルのチャネルの一部の閾値電圧を変更する。セルは、窒化物の中にホットホールを注入することによって消去される。ドーピングされたポリシリコンゲートが、別の選択トランジスタを形成するためにメモリセルチャネルの一部に広がる分割ゲート構成における同様のセルを説明する、Nozakiら、「A 1-Mb EEPROM with MNOS Memory Cell for Semiconductor Disk Application」、ソリッドステート回路のＩＥＥＥジャーナル、第２６巻、第４号、１９９１年４月、４９７から５０１ページも参照すること。前記２つの記事は、その全体を参照することにより本明細書に援用される。参照することにより本明細書に援用されるWilliam D. Brown及びJoe E. Brewerによって編集された「Nonvolatile Semiconductor Memory Technology」、ＩＥＥＥ出版１９９８年の第１．２項に言及されるプログラミング技法も、誘電電荷トラップ装置に適用可能であると説明されている。他のタイプのメモリ素子も使用できる。
【００３０】
図３は、１ページのメモリセル（例えば、ＮＡＮＤマルチ状態フラッシュメモリ）を並列に読み出し及びプログラミングする読み出し／書き込み回路を備えたメモリ装置２１０を示している。メモリ装置２１０は、１つ以上のメモリダイ又はチップ２１２を有する。メモリダイ２１２は、（２次元又は３次元の）アレイのメモリセル２００、制御回路２２０、及び読み出し／書き込み回路２３０Ａと２３０Ｂを有する。一実施形態では、様々な周辺回路によるメモリアレイ２００へのアクセスはアレイの両側で対称的に実装されており、これにより、各側のアクセスライン及び回路の密度が半分に低減されている。読み出し／書き込み回路２３０Ａ及び２３０Ｂは複数の検出ブロック３００を有しており、それらの検出ブロック３００は１ページのメモリセルを並列に読み出し又はプログラムすることができる。メモリアレイ１００は、行複号部２４０Ａと２４０Ｂを介したワード線、及び、列復号部２４２Ａと２４２Ｂを介したビット線によってアドレスされる。典型的な実施形態では、制御部２４４は、１つ以上のメモリダイ２１２のように同じメモリ装置２１０（例えば、取り外し可能なストレージカード又はパッケージ）内に含まれる。コマンド及びデータは、ライン２３２を介してホストと制御部２４４の間、及び、ライン２３４を介して制御部と１つ以上のメモリダイ２１２の間で送られる。
【００３１】
制御回路２２０は、読み出し／書き込み回路２３０Ａと２３０Ｂに協調して、メモリアレイ２００上でメモリ動作を実行する。制御回路２２０は、状態マシン２２２、オンチップアドレス復号部２２４及び電力制御モジュール２２６を有している。状態マシン２２２は、メモリ動作のチップレベル制御を提供する。オンチップアドレス復号部２２４は、ホスト又はメモリ制御部によって用いられるとともに、復号部２４０Ａ、２４０Ｂ、２４２Ａ及び２４２Ｂによって用いられるハードウェアアドレスの間のアドレスインタフェースを提供する。電力制御モジュール２２６は、メモリ動作中にワードライン及びビットラインに供給される電力及び電圧を制御する。一実施形態では、電力制御モジュール２２６は、供給電力より大きな電圧を生成することができる一つ以上のチャージポンプを有する。
【００３２】
図４は、検出モジュール４８０、及び共通部４９０と呼ばれるコア部内で分割された個々の検出ブロック３００のブロック図である。一実施形態では、各ビットラインの別個の検出モジュール４８０と、複数の検出モジュール４８０の集合の１つの共通部４９０があってもよい。一例では、検出ブロックは、１つの共通部４９０と８つの検出モジュール４８０を有することができる。グループ内の各検出モジュールは、データバス４７２を介して関連する共通部と通信できる。さらなる詳細としては、米国特許出願公開第２００６／０１４０００７号、その全体を参照することにより本明細書に援用される。
【００３３】
検出モジュール４８０は検出回路４７０を有しており、検出回路４７０は接続されたビットライン内の伝導電流が所定の閾値レベルより高いか低いかを判定する。一実施形態では、検出モジュール４８０は、検出増幅器として共通に参照される回路を有する。検出モジュール４８０はさらにビットラインラッチ４８２を有しており、ビットラインラッチ４８２は接続されたビットライン上の電圧条件を設定するために用いられる。例えば、ビットラインラッチ４８２内にラッチされる所定の状態によって、接続されたビットラインはプログラム禁止を指定する状態（例えば、Ｖｄｄ）とされる。
【００３４】
共通部４９０は、プロセッサ４９２、１集合のデータラッチ４９４、及び、１集合のデータラッチ４９４とデータバス４２０の間を接続するＩ／Ｏインタフェース４９６を有する。プロセッサ４９２は計算を実行する。例えば、その機能の１つは、検出されたメモリセル内に記憶されているデータを判定し、判定したデータを１集合のデータラッチ内に記憶することである。１集合のデータラッチ４９４は、読み出し動作中に、プロセッサ４９２によって判定されたデータビットを記憶するために用いられる。それは、プログラム動作中に、データバス４２０から取り込まれたデータビットを記憶するためにも用いられる。取り込まれたデータビットは、メモリ内にプログラムする予定の書き込みデータを表す。Ｉ／Ｏインタフェース４９６は、データラッチ４９４とデータバス４２０の間のインタフェースを提供する。
【００３５】
読み出し又は検出中には、システムの動作は状態マシン２２２の制御下にあり、状態マシン２２２はアドレスされたセルへの異なる制御ゲート電圧の供給を制御する。メモリによってサポートされた様々なメモリ状態に対応する様々な既定制御ゲート電圧のステップを進む際に、検出モジュール４８０はこれらの電圧の１つに移動し、バス４７２を介して検出モジュール４８０からプロセッサ４９２に出力が提供される。その時点で、プロセッサ４９２は、検出モジュールの移動イベントと、状態マシンから入力ライン４９３を介して印加された制御ゲート電圧についての情報を考慮することによって得られたメモリ状態を決定する。それから、メモリ状態に対するバイナリ符号化を計算し、得られたデータビットをデータラッチ４９４に記憶する。コア部の別の実施形態では、ビットラインラッチ４８２は、検出モジュール４８０の出力をラッチするラッチ、及び、上記のようなビットラインラッチの両方としてダブルデューティを提供する。
【００３６】
当然のことながら、いくつかの実装形態では複数のプロセッサ４９２を有することができる。一実施形態では、各プロセッサ４９２は出力ライン（図４には示されていない）を有し、各出力ラインは共にワイヤードＯＲ接続される。いくつかの実施形態では、出力ラインは、ワイヤードＯＲラインに接続する前に反転される。ワイヤードＯＲを受け取る状態マシンはプログラムされる全てのビットがいつ所望のレベルに到達するかを決定できる。したがって、この構成はプログラミング処理がいつ完了するかについてのプログラム検証処理中の素早い決定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理０がワイヤードＯＲラインに送られる（又はデータ１を反転させる）。全てのビットがデータ０を出力する（又はデータ１を反転させる）と、状態マシンはプログラミング処理を終了することを認識する。各プロセッサが８つの検出モジュールと通信する実施形態では、状態マシンは（実施形態において）ワイヤードＯＲラインを８回読み出す必要があってもよいし、あるいは、関連するビットラインの結果を蓄積するために論理がプロセッサ４９２に追加され、状態マシンがワイヤードＯＲラインを一度だけ読み出せばいいようにしてもよい。
【００３７】
プログラム又は検証中に、プログラムされるデータはデータバス４２０から１集合のデータラッチ４９４内に記憶される。状態マシンの制御下のプログラム動作は、アドレスされるメモリセルの制御ゲートに印加される一連の（値の増加を伴う）プログラミング電圧パルスを有する。各プログラミングパルスに続いて検証工程が実行され、メモリセルが所望の状態にプログラムされたかどうかを特定する。プロセッサ４９２は、所望のメモリ状態に対する検証メモリ状態を監視する。その２つが一致する場合、プロセッサ４９２はビットラインラッチ４８２を設定し、プログラム禁止を指定する状態にビットラインを設定する。これにより、たとえプログラミングパルスがその制御ゲートに影響しても、ビットラインに接続したセルがさらにプログラムされないようにする。他の実施形態では、プロセッサが最初にビットラインラッチ４８２をロードし、検出回路が検証処理中に禁止値にそれを設定する。
【００３８】
データラッチスタック４９４は、検出モジュールに対応するデータラッチのスタックを有する。一実施形態では、検出モジュール４８０毎に３つの（又は４つの又はその他の数の）データラッチが存在する。いくつかの実装形態では、（必須ではないが）データラッチはシフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス４２０のシリアルデータに変換したり、その逆を行ったりする。好適な一実施形態では、ｍ個のメモリセルの読み出し／書き込みブロックに対応する全てのデータラッチを共にリンクさせてブロックシフトレジスタを構成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、読み出し／書き込みモジュールのバンクを調整し、その集合のデータラッチが読み出し／書き込みブロックの全体のシフトレジスタの一部であっても、その集合のデータラッチのそれぞれが順にデータバスの内外にデータをシフトできるようにする。
【００３９】
不揮発性記憶装置の多様な実施形態の構造及び／または動作についての追加情報は、（１）米国特許出願公開第２００４／００５７２８７号、「Non-Volatile Memory And Method With Reduced Source Line Bias Errors」、公開日２００４年３月２５日、（２）米国特許出願公開第２００４／０１０９３５７号、「Non-Volatile Memory And Method with Improved Sensing」、公開日２００４年６月１０日、（３）米国特許出願公開第２００５／０１６９０８２号、（４）米国特許出願第１１／０９９，１３３号、「Compensating for Coupling During Read Operations of Non-Volatile Memory」、発明者Ｊｉａｎ  Ｃｈｅｎ、出願日２００５年４月５日、及び（５）米国特許出願第１１／３２１，９５３号、「Reference Sense Amplifier For Non-Volatile Memory」、発明者Ｓｉｕ  Ｌｕｎｇ  Ｃｈａｎ及びＲａｕｌ−Ａｄｒｉａｎ  Ｃｅｒｎｅａ、出願日２００５年１２月２８日に記載されている。直前に示した特許文書の５つの全ては、その全体を参照することにより本明細書に組み込まれる。
【００４０】
図５Ａは、メモリセルアレイ２００の例示的な構造を示す。一実施形態においては、メモリセルのアレイは、メモリセルの多数のブロックに分割される。フラッシュＥＥＰＲＯＭシステムに一般的であるように、ブロックは消去の単位である。すなわち、各ブロックはともに消去される最小数のメモリセルを含む。各ブロックは、通常、多数のページに分割される。ページはプログラミングの単位である。通常、１枚又は複数のページが１列のメモリセルに記憶される。ページは、１つ又は複数のセクタを記憶できる。セクタはユーザデータ及びオーバヘッドデータを含む。オーバヘッドデータは、通常、セクタのユーザデータから計算された誤り訂正符号（ＥＣＣ）を含む。コントローラ（後述）の一部が、データがアレイにプログラミングされているときにＥＣＣを計算し、データがアレイから読み出されているときにＥＣＣのチェックも行う。代わりに、ＥＣＣ及び／又は他のオーバヘッドデータはそれらが関連するユーザデータとは異なるページ、または異なるブロックにも記憶される。ユーザデータのセクタは通常、磁気ディスクドライブ内のセクタのサイズに相当する５１２バイトである。例えば８ページから最高３２、６４、１２８以上のページの範囲の多数のページが１ブロックを形成する。
【００４１】
図５Ｂはページの元データを示す。ページのサイズに応じて、ページは多くのセクタを含む。各セクタはユーザデータ、誤り訂正符号（ＥＣＣ）、及びヘッダ情報を含む。
【００４２】
一例として、図５Ａにおいて、１，０２４個のブロックに区切られるＮＡＮＤフラッシュＥＥＰＲＯＭを説明する。この例では、各ブロックにＢＬ０、ＢＬ１、．．．、ＢＬ６９，６２３に相当する６９，６２３の列がある。一実施形態では、ブロックの全てのビットラインは、読み出し動作及びプログラム動作の間に同時に選択できる。１つの共通したワードラインに沿った、任意のビットラインに接続されたメモリセルは、同時にプログラムできる。
【００４３】
別の実施形態では、ビットラインは偶数のビットラインと奇数のビットラインに分割される。奇数／偶数ビットラインアーキテクチャでは、共通ワードラインに沿った、奇数ビットラインに接続されたメモリセルはあるときにプログラムされる。それに対し、共通ワードラインに沿った、偶数ビットラインに接続されたメモリセルは別のときにプログラムされる。
【００４４】
図５Ａは、直列で接続され、ＮＡＮＤストリングを形成する４個のメモリセルを示す。４個のセルはそれぞれのＮＡＮＤストリング内に含まれるとして示されているが、４個より多い、または少ない数（例えば、１６、３２、又は別の数又はＮＡＮＤストリング上に存在し得るメモリセル）を使用できる。ＮＡＮＤストリングの１つの端子は（選択ゲートドレインＳＧＤに接続されている）ドレイン選択ゲートを介して対応するビットラインに接続され、別の端子は（選択ゲートソースラインＳＧＳに接続されている）ソース選択ゲートを介してソースに接続される。
【００４５】
成功した（検証を行った）プログラミング工程の最後では、メモリセルの閾値電圧はプログラムしたメモリセルの閾値電圧の１つ以上の分布内、又は、必要に応じて消去したメモリセルの閾値電圧分布内にあるべきである。図６は、各メモリセルが２ビットのデータを記憶している場合のメモリセルアレイの閾値電圧分布を示している。しかしながら、他の実施形態では、（例えば、メモリセルに対して３ビットのデータのような）メモリセルに対して２ビットより多い、又は少ないデータを使用してもよい。図６は、消去したメモリセル用の第１の閾値電圧分布Ｅを示している。プログラムしたメモリセルの３つの閾値電圧分布Ａ、Ｂ及びＣも示している。一実施形態では、分布Ｅ内の閾値電圧は負であり、分布Ａ、Ｂ及びＣ内の閾値電圧は正である。
【００４６】
図６の異なる閾値電圧範囲の各々は、データビットの集合の所定の値に対応する。メモリセルにプログラムされたデータとセルの閾値電圧レベルの間の具体的な関係は、セルに対して採用されるデータ符号化方式に依存する。例えば、米国特許第６，２２２，７６２号及び米国特許出願公開公報第２００４／０２５５０９０号、「Tracking Cells For A Memory System」、出願日２００３年６月１３日（両方とも全体として参照によって本明細書に組み込まれる）は、マルチ状態フラッシュメモリセルの様々なデータ符号化方式を説明している。一実施形態では、データ値はグレイ符号割り当てを用いて閾値電圧範囲に割り当てられ、フローティングゲートの閾値電圧がその隣接する物理状態に誤ってシフトしても、１ビットだけが影響を受けるようにする。一例では、「１１」を閾値電圧範囲Ｅ（状態Ｅ）、「１０」を閾値電圧範囲Ａ（状態Ａ）、「００」を閾値電圧範囲Ｂ（状態Ｂ）、「０１」を閾値電圧範囲Ｃ（状態Ｃ）に割り当てる。しかし、他の実施形態ではグレイ符号は用いられない。図１１は４つの状態を示しているが、本発明は４つの状態より多い、又は少ない状態を含む他のマルチ状態構造と共に用いることもできる。
【００４７】
図６はさらに、メモリセルからデータを読み出すための３つの読み出し基準電圧Ｖｒａ、Ｖｒｂ及びＶｒｃを示している。所定のメモリセルの閾値電圧がＶｒａ、Ｖｒｂ及びＶｒｃより高いか、低いかをテストすることによって、システムはメモリセルがどの状態にあるかを決定できる。
【００４８】
図６は、３つの検証基準電圧Ｖｖａ、Ｖｖｂ及びＶｖｃも示している。メモリセルを状態Ａにプログラムする場合、システムは、それらのメモリセルがＶｖａ以上の閾値電圧を有するか否かをテストする。メモリセルを状態Ｂにプログラムする場合、システムは、メモリセルがＶｖｂ以上の閾値電圧を有するか否かをテストする。メモリセルを状態Ｃにプログラムする場合、システムはメモリセルがＶｖｃ以上の閾値電圧を有するか否かを判定する。
【００４９】
全シーケンスプログラミングとして知られる一実施形態では、メモリセルは、消去状態Ｅから、プログラム状態Ａ、ＢまたはＣのどれかに直接的にプログラムできる。例えば、集団内の全てのメモリセルが消去状態Ｅになるように、プログラムされるメモリセルの集団が最初に消去される。いくつかのメモリセルは状態Ｅから状態Ａにプログラムされるが、他のメモリセルは状態Ｅから状態Ｂに、及び／または、状態Ｅから状態Ｃにプログラムされる。フルシーケンスプログラミングは図６において３本の矢印によって描写的に示されている。
【００５０】
図７は、２つの異なるページ（下側ページと上側ページ）に対してデータを記憶するマルチ状態メモリセルをプログラムする二経路技術の一例を示している。状態Ｅ（１１）、状態Ａ（１０）、状態Ｂ（００）及び状態Ｃ（０１）の４つの状態が示されている。状態Ｅの場合、両方のページが「１」を記憶する。状態Ａの場合、下側ページが「０」を記憶し、上側ページが「１」を記憶する。状態Ｂの場合、両方のページが「０」を記憶する。状態Ｃの場合、下側ページが「１」を記憶し、上側ページが「０」を記憶する。なお、各状態に対して特定のビットパターンが割り当てられているが、異なるビットパターンを割り当てることも可能であることに注意する。
【００５１】
第１プログラミング経路では、セルの閾値電圧レベルは下側の論理ページにプログラムされるビットに従って設定される。そのビットが論理「１」であれば、以前に消去された結果として適切な状態にあるので閾値電圧は変更されない。しかし、プログラムされるビットが論理「０」であれば、矢印５３０で示したように、セルの閾レベルは状態Ａになるように増大される。
【００５２】
第２プログラミング経路では、セルの閾値電圧レベルは上側論理ページ内にプログラムされるビットに従って設定される。上側論理ページビットが論理「１」を記憶する場合、セルは下側ページビットのプログラミングに依存する状態Ｅ又はＡの一方であり、どちらも上側ページビットは「１」を保持するのでプログラミングは生じない。上側ページビットが論理「０」となる場合、閾値電圧はシフトされる。第１経路によってセルが消去状態Ｅに留まっていれば第２段階でセルをプログラムし、矢印５３４で示したように閾値電圧が状態Ｃ内になるように増大させる。第１プログラミング経路の結果としてセルが状態Ａ内にプログラムされれば、メモリセルはさらに第２経路でプログラムされ、矢印５３２で示したように閾値電圧が状態Ｂ内になるように増大させる。第２経路の結果は、下側ページ用のデータを変更することなく、上側ページの論理「０」を記憶するように指定した状態にセルをプログラムすることである。
【００５３】
一実施形態では、ワードラインを充填するのに十分なデータを書き込まれた場合、システムは全シーケンス書き込みを実行するように設定される。十分ではないデータが書き込まれた場合、プログラミング処理は受け取ったデータを用いて下側ページプログラミングを実行できる。次のデータを受け取ったとき、システムは上側ページをプログラムする。さらに別の実施形態では、システムは下側ページをプログラムするモードで書き込みを開始し、ワードラインのメモリセルの全体（又は大部分）を充填するために次の十分なデータを受け取った場合、全シーケンスプログラミングモードに変換する。このような実施形態のさらなる詳細は、発明者Ｓｅｒｇｙ  Ａｎａｔｏｌｉｅｖｉｃｈ  Ｇｏｒｏｂｅｔｓ及びＹａｎ  Ｌｉの米国公開番号第２００６／０１２６３９０号、米国特許出願第１１／０１３，１２５号、発明の名称「Pipelined Programming of Non-Volatile Memories Using Early Data」、出願日２００４年１２月１４日で開示されている。その全体を参照することにより本明細書に援用される。
【００５４】
図８Ａ−Ｃは、前のページの隣接メモリセルに書き込んだ後で、特定のページに対してその特定のメモリセルを書き込むことによって、その特定のメモリセルに対するフローティングゲート間結合影響を低減する不揮発性メモリをプログラムする別の方法を開示している。図８Ａ−Ｃによって開示された処理の実装形態の一例では、不揮発性メモリセルは、４つのデータ状態を用いてメモリセル毎に２ビットのデータを記憶する。例えば、状態Ｅが消去状態であり、状態Ａ、Ｂ及びＣがプログラム状態であると仮定する。状態Ｅはデータ１１を記憶している。状態Ａはデータ０１を記憶している。状態Ｂはデータ１０を記憶している。状態Ｃはデータ００を記憶している。両方のビットは隣接する状態Ａ及びＢの間で変化するので、これは非グレイ符号化の一例である。データの物理的データ状態への他の符号化を用いることもできる。各メモリセルは２ページ分のデータを記憶する。参照目的のために、これらのページのデータは上側ページ及び下側ページと呼ばれるが、他のラベルを与えることもできる。図８Ａ−Ｃの処理の状態Ａを参照すると、上側ページはビット０を記憶し、下側ページはビット１を記憶している。状態Ｂを参照すると、上側ページはビット１を記憶し、下側ページはビット０を記憶している。状態Ｃを参照すると、両方のページがビットデータ０を記憶している。
【００５５】
図８Ａ−Ｃのプログラミング処理は、２つのステップの処理である。第１ステップでは、下側ページをプログラムする。下側ページがデータ１のままである場合、メモリセル状態は状態Ｅに留まる。データが０にプログラムされる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態Ｂ’にプログラムされる。従って、図８Ａは、状態Ｅから状態Ｂ’へのメモリセルのプログラミングを示している。図８Ａに示した状態Ｂ’は暫定的状態Ｂであり、従って、検証点はＶｖｂ’として示され、前記検証点はＶｖｂより低い。
【００５６】
一実施形態では、状態Ｅから状態Ｂ’にメモリセルをプログラムした後、ＮＡＮＤストリング内の隣接メモリセル（ＷＬｎ＋１）をその下側ページに対してプログラムする。例えば、ＷＬ０に接続されたメモリセル用の下側ページをプログラムした後、ＷＬ１に接続されているが同じＮＡＮＤストリング上にあるメモリセル（近傍のメモリセル）用の下側ページをプログラムする。近傍のメモリセルをプログラムした後、初期のメモリセルが状態Ｅから状態Ｂ’に上昇した閾値電圧を有していた場合、フローティングゲート間の結合の影響はプログラムされる初期のメモリセルの見かけの閾値電圧を上昇させる。これは、図１２Ｂに示されている状態Ｂ’の閾値電圧分布を拡大する影響を有する。閾値電圧分布のこの見かけの拡大は、上側ページをプログラムする際に修正される。
【００５７】
図８Ｃは、上側ページをプログラムする処理を示している。メモリセルが消去状態Ｅであって上側ページが１に留まる場合、メモリセルは状態Ｅに留まる。メモリセルが状態Ｅであり、その上側ページデータが０にプログラムされる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態Ａになる。メモリセルが中間の閾値電圧分布５５０であって上側ページデータが１に留まる場合、メモリセルは最終的な状態Ｂにプログラムされる。メモリセルが中間の閾値電圧分布５５０であって上側ページデータがデータ０になる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態Ｃになる。隣接メモリセルの上側ページプログラミングだけが所定のメモリセルの見かけの閾値電圧に影響を与えるので、図８Ａ−Ｃで示した処理はフローティングゲート間の結合の影響を低減する。別の状態符号化の一例は、上側ページデータが１であるとき分布５５０から状態Ｃに移動することであり、上側ページデータが０であるとき状態Ｂに移動することである。
【００５８】
図８Ａ−Ｃは４つのデータ状態と２つのページデータに対する一例を提供するが、図８Ａ−Ｃによって開示された概念は４つより多い、又は少ない状態、及び２つのページ、及び／又は他のデータエンコード、とは異なるページを備えた他の実装形態に適用することもできる。例えば、本発明は、３ビットのデータを記憶し、８つのデータ状態を使用し、図６、図７又は図８Ａ−Ｃの工程に基づいてプログラムする、メモリセルに用いることができる。
【００５９】
図９は、図１２Ａから図１２Ｃのプログラミング方法を使用してメモリセルをプログラムするための順序の一実施形態を説明する表である。ワードラインＷＬ０に接続されたメモリセルの場合、下部ページがページ０を形成し、上部ページがページ２を形成する。ワードラインＷＬ１に接続されたメモリセルの場合、下側ページがページ１を形成し、上側ページはページ４を形成する。ワードラインＷＬ２に接続されたメモリセルの場合、下側ページがページ３を形成し、上側ページがページ６を形成する。ワードラインＷＬ３に接続されたメモリセルの場合、下側ページがページ５を形成し、上側ページがページ７を形成する。メモリセルは、ページ番号に従って、ページ０からページ７までプログラムされる。他の実施形態では、他のプログラミングの順序も使用できる。
【００６０】
図１０は、選択されたワードラインに接続されているメモリセルをプログラミングするプログラミング処理を説明するフローチャートである。従って、図１０の工程は、図６のフルシーケンスプログラミング、図７のツーパスプログラミング技法の１つのパス（第１のパス又は第２のパスのどちらか）、あるいは図８Ａから図８Ｃのツーステッププログラミングの１つのパス（第１のパス又は第２のパスのどちらか）を実現するために使用される。一実施形態においては、図１０の工程は、制御回路網２２０の指示によって、及び／又は指示で実行される。図１０の工程は、３ページのデータ（例えば、メモリセルあたりの３ビットのデータ）のためのスリーパスプログラミング技法の１つのパスとして、あるいは別のマルチパスプログラミング技法の１つのパスとしても実行できる。多くの異なるプログラミング技法が、本発明とともに使用できる。
【００６１】
図１０の工程の1つの実装形態では、メモリセルはプログラミング（ステップ６００）の前に（ブロック単位又は他の単位で）消去される。メモリセルは、ソースラインとビットラインが浮動である間に、十分な期間ｐ−ウェルを消去電圧（例えば２０ボルト）に上げ、選択されたブロックのワードラインを接地させることによって一実施形態で消去される。容量結合のため、未選択ワードライン、ビットライン、選択ライン、及びソースラインも消去電圧のかなりの部分に引き上げられる。従って、強力な磁場が選択されたメモリセルのトンネル酸化物層に適用され、選択されたメモリセルのデータは、フローティングゲートの電子が、通常、ファウラー−ノルドハイムトンネル機構によって基板側に放出されるにつれて消去される。電子がフローティングゲートからｐ−ウェル領域に移されるにつれて、選択されたセルの閾値電圧は引き下げられる。消去はメモリアレイ全体、別々のブロック、又はセルの別の単位で実行できる。メモリセルのブロックが消去された後、本書に説明されるように多様なメモリセルがプログラミングできる、あるいは部分的にプログラミングできる。ステップ６００で実行される消去が、ブロックの各ワードラインがプログラミングされる前に実行される必要がないことに留意する。むしろ、ブロックは消去することができ、次に各ワードラインは、ワードラインのプログラミングの間に消去を行わずにプログラミングできる。
【００６２】
ステップ６０２では、消去されたメモリセルの消去閾値電圧の分布を狭めるために、ソフトプログラミングが実行される。いくつかのメモリセルは、消去工程の結果として必要以上の消去状態にあってよい。ソフトプログラミングは、消去されたメモリセルの閾値電圧を消去検証レベルにさらに近づけるために小さなプログラミングパルスを印加できる。ステップ６０４では、「データロード」コマンドが制御部２４４によって発行され、状態マシン２２２に入力される。ステップ６０６では、ページアドレスを指定するアドレスデータが復号部に提供される。ステップ６０８では、アドレス指定されたページの1ページのプログラムデータがプログラミングのために入力される。そのデータは、選択されたビットラインのための適切なレジスタ／ラッチでラッチされる。いくつかの実施形態では、データは検証動作に使用される選択されたビットラインのための第２のレジスタでもラッチされる。ステップ６１０では、「プログラム」コマンドが制御部２４４から受け取られ、状態マシン２２２に提供される。
【００６３】
「プログラム」コマンドによってトリガされ、ステップ６０８でラッチされたデータは、適切なワードラインに印加されるパルスを使用して状態マシン２２２によって制御される選択されたメモリセルにプログラミングされる。ステップ６１２では、Ｖｐｇｍ、即ちプログラミング電圧信号（例えば一連のパルス）が開始規模（例えば〜１２Ｖ又は別の適当なレベル）に初期化され、状態マシン２２２によって維持されるプログラムカウンタＰＣが０で初期化される。ステップ６１４では、プログラム信号Ｖｐｇｍのパルスが選択されたワードラインに印加される。これは、選択されたワードラインに接続されるメモリセルのそれぞれの制御ゲートに電圧パルスを提供する効果を有する。従って、選択されたワードラインに接続されている全てのメモリセルは、たとえ該メモリセルがプログラミングから禁止又はロックアウトされていても、電圧パルスを受け取っているため、プログラミングを受ける。一実施形態は、プログラム妨害を妨げるために、プログラミング中に未選択ＮＡＮＤストリングをブーストすることを含む。多様なブースト方法を使用できる。ブーストについての詳細は、両方ともその全体を参照することにより本明細書に援用される、２００６年９月２７日に出願された米国特許出願第１１／５３５，６２８号「Reducing Program Disturb In Non-Volatile Storage」、及び米国特許第６，８５９，３９７号に記載されている。
【００６４】
ステップ６１６で、プログラミングされているメモリセルは、該メモリセルがそれらの目標レベルに到達したかどうかを判断するために検証される。メモリセルの閾値電圧が目標閾値電圧レベルに到達すると、メモリセルは適切にプログラミングされており、そのビットライン電圧を上げる（又は別の方法を使用する）ことによって追加のプログラミングからロックアウトできる。メモリセルの閾値電圧が目標閾値電圧レベルに達していない場合、メモリセルは適切にプログラミングされておらず（例えば、プログラミングが完全に完了していない、プログラミングが低速である、エラーがある等）、追加のプログラミングが実行されてよい。
【００６５】
一般的には、検証動作及び読み出し動作中、選択されたワードラインは電圧に接続され、該電圧のレベルは、関係するメモリセルの閾値電圧がこのようなレベルに到達しているかどうかを判断するために、読み出し動作及び検証動作ごとに指定される。ワードライン電圧を印加した後、メモリセルの伝導電流が、ワードラインに印加された電圧に応えてメモリセルがオンになったかどうかを判断するために測定される。伝導電流がある値よりも大きいと測定される場合、メモリセルがオンになり、ワードラインに印加された電圧がメモリセルの閾値電圧より大きいと仮定される。伝導電流がある値より大きいと測定されない場合には、メモリセルがオンにならず、ワードラインに印加された電圧がメモリセルの閾値電圧よりも大きくないと仮定される。
【００６６】
読み出し動作又は検証動作の間のメモリセルの伝導電流を測定するための多くの方法がある。一例では、メモリセルの伝導電流は、該メモリセルがセンス増幅器内の専用のコンデンサを放電する又は充電する速度で測定される。別の例では、選択されたメモリセルの伝導電流は、メモリセルを含んだＮＡＮＤストリングが対応するビットラインを放電することを可能にする（あるいは可能にできない）。ビットライン上の電圧は、それが放電されたかどうかを確かめるために一定の期間の後に測定される。
【００６７】
いくつかの実施形態においては、検証工程は、メモリセルの閾値電圧が各状態の多様な目標レベルに到達したかどうかを試験することを含む。例えば、図６に関して、３つの、即ち（１）Ｖｖａのための、（２）Ｖｖｂのための、及び（３）Ｖｖｅのための検証動作がある。３ビットのデータの場合、最高７つの検証動作がある場合がある。
【００６８】
検証工程を実行後、ステップ６１４、６１６、６１７、６１８、６２０、６２２、６２４、６２６、６２８、及び６３０のループの反復が、ある特定の実装形態の試験及び性能特徴付けに基づいて、選ばれたなんらかの閾値数未満であるかどうかが決定される。後述されるように、本書に提案されている技術は、重複するゾーンの集合のエラービットを決定することである。一実施形態では、ステップ６１４、６１６、６１７、６１８、６２０、６２２、６２４、６２６、６２８及び６３０のループのＸ回の反復の後まで開始しない。Ｘの一例は１７である。（ステップ６１７で決定される）Ｘ回の反復の前に、全ての選択されたメモリセルがその目標とされたプログラミング状態に到達した場合（ステップ６３０）、ステップ６１６の検証の後にステップ６２２のプログラミングの無事完了の報告が続く。全ての選択されたメモリセルがそれらの目標とされたプログラミング状態に到達していない場合（ステップ６３０）には、（Ｘ回の反復の前に）プログラミング処理は後述されるステップ６２４に進む。
【００６９】
（ステップ６１７で試験される）Ｘ回の反復後、ステップ６１６の検証の後に、ゾーンあたりのエラービット数の決定（ステップ６１８）が続く。エラービットは、その閾値電圧がその目標レベルに到達していないために、適切にプログラミングされていなかったメモリセルに記憶されるデータビットである。例えば、メモリセルが状態Ｃにプログラミングされていると仮定される（図６を参照）場合は、閾値電圧がＶｖｃ未満である場合それはエラービットである。従来の技術の装置では、エラービットの数はページ内の全てのデータについて計算される。提案されている現在の技術は、ページのデータを重複するゾーンの集合にグループ化し、ゾーンごとにエラービットの数を計算することである。
【００７０】
図１１は、データのページの例、及び該ページがどのように重複するゾーンにグループ化されるのかを示す。データのページの最後に、冗長データＲＤの集合があることに留意する。冗長データＲＤは、ページに関連するメモリセルと同じワードラインに接続されるブロック内の冗長なメモリセルの集合に記憶される。ページに関連する元のメモリセルが、製造又は他の理由のためにフェイルすると、装置試験、装置製造、又は他のイベントの間、フェイルしたメモリセルを置換するために、冗長なメモリセルを割り当てることができる。従って、ページの不良オリジナルデータビットは、冗長なデータビットで置換される。メモリアレイは、どの冗長なメモリセルが、どのオリジナルデータメモリセルを置換するために割り当てられるのかを追跡調査する。冗長性は、通常、列で管理される。短いビットライン又は開いたビットライン等のいくつかの欠陥は、通常の列を置換するために冗長な列を使用する。ランダムビット障害は、その列アドレスの全てのビットは同時に置換されないので、通常冗長性列では置換されない。限られた数の冗長列は、列欠陥全体だけでの使用も制限する。
【００７１】
図１１は、１６の重複するゾーンにグループ化される冗長データＲＤを含むデータのページを示す。ゾーン０は、ゾーン１と重複する。ゾーン２はゾーン１とゾーン３と重複する。ゾーン４はゾーン３とゾーン５と重複する等である。一実施形態では、各セクタは５１２バイトのデータ及びＥＣＣ／ヘッダ情報に使用される２６バイトを有する。ページ内に１６のセクタがあり、各ゾーンは１Ｋである。他の実施形態では、他のサイズ及び配列も使用できる。本発明は特定のサイズ又は配列に制限されない。冗長データＲＤがゾーン１６の一部であることに留意する。
【００７２】
図１２は、ページの１つの例における１６のセクタの開始アドレスと終了アドレスを示す表である。図１３は、ページの１つの例の１６の重複するゾーンの開始アドレスと終了アドレスを示す表である。この例では、ゾーンはセクタよりも大きく、各ゾーンは１つのセクタ全体をカバーし、少なくとも２つのセクタに渡り、多くのセクタが２つ以上のゾーンにある。このようなゾーン構造を有する理由は、ユーザセクタが、グループとして検出されるのが（可能ではあるが）難しい非バイナリサイズであるためである。実装形態の複雑さを削減するために、ゾーンは、それが少なくとも１つのセクタ全体をつねにカバーするように設計される。あらゆるユーザセクタがゾーンでカバーされていることを確認するために、１６のゾーンが重複する方法で配列される。いくつかのケースでは、ゾーンサイズは2つ以上のセクタをカバーするように増加できる。検出時間を節約するため、ゾーンは２つに半分割することが可能で、それぞれの半分は一度エラーがないか走査されるだけである。各ゾーンは、半分が２つあるとして見なすことができる。即ち、第１の半分は１つの隣接するゾーンと重複し、第２の半分は別の隣接するゾーンと重複する。例えば、ゾーン２の第1の半分はゾーン１と重複し、ゾーン２の第２の半分はゾーン３と重複する。他の実施形態では、他のサイズ及び配列も使用できる。
【００７３】
図１０を振り返ると、ステップ６１８は、各ゾーンのエラービット数を決定することを含む。いくつかの実施形態では、いくつかのエラービットが複数のゾーンにある場合がある。ステップ６２０では、ゾーンごとのエラービットの数が限界未満であるかどうかが決定される。例えば、多様なＥＣＣ実装形態は、回復できるエラービットの設定数を有する。ステップ６２０で使用されている限界は、読み出し工程の間に発見された他のエラーを許容するために回復できるエラービットのその設定数未満でなければならない。ＥＣＣ方式が４個のエラービットを許容する場合には、ステップ６２０の限界は1個又は２個のエラービットとなるであろう。ＥＣＣ方式が１０個のエラービットを許容する場合には、ステップ６２０の限界は１、２、３、４又は１０未満の別の量のエラービットとなるであろう。一例では、ステップ６２０の試験は、あらゆるゾーンが３個未満のエラービットを有するかどうかである。有する場合には、プログラミング処理は無事に完了した（ステップ６２２）。有さない場合には、プログラムカウンタＰＣはステップ６２４のプログラム制限値ＰＬＩＭＩＴと照合される。プログラム限界値の一例は２０である。ただし、プログラム限界値は、実装形態に応じて２０未満となるか、２０を超えるであろう。プログラムカウンタＰＣがプログラム限界値ＰＬＩＭＩＴ未満である場合には、Ｖｐｇｍパルスの大きさはステップサイズ（例えば、０．２−０．４ボルトステップサイズ）分増加され、プログラムカウンタＰＣはステップ６２８で増分される。ステップ６２８の後、工程は次のＶｐｇｍパルスを印加するためにステップ６１４に一巡して元に戻る。プログラムカウンタＰＣがプログラム限界値未満ではない（ステップ６２４）場合には、プログラミング工程は失敗となる（ステップ６２６）。
【００７４】
図１０の代替実施形態では、ステップ６１７と６３０は実行されず、ステップ６１４、６１６、６１８、６２０、６２２、６２４、６２６及び６２８のループの各反復がゾーンあたりのエラービット数を決定すること（ステップ６１８）と、全てのゾーンが限界より少ないエラービットを有するかどうかを比較すること（ステップ６２０）とを含む。即ち、ステップ６１６の後、工程はつねにステップ６１８で続行する（ステップ６１７及び６３０を省略する）。
【００７５】
図１４は、ゾーンごとのエラービット数を決定する工程の一実施形態を説明するフローチャートである（図１０のステップ６２０を参照）。図１４の工程が実装形態の一例にすぎないことに留意する。他の実装形態も本発明の精神の範囲内である。列冗長性を備えたフラッシュメモリ構造では、冗長な列で置換される不良列は特別な方法でカウントする必要がある。１つのゾーンの２つの不良列が冗長な列で置換される場合には、プログラムされない障害ビットをカウントするだけでは、ユーザセクタ内の全てのエラーをカバーするのに十分ではない。ユーザセクタのいくつかのエラービットは列冗長となるであろう。従って、冗長な列のエラーはカウントしなければならない。しかし、冗長な列の情報は、エラー検出時では容易に入手できない。１つの解決策は、冗長な列の全てのエラーをカウントし、最悪のケースの状況を説明するために、各ゾーンのエラーカウントに加えることである。図１４のステップ６５０では、エラービットの数は冗長なメモリセルについて決定される。一実施形態では、どのセクタに冗長なメモリセルが割り当てられるのかに関係なく、冗長なメモリセルの全エラービットがカウントされる。ステップ６５２では、冗長なメモリセルについて決定されるエラービット数はレジスタ又は他の記憶装置に記憶される。一実施形態では、ステップ６５０は、ゾーン１６の第２の半分又はゾーン１６の別の部分のエラービット数を決定することによって実行される。他の実施形態では、冗長なメモリセルは他のゾーンにある場合がある。
【００７６】
ステップ６５４では、ゾーン０の第１の半分についてエラービット数が決定される。一実施形態では、各ゾーンは第１の半分と第２の半分に分割される。例えば、ゾーン０の第１の半分がアドレス０で開始し、アドレス５１１で終了し、ゾーン０の第２の半分はアドレス５１２で開始し、アドレス１０２３で開始する。アドレス０とアドレス５１１の間のエラービット数はステップ６５４でカウントされ、ステップ６５６で記憶される。
【００７７】
図１５は、状態マシン２２２又は制御回路網２２０の他の部分に含まれる構成要素の一実施形態を示す。アキュムレータ７００は、（さらに詳細に後述される）フラグバスの１行又は複数行の集合を受け取る。フラグバスは、アキュムレータ７００によって蓄積された（後述される）エラービットの表示を提供する。アキュムレータ７００はＲＤレジスタ７０２とハーフゾーンシフトレジスタ７０４に接続されている。ハーフゾーンシフトレジスタ７０４は、ハーフゾーンシフトレジスタ７０６に接続されている。ＲＤレジスタ７０２、ハーフゾーンシフトレジスタ７０４、及びハーフゾーンシフトレジスタ７０６は、全て付加回路７０８の入力に接続される。付加回路７０８の出力及び（前述された「限界」値を記憶する）レジスタ７１２の出力が、比較回路７１０に提供される。
【００７８】
アキュムレータ７００は、冗長な列のエラービット数を決定し（図１４のステップ６５０）、ＲＧレジスタ７０２にその数を記憶する（ステップ６５２）。アキュムレータ７００は、ゾーン０の第１の半分のエラービット数を決定し（ステップ６５４）、ハーフゾーンシフトレジスタ７０４にその数を記憶する（ステップ６５６）。ステップ６５８では、ハーフゾーンシフトレジスタ７０４のデータがハーフゾーンシフトレジスタ７０６の中にシフトされる。ステップ６６０では、アキュムレータ７００は、（この反復ではゾーン０の第２のハーフゾーンである）次の半分のエラービット数を決定し、ハーフゾーンシフトレジスタ７０４にその数を記憶する（ステップ６６２）。ステップ６６４では、付加回路７０８が冗長なメモリセル（ＲＤレジスタ７０２）、検討中の現ゾーンの第１の半分（ハーフゾーンシフトレジスタ７０４）、及び検討中のゾーンの第２の半分（ハーフゾーンシフトレジスタ７０６）の中のエラービットの合計を計算する。
【００７９】
ステップ６６６では、ステップ６６４で計算された合計がレジスタ７１２内に記憶される「限界」値未満であるかどうかが決定される。一実施形態では、各ゾーンは同じ「限界」値を使用する。他の実施形態では、異なるゾーンが異なる「限界」値を使用する。ステップ６６６が比較回路７１０によって実行される。比較回路７１０の出力は、図１４の工程をどのように進めるのかを決定するために状態マシン２２２によって使用される。ステップ６６４で計算される合計がレジスタ７１２に記憶される限界値未満ではない場合には、少なくとも１つのゾーンが限界以上であるエラービット数を有する（ステップ６６８）ため、図１４の工程は停止できる。他の実施形態では、システムは、１つのゾーンが限界を超えていることが判明しても、全てのゾーンのエラービットのカウントを続行できる。ステップ６６６で、ステップ６６４で計算された合計がレジスタ７１２に記憶されている限界値未満であると決定されると、ステップ６７０で、検討するさらに多くのハーフゾーンがあるかどうかが決定される。システムが、ゾーン１の第２の半分だけを検討した場合には、検討するさらに多くのハーフゾーンがある。検討するさらに多くのハーフゾーンがある場合には、工程はステップ６５８に一巡して元に戻り、データをシフトし、次のハーフゾーンのエラービットを決定する。このようにして、ステップ６５８から６７０のループがゾーンごとに実行される。ハーフゾーンの全てが検討された（ステップ６７２）後、状態マシンは、全てのゾーンがステップ６７２の限界未満のエラービット数を有すると結論づける。いくつかの実施形態では、検討される必要のある最後のハーフゾーン（ステップ６７０）がゾーン１６の第１のハーフゾーンとなるように、ゾーン１６の第２の半分がステップ６５０の一部として検討されることに留意する。他の実施形態では、（冗長なビットをカウントしない）ゾーン１６の第２の半分は、検討する最後のハーフゾーンとなる場合がある。さらに別の実施形態では、システムは冗長ビットなしで実現できる。
【００８０】
図１６Ａは、ハーフゾーンのエラービット数を決定する工程の一実施形態を説明するフローチャートである。この工程は、図１４のステップ６５０、６５４、及び６６０を実現するために使用できる。ステップ７５０では、検討中のハーフゾーンのメモリセルの全てが、それらがエラービットであるかどうかを判断するために試験される。一実施形態では、検証工程は、それぞれの検出回路４７０によってすでに実行され、結果はそれぞれのデータラッチ４９４に記憶されている。ステップ７５０は、関連するデータビットが、その目標閾値電圧に達したことが検証されたかどうかを報告するそれぞれのプロセッサ４９２を含む。一実施形態では、プロセッサの全ては、任意の１台のプロセッサがエラービットを信号で伝えるとフラグラインが引き下ろされるようにワイヤードＯＲ技術を使用して１つのフラグラインに接続される。エラービットがない場合（ステップ７５２）には、工程は完了し、ステップ７５８でエラービットを報告しない。エラービットがある場合（ステップ７５２）には、システムはステップ７５４でバイナリ検索工程を実行し、ステップ７５６で検出されたエラービット数を報告する。
【００８１】
図１６Ｂは、バイナリ検索工程（ステップ７５８を参照すること）の一実施形態を説明するフローチャートである。ステップ８０２では、検討中の領域が２分割にされる。初めて図１６Ｂの工程が図１６Ａのステップ７５４に応じて呼び出されるとき、検討中の領域はハーフゾーンである可能性がある。その後、図１６Ｂの工程が呼び出されるとき（ステップ８１０と８２６に関して以下を参照）、検討中の領域はハーフゾーンの一部である。ステップ８０４では、図１６Ａのステップ７５０と同様に、分割された領域の第１の半分が試験される。ステップ８０６では、ステップ８０４で試験された分割された領域の第１の半分にエラービットがあるかどうかが決定される。エラービットがあり、ステップ８０４で試験された分割された領域の第１の半分が単一のメモリセルではない場合（ステップ８０８）には、図１６Ｂのバイナリ検索工程がステップ８１０で再帰的に実行される。即ち、ステップ８１０は、図１６Ｂによって説明されるように、現在の領域を半分に分割し、その領域に作用するために、ステップ８０２が次に実行されるように図１６Ｂの工程を再帰的に呼び出すことを含む。従って、ステップ８１０を実行することは、検討中の領域でステップ８０２を実行し、次にステップ８０４及び図１６Ｂの他のステップを続行することを含む。ステップ８０４で試験された分割された領域の第１の半分が単一のメモリセル（ステップ８０８）である場合には、エラービットカウンタ（例えば、アキュムレータ７００等のレジスタ又はラッチ付きのカウンタ回路）がステップ８１２で増分され、メモリセルは、そのメモリセルが図１６のステップ７５４の一部として図１６Ｂの再帰的な工程の後の反復で報告されないようにするためにステップ８１４でタグを付けられる。例えば、メモリセルのそれぞれのデータラッチ４９４は、それがエラービットではないことを示すために反転されてよく、適切なプロセッサ４９２の別のラッチが、プロセッサ４９２がそのメモリセルについてエラーを報告しないように設定できる、あるいは別の手段が使用できる。
【００８２】
ステップ８０６で、領域の第１の半分のエラービットがなかったと決定されると、ステップ８２０で第２の半分が試験される。さらに、ステップ８１０と８１４の後に、工程は、検討中の領域の第２の半分を試験するためにステップ８２０にループする。ステップ８２０での試験は、ステップ８０４での試験と同様であるが、検討中の領域の異なる半分で実行される。検討中の領域の第２の半分にフェイルビットがあり、検討中の領域の第２の半分が単一のメモリセルである（ステップ８２４）場合には、エラービットカウンタがステップ８２６で増分され、メモリセルは、そのメモリセルが図１６のステップ７５４の一部として、図１６Ｂの再帰工程の後の反復で報告されないようにするためにステップ８２８でタグが付けられ、工程は再帰の以前のレベルに戻る（ステップ８３０）。エラービットがあり、ステップ８２０で試験された分割された領域の第２の半分が単一のメモリセルではない場合（ステップ８２４）には、図１６Ｂのバイナリ検索工程がステップ８３２で再帰的に実行される。工程がステップ８３２から戻って来ると、工程は再帰以前のレベルに戻る（ステップ８３０）。
【００８３】
要約すると、バイナリ検索工程はそれ自体を再帰的に呼び出し、エラービットが検出されるまで試験と分割を続行し、次にバイナリ検索は適切なレベルの再帰まで戻り、別のエラービットが検出されるまで試験と分割を続行する。任意のレベルの再帰では、領域にエラービットがあることが試験で判明すると、領域は分割され、検索される。領域にエラービットがないことが試験で判明すると、領域は分割、検索されない。工程の最後に、アキュムレータ７００はハーフゾーンのエラービット数を記憶する。
【００８４】
一実施形態では、全てのプロセッサ４９２に１つのフラグラインがある。別の実施形態では、多様なプロセッサ４９２が、８ビット幅であるフラグバスに接続される８台のプロセッサの単位にグループ化できる。アキュムレータ７００は、フラグバスに接続し、エラーを示すフラグバス内のライン数を加算できる。
【００８５】
１フラグライン又はマルチラインフラグバスを使用するいくつかの実施形態は、各プロセッサ４９２を８つの検出モジュール４８０に接続する。このようにして、各プロセッサ４９２は８ビットのデータについて報告する。実装形態の１つの例では、図１６Ａの工程はハーフゾーンごとに８回実行することができ、図１６Ａの工程の実行のそれぞれが、プロセッサ４９２に関連付けられる８ビットの内の１つのためである。アキュムレータ７００は、図１６Ａの工程の８回全ての実行の結果を蓄積する。
【００８６】
図１７は、プロセッサ４９２が状態マシン２２２にどのようにしてエラービットを報告するかについての一実施形態を示すブロック図である。図１７の実施形態は、多様なプロセッサ４９２が、８ビットフラグバス（Ｆｌａｇ＿Ｂｕｓ［０：７］）に接続される８台のプロセッサ（４９２ａ、４９２ｂ、４９２ｃ、４９２ｄ、４９２ｅ、４９２ｆ、４９２ｇ、４９２ｈ）の単位にグループ化されることを仮定する。プロセッサは、１ビットのデータ、８ビットのデータ、又は別の量のデータにそれぞれ接続できる。８台のプロセッサのグループは、状態マシン２２２からアドレスバスＡＤＤＲを受け取るアドレス選択論理回路８４８と関連付けられる。図１７に示されている一実施形態では、アドレスバスＡＤＤＲは、８台のプロセッサ４９２の各グループを個々にアドレス指定できる。別の実施形態では、アドレスバスＡＤＤＲは、システム全体の各プロセッサ４９２を個々にアドレス指定できる。
【００８７】
プロセッサ４９２ａは、トランジスタ８５０と８５２を介してＦｌａｇ＿Ｂｕｓ［０］に接続される。プロセッサ４９２ｂは、トランジスタ８５４と８５６を介してＦｌａｇ＿Ｂｕｓ［１］に接続される。プロセッサ４９２ｃは、トランジスタ８５８と８６０を介してＦｌａｇ＿Ｂｕｓ［２］に接続される。プロセッサ４９２ｄは、トランジスタ８６２と８６４を介してＦｌａｇ＿Ｂｕｓ［３］に接続される。プロセッサ４９２ｅは、トランジスタ８６６と８６８を介してＦｌａｇ＿Ｂｕｓ［４］に接続される。プロセッサ４９２ｆは、トランジスタ８７０と８７２を介してＦｌａｇ＿Ｂｕｓ［５］に接続される。プロセッサ４９２ｇは、トランジスタ８７４と８７６を介してＦｌａｇ＿Ｂｕｓ［６］に接続される。プロセッサ４９２ｈは、トランジスタ８７８と８８０を介してＦｌａｇ＿Ｂｕｓ［７］に接続される。
【００８８】
プロセッサ４９２ａは、関連メモリセルがエラービットである場合、Ｆｌａｇ＿Ｂｕｓ［０］を引き下げるためにトランジスタ８５２をオンにする。他のプロセッサ（８台のプロセッサの他のグループを形成する）も、該プロセッサの内の任意の１つがエラービットを有するようにＦｌａｇ＿Ｂｕｓ［０］に接続され、Ｆｌａｇ＿Ｂｕｓ［０］が引き下げられる。プロセッサ４９２ｂは、関連メモリセルがエラービットである場合、Ｆｌａｇ＿Ｂｕｓ［１］を引き下げるためにトランジスタ８５６をオンにする。プロセッサ４９２ｃは、関連メモリセルがエラービットである場合、Ｆｌａｇ＿Ｂｕｓ［２］を引き下げるためにトランジスタ８６０をオンにする。プロセッサ４９２ｄは、関連メモリセルがエラービットである場合にＦｌａｇ＿Ｂｕｓ［３］を引き下げるためにトランジスタ８６４をオンにする。プロセッサ４９２ｅは、関連メモリセルがエラービットである場合Ｆｌａｇ＿Ｂｕｓ［４］を引き下げるためにトランジスタ８６８をオンにする。プロセッサ４９２ｆは、関連メモリセルがエラービットである場合にＦｌａｇ＿Ｂｕｓ［５］を引き下げるためにトランジスタ８７２をオンにする。プロセッサ４９２ｇは、関連メモリセルがエラービットである場合にＦｌａｇ＿Ｂｕｓ［６］を引き下げるためにトランジスタ８７６をオンにする。プロセッサ４９２ｈは、関連メモリセルがエラービットである場合にＦｌａｇ＿Ｂｕｓ［７］を引き下げるためにトランジスタ８８０をオンにする。
【００８９】
アドレス選択論理回路８４８は、トランジスタ８５０、８５４、８５８、８６２、８６６、８７０、８７４及び８７８に接続される。状態マシンが、図１７に描かれている８台のプロセッサ（４９２ａ、４９２ｂ、４９２ｃ、４９２ｄ、４９２ｅ、４９２ｆ、４９２ｇ、４９２ｈ）のグループと関連するデータを試験している場合は、アドレス選択論理回路８４８がトランジスタ８５０、８５４、８５８、８６２、８６６、８７０、８７４及び８７８をオンにする。アドレス選択論理回路は、アドレスバスＡＤＤＲを受け取る回路（例えば、組み合わせ論理回路又は他の回路）を含み、正しいアドレスがアドレスバスＡＤＤＲ上にある場合に信号を出力する。一実施形態では、アドレスバスＡＤＤＲは、アドレスラインの集合（例えば、ＡＤＤＲ［０：１２］）と、賛辞アドレスライン［（ＡＤＤＲ’［０：１２］）の集合とを含む。賛辞アドレスライン（ＡＤＤＲ’［０：１２］）は、それらが必ずしもＡＤＤＲ［０：１２］の逆数である必要がないように別々にアサートできる。アドレス選択論理回路８４８は、ＡＤＤＲ［０：１２］の適切なラインと、ＡＤＤＲ’［０：１２］の適切なラインとに接続でき、８台のプロセッサ（４９２ａ、４９２ｂ、４９２ｃ、４９２ｄ、４９２ｅ、４９２ｆ、４９２ｇ、４９２ｈ）のグループがいつ選択されるのかを認識するＡＮＤゲートの集合（又は他の論理回路又は他の回路要素）にそのデータを送信できる。この方式により、８台のプロセッサのグループ１つを選択できる、あるいは８台のプロセッサのグループ複数を選択できる。
【００９０】
フェイルビットがあるかどうかの試験（ステップ７５０、８０４及び８２０を参照）は、（各グループのプロセッサ４９２ａ、４９２ｂ、４９２ｃ、４９２ｄ、４９２ｅ、４９２ｆ、４９２ｇ、４９２ｈの）関連するプロセッサがＦｌａｇ＿Ｂｕｓ［］の適切なラインを引き下げるために（各グループのトランジスタ８５０、８５４、８５８、８６２、８６６、８７０、８７４、８７８の）そのそれぞれのトランジスタをオンにすることと、アキュムレータ７００（又は状態マシン２２２内の別の回路）によって該引き下げられたラインを検出すること、とによって実行される。バイナリ検索工程の間のハーフゾーンの適切な部分のアドレス指定は、アドレスバスＡＤＤＲの適切なラインをアサートすることによって実行される。
【００９１】
図１８は、選択されたワードラインに接続されているメモリセルをプログラミングする工程の図１０の実施形態の代替実施形態を説明するフローチャートである。図１８のステップ６００から６１６は図１０において同じである。図１８の工程でのステップ６１６の検証工程の後、状態マシン２２２は、全てのメモリセルがそれらの目標状態に達したことを検証されたかどうかを、ステップ９０３で決定する。検証された場合、図１８のプログラミング処理は完了となる（ステップ９０４）。ステップ９０２で、全ての選択されたメモリセルがその目標状態に到達したわけではないと決定されると、ステップ９０６で、プログラムカウンタＰＣがプログラム限界値ＰＬＩＭＩＴと照合される。プログラムカウンタＰＣがプログラム制限値未満である場合には、Ｖｐｇｍパルスの大きさはステップサイズ（例えば、０．２から０．４ボルトステップサイズ）分増加され、プログラムカウンタＰＣはステップ９０８で増分される。ステップ９０８の後、工程は次のＶｐｇｍパルスを印加するためにステップ６１４に一巡して戻る。プログラムカウンタＰＣがプログラム限界値未満ではない場合（ステップ９０６）は、ステップ９２０で、（図１０のステップ６１８と同様に）ゾーンごとのエラービット数が決定される。ステップ９２２では、ゾーンごとのエラービット数が、（図１０のステップ６２０と同様に）ゾーンごとの許容限界未満であるかどうかが決定される。許容限界未満である場合、プログラミング処理は、無事に完了したとして処理される（ステップ９２４）。許容限界未満ではない場合、プログラミング処理は失敗したとして処理される（ステップ９２６）。
【００９２】
図１０から図１８に関して説明された技術は、４つのデータ状態記憶装置内に２個のビットのデータ、８つのデータ状態に３ビットのデータ、又は他の配列を記憶するメモリセルとともに使用できる。
【００９３】
本発明の前記の詳細な説明は、図解及び説明のために提示された。網羅的となること、あるいは本発明を開示されている正確な形式に制限することは意図されていない。上記の提示を鑑みて多くの変型及び変形が可能である。説明した実施形態は、本発明の原理及びその実際的な応用例を最もよく説明し、それにより当業者が多様な実施形態で、及び意図された特定の用途に適するような多様な変型で本発明を最もうまく活用できるようにするために選ばれた。本発明の範囲が本明細書に添付される請求項により定められることが意図される。
【図１】
2010511263.tif 000003
【図２】
2010511263.tif 000004
【図３】
2010511263.tif 000005
【図４】
2010511263.tif 000006
【図５Ａ】
2010511263.tif 000007
【図５Ｂ】
2010511263.tif 000008
【図６】
2010511263.tif 000009
【図７】
2010511263.tif 000010
【図８Ａ】
2010511263.tif 000011
【図８Ｂ】
2010511263.tif 000012
【図８Ｃ】
2010511263.tif 000013
【図９】
2010511263.tif 000014
【図１０】
2010511263.tif 000015
【図１１】
2010511263.tif 000016
【図１２】
2010511263.tif 000017
【図１３】
2010511263.tif 000018
【図１４】
2010511263.tif 000019
【図１５】
2010511263.tif 000020
【図１６Ａ】
2010511263.tif 000021
【図１６Ｂ】
2010511263.tif 000022
【図１７】
2010511263.tif 000023
【図１８】
2010511263.tif 000024
【手続補正書】
【提出日】平成21年6月23日(2009.6.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性記憶システムであり、
複数の不揮発性記憶素子と、
前記不揮発性記憶素子と通信する１又は複数の電圧生成回路であり、前記複数の不揮発性記憶素子に検証電圧を提供する前記１又は複数の電圧生成回路と、
前記不揮発性記憶素子と通信する複数の検出回路であり、前記不揮発性記憶素子の状態を検出する検出回路と、
前記検出回路と通信する複数のデータ処理回路と、
前記不揮発性記憶素子の重複する各グループが適切にプログラミングされていない不揮発性記憶素子の閾値数未満を有するかどうかを判断し、前記１つ又は複数の電圧生成回路と前記データ処理回路と通信する制御回路、を備え、
前記データ処理回路は、前記不揮発性記憶素子が適切にプログラミングされていたかどうかに関する表示を前記制御回路に提供する、
不揮発性記憶システム。
【請求項２】
前記制御回路がマルチラインフラグバスを含み、
前記複数のデータ処理回路が、それぞれの不揮発性記憶素子が適切にプログラミングされていたかどうかを示すために前記フラグバスの１つのラインにそれぞれ接続される、
請求項１に記載の不揮発性記憶システム。
【請求項３】
前記制御回路が第１のレジスタと、第２のレジスタと、第３のレジスタとを含み、
前記制御回路が、前記第１のレジスタ、前記第２のレジスタ、及び前記第３のレジスタに接続される入力の集合を有する加算回路をさらに含み、
前記複数の不揮発性記憶素子が、元データの不揮発性記憶素子と、冗長な不揮発性記憶素子とを含み、
前記第３のレジスタが冗長な不揮発性記憶素子のカウントを記憶し、
前記第１のレジスタが、前記重複するグループの内の特定のグループの第１の半分のカウントを記憶し、
前記第２のレジスタが、前記重複するグループ内の前記特定のグループの第２の半分のカウントを記憶する、
請求項１又は２に記載の不揮発性記憶システム。
【請求項４】
前記複数の不揮発性記憶素子が、不揮発性記憶素子及び冗長な不揮発性記憶素子の元データを含み、
前記制御回路が前記不揮発性記憶素子のグループのために適切にプログラミングされていなかった不揮発性記憶素子の合計を計算し、前記合計がそれぞれのグループのために適切にプログラミングされていなかった不揮発性記憶素子の元データの数と、冗長な不揮発性記憶素子の数とをそれぞれ含み、前記制御回路が各合計を限界と比較する、
請求項１〜３のいずれか１項に記載の不揮発性記憶システム。
【請求項５】
前記制御回路が、前記グループの内の少なくとも１つが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有していないと決定する場合に、前記制御回路が前記不揮発性記憶素子のために追加のプログラミングを行わせ、
前記不揮発性記憶素子の前記重複するグループが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満をそれぞれ有すると前記制御回路が判断すると、前記不揮発性記憶素子のためのプログラミングが完了する、
請求項１〜４のいずれか１項に記載の不揮発性記憶システム。
【請求項６】
前記制御回路は、
前記グループの全てが適切にプログラミングされていない不揮発性記憶素子の前記閾値未満を有する場合に、前記不揮発性記憶素子のプログラミングが成功したと判断し、
前記グループの少なくとも１つが、適切にプログラミングされていない不揮発性揮発素子の前記閾値数未満を有さない場合に、前記不揮発性記憶素子のプログラミングが不成功であったと判断する、
請求項１〜５のいずれか１項に記載の不揮発性記憶システム。
【請求項７】
前記制御回路は、
適切にプログラミングされていない第１の不揮発性記憶素子を検出するために特定のグループでバイナリ検索を実行し、適切にプログラミングされていない不揮発性記憶素子のカウントを更新し、前記第１の不揮発性記憶素子に、それが再びカウントされないようにタグを付け、前記バイナリ検索を繰り返すことによって、前記不揮発性記憶素子の前記重複するグループが適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満をそれぞれ有すると判断する、
請求項１〜６のいずれか１項に記載の不揮発性記憶システム。
【請求項８】
前記制御回路がフラグラインを含み、
前記複数のデータ処理回路が、それぞれの不揮発性記憶素子が適切にプログラミングされていたかどうかを示すために前記フラグラインに接続される、
請求項１に記載の不揮発性記憶システム。
【請求項９】
前記不揮発性記憶素子がマルチ状態フラッシュメモリ素子である請求項１〜８のいずれか１項に記載の不揮発性記憶システム。
【請求項１０】
不揮発性記憶装置をプログラミングする方法であり、
不揮発性記憶素子の集合が不揮発性記憶素子の重複するグループを含み、不揮発性記憶素子の前記集合に、プログラミング処理の一部としてプログラミングを受けさせる工程と、
各グループが、適切にプログラミングされていない不揮発性記憶素子の閾値数未満を有するかどうかを試験する試験工程と、
各グループが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有するかどうかに基づいて、前記プログラミング処理を進めるプログラミング工程、
を備える方法。
【請求項１１】
前記プログラミング工程が、
前記グループの少なくとも１つが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有さない場合に、不揮発性記憶素子の前記集合に追加のプログラミングを受けさせるステップと、
前記グループの全てが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有する場合に、前記プログラミング処理を停止するステップ、
を備える請求項１０に記載の方法。
【請求項１２】
前記プログラミング工程が、
前記グループの全てが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有する場合に、前記プログラミング処理が成功したと判断するステップと、
前記グループの少なくとも１つが、適切にプログラミングされていない不揮発性記憶素子の前記閾値数未満を有さない場合に、前記プログラミング処理が不成功であったと判断するステップ、
を備える請求項１０又は１１に記載の方法。
【請求項１３】
前記試験工程が、
適切にプログラミングされていなかった特定のグループの冗長な不揮発性記憶素子の第１の数を判断するステップと、
適切にプログラミングされていなかった前記特定のグループの元の不揮発性記憶素子の第２の数を判断するステップと、
前記第１の数と前記第２の数の合計を前記閾値数と比較するステップ、
を備える請求項１０〜１２のいずれか１項に記載の方法。
【請求項１４】
前記不揮発性記憶素子がセクタ単位でデータを記憶し、
各グループがセクタよりも大きく、少なくとも２つのセクタの部分にわたる、
請求項１０〜１３のいずれか１項に記載の方法。
【請求項１５】
前記試験工程が、
（ａ）適切にプログラミングされていない第１の不揮発性記憶素子を検出するために特定のグループでバイナリ検索を実行するステップと、
（ｂ）適切にプログラミングされていない不揮発性記憶素子のカウントを更新するステップと、
（ｃ）前記第１の不揮発性記憶素子に、それが再度カウントされないようにタグを付けるステップと、
適切にプログラミングされていない不揮発性揮発素子の数を判断するためにステップ（ａ）、（ｂ）、及び（ｃ）を繰り返すステップ、
を備える請求項１０〜１４のいずれか１項に記載の方法。
【国際調査報告】
2010511263.tif 000025
2010511263.tif 000026