(57)【要約】  不揮発性記憶素子の集合に初期プログラミングが実施された後に、例えば、制御が待機モードに入ったときや、他の保留中の読み出しまたは書き込みタスクがないとき等に、非リアルタイムで、高い検証レベルを用いた再プログラミングが実施される。再プログラミングでは、セット中のページを一度にプログラムし、他の読み出しタスクまたは書き込みタスクが保留中になればページ境界で停止し、制御が再度利用可能となれば再開することが可能である。状態フラグによって、ページおよび／またはページセットの再プログラミングが完了したかどうかを識別することが可能である。別の態様では、再プログラミング中に、高いパス電圧が選択されていないワード線に印加される。さらに別の態様では、読み出し電圧のデフォルトセットを用いてエラーカウントが判定され、このカウント値が閾値を超えていれば、代替の読み出し電圧セットが選択される。
2009541909.tif 000002
【特許請求の範囲】
【請求項１】
初期プログラミングにおいて、複数のワード線のうちの最初のワード線から始めて、隣接する各ワード線に順に移行して、複数のワード線のうちの最後のワード線に到達するまで、複数のワード線を介して複数の不揮発性記憶素子をプログラミングするステップと、
初期プログラミングが完了した後に、複数のワード線を介して複数の不揮発性記憶素子を再プログラミングするステップ、
を有することを特徴とする不揮発性ストレージを動作させる方法。
【請求項２】
複数の不揮発性記憶素子が、複数のワード線のうちの最初のワード線から始めて、隣接する各ワード線に順に移行して、複数のワード線のうちの最後のワード線に到達するまで再プログラミングされることを特徴とする請求項１に記載の方法。
【請求項３】
複数のワード線のうちの１つと接続されている不揮発性記憶素子をプログラミングするときに、初期プログラミングにおいては、複数のワード線のうちの少なくとも１つの他のワード線に対して第１のパス電圧を印加し、複数のワード線のうちの前記１つと接続されている不揮発性記憶素子をプログラミングするときに、再プログラミングにおいては、前記少なくとも１つの他のワード線に対して、第１のパス電圧とは異なる第２のパス電圧を印加することを特徴とする請求項１に記載の方法。
【請求項４】
第２のパス電圧が、第１のパス電圧より高いことを特徴とする請求項３に記載の方法。
【請求項５】
初期プログラミングにおいては、第１の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされ、再プログラミングにおいては、第１の閾値電圧検証レベルのうちの対応するレベルより高い第２の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされることを特徴とする請求項１に記載の方法。
【請求項６】
初期プログラミングと再プログラミングが、複数の不揮発性記憶素子が配列されているブロックに対して実行されることを特徴とする請求項１に記載の方法。
【請求項７】
ブロックに対して再プログラミングが完了しているか否かを示すプログラミング状態情報を記憶するステップをさらに有していることを特徴とする請求項６に記載の方法。
【請求項８】
複数の不揮発性記憶素子のプログラミングを管理する少なくとも１つの回路が待機モードに入った後に、再プログラミングを異なる時点で実行することを特徴とする請求項１に記載の方法。
【請求項９】
優先順位が高い保留中のタスクが他にないときに、再プログラミングを異なる時点で実行することを特徴とする請求項１に記載の方法。
【請求項１０】
優先順位が高い保留中のタスクが他にないときに、再プログラミングにおいて、複数の不揮発性記憶素子の一部をプログラミングし、続いて、再プログラミングを一時停止して優先順位が高い別のタスクをサービスし、続いて、優先順位が高い保留中のタスクが再度なくなったときに、再プログラミングを再開することを特徴とする請求項１に記載の方法。
【請求項１１】
複数の不揮発性記憶素子が複数ページのデータを記憶し、各ページが単位としてプログラム可能であり、
各ページに対して、ページが再プログラムされたか否かを示すプログラミング状態情報が記憶されることを特徴とする請求項１に記載の方法。
【請求項１２】
複数の不揮発性記憶素子が、データのページによって、一度に１ページずつ再プログラムされ、各ページが単位としてプログラム可能であることを特徴とする請求項１に記載の方法。
【請求項１３】
複数の不揮発性記憶素子に対して再プログラミングが完了したか否かを示すプログラミング状態情報を記憶するステップをさらに有することを特徴とする請求項１に記載の方法。
【請求項１４】
複数の不揮発性記憶素子と、
初期プログラミングにおいて、複数のワード線のうちの最初のワード線から始めて、隣接する各ワード線に順に移行して、複数のワード線のうちの最後のワード線に到達するまで、複数のワード線を介して複数の不揮発性記憶素子をプログラミングし、初期プログラミングが完了した後に、複数のワード線を介して複数の不揮発性記憶素子を再プログラミングする１または複数の回路、
を有する不揮発性記憶システム。
【請求項１５】
複数の不揮発性記憶素子が、複数のワード線のうちの最初のワード線から始めて、隣接する各ワード線に順に移行して、複数のワード線のうちの最後のワード線に到達するまで再プログラミングされることを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項１６】
複数のワード線のうちの１つと接続されている不揮発性記憶素子をプログラミングするときに、１または複数の回路が、初期プログラミングにおいては、複数のワード線のうちの少なくとも１つの他のワード線に対して第１のパス電圧を印加し、複数のワード線のうちの前記１つと接続されている不揮発性記憶素子をプログラミングするときに、再プログラミングにおいては、前記少なくとも１つの他のワード線に対して、第１のパス電圧とは異なる第２のパス電圧を印加することを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項１７】
第２のパス電圧が、第１のパス電圧より高いことを特徴とする請求項１６に記載の不揮発性記憶システム。
【請求項１８】
初期プログラミングにおいては、第１の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされ、再プログラミングにおいては、第１の閾値電圧検証レベルのうちの対応するレベルより高い第２の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされることを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項１９】
初期プログラミングと再プログラミングが、複数の不揮発性記憶素子が配列されているブロックに対して実行されることを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項２０】
ブロックに対して再プログラミングが完了しているか否かを示すプログラミング状態情報が記憶されることを特徴とする請求項１９に記載の不揮発性記憶システム。
【請求項２１】
少なくとも１つの回路が待機モードに入った後に、再プログラミングが異なる時点で実行されることを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項２２】
優先順位が高い保留中のタスクが他にないときに、再プログラミングが異なる時点で実行されることを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項２３】
１または複数の回路が、優先順位が高い保留中のタスクが他にないときに、再プログラミングにおいて、複数の不揮発性記憶素子の一部をプログラミングし、続いて、再プログラミングを一時停止して優先順位が高い別のタスクをサービスし、続いて、優先順位が高い保留中のタスクが再度なくなったときに、再プログラミングを再開することを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項２４】
複数の不揮発性記憶素子が複数ページのデータを記憶し、各ページが単位としてプログラム可能であり、
各ページに対して、ページが再プログラムされたか否かを示すプログラミング状態情報が記憶されることを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項２５】
複数の不揮発性記憶素子が、データのページによって、一度に１ページずつ再プログラムされ、各ページが単位としてプログラム可能であることを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項２６】
複数の不揮発性記憶素子に対して再プログラミングが完了したか否かを示すプログラミング状態情報が記憶されることを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項２７】
複数の不揮発性記憶素子が、マルチレベル記憶素子を含むことを特徴とする請求項１４に記載の不揮発性記憶システム。
【請求項２８】
複数の不揮発性記憶素子が、ＮＡＮＤストリング中に配列されていることを特徴とする請求項１４に記載の不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不揮発性メモリに関する。
【背景技術】
【０００２】
半導体メモリは、さまざまな電子装置内で、ますます多く使用されるようになっている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピューティングデバイス、非モバイルコンピューティングデバイス、およびその他のデバイスの中で使用されている。電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）およびフラッシュメモリは、最も普及している不揮発性半導体メモリの一つである。フラッシュメモリもまたＥＥＰＲＯＭの一種であるが、全メモリアレイまたはメモリの一部の内容は、従来のフル機能を備えたＥＥＰＲＯＭとは異なり、一度に消去できる。
【０００３】
従来のＥＥＰＲＯＭとフラッシュメモリは共に、半導体基板中のチャネル領域の上方に位置するとともにチャネル領域から絶縁されている浮遊ゲートを利用している。この浮遊ゲートは、ソース領域とドレイン領域の間に位置している。制御ゲートが、浮遊ゲートの上方に設けられているとともに浮遊ゲートから絶縁されている。このようにして形成されたトランジスタの閾値電圧は、浮遊ゲートに保持されている電荷の量によって制御される。すなわち、ソースとドレイン間を導通させてトランジスタをオンさせる前に制御ゲートに印加しなければならない電圧の最小値は、浮遊ゲート上の電荷のレベルによって制御される。
【０００４】
ＥＥＰＲＯＭデバイスおよびフラッシュメモリデバイスの中には、浮遊ゲートを使用して２つの範囲の電荷を記憶する記憶素子を有するものがあり、たとえば、消去された状態とプログラムされた状態の２つの状態のどちらかとしてプログラム／消去することが可能である。このようなフラッシュメモリデバイスは、バイナリフラッシュメモリデバイスと呼ばれることもある。その理由は、各記憶素子が１ビットのデータを記憶するからである。
【０００５】
マルチステート（マルチレベルとも呼ばれる）フラッシュメモリデバイスは、複数の異なる許容／有効プログラム閾値電圧範囲を特定することによって実現される。これらの異なる閾値電圧範囲はそのそれぞれが、メモリデバイスの中に符号化されたデータビットのセットの所定の値に対応している。例えば、記憶素子が４つの異なる閾電圧範囲に対応する４つの異なる電荷帯のうちの一つの状態にあるときに、各記憶素子が２ビットのデータを記憶できる。
【０００６】
一般的に、プログラムが動作している間に制御ゲートに印加されるプログラム電圧（Ｖｐｇｍ）は、経時にともない大きさが増加する一連のパルスとして印加される。可能な一実施形態では、これらパルスの大きさは、連続するパルスごとに所定のステップサイズだけ（例えば、０．４Ｖ）だけ増加する。Ｖｐｇｍは、フラッシュ記憶素子の制御ゲートに印加することが可能である。プログラムパルス間の期間に、検証動作が実行される。すなわち、並列にプログラムされている記憶素子のセットの中の各記憶素子のプログラミングレベルを、連続するプログラミングパルス間で読み取って、このレベルによって、記憶素子がプログラムすべき検証レベル以上であるか否かを判定する。マルチステートフラッシュ記憶素子アレイの場合、記憶素子のそれぞれの状態に対して検証ステップを実行し、記憶素子自身のデータに関連する検証レベルに到達したかを判定してもよい。例えば、データを４つの状態で記憶することが可能なマルチステート記憶素子は、３つの比較ポイントに対して検証動作を実行する必要がある。
【０００７】
ＥＥＰＲＯＭデバイスまたはＮＡＮＤフラッシュメモリデバイスなどのフラッシュメモリデバイスをプログラムするとき、一般的には、制御ゲートにプログラム電圧を印加するとともにビット線を接地する。すると、記憶素子のチャネルから浮遊ゲートに電子が注入される。電子が浮遊ゲート中に蓄積されると、浮遊ゲートは負に帯電して、記憶素子の閾値電圧が引き上げられ、これによって、記憶素子はプログラムされた状態になる。このようなプログラミングに関するさらなる情報は、双方ともそれらの全体を参照して本明細書に組み込む「Ｓｏｕｒｃｅ  Ｓｉｄｅ  Ｓｅｌｆ  Ｂｏｏｓｔｉｎｇ  Ｔｅｃｈｎｉｑｕｅ  Ｆｏｒ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ」という名称の米国特許第６，８５９，３９７号および「Ｄｅｔｅｃｔｉｎｇ  Ｏｖｅｒ  Ｐｒｏｇｒａｍｍｅｄ  Ｍｅｍｏｒｙ」という名称の米国特許第６，９１７，５４２号に見受けられる。
【０００８】
しかしながら、選択された記憶素子をプログラミングしている間においては、隣接する記憶素子の電荷状態が電界効果結合のために変更されることがあるが、この現象は、参照して本明細書に組み込む、「Ｈｉｇｈ  ｄｅｎｓｉｔｙ  ｎｏｎ−ｖｏｌａｔｉｌｅ  ｆｌａｓｈ  ｍｅｍｏｒｙ  ｗｉｔｈｏｕｔ  ａｄｖｅｒｓｅ  ｅｆｆｅｃｔｓ  ｏｆ  ｅｌｅｃｔｒｉｃ  ｆｉｅｌｄ  ｃｏｕｐｌｉｎｇ  ｂｅｔｗｅｅｎ  ａｄｊａｃｅｎｔ  ｆｌｏａｔｉｎｇ  ｇａｔｅｓ」という名称の米国特許第５，８６７，４２９号に記載されている。一般に、電界効果結合が起きると、隣接する記憶素子に蓄積される電荷の量が変化するために、記憶素子の閾値電圧がシフトする。例えば、所与のワード線上の記憶素子は、同じワード線上にある記憶素子や隣のワード線上にある記憶素子による静電結合の影響を受ける可能性がある。隣接する記憶素子による結合が最も強いが、この結合のために、既にプログラムされた記憶素子の閾値電圧がシフトして高くなる。記憶素子のセットの閾値電圧分布も同様に広がる。これは、特に、閾値電圧分布が緊密していたほうが有利なマルチレベル記憶素子の場合には好ましくない現象である。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、静電結合を軽減するように不揮発性ストレージを動作させるシステムと方法を提供することによって、上記の問題や他の問題を解決する。
【課題を解決するための手段】
【００１０】
一実施形態では、不揮発性ストレージの動作が、初期プログラミングにおいて、最初のワード線から始めて、隣接する各ワード線に順に移行して、最後のワード線に到達するまで、ワード線を介して不揮発性記憶素子をプログラミングするステップを含む。初期プログラミングが完了した後に、同じワード線を介して不揮発性記憶素子を再プログラミングする。初期プログラミングと再プログラミングは、例えば、不揮発性記憶素子のブロックに対して実行してもよい。
【００１１】
不揮発性記憶素子は、初期プログラミングと再プログラミングのそれぞれにおいて閾値電圧（ＶＴＨ）検証レベルの第１のセットと第２のセットを用いてプログラムすることが可能であり、ここで、第２のセットのＶＴＨ電圧検証レベルのそれぞれは、第１のセットのＶＴＨ電圧検証レベルのうちの対応するレベルより高い。このように、再プログラミングにおいては、記憶素子のＶＴＨを増加するようシフトさせる。さらに、コンピュータの負荷を低減するために、マネージング回路によって、再プログラミングをバックグラウンドプロセスとして実行し、スタンドバイモードでは実行しないようすることができる。さらに、管理回路の利用可能状況に応じて、１または複数の開始・停止・再開サイクル内において、再プログラミングを開始、一時停止、再開することが可能である。再プログラミングを、ページ毎に実行して、データのページの最後で停止し、次のデータのページの最初で再開するようにしてもよい。フラグビットを用いて各ページが再プログラミングされたか否かを示し、これによって、各ページのプログラミング状態を追跡してもよい。フラグビットをブロックレベルで用いることによって、ブロックレベルでの追跡も可能である。ページレベルでフラグビットを用いると、ブロックレベルでの追跡も可能である。
【００１２】
さらに、選択されていないワード線に印加されるパス電圧（Ｖｐａｓｓ）を、初期プログラミング中よりも再プログラミング中で高くすることが可能である。再プログラミング中においては、ドレイン側のワード線下に存在する記憶素子は消去されることがないため、現在高い閾値電圧にプログラムしている記憶素子が反転状態に達したら、Ｖｐａｓｓ昇圧電位をさらに高くしなければならない。したがって、Ｖｐａｓｓを上昇することは、再プログラミング中には有利なことである。
【００１３】
別の実施形態では、不揮発性ストレージの動作が、不揮発性記憶素子のセットの第１の部分を第１のＶＴＨ読み出しレベルを用いて読み出すステップと、エラー訂正符号および／またはエラー検出コードを用いる等して読み出しからエラーカウントを判定するステップと、エラーカウントが閾値を超える場合に、不揮発性記憶素子のセットの第１の部分を第１のＶＴＨ読み出しレベルとは異なる第２のＶＴＨ読み出しレベルを用いて再読み出しするステップを含む。したがって、不揮発性記憶素子の第１の部分が初期プログラミングだけを経過したのか否かを推定することが可能であり、この場合には、第１のＶＴＨ読み出しレベルの代わりに第２のＶＴＨ読み出しレベルで第１の部分を読み出すと多くのエラーが検出される。また、不揮発性記憶素子の第１の部分が再プログラミングも経過したことを推定することが可能であり、この場合には、第２のＶＴＨ読み出しレベルの代わりに第１のＶＴＨ読み出しレベルで第１の部分を読み出すと多くのエラーが検出される。この推定が間違っていたら、不揮発性記憶素子の第１の部分が、別のＶＴＨ読み出しレベルで再読み出しされる。さらに、第１の部分の読み出し時に正しいと判定されたものと同じＶＴＨ読み出しレベルを用いて、不揮発性記憶素子の第２の部分の初期読み出しを試行することができる。不揮発性記憶素子の各部分がデータのページをそれぞれ記憶してページ毎にプログラミングが進行し、これによって、各ページに対して正しいＶＴＨ読み出しレベルが決定されて用いられる。
【００１４】
さらに別の実施形態では、不揮発性ストレージの動作が、初期プログラミングにおいて、所定のワード線と接続されている不揮発性記憶素子をプログラミングするときに、少なくとも１つの他のワード線に対して第１のパス電圧が印加されるように、不揮発性記憶素子をワード線を介してプログラミングするステップと、初期プログラミングが完了した後に、ワード線のうちの所定の１つと接続されている不揮発性記憶素子を再プログラミングするときに、第１のパス電圧とは異なる第２のパス電圧が、少なくとも他の１つのワード線に印加されるように、ワード線を介して不揮発性記憶素子を再プログラミングするステップを含む。例えば、第２のパス電圧は、上記の理由により、第１のパス電圧より高くなることがある。
【００１５】
不揮発性ストレージと不揮発性記憶システムとを動作させる対応する方法が提供される。不揮発性記憶システムは、不揮発性記憶素子のセットと、本書に記載された不揮発性記憶素子のセットを動作させる１つまたは複数の回路を備える。
【図面の簡単な説明】
【００１６】
【図１】ＮＡＮＤストリングの上面図である。
【図２】図１のＮＡＮＤストリングの等価回路図である。
【図３】図１のＮＡＮＤストリングの断面図である。
【図４】３つのＮＡＮＤストリングを示す回路図である。
【図５】本開示の１つまたは複数の実施形態を実施するために用いることが可能なフラッシュメモリシステムの例を示すブロック図である。
【図６】メモリアレイをブロック化した編成例を示す図である。
【図７Ａ】消去状態からプログラム状態に直接プログラミングするマルチステートデバイスの閾値電圧分布のセットの例を示す図である。
【図７Ｂ】再プログラミング後の図７Ａの閾値電圧分布のセットの例を示す図である。
【図８】不揮発性ストレージをプログラミングする一連のプログラミングパルスを示す図である。
【図９】不揮発性記憶素子の線形プログラミングレジームと非線形プログラミングレジームを示す図である。
【図１０】異なる２ページのデータを記憶するマルチステート記憶素子をプログラミングする２パス式技術の例を示す図である。
【図１１Ａ】第１のステップでは消去状態から中間状態へ、第２のステップでは消去状態から第１の状態「Ａ」へ、中間状態から第２の状態「Ｂ」もしくは第３の状態「Ｃ」へと２ステップでプログラミングするマルチステートデバイスの閾値電圧分布の集合の例を示す図である。
【図１１Ｂ】第１のステップでは消去状態から中間状態へ、第２のステップでは消去状態から第１の状態「Ａ」へ、中間状態から第２の状態「Ｂ」もしくは第３の状態「Ｃ」へと２ステップでプログラミングするマルチステートデバイスの閾値電圧分布の集合の例を示す図である。
【図１１Ｃ】第１のステップでは消去状態から中間状態へ、第２のステップでは消去状態から第１の状態「Ａ」へ、中間状態から第２の状態「Ｂ」もしくは第３の状態「Ｃ」へと２ステップでプログラミングするマルチステートデバイスの閾値電圧分布の集合の例を示す図である。
【図１２】初期プログラミングと再プログラミングを用いて不揮発性記憶素子のブロックをプログラミングするプロセスの一実施形態を説明するフローチャートである。
【図１３】一連のプログラミングパルスを用いて不揮発性ストレージをプログラミングするプロセスの一実施形態を説明するフローチャートである。
【図１４Ａ】初期プログラミングと再プログラミングとで異なるパス電圧を用いる昇圧技術を示す図である。
【図１４Ｂ】初期プログラミングと再プログラミングとで異なるパス電圧を用いる昇圧技術を示す図である。
【図１４Ｃ】初期プログラミングと再プログラミングとで異なるパス電圧を用いる昇圧技術を示す図である。
【図１４Ｄ】初期プログラミングと再プログラミングとで異なるパス電圧を用いる昇圧技術を示す図である。
【図１４Ｅ】初期プログラミングと再プログラミングとで異なるパス電圧を用いる昇圧技術を示す図である。
【図１４Ｆ】初期プログラミングと再プログラミングとで異なるパス電圧を用いる昇圧技術を示す図である。
【図１５】不揮発性ストレージのブロック内のデータのページをフラグを用いて読み出すプロセスの一実施形態を説明するフローチャートである。
【図１６】不揮発性ストレージのブロック内のデータのページをエラーカウントを用いて読み出すプロセスの一実施形態を説明するフローチャートである。
【発明を実施するための形態】
【００１７】
本発明の実施に適した不揮発性記憶システムの一例では、ＮＡＮＤフラッシュメモリ構造を使用する。ＮＡＮＤフラッシュメモリ構造では、ＮＡＮＤストリング内の２つの選択ゲートの間に複数のトランジスタが直列に配置されている。図１は、１つのＮＡＮＤストリングを示す上面図である。図２は、その等価回路である。図１および図２に示すＮＡＮＤストリングは、直列の４つのトランジスタ１００、１０２、１０４、１０６を備え、第１の選択ゲート１２０と第２の選択ゲート１２２との間に挟まれている。選択ゲート１２０および１２２は、ＮＡＮＤストリングをそれぞれビット線コンタクト１２６およびソース線コンタクト１２８に接続する。選択ゲート１２０および１２２は、それぞれ制御ゲート１２０ＣＧおよび１２２ＣＧに適切な電圧を印加することによって制御される。トランジスタ１００、１０２、１０４および１０６のそれぞれは、制御ゲートと浮遊ゲートを有する。具体的には、トランジスタ１００は、制御ゲート１００ＣＧと浮遊ゲート１００ＦＧを有し、トランジスタ１０２は、制御ゲート１０２ＣＧと浮遊ゲート１０２ＦＧを有し、トランジスタ１０４は、制御ゲート１０４ＣＧと浮遊ゲート１０４ＦＧを有し、トランジスタ１０６は、制御ゲート１０６ＣＧと浮遊ゲート１０６ＦＧを有する。制御ゲート１００ＣＧ、１０２ＣＧ、１０４ＣＧおよび１０６ＣＧは、ワード線ＷＬ３、ＷＬ２、ＷＬ１およびＷＬ０にそれぞれ接続されている。可能な一つの設計では、トランジスタ１００、１０２、１０４および１０６のそれぞれが、セルまたは記憶素子とも呼ばれる記憶素子である。他の実施形態では、記憶素子が複数のトランジスタを含んでいてもよく、または図１および図２に示したものと異なっていてもよい。選択ゲート１２０は、ドレイン選択線ＳＧＤに接続され、選択ゲート１２２は、ソース選択線ＳＧＳに接続される。
【００１８】
図３は、上述のＮＡＮＤストリングの断面図を示す。ＮＡＮＤストリングのトランジスタはｐ−ウェル領域１４０内に形成されている。各トランジスタは、制御ゲート（１００ＣＧ、１０２ＣＧ、１０４ＣＧおよび１０６ＣＧ）と浮遊ゲート（１００ＦＧ、１０２ＦＧ、１０４ＦＧおよび１０６ＦＧ）からなるスタックゲート構造を備えている。浮遊ゲートは、酸化膜または他の誘電体膜上のｐ−ウェルの表面上に形成されている。制御ゲートは、浮遊ゲート上に位置しており、制御ゲートと浮遊ゲートは、ポリシリコン間誘電体層によって分離されている。記憶素子（１００、１０２、１０４および１０６）の制御ゲートは、ワード線を形成している。Ｎ＋ドープ層１３０、１３２、１３４、１３６および１３８は隣接する記憶素子間で共有されており、これにより記憶素子は相互に直列に接続されてＮＡＮＤストリングを形成している。これらのＮ＋ドープ層は、各記憶素子のソースおよびドレインを形成している。例えば、Ｎ＋ドープ層１３０は、トランジスタ１２２のドレイン、および、トランジスタ１０６のソースとして働く。Ｎ＋ドープ層１３２は、トランジスタ１０６のドレイン、および、トランジスタ１０４のソースとして働く。Ｎ＋ドープ層１３４は、トランジスタ１０４のドレイン、および、トランジスタ１０２のソースとして働く。Ｎ＋ドープ層１３６は、トランジスタ１０２のドレイン、および、トランジスタ１００のソースとして働く。Ｎ＋ドープ層１３８は、トランジスタ１００のドレイン、および、トランジスタ１２０のソースとして働く。Ｎ＋ドープ層１２６は、ＮＡＮＤストリングのビット線につながっており、Ｎ＋ドープ層１２８は、複数のＮＡＮＤストリングの共通ソース線につながっている。
【００１９】
図１〜図３では、ＮＡＮＤストリング内に４つのトランジスタを使用する構成が一例として挙げられているが、本明細書に記載される技術によって使用されるＮＡＮＤストリングは、４つ未満の記憶素子を有していてもよく、または、４つを超える記憶素子を有していてもよい。例えば、一部のＮＡＮＤストリングは、８、１６、３２、６４あるいはそれ以上の数の記憶素子を含むことができる。
【００２０】
本発明は、例えば、ファウラー・ノルドハイムトンネル現象によってプログラムされたり消去されたりするデバイスで利用することが可能である。本発明はまた、浮遊ゲートの代わりに、酸化シリコン、窒化シリコン、酸化シリコン（ＯＮＯ）から形成される誘電体などの三層誘電体を用いて電荷を蓄積するデバイスにも応用可能である。ＯＮＯから形成される三層誘電体は、導電性制御ゲートと記憶素子チャネル上の半導体基板の表面とによって挟まれている。本発明はまた、例えば、浮遊ゲートの代わりにナノクリスタルなどの導電性材料の小さいアイランドを電荷蓄積領域として用いるデバイスにも応用することが可能である。このようなメモリデバイスは、浮遊ゲートベースのＮＡＮＤフラッシュデバイスと同じような方法でプログラムと消去を実行することが可能である。
【００２１】
図４は、３つのＮＡＮＤストリングを示す回路図である。ＮＡＮＤ構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのＮＡＮＤストリングを含む。例えば、３つのＮＡＮＤストリング４２０、４４０および４６０を、さらに多くの数のＮＡＮＤストリングを有するメモリアレイ中に示す。これら各ＮＡＮＤストリングは、２つの選択トランジスタと４つの記憶素子を含む。例えば、ＮＡＮＤストリング４２０は、選択トランジスタ４２２および４２７ならびに記憶素子４２３〜４２６を含み、ＮＡＮＤストリング４４０は、選択トランジスタ４４２および４４７ならびに記憶素子４４３〜４４６を含み、ＮＡＮＤストリング４６０は、選択トランジスタ４６２および４６７ならびに記憶素子４６３〜４６６を含む。各ＮＡＮＤストリングは、その選択トランジスタ（例えば選択トランジスタ４２７、４４７または４６７）によってソース線に接続されている。選択線ＳＧＳを用いて、ソース側の選択ゲートが制御される。さまざまなＮＡＮＤストリング４２０、４４０および４６０が、ドレイン選択線ＳＧＤによって制御される選択トランジスタ４２２、４４２、４６２などによって各ビット線４２１、４４１および４６１に接続されている。他の実施形態では、選択線が必ずしも共通である必要はない。ワード線ＷＬ３は、記憶素子４２３、４４３および４６３の制御ゲートに接続されている。ワード線ＷＬ２は、記憶素子４２４、４４４および４６４の制御ゲートに接続されている。ワード線ＷＬ１は、記憶素子４２５、４４５および４６５の制御ゲートに接続されている。ワード線ＷＬ０は、記憶素子４２６、４４６および４６６の制御ゲートに接続されている。理解されるように、各ビット線と各ＮＡＮＤストリングは、アレイや記憶素子のセットを含む列を備えている。ワード線（ＷＬ３、ＷＬ２、ＷＬ１およびＷＬ０）は、アレイやセットを含む行を備えている。各ワード線は、行の中の各記憶素子の制御ゲートに接続されている。例えば、ワード線ＷＬ２は記憶素子４２４、４４４および４６４の制御ゲートに接続されている。実際は、１つのワード線上に何千もの記憶素子が存在し得る。
【００２２】
各記憶素子はデータを記憶することが可能である。例えば、１ビットのデジタルデータを記憶するときには、記憶素子の可能な閾値電圧（ＶＴＨ）の範囲を２つの範囲に分割して、これらの範囲に論理データ「１」および論理データ「０」を割り当てる。ＮＡＮＤタイプのフラッシュメモリの一例では、記憶素子が消去されればＶＴＨが負となり、論理「１」と定義される。プログラム動作後はＶＴＨが正となり、論理「０」と定義される。ＶＴＨが負であるときに読み取り動作を試みると、記憶素子はオンとなって、論理「１」が記憶されていることが示される。ＶＴＨが正であるときに読み取り動作を試みると、記憶素子はオンとはならず、論理「０」が記憶されていることが示される。記憶素子はまた、複数のレベルの情報、例えば、複数ビットのデジタルデータを記憶することが可能である。この場合、ＶＴＨ値の範囲は、データのレベルの数に分割される。例えば、４レベルの情報が記憶される場合には、データ値「１１」、「１０」、「０１」および「００」に対して４つのＶＴＨ範囲が割り当てられる。ＮＡＮＤタイプのメモリの一例では、消去動作後のＶＴＨは負であり、「１１」と定義される。正のＶＴＨ値は、状態「１０」、「０１」および「００」に対して用いられる。記憶素子にプログラムされるデータと素子の閾値電圧範囲との間の具体的な関係は、記憶素子に対して採用されるデータ符号化方式によって異なる。例えば、その双方の全体を参照して本明細書に組み込む米国特許第６，２２２，７６２号と米国特許出願公開公報第２００４／０２５５０９０号には、マルチステートフラッシュ記憶素子に対するさまざまなデータ符号化方式が記載されている。
【００２３】
ＮＡＮＤタイプのフラッシュメモリとその動作の関連の例は、その各々を参照して本明細書に組み込む米国特許第５，３８６，４２２号、同第５，５２２，５８０号、同第５，５７０，３１５号、同第５，７７４，３９７号、同第６，０４６，９３５号、同第６，４５６，５２８号および同６，５２２，５８０号の明細書に記載されている。
【００２４】
フラッシュ記憶素子をプログラミングするときには、プログラム電圧をその記憶素子の制御ゲートに印加して、この記憶素子と接続されているビット線を接地する。チャネルからの電子が浮遊ゲート中に注入される。電子が浮遊ゲート中に蓄積されると、この浮遊ゲートは負に帯電され、この記憶素子のＶＴＨが上昇する。プログラム電圧をプログラムされている記憶素子の制御ゲートに印加するときには、このプログラム電圧を該当するワード線に印加する。上述したように、このワード線も、同じワード線を共有する他のＮＡＮＤストリングの各々中の１つの記憶素子に接続されている。例えば、図４の記憶素子４２４をプログラミングする場合、プログラム電圧は記憶素子４４４および４６４の制御ゲートにも印加される。
【００２５】
しかしながら、所定の記憶素子と、その記憶素子とある程度結合性を有する他の記憶素子（例えば、同じワード線やビット線を共有している場合）とをプログラミングしたり読み出したりするときには、記憶素子に蓄積されている電荷がシフトするおそれがある。具体的には、記憶素子同士間の電界結合のために、蓄積電荷レベルのシフトが生じる。この問題は、集積回路製造技術の向上によって記憶素子間のスペースが減少するにつれて深刻な問題となる。この問題は、互いに異なった時点でプログラムされた互いに隣接した記憶素子の２つのグループ間で極めて著しく発生する。１つのグループの記憶素子は、１つのセットのデータに対応する電荷レベルを追加するようにプログラムされる。第２のグループの記憶素子を第２のセットのデータにプログラムした後に、第２のグループの記憶素子の電荷が第１のグループの記憶素子に対して静電結合するために、第１のグループの記憶素子から読み出すときの電荷レベルが、頻繁に、プログラムされたものとは異なる値に変化する。このように、結合の影響は、記憶素子がプログラムされる順序、すなわち、プログラミング中にワード線を横断する順序によって異なる。常にではないが、一般的には、ＮＡＮＤストリングは、ソース側のワード線から始めてソース側からドレイン側に、一度に１つのワード線の割合で進行して、ドレイン側のワード線までプログラムされる。
【００２６】
所与の記憶素子に対する静電結合の影響は、例えば、同じＮＡＮＤストリング及び同じワード線に存在する他の記憶素子によって引き起こされ得る。例えば、記憶素子４４４はワード線ＷＬ２に沿って１つおきに存在する他の記憶素子を含む第１の記憶素子グループの一部であり、このグループは１ページのデータを記憶する。記憶素子４２４および４６４は、別のページのデータを記憶する第２の記憶素子グループの一部である。記憶素子４４４の後に第２の記憶素子グループがプログラムされると、記憶素子４４４に対して静電結合が発生する。このワード線上で直接隣接している記憶素子である記憶素子２４および４６４からの結合が最も強力である。
【００２７】
同様に、記憶素子４４４は、同じＮＡＮＤストリング４４０上にある記憶素子が記憶素子４４４より後にプログラミングされると影響を受けることがある。記憶素子４４４にとっては、ＮＡＮＤストリング上で直接隣接している記憶素子である４４３および／または４４５からの結合が最も強力である。例えば、ＮＡＮＤストリング４４０内の記憶素子が４４６、４４５、４４４および４４３の順でプログラムされた場合、記憶素子４４４は記憶素子４４３からの結合の影響を受け易い。一般に、記憶素子４４４に対して対角線上に配列されている記憶素子（すなわち、記憶素子４２３、４６３、４２５および４６５）は、記憶素子４４４に対する結合の約２０％を生じさせ得る。これに対し、同じワード線または同じＮＡＮＤストリング上で直接隣接している記憶素子４２４、４６４、４４３および４４５は、結合の約８０％を生じさせる。この結合は、場合によっては記憶素子のＶＴＨを約０．５Ｖだけ変動するのに十分なほど強力であるが、この数値は、読み出しエラーを引き起こし、グループの記憶素子のＶＴＨの分布を拡大させるのに十分な値である。
【００２８】
図５は、本開示の１または複数の実施形態を実施するために使用できるフラッシュメモリシステムの一実施形態のブロック図である。他のシステムおよび実施も同様に使用することができる。記憶素子アレイ５０２は、列制御回路５０４と、行制御回路５０６と、Ｃ−ソース制御回路５１０と、ｐ−ウェル制御回路５０８とによって制御される。列制御回路５０４は、記憶素子内に記憶されたデータを読み出すために、プログラム動作中の記憶素子の状態を判定するために、および、ビット線の電位レベルを制御してプログラミングおよび消去を促進または抑止するために、記憶素子アレイ５０２のビット線に接続されている。行制御回路５０６は、ワード線のうちのいずれかを選択するために、読み出し電圧を印加するために、列制御回路５０４によって制御されるビット線電位レベルと組み合わされたプログラム電圧を印加するために、および、消去電圧を印加するために、ワード線に接続されている。Ｃ−ソース制御回路５１０は、記憶素子に接続された共通ソース線（図７に「Ｃ−ソース」として示す）を制御する。Ｐ−ウェル制御回路５０８は、ｐ−ウェル電圧を制御する。
【００２９】
記憶素子内に記憶されたデータは、列制御回路５０４によって読み出され、データ入力／出力バッファ５１２を経由して、外部入力／出力線に出力される。記憶素子内に記憶されるプログラムデータは、外部入力／出力線を経由してデータ入力／出力バッファ５１２に入力され、列制御回路５０４に転送される。外部入力／出力線は、コントローラ５１８に接続される。
【００３０】
フラッシュメモリデバイスを制御するためのコマンドデータは、コントローラ５１８に入力される。コマンドデータは、どのような動作が要求されているのかをフラッシュメモリに通知する。入力コマンドは、制御回路５１５の一部である状態マシン５１６に転送される。状態マシン５１６は、列制御回路５０４と、行制御回路５０６と、Ｃ−ソース制御回路５１０と、ｐ−ウェル制御回路５０８と、データ入力／出力バッファ５１２とを制御する。状態マシン５１６はまた、レディ／ビジーや、パス／フェイルなどの、フラッシュメモリのステータスデータを出力することが可能である。
【００３１】
コントローラ５１８は、パーソナルコンピュータ、デジタルカメラ、パーソナルデジタルアシスタントなどのホストシステムに接続されているか、あるいは、接続可能である。コントローラ５１８は、メモリアレイ５０２へのデータの記憶またはメモリアレイ５０２からのデータの読み取りなどのコマンドを起動させ、かつ、このようなデータを提供または受信するホストと通信を行う。コントローラ５１８は、このようなコマンドを、制御回路５１５の一部であるコマンド回路５１４が解読して実行可能なコマンド信号に変換する。コマンド回路５１４は、状態マシン５１６と通信する。通常、コントローラ５１８は、記憶素子アレイ５０２に書き込まれるか、あるいは、記憶素子アレイ５０２から読み出されるユーザデータのためのバッファメモリを有している。
【００３２】
一例のメモリシステムは、コントローラ５１８を含む１つの集積回路と、それぞれがメモリアレイと、関連する制御、入力／出力、および状態マシン回路とを含む１つまたは複数の集積回路チップとを備えている。メモリアレイとシステムのコントローラ回路は、１つまたは複数の集積回路チップ上に一緒に統合される傾向にある。メモリシステムは、ホストシステムの一部として組み込まれていてもよく、または、ホストシステムに着脱可能に挿入されるメモリカードまたはその他のパッケージ内に含まれていてもよい。このようなカードは、例えば、コントローラを含むメモリシステム全体を含んでいてもよく、または、コントローラまたは制御機能はホスト内に組み込まれる、関連する周辺回路を有するメモリアレイのみを含んでいてもよい。このように、コントローラまたは制御機能は、ホスト内に組み込まれることも、または着脱可能なメモリシステム内に含まれることも可能である。
【００３３】
いくつかの実施形態では、図５のコンポーネントのいくつかは、組み合わせることが可能である。さらに、さまざまな設計で、図５のコンポーネントのうちで、記憶素子アレイ５０２以外の１つまたは複数のコンポーネントが、管理回路と考えることが可能である。例えば、１つまたは複数の管理回路は、制御回路、コマンド回路、状態マシン、行制御回路、列制御回路、ウェル制御回路、ソース制御回路およびデータ入／出力回路のうちのいずれか１つまたはこれらを組み合わせたものを含んでいる。
【００３４】
図６を参照して、図５の記憶素子アレイ５０２の構造の例を説明する。１,０２４個のブロックに区分けされているＮＡＮＤ型フラッシュＥＥＰＲＯＭを説明する。データは、同時に異なるブロックにプログラミングされ、異なるブロックから読み出されることが可能である。消去動作においては、各ブロックに記憶されたデータは同時に消去される。１つの設計では、ブロックは、同時に消去される記憶素子の最小単位である。本実施例において、各ブロックには８，５１２列あり、偶数および奇数列に分割される。ビット線も偶数のビット線（ＢＬｅ）と奇数のビット線（ＢＬｏ）に分割される。直列に接続され、ＮＡＮＤストリングを形成する４つの記憶素子を示す。４つの記憶素子は各ＮＡＮＤストリングに含まれるように図示されているが、使用する記憶素子の数は４つ以上でも４つ以下でもよい。一般的には、各ＮＡＮＤストリングは、３２または６４以下の記憶素子を備えることができる。ＮＡＮＤストリングの一方の端子は、選択トランジスタＳＧＤを介して対応するビット線に接続され、他方の端子は、第二の選択トランジスタＳＧＳを介してＣ−ソース線に接続されている。
【００３５】
読み出しおよびプログラミング動作の一つの構成の間は、４，２５６の記憶素子が同時に選択される。選択される記憶素子は、同じワード線と、同じ種類のビット線（例えば、偶数または奇数）とを有する。したがって、論理ページを形成する５３２バイトのデータを、同時に読み出しまたはプログラムすることが可能であり、１つのメモリブロックは、少なくとも８つの論理ページを記憶することが可能である（４本のワード線であって、それぞれが奇数および偶数ページを有する）。マルチステート記憶素子の場合、各記憶素子が２ビットのデータを記憶し、これら２ビットがそれぞれ異なるページに記憶される場合、１つのブロックは１６の論理ページを記憶する。他のサイズのブロックおよびページも使用されてよい。さらに、図５および図６に示す構造以外のアーキテクチャを使用することもできる。例えば、一つの設計においては、ビット線は、全てのビット線がプログラムされかつ同時に（あるいは非同時に）読み取られるように奇数と偶数の線に分割されない。
【００３６】
記憶素子の消去は、ｐ−ウェルを消去電圧（例えば、２０ボルト）まで引き上げるとともに、選択されたブロックのワード線を接地することによって行われる。ソースおよびビット線はフローティングとする。消去は、メモリアレイ全体、独立したブロック、またはメモリデバイスの一部である別の単位の記憶素子に対して実行することができる。記憶素子の浮遊ゲートから電子がｐ−ウェル領域に移動し、記憶素子のＶＴＨは負となる。
【００３７】
読み出しおよび検証動作では、トランジスタをパスゲートとして動作させるために、選択ゲート（ＳＧＤおよびＳＧＳ）が、２．５〜４．５ボルトの範囲の電圧に接続され、選択されないワード線（例えば、ＷＬ２が選択されたワード線の場合には、ＷＬ０、ＷＬ１およびＷＬ３）が、読み出しパス電圧（通常は、４．５〜６ボルトの範囲の電圧）まで引き上げられる。選択されたワード線ＷＬ２は、各読み出しおよび検証動作について指定されたレベルの電圧に接続され、対応する記憶素子のＶＴＨが指定されたレベルの電圧より上であるのか下であるのかが判定される。例えば、２レベル型の記憶素子の読み出し動作では、選択されたワード線ＷＬ２を接地してもよく、それによってＶＴＨが０Ｖよりも高いのか否かが検出される。２レベル型の記憶素子の検証動作では、選択されたワード線ＷＬ２を例えば０．８Ｖに接続し、それによってＶＴＨが少なくとも０．８Ｖに到達したのか否かが検証される。ソースおよびｐ−ウェルは０ボルトである。選択されたビット線は、偶数のビット線（ＢＬｅ）と考えられるが、例えば０．７Ｖのレベルに予備チャージされる。ＶＴＨが、ワード線上の読み出しまたは検証レベルよりも高い場合には、該当する記憶素子に対応するビット線（ＢＬｅ）の電位レベルは、非導電性の記憶素子であるために、ハイレベルに維持される。他方、ＶＴＨが、読み出しまたは検証レベルよりも低い場合には、対応するビット線（ＢＬｅ）の電位レベルは、導電性の記憶素子がビット線を放電するため、例えば０．５Ｖ未満のローレベルに低下する。これによって、記憶素子の状態が、ビット線に接続された電圧比較器センス増幅器により検出される。
【００３８】
上記の消去、読み出し、および検証動作は、当業界で知られた技術に従って実行される。したがって、説明した詳細の多くについては、当業者によって変更されることが可能である。当業界で知られたその他の消去、読み出しおよび検証技術を使用することもできる。
【００３９】
上述したように、各々のブロックを多くのページに分割することが可能である。一つの方法では、１ページがプログラミングの単位である。いくつかの実施例では、個々のページはセグメントに分割されてもよい。セグメントは、基本的なプログラミング動作として一度に書き込まれる最小数の記憶素子を有している。一般的に、１ページ以上のデータが１行の記憶素子に記憶される。１ページに１つまたは複数のセクターを記憶することが可能である。セクターには、ユーザデータと、たとえばセクターのうちのユーザデータから計算されたエラー訂正符号（ＥＣＣ）などのオーバヘッドデータとが含まれる。コントローラの一部が、データがアレイ中にプログラムされている間にＥＣＣを計算し、また、データがアレイから読み出されている間にこのＥＣＣを用いてチェックする。代替例では、ＥＣＣおよび／または他のオーバヘッドデータを、自身が属するユーザデータとは異なるページ、さらには異なるブロックに記憶する。他の設計では、メモリデバイスの他の部分、例えば状態マシン、がＥＣＣを計算可能である。
【００４０】
ユーザデータを含むセクターは、一般に、磁気ディスクドライブ中のセクターのサイズに対応して５１２バイトである。オーバヘッドデータは、一般的には追加の１６〜２０バイトである。多くのページがブロックを形成しているが、その数は、例えば、８ページ、３２ページ、６４ページ、さらにこれ以上の数値の間のいずれかの数値である。
【００４１】
（再プログラミング）
記憶素子のセットを最初にプログラムし、次いで、少なくとも一度再プログラムするプログラミング技術が提供される。例えば、このセットは、ユニットとして消去することが可能な記憶素子のブロックである場合がある。もしくは、このセットは、ワード線のセットに接続可能である場合があり、必ずしもユニットとして消去可能である必要はない。初期プログラミングで、記憶素子のセットがプログラムされる。さらに、記憶素子は、初期プログラミングと再プログラミングで、異なったＶＴＨレベルにプログラムされ得る。これには限られないが、図７Ａおよび７Ｂ、図１０ならびに図１１Ａ〜１１Ｃに関連して以下に検討する技術を含む種々のプログラミング技術を、初期プログラミングおよび再プログラミングに用いることが可能である。記憶素子のセットを初期プログラミングでプログラムした後に、再プログラミングによって、このセット内の素子が、例えば、目的の最終的なＶＴＨにプログラムされる。記憶素子は、初期プログラミングと再プログラミング間の期間では消去されない。
【００４２】
一つの方法では、記憶素子からデータを読み出すときに、初期プログラミングで一回だけプログラムされている記憶素子に対しては第１のセットのＶＴＨ読み出しレベルを用いる一方で、再プログラムもされている記憶素子に対しては第２のセットのＶＴＨ読み出しレベルを用いることが可能である。第２のセットに対応する値は、第１のセットよりも高く設定することが可能である。代替例では、それぞれの場合に対して同じＶＴＨ読み出しレベルのセットを用いることが可能である。さらに、隣接する何れか２つのＶＴＨ状態間の電圧マージンは、結合、プログラム外乱、読み出し外乱、記憶素子とシステム雑音、オーバーシュート、プログラミング雑音、長期電荷保持を含む多くの寄生現象に対応するのに十分に大きい必要がある。別の寄生現象としてデータパターン感度効果があるが、これは、既にプログラムされた記憶素子の特定的なデータ値（例えばＶＴＨ値）の影響に関連している。再プログラミングによって、隣接するＶＴＨ状態間のマージンを減少させることが可能となるが、これは、少なくとも結合とオーバーシュートが軽減されるからであり、また、まだ再プログラムされていないページもすぐに再プログラムされるため、プログラムされていないページに対する長期保持という問題のために余分なマージンを充てる必要がない。さらに、ページの再プログラミングによって、ＶＴＨ分布が緊密となり、これらのページに対するマージンが拡大される。最終的な効果として、メモリのＶＴＨウィンドウの減少が可能となり、これによって、プログラミング電圧の減少が可能となり、プログラム外乱を軽減させることが可能となる。
【００４３】
図７Ａは、消去状態からプログラムされた状態に直接プログラミングするマルチステートデバイスにおけるＶＴＨ分布のセットの例を示している。この場合、各記憶素子は、Ｅ、Ａ、ＢおよびＣで表される４つのデータ状態にある２ビットのデータを記憶する。Ｅは消去された記憶素子の第１のＶＴＨ分布を示し、Ａ、ＢおよびＣは、プログラムされた記憶素子の３つのＶＴＨ分布を示している。一つの設計では、分布Ｅ中のＶＴＨ値は負の値であり、分布Ａ、ＢおよびＣ中のＶＴＨ値は正の値である。互いに異なるＶＴＨ範囲はそれぞれが、データビットのセットに対する所定の値に対応している。記憶素子にプログラムされたデータと記憶素子のＶＴＨレベルとの間の具体的な関係は、記憶素子に対して採用されるデータ符号化方式によって異なる。一例では、ＶＴＨ範囲Ｅ（状態Ｅ）に対して「１１」を割り当て、ＶＴＨ範囲Ａ（状態Ａ）に対して「１０」を割り当て、ＶＴＨ範囲Ｂ（状態Ｂ）に対して「００」を割り当て、ＶＴＨ範囲Ｃ（状態Ｃ）に対して「０１」を割り当てる。しかしながら、他の方法を用いている設計もある。
【００４４】
初期プログラミング後に、３つの読み出し基準電圧Ｖｒａ１、Ｖｒｂ１、Ｖｒｃ１のセットを用いて記憶素子からデータを読み出す。任意の記憶素子のＶＴＨがＶｒａ１、Ｖｒｂ１、Ｖｒｃ１より高いか低いかをテストすることによって、システムは記憶素子の状態を判定することが可能である。３つの検証基準閾値電圧Ｖｖａ１、Ｖｖｂ１、Ｖｖｃ１のセットも示されるが、これらは初期プログラミング中で用いられる。記憶素子を状態Ａ、ＢまたはＣにプログラミングするときは、システムは、これらの記憶素子のＶＴＨが、それぞれＶｖａ１、Ｖｖｂ１、Ｖｖｃ１以上であるかどうかをテストする。
【００４５】
一つの方法では、フルシーケンスプログラミングとして知られているが、記憶素子を、曲線矢印で示されているように、消去状態Ｅから、プログラムされた状態Ａ、Ｂ、またはＣのうちのどれにでも直接的にプログラムすることが可能である。例えば、ブロックなどのプログラムされる記憶素子の母集団を最初に消去し、これによって、この母集団中のすべての記憶素子が消去状態Ｅとなるようにする。一部の記憶素子が状態Ｅから状態Ａにプログラムされている間に、他の記憶素子を状態Ｅから状態Ｂにプログラムしたり、および／または、状態Ｅから状態Ｃにプログラムしたりする。
【００４６】
上述したように、結合や他の影響によって、所定の記憶素子のＶＴＨが上がり、これによって、例えば、ブロック内の記憶素子のセットのＶＴＨ分布が上昇して拡大する傾向がある。このことは、図７ＢのＶＴＨ分布と比較して図７ＡのＶＴＨ分布が比較的広いことを見れば明らかである。
【００４７】
図７Ｂに、再プログラミング後の図７ＡのＶＴＨ分布のセットの例を示す。再プログラミング中に、ＶＴＨ検証レベルの第２のセットＶｖａ２、Ｖｖｂ２、Ｖｖｃ２を用いることが可能であるが、これらは、それぞれＶｖａ１、Ｖｖｂ１、Ｖｖｃ１より若干高い値（例えば０．４Ｖ）となっている。初期プログラミングと再プログラミングの間での各状態の検証電圧のオフセットは、メモリの特性によって決定することができる。例えば、このオフセットは、各状態の閾値電圧分布の約半分とすることができる。したがって、状態「Ａ」の閾値電圧分布の平均的な幅が０．８Ｖであれば、オフセットとして０．４Ｖが用いられる。したがって、Ｖｖａ１が０．６Ｖであれば、Ｖｖａ２は１．０Ｖとすることができる。検証レベル間での増分は、各状態に対して同一である必要はない。再プログラミング後は、各状態のＶＴＨ分布の下端が、閾値電圧検証レベルの上昇に基づいて上昇し、これによって、ＶＴＨ分布が緊密化する。このように、記憶素子のセットを最初にプログラムし、この初期プログラミングが完了した後に、この記憶素子のセットを再プログラムすることにより、図７Ｂの緊密化されたＶＴＨ分布を得ることができる。
【００４８】
特に、再プログラミングによって、各状態に対するＶＴＨ値が結合によって拡散してしまう現象が抑制されるが、これは、初期プログラミング中に加えられた電荷量より少ない電荷量が記憶素子に加えられるからである。そのうえ、結合によって、初期プログラミング中に、記憶素子のＶＴＨが、最初にプログラムされたときより高くなり、ロックアウトされると、ロックアウトされる以前の再プログラミング中においてプログラミングする必要が少なくてすむ。また、任意の記憶素子に隣接する記憶素子では、再プログラミング中に結合によるＶＴＨ値の大幅なシフトが生じない。その結果、再プログラミングにおいて、記憶素子を目的の最終的なＶＴＨにより正確にプログラムすることが可能である。再プログラミングすることによって、ワード線間結合、ビット線間結合、あるいは、対角線上の隣接記憶素子からの結合等の、全てのタイプの結合による影響が軽減される。さらに、記憶素子が、プログラミング動作時の変動や直近の検証動作に伴う雑音によって過剰プログラムされた場合でも、目的の最終的な状態に到達するために再プログラミング中に必要とされるプログラミングパルスは少なくて済む。再プログラミングでは、プログラムされている各記憶素子に追加される電荷は少量にすぎない。再プログラミング中におけるＶＴＨの変動は小さいため、初期プログラミング中に比べて、ロックアウト現象はより早い段階（すなわち、制御ゲートプログラムパルス電圧が低い段階）で起きる。再プログラミングの効果は、図８と図９を参照すればさらに理解することが可能である。
【００４９】
図８に、不揮発性ストレージをプログラミングする一連のプログラミングパルスを示す。一般的なプログラミング方式では、プログラム電圧Ｖｐｇｍが一連のパルスの中で記憶素子の制御ゲートに印加される。ひとつの可能な方法では、これらパルスの大きさは、連続するパルスごとに所定のステップサイズ（例えば、０．４Ｖ）だけ増大する。Ｖｐｇｍは、フラッシュメモリ素子の制御ゲート（または、場合によってはステアリングゲート）に印加することが可能である。Ｖｐｇｍは、時間と共に大きさが増す一連のパルスとして印加される。プログラムパルス間の期間では、検証動作が実行される。すなわち、ワード線上の特定の記憶素子等のように、並列にプログラムされている記憶素子のセットの各記憶素子のプログラミングレベルが、連続するプログラミングパルス間で読み出され、記憶素子がプログラムされている検証レベル以上のプログラミングレベルであるか否かが判定される。マルチステートフラッシュメモリ素子のアレイに対しては、素子の状態ごとに検証ステップが実行され、素子がそのデータに関連する検証レベルに到達したか否かが判定される。例えば、４つの状態でデータを記憶可能なマルチステートメモリ素子では、３つの比較ポイントに対して検証動作を実行する必要がある。
【００５０】
所定数（通常は固定値である）のパルスの後でも記憶素子が目的のプログラムレベルに到達しなければ、エラー状態が宣言される。初期値、電圧ステップサイズ（該当する場合）、及び、エラー状態を宣言する前に印加される最大パルス数を含むＶｐｇｍの大きさを選択する際には、さまざまな要素同士を考慮する。特に、初期値やステップサイズが大きすぎると、一部のメモリ素子が過剰プログラムされ、その結果、ＶＴＨが不正確となり、反対に、初期値やステップサイズが小さすぎると、その結果、プログラミング時間が長くなる。一般的に、不揮発性メモリのユーザは、メモリが迅速にプログラムされることを望む。さらに、メモリ素子を目的の状態にプログラムするために必要なパルスの数は、そのメモリ素子が異なれば、異なり得る。メモリ素子の動作が遅ければ、より多くのパルスが必要であり、動作が速ければ少ないパルスで済む。ダイソート歩留まりが許容範囲になるように十分なマージンやクッションを持たせるために、一般的に比較的多くの数のＶｐｇｍパルスが許容される。例えば、９０ｎｍデバイスでは、マルチステートメモリ素子デバイスの上位ページはそのほとんどが１８個以内のパルスでプログラムすることが可能であるが、パルスの最大許容数を例えば２４個に設定して、６個のパルスをマージンとすることができる。
【００５１】
例えば、初期プログラミングにおいては、上述したように、所定の記憶素子は、１６個目のプログラムパルスで検証レベルに到達すると、これ以上Ｖｐｇｍの印加からロックアウトされる。Ｖｐｇｍパルスごとの記憶素子の閾値電圧変化（DＶＴＨ）は、平均的な不揮発性記憶素子の線形と非線形のプログラミングレジームを示している図９を参照すれば理解される。初期のＶｐｇｍパルスの間は、記憶素子は非線形レジームにあり、このレジームでは、プログラミングパルスの数に対してＶＴＨは非線形に増加する。原則的には、制御ゲートに印加される電圧は、トンネル現象が発生しないレベルとなっている。Ｖｐｇｍパルスがさらに印加されるにつれて、DＶＴＨはゆっくりと増加して線形のプログラミングレジームに到達し、このレジームではＶｐｇｍパルスがさらに印加されてもDＶＴＨは略一定となる。このレジームにおいては、Ｖｐｇｍが１Ｖ増加すると、理論的にはＶＴＨも１Ｖ増加する結果となる。プログラミング雑音と読み出し雑音は、ＶＴＨの増加量をランダム化する傾向がある。また、低減効果によって、線形レジームにおけるDＶＴＨは、Ｖｐｇｍ１Ｖ増加に対して１Ｖという値未満の値に減少する傾向がある。例えば、線形レジームにおいては、DＶＴＨ／DＶｐｇｍは、０．８に近い値となり得る。それでも、一度線形レジームに入れば、初期プログラミング中に、Ｖｐｇｍパルスが１つ印加されるごとに、記憶素子は迅速にロックアウトＶＴＨ（検証レベル）に到達する。プログラミング速度が速い記憶素子は、プログラミング速度が遅い記憶素子より早く線形レジームに到達する。開始時のＶｐｇｍの値によっては、一部の非常に速い記憶素子が、減速して線形レジームに達するまで最初の数個のＶｐｇｍパルスで非常に速い速度でプログラムされることがある。開始時のＶｐｇｍは、このような現象を回避するために十分低い値に設定するのが望ましい。
【００５２】
再プログラミング中では、記憶素子のＶＴＨは、０．４Ｖなどの比較的小さい値だけ増加することが必要である。一般的に、再プログラミング中、記憶素子は非線形レジームにある。ほとんどの場合、再プログラミング中では、初期プログラミングと比較して、より高いロックアウトＶＴＨに到達するのに必要とされるプログラミングパルスは１つ以上少ないと考えられる。ここに示す例では、再プログラミング中に、記憶素子は１５個目のＶｐｇｍパルスでロックアウトＶＴＨに到達するが、これは初期プログラミングの場合よりパルス１個分早い。
【００５３】
例えば、この例では、初期プログラミング中と再プログラミング中では表１と表２に示すようにＶＴＨはＶｐｇｍと共に変化することを前提としている。記憶素子は、−２ＶというＶＴＨを持つ状態Ｅから初期プログラミングの場合は１．１ＶというロックアウトＶＴＨ（図７ＡのＶｖａ１）、再プログラミングの場合は１．３ＶというロックアウトＶＴＨ（Ｖｖａ２）を持つ状態Ａにプログラムされる。Ｖｐｇｍのステップサイズはこの例では分かりやすいように１．０Ｖである。図に示すように、記憶素子は、初期プログラミングでは１６個目のパルスの後にロックアウトされているが、この時点でＶＴＨは初めて１．１Ｖを超える。再プログラミングにおいては、記憶素子は１５個目のパルスの後でロックアウトされており、この時点でそのＶＴＨは初めて１．３Ｖを超える。
【表１】
2009541909.tif 000003
【表２】
2009541909.tif 000004
【００５４】
このように、再プログラミング中に非線形レジームで動作している間では、その効果はより小さいＶｐｇｍステップサイズを用いる場合に似ているが、これは、ＶＴＨが、初期プログラミングの場合より小さいステップで所望の値にまで少しずつ上昇するからである。これによって、オーバーシュートが回避され、ＶＴＨをより正確に制御することが可能となる。その結果、より緊密でより正確なＶＴＨ分布を達成することが可能となる。
【００５５】
利用可能なプログラミング技術のさらなる例を、図１０と図１１Ａ〜１１Ｃを参照して検討する。
【００５６】
図１０に、下位ページと上位ページという互いに異なる２ページ分のデータを記憶するマルチステート記憶素子をプログラミングする２パス式技術の例を示す。状態Ｅ（１１）、状態Ａ（１０）、状態Ｂ（００）および状態Ｃ（０１）という４つの状態が示されている。状態Ｅの場合、両ページとも「１」を記憶している。状態Ａの場合、下位ページは「０」を、上位ページは「１」を記憶している。状態Ｂの場合、両ページとも「０」を記憶している。状態Ｃの場合、下位ページは「１」を、上位ページは「０」を記憶している。特定のビットパターンがこれら状態のそれぞれに割り当てられているが、別のビットパターンを割り当ててもよい。第１のプログラミングパスでは、記憶素子のＶＴＨレベルが、下位の論理ページにプログラムされるビットにしたがって設定される。このビットが論理「１」であれば、ＶＴＨは変化しないが、これは、前に消去された結果として適切な状態にあるからである。しかしながら、プログラムされるビットが論理「０」であれば、記憶素子の閾値レベルは、矢印１１１０で示すように状態Ａまで増加する。
【００５７】
第２のパスでは、記憶素子のＶＴＨレベルが、上位の論理ページにプログラムされるビットにしたがって設定される。この上位論理ページビットが論理「１」を記憶するのであれば、なんらプログラミングされない。これは、記憶素子が、下位ページビットのプログラミングに基づいて決まる状態ＥまたはＡの内の一方の状態にあるからである（状態ＥとＡの双方が「１」という上位ページビットを有している）。上位ページビットが論理「０」となるのであれば、ＶＴＨはシフトする。第１のステップの結果、記憶素子が消去状態Ｅのままであれば、第２のフェーズで、記憶素子はプログラムされ、ＶＴＨが上昇し、矢印１１３０で示すように状態Ｃ内に移る。記憶素子が、第１のプログラミングパスの結果として状態Ａにプログラムされている場合、記憶素子は、第２のステップでさらにプログラムされて、矢印１１２０で示すようにＶＴＨが上昇して状態Ｂ内に移る。第２のパスの結果、下位ページのデータを変更することなく、上位ページの論理「０」を記憶するように指定された状態に記憶素子をプログラムすることになる。双方のパスが、最初のプログラミングと再プログラミングの両方で起こる。
【００５８】
一つの方法では、ページ全体を満たすのに十分なデータが書き込まれた場合に、フルシーケンス書き込みを実行するようにシステムをセットアップすることが可能である。ページ全体を満たすのに十分なデータが書き込まれない場合、プログラミングプロセスは、受信したデータによる下位ページのプログラミングをプログラムすることが可能である。さらにその後にデータが受信されると、システムは、上位ページをプログラムする。別の方法では、このシステムは、下位ページをプログラムするモードで書き込みを始め、次に、ワード線の記憶素子の全部、または大部分を満たすのに十分なデータがその後に受信されればフルシーケンスプログラミングモードに変換することが可能である。このような方法のさらなる詳細が、その全体を参照して本明細書に組み込む、発明者サージー・Ａ．ゴロベッツとヤン・リーによる、２００４年１２月１４日に出願された「Ｐｉｐｅｌｉｎｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ  ｏｆ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｉｅｓ  Ｕｓｉｎｇ  Ｅａｒｌｙ  Ｄａｔａ」という名称の米国特許出願第１１／０１３，１２５号に開示されている。
【００５９】
一度初期プログラミングが完了すれば、図１０のＶＴＨ分布は、図７Ａの分布に類似した比較的幅の広いものとなる。次いで再プログラミングが実行され、これによって、図１０の比較的広いＶＴＨ分布が、図７Ｂの分布に類似した緊密なものとすることが可能である。
【００６０】
図１１Ａ〜１１Ｃに、浮遊ゲート間の結合を低減する不揮発性メモリをプログラムする別のプロセスを示す。このプロセスは、前のページの隣接する記憶素子に書き込んだ後に、特定のページに対する特定の記憶素子に書き込み動作を実行する。ここに示すプロセスは、初期プログラミングおよび再プログラミングの両方に対して行われる。
【００６１】
一実施例では、不揮発性記憶素子はそれぞれ、４つのデータ状態を用いて２ビットのデータを記憶する。例えば、状態Ｅが消去された状態で、状態Ａ、ＢおよびＣがプログラムされた状態を仮定する。状態Ｅはデータ１１を、状態Ａはデータ０１を、状態Ｂはデータ１０を、そして状態Ｃはデータ００を記憶している。隣接した状態Ａと状態Ｂの間で双方のビットが変化するので、これはノングレイ符号化の例である。データをデータの物理状態に符号化する他の方法も用いることが可能である。それぞれの記憶素子が２ページ分のデータを記憶している。参照目的で、これらのページのデータを上位ページと下位ページと呼ぶが、別の呼び方も可能である。状態Ａを参照すると、上位ページはビット０を記憶し、下位ページはビット１を記憶する。状態Ｂを参照すると、上位ページはビット１を記憶し、下位ページはビット０を記憶する。状態Ｃを参照すると、双方のページはビットデータ０を記憶する。プログラミングプロセスは、初期プログラミングおよび再プログラミングの双方で起こる２つのステップを有する。第１のステップでは、下位ページをプログラムする。この下位ページがデータ１の状態にとどまることになっている場合、記憶素子の状態は状態Ｅのままである。このデータが０にプログラムされることになっている場合、記憶素子が状態Ｂ’にプログラムされるように、記憶素子のＶＴＨを引き上げる。図１１Ａに、状態Ｅから状態Ｂ’に記憶素子をプログラムする様子を示す。図１１Ａに示す状態Ｂ’は中間状態Ｂ’である。したがって、図１１Ｃに示すように検証ポイントを、Ｖｖｂ１より低いＶｖｂ’として示す。
【００６２】
一つの設計では、ある記憶素子が状態Ｅから状態Ｂ’にプログラムされると、隣接するワードライン上のその近隣の記憶素子がその下位ページに関してプログラムされる。その隣接する記憶素子をプログラムした後に、浮遊ゲート間の結合作用によって、状態Ｂ’にある検討中の記憶素子の見かけ上のＶＴＨが引き上げられる。これによって、状態Ｂ’のＶＴＨ分布の幅を図１１Ｂ示す分布にまで広げる作用がある。このＶＴＨ分布の見かけ上の拡大は、上位ページをプログラムするときに、少なくとも部分的に修正される。
【００６３】
図１１Ｃは、上位ページをプログラムするプロセスを示している。記憶素子が消去された状態Ｅにあって上位ページが１にとどまるのであれば、この記憶素子は状態Ｅのままである。記憶素子が状態Ｅにあってそのデータの上位ページを０にプログラムすることになっているのであれば、この記憶素子のＶＴＨを引き上げて、記憶素子が状態Ａとなるようにする。記憶素子が中間ＶＴＨ分布を示す状態Ｂ’にあって、データの上位ページが１にとどまることになっている場合、この記憶素子は最終状態Ｂにプログラムされる。記憶素子が中間ＶＴＨ分布を示す状態Ｂ’にあって、データの上位ページがデータ０になることになっている場合、この記憶素子のＶＴＨを引き上げて、記憶素子が状態Ｃとなるようにする。図１１Ａ〜１１Ｃに示すプロセスによって浮遊ゲート間の結合作用が低減されるが、これは、隣接する記憶素子の上位ページをプログラムした場合にしか、所与の記憶素子の見かけ上のＶＴＨが影響されないからである。別の状態の符号化の例として、データの上位ページが１の時に中間ＶＴＨ分布から状態Ｃへ移動する、および、データの上位ページが０の時には状態Ｂへ移動することが挙げられる。図１１Ａ〜１１Ｃに４つのデータ状態と２ページ分のデータに関する例を示すが、ここで教示する概念は、状態が４つより多いまたは少なく、あるいは、２ページより多いまたは少ない他の実施例にも適用可能である。様々なプログラミング方法および浮遊ゲート間の結合の詳細については、２００５年４月５日に出願された米国特許第１１/０９９，１３３号の「Ｃｏｍｐｅｎｓａｔｉｎｇ  Ｆｏｒ  Ｃｏｕｐｌｉｎｇ  Ｄｕｒｉｎｇ  Ｒｅａｄ  Ｏｐｅｒａｔｉｏｎｓ  Ｏｆ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ」に記載されている。
【００６４】
図１１Ａ〜１１Ｃのプログラミング技術によって結合効果が軽減されるが、それでも、隣接する記憶素子の上位ページがプログラミングされることによって、ある程度の結合が発生する。したがって、図１１ＣのＶＴＨ分布はこれでも必要以上に広い。この問題を解決するため、一度初期プログラミングが完了したら、再プログラミングを実行して、図７Ｂの分布に類似するより緊密なＶＴＨ分布を得ることが可能となる。
【００６５】
図１２は、初期プログラミングおよび再プログラミングを利用して不揮発性記憶素子のブロックをプログラミングするプロセスの一実施形態を説明するフローチャートである。このプロセスは、記憶素子のブロックに関連して説明されているが、一般に、どのような記憶素子のセットにも適用可能である。ステップ１２００では、データ記憶コマンドに応答等することによって、ブロックに対する初期プログラミングが開始される。ステップ１２０５では、例えば、制御装置のワーキングメモリにロードすることによって、Ｖｖａ１、Ｖｖｂ１、Ｖｖｃ１（図７Ａ）等の第１の低閾値電圧（ＶＴＨ）検証レベルのセットが用いられる。加えて、第１の低パス電圧Ｖｐａｓｓ１が用いられる。初期プログラミングと再プログラミングとで互いに異なるパス電圧を用いる方式については、図１４Ａ〜Ｆを参照して後に詳述する。ステップ１２１０では、ブロック中のデータの第１のページがプログラムされ、ステップ１２１５では、これに応じてページに対するフラグビット（ページフラグ１）が設定される。なお、一つの方法では、このページフラグは、ステップ１２１０におけるデータの第１のページのプログラミング中に設定することも可能である。
【００６６】
可能な一つの方法では、１以上のフラグなどの情報を用いることによって、ページなどのブロックの一部のプログラミング状態の追跡を継続することも可能である。このようなフラグは、プログラミング状態情報の一形態である。プログラミング状態情報は、ページがプログラミングおよび／または再プログラミングを受けたか否かを示すことが可能であり、これによって、制御装置はどのページを再プログラミングする必要があってどのページをスキップ可能であるかを判定することが可能である。このフラグは、所望の情報を伝達するのに十分な精度を有するべきである。再プログラミングのサイクルが１度だけである場合には、例えば、１ページに対して１ビットを割り当てれば、ページに対して再プログラミングが行われたかどうかを示すのに十分である。例えば、フラグは、ページが記憶されているワード線上の記憶素子のうちのひとつの素子に記憶することが可能である。各ページに対する１以上のフラグは、１ビットまたはビットのセットとすることが可能である。
【００６７】
加えて、または、その代わりに、ブロックレベルのフラグを用いることによって、ブロック全体または他の記憶素子の単位全体に対して再プログラミングが完了したかどうかを示すことが可能である。一つの方法では、ブロックフラグを２ビットとすることが可能であり、この場合、１ビットで初期プログラミングが完了したかどうかを示し、他の１ビットで再プログラミングが完了したかどうかを示す。再プログラミングが２回以上実行される場合は、追加の各再プログラミングに対して追加のビットを用いることが可能である。ブロックフラグは、ブロックフラグがプログラムされたブロックの外部に記憶される際に用いてもよい。
【００６８】
一般に、ブロックフラグは、ブロック中の最初と最後にプログラムされるページのページフラグとしては必要ではなくて、ブロックがプログラムされたか再プログラムされたかを示すことに用いることが可能である。例えば、最初にプログラムされるページの最初のビットと、最後にプログラムされるページの対応する最初のビットは、初期プログラミングが行われたか否かを示すことが可能である。最初にプログラムされるページのこのビットが最初にプログラムされるページに対して初期プログラミングが実行されていないことを示していれば、このブロックのどの部分に対しても初期プログラミングは実行されていない。これらのビットが、最初にプログラムされるページに対しては初期プログラミングが実行されているが、最後のページに対しては実行されていないことを示していれば、このブロックに対して部分的に初期プログラミングが実行されている。最後にプログラムされるページのビットが、最後のページに対して初期プログラミングが実行されたことを示していれば、このブロック全体に対して初期プログラミングが実行されている。
【００６９】
同様に、最初にプログラムされるページの第２のビットと、最後にプログラムされるページの対応する第２のビットは、再プログラミングが行われたか否かを示すことが可能である。最初にプログラムされるページのこのビットが最初にプログラムされるページに対して再プログラミングが実行されていないことを示していれば、このブロックのどの部分に対しても再プログラミングは実行されていない。これらのビットが、最初にプログラムされるページに対しては再プログラミングが実行されているが、最後にプログラムされるページに対しては実行されていないことを示していれば、このブロックに対して部分的に再プログラミングが実行されている。最後にプログラムされるページのビットが、最後にプログラムされるページに対して再プログラミングが実行されたことを示していれば、このブロック全体に対して再プログラミングが実行されている。
【００７０】
ブロック全体がまだ再プログラムされていないときには、低読み出し電圧が用いられ、ブロック全体が再プログラムされている場合には、高読み出し電圧が用いられる。ブロックが部分的に再プログラムされているときには、制御装置は、バイナリ符号化されているフラグ記憶素子をバイナリ読み出しして、上記のページを読み出すための適切なワード線読み出し電圧を決定する。一つの方法では、再プログラムされていないページに対しては低読み出し電圧を用い、再プログラムされているページに対しては高読み出し電圧を用いる。
【００７１】
１つのマルチレベル記憶素子の個々の状態のそれぞれは、プログラミング状態情報の記憶に用いられ、これによって、複数のフラグ値を指定することができる。すなわち、ブロックフラグには、ブロックが再プロラムされたか否かを示す１ビットを用いることが可能である。一般に、ブロックフラグはバイナリまたはマルチレベルの記憶素子中に符号化することができ、同じブロック内（例えば、ブロックの最初のページまたは別のブロックもしくはロケーション）中に常駐することが可能である。マルチレベル記憶素子の場合、一つの可能な方法では、フラッグビットでは、例えば、互いに最も離れた状態である状態ＥとＣを用いて、信頼性を向上させている。
【００７２】
このように、ステップ１２１５では、現在プログラムされているページのプログラミング状態を示すようにページフラグ（ページフラグ１）を設定する。このページフラグの設定には、プログラミング状態情報が正しいとして同定されている場合に、フラグを既存の状態に維持することが含まれる。例えば、１つのビットによって、ページが再プログラムされていないことが示される。初期プログラミングの後に、このビットはこの状態のままとされる。再プログラミング後では、このビットはゼロ値に変更される。
【００７３】
判断ステップ１２２０で、ブロックに対する初期プログラミングが完了したか否かが判定される。これは、例えば、ブロック中の最後のワード線（例えば、ＮＡＮＤストリングのブロック中のドレイン側のワード線）にある記憶素子がプログラムされたか否かを判定することによって判定可能である。初期プログラミングがまだ完了していなければ、ステップ１２２５でデータの次のページがプログラムされ、ステップ１２１５でその次のページに対して、初期プログラミングのみが実行されており、再プログラミングがまだ実行されていないことを示すページフラグ（ページフラグ１）が設定される。連続する各ページは、ブロックに対する初期プログラミングが完了するまでプログラムされ、一つの方法では、このときにステップ１２３０でブロックに対してブロックフラグ（ブロックフラグ１）が設定され、ステップ１２３５で再プログラミングが開始される。このようなブロックフラグは、プログラミング状態情報という形態である。代替例では、ブロックフラグを前述したように用いなくてもよい。なお、一つの方法では、データの最後のページのプログラミング中に、ブロックフラグを設定することが可能である（ステップ１２２５）。ステップ１２４０では、Ｖｖａ２、Ｖｖｂ２、Ｖｖｃ２（図７Ｂ）などの第２の高閾値電圧（ＶＴＨ）の検証レベルのセットが用いられる。さらに、第２の高パス電圧Ｖｐａｓｓ２またはパス電圧のセットが用いられる。
【００７４】
判断ステップ１２４５では、他のタスクが保留となっているか否かが判断される。保留中のタスクがあれば、保留中のタスクがなくなるまで、ステップ１２５０で待ちが示される。一般に、性能の損失を避けるにために、少なくとも１つの回路（図５の制御回路５１５などのブロックのプログラミングを管理する回路）が待機モードに入って保留中のタスクがなくなるか、または、少なくともより高位の優先順位を持つ保留中のタスクがなくなるかしたときに、非リアルタイムで再プログラミングを行うことができる。すなわち、再プログラミングは、初期プログラミングの直後に実行する必要はなく、一旦開始したらすべての記憶素子を再プログラミングするまで停止することなく進行しなければならないということはない。例えば、整数のデータのページ、すなわち、１ページ以上のデータを、一時的な停止の前に再プログラミングし、その後、次のページのデータの再プログラミングを再スタートすることが可能である。この停止と再開始は、ブロックの再プログラムが完了する前に何回実行してもよい。したがって、ブロックまたは他の単位の不揮発性記憶素子のプログラミングを管理する少なくとも１つの回路が待機モードに入った後、および／または、保留中のより高位の優先順位のタスクが他になくなったときに、再プログラミングを別々の時点で実行することが可能である。代替例では、再プログラミングは、初期プログラミングの直後にリアルタイムでおよび／または開始から終了まで連続的に進行するように行うことが可能である。
【００７５】
具体的には、他に保留中のデータ読み出しもしくは書き込み要求がなかったり、または、ガーベージの収集もしくは最適化を伴うタスクなどのより高位の優先順位を持つタスクが他になくなったりしたときに、再プログラミングが行われる。したがって、再プログラミングは、リソースが利用可能なときに実行され、リソースが許す限り開始および継続されるバックグラウンドプロセスとして実行される。例えば、デジタルカメラの内部の不揮発性ストレージを例に挙げる。ユーザが写真を撮ると、初期プログラミングによる不揮発性ストレージの少なくとも第１のブロックへの画像データの記憶のために制御装置はビジー状態となり、この後に、一般的には、ユーザが別の写真を撮ると決めるまでに待ち時間が発生する。この待ち時間に再プログラミングを実行することが可能である。再プログラミングが完了する以前にユーザが別の写真を撮ると、再プログラミングを一時的に停止して、例えば第２のブロックへの初期プログラミングによって新たな画像データを書き込むことが可能となる。一旦、これが完了したら、第１のブロックの再プログラミングを再開することが可能である。次いで、第２のブロックの再プログラミングを開始することが可能である。２つ以上のブロックに対して同時並行に再プログラミングすることも可能である。同様に、ユーザがカメラの電源をオフすると、カメラの電源が再度オンして、かつ、別のタスクでビジーでない状態となるまで、再プログラミングを一時的に停止することが可能である。
【００７６】
ステップ１２５５で、新しいＶＴＨ検証レベルとパス電圧とを用いてデータの第１のページが再プログラムされ、ステップ１２６０で、例えば、このページに対する再プログラミングが発生したことを示すように、このページに対してページフラグ（ページフラグ２）が設定される。このページフラグは、プログラミング状態情報という形態である。なお、一つの方法では、ステップ１２５５におけるデータのページのプログラミング中にこのページフラグを設定することが可能である。判断ステップ１２６５では、ブロックに対する再プログラミングが完了していれば、一つの方法では、ステップ１２７０でこのブロックに対してブロックフラグ（ブロックフラグ２）が設定されて、再プログラミングが完了する。このブロックフラグは、プログラミング状態情報という形態である。代替例では、ブロックフラグを前述したように用いなくてもよい。なお、一つの方法では、データのページのプログラミング中にブロックフラグを設定することが可能である。別の場合には、判断ステップ１２７５で他に保留中のタスクがなければステップ１２８５で次のデータのページが再プログラムされ、保留中のタスクがあればステップ１２８０で待ち動作が実施される。ブロックの再プログラミングが完了するまで、ブロック中の連続する各ページが再プログラムされ、ステップ１２６０でページフラグが設定される。一般に、再プログラミングは、ページの境界で一時停止されたり再開始されたりする。ユーザがページをプログラミングしている途中でデバイスをシャットダウンしようとしても、現行のページのプログラミングが完了するまでシャットダウンは延期される。実際には、この時間期間は、一秒の数分の一であり、したがって、ユーザには分からない。図１３は、一連のプログラミングパルスを利用して不揮発性ストレージをプログラミングするプロセスの一実施形態を説明するフローチャートである。このプロセスは、例えば図１２のステップ１２１０、１２２５、１２５５、１２８５に示すようにデータのページをプログラミングするのに用いられる。消去プロセスは一般的に、ブロックなどの複数のワード線に対して同時に実行されるが、プログラミングはワード線ごとに実施される。また、図５を参照すると、ステップ１３００で、「データロード」コマンドが、制御回路５１５によって発行されて、コマンド回路５１４に入力され、これによって、データ入／出力バッファ５１２に入力することが可能となる。この入力データは、コマンドと認識されて、コマンド回路５１４に入力されたコマンドラッチ信号を介して状態マシン５１６によってラッチされる。ステップ１３０５では、ページアドレスを指定するアドレスデータが、コントローラすなわちホストから行コントローラすなわちデコーダ５０６に入力される。この入力データは、ページアドレスと認識されて、コマンド回路５１４に入力されたアドレスラッチ信号に影響されて、状態マシン５１６を介してラッチされる。ステップ１３１０では、アドレス指定されたページに対するプログラムデータのページが、プログラミングのためにデータ入／出力バッファ５１２に入力される。例えば、一実施形態では、５３２バイトのデータを入力することが可能である。このデータは、選択されたビット線に対して適切なレジスタにラッチされる。他の実施形態では、データが、検証動作のために用いられる選択されたビット線に対する第２のレジスタにもラッチされる。ステップ１３１５で、「プログラム」コマンドが、コントローラによって発行され、データ入／出力バッファ５１２に入力される。このコマンドは、コマンド回路５１４に入力されたコマンドラッチ信号を介して状態マシン５１６によってラッチされる。
【００７７】
「プログラム」コマンドがトリガーとなって、図８に示すように、ステップ１３１５でラッチされたデータが、適切なワード線に印加されたステップパルスを用いて状態マシン５１６によって制御されている選択された記憶素子にプログラムされる。ステップ１３２０で、選択されたワード線に印加されるプログラミングパルス電圧レベルＶｐｇｍが、開始パルス（例えば１２Ｖ）に初期化され、状態マシン５１６によって保持されているプログラムカウンタＰＣが０に初期化される。初期プログラムパルスの大きさは、例えば、電荷ポンプを適切にプログラミングすることによって設定することが可能である。ステップ１３２５では、最初のＶｐｇｍパルスが選択されたワード線に印加される。特定のデータラッチに論理「０」が記憶されており、対応する記憶素子をプログラムすべきであることを示していれば、対応するビット線が接地される。反対に、特定のデータラッチに論理「１」が記憶されており、対応する記憶素子は現在の状態に留まるべきであることを示していれば、対応するビット線はＶＤＤに接続されて、プログラミングが禁止される。
【００７８】
ステップ１３３０で、選択された記憶素子の状態が検証される。選択されたセルの目標閾値電圧が適切なレベルに到達したことが検出された場合には、対応するデータラッチに記憶されているデータが論理「１」に変更される。閾値電圧が適切なレベルに到達していないことが検出された場合には、対応するデータラッチに記憶されているデータは変更されない。このようにして、対応するデータラッチに論理「１」が記憶されているビット線はプログラムする必要はない。データラッチがすべて論理「１」を記憶していれば、状態マシンによって選択された全てのセルがプログラムされたと判断される。ステップ１３３５では、全てのデータラッチが論理「１」を記憶しているか否かがチェックされる。そうであれば、プログラミングプロセスは成功裏に完了するが、これは、選択された全ての記憶素子が目標状態にプログラムされて、その状態に到達したことが検証されたからである。ステップ１３４０では、「パス」状態が報告される。パスは、記憶素子の所定の部分がプログラムされて検証された場合にも報告される。
【００７９】
オプションとして、記憶素子の一部が目的の状態に到達していないときであっても、ステップ１３３５でパスが宣言されることがある。したがって、特定の数のセルが目的の状態に到達できない場合であっても、ループの最大回数に到達する以前に、プログラミングは停止する場合がある。
【００８０】
ステップ１３３５で、一部のデータラッチが論理「１」を記憶していないと判定された場合には、プログラミングプロセスは継続される。ステップ１３４５では、プログラムカウンタＰＣがプログラム制限値ＰＣｍａｘに対してチェックされる。プログラム制限値の一例は２０パルスであるが、しかしながら、さまざまな実施例では他の値を用いてもよい。プログラムカウンタＰＣがＰＣｍａｘに達したら、ステップ１３５０で、プログラムプロセスは、フェイルした旨のフラグが設定され、フェイル状態が報告される。例えば、プログラムが不成功であったビットの数が所定の数より大きいときに、フェイル状態が発生する。プログラムカウンタＰＣがＰＣｍａｘ未満であれば、ステップ１３５５で、Ｖｐｇｍレベルがステップサイズだけ増加され、プログラムカウンタＰＣがインクリメントされる。次に、プロセスがステップ１３２５にループバックして、次のＶｐｇｍパルスが印加される。
【００８１】
このフローチャートは、バイナリ記憶素子に用いることが可能なプログラミング方法を示している。マルチレベル記憶方式に対しては、例えば、図１０と図１１Ａ〜１１Ｃを参照して検討したような複数のプログラミングステップまたは検証ステップを、このフローチャートを一回繰り返すうちに用いてもよい。ステップ１３２０〜１３５５を、プログラミング動作のステップごとに実行してもよい。第１のステップでは、１つまたは複数のプログラムパルスを印加して、その結果を検証し、セルが適切な中間状態にあるかどうかを判定してもよい。第２のステップでは、１つまたは複数のプログラムパルスを印加して、その結果を検証し、セルが適切な最終状態にあるかどうかを判定してもよい。プログラムプロセスが成功であれば、その終了時には、記憶素子の閾値電圧は、プログラムされた記憶素子の閾値電圧の１つまたは複数の分布の内部または消去された記憶素子の閾値電圧の分布の内部にあるはずである。
【００８２】
（昇圧技術）
図１４Ａ〜１４Ｆは、初期プログラミングと再プログラミングとで異なるパス電圧を用いる昇圧技術を示している。これらの技術では、プログラミング中に、選択されなかったワード線に対してパス電圧Ｖｐａｓｓが印加される。一般に、再プログラミング中においては、初期プログラミングで用いられるパス電圧Ｖｐａｓｓ１に対してパス電圧Ｖｐａｓｓ２を増加させると有用であるが、これは、再プログラミング中においては、ドレイン側のワード線下にある記憶素子はこれ以上消去されないからである。その結果、現在、高い閾値電圧にプログラムされている記憶素子が反転状態に達したら、Ｖｐａｓｓ昇圧電位をさらに上げなくてはならない。Ｖｐａｓｓ電圧が上昇した結果、選択されていないワード線下の消去済みの記憶素子が不注意にプログラミングされてしまうが、このプロセスはオフ−行−外乱として知られている。しかしながら、記憶素子のＶＴＨのウィンドウが、ブロックの再プログラミングの利点のために減少すれば、高Ｖｐａｓｓ電圧による影響がオフセットされる。例えば、Ｖｐａｓｓ２はＶｐａｓｓ１より０．５Ｖ高い。一つの可能な実施例では、Ｖｐａｓｓ２は７〜１０Ｖであり、Ｖｐａｓｓ１は６．５〜９．５Ｖである。一般に、個々のワード線に対して同じまたは異なるＶｐａｓｓ値を印加することが可能である。例えば、選択されていないワード線に印加されるＶｐａｓｓは、初期プログラミングが実行されるか再プログラニングが実行されるかを示す関数であることに加えて、選択されたワード線に対するおよび／またはブロックの境界に対する選択されていないワード線の位置の関数であり得る。
【００８３】
このように、図１４Ａと１４Ｂは、自己昇圧技術の場合に、初期プログラミングおよび再プログラミングのそれぞれでワード線に印加される電圧を示している。自己昇圧によって、選択されていないビット線と関連しているチャネルが電気的に絶縁されて、プログラミング中に、選択されていないワード線に対してパス電圧Ｖｐａｓｓ１またはＶｐａｓｓ２が印加される。これら選択されていないワード線は、選択されていないビット線と関連するチャネルに結合し、このため、電圧（例えば、初期プログラミング中と再プログラミング中とでそれぞれ７．５Ｖまたは８Ｖ）が、選択されていないビット線のチャネル中に存在することになる。したがって、自己昇圧によって、チャネル中に電圧昇圧が発生し、これが、トンネル酸化物の両端の電圧を下げ、したがってプログラム外乱を軽減する傾向がある。例えば、簡単な例として、４つのワード線ＷＬ０〜ＷＬ３があり、ＷＬ２上の記憶素子がプログラミング電圧Ｖｐｇｍで現在プログラム中である場合を考える。この場合、Ｖｐａｓｓ１またはＶｐａｓｓ２をＷＬ０、ＷＬ１およびＷＬ３に印加することによって自己昇圧が達成される。実際には、１つ置きのワード線の両端にこれらの電圧を印加してもよい。
【００８４】
図１４Ｃおよび１４Ｄは、局所的自己昇圧（ＬＳＢ）技術の場合に、初期プログラミングおよび再プログラミングのそれぞれでワード線に印加される電圧を示している。図１４Ｅと１４Ｆは、消去領域自己昇圧（ＥＡＳＢ）技術の場合に、初期プログラミングおよび再プログラミングのそれぞれでワード線に印加される電圧を示している。ＬＳＢとＥＡＳＢでは、すでにプログラムされている記憶素子のチャネルを抑止されている記憶素子のチャネルから絶縁することによって従来の自己昇圧の欠点を解決しようとしている。例えば、図４を参照すると、記憶素子４２４がプログラムされている場合、ＬＳＢとＥＡＳＢでは、記憶素子４４４のチャネルをすでにプログラムされている記憶素子（４４５と４４６）から絶縁することによって、記憶素子４４４へのプログラミングを抑止しようとする。ＳＢ、ＥＡＳＢおよびＬＳＢなどの昇圧方法またはこれらの昇圧方法を変化させた方法の場合、プログラムされている記憶素子のビット線が接地または０Ｖに近い電圧（一般的には０〜１Ｖの範囲）に接続されるが、抑止されている記憶素子を持つＮＡＮＤストリングのビット線はＶｄｄ（一般的には、約１．５〜３Ｖ）にある。プログラム電圧Ｖｐｇｍ（例えば２０Ｖ）は、選択されたワード線に接続される。ＬＳＢの場合、選択されたワード線に隣接するワード線は、０Ｖまたはこれに近い電圧値にあり、残りの選択されていないワード線はＶｐａｓｓ１またはＶｐａｓｓ２にある。例えば、ビット線４２１は０Ｖにあり、ビット線４４１はＶｄｄにある。ドレイン選択ＳＣＧはＶｓｇｄ（一般的には２．５〜４．５Ｖ）にあり、ソース選択ＳＧＣは０Ｖにある。図１４Ｃと１４Ｄを参照すると、選択されたワード線ＷＬ２はＶｐｇｍにあり、隣接するワード線ＷＬ１とＷＬ３は０Ｖにあり、他のワード線（例えばＷＬ０）はＶｐａｓｓ１またはＶｐａｓｓ２にある。
【００８５】
ＬＳＢモードの欠点は、選択されたワード線の下の昇圧されたチャネル電圧が非常に高くなる場合があるという点であるが、これは、このチャネルの一部が選択されていないワード線下の他のチャネル領域から絶縁され、このため、昇圧電圧が主として高プログラミング電圧Ｖｐｇｍによって判定されるからである。高い昇圧のため、０Ｖにバイアスされているワード線の近傍で、バンド間トンネル現象やＧＩＤＬが発生することがある。チャネル昇圧の量は、ＥＡＳＢを用いると低い値に制限することが可能である。ＥＡＳＢは、ソース側の隣接するワード線だけが０Ｖにあるという点を除いてはＬＳＢと似ている。例えば、図１４Ｅと１４Ｆを参照すると、選択されたワード線ＷＬ２はＶｐｇｍにあり、ソース側の隣接するワード線ＷＬ１は０Ｖにあり、他のワード線（例えばＷＬ０とＷＬ３）はＶｐａｓｓ１またはＶｐａｓｓ２にある。この方法では、選択されたワード線下のチャネル領域と選択された記憶素子のドレイン側の隣接するワード線下のチャネル領域とが接続され、したがって、ＬＳＢの場合におけるＶｐｇｍの代わりに、主として選択されていないワード線に印加されるパス電圧によってこのチャネル昇圧が判定される。ドレイン側の隣接するワード線ＷＬ３はＶｐａｓｓ１またはＶｐａｓｓ２にある。Ｖｐａｓｓが低すぎる場合には、チャネル内での昇圧はプログラム外乱を防止するのに不十分である。Ｖｐａｓｓ１またはＶｐａｓｓ２が高すぎると、選択されたＮＡＮＤストリング内の選択されていないワード線（ビット線には０Ｖが印加されている）がプログラムされるか、または、ＧＩＤＬによるプログラム外乱が発生し得る。
【００８６】
（適切な読み出し電圧を決定するためのフラグの利用）
図１５は、フラグを用いて、不揮発性ストレージのブロック内のデータのページを読み出すプロセスの一実施形態を説明するフローチャートである。記憶素子のブロックに関してプロセスを説明するが、一般に、どのような記憶素子のセットにも適用可能である。ブロック内のデータは、必要に応じて読み出される。データは、初期プログラミングおよび／または再プログラミングが完了したブロック内のページから読み出される。再プログラミングで高ＶＴＨ検証レベルが用いられとき、データ読み出し時には高い読み出しレベルを用いることが可能である。したがって、ページを読み出す前にそのプログラミング状態を知ることが望ましい。
【００８７】
この目的を達成するには、各ページが、同一のページ中に常駐する専用のバイナリ符号化された記憶素子を有すればよく、例えば、そのバイナリ状態はフラグとして用いられる。読み出し動作が新しいブロックに移行したときに、ブロックの第１のページは、このページがブロック再プログラムされているという前提で読み出される。この読み出しの結果が違うものを示していれば、このページをより低い読み出しレベルのセットで再度読み出せばよい。後続のページも同様に、第１のページと同じプログラミング状態（再プログラムされているかいないか）を有するはずである。したがって、エラー訂正符号（ＥＣＣ）エラーによって間違ったページ状態を用いてしまった可能性が発生するまでは第１のページに対応するモードで後続のページを読み出すことが可能であるが、この間違ったページ状態を用いていた場合には、ブロック内のこのページとすべての後続ページを、代替の読み出し電圧によって読み出すことが可能である。そのうえ、どのページを読み出した後でも、そのフラグの状態は、想定される読み出し電圧に合わせてチェックすることが可能であり、矛盾が見つかっても、代替の読み出し電圧を用いてページを再読み出しすることができる。これは、たとえ最初の不適当な読み出しの結果としてＥＣＣエラーとはならなかった場合でも、実行することが可能である。
【００８８】
例示の実施例では、ステップ１５００で、制御装置が、データのページの読み出しを開始する。ステップ１５０５では、ページが置かれているブロックのブロックフラグが読み出されて、プログラミング状態が判定される。代わりに、図１２を参照して説明したように、１つまたは複数のページフラグを読み出して、プログラミング状態を判定してもよい。ステップ１５１０では、ブロックフラグ／ページフラグがそのブロックに対して再プログラミングが完了していることが示されていれば、ステップ１５３５で、第２の高ＶＴＨ読み出しレベルのセットが用いられる。例えば、これらは、図７ＢのＶｒａ２、Ｖｒｂ２およびＶｒｃ２である。ステップ１５４０では、第２の高ＶＴＨ読み出しレベルのセットを用いて、データのページが読み出される。ステップ１５４５においてブロック内のさらなるページを読み出す場合であって、再プログラミングが完了している場合には（ステップ１５１０）、ステップ１５３５で得られた第２の高ＶＴＨ読み出しレベルのセットを用いてステップ１５４０で追加のデータのページを読み出す。これ以上読み出すページがなくなれば、ステップ１５５０で読み出しプロセスは終了する。
【００８９】
一方、ステップ１５１０で、ブロックフラグ／ページフラグがブロックに対して再プログラミングが完了していることが示されなければ、ステップ１５１５でページフラグが読み出されて、ステップ１５２０でそのページに対して初期プログラミングだけが完了しているのか、または、ステップ１５３０でそのページに対しては再プログラミングも完了しているかが判定される。初期プログラミングだけが完了している場合は、ステップ１５２５で、第１の低ＶＴＨ読み出しレベルのセットが用いられる。例えば、これらは、図７ＡのＶｒａ１、Ｖｒｂ１、Ｖｒｃ１である。再プログラミングも完了している場合には、上述したように、ステップ１５３５で、第２の高ＶＴＨ読み出しレベルのセットが用いられ、ステップ１５４０でデータのページが読み出される。このプロセスは、これ以上読み出すページがなくなるまで繰り返される。したがって、ブロック内の各ページに対して、その関連するプログラミング状態に基づいて適切な読み出しレベルを用いることが可能である。
【００９０】
（適切な読み出し電圧を判定するためのエラーカウントの利用）
図１６は、エラーカウントを用いて、不揮発性ストレージのブロック内のデータのページを読み出すプロセスの一実施形態を説明するフローチャートである。記憶素子のブロックに関してプロセスを説明するが、一般に、どのような記憶素子のセットにも適用可能である。この方法では、ページやブロックのプログラミング状態をそれぞれ識別するために、ページレベルフラグやブロックレベルフラグを必要としない。そのかわりに、制御回路は、所定のプログラミング状態、例えば、初期プログラミングだけが完了している状態であるのか再プログラミングも完了している状態であるのかを前提として、ページを読み出すことが可能であり、エラーカウントに基づいて、この前提が正しいかどうかを判定することが可能である。この前提が間違いであり、間違った読み出し電圧が用いられていたと判定された場合には、代替の読み出し電圧のセットを用いて、記憶素子を再読み出しする。
【００９１】
例示の実施例では、ステップ１６００で、制御装置は、データのページの読み出しを開始する。ステップ１６０５で、ＶＴＨ読み出しレベルのデフォルトセット、例えば、図７Ａの低レベルＶｒａ１、Ｖｒｂ１およびＶｒｃ１または図７Ｂの高レベルＶｒａ２、Ｖｒｂ２、Ｖｒｃ２のいずれかが用いられる。ステップ１６１５では、このデフォルトまたは想定されたＶＴＨ読み出しレベルを用いてページが読み出され、ステップ１６２０では、このページに対するエラーカウントが判定される。例えば、エラーカウントは、エラー訂正符号またはエラー検出符号によって検出されたエラーに基づいている。ハミング符号などのエラー訂正符号は、エラーを検出して訂正することが可能であるが、パリティビットやチェックサムを用いる符号などのエラー検出符号では、エラーを検出することが可能であるだけであり、訂正はしない。例えば、図６を参照して上述したように、ページには、ＥＣＣデータと関連したデータセクターが多く含まれている。これらのセクターを記憶素子に書き込むと、追加のエラー訂正ビットまたはエラー検出ビットが書き込まれる。これらのビットは、エラー訂正符号またはエラー検出符号を用いてデータセクターから生成される。次いで、セクターが読み出されると、これら付随のエラー訂正ビットまたはエラー検出ビットも読み出される。すると、セクターデータは、エラー訂正符号またはエラー検出符号を通じて、この出力がエラー訂正ビットまたはエラー検出ビットと一致しているかどうか調べる。出力が一致していなければ、セクターにエラーがある。したがって、セクターまたは他の単位で検出されたエラーの数に基づいてエラーカウントを生成することが可能である。このカウントには、例えば、訂正可能なエラーを含むすべての検出されたエラーや、訂正不可能なエラーだけが含まれる場合がある。このカウントは、そのままのカウント値、パーセンテージまたは他の測定基準で表すことが可能である。
【００９２】
ステップ１６２５では、エラーカウントが閾値を超えた場合に、用いられたＶＴＨ読み出しレベルのデフォルトセットが正しくないと結論することができる。この場合、ステップ１６３０で、代替のＶＴＨ読み出しレベルのセットが用いられる。例えば、デフォルトセットが図７Ａの低読み出しレベルＶｒａ１、Ｖｒｂ１およびＶｒｃ１を含む場合には、代替のセットが図７Ｂの高読み出しレベルＶｒａ２、Ｖｒｂ２およびＶｒｃ２を含む場合がある。反対に、このデフォルトセットが高読み出しレベルを含む場合には、代替のセットが低読み出しレベルを含む場合がある。この方法は、読み出しレベルの代替のセットが２つ以上ある場合にも拡張して適用可能である。ステップ１６３５では、代替の読み出しレベルでページが再読み出しされる。ステップ１６４０でさらに読み出すページがあれば、ステップ１６１５で直近に用いられた読み出しレベルのセットを用いてページが読み出され、ステップ１６２０でエラーカウントが判定される。次いで、このプロセスは上述したように進行する。ステップ１６２５でエラーカウントが閾値を超えておらず、ステップ１６４０でこれ以上読み出すページがなければ、ステップ１６４５で本プロセスは終了する。ステップ１６４０でまだ読み出すページがあれば、ステップ１６１５で直近に用いられた読み出しレベルのセットを用いてページが読み出される。
【００９３】
エラー閾値は、一般には正しい読み出しレベルを用いたときに生じるエラーカウントを考慮して、特定のメモリデバイスでの経験に基づいたレベルに設定することが可能である。エラーカウントは、この一般に正しい読み出しレベルを用いたときに経験したエラーカウントから、所定の分量だけ逸脱すれば不正確な読み出しレベルを示すものと見なすことが可能である。試験、モデル化、及び、実験によって、適切な閾値を設定することが可能である。また、代替の読み出しレベルを用いたときのエラーカウントを判定して、これを、デフォルト読み出しレベルを用いたときのエラーカウントと比較することも可能である。読み出しレベルが結果としてエラーカウントの減少をもたらすのであれば、これらのレベルを最終的な読み出しレベルとして用いることが可能である。
【００９４】
本発明に関する前述の詳細な説明は、例証と説明のために提示されたものである。本発明を開示する形態そのもので尽きたり、これに限ったりということを意図するものではない。上記の教示に照らし合わせて、多くの修正例や変更例が可能である。説明した実施形態は、本発明とその実際の応用例の原理が最もよく説明され、これによって、他の当業者が、想定される特定の用途に適しているさまざまな実施形態で、また、さまざまな修正をもって、本発明を利用することが可能となるように選ばれたものである。本発明の範囲は添付特許請求の範囲によって定義されることを意図するものである。
【図１】
2009541909.tif 000005
【図２】
2009541909.tif 000006
【図３】
2009541909.tif 000007
【図４】
2009541909.tif 000008
【図５】
2009541909.tif 000009
【図６】
2009541909.tif 000010
【図７Ａ】
2009541909.tif 000011
【図７Ｂ】
2009541909.tif 000012
【図８】
2009541909.tif 000013
【図９】
2009541909.tif 000014
【図１０】
2009541909.tif 000015
【図１１Ａ】
2009541909.tif 000016
【図１１Ｂ】
2009541909.tif 000017
【図１１Ｃ】
2009541909.tif 000018
【図１２】
2009541909.tif 000019
【図１３】
2009541909.tif 000020
【図１４Ａ】
2009541909.tif 000021
【図１４Ｂ】
2009541909.tif 000022
【図１４Ｃ】
2009541909.tif 000023
【図１４Ｄ】
2009541909.tif 000024
【図１４Ｅ】
2009541909.tif 000025
【図１４Ｆ】
2009541909.tif 000026
【図１５】
2009541909.tif 000027
【図１６】
2009541909.tif 000028
【手続補正書】
【提出日】平成21年1月15日(2009.1.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
初期プログラミングにおいて、複数のワード線のうちの最初のワード線から始めて、隣接する各ワード線に順に移行して、複数のワード線のうちの最後のワード線に到達するまで、複数のワード線を介して複数の不揮発性記憶素子をプログラミングするステップと、
初期プログラミングが完了した後に、複数のワード線を介して複数の不揮発性記憶素子を再プログラミングするステップ、
を有することを特徴とする不揮発性ストレージを動作させる方法。
【請求項２】
複数のワード線のうちの１つと接続されている不揮発性記憶素子をプログラミングするときに、初期プログラミングにおいては、複数のワード線のうちの少なくとも１つの他のワード線に対して第１のパス電圧を印加し、複数のワード線のうちの前記１つと接続されている不揮発性記憶素子をプログラミングするときに、再プログラミングにおいては、前記少なくとも１つの他のワード線に対して、第１のパス電圧とは異なる第２のパス電圧を印加することを特徴とする請求項１に記載の方法。
【請求項３】
第２のパス電圧が、第１のパス電圧より高いことを特徴とする請求項２に記載の方法。
【請求項４】
初期プログラミングにおいては、第１の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされ、再プログラミングにおいては、第１の閾値電圧検証レベルのうちの対応するレベルより高い第２の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされることを特徴とする請求項１に記載の方法。
【請求項５】
初期プログラミングと再プログラミングが、複数の不揮発性記憶素子が配列されているブロックに対して実行され、
ブロックに対して再プログラミングが完了しているか否かを示すプログラミング状態情報を記憶するステップをさらに有していることを特徴とする請求項１に記載の方法。
【請求項６】
複数の不揮発性記憶素子のプログラミングを管理する少なくとも１つの回路が待機モードに入った後に、再プログラミングを異なる時点で実行することを特徴とする請求項１に記載の方法。
【請求項７】
優先順位が高い保留中のタスクが他にないときに、再プログラミングを異なる時点で実行することを特徴とする請求項１に記載の方法。
【請求項８】
複数の不揮発性記憶素子に対して再プログラミングが完了したか否かを示すプログラミング状態情報を記憶するステップをさらに有することを特徴とする請求項１に記載の方法。
【請求項９】
複数の不揮発性記憶素子と、
初期プログラミングにおいて、複数のワード線のうちの最初のワード線から始めて、隣接する各ワード線に順に移行して、複数のワード線のうちの最後のワード線に到達するまで、複数のワード線を介して複数の不揮発性記憶素子をプログラミングし、初期プログラミングが完了した後に、複数のワード線を介して複数の不揮発性記憶素子を再プログラミングする１または複数の回路、
を有する不揮発性記憶システム。
【請求項１０】
複数のワード線のうちの１つと接続されている不揮発性記憶素子をプログラミングするときに、１または複数の回路が、初期プログラミングにおいては、複数のワード線のうちの少なくとも１つの他のワード線に対して第１のパス電圧を印加し、複数のワード線のうちの前記１つと接続されている不揮発性記憶素子をプログラミングするときに、再プログラミングにおいては、前記少なくとも１つの他のワード線に対して、第１のパス電圧とは異なる第２のパス電圧を印加することを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１１】
第２のパス電圧が、第１のパス電圧より高いことを特徴とする請求項１０に記載の不揮発性記憶システム。
【請求項１２】
初期プログラミングにおいては、第１の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされ、再プログラミングにおいては、第１の閾値電圧検証レベルのうちの対応するレベルより高い第２の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされることを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１３】
初期プログラミングと再プログラミングが、複数の不揮発性記憶素子が配列されているブロックに対して実行され、
ブロックに対して再プログラミングが完了しているか否かを示すプログラミング状態情報が記憶されることを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１４】
少なくとも１つの回路が待機モードに入った後に、再プログラミングが異なる時点で実行されることを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１５】
複数の不揮発性記憶素子が、ＮＡＮＤストリング中に配列されていることを特徴とする請求項９に記載の不揮発性記憶システム。
【手続補正書】
【提出日】平成21年3月13日(2009.3.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
初期プログラミングにおいて、複数のワード線のうちの最初のワード線から始めて、隣接する各ワード線に順に移行して、複数のワード線のうちの最後のワード線に到達するまで、複数のワード線を介して複数の不揮発性記憶素子をプログラミングするステップと、
初期プログラミングが完了した後に、複数のワード線を介して複数の不揮発性記憶素子を再プログラミングするステップ、
を有することを特徴とする不揮発性ストレージを動作させる方法。
【請求項２】
初期プログラミングにおいては、第１の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされ、再プログラミングにおいては、第１の閾値電圧検証レベルのうちの対応するレベルより高い第２の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされることを特徴とする請求項１に記載の方法。
【請求項３】
優先順位が高い保留中のタスクが他にないときに、再プログラミングを異なる時点で実行することを特徴とする請求項１または２に記載の方法。
【請求項４】
複数の不揮発性記憶素子のプログラミングを管理する少なくとも１つの回路が待機モードに入った後に、再プログラミングを異なる時点で実行することを特徴とする請求項１〜３のいずれか一項に記載の方法。
【請求項５】
複数のワード線のうちの１つと接続されている不揮発性記憶素子をプログラミングするときに、初期プログラミングにおいては、複数のワード線のうちの少なくとも１つの他のワード線に対して第１のパス電圧を印加し、複数のワード線のうちの前記１つと接続されている不揮発性記憶素子をプログラミングするときに、再プログラミングにおいては、前記少なくとも１つの他のワード線に対して、第１のパス電圧とは異なる第２のパス電圧を印加し、
第２のパス電圧が、第１のパス電圧より高いことを特徴とする請求項１〜４のいずれか一項に記載の方法。
【請求項６】
複数の不揮発性記憶素子に対して再プログラミングが完了したか否かを示すプログラミング状態情報を記憶するステップをさらに有することを特徴とする請求項１〜５のいずれか一項に記載の方法。
【請求項７】
初期プログラミングと再プログラミングが、複数の不揮発性記憶素子が配列されているブロックに対して実行され、
ブロックに対して再プログラミングが完了しているか否かを示すプログラミング状態情報を記憶するステップをさらに有していることを特徴とする請求項１〜６のいずれか一項に記載の方法。
【請求項８】
複数の不揮発性記憶素子と、
初期プログラミングにおいて、複数のワード線のうちの最初のワード線から始めて、隣接する各ワード線に順に移行して、複数のワード線のうちの最後のワード線に到達するまで、複数のワード線を介して複数の不揮発性記憶素子をプログラミングし、初期プログラミングが完了した後に、複数のワード線を介して複数の不揮発性記憶素子を再プログラミングする１または複数の回路、
を有する不揮発性記憶システム。
【請求項９】
初期プログラミングにおいては、第１の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされ、再プログラミングにおいては、第１の閾値電圧検証レベルのうちの対応するレベルより高い第２の閾値電圧検証レベルを用いて複数の不揮発性記憶素子がプログラムされることを特徴とする請求項８に記載の不揮発性記憶システム。
【請求項１０】
少なくとも１つの回路が待機モードに入った後に、再プログラミングが異なる時点で実行されることを特徴とする請求項８または９に記載の不揮発性記憶システム。
【請求項１１】
複数のワード線のうちの１つと接続されている不揮発性記憶素子をプログラミングするときに、１または複数の回路が、初期プログラミングにおいては、複数のワード線のうちの少なくとも１つの他のワード線に対して第１のパス電圧を印加し、複数のワード線のうちの前記１つと接続されている不揮発性記憶素子をプログラミングするときに、再プログラミングにおいては、前記少なくとも１つの他のワード線に対して、第１のパス電圧とは異なる第２のパス電圧を印加し、
第２のパス電圧が、第１のパス電圧より高いことを特徴とする請求項８〜１０のいずれか一項に記載の不揮発性記憶システム。
【請求項１２】
初期プログラミングと再プログラミングが、複数の不揮発性記憶素子が配列されているブロックに対して実行され、
ブロックに対して再プログラミングが完了しているか否かを示すプログラミング状態情報が記憶されることを特徴とする請求項８〜１１のいずれか一項に記載の不揮発性記憶システム。
【請求項１３】
複数の不揮発性記憶素子が、ＮＡＮＤストリング中に配列されていることを特徴とする請求項８〜１２のいずれか一項に記載の不揮発性記憶システム。
【国際調査報告】
2009541909.tif 000029
2009541909.tif 000030
2009541909.tif 000031