JP2012531694A - 不揮発性記憶装置のプログラミングの完了を検出する方法 - Google Patents

不揮発性記憶装置のプログラミングの完了を検出する方法 Download PDF

Info

Publication number
JP2012531694A
JP2012531694A JP2012517560A JP2012517560A JP2012531694A JP 2012531694 A JP2012531694 A JP 2012531694A JP 2012517560 A JP2012517560 A JP 2012517560A JP 2012517560 A JP2012517560 A JP 2012517560A JP 2012531694 A JP2012531694 A JP 2012531694A
Authority
JP
Japan
Prior art keywords
state
volatile storage
storage elements
programming
threshold voltage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2012517560A
Other languages
English (en)
Inventor
ゲルト ヤン ヘミンク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of JP2012531694A publication Critical patent/JP2012531694A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

不揮発性記憶素子の集合は、データを記憶するためにプログラミング処理を受ける。プログラミング処理の間、不揮発性記憶素子が適切なデータを記憶するために目標状態に到達したか否かを判断するために、1つ以上の検証処理が行われる。プログラミングは、全ての不揮発性記憶素子が各自の目標レベルに到達した場合や、各自の目標レベルに到達していない不揮発性記憶素子の数が、読み出し処理(または他の処理)の間に誤り訂正処理を用いて訂正することができるメモリセルの数よりも少ない場合に、終了することができる。各自の目標レベルに到達していない不揮発性記憶素子の数は、目標レベルと異なる状態(例:低い状態)に到達していない不揮発性記憶素子の数をカウントすることで、推測することができる。

Description

本発明は、不揮発性記憶装置のための技術に関する。
半導体メモリは、様々な電子デバイスで使われることが一般的になってきている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナル・デジタル・アシスタント、モバイルコンピュータ、非モバイルコンピュータ、及び他の装置に使用されている。電気的消去・再書込み可能型読取専用メモリ(EEPROM)とフラッシュメモリは、最も普及している不揮発性半導体メモリである。
EEPROMとフラッシュメモリは、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されているフローティングゲートを採用している。フローティングゲートは、ソース領域とドレイン領域の間に配置されている。フローティングゲートの上に、そのフローティングゲートから絶縁されている制御ゲートが設けられている。トランジスタの閾値電圧は、フローティングゲート上に保持されている電荷量によって制御される。即ち、そのソースとドレインの間の導通を可能にすべくトランジスタをオンするために制御ゲートに印加すべき電圧の最小量は、そのフローティングゲート上の電荷量レベルにより制御される。
EEPROMやフラッシュメモリデバイスにプログラミングを行う場合、典型的には、ビットラインが接地されるとともに、制御ゲートにプログラム電圧が加えられる。チャネルからの電子がフローティングゲートへ注入される。フローティングゲートに電子が蓄積されると、フローティングゲートが負値に帯電し、メモリセルの閾値電圧が上昇し、メモリセルがプログラムされた状態となる。プログラミングに関するさらなる情報は、「Source Side Self Boosting Technique for Non-Volatile Memory」と題した米国特許第6,859,397号、および、「Detecting Over Programmed Memory」と題した米国特許第6,917,542号に開示されている。両文献の内容は、その全体を参照することにより本明細書に組み込まれる。
一部のEEPROMおよびフラッシュメモリ装置は、電荷の2つの範囲を記憶するために使用されるフローティングゲートを備える。従って、メモリセルは、2つの状態の間で、プログラムまたは消去される。消去状態およびプログラム状態の各々は、データ「1」およびデータ「0」に相当する。そのような装置は、バイナリ装置または2状態装置と呼ばれることがある。
マルチステートフラッシュメモリセルは、多数の、明確な許容されている複数の閾値電圧範囲によって、実施される。明確な閾値電圧範囲の各々は、データビットの集合に関する所定の値に相当する。メモリセルにプログラムされたデータと、セルの閾値電圧範囲との間の詳細な関係は、セルのために採用されるデータ符号化方式に依存する。例えば、両方ともその全体を参照することにより本明細書に組み込まれる、米国特許第6,222,762号及び米国特許出願公表第2004/0255090号は、マルチ状態フラッシュメモリセルの多様なデータ符号化方式を説明する。
いくつかの実施形態では、制御ゲートに印加されるプログラム電圧は、連続するパルスの各々で所定のステップサイズ(例:0.2ボルト、0.3ボルト、0.4ボルト、または他の電圧)で大きさが増加していく、一連のパルスを含んでいる。パルスの間においてメモリシステムは、個々のメモリセルが、各メモリセルが目標とする閾値電圧範囲に到達したか否かを検証することができる。各自の目標とする閾値電圧範囲に到達したこれらのメモリセルは、(例えば、ビットライン電圧をVddへ上昇させることによって、)以後のプログラミングから除外される。全てのメモリセルが目標とする閾値電圧範囲に到達した場合には、プログラミングが完了する。
NANDストリングの平面図である。 NANDストリングの等価回路図である。 不揮発性メモリシステムのブロック図である。 センスブロックの一実施例を示すブロック図である。 メモリアレイの一実施例を示すブロック図である。 データの1ページを示す図である。 閾値電圧分布の集合の一例および不揮発性メモリのプログラミングの処理を表わす図である。 閾値電圧分布の集合の一例および不揮発性メモリのプログラミングの処理を表わす図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 一実施形態における不揮発性メモリのプログラミング順序を表すテーブルを示す図である。 閾値電圧分布の集合の一例および不揮発性メモリのプログラミングの処理を表わす図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。 不揮発性メモリの動作のための処理の一実施形態を表すフローチャートを示す図である。 不揮発性メモリのプログラミングのための処理の一実施形態を表すフローチャートを示す図である。 不揮発性メモリの一実施形態における制御ゲート信号を示す図である。 不揮発性メモリの一実施形態における制御ゲート信号を示す図である。 不揮発性メモリの一実施形態における制御ゲート信号を示す図である。 不揮発性メモリの一実施形態における制御ゲート信号を示す図である。 閾値電圧分布の集合の一例を示す図である。 閾値電圧分布の集合の一例を示す図である。 不揮発性メモリの一実施形態に対する制御ゲート信号を示す図である。 不揮発性メモリの一実施形態に対する制御ゲート信号を示す図である。 不揮発性メモリの一実施形態に対する制御ゲート信号を示す図である。 不揮発性メモリの一実施形態に対する制御ゲート信号を示す図である。 不揮発性メモリをプログラミングするための処理の一実施形態を示すフローチャート図である。 不揮発性メモリをプログラミングするための処理の一実施形態を示すフローチャート図である。 雑/高精度プログラミングの一部として実行される処理の一実施形態を示す図である。 雑/高精度プログラミングの一部として実行される処理の一実施形態を示す図である。
不揮発性記憶システムでは、データの集合を記憶するために、不揮発性記憶素子の集合にプログラミング処理が行われる。プログラミングは、全ての不揮発性記憶素子が各自の目標レベルに到達した場合や、各自の目標レベルに到達していない不揮発性記憶素子の数が、読み出し処理(または他の処理)の間に誤り訂正処理を用いて訂正することができるメモリセルの数よりも少ない場合に、終了することができる。各自の目標レベルに到達していない不揮発性記憶素子の数は、目標レベルと異なる状態に到達していない不揮発性記憶素子の数をカウントすることで、推測することができる。
不揮発性記憶システムの一例は、NAND構造を用いるフラッシュメモリシステムであり、2つの選択ゲートの間に複数のトランジスタの直列接続を含んでいる。直列に接続されたトランジスタと選択ゲートは、NANDストリングと呼ばれる。図1は、1つのNANDストリングを示す平面図である。図2は、その等価回路である。図1と図2に示すNANDストリングは、(ドレイン側)選択ゲート120と(ソース側)選択ゲート122の間に挟まれている、直列に接続されている4つのトランジスタ100、102、104及び106を有する。選択ゲート120は、ビットコンタクト126を介してNANDストリングをビットラインに接続している。選択ゲート122は、NANDストリングをソースライン128に接続している。選択ゲート120は、選択ラインSGDに適切な電圧を加えることによって制御される。選択ゲート122は、選択ラインSGSに適切な電圧を加えることによって制御される。トランジスタ100、102、104、及び106の夫々は、制御ゲートとフローティングゲートを有している。例えば、トランジスタ100は、制御ゲート100CGとフローティングゲート100FGを備えている。トランジスタ102は、制御ゲート102CGとフローティングゲート102FGを備えている。トランジスタ104は、制御ゲート104CGとフローティングゲート104FGを備えている。トランジスタ106は、制御ゲート106CGとフローティングゲート106FGを備えている。制御ゲート100CGはワードラインWL3に接続されており、制御ゲート102CGはワードラインWL2に接続されており、制御ゲート104CGはワードラインWL1に接続されており、制御ゲート106CGはワードラインWL0に接続されている。
図1と図2は、NANDストリング内の4個のメモリセルを示しているが、4個のメモリセルの使用は単に一例として提示されている点に留意されたい。NANDストリングは、4個よりも少ない、或いは、4個よりも多いメモリセルを有していてよい。例えば、NANDストリングによっては8個、16個、32個、64個、128個などの数のメモリセルを有していてよい。本明細書の説明は、いかなる特定個数のメモリセルを有するNANDストリングにも限定されない。一実施形態は、66個のメモリセルを備えたNANDストリングを使用する。66個のメモリセルのうち、64個のメモリセルはデータを記憶し、メモリセルの2個はデータを記憶しないためダミーメモリセルとされる。
NAND構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのNANDストリングを含んでいる。各NANDストリングは、選択ラインSGSによって制御されるソース選択ゲートによって共通ソースラインに接続されているとともに、選択ラインSGDによって制御されるドレイン選択ゲートによって関連するビットラインに接続されている。各ビットラインとそのビットラインにビットラインコンタクトを介して接続されている夫々のNANDストリングは、メモリセルアレイの列を構成する。ビットラインは、複数のNANDストリングによって共有されている。典型的には、ビットラインは、ワードラインと直交する方向でNANDストリング上を通っており、1のセンスアンプと接続されている。
NANDタイプのフラッシュメモリおよびそれらの動作に関連する例は、以下の米国特許/特許出願に記載されており、それらの引用文献は、その全体が参照により本明細書に組み込まれる。米国特許第5,570,315号、米国特許第5,774,397号、米国特許第6,046,935号、米国特許第6,456,528号、及び、米国公開公報第US2003/0002348号。
NANDフラッシュメモリに加えて、不揮発性記憶装置の他のタイプもまた用いることができる。例えば、基本的に(フローティングゲートの代わりに)窒化物層内に電荷をトラッピングするメモリセルである、TANOS構造(TaN−Al−SiN−SiOの積層から構成される構造)にも、本明細書で述べる技術は適用できる。フラッシュEEPROMシステムで有用な別のタイプのメモリセルは、不揮発方式で電荷を蓄積するために、導電性フローティングゲートの代わりに非導電性の誘電物質を活用する。そのようなセルは、Chanらによる記事、「A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device」、IEEE ELECTRON DEVICE Letters、EDL−8巻、第3号、1987年3月の93から95ページに説明されている。酸化ケイ素、窒化ケイ素、及び酸化ケイ素(「ONO」)から形成される三層の誘電体が、メモリセルチャネル上で半導電性基板の表面と導電性制御ゲートとの間に挟まれている。セルは、セルチャネルから窒化物の中に電子を注入することにより書込みが行われ、窒化物内において電子が制限領域内にトラッピングされ蓄積される。この蓄積された電荷は、次に、検出可能な方法で、セルのチャネルの一部の閾値電圧を変更する。セルは、窒化物中にホットホールを注入することによって消去される。Nozakiら、「A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application」、IEEE Journal of Solid-State Circuits、第26巻、第4号、1991年4月、497から501ページに、分離した選択トランジスタを形成するためにドーピングされたポリシリコンゲートがメモリセルチャネルの一部に拡がっている分割ゲート構成における同様のセルが説明されている。その文献も参照されたい。
他の例が、「NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell」、IEEE Electron Device Letters、21巻、11号、2000年11月、543から545ページに、Eitanらによって開示されている。ONO誘電層は、ソース拡散領域とドレイン拡散領域の間のチャンネルを横切って伸びている。あるデータビットの電荷がドレインに近接した誘電層内に局在し、他のデータビットの電荷がドレインに近接した誘電層内に局在する。米国特許第5,768,192号および6,011,725号では、2つの酸化シリコン層に挟まれたトラップ用の誘電層を有する不揮発性メモリセルが開示されている。マルチステートのデータ記憶は、誘電層内の空間的に離れた電荷蓄積領域の2値の状態を、別々に読み出すことで行われる。他のタイプのメモリ素子も使用できる。
図3は、メモリセルの1ページに対して読み出しおよびプログラミングを行う、読み出し/書き込み回路を備える不揮発性記憶デバイス210を示している。記憶デバイス210は、1つ以上のメモリダイ又はチップ212を有していてもよい。メモリダイ212は、メモリセルの(2次元又は3次元の)アレイ200、制御回路220、及び、リード/ライト回路230Aと230Bを有する。一実施形態では、様々な周辺回路によるメモリアレイ200へのアクセスはアレイの両側で対称的に実装されており、これにより、各側のアクセスライン及び回路の密度が半分に低減される。リード/ライト回路230A及び230Bは、複数のセンスブロック300を有しており、それらのセンスブロック300によって1ページのメモリセルを並列に読み出し又はプログラムすることができる。メモリアレイ200は、行デコーダ240Aと240Bを介したワードラインと、列デコーダ242Aと242Bを介したビットラインによってアドレス指定される。典型的な実施形態では、コントローラ244は、1つ以上のメモリダイ212のような同じメモリデバイス210(例えば、取り外し可能なストレージカード又はパッケージ)内に含まれる。命令、及びデータは、ライン232を介してホストとコントローラ244の間で転送され、また、ライン234を介してコントローラと1つ以上のメモリダイ212の間で転送される。
制御回路220は、リード/ライト回路230Aと230Bと協調して、メモリアレイ200に対してメモリ動作を実行する。制御回路220は、ステートマシン222、オンチップアドレスデコーダ224、及び電力制御モジュール226を有している。ステートマシン222は、メモリ動作のチップレベルの制御を提供する。オンチップアドレスデコーダ224は、ホスト又はメモリコントローラによって用いられるアドレスと、デコーダ240A、240B、242A及び242Bによって用いられるハードウェアアドレスとの間にアドレスインタフェースを提供する。電力制御モジュール226は、メモリ動作中のワードライン及びビットラインに供給される電力及び電圧を制御する。一実施形態では、電力制御モジュール226は、供給電力より大きな電圧を作り出すことができる一つ以上のチャージポンプを有する。制御回路220、デコーダ240A/240Bおよび242A/242B、リード/ライト回路230A/230B、コントローラ244は、集団でまたは個々で、1つ以上の管理回路としてみなすことができる。
図4は、センスモジュール480と呼ばれるコア部と共通部490に分割された個々のセンスブロック300のブロック図である。一実施形態では、各ビットラインに対して個別のセンスモジュール480を用意し、複数の複数センスモジュール480に対して一つの共通部490を用意してもよい。一例として、1個のセンスブロックは、1個の共通部490と8個のセンスモジュール480を有している。グループ内の各センスモジュールは、データバス472を介して協働する共通部と通信する。さらなる詳細としては、その全体を参照することにより本明細書に組み込まれる米国特許出願公開公報2006/0140007号を参照されたい。
センスモジュール480は、接続されたビットライン内の伝導電流が予め決められた閾値レベルより高いか低いかを判定するセンス回路470を備えている。幾つかの実施形態では、センスモジュール480は、センスアンプと一般に呼ばれる回路を有する。センスモジュール480は、さらに、接続されたビットラインに電圧状態を設定するために用いられるビットラインラッチ482を有している。例えば、ビットラインラッチ482内で予め決められた状態がラッチされることによって、接続されたビットラインを、プログラム禁止を指定する状態(例えば、Vdd)に引き上げる(プル)する。
共通部490は、プロセッサ492、複数のデータラッチ494、及び、複数のデータラッチ494とデータバス420の間を接続するI/Oインタフェース496を備えている。プロセッサ492は計算を実行する。例えば、その機能の1つは、センスされたメモリセル内に記憶されているデータを特定し、特定されたデータを複数のデータラッチ内に記憶することである。複数のデータラッチ494は、読み出し動作において、プロセッサ492によって特定されたデータビット群を記憶するために用いられる。複数のデータラッチ494は、プログラム動作において、データバス420から取り込んだデータビット群を記憶するためにも用いられる。取り込まれるデータビット群は、メモリ内に書き込む予定のライトデータ(書き込みデータ)を表す。I/Oインタフェース496は、データラッチ494とデータバス420の間のインタフェースを提供する。
読み出し又はセンス中には、システムの動作はステートマシン222の制御下にあり、ステートマシン222はアドレス指定されたセルへの種々の制御ゲート電圧の供給を制御する。メモリに用意された様々なメモリ状態に対応する様々な既定制御ゲート電圧(読み出し参照電圧または検証参照電圧)のステップを進む毎に、センスモジュール480はこれらの電圧の1つに遷移し、バス472を介してセンスモジュール480からプロセッサ492に出力が提供される。その時点で、プロセッサ492は、センスモジュールの遷移イベントと、ステートマシンから入力ライン493を介して加えられた制御ゲート電圧についての情報によって、結果としてのメモリ状態を特定する。それから、プロセッサは、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ494に格納する。コア部の別の実施形態では、ビットラインラッチ482は、センスモジュール480の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。
当然のことながら、いくつかの実装形態では複数のプロセッサ492を有することができる。一実施形態では、各プロセッサ492は出力ライン(図4には示されていない)を有し、各出力ラインは共にワイヤードOR(配線論理和)接続される。いくつかの実施形態では、出力ラインは、ワイヤードORラインに接続される前段階で反転される。この構成は、ワイヤードORの結果を受け取るステートマシンが、プログラムされる全てのビットがいつ所望のレベルに到達したかを判断できるので、プログラム処理の完了時点を判定するプログラム検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理「0」がワイヤードORラインに送られる(又はデータ「1」が反転される)。全てのビットがデータ「0」を出力すると(又はデータ「1」が反転されると)、ステートマシンはプログラミング処理の完了を知る。各プロセッサが8個のセンスモジュールと通信する実施形態では、(いくつかの実施形態において)ステートマシンはワイヤードORラインを8回読み出す必要があってもよいし、あるいは、協働するビットラインの結果を蓄積するための論理をプロセッサ492に追加し、ステートマシンがワイヤードORラインを一度だけ読み出せば良いようにしてもよい。センスモジュールを多数備える一部の実施形態では、多数のセンスモジュールの複数のワイヤードORラインは、N個のセンスモジュールの集合にグループ分けされていても良い。そのグループは、2分木(a binary tree)を形成するようにグループ分けされていても良い。
プログラム又は検証処理の間、プログラムされるべきデータはデータバス420から複数のデータラッチ494内に記憶される。ステートマシン制御下のプログラム処理は、メモリセルが同時にプログラムされるように、アドレス指定されるメモリセルの制御ゲートに同時に加えられる、一連の(値の増加を伴う)プログラミング電圧パルスを伴う。各プログラミングパルスに続いて検証処理が実行され、メモリセルが所望の状態にプログラムされたかどうかを判定する。プロセッサ492は、所望のメモリ状態に対する検証メモリ状態を監視する。その2つが一致したとき、プロセッサ492は、プログラム禁止を指定する状態にビットラインを引き上げる(プルする)ようにビットラインラッチ482を設定する。これにより、たとえプログラミングパルスがその制御ゲートに影響しても、ビットラインに接続したメモリセルがさらにプログラミングされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ482をロードし、センス回路が検証処理中にそれに禁止値を設定する。
データラッチスタック494は、センスモジュールに対応するデータラッチのスタックを有する。一実施形態では、センスモジュール480毎に3個(または4個、或いはその他の数の)データラッチが存在する。いくつかの実装形態では、(必須ではないが)データラッチはシフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス420用にシリアルデータに変換したり、その逆を行ったりする。好適な一実施形態では、m個のメモリセルのリード/ライトブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、リード/ライトモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するようにリード/ライトモジュールのバンクを構成し、一群のデータラッチがあたかもリード/ライトブロック全体のシフトレジスタの一部であるかのようにしてもよい。
不揮発性記憶装置の様々な実施形態の構造および/または動作についての、さらなる情報は、次の文献に記載されている。(1)米国特許出願公開公報第2004/0057287号、「Non-Volatile Memory And Method With Reduced Source Line Bias Errors」、2004年3月25日発行、(2)米国特許出願公開公報第2004/0109357号、「Non-Volatile Memory And Method with Improved Sensing」、2004年6月10日発行、(3)米国特許出願公開公報第20050169082号、(4)米国特許出願公開公報第2006/0221692号、タイトルは「Compensating for Coupling During Read Operations of Non-Volatile Memory」、発明者Jian Chen、2005年4月5日出願、及び、(5)米国特許出願公開公報第2006/0158947号、タイトルは「Reference Sense Amplifier For Non-Volatile Memory」、発明者Siu Lung ChanおよびRaul-Adrian Cernea、2005年12月28日出願。これら5個の特許文献の全ては、その全体を参照することにより本明細書に組み込まれる。
図5Aは、メモリセルアレイ200の例示的な構造を示す。一実施形態においては、メモリセルのアレイは、数多くのブロックに分割される。フラッシュEEPROMシステムに一般的であるように、ブロックは消去の単位である。すなわち、各ブロックは共に消去される最小数のメモリセルを含む。
一例として、図5Aに図示されているNANDフラッシュEEPROMは1024個のブロックに分割されている。しかしながら、 1024個より多いまたは少ないブロックを用いることもできる。この例では、各ブロックには、ビットラインBL0、BL1、...BL69623に対応する69624個の列が存在する。一実施形態では、読み出しおよびプログラム処理の間に、1つのブロック内の全てのビットラインを同時に選択することができる。1本の共通ワードラインに沿っているとともに、いずれかのビットラインに接続されている複数のメモリセルは、同時にプログラム(または読み出し)することができる。他の実施形態では、複数のビットラインは、偶数ビットラインと奇数ビットラインに分けられる。奇数/偶数ビットライン・アーキテクチャでは、ある共通ワードラインに沿っているとともに奇数ビットラインに接続されている複数のメモリセルは、ある時にプログラムされる一方、ある共通ワードラインに沿っているとともに偶数ビットラインに接続されている複数のメモリセルは、別の時にプログラムされる。
図5Aは、直列接続されることでNANDストリングを形成している、4つのメモリセルを示している。各々のNANDストリングに4つのセルが含まれているが、4個よりも少ない、或いは、4個よりも多いメモリセルを有していてよい(例えば、NANDストリングによっては、16個、32個、64個、128個やその他の数のメモリセルを有していてもよい。)各NANDストリングの一端は、(選択ラインSGDに接続されている)ドレイン選択ゲートを介して対応するビットラインに接続されており、他端は、(選択ラインSGSに接続されている)ソース選択ゲートを介してソースラインに接続されている。
各ブロックは、通常、複数のページに分割される。ページはプログラムの単位である。通常、1つ又は複数ページのデータが1列のメモリセルに記憶される。1つのページは、1つ又は複数のセクタを記憶できる。1つのセクタは、ユーザデータとオーバヘッドデータを含む。オーバヘッドデータは、通常、セクタのユーザデータから算出される誤り訂正符号(Error Correction Code:ECC)を含む。コントローラが、データがアレイにプログラムされているときにECCを計算し、データがアレイから読み出されているときにECCのチェックも行う。一部の実施形態では、ステートマシンまたは他の構成要素が、ECCを計算してチェックすることができる。幾つかの他の方法では、ECC及び/又は他のオーバヘッドデータはそれらが関係するユーザデータとは異なるページに記憶され、または異なるブロックに記憶されることがある。ユーザデータのセクタは通常、磁気ディスクドライブ内のセクタサイズに相当する512バイトである。例えば8ページから32、64、128、或いはそれ以上のページまでの多数のページが1ブロックを形成する。図5Bは、1ページに対するデータを示している。ページのサイズに応じて、ページは多数のセクタを備える。各セクタは、ユーザデータ、誤り訂正符号(ECC)、およびヘッダ情報を含んでいる。
マルチステートメモリセルを使用している、幾つかのメモリシステムでは、1つのメモリセル内のデータの各ビットは、異なるページに属している。例えば、メモリセルのアレイが、1つのメモリセル当りデータの3ビット(データの8つの状態またはレベル)を記憶する場合、各メモリセルは、3ビットの各々が異なるページになるように、データを3ページに記憶する。従ってこの例の1つのブロック内では、各ワードラインは、3ページまたは3ページの整数倍に関連付けられる。他の配置も可能である。
大規模なデータ記憶デバイスおよび記憶システムでの誤り訂正コーディング(ECC)の使用は、データ通信システムと同様に、よく知られている。この技術分野の基本として、誤り訂正コーディングは、付加ビット(一般的に、パリティビット、コードビット、チェックサム・ディジット(checksum digits)、ECCビットなどと呼ばれる)の記憶または通信を伴う。付加ビットは、符号化される「ペイロード(payload)」データビット(または元データビット)から、決定または算出される。例えば、メモリ資源内への誤り訂正符号化されたデータの記憶は、実データと付加コードビット(the additional code bits)を含ませるために、選択されたコードを用いた1つ以上のコードワード(code words)の符号化を伴う。記憶されたデータの修復は、記憶されたコードワードの符号化に用いられたコードと同一のコードに従った、記憶されたコードワードの復号化を伴う。コードビットは、コードワードの実データ部を「必要以上に詳述(over−specify)」するため、復号の後に実データを欠損することなく、誤りビットの幾つかを許容することができる。
この分野では、多くのECCコード手法が良く知られている。これらの従来の誤り訂正符号は、フラッシュ(および他の不揮発性)メモリなどの大規模なメモリにおいて、特に有益である。それは、このようなコード手法が与えることができる、製造歩留まりやデバイスの信頼性に与える大きな影響のために、幾つかのプログラムできないセルまたは欠陥セルを有するデバイスを使用可能にするためである。もちろん、歩留まり向上と、コードビット(即ち、コード「レート」)を記憶するためのメモリセルを付加的に備えることのコストとの間に、トレードオフが存在する。フラッシュメモリデバイスのための幾つかのECCコードは、データ通信アプリケーションで用いられるコード(1/2まで低いコードレートを有することがある)に比して、より高いコードレート(即ち、コードビットのデータビットに対するより低い比率)を有する傾向がある。
複数のセル間の製造バラツキのために、一部のメモリセルは、他のメモリセルよりもプログラムまたは消去が遅い。これは、1ページ内の複数セル間の不均一な消耗やその他の理由に起因して、それらのセルは、他のメモリセルよりも前に低い閾値電圧に消去されたためである。当然、一部のセルは、欠陥または他の理由によって、プログラムまたは消去することが一切できない。上述したように、誤り訂正コーディングは、メモリを使用可能に維持しながら、遅いまたは機能不全の幾つかのセルを許容する能力を与える。一部のアプリケーションでは、1ページ上の全てのメモリセルが所望のプログラム状態であることが検証されるまで、プログラミングパルスを繰り返し印加することによって、データの1ページがプログラムされる。これらのアプリケーションでは、プログラムされたページの検証が成功する前にプログラミングパルスの最大数に到達する場合、それに引き続いて、所望の状態であることがまだ検証されていないメモリセルの数が、ある閾値と比較される。その閾値は、そのページからデータを読み出す際に用いられる、誤り訂正コーディングの能力によって決まる。誤り訂正が十分に強固な他のアプリケーションでは、まだ完全にプログラムされていないまたは消去されていない、遅い(またはエラーの)セルの数が、訂正可能なビット数よりも少ない場合に、一連のプログラミングパルスまたは消去パルスを打ち切ることによって、プログラミング時間および消去時間が短縮される。
誤り訂正は、典型的には、セクタごとに実行される。従って、各セクタは、各自のECCコードの集合を有することがある。一実施形態では、セクタは、ホストシステムとの間の通信の望ましいデータの単位であるため、この誤り訂正は便利で有用である。
成功したプログラミング処理(検証を含む)の最後に、メモリセルの閾値電圧は、必要に応じて、プログラムされたメモリセルについての1つ以上の閾値電圧の分布の範囲内、または、消去されたメモリセルについての1つの閾値電圧の分布の範囲内である必要がある。図6は、各メモリセルがデータの2ビットを記憶する場合の、メモリセルアレイについての閾値電圧分布の例を示している。しかしながら他の実施形態では、1メモリセル当り、データの2ビットよりも多いまたは少ないビットを用いることができる(例:1メモリセル当りデータの3ビット)。図6は、消去されたメモリセルについての、第1の閾値電圧分布Eを示している。プログラムされたメモリセルについての3つの閾値電圧分布A、BおよびCも、示されている。一実施形態では、分布E内の閾値電圧は負であり、A、BおよびC分布内の閾値電圧は正である。図に示すように、閾値電圧分布Aは、A、BおよびCのうち最も低い。閾値電圧分布Cは、A、BおよびCのうち最も高い。
図6のそれぞれの閾値電圧範囲は、データビットのセットの所定値に対応する。メモリセルにプログラミングされたデータとセルの閾値電圧レベルの特殊な関係は、セルのために採用されるデータ符号化方式に依存する。例えば、両方ともその全体を参照することにより本明細書に組み込まれる、米国特許第6,222,762号、及び、「Tracking Cells For A Memory System,」と題する2003年7月13日出願の米国特許出願公表第2004/0255090号は、マルチ状態フラッシュメモリセルの多様なデータ符号化方式を説明する。一実施形態では、フローティングゲートの閾値電圧が誤ってその近傍の閾値電圧分布にシフトした場合に1ビットだけが影響を受けるように、データ値がグレーコード割り当てを使用して閾値電圧範囲に割り当てられる。一例は、閾値電圧範囲E(状態E)に「11」を、閾値電圧範囲A(状態A)に「10」を、閾値電圧範囲B(状態B)に「00」を、及び閾値電圧範囲C(状態C)に「01」を割り当てる。しかしながら、他の実施形態では、グレーコードは使用されない。図6では4つの状態が示されているが、本発明は、4つの状態より多い、又は、少ない構造を含む他のマルチステート構造に使用することもできる。
図6は、メモリセルからデータを読み出すための読み出し参照電圧Vra、Vrb、及び、Vrcを示している。既定のメモリセルの閾値電圧がVra、Vrb及びVrcを上回っているのか、あるいは下回っているのかをテストすることによって、システムは、メモリセルが存在する状態を判定することができる。すなわち、あるメモリセルがVra、VrbおよびVrcに応じてターンオンするか否かを知ることによって、プロセッサは、そのメモリセルが何れの状態にあるかを解明することができる。例えば、あるメモリセルを読み出す場合に、そのメモリセルがVrcを受信することに応じてターンオンするが、Vrbに応じてターンオンしない場合には、そのメモリセルは状態Bにある。
図6は、3つの検証参照電圧Vva、Vvb、及び、Vvcを示している。メモリセルを状態Aにプログラミングするとき、システムは、それらのメモリセルがVva以上の閾値電圧を有するかどうかをテストする。メモリセルを状態Bにプログラミングするとき、システムは、メモリセルがVvb以上の閾値電圧を有するかどうかをテストする。メモリセルを状態Cにプログラミングするとき、システムは、メモリセルがVvc以上の閾値電圧を有するかどうかをテストする。
一般的に、検証処理および読み出し処理の間では、選択されたワードラインはある電圧に接続される。その電圧のレベルは、読み出し処理(例:図6の読み出し比較レベルVra,VrbおよびVrcを参照)、または、検証処理(例:図6の検証レベルVva,VvbおよびVvcを参照)の各々に対して規定されており、関連するメモリセルの閾値電圧がそれらのレベルに到達したか否かが判断される。ワードライン電圧を印加した後に、ワードラインに印加された電圧に応じてメモリセルがターンオンしたか否かを判断するために、メモリセルの伝導電流が測定される。導電電流がある一定値よりも大きいことが測定される場合には、メモリセルがターンオンし、ワードラインに印加された電圧はメモリセルの閾値電圧よりも大きいと見なされる。導電電流がある一定値よりも大きいことが測定されない場合には、メモリセルがターンオンせず、ワードラインに印加された電圧はメモリセルの閾値電圧よりも大きくないと見なされる。
読み出しまたは検証処理の間にメモリセルの導電電流を測定する、多くの方法が存在する。一例では、メモリセルの導電電流は、センスアンプ内の専用のキャパシタが放電または充電される速度によって、測定される。他の例では、選択されたメモリセルの導電電流は、メモリセルを備えているNANDストリングが、対応するビットラインを放電することを許容する(または放電することを許容しない)。しばらくすると、ビットラインが放電されたか否かを見るために、ビットライン上の電圧が測定される。ここで記述した技術は、検証/読み出しのために当技術分野で周知の他の方法に対して、用いることができることに留意されたい。検証/読み出しについての更なる情報は、その全体を参照することにより本明細書に組み込まれる、次の特許文献に記載されている。(1)米国特許出願公開公報第2004/0057287号、(2)米国特許出願公開公報第2004/0109357号、(3)米国特許出願公開公報第2005/0169082号、および(4)米国特許出願公開公報第2006/0221692号。上述した読み出しおよび検証処理は、当技術分野で周知の技術によって実行される。従って、説明した詳細の大部分は、当業者によって変更することができる。他の周知の読み出しおよび検証技術を用いることもできる。
フルシーケンスプログラミングとして知られている一実施形態においては、メモリセルは、消去状態Eからプログラミンされた状態A、B又はCの何れかに直接的にプログラミングされる。例えば、まず、プログラミングされるメモリセルの集合中の全てのメモリセルが消去状態Eとなるように、集合が消去される場合がある。メモリセルの第1の集合が状態Eから状態Aにプログラムされる一方で、メモリセルの第2の集合が状態Eから状態Bにプログラムされ、メモリセルの第3の集合が状態Eから状態Cにプログラムされる。フルシーケンスプログラミングは、図6の3本の曲線の矢印によって図示されている。
図7は、2つの異なるページ(下位ページと上位ページ)に対してデータを記憶するマルチステートメモリセルにプログラムする、2パス技術の一例を示している。状態E(11)、状態A(10)、状態B(00)及び状態C(01)の4つの状態(閾値電圧分布)が示されている。状態Eの場合、両方のページが「1」を記憶する。状態Aの場合、下位ページが「0」を記憶し、上位ページが「1」を記憶する。状態Bの場合、両方のページが「0」を記憶する。状態Cの場合、下位ページが「1」を記憶し、上位ページが「0」を記憶する。なお、各状態に対して特定のビットパターンが割り当てられているが、異なるビットパターンを割り当てることも可能であることに留意されたい。
第1プログラミングパスでは、メモリセルの閾値電圧レベルは下位の論理ページにプログラムされるビットに従って設定される。そのデータビットが論理「1」であれば、以前に消去された結果として適切な状態にあるので閾値電圧は変更されない。しかし、プログラムされるデータビットが論理「0」であれば、矢印530で示したように、セルの閾値レベルは状態Aになるように増大される。
第2プログラミングパスでは、メモリセルの閾値電圧レベルは上位論理ページ内にプログラムされるビットに従って設定される。上位論理ページビットが論理「1」を記憶する場合、セルは下位ページビットのプログラミングに依存する状態E又はAの一方であり、どちらも上位ページビットは「1」を保持するのでプログラミングは生じない。上位ページビットが論理「0」となる場合、閾値電圧はシフトされる。第1パスによってメモリセルが消去状態Eに留まっていれば第2段階でメモリセルをプログラムし、矢印534で示したように閾値電圧が状態C内になるように増大させる。第1プログラミングパスの結果としてメモリセルが状態A内にプログラムされれば、メモリセルはさらに第2パスでプログラムされ、矢印532で示したように閾値電圧が状態B内になるように増大させる。第2パスの結果は、下位ページ用のデータを変更することなく、上位ページの論理「0」を記憶するように指定した状態にセルをプログラムすることである。
一実施形態では、1本のワードラインを充填するのに十分なデータを書き込まれた場合、システムは全シーケンス書き込みを実行するように設定される。十分ではないデータが書き込まれる場合、プログラミング処理は、受け取ったデータを用いて下位ページをプログラムすることができる。次のデータを受け取ったときは、システムは上位ページをプログラミングする。さらに別の実施形態では、システムは下位ページをプログラムするモードで書き込みを開始し、ワードラインのメモリセルの全体(又は大部分)を充填するために次の十分なデータを受け取った場合、全シーケンスプログラミングモードに変換する。このような実施形態のさらなる詳細は、米国特許出願第2006/0126390号、シリアル番号11/013,125号、「Pipelined Programming of Non-Volatile Memories Using Early Data」、出願日2004年12月14日、発明者Sergy Anatolievich Gorobets および Yan Li、に開示されている。その全体は参照することによって本明細書に組み込まれる。
図8A〜Cは、フローティングゲート間結合の影響を低減する、不揮発性メモリをプログラムする別の方法を開示している。図8A〜Cによって示される処理の実装形態の一例では、不揮発性メモリセルは、4つのデータ状態を用いてメモリセル毎に2ビットのデータを記憶する。例えば、状態Eが消去状態であり、状態A、B及びCがプログラムされた状態であると仮定する。状態Eはデータ11を記憶している。状態Aはデータ01を記憶している。状態Bはデータ10を記憶している。状態Cはデータ00を記憶している。両方のビットは隣接する状態A及びBの間で変化するので、これは非グレイ符号化の一例である。データの物理的データ状態への他の符号化を用いることもできる。各メモリセルは2ページ分のデータを記憶する。参照のために、これらのページのデータは上位ページ及び下位ページと呼ばれるが、他のラベルを与えることもできる。図8A−Cの処理における状態Aを参照すると、上位ページはビット0を記憶し、下位ページはビット1を記憶している。状態Bを参照すると、上位ページはビット1を記憶し、下位ページはビット0を記憶している。状態Cを参照すると、両方のページがビットデータ0を記憶している。
図8A−Cのプログラミング処理は、2つのステップの処理である。第1ステップでは、下位ページをプログラムする。下位ページがデータ1のままである場合、メモリセル状態は状態Eに留まる。データが0にプログラムされる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態B’にプログラムされる。従って、図8Aは、状態Eから状態B’へのメモリセルのプログラミングを示している。図8Aに図示されている状態B’は中間状態Bであり、従って、検証点はVvb’として示され、Vvbより低い。
一実施形態では、ワードラインWLn上のメモリセルを状態Eから状態B’にプログラムした後、NANDストリング内の(ワードラインWLn+1上の)隣接メモリセルの、その下位ページに対してプログラムする。例えば、WL0に接続されたメモリセルの下位ページをプログラムした後、同一のNANDストリング上のメモリセルであってWL1に接続されたメモリセル(隣接メモリセル)の下位ページをプログラムすることができる。隣接メモリセルをプログラムした後、前にプログラムされたメモリセルが状態Eから状態B’に上昇した閾値電圧を有していた場合、フローティングゲート間結合の影響によって、前にプログラムされたメモリセルの見かけの閾値電圧が上昇する。これは、図8Bの閾値電圧分布550に示したように、状態B’の閾値電圧分布を拡大する影響を有する。閾値電圧分布のこの見かけの拡大は、上位ページをプログラムする際に修正される。
図8Cは、上位ページをプログラムする工程を示している。メモリセルが消去状態Eであって上位ページが1に留まる場合、メモリセルは状態Eに留まる。メモリセルが状態Eであり、その上位ページデータが0にプログラムされる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態Aになる。記憶素子が中間の閾値電圧分布550であって上位ページデータが1に留まる場合、記憶素子は最終状態Bにプログラムされる。メモリセルが中間の閾値電圧分布550であって上位ページデータがデータ0になる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態Cになる。隣接記憶素子の上位ページプログラミングだけが所定のメモリセルの見かけの閾値電圧に影響を与えるので、図8A〜Cで示した工程は、フローティングゲート間結合影響を低減する。
図8A〜Cは4つのデータ状態と2つのページデータに対する一例を提供するが、図8A〜Cによって開示された概念は、4つの状態より多い又は少ない状態、2つのページとは異なるページを備えた他の実装形態、および/または他のデータ符号化に適用することもできる。
図9は、図8A−Cのプログラミング方法を用いたメモリセルのプログラミングについての、順序の一実施形態を示すテーブルである。ワードラインWL0に接続されたメモリセルに関して、下位ページがページ0を形成し、上位ページがページ2を形成する。ワードラインWL0に接続されたメモリセルに関して、下位ページがページ0を形成し、上位ページがページ2を形成する。ワードラインWL2に接続されたメモリセルに関して、下位ページがページ3を形成し、上位ページがページ6を形成する。ワードラインWL3に接続されたメモリセルに関して、下位ページがページ5を形成し、上位ページがページ7を形成する。メモリセルは、ページ0からページ7へ、ページナンバーに従ってプログラムされる。他の実施形態では、プログラミングの他の順序も使用可能である。
各メモリセルがマルチステートデータの3ビットを記憶する場合における、メモリセルアレイについての閾値電圧分布(データ状態とも呼ばれる)の例を、図10に示す。この一方で、他の実施形態では、1メモリセルあたり3ビットよりも多い、或いは3ビットよりも少ないデータを記憶するとしてもよい(例えば、1メモリセルあたり4ビット以上のデータを記憶するなど)。
図10の例では、各々のメモリセルは3ビットのデータを保持する。よって、8つの有効なデータ状態S0−S7が存在する。一実施形態では、データ状態S0は0ボルトより低く、データ状態S1−S7は0ボルトより高い。他の実施形態として、8つのデータ状態の全てが0ボルトより高い場合や、その他のアレンジが実行可能である。一実施形態では、S0の閾値電圧分布がS1−S7の分布よりも広い。
一実施形態では、S0は消去されたメモリセルのためのものである。データはS0からS1−S7へプログラムされる。図10のS1−S7から分かるように、S1の高さが最も低く、S7の高さが最も高い(例:最も極端な高さ)。
各々のデータ状態は、メモリセルに記憶された3データビットの固有の値に対応する。一実施形態では、S0=111,S1=110,S2=101,S3=100,S4=011,S5=010,S6=001,S7=000,である。データ状態S0−S7の他のマッピングも使用することができる。一実施形態では、1つのメモリセルに記憶されている全てのビットのデータは、同一の論理ページに記憶される。他の実施形態では、1つのメモリセルに記憶されているビットのデータの各々は、異なる論理ページに対応する。従って、データの3ビットを記憶している1つのメモリセルは、第1ページ内のデータ、第2ページ内のデータ、第3ページ内のデータを含んでいる。いくつかの実施形態では、同一のワードラインに接続された全てのメモリセルが、同一の3ページのデータを記憶するとされる。いくつかの実施形態では、1つのワードラインに接続されたメモリセルが異なるセットのページに分類される(例えば、偶数および奇数ビットラインや、他の配列によって)。
いくつかの先行技術の装置では、メモリセルが消去されて状態S0となる。メモリセルは、状態S0から状態S1−S7の何れかへプログラムされてもよい。一実施形態では、フルシーケンスプログラミングとして知られている、消去された状態S0からプログラムされた状態S1−S7の何れかに直接にプログラムする方法を行うことができる。例えば、メモリセル群内の大多数のメモリセルが消去状態S0になるように、プログラム対象のメモリセル群が最初に消去されてもよい。あるメモリセルが状態S0から状態S1へプログラムされる間に、他のメモリセルが状態S0から状態S2へ、状態S0から状態S3へ、状態S0から状態S4へ、状態S0から状態S5へ、状態S0から状態S6へ、状態S0から状態S7へ、プログラムされる。フルシーケンスプログラミングは、図10の7つの曲線状の矢印を用いて図示されている。
図10は、目標検証レベルVv1、Vv2、 Vv3、 Vv4、 Vv5、 Vv6およびVv7の集合を示している。これらの目標検証レベルは、プログラミング処理の間に、比較レベルとして用いられる。例えば、メモリセルを状態1にプログラミングする場合には、システムは、メモリセルの閾値電圧がVv1に到達したかをチェックすることができる。あるメモリセルの閾値電圧がVv1に到達していない場合には、その閾値電圧がVv1以上になるまで、そのメモリセルに対してプログラミングを続行することができる。あるメモリセルの閾値電圧がVv1に到達した場合には、そのメモリセルに対するプログラミングを終了することができる。目標検証レベルVv2は、状態2にプログラムされるメモリセルに対して用いられる。目標検証レベルVv3は、状態3にプログラムされるメモリセルに対して用いられる。目標検証レベルVv4は、状態4にプログラムされるメモリセルに対して用いられる。目標検証レベルVv5は、状態5にプログラムされるメモリセルに対して用いられる。目標検証レベルVv6は、状態6にプログラムされるメモリセルに対して用いられる。目標検証レベルVv7は、状態7にプログラムされるメモリセルに対して用いられる。
図10は、読み出し比較レベルVr1、 Vr2、 Vr3、 Vr4、 Vr5、 Vr6およびVr7の集合も示している。これらの読み出し比較レベルは、読み出し処理の間に、比較レベルとして用いられる。メモリセルの制御ゲートに独立して印加される読み出し比較レベルVr1、 Vr2、 Vr3、 Vr4、 Vr5、 Vr6およびVr7に応じて、メモリセルがターンオンするかオフのままであるかをテストすることによって、システムは、メモリセルが何れの状態をデータのために記憶しているかを判断することができる。
図11A−11Iは、マルチステートデータをプログラムするための他の処理を示している。第1ステップの前に、状態S0の消去閾値分布となるように、メモリセルが消去される。図11A−11Iの処理では、各々のメモリセルが3ビットのデータを記憶しており、ある1つのメモリセルの各々のビットは異なるページに属すると仮定する。データの第1ビット(一番左のビット)は、第1ページと関連する。真ん中のビットは、第2ページと関連する。一番右のビットは、第3ページと関連する。一実施形態では、データとデータ状態との相関は、以下の通りである:S0=111,S1=110,S2=101,S3=100,S4=011,S5=010,S6=001,S7=000。しかしながら他の実施形態では、他のデータコード化配列も使用可能である。
(図11Aに示すように)第1ページにプログラムする際において、ビットをデータ“1”にする場合には、メモリセルは状態S0が維持される(閾値電圧分布602)。ビットをデータ“0”にする場合には、メモリセルにプログラムが行われ、状態S4となる(閾値電圧分布604)。隣接するメモリセルがプログラムされた後、隣接するフローティングゲート間の容量結合により、図11Bに示すように、状態S4が広くなることがある。状態S0も広くなることがあるが、S0とS1の間には十分な余裕があるため、その影響を無視できる。フローティングゲート間の結合現象についての詳細は、米国特許第5,867,429号および米国特許第6,657,891号に開示されており、両公報は全体を参照することにより本明細書に組み込まれる。
第2ページをプログラムする際において(図11Cを参照)、メモリセルが状態S0であり第2ページのビットをデータ“1”にする場合には、メモリセルは状態S0が維持される。いくつかの実施形態では、第2ページのプログラム処理は閾値電圧分布601を狭めて新たなS0とすることができる。メモリセルが状態S0であり第2ページにプログラムするデータが“0”である場合には、メモリセルは状態S0へ移される(閾値電圧分布606)。状態S2は、C*の検証ポイントを有する。メモリセルが状態S4でありメモリセルにプログラムするデータが “1”である場合には、メモリセルは状態S4が維持される。しかしながら図11Cに示すように、状態S4についてメモリセルを閾値電圧分布604から閾値電圧分布608へ移動することによって、状態S4は狭められる。閾値電圧分布608は、(閾値電圧分布604のE**と比較して)E*の検証ポイントを有する。メモリセルが状態S4であり第2ページにプログラムするデータが“0”である場合には、メモリセルの閾値電圧は、G*の検証ポイントを有する状態S6(閾値電圧分布610)へ移動される。
隣接するメモリセルがプログラムされた後、隣接するフローティングゲート間の結合により、図11Dの閾値電圧分布602、606,608,610に示すように、状態S0,S2,S4,S6が広くされる。
図11E,11F,11Gおよび11Hは、第3ページのプログラムを示している。プログラムを表すために1つの図を用いてもよいが、見やすくするために、処理を4つの図に示す。第2ページがプログラムされた後では、夫々のメモリセルは状態S0、S2,S4、S6の何れかとなる。図11Eは、第3ページにプログラムが行われる、状態S0のメモリセルを表している。図11Fは、第3ページにプログラムが行われる、状態S2のメモリセルを表している。図11Gは、第3ページにプログラムが行われる、状態S4のメモリセルを表している。図11Hは、第3ページにプログラムが行われる、状態S6のメモリセルを表している。図11Iは、メモリセル群に図11E、11F、11G、11Hの処理が(一斉に、または連続的に)実行された後における、閾値電圧分布を示している。
メモリセルが状態S0であり、第3ページのデータが“1”である場合には、メモリセルは状態S0が維持される。第3ページのデータが“0”である場合には、メモリセルの閾値電圧がBの検証ポイントを有する状態S1へ上昇される(図11E参照)。
メモリセルが状態S2であり、第3ページにプログラムされるデータが“1”である場合には、メモリセルは状態S2が維持される(図11F参照)。しかしながら幾つかのプログラムでは、閾値分布606を狭めて、Cの検証ポイントを有する新たな状態S2とすることができる。第3ページにプログラムされるデータが“0”である場合には、メモリセルはDの検証ポイントを有する状態S3にプログラムされる。
メモリセルが状態S4であり、第3ページにプログラムされるデータが“1”である場合には、メモリセルは状態S4が維持される(図11G参照)。しかしながら幾つかのプログラムでは、閾値分布608を狭めて、Eの検証ポイントを有する新たな状態S4とすることができる。メモリセルが状態S4であり、第3ページにプログラムされるデータが“0”である場合には、メモリセルの閾値電圧がFの検証ポイントを有する状態S5へ上昇される(図11G参照)。
メモリセルが状態S6であり、第3ページにプログラムされるデータが“1”である場合には、メモリセルは状態S6が維持される(図11H参照)。しかしながら幾つかのプログラムでは、閾値分布610を狭めて、Gの検証ポイントを有する新たな状態S6とすることができる。第3ページのデータが“0”である場合には、メモリセルの閾値電圧がHの検証ポイントを有する状態S7へプログラムされる(図11H参照)。第3ページのプログラムが終了すると、メモリセルは図11Iに示す8つの状態のうち、何れか1つの状態となる。
図12は、選択されたワードラインに接続されているメモリセルを動作させる処理を説明するフローチャートである。図12の処理の一の実装形態では、メモリセルの劣化を均一に維持するために、メモリセルには事前プログラムが行われる(ステップ650)。一実施形態では、メモリセルは、状態7や、ランダムパターンや、その他のパターンに事前プログラムされる。いくつかの実装形態では、事前プログラムを行う必要がない。
ステップ652では、プログラムに先立って、メモリセルが(ブロック単位又は他の単位で)消去される。一実施形態では、ソースとビットラインをフローティング状態にしておきながら、選択されたブロックのワードラインを接地し、十分な時間の間pウェルを消去電圧(例えば20ボルト)にまで上昇させることによってメモリセルが消去される。消去対象として選択されなかったブロックでは、ワードラインがフロートされる。容量結合のため、非選択ワードライン、ビットライン、選択ライン、及び、ソースもまた、消去電圧のかなりの割合の電圧まで上昇する。これにより、消去対象に選択されなかったブロックの消去が妨げられる。消去対象として選択されたブロック内では、選択されたメモリセルのトンネル酸化物層に強力な電場が加わり、主としてファウラ−ノルドハイムトンネル効果によってフローティングゲートの電子が基板側に放出されて、選択されたメモリセルのデータが消去される。電子がフローティングゲートからp−ウェル領域に移動するにつれて、選択されたセルの閾値電圧が低下する。消去は、メモリアレイ全体、別々のブロック、又はセルの他の単位で行うことができる。一実施形態では、メモリセルが消去された後、全ての消去済みのメモリセルが状態S0となる。消去処理の一実施態様は、幾つかの消去パルスをpウェルに印加するステップと、NANDストリングが適切に消去されたか否かを、消去パルスと消去パルスの間に検証するステップを備えている。
ステップ654では、消去されたメモリセルの消去閾値電圧の分布を狭めるために、ソフトプログラムが実行される。いくつかのメモリセルは、消去処理の結果として必要以上に低い消去状態にあってよい。ソフトプログラムにより、より深く消去されたメモリセルの閾値電圧ほど、消去閾値分布(例:状態EまたはS0)の方へ移動させることができる。
ステップ656では、ブロックのメモリセルがプログラムされる。プログラミングの後、ブロックのメモリセルは読み出しが可能とされる(ステップ658)。当技術分野で周知の、多くの異なる読み出し処理を、データの読み出しに用いることができる。一部の実施形態では、読み出し処理は、誤りを訂正するためにECCを用いるステップを備える。読み出されたデータは、読み出し処理が要求されたホストへ出力される。ECC処理は、ステートマシン、コントローラ、または他の装置で実施することができる。
図12は、読み出しなしで、または読み出しと独立して、消去−プログラムサイクルが何度も発生することができることを示している。図12の処理は、上述した様々な回路を使用するステートマシンの指示で、実行することができる。他の実施形態では、図12の処理は、上述した様々な回路を使用するコントローラの指示で、実行することができる。
図13は、共通ワードラインに接続されているメモリセルを1つ以上の目標状態(例:データ状態または閾値電圧範囲)にプログラムを実行する際のプロセスの一実施形態を表すフローチャートである。図13のプロセスは、図12のステップ656において1回または複数回実施されうる。例えば、図13の処理は、メモリセルを、状態EまたはS0から、直接に状態A−C(図6参照)またはS1−S7(図10参照)にプログラム(例:フルシーケンスプログラミング)するために使用することができる。あるいは、図13の処理は、図7の処理の段階の1つまたは各々を実行するため、図8A−Cの処理のステップの1つまたは各々を実行するため、図11A−Iの処理のステップの1つまたは各々を実行するため、に用いることができる。例えば図7の処理を実行する場合、一部のメモリセルを状態Eから状態Aへプログラミングするステップを備える第1段階を実行するために、図13の処理が用いられる。図13の処理は、一部のメモリセルを状態Eから状態Cへプログラミングしながら、他のメモリセルを状態Aから状態Bへプログラミングするステップを備える第2段階を実行するために、図13の処理を再度用いることができる。
通常、プログラム処理において制御ゲートに印加されるプログラム電圧は、連続するパルスとして印加される。プログラムパルスの合間には、検証処理を可能とするための複数の検証パルスが存在する。多くの実装形態では、連続するパルスの各々の大きさが、所定のステップサイズで増加する。図13のステップ670では、プログラム電圧(Vpgm)が初期値(例えば、12ボルトまでの電圧など、その他の適切な値)に初期化されると共に、ステートマシン222によって維持されるプログラムカウンタPCが1に初期化される。ステップ672において、プログラム信号Vpgmのプログラムパルスが、選択ワードライン(プログラム用に選択されたワードライン)に印加される。一実施形態では、プログラムされるメモリセルのグループは、全て同一のワードライン(選択されたワードライン)に接続されている。非選択ワードラインは、従来知られる昇圧方法を実行することで、1以上の昇圧電圧(例えば、9ボルトまでの電圧)を受ける。メモリセルがプログラムされる場合には、対応するビットラインが接地される。一方、メモリセルが現在の閾値電圧を維持する場合には、プログラムを禁止するために、対応するビットラインがVddに接続される。ステップ672では、選択ワードラインに接続されている全てのメモリセルが同時にプログラムされるように、選択ワードラインに接続されている全てのメモリセルにプログラムパルスが一斉に印加される。すなわち、全てのメモリセルは、同一時間(または重複した時間)にプログラムされる。このようにして、選択ワードラインに接続されている全てのメモリセルは、プログラム対象から除外されない限り、一斉に閾値電圧を変更することができる。
ステップ674では、適切な一組の目標レベルを使用して、選択されたメモリセルのデータ状態が検証される。ステップ674は、1つ以上の検証処理を実行するステップを備える。あるメモリセルの閾値電圧が適切な目標レベルに到達したことが検出された場合には、例えば、後続のプログラミングパルスの間そのビットライン電圧をVddへ上昇させることによって、そのメモリセルは更なるプログラミングから除外(locked out)される。
ステップ676において、全てのメモリセルが目標閾値電圧に到達したか否かが確認される。到達している場合には、全ての選択されたメモリセルがプログラムされていると共に目標状態が検証されているため、プログラム処理が完了し成功している。ステップ678において「合格」ステータスが通知される。ステップ676において、全てのメモリセルが目標閾値電圧に到達しているのではないと判断された場合、プログラム処理はステップ680へ進む。
ステップ680において、システムは、まだ各自の目標閾値電圧分布に到達していないメモリセルの数をカウントする。すなわち、システムは、検証処理に不合格となったセルの数をカウントする。このカウントするステップは、ステートマシン、コントローラ、または他のロジックによって行うことができる。一実施態様では、センスブロック300の各々(図3参照)は、各セルの状態(合格/不合格)を記憶することができる。これらの値は、デジタルカウンタを用いてカウントすることができる。前述した通り、複数のセンスブロックの多くは、共にワイヤードOR(配線論理和)接続された出力信号を有している。従って、1本のラインをチェックすることで、セルの大きなグループの何れのセルも検証に不合格になっていないことを判明させることができる。一緒にワイヤードOR接続される複数のラインを適切に編成することによって(例えば、2分木(a binary tree)のような構造)、不合格となったセルの数を測定するために二分探索方法(a binary search method)を用いることができる。このようにして、少数のセルが不合格になった場合には、カウントするステップは迅速に完了する。多数のセルが不合格になった場合には、カウントするステップには長時間かかる。更なる情報は、参照することにより本明細書に組み込まれる、米国特許公報2008/0126676号に記載されている。他の方法として、センスアンプの各々が、関連するセルが不合格になった場合にアナログ電圧または電流を出力することができる。そして、アナログ電圧または電流の加算回路を、不合格となったセルの数をカウントするために用いることができる。
一実施形態では、直近の検証ステップで不合格となり、現在プログラムされるメモリセルの総数を反映する、1つのカウント総計値が存在する。他の実施形態では、データ状態の各々について、別個のカウント値が保持される。
ステップ682では、ステップ680からのカウントが、予め定められた限界値以下であるか否かが判断される。一実施形態では、予め定められた限界値は、メモリセルのページに対する読み出し処理の間にECCによって訂正された、ビットの数である。不合格セルの数が予め定められた限界値以下である場合には、プログラミング処理を終了することができ、ステップ678で「合格」の状態が報知される。この状況では、読み出し処理(図12のステップ658参照)の間にECCを用いて、完全にプログラムされていない残りの僅かなメモリセルを訂正することができるように、十分な数のメモリセルが正常にプログラムされている。
他の実施形態では、予め定められた限界値は、将来のエラーを許容するために、読み出し処理の間にECCによって訂正できるビットの数よりも小さくできる。1ページの全てのメモリセルよりも少ないメモリセルにプログラミングする場合、または、1つのデータ状態(または全ての状態よりも少ない状態)に対してカウントを比較する場合、予め定められた限界値は、メモリセルのページに対する読み出し処理の間にECCによって訂正できるビットの数の一部(比例配分(pro-rata)または非比例配分(not pro-rata))にすることができる。一部の実施形態では、限界値は予め定められない。代わりに、ページに対して既にカウントされた誤りの数、プログラム−消去サイクルの実行数、温度、または他の基準に基づいて、限界値は変化する。
不合格のセルの数が予め定められた限界値よりも少なくない場合には、プログラミング処理はステップ684へ進み、プログラムカウンタPCがプログラム限度値(PL)に対してチェックされる。プログラム限度値の一例は20である。しかしながら、これ以外の値の使用も可能である。プログラムカウンタPCがプログラム限度値PLよりも小さくない場合には、プログラム処理は失敗したと見なされ、ステップ688において不合格の状態が報知される。プログラムカウンタPCがプログラム限度値PLよりも小さい場合には、処理はステップ686へ進む。ステップ686において、プログラムカウンタPCが1増加され、プログラム電圧Vpgmが次の大きさに増大される。例えば、次のパルスは、前のパルスよりも1ステップサイズ(例:0.1−0.4ボルトの1ステップサイズ)だけ大きくても良い。ステップ686の後、処理はステップ672へ戻り、別のプログラムパルスが選択されたワードラインに印加される。
図14は、図13の処理についてのプログラミングの間に、選択されたワードライン、および、選択されたワードラインに接続されたメモリセルの制御ゲートに印加される電圧波形の一部を示している。波形は、図13のステップ672〜686で構成されるループの3回の繰り返しにおける一部分として、ステップ672の間に印加されるプログラミングパルス(プログラム)、ステップ674の間に印加される検証パルス(検証)、および、ステップ680の間に不合格となったセルをカウントする期間(不合格セルのカウント)を示している。図14の例は、メモリセルごとに2ビットおよび4つのデータ状態を記憶する実施形態に対応する。従って、検証処理は、Vvaの検証パルス、Vvbの検証パルス、Vvcの検証パルスを備えている。1メモリセルあたり3ビットおよび8つのデータ状態を記憶する実施形態では、8つまでの検証パルスが存在しうる。幾つかの実施形態では、正確なデータ状態がテストされる必要のあるメモリセルが存在しないことが明らかな場合には、3つまたは8つよりも少ない検証パルスを、幾つかの繰り返し処理で用いることができることに留意されたい。また、データ状態の数が異なる実施形態では、検証パルスの異なる数を用いることができる。図14の実施形態では、検証処理(ステップ674)および不合格のセルをカウントするステップ(ステップ680)は、プログラミングパルスの間に実行される。従って、全てのメモリセルが検証されたこと、または、検証に不合格となったメモリセルの数が予め定められた限界値(または予め定められていない限界値)よりも少ないこと、が検出されるとすぐに、次のプログラミングパルスを印加することなく、プログラミング処理を終了することができる。
図15は、図13の処理についてのプログラミングの間に、選択されたワードライン、および、選択されたワードラインに接続されたメモリセルの制御ゲートに印加される、他の実施形態における電圧波形の一部を示している。波形は、図13のステップ672〜686で構成されるループの3回の繰り返しにおける一部分として、ステップ672の間に印加されるプログラミングパルス(プログラム)、ステップ674の間に印加される検証パルス(検証)、および、ステップ680の間に不合格となったセルをカウントする期間(不合格セルのカウント)を示している。図15の実施形態では、検証処理(ステップ674)は、プログラミングパルスの間に実行される。しかしながら、不合格のセルをカウントするステップは、次のプログラムパルスの期間に実行されるため、時間を節約できる。全てのメモリセルが検証されたこと、または、検証に不合格となったメモリセルの数が予め定められた限界値(または予め定められていない限界値)よりも少ないこと、が検出されると、プログラミング処理を終了することができる。しかしながら、次のプログラミングパルスは既に印加されている。上述したように、検証処理の結果は、ラッチ494に記憶することができる。これらのラッチは、次のプログラムパルスの間に読み出すことができる。
図16は、選択されたワードライン、および、選択されたワードラインに接続されたメモリセルの制御ゲートに印加される、他の実施形態における電圧波形の一部を示している。波形は、図13のステップ672〜686で構成されるループの3回の繰り返しにおける一部分として、ステップ672の間に印加されるプログラミングパルス(プログラム)、ステップ674の間に印加される検証パルス(検証)、および、ステップ680の間に不合格となったセルをカウントする期間(不合格セルのカウント)を示している。図16の実施形態は、1つの状態を検証するだけのプログラミング処理に関連する。例えば、4つ、8つ、またはそれ以上の状態にデータをプログラミングする場合、最も高い状態(例:状態Cまたは状態S7)にプログラムされるメモリセルを除いて、メモリセルが全て目標状態に到達した状態になることがある。その時点では、検証処理は、Vvc(図6参照)またはVv7(図10参照)で、検証を実行するだけでよい。従って、図16は、メモリセルが最も高いデータ状態(または最も高くない他の状態)であるか否かをテストするための検証パルスのみを示している。他の例では、図16の波形は、1つの状態のみをプログラミングするプログラミング処理に用いることができる。例えば、図7の処理の第1段階、図8Aの処理、図11Aの処理、または他の処理などに用いることができる。2つ以上の状態をプログラムするプログラミング処理のために、付加的な検証パルスを、必要に応じて波形に追加することができる。図16の実施形態では、検証処理(ステップ674)および不合格のセルをカウントするステップ(ステップ680)は、プログラミングパルスの間に実行される。
図17は、選択されたワードライン、および、選択されたワードラインに接続されたメモリセルの制御ゲートに印加される、他の実施形態における電圧波形の一部を示している。波形は、図13のステップ672〜686で構成されるループの3回の繰り返しにおける一部分として、ステップ672の間に印加されるプログラミングパルス(プログラム)、ステップ674の間に印加される検証パルス(検証)、および、ステップ680の間に不合格となったセルをカウントする期間(不合格セルのカウント)を示している。図16のように、図17の波形は、1つの状態を検証するだけのプログラミング処理に関連する。図17の実施形態では、検証処理(ステップ674)は、プログラミングパルスの間に実行される。しかしながら、不合格のセルをカウントするステップは、次のプログラミングパルスの期間に実行される。
プログラム電圧は、1本のワードラインに接続されている全てのメモリセルに印加されるため、ワードライン上の非選択のメモリセル(プログラムされないメモリセル)が、意図せずにプログラムされてしまうことがある。選択されたワードライン上の非選択のセルの、意図しないプログラミングは、「プログラム外乱」と呼ばれる。例えば、状態E内にあるメモリセルにおいて、その閾値電圧が状態Eの外側まで増加することがある。図18は、プログラミング処理中のメモリセルに対する、閾値電圧と、状態E、A、BおよびCのメモリセルの数との比較である。状態Eは、通常は状態Eの一部に含まれるとされるレベルを超えるようにプログラム外乱による影響を受けている、メモリセルの部分集合(網掛け領域702で示されている)を有するように図示されている。プログラム外乱は、メモリセルを最も高い(最も極端な高さの)状態(例:状態CまたはS7)にプログラミングする場合に、より問題である。メモリセルを最も高い状態にプログラムするために、通常、より多くの電圧パルスが必要となり、より多くのパルスが印加されるとプログラム外乱の可能性が高まるためである。さらに、電圧の大きさがパルスごとに増加するため、最も高いデータ状態はより高い電圧でプログラムされ、それによってもプログラム外乱の可能性が高まるためである。
図18は、最も高い状態Cにプログラムされている複数のメモリセルのうちの一部(網掛け領域704を参照)が、まだVvcに到達していない状態も示している。この場合、網掛け領域704で示されるメモリセルに対するプログラムを続行すると、網掛け領域702内のメモリセルのプログラム外乱を深刻化させるだけになることがある。従って、上述したプログラミング処理は、プログラム外乱を減少させる(またはより深刻化することを防止する)ために、全てのメモリセルが目標に到達(例:Vvcに到達)する前に、メモリセルの最も高い状態(および他のデータ状態)へのプログラミングを終了する。しかしながら、図13のステップ680および682について前述したように、十分にプログラムされていないメモリセルの数が、ECCによって訂正することができるセルの数よりも少ない場合には、プログラミングは終了されるだけである。
一実施形態では、検証比較値(例:Vvc)を下回るセルの数をカウントする代わりに、システムは、中間比較値を下回るセルの数をカウントし、そのカウントを、検証比較値を下回っているセルの数の推定値として用いることができる。例えば図19は、検証比較値Vvcおよび読み出し比較値Vrcを有する、データ状態Cについての閾値電圧分布を示している。図19は、中間比較電圧VvcLも示している。図13のステップ680の一実施形態では、状態Cにプログラムされることになっているが、閾値電圧がVvcよりも小さいメモリセルの数を推定するために、システムは、状態Cにプログラムされることになっているが、閾値電圧がVvcLよりも小さいメモリセルの数をカウントすることができる。
閾値電圧がVvcLよりも小さいメモリセルの数は、閾値電圧がVvcよりも小さいメモリセルの数に比例する。例えば、VvcLがVvcよりも0.4〜0.5ボルト低い場合には、閾値電圧がVvcLよりも小さいメモリセルの数は、閾値電圧がVvcよりも小さいメモリセルの数に対して、約10分の1(1/10)である。VvcLがVvcよりも0.8〜1.0ボルト低い場合には、閾値電圧がVvcLよりも小さいメモリセルの数は、閾値電圧がVvcよりも小さいメモリセルの数に対して、約100分の1(1/100)である。幾つかの実施形態では、比較値よりも低いとしてカウントされたメモリセルの数は、0.4〜0.5ボルトごとに10分の1の割合で減少することがある。図19には、閾値電圧がVvcより小さくVrcよりも大きいメモリセルを表す、網掛け領域712が表示されている。網掛け領域714は、閾値電圧がVrcより小さくVvcLよりも大きいメモリセルを表している。網掛け領域716は、閾値電圧がVvcLより小さいメモリセルを表している。従って、閾値電圧がVvcよりも小さいメモリセルの数は、網掛け領域712+714+716の合計である。以上のように、閾値電圧がVvcよりも小さいメモリセルの数は、閾値電圧がVvcLよりも小さいメモリセルの数よりも、非常に多い。幾つかの実施形態では、中間比較値VvcLよりも小さいメモリセルの数をカウントするステップは、Vvcよりも小さいメモリセルの数をカウントするステップよりも早く行うことができる。
図20は、図13の処理についてのプログラミングの間に、選択されたワードライン(および、選択されたワードラインに接続されたメモリセルの制御ゲート)に印加される電圧波形の一部を示している。これは、状態Cにプログラムされることになっているが、閾値電圧が中間比較電圧VvcLよりも小さいメモリセルの数をシステムがカウントするという、ステップ680の実施形態に対するものである。状態Cにプログラムされることになっているが、閾値電圧がVvcLよりも小さいメモリセルの数が、特定の限界値(図13のステップ682を参照)以下である場合には、プログラミング処理は終了する。VvcLがVvcよりも低いため、VvcLと比較される特定の限界値は、Vvcと比較する場合より低い。上述した2つの例では、VvcLについて用いられる限界値は、Vvcについて用いられる限界値よりも、10倍または100倍小さい。図20の波形は、図13のステップ672〜686で構成されるループの3回の繰り返しの一部である、ステップ672の間に印加されるプログラミングパルス(プログラム)、ステップ674の間に印加される複数の検証パルス(検証)、および、ステップ680の間に不合格となったセルをカウントする期間(不合格セルのカウント)を示している。この実施形態では、ステップ680(不合格セルのカウント)は、複数のメモリセルが少なくともVvcLの閾値電圧を有するか否かをテストするために、VvcLの電圧パルスを印加するステップを備える。閾値電圧をテストする、他の方法を用いることもできる。電圧パルスは完全な方形波で図示されているが、実際には、電圧パルス(および、この図や他の図に図示されている他のパルス)は、完全な方形波ではないことがあり、一部のケースでは方形波とは異なる波形であることがあることにも留意されたい。
図20の例は、1メモリセル当りに、2ビットおよび4つのデータ状態を記憶する実施形態に対応している。従って、検証処理は、Vvaの検証パルス、Vvbの検証パルス、Vvcの検証パルスを備えている。1メモリセルあたり3ビットおよび8つのデータ状態を記憶する実施形態では、8つまでの検証パルスが存在しうる。幾つかの実施形態では、正確なデータ状態がテストされる必要のあるメモリセルが存在しないことが明らかな場合には、3つまたは8つよりも少ない検証パルスを、幾つかの繰り返し処理で用いることができることに留意されたい。また、データ状態の数が異なる実施形態では、検証パルスの異なる数を用いることができる。図20の実施形態では、検証処理(ステップ674)および不合格のセルをカウントするステップ(ステップ680)は、プログラミングパルスの間に実行される。従って、全てのメモリセルが検証されたこと、または、検証に不合格となったメモリセルの数がある限界値よりも少ないこと、が検出されるとすぐに、次のプログラミングパルスを印加することなく、プログラミング処理を終了することができる。
図21は、図13のステップ680の別の実施形態に関して、選択されたワードライン(および、選択されたワードラインに接続されたメモリセルの制御ゲート)に印加される電圧波形の一部を示している。この実施形態では、システムは、状態Cにプログラムされることになっているが、閾値電圧がVvcLよりも小さいメモリセルの数をカウントすることができる。この波形は、図13のステップ672〜686で構成されるループの3回の繰り返しの一部である、ステップ672の間に印加されるプログラミングパルス(プログラム)、ステップ674の間に印加される複数の検証パルス(検証)、および、ステップ680の間に不合格となったセルをカウントする期間(不合格セルのカウント)を示している。この実施形態では、ステップ680(不合格セルのカウント)は、複数のメモリセルが少なくともVvcLの閾値電圧を有するか否かをテストするために、VvcLの電圧パルスを印加するステップを備える。閾値電圧をテストする他の方法を用いることもできる。図15の実施形態では、検証処理(ステップ674)は、プログラミングパルスの間に実行される。しかしながら、不合格のセルをカウントするステップ(ステップ680)は、次のプログラミングパルスの期間に実行される。上述したように、検証処理の結果は、ラッチ494に記憶することができる。これらのラッチは、次のプログラムパルスの間に読み出すことができる。
図22は、図13のステップ680の別の実施形態に関して、選択されたワードライン(および、選択されたワードラインに接続されたメモリセルの制御ゲート)に印加される電圧波形の一部を示している。この実施形態では、システムは、状態Cにプログラムされることになっているが、閾値電圧がVvcLよりも小さいメモリセルの数をカウントすることができる。この波形は、図13のステップ672〜686で構成されるループの3回の繰り返しの一部である、ステップ672の間に印加されるプログラミングパルス(プログラム)、ステップ674の間に印加される複数の検証パルス(検証)、および、ステップ680の間に不合格となったセルをカウントする期間(不合格セルのカウント)を示している。図16の実施形態は、1つの状態を検証するだけのプログラミング処理に関連する。例えば、4つ、8つ、またはそれ以上の状態にデータをプログラミングする場合、最も高い状態(例:状態Cまたは状態S7)にプログラムされるメモリセルを除いて、メモリセルが全て目標状態に到達した状態になることがある。その時点では、検証処理は、Vvc(図6参照)またはVv7(図10参照)で、検証を実行するだけでよい。従って、図22は、メモリセルが最も高いデータ状態(または最も高くない他の状態)であるか否かをテストするための検証パルスのみを示している。図22の波形は、1つの状態のみをプログラミングするプログラミング処理に用いることができる。例えば、図7の処理の第1段階、図8Aの処理、図11Aの処理、または他の処理などに用いることができる。2つ以上の状態をプログラムするプログラミング処理のために、付加的な検証パルスを、必要に応じて波形に追加することができる。図22の実施形態では、検証処理(ステップ674)および不合格のセルをカウントするステップ(ステップ680)は、プログラミングパルスの間に実行される。この実施形態では、図21の実施形態と同様に、ステップ680(不合格セルのカウント)は、複数のメモリセルが少なくともVvcLの閾値電圧を有するか否かをテストするために、VvcLの電圧パルスを印加するステップを備える。閾値電圧をテストする他の方法を用いることもできる。
図23は、図13のステップ680の別の実施形態に関して、選択されたワードライン(および、選択されたワードラインに接続されたメモリセルの制御ゲート)に印加される電圧波形の一部を示している。この実施形態では、システムは、状態Cにプログラムされることになっているが、閾値電圧がVvcLよりも小さいメモリセルの数をカウントすることができる。この波形は、図13のステップ672〜686で構成されるループの3回の繰り返しの一部である、ステップ672の間に印加されるプログラミングパルス(プログラム)、ステップ674の間に印加される複数の検証パルス(検証)、および、ステップ680の間に不合格となったセルをカウントする期間(不合格セルのカウント)を示している。図22と同様に、図23の波形は、1つの状態を検証するだけのプログラミング処理に関連する。図23の実施形態では、検証処理(ステップ674)は、プログラミングパルスの間に実行される。しかしながら、ステップ680の不合格のセルをカウントするステップ(不合格セルのカウント)は、次のプログラムパルスの期間に実行される。この実施形態では、図21の実施形態と同様にして、ステップ680(不合格セルのカウント)は、複数のメモリセルが少なくともVvcLの閾値電圧を有するか否かをテストするために、VvcLの電圧パルスを印加するステップを備える。一実施形態では、VvcLの電圧パルスが次のプログラムパルスの前に印加され、不合格のセルをカウントするステップが次のプログラムパルスと同時に実行される。閾値電圧をテストする、他の方法を用いることもできる。
図20―23は、状態Cにプログラムされるメモリセルに対してステップ680を実行する場合の、中間比較値レベル(例:VvcL)の使用について図示している。一実施形態では、各検証比較レベル(例:VvaおよびVvb)に到達していないメモリセルの数をカウントすることで、ステップ680を、状態C(最も高い状態、または最も極端な状態)以外の状態にプログラムされるメモリセルに実行することができる。従って、状態Aにプログラムされることが意図されている複数のメモリセルのうち、第1の所定数よりも少ないメモリセルがVvaに到達していない場合に、状態Aへプログラミングするステップを終了することができる。状態Aにプログラムされることが意図されている複数のメモリセルのうち、第2の所定数(第1の所定数と同一であってもよいし異なっていてもよい)よりも少ないメモリセルがVvbに到達していない場合に、状態Bへプログラミングするステップを終了することができる。状態Cにプログラムされることが意図されている複数のメモリセルのうち、第1の所定数よりも少ないメモリセルがVvcLに到達していない場合に、状態Cへプログラミングするステップを終了することができる。
他の実施形態では、ステップ680および682は、最も高い状態または最も極端な状態(例:状態Cまたは状態S7)にプログラムされるメモリセルのみに、実行されてもよい。
他の実施形態では、ステップ680は、各状態に対して中間比較値を用いることができる。例えば、ステップ680は、Vvaよりも低い状態Aにプログラムされるメモリセルに対して、中間比較値を使用することができる。またステップ680は、Vvbよりも低い状態Bにプログラムされるメモリセルに対して、中間比較値を使用することができる。
一部の実施形態では、例えば、プログラミングに対して閾値電圧が低下され、消去の間に閾値電圧が上昇される場合には、中間比較値は検証比較値よりも高くてもよい。
図20−23は、データの2ビットを記憶するメモリセルについての、データ中間比較レベル(例:VvcL)の使用について図示している。しかしながら、図20−23によって教唆される概念は、データの2ビットより多くを記憶するメモリセルに適用することができる。例えば、ステップ680で中間値よりも小さい閾値電圧を有するメモリセルをカウントするステップは、図10および11のプログラミング工程に用いることができる。データの3ビットを記憶するメモリセルを備える一例では、ステップ680は、S1−S6にプログラムされるメモリセルに対して、S1−S6に対する各検証レベル(例:Vv1,Vv2,Vv3,Vv4,Vv5,Vv6)よりも小さい閾値電圧を有するメモリセルをカウントすることができる。そしてステップ680は、状態S7にプログラムされるメモリセルについて、Vv7Lよりも小さいメモリセルをカウントする。ここでVv7Lは、Vv7よりも0.5ボルト(または他の値)だけ小さい。ある変形例では、Vv7Lは、Vv6、Vv5、またはそれらの値に近い他の値と等しくすることができる。
データの3ビットを記憶するメモリセルを備える他の例では、ステップ680は、S1−S5にプログラムされるメモリセルに対して、S1−S5に対する各検証レベル(例:Vv1,Vv2,Vv3,Vv4,及びVv5)よりも小さい閾値電圧を有するメモリセルをカウントすることができる。ステップ680は、状態S6にプログラムされるメモリセルについて、Vv6Lよりも小さいメモリセルをカウントする。そしてステップ680は、状態S7にプログラムされるメモリセルについて、Vv7Lよりも小さいメモリセルをカウントする。ここでVv6Lは、Vv6よりも0.5ボルト(または他の値)だけ小さい。
図24は、VvcLがVvbと等しくなる、または、Vv7LがVv6となる場合の他の実施形態を示している。また、不合格のセル(例:中間比較値よりも小さい閾値電圧を有するセル)の数が所定数よりも少ないことを検出した後に、所定数の1つ以上の追加のプログラミングパルスが印加される。次のプログラムパルスの間にステップ680を実行する実施形態(図21および23を参照)では、所定数の1つ以上の追加のプログラミングパルスは、次のプログラムパルスの後に印加される。図24の処理は、図13の処理と同様である(同一のステップには同様の符号が振られている)。しかしながら、ステップ680および682は、ステップ740−744に置換されている。ステップ740は、VvcL=Vvb又はVv7L=Vv6の点を除いて、ステップ680と同様である。ステップ742は、不合格のセルと比較される予め定められた限界値が異なることがある点を除いて、ステップ682と同様である。不合格のセルの数が予め定められた限界値よりも大きい場合には、処理はステップ684へ進む。不合格のセルの数が予め定められた限界値以下である場合には、処理はステップ744へ進む。ステップ744において、所定数のプログラミングパルスが、選択されたワードラインを介してメモリセルに印加される。これら所定数のプログラミングパルスの間に、検証処理(検証が成功したメモリセルの除外(lockout)とともに)が実行される。予め定められた限界値およびプグラミングパルスの所定数は、シミュレーションまたはデバイス特性評価に基づいて決定することができる。一実施形態では、限界値およびプログラミングパルスの数は、予め定められるというよりも、プログラム−消去サイクルの数、温度、または他の要因に基づいて動的に設定される。
図25は、所定数のプログラミングパルスを印加するステップ、および、状態Bにプログラムすることが意図された全てのメモリセルが状態Bに十分にプログラムされた後のプログラミングを終了するステップ、を備える他の実施形態を示している。状態Bにプログラムすることが意図された全てのメモリセルが十分に状態Bにプログラムされた後の時点において、状態Cにプログラムすることが意図されたわずかなメモリセルの閾値電圧がまだVvbに到達していない場合を想定する。「十分にプログラムされる」という文言は、十分な数のメモリセルが状態Bに到達し、プログラミング処理が成功したと見なせることを意味している。例えば、メモリセルのグループを状態Bにプログラムするステップが図13の処理に用いられる場合、検証に不合格となったメモリセルの数が予め定められた限界値(例:ECCで修復することができる所定の限界値)よりも少ないなど、十分な数のメモリセルの検証が成功した場合に、メモリセルのグループは十分にプログラムされる。このとき、状態Cにプログラムすることが意図されたメモリセルのうち、予め定められた限界値よりも少ない数のメモリセルが、テストをした場合には状態Bについての検証が不合格になる場合を想定する。従って、所定の追加の1つ以上のプログラミングパルスのみが印加され、プログラミングが終了する。(この実施形態、または図24の実施形態で)追加の1つ以上のプログラミングパルスを印加する場合に、追加の1つ以上のプログラミングパルス中またはパルス間で、不合格のセルをカウントするステップは行わないとすることができる。この実施形態を実現するために、状態AおよびBにプログラムされるメモリセルが図13の処理を実行することができる一方で、状態Cにプログラムされるメモリセルは図25の処理を実行することができる。
図25の処理は、以下の例外を除いて、図13の処理と同様である。ステップ676において、全てのメモリセルが適切に検証されていないと判断された場合には、ステップ780において、状態Bにプログラムすることが意図された全てのメモリセルが十分に状態Bにプログラムされたか否かが判断される。プログラムされていない場合には、処理はステップ684へ進む。状態Bにプログラムすることが意図された全てのメモリセルが十分に状態Bにプログラムされた場合には、ステップ782において、所定数のプログラミングパルスが選択されたワードラインを介してメモリセルに印加される。これら所定数のプログラミングパルスの間に、検証処理(検証が成功したメモリセルの除外(lockout)を含む)が実行される。ステップ782の間にメモリセルに印加されたプログラミングパルスの数は、実験、シミュレーション、および/またはデバイス特性評価に基づいて決定することができる。プログラミングパルス間の増加量は、ステップ782の間にメモリセルに印加されるプログラミングパルスの数に影響することがある。
図25の実施形態は、データの2ビットより多くを記憶するメモリセルに適用することができる。例えば、図25の処理は、他のプログラミング処理と同様に、図10および11Hに示されるようにプログラムされるメモリセルに用いることができる。一実施形態では、データの3ビットを記憶するメモリセルに図25の処理を用いる場合に、状態S6(2番目に高い状態)にプログラムすることが意図された全てのメモリセルが状態S6に十分にプログラムされたか否かを、ステップ780がテストする。
プログラミングプロセスを不用意に遅くすることなく、狭帯の閾値電圧分布を得る一つの方法は、2段階プログラミング処理を用いることである。第1段階、雑プログラミング段階は、狭帯の閾値電圧分布を得ることにはさほど注意を払わず、より早く閾値電圧を引き上げようとするものである。第2段階、高精度(ファイン)プログラミング段階は、目的の閾値電圧に到達するためにより遅い手法で閾値電圧を引き上げる。その結果、狭帯域氏閾値電圧分布が得られる。雑/高精度プログラミング技法の一例は、米国特許第6,643,188に開示されており、その全体は参照により本明細書に組み込まれる。
図26(A)‐(C)と図27(A)−(C)は、雑/高精度プログラミング技法の一例の詳細を示す図である。図26(A)と27(A)は、制御ゲートに印加されるプログラミングパルスVpgmを示している。図26(B)と27(B)は、プログラムされるメモリセルのビットライン電圧を示している。図26(C)と27(C)は、プログラムされるメモリセルの閾値電圧を示している。この例は、図中Vver1、Vver2で示される2つの検証レベルを使用している。最終的な目標レベルはVver1である。メモリセルの閾値電圧がVver1に到達すると、そのメモリセルに対応するビットラインに禁止電圧を印加することによって、そのメモリセルはそれ以上のプログラミングが禁止される。例えば、ビットライン電圧はVinhibitに引き上げられる(図26(B)、27(B)を参照)。一実施形態では、VinhibitはVddである。しかしながら、メモリセルが目標値Vver1に近づくと(しかし目標値よりは低い)、ビットラインに所定の大きさ、典型的には0.3Vから0.8Vのオーダーのバイアス電圧が印加され、その後のプログラミングパルスの間のそのメモリセルの閾値電圧シフトは遅くなる。次のいくつかのプログラミングパルスの間は閾値電圧シフトの速度が遅くなるので、最終的な閾値電圧分布は他の場合よりも狭くすることができる。この方法を実装する場合、Vver1よりも低い第2検証レベルが用いられる。この第2検証レベルは、Vver2として示されている。メモリセルの閾値電圧がVver2よりも大きく、しかしまだVver1より小さい場合、ビットラインバイアスVs(図27(B))を印加することによって、その後のプログラミングパルスにおけるメモリセルの閾値電圧シフトが小さくなる。この場合、各状態に対して2つの検証動作が必要であることに留意されたい。各状態に対するVver1に対応する検証処理が一つであり、各状態に対するVver2に対応する検証処理が一つである。このことは、メモリセルをプログラムするために必要とされる総時間を増加させる。しかしながら、このプロセスをスピードアップするために、より大きいΔVpgmステップサイズを用いることができる。
図26(A)、26(B)、26(C)は、一つのプログラミングパルスで閾値電圧がVver2とVver1を超えて移動するメモリセルの振る舞いを示している。例えば、図26(C)では、t2とt3の間でVver2とVver1を通過する閾値電圧が示されている。従って、t3以前は、メモリセルは雑段階にある。t3の後、メモリセルは禁止モードとなる。
図27(A)、27(B)、27(C)は、雑/高精度プログラミング段階の双方に入るメモリセルを示している。メモリセルの閾値電圧は、時刻t2と時刻t3の間にVver2を超える。t3以前はメモリセルは雑段階にある。t3の後、ビットライン電圧はVsに引き上げられる。従って、メモリセルは高精度段階に入る。t3とt4の間で、メモリセルの閾値電圧は、Vver1を超える。そのため、ビットライン電圧がVinhibitに引き上げられ、メモリセルはそれ以降のプログラミングが禁止される。
検証に不合格となったメモリセルの推定された数がある限界値よりも少ない場合に、プログラミングを終了することに関する上記の技術は、図26(A)−(C)および図27(A)−(C)に関して述べた雑/高精度プログラミング(または他のタイプの雑/高精度プログラミング)に用いることができる。検証に不合格となったメモリセルの数を推定するために用いられる中間値は、Vver2とすることができる。
一実施形態は、不揮発性記憶素子の第1集合を第1の目標状態へプログラムするために、不揮発性記憶素子の前記第1集合にプログラミング信号を印加するステップと、中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が、比較値よりも少ないか否かを判断するステップと、中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が前記比較値よりも少ないと判断することに応じて、前記不揮発性記憶素子の第1集合のプログラミングを終了するステップと、を備える。前記中間状態は、前記第1の目標状態とは異なる状態である。
一実施形態は、不揮発性記憶素子の第1集合と、不揮発性記憶素子の前記第1集合と通信する1つ以上の管理回路と、を備える。前記1つ以上の管理回路は、不揮発性記憶素子の前記第1集合を第1の目標状態にプログラムするために、不揮発性記憶素子の前記第1集合に対してプログラミング処理を実行する。前記プログラミング処理は、前記1つ以上の管理回路が不揮発性記憶素子の前記第1集合にプログラミング信号を印加するステップと、前記1つ以上の管理回路が不揮発性記憶素子の前記第1集合が前記第1の目標状態に到達したか否かを検証するステップを備えている。前記1つ以上の管理回路は、前記プログラミング処理の間に中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数を測定する。前記中間状態は前記第1の目標状態とは異なっている。前記1つ以上の管理回路は、前記中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が前記比較値よりも小さい場合に、不揮発性記憶素子の前記第1集合に対する前記プログラミング処理を終了する。
一実施形態は、複数の不揮発性記憶素子を異なる目標状態へ同時にプログラムするために、複数の不揮発性記憶素子にプログラミング信号を印加するステップを備える。複数の不揮発性記憶素子が各自の目標状態に到達したか否かを検証するステップを備える。最も高い目標状態に関して、中間状態にまだ到達していない第1の部分集合の不揮発性記憶素子をカウントするステップを備える。第1の部分集合の不揮発性記憶素子の所定数よりも少ない数が中間状態にまだ到達していないことをカウントすることに応じて、複数の不揮発性記憶素子のプログラミングを終了するステップを備える。異なる目標状態の他の目標状態向けである他の不揮発性記憶素子が、十分にプログラムされていると判断するステップを備える。最も高い目標状態に到達している不揮発性記憶素子は、中間状態を通過している。異なる目標状態は、最も低い目標状態および最も高い目標状態を含んでいる。プログラミング信号は、パルスの集合を含んでいる。複数の不揮発性記憶素子は、最も高い目標状態にプログラムされる不揮発性記憶素子の第1部分集合を含んでいる。検証するステップは、パルス間に1つ以上の検証処理を実行するステップを含んでいる。
一実施形態は、複数の不揮発性記憶素子を複数の異なる目標状態へプログラムするために、複数の不揮発性記憶素子にプログラミング信号を印加するステップを備える。プログラミング信号は、パルスの集合を含んでいる。複数の異なる目標状態は、第1の目標状態と第2の目標状態を含んでいる。複数の不揮発性記憶素子は、第1の目標状態にプログラムされる不揮発性記憶素子の第1部分集合と、第2の目標状態にプログラムされる不揮発性記憶素子の第2部分集合とを含んでいる。その方法は、不揮発性記憶素子の第2部分集合が、第2の目標状態に十分に到達したか否かを検証するステップを備える。その方法は、不揮発性記憶素子の第2部分集合が第2の目標状態に十分に到達したと判断することに応じて、1つ以上の所定数のパルスを不揮発性記憶素子の第1部分集合に印加するステップを備える。その方法は、1つ以上の所定数のパルスを不揮発性記憶素子の第1部分集合に印加するステップが行われることに応じて、そのステップの後に、不揮発性記憶素子の第1部分集合のプログラミングを終了するステップを備える。
上記本発明の詳細な説明は、説明のための例示にすぎない。上記本発明の詳細な説明は、詳細に開示した範囲に限定するものではない。本明細書が開示する技術は、様々に変形、変更し得る。上記説明した実施形態は、本発明の原理とその具体的な適用例をよく説明するために選ばれたものであり、当業者は、具体的な事例に則して本発明を様々に変更し得る。本発明の技術的範囲は、添付された特許請求の範囲によって定まるものである。

