CN102754165B - 允许多个数据状态失败的非易失性存储器中的多位编程方法以及编程失败的情况下的数据恢复方法 - Google Patents

允许多个数据状态失败的非易失性存储器中的多位编程方法以及编程失败的情况下的数据恢复方法 Download PDF

Info

Publication number
CN102754165B
CN102754165B CN201180007275.2A CN201180007275A CN102754165B CN 102754165 B CN102754165 B CN 102754165B CN 201180007275 A CN201180007275 A CN 201180007275A CN 102754165 B CN102754165 B CN 102754165B
Authority
CN
China
Prior art keywords
memory element
subgroup
data
programming
states
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
CN201180007275.2A
Other languages
English (en)
Other versions
CN102754165A (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 CN102754165A publication Critical patent/CN102754165A/zh
Application granted granted Critical
Publication of CN102754165B publication Critical patent/CN102754165B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Landscapes

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

Abstract

一种用于非易失性存储器系统的错误检测和数据恢复操作。即使在成功完成了对一组存储元件的编程操作之后,一些存储元件的数据也可能损坏。例如,可能通过对其它存储元件进行编程来干扰经擦除状态存储元件。为了使得在这种情形下能够恢复数据,可以将关联数据锁存器配置为允许只要完成编程就将经擦除状态存储元件与其它数据状态区分开。此外,在完成编程之后,可以执行单次读取操作。使用来自读取操作的结果以及数据锁存器中的值来执行逻辑运算,以标识已杂散到另一数据状态的经擦除状态存储元件。如果错误数量超过阈值,则开始针对其余状态进行读取操作的完全恢复操作。

Description

允许多个数据状态失败的非易失性存储器中的多位编程方法以及编程失败的情况下的数据恢复方法
背景技术
本技术涉及一种非易失性存储器。
供各种电子装置使用的半导体存储器已经日益普及。例如,非易失性半导体存储器被用在移动电话、数字摄像装置、个人数字助理、移动计算装置、非移动计算装置以及其它装置中。电可擦除可编程只读存储器(EEPROM)和闪存是其中最普及的非易失性半导体存储器。与传统的全功能EEPROM相比,采用也为一种类型的EEPROM的闪存,可以以一步擦除整个存储器阵列的内容或者该存储器的一部分的内容。
传统的EEPROM和闪存这两者都利用位于半导体基板中的沟道区上方且与其隔离的浮置栅极。该浮置栅极位于源区与漏区之间。控制栅极设置在浮置栅极上方且与其隔离。这样形成的晶体管的阈值电压(Vth)利用浮置栅极上所保留的电荷量来控制。即,在晶体管导通以允许在其源极与漏极之间导通之前必须施加至控制栅极的最小电压量利用浮置栅极上的电荷水平来控制。
最重要的是对来自存储器的数据进行准确编程以及读回的能力。然而,各种失败情况会导致数据损坏。
附图说明
图1是使用单行/列解码器和读/写电路的非易失性存储器系统的框图。
图2是示出图1的感测块100的一个实施例的框图。
图3示出图1的存储器阵列155中的NAND闪存存储单元的块。
图4示出示例阈值电压分布和一遍编程。
图5示出示例阈值电压分布和两遍编程。
图6a-c示出示例阈值电压分布和使用中间状态的两遍编程。
图7示出按前后字线顺序对一组存储元件的多遍编程操作。
图8a-f示出图2的感测块使用的、编程操作中在不同点处的示例数据锁存器值。
图9示出除两个未使用的数据锁存器组合以外、针对不同数据状态的根据存储元件的快速、慢速或抑制模式的图8a-8f的数据锁存器值。
图10示出图9的数据锁存器值的变型,其使得经擦除状态具有与抑制的A状态、B状态和C状态不同的组合。
图11a示出在失败检测处理中使用基于图10的数据锁存器值和A状态读取操作的结果的逻辑运算来提供经擦除状态错误和经过编程的较高状态错误的计数。
图11b示出在失败检测处理中使用基于图10的数据锁存器值和A状态读取操作的结果的逻辑运算来提供经擦除状态错误的计数。
图11c示出数据恢复操作中基于图10的数据锁存器值以及C状态和B状态读取操作的结果的逻辑运算的使用。
图12a示出示例编程和编程后失败检测和恢复操作。
图12b示出图12a的步骤1218的编程后(post-programming)错误检测和恢复操作的更多详情。
图12c示出图12b的步骤1244的数据恢复操作的更多详情。
图13示出编程操作和后续数据恢复操作中的所选字线的示例波形。
具体实施方式
提供了提供错误检测和数据恢复的方法和非易失性存储系统。
在编程操作期间,多种因素可能导致损坏数据。例如,字线或块由于制造工艺变化而可能存在物理缺陷。在一些情况下,字线对于基板而言较短,使得提升(boosting)受影响并且程序干扰产生。其它潜在的问题包括字线之间短、字线宽度改变、块的过多循环、温度相关影响等。此外,可能没有检测到数据损坏,直到太晚而无法恢复该数据为止。例如,基于写入数据,一些存储元件应该保持处于经擦除状态,而其它存储元件被编程为目标数据状态。在这种情况下,在对其它存储元件编程期间,经擦除状态存储元件可能受到干扰。当编程针对其它存储元件而继续(诸如,对同一字线或不同字线上的同一页数据或另一页数据进行编程)时,被编程为该经擦除状态以外的目标数据状态的存储元件也会受到干扰。
一种检测数据损坏的方法是在对数据进行编程之后读回所有数据并将其与原始写入数据进行比较。然而,这强加了基本的时间处罚,并且需要诸如额外的数据锁存器的附加存储资源。一种解决方案涉及对现有数据锁存器进行权衡(leverage)以针对易于发生错误的特定数据状态(诸如,经擦除状态)来检测损坏的数据。在该方法中,对数据锁存器进行配置,以使得可以在对一组存储元件的编程完成时将经擦除状态与其它状态区分开。通过在成功完成编程操作之后执行单次读取操作、访问数据锁存器并且执行逻辑运算,可以标识损坏的存储元件。如果损坏的存储元件的数量超过诸如ECC可恢复错误的数量的阈值,则可以执行恢复操作。该恢复操作基于读取结果和数据锁存器来进行附加读取操作和逻辑运算,以完全恢复写入数据。
接着讨论可以用于提供更快的编程和降低的功耗的示例存储器系统。图1是使用单行/列解码器和读/写电路的非易失性存储器系统的框图。根据一个实施例,该图示出具有读/写电路的存储器装置197,其中该读/写电路用于对存储元件的页进行并行读取和编程。存储器装置197可包括一个或多个存储器晶片(die)198。存储器晶片198包括存储元件155的二维存储器阵列、控制电路110以及读/写电路165。结合图4来进一步讨论存储器阵列155。
在一些实施例中,存储元件的阵列可以是三维的。经由行解码器130通过字线以及经由列解码器160通过位线可对存储器阵列155进行寻址。读/写电路165包括多个感测块100,并且允许对存储元件的页并行读取或编程。通常,控制器150与一个或多个存储器晶片198一样包括在同一存储器装置197(例如,可移动存储卡)中。经由线120在主机与控制器150之间以及经由线118在控制器与一个或多个存储器晶片198之间传送命令和数据。
控制电路110与读/写电路165进行协作以对存储器阵列155执行存储器操作,并且包括状态机112、片上(on-chip)地址解码器114和电源控制模块116。状态机112提供存储器操作的芯片级控制。片上地址解码器114提供主机或存储器控制器所使用的地址与解码器130和160所使用的硬件地址之间的地址接口。电源控制模块116对存储器操作期间供给至字线和位线的功率和电压进行控制。
在一些实现中,可以组合图1的部件中的一部分。在各种设计中,除存储器阵列155以外的部件中的一个或多个部件(单独或组合)可被看作管理或控制电路。例如,一个或多个控制电路可以包括控制电路110、状态机112、解码器114/160、电源控制器116、感测块100(包括图2中的处理器192)、读/写电路165以及控制器150等中的任一个或者组合。结合图2来进一步讨论感测块100。
在另一实施例中,非易失性存储器系统使用双重行/列解码器和读/写电路。各种外围电路对存储器阵列155的访问是在该阵列的相对侧上以对称方式来实现的,以使得各侧上的访问线和电路的密度均减半。因而,行解码器被分成两个行解码器,并且列解码器被分成两个列解码器。同样,读/写电路也被分成从阵列155的底部连接至位线的读/写电路以及从阵列155的顶部连接至位线的读/写电路。这样,读/写模块的密度基本上减半。
图2是示出感测块的一个实施例的框图。将单个感测块100划分成一个或多个被称为感测模块180或感测放大器的核心部分、以及被称为管理电路190的公共部分。在一个实施例中,对于每条位线存在单独的感测模块180以及对于一组多个(例如,四个或八个)感测模块180存在一个公共管理电路190。组内的每个感测模块均经由数据总线172与关联的管理电路进行通信。因而,存在与一组存储元件的感测模块进行通信的一个或多个管理电路。
感测模块180包括感测电路170,其中感测电路170通过确定所连接位线内的传导电流是高于还是低于预定阈值水平来执行感测。感测模块180还包括用于设置关于所连接位线的电压状态的位线锁存器182。例如,位线锁存器182内所锁存的预定状态将导致所连接位线被拉至指定程序禁止的状态(例如,1.5-3V)。作为示例,标志=0可以禁止编程,而标志=1不禁止编程。
管理电路190包括处理器192、示例的四组数据锁存器194-197以及耦合在数据锁存器组194-197与数据总线192之间的I/O接口196。可以针对每个感测模块设置一组数据锁存器,并且可以针对每组设置用QDL、UDL和LDL标识的三个数据锁存器。以下结合图8a-f、9、10和11a-c来进一步讨论数据锁存器的使用。处理器192执行计算,诸如以确定所感测的存储元件中存储的数据并将所确定的数据存储在数据锁存器组中。各数据锁存器组194-197用于存储在读取操作期间处理器192所确定的数据位,并且存储在编程操作期间从数据总线120输入的数据位,其中这些数据位表示要被编程到存储器中的写入数据。I/O接口196提供数据锁存器194-197与数据总线120之间的接口。
在读取期间,系统的操作处于状态机112的控制下,其中状态机112控制不同的控制栅电压向所寻址的存储元件的供给。随着该操作通过与存储器所支持的各种存储器状态相对应的各种预定的控制栅电压而步进,感测模块1808在这些电压中的一个处可能跳闸(trip),并且将相应的输出从感测模块180经由总线172提供给处理器192。此时,处理器192通过考虑感测模块的跳闸事件以及与经由输入线193从状态机施加的控制栅电压有关的信息,确定作为结果所得到的存储器状态。然后,该处理器计算存储器状态的二进制编码,并将作为结果所得到的数据位存储到数据锁存器194-197中。在管理电路190的另一实施例中,位线锁存器182起到双重作用,既用作用于对感测模块180的输出进行锁存的锁存器,也用作如上所述的位线锁存器。
一些实现可以包括多个处理器192。在一个实施例中,每个处理器192均包括输出线(未示出),以使各输出线以线或(wired-OR)方式连接到一起。在一些实施例中,输出线在连接至线或线(wired-OR line)之前被反转。由于接收线或的状态机可以确定正被编程的所有位何时已达到期望水平,因此该配置使得能够在对编程处理何时已完成的程序验证处理期间进行快速确定。例如,当每个位已达到其期望水平时,该位的逻辑零将被发送至线或线(或者使数据1反转)。当所有的位都输出数据0(或者数据1反转)时,状态机知道终止该编程处理。由于每个处理器均与八个感测模块进行通信,因此,状态机需要读取线或线8次,或者逻辑被添加到处理器192以累积关联位线的结果,以使得状态机仅需读取线或线一次。同样,通过正确地选择逻辑水平,全局状态机可以检测第一位何时改变其状态,并且相应地改变算法。
在程序或验证操作期间,从数据总线120将要编程的数据(写入数据)存储在数据锁存器组194~197中。在状态机的控制下,该程序操作包括将一系列编程电压脉冲施加至所寻址的存储元件的控制栅极。在每个编程脉冲之后是读回(验证),以确定存储元件是否已被编程为期望的存储器状态。在一些情况下,处理器192监视与期望存储器状态相关的所读回的存储器状态。当这两者一致时,处理器192设置位线锁存器182,以使位线被拉至指定程序禁止的状态。即使在控制栅极上出现程序脉冲,这也禁止了耦合到位线的存储元件进一步进行编程。在其它实施例中,处理器初始装载位线锁存器182,并且感测电路在验证处理期间将其设置为禁止值。
各数据锁存器组194~197可以被实现为还用于每个感测模块的数据锁存器的堆栈。在一个实施例中,每个感测模块180有三个数据锁存器。在一些实现中,数据锁存器被实现为移位寄存器,以使得其中所存储的并行数据转换成用于数据总线120的串行数据,并且反之亦然。可以将与m个存储元件的读/写块相对应的所有数据锁存器都链接到一起以形成块移位寄存器,从而可以通过串行传送来输入或输出数据块。具体地,将读/写模块组适配成使得其数据锁存器组中的每个数据锁存器将使数据顺次移入或移出数据总线,如同这些数据锁存器是整个读/写块的移位寄存器的一部分那样。
数据锁存器标识关联的存储元件在编程操作中何时已达到特定里程标志。例如,锁存器可以标识存储元件的Vth在快速编程模式下低于较低验证水平(例如,图5中的VvaL或VvbL),在慢速编程模式下高于较低验证水平(例如,VvaL或VvbL)而低于较高验证水平或目标验证水平(例如,Vva、Vvb或Vvc),或者在禁止模式下高于较高验证水平或目标验证水平。数据锁存器指示存储元件当前是否存储来自一页数据的一个或多个位。例如,可以使用LDL锁存器来存储下页数据。当将下页位存储在关联的存储元件中时,LDL锁存器翻转(例如,从0到1)。例如,可以使用UDL锁存器来存储上页数据。当将上页位存储在关联的存储元件中时,UDL锁存器翻转。这在关联的存储元件完成编程时(例如,在其Vth超过诸如Vva、Vvb或Vvc的目标验证水平时)发生。当关联的存储元件处于慢速编程模式下时,该QDL锁存器可以翻转。
在一些检测方案中,一旦任意存储元件被锁定,就将该存储元件的所有数据锁存器(QDL、LDL、UDL)都设置为“1”。然而,这并不允许区分已锁定于不同数据状态的存储元件。例如,无法将E状态存储元件与A、B或C状态存储元件区分开。如以下将进一步讨论的,可以以最佳方式使用数据锁存器以克服该问题,从而,实现高效的错误检测和恢复操作。
图3示出图1的存储器阵列155内的NAND闪存单元的块。该存储器阵列可以包括多个块。各示例块300、310包括多个NAND串和在这些块之间共用的各位线(例如,BL0、BL1、...)。每个NAND串的一端连接至漏极选择门(SGD),并且漏极选择门的控制栅极经由公共SGD线相连接。这些NAND串在其另一端连接至源极选择门,而该源极选择门连接至公共源极线320。六十四条字线(例如,WL0-WL63)在源极选择门与漏极选择门之间延伸。
还可以使用除NAND闪存以外的其它类型的非易失性存储器。例如,在闪速EEPROM系统中使用的其它类型的存储单元采用非导电的介电材料来代替导通浮置栅极,以按非易失性方式存储电荷。由氧化硅、氮化硅和氧化硅形成的三层介质夹入导通的控制栅极与在存储单元沟道上方的半导体基板的表面之间。通过将来自单元沟道的电子注入氮化物中来对单元进行编程,其中俘获到这些电子并将其储存到限制区域中。然后,该储存的电荷以可检测的方式改变该单元的沟道的一部分的阈值电压。通过将热空穴注入氮化物中来擦除该单元。可以将类似的单元设置在分裂栅配置中,在该配置中,掺杂多晶硅栅极在存储单元沟道的一部分之上延伸以形成单独的选择晶体管。
在另一种方法中,使用NROM单元。例如,将两个位存储在每个NROM单元中,其中ONO介电层在源扩散与漏扩散之间的沟道上延伸。一个数据位的电荷位于与漏极相邻的介电层中,并且其它数据位的电荷位于与源极相邻的介电层中。通过单独读取在介质内的空间上分离的电荷储存区域的二值状态来获得多状态数据存储。还已知其它类型的非易失性存储器。
图4示出示例阈值电压分布和一遍编程。针对每个存储元件存储两位数据的情况来设置存储元件阵列的示例阈值电压分布。第一阈值电压分布400是针对经擦除(E状态)的存储元件所设置的。三个阈值电压分布402、404和406分别表示经编程状态A、B和C。在一个实施例中,E状态分布下的阈值电压为负,并且A、B和C状态分布下的阈值电压为正。
可以通过保持阈值电压被确定为超过相应的验证水平的存储元件的计数来确定处于特定状态的存储元件的数量。
每个不同的阈值电压范围对应于数据位组的预定值。被编程到存储元件中的数据与存储元件的阈值电压水平之间的特定关系依赖于存储元件所采用的数据编码方案。在一个实施例中,使用格雷码分配来向阈值电压范围分配数据值,以使得如果浮置栅极的阈值电压错误地变换为其相邻的物理状态,则将仅影响一位。一个示例向阈值电压范围E(状态E)分配“11”,向阈值电压范围A(状态A)分配“10”,向阈值电压范围B(状态B)分配“00”,并且向阈值电压范围C(状态C)分配“01”。然而,在其它实施例中,不使用格雷码。尽管示出了四种状态,但还可以使用其它多状态结构,包括包含多于或少于四种状态的多状态结构。
为了从存储元件读取数据,还提供了Vra、Vrb和Vrc这三个读取基准电压。通过测试给定存储元件的阈值电压是高于还是低于Vra、Vrb和Vrc,该系统可以确定存储元件所处的状态,例如编程状况。
此外,提供了Vva、Vvb和Vvc这三种目标验证基准电压。当将存储元件编程为状态A时,系统将测试这些存储元件是否具有大于或等于Vva的阈值电压。当将存储元件编程为状态B时,系统将测试存储元件是否具有大于或等于Vvb的阈值电压。当将存储元件编程为状态C时,系统将确定存储元件是否具有大于或等于Vvc的阈值电压。
在一个实施例中,被称为全序列编程,可以将存储元件从E状态直接编程为经编程状态A、B或C中的任意状态。例如,可以首先擦除要编程的全体存储元件,以使得该全体中的所有存储元件都处于经擦除状态E。然后,使用诸如图13所示的一系列程序脉冲来将存储元件直接编程为状态A、B或C。在将一些存储元件从状态E编程为状态A的同时,可以将其它存储元件从状态E编程为状态B以及/或者从状态E编程为状态C。
此外,针对一个或多个数据状态,使用偏移验证水平和目标验证水平。例如,对于A状态,VvaL和Vva分别是偏移验证水平和目标验证水平,并且对于B状态,VvbL和Vvb分别是偏移验证水平和目标验证水平。偏移验证水平相对于最终或目标验证水平偏移。根据编程方案,偏移验证水平可能高于目标验证水平。该验证水平可以表示电压或电流。
在编程期间,当A状态存储元件(打算将其编程为作为目标状态的A状态)的Vth小于或等于VvaL时,在快速编程模式下对该存储元件进行编程。这可以通过使位线接地来实现。当Vva≥Vth>VvaL时,诸如通过将关联位线电压升高至接地水平与充分抑制水平之间的水平来在慢速编程模式下对存储元件进行编程。这通过避免阈值电压的大幅增加来提供较大的精度并因此提供较窄的Vt分布。当Vth>Vva时,对存储元件进行锁定以防止进一步编程。同样,B状态存储元件(打算将其编程为B状态)可以具有快速编程模式和慢速编程模式。注意,在一种方法中,对于诸如C状态的最高状态,不使用慢速编程模式,这是因为该模式对于其它状态而言不太有益。
在八状态编程的示例中,例如,对于经擦除状态和7个经编程状态A-G,可以将快速编程模式和慢速编程模式用于中间状态A-F。
图5示出对存储上页和下页这两个不同页的数据的多状态存储元件进行编程的两遍技术的示例。通过重复图4中的阈值电压分布400、402、404和406来示出四种状态。这些状态以及这些状态所表示的位是状态E(11)、状态A(01)、状态B(00)和状态C(10)。对于状态E,这两页都存储“1”。对于状态A,下页存储“1”并且上页存储“0”。对于状态B,这两页都存储“0”。对于状态C,下页存储“0”并且上页存储“1”。注意,尽管已对各状态分配了特定位模式,但还可以分配不同的位模式。
在第一遍编程中,根据要编程为下逻辑页的位来设置存储元件的Vth。如果该位是逻辑“1”,则其由于已较早被擦除而处于适当状态,因此没有改变Vth。然而,如果要编程的位是逻辑“1”,则如箭头500所示,使Vth增加为状态A。这样结束第一遍编程。
在第二遍编程中,根据被编程为上逻辑页的位来设置存储元件的Vth。在下页、上页都为1、1的情况下,由于存储元件处于状态E,因此没有发生编程。在下页、上页为1、0的情况下,由于存储元件处于状态A,因此没有发生编程。在下页、上页为0、0的情况下,发生如箭头510所表示的从状态A到状态B的转变。在下页、上页为0、1的情况下,发生如箭头520所表示的从状态E到状态C的转变。
在该示例中,对于A状态和B状态,还可以分别使用偏移验证水平VvaL和VvbL。
在一个实施例中,如果下页数据和上页数据这两者都可利用,则可以设置系统以执行全序列写入。如果不能利用充足的数据,则编程操作可以利用接收到的数据来对下页数据进行编程。当接收到随后的数据时,该系统接着将对上页进行编程。在又一实施例中,系统可以在对下页进行编程的模式下开始进行写入,并且在随后接收到充足数据以对字线的存储元件的全部(或大部分)进行填充的情况下转换成全序列编程模式。
图6a-c示出示例的一组阈值电压分布和使用中间状态的两遍编程。该编程技术通过针对任意特定存储元件在向先前页的相邻存储元件进行写入之后对于特定页向该特定存储元件进行写入,来降低浮置栅极到浮置栅极耦合的影响。在一种示例实现中,非易失性存储元件使用四种数据状态来使每一存储元件存储两位数据。例如,E状态是经擦除状态并且状态A、B和C是经编程状态。如之前那样,状态E存储数据11,状态A存储数据01,状态B存储数据00并且状态C存储数据10。还可以使用将数据编码成物理数据状态的其它编码。每个存储元件均存储两页数据。为了参考的目的,将这些数据页称为上页和下页;然而,可以对这些数据页赋予其它标记。
编程操作是两步骤处理。在第一步骤中,对下页进行编程。如果下页要保持数据1,则存储元件状态保持处于状态E(分布600)。如果要将数据编程为0,则提高存储元件的电压的阈值以使得将该存储元件编程为状态B'(分布610)。因此,图6a示出将存储元件从状态E编程为状态B'。状态B'是临时状态B;因此将验证点表示为低于Vvb的Vvb'。
在一个实施例中,在将存储元件从状态E编程为状态B'之后,将针对下页对NAND串中的其相邻存储元件(WLn+1)进行编程。这将具有使状态B'的阈值电压分布加宽为被示为图6b的阈值电压分布612的阈值电压分布的效果。阈值电压分布的该明显加宽将在对上页编程时进行补救。如由分布602所示,还可以对状态E进行加宽。
图6c示出对上页进行编程的处理。如果存储元件处于经擦除状态E并且上页为1,则存储元件将保持处于状态E(分布602)。如果存储元件处于状态E并且其上页数据为0,则将使该存储元件的阈值电压升高以使得该存储元件处于状态A(分布604)。如果存储元件处于中间阈值电压分布612并且上页数据为0,则将该存储元件编程为最终状态B(分布606)。如果存储元件处于中间阈值电压分布612并且上页数据为1,则将使该存储元件的阈值电压升高以使得该存储元件处于状态C(分布608)。在该示例中,对于A数据状态和B数据状态,也可以使用偏移验证水平。由图6a-c所表示的处理减轻了浮置栅极至浮置栅极耦合的影响,这是因为仅相邻存储元件的上页编程会对给定存储元件的明显阈值电压产生影响。替选的状态编码的示例是当上页数据为0时从分布612移动至状态C,并且在上页数据为1时移动至状态B。
尽管图6a-c提供了关于四种数据状态和两页数据的示例,但所教导的概念可以适用于在多于或少于四种状态以及多于或少于两页情况下的其它实现。例如,每个存储元件有8种或6种状态的存储器装置当前正在规划或生产。
图7示出按前后字线顺序对一组存储元件的多遍编程操作。所示的部件可以是非常大的一组存储元件的子组、字线和位线。在一次可能的程序操作中,在第一遍编程中对WLn-1上的存储元件(例如,存储元件702、704和706)进行编程。该步骤由圈出的“1”来表示。接着(“2”),在第一遍编程中对WLn上的存储元件(例如,存储元件712、714和716)进行编程。在该示例中,当选择字线以进行编程时,在每个程序脉冲之后发生验证操作。在对WLn进行验证操作期间,向WLn施加一个或多个验证电压,并且向包括WLn-1和WLn+1的剩余字线施加通过电压(passvoltage)。这些通过电压用于使未选择的存储元件接通(使其导通),以使得对于所选字线可以发生感测操作。接着(“3”),在第二遍编程中对WLn-1上的存储元件进行编程。接着(“4”),在第一遍编程中对WLn+1上的存储元件进行编程。接着(“5”),在第二遍编程中将WLn上的存储元件编程为其各自的最终状态。
由于对WLn+1进行编程,因此,WLn上的存储元件受到易于使其针对每个状态的阈值电压分布提高并变宽的耦合的影响。在单遍编程和多遍编程期间,这都会发生。在单遍的遍编程中,在移动至例如WLn-1的下一字线、然后移动至WLn、然后移动至WLn+1之前完全对每条字线进行编程。
图8a-f示出图2的感测块所使用的编程操作中在不同点的示例数据锁存器值。在该示例中,将每条位线与QDL、UDL和LDL这三个数据锁存器相关联。这些数据锁存器可分别被看作第一数据锁存器、第二数据锁存器和第三数据锁存器。每条位线和所选的存储元件可以具有第一数据锁存器、第二数据锁存器和第三数据锁存器。一条位线的第一数据锁存器对应于另一条位线的第一数据锁存器,例如,这两者都可以是QDL。一条位线的第二数据锁存器对应于另一条位线的第二数据锁存器,例如,这两者都可以是UDL。一条位线的第三数据锁存器对应于另一条位线的第三数据锁存器,例如,这两者都可以是LDL。UDL和LDL分别存储上页的位信息和下页的位信息,而QDL存储与存储元件是否已超过较低验证水平有关的信息。
图8a示出在开始根据关联存储元件的目标数据状态进行编程时每组数据锁存器的位值。对于E状态的存储元件,所有的锁存器都被设置为1。对于A状态存储元件,QDL、UDL和LDL锁存器分别被设置为0、0和1。对于B状态存储元件,所有的锁存器被设置为0。对于C状态存储元件,QDL、UDL和LDL锁存器分别被设置为0、1和0。
图8b示出在A状态存储元件的Vth已超过较低验证水平VvaL之后根据关联存储元件的目标数据状态的、每个数据锁存器的位值。如由虚线框所示,QDL位被翻转为1。在执行验证操作之后,在每次程序验证迭代结束时进行数据锁存器的改变。
图8c示出在A状态存储元件的Vth已超过目标验证水平Vva之后根据关联存储元件的目标数据状态的、每个锁存器的位值。如由虚线框所示,UDL位被翻转为0。
图8d示出在B状态存储元件的Vth已超过较低验证水平VvbL之后根据关联存储元件的目标数据状态的、每个锁存器的位值。如由虚线框所示,QDL位被翻转为1。
图8e示出在B状态存储元件的Vth已超过目标验证水平Vvb之后根据关联存储元件的目标数据状态的、每个锁存器的位值。如由虚线框所示,UDL位和LDL位被翻转为1。
图8f示出在C状态存储元件的Vth已超过目标验证水平Vvc之后根据关联存储元件的目标数据状态的、每个锁存器的位值。如由虚线框所示,QDL位和LDL位被翻转为1。
图9示出除两个未使用的数据锁存器组合以外、针对不同的数据状态根据存储元件的快速模式、慢速模式或禁止模式的图8a-8f的数据锁存器值。如所述的,存储元件可以在快速编程模式下进行编程,直到达到其目标数据状态的偏移验证水平为止,此后,该存储元件在慢速编程模式下进行编程,直到达到目标数据状态的目标验证水平为止,此后,禁止该存储元件进行进一步编程。这里所提供的数据锁存器包括对于不同编程模式以及对于不同数据状态而言不同的三位组合。
“E”表示保持处于E状态从而没有发生失败的E状态存储元件。“Efail”表示受到干扰而上升到E状态以上从而发生失败的E状态存储元件。这两种情形均由相同的数据锁存器值来表示,这是因为根据写入数据将这两者规定为E状态存储元件。对于A状态存储元件,“Afast”、“Aslow”和Ainhibit(“Ainh”)分别表示快速模式、慢速模式和禁止模式。同样,对于B状态存储元件,“Bfast”、“Bslow”和Binhibit(“Binh”)分别表示快速模式、慢速模式和禁止模式。对于C状态存储元件,“Cfast”和Cinhibit(“Cinh”)分别表示快速模式和禁止模式。在编程操作结束时,A状态存储元件、B状态存储元件和C状态存储元件使得QDL=UDL=LDL=1,使得无法通过其数据锁存器来将它们彼此区分。同样,利用该实现,在编程操作结束时无法将E状态存储元件与A状态存储元件、B状态存储元件和C状态存储元件区分开。
可以通过实现以下来发现该问题的解决方案:由于存在三个数据锁存器,因此存在三元组(QDL,UDL,LDL)的23=8个可能的特有组合。然而,在该示例中,存储元件可以仅以六种类别为特征:E状态、E状态以上但VvaL以下、在VvaL与Vva之间、Vva以上但VvbL以下、VvbL与Vvb之间、以及Vvb以上但Vvc以下。因而,没有使用如下两个组合:即,#1(0,1,1)和#2(1,1,0)。
这些组合可以用于进行错误检测和数据恢复的目的。组合#1的优点在于该组合的UDL和LDL数据与常规的E状态存储元件的数据相同,即,UDL=1和LDL=1,这意味着E状态存储元件的上页位信息和下页位信息保持不变。对于该配置,使用QDL=0,而QDL=1用于表示禁止的A状态存储元件、B状态存储元件和C状态存储元件。这允许在编程操作结束时将E状态存储元件与A状态存储元件、B状态存储元件和C状态存储元件区分开。
图10示出图9的数据锁存器值的变型,其使得经擦除状态具有不同于禁止的A状态、B状态和C状态的组合。这里,对于“E”存储元件和“Efail”存储元件,QDL=0,UDL=1并且LDL=1。对于其它数据状态,可以保持如图9中所提供的相同组合,并且在图10中重复这些组合。在编程操作结束时,所有的E状态存储元件具有数据锁存器(0,1,1,),而已被禁止的A状态存储元件、B状态存储元件和C状态存储元件具有数据锁存器(1,1,1)。因而,在编程结束时,对QDL的扫描可以区分E状态存储元件与其它存储元件。
E状态存储元件可被看作在较大的一组存储元件中的第一子组的存储元件中(诸如,在字线上),并且A状态存储元件、B状态存储元件和C状态存储元件可被看作在该组的第二子组中。不同状态的各种存储元件可以随机分布并混用。要将第二子组中的存储元件编程为至少三种目标数据状态,包括与E状态相邻的第一目标数据状态(A状态)、与第一目标数据状态相邻的第二目标数据状态(B状态)以及与第二目标数据状态相邻的第三目标数据状态(C状态)。第二子组中已成功完成编程的每个存储单元均具有其关联数据锁存器之一(例如,QDL)中的第一值(例如,1),并且利用与其关联数据锁存器之一(例如,QDL)中的第一值不同的值(例如,0)来标识第一子组中的每个存储元件。
该修改后的数据锁存器配置可以用于确定被称为E->X失败的E状态失败的数量,这是因为存储元件转变为较高的状态X,通常为A状态。在编程操作结束时,使用Vra(或者E状态分布与A状态分布之间的其它电压)来执行读取操作,以标识Vth>Vra的存储元件。这些存储元件在感测期间将是不导通的。基于读取操作的结果以及QDL值,可以对E->X失败的数量进行计数。如果存储元件的页内的失败的数量高于被称为位忽略阈值(例如,由存储器装置内的ROM保险丝参数设置)的阈值,则可以对该页设置程序状态=失败。该页的数据可以通过涉及执行全读取操作的恢复操作来恢复,其中该全读取操作包括在Vrc(或者B状态分布与C状态分布之间的其它电压)下的C状态读取、然后在Vrb(或者A状态分布与B状态分布之间的其它电压)下的B状态读取。该恢复操作还使用可通过错误检测处理、以及如接下来所述的访问数据锁存器值并执行适当的逻辑运算得到的A状态读取结果。
注意,图10的该数据锁存器分配将影响表示快速编程模式或慢速编程模式是否有效的程序数据传送。为了进行比较,图9的方法通过仅查看QDL(使用SA<=QDL)来判定快速编程模式或缓慢编程模式是否有效,并且相应地设置位线偏差(Vbl对于慢速编程模式而言升高,而对于快速编程模式而言接地)。这里,“SA<=QDL”表示数据从QDL被加载到SA中。利用图10的方法,偏差“0”可以重写程序禁止信息。为了避免该情况,可以将新的程序数据传送改变为:SA<=QDL|(UDL&LDL),其中“|”表示逻辑或运算。
利用图10的方法,在编程操作结束时,可以对经过编程的A状态存储元件、B状态存储元件和C状态存储元件进行计数,以查看总数是否小于阈值。这可以通过执行逻辑运算YBOX<=UDL&LDL并且以YBOX对0的数量进行计数来实现,该逻辑运算使得向临时变量YBOX加载值UDL&LDL,其中“&”表示逻辑与。可以通过感测模块的管理电路来进行逻辑运算,并且YBOX可以保持在感测模块的管理电路、状态机或其它位置中。
图9的方法与图10的方法之间的一个相似之处在于,当(UDL,LDL)=(1,1)时禁止存储元件。
图11a示出在失败检测处理中使用基于图10的数据锁存器值以及A状态读取操作的结果的逻辑操作来提供经擦除状态错误和经过编程的较高状态错误的计数。图11a重复图10的表中的QDL行。为了参考,在图11b中也重复了图10的行。在编程操作结束时,QDL将标识剩余的经过编程的存储元件。SA<=readA表示在Vra处执行读取操作,并且将该读取操作的结果加载到例如感测模块的感测放大器(SA)中。该读取操作将处于经擦除状态的存储元件与处于目标数据状态中的相邻状态(例如,A状态)的存储元件区分开。该读取操作确定任何E状态存储元件是否已由于干扰而越过Vra。在进行该读取时,“E”(非失败E状态)存储元件将导通,而“Efail”(失败E状态)存储元件以及所有的经编程状态(例如,A状态、B状态、C状态)存储元件将不导通。
在该示例中,在感测期间,如果存储元件导通,则SA=0,而如果存储元件不导通,则SA=1。如所示,对于“E”存储元件,SA=0,并且对于“Efail”存储元件,SA=1。同样,对于所有的经编程状态存储元件,SA=1。在逻辑运算SA&~QDL中,“&”表示逻辑与,并且“~”表示负或反转。SA&~QDL标识处于“Efail”、“Afast”、“Bfast”和“Cfast”状态的存储元件。在编程结束时,无法被编程为目标状态的一些存储元件被忽略。处于“Afast”、“Bfast”和“Cfast”状态的存储元件包括这些被忽略的存储元件。
可以通过在逻辑运算YBOX<=~SA|QDL之后以YBOX对“l”进行计数来确定所有数据状态的错误数量。该计数包括“Efail”存储元件以及尚未完成编程(例如,处于“Afast”、“Aslow”、“Bfast”、“Bslow”和“Cfast”)并且在编程完成之前被忽略的A状态存储元件、B状态存储元件和C状态存储元件。这些被忽略的存储元件还可能造成错误。由于纠错码(ECC)可以应付这些错误,因此对所有状态的错误进行计数更加有意义。
图11b示出在失败检测处理中使用基于图10的数据锁存器值以及A状态读取操作的结果的逻辑运算来提供经擦除状态错误(“Efail”)的计数。在该操作中,仅对“Efail”存储元件进行计数,并且可以避免对其它未完成的A状态存储元件、B状态存储元件和C状态存储元件的计数。除图11a中的SA行以外,图11b还重复图10的表中的QDL行、UDL行和LDL行。在这两种计数方法(所有状态或仅E状态)中,三个数据锁存器QDL、UDL和LDL中的数据将保留该数据以进行数据恢复。一旦失败计数超过阈值,则可以执行全字线读取操作以恢复数据并将该数据移动至存储器装置内的其它位置。
为了仅对“Efail”存储元件进行计数,可以使用逻辑运算YBOX<=SA&~QDL&UDL&LDL。这向临时变量YBOX分配值。虚线框表示对于“Efail”,YBOX=l,而对于E以及其它所有的存储元件状态,YBOX=0。因而,YBOX将“Efail”存储元件与其它所有的存储元件区分开。因而,可以通过在编程操作期间在一组存储元件当中对YBOX=l的存储元件的数量进行计数来对“Efail”存储元件的数量进行计数。
图11c示出在数据恢复处理中使用基于图10的数据锁存器值以及C状态和B状态读取操作的结果的逻辑运算。数据恢复的步骤如下:。
1.QDL恢复—根据QDL*<=~(~QDL&UDL&LDL),可以从三个数据锁存器内的剩余数据获得QDL数据。
2.在C状态(Vrc)下进行读取。由于C状态存储元件中的一部分可能没有达到其目标状态并且在编程期间被忽略,因此,可以假定将错误地读取C状态数据中的一部分(由X来标记)。可以通过逻辑运算UDL*<=SA|(UDL&~LDL)来更新UDL以恢复C状态。
3.使用UDL**<=UDL|~QDL来再次更新UDL锁存器一次以完全恢复上页数据。
4.在B状态(Vrb)下进行读取。再次,由于与以上针对C状态所述的原因相同的原因,假定会错误地读取B状态数据中的一部分(由X来标记)。由于剩余了数据,因此可以通过逻辑运算LDL<=LDL&~SA来将LDL数据变换成原始程序数据。
这里,由于上页数据恢复依赖于LDL和QDL上的剩余数据,因此首先进行C读取。
虚线框表示UDL和LDL的最终恢复值。根据图10或图11b可以验证,这些值与根据写入数据而在数据锁存器中原始设置的值相同。因而,通过执行该数据恢复操作,可以正确地恢复每个存储元件的下页数据信息和上页数据信息这两者。
注意,可以在感测块的管理电路中或者在状态机内执行逻辑运算,其中这两者都在存储器芯片上。这无需将数据传送至外部的片外控制器(例如,图1中的150)以在此执行操作。因而,可以以对于片外控制器或主机基本透明的方式在芯片上执行错误检测和数据恢复操作。
图12a示出示例编程和编程后失败检测处理和恢复操作。在步骤1200中,对于上页的写入数据,编程操作开始。注意,可以预先对下页进行编程。步骤1202配置与各存储元件的感测模块相关联的数据锁存器。例如,这些感测模块可以与各位线以及NAND串或串联连接的存储元件的其它链相关联。数据锁存器被配置为标识保持在经擦除状态的第一子组的存储元件、以及被编程为各自的目标数据状态(诸如,A状态、B状态和C状态)的第二子组的存储元件。在步骤1204中更新程序循环计数。最初,将该程序循环计数设置为0。在步骤1206中,向包括第一子组和第二子组的存储元件的所选字线施加程序电压Vpgm。此外,感测模块基于数据锁存器来设置禁止或程序模式。
在步骤1208中,使用偏移验证水平和目标验证水平来执行验证操作。这是感测操作:当各存储元件处于导通状态时,该感测操作可以使用感测模块来对相应位线进行预充电并且允许感测节点放电到位线。当存储元件处于非导通状态时,该存储元件未大量放电。在放电时段之后,可以将作为结果所得到的数据传送至管理电路以监视并控制每个存储元件的编程。具体地,在步骤1210中,管理电路基于来自验证操作的结果来更新数据锁存器,诸如结合图10所述的那样。步骤1212确定经过编程的存储元件的数量。例如,如结合图10所述,可以通过执行逻辑运算YBOX<=UDL&LDL来对经过编程的A状态存储元件、B状态存储元件和C状态存储元件进行计数。判定步骤1214判定经过编程的存储元件的数量是否小于阈值。如果判定步骤1214为真,则编程操作成功(步骤1216),并且如结合图12b和12c进一步描述的那样,执行编程后错误检测和恢复操作(步骤1218)。当第二子组内的不超过最大数量的存储元件未能达到其各自的目标数据状态时,判断步骤1214为真。
如果判定步骤1214为假,则判定步骤1222判断循环计数是否已超过最大值。如果判定步骤1222为真,则编程操作不成功(步骤1224)。如果判定步骤1212为假,则使Vpgm升高(步骤1220),并且更新循环计数(步骤1204),以使得执行其它的程序验证迭代。
图12b示出图12a的步骤1218的编程后错误检测和恢复操作的更多详情。在步骤1230中,在Vra下执行二值读取操作。参见图11a中的运算SA<=readA。步骤1232标识Vth>Vra的存储元件(例如,根据SA=1)。步骤1234对Vth>Vra的存储元件的数据锁存器进行评价以根据写入数据来标识期望保持处于E状态的存储元件(“Efail”)。步骤1234可以执行结合图11b所述的运算YBOX<=SA&~QDL&UDL&LDL。步骤1236例如根据YBOX=l的存储元件来对E状态存储元件的失败次数进行计数。
在判定步骤1238中,如果计数小于或等于阈值,则在步骤1240中设置状态=通过。例如,这表明检测到少量的ECC可纠正错误,从而无法确保将数据重写入另一位置。如果判定步骤1238为假,则设置状态=失败。可以将检测到错误的块标记为坏的,使得不再使用该块。此外,如结合图12c进一步所述的,在步骤1244中执行恢复操作。
图12c示出图12b的步骤1244的数据恢复操作的更多详情。步骤1250在Vrc下执行读取操作(图11c中的SA<=readC),步骤1252在Vrb下执行读取操作(图11c中的SA<=readB),并且也如结合图11c所述的那样,步骤1254基于读取结果和数据锁存器中的值来执行逻辑运算。步骤1256将恢复的数据写入其它块内的其它字线。
图13示出编程操作以及后续的数据恢复处理中的所选字线的示例波形。编程操作可以包括一系列程序验证迭代,其中向所选字线施加程序脉冲(例如,1302、1304、1306、…、1308),接着是为VvaL、Vva、VvbL、Vvb和Vvc的验证电压(例如,1310)。该编程操作在从开始时间ts到最终的结束时间tf的时间段1312内延伸。在错误检测处理中在ta处发生Vra下的读取操作。基于错误检测处理的结果,可以开始数据恢复操作,该数据恢复操作可使用在tc处在Vrc下的C状态读取以及在tb处在Vrb下的B状态读取。
可以提供错误检测和恢复处理的各种替选。
1.在所述方案中,使用E状态存储元件的数据锁存器的(0,1,1)配置来将这些E状态存储元件与使用(1,1,1)配置的禁止的A/B/C状态存储元件区分开。替选是将(0,1,1)用于禁止的A/B/C状态存储元件并且将(1,1,1)用于E状态存储元件的相反方法。
2.在所述方案中,在编程操作结束时,将特有的(0,1,1)数据锁存器配置用于E状态存储元件,以将该E状态存储元件与任何其它存储元件区分开。然而,通常,可以将(0,1,1)配置作为替代分配给禁止的A/B/C状态存储元件中的任一个,因而,在编程操作结束时,能够区分该状态的存储元件。例如,可以向禁止的A状态存储元件分配(0,1,1),以使得在编程结束时,可以将经编程的A状态存储元件与其它存储元件区分开。根据选择了哪个选项,确保了将针对与该状态相对应的存储元件恢复正确的数据。这在仅一种状态的数据损坏的情形下会是有用的。例如,在一些具体情况下,存储元件难以被编程为C状态,从而导致该页使程序状态失败,而关于其它所有状态的数据看上去都正常。在这样的情况下,可以通过使用A读取、B读取和C读取来根据QDL数据和其它状态确定C状态存储元件,从而恢复完整的数据。还可以提供ROM保险丝选项以选择要将哪个状态与该数据恢复方案相关联。
3.如所述,存储两种未使用的数据锁存器配置:(0,1,1)和(1,1,0)。可以一起使用这两种组合来表示两种不同类型的存储元件。例如,可以使用(0,1,1)配置来表示E状态存储元件,而可以将(1,1,0)配置用于禁止的C状态存储元件。在这种情况下,对于至少这两种数据状态,可以确保完整数据恢复。
注意,以上结合图9描述了通常不使用(QDL,UDL,LDL)的两种组合:即,#1(0,1,1)和#2(1,1,0)。在所提供的详细示例中,使用了本身的组合#1。然而,例如,还可以使用组合#1和组合#2这两者以从两种失败进行恢复。例如,可以向E状态失败分配组合#1,并且可以向A状态失败(例如,Ainh)分配组合#2。在这种情况下,可以恢复E->X以及A->X失败。作为另一替选,根据其它锁存器分配,可以使用组合#2来代替组合#1。
在一个实施例中,一种用于对非易失性存储系统中的一组存储元件进行编程的方法,所述方法包括:基于写入数据,在与该组中要保持在经擦除状态的第一子组中的存储元件相关联的数据锁存器中、以及在与该组中要编程为各自的目标数据状态的第二子组中的存储元件相关联的数据锁存器中配置数据。该方法还包括禁止第一子组中的存储元件、同时对所述第二子组中的存储元件进行编程,并且基于第二子组中的存储元件在编程期间的进度来更新第二子组中的存储元件的关联数据锁存器。该方法还包括:确定第二子组中不超过最大数量的存储元件未能达到其各自的目标数据状态(这与具有不大于指定数量的位或存储元件错误相关),使得认为对第二子组中的存储元件的编程成功地完成。该方法还包括:响应于对第二子组中的存储元件的编程的成功完成,通过对第一子组中的存储元件执行用于区分经擦除状态与目标数据状态中的相邻状态的读取操作来确定第一子组中发生错误的存储元件的数量。
在另一实施例中,一种非易失性存储系统包括:一组非易失性存储元件,该组非易失性存储元件包括该组中要保持在经擦除状态的第一子组中的存储元件以及该组中要编程为各自的目标数据状态的第二子组中的存储元件。还提供了与每个存储元件相关联的数据锁存器、以及至少一个控制电路。该至少一个控制电路用于:(a)基于写入数据,在与第一子组中的存储元件相关联的数据锁存器中以及在与第二子组中的存储元件相关联的数据锁存器中配置数据;(b)禁止第一子组中的存储元件,对第二子组中的存储元件进行编程,并且基于第二子组中的存储元件在被编程时的进度来更新第二子组中的存储元件的关联数据锁存器;(c)确定第二子组中不超过最大数量的存储元件未能达到其各自的目标数据状态,使得认为对第二子组中的存储元件的编程成功完成;以及(d)响应于对第二子组中的存储元件的编程的成功完成,通过对第一子组中的存储元件执行用于区分经擦除状态与目标数据状态中的相邻状态的读取操作来确定第一子组中发生错误的存储元件的数量。
在另一实施例中,一种非易失性存储系统包括:用于基于写入数据来在与该组中要保持在经擦除状态的第一子组中的存储元件相关联的数据锁存器中、以及在与该组中要编程为各自的目标数据状态的第二子组中的存储元件相关联的数据锁存器中配置数据的装置。还提供了用于禁止第一子组中的存储元件同时对第二子组中的存储元件进行编程、并且基于第二子组中的存储元件在编程期间的进度来更新第二子组中的存储元件的关联数据锁存器的装置。还提供了用于确定第二子组中不超过最大数量的存储元件未能达到各自的目标数据状态,使得认为对第二子组中的存储元件的编程成功完成的装置。还提供了用于响应于对第二子组中的存储元件的编程的成功完成,通过对第一子组中的存储元件执行用于区分经擦除状态与目标数据状态中的相邻状态的读取操作来确定第一子组中发生错误的存储元件的数量的装置。
在另一实施例中,一种用于对非易失性存储系统中的组进行编程的方法包括:基于写入数据,在与存储元件相关联的数据锁存器中配置数据,其中所述写入数据标识打算将存储元件中的至少一部分编程后的不同的目标数据状态。该方法还包括:执行编程操作以将存储元件中的至少一部分编程为不同的目标数据状态,并且基于存储元件中的至少一部分在编程操作期间的进度来更新存储元件中的至少一部分的关联数据锁存器。该方法还包括:响应于编程操作的成功完成来执行读取操作,其中该读取操作区分处于不同目标数据状态中的一种目标数据状态(例如,E状态)的存储元件与处于不同目标数据状态中的其它目标数据状态(例如,A状态、B状态和C状态)的存储元件。该方法还包括:从处于其它目标数据状态的存储元件当中,通过确定期望被编程为该一种目标数据状态的存储元件的数量来确定出错的存储元件的数量。该方法还包括:如果出错的存储元件的数量足够大,则执行恢复操作以恢复写入数据。
提供了相应的方法、系统以及用于执行本文中所提供的方法的计算机可读存储装置或处理器可读存储装置。
前述详细描述是出于说明和描述的目的而提供的。并不意味着是详尽的或者限于所公开的确切形式。鉴于以上教导,可以进行多种变型和变化。所述实施例是为了最好地说明技术的原理及其实际应用而选择的,由此使得本领域的其它技术人员能够在各种实施例中以及通过适合于所考虑的特定使用的各种变型来最佳地利用该技术。本技术的范围旨在由所附权利要求来限定。

Claims (13)

1.一种用于对非易失性存储系统中的一组存储元件进行编程的方法,所述方法包括:
基于写入数据,在与所述组(300)中要保持在经擦除状态的第一子组中的存储元件相关联的数据锁存器(194-197)中、以及在与所述组中要编程为各自的目标数据状态(A,B,C)的第二子组中的存储元件相关联的数据锁存器中配置数据;
禁止所述第一子组中的存储元件、同时对所述第二子组中的存储元件进行编程,并且基于所述第二子组中的存储元件在编程期间的进度来更新所述第二子组中的存储元件的关联数据锁存器;
确定所述第二子组中不超过最大数量(阈值)的存储元件未能达到其各自的目标数据状态,使得认为对所述第二子组中的存储元件的编程成功完成;以及
响应于对所述第二子组中的存储元件的编程的成功完成,通过对所述第一子组中的存储元件执行用于区分所述经擦除状态与所述目标数据状态中的相邻状态的读取操作,来确定所述第一子组中发生错误的存储元件的数量,其中,如果所述第一子组中发生错误的存储元件的数量足够大,则执行恢复操作以恢复所述写入数据,其中,所述恢复操作对所述第二子组中的存储元件执行区分各目标数据状态的附加读取操作。
2.根据权利要求1所述的方法,其中:
所述第二子组中的存储元件要被编程为至少三种目标数据状态,包括作为所述相邻状态的第一目标数据状态(A)、与所述第一目标数据状态相邻的第二目标数据状态(B)以及与所述第二目标数据状态相邻的第三目标数据状态(C);以及
所述附加读取操作区分所述第二目标数据状态与所述第三目标数据状态,然后区分所述第一目标数据状态与所述第二目标数据状态。
3.根据权利要求1或2所述的方法,其中:
所述第二子组中已成功完成编程的每个存储元件均具有其关联数据锁存器之一中的第一值;
所述第一子组中的每个存储元件均利用与其关联数据锁存器之一中所述第一值不同的值来标识;以及
所述确定所述第一子组中发生错误的存储元件的数量包括:使用所述第一子组中的每个存储元件的关联数据锁存器之一以及来自所述读取操作的结果来执行逻辑运算。
4.根据权利要求1或2所述的方法,其中:
与每个存储元件相关联的数据锁存器包括第一(QDL)数据锁存器、第二(UDL)数据锁存器和第三(LDL)数据锁存器;
所述编程包括:针对至少一种所述目标存储状态,相对于偏移验证水平和目标验证水平来验证所述第二子组中的至少一部分存储元件;
对于针对至少一种所述目标存储状态来相对于所述偏移验证水平和所述目标验证水平所验证的所述第二子组中的每个存储元件,所述第一数据锁存器(QDL)指示该存储元件是否已达到所述偏移验证水平,所述第二数据锁存器(UDL)提供上页数据,并且所述第三数据锁存器(LDL)提供下页数据;
对于所述第一子组中的每个存储元件,所述第一数据锁存器的值不同于所述第二子组中已成功完成编程的存储元件的第一数据锁存器的值;以及
所述确定所述第一子组中发生错误的存储元件的数量包括:使用所述第一子组的存储元件的第一数据锁存器以及来自所述读取操作的结果来执行逻辑运算。
5.根据权利要求1或2所述的方法,其中:
所述确定所述第二子组中不超过最大数量的存储元件未能达到其各自的目标数据状态包括使用所述第二子组中的每个存储元件的数据锁存器来执行逻辑运算。
6.根据权利要求1或2所述的方法,其中:
所述确定所述第一子组中发生错误的存储元件的数量包括确定所述第一子组中被读取为处于至少一种所述目标数据状态的存储元件的数量。
7.根据权利要求1或2所述的方法,其中:
所述确定所述第一子组中发生错误的存储元件的数量包括:当所述读取操作向所述第一子组内的每个存储元件施加控制栅电压时,确定所述第一子组中不导通的存储元件的数量,其中所述控制栅电压是以区分所述经擦除状态与所述目标数据状态中的所述相邻状态的水平来施加的。
8.根据权利要求1或2所述的方法,其中:
所述第二子组中的存储元件被编程有至少两页数据。
9.一种非易失性存储系统,包括:
一组非易失性存储元件(300),包括所述组中要保持在经擦除状态的第一子组中的存储元件以及所述组中要编程为各自的目标数据状态的第二子组中的存储元件;
与每个存储元件相关联的数据锁存器(194-197);以及
至少一个控制电路(192),所述至少一个控制电路用于:(a)基于写入数据,在与所述第一子组中的存储元件相关联的数据锁存器中、以及在与所述第二子组中的存储元件相关联的数据锁存器中配置数据;(b)禁止所述第一子组中的存储元件,对所述第二子组中的存储元件进行编程,并且基于所述第二子组中的存储元件在被编程时的进度来更新所述第二子组中的存储元件的关联数据锁存器;(c)确定所述第二子组中不超过最大数量的存储元件未能达到其各自的目标数据状态,使得认为对所述第二子组中的存储元件的编程成功完成;(d)响应于对所述第二子组中的存储元件的编程的成功完成,通过对所述第一子组中的存储元件执行用于区分所述经擦除状态与所述目标数据状态中的相邻状态的读取操作来确定所述第一子组中发生错误的存储元件的数量;以及(e)如果所述第一子组中发生错误的存储元件的数量足够大,则所述至少一个控制电路执行恢复操作以恢复所述写入数据,其中,所述恢复操作对所述第二子组中的存储元件执行区分各目标数据状态的附加读取操作。
10.根据权利要求9所述的非易失性存储系统,其中:
所述第二子组中已成功完成编程的每个存储元件均具有其关联数据锁存器之一中的第一值;
所述第一子组中的每个存储元件均利用与其关联数据锁存器之一中的所述第一值不同的值来标识;以及
为了标识所述第一子组中的存储元件,所述至少一个控制电路使用所述第一子组中的每个存储元件的关联数据锁存器之一以及来自所述读取操作的结果来执行逻辑运算。
11.根据权利要求9或10所述的非易失性存储系统,其中:
与每个存储元件相关联的数据锁存器包括第一(QDL)数据锁存器、第二(UDL)数据锁存器和第三(LDL)数据锁存器;
为了对所述第二子组中的存储元件进行编程,所述至少一个控制电路针对至少一种所述目标存储状态,相对于偏移验证水平和目标验证水平来验证所述第二子组中的至少一部分存储元件;
对于针对至少一种所述目标存储状态来相对于所述偏移验证水平和所述目标验证水平所验证的所述第二子组中的每个存储元件,所述第一数据锁存器指示该存储元件是否已达到所述偏移验证水平,所述第二数据锁存器提供上页数据,并且所述第三数据锁存器提供下页数据;
对于所述第一子组中的每个存储元件,所述第一数据锁存器的值不同于所述第二子组中已成功完成编程的存储元件的第一数据锁存器的值;以及
为了标识所述第一子组中的存储元件,所述至少一个控制电路使用所述第一数据锁存来执行逻辑运算。
12.根据权利要求9或10所述的非易失性存储系统,其中:
所述至少一个控制电路使用所述第二子组中的每个存储元件的数据锁存器来执行逻辑运算,以验证所述第二子组中不超过最大数量的存储元件的最大数量未能达到所述目标数据状态。
13.根据权利要求9或10所述的非易失性存储系统,其中:
为了确定所述第一子组中发生错误的存储元件的数量,所述至少一个控制电路确定所述第一子组中被读取为处于至少一种所述目标数据状态的存储元件的数量。
CN201180007275.2A 2010-01-28 2011-01-27 允许多个数据状态失败的非易失性存储器中的多位编程方法以及编程失败的情况下的数据恢复方法 Active CN102754165B (zh)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
CN102754165A CN102754165A (zh) 2012-10-24
CN102754165B true CN102754165B (zh) 2015-04-15

Family

ID=43735965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180007275.2A Active CN102754165B (zh) 2010-01-28 2011-01-27 允许多个数据状态失败的非易失性存储器中的多位编程方法以及编程失败的情况下的数据恢复方法

Country Status (7)

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

Families Citing this family (45)

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

Family Cites Families (14)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
CN102754165B (zh) 允许多个数据状态失败的非易失性存储器中的多位编程方法以及编程失败的情况下的数据恢复方法
US20200143877A1 (en) Semiconductor memory device and memory system
US9053810B2 (en) Defect or program disturb detection with full data recovery capability
CN107230499B (zh) 非易失性存储器装置及其编程验证操作的方法
US7616499B2 (en) Retention margin program verification
US8839074B2 (en) On chip data recovery for non-volatile storage
CN113168881B (zh) 检测存储器设备中字线与源极线之间的短路及恢复方法
CN105359218A (zh) 非易失性存储器编程数据保存
CN101351848A (zh) 用于非易失性存储器中经改进的编程检验操作的方法和装置
CN103219040A (zh) 非易失性存储器件和存储器系统及其编程方法和控制方法
CN106205702B (zh) 对编程故障自动响应的非易失性存储装置
US7652918B2 (en) Retention margin program verification
US8842476B2 (en) Erratic program detection for non-volatile storage
US9767905B2 (en) Scan chain circuits in non-volatile memory
CN105308685A (zh) 在非易失性多级多个存储器管芯的编程中恢复附近数据
CN113821159B (zh) 用于存储器装置中的高数据保留的混合擦除模式
US8880964B2 (en) Block and page level bad bit line and bits screening methods for program algorithm
US11315649B2 (en) Memory controller, memory device and memory system having improved threshold voltage distribution characteristics and related operating methods
US8988947B2 (en) Back bias during program verify of non-volatile storage
US7606071B2 (en) Compensating source voltage drop in non-volatile storage
CN104969198A (zh) 数据路径完整性验证
US11004535B1 (en) Robust storage of bad column data and parity bits on word line
CN112530493A (zh) 半导体存储装置
US7606072B2 (en) Non-volatile storage with compensation for source voltage drop

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