CN101589437A - 用于验证编程的分段位扫描 - Google Patents

用于验证编程的分段位扫描 Download PDF

Info

Publication number
CN101589437A
CN101589437A CNA2007800441479A CN200780044147A CN101589437A CN 101589437 A CN101589437 A CN 101589437A CN A2007800441479 A CNA2007800441479 A CN A2007800441479A CN 200780044147 A CN200780044147 A CN 200780044147A CN 101589437 A CN101589437 A CN 101589437A
Authority
CN
China
Prior art keywords
memory device
volatile memory
programming
group
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007800441479A
Other languages
English (en)
Other versions
CN101589437B (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 Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/563,585 external-priority patent/US7545681B2/en
Priority claimed from US11/563,590 external-priority patent/US7440319B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN101589437A publication Critical patent/CN101589437A/zh
Application granted granted Critical
Publication of CN101589437B publication Critical patent/CN101589437B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • 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/10Programming or data input circuits
    • G11C16/12Programming voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • 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
    • 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

Abstract

一组非易失性存储元件经受编程过程以便存储一组数据。在所述编程过程期间,执行一个或一个以上验证操作以确定所述非易失性存储元件是否已达到其存储适当数据的目标条件。基于所述非易失性存储元件的重叠群组是否具有少于阈值数目的未正确编程的非易失性存储元件来作出关于是否继续编程或编程是否成功的决定。

Description

用于验证编程的分段位扫描
技术领域
本发明涉及非易失性存储装置的技术。
背景技术
半导体存储器装置变得越来越常用于各种电子装置。举例来说,非易失性半导体存储器用于蜂窝电话、数字相机、个人数字助理、移动计算装置、非移动计算装置及其它装置。电可擦除可编程只读存储器(EEPROM)及快闪存储器是最常见的非易失性半导体存储器。
许多类型的EEPROM及快闪存储器利用位于半导体衬底中的沟道区上方且与其隔离的浮动栅极。浮动栅极位于源极区与漏极区之间。控制栅极提供在浮动栅极上,且与其隔离。晶体管的阈值电压受保持在浮动栅极上的电荷量的控制。也就是说,在晶体管接通以允许其源极与漏极之间导电之前必须施加到控制栅极的最小电压量受浮动栅极上的电荷电平的控制。
快闪存储器系统的一个实例使用NAND结构,其包含将多个晶体管串联排列并夹在两个选择栅极之间。所述串联晶体管和所述选择栅极称为NAND串。图1是展示一个NAND串的俯视图。图2是其等效电路。图1和图2中描绘的NAND串包含四个串联并夹在第一(或漏极)选择栅极120与第二(或源极)选择栅极122之间的晶体管100、102、104和106。选择栅极120将NAND串经由位线触点126连接到位线。选择栅极122将NAND串连接到源极线128。通过将适当电压施加到选择线SGD来控制选择栅极120。通过将适当电压施加到选择线SGS来控制选择栅极122。晶体管100、102、104和106中的每一者具有控制栅极和浮动栅极。举例来说,晶体管100具有控制栅极100CG和浮动栅极100FG。晶体管102包含控制栅极102CG和浮动栅极102FG。晶体管104包含控制栅极104CG和浮动栅极104FG。晶体管106包含控制栅极106CG和浮动栅极106FG。控制栅极100CG连接到字线WL3,控制栅极102CG连接到字线WL2,控制栅极104CG连接到字线WL1,且控制栅极106CG连接到字线WL0。
请注意,虽然图1和图2展示了NAND串中的四个存储器单元,但使用四个晶体管只是作为实例而提供。NAND串可具有少于四个存储器单元或多于四个存储器单元。举例来说,有些NAND串将包含八个存储器单元、16个存储器单元、32个存储器单元、64个存储器单元、128个存储器单元等。本文中的论述不限于NAND串中的存储器单元的任何特定数目。
使用NAND结构的快闪存储器系统的一典型结构将包含若干NAND串。每一NAND串通过其受选择线SGS控制的源极选择栅极而连接到源极线,且通过其受选择线SGD控制的漏极选择栅极而连接到其相关联的位线。每一位线及经由位线触点连接到所述位线的相应NAND串包括存储器单元的阵列的列。位线与多个NAND串共享。通常,位线以垂直于字线的方向延伸于NAND串上,且连接到一个或一个以上读出放大器。字线(WL3、WL2、WL1及WL0)包括存储器阵列的行。
每一存储器单元可存储数据(模拟或数字)。当存储一位数字数据(称为二进制存储器单元)时,存储器单元的可能阈值电压的范围被划分成两个范围,其被指派有逻辑数据“1”和“0”。在NAND型快闪存储器的一个实例中,阈值电压在存储器单元被擦除后是负的,且定义为逻辑“1”。编程之后的阈值电压是正的,且定义为逻辑“0”。当阈值电压是负的且通过将0伏施加到控制栅极而尝试读取时,存储器单元将接通以指示正在存储逻辑一。当阈值电压是正的且通过将0伏施加到控制栅极而尝试读取操作时,存储器单元将不接通,这指示存储逻辑零。
存储器单元还可存储多个电平的信息(称为多态存储器单元)。在存储多个电平的数据的情况下,可能的阈值电压的范围被划分为数据电平的数目。举例来说,如果存储四个电平的信息(两位数据),则将存在四个指派给数据值“11”、“10”、“01”和“00”的阈值电压范围。在NAND型存储器的一个实例中,擦除操作之后的阈值电压是负的,且定义为“11”。正阈值电压用于“10”、“01”和“00”的数据状态。如果存储八个电平的信息(三位数据),则将存在八个指派给数据值“000”、“001”、“010”、“011”、“100”、“101”、“110”和“111”的阈值电压范围。编程到存储器单元中的数据与单元的阈值电压电平之间的具体关系取决于对所述单元采用的数据编码方案。举例来说,第6,222,762号美国专利和第2004/0255090号美国专利申请公开案(其两者的全文均以引用形式并入本文中)描述多态快闪存储器单元的各种数据编码方案。在一个实施例中,使用格雷码指派将数据值指派给阈值电压范围,使得如果浮动栅极的阈值电压错误地偏移到其相邻物理状态,则仅一个位将受到影响。
在以下美国专利/专利申请案(其全部以引用的方式并入本文中)中提供NAND型快闪存储器的有关实例及其操作:第5,570,315号美国专利、第5,774,397号美国专利、第6,046,935号美国专利、第6,456,528号美国专利、第US2003/0002348号美国专利公开案,和第2006/0140011号美国专利公开案。本文中的论述也可应用于除NAND以外的其它类型的快闪存储器以及其它类型的非易失性存储器。
当对一快闪存储器单元编程时,将编程电压施加到控制栅极且将位线接地。由于快闪存储器单元的沟道与浮动栅极之间的电压差异,来自浮动栅极下的沟道区域的电子被注入到浮动栅极中。当电子在浮动栅极中积累时,浮动栅极变得带负电荷,且存储器单元的阈值电压升高。
在一些实施方案中,将编程电压作为一系列电压脉冲而施加。每一编程脉冲之后是一个或一个以上验证操作,用以确定存储器单元是否已被编程为所要的状态。
现代快闪存储器装置,特别是NAND结构的快闪存储器装置及包含多态存储器单元的快闪存储器装置,是按块和页排列的。块是指擦除单位,且定义在单次擦除操作中被同时擦除的一群组存储器单元。通常存储器单元块是最小群组的可擦除的存储器单元。页是指编程单位,且定义被同时编程的一群组数据位(可为存储器单元)。每一块通常包含多个页。通常将存储器单元排列成页和块是基于存储器阵列的物理实现。举例来说,在许多NAND存储器阵列中,存储器单元页是由共享相同字线的那些单元定义,而块是由驻留在相同NAND串中的那些页定义。举例来说,如果NAND串包含三十二个串联的存储器单元,则块将通常包含三十二个页,或三十二页的整数倍。在一些NAND存储器阵列中,一个字线可由两页的存储器单元共享,第一页的数据存储在沿所述字线的偶数列的存储器单元中,而第二页的数据存储在沿所述字线的奇数列的存储器单元中。其它排列也是可能的。
在一些利用多态存储器单元的存储器系统中,存储器单元中的每一位数据处于不同的页中。举例来说,如果存储器单元阵列每存储器单元存储三位数据(八个状态或电平的数据),则每一存储器单元在三个页上存储数据,其中三个位中的每一者处于不同的页上。因此,在此实例中的块内,每一字线与三个页或三页的整数倍相关联。其它排列也是可能的。
过去,存储在快闪存储器中的数据的组织是遵照配合磁盘存储装置使用的文件系统,磁盘存储装置在扇区中存储数据。扇区通常是一群组固定大小的数据,例如512字节的用户数据加上某一数目的字节的额外开销。在许多现代文件系统中,计算机或其它主机系统的操作系统将数据排列成扇区,且在逐扇区的基础上将数据写入到非易失性存储装置和从非易失性存储装置读取数据。为了能在此类系统和应用中方便地使用快闪存储器装置,许多现代快闪存储器用类似方式处置数据,将逻辑扇区地址映射到快闪存储器阵列中的物理地址。
近些年来,快闪存储器装置的大小和容量已大幅增加,从而形成具有多于40亿个单元的存储器阵列。在此类阵列中,单个字线可延伸到数万个存储器单元。在此类大规模快闪存储器中,每一页包含多个扇区。由此,由主机系统处置的数据单位(即“扇区”)小于快闪存储器装置中的最小编程单位。然而,通常包括快闪存储器的页的多个数据扇区将被依序传送到快闪存储器,且将在单次操作中被同时编程到快闪存储器的页中。
作为进一步的背景,在大容量数据存储装置和存储系统以及数据通信系统中使用错误校正编码(ECC)是众所周知的。在此项技术中基本的是错误校正编码涉及存储或传送额外位(通常称为奇偶校验位、代码位、检查和位、ECC位等),其是从正被编码的“有效负载”(或原始数据)数据位确定或计算的。举例来说,将错误校正编码数据存储在存储器资源中涉及使用选定代码来编码一个或一个以上代码字,其包含实际数据和额外的代码位。检索存储的数据涉及根据用来编码存储的代码字的相同代码来解码存储的代码字。因为代码位“过指定(over-specify)”代码字的实际数据部分,所以可容许某一数目的错误位,而不会有在解码之后变明显的实际数据的任何丢失。
在此项技术中许多ECC编码方案是众所周知的。这些常规错误校正码特别可用于大规模存储器,包含快闪(和其它非易失性)存储器,这是因为对此类编码方案可提供的制造产量和装置可靠性的实质性影响,从而允许具有若干不可编程或有缺陷的单元的装置可使用。当然,提供额外存储器单元以存储代码位的产量节省与成本(即,代码“率”)之间存在折衷。快闪存储器装置的一些ECC代码往往具有高于数据通信应用中使用的代码(其可具有低到1/2的代码率)的代码率(即,较低的代码位对数据位比率)。通常配合快闪存储器存储装置使用的众所周知的ECC代码的实例包含里德-所罗门(Reed-Solomon)代码、其它BCH代码、汉明(Hamming)代码等。通常配合快闪存储器存储装置使用的错误校正码是系统性的,因为最终代码字的数据部分相对于被编码的实际数据并未改变,其中代码或奇偶校验码附加到数据位以形成完整的代码字。
给定错误校正码的特定参数包含代码类型、导出代码字的实际数据的块大小及编码后代码字的总长度。举例来说,如果使用至少60个ECC或奇偶校验位,则施加于512字节(4096位)数据的扇区的典型BCH代码可校正多达四个错误位。里德-所罗门代码是BCH代码的子集,且也常用于错误校正。举例来说,典型的里德-所罗门代码可使用约72个ECC位来校正512字节数据扇区中的多达四个错误。在快闪存储器的背景下,错误校正编码提供制造产量的实质性改进,以及快闪存储器随时间的可靠性的实质性改进。
作为进一步的背景,对常规快闪存储器装置的编程和擦除可涉及验证正被编程或擦除的存储器单元的状态,以确保经受操作的每一单元均已达到所要状态。实际上,考虑到通常通过施加适当电压的脉冲序列对快闪存储器单元执行编程和擦除,且也考虑到脉冲序列消耗大量时间和功率,所以许多快闪存储器现在在编程或擦除操作本身期间包含验证操作。举例来说,对存储器单元页的编程通常通过以下方式来执行:施加编程脉冲,且随后针对正被编程的数据电平的一个或一个以上所要“验证”电压来验证被编程的单元。如果在第一脉冲之后并非所有存储器单元均经过验证而达到适当的所要电平,则重复编程脉冲(通常以较高电压),且再次验证所述单元。在所有存储器单元均达到所要的编程电平后,编程操作终止。
验证通常也在擦除快闪存储器单元块时执行,其中在必要时施加额外擦除脉冲以确保所有单元均被擦除。一般来说,对于NAND快闪存储器,通常通过将选定控制栅极电压施加于正被擦除的块的所有字线来执行擦除验证,以确定是否有任何单元在所述控制栅极电压下导电。因为擦除的单元的阈值电压通常低于0伏,且因为负字线电压的施加不合需要,所以对负擦除电压的验证通常是通过字线上的低电压或零电压来完成,其中共同源极线被偏置以将负栅极到源极电压有效地置于NAND链中的每一存储器单元处。在“软”编程期间使用类似方法,“软”编程是指轻微地编程擦除的快闪存储器单元以防止一些或所有单元被过深擦除的常规操作。
验证编程的典型方法是在由控制栅极电压设置的特定比较点处测试每一单元的导电。举例来说,可通过以下方式来锁定先前已验证为被充分编程的那些单元:使正被编程的页中的那些单元的位线电压升高到高电平(例如,Vdd电源的电压),以停止对那些单元的编程过程。那些尚未被充分编程的单元接收编程序列中的下一较高电压脉冲,之后是另一验证操作。
如此项技术中众所周知,一些存储器单元的编程或擦除比其它的单元慢,这是因为那些单元间的制造变动、因为那些单元先前被擦除到比其它单元低的阈值电压、因为页内的单元间的不均匀磨损,或类似原因。且当然由于缺陷或其它原因,有些单元无论怎样都无法被编程或擦除。如前所述,错误校正编码提供容许某一数目的缓慢或失败单元同时仍使存储器保持可用的能力。在一些应用中,通过以下方式来编程数据页:重复施加编程脉冲,直到所述页上的所有存储器单元均验证达到所要的编程状态为止。在这些应用中,如果在成功验证编程页之前达到了最大数目的编程脉冲则编程终止,此后将尚未经验证达到所要状态的单元的数目与阈值进行比较,所述阈值取决于将用于从所述页读取数据的错误校正编码的能力。在错误校正充分稳固的其它应用中,通过以下方式来节省编程和擦除时间:在尚未完全编程或擦除的缓慢(或错误)单元的数目少于可校正的位的数目时终止编程或擦除脉冲的序列。
通常在逐扇区的基础上执行错误校正。因此,每一扇区将具有其自身的一组ECC代码。此错误校正是方便且有用的,因为扇区是将数据传递到主机系统或从主机系统传递数据的所要单元。
使用BCH或里德-所罗门代码在512字节的扇区内可校正的通常最大位数为四。因此,如果编程过程引起两个错误,则可认为所述过程成功,因为这两个错误可在随后读取过程期间使用ECC来校正。在存储8个扇区的页中,错误校正应能够容许32个错误位(4位/扇区×8个扇区)。然而,在常规电路中,验证过程在整个页上计算错误(未合适编程的位),而不管错误位的位置。因为有可能所有错误位都在相同扇区内,所以可在页上的编程(或擦除)验证期间忽略的错误位的最大数目必须保持为低于允许对一扇区忽略的位的最大数目。通常,在许多存储器系统中,可忽略的最大位数甚至更低,以便确保保持某一错误校正以校正在读取过程期间发现的其它错误。考虑其中在一页中的八个扇区中的每一者中一个位已失败的实例。上述典型系统将不得出编程成功的结论,而不管ECC每扇区校正一个错误的能力。
发明内容
本发明提出一种新系统,其允许在非易失性存储器系统中容许更多的错误位。页中的数据位被分组成一组重叠的区。在一个实施例中,区比扇区大,且每一区可跨越两个或两个以上扇区。然而,可使用其它大小的区,且在其它实施例中,区可比扇区小。因为区是重叠的,所以一扇区可能处于两个或两个以上区中。在作为编程(或擦除)的一部分而执行的验证期间,对每一区确定所述区内的错误位的数目是否小于对一扇区可校正的最大位数。此方案允许容许更多的错误位。
一个实施例包含使一组非易失性存储元件经受作为编程过程的一部分的编程,其中所述组非易失性存储元件包含重叠群组的非易失性存储元件。每一群组被测试,以确定其是否具有小于阈值数目的未被正确编程的非易失性存储元件。编程过程基于每一群组是否具有小于阈值数目的未被正确编程的非易失性存储元件而继续进行(例如,继续/不继续或结论为成功/不成功)。在一个实例实施方案中,对每一群组的测试包含确定未被正确编程的冗余非易失性存储元件的第一数目、确定未被正确编程的特定群组的原始数据非易失性存储元件的第二数目,及将第一数目与第二数目的总和与阈值数目比较。
一个实施例包含多个非易失性存储元件、一个或一个以上与所述非易失性存储元件通信的电压产生电路、多个与所述非易失性存储元件通信的感测电路、多个与所述感测电路通信的数据处理电路,及与所述一个或一个以上电压产生电路及数据处理电路通信的控制电路。所述一个或一个以上电压产生电路将验证电压提供到所述多个非易失性存储元件。所述感测电路感测非易失性存储元件的条件。所述数据处理电路将关于非易失性存储元件是否已被正确编程的指示提供到控制电路。所述控制电路确定重叠群组的非易失性存储元件每一者是否具有小于阈值数目的未被正确编程的非易失性存储元件。
附图说明
图1是NAND串的俯视图。
图2是NAND串的等效电路图。
图3是非易失性存储器系统的方框图。
图4是描绘感测块的一个实施例的方框图。
图5A是描绘存储器阵列的一个实施例的方框图。
图5B描绘一页数据。
图6描绘一组实例阈值电压分布且描述将非易失性存储器编程的过程。
图7描绘一组实例阈值电压分布且描述将非易失性存储器编程的过程。
图8A到图8C展示各种阈值电压分布且描述将非易失性存储器编程的过程。
图9是描绘在一个实施例中将非易失性存储器编程的次序的表。
图10是描述将非易失性存储器编程的过程的一个实施例的流程图。
图11描绘被分组成区的一页数据和冗余数据。
图12是描绘一组扇区的范围的实例的表。
图13是描绘一组重叠区的范围的实例的表。
图14是描述确定每个区的错误位数目的过程的一个实施例的流程图。
图15是用于确定每个区的错误位数目的电路的方框图。
图16A和图16B是描述确定错误位的数目的过程的一个实施例的流程图。
图17是描绘报告错误的电路的方框图。
图18是描述将非易失性存储器编程的过程的一个实施例的流程图。
具体实施方式
适合用于实施本发明的存储器系统的一个实例使用NAND快闪存储器结构。然而,也可使用其它类型的非易失性存储装置。举例来说,也可配合本发明使用一种所谓的TANOS结构(其由硅衬底上的TaN-Al2O3-SiN-SiO2的堆叠层组成),其基本上是使用在氮化物层(而不是浮动栅极)中俘获电荷的存储器单元。可用于快闪EEPROM系统的另一类型的存储器单元利用不导电介电材料代替导电浮动栅极而以非易失性方式来存储电荷。在陈(Chan)等人的文章“真正的单晶体管氧化物-氮化物-氧化物EEPROM装置”(“A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device,”)(IEEE电子装置通讯(IEEE Electron Device Letters)EDL-8卷,第3期,1987年3月,第93到95页)中描述此单元。由氧化硅、氮化硅和氧化硅(“ONO”)形成的三层电介质夹在导电控制栅极与存储器单元沟道上方的半导电衬底的表面之间。所述单元通过将电子从单元沟道注入到氮化物中而编程,电子被俘获在氮化物中且储存在有限的区中。此存储的电荷于是用可检测到的方式改变单元的沟道的一部分的阈值电压。所述单元通过将热空穴注入到氮化物中而擦除。也见诺扎基(Nozaki)等人的“具有MONOS存储器单元的用于半导体磁盘应用的1Mb EEPROM”(“A 1-Mb EEPROM with MONOS Memory Cellfor Semiconductor Disk Application,”)(IEEE固态电路学报(IEEE Journal of Solid-StateCircuits),26卷,第4期,1991年4月,第497到501页),该文描述了呈分裂栅极配置的类似单元,其中掺杂的多晶硅栅极在存储器单元沟道的一部分上延伸,从而形成单独的选择晶体管。前述两篇文章的全文以引用的方式并入本文中。在威廉D·布朗(WilliamD.Brown)和乔E·布鲁尔(Joe E.Brewer)编辑的“非易失性半导体存储器技术”(“Nonvolatile Semiconductor Memory Technology,”)(IEEE出版社,1998)(其以引用的方式并入本文中)的第1.2节中提到的编程技术在该节中也被描述为适用于介电电荷俘获装置。也可使用其它类型的存储器装置。
图3说明存储器装置210,其具有用于并行读取和编程一页存储器单元(例如,NAND多态快闪存储器)的读取/写入电路。存储器装置210可包含一个或一个以上存储器电路小片或芯片212。存储器电路小片212包含存储器单元阵列(两维或三维)200、控制电路220和读取/写入电路230A和230B。在一个实施例中,各种外围电路对存储器阵列200的存取是用对称方式在阵列的相对侧上实施,从而使得每一侧的存取线和电路的密度减半。读取/写入电路230A和230B包含多个感测块300,其允许并行读取或编程一页存储器单元。存储器阵列100可由字线经由行解码器240A和240B且由位线经由列解码器242A和242B寻址。在典型实施例中,控制器244与一个或一个以上存储器电路小片212包含在同一存储器装置210(例如,可移除的存储卡或封装)中。命令和数据经由线232在主机与控制器244之间传递,并经由线234在控制器与一个或一个以上存储器电路小片212之间传递。
控制电路220与读取/写入电路230A和230B协作以对存储器阵列200执行存储器操作。控制电路220包含状态机222、芯片上地址解码器224和功率控制模块226。状态机222提供对存储器操作的芯片级控制。芯片上地址解码器224在主机或存储器控制器使用的地址与解码器240A、240B、242A和242B使用的硬件地址之间提供地址接口。功率控制模块226控制在存储器操作期间供应到字线和位线的功率和电压。在一个实施例中,功率控制模块226包含一个或一个以上电荷泵,其可形成大于电源电压的电压。
图4是单个感测块300的方框图,所述感测模块300划分成核心部分(称为感测模块480)和共同部分490。在一个实施例中,对每一位线将存在单独的感测模块480,且对一组多个感测模块480将存在一个共同部分490。在一个实例中,感测块将包含一个共同部分490和八个感测模块480。群组中的每一感测模块将经由数据总线472与相关联的共同部分通信。关于其它细节,请参看美国专利申请公开案2006/0140007,其全文以引用的方式并入本文中。
感测模块480包括感测电路470,其确定连接的位线中的导电电流是在预定阈值电平以上还是以下。在一些实施例中,感测模块480包含一统称为读出放大器的电路。感测模块480还包含位线锁存器482,其用于设置连接的位线上的电压条件。举例来说,位线锁存器482中锁存的预定状态将导致连接的位线被拉到指定编程禁止的状态(例如,Vdd)。
共同部分490包括处理器492、一组数据锁存器494和I/O接口496,I/O接口496耦合在所述组数据锁存器494与数据总线420之间。处理器492执行计算。举例来说,其功能之一是确定存储在感测的存储器单元中的数据,并将确定的数据存储在所述组数据锁存器中。所述组数据锁存器494用于在读取操作期间存储由处理器492确定的数据位。其也用于在编程操作期间存储从数据总线420导入的数据位。导入的数据位表示既定被编程到存储器中的写入数据。I/O接口496提供数据锁存器494与数据总线420之间的接口。
在读取或感测期间,系统的操作受到状态机222的控制,状态机222控制将不同的控制栅极电压供应到寻址的单元。当其步进通过对应于由存储器支持的各种存储器状态的各种预定义的控制栅极电压时,感测模块480可在这些电压之一处切断,且输出将经由总线472从感测模块480提供到处理器492。在所述点处,处理器492通过考虑感测模块的切断事件和关于经由输入线493从状态机施加的控制栅极电压的信息而确定所得的存储器状态。其随后计算对存储器状态的二进制编码,并将所得的数据位存储在数据锁存器494中。在核心部分的另一实施例中,位线锁存器482服务于双重任务,既作为锁存感测模块480的输出的锁存器又作为上述位线锁存器。
预计一些实施方案将包含多个处理器492。在一个实施例中,每一处理器492将包含一输出线(图4中未描绘),使得每一输出线被一起线或(wired-OR)。在一些实施例中,输出线在连接到线或线之前被反相。此配置使得在编程验证过程期间能够快速确定编程过程何时已完成,因为接收线或线的状态机可确定何时所有被编程的位都已达到所要的电平。举例来说,当每一位已达到其所要电平时,所述位的逻辑零将被发送到线或线(或数据一被反相)。当所有位输出数据0(或被反相的数据一)时,于是状态机知道要终止编程过程。在其中每一处理器与八个感测模块通信的实施例中,状态机可(在一些实施例中)需要读取线或线八次,或将逻辑添加到处理器492以累加相关联的位线的结果,使得状态机只需要读取线或线一次。
在编程或验证期间,将待编程的数据从数据总线420存储在所述组数据锁存器494中。受到状态机控制的编程操作包括一系列施加到寻址的存储器单元的控制栅极的编程电压脉冲(以逐渐增加的量值)。每一编程脉冲之后是验证过程,用以确定存储器单元是否已被编程到所要状态。处理器492相对于所要的存储器状态监视所验证的存储器状态。当所述两者一致时,处理器492设置位线锁存器482,以便致使位线被拉到指示编程禁止的状态。这种情况禁止耦合到位线的单元进一步编程,即使其经受其控制栅极上的编程脉冲。在其它实施例中,处理器初始加载位线锁存器482,且感测电路在验证过程期间将其设置成禁止值。
数据锁存器堆叠494含有对应于感测模块的数据锁存器的堆叠。在一个实施例中,每感测模块480存在三个(或四个或另一数目的)数据锁存器。在一些实施方案中(但并非需要),数据锁存器实施为移位寄存器,以便将存储在其中的并行数据转换为用于数据总线420的串行数据,且反之亦然。在一个优选实施例中,对应于m个存储器单元的读取/写入块的所有数据锁存器可链接在一起以形成块移位寄存器,以便可通过串行传递来输入或输出数据块。确切地说,读取/写入模块的组被调适,使得其一组数据锁存器中的每一者将把数据依序移入或移出数据总线,就仿佛其是整个读取/写入块的移位寄存器的一部分一样。
关于非易失性存储装置的各种实施例的结构及/或操作的额外信息可参看(1)第2004/0057287号美国专利申请公开案“具有减少的源极线偏置错误的非易失性存储器和方法”(“Non-Volatile Memory And Method With Reduced Source Line Bias Errors”),在2004年3月25日公开;(2)第2004/0109357号美国专利申请公开案“具有改进的感测的非易失性存储器和方法”(“Non-Volatile Memory And Method with ImprovedSensing”),在2004年6月10日公开;(3)第20050169082号美国专利申请公开案;(4)第11/099,133号美国专利申请案,标题为“补偿非易失性存储器的读取操作期间的耦合”(“Compensating for Coupling During Read Operations of Non-VolatileMemory”),发明人陈建(Jian Chen),2005年4月5日申请;及(5)第11/321,953号美国专利申请案,标题为“非易失性存储器的参考读出放大器”(“Reference SenseAmplifier For Non-Volatile Memory”),发明人陈秀兰(Siu Lung Chan)和罗尔-爱德里安·赛里(Raul-Adrian Cernea),2005年12月28日申请。刚刚列出的所有五份专利档案的全文均以引用的方式并入本文中。
图5A描绘存储器单元阵列200的示范性结构。在一个实施例中,存储器单元的阵列划分成大量存储器单元块。快闪EEPROM系统中常见的是,块是擦除单位。也就是说,每一块含有可一起擦除的最小数目的存储器单元。每一块通常划分为若干页。页是编程单位。一页或一页以上数据通常存储在一行存储器单元中。一页可存储一个或一个以上扇区。扇区包含用户数据和额外开销数据。额外开销数据通常包含错误校正码(ECC),其是从扇区的用户数据计算的。控制器(如下所述)的一部分在数据正被编程到阵列中时计算ECC,且也在数据正从阵列中读取时检查数据。或者,ECC和/或其它额外开销数据存储在不同于与其有关的用户数据的页乃至块中。用户数据扇区通常为512字节,对应于磁盘驱动器中的扇区的大小。大量页形成块,从8页例如多达32、64、128乃至更多页。
图5B描绘页的原始数据。依据页的大小,页含有许多扇区。每一扇区包含用户数据、错误校正码(ECC)及标头信息。
作为一个实例,图5A中描绘NAND快闪EEPROM,其被划分成1024个块。在此实例中,在每一块中,存在对应于位线BL0,BL1,...BL69,623的69,623个列。在一个实施例中,一块的所有位线可在读取和编程操作期间被同时选择。沿共同字线且连接到任何位线的存储器单元可同时被编程。
在另一实施例中,位线被划分成偶数位线和奇数位线。在偶数/奇数位线结构中,沿共同字线且连接到奇数位线的存储器单元在一个时间被编程,而沿共同字线且连接到偶数位线的存储器单元在另一时间被编程。
图5A展示串联连接以形成NAND串的四个存储器单元。虽然四个单元被展示为包含在每一NAND串中,但可使用多于或少于四个(例如16、32、64、128或另一数目的存储器单元可在一NAND串上)。NAND串的一个端子经由漏极选择栅极(连接到选择栅极漏极线SGD)连接到对应的位线,且另一端子经由源极选择栅极(连接到选择栅极源极线SGS)连接到源极线。
在成功的编程过程(带有验证)结束时,存储器单元的阈值电压应按需要处于编程的存储器单元的一个或一个以上阈值电压分布内,或擦除的存储器单元的一阈值电压分布内。图6说明当每一存储器单元存储两位数据时存储器单元阵列的实例阈值电压分布。然而,其它实施例可每存储器单元使用多于或少于两位数据(例如,每存储器单元三位数据)。图6展示擦除的存储器单元的第一阈值电压分布E。也描绘编程的存储器单元的三个阈值电压分布A、B和C。在一个实施例中,E分布中的阈值电压是负的,且A、B和C分布中的阈值电压是正的。
图6的每一不同的阈值电压范围对应于所述组数据位的预定值。编程到存储器单元中的数据与单元的阈值电压电平之间的具体关系取决于对所述单元采用的数据编码方案。举例来说,2003年6月13日申请的第6,222,762号美国专利和第2004/0255090号美国专利申请公开案“跟踪存储器系统的单元”(“Tracking Cells For A MemorySystem”)(其两者的全文均以引用的方式并入本文中)描述了多态快闪存储器单元的各种数据编码方案。在一个实施例中,使用格雷码指派将数据值指派给阈值电压范围,从而使得如果浮动栅极的阈值电压错误地移位到其相邻的物理状态,则将仅有一个位受到影响。一个实例将“11”指派给阈值电压范围E(状态E),将“10”指派给阈值电压范围A(状态A),将“00”指派给阈值电压范围B(状态B),且将“01”指派给阈值电压范围C(状态C)。然而,在其它实施例中,不使用格雷码。虽然图11展示了四个状态,但本发明也可配合其它多态结构(包含那些包含多于或少于四个状态的结构)使用。
图6还展示了用于从存储器单元中读取数据的三个读取参考电压Vra、Vrb和Vrc。通过测试给定存储器单元的阈值电压是高于还是低于Vra、Vrb和Vrc,系统可确定存储器单元处于哪种状态。
图6还展示了三种验证参考电压Vva、Vvb和Vvc。当将存储器单元编程为状态A时,系统将测试那些存储器单元是否具有大于或等于Vva的阈值电压。当将存储器单元编程为状态B时,系统将测试存储器单元是否具有大于或等于Vvb的阈值电压。当将存储器单元编程为状态C时,系统将确定存储器单元的阈值电压是否大于或等于Vvc。
在一个称为全序列编程的实施例中,存储器单元可从擦除状态E直接编程为编程状态A、B或C中的任一者。举例来说,待编程的存储器单元群体可首先被擦除,从而使得所述群体中的所有存储器单元处于擦除状态E。在有些存储器单元正被从状态E编程为状态A时,其它存储器单元正被从状态E编程为状态B,且/或从状态E编程为状态C。图6的三个曲线箭头图解描绘全序列编程。
图7说明编程一存储两个不同页(下部页和上部页)的数据的多态存储器单元的两遍技术的实例。描绘了四个状态:状态E(11)、状态A(10)、状态B(00)和状态C(01)。对于状态E,两页都存储“1”。对于状态A,下部页存储“0”且上部页存储“1”。对于状态B,两页都存储“0”。对于状态C,下部页存储“1”且上部页存储“0”。请注意,虽然已将特定的位模式指派给每一状态,但也可指派不同的位模式。
在第一遍编程中,根据待编程到下部逻辑页中的位来设置单元的阈值电压电平。如果所述位是逻辑“1”,则阈值电压不改变,因为其由于早先已被擦除而处于适当的状态。然而,如果待编程的位是逻辑“0”,则单元的阈值电平提高为状态A,如箭头530所示。
在第二遍编程中,根据待编程到上部逻辑页中的位来设置单元的阈值电压电平。如果上部逻辑页位将存储逻辑“1”,那么不发生编程,因为单元依据对下部页位的编程而处于状态E或A之一,所述两个状态均携带上部页位“1”。如果上部页位将是逻辑“0”,那么阈值电压移位。如果第一遍导致单元保持处于擦除状态E,那么在第二阶段中单元被编程,使阈值电压提高为处于状态C,如箭头534所描绘。如果单元已因第一遍编程而被编程为状态A,那么存储器单元在第二遍中被进一步编程,使阈值电压提高成处于状态B,如箭头532所描绘。第二遍的结果是将单元编程为指定对上部页存储逻辑“0”的单元,而不改变下部页的数据。
在一个实施例中,系统可被设置以在将足够的数据写入以填充字线的情况下执行全序列写入。如果未写入足够的数据,那么编程过程可用接收到的数据来编程下部页。当接收到后续数据时,系统于是将编程上部页。在又一实施例中,系统可在编程下部页的模式下开始写入,并在足够的数据随后被接收以填充整个(或大部分)字线的存储器单元的情况下转换成全序列编程模式。在标题为“使用早先数据对非易失性存储器的管线化编程”(“Pipelined Programming of Non-Volatile Memories Using Early Data”)的美国专利申请案中揭示了此实施例的更多细节,该案为第2006/0126390号公开案,序列号为11/013,125,在2004年12月14日申请,发明人为塞吉·阿那托列维奇·格洛贝兹(SergyAnatolievich Gorobets)和李艳(Yan Li),其全文以引用的方式并入本文中。
图8A到图8C揭示编程非易失性存储器的另一过程,其通过对任何特定存储器单元在写入到先前页的邻近存储器单元之后相对于特定页写入到所述特定存储器单元来减少浮动栅极到浮动栅极耦合效应。在由图8A到8C教示的过程的实施方案的一个实例中,所述非易失性存储器单元使用四个数据状态每存储器单元存储两位数据。举例来说,假设状态E是擦除状态且状态A、B和C是编程状态。状态E存储数据11。状态A存储数据01。状态B存储数据10。状态C存储数据00。这是非格雷编码的一实例,因为所述两个位在邻近状态A与B之间改变。也可使用数据到物理数据状态的其它编码。每一存储器单元存储两页数据。出于参考目的,这些数据页将称为上部页和下部页;然而,其可被给予其它标签。对于图8A到图8C的过程参看状态A,上部页存储位0,且下部页存储位1。参看状态B,上部页存储位1,且下部页存储位0。参看状态C,所述两个页均存储位数据0。
图8A到图8C的编程过程是两步骤的过程。在第一步骤中,编程下部页。如果下部页将保持数据1,那么存储器单元状态保持处于状态E。如果数据将编程为0,那么存储器单元的电压的阈值升高,使得存储器单元被编程为状态B’。图8A因此展示将存储器单元从状态E编程为状态B’。图8A中描绘的状态B’是临时状态B;因此,验证点描绘为Vvb’,其低于Vvb。
在一个实施例中,在将存储器单元从状态E编程为状态B’之后,其在NAND串中的相邻存储器单元(WLn+1)随后将相对于其下部页被编程。举例来说,在连接到WL0的存储器单元的下部页被编程之后,同一NAND串上但连接到WL1的存储器单元(相邻存储器单元)的下部页将被编程。在编程相邻存储器单元之后,如果较早的存储器单元的阈值电压从状态E升高到状态B’,则浮动栅极到浮动栅极耦合效应将使待编程的所述较早存储器单元的表观阈值电压升高。这将如图12B中描绘具有使状态B’的阈值电压分布加宽的效应。当编程上部页时,阈值电压分布的此表观加宽将得到校正。
图8C描绘编程上部页的过程。如果存储器单元处于擦除状态E且上部页将保持处于1,那么存储器单元将保持处于状态E。如果存储器单元处于状态E且其上部页数据将编程为0,那么存储器单元的阈值电压将升高,从而使得存储器单元处于状态A。如果存储器单元处于中间阈值电压分布550且上部页数据将保持处于1,那么存储器单元将被编程为最终状态B。如果存储器单元处于中间阈值电压分布550且上部页数据将变为数据0,那么存储器单元的阈值电压将升高,从而使得存储器单元处于状态C。图8A到图8C描绘的过程使浮动栅极之间的耦合的效应减少,因为只有相邻存储器单元的上部页编程将影响给定存储器单元的表观阈值电压。
虽然图8A到图8C提供关于四个数据状态和两页数据的实例,但图8A到图8C教示的概念可应用于具有多于或少于四个状态、不同于两页及/或其它数据编码的其它实施方案。举例来说,本发明可配合存储三位数据、使用八个数据状态且基于图6、图7或图8A到图8C的过程来编程的存储器单元使用。
图9是描述利用图12A到图12C的编程方法来编程存储器单元的次序的一个实施例的表。对于连接到字线WL0的存储器单元,下部页形成页0,且上部页形成页2。对于连接到字线WL1的存储器单元,下部页形成页1,且上部页形成页4。对于连接到字线WL2的存储器单元,下部页形成页3,且上部页形成页6。对于连接到字线WL3的存储器单元,下部页形成页5,且上部页形成页7。存储器单元根据页编号(从页0到页7)编程。在其它实施例中,也可使用其它编程次序。
图10是描述编程连接到选定字线的存储器单元的编程过程的流程图。因此,图10的过程用于实施图6的全序列编程,图7的两遍编程技术中的一遍(第一遍或第二遍)或图8A到图8C的两步骤编程技术中的一遍(第一遍或第二遍)。在一个实施例中,图10的过程由控制电路220执行且/或在控制电路220的方向处执行。图10的过程也可作为三页数据(例如,每存储器单元三位数据)的三遍编程技术的一遍或作为另一多遍编程技术的一遍来执行。许多不同编程技术可配合本发明使用。
在图10的过程的一个实施方案中,存储器单元在编程之前被擦除(以块或其它单位)(步骤600)。在一个实施例中,通过在充足的时期中将p阱升高到擦除电压(例如20伏)且在源极线和位线浮动的同时使选定块的字线接地来擦除存储器单元。由于电容性耦合的缘故,也使未选中的字线、位线、选择线和源极线升高成擦除电压的较大分数。因此将强电场施加到选定存储器单元的隧穿氧化物层,且在浮动栅极的电子发射到衬底侧(通常通过福勒-诺德海姆(Fowler-Nordheim)隧穿方案)时擦除选定存储器单元的数据。在电子从浮动栅极传递到p阱区时,选定单元的阈值电压降低。擦除可对整个存储器阵列、单独块或另一单元单位执行。在擦除存储器单元块之后,可如本文中描述编程或部分地编程各种存储器单元。请注意,在步骤600中执行的擦除将不需要在块的每一字线被编程之前执行。相反,块可被擦除,且随后每一字线可被编程,而无需在编程字线之间擦除。
在步骤602处,执行软编程以使擦除的存储器单元的擦除阈值电压分布变窄。由于擦除过程,有些存储器单元可处于较深的擦除状态。软编程可应用小编程脉冲,以使擦除存储器单元的阈值电压移动得更接近擦除验证电平。在步骤604处,“数据加载”命令由控制器244发出,且被输入到状态机222。在步骤606处,将指定页地址的地址数据提供到解码器。在步骤608处,输入寻址页的编程数据页以供编程。将所述数据锁存在选定位线的适当寄存器/锁存器中。在一些实施例中,也将数据锁存在待对验证操作使用的选定位线的第二寄存器中。在步骤610处,从控制器244接收“编程”命令,且将其提供到状态机222。
受到“编程”命令的触发,在步骤608中锁存的数据将使用施加到适当字线的脉冲编程到受状态机222控制的选定存储器单元中。在步骤612处,将Vpgm——编程电压信号(例如,一系列脉冲)初始化成开始量值(例如,~12V或另一合适电平),且将由状态机222维持的程序计数器PC初始化为0。在步骤614处,将编程信号Vpgm的脉冲施加到选定字线,这具有以下影响:将电压脉冲提供到连接到选定字线的每一存储器单元的控制栅极。因此,所有连接到选定字线的存储器单元即使被禁止或锁定编程也将经受编程,因为其正在接收电压脉冲。一个实施例包含在编程期间使未选中的NAND串升压,以防止编程干扰。可使用各种升压方法。关于升压的更多信息,可参考2006年9月27日申请的第11/535,628号美国专利申请案“在非易失性存储装置中减少编程干扰”(“Reducing Program Disturb In Non-Volatile Storage”)和美国专利6,859,397,其两者的全文以引用的方式并入本文中。
在步骤616处,验证正被编程的存储器单元以确定其是否已达到其目标电平。如果存储器单元的阈值电压已达到目标阈值电压电平,那么存储器单元已被正确编程,且可通过升高其位线电压(或使用另一方法)而被锁定不进行额外编程。如果存储器单元的阈值电压尚未达到目标阈值电压电平,那么存储器单元尚未被正确编程(例如,尚未完成编程,编程缓慢,存在错误等)且可执行额外编程。
一般来说,在验证操作及读取操作期间,将选定字线连接到一电压,对每一读取和验证操作指定所述电压的电平,以便确定相关存储器单元的阈值电压是否已达到此电平。在施加字线电压之后,测量存储器单元的导电电流以确定存储器单元是否已响应于施加到字线的电压而接通。如果导电电流被测量出大于特定值,那么假设存储器单元接通,且施加到字线的电压大于存储器单元的阈值电压。如果导电电流未被测量出大于所述特定值,那么假设存储器单元未接通,且施加到字线的电压不大于存储器单元的阈值电压。
存在许多在读取或验证操作期间测量存储器单元的导电电流的方法。在一个实例中,通过存储器单元放电或充电读出放大器中的专用电容器的速率来测量存储器单元的导电电流。在另一实例中,选定的存储器单元的导电电流允许(或未能允许)包含存储器单元的NAND串将对应位线放电。在一段时间之后测量位线上的电压,以确定其是否已被放电。
在一些实施例中,验证过程包含测试存储器单元的阈值电压是否已达到每一状态的各种目标电平。例如关于图6,将存在三个验证操作:(1)对Vva、(2)对Vvb和(3)对Vvc。对于三位数据,可存在多达七个验证操作。
在执行验证过程之后,确定步骤614、616、617、618、620、622、624、626、628和630的循环的迭代是否小于某一基于对特定实施方案的测试及性能特征化而选择的阈值数目。如下文将论述,本文中提出的技术将为一组重叠区确定错误位。在一个实施例中,对重叠区的测试直到步骤614、616、617、618、620、622、624、626、628和630的循环的X次迭代后才开始。X的一个实例是17。在X迭代(在步骤617中确定)之前,步骤616中的验证之后将是在所有选定存储器单元均已达到其目标编程状态(步骤630)的情况下在步骤622中报告编程的成功完成。如果并非所有选定存储器单元均已达到其目标编程状态(步骤630),那么(在X迭代之前)编程过程将继续到如下所述的步骤624。
在X迭代(在步骤617中测试)之后,步骤616中的验证之后是确定每个区的错误位数目(步骤618)。错误位是存储在存储器单元中的未被正确编程的数据位,因为其阈值电压未达到其目标电平。举例来说,如果假设存储器单元被编程为状态C(见图6),那么在阈值电压低于Vvc的情况下其是错误位。在现有技术装置中,针对一页中的所有数据计算错误位的数目。当前技术提议将一页的数据分组成一组重叠的区,并为每一区计算错误位的数目。
图11描绘一页数据和如何将其分组成重叠的区的实例。请注意,所述页数据的结尾是一组冗余数据RD。所述冗余数据RD存储在块中的一组连接到与同所述页相关联的存储器单元相同的字线的冗余存储器单元。如果与所述页相关联的原始存储器单元因制造或其它原因而故障,那么在装置测试、装置制造或其它事件期间,可指派冗余存储器单元以取代故障的存储器单元。因此,页中的劣质原始数据位由冗余数据位取代。存储器阵列将跟踪哪些冗余存储器单元被指派以取代哪些原始数据存储器单元。冗余通常通过列来管理。例如位线短路或位线开路等一些缺陷将使用冗余列来取代正常的列。随机位失败通常不由冗余列取代,因为所述列地址上的所有位将被一起取代。有限数目的冗余列也只限于用于整列缺陷中。
图11展示所述页数据(包含冗余数据RD)被分组成十六个重叠的区。区0与区1重叠;区2与区1和区3重叠;区4与区3和区5重叠;依此类推。在一个实施例中,每一扇区具有512个字节的数据和用于ECC/标头信息的26个字节;一页中存在16个扇区;且每一区是1K。在其它实施例中,也可使用其它大小和排列。本发明不限于任何特定大小或排列。请注意,冗余数据RD是区16的一部分。
图12是展示页的一个实例中的十六个扇区的开始地址和结束地址的表。图13是展示页的一个实例中的十六个重叠区的开始地址和结束地址的表。在此实例中,区大于扇区,每一区覆盖一整个扇区、跨越至少两个扇区,且许多扇区处于一个以上区中。具有此区结构的原因在于,用户扇区是非二进制大小,其难以(虽然有可能)作为一群组而检测。为了降低实施的复杂性,用区始终覆盖至少一整个扇区的方式来设计区。为了确保每个用户扇区均被一区覆盖,用重叠方式来排列16个区。在一些情况下,区大小可增加以覆盖一个以上扇区。为了节省检测时间,可将区划分成两半,每一半只被扫描一次以寻找错误。可将每一区视为两半:第一半与一个相邻区重叠,且第二半与另一相邻区重叠。举例来说,区2的第一半与区1重叠,且区2的第二半与区3重叠。在其它实施例中,也可使用其它大小和排列。
回头看图10,步骤618包含确定每一区中的错误位的数目。在一些实施例中,一些错误位可处于一个以上区中。在步骤620中,确定每一区的错误位的数目是否小于一限值。举例来说,各种ECC实施方案具有经设置数目的可恢复的错误位。步骤620中使用的限值应小于可被恢复以允许在读取过程期间发现的其它错误的错误位的设置数目。如果ECC方案允许四个错误位,那么步骤620中的限值可为一个或两个错误位。如果ECC方案允许十个错误位,那么步骤620中的限值可为一个、两个、三个、四个或另一少于十个的数量的错误位。在一个实例中,步骤620中的测试是每个区是否具有少于三个错误位。如果是的话,那么编程过程已成功完成(步骤622)。如果不是的话,那么在步骤624中对照编程限制值PLIMIT来检查编程计数器PC。编程限制值的一个实例是二十;然而,编程限制值可少于二十或多于二十,这取决于实施方案。如果编程计数器PC小于编程限制值PLIMIT,那么在步骤628中,将Vpgm脉冲的量值增加步长(例如,0.2-0.4伏步长),且将编程计数器PC递增。在步骤628之后,过程循环回到步骤614以施加下一Vpgm脉冲。如果编程计数器PC不小于编程限制值(步骤624),那么编程过程已失败(步骤626)。
在图10的替代实施例中,将不执行步骤617和630,且步骤614、616、618、620、622、624、626和628的循环的每一迭代将包含确定每个区的错误位的数目(步骤618)和比较是否所有区均具有少于限值的错误位(步骤620)。也就是说,在步骤616之后,过程始终以步骤618继续(跳过步骤617和630)。
图14是描述确定每个区的错误位的数目的过程(见图10的步骤620)的一个实施例的流程图。请注意,图14的过程只是一个实例实施方案。其它实施方案也在本发明的精神内。在具有列冗余的快闪存储器结构中,由冗余列取代的坏列需要用特殊方式来计数。如果一个区中的两个坏列由冗余列取代,那么仅仅为编程不足的失败位计数将不足以覆盖用户扇区中的所有错误。用户扇区中的一些错误位可能处于列冗余中。因此,冗余列中的错误应被计数。但冗余列的信息在错误检测时不容易获得。一个解决方案是为所有冗余列的所有错误计数,并添加到每一区的错误计数以考虑到最坏情况的情形。在图14的步骤650中,针对冗余的存储器单元确定错误位的数目。在一个实施例中,不论冗余存储器单元被指派给哪些扇区,均为冗余存储器单元中的所有错误位计数。在步骤652中,将针对冗余存储器单元确定的错误位的数目存储在寄存器或其它存储装置中。在一个实施例中,通过确定区16的第二半或区16的另一部分中的错误位的数目来执行步骤650。在其它实施例中,冗余存储器单元可处于其它区中。
在步骤654中,针对区0的第一半确定错误位的数目。在一个实施例中,每一区被划分成第一半和第二半。举例来说,区0的第一半在地址0处开始且在地址511处结束,且区0的第二半在地址512处开始且在地址1023处结束。地址0与地址511之间的错误位的数目在步骤654中计数,且在步骤656中存储。
图15展示包含在状态机222或控制电路220的其它部分中的组件的一个实施例。累加器700接收旗标总线(下文中更详细论述)一组一个或一个以上线。旗标总线提供由累加器700累加的错误位的指示(如下文中论述)。累加器700连接到RD寄存器702及半区移位寄存器704。半区移位寄存器704连接到半区移位寄存器706。RD寄存器702、半区移位寄存器704及半区移位寄存器706全部连接到加法电路708的输入。加法电路708的输出及寄存器712的输出(存储上述“限制”值)被提供到比较电路710。
累加器700确定冗余列中的错误位的数目(图14的步骤650),并将所述数目存储在RD寄存器702中(步骤652)。累加器700确定区0的第一半中的错误位的数目(步骤654),并将所述数目存储在半区移位寄存器704中(步骤656)。在步骤658中,半区移位寄存器704中的数据被移位到半区移位寄存器706中。在步骤660中,累加器700确定下一半(其在此迭代中为区0的第二半区)中的错误位的数目,并将所述数目存储在半区移位寄存器704中(步骤662)。在步骤664中,加法电路708计算冗余存储器单元(RD寄存器702)、所关注的当前区的第一半(半区移位寄存器704)和所关注的区的第二半(半区移位寄存器706)中的错误位的总和。
在步骤666中,确定在步骤664中计算的总和是否小于寄存器712中存储的“限制”值。在一个实施例中,每一区使用同一“限制”值。在其它实施例中,不同区可使用不同的“限制”值。步骤666由比较电路710执行。状态机222使用比较电路710的输出来确定如何继续图14的过程。如果在步骤664中计算的总和不小于寄存器712中存储的限制值,那么图14的过程可停止,因为至少一个区具有大于或等于所述限值的数目的错误位(步骤668)。在其它实施例中,即使发现一个区高于所述限值,系统仍可继续为所有区的错误位计数。如果在步骤666中确定在步骤664中计算的总和小于寄存器712中存储的限制值,那么在步骤670中确定是否有更多的半区要考虑。如果系统只考虑区1的第二半,那么有更多的半区要考虑。如果有更多的半区要考虑,那么所述过程循环回到步骤658,使数据移位,且对下一半区确定错误位。因此,对每一区执行步骤658-670的循环。在已考虑所有半区(步骤672)之后,状态机在步骤672中得出结论所有区均具有小于限值的数目的错误位。请注意,在一些实施例中,作为步骤650的一部分考虑区16的第二半,使得需要考虑(步骤670)的最后半区是区16的第一半。在其它实施例中,区16的第二半(不为冗余位计数)可为要考虑的最后半区。在又一实施例中,系统可在无冗余位的情况下实施。
图16A是描述确定半区中的错误位的数目的过程的一个实施例的流程图。此过程可用于实施图14的步骤650、654和660。在步骤750中,所关注的半区中的所有存储器单元均被测试以确定其是否为错误位。在一个实施例中,验证过程已由相应的感测电路470执行,且结果存储在相应的数据锁存器494中。步骤750包含相应处理器492报告相关联的数据位是否已通过验证达到其目标阈值电压。在一个实施例中,所有处理器均使用线或技术连接到一个旗标线,使得所述旗标线在任一处理器发信号通知错误位的情况下被下拉。如果不存在错误位(步骤752),那么过程完成且在步骤758中报告没有错误位。如果存在错误位(步骤752),那么系统将在步骤754中执行二分搜索(binary search)过程,且在步骤756中报告发现的错误位的数目。
图16B是描述二分搜索过程(见步骤756)的一个实施例的流程图。在步骤802中,将所关注的区域划分成两半。当第一次响应于图16A的步骤754而调用图16B的过程时,所关注的区域可为半区。当随后调用图16B的过程(见下文相对于步骤810和826)时,所关注的区域为半区的一部分。在步骤804中,类似于图16A的步骤750测试划分的区域的第一半。在步骤806中,确定在步骤804中测试的划分的区域的第一半中是否存在任何错误位。如果存在错误位且在步骤804中测试的划分的区域的第一半不是单个存储器单元(步骤808),那么在步骤810中以递归方式执行图16B的二分搜索过程。也就是说,步骤810包含以递归方式调用图16B的过程,使得接下来执行步骤802以将当前区域一分为二,且如图16B所述对所述区域进行操作。因此,执行步骤810包含对所关注的区域执行步骤802,且随后继续步骤804和图16B的其它步骤。如果在步骤804中测试的划分的区域的第一半是单个存储器单元(步骤808),那么在步骤812中将错误位计数器(例如,具有寄存器或锁存器的计数器电路-比如累加器700)递增,且在步骤814中对所述存储器单元进行标记,以防在作为图16的步骤754的一部分的图16B的递归过程的随后迭代中报告所述存储器单元。举例来说,可翻转存储器单元的相应数据锁存器494以指示其并非错误位,可设置适当处理器492的另一锁存器以防处理器492报告所述存储器单元的错误,或可使用另一手段。
如果在步骤806中确定区域的第一半不存在错误位,那么在步骤820中测试第二半。此外,在步骤810和814之后,过程循环回到步骤820,以测试所关注的区域的第二半。步骤820中的测试以与步骤804中的测试相似的方式执行,但是对所关注的区域的不同的一半执行。如果在所关注的区域的第二半中存在任何失败的位且所关注的区域的第二半是单个存储器单元(步骤824),那么在步骤826中递增错误位计数器,在步骤828中标记存储器单元以防止在作为图16的步骤754的一部分的图16B的递归过程的随后迭代中报告所述存储器单元,且过程返回到先前的递归级(步骤830)。如果存在错误位且在步骤820中测试的划分的区域的第二半不是单个存储器单元(步骤824),那么在步骤832中以递归方式执行图16B的二分搜索过程。当过程从步骤832返回时,过程返回到先前的递归级(步骤830)。
总的来说,二分搜索过程以递归方式调用其自身,并继续测试和划分,直到找到错误位为止,随后二分搜索返回到适当的递归级,且继续测试和划分,直到找到另一错误位为止。在任何递归级,如果测试发现区域具有错误位,那么划分且搜索所述区域。如果测试发现一区域没有错误位,那么不划分和搜索所述区域。在过程结束时,累加器700将存储半区中的错误位的数目。
在一个实施例中,对所有处理器492存在一个旗标线。在另一实施例中,可将各种处理器492分组成8个处理器的单元,其连接到八位宽的旗标总线。累加器700可连接到所述旗标总线,并将所述旗标总线中指示错误的线的数目相加在一起。
一些使用一个旗标线或多线旗标总线的实施例将每一处理器492连接到八个感测模块480。因此,每一处理器492针对八位数据报告。在一个实例实施方案中,图16A的过程可对每一半区执行八次,其中图16A的过程的每次执行是针对与处理器492相关联的八位中的一者。累加器700将把图16A的过程的全部八次执行的结果累加。
图17是描绘处理器492如何将错误位报告给状态机222的一个实施例的方框图。图17的实施例假设各种处理器492被分组成8个处理器(492a、492b、492c、492d、492e、492f、492g、492h)的单元,其连接到八位旗标总线(Flag_Bus[0:7])。处理器可每一者连接到一位数据、八位数据或另一量的数据。八个处理器的群组与地址选择逻辑848相关联,所述地址选择逻辑848从状态机222接收地址总线ADDR。在图17中描绘的一个实施例中,地址总线ADDR能够单独寻址八个处理器492的每一群组。在另一实施例中,地址总线ADDR能够单独寻址整个系统的每一处理器492。
处理器492a经由晶体管850和852连接到Flag_Bus[0]。处理器492b经由晶体管854和856连接到Flag_Bus[1]。处理器492c经由晶体管858和860连接到Flag_Bus[2]。处理器492d经由晶体管862和864连接到Flag_Bus[3]。处理器492e经由晶体管866和868连接到Flag_Bus[4]。处理器492f经由晶体管870和872连接到Flag_Bus[5]。处理器492g经由晶体管874和876连接到Flag_Bus[6]。处理器492h经由晶体管878和880连接到Flag_Bus[7]。
处理器492a将在相关联的存储器单元是错误位的情况下接通晶体管852以下拉Flag_Bus[0]。其它处理器(形成八个处理器的其它群组)也将连接到Flag_Bus[0],使得如果其中的任何一者具有错误位,则Flag_Bus[0]将被下拉。处理器492b将在相关联的存储器单元是错误位的情况下接通晶体管856以下拉Flag_Bus[1]。处理器492c将在相关联的存储器单元是错误位的情况下接通晶体管860以下拉Flag_Bus[2]。处理器492d将在相关联的存储器单元是错误位的情况下接通晶体管864以下拉Flag_Bus[3]。处理器492e将在相关联的存储器单元是错误位的情况下接通晶体管868以下拉Flag_Bus[4]。处理器492f将在相关联的存储器单元是错误位的情况下接通晶体管872以下拉Flag_Bus[5]。处理器492g将在相关联的存储器单元是错误位的情况下接通晶体管876以下拉Flag_Bus[6]。处理器492h将在相关联的存储器单元是错误位的情况下接通晶体管880以下拉Flag_Bus[7]。
地址选择逻辑848连接到晶体管850、854、858、862、866、870、874和878。如果状态机正在测试与图17中描绘的八个处理器(492a、492b、492c、492d、492e、492f、492g、492h)的群组相关联的数据,那么地址选择逻辑848将接通晶体管850、854、858、862、866、870、874和878。地址选择逻辑包含一电路(例如,组合逻辑或其它电路),其接收地址总线ADDR并在正确的地址处于地址总线ADDR上时输出信号。在一个实施例中,地址总线ADDR包含一组地址线(例如,ADDR[0:12])及一组互补的地址线(ADDR’[0:12])。所述互补的地址线(ADDR’[0:12])可被单独断言,使得其不需要始终是ADDR[0:12]的反相形式。地址选择逻辑848可连接到ADDR[0:12]的适当线及ADDR’[0:12]的适当线,并将所述数据发送到一组AND门(或其它逻辑或其它电路元件),其将识别出何时选择了八个处理器(492a、492b、492c、492d、492e、492f、492g、492h)的群组。使用此方案,可选择八个处理器的一个群组,或可选择八个处理器的多个群组。
对是否存在失败位(见步骤750、804和820)的测试是通过以下方式执行的:有关的处理器(每一群组的处理器492a、492b、492c、492d、492e、492f、492g、492h中的处理器)接通其相应晶体管(每一群组的晶体管850、854、858、862、866、870、874、878中的晶体管)以下拉Flag_Bus[]的适当线,且累加器700(或状态机222中的另一电路)感测下拉的线。在二分搜索过程期间对半区的适当部分的寻址是通过断言地址总线ADDR的适当线来执行的。
图18是描述编程连接到选定字线的存储器单元的过程的图10的实施例的替代实施例的流程图。图18的步骤600-616与图10中的相同。在图18的过程中的步骤616的验证过程之后,状态机222在步骤903中确定是否所有存储器单元已通过验证而已达到其目标状态。如果是的话,则图18的编程过程完成(步骤904)。如果在步骤902中确定并非所有选定存储器单元均已达到其目标状态,那么在步骤906中对照编程限制值PLIMIT来检查编程计数器PC。如果编程计数器PC小于编程限制值,那么在步骤908中将Vpgm脉冲的量值增加步长(例如,0.2-0.4伏步长)且递增编程计数器PC。在步骤908之后,处理器循环回到步骤614以施加下一Vpgm脉冲。如果编程计数器PC不小于编程限制值(步骤906),那么在步骤920中确定每个区的错误位的数目(类似于图10的步骤618)。在步骤922中,确定每一区的错误位的数目是否低于每一区的允许的限值(类似于图10的步骤620)。如果是的话,则将编程过程视为已成功完成(步骤924)。如果不是的话,则将编程过程视为已失败(步骤926)。
相对于图10到图18描述的技术可配合存储器单元使用,所述存储器单元存储四个数据状态中的两位数据、存储八个数据状态中的三位数据,或其它排列。
已出于说明和描述的目的而呈现了对本发明的前述详细描述。其并不意图是穷尽的,或将本发明限于所揭示的精确形式。鉴于以上教示,许多修改和变动是可能的。选择所描述的实施例是为了最好地解释本发明的原理及其实践应用,以借此使得所属领域的技术人员能够最好地在各种实施例中利用本发明,并具有适合所预期的特定用途的各种修改。希望本发明的范围由随附的权利要求书来界定。

Claims (20)

1.一种用于编程非易失性存储装置的方法,其包括:
作为编程过程的一部分使一组非易失性存储元件经受编程,所述组非易失性存储元件包含非易失性存储元件的重叠群组;
测试每一群组是否具有少于阈值数目的未正确编程的非易失性存储元件;以及
基于每一群组是否具有少于所述阈值数目的未正确编程的非易失性存储元件来继续所述编程过程。
2.根据权利要求1所述的方法,其中所述继续所述编程过程包括:
在所述群组中的至少一者不具有少于所述阈值数目的未正确编程的非易失性存储元件的情况下使所述组非易失性存储元件经受额外编程;以及
在所有所述群组具有少于所述阈值数目的未正确编程的非易失性存储元件的情况下停止所述编程过程。
3.根据权利要求1所述的方法,其中所述继续所述编程过程包括:
在所有所述群组具有少于所述阈值数目的未正确编程的非易失性存储元件的情况下确定所述编程过程成功;以及
在所述群组中的至少一者不具有少于所述阈值数目的未正确编程的非易失性存储元件的情况下确定所述编程过程不成功。
4.根据权利要求1所述的方法,其中所述测试每一群组是否具有少于所述阈值数目的未正确编程的非易失性存储元件包括:
确定特定群组的第一数目的冗余非易失性存储元件尚未正确编程;
确定所述特定群组的第二数目的原始非易失性存储元件尚未正确编程;以及
将所述第一数目与所述第二数目的总和与所述阈值数目进行比较。
5.根据权利要求1所述的方法,其中所述测试每一群组是否具有少于所述阈值数目的未正确编程的非易失性存储元件包括:
确定特定群组的第一数目的冗余非易失性存储元件尚未正确编程;
确定所述特定群组的第二半的第二数目的原始非易失性存储元件尚未正确编程;
产生所述第一数目、所述第二数目及第三数目的总和,所述第三数目表示所述特定群组的第一半的尚未正确编程的原始非易失性存储元件,所述第三数目已在处理先前群组时确定;以及
将所述总和与所述阈值数目进行比较。
6.根据权利要求1所述的方法,其中:
所述非易失性存储元件在扇区中存储数据;且
每一群组大于一扇区,且跨越两个扇区的至少若干部分。
7.根据权利要求1所述的方法,其中所述测试每一群组是否具有少于所述阈值数目的未正确编程的非易失性存储元件包括:
(a)对特定群组执行二分搜索以寻找未正确编程的第一非易失性存储元件;
(b)更新未正确编程的非易失性存储元件的计数;
(c)标记所述第一非易失性存储元件,使得其将不被再次计数;
重复步骤(a)、(b)和(c)以确定未正确编程的非易失性存储元件的数目。
8.根据权利要求1所述的方法,其中所述测试每一群组是否具有少于所述阈值数目的未正确编程的非易失性存储元件包括:
(a)对特定群组执行二分搜索以寻找未正确编程的第一非易失性存储元件;
(b)更新未正确编程的非易失性存储元件的计数;
(c)标记所述第一非易失性存储元件,使得其将不被再次计数;以及
(d)重复步骤(a)、(b)和(c),直到所述特定群组的所有未正确编程的非易失性存储元件已被计数为止。
9.根据权利要求1所述的方法,其中:
所述非易失性存储元件是每个快闪存储器装置存储多位数据的快闪存储器装置;
相应快闪存储器装置上的每一位数据处于不同页中;
每一页包含多个扇区的数据;且
每一群组大于一扇区且跨越两个扇区的至少若干部分。
10.根据权利要求1所述的方法,其中:
所述非易失性存储元件是快闪存储器装置;
所述使所述组非易失性存储元件经受编程包含将电压脉冲施加到所述快闪存储器装置的控制栅极;且
所述测试包含确定每一群组的多少个快闪存储器装置具有尚未达到相应目标电平的相应阈值电压。
11.一种非易失性存储系统,其包括:
多个非易失性存储元件;
与所述非易失性存储元件通信的一个或一个以上电压产生电路,所述一个或一个以上电压产生电路将验证电压提供到所述多个非易失性存储元件;
与所述非易失性存储元件通信的多个感测电路,所述感测电路感测所述非易失性存储元件的条件;
与所述感测电路通信的多个数据处理电路;以及
与所述一个或一个以上电压产生电路及所述数据处理电路通信的控制电路,所述数据处理电路将关于所述非易失性存储元件是否已被正确编程的指示提供到所述控制电路,所述控制电路确定所述非易失性存储元件的重叠群组是否各自具有少于阈值数目的未正确编程的非易失性存储元件。
12.根据权利要求11所述的非易失性存储系统,其中:
所述控制电路包含旗标线;且
所述多个数据处理电路连接到所述旗标线以指示相应非易失性存储元件是否已被正确编程。
13.根据权利要求11所述的非易失性存储系统,其中:
所述控制电路包含多线旗标总线;且
所述多个数据处理电路各自连接到所述旗标总线的一个线以指示相应非易失性存储元件是否已被正确编程。
14.根据权利要求11所述的非易失性存储系统,其中:
所述控制电路包括第一寄存器、第二寄存器和第三寄存器;
所述控制电路进一步包括求和电路,其具有连接到所述第一寄存器、所述第二寄存器和所述第三寄存器的一组输入;
所述多个非易失性存储元件包含原始数据非易失性存储元件和冗余非易失性存储元件;
所述第三寄存器存储冗余非易失性存储元件的计数;
所述第一寄存器存储所述重叠群组中的特定群组的第一半的计数;且
所述第二寄存器存储所述重叠群组中的所述特定群组的第二半的计数。
15.根据权利要求11所述的非易失性存储系统,其中:
所述多个非易失性存储元件包含非易失性存储元件和冗余非易失性存储元件的原始数据;
所述控制电路计算所述非易失性存储元件的群组的尚未正确编程的非易失性存储元件的总和,所述总和各自包含相应群组的尚未正确编程的原始数据非易失性存储元件的数目和冗余非易失性存储元件的数目,所述控制电路将每一总和与限值进行比较。
16.根据权利要求11所述的非易失性存储系统,其中:
所述控制电路在所述控制电路确定所述群组中的至少一者不具有少于所述阈值数目的未正确编程的非易失性存储元件的情况下致使对所述非易失性存储元件的额外编程;且
在所述控制电路确定所述非易失性存储元件的所述重叠群组各自具有少于所述阈值数目的未正确编程的非易失性存储元件的情况下对所述非易失性存储元件的编程完成。
17.根据权利要求11所述的非易失性存储系统,其中:
所述控制电路在所有所述群组具有少于所述阈值数目的未正确编程的非易失性存储元件的情况下确定对所述非易失性存储元件的编程成功;且
所述控制电路在所述群组中的至少一者不具有少于所述阈值数目的未正确编程的非易失性存储元件的情况下确定对所述非易失性存储元件的编程不成功。
18.根据权利要求11所述的非易失性存储系统,其中:
所述控制电路通过以下方式确定所述非易失性存储元件的所述重叠群组是否各自具有少于所述阈值数目的未正确编程的非易失性存储元件:对特定群组执行二分搜索以寻找未正确编程的第一非易失性存储元件;更新未正确编程的非易失性存储元件的计数;标记所述第一非易失性存储元件,使得其将不被再次计数;以及重复所述二分搜索。
19.根据权利要求11所述的非易失性存储系统,其中:
所述非易失性存储元件是NAND快闪存储器装置。
20.根据权利要求11所述的非易失性存储系统,其中:
所述非易失性存储元件是多态快闪存储器装置。
CN2007800441479A 2006-11-27 2007-11-15 用于验证编程的分段位扫描 Active CN101589437B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/563,585 2006-11-27
US11/563,585 US7545681B2 (en) 2006-11-27 2006-11-27 Segmented bitscan for verification of programming
US11/563,590 US7440319B2 (en) 2006-11-27 2006-11-27 Apparatus with segmented bitscan for verification of programming
US11/563,590 2006-11-27
PCT/US2007/084872 WO2008067185A1 (en) 2006-11-27 2007-11-15 Segmented bitscan for verification of programming

Publications (2)

Publication Number Publication Date
CN101589437A true CN101589437A (zh) 2009-11-25
CN101589437B CN101589437B (zh) 2012-08-29

Family

ID=39167421

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800441479A Active CN101589437B (zh) 2006-11-27 2007-11-15 用于验证编程的分段位扫描

Country Status (8)

Country Link
EP (1) EP2074627B1 (zh)
JP (1) JP5067645B2 (zh)
KR (1) KR101100358B1 (zh)
CN (1) CN101589437B (zh)
AT (1) ATE481714T1 (zh)
DE (1) DE602007009277D1 (zh)
TW (1) TWI369686B (zh)
WO (1) WO2008067185A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102754164A (zh) * 2009-12-15 2012-10-24 桑迪士克科技股份有限公司 具有快速位检测及验证跳过的对非易失性存储器的编程
CN103258570A (zh) * 2012-02-15 2013-08-21 旺宏电子股份有限公司 一种记忆装置及产生程序化偏压脉冲的方法和集成电路
CN111477258A (zh) * 2019-01-23 2020-07-31 爱思开海力士有限公司 半导体存储器装置、控制器以及两者的操作方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7545681B2 (en) 2006-11-27 2009-06-09 Sandisk Corporation Segmented bitscan for verification of programming
CO6170067A1 (es) * 2008-12-12 2010-06-18 Ecopetrol Sa Unidad de drenaje auto-sellante para separacion de fluidos inmiscibles de diferente densidad
US8400854B2 (en) * 2009-09-11 2013-03-19 Sandisk Technologies Inc. Identifying at-risk data in non-volatile storage
JP2011123964A (ja) * 2009-12-11 2011-06-23 Toshiba Corp 半導体記憶装置
WO2011073710A1 (en) 2009-12-16 2011-06-23 Sandisk Il Ltd Auxiliary parity bits for data written in multi-level cells
JP6088675B1 (ja) 2016-02-02 2017-03-01 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP4250325B2 (ja) * 2000-11-01 2009-04-08 株式会社東芝 半導体記憶装置
CN1466150A (zh) * 2002-06-05 2004-01-07 力旺电子股份有限公司 快闪存储器的分页缓冲器
JP4135680B2 (ja) * 2004-05-31 2008-08-20 ソニー株式会社 半導体記憶装置および信号処理システム
JP2005353242A (ja) * 2004-06-14 2005-12-22 Toshiba Corp 不揮発性半導体記憶装置及びそのデータ書き込み方法
US7437653B2 (en) * 2004-12-22 2008-10-14 Sandisk Corporation Erased sector detection mechanisms
JP4874721B2 (ja) * 2006-06-23 2012-02-15 株式会社東芝 半導体記憶装置
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102754164A (zh) * 2009-12-15 2012-10-24 桑迪士克科技股份有限公司 具有快速位检测及验证跳过的对非易失性存储器的编程
CN102754164B (zh) * 2009-12-15 2015-07-01 桑迪士克科技股份有限公司 具有快速位检测及验证跳过的对非易失性存储器的编程
USRE46056E1 (en) 2009-12-15 2016-07-05 Sandisk Technologies Llc Programming non-volatile storage with fast bit detection and verify skip
CN103258570A (zh) * 2012-02-15 2013-08-21 旺宏电子股份有限公司 一种记忆装置及产生程序化偏压脉冲的方法和集成电路
CN103258570B (zh) * 2012-02-15 2016-05-11 旺宏电子股份有限公司 一种记忆装置及产生程序化偏压脉冲的方法和集成电路
CN111477258A (zh) * 2019-01-23 2020-07-31 爱思开海力士有限公司 半导体存储器装置、控制器以及两者的操作方法
CN111477258B (zh) * 2019-01-23 2023-10-20 爱思开海力士有限公司 半导体存储器装置、控制器以及两者的操作方法

Also Published As

Publication number Publication date
EP2074627B1 (en) 2010-09-15
CN101589437B (zh) 2012-08-29
KR20090098844A (ko) 2009-09-17
ATE481714T1 (de) 2010-10-15
JP2010511263A (ja) 2010-04-08
TWI369686B (en) 2012-08-01
DE602007009277D1 (de) 2010-10-28
JP5067645B2 (ja) 2012-11-07
WO2008067185A1 (en) 2008-06-05
TW200839771A (en) 2008-10-01
EP2074627A1 (en) 2009-07-01
KR101100358B1 (ko) 2011-12-30

Similar Documents

Publication Publication Date Title
US9269450B2 (en) Methods, devices, and systems for adjusting sensing voltages in devices
US9293214B2 (en) Determining and using soft data in memory devices and systems
CN101589437B (zh) 用于验证编程的分段位扫描
JP4954223B2 (ja) フローティングゲート結合に対する補償を伴う不揮発性記憶装置に対する読み出し動作
EP2513906B1 (en) Programming non-volatile storage with fast bit detection and verify skip
CN101405814B (zh) 使用不同电压的用于非易失性存储装置的检验操作
KR101502104B1 (ko) 프로그래밍 동안에 간섭의 영향을 감소시키는 방법
CN101213613B (zh) 借助非易失性存储器的循环的开始编程电压偏移
JP5613663B2 (ja) 不揮発性記憶装置の消去確認処理
KR101094422B1 (ko) 결합 보상을 포함하는 비휘발성 메모리 판독 동작들에 대한 마지닝된 이웃 판독
KR101041595B1 (ko) 비휘발성 메모리에서 개선된 판독 동작을 위해 선택 상태에서 보상을 사용하여 감지 및 다른 크기의 마진 프로그래밍
EP2780912B1 (en) Non-volatile storage with data recovery
JP4892566B2 (ja) 交互列に基づいた不揮発性メモリの読み出し及び書き込み
KR101428767B1 (ko) 비휘발성 저장소자의 판독 동작 동안에 파워 소모의 감소
TWI397075B (zh) 交替式讀取模式
EP2748819A1 (en) Read compensation for partially programmed blocks of non-volatile storage
JP2013520760A (ja) 隣接状態情報に基づく温度補償がなされる不揮発性記憶装置
JP4995273B2 (ja) 異なる電圧を使用する不揮発性記憶装置のための検証動作
WO2007143399A2 (en) Nand flash verify method with different compensated pass voltages

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
ASS Succession or assignment of patent right

Owner name: SANDISK TECHNOLOGIES, INC.

Free format text: FORMER OWNER: SANDISK CORPORATION

Effective date: 20121128

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20121128

Address after: American Texas

Patentee after: Sandisk Corp.

Address before: American California

Patentee before: Sandisk Corp.

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 Corp.