具体实施方式
提供了检测对编程干扰的敏感性和采取相应预防措施的方法和非易失性存储系统。
适合实施本发明的存储器系统的一个示例使用在两个选择栅之间串行布置多个晶体管的NAND闪存结构。把串行的晶体管和选择栅称作NAND串。图1a是示出了一个NAND串的顶视图。图1b是其等效电路。描绘的NAND串包括在第一选择栅120与第二选择栅122之间夹持的串行的四个晶体管,100、102、104和106。选择栅120把NAND串连接到位线126。选择栅122把NAND串连接到源极线128。通过向控制栅120CG施加适当电压控制选择栅120。通过向控制栅122CG施加适当电压控制选择栅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。在一个实施例中,晶体管100、102、104和106各自是存储器单元。在其它实施例中,存储器单元可以包括多个晶体管或可以与描绘的不同。选择栅120连接到选择线SGD。选择栅122连接到选择线SGS。
图2提供了上述NAND串的横截面视图。在p阱区域140中形成NAND串的晶体管。p阱区域又可以在p型基板144的n阱区域142内。每个晶体管包括:包括控制栅(100CG、102CG、104CG和106CG)和浮栅(100FG、102FG、104FG和106FG)的叠栅结构。浮栅形成在氧化物或其它电介质膜顶部上p阱的表面上。在多晶硅电介质层把控制栅和浮栅隔开的情况下,控制栅在浮栅上方。存储器单元(100、102、104和106)的控制栅形成字线。在邻近单元之间共用N+掺杂层130、132、134、136和138,从而单元彼此串联以形成NAND串。这些N+掺杂层形成单元中每个单元的源极和漏极。例如,N+掺杂层130作为晶体管122的漏极和晶体管106的源极,N+掺杂层132作为晶体管106的漏极和晶体管104的源极,N+掺杂层134作为晶体管104的漏极和晶体管102的源极,N+掺杂层136作为晶体管102的漏极和晶体管100的源极,N+掺杂层138作为晶体管100的漏极和晶体管120的源极。N+掺杂层126连接到NAND串的位线,而N+掺杂层128连接到多个NAND串的公共源极线。
注意,虽然图1a、1b和2示出了NAND串中的四个存储器单元,但通过本文中描述的技术使用的NAND串可以具有少于四个存储器单元或多于四个存储器单元。例如,一些NAND串将会包括8、16、32或更多存储器单元。
每个存储器单元可以存储以模拟或数字形式表示的数据。当存储数字数据的一位时,把存储器单元的可能阈值电压的范围划分成分配了逻辑数据“1”和“0”的两个范围。在NAND型闪存的一个示例中,电压阈值在擦除存储器单元之后为负,且被定义成逻辑“1”。阈值电压在编程操作之后为正,且被定义成逻辑“0”。当阈值电压为负且通过向控制栅施加0伏特尝试读取时,存储器单元将会接通以表明正存储逻辑一。当阈值电压为正且通过向控制栅施加0伏特尝试读取操作时,存储器单元将不会接通,这表明存储逻辑零。
存储器单元还可以存储多个状态,从而存储数字数据的多个位。在存储数据多个状态的情形中,把阈值电压窗口划分成状态的数量。例如,如果使用四个状态,则将会存在向数据值“11”、“10”、“01”和“00”分配的四个阈值电压范围。在NAND型存储器的一个示例中,擦除操作之后的阈值电压为负且被定义成“11”。对于状态“10”、“01”、以及“00”使用正阈值电压。在一些实施中,使用格雷码分配把数据值(例如,逻辑状态)分配给阈值范围以使得如果浮栅的阈值电压错误移位到它的邻近物理状态,则将会只影响一位。编程到存储器单元中的数据与单元的阈值电压范围之间的具体关系取决于对于存储器单元采用的数据编码方案。
对于本技术还可以使用除了NAND闪存之外的其它类型非易失性存储器。
在快闪EEPROM系统中有用的另一类型存储器单元利用非导电介电材料替代导电浮栅以非易失性方式储存电荷。在导电控制栅与存储器单元通道上方半导体基板的表面之间夹持由氧化硅、氮化硅和氧化硅(“ONO”)形成的三层电介质。通过把来自单元通道的电子注入到在有限区域中捕获和储存它们的氮化物中来编程单元。此储存的电荷随后以可检测的方式改变单元通道一部分的阈值电压。通过向氮化物中注入热空穴擦除单元。可以在掺杂多晶硅栅极在存储器单元通道的一部分上延伸以形成分离的选择晶体管的分离栅极配置中设置类似的单元。
在另一方式中,在ONO电介质层在源极与漏极扩散之间的通道上延伸的每个NROM单元中存储两位。一个数据位的电荷位于与漏极相邻的电介质层中,另一数据位的电荷位于与源极相邻的电介质层中。通过单独读取电介质内空间上分离的电荷储存区域的二进制状态实现多状态数据存储。
图3是描绘了三个NAND串的电路图。使用NAND结构的闪存系统的通常架构将会包括数个NAND串。例如,在具有更多NAND串的存储器阵列中示出了三个NAND串320、340和360。NAND串中的每个NAND串包括两个选择栅和四个存储元件。虽然为了简明示例了四个存储元件,但现代NAND串可以例如具有直至32或64个存储元件。
例如,NAND串320包括选择栅322和327、以及存储元件323-326,NAND串340包括选择栅342和347、以及存储元件343-346,NAND串360包括选择栅362和367、以及存储元件363-366。每个NAND串通过它的选择栅(例如,选择栅327、347或367)连接到源极线。使用选择线SGS控制源极侧选择栅。各种NAND串320、340和360分别通过选择栅322、342或362中的选择晶体管,连接到各位线321、341和361。通过漏极选择线SGD控制这些选择晶体管。在其它实施例中,选择线并非必定需要在NAND串之中公用;即,可以对于不同NAND串提供不同选择线。字线WL3连接到存储元件323、343和363的控制栅。字线WL2连接到存储元件324、344和364的控制栅。字线WL1连接到存储元件325、345和365的控制栅。字线WL0连接到存储元件326、346和366的控制栅。如可以看出的,每个位线和各NAND串包括存储元件阵列或集合的列。字线(WL3、WL2、WL1和WL0)包括阵列或集合的行。每个字线连接行中每个存储元件的控制栅。或者,可以通过字线本身提供控制栅。例如,字线WL2提供存储元件324、344和364的控制栅。在实践中,在字线上可以有数千个存储元件。
每个存储元件可以存储数据。例如,当存储数字数据的一位时,把存储元件的可能阈值电压(VTH)的范围划分成分配了逻辑数据“1”和“0”的两个范围。在NAND型闪存的一个示例中,VTH在擦除存储元件之后为负,且被定义成逻辑“1”。VTH在编程操作之后为正且被定义成逻辑“0”。当VTH为负和尝试读取时,存储元件将会接通以表明正存储逻辑“1”。当VTH为正且尝试读取操作时,存储元件将不会接通,这表明存储逻辑“0”。存储元件还可以存储信息的多个电平,例如,数字数据的多个位。在此情形中,把VTH值的范围划分成数据电平的数量。例如,如果存储信息的四个电平,则将会存在向数据值“11”、“10”、“01”和“00”分配的四个VTH范围。在NAND型存储器的一个示例中,擦除操作之后的VTH为负且被定义成“11”。对于状态“10”、“01”和“00”使用正VTH值。编程到存储元件中的数据与元件的阈值电压范围之间的具体关系取决于对于存储元件采用的数据编码方案。
当编程快闪存储元件时,向存储元件的控制栅施加编程电压,把与存储元件相关联的位线接地。把来自通道的电子注入到浮栅中。当电子在浮栅中累积时,浮栅被负充电且存储元件的VTH升高。为了向正编程的存储元件的控制栅施加编程电压,在适当字线上施加该编程电压。如以上所讨论的,NAND串中每个NAND串中的一个存储元件共用同样的字线。例如,当编程图3的存储元件324时,还将会向存储元件344和364的控制栅施加编程电压。
然而,在其它NAND串的编程期间在被抑制NAND串处、以及有时在编程的NAND串本身处会出现编程干扰。当未选定非易失性存储元件的阈值电压由于其它非易失性存储元件的编程而移位时出现编程干扰。在先前编程的存储元件以及尚未编程的被擦除存储元件上会出现编程干扰。各种编程干扰机制会限制诸如NAND闪存的非易失性存储设备的可用操作窗口。
例如,如果抑制NAND串320(例如,它是不包含当前正编程的存储元件的未选定NAND串)且正编程NAND串340(例如,它是包含当前正编程存储元件的选定NAND串),则在NAND串320处会出现编程干扰。例如,如果通过电压VPASS低,则被抑制NAND串的通道未良好增压,会无意中编程未选定NAND串的选定字线。在另一可能的场景中,栅致漏极泄漏(Gate Induced Drain Leakage,GIDL)或其它泄漏机制会降低增压电压,而引起同样问题。其它作用(如,由于与稍后编程的其它邻近存储元件的容性耦合导致的电荷储存元件VTH的移位)也会促进编程干扰。
图4示例了NAND存储元件(如图1a和1b中所示)阵列400的示例。沿着每列,位线406耦合到NAND串450的漏极选择栅的漏极端子426。沿着NAND串的每行,源极线404可以连接NAND串的源极选择栅的所有源极端子428。
把存储元件的阵列划分成存储元件的大量块。如对于快闪EEPROM系统所常见的,块是擦除的单位。即,每个块包含一起擦除的最少量存储元件。通常把每个块划分成一些页。页是编程的最小单位。通常在存储元件的一行中存储数据的一个或更多个页。例如,行通常包含数个交错页或它可以构建一个页。将会一起读取或编程页的所有存储元件。此外,页可以存储来自一个或更多个扇区的用户数据。扇区作为用户数据的便捷单位是主机使用的逻辑概念;它通常不包含局限于控制器的开销数据。开销数据可以包括根据扇区的用户数据计算的纠错码(ECC)。控制器(在下面描述)的一部分在正向阵列中编程数据时计算ECC,以及还在正从阵列读取数据时检查它。可替选地,把ECC和/或其它开销数据存储在与它们所属的用户数据不同的页、或者甚至不同的块中。
用户数据的扇区通常是与磁盘驱动器中扇区的大小对应的512个字节。开销数据通常是额外的16-20个字节。从任何地方由8个页,例如,直至32、64、128或更多页,大量页形成块。在一些实施例中,NAND串的行包括块。
在一个实施例中通过在源极和位线浮置的情况下把选定块的字线接地和把p阱升高到擦除电压(例如,14-22V)充分时间段来擦除存储器存储元件。由于容性耦合,也把未选定字线、位线、选择线、以及c源极升高到显著份额的擦除电压。因而通常通过Fowler-Nordheim隧穿机制,随着向基板侧发射浮栅的电子向选定存储元件的隧道氧化物层施加强电场且擦除选定存储元件的数据。随着从浮栅向p阱区域传送电子,选定存储元件的阈值电压降低。可以在整个存储器阵列、单独块、或者存储元件的另一单元上执行擦除。
图5是使用单个行/列解码器和读/写电路的非易失性存储器系统的方框图。该图示例了根据本技术的一个实施例具有用于并行读取和编程存储元件页的读/写电路的存储器设备596。存储器设备596可以包括一个或更多个存储器芯片598。存储器芯片598包括存储元件400的二维阵列、控制电路510、以及读/写电路565。在一些实施例中,存储元件的阵列可以是三维的。存储阵列400经由行解码器530通过字线且经由列解码器560通过位线可寻址。读/写电路565包括多个感测块500且允许并行读取或编程存储元件的页。通常作为一个或更多个存储器芯片598在同样的存储器设备596(例如,可移除存储卡)中包括控制器550。经由线路520在主机与控制器550之间且经由线路518在控制器与一个或更多个存储器芯片598之间传送命令和数据。
控制电路510与读/写电路565协作以执行存储器阵列400上的存储器操作。控制电路510包括状态机512、片上地址解码器514、温度感测电路515和功率控制模块516。状态机512提供存储器操作的芯片级控制。片上地址解码器514提供主机或存储器控制器所使用的到解码器530和560使用的硬件地址之间的地址接口。温度感测电路515如下面进一步讨论的,可以用于提供用于在编程操作中使用的基于温度的信号或数据。功率控制模块516控制存储器操作期间向字线和位线提供的功率和电压。
在一些实施中,可以把图5的组件中的一些组件组合。在各种设计中,可以把除了存储元件阵列400以外的组件中的一个或更多个组件(独自或组合地)看作管理或控制电路。例如,一个或更多个管理或控制电路可以包括控制电路510、状态机512、解码器514/560、温度感测电路515、功率控制模块516、感测块500、读/写电路565、控制器550等中的任一个或组合。
对于温度感测电路515,在目前的非易失性存储设备(如,NAND闪存设备)中,温度变化呈现读取和写入数据过程中的各种问题。存储器设备基于它所在的环境承受变化的温度。例如,一些当前存储器设备额定用于在-30℃与+85℃之间使用。工业、军事和甚至消费者应用中的设备会经历显著温度变化。
对于提供温度补偿信号已知有各种技术。可以使用这些技术中的一个或更多个技术提供VOPTIMAL的温度相关性。虽然此方式也可行,但这些技术中的大多数技术并非依赖于获得实际温度测量。例如,经引用并入本文的题为“Voltage Generation Circuitry Having TemperatureCompensation”的美国专利6,801,454描述了基于温度系数向非易失性存储器输出读取电压的电压生成电路。该电路使用包括温度无关部分和随着温度增加而增加的温度相关部分的带隙电流。经引用并入本文的题为“Non-Volatile Memory With Temperature-Compensated Data Read”的美国专利6,560,152使用使向数据存储元件的源极或漏极施加的电压偏置的偏置生成器电路。温度感测电路515可以使用这些技术、以及任何其它已知技术中的任何技术。
在另一实施例中,非易失性存储器系统使用双行/列解码器和读/写电路。在阵列的相对侧上,以对称方式实施各种外围电路对存储器阵列400的访问,以使得每侧上电路和访问线路的密度减小一半。因而,把行解码器分割成两个行解码器,把列解码器分割成两个列解码器。类似地,把读/写电路分割成从阵列400的顶部连接到位线的读/写电路和从底部连接到位线的读/写电路。以此方式,读/写模块的密度基本上减小一半。
图6是描绘了感测块一个实施例的方框图。把各个感测块500分区成称作感测模块580的核心部分和公共部分590。在一个实施例中,将会存在用于每个位线的单独感测模块580和用于多个感测模块580集合的一个公共部分590。在一个例子中,感测块将会包括一个公共部分590和八个感测模块580。组中的感测模块中的每个感测模块将会经由数据总线572与相关联公共部分通信。
感测模块580包括确定连接的位线中的导通电流是在预定阈值电平以上还是以下的感测电路570。感测模块580还包括用来设置连接的位线上的电压条件的位线锁存器582。例如,位线锁存器582中锁存的预定状态将会导致把连接的位线拉动到指定编程抑制的状态(例如,1.5-3V)。
公共部分590包括处理器592、数据锁存器594集合和数据锁存器594集合与数据总线520之间耦合的I/O接口596。处理器592执行运算。例如,它的功能中的一个功能是确定感测的存储元件中存储的数据和把确定的数据存储在数据锁存器集合中。使用数据锁存器594集合存储读取操作期间处理器592确定的数据位。还使用它存储编程操作期间从数据总线520导入的数据位。导入的数据位表示意在编程到存储器中的写入数据。I/O接口596提供数据锁存器594与数据总线520之间的接口。
在读取或感测期间,系统的操作受状态机512控制,状态机512控制不同控制栅电压向寻址的存储元件的供应。随着它经过与存储器支持的各种存储器状态对应的各种预定义控制栅电压,感测模块580可以在这些电压中的一个电压处断路(trip),将会经由总线572从感测模块580向处理器592提供输出。此时,处理器592通过考虑感测模块的断开事件和关于经由输入线路593的来自状态机的所施加的控制栅电压的信息确定所得存储器状态。它随后运算存储器状态的二进制编码并把所得数据位存储到数据锁存器594中。在核心部分的另一实施例中,位线锁存器582用于双重职责,作为用于锁存感测模块580的输出的锁存器且还作为如上所述的位线锁存器。
一些实施可以包括多个处理器592。在一个实施例中,每个处理器592将会包括输出线路(未描绘)使得输出线路中的每个输出线路被布线或(wired-OR)在一起。在一些实施例中,在连接到布线或的线路之前反转输出线路。此配置因为接收布线或的状态机可以确定正编程的所有位何时达到了期望电平所以能够在编程验证操作期间快速确定何时完成了编程过程。例如,当每个位达到了它的期望电平时,将会把该位的逻辑零发送给布线或的线路(或数据一被反转)。当所有位输出数据0(或数据一被反转)时,则状态机获知终止编程过程。因为每个处理器与八个感测模块通信,所以状态机需要读取布线或的线路八次,或者向处理器592添加逻辑以累积相关联位线的结果以使得状态机只需要读取布线或的线路一次。类似地,通过正确选取逻辑电平,全局状态机可以检测第一位何时改变其状态并相应地改变算法。
在编程或验证期间,从数据总线520把要编程的数据存储在数据锁存器594集合中。状态机控制下的编程操作包括向寻址的存储元件的控制栅施加的一系列编程电压脉冲。继每个编程脉冲后是回读(验证)以确定是否把存储元件编程到了期望的存储器状态。处理器592监测相对于期望存储器状态的回读存储器状态。当二者一致时,处理器592设置位线锁存器582以使得位线被拉到指定编程抑制的状态。这即使在它的控制栅上出现编程脉冲的情况下也抑制耦合到位线的存储元件进一步编程。在其它实施例中处理器在最初加载位线锁存器582,且在验证过程期间感测电路将其设置成抑制值。
数据锁存栈594包含与感测模块对应的数据锁存器栈。在一个实施例中,每感测模块580存在三个数据锁存器。在一些实施中(但是不需要),数据锁存器被实施为移位寄存器,以使得把其中存储的并行数据转换为用于数据总线520的串行数据,反之亦然。在优选实施例中,可以把与m个存储元件的读/写块对应的所有数据锁存器链接在一起以形成块移位寄存器以使得可以通过串行传送输入或输出数据的块。特别地,调节读/写模块库以使得其数据锁存器的集合中的每个将会如同它们是用于整体读/写块的移位寄存器的一部分一样按顺序向数据总线中移位数据或从数据总线移位出数据。
图7示例了存储器阵列向用于全位线存储器架构或用于奇偶存储器架构的块中构筑的示例。描述了存储器阵列400的示范性结构。作为一个示例,描述了分区成1,024个块的NAND快闪EEPROM。可以同时擦除每个块中存储的数据。在一个实施例中,块是同时擦除的存储元件的最小单位。在每个块中,在此示例中,存在与位线BL0、BL1、...BL8511对应的8,512个列。在称作全位线(all bit line,ABL)架构(架构710)的一个实施例中,可以在读取和编程操作期间同时选择块的所有位线。可以同时编程沿着共同字线和连接到任何位线的存储元件。
在提供的示例中,四个存储元件串联连接以形成NAND串。虽然把四个存储元件示出为包括在每个NAND串中,但可以使用多于或少于四个(例如,16、32、64或其他数量)。NAND串中的一个端子经由漏极选择栅(连接到选择栅漏极线SGD)连接到相应位线,另一端子经由源极选择栅连接到c源极(连接到选择栅源极线SGS)。
在称作奇偶架构(架构700)的另一实施例中,把位线划分成偶数位线(BLe)和奇数位线(BLo)。在奇偶位线架构中,在一个时间编程沿着公共字线和连接到奇数位线的存储元件,在另一时间编程沿着公共字线和连接到偶数位线的存储元件。在每个块中,在此示例中,存在划分成偶数列和奇数列的8,512个列,把六十四个存储元件示出为在列中串联连接以形成NAND串。
在读取和编程操作的一个配置期间,同时选择4,256个存储元件。选择的存储元件具有同样字线和同样种类的位线(例如,偶数或奇数)。因此,可以同时读取或编程形成逻辑页的数据的532个字节,存储器的一个块可以存储至少八个逻辑页(各自具有奇数和偶数页的四个字线)。对于多状态存储元件,当每个存储元件存储数据的两位(把这两位中的每个位存储在不同页中)时,一个块存储十六个逻辑页。也可以使用其它大小的块和页。
对于ABL或者奇偶架构,可以通过把p阱升高到擦除电压(例如,20V)和把选定块的字线接地来擦除存储元件。源极和位线浮置。可以在整体存储器阵列、单独块、或者作为存储器设备一部分的存储元件的另一单位上执行擦除。从存储元件的浮栅向p阱区域传送电子以使得存储元件的VTH变成负。
在读取和验证操作中,选择栅(SGD和SGS)连接到范围2.5-4.5V中的电压,把未选定字线(例如,当WL2是选定字线时,为WL0、WL1和WL3)升高到读取通过电压VREAD(通常是范围4.5至6V中的电压)以使得晶体管作为通过栅操作。选定字线WL2连接到对于每个读取和验证操作指定电平、以确定所涉及的存储元件的VTH是在该电平以上还是以下的电压。例如,在用于两电平存储元件的读取操作中,可以把选定字线WL2接地,以使得检测到VTH高于0V。在两电平存储元件的验证操作中,选定字线WL2连接到例如0.8V,使得验证VTH是否达到了至少0.8V。源极和p阱在0V处。把假定是偶数位线(BLe)的选定位线预充电到例如0.7V的电平。如果VTH高于字线上的读取或验证电平,则与所关注的存储元件相关联的位线(BLe)的电势电平因为非导电存储元件而维持高电平。另一方面,如果VTH低于读取或验证电平,则所涉及的位线(BLe)的电势电平因为导电存储元件对位线放电所以下降到低电平,例如小于0.5V。因而可以通过连接到位线的电压补偿器感测放大器检测存储元件的状态。
图8描绘了一遍编程和阈值电压分布的示例集合。对于每个存储元件存储数据的两位的情形提供了存储元件阵列的示例阈值电压分布。对于擦除的(E状态)存储元件提供第一阈值电压分布800。三个阈值电压分布802、804和806分别表示编程状态A、B和C。在一个实施例中,E分布中的阈值电压为负,A、B和C分布中的阈值电压为正。分布803和805表示A状态存储元件(意在编程到作为A状态的目标状态的存储元件)分别在到达最终分布802之前经历的瞬态分布。例如,分布803表明特定数量N1或一部分的A状态存储元件达到了A状态。
类似地,分布805表明A状态存储元件中的数量N2>N1或一部分达到了A状态。
可以使用分布803和805确定存储元件集合的自然阈值电压分布。相对较小的自然阈值电压分布表明存储元件的编程速度相对较类似,而相对较大的自然阈值电压分布表明存储元件的编程速度范围相对较广泛。在一个方式中,确定使A状态存储元件中的N1个达到状态A的一些编程脉冲PPN1,以及使A状态存储元件中的N2>N1个达到状态A的一些编程脉冲PPN2>PPN1。在另一可行方式中,确定使A状态存储元件中的N1(或某些其他数)或更少还未达到状态A的一些编程脉冲PPN2>PPN1。PPN2-PPN1表示存储元件集合的自然阈值电压分布。在一个方式中,可以跟踪编程为最低编程状态(例如,此示例中的A状态)的存储元件以确定自然阈值电压分布。
通常,把数据编码成使用每存储元件两位或更多位的2N个数据状态(例如,四个或更多个状态),使用把大致相等数量的存储元件编程到每个状态中的编码方案。例如,通过四个状态:E、A、B和C,将会把选定字线上存储元件的约四分之一编程为E状态,将会把存储元件的另一四分之一编程为A状态,将会把存储元件的另一四分之一编程为B状态,将会把存储元件的另一四分之一编程为C状态。因而,把存储元件的不同子集编程为不同状态,每状态一个子集。
可以选择特定状态(例如,可用的四个或更多个状态中的一个)作为跟踪状态。跟踪确定何时意在编程为特定状态的存储元件的一部分被验证为达到特定数据状态。例如,假定状态A是跟踪状态,正编程字线上的1024个存储元件,256个保持在E状态中,256个要编程为A状态,256个要编程为B状态,256个要编程为C状态。
在一个可行方式中,把N1设置为诸如A状态存储元件5%(例如,256的5%=13个存储元件)的相对较小数量,把N2设置为诸如A状态存储元件95%(例如,256的95%=243个存储元件)的相对较高数量。这例如避免通过只跟踪第一个和最后的A状态存储元件达到A状态可能获得的不稳定结果。此外,注意,较容易具有基于已用于状态的验证电平的检查点而非添加附加检查点和验证电平。然而,可以使用不对应于数据状态的检查点。此外,该技术通常可以应用于每单元设备的两位、三位或更多位。
每个不同阈值电压范围对应于数据位集合的预定值。编程到存储元件中的数据与存储元件的阈值电压电平之间的具体关系取决于对于存储元件采用的数据编码方案。在一个实施例中,使用格雷码分配向阈值电压范围分配数据值,以使得如果浮栅的阈值电压错误移位到它的邻近物理状态,则将会只影响一位。一个示例把“11”分配给阈值电压范围E(状态E),把“10”分配给阈值电压范围A(状态A),把“00”分配给阈值电压范围B(状态B),把“01”分配给阈值电压范围C(状态C)。然而,在其它实施例中,不使用格雷码。虽然示出了四个状态,但也可以对其它多状态结构(包括具有多于或少于四个状态的结构)使用本技术。
还提供三个读取参考电压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。当在WLn上从状态E编程为状态C时,由于WLn下的浮栅上电荷量的改变相比于从状态E编程为状态A或从状态E编程为状态B时电荷的改变而言最大,到WLn-1下的相邻浮栅的寄生耦合的量达到最大。当从状态E编程为状态B时,到相邻浮栅的耦合的量较少。当从状态E编程为状态A时,耦合的量甚至进一步减小。
图9示例了编程存储两个不同页(下部页和上部页)的数据的多状态存储元件的两遍技术的示例。通过重复来自图8的阈值电压分布800、802、804和806描绘了四个状态。这些状态及其表示的位是:状态E(11)、状态A(10)、状态B(00)和状态C(01)。对于状态E,两个页存储“1”。对于状态A,下部页存储“0”,上部页存储“1”。对于状态B,两个页存储“0”。对于状态C,下部页存储“1”,上部页存储“0”。注意,虽然向状态中的每个状态分配了具体位模式,但也可以分配不同位模式。
在第一编程遍数中,根据要编程到下逻辑页中的位设置存储元件的阈值电压电平。如果该位是逻辑“1”,则作为早先被擦除的结果其在适当状态中所以不改变阈值电压。然而,如果要编程的位是逻辑“0”,则如箭头900所示,把存储元件的阈值电平增加到状态A。这结束了第一编程遍数。
在第二编程遍数中,根据正编程到上逻辑页中的位设置存储元件的阈值电压电平。如果上逻辑页位要存储逻辑“1”,则根据下部页位的编程,由于存储元件处于状态E或A中的一个中所以不出现编程,这二者携带上部页位“1”。如果上部页位要成为逻辑“0”,则阈值电压移位。如果第一遍导致存储元件保持在擦除状态E中,则如箭头920所描绘的,在第二阶段中编程存储元件以使得把阈值电压增加到在状态C内。如果作为第一编程遍数的结果把存储元件编程到了状态A中,则如箭头910所描绘的,在第二遍中进一步编程存储元件以使得把阈值电压增加到在状态B内。第二遍的结果是把存储元件编程到指定为在不改变下部页的数据的情况下对上部页存储逻辑“0”的状态。在图8以及图9中,耦合到相邻字线上浮栅的量取决于最终状态。
在一个实施例中,可以把系统设定为在写入足够数据以填满整个页的情况下执行全序列写入。如果对于全部页未写入足够数据,则编程过程可以编程以接收的数据编程的下部页。当接收后续数据时,然后系统将会编程上部页。在又一实施例中,系统可以在编程下部页的模式中开始写入且在后续接收足够数据以填满整体(或大多数)字线的存储元件的情况下转换为全序列编程模式。
如果跟踪A状态以确定自然阈值电压分布,则如所讨论的,分布803可以表示N1个A状态存储元件何时达到了A状态,分布805可以表示N2个A状态存储元件何时达到了A状态,或者可替选地,N1个(或一些其它数)或更少的A状态存储元件何时尚未达到A状态。
图10a-c公开了编程非易失性存储器的另一过程,该过程通过在对先前页的相邻存储元件写入之后,针对任意特定存储元件,写入关于特定页的该特定存储元件,来减小浮栅到浮栅耦合这一效果。在一个示例实施中,非易失性存储元件使用四个数据状态,每存储元件存储数据的两位。例如,假定状态E是擦除状态,状态A、B和C是编程状态。状态E存储数据11。状态A存储数据01。状态B存储数据10。状态C存储数据00。这是非格雷编码的示例,因为这两位在相邻状态A与B之间改变。还可以使用数据到物理数据状态的其它编码。每个存储元件存储数据的两个页。为了引用目的,将会把数据的这些页称为上部页和下部页;然而,可以为它们给出其它标记。参考状态A,上部页存储位0,下部页存储位1。参考状态B,上部页存储位1,下部页存储位0。参考状态C,这两个页存储位数据0。
编程过程是两步骤过程。在第一个步骤中,编程下部页。如果下部页要保持数据1,则存储元件状态保持在状态E(分布1000)。如果要把数据编程为0,则升高存储元件电压的阈值以使得把存储元件编程为状态B’(分布1010)。图10a因此示出了存储元件从状态E向状态B’的编程。状态B’是过渡状态B;因此,把验证点描绘成低于Vvb的Vvb’。通常,字线上存储元件的约一半将会保持在状态E,且一半被编程为状态B’
如果跟踪B’状态以确定自然阈值电压分布,则如所讨论的,分布1011可以表示N1个B’状态存储元件(存储下部页位0)何时达到了B’状态。通过分布1010的区域1020(图10d)表示达到了B’状态的N1个B’状态存储元件。分布1013可以表示N2个B’状态存储元件何时达到了B’状态。通过分布1013的区域1030(图10e)表示达到了B’状态的N2个B’状态存储元件。可替选地,通过分布1013的区域1040(图10f)表示尚未达到B’状态的N1个或一些其它数量的B’状态存储元件。B’状态存储元件意在于第一编程遍数中编程为B’状态、以及后续在第二编程遍数中编程为B或C状态。B’状态是不表示具有数据至少一位的数据状态的中间或过渡状态的示例。
在一个实施例中,在把存储元件从状态E编程为状态B’之后,将会随后关于其下部页编程NAND串中其邻近的存储元件(WLn+1)。例如,回看图2,在编程存储元件106的下部页之后,将会编程存储元件104的下部页。在编程存储元件104之后,如果存储元件104的阈值电压从状态E升高到了状态B’,浮栅到浮栅耦合效果将会升高存储元件106的视在阈值电压。这将会具有如下效果:把状态B’的阈值电压分布拓宽为如图10b的阈值电压分布1012所描绘的那样。将会在编程上部页时弥补阈值电压分布的该明显拓宽。也可以如分布1002所描绘的在较小程度上拓宽E状态。
图10c描绘了编程上部页的过程。如果存储元件在被擦除的状态E中且上部页要保持在1,则存储元件将会保持在状态E(分布1002)中。如果存储元件在状态E中且要把它的上部页数据编程为0,则将会升高存储元件的阈值电压以使得存储元件在状态A(分布1004)中。如果存储元件在中间阈值电压分布1012中且上部页数据要保持在1,则将会把存储元件编程为最终状态B(分布1006)。如果存储元件在中间阈值电压分布1012中且上部页数据要变成数据0,则将会升高存储元件的阈值电压以使得存储元件在状态C(分布1008)中。通常,将会把字线上存储元件的约四分之一从状态B’编程为状态B,将会把字线上存储元件的四分之一从状态B’编程为状态C。
因为只有邻近的存储元件的上部页编程将会对给定存储元件的视在阈值电压有作用,图10a-c描绘的处理减小了浮栅到浮栅耦合这一效果。交替状态编码的示例是在上部页数据是1时从分布1012移动到状态C,以及在上部页数据是0时移动到状态B。
虽然图10a-c提供了针对四个数据状态和两页数据的示例,但可以把教导的概念应用于具有多于或少于四个状态和多于或少于两个页的其它实施。例如,目前在计划或在生产具有每存储元件八或十六个状态的存储器设备。
图11是NAND串的横截面,且描绘了通道增压。横截面描绘了跨多个存储元件延伸的控制栅(control gate,CG)或选定字线1100。每个存储元件通常在p阱中包括基板的各个通道区域1108、1110、1112上的浮栅(floating gate,FG)(例如,FG 1102、1104和1106)。每个通道区域是可以可视化为来自页之中的NAND串的一部分。
如以上结合图3所提到的,未选定NAND串中的存储元件在编程操作期间使它们的通道增压以抑制编程、且从而避免编程干扰。通常通过在向选定字线施加编程电压Vpgm的同时向未选定字线施加通过电压Vpass完成增压。较高Vpass与对编程干扰的较低敏感性相关。然而,Vpass不能过高否则它会编程未选定NAND串。增压通过减小跨浮栅的电压抑制浮栅的编程。
图12a描绘了作为通过电压和温度的函数的通道增压电势。水平轴描绘了向未选定字线施加的通过电压(Vpass),竖直轴描绘了抑制/增压通道的通道增压电势(Vboost)。通道增压电势取决于邻近通道的电势且取决于Vpass。如所提到的,较高Vpass通常与较高Vboost相关。增压也具有强温度相关性。在高温,增压较困难,通道电势由于通道中的高反向偏置漏电流而在较低电平饱和。在低温,反向偏置漏电流更加低,所以情况得以改善且可以实现较高Vboost。曲线1204、1206和1208分别表示低温、室温和高温的Vboost对Vpass关系。可以使用温度范围例如-30至+85℃。因而,Vboost对于给定Vpass,在较高温度较低。
图12b描绘了作为自然阈值电压分布函数的对编程干扰的敏感性。随着NAND闪存继续缩小,编程干扰变得较难以控制。编程干扰的一个起因是由于较严重的短通道效果导致的、以缩小的存储元件看出的较宽的自然阈值电压分布。较宽的自然阈值电压分布表明存在快速和缓慢存储元件之间的较大的编程速度差异,而导致具有擦除状态或其它编程干扰故障的概率增大。通常,对编程干扰的敏感性(例如,将会出现编程干扰的概率或可能性)如图12b中所表明的与自然阈值电压分布相关。
图12c描绘了作为把N2个存储元件编程为验证电平所需的编程脉冲数PPN2与把N1<N2个存储元件编程为验证电平所需的编程脉冲数PPN1<PPN2之间差异的函数的自然阈值电压分布。如所提到的,PPN2-PPN1的较大值表示的编程速度的较大变化与较高自然阈值电压分布相关。
图12d描绘了作为温度函数的对编程干扰的敏感性。由于包括通道增压随着温度增加而减小的原因,较高温度与对编程干扰的较高敏感性相关。可以把温度范围分类成T1与T2之间的低范围、T2与T3之间的中等范围、以及T3与T4之间的高范围。
图12e描绘了作为字线位置函数的对编程干扰的敏感性。在自然阈值电压分布宽和通道增压电势低的字线上较严重地出现编程干扰。在一些情形中,特定字线即使在增压类似的情况下,编程干扰故障也会比邻近字线多。这可能例如由于一些字线由于用来制造存储器设备的光刻过程而控制栅较窄。较宽的控制栅宽度引起较宽的自然阈值电压分布宽度、以及对编程干扰的较高敏感性。一个方式是对于每个字线测量对编程干扰的敏感性。
此外,较之对源极侧而言相对较贴近字线集合的漏极侧的字线如图12e中所描绘的,会由于减小的通道增压而对编程干扰的敏感性较高。具体地,通道常常会在选定字线是漏极侧字线而不是中部字线或源极侧字线时较早饱和。例如对于在编程脉冲期间向选定字线的源极侧上的至少一个字线施加诸如0V的隔离电压的一些增压方案是如此。隔离电压把通道的源极侧与漏极侧切断,在漏极侧编程期间,通道电容会变得较小所以增压较低。
在此示例中,对于WL0与WLx-1之间的字线表明了对编程干扰的较低级别敏感性,对于WLx与WL31之间的字线表明了对编程干扰的较高级别敏感性,假定存在32个字线。可以通过测试识别WLx。另一可行方式表明了WLx与WL31之间对编程干扰敏感性的逐渐增加。另一可行方式提供了不会遵循持续或良好调节的模式的每个单独的字线的测量的敏感性。
对不同字线可以使用不同编程干扰预告准则,且使得准则对于编程期间通道增压低的字线较严格。另一选项是只预告编程期间通道增压最低和对编程干扰故障最敏感的字线(如,WLx-WL31)上的编程干扰。在此情形中,预测编程干扰对选定数量的漏极侧字线、而不是块中其它字线采取预防措施。
图12f描绘了可以设置成对编程干扰敏感性函数的通过电压。可以如下面结合图14和15进一步讨论的,与对编程干扰的确定敏感性成比例地增加Vpass。
图13描绘了编程操作中的编程脉冲。通常,编程操作可以涉及向选定字线施加脉冲列,其中,脉冲列包括之后是一个或更多个验证脉冲的编程脉冲。注意,编程脉冲可以具有任何数量的不同波形形状。描绘了方波,然而诸如多电平形状或斜坡形状的其它形状也是有可能的。脉冲列1300包括分别在时间t1-t15,向针对编程选择的字线施加的一系列编程脉冲1305、1310、1315、1320、1325、1330、1335、1340、1345、1350、1355、1360、1365、1370、1375等。在一个实施例中,编程脉冲的电压VPGM在12V开始且对于每个连续编程脉冲以例如0.5V的增量增加直到达到最大值例如20-25V为止。在编程脉冲之间是验证操作中使用的验证脉冲,例如三个验证脉冲。在一些实施例中,会存在针对数据正被编程到的每个状态的验证脉冲,状态例如状态A、B和C。在其它实施例中,会存在较多或较少验证脉冲。每个集合中验证脉冲的幅度可以为Vva、Vvb和Vvc(图9),或者可以例如使用幅度为Vvb’的一个验证脉冲(图10a)。示例验证脉冲1306在编程脉冲1305之后。
如结合图8、9和10a所提到的,可以跟踪正编程为称作跟踪状态的选定状态的存储元件以确定存储元件的一些部分何时首次达到跟踪状态。此外,可以识别和记录相应编程脉冲数。例如,跟踪状态存储元件中的N1个跟踪状态存储元件达到跟踪状态需要PPN1=8个脉冲,跟踪状态存储元件中的N2个跟踪状态存储元件达到跟踪状态、或者可替选地N1个(或一些其它数量)或更少A状态存储元件尚未达到跟踪状态需要PPN2=14个脉冲(6个附加脉冲)。可以例如根据PPN2-PPN1确定存储元件集合(如,特定字线上)的自然阈值电压分布。可替选地,可以识别和记录编程脉冲的幅度,可以根据幅度的差异确定自然阈值电压分布。脉冲数PPN1和PPN2指示编程脉冲系列1300中相关联编程脉冲的各顺序位置。
当编程上部和下部页的数据时,第一次可以作为第一系列编程脉冲施加脉冲列1300以编程下部页、以及作为第二系列编程脉冲第二次施加脉冲列1300以编程上部页。
图14是描述了用于编程非易失性存储器的方法概况的一个实施例的流程图。如所提到的,字线上存储元件的集合对编程干扰的敏感性是被抑制的通道中的增压电势的函数。每个通道与选定字线上各存储元件所位于的NAND串相关联。然而,由于增压受限,所以仍会引起编程干扰。因此使用自然阈值电压分布和其它因素预告编程干扰的可能性以及实施预防措施以减小编程干扰的可能性是有帮助的。
在示例编程技术中,在步骤1400,对于存储元件的集合(如对于与选定字线相关联的存储元件)执行第一编程阶段。第一编程阶段可涉及编程数据的下部页。在步骤1402,检测自然阈值电压分布宽度。在步骤1404,使用此信息、可选地连同温度和字线位置一起确定存储元件集合对编程干扰的敏感性程度。例如,可以基于自然阈值电压分布、温度和/或字线位置对于存储元件的集合提供分值或其它尺度。可以随后把分值与不同阈值相比较以把敏感性程度归类。基于对编程干扰的敏感性程度,可以在出现编程干扰之前选择和实施预防措施,以减小其出现的可能性。
敏感性尺度可以基于如PPN2-PPN1所表示的自然阈值电压分布,温度和字线位置可选地调整。例如,在图13中,PPN2-PPN1=14-8=6,或者6个点。此外,参照图12d,如果温度在指定的高范围内,点分值可以增加例如1个点,如果温度在指定的低范围内,减少例如1个点,或者如果温度在指定的中等范围内则不改变。参照图12e,如果字线充分贴近字线(例如,WLx或更高)集合的漏极侧,点分值增加例如1个点,或如果字线未充分贴近字线集合漏极侧则不改变。
当敏感性尺度在值的第一、第二、第三或第四范围内时会分别表明对编程干扰的低、中度、高或很高敏感性。敏感性尺度(susceptibility metric,SM)的示例分类是:0≤SM≤3→低敏感性,3<SM≤6→中度敏感性,6<SM≤9→高敏感性,0<9SM→很高。使用四个类别的敏感性作为示例。可以使用两个或更多个类别。再者,尺度分值仅是示例。可以通过测试确定对于存储元件的特定集合理想的实际尺度。类似地可以对于存储元件的特定集合优化基于温度和字线位置的调整。
在步骤1406,对于对编程干扰的低敏感性,可以在没有预防措施的情况下对于存储元件的集合执行第二编程阶段(步骤1414)。第二编程阶段可以涉及第一编程阶段之后出现的编程。例如,在图13中,从t1至刚好t15之前出现第一编程阶段,在此情形中第二编程阶段可以涉及继续施加在t15开始的编程脉冲。对于诸如图8a中的直接序列编程,在编程期间把脉冲列1300施加到存储元件一次。在此情形中,在t15开始的编程脉冲允许编程到要完成的所有状态。
在图9-10c的两遍编程中,脉冲列在第一遍中对于下部页数据施加一次,以及在第二遍中对于上部页数据施加第二次。因而,在t15开始的编程脉冲允许完成下部页的编程。然后,在不重新确定对编程干扰的敏感性和没有预防措施的情况下,通过新脉冲列编程上部页。存储器设备存储有在其完成存储元件集合的编程时无需预防措施。当以新数据在稍后时间再次编程存储元件的集合时,由于诸如温度的因素会改变,可以重新确定对编程干扰的敏感性。在处理时间方面确定对编程干扰的敏感性的成本微不足道。
在步骤1408、1410、1412,存在对编程干扰的中度、高或很高敏感性,在此情形中实施预防措施(步骤1415)。对于对编程干扰的中度敏感性(1408),可以通过诸如增加Vpass的预防措施对于存储元件的集合执行第二编程阶段(步骤1416)。可以例如把Vpass增加到预定电平。可以根据测试确定理想电平。在另一可行方式中,把Vpass增加与对编程干扰的敏感性程度成比例的量(见图12f)。存储器设备存储有在其完成存储元件集合的编程时实施预防措施。编程可以从确定了对编程干扰敏感性的编程过程中的点,通过预防措施对于下和/或上部页继续。在另一可行方式中,可以在不实施预防措施的情况下完成下部页的编程。随后在编程上部页的同时实施预防措施。
在步骤1410,对于对编程干扰的高敏感性,可以完成数据下部页的编程,预防措施是在编程了下部页的相同存储元件集合上放弃编程上部页的数据(步骤1418)。注意,在确定对编程干扰的敏感性时会几乎完全编程数据的下部页,而使得通常可以相对较快地完成编程。例如,跟踪状态存储元件的95%会在确定对编程干扰的敏感性时已完成编程,而使得仅跟踪状态存储元件的5%需要结束编程。可以在有或没有诸如增加Vpass的预防措施的情况下完成下部页的编程。
放弃在相同存储元件集合上编程上部页的数据的一个原因是选定字线的一个或更多个上部页由于它们正编程为较高VTH电平所以需要较高幅度编程脉冲。这会容易造成编程干扰。避免较高幅度编程脉冲减小了编程干扰的可能性。代替之,可以把上部页的数据编程到较低字线被编程的相同块中、或者甚至不同块中的另一字线。这引起把下和上部页的二进制数据编程到不同字线。可以在它们对编程干扰的敏感性未过高的情况下对于多电平数据使用其它字线,以使得在同样块中存在二进制以及多电平存储元件。例如,在图9的编程方案中,数据的下部页使用分布800和802。如果未在作为下部页的同样字线上编程数据的上部页,则在该字线上不使用分布804和806。代替之,在另一字线上使用分布804和806。类似地,在图10a-c的编程方案中,数据的下部页使用分布1002和1012。如果未在作为下部页的同样字线上编程数据的上部页,则在该字线上不使用分布1004、1006和1008。
仍参照图14,在步骤1412,对于对编程干扰的很高敏感性,可以实施诸如立即终止存储元件集合的编程的预防措施,以使得不发生块的进一步编程(步骤1420)。已经编程的特定块中其它字线上的存储元件可以保持编程,或者可以把它们的数据重新编程到另一块和声称不可用的整个特定块。
注意,可以对于每个字线单独地执行图14的过程。块中的不同字线由于字线位置、不完美光刻的作用和其它因素而对编程干扰的敏感性程度不同。结果是,可以在不同字线上实施不同预防措施,一些字线会使预防措施实施而其它不是。另一选项是只预告编程期间通道增压最低和对编程干扰故障最敏感的字线(如,WLx-WL31)上的编程干扰。在此情形中,对于WL0-WLx-1未确定对编程干扰的敏感性。
图15是描述用于编程非易失性存储器的方法的一个实施例的流程图。在一个实施中,在编程以前(在块或其它单位中)擦除存储元件。在步骤1500中,控制器发出“数据加载”命令,控制电路510接收输入。在步骤1502中,从控制器或主机把指定页地址的地址数据输入到解码器514。在步骤1504中,把用于寻址的页的某页编程数据输入到数据缓存器以便编程。可以例如在单独地编程数据的上部和下部页时初始输入数据的下部页。把该数据锁存在锁存器的适当集合中。在步骤1506中,控制器向状态机512发出“编程”命令。
被“编程”命令触发,将会使用向适当选定字线施加的图13的脉冲列1300的阶跃编程脉冲把步骤1504中锁存的数据编程到状态机512控制的选定存储元件中。具体地,在步骤1508中,把编程电压VPGM初始化为开始脉冲(例如,12V或其它值),状态机512维持的程序计数器(programcounter,PC)在零处被初始化。在步骤1510中,把标志设置为零。标志表明是否确定了对编程干扰的敏感性(对于未确定,标志=0,对于确定,标志=1)。在步骤1512向选定字线施加编程脉冲以开始编程与选定字线相关联的存储元件。如果在特定数据锁存器中存储表明应当编程相应存储元件的逻辑“0”,则把相应位线接地。另一方面,如果在特定锁存器中存储表明相应存储元件应当保持在它的当前数据状态中的逻辑“1”,则相应位线连接到1.5-3V以抑制编程。
在步骤1514中,在验证操作中验证选定存储元件的状态。如果检测到选定存储元件的目标阈值电压达到了适当电平,则相应数据锁存器中存储的数据改变为逻辑“1”。如果检测到阈值电压尚未达到适当电平,则相应数据锁存器中存储的数据不改变。以此方式,无需编程在它的相应数据锁存器中存储逻辑“1”的位线。当数据锁存器中的所有数据锁存器正存储逻辑“1”时,状态机(经由上述布线或类型的机制)获知编程了所有选定存储元件。
在判定步骤1516,如果标志=0,则执行对达到和/或未达到跟踪状态的验证电平(如,A状态是跟踪状态时图8中的验证电平Vva、或者B’状态是跟踪状态时图10a中的验证电平Vvb’)的一些存储元件维持计数的步骤1517。在步骤1518,当N1个存储元件达到跟踪状态的验证电平时识别和存储编程脉冲数(PPN1)。在步骤1520,当N2个存储元件达到跟踪状态的验证电平、或者可替选地N1个(或一些其它数量)或更少跟踪状态存储元件尚未达到跟踪状态时存储编程脉冲数(PPN2)。可以结合步骤1514执行步骤1517、1518和1520。
在判定步骤1522,如果识别了PPN2,则执行步骤1524。步骤1524基于PPN2-PPN1和可选地字线位置和温度确定对编程干扰的敏感性。基于敏感性程度,可以遵循三个路径中的一个路径。步骤1526包括在没有预防措施的情况下继续编程。步骤1528包括通过预防措施继续编程,步骤1532包括基于对编程干扰的敏感性确定预防措施,如,使用较高Vpass、或者放弃数据上部页的编程。步骤1530包括如对整个块立即终止编程。在步骤1534把标志设置为一。
在判定步骤1536中,对于数据锁存器中的所有数据锁存器是否正存储逻辑“1”做出检查。如果数据锁存器中的所有数据锁存器正存储逻辑“1”,则因为编程和验证了所有选定存储元件,编程过程完成且成功。例如,编程了所有下部页数据或所有上部页数据。或者,对于直接序列编程,编程了所有数据。在步骤1538中报告状态“通过”。在一些实施例中,即使未把所有选定存储元件验证为被编程的情况下也认为编程过程完成和成功。在这种情形中,会由于不充分编程的存储元件而出现后续读取操作期间的差错。然而,可以通过ECC修正这些差错。
如果在步骤1536中确定数据锁存器中的所有数据锁存器并非正存储逻辑“1”,则编程过程继续。在一些实施例中,编程过程即使在并非数据锁存器中的所有数据锁存器正存储逻辑“1”的情况下也停止。在判定步骤1540中,针对编程限制PCmax检查编程计数器PC。编程限制值的一个示例是20;然而,也可以使用其它数。如果PC≥PCmax,则在步骤1542中编程过程失败且报告状态“失败”。如果PC<PCmax,则在步骤1544,把VPGM增加阶跃大小,把PC递增一。过程随后环回到步骤1512以施加接下来的编程脉冲。然后如果可用则通过实施的预防措施如上所述继续编程。
在判定步骤1516标志=1的情况下,由于无需重新确定对编程干扰的敏感性,接下来执行验证判定步骤1536。
在判定步骤1522,如果尚未识别PPN2,则由于无法确定对编程干扰的敏感性,执行验证判定步骤1536。
如可以看出的,在此在一个实施例中提供用于操作非易失性存储装置的方法,包括:(a)通过向非易失性存储系统中的存储元件块中的选定字线施加第一系列编程脉冲来执行第一编程阶段,其中,选定字线与块的选定存储元件通信。方法进一步包括:(b)确定选定存储元件第一部分的阈值电压何时超过验证电平,以及识别第一系列中的相关联编程脉冲,(c)确定选定存储元件的第二部分的阈值电压何时超过验证电平,以及识别第一系列中的相关联编程脉冲,(d)至少部分地基于相关联编程脉冲确定是否指示用以减小选定存储元件中编程干扰的概率的预防措施,以及(e)如果指示预防措施,则实施预防措施。
在另一实施例中,非易失性存储系统包括存储元件集合、与存储元件集合通信的字线集合、以及与字线集合通信的一个或更多个控制电路。一个或更多个控制电路:(a)通过向非易失性存储系统中存储元件块中的选定字线施加第一系列编程脉冲来执行第一编程阶段,其中,选定字线与块的选定存储元件通信,(b)确定选定存储元件第一部分的阈值电压何时超过验证电平,以及识别第一系列中的相关联编程脉冲,(c)确定选定存储元件的第二部分的阈值电压何时超过验证电平,以及识别第一系列中的相关联编程脉冲,(d)至少部分地基于相关联编程脉冲确定是否指示用以减小选定存储元件中编程干扰的概率的预防措施,以及(e)如果指示预防措施,则实施预防措施。
在另一实施例中,用于操作非易失性存储装置的方法包括:(a)通过向非易失性存储系统中存储元件块中的选定字线施加第一系列编程脉冲来执行第一编程阶段,其中,选定字线与块的选定存储元件通信,(b)基于第一编程阶段表征选定存储元件的自然阈值电压分布,(c)至少部分地基于表征确定选定存储元件对编程干扰的敏感性程度,以及(d)基于敏感性程度根据多个可用预防措施实施选定预防措施。
在另一实施例中,非易失性存储系统包括:包括选定存储元件的存储元件块;与存储元件集合通信的字线集合,包括与选定存储元件通信的选定字线;以及与字线集合通信的一个或更多个控制电路。一个或更多个控制电路:(a)通过向选定字线施加第一系列编程脉冲执行第一编程阶段,(b)确定选定存储元件第一部分的阈值电压何时通过验证电平,以及识别第一系列中的相关联编程脉冲,(c)确定选定存储元件第二部分的阈值电压何时通过验证电平,以及识别第一系列中的相关联编程脉冲,(d)至少部分地基于相关联编程脉冲的脉冲数之间的差异确定是否指示用以减小选定存储元件中编程干扰的概率的预防措施,其中脉冲数指示第一系列编程脉冲中相关联编程脉冲的各顺序位置,以及(e)如果指示预防措施,则实施预防措施。
还可以提供用于执行本文中提供的方法的相应方法、系统和计算机或处理器可读存储设备。
为了示例和描述的目的呈现了以上详细描述。并非意在穷尽或把技术限制为公开的确切形式。按照以上教导,许多修改和变化是有可能的。选取描述的实施例以最好地解释技术的原理及其实际应用,以从而使得本领域技术人员能够最好地利用如对构思的特定使用合适的各种实施例中和具有各种修改的技术。意在通过权利要求限定技术的范围。