首页> 中国专利> 在非易失性存储器(NVM)单元中减轻单元间耦合效应

在非易失性存储器(NVM)单元中减轻单元间耦合效应

摘要

一种操作包括多个非易失性存储器(NVM)单元的NVM阵列的系统、计算机可读介质和方法,该方法包括:接收有待写入到该非易失性存储器的输入数据;在该输入数据上执行约束译码以便提供已编码数据;其中该约束译码防止该已编码数据包括多个禁止值组合;其中基于从在多个NVM单元之间的耦合导致的多个预期单元间耦合感应错误来定义这些禁止值组合;以及将该已编码数据写入到该非易失性存储器。

著录项

  • 公开/公告号CN103140894A

    专利类型发明专利

  • 公开/公告日2013-06-05

    原文格式PDF

  • 申请/专利权人 技术研究及发展基金公司;

    申请/专利号CN201180047226.1

  • 发明设计人 伊扎克·比克;阿米特·伯曼;

    申请日2011-08-16

  • 分类号G11C7/10;G11C7/02;

  • 代理机构北京安信方达知识产权代理有限公司;

  • 代理人苗源

  • 地址 以色列海法

  • 入库时间 2024-02-19 19:50:28

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-29

    未缴年费专利权终止 IPC(主分类):G11C 7/10 专利号:ZL2011800472261 申请日:20110816 授权公告日:20170822

    专利权的终止

  • 2017-08-22

    授权

    授权

  • 2013-08-14

    实质审查的生效 IPC(主分类):G11C7/10 申请日:20110816

    实质审查的生效

  • 2013-06-05

    公开

    公开

说明书

相关申请

本申请要求提交日期2010年8月17日的美国临时专利申请序列号 61/374,281的优先权,该申请通过引用结合在此。

发明技术领域

本发明涉及用于操作半导体器件的技术,并更特定地涉及操作非易失 性存储器(NVM)例如浮置栅极(FG)器件。

本披露可以涉及多级单元(MLC)闪存技术、数据压缩技术、提高 闪存存储器可靠性和/或容量、受约束译码技术、纠错技术和纠错码(ECC) 。

本披露还可以涉及并可应用于固态存储器的其他形式,例如DRAM (动态随机访问存储器)、SRAM(静态随机访问存储器)、以及非易失 性存储器的其他形式,例如MRAM(磁性的)和相变存储器(PCM)。

发明背景

闪存存储器是可以电气地擦除并重编程(或写入)的非易失性存储器 (NVM)的形式。闪存存储器架构允许在一个编程操作中擦除或写入多 个存储器位置。两个普通类型的闪存存储器是NOR和NAND闪存。NOR 和NAND闪存从在多个存储器单元之间互连的结构得名。在NOR闪存中, 多个单元并联连接到位线,从而允许将多个单元个别地读取并编程。多个 单元的并联连接类似于在CMOS NOR门中晶体管的并联连接。在NAND 闪存中,多个单元串联连接,类似于一个NAND门,并且防止将多个单 元个别地读取并编程:串联连接的这些单元必须串联读取。

NAND闪存存储器在广泛种类的现代电子系统中组成基本构件块。 闪存存储器可以包括在阵列中排列并连接到多条字线(WL)和位线(BL) 的大量浮置栅极(FG)存储器单元。

一般存储器阵列架构

典型地,多个NVM存储器单元在包括许多行和列的一个阵列中,在 跨该阵列水平延伸的字线(如通常描绘)和垂直于该阵列上下延伸的位线 (如通常描绘)之间排列。一个存储器阵列典型地包括许多百万(“兆”), 包括数十亿(“吉”)存储器单元。

一个存储器阵列典型地包括相互垂直并联延伸穿过该阵列(或其一部 分)的多条位线(BL),以及相互水平并联延伸穿过该阵列(或其一部 分)的多条字线(WL)。

