JP2012507105A - 高分解能可変初期プログラミングパルスを用いた不揮発性メモリのプログラミング - Google Patents

高分解能可変初期プログラミングパルスを用いた不揮発性メモリのプログラミング Download PDF

Info

Publication number
JP2012507105A
JP2012507105A JP2011533215A JP2011533215A JP2012507105A JP 2012507105 A JP2012507105 A JP 2012507105A JP 2011533215 A JP2011533215 A JP 2011533215A JP 2011533215 A JP2011533215 A JP 2011533215A JP 2012507105 A JP2012507105 A JP 2012507105A
Authority
JP
Japan
Prior art keywords
programming
program
pulse
result
volatile 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.)
Granted
Application number
JP2011533215A
Other languages
English (en)
Other versions
JP5460721B2 (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 Corp
Original Assignee
SanDisk Corp
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 Corp filed Critical SanDisk Corp
Publication of JP2012507105A publication Critical patent/JP2012507105A/ja
Application granted granted Critical
Publication of JP5460721B2 publication Critical patent/JP5460721B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/10Programming or data input circuits
    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • 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/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3486Circuits or methods to prevent overprogramming of nonvolatile memory cells, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • 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/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Non-Volatile Memory (AREA)
  • Semiconductor Memories (AREA)

Abstract

多重プログラミング処理が複数の不揮発性記憶素子に対して実施される。プログラミング処理の各々は、プログラムパルスを用いて不揮発性記憶素子の少なくとも部分集合をそれぞれの組の目標状態にプログラムする働きをする。プログラミング処理の少なくとも部分集合は、それぞれのプログラミング処理に対する特定の結果を実現することに関連するプログラムパルスを識別することと、不揮発性記憶素子に関する1つまたは複数の代替結果の1つまたは複数の検出処理を実施することとを含む。所定数を超える不揮発性記憶素子が第1の代替結果を実現したと1つまたは複数の検出処理が判定した場合に、後続のプログラミング処理が第1の代替結果とプログラムパルスの識別とに基づいて調整される。所要数未満の不揮発性記憶素子が代替結果のいずれかを実現したと1つまたは複数の検出処理が判定した場合に、後続のプログラミング処理がプログラムパルスの識別に基づいて調整される。
【選択図】図31

Description

(関連出願の相互参照)
本出願は、Gerrit Jan Heminkによって2008年10月24日に出願され、参照によって本明細書に組み入れられる米国仮出願第61/108,124号明細書「Programming Non−volatile Memory With Variable Initial Programming Pulse」の便益を主張するものである。
本発明は不揮発性記憶装置に関する。
半導体メモリは、様々な電子デバイスで使われることが一般的になってきている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピュータ、非モバイルコンピュータ、及び他の装置に使用されている。電気的消去・再プログラム可能型読取専用メモリ(EEPROM)とフラッシュメモリは、最も普及している不揮発性半導体メモリである。
EEPROMとフラッシュメモリは、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されているフローティングゲートを採用している。フローティングゲートは、ソース領域とドレイン領域の間に配置されている。フローティングゲートの上に、そのフローティングゲートから絶縁されている制御ゲートが設けられている。トランジスタの閾値電圧は、フローティングゲート上に保持されている電荷量によって制御される。 即ち、そのソースとドレインの間の導通を可能にすべくトランジスタをオンするために制御ゲートに印加すべき電圧の最小量は、そのフローティングゲート上の電荷量レベルにより制御される。
EEPROMやフラッシュメモリデバイスにプログラムを行う場合、典型的には、ビットラインが接地されるとともに、制御ゲートにプログラム電圧が加えられる。チャネルからの電子がフローティングゲートへ注入される。フローティングゲートに電子が蓄積されると、フローティングゲートが負値に帯電し、メモリセルの閾値電圧が上昇し、メモリセルがプログラムされた状態となる。プログラムに関するさらなる情報は、「Source Side Self Boosting Technique for Non-Volatile Memory」と題した米国特許第6,859,397号、および、「Detecting Over Programmed Memory」と題した米国特許第6,917,542号に開示されている。これらの両方の特許文献の内容は、その全体を参照することにより本明細書に組み込まれる。
2種類の範囲の電荷量を保持するフローティングゲートを有するEEPROMとフラッシュメモリが存在する。それにより、メモリセルは、データ「1」及び「0」に対応する消去状態とプログラム状態の2種類の状態の間で、プログラム/消去が行われる。このようなデバイスは、バイナリデバイスと呼ばれる。
マルチステートフラッシュメモリセルは、複数個の異なった許容閾値電圧範囲を特定することによって、実現される。各異なった許容閾値電圧範囲は、1群のデータビットのための予め決められた値に対応する。メモリセルにプログラムされるデータとセルの閾値電圧レベルの間の具体的な関係は、セルに採用されるデータ符号化方式によって決まる。例えば、両方ともその全体を参照することにより本明細書に組み込まれる米国特許第6,222,762号及び米国特許出願公開公報第2004/0255090号は、マルチステートフラッシュメモリセルのための様々なデータ符号化方式を説明している。
いくつかの実施形態では、制御ゲートに印加されるプログラム電圧は、パルス毎に所定のステップサイズ(例えば、0.2V、0.3V、0.4Vなど)だけ電圧が増加される一連のパルスを含む。プログラム電圧の大きさの選定は譲歩される。電圧が高過ぎるとメモリセルによってはオーバープログラムされることになるが、大きさが低過ぎるとプログラミング時間が長くなる。典型的に、不揮発性メモリのユーザはメモリが素早くプログラムされることを望んでいる。
先行技術のデバイスでは、多用されていない新しいデバイス(フレッシュデバイスとも呼ばれる)と頻繁に使用されるデバイスとに同じプログラム信号が使用される。しかしながら、不揮発性メモリデバイスは多くのプログラミングサイクルを経るにつれて、電荷がフローティングゲートとチャネル領域の間の絶縁体に捕捉される。この電荷の捕捉によって閾値電圧が高いレベルに変化し、これによってメモリセルをより素早くプログラムすることが可能になる。プログラム電圧の大きさを高く設定し過ぎると、フレッシュデバイスのオーバープログラミングが生じないにしても、そのデバイスはより頻繁に使用されるようになるにつれてオーバープログラミングを受ける可能性がある。それゆえ、新しいデバイスは、古くなるにつれてオーバープログラミングを回避するためにそれらのプログラム電圧が十分に低く設定されることになる。プログラム電圧の大きさのこのような低減によって、新しいデバイスがデータをプログラムする速度が低下することになる。
本明細書で説明する技術は、オーバープログラミングのリスクを軽減すると同時にプログラミングの速度を高めようとするものである。
一実施形態は、複数個の不揮発性記憶素子に対するマルチステージプログラミング処理の一段階を実施することを含む。マルチステージプログラミング処理は、複数個の不揮発性記憶素子を1個以上の最終目標状態にプログラムする。一段階は、第1の組のプログラムパルスを用いて、不揮発性記憶素子を1個以上の第1の暫定的な目標状態にプログラムする工程を含む。一段階を実施する工程は、特定の結果を実現することに関連するプログラムパルスを識別する工程と、不揮発性記憶素子に関する1個以上の代替結果に対して1個以上の検出処理を実施する工程と、所定数を超える不揮発性記憶素子が第1の代替結果を実現したと検出処理によって判定される場合に、識別されたプログラムパルスと1以上の代替結果のうちの第1の代替結果と、に基づく示度(indication)を記憶する工程と、十分な数の不揮発性記憶素子が1個以上の代替結果を実現したと検出処理によって判定されない場合に、識別されたプログラムパルスに基づく示度を記憶する工程と、を含む。当該方法は、記憶された示度に基づいて設定された大きさの初期パルスを有する第2の組のプログラムパルスを印加することを含む、マルチステージプログラミング処理の新たな段階を実施することをさらに含む。
一実施形態は、複数個の不揮発性記憶素子に対して、複数のプログラミング処理を実施する工程を含む。プログラミング処理のそれぞれは、プログラムパルスを用いて、不揮発性記憶素子の少なくとも部分集合を、それぞれの組の目標状態にプログラムする動作をする。プログラミング処理の少なくとも部分集合では、当該方法は、それぞれのプログラミング処理に対して特定の結果を実現することに関連するプログラムパルスを識別する工程と、不揮発性記憶素子に関する1個以上の代替結果の1個以上の検出処理を実施する工程と、所定数を超える不揮発性記憶素子が第1の代替結果を実現したと1個以上の検出処理によって判定された場合に、1個以上の代替結果のうちの第1の代替結果と不揮発性記憶素子に関する後続のプログラミング処理のプログラミングを調整するためのプログラムパルスの識別とを使用する工程と、所要数未満の不揮発性記憶素子が代替結果のいずれかを実現したと1個以上の検出処理によって判定された場合に、不揮発性記憶素子に関する後続のプログラミング処理のプログラミングを調整するためのプログラムパルスの識別を使用することとを含む。
一実施形態は、複数個の不揮発性記憶素子に対するマルチステージプログラミング処理の第1の段階を実施する工程を含む。マルチステージプログラミング処理は、複数個の不揮発性記憶素子を1個以上の最終目標状態にプログラムする。第1の段階は、不揮発性記憶素子の少なくとも部分集合を、1個以上の第1の暫定的な目標状態にプログラムする。第1段階を実施する工程は、プログラミングパルス間が第1の増分である第1の組のプログラミングパルスを、不揮発性記憶素子に印加する工程と、不揮発性記憶素子のうちの少なくとも所定数の部分集合が、第1の組のプログラミングパルスのn番目のプログラミングパルスに応答して、第1の段階の中間状態(第1の段階の中間状態は1個以上の第1の段階の目標状態と異なる)に達していることを判定する工程と、不揮発性記憶素子のうちの少なくとも所定数の部分集合が中間状態に達しているとの判定に応答して、不揮発性記憶素子の部分集合に対する代替的状態において検出処理を実施する工程と、所定数を超える不揮発性記憶素子が代替的状態にあることが検出処理によって判明した場合に、代替的状態に基づく示度を記憶する工程と、所定数を超える不揮発性記憶素子が代替的状態にあることが検出処理から判明しなかった場合に中間状態に基づく示度を記憶する工程と、不揮発性記憶素子の少なくとも所定数の部分集合が第1段階に関する中間状態に達しているとの判定に応答して、プログラムパルス間が第2の増分(プログラミングパルス間の第2の増分はプログラミングパルス間の第1の増分よりも小さい)であるように第1の組のプログラミングパルスを変更する工程と、十分な数の不揮発性記憶素子が、それぞれ1個以上の第1段階の目標状態に達したときに、第1の段階を終了する工程とを含む。当該方法は、第2の組のプログラミングパルスを複数の不揮発性記憶素子に印加する工程を含むマルチステージプログラミング処理の新たな段階を実施する工程をさらに含む。第2の組のプログラミングパルスは、記憶された示度に基づいて設定された大きさの初期パルスを有する。
一実施形態は、複数個の不揮発性記憶素子と、複数個の不揮発性記憶素子と通信する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の組のプログラミングパルスを印加することを含むマルチステージプログラミング処理の新たな段階を実施する。
NANDストリングの平面図である。 NANDストリングの等価回路図である。 不揮発性メモリシステムのブロック図である。 メモリアレイの一実施形態を示すブロック図である。 センスブロックの一実施形態を示すブロック図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 閾値電圧区分の組の一例とプログラミング処理の一例の図である。 不揮発性記憶装置を動作させる処理の一実施形態を表すフローチャートである。 不揮発性記憶装置をプログラムする処理の一実施形態を表すフローチャートである。 不揮発性記憶装置をプログラムする処理の一実施形態を表すフローチャートである。 プログラミングパルスの組の一例の図である。 プログラミングパルスの組の一例の図である。 プログラミング処理を実施する実施形態を表すフローチャートである。 プログラミング処理を実施する実施形態を表すフローチャートである。 プログラミング処理を実施する実施形態を表すフローチャートである。 プログラミング処理を実施する実施形態を表すフローチャートである。 プログラミング処理を実施する実施形態を表すフローチャートである。 プログラミング処理を実施する実施形態を表すフローチャートである。 プログラミング処理を実施する実施形態を表すフローチャートである。 プログラミング処理を実施する実施形態を表すフローチャートである。 プログラミング処理を実施する実施形態を表すフローチャートである。 粗/密プログラミング方式を説明するグラフである。 粗/密プログラミング方式を説明するグラフである。 粗/密プログラミング方式を説明するグラフである。 粗/密プログラミング方式を説明するグラフである。 粗/密プログラミング方式を説明するグラフである。 粗/密プログラミング方式を説明するグラフである。 不揮発性記憶装置をプログラムする処理の一実施形態を表すフローチャートである。 閾値電圧区分を示すグラフである。 閾値電圧区分を示すグラフである 閾値電圧区分を示すグラフである 不揮発性記憶素子のグループに関する情報を検出する処理の一実施形態を表すフローチャートである。 不揮発性記憶素子のグループに関する情報を検出する処理の一実施形態を表すフローチャートである。
フラッシュメモリシステムの一例は、NAND構造を用いており、2つの選択ゲートの間に複数のトランジスタの直列接続を含んでいる。直列に接続されたトランジスタと選択ゲートは、NANDストリングと呼ばれる。図1は、1つのNANDストリングを示す平面図である。図2は、その等価回路である。図1と図2に示すNANDストリングは、第1(又はドレイン側)選択ゲート120と第2(又はソース側)選択ゲート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ストリングが使用される。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フラッシュメモリに加えて、不揮発性記憶装置の他のタイプもまた用いることができる。例えば、不揮発性装置は、電荷を蓄える誘電体層を用いたメモリセルによって製造されてもよい。前述した導電性のフローティングゲート素子の代わりに、誘電体層が用いられる。誘電体記憶素子を用いたメモリ装置が、「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値の状態を、別々に読み出すことで行われる。
他のタイプのメモリ素子も使用できる。MONOS又はTANOS型の構成あるいはナノ結晶に基づく不揮発性記憶装置も利用できる。他のタイプのメモリ素子も使用できる。
図3は、メモリセル(例えば、NANDマルチステートフラッシュメモリなど)のページ(または他のユニット)に並列に読み出しおよびプログラムを行うリード/ライト回路を有する記憶デバイス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は、列デコーダ242A及び242Bと同様に、アドレスラインを、行デコーダ240A及び240Bに供給する。列デコーダ242A及び242Bは、データI/Oで記される信号ラインを介して、コントローラ244に、データを供給する。
一実施形態では、制御回路220、電力制御回路226、デコーダ回路224、ステートマシン回路222、デコーダ回路242A、デコーダ回路242B、デコーダ回路240A、デコーダ回路240B、リード/ライト回路230A、リード/ライト回路230B、及び/又はコントローラ244の一つ又は幾つかの組合せは、1個の管理回路、或いは複数の管理回路群と称されることがある。1個以上の管理回路は、本明細書で記述する処理を実行する。
図4は、メモリセルアレイ200の例示的な構造を示す。一実施形態においては、メモリセルのアレイは、数多くのブロックに分割される(例えば、ブロック0−1023又はその他の量など)。フラッシュEEPROMシステムに一般的であるように、ブロックは消去の単位である。すなわち、各ブロックは、共に消去される最小数のメモリセルを含む。その他の消去の単位を用いた装置も使用可能である。
1個のブロックは、ビットライン(例えばビットラインBL0−BL69,623)およびワードライン(WL0、WL1、WL2、WL3)を介してアクセスされるNANDストリングのセットを備えている。図4は、直列接続されることでNANDストリングを形成している、4つのメモリセルを示している。各々のNANDストリングに4つのセルが含まれているが、4個よりも少ない、或いは、4個よりも多いメモリセルを有していてよい(例えば、NANDストリングによっては、16個、32個、64個、128個やその他の数のメモリセルを有していてもよい)。各NANDストリングの一端は、(選択ラインSGDに接続されている)ドレイン選択ゲートを介して対応するビットラインに接続されており、他端は、(選択ラインSGSに接続されている)ソース選択ゲートを介してソースラインに接続されている。
各ブロックは、通常、複数のページに分割される。一実施形態においては、ページはプログラムの単位である。その他のプログラムの単位も使用可能である。通常、1個以上のページのデータが、1列のメモリセルに記憶される。例えば、データの1個以上のページが、共通ワードラインに接続されたメモリセルに記憶されてもよい。1個のページは、1個以上のセクタを記憶できる。1個のセクタは、ユーザデータとオーバヘッドデータ(システムデータとも呼ばれる)を含む。オーバヘッドデータは、通常、セクタのユーザデータから算出される誤り訂正符号(Error Correction Code:ECC)とヘッダ情報を含む。コントローラ(または他の構成要素)の一部が、データがアレイにプログラムされているときにECCを計算し、データがアレイから読み出されているときにECCのチェックも行う。代わりに、ECC及び/又は他のオーバヘッドデータはそれらが関係するユーザデータとは異なるページに記憶され、または異なるブロックに記憶されることがある。ユーザデータのセクタは通常、磁気ディスクドライブ内のセクタサイズに相当する512バイトである。例えば8ページから32、64、128、或いはそれ以上のページまでの多数のページが1ブロックを形成する。異なるサイズのブロックと配置も採用することができる。さらに、1個のブロックは、69,624個以上又は以下のビットラインを有することができる。
図5は、センスモジュール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は(電力制御モジュール226を用いて)、アドレス指定されたセルへの種々の制御ゲート電圧の供給を制御する。メモリに用意された様々なメモリ状態に対応する様々な既定制御ゲート電圧を受けるなかで、センスモジュール480は、これらの電圧の1つに遷移し、バス472を介してセンスモジュール480からプロセッサ492に出力が提供される。その時点で、プロセッサ492は、センスモジュールの遷移イベントと、ステートマシンから入力ライン493を介して加えられた制御ゲート電圧についての情報によって、結果としてのメモリ状態を特定する。それから、プロセッサは、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ群494に格納する。コア部の別の実施形態では、ビットラインラッチ482は、センスモジュール480の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。
当然のことながら、いくつかの実装形態では複数のプロセッサ492を有することができる。一実施形態では、各プロセッサ492は、出力ライン(図5には示されていない)を有し、各出力ラインは共にワイヤードOR(配線論理和)接続される。いくつかの実施形態では、出力ラインは、ワイヤードORラインに接続される前段階で反転される。この構成は、ワイヤードORの結果を受け取るステートマシンが、プログラムされる全てのビットがいつ所望のレベルに到達したかを判断できるので、プログラム処理の完了時点を判定するプログラム検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理「0」がワイヤードORラインに送られる(又はデータ「1」が反転される)。全てのビットがデータ「0」を出力すると(又はデータ「1」が反転されると)、ステートマシンはプログラム処理の完了を知る。各プロセッサが8個のセンスモジュールと通信する実施形態では、(いくつかの実施形態において)ステートマシンはワイヤードORラインを8回読み出す必要があってもよいし、あるいは、協働するビットラインの結果を蓄積するための論理をプロセッサ492に追加し、ステートマシンがワイヤードORラインを一度だけ読み出せば良いようにしてもよい。
データラッチスタック494は、センスモジュールに対応するデータラッチのスタックを有する。一実施形態では、センスモジュール480毎に3個(或いは4個或いはその他の数の)データラッチが存在する。一実施形態では、ラッチは夫々1ビットである。
プログラム又は検証処理の間、プログラムされるべきデータは、データバス420から1組のデータラッチ494内に記憶される。検証処理の間、プロセッサ492は、所望のメモリ状態に対する検証メモリ状態を監視する。その2つが一致したとき、プロセッサ492は、プログラム禁止を指定する状態にビットラインを引き上げる(プルする)ようにビットラインラッチ482を設定する。これにより、たとえプログラムパルスがその制御ゲートに影響しても、ビットラインに接続したメモリセルがさらにプログラムされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ482をロードし、センス回路が検証処理中にそれに禁止値を設定する。
いくつかの実装形態では、(必須ではないが)データラッチは、シフトレジスタとして実装され、内部に記憶されたパラレルデータを、データバス420用にシリアルデータに変換したり、その逆を行ったりする。好適な一実施形態では、メモリセルのリード/ライトブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、リード/ライトモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するようにリード/ライトモジュールのバンクを構成し、一群のデータラッチがあたかもリード/ライトブロック全体のシフトレジスタの一部であるかのようにしてもよい。
読み出し動作やセンスアンプについてのさらなる情報は次の文献に記載されている。(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個の特許文献の全ては、その全体を参照することにより本明細書に組み込まれる。
成功したプログラミング処理(検証を含む)の最後に、メモリセルの閾値電圧は、適宜プログラムされたメモリセルに関する閾値電圧の1個以上の区分内、あるいは消去されたメモリセルに関する閾値電圧の区分内にあるべきである。図6は、各メモリセルが2ビットのデータを記憶するときのメモリセルアレイの閾値電圧区分の例(データ状態に対応する)示す。しかしながら、他の実施形態では、メモリセル当たり概ね2ビットのデータ(例えば、メモリセル当たり3または4以上のビットのデータ)を使用してもよい。
図6は、消去されたメモリセルに関する第1の閾値電圧区分Eを示す。プログラムされたメモリセルに関する3つの閾値電圧区分A、B、およびCも示される。一実施形態では、E区分における閾値電圧は負であり、A、B,およびC区分における閾値電圧は正である。図6の明確な各閾値電圧区分は、1組のデータビットの所定値に対応する。メモリセルにプログラムされたデータとセルの閾値電圧レベルとの具体的な関係は、セルに採用されるデータ符号化方式に依存する。例えば、米国特許第6,222,762号明細書および米国特許出願公開第2004/0255090号明細書は、いずれもその全体が参照によって本明細書に組み込まれ、マルチステートフラッシュメモリセルに対する様々なデータ符号化方式を説明している。一実施形態では、フローティングゲートの閾値電圧が誤ってその近傍の物理状態にシフトした場合に、1ビットしか影響を受けないように、データ値がグレーコード割当を用いて閾値電圧区分に割り当てられる。一例では、「11」を閾値電圧区分E(状態E)に割り当て、「10」を閾値電圧区分A(A状態)に割り当て、「00」を閾値電圧区分B(B状態)に割り当て、「01」を閾値電圧区分C(C状態)に割り当てる。しかしながら、他の実施形態では、グレーコードは使用されない。図6は4つの状態を示しているが、本発明は概ね4つの状態を含むマルチステート構造など、他のマルチステート構造とともにも使用されうる。
また、図6は、メモリセルからデータを読み出す3つの読出し基準電圧Vra、Vrb、およびVrcを示す。所与のメモリセルの閾値電圧がVra、Vrb、およびVrcより上であるか下であるかを試験することによって、システムはメモリセルがどの状態にあるかを判定しうる。また、図6は、3つの検証基準電圧Vva、Vvb、およびVvcを示す。メモリセルを状態Aにプログラムするとき、システムは、これらのメモリセルがVvaよりも大きい閾値電圧を有するかVvaに等しい閾値電圧を有するかを試験することになる。メモリセルを状態Bにプログラムするとき、システムはこれらのメモリセルがVvbよりも大きい閾値電圧を有するかVvbに等しい閾値電圧を有するかを試験することになる。メモリセルを状態Cにプログラムするとき、システムはこれらのメモリセルがVvcよりも大きい閾値電圧を有するかVvcに等しい閾値電圧を有するかを試験することになる。
フルシーケンスプログラミングとして知られている一実施形態では、メモリセルは消去された状態Eからプログラムされた状態A、B、またはCのいずれかに直接にプログラムされうる。例えば、メモリセル群内のすべてのメモリセルが消去された状態Eになるように、プログラム対象のメモリセル群が最初に消去されてもよい。次いで、メモリセルを状態A、B、またはCに直接プログラムするためにプログラミング処理が使用される。いくつかのメモリセルが状態Eから状態Aにプログラムされる間に、他のメモリセルが状態Eから状態Bにおよび/または状態Eから状態Cにプログラムされている。
図7は、2つの異なるページ、すなわち、下位ページおよび上位ページに対してデータを記憶するマルチステートメモリセルをプログラムする二段階法の一例を示す。状態E(11)、状態A(10)、状態B(00)、および状態C(01)の4つの状態が示される。状態Eの場合、両ページが「1」を記憶する。状態Aの場合、下位ページが「0」を記憶し上位ページが「1」を記憶する。状態Bの場合、両ページが「0」を記憶する。状態Cの場合、下位ページが「1」を記憶し上位ページが「0」を記憶する。なお、特定のビットパターンが状態の各々に割り当てられているが、異なるビットパターンが割り当てられてもよい。第1のプログラミング段階では、メモリセルの閾値電圧レベルが、下位の論理ページにプログラムされるビットに従って設定される。そのビットが論理「1」であれば、それぞれのメモリセルは以前に消去されている結果として適切な状態にあるので閾値電圧は変更されない。しかしながら、プログラムされるビットが論理「0」であれば、矢印504で示されるようにセルの閾値レベルは上げられて状態Aとなる。これで第1のプログラミング段階を終了する。
第2のプログラミング段階では、メモリセルの閾値電圧レベルが、上位論理ページにプログラムされているビットに従って設定される。上位論理ページビットが論理「1」を記憶する必要がある場合は、メモリセルは下位ページビットのプログラミングに応答して状態EまたはAの1つにあるのでプログラミングが行われず、状態EおよびAの両方が「1」の上位ページビットを保持する。上位ページビットが論理「0」でなければならない場合は、閾値電圧がシフトされる。第1の段階でメモリセルが消去された状態Eに保たれると、第2の段階で、閾値電圧が矢印502で示されるように上昇して状態C内にあるようにメモリセルがプログラムされる。メモリセルが第1のプログラミング段階の結果として状態Aにプログラムされていると、閾値電圧が矢印506で示されるように上昇して状態B内にあるようにメモリセルが第2の段階でさらにプログラムされる。第2の段階の結果は、下位ページのデータを変更せずに上位ページに対して論理「0」を記憶するように指定された状態にメモリセルをプログラムすることである。
一実施形態では、ページ全体を満たすのに十分なデータが書き込まれる場合に、フルシーケンス書込みを実施するためのシステムがセットアップされうる。ページ全体に十分なデータが書き込まれなければ、プログラミング処理は、受け取られたデータで下位ページプログラミングをプログラムしうる。後続のデータが受け取られると、システムは上位ページをプログラムする。さらに別の実施形態では、システムは、下位ページをプログラムするモードで書込みを開始して、ワードラインのメモリセル全体(またはそのほとんど)を満たすのに十分なデータが続いて受け取られると、フル・シーケンスプログラミングモードに移行しうる。このような実施形態のさらなる詳細は、米国特許出願第2006/0126390号に開示されており、その全体が参照によって本明細書に組み込まれる。
図8A〜図8Cは、不揮発性メモリをプログラムする別のマルチステージプログラミング処理を表す。図8A〜図8Cの処理は、特定のメモリセルに関して、前のページの隣接するメモリセルへの書込みに続いて、特定ページに関するその特定メモリセルへの書込みによってフローティングゲート間の結合を低減する。図8A〜図8Cによって教示される処理の一実施例では、不揮発性メモリセルは、4つのデータ状態を用いて、メモリセル当たり2ビットのデータを記憶する。例えば、状態Eが消去された状態であり、状態A、B、およびCがプログラムされた状態であると仮定する。状態Eはデータ11を記憶する。状態Aはデータ01を記憶する。状態Bはデータ10を記憶する。状態Cはデータ00を記憶する。これは、両ビットが隣接する状態AとBの間で変化するので非グレーコード化の例である。物理データ状態に対するデータの他のコード化も使用されうる。各メモリセルは2つのデータページを記憶する。参照のために、これらのデータページは上位ページおよび下位ページと呼ばれるが、これらは他の標識が与えられうる。図8A〜図8Cの処理に関して状態Aを参照すると、上位ページはビット0を記憶し、下位ページはビット1を記憶する。状態Bを参照すると、上位ページはビット1を記憶し、下位ページはビット0を記憶する。状態Cを参照すると、両ページはビットデータ0を記憶する。図8A〜図8Cのプログラミング処理は2段階プログラミング処理であるが、図8A〜図8Cの処理は3段階処理、4段階処理などを実施するために使用されうる。最初の段階では、下位ページがプログラムされる。下位ページがデータ1を保つ必要がある場合は、メモリセル状態は状態Eに保たれる。データが0にプログラムされる必要がある場合は、メモリセルの電圧の閾値はメモリセルが状態B’にプログラムされるように上昇される。したがって、図8Aは、状態Eから状態B’へのメモリセルのプログラミングを示す。図8Aに示される状態B’は暫定的な状態Bであり、したがって、検証ポイントはVvbよりも低いVvb’として示される。
一実施形態では、メモリセルが状態Eから状態B’にプログラムされた後、NANDストリングにおける上記メモリセルの隣接するメモリセル(ワードラインWLn+1上の)がその下位ページに関してプログラムされることになる。隣接するメモリセルをプログラムした後、フローティングゲート間の結合現象によって、以前にプログラムされたメモリセルの見かけの閾値電圧が上昇する可能性がある。これは、状態B’に関する閾値電圧区分を図8Bの閾値電圧区分520として示される閾値電圧区分に拡大する効果を有する。閾値電圧区分のこの見かけの拡大は、上位ページをプログラムするときに修正される。
図8Cは、上位ページのプログラミング処理の図である。メモリセルが消去された状態Eにあり、かつ上位ページが1に保たれる必要がある場合、メモリセルは状態Eに保たれる。メモリセルが状態Eにあり、かつその上位ページのデータが0にプログラムされる必要がある場合、メモリセルが状態Aにあるようにメモリセルの閾値電圧が上昇される。メモリセルが中間閾値電圧区分520にあり、かつ上位ページのデータが1に保たれる必要がある場合、メモリセルは最終状態Bにプログラムされる。メモリセルが中間閾値電圧区分520にあり、かつ上位ページのデータがデータ0になる必要がある場合、メモリセルが状態Cにあるようにメモリセルの閾値電圧が上昇される。隣接するメモリセルの上位ページのプログラミングのみが所与のメモリセルの見かけの閾値電圧に影響を与えるので、図8A〜図8Cによって示される処理はフローティングゲート間の結合現象を低減する。代替的状態のコード化の例は、上位ページのデータが1であるときに区分520から状態Cに移動し、上位ページのデータが0であるときに状態Bに移動するものである。
図8A〜図8Cは4つのデータ状態と2つのデータページに関する例を示すが、図8A〜図8Cによって教示される概念は概ね4つの状態および2ページと異なるページを有する他の実施例に適用されうる。図8A〜図8Cのプログラミング処理に関するさらなる詳細は、米国特許第7,196,928号明細書に見られ、参照によって本明細書に組み入れられる。
図9A〜図9Cは、マルチステージプログラミング処理の別の例を示す。図9Aは、4つの閾値電圧区分、E、A、B、およびCを示す。閾値電圧区分Eは、消去されたメモリセルを表す。閾値電圧区分A、B、およびCは、プログラムされたメモリセルを表す。最初に、すべてのメモリセルは、閾値電圧区分Eに消去される。第1のプログラミング段階では、閾値電圧区分Cにプログラムされるはずであるメモリセルが、閾値電圧区分Cにプログラムされる。第1のプログラミング段階が、図9Bで示される。第2のプログラミング段階では、閾値電圧区分AおよびBにプログラムされる予定であるメモリセルが、図9Cで表わされるように、適切な区分にプログラムされる。
図9A〜図9Cの処理のいくつかの実施形態では、第1の段階が第1の組のメモリセルに対して実施された後、第2の段階が第1の組のメモリセルに対して実施される前に、第1の段階が第2の組のメモリセルに対して実施される。一実施例では、第1の組のメモリセルが第1のワードラインに接続され、第2の組のメモリセルが第2のワードラインに接続される。
図10A〜図10Dは、共通ワードラインに接続されたメモリセルをプログラムし、図9A〜図9Cの処理と同様に使用されうる別のマルチステートプログラミング処理を表す。図10A〜図10Dの処理の第1の段階は、図10Aで閾値電圧区分530によって示されるように、閾値電圧区分BおよびCを目標としてメモリセルを中間閾値電圧区分B’に最初にプログラムすることを含む。この第1の段階は、この後、隣接するワードラインに対して実施され、これによって隣接するフローティングゲートからの結合に基づいて中間閾値電圧区分が拡大される(図10B参照)。第2のプログラミング段階は、閾値電圧区分B’からCを目標としてメモリセルをプログラムすることを含む(図10C参照)。プログラム処理の第3の段階は、区分Eから区分Aに、さらにB’からBにメモリセルをプログラムすることを含む(図10D参照)。
図11Aおよび図11Bは、別の2段階のプログラミング処理を表す。第1の段階では、メモリセルは、消去された状態Eから暫定的な状態A、B、およびCにフルシーケンスで一斉にプログラムされる(図11A参照)。第2の段階では、暫定的な状態A*にあるメモリセルが状態Aにプログラムされ、同時に、暫定的な状態B*にあるメモリセルが状態Bにプログラムされ、暫定的な状態C*にあるメモリセルが状態Cにプログラムされる(図11B参照)。状態A、B、およびCの検証ポイントVva、Vvb、およびVvcは、暫定的な状態A*、B*、およびC*の検証ポイントよりも高い。それゆえ、第1の段階中に、第1の組のメモリセルは、最終目標閾値電圧よりも低い閾値電圧にプログラムされる。第2の段階中に、第1の組のメモリセルは、それらの閾値電圧が最終目標閾値電圧まで上昇される。一実施形態では、第1の組のメモリセルの第1段階の後、第1の組のメモリセルの第2の段階の前に、第1の段階が第1の組のメモリセルと同じワードラインあるいは第1の組のメモリセルとは異なるワードラインに接続される可能性のある第2の組のメモリセルに対して実施される。一例では、第1の段階は粗段階であり、第2の段階は密段階であり、それゆえ、暫定的な状態A*、B*、およびC*は最終目標状態A、B、およびCよりも広い場合もありうる。
図12A〜図12Dは、不揮発性メモリをプログラムする3段階処理を開示する。図12A〜図12Dの処理は、メモリセル当たり3ビットのデータを記憶する不揮発性メモリセルに対して実施される。プログラミングの前に、メモリセルのすべてが状態S0に消去される(図12A)。図12Bは、最終的にS4〜S7にプログラムされる予定であるメモリセルを、状態S4’にプログラムすることを含む第1の段階を示す。図12Cは、状態S4’から状態S4〜S7にプログラムすることを含む第2の段階を示す。一実施形態では、第1の段階と第2の段階の間に、部分的あるいは完全にプログラムされた隣接するワードラインに対して、メモリセルからの結合があるので、S4’は図2Cの場合はより広い。図12Dは、状態S0から状態S1、S2、およびS3にプログラムすることを含む第3の段階を示す。第1の組のメモリセルの段階のいずれかの間に、図12A〜図12Dの処理に従って第1の組のメモリセルをプログラムするとき、他のメモリセル(第1の組のメモリセルと同じワードライン、あるいは1つまたは複数の異なるワードラインに接続された)は完全または部分的にプログラムされうる。
図13A〜図13Dは、メモリセル当たり4ビットのデータを記憶するメモリセルをプログラムする3段階のプログラミング処理を示す。それゆえ、最終組のメモリセルは16の閾値電圧区分に分割されうる。3段階プログラミング処理の第1の段階中に(図13A〜図13B)、メモリセルは、4つの中間閾値電圧区分E2、A2、B2、およびC2のうちの1つにプログラムされる。これらの4つの中間閾値区分から、メモリセルが第2の段階中に16の区分0〜Fにプログラムされる(図13B〜図13C)。第3の段階では(図13C〜図13D)、16の区分0〜Fの各々が狭められる。第1の組のメモリセルの段階のいずれかの間に図13A〜図13Dの処理に従って、第1の組のメモリセルをプログラムするとき、他のメモリセル(第1の組のメモリセルと同じワードライン、あるいは1つまたは複数の異なるワードラインに接続された)は、完全または部分的にプログラムされうる。
図14は、図3のシステム(または他のシステム)などの不揮発性メモリを動作させる処理の一実施形態を表すフローチャートである。ステップ600において、データをプログラムするための要求が受け取られる。要求は、ホスト、別のデバイス、またはコントローラから可能である。要求は、コントローラ、制御回路、ステートマシンなどのデバイスにおいて受け取られうる。要求に応じて、コントローラ、制御回路、ステートマシンなどのデバイスは、ステップ602において、データの記憶に使用されるフラッシュメモリセルのブロックを決定する。データは、ステップ604において、前述のプログラミング処理(または他のプログラミング処理)のいずれかを用いて決定されたブロックにプログラムされる。プログラムされたデータは、ステップ606において、1回以上読み出される。各ステップ間で予測不可能な時間が経過する場合があるので、ステップ604と606の間には破線があり、ステップ606は、ステップ604に対応して実施されない。ステップ606は、データ読出し要求などの他の事象に対応して実施される。
図15は、ブロック内のメモリセルをプログラムするプログラミング処理を表すフローチャートである。図15は、図14のステップ604の一実施形態である。ステップ632では、プログラミングに先立って、メモリセルが(ブロック単位または他の単位で)消去される。一実施形態では、ソースとビットラインをフローティング状態である間に、選択されたブロックのワードラインを接地し、十分な時間pウェルを消去電圧(例えば20ボルト)にまで上昇させることによってメモリセルが消去される。それゆえ、選択されたメモリセルのトンネル酸化物層に強力な電場が加わり、典型的にファウラ−ノルドハイムトンネル効果によって、フローティングゲートの電子が基板側に放出されて、選択されたメモリセルが消去される。電子がフローティングゲートからp−ウェル領域に移動するにつれて、選択されたメモリセルの閾値電圧が低下する。消去は、メモリアレイ全体、個々のブロック、またはセルの別の単位で実施されうる。他の消去技術も採用されうる。ステップ634では、消去されたメモリセルの閾値電圧区分を狭めるために、ソフトプログラミングが実施される。いくつかのメモリセルは、消去処理の結果として、必要以上に深い消去状態にあるかもしれない。ソフトプログラミングでは、より深く消去されたメモリセルの閾値電圧を、消去された状態に対してなお有効な範囲にあるより高い閾値電圧に移動するためにプログラミングパルスを印加することができる。ステップ636では、ブロックのメモリセルが本明細書の説明のようにプログラムされる。図15の処理は、前述の様々な回路を用いて、ステートマシン、コントローラ、またはステートマシンとコントローラの組合せの指示で実施されうる。例えば、コントローラは、データをプログラムするために、ステートマシンに対して、命令およびデータを発行してもよい。それに応答して、ステートマシンは、プログラミング動作を実行するために前述の回路を動作させてもよい。
図16は、共通ワードラインに接続されたメモリセルをプログラムする処理の一実施形態を表すフローチャートである。図16は、図15のステップ636中に実施される。一実施形態では、図16の処理は、共通ワードラインに接続されたすべてのメモリセルをプログラムするために使用される。他の実施形態では、図16の処理は、共通ワードラインに接続されたメモリセルの部分集合をプログラムするために使用される。したがって、複数のワードラインを含むメモリブロックの場合、図15のステップ636は、ブロック内のメモリセルをプログラムするために各ワードラインに対して、図16の処理を1回以上実施することを含む。
一例では、メモリセルは、WL0に接続されたメモリセルをプログラムする工程と、これに続くWL1に接続されたメモリセルをプログラムする工程と、これに続くWL2に接続されたメモリセルをプログラムする工程などを備える順序に従ってプログラムされる。他の順序も採用されうる。
他の実施形態では、第1のワードラインに接続された第1の組のメモリセルは、マルチステージプログラミング処理の段階の部分集合に従い、これに続いて第2のワードラインに接続された第2の組のメモリセルは、マルチステージプログラミング処理の段階の部分集合に従い、これに続いて第1のワードラインに接続された第1の組のメモリセルは、マルチステージプログラミング処理の1個以上の新たな段階に従うなどが可能である。このような実施形態では、図16の処理は、図15のステップ636中にマルチステージプログラミング処理の各段階に対して、1組のメモリセルにつき一度実施される。
図16のステップ660では、システムは、過去のプログラミングまたはデフォルト値に基づく初期プログラミングパルスの大きさ(以下では「Vpgm_vstart」と呼ばれる)を示す記憶された識別情報を読み出す。前述のように、プログラミング処理は、各パルスの大きさが増加する1組のプログラミングパルスを印加することを含む。例えば、図17は、Vpgm_vstartによって指定された初期プログラミングパルスの大きさと、ΔVpgmによって指定されたパルス間の増分を表すステップサイズとを有する1組のプログラミングパルスを含むプログラム電圧の例を示す。第1のパルスの大きさVpgm_vstartは、ステップ660において読み出される。一実施形態では、大きさは1個以上の過去のプログラミング処理から決定される。プログラミングが実施されるのが初めてである場合には、Vpgm_vstartのデフォルト値がレジスタから読み出されうる。また、初期プログラミングパルスの大きさVpgm_vstartは、フラッシュメモリアレイ、ROM、または別の場所に記憶されうる。
図16の処理では、2つの異なるステップサイズ、ΔVpgm1およびΔVpgm2を使用する。一実施形態では、ΔVpgm1は、ΔVpgm2よりも大きい。このように、図16のプログラミング処理は、プログラミングが高速で実施されるように、より大きいステップサイズΔVpgm1から始める。所定数のメモリセルが、図16の処理のそれぞれの実施に対応して中間結果または中間状態に達すると、図16の処理の特定の実施に合わせて、目標状態にメモリセルをより正確にプログラムし続けるために、図16の処理の残りの期間では、処理は、より小さいステップサイズに切り替わる。例えば、図18は、初期プログラミングパルスの大きさVpgm_vstartを有するとともに、初期には、ΔVpgm1のステップサイズを有する1組のプログラミングパルスを含むプログラム電圧を示す。6番目のパルスの後、ステップサイズは、ΔVpgm2に変化する。一実施形態では、後述のように、ステップサイズが変化するパルスは、事前に決定されない。所定数のメモリセルが中間状態に達して、ステップサイズが変化するプログラミングパルスの値は、以後のプログラミングのために、初期プログラミングパルスの大きさVpgm_vstartを改善するために採用される。すなわち、メモリセルの現在の挙動(例えば、所定数のメモリセルが中間状態に達したときの)は、オーバープログラミングを生じることなく、プログラミング処理の速度を高めるために初期プログラミングパルスの大きさを設定すべく採用される。一実施形態では、ΔVpgm1はΔVpgm2に等しい。
図16に戻ると、ステップ662では、データがその特定のページまたはワードラインに合わせてロードされる。ステップ664では、第1のプログラムパルスの大きさは、ステップ660で読み出されたVpgm_vstartの値に設定される。さらに、プログラムステップサイズΔVpgmはΔVpgm1に設定され、プログラムカウンタPCはゼロとして初期化される。ステップ666では、第1のプログラムパルスが印加される。上で言及したように、一実施形態では、図16の処理によってプログラムされているメモリセルは、共通ワードラインに接続されており、それゆえ、それらそれぞれの制御ゲートで同じプログラミングパルスを受け取る。プログラムパルスの後、メモリセルは、ステップ668において、電圧Vvstartに対して検証される。電圧値Vvstartは、1つの(または別の数の)プログラミングパルスの後にVvstartに合格するどのセルも高速メモリセルであると考えられるように、デバイス特性によって選定される。Vvstartの閾値電圧レベルは、上で述べた中間状態の一例である。プログラムされているN個未満のメモリセルがVvstartよりも大きい閾値電圧を有する場合(ステップ670)、ステップ671において、プログラムカウンタが20未満(または別の適当な値)であるかどうかが判定される。プログラムカウンタが20未満でない場合、非常に多くの繰返しがあったことになり、プログラミング処理は失敗している。プログラムカウンタが20未満(または別の適当な値)であれば、ステップ672において、プログラム電圧はΔVpgm1だけ増分され、プログラムカウンタPCは1だけ増分される。なお、いくつかの実施形態では、より大きいステップサイズを反映するために、1以外の値でプログラムカウンタを増分することが好ましい場合もある。例えば、大きいステップサイズが小さいステップサイズの2倍である場合は、ループカウンタは2という値だけ増分されうる。ステップ672の後、処理はステップ666へ戻り次のプログラムパルスが印加される。ステップ666〜672は、少なくともN個のメモリセルがVvstartよりも大きい閾値電圧を有するまで繰り返される。一実施形態では、Nの値は15個のメモリセルでありうる。他の実施形態では、Nは15未満であることも(例えば、1または別の数)15を超えることもありうる。いくつかの実施例では、Nの適切な値を判定するために、デバイスの特性化などのシミュレーションを使用することができる。しかしながら、Nの値は、プログラムされているいずれのメモリセルよりも少ない数であるべきである。
ステップ670において、N個以上のメモリセルがVvstartよりも大きい閾値電圧を有すると判定されるとき、処理はステップ678のように進み、ステップ678では、印加されたばかりのプログラミングパルスの大きさは、レジスタ、フラッシュメモリ場所、または他の場所に記憶され、以後のプログラミングにおいて、初期プログラミングパルスの大きさVpgm_vstartとして使用されるか、あるいはこの大きさを決定するために使用される。一実施形態では、印加されたばかりのプログラミングパルスの大きさは、以後のプログラミングにおいて、初期プログラミングパルスの大きさVpgm_vstartとして使用される。別の実施形態では、以後のプログラミングにおいて、初期プログラミングパルスの大きさVpgm_vstartを決定するために、印加されたばかりのプログラミングパルスの大きさに、オフセット(正のオフセットまたは負のオフセット)が加えられる。ある実施形態では、印加されたばかりのプログラミングパルスの大きさはステップ678において記憶され、オフセットは後で印加される。他の実施形態では、オフセットは印加されたばかりのプログラミングパルスの大きさに対して使用され、結果はステップ678において記憶される。他の実施形態では、以後のプログラミングにおいて、初期プログラミングパルスVpgm_vstartに使用される値は、印加されたばかりのプログラミングパルスの大きさまたは印加されたばかりのプログラムパルスのシーケンス番号の数学関数に基づいている。前述の実施形態のすべてにおいて、以後のプログラミングにおいて、初期プログラミングパルスの大きさVpgm_vstartを決定するために、印加されたばかりのプログラミングパルスのある識別情報が使用される。図17を参照すると、6番目のプログラミングパルスの後にN個のメモリセルがVvstartを超える閾値電圧を有すると判定されると、6番目のプログラミングパルスの大きさ(V_at_vstart)またはパルスについての他の関連示度が、ステップ678においてオフセットの有無に関わらず記憶される。
ステップ680では、プログラムカウンタPCは0にリセットされ、処理はステップ692を続け、この時点で、メモリセルのすべてが、種々のプログラム状態に関する様々な目標検証レベルに対して検証される。メモリセルのすべてがそれらの指定された目標レベルに達していることが検証されると(ステップ682)、処理は完了しており、状態が合格しているものと設定される(ステップ684)。いくつかの実施形態では、すべてのメモリセルがそれらの指定された目標に達しなくてもプログラミング処理は無事に完了しうる。例えば、いくつかの実施形態では、ほとんどすべてのメモリセルがそれらの指定された目標に達すれば(例えば、せいぜい所定数のセルしかそれらの目標に達していない場合)、処理は成功している。目標に達していないメモリセルは、エラー補正を用いて読出し処理中に補正することができるが、あまりにも多くのメモリセルがそれらの目標に達しない場合は、データがメモリアレイ内の他の場所でプログラムされうる。
すべてのメモリセルが検証されない場合(多くの場合、最初のステップ692が実施されるとき)、それぞれの目標閾値電圧に達しているメモリセルは、さらなるプログラミングから除外される。一実施形態では、当技術分野で周知のように、メモリセルは、十分に大きいビットライン電圧(例えば、Vdd)を印加することによって、さらなるプログラミングから除外される。
一実施形態では、N個を超えるメモリセルがVvstartに達しており、かつ、処理がステップ670からステップ678まで続くので、ステップ670が合格すると、少なくとももう1つの新たなプログラムパルスが印加されるまではメモリセルのいずれもそれら目標レベルに達することがないように、Vvstartは十分に低く設定される。こうして、プログラムステップサイズΔVpgmは、すべてのメモリセルがプログラミングから除外される前にΔVpgm1からΔVpgm2に変更される。
すべてのメモリセルが検証されていない場合、ステップ686では、プログラムカウンタが20(または別の適当な値)未満であるかどうかが判定される。プログラムカウンタが20(または別の適当な値)以上であれば、非常に多くのステップが実施されており、処理は失敗である(ステップ694)。プログラムカウンタがなお20(または別の適当な値)未満であれば、ステップ688において、プログラム電圧がΔVpgm2だけ変更されてプログラムカウンタが1だけ増分される。ステップ690では、別のプログラムパルスが印加され、処理がステップ692に進んで、メモリセルが検証される。いくつかの実施形態では、ステップ688において、ステップサイズの相違を勘案してプログラムカウンタが1とは異なる値で増分されてもよい。なお、ΔVpgm2はΔVpgm1よりも小さいステップサイズである。それゆえ、プログラム電圧Vpgmは、ステップ690〜688の反復中のプログラム電圧Vpgmの緩やかな上昇に比べて、ステップ666〜672の反復中ははるかに速く上昇する。
一実施形態では、プログラムカウンタは、ステップ680においてリセットされない。このような実施形態では、プログラムカウンタが20を超える数未満であるかどうかを判定するために、ステップ680における試験は変更されてもよい。
一例では、図16の処理に、図6のフルシーケンスプログラミング方式が採用される。この実施形態では、VvaはVvstartとして使用されうるが、Vva未満の値もVvstartとして使用されうる。
第1の組のメモリセルに作用するマルチステージプログラム処理段階の間に、第2の組のメモリセルがあるプログラミングを受けることができるように、第1の組のメモリセルに作用するマルチステージプログラム処理がある。しかしながら、一実施形態では、メモリセル群に対して、いったん図16の処理が開始すると、他のメモリセルは、図16の処理が完了するまでプログラミングを受けない。
ステップ692の検証処理中およびステップ606の読出し処理中に、選択ワードラインは電圧に接続されており、その電圧のレベルは、関係しているメモリセルの閾値電圧がこのようなレベルに達しているかどうかを判定するために、各読出し処理(例えば、図6の読出し比較レベルVra、Vrb、およびVrcを参照されたい)または検証処理(例えば、図6の検証レベルVva、Vvb、およびVvcを参照されたい)に対して指定される。ワードライン電圧を印加した後、メモリセルが、ワードラインに印加された電圧に応答してオンになったかどうかを判定するために、メモリセルの伝導電流が測定される。一定値を超える伝導電流が測定されると、メモリセルがオンになっており、ワードラインに印加された電圧がメモリセルの閾値電圧よりも大きいものと考えられる。一定値を超える伝導電流が測定されなければ、メモリセルがオンになっておらず、ワードラインに印加された電圧がメモリセルの閾値電圧以下であると考えられる。
読出しまたは検証処理中に、メモリセルの伝導電流を測定する方法は数多くある。一例として、メモリセルの伝導電流は、センスアンプの専用キャパシタへの伝導電流の放電速度または充電速度によって測定される。別の例としては、選択されたメモリセルの伝導電流によって、メモリセルを含むNANDストリングは、対応するビットラインを放電させる(または放電させない)ことができる。ビットラインが放電されたか否かを調べるために、一定期間後に、ビットラインの電圧が測定される。なお、本明細書に記載の技術には、検証/読出しに関して、当技術分野で周知の種々の方法が利用されうる。検証/読出しに関するさらなる情報は下記の特許文献に開示されており、その全体が参照によって本明細書に組み込まれる。(1)米国特許出願公開第2004/0057287号明細書、(2)米国特許出願公開第2004/0109357号明細書、(3)米国特許出願公開第2005/0169082号明細書、および(4)米国特許出願公開第2006/0221692号明細書である。前述の消去、読出し、および検証処理は、当技術分野で周知の技術によって実施される。それゆえ、説明される詳細の多くは当業者によって変更されうる。当技術分野で周知の他の消去、読出し、および検証技術も利用されうる。
図19〜図26は、図16の処理を用いてメモリセルをプログラムする、図15のステップ636を実施するための様々な実施形態を表すフローチャートである。
図19は、前述のマルチステージプログラミング処理のいずれかを含む、マルチステージプログラミング処理(または多重プログラミング処理)を実施する実施形態を表す。図19の実施形態では、Vpgm_vstartが、マルチステージプログラミング処理の第1の段階中に更新され、同じマルチステージプログラミング処理の以後の段階では、第1の段階からVpgm_vstartが使用される。ステップ702では、図16の処理に従って実施されることを含む、マルチステージプログラミング処理の第1の段階が実施される。前述のように、図16の処理を実施することは、図16のステップ678におけるVpgm_vstartの値を更新することを含む。ステップ704では、ステップ702において更新され記憶された値である(またはこの値に基づいている)初期プログラミングパルスの大きさVpgm_vstartに使用される値を用いて、図16の処理を実施することを含む、マルチステージプログラミング処理の第2の段階が実施される。ステップ704を実施するとき、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692(または、いくつかの実施形態ではステップ680)に進むよう、図16の処理はステップ678をスキップするように修正される。このように、Vpgm_vstartはステップ704の実施中に更新されない。
ステップ706では、ステップ702において更新され記憶された値である(またはこの値に基づいている)初期プログラミングの大きさVpgm_vstartに使用される値とともに図16の処理を実施することを含む、マルチステージプログラミング処理の第3の段階が実施される。ステップ706を実施するとき、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692(または、いくつかの実施形態ではステップ680)に進むよう、図16の処理は、ステップ678をスキップするように修正される。このように、Vpgm_startは、ステップ706の実施中に更新されない。
ステップ708では、ステップ702において更新され記憶された値である(またはこの値に基づいている)初期プログラミングパルスの大きさVpgm_vstartに使用される値とともに図16の処理を実施することを含む、マルチステージプログラミング処理の第4の段階が実施される。ステップ706を実施するとき、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692(または、いくつかの実施形態ではステップ680)に進むよう、図16の処理はステップ678をスキップするように修正される。このように、Vpgm_vstartは、ステップ708の実施中に更新されない。図19のフローチャートは、マルチステージプログラミング処理の4つの段階を示す。しかしながら、図19の処理は、ステップ708のような余分なステップを追加することによって4つより多くの段階に拡大されうる。あるいは、図19の処理には、ステップ702、704、および706のみを実施する3つの段階のみのマルチステージプログラミング処理が使用されうる。図19の処理には、ステップ702および704のみを実施する2つの段階のみのマルチステージプログラミング処理が使用されうる。なお、いくつかの実施形態では、ΔVpgm2の値は、マルチステージプログラミング処理の各段階に対して変更されうる。他の実施形態では、各段階に同じΔVpgm2が使用される。同様に、ある実施形態では、ΔVpgm1の値がマルチステージプログラミング処理の各段階に対して変更されうる。他の実施形態では、各段階に同じΔVpgm2が使用される。
別の組の実施形態では、ステップ702は、図16の処理を実施することと、Vpgm_vstartに対する新たな値を記憶することとを含む。しかしながら、ステップ704、706、および708は、図16の処理よりもむしろ図19Aの処理を実施する。図19Aは、ステップ666、668、670、671、672、678、および680が実施されないことを除けば図16と同様である。ステップ660および662は、図16の場合と同じである。ステップ664aでは、ΔVpgmはΔVpgm2に設定され、この後、処理はステップ690に進み、プログラムパルスが印加される。ステップ682、684、686、688、690、692、および694は、図16の場合と同じである。この実施形態の場合、最適なVpgm_vstartの値が既に分かっているので、この値の探索に時間は費やされない。なお、いくつかの実施形態では、ΔVpgm2の値は、マルチステージプログラミング処理の各段階に対して変更されうる。他の実施形態では、各段階で同じΔVpgm2が使用される。
一例では、図19の処理には、図7のプログラミング方式が採用される。この実施形態では、VraまたはVva未満の別の値が、Vvstartとして使用されうる。図19の処理に図8のプログラミング方式が採用されるとき、Vvb’未満の値がVvstartとして使用されうる。図19の処理に図9A〜図9Cのプログラム方式が採用されるとき、Vva、Vva未満の値、またはVvc未満の値が、データをC状態にプログラムするときにVvstartとして使用されうる。図19の処理に図10A〜図10Dのプログラミング方式が採用されるとき、Vvb’未満の値が、データをB’にプログラムするときにVvstartとして使用されうる。図19の処理に図11A〜図11Bのプログラミング方式が採用されるとき、Vva*の値またはVva*未満の値が、データをA*、B*、またはC*にプログラムするときにVvstartとして使用されうる。図19の処理に図12A〜図12Eのプログラミング方式が採用されるとき、Vvs4’未満の値が、データをS4’にプログラムするときにVvstartとして使用されうる。図19の処理に図13A〜図13Dのプログラミング方式が採用されるとき、VvA2の値またはVva2未満の値が、データをA2、B2、およびC2にプログラムするときにVvstartとして使用されうる。さらに、Vvstartには他の値も使用されうる。Vvstartの上記の値は、後述の他の実施形態にも使用されうる。
図20は、前述のマルチステージプログラミング処理のいずれかを含む、マルチステージプログラミング処理(または多重プログラミング処理)を実施する別の実施形態を表す。図20の実施形態では、Vpgm_vstartは、マルチステージプログラミング処理の各段階で更新される。ステップ724では、図16の処理の実施を含む、マルチステージプログラミング処理の第1の段階が実施される。前述のように、図16の処理の実施は、図16のステップ678において、Vpgm_vstartの値を更新することを含む。ステップ726では、ステップ724において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値によって図16の処理を実施することを含む、マルチステージプログラミング処理の第2の段階が実施される。ステップ726は、図16のステップ678において、Vpgm_vstartの値を更新することを含む。ステップ728では、ステップ726において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値によって、図16の処理を実施することを含む、マルチステージプログラミング処理の第3の段階が実施される。ステップ728は、図16のステップ678において、Vpgm_vstartの値を更新することを含む。ステップ730では、ステップ728において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値によって、図16の処理を実施することを含む、マルチステージプログラミング処理の第4の段階が実施される。ステップ730は、図16のステップ678において、Vpgm_vstartの値を更新することを含む。
図20のフローチャートは、マルチステージプログラミング処理における4つの段階を示す。しかしながら、図20の処理は、ステップ730に類似する新たなステップを追加することによって4つ以上の段階に拡大されうる。あるいは、図20の処理には、ステップ724、726、および728だけを実施する3つの段階のみを有するマルチステージプログラミング処理が使用されうる。図20の処理には、ステップ724および726だけを実施する2の段階のみを有するマルチステージプログラミング処理が使用されうる。
図21は、多重プログラミング処理を実施する別の実施形態を表す。図21の実施形態では、Vpgm_vstartが第1のページをプログラムする間に更新され、以後のページのプログラミングでは、第1のページをプログラムする間に決定されたVpgm_vstartが使用される。ステップ760では、データの最初のページは、図16のステップ678においてVpgm_vstartの値を更新することを含む、図16の処理を用いてプログラムされる。ステップ762では、第2のページがステップ760において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値とともに、図16の処理を用いてプログラムされる。ステップ762を実施するとき、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692に進むよう、図16の処理は、ステップ678をスキップするように修正される。このように、Vpgm_startは、ステップ762の実施中に更新されない。ステップ764では、第3のページが、ステップ760において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値とともに、図16の処理を用いてプログラムされる。ステップ764を実施するとき、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692に進むよう、図16の処理はステップ678をスキップするように修正される。このように、Vpgm_startは、ステップ762の実施中に更新されない。より多くのデータページをプログラムする必要がある場合は、処理は、ステップ764と同様の新たなステップを続けるが、異なるデータページに対して行われる。2つのデータページのみをプログラムしている場合は、ステップ760および762のみをプログラムする必要がある。別の実施形態では、ステップ762、764、および新たなページに対することが、ステップ760からのVpgm_vstartを用いて、図19Aの処理(図16の前述の修正版ではない)に基づいてプログラムする。
図22は、多重プログラミング処理を実施する別の実施形態を表す。図19の実施形態では、各データページのプログラミング中にVpgm_vstartが更新される。ステップ782では、第1のデータページが、図16のステップ678におけるVpgm_vstartの値を更新することを含む、図16の処理を用いてプログラムされる。ステップ784では、ステップ782において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値によって、図16の処理を実施することを含む、第2のデータページがプログラムされる。ステップ784は、図16のステップ678におけるVpgm_vstartの値を更新することを含む。ステップ786では、ステップ784において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値によって、図16の処理を実施することを含む、第3のデータページがプログラムされる。ステップ786は、図16のステップ678におけるVpgm_vstartの値を更新することを含む。より多くのデータページをプログラムする必要がある場合は、処理は、ステップ786と同様の新たなステップを続けるが、異なるデータページに対して行われる。2つのデータページのみをプログラムしている場合は、ステップ782および784のみをプログラムする必要がある。
図23は、多重プログラミング処理を実施する別の実施形態を表す。図23の実施形態では、第1のワードラインに接続されたメモリセルをプログラムしている間に、Vpgm_vstartが更新され、他のワードラインのメモリセルのプログラミングでは、第1のワードラインに接続されたメモリセルをプログラムしている間に決定されたVpgm_vstartが使用される。ステップ800では、第1のワードラインに接続されたメモリセルは、図16のステップ678におけるVpgm_vstartの値を更新することを含む、図16の処理を用いてプログラムされる。ステップ802では、第2のワードラインに接続されたメモリセルは、ステップ800において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値とともに、図19Aの処理または図16の処理を用いてプログラムされる。図16の処理を用いてステップ802を実施するとき、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692に進むよう、図16の処理はステップ678をスキップするように修正される。このように、Vpgm_startは、ステップ802の実施中に更新されない。ステップ804では、第3のワードラインに接続されたメモリセルは、ステップ800において更新され記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値とともに、図19Aの処理または図16の処理を用いてプログラムされる。図16の処理を用いてステップ804を実施するとき、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692に進むよう、図16の処理はステップ678をスキップするように修正される。このように、Vpgm_startは、ステップ804の実施中に更新されない。より多くのワードラインをプログラムする必要がある場合は、処理は804と同様の新たなステップを続けるが異なるワードラインに対して行われる。2つのワードラインのみをプログラムしている場合は、ステップ800および802のみを実施する必要がある。
いくつかの実施形態では、初期プログラミングパルスの大きさを、偶数および奇数のワードラインに対して別々に決定することも可能である。この方式は、製造工程のばらつきに起因して、偶数および奇数のワードラインが異なるプログラミング特性を有する場合に有益である。
図24は、多重プログラミング処理を実施する実施形態を表す。図24の実施形態では、Vpgm_vstartは周期的に更新される。各更新の間には、Vpgm_vstartに対して、事前に決定された値が使用される。ステップ820では、メモリセルが、図16のステップ678におけるVpgm_vstartの値を更新することを含む、図16の処理を用いてプログラムされる。次にデータをプログラムする必要があるときには、システムは、決定されたVpgm_vstartの最新の値が記憶されてからの経過時間がステップ822における所定期間よりも大きいかどうかを判定する。大きくなければ、ステップ824の次のプログラム処理では、Vpgm_vstartを更新せずに、図16の処理が使用される。すなわち、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692に進むよう、図16の処理はステップ678をスキップするように修正される。あるいは、ステップ824は、図19Aの処理を実施することによって実施されうる。ステップ822において、決定されたVpgm_vstartの最新の値が記憶されてからの経過時間が、所定期間よりも大きいと判定されると、ステップ826において、次のプログラミング処理は、図16のステップ678におけるVpgm_vstartの値を更新することを含む、図16の方法を用いて実施される。
図25は、多重プログラミング処理を実施する実施形態を表す。この実施形態では、Vpgm_vstartの値は、予備的なプログラミング中に、図16の処理を実施する間に更新される。予備的なプログラミングは、ユーザデータがプログラムされないプログラミング処理である。むしろ、ダミーデータおよび/またはダミーメモリセルが、図16の処理を用いてプログラムされ、その処理中にVpgm_vstartが更新される。続いて、ユーザデータをプログラムするとき、図16の処理は、予備的なプログラミングに基づく値である(またはこの値に基づいている)Vpmg_vstartおよびユーザデータをプログラムする間に更新されないVpmg_vstartとともに使用される。例えば、ステップ840では、予備的なプログラミング(図16の処理を使用する)が実施されてVpmg_vstartが更新される。ステップ842では、ユーザデータが図16の処理と予備的なプログラミングに基づくVpmg_vstartとを用いてプログラムされる。Vpmg_vstartは、ステップ842中に更新されない。すなわち、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692に進むよう、図16の処理はステップ678をスキップするように修正される。ステップ844では、ユーザデータが図16の処理と予備的なプログラミングに基づくVpmg_vstartとを用いてプログラムされる。Vpmg_vstartは、ステップ844中に更新されない。すなわち、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692に進むよう、図16の処理はステップ678をスキップするように修正される。また、ユーザデータをプログラムする新たなステップは、Vpmg_vstartを更新せずに実施されうる。ある実施形態では、図25の処理は、ステップ842の後、停止しうる。代替実施形態では、ステップ842および844は、図16の処理に対する前述の修正でなく図19Aの処理(Vpmg_vstartを更新しないステップを含む)を実施することによって実施されうる。
なお、本明細書の記載される多重プログラミング処理を実施する方法は、1つまたは複数のマルチステージプログラミング処理の複数の段階を実施するために採用されうる。
図26は、前述のマルチステージプログラミング処理のいずれかを含む、マルチステージプログラミング処理を実施する別の実施形態を表す。図26の実施形態では、Vpmg_vstartは、マルチステージプログラミング処理の第2の段階中に更新される。ステップ846では、マルチステージプログラミング処理の第1の段階は、Vpmg_vstartを更新せずに、図16の処理を用いて実施される。すなわち、N個を超えるメモリセルがVvstartよりも大きい閾値電圧を有する場合に、処理がステップ670からステップ692に進むよう、図16の処理は、ステップ678をスキップするように修正される。あるいは、図19Aの処理が採用されうる。ステップ848では、マルチステージプログラミング処理の第2の段階がVpmg_vstartの更新することとともに、図16の処理を用いて実施される。ステップ850では、マルチステージプログラミング処理の第3の段階が、ステップ848中に実施されたステップ678で記憶された値である(またはこの値に基づいている)Vpgm_vstartに使用される値とともに、図16の処理を用いて実施される。いくつかの実施形態では、ステップ890は、Vpmg_vstartを更新することを含みうるが、他の実施形態では、Vpmg_vstartは、ステップ890において更新されない。ステップ890のような新たなステップが、図26の処理に追加されうる。
一般に、粗/密プログラミングは、2段階のプログラミングアプローチを含む。第1の段階は、粗段階であり、重点が素早いプログラミングにあり、精度に対する必要性が低い。第2の段階は、密段階であり、重点が正確なプログラミングにある。一実施形態では、粗段階は、1つまたは複数の粗検証レベルにプログラムすることを含み、密段階は、1つまたは複数の密検証レベルにプログラムすることを含み、密検証レベルは、プログラミングの目標レベルに対応する。
図11Aおよび図11B(前述の)は、2つのパスを使用する粗/密プログラミングの一例を提供する。第1のパス中に(図11A)粗段階が実施される。第2のパス中に(図11B)第2段階が実施される。図27および図28は、1つのパスのみを使用する粗/密プログラミングの実施形態を示すグラフを含み、1つのパス中に粗段階と密段階の両方が実施される。
図27A、図27B、および図27Cは、メモリセルが密モードに入らないように、粗検証レベルと目標検証レベルとの両方を、同じパルスで通過させる閾値電圧を有する高速メモリセルの挙動を示す。図28A、図28B、および図28Cは、粗モードと密モードの両方に関与する低速メモリセルを示す。図27Aおよび図28Aは、プログラムされているメモリセルの制御ゲートに印加されるプログラミングパルスVpgmを示す。なお、図27Aおよび図28Aは、グラフを読み取り易くするために、互いに隣接するプログラミングパルスを示す。しかしながら、実際には、検証処理を可能にするためにパルス間に時空間がある。図27Bおよび図28Bは、プログラムされているメモリセルのビットライン電圧Vb1を示す。図27Cおよび図28Cは、プログラムされているメモリセルの閾値電圧を示す。
図27A、27B、および27Cに関して、高速メモリセルが示される。時間t0で始まる第1のパルスに応答して、メモリセルの閾値電圧は、Vver3以上に上昇される。一実施形態では、検証レベルVver3は、図16のVvstartに対応する。t1とt2の間では、メモリセルの閾値電圧は、Vver2(粗検証レベル)とVver1(密検証レベル)の両方以上に上昇する。t2において、ビットライン電圧は、さらなるプログラミングを阻止(例えば、除外)するために、Vinhibitまで上昇される。なお、一実施形態では、Vver3は、最低のプログラムされた状態でVver2よりも0.2V〜0.3V低くてよい。
図28A〜図28Cの低速メモリセルに関して、メモリセルの閾値電圧は、t2〜t3の期間までVver3を超えて上昇しない。それゆえ、プログラミングパルスは、t3の前にΔVpgm1だけ増分する。ページ内のN個を超えるメモリセルの閾値電圧が、t3においてVver3よりも大きければ、パルスの増分値は、t3においてΔVpgm2に変更され、後続のパルスは、大きさがΔVpgm2だけ増加する。メモリセルの閾値電圧は、t3とt4の間でVver2以上に上昇し、したがって、メモリセルは、密プログラミング段階に入り、ビットラインがt4においてVs(例えば、約0.2〜0.5V、または別の適当なレベル)まで上昇する。t4とt5の間では、閾値電圧の増加が、ビットライン電圧の増加とVpgm増分値の減少とによって鈍化する。しかしながら、閾値電圧はt4とt5の間でVver1よりも確実に大きくなり、したがって、閾値電圧はその目標レベルに達してビットライン電圧はt5においてさらなるプログラミングを阻止するためにVinhibitまで上昇する。粗/密プログラミング技術は、前述の様々なプログラミング処理と併用されうる。
図29は、プログラミングの別の実施形態を提供する。図29は、処理の後半でVpgm_vstartの以後の値をより正確に決定するステップ922および924を含む、図16の処理の代替実施形態を示す。図29のステップ900〜912は、図16のステップ660〜672と同じである。図29のステップ926、928、930、938、932、および934は、図16のステップ682、684、686、694、688、および690と同じである。図29のステップ910において、N個以上のメモリセルがVvstartよりも大きい閾値電圧を有すると判定される場合は、図29の処理は、ステップ910からステップ914に進み、プログラムカウンタPCをゼロにリセットする。ステップ914の後、処理はステップ920に進む。図29のステップ920は、図16のステップ692と同じである。ステップ920においてメモリセルを検証した後、ステップ922は、少なくともM個のメモリセルがそれらの目標閾値電圧レベルに達しており、かつ、新たなプログラミングから除外されているかどうかを判定することを含む。一例では、Mが15のメモリセルに等しいこともありうる。他の実施形態では、15以上又は以下が採用されうる。少なくともM個のメモリセルが、それらの目標閾値電圧レベルに達しておらず、かつ、新たなプログラミングから除外されている場合は、処理はステップ926に進む。しかしながら、M個のメモリセルが除外されている場合は、印加されたパルスの最新の大きさが記録され、処理はステップ926に進む。なお、システムは、M個のメモリセルがそれらの目標閾値電圧レベルに達しており、かつ、新たなプログラミングから除外されていると判定される最初の時点で大きさ(または他のデータ)を記録するだけである。
ステップ924の一実施形態は、以後のプログラミングに備えて、初期プログラミングパルスVpgm_vstartの大きさとして使用するか、または、この大きさを決定するために、レジスタ、フラッシュメモリ場所、または他の場所で印加されたばかりのプログラミングパルスの大きさを記憶することを含む。一実施形態では、印加されたばかりのプログラミングパルスの大きさは、以後のプログラミングのための初期プログラミングパルスVpgm_vstartの大きさとして使用される。別の実施形態では、以後のプログラミングのための初期プログラミングパルスVpgm_vstartの大きさを決定するために、印加されたばかりのプログラミングパルスの大きさに、オフセット(正のオフセットまたは負のオフセット)が加えられる。いくつかの実施形態では、印加されたばかりのプログラミングパルスの大きさは、ステップ924において記憶され、オフセットは後で印加される。他の実施形態では、オフセットは、印加されたばかりのプログラミングパルスの大きさに用いられ、その結果が、ステップ924において記憶される。いくつかの実施形態では、印加されたばかりのプログラミングパルスの大きさまたは、印加されたばかりのパルスの識別情報は、数式などの手段を用いる以後のプログラミングに備えて、初期プログラミングパルスの大きさVpgm_vstartを決定するために使用される。
ステップ924からのパルスの大きさを使用する1つの優位性は、ΔVpgm2がΔVpgm1よりも小さい場合に、分解能がステップ924で記憶されたパルスの大きさに対して高くなることである。図29の処理は、図6〜図13に示された実施形態を含む、前述の実施形態で使用されうる。
上記の説明は、事前のプログラミング処理に基づいて、初期プログラミングパルスの大きさを動的に適合させるシステムの例を提供する。いくつかの実施形態では、プログラミング処理は、第1の段階が以後の段階に備えて初期プログラミングパルスの大きさを設定することを含む複数の段階を含む。最適な初期の大きさを有する後の段階をプログラムすることによって、プログラミング時間が短縮されうる(プログラミングループが少なくなる)。前述のような初期プログラミング電圧を動的に設定しないいくつかの先行システムでは、初期プログラミング電圧は、デバイス内のサイクリングおよびプログラミング速度のばらつきに対して余裕を持たせるために、典型的に最適よりもはるかに低く設定される。
前述の実施形態のいくつかにおいて、第1のプログラミング段階では、プログラミング時間を節約するために、第1の段階中にプログラミングパルス間により大きいステップサイズ(ΔVpgm)が採用された。しかしながら、以後の段階に備えて、最適な初期プログラミング電圧Vpgm_vstartを検出するためには、後の段階が典型的に比較的小さいサイズでプログラムされるので、比較的小さいステップサイズが望ましい。Vpgm_vstartを決定するために比較的小さいステップサイズを使用すると、より大きい分解能が得られる。しかしながら、比較的小さいステップサイズを使用すると、プログラミングの実施に要する時間がやはり増加する。
比較的小さいステップサイズを使用する場合に、総時間ペナルティなしでVpgm_vstartの分解能を高めることができる実施形態を以下で説明する。一実施形態では、所要最少数のメモリセルが、後続のプログラミングに備えてVpgm_vstartを決定するために使用される第1の検証レベルVVvstart(または別の条件)に合格しているとき、第1の検証レベルとは異なるレベルの1つまたは複数の新たな(または代替的な)検証処理(1つまたは複数の代替条件を試験するための)が、初期プログラミング電圧Vpgm_vstartを決定しうる分解能を高めるために実行される。一例では、1つの新たな検証ステップが現行ステップサイズの1/2(または別の比)に等しい量だけVvstartと異なる第2の検証レベル(例えば、Vvstart−2)で実施される。このような場合、新たな初期プログラミング電圧は、ΔVpgm/2の分解能で決定されうる。他の実施形態では、初期プログラミング電圧を決定しうる分解能をさらに高めるために、複数の新たな検証処理が行われうる。当該技術の1つの優位性は、分解能を高めるために、プログラミングの第1段階中のステップサイズを縮小する必要がないことである。プログラミング時間の増加だけは、1つまたは複数の新たな検証処理に起因しており、この検証処理はプログラミング時間をさほど劇的に増加させるものではない。
図30は、システムが、図16のステップ678で記憶すべきプログラミングパルスの大きさを検出する時点までのプログラミング処理の第1段階の最初の5つのプログラミングパルスに応答する閾値電圧区分移動のグラフ表示を示す。図30の例では、十分な数(例えば、15個)のメモリセルがVvstartに達するまでに、5つのプログラミングパルスが印加されている。図から分かるように、網掛け領域で表わされる多くのメモリセルはVvstartよりも大きい閾値電圧を有する。印加された最後のプログラミングパルス(5番目のプログラミングパルス)は、Vpgm_vstartとして記憶された大きさを有しているか、あるいはステップ678においてVpgm_vstartを計算するために使用される。
図31は、Vvstartよりも大きい閾値電圧を有するN個を超えるメモリセルが検出されるポイントまで、プログラミング処理の最初の3つのプログラミングパルス(パルス1、パルス2、パルス3)に応答する閾値電圧区分移動のグラフ表示を示す。この場合、Vvstart−2よりも大きい閾値電圧を有するN個を超えるメモリセルが発生することもある。この場合、1つまたは複数の追加的/代替的検証処理が実施される。例えば、1つの追加的/代替的検証処理は、Vstart−2で実施されうる(代替結果)。その追加的/代替的検証処理が実施されるとき、N個を超えるメモリセルがVvstart−2よりも大きい閾値電圧を有するものと判定される。この例では、Vvstartは、Vvstart−2よりもΔVpgm/2だけ大きい(他の値も可能である)。その場合、後の段階に備えて初期プログラミング電圧Vpgm_vstartを決定するために使用されるプログラミングパルスの大きさは、パルス3の大きさからΔVpgm/2だけ減少される(他の値も可能である)。すなわち、次の初期プログラミングパルスの大きさとして記憶される値は、第3のプログラミングパルスの大きさからΔverifyを差し引いた値に等しいか、あるいは、この値によって定義され、Δverifyは、2つの検証レベルVvstartとVvstart−2との差として定義される。
図32は、図31の例よりもプログラムするのが遅い1組のメモリセルの別の例を提供する。この例では、第3のプログラミングパルス(パルス3)の後、Vvstartに合格したメモリセルの数は十分であるが、Vvstart−2に合格したメモリセルの数は不十分である。したがって、後の段階に備えて初期プログラミング電圧Vpgm_vstartを決定するために使用されるプログラミングパルスの大きさが、第2のプログラミングパルスの大きさになる。
他の実施形態では、複数の追加的/代替的検証処理が、初期プログラミングパルスを決定しうる分解能をさらに高めるために使用されうる。例えば、当該システムは、N個(または別の数)よりも多くのメモリセルがVvstart−2およびVvstart−3よりも大きい閾値電圧を有するかどうかを判定するためにメモリセルを試験することができ、2つの検証レベルVvstartとVvstart−2との差はΔVpgm/3であり、2つの検証レベルVvstart−2とVvstart−3との差もΔVpgm/3である。したがって、2つの検証レベルVvstartとVvstart−3との差は(2)*ΔVpgm/3である。X個の追加的/代替的検証処理が使用される場合は、当該システムはVvstart、Vvstart−2、Vvstart−3、...VvstartXで検証を行い、Vvstart−XはVvstartと(X)*ΔVpgm/(1+X)だけ異なる。
当該技術の優位性は、プログラミングの第1の段階中にプログラミングパルスのステップサイズを縮小する必要がないことである。当該技術を実施しない場合と同じステップサイズを使用することが可能であり、それゆえ、第1の段階に対するプログラミングループの数が増加しない。
いくつかの実施形態では、Vvstartは、第1の段階中にプログラムされる最低閾値電圧区分(例えば、区分A)の検証レベルである。いくつかの実施形態では、Vvstart−2は、Vvstartが最低閾値電圧区分の検証レベルよりも低い第1の段階中にプログラムされる最低閾値電圧区分(例えば、区分A)の検証レベルである。他の実施形態では、VvstartおよびVvstart−2は、いずれも第1の区分の検証レベルよりも低くなりうる。いくつかの実施形態では、Vvstartは、第1の段階中にプログラムされる最低閾値電圧区分の粗/密プログラミングで使用される最低検証レベルであるが、Vvstart−2は、第1の段階中にプログラムされる最低閾値電圧区分の検証レベルに等しくなりうる。初期プログラミングの大きさが以後のプログラミング段階に備えて検出された後、Vvstart−2に等しいかそれよりも大きい区分をプログラムするために、同じステップサイズでプログラミングを続けることが可能である。場合によっては、より正確なプログラミングを可能にするために、初期プログラミングパルスの検出後にステップサイズを縮小することが望ましいかもしれない。本明細書に記載される当該技術は、米国特許第7,092,290号明細書の処理と組み合わされうる。
分解能を高めるために、追加的/代替的検証レベルを用いる前述の当該技術は、図16の処理とともに使用されうる。図33は、図16に加えられる処理を表すフローチャートである。図33のフローチャートに示されるステップは、図16のステップ678に置き換わる。例えば、N個以上のメモリセルがVvstartよりも大きい閾値電圧を有していると、図16のステップ670において判定された後、処理は、図33のステップ970に進む。ステップ970では、システムは、P個以上のメモリセルがVvstart−2よりも大きい閾値電圧を有しているかどうかを判定する(PがNと同じであるかNとは異なる可能性がある場合)。P個以上のメモリセルがVvstart−2よりも大きい閾値電圧を有する場合、ステップ972において、次のVpgm_vstartを決定するために使用される大きさは、(印加された最後のパルスの大きさ)−(Δverify)である。ステップ972は、ステップ678に関して前述したように、(印加された最後のパルスの大きさ)−(Δverify)を記憶することを含む。あるいは、ステップ972は、(印加された最後のパルスの大きさ)−(Δverify)+(オフセット)を記憶することを含む。別の代替方法では、システムは、(印加された最後のパルスの大きさ)−(Δverify)の別の関数、印加された最後のパルスの識別情報とΔverifyの関数、あるいはこれらのある組合せまたは一部を記憶することができる。Δverify以外の値も使用されうる。ステップ972の後、処理は図16のステップ692に進む。
ステップ970において、Vvstart−2よりも大きい閾値電圧を有するP個以外のメモリセルがあると判定されると、ステップ974において、次のVpgm_vstartを決定するために使用される大きさは、印加された最後のパルスの大きさである。ステップ974は、ステップ678に関して前述したように、印加された最後のパルスの大きさを記憶することを含む。あるいは、ステップ972は、(印加された最後のパルスの大きさ)+(オフセット)を記憶することを含む。別の代替方法では、システムは、印加された最後のパルスの大きさの別の関数、印加された最後のパルスの識別情報、印加された最後のパルスの識別情報の関数、あるいはこれらのある組合せまたは一部を記憶することができる。ステップ974の後、処理は図16のステップ692に進む。
同様に、図29のステップ924は、図33の処理で置き換えられうる。すなわち、M個のメモリセルが除外されると、処理はステップ970に進む。ステップ972または974の後、処理は図29のステップ926に進む。
図34は、システムが2つの代替結果を試験するために、2つの追加の検証処理を実施するときに、図16に加えられる処理を表すフローチャートである。なお、図34の処理は、2つよりも多くの代替結果の試験に適合されうる。図34のフローチャートに示されるステップは、図16のステップ678に置き換わる。例えば、N個以上のメモリセルがVvstartよりも大きい閾値電圧を有していると図16のステップ670によって判定された後、処理は図34のステップ980に進む。ステップ980では、P個以上のメモリセルがVvstart−2よりも大きい閾値電圧を有しているかどうかをシステムが判定する(PがNと同じであるかNとは異なる可能性がある場合)。Vvstart−2よりも大きい閾値電圧を有するP個以外のメモリセルがあると判定されると、ステップ982において、次のVpgm_vstartを決定するために使用されるパルスの大きさは、印加された最後のパルスの大きさである。ステップ982は、ステップ678に関して前述したように、印加された最後のパルスの大きさを記憶することを含む。あるいは、ステップ982は、(印加された最後のパルスの大きさ)+(オフセット)を記憶することを含む。別の代替方法では、システムは、印加された最後のパルスの大きさの別の関数、最後のパルスの識別情報、または最後のパルスの識別情報の関数を記憶しうる。ステップ982の後、処理は図16のステップ692に進む。
P個以上のメモリセルが、Vvstart−2よりも大きい閾値電圧を有する場合、ステップ984において、T個以上のメモリセルがVvstart−3よりも大きい閾値電圧を有しているかどうかが判定される。Tの値は、Nと同じであるかNとは異なる可能性がある。Vvstart−3よりも大きい閾値電圧を有するT個以外のメモリセルがあると判定されると、ステップ988において、次のVpmg_vstartを決定するために使用される大きさは、(印加された最後のパルスの大きさ)−(Δverify1)である。ステップ986は、ステップ678に関して前述したように、(印加された最後のパルスの大きさ)−(Δverify1)を記憶することを含む。あるいは、ステップ988は、(印加された最後のパルスの大きさ)−(Δverify1)+(オフセット)を記憶することを含む。別の代替方法では、システムは、(印加された最後のパルスの大きさ)−(Δverify1)の別の関数、最後のパルスの識別情報と(Δverify1)との関数、あるいはこれらのある組合せまたは一部を記憶しうる。Δverify1以外の値も使用されうる。ステップ988の後、処理は図16のステップ692に進む。この実施形態では、Δverify1は、VvstartとVvstart−2の差として定義される。
Vvstart−3よりも大きい閾値電圧を有するT個以上のメモリセルがあるものと判定されると、ステップ986において、次のVpgm_vstartを決定するために使用される大きさは、(印加された最後のパルスの大きさ)−(Δverify2)である。ステップ986は、ステップ678に関して前述したように、(印加された最後のパルスの大きさ)−(Δverify2)を記憶することを含む。あるいは、ステップ986は、(印加された最後のパルスの大きさ)−(Δverify2)+(オフセット)を記憶することを含む。別の代替方法では、システムは、(印加された最後のパルスの大きさ)−(Δverify2)の別の関数、最後のパルスの識別情報と(Δverify2)、最後のパルスの識別情報と(Δverify2)との関数、あるいはこれらのある組合せまたは一部を記憶しうる。ステップ986の後、処理は図16のステップ692に進む。この実施形態では、Δverify2は、VvstartとVvstart−3の差として定義される。
同様に、図29のステップ924は、図34の処理で置き換わりうる。すなわち、M個のメモリセルが除外されると、処理はステップ980に進む。ステップ982、986、または988の後、処理は図29のステップ926に進む。
図33または図34の処理は、前述のプログラミング方式のいずれかを実施するために、図29または図16の処理とともに使用されうる。図33または図34の処理が図29の処理とともに使用されて、図8A〜図8Cのプログラミング方式を使用しうる一例では、第1のプログラミング段階が閾値電圧Vvb’にプログラムすることと、Vpgm_vstartの新たな値を決定することと、を含みうる。第2の段階では、第1の段階からのVpgm_vstart(オフセットを含む)を用いて、図8Cに示されるように、A、B、およびC状態にプログラムするために図29の処理が使用されうる。
本発明に係わる前述の詳細な記述は、例証および説明を目的として提示されている。これは、本発明を網羅するものはなく開示された正確な形態に限定するものでもない。上記教示に照らして多くの修正形態および変更形態が考えられる。記述された実施形態は、本発明の原理とその実際的応用とを最も良く説明し、それによって他の当業者が本発明を様々な実施形態と検討される具体的な使用に適するような様々な修正形態とで最も良く利用しうるように選定された。本発明の範囲は、本明細書に添付される特許請求の範囲によって規定されるものである。

Claims (16)

  1. 不揮発性記憶素子をプログラムする方法であって、
    複数個の不揮発性記憶素子に対してマルチステージプログラミング処理の一段階を実施する工程であって、
    前記マルチステージプログラミング処理は、前記複数個の不揮発席記憶素子を、1個以上の最終目標状態にプログラムし、
    前記一段階は、第1の組のプログラムパルスを用いて、前記不揮発性記憶素子を1個以上の第1の暫定的な目標状態にプログラムすることを含み、
    前記一段階を実施する工程は、
    特定の結果を実現することに関連するプログラムパルスを識別する工程と、前記不揮発性記憶素子の1個以上の代替結果に対して1個以上の検出処理を実施する工程と、
    所定数を超える前記不揮発性記憶素子が前記第1の代替結果を実現したと前記検出処理によって判定される場合に、前記識別されたプログラムパルスと前記1個以上の代替結果のうちの第1の代替結果とに基づく示度(indication)を記憶する工程と、十分な数の不揮発性記憶素子が前記1個以上の代替結果を実現したと前記検出処理によって判定されない場合に、前記識別されたプログラムパルスに基づく示度を記憶する工程と、を含む、複数の不揮発性記憶素子に対してマルチステージプログラミング処理の一段階を実施する工程と、
    前記記憶された示度に基づいて設定された大きさの初期パルスを有する第2の組のプログラムパルスを印加することを含む、前記マルチステージプログラミング処理の新たな段階を実施する工程と、
    を備える、不揮発性記憶素子をプログラムする方法。
  2. 前記一段階は、特定の結果を実現することに応答して、前記第1の組のプログラムパルスのパルス間の増分を低減することをさらに含む、請求項1に記載の方法。
  3. 前記特定の結果を実現することに関連する前記プログラムパルスを識別する工程は、
    所定数の不揮発性記憶素子が前記特定の結果を実現したかどうかを判定するために検出処理を実施する工程と、
    前記所定数の不揮発性記憶素子に前記特定の結果を実現させた前記特定プログラムパルスを識別する工程とを含み、
    前記特定プログラムパルスは、前記特定の結果を実現することに関連する前記プログラムパルスであり、
    前記第1の代替結果は、前記1組のプログラムパルスのパルス間の増分の何分の一かだけ前記特定の結果とは異なる、請求項2または3に記載の方法。
  4. 前記特定の結果は、第1の閾値電圧値であり、
    前記第1の代替結果は、前記第1の組のプログラムパルスのパルス間の前記増分の何分の一かだけ、前記特定の結果とは異なる第2の閾値電圧値であり、
    前記方法は、
    前記記憶された示度が前記識別されたプログラムパルスに基づく場合に、前記第2の組のプログラムパルスの初期パルスの大きさを第1のレベルに設定する工程と、
    前記記憶された示度が前記第1の代替結果と前記識別されたプログラムパルスとに基づく場合に、前記第2の組のプログラムパルスの初期パルスの大きさを第2のレベルに設定する工程と、をさらに含み、
    前記第2のレベルは、前記第1のレベルよりも低い、請求項1,2または3に記載の方法。
  5. 前記複数の不揮発性記憶素子は共通ワードラインに接続される、前記請求項のいずれか一項に記載の方法。
  6. 前記一段階を実施する工程の後であって、前記新たな段階を実施する工程の前に、前記マルチステージプログラミング処理の一部でない別のプログラミング処理において、他の不揮発性記憶素子に対してプログラミングを実施する工程をさらに備え、
    前記他の不揮発性記憶素子は、前記複数の不揮発性記憶素子と異なる、前記請求項のいずれか一項に記載の方法。
  7. 前記特定の結果は、1個以上の第1の暫定的な目標状態に十分な数の不揮発性記憶素子が達していることである、前記請求項のいずれか一項に記載の方法。
  8. 前記特定の結果は前記第1の暫定的な目標状態までの中間状態に十分な数の不揮発性記憶素子が達していることである、請求項1から請求項6のいずれか一項に記載の方法。
  9. 前記不揮発性記憶素子の1個以上の代替結果に対して、1個以上の検出処理を実施する工程は、前記第1の代替結果を試験する工程と、第2の代替結果を試験する工程とを含み、
    前記方法は、
    十分な不揮発性素子が前記第2の代替結果を実現したと前記検出処理が判定した場合に、前記第2の代替結果と前記識別されたプログラムパルスとに基づいて前記示度を記憶する工程をさらに含み、
    前記特定の結果は、第1の閾値電圧値であり、
    前記第1の代替結果は、前記第1の組のプログラムパルスのパルス間の増分の何分の一かだけ前記特定の結果とは異なる第2の閾値電圧値であり、
    前記第2の代替結果は、前記第1の組のプログラムパルスのパルス間の増分の何分の一かの整数倍だけ前記特定の結果とは異なる第3の閾値電圧値であり、
    前記方法は、
    前記記憶された示度が前記識別されたプログラムパルスに基づく場合に、前記第2の組のプログラムパルスの初期パルスの大きさを第1のレベルに設定する工程と、
    前記記憶された示度が前記第1の代替結果と前記識別されたプログラムパルスとに基づく場合に、前記第2の組のプログラムパルスの初期パルスの大きさを第2のレベルに設定する工程と、
    前記記憶された示度が前記第2の代替結果と前記識別されたプログラムパルスとに基づく場合に、前記第2の組のプログラムパルスの初期パルスの大きさを第3のレベルに設定する工程と、をさらに含み、
    前記第2のレベルは前記第1のレベルよりも低く、かつ、前記第3のレベルは前記第2のレベルよりも低い、
    請求項1に記載の方法。
  10. 不揮発性記憶装置であって、
    複数個の不揮発性記憶素子と、
    前記複数個の不揮発性記憶素子と通信する1個以上の管理回路であって、前記1個以上の管理回路は、複数個の不揮発性記憶素子に対して複数のプログラミング処理を実施し、前記プログラミング処理の各々はプログラムパルスを用いて前記不揮発性記憶素子の少なくとも部分集合をそれぞれの組の目標状態にプログラムするように動作し、前記プログラミング処理の少なくとも部分集合に対して前記1個以上の管理回路は、それぞれのプログラミング処理に関する特定の結果を実現することに関連するプログラムパルスを識別し、前記不揮発性記憶素子に関する1個以上の代替結果において、1個以上の検出処理を実施し、前記1個以上の管理回路は、所定数を超える不揮発性記憶素子が前記第1の代替結果を実現したことが、前記1個以上の検出処理によって判定された場合に、前記不揮発性記憶素子の後続のプログラミング処理に対するプログラミングを調整するために、前記1個以上の代替結果のうち第1の代替結果と前記プログラムパルスの識別情報とを使用し、前記1個以上の管理回路は、所要数未満の不揮発性記憶素子が前記代替結果のいずれかを実現したことが、前記1個以上の検出処理によって判定された場合に、前記不揮発性記憶素子の後続のプログラミング処理に対するプログラミングを調整するために、前記プログラムパルスの識別情報を使用する、前記複数の不揮発性記憶素子と通信する1つまたは複数の管理回路と、
    を備える不揮発性記憶措置。
  11. 第1のワードラインをさらに備え、
    前記複数個の不揮発性記憶素子は、前記第1のワードラインに接続され、
    前記1個以上の管理回路は、前記プログラムパルスを前記第1のワードラインに印加し、
    前記複数個の不揮発性記憶素子は、マルチステートフラッシュメモリデバイスである、請求項10に記載の不揮発性記憶装置。
  12. 前記特定の結果は、前記それぞれのプログラミング処理に関して十分な数の不揮発性記憶素子が中間状態に達していることを含み、
    プログラミング処理の前記部分集合の各々において、前記1個以上の管理回路は、前記特定の結果を実現することに応答してプログラムパルス間の増分を低減する、請求項10及び11に記載の不揮発性記憶装置。
  13. 前記1個以上の管理回路は、所定数の不揮発性記憶素子が前記特定の結果を実現したかどうかを判定するために検出処理を実施し、かつ、前記直前のプログラムパルスを識別することによって、前記特定の結果を実現することに関連する前記プログラムパルスを識別し、
    前記第1の代替結果はプログラムパルス間のプログラム増分の何分の一かだけ前記特定の結果とは異なる、請求項10,11または12に記載の不揮発性記憶装置。
  14. 前記特定の結果は、第1の閾値電圧値であり、
    前記第1の代替結果は、プログラムパルス間の前記プログラム増分の何分の一かだけ前記特定の結果とは異なる第2の閾値電圧値であり、
    前記1個以上の管理回路は、所定数を超える不揮発性記憶素子が前記第2の閾値電圧値よりも高い閾値電圧を有すると、前記検出処理によって判定されなかった場合に、前記後続のプログラミング処理の初期パルスの大きさを第1のレベルに設定することによって、前記不揮発性記憶素子の後続のプログラミング処理に対するプログラミングを調整するために、前記プログラムパルスの識別情報を使用し、
    前記1個以上の管理回路は、前記所定数を超える不揮発性記憶素子が前記第2の閾値電圧値よりも高い閾値電圧を有すると、前記検出処理によって判定された場合に、前記後続のプログラミング処理の前記初期パルスの大きさを第2のレベルに設定することによって、前記不揮発性記憶素子の前記後続のプログラミング処理に対するプログラミングを調整するために、前記第1の代替結果と前記プログラムパルスの識別情報とを使用し、
    前記第2のレベルは前記第1のレベルとは異なる、請求項10から13のいずれか一項に記載の不揮発性記憶装置。
  15. 前記1個以上の管理回路は、所定数を超える不揮発性記憶素子が前記第2の代替結果を実現したと、前記1個以上の検出処理によって判定された場合に、前記不揮発性記憶素子の前記後続のプログラミング処理に対するプログラミングを調整するために、前記1個以上の代替結果の第2の代替結果と前記プログラムパルスの前記識別情報とを使用する、請求項10から14のいずれか一項に記載の不揮発性記憶装置。
  16. 前記1個以上の管理回路は、
    前記第1の代替結果と前記プログラムパルスの前記識別情報とに基づいて前記後続のプログラミング処理に対する初期プログラムパルスの大きさを設定することによって前記不揮発性記憶素子の前記後続のプログラミング処理に対するプログラミングを調整するために前記第1の代替結果と前記プログラムパルスの識別情報とを使用し、
    前記1個以上の管理回路は、前記プログラムパルスの前記識別情報に基づいて前記後続のプログラミング処理に対する前記初期プログラムパルスの大きさを設定することによって前記不揮発性記憶素子の前記後続のプログラミング処理に対するプログラミングを調整するために前記プログラムパルスの識別情報を使用し、
    前記1個以上の管理回路は、前記特定の結果を実現することに関連する前記プログラムパルスの電圧レベルに基づいて前記後続のプログラミング処理に対する前記初期プログラムパルスの大きさを設定することによって、前記プログラムパルスの前記識別情報に基づいて前記後続プログラミング処理に対する前記初期プログラムパルスの大きさを設定し、
    前記1個以上の管理回路は、前記特定の結果と前記第1の代替結果に基づく補正率とを実現することに関連する前記プログラムパルスの電圧レベルに基づいて前記後続のプログラミング処理に対する前記初期プログラムパルスの大きさを設定することによって、前記代替結果と前記プログラムパルスの前記識別情報とに基づいて前記後続プログラミング処理に対する前記初期プログラムパルスの大きさを設定する、請求項10に記載の不揮発性記憶装置。
JP2011533215A 2008-10-24 2009-09-29 高分解能可変初期プログラミングパルスを用いた不揮発性メモリのプログラミング Expired - Fee Related JP5460721B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10812408P 2008-10-24 2008-10-24
US61/108,124 2008-10-24
US12/427,013 2009-04-21
US12/427,013 US8045375B2 (en) 2008-10-24 2009-04-21 Programming non-volatile memory with high resolution variable initial programming pulse
PCT/US2009/058882 WO2010047926A1 (en) 2008-10-24 2009-09-29 Programming non-volatile memory with high resolution variable initial programming pulse

Publications (2)

Publication Number Publication Date
JP2012507105A true JP2012507105A (ja) 2012-03-22
JP5460721B2 JP5460721B2 (ja) 2014-04-02

Family

ID=42117352

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011533215A Expired - Fee Related JP5460721B2 (ja) 2008-10-24 2009-09-29 高分解能可変初期プログラミングパルスを用いた不揮発性メモリのプログラミング

Country Status (7)

Country Link
US (5) US8045375B2 (ja)
EP (1) EP2351041B1 (ja)
JP (1) JP5460721B2 (ja)
KR (1) KR101600551B1 (ja)
CN (1) CN102203874B (ja)
TW (2) TW201023196A (ja)
WO (2) WO2010047925A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018110043A (ja) * 2017-01-05 2018-07-12 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
KR20190107300A (ko) * 2017-03-21 2019-09-19 마이크론 테크놀로지, 인크. 자동화된 동적 워드 라인 시작 전압을 위한 장치 및 방법
JP2022528898A (ja) * 2019-05-22 2022-06-16 長江存儲科技有限責任公司 マルチレベルセルnand型フラッシュメモリデバイスのプログラム方法及びmlc nand型フラッシュメモリデバイス

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8045375B2 (en) * 2008-10-24 2011-10-25 Sandisk Technologies Inc. Programming non-volatile memory with high resolution variable initial programming pulse
US8064252B2 (en) 2008-11-21 2011-11-22 Micron Technology, Inc. Multi-pass programming in a memory device
KR101616099B1 (ko) 2009-12-03 2016-04-27 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US8243521B2 (en) * 2009-12-04 2012-08-14 Micron Technology, Inc. Method for kink compensation in a memory
US8964464B2 (en) * 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
JP5664236B2 (ja) * 2010-12-29 2015-02-04 ソニー株式会社 データ記憶装置、情報処理装置、および情報処理方法、並びにプログラム
US8681562B2 (en) 2011-01-10 2014-03-25 Micron Technology, Inc. Memories and methods of programming memories
US8451662B2 (en) 2011-03-03 2013-05-28 Micron Technology, Inc. Reading memory cell history during program operation for adaptive programming
US8687431B2 (en) 2011-07-06 2014-04-01 Micron Technology, Inc. Programming methods and memories
TWI471862B (zh) * 2011-08-19 2015-02-01 Silicon Motion Inc 快閃記憶體控制器
US8811091B2 (en) * 2011-12-16 2014-08-19 SanDisk Technologies, Inc. Non-volatile memory and method with improved first pass programming
KR20130071686A (ko) * 2011-12-21 2013-07-01 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법
JP5929456B2 (ja) * 2012-04-17 2016-06-08 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US9053819B2 (en) * 2012-07-11 2015-06-09 Sandisk Technologies Inc. Programming method to tighten threshold voltage width with avoiding program disturb
US8971128B2 (en) * 2013-01-31 2015-03-03 Sandisk Technologies Inc. Adaptive initial program voltage for non-volatile memory
US9053810B2 (en) * 2013-03-08 2015-06-09 Sandisk Technologies Inc. Defect or program disturb detection with full data recovery capability
US9117530B2 (en) * 2013-03-14 2015-08-25 Sandisk Technologies Inc. Preserving data from adjacent word lines while programming binary non-volatile storage elements
JP5964522B2 (ja) * 2013-03-14 2016-08-03 シリコン ストーリッジ テクノロージー インコーポレイテッドSilicon Storage Technology, Inc. 不揮発性メモリのプログラムアルゴリズムのデバイス及び方法
US8885418B1 (en) 2013-09-24 2014-11-11 SanDisk Technologies, Inc. Adaptive double pulse BCF programming
KR20150051056A (ko) 2013-11-01 2015-05-11 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
US9218891B2 (en) * 2013-11-27 2015-12-22 Silicon Motion, Inc. Data storage device and flash memory control method
US9123424B2 (en) * 2013-12-17 2015-09-01 Sandisk Technologies Inc. Optimizing pass voltage and initial program voltage based on performance of non-volatile memory
US9171628B2 (en) * 2014-03-13 2015-10-27 Macronix International Co., Ltd. Incremental step pulse programming (ISPP) scheme capable of determining a next starting pulse based on a current program-verify pulse for improving programming speed
US9036428B1 (en) * 2014-06-13 2015-05-19 Sandisk Technologies Inc. Partial block erase for a three dimensional (3D) memory
US9324419B2 (en) 2014-07-15 2016-04-26 Sandisk Technologies Inc. Multiple pass programming for memory with different program pulse widths
US9343141B2 (en) 2014-07-15 2016-05-17 Sandisk Technologies Inc. Reprogramming memory with single program pulse per data state
US9971647B2 (en) * 2014-07-31 2018-05-15 Winbond Electronics Corporation Apparatus and method for programming ECC-enabled NAND flash memory
TWI587302B (zh) * 2014-12-09 2017-06-11 華邦電子股份有限公司 記憶體編程方法以及記憶體裝置
US9570179B2 (en) * 2015-04-22 2017-02-14 Sandisk Technologies Llc Non-volatile memory with two phased programming
CN110634521B (zh) * 2018-06-25 2022-05-24 西安格易安创集成电路有限公司 一种非易失存储器处理方法及装置
CN110634527B (zh) * 2018-06-25 2021-06-22 西安格易安创集成电路有限公司 一种非易失存储器处理方法及装置
CN110838321A (zh) * 2018-08-17 2020-02-25 北京兆易创新科技股份有限公司 一种存储器的编程方法和***
JP7258697B2 (ja) * 2019-09-02 2023-04-17 キオクシア株式会社 半導体記憶装置
US11967383B2 (en) 2022-01-20 2024-04-23 Western Digital Technologies, Inc. Non-volatile memory with enhanced program operation for last state on slow plane

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004094987A (ja) * 2002-08-29 2004-03-25 Fujitsu Ltd 不揮発性半導体記憶装置及びデータ書き込み方法
JP2008521153A (ja) * 2004-11-16 2008-06-19 サンディスク コーポレイション オーバープログラミングの低減を利用する高速プログラミングシステム
JP2008535145A (ja) * 2005-04-05 2008-08-28 サンディスク コーポレイション マルチレベルセル型フラッシュメモリに高位レベル状態をより迅速にプログラミングする方法
JP2008542968A (ja) * 2005-06-03 2008-11-27 サンディスク コーポレイション 不揮発性メモリを繰返すに連れてプログラム電圧のシフトを開始する方法
JP2010020881A (ja) * 2008-07-10 2010-01-28 Hynix Semiconductor Inc 不揮発性メモリ装置のプログラム方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
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
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
JP2000173289A (ja) 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6928001B2 (en) 2000-12-07 2005-08-09 Saifun Semiconductors Ltd. Programming and erasing methods for a non-volatile memory cell
JP2002288988A (ja) * 2001-03-28 2002-10-04 Mitsubishi Electric Corp 不揮発性半導体記憶装置
US7136304B2 (en) * 2002-10-29 2006-11-14 Saifun Semiconductor Ltd Method, system and circuit for programming a non-volatile memory array
US7073103B2 (en) 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US7177199B2 (en) 2003-10-20 2007-02-13 Sandisk Corporation Behavior based programming of non-volatile memory
US7057934B2 (en) 2004-06-29 2006-06-06 Intel Corporation Flash memory with coarse/fine gate step programming
JP4261462B2 (ja) 2004-11-05 2009-04-30 株式会社東芝 不揮発性メモリシステム
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
KR100616214B1 (ko) * 2005-06-30 2006-08-28 주식회사 하이닉스반도체 멀티-레벨 셀을 가지는 플래시 메모리 장치의 프로그램제어 회로 및 그 프로그램 제어 방법
US7230854B2 (en) 2005-08-01 2007-06-12 Sandisk Corporation Method for programming non-volatile memory with self-adjusting maximum program loop
US7451264B2 (en) 2006-04-13 2008-11-11 Sandisk Corporation Cycle count storage methods
US7467253B2 (en) 2006-04-13 2008-12-16 Sandisk Corporation Cycle count storage systems
US20070297247A1 (en) 2006-06-26 2007-12-27 Gerrit Jan Hemink Method for programming non-volatile memory using variable amplitude programming pulses
US7599223B2 (en) 2006-09-12 2009-10-06 Sandisk Corporation Non-volatile memory with linear estimation of initial programming voltage
US7450426B2 (en) 2006-10-10 2008-11-11 Sandisk Corporation Systems utilizing variable program voltage increment values in non-volatile memory program operations
US7474561B2 (en) 2006-10-10 2009-01-06 Sandisk Corporation Variable program voltage increment values in non-volatile memory program operations
EP2067142B1 (en) * 2006-10-30 2015-01-28 SanDisk Technologies Inc. Faster programming of highest multi-level state for non-volatile memory
US7596031B2 (en) 2006-10-30 2009-09-29 Sandisk Corporation Faster programming of highest multi-level state for non-volatile memory
US7570520B2 (en) 2006-12-27 2009-08-04 Sandisk Corporation Non-volatile storage system with initial programming voltage based on trial
US7551482B2 (en) 2006-12-27 2009-06-23 Sandisk Corporation Method for programming with initial programming voltage based on trial
US7619930B2 (en) 2007-02-20 2009-11-17 Sandisk Corporation Dynamic verify based on threshold voltage distribution
US8045375B2 (en) * 2008-10-24 2011-10-25 Sandisk Technologies Inc. Programming non-volatile memory with high resolution variable initial programming pulse

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004094987A (ja) * 2002-08-29 2004-03-25 Fujitsu Ltd 不揮発性半導体記憶装置及びデータ書き込み方法
JP2008521153A (ja) * 2004-11-16 2008-06-19 サンディスク コーポレイション オーバープログラミングの低減を利用する高速プログラミングシステム
JP2008535145A (ja) * 2005-04-05 2008-08-28 サンディスク コーポレイション マルチレベルセル型フラッシュメモリに高位レベル状態をより迅速にプログラミングする方法
JP2008542968A (ja) * 2005-06-03 2008-11-27 サンディスク コーポレイション 不揮発性メモリを繰返すに連れてプログラム電圧のシフトを開始する方法
JP2010020881A (ja) * 2008-07-10 2010-01-28 Hynix Semiconductor Inc 不揮発性メモリ装置のプログラム方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018110043A (ja) * 2017-01-05 2018-07-12 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
KR20190107300A (ko) * 2017-03-21 2019-09-19 마이크론 테크놀로지, 인크. 자동화된 동적 워드 라인 시작 전압을 위한 장치 및 방법
KR102299186B1 (ko) 2017-03-21 2021-09-08 마이크론 테크놀로지, 인크. 자동화된 동적 워드 라인 시작 전압을 위한 장치 및 방법
JP2022528898A (ja) * 2019-05-22 2022-06-16 長江存儲科技有限責任公司 マルチレベルセルnand型フラッシュメモリデバイスのプログラム方法及びmlc nand型フラッシュメモリデバイス
JP7295267B2 (ja) 2019-05-22 2023-06-20 長江存儲科技有限責任公司 マルチレベルセルnand型フラッシュメモリデバイスのプログラム方法及びmlc nand型フラッシュメモリデバイス

Also Published As

Publication number Publication date
EP2351041B1 (en) 2015-01-07
KR101600551B1 (ko) 2016-03-21
CN102203874B (zh) 2014-05-14
US20100103733A1 (en) 2010-04-29
US20110242889A1 (en) 2011-10-06
US8295085B2 (en) 2012-10-23
EP2351041A1 (en) 2011-08-03
US8254177B2 (en) 2012-08-28
US8045375B2 (en) 2011-10-25
US20120236654A1 (en) 2012-09-20
US8223554B2 (en) 2012-07-17
TWI467585B (zh) 2015-01-01
US20100103734A1 (en) 2010-04-29
JP5460721B2 (ja) 2014-04-02
CN102203874A (zh) 2011-09-28
US8422302B2 (en) 2013-04-16
US20120039121A1 (en) 2012-02-16
WO2010047925A1 (en) 2010-04-29
TW201023196A (en) 2010-06-16
WO2010047926A1 (en) 2010-04-29
TW201025342A (en) 2010-07-01
KR20110094287A (ko) 2011-08-23

Similar Documents

Publication Publication Date Title
JP5460721B2 (ja) 高分解能可変初期プログラミングパルスを用いた不揮発性メモリのプログラミング
JP5113195B2 (ja) 閾値電圧区分に基づく動的検証
JP4931915B2 (ja) 不揮発性メモリを繰返すに連れてプログラム電圧のシフトを開始する方法
JP5481477B2 (ja) 不揮発性記憶装置のオーバープログラムの訂正
JP5250117B2 (ja) メモリのための適応消去及びソフトプログラミング
JP5178914B2 (ja) 不揮発性記憶装置のプログラムおよび選択的消去
JP5439488B2 (ja) 不揮発性メモリアレイの最終ワードラインのデータ保持力改善
KR101805229B1 (ko) 동기화된 커플링을 이용한 비휘발성 저장소자의 프로그래밍
JP5613663B2 (ja) 不揮発性記憶装置の消去確認処理
EP2780912B1 (en) Non-volatile storage with data recovery
JP4855474B2 (ja) スマート検証を利用してマルチステート不揮発性メモリをプログラミングする方法
JP2013514601A (ja) 高速ビット検出及び検証スキップを有する不揮発性記憶のプログラミング
JP2012531694A (ja) 不揮発性記憶装置のプログラミングの完了を検出する方法
WO2014120943A1 (en) Adaptive initial program voltage for non-volatile memory
JP2010530596A (ja) 書き込みパルス持続時間のインテリジェント制御
WO2014011627A1 (en) Programming method to tighten threshold voltage width with avoiding program disturb

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120621

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130805

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130827

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131126

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: 20131224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140114

R150 Certificate of patent or registration of utility model

Ref document number: 5460721

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees