使用调制编码减轻单元间干扰的方法和设备的制作方法

文档序号:6768237阅读:233来源:国知局
专利名称:使用调制编码减轻单元间干扰的方法和设备的制作方法
技术领域
本发明总体涉及闪存存储器器件,并且更具体地涉及用于减轻在这种闪存存储器器件中的单元间干扰和其它失真的影响的调制编码技术。
背景技术
许多存储器器件(例如闪存存储器器件)使用模拟存储器单元来存储数据。每个存储器单元存储模拟值,也被称为存储值,例如电荷或电压。存储值表示存储在单元中的信息。在闪存存储器器件中,例如,每个模拟存储器单元典型地存储某一电压。对于每个单元的可能的模拟值的范围典型地被分成多个阈值区域,每个区域与一个或更多个数据位值对应。通过写入与期望的一个或更多个位对应的标称模拟值来将数据写到模拟存储器单元。单电平单元(SLC)闪存存储器器件例如每个存储器单元存储一位(或两个可能的存储器状态)。另一方面,多电平单元(MLC)闪存存储器器件每个存储器单元存储两个或更多个位(即,每个单元具有四个或更多的可编程的状态)。对于MLC闪存存储器器件的更详细的讨论,参见,例如,2009年3月11日提交的题为“Methods andApparatus for Storing Data in a Multi-Level Cell Flash MemoryDevice with Cross-Page Sectors, Multi-Page Coding and Per-PageCoding”的国际专利申请序列号 No. PCT/US09/36810,其通过引用被包含于此。在多电平NAND闪存存储器器件中,例如,使用具有在被分成多个区间的范围中的可编程阈值电压的浮栅器件,其中每个区间与不同的多位值对应。为了将给定的多位值编程到存储器单元中,在存储器单元中的浮栅器件的阈值电压被编程到与该值对应的阈值电压区间中。存储在存储器单元中的模拟值常常失真。该失真典型地由于例如后模式依赖性(back pattern cbpendency) (BPD)、噪声和单元间干扰(ICI)。对于闪存存储器器件中的失真的更详细的讨论,参见,例如,J.D.Lee等人的“Effects of Floating-Gate Interference on NANDFlash Memory Cell Operation,,,IEEE Electron Device Letters, 264-266, (2002 年 5 月)或 Ki-Tae Park 等人的"A Zeroing Ce 11-to-Ce 11 Interference Page Architecture With Temporary LSB Storing andParallel MSB Program Scheme for MLC NAND Flash Memories”,IEEE J. of Solid State Circuits, Vol. 43, No. 4, 919-928 (2008年4月),每篇文献通过引用被包含于此。ICI是单元之间的寄生电容的结果并且一般被认为是失真的最重要的来源。例如, 已知ICI随技术按比例缩小而增大并且随着晶体管尺寸变小而成为阈值电压分布失真的重要的来源。因此,对于可靠的MLC存储器而言特别关心ICI,因为ICI限制可以可靠地被存储在MLC存储器中的电压电平的数量。已提出或建议了许多技术用于通过减少单元之间的电容耦合来减轻ICI的影响。 例如,Ki-Tae Park等人描述了现有的减轻ICI的编程技术,诸如偶数/奇数编程、自底至上编程和多级编程。尽管这些现有方法有助于减少ICI的影响,但是随着晶体管尺寸减小 (例如,65nm以下的技术,在该情况中寄生电容因闪存单元紧密接近而大得多),它们变得不太有效。因此需要减轻ICI、BPD和其它失真的影响的改进的信号处理和编码技术。

发明内容
总体上,提供了使用调制编码减轻单元间干扰的方法和设备。这些调制编码技术也可以被用来减轻其它失真。根据本发明的一个方面,在闪存存储器的编程期间,执行如下的调制编码,该调制编码选择用于对闪存存储器编程的一个或更多个电平,以使得利用违反(violate) —个或更多个预先定义的标准的值对闪存存储器中的减少数量的单元编程。 在许多示例性变体中,所述一个或更多个预先定义的标准基于以下中的一个或更多个由编程的单元所引起的干扰的量;编程的单元的电压偏移;由编程的单元存储的电压;通过编程的单元的电流改变的量;和通过编程的单元的电流的量。本发明的另一方面重新映射一个或更多个编程状态以便确保一个或更多个编程状态具有预先定义的二进制值。可选地,可以在奇偶性编码之后应用预编码器以便减少调制解码器的输出处的错误传播。本发明认识到,第一预先定义的二进制值可以比第二预先定义的二进制值引起更多的干扰,并且因此调制编码选择用于对闪存存储器编程的一个或更多个电平,使得闪存存储器中的减少数量的单元被编程具有第一预先定义的二进制值。在一个示例性的实施例中,在k个用户位中如果存在多于k/2个的第一预先定义的二进制值,则调制编码翻转所有 k个位。根据本发明的另一方面,在闪存存储器的读取期间,执行如下的调制解码,该调制解码分配一个或更多个电平给闪存存储器中的单元,使得利用违反一个或更多个预先定义的标准的值读取闪存存储器中的减少数量的单元。
根据本发明的又一个方面,在闪存存储器的编程期间,选择用于对闪存存储器编程的一个或更多个电平,使得利用一个或更多个预先定义的电平对闪存存储器中的减少数量的单元编程。参考以下详细描述和附图将获得本发明以及本发明的进一步的特征和优点的更完全的了解。