多个储存器单元可以在字线和位线之间连接。这些存储器单元中的一 些可以连接到相同字线。一些其他存储器单元可以连接到相同位线。在最 一般的意义上,可以由一个给定存储器单元连接到哪条字线(WL#)和 哪条位线(BL#)的一个组合指定每个单元的物理地址。换言之,可以通 过指定一条字线和一条位线将任意个别存储器单元(mc)寻址。由于仅 一个唯一存储器单元与字线/位线的一个给定组合相关联,因此可以认为 字线号和位线号的组合是这些单元的“天然”地址。

可以将一个存储器阵列组织成含有多个存储器单元的各种逻辑区段, 例如块、页面和扇区。这些区段中的一些可以相互物理隔离并独立操作。 可以应用到一个存储器阵列的区段(或已选择的多个存储器单元)的一些 术语是:

块——可以指代一组页面。可以指代可以同时擦除的最小数目的单元 (以及相对应数目的位),在此情况下其称为“擦除扇区”。典型大小可 以是64K字节。

组块——可以指代页面的多个部分。也可以称为“大块”。典型组块 大小可以是256位。

擦除区段——见于“块”

页面——页面可以是可以同时编程的或可以由单个用户操作编程的 闪存阵列上的最小数目的位。需要用户将数据在整个页面的组块中编程进 入闪存。典型的页面大小是2K字节、4K字节。

物理区段——一组“擦除区段”或“块”。典型大小可以是256K字 节。

切片——带有到感测放大器的具体连接配置的阵列上的一组位。

程序级

一般地,存储(或捕获)的电子越多,则该单元的阈值电压(Vt)可 以越高。阈值电压指代施加到栅极以便在通道中导致可测量阈值水平的导 电所需要的电压。

在单级编程(SLC)中,可以存储小数目的电子以便代表一个第一程 序级例如二进制“0”,并且可以存储大数目的电子以便代表一个第二程 序级例如二进制“1”。在SLC中,仅两个程序级是可用的,并且可以认 为这两个之一是“擦除”状态。

在多级编程(MLC)中,存在多于两个例如四个程序级(L0..Ln)。 一个最低程序级(其可以是“擦除”)可以代表二进制“11”。下个更高 程序级可以代表二进制“01”。下个更高程序级可以代表二进制“00”。 并且这四个程序级中的最高程序级可以代表二进制“10”。(这个似乎丢 失顺序的11、01、10、00的序列代表“格雷码”,格雷码是其中两个连 续值仅在一个数字上不同的二进制。)多于四个程序级是可以的——例如, 16个程序级(L=0..15,其中L0典型地是擦除状态)。

可靠性问题

当在许多存储器单元(或多个半单元)中在多个不同的(例如四个不 同的)程序级存储多个电子时,在这些程序级中的每个存在多个阈值电压 (Vt)的必然分布(或宽度)。这指定这些程序级相互充分远离地建立, 因此当读取这些单元的内容时,在多个邻接程序级之间存在良好分离(或 “裕度”)。

每个分布的宽度取决于物理现象。其可以经在制造工艺上的各种试 验,观察在各种存储器单元上程序级的所有可能组合来确定。

各种因素可能影响多个NVM单元的质量和可靠性。例如,将一个单 元编程可能导致多个电子注入多个附近或邻近单元,影响(升高或降低) 它们的Vt。一般地,在一个存储器单元已编程(或擦除)之后发生的该 存储器单元的Vt变化可以称为“阈值电压漂移”。阈值电压漂移是众所 周知的,并且例如在通过引用结合在此的美国专利No.6,992,932和 6,963,505中讨论。

在多个邻接程序级之间的裕度收缩时,可能逐渐变得难以准确读取该 存储器单元(或半单元)的内容。一个精确示例是“重叠”,其中相比在 下个较高程序级的多个单元的最低Vt中的一些,一个程序级的这些最高 Vt单元中的一些处在相同或更高的值。“单元”可以指代每个具有一个 电荷存储区的多个浮置栅极(FG)单元,或可以指代具有两个不同电荷 存储区的多个NROM单元。

当读取一个NROM单元(具有两个不同电荷存储区的单个单元)时, 另一(第二)位(或半单元)的Vt将对正在被读取的位的所测量Vt施加 影响,并且这可以称为“第二位效应”。

“第二位效应”还可以指代其中当低电荷区(例如“11”)接近高电 荷区(例如“10”)时该低电荷区正在获得电荷的状况。该第二位效应的 定义将在以下说明中使用。

图1A展示了(理论上)假设没有单元间耦合的每NVM单元2位的 阈值分布,并且图1B展示了由单元间耦合引起的每程序级的多个阈值分 布的拓宽。图1A的四个不同程序级11-14的四瓣(四个阈值分布)比图 1B的四瓣(15-18)窄得多。

图1C展示了以常规方式连接到相对应三条字线21(1)-21(3)和 三条位线22(1)-22(3)的九个FG存储器单元20(1)-20(9)。一个 给定单元(“C”)(或“感兴趣单元”)可以在水平方向上(在相同字 线上)、在垂直方向上(在相同位线上)并在对角线方向上(远离该给定 单元“C”的一条位线和一条位线)由多个邻接或邻近单元(“N”)围 绕。该图展示了在NAND闪存中影响单元间耦合的多个邻近单元。将该 单元“C”的这些邻接的邻近单元(其中距离为1)标记为x轴的Nx、y 轴的Ny和对角线的Nd。

在此所描述的“问题”和“解决方案”在多个MLC单元中可能是最 明显的。在多级编程(MLC)中,可能存在多于两个例如四个、八个、 十六个或更多个的程序级“L”。(程序级的数目不需要是二的整数幂。) 这些程序级可以简单称为L0、L1、L2、L3等,其中每个程序级代表高于 先前额定阈值电压的一个额定阈值电压(VtL0<VtL1<VtL2<VtL3等)。 (最低级“L0”可以实际上是一个初始“擦除”级,但可以为本讨论的 目的认为其是最低“程序”级。

由于NAND闪存存储器工艺技术缩小到低于32nm并且每单元的电 荷级数目超过八,因此单元阈值电压分布可以更窄以便防止从分配重叠导 致的错误。在多个浮置栅极(FG)单元中实现狭窄阈值电压分布的障碍 是该单元间耦合效应。该效应以取决于(i)在一个给定单元(“C”)和 多个邻接/邻近单元(“N”)之间耦合的水平和(ii)在这些周围单元中 的电荷量的程度将该给定单元的所感测电压移位。(特定地,每当一个单 元反复充电借此在每个反复中一些电荷添加到该单元,继之以其阈值电压 的确定,并且一旦达到该目标阈值电压则其充电终止时,仅在其自己的充 电终止之后添加到一个给定单元的这些邻近单元的电荷影响其阈值电压) 。每当未知或未考虑在这些邻近单元中的电荷级或编程顺序时,该效应可 以将其自身表现为在已被编程到一个额定程序级“L”的多个单元中的这 些阈值电压分布的明显拓宽。

图2展示了在一个给定单元(“C”)及其多个邻近单元(“Nn”) 的多个浮置栅极30(1)-30(9)之间的单元间耦合电容。这些单元可以 是图1C的多个FG单元20(1)-20(9)。

在图中示出的多个耦合部件是:CFGX、CFGY、CFGXY。该部件 CFGCG是在该中心浮置栅极到这些邻近单元的控制栅极之间的电容,并 且其未在图中示出。在多个邻近单元中多个浮置栅极的相对应电压标记为 V1、V2、V3、V4。

一些传统设计以若干途径处理单元间耦合效应。已调整单元编程算法 将这些单元编程到这些中间级,并感测阈值电压改变以便捕捉耦合效应。 然而,这些方法可能导致缓慢编程,并且由于编程在一条字线中完成,因 此这些编程方法不覆盖字线间耦合与对角线间耦合的情况。

应理解在将用户数据实际写入到一个NVM存储器装置之前,该数据 典型地“被译码”以便适应其正在存储到其中的装置(或其正在传输通过 的介质)的特征和特性一般地,译码将用户数据从一种用户格式(可以是 由其他译码系统变换的数据的普通数据)变换成另一数据格式,以便得到 系统益处例如压缩(例如,以便省电)、错误保护(当数据可能有错误倾 向时)或密码学(对暴露数据的保护)。译码系统与存储器以及正规通信 系统一起使用。一种译码系统的总目标是处理数据,并且应对用户透明。 数据压缩和加密可以包括在一种译码系统中。译码通常向数据添加冗余, 该冗余可以用于错误检查,但其还可以是或替代地可以是用于压缩的一种 解码辞典或用于压缩的密钥。

译码理论

一般地,一种“译码系统”是将用户数据从用户格式(可以是由其他 译码系统变换的数据的普通数据)变换成另一数据格式,以便得到系统益 处例如压缩(例如,以便省电)、错误保护(当数据可能有错误倾向时) 或密码学(对暴露数据的保护)的系统或算法。译码系统与存储器以及正 规通信系统一起使用。一种译码系统的总目标是处理数据,并且应对用户 透明。数据压缩和加密可以包括在一种译码系统中。译码通常向数据添加 冗余,该冗余可以用于错误检查,但其还可以是或替代地可以是用于压缩 的一种解码辞典或用于压缩的密钥。

一般地,“用户数据”是由使用该NVM(或闪存芯片)的任意实体 提供的数据。从用户的观点,该NVM是“黑箱”,用户将信息(数据) 写入到其中,并且预期从其得回该信息。

译码理论是信息理论的最重要且最直接的应用之一。其是电气工程、 数字通信、数学和计算机科学设计高效且可靠数据传输方法的分支,因此 可以移除数据中的冗余,并且可以纠正由有噪声信道引起的错误。其还处 理代码的性质,并因此处理它们对具体应用的适应性。通常存在三类代码 。

1.信源译码(数据压缩)

2.信道译码(前向纠错)

3.联合信源和信道译码

一种源代码用来通过将普通字码映射到较短字码(例如霍夫曼码)来 压缩字码(或短语或数据)。信源编码尝试将来自一个信源的数据压缩以 便更高效地传输该数据。该实践在互联网中是是普遍的,其中“Zip”数 据压缩用来减小网络负载并使文件更小。

一种信道代码含有冗余以便在噪声存在的情况下允许更可靠通信。该 冗余意味着仅允许一组受限的信号:该组是该代码。信道编码添加额外数 据位以便使得数据的传输对在传输信道上存在的干扰更鲁棒。普通用户可 能意识不到使用信道译码的许多应用。一种典型的音乐CD使用李特-所 罗门码以便校正划痕和灰尘。在该应用中该传输信道是CD自身。蜂窝电 话还使用译码技术校正高频无线电传输的衰减和噪声。数据调制解调器、 电话传输和当然的NASA都采用信道译码技术以便通过例如turbo码和 LDPC码得到位。

联合信源-信道译码是用于经由一个有噪声信道传输的一个冗余信息 源的编码,并且相对应解码使用单个代码替代继之以信道译码的信源译码 的更常规步骤。联合信源-信道译码已为包括语音和视频传输的各种状况 提出并实施。

信道译码理论的目标是发现迅速传输、含有许多有效代码字并可以校 正或至少检测到许多错误的代码。尽管不相互排斥,但在这些领域中性能 是一个折衷。因此,不同代码对不同应用是最优的。该代码的所需要性质 主要取决于在传输期间错误发生的概率。在典型的CD中,损伤主要是灰 尘或划痕。其他代码更适于不同应用。深空通信受到相比突发性质更是连 续性质的接收器的热噪声限制。同样,窄带调制解调器受到在电话网中存 在并且作为连续干扰被更优模拟的噪声限制。蜂窝电话受到快衰减影响。 所使用的高频会导致信号的快衰减,即使接收器移动几英寸。再次,存在 被设计以便抗衰减的信道编码的类别。

以下术语可以在译码技术的说明中普遍使用:位——单词“位”是单 词“二进制数字”的缩写。位指代二进制(基数2)中的数字。一个给定 位是二进制“1”或“0”。例如,数字1001011是7位长。

字节——字节普遍用作计算机中存储测量值的单位,无关于被存储的数据 的类型。其还是在许多编程语言中的基本整数数据类型之一。字节是固定 数目二进制位的连续序列。近年来,意为8位的字节的使用几乎是普遍的 。该单位有时缩写成“B”。可以使用标准范围的字首形成用于大数量字 节的术语,例如千字节(KB)、兆字节(MB)和吉字节(GB)。

代码本——代码本简单地是关于怎样将输入字编码成已译代码字的“指 令”。以“字”开始,使用一个代码本,该字的数据序列将是“代码字” (或已译代码字)。该代码本还含有关于怎样将一个已译代码字解码回到 其原始输入字的“指令”。该指令可以是解释转换的详细算法或简单地是 具有两列的一个查询表:用于输入字(字-位的一个序列)的一列,以 及用于已译代码字的第二列,其中将在该输入字列上的每个字变换成在该 已译码列中(在该相同行中)的字,反之亦然。

译码——将关于主题获得的信息或单位转换成用于数据存储、管理和分析 的已译码值(典型地是数字的)的过程。

代码字(已译代码字的简称)。参见代码本。

符号——术语“符号”可以指代一组位。

字——术语“字”在具体通信系统领域上使用,并可以指代该输入字(位 的输入序列)或代码字,该两者都是多个位的组(可能罕见地具有1位大 小)。

受约束译码

一种译码形式是约束(或受约束)译码。约束译码一般规定(并隐含 地禁止)某些数据模式,以便确保与一种存储介质例如硬盘驱动器或光盘 的兼容性。如果数据模式不符合这些约束,则被视为“非法的”,并且可 以应用一种译码功能以便以所添加的冗余改变该模式。对于多个存储装置 例如硬盘驱动器和光盘,存储介质的物理性质一般要求使用约束译码。一 个示例可以是禁止在行中写入四个“Is”。如在此所用,“调制译码”意 思与“约束译码”相同。注意即使数据是“合法的”,一种约束译码系统 仍可以添加冗余以便在多个已译码数据模式之间区分。

针对受约束译码的以下专利通过引用结合在此:

美国专利6,532,565披露了在一个存储器中的突发错误和额外随机位 纠错。

美国专利6,188,335披露了具有用于多个运行长度限制信道代码的级 联解码的方法和设备。

美国专利6,175,317披露了二维无DC编码器和解码器。

美国专利6,002,718,1999和欧洲专利771,078披露了用于生成带 有DC控制的运行长度限制译码的方法和设备。

美国专利5,719,884披露了基于带有已减少冗余的二维码的纠错方 法和设备。

还参见“用于受约束系统的译码的介绍(An Introduction to Coding for Constrained Systems)”,布莱恩H.马库斯,郎M.罗斯,保罗H.西 格尔,第五版,2001年10月,其通过引用结合在此。在 http://www.cs.technion.ac.il/~ronny/constrained.html并也在 http://webcourse.csiechnion.ac.il/236520/Spring2010/eri/ho.html在线可得。

发明概述

一种操作可以包括多个非易失性存储器(NVM)单元的NVM阵列 的方法,该方法可以包括:接收有待写入到该非易失性存储器的输入数据; 在该输入数据上执行约束译码以便提供已编码数据;其中该约束译码防止 该已编码数据包括多个禁止值组合;其中基于从在多个NVM单元之间的 耦合导致的多个预期单元间耦合感应错误来定义这些禁止值组合;以及将 该已编码数据写入到该非易失性存储器。

该约束译码的执行可以包括基于多个单元间耦合感应错误的量值防 止该已编码数据包括多个禁止值组合;其中读取某一个NVM单元以便提 供该某个NVM单元的一个阈值电压的估计;并且其中与某一个NVM单 元相关联的一个单元间耦合感应错误的量值表现在(a)该某个NVM单 元的一个希望阈值(假设没有单元间耦合)和(b)该某个NVM单元的该 阈值电压的该估计之间的差。

约束译码的执行编码数据可能包括禁止值组合,预期这些值导致具有 高于一个预定义阈值的量值的一个预期单元间耦合感应错误。

预期禁止值组合中的至少一个导致具有低于该预定义阈值的量值的 一个预期单元间耦合感应错误。

该方法可以包括将该已编码数据写入到该NVM阵列,同时在不同程 序级的至少两对电压阈值分布之间维持一个不均匀缝隙。

在一个第一对程序级的一个第一对电压分布之间的一个缝隙可以低 于在一个第二对程序级的一个第二对电压分布之间的一个缝隙,其中该第 一对程序级低于该第二对程序级。

这些禁止值组合可以与邻接NVM单元的禁止实际阈值电压组合相对 应。

该方法可以包括从该NVM阵列读取该已编码数据以便提供读取数 据;并执行该读取数据的一次约束解码以便提供已解码数据。

该方法可以包括在该读取数据中检测多个禁止值组合,并将该禁止值 组合转换成允许值组合。

该转换可以响应于在该已编码数据上的一种预期保持效应。

一种用于提供约束代码的代码本的方法,该方法可以包括:接收一个 单元间耦合感应错误的一个参数的一个可允许值,该单元间耦合感应错误 从在多个非易失性存储器(NVM)单元之间的耦合所导致;以及定义该 代码本从而使得基于该参数的该可允许值排除禁止值组合。

该参数的该可允许值是一个单元间耦合感应错误的一个最大可允许 量值;其中读取某一个NVM单元以便提供该某个NVM单元的一个阈值 电压的估计;并且其中与某一个NVM单元相关联的一个单元间耦合感应 错误的量值表现在(a)该某个NVM单元的一个希望阈值(假设没有单元 间耦合)和(b)该某个NVM单元的该阈值电压的该估计之间的差。

该方法可以包括定义该代码本从而使得排除多个禁止值组合,预期这 些值导致具有超过该最大可允许量值的量值的一个预期单元间耦合感应 错误。

该方法可以包括定义该代码本从而使得排除至少一个禁止值组合,预 期该至少一个禁止值组合导致具有低于该最大可允许量值的量值的一个 预期单元间耦合感应错误。

该方法可以包括定义一个希望阈值-电压范围分配,该希望阈值-电压 范围分配可以包括在不同程序级的至少两对电压阈值分布之间的一个不 均匀缝隙。

该方法可以包括定义在一个第一对程序级的一个第一对电压分布之 间的一个缝隙,该缝隙低于在一个第二对程序级的一个第二对电压分布之 间的一个缝隙,其中该第一对程序级低于该第二对程序级。

这些禁止值组合可以与多个邻接NVM单元的多个禁止实际阈值电压 组合相对应。

该方法可以包括基于(a)存储在该NVM阵列中的多个代码字上的 一种预期保持效应和(b)禁止值组合,定义一个希望电压阈值分布。

该方法可以包括定义在多个等级之间的该希望阈值-电压范围分配, 从而使得将(a)存储在该NVM阵列中的一个合法值组合的一个值变化 成一个禁止值组合的概率相对于(b)该合法值组合的值变化成另一合法 值组合的概率提高。

该方法可以包括检测预期由于保持因此将其值改变成一个禁止值组 合的一组合法值组合;以及将该组的至少一个合法值组合定义为一个禁止 值组合。

该方法可以包括确定该单元间耦合感应错误的该参数的该可允许值。

该确定可以响应于将数据写入到这些NVM单元的一个顺序。

该顺序可以从由左到右编程、广度优先编程和开环编程构成的一个组 中选择。

该方法可以包括定义该代码本从而使得基于该参数的该可允许值以 及预期有待由多个邻接NVM单元存储的多个值之间的多个差,排除禁止 值组合。

该方法可以包括定义该代码本从而使得基于该参数的该可允许值、预 期有待由多个邻接NVM单元存储的多个值之间的多个差以及这些NVM 单元的编程的顺序,排除禁止值组合。

一种系统,可以包括:一个约束编码器,该约束编码器被安排成:接 收有待写入到该非易失性存储器的输入数据;并且在该输入数据上执行约 束译码以便提供已编码数据;其中该约束译码防止该已编码数据可能包括 禁止值组合;其中基于从在一个非易失性存储器(NVM)阵列的多个NVM 单元之间的耦合导致的多个预期单元间耦合感应错误来定义这些禁止值 组合;以及一个写入电路,该写入电路将该已编码数据写入到该非易失性 存储器。

该系统可以被安排成基于单元间耦合感应错误的量值防止该已编码 数据可能包括禁止值组合;其中读取某一个NVM单元以便提供该某个 NVM单元的一个阈值电压的估计;并且其中与某一个NVM单元相关联 的一个单元间耦合感应错误的量值表现在(a)该某个NVM单元的一个 希望阈值(假设没有单元间耦合)和(b)该某个NVM单元的该阈值电压 的该估计之间的差。

该系统可以被安排成防止该已编码数据可能包括禁止值组合,预期这 些值导致具有高于一个预定义阈值的量值的一个预期单元间耦合感应错 误。

可以预期禁止值组合中的至少一个导致具有低于该预定义阈值的量 值的单元间耦合感应错误。

该系统可以被安排成将该已编码数据写入到该NVM阵列,同时在不 同程序级的至少两对电压阈值分布之间维持一个不均匀缝隙。

在一个第一对程序级的一个第一对电压分布之间的一个缝隙可以低 于在一个第二对程序级的一个第二对电压分布之间的一个缝隙,其中该第 一对程序级可以低于该第二对程序级。

这些禁止值组合可以与多个邻接NVM单元的多个禁止实际阈值电压 组合相对应。

该系统可以被安排成从该NVM阵列读取该已编码数据以便提供读取 数据;并执行该读取数据的一次约束解码以便提供已解码数据。

该系统可以被安排成在该读取数据中检测多个禁止值组合,并将该禁 止值组合转换成允许值组合。

该系统可以被安排成响应于在该已编码数据上的一种预期保持效应 来转换。

一种系统,可以包括:一个代码生成器,该代码生成器被安排成:接 收一个单元间耦合感应错误的一个参数的一个可允许值,该单元间耦合感 应错误从在多个非易失性存储器(NVM)单元之间的耦合所导致;以及 定义该代码本从而使得基于该参数的该可允许值排除禁止值组合。

该参数的该可允许值是一个单元间耦合感应错误的一个最大可允许 量值;其中读取某一个NVM单元以便提供该某个NVM单元的一个阈值 电压的估计;并且其中与某一个NVM单元相关联的一个单元间耦合感应 错误的量值表现在(a)该某个NVM单元的一个希望阈值(假设没有单元 间耦合)和(b)该某个NVM单元的该阈值电压的该估计之间的差。

该系统可以被安排成定义该代码本从而使得排除多个禁止值组合,预 期这些值导致具有超过该最大可允许量值的量值的一个预期单元间耦合 感应错误。

该系统可以被安排成定义该代码本从而使得排除至少一个禁止值组 合,预期该至少一个禁止值组合导致具有低于该最大可允许量值的量值的 一个预期单元间耦合感应错误。

该系统可以被安排成定义一个希望阈值-电压范围分配,该希望阈值- 电压范围分配可以包括在不同程序级的至少两对电压阈值分布之间的一 个不均匀缝隙。

该系统可以被安排成定义在一个第一对程序级的一个第一对电压分 布之间的一个缝隙,该缝隙低于在一个第二对程序级的一个第二对电压分 布之间的一个缝隙,其中该第一对程序级低于该第二对程序级。

这些禁止值组合与多个邻接NVM单元的多个禁止实际阈值电压组合 相对应。

该系统可以被安排成基于(a)存储在该NVM阵列中的多个代码字 上的一种预期保持效应和(b)禁止值组合,定义一个希望电压阈值分布 。

该系统可以被安排成定义在多个等级之间的该希望阈值-电压范围分 配,从而使得将(a)存储在该NVM阵列中的一个合法值组合的一个值变 化成一个禁止值组合的概率相对于(b)该合法值组合的值变化成另一合 法值组合的概率提高。

该系统可以被安排成检测预期由于保持因此将其值改变成一个禁止 值组合的一组合法值组合;以及将该组的至少一个合法值组合定义为一个 禁止值组合。

该系统可以被安排成确定该单元间耦合感应错误的该参数的该可允 许值。

该系统可以被安排成响应于将数据写入到这些NVM单元的一个顺序 来确定。

该顺序可以从由左到右编程、广度优先编程和开环编程构成的一个组 中选择。

该系统可以被安排成定义该代码本从而使得基于该参数的该可允许 值以及预期有待由多个邻接NVM单元存储的多个值之间的多个差,排除 禁止值组合。

该系统可以被安排成定义该代码本从而使得基于该参数的该可允许 值、预期有待由多个邻接NVM单元存储的多个值之间的多个差以及这些 NVM单元的编程的顺序,排除禁止值组合。

一种非暂时性计算机可读介质,该非暂时性计算机可读介质存储多个 指令以便:接收有待写入到该非易失性存储器的输入数据;在该输入数据 上执行约束译码以便提供已编码数据;其中该约束译码防止该已编码数据 可能包括禁止值组合;其中基于从在一个非易失性存储器(NVM)阵列 的多个NVM单元之间的耦合导致的多个预期单元间耦合感应错误来定 义这些禁止值组合;以及将该已编码数据写入到该非易失性存储器。

该约束译码的执行可以包括基于多个单元间耦合感应错误的量值防 止该已编码数据可能包括多个禁止值组合;其中读取某一个NVM单元以 便提供该某个NVM单元的一个阈值电压的估计;并且其中与某一个 NVM单元相关联的一个单元间耦合感应错误的量值表现在(a)该某个 NVM单元的一个希望阈值(假设没有单元间耦合)和(b)该某个NVM 单元的该阈值电压的该估计之间的差。

约束译码的执行可以包括防止该已编码数据可能包括禁止值组合,预 期这些值导致具有高于一个预定义阈值的量值的一个预期单元间耦合感 应错误。

预期禁止值组合中的至少一个导致具有低于该预定义阈值的量值的 一个预期单元间耦合感应错误。

该非暂时性计算机可读介质可以存储多个指令以便将该已编码数据 写入到该NVM阵列,同时在不同程序级的至少两对电压阈值分布之间维 持一个不均匀缝隙。

在一个第一对程序级的一个第一对电压分布之间的一个缝隙可以低 于在一个第二对程序级的一个第二对电压分布之间的一个缝隙,其中该第 一对程序级低于该第二对程序级。

这些禁止值组合可以与多个邻接NVM单元的多个禁止实际阈值电压 组合相对应。

该非暂时性计算机可读介质可以存储多个指令以便从该NVM阵列读 取该已编码数据以便提供读取数据;并执行该读取数据的一次约束解码以 便提供已解码数据。

该非暂时性计算机可读介质可以存储多个指令以便在该读取数据中 检测多个禁止值组合,并将该禁止值组合转换成允许值组合。

该转换响应于在该已编码数据上的一种预期保持效应。

一种存储多个指令以便提供约束代码的代码本的非暂时性计算机可 读介质,其中这些指令包括:接收一个单元间耦合感应错误的一个参数的 一个可允许值,该单元间耦合感应错误从在多个非易失性存储器(NVM) 单元之间的耦合所导致;以及定义该代码本从而使得基于该参数的该可允 许值排除禁止值组合。

该参数的该可允许值是一个单元间耦合感应错误的一个最大可允许 量值;其中读取某一个NVM单元以便提供该某个NVM单元的一个阈值 电压的估计;并且其中与某一个NVM单元相关联的一个单元间耦合感应 错误的量值表现在(a)该某个NVM单元的一个希望阈值(假设没有单元 间耦合)和(b)该某个NVM单元的该阈值电压的该估计之间的差。

该非暂时性计算机可读介质可以存储多个指令以便定义该代码本从 而使得排除多个禁止值组合,预期这些值导致具有超过该最大可允许量值 的量值的一个预期单元间耦合感应错误。

该非暂时性计算机可读介质可以存储多个指令以便定义该代码本从 而使得排除至少一个禁止值组合,预期该至少一个禁止值组合导致具有低 于该最大可允许量值的量值的一个预期单元间耦合感应错误。

该非暂时性计算机可读介质可以存储多个指令以便定义一个希望阈 值-电压范围分配,该希望阈值-电压范围分配可以包括在不同程序级的至 少两对电压阈值分布之间的一个不均匀缝隙。

该非暂时性计算机可读介质可以存储多个指令以便定义在一个第一 对程序级的一个第一对电压分布之间的一个缝隙,该缝隙低于在一个第二 对程序级的一个第二对电压分布之间的一个缝隙,其中该第一对程序级低 于该第二对程序级。

这些禁止值组合与多个邻接NVM单元的多个禁止实际阈值电压组合 相对应。

该非暂时性计算机可读介质可以存储多个指令以便基于(a)存储在 该NVM阵列中的多个代码字上的一种预期保持效应和(b)禁止值组合, 定义一个希望电压阈值分布。

该非暂时性计算机可读介质可以存储多个指令以便定义在多个等级 之间的该希望阈值-电压范围分配,从而使得将(a)存储在该NVM阵列 中的一个合法值组合的一个值变化成一个禁止值组合的概率相对于(b) 该合法值组合的值变化成另一合法值组合的概率提高。

该非暂时性计算机可读介质可以存储多个指令以便检测预期由于保 持因此将其值改变成一个禁止值组合的一组合法值组合;以及将该组的至 少一个合法值组合定义为一个禁止值组合。

该非暂时性计算机可读介质可以存储多个指令以便确定该单元间耦 合感应错误的该参数的该可允许值。

该确定响应于将数据写入到这些NVM单元的一个顺序。

该顺序从由左到右编程、广度优先编程和开环编程构成的一个组中选 择。

该非暂时性计算机可读介质可以存储多个指令以便定义该代码本,从 而使得基于该参数的该可允许值以及预期有待由多个邻接NVM单元存 储的多个值之间的多个差,排除禁止值组合。

该非暂时性计算机可读介质可以存储多个指令以便定义该代码本,从 而使得基于该参数的该可允许值、预期有待由多个邻接NVM单元存储的 多个值之间的多个差以及这些NVM单元的编程的顺序,排除禁止值组合 。

附图简要说明

图1A展示了假设(理论上)没有单元间耦合的每单元2位的NVM 单元的一个阈值分布;

图1B展示了由于单元间耦合导致的每程序级的多个阈值分布的拓 宽;

图1C展示了以常规方式连接到相对应三条字线和三条位线的九个 FG存储器单元;

图2展示了在一个给定单元(“C”)及其多个邻近单元(“Nn”) 的多个浮置栅极之间的单元间耦合电容;

图3、图6A-图6C、图7A、图9A、图12A、图13、图14和图17 是根据本发明的各种实施例的多个代码的多个状态机的多个示例;

图4A展示了根据本发明的一个实施例的一种受约束编码系统(或调 制编码系统);

图4B总体上展示了一种编码器的一个实施例;

图4C总体上展示了一种解码器的一个实施例;

图5A展示了现有技术的闪存存储器数据流的一个示例;

图5B展示了根据本发明的一个实施例的闪存存储器数据流的一个示 例;

图7B、图9B和图12B是多个邻接矩阵的多个示例,这些示例表现 了根据本发明的各种实施例的图7A、图9A和图12A的图表。

图8A-图8B和图10A-图10D展示了根据本发明的各种实施例的在编 码容量和T/L比之间的关系;

图15展示了了已存储程序级的保持的效应;

图18-图19展示了根据本发明的各种实施例的多种方法;

图20展示了根据本发明的一个实施例的图19的方法的一些阶段;

图21A-21B表现了根据本发明的一个实施例的一个代码的一个状态 机;以及

图22展示了根据发明的一个实施例的一个用于编码的查询表。

附图详细说明

本披露可以描述多于一个发明,并且每个发明的多于一个实施例可以 被描述。

尽管可以在单个实施例的背景下描述本披露的各种特征,但还可以分 离地或在任意合适组合中提供该特征。相反地,尽管可以为清晰在多个分 离实施例的背景下描述本披露,但本披露还可以在单个实施例中实施。此 外,应理解本披露可以以各种方式执行或实践,而且本披露可以在除以下 在此所描述的多个示例性实施例中之外的多个实施例中实施。在本说明和 在权利要求中呈现的这些说明、示例、方法和材料不应解释为限制,而应 解释为展示性的。

在此所阐述的说明的一些部分可以按照在存储器内对数据位或二进 制数据信号的操作的算法和符号表示而呈现。这些算法说明和表示可以是 由数据处理领域普通技术人员用来将其工作的内容向该领域普通技术人 员传达的技术。算法在这里并总体上被认为是导致所希望结果的动作或操 作的自相容序列。这些包括多个物理量的物理操纵。通常,尽管不必要, 这些量采用能够存储、传递、组合、比较、以及另外地操控的电或磁信号 的形式。这被证明有时在(主要由于公共使用的原因)涉及如位、数值、 元素、符号、字符、术语、数字等等的这些信号是方便的。然而,应理解, 所有这些和相似术语与适当的物理量相关联并且仅是应用到这些量的方 便的标签。

除以其他方式具体陈述之外,如从以下讨论明显,利用术语例如处理 、计算、运算、确定等的讨论可以涉及计算机或计算系统或相似电子计算 装置的行为或过程,该计算系统将在该计算系统的多个寄存器或多个存储 器内表现为物理的例如电子的量的数据操纵或变换成在该计算系统的多 个存储器、多个寄存器或其他这些信息存储、传输或显示装置内相似地表 现为物理量的其他数据。

尽管可以关于某些实施例示出并描述在此所披露的本发明的任意内 容,但某些等效变更和修改可以在阅读并理解本说明书及其附图之后对本 领域普通技术人员发生。关于可以在此披露的各种元素或部件或过程步 骤,用来描述这些元素或部件或过程步骤的术语(包括对“意义”的任意 引用)可以对应于(除以其他方式指出之外)任意元素或部件或执行所描 述元素或部件的具体功能的过程步骤或多个过程步骤(例如,其是功能上 等效的),即使不在结构上等效于执行在此所展示的多个示例性实施例中 的功能的所披露结构。另外,尽管可以关于若干实施例中的仅一个披露本 发明的特定特征,但在可以希望并对任意给定或特定应用有利时,该特征 可以与其他实施例的一个或多个特征组合。

本披露总体上涉及一种用于将“用户数据”编程并从多个NVM单元 读取用户数据的“译码系统”。该译码系统可以一般包括两个区块:一个 仅在存储器写入期间操作的编码器区块,以及一个仅在存储器读取期间操 作的解码器区块。

一般地,不同于其他存储介质(例如CDROM),基本上不存在对将 数据写入到其中可以写入任意数据模式的闪存存储器的能力的物理限制。 然而,如在本披露中所描述,某些数据模式可能是有问题的,例如使得这 些阈值电压分布更宽的数据模式。约束(或受约束)译码(还称为“调制 译码”)用来避免导致这些宽分布的某些类型的数据序列。例如,邻接具 有一个最高可能Vt的数据存储具有一个最低Vt的数据。“邻近数据”可 以是在一个邻近FG单元中的数据(如以上所描述)。(“FG”一般是 具有电荷存储介质例如一个导电层(或“浮置栅极”)以便存储布置在该 器件的控制栅极和沟道之间的电荷(电子和空穴)的一种FET型器件。 浮置栅极不连接到任意事物,其是“浮动的”。存储在浮置栅极中的电荷 的量影响器件的阈值电压Vt。)

在此所描述的技术还可以应用到具有两个不同存储区(每个都基本上 充当单独存储器单元)的多个NROM型单元。(“NROM”一般是一种 具有电荷俘获介质例如氮化物层,以便在分别接近源极和漏极扩散区的两 个离散区域中存储多个电荷(电子和空穴)的FET型器件。由于电荷俘 获介质不是导体,因此多个电荷趋向于停留在其被发射处。)

根据本发明,一般地,约束(或受约束)译码技术应用到正在写入到 NVM例如MLC NAND闪存的数据,以便紧接着干扰在一个给定单元“C” 中写入的数据减小单元间耦合效应,由此促进使得这些阈值电压分布更狭 窄。

缩短读取过程、编程过程或擦除过程并由外部纠错码确定错误可以是 有价值的。读取过程、编程过程或擦除过程的潜伏期增益可能比ECC的 潜伏期损失大得多。

所提到的方法、装置和计算机可读介质可以将纠错模块的“利用率” 最大化。换言之,如果在产品寿命的开始,ECC纠正极少错误或少于其 能够纠正的错误,例如因为在新装置中存在极少错误,则存在允许以更多 数据错误(保证该数据错误有待由ECC纠正)为代价将其能力最大化并 将存储器调整到更高性能的所提供的方法、装置和计算机可读介质。

约束译码:一种受约束系统由有待记录(或传输)的一组受约束“好” 或“可允许”单元电荷级序列定义。约束(或受约束)译码集中在多个受 约束系统的分析、该组可允许单元电荷级序列的确定和/或将多个任意用 户序列变换成多个有效受约束序列的多个有效编码器的设计上。

一般地,在此所披露的(多种)技术可以用来增加一种NVM产品例 如闪存存储器的存储容量,或减少、防止或修复如果没有使用这种(或这 些)技术则可能发生的位错误,并可以由此提高一种NVM产品例如闪存 存储器的稳定性(数据完整性)。

在进行“问题”和所提出的“解决方案”的说明之前,可以做出某些 假设、定义和/或澄清。(然而,应认为这些参数是展示性的而不是限制 。)

1.仅可能将电荷添加到多个单元(或多个半单元)。不能通过除了 擦除整块多个单元之外的方式将电荷从多个单元(或多个半单元)移除

2.当将一个给定单元编程到一个所希望的程序级(Ln)时,编程以 小编程步骤(少量电子的注入)继之以验证(读取产生的Vt)的反复方 式典型地进行。这可以称为“p-v-p-v”,意思是反复地编程然后验证,直 到基本上实现一个所希望的阈值电压。

3.可以将一组(多个)单元循序编程,例如可以将一行n个单元逐 单元编程,在从左到右的方向上进行,将一个单元编程到其希望Vt,然 后进行到将下个单元编程到其Vt,等等,并且当达到一行的(右手)端 时,向下将下个行循序编程(在下个行的左手端再次开始)。

4.可以将一组单元逐渐地编程,如下:

i.在L0开始(最低、最小Vt,典型地是擦除状态),将需要 使其Vt升高到1级(L1)或更高的所有这些单元同时编程。未在该步骤 中编程的这些单元将仍(名义上地)保持在L0。(单元子集的这种编程 基本上同时进行,并且可以对于每个单元以增量方式执行,如在以上所描 述。)

ii.接下来,仅将需要使其Vt升高到2级(L2)或更高的这些 单元编程。未在该步骤中编程的这些单元将(名义上地)保持在L0或L1 。(单元子集的这种编程基本上同时进行,并且可以对于每个单元以增量 方式执行,如在以上所描述。)

iii.接下来,仅将需要使其Vt升高到3级(L3)或更高的这些 单元编程。未在该步骤中编程的这些单元将(名义上地)保持在L0或L1 或L2。(单元子集的这种编程基本上同时进行,并且可以对于每个单元 以增量方式执行,如在以上所描述。)

iv.等等,直到已将在最高等级(Ln)的这些单元编程到该等级 Ln。

根据本发明,一般地,约束译码应用到正在写入到NVM的数据,因 此对于一个给定单元“C”,该给定单元“C”及其多个邻近单元的电荷 级应共同地坚持应用到它们的一些标准。

每当人们使用反复编程时,一个给定单元“C”在其编程完成时的 Vt的值是在一个可容许容差内的额定值。因此,已解释在邻近“C”的这 些单元中已经存在(在此时)的电荷的任意效应。因此,单元“C”的 Vt的值仅受任意随后的电荷添加到其多个邻近单元中的一个或多个的影 响。

根据本发明的一方面,是否可容许在多个邻接单元中的多个电荷级的 一个给定组合的确定基于每个单元的等级的值。在本发明的一个实施例 中,标准可以基于在任意给定单元“C”的编程完成之后添加到该单元“C” 的多个邻近单元的电荷之和。

例如,关于增量编程方案,由于具有一个较低程序级的一个给定单元 “C”的多个邻近单元“N”对在该较低-L邻近单元编程之后编程的该给 定单元“C”的效应可能已经在将该给定单元“C”编程的反复(p-v-p-v) 过程中被调节,因此这些邻近单元“N”不存在问题。

在另一实施例中,额外的电荷可以每个都由表现在每个单元和给定单 元“C”之间耦合的等级的一个乘法系数加权。

根据本发明的一个实施例的方面或特征,可以约束并排列数据,从而 使得存储在多个邻近单元(“N”)中的电荷限于给定单元(“C”)的 已感测阈值电压或不影响该阈值电压。

根据本发明的一个实施例,采用受约束译码以限制浮置栅极单元间耦 合的效应。具体地,我们禁止使用导致任意单元的极高Vt移位的这些邻 接单元电荷组合。我们的分析示出了每级信息容量所需要的牺牲可以是微 小的。在一个示例中,对于带有在一个单元及其多个邻近单元之间的至多 10级总电荷差的多个7级单元,码率高于0.95。这可以多于由较大数目 的等级引起的容量增加导致的偏移。

以下表格呈现了16级MLC NAND闪存的编码概念的一个示例。它 们被编程到的等级(L)是0..15(理解“0”可以是擦除状态)。每个单 元由一个方块表现,并且每个单元的等级(L)由该方块中的数字示出。 示出了在三行和三列中排列的九个存储器单元。中心单元是感兴趣单元 (“C”)。其他八个单元是邻近单元(“N”)。这九个单元代表在存 储器单元阵列中的(多得多的)多个存储器单元。

在该示例中,编程顺序是早先描述为增量编程的编程顺序,借此目标 等级是1级或更高级的全部单元同时地并增量地编程到等级1;然后目标 等级是2级或更高级的单元同时编程到等级2,等等。因此,一个给定单 元“C”的阈值电压仅受在其自己的编程完成之后添加到其多个邻近单元 的电荷影响,如果该电荷存在,如由以下数值示例所展示。

以下表格示出了非译码的(或“原始的”或“用户”)已存储信息的 九个单元:

8 14 2 3 9 13 11 15 6

多个正差之和(换言之,在中心参考单元(“C”)及其多个邻近单 元之间多个差之和,其中在邻近单元和多个参考单元电荷级之间的减法是 正数)产生(14-9)+(13-9)+(15-9)+0=15。

以下表格示出了相同的九个单元,但带有这些邻近单元的一组不同等 级。

8 10 2 8 9 12 11 11 9

这里,多个正差之和是(10-9)+(12-9)+(11-9)+0=6。因此非常 明显的是一些单元级组合导致比其他单元级组合更小的对单元“C”的影 响。约束的一个示例是限制正差之和小于15。由于该约束,排斥第一前 述等级组合而容许第二前述等级组合。

注意在该示例中可以改变在与感兴趣单元相同的行(位线)上的多个 邻近单元的多个值(多个等级),可以改变在与感兴趣单元相同的列(字 线)中的多个邻近单元的多个值(多个等级),并且可以改变与感兴趣单 元成“对角”的多个邻近单元的多个值(多个等级)。

对于这些可能性中的每个(约束在相同行、相同列或对角线上的多个 邻近单元的值),可以使用任意加权算法给予一些邻近单元比其他单元更 大的权重,并且也可以将远离感兴趣单元的多于一个单元的多个单元的效 应纳入约束算法。

当然,约束数据意思是可以写入少于所有可能数据(单元-等级)组 合的数据组合。然而,通过提高稳定性并且使得能够写入更多数据级(通 过使分布变窄),可以实现存储容量的总体增加。

约束的数值例如多个正差之和的最大可允许值(在以上示例中是15) 的选择表现了折衷:放松约束(在示例中的一个更高值)允许可能组合的 更大的分数,但减小不同电荷级的可能数目。使用L表明等级的数目并 使用R表明可容许的组合的分数,N个单元的一个序列的有效存储容量 是R x LN

在本发明的一个实施例中,可以选择阈值从而使得根据前述表达将容 量最大化。实际数目可以取决于各种参数例如单元内和单元间电容。

减轻单元间耦合的一些示例

在受约束译码系统中,在具有4个程序级的一个示例中,其中在一个 给定闪存单元(C)及其到左侧(NL)和到右侧(NR)的多个邻近单元 之间的多个正电荷级差之和的一个数字输入序列受限到不多于一个阈值 例如5。

换言之,如果数据导致多个正差之和多于5,则将该数据处理为一个 问题序列,并且在写入(编程)之前将其变换成一个非问题序列。

例如,以下编码器/解码器约束可以为D(C)=Max{N1-C,0}+Max (Nr-C,0}≤5实施。

可以根据以下查询表或从一个状态机产生的数字组合实施一个简单 译码方案,并且处理用p-v-p-v将一组单元立即编程的情况。

考虑码率=2/3的一个示例,以下查询表可以从该示例建立。

可以使用一个预编译查询表或由一个状态机或由其他装置例如一个 处理器执行编码方案(映射)。该映射可以表达为一个函数、查询表或表 达为一种算法。

约束可以是在字线方向上或在位线方向上的1维约束。约束还可以是 2维的、3维的,涉及“对角线的”多个邻近单元以及多个非直接邻近单 元(例如,一个邻近单元的邻近单元)。

还可以注意当关于目标单元的周围单元使用2-D约束编码和解码时, 可能在执行编码或解码操作之前必须读取在位线/字线/对角线方向上的 相关邻近单元。例如,当执行逐行译码时,读取先前行(字线)以便编码 和解码。

编码功能可以一对一或一对多执行,即,人们可以以多于一种方式将 相同信息任选地编码。然而,编码应是明确的;即,一个给定单元等级组 合应对应于单个信息值。

这些邻近单元可以是在闪存存储器阵列中的单元的任意集合(或组), 例如在字线方向上的一个距离4和在位线方向上的一个距离5,等等。

对输入用户数据的约束可以是任意函数,例如单元的平均值、最大值 、最小值、多个差之和、仅多个差,等等。

图3是根据本发明的一个实施例的用于3级MLC闪存的合法输入序 列的一个状态机说明的一个示例,该3级MLC闪存带有在多个邻近单元 之间的多个+/-1电荷级差的多个约束。一个不同的约束可以是没有序列 在多个邻近单元之间具有多于一个2个电荷级差,并且可以由以下方程描 述,在该方程中N是距离1(邻接单元)的在相同字线中的C的邻近单 元D(C)=|N-C|≤2。

状态机具有三个状态41、42和43和多个边缘,每个边缘展示了一个 位的一个合法值。可以由经过一个状态机的状态来获得一个合法代码字。 (任意合法代码字对应于多个状态的一个可容许序列。)

一种示例性受约束编码系统

图4A总体上展示了一种实施在此所描述的技术的受约束编码系统 (或调制编码系统)可以包括编码器和解码器块。一般地,在“写入”期 间(当将存储器单元编程时),受约束编码器将多个问题数据序列变换成 然后写入到闪存存储器的多个非问题序列;在“读取”期间,将这些受约 束序列变换回到这些原始的(有问题的)序列。

受约束译码编码器50可以不允许(换言之,将限制)一个具体定义 的序列写入到闪存存储器52,并且将该序列转换成受允许序列。

受约束译码解码器54可以将来自从闪存存储器阵列读取的数据的原 始样式解码,并可以与一种纠错码(ECC)或算法组合。

可以理解尽管编码和解码对于有意义系统操作都是需要的,但在一些 情况下(例如一个存储器读取器)可以仅存在一个。

图4B总体上展示了一种编码器的一个实施例。其包括接收输入数据 的一个移位寄存器62。移位寄存器62继之以一个编码器变换功能64,该 编码器变换功能64执行约束编码以便输出有待写入到闪存存储器50的已 编码数据。

图4C总体上展示了一种解码器的一个实施例。其包括从闪存存储器 52接收读取数据,并可以向一个纠错模块74发送禁止位组合的一个有效 约束检查单元72。经有效约束检查单元72将值的已纠错组合发送到执行 约束解码以便输出已解码数据的一个解码器变换功能76。

数据流的一个示例

图5A展示了一种包括现有技术的闪存存储器芯片的系统的一个示例 。

数据源80向一个闪存存储器控制器83的一个外部纠错码(ECC)编 码器82提供数据。ECC编码器82执行纠错译码并向一个闪存存储器芯 片85的一个数据扰码器84提供错误保护数据。将来自数据扰码器84的 已扰码数据发送到调制器86。将已调制数据从调制器86发送到闪存存储 器阵列88。解调器90可以从闪存存储器阵列取得数据并解调该数据。将 已解调数据发送到闪存存储器芯片85的反扰码器92。将来自解扰码器92 的已解扰码数据发送到闪存存储器控制器83的一个外部ECC解码器94 。将已ECC解码(并且如果需要则已纠正)数据发送到一个目的地96。

图5B展示了根据本发明的一个实施例的一种包括闪存存储器芯片的 系统的一个示例。

通过包括一个约束编码器112、一个约束解码器116和一个纠错单元 114,图5B的系统不同于图5A的系统。约束编码器112可以在数据扰码 单元84和调制单元86之间连接,或可以别处地位于在闪存存储器阵列 88中结束的写入路径。纠错单元114和约束解码器116可以在解调器90 和解扰码器92之间,或在以闪存存储器阵列88开始的读取路径的任意位 置连接。

设计空间的维度

关于哪些单元处理为“邻近单元”,“邻域”的维度可以是沿一条字 线、一条位线的、沿对角线的、或这些的任意组合。该“邻域”的距离不 限于直接邻接给定单元的多个单元,但可以包括一个邻近单元的邻近单 元,等等。

尽管已描述在一个给定单元(C)及其多个邻近单元之间多个差之和, 但应理解可以采用其他多个差函数(并且包括在“和”的定义下)——例 如,全部多个邻近单元的多个等级之和(或平均值)、加权和(或平均值) (例如,在右侧或左侧上的多个单元具有比在上侧或下侧的多个单元更多 的权重,并且在对角线上的多个单元的权重甚至更少)、基于这些邻近单 元和该单元之间等级差的函数。

实际函数通常对应于编程顺序。例如,如果编程从左侧进展到右侧(并 且邻近单元仅在右侧和左侧),则,给定在一个单元的编程的结束验证值, 由于一个给定单元右侧的单元是在该给定单元之后被编程的唯一邻近单 元,因此该给定单元仅受其右侧单元的等级影响。

编码和解码机制可以实施为一个查询表、一个函数或一种算法。(可 以使用组合硬件、一个有限状态机或一个处理器/控制器执行函数和算法 。)

注意以上所有是正交的,除了在相关邻域上的约束阈值函数和编程顺 序的依赖性之外。

本披露的技术可以应用到的一些重要组合可以包括但不限于

从左到右编程、左侧和右侧邻近单元、在编程期间的Vt验证

1.可以基于到在考虑中的单元右侧的至少一个单元的(绝对)等级(即, 不是差)单独确定阈值。例如,考虑单元i,单元(i+1)的等级不应超 过L。(这实际上是对所有单元的最大等级的一个简单约束。)(这在以 上称为“循序”编程)

2.关于术语“序列”,应理解这不指代一个时间序列。相反,其是一个 空间序列,即有待被编码或编程到多个邻近单元的一个序列的信息符号的 一个序列。还注意一般没有在信息符号序列中的信息符号和存储器单元之 间的1-1映射,因为这取决于在单元中等级的数目。此外,由于受约束编 码,因此在一个给定单元中可用等级的数目取决于在多个邻近单元中使用 的等级。因此,优选术语可以是信息的一个组块(其可以描述为该信息的 值(正如可以视为一个数字的多个位的一个序列))和在共同地用于存储 该信息值的多个邻近单元的组块中的一组所列举等级组合。

“广度优先”编程、左侧和右侧邻近单元、在编程期间的VT验证(这 在以上称为“增量的和反复的”编程)。这里,第一步可以是将除了需要 0级的单元之外的所有单元编程到1级。这与验证同时完成。接下来,将 应在2级或更高的单元同时地编程并验证,等等。

因此,单元i可以(以在其自己的编程期间通过验证不被处理的方式) 仅受单元(i-1)和(i+1)影响。此外,如果将这些单元编程到高于i 的多个等级,则i可以仅受这些单元之一或两者影响。最终,该效应可以 仅由它们的等级高于单元i的等级的程度来确定。

以上,“开环”编程(无Vt验证)。这里,在最简单的情况下,因 为当确定多少电荷注入到单元i借此其他单元在0级时的基础假设,所以 阈值由所有邻近单元的这些等级的(可能加权的)和来确定。代替地,人 们可以假设在这些邻近单元中的L级基线并因此计划电荷注入。现在, 阈值将基于在每个邻近单元的等级之间的(有符号的)差的(可能加权的) 和以及已假设的基线等级。

已采用其他途径以便减轻单元间耦合在多个Vt分布的形状上的效应 (拓宽),并因此增加可能电荷级的数目。

标题为“在闪存存储器中FG-FG耦合的最小化(Minimization of  FG-FG Coupling in Flash Memory)”的美国专利No.6,996,004(“法斯通 等人”)披露了一种声称基本上实现单元间耦合的完全调节的编程顺序。 在此所提出的构想是以在每个步骤在每个单元中的Vt的值的单独测试, 将所有单元同时地且增量地编程。调整该增量从而使得所有单元的编程几 乎同时完成。由于在一个单元自己的编程完成之后其Vt仅受其多个邻近 单元影响,因此充分小的增量导致为所有单元获得所希望的Vt值的能力 。这样,可以实现多个狭窄Vt分布,可以容许大量的等级,而不以“禁 止”组合的形式做出牺牲。

法斯通等人的方案可能在某些情况下显得优于在此所提出的技术。然 而,可归因于法斯通等人的益处以复杂性、缓慢编程为代价。同样,每当 存储在一个给定单元“C”的这些邻近单元中的这些电荷的效应改变时, 该给定单元“C”的Vt以比其原意图等级更多的等级改变,单元“C”必 须不被充电并且仍将在比所意图等级更高的一个等级结束。同样,经常如 此,每当编程在一条字线上同时完成时,法斯通等人的方法不覆盖字线间 耦合与对角线耦合的这些效应。

在本发明的另一实施例中,这些编程顺序相似于由法斯通等人提出的 编程顺序,但可容许编码受约束。由于约束,这些编程步骤可以更粗糙, 由此加快编程。然而,因为有益的编程顺序,所以该约束可以比其他方式 更放松,由此减小由未使用组合引起的容量损失。同样,这些约束容许消 除这些问题状况例如在先前段落中所描述的问题状况。

标题为“带有耦合补偿的非易失性存储的读取操作(Read Operation  for Non-Volatile Storage with Compensation for Coupling)”的美国专利 (“莫勒西”)No.7,613,068披露了一种借此在不考虑单元间耦合的情况 下完成编程的方案。然而,在读取时,已知耦合系数与一组单元中这些单 元的这些已测量Vt值一起用来取得这些单元的这些所意图等级。

莫勒西方案特征是以复杂解码为代价的简单编码。同样,尽管法斯通 等人的方案不需要单元间耦合系数的任意知识,但必须为有待操作的方案 准确估计它们(并且必须是跨存储器阵列一致的)。因此,尽管莫勒西的 方案理论上也可以在没有编码牺牲的情况下实现大量等级,但其实践性是 有问题的。应注意不同于法斯通等人的方案,受约束译码还需要单元间耦 合的一些知识。然而,仅需要在最大可能耦合上的一个上界,而不是实际 耦合的一个接近估计。

本发明的另一实施例将编码约束(受约束译码)与智能解码组合。例 如,受约束译码用来将一个给定单元“C”的Vt的变化限于小于两级, 并且智能解码随后用来消除剩余效应。该结果可以是一种比单纯的约束编 码应用较少受约束的编码,由此提高编码效率并因此增加容量,同时保持 解码相对简单并且部分放松对单元间耦合参数的估计的准确性和对其一 致性的需求。

贯穿本发明的说明,讨论一个给定单元“C”并且暗示可以同样地处 理任意单元。然而,实际上,由于共同考虑一组有限的单元,因此存在位 于该组的边缘的多个单元。这些需要不同的处理。然而,如同从本发明的 说明和基础现象容易理解,这仅需要对该组邻近单元的调整。

每当存在独立编程的多组邻近单元时,人们还可以考虑组间效应,该 组间效应主要是在邻近组的多个边缘单元之间的耦合。在本发明的一个实 施例中,可以通过(以一些可用区域的损失)将邻近组相互物理上远离来 消除这种效应。在另一实施例中,多个边缘单元的这些可容许等级受约束 从而使得确保例如在邻近的不同组单元的这些等级之间的这些差不超过 某个值。

以下示例展示了闪存存储器受约束译码架构的一个示例:

1.给定编程顺序,将对单元的Vt的改变表达为其多个邻近单元的这 些电荷级的一个函数。我们将该函数称为FG单元间耦合效应严重度函数 。

2.决定约束T的值,其是在1中的函数可以假设的最大值。

3.根据2,分布宽度的分量和耦合参数,取得分布的宽度。

4.基于Vt的范围、在3中的分布宽度和在邻接分布之间的所需要缝 隙,确定电荷级(包括擦除级)的可容许数目。

5.通过受约束译码技术,定义受约束代码并确定最大码率R≤l; 即,满足对函数的约束的单元等级组合的分数。

6.按FSC=R.log2(L+1)计算闪存单元存储容量(FSC),其中L+1 是每单元的可容许电荷级(包括由受约束译码使得可能的这些额外等级) 的数目。

7.算法上构造一个编码器和一个解码器,或将编码器和解码器构造 为一个查询表。这里,人们可以选择为简单性折衷一些容量。

8.在将闪存单元存储容量最大化的约束值的搜索中重复2-7。

备注。

在2中的约束值可以在等级之间不同。

在将约束值最优化中,人们可以为可靠性(耐用性、保持和瞬态位错 误率)折衷容量。

用于广度优先的和偶数-奇数的编程顺序的译码方案

以下文本提供了在两个显著编码顺序广度优先的和偶数-奇数的背景 下使用受约束闪存编程的一个示例。人们可以使用未约束情况为它们中的 每个作为一条基线。这导致R=1(无约束),但还导致最小数目的电荷 级。在这两种情况下,我们考虑相对简单的1-D情况(单个非常长的行 的单元)。2-D情况尽管更复杂,但如果单元的2-D块正在被编程则是基 本相同的。单元c的严重度函数(步骤1)将标示为D(c)。

图6A展示了一种T用于闪存广度优先编程顺序的-受约束码的图表 表示G1,包括1+4L-2T个顶点。一个单元能够存储多个离散等级{0...L} 。

图6B展示了(a)在多个奇数系数顶点i和标号为i+1+4N的多个 偶数顶点之间的标记为N的多个额外边缘,其中N=1,2,3,..,|(4L-2T- i)/4)|,以及(b)在多个偶数顶点j(j≥4)到分别标记为(T-L+1), (T-L+2),...,(T-L+(j/2-1))的多个顶点(4L-2T-1),(4L-2T-3),...,(4L-2T-(j-3))之 间的多个额外边缘。

图6C展示了只有当标记唯一时在任意奇数顶点到所有其他奇数顶点 (包括其自身)之间添加的多个额外边缘:到顶点1的一个边缘标记为L, 到顶点3的一个边缘标记为L-1,等等,其中到顶点4L-2T-1的边缘 标记为T-L+1。注意为陈述的简单,在边缘上的由多个逗号分离的多 个数字表现在带有相同来源和目的地顶点的多个分离边缘上的多个不同 标记。

1.广度优先编程顺序(1-D)

考虑多个电荷级{0,1,...,L}和以下编程顺序:将目标等级是1级或更 高级(Level(c)≥1)的所有单元编程到1级,包括Vt的验证;接下来, 将s.t.Level(c)≥2的所有单元编程到2级,等等。因此,单元c仅受到 电荷级高于其自身的其多个邻近单元,并且仅受到在c的编程结束之后添 加到它们的电荷的影响。

因此,ΔVt(c)∝D(c)并且D(c)=Σneighborsmax(Levrel(neighbor)-Level(c),0)

其中Level(neighbor)——单元的邻近单元的电荷级。

定义:一种用于闪存广度优先程序顺序的1-D T-受约束代码是在字符 表∑={0,1,...,L)上的一组有限字码,从而使得在字码w=u1u2...un中,对 于在w中的任意字母ui,2≤i≤n-1(没有边缘):

max(ui-1-ui,0)+max(ui+1-ui,0)≤T,L≤T≤2L-1。

本领域普通技术人员将认识到该定义扩展到2-D T-受约束代码是直 接的。

代码构造:在图6A-图6B中示出了一种用于闪存广度优先程序顺序 的T-受约束代码的一个一般图表表示。穿过该图表生成合法代码字。该 图表由1+4L-2T个顶点构成。为阐述方便,我们将图表边缘分成三个 组成部分。

图6A示出了所有图表610顶点。第一顶点没有被标号。这些边缘如 下:用标记为L直到T-L+1的边缘将第一顶点分别连接到所有奇数顶 点(1,3,...,4L-2T-1)。所有奇数顶点每个都用标记为{[(4L-2T-2)/4]+ 1,...,T-L},{[4L-2T-4)/4]+1,...,T-L},{1,...,T-L}的边缘被连接到第一 顶点。用标记为0的一个边缘将多个奇数顶点连接到多个连贯偶数顶点。 用多个边缘{0,...,T-L}将偶数顶点2,4,...,4L-2T分别连接到第一顶点。 图2(b)顶部示出了对于N=l,2,3,...,[(4L-2T-i)/4],从任意给定奇数顶 点i到多个偶数顶点(i+1+4N)的标记为N的一个边缘。

图6B示出了从多个偶数顶点j(j≥4)到多个奇数顶点(4L-2T- 1),(4L-2T-3),...,(4L-2T-(j-3))的一个边缘,其中多个边缘分别标记 为(T-L+1),(T-L+2),...,(T-L+(j/2-1))。这些边缘和顶点共同标示为 620。

图6C示出了从任意奇数顶点到所有奇数顶点(包括该任意奇数顶点 自身)的多个边缘:到顶点1的一个边缘标记为L,到顶点3的一个边缘 标记为L-1,等等,其中到顶点4L-2T-1的边缘标记为T-L+1。这 些边缘和顶点共同标示为630。

在图6A中的图表G1代表用于带有广度优先编程顺序的T-受约束闪 存译码的语言。

考虑在图表G1中的称为V1的一个顶点。V1具有一个或多个向外边缘 。让我们选择一个边缘并且沿一条确定路径穿过两个顶点,从而使得 V1V2V3被连接(G1被牢固连接)。在V3中初始边缘的标记和任意向外边 缘的标记之和至多是T。来自V1的任意输出边缘和来自V3的任意边缘的 组合(其中V1V2V3被连接)产生从0到T的所有可能值。

通过允许人们从任意边缘开始并确保所有三个符号序列都是合法的, 我们确保“滑动窗口”在这些单元位置上的正确性。■

奇-偶编程顺序(1-D)

考虑一个借此首先将多个偶数编号的单元编程,继之以将多个奇数编 号的单元编程的方案。由于奇数编号的单元的多个邻近单元都是偶数编号 的,因此其编程在这些邻近单元的编程完成之后发生,因此其不受影响。 相反,一个偶数编号的单元受其两个邻近单元的总电荷影响。因此,

D(c)=0,coddLevel(c-1)+Level(c+1),ceven

显然,没有分布变窄为多个奇数编号的单元发生(由于没有拓宽发生) 。与广度优先编程不同,多个偶数编号的单元受到与其自己的等级无关的 放置在其多个邻近单元中的总电荷影响。因此,多个偶数编号的单元的所 有Vt分布相等地受影响。因此,编码和解码过程仅考虑这些奇数单元, 即在译码方案中,u1u2u3的序列代表在多个奇数位置例如1、3、5中的单 元。注意当计算闪存存储容量时(算法1步骤6),码率R仅涉及这些单 元中的一半。

定义:一种用于闪存奇-偶程序顺序(仅考虑偶数单元)的1-D T-受 约束代码是在字符表∑={0,1…,L}上的一组有限字码,从而使得在一个 字码w=u1u2...un中,对于在w中的任意字母ui,1≤i≤n-1:ui+ui+1≤T,L≤T≤2L-1。(仅多个奇数指数的单元包括在代码字中)。

因为如果T<L则用户单元绝不可能存储L级,并且如果T>2L-1 则不存在约束并且允许所有组合,所以我们允许L≤T≤2L-1。

代码构造:在图7A中示出了一种用于闪存偶-奇编程顺序的T-受约 束代码的一个一般图表表示。图表710由2L-T+1个顶点构成。用分别 标记为0,1,...,T-L的多个边缘将顶点1连接到其自身,并用标记为 L,L-1,...,T-L+1的多个边缘将该顶点1分别连接到顶点2,3,...,2L-T+1 。多个顶点2,3,...,2L-T+1用分别标记为{0,1,...,T-L},{0,1,...,T-L+ 1},...,{0,1,...,L-1}的多个边缘连接到顶点1。图7B示出了相对应邻接矩 阵720。

一种用于闪存偶-奇程序顺序的T-受约束语言由图表G2表现,在图 7A-7B中被描绘。

对于每个顶点i,2≤i≤2L-T+1,在图表G中,存在一个标记 为L+2-i的输出边缘。这些顶点中的每个含有范围从0到T-L-2+i 的多个输出边缘。因此,多个邻接标记的最大和是T,并且可以获得所有 较低和。

返回参见图7A,对于状态1,其多个输入边缘标记范围从0到L-1 (由于L≤T≤2L-1,T-L≤L-1),并且其多个输出边缘范围从 T-L+1到L。因此,多个邻接标记的最大和是T,并且可以获得所有较 低和。

在图7A中所描绘的图表G2是用于闪存偶-奇编程顺序的T-受约束代 码的香农覆盖,即图表G2生成有最小数目状态的用于闪存的T-受约束代 码的受约束语言。

由于G的顶点都没有相同标记的多个向外边界,因此G是确定性的 。让我们检查在图表G中的跟随组的所有单元。对于每个顶点i,2≤i≤ 2L-T+1,所有输出边缘指向顶点1。由于G是确定性的,因此在顶点 i中开始和结束的任意长度-2字码对于其跟随组是唯一的。关于顶点1, 由于将所有输出边缘标记为大于0,如L≤T,T-L+1>0,因此字码 00对于其跟随组是唯一的。因此,该图表的多个顶点的所有跟随组是不 同的,所以简化图表G。由于G被牢固连接,因此G是不可简化的:从 任意两个顶点u和v,存在一条从u到v的路径和一条从v到u的路径。 一条从任意顶点u到顶点v的路径是u1v

图表G是确定性的、已简化的并且不可简化的。因此,G是用于闪 存偶-奇程序顺序的T-受约束代码的一个香农覆盖。

在图9中示出了其中T=4,L=4的图表的示例及其相对应矩阵。

在以下讨论这些广度优先和偶-奇受约束语言的额外性质。这些额外 性质包括图6A是相对应语言的香农覆盖。

由图表G表现的语言S具有有限存储器,并且m(S)=m(G)=2。

检验在图表G中长度2的所有字码。用0结束的所有字码在顶点1 结束。因此用0结束的长度2的所有字码是多个聚焦字码。这对于用 1,2,...,T-L结束的所有字码是相同的。

关于用T-L+1结束的多个字码w1w2:如果w1∈{0,1,...,T-L}, 则字码在顶点2L-T+1中结束。否则,如果w1∈{T-L+1,...,L-1}, 则字码在顶点1中结束。对于用T-L+2结束的字码,如果w1∈{0,1,..., T-L},则字码在顶点2L-T中结束。否则,如果w1∈{T-L+1,...,L-2}, 则字码在顶点1中结束。

我们一般可以重复该检验,对于用T-L+K结束的多个字码,如果w1∈{0,1,...,T-L},则字码在顶点2L-T+(k-2)中结束。否则,如果w1∈ {T-L+1,...,L-k},则字码在顶点1中结束。G的存储器不是1,例如, 字码L-1可以在顶点1中或在顶点3中结束。因此,在G中长度2的每 个字码是聚焦字码。因此,G的存储器是2,并且由于G是S的香农覆盖, 因此m(S)=m(G)=2。

根据受约束译码理论,我们以N(l;S)注释在长度l的所有合法字码(字 码——位的块)的一种语言S。S的容量,即最大可用码率是:

Cap(S)=limllog2N(l;S)l

在非二进制字符表(每单元多个位、MLC)的情况下,我们需要将 先前方程规格化。假设每单元存在L个等级,该容量:

CapNorm(S)=limllog2N(l;S)llog2(L+1)

在寻找N(1;S)是复杂的情况下,我们可以通过受约束语言图表G,λ (ΑG)的相对应矩阵AG的Perron本征值(最高本征值)计算码率。在我 们的情况下:

CapNorm(S)=log2λ(AG)log2(L+1)

我们用各种不同的T和L值计算该方程。在图9A-9B中示出了多个 结果。

图9A展示了闪存偶-奇编程顺序受约束代码,T=4和L=4级单元 的图表表示910的一个示例。图9B展示了相对应矩阵920。

图10A-10D尤其展示了这些附图的随着约束T的线性增量而在容量 上指数增加的曲线1010-1040。例如,在16级单元,我们观察到当移动 到多个每单元高位架构(即,每单元更多等级——更高L)时,容量比较 相同T/L比率相对更高。

在图8A-图8B中示出了对于各种T和L值的广度优先和偶-奇编程 顺序的受约束代码的准确容量结果。由于字符表不是二进制的,因此语言 容量可以大于1。我们通过以每单元理想数目的位划分该容量将该容量规 格化,因此最大容量是1。

闪存存储器以典型地是2KB的多个页面编程。选择码率具有块大小 可能受页面大小限制的含义,或如果人们选择用高于页面大小的多个码率 工作,则应具有适当系统支持,例如交错写入。

步骤4:新容量/可靠性计算:

通过受约束单元间耦合使用电压阈值增益,我们可以计算闪存存储容 量(FSC)。我们将R表示为已选择码率,并且L表示为闪存单元中的 等级数目。闪存单元存储容量:

FSC=R·log2(L)

例如,考虑基线作为非译码情况,其中R=1并且L=4。每单元FSC =1log2(4)=2个位,如在图11A中所描绘。在我们使用码率0.95的受约 束译码的情况下,这些电压阈值分布变窄,并且导致我们可以存储5个等 级而不是4个,如在图11B中所描绘。新闪存存储容量是每单元FSC= 0.95log2(5)=2.2位,这是比非译码情况进一步10%增加的容量。

带有受约束译码的裕度增强还可以用来提高闪存稳定性(即,不添加 更多分布)例如耐用性和保持参数。作为受约束阈值的一个函数的精确改 进取决于具体制造技术。

步骤6:编码器和解码器构造

使用受约束语言图表,根据在步骤3中的代码定义,可以生成编码器 和解码器。第一,根据码率R,寻找适当p:q比率从而使得R=p/q,其 中p用于输入数据,并且q用于输出已编码数据。第二,必须将约束语言 图表相乘,因此每个节点都将具有Nq个输出边缘,其中N是每单元的等 级数目。可能需要状态切分算法以便实现q个输出边缘。第三和最终步骤 是在这些边缘上分配输入数据,从而使得每个边缘都将具有两个标记:编 码数据和解码数据。当在图表上前进,将输入数据变换成已编码数据时完 成编码,并且以相同方式反向完成解码。

闪存存储器可能遭受由于例如氧化物恶化引起的瞬时错误。为避免错 误传播,可以将适当纠错码或其他纠错技术与受约束闪存译码组合,这将 在相关工作段落中讨论。在一些情况下,可以用查询表代替一个状态机实 施编码器和解码器,以便消除来自受约束译码的错误传播。这种情况的一 个示例是其中受约束图表乘以q的相乘导致一个图表,在该图表中其多个 顶点中的至少一个具有(L+1)q个自引导边缘。

例如,考虑偶-奇编程顺序的情况,L=3,并且T=4。容量(即,最 优码率)是0.8913,并且在图9A中描绘了受约束语言图表。为简便,我 们为R=2/3的码率构造一个编码器和一个解码器。我们将p:q比率选为 2:3,即,编码器的输入是2个单元级,并且输出已编码数据是三个单元 值。解码过程反之亦然。下个步骤是将图表乘以输出单元的数目(3), (将图表相乘保持节点并构造长度3的多个新边缘,即通过在三个边缘上 前进,同时检测这些旧边缘)。在图12A中描绘了结果1210,在图12B 中描绘了相对应矩阵1220。

新图表是已编码数据的一个状态机。为将其转变成一个编码器/解码 器,我们需要分配用户输入数据,即在每个节点的多个输出边缘上的两个 单元值(存在42=16种可能性)。由于存在来自每个节点的多于16个输 出边缘,因此存在我们可以在不影响码率的情况下删除的多个冗余边缘。 例如,在第一节点中存在28个输出边缘,因此可以删除12个。可以任意 地完成输入数据分配,否则,导致其他译码性质。可以应用用于决定删除 哪些冗余边缘和怎样分配输入数据的各种算法。

在图13中给出了编码器和解码器的完整状态机1310的一个示例。事 实上我们具有一个带有在G3自引导到该节点的至少16个输出边缘的节 点,我们可以用如在以下所展示的一个查询表实施编码器/解码器。编码 器和解码器状态机的设计复杂度随着码率升高而增长。因此,人们可以选 择为简单性折衷一些容量。

2-D扩展

我们在二维和三维约束中扩展用于闪存存储器的受约束译码的定义。 当考虑用于闪存的2-D受约束译码时,除了在1-D方案中所需要的这些 线(字线)中这些单元的编程顺序之外,人们还应考虑相同线的编程顺序 。

用于带有其中字线长度N并且字线数目M的偶-奇程序顺序和逐行字 线编程的闪存的2-D(T1,T2,T3)受约束代码被设定具有在字符表∑={0, 1,...,L}上的有限M x N阵列,其中wi+wi+1≤T1,bi-1+bi≤T2,di-1+di≤T3,L≤T1≤2L-1,L≤T2≤2L–1,L≤T3≤2L-1。

其中:wi、wi+1是在相同字线(行)中的邻接单元;bi-1+bi是在相同 位线(列)中的上个单元和当前单元;di-1+di是在相同对角线中的上个 单元和当前单元。

用于闪存的2-D受约束代码具有三个约束T1、T2、T3。这些约束限制 了在每个方向上多个邻接单元之和。进一步提出的多个闪存单元具有一种 3-D结构,并且2-D受约束代码到3-D的扩展是直接的,对于可用方向中 的每个具有(T1,…,T6)约束。

受约束代码是一种减轻单元间耦合效应的有益途径。其还可以以各种 方式用来减轻不希望的深亚微米效应,或以其他方式例如用来通过限制编 程的等级数目来保证编程速度。

在受约束译码模式中错误的发生可以导致在连续数据模式中的错误 传播。这可以用将受约束译码与纠错码组合的多个编码器/解码器方案解 决。受约束代码还具有用于纠错的固有能力。

如在以上所表明,已提出借此禁止导致这些最大阈值电压移位的这些 邻接单元电荷组合的受约束译码减轻该分布拓宽。

“局部最优”受约束译码方案是阵列编程算法的一个函数,并具有一 个约束参数的选择值(其表现了在码率和分布窄化的程度之间的一个折 衷)。可以通过共同地最优化参数值和相对应代码将存储器容量最大化。

根据本发明的另一实施例,存在可以在处理非法代码字读取的情况中 与一种受约束译码方案组合的所提供解码算法。该组合可以利用唯一闪存 通道特性。

考虑例如多个电荷级{0,1,...,N}的情况和一个“广度优先”编程顺序: 将目标等级是1级或更高级(L(c)≥1)的所有单元编程到1级(包括 Vt的验证);接下来,将s.t.L(c)≥2的所有这些单元编程到2级,等等 。

因为在每个等级的编程顺序和Vt验证(在多个连续等级之间使用多 个编程脉冲,因此在其自身编程结束的一个单元的Vt基本上在额定值, 无论多个邻近单元的效应如何),一个单元c仅受电荷级高于其自身的其 多个邻近单元,并且仅受在C的编程结束之后添加到它们的电荷影响。

因此,对于单元c:

ΔVt(c)∝D(c)

D(c)=Σneighborsmax(L(neighbor)-L(c),0)

关于一个2-D单元阵列(包括这些对角线的8个邻近单元),0≤D(c) ≤8N。受约束译码可以确保D(c)≤T,其中T是约束参数。

图14描绘了用于一个其中T=13的1-D(2个邻近单元)、每单元8 级(即,理想地3个位)、广度优先编程算法的受约束语言图表。(穿过 这些图表边缘将生成合法代码字,即D(c)≤13)。在该语言中,这些 合法代码字不含有序列7-0-7(代表多个邻近单元的等级)。

该语言的容量是Cap(S)=log2λ(AG)=2.99(R=2.99/3=0.99),其中λ 是邻接矩阵AG的Perron本征值。可以通过将图表乘以q、移除冗余边缘 并且在必要时使用状态切分算法,获得在速率p/q(其中p是有待编码的 多个单元等级的输入块,并且q是相对应输出已编码块,p/q≤Cap(S)) 的编码器和解码器。

可以通过放大在多个代码字之间的汉明距离执行将多个纠错方案与 受约束译码组合。然而,闪存存储器通道性质和容量估计仍是未知的。在 这里我们聚焦于由于保持感应的错误因此读取一个非法代码字的情况下 的多个解码算法。

保持错误由于来自浮置栅极层的电荷泄漏引起。它们是朝向擦除级(0 级)单向的,如在图15中所描绘(不使用多个先进技术例如一种移动读 取基准)。电荷泄漏率直接影响保持时间。其取决于对所有单元相对相等 (直到过程变化)的隧道氧化物宽度,并且取决于在浮置栅极中的电荷量 。在任意给定等级的错误概率取决于在该等级的电荷泄漏率并取决于裕 度,即在该等级的额定Vt及其读取基准Vt之间的差。

从一个保持相关错误导致的多个非法字码对应于其中对于至少一个 单元D(c)>T的状况。假设已发生一个错误,则最可能的是该错误是来 自单元c的电荷泄漏使得c的电荷级降低,同时保持其多个邻近单元的电 荷级不变导致一个非法邻近单元电荷级组合的结果。(来自一个邻近单元 的电荷泄漏通常减小D(c),导致一个合法代码字。)

由于所受到的改变在c的编程完成之后在多个邻近单元中发生,因此 它们无关于原编程顺序影响c的Vt。因此,在一个邻近单元中的泄漏可 能将c拉低一个等级。然而,该泄漏为使此发生必须是显著的(通过多于 一个等级),因此导致的代码字是合法的,除了泄漏如此显著从而使得数 据很可能一起损失之外。

受约束单元间干扰译码可以用来检测并纠正多个保持错误。然而,许 多保持错误不导致非法代码字读取。为提高保持错误将导致非法代码字读 取的概率,我们建议两种方法:1)闪存存储器读取通道的调谐,以及2) 添加捕捉多个保持错误的约束。注意减小T(即,更严格的多个约束)总 是提高由导致一个非法读取代码字并因此导致一个可检测错误的泄漏引 起的一个错误的概率。

通道调谐。为简便起见,我们检验长度为三的多个代码字的情况。我 们观察到根据约束T,多个非法字码含有多个序列L1-0-L2,L1-1-L2, L1-2-L2,L1-3-L2,…,L1-N-L2。第一序列具有最大数目的非法字码,第 二最大数目是第二序列,等等。所以,改变闪存存储器因此:PN→N-1<PN-1→N-2<PN-2→N-3<…<P2→1<P1→0提高一个保持错误将导致非法代码字读取 的概率。该修改可以由在多个邻近等级之间“安全”裕度(缝隙)的不等 分配来做出,如在图16中所描绘,因此较低程序级将具有小于较高程序 级的裕度。图16展示了八个程序级的八个电压阈值分布1610-1680(八 瓣),其中在多对邻接瓣之间的缝隙随着程序级增加。多个缝隙1612- 1672是不均匀的。

添加约束。

在一个示例中,多个合法代码字被约束到多个非法字码的多个偏移, 从而使得符合以上所提到的概率方程的多个保持错误导致多个非法字码。 例如,在图17中,带有1的所有合法代码字是7-1-7。这将速率从0.99 降低到0.93,但我们观察到由于约束T较小,因此由于这种约束引起的 码率的减小变得较小。

在读取期间存在多个错误即存在其中D(c)>T的多个单元的情况下, 解码方案首先聚焦在带有最高级邻近单元的单元上并且纠正它。然后重复 该过程直到到达一个合法代码字。

图18展示了根据本发明的一个实施例的方法1800。方法1800用于 操作包括多个NVM单元的非易失性存储器(NVM)阵列。

方法1800可以由接收有待写入到非易失性存储器的输入数据的阶段 1810开始。

阶段1810继之以在输入数据上执行约束译码以便提供已编码数据的 阶段1820;其中约束译码防止已编码数据包括多个禁止值组合;其中基 于从在多个NVM单元之间的耦合导致的多个预期单元间耦合感应错误 来定义这些禁止值组合。

这些禁止值组合可以与多个邻接NVM单元的多个禁止实际阈值电压 组合相对应。

阶段1820可以包括阶段1822和1824中的至少一个。

阶段1822可以包括基于多个单元间耦合感应错误的量值防止已编码 数据包括多个禁止值组合。读取某一个NVM单元以便提供该某个NVM 单元的一个阈值电压的估计。与某一个NVM单元相关联的一个单元间耦 合感应错误的量值表现在(a)该某个NVM单元的一个希望阈值(假设没 有单元间耦合)和(b)该某个NVM单元的阈值电压的估计之间的差。

阶段1824可以包括防止已编码数据包括禁止值组合,预期这些值导 致具有高于一个预定义阈值的量值的一个预期单元间耦合感应错误。

可以预期禁止值组合中的至少一个导致具有低于预定义阈值的量值 的一个预期单元间耦合感应错误。

阶段1820可以继之以将已编码数据写入到非易失性存储器的阶段 1830。

阶段1830可以包括将已编码数据写入到NVM阵列,同时在不同程 序级的至少两对电压阈值分布之间维持一个不均匀缝隙的阶段1832。

在一个第一对程序级的一个第一对电压分布之间的缝隙可以低于在 一个第二对程序级的一个第二对电压分布之间的一个缝隙,其中该第一对 程序级低于该第二对程序级。

阶段1830可以继之以从NVM阵列读取已编码数据以便提供读取数 据的阶段1840。

阶段1840可以继之以执行读取数据的一个受约束解码以便提供已解 码数据的阶段1850。

阶段1850可以包括纠错。例如,阶段1850可以包括在读取数据中检 测多个禁止值组合,并将该禁止值组合转换成允许值组合。该转换可以响 应于在已编码数据上的一种预期保持效应。

方法1800可以使用可以由图19的方法1900生成的一个代码本以便 约束编码和解码。

图19展示了根据本发明的一个实施例的方法1900。方法1900用于 提供一个约束代码的一个代码本。图20展示了根据本发明的一个实施例 的方法1900的各阶段。

方法1900可以由阶段1905和1910中的任意一个开始。

阶段1905可以包括确定单元间耦合感应错误的参数的可允许值。该 确定可以响应于将数据写入到这些NVM单元的一个顺序。该顺序可以由 从左到右编程、广度优先编程和开环编程或任意其他编程顺序和方案中选 择。

阶段1910可以包括接收一个单元间耦合感应错误的一个参数的一个 可允许值,该单元间耦合感应错误从在多个非易失性存储器(NVM)单 元之间的耦合所导致。

参数的该可允许值是单元间耦合感应错误的一个最大可允许量值;其 中读取某一个NVM单元以便提供该某个NVM单元的一个阈值电压的估 计。与某一个NVM单元相关联的一个单元间耦合感应错误的量值表现在 (a)该某个NVM单元的一个希望阈值(假设没有单元间耦合)和(b)该 某个NVM单元的阈值电压的估计之间的差。

阶段1910继之以定义代码本从而使得基于参数的可允许值排除禁止 值组合的阶段1920。

阶段1920可以包括定义(1921)代码本从而使得排除禁止值组合, 预期这些值导致具有超过最大可允许量值的量值的一个预期单元间耦合 感应错误。

阶段1920可以包括定义(1922)代码本从而使得排除至少一个禁止 值组合,预期该至少一个禁止值组合导致具有低于最大可允许量值的量值 的一个预期单元间耦合感应错误。

阶段1920可以包括定义(1924)预期由于保持因此将其值改变成一 个禁止值组合的一组合法值组合;以及将该组的至少一个合法值组合定义 (1925)为一个禁止值组合。

阶段1920可以包括定义(1926)代码本从而使得基于参数的可允许 值以及预期有待存储在多个邻接NVM单元中的多个值之间的多个差,排 除禁止值组合。

阶段1920可以包括定义(1927)代码本从而使得基于参数的可允许 值、预期有待由多个邻接NVM单元存储的多个值之间的多个差以及这些 NVM单元的编程的顺序,排除禁止值组合。

方法1900还可以包括定义一个希望阈值-电压范围分配,该希望阈值 -电压范围分配包括在不同程序级的至少两对电压阈值分布之间的一个不 均匀缝隙的阶段1930。

阶段1930可以包括基于(a)存储在NVM阵列中的多个代码字上的 一种预期保持效应和(b)禁止值组合的值,定义(1932)一个希望电压 阈值分布。

阶段1930可以包括定义(1933)希望电压分布,从而使得将(a)存 储在NVM阵列中的一个合法值组合的一个值变化成一个禁止值组合的 概率相对于(b)该合法值组合的值变化成另一合法值组合的概率提高。

阶段1930可以包括定义(1934)在一个第一对程序级的一个第一对 电压分布之间的一个缝隙低于在一个第二对程序级的一个第二对电压分 布之间的一个缝隙,其中该第一对程序级低于该第二对程序级。

因此,可以为受约束单元间干扰译码提供一种纠错途径。我们通过以 提高较低等级的错误率并在必要时添加约束为代价降低较高等级的错误 率,改变闪存读取通道。由于违反受约束译码限制因此可以在读取检测到 低程序级的错误。概述了一种用于纠正这些错误的反复解码算法。

图21A-图21B表现了根据本发明的一个实施例的一个代码的一个状 态机。图21A展示了代码的多个节点a-i2101-2109,而图21B和图21C 展示了作为输入(和当前状态)与输出(表示为iiii/ooooo)的一个函数 的来自这些节点的多个转换(例如“ab”展示了从节点a到节点b的一个 转换)。例如,参见图21B的最左上示例,节点“a”继之以节点“a”, 其中输入/输出的一个分配如下:

aa

0000/00100

0001/01000

0010/01100

0011/00000

0100/10000

0101/11000

0110/11100

图22展示了根据本发明的一个实施例的一个用于编码的查询表2210 。查询表表现了码率牺牲例如R=5/8=0.625。图22还展示了一个相对 应矩阵2220。

注意可以约束一个代码以便在减轻单元间耦合的一个需要和使得可 以用较高概率检测到泄漏错误的一个需要之间提供一个折衷。可以基于可 检测的纠错的能力设定该折衷。

注意以上述方式中的任意方式编码的任意信息可以由一个约束解码 器解码,而且解码过程可以应用纠错。

这些上述方法中的任意方法可以由一台计算机执行,该计算机执行存 储在例如但不限于磁盘、软盘、存储装置等的一种非有形计算机可读介质 中的多个指令。

这些上述方法中的任意方法可以由一种系统执行。除了可以由包括一 个约束编码器的一种系统执行之外,这些方法中的一些方法可以由包括一 个代码生成器的一种系统执行。

这些上述方法中的任意方法可以具有一个代码生成器或可以耦合到 一个代码生成器。一个代码生成器可以是一台计算机或硬件和软件部件的 任意其他组合。

尽管已关于有限数目的实施例描述了本发明,但不应解释为对本发明 的范围的多个限制,而应解释为这些实施例中的一些的示例。本领域普通 技术人员可以基于在此所阐述的这个或这些披露设想同样在本发明的范 围内的多个其他可能的变化、修改和实现方式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号