专利名称:用于对一页内和多页间的数据进行芯片上伪随机化的非易失性存储器和方法
技术领域:
本发明通常涉及诸如具有电荷存储元件的闪存的非易失性存储器,且更具体地涉及使得该存储器伪随机地存储数据以避免可能导致该存储器故障的可能的不期望的数据样式(pattern)。
背景技术:
随着闪存卡和闪存盘的容量增加,在存储器阵列内的存储器单元的尺寸继续降低。在高密度阵列内,特别是NAND类型的阵列内,在该阵列的一个单元或部分中存储的电荷可能影响相邻单元的读取或编程操作。这是所谓的读取或编程干扰和单元耦合。通常为了得到关于NAND闪存的单元耦合、干扰和操作以及结构的更多信息,请参考美国专利申请公开 No. US-2006-0233026-A1,题为 “Method forNon-Volatile Memory With Background Data Latch Caching During ProgramOperations (ffX^^ISfMM^Si 间具有背景数据锁存器高速缓存的非易失性存储器的方法)” ;US-2006-0233023-Al,题为 “Method for Non-Volatile MemoryWith Background Data Latch Caching During Erase Operations (针对在擦除操作期间具有背景数据锁存器高速缓存的非易失性存储器的方法)” ;US-2006-0221696-A1,题为"Method for Non-Volatile Memory With BackgroundData Latch Caching During Read Operations (针对在读取操作期间具有背景数据锁存器高速缓存的非易失性存储器的方法),,;US专利No. 6870768,题为“Techniques for Reducing Effects of Coupling Between Storage Elements ofAdjacent Rows of Memory Cells (用于降低存储器单元的相邻行的存储元件之间的耦合效应的技术)”;以 R US-2006-0140011-A1, H ^ "Reducing FloatingGate to Floating Gate Coupling Effect (降低浮置栅极与浮置栅极耦合效应)”,为了所有目的将其全部引用附于此。一些用户经常使用闪存来在闪存的某些块中反复一次又一次地不断存储相同的数据样式。结果是将留下一些将被擦除但从不被编程的位。另外,还将存在一些总是被编程而很少被擦除的位。这些持久的数据样式是有问题的它们可能导致干扰和诸如浮置栅极到浮置栅极效应、NAND串阻抗应和降低的存储器持久性和可靠性等的其他难题。能够进行电荷的非易失性存储的固态存储器、特别是被包装为小型卡的EEPROM 和快闪EEPROM形式的固态存储器近来已经成为在各种移动和手持设备、尤其是信息电器和消费电子产品中的存储器的选择。不像也是固态存储器的RAM(随机存取存储器)那样, 闪存是非易失性的,即使在断电以后仍保持其存储的数据。尽管成本较高,但是,闪存越来越多地被使用在海量存储应用中。基于旋转诸如硬盘驱动器和软盘的磁介质的传统海量存储器不适合用于移动和手持环境。这是因为盘驱动器趋于体积大,易于发生机械故障,且具有高等待时间和高功率要求。这些不期望的属性使得基于盘的存储器在大多数移动和便携式应用中不实用。另一方面,嵌入式和可移除卡形式的闪存由于其小尺寸、低功耗、高速和高可靠性特征而理想地适用于移动和手持环境中。
EEPROM和电可编程只读存储器(EPROM)是可以被擦除且使得新的数据被写入或 “被编程”到它们的存储器单元中的非易失性存储器。两者都利用在源极和漏极区之间、在半导体衬底中的沟道区域上方的、场效应晶体管结构的浮置(未连接)导电栅极。然后,在浮置栅极上方提供控制栅极。由在浮置栅极上维持的电荷量来控制该晶体管的阈值电压特性。也就是说,对于在浮置栅极上的给定水平的电荷,存在必须在该晶体管被“导通”以允许在其源极和漏极区之间导电之前施加到控制栅极的对应的电压(阈值)。浮置栅极可以保持一个范围的电荷,且因此可以被编程到阈值电压窗内的任何阈值电压电平。阈值电压窗的大小由该器件的最小和最大阈值电平来界定,该器件的最小和最大阈值电平又对应于可以被编程到浮置栅极上的电荷的范围。阈值窗通常取决于存储器器件的特性、工作条件和历史。在该窗内的每个不同的、可分辨的阈值电压电平范围原则上可以用于指定该单元的明确的(definite)存储器状态。通常通过两个机制之一将用作存储器单元的晶体管编程为“编程”状态。在“热电子注入”中,施加到漏极的高电压将穿过衬底沟道区域的电子加速。同时,施加到控制栅极的高电压将热电子通过薄栅极介电质(thin gatedielectric)拉到浮置栅极上。在“隧道注入(tunneling injection) ”中,相对于衬底,高电压被施加到控制栅极。以此方式,电子从衬底被拉到居间的浮置栅极。可以通过一些机制来擦除存储器器件。对于EPR0M,存储器可通过用紫外线辐射将电荷从浮置栅极移除而大批(bulk)擦除。对于EEPR0M,存储器单元可通过相对于控制栅极将高电压施加到衬底以便诱使浮置栅极中的电子以隧道效应穿过薄氧化物到衬底沟道区域(即,Fowler-Nordheim隧道技术)而电擦除。典型地,EEPROM可逐字节擦除。对于快闪 EEPR0M,该存储器可一次全部或每次一个或多个块地电擦除,其中,一个块可以由存储器的 512字节或更多字节组成。非易失性存储器单元的例子存储器器件通常包括可以被安装在卡上的一个或多个存储器芯片。每个存储器芯片包括由诸如解码器和擦除、写和读电路的外围电路支持的存储器单元的阵列。更复杂的存储器器件还带有进行智能和更高级存储器操作和接口的控制器。存在许多现今正使用的商业上成功的非易失性固态存储器器件。这些存储器器件可以使用不同类型的存储器单元,每个类型具有一个或多个电荷存储元件。图1A-1E示意性地图示非易失性存储器单元的不同例子。图IA示意性地图示具有用于存储电荷的浮置栅极的EEPROM单元形式的非易失性存储器。电可擦除和可编程只读存储器(EEPROM)具有类似于EPROM的结构,但另外提供用于在施加适当的电压后将电荷从其浮置栅极电载入和移除而不需要曝露在UV辐射下的机制。在美国专利No. 5595924中给出了这种单元和其制造方法的例子。图IB示意性地图示了具有选择栅极和控制或操纵栅极(steering gate)的快闪 EEraOM。存储器单元10具有在源极14和漏极16扩散之间的“分裂沟道” 12。有效地用串联的两个晶体管Tl和T2来形成单元。Tl用作具有浮置栅极20和控制栅极30的存储器晶体管。浮置栅极能够存储可选择量的电荷。可以流过沟道的Tl的部分的电流量取决于在控制栅极30上的电压和在居间(intervening)浮置栅极20上驻留的电荷量。T2用作具有选择栅极40的选择晶体管。当T2由选择栅极40处的电压导通时,其允许在该沟道的Tl的部分中的电流在源极和漏极之间流过。选择晶体管提供独立于控制栅极处的电压的沿着源极-漏极沟道的开关。一个优点是它可以用于截止由于在其浮置栅极处的其电荷耗尽(正)而在零控制栅极电压处仍然导电的那些单元。另一优点是,其允许更容易地实现源极侧注入编程。分裂沟道存储器单元的一个简单的实施例是其中选择栅极和控制栅极连接到如由图IB中示出的虚线示意地指示的同一字线。这是通过使得电荷存储元件(浮置栅极)位于该沟道的一部分上且使得控制栅极结构(其是字线的一部分)位于另一沟道部分上以及该电荷存储元件上来实现的。这有效形成了具有串联的两个晶体管的单元,一个(存储器晶体管)具有在电荷存储元件上的电荷量和在控制可以流过该沟道的该晶体管的部分的电流量的字线上的电压的组合,且另一个(选择晶体管)使得该字线单独用作其栅极。在美国专利No. 5070032、5095;344、5315讨1、5343063和5661053中给出了这种单元的例子、其在存储器系统中的使用以及制造它们的方法。图IB中示出的分裂沟道单元的更细化的实施例是当选择栅极和控制栅极独立且不通过它们之间的虚线连接时。一个实施方式使得在单元阵列中的一列的各控制栅极连接到与字线垂直的控制(或操纵)线。效果是使得字线免于当读取或编程所选单元时必须同时进行两个功能。那两个功能是(1)用作选择晶体管的栅极,由此需要适当的电压以将选择晶体管导通和截止,( 通过在字线和电荷存储元件之间的电场(容性)耦合将该电荷存储元件的电压驱动到期望的电平。通常难以用单个电压以最佳方式进行这两个功能。 通过控制栅极和选择栅极的分离控制,字线仅需要进行功能(1),而添加的控制线进行功能 (2)0该能力允许设计在调整编程电压到目标数据的情况下的更高性能编程。在例如美国专利No. 5313421和6222762中描述了在快闪EEPROM阵列中的独立的控制(或操纵)栅极的使用。图IC示意性地图示了具有双浮置栅极和独立的选择和控制栅极的另一快闪 EEPROM单元。该存储器单元10类似于图IB的存储器单元,除了其有效地具有串联的三个晶体管。在这类单元中,两个存储元件(即Tl-左和Tl右的存储元件)被包括在源极和漏极扩散区之间的其沟道之上,且选择晶体管Tl位于其间。存储器晶体管分别具有浮置栅极 20和20,以及控制栅极30和30,。选择晶体管T2被选择栅极40控制。在任何一个时间, 仅存储器晶体管对中的一个被存取用于读或写。当存储单元Tl-左被存取时,T2和Tl-右两者都被导通以允许在沟道的Tl-左的部分中的电流在源极和漏极之间流过。类似地,当存储单元Tl-右正被存取时,T2和Tl-左被导通。通过使得选择栅极多晶硅的一部分很靠近浮置栅极并向选择栅极施加相当大的正电压(例如20V)使得存储在浮置栅极内的电子可以隧道效应到达选择栅极多晶硅,来进行擦除。图ID示意性地图示了被组织为NAND单元的存储器单元的串。NAND单元50由被
其源极和漏极菊链连接(daisy-chain)的一系列存储器晶体管Ml、M2......Mn(η = 4,8,
16或更高)构成。一对选择晶体管S1、S2控制存储器晶体管链经由NAND单元的源极端M 和漏极端56与外部的连接。在存储器阵列中,当源极选择晶体管Sl导通时,源极端被耦接到源极线。类似地,当漏极选择晶体管S2导通时,NAND单元的漏极端被耦接到存储器阵列的位线。在该链中的每个存储器晶体管具有用于存储给定量的电荷以便呈现想要的存储器状态的电荷存储元件。每个存储器晶体管的控制栅极提供对读和写操作的控制。每个选择晶体管S1、S2的控制栅极提供分别经由其源极端M和漏极端56对NAND单元的控制存取。当在编程期间读取和验证NAND单元内的被寻址的存储器晶体管时,该晶体管的控制栅极被供应了适当的电压。同时,在NAND单元50中的剩余的未被寻址的存储器晶体管通过施加在其控制栅极上的足够的电压而完全导通。以此方式,有效地创建了从单独的存储器晶体管的源极到NAND单元的源极端M的导电路径,并且对于单独的存储器晶体管的漏极到该单元的漏极端56也是同样。在美国专利No. 5570315,5903495和6046935中描述了具有这种NAND单元结构的存储器器件。图IE示意性地图示了具有用于存储电荷的介电层的非易失性存储器。取代先前描述的导电的浮置栅极元件,使用介电层。已经由Eitan等人的“NR0M:A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell (NR0M :新颖的局部俘获、2位非易失性存储器单元),,,IEEE Electron Device Letters,Vol. 21,ηο· 11,2000 年 11 月,543-545 页中描述了使用介电存储元件的这种存储器器件。0Ν0介电层延伸穿过在源极和漏极扩散区之间的沟道。用于一个数据位的电荷被局限(localize)在与漏极相邻的介电层中,而用于另一数据位的电荷被局限在与源极相邻的介电层中。例如美国专利No. 5768192和6011725公开了具有夹在两个硅氧化物层之间的俘获电介质(trappingdielectric)的非易失性存储器单元。通过分离地读取在该电介质内的空间分离的电荷存储区域的二进制状态来实现多状态数据存储。存储器阵列存储器器件典型地由按行和列排列的并可由字线和位线寻址的存储器单元的二维阵列组成。可以根据NOR型或NAND型架构来形成该阵列。NOR 阵列图2图示了存储器单元的NOR阵列的例子。已经利用图IB或IC示出的类型的单元实现了具有NOR型架构的存储器器件。每行存储器单元以菊链方式通过其源极和漏极连接。该设计有时称为虚拟接地设计。每个存储器单元10具有源极14、漏极16、控制栅极30 和选择栅极40。一行中的各单元使得其选择栅极连接到字线42。一列中的各单元使得其源极和漏极分别连接到所选位线34和36。在存储器单元使得其控制栅极和选择栅极独立地被控制的某些实施例中,操纵线36还连接一列中的各单元的控制栅极。利用其中每个存储器单元用连接到一起的其控制栅极和选择栅极形成的存储器单元来实现许多快闪EEPROM器件。在这种情况下,不需要操纵线,且字线仅连接沿着每行的单元的所有控制栅极和选择栅极。在美国专利No. 5172338和M18752中公开了这些设计的例子。在这些设计中,字线本质上进行两个功能行选择;和向在该行中的所有单元供应控制栅极电压用于读取或编程。NAND 阵列图3图示了诸如图ID所示的存储器单元的NAND阵列的例子。沿着NAND单元的每列,位线被耦合到每个NAND单元的漏极端56。沿着NAND单元的每行,源极线可以连接其所有源极端M。而且,沿着一行的NAND单元的控制栅极被连接到一系列对应的字线。可以通过用经由所连接字线的在该对选择晶体管(见图1D)的控制栅极上的适当的电压导通该对选择晶体管来对整行NAND单元寻址。当在NAND单元的链内的存储器晶体管正被读取时, 在该链中剩余的存储器晶体管经由其相关字线而硬导通(turned onhard),使得流过该链的电流主要取决于正被读取的单元中存储的电荷的水平。在美国专利No. 5570315,5774397 和6046935中找到作为存储器系统的部分的NAND架构阵列和其操作的例子。块擦除电荷存储存储器器件的编程只会导致向其电荷存储元件添加更多的电荷。因此, 在编程操作之前,必须移除(或擦除)电荷存储元件中的现有电荷。提供擦除电路(未示出)来擦除存储器单元的一个或多个块。当整个阵列的单元或该阵列的很多组单元一起 (即一瞬间)被电擦除时,诸如EEPROM的非易失性存储器被称为“快闪1EPR0M。一旦被擦除,然后就可以重新编程单元组。可以一起擦除的单元组可以组成一个或多个可寻址的擦除单位。擦除单位或块典型地存储一页或多页数据,页是编程和读取的单位,虽然也可以在单个操作中编程或读取多于一页。每页典型地存储一个或多个扇区的数据,扇区的大小由主机系统限定。一个例子是遵循关于磁盘驱动器建立的标准的512字节用户数据加上关于用户数据和/或存储该用户数据的块的管理信息的一些字节的扇区。读/写电路在通常的两状态EEPROM单元中,建立至少一个电流断点水平,以便将导电窗划分为两个区域。当通过施加预定、固定的电压来读取单元时,通过与断点水平(或参考电流 IREF)比较来将其源极/漏极电流解释(resolve)为存储器状态。如果读取的电流高于该断点水平的电流,则确定该单元处于一个逻辑状态(例如,“零”状态)。另一方面,如果该电流小于该断点水平的电流,则确定该单元处于另一逻辑状态(例如,“一”状态)。因此, 这种两状态单元存储一位数字信息。通常提供可以被外部编程的参考电流源作为存储器系统的一部分来生成断点水平电流。为了增加存储器容量,随着半导体技术状态的进步,正在制造具有越来越高的密度的快闪EEPROM器件。增加存储容量的另一方法是使得每个存储器单元存储多于两个状态。对于多状态或多级EEPROM存储器单元,导电窗被多于一个断点划分为多于两个区域,以便每个单元能够存储多于一位的数据。因此,给定的EEPROM阵列可以存储的信息随每个单元可以存储的状态的数量而增加。已经在美国专利No. 5172338中描述了具有多状态或多级存储器单元的EEPROM或快闪EEPR0M。实践中,通常通过当向控制栅极施加参考电压时感测穿过该单元的源极和漏极电极的导电电流来读取单元的存储器状态。因此,对于在单元的浮置栅极上的每个给定电荷, 可以检测相对于固定参考控制栅极电压的对应导电电流。类似地,可编程到浮置栅极上的电荷的范围限定了对应的阈值电压窗或对应的导电电流窗。或者,取代检测在划分的电流窗之间的导电电流,可以设置在控制栅极处被测试的给定的存储器状态的阈值电压,且检测导电电流低于还是高于阈值电流。在一个实施方式中,通过检查导电电流通过位线的电容放电的速率来实现相对于阈值电流的导电电流的检测。图4图示了对于浮置栅极可以在任一时间选择性地存储的四个不同的电荷Q1-Q4 的、在源极漏极电流Id和控制栅极电压Vra之间的关系。四个实线Id对Vra曲线表示分别对应于四个可能的存储器状态的、可以编程在存储器单元的浮置栅极上的四个可能的电荷水平。作为例子,全体单元的阈值电压窗的范围可以从0. 5V到3. 5V。可以通过将阈值窗以每个0. 5V的间隔划分为五个区域来界定六个存储器状态。例如,如果如所示地使用2μ A的参考电流Ikef,则用Ql编程的单元可以被认为为处于存储器状态“1”,因为其曲线在由Vra =0. 5V和1. OV所界定的阈值窗的区域中与Ikef交叉。类似地,Q4处于存储器状态“5”。如可以从上述描述看出的,使得存储器单元存储的状态越多,其阈值窗被划分得越精细。这将要求在编程和读取操作中更高的精确度,以便能够实现要求的分辨率。美国专利No. 4357685公开了编程2状态EPROM的方法,其中,当单元被编程到给定状态时,其经历连续的编程电压脉冲,每次向浮置栅极增加递增的电荷。在脉冲之间,该单元被回读或验证以确定其相对于断点水平的源极-漏极电流。当已经验证电流状态达到期望的状态时,编程停止。使用的编程脉冲列可以具有增加的周期或幅度。现有技术的编程电路仅施加编程脉冲以从擦除或接地状态步经阈值窗,直到达到目标状态。实际上,为了允许足够的分辨率,每个划分或界定的区域将需要至少五个编程步来横跨(transverse)。该性能对于2状态存储器单元是可接受的。但是,对于多状态单元, 所需要的步的数量随着划分的数量而增加,因此,必须增加编程精确度或分辨率。例如,16 状态单元可能需要平均至少40个编程脉冲来编程到目标状态。图5示意性地图示了具有可由读/写电路170经由行解码器130和列解码器160 存取的存储器阵列100的典型布置的存储器器件。如结合图2和图3所述,在存储器阵列 100中的存储器单元的存储器晶体管可经由(一个或多个)所选字线和(一个或多个)位线的一组来寻址。行解码器130选择一个或多个字线,且列解码器160选择一个或多个位线,以便向被寻址的存储器晶体管的各个栅极施加适当的电压。提供读/写电路170来读或写(编程)被寻址的存储器晶体管的存储器状态。读/写电路170包括经由位线可连接到该阵列中的存储器元件的一些读/写模块。图6A是单独的读/写模块190的示意方块图。实质上,在读取或验证期间,感测放大器确定流过经由所选位线连接的被寻址的存储器晶体管的漏极的电流。该电流取决于在存储器晶体管中存储的电荷和其控制栅极电压。例如,在多状态EEPROM单元中,其浮置栅极可以被充电到若干不同的电平之一。对于4级单元,其可以用于存储两位数据。由级到位(level-to-bit)转换逻辑将感测放大器检测的级转换为要被存储在数据锁存器中的一组数据位。影响读/写件能和准确度的因素为了改进读和编程性能,并行读取或编程在阵列中的多个电荷存储元件或存储器晶体管。因此,一起读取或编程存储器元件的逻辑“页”。在已有的存储器架构中,一行典型地包含若干交错(interleaved)的页。将一起读取或编程一页的所有存储器元件。列解码器将选择性地将交错的页中的每页连接到对应数量的读/写模块。例如,在一个实施方式中,指定存储器阵列具有532字节的页大小(512字节加上管理开销的20字节)。如果每列包含漏极位线且每行存在两个交错的页,则其总共8512列,且每页与4256列相关。将存在可连接以并行读或写所有偶数位线或奇数位线的4256个感测模块。以此方式,并行地从该页存储器元件读取一页的4256位(即532字节)数据,或将其编程到该页存储器元件中。 形成读/写电路170的读/写模块可以被布置为各种架构。参考图5,读/写电路170被组织为读/写堆栈(stack) 180的堆(bank)。每个读 /写堆栈180是读/写模块190的堆栈。在存储器阵列中,列间隔由占据它的一个或两个晶体管的大小来确定。但是,如从图6A可以看出,读/写模块的电路将很可能用更多个晶体管和电路元件来实现,因此将占据超过许多列的空间。为了对在所占据的列之中的多于一列提供服务,在彼此的顶部堆叠多个模块。图6B示出了传统上由读/写模块190的堆栈实现的图5的读/写堆栈。例如,读 /写模块可以延伸过16列,然后可以使用具有八个读/写模块的堆栈的读/写堆栈180来并行地对八个列服务。读/写堆栈可以经由列解码器被耦合到在该堆中的八个奇数(1、3、 5、7、9、11、13、15)列或八个偶数(2、4、6、8、10、12、14、16)列。如前所述,传统的存储器器件通过一次以大量并行的方式在所有偶数或所有奇数位线上操作来改进读/写操作。由两个交错的页组成的行的该架构将有助于缓解安置读/ 写电路的块的问题。这还通过考虑控制位线与位线电容耦合来支配(dictate)。使用块解码器来复用该组读/写模块到偶数页或奇数页。以此方式,无论何时一组位线正被读取或编程时,交错的组可以被接地以最小化紧密相邻耦合。但是,交错页架构在至少三个方面中是有缺点的。首先,其要求额外的复用电路。 第二,其性能慢。为了完成由字线连接的或一行中的存储器单元的读取或编程,需要两个读取或两个编程操作。第三,在解决诸如当在不同时间、诸如在奇数和偶数页中分离地编程在浮置栅极电平处的两个相邻电荷存储元件时该相邻电荷存储元件之间的场耦合之类的其他干扰效应方面也不是最佳的。相邻场耦合的问题随着存储器晶体管之间的间隔更近而变得越明显。在存储器晶体管中,电荷存储元件被夹在沟道区域和控制栅极之间。在沟道区域中流动的电流是由在控制栅极和电荷存储元件处的场贡献的结果电场的函数。随着不断增加的密度,存储器晶体管在一起被形成得越来越近。来自相邻的电荷元件的场则变为对受影响的单元的结果场的重大贡献者。相邻的场取决于被编程到相邻者的电荷存储元件中的电荷。该扰动场由于随着相邻者的编程状态而改变,因此本质上是动态的。因此,受影响的单元可以取决于相邻者的改变的状态,在不同的时间不同地读取。交错页的传统架构恶化了由相邻的浮置栅极耦合造成的误差。由于彼此独立地编程和读取偶数页和奇数页,因此,取决于同时对居间的页发生了什么,可以在一组条件下编程一页,而在完全不同的一组条件下回读该页。读取的误差随着增加的密度将变得更严重, 对于多状态实施方式,需要更准确的读操作和对阈值窗的更粗略的划分。将损害性能,且在多状态实施方式中的可能的容量被限制。美国专利公开No. US-2004-0060031-A1公开了具有用于并行地读和写对应块的存储器单元的一大块读/写电路的高性能且致密的非易失性存储器器件。具体地,该存储器器件具有将读/写电路块中的冗余减少到最小的架构。通过将读/写模块的块重新分配为并行地操作的块读/写模块核心部分,同时以时间复用的方式与实质更小的公共部分的组交互,来实现空间以及功率的明显节省。具体地,由共享的处理器来进行在多个感测放大器和数据锁存器之间的读/写电路之中的数据处理。因此,通常需要高性能和高容量的非易失性存储器。具体地,需要具有致密且有效的、又对于在读/写电路之中处理数据极通用的改进处理器的、具有增强的读和编程性能的致密非易失性存储器。
发明内容
根据本发明的一个方面,在每个存储器页中的数据被随机化,以便当来自若干页的数据被排队时,在编程期间避免有问题的数据样式。在一个优选实施例中,加扰在一页上的数据的简单方式是将数据写在对于每个不同的页的独立或不同的起始地址上。对应页的数据被写到在对于每页不同的起始位置处的每页存储器单元。当数据被填充到该页的尾部时,其通过从该页的第一地址回绕来继续,直到就在起始位置之前。在另一优选实施例中,由伪随机生成器提供对于每页一个的起始物理列地址的序列。根据本发明的另一方面,页中的数据位被随机化,使得平均而言该页包含相等的具有擦除和编程状态的单元混合。以此方式,源极线偏压或载入实质上不改变,且可以允许在感测操作期间的适当调整。这通过随机化一页内的各个位来实现。优选地,使用每位指定某个极性的伪随机位的序列来编码该页内的位。在一个实施例中,对于页中的每个数据位存在一个极性位。在另一实施例中,对于页中的每字节数据存在一个极性位。在该实施例中,如果该极性位指定了位的翻转,则在该数据字节内的所有位将被翻转。根据本发明的另一方面,一页内的随机化与逐页的随机化结合。具体地,给定了芯片上电路的有限资源,优选地通过具有独立的起始位置的每页来实现一页内的随机化,且优选地通过具有独立的编码极性的每页来实现逐页随机化。在另一实施例中,通过具有独立起始位置的每页实现的一页内的随机化还通过具有独立编码极性的一页内的每组数据位而加强。各种随机化方法和实施例是存储器芯片(EEPROM)实现的。也就是说,它们发生在存储器芯片本身内,而不是利用与该芯片通信的存储器控制器。这不同于解决已知为损耗均衡(wear leveling)的问题的不同技术,该技术通常在系统级上实现,且使用控制器来改变如何将数据存储在存储器芯片内。本发明将减少或消除可能导致编程干扰或用户读干扰的具体数据样式,以及减少 NAND串电阻效应,并增加存储器容忍度和可靠性。还将减少浮置栅极与浮置栅极耦合的问题。
图1A-1E示意性地图示了非易失性存储器单元的不同例子。图2图示了存储器单元的NOR阵列的例子。图3图示了诸如图ID所示的存储器单元的NAND阵列的例子。图4图示了对于浮置栅极可以任一时间存储的四个不同的电荷Q1-Q4的在源极-漏极电流和控制栅极电压之间的关系。图5示意性地图示了可由读/写电路经由行和列解码器存取的存储器阵列的典型布置。图6A是单独的读/写模块的示意方块图。图6B示出了传统上由读/写模块的堆栈实现的图5的读/写堆栈。
图7A示意性地图示了具有被划分的读/写堆栈的堆的致密存储器器件,其中实现了本发明的改进的处理器。图7B图示了图7A中所示的致密存储器器件的优选布置。图8示意性地图示了在图7A所示的读/写堆栈中的基本组件的一般布置。图9图示了在图7A和7B所示的读/写电路之中的读/写堆栈的一个优选布置。图10图示了图9所示的公共处理器的改进的实施例。图IlA图示了图10所示的公共处理器的输入逻辑的优选实施例。图IlB图示了图IlA的输入逻辑的真值表。图12A图示了图10所示的公共处理器的输出逻辑的优选实施例。图12B图示了图12A的输出逻辑的真值表。图13是示出与在本发明的2位的实施例中的讨论有关的一些具体元件的图10的简化版本。图14指示在读入了较低页数据的情况下用于较高页编程的与图13相同的元件的锁存器分配。图15图示了在单个页模式中的高速缓存编程的方面。图16示出了可以在较低页到全序列转换(full sequence conversion)中使用的编程波形。图17图示了用全序转换的高速缓存编程操作中的相对时序。图18描述了在高速缓存页复制操作中的锁存器的部署。图19A和19B图示了在高速缓存页复制操作中的相对时序。图20图示了当每个存储器单元使用LM码存储两位数据时的4状态存储器阵列的阈值电压分布。图21是EEPROM或存储器芯片600的某些组件的示意方块图。图22A是根据页地址的编码方案和各页数据的极性位的图示。图22B是图示用于变换用户数据的编码的示例17位码的应用的表。图22C图示向存储在示例NAND链/串的存储器单元中的较高和较低位应用极性位。图23A是作为命令时钟信号的函数的编码方案确定的图示。
图23B是命令的时钟信号。图23C图示用于数据编码确定和反转的控制电路的实施例。图23D图示了其中存储了极性位的用户数据的页。图23E图示了用于针对读操作来回复(revert)被电势反转的数据的编码的控制电路的实施例。图24A是命令时钟信号和示出了在命令时钟信号的上升沿处的FSM时钟的值的有限状态机时钟信号的时间线。图MB图示了确定极性位为图24A所示的命令时钟信号的函数的示例电路。图25更详细地图示了在图7A和图9中示出的芯片上控制电路。图沈图示了根据从每页的不同的起始位置开始写的一个优选实施例的、加扰在存储器页上的数据的方法。
图27是图示具有用于写数据的不同起始位置的不同页的例子的表。图28k图示了由于在具有对地的有限电阻的源极线中流动的电流而引起的源极电压误差的问题。图^B图示了由源极线电压降导致的存储器单元的阈值电压电平中的误差。图四图示了在一页内对位随机化的方法。图30图示了根据本发明的另一方面逐页并在每页内对数据随机化的方法。
具体实施例方式图7A到图20图示了实现本发明的优选存储器系统。图7A示意性地图示了具有被划分的读/写堆栈的堆的致密存储器器件,其中实现了本发明的改进的处理器。该存储器器件包括存储器单元300、控制电路310和读/写电路370的二维阵列。可由字线经由行解码器330和由位线经由列解码器360来对存储器阵列300寻址。读/写电路370被实现为被划分的读/写堆栈400的堆,且允许一块(也称为“页”)存储器单元并行被读取或编程。在优选实施例中,一页由邻近行的存储器单元构成。在另一实施例中,在一行存储器单元被划分为多个块或页的情况下,提供块复用器350 来将读/写电路370复用到各个块。控制电路310与读/写电路370合作以对存储器阵列300进行存储器操作。控制电路310包括状态机312、芯片上地址解码器314和功率控制模块316。状态机312提供存储器操作的芯片级控制。芯片上地址解码器314提供在由主机或存储器控制器所用与由解码器330和370使用的硬件地址之间的地址接口。功率控制模块316控制在存储器操作期间被供应给字线和位线的功率和电压。图7B图示了图7A所示的致密存储器器件的优选布置。以对称的方式在存储器阵列300的相对侧上实现由各种外围电路对存储器阵列300的存取,以便在每侧上的存取线和电路减少一半。因此,行解码器被分割成行解码器330A和330B,且列解码器被分割为列解码器360A和360B。在其中一行存储器单元被划分为多个块的实施例中,块复用器350被分割为块复用器350A和350B。类似地,读/写电路被分割为连接到来自阵列300的底部的位线的读/写电路370A和连接到来自阵列300的顶部的位线的读/写电路370B。以此方式,读/写模块的密度、以及因此的被划分的读/写堆栈400的密度实质上降低了一半。图8示意性地图示了图7A所示的读/写堆栈中的基本组件的大体布置。根据本发明的大体架构,读/写堆栈400包括用于感测k个位线的感测放大器212的堆栈、用于经由 I/O总线231输入或输出数据的I/O模块440、用于存储输入或输出数据的数据锁存器430 的堆栈、用于处理和存储在读/写堆栈400之间的数据的公共处理器500、和用于在堆栈组件之间通信的堆栈总线421。在读/写电路370之间的堆栈总线控制器经由线路411提供控制和定时信号,用于控制在读/写堆栈之间的各种组件。图9图示了图7A和7B示出的读/写电路之间的读/写堆栈(stack)的一个优选布置。每个读/写堆栈400并行地在一组k个位线上操作。如果一页具有ρ = r*k个位线, 则将有r个读/写堆栈,400-1...... 400-r。并行操作的被划分的读/写堆栈400的整个堆(bank)允许并行地读取或编程沿着一行的P个单元的块(或页)。因此,将有P个读/写模块用于整行单元。由于每个堆栈服务于k个存储器单元,因此在该堆中的读/写堆栈的总数由r = p/k给出。例如,如果r 是在该堆中的堆栈的数量,则P = r*k。一个示例存储器阵列可能具有ρ = 512字节(512x8 位),k = 8,因此r = 512。在优选实施例中,该块是整行单元的一连串(rim)。在另一实施例中,该块是一行中的单元的子集。例如,单元的子集可以是整行的一半或整行的四分之一。单元的子集可以是相邻单元的一连串或每隔一个单元一个,或每隔预定数量的单元一个。每个读/写堆栈、比如400-1实质上包含并行地服务于一段k个存储器单元的感测放大器212-1到212-k的堆栈。在美国专利公开No. 2004-0109357-A1中公开了优选的感测放大器,其全部公开被引用附于此。堆栈总线控制器410经由线路411向读/写电路370提供控制和定时信号。堆栈总线控制器本身经由线路311依赖于存储器控制器310。在每个读/写堆栈400之间的通信受互连的堆栈总线431影响,且受堆栈总线控制器410控制。控制线411从堆栈总线控制器410向读/写堆栈400-1的组件提供控制和时钟信号。在优选布置中,堆栈总线被划分为用于在公共处理器500和感测放大器212的堆栈之间通信的SA总线(SABus)422和用于在处理器和数据锁存器430的堆栈之间通信的D 总线(DBus) 423。数据锁存器430的堆栈包括数据锁存器430-1到430_k,与该堆栈相关的每个存储器单元一个数据锁存器。I/O模块440使得这些数据锁存器能够经由I/O总线231与外部交换数据。公共处理器还包括输出507,用于输出指示存储器操作的状态、比如错误状况的状态信号。该状态信号用于驱动以线或(Wired-Or)配置联系于FLAGBUS (标记总线)509的 η-晶体管550的栅极。该标记总线优选地被控制器310预充电,且当由任一读/写堆栈给状态信号赋值(assert)时将被下拉。图10图示了图9所示的公共处理器的改进的实施例。公共处理器500包括处理器总线、用于与外部电路通信的PBUS 505、输入逻辑510、处理器锁存器PLatch 520和输出逻辑530。输入逻辑510接收来自PBUS的数据,并取决于经由信号线411来自堆栈总线控制器410的控制信号,向BSI节点输出作为处于逻辑状态“1”、“0”或“Z” (浮置)之一的变换数据。然后,设置/复位锁存器、PLatch 520锁存BSI,得到了一对互补的输出信号,为 MTCH 禾P MTCH*。输出逻辑530接收MTCH和MTCH*信号,并取决于经由信号线411来自堆栈总线控制器410的控制信号,在PBUS 505上输出处于逻辑状态“1”、“0”或“Z”(浮置)之一的变
换数据。在任一时间,公共处理器500处理与给定存储器单元相关的数据。例如,图10 图示了耦合于位线1的存储器单元的情况。相应的感测放大器212-1包括出现感测放大器数据的节点。在优选实施例中,该节点采用存储数据的SA锁存器214-1的形式。类似地,相应组的数据锁存器430-1存储与耦合于位线1的存储器单元相关的输入或输出数据。在优选实施例中,该组数据锁存器430-1包括用于存储η位数据的足够的数据锁存器 434-1...... 434-η。
当传输门(transfer gate) 501被一对互补的信号SAP和SAN使能时,公共处理器 500的PBUS 505具有经由SBUS 422对SA锁存器214-1的访问。类似地,当传输门502被一对互补的信号DTP和DTN使能时,PBUS 505具有经由DBUS423对该组数据锁存器430-1 的访问。将信号SAP、SAN、DTP和DTN明确图示为来自堆栈总线控制器410的控制信号的部分。图IlA图示了图10所示的公共处理器的输入逻辑的优选实施例。输入逻辑520接收在PBUS 505上的数据,且取决于控制信号,使得输出BSI为原样、或被反转、或浮置。输出BSI节点实质上受传输门522或上拉电路或下拉电路的输出的影响,该上拉电路包括串联到Vdd的ρ晶体管5M和525,该下拉电路包括串联到地的η晶体管5 和527。上拉电路具有到分别由信号PBUS和ONE控制的ρ晶体管5M和525的栅极。下拉电路具有到分别由信号0NEB<1>和PBUS控制的η晶体管526和527的栅极。图IlB图示了图IlA的输入逻辑的真指表。该逻辑由PBUS和控制信号ONE、 0NEB<0>、0NEB<1>控制,这些控制信号是来自堆栈总线控制器410的控制信号的一部分。实质上,支持三个传输模式,通过(PASSTHR0UGH)、反转(INVERTED)和浮置(FLOATED)。在BSI与输入数据相同的PASSTHR0UGH模式的情况下,信号ONE处于逻辑“1”, 0ΝΕΒ<0>处于“0”,且0NEB<1>处于“0”。这将禁用上拉或下拉,而使得传输门522能够将 PBUS 505上的数据传递到输出523。在BSI是输入数据的反转的INVERTED模式的情况下, 信号ONE处于“0”,0ΝΕΒ<0>处于“1”,且0NEB<1>处于“1”。这将禁用传输门522。而且, 当PBUS处于“0”时,下拉电路将被禁用,而上拉电路被使能,导致BSI处于“1”。类似地, 当PBUS处于“1”时,上拉电路将被禁用,而下拉电路被使能,导致BSI处于“0”。最后,在 FLOATED模式的情况下,可以通过使得信号ONE处于“ 1 ”,0ΝΕΒ<0>处于“ 1 ”,且0NEB<1>处于“0”来浮置该输出BSI。为了完整起见列出FLOATED模式,尽管实际上不使用它。图12A图示了图10所示的公共处理器的输出逻辑的优选实施例。来自输入逻辑 520的在BSI节点处的信号被锁存到处理器锁存器PLatch 520中。输出逻辑530从PLatch 520的输出接收数据MTCH和MTCH*,并取决于控制信号,在处于PASSTHR0UGH、INVERTED或 FLOATED模式任一时在PBUS上输出。换句话说,四个分支充当PBUS 505的驱动器,主动地将其拉到HIGH(高)、L0W(低)、或FLOATED (浮置)状态。这通过PBUS 505的四个分支电路、即两个上拉电路和两个下拉电路来实现。第一上拉电路包括串联到Vdd的ρ晶体管521 和532,且能够在MTCH处于“0”时上拉PBUS。第二上拉电路包括串联到地的ρ晶体管533 和534,且能够在MTCH处于“1”时上拉PBUS。类似地,第一下拉电路包括串联到Vdd的η 晶体管535和536,且能够在MTCH处于“0”时下拉PBUS。第二下拉电路包括串联到地的η 晶体管537和538,且能够在MTCH处于“ 1 ”时下拉PBUS。本发明的一个特征是用PMOS晶体管来构成上拉电路且用NMOS晶体管来构成下拉电路。由于NMOS的拉动比PMOS的拉动强得多,因此在任何竞争中,下拉将总是胜于上拉。 换句话说,节点或总线可以总是缺省为上拉或“ 1”状态,且如果希望,可以总是通过下拉翻转(flip)到“0”状态。图12B图示了图12A的输出逻辑的真值表。该逻辑由从输入逻辑锁存的MTCH、 MTCH*和控制信号PDIR、PINV、NDIR、NINV控制,这些控制信号是来自堆栈总线控制器410 的控制信号的一部分。支持四个操作模式,通过(PASSTHR0UGH)、反转(INVERTED)、浮置(FLOATED)和预充电(PRECHARGE)。在FLOATED模式中,禁用所有四个分支。这通过使得也是缺省值的信号PINV = UNINV = 0、PDIR = UNDIR = 0 来实现。在 PASSTHR0UGH 模式中,当 MTCH = 0 时,它要求 PBUS = 0。这通过仅使能具有η-晶体管535和536的下拉分支、而除了 NWR = 1之外所有控制信号处于其缺省值来实现。当MTCH= 1时,将要求PBUS = 1。这通过仅使能具有 P-晶体管533和534的上拉分支、而除了 PINV = 0之外所有控制信号处于其缺省值来实现。在INVERTED模式中,当MTCH = 0时,将要求PBUS = 1。这通过仅使能具有ρ-晶体管 531和532的上拉分支、而除了 PWR = 0之外所有控制信号处于其缺省值来实现。当MTCH =1时,要求PBUS = 0。这通过仅使能具有η-晶体管537和538的下拉分支、而除了 NINV =1之外所有控制信号处于其缺省值来实现。在PRECHARGE模式中,PDIR = 0和PINV = 0 的控制信号设置将在MTCH = 1时使能具有ρ晶体管531和532的上拉分支,或在MTCH = 0时使能具有ρ晶体管533和534的上拉分支。在美国专利申请公开号US-2006-0140007A1中更全面地展开了公共处理器操作, 其全部被引用附于此。本发明的一些方面利用在以上图10中所述的读/写堆栈的数据锁存器,用于将在内部存储器正进行诸如读、写或擦除的其他操作的同时、进数据(datain)和出数据(data out)的高速缓存操作。在上述架构中,数据锁存器由一些物理页共享。例如,在位线的读/ 写堆栈上时,由所有字线共享,因此当正进行一个操作时,如果这些锁存器中有任何是空闲的,则它们可以高速缓存用于在同一字线或另一字线中的进一步操作的数据,节省传输时间,因为这可以隐藏在另一操作背后。这可以通过增加不同操作或操作的不同阶段的流水线(pipelining)量来改进性能。在一个例子中,在高速缓存编程操作中,在编程一页数据的同时,可以载入另一页数据,节省了传输时间。再例如,在一个示例实施例中,在一个字线上的读操作被插入在另一字线上的写操作中,允许来自读操作的数据从存储器传输出,而数据写仍继续。注意,这允许来自同一块中的另一页、而不是不同字线上的数据被切换出(toggle out)(以例如进行ECC操作),同时对第一页数据的读或其他操作正进行。这种操作的阶段间流水使得用于数据传输的时间被隐藏在对第一页数据的操作背后。更通常地,这使得一个操作的一部分被插入在另一操作、典型是更长的操作的阶段之间。另一个例子是将感测操作插入到所谓擦除操作的阶段之间,比如在擦除脉冲之前或在用作擦除的稍后部分的软编程阶段之前。为了讨论一些操作所需的相对时间,用于上述系统的一组示例时间值可以取为如下数据写 700 μ s (较低页 600 μ S,较高页800 μ S)二进制数据写 200 μ s擦除 2500μ s读 20-40 μ s读和切换出数据2KB数据, 80 μ s ;4KB 160 μ s ;8KB 320 μ s这些值可以用于参考以给出以下时序图所涉及的相对时间的思想。如果存在带有不同阶段的长的操作,则如果锁存器可用,主要方面将使用读/写堆栈的共享锁存器在较快的操作中穿插(interpose)。例如,读可以被插入到编程或擦除操作中,或二进制编程可以被插入到擦除中。在例如要被切换出且更改的数据的读被插入到数据写的验证阶段中的情况下,主要示例实施例将在针对共享相同读写堆栈的另一页的编程操作期间对一页切入 (toggle in)和/或切换出数据。可以以许多方式提高开放数据锁存器的可用性。通常,对于每个单元存储η位的存储器来说,对每个位线将需要η个这种数据锁存器;但是,并不总是需要所有这些锁存器。例如,在以较高页/较低页格式存储数据的每个单元二位的存储器中,在编程较低页时将需要两个数据锁存器。更通常地,对于存储多页的存储器,仅当编程最高页时才需要所有锁存器。这剩余了可用于高速缓存操作的其他锁存器。另外,即使当写最高页时,随着从写操作的验证阶段移除各种状态,锁存器将释放(free up)。具体地,一旦仅剩下要验证最高状态,则为了验证仅需要单个锁存器,且其他锁存器可以用于高速缓存操作。以下讨论将基于每个单元存储两位且具有用于每个位线上的数据的两个锁存器和用于快速通过写(quick pass write)的一个另外的锁存器的四状态存储器,如以上并入白it 胃Β 11 白勺 11 “Use of Data Latches inMulti-Phase Programming of Non-Volatile Memories (非易失存储器的多阶段编程中数据锁存器的使用),,的美国专利申请中描述的。写较低页、或擦除、或进行后擦除软编程(post erase soft program)的操作基本上是二进制操作,且具有空闲的数据锁存器之一,其可以使用它来高速缓存数据。类似地,在进行较高页或全序列写的情况下,一旦除了最高级以外所有都被验证,则仅单个状态需要验证,且存储器可以释放可用于缓存数据的锁存器。可以如何使用它的例子是当编程一页时,比如在复制操作中,可以在该写的验证阶段期间塞入(slip in)对共享同一组数据锁存器的另一页、比如在同一组位线上的另一字线的读。然后,可以将地址切换到正被写的页,允许在停止处捡起(pickup)写处理而无需重新开始。当写继续时,在穿插的读期间缓存的数据可以被切换出、检验或更改,并被传输回以呈现用于一旦较早的写操作完成则将其写回去。这种高速缓存操作使得第二页数据的切换出和更改被隐藏在第一页的编程背后。作为第一例子,以单页(较低页/较高页格式)编程模式操作的二位存储器的高速缓存编程操作。图13是图10的简化版本,示出了与两位的实施例中的本讨论有关的一些具体元件,省去了其他元件以简化讨论。这些元件包括与数据1/0线231连接的数据锁存器DL0434-0、通过线路423连接到公共处理器500的数据锁存器DLl 434-1、通过线路 435与其他数据锁存器共同连接的数据锁存器DL2 434-2、以及通过线路422连接到公共处理器500的感测放大器数据锁存器DLS 214。图13的各种元件根据其在编程较低页期间的部署而标注。锁存器DL2 434-2用于快速通过写模式中的较低验证(VL),如在与本申请 1^0^11 白勺 11 “Use of Data Latches in Multi-Phase Programmingof Non-Volatile Memories (非易失性存储器的多阶段编程中数据锁存器的使用),,的美国专利申请中描述的;对寄存器的包括以及当包括寄存器时对使用快速通过写的包括是可选的,但是示例实施例将包括该寄存器。较低页的编程可以包括以下步骤(1)处理通过将数据锁存器DLO 434-0复位到缺省值“1”而开始。该惯例用于简化部分页编程,因为在所选行中的不将被编程的单元将被禁止编程。(2)编程数据沿着I/O线231供应到DLO 434-0。C3)编程数据将被传输到DLl 434-1和DL2 434_2 (如果包括该锁存器且实现快速通过写的话)。(4) 一旦编程数据被传输到DLl 434-1,数据锁存器DLO 434-0就可以被复位为 “1”,且在编程时间期间,下一数据页可以沿着I/O线231被加载到DLO 434-0,允许在正写
第一页的同时缓存第二页。(5) 一旦第一页被载入到DLl 434-1中,就可以开始编程。DLl 4;34_1数据用于锁定(lockout)单元免于进一步编程。DL2 434-2数据用于较低验证锁定,该较低验证锁定管理到快速通过写的第二阶段的转变,如与本申请同时提交的题为“he of Data Latches in Multi-Phase Programming of Non-VolatileMemories (非易失性存储器的多阶段编程中的数据锁存器的使用)”的美国专利申请中所描述。(6) 一旦开始编程,在编程脉冲之后,较低验证的结果被用于更新DLM34-2 ;较高验证的结果被用于更新DLl 434-1。(该讨论基于“传统”编码,其中较低页编程要到A状态。在与本申请同时提交的题为"Use of Data Latchesin Multi-Phase Programming of Non-Volatile Memories (非易失性存储器的多阶段编程中的数据锁存器的使用)”和在 2005年3月 16 日提交的题为“Non-Volatile Memory and Method with Power-Saving Read andProgram-Verify Operations (非易失性存储器和功率节省读和编程验证操作的方法),, 的美国专利申请中讨论了这种和其他编码。容易得到本讨论对于其他编码的扩展。)(7)在确定编程是否完成时,仅检查行单元(或编程的适当物理单位)的DLl 434-1寄存器。一旦较低页被写入,就可以编程较高页。图14示出了与图13相同的元件,但指示在读入较低页数据的情况下用于较高页编程的锁存器分配。(该描述再次使用传统编程,以便较高页的编程要到B和C状态。)较高页的编程可以包括以下步骤(1) 一旦较低页结束编程,则在保持了(未执行的)高速缓存编程命令的情况下, 较高页(或下一页)写入将以来自状态机控制器的信号而开始。(2)该编程数据将从DLO 434-0传输(在其在较低页写期间在步骤(3)中被载入的情况下)到DLl 434-1和DL2 434-2。(3)较低页数据将从阵列被读入且置于DLO 434-0中。(4)再次分别使用DLl 434-1和DL2 434_2用于验证高和验证低锁定数据。检查锁存器DLO 434-0(持有较低页数据)作为编程参考数据,但不用验证结果来更新它。(5)作为验证B状态的一部分,在较低验证VBL处的感测之后,由此将在DL2 434-2中更新数据,而用高验证VBH结果来更新DLl 434-1数据。类似地,C验证将具有相应的命令以用相应的VCL和VCH结果来更新DLM34-2和DLl 434-1。(6) 一旦B数据完成,则由于仅需要进行对于C状态的验证,因此不需要(保持在 DLO 434-0中用于参考的)较低页数据。DLO 434-0被复位为“ 1 ”,且另一页编程数据可以从1/0线231载入,并被缓存锁存器DLO 434-0中。公共处理器500可以设置仅要验证C 状态的指示。(7)在确定较高页编程是否完成时,对于B状态,检查锁存器DLl 434_1和DLO434-0两者。一旦单元被编程到B状态且仅在验证C状态,则仅需要检查锁存器DLl 434-1 数据来看是否存在任何未被编程的位。注意,在该布置下,在步骤6中,不再需要锁存器DLO 434-0,且其可用于缓存下一编程操作的数据。另外,在使用快速通过写的实施例中,一旦进入第二、慢编程阶段,则还可以使得锁存器DL2 434-2可用于缓存数据,虽然实际上通常是如下情况以这样的方式,这仅可用于不调整(justify)通常用于实现该特征所需的额外开销的较短时间段。图15可以用于图示以在上几段中描述的单页模式进行高速缓存编程的许多方面。图15示出了在存储器内部(较低“实际忙碌(True Busy) ”线)发生了什么事件和从存储器外部(较高“高速缓存忙碌(Cache Busy)”线)看上去的相对时间。在时间、,要被编程到所选字线(WLn)上的较低页被载入该存储器中。这假定先前没有缓存第一较低页的数据,因为其将用于随后的页。在时间、,较低页完成载入,且该存储器开始向其写入。由于在这点上这与二进制操作等效,因此仅需要验证状态A(“pvfyA”) 且数据锁存器DLO 434-0可用于接收下一页数据,在此将该下一页数据取作要在时间、被编程到WLn中的较高页,其因此在编程较低页期间被缓存到锁存器DLO 434-0中。较高页在时间t3完成载入,且较低页在t4时一完成,就可以编程该较高页。在该布置下,虽然所有数据(较低和较高页)要被写入编程的物理单位中(在此,字线WLn),但是在可以写较高页数据之前,该存储器必须从时间t3等待到时间t4,不像以下描述的全序列实施例那样。较高页编程在时间t4开始,其中首先仅验证B状态(“pvfyB”),且在t5添加C状态(“pvfyB/C”)。一旦在t6不再验证B状态,就仅需要验证C状态(“pvfyC” ),且锁存器DLO 434-0变为空闲。这允许在较高页完成编程的同时缓存下一数据组。如所知的,根据具有高速缓存编程的单页算法,如图15所示,即使较高页数据可能在时间、可用,但是该存储器在开始写该数据之前将等待直到时间t4。在转换到全序列编程操作时,比如在美国专利申请11/013125中更全面展开的,一旦较高页可用,就可以同时编程较高和较低页数据。用于全序列(低到全变换)写中的高速缓存编程的算法以如上的较低页编程开始。因此,步骤(1)-(4)与用于单页编程模式中的较低页处理一样(1)该处理通过将数据锁存器DLO 434-0复位为缺省值“1”而开始。该惯例用于简化部分页编程,因为在所选行中的不将被编程的单元将被禁止编程。(2)编程数据沿着I/O线231被供应到DLO 434-0。(3)编程数据将被传输到DLl 434-1和DL2 434-2 (如果包括该锁存器且实现快速通过写的话)。(4) 一旦编程数据被传输到DL 1 434-1,数据锁存器DLO 434-0就可以被复位为 “1”,且在编程时间期间,下一数据页可以沿着I/O线231被载入DLO 434-0,允许在正写第一页的同时缓存第二页。一旦载入第二页数据,如果该第二页数据对应于正被写入的较低页的较高者、且较低页还没有完成编程,则可以实现向全序列写的转换。该讨论关注这种算法中的数据锁存器的使用,其许多其他细节在共同未决的、共同转让的美国专利No. 7120051中更全面地展开。(5)在较高页数据被载入锁存器DLO 434-0中之后,将在地址块中进行判断,来检查2个页是否在同一字线和同一块上,且一页是较低页,一页是较高页。如果是,则如果允许的话,编程状态机将触发较低页编程到全序列编程转换。在任何未决的验证完成之后,则实现该变换。(6)当编程序列从较低页改变为全序列时,典型地一些操作参数将改变。在示例实施例中,这些包括(i)如果较低页数据还没有被锁定,则针对脉冲验证周期数的最大编程循环将从较低页算法的最大编程循环改变为全序列的最大编程循环,但是已完成的编程循环数将不会通过转换而被复位。(ii)如图16所示,编程波形以在较低页编程处理中使用的值VPGM_L开始。如果编程波形已经发展到超过在较高页处理中使用的开始值VPGM_U的情况,则在向全序列转换时,该阶梯将退回到在继续升高阶梯之前的VPGM_U。(iii)确定编程脉冲的步长和最大值的参数不改变。(7)应该进行对存储器单元的当前状态的全序列读,来保证对于多级编码将编程正确的数据。这确保了当全序列开始时,以前可能已被锁定在较低页编程中的、但需要进一步编程来考虑其较高页数据的状态不被禁止编程。(8)如果激活了快速通过写,则还将更新锁存器DL2 434-2的数据,以反映较高页编程数据,因为其以前是基于仅针对A状态的较低验证的。(9)然后,以多级、全序列编程算法再继续编程。如果较低页处理中的编程波形已经增加到较高页起始电平以上,则在转换时将该波形退回到该电平,如图16所示。图17是在较低页向全序列转换写处理中涉及的相对时间的示意表示。直到时间 t3,该处理是如上所述用于图15的处理。在、,较高页的数据已经被载入,且进行向全序列算法的变换,验证处理被切换为包括B状态和A状态。一旦所有A状态都被锁定,则验证处理在时间t4切换到检查B和C状态。一旦在t5验证了 B状态,则仅需要检查C状态,且可以释放寄存器来载入接下来要被编程的数据,比如在下一字线(WLn+1)上的较低页,如高速缓存忙碌线(Cache Busy line)上指示的。在时间t6,该下一数据组已经被高速缓存,且用于前一组的C数据的编程在〖7终止,下一数据组开始编程。另外,在(此时)字线WLlriI 的较低页正编程的同时,下一数据(比如相应的较高页数据)可以被载入开放锁存器DLO 434-0 中。在全序列写期间,以独立地给出较低页和较高页状态的方式来实现状态报告。在编程顺序结束时,如果存在未完成的位,则可以进行物理页的扫描。第一扫描可以检查锁存器DLO 434-0以寻找未完成的较高页数据,第二扫描可以检查DLl 434-1以寻找未完成的较低页数据。由于B状态的验证将改变DLO 434-0和DLl 434-1数据两者,因此应该以如下方式进行A状态验证如果该位的阈值高于A验证电平,则DLl 434-1数据“0”将改变为 “1”。该后验证将检查任何编程下的B电平是否在A电平处通过;如果它们在A电平处通过,则错误仅出现在较高页而不在较低页;如果它们不在A电平处通过,则较低和较高页都有错误。如果使用高速缓存编程算法,则在编程了 A和B数据之后,C状态将被转移到锁存器DLl 434-1来完成编程。在该情况下,扫描锁存器对较低页来说不是必须的,因为该较低页将已经通过了编程,而没有任何失败的位。
本发明的另一组示例实施例涉及页复制操作,其中数据组从一个位置被重新定位到另一位置。数据重新定位操作的各个方面在美国专利申请NO.US-2006-0257120-A1 ; US-2006-0136687-A1 ;以及 US-2006-0031593-A1 ;和美国专利号 6266273 中描述,其全部被引用附于此。当将数据从一个位置复制到另一位置时,通常切换出该数据以被检查(例如以寻找错误)、更新(比如更新头标(header))或这两者(比如校正所检测的错误)。这种转移还要在垃圾收集操作中整理(consolidate)数据。本发明的首要方面允许被读到开放寄存器的数据在写操作的验证阶段期间被插入,而被高速缓存的该数据然后随着写操作的继续而被移出存储器器件,使得用于切换出该数据的时间被隐藏在写操作背后。以下呈现了高速缓存页复制操作的两个示例实施例。在两种情况下,描述了使用快速通过写实施方式的实施方式。图18指示了随着处理的进展锁存器的示例布置的部署。高速缓存页复制的第一版本将向较低页写入,且可以包括以下步骤,其中读地址被标注为M、M+1......且写地址被标注为N、N+1......(1)要复制的页(“页M”)被读入锁存器DLl 434-1中。这可以是较高页或较低页的数据。(2)然后,页M被转移到DLO 434-0中。(3)然后在DLO 434-0中的数据被切换出,并被更改,之后其被移回到该锁存器中。(4)然后,编程序列可以开始。在要被写入较低页N中的数据被转移到DLl 434-1 和DL2 434-2之后,锁存器DLO 434-0准备好用于高速缓存数据。该较低页将被编程。对于该实施例,编程状态机将在此停止。(5)要被复制的下一页然后被读入DLO 434-0中。然后,编程可以恢复。在步骤 (4)结束时停止的状态机将从头重新开始该编程序列。(6)编程继续直到较低页完成。复制目的地页地址将确定写是向较低页还是向较高页。如果编程地址是较高页地址,则该编程序列将不停止,直到该编程完成,且在写完成之后执行步骤(5)的读。在第二高速缓存页复制方法中,可以暂停编程/验证处理来插入读操作,然后重新开始写操作,在其停下的点捡起。然后,在恢复的写操作继续的同时,在该交错的感测操作期间所读的数据可以被切换出。而且,该第二处理允许一旦仅C状态正被验证且在每个位线上的一个锁存器开放、页复制机制就用于在较高页或全序列写处理中。第二高速缓存页复制操作以与第一种情况相同的前三个步骤开始,但然后不同。其可以包括以下步骤(1)要复制的页(“页M”)被读入锁存器DLl 434-1中。这可以是较低页或较高页。(2)然后,来自页M的数据被转移到DLO 434-0中。(如之前,N等将指示写地址, M等用于读地址。)(3)在DLO 434-0中的数据然后被切换出、更改,之后其被移回到该锁存器中。(4)状态机编程将进入无限期等待状态,直到读命令进入,且另一页、即下一页 M+1向锁存器DLO 434-0的读将开始。(5) 一旦步骤的读完成,地址就被切换回字线和块地址,以将在步骤(1-3)中的数据编程到页N(在此,较低页)中,且恢复编程。
(6)在页M+1的读完成之后,该数据可以被切换出、更改和返回。一旦该处理结束, 如果两页是在同一 WL上的相应较高和较低页,则该写就可以被转换为全序列操作,(7) 一旦在全序列写中完成了 A和B电平,则在DLO 434_0中的数据将被转移到 DLl 434-1中,如在先前描述的正常高速缓存编程中一样,且可以发出对于另一页(例如, 页M+2)的读命令。如果没有单个页向全序列转换,则较低页将完成该写,且然后较高页将开始。在完全完成了 B电平状态之后,相同DLO 434-0到DLl 434-1数据转移将发生,且状态机将进入等待对于页M+2的读命令的状态。(8) 一旦读命令到达,该地址就被切换到读地址,且读出下一页(页M+2)。(9) 一旦该读完成,该地址就将被切换回先前的较高页地址(编程地址N+1),直到该写结束。如上所述,除了在保持可以被编程到每个存储器单元中的(在此,2位)数据时使用的锁存器DLO 434-0和DLl 434-1之外,示例实施例还包括用于快速通过写技术的较低验证的锁存器DL2 4;34-2。一旦较低验证通过,还可以释放锁存器DL2 434-2,并将其用于高速缓存数据,虽然在示例实施例中没有这样做。图19A和19B图示了第二高速缓存页复制方法的相对时序,其中图19B图示了具有全序列写转换的算法,且图19A图示了没有其的算法。(图19A和19B都由两部分组成, 第一较高部分在虚线垂直线A处开始,对应于、,且以虚线垂直线B结束,对应于t5 ;第二较低部分是较高部分的继续,且以虚线垂直线B开始,对应于t5。在两种情况下,在时间t5的线B在较低部分中与在较高部分中相同,恰好是在两个部分中的接缝处,允许其在两个线上显不)ο图19A示出了以在该例子中被取为较低页的第一页(页M)的读开始、假设先前没有高速缓存数据、且以单页模式操作的处理,其中在开始写较高页之前等待直到较低页完成写为止。该处理在时间、以页M的读(感测页M(L))开始,该页M在此是较低的,其在该编码中通过在A和C电平处的读而被感测。在时间t1;读完成,且页M可以被切换出、检验或更改。在时间、开始,通过在B电平处读来感测下一页(在此是页M+1,对应于与较低页 M相同物理(physical)的较高页),该处理在时间t3结束。此时,第一页(来源于页M)(较低)准备好被编程回到在页N处的存储器中,且从页M+1读取的数据正被保持在锁存器中, 且可以移出以被更改/检查。这两个处理可以同时开始,在此在t3开始。使用上述的典型时间值,来自页M+1的数据到时间t4已经被移出且更改;但是,对于不实施全序列转换的实施例,该存储器将等待直到页N在时间t5结束以开始将(来源于页M+1的)第二读出页的数据写入页N+1中。由于页N+1是较高页,因此其写首先以在B电平处的验证开始,在t6添加C电平。 一旦具有目标状态B的存储元件在时间t7都被锁定(或到达了最大计数),就放弃(drop) B状态验证。如上所述,根据本发明的几个主要方面,这允许释放数据锁存器,暂停正进行的写操作,穿插(interpose)读操作(在与暂停的编程/验证操作不同的地址处),然后在写停下的地方恢复,且在穿插的写操作中感测的数据可以在恢复的写操作运行的同时被切换出ο在时间t7,对于在此的较低页M+2进行穿插的写操作。在时间伪结束了该感测, 且拾起页N+1的写,且来自页M+2的数据同时被切换出并更改。在该例子中,在页M+2在时间tlO结束之前,页N+1在时间t9结束编程。在时间tlO,来源于页M+2的数据的写可以开始;但是,在该实施例中,而是,首先执行页M+3的读,允许要切换出和更改的该页数据被隐藏在开始于时间til时的来源于页M+2的数据向页N+2中写入的背后。然后,该处理如在该图的较前部分中一样继续,但页号转变,时间til对应于时间t3,时间tl2对应于时间 t4,等等,直到复制处理停止。图19B再次示出了以读较低页、即被取为较低页的页M开始、且假设先前没有高速缓存数据的处理。图19B与图19A不同在于在时间t4实现向全序列写的转换。这大致将处理加快了图19A的时间(t5-t4)。在时间t4(=图19A中的t5),如先前所述那样实施与全序列转换有关的各种改变。在此之外,该处理类似于图19A的处理,包括在时间t7和tl2 之间得到的本发明的那些方面。在涉及写数据的在此描述的页复制处理和其他技术中,可以根据美国专利公开号 US-2004-0109362-A1中所描述的线索智能地选择在给定时间验证哪些状态,该美国专利公开被引用附于此。例如,在全序列写中,该写处理可以开始仅验证A电平。在之前的A验证之后,检查以看任何位是否都通过了。如果是,可以向验证阶段添加B电平。在具有A电平验证作为其目标值验证的所有存储单元后(或除了基于可设置的参数的最大计数以外), 将移除A电平验证。类似地,在B电平处的验证之后,可以添加C电平的验证,且在具有B 电平验证作为其目标值验证的所有存储单元后(或除了基于可设置的参数的最大计数以外),移除B电平验证。关于优选的多状态编码来描述带有用于其他操作的背景数据高速缓存的编程操作。用于4状态存储器的示例优选“LM”编码图20图示了用2位逻辑码(“LM”码)来编码的4状态存储器的编程和读。该码提供了错误容限,且缓解了由于^pin效应的相邻单元耦合。图20图示了当每个存储器单元使用LM码来存储两位数据时4-状态存储器阵列的阈值电压分布。LM编码不同于传统格雷码之处在于,保留较高和较低位用于状态“A”和“C”。“LM”码已经在美国专利No. 6657891 中公开,且有益于通过避免需要电荷的很大改变的编程操作来减少在相邻浮置栅极之间的场效应耦合。设计该编码使得可以分离地编程和读取2位,即较低和较高位。当编程较低位时, 该单元的阈值电平仍然处于未编程区域中,或被移动到阈值窗的“中下(lower middle)”区域。当编程较高位时,在这两个区域的任一中的阈值电平进一步提高到不大于阈值窗的四分之一的稍高的电平。数据样式的伪(psuedo)和用户驱动随机化存储器EEPROM或芯片和随机化方法的各种实施例追求最小化由于重复数据存储样式引起的问题,比如增加的NAND串电阻、降低的容忍度和可靠性以及不希望的耦合。本发明的伪随机技术是实用的,且在数据处理容量方面,它们实现起来不贵。本发明包括实现对在闪存芯片上存储的数据的伪随机化和基于真实用户的随机化的不同实施例和方法。所有实施例有如下优点仅需要在快闪EEPROM中实现简单且小的电路更改。这是值得注目的,因为随机化技术和电路在计算上强度不大,且即使有性能损失也只损失很少就实现了。本发明的解决方案也很灵活,在于可以在任何时间容易地使能或
23禁用随机化。另外,在某些实施例中使用的伪随机化的样式可以以许多方式变化,且在时间上容易改变。图21图示了与随机化处理有关的EEPROM或存储器芯片600的主要组件。芯片 600包括存储器阵列602、在外围电路中的(一个或多个)寄存器610、以及复用器614。芯片600的其他组件将在另外的附图中图示并参考这些附图描述。寄存器610能够保持多位, 且可以包括多个寄存器。在一些实施例中,其起到移位寄存器的作用。存储器阵列602包括隐藏区604和用户数据区606。隐藏区可以用于存储固件和其他开销数据,比如存储器操作控制码。在NAND架构中,如先前描述的,数据被组织在块中,每块可以包括多页数据。在某些实施例中,将既不出现寄存器610也不出现复用器614。本发明的各个实施例将减少或消除可能导致编程干扰或用户读干扰的、对具体数据样式的长期且重复的存储。这通过用伪随机机制或用户触发的随机化来变化数据的编码而实现。由于用户活动性的定时完全不可预测,因此使用该活动性作为触发器得到了编码方案的真正随机序列。每个实施例还将减少NAND串电阻效应,增加存储器容忍度和可靠性,且减少浮置栅极与浮置栅极耦合的问题。每个实施例仅需要对快闪EEPROM的电路进行最小的更改,但同时将显著地增加数据存储的随机性,因此增加EEPROM的性能。可以容易地在该阵列中使能或禁用数据的随机化。另外,负责该伪随机化的序列可以持续改变,提供了系统内的灵活性。在一个实施例中,可以是零或一的位的码或序列被存储在阵列602的隐藏区604 中。隐藏区604中存储了该码的部分可以被称为“ROM块”。该码可以包括2个或更多位, 但优选地包括17或更多位。位越多,随机化将越大。在芯片600通电后,值被载入寄存器 610中。在该寄存器中的每位都被分配到具体的页地址。将每位与页的页地址比较,且基于该比较,该页的数据的编码将被反转,或对该页将仍然相同(通过(passed))。例如,该位的 0值可以用于指示该数据的编码方案将仍然相同,而该寄存器中的1值可以指示在页内的数据的编码将被反转。如果该码包括少于一块内的页的数量的位,则该码可以应用于不止一个一页或多页的组。换句话说,该码可以连续重复使用,直到所有页都被比较。该码还可以在各周期之间改变。或者,可以通过复用器614来复用该码,使得一个码的一位将确定在用户数据区602中存储的多页数据的编码。该码的每位可以称为极性位(polarity bit), 因为其用于改变对用户数据的某部分采用的编码的极性。这在图22A中绘出。在这种情况下,编码是基于页地址的,以便知道页0、N具有极性1,而页l、n+l具有极性0,页2、n+2具有极性1,等等。因此,在编码是基于页地址的实施例中,不需要存储页的极性位,虽然为了冗余可以这样做。以下看到的并如图22B再现的表1图示了在寄存器610中的码的极性位应用于用户数据的部分。虽然可以将用户数据的任意部分与具体极性位比较且相关联,但所描述的优选实施例图示了一页作为基本单位。寄存器位置1234567891011121314151617码(极性位)10100111100011010UD原始编码01010101010101010UD随后编码11110010110110000状态ERERBCERACB表1如表中可见,码的每个(极性)位将确定位的原始编码(数据)是将仍然相同还是将改变。例如,见寄存器位置1,在该位置中的极性码具有值1。因此,在1指示数据将被反转的实施例中,被存储为0的用户数据的原始位将被反转为值1。该表图示了多状态单元, 其中2位用于定义一个状态。图20中示出了各状态,且从图20中可见,较高和较低位定义了这些状态。在图20所示的这类2位或4状态存储器单元中,(1:1)定义了擦除(“ER”) 或未编程(“U”)状态;(0:1)定义了状态A,(0:0)定义了状态B,且(1:0)定义了状态C。 较高和较低位可以物理上位于单个存储器单元中。相同或不同码可以被应用于另一组数据,以便对应于位17的数据组将与对应于所应用的下一码的位1的数据结合使用来确定状态。每个极性寄存器将控制在相应的页上的所有数据的极性。优选地,较低和较高位位于相同物理字线上。在表1中给出的例子图示了用于将单个样式转换为经过许多字线的(一个或多个)随机样式的极性位的功能。对位于相同NAND链结构的数据实现随机化,在图22C 中提供其例子以图示该概念。在图22C中,在图示的NAND串或链的每个单元处图示了给定单元的较低和较高位。所示的NAND串仅是例子,且当然可以在一串中存在更多或更少的单元,且本发明可以使用不同于所示的结构。例如,还可以使用存储3、4或更多位的单元。而且,应该记得,极性位优选地应用于一页或更多数据,虽然示出了在位电平上的应用以图示位反转的概念, 尤其是在多状态存储器中。在图22C中,向用户数据的每位应用极性位,且由极性位的反转或通过得到的用户数据被标注为保存的数据(saved data)。该保存的数据是随后将被写到存储器阵列并被存储为随机化操作的结果的数据。如可以看到的,由该单元的较高和较低位来定义在图的右侧指示的状态。在图22C中使用的“保存的数据”术语对应于在表1和图22B中所称的“用户数据(UD)随后编码”。图23A图示了另一实施例,其中图21所示的寄存器是有反馈的移位寄存器。在这种实施例中,该寄存器610被配置为伪随机生成器。其内容被周期地反馈以生成伪随机数的序列。以此方式,与一次使用码的所有位的实施例相反,将一次使用一位。在到来的用户页上使用的极性位将来自上一寄存器输出。优选地在命令的上升沿这样做。触发命令可以是编程命令、高速缓存编程命令、读命令、擦除命令、或其他用户发出的命令。示例的编程命令信号在图23B中示出。示出了与该命令相关的时钟信号,且由用户请求来触发该命令的例化(instantiation),该请求的时序和类型是不可预测且实质上是随机的。图23A图示了作为确定极性位的输入之一的与用户命令相关的时钟信号。图中的另一输入是用户数据。 极性位的应用将该数据的编码反转或维持原样,如先前描述的。图23C图示了用于数据转换的控制电路的例子。具有单个反相器的数据路径将导致编码的反转,而具有串联的两个反相器的路径将导致数据编码方案不改变。在这种情况下,与一组数据相关的极性位将随该组数据被存储。例如,如图23D所示,对于一页数据 630,用于用户区636中的数据的极性位632将被编程到页630的隐藏区634中。当读该页 630时,极性位632将被移出且被锁存以控制输出数据,且如果编码机制被反转,则将回复 (revert)编码机制,如由图23E所示的示例电路完成的。以此方式,该页的极性将被回复到其原始编码。由移位寄存器使用的码的样式可以改变,且可以更改用于不同应用。如果所有位被设置为0(在0指示不改变的情况下),则将禁用随机化。尽管在寄存器中的位的样式是伪随机的,但用户行为是不可预测的,且在任何给定的时间得到的极性因此也是不可预测且随机的。用户行为的两个例子如下1)用户编程一些页,且跳到不同的地址来读或编程一些页,或擦除一些块,然后返回到上次编程发生的块,且继续编程更多页;以及幻用户顺序地编程所有页,而不跳到另一地址。在情况1中,对于每个用户命令可以触发新的极性位,而在情况2中,顺序编程将利用且基于一个极性位。因此,即使用户想要存储的原始数据可能对两个情况来说相同,但是在存储器中最后编程的数据很可能在这2个情况下对于各个不同的页和各组页中的至少一些而不同。注意,EEPROM典型地由控制器芯片控制,且 “用户”的一些动作可以是控制器芯片的动作。在另一实施例中,由于用户命令,比如先前描述的高速缓存编程操作,还随机地生成极性位。该实施例使用不同步的两个输入。第一是用户命令的时序,如先前所述其是不可预测的。第二是有限状态机时钟。在某些存储器系统中,有限状态机时钟仅在某些时间 (例如,在高速缓存操作期间)是有效的,而在其他系统中,其可以总是有效。无论何时存储器系统的有限状态机时钟有效时,该实施例的此技术都可用。在用户命令时钟信号的上升沿,参考有限状态机(“FSM”)时钟的电平或状态。该状态可以是高或低,如在图MA中看到的。低状态可以对应于零的极性位(虽然相反的对应也是可能的)。在时间t = 0时,FSM是低,因此极性位将是零,指示不改变数据编码,如前所述。在时间t = 1时,FSM是高,且极性位将是一,而在时间t = 3时,FSM再次位于低状态。在一些实施例中,只要发出执行命令且感测到它,就将极性位632载入隐藏区634。 在其他实施例中,其可以被临时存储在该系统的另一存储器中。图MB图示了用于确定如上所述的极性位的示例电路。将再次优选在上升沿触发反相器。图25更详细地图示了图7A和图9中示出的芯片上控制电路。除了状态机312和地址解码器或生成器314以外,该芯片上控制电路还包含了数据加扰器318。在优选实施例中,它包含了图21和23A所示的寄存器610和复用器614。在另一优选实施例中,其还包含图23C所示的数据反转电路和图23E所示的数据回复电路。如图21到图25和相关文本所公开的,并行地编程或读可由公共字线访问的每页数据。通过伪随机地选择某些页来使得它们的位的极性翻转,来实现逐页的随机化。在Yan Li 等人的于 2006 年 9 月 8 日提交的题为 “Methods in a PseudoRandom and Command Driven Bit Compensation for the Cycling Effects in FlashMemory(对于闪存中的循环效应的伪随机和命令驱动位补偿中的方法)”的美国申请NO. 11/530392中公开了数据的芯片上、逐页随机化,该申请全部被引用附于此。一页内的数据的芯片上伪随机化
还期望加扰每页内的数据。这有益于避免在编程期间可能引起问题的某些高度规则的数据样式,还有益于当并行感测一页数据时控制源极载入错误。如果重复的数据样式被用户或者控制器存储到某些页中,则数据可以将在某 NAND链的编程期间对升压模式(boosting mode)有害的某些样式排队(line up)。当大量NAND链(见图ID和图幻在编程期间共享所选的字线时,不将被编程的链通过使得它们的沟道区域升压以便减少施加到所选字线的有效编程电压,而被禁止编程。例如,NAND 型存储器典型地使得每个NAND链从源极侧编程到漏极侧。如果在源极侧上的大量存储器单元处于擦除状态,则由于来自漏极侧的升压沟道的电荷可能经由由擦除的单元建立的高度导电的沟道而向源极泄漏,因此在编程禁止期间该升压沟道将不是非常有效。不太有效的沟道升压和由此的编程禁止可能导致编程干扰和错误的结果。在美国申请公开 No. US-2006-0198195-A1 和 Farookh Moogat 等人在 2006 年 12 月四日提交的题为“Method of NAND Flash Memory Cell Array withAdaptive Memory State Partitioning(具有适应的存储器状态划分的NAND闪存单元的方法)”的美国申请No. US 11/618482中讨论了与升压效率有关的问题,其全部公开被引用附于此。根据本发明的一个方面,页中的数据被随机化以便当来自几页的数据被排队时, 在编程期间避免有问题的数据样式。通过偏移每页的起始位置来加扰在一个优选的实施例中,加扰在一页上的数据的简单方式是将数据写到每个不同的页的独立或不同的起始地址。相应页的数据被写入位于每页的不同起始位置处的每页存储器单元。当数据被填入到页的结尾时,通过从该页的第一地址绕回(wrap around)而继续,直到就在起始位置之前。图沈图示了根据从每页的不同起始位置开始写的一个优选实施例加扰存储器页上的数据的方法。步骤700 提供具有可逐页访问的非易失性存储器单元的阵列的集成电路存储器芯片,每页是一群存储器单元,一群的每个存储器单元位于该阵列的列中,且沿着可由公共字线访问的行。步骤710 在芯片上生成起始列位置的序列,以便要被编程的每页具有相关的起始列位置。步骤720 通过从相关起始列位置开始且绕回直到该页被填满,将要被编程的数据安排(stage)到每页中。步骤730 并行将安排的数据编程到每页中。图27是图示具有用于写数据的不同起始位置的不同页的例子的表。例如,在页O 上,字节O将从列O开始被载入。在页1上,字节O将从列1开始被载入。该数据将继续通过列Π-1载入,并绕回列O。在该例子中,每页具有指定的偏移来帮助错开(misalign)页与页之间的数据中的任何重复样式。通常,给出起始列地址作为页号的函数。当到达物理列的结尾时,数据绕回到物理列的开始处。例如,Starting_Column_Address (Page_Number) (开始列地址(页号))=I^ge_NUmber(M0D(n-l))+k,其中k是预定数,且(n_l)是正被并行编程的存储器单元的总数。例如,当k = O时,每页从前一页偏移了一列。在优选实施例中,通过控制图9所示的1/0电路440来实现对于给定页的起始列位置的偏移。典型地,地址解码器314在数据载入操作中,将物理页的起始地址发给I/O电路。根据起始地址,数据被逐列按时钟输入(CloCkinto)IA)电路。在绕回的情况下,当到达物理列的结尾时发出第二起始地址。图23D图示了每页的起始列地址可以被存储在该页中预留用于系统使用的部分中。例如,页630的起始列地址被存储在存储器阵列的部分634中。在另一优选实施例中,通过诸如图23A所示的伪随机生成器来提供每页一个的起始物理列地址的序列。偏移每页的起始位置可以避免不期望的数据样式在NAND链内排队,且有助于缓解在编程期间的升压问题。除了缓解在编程期间的沟道升压问题以外,加扰在一页内的数据还有助于控制在感测期间的源极载入错误。由在源极线和芯片的地垫之间的有限电阻引入了源极载入错误。感测存储器单元的一个潜在的问题是由跨越有限电阻的源极载入而引起的源极线偏压。当并行地感测大量存储器单元时,其组合的电流可以导致在具有有限电阻的地回路中的显著电压降。这导致源极线偏压,其引起在使用阈值电压感测的读操作中的错误。图28k图示由于在具有对地的有限电阻的源极线中的电流流动引起的源极电压错误的问题。读/写电路370A和370B同时在一页存储器单元上操作。在读/写电路中的每个感测模块480经由位线36耦合到相应的单元。根据图8所示的读/写堆栈400,每个感测模块480包括连接到位线之一的感测放大器212、一组数据锁存器430和共享公共处理器500和I/O电路440。对于并行操作,将存在用于一页中的每个存储器单元的感测模块。例如,感测模块480感测存储器单元10的导电电流I1 (源极-漏极电流)。该导电电流从感测模块经过位线36流入存储器单元10的漏极,且在经过源极线34流到地之前从源极14流出。在集成电路芯片中,在存储器阵列中的单元的源极被联系在一起,作为连接到存储器芯片的某外部地基垫(groimdpad,例如Vss基垫)的源极线34的多个分支。即使当使用金属带来降低源极线的电阻时,有限电阻R仍然在存储器单元的源极电极和地基垫之间。典型地,地回路电阻R是大约10欧姆。对于正被并行感测的存储器的整个页来说,流过源极线34的总电流是所有导电电流的总和,即iTOT = I^i2+. . . +ip。通常,每个存储器单元具有依赖于被编程到其电荷存储元件中的电荷量的导电电流。对于存储器单元的给定控制栅极电压,小的电荷将产生相对较高的导电电流(见图4)。当在存储器单元的源极电极和地基垫之间存在有限电阻时, 跨越该电阻的电压降由Vdrap = iTOTR给出。例如,如果64000个位线同时放电,每个具有1 μ A的电流,则源极线电压降将等于 64000线X 1 μ A/线X 10欧姆 0. 64伏特。假设体效应(bodyeffect)使得在源极电压中 0. 64V的升压导致阈值电压中0. 96V的升压,则当感测存储器单元的阈值电压时,该源极线偏压将促成0. 96伏特的感测误差。图^B图示了由源极线电压降引起的存储器单元的阈值电压电平中的误差。被供应给存储器单元10的控制栅极30的阈值电压Vt与GND有关。但是,由存储器单元看到的有效的Vt是在其控制栅极30和源极14之间的电压差。在供应的Vt和有效的Vt之间存在大约1. 5XVdrop的差(忽略从源极14到源极线的电压降的较小影响)。当感测存储器单元的阈值电压时,该Vdrap或源极线偏压将促成例如0. 96伏特的感测误差。该偏压不能轻易地被移除,因为它是独立于数据的,即独立于该页的存储器单元的存储器状态。该偏压在一种极端情况下最高即当该页的所有存储器单元都处于擦除状态时。在该情况下,每个单元都是高度导电的,促成大的Vdrap及由此的高源极线偏压。另一方面,在另一极端下,当在该页中的所有存储器单元都在最大编程状态(most programmed state)时,则每个单元是不导电的,导致最小或无源极线偏压。根据本发明的另一方面,页中的数据位被随机化,以便平均而言该页包含具有擦除和编程状态的相等的单元混合。以此方式,源极线偏压或载入实质上不改变,且可以允许在感测操作期间的适当调整。这通过随机化一页内的各个位来实现。优选地,使用每位指定特定极性的伪随机位的序列来编码该页内的位。在一个实施例中,对于页中的每个数据位存在一个极性位。在另一实施例中,对于页中的每字节数据存在一个极性位。在此实施例中,如果极性位指定了位的翻转,则在该数据字节内的所有位将被翻转。图四图示了随机化一页内的位的方法。步骤750 提供具有可逐页访问的非易失性存储器单元的阵列的集成电路存储器芯片,每页是一群存储器单元,该群的每个存储器单元位于该阵列的列中,且沿着可由公共字线访问的行。步骤760 提供用于要被编程的页的每组数据位的第一和第二编码。步骤762 在芯片上生成极性位的序列,每组数据位一个极性位。步骤764 根据每组数据位的极性位是处于第一还是第二状态,用第一或第二编码来编码每组数据位。步骤770 并行地将所有编码的数据位的集合编程到页中。优选地通过诸如图23A所示的伪随机生成器来提供每组数据位一个的极性位的序列。每组数据位包含预定数量的位。例如,在一个实施例中,位的预定数量是1。在另一实施例中,位的预定数量是8位。一页内和各页之间的数据的芯片上伪随机化对于一些极其规则的数据样式、比如所有都具有擦除状态的页,在一页内加扰的方案是不够的。根据本发明的另一方面,一页内的随机化与各页间的随机化相结合。具体地,给定了芯片上电路的有限资源,优选地通过具有独立的起始位置的每页来完成一页内的随机化,且优选地通过具有独立的编码极性的每页来完成各页间随机化。图30图示了根据本发明的另一方面的逐页和在每页内随机化数据的方法。步骤800 提供具有可逐页访问的非易失性存储器单元的阵列的集成电路存储器芯片,每页是一群存储器单元,该群的每个存储器单元位于该阵列的列中,且沿着可由公共字线访问的行。步骤810 提供用于要被编程的每页数据的第一和第二编码。步骤812 在芯片上生成极性位的序列,每页一个极性位。步骤814:根据该页的极性位是处于第一还是第二状态,用第一或第二编码来编码该页数据。
步骤820 在芯片上生成起始列位置的序列,以便要被编程的每页具有相关的起始列位置。步骤822 通过从相关起始列位置开始且绕回直到该页被填满,将要被编程的数据安排到每页中。步骤830 并行将安排的数据编程到每页中。在另一实施例中,还通过在步骤810到步骤822之间插入图四所示的步骤760、步骤762和步骤764,来完成一页内的数据位随机化。在此实施例中,在字线方向上的位和在列方向上的位都被随机化。在此引用的所有专利、专利申请、文章、书籍、规范、其他公开、文档和事物为了一切目的而通过此全部被引用附于此。对于在任何并入的公开物、文档、事物与本发明的文本之间的术语的定义或使用中的任何矛盾或冲突的程度,在本文档中的术语的定义和使用应该是优先的。虽然已经描述了本发明的实施例,应该理解,本发明不局限于这些例示的实施例, 而是由所附权利要求来定义。
权利要求
1.一种集成电路存储器芯片,包括可逐页访问的非易失性存储器单元的阵列,每页是一群存储器单元,该群的每个存储器单元位于该阵列的列中,且沿着可由公共字线访问的行;起始列位置的序列,使得要被编程的每页具有相关的起始列位置; 地址生成器,用于生成对于该相关的起始列位置的地址;响应于地址生成器的、与每列相关的一组数据锁存器,用于将要被编程的数据安排到每页中,所安排的数据从相关的起始列位置开始且绕回直到该页被填满;以及编程电路,用于并行地将所安排的数据编程到每页中。
2.如权利要求1所述的存储器芯片,其中,各页被连续编号,且与一页相关的起始列位置是页号的函数。
3.如权利要求2所述的存储器芯片,其中,该函数使得该列位置是对所述群中的单元的数量求模加上预定数。
4.如权利要求3所述的存储器芯片,其中,所述预定数是零。
5.如权利要求1所述的存储器芯片,还包括 伪随机生成器;以及由该伪随机生成器在芯片上生成起始列位置的序列。
6.如权利要求5所述的存储器芯片,其中所述伪随机生成器还响应于由所述存储器芯片外部的事件触发的定时;以及所述起始列位置的序列还是所述定时的函数。
7.如权利要求1所述的存储器芯片,还包括 用于要被编程的每页数据的第一和第二编码; 极性位的序列,其中每页一个极性位;以及编码器,根据该页的极性位是处于第一还是第二状态,用第一或第二编码来编码该页数据。
8.一种集成电路存储器芯片,包括可逐页访问的非易失性存储器单元的阵列,每页是一群存储器单元,该群的每个存储器单元位于该阵列的列中,且沿着可由公共字线访问的行; 用于其中要编程数据的每组的列的第一和第二编码; 极性位的序列,其中一个极性位用于一页的一组的列;编码器,根据每组的列的极性位是处于第一还是第二状态,用第一或第二编码来编码与该组的列相关的数据位;以及编程电路,并行地将被编码的数据编程到每页中。
9.如权利要求8所述的存储器芯片,其中,所述第一编码是使得与每列相关的数据位不改变,且所述第二编码是翻转所述数据位。
10.如权利要求8所述的存储器芯片,还包括 伪随机生成器;以及其中由所述伪随机生成器来生成极性位的序列。
11.如权利要求1所述的存储器芯片,其中,其中所述阵列的存储器单元被组织成NAND 结构。
12.在具有可逐页访问的非易失性存储器单元的阵列的集成电路存储器芯片中,其中每页是一群存储器单元,该群的每个存储器单元位于该阵列的列中,且沿着可由公共字线访问的行,一种用于将数据编程到所述阵列中的方法,包括在芯片上生成起始列位置的序列,使得要被编程的每页具有相关的起始列位置; 通过从相关的起始列位置开始且绕回直到该页被填满,来将要被编程的数据安排到每页中;以及并行地将所安排的数据编程到每页中。
13.如权利要求12所述的方法,其中,各页被连续编号,且与一页相关的起始列位置是页号的函数。
14.如权利要求13所述的方法,其中,该函数使得该列位置是对所述群中的单元的数量的求模加上预定数。
15.如权利要求14所述的方法,其中,所述预定数是零。
16.如权利要求12所述的方法,其中由伪随机生成器在芯片上生成起始列位置的序列。
17.如权利要求16所述的方法,其中所述伪随机生成器还响应于由所述存储器芯片外部的事件触发的定时;以及所述起始列位置的序列还是所述定时的函数。
18.如权利要求17所述的方法,其中所述外部事件由存储器芯片的用户发起。
19.如权利要求17所述的方法,其中,所述外部事件由外部存储器控制器发起。
20.如权利要求12所述的方法,还包括 提供用于要被编程的每页数据的第一和第二编码;在芯片上生成极性位的序列,其中每页一个极性位;以及根据该页的极性位是处于第一还是第二状态,用第一或第二编码来编码该页数据。
21.在具有可逐页访问的非易失性存储器单元的阵列的集成电路存储器芯片中,每页是一群存储器单元,该群的每个存储器单元位于该阵列的列中,且沿着可由公共字线访问的行,一种用于将数据编程到该阵列中的方法,包括提供用于其中要编程数据的每组的列的第一和第二编码; 在芯片上生成极性位的序列,其中一页的每组的列一个极性位; 根据每组的列的极性位是处于第一还是第二状态,用第一或第二编码来编码与每组的列相关的数据位;以及并行地将被编码的数据编程到每页中。
22.如权利要求21所述的方法,其中,所述第一编码是使得与每组的列相关的数据位不改变,且所述第二编码是翻转所述数据位。
23.如权利要求21所述的方法,其中由伪随机生成器在芯片上生成所述极性位的序列。
全文摘要
集成电路存储器芯片内的特征使能加扰或随机化被存储在非易失性存储器单元的阵列中的数据。在一个实施例中,每页内的随机化有助于控制在感测期间的源极载入错误和在相邻单元之间的浮置栅极与浮置栅极的耦合。逐页的随机化有助于减少由于具体数据样式的重复且长期的存储而导致的编程干扰、用户读干扰和浮置栅极与浮置栅极的耦合。在另一实施例中,在一页内和在各页之间实现随机化。在不同的实施例中,加扰或随机化可以是预定的、或是代码生成的伪随机或用户驱动的随机化。在集成电路存储器芯片的有限的资源和负担内实现这些特征。
文档编号G11C16/10GK102318007SQ200880115127
公开日2012年1月11日 申请日期2008年8月20日 优先权日2007年9月7日
发明者尼马·莫克莱西, 方家荣, 李艳 申请人:桑迪士克公司