CN101512661B - 用于存储设备的失真估计与纠错编码的组合 - Google Patents
用于存储设备的失真估计与纠错编码的组合 Download PDFInfo
- Publication number
- CN101512661B CN101512661B CN2007800261813A CN200780026181A CN101512661B CN 101512661 B CN101512661 B CN 101512661B CN 2007800261813 A CN2007800261813 A CN 2007800261813A CN 200780026181 A CN200780026181 A CN 200780026181A CN 101512661 B CN101512661 B CN 101512661B
- Authority
- CN
- China
- Prior art keywords
- storage unit
- analogue value
- distortion
- unit
- ecc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5657—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using ferroelectric storage elements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Semiconductor Memories (AREA)
Abstract
一种用于操作存储设备(24)的方法,包括使用纠错码(ECC)对数据编码并且将已编码的数据作为第一模拟值存储在所述存储设备的相应的模拟存储单元(32)中。在存储已编码的数据之后,从存储设备的存储有已编码的数据的存储单元中读取相应的第二模拟值。所述第二模拟值中的至少一些不同于相应的第一模拟值。对在第二模拟值中存在的失真进行估计。根据所估计的失真,计算针对第二模拟值的纠错度量。在ECC解码过程中,使用纠错度量处理第二模拟值,从而重构数据。
Description
相关申请的交叉引用
本申请主张享有下列专利申请的权益:提交于2006年5月12日的美国临时专利申请60/747,106,提交于2006年10月30日的美国临时专利申请60/863,480,提交于2006年11月1日的美国临时专利申请60/863,810,提交于2006年11月28日的美国临时专利申请60/867,399,提交于2007年1月16日的美国临时专利申请60/885,024,提交于2007年1月23日的美国临时专利申请60/886,102,提交于2007年2月11日的美国临时专利申请60/889,277,提交于2007年3月4日的美国临时专利申请60/892,869,提交于2007年3月12日的美国临时专利申请60/894,290,提交于2007年3月13日的美国临时专利申请60/894,456,提交于2007年4月16日的美国临时专利申请60/912,056,以及提交于2007年4月22日的美国临时专利申请60/913,281,上述申请的公开内容在此以援引方式全部纳入本文中。
技术领域
本发明通常涉及存储设备,具体涉及使用纠错编码和失真估计来改进存储设备的性能的方法和系统。
背景技术
多种存储设备,例如闪存和动态随机存取存储器(DRAM),使用模拟存储单元阵列来存储数据。例如,在2003年4月在IEEE学报(91:4)第489-502页由Bez等人发表的“Introduction to Flash Memory”中,描述了闪存设备,该文献在此处以援引方式全部纳入本文。
在此类存储设备中,每个模拟存储单元通常包括一个晶体管,该晶体管保持了一定数量的电荷,所述电荷表示存储在所述存储单元中的信息。写入一特定存储单元的电荷影响所述存储单元的“门限电压”,也即,需要施加电压到存储单元以使得所述存储单元可以导通电流。
一些存储设备,通常称为“单层单元”(SLC)设备,在每个存储单元中存储单比特信息。通常,所述存储单元的可能的门限电压的范围被分为两个区域。落入这两个区域中的一个区域的电压值代表比特值“0”,而属于另一个区域的电压值代表“1”。更高密度设备,通常称为“多层单元”(MLC)设备,每个存储单元存储两个或更多个比特。在多层单元中,门限电压的范围被分为多于两个区域,其中每个区域代表多于一个比特。
例如,在纽约州纽约市举办的1996年IEEE国际电子器件大会(IEDM)的学报上第169-172页上由Eitan等人发表的“MultilevelFlash Cells and their Trade-Offs”,描述了多层闪存单元和设备,该文献在此以援引方式全部纳入本文。该文献对数种多层闪存单元进行比较,例如共地型、DINOR型、AND型、NOR型和NAND型存储单元。
模拟存储单元的其他示例性类型为,氮化物只读存储(NROM)单元、铁电RAM(FRAM)单元、磁RAM(MRAM)单元和相变RAM(PRAM,也称为相变存储器PCM)单元。在2002年2月3日~7日在美国加州旧金山市举办的IEEE国际固态电子器件学会(ISSCC 2002)的学报的第100-101页由Maayan等人发表的“A 512 Mb NROM Flash Data Storage Memorywith 8MB/s Data Rate”中,描述了NROM单元,其在此处以援引方式全部纳入本文。
例如,在2004年5月16~19日在塞尔维亚和黑山的Nis举办的第24届微电子国际学会(MIEL)学报第一卷的第377-484页上由Kim和Koh发表的“Future Memory Technology including Emerging NewMemories”中,描述了FRAM、MRAM和PRAM单元,其在此处以援引方式全部纳入本文。
在一些应用中,存储在所述存储设备中的数据运用纠错编码(ECC)技术来编码。例如,1989年6月25日~29日在纽约州Ithaca举办的1989年度IEEE/CAM信息理论会议的学报上由Rodney和Sayano发表的“On-Chip ECC for Multi-Level Random Access Memories”中,描述了多种用于保护随机存取存储(RAM)设备的片上编码技术,其使用了多层存储单元,该论文在此以援引方式全部纳入本文。再例如,描述了用于使用编码调制技术在模拟存储设备中存储数据的方法,美国专利6,212,654,其公开内容在此以援引方式全部纳入本文。在美国专利6,469,931和7,023,735中描述了其他用于多层存储设备的ECC方案,其公开内容在此以援引方式全部纳入本文。
读取自模拟存储单元的门限电压值有时会失真。这种失真有各种不同的原因,例如耦合自相邻存储单元的电场,由阵列中沿同一列的其他存储单元导致的背景图案相关性(back pattern dependency)(BPD),由在阵列中的其他存储单元上的操作所导致的干扰噪声以及由设备老化导致的门限电压漂移。一些常见的失真机制已由Bez等人在上文所引用的文章中进行了描述。在2002年5月的IEEE电子器件快报(23:5)第264-266页上发表的“Effects of Floating GateInterference on NAND Flash Memory Cell Operation”中,Lee等人还描述了存储单元中的干扰,其在此处以援引方式全部纳入本文。
美国专利5,867,429,描述了一种用于对在高密度闪速可电擦除可编程只读存储(EEPROM)单元阵列中的浮置栅极之间耦合的电场进行补偿的方法,其公开内容在此以援引方式全部纳入本文。根据所公开的方法,对一个存储单元的读取是通过首先读取所有与正被读取的存储单元场耦合的存储单元的状态来补偿。然后将与每个耦合的存储单元的状态或浮置栅极电压相关的数目,乘以存储单元之间的耦合比。在每个存储单元的各状态之间的断点电平是由一个补偿了耦合自相邻存储单元的电压的量来调整的。
发明内容
本发明的实施方案提供了一种用于操作存储设备的方法,包括:
使用纠错码(ECC)对数据编码并且将已编码的数据作为第一模拟值存储在所述存储设备的相应的模拟存储单元中;
在存储已编码的数据之后,从所述存储设备的存储有已编码的数据的存储单元中读取相应的第二模拟值,所述第二模拟值中的至少一些不同于相应的第一模拟值;
对存在于所述第二模拟值中的失真进行估计;
根据所估计的失真,针对所述第二模拟值计算纠错度量;
在ECC解码过程中,使用所述纠错度量处理所述第二模拟值,从而重构所述数据。
在一些实施方案中,计算纠错度量包括针对每个存储单元估算一个或多个指示所述失真的存储单元参数,并且根据所述存储单元参数计算所述纠错度量。所述存储单元参数可包括选自一组参数中的至少一个参数,其中所述一组参数由下列参数组成:读取自其他存储单元的模拟值、其他存储单元的估计的交叉耦合系数、已读取的第二模拟值的统计分布参数、所述存储单元已经历的先前的编程与擦除循环的数量、自先前的编程和擦除循环以来流逝的持续时间、在所述存储单元中检测到的先前误差、所述存储单元所连接到的字线的标识、所述存储单元所连接到的位线的标识、耦合到所述存储单元所连接到的位线的读出放大器的估计参数、以及环境参数。
在另一实施方案中,处理所述第二模拟值包括将所述第二模拟值的可能值的范围分成多个判决区间,并且确定所述第二模拟值所落入的相应的判决区间,且其中计算纠错度量包括定义相对于所述判决区间修改所述第二模拟值的函数,从而改进所述ECC解码过程的性能。
在又一实施方案中,处理所述第二模拟值包括接受关于所述ECC解码过程的性能的反馈,并且根据所述反馈修改所述ECC解码过程。在再一实施方案中,处理所述第二模拟值包括将所述第二模拟值与判决门限进行比较,并且其中修改所述ECC解码过程包括修改所述判决门限。修改所述判决门限可包括使用已修改的判决门限从所述存储单元中再读取所述第二模拟值。在实施方案中,将所述第二模拟值与判决门限进行比较包括使用所述判决门限在所述存储设备处读取所述第二模拟值,并且其中修改所述判决门限包括向所述存储设备发送一个请求修改所述门限的命令。
在一公开的实施方案中,处理所述第二模拟值包括通过使用所述判决门限的不同集合来执行所述ECC解码过程的相应的多次迭代,以对存储在每个存储单元中的数据产生多个估计,且根据对所述数据的多个估计重构该数据。重构所述数据可包括为每个存储单元独立地选择所述多个估计之一。
在一些实施方案中,处理所述第二模拟值包括采用具有第一错误性能的第一ECC解码过程,其中接受反馈包括接受对使用所述第一过程解码的数据中的解码错误的指示,并且其中修改所述ECC解码过程包括使用第二ECC解码过程处理所述第二模拟值,所述第二ECC解码过程具有优于所述第一错误性能的第二错误性能。在另一实施方案中,修改所述ECC解码过程包括对在所述第二模拟值的读取中使用的采样分辨率作修改。
在一些实施方案中,读取第二模拟值包括使用各自不同的判决门限集合来读取所述第二模拟值的多个实例,并且其中计算纠错度量包括为每个存储单元独立组合所述多个实例并且基于所述被组合的多个实例来计算所述纠错度量。读取与组合所述第二模拟值的多个实例可包括迭代地获得所述第二模拟值的另外的实例,并且使用所述另外的实例更新所述纠错度量,直至成功地解码所述ECC。
在一些实施方案中,对于每个存储单元,估计失真包括从潜在干扰存储单元的子集中读取第二模拟值,所述潜在干扰存储单元潜在地对从所述存储单元读取的第二模拟值中的失真作出贡献,并且其中计算纠错度量包括对由潜在干扰存储单元所贡献的失真进行估算。在一实施方案中,估算由潜在干扰存储单元向所述存储单元所贡献的失真包括,基于从所述潜在干扰存储单元读取的第二模拟值和从所述存储单元读取的第二模拟值,对由每个潜在干扰存储单元所贡献的失真进行近似。在另一实施方案中,处理所述第二模拟值包括在第一量化电平处理所述存储单元的第二模拟值,并且在比所述第一量化电平更为不精确的第二量化电平处理读取自潜在干扰存储单元的第二模拟值。处理所述第二模拟值可包括,通过迭代地修改用于读取所述第二模拟值的电路的门限,在所述第一和第二量化电平读取所述第二模拟值。
在一公开的实施方案中,存储已编码的数据包括使用编程与验证(P&V)过程将所述第一模拟值写入所述存储单元,并且其中估计失真包括通过所述P&V过程将潜在干扰存储单元分类成至少两类以及在每一类之内单独计算总失真,其中这两类选自一组类,所述一组类包括比所述存储单元更早地完全编程的存储单元、比所述存储单元更迟地完全编程的存储单元以及与所述存储单元并发地完全编程的存储单元。
在一些实施方案中,所述存储单元可以包括闪存单元、动态随机存取存储(DRAM)单元、相变存储(PCM)单元、氮化物只读存储(NROM)单元、磁随机存取存储(MRAM)单元或铁电随机存取存储(FRAM)单元。
在一公开实施方案中,所述ECC包括块码。所述块码可包括Bose-Chaudhuri-Hochquenghem(BCH)码和Reed-Solomon(RS)码之一。在一实施方案中,所述块码可包括低密度奇偶校验(LDPC)码、turbo码和Turbo乘积码(TPC)之一。所述ECC解码过程可包括迭代的解码过程。作为补充或作为替代,所述ECC解码过程可以使用通过读取所述第二模拟值产生的反馈。所述ECC解码过程可以包括最大似然序列估计(MLSE)过程。所述ECC可以包括卷积码、网格编码调制(TCM)码、比特交织编码调制(BICM)码和链接码之一。所述纠错度量可以包括似然比(LR)或对数似然比(LLR)。
在一些实施方案中,估计失真包括基于在其他存储单元中存在的失真,预测在所述存储单元中的一个中存在的失真。
在一个实施方案中,所述存储单元被布置在潜在干扰存储单元的隔离的组中,其中估计每组中的失真包括估算表示在所述组中的成对的存储单元之间的相互干扰的交叉耦合矩阵的逆,并且其中计算纠错度量包括计算在应用到所述第一模拟值的交叉耦合矩阵的逆与所述组中相应的存储单元的平均失真度(distortion level)相加之和,与应用到所述第二模拟值的交叉耦合矩阵的逆之间的距离。在另一实施方案中,隔离的组包括相应的氮化物只读存储(NROM)单元,并且其中每组中的潜在干扰存储单元包括相应的NROM单元的第一和第二电荷存储区域。在又一实施方案中,所述存储单元被布置在潜在干扰存储单元的隔离的组中,估计每组中的失真包括对在所述组中的相应的存储单元的平均失真度的矢量以及表示在所述组中的存储单元对之间的相互干扰的交叉耦合矩阵作出估算,并且其中计算纠错度量包括,根据读取自所述组中的存储单元的第二模拟值的矢量,和交叉耦合矩阵与平均失真度矢量的积之间的差来计算所述度量。在另一实施方案中,所述隔离的组包括相应的氮化物只读存储(NROM)单元,并且其中在每个组中的潜在干扰存储单元包括相应的NROM单元的第一和第二电荷存储区域。
在又一实施方案中,存储已编码的数据包括将所述已编码的数据置乱并且将已置乱的数据存储,并且其中处理所述第二模拟值包括把从存储单元读取的所述第二模拟值反置乱。在再一实施方案中,存储数据包括将至少一些存储单元保持在已擦除电平,并且其中读取所述第二模拟值、估计所述失真、计算所述纠错度量、以及处理所述第二模拟值包括对从维持在已擦除电平的存储单元读取的第二模拟值中的失真进行补偿。
根据本发明的一实施方案,还提供一种用于操作存储设备的方法,包括:
将数据作为第一模拟值存储在所述存储设备的相应的模拟存储单元中;
在存储所述数据之后,从所述相应的存储单元读取第二模拟值的多个实例,每个所述实例通过将所述第二模拟值与相应的判决门限作比较来读取;
对在所述第二模拟值中存在的失真进行估计;以及
根据所估计的失真来处理所述第二模拟值的多个实例,从而重构所述数据。
在一些实施方案中,对所述多个实例的读取和处理包括迭代地获得所述第二模拟值的另外的实例。
根据本发明的一实施方案,还提供了一种用于取出数据的装置,所述数据已用纠错码(ECC)来编码并且作为第一模拟值存储在存储设备的相应的模拟存储单元中,所述装置包括:
读取单元,其被布置为从所述存储设备的存储有已编码的数据的模拟存储单元中读取相应的第二模拟值,所述第二模拟值中的至少一些不同于相应的第一模拟值;
信号处理单元,其被布置为对在所述第二模拟值中存在的失真进行估计,并且根据所估计的失真,针对所述第二模拟值计算纠错度;和
解码器,其被布置为使用所述纠错度量处理所述第二模拟值,从而解码所述ECC并重构所述数据。
在一实施方案中,所述读取单元位于第一集成电路(IC)中,并且其中所述信号处理单元和所述解码器位于不同于第一IC的第二IC中。在一替代性实施方案中,所述读取单元、所述信号处理单元和所述解码器被集成在单一设备中。
根据本发明的一实施方案,还提供了一种用于取出数据的装置,所述数据已作为第一模拟值存储在存储设备的相应的模拟存储单元中,所述装置包括:
读取单元,其被布置为从相应的存储单元读取第二模拟值的多个实例,每个所述实例通过将所述第二模拟值与一个相应的判决门限作比较来读取;和
信号处理单元,其被布置为对在所述第二模拟值中存在的失真进行估计,并且根据所估计的失真来处理所述第二模拟值的多个实例,从而重构所述数据。
从下文对本发明的实施方案的详述,结合如下附图,将可更完整地理解本发明。
附图说明
图1是示意性地示出了根据本发明的一个实施方案的用于存储器信号处理的系统的框图;
图2是示意性地示出了根据本发明的一个实施方案的存储单元阵列的示意图;
图3是示出了根据本发明的一个实施方案的存储单元阵列中的电压分布的曲线图;
图4是示意性地示出了根据本发明的一个实施方案的从存储单元阵列取出数据的过程的功能框图;
图5是示意性地示出了根据本发明的另一实施方案的一种用于从存储单元阵列中取出数据的方法的流程图;以及
图6是示意性地示出了根据本发明的一个实施方案的一种用于估计存储单元阵列中的失真的方法的流程图。
具体实施方式
概述
本发明的实施方案提供了用于取出存储在存储设备中的信息的改进的方法和系统。在下文描述的实施方案中,数据被存储为电荷电平,其被写入模拟存储单元阵列。电荷电平确定了存储单元的相应门限电压。为了减少不同失真机制的影响,在将数据存储在存储单元之前,使用纠错码(ECC)对所述数据进行编码。
所述数据是通过读取这些存储单元的门限电压并且使用ECC解码器将所述ECC解码来重构的。所述ECC解码器对ECC度量进行操作,诸如对数似然比(LLR),所述ECC度量是定义在读取电压上的。
信号处理单元估计在读取电压中存在的失真。所述失真可以由所述阵列中的其他存储单元贡献,通过在这样的存储单元上执行的操作和/或诸如老化之类的效应来贡献。根据所述失真机制,存储在存储单元中的电荷的实际电平和/或被读出和采样的电压会受到影响。信号处理单元基于估计的失真计算ECC度量,并将所述ECC度量提供给ECC解码器。ECC解码器使用所述度量对ECC解码,从而重构存储在目标存储单元中的数据。ECC度量也可以考虑指示预期的失真度的另外的某些存储单元参数。在一些实施方案中,使用对ECC解码过程的成功、失败或质量的反馈,来修改解码过程的操作。
使用基于所估计的失真的ECC度量,显著地改进了ECC解码过程的性能。可以以多种方式使用ECC解码过程的改进性能来实现更高的信息存储密度。例如,可以增加在每个存储单元中存储的电压电平的数量(从而增加信息位的数量)。在其他实施方案中,较小或较密的存储单元阵列,其可能具有增大的存储单元间的交叉耦合和/或较高的老化速率,因改进的ECC性能而能够以较好的性能使用。作为补充或作为替代,可以针对给定的错误率需求而减小正在使用的编码率,从而导致较少的编码开销。在替代性的实施方案中,可以改进给定存储阵列和ECC的错误性能。改进的性能也可以用来缩小存储设备所使用的门限电压的范围,从而降低设备的能耗并且改进其可靠性和耐久性。
此处描述的方法和系统可用于多种存储设备和存储单元类型,例如不同的闪存单元、DRAM单元、NROM单元、MRAM单元和PCM单元。本发明的原理也可以用于诸如硬盘驱动器(HDD)之类的不同存储介质和设备中的数据存储和取出。
任何合适的估计方法均可用于估计读取自所述存储单元阵列的电压中的失真。此处描述了几种示例性的方法。
系统描述
图1是示意性地示出了根据本发明的一个实施方案的用于存储器信号处理的系统20的框图。系统20包括存储设备24,其将数据存储在存储单元阵列28中。所述存储单元阵列包括多个模拟存储单元32。在本专利申请的上下文中以及权利要求书中,术语“模拟存储单元”是用于描述任何通过保持诸如电压或电荷之类的物理参数的持续的模拟值来存储信息的存储单元。阵列28可以包括任何种类的模拟存储单元,例如,NAND和NOR闪存单元、PCM、NROM、FRAM、MRAM和DRAM单元。
在存储设备24中,用于存储的数据被提供给所述设备并且缓存在数据缓冲器36中。然后将所述数据转换成模拟电压,并且使用读/写(R/W)单元40写入存储单元32,其中所述读/写单元40的功能将在下文进一步详述。当从阵列28读出数据时,读/写单元40将所述电荷以及由此的存储单元32的模拟电压转换成数字样本。每个数字样本用一个或多个比特来表示。这些样本缓存在缓冲器36中。由读/写单元40产生的样本也被称为软样本。存储设备24的操作和时序均由控制逻辑48所管理。
数据进出存储设备24的存储和取出,由存储器信号处理器(MSP)52执行。MSP 52在存储设备24和存储并取出所述数据的主机或应用之间起媒介作用。如下文将详示,MSP 52使用将纠错编码和失真估计组合的新颖方法,以改进所述数据的可靠性和存储密度。
MSP 52包括编码器/解码器64,该编码器/解码器64使用ECC对将要写到设备24的数据进行编码,而当把数据从设备24读出时对所述ECC进行解码。信号处理单元60处理被写入设备24和从设备24取出的数据。具体地,信号处理单元60估计对从存储单元32读出的电压有影响的失真。所估计的失真被用于改进ECC的性能,下文将予以详述。
MSP 52包括数据缓冲器72,该数据缓冲器72由信号处理单元60用于存储数据以及用于与存储设备24交互。MSP 52还包括输入/输出(I/O)缓冲器56,该输入/输出(I/O)缓冲器56在所述MSP和所述主机之间形成接口。控制器76管理MSP 52的操作和定时。除执行下述功能之外,控制器76还可以执行另外的存储器管理功能,例如损耗均衡和坏块管理。信号处理单元60和控制器76可以用硬件实现。替代地,信号处理单元60和/或控制器76可以包括运行合适的软件的微处理器,或者硬件和软件元素的组合。
图1中的配置是示例性的系统配置,其纯粹是为概念清楚而示出的。也可以使用任意其他合适的配置。为清楚起见,对于理解本发明的原理并非必要的元件,例如各种接口、寻址电路、定时和定序电路、数据置乱电路和调试电路,均从附图中省略。
在图1中所示的示例性系统配置中,存储设备24和MSP 52被实现为两个单独的集成电路(IC)。然而,在替代的实施方案中,所述存储设备和MSP可被集成在单一IC中或片上系统(SoC)中。在一些实施方式中,单个MSP 52可被连接到多个存储设备24。实现系统20的某些实施方案的补充的架构性的方面,在上文所引用的美国临时专利申请60/867,399中得以更详细地描述。
在典型的写操作中,从主机接收待要写入存储设备24的数据,并将所述数据缓存在I/O缓冲器56中。编码器/解码器64编码所述数据,且所编码的数据通过数据缓冲器72传送到存储设备24。在设备24中,数据临时存储在缓冲器36中。读/写单元40将数据转换成模拟电压值,并且将数据写入阵列28的适当的存储单元32中。
在典型的读操作中,读/写单元40从适当的存储单元32读出模拟电压值并且将所述电压转换为数字样本。所述样本被缓存在缓冲器36中,并且传送到MSP 52的缓冲器72。信号处理单元60使用下文所描述的方法,估计数据样本中所存在的失真。
数据块从缓冲器72传送到信号处理单元60,而编码器/解码器64将这些块的ECC解码。编码器/解码器64使用由信号处理单元60所提供的失真估计,以改进ECC解码过程的性能。所解码的数据通过I/O缓冲器56传送到所述主机。
在一些实施方案中,MSP 52在数据被写入存储单元之前将其置乱,并且将从存储单元读取的数据反置乱,以便改进失真估计的性能。
存储阵列结构和失真机制
图2是示意性地示出了根据本发明的一个实施方案的存储单元阵列28的示意图。虽然图2涉及连接在特定阵列配置中的闪存单元,但是本发明的原理同样也适用于其他类型的存储单元和其他阵列配置。在上文背景技术部分中所引用的参考文献中,描述了一些示例性的存储单元类型和阵列配置。
阵列28的存储单元32被布置在具有多个行和多个列的栅格中。每个存储单元32包括浮置栅极金属氧化物半导体(MOS)晶体管。通过向晶体管的栅极、源极和漏极施加适当的电压电平,可以将一定数量的电荷(电子或空穴)存储在一特定的存储单元中。存储在所述存储单元中的值可通过测量所述存储单元的门限电压来读取,所述门限电压被定义为使所述晶体管导通而需要向所述晶体管的栅极施加的最小电压。所读取的门限电压与存储在所述存储单元中的电荷成比例。
在图2的示例性配置中,每一行中的晶体管的栅极由字线80连接。每一列中的晶体管的源极由位线84连接。在一些实施方案中,例如在一些NOR单元设备中,源极直接连接到位线。在替代的实施方案中,例如在一些NAND单元设备中,位线被连接到多串浮置栅极单元。
通常,读/写单元40,通过将变化的电压电平施加到特定的存储单元32的栅极(也即,施加到所述存储单元所连接到的字线),并且检查所述存储单元的漏极电流是否超过了某一门限(也即,所述晶体管是否导通),来读取该特定的存储单元32的门限电压。读/写单元40通常向所述存储单元所连接到的字线施加一系列的不同的电压值,并且确定为使漏极电流超过所述门限的最低栅极电压值。通常,读/写单元40同时读取一整行的存储单元,这一整行的存储单元也被称为页。
在一些实施方案中,读/写单元40通过将所述存储单元的位线预充电到某一电压电平来测量漏极电流。一旦栅极电压被设定到期望值,漏极电流就使得位线电压经存储单元放电。在施加栅极电压之后的几毫秒,读/写单元40测量位线电压,并且将位线电压与门限进行比较。在一些实施方案中,每个位线84被连接到相应的读出放大器,该读出放大器将位线电流放大并且将该电流转换为电压。使用比较器将被放大的电压与门限进行比较。
下文描述的这些方法中的某一些,涉及对与所读取的电压电平相比较的门限值进行的调整。这样的门限值的调整可以在高速下执行,在一些情况下先于每次读操作。在一些实施方案中,存储设备24,尤其是读/写单元40,被设计为能够进行快速、高效且灵活的门限值调整。例如,在MSP 52和存储设备24之间的接口可包括能够通过读/写单元40进行快速和高效的门限值调整的命令。此类命令可以为每个单独的门限值指定所需的调整,或者请求对整个门限值集合进行统一调整。为此目的所使用的示例性的命令接口被描述于上文所引用的美国临时专利申请60/889,277、60/912,056和60/913,281中。
上面所描述的电压读取方法是一种示例性方法。作为替代,读/写单元40可以使用任何其他适合的方法来用于读取存储单元32的门限电压。例如,读/写单元40可以包括一个或多个模数转换器(ADC),该模数转换器将位线电压转换成数字样本。也作为替代,此处描述的方法和系统可以与任何适合的用于将模拟值从模拟存储单元读取和写入模拟存储单元的方法或装置一起使用。
在一些实施方案中,整个页(行)被并行地写和读。对存储单元的擦除通常在包含多个页的块中执行。典型的存储设备可以包括数十万个页,每个页包含成千上万个存储单元(例如,16K或32K单元)。典型的擦除块是128页的数量级,尽管也可以使用其它块尺寸。
由读/写单元40所数字化的电压可以包含多种类型的失真,这些失真是由阵列28中的不同的失真机制所导致的。一些失真机制影响了存储在存储单元中的实际电荷,而其他机制使得所读出的电压失真。例如,所述阵列中的相邻存储单元之间的电耦合会修改特定存储单元中的门限电压。这种效应被称为干扰噪声。作为另一实例,电荷会随着时间的推移而泄漏。这种老化效应的结果是,所述存储单元的门限电压将随着时间的推移而从最初写入的值漂移。
另一种类的失真,通常被称为扰动噪声,是由阵列中的某一存储单元上的读、写或擦除操作而导致的,这引起了对其他存储单元的非预期的擦除或编程。作为又一实例,可以由在相邻存储单元(例如在同一NAND存储单元串中的其他存储单元)中的电荷,通过一种称为背景图案相关性的效应,来影响特定存储单元的源极-漏极电流。
图3是示出了根据本发明的一个实施方案的存储单元阵列28中的电压分布的曲线图。图3用来演示关于存储单元阵列读取值之精确性的失真效应。在图3的实例中,每个存储单元32使用四个标称电压电平存储两比特的信息。图92A至92D示出了在每个存储单元被编程时的整个阵列上的电压分布。图92A示出了存储“11”比特值的存储单元中的电压的分布。图92B、92C和92D各自示出了存储“01”、“00”和“10”比特值的存储单元中的电压分布。
在当前实例中,存储单元32的门限电压使用3位转换来读取。从而,门限电压的范围被分成8个判决区96A至96H。每个存储单元的数据内容是基于从所述存储单元读取的门限电压电平所落入的判决区来确定的。例如,落入判决区96F的读取自特定存储单元的电压电平98,指示所述存储单元的数据内容是“00”。注意到,落入判决区96E的电压电平也被解释为指示数据内容“11”。虽然4个判决区通常足以解码这四种可能的二进制数字组合,但是使用8个判决区提供更好的分辨率并且改进失真估计和解码性能。
由于这些不同的失真机制,门限电压的分布可能改变。例如,门限电压会由于老化而随着时间推移而漂移。图100A至100D各自示出在电压随着时间的推移而漂移之后,具有“11”“01”“00”和“10”的数据内容的存储单元的分布。
具体而言,由于失真,电压电平98已经改变到了偏移电压电平104。如图可见,电压电平104落入判决区96E,而非如最初所预期的96F中。在当前实例中,由于这8个判决区提供的分辨率增加,所述偏移将不一定会导致判决错误。然而,通常,可以看出,失真会导致对所述存储单元的数据内容的错误读取。
通过失真估计辅助的ECC解码
系统20通过使用ECC对在所述存储单元中存储的数据进行编码,降低了对存储单元32的数据内容做出错误判决的概率。在当前实例中,编码器/解码器64将数据分开编码在每页中。在替代性的实施方案中,所述数据可以被编码在具有任何其他适合尺寸的块中。例如,每个页可以被分成几个扇区,且编码器/解码器64将所述数据分开编码在每个扇区内。替代地,所述数据可以编码在多个页上。
可以使用现有技术中所知的多种纠错码来编码所述数据。所述ECC可以包括,例如一个单独地对固定尺寸的数据块编码的块码。示例性的块码可以包括Bose-Chaudhuri-Hochquenghem(BCH)码或者Reed-Solomon(RS)码。一种特定类别的块码是一类使其自身参与迭代性解码过程的码。通常使用迭代过程解码的码包括,例如,低密度奇偶校验(LDPC)码,Turbo码和Turbo乘积码(TPC)。其他类型的码可以包括卷积码和网格编码调制(TCM)码。此外作为替代,所述码可以包括一个已知的比特交织编码调制(BICM)码,其通常包括卷积码、比特交织器和格雷映射器(Gray mapper)。
作为替代,所述ECC过程可以包括一个反馈编码编程过程,例如上文所引用的美国临时申请60/863,810中所描述的过程。在一些情况下,两种码可以循序用作内部码和外部码,以形成链接码。
由编码器/解码器64所使用的ECC对度量进行操作,所述度量是定义在所述读取数据上的。假设读取了某一电压电平,则ECC度量可以提供关于特定信息位被编码的统计似然度的信息(或符号,如在Reed-Solomon码和网格码的情况下)。所述ECC度量可以基于例如电压分布92A至92D的中心和变化之类的参数。
通常,MSP 52对电压分布的参数作估计,并且使用估计的参数来计算比特或符号似然度。此外,所述MSP可以保留或接收关于这些存储单元的情况的信息,并且使用此信息来评估所述存储单元中的电压分布的特性,并相应地修改ECC度量。例如,MSP可以追踪所述存储单元已经经历的编程和擦除循环的数量,以及这些存储单元在多久之前已经被编程。这些参数指示了自这些存储单元被编程以来它们所受到的泄漏噪声的电平。
在一些实施方案中,ECC度量可以包括似然比(LR)或对数似然比(LLR),其被定义为
其中Xi表示从存储在特定存储单元中的一个或多个比特取出的特定的数据比特,而r表示读取自所述存储单元的电压电平。作为替代,ECC度量可以包括定义在读取自所述存储单元的电压电平上的任何其他度量,其有助于所述ECC解码过程。
其他类型的ECC度量可以包括,如在加性高斯白噪声环境中经常使用的方差LLR,以及在Viterbi解码器、TCM和BICM码中常用的均方差估计。
在一些实施方案中,所述ECC度量可以指示已解码的比特的相对可靠性。例如,可基于所读取的门限电平距分布中心的距离,将所述比特分类为“怀疑为出错”、“常规”或“安全”。当所读取的电压接近于判决区的边缘时,则对应的比特被分类为“怀疑为出错”。当所述电压完全位于所述判决区内时,对应的比特被分类为“安全”。除此之外的比特被分类为“常规”。此类ECC度量可被例如块码软解码器所使用。
信号处理单元60对从存储单元32所读取的电压中存在的失真进行估计,并且基于估计的失真计算所述ECC度量。使用基于所估计的失真的ECC度量,明显改进了由编码器/解码器64执行的ECC解码过程的性能,因为它们给予具有较少失真的值更多权重,且反之亦然。
参见图3的实例,且假设p(Xi=0)=p(Xi=1)=0.5,公式[2]可写为:
其中S表示判决区96A至96H,S|Xi=0表示被编程到比特Xi等于“0”的存储单元中的值的子集,而S|Xi=1表示比特Xi等于“1”的编程值的子集。
设T0表示Xi=0的值中最接近读取电压r的值,而T1表示Xi=1的值中最接近读取电压r的值。在大多数实际情况下,公式[3]中的和可以用每个和中最大项来近似,所述最大项通常是包含T0和T1的项。也假设r的电压分布是带变量σ2的高斯分布,则公式[3]可以近似如下
因为r表示在具体判决区内的值,所述判决区被表示为[Va,Vb],公式[4]可被更精确地写作
其中Q()表示高斯互补累积分布函数(CDF)。在当前实例中,信号处理单元60基于值Va、Vb、T0、T1和σ计算LLR值。
在一些实施方案中,由MSP估算的ECC度量可以将对所述MSP为可用的另外的存储单元参数纳入考虑,以便改进ECC度量的精确性和性能。这样的额外信息可以包括表示存储单元的预期的失真度的任何参数,例如写入相邻存储单元的值、相邻存储单元的所估计的交叉耦合系数、存储单元已经经历的编程和擦除循环的数量、自先前的编程和擦除循环以来流逝的持续时间、在所述存储单元中检测到的先前解码错误、所述存储单元所连接到的字线和/或位线的标识、诸如电源电压(Vcc)和温度的环境参数、和/或任何其他适合的参数。例如,在公式[3]中的条件概率可以被替代以将这些另外的存储单元参数纳入考虑的条件概率。
在一些实际情况下,来自相邻存储单元的交叉耦合干扰的电平不仅取决于存储在相邻存储单元中的电压(或电荷),而且也取决于被干扰存储单元的电压电平(或电荷电平)。因此,在一些实施方案中,MSP通过对定义在干扰存储单元和被干扰存储单元的电压电平(或电荷电平)之上的函数进行估算来计算ECC度量。
关于交叉耦合系数的值进行估计的一些方面,在提交于2007年5月10日的题为“Distortion Estimation and Cancellation in MemoryDevices”的PCT申请中得到描述,该申请的公开内容在此处以援引方式纳入本文。
在一些情况下,存储单元阵列可被分区为存储单元组,从而使得交叉耦合干扰局限于每个组内,而不同的组被彼此隔离。极端的实例发生于NROM设备中,其中每个存储单元在所述存储单元的两个电荷区域内存储两个值。当存储单元到存储单元的隔离度足够高时,交叉耦合可被假定为仅仅发生在每个存储单元的所述两个值之间。
在这样的情况下,在特定的存储单元组中的存储单元之间的交叉耦合系数可被排列在交叉耦合矩阵中,且ECC度量可以使用该交叉耦合矩阵来计算。
设 表示写入了一组k个互相干扰的存储单元的k个值。
设 表示了从这些存储单元读取的k个值。在一些情况下,例如当使用通常对组中所有存储单元同时应用的编程和验证(P&V)过程来写这些存储单元时,则当这些存储单元被编程时x≈y。由于诸如老化之类的不同失真机制,矢量y随时间而变化。矢量y在稍后的时间点的值可被写为
y=x+H(m+n)
其中m表示由于老化而引发的所述k个电压的相应电压偏移的矢量,而n表示随机老化噪声分量的矢量。这k个随机分量被假设具有带变量σ2的高斯分布。H是所述交叉耦合矩阵,定义为
其中aij表示在所述组中从存储单元j到存储单元i的交叉耦合系数。例如对于NROM单元,对于k=2,
上述公式[6]中的项Hn并非空白,因为其k个分量是相关的。将公式[6]的两边乘以H的逆,得出
H-1 y=(H-1 x+m)+n
其中项(H-1 x+m)是确定性的(并且是已知的,假设写入电平已知),而项n为随机且空白。
MSP 52通过估计系数aij来计算H-1。然后MSP能够通过确定将下列表达式最小化的x的值将所述数据解码:
‖H-1 y-(H-1 x+m)‖2
其中‖‖表示欧几里得范数。
例如,当使用硬判决ECC解码器时,MSP可以扫描或者搜索x的不同的可能数据值组合,以便确定将上述公式[9]最小化的值的集合。为此目的可使用任何适合的搜索过程。例如,MSP可以使用球形解码方法,例如由Agrell等人在发表于2002年8月的IEEE信息理论学报(IEEE Transactions on Information Theory)第48卷2201-2214页的“Closest Point Search in Lattices”中所描述的方法,其在此处以援引方式纳入本文。替代地,也可以使用V-BLAST近似解码方法,如本领域所公知。
当使用软判决ECC解码器时,例如当使用BICM时,MSP通常在搜索过程期间计算每个数据位的LLR。例如,MSP可以为所有正在讨论的数据位被设为“1”的x值计算上述表达式[9]的最小值,并且从此结果中减去为所有正在讨论的数据位被设为“0”的x值计算的公式[9]的最小值。作为结果的LLR值可由软ECC解码器用作度量。替代地,可以基于对y的硬判决使用偏移的标称平均值来估计m。然后,表达式y-H×m可被用作上述公式[4]或[5]中的LLR计算的输入。
通常,表达式[9]可被所述ECC解码器用作ECC度量。例如,当所述ECC包括TCM方案且所述ECC解码器包括Viterbi解码器,所述解码器可以将上述表达式[9]用作对应于所述组中的k个存储单元的值的组的度量。
图4是示意性地示出了根据本发明的一个实施方案的从存储单元阵列28取出数据的过程的功能框图。当从存储设备24读取数据时,读/写单元40基于从阵列28的存储单元32读取的电压电平产生数字化样本。这些样本被存储在数据缓冲器72中。
在本专利申请的上下文中以及权利要求书中,术语诸如“读取数据”、“采样电压”和“读取电压”意味着或者明确地将存储在存储单元中的模拟电压转换为数字样本,或者在一接口上接受这样的样本。例如,当使用如上文图1中所示的双芯片配置时,这些术语可以指由所述MSP接受样本,其中这些样本由片外比较器或模数转换器产生。
目标样本(也即,其数据被主机所请求的存储单元的样本),被提供给信号处理单元60中的度量计算模块108。所述度量计算模块计算目标样本的ECC度量。
所述目标样本,以及可能对这些目标存储单元潜在地导致失真的其他存储单元的样本,被提供给信号处理单元60中的失真估计模块112。模块112基于目标存储单元和潜在干扰存储单元的样本,估计向目标存储单元贡献的失真。模块112可以执行用于估计失真的各种不同方法。示例性的估计方法在下文进一步描述。
模块112可根据正在讨论的失真机制的类型以及正在使用的估计方法,考虑潜在干扰存储单元的不同数目和类型。例如,在一些实施方案中,模块112对每个存储单元估计来自其所在阵列中的8个相邻存储单元的交叉耦合干扰。在这些实施方案中,模块112通常处理正在被解码的页(行)以及前序和后继的页。在此情况下的数据缓冲器在尺寸上可达数个页。
在一个替代性的实施方案中,模块112可以仅考虑源自存储单元的左侧和右侧的相邻存储单元的失真。在这些实施方案中,所述数据缓冲器可以更小,处于一页的量级。
在一些实施方案中,模块112对由远离所述目标存储单元的页中的存储单元所导致的失真进行估计。例如,背景图案噪声可以由位于和目标存储单元相同的列上但位于较远的页上的存储单元贡献。在这些实施方案中,这样的远处存储单元的内容,或者关于这些存储单元的其他信息,可被提供给模块112。
在一些情况下,可以用较粗略的量化,也即,以与目标存储单元的样本的量化相比数量更小的比特,存储并且处理读取自潜在干扰存储单元的样本。减少的量化可以减少数据缓冲器的大小和模块112的复杂度。
失真估计模块112向度量计算模块108提供估计的失真。所述度量计算模块基于估计的失真来计算ECC度量,并且将该度量提供给编码器/解码器64。ECC编码器/解码器使用所述度量解码所述ECC,从而重构存储在目标存储单元中的数据。
在一些实施方案中,度量计算模块108在从目标存储单元读取的样本值和判决门限之上定义了一个函数。所述函数针对判决门限修改样本值,从而在给定由模块112提供的失真估计的情况下,降低ECC解码过程的错误概率。例如,参见图3,由模块108所估算的函数使得电压轴实质上弯曲,从而将曲线100A至100D各自映射到曲线92A至92D。当所述函数在后继的目标样本上操作时,基于偏移分布100A至100D进行位判决。
在一些情况下,来自ECC解码过程的反馈(例如,解码成功或失败)可被用于进一步改进失真估计和度量计算过程。使用此类反馈的数据取出方法在下文图5中进行描述。
所述ECC解码器可以对存储单元序列考虑并且执行联合判决。例如,为此目的,所述解码器可以应用多种如本领域所公知的最大似然序列估计(MLSE)技术。
使用ECC解码器反馈的迭代性失真估计
图5是示意性地示出了根据本发明的另一实施方案的一种用于从存储单元阵列28中取出数据的方法的流程图。本方法的步骤128至140描述一种与上述图4中过程相类似的过程。随后的步骤144至156基于来自所述ECC解码过程的反馈,执行所述解码过程的迭代性适配。
在读取步骤128,所述方法以读/写单元40读取期望的目标存储单元的电压以及从阵列28中的潜在干扰存储单元读取电压作为开始。在失真估计步骤132,信号处理单元60对在读取电压中存在的失真进行估计。在度量计算步骤136,信号处理单元60计算ECC度量。信号处理单元60可以使用任何ECC度量以及任何失真估计方法,例如本文中所描述的方法。在解码步骤140,ECC编码器/解码器64对ECC进行解码,并且重构所存储的数据。
ECC编码器/解码器64通知信号处理单元60(或控制器76)所述页是否成功解码,也即,所述解码页是否包含错误。如果解码成功(如在成功校验步骤144中所校验),所述方法就成功地终止,此为成功终止步骤148。信号处理单元60可以使用不同的方法以验证所解码的页是否包含错误。例如,信号处理单元60可以检验解码器输出是否为有效码字。替代地,一个或多个校验和位,例如循环冗余校验(CRC),可与所述数据存储在一起。信号处理单元60可以基于已解码的数据计算CRC,并且将其与存储的CRC值进行比较。进一步作为替代,信号处理单元60可以计算已解码的数据的可靠性度量,并且将其与预定门限相比较。
在当前实例中,允许对反馈迭代单独设定某一最大次数,以避免无穷循环和死锁情况。从而,当来自ECC解码器的反馈指示所解码的页包含错误时,在迭代校验步骤152,信号处理单元60(或控制器76)校验是否已经执行了最大迭代次数。如果已经达到所述最大迭代次数,在错误终止步骤160,则所述方法终止且未成功解码所述数据。
否则,在反馈适配步骤156,所述ECC解码器适应性修改所述解码过程。例如,所述ECC解码器可以标记产生了最低错误概率的LLR值。然后信号处理单元60使用此信息以标记具有最低错误概率的目标样本。作为替代,所述解码器可以将具有低置信水平的比特标记为“擦除”,并且根据解码过程结果更新擦除标记。进一步作为替代,也可以使用采用ECC解码器反馈来调整或更新所述解码过程的任何其他技术。然后所述方法循环回上述的失真估计步骤132,且信号处理单元60基于所提供的反馈对所述失真进行再次估计。
当在上述解码步骤140解码所述数据时,MSP 52使用电压门限的某一集合。在一些实施方案中,当在上述成功校验步骤144检测到错误时,信号处理单元60通过调整门限来修改解码过程,以改进解码性能。信号处理单元60可以使用用于调整门限的任意适合方法。例如,信号处理单元60可以执行梯度搜索,其中将门限值根据错误性能增大还是减少而递增或递减。作为替代,可调整门限值,以最小化所需的读操作次数。在上文引用的美国临时专利申请60/894,290中,描述了另外的可以用于调整判决门限的门限适配方法。
需要注意的是,在一些情况下,调整所述判决门限涉及将这些存储单元电压再读取。例如,如上所述,当通过向字线施加不同电压来读取存储单元门限电压时,使用修改的判决门限再读取这些存储单元。当使用高分辨率ADC读取这些存储单元时,对这些存储单元的再读取通常并非必要。
在一些实施方案中,信号处理单元60可以基于逐个存储单元来选择所述门限值,以匹配每个单独存储单元的失真特性。可能的门限可以被预定或基于适应性方式来调整。例如,假定使用门限值的三个预定集合在三次解码迭代中读取某一存储单元组,这三个预定集合被表示为TH1至TH3。
在本实例中,下列表格列出了由这三次解码迭代产生的位序
对于所述序列中的每个比特,三个门限集合之一产生了最低失真度。用于每个比特的最佳性能门限集合由下列表格给出:
最佳性能门限集合 | TH1 | TH1 | TH2 | TH2 | TH3 | TH3 | TH1 | TH1 | TH3 |
信号处理单元60针对所述序列中的每个比特,选择使用最佳性能门限集合的解码结果。
从而,判决结果由下列表格给出:
判决 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
在替代性的实施方案中,信号处理单元60在ECC解码之前,基于逐个存储单元而选择门限。在这些实施方案中,在ECC解码之前,使用多个预定门限集合读取这些存储单元。然后,对于每个存储单元,根据针对该存储单元的估计失真,使用最佳性能门限集合。为每个存储单元施加所述最佳性能门限集合,以产生到ECC解码器的输入。
作为对选择使用最佳性能门限来解码的值的替代,信号处理单元60可以将使用不同门限在不同迭代中读取的数据值组合。例如,信号处理单元60可以对在不同的迭代过程中所解码的比特值执行多数表决。
进一步作为替代,信号处理单元60可以使用不同门限来读取这些存储单元电压,并且在解码ECC之前,将来自不同迭代的读取值组合。换言之,对于每个存储单元,信号处理单元60可以使用不同的门限读取存储单元电压,并且基于多个已读取电压产生ECC解码度量(例如,LLR)。然后,使用所述度量对ECC解码。在一些实施方案中,以迭代方式使用不同门限读取所述存储单元,直到所述ECC解码成功。在每次迭代中,用不同的门限读取存储单元。基于在不同的迭代中从所述存储单元读取的电压,计算或更新解码度量。继续所述过程,直至所述ECC被成功解码。
虽然上述说明涉及基于逐个存储单元以不同门限再读取这些存储单元,然而也可以针对整个页使用一个单一的门限集合。
在一些实施方案中,MSP 52包括两个或更多个具有增强性能的解码器。更高性能的解码器相对于较简单的解码器,通常具有更高的复杂度,获得更多的功率并且引入较高的处理时延。起初,MSP使用复杂度最低的解码器解码所述页,并且仅当检测到解码错误时才改用高性能解码器。采用此方法,减小了平均功率消耗和处理时延,因为仅当需要时才调用高性能和高复杂度的解码器。
例如,MSP可在初始时试图不进行ECC解码而解码所述数据,而当检测到错误时返回使用ECC解码器。例如,当由MSP使用的ECC方案包括一种系统码(即,一种增加独立的冗余位却并不修改未编码的信息位的编码)时,可以使用该项技术。作为另一实例,所述较为简单的解码器可以包括硬件实现的硬判决Reed-Solomon(RS)解码器,其输入包括无记忆逐个存储单元判决。所述高性能解码器可以包括软判决RS解码器,其以软件来实现,并且使用存储单元电压的高分辨率采样。
基于由ECC解码器提供的反馈来修改解码过程的另一种可能,是修改读取电压电平的分辨率。所述分辨率可以被修改,例如通过迭代地修改用于对读取自存储单元的电压进行数字化的门限电压,直到实现成功解码。如上所提到的,在一些实施方案中,潜在干扰存储单元的电压和被干扰存储单元的电压以不同的分辨率读取。在此类情况下,可以对潜在干扰存储单元的读取分辨率、被干扰存储单元的读取分辨率或两者,进行适应性修改。
示例性的失真估计方法
MSP 52的信号处理单元60可以使用任何适于估计从存储单元32中读取的电压中存在的失真的方法。在上文引用的美国临时专利申请60/747,106和60/885,024中描述了一些示例性的方法。作为替代,可以使用任何其他合适的失真估计方法。
图6是示意性地示出了根据本发明的一个实施方案的一种用于估计在存储单元阵列28中的失真的方法的流程图。下述方法可以被失真估计模块112使用于例如上文图5的方法的失真估计步骤132中。所述方法利用了如下事实,即由在目标存储单元之前编程的存储单元导致的失真可能不同于与在目标存储单元之后编程的存储单元导致的失真。
另一假设是所述阵列已经使用如本领域所公知的编程与验证(P&V)过程而编程。P&V过程,例如,由Jung等人于1996年11月在IEEEJournal of Solid State Circuits(11:31)的1575页-1583页上发表的“A 117mm2 3.3V Only 128Mb Multilevel NAND Flash Memory forMass Storage Applications”中描述,以及例如由Takeuchi等人于1998年8月在IEEE Journal of Solid-State Circuits(33:8)的1228页-1238页发表的“A Multipage Cell Architecture for High-SpeedProgramming Multilevel NAND Flash Memories”中描述,上述文献均在此处以援引方式纳入本文。
在一些已知的P&V过程中,在某一页中的每个存储单元都被编程为标注以0至M-1的M个电压电平中的一个,其中电平0是已擦除电平。所述P&V过程以M个阶段(phase)对所述页编程。在阶段i,一系列电压脉冲被施加到编程电平应该为i或更高的存储单元。在每个脉冲之后,所述过程读取不同存储单元的电压,并且停止向达到其期望电平的存储单元施加脉冲。
在电压读取步骤170,所述方法始于MSP 52接受读取自阵列32的存储单元28的采样电压。这些电压包括目标存储单元的电压和潜在导致对所述目标存储单元的干扰存储单元的电压。在当前实例中,阵列28的页是以序列顺序读取的,也即逐行读取,尽管也可以使用其他读取配置。
在分类步骤174,对于给定的目标存储单元,根据编程时间对潜在干扰存储单元分类。存储单元32的一子集,标注为D1,包括潜在干扰存储单元,其在目标存储单元被编程时并未被所述P&V过程完全编程。当目标存储单元被编程时,类D1中的存储单元处于已擦除电平,但是可能从那时起已进行编程。
在一些编程方案中,分数个阶段对存储单元编程。例如,在一些4电平存储单元编程方法中,最低有效位(LSB)和最高有效位(MSB)被写为两个单独的步骤。在上文所引用的由Takeuchi等人所著的一篇文章中,描述了一种示例性方法。在此类方法中,在某一时间点可将存储单元编程到中间电平,而未来编程步骤将所述存储单元带到其最终编程值。当使用此类编程方法时,类D1被扩展而包括如下存储单元,其在目标存储单元被编程时处于已擦除电平或处于中间编程电平,但可以自那时起编程到其最终值。
存储单元32的另一子集,标注为D2,包括潜在干扰存储单元,其在目标存储单元被编程时已被编程。因为当目标存储单元被编程时,从这些存储单元到该目标存储单元的干扰已经存在,故所述P&V过程已经至少部分地对此干扰作出补偿,除非所述目标存储单元被擦除,在此情况下所述P&V算法并不对之运用。第三类存储单元,标注为D3,包括与所述目标存储单元并发地编程的潜在干扰存储单元,例如,与所述目标存储单元同处同一页上的存储单元。
在基于类的失真估计步骤178,信号处理单元60根据不同类的潜在干扰存储单元,估计针对目标存储单元的失真。设n和m各自表示阵列28中目标存储单元的行号和列号。则xn,m表示在使用所述P&V过程写目标存储单元之后此目标存储单元的电压。xi,j表示在目标存储单元被编程时位于i行和j列的存储单元的电压。yn,m表示读取自目标存储单元的存储单元电压值,由于失真,它不同于xn,m。相似地,yi,j表示读取自目标存储单元的存储单元电压值,由于失真,它不同于xi,j。
在yn,m中存在的总失真可被估计为
其中hn,m,i,j表示位于i行j列的干扰存储单元到位于n行m列的目标存储单元的交叉耦合干扰系数。b表示常数偏项。
类D1中的存储单元包括在目标存储单元被编程之后被编程的存储单元。因此,由这些存储单元导致的干扰在那时并不存在,并且所述P&V过程也不可能已经对此失真做补偿。
当目标存储单元被编程时,类D2中的存储单元已经被编程,并且当所述P&V过程对所述目标存储单元编程时,这些存储单元导致的失真已经存在。因此,当目标存储单元被编程时,所述P&V过程已经(至少部分地)补偿所述失真。注意到,当目标存储单元被擦除时,类D2为空,因为在此情况下,其不被P&V算法处理,而来自先前编程的存储单元的失真未被补偿。然而,在目标存储单元被编程时这种补偿是正确的,并且不考虑在那一时刻和所述目标存储单元被读取时之间发生的老化或其他效应。在以上公式[10]的第二项中的是对电压的估计,其在目标存储单元被编程时存在于干扰存储单元之中。
注意,由于干扰存储单元电压在编程时间和读取时间之间的改变,公式[10]的第一项和第二项彼此不同:对于在类D1中的存储单元,电压变化由另外的编程导致,而在类D2中的存储单元中,存储单元所经受的变化由失真导致。
在一些实施方案中,可通过将所述ECC解码运用到这些存储单元的输出来估计。通过恢复写到存储单元的比特集,所述ECC可以帮助校正严重的错误,例如由严重泄漏导致的错误。替代地,在公式[10]的第二项中的yi,j-xi,j可以用yi,j的无记忆函数来估计,例如α·yi,j,其为电压电平为yi,j的存储单元估计泄漏错误。替代地,yi,j-xi,j可以通过来自所述存储单元的平均期望泄漏来近似。
上述公式[10]中的第三项,涉及类D 3中的存储单元,假定使用P&V过程,其固有地对由被编程到小于或等于目标存储单元的电平的D3存储单元导致的失真进行补偿。在目标存储单元已经被完全编程之后,当在与该目标存储单元相同的页上的潜在干扰存储单元被编程到较高电平时,此编程在较晚通过P&V过程时执行。从而,由具有高于目标存储单元的电平的D3存储单元导致的失真的有效部分在目标存储单元被编程时将不存在,并且P&V过程将不能补偿此部分失真。
在一些情况下,由于逐个存储单元的公差和P&V过程的各种读写的不精确性,所以用于对某一存储单元编程的P&V脉冲的数量可能不同。作为结果,即便是对于相同的电压电平,也可以从其他存储单元对某些存储单元进行更快写入。当目标存储单元比某一干扰存储单元更快编程时,来自此存储单元的干扰将不会被P&V过程精确补偿。
在一些实施方案中,上述公式[10]可被修改以补偿这些差异。在公式[10]中的第三项可被写为:
其中
上述公式[10]假设所述失真仅仅取决于干扰存储单元的电压变化而并不取决于被干扰存储单元的电压。上述公式[10]还假设所述失真是线性的,也即,可被建模为一个常数乘以干扰存储单元的电压变化。然而,在一些实际情形中,这两个假设可能不成立。具体而言,在一些情况下,从某一干扰存储单元到某一被干扰存储单元的干扰既取决于干扰存储单元的电压也取决于被干扰存储单元的电压。在此类情况下,公式[10]可被更概括地重写为
其中f(ti,tf,r)表示电压从ti变化到tf的干扰存储单元对于电压电平为r的被干扰存储单元所导致的失真。
在一些情况下,例如当存储单元电压受到背景图案相关性(BPD)的影响时,干扰存储单元沿着与被干扰存储单元相同的存储单元串或位线定位,而对某一存储单元的失真取决于沿着所述位线的位于所述存储单元之上的存储单元的电压。
在一些情况下,信号处理单元60可以从其他存储单元的已知的或预估计的失真值来预测特定存储单元中的失真。例如,在所述阵列中彼此位置靠近的存储单元可具有相似的或相关的失真度。作为另一实例,当一些失真由电源电压导致或传递时,共享相同电源(Vcc)电路的存储单元可具有类似的失真。
在一些实施方案中,信号处理单元60根据由读出放大器中的增益和偏移误差导致的失真来校正ECC度量。当读取某一存储单元时,读出放大器将流过所述存储单元的电流转换成电压。因此,在读出放大器输出处的电压应该满足v=kSAi,其中v表示输出电压,i表示存储单元电流,而kSA表示放大器增益,其被假设为对于所有存储单元为恒定。然而,在许多实际情况下,读出放大器的增益并不恒定。所述放大器也可引入偏移误差。从而,所述读出放大器输出电压可被写为v=(kSA+ΔSA)i+BSA,其中kSA为恒定,ΔSA表示增益误差,而BSA表示偏移误差。ΔSA和BSA可以从一个读出放大器到另一个(也即,从一条位线到另一条)而变化。
在一些实施方案中,信号处理单元60估计ΔSA和BSA的值,并且基于估计的读出放大器参数修改ECC度量。例如,通过对上述公式[4]中的读取电压r或公式[5]中的区间边界Va和Vb平移和缩放,可以修改[4]或[5]的LLR计算,以考虑不同的ΔSA和BSA值。
例如,上述公式[4]中的读取电压r可被r0替换,r0被定义为:
虽然图6的示例性方法涉及某一P&V过程实现,但是,经过稍加修改,所述方法就可以用于任何其他适合的P&V过程。对本领域技术人员而言显而易见的是,可以基于所公开的实施方案而对和其他类型的P&V过程一起使用的本方法进行适应性修改。
在许多已知设备中,标称电压电平之一被定义为“已擦除”电平。在一些已知数据存储方法和设备中,保持在已擦除电平的存储单元不参与P&V过程。因此,这些存储单元可能受到来自未经P&V过程校正的相邻存储单元的交叉耦合干扰。所述干扰使已擦除电平电压分布朝向下一较高电平而加宽,并且增加了必要的裕度。在许多NAND闪存单元中,已擦除的电平具有负电压,而其他电平具有正电压。在此类已知的设备中,经常不可以读取负电压,且因此不可能读取已擦除的存储单元的确切电压以便校正所述干扰。在一些实施方案中,当MSP 52检测到某一存储单元具有微弱正电压电平且确定该存储单元的失真度为高时,MSP得出结论:所述存储单元是一个已擦除存储单元,其电压由于失真而错误地变为正。所述MSP可以补偿在此类存储单元中的失真,从而降低必要的裕度。
在NROM闪存单元中,已擦除的存储单元的电压电平通常为正,因此它们可被读取。虽然在NROM单元的两侧之间的交叉耦合通常是由所述P&V过程所补偿,但是当所述存储单元的一侧或两侧被擦除时所述失真并未被补偿。在此类情况下,即使当所述存储单元的一侧或两侧被擦除时,MSP 52也可以补偿所述失真,并且减少必要的裕度。
虽然此处描述的实施方案主要着重于从多层单元(MLC)取出数据,但是本发明的原理也可用于单层单元(SLC)。虽然此处描述的实施方案主要着重于从固态存储设备取出数据,但是本发明的原理也可以用于在硬盘驱动器(HDD)和其他数据存储介质和设备中存储和取出数据。
因此应该理解,此处所描述的实施方案仅以举例方式引用,且本发明不限于上文中所具体示出和描述的内容。与此相反,本发明的范围涵盖上述各个特征的组合和子组合,以及其中本领域技术人员在阅读前述说明之后即可作出的未在现有技术中公开的变化和修改。
Claims (88)
1.一种用于操作存储设备的方法,包括:
使用纠错码(ECC)对数据编码并且将已编码的数据作为第一模拟值存储在所述存储设备的相应的模拟存储单元中;
在存储已编码的数据之后,从所述存储设备的存储有已编码的数据的存储单元中读取相应的第二模拟值,所述第二模拟值中的至少一些不同于相应的第一模拟值;
对存在于所述第二模拟值中的失真进行估计;
根据所估计的失真,针对所述第二模拟值使用软ECC解码过程计算纠错度量,其中计算纠错度量包括为所述第二模拟值中的每一个第二模拟值的每一个数据位计算似然比;以及
使用所述纠错度量处理所述第二模拟值,从而重构所述数据。
2.根据权利要求1所述的方法,其中计算纠错度量包括针对每个存储单元估算一个或多个指示所述失真的存储单元参数,并且根据所述存储单元参数计算所述纠错度量。
3.根据权利要求2所述的方法,其中所述存储单元参数包括选自一组参数中的至少一个参数,所述一组参数由下列参数组成:读取自其他存储单元的模拟值、其他存储单元的估计的交叉耦合系数、已读取的第二模拟值的统计分布参数、所述存储单元已经历的先前的编程与擦除循环的数量、自先前的编程和擦除循环以来流逝的持续时间、在所述存储单元中检测到的先前错误、所述存储单元所连接到的字线的标识、所述存储单元所连接到的位线的标识、耦合到所述存储单元所连接到的位线的读出放大器的估计参数、以及环境参数。
4.根据权利要求1所述的方法,其中处理所述第二模拟值包括将所述第二模拟值的可能值的范围分成多个判决区间,并且确定所述第二模拟值所落入的相应的判决区间,且其中计算纠错度量包括定义相对于所述判决区间修改所述第二模拟值的函数,从而改进所述ECC解码过程的性能。
5.根据权利要求1所述的方法,其中处理所述第二模拟值包括接受关于所述ECC解码过程的性能的反馈,并且根据所述反馈修改所述ECC解码过程。
6.根据权利要求1-5中任一项所述的方法,其中处理所述第二模拟值包括将所述第二模拟值与判决门限进行比较,并且其中修改所述ECC解码过程包括修改所述判决门限。
7.根据权利要求6所述的方法,其中修改所述判决门限包括使用已修改的判决门限从所述存储单元中再读取所述第二模拟值。
8.根据权利要求6所述的方法,其中将所述第二模拟值与判决门限进行比较包括使用所述判决门限在所述存储设备处读取所述第二模拟值,并且其中修改所述判决门限包括向所述存储设备发送请求修改所述门限的命令。
9.根据权利要求6所述的方法,其中处理所述第二模拟值包括通过使用所述判决门限的不同集合来执行所述ECC解码过程的相应的多次迭代,以对存储在每个存储单元中的数据产生多个估计,且根据对所述数据的多个估计重构该数据。
10.根据权利要求9所述的方法,其中重构所述数据包括为每个存储单元独立地选择所述多个估计之一。
11.根据权利要求5所述的方法,其中处理所述第二模拟值包括采用具有第一错误性能的第一ECC解码过程,其中接受反馈包括接受对使用所述第一ECC解码过程解码的数据中的解码错误的指示,并且其中修改所述ECC解码过程包括使用第二ECC解码过程处理所述第二模拟值,所述第二ECC解码过程具有优于所述第一错误性能的第二错误性能。
12.根据权利要求5所述的方法,其中修改所述ECC解码过程包括对在所述第二模拟值的读取中使用的采样分辨率作修改。
13.根据权利要求1-5中任一项所述的方法,其中读取第二模拟值包括使用各自不同的判决门限集合来读取所述第二模拟值的多个实例,并且其中计算纠错度量包括为每个存储单元独立组合所述多个实例并且基于被组合的多个实例来计算所述纠错度量。
14.根据权利要求13所述的方法,其中读取与组合第二模拟值的多个实例包括迭代地获得所述第二模拟值的另外的实例,并且使用所述另外的实例更新所述纠错度量,直至成功地解码所述ECC。
15.根据权利要求1-5中任一项所述的方法,其中对于每个存储单元,估计失真包括从潜在干扰存储单元的子集中读取第二模拟值,所述潜在干扰存储单元潜在地对从所述存储单元读取的第二模拟值中的失真作出贡献,并且其中计算纠错度量包括对由潜在干扰存储单元所贡献的失真进行估算。
16.根据权利要求15所述的方法,其中估算由潜在干扰存储单元向所述存储单元所贡献的失真包括,基于从所述潜在干扰存储单元读取的第二模拟值和从所述存储单元读取的第二模拟值,对由每个潜在干扰存储单元所贡献的失真进行近似。
17.根据权利要求15所述的方法,其中处理所述第二模拟值包括在第一量化电平处理所述存储单元的第二模拟值,并且在比所述第一量化电平更为不精确的第二量化电平处理读取自所述潜在干扰存储单元的第二模拟值。
18.根据权利要求17所述的方法,其中处理所述第二模拟值包括,通过迭代地修改用于读取所述第二模拟值的电路的门限,在所述第一和第二量化电平读取所述第二模拟值。
19.根据权利要求1-5中任一项所述的方法,其中存储已编码的数据包括使用编程与验证(P&V)过程将所述第一模拟值写入所述存储单元,并且其中估计失真包括通过所述编程与验证过程将潜在干扰存储单元分类成至少两类以及在每一类之内单独计算总失真,其中这两类选自一组类,所述一组类包括比所述存储单元更早地完全编程的存储单元、比所述存储单元更迟地完全编程的存储单元、以及与所述存储单元并发地完全编程的存储单元。
20.根据权利要求1-5中任一项所述的方法,其中所述存储单元包括闪存单元。
21.根据权利要求1-5中任一项所述的方法,其中所述存储单元包括动态随机存取存储(DRAM)单元。
22.根据权利要求1-5中任一项所述的方法,其中所述存储单元包括相变存储(PCM)单元。
23.根据权利要求1-5中任一项所述的方法,其中所述存储单元包括氮化物只读存储(NROM)单元。
24.根据权利要求1-5中任一项所述的方法,其中所述存储单元包括磁随机存取存储(MRAM)单元。
25.根据权利要求1-5中任一项所述的方法,其中所述存储单元包括铁电随机存取存储(FRAM)单元。
26.根据权利要求1-5中任一项所述的方法,其中所述ECC包括块码。
27.根据权利要求26所述的方法,其中所述块码包括Bose-Chaudhuri-Hochquenghem(BCH)码和Reed-Solomon(RS)码之一。
28.根据权利要求26所述的方法,其中所述块码包括低密度奇偶校验(LDPC)码、turbo码和Turbo乘积码(TPC)之一。
29.根据权利要求28所述的方法,其中所述ECC解码过程包括迭代的解码过程。
30.根据权利要求1-5中任一项所述的方法,其中所述ECC解码过程使用通过读取所述第二模拟值产生的反馈。
31.根据权利要求1-5中任一项所述的方法,其中所述ECC解码过程包括最大似然序列估计(MLSE)过程。
32.根据权利要求1-5中任一项所述的方法,其中所述ECC包括卷积码、网格编码调制(TCM)码、比特交织编码调制(BICM)码和链接码之一。
33.根据权利要求1-5中任一项所述的方法,其中所述纠错度量包括似然比(LR)。
34.根据权利要求1-5中任一项所述的方法,其中所述纠错度量包括对数似然比(LLR)。
35.根据权利要求1-5中任一项所述的方法,其中估计失真包括基于在其他存储单元中存在的失真,预测在所述存储单元中的一个中存在的失真。
36.根据权利要求1-5中任一项所述的方法,其中所述存储单元被布置在潜在干扰存储单元的隔离的组中,其中估计每组中的失真包括估算表示在所述组中的成对的存储单元之间的相互干扰的交叉耦合矩阵的逆,并且其中计算纠错度量包括计算在应用到所述第一模拟值的交叉耦合矩阵的逆与所述组中相应的存储单元的平均失真度之和,与应用到所述第二模拟值的交叉耦合矩阵的逆之间的距离。
37.根据权利要求36所述的方法,其中所述隔离的组包括相应的氮化物只读存储(NROM)单元,并且其中每组中的潜在干扰存储单元包括相应的NROM单元的第一和第二电荷存储区域。
38.根据权利要求1-5中任一项所述的方法,其中所述存储单元被布置在潜在干扰存储单元的隔离的组中,其中估计每组中的失真包括对在所述组中的相应的存储单元的平均失真度的矢量以及表示在所述组中的存储单元对之间的相互干扰的交叉耦合矩阵作出估算,并且其中计算纠错度量包括,根据读取自所述组中的存储单元的第二模拟值的矢量,和交叉耦合矩阵与平均失真度矢量的积之间的差来计算所述度量。
39.根据权利要求38所述的方法,其中所述隔离的组包括相应的氮化物只读存储(NROM)单元,并且其中在每组中的潜在干扰存储单元包括相应的NROM单元的第一和第二电荷存储区域。
40.根据权利要求1-5中任一项所述的方法,其中存储已编码的数据包括将所述已编码的数据置乱并且将已置乱的数据存储,并且其中处理所述第二模拟值包括把从存储单元读取的所述第二模拟值反置乱。
41.根据权利要求1-5中任一项所述的方法,其中存储数据包括将至少一些存储单元保持在已擦除电平,并且其中读取所述第二模拟值、估计所述失真、计算所述纠错度量、以及处理所述第二模拟值包括对从维持在已擦除电平的存储单元读取的第二模拟值中的失真进行补偿。
42.一种用于操作存储设备的方法,包括:
将数据作为第一模拟值存储在所述存储设备的相应的模拟存储单元中;
在存储所述数据之后,从所述相应的存储单元读取第二模拟值的多个实例,每个所述实例通过将所述第二模拟值与相应的判决门限作比较来读取,其中每一个相应的判决门限对应于两个相邻的电压门限之间的电压,在该判决门限以上,给定的第二模拟值对应于一个位值,在该判决门限以下,所述给定的第二模拟值对应于另一个位值;
对在所述第二模拟值中存在的失真进行估计;以及
根据所估计的失真来处理所述第二模拟值的多个实例,从而重构所述数据。
43.根据权利要求42所述的方法,其中对所述多个实例的读取和处理包括迭代地获得所述第二模拟值的另外的实例。
44.一种用于取出数据的装置,所述数据已使用纠错码(ECC)来编码并且作为第一模拟值存储在存储设备的相应的存储单元中,所述装置包括:
读取单元,其被布置为从所述存储设备的存储有已编码的数据的模拟存储单元中读取相应的第二模拟值,所述第二模拟值中的至少一些不同于相应的第一模拟值;
信号处理单元,其被布置为对在所述第二模拟值中存在的失真进行估计,并且根据所估计的失真,针对所述第二模拟值使用软ECC解码计算纠错度量,其中所述信号处理单元被配置为所述第二模拟值中的每一个第二模拟值的每一个数据位计算似然比;和
解码器,其被布置为使用所述纠错度量处理所述第二模拟值,从而解码所述ECC并重构所述数据。
45.根据权利要求44所述的装置,其中所述信号处理单元被布置为针对每个存储单元估算一个或多个指示所述失真的存储单元参数,并且根据所述存储单元参数计算所述纠错度量。
46.根据权利要求45所述的装置,其中所述存储单元参数包括选自一组参数中的至少一个参数,所述一组参数由下列参数组成:读取自其他存储单元的第二模拟值、其他存储单元的估计的交叉耦合系数、已读取的第二模拟值的统计分布的参数、所述存储单元已经历的先前的编程与擦除循环的数量、自先前的编程和擦除循环以来流逝的持续时间、在所述存储单元中检测到的先前错误、所述存储单元所连接到的字线的标识、所述存储单元所连接到的位线的标识、耦合到所述存储单元所连接到的位线的读出放大器的估计参数、以及环境参数。
47.根据权利要求44所述的装置,其中所述解码器被布置为将所述第二模拟值的可能值的范围分成多个判决区间,并且确定所述第二模拟值所落入的相应的判决区间,并且其中所述信号处理单元被布置为基于所估计的失真定义相对于所述判决区间修改所述第二模拟值的函数,从而改进所述解码器的性能。
48.根据权利要求44所述的装置,其中所述信号处理单元被布置为接受关于所述解码器的性能的反馈,并且根据所述反馈修改所述解码器的操作。
49.根据权利要求48所述的装置,其中所述解码器被布置为将所述第二模拟值与判决门限进行比较,并且其中所述信号处理单元被布置为通过根据所述反馈修改所述判决门限来修改所述解码器的操作。
50.根据权利要求49所述的装置,其中所述读取单元被布置为通过将所述第二模拟值与所述判决门限进行比较以读取所述第二模拟值,并且其中所述信号处理单元被布置为通过向所述读取单元发送请求修改所述门限的命令,来修改所述判决门限。
51.根据权利要求49所述的装置,其中所述信号处理单元被布置为使所述读取单元使用已修改的判决门限从所述存储单元再读取所述第二模拟值。
52.根据权利要求49所述的装置,其中所述解码器被布置为通过使用所述判决门限的不同集合执行相应的多次解码迭代,以对存储在每个存储单元中的数据产生多个估计,且根据对所述数据的多个估计重构该数据。
53.根据权利要求52所述的装置,其中所述解码器被布置为通过为每个存储单元独立地选择所述多个估计之一来重构所述数据。
54.根据权利要求48所述的装置,其中所述解码器被布置为初始时应用具有第一错误性能的第一ECC解码过程,其中所述信号处理单元被布置为接受对使用所述第一ECC解码过程而解码的数据中的解码错误的指示,并且使得所述解码器使用第二ECC解码过程处理所述第二模拟值,其中所述第二ECC解码过程具有优于所述第一错误性能的第二错误性能。
55.根据权利要求48所述的装置,其中所述信号处理单元被布置为对用于根据所述反馈而读取所述第二模拟值的所述读取单元所使用的采样分辨率进行修改。
56.根据权利要求44-48中任一项所述的装置,其中所述读取单元被布置为使用各自不同的判决门限集合来读取所述第二模拟值的多个实例,其中所述信号处理单元被布置为针对每个存储单元独立地组合所述多个实例以及基于被组合的多个实例来计算所述纠错度量。
57.根据权利要求56所述的装置,其中所述读取单元、所述信号处理单元和所述解码器被布置为迭代地获得所述第二模拟值的另外的实例,并且使用所述另外的实例更新所述纠错度量,直至成功地解码所述ECC。
58.根据权利要求44-48中任一项所述的装置,其中所述读取单元被布置为,对于每个存储单元,从潜在干扰存储单元的子集中读取所述第二模拟值,其中所述潜在干扰存储单元潜在地对从所述存储单元读取的第二模拟值中的失真作出贡献,并且其中所述信号处理单元被布置为对由潜在干扰存储单元所贡献的失真进行估算。
59.根据权利要求58所述的装置,其中所述信号处理单元被布置为,基于从所述潜在干扰存储单元读取的第二模拟值和从所述存储单元读取的第二模拟值,对由每个潜在干扰存储单元所贡献的失真进行近似。
60.根据权利要求58所述的装置,其中所述信号处理单元被布置为在第一量化电平处理所述存储单元的第二模拟值,并且在比所述第一量化电平更为不精确的第二量化电平处理读取自潜在干扰存储单元的第二模拟值。
61.根据权利要求60所述的装置,其中所述读取单元被布置为将所述第二模拟值与一门限作比较,并且迭代地修改所述门限,从而在所述第一和第二量化电平读取所述第二模拟值。
62.根据权利要求44-48中任一项所述的装置,其中使用编程与验证(P&V)过程将所述第一模拟值写入所述存储单元,并且其中所述信号处理单元被布置为通过所述编程与验证过程将潜在干扰存储单元分类成至少两类以及在每一类之内单独计算总失真,其中这两类选自一组类,所述一组类包括比所述存储单元更早地完全编程的存储单元、比所述存储单元更迟地完全编程的存储单元、以及与所述存储单元并发地完全编程的存储单元。
63.根据权利要求44-48中任一项所述的装置,其中所述读取单元位于第一集成电路(IC)中,并且其中所述信号处理单元和所述解码器位于不同于第一IC的第二IC中。
64.根据权利要求44-48中任一项所述的装置,其中所述读取单元、所述信号处理单元和所述解码器被集成在单一设备中。
65.根据权利要求44-48中任一项所述的装置,其中所述存储单元包括闪存单元。
66.根据权利要求44-48中任一项所述的装置,其中所述存储单元包括动态随机存取存储(DRAM)单元。
67.根据权利要求44-48中任一项所述的装置,其中所述存储单元包括相变存储(PCM)单元。
68.根据权利要求44-48中任一项所述的装置,其中所述存储单元包括氮化物只读存储(NROM)单元。
69.根据权利要求44-48中任一项所述的装置,其中所述存储单元包括磁随机存取存储(MRAM)单元。
70.根据权利要求44-48中任一项所述的装置,其中所述存储单元包括铁电随机存取存储(FRAM)单元。
71.根据权利要求44-48中任一项所述的装置,其中所述ECC包括块码。
72.根据权利要求71所述的装置,其中所述块码包括Bose-Chaudhuri-Hochquenghem(BCH)码和Reed-Solomon(RS)码之一。
73.根据权利要求71所述的装置,其中所述块码包括低密度奇偶校验(LDPC)码、turbo码和Turbo乘积码(TPC)之一。
74.根据权利要求73所述的装置,其中所述解码器被布置为使用迭代的解码过程对所述ECC解码。
75.根据权利要求44-48中任一项所述的装置,其中所述解码器被布置为使用通过读取所述第二模拟值产生的反馈来对所述ECC解码。
76.根据权利要求44-48中任一项所述的装置,其中所述解码器被布置为使用最大似然序列估计(MLSE)过程来对所述ECC解码。
77.根据权利要求44-48中任一项所述的装置,其中所述ECC包括卷积码、网格编码调制(TCM)码、比特交织编码调制(BICM)码和链接码之一。
78.根据权利要求44-48中任一项所述的装置,其中所述纠错度量包括似然比(LR)。
79.根据权利要求44-48中任一项所述的装置,其中所述纠错度量包括对数似然比(LLR)。
80.根据权利要求44-48中任一项所述的装置,其中所述信号处理单元被布置为基于在其他存储单元中存在的失真,预测在所述存储单元中的一个中存在的失真。
81.根据权利要求44-48中任一项所述的装置,其中所述存储单元被布置在潜在干扰存储单元的隔离的组中,并且其中所述信号处理单元被布置为通过估算表示在所述组中成对的存储单元之间的相互干扰的交叉耦合矩阵的逆来对每组中的失真进行估计,并且其中计算纠错度量包括计算在应用到所述第一模拟值的交叉耦合矩阵的逆与所述组中相应的存储单元的平均失真度之和,与应用到所述第二模拟值的交叉耦合矩阵的逆之间的距离。
82.根据权利要求81所述的装置,其中所述隔离的组包括相应的氮化物只读存储(NROM)单元,并且其中在每个组中的潜在干扰存储单元包括相应的NROM单元的第一和第二电荷存储区域。
83.根据权利要求44-48中任一项所述的装置,其中所述存储单元被布置在潜在干扰存储单元的隔离的组中,并且其中所述信号处理单元被布置为通过对在所述组中的相应的存储单元内的平均失真度的矢量与表示在所述组中的成对的存储单元之间的相互干扰的交叉耦合矩阵作出估算,以估计每组中的失真,以及被布置为根据读取自所述组中的存储单元的第二模拟值的矢量,和交叉耦合矩阵与平均失真度矢量的积之间的差来计算误差纠错度量。
84.根据权利要求83所述的装置,其中所述隔离的组包括相应的氮化物只读存储(NROM)单元,并且其中在每个组中的潜在干扰存储单元包括相应的NROM单元的第一和第二电荷存储区域。
85.根据权利要求44-48中任一项所述的装置,其中将存储在所述存储单元中的数据置乱,并且其中所述信号处理单元被布置为将读取自所述存储单元的第二模拟值反置乱。
86.根据权利要求44-48中任一项所述的装置,其中至少一些存储单元被保持在已擦除电平,并且其中所述信号处理单元被布置为对从维持在已擦除电平的存储单元读取的第二模拟值中的失真进行补偿。
87.一种用于取出数据的装置,所述数据已作为第一模拟值存储在存储设备的相应的模拟存储单元中,所述装置包括:
读取单元,其被布置为从相应的存储单元读取第二模拟值的多个实例,每个所述实例通过将所述第二模拟值与相应的判决门限作比较来读取,其中,每一个相应的判决门限对应于两个相邻的电压门限之间的电压,在该判决门限以上,给定的第二模拟值对应于一个位值,在该判决门限以下,所述给定的第二模拟值对应于另一个位值;和
信号处理单元,其被布置为对在所述第二模拟值中存在的失真进行估计,并且根据所估计的失真来处理所述第二模拟值的多个实例,从而重构所述数据。
88.根据权利要求87所述的装置,其中所述读取单元和所述信号处理单元被布置为迭代地获得所述第二模拟值的另外的实例。
Applications Claiming Priority (19)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74710606P | 2006-05-12 | 2006-05-12 | |
US60/747,106 | 2006-05-12 | ||
US86348006P | 2006-10-30 | 2006-10-30 | |
US60/863,480 | 2006-10-30 | ||
US86381006P | 2006-11-01 | 2006-11-01 | |
US60/863,810 | 2006-11-01 | ||
US86739906P | 2006-11-28 | 2006-11-28 | |
US60/867,399 | 2006-11-28 | ||
US88502407P | 2007-01-16 | 2007-01-16 | |
US60/885,024 | 2007-01-16 | ||
US88610207P | 2007-01-23 | 2007-01-23 | |
US60/886,102 | 2007-01-23 | ||
US89286907P | 2007-03-04 | 2007-03-04 | |
US60/892,869 | 2007-03-04 | ||
US89429007P | 2007-03-12 | 2007-03-12 | |
US60/894,290 | 2007-03-12 | ||
US89445607P | 2007-03-13 | 2007-03-13 | |
US60/894,456 | 2007-03-13 | ||
PCT/IL2007/000580 WO2007132457A2 (en) | 2006-05-12 | 2007-05-10 | Combined distortion estimation and error correction coding for memory devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101512661A CN101512661A (zh) | 2009-08-19 |
CN101512661B true CN101512661B (zh) | 2013-04-24 |
Family
ID=40925468
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800260948A Active CN101501779B (zh) | 2006-05-12 | 2007-05-10 | 具有自适应容量的存储设备 |
CN2007800261813A Active CN101512661B (zh) | 2006-05-12 | 2007-05-10 | 用于存储设备的失真估计与纠错编码的组合 |
CN2007800261211A Active CN101496110B (zh) | 2006-05-12 | 2007-05-10 | 存储设备中的失真估计和消除 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800260948A Active CN101501779B (zh) | 2006-05-12 | 2007-05-10 | 具有自适应容量的存储设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800261211A Active CN101496110B (zh) | 2006-05-12 | 2007-05-10 | 存储设备中的失真估计和消除 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN101501779B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8499227B2 (en) * | 2010-09-23 | 2013-07-30 | Micron Technology, Inc. | Memory quality monitor based compensation method and apparatus |
CN102831932B (zh) * | 2011-06-14 | 2015-11-18 | 群联电子股份有限公司 | 数据读取方法、存储器控制器及存储器储存装置 |
US8874994B2 (en) * | 2011-07-22 | 2014-10-28 | Sandisk Technologies Inc. | Systems and methods of storing data |
KR101574912B1 (ko) * | 2011-07-27 | 2015-12-04 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 잠재적으로 큰 스위칭 지연시간에 의해 특징지워지는 메모리 요소를 포함하는 효율적인 데이터 저장장치 |
WO2013015803A1 (en) * | 2011-07-27 | 2013-01-31 | Hewlett-Packard Development Company, L.P. | Method and system for reducing write-buffer capacities within memristor-based data-storage devices |
US8793463B2 (en) * | 2011-09-12 | 2014-07-29 | Microsoft Corporation | Allocation strategies for storage device sets |
CN103946811B (zh) | 2011-09-30 | 2017-08-11 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
EP2761466B1 (en) | 2011-09-30 | 2020-08-05 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
EP2761472B1 (en) | 2011-09-30 | 2020-04-01 | Intel Corporation | Memory channel that supports near memory and far memory access |
CN103946826B (zh) | 2011-09-30 | 2019-05-31 | 英特尔公司 | 用于在公共存储器通道上实现多级存储器层级的设备和方法 |
WO2013048467A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
KR20130060791A (ko) * | 2011-11-30 | 2013-06-10 | 삼성전자주식회사 | 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브 |
CN103295631B (zh) * | 2012-02-22 | 2016-05-18 | 慧荣科技股份有限公司 | 读取快闪存储器中所储存的数据的方法、存储器控制器与系统 |
US9177664B2 (en) | 2012-02-22 | 2015-11-03 | Silicon Motion, Inc. | Method, memory controller and system for reading data stored in flash memory |
US9286972B2 (en) | 2012-02-22 | 2016-03-15 | Silicon Motion, Inc. | Method, memory controller and system for reading data stored in flash memory |
CN103295634B (zh) * | 2012-02-22 | 2017-10-27 | 慧荣科技股份有限公司 | 读取快闪存储器中所储存的数据的方法、存储器控制器与系统 |
JP5862359B2 (ja) * | 2012-02-23 | 2016-02-16 | 日本電気株式会社 | シンクライアントシステム、接続管理サーバ、接続管理方法、及び接続管理プログラム |
US9026391B2 (en) | 2012-02-29 | 2015-05-05 | Intel Mobile Commnications GmbH | Distortion estimation apparatus and method |
US9482560B2 (en) * | 2012-07-04 | 2016-11-01 | Hexagon Technology Center Gmbh | Optical position transmitter with analog memory unit |
US9037670B2 (en) * | 2012-09-18 | 2015-05-19 | Cisco Technology, Inc. | Ultra low latency network buffer storage |
CN102982849B (zh) * | 2012-12-05 | 2015-10-28 | 清华大学 | 用于数据存储的ecc解码控制方法 |
US9098445B2 (en) * | 2013-03-14 | 2015-08-04 | Apple Inc. | Selection of redundant storage configuration based on available memory space |
CN105304143B (zh) * | 2014-07-21 | 2018-10-02 | 群联电子股份有限公司 | 解码方法、存储器控制电路单元及存储器存储装置 |
KR20160102738A (ko) * | 2015-02-23 | 2016-08-31 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
CN106257594B (zh) * | 2015-06-16 | 2021-01-05 | 爱思开海力士有限公司 | 读取干扰收回策略 |
KR102500616B1 (ko) * | 2016-02-26 | 2023-02-17 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10277427B1 (en) * | 2018-01-15 | 2019-04-30 | Micron Technology, Inc. | Voltage correction computations for memory decision feedback equalizers |
KR102648618B1 (ko) * | 2018-03-28 | 2024-03-19 | 에스케이하이닉스 주식회사 | 컨트롤러, 그것의 동작방법 및 컨트롤러를 포함하는 메모리 시스템 |
CN110377538B (zh) * | 2018-04-13 | 2021-03-02 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
CN112948166B (zh) * | 2019-10-16 | 2021-12-21 | 长江存储科技有限责任公司 | 数据处理方法及相关产品 |
CN113674777B (zh) * | 2021-10-21 | 2022-03-15 | 北京紫光青藤微系统有限公司 | 数据存储装置和用于调用存储数据的方法 |
CN116705089A (zh) * | 2022-02-25 | 2023-09-05 | 长鑫存储技术有限公司 | 读写转换电路及存储器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6209113B1 (en) * | 1996-10-18 | 2001-03-27 | Micron Technology, Inc. | Method and apparatus for performing error correction on data read from a multistate memory |
CN1653554A (zh) * | 2002-05-20 | 2005-08-10 | 桑迪士克股份有限公司 | 通过使用关于所存储数据的质量的信息来增加错误校正码的效率和操作多电平存储系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6426893B1 (en) * | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US6363008B1 (en) * | 2000-02-17 | 2002-03-26 | Multi Level Memory Technology | Multi-bit-cell non-volatile memory with maximized data capacity |
US7301807B2 (en) * | 2003-10-23 | 2007-11-27 | Sandisk Corporation | Writable tracking cells |
-
2007
- 2007-05-10 CN CN2007800260948A patent/CN101501779B/zh active Active
- 2007-05-10 CN CN2007800261813A patent/CN101512661B/zh active Active
- 2007-05-10 CN CN2007800261211A patent/CN101496110B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6209113B1 (en) * | 1996-10-18 | 2001-03-27 | Micron Technology, Inc. | Method and apparatus for performing error correction on data read from a multistate memory |
CN1653554A (zh) * | 2002-05-20 | 2005-08-10 | 桑迪士克股份有限公司 | 通过使用关于所存储数据的质量的信息来增加错误校正码的效率和操作多电平存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101512661A (zh) | 2009-08-19 |
CN101496110A (zh) | 2009-07-29 |
CN101501779A (zh) | 2009-08-05 |
CN101501779B (zh) | 2013-09-11 |
CN101496110B (zh) | 2013-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101512661B (zh) | 用于存储设备的失真估计与纠错编码的组合 | |
US8156403B2 (en) | Combined distortion estimation and error correction coding for memory devices | |
CN101601094B (zh) | 使用多个门限读取存储单元的方法 | |
CN103208309B (zh) | 存储设备中的失真估计和消除 | |
TWI517162B (zh) | 用於記憶體裝置之軟性資料產生的設備及方法 | |
JP4999921B2 (ja) | メモリ素子用の歪み推定と誤り訂正符号化の組み合せ | |
US9086984B2 (en) | Detection and decoding in flash memories with selective binary and non-binary decoding | |
US9106264B2 (en) | Encoding and decoding in flash memories using convolutional-type low-density parity check codes | |
CN104040504A (zh) | 用于存储器系统的软信息生成 | |
CN102394101A (zh) | 具有自适应容量的存储设备 | |
Sandell et al. | Machine learning for LLR estimation in flash memory with LDPC codes | |
US20130176780A1 (en) | Detection and decoding in flash memories with error correlations for a plurality of bits within a sliding window | |
Rajab et al. | Soft‐input bit‐flipping decoding of generalised concatenated codes for application in non‐volatile flash memories | |
US11874736B2 (en) | Calculating soft metrics depending on threshold voltages of memory cells in multiple neighbor word lines | |
Freudenberger et al. | Chase decoding for quantized reliability information with applications to flash memories | |
KR101361238B1 (ko) | 간섭 채널 환경에서의 오류 정정 방법 및 회로, 이를 이용한 플래시 메모리 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: APPLE INC. Free format text: FORMER OWNER: ANOBIT TECHNOLOGIES LTD. Effective date: 20130105 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20130105 Address after: American California Applicant after: Apple Computer, Inc. Address before: Israel Hertz Leah Applicant before: Anobit Technologies Ltd. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |