CN104283570A - 低密度奇偶性检验(ldpc)解码器中的对数似然比(llr)阻尼 - Google Patents
低密度奇偶性检验(ldpc)解码器中的对数似然比(llr)阻尼 Download PDFInfo
- Publication number
- CN104283570A CN104283570A CN201410054740.3A CN201410054740A CN104283570A CN 104283570 A CN104283570 A CN 104283570A CN 201410054740 A CN201410054740 A CN 201410054740A CN 104283570 A CN104283570 A CN 104283570A
- Authority
- CN
- China
- Prior art keywords
- llr
- bit
- shortening
- value
- group
- 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.)
- Granted
Links
- 238000004904 shortening Methods 0.000 claims description 94
- 238000013016 damping Methods 0.000 claims description 59
- 238000000034 method Methods 0.000 claims description 49
- 238000003860 storage Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 4
- 230000003247 decreasing effect Effects 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 63
- 238000009826 distribution Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 21
- 230000008859 change Effects 0.000 description 13
- 230000000903 blocking effect Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 238000007667 floating Methods 0.000 description 10
- 239000000872 buffer Substances 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000005549 size reduction Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 208000011580 syndromic disease Diseases 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005684 electric field Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 238000012887 quadratic function Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/618—Shortening and extension of codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1142—Decoding using trapping sets
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3723—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/63—Joint error correction and other techniques
- H03M13/6306—Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
- H03M13/658—Scaling by multiplication or division
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
- H03M13/6591—Truncation, saturation and clamping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明揭示了低密度奇偶性检验(LDPC)解码器中的对数似然比(LLR)阻尼。所描述的实施例提供读取存储在介质中的数据的介质控制器。介质控制器确定来自介质的缩短的代码字的每一个比特的值。缩短的代码字包括完全代码字的多个非缩短的比特,其中,完全代码字包括多个非缩短的比特和一个或多个缩短的比特。缩短的比特对应于在缩短的代码字中未使用的比特。介质控制器将缩短的代码字的每一个比特的确定的值转换为第一组对数似然比(LLR)值。使用缩短的代码字的第一组LLR值,来解码完全代码字。介质控制器阻尼对应于代码字的非缩短的比特的一个或多个LLR值,以产生第二组LLR值,并解码第二组LLR值。
Description
对相关申请的交叉引用
本申请要求2012年11月21日提出的美国临时专利申请61/729,178的申请日期的权益,在此引用该申请的全部内容作为参考。
本申请的主题涉及2012年5月4日提交的美国专利申请13/464,433和2012年8月4日提交的13/567,025,在此引用该申请的全部内容作为参考。
背景技术
闪存是非易失性存储器(NVM),这是特定类型的电可擦可编程只读存储器(EEPROM)。一种通常使用的类型的闪存技术是NAND闪存。NAND闪存每个单元需要小的芯片面积,通常被分成一个或多个存储体或平面。每一个存储体都被分成多个块;每一个块都被分成多个页面。每一个页面都包括用于存储用户数据、纠错码(ECC)信息或两者的若干个字节。
对于NAND设备,有三个基本操作:读取、写入和擦除。一页一页地执行读和写操作。页面大小一般是2N字节的用户数据(加上用于ECC信息的额外的字节),其中,N是整数,每个页面有典型的用户数据页面大小,例如,2,048字节(2KB),4,096字节(4KB),8,192字节(8KB)或更多。“读取单位”是可以从NVM中读取并由ECC校正的数据以及对应的ECC信息的最小的量,并通常可以在4K比特和32K比特之间(例如,每个页面,一般有整数的读取单位。页面通常以块排列,逐块地执行擦除操作。典型的块大小是,例如,每块有64、128或更多个页面。页面必须按顺序写入,通常从块内的低位地址到高位地址。直到块被擦除之前,不能重写较低的地址。与每一个页面相关联的还有备用区(通常,100–640字节),一般用于存储ECC信息和/或用于存储器管理的其他元数据。ECC信息一般用于检测并纠正存储在页面中的用户数据中的错误,元数据可以用于在逻辑地址和物理地址之间进行映射。在带有多个存储体的NAND闪存芯片中,可以支持允许来自每一个存储体的页面被基本上并行地访问的多存储体操作。
NAND闪存在由浮动栅晶体管制成的存储器单元的阵列中存储信息。在没有外部电源的情况下,这些晶体管能在大约几个月或几年的长的时间段内保留它们的电压电平,也简称为电荷。在单级别单元(SLC)闪存中,每一个单元都存储一个比特的信息。在多级别单元(MLC)闪存中,通过在施加于其单元的浮动栅的电荷的多个级别之间选择,每一个单元都可以存储一个以上的比特。MLC NAND闪存每个单元都使用多个电压电平,带有串行链接的晶体管布局,以使用相同数量的晶体管存储更多比特。如此,分别地考虑,每一个单元都具有对应于正在被存储在单元中的逻辑比特值的特定存储的(编程的)电荷,基于每一个单元的一个或多个阈值电压,读取单元。
尽管理想地,NVM中的所有单元都将具有相同阈值电压,但是,在实践中,阈值电压跨在形状上类似于高斯概率曲线的“阈值电压分布”中的单元而不同。跨大量的单元(例如,读取单位或页面)考虑,有与每个单元的状态数量相同的阈值电压分布(例如,高斯概率曲线)(例如,每个单元,2b个分布,其中,b是比特的数量)。如此,对于SLC闪存,有两种状态(0或1),如此,每个单元,两个阈值电压分布(一个是对于零的,另一个是对于1的),以及单一读取阈值电压。大多数MLC NAND闪存每个单元使用四个可能的状态,如此,每个单元,可以存储两比特信息。如此,对于MLC闪存,有四种状态(例如,00,01,10,11),如此,四个阈值电压分布以及三个读取阈值。
增大每个单元的比特数量导致单元与单元干扰以及保留噪声(例如,存储的电荷中的漂移,诸如由于泄漏)变得更严重,这降低了分离每一个电压电平的电压余量的量,提高读取错误的似然率,如此,提高系统的错码率(BER)。进一步地,每一个单元的阈值电压分布会在NVM的操作时间内变化,例如,由于读取干扰、写入干扰、保留丢失、单元老化以及过程、电压以及温度(PVT)变化,也会增大BER。当在从NVM中读取的读取单位中遇到比特错误时,系统(例如,耦合到NVM的控制器)可以以读取阈值的不同的电压值重新读取“读取单位”,以尝试定位是硬解码可校正的读取单位的样本。进一步地,可以提高软件复杂性,以补偿较大的BER,例如,通过使用纠错码(ECC),诸如Bose-Chaudhuri-Hocquenghem(BCH)和低密度奇偶性检验(LDPC)。
随着存储器设备变小,每个单元的级别数量增多,需要更强大的ECC。例如,通过缩小BCH码的编码率,来提高ECC,然而,缩小编码率会降低NVM的存储容量。与BCH码不同,LDPC代码允许软判断解码,其中,除估计每一个比特值(“硬解码”)之外,解码器也估计每一个比特的可靠性(“软判断解码”)。为使LDPC代码比BCH码好,需要对每一个比特的可靠性的改善的估计。
发明内容
提供本发明内容是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
所描述的实施例提供读取存储在介质中的数据的介质控制器。介质控制器确定来自介质的缩短的代码字的每一个比特的值。缩短的代码字包括完全代码字的多个非缩短的比特,其中,完全代码字包括多个非缩短的比特和一个或多个缩短的比特。缩短的比特对应于在缩短的代码字中未使用的比特。介质控制器将缩短的代码字的每一个比特的确定的值转换为第一组对数似然比(LLR)值。使用缩短的代码字的第一组LLR值,来解码完全代码字。介质控制器阻尼对应于代码字的非缩短的比特的一个或多个LLR值,以产生第二组LLR值,并解码第二组LLR值。
附图说明
通过下面的详细描述,所附的权利要求,以及附图,所描述的实施例的其他方面、特点、以及优点将变得更加完全显而易见,在附图中,类似的参考编号标识类似或相同的元素。
图1示出了根据示例性实施例的闪存存储系统的框图;
图2示出了单一标准闪存单元的示例性功能框图;
图3示出了根据示例性实施例的示例性NAND MLC闪存单元;
图4示出了在某时间段内图3的MLC NAND闪存单元中的状态比特值的电压分布的变化的示例性图示;
图5A示出了在初始时间图3的MLC NAND闪存单元的阈值电压概率分布的示例性图示;
图5B示出了在稍后的时间图3的MLC NAND闪存单元的移动的阈值电压概率分布的示例性图示;
图6A示出了存储在图1的存储介质上的示例性非缩短的代码字;
图6B示出了存储在图1的存储介质上的示例性非缩短的代码字;
图7示出了图6B的缩短的代码字的示例性阻尼的版本;
图8示出了根据示例性实施例的图1的闪存存储系统的示例性LDPC解码算法的流程图;以及
图9示出了根据图8的LDPC解码算法在有和没有阻尼的情况下信噪比上的无法纠正的比特错误的误码平台的示例性图表。
具体实施方式
所描述的实施例提供读取存储在介质中的数据的介质控制器。介质控制器确定来自介质的缩短的代码字的每一个比特的值。缩短的代码字包括完全代码字的多个非缩短的比特,其中,完全代码字包括多个非缩短的比特和一个或多个缩短的比特。缩短的比特对应于在缩短的代码字中未使用的比特。介质控制器将缩短的代码字的每一个比特的确定的值转换为第一组对数似然比(LLR)值。使用缩短的代码字的第一组LLR值,来解码完全代码字。介质控制器阻尼对应于代码字的非缩短的比特的一个或多个LLR值,以产生第二组LLR值,并解码第二组LLR值。
表1定义了为有助于理解所描述的实施例在整个本规范中使用的缩写词列表:
图1示出了非易失性存储器(NVM)存储系统100的框图。NVM存储系统100包括耦合到介质控制器120的介质110。介质110可以实现为NAND闪存固态磁盘(SSD),诸如硬盘驱动器(HDD)之类的磁存储介质,诸如光盘(CD)或数字多功能盘(DVD)之类的光存储介质,混合型固态和磁系统或其他类似的存储系统。介质110通常可以通过诸如底板、磁记录系统中的驱动头、光导纤维、一根或多根同轴电缆、一根或多根双绞线铜线,或一个或多个射频(RF)通道之类的物理传输介质耦合到介质控制器120。进一步地,虽然此处描述了NVM存储系统,但是,所描述的实施例可以另选地或另外地用于蜂窝电话或基站中的基带处理系统,以解码通过有线或无线信道或解码从有线或无线通信信道接收到的数据的任何系统接收到的数据。
如图1所示,介质110和介质控制器120总起来说是SSD101。介质控制器120包括固态控制器130、控制处理器140、缓冲器150和I/O接口160。介质控制器120控制介质110和耦合到通信链路170的主机设备180之间的数据的传输。介质控制器120可以实现为系统级芯片(SoC)或其他集成电路(IC)。可以使用固态控制器130来访问介质110中的存储器位置,并可以通常实现低级别的,设备特定的操作以与介质110连接。缓冲器150可以是用来充当控制处理器140的缓存的RAM缓冲器和/或作为固态介质110和主机设备180之间的操作的读/写缓冲器。例如,在通过I/O接口160和链路170在固态介质110和主机设备180之间传输过程中,数据可以一般临时存储在缓冲器150中。缓冲器150可以用于对数据进行分组或分裂操作,以解决通信链路170的数据传输大小和介质110的存储单元大小(例如,读取单元大小、页面大小、扇区大小,或映射的单元大小)之间的差异。缓冲器150可以实现为介质控制器120内部的静态随机存取存储器(SRAM)或嵌入式动态随机存取存储器(eDRAM),虽然缓冲器150也可以包括介质控制器120外部的存储器(未示出),外部存储器通常可以实现为双倍数据速率(例如,DDR-3)DRAM。
控制处理器140与固态控制器130进行通信,以控制对介质110中的数据的数据访问(例如,读取或写入操作)。控制处理器140可以实现为一个或多个PentiumPower PCTensilica或ARM处理器,或不同的处理器类型的组合(Pentium是Intel公司的注册商标,Tensilica是Tensilica公司的商标,ARM处理器是ARM Holdings公司拥有,而PowerPC是IBM的注册商标)。虽然在图1中被示为单处理器,但是,控制处理器140可以通过多个处理器(未示出)来实现,并根据操作的需要,包括软件/固件,包括执行根据所描述的实施例的阈值优化操作。控制处理器140与低密度奇偶性检验(LDPC)编码器/解码器(编解码器)142进行通信,编解码器142为写入到介质110的数据执行LDPC编码,为从介质110中读取的数据执行解码。
使用通信链路170来与主机设备180进行通信,主机设备180可以是与NVM系统100连接的计算机系统。通信链路170可以是自定义通信链路,或者可以是根据标准通信协议来操作的总线,诸如,例如,小型计算机系统接口(“SCSI”)协议总线、串行外接SCSI(“SAS”)协议总线、串行高级技术附件(“SATA”)协议总线、通用串行总线(“USB”)、通用闪存存储器(“UFS”)协议接口、以太网链路、IEEE802.11链路、IEEE802.15链路、IEEE802.16链路、外围组件高速互连(“PCI-E”)链路、串行快速的I/O(“SRIO”)链路,或用于将外围设备连接到计算机的任何其他类似的接口链路。
图2示出了可以在固态介质110中发现的单一闪存单元的示例性功能框图。闪存单元200是带有两个栅极的MOSFET。字线控制栅230位于浮动栅240的顶部。浮动栅240通过绝缘层与字线控制栅230和MOSFET沟道(包括N型沟道250和260,以及P型沟道270)隔离。由于浮动栅240被电隔离,因此,置于浮动栅240上的任何电荷将保留,将不会显著放电,通常持续许多月。当浮动栅240保留电荷时,它部分地取消来自字线控制栅230的用于修改单元的阈值电压的电场。阈值电压是施加于控制栅230的使沟道导电的电压量。沟道的导电率确定存储在单元中的值,例如,通过感应浮动栅240上的电荷。
图3示出了可以在固态介质110中发现的示例性NAND MLC闪存串300。如图3所示,闪存串300可以包括一个或多个字线晶体管200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)以及200(16)(例如,8个闪存单元),以及串联的位线选择晶体管304、漏极到源极。此串行连接是这样的,以便接地选择晶体管302、字线晶体管200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)和200(16)以及位线选择晶体管304都通过将对应的栅极驱动为高以便位线322被完全拉低,从而“导通”(例如,在线性模式或者饱和度模式下)。被打开的不同数量的字线晶体管200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)以及200(16)(或在晶体管在线性的或饱和区操作的情况下)可以使MLC串300能实现多个电压电平。典型的MLC NAND闪存可以使用带有浮动栅的64个晶体管的“NAND串”(例如,如图3所示)。在写入操作过程中,向字线位置中的要被写入的NAND串施加高电压。在读取操作过程中,向NAND串中的所有晶体管的栅极施加电压,对应于所需的读取位置的晶体管除外。所需的读取位置具有浮动栅。
如此处所描述的,在SLC和MLC NAND闪存中,每一个单元都具有可以被感应的电压电荷电平(例如,模拟信号),诸如通过和读取阈值电压电平比较。介质控制器可以具有用来读取电压电荷电平并检测单元的对应的二进制值的给定数量的预定的电压阈值。例如,对于MLC NAND闪存,如果有3个阈值(0.1,0.2,0.3),当单元电压电平是0.0≤单元电压<0.1时,单元可以被检测为具有[00]值。当读取典型的MLC闪存时,最初设置为由闪存制造商编程的默认值。如果ECC不成功,则修改三个阈值,以重新读取数据。如果单元电压电平是0.1≤单元电压<0.2,则值可以是[10],依次类推。如此,通常可以一个一个地将测量到的单元电平与阈值进行比较,直到单元电平被判断为处于两个阈值之间并可以被检测。如此,将检测到的数据值提供到存储器控制器120的解码器,以将检测到的值(例如,利用纠错码)解码为要提供到主机设备180的数据。
所描述的实施例使用低密度奇偶性检验(LDPC)解码器来解码存储在闪存中的数据(例如,图1的LDPC编解码器142)。LDPC解码器可以在校正能力方面趋近于香农极限。与使用代数代码的解码器不同,LDPC解码器没有固定校正能力(诸如每个代码字可校正的错误的比特)。进一步地,LDPC解码器易受它们的Tanner图中的设陷组的影响,产生“误码平台”——输出误码率对输入误码率的普通“瀑布”特征中的变化,其中,输出误码率突然地改变为少得多的陡坡。然而,为更有效率地使用LDPC代码,LDPC解码器使用“软”数据,诸如正在被解码的每一个比特具有给定值的类模拟概率(例如,每一个单元都具有比电荷级别)。具有给定值的解码的比特的这种概率一般被指定为对数似然比(LLR)。例如,在闪存中,在读取操作过程中移动用于比特检测的阈值电压的能力,能取比特值的多个样本,以确定每一个比特的可靠性,然后,可以将这种可靠性表达为每一个比特的LLR。如此处所描述的,对闪存的软判断LDPC解码的一部分使用对给定闪存单元的一个或多个读取(每一个都在不同的阈值电压时),以生成每一个比特位置的LLR。
例如,图4示出了MLC NAND闪存单元中的状态(比特值)的电压分布随着时间的推移的变化。值得注意的是,并非所有的比特都将同等地漂移,导致当利用单一、固定电压阈值读取时的变化。进一步地,某些比特可能被“卡住”,诸如通过报告不正确的值,而并非只是从其正确的位置漂移的值。所描述的实施例通过改变用于所有比特的对数似然比(LLR),是代码字的一部分但是未传输/存储的“缩短的”比特除外,来使LDPC解码器能克服“卡住”的比特(不正确的,但是以比较高的概率自称它们是正确的的比特)的影响。
图5A和5B示出了诸如图3所示出的MLC NAND闪存单元的阈值电压和阈值电压概率分布的示例性图示。图5A表示对于格雷编码MLC状态11(例如,分布550),01(例如,分布560),00(例如,分布570),以及10(例如,分布580)在初始时间(例如,当写入数据时)的阈值电压概率分布。如图所示,额定读取阈值540,542和544理想地位于每一个MLC状态之间。图5B表示稍后的时间的阈值电压概率分布。如图5B所示,阈值电压分布551,561,571,以及581相对于图5A所示出的它们的以前的相应的阈值电压分布550,560,570,以及580移动,诸如移动了保留漂移。虽然图5B示出了均匀地左移的所有四种分布,在实践中,分布一般可以彼此独立地移动。进一步地,阈值电压分布中的移动的方向一般不是已知的或直接可知的。更进一步地,移动可以在每一个比特中是独立的,移动还可以导致分布加宽,加宽可能是不对称的。
在某些实施例中,使用各种加密技术,以便四种状态的统计分布是对于每一种状态都25%。当使用额定读取阈值(例如,540、542和544,它们位于图5A所示出的非移动的分布位置)来读取具有移动的分布的MLC单元(例如,诸如图5B所示出的)时,可以观察到与对于每一种状态的(对许多样本)的25%的预期的读取数据的偏差(例如,在任何错误校正之前)。介质控制器120可以使用读取数据状态中的此差异来推断阈值电压分布中的偏移的存在。介质控制器120可以至少部分地基于观察到的差异来调整额定读取阈值(例如,540,542和544),以变为移动的读取阈值565,575和585,如图5B所示。在某些实施例中,可以整个页面地(或多个页面地)评估差异。在其他实施例中,可以一个读取单位地和/或一个代码字地评估差异。虽然在图4A和4B中未示出,但是,对于SLC单元,可以有两种状态(例如,1和0)和单一读取阈值。可以使用加密,以便两种状态的统计分布对于每一种状态,都是50%。读取阈值通常可以移动,如2012年5月4日提交的相关的美国专利申请13/464,433所描述的,该申请以引用的方式并入本文中。
如此,在图5A和5B中可以看出,当读取最低有效位(LSB)时,小于阈值参考的电压被读作1。可以看出,V4将倾向于将更多比特采样为1,而V0将倾向于将更多比特采样为0。位于两个分布的中心处的由V2采样的比特,有时是不确定的。基于正好每一个单元都具有其电压阈值(从1到0交叉),可以确定单元实际上持有1或0的似然率,但是,此似然率可以随着时间的推移而变化(如由图5A和图5B之间的差异所指示的)。对NAND闪存的软判断LDPC解码的一部分将对NAND闪存的一个或多个读取(每一个都在不同的阈值电压时)变为每一个比特位置的LLR。根据各实施例,以不同的阈值执行对NAND闪存的多个读取的顺序,基于诸如静态和/或动态跟踪信息(诸如分布跟踪信息),观察到的读取的差异,来自解码尝试的观察到的错误率之类的因素,及其他因素而变化。
在许多现实的情况下,代码字被缩短。缩短是指,有诸如某些消息比特位置之类的未使用的,并且当编码和解码时有效地知道(不被存储/传输)的代码字位置。可以使用缩短的代码字来支持代码字的可变的大小,并在编码率选择时提供较大的灵活性。例如,如果检验字节的数量是固定的,但是,不同的NAND闪存供应商提供不同的备用区量,那么,可以通过缩短代码字来改变每个代码字的用户字节的数量,以适应备用区的不同量。图6A示出了存储在介质110上的示例性缩短的代码字600。如图6A所示,缩短的代码字600包括缩短的消息比特602、非缩短的消息比特604和ECC比特606。非缩短的消息比特604和ECC比特606一起形成存储在介质110上的非缩短的代码字部分608。图6B示出了从介质110中读取的示例性缩短的代码字620。如图6B所示,缩短的代码字620包括某些缩短的消息比特LLR622,某些非缩短的消息比特LLR624和ECC比特LLR626。非缩短的消息比特LLR624和ECC比特LLR626一起形成对应于从介质110中读取的数据的非缩短的代码字部分628。
例如,第一NAND闪存供应商每个16KB页面的用户数据,可以使用1216字节的备用区,而第二NAND闪存供应商每个16KB页面的用户数据,可以使用1280字节的备用区。在每个2KB代码字具有144字节的LDPC检查比特的示例性实施例中,第一供应商的NAND闪存可以使用(2200B,2056B)代码的八个实例,而第二供应商的NAND闪存可以使用(2208B,2064B)代码的八个实例,有效率地使用每一个供应商的存储器的每一个页面中的所有字节。取决于实现,LDPC编码器和解码器(例如,图1的LDPC编解码器142)可以实现较大大小的代码字,诸如2176字节的用户数据,带有144字节的LDPC检查比特的(2320B,2176B)代码。(2200B,2056B)代码和(2208B,2064B)代码两者都将是实现的代码字的缩短的版本。
某些通道可能具有被称为“卡住比特”错误的错误,这些是强烈地显得是一个值(例如,0)但是实际上应该是另一个值(例如,1)的错误。卡住比特错误可能由于下列各项中的一项或多项:(1)静态卡住比特——诸如不能被写入/编程并始终作为固定值读取的比特(例如,图3的NANDMLC闪存串中的一个或多个短路的或开路的晶体管);(2)错误编程——在每个单元存储多个比特的一些技术中,诸如多级别单元(MLC)闪存,如果当编程一个单元的MSB时错误读取了该单元的LSB,则所产生的电荷状态基于不正确的LSB,导致该单元的LSB和/或MSB位置中的“卡住”比特;(3)单事件翻转(SEU)——如果正在被发送以便写入/编程的数据在写入/编程之前遇到任何错误(诸如由于α-粒子),那么,错误中的比特被编程为错误的值。
由于这样的“卡住比特”错误显得非常强烈地具有给定值(例如,高大小LLR),当在现实中比特应该是相反的值,如此,卡住比特错误可以在LDPC解码中产生错误。对于LDPC解码,通过强烈地“躺”在它们的值周围,这样的卡住比特错误产生误码平台,并可能加重“设陷组问题”。设陷组问题是LLR值强烈地表示比特是0但实际上比特是1,在某些情况下,设陷组中的其他比特不能推翻错误比特的强度。所描述的实施例有选择地修改非缩短的比特位置中的LLR,以产生缩短的比特位置的相对“确定性”。这帮助LDPC解码克服卡住比特,并在存在卡住比特的情况下,降低误码平台。
LDPC解码器一般将缩短的位置当作具有LLR的最大大小。其他(非缩短的)比特位置具有根据它们的具有给定值的实际似然率确定的LLR,如通过存储器/传输介质中获取的模拟数据确定的(例如,与诸如图5A和B所示出的各种阈值相比的测量到的单元级别,以确定每一个比特的似然率)。
在某些实施例中,缩短的比特位置在编码时始终被当做0(类似地,在解码时)。在其他实施例中,缩短的比特位置在编码时始终被当做1(类似地,在解码时)。在其他实施例中,缩短的比特位置中的某些或全部被视为具有指定的模式,诸如在编码时交替的0和1(类似地,在解码时)。如此,根据所描述的实施例,缩短的比特位置的LLR可以当做具有最大LLR大小,或具有无限LLR大小,并在解码过程中防止被改变。例如,在某些实施例中,缩短的比特位置对于“无限”大小具有特殊编码,并修改LDPC解码器中的逻辑,以特别地对待值“无穷大”(诸如根据其数学平均数,或诸如比任何其他值大得多)。对于缩短的比特位置具有特殊“无限”LLR大小加固了那些比特位置的“确定性”,以便那些比特位置“保证”是正确的,对于非缩短的比特位置,甚至带有高大小LLR值的非缩短的比特位置,在存在卡住比特的情况下,不是这种情况。在其他实施例中,缩短的比特位置中的LLR在初始LDPC解码步骤(例如,在迭代LDPC解码过程的第一迭代开始时)被设置为最大可能的LLR大小,并不允许在随后的LDPC解码迭代中改变。即使缩短的比特位置的LLR被允许改变,由于它们的可靠初始大小,缩短的比特位置中的LLR也不太可能更改为错误的值(例如,错误的符号)。
在解码过程中,确定卡住比特的LLR,如对于任何其他非缩短的比特那样,例如,通过确定比特的模拟级别并确定比特是0或1的概率。但是,对于卡住比特,比特的模拟级别不正确。如此,卡住比特具有高LLR大小,诸如最大值的LLR,并潜在地产生误码平台,限制LDPC解码器的输出比特差错率。具体地,卡住比特通过增大LDPC解码器被陷入设陷组中的似然率,来防止LDPC解码器聚焦于一个解决方案。当发生这种情况时,LDPC解码失败。可以使用越来越多的准确的LLR信息,多次重复LDPC解码。例如,如果硬判断LDPC解码失败,则以不同的阈值电压执行对NAND闪存一个或多个额外的读取,以获取一阶LLR信息,利用此软判断信息来重复LDPC解码。如果LDPC解码再次失败,则执行对NAND闪存的进一步的额外的读取,诸如以中间阈值电压,以获取二阶LLR信息,利用此改善的软判断信息来重复LDPC解码。如果LDPC解码再次失败,则各实施例具有更进一步的退回策略,诸如DSP技术,或某种类型的跨多个代码字的较高级别的代码(例如,类似于RAID5的代码)。
在存在卡住比特的情况下,重复的读取重试和LDPC解码不会改善LDPC解码,因为卡住比特不会改变,而是维持不正确的状态。进一步的退回策略易于是非常处理密集的,并可能不能校正卡住比特。
在各种实施例中,当软判断LDPC解码步骤失败时,非缩短的比特位置的LLR值被阻尼(大小缩小),而缩短的比特位置维持它们的(例如,最大)LLR值。然后,重复LDPC解码。与缩短的比特位置相比,阻尼非缩短的比特位置具有缩小卡住比特的LLR大小的效果,如此,给LDPC解码器提供较大的确定哪些比特具有正确的值的能力。在对非缩短的比特位置应用阻尼之后,利用更新的LLR,再次尝试LDPC解码。可以重复阻尼,例如,如果第一,轻微的阻尼不会导致成功的LDPC解码,可以执行一个或多个额外的,更攻击性的阻尼步骤,并重试LDPC解码。如此,在解码过程的一个或更多阶段执行阻尼并重复LDPC解码。图7示出了示例性阻尼的,缩短的代码字700(例如,图6B的代码字620的阻尼的版本),包括缩短的消息比特LLR622、阻尼的非缩短的消息比特LLR704和阻尼的ECC比特LLR706,以便代码字620的所有非缩短的位置都被阻尼(例如,阻尼的非缩短的消息比特LLR704是非缩短的消息比特LLR624的阻尼的版本,阻尼的ECC比特LLR706是ECC比特LLR626的阻尼的版本)。缩短的消息比特LLR622未被阻尼。
图8示出了非易失性存储器(例如,MLC NAND闪存)的示例性LDPC解码过程800的流程图。在步骤802中,LDPC解码过程800开始。在步骤804中,执行对介质110的一个或多个单元的第一读取(例如,如图3所示),以确定一个或多个单元中的每一个的第一模拟电平。在步骤806中,将一个或多个单元的每一个的模拟电平转换为LLR值,以确定对应于每一个LLR值的比特值。如由虚线807所指示的,在可选步骤808中,可以在在步骤810中执行LDPC解码之前,阻尼非缩短的比特位置。在步骤810中,对代码字中的一个或多个单元中的每一个的LLR值执行LDPC解码。在步骤812中,如果LDPC解码成功,则过程800前进到步骤824。在步骤812中,如果LDPC解码(带有,或者没有可选阻尼步骤808)不成功,则过程800前进到步骤814,在那里,判断是否应该执行对非缩短的位置的阻尼。如果在步骤814中应该执行阻尼,则在步骤816中,阻尼代码字的非缩短的比特位置,过程800返回到步骤810,在那里,对代码字中的一个或多个单元中的每一个的LLR值执行LDPC解码。如果在步骤814中不应该执行阻尼,则在步骤818中判断是否达到介质控制器120的读取重试限制。如果在步骤818中没有达到读取重试限制,那么,在步骤820中,利用一个或多个替换的阈值级别来执行对介质110的一个或多个单元的随后的读取(例如,如图5A和B所示),以细化确定的电压电平。在步骤820中执行随后的读取操作之后,过程800返回到步骤806,在那里,将一个或多个单元中的每一个的细化的模拟电平转换为LLR值,以确定对应于每一个LLR值的比特值。如果在步骤818中达到读取重试限制,那么,在步骤822中,可以尝试一个或多个额外的解码方法以恢复数据(例如,数字信号处理(DSP)等等)。在步骤824中,过程800完成,还可以由介质控制器120进一步处理恢复的数据。
如此,在所描述的实施例中,每当LDPC解码(没有阻尼)失败时,都尝试阻尼和重复LDPC解码,诸如与额外的读取并行地,以获得更多准确的软判断信息。在某些示例性实施例中,阻尼和重复LDPC解码只有当所有所需的额外的读取(以获取进一步的软判断信息)之后的LDPC解码都失败时才执行。阻尼和重复LDPC解码不一定是最后的尝试,因为DSP可以在阻尼之前或之后进行,跨多个代码字(例如,类似于RAID5代码)使用较高级别的编码一般是最后的恢复尝试。当卡住比特错误比较普遍时,为每个LDPC解码执行阻尼,以便只有非缩短的比特位置被允许具有最大LLR值。第一阻尼尝试可以在第一阻尼级别执行,如果LDPC解码失败,则可以为进一步的LDPC解码尝试应用于一个或多个更强级别的阻尼。
当硬错误是在获取陷入设陷组中的LDPC解码时的罪魁祸首时,LDPC解码一般被陷入单一“小的”设陷组中。设陷组的大小(参与方错误的比特节点的数量和未满足的检查节点)通过对应于LDPC代码的奇偶校验矩阵的Tanner图(具体地,列权重和该图的短周期频谱)来确定。示例小设陷组包括(4,2)以及(4,4),这意味着,分别是4个错误比特节点以及2和4个未满足的检查。当LDPC解码陷入这样的小设陷组中时,这可通过校正子权重确定,或等效地,通过未满足的检查的数量来确定。如果在LDPC解码达到最大数量的允许的迭代之后,可以发现,校正子权重很小或对于最后几个迭代很小(例如,在1和6之间),那么,这可能表示硬错误引起小设陷组。作为响应,使用更攻击性的阻尼而并非额外的读取重试是有效的,因为读取重试不能可靠地检测硬错误(诸如当写入的模拟电压超出由最小和最大读取参考电压包围的电压窗口)。
通过将比率应用到所有非缩短的比特位置的LLR,来执行阻尼。例如,如果LLR介于-7到+7之间,则将非缩短的比特位置乘以阻尼因素,诸如5/7,或4.5/7,或4/7。缩短的比特位置维护了它们的最大LLR(例如,+7或-7)。图9示出了没有阻尼(三角形)的误码平台对带有使用乘法阻尼因素2/7、3/7、4/7,以及5/7的阻尼的各种结果。在图9中,s=10表示每个代码字存在10个卡住比特错误,UBER表示LDPC解码之后的无法纠正的比特差错率,而SNR是信噪比。在某些实施例中,通过有选择地缩小大于指定的阈值的任何非缩短的比特位置的LLR值的大小,来执行阻尼。在第一示例中(使用介于-7到+7之间的LLR值),带有大于4的大小的任何LLR值都将其大小缩小到4。在第二示例中中(使用介于-7到+7之间的LLR值),带有大于5的大小的任何LLR值都将其大小缩小1。在第三示例中,带有最大大小的任何LLR值都将其大小缩小指定量,诸如1或2。可另选地,阻尼可以是应用于非缩短的比特位置的LLR的任何函数,诸如指数式衰减(阻尼超过较小的LLR值的LLR值的较大的大小),阶梯函数、二次函数,或任何其他数学函数。
在某些实施例中,基于某些类型的故障的似然率,阻尼是不对称的。例如,如果值1具有正的LLR,而值0具有负的LLR,如果卡住比特比值0更有可能具有值1,那么,不对称的阻尼比负的LLR值更强烈地阻尼正的LLR值。进一步地,在示例中,如果任何卡住比特不大可能具有值0,那么,只能阻尼正的LLR值。
在使用MLC NAND闪存的各实施例中,存储在同一单元中的其他比特的值的知识(例如,正在被解码的MSB比特的LSB比特值,或正在被解码的LSB比特的MSB比特值,等等),与卡住比特故障如何影响单元的似然率的知识相结合,基于存储在同一个单元中的其他比特的值的知识,对每一个比特位置进行有选择性的阻尼。例如,当解码较低的页面时,读取和解码上部的页面提供了有选择地阻尼用于较低的页面解码的LLR值。如此,可以通过转换通过以相应的阈值电压读取NAND闪存的给定部分(诸如一个或多个代码字)所获得的一个或多个样本,产生LLR值。在更进一步的实施例中,使用表查询来将在每一个比特位置获得的样本转换为该比特位置的LLR值。预先计算表,诸如由固件,基于正在被读取的NAND闪存的部分中的单元的状态分布的静态或动态知识。在更进一步的实施例中,按照相应的阈值电压来排序样本,进行转换,以使用过渡点的索引(诸如从1到0,或从0到1)来确定LLR值。
根据各实施例,LLR值是由下列各项中的一项或多项生成的:LDPC解码器;专用硬件单元;固件;及其他类似的技术。根据各实施例,LLR阻尼是下列各项中的一项或多项执行的:作为预处理步骤,LDPC解码器;固件,改变查询表中所提供的LLR值;直接修改存储在存储器中的LLR值;及其他类似的技术。
示例性实施例使用系统码,其中,ECC比特位于消息比特的末尾(例如,如图6A-B和7所示)。然而,在某些实施例中,ECC比特可以在数据内的任何地方(中间,前面),而代码可以是非系统的,就是说,LDPC解码器(例如,142)不能区别消息和ECC比特。在此情况下,解码器区别缩短的比特(例如,602),以及非缩短的比特(例如,604),以及非缩短的比特(例如,604),以便所有比特都是“编码”的,而ECC信息和数据根据数学算法交错在一起。
如此,所描述的实施例提供读取存储在介质中的数据的介质控制器。介质控制器确定来自介质的缩短的代码字的每一个比特的值。缩短的代码字包括完全代码字的多个非缩短的比特,其中,完全代码字包括多个非缩短的比特和一个或多个缩短的比特。缩短的比特对应于在缩短的代码字中被设置为默认值的未使用的比特。介质控制器将缩短的代码字的每一个比特的确定的值转换为第一组对数似然比(LLR)值。使用缩短的代码字的第一组LLR值,来解码完全代码字。介质控制器阻尼对应于代码字的非缩短的比特的一个或多个LLR值,以产生第二组LLR值,并解码第二组LLR值。
此处所提及的“一个实施例”是指,参考实施例所描述的特定功能、结构或特征可以包括在至少一个实施例中。在本说明书中的不同位置出现短语“在一个实施例中”不一定都是指同一个实施例,也不是指与其他实施例互相排斥的单独的或备选实施例。同理也适用于术语“实现”。如本申请中所使用的,在此使用词语“示例性”意指用作示例、实例或说明。本文中被描述为“示例性”的任何方面或设计不一定被解释为优选于或更优于其他方面或设计。相反,使用词语“示例性”旨在以具体的方式呈现各个概念。
尽管参考软件程序中的处理框,包括作为数字信号处理器、微控制器,或通用计算机的可能的实现描述了示例性实施例,但是,所描述的实施例不仅限于此。对那些精通本技术的人显而易见的是,软件的各种功能也可以电路的进程来实现。这样的电路可以用于,例如,单一集成电路、多芯片模块、单一卡,或多卡电路封装。
另外,术语“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或从上下文可以清楚,“X使用A或B”意指任何自然的包括性排列。即,如果X使用A;X使用B;或X使用A和B两者,则在任何以上情况下,都满足“X使用A或B。”此外,本申请中和所附权利要求书所使用的冠词“一”和“一个”一般应解释为“一个或多个”,除非另有指定或从上下文将清楚是指单数形式。
此外,术语“系统”、“组件”、“模块”、“接口”、“模型”等等一般旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或运行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在控制器上的应用程序和控制器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。
如此处参考元件和标准所使用的,术语“兼容的”是指,元件以完全或部分地由标准所指定的方式与其他元件进行通信,将被其他元件识别为充分能够以由标准所指定的方式与其他元件进行通信。兼容的元件不需要以由标准所指定的方式在内部操作。
此外,对于本说明书,术语“耦合”、“连接”是指当前技术已知的或以后开发的允许在两个或更多元件之间传输能量的任何方式,预期可以插入一个或多个额外的元件,虽然不是必需的。相反,术语“直接耦合”、“直接连接”等等,意味着不存在这样的额外元件。信号和对应的节点或端口可以通过相同名称来引用,并为这里的目的而可互换。
虽然可以在处理具有用户交互组件的计算应用程序的一个或多个计算应用程序特征/操作的说明性实现的上下文中描述此处所描述的主题,但是,主题不仅限于这些特定实施例。相反,此处所描述的技术可以应用于任何合适类型的用户交互组件执行管理方法、系统、平台,和/或设备。
所描述的实施例还可以以方法的形式以及用于实施那些方法的设备来实现。所描述的实施例还可以以在非瞬时的有形的介质(如磁记录介质、光学记录介质、固态存储器、软盘、CD-ROM、硬盘驱动器或任何其他非瞬时的机器可读的存储介质)中实现的程序代码的形式来实现,其中,当程序代码被加载到诸如计算机之类的机器并由它们执行时,机器变为用于实施所描述的实施例的设备。所描述的实施例也可以以程序代码的形式实现,例如,无论存储在非瞬时的机器可读的存储介质中,加载到机器中和/或由机器执行,或通过某些传输介质或载体传输,如通过电线或电缆、通过光纤,或通过电磁辐射,其中,当程序代码被加载到中并由诸如计算机之类的机器执行时,机器变为用于实施所描述的实施例的设备。当在通用处理器上实现时,程序代码段与处理器结合,以提供与特定逻辑电路类似地工作的唯一设备。所描述的实施例还可以以比特流或通过介质以电的方式或以光学方式传输的,在磁记录介质等等中存储的磁场变体、使用诸如所描述的方法和/或设备生成的信号值的其他序列的形式来实现。
应该理解,此处阐述的示例性方法的步骤不一定按所描述的顺序执行,这样的方法的步骤的顺序应该被理解为只是示例性的。同样,在这样的方法中也可以包括额外的步骤,在根据各实施例的方法中,也可以省略或组合某些步骤。
应该进一步地理解,在不偏离如下面的权利要求的范围的情况下,本领域的技术人员可以对这里所描述的以便说明所描述的实施例的本质的该部分的细节、材料、布局进行各种更改。
Claims (10)
1.一种由控制器从存储介质和通信信道中的至少一个中读取数据的方法,所述方法包括:
确定所读取的数据的缩短的代码字的每一个比特的值,其中,所述缩短的代码字包括完全代码字的多个非缩短的比特,所述完全代码字包括所述多个非缩短的比特和一个或多个缩短的比特,所述缩短的比特对应于所述缩短的代码字中的未使用的比特;
将所述缩短的代码字的每一个比特的所确定的值转换为第一组对数似然比(LLR)值;
使用所述缩短的代码字的所述第一组LLR值来解码所述完全代码字;
阻尼所述第一组LLR值的一个或多个LLR值,所述一个或多个LLR值对应于所述代码字的非缩短的比特以产生第二组LLR值;以及
解码所述第二组LLR值。
2.如权利要求1所述的方法,其特征在于,阻尼一个或多个LLR值的步骤只有在所述第一组LLR值的所述解码没有成功地恢复对应于所述缩短的代码字的数据的情况下才被执行。
3.如权利要求1所述的方法,其特征在于,阻尼一个或多个LLR值的步骤包括下列各项中的一项:
将对应于所述缩短的代码字的缩短的比特的一个或多个LLR值设置为相关联的最大LLR大小;
使所述第一组LLR值的所述LLR值中的一个或多个的大小减小预定的量;以及
使所述第一组LLR值的所述LLR值中的一个或多个的大小缩放预定的缩放因子。
4.如权利要求1所述的方法,还包括:
在解码所述缩短的代码字的所述第一组LLR值之前,阻尼所述第一组LLR值的一个或多个LLR值。
5.如权利要求1所述的方法,还包括:
如果所述解码没有成功地从所述第二组LLR值中恢复出对应于所述缩短的代码字的数据:
阻尼所述第二组LLR值的一个或多个LLR值,所述一个或多个LLR值对应于所述代码字的非缩短的比特以产生第三组LLR值;以及
解码所述第三组LLR值。
6.如权利要求5所述的方法,其特征在于:
通过使所述第一组LLR值的所述LLR值中的一个或多个的大小减小第一预定的量,来执行所述第一组LLR值的所述阻尼;以及
通过使所述第二组LLR值的所述LLR值中的一个或多个的大小减小第二预定的量,来执行所述第二组LLR值的所述阻尼。
7.如权利要求5所述的方法,其特征在于:
通过使所述第一组LLR值的所述LLR值中的一个或多个的大小缩放第一缩放因子,来执行所述第一组LLR值的所述阻尼;以及
通过使所述第二组LLR值的所述LLR值中的一个或多个的大小缩放第二缩放因子,来执行所述第二组LLR值的所述阻尼。
8.如权利要求1所述的方法,其特征在于,所确定的值是二进制数据或模拟电压电平中的至少一个,其中,将所述缩短的代码字的每一个比特的所确定的值转换为第一组对数似然比(LLR)值的步骤是使用第一阈值级别来执行的,所述方法还包括:
如果达到阻尼操作的阈值数:
判断是否达到所述控制器的读取重试限制;
如果没有达到所述读取重试限制:
从所述存储介质中重新读取所述缩短的代码字的每一个比特的值;
使用一个或多个随后的阈值级别,将所述缩短的代码字的每一个比特的所确定的值转换为随后的一组对数似然比(LLR)值;
使用所述随后的一组LLR值,重新执行阻尼和解码的步骤。
9.如权利要求8所述的方法,还包括:
如果达到所述读取重试限制:
对所述一组LLR值执行进一步的数据恢复。
10.如权利要求9所述的方法,其特征在于:
所述解码的步骤是低密度奇偶校验(LDPC)解码;以及
所述进一步的数据恢复是下列各项中的至少一项:数字信号处理(DSP)和独立磁盘的冗余阵列(RAID)数据恢复。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/934,999 | 2013-07-03 | ||
US13/934,999 US9337865B2 (en) | 2012-05-04 | 2013-07-03 | Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104283570A true CN104283570A (zh) | 2015-01-14 |
CN104283570B CN104283570B (zh) | 2020-05-19 |
Family
ID=51167664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410054740.3A Expired - Fee Related CN104283570B (zh) | 2013-07-03 | 2014-02-18 | 低密度奇偶性检验(ldpc)解码器中的对数似然比(llr)阻尼 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP2822184B1 (zh) |
JP (1) | JP6367607B2 (zh) |
KR (1) | KR102155795B1 (zh) |
CN (1) | CN104283570B (zh) |
TW (1) | TWI619353B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107039080A (zh) * | 2015-10-30 | 2017-08-11 | 希捷科技有限公司 | 使用基于经解码数据的误码率的读取阈值电压自适应 |
CN107852177A (zh) * | 2015-07-01 | 2018-03-27 | 赛灵思公司 | 可变码率的固态硬盘 |
CN108683423A (zh) * | 2018-05-16 | 2018-10-19 | 广东工业大学 | 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置 |
CN110277999A (zh) * | 2018-03-16 | 2019-09-24 | 爱思开海力士有限公司 | Ldpc解码装置、包括其的存储器系统及其方法 |
CN114982136A (zh) * | 2020-01-30 | 2022-08-30 | 北京特纳飞电子技术有限公司 | 具有去饱和的低密度奇偶校验解码 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102265220B1 (ko) * | 2015-03-09 | 2021-06-16 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
US10268539B2 (en) * | 2015-12-28 | 2019-04-23 | Intel Corporation | Apparatus and method for multi-bit error detection and correction |
JP2018045387A (ja) | 2016-09-13 | 2018-03-22 | 東芝メモリ株式会社 | メモリシステム |
US10222996B2 (en) | 2017-02-07 | 2019-03-05 | Western Digital Technologies, Inc. | Read operation and soft decoding timing |
US10269422B2 (en) * | 2017-09-08 | 2019-04-23 | Cnex Labs, Inc. | Storage system with data reliability mechanism and method of operation thereof |
KR102543059B1 (ko) | 2017-11-22 | 2023-06-14 | 삼성전자주식회사 | 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 |
US20190379399A1 (en) * | 2018-06-08 | 2019-12-12 | Goke Us Research Laboratory | Log-likelihood-ratio (llr) generation algorithm for low-density-parity-check (ldpc) codes used in flash memory |
US10715182B2 (en) * | 2018-07-27 | 2020-07-14 | Innogrit Technologies Co., Ltd. | Systems and methods for decoding error correcting codes with self-generated LLR |
KR20200019046A (ko) * | 2018-08-13 | 2020-02-21 | 에스케이하이닉스 주식회사 | 에러 정정 회로 및 이의 동작 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060192691A1 (en) * | 2005-02-25 | 2006-08-31 | Sony Corporation | Decoding apparatus, decoding method and program |
CN102224679A (zh) * | 2009-09-25 | 2011-10-19 | 松下电器产业株式会社 | 编码装置、解码装置、编码方法、解码方法及通信系统 |
US20120005551A1 (en) * | 2010-06-30 | 2012-01-05 | Lsi Corporation | Breaking trapping sets using targeted bit adjustment |
CN102754081A (zh) * | 2010-01-27 | 2012-10-24 | 链接媒体设备公司 | 具有进行中错误恢复的ldpc解码 |
US8473780B2 (en) * | 2008-10-15 | 2013-06-25 | Apple Inc. | Efficient data storage in storage device arrays |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7702986B2 (en) * | 2002-11-18 | 2010-04-20 | Qualcomm Incorporated | Rate-compatible LDPC codes |
TW200803341A (en) * | 2006-03-14 | 2008-01-01 | Qualcomm Inc | Log-likelihood ratio (LLR) computation using piecewise linear approximation of llr functions |
US8873671B2 (en) * | 2008-03-26 | 2014-10-28 | Qualcomm Incorporated | Method and system for LLR buffer reduction in a wireless communication modem |
KR20130012549A (ko) * | 2011-07-25 | 2013-02-04 | 한양대학교 산학협력단 | Ldpc 부호화, 복호화 방법 및 그 방법을 이용하는 장치 |
-
2014
- 2014-01-22 TW TW103102358A patent/TWI619353B/zh not_active IP Right Cessation
- 2014-02-18 CN CN201410054740.3A patent/CN104283570B/zh not_active Expired - Fee Related
- 2014-03-06 KR KR1020140026669A patent/KR102155795B1/ko active IP Right Grant
- 2014-05-19 JP JP2014103075A patent/JP6367607B2/ja not_active Expired - Fee Related
- 2014-07-03 EP EP14175629.6A patent/EP2822184B1/en not_active Not-in-force
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060192691A1 (en) * | 2005-02-25 | 2006-08-31 | Sony Corporation | Decoding apparatus, decoding method and program |
US8473780B2 (en) * | 2008-10-15 | 2013-06-25 | Apple Inc. | Efficient data storage in storage device arrays |
CN102224679A (zh) * | 2009-09-25 | 2011-10-19 | 松下电器产业株式会社 | 编码装置、解码装置、编码方法、解码方法及通信系统 |
CN102754081A (zh) * | 2010-01-27 | 2012-10-24 | 链接媒体设备公司 | 具有进行中错误恢复的ldpc解码 |
US20120005551A1 (en) * | 2010-06-30 | 2012-01-05 | Lsi Corporation | Breaking trapping sets using targeted bit adjustment |
Non-Patent Citations (2)
Title |
---|
DINESH KUMAR. A等: ""A Two Stage Selective Averaging LDPC Decoding"", 《IEEE INTERNATIONAL SYMPOSIUM ON INFORMATION THEORY ISIT 2012》 * |
LEDUC-PRIMEAU等: ""Lowering Error Floors Using Dithered Belief Propagation"", 《IEEE GLOBAL TELECOMMUNICATION CONFERENCE GLOBECOM 2010》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107852177A (zh) * | 2015-07-01 | 2018-03-27 | 赛灵思公司 | 可变码率的固态硬盘 |
CN107852177B (zh) * | 2015-07-01 | 2021-01-01 | 赛灵思公司 | 可变码率的固态硬盘 |
CN107039080A (zh) * | 2015-10-30 | 2017-08-11 | 希捷科技有限公司 | 使用基于经解码数据的误码率的读取阈值电压自适应 |
CN107039080B (zh) * | 2015-10-30 | 2021-11-12 | 希捷科技有限公司 | 使用基于经解码数据的误码率的读取阈值电压自适应 |
CN110277999A (zh) * | 2018-03-16 | 2019-09-24 | 爱思开海力士有限公司 | Ldpc解码装置、包括其的存储器系统及其方法 |
CN110277999B (zh) * | 2018-03-16 | 2023-03-14 | 爱思开海力士有限公司 | Ldpc解码装置、包括其的存储器系统及其方法 |
CN108683423A (zh) * | 2018-05-16 | 2018-10-19 | 广东工业大学 | 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置 |
CN114982136A (zh) * | 2020-01-30 | 2022-08-30 | 北京特纳飞电子技术有限公司 | 具有去饱和的低密度奇偶校验解码 |
CN114982136B (zh) * | 2020-01-30 | 2024-07-02 | 北京特纳飞电子技术有限公司 | 具有去饱和的低密度奇偶校验解码 |
Also Published As
Publication number | Publication date |
---|---|
KR102155795B1 (ko) | 2020-09-14 |
JP6367607B2 (ja) | 2018-08-01 |
JP2015015701A (ja) | 2015-01-22 |
CN104283570B (zh) | 2020-05-19 |
TWI619353B (zh) | 2018-03-21 |
TW201503604A (zh) | 2015-01-16 |
KR20150004732A (ko) | 2015-01-13 |
EP2822184A1 (en) | 2015-01-07 |
EP2822184B1 (en) | 2017-03-15 |
EP2822184A9 (en) | 2015-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9337865B2 (en) | Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders | |
CN104283570A (zh) | 低密度奇偶性检验(ldpc)解码器中的对数似然比(llr)阻尼 | |
US10404279B2 (en) | Low BER hard-decision LDPC decoder | |
US8938659B2 (en) | Low-density parity-check decoder disparity preprocessing | |
US20190252035A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
KR102257050B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US9405624B2 (en) | On-die error detection and correction during multi-step programming | |
US11309916B2 (en) | Error correction circuit and memory controller having the same | |
KR20180010448A (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US10200063B2 (en) | Memory controller, semiconductor memory system and operating method thereof | |
KR20110028228A (ko) | 다중레벨 플래시 메모리의 에러정정 | |
KR102606829B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
CN109471808B (zh) | 具有数据可靠性机制的存储系统及其操作方法 | |
CN112860474A (zh) | 快速收敛的低密度奇偶校验码的软位翻转解码器 | |
CN111538621B (zh) | 针对位线故障的软芯片猎杀恢复 | |
KR102314481B1 (ko) | Siso 복호 방법, 디코더 및 반도체 메모리 시스템 | |
US11265015B2 (en) | Out-of-order processing for bit-flipping decoders in non-volatile memory devices | |
US11095316B2 (en) | Controller and operating method for performing read operation to read data in memory device | |
KR102714837B1 (ko) | 오류 정정 디코더 및 이를 포함하는 메모리 시스템 | |
CN112331244A (zh) | 广义低密度奇偶校验码的软输入软输出分量代码解码器 | |
US10528496B2 (en) | Controller and operating method thereof | |
CN113496752B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
US12112041B2 (en) | Out-of-order bit-flipping decoders for non-volatile memory devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200519 |
|
CF01 | Termination of patent right due to non-payment of annual fee |