图1是传统的闪存存储器系统的示意性框图;图2示出用于图1的示例性多电平单元闪存存储器的示例性阈值电压分布;图3示出多电平单元(MLC)闪存存储器器件中的示例性闪存单元阵列的架构;图4示出用于图2的电压分配方案的示例性两级MLC编程方案;图5A和图5B共同示出减少在邻近单元上产生的ICI的另选MLC编程方案;图6更详细地示出多电平单元(MLC)闪存存储器器件中的示例性闪存单元阵列;图7示出对于目标单元的由于来自多个示例性入侵单元的寄生电容而存在的 ICI ;图8是根据本发明并入了使用调制编码的ICI减轻技术的示例性闪存存储器系统的示意性框图;图9示出在通过图8的调制重新映射器的调制编码之后与一些状态相关的位标记的重新映射;以及图10是根据本发明并入了使用调制编码的ICI减轻技术的示例性闪存存储器系统的示意性框图。
具体实施例方式本发明的各个方面涉及用于减轻存储器器件(诸如单电平单元或多电平单元 (MLC)NAND闪存存储器器件)中的ICI的信号处理技术。本文中使用的多电平单元闪存存储器包括每个存储器单元存储两个或更多个位的存储器。典型地,存储在一个闪存单元中的多个位属于不同的页。虽然此处使用存储作为电压的模拟值的存储器单元示出了本发明, 但是如本领域技术人员所清楚的,本发明可以用于闪存存储器的任何存储机制(例如使用电压或电流来表示存储的数据)。图1是传统的闪存存储器系统100的示意性框图。如图1所示,示例性闪存存储器系统100包括闪存控制系统110和闪存存储器模块160。示例性闪存控制系统110包括闪存控制器120、编码器/解码器模块140和一个或更多个缓存器145。在另选实施例中, 编码器/解码器模块140和一些缓存器145可以被实现在闪存控制器120内。可以例如使用公知的市场上可买到的技术和/或产品来实现编码器/解码器模块140和缓存器145。示例性闪存存储器模块160包括每个都可以使用公知的市场上可买到的技术和/ 或产品实现的存储器阵列170和一个或更多个缓存器180。存储器阵列170可以被具体实现为单电平或多电平单元闪存存储器,诸如NAND闪存存储器、相变存储器(PCM)、MRAM存储器、NOR闪存存储器或其它非易失性的闪存存储器。对于本领域技术人员将清楚的是,尽管主要在多电平单元NAND闪存存储器的背景下示出了本发明,但是本发明也可以应用于单电平单元闪存存储器和其它非易失性的存储器。多电平单元闪存存储器在多电平单元NAND闪存存储器中,典型地使用阈值检测器来将与特定单元相关的电压值转译为预先定义的存储器状态。图2示出了关于图1的示例性多电平单元闪存存储器170的示例性阈值电压分布,其基于通过引用被包含于此的美国专利No. 6,522,580的教导。一般,单元的阈值电压是需要被施加到单元以使得该单元传导一定量的电流的电压。 阈值电压是对存储在单元中的数据的量度。在图2所示出的示例性实施例中,每个存储元件使用四个可能的数据状态来在每个存储器单元中存储两个位的数据。图2示出四个峰210-213,其中每个峰与一个状态对应。在多电平单元闪存器件中,阈值电压分布曲线200的不同的峰210-213被用于在单元中存储两个位。阈值电压分布曲线200的峰210-213被标记有对应的二进制值。因此,在单元处于第一状态210时,它表示低位(也被称为最低有效位LSB)为“1”且高位(也被称为最高有效位MSB)为“1”。状态210—般是单元的初始未编程的状态或擦除的状态。同样地,在单元处于第二状态211时,它表示低位为“0”且高位为“1”。在单元处于第三状态212时, 它表示低位为“0”且高位为“0”。最后,在单元处于第四状态213时,它表示低位为“1”且高位为“0”。阈值电压分布210表示在处于擦除状态(“11”数据状态)的阵列内的单元的阈值电压Vt的分布,具有在0伏以下的负的阈值电压电平。分别存储“10”和“00”用户数据的存储器单元的阈值电压分布211和212被示出分别在0和1伏之间以及在1和2伏之间。 阈值电压分布213示出已经被编程为“01”数据状态的单元的分布,具有设定在2伏和4. 5 伏的读通电压(read pass voltage)之间的阈值电压电平。因此,在图2的示例性实施例中,可以使用0伏、1伏和2伏作为每个电平或状态之间的电压电平阈值。闪存存储器160(例如,闪存存储器160中的感测电路)使用电压电平阈值来确定给定单元的电压电平或状态。闪存存储器160将基于测量的电压与电压电平阈值的比较结果将一个或更多个位分配给每个单元,其随后作为硬判定被传送到闪存控制系统110。附加地或另选地,在使用软信息的实现方案中,闪存存储器160可以向闪存控制系统110传送作为软信息的测量的电压或者测量的电压的量化版本,其中与存储器单元中存储的位的数量相比,使用数量更多的位来表示测量的电压。应当进一步注意,典型地使用公知的编程/验证技术来对单元编程。一般,在编程 /验证周期期间,闪存存储器160逐渐施加增加的电压以将电荷存储在单元晶体管中,直至超过最小目标阈值电压。例如,当在图2的示例中编程“10”数据状态时,闪存存储器160 可以逐渐施加增加的电压以将电荷存储在单元晶体管中,直至超过0. 4V的最小目标阈值电压。如下文将进一步讨论的,单个存储器单元中存储的两个位中的每一个来自不同的页。换言之,每个存储器单元中存储的两个位中的每个位承载不同的页地址。当输入低页 (lower page)地址时,访问图2中示出的右侧位。当输入高页(upper page)地址时,访问左侧位。图3示出了多电平单元(MLC)闪存存储器器件160中的示例性闪存单元阵列300的架构,其中每个示例性单元典型地对应于存储两个位的浮栅晶体管。在图3中,每个单元与两个位所属的两个页的两个编号关联。示例性单元阵列部分300示出了字线η至η+2和四条位线。示例性闪存单元阵列300被分为偶数页和奇数页,其中例如具有偶数编号的单元(诸如具有编号0和2的单元)对应于偶数页,而具有奇数编号的单元(诸如具有编号 1和3的单元)对应于奇数页。字线η例如在偶数位线中存储偶数页0和2,而在奇数位线中存储奇数页1和3。此外,图3指示出了示例性编程序列,其中按照指示出的顺序依次地(自底而上) 选择偶数或奇数位线单元并且对其编程。编号指示出了对页编程的顺序。例如,页0在页 1之前被编程。对于偶数页和奇数页的编程的进一步的讨论,参见例如K. -τ. Park等人的 "AZeroing Cell-to-Cell Interference Page Architecture with TemporaryLSB Storing and Parallel MSB Program Scheme for MLC NANDFlash Memories,,,IEEE Journal of Solid-State Circuits, Vol. 43,No. 4,919-928(2008 年 4 月),其通过引用被包含于此。图4示出了关于图2的电压分配方案的示例性的两级MLC编程方案400。如图4所示,在LSB编程阶段期间,如果LSB是零,则处于擦除状态410的所选择的单元的状态移动到最低编程状态411。因此,在LSB编程阶段,存储器单元被从擦除状态“11”编程到“10”。 接着,在MSB编程阶段期间,取决于先前的LSB数据,依次形成两个状态,即状态“00” (412) 和状态“01 ” (413)。一般,在MSB编程阶段期间,“ 10”状态被编程到“00”,而状态“11”被编程到“01”。应当注意,图4的编程方案400示出了与从状态410到状态413的状态改变关联的最大电压偏移。已提出或建议了许多编程方案用于减少与状态改变关联的最大电压偏移, 并且由此减少由电压偏移引起的ICI。图5A和图5B共同示出了减少在邻近单元上造成的ICI的另选MLC编程方案500。 如图5A所示,在LSB编程阶段期间,按与SLC编程类似的方式,将存储器单元从状态“11” 编程到作为临时(或中间)状态的状态“x0”。在同一字线中的邻近单元也进行LSB编程之后,由于ICI,分布可能被扩宽,如图5A中的峰510所示。随后,在图5B中示出的MSB编程阶段,“x0”状态被编程到作为与输入数据对应的最终状态的“00”和“ 10”,或者“ 11,,状态被编程到最终的“01”状态。一般,除“11”单元之外的所有存储器单元在MSB编程阶段中从对于LSB数据的临时编程状态重新编程到它们的最终状态,使得可以极大地减小由邻近单元引起的ICI。处于最终状态的单元将不会遭受到其处于中间状态时经历的ICI,这是因为其已被重新编程到最终状态。处于最终状态的单元将仅遭受到由于处于最终状态而经历的ICI0如上文提到的,使用中间编程状态的图5A和图5B的多步(multi-step)编程序列减少了最大电压改变,并且因此减少了由这些电压改变引起的ICI。在图5B中可以看到, 例如MSB编程阶段期间的最大电压偏移分别与从状态“11”到“01”和从状态“x0”到状态 “10”的转变关联。这些电压偏移明显小于图4中的从状态“11”到“01”的最大电压偏移。图6更详细地示出了多电平单元(MLC)闪存存储器器件130中的示例性闪存单元阵列600。如图6所示,闪存单元阵列600对于每个闪存单元Ci存储三个位。图6示出了对于一个模块的闪存单元阵列架构,其中每个示例性单元典型地对应于存储三个位的浮栅晶体管。示例性单元阵列600由m条字线和η条位线组成。典型地,在当前的多页单元闪存存储器中,单个单元中的位属于不同的页。在图6的示例中,每个单元的三个位对应于三个不同的页,并且每条字线存储三个页。在下面的讨论中,页0、1和2被称为字线中的低页层级(page level)、中间页层级和高页层级。如上文所指出的,闪存单元阵列可以被进一步分为偶数和奇数页,其中例如,具有偶数编号的单元(诸如图6中的单元2和4)对应于偶数页,而具有奇数编号的单元(诸如图6中的单元1和3)对应于奇数页。在该情况中,页(诸如页0)将包含偶数单元中的偶数页(偶数页0)和奇数单元中的奇数页(奇数页0)。单元间干扰如前面指出的,ICI是单元之间的寄生电容的结果,并且通常被视为最主要的失真源之一。图7示出了对于目标单元710的由于来自多个示例性入侵单元720的寄生电容而存在的ICI。在图7中使用如下标记WL 字线;BL 位线;BLo 奇数位线;BLe:偶数位线;以及C:电容。本发明认识到ICI是由在目标单元710已经被编程之后进行编程的入侵单元720 引起的。ICI改变目标单元710的电压Vt。在示例性实施例中,采取“自底而上”编程方案, 并且字线i和i+Ι中的相邻入侵单元引起了对于目标单元710的ICI。如图7所示,通过模块的这种自底而上的编程,来自下面的字线i-Ι的ICI被移除,并且高达五个邻近单元作为入侵单元720对ICI有贡献。然而,应当注意,本领域技术人员将清楚,这里公开的技术可以被推广到来自其它字线(诸如字线i_l)的入侵单元也对ICI有贡献的情况。如果来自字线i-1、i和i+Ι的入侵单元对ICI有贡献,则需要考虑高达八个最近的邻近单元。如果它们对ICI的贡献可忽略的话,更远离目标单元的其它单元可以忽略。通常,通过分析编程序列方案(诸如自底而上或者偶数/奇数技术)以识别在给定的目标单元710之后进行编程的入侵单元720,来识别入侵单元720。在示例性实施例中,入侵单元720引起的对目标单元710的ICI可以如下建模AF^P =k AViij-lKk AVii^ + lKk AF(i + lJ) +
ICI χ tχ tν tk ^ + W-1Ua Δ ^ + 1"+1)
LUUM」Jfv txy t 、
(1)其中Δ //",δ)是入侵单元(w,b)的Vt电压的改变,Δ^^是由于ICI引起的目标单元(i,j)的Vt电压的改变,并且kx、ky和kxy是关于χ、y和xy方向的电容耦合系数。—般,Vt是表示单元上存储的数据的电压并且是在读操作期间获得的。Vt可以通过读操作获得,例如,作为具有比每单元存储的位数量更高的精度的软电压值,或者作为被量化到具有与每单元存储的位数量相同的分辨率(例如,对于3位/单元的闪存,为3位) 的硬电压电平的值。使用调制编码的ICI减轻根据本发明的一个方面,通过从减少来自相邻单元720对任何给定目标单元710的ICI的给定调制代码选择信号电平来实现ICI减轻。如下文进一步所讨论的,使用约束的(constrained)调制编码技术来减少引起明显的ICI的数据模式。一般,调制代码可以通过减少利用最大电压偏移编程的单元的数量来减少来自一个或更多个相邻单元720的任何给定单元710上的ICI。换句话说,本发明通过减少在与最高电压偏移关联的编程期间使用电压单元的概率来减少ICI。一般,在闪存存储器的编程期间施加本发明的所公开的调制编码技术。根据本发明的一个方面,在下文结合图8进一步讨论的调制编码器810选择用于对闪存存储器编程的一个或更多个电平,使得利用违反一个或更多个预先定义的标准的值对闪存存储器中的减少数量的单元编程。在示例性实施例中,预先定义的标准基于以下中的一个或更多个 (i)由编程的单元所引起的干扰的量;(ii)编程的单元的电压偏移;(iii)由编程的单元存储的电压;(iv)与编程的单元关联的电流改变的量;以及(ν)与编程的单元关联的电流的量。同样地,在闪存存储器的读取期间施加本发明的所公开的调制解码技术。根据本发明的一个方面,在下文结合图8进一步讨论的调制解码器890将一个或更多个电平分配给闪存存储器中的单元,使得利用违反上述示例性预先定义的标准中的一个或更多个的值读取闪存存储器中的减少数量的单元。本发明认识到给定目标单元710上的ICI是对一个或更多个入侵单元720编程的电压的函数。另外,如公式(1)所示出的,在给定入侵单元720上的电压偏移(AV)更大时, 所得到的由给定入侵单元720所引起的目标单元710上的ICI将更大。上面结合图4、图 5Α和图5Β讨论了对于示例性两级MLC编程方案400、500的最大电压偏移(Δ V)。例如,如果假设二进制“零”的编程具有比二进制“一”的编程更大的电压偏移(Δ V),那么通过减少任何编码的位中的二进制“零”的概率来实现ICI减少。Α.反向(Reverse) ECC 配置图8是根据本发明并入了使用调制编码的ICI减轻技术的示例性闪存存储器系统800的示意性框图。如图8所示,示例性闪存存储器系统800包括写路径805和读路径 895。示例性写路径805包括调制编码器810、可选的调制重新映射器820和可选的奇偶性编码器830。在阶段840期间使用已知的技术对存储器850编程。在本发明的进一步的实施例中,调制编码器810减少每个用户位的平均电荷(即, 存储在浮栅晶体管中的电荷)。通过减少每个用户位的平均电荷,还减少了写功率和磨损。调制编码器810可以独立地对字线中的一个或更多个页(诸如仅仅MSB页)进行编码,或者对字线中的所有页共同地进行编码。如果仅仅对例如MSB页应用调制编码而不对其它低页进行调制编码,则由于调制编码引起的编码开销减少。当如例如图5A和图 5B所示出地使用多步的编程序列时,最后的编程状态仅仅遭受由于MSB页的编程而引起的 ICI。因此,可以仅仅对MSB页应用调制编码以便减少总编码开销并且实现最高可能的存储容量。示例性调制编码器810使用的代码的代码字长η可以是任何整数,并且用户位k 的数量等于n-1。由示例性调制编码器810实现的约束的代码如下地使每个代码字中的零的数量最小。每当在k个用户位中存在多于k/2个零时,示例性调制编码器810都使所有 k个位翻转并且将标志或极性位设定为1。否则,示例性调制编码器810不翻转用户位并且将标志或极性位设定为0。在一个示例性实施例中,调制编码器810针对示例性页面级访问技术在页中(或针对用于示例性字线级访问技术的字线)初始确定二进制“零”的数量。对于页面级和字线级访问技术的更详细的讨论,参见,例如,2009年3月11日提交的题为“Methods and Apparatusfor Storing Data in a Multi-Level Cell Flash Memory Device withCross-Page Sectors,Multi-Page Coding and Per—Page Coding,,的国际专禾Ij 串i青序列号No. PCT/US09/36810,其通过引用被包含于此。在该示例性实施例中,如果页中的二进制“零”的数量大于该页中的位的总数的一半,则示例性调制编码器810求反(即,翻转)该页中的所有的位,并且附加的二进制“一” 被附加到该页作为标志或极性位以便表示该页已经被求反。如果页中的二进制“零”的数量不大于该页中的位的总数的一半,则调制编码器810保持相同的页数据,并且附加的二进制“零”被附加到该页作为标志或极性位以便表示该页没有被求反。因此,示例性调制编码器810的复杂度较低,仅仅需要计数器和位翻转逻辑。请注意,如本领域技术人员会清楚的,调制编码器810的所公开的实施例是示例性的,并且可以使用其它调制编码技术。为了使示例性调制编码实施例(其中二进制“零”的编程被假定为具有比二进制 “一”的编程大的电压偏移(Δν))中的增益最大化,对于图5Α和图5Β所示出的示例性多步的编程序列,在最后的编程阶段期间的最高电压跳跃需要具有“0”的MSB。对于图5B所示出的示例性编程方案500不满足该要求。看看与图5B所示出的电压状态关联的位标记,MSB 不满足要求。例如,来自中间状态“x0”的最高电压跳跃导致最后状态“10”具有MSB “一”。 因此,编程方案可以要求在调制编码器810之后的状态的重新映射。为了确保在最后的编程阶段期间的最高电压改变与在调制编码器的输出处的“0”的MSB关联,在调制编码之后示例性调制重新映射器820将与一些状态关联的位标记重新映射成期望的最后的位标记, 如图9所示。例如,对于状态910,最后的位标记“10”的二进制MSB “一”在MSB编程期间具有最大的电压偏移,因此对于该状态的位标记被从调制编码器的输出处的原始的“00”重新映射到调制重新映射器的输出处的最后的位标记“10”,并且对于电压电平或状态L2的位标记被从调制编码器的输出处的原始的“10”重新映射到调制重新映射器的输出处的最后的位标记“00”。对于电压电平或状态L3该最后的位标记“10”被编程到闪存存储器中, 并且对于电压电平或状态L2最后的位标记“00”被编程到闪存存储器中。因此,调制重新映射器820确定给定状态是否要求重新映射,并且如有必要则实现重新映射。例如,如果在MSB编程期间确定当前中间状态是“x0”并且如果调制编码之后的该状态的MSB是0,则该MSB位被重新映射为“ 1 ”,并且具有位标记“ 10”的最后状态L3 被写到闪存。应当注意,调制重新映射器可以分离地或共同地处理存储器单元内的位,并且它还可以仅仅处理存储器单元内的位的子集,而单元内的其它位不由调制重新映射器处理。此外,如本领域技术人员将清楚的,这里示出的调制重新映射方案是示例性的,并且可以使用其它调制重新映射方案。因为调制重新映射器820跟随调制编码器810,而奇偶性编码器830跟随调制重新映射器820,所以闪存存储器系统800被称为反向的ECC配置,其中调制编码器810先于奇偶性编码器830。
可选的奇偶性编码器830可以实现公知的纠错编码技术,诸如低密度的奇偶性检验(LPDC),Reed-Solomon或BCH编码技术。在一种优选的实现方式中,奇偶性编码器830 被实现作为系统编码器,使得原始的位由奇偶性编码器830保持并且奇偶性编码器830将奇偶位添加到原始的位。在阶段860期间使用已知的技术读取存储器850。示例性读路径895包括奇偶性解码器870、可选的调制反向重新映射器880以及调制解码器890,每一个执行与写路径805 中的对应模块逆向的功能。调制解码器890评估标志位以便确定页上的位是否需要被翻转。在示例性实施例中,如果奇偶位被设定为1,则所有k个用户位都被调制解码器890翻转。如果奇偶性解码器870使用软信息,则可以引入外部的全局迭代循环,如图8所示。全局迭代循环如下执行奇偶性解码器870 (诸如LPDC解码器)和调制解码器890之间的外迭代。如果LDPC解码器870不收敛(在内迭代的预先定义的最大数量之后),则LDPC 解码器870将整个LDPC代码字发送到可选的调制反向重新映射器880和调制解码器890。 请注意,一个LDPC代码字由许多较短的调制代码字组成。例如,LDPC代码字可以包括33000 位,而调制代码字可以包括100位(即,对于约束代码码率为0. 99)。那么,每一个LDPC代码字由330个调制代码字组成。调制解码器890可以计算每个代码字中的零的数量。每当每个代码字中的零的数量大于k/2时,调制解码器890就已经识别无效的代码字。然后,调制解码器890可以翻转与无效的代码字对应的LLR值的符号位(模式1),或者它可以擦除代码字的所有位的LLR 值(通过将这些LLR值简单地设定为0)(模式2),并且将结果发送回奇偶性解码器870(例如LDPC解码器)。奇偶性解码器870 (例如LDPC解码器)从调制解码器890接收修改的 LLR值,并且尝试通过再次运行多个内迭代来对修改的LLR值进行解码。因此由调制代码提供的附加冗余度用于改善纠错性能。该迭代的解码处理可以被应用直到读取数据成功地被解码。如上文所指出的,图9示出在MSB编程阶段期间将调制的(调制编码的)位重新映射到编程的状态。如图9所示,对于LSB页和MSB页的编程,调制的位“零”总是与最大电压偏移对应,其中状态“xO”与LSB编程期间的最大电压偏移关联,并且状态“01”(具有调制的位“01”)和“10”(具有调制的位“00”)与MSB编程期间的最大电压偏移关联。如可以从图5A、图5B和图9中看到的,具有编程的位标记“11”和“01”的电压电平LO和Ll 不要求在MSB编程期间的重新映射。B.直接的ECC配置图10是根据本发明并入了使用调制编码的ICI减轻技术的示例性闪存存储器系统1000的示意性框图。如图10所示,示例性闪存存储器系统1000包括写路径1005和读路径1095。示例性写路径1005以与图8类似的方式包括可选的奇偶性编码器1010、调制编码器1030和可选的调制重新映射器1040。在阶段1050期间使用已知的技术对存储器 1055编程。在阶段1060期间使用已知的技术读取存储器1055。示例性读路径1095包括可选的调制反向映射器1070、调制解码器1080和可选的奇偶性解码器1090,每一个执行与写路径1005中的对应模块逆向的功能。调制解码器1080评估标志位以便确定页上的位是否需要被翻转。在示例性实施例中,如果奇偶位被设定为1,则所有k个用户位都被调制解码器 1080翻转。因为调制编码器1030跟随奇偶性编码器1010,所以闪存存储器系统1000被称为直接的ECC配置。在直接的ECC配置中,奇偶位与信息位一起被调制。然而,在接收器处, 调制解码器1080可能以极性翻转的形式将错误传播成错误串(error burst)如果极性位 (其为标志位)有错误,则整个调制代码字被错误地翻转。因此,在直接的ECC配置的优选实施例中示例性闪存存储器系统1000包括预编码器1020。示例性预编码器1020可以例如应用公知的1/(1 D)预编码器,其中φ表示模2加法。因此,接收路径1095中的去预编码器(imprecOder) 1085将每个错误串减少到仅仅两个错误。如本领域技术人员将清楚的,可以使用另选已知的预编码技术,诸如1/(1 D2)或1/(1 D3)预编码方案。如图10所示,可以使用可选的全局迭代循环。全局迭代循环执行奇偶性解码器 1090 (诸如LPDC解码器)和调制解码器1080或可选的反向的映射器1070之间的外迭代。 图10中的奇偶性解码器1090将软信息(LLR)提供给调制解码器1080或可选的反向的映射器1070,并且随后执行全局迭代直到数据被解码而没有错误。如本领域技术人员将清楚的,虽然已经在ICI减轻的背景中描述了公开的调制编码技术,但是公开的调制技术还可以被用来减轻其它失真。同样地,如本领域技术人员将清楚的,虽然示例性实施例使用减少0的数量的调制代码,但是可以使用在本发明的精神内的其它调制或约束的代码,以便对写到闪存的数据施加约束从而减轻ICI或其它失真。制造的过程、系统和产品的细节尽管这里的多个流程图描述了示例性的步骤序列,但是序列可以变化,这也是本发明的实施例。算法的各种置换被视为本发明的另选实施例。尽管已经针对软件程序中的处理步骤描述了本发明的示例性实施例,但是如本领域技术人员将清楚的,各种功能可以在数字领域中实现为软件程序中的处理步骤,在硬件中通过电路元件或状态机实现,或者通过软件和硬件的组合实现。这种软件可以用在例如数字信号处理器、专用集成电路、微控制器或者通用计算机中。这种硬件和软件可以被具体实现在集成电路内实现的电路内。因此,本发明的功能可以被具体实现为方法和用于实践这些方法的设备的形式。 本发明的一个或更多个方面可以被具体实现为例如存储在存储介质中、加载到机器中和/ 或由该机器执行、或者在某种传输介质上传送的程序代码的形式,其中当程序代码被加载到诸如计算机的机器中并且由该机器执行时,该机器变为用于实践本发明的设备。当在通用处理器上实现时,程序代码段与处理器组合以提供按与特定逻辑电路相似的方式操作的装置。本发明也可以实现在集成电路、数字信号处理器、微处理器和微控制器中的一个或更多个中。如本领域中已知的,这里讨论的方法和设备可以作为产品分发,该产品自身包括具有在其上具体实现的计算机可读代码单元的计算机可读介质。计算机可读程序代码单元可以结合计算机系统操作以实现用于执行这里讨论的方法的所有或一些步骤或者创建这里讨论的设备。计算机可读介质可以是可记录介质(例如,软盘、硬盘驱动器、压缩盘、存储卡、半导体器件、芯片、专用集成电路(ASIC)),或者可以是传输介质(例如,网络,包括光纤、万维网、线缆、或者使用时分多址、码分多址的无线信道或者其它射频信道)。可以使用能够存储适于与计算机系统一起使用的信息的任何已知的或开发的介质。计算机可读代码单元是用于允许计算机读取指令和数据的任何机制,诸如磁介质上的磁性变化或者压缩盘表面上的高度变化。这里描述的计算机系统和服务器每一均包含存储器,该存储器将配置关联的处理器来实现这里公开的方法、步骤和功能。存储器可以是分布式的或者本地的,并且处理器可以是分布式的或者单个的。存储器可以被实现为电、磁或光存储器,或者这些或其它类型的存储器器件的任何组合。而且,术语“存储器”应被足够广泛地解释成涵盖能够被从关联的处理器访问的可寻址空间中的地址读取或者写入该地址的任何信息。通过该定义,网络上的信息仍在存储器内,这是因为关联的处理器可以从网络取回信息。应当理解,这里示出和描述的实施例和变化仅是本发明的原理的说明,并且本领域技术人员可以实现各种修改而不偏离本发明的范围和精神。
权利要求
1.一种用于对闪存存储器编程的方法,包括选择用于对所述闪存存储器编程的一个或更多个电平,使得利用一个或更多个预先定义的电平对所述闪存存储器中的减少数量的单元编程。
2.根据权利要求1所述的方法,其中所述选择约束所述一个或更多个预先定义的电平的使用。
3.根据权利要求1所述的方法,其中所述选择由调制编码器执行。
4.根据权利要求1所述的方法,其中所述一个或更多个预先定义的电平包括违反一个或更多个预先定义的标准的一个或更多个电平。
5.根据权利要求4所述的方法,其中所述一个或更多个预先定义的标准基于以下中的一个或更多个由编程的单元所引起的干扰的量;编程的单元的电压偏移;由编程的单元存储的电压;通过编程的单元的电流改变的量;和通过编程的单元的电流的量。
6.一种用于对闪存存储器编程的方法,包括执行如下的调制编码,所述调制编码选择用于对所述闪存存储器编程的一个或更多个电平,使得利用违反一个或更多个预先定义的标准的值对所述闪存存储器中的减少数量的单元编程。
7.根据权利要求6所述的方法,其中所述一个或更多个预先定义的标准基于以下中的一个或更多个由编程的单元所引起的干扰的量;编程的单元的电压偏移;由编程的单元存储的电压;通过编程的单元的电流改变的量;和通过编程的单元的电流的量。
8.根据权利要求6所述的方法,其中对字线中的一个或更多个页独立地执行所述调制编码。
9.根据权利要求6所述的方法,其中仅对所述字线中的页的子集执行所述调制编码。
10.根据权利要求6所述的方法,其中对字线中的两个或更多个页共同地执行所述调制编码。
11.根据权利要求6所述的方法,其中对分离的字线中的两个或更多个页共同地执行所述调制编码。
12.根据权利要求6所述的方法,还包含在反向的ECC配置中在所述调制编码之后执行奇偶性编码的步骤。
13.根据权利要求6所述的方法,还包含在直接的ECC配置中在所述调制编码之前执行奇偶性编码的步骤。
14.根据权利要求6所述的方法,还包含重新映射一个或更多个编程状态以便确保一个或更多个编程状态具有预先定义的二进制值的步骤。
15.根据权利要求6所述的方法,还包含在奇偶性编码之后应用预编码以便减少调制解码器的输出处的错误传播的步骤。
16.根据权利要求15所述的方法,其中所述预编码包括1/(1 D),1/(1 θ D2)或 1/(1 D3)预编码方案。
17.根据权利要求6所述的方法,其中第一预先定义的二进制值比第二预先定义的二进制值引起更多的干扰,并且其中所述调制编码选择用于对所述闪存存储器编程的一个或更多个电平,使得利用所述第一预先定义的二进制值对所述闪存存储器中的减少数量的单元编程。
18.根据权利要求17所述的方法,其中在k个用户位中如果存在多于k/2个的所述第一预先定义的二进制值,则所述调制编码翻转所有k个位。
19.一种用于读取闪存存储器的方法,包括执行如下的调制解码,所述调制解码分配一个或更多个电平给所述闪存存储器中的单元,使得利用违反一个或更多个预先定义的标准的值来读取所述闪存存储器中的减少数量的单元。
20.根据权利要求19所述的方法,其中所述一个或更多个预先定义的标准基于以下中的一个或更多个由编程的单元所引起的干扰的量;编程的单元的电压偏移;由编程的单元存储的电压;通过编程的单元的电流改变的量;和通过编程的单元的电流的量。
21.根据权利要求19所述的方法,其中对字线中的一个或更多个页独立地执行所述调制解码。
22.根据权利要求19所述的方法,其中仅对所述字线中的页的子集执行所述调制解码。
23.根据权利要求19所述的方法,其中对字线中的两个或更多个页共同地执行所述调制解码。
24.根据权利要求19所述的方法,其中对分离的字线中的两个或更多个页共同地执行所述调制解码。
25.根据权利要求19所述的方法,还包含反向重新映射一个或更多个编程状态以便确保一个或更多个编程状态具有预先定义的二进制值的步骤。
26.根据权利要求19所述的方法,其中在奇偶性编码之后应用预编码以便减少所述调制解码器的输出处的错误传播。
27.根据权利要求26所述的方法,其中所述预编码包括1/(1田D)、l/(1 D2)或 1/(1 D3)预编码方案。
28.根据权利要求19所述的方法,还包含使用软信息执行多次迭代的步骤。
29.根据权利要求19所述的方法,其中第一预先定义的二进制值比第二预先定义的二进制值引起更多的干扰,并且其中所述调制解码分配用于对所述闪存存储器编程的一个或更多个电平,使得利用所述第一预先定义的二进制值来读取所述闪存存储器中的减少数量的单元。
30.一种用于对闪存存储器编程的系统,包括调制编码器,所述调制编码器选择用于对所述闪存存储器编程的一个或更多个电平, 使得利用违反一个或更多个预先定义的标准的值对所述闪存存储器中的减少数量的单元编程。
31.一种用于读取闪存存储器的系统,包括调制解码器,所述调制解码器分配一个或更多个电平给所述闪存存储器中的单元,使得利用违反一个或更多个预先定义的标准的值来读取所述闪存存储器中的减少数量的单兀。
全文摘要
提供了使用调制编码减轻单元间干扰的方法和设备。在闪存存储器的编程期间,执行如下的调制编码,该调制编码选择用于对闪存存储器编程的一个或更多个电平,以使得利用违反一个或更多个预先定义的标准的值对闪存存储器中的减少数量的单元编程。在闪存存储器的读取期间,执行如下的调制解码,该调制解码分配一个或更多个电平给闪存存储器中的单元,使得利用违反一个或更多个预先定义的标准的值读取闪存存储器中的减少数量的单元。预先定义的标准可以例如基于以下中的一个或更多个由编程的单元所引起的干扰的量;编程的单元的电压偏移;由编程的单元存储的电压;通过编程的单元的电流改变的量;和通过编程的单元的电流的量。
文档编号G11C7/10GK102160120SQ200980132723
公开日2011年8月17日 申请日期2009年6月30日 优先权日2008年7月1日
发明者A·维贾耶夫, E·F·哈拉特施, J·延, M·伊威科维克, N·格雷夫, V·克拉琦科夫斯基 申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1