用于编程非易失性存储器单元的存储器系统和方法转让专利

申请号 : CN200580011792.1

文献号 : CN1942975B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李彦玉品·卡温·方三轮徹

申请人 : 桑迪士克股份有限公司

摘要 :

在其中以两遍或两遍以上循序编程对存储器单元进行编程的非易失性存储器编程方案中,当在第二遍编程期间没有足够的主机数据对至少某些存储器单元进行编程时,某些存储器单元可能被编程为错误的阈值电压。这可通过修改编程方案来防止发生这种情况。在一种实施方案中,这是通过以下方法实现的:选择不会使存储器单元在第二遍编程期间被编程为错误的阈值电压的编码方案,或根据不会使单元被编程为错误状态的替代性数据来编程存储器单元。

权利要求 :

1.一种对非易失性存储器单元进行编程的方法,所述非易失性存储器单元存储数据作为其电荷存储元件中对应的不同电荷电平,所述元件的所述电荷存储电平在所述编程之前处于一重置电荷存储电平分布,所述方法包括:在至少两遍编程中对所述电荷存储元件进行编程,其中在一第一遍编程期间,将所述元件中的选定元件编程为一第一存储电平分布,且在一随后的第二遍编程期间,将所述处于重置电荷存储电平分布的所述元件中的选定元件编程为一第二存储电平分布,并将处于所述第一存储电平分布的所述元件中的选定元件编程为一第三存储电平分布,所述第二存储电平分布处于所述重置与所述第一存储电平分布之间,所述第一存储电平分布处于所述第二和第三存储电平分布之间;

其中当在所述第二遍编程期间没有足够的主机数据对所述元件中的至少一者进行编程而所述至少一个元件在所述第一遍编程期间已被编程为所述第一存储电平时,所述编程使得在所述第二遍编程之后所述至少一个元件的所述电荷存储电平低于所述第三存储电平分布的所述电荷存储电平。

2.根据权利要求1所述的方法,其中所述编程包括将主机数据载入一数据缓冲器中,和根据所述数据缓冲器中的所述数据将电压耦合到所述元件以将所述元件编程为选定的存储电平,所述编程进一步包括在所述第一遍编程之后将数据载入所述数据缓冲器中,使得在所述元件中,在所述数据缓冲器中没有对应的主机数据的那些元件在所述第二遍编程期间不会被编程。

3.根据权利要求2所述的方法,其中在所述第一遍编程之后载入所述数据缓冲器中的所述数据不是来自一主机。

4.根据权利要求2所述的方法,其中在所述第一遍编程之后载入所述数据缓冲器中的所述数据对应于所述重置电荷存储电平分布。

5.根据权利要求2所述的方法,其中在所述第一遍编程之后载入所述数据缓冲器中的所述数据使得在所述数据缓冲器中没有对应数据的所述元件的编程在所述第二遍编程期间被禁止。

6.根据权利要求2所述的方法,其中通过并非单独控制的感测电路来编程在所述数据缓冲器中没有对应主机数据的所述元件的所述电荷存储电平和在所述数据缓冲器中具有对应主机数据的所述元件的所述电荷存储电平。

7.根据权利要求2所述的方法,其中所述元件被分为复数个群组,且复数个旗标电荷存储单元中的每一者均用于存储旗标数据,所述旗标数据指示所述复数个群组中的一对应群组的所述元件是否已在所述第二遍编程中被编程,所述方法进一步包括:读取存储在所述复数个群组元件中的存储电平,其中通过将不同的读取电压耦合到所述元件来读取存储在所述群组之一中至少某些所述元件中的每一个中的所述存储电平以获得复数个读取值;

将所述复数个读取值存储在存储器件中;和

根据存储在对应于所述群组之一的所述旗标电荷存储单元中的所述旗标数据而仅选择所述复数个读取值中的一者来表示存储在所述至少某些元件中的每一者中的主机数据。

8.根据权利要求7所述的方法,其中所述元件被分为复数个群组,且每一群组包括至少一个用于存储旗标数据的旗标电荷存储单元,所述旗标数据指示所述群组的元件是否已在所述第二遍编程中被编程,在所述复数个群组的至少两者中的所述元件由一共用字线控制,其中所述读取是读取所述旗标电荷存储单元中存储的所述旗标数据,使得在所述旗标数据指示在所述至少两个群组的一第一群组中的所述元件已在所述第二遍编程中被编程且所述至少两个群组的一第二群组中的所述元件在所述第二遍编程中未被编程时,所述读取是通过将不同序列的读取电压耦合到所述第一和第二群组中的所述元件来读取存储在所述第一和第二群组的元件中的存储电平。

9.根据权利要求8所述的方法,其中由所述第一和第二群组中所述元件中的每一者的存储电平表示的数据包括二进制值的至少一第一和一第二变量的一有序集合,所述有序集合也用于对所述元件进行编程,其中在所述第一遍编程期间所述元件将被编程达到的所述存储电平是根据所述第一变量的至少一值来确定的,且在所述第二遍编程期间所述元件将被编程达到的所述存储电平是根据所述第二变量的至少一值来确定的,且其中所述读取仅将一个读取电压耦合到所述第一群组中的元件以提供由所述存储电平表示的所述第一变量的值,并将两个不同的读取电压耦合到所述第二群组中的元件以提供由所述存储电平表示的所述第一变量的值。

10.根据权利要求8所述的方法,其中所述读取是读取对应于所述至少两个群组的所述旗标电荷存储单元中存储的所述旗标数据,使得当所述旗标数据指示由所述共用字线控制的所述元件中的某些但不是全部元件已在所述第二遍编程中被编程时,分配更多时间以用于所述第二遍编程中未被编程元件的所述读取。

11.根据权利要求10所述的方法,其中所述旗标电荷存储单元沿所述字线定位,以指示沿所述字线的所述复数个群组中所述至少两者的元件是否已在所述第二遍编程期间被编程,且当所述旗标数据指示由所述字线控制的所述群组中的一个或一个以上群组在所述第二遍编程期间未被编程时,以一方式产生一忙信号以在将要读取在所述第二遍编程中未被编程的元件时向一用户指示预期要更多的等待时间。

12.根据权利要求2所述的方法,其中由所述元件中每一者的存储电平表示的数据包括二进制值的至少一第一和一第二变量的一有序集合,所述有序集合也用于对所述元件进行编程,其中在所述第一遍编程期间所述元件将被编程达到的所述存储电平是根据所述第一变量的至少一值来确定的,且在所述第二遍编程期间所述元件将被编程达到的所述存储电平是根据所述第二变量的至少一值来确定的,所述方法进一步包括:通过将不同的读取电压耦合到所述元件来读取所述元件的存储电平以提供由所述存储电平表示的所述第二变量的值,其中对于一第一读取电压,所述第二变量的一第一值指示在所述读取期间所述元件中的电流低于一阈值,且所述第二变量的一第二值指示在所述读取期间所述元件中的电流高于所述阈值,且对于一第二读取电压,所述第二变量的所述第一值指示在所述读取期间所述元件中的电流高于所述阈值,且所述第二变量的所述第二值指示在所述读取期间所述元件中的电流低于所述阈值。

13.根据权利要求12所述的方法,其中所述第一读取电压位于所述重置电荷存储电平与所述第二存储电平之间,且所述第二读取电压位于所述第一与第三存储电平之间。

14.根据权利要求2所述的方法,其中所述元件被分为复数个群组,且复数个旗标电荷存储单元中的每一者均用于存储旗标数据,所述旗标数据指示所述复数个群组中的一对应群组的所述元件是否已在所述第二遍编程中被编程,所述方法进一步包括:以高速缓冲存储器时序读取存储在所述复数个群组元件中的存储电平,所述高速缓冲存储器时序包括伪时间周期,其中用于读取在所述第二遍编程中未被编程的所述群组之一中所述元件中存储的所述存储电平的所述伪时间周期长于用于读取已在所述第二遍编程中被编程的所述群组中另一者中的所述元件中存储的所述存储电平的所述伪时间周期。

15.根据权利要求2所述的方法,其中所述元件被分为复数个群组,每一群组包括至少一个旗标电荷存储单元用于存储旗标数据,所述旗标数据指示所述群组的元件是否已在所述第二遍编程中被编程,所述复数个群组中的至少两者由一共用字线控制,所述方法进一步包括:当所述第二遍编程期间存在足够的主机数据对所述至少两个群组的至少一者但不是全部进行编程时,存储或改变所述至少两个群组中的所述旗标电荷存储单元中的至少一者中的旗标数据以指示所述主机数据的一边界。

16.根据权利要求15所述的方法,其中所述至少两个群组中的两个群组彼此相邻定位,其中所述两个相邻群组中的一第一群组中的所述元件已在所述第二遍编程中被编程,且所述两个邻近群组中的第二群组中的所述元件在所述第二遍编程中未被编程,且其中所述存储是将旗标数据存储在所述两个相邻群组的所述旗标电荷存储单元中的至少一者中,使得存储在所述第一群组的所述旗标电荷存储单元中的所述旗标数据不同于存储在所述第二群组的所述旗标电荷存储单元中的所述旗标数据,以指示所述主机数据边界位于所述两个相邻群组之间。

