JP5735543B2 - データ状態に固有の失敗の計数に基づく不揮発性メモリのデータ復旧 - Google Patents

データ状態に固有の失敗の計数に基づく不揮発性メモリのデータ復旧

Info

Publication number
JP5735543B2
JP5735543B2 JP2012551286A JP2012551286A JP5735543B2 JP 5735543 B2 JP5735543 B2 JP 5735543B2 JP 2012551286 A JP2012551286 A JP 2012551286A JP 2012551286 A JP2012551286 A JP 2012551286A JP 5735543 B2 JP5735543 B2 JP 5735543B2
Authority
JP
Japan
Prior art keywords
subset
data
state
storage elements
storage
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.)
Active
Application number
JP2012551286A
Other languages
English (en)
Other versions
JP2013518359A5 (ja
JP2013518359A (ja
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 JP2013518359A publication Critical patent/JP2013518359A/ja
Publication of JP2013518359A5 publication Critical patent/JP2013518359A5/ja
Application granted granted Critical
Publication of JP5735543B2 publication Critical patent/JP5735543B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • 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/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本技術は、不揮発性メモリに関する。
半導体メモリは、様々な電子デバイスで次第に広く使用されるようになってきている。たとえば、不揮発性半導体メモリは、携帯電話、ディジタルカメラ、携帯情報端末、モバイル・コンピューティング・デバイス、非モバイル・コンピューティング・デバイスなどのデバイスで使用される。電気的に消去可能なPROM(EEPROM)およびフラッシュメモリは、不揮発性半導体メモリの中で最もよく使用されるものである。フラッシュメモリ、およびある種のEEPROMに関しては、通常のフル装備のEEPROMとは異なり、全メモリアレイまたは一部分のメモリの内容を1ステップで消去することができる。
従来のEEPROMおよびフラッシュメモリは両方、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されたフローティングゲートを利用する。フローティングゲートは、ソース領域とドレイン領域の間に位置する。フローティングゲートの上に、そのフローティングゲートから絶縁されているコントロールゲートが設けられている。このように形成されているトランジスタの閾値電圧(Vth)は、フローティングゲート上に保持されている電荷量によって制御される。すなわち、そのソースとドレインの間の導通を可能にすべくトランジスタをオンにする前にコントロールゲートに印加すべき電圧の最小量は、そのフローティングゲート上の電荷量レベルにより制御される。
最も重要なのは、データを正確にプログラムし、メモリから読み戻せることである。しかし、様々な失敗パターンがあり、データの破損を招くことがある。
単一の行/列デコーダおよび読み出し/書き込み回路を用いた不揮発性メモリシステムのブロック図である。
図1のセンスブロック100の一実施形態を示すブロック図である。
図1のメモリアレイ155におけるNANDフラッシュメモリセルのブロックを示す。
閾値電圧分布および1パスプログラミングの一例を示す。
閾値電圧分布および2パスプログラミングの一例を示す。
閾値電圧分布および中間状態を用いる2パスプログラミングの一例を示す。 閾値電圧分布および中間状態を用いる2パスプログラミングの一例を示す。 閾値電圧分布および中間状態を用いる2パスプログラミングの一例を示す。
1組の記憶素子をワードラインを前後する順にプログラムするマルチパスプログラム動作を示す。
図2のセンスブロックで使用するプログラミング動作の様々な箇所におけるデータラッチの値の例を示す。 図2のセンスブロックで使用するプログラミング動作の様々な箇所におけるデータラッチの値の例を示す。 図2のセンスブロックで使用するプログラミング動作の様々な箇所におけるデータラッチの値の例を示す。 図2のセンスブロックで使用するプログラミング動作の様々な箇所におけるデータラッチの値の例を示す。 図2のセンスブロックで使用するプログラミング動作の様々な箇所におけるデータラッチの値の例を示す。 図2のセンスブロックで使用するプログラミング動作の様々な箇所におけるデータラッチの値の例を示す。
使用していない2つのデータラッチの組み合わせに加え、様々なデータ状態に対する、記憶素子の高速、低速、または禁止モードに応じた図8a〜図8fのデータラッチの値を示す。
図9のデータラッチの値の変形例であり、消去状態が、禁止されたA、BおよびC状態とは異なる組み合わせを有する例を示す。
図10のデータラッチの値とA状態読み出し動作の結果とに基づく論理演算の使用を示しており、失敗検出プロセスにおける消去状態エラーとプログラム中の高状態エラーを計数する。
図10のデータラッチの値とA状態読み出し動作の結果とに基づく論理演算の使用を示しており、失敗検出プロセスにおける消去状態エラーを計数する。
図10のデータラッチの値と、データ復旧プロセスにおけるCおよびB状態読み出し動作の結果とに基づいた論理演算の使用を示す。
プログラミング中およびプログラミング後の失敗検出および復旧動作の例を示す。
図12aのステップ1218のプログラミング後のエラー検出および復旧動作に関するさらなる詳細を示す。
図12bのステップ1244のデータ復旧動作に関するさらなる詳細を示す。
プログラミング動作における選択されたワードラインの波形例と以降のデータ復旧プロセスとを示す。
エラー検出およびデータ復旧を提供する方法および不揮発性記憶システムが提供される。
プログラミング動作中に、いくつかの要因でデータが破損することがある。例えば、製造工程の違いにより、ワードラインまたはブロックに物理的欠陥が存在することがある。場合によっては、ワードラインが基板に短絡し、そのためにブーストが影響を受け、プログラム外乱が発生する。他の潜在的課題は、ワードライン間での短絡、様々なワードライン幅、ブロックの過剰循環、温度関連の影響などを含む。さらに、データの破損が検出されず、手遅れになってデータを復旧できなくなることもある。例えば、書き込みデータに基づき、一部の記憶素子が消去状態のままであるべきなのに対し、他の記憶素子は目標データ状態にプログラムされる。このような場合には、他の記憶素子のプログラミング時に、消去状態の記憶素子が妨害されることがある。同じページデータまたは別のページデータをプログラムするなどの目的で、同じまたは異なるワードライン上で他の記憶素子に対するプログラミングが続行する場合に、消去状態より上の、目標データ状態にプログラムされる記憶素子が妨害されることもある。
データの破損を検出する1つの手法は、全てのデータがプログラムされた後にそれらのデータを読み戻し、元の書き込みデータと比較することである。しかしこの手法は、相当の時間損失を課すことに加え、予備データラッチなど追加記憶リソースを必要とする。1つの対応策として、既存のデータラッチを活用して、消去状態などのエラーが発生しやすい特定のデータ状態に対して破損データを検出する手法が考えられる。この手法では、1組の記憶素子のプログラミングが完了したときに、消去状態を他の状態と区別できるように、データラッチが構成される。プログラミング動作が正常に完了した後に1回の読み出し動作を実行し、データラッチにアクセスし、論理演算を実行することにより、破損した記憶素子を特定することができる。破損した記憶素子の数がECC回収可能エラーの数などの閾値を上回る場合には、復旧動作を実行することができる。読み出し結果とデータラッチとに基づき、復旧動作によって追加読み出し動作および論理演算が実行され、書き込みデータを完全に復旧させる。
次に、より高速のプログラミングおよび電力消費の節減を可能にするために使用されうるメモリシステムの一例を説明する。図1は、1つの行/列デコーダと読み出し/書き込み回路とを利用する不揮発性記憶システムのブロック図である。図は、一実施例について、1ページの記憶素子を並列に読み出し又はプログラムするための読み出し/書き込み回路を有するメモリデバイス199を示す。メモリデバイス199は、1つ以上のメモリダイ198を含んでいてもよい。メモリダイ198は、記憶素子155の2次元メモリアレイと、制御回路110、及び、読み出し/書き込み回路165を含む。メモリアレイ155については図4と関連付けてさらに説明する。
実施形態では、記憶素子のアレイは、3次元であってもよい。メモリアレイ155は、行デコーダ130を介したワードラインと、列デコーダ160を介したビットラインによってアドレス指定可能である。読み出し/書き込み回路165は、複数のセンスブロック100を含んでおり、1ページの記憶素子を並列に読み出し又はプログラムすることを許容する。典型的には、コントローラ150は、1つ以上のメモリダイ198のような同じメモリデバイス199(例えば、取り外し可能なストレージカード)内に含まれる。命令及びデータは、ライン120を介して、ホストとコントローラ150の間で転送され、また、ライン118を介して、コントローラと1つ以上のメモリダイ198の間で転送される。
制御回路110は、読み出し/書き込み回路165と協調して、メモリアレイ155に対してメモリ動作を実行する。制御回路110は、ステートマシン112、オンチップアドレスデコーダ114、及び電力制御モジュール116を含む。ステートマシン112は、メモリ動作のチップレベルの制御を提供する。オンチップアドレスデコーダ114は、ホスト又はメモリコントローラによって用いられるアドレスと、デコーダ130,160によって用いられるハードウェアアドレスとの間にアドレスインタフェースを提供する。電力制御モジュール116は、メモリ動作中のワードライン及びビットラインに供給される電力及び電圧を制御する。
いくつかの実施態様では、図1の構成要素の一部が結合されうる。様々な設計で、メモリアレイ155以外の構成要素のうちの1つまたは複数(単独あるいは組合せ)が、管理または制御回路として考えられうる。たとえば、1つまたは複数の制御回路は、制御回路110、ステートマシン112、デコーダ114/160、電力制御116、センスブロック100(図2のプロセッサ192を含む)、読み出し/書き込み回路165、コントローラ150などのいずれか1つまたは組合せを含みうる。センスブロック100は図2と関連付けてさらに説明する。
別の実施形態において、不揮発性メモリシステムは、2つの行/列デコーダおよび読み出し/書き込み回路が使用される。様々な周辺回路によるメモリアレイ155へのアクセスは、アレイの反対側で対称的に実施され、したがって、アクセス線の密度および各辺の回路は半減される。そのため、行デコーダは2つの行デコーダに分割され、列デコーダは2つの列デコーダに分割される。同様に、読み出し/書き込み回路は、最下部からビットラインに接続する読み出し/書き込み回路と、アレイ155の最上部からビットラインに接続する読み出し/書き込み回路とに分割される。このようにして、読み出し/書き込みモジュールの密度は本質的に半分減少する。
図2は、センスブロックの一実施形態を示すブロック図である。個々のセンスブロック100は、センスモジュール180またはセンスアンプと呼ばれる1つ以上のコア部分と、管理回路190と呼ばれる共通部分とに区分けされる。一実施形態では、ビットラインごとに別々のセンスモジュール180が備えられており、1組の複数の、例えば4つまたは8つの、センスモジュール180につき1つの共通管理回路190が備えられている。グループ内のセンスモジュールの各々は、データバス172を介して、関連付けられた管理回路と通信する。そのため、1組の記憶素子のセンスモジュールと通信する1つ以上の管理回路が存在する。
センスモジュール180は、接続されたビットライン内の伝導電流が予め決められた閾値レベルより高いか低いかを判断することによって検知を実行するセンス回路170を備えている。センスモジュール180は、さらに、接続されたビットラインに電圧状態を設定するために用いられるビットラインラッチ182を含む。例えば、ビットラインラッチ182内で予め決められた状態がラッチされることによって、接続されたビットラインを、プログラム禁止を指定する状態(例えば、1.5〜3V)に引き上げる(プル)する。例えば、flag=0がプログラミングを禁止できるのに対し、flag=1はプログラミングを禁止しない。
管理回路190は、プロセッサ192と、データラッチ194〜197の4組の例と、データラッチの組194〜197とデータバス120との間を連結するI/Oインタフェース196とを備えている。センスモジュールごとに1組のデータラッチを設けることができ、QDL、UDLおよびLDLによって特定される3つのデータラッチを組ごとに設けることができる。データラッチの使用については、特に図8a〜図8f、図9、図10および図11a〜図11cを参照しながら、以下でさらに詳述する。プロセッサ192は、検知された記憶素子に記憶されているデータを判断し、判断されたデータをデータラッチの組内に記憶するなどの目的で計算を実行する。データラッチ194〜197の各組は、読み出し動作時にプロセッサ192によって判断されたデータビット群を記憶する目的、および、プログラム動作時にデータバス120から取り込んだデータビット群を記憶する目的で使用され、取り込まれるデータビット群は、メモリ内にプログラムされる予定の書き込みデータを表す。I/Oインタフェース196は、データラッチ194〜197とデータバス120との間のインタフェースを提供する。
読み出し中には、システムの動作は、ステートマシン112の制御下にあり、ステートマシン112は、アドレス指定された記憶素子への種々のコントロールゲート電圧の供給を制御する。メモリに用意された様々なメモリ状態に対応する様々な既定コントロールゲート電圧のステップを進む毎に、センスモジュール180は、これらの電圧の1つに遷移し、バス172を介して、センスモジュール180からプロセッサ192に対応する出力が提供される。その時点で、プロセッサ192は、センスモジュールの遷移イベントと、ステートマシンから入力ライン193を介して加えられたコントロールゲート電圧についての情報によって、結果としてのメモリ状態を特定する。それから、プロセッサは、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ194〜197に格納する。管理回路190の別の実施形態では、ビットラインラッチ182は、センスモジュール180の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。
いくつかの実装形態では、複数のプロセッサ192を含むことができる。一実施形態では、各プロセッサ192は、出力ライン(図示省略)を含み、各出力ラインは、ワイヤードOR(配線論理和)接続される。いくつかの実施形態では、出力ラインは、ワイヤードORラインに接続される前段階で反転される。この構成は、ワイヤードORを受け取るステートマシンが、プログラムされる全てのビットがいつ所望のレベルに到達したかを判断できるので、プログラム処理の完了時点を判定するプログラム検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理「0」がワイヤードORラインに送られる(又はデータ「1」が反転される)。全てのビットがデータ「0」を出力すると(又はデータ「1」が反転されると)、ステートマシンは、プログラミング処理の完了を知る。各プロセッサが8個のセンスモジュールと通信する実施形態では、ステートマシンは、ワイヤードORラインを8回読み出す必要があり、あるいは、協働するビットラインの結果を蓄積するための論理をプロセッサ192に追加し、ステートマシンがワイヤードORラインを一度だけ読み出せば良いようにする。同様に、論理レベルを正しく選択することによって、第1ビットの状態が変化し、それに従ってアルゴリズムが変化する際に、グローバルステートマシーンは、検出し得る。
プログラム動作又は検証動作の間、プログラムされるべきデータ(書き込みデータ)は、データバス120から複数のデータラッチ194〜197内に記憶される。ステートマシン制御下のプログラム処理は、アドレス指定される記憶素子のコントロールゲートに加えられる、一連のプログラミング電圧パルスを伴う。各プログラミングパルスに続いて、復唱(検証)によって、記憶素子が所望の状態にプログラムされたかどうかを判定する。いくつかの場合では、プロセッサ192は、所望のメモリ状態に対する復唱メモリ状態を監視する。その2つが一致したとき、プロセッサ192は、プログラム禁止を指定する状態にビットラインを引き上げるように、ビットラインラッチ182を設定する。これにより、たとえプログラミングパルスがそのコントロールゲートに影響しても、ビットラインに接続した記憶素子がさらにプログラミングされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ182をロードし、センス回路が検証処理中にそれに禁止値を設定する。
データラッチ194〜197の各組は、各センスモジュールのデータラッチのスタックとして実装されてもよい。一実施形態では、センスモジュール180毎に3個データラッチが存在する。いくつかの実装形態では、データラッチは、シフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス120用にシリアルデータに変換したり、その逆を行ったりする。m個の記憶素子の読み出し/書き込みブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によって、データのブロックを入力または出力できるようにする。特に、読み出し/書き込みモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するように読み出し/書き込みモジュールのバンクを構成し、一群のデータラッチがあたかも読み出し/書き込みブロック全体のシフトレジスタの一部であるかのようにしてもよい。
データラッチは、関連付けられた記憶素子がプログラミング動作中に特定の管理点に達した時期を特定する。例えば、ラッチは、記憶素子のVthが、高速プログラミングモードで下位検証レベル(例えば、図5におけるVvaLもしくはVvbL)未満であるか、低速プログラミングモードで下位検証レベル(例えば、VvaLもしくはVvbL)超であるが上位検証レベルもしくは目標検証レベル(例えば、Vva、VvbもしくはVvc)未満であるか、または禁止モードで上位検証レベルもしくは目標検証レベル超であることを識別してもよい。データラッチは、記憶素子がページデータからの1つ以上のビットを現在記憶しているかどうかを示す。例えば、LDLラッチは、下位ページのデータを記憶する目的で使用することができる。LDLラッチは、関連付けられた記憶素子に下位ページビットが記憶されるときに、(例えば0から1へと)反転される。UDLラッチは、例えば、上位ページのデータを記憶する目的で使用することができる。UDLラッチは、関連付けられた記憶素子に上位ページビットが記憶されるときに反転される。反転は、関連付けられた記憶素子がプログラミングを完了するとき、例えば、記憶素子のVthがVva、VvbまたはVvcなどの目標検証レベルを超えるときに行われる。QDLラッチは、関連付けられた記憶素子が低速プログラミングモードにあるときに反転され得る。
一部の検出方式では、記憶素子のいずれかが一旦ロックアウトされると、その記憶素子を対象とする全てのデータラッチ(QDL、LDL、UDL)が「1」に設定される。ただし、これだと、様々なデータ状態でロックアウトされた記憶素子を区別することができない。例えば、E状態記憶素子を、A、BまたはC状態記憶素子と区別することができない。以下でさらに詳述するとおり、データラッチは、この課題を克服し、それによって効率的なエラー検出および復旧動作を実施するための最適な方法で使用することができる。
図3は、図1のメモリアレイ155におけるNANDフラッシュメモリセルのブロックを示す。メモリアレイは多数のブロックを含むことができる。各ブロック例300、310は、多数のNANDストリングと、ブロックで共有されるBL0、BL1、...といったそれぞれのビットラインとを含む。各NANDストリングは、一端でドレイン選択ゲート(SGD)に接続されており、ドレイン選択ゲートのコントロールゲートは、共通のSGDラインを介して接続されている。NANDストリングは、他端でソース選択ゲートに接続されており、ひいては、共通ソースライン320に接続されている。ソース選択ゲートとドレイン選択ゲートとの間には、WL0〜WL63など、64本のワードラインが延在している。
NANDフラッシュメモリに加え、他のタイプの不揮発性メモリを使用することもできる。たとえば、フラッシュEEPROMシステムで有用な別のタイプのメモリセルは、導電性のフローティングゲートの代わりに非導電性の誘電素材を利用して不揮発的に電荷を蓄積する。導電性のコントロールゲートと、メモリ・セル・チャネルの上方にある半導体基板の表面との間に、酸化ケイ素、窒化ケイ素および酸化ケイ素(「ONO」)で形成された3重の層誘電体が挟まれている。このセルは、セルチャネルから窒化物に電子を注入することによってプログラムされ、注入された電子は、限られた領域内で捕捉され、蓄積される。この蓄積された電荷はその後、検出可能な方法でセルのチャネルの一部分の閾値電圧を変える。このセルは、窒化物にホットホールを注入することによって消去される。ドープ処理したポリシリコンゲートが別々のセレクトトランジスタを形成するためにメモリ・セル・チャネルの一部分を超えて延伸するスプリットゲート構成で同様のセルを設けることができる。
別のアプローチでは、NROMセルが使用される。たとえば、各NROMセルに2ビットが蓄積され、そこでONO誘電体層がソース拡散領域とドレイン拡散領域との間のチャネル全体に延伸する。一方のデータビットの電荷は、ドレインに隣接する誘電体層に限局され、もう一方のデータビットの電荷はソースに隣接する誘電体層に限局される。誘電体内で空間的に分離された電荷蓄積領域のバイナリ状態を別々に読み込むことにより、マルチステートのデータ記憶が得られる。他のタイプの不揮発性メモリも公知である。
図4は、閾値電圧区分と、ワンパスプログラミングの一例を示す。記憶素子アレイの例示の閾値電圧区分は、各記憶素子が2ビットのデータを記憶するケースに対して提供されている。第1の閾値電圧区分400は、消去された(E状態)記憶素子に対して提供される。3つの閾値電圧区分402、404及び406は、プログラミングされた状態A,B及びCで、それぞれ示されている。一実施形態では、E状態区分の閾値電圧は負であり、A状態、B状態及びC状態区分の閾値電圧は正である。
特定の状態にある記憶素子の個数は、閾値電圧が、対応する検証レベルを超えると判断される記憶素子の計数を維持することによって判断される。
それぞれの閾値電圧範囲は、データビットのセットの所定値に対応する。記憶素子にプログラミングされたデータと記憶素子の閾値電圧レベルの特定の関係は、記憶素子のために採用されるデータ符号化方式に依存する。一実施形態では、フローティングゲートの閾値電圧が誤ってその近傍の物理状態にシフトした場合に1ビットだけが影響を受けるように、データ値がグレーコード割り当てを使用して閾値電圧範囲に割り当てられる。一例は、閾値電圧範囲E(状態E)に「11」を、閾値電圧範囲A(状態A)に「10」を、閾値電圧範囲B(状態B)に「00」を、及び閾値電圧範囲C(状態C)に「01」を割り当てる。しかしながら、他の実施形態では、グレーコードは使用されない。4つの状態が示されているが、4つの状態より多い又は少ない構造を含む他のマルチステート構造に使用することもできる。
読み出し参照電圧Vra、Vrb、及び、Vrcは、記憶素子からデータを読み出すために提供される。既定の記憶素子の閾値電圧がVra、Vrb及びVrcを上回っているのか、あるいは下回っているのかをテストすることによって、システムは、記憶素子が存在する状態、即ち、プログラム状態を判断することができる。
さらに、3つの検証参照電圧Vva、Vvb、及び、Vvcが提供される。記憶素子を状態Aにプログラミングするとき、システムは、それらの記憶素子がVva以上の閾値電圧を有するかどうかをテストする。記憶素子を状態Bにプログラミングするとき、システムは、記憶素子がVvb以上の閾値電圧を有するかどうかをテストする。記憶素子を状態Cにプログラミングするとき、システムは、記憶素子がVvc以上の閾値電圧を有するかどうかを判断する。
フルシーケンスプログラミングとして知られている一実施形態においては、記憶素子は、E状態からプログラミングされた状態A、B又はCの何れかに直接的にプログラミングされる。例えば、まず、プログラミングされる記憶素子の集合中の全ての記憶素子が消去状態Eとなるように、集合が消去される場合がある。次に、図13で示されるような一連のプログラムパルスが、記憶素子を状態A、B又はCに直接的にプログラミングするために使用される。いくつかの記憶素子は状態Eから状態Aにプログラムされ、他の記憶素子は状態Eから状態Bに、及び/又は、状態Eから状態Cにプログラミングされる。
さらに、1つ以上のデータ状態に対してオフセット検証レベルおよび目標検証レベルが使用される。例えば、VvaLおよびVvaは、それぞれ、A状態のオフセット検証レベルおよび目標検証レベルであり、VvbLおよびVvbは、それぞれ、B状態のオフセット検証レベルおよび目標検証レベルである。オフセット検証レベルは、最終検証レベルまたは目標検証レベルからオフセットされる。オフセット検証レベルは、プログラミング方式に依存する目標検証レベルよりも高い可能性がある。検証レベルは、電圧または電流を表すことができる。
プログラミング中、(目標状態としてA状態にプログラムされることになっている)A状態記憶素子のVthがVvaL以下の場合には、記憶素子が高速プログラミングモードでプログラムされる。これは、ビットラインを接地することによって達成されてもよい。Vva≧Vth>VvaLの場合には、関連付けられたビットライン電圧を接地レベルと完全禁止レベルとの間のレベルに引き上げるなどの方法により、記憶素子が低速プログラミングモードでプログラムされる。これによって精度が向上するため、閾値電圧の大幅増を回避することによってVt分布が狭まる。Vth>Vvaの場合には、記憶素子がこれ以上プログラミングされないようにロックアウトされる。同様に、(B状態にプログラムされることになっている)B状態記憶素子が、高速および低速プログラミングモードを有することができる。なお、1つの手法では、C状態など最高状態の場合には、他の状態よりもメリットが少ないことから、低速プログラミングモードは使用されない。
消去状態と7つのプログラム状態A〜Gとを有する8状態プログラミングの一例では、例えば、中間状態A〜Fに対して高速および低速プログラミングモードを使用できる可能性がある。
図5は、2つの異なるページ(下位ページと上位ページ)に対してデータを記憶するマルチステート記憶素子にプログラムする2パス技術の一例を示している。4つの状態は、図4から閾値電圧区分400,402,404及び406を繰り返すことによって示されている。これらの状態(これらの状態が示すビット)は、状態E(11)、状態A(01)、状態B(00)及び状態C(10)である。状態Eの場合、両方のページが「1」を記憶する。状態Aの場合、下位ページが「1」を記憶し、上位ページが「0」を記憶する。状態Bの場合、両方のページが「0」を記憶する。状態Cの場合、下位ページが「0」を記憶し、上位ページが「1」を記憶する。なお、各状態に対して特定のビットパターンが割り当てられているが、異なるビットパターンが割り当てられてもよい。
第1プログラミングパスでは、記憶素子のVthは下位論理ページにプログラムされるビットに従って設定される。そのビットが論理「1」であれば、以前に消去された結果として適切な状態にあるのでVthは変更されない。しかし、プログラムされるビットが論理「1」であれば、矢印500で示したように、Vthは状態Aになるように増大される。これによって、第1プログラミングパスを終了する。
第2プログラミングパスでは、記憶素子のVthが、上位論理ページ内にプログラミング中のビットに従って設定される。下位ページ、上位ページが1、1である場合には、記憶素子が状態Eにあることから、プログラミングは行われない。下位ページ、上位ページがである場合には、記憶素子が状態Aにあることから、プログラミングは行われない。下位ページ、上位ページが0、0である場合には、矢印510によって表される状態Aから状態Bへの移行が行われる。下位ページ、上位ページがである場合には、矢印520によって表される状態Eから状態Cへの移行が行われる。
この例では、オフセット検証レベルVvaLおよびVvbLも、A状態およびB状態に対してそれぞれ使用することができる。
一実施形態では、上位及び下位ページデータの両方が利用可能である場合に、十分なデータを書き込まれた場合、システムは全シーケンス書き込みを実行するように設定される。十分なデータが利用可能でない場合、プログラミング動作は受け取ったデータを用いて下位ページプログラミングを実行できる。次のデータを受け取ったときは、システムは上位ページをプログラミングする。さらに別の実施形態では、システムは下位ページをプログラムするモードで書き込みを開始し、ワードラインの記憶素子の全体(又は大部分)を充填するために次の十分なデータを受け取った場合、全シーケンスプログラミングモードに変換する。
図6a〜cは、閾値電圧分布の組と中間状態を使用する2パスプログラミングの一例を示す。このプログラミング技術は前のページの隣接記憶素子に書き込んだ後で、特定のページに対してその特定の記憶素子を書き込むことによって、その特定の記憶素子に対するフローティングゲート間結合の影響を低減する。実装形態の一例では、不揮発性記憶素子は、4つのデータ状態を用いて記憶素子毎に2ビットのデータを記憶する。例えば、E状態が消去状態であり、状態A、B及びCがプログラムされた状態である。前述したように、状態Eはデータ11を記憶し、状態Aはデータ01を記憶し、状態Bはデータ00を記憶し、状態Cはデータ10を記憶している。データの物理的データ状態への他の符号化を用いることもできる。各記憶素子は2ページ分のデータを記憶する。参照のために、これらのページのデータは上位ページ及び下位ページと呼ばれるが、他のラベルを与えることもできる。
プログラミング動作は、2つのステップの処理である。第1ステップでは、下位ページをプログラムする。下位ページがデータ1のままである場合、記憶素子状態は状態Eに留まる(区分600)。データが0にプログラムされる場合、記憶素子の閾値電圧は上昇し、記憶素子は状態B’にプログラムされる(区分610)。従って、図6aは、状態Eから状態B’への記憶素子のプログラミングを示している。状態B’は中間状態Bであり、従って、検証点はVvb’として示され、Vvbより低い。
一実施形態では、状態Eから状態B’に記憶素子をプログラムした後、NANDストリング内の隣接記憶素子(WLn+1)をその下位ページに対してプログラムする。これは、図6bの閾値電圧区分612に示したように状態B’の閾値電圧区分を拡大する影響を有する。閾値電圧区分のこの見かけの拡大は、上位ページをプログラムする際に修正される。E状態も、区分602によって示されるように拡大される。
図6cは、上位ページをプログラムする工程を示している。記憶素子が消去状態Eであって上位ページが1である場合、記憶素子は状態Eに留まる(区分602)。記憶素子が状態Eであり、その上位ページデータが0である場合、記憶素子の閾値電圧は上昇し、記憶素子は状態Aになる(区分604)。記憶素子が中間の閾値電圧区分612であって、上位ページデータが0である場合、記憶素子は最終状態Bにプログラムされる(区分606)。記憶素子が中間の閾値電圧区分612であって、上位ページデータがデータ1になる場合、記憶素子の閾値電圧は上昇し、記憶素子は状態Cになる(区分608)。この例では、同様に、A及びBデータ状態のために、オフセット検証レベルが利用され得る。隣接記憶素子の上位ページプログラミングだけが所定の記憶素子の見かけの閾値電圧に影響を与えるので、図6a〜cで示した工程は、フローティングゲート間結合影響を低減する。別の状態符号化の一例は、上位ページデータが0であるとき区分612から状態Cに移動することであり、上位ページデータが1であるとき状態Bに移動することである。
図6a〜cは4つのデータ状態と2つのページデータに対する一例を提供するが、開示された概念は4つの状態より多い、又は少ない状態、及び2つのページとは異なるページを備えた他の実装形態に適用することもできる。例えば、記憶素子毎に8つの状態または16個の状態を有するメモリデバイスが、現在計画され、製造されている。
図7は、1組の記憶素子を、ワードラインを前後する順にプログラムするマルチパスプログラム動作を示す。描かれた構成要素は、はるかに大きい1組の記憶素子、ワードラインおよびビットラインの部分集合であってもよい。1つの可能なプログラム動作では、WLn−1(たとえば、記憶素子702、704および706)上の記憶素子が、第1のプログラミングパスでプログラムされる。このステップは、丸付き数字「1」で表される。次に(「2」)、WLn上の記憶素子(たとえば、記憶素子712、714および716)が、第1のプログラミングパスでプログラムされる。本実施例では、プログラミング対象のワードラインが選択された場合、各プログラムパルスの後に検証動作が行われる。WLnに対する検証動作のときに1つまたは複数の検証電圧がWLnに印加され、WLn−1およびWLn+1を含む残りのワードラインにパス電圧が印加される。このパス電圧は、選択されたワードラインの検知動作が実行できるように、選択されていない記憶素子をオンにする(導通する)目的で使用される。次に(「3」)、WLn−1上の記憶素子が第2のプログラミングパスでプログラムされる。次に(「4」)、WLn+1上の記憶素子が第1のプログラミングパスでプログラムされる。次に(「5」)、WLn上の記憶素子が、第2のプログラミングパスでそれぞれの最終状態にプログラムされる。
WLn+1でのプログラミングにより、WLn上の記憶素子は、状態ごとにそれらの閾値電圧分布を引き上げ、拡張する傾向のある連結による影響を受ける。この影響は、シングルパスプログラミングとマルチパスプログラミングとの両方で起こりうる。シングルパスプログラミングでは、各ワードラインが完全にプログラムされた後で、WLn−1、次にWLn、次にWLn+1という具合に次のワードラインに移る。
図8a〜図8fは、図2のセンスブロックで使用するプログラミング動作の様々な箇所におけるデータラッチの値の例を示す。この例では、各ビットラインが3つのデータラッチ、すなわちQDL、UDLおよびLDL、と関連付けられている。データラッチは、それぞれ、第1、第2および第3のデータラッチとみなすことができる。各ビットラインおよび選択された記憶素子は、第1、第2および第3のデータラッチを有してもよい。あるビットラインの第1のデータラッチは、別のビットラインの第1のデータラッチに対応し、例えば、両方がQDLであり得る。あるビットラインの第2のデータラッチは、別のビットラインの第2のデータラッチに対応し、例えば、両方がUDLであり得る。あるビットラインの第3のデータラッチは、別のビットラインの第3のデータラッチに対応し、例えば、両方がLDLであり得る。UDLおよびLDLが、上位ページおよび下位ページのビット情報をそれぞれ記憶するのに対し、QDLは、記憶素子が下位検証レベルをパスしたかどうかに関する情報を記憶する。
図8aは、関連付けられた記憶素子の目標データ状態に応じたプログラミングの開始時におけるデータラッチの各組のビット値を示す。E状態記憶素子の場合、全てのラッチが1に設定される。A状態記憶素子の場合、QDL、UDLおよびLDLラッチは、それぞれ0、0および1に設定される。B状態記憶素子の場合には、全てのラッチが0に設定される。C状態記憶素子の場合、QDL、UDLおよびLDLラッチは、それぞれ0、1および0に設定される。
図8bは、関連付けられた記憶素子の目標データ状態に応じた各データラッチのビット値であって、A状態記憶素子のVthが下位検証レベルVvaLをパスした後の値を表す。破線のボックスによって示すとおり、QDLビットは1に反転される。データラッチの変更は、各プログラム検証反復処理の終了時であって、検証動作が実行された後に行われる。
図8cは、接続された記憶素子の目標データ状態に応じた各ラッチのビット値であって、A状態記憶素子のVthが目標検証レベルVvaをパスした後のものを示す。UDLビットは、破線のボックスに示されるように、に反転される。
図8dは、接続された記憶素子の目標データ状態に応じた各ラッチのビット値であって、B状態記憶素子のVthが下位検証レベルVvbLをパスした後のものを示す。QDLビットは、破線のボックスに示されるように、1に反転される。
図8eは、接続された記憶素子の目標データ状態に応じた各ラッチのビット値であって、B状態記憶素子のVthが目標検証レベルVvbをパスした後のものを示す。UDLビットおよびLDLビットは、破線のボックスに示されるように、1に反転される。
図8fは、接続された記憶素子の目標データ状態に応じた各ラッチのビット値であって、C状態記憶素子のVthが目標検証レベルVvcをパスした後のものを示す。QDLビットおよびLDLビットは、破線のボックスに示されるように、1に反転される。
図9は、使用していない2つのデータラッチの組み合わせに加え、様々なデータ状態に対する、記憶素子の高速、低速、または禁止モードに応じた図8a〜図8fのデータラッチの値を示す。既述のとおり、記憶素子は、目標データ状態のオフセット検証レベルに達するまで、高速プログラミングモードでプログラムすることができ、その後は、目標データ状態の目標検証レベルに達するまで、低速プログラミングモードでプログラムされ、その後はそれ以上のプログラミングが禁止される。ここで設けられたデータラッチは、様々なプログラミングモードと様々なデータ状態とを対象とする様々な3ビットの組み合わせを含む。
「E」は、E状態のままであり、その結果失敗が起こらないE状態記憶素子を表す。「Efail」は、E状態を上回るように妨害され、その結果失敗が起こるE状態記憶素子を表す。これらの状況は共に、書き込みデータに応じてE状態記憶素子になる予定だったことから、同じデータラッチの値によって表される。「Afast」、「Aslow」およびAinhibit(「Ainh」)は、それぞれ、A状態記憶素子の高速、低速、および禁止モードを表す。同様に、「Bfast」、「Bslow」およびBinhibit(「Binh」)は、それぞれ、B状態記憶素子の高速、低速および禁止モードを表す。「Cfast」およびCinhibit(「Cinh」)は、それぞれ、C状態記憶素子の高速モードおよび禁止モードを表す。A、BおよびC状態記憶素子は、プログラミング動作終了時にQDL=UDL=LDL=1を有するため、それらのデータラッチによって互いを区別することができない。同様に、この実装形態では、E状態記憶素子が、プログラミング動作の終了時にA、BおよびC状態記憶素子と区別することができない。
3つのデータラッチが存在することから、3要素(QDL、UDL、LDL)の可能な固有の組み合わせが2 =8通り存在することを理解することにより、この課題への対応策を見出すことができる。ただし、この例では、記憶素子が、E状態、E状態超だがVvaL未満、VvaLとVvaとの間、Vva超だがVvbL未満、VvbLとVvbとの間、およびVvb超だがVvc未満、という6つのカテゴリによってのみ特徴付けることができる。そのため、これらの組み合わせのうち、#1(0,1,1)および#2(1,1,0)の2つは使用されない。
これらの組み合わせは、エラー検出およびデータ復旧目的で使用することができる。組み合わせ#1は、この組み合わせのUDLおよびLDLデータが通常のE状態記憶素子、すなわち、UDL=1およびLDL=1、の場合と同じである利点を有する、つまり、E状態記憶素子の上位ページおよび下位ページビット情報が変わらないままということである。この構成では、QDL=0が使用され、QDL=1は、禁止されたA、BおよびC状態記憶素子を表す目的で使用される。これにより、プログラミング動作の終了時にE状態記憶素子をA、BおよびC状態記憶素子と区別することができる。
図10は、図9のデータラッチの値の変形例を表しており、消去状態は、禁止されたA、BおよびC状態とは異なる組み合わせを有する。ここで、「E」および「Efail」記憶素子に関して、QDL=0、UDL=1およびLDL=1である。図9に示すものと同じ組み合わせを、他のデータ状態でも維持することができ、同じ組み合わせが図10で繰り返される。プログラミング動作の終了時に、全てのE状態記憶素子がデータラッチ(0,1,1)を有するのに対し、禁止されたA、BおよびC状態記憶素子は、(1,1,1)というデータラッチを有する。そのため、プログラミング終了時に、QDLをスキャンすれば、E状態記憶素子と他の記憶素子とを区別することができる。
E状態記憶素子は、ワードラインなど、より大きな組の記憶素子内の記憶素子の第1の部分集合内にあるとみなすことができ、A、BおよびC状態記憶素子は、その組の第2の部分集合内にあるとみなすことができる。異なる状態の各種記憶素子は、ランダムに分布および混在させることができる。第2の部分集合内の記憶素子は、E状態に隣接する第1の目標データ状態(A状態)、第1の目標データ状態に隣接する第2の目標データ状態(B状態)、および第2の目標データ状態に隣接する第3の目標データ状態(C状態)を含む、少なくとも3つの目標データ状態にプログラムされる。プログラミングを正常に完了した第2の部分集合内の各記憶素子は、関連付けられたデータラッチ(例えばQDL)のうちの1つに第1の値(例えば1)を有し、第1の部分集合内の各記憶素子は、関連付けられたデータラッチ(例えばQDL)のうちの1つにおける第1の値とは異なる値(例えば0)によって特定される。
この改訂されたデータラッチ構成は、記憶素子が高い状態X、典型的にはA状態、に移行するために起きるE−>X失敗と呼ばれるE状態の失敗の数を判断する目的で使用することができる。プログラミング動作の終了時に、Vra(またはE状態区分とA状態区分との間の他の電圧)を使用して読み出し動作を実行し、Vth>Vraである記憶素子を特定することができる。検知中は、これらの記憶素子は非導電性である。読み出し動作の結果とQDL値とに基づいて、E−>X失敗の数を計数することができる。記憶素子のページにおける失敗の数が、ビット無視閾値(例えば、メモリデバイスでROMヒューズパラメータによって設定される)と呼ばれる閾値よりも高い場合には、そのページでプログラム状態=failを設定することができる。そのページ上のデータは、Vrc(またはB状態区分とC状態区分との間の他の電圧)でのC状態読み出しと、次に行われるVrb(またはA状態区分とB状態区分との間の他の電圧)でのB状態読み出しとを含む完全読み出し動作を実行することを含む復旧動作によって、復旧させることができる。復旧動作は、次に述べるとおり、エラー検出プロセスからすでに利用可能であるA状態読み出し結果も使用し、データラッチの値にアクセスし、適切な論理演算を実行する。
なお、図10のこのデータラッチ割り当ては、高速または低速プログラミングモードがアクティブであるかどうかを示すプログラムデータ転送に影響する。比較のために、図9の手法は、(SA<=QDLを使用して)QDLを参照することによってのみ、高速または低速プログラミングモードがアクティブであるかどうかを判断し、それに応じてビット・ライン・バイアスを設定する(低速プログラミングモードの場合にはVblが引き上げられ、高速プログラミングモードの場合には接地される)。ここで、「SA<=QDL」は、データがQDLからSAにロードされることを示す。図10の手法により、バイアス「0」がプログラム禁止情報を上書きする場合がある。これを回避するために、新しいプログラムデータ転送を、SA<=QDL|(UDL&LDL)に変更することができる。式中、「|」は論理OR演算を表す。
図10の手法により、プログラミング動作の終了時に、プログラム中のA、BおよびC状態記憶素子を計数して、総数が閾値よりも少ないかどうかを確認することができる。これは、一時変数YBOXに値UDL&LDL(「&」は論理ANDを表す)をロードする論理演算YBOX<=UDL&LDLを実行し、YBOXにおける0の数を計数することによって達成できる。論理演算は、センスモジュール用の管理回路、ステートマシンまたは他の箇所によって実行することができ、YBOXはこれらの箇所で維持することができる。
図9の手法と図10の手法との1つの類似点は、(UDL,LDL)=(1,1)の場合に記憶素子が禁止されるということである。
図11aは、図10のデータラッチの値とA状態読み出し動作の結果とに基づく論理演算の使用を示しており、失敗検出プロセスにおける消去状態エラーとプログラム中の高状態エラーを計数する。図11aは、図10の表のQDL行を繰り返している。図10の行が、参照用に図11bでも繰り返されている。QDLが、プログラミング動作の終了時に、残りのプログラム中の記憶素子を特定する。SA<=read@Aは、読み出し動作がVraで実行され、読み出し動作の結果がセンスモジュールなどのセンスアンプ(SA)にロードされることを示す。この読み出し動作は、消去状態にある記憶素子と、目標データ状態の隣接する状態(例えばA状態)にある記憶素子とを区別する。読み出し動作は、妨害が原因でE状態記憶素子がVraを越えたかどうかを判断する。この読み出し下では、「E」(失敗していないE状態)記憶素子が導電性であるのに対し、「Efail」(失敗したE状態)記憶素子およびプログラムされた全状態(例えば、A、B、C状態)の記憶素子は非導電性である。
この例では、検知中に記憶素子が導電性である場合にはSA=0、記憶素子が非導電性である場合にはSA=1である。図示するとおり、「E」記憶素子についてはSA=0であり、「Efail」記憶素子についてはSA=1である。同時に、全てのプログラム状態記憶素子でSA=1である。論理演算SA&〜QDLにおいて、「&」は論理ANDを意味し、「〜」は否定または裏を意味する。SA&〜QDLが、「Efail」、「Afast」、「Bfast」および「Cfast」状況にある記憶素子を特定する。プログラミングの終了時に、それぞれの記憶素子の目標状態にプログラムできない記憶素子のうちのいくつかは無視される。「Afast」、「Bfast」および「Cfast」状況にある記憶素子は、これらの無視された記憶素子から成る。
全てのデータ状態におけるエラーの数は、論理演算YBOX<=SA&〜QDL実行後のYBOXにおける「1」を計数することによって求めることができる。この計数は、「Efail」記憶素子と、まだプログラミングを終えておらず(「Afast」、「Bfast」、および「Cfast」状況下にある)、プログラミング終了前に無視されたA、BおよびC状態記憶素子とを含む。これらの無視された記憶素子がエラーを招く可能性もある。誤り訂正コード(ECC)がこれらのエラーに対応できるので、全ての状態のエラーを合計する方が大きな意味があり得る。
図11bは、図10のデータラッチの値とA状態読み出し動作の結果とに基づく論理演算の使用を表しており、失敗検出プロセスにおける消去状態エラー(「Efail」)を計数する。この演算では、「Efail」記憶素子だけが計数され、他の終了していないA、BまたはC状態記憶素子の計数は回避することができる。図11bでは、図11aのSA行に加え、図10の表のQDL、UDLおよびLDL行も繰り返している。どちらの計数方法(全ての状態の合計またはE状態のみを計数)でも、3つのデータラッチQDL、UDLおよびLDL内のデータは、データ復旧用のデータを保存する。失敗カウントが閾値を超えると、データを復旧させて、メモリデバイス内の別の箇所へと移すために、完全ワードライン読み出し動作を実行することができる。
「Efail」記憶素子だけを計数するには、論理演算YBOX<=SA&〜QDL&UDL&LDLを使用すればよい。これは、一時変数YBOXに値を割り当てる。破線のボックスは、「Efail」についてはYBOX=1であり、Eおよび他の全ての記憶素子状況についてはYBOX=0であることを示す。そのため、YBOXは、「Efail」記憶素子と他の全ての記憶素子とを区別する。「Efail」記憶素子の数は、1組の記憶素子全体にわたり、YBOX=1である記憶素子の数をプログラミング動作で計数することによって、計数することができる。
図11cは、図10のデータラッチの値と、データ復旧プロセスにおけるCおよびB状態読み出し動作の結果とに基づいた論理演算の使用を示す。データ復旧のステップは以下のとおりである。
1.QDL復旧−QDLデータは、3つのデータラッチ内の残りデータからQDL*<=〜(〜QDL&UDL&LDL)によって取得することができる。
2.C状態(Vrc)で読み出す。C状態記憶素子のうちの一部が自らの目標状態に達しておらず、プログラミング中に無視された可能性があることから、C状態データの一部が誤って読み出される(Xでマーク)ものと仮定する。C状態を復旧させるために、論理演算UDL*<=SA|(UDL&〜LDL)によってUDLを更新することができる。
3.UDL**<=UDL|〜QDLを使用して上位ページデータを完全に復旧させるために、UDLラッチがもう1度更新される。
4.B状態(Vrb)で読み出す。ここでも、上記C状態の場合と同じ理由で、B状態データの一部が誤って読み出される(Xでマーク)ものと仮定する。残りデータを持っているため、LDLデータは、論理演算LDL<=LDL&〜SAによって最初のプログラムデータへと変換することができる。
ここでは、上位ページデータの復旧がLDLおよびQDLにある残りデータに依存するため、C読み出しが最初である。
破線のボックスは、UDLおよびLDLの最終復旧値を示す。これらの値が、書き込みデータに従ってデータラッチでもともと設定されていた値と同じであることが、図10または図11bから検証できる。そのため、このデータ復旧動作を実行することにより、各記憶素子の下位ページおよび上位ページのデータ情報を正しく復旧できる可能性がある。
なお、論理演算は、センスブロックの管理回路で、またはステートマシンで実行することができ、どちらもメモリチップ上に存在する。これにより、外部のオフチップコントローラ(例えば、図1における150)にデータを転送し、そこで演算を実行する必要がなくなる。そのため、エラー検出およびデータ復旧動作を、チップ上で、オフチップコントローラまたはホストに対して実質的に透過的な方法で、実行することができる。
図12aは、プログラミング中およびプログラミング後の失敗検出および復旧動作の例を表す。ステップ1200で、書き込みデータの上位ページに対してプログラミング動作が開始される。なお、下位ページを先にプログラミングしてもよい。ステップ1202で、それぞれの記憶素子のセンスモジュールと関連付けられたデータラッチを構成する。センスモジュールは、例えば、それぞれのビットラインおよびNANDストリング、または他の一続きの直列接続記憶素子と関連付けることができる。データラッチは、消去状態に保たれる記憶素子の第1の部分集合と、A、BおよびC状態など、それぞれの目標データ状態にプログラムされる記憶素子の第2の部分集合とを特定するように構成されている。プログラム・ループ・カウントが、ステップ1204で更新される。最初に、カウントが0に設定される。ステップ1206で、プログラム電圧Vpgmが、選択されたワードラインに印加される。このワードラインは、記憶素子の第1および第2の部分集合を含む。また、データラッチに基づき、センスモジュールによって禁止モードまたはプログラムモードが設定される。
ステップ1208で、オフセット検証レベルおよび目標検証レベルを使用して、検証動作が実行される。この検証動作は、それぞれの記憶素子が導電状態にある場合に、センスモジュールを使用してそれぞれのビットラインに事前に充電することができ、センスノードがビットラインに放電できるようにするセンス動作である。非導電状態にある場合には、記憶素子は、認め得るほど放電しない。放電期間の経過後、生成されたデータは、各記憶素子のプログラミングを監視および制御するために、管理回路に転送することができる。特にステップ1210では、図10に関連して記載されたように、検証動作の結果に基づきデータラッチを管理回路が更新する。ステップ1212で、プログラミング中の記憶素子の数が判断される。例えば、図10に関連して記載しているように、論理演算YBOX<=UDL&LDLを実行することにより、プログラミング中のA、BおよびC状態記憶素子を計数することができる。判断ステップ1214で、プログラミング中の記憶素子の数が閾値よりも少ないかどうかが判断される。判断ステップ1214が真であれば、プログラミング動作は成功であり(ステップ1216)、図12bおよび図12cに関連してさらに記載しているように、プログラミング後のエラー検出および復旧動作が実行される(ステップ1218)。それぞれの目標データ状態に達しなかった記憶素子数が第2の部分集合内の記憶素子の最大数に満たなければ、判断ステップ1214は真である。
判断ステップ1214が偽である場合には、判断ステップ1222で、ループカウントが最大値を超えたかどうかが判断される。判断ステップ1222が真であれば、プログラミング動作は不成功である(ステップ1224)。判断ステップ1222が偽であれば、Vpgmがステップアップされ(ステップ1220)、別のプログラム検証反復処理が実行されるように、ループカウントが更新される(ステップ1204)。
図12bは、図12aのステップ1218のプログラミング後のエラー検出および復旧動作に関するさらなる詳細を示す。ステップ1230で、バイナリ読み出し動作がVraで実行される。図11aの動作SA<=read@Aを参照されたい。ステップ1232で、Vth>Vraである記憶素子が、(例えばSA=1から)特定される。ステップ1234で、Vth>Vraである記憶素子のデータラッチが評価され、書き込みデータに従ってE状態に保たれることになっていた記憶素子(「Efail」)が特定される。ステップ1234で、図11bに関連して記載された動作YBOX<=SA&〜QDL&UDL&LDLを実行することができる。ステップ1236で、例えば、YBOX=1である記憶素子からE状態記憶素子の失敗の数を計数する。
判断ステップ1238で、カウントが閾値以下であれば、ステップ1240でstatus=passが設定される。これは、例えば、ECC訂正可能な少数のエラーが検出され、別の箇所にデータを書き直すことが保証されないことを示す。判断ステップ1238が偽であれば、status=failが設定される。エラーが検出されたブロックは、以後使用されないように、悪性ブロックとして記録されてもよい。さらに、図12cに関連して記載するとおり、ステップ1244で復旧動作が実行される。
図12cは、図12bのステップ1244のデータ復旧動作に関するさらなる詳細を示す。ステップ1250で、Vrc(図11cのSA<=read@C)での読み出し動作が実行され、ステップ1252で、Vrb(図11cのSA<=read@B)での読み出し動作が実行され、図11cに関連しても記載するとおり、ステップ1254で、読み出し結果とデータラッチ内の値とに基づいて、論理演算が実行される。ステップ1256で、復旧されたデータが別のブロック内の別のワードラインに書き込まれる。
図13は、プログラミング動作における選択されたワードラインの波形例と以降のデータ復旧プロセスとを示す。プログラミング動作は、選択されたワードラインにプログラムパルス(例えば、1302、1304、1306、…、1308)が印加され、その後VvaL、Vva、VvbL、VvbおよびVvcで検証電圧(例えば1310)が印加される一連のプログラム検証反復処理を含み得る。このプログラミング動作は、開始時期tsから最終終了時期tfまでの期間1312にわたって行われる。エラー検出プロセスにおけるtaで、Vraでの読み出し動作が行われる。エラー検出プロセスの結果に基づき、tcにおけるVrcでのC状態読み出しと、tbにおけるVrbでのB状態読み出しとを使用するデータ復旧動作が開始されてもよい。
エラー検出および復旧プロセスの各種代替案を、以下のとおり提供することができる。
1.記載の方式では、E状態記憶素子のデータラッチに対して(0,1,1)構成を使用して、(1,1,1)構成を使用する禁止されたA/B/C状態記憶素子と区別する。1つの代替案は、禁止されたA/B/C状態記憶素子に対して(0,1,1)を使用し、E状態記憶素子に対して(1,1,1)を使用するという逆の手法である。
2.記載の方式では、プログラミング動作の終了時にその他任意の記憶素子と区別するために、E状態記憶素子に対して一意の(0,1,1)データラッチ構成が使用される。しかし一般的には、(0,1,1)構成が、禁止されたA/B/C状態記憶素子のいずれにも割り当て可能であることから、その状態の記憶素子は、プログラミング動作の終了時に区別可能である。例えば、プログラミングの終了時に、プログラムされたA状態記憶素子が他の記憶素子と区別できるように、禁止されたA状態記憶素子に(0,1,1)を割り当てることができる。どのオプションが選択されるかによって、その状態に対応する記憶素子について正しいデータが確実に復旧される。これは、その状態のデータのうちの1つだけが破損している状況で有用であり得る。例えば、いくつかの特定の状況で、記憶素子がなかなかC状態へとプログラミングされず、そのページのプログラム状態が失敗する一方で、他の全ての状態に関するデータは正常に見えるとする。かかる状況では、A読み出し、B読み出し、およびC読み出しを用いてQDLデータおよび他の状態からC状態記憶素子を確認することにより、データ一式を復旧させることができる。また、このデータ復旧方式と関連付けられる状態を選択するROMヒューズオプションを提供できる可能性もある。
3.記載のとおり、使用されていない2つのデータラッチの組み合わせ(0,1,1)および(1,1,0)が存在する。両方の組み合わせを一緒に使用して、2つの異なる種類の記憶素子を表せる可能性がある。例えば、(0,1,1)構成を使用してE状態記憶素子を表すことができる一方で、禁止されたC状態記憶素子に対して(1,1,0)構成を使用することができる。この場合、少なくともこれらの2つのデータ状態について、完全なデータ復旧を保証することができる。
なお、2つの(QDL,UDL,LDL)の組み合わせ、具体的には#1(0,1,1)および#2(1,1,0)が使用されないのが典型的であると、図9との関連ですでに述べた。記載された詳細な例では、組み合わせ#1自体が使用された。ただし、#1および#2の両方の組み合わせを、例えば、2種類の失敗から復旧する目的で、使用することも可能である。例えば、組み合わせ#1はE状態の失敗に割り当てることができ、組み合わせ#2はA状態の失敗(例えばAinh)に割り当てることができる。この場合、E−>Xの失敗だけでなく、A−>Xの失敗も復旧させることができる。別の代替案として、他のラッチ割り当てに応じて、組み合わせ#1ではなく組み合わせ#2を使用できる可能性もある。
一実施形態では、不揮発性記憶システム内の1組の記憶素子をプログラムするための方法が、書き込みデータに基づいて、当該1組の中の第1の部分集合内にあり、消去状態に保たれる記憶素子と関連付けられたデータラッチ内、および、当該1組の中の第2の部分集合内にあり、それぞれの目標データ状態にプログラムされる記憶素子と関連付けられたデータラッチ内のデータを構成することを含む。この方法は、第2の部分集合内の記憶素子をプログラムしている間、第1の部分集合内の記憶素子がプログラムされることを禁止するステップと、プログラミング中、第2の部分集合内の記憶素子の進捗に基づいて第2の部分集合内の記憶素子の関連付けられたデータラッチを更新するステップと、をさらに含む。この方法は、自身のそれぞれの目標データ状態に達していない記憶素子数が、第2の部分集合内の記憶素子の最大数に満たず(この状況は、指定された数のビットエラーまたは記憶素子エラーに満たないことと相関関係がある)、その結果、第2の部分集合内の記憶素子のプログラミングが正常に完了したとみなされると判断するステップをさらに含む。この方法は、第2の部分集合内の記憶素子のプログラミングが正常に完了したことを受けて、消去状態と目標データ状態の隣接する状態とを区別する第1の部分集合内の記憶素子に対して読み出し動作を実行することにより、エラーを有する第1の部分集合内の記憶素子の数を判断するステップをさらに含む。
別の実施形態では、不揮発性記憶システムが、組の中の第1の部分集合内にあり、消去状態に保たれる記憶素子と、当該1組の中の第2の部分集合内にあり、それぞれの目標データ状態にプログラムされる記憶素子とを含む、1組の不揮発性記憶素子を備える。また、各記憶素子および少なくとも1つの制御回路と関連付けられたデータラッチも提供される。少なくとも1つの制御回路が、(a)書き込みデータに基づいて、第1の部分集合内の記憶素子と関連付けられたデータラッチ内、および第2の部分集合内の記憶素子と関連付けられたデータラッチ内でデータを構成し、(b)第1の部分集合内の記憶素子がプログラムされることを禁止し、第2の部分集合内の記憶素子をプログラムし、プログラムされたときに第2の部分集合内の記憶素子の進捗に基づいて、第2の部分集合内の記憶素子の関連付けられたデータラッチを更新し、(c)自身のそれぞれの目標データ状態に達していない記憶素子数が第2の部分集合内の記憶素子の最大数に満たず、その結果、第2の部分集合内の記憶素子のプログラミングが正常に完了したとみなされると判断し、(d)第2の部分集合内の記憶素子のプログラミングが正常に完了したことを受けて、消去状態と目標データ状態の隣接する状態とを区別する第1の部分集合内の記憶素子に対して読み出し動作を実行することにより、エラーを有する第1の部分集合内の記憶素子の数を判断する。
別の実施形態では、不揮発性記憶システムが、書き込みデータに基づいて、組の中の第1の部分集合内にあり、消去状態に保たれる記憶素子と関連付けられたデータラッチ内、および当該1組の中の第2の部分集合内にあり、それぞれの目標データ状態にプログラムされる記憶素子と関連付けられたデータラッチ内のデータを構成するための手段を備える。また、第2の部分集合内の記憶素子をプログラムしている間、第1の部分集合内の記憶素子がプログラムされることを禁止し、プログラミング中、第2の部分集合内の記憶素子の進捗に基づいて第2の部分集合内の記憶素子の関連付けられたデータラッチを更新するための手段も提供される。また、自身のそれぞれの目標データ状態に達していない記憶素子数が第2の部分集合内の記憶素子の最大数に満たず、その結果、第2の部分集合内の記憶素子のプログラミングが正常に完了したとみなされると判断するための手段も提供される。また、第2の部分集合内の記憶素子のプログラミングが正常に完了したことを受けて、消去状態と目標データ状態の隣接する状態とを区別する第1の部分集合内の記憶素子に対して読み出し動作を実行することにより、エラーを有する第1の部分集合内の記憶素子の数を判断するための手段も提供される。
別の実施形態では、不揮発性記憶システム内の組をプログラムするための方法が、記憶素子のうちの少なくとも一部がプログラムされる予定の様々な目標データ状態を特定する書き込みデータに基づいて、記憶素子と関連付けられたデータラッチ内でデータを構成することを含む。この方法は、記憶素子のうちの少なくとも一部を様々な目標データ状態にプログラムするためのプログラミング動作を実行するステップと、プログラミング動作中に、記憶素子のうちの少なくとも一部の進捗に基づいて、記憶素子のうちの少なくとも一部の関連付けられたデータラッチを更新するステップと、をさらに含む。この方法は、プログラミング動作が正常に完了したことを受けて、様々な目標データ状態のうちの1つの目標データ状態(例えばE状態)にある記憶素子と、様々な目標データ状態の他の目標データ状態(例えばA、BおよびC状態)にある記憶素子とを区別する読み出し動作を実行するステップをさらに含む。この方法は、他の目標データ状態にある記憶素子の中から、1つの目標データ状態にプログラムされる予定の記憶素子の数を判断することにより、エラーのある記憶素子の数を判断するステップをさらに含む。この方法は、エラーのある記憶素子の数が十分に高い場合に、書き込みデータを復旧させるために復旧動作を実行するステップをさらに含む。
本明細書で提供される方法を実施するための対応する方法、システムおよびコンピュータまたはプロセッサ可読記憶デバイスを説明してきた。
前述の詳細な説明は、例示および説明を目的として提示されている。これは、網羅的なものでなく、開示された通りの形態に限定されるものでもない。上記の教示に照らした多くの修正形態および変形形態が考えられる。記載した実施形態は、技術およびその実際的応用の原理を最もよく説明し、当業者が様々な実施形態で、検討される特定の使用に適するように様々に修正して技術を最もよく利用しうるように選定された。技術の範囲は、本明細書に添付される特許請求の範囲によって規定されるものとする。

Claims (15)

  1. 不揮発性記憶システム内の1組の記憶素子をプログラムするための方法であって、
    書き込みデータに基づいて、組(300)の中の第1の部分集合内にあり、消去状態に保たれる記憶素子と関連付けられたデータラッチ(194〜197)内、および前記1組の中の第2の部分集合内にあり、それぞれの目標データ状態(A、B、C)にプログラムされる記憶素子と関連付けられたデータラッチ内のデータを構成するステップと、
    前記第2の部分集合内の前記記憶素子をプログラムしている間、前記第1の部分集合内の前記記憶素子がプログラムされることを禁止し、前記プログラミング中、前記第2の部分集合内の前記記憶素子の進捗に基づいて前記第2の部分集合内の前記記憶素子の前記関連付けられたデータラッチを更新するステップと、
    それぞれの目標データ状態に達していない記憶素子数が前記第2の部分集合内の記憶素子の最大数(THRESHOLD)に満たず、その結果、前記第2の部分集合内の前記記憶素子の前記プログラミングが正常に完了したとみなされると判断するステップと、
    前記第2の部分集合内の前記記憶素子の前記プログラミングの前記正常な完了を受けて、前記消去状態と前記目標データ状態の隣接する状態とを区別する前記第1の部分集合内の前記記憶素子に対して読み出し動作を実行することにより、エラーを有する前記第1の部分集合内の記憶素子の数を判断するステップと、
    を備える方法。
  2. エラーを有する前記第1の部分集合内の前記記憶素子の数が十分に多い場合に、前記書き込みデータを復旧させるために復旧動作を実行するステップを備え、
    前記復旧動作が、各目標データ状態を区別する前記第2の部分集合内の前記記憶素子に対して追加読み出し動作を実行する、請求項1に記載の方法。
  3. 前記第2の部分集合内の前記記憶素子が、前記隣接する状態である第1の目標データ状態(A)と、前記第1の目標データ状態に隣接する第2の目標データ状態(B)と、前記第2の目標データ状態に隣接する第3の目標データ状態(C)とを含む、少なくとも3つの目標データ状態にプログラムされ、
    前記追加読み出し動作が、前記第2の目標データ状態と前記第3の目標データ状態とを区別し、その後前記第1の目標データ状態と前記第2の目標データ状態とを区別する、
    請求項2に記載の方法。
  4. プログラミングを正常に完了した前記第2の部分集合内の各記憶素子が、自身の関連付けられたデータラッチのうちの1つに第1の値を有しており、
    前記第1の部分集合内の各記憶素子が、自身の関連付けられたデータラッチのうちの1つにおける前記第1の値とは異なる値によって特定され、
    前記エラーを有する前記第1の部分集合内の前記記憶素子の数を判断する前記ステップが、前記第1の部分集合内の各記憶素子の前記関連付けられたデータラッチの1つと前記読み出し動作の結果を使用して論理演算を実行することを含む、
    請求項1〜3のいずれか一項に記載の方法。
  5. 各記憶素子と関連付けられた前記データラッチが、第1のデータラッチ(QDL)と、第2のデータラッチ(UDL)と、第3のデータラッチ(LDL)とを含み、
    前記プログラミングが、前記第2の部分集合内の前記記憶素子のうちの少なくとも一部をオフセット検証レベルおよび目標検証レベルと照合して、前記目標データ状態のうちの少なくとも1つが存在するかどうかを検証することを含み、
    前記オフセット検証レベルおよび前記目標検証レベルと照合して、前記目標データ状態のうちの前記少なくとも1つが存在するかどうかが検証される前記第2の部分集合内の前記記憶素子の各々について、前記第1のデータラッチ(QDL)が、前記記憶素子が前記オフセット検証レベルに達したかどうかを示し、前記第2のデータラッチ(UDL)が上位ページデータを提供し、前記第3のデータラッチ(LDL)が下位ページデータを提供し、
    前記第1の部分集合内の前記記憶素子の各々について、前記第1のデータラッチが、プログラミングを正常に完了した前記第2の部分集合内の前記記憶素子の前記第1のデータラッチ内の値とは異なる値を有し、
    前記エラーを有する前記第1の部分集合内の前記記憶素子の数を判断する前記ステップが、前記第1の部分集合内の前記記憶素子の前記第1のデータラッチと前記読み出し動作の結果とを使用して論理演算を実行することを含む、
    請求項1〜4のいずれか一項に記載の方法。
  6. 自身のそれぞれの目標データ状態に達していない記憶素子数が前記第2の部分集合内の前記記憶素子の前記最大数に満たないと判断する前記ステップが、前記第2の部分集合内の前記記憶素子の各々に対し、前記データラッチを使用して論理演算を実行することを含む、請求項1〜5のいずれか一項に記載の方法。
  7. 前記エラーを有する前記第1の部分集合内の前記記憶素子の数を判断する前記ステップが、前記目標データ状態うちの少なくとも1つの中に存在するものとして読み出される前記第1の部分集合内の前記記憶素子の数を判断するステップを含む、請求項1〜6のいずれか一項に記載の方法。
  8. 前記エラーを有する前記第1の部分集合内の前記記憶素子の数を判断する前記ステップが、前記読み出し動作が前記第1の部分集合内の各記憶素子にコントロールゲート電圧を印加するときに非導電性である前記第1の部分集合内の前記記憶素子の数を判断するステップを含み、
    前記コントロールゲート電圧が、前記消去状態と前記目標データ状態の前記隣接する状態とを区別するレベルで印加される、請求項1〜7のいずれか一項に記載の方法。
  9. 前記第2の部分集合内の前記記憶素子が、少なくとも2ページのデータでプログラムされる、請求項1〜8のいずれか一項に記載の方法。
  10. 1組(300)の不揮発性記憶素子であって、前記1組の中の第1の部分集合内にあり、消去状態に保たれる記憶素子と、前組の中の第2の部分集合内にあり、それぞれの目標データ状態にプログラムされる記憶素子とを含む、1組の不揮発性記憶素子と
    各記憶素子と関連付けられたデータラッチ(194〜197)と、
    (a)書き込みデータに基づいて、前記第1の部分集合内の前記記憶素子と関連付けられた前記データラッチ内、および前記第2の部分集合内の前記記憶素子と関連付けられた前記データラッチ内でデータを構成し、(b)前記第1の部分集合内の前記記憶素子がプログラムされることを禁止し、前記第2の部分集合内の前記記憶素子をプログラムし、プログラムされたときに前記第2の部分集合内の前記記憶素子の進捗に基づいて、前記第2の部分集合内の前記記憶素子の前記関連付けられたデータラッチを更新し、(c)自身のそれぞれの目標データ状態に達していない記憶素子が前記第2の部分集合内の前記記憶素子の最大数に満たず、その結果、前記第2の部分集合内の前記記憶素子の前記プログラミングが正常に完了したとみなされると判断し、(d)前記第2の部分集合内の前記記憶素子の前記プログラミングの前記正常な完了を受けて、前記消去状態と、前記目標データ状態の隣接する状態とを区別する前記第1の部分集合内の前記記憶素子に対して読み出し動作を実行することにより、エラーを有する前記第1の部分集合内の記憶素子の数を判断する、少なくとも1つの制御回路(192)と、
    を備える不揮発性記憶システム。
  11. エラーを有する前記第1の部分集合内の前記記憶素子の前記数が十分に高い場合に、前記少なくとも1つの制御回路が前記書き込みデータを復旧させるために復旧動作を実行し、前記復旧動作が、各目標データ状態を区別する前記第2の部分集合内の前記記憶素子に対して追加読み出し動作を実行する、請求項10に記載の不揮発性記憶システム。
  12. プログラミングを正常に完了した前記第2の部分集合内の各記憶素子が、自身の関連付けられたデータラッチのうちの1つに第1の値を有しており、
    前記第1の部分集合内の前記記憶素子の各々が、自身の関連付けられたデータラッチのうちの1つにおける前記第1の値とは異なる値によって特定され、
    前記少なくとも1つの制御回路が、前記第1の部分集合内の前記記憶素子を特定するために、前記第1の部分集合内の各記憶素子の前記関連付けられたデータラッチの1つと前記読み出し動作の結果を使用して論理演算を実行する、請求項10または11に記載の不揮発性記憶システム。
  13. 各記憶素子と関連付けられた前記データラッチが、第1のデータラッチ(QDL)と、第2のデータラッチ(UDL)と、第3のデータラッチ(LDL)とを含み、
    前記第2の部分集合内の前記記憶素子をプログラムするために、前記少なくとも1つの制御回路が、前記第2の部分集合内の前記記憶素子のうちの少なくとも一部をオフセット検証レベルおよび目標検証レベルと照合して、前記目標データ状態のうちの少なくとも1つが存在するかどうかを検証し、
    前記オフセット検証レベルおよび前記目標検証レベルと照合して、前記目標データ状態のうちの前記少なくとも1つが存在するかどうかが検証される前記第2の部分集合内の前記記憶素子の各々について、前記第1のデータラッチが、前記記憶素子が前記オフセット検証レベルに達したかどうかを示し、前記第2のデータラッチが上位ページデータを提供し、前記第3のデータラッチが下位ページデータを提供し、
    前記第1の部分集合内の前記記憶素子の各々について、前記第1のデータラッチが、プログラミングを正常に完了した前記第2の部分集合内の前記記憶素子の前記第1のデータラッチ内の値とは異なる値を有し、かつ、
    前記少なくとも1つの制御回路が、前記第1の部分集合内の前記記憶素子を特定するために、第1のデータラッチを使用して論理演算を実行する、
    請求項10〜12のいずれか一項に記載の不揮発性記憶システム。
  14. 前記少なくとも1つの制御回路が、目標データ状態に達していない記憶素子数が前記第2の部分集合内の前記記憶素子の前記最大数に満たないことを検証するために、前記第2の部分集合内の前記記憶素子の各々に対し、前記データラッチを使用して論理演算を実行する、請求項10〜13のいずれか一項に記載の不揮発性記憶システム。
  15. 前記少なくとも1つの制御回路が、前記エラーを有する前記第1の部分集合内の前記記憶素子の前記数を判断するために、前記目標データ状態のうちの少なくとも1つの中に存在するものとして読み出される前記第1の部分集合内の前記記憶素子の数を判断する、請求項10〜14のいずれか一項に記載の不揮発性記憶システム。
JP2012551286A 2010-01-28 2011-01-27 データ状態に固有の失敗の計数に基づく不揮発性メモリのデータ復旧 Active JP5735543B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/695,918 2010-01-28
US12/695,918 US8248850B2 (en) 2010-01-28 2010-01-28 Data recovery for non-volatile memory based on count of data state-specific fails
PCT/US2011/022736 WO2011094419A1 (en) 2010-01-28 2011-01-27 Multibit programming method in a non-volatile memory allowing a number of data state - fails and data recovery method in case of programming fail

Publications (3)

Publication Number Publication Date
JP2013518359A JP2013518359A (ja) 2013-05-20
JP2013518359A5 JP2013518359A5 (ja) 2014-02-27
JP5735543B2 true JP5735543B2 (ja) 2015-06-17

Family

ID=43735965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012551286A Active JP5735543B2 (ja) 2010-01-28 2011-01-27 データ状態に固有の失敗の計数に基づく不揮発性メモリのデータ復旧

Country Status (7)

Country Link
US (1) US8248850B2 (ja)
EP (1) EP2529375B1 (ja)
JP (1) JP5735543B2 (ja)
KR (1) KR101854927B1 (ja)
CN (1) CN102754165B (ja)
TW (1) TW201203268A (ja)
WO (1) WO2011094419A1 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645792B2 (en) * 2008-12-16 2014-02-04 Micron Technology, Inc. Memory with guard value dependent error correction
US8213243B2 (en) * 2009-12-15 2012-07-03 Sandisk 3D Llc Program cycle skip
US8116139B2 (en) * 2010-01-29 2012-02-14 Sandisk Technologies Inc. Bit line stability detection
US8503238B1 (en) * 2010-07-21 2013-08-06 Sk Hynix Memory Solutions Inc. Error recovery for flash memory
KR20120109848A (ko) * 2011-03-28 2012-10-09 에스케이하이닉스 주식회사 반도체 메모리 시스템 및 그의 데이터 리드 방법
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
US8750042B2 (en) 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US8630118B2 (en) 2011-11-09 2014-01-14 Sandisk Technologies Inc. Defective word line detection
US8842476B2 (en) 2011-11-09 2014-09-23 Sandisk Technologies Inc. Erratic program detection for non-volatile storage
US8730722B2 (en) 2012-03-02 2014-05-20 Sandisk Technologies Inc. Saving of data in cases of word-line to word-line short in memory arrays
KR101996004B1 (ko) * 2012-05-29 2019-07-03 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법 및 그것의 메모리 시스템
US9135989B2 (en) 2012-09-06 2015-09-15 Sandisk Technologies Inc. Write data preservation for non-volatile storage
US20140198576A1 (en) * 2013-01-16 2014-07-17 Macronix International Co, Ltd. Programming technique for reducing program disturb in stacked memory structures
US8913428B2 (en) * 2013-01-25 2014-12-16 Sandisk Technologies Inc. Programming non-volatile storage system with multiple memory die
US9053810B2 (en) * 2013-03-08 2015-06-09 Sandisk Technologies Inc. Defect or program disturb detection with full data recovery capability
US20140359202A1 (en) * 2013-05-31 2014-12-04 Western Digital Technologies, Inc. Reading voltage calculation in solid-state storage devices
KR102163872B1 (ko) 2013-08-09 2020-10-13 삼성전자 주식회사 멀티 비트 메모리 장치, 그것의 온칩 버퍼 프로그램 방법 및 멀티 비트 메모리 시스템
US9165683B2 (en) 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
US8908441B1 (en) * 2013-10-15 2014-12-09 Sandisk Technologies Inc. Double verify method in multi-pass programming to suppress read noise
US9230689B2 (en) * 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US8819337B1 (en) * 2014-04-16 2014-08-26 Sandisk Technologies Inc. Storage module and method for determining whether to back-up a previously-written lower page of data before writing an upper page of data
US9460809B2 (en) 2014-07-10 2016-10-04 Sandisk Technologies Llc AC stress mode to screen out word line to word line shorts
US9484086B2 (en) 2014-07-10 2016-11-01 Sandisk Technologies Llc Determination of word line to local source line shorts
US9443612B2 (en) 2014-07-10 2016-09-13 Sandisk Technologies Llc Determination of bit line to low voltage signal shorts
US9514835B2 (en) 2014-07-10 2016-12-06 Sandisk Technologies Llc Determination of word line to word line shorts between adjacent blocks
US9240249B1 (en) 2014-09-02 2016-01-19 Sandisk Technologies Inc. AC stress methods to screen out bit line defects
US9202593B1 (en) 2014-09-02 2015-12-01 Sandisk Technologies Inc. Techniques for detecting broken word lines in non-volatile memories
KR102290448B1 (ko) 2014-09-04 2021-08-19 삼성전자주식회사 불휘발성 메모리 및 불휘발성 메모리의 동작 방법
US9449694B2 (en) 2014-09-04 2016-09-20 Sandisk Technologies Llc Non-volatile memory with multi-word line select for defect detection operations
US9659666B2 (en) 2015-08-31 2017-05-23 Sandisk Technologies Llc Dynamic memory recovery at the sub-block level
US9548124B1 (en) 2015-10-14 2017-01-17 Sandisk Technologies Llc Word line dependent programming in a memory device
US9460799B1 (en) * 2015-11-24 2016-10-04 Sandisk Technologies Llc Recovery of partially programmed block in non-volatile memory
KR20180025357A (ko) * 2016-08-29 2018-03-09 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10580495B2 (en) * 2017-12-21 2020-03-03 Western Digital Technologies, Inc. Partial program operation of memory wordline
CN110471788B (zh) * 2018-05-08 2024-03-15 美光科技公司 异步功率损耗影响的数据结构
US10541038B2 (en) * 2018-06-12 2020-01-21 Sandisk Technologies Llc Subgroup selection for verification
KR20210087540A (ko) 2018-12-10 2021-07-12 양쯔 메모리 테크놀로지스 씨오., 엘티디. 플래시 메모리의 멀티 패스 프로그래밍을 위한 사전 판독 기술
US11061762B2 (en) * 2019-02-04 2021-07-13 Intel Corporation Memory programming techniques
KR20210066899A (ko) 2019-02-20 2021-06-07 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 시스템을 프로그래밍하기 위한 방법
CN110531937B (zh) * 2019-08-30 2023-01-06 四川效率源信息安全技术股份有限公司 一种针对主控芯片的数据重组方法
KR20240135689A (ko) * 2020-02-20 2024-09-11 양쯔 메모리 테크놀로지스 씨오., 엘티디. 다중 평면 메모리 소자를 프로그래밍하는 방법
CN113821156A (zh) * 2020-06-18 2021-12-21 桑迪士克科技有限责任公司 前瞻识别潜在不可校正的误差校正存储器单元和现场对策
KR20220001137A (ko) * 2020-06-29 2022-01-05 에스케이하이닉스 주식회사 메모리 시스템, 메모리 장치 및 메모리 장치의 동작 방법
US11894062B2 (en) 2021-08-10 2024-02-06 Sandisk Technologies Llc Semi-circle drain side select gate maintenance by selective semi-circle dummy word line program
CN114356221B (zh) * 2021-12-07 2023-10-20 广州致存科技有限责任公司 数据写入方法、存储设备和存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4090570B2 (ja) * 1998-06-02 2008-05-28 株式会社ルネサステクノロジ 半導体装置、データ処理システム及び不揮発性メモリセルの閾値変更方法
JP2002197878A (ja) * 2000-12-26 2002-07-12 Hitachi Ltd 半導体装置及びデータ処理システム
JP3875570B2 (ja) * 2001-02-20 2007-01-31 株式会社東芝 半導体記憶装置のデータ書き込み方法及び半導体記憶装置
US7392436B2 (en) * 2003-05-08 2008-06-24 Micron Technology, Inc. Program failure recovery
JP2005353242A (ja) * 2004-06-14 2005-12-22 Toshiba Corp 不揮発性半導体記憶装置及びそのデータ書き込み方法
JP4410188B2 (ja) * 2004-11-12 2010-02-03 株式会社東芝 半導体記憶装置のデータ書き込み方法
US7420847B2 (en) * 2004-12-14 2008-09-02 Sandisk Corporation Multi-state memory having data recovery after program fail
US7120051B2 (en) * 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7158416B2 (en) * 2005-03-15 2007-01-02 Infineon Technologies Flash Gmbh & Co. Kg Method for operating a flash memory device
US7206230B2 (en) * 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
ATE500591T1 (de) * 2005-12-29 2011-03-15 Sandisk Corp Fortgesetzte verifikation bei schreiboperationen in nichtflüchtigen speicher
US7307887B2 (en) * 2005-12-29 2007-12-11 Sandisk Corporation Continued verification in non-volatile memory write operations
US7400532B2 (en) * 2006-02-16 2008-07-15 Micron Technology, Inc. Programming method to reduce gate coupling interference for non-volatile memory
JP5142478B2 (ja) * 2006-04-13 2013-02-13 株式会社東芝 半導体記憶装置

Also Published As

Publication number Publication date
CN102754165B (zh) 2015-04-15
KR20130009755A (ko) 2013-01-23
KR101854927B1 (ko) 2018-05-04
US8248850B2 (en) 2012-08-21
CN102754165A (zh) 2012-10-24
US20110182121A1 (en) 2011-07-28
EP2529375A1 (en) 2012-12-05
TW201203268A (en) 2012-01-16
JP2013518359A (ja) 2013-05-20
WO2011094419A1 (en) 2011-08-04
EP2529375B1 (en) 2016-11-02

Similar Documents

Publication Publication Date Title
JP5735543B2 (ja) データ状態に固有の失敗の計数に基づく不揮発性メモリのデータ復旧
US20230282276A1 (en) Semiconductor memory device and memory system
US9053810B2 (en) Defect or program disturb detection with full data recovery capability
US10957397B2 (en) Non-volatile memory device, storage device, and programming method thereof for performing an erase detect operation
US8839074B2 (en) On chip data recovery for non-volatile storage
JP5650226B2 (ja) 不揮発性記憶装置における危険状態データの識別
US8942043B2 (en) Non-volatile storage with process that reduces read disturb on end wordlines
JP5529975B2 (ja) 少ない検証動作回数での不揮発性メモリのプログラミング
KR102192910B1 (ko) 반도체 장치, 메모리 시스템 및 이의 동작 방법
US8971128B2 (en) Adaptive initial program voltage for non-volatile memory
US9135989B2 (en) Write data preservation for non-volatile storage
US9183070B2 (en) Resting blocks of memory cells in response to the blocks being deemed to fail
US8842476B2 (en) Erratic program detection for non-volatile storage
US8880964B2 (en) Block and page level bad bit line and bits screening methods for program algorithm
US8385129B2 (en) Semiconductor memory device and control method thereof
KR101184830B1 (ko) 반도체 메모리 장치 및 이의 동작 방법
US20130314989A1 (en) Memory system
KR20110120469A (ko) 반도체 메모리 장치의 동작 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140106

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140729

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141029

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150331

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150416

R150 Certificate of patent or registration of utility model

Ref document number: 5735543

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250