CN103069494B - 非易失性存储器中的自然阈值电压分布压缩 - Google Patents

非易失性存储器中的自然阈值电压分布压缩 Download PDF

Info

Publication number
CN103069494B
CN103069494B CN201180037947.4A CN201180037947A CN103069494B CN 103069494 B CN103069494 B CN 103069494B CN 201180037947 A CN201180037947 A CN 201180037947A CN 103069494 B CN103069494 B CN 103069494B
Authority
CN
China
Prior art keywords
programming
memory element
nonvolatile memory
program speed
stage
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
CN201180037947.4A
Other languages
English (en)
Other versions
CN103069494A (zh
Inventor
迪潘舒·杜塔
杰弗里·W·卢策
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.)
Delphi International Operations Luxembourg SARL
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 CN103069494A publication Critical patent/CN103069494A/zh
Application granted granted Critical
Publication of CN103069494B publication Critical patent/CN103069494B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells

Landscapes

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

Abstract

在非易失性存储器系统中,基于编程速度的减缓措施,例如提高的位线被施加至更快编程存储元件。执行使用来回字线顺序的多阶段编程操作,在该多阶段编程操作中,编程速度数据在给定字线的一个编程阶段中被存储于锁存器中并且从锁存器中被读取以用于给定字线的后续编程阶段。通过检测许多存储元件何时达到指定的检验电平,对基于存储元件的自然阈值电压分布的额外编程脉冲数目进行计数,以及随后执行用于分开更快编程存储元件和更慢编程存储元件的读取操作,可以区分更快编程存储元件和更慢编程存储元件。可以在不同编程阶段中调整漏极侧选择栅极电压以适应不同的位线偏压电平。

Description

非易失性存储器中的自然阈值电压分布压缩
技术领域
本技术涉及非易失性存储器。
半导体存储器日益普遍地用在各种电子装置中。例如,非易失性半导体存储器用在蜂窝电话、数码摄像机、个人数字助理、移动计算装置、非移动计算装置以及其它装置中。电可擦除可编程只读存储器(EEPROM)和闪速存储器是其中最普遍的非易失性半导体存储器。与传统的全功能的EEPROM相比,利用闪速存储器(也是一种类型的EEPROM),可以在一个步骤中擦除整个存储器阵列的内容或存储器的一部分的内容。
传统的EEPROM和闪速存储器均采用浮置栅极,该浮置栅极放置在半导体衬底中的沟道区域上方并且与半导体衬底中的沟道区域绝缘。该浮置栅极放置在源极区域与漏极区域之间。控制栅极设置在浮置栅极上方并且与浮置栅极绝缘。如此形成的晶体管的阈值电压(Vth)由浮置栅极上保留的电荷量控制。即,在晶体管接通之前必须被施加至控制栅极以允许在其源极与漏极之间导通的最小电压量由浮置栅极上的电荷水平控制。
最重要的是将数据准确地编程到存储器中的能力。然而,当存储器缩小时,这变得更加困难。
附图说明
图1是使用单个行/列译码器和读/写电路的非易失性存储器系统的框图。
图2描述图1的存储器阵列155中的NAND闪速存储器单元的块。
图3是用于描述图1的感测块100的一个实施例的框图。
图4描述用于感测的NAND串和组件的配置。
图5描述在编程操作中施加至所选择的字线的编程脉冲。
图6描述可以在多阶段编程操作的不同阶段中施加的编程电压。
图7A描述以来回字线顺序(back-and-frothwordlineorder)对存储元件集合的两阶段编程操作。
图7B描述以来回字线顺序对存储元件集合的三阶段编程操作。
图8A描述多阶段编程操作的概要。
图8B描述图8A的多阶段编程操作中的步骤800、802或806的细节。
图8C描述图8A的多阶段编程操作中的步骤804或808的细节。
图8D结合三阶段编程操作描述步骤800和804的细节,其中在三阶段编程操作的第二阶段中,在更高状态存储元件之前,针对更低状态存储元件区分更快编程存储元件和更慢编程存储元件。
图8E结合三阶段编程操作描述步骤800和804的细节,其中在三阶段编程操作的第一阶段中,针对更高状态存储元件区分更快编程存储元件和更慢编程存储元件,以及其中在三阶段编程操作的第二阶段中,针对更低状态存储元件区分更快编程存储元件和更慢编程存储元件。
图9A描述包括更快编程存储元件和更慢编程存储元件的存储元件集合的自然阈值电压分布。
图9B描述存储元件集合的紧缩的自然阈值电压分布。
图9C描述对存储元件进行编程所需要的Vpgm与存储元件的位线电压之间的关系。
图9D描述示例编程场景。
图10A描述两阶段编程操作的第一阶段的开始,其中所有存储元件均处于擦除状态。
图10B描述在两阶段编程操作的第一阶段中跟随图10A的情况,其中最小数目的存储元件具有Vth>Vval。
图10C描述在两阶段编程操作的第一阶段中、在施加了额外数目的“m”个编程脉冲之后的跟随图10B的第一替选,其中使用检验电平VvaL区分更快编程存储元件和更慢编程存储元件。
图10D描述在两阶段编程操作的第一阶段中、在施加了额外数目的“k”个编程脉冲之后的跟随图10B的第二替选,并且使用读取电平Vv区分更快编程存储元件和更慢编程存储元件。
图10E描述在两阶段编程操作的第一阶段中的从图10C或图10D的情况起的编程。
图10F描述在两阶段编程操作的第二阶段开始时的跟随图10E的情况。
图10G描述在两阶段编程操作的第二阶段中从图10F的情况起的编程。
图11A针对四级存储器装置描述三阶段编程操作的第一阶段的开始,其中所有存储元件均处于擦除状态。
图11B描述在三阶段编程操作的第一阶段中的跟随图11A的情况,其中最小数目的更高状态存储元件具有Vth>VvLM。
图11C描述在三阶段编程操作的第一阶段中、在施加了额外数目的“m”个编程脉冲之后的跟随图11B的情况,其中使用读取电平Vvh区分更快编程更高状态存储元件和更慢编程更高状态存储元件。
图11D描述在三阶段编程操作的第二阶段开始时的跟随图11C的情况。
图11E描述在三阶段编程操作的第二阶段中跟随图11D的情况的更低状态存储元件和更高状态存储元件的编程。
图11F描述跟随图11E的情况的三阶段编程操作的第三阶段的开始。
图11G描述在三阶段编程操作的第三阶段中从图11F的情况开始的编程。
图11H描述在两阶段编程操作的第二阶段中跟随图11D的情况的更低状态存储元件和更高状态存储元件的编程,以作为图11F和图11G的替选。
图12A描述在三阶段编程操作的第二阶段的第一替选开始时的跟随图11D的情况的编程,其中最小数目的更低状态存储元件具有Vth>VvaL。
图12B描述在三阶段编程操作的第二阶段中、在施加了额外数目的“k”个编程脉冲之后的跟随图12A的情况,并且使用读取电平Vvl区分更快编程更低状态存储元件和更慢编程更低状态存储元件。
图12C描述在三阶段编程操作的第二阶段的第一替选中跟随图12B的情况的更低状态存储元件和更高状态存储元件的编程。
图13A描述三阶段编程操作的第二阶段的第二替选的开始,其中使用更低的检验电平VvLMx来代替VvLM。
图13B1描述在三阶段编程操作的第二阶段的第二替选中跟随图13A的情况,其中最小数目的更低状态存储元件具有Vth>VvaL。
图13B2描述在三阶段编程操作的第二阶段的第二替选中、在施加了额外数目的“k1”个编程脉冲被施加之后的跟随图13B1的情况,并且使用读取电平Vvl区分更快编程更低状态存储元件和更慢编程更低状态存储元件。
图13C1描述在三阶段编程操作的第二阶段的第二替选中跟随图13A的情况,其中最小数目的更高状态存储单元具有Vth>VvbL。
图13C2描述在三阶段编程操作的第二阶段的第二替选中、在施加了额外数目的“k2”个编程脉冲之后的跟随图13C1的情况,并且使用读取电平Vvh区分更快编程更高状态存储元件和更慢编程更高状态存储元件。
图13D描述在三阶段编程操作的第二阶段的第二替选中跟随图13B2和图13C2的情况的更低状态存储元件和更高状态存储元件的编程。
图14A针对八级存储器装置描述三阶段编程操作的第一阶段的开始,其中所有存储单元均处于擦除状态。
图14B描述在三阶段编程操作的第一阶段中跟随图14A的情况,其中最小数目的更高状态元件具有Vth>VvLM。
图14C描述在三阶段编程操作的第一阶段中、在施加了额外数目的“k”个编程脉冲之后的跟随图14B的情况,并且使用读取电平Vvh区分更快编程更高状态存储元件和更慢编程更高状态存储元件。
图14D描述在三阶段编程操作的第一阶段完成时的跟随图14C的情况。
图14E描述跟随图14D的情况,其中,编程发生在三阶段编程操作的第二阶段中,并且最小数目的更低状态存储元件具有Vth>VvaL。
图14F描述在三阶段编程操作的第二阶段中、在施加了额外数目的“k”个编程脉冲之后的跟随图14E的情况,并且使用读取电平Vvl区分更快编程更低状态存储元件和更慢编程更低状态存储元件。
图14G描述在三阶段编程操作的第二阶段完成时的跟随图14F的情况。
图14H描述在三阶段编程操作的第三阶段开始时的跟随图14G的情况。
图14I描述在三阶段编程操作的第三阶段结束时的跟随图14H的情况。
图15A针对八级存储器装置描述在替选的三阶段编程操作的第一阶段中的编程,其中所有存储元件均处于擦除状态。
图15B1描述在替选的三阶段编程操作的第二阶段中跟随图15A的情况的编程,其中最小数目的更低状态存储元件具有Vth>VvaL。
图15B2描述在替选的三阶段编程操作的第二阶段中、在施加了额外数目的“k1”个编程脉冲之后的跟随图15B1的情况的情况,其中使用读取电平Vvl区分更快编程更低状态存储元件和更慢编程更低状态存储元件。
图15C1描述在替选的三阶段编程操作的第二阶段中跟随图15A的情况的编程,其中最小数目的更高状态存储元件具有Vth>VvdL。
图15C2描述在替选的三阶段编程操作的第二阶段中、在施加了额外数目的“k2”个编程脉冲之后的跟随图15C1的情况的情况,其中使用读取电平Vvh区分更快编程更高状态存储元件和更慢编程更高状态存储元件。
图15D描述跟随图15B2和图15C2的情况的编程,其中完成了替选的三阶段编程操作的第二阶段。
图15E描述跟随图15D的情况的编程,其中完成了替选的三阶段编程操作的第三阶段。
图16A1针对两比特存储元件描述用于在多阶段编程操作中使用的相应位线的数据锁存器。
图16A2针对三比特存储元件描述用于在多阶段编程操作中使用的相应位线的数据锁存器。
图16B描述存储在示例1的数据锁存器中的数据。
图16C1描述存储在示例2的数据锁存器中的数据。
图16C2描述图16C1的替选,其中在第三阶段中不施加编程速度数据。
图16C3描述存储在示例2A的数据锁存器中的数据。
图16D1描述存储在示例3或示例5的数据锁存器中的数据。
图16D2描述图16D1的替选,其中在第三阶段中不施加编程速度数据。
图16E描述存储在示例4或示例6的数据锁存器中的数据。
具体实施方式
一种用于通过区分更快编程存储元件和更慢编程存储元件对非易失性存储元件集合进行编程的方法和非易失性存储系统。
由于存储装置的缩放,可以经历更多沿字线的存储元件到存储元件的变化,使得存储元件集合的自然阈值电压(Vth)分布增加。当自然Vth分布变得更宽时,每个数据状态所需要的检验操作的数目也增加,从而通过增加总体编程时间使编程性能退化。为了克服此问题,可以通过在一个或更多个编程阶段中检测更快编程存储元件并且将减缓措施(slowdownmeasure),例如提高的位线电压选择性地施加至更快编程存储元件,在多阶段编程操作中减少自然Vth分布。在两阶段编程操作和三阶段编程操作中提供了各种示例实现,尽管这些技术是一般适用的。此外,取代区分更快编程存储元件和更慢编程存储元件,例如两类存储元件,可以基于其编程速度区分多于两类的存储元件,并且将减缓措施施加至针对每个类的更快的类。此外,减缓措施可以与在一些编程技术中应用的额外的位线增加相兼容,其中位线电压可以附加。可以在所选择的编程阶段中的编程期间增加漏极侧选择栅极电压以适应更大的位线电压。
接下来讨论可以使用的示例存储器系统。一般,可以使用任何类型的非易失性存储器。具有NAND串的存储器仅为示例。图1是使用单个行/列和读/写电路的非易失性存储器系统的框图。该图示出了根据一个实施例的具有用于并行读取并且编程存储元件的页面的读/写电路的存储装置196。存储装置196可以包括一个或更多个存储器管芯(memorydie)198。存储器管芯198包括存储元件的二维存储器阵列155、控制电路110和读/写电路165。结合图4进一步讨论存储器阵列155。
在一些实施例中,存储元件的阵列可以是三维的。存储器阵列155可经由行译码器130通过字线寻址并且可经由列译码器160通过位线寻址。读/写电路165包括多个感测块100并且允许存储元件的页面被并行地读取或编程。通常,控制器150包括在与一个或更多个存储器管芯198相同的存储装置196(例如可移除存储卡)中。命令和数据经由线120在主机与控制器150之间以及经由线118在控制器与一个或更多个存储器管芯198之间传送。
控制电路110与读/写电路165协作以对存储器阵列155执行存储器操作,并且控制电路110包括状态机112、片上地址译码器114和功率控制模块116。状态机112提供芯片级的存储器操作控制。片上地址译码器114提供由主机或存储器控制器使用的地址与由译码器130和160使用的硬件地址之间的地址接口。功率控制模块116控制在存储器操作期间供应给字线和位线的功率和电压。
在一些实现方式中,可以组合图1的组件中的一些。在各种设计中,除存储器阵列155之外的一个或更多个组件(单独地或组合地)可以被认为是管理或控制电路。例如,一个或更多个控制电路可以包括控制电路110、状态机112、译码器114/160、功率控制器116、感测块110(包括图3中的处理器192)、读/写电路165和控制器150等中的任一个或其组合。结合图3进一步讨论感测块100。
在另一实施例中,非易失性存储器系统使用双行/列译码器和读/写电路。在阵列的相对侧以对称的方式实现各种外围电路对存储器阵列155的访问,使得在每侧的访问线(accessline)和电路的密度减少一半。因此,将行译码器分成两个行译码器,并且将列译码器分成两个列译码器。类似地,将读/写电路被分成从阵列155的底部连接位线的读/写电路和从阵列155的顶部连接位线的读/写电路。以此方式,读/写模块的密度实质上减少一半。
图2描述图1的存储器阵列155中的NAND闪速存储器单元的块的框图。存储器阵列可以包括许多块。每个示例块200、210包括许多NAND串和在块间共享的相应位线,例如BL0、BL1……。每个NAND串的一端连接至漏极选择栅极(SGD),并且漏极选择栅极的控制栅极经由共用SGD线而连接。NAND串的另一端连接至漏极选择栅极,该漏极选择栅极反过来连接至共用源极线220。64个字线,例如WL0-WL63在源极选择栅极与漏极选择栅极之间延伸。在一些情况下,在存储器阵列中也可以使用虚拟字线。这些字线不包含用户数据。例如,虚拟字线可以在SGS与WL0之间以及在SGD与WL63之间。这样的虚拟字线可以屏蔽边缘数据字线免受可以由WL0和WL63在特定示例中经历的某些边缘效应(例如某些编程干扰机制或耐久性退化)。
除NAND闪速存储器之外,还可以使用其它类型的非易失性存储器。例如,在闪速EEPROM系统中有用的另一类型的存储器单元采用非传导性介电材料代替传导性浮置栅极以用非易失性方式存储电荷。由二氧化硅、氮化硅以及二氧化硅形成的三层电介质(“ONO”)夹在存储器单元沟道上方的半传导性衬底的表面与传导性控制栅极之间。通过将电子从单元沟道注入到氮化物中对单元进行编程,其中电子被诱捕并且存储在限制区域中。然后,该存储电荷以可检测的方式改变单元的沟道的一部分的阈值电压。通过将热空穴注入到氮化物中来擦除单元。类似的单元可以设置在分离栅极配置中,其中掺杂多晶硅栅极在存储器单元沟道的一部分上延伸以形成分离的选择晶体管。
在另一方法中,使用NROM单元。例如,将两比特存储在每个NROM单元中,其中ONO电介质层在源极扩散区与漏极扩散区之间的沟道中延伸。一个数据比特的电荷局限在邻近漏极的电介质层中,并且另一个数据比特的电荷局限在邻近源极的电介质层中。通过分离地读取电介质中的空间分离电荷存储区域的二进制状态来获得多状态数据存储。其它类型的非易失性存储器也是已知的。
图3是描述感测块的一个实施例的框图。将单个感测块100划分为被称为感测模块180或感测放大器(senseamplifier)的一个或更多个核心部分)、和被称为管理电路190的共用部分。在一个实施例中,将存在用于每个位线的分离的感测模块180和用于多个(例如四个或八个)感测模块180集合的一个公用管理电路190。分组中的感测模块中的每个经由数据总线172与关联的管理电路通信。因此,存在与存储元件集合的感测模块通信的一个或更多个管理电路。
感测模块180包括感测电路170,该感测电路170通过确定所连接的位线中的传导电流是在预定阈值电平以上还是以下来执行感测。感测模块180还包括位线锁存器182,该位线锁存器182用来设定所连接的位线上的电压状况。例如,位线锁存器182中锁存的预定状态将导致所连接的位线被拉至表示编程禁止的状态(例如1.5-3V)。作为示例,flag=0可以禁止编程,而flag=1不禁止编程。
管理电路190包括处理器192、四个示例的数据锁存器集合194-197以及耦接在数据锁存器集合194与数据总线120之间的I/O接口196。可以为每个感测模块提供一个数据锁存器集合,并且可以为每个集合提供由LDL、UDL、DL1和DL2标记的数据锁存器。在一些情况下,可以使用额外的数据锁存器。还参见图16A1和图16A2。LDL存储数据的下部页面的比特,并且UDL存储数据的上部页面的比特。这是在四级存储装置或每个存储元件两比特的存储装置中。可以为每个存储元件中的每个额外数据比特提供每个位线一个额外数据锁存器。DL1和DL2用来存储用于表示关联的存储元件是快速编程还是慢速编程的比特。在一些情况下,额外数据锁存器的数目与多阶段编程操作中的阶段的数目相同,而在其它情况下,额外数据锁存器的数目少于多阶段编程操作中的阶段的数目。下面结合图16A1-16E进一步具体讨论数据锁存器的使用。
处理器192执行计算,例如确定存储在感测到的存储元件中的数据并且将所确定的数据存储在数据锁存器集合中。每个数据锁存器集合194-197用来在读取操作期间存储由处理器192确定的数据比特,并且在编程操作期间存储从数据总线120导入的数据比特,其代表要被编程到存储器中的写入数据。I/O接口196提供了数据锁存器194-197与数据总线120之间的接口。
在读取期间,系统的操作处于状态机112的控制之下,该状态机112控制将不同的控制栅极电压供应到寻址的存储元件。当感测模块180逐步通过与存储器所支持的各种存储器状态对应的各种预定义的控制栅极电压时,感测模块180可以在这些电压之一处跳闸(trip),并且对应的输出将经由总线172从感测模块180提供至处理器192。此时,处理器192通过考虑感测模块的跳闸事件和关于从状态机经由输入线193所施加的控制栅极电压的信息来确定作为结果的存储器状态。然后,处理器192计算存储器状态的二进制编码并且将作为结果的数据比特存储到数据锁存器194-197中。在管理电路190的另一实施例中,位线锁存器182用作双重用途:既用作用于锁存感测模块180的输出的锁存器,也用作如上所述的位线锁存器。
一些实现方式可以包括多个处理器192。在一个实施例中,每个处理器192将包括输出线(未示出),使得输出线中的每个输出线线或(wired-or)在一起。在一些实施例中,输出线在连接至线或线之前反相。该配置使得能够在编程检验处理期间快速确定编程处理何时结束,因为接收线或的状态机可以确定正被编程的所有比特何时已达到期望水平。例如,当每个比特已经达到其期望水平时,用于该比特的逻辑零(或反相的数据1)将被发送至线或线。当所有比特输出数据0(或反相的数据1)时,则状态机知道终止编程处理。因为每个处理器与八个感测模块通信,所以状态机需要读取线或线八次,或者将逻辑增加至处理器192以累积关联位线的结果,使得状态机仅需读取线或线一次。类似地,通过正确地选择逻辑电平,全局状态机可以检测第一比特何时改变其状态并且相应地改变算法。
在编程或检验操作期间,在LDL和UDL锁存器中,在每个存储单元两比特的实现方式中,将要编程的数据(写入数据)从数据总线120存储到数据锁存器集合194-197中。在每个存储元件三比特的实现方式中,可以使用两个上部数据锁存器UDL1和UDL2。在状态机控制下,编程操作包括施加至寻址的存储元件的控制栅极的一系列编程电压脉冲。每个编程脉冲继之以回读(检验)以确定存储元件是否已被编程至期望的存储器状态。在一些情况下,处理器192监测与期望的存储器状态相关的回读存储器状态。当两者一致时,处理器192设置位线锁存器182,使得位线被拉至表示编程禁止的状态。这禁止耦接至位线的存储元件进一步编程,即使编程脉冲出现在其控制栅极上。在其它实施例中,处理器最初载入位线锁存器182,并且感测电路在检验处理期间将其设定为禁止值。
每个数据锁存器集合194-197可以被实现为用于每个感测模块的数据锁存器的堆栈。在一个实施例中,每个感测模块180中存在三个数据锁存器。在一些实现方式中,数据锁存器被实现为移位寄存器,使得其中所存储的并行数据被转换为用于数据总线120的串行数据,并且反之亦然。与M个存储元件的读/写块对应的所有数据锁存器可以被链接在一起以形成块移位寄存器,使得可以通过串行传送来输入或输出数据块。具体地,采用读/写模块的组,使得其数据锁存器集合中的每个将顺序地把数据移进数据总线或从数据总线移出,如同其为用于整个读/写块的移位寄存器的一部分。
数据锁存器在编程操作中识别关联的存储元件何时达到某个里程标志。例如,锁存器可以识别存储元件的Vth在特定的检验电平以下。数据锁存器指示存储元件当前是否从数据页面存储了一个或多个比特。例如,LDL锁存器可以用来存储数据的下部页面。当将下部页面比特存储在关联的存储元件中时,LDL锁存器翻转(例如从0到1)。例如,UDL锁存器可以用来存储器数据的上部页面。当将上部页面比特存储在关联的存储元件中时,UDL锁存器翻转。当关联的存储元件完成编程时,例如当其Vth超过目标检验电平(例如Vva、Vvb或Vvc)时,上述情况发生。当使用UDL1和UDL2时,当将下部、上部比特存储在关联的存储元件中时UDL1翻转,而当将上部、上部比特存储在关联的存储元件中时UDL2翻转。下部、上部比特也可以被称为中部页面比特。
图4描述用于感测的NAND串和组件的配置。在一个实现方式中,感测组件400被设置在图1的感测块100中,并且控制器408通过图1的控制电路110来提供。
在简化的示例中,NAND串412包括分别与字线WL0、WL1、WL2和WL3进行通信的四个存储元件。实际上,可以使用额外的存储元件和字线。另外,额外的NAND串通常被布置为在块或其它非易失性存储元件集合中彼此邻近。存储元件耦接至衬底的p阱区域。除了感测组件400之外,还描述了具有电压Vb1的位线410。具体地,BLS(位线感测)晶体管406耦接至位线410。BLS晶体管406是高电压晶体管,并且在感测操作期间响应于控制器408而打开。BLC(位线控制)晶体管404是低电压晶体管,其响应于控制器408而打开以允许位线与电流感测模块402通信。在感测操作(例如读取或检验操作)期间,预充电操作发生,在该预充电操作中电流感测模块402中的电容器被充电。BLC晶体管404可以被打开以允许预充电。另外,在感测操作期间,将检验电压施加至操作中所涉及的一个或更多个存储元件的字线。
在NAND串430的漏极侧,BLS晶体管410接通,例如导通或打开。另外,将电压Vblc施加至BLC晶体管400以使其导通。电流感测模块402中预充电的电容器通过位线进行放电并且放电至源极,使得源极用作电流吸收器。在NAND串的漏极处的预充电的电容器可以被预充电至超过源极的电势的电势,使得当所选择的存储元件处于导通状态时电流流过所选择的非易失性存储元件并且吸收至源极。
当存储元件处于非导通状态时,预充电的电容器不进行明显放电。在放电周期之后,可以将作为结果的数据传送至管理/控制电路,以监测并且控制每个存储元件的编程。
具体地,如果所选择的存储元件由于Vcgr的施加而处于导通状态,则相对高的电流将流过。如果所选择的存储元件处于非导通状态,则没有电流或相对较小的电流将流过。电流感测模块402可以对单元/存储元件电流icell进行感测。在一个可能的方法中,电流感测模块通过关系式ΔV=i·t/C确定与固定的电流相关的电压降,其中ΔV是电压降,i是固定的电流,t是预定的放电时间段,以及C是电流感测模块中预充电的电容器的电容。更大的电压降代表更高的电流。在给定的放电时间段结束时,因为i和C固定,所以可以确定针对给定电流的ΔV。在一个方法中,使用PMOS晶体管来确定相对于分界值的ΔV的水平。在另一可能方法中,单元电流鉴别器通过确定导通电流是高于还是低于给定的分界电流来用作电流水平的鉴别器或比较器。
相比之下,电压感测不涉及检测与固定的电流相关的电压降。相反,电压感测涉及确定电压感测模块中的电容器与位线的电容之间是否发生电荷共享。在感测期间,电流不是固定的或常数。当所选择的存储元件导通时,很少或没有电荷共享发生,在该情况下,电压感测模块中的电容器的电压没有显著下降。当所选择的存储元件不导通时,发生电荷共享,在该情况下,电压感测模块中的电容器的电压显著下降。
因此,电流感测模块402因此可以通过电流水平来确定所选择的存储单元是处于导通状态还是非导通状态。一般,当所选择的存储元件处于导通状态时更高的电流将流过,而当所选择的存储元件处于非导通状态时较低的电流将流过。当所选择的存储元件分别处于非导通状态或导通状态时,所选择的存储元件的阈值电压在比较电平(例如检验电平或读取电平)以上或以下。
图5描述在编程操作中施加至所选择的字线的编程脉冲。一般,编程操作可以涉及在一个或更多个编程阶段中将脉冲序列施加至所选择的字线,其中该脉冲序列包括继之以一个或更多个检验脉冲的编程脉冲。每个阶段使用各自的编程脉冲系列(staircase)或序列,其从初始电平开始并且逐步上升至完成该阶段的编程所需要的最大电平。当存储元件达到阶段的指定检验电平时,完成该阶段的编程。
注意,编程脉冲可以具有任意数目的不同波形形状。描述了方波,尽管其他形状是可以的,例如多级形状或倾斜形状。脉冲序列500包括一系列编程脉冲505、510、520、525、530、535、540、545、550……,其施加至为编程而选择的字线。编程检验迭代涉及将编程脉冲施加至所选择的字线,继之以通过将一个或更多个检验脉冲施加至所选择的字线来执行一个或更多个检验操作。
在一个可能的方法中,在给定的编程阶段中编程脉冲以固定的步长递增地增加。其它变型是可以的。例如,编程脉冲可以以特定于编程阶段的步长递增地增加。初始和/或最终编程脉冲水平也可以特定于特定的编程阶段。
图6描述可以在多阶段编程操作的不同阶段中施加的编程电压。例如,以Vpgm-init1开始并且以Vpgm-final1结束的波形602代表用于第一编程阶段中每个连续编程脉冲的编程脉冲大小。以Vpgm-init2开始并且以Vpgm-final2结束的波形600使用更小的步长,并且代表用于第二编程阶段中每个连续编程脉冲的更低的编程脉冲大小。用于第二阶段的最终编程脉冲电平通常高于用于初始阶段的最终编程脉冲水平。另外,在第二阶段中,因为Vpgm步长更小,所以与第一阶段相比完成编程需要更多的编程脉冲。另一选项是按照可以由存储装置的ROM熔断参数控制的量为一个编程脉冲提供Vpgm的突然增加。当位线电压提升时,可以施加这个具有较大步长的编程脉冲,以减缓更快编程存储元件。由于在该步骤通过施加位线偏压来减缓更快编程存储元件,所以减小了过编程的风险。对于随后的脉冲,可以与通常一样以固定的步长逐步增加Vpgm。
在三阶段编程操作中,在一个方法中,波形602可以用在第一和第二阶段中,并且波形600可以用在最后或第三阶段中。与第二阶段相比,在第一阶段中还可以使用甚至更大的Vpgm步长,尤其是对于当在第一阶段中仅对LM状态进行编程的情况。
在另一选项中,以Vpgm-init1开始并且以Vpgm-final1a结束的波形604可以用在获得了编程速度数据的阶段中。编程速度数据可以指示存储元件是属于更快存储元件集合还是更慢存储元件集合。波形604包括使用相对大的步长的区域606和610、和使用相对小的步长的区域608。即,在区域608中暂时地减小Vpgm步长。因此,当在多阶段编程操作中将编程脉冲施加至目标字线时,在区分目标字线的更快编程非易失性存储元件与目标字线的更慢编程非易失性存储元件时,暂时地减小编程脉冲的步长。
此方法确保当获得了编程速度数据时使用更小的步长,从而增加了检测准确度。具体地,可以将区域608的开始设定在使得能够以更大的准确度获得编程速度数据的时刻。可以将区域608的结束设定在已获得编程速度数据之后的时刻。例如,可以以固定的脉冲数目来设定区域608的开始和/或结束。或者,可以自适应地设定区域608的开始和/或结束。在以下参照图10B进一步讨论的一个可能方法中,可以在至少指定数目的存储元件(例如存储元件的百分之几)达到检验电平VvaL时设定区域608的开始。在非自适应的方法中,可以将区域608的结束设定为在指定数目的编程脉冲之后发生。或者,在自适应的方法中,可以将区域608的结束设定为当少于指定数目的存储元件(例如存储元件的百分之几)尚未达到VvaL时发生,或等效地,当多于指定数目的存储元件(例如几乎全部存储元件)达到VvaL时发生。
关于图12A、图13B1、图14E和图15B1的编程中的VvaL、图11B和图14B的编程中的VvLM、图13C1的编程中的VvbL以及图15C1的编程中的VvdL,可以采取类似的方法。在一些情况下,当编程至VvLM时,更大的额定Vpgm步长用在LM阶段中,在此情况下该技术相对地更有用。
图7A描述以来回字线顺序对存储元件集合的两阶段编程操作。所描述的组件可以是更大的存储元件集合、字线以及位线的子集。在一个可能的编程操作中,在第一编程阶段中对WLn上的存储元件(被描述为方形)进行编程,如由圆圈“1”所表示的。接下来(“2”),在针对该字线的第一编程阶段中对WLn+1上的存储元件进行编程。在此示例中,当为编程而选择字线时,检验操作发生在每个编程脉冲之后。在对所选择的字线的检验操作期间,将Vread电平电压施加至未选择的字线以接通(使导通)未选择的存储元件,使得可以对所选择的字线进行检验操作,例如检验操作。接下来(“3”),在第二编程阶段中对WLn上的存储元件进行编程。接下来(“4”),在针对该字线的第一编程阶段中对WLn+2上的存储元件进行编程。接下来(“5”),在第二编程阶段中将WLn+1上的存储元件编程至其最终的相应状态。
通过以来回方式对多个阶段中的字线进行编程,减少了趋向于提高并且展宽其阈值电压分布的电容性耦合效应。相比之下,在单个阶段编程中,在移动至下一字线之前完整地对每个字线进行编程。
图7B描述以来回字线顺序对存储元件集合的三阶段编程操作。在上部页面的第一阶段和第二阶段之前执行下部页面的初始编程阶段。第一阶段对数据的下部页面进行编程,第二阶段在第一遍中对数据的上部页面进行编程,以及第三阶段在第二遍中完成数据的上部页面的编程。在“1”处对WLn执行第一阶段,在“2”处对WLn+1执行第一阶段,在“3”处对WLn执行第二阶段,在“4”处对WLn+2执行第一阶段,在“5”处对WLn+1执行第二阶段,在“6”处对WLn执行第三阶段,在“7”处对WLn+3执行第一阶段,在“8”处对WLn+2执行第二阶段,在“9”处对WLn+1执行第三阶段等等。
图8A描述多阶段编程操作的概要。步骤800包括:对于WLn,使用第一初始Vpgm、第一步长和第一检验电平集合执行编程操作的一个阶段。在以下提供的示例中,该阶段可以是所谓的“模糊(foggy)”阶段,其为两阶段编程操作的第一阶段或三阶段编程操作的第二阶段。在四级存储装置中,第一检验电平集合可包括VvaL、VvbL、VvcL,或在八级存储装置中,第一检验电平集合可包括VvaL、VvbL、VvcL、VvdL、Vvel、VvfL和VvgL。步骤802包括:对于WLn+1,使用第一初始Vpgm、第一步长和第一校验电平集合执行编程操作的一个阶段。步骤804包括:对于WLn,使用第二初始Vpgm、第二步长和第二检验电平集合执行编程操作的下一阶段。在四级存储装置中,检验电平的第二集合可以包括Vva、Vvb、Vvc,或在八级存储装置中,检验电平的第二集合可以包括Vva、Vvb、Vvc、Vvd、Vve、Vvf和Vvg。第一集合的检验电平偏离第二集合的检验电平,使得第一集合的每个检验电平低于第二集合的相应检验电平。
步骤806包括:对于WLn+2,使用第一初始Vpgm、第一步长和第一检验电平集合执行编程操作的一个阶段。步骤808包括:对于WLn+1,使用第二初始Vpgm、第二步长和第二检验电平集合执行编程操作的下一阶段。处理相应地继续,直至已经对所有数据进行了编程。
图8B描述图8A的多阶段编程操作中的步骤800、802或806的细节。步骤810包括:在没有将减缓措施施加至所选择的存储元件的情况下,使用第一检验电平集合进行编程。Vth超过第一集合中的检验电平的存储元件被锁定以免被进一步编程,例如通过将关联的位线电压提升至这样的电平,该电平足够高以在编程期间关断SGD并且隔离导致升压的关联沟道,这禁止存储元件被进一步编程。在步骤812,在指定时间,例如当检测到指定的触发条件时,区分更快编程存储元件和更慢编程存储元件。例如,该区分可以对所有编程的数据状态(擦除状态之外的数据状态)进行。以用于识别和区分更快编程存储元件和更慢编程存储元件的信息(编程速度数据)对锁存器进行更新。例如,与存储元件关联的锁存器中的一个比特值(0或1)可以表示慢状态,而另一个比特值(1或0)可以表示快状态。
注意,在本文中“慢”和“快”标记指的是自然Vth分布中的存储元件的Vth的位置。在编程期间,当自然Vth分布变得更高时,达到稳定状态,在该稳定状态下所有存储元件Vth以几乎相同的步调偏移(一般,在一个编程脉冲接近于编程期间使用的Vpgm步长之后,Vth向上移动)。但是,因为自然Vth分布接近于高斯分布形状,所以一半的存储元件属于分布的更高的一半、或主导的一半。这些存储元件被称为“快的”,而其它的、滞后的一半中的存储元件被称为“慢的”。存储元件慢或快的度量简单地表示存储元件的Vth离自然Vth分布的极端下部尾部和极端上部尾部有多接近或有多远。
步骤814包括:在将基于编程速度的减缓措施施加至更快编程存储元件、并且没有将基于编程速度的减缓措施施加至更慢编程存储元件的同时,使用第一检验电平集合继续进行编程。在一个方法中,在当前编程阶段的每个随后的剩余编程脉冲之前,从锁存器读取编程速度数据,并且使用该编程速度数据确定是否对每个存储单元施加减缓措施。例如,存储器芯片上的控制电路(例如图1和图3的感测块)可以读取数据锁存器。假定锁存器中的“0”表示更快编程存储元件,而锁存器中的“1”表示更慢编程存储元件。如果读取了“0”,则响应于锁存器施加减缓措施。如果读取了“1”,则响应于锁存器不施加减缓措施。不迟于下一个编程脉冲发生的时间,存储器芯片上的控制电路已丢失了在之前的编程脉冲上对每个存储元件使用了何种位线偏压的历史。所以,控制电路需要再次读取锁存器以确定哪些存储元件需要接受减缓措施。不管编程阶段,对施加了减缓措施的每个编程脉冲重复该处理。
阈值电压超过第一检验电平集合中的检验电平的存储元件被锁定。继续该编程,直至编程阶段完成。基于编程速度的减缓措施旨在与不是基于检测到的编程速度并且可以施加的任何其它类型的减缓措施相区分。例如,在一些情况下,当提升的位线电压接近目标检验电平时,基于存储元件的阈值电压施加提升的位线电压。在此情况下,基于编程速度的减缓措施可以是位线电压的额外增加。
图8C描述图8A的多阶段编程操作的步骤804或808的细节。在步骤820,读取在步骤812存储了编程速度数据的锁存器集合,以识别更快编程存储元件和更慢编程存储元件。步骤822包括:使用第二检验电平集合进行编程,其中第二集合中的每个电平高于第一集合中的对应电平。将基于编程速度的减缓措施施加至更快编程存储元件,而没有将基于编程速度的减缓措施施加至更慢存储元件。阈值电压超过第二检验电平集合中的检验电平的存储元件被锁定。执行这个,直至编程阶段完成。这也可以表示整个编程操作的完成,在此情况下,在步骤824重置锁存器,使得锁存器可以被另一字线上的存储元件使用。
图8D结合三阶段编程操作描述步骤800和804的细节,其中在三阶段编程操作的第二阶段中,在更高状态存储元件之前,针对更低状态存储元件区分指定的第n个字线WLn的更快编程存储元件和更慢编程存储元件。步骤830,在第一编程阶段(被称为LM(下部-中部)阶段),在不施加基于编程速度的减缓措施的情况下,使用VvLM对更高状态存储元件进行编程,直至第一编程阶段完成。当所有更高状态存储元件的Vth达到VvLM时,完成第一编程阶段。尚未执行编程速度检测。
注意,对要被编程至检验电平的“所有”存储元件的提及旨在包括未被省略的所有存储元件。例如,数据页面可以是存储在64K存储元件中的8KB。存储元件的一小部分将是有缺陷的,其具有物理缺陷或可以使其编程非常缓慢的一些其它问题,从而需要额外的编程脉冲。例如,平均来说,评估可以确定64K存储元件中的32个可能是有缺陷的。所以,在编程期间,不必具体地知道那些比特是好的还是坏的,可以选择忽略32比特,并且不强制对其进行编程。从编程性能的角度来看,忽略一些存储元件并且使用ECC对其进行校正更为有效。可以通过关于ROM熔断的参数来确定将被忽略的存储元件的数目。
在该阶段不对更低状态存储元件进行编程,并且保留在擦除状态。在四状态实现方式中,更低状态可以是A状态,而更高状态可以是B状态和C状态。在八状态实现方式中,更低状态可以是A状态、B状态和C状态,而更高状态可以是D状态、E状态、F状态和G状态。16状态或其它实现方式也是可以的。更低状态存储元件旨在通过编程操作的完成而被编程至更低目标数据状态,以代表该目标数据状态的数据。类似地,更高状态存储元件旨在通过编程操作的完成而被编程至更高目标数据状态,以代表该目标数据状态的数据。
一旦对WLn完成了第一编程阶段,则可以在步骤832对另一字线进行编程。例如,这可以是对WLn+1的第一LM编程阶段(参见图7B)。
在步骤834,开始被称为模糊阶段的第二编程阶段。在本文中,在不施加基于编程速度的减缓措施的情况下,使用第一更低检验电平集合对具有所有目标数据状态的存储元件进行编程。尚未执行编程速度检测。
在步骤836,在指定时间,在更低状态存储元件中区分更快编程存储元件和更慢编程存储元件,并且相应地更新锁存器。在更高状态存储元件中还未区分更快编程存储元件和更慢编程存储元件。以下进一步讨论用于区分更快编程存储元件和更慢编程存储元件的示例实现方式。
在步骤838,在使用第一更低检验电平集合对所有数据状态进行编程的情况下,继续第二(模糊)编程阶段。另外,将基于编程速度的减缓措施施加至更快编程更低状态存储元件,并且没有将基于编程速度的减缓措施施加至更慢编程更低状态存储元件、或尚未确定速度的更高状态存储元件。
在步骤840,在指定时间,在更高状态存储元件中区分更快编程存储元件和更慢编程存储元件,并且相应地更新锁存器。可以在步骤836和840中更新共用的锁存器集合。
在步骤842,在使用第一更低检验电平集合对所有数据状态进行编程的情况下,继续第二(模糊)编程阶段。将基于编程速度的减缓措施施加至更快编程更低状态和更高状态存储元件,并且没有将基于编程速度的减缓措施施加至更慢编程更低状态和更高状态存储元件。继续此处理直至完成第二编程阶段。当所有存储元件(少于比特忽略数目的存储元件)的Vth达到第一更低检验电平集合中关联的检验电平时,第二阶段编程结束。
步骤844包括对一个或更多个其它字线进行编程。例如,这可以包括WLn+2的第一LM阶段(参见图7B中的项目“4”)、继之以WLn+1的第二阶段(参见图7B中的项目“5”)。
在步骤846,当针对第三阶段开始WLn的编程时,读取锁存器以识别更快编程存储元件。
步骤848涉及第三(精细(fine))编程阶段,其使用第二更高检验电平集合对所有数据状态进行编程。另外,将基于编程速度的减缓措施施加至更快编程更低状态和更高状态存储元件,并且没有将基于编程速度的减缓措施施加至更慢编程更低状态和更高状态存储元件。继续此操作,直至第三编程阶段并且整个编程操作完成。当所有存储单元(少于比特忽略数目的存储元件)的Vth达到第二更高检验电平集合中关联的检验电平时,第三阶段编程结束。
图8E结合三阶段编程操作描述步骤800和804的细节,其中在三阶段编程操作的第一阶段中针对更高状态存储元件区分更快编程存储元件和更慢编程存储元件,并且其中在三阶段编程操作的第二阶段中针对更低状态存储元件区分更快编程存储元件和更慢编程存储元件。这是图8D的替选。
在步骤860,在第一(LM)编程阶段中,在不施加基于编程速度的减缓措施的情况下,使用VvLM对更高状态存储元件进行编程。在步骤862,在指定时间,在更高状态存储元件中区分更快编程存储元件和更慢编程存储元件,并且相应地更新锁存器。
步骤864在将基于编程速度的减缓措施施加至更快编程更高状态存储元件、以及没有将基于编程速度的减缓措施施加至更慢编程更高状态存储元件的情况下,通过使用VvLM对更高状态存储元件进行编程,来继续第一(LM)编程阶段。继续此操作直至编程阶段完成。
步骤866包括对另一字线进行编程。例如,这可以是WLn+1的第一LM阶段(参见图7B中的“2”)。
在步骤868,在将基于编程速度的减缓措施施加至更快编程更高状态存储元件、以及没有将基于编程速度的减缓措施施加至更慢编程更高状态存储元件或尚未未确定速度的更低状态存储元件的情况下,通过使用第一更低检验电平集合对所有数据状态进行编程来开始第二(模糊)编程阶段。
如结合图8D所讨论地执行步骤836、842、844、846以及848。
图9A描述包括更快编程存储元件904和更慢编程存储元件902的存储元件集合的自然阈值电压分布900。自然Vth分布可以被定义为当存储元件集合处于稳定状态情况下时所得到的Vth分布,在稳定状态情况下利用每个编程脉冲得到近似常数的Vth变化。例如,可以在没有检验或锁定操作的情况下,将一些编程脉冲施加至存储元件集合,以实现和测量代表自然Vth分布的分布。
如上所述,当自然Vth变得更宽时,每个数据状态所需要的检验操作的数目也增加,从而通过增加整体编程时间而使编程性能退化。为了克服此问题,可以通过在一个或更多个编程阶段中检测更快编程存储元件并且施加基于编程速度的减缓措施(例如提升的位线电压)来减少在多阶段编程操作中的自然Vth分布。施加在存储元件上的“基于编程速度的减缓措施”是基于之前检测到的存储元件的编程速度(例如,确定存储元件是字线的存储元件集合中的相对快速编程存储元件)的减缓措施。提出了如下方案:通过减缓快速存储元件来减小更快编程存储元件与更慢编程存储元件之间的编程速度差别,该方案可以人工紧缩自然Vth分布。
在针对给定字线的编程阶段期间识别快速存储元件,并且将该信息保存在数据锁存器中。使用该信息,通过在编程期间施加位线偏压来减缓快速编程元件。这有效地紧缩了自然Vt分布,因此减少了完成所有存储元件的编程所需要的检验操作的数目。该方法可以改进编程性能而不会显著影响已编程的Vth分布,因此避免了错误数目的增加。通过仅减缓更快编程存储元件,更快编程存储元件的编程速度变为更接近于更慢存储元件的编程速度,从而有效地紧缩了自然Vt分布。
图9B描述存储元件集合的紧缩的自然阈值电压分布906及其宽度。以量ΔVth来紧缩分布。在此,出于描述的目的,示出了自然Vth分布即使在紧缩或压缩之后仍保持其高斯分布形状,但是实际上,由于压缩之后存储元件的Vth在分布中的重新分布,分布将会失去其高斯形状。
图9C描述对存储元件进行编程所需要的Vpgm与施加至同该存储元件关联的位线的位线电压之间的关系。x轴描述增加的位线电压(Vbl),而y轴描述为完成存储元件的编程所需要的Vpgm。因此,在给定的Vpgm,如果将Vbl施加至与存储元件关联的位线,则可以减小该存储元件的编程速度。
一般,存储元件的编程速度降低的程度以常数与位线电压成比例,该常数为所描述的曲线的斜率。该常数通常大于一,因为Vbl增加1V,例如ΔVbl=1V,则需要Vpgm增加多于1V以进行偏移。在图9B中,ΔVth等于ΔVb乘以常数。因此,增加Vbl是控制编程速度和紧缩自然Vth分布的有力工具。
然而,无法使Vbl变得过高,因为其主要受Vsgd(漏极侧选择栅极)余量窗口(marginwindow)限制。
接下来针对两阶段和三阶段编程操作讨论特定的示例实现方式。该技术还可以扩展至额外的阶段。
图9D描述示例编程场景。在示例1中,存储元件各自储存两个比特,使用两个编程阶段,以及在第一阶段中针对所有编程状态的所有存储元件获得编程速度数据。在示例2中,存储元件各自储存两个比特,使用三个编程阶段,以及在第一阶段中针对更高状态存储元件获得编程速度数据。在示例3中,存储元件各自储存两个比特,使用三个编程阶段,以及在第一阶段针对更高状态存储元件获得编程速度数据,并且在第二阶段针对更低状态存储元件获得编程速度数据。在示例4中,存储元件各自储存两个比特,使用三个编程阶段,以及在第二阶段针对更低状态存储元件获得编程速度数据,然后针对更高状态存储元件获得编程速度数据。在示例5中,存储元件各自储存三个比特,使用三个编程阶段,以及在第一阶段针对更高状态存储元件获得编程速度数据,然后在第二阶段针对更低状态存储元件获得编程速度数据。在示例6中,存储元件各自储存三个比特,使用三个编程阶段,以及在第二阶段针对更低状态存储元件获得编程速度数据,然后针对更高状态存储元件获得编程速度数据。以下讨论这些示例中的每个。
示例1
第一实施方式涉及图10A、图10B、图10C、图10E、图10F、和图10G的序列。第二实现方式涉及图10A、图10B、图10D、图10E、图10F和图10G的序列。在此示例中,从图10A至图10E的流程例如对应于图7A中的步骤“1”,并且从图10F至图10G的流程对应于图7A中的步骤“3”。在图16B的对应步骤中说明锁存器的使用。在两个实现方式中,在第一阶段针对所有存储元件获得编程速度数据,该信息被保存至数据锁存器,并且在第一阶段的剩余时间以及整个第二阶段中,将基于编程速度的减缓措施施加至更快编程存储元件。
图10A描述两阶段编程操作的第一阶段的开始,其中所有存储元件处于擦除状态。分布1000代表擦除(E)状态。VvaL、VvbL以及VvcL是第一更低检验电平集合,并且Vva、Vvb以及Vcc是第二更高检验电平集合。在一些情况下,因为可以容忍更宽的分布,所以一个或更多个最高数据状态可以不使用更低检验电平。
图10B描述在两阶段编程操作的第一阶段中跟随图10A的情况,其中最小数目的存储元件具有Vth>VvaL。在此,已将许多编程脉冲施加在连续的编程检验迭代中。关于检验操作,注意,不是所有目标状态都需要在每个编程脉冲之后进行检验。相反,被检验的特定状态可以适应于整个编程阶段的进展,使得在编程阶段的早期检验更低状态而不是更高状态,然后检验大多数状态或所有状态,然后由于所有更低状态存储元件锁定了,所以检验更高状态而不是更低状态。分布1002的宽度可比得上或小于自然Vth分布。当施加了编程脉冲时,存储元件的阈值电压稳定地增加。例如当最小数目的存储元件达到VvaL(即其Vth超过VvaL)时,满足触发计数器的情况。分布1002的区域1004代表Vth>VvaL的存储元件。达到VvaL的存储元件的数目可以根据感测放大器中的锁存器的比特扫描来确定,该感测放大器存储用于表示检验操作结果的数据。在检验操作中,当存储元件及其位线被感测为未导通时,比特将在感测放大器中翻转,从而表示Vth>VvaL。注意,可以对所有存储元件以VvaL执行检验操作而不管其目标数据状态。
对每个额外的编程脉冲进行计数,直至施加了指定数目m>0的脉冲。可以基于非易失性存储元件的典型的期望的自然Vth分布宽度来设定该数目,使得当计数完成时,目标字线的非易失性存储元件的指定部分近似地具有超过VvaL的阈值电压。指定部分可以是一半,使得存储元件的一半被分类为更快编程,而另一半被分类为更慢编程。指定部分是这样的数目“m”,该数目“m”可以在多个分组中的多个存储装置上进行优化,以获得对于编程性能而言可以最大化利益的合适值。当完成计数时,以VvaL执行检验操作以将更快编程存储元件识别为具有Vth>VvaL的存储元件,使得其在检验操作中为非导通的,并且更慢编程存储元件具有Vth<VvaL,使得其在检验操作中为导通的。可以在数据锁存器集合中(例如在DL1(参见图3、图16A1至图16E)中)设置比特,该比特识别特定字线的每个存储元件的更快状态或更慢状态。
VvaL被定义为检验电平,其可以被选择为用于区分编程速度的合适的检查点,因为其还用来检验将A状态作为其目标数据状态的存储元件。当A状态存储元件的Vth超过VvaL时,可以锁定A状态存储元件以免在当前编程阶段中进一步编程,而B状态和C状态存储元件将继续编程直至其分别达到VvbL和vVCL。代替VvaL,可以使用与目标数据状态关联或无关联的另一检验电平,作为用于触发脉冲计数、和/或用于区分更快编程存储元件和更慢编程存储元件的条件。
图10C描述在两阶段编程操作的第一阶段中、在施加了额外数目的“m”个编程脉冲之后的跟随图10B的第一替选,其中使用检验电平VvaL来区分更快编程存储元件和更慢编程存储元件。在此,Vth分布1003包括分别用于更快编程存储元件和更慢编程存储元件的区域1008和1010。分布1006代表将A状态作为目标状态并且已达到VvaL的存储元件部分。注意,分布1006中的存储元件会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标A状态。当满足条件(例如已经施加的额外数目的编程脉冲的计数)时,进行更快编程存储元件和更慢编程存储元件的区分。
图10D描述在两阶段编程操作的第一阶段中、在施加了额外数目的“k”个编程脉冲之后的跟随图10B的第二替选的情况,并且使用读取电平Vv区分更快编程存储元件和更慢编程存储元件。Vv与目标数据状态无关联。在一个方法中,Vv还用于非易失性存储元件集合的读取操作,例如用来区分E状态和A状态。
例如,Vv可以以自然Vth分布的宽度的大约一半在VvaL以下。替选地,可以在最小数目的存储元件达到VvaL时进行区分而不对额外的编程脉冲进行计数。在此,Vth分布1005包括分别用于更快编程存储元件和更慢编程存储单元的区域1014和1016。分布1012代表将A状态作为目标状态并且已达到VvaL的存储元件部分。注意,分布1012中的存储元件会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标A状态。可以使用适当的检验电平,基于编程速度来区分两类或更多类存储元件。一般,k<m,k>0以及m>0,从而当在图10D中使用k计数时,当在图10C中使用m计数时,可以更快地进行编程速度确定。更快地区分更快编程存储元件和更慢编程存储元件的优点是可以更快地使用该信息来减缓更快编程存储元件,从而紧缩随后编程脉冲的自然Vth分布。此方法的缺点是需要以Vv进行的额外的感测操作。另外,如果在编程阶段中过快地获得编程速度数据,例如在存储元件的Vth分布展开至接近于自然Vth分布的宽度、以及存储元件达到其稳定状态(在稳定状态下存储元件的Vth以接近于Vpgm步长的速率上移)之前,则该编程速度数据可能较不可靠。图10C的方法的优点是不需要额外的感测操作,因为已经将VvaL用作与目标状态关联的检验电平。
图10E描述在两阶段编程操作的第一阶段中从图10C或图10D的情况起的编程。描述了从图10C的分布1003起的继续编程,当将剩余的A状态存储元件编程至VvaL(分布1006)时,如果没有使用更低检验电平,则朝向VvbL对B状态存储元件进行编程(分布1030)以及朝向VvcL或Vvc对C状态存储元件进行编程(分布1040)。注意,在两阶段编程操作的第一阶段中,可以使用由图6中的波形602所描述的更大Vpgm步长。在第一阶段结束时达到图10F的分布。
图10F描述在两阶段编程操作的第二阶段的开始处的跟随图10E的情况。第二阶段可以使用由图6中的波形600所描述的更小Vpgm步长,使得存储元件的Vth更加缓慢地增长,从而避免目标检验电平的大的过冲。还可以实现升高的位线,该升高的位线不是基于编程速度,但是当存储元件的Vth在目标数据状态的更低校验电平和更高检验电平之间时和/或在指定的编程阶段中施加该升高的位线。这是额外的减缓措施,其不是基于编程速度的减缓措施,并且可以利用基于编程速度的减缓措施将额外的减缓措施实现为例如额外的Vbl增加。注意,由于当在第一阶段与第二阶段之间对一个或更多个其它字线进行编程时的电容性耦合和其它干扰效应,分别将A状态、B状态以及C状态的分布1020、1031以及1041示出为分别相对于分布1006、1030以及1040而被展宽。
图10G描述在两阶段编程操作的第二阶段中从图10F的情况起的编程。使用第二检验电平集合,即Vva、Vvb以及Vvc来提供到分布1022、1032以及1042的转变。有利地,与分布1020、1031以及1041相比,紧缩Vth分布1022、1032以及1042。一般,当紧缩Vth分布时,分布的上部尾部轻微地移动,而主要移动是在下部尾部。
示例2
另一实施方式涉及图11A、图11B、图11C、图11D、图11E、图11F以及图11G的序列。在第一阶段中,针对更高状态存储元件获得编程速度数据,该信息被保存在数据锁存器中,以及在第一阶段的剩余时间中以及在整个第二阶段和第三阶段中,将基于编程速度的减缓措施施加至更快编程更高状态存储元件。在编程操作中未针对更低状态存储元件获得编程速度数据。
在此示例中,从图11A至图11D的流程例如对应于图7B中的步骤“1”,从图11E至图11F的流程对应于图7B中的步骤“3”,以及图11G中的流程对应于图7B中的步骤“6”。在图16C1或图16C2的对应步骤中说明锁存器的使用。
图11A描述三阶段编程操作的第一阶段的开始,其中对于四级存储装置,所有存储元件处于擦除状态。第一阶段可以是之前所述的LM阶段,其中更低状态存储元件保持在擦除状态1100,而使用检验电平VvLM将更高状态存储元件编程至中间(LM)状态。
图11B描述在三阶段编程操作的第一阶段中跟随图11A的情况,其中最小数目的更高状态存储元件具有Vth>VvLM。在分布1102中,区域1104代表Vth>VvLM的更高状态存储元件。一旦最小数目的更高状态存储元件达到VvLM,计数器开始并且针对每个额外的脉冲而增加。第一阶段可以使用相对更大的Vpgm步长。
图11C描述在三阶段编程操作的第一阶段中、在施加了额外数目的“m”个编程脉冲之后的跟随图11B的情况,其中使用读取电平Vvh来区分更快编程更高状态存储元件和更慢编程更高状态存储元件。当完成m>1个额外编程脉冲的计数时,Vth分布1103包括分别用于更慢和更快编程更高状态存储元件的区域1108和区域1110。分布1106代表已被验证为已经达到VvLM的更高状态存储元件部分。注意,分布1106中的存储元件会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标LM状态。Vvh是更高的读取电平,因为其被用来验证更高状态存储元件。在第一阶段的剩余时间,当施加每个编程脉冲时,没有将基于编程速度的减缓措施施加至更慢编程更高状态存储元件,而将基于编程速度的减缓措施施加至更快编程更高状态存储元件。
图11D描述在三阶段编程操作的第二阶段的开始时的跟随图11C的情况。从图11C继续进行编程,使得分布1103转变成分布1120,其中在第一阶段结束时所有更高状态存储元件达到了中间(LM)状态。在第一阶段与第二阶段之间,对另一字线进行编程。仅在目标字线上开始第二阶段之前,读取锁存器以识别在目标字线上的更快和更慢编程更高状态存储元件。使用锁存器中的信息,可以以标定的方式(例如通过不施加基于编程速度的减缓措施)来处理更慢编码更高状态存储元件。相比之下,当施加每个编程脉冲时,可以将基于编程速度的减缓措施(例如提升位线电压)施加至更快编程更高状态存储元件。注意,在此示例中,没有针对更低状态存储元件获得了或将获得编程速度数据。基于编程速度的减缓措施仅到更快编程的B状态和C状态存储元件的施加仍可以提供减少B状态和C状态存储元件的有效的自然Vth分布的益处,因此减少B状态和C状态所需的检验操作的数目,因此改进编程性能。
图11E描述在三阶段编程操作的第二阶段中跟随图11D的情况的更低状态和更高状态存储元件的编程。在此阶段中,更低状态存储元件或者保持在擦除状态,或者在不施加基于编程速度的减缓措施的情况下使用VvaL将更低状态存储元件编程至A状态(分布1130)。在施加基于编程速度的减缓措施的情况下,分别使用VvbL和VvcL将更高状态存储元件从中间(LM)状态编程至B状态(分布1140)或C状态(分布1150),直至在第二阶段结束时达到图11F的分布。第二阶段可以使用相对更大的Vpgm步长。
注意,在一些实施例中,更低状态存储元件的Vth转变通常会发生在更高状态存储元件的Vth转变之前。这是正确的,因为Vpgm从低的初始电平逐步升高,并且初始地高到仅够移动更低状态存储元件的Vth。仅当Vpgm变得更高时,更高状态存储元件的Vth才会开始增加。类似的观测适用于其它图。
图11F描述跟随图11E的情况的三阶段编程操作的第三阶段的开始。第三阶段可以使用相对更小的Vpgm步长。注意,由于当对一个或更多个字线进行编程时的耦合和干扰效应,可以展宽Vth分布。
图11G描述在三阶段编程操作的第三阶段中从图11F的情况起的编程。在不施加基于编程速度的减缓措施的情况下使用Vva将A状态存储元件编程至分布1132,使用Vvb将B状态存储元件编程至分布分布1142,以及使用Vvc将C状态存储元件编程至分布1152。正如在第二阶段开始时,在目标字线上开始第三阶段之前,读取锁存器以在目标字线上识别更快编程和更慢编程更高状态存储元件。使用锁存器中的信息,将基于编程速度的减缓措施施加至更快编程B状态和C状态存储元件,但是不施加至更慢编程B状态和C状态存储元件。
示例2A
接下来讨论与示例2相关的替选,其涉及两阶段编程操作。图11H描述在两阶段编程操作的第二阶段中、跟随图11D的情况的更低状态和更高状态存储元件的编程,以作为图11F和图11G的替选。在此示例中,从图11A至图11D的流程例如对应于图7A中的步骤“1”,并且图11H中的流程对应于图7A中的“3”。编程操作包括LM阶段和第二阶段,可以将其称为UP编程阶段。此编程操作对下部页面进行编程,然后对上部页面进行编程。此编程操作快于三阶段编程操作。在此方法中,仅需要两个额外的锁存器DL1和DL2。在图16C3中描述锁存器的使用。
示例3
另一实现方式涉及11A-11D、12A-12C、11F以及11G的序列。在第一阶段中,针对更高状态存储元件获得编程速度数据并且将其保存至锁存器,以及在第一阶段的剩余时间以及整个第二阶段和第三阶段中,将基于编程速度的减缓措施施加至更快编程更高状态存储元件。在第二阶段中,针对更低状态存储元件获得编程速度数据,并且在第二阶段的剩余时间以及整个第三阶段中将基于编程速度的减缓措施施加至更快编程更低状态存储元件。
在此示例中,从图11A至图11D的流程例如对应于图7B中的步骤“1”,从图12A-12C、然后到11F的流程对应于图7B中的步骤“3”,以及图11G中的流程对应于图7B中的步骤“6”。在图16D1或图16D2的对应步骤中说明锁存器的使用。
图12A描述在三阶段编程操作的第二阶段的第一替选的开始时的跟随图11D的情况的编程,其中最小数目的更低状态存储元件具有Vth>VvaL。重复E状态分布1100和LM分布1120。当施加了每个连续的编程脉冲时,针对A状态存储元件(更低状态存储元件),分布1100转变为分布1202,并且针对更高状态存储元件,分布1120转变为B状态分布1230和C状态分布1240。基于在第一阶段期间针对更高状态存储元件获得的编程速度数据,可以将基于编程速度的减缓措施施加至更快编程B状态和C状态存储元件。
在分布1202中,区域1204代表Vth>VvaL的更低状态存储元件。一旦最小数目的更低状态存储元件达到VvaL,计数器开始并且针对每个额外的编程脉冲而增加。第二阶段可以使用相对更大的Vpgm步长。
在图12A-12C中,更低状态存储元件的Vth转变通常会发生在更高状态存储元件的Vth转变之前。
图12B描述在三阶段编程操作的第二阶段中、在施加了额外数目的“k”个编程脉冲之后的跟随图12A的情况,并且使用读取电平Vvl区分更快编程和更慢编程更低状态存储元件。当k个额外编程脉冲的计数完成时,Vth分布1203包括分别用于更慢编程和更快编程存储元件的区域1207和区域1208。分布1209代表已被检验为已达到VvaL的A状态存储元件部分。注意,分布1209中的存储元件会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标A状态。Vvl是更低读取电平,因为其用来读取更低状态存储元件。继续将基于编程速度的减缓措施施加至更快编程B状态和C状态存储元件。
图12C描述在三阶段编程操作的第二阶段的第一替选中、跟随图12B的情况的更低状态和更高状态存储元件的编程。此时,用于更低状态和更高状态存储元件的编程速度数据均是已知的,所以可以将基于编程速度的减缓措施施加至更快编程A状态存储元件以及更快编程B状态和C状态存储元件。当继续进行编程时,额外的A状态存储元件达到分布1210。可以在第二阶段结束时达到图11F的分布,并且可以如结合图11G所讨论的那样来执行第三阶段。
示例4
另一实现方式涉及图11A、图13A、图13B1/13C1、图13B2/13C2、图13D以及图11G的序列。在第一阶段中,没有获得编程速度数据。在第二阶段中,获得用于更低状态和更高状态存储元件的编程速度数据,并且在第二阶段的剩余时间以及整个第三阶段中将基于编程速度的减缓措施施加至更快编程更低状态和更高状态存储元件。
在此示例中,从图11A至图13A的流程例如对应于图7B中的步骤“1”,从图13B1/13C1至图13D的流程对应于图7B中的步骤“3”,以及图11G中的流程对应于图7B中的步骤“6”。在图16E的对应步骤中说明锁存器的使用。
图13A描述三阶段编程操作的第二阶段的第二替选的开始,其中使用更低的中间检验电平VvLMx来代替VvLM。重复图11A的E状态分布1100。在第一阶段结束时达到此情况。还描述了更低的LM分布1310。如果LM分布与作为更高状态(在此情况中为B状态)的最低状态的下一更高分布过于接近和/或重叠,则将不可以可靠地检测更高状态存储元件的相对编程速度。作为结果,可以使中间检验电平(VvLMx)变得更低,以在用于更高目标数据状态(在此情况中为B状态)的最低目标数据状态的检验电平以下,使得确保存储元件在不迟于存储元件的Vth开始达到VvbL的时间达到其稳定状态。这将使相对编程速度确定更加准确。为了实现这个,VvLMx与VvbL之间的间隙通常应当是大于非易失性存储元件集合的期望的自然阈值电压宽度的量。即,VvbL-VvLMx>自然Vth宽度。VvLMx表示比之前图中的VvLM更低的检验电平。利用在第一阶段中所使用的VvLMx,实现了图13A的分布(包括中间分布1310)。
在第二阶段编程期间,首先将进行从图13B1到图13B2的转变,继之以从图13C1和图13C2的转变,因为在相同编程阶段中,更低状态存储元件达到VvaL将比更高状态存储元件达到VvbL更早。类似地,将在可以达到图13C1的条件之前达到图13B1的条件。为了清楚起见,分别示出了图13B1和图13C1。类似地,为了清楚起见,分别示出了图13B2和图13C2。使用读取电平Vvl来获得用于更低状态存储元件的编程速度数据,并且使用读取电平Vvh来获得用于更高状态存储元件的编程速度数据。图13B1和图13B2示出了涉及更低状态存储元件的转变,并且图13C1和图13C2示出了涉及更高状态元件的转变。
图13B1描述在三阶段编程操作的第二阶段的第二替选中、跟随图13A的情况,其中最小数目的更低状态存储元件具有Vth>VvaL。在分布1302中,区域1304代表Vth>VvaL的更低状态存储元件。一旦最小数目的更低状态存储元件达到VvaL,计数器开始并且针对每个额外的编程脉冲而增加。第二阶段可以使用相对更大的Vpgm步长。
图13B2描述在施加了额外数目的“k1”个编程脉冲之后的跟随图13B1的情况,并且使用读取电平Vvl区分更快编程和更慢慢编程更低状态存储元件。当k1个额外编程脉冲的计数完成时,Vth分布包括分别用于更快编程和更慢编程更低状态存储元件的区域1308和区域1310。分布1316代表已被检验为已经达到VvaL的A状态存储元件部分。注意,分布1316中的存储元件会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标A状态。Vvl是更低的读取电平。没有施加基于编程速度的减缓措施,直至使用读取电平Vvl区分更快编程和更慢编程的更低状态存储元件。
此时,将用于更低状态存储元件(例如A状态存储元件)的编程速度数据保存至数据锁存器。使用数据锁存器中的编程速度数据,可以在该阶段的剩余时间将基于编程速度的减缓措施施加至更低状态存储元件。编程可以继续,同时将基于编程速度的减缓措施施加至更快编程更低状态存储元件,但是不施加至更慢编程更低状态存储元件。通常,一旦对存储元件集合进行了编程速度确定并且将编程速度保存至数据锁存器,最大的好处是通过将减缓措施施加在存储元件集合中的更快编程存储元件上,开始在随后的编程期间使用编程速度数据。以后,一旦对剩余的存储元件集合进行了编程速度确定,则更新数据锁存器,并且在剩余的编程中将减缓措施施加在所有存储元件上。
图13C1描述在三阶段编程操作的第二阶段的第二替选中、跟随图13A的情况(并且通常会跟随图13B2),其中最小数目的更高状态存储元件具有Vth>VvbL。通过从中间(LM)状态1310对更高状态存储元件进行编程来达到分布1312。在分布1312中,区域1314代表Vth>VvbL的更高状态存储元件。VvbL是更高状态中的最低状态的检验电平。一旦最小数目的更高状态存储元件达到VvbL,计数器开始并且针对每个额外的编程脉冲而增加。
图13C2描述在三阶段编程操作的第二阶段的第二替选中、在施加了额外数目的“k2”个编程脉冲之后的跟随图13C1的情况,并且使用读取电平Vvh区分更快编程和更慢编程更高状态存储元件。当k2个额外编程脉冲的计数完成时,Vth分布1322包括分别用于更慢编程和更快编程更高状态存储元件的区域1326和1328。分布1324代表已被检验为已经达到VvbL的B状态存储元件部分。注意,分布1324中的存储元件将会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标B状态。Vvh是更高的检验电平。注意,k1和k2表示可以用于确定更低状态和更高状态存储元件的编程速度的不同计数器。简单来说,k1可被设定为与k2相同的值。注意,不管已经计数的编程脉冲的数目,计数的开始可以不同。即,触发计数开始的图13B1和图13C1的条件可以在不同的时间发生。
图13D描述在三阶段编程操作的第二阶段的第二替选中、跟随图13C1和图13C2的情况的更低状态和更高状态存储元件的编程。重复图13B2的更低状态分布1306和图13C2的更高状态分布1322。此时,用于更低状态和更高状态存储元件的编程速度均是已知的。继续进行编程,使得分布1306的更低状态存储元件转变至A状态分布1320,同时将基于编程速度的减缓措施施加在更快编程更低状态存储元件上,但是没有施加在更慢编程更低状态存储元件上。类似地,继续进行编程,使得分布1322的更高状态存储元件转变至B状态分布1330和C状态分布1340,同时将基于编程速度的减缓措施施加至更快编程更高状态存储元件,但是没有施加至更慢编程更高状态存储元件。
然后,执行编程操作的第三阶段以获得图11G的情况。在此阶段中,将基于编程速度的减缓措施施加在更快编程更低状态和更高状态存储元件上,但是没有施加在更慢编程更低状态和更高状态存储元件上。
示例5
另一实现方式涉及图14A、图14B、图14C、图14D、图14E、图14F、图14G、图14H、图14I的序列。在第一阶段,获得用于更高状态存储元件的编程速度数据,并且在第一阶段的剩余时间以及整个第二阶段和第三阶段中将基于编程速度的减缓措施施加至更快编程更高状态存储元件。在第二阶段中,获得用于更低状态存储元件的编程速度数据,并且在第二阶段的剩余时间以及整个第三阶段中将基于编程速度的减缓措施施加至更快编程更低状态存储元件。
在此示例中,从图14A至图14D的流程例如对应于图7B中的步骤“1”,从图14E至图14H的流程对应于图7B中的步骤“3”,以及图14I中的流程对应于图7B中的步骤“6”。在图16D1或图16D2的对应步骤中说明锁存器的使用。
图14A描述三阶段编程操作的第一阶段的开始,其中针对八级存储装置,所有存储元件处于擦除状态。更低状态是擦除(Er)状态(分布)、以及分别具有更低检验电平VvaL、VvbL以及VvcL和分别具有更高检验电平Vva、Vvb以及Vvc的A状态、B状态和C状态。更高状态是分别具有更低检验电平VvdL、VveL、VvfL以及VvgL和分别具有更高检验电平Vvd、Vve、Vvf以及Vvg的D状态、E状态、F状态以及G状态。
图14B描述在三阶段编程操作的第一阶段中、跟随图14A的情况,其中最小数目的更高状态元件具有Vth>VvLM。在分布1402中,区域1404代表Vth>VvaL的更高状态存储元件。一旦最小数目的更低状态存储元件达到VvLM,计数器开始并且针对每个额外的编程脉冲而增加。
图14C描述在三阶段编程操作的第一阶段中、在施加了额外数目的“k”个编程脉冲之后的跟随图14B的情况,并且使用读取电平Vvh区分更快编程和更慢编程更高状态存储元件。当k个额外的编程脉冲的计数完成时,Vth分布1403包括分别用于更慢编程和更快编程更高状态存储元件的区域1406和1408。分布1404代表已被检验为已经达到VvLM的更高状态存储元件部分。
图14D描述当三阶段编程操作的第一阶段完成时的跟随图14C的情况。从图11C继续进行编程,使得分布1403(与1103相同)转变至分布1445(与1120相同),其中在第一阶段结束时,所有更高状态存储元件都到达中间(LM)状态。此时,更快编程和更慢编程更高状态存储元件是已知的并且被保存在锁存器中。可以对更高状态存储元件执行从分布1403至LM分布1445的编程,同时将基于编程速度的减缓措施施加在更快编程更高状态存储元件上,但是没有施加在更慢编程更高状态存储元件上。这结束了第一阶段。
图14E描述跟随图14D的情况,其中,编程发生在三阶段编程操作的第二阶段中,并且最小数目的更低状态存储元件具有Vth>VvaL。在第二阶段的开始,可以读取锁存器以识别更快编程和更慢编程更高状态存储元件。将更低状态存储元件从擦除状态分布1400编程至分布1402,同时根据更高状态存储元件的相应的目标状态,将更高状态存储元件从中间分布1445编程至D状态分布1450、E状态分布1460、F状态分布1470以及G状态分布1480。注意,在图14E-14G的一些实施例中,更低状态存储元件的Vth转变通常发生在更高状态存储元件的Vth转变之前。因此,当A状态存储元件被编程并且其Vth电平增加时,Vpgm初始地仅高至足够移动A状态Vth附近的存储元件。在此期间,更高状态存储元件的Vth电平可以不移动。仅当Vpgm变得更高时,更高的D状态、E状态、F状态以及G状态附近的存储元件的Vth将开始增加。因此,图14E所示的Vth转变发生在一个编程阶段中,并且出于简要的目的示出在一幅图中,但是不必同时发生。
基于锁存器中所保存的编程速度数据,针对更高状态存储元件,可将基于编程速度的减缓措施施加在更快编程更高状态存储元件上,但是没有施加在更慢编程更高状态存储元件上。在分布1412中,区域1414代表Vth>VvaL的更低状态存储元件。一旦最小数目的更低状态存储元件达到VvaL,计数器开始并且针对每个额外的编程脉冲而增加。第二阶段可以使用相对更大的Vpgm步长。
图14F描述在三阶段编程操作的第二阶段中、在施加了额外数目的“k”个编程脉冲之后的跟随图14E的情况,并且使用读取电平Vvl区分更快编程和更慢编程更低状态存储元件。当k个额外编程脉冲的计数完成时,Vth分布1416包括分别用于更慢编程和更快编程更低状态存储元件的区域1417和1418。分布1420代表已经被检验为已达到VvaL的A状态存储元件部分。注意,分布1420中的存储元件会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标A状态。
图14G描述当三阶段编程操作的第二阶段完成时的跟随图14F的情况。此时,可得到用于更低状态和更高状态存储元件的编程速度数据。将更低状态存储元件从分布1416编程至A状态分布1420、B状态分布1430或C状态分布1440,同时将基于编程速度的减缓措施施加在更快编程更低状态存储元件上,但是没有施加在更慢编程更低状态存储元件上。类似地,在第二阶段中,将基于编程速度的减缓措施施加在更快编程更高状态存储元件上,但是没有施加在更慢编程更高状态存储元件上。因此完成第二阶段。
图14H描述在三阶段编程操作的第三阶段开始时的跟随图14G的情况。可以使用更小的编程脉冲步长。注意,由于当对一个或更多个字线进行编程时的耦合和干扰效应,Vth分布可以展宽。
图14I描述在三阶段编程操作的第三阶段结束时的跟随图14H的情况。分别将A状态、B状态、C状态、D状态、E状态、F状态以及G状态存储元件编程至分布1422、1432、1442、1452、1462、1472以及1482。可以将基于编程速度的减缓措施施加至更快编程存储元件,但是没有施加至更慢编程存储元件。
示例6
另一实现方式涉及图14A、图15A、图15B1/15C1、图15B2/15C2、图15D、图14H、图14I的序列。在第一阶段中,没有获得编程速度数据。在第二阶段中,获得用于更低状态和更高状态存储元件的编程速度数据,并且在第二阶段的剩余时间和整个第三阶段中,将基于编程速度的减缓措施施加至更快编程更低状态和更高状态存储元件。
图15A描述替选的三阶段编程操作的第一阶段,其中针对八级存储装置,所有存储元件处于擦除状态。起始点是具有擦除(Er)状态分布1400的图14A的分布。使用VvLM将更高状态存储元件编程至中间分布1545。
从图15B1到15B2的转变通常将发生在从图15C1和15C2的转变之前。类似地,图15B1的情况通常将发生在图15C1的情况之前。为了清楚起见,分别示出了图15B1和图15C1。类似地,为了清楚起见,分别示出了图15B2和图15C2。使用读取电平Vvl获得用于更低状态存储元件的编程速度数据,并且使用读取电平Vvh获得用于更高状态存储元件的编程速度数据。图15B1和图15B2示出了涉及更低状态存储元件的转变,并且图15C1和图15C2示出了涉及更高状态存储元件的转变。
图15B1描述在替选的三阶段编程操作的第二阶段中、跟随图15A的情况的编程,其中最小数目的更低状态存储元件具有Vth>VvaL。在分布1502中,区域1504代表Vth>VvaL的更低状态存储元件。一旦最小数目的更低状态存储元件达到VvaL,计数器开始并且针对每个额外的编程脉冲而增加。第二阶段可以使用相对更大的Vpgm步长。
图15B2描述在替选的三阶段编程操作的第二阶段中、在施加了额外数目的“k1”个编程脉冲之后的跟随图15B1的情况的情况,其中使用读取电平Vvl来区分更快编程和更慢编程更低状态存储元件。当k1个额外编程脉冲的计数完成时,Vth分布1506包括分别用于更慢编程和更快编程更低状态存储元件的区域1507和1508。分布1520代表已经被检验为已达到VvaL的A状态存储元件部分。注意,分布1520中的存储元件会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标A状态。Vvl是更低的读取电平。直至使用读取电平Vvl区分更快编程和更慢编程存储元件为止,尚未施加基于编程速度的减缓措施。此时,用于更低状态存储元件(例如A状态存储元件)的编程速度数据被保存在数据锁存器中。使用数据锁存器中的编程速度数据,可以在此阶段的剩余时间中将基于编程速度的减缓措施施加在更低状态存储元件上。可以继续进行编程,同时将基于编程速度的减缓措施施加在更快编程更低状态存储元件上,但是没有施加在更慢编程更低状态存储元件上。
图15C1描述在替选的三阶段编程操作的第二阶段中、跟随图15A的情况的编程,其中最小数目的更高状态存储元件具有Vth>VvdL。通过从中间(LM)状态1542对更高状态存储元件进行编程来达到分布1543。在分布1543中,区域1544代表Vth>VvdL的更高状态存储元件。VvdL是更高状态中的最低状态的检验电平。可以使用另一检验电平。一旦最小数目的更高状态存储元件达到VvdL,计数器开始并且针对每个额外的编程脉冲而增加。
图15C2描述在替选的三阶段编程操作的第二阶段中、在施加了额外数目的“k2”个编程脉冲之后的跟随图15C1的情况的情况,其中使用读取电平Vvh来区分更快编程和更慢编程更高状态存储元件。当k2个额外的编程脉冲计数完成时,Vth分布1548包括分别用于更慢编程和更快编程更高状态存储元件的区域1545和1546。分布1547代表已经被检验为已达到VvdL的D状态存储元件部分。注意,分布1547中的存储元件会自动成为更快存储元件,因为其比其余的存储元件更早地达到目标D状态。Vvh是更高的读取电平。注意,k1和k2表示可以用于确定更低状态和更高状态存储元件的编程速度的不同计数器。为了简单起见,k1可被设定为与k2相同的值。注意,不管已计数的编程脉冲的数目,计数的开始可以不同。即,触发计数开始的图15B1和图15C1可以在不同时间发生。
图15D描述跟随图15C1和图15C2的情况的编程,其中完成了替选的三阶段编程操作的第二阶段。重复图15B2的更低状态分布1506和图15C2的更高状态分布1548。此时,用于更低状态和更高状态存储元件的编程速度均是已知的。继续进行编程,使得分布1506的更低状态存储元件转变至A状态分布1520、B状态分布1530或C状态分布1540,同时将基于编程速度的减缓措施施加在更快编程更低状态存储元件上,但是没有施加在更慢编程更低状态存储元件上。类似地,继续进行编程,使得分布1548的更高状态存储元件转变至D状态分布1550、E状态分布1560、F状态分布1570以及G状态分布1580,同时将基于编程速度的减缓措施施加在更快编程更高状态存储元件上,但是没有施加在更慢编程更高状态存储元件上。
注意,在图15D的一些实施例中,更低状态存储元件的Vth转变通常将发生在更高状态存储元件的Vth转变之前。
图15E描述跟随图15D的情况的编程,其中完成了替选的三阶段编程操作的第三阶段。在此阶段,将基于编程速度的减缓措施施加在更快编程更低状态和更高状态存储元件上,但是没有施加在更慢编程更低状态和更高状态存储元件上。分别使用检验电平Vva、Vvb、Vvc、Vvd、Vvf、Vvg以及Vvg对A状态分布1522、B状态分布1532、C状态分布1542、D状态分布1552、E状态分布1562、F状态分布1572以及G状态分布1582进行转变。
注意,由于当对一个或更多个字线进行编程时的耦合和干扰效应,可以使在更低检验电平处的Vth分布展宽。
图16A1针对两比特存储元件描述用于在多阶段编程操作中使用的相应位线的数据锁存器。描述了示例位线BLi-2、BLi-1、BLi、BLi+1以及BLi+2。在四级、每存储元件双比特的实施例中,设置有第一锁存器集合(LDL)1600、第二锁存器集合(UDL)1610、第三锁存器集合(DL1)1620、第四锁存器集合(DL2)1630、以及第五锁存器集合(DL3)1640。在一些情况下,不需要所有的锁存器。与一个字线关联的锁存器被该位线的不同存储元件共用。当执行使用来回字线顺序的多阶段编程操作时,需要注意保持锁存器中的信息。在编程期间,使用LDL和UDL来存储需要被编程的用户数据,同时可以使用DL1、DL2以及DL3锁存器来存储编程速度数据。
图16A2针对三比特存储元件描述用于在多阶段编程操作中使用的相应位线的数据锁存器。在此情况下,锁存器集合(UDL1)1612存储下部、上部页面比特(即,中部页面比特),并且锁存器集合(UDL2)1614存储上部、上部页面比特。
在图16B-16E中,与之前示例(包括结合图10A-15E描述的示例1-5)相一致,描述了锁存器的使用。符号“w”表示在编程阶段中将编程速度数据写入(例如存储)至锁存器;“r”表示在编程阶段中(在每个编程脉冲之前)从锁存器读取编程速度数据,并且在编程期间使用该编程速度数据来施加减缓措施;“m”表示在编程阶段中(例如当对另一字线进行编程时)将编程速度数据保持在锁存器中并且未被写入或读取;“rst”表示在编程阶段结束时重置锁存器,以及“x”表示没有在锁存器中存储编程速度数据,这意味着锁存器为空并且可用于一些其它数据存储或一些其它目的。例如,在步骤3,图16D2中的符号“WLn高/低(r,rst/w,r;rst)”表示对应的编程阶段涉及从与初始具有高目标数据状态的WLn的存储元件关联的锁存器中读取编程速度数据。之后,在编程阶段中,获取属于低目标数据状态的存储元件的编程速度信息,并且对数据锁存器执行写入操作,以用此信息更新锁存器。针对随后的编程脉冲,读取数据锁存器以获得属于高目标数据状态和低目标数据状态的存储元件的编程速度信息。最终,在编程阶段结束时,重置锁存器。
另外,在图16B-16E中,每个步骤对应于在图中所示的特定WL上的编程阶段。
图16B描述存储在示例1的数据锁存器中的数据。“步骤”指的是图7A中所示的步骤号码。在步骤1中,取决于所使用的编程的类型,例如WLn的下部和上部页面数据可以被存储在锁存器中(例如LDL和UDL),和/或可以被缓存。因为可以使用任何适当的技术,所以未提供关于数据的上部页面和下部页面的存储的特定细节。针对WLn的所有状态,编程速度数据被写入至DL1中,并且在每个随后的编程脉冲上被读取。在步骤2中,针对WLn+1的所有状态,编程速度数据被写入DL2,并且在每个随后的编程脉冲上被读取。在此期间,简单地保持DL1中的数据。步骤3不改变锁存器数据,并且在每个编程脉冲之前读取DL1,以及在编程阶段结束时重置DL1。在步骤4中,针对WLn+2的所有状态,用编程速度数据来写DL1,并且在每个随后的编程脉冲上读取DL1。在步骤5中,在每个编程脉冲之前读取DL2,以获得针对WLn+1的所有状态的编程速度数据。在步骤5结束时,WLn+1完成编程,因此不再需要属于WLn+2的存储元件的编程速度信息。因此,在对WLn+2进行编程结束时,重置DL2。一旦确定或读取了数据,就将编程速度数据施加至存储元件。
图16C1描述存储在示例2的数据锁存器中的数据。该步骤指的是图7B中所表示的步骤号码。在步骤1中,针对WLn的更高状态将编程速度数据写入DL1,并且在每个随后的编程脉冲上读取DL1。在步骤2中,针对WLn的更高状态将编程速度数据写入DL2,并且在每个随后的编程脉冲上读取DL2。步骤3不改变锁存器数据,并且在每个编程脉冲之前读取DL1,以获得用于WLn的更高状态的编程速度数据。在步骤4中,针对WLn+2的更高状态将编程速度数据写入DL3,并且在每个随后的编程脉冲上读取DL3。在步骤5中,在每个编程脉冲之前读取DL2以获得用于WLn+1的更高状态的编程速度数据。在步骤6中,在每个编程脉冲之前读取DL1以获得用于WLn的更高状态的编程速度数据。在步骤7中,针对WLn+3的更高状态将基于编程速度的数据写入DL1,并且在每个随后的编程脉冲上读取基于编程速度的数据。在步骤8中,在每个编程脉冲之前读取DL3,以获得用于WLn+2的更高状态的编程速度数据。在步骤9中,在每个编程脉冲之前读取DL2以获得用于WLn+1的更高状态的编程速度数据。在步骤9结束时,WLn+1完成编程,因此重置DL2。
图16C2描述图16C1的替选,其中在第三阶段中没有施加基于编程速度的减缓措施。在此情况下,不需要DL3。与图16C1不同的是:在步骤4中,针对WLn+2的更高状态将编程速度数据写入DL1(而不是DL3)中,并且在步骤7中,针对WLn+3的更高状态将编程速度数据写入DL2(而不是DL1)中。另外,在步骤8结束时,可以重置DL1,因为不再需要用于WLn+2的编程速度数据。类似地,可以分别在步骤3和步骤5结束时更早地重置DL1和DL2。
图16C3描述存储在示例2A的数据锁存器中的数据。“步骤”指的是图7A中所示的步骤号码。在步骤1中,针对WLn的更高状态存储元件将编程速度数据写入DL1中,并且在每个随后的编程脉冲上读取DL1。在步骤2中,针对WLn+1的更高状态存储元件将编程速度数据写入DL2中,并且在每个随后的编程脉冲上读取DL2。步骤3不改变锁存器数据,并且在每个编程脉冲之前读取DL1,以获得用于WLn的更高状态的编程速度数据。在步骤3结束时,WLn完成编程,因此重置DL1。在步骤4中,针对WLn+2的更高状态存储元件将编程速度数据写入DL1中,并且在每个随后的编程脉冲上读取DL1。在步骤5中,在每个编程脉冲之前读取DL2,以获得用于WLn+1的更高状态的编程速度数据。在步骤5结束时,WLn+1完成编程,因此重置DL2。
图16D1描述存储在用于示例3或示例5的数据锁存器中的数据。“步骤”指的是图7B中所示的步骤号码。在步骤1中,针对WLn的更高状态将编程速度数据写入DL1中,并且在每个随后的编程脉冲上读取DL1。在步骤2中,针对WLn+1的更高状态将编程速度数据写入DL2中,并且在每个随后的编程脉冲上读取DL2。在步骤3中,针对WLn的更低状态将编程速度数据写入DL1中,并且在每个编程脉冲之前读取DL1以在编程阶段初始时获得用于WLn的更高状态的编程速度数据,并且之后获得用于WLn的更高和更低状态的编程速度数据。在步骤4中,针对WLn+2的更高状态存储元件将编程速度数据写入DL3中,并且在每个随后的编程脉冲上读取DL3。在步骤5中,针对WLn+1的更低状态将编程速度数据写入DL2中,并且在每个编程脉冲之前读取DL2以在编程阶段初始时获得用于WLn+1的更高状态的编程速度数据,并且之后获得用于WLn+1的更高和更低状态的编程速度数据。在步骤6中,在每个编程脉冲之前读取DL1以获得用于WLn的更高状态和更低状态的编程速度数据。在步骤6结束时,WLn完成编程,因此重置DL1。在步骤7中,针对WLn+3的更低状态将编程速度数据写入DL1中,并且在每个随后的编程脉冲上读取DL1。在步骤8中,针对WLn+2的更低状态将编程速度数据写入DL3中,并且在每个编程脉冲之前读取DL3以在编程阶段初始时获得用于WLn+2的更高状态的编程速度数据,并且之后获得用于WLn+2的更高和更低状态的编程速度数据。在步骤9中,在每个编程脉冲之前读取DL2以获得用于WLn+1的更高和更低状态的编程速度数据。在步骤9结束时,WLn+1完成编程,因此重置DL2。
图16D2描述图16D1的替选,其中在第三阶段中没有施加基于编程速度数据的减缓措施。在此情况下,不需要DL3。与图16D1不同的是:在步骤4中,针对WLn+2的更高状态将编程速度数据写入DL1(而不是DL3)中;并且在步骤7中,针对WLn+3的更高状态将编程速度数据写入DL2(而不是DL1)中。另外,在步骤5结束时,可以重置DL2,因为不再需要用于WLn+1的编程速度数据,并且在步骤8结束时,可以重置DL1,因为不再需要用于WLn+2的编程速度数据。类似地,在步骤3结束时,可以更早地重置DL1,因为不再需要用于WLn的编程速度数据。
图16E描述存储在用于示例4或示例6的数据锁存器中的数据。“步骤”指的是图7B中所示的步骤号码。步骤1和步骤2不涉及写入或读取任何编程速度数据。在步骤3中,开始针对WLn的更低状态、然后针对WLn的更高状态将编程速度数据写入DL1中,并且在每个随后的编程脉冲上读取DL1。在步骤4中,保持DL1中的编程速度数据。在步骤5中,首先针对WLn+1的更低状态、然后针对WLn+1的更高状态将编程速度数据写入DL2中,并且在每个随后的编程脉冲上读取DL2。在步骤6中,在每个编程脉冲之前读取DL1,以获得用于WLn的更低状态和更高状态的编程速度数据。在步骤6结束时,可以重置DL1,因为既然已经完成了WLn的所有编程,所以不再需要用于WLn的编程速度数据。一般,当字线完成编程或不再需要编程速度数据时,可以重置存储用于字线的编程速度数据的锁存器。在步骤7中,保持DL2中的编程速度数据。在步骤8中,首先针对WLn+2的更低状态、然后针对WLn+2的更高状态将编程速度数据写入DL1中,并且在每个随后的编程脉冲上读取DL1。在步骤9中,在每个编程脉冲之前读取DL2,以获得用于WLn+1的更低状态和更高状态的编程速度数据。在步骤9结束时,WLn+1结束编程,因此重置DL2。
注意,在示例4和图16E中,对锁存器执行以下步骤。
步骤1:编程的开始
步骤3包括不同部分3a-3d。
3a部分:获取用于更低状态存储元件的编程速度数据。该信息被保存至锁存器(在此示例中为DL1)。这是一个写入操作。
3b部分:在随后的编程中,在每个编程脉冲之前从锁存器读取编程速度数据,并且基于所读取的信息,针对随后的编程将减缓措施施加至更低状态的更快存储元件。这是一个读取操作。
3c部分:随后,在相同的编程阶段中,获取用于更高状态存储元件的编程速度数据。该信息被添加至相同的锁存器集合(DL1),因此更新锁存器。现在合并了用于所有存储元件的编程速度数据。这是另一个读取操作。
3d部分:在随后的编程中,在每个编程脉冲之前从锁存器读取编程速度数据,并且基于所读取的信息,针对随后的编程将减缓措施施加至更低状态和更高状态存储元件的更快存储元件上。这是读取操作。
步骤6包括6a和6b部分。
6a部分:在编程阶段中,在每个编程脉冲之前从锁存器读取编程速度数据,并且基于所读取的信息,针对随后的编程将减缓措施施加至更低状态和更高状态存储元件的更快存储元件。这是读取操作。
6b部分:在针对WLn的多阶段编程操作结束时重置锁存器。
下面描述在最后的编程阶段中丢弃编程速度数据的选项。
如结合图16C2和图16D2所提到的,可以在最后的编程阶段(例如三阶段编程操作的第三阶段)丢弃编程速度数据,以减少锁存器的数目,例如每个位线一个锁存器。在此情况下,在最后阶段之前的一个或多个更早的编程阶段中施加编程速度数据。在许多情况下,这仍导致显著的益处。
此外,与最后阶段相比,更早编程阶段(例如第二阶段)中的电平Vsgd可以比最后阶段中的更高。这是有帮助的:当Vsgd更高时可以使用更高的位线偏压,并且Vsgd优选地适应电流状况,使得避免了SGD晶体管上的不必要的压力并且减少了功耗。例如,更早阶段可以使用额外的位线偏压,该位线偏压不是基于编程速度,但是例如当存储元件的Vth在目标数据状态的上部和下部检验电平之间时、或贯穿整个编程阶段、或在其它时间时施加该位线偏压。这是除基于编程速度的减缓措施之外还可以实现的额外的减缓措施。
参照图10A,例如,对于具有A状态的目标状态的存储元件,当存储元件的Vth在VvaL与Vva之间时可以施加额外的位线偏压。将额外的位线偏压增加至基于编程速度的偏压,其中该基于编程速度的偏压被施加至更快编程存储元件。对于更慢编程存储元件,仅使用额外的位线偏压。例如,基于编程速度的偏压可以是0.7V,并且额外的位线偏压可以是0.5V。因此,可以将0.5V的位线偏压施加至更慢编程存储元件,而将1.2V的位线偏压施加至更快编程存储元件。将位线偏压施加至还未被锁定的位线。锁定位线偏压可以是2-3V。随后,在最终的阶段中,不使用基于编程速度的偏压,而是使用额外的位线偏压。例如,可以将0.5V的位线偏压施加至编程的存储元件。通过调整不同阶段中的Vsgd电平,可以优化存储装置的性能。
Vbl不可以过高,因为其由Vsgd(漏极侧选择栅极)余量窗口限定。如果Vbl过高,则接通或导通漏极侧选择栅极所需的Vsgd电平将会过高。具体地,对于所选择的NAND串通高Vbl来说足够高的Vsgd电平可能对于未选择的、禁止的NAND串将漏极侧选择电极保持在非导通状态来说是过高的。然而,共用Vsgd被用于所有位线(选择的和未选择的)。
未选择的位线和NAND串期望将漏极侧选择栅极保持在非导通状态,因为其允许未选择的NAND串的衬底中的沟道保持高电平(boostlevel),该高电平在选择的NAND串编程期间禁止未选择的NAND串的未选择存储元件的编程。如果漏极侧选择栅极变为导通,则禁止沟道中的高电势将会泄漏,这可以导致对禁止存储元件的编程干扰。足够高以通过Vbl的Vsgd电平是(a)Vsgd≥Vbl+Vth(sgd)+余量(margin),其中Vth(sgd)是SGD晶体管的阈值电压,并且余量是一些额外的小的安全余量。另一方面,足够低以切断沟道并且不通过Vbl的Vsgd电平是(b)Vsgd≤Vbl+Vth(sgd)-余量(margin)。对于选择的位线应当满足条件(a),对于未选择的位线应当满足条件(b)。两个条件的组合导致Vsgd余量窗口,在该Vsgd余量窗口内应当将Vsgd值设定为具有最优编程。
例如,假定Vth(sgd)=1V并且余量(margin)=0.2V。在更早编程阶段,施加0.7V的基于编程速度的偏压和0.5V的额外的位线偏压。对于具有Vbl=1.2V的所选择的位线,条件(a)是:Vsgd≥1.2V+1V+0.2V,或Vsgd≥2.4V。条件(b)是Vsgd≤Vbl+1V-0.2V,或Vsgd≤Vbl+0.8V。例如,关于针对所选择的位线的Vsgd=2.4V,满足条件(a),并且如果针对未选择的位线Vbl≥1.6,则满足条件(b)。这些条件是合理的,因为Vsgd不是过高。
在最终编程阶段中,施加0.5V的额外的编程电压,但是不施加0.7V的基于编程速度的偏压。对于具有Vbl=0.5V的所选择的位线,条件(a)是:Vsgd≥0.5V+1V+0.2V,或Vsgd≥1.7V。条件(b)是Vsgd≤Vbl+1V-0.2V,或Vsgd≤Vbl+0.8V。例如,关于用于所选择的位线的Vsgd=1.7V,满足条件(a),并且如果对于未选择的位线Vbl≥1.0,则满足条件(b)。再次,这些条件是合理的,因为Vsgd不是过高,并且不高于必需的电压,使得避免了SGD晶体管上不必要的压力。类似地,减少了功耗。
所讨论的位线偏压值仅是示例。
所以,本技术可以包括执行多阶段编程操作的一个阶段(例如模糊阶段),包括:(a)区分更快编程非易失性存储元件中与更慢编程非易失性存储元件,以及(b)响应于所述区分:(i)在将关联的位线电压设定为第一非零位线电平(例如,0.7V的基于编程速度的偏压与0.5V的额外的位线偏压之和)以施加减缓措施的同时,继续对更快编程非易失性存储元件中的至少一些进行编程,(ii)在将关联的位线电压设定为低于第一非零位线电平的第二非零位线电平(例如0.5V的额外的位线偏压)的同时,继续对更慢编程非易失性存储元件中的至少一些进行编程;以及(iii)将与非易失性存储元件关联的漏极侧选择栅极的共用控制栅极电压设定为第一控制栅极电平(例如2.4V)。该技术还包括针对在一个阶段中达到关联的检验电平的更快编程非易失性存储元件中的至少一些和更慢编程非易失性存储元件中的至少一些,将关联的位线电压提高至锁定电平(例如2.5-3V),该锁定电平高于第一位线电平。
该技术还包括随后执行多阶段编程操作的下一阶段(例如精细阶段),包括:在将关联的位线电压设定为低于第一位线电平的非零电平(例如,0.5V的额外的位线偏压)的同时,继续对更快非易失性存储元件和更慢非易失性存储元件进行编程,以及将所选择的栅极的共用控制栅极电压设定为在第一控制栅极电平以下的第二控制栅极电平(例如1.7V)。该技术还包括针对在下一个阶段中达到关联的检验电平的更快编程非易失性存储元件中的至少一些和更慢编程非易失性存储元件中的至少一些,将关联的位线电压提高至锁定电平。
在一个实施例中,提供了一种用于使用多阶段编程操作对非易失性存储元件集合进行编程的方法,该多阶段编程操作包括一个阶段(模糊)和下一阶段(精细)。该方法包括,针对目标字线(WLn)的非易失性存储元件:执行一个阶段(模糊),包括:(a)区分目标字线的更快编程非易失性存储元件与目标字线的更慢编程非易失性存储元件。该方法还包括:(b)响应于所述区分:(i)将用于区分目标字线的更快编程非易失性存储元件与目标字线的更慢编程非易失性存储元件的编程速度数据保存在第一锁存器集合中,(ii)在每个随后编程脉冲之前读取第一锁存器集合,基于所读取的信息,(iii)在对目标字线的更快编程非易失性存储元件中的至少一些施加了基于编程速度的减缓措施的情况下,继续对目标字线的更快编程非易失性存储元件中的至少一些进行编程,以及(iv)在不施加基于编程速度的减缓措施的情况下,继续对目标字线的更慢编程非易失性存储元件中的至少一些进行编程。
该方法还包括随后对非易失性存储元件集合中的另一字线(WLn+1)的非易失性存储元件执行编程操作。该方法还包括:在下一阶段(精细)期间:响应于第一锁存器集合中的编程速度数据,在施加了基于编程速度的减缓措施的情况下,继续对目标字线的更快编程非易失性存储元件进行编程,以及响应于第一锁存器集合中的编程速度数据,在不施加基于编程速度的减缓措施的情况下,继续对目标字线的更慢编程非易失性存储元件进行编程。
对应的非易失性存储设备包括非易失性存储元件集合、与非易失性存储元件集合关联的字线(包括目标字线)、以及一个或更多个控制电路。一个或更多个控制电路执行上述方法步骤。或者,该设备可以包括用于执行上述方法步骤的装置。
在另一实施例中,提供了一种用于使用多阶段编程操作对非易失性存储元件进行编程的方法,该多阶段编程操作包括:一个阶段(LM)、下一阶段(模糊)以及下下阶段(精细)。该方法包括,针对非易失性存储元件集合中的目标字线的非易失性存储元件:执行一个阶段(LM),包括:将具有更高目标数据状态(B、C;D、E、F、G)的非易失性存储元件从擦除状态编程至具有比更高目标数据状态的检验电平更低的中间检验电平(VvLM)的中间分布,同时将具有至少一个更低目标数据状态(A;A、B、C)的非易失性存储元件保持在擦除状态。该方法还包括使用第一检验电平集合(VvaL、VvbL、VvcL;VvaL、VvbaL、VvcL、VvdL、VveL、VvfL、VvgL)来执行下一阶段(模糊),包括:(a)在具有至少一个更低目标数据状态的非易失性存储元件中区分更快编程非易失性存储元件与更慢编程非易失性存储元件;(b)响应于所述区分:(i)将用于区分具有至少一个更低目标数据状态的更慢编程非易失性存储元件与具有至少一个更低目标数据状态的更快编程非易失性存储元件的编程速度数据保持在第一锁存器集合中,(ii)在每个随后编程脉冲之前读取第一锁存器集合,以及基于所读取的信息,(iii)在对具有至少一个更低目标数据状态的更快编程非易失性存储元件中的至少一些施加基于编程速度的减缓措施的情况下,继续对具有至少一个更低目标数据状态的更快编程非易失性存储元件中的至少一些进行编程,以及(iv)在不施加基于编程速度的减缓措施的情况下,继续对具有至少一个更低目标数据状态的更慢编程非易失性存储元件中的至少一些进行编程;以及(c)继续对具有更高目标数据状态的非易失性存储元件进行编程。
该方法还包括使用第二检验电平集合的关联的检验电平(Vva、Vvb、Vvc;Vva、Vvba、Vvc、Vvd、Vve、Vvf、Vvg)来执行下下阶段(精细),其中第二检验电平集合中的每个检验电平高于第一检验电平集合中的对应的检验电平,包括:(d)在每个编程脉冲之前读取第一锁存器集合,并且基于所读取的信息,在对具有至少一个更低目标数据状态的更快编程非易失性存储元件施加响应于第一锁存器集合中的编程速度数据的基于速度的减缓措施的情况下,继续对具有至少一个更低目标数据状态的更快编程非易失性存储元件进行编程,以及在不施加基于编程速度的减缓措施的情况下,继续对具有至少一个更低目标数据状态的更慢编程非易失性存储元件进行编程;以及(e)继续对具有更高目标数据状态的非易失性存储元件进行编程。
对应的非易失性存储设备包括非易失性存储元件集合、与非易失性存储元件集合关联的字线(包括目标字线)、以及一个或更多个控制电路。一个或更多个控制电路执行上述方法步骤。或者,该设备可以包括用于执行上述方法步骤的装置。
在另一实施例中,提供了用于使用多阶段编程操作对非易失性存储元件进行编程的方法,该多阶段编程操作包括一个阶段(模糊)和下一阶段(精细)。该方法包括,针对非易失性存储元件集合中的目标字线的非易失性存储元件:执行一个阶段(模糊),包括:(a)区分更快编程非易失性存储元件与更慢编程非易失性存储元件,以及(b)响应于所述区分:(i)将用于区分目标字线的更快编程非易失性元件与目标字线的更慢编程非易失性元件的编程速度数据保持在第一锁存器集合中,(ii)在每个编程脉冲之前读取第一锁存器集合,并且基于所读取的信息,(iii)在将关联的位线电压设定为第一非零电平(例如1.2V)以施加基于编程速度的减缓措施的同时,继续对更快编程非易失性存储元件中的至少一些进行编程,(iv)在将关联的位线电压设定为低于第一非零位线电平的第二非零位线电平(0.5V)的同时,继续对更慢编程非易失性存储元件中的至少一些进行编程,以及(iii)将与非易失性存储元件关联的漏极侧选择栅极的共用控制栅极电压设定为第一控制栅极电平(例如2.4V)。
该方法还包括:针对在一个阶段中达到关联的检验电平的更快编程非易失性存储元件中的至少一些和更慢编程非易失性存储元件中的至少一些,将关联的位线电压提升至锁定电平,该锁定电平高于第一位线电平。该方法还包括随后执行下一阶段(精细),包括:继续对更快非易失性存储元件和更慢非易失性存储元件进行编程,同时在每个编程脉冲之前读取第一锁存器,基于所读取的信息,将关联的位线电压设定为低于第一位线电平的非零电平,以及将选择栅极的共用的控制栅极电压设定为在第一控制栅极电平以下的第二控制栅极电平(例如1.7V)。
该方法还包括:针对在下一阶段中达到关联的检验电平的更快编程非易失性存储元件中的至少一些和更慢编程非易失性存储元件中的至少一些,将关联的位线电压提升至锁定电平。
对应的非易失性存储设备包括非易失性存储元件集合、与非易失性存储元件集合关联的字线(包括目标字线)、以及一个或更多个控制电路。一个或更多个控制电路执行上述方法步骤。或者,该设备可以包括用于执行上述方法步骤的装置。
在另一实施例中,提供了一种用于对非易失性存储元件集合中的目标字线的非易失性存储元件进行编程的方法。该方法包括:(a)将编程脉冲施加至目标字线;(b)确定指定数目的非易失性存储元件何时达到定义的检验电平(VvaL、Vva);(c)在指定数目的非易失性存储元件达到第一检验电平之后,对编程脉冲的数目(m,k)进行计数;(d)响应于计数的完成,通过执行以指定的电平(VvaL、Vva)或另一更低的电平(Vvl)进行的感测操作来区分更快编程非易失性存储元件与更慢编程非易失性存储元件;(e)响应于所述区分,将用于区分目标字线的更快编程非易失性元件与目标字线的更慢编程非易失性元件的编程速度数据保持在第一锁存器集合中;以及(f)在每个编程脉冲之前读取第一锁存器集合,并且基于所读取的信息,在对目标字线的更快编程非易失性存储元件中的至少一些施加基于编程速度的减缓措施的情况下,继续对目标字线的更快编程非易失性存储元件中的至少一些进行编程,以及在不施加基于编程速度的减缓措施的情况下,继续对目标字线的更慢编程非易失性存储元件中的至少一些进行编程。
对应的非易失性存储设备包括非易失性存储元件集合、与非易失性存储元件集合关联的字线(包括目标字线)、以及一个或更多个控制电路。一个或更多个控制电路执行上述方法步骤。或者,该设备可以包括用于执行上述方法步骤的装置。
提供了用于执行本文中提供的该方法的对应的方法、系统以及计算机或处理器可读的存储装置。
出于阐述以及描述的目的,提出了前述详细说明书。不是旨在穷尽或限制所公开的精确形式。根据上述技术教导,许多修改或变型是可以的。为了最好地说明本技术及其实际应用的原理而选择了所描述的实施例,从而使得本领域内其他技术人员能够最好地将本技术用于各种实施例并且结合各种修改来使用以满足预期的特定应用。意图在于本技术的范围由本文所附的权利要求所限定。

Claims (15)

1.一种用于使用多阶段编程操作对非易失性存储元件集合(155)进行编程的方法,所述多阶段编程操作包括一个阶段和下一阶段,所述方法包括:
针对目标字线(WLn)的非易失性存储元件:执行所述一个阶段,包括:(a)区分所述目标字线的更快编程非易失性存储元件与所述目标字线的更慢编程非易失性存储元件,以及(b)响应于所述区分:(i)将用于区分所述目标字线的所述更快编程非易失性存储元件与所述目标字线的所述更慢编程非易失性存储元件的编程速度数据保存在第一锁存器集合(DL1、DL2、DL3)中,(ii)响应于所述第一锁存器集合中的所述编程速度数据,在对所述目标字线的所述更快编程非易失性存储元件中的至少一些施加基于编程速度的减缓措施的情况下,继续对所述目标字线的所述更快编程非易失性存储元件中的所述至少一些进行编程,以及(iii)在不施加基于编程速度的减缓措施的情况下,继续对所述目标字线的所述更慢编程非易失性存储元件中的至少一些进行编程;
随后,对所述非易失性存储元件集合中的另一字线(WLn+1)的非易失性存储元件执行编程操作;以及
在所述下一阶段期间:响应于所述第一锁存器集合中的所述编程速度数据,在施加基于编程速度的减缓措施的情况下,继续对所述目标字线的所述更快编程非易失性存储元件进行编程,以及响应于所述第一锁存器集合中的所述编程速度数据,在不施加基于编程速度的减缓措施的情况下,继续对所述目标字线的所述更慢编程非易失性存储元件进行编程。
2.根据权利要求1所述的方法,其中所述对所述另一字线(WLn+1)的所述非易失性存储元件执行编程操作包括:
执行多阶段编程操作中的一个阶段,包括:(c)区分更快编程非易失性存储元件与更慢编程非易失性存储元件,以及(d)响应于区分所述另一字线的所述更快编程非易失性存储元件与所述更慢编程非易失性存储元件:(i)将用于区分所述另一字线的所述更快编程非易失性存储元件与所述另一字线的所述更慢编程非易失性存储元件的编程速度数据保存在第二锁存器集合中,(ii)响应于所述第二锁存器集合,在对所述另一字线的所述更快编程非易失性存储元件中的至少一些施加基于编程速度的减缓措施的情况下,继续对所述另一字线的所述更快编程非易失性存储元件中的所述至少一些进行编程,以及(iii)响应于所述第二锁存器集合,在不施加基于编程速度的减缓措施的情况下,对所述另一字线的所述更慢编程非易失性存储元件中的至少一些进行编程。
3.根据权利要求2所述的方法,其中:
与所述目标字线的所述非易失性存储元件相关的所述一个阶段使用第一检验电平集合;
与所述另一字线的所述非易失性存储元件相关的所述一个阶段使用所述第一检验电平集合;以及
与所述目标字线的所述非易失性存储元件相关的所述下一阶段使用第二检验电平集合,所述第二检验电平集合中的每个检验电平高于所述第一检验电平集合中的对应检验电平。
4.根据权利要求1至3中任一项所述的方法,其中:
每个关联的基于编程速度的减缓措施包括提高的位线电压。
5.根据权利要求1至3中任一项所述的方法,其中:
所述执行所述下一阶段包括:对所述目标字线的每个更慢编程非易失性存储元件施加基于编程速度的减缓措施,同时对所述目标字线的每个更快编程非易失性存储元件施加另一基于编程速度的减缓措施。
6.根据权利要求1至3中任一项所述的方法,还包括:
响应于所述下一阶段的完成,重置所述第一锁存器集合。
7.根据权利要求2或3所述的方法,还包括:
针对所述另一字线的所述非易失性存储元件:执行其多阶段编程操作的下一阶段,包括:响应于所述第二锁存器集合,在对所述另一字线的所述更快编程非易失性存储元件施加基于编程速度的减缓措施的情况下,继续对所述另一字线的所述更快编程非易失性存储元件进行编程,以及响应于所述第二锁存器集合,在不施加基于编程速度的减缓措施的情况下,继续对所述另一字线的所述更慢编程非易失性存储元件进行编程。
8.根据权利要求7所述的方法,还包括:
针对所述非易失性存储元件集合中的额外字线(WLn+2)的非易失性存储元件:执行其多阶段编程操作的一个阶段,包括:(c)区分所述额外字线的更快编程非易失性存储元件与所述额外字线的更慢编程非易失性存储元件,以及(d)响应于所述区分所述额外字线的所述更快编程非易失性存储元件与所述额外字线的所述更慢编程非易失性存储元件:(i)将用于区分所述额外字线的所述更快编程非易失性存储元件与所述额外字线的所述更慢编程非易失性存储元件的编程速度数据保存在所述第一锁存器集合中,(ii)响应于所述第一锁存器集合中的所述编程速度数据,在对所述额外字线的所述更快编程非易失性存储元件中的至少一些施加基于编程速度的减缓措施的情况下,继续对所述额外字线的所述更快编程非易失性存储元件中的所述至少一些进行编程,以及(iii)响应于所述第一锁存器集合中的所述编程速度数据,在不施加基于编程速度的减缓措施的情况下,继续对所述额外字线的所述更慢编程非易失性存储元件中的至少一些进行编程。
9.根据权利要1至3中任一项所述的方法,其中:
在所述多阶段编程操作中将编程脉冲(505、510、515、520、525、530、535、540、545、550)施加至所述目标字线;以及
在所述区分所述目标字线的更快编程非易失性存储元件与所述目标字线的更慢编程非易失性存储元件期间,临时地减小所述编程脉冲的步长(604)。
10.根据权利要求1至3中任一项所述的方法,其中:
在所述多阶段编程操作中将编程脉冲施加至所述目标字线;以及
所述方法还包括:在所述区分步骤(a)之后,在所述一个阶段中的每个剩余编程脉冲之前读取所述第一锁存器集合,其中步骤(ii)和(iii)的所述继续编程响应于所述读取。
11.一种用于执行权利要求1至10中任一项所述的方法的非易失性存储设备。
12.一种用于使用多阶段编程操作对非易失性存储元件集合(155)进行编程的方法,所述多阶段编程操作包括一个阶段和下一阶段,所述方法包括:针对所述非易失性存储元件集合中的目标字线(WLn)的非易失性存储元件:
执行所述一个阶段,包括:(a)区分更快编程非易失性存储元件与更慢编程非易失性存储元件,以及(b)响应于所述区分:(i)在将关联的位线电压(Vbl)设定为第一非零位线电平以施加基于编程速度的减缓措施的同时,继续对所述更快编程非易失性存储元件中的至少一些进行编程,(ii)在将关联的位线电压设定为低于所述第一非零位线电平的第二非零位线电平的同时,继续对所述更慢编程非易失性存储元件中的至少一些进行编程,以及(iii)将与所述非易失性存储元件关联的漏极侧选择栅极(SGD)的共用控制栅极电压(Vsgd)设定为第一控制栅极电平;
针对在所述一个阶段中达到关联的检验电平的所述更快编程非易失性存储元件中的所述至少一些和所述更慢编程非易失性存储元件中的所述至少一些,将关联的位线电压提高至大于所述第一非零位线电平的锁定电平;
随后执行所述下一阶段,包括:在将关联的位线电压设定为小于所述第一非零位线电平的非零电平的同时,继续对所述更快非易失性存储元件和更慢非易失性存储元件进行编程,以及将所述选择栅极的所述共用控制栅极电压设定为在所述第一控制栅极电平以下的第二控制栅极电平;以及
针对在所述下一阶段中达到关联的检验电平的所述更快编程非易失性存储元件中的所述至少一些和所述更慢编程非易失性存储元件中的所述至少一些,将关联的位线电压提高至所述锁定电平。
13.根据权利要求12所述的方法,其中:
针对在所述一个阶段中与所述更快编程非易失性存储元件关联的选择栅极,所述第一控制栅极电平足够高以通过所述第一非零位线电压电平。
14.根据权利要求12或13所述的方法,其中:
在所述多阶段编程操作中将编程脉冲(505、510、515、520、525、530、535、540、545、550)施加至所述目标字线;以及
所述方法还包括:响应于所述区分步骤(a)将用于所述目标字线的编程速度数据存储在锁存器(DL1、DL2、DL3)中,以及在所述区分步骤(a)之后,在所述一个阶段中的每个剩余编程脉冲之前读取所述锁存器,其中步骤(i)和(ii)的所述继续编程响应于所述读取。
15.一种用于执行权利要求12至14中任一项所述的方法的非易失性存储设备。
CN201180037947.4A 2010-08-03 2011-08-02 非易失性存储器中的自然阈值电压分布压缩 Active CN103069494B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/849,510 2010-08-03
US12/849,510 US8310870B2 (en) 2010-08-03 2010-08-03 Natural threshold voltage distribution compaction in non-volatile memory
PCT/US2011/046197 WO2012018765A1 (en) 2010-08-03 2011-08-02 Natural threshold voltage distribution compaction in non-volatile memory

Publications (2)

Publication Number Publication Date
CN103069494A CN103069494A (zh) 2013-04-24
CN103069494B true CN103069494B (zh) 2016-01-20

Family

ID=45556080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180037947.4A Active CN103069494B (zh) 2010-08-03 2011-08-02 非易失性存储器中的自然阈值电压分布压缩

Country Status (7)

Country Link
US (3) US8310870B2 (zh)
EP (2) EP2601654B1 (zh)
JP (1) JP2013532881A (zh)
KR (1) KR101806588B1 (zh)
CN (1) CN103069494B (zh)
TW (1) TW201225091A (zh)
WO (1) WO2012018765A1 (zh)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8310870B2 (en) 2010-08-03 2012-11-13 Sandisk Technologies Inc. Natural threshold voltage distribution compaction in non-volatile memory
US8681569B2 (en) * 2012-02-22 2014-03-25 Silicon Motion, Inc. Method for reading data stored in a flash memory according to a threshold voltage distribution and memory controller and system thereof
KR20140028582A (ko) * 2012-08-29 2014-03-10 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
US9082510B2 (en) * 2012-09-14 2015-07-14 Freescale Semiconductor, Inc. Non-volatile memory (NVM) with adaptive write operations
US8953386B2 (en) 2012-10-25 2015-02-10 Sandisk Technologies Inc. Dynamic bit line bias for programming non-volatile memory
US8861270B2 (en) 2013-03-11 2014-10-14 Microsoft Corporation Approximate multi-level cell memory operations
TWI501245B (zh) * 2013-05-06 2015-09-21 Phison Electronics Corp 資料讀取方法、控制電路、記憶體模組與記憶體儲存裝置
US9818488B2 (en) * 2015-10-30 2017-11-14 Seagate Technology Llc Read threshold voltage adaptation using bit error rates based on decoded data
KR102238579B1 (ko) 2014-08-06 2021-04-09 삼성전자주식회사 메모리 장치의 프로그램 방법
KR102333743B1 (ko) * 2015-01-21 2021-12-01 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 동작 방법
US20160314844A1 (en) * 2015-04-22 2016-10-27 Sandisk Technologies Inc. Natural threshold voltage compaction with dual pulse program for non-volatile memory
US9343156B1 (en) 2015-06-25 2016-05-17 Sandisk Technologies Inc. Balancing programming speeds of memory cells in a 3D stacked memory
US9437319B1 (en) * 2015-06-25 2016-09-06 Macronix International Co., Ltd. Method for programming non-volatile memory with reduced bit line interference and associated device
US9953703B2 (en) 2015-10-16 2018-04-24 Samsung Electronics Co., Ltd. Programming method of non volatile memory device
US9910730B2 (en) 2015-10-21 2018-03-06 Sandisk Technologies Llc System for handling erratic word lines for non-volatile memory
US9865352B2 (en) * 2015-10-28 2018-01-09 Sandisk Technologies, Llc Program sequencing
US9711211B2 (en) 2015-10-29 2017-07-18 Sandisk Technologies Llc Dynamic threshold voltage compaction for non-volatile memory
CN105719694B (zh) * 2016-01-22 2019-12-03 清华大学 Nand存储器的多比特编程方法及装置
US9852800B2 (en) 2016-03-07 2017-12-26 Sandisk Technologies Llc Adaptive determination of program parameter using program of erase rate
JP6502880B2 (ja) 2016-03-10 2019-04-17 東芝メモリ株式会社 半導体記憶装置
JP6539608B2 (ja) 2016-03-15 2019-07-03 東芝メモリ株式会社 半導体記憶装置
US10026488B2 (en) 2016-08-18 2018-07-17 Sandisk Technologies Llc Non-volatile memory with read disturb detection for open blocks
KR20180088190A (ko) * 2017-01-26 2018-08-03 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 프로그램 방법
US9959932B1 (en) 2017-02-21 2018-05-01 Sandisk Technologies Llc Grouping memory cells into sub-blocks for program speed uniformity
JP2018163727A (ja) 2017-03-27 2018-10-18 東芝メモリ株式会社 半導体記憶装置
US10134479B2 (en) 2017-04-21 2018-11-20 Sandisk Technologies Llc Non-volatile memory with reduced program speed variation
US10424387B1 (en) 2018-05-16 2019-09-24 Sandisk Technologies Llc Reducing widening of threshold voltage distributions in a memory device due to temperature change
US10643721B2 (en) * 2018-06-21 2020-05-05 Sandisk Technologies Llc Interleaved program and verify in non-volatile memory
US10818685B2 (en) * 2018-07-05 2020-10-27 Sandisk Technologies Llc Non-volatile memory with pool capacitor
US10825827B2 (en) 2018-07-05 2020-11-03 Sandisk Technologies Llc Non-volatile memory with pool capacitor
JP2020095767A (ja) 2018-12-13 2020-06-18 キオクシア株式会社 半導体記憶装置
KR102649963B1 (ko) * 2019-01-23 2024-03-20 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 시스템을 프로그래밍하는 방법
KR20210001134A (ko) * 2019-06-27 2021-01-06 에스케이하이닉스 주식회사 메모리 장치 및 그 동작 방법
KR20220002606A (ko) * 2019-10-18 2022-01-06 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 장치를 프로그래밍하고 검증하는 방법 및 관련 메모리 장치
TWI699772B (zh) * 2019-10-29 2020-07-21 旺宏電子股份有限公司 在步進編程脈衝操作中決定快速通過寫入操作的方法與系統
US11587621B1 (en) 2021-08-05 2023-02-21 Western Digital Technologies, Inc. Foggy-fine programming for memory cells with reduced number of program pulses
US11756630B2 (en) 2021-08-12 2023-09-12 Western Digital Technologies, Inc. Obtaining threshold voltage measurements for memory cells based on a user read mode

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1879175A (zh) * 2003-10-20 2006-12-13 桑迪士克股份有限公司 基于非易失性存储器单元的行为的编程方法
CN101371315A (zh) * 2005-10-14 2009-02-18 桑迪士克股份有限公司 对显示位线耦合的非易失性存储器进行受控编程的方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219276B1 (en) * 2000-02-25 2001-04-17 Advanced Micro Devices, Inc. Multilevel cell programming
US6781877B2 (en) 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
JP3935139B2 (ja) 2002-11-29 2007-06-20 株式会社東芝 半導体記憶装置
US7073103B2 (en) 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US7372730B2 (en) 2004-01-26 2008-05-13 Sandisk Corporation Method of reading NAND memory to compensate for coupling between storage elements
US7158421B2 (en) 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
US7206230B2 (en) * 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
US7239557B2 (en) * 2005-06-17 2007-07-03 Micron Technology, Inc. Program method with optimized voltage level for flash memory
KR100966358B1 (ko) 2005-10-14 2010-06-28 샌디스크 코포레이션 비트라인 커플링을 나타내는 비휘발성 메모리를 제어프로그래밍하는 방법
US7489549B2 (en) * 2006-06-22 2009-02-10 Sandisk Corporation System for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US7596031B2 (en) * 2006-10-30 2009-09-29 Sandisk Corporation Faster programming of highest multi-level state for non-volatile memory
US7616500B2 (en) 2007-02-20 2009-11-10 Sandisk Corporation Non-volatile storage apparatus with multiple pass write sequence
US7630246B2 (en) 2007-06-18 2009-12-08 Micron Technology, Inc. Programming rate identification and control in a solid state memory
US7869273B2 (en) * 2007-09-04 2011-01-11 Sandisk Corporation Reducing the impact of interference during programming
US7924623B2 (en) * 2008-05-27 2011-04-12 Micron Technology, Inc. Method for memory cell erasure with a programming monitor of reference cells
US7800956B2 (en) 2008-06-27 2010-09-21 Sandisk Corporation Programming algorithm to reduce disturb with minimal extra time penalty
US7839687B2 (en) 2008-10-16 2010-11-23 Sandisk Corporation Multi-pass programming for memory using word line coupling
US8064252B2 (en) * 2008-11-21 2011-11-22 Micron Technology, Inc. Multi-pass programming in a memory device
US8174895B2 (en) * 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
US8144512B2 (en) * 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US8218366B2 (en) * 2010-04-18 2012-07-10 Sandisk Technologies Inc. Programming non-volatile storage including reducing impact from other memory cells
US8310870B2 (en) 2010-08-03 2012-11-13 Sandisk Technologies Inc. Natural threshold voltage distribution compaction in non-volatile memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1879175A (zh) * 2003-10-20 2006-12-13 桑迪士克股份有限公司 基于非易失性存储器单元的行为的编程方法
CN101371315A (zh) * 2005-10-14 2009-02-18 桑迪士克股份有限公司 对显示位线耦合的非易失性存储器进行受控编程的方法