17.根据权利要求1所述的方法,其中所述编程包括将主机数据载入一数据缓冲器中,和根据所述数据缓冲器中的所述数据将电压耦合到所述元件以根据一编码方案将所述元件编程为选定的存储电平分布,所述编码方案使得在所述元件中,编程电压在所述第二遍编程期间不会耦合到在所述数据缓冲器中没有对应主机数据的所述元件。

18.根据权利要求17所述的方法,其中所述编码方案不是灰度格雷码。

19.根据权利要求17所述的方法,其中由所述元件中每一者的存储电平表示的数据包括二进制值的至少一第一和一第二变量的一有序集合,所述有序集合也用于对所述元件进行编程,其中在所述第一遍编程期间所述元件将被编程达到的所述存储电平是根据所述第一变量的至少一值来确定的,且在所述第二遍编程期间所述元件将被编程达到的所述存储电平是根据所述第二变量的至少一值来确定的,且其中所述编码方案使得表示所述重置电荷存储电平和第一电荷存储电平的所述第二变量的值是相同的。

20.根据权利要求19所述的方法,其进一步包括通过将三个不同的读取电压循序耦合到所述元件来读取存储在所述元件中的存储电平以获得所述第二变量的一值。

21.根据权利要求1所述的方法,其中所述编程包括将主机数据载入一数据缓冲器中,和根据所述数据缓冲器中的所述数据将电压耦合到所述元件以根据一编码方案将所述元件编程为选定的存储电平,所述编码方案使得在所述元件中,在所述数据缓冲器中没有对应主机数据的所述元件的电荷存储电平在所述第二遍编程之后低于所述第三存储电平分布的所述电荷存储电平。

22.根据权利要求21所述的方法,其中对在所述数据缓冲器中没有对应主机数据的所述元件附近的元件的所述编程由于场效耦合而使得在所述数据缓冲器中没有对应主机数据的所述元件的所述电荷存储电平具有一不同于所述第一存储电平分布的分布。

23.根据权利要求21所述的方法,其中所述编码方案不是格雷码。

24.根据权利要求21所述的方法,其中由所述元件中每一者的存储电平表示的数据包括二进制值的至少一第一和一第二变量的一有序集合,所述有序集合也用于对所述元件进行编程,其中在所述第一遍编程期间所述元件将被编程达到的所述存储电平是根据所述第一变量的至少一值来确定的,且在所述第二遍编程期间所述元件将被编程达到的所述存储电平是根据所述第二变量的至少一值来确定的,且其中所述编码方案使得表示所述重置电荷存储电平和第一电荷存储电平的所述第二变量的值是相同的。

25.根据权利要求24所述的方法,其进一步包括通过将三个不同的读取电压循序耦合到所述元件来读取存储在所述元件中的存储电平以获得所述第二变量的一值。

说明书 :

技术领域

本发明一般涉及例如电可擦可编程只读存储器(EEPROM)和快闪EEPROM的非易失性半导体存储器,且特定来说涉及具有改进的部分页编程能力的非易失性半导体存储器。

背景技术