Claims (16)

  1. 不揮発性記憶装置をプログラミングする方法であって、
    不揮発性記憶素子の第1集合を第1の目標状態へプログラムするために、不揮発性記憶素子の前記第1集合にプログラミング信号を印加するステップと、
    中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が、比較値よりも少ないか否かを判断するステップと、
    ここで前記中間状態は、前記第1の目標状態とは異なる状態であり、
    中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が前記比較値よりも少ないと判断することに応じて、前記不揮発性記憶素子の第1集合のプログラミングを終了するステップと、
    を備えることを特徴とする方法。
  2. 不揮発性記憶素子の前記第1集合が前記第1の目標状態に到達したか否かを検証するステップをさらに備えることを特徴とする請求項1に記載の方法。
  3. 中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が、比較値よりも少ないか否かを判断する前記ステップは、
    前記中間状態にまだ到達していない前記第1集合の不揮発性記憶素子をカウントするステップと、
    カウントされた不揮発性記憶素子の数を予め定められた値と比較するステップと、
    を備えることを特徴とする請求項1または2に記載の方法。
  4. 前記第1の目標状態は、閾値電圧範囲であり、
    前記中間状態は、前記第1の目標状態よりも低い電圧レベルの閾値電圧レベルであることを特徴とする請求項1〜3の何れか1項に記載の方法。
  5. 不揮発性記憶素子の前記第1集合は、マルチステート・フラッシュメモリデバイスであることを特徴とする請求項1〜4の何れか1項に記載の方法。
  6. 不揮発性記憶素子の前記第1集合は、閾値電圧範囲の集合に関連しており、
    前記第1の目標状態は、前記閾値電圧範囲の集合内の最も高い閾値電圧であり、
    前記中間状態は、前記最も高い閾値電圧を下回る閾値電圧であることを特徴とする請求項1〜5の何れか1項に記載の方法。
  7. 前記プログラミング信号は、パルスの集合を含んでおり、
    前記検証するステップは、パルスの間に1つ以上の検証処理を実行するステップを備えており、
    前記判断するステップは、少なくとも前記パルスの幾つかの間に、前記中間状態にまだ到達していない前記第1集合の不揮発性記憶素子をカウントするステップを備えることを特徴とする請求項2〜6の何れか1項に記載の方法。
  8. プログラム信号を印加する前記ステップは、複数の不揮発性記憶素子を異なる目標状態に同時にプログラムし、
    前記異なる目標状態は、最も低い目標状態と最も高い目標状態を備えており、
    前記複数の不揮発性記憶素子は、不揮発性記憶素子の前記第1集合を含んでおり、
    前記第1の目標状態は、前記最も高い目標状態であることを特徴とする請求項1〜7の何れか1項に記載の方法。
  9. 前記プログラミング信号は、パルスの集合を含んでおり、
    前記検証するステップは、パルスの間に1つ以上の検証処理を実行するステップを備えており、
    前記判断するステップは、前記パルスの間に、前記中間状態にまだ到達していない前記第1集合の不揮発性記憶素子をカウントするステップを備えることを特徴とする請求項2〜6または8の何れか1項に記載の方法。
  10. 前記プログラミング信号は、パルスの集合を含んでおり、
    不揮発性記憶素子の前記第1集合は、データ状態の集合に関連しており、
    前記第1の目標状態は、前記データ状態の集合のうちの1つであり、
    前記中間状態は、前記データ状態の集合の異なるデータ状態のための検証値であり、
    前記方法は、前記中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が前記比較値よりも少ないと判断することに応じて、所定数の1つ以上のパルスを不揮発性記憶素子の前記第1集合に印加するステップをさらに備え、
    不揮発性記憶素子の前記第1集合をプログラミングする前記ステップは、前記所定数の1つ以上のパルスを不揮発性記憶素子の前記第1集合に印加するステップの後に終了することを特徴とする請求項1〜9の何れか1項に記載の方法。
  11. 不揮発性記憶素子の第1集合と、
    不揮発性記憶素子の前記第1集合と通信する1つ以上の管理回路と、を備え、
    前記1つ以上の管理回路は、不揮発性記憶素子の前記第1集合を第1の目標状態にプログラムするために、不揮発性記憶素子の前記第1集合に対してプログラミング処理を実行し、
    前記プログラミング処理は、前記1つ以上の管理回路が不揮発性記憶素子の前記第1集合にプログラミング信号を印加するステップと、前記1つ以上の管理回路が不揮発性記憶素子の前記第1集合が前記第1の目標状態に到達したか否かを検証するステップを備えており、
    前記1つ以上の管理回路は、前記プログラミング処理の間に中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数を測定し、
    前記中間状態は前記第1の目標状態とは異なっており、
    前記1つ以上の管理回路は、前記中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が前記比較値よりも小さい場合に、不揮発性記憶素子の前記第1集合に対する前記プログラミング処理を終了する、不揮発性記憶装置。
  12. 前記プログラミング信号はパルスの集合を含んでおり、
    前記1つ以上の管理回路はパルス間に前記検証するステップを実行することを特徴とする請求項11に記載の不揮発性記憶装置。
  13. 不揮発性記憶素子の前記第1集合は、マルチステート・フラッシュメモリデバイスであることを特徴とする請求項11または12に記載の不揮発性記憶装置。
  14. 不揮発性記憶素子の第2集合と、不揮発性記憶素子の第3集合とをさらに備え、
    前記1つ以上の管理回路は、不揮発性記憶素子の前記第2集合を第2の目標状態にプログラムし、
    前記1つ以上の管理回路は、不揮発性記憶素子の前記第3集合を第3の目標状態にプログラムし、
    前記第1の目標状態は、前記第2の目標状態および前記第3の目標状態と比較して最も極端な目標状態であることを特徴とする請求項11〜13の何れか1項に記載の不揮発性記憶装置。
  15. 不揮発性記憶素子の第2集合と、不揮発性記憶素子の第3集合とをさらに備え、
    前記1つ以上の管理回路は、不揮発性記憶素子の前記第1集合を前記第1の目標状態にプログラムするのと同時に、不揮発性記憶素子の前記第2集合を第2の目標状態にプログラムし、
    前記1つ以上の管理回路は、不揮発性記憶素子の前記第1集合を前記第1の目標状態にプログラムするのと同時に、不揮発性記憶素子の前記第3集合を第3の目標状態にプログラムすることを特徴とする請求項11〜13の何れか1項に記載の不揮発性記憶装置。
  16. 前記プログラミング信号はパルスの集合を含んでおり、
    不揮発性記憶素子の前記第1集合は、データ状態の集合に関連しており、
    前記第1の目標状態は、前記データ状態の集合のうちの1つであり、
    前記中間状態は、前記データ状態の集合の異なるデータ状態のための検証値であり、
    前記1つ以上の管理回路は、前記中間状態にまだ到達していない前記第1集合の不揮発性記憶素子の数が前記比較値よりも少ないと判断することに応じて、所定数の1つ以上のパルスを不揮発性記憶素子の前記第1集合に印加し、
    不揮発性記憶素子の前記第1集合をプログラミングする前記ステップは、前記所定数の1つ以上のパルスを不揮発性記憶素子の前記第1集合に印加するステップの後に終了することを特徴とする請求項11〜13の何れか1項に記載の不揮発性記憶装置。