Also Published As

Publication number Publication date
US20120250418A1 (en) 2012-10-04
KR20130095271A (ko) 2013-08-27
US8310870B2 (en) 2012-11-13
US20120033500A1 (en) 2012-02-09
EP2922064A1 (en) 2015-09-23
EP2922064B1 (en) 2018-12-19
JP2013532881A (ja) 2013-08-19
EP2601654A1 (en) 2013-06-12
US20130329493A1 (en) 2013-12-12
EP2601654B1 (en) 2015-05-20
US8743606B2 (en) 2014-06-03
WO2012018765A1 (en) 2012-02-09
US8537611B2 (en) 2013-09-17
TW201225091A (en) 2012-06-16
KR101806588B1 (ko) 2018-01-10
CN103069494A (zh) 2013-04-24

Similar Documents

Publication Publication Date Title
CN103069494B (zh) 非易失性存储器中的自然阈值电压分布压缩
EP2332146B1 (en) Data state-based temperature compensation during sensing in non-volatile memory
CN101861624B (zh) 用于在编程期间补偿邻居单元的干扰电荷的非易失性存储器和方法
US7590002B2 (en) Resistance sensing and compensation for non-volatile storage
US7440324B2 (en) Apparatus with alternating read mode
US7616498B2 (en) Non-volatile storage system with resistance sensing and compensation
US7508715B2 (en) Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
KR101788351B1 (ko) 비휘발성 저장소자들을 감지하는 동안의 채널 커플링 효과의 완화
US7193898B2 (en) Compensation currents in non-volatile memory read operations
US8743615B2 (en) Read compensation for partially programmed blocks of non-volatile storage
US9818477B2 (en) Methods of programming memory cells in non-volatile memory devices
JP2013531331A (ja) ビットライン電圧ステップアップを伴う不揮発性メモリのプログラミング
JP4855474B2 (ja) スマート検証を利用してマルチステート不揮発性メモリをプログラミングする方法
KR20160018447A (ko) 프로그래밍 동안 낮아지는 비-휘발성 저장 nand 스트링 선택 게이트 전압
US20130286733A1 (en) Method of programming/reading a non-volatile memory with a sequence
CN101689400A (zh) 基于阈值电压分布的动态检验
KR20110037986A (ko) 비휘발성 저장 소자를 위한 소거-검증 프로세스
KR20090117709A (ko) 인접 메모리 셀의 저장 상태를 고려하여 비휘발성 메모리 셀을 판독하는 방법
US11568943B2 (en) Memory apparatus and method of operation using zero pulse smart verify
TWI391934B (zh) 非揮發記憶體系統及讀取非揮發儲存器之方法
US7495962B2 (en) Alternating read mode
US11342035B1 (en) Memory apparatus and method of operation using one pulse smart verify
KR20100034613A (ko) 전하트랩형 플래시 메모리소자의 프로그램 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: American Texas

Patentee after: DELPHI INT OPERATIONS LUX SRL

Address before: American Texas

Patentee before: Sandisk Technologies, Inc