能够进行电荷的非易失性存储的固态存储器,尤其是封装成较小的形状因数(formfactor)卡的EEPROM和快闪EEPROM的形式的固态存储器,目前已经变成多种移动和手持设备、特别是信息家电和消费型电子产品中选择的存储器。嵌入式与具有可拆卸卡的形式的快闪存储器由于其小尺寸、低功耗、高速和高可靠性特征而理想地适用于移动和手持环境中。
EEPROM利用在场效晶体管结构中位于一半导体衬底中源极区与漏极区之间的沟道区上的浮动(未连接)导电栅。然后在所述浮动栅上提供一控制栅。晶体管的阈值电压特性由浮动栅上保留的电荷量控制。也就是说,对于浮动栅上的给定电平的电荷,具有在晶体管“开启”之前必须施加到控制栅的对应电压(阈值)以允许其源极区与漏极区之间的导通。
浮动栅可保持一电荷范围,因此可被编程为阈值电压窗内的任意阈值电压电平。阈值电压窗的尺寸由器件的最小和最大阈值电平划定界限,所述最小和最大阈值电压又对应于可编程到浮动栅上的电荷的范围。阈值窗一般取决于存储器器件的特性、操作条件和记录而定。窗内的每一独特的、可分辨的阈值电压电平范围原则上可用于指定单元的明确的存储器状态。
通常通过两种机制中的一种将用作存储单元的晶体管编程为“已编程”的状态。在“热电子注入”中,施加到漏极的高电压加速了通过衬底沟道区的电子。同时,施加到控制栅的高电压将热电子牵拉穿过一薄的栅极电介质而到达浮动栅上。在“隧穿注入(tunneling injection)”中,相对于衬底将一高电压施加到控制栅。这样,电子从衬底被牵拉到插入的浮动栅。
存储器件可通过许多机制来擦除。对于EEPROM,通过相对于控制栅将一高电压施加到衬底以诱导浮动栅中的电子隧穿一薄氧化物而到达衬底沟道区(即,Fowler-Nordheim隧穿),存储单元可电擦除。通常,EEPROM可逐字节地擦除。对于快闪EEPROM,存储器可同时电擦除所有区块或每次电擦除一个或一个以上区块,其中一个区块可由512个字节或更多存储器组成。
非易失性存储器单元的实例
存储器件通常包括一个或一个以上可安装在卡上的存储器芯片。每一存储器芯片包括由外围电路(例如解码器以及擦除、写入和读取电路)支持的存储器单元的阵列。更复杂的存储器件还带有执行智能和较高级的存储器操作和接口连接的控制器。目前使用的有许多商业上成功的非易失性固态存储器器件。这些存储器器件可使用不同类型的存储器单元,每一类型都具有一个或一个以上存储元件。
图1A至图1E示意性说明非易失性存储器单元的不同实例。
图1A示意性说明具有用于存储电荷的浮动栅的EEPROM单元形式的非易失性存储器。电可擦可编程只读存储器(EEPROM)具有类似于EPROM的结构,但额外提供一种机制,用于在不需要曝露至UV辐射的情况下在施加适当电压下从其浮动栅电载入和移除电荷。在美国专利第5,595,924号中给出制造这些存储器的这些单元和方法的实例。
图1B示意性说明具有一选择栅和一控制或导引栅的快闪EEPROM单元。存储器单元10具有一位于源极14与漏极16扩散部分之间的“分沟道(split-channel)”12。由串联的两个晶体管T1和T2有效地形成一单元。T1用作存储器晶体管,其具有浮动栅20和控制栅30。浮动栅能够存储可选量的电荷。可流过沟道的T1部分的电流量取决于控制栅30上的电压和驻存在介入浮动栅20上的电荷量。T2用作具有选择栅40的选择晶体管。当T2由选择栅40处的电压开启时,其允许沟道的T1部分中的电流在源极与漏极之间通过。选择晶体管提供沿着源极-漏极沟道的独立于控制栅处的电压的切换。一个优点是其可用于关断那些由于其浮动栅处的电荷耗尽(正)而在零控制栅电压下仍然导通的单元。另一优点是其允许源极侧注入编程更容易实施。
分沟道存储器单元的一个简单的实施例是选择栅与控制栅连接到相同的字线,如图1B中虚线示意性指示。这是通过将一电荷存储元件(浮动栅)定位在沟道的一个部分上并将一控制栅结构(字线的一部分)定位在另一沟道部分上以及所述电荷存储元件上来完成。这有效地形成具有串联的两个晶体管的单元,其中具有电荷存储元件上的电荷量与字线上的电压的组合的一个晶体管(存储器晶体管)控制可流过其沟道的部分的电流量,且单独具有字线的另一晶体管(选择晶体管)用作其栅极。在美国专利第5,070,032号、第5,095,344号、第5,315,541号、第5,343,063号和第5,661,053号中给出这些单元的实例、它们在存储器系统中的使用和它们的制造方法。
图1B中展示的分沟道单元的更精细的实施例是选择栅与控制栅是独立的且没有由其之间的虚线连接的情况。一种实施方案是将在一单元阵列中的一列控制栅连接到垂直于字线而行进的控制(或导引)线。其作用是在读取或编程选定单元时使字线不必同时执行两种功能。这两种功能是:(1)用作选择晶体管的栅极,因此需要适当的电压来开启和关断选择晶体管;和(2)通过耦合在字线与电荷存储元件之间的电场(电容性)将电荷存储元件的电压驱动到所需电平。常难以用单个电压以最佳方式执行这两种功能。通过控制栅与选择栅的单独控制,字线仅需要执行功能(1),而添加的控制线执行功能(2)。这种能力允许设计较高性能的编程,其中编程电压适合目标数据。例如在美国专利第5,313,421号和第6,222,762号中描述在快闪EEPROM阵列中使用独立的控制(或导引)栅。
图1C示意性说明具有双浮动栅和独立的选择与控制栅的另一快闪EEPROM单元。除了有效地具有串联的三个晶体管之外,存储器单元10类似于图1B的存储器单元。在这种类型的单元中,两个存储元件(即,T1-左和T1-右的存储元件)包括在源极与漏极扩散部分之间的单元的沟道上,其之间具有选择晶体管T1。存储器晶体管分别具有浮动栅20与20′,和控制栅30与30′。选择晶体管T2由选择栅40控制。在任意时间,仅存取所述成对存储晶体管中的一个以用于读取或写入。当存取存储单元T1-左时,T2与T1-右开启以允许沟道的T1-左的部分中的电流在源极与漏极之间通过。类似地,当存取存储单元T1-右时,T2和T1-左开启。通过使选择栅多晶硅的一部分紧密接近浮动栅并将一实质上为正的电压(例如20V)施加到选择栅以使得存储在浮动栅内的电子可隧穿到选择栅多晶硅来实现擦除。
图1D示意性说明组织成NAND单元的一串存储器单元。NAND单元50由一系列由其源极和漏极菊链(daisy-chain)的存储器晶体管M1、M2、...、Mn(n=4,8,16或更大)组成。一对选择晶体管S1、S2控制所述存储晶体管链通过NAND单元的源极端子54和漏极端子56与外部的连接。在一存储器阵列中,当源极选择晶体管S1开启时,源极端子耦合到一源极线。类似地,当漏极选择晶体管S2开启时,NAND单元的漏极端子耦合到存储器阵列的位线。链中的每一存储器晶体管具有一电荷存储元件以存储给定量的电荷以便表示希望的存储器状态。每一存储晶体管的控制栅提供对读取和写入操作的控制。选择晶体管S1、S2中的每一者的控制栅提供分别通过NAND单元的源极端子54和漏极端子56对NAND单元的控制存取。
当编程期间读取和校验一NAND单元内的已定址的存储器晶体管时,向其控制栅供应适当电压。同时,通过在其控制栅上施加足够电压而使NAND单元50中的剩余的未定址的存储器晶体管完全开启。这样,从个别存储器晶体管的源极到NAND单元的源极端子54有效地建立了导通路径,同样对于个别存储晶体管的漏极到单元的漏极端子56也是如此。在美国专利第5,570,315号、第5,903,495号、第6,046,935号中描述具有这些NAND单元结构的存储器器件。
图1E示意性说明具有用于存储电荷的介电层的非易失性存储器。代替上述的导通浮动栅元件,介电层的分隔区域用作电荷存储元件。在2000年11月Eitan等人在IEEEElectron Device Letters第21卷第11号第543-545页的“NROM:A Novel Localized Trapping,2-Bit Nonvolatile Memory Cell”中描述了利用介电存储元件的这些存储器器件。ONO介电层延伸越过源极与漏极扩散部分之间的沟道。用于一个数据位的电荷停留在邻近漏极的介电层中,且用于另一数据位的电荷停留在邻近源极的介电层中。举例来说,美国专利第5,768,192号和第6,011,725号揭示了具有夹在两个二氧化硅层之间的捕集电介质(trapping dielectric)的非易失性存储器单元。通过单独读取所述电介质内的空间上分离的电荷存储区来实施多状态数据存储。
存储器阵列
存储器阵列通常含有配置成行与列且可通过字线和位线定址的二维存储器单元阵列。所述阵列可根据NOR型或NAND型架构而形成。
NOR阵列
图2说明NOR存储器单元阵列的实例。已用图1B或图1C中所说明类型的单元来实施具有NOR型架构的存储器器件。每一行存储器单元通过其源极和漏极以菊链方式连接。有时将这种设计称为虚拟接地(virtual ground)设计。每一存储器单元10具有源极14、漏极16、控制栅30和选择栅40。一行中的单元的选择栅连接到字线42。一列中的单元的源极和漏极分别连接到选定的位线34和36。在存储单元的控制栅和选择栅独立受控的某些实施例中,导引线36还连接一列中的单元的控制栅。
许多快闪EEPROM器件是用存储器单元来实施,其中每一存储器单元由其连接在一起的控制栅与选择栅形成。在这种情况下,不需要导引线,且一字线仅连接单元的沿每一行的所有控制栅和选择栅。在美国专利第5,172,338号和第5,418,752号中揭示这些设计的实例。在这些设计中,字线本质上执行两种功能:行选择和将控制栅电压供应到行中的所有单元以用于读取或编程。
NAND阵列
图3说明例如图1D中所示的NAND存储器单元阵列的实例。沿着每一列NAND单元,一位线耦合到每一NAND单元的漏极端子56。沿着每一行NAND单元,一源极线可连接其所有源极端子54。沿着一行的NAND单元的控制栅也连接到一系列的对应字线。通过经由连接的字线对其控制栅使用适当电压开启成对的选择晶体管(见图1D)可定址一整行NAND单元。当读取一NAND单元的链内的存储器晶体管时,所述链中的剩余存储器晶体管经由其关联的字线而硬开启,使得流过所述链的电流本质上取决于正读取的单元中存储的电荷的电平。在美国专利第5,570,315号、第5,774,397号和第6,046,935号中可找到NAND架构阵列的实例及其作为存储器系统的部分的操作。
区块擦除
电荷存储的存储器器件的编程仅可导致对其电荷存储元件添加更多电荷。因此,在编程操作之前,必须移除(或擦除)电荷存储元件中的现有电荷。提供擦除电路(未图示)以擦除存储器单元中的一个或一个以上区块。在对整个单元阵列或阵列的单元的重要群组一起电擦除(即,在一快闪中)时,将例如EEPROM的非易失性存储器称为“快闪”EEPROM。一旦被擦除,那么可对单元的群组重新编程。可一起擦除的单元群组可由一个或一个以上可定址擦除单元组成。擦除单元或区块通常存储一页或一页以上的数据,所述页是编程和读取的单位,尽管在单一操作中可编程或读取多于一页。每一页通常存储一个或一个以上扇区的数据,所述扇区的尺寸由主机系统界定。一实例是遵循以磁盘驱动器建立的标准的具有512个字节用户数据的扇区,加上一定数目字节的关于用户数据和/或其存储的区块的耗用信息。
读取/写入电路
在一般的双态EEPROM单元中,建立至少一个断点电平以将导通窗划分为两个区域。通常使用“电流”感测或“电压”感测来确定单元相对于断点的状态。使用电流感测时,通过施加预定的固定电压到其栅极、源极和漏极来读取单元,并将所得电流与一绝对值比较或与从一类似单元获得的值比较,所述类似单元的阈值已有意地设置成两个极端状态之间的一中间值。如果电流读取值高于断点电平的值,就将所述单元确定为处于一个逻辑状态(例如“零”状态)。另一方面,如果电流小于断点电平的值,就将所述单元确定为处于另一逻辑状态(例如“一”状态)。因此,这种双态单元存储一位的数字信息。常提供可外部编程的参考电流源作为存储器系统的一部分,以产生断点电平电流。
为增加存储器容量,随着半导体技术状态的发展,将快闪EEPROM器件制造为具有越来越高的密度。增加存储容量的另一方法是使每一存储器单元存储多于两种状态。
对于多状态或多电平EEPROM存储器单元,通过多于一个断点将导通窗划分为多于两个区域,使得每一单元能够存储多于一位的数据。因此一给定的EEPROM阵列可存储的信息随着每一单元可存储的状态的数目的增加而增加。在美国专利第5,172,338号中已描述具有多状态或多电平存储器单元的EEPROM或快闪EEPROM。
在实践中,通常通过感测当将一读取电平施加到控制栅时越过单元的源极和漏极电极的导通电流来读取单元的存储状态。因此,对于单元的浮动栅上的每一给定电荷,可检测对应的相对于固定基准控制栅电压的导通电流。类似地,可编程到浮动栅上的电荷的范围界定一对应的阈值电压窗或对应的导通电流窗。
或者,代替检测已划分的电流窗中的导通电流(电流感测),可在控制栅处设置被测给定存储器状态的阈值电压,并检测导通电流是否低于或高于一阈值电流(电压感测)。在一个实施方案中,通过检查导通电流通过位线的电容放电的速率来完成导通电流相对于一阈值电流的检测,如果单元被编程(相对于栅极电压的一较高阈值),那么放电电流将很小,使得位线的相对大的电容将不会显著放电,且读出放大器将返回“0”状态。
美国专利第4,357,685号揭示对双态EPROM编程的方法,其中当一单元被编程为一给定状态时,每次将增加电荷添加到浮动栅时其经受连续的编程电压脉冲。在脉冲之间,读回或校验所述单元以确定其相对于断点电平的源极-漏极电流。当电流状态经校验为达到所需状态时,编程停止。所使用的编程脉冲列可具有增加的周期或振幅。
现有技术的编程电路仅施加编程脉冲以从擦除或接地状态逐步通过阈值窗,直到达到目标状态。实践中,考虑足够的分辨率,每一经划分或划出界限的区域将需要横穿至少约五个编程步骤。性能对于双态存储器单元是可接受的。然而,对于多状态单元,所需步骤的数目随着划分的数目的增加而增加,因此编程精度或解析度必须增加。举例来说,16态的单元可能平均需要至少40个编程脉冲来编程为目标状态。
存储器阵列100可通过读取/写入电路经由行解码器和列解码器来存取。如图2和图3所示,存储器阵列100中的存储器单元的存储器晶体管可经由一组选定的字线和位线来定址。行解码器选择一个或一个以上字线且列解码器选择一个或一个以上位线,以使将适当电压施加到已定址的存储器晶体管的各自栅极。提供读取/写入电路以读取或写入(编程)已定址的存储器晶体管的存储器状态。读取/写入电路包括许多读取/写入模块,所述模块可经由位线连接到阵列中的存储器元件。
在读取或校验期间,读出放大器确定流过经由选定的位线而连接的已定址存储器晶体管的漏极的电流。所述电流取决于存储在所述存储器晶体管中的电荷及其控制栅电压。举例来说,在一多状态EEPROM单元中,可将其浮动栅充电至若干不同电平中的一者。对于4电平单元,其可用于存储两位数据。读出放大器检测到的电平由一电平至位(level-to-bits)转换逻辑转换成一组将存储在数据锁存器中的数据位。
影响读取/写入性能和精度的因素
为改进读取和编程性能,一阵列中的多个电荷存储元件或存储器晶体管是并行读取或编程的。因此,存储器元件的逻辑“页”是共同读取或编程的。在现有的存储器架构中,一行通常含有若干交错的页。一页的所有存储器元件将共同读取或编程。列解码器将选择性地将交错页的每一者连接到对应数目的读取/写入模块。举例来说,在一种实施方案中,将存储器阵列设计为具有532字节(512字节加上20字节的耗用)的页尺寸。如果每一列含有一漏极位线且每行存在两个交错页,那么这总计为8512列,其中每一页关联于4256列。将存在可连接的4256个感测模块以并行地读取或写入所有的偶数位线或奇数位线。这样,从存储器元件的页读取4256位(即532字节)的并行数据的页或将其编程到存储器元件的页中。形成读取/写入电路的读取/写入模块可以各种架构配置。
在Raul-Adrian Cernea在2002年9月24日申请的序列号为10/254,483的题为“HighlyCompact Non-Volatile Memory and Method Thereof”的美国专利申请案中描述了高度紧凑型和高性能非易失性存储器和控制方法,所述申请案以全文引用的方式并入本文。
图4A和图4B说明对上述类型的阵列中的4状态NAND存储器单元编程的特定现有技术。这两幅图和随附的编程过程的描述是来自美国专利第6,522,580号,所述专利以全文引用的方式并入本文。
图4A和图4B展示上述类型的阵列中的4状态NAND存储器单元的阈值电压分布,其中所述阵列中的单元的浮动栅存储两位数据,即每一单元中有四个数据状态。曲线E表示阵列内单元的处于擦除状态(“11”数据状态)的阈值电平vT的分布,其为负的阈值电压电平。在对单元编程之前将单元设置成不同于上述擦除状态的状态作为单元的初始状态的情况下,如本申请案中使用的曲线E也表示这些状态,更一般来说,本文将包括擦除状态的所有这些状态称为“重置状态”。分别存储“10”和“00”用户数据的存储元件的阈值电压分布A和B展示为分别处于0伏特与1伏特之间以及1伏特与2伏特之间。曲线C展示已编程为“01”数据状态的存储器单元的分布,其为大于2伏特且小于4.5伏特读取通过电压的最高阈值电压电平。本文可交替地使用术语“用户数据”和“主机数据”。
存储在单一存储器单元中的两位中的每一者是来自不同的逻辑页,且可在不同时间编程。所述两位中的每一者承载彼此不同的逻辑页地址。存储在单一存储单元中的两位形成有序的一组或一对二进制值的变量(较重要位和较不重要位)。当输入下页地址时,存取用户或主机数据“11”、“10”、“00”和“01”中的较不重要位。当输入上页地址时,存取用户或主机数据中的较重要位。当存储的数据包括多于两位时,所述有序集合的存储值可包括多于两个变量。逻辑页指定不同于和存储器阵列中存储器单元的物理配置有关的偶数和奇数或交错页的指定。逻辑页的指定也可扩展到阈值窗被分为更精细划分的情况,以允许多于4个状态存储在单元中以使得每单元表示多于两个数据位,从而使用多于两个页,在此情况下可仅以数字方式提到所述页,例如第一、第二、第三页等等。
如以上所述,在编程操作之前,将存储器单元(本文也称为电荷存储元件)的一个或一个以上区块一起电擦除为擦除状态“11”。然后使用数据缓冲器中的用户或主机数据来设置电荷存储元件的电荷存储电平或阈值电平。在第一遍编程中,根据来自数据缓冲器中的下逻辑页的位来设置单元的阈值电平。如果所述位是“1”,那么不会完成任何事,因为所述单元由于已较早擦除而处于擦除状态。然而,如果所述位是“0”,那么所述单元的电平就增加到第一编程状态A。此结束遍第一编程。
在第二遍编程中,根据数据缓冲器中正存储的来自上逻辑页的位来设置单元的阈值电平。如果为“1”,那么不会进行编程,因为单元依照下页的位的编程而处于状态E或A中的一者,两种状态都承载是“1”的上页的位。然而如果上页的位为“0”,那么单元就会第二次编程。如果第一遍编程导致单元保持在擦除状态E,那么就将所述单元从所述状态编程为最高状态C,如图4B中的上箭头所示。然而,如果单元由于第一遍编程而已编程为状态A,那么在第二遍编程中将所述单元从所述状态进一步编程为状态B,如图4B中的下箭头所示。第二遍编程的结果是在不需要改变对下页的位的第一遍编程的结果的情况下将单元编程为指定存储来自上页的“0”的状态。
第二编程通过期间,在上页的位为“0”时,应根据图4B中的上箭头和下箭头将单元从擦除状态E编程为最高状态C,或从状态A编程为状态B。为确定是否应根据上箭头或下箭头进行编程,必须首先确定单元是处于状态E还是状态A。在某些器件中.这是通过已知为内部读取或内部数据载入的过程来执行的,其中对在第一遍编程期间已编程的单元进行读取以确定其阈值电平是对应于状态E还是状态A。
在Jian Chen和Yupin Fong的美国专利第5,867,429号中描述了上述类型的存储器阵列中单元的相邻浮动栅之间的场效耦合,所述专利以全文引用的方式并入本文。这种耦合的程度必定会随着存储器单元阵列的尺寸由于集成电路制造技术的改进而减小时增加。问题最显著地发生在不同时间编程的两组相邻单元之间。对一组单元进行编程以将对应于一组数据的一电平的电荷添加到浮动栅。在用第二组数据编程第二组单元之后,因为与第一组浮动栅耦合的第二组浮动栅上的电荷的效应,所以从第一组单元的浮动栅读取的电荷电平常表现为不同于所编程的电平。这种情况已知为Yupin效应。
在将随后编程的第二组单元的浮动栅编程为比第一组单元的浮动栅的阈值电平高得多的阈值电平时,上述Yupin效应尤其显著。从图4B观察到,在将第二组单元的浮动栅从擦除状态E编程为最高状态C时,因为阈值电压的改变相对较大,所以Yupin效应最显著。一种减小Yupin效应的方法是编程随后的字线之后将状态编程为其最终值。在Raul-Adrian Cernea等人在2002年9月6日申请的题为“Techniques for Reducing Effects ofCoupling Between Storage Elements of Adjacent Rows of Memory Cells”的美国专利申请案第10/237,426号中描述了这种方法,所述申请案以全文引用的方式并入本文。此申请案引入了每一页中的指示所述页的编程状态(中间或最终)的“旗标”单元的概念。
减小Yupin效应的另一方法是通过使用如Shibata等人的美国专利第6,657,891号中提出的对图4A和图4B中陈述的编码方案的替代性编码方案,所述专利以全文引用的方式并入本文。在图5A到图5C中展示Shibata等人提出的编码方案。在图5A到图5C中,设想可存在可由存储器单元的阈值电压电平表示的多于两个逻辑页的数据,出于这个原因,在图5A到图5C中将上述下逻辑页称为第一页,且将上述上逻辑页称为第二页。如前文所述,如果将写入存储单元的第一页数据为“1”,就不执行编程,且单元保持在擦除状态E。如果第一页数据为“0”,那么就执行编程,使得存储器单元的阈值电压上升到图5A中所示的分布或状态B′中的一者。这和图4A中的过程相反,其中第一页数据的“0”值将使单元被编程为状态A。如图5B中所示,在第二页数据用于编程单元之前,将数据写入邻近已编程为状态B′的存储器单元的存储器单元。在由于随后编程的相邻单元的浮动栅上的电荷引起Yupin效应后,如图5B中所示,阈值电压分布B′与图5A中的阈值电压分布相比变得更宽或更大。请注意,即使图5A的初始分布B′较宽,具值却一直低于图4A/B或图5C的最终分布B。
当写入第二页数据时,起初处于擦除状态E的单元被编程为状态A,且起初处于状态B′的单元被编程为状态C。这种编码方案具有减小在不同时间编程的相邻单元的电荷电平之间的电位差的作用,且因此也具有减小相邻浮动栅之间的场效耦合从而减小Yupin效应的作用。
虽然以上参看图5A和图5C描述的编码方案由于其减小了相邻浮动栅内的场效耦合而可比较有利,但是,当没有足够的用户数据来填充页时,使用这种编码方案可能将用户数据编程为错误的状态,如下文所解释。
某些非易失性存储器阵列每页可具有2048个字节。这意味着在一读取或写入操作中将2048个字节作为单个单位进行读取或编程。非易失性存储器系统的系统编程仍可将少于2048个字节(例如512个字节)处理为一个单位。因此,第一和第二(例如,下和上)页的每一者可含有许多扇区,例如四个扇区。换句话说,当一主机传送用户数据到存储器阵列时,在数据传送的末尾可能没有足够的用户数据来对页中的所有存储单元完全编程。因此,如果每一页具有2048个字节,那么可能仅有足够的数据填充第一页和第二页的一个、两个或三个扇区,但不能填充第二页的所有四个扇区。在存储器阵列中的一行存储器单元含有上述类型的交错页(其中偶数页含有由偶数位线控制的行中的所有存储器单元,且奇数页含有由奇数位线控制的行中的所有存储器单元)时,和在存储器阵列中的一行存储器单元含有一单个页时,就会发生这种情况。因此,如果将每一行的2048个存储器单元划分为两个交错页(例如奇数和偶数页),使得每一页含有1024个字节,那么可能仅有充足的或足够的数据来填充偶数或奇数第一页,和偶数或奇数第二页的扇区的一者但不是两者。通过图4A和图4B中说明的所述类型的编码方案,这不会产生问题。然而,在使用例如上述的图5A、图5B和图5C中所示的不同的编码方案时,这可变为下文说明的问题。
在图6A和图6B的实例中说明这个问题。在此实例中,存储器阵列中的一行含有16,384个存储单元以用于存储组成一页的2048个字节数据。将数据传送到存储器阵列或从存储器阵列传送数据的计算机主机系统在每一者具有512个字节的四个区块中如此实施。因此,如图6A中说明,将阵列中的存储器单元的行划分或分组成四个扇区或群组112、114、116和118,每一群组中的每一单元存储数据的第一(下)页和第二(上)页。如下文中所使用,可互换地使用术语“扇区”和“群组”。如图6A所示,存在足够的主机数据填充第一页或下页,使得四个第一页或下页扇区标记为“L”以如此指示。在待编程的用户或主机数据的区块的末尾,可能仅有足够的数据用于编程下页或第一页的四个扇区,和图6A中标记为“U”以如此指示的群组112中单元的第二页或上页的仅第一扇区,使得不留下任何数据以用于编程图6A的扇区或群组114、116和118中单元的上页或第二页,其中这些是没有标记“U”来如此指示的留下的空白。
在用户数据用于编程不同群组中的存储器单元之前,首先将数据载入对应的数据缓冲器或锁存器中(见图7、图8A和图8B)。存储在数据锁存器中的用户数据然后用于编程存储器单元。图6B是说明用于存储第一页和第二页的四个数据区块112′、114′、116′和118′的数据锁存器的功能的功能方框图,所述四个数据区块用于编程图6A的存储器单元的四个对应扇区或群组112、114、116和118。在区块擦除之后且在用户或主机数据载入数据锁存器以用于编程四个群组中的单元之前,所有的数据锁存器初始载入“1”。在以上实例中,用户数据仅足够用于编程存储器单元的四个群组的下页或第一页和仅群组112中单元的上页。因此,如图6B所说明,用于存储数据区块114′、116′和118′的数据锁存器的上页或第二页已全部载入“1”并持续含有“1”。如图6B所示,举例来说,视载入三个数据区块114′、116′和118′中的下页或第一页内的用户数据而定,在三个扇区中的数据锁存器中的数据具有值“11”时,某些存储器单元(例如用数据130′、132′、134′、136′和138′编程的存储器单元)不会被编程。然而,在三个区块114′、116′和118′中的数据具有值“10”(例如数据122′、124′、126′和128′)时,扇区或群组114、116和118中的对应的存储器单元将被编程,直到阈值电压或存储电平对应于根据编码方案的状态“10”。
然后当随后载入另一区块的用户或主机数据以替换存储区块114′、116′和118′的数据锁存器中的缺省值“1”时,这些数据通常不会全部为值“1”,而是将含有一些为“0”的值。因此,对于群组114、116和118中的已编程为状态“10”的某些存储器单元(例如具有数据122′-128′的单元),如果随后区块的用户或主机数据将“0”而不是“1”作为第二页或上页数据载入这些存储器单元的相应数据锁存器中,那么这些单元可能需要替代地编程为状态“00”。从图5C观察到,状态“10”存储电平为最高电平C。因为现有的编程技术不允许个别存储器单元的存储电平的阈值电压减小,除了区块擦除操作之外,所以如果使用图5A到图5C的编码方案,那么将这些存储器单元从状态“10”重新编程为状态“00”将是不可行的,此导致将单元编程为错误的状态。本文将此称为使用图5A到图5C的编码方案时的部分页编程问题。

发明内容

发明者认识到,即使在第一遍编程中将某些存储单元编程为比常规编码方案下的状态更高的状态(例如状态B)以减小Yupin效应,在非易失性半导体存储器系统经设计以防止在没有足够的主机数据时存储器单元或电荷存储元件在第二遍编程期间被编程为错误状态(例如最高状态)时,以上的部分页编程问题仍可完全避免。举例来说,这些较高状态(由于第一遍编程)中的元件可以一方式在第二遍编程期间编程,使得使其处在电荷电平仍低于一更高的错误状态(例如最高状态)的状态中。以此方式,由于上述部分页编程问题,因此将妨碍根据随后的主机或用户数据对存储器单元进行的编程。
在一个实施例中,可通过将适当数据载入数据锁存器以用于对第一遍编程之后但在第二遍编程之前没有足够的上页或第二页数据的单元进行编程来完成以上结果,从而在第二编程期间被编程时,编程电压不会耦合到处于较高状态(由于第一遍编程)的元件或单元。在另一实施例中,这可通过稍微地改变图5C中所说明的编码方案以使得不会发生部分页编程问题而实现。
根据本发明的另一方面,用于存储旗标数据的旗标单元可用于指示主机或用户数据的边界,例如主机或用户数据的末尾,使得部分编程问题不会导致错误结果。在一个实施例中,元件分组为复数个扇区或群组,每一群组包括至少一个对应的旗标电荷存储单元以用于存储旗标数据,其中所述旗标数据指示在没有足够的主机数据时所述群组的元件是否已在第二遍编程中编程。所述复数个群组的至少两者由一共用字线控制。当在第二遍编程期间存在足够的主机数据对所述至少两个群组中的至少一者但不是全部进行编程时,旗标数据被存储在所述至少两个群组中的旗标电荷存储单元中的至少一者中,或者存储在所述旗标单元中的旗标数据经改变以指示主机数据的边界。

附图说明

图1A到图1E示意性说明非易失性存储器单元的不同实例。
图2说明NOR存储器单元阵列的实例。
图3说明例如图1D中所示的NAND存储器单元阵列的实例。
图4A和图4B是说明对图3的存储器单元阵列进行编程的现有技术的电压阈值电平分布。
图5A到图5C是说明对图3的存储器单元阵列进行编程的另一现有技术的电压阈值电平分布。
图6A是有用于说明部分页编程问题的一行存储器单元的示意图。
图6B是有用于说明部分页编程问题的用于对图6A中的存储器单元进行编程的四个数据区块的概念图。
图7是划分为一核心部分和一共用部分以说明本发明的一个实施例的个别读取/写入模块的示意性方框图。
图8A示意性说明有用于说明本发明的一个实施例的具有经划分的读取/写入堆叠的库的紧凑型存储器器件。
图8B说明图7所示的紧凑型存储器器件的另一配置。
图9是图7的读取/写入模块的组件的示意性方框图,其更详细地展示其操作以说明本发明的一个实施例。
图10A和图10B是说明本发明的一个实施例的电压阈值电平分布和用于读取存储器单元的电压阈值电平的技术的图解说明。
图11A和图11B是陈述第一和第二(下和上)页的读取的表格,其有用于说明图10A和图10B中所说明的电压阈值电平的读取方法。
图12是说明本发明的替代实施例的一编码方案的电压阈值电平分布和相关值的图解说明。
出于简明和描述目的,在本申请案中相同的组件由相同的数字来标记。

具体实施方式