JP2012517560A 2009-06-26 2010-06-08 不揮発性記憶装置のプログラミングの完了を検出する方法 Withdrawn JP2012531694A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/492,421 US8054691B2 (en) 2009-06-26 2009-06-26 Detecting the completion of programming for non-volatile storage
US12/492,421 2009-06-26
PCT/US2010/037846 WO2010151428A1 (en) 2009-06-26 2010-06-08 Detecting the completion of programming for non-volatile storage

Publications (1)

Publication Number Publication Date
JP2012531694A true JP2012531694A (ja) 2012-12-10

Family

ID=42668336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012517560A Withdrawn JP2012531694A (ja) 2009-06-26 2010-06-08 不揮発性記憶装置のプログラミングの完了を検出する方法

Country Status (7)

Country Link
US (4) US8054691B2 (ja)
EP (1) EP2446442A1 (ja)
JP (1) JP2012531694A (ja)
KR (1) KR101688603B1 (ja)
CN (1) CN102483953B (ja)
TW (1) TW201104681A (ja)
WO (1) WO2010151428A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012164409A (ja) * 2011-02-09 2012-08-30 Toshiba Corp 不揮発性半導体メモリ

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7916533B2 (en) * 2009-06-24 2011-03-29 Sandisk Corporation Forecasting program disturb in memory by detecting natural threshold voltage distribution
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage
US8174895B2 (en) 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
US8531888B2 (en) * 2010-07-07 2013-09-10 Marvell World Trade Ltd. Determining optimal reference voltages for progressive reads in flash memory systems
JP2012198973A (ja) * 2011-03-23 2012-10-18 Toshiba Corp 不揮発性半導体記憶装置
US8913437B2 (en) 2011-12-15 2014-12-16 Marvell World Trade Ltd. Inter-cell interference cancellation
US9299459B2 (en) 2012-09-07 2016-03-29 Macronix International Co., Ltd. Method and apparatus of measuring error correction data for memory
KR102066739B1 (ko) * 2013-05-15 2020-01-15 현대모비스 주식회사 메모리 덤프 파일 생성 및 복제 장치와 그 동작 방법
KR20150051056A (ko) 2013-11-01 2015-05-11 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
US9530523B2 (en) * 2014-06-25 2016-12-27 Intel Corporation Thermal disturb as heater in cross-point memory
US9627046B2 (en) * 2015-03-02 2017-04-18 Sandisk Technologies Llc Programming techniques for non-volatile memories with charge trapping layers
US11437094B2 (en) 2015-08-13 2022-09-06 Samsung Electronics Co., Ltd. Nonvolatile memory device, storage device, and operation method of storage device
KR102291456B1 (ko) * 2015-08-13 2021-08-23 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법 및 프로그램 검증 방법
CN106910520B (zh) * 2015-12-22 2021-05-28 北京忆芯科技有限公司 存储装置的写入方法、存储装置、存储控制器和存储系统
CN105654989B (zh) * 2016-03-07 2020-04-24 北京兆易创新科技股份有限公司 Nand flash闪存中状态码的验证方法及装置
US9595343B1 (en) 2016-06-05 2017-03-14 Apple Inc. Early prediction of failure in programming a nonvolatile memory
KR102452994B1 (ko) * 2016-09-06 2022-10-12 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
KR20180062158A (ko) 2016-11-30 2018-06-08 삼성전자주식회사 루프 상태 정보를 생성하는 불휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US10249382B2 (en) * 2017-08-22 2019-04-02 Sandisk Technologies Llc Determination of fast to program word lines in non-volatile memory
US10134474B1 (en) 2017-10-20 2018-11-20 Sandisk Technologies Llc Independent state completion for each plane during flash memory programming
US10410732B1 (en) * 2018-05-21 2019-09-10 Western Digital Technologies, Inc. Failure prediction by cell probing
KR20200091712A (ko) * 2019-01-23 2020-07-31 에스케이하이닉스 주식회사 반도체 메모리 장치, 컨트롤러 및 이들의 동작 방법
US11049578B1 (en) * 2020-02-19 2021-06-29 Sandisk Technologies Llc Non-volatile memory with program verify skip
CN111599400B (zh) * 2020-04-08 2021-09-07 长江存储科技有限责任公司 一种失败比特数统计方法及存储器设备
US11657883B2 (en) * 2021-07-22 2023-05-23 Western Digital Technologies, Inc. Isolating problematic memory planes to avoid neighbor plan disturb
WO2023024056A1 (en) * 2021-08-27 2023-03-02 Yangtze Memory Technologies Co., Ltd. Memory device and program operation thereof
US20230091724A1 (en) * 2021-09-17 2023-03-23 Samsung Electronics Co., Ltd. Storage device, non-volatile memory, and method of operating program of non-volatile memory

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6781895B1 (en) * 1991-12-19 2004-08-24 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device and memory system using the same
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
AU4996697A (en) 1996-12-20 1998-07-17 Intel Corporation Nonvolatile writeable memory with fast programming capability
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5867429A (en) 1997-11-19 1999-02-02 Sandisk Corporation High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates
JP2000173289A (ja) 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6418059B1 (en) * 2000-06-26 2002-07-09 Intel Corporation Method and apparatus for non-volatile memory bit sequence program controller
JP4323707B2 (ja) 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
EP1365419B1 (en) 2002-05-21 2008-12-31 STMicroelectronics S.r.l. Self-repair method for non volatile memory device with erasing/programming failure detection, and non volatile memory device therefor
US7196931B2 (en) 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
US7046568B2 (en) 2002-09-24 2006-05-16 Sandisk Corporation Memory sensing circuit and method for low voltage operation
US7327619B2 (en) 2002-09-24 2008-02-05 Sandisk Corporation Reference sense amplifier for non-volatile memory
US7136304B2 (en) * 2002-10-29 2006-11-14 Saifun Semiconductor Ltd Method, system and circuit for programming a non-volatile memory array
US6657891B1 (en) 2002-11-29 2003-12-02 Kabushiki Kaisha Toshiba Semiconductor memory device for storing multivalued data
US7073103B2 (en) 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US6859397B2 (en) 2003-03-05 2005-02-22 Sandisk Corporation Source side self boosting technique for non-volatile memory
JP4256198B2 (ja) 2003-04-22 2009-04-22 株式会社東芝 データ記憶システム
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US6917542B2 (en) * 2003-07-29 2005-07-12 Sandisk Corporation Detecting over programmed memory
US7046555B2 (en) * 2003-09-17 2006-05-16 Sandisk Corporation Methods for identifying non-volatile memory elements with poor subthreshold slope or weak transconductance
EP1538525A1 (en) 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
US6888758B1 (en) 2004-01-21 2005-05-03 Sandisk Corporation Programming non-volatile memory
US20050213393A1 (en) 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate
KR100572332B1 (ko) * 2004-10-26 2006-04-18 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 프로그램 방법
JP4261462B2 (ja) 2004-11-05 2009-04-30 株式会社東芝 不揮発性メモリシステム
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US20060140007A1 (en) 2004-12-29 2006-06-29 Raul-Adrian Cernea Non-volatile memory and method with shared processing for an aggregate of read/write circuits
US7339835B1 (en) * 2005-02-14 2008-03-04 National Semiconductor Corporation Non-volatile memory structure and erase method with floating gate voltage control
US7196928B2 (en) 2005-04-05 2007-03-27 Sandisk Corporation Compensating for coupling during read operations of non-volatile memory
US7295478B2 (en) 2005-05-12 2007-11-13 Sandisk Corporation Selective application of program inhibit schemes in non-volatile memory
EP1891644B1 (en) 2005-06-15 2009-02-11 Micron Technology, Inc. Selective slow programming convergence in a flash memory device
US7810017B2 (en) 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
US7779334B2 (en) 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US7304893B1 (en) 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7545681B2 (en) 2006-11-27 2009-06-09 Sandisk Corporation Segmented bitscan for verification of programming
US7440319B2 (en) 2006-11-27 2008-10-21 Sandisk Corporation Apparatus with segmented bitscan for verification of programming
US7619930B2 (en) 2007-02-20 2009-11-17 Sandisk Corporation Dynamic verify based on threshold voltage distribution
US7904793B2 (en) 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012164409A (ja) * 2011-02-09 2012-08-30 Toshiba Corp 不揮発性半導体メモリ

Also Published As

Publication number Publication date
US20120033494A1 (en) 2012-02-09
US8054691B2 (en) 2011-11-08
USRE45603E1 (en) 2015-07-07
US20100329004A1 (en) 2010-12-30
US8416626B2 (en) 2013-04-09
KR101688603B1 (ko) 2016-12-22
EP2446442A1 (en) 2012-05-02
CN102483953A (zh) 2012-05-30
CN102483953B (zh) 2015-06-24
US8605513B2 (en) 2013-12-10
WO2010151428A1 (en) 2010-12-29
TW201104681A (en) 2011-02-01
US20130016566A1 (en) 2013-01-17
KR20120039562A (ko) 2012-04-25

Similar Documents

Publication Publication Date Title
KR101688603B1 (ko) 비휘발성 저장 소자에 대한 프로그래밍 완료의 검출
TWI467585B (zh) 以高解析度可變初始程式化脈衝程式化非揮發性記憶體
EP2513906B1 (en) Programming non-volatile storage with fast bit detection and verify skip
KR101805229B1 (ko) 동기화된 커플링을 이용한 비휘발성 저장소자의 프로그래밍
JP5216856B2 (ja) プログラムの期間中での干渉の影響の低減
JP5113195B2 (ja) 閾値電圧区分に基づく動的検証
KR101736414B1 (ko) 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍
EP2718934B1 (en) Intelligent shifting of read pass voltages for non-volatile storage
EP2780912B1 (en) Non-volatile storage with data recovery
TWI480878B (zh) 使用字元線耦合之記憶體之多次程式化
TWI451422B (zh) 非揮發性記憶體中改良讀取操作之程式化不同大小邊限及在選擇狀態補償感測之方法和系統
JP4855474B2 (ja) スマート検証を利用してマルチステート不揮発性メモリをプログラミングする方法
WO2014137651A1 (en) Non-volatile storage with process that reduces read disturb on end wordlines
KR101428767B1 (ko) 비휘발성 저장소자의 판독 동작 동안에 파워 소모의 감소
WO2014039459A1 (en) Non-volatile storage with joint hard bit and soft bit reading
JP2013525938A (ja) 不揮発性記憶素子の検出におけるチャネル結合効果の低減
JP2008535145A (ja) マルチレベルセル型フラッシュメモリに高位レベル状態をより迅速にプログラミングする方法
JP2009528651A (ja) フローティングゲート結合に対する補償を伴う不揮発性記憶装置に対する読み出し動作
WO2014120943A1 (en) Adaptive initial program voltage for non-volatile memory
JP5067645B2 (ja) プログラミング検証のためのセグメント化されたビットスキャン
JP2010530596A (ja) 書き込みパルス持続時間のインテリジェント制御

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130903