实例非易失性存储器系统
图7是根据本发明优选实施例的划分为核心部分210和共用部分220的个别读取/写入模块200的示意性方框图。核心部分210包括读出放大器212,其确定连接的位线211中的导通电流是否高于或低于一预定阈值电平。如以上所述,连接的位线211实现对一阵列中已定址的存储器单元的漏极的存取。
在一个实施例中,核心部分210还包括位线锁存器214。所述位线锁存器用于在连接的位线211上设置一电压条件。在一种实施方案中,锁存在位线锁存器中的预定状态将导致连接的位线211被牵拉到指定编程禁止的状态(例如Vdd)。如以下所述,这种特征用于编程禁止。
共用部分220包括处理器222、一组数据锁存器224和耦合在所述组数据锁存器224与数据总线231之间的I/O接口226。处理器222执行计算。举例来说,其一个功能是确定感测的存储器单元的存储状态并将预定数据存入所述组数据锁存器中。如背景部分所解释,存储器单元可保持一电荷范围,且因此可编程为阈值电压窗内的任何阈值电压电平(即,刚好使单元开启至预定导通电流的控制栅电压)。所述组的数据锁存器224用于存储由处理器从读出放大器在读取操作期间读出的电流而确定的数据位。其还用于存储在编程操作期间来自一主机(未图示)的从数据总线231输入的用户数据位。输入的数据位表示将被编程入存储器的写入数据。I/O接口226在所述组的数据锁存器224与数据总线231之间提供一接口。
在读取或感测期间,操作处于一状态机(未图示)的控制下,所述状态机主要控制对已定址单元供应不同的控制栅电压,引导处理器适当载入各种数据锁存器,和激励读出放大器。随着其逐步通过对应于存储器所支持的各种存储器状态的各种预定控制栅电压,读出放大器212将跳变到这些电压中的一者处。在所述点处,处理器222通过考虑读出放大器的跳变事件和与经由输入线223而从状态机施加的控制栅电压相关的信息来确定所得的存储器状态。其随后计算存储器状态的二进制编码并将所得的数据位存入所述组的数据锁存器224中。状态机与模块200中的所有电路区块通信。
SA/位线锁存器214也可用于双重用途,其可用作用于锁存读出放大器212的输出的锁存器,也可用作结合图7而描述的位线锁存器。因此,其可由读出放大器来设置或由处理器来设置。在一优选实施方案中,来自SA/位线锁存器214的信号由一驱动器(未图示)驱动以设置选定位线211的电压。
参看图7,在编程或校验期间,将待编程的数据从数据总线231输入所述组的数据锁存器224中。在状态机控制下的编程操作包括施加到已定址单元的控制栅的一系列编程电压脉冲。每一编程脉冲随后是一读回,以确定单元是否被编程为所需的存储器状态。处理器222监视相对于所需存储器状态的读回存储器状态。当两者一致时,处理器222设置位线锁存器214以促使将位线牵拉到指明编程禁止的状态。这禁止了耦合到所述位线的单元进一步编程,即使编程脉冲出现在其控制栅上。
I/O接口226使数据可传输入或传输出所述组的数据锁存器224。如图8A和图8B中所见,在存储器器件上并行地使用读取/写入模块的区块以一次读取或编程一数据区块。通常读取/写入模块的区块具有其单个组的数据锁存器,所述数据锁存器经组合以形成一移位寄存器,使得所述读取/写入模块的区块所锁存的数据可以串行方式传送出去,到达数据总线231。类似地,用于读取/写入模块的区块的编程数据可从数据总线231以串行方式输入并锁存入各自组的数据锁存器中。
紧凑型读取/写入电路
对于并行操作的读取/写入模块的区块,本架构的一个显著特征是将每一模块划分为一核心部分和一共用部分.和使核心部分的区块与实质较少数目的共用部分操作和共享。这种架构允许在单个读取/写入模块之间提取出重复的电路,从而节省空间和功率。在高密度存储器芯片设计中,空间的节省可以多达存储器阵列的整个读取/写入电路的百分之五十。这允许读取/写入模块被密集封装,使得其可同时服务存储器阵列的邻接的行的存储单元,从而可同时编程或读取所述行中的所有单元。
图8A示意性说明根据本发明一个实施例的具有经划分的读取/写入堆叠的库的紧凑型存储器器件。所述存储器器件包括二维存储单元阵列300、控制电路310和读取/写入电路370。存储器阵列300可通过行解码器330由字线定址,且可通过列解码器360由位线定址。读取/写入电路370实施为经划分的读取/写入堆叠400的库,且允许并行地读取或编程存储器单元区块。在一个实施例中,在一行存储器单元被划分为多个区块时,提供区块多路转接器350以将读取/写入电路370多路转接到个别区块。读取/写入堆叠400中的通信受堆叠总线影响且由堆叠总线控制器430控制。
控制电路310与读取/写入电路370协作以执行存储器阵列300上的存储器操作。控制电路310包括状态机312、芯片上地址解码器314和功率控制模块316。状态机312提供芯片级存储器操作控制。芯片上地址解码器314在主机或存储器控制器所使用的硬件地址与解码器330和370所使用的硬件地址之间提供一地址接口。功率控制模块316在存储器操作期间控制供应到字线和位线的功率和电压。
图8B说明图8A中所示的紧凑型存储器器件的优选布置。以对称方式在阵列的相对侧通过各种外围电路对存储器阵列300实施存取,使得每一侧的存取线和电路减少一半。因此,行解码器被分为行解码器330A和330B,列解码器被分为列解码器360A和360B。在其中一行存储器单元划分为多个区块的实施例中,区块多路转接器350分为区块多路转接器350A和350B。类似地,读取/写入电路分为从底部连接到位线的读取/写入电路370A和从阵列300的顶部连接到位线的读取/写入电路370B。这样,读取/写入模块的密度、以及因此经划分的读取/写入堆叠400的密度实质上减小一半。
图8A或图8B中每一经划分的读取/写入堆叠400实质上含有服务一段k个并行存储器单元的读取/写入模块堆叠。每一堆叠以图7所示的方式被划分为一核心堆叠部分和一共用堆叠部分。每一读取/写入堆叠400中的通信由互连堆叠总线(未图示)实现并由堆叠总线控制器430控制。控制线(未图示)将控制和时钟信号从堆叠总线控制器430提供到读取/写入堆叠的核心部分的每一个处。类似地,控制线(未图示)将控制和时钟信号从堆叠总线控制器430提供到读取/写入堆叠400的共用部分的每一个处。
并行操作的经划分的读取/写入堆叠400的整个库允许并行地读取或编程沿一行的p个单元的区块。举例来说,如果r为库中堆叠的数目,那么p=r*k。一个实例存储器阵列可具有p=512个字节(512x8位),k=8,且因此r=512。在优选实施例中,区块为一串整行单元。在另一实施例中,区块为行中单元的子组。举例来说,单元的子组可为整行的一半或整行的四分之一。单元的子组可为一串邻接的单元或每隔一个的单元,或每隔预定数目一个的单元。
在图8A所示的实施例中,将存在数目为p的读取/写入模块,分别用于p个单元中的每一者。由于每一堆叠服务k个存储器单元,因此库中读取/写入堆叠的总数目由r=p/k给定。在p=512字节且k=8的实例中,r将为512。
如以上提到,高密度和高性能存储器中遇到的一个问题是需要并行读取和编程相邻行单元的区块和难以使读取/写入模块协调每个单元。
协调问题通过图8B所示的优选实施例而减轻,其中外围电路形成于存储器阵列的相对侧上。当读取/写入电路370A、370B形成于存储器阵列300的相对侧上时,p个单元的区块的一半将从顶部存取,且另一半将从阵列的底部侧存取。因此,在每一侧上将存在数目为p/2的读取/写入模块。由此可见,每一侧上的读取/写入堆叠400将仅需要服务数目为p/2的并行的位线或存储器单元,因此库中读取/写入堆叠的总数目由r=p/2k给定。在p=512字节且k=8的实例中,r将为256。这意味着和图8A所示的实施例相比,在存储器阵列的每一侧上仅需要一半的读取/写入堆叠400。
在协调或其他考虑规定更低密度的其他实施例中,一行单元被划分为两个或两个以上交错的单元区块。举例来说,一个单元区块由来自偶数列的单元组成,且另一单元区块由来自奇数列的单元组成。如图8A和图8B中所示,区块多路转接器350或350A与350B将用于将经划分的读取/写入堆叠的库切换到偶数或奇数区块。在图8B所示的实施例中,在阵列的每一侧上将存在数目为p/4的读取/写入模块。在此情况下,在相对侧的每一侧上的读取/写入堆叠的数目将为r=p/4k。因此,提供更多空间以配合较少的读取/写入模块,但其代价是降低的性能和读取/写入区块不再相邻。
解决部分编程问题的实施例
如以上所述,在使用例如图5A到图5C和图10A、图10B中的编码方案将存储器单元编程为状态B时,发生部分编程问题,且在第二遍编程期间没有足够的用户或主机数据用于编程单元。因为在此事件中在数据锁存器中的第二(上)页数据将为缺省值“1”,所以此单元将在图5A到图5C、图10A、图10B中的编码方案下被编程为状态C,除非如以下所述防止这种情况发生。当下一编程操作中的随后的用户或主机数据要求这些单元保留于或编程为状态B时,这不能完成,因为除了在区块擦除操作中之外,大多数设计不允许降低单元阈值电平。
本发明的一个实施例是基于以下认可:对于没有用户或主机上页数据的存储器单元,在编程操作中在第一遍编程之后但在第二遍编程之前,用于编程这些存储器单元的数据锁存器中的下页数据由适当的代替数据替换,以防止在第二遍编程中编程这些存储器单元。因此,在此实施例的一种实施方案中,其中擦除或重置状态E表示或对应于数据“11”,在内部数据载入操作中从这些存储器单元读取的数据锁存器中的第一页或下页数据由“1”替换。以下参看图9更详细地对此进行说明。
图9是更详细地展示图7的电路区块中的数据锁存器构造的示意性方框图。如图9所示,图7中的数据锁存器224包括至少三个锁存器224a、224b和224c。在以上实例的一者中,读取/写入堆叠400中的模块200用于控制由所述堆叠服务的k个单元中的一对应存储器单元的读取和写入。因此,锁存器224a到224c中的每一者可为1位锁存器。在编程操作期间,通过数据总线231和I/O接口226将用户或主机数据载入锁存器中。在一个实施例中,首先通过总线231和接口226将第一或下数据位载入锁存器224a中。这由图7、图8A、图8B的堆叠的库中的堆叠400中的每一者中的所有读取/写入模块200并行地执行以用于编程整个页。所述整个页可由存储器阵列300中的一行中的所有存储器单元组成。或者,所述整个页可仅由存储器阵列300中的一行的一部分中的存储器单元组成,例如在一行单元中的交错页的情况下的奇数或偶数页。
然后使用堆叠400的库中的所有模块200中的数据锁存器224a中的下页或第一页数据来编程页中的存储器单元。在使用锁存器224a中的第一页或下页数据编程一页中的存储器单元之后,通过总线231和接口226将第二页或上页数据载入锁存器224a中,所述数据由处理器222移动到锁存器224c,以准备存储单元的第二遍编程。如以上所述,对于第二遍编程,必须了解在第一遍编程之后第二遍编程之前存储器单元的阈值电压或阈值电平。在一个实施例中,这是由内部数据载入操作执行的,其中页中的存储器单元中的电流通过堆叠400的库中的模块200中的读出放大器212读出。这些单元的阈值电压或存储电平和对应于此的数据随后由模块中的处理器222确定并存储在模块中的锁存器224a中。在第二遍编程中存在足够的上页或第二页数据用于编程页时,存储在锁存器224a中的数据和锁存器224c中的用户或主机的上页或第二页数据在第二遍编程中用于编程页中的存储器单元。这是在下文实例中编程图6A的扇区112中的单元的情况。
然而,在没有足够的上页或第二页数据用于编程整个页时,这首先由控制电路310检测到。在图6A和图6B中所说明的实例中,当存在足够的数据来编程存储器单元的第一页或下页时,仅有足够的数据用于第一扇区112。因此,主机或用户数据以此扇区结束,且不再有上页或第二页数据用于扇区114、116和118。在此情况下,且在本发明的一个实施例中,状态机312然后将代替数据载入锁存器224a以用于替换从读取存储器单元的内部数据载入操作获得的数据。内部载入的下页或第一页数据的借助于代替数据的替换仅针对控制对没有足够的上页或第二页数据的存储器单元进行编程的模块的数据锁存器。在图6A和图6B的实例中,这仅针对扇区114、116和118中的存储器单元。对于用于控制扇区112中的存储器单元的编程的模块中的数据锁存器224a来说,锁存器224a中的数据仍是从上述内部数据载入操作获得的数据。因此,通过跟踪数据区块112′、114′、116′和118之间的边界,以及这些扇区中的哪些具有或没有用户或主机数据,仅对于没有第二页或上页数据的页的扇区中的单元执行用于替换在内部数据载入中读取的那些数据的替代性数据的载入。在一个实施例中,页边界由控制器电路310监视以用于控制存储器单元的编程。如以下更详细的描述,控制器电路或电路310存储适当的旗标数据或适当地改变对应扇区的旗标电荷存储单元中的旗标数据以指示没有足够的主机数据的行中的扇区。
在以上实施例中,当没有足够的第二页或上页数据用于编程对应单元时,替代性数据用于替换载入不同模块中的锁存器224a内的数据。然而请注意,部分页编程问题仅针对在第一遍编程期间编程为B′状态的单元。对于在第一遍编程之后维持在擦除状态E的单元,其可通过第二遍编程而正确地编程为状态A或正确地维持在状态E。因此,在以上实施例中,有必要将替代性数据“1”仅载入锁存器224a中以用于编程处于状态B′的单元,而并非是在第一遍编程之后处于状态E的单元。这具有防止将编程电压耦合到在第二遍编程期间处于状态B′的单元的作用。这还具有禁止B′分布进一步移动进入B分布的作用,使得在随后的上页数据变为可用于扇区114、116和118中的每一者时,每一扇区将开始从状态E或B′起始的编程。对于这些单元,或作为没有对应的第二页或上页数据的所有单元的另一替代方式,内部载入操作也可由将“1”载入用于编程这些单元的数据锁存器内的操作替换。这些和其他变化处于本发明的范围内。此实施例也不限于擦除状态E表示数据“11”的方案。
以类似于以上结合图5A和图5B而描述的方式,在以上实施例中,尽管没有第二页或上页数据的单元的B′分布在相邻单元随后被编程时可由于Yupin效应而加宽,但这些加宽的B′状态中的电荷电平仍低于下一较高状态C的电荷电平。
上述将数据载入锁存器224a中以替换通过读取存储器单元而从内部数据载入获得的数据可由控制电路310(包括状态机312)以对用户或主机透明的方式来执行。或者,此操作可通过改变编程序列来完成。代替在编程算法中添加新的命令,区域检测电路也可用于检测哪些区域或扇区正由用户或主机编程,并在全局重置中选择其余的扇区或区域来将数据“11”填入锁存器224a与224c中。所有这些变化都处于本发明的范围内。
读取操作
当在一页边界处读取已部分编程的页时,因为已完全编程的存储器单元的读取电平可不同于没有完全编程的存储器单元的读取电平,所以读取算法可能也需要修改。这在图10A和图10B中说明。图10A是在上述实例中图6A中所说明的存储器阵列中的那行存储器单元的群组或扇区112中的存储器单元的阈值电压电平分布的图解说明。在此实例中,群组或扇区112中的所有存储器单元已在第一遍和第二遍编程期间被编程,使得这些单元的阈值电压具有图5C和图10A中的分布E、A、B、C。然而对于扇区114、116和118中的存储器单元,这些存储器单元处于图5A、图5B或图10B中的状态E或B′。为获得由所有四个扇区112、114、116和118中的单元的阈值电压表示的上页或第二页数据,以两个不同的读取电平Va和Vc读取存储器单元,且将假定电压感测模式。为获得用于图5C和图10A中指示的上页或第二页“1001”的编码方案,当使用读取电平Va时的惯例不同于(实际上相反)当使用读取电平Vc时使用的惯例。因此,参看图11A,当使用读取电平Va时,如果单元的阈值电压低于Va(或更负),那么对应于此阈值电压的上页值为“1”。然而对于读取电平Vc,情况相反。因此,对于读取电平Vc,如果存储器单元的阈值电压高于Vc,那么此阈值电压对应于值为“1”的上页或第二页,但如果阈值低于Vc,那么此阈值电压对应于上页或第二页值“0”。当使用此惯例时,在图11A中展示对应于状态E、A、B、C的上页或第二页值。当在逻辑OR操作中组合从两个读取以读取电平Va和Vc获得的两个值时,组合产生编码方案“1001”用于图5C和图10A中说明的第二页或上页。因此,从状态E和C的两个读取获得的两个值的组合导致值为“1”的上页或第二页,而从状态A和B获得的两个读取值的组合导致值为“0”的上页或第二页。
与上述惯例相同的用于读取群组或扇区112中的存储器单元的惯例还适用于读取群组或扇区114、116和118中的被部分编程的存储器单元,使得一共用算法可用于同时读取沿选定字线的所有单元。然后在逻辑OR操作中以类似方式组合读取值,以给出用于图11A中所说明的上页或第二页的值。然后这些上页或第二页值存储在锁存器224c中,借助图9中的处理器222转移到锁存器224a并通过I/O接口226到达总线231。从上文观察到,相同组的读取电平(Va和Vc)可用于读取所有存储器单元的上页或第二页值,无论其是否已完全编程或仅部分编程。
然而,在读取下页或第一页值时,视一页中所有存储器单元是否已完全编程而定,结果将是不同的。因此,对于群组或扇区112中的存储器单元,所有单元已被编程为图10A所示的状态E、A、B和C,使得将要施加的读取电平为Vb。群组或扇区114、116和118中的存储器单元仅在第一遍编程中被编程而没有在第二遍编程中被编程,因而其阈值电压分布将如图5A、图5B或图10B所示。如上文参看图5B所述,图5B和图10B中的分布B′已由于Yupin效应而被加宽。在从群组或扇区114、116和118中的单元读取下页或第一页数据时,读取电平应为Va而不是Vb。
在一个实施例中,全部使用读取电平Vb循序读取所有扇区112、114、116和118中的存储器单元,且随后使用读取电平Va读取,结果如图11B中所示。用于两个读取的惯例是,如果阈值电压低于Vb,那么下页或第一页位值为“1”,且如果阈值电压高于Vb,那么下页或第一页位值为“0”。从图11B可见,当读取群组或扇区112中的存储器单元时,只有使用读取电平Vb的读取是有效的,且当读取群组或扇区114、116和118中任一个中的存储器单元时,只有使用读取电平Va的读取是有效的。在一个实施例中,为便于使用两个不同读取电平的两个读取操作,将从使用读取电压Vb的读取操作获得的下页或第一页值存储在锁存器224c中,且将使用读取电平Va获得的下页或第一页值存储在锁存器224b中。然后,视正被读取的存储器单元是否已被完全编程或仅部分编程而定,将两个锁存器224b和224c之一中的值转移到锁存器224a,并通过接口226发送到数据总线231作为从此单元读取的下页或第一页值。
为能够区别已被完全编程的单元与仅部分编程的单元,使用旗标电荷存储单元。如早先的参考申请案10/237,426和Shibata等人的美国专利第6,657,891号中所揭示的,将旗标单元并入存储器阵列中的那行存储单元中,且在读取操作中和存储器单元一起读取这些单元。因此,通过使用与美国专利第6,657,891号中描述的架构(例如关于图3所描述)相同的架构,对应的旗标电荷存储单元也可并入存储器阵列300中的至少某些行中的每一者中。扇区中的每一者含有至少一个对应的旗标电荷存储单元。扇区112、114、116和118中的对应的旗标单元的位置由图6A中的箭头FC指示。如Shibata专利中的一种实施方案所述,在第一遍编程期间,旗标单元的第一页或下页的位保持“1”且不变为“0”。在用于编程第二页的第二遍编程期间,旗标单元的第二页或上页的位从“1”改变为“0”以指示第二遍编程已执行。如以上所述,在第二遍编程期间,读取存储单元以获得所述内部数据载入过程中的下页的位值。优选地,在此内部数据载入过程期间,下或第一旗标位也从“1”变为“0”。因此,在第二遍编程完成之后,旗标单元的上与下(第二与第一)旗标位已从“11”变为“00”。在一个实施例中,第一和第二(下和上)页的位值的改变可由控制电路310执行,或者适当的位值可由控制电路310存储在旗标单元中。
旗标数据的值也可用于标记主机或用户数据的边界,例如主机或用户数据的末尾。在以上实例中,在第二遍编程期间已编程的扇区或群组的旗标单元中的旗标数据将具有值“00”,而在第二遍编程期间未编程的扇区或群组的旗标单元中的旗标数据将具有值“11”。然后当两个相邻扇区或群组的旗标单元的位值在“11”与“00”之间改变时,指示存储在两个邻近扇区或群组中的电荷存储元件中的主机或用户数据的边界。可在两个相邻扇区或群组(例如由共用字线控制的复数个扇区或群组中的两个)之间的接合点处指示主机或用户数据的末尾,所述扇区或群组的旗标数据越过接合点从“11”变为“00”。通过跟踪旗标数据的值,可防止例如读取电荷存储元件产生错误结果,如以下文所解释。
在读取操作中,读取电平取决于待读取的存储单元已被完全编程还是仅部分编程。这可通过读取嵌入在待读取的那行存储取单元内的旗标位来确定。如以上所述,在第二遍编程的内部数据载入过程期间,下或第一旗标位也从“1”变为“0”。因此,当读取此下或第一旗标位时,可确定正确的读取电平:如果此位为“1”,那么读取电平为Va,但如果此位为“0”,那么读取电平为Vb。这对于其中所有存储器单元已被完全编程的存储器阵列300中的大多数行中的存储单元也是如此,除了在其中页仅被部分编程的页边界处以外。因此,通过将两个旗标位的每一者设置为“0”,可使用读取电平Vb一起完成一页中的存储器单元的下页或第一页读取与所述页的第一或下旗标位的读取。因此,在整个页已被完全编程的多数情况下,可读出旗标位并调整状态机,使得将不需要使用读取电平Va进行第二次读取操作。因此取决于读取旗标数据的结果,可施加不同序列的读取电平以用于从单元读取下页或第一页值。在旗标数据指示一页中所有单元已被完全编程时,仅使用读取电平Vb进行一次读取操作就已足够,而在旗标数据指示一页中并不是所有单元都已被完全编程时,将需要使用读取电平Vb随后使用读取电平Va进行两次读取操作。因此,不同的读取序列是可用的,且视所读取的旗标数据的值来选择适当的序列以供使用。
从以上将明显可见,将需要较多时间读取部分编程的页,因为对于页中未被完全编程的扇区是使用两个不同的读取电平循序读取下页或第一页数据。出于此目的,当确定没有足够的数据来填充一页时,图8A和图8B中控制电路310中的状态机312通过总线301中的就绪/忙信号线(未单独图示)将一忙信号发送到主机控制器。然后此状态机调整其时序信号以允许更多时间来用于未被完全编程的存储器单元的读取操作。控制电路310接着通知主机控制器以让用户了解将需要更多等待时间用于从快闪存储器中读取数据。
在使用伪时间周期用高速缓冲存储器时序读取阈值电压或存储电平时,当检测到旗标位从“11”到“00”的改变时,控制电路310中的状态机将增加伪时间周期的长度以用于读取阈值电压的存储电平,从而允许更多时间以两个不同读取电平循序读取。
图12是根据用于说明本发明的替代实施例的新颖替代性编码方案的阈值电压分布及其表示的数据的图解说明。图10A与图12的比较将显示两种编码方案的不同在于,在图12的新编码方案中,阈值电压分布B表示“10”且阈值电压分布C表示“00”。然而在图10A的编码方案中,分布B表示“00”且分布C表示“10”。图10A与图12的比较还显示,在两种编码方案中的四个不同分布E、A、B、C具有相同的下页或第一页值“1100”。通过使用图12的新编码方案,在第一遍编程期间,存储器单元在主机数据为“1”时不会被编程以使得其保持在状态E,或者在主机数据为“0”时被编程为分布B′。在第二遍编程期间,如果上页或第二页的位值为“1”,那么存储器单元不会被编程,使得其保持在分布E或收紧为分布B。如果用户数据为“0”,那么视第一遍编程之后存储器单元的初始分布,将存储器单元编程为分布A或C。因此,图12的新编码方案以类似于图5C和图10A中编码方案的方式同样减小了Yupin效应。
从图12将明显可见,在第一遍编程下状态E和B的上页或第二页值都是“1”。这意味着在没有足够的主机或用户数据来填充整个页时,当数据锁存器中的用户数据用于在第二遍编程中编程存储器单元时,没有足够的上页或第二页数据的存储器单元将不会被编程为错误分布。无论单元是处于状态E还是状态B′都是如此,这不同于使用图5C和图10A中的编码方案的情形。再次参看图6B中的实例,当主机数据具有用于第一页或下页的数据“0”,但没有用于位置122′的第二页或上页的数据时,用于所述位置的第二页或上页的缺省值为“1”,从而位置122′将被填有值“10”。这个值要求根据图10A中的编码方案被编程为分布C,而根据图12中的编码方案被编程为分布B。因为主机数据的下页或第一页值为“0”,所以扇区114中的对应存储器单元在第一遍编程中已被编程为状态B′,且仅需要稍微地移动到状态B。请注意,与其中个别扇区114、116或118保持在状态E或B′的先前实施例相比,在此实施例中,只要用上页数据编程第一扇区112,所述页中先前处于状态B′的所有其他单元就会移动到状态B。因此,当新的主机数据变为再次可用于编程页的扇区114、116和118中的存储器单元的第二页或上页时,这些扇区中的存储器单元已经处于正确的阈值电压分布。
可观察到,通过使用图12中所说明的编码方案,将不会发生上述部分页编程。如果在第一遍编程之后用于单元的两个可能的存储电平由用于第二页或上页的相同值表示,那么可以相同方式使用与图12的编码方式不同的编码方式来解决部分页编程问题。在两个可能状态为图5C和图10A中的擦除(或重置)和B状态时,用于两个状态的第二页值优选是相同的。然后将不会发生部分页编程问题。
因为图12的编码方案使部分页编程问题不会发生,所以不需要具有独特的旗标存储单元用于页的每一扇区。从图12还可注意到,在图12的编码方案中上与下(第一与第二)页的位值在分布A与B之间改变,使得编码方案并不是格雷码(Gray code)。这意味着如果分布从B漂移到A(例如,通过此项技术中众所周知的各种干扰机制),那么将在逻辑数据的两个页中发现位错误,且在使用此编码方案时可能需要较多的错误校正(ECC)位。而且,为从存储器单元获得上页或第二页值信息,可能必须以三个不同读取电平进行读取,使得读取时间比使用图10A的编码方案的读取时间更长。然而图12的编码方案是有利的,因为其不需要额外的数据锁存器,例如图9中的数据锁存器224b。
以上设计的一种可能的替代方案是使图6A中单元的四个群组112、114、116和118可由单独受控的读取/写入模块来控制。这将为解决部分页编程问题提供较多的灵活性,但将增加存储器器件的晶粒尺寸。图10与图12的方案的一个优点是可以较简单的方式控制读取/写入模块,使得晶粒尺寸将不会增加,或增加较少的量。
虽然上文已参考各种实施例描述本发明,但应了解,在不脱离仅由随附权利要求书及其均等物界定的本发明的范围的情况下,可做出改变和修改。举例来说,虽然是参考NAND阵列上的操作来描述实施例,但其也可适用于NOR阵列,这些和其他变化都处于本发明的范围内。虽然参考每一者被分组为四个扇区的存储器单元的行来说明本发明,但可将所述行分组为较多或较少数目的扇区,且本文描述的相同优点可用于这些不同的分组方案。本文提到的所有参考以引用的方式并入本文。