CN112783685B - 快速收敛的低密度奇偶校验码的位翻转解码器 - Google Patents
快速收敛的低密度奇偶校验码的位翻转解码器 Download PDFInfo
- Publication number
- CN112783685B CN112783685B CN202010139066.4A CN202010139066A CN112783685B CN 112783685 B CN112783685 B CN 112783685B CN 202010139066 A CN202010139066 A CN 202010139066A CN 112783685 B CN112783685 B CN 112783685B
- Authority
- CN
- China
- Prior art keywords
- parity check
- bit
- decoding iteration
- threshold
- rules
- 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
- 238000000034 method Methods 0.000 claims abstract description 31
- 239000011159 matrix material Substances 0.000 claims abstract description 25
- 208000011580 syndromic disease Diseases 0.000 claims abstract description 22
- 238000004891 communication Methods 0.000 claims abstract description 10
- 238000009826 distribution Methods 0.000 description 26
- 238000012937 correction Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 239000010410 layer Substances 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 3
- 206010011906 Death Diseases 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001808 coupling effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000007306 turnover 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/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/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- 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
- G06F11/1032—Simple parity
-
- 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/1068—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 in sector programmable memories, e.g. flash disk
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0047—Decoding adapted to other signal detection operation
- H04L1/005—Iterative decoding, including iteration between signal detection and decoding operation
- H04L1/0051—Stopping criteria
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
Abstract
本公开涉及一种提高非易失性存储器装置中的位翻转解码器的收敛性的装置、系统与方法。示例方法包括:接收噪声码字,该噪声码字已基于低密度奇偶校验码的奇偶校验矩阵被生成,并在由位翻转解码器接收之前被提供至通信信道;并且对所接收的噪声码字执行单个解码迭代,单个解码迭代跨越多个阶段。在一些实施例中,执行单个解码迭代包括:计算与奇偶校验矩阵的单各列相对应的度量;在确定度量超过翻转阈值时,翻转单各列中的至少一位;在翻转之后,将校正子计算为噪声码字与奇偶校验矩阵的乘积;并且在确定校正子不为零时,更新翻转阈值。
Description
技术领域
本申请文件总体涉及非易失性存储器装置,并且更特别地,涉及非易失性存储器装置中的错误校正。
背景技术
对于任意数据存储装置与数据传输,数据完整性都是重要特征。对于包括NAND闪速存储器装置的各种类型的数据存储装置,推荐使用强错误校正码(ECC)。
固态驱动器(SSD)利用多层NAND闪速存储器装置进行持久存储。然而,多层NAND闪速存储器装置可能本身不可靠,并且通常需要使用ECC来显著提高数据可靠性,但是以ECC奇偶校验位的额外存储空间为代价。因此,需要能够利用提高的收敛属性来提供数据保护的ECC。
发明内容
本公开技术的实施例涉及一种提高低密度奇偶校验(LDPC)码的位翻转解码器的收敛的方法、装置与系统。除其它特征与益处之外,本文中描述的方法与装置有利地实现了位翻转解码算法中的较快收敛,因此提供了较高的吞吐量与较低的功耗。
在一个示例方面,一种提高位翻转解码器的收敛性的方法包括:接收噪声码字,该码字已基于LDPC码的奇偶校验矩阵被生成,并在由位翻转解码器接收之前被提供至通信信道;对所接收的噪声码字执行单个解码迭代,该单个解码迭代跨越多个阶段,其中针对多个阶段中的每个阶段,执行单个解码迭代包括:计算与奇偶校验矩阵的单个列相对应的度量;在确定度量超过翻转阈值(T)时,翻转单个列中的至少一位;在翻转之后,将校正子计算为噪声码字与奇偶校验矩阵的乘积;以及在确定校正子不为零时,更新翻转阈值,其中基于第一组规则来更新多个阶段中的第一阶段的翻转阈值,并且其中基于与第一组规则不同的第二组规则来更新第一阶段之后的第二阶段的翻转阈值。
在另一示例方面,上述方法可以由包括处理器的视频编码器设备或视频解码器设备实现。
在又一示例方面,这些方法可以以处理器可执行指令的形式实施并存储在计算机可读程序介质上。
可以以提供以下特征中的一个或多个特征的特定方式来实现本申请文件中描述的主题。
附图说明
图1示出存储器系统的示例。
图2是示例非易失性存储器装置的示图。
图3是示出非易失性存储器装置的单元电压电平分布(Vth)的示例示图。
图4是示出非易失性存储器装置的单元电压电平分布(Vth)的另一示例示图。
图5是示出编程干扰之前与之后的非易失性存储器装置的单元电压电平分布(Vth)的示例示图。
图6是示出作为参考电压的函数的非易失性存储器装置的单元电压电平分布(Vth)的示例示图。
图7是示出示例性NAND装置中的位翻转解码器的失败位(FB)分布与码字失败率(CFR)的性能图。
图8示出提高位翻转解码器的收敛性的示例方法的流程图。
图9A示出提高位翻转解码器的收敛性的另一示例方法的流程图。
图9B示出提高位翻转解码器的收敛性的又一示例方法的流程图。
具体实施方式
低密度奇偶校验(LDPC)码是线性分组错误校正码(ECC)的重要部分,已在数据存储系统中得到广泛的使用。可以使用两类解码算法对LDPC码进行解码:例如最小和或和积算法的软信息消息传递算法,以及诸如位翻转算法的硬判决算法。软信息解码算法提供了很好的解码性能,但是需要大量的计算资源。因此,它们在硬件实现上表现出很高的复杂性。相反,由于简单的计算单元与较小的连接网络,因此硬判决解码器的硬件实施方式显示出低复杂性与降低的延迟要求,并且已被开发以提供类似的错误校正性能。在其它系统中,采用硬解码与软解码实施方式的组合。
在大多数的位翻转解码器结构中,将解码器的校正能力优化,使得解码器可以校正更多数据并且减少去往最小和硬(MSH)解码器的流量。但是,基于从数千个NAND装置收集的数据,由于校正更多的数据仅会稍微减少到MSH解码器的流量,因此这种观点可能是不合适的。因此,除其它特征与益处之外,本公开技术的实施例着重于提高位翻转解码器的收敛性,从而获得更高的解码器吞吐量与更低的功耗要求。
图1至图6概述了可以实现本公开技术的实施例的非易失性存储器系统。
图1是基于本公开技术的一些实施例实现的存储器系统100的示例的框图。存储器系统100包括存储器模块110,该存储器模块110可以用于存储供其它电子装置或系统使用的信息。存储器系统100可以被并入其它电子装置与系统中(例如,位于电路板上)。可选地,存储器系统100可以被实现为外部存储装置,诸如USB闪存驱动器与固态驱动器(SSD)。
存储器系统100中包括的存储器模块110可以包括存储器区域(例如,存储器阵列)102、104、106与108。存储器区域102、104、106与108中的每一个存储器区域可以被包括在单个存储器管芯中或多个存储器管芯中。存储器管芯可以被包括在集成电路(IC)芯片中。
存储器区域102、104、106与108中的每个存储器区域包括多个存储器单元。可以基于存储器单元组(memory unit)执行读取操作、编程操作或擦除操作。因此,每个存储器单元组可以包括预定数量的存储器单元。存储器区域102、104、106或108中的存储器单元可以被包括在单个存储器管芯中或多个存储器管芯中。
存储器区域102、104、106与108中的每一个存储器区域中的存储器单元可以以行与列布置在存储器单元组中。每个存储器单元组可以是物理单元组。例如,一组多个存储器单元可以形成存储器单元组。每个存储器单元组也可以是逻辑单元组。例如,存储器单元组可以是由诸如存储库(bank)地址、块地址与基于页面的地址的唯一地址来标识的存储库、块或页面。在读取操作或写入操作期间,与特定存储器单元组相关的唯一地址可以用于访问该特定存储器单元组。基于该唯一地址,可以将信息写入该特定存储器单元组中的一个或多个存储器单元或从该特定存储器单元组中的一个或多个存储器单元中检索信息。
存储器区域102、104、106与108中的存储器单元可以包括非易失性存储器单元。非易失性存储器单元的示例包括闪速存储器单元、相变存储器(PRAM)单元、磁阻随机存取存储器(MRAM)单元或其它类型的非易失性存储器单元。在存储器单元被配置为NAND闪速存储器单元的示例实施方式中,可以基于页面执行读取操作或写入操作。然而,NAND闪速存储器中的擦除操作是基于块执行的。
每个非易失性存储器单元可以被配置为单层单元(SLC)或多层存储器单元。单层单元可以每单元存储一位信息。多层存储器单元可以每单元存储多于一位信息。例如,存储器区域102、104、106与108中的每个存储器单元可以被配置为每单元存储两位信息的多层单元(MLC)、每单元存储三位信息的三层单元(TLC)、或每单元存储四位信息的四层单元(QLC)。在另一示例中,一个存储器区域中的每个存储器单元可以被配置为存储至少一位信息(例如,一位信息或多位信息),并且另一个存储器区域中的每个存储器单元可以被配置为存储多于一位信息。
如图1所示,存储器系统100包括控制器模块120。控制器模块120包括:存储器接口121,与存储器模块110通信;主机接口126,与主机(未示出)通信;处理器124,执行固件层代码;以及高速缓存123与存储器122,临时或永久存储可执行固件/指令与相关信息。在一些实施方式中,控制器模块120可以包括错误校正引擎(也称为ECC引擎)125,错误校正引擎125对存储在存储器模块110中的信息执行错误校正操作。错误校正引擎125可以被配置为检测/校正单个位错误或多个位错误。在另一实施方式中,错误校正引擎125可以位于存储器模块110中。
主机可以是包括一个或多个处理器的装置或系统,该一个或多个处理器进行操作以从存储器系统100检索数据或将数据存储或写入至存储器系统100中。在一些实施方式中,主机的示例可以包括个人计算机(PC)、便携式数字装置、数字照相机、数字多媒体播放器、电视与无线通信装置。
在一些实施方式中,控制器模块120还可以包括与主机通信的主机接口126。主机接口126可以包括符合主机接口规范中的至少一个接口规范的组件,主机接口规范包括但不限于串行高级技术附件(SATA)、串列小型计算机系统接口(SAS)规范、高速外围组件互连(PCIe)。
图2示出基于本公开技术的一些实施例实现的存储器单元阵列的示例。
在一些实施方式中,存储器单元阵列可以包括被划分为许多块的NAND闪速存储器阵列,并且每个块包含一定数量的页面。每个块包括多个存储器单元串,并且每个存储器单元串包括多个存储器单元。
在存储器单元阵列为NAND闪速存储器阵列的一些实施方式中,基于页面执行读取操作与写入(编程)操作,基于块执行擦除操作。在对块中包括的任意页面执行编程操作之前,必须同时擦除相同块内的所有存储器单元。在实施方式中,NAND闪速存储器可以使用偶数/奇数位线结构。在另一实施方式中,NAND闪速存储器可以使用全位线结构。在偶数/奇数位线结构中,偶数位线与奇数位线沿着每条字线交错并且被交替访问,使得每对偶数位线与奇数位线可以共享诸如页面缓冲器的外围电路。在全位线结构中,所有位线同时被访问。
图3示出多层单元装置中的阈值电压分布曲线的示例,其中每个编程/擦除状态的单元数量被绘制为阈值电压的函数。如图3所示,阈值电压分布曲线包括具有最低阈值电压的擦除状态(表示为“ER”并且对应于“11”)以及读取电压处于(由虚线表示的)状态之间的三个编程状态(分别表示为“P1”、“P2”和“P3”并且分别对应于“01”、“00”和“10”)。在一些实施例中,由于存储器阵列的材料特性的差异,编程/擦除状态的阈值电压分布中的每个具有有限的宽度。
在将多于一个数据位写入存储器单元中时,由于相邻分布之间的距离减小,因此需要对存储器单元的阈值电压电平进行精细布置。这可以通过使用增量步进脉冲编程(ISPP)来实现,即,使用向字线施加阶梯(stair case)编程电压的编程和验证的方法,来对相同字线上的存储器单元重复编程。每个编程状态与在验证操作中使用的验证电压相关联,并设置每个阈值电压分布窗口的目标位置。
阈值电压分布失真或重叠可能导致读取错误。理想的存储器单元阈值电压分布可能由于例如编程和擦除(P/E)循环、单元间干扰以及数据保持错误而严重失真或重叠,这将在下文中进行讨论,并且在大多数情况下,可以通过使用错误校正码(ECC)来管理这些读取错误。
图4示出理想的阈值电压分布曲线410的示例与失真的阈值电压分布曲线420的示例。纵轴表示存储器单元的数量,存储器单元具有横轴上表示的特定阈值电压。
对于n位多层单元NAND闪速存储器,可以将每个单元的阈值电压编程为2n个可能的值。在理想的多层单元NAND闪速存储器中,每个值对应于不重叠的阈值电压窗口。
闪速存储器P/E周期对单元晶体管的电荷捕获层的浮栅的隧道氧化物造成损害,从而导致阈值电压偏移并且因此逐渐降低存储器装置噪声容限(margin)。随着P/E周期增加,不同编程状态的相邻分布之间的容限减小,并且最终分布开始重叠。阈值电压被编程在相邻分布的重叠范围内的存储器单元中存储的数据位可能被误判为不同于原始目标值的值。
图5示出NAND闪速存储器中的单元间干扰的示例。单元间干扰还可能导致闪存单元的阈值电压失真。一个存储器单元晶体管的阈值电压偏移可以通过干扰单元与牺牲单元之间的寄生电容耦合效应来影响其相邻存储器单元晶体管的阈值电压。单元间干扰的量可能受到NAND闪速存储器位线结构的影响。在偶数/奇数位线结构中,一个字线上的存储器单元与偶数位线和奇数位线交替地连接,并且在相同字线中,偶数单元在奇数单元之前被编程。因此,偶数单元与奇数单元经受的单元间干扰的量是不同的。全位线结构中的单元比偶数/奇数位线结构中的偶数单元遭受更少的单元间干扰,并且全位线结构可以高效地支持高速电流感测,以改善存储器读取与验证速度。
图5中的虚线表示所考虑的单元的P/E状态(在编程干扰之前)的标称分布,并且“相邻状态值”表示已被编程的相邻状态的值。如图5所示,在将相邻状态编程为P1时,所考虑的单元的阈值电压分布偏移特定量。然而,在将相邻状态编程为具有比P1更高的阈值电压的P2时,则与相邻状态为P1时相比,导致更大的偏移。类似地,当将相邻状态编程为P3时,阈值电压分布的偏移最大。
图6示出通过比较正常的阈值电压分布与偏移的阈值电压分布的NAND闪速存储器中的保持错误的示例。存储在NAND闪速存储器中的数据往往会随着时间推移而被损坏,这被称为数据保持错误。保持错误由存储在单元晶体管的浮栅或电荷捕获层中的电荷丢失而引起。由于浮栅或电荷捕获层的损耗,具有较多编程擦除周期的存储器单元更可能经历保持错误。在图6的示例中,顶行的电压分布(损坏之前)与底行的电压分布(被保持错误损害)的比较显示了向左偏移。
图7是示出示例性NAND装置(例如,图1至图6的上下文中所述的NAND装置)中的位翻转解码器的失败位(FB)分布与码字失败率(CFR)的性能图。图7示出针对不同的擦除/写入周期的值(例如,EWCYC=3000、5000与7000)的在左侧y轴上的NAND失败位(FB)计数分布,以及右侧y轴上的位翻转解码器(表示为“BF”)与改进的位翻转解码器(表示为“iBF”)的码字失败率。在示例中,iBF解码器是BF解码器的一种版本,其中能量函数(或翻转能量或指示符)基于信道信息的;例如,当前硬判决是否与所接收的位相对应的硬判决不同。
如图7中所示,位翻转解码器的CFR的数量级降低仅转换为到最小和硬(MSH)解码器的微小的流量降低。这是因为即使在寿命终止(EOL)的条件下,大多数流量也具有较低的FB计数。只有较小比例的流量将具有接近于位翻转解码器的CFR曲线的瀑布点的FB计数。因此,除其它特征与益处之外,本公开技术的实施例旨在优化或提高位翻转解码器处理具有较低FB计数特点的大部分流量的操作。如前所述,这种优化获得了增加的解码器吞吐量以及较低的功耗要求。
位翻转解码器的示例操作假设x=[x0,x1,…,xN-1]为位向量,H=[hij]为M×N的低密度奇偶校验矩阵,其中在第i行与第j列处具有二进制值hij,并且H的每一行提供对x的奇偶校验。如果x为H的码字,则xHT=0。进一步假设x通过噪声信道传输,并且信道的输出为y=[y0,y1,…,yN-1],该输出被接收器处理。LDPC码的奇偶校验矩阵可以由被称为Tanner图的二分图表示,该Tanner图由两组节点组成:校验节点与变量节点。
在示例中,接收器将y的校正子计算为二进制向量,该二进制向量被计算为s=[s0,s1,…,sN-1]=yHT,其中权重s(被表示为||s||并等于s中“1”条目的数量)代表未满足的校验节点的数量。此外,与变量节点j连接的未满足的校验节点的数量被表示为||sj||。
根据本公开技术的实施例,用于提高位翻转解码器的收敛性的示例算法假设E(i)为第i列的翻转能量(或指示符),T为翻转阈值,s为校正子,t为迭代索引(或次数),使得(0≤t≤tmax),表示第t次迭代的变量节点j的判决,并且
最后,如果假设则s(-1)=yHT。
在一些实施例中,对迭代解码算法的描述如下:
操作0:设置t=0,计算s(-1)并且进行至操作1;
操作1:如果超过最大迭代次数,则停止解码。否则,进行至操作2;
操作2:如果s=0,则停止解码。否则,进行至操作3;
操作3:对于所有的变量节点,执行以下操作:
○更新翻转指示符(或能量),E(j);
○更新翻转阈值,T;
○如果E(j)>T,翻转第j位;
○计算并更新s;以及
○进行至操作1。
在一些实施例中,翻转指示符E(j)如下进行更新:
如果则E(j)=‖sj‖;否则E(j)=‖sj‖+α。
在此,α可以为任何正值。例如,如果α被设置为1,则当时,E(j)=‖sj‖+1。
在一些实施例中,基于迭代次数、先前迭代的未满足的校验节点的数量、与/或先前迭代中的被翻转的变量节点的数量,来生成适合的翻转阈值T。在可用于适应性地更新翻转阈值的示例性有限状态机(FSM)中,执行以下计算:
如果(t==0)并且(||s||<β1),则T=δ1;
否则如果(t==0),则T=δ1-1;
否则如果(t==1),则T=δ1;
否则如果(p==0),则T=T-1;
否则如果(t>ε)并且(||s||<β2),则T=δ2;
否则如果(||s||<β3)并且(p>θ1)并且(T+1)<δ3,则T=T+1;
否则如果(||s||<β3)并且(p>θ1),则T=δ3;
否则如果(p≤θ2)并且(||s||>β3),则T=max(δ4,T-1);
否则T=T。
此处,β1、β2、β3、δ1、δ2、δ3、δ4、θ1、θ2与ε是预定的或可以适应性地配置的参数。在实施例中,β1=50、β2=20、β3=9999、δ1=5、δ2=4、δ3=5、δ4=3、θ1=10、θ2=10以及ε=10。在另一实施例中,这些参数可以被优化以将位翻转解码器的吞吐量最大化。
在一些实施例中,错误校正机翻转单个位。在其它实施例中,通过翻转多个位来校正错误。
图8示出提高位翻转解码器的收敛性的示例方法的流程图。沿用先前描述的示例的符号,方法800始于初始化解码器805(例如,通过运行虚拟迭代)以生成位翻转阈值T。类似于以上描述中的操作3,在810中,计算第i列的翻转能量E(i),并且在815中与位翻转阈值进行比较,这导致位被翻转(如果E(j)≥T,则Δ=1)或位不被翻转(如果E(j)<T,则Δ=0)。
在进行满足条件的位翻转之后,在820中重新计算校正子(s_new)与校验和值(C)。如果校验和值等于零(操作825),则由于已正确地解码了所接收的码字,因此停止位翻转解码器。如果校验和不等于零,则在830中更新校正子与校验和值,并且在835中更新阈值。在示例中,如上所述,基于迭代次数、先前迭代的未满足的校验节点的数量、和/或先前迭代中被翻转的变量节点的数量来更新阈值。
对列索引(i)进行迭代,在840中确定是否处理了最后一列。如果已经处理了所有列,则在850中递增迭代索引并且初始化下一个迭代。在845中如果迭代索引已超过最大迭代次数,则停止位翻转解码器。否则,控制返回至操作810,并且计算第(i+1)列的翻转能量E(i+1)。
图9A示出提高位翻转解码器的收敛性的示例方法900的流程图。方法900包括,在操作910,接收噪声码字,噪声码字已基于低密度奇偶校验(LDPC)码的奇偶校验矩阵被生成,并在由位翻转解码器接收之前被提供给通信信道。
方法900包括,在操作920,对所接收的噪声码字执行单个解码迭代,单个解码迭代跨越多个阶段。
图9B示出与图9A的操作920相关的流程图。在一些实施例中,执行单个解码迭代包括:对于多个阶段中的每个阶段,计算与奇偶校验矩阵的单个列相对应的度量(metric)(922)。
操作920包括在确定度量超过翻转阈值时,翻转该单个列中的至少一位(924)。
操作920包括在翻转之后,将校正子计算为噪声码字与奇偶校验矩阵的乘积(926)。
操作920包括在确定校正子不为零时,更新翻转阈值,基于第一组规则来更新多个阶段中的第一阶段的翻转阈值,并且基于与第一组规则不同的第二组规则来更新第一阶段之后的第二阶段的翻转阈值(928)。
在一些实施例中,基于解码迭代的索引、校正子中的非零值的数量或先前解码迭代中的奇偶校验矩阵的列中的被翻转位的数量,来更新翻转阈值。
在一些实施例中,一组规则包括有限状态机(FSM)。
在一些实施例中,FSM被配置以将位翻转解码器的吞吐量最大化。图7示出位翻转解码器的CFR的数量级降低仅转换为到最小和硬(MSH)解码器的微小的流量降低。因此,除其它特征与益处之外,本公开技术的实施例旨在提高位翻转解码器的收敛性,而不是简单地减少到MSH解码器的流量。
在一些实施例中,翻转至少一位包括翻转单个列中的多位。在示例中,翻转多位可以提高收敛速度。
在一些实施例中,多个阶段中的每个阶段对应于预定数量的时钟周期。
通常单个位翻转解码器迭代运行几个时钟周期(例如,时钟周期的数量,K>>1),并且位翻转阈值(以及其它参数)仅在迭代完成后才被更新,即,如果迭代索引未超过最大迭代次数,则针对下一多个时钟周期迭代来更新解码器参数。本公开技术的实施例在预定数量的时钟周期(例如,K=1、2、5等)之后更新位翻转阈值,这被配置为在迭代的中间发生。
在一些实施例中,单个解码迭代的索引小于解码迭代的最大次数。
LDPC码在数据存储系统中的使用通常被配置为以高于典型的无线通道的信噪比(SNR)运行。因此,在接收(或读取)码字中遇到的错误数量少于在无线通道中遇到的错误数量。因此,本公开技术的实施例被配置为以小于一次完整迭代的时间增量(例如,每时钟周期或每预定数量的时钟周期)来执行LDPC位翻转解码操作。这确保了如果一个码字仅具有1至2位错误,并且在处理前几列之后,这些错误得到校正,则由于在每个位翻转操作之后检查了校验和与校正子,因此剩余的迭代不会像在传统的位翻转解码器中一样被完成。这有利地提高了解码器的吞吐量并且降低了功耗。
上述方法与算法(包括方法800与方法900)可以被配置为在每个时钟周期更新校正子,这可以在一定数量周期的处理延迟之后,被应用于翻转指示符(或能量)计算。该方法可以进一步被配置为在每单个时钟周期(或在每个预定数量的时钟周期之后)更新翻转阈值。
在一些实施例中,可以使用不同的有限状态机(FSM)以不同的时钟周期来更新阈值。在一个示例中,FSM1被用于在第一时钟周期更新阈值,FSM2被用于在第二时钟周期更新阈值,依此类推。在另一示例中,最初使用FSM1,在第一预定数量的时钟周期之后使用FSM2,并且对最后一组时钟周期使用FSM3。在又一示例中,如果正在使用准循环LDPC(QC-LDPC)码,则基于奇偶校验矩阵的循环权重的属性来配置FSM。FSM可以被优化以最大化位翻转解码器的吞吐量。
本申请文件中描述的主题与功能操作的实施方式可以以在包括本说明书中公开的结构及其等同结构的各种系统、数字电子电路实现,或者以计算机软件、固件或硬件,或者以它们中的一个或多个的组合实现。本说明书中描述的主题的实施方式可以被实现为一种或多种计算机程序产品,即在有形的且非暂时性的计算机可读介质上编码的计算机程序指令的一个或多个模块,以用于被数据处理设备执行或控制数据处理设备的操作。计算机可读介质可以是机器可读存储装置、机器可读存储衬底、存储器装置、实现机器可读传播信号的物质组成或它们中的一个或多个的组合。术语“数据处理单元”或“数据处理设备”涵盖用于处理数据的所有设备、装置与机器,包括例如可编程处理器、计算机、或者多个处理器或多个计算机。除硬件之外,设备还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个组合的代码。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以包括编译或解译语言的任意形式的编程语言来写入,并且可以以包括作为独立运行的程序或作为模块、组件、子程序或适用于计算环境的其它单元的任意形式进行部署。计算机程序不必需与文件系统中的文件对应。程序可以存储在保存其它程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、专用于讨论的程序的单个文件、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。可以部署计算机程序以在一台计算机上执行或在通过通信网络互连的分布于一个站点或多个站点的多台计算机上执行。
本说明书中描述的进程和逻辑流程可以通过一个或多个可编程处理器运行一个或多个计算机程序以通过对输入数据进行操作并生成输出执行功能。进程和逻辑流程也可以由例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)的专用逻辑电路执行,并且设备也可以被实现为专用逻辑电路。
适合执行计算机程序的处理器包括例如通用微处理器和专用微处理器、以及任意种类的数字计算机的任意一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或这二者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令与数据的一个或多个存储器装置。通常,计算机将还包括例如磁盘、磁光盘或光盘的存储数据的一个或多个大容量存储装置,或可操作地联接以从一个或多个大容量存储装置接收数据或将数据传输到一个或多个大容量存储装置或者从一个或多个大容量存储装置接收数据并将数据传输到一个或多个大容量存储装置。然而,计算机不需要具有这种装置。适用于存储计算机程序指令与数据的计算机可读介质包括所有形式的非易失性存储器、介质与存储器装置,包括例如半导体存储器装置,例如,EPROM、EEPROM与闪速存储器装置。处理器与存储器可以由专用逻辑电路辅助或并入到专用逻辑电路中。
尽管本申请文件包含许多细节,但是这些细节不应解释为对任何发明或可以要求保护的内容的范围的限制,而应解释为对于特定发明的特定实施例的可能的特定特征的描述。在本申请文件中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中实现或以任意合适的子组合来实现。此外,尽管特征可能在上文描述为在某些组合中起作用并且甚至最初如此要求,但是在某些情况下,可以从所要求保护的组合中排除该组合中的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变例。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有示出的操作以实现期望的效果。此外,本申请文件中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。
本申请文件中仅描述一些实施方式和示例,并且可以基于本申请文件中所描述和示出的内容进行其它实施方式、改进和变例。
Claims (20)
1.一种提高非易失性存储器装置中的位翻转解码器的收敛性的方法,所述方法包括:
接收噪声码字,所述噪声码字已基于低密度奇偶校验LDPC码的奇偶校验矩阵被生成,并且在由所述位翻转解码器接收之前被提供至通信信道;并且
对所接收的噪声码字执行单个解码迭代,所述单个解码迭代跨越多个阶段;
其中针对所述多个阶段中的每个阶段,执行所述单个解码迭代包括:
计算与所述奇偶校验矩阵的单个列相对应的度量;
在确定所述度量超过翻转阈值T时,翻转所述单个列中的至少一位;
在所述翻转之后,将校正子s计算为所述噪声码字与所述奇偶校验矩阵的乘积;并且
在确定所述校正子不为零时,更新所述翻转阈值,其中基于第一组规则来更新所述多个阶段中的第一阶段的翻转阈值,并且其中基于与所述第一组规则不同的第二组规则来更新所述第一阶段之后的第二阶段的翻转阈值,
其中在所述单个解码迭代的中间更新所述翻转阈值。
2.根据权利要求1所述的方法,其中基于所述解码迭代的索引t、所述校正子中的非零值的数量或者先前解码迭代中的所述奇偶校验矩阵的列中的被翻转位的数量p,来更新所述翻转阈值。
3.根据权利要求1所述的方法,其中所述第一组规则和所述第二组规则包括有限状态机FSM。
4.根据权利要求3所述的方法,其中所述FSM最大化所述位翻转解码器的吞吐量。
5.根据权利要求1所述的方法,其中翻转所述至少一位包括翻转所述单个列中的多个位。
6.根据权利要求1所述的方法,其中所述多个阶段中的每个阶段对应于预定数量的时钟周期。
7.根据权利要求1所述的方法,其中所述单个解码迭代的索引小于解码迭代的最大次数。
8.一种提高非易失性存储器装置中的位翻转解码器的收敛性的系统,所述系统包括:
处理器与存储器,所述存储器包括存储在所述存储器中的指令,其中在所述处理器执行所述指令时使所述处理器:
接收噪声码字,所述噪声码字已基于低密度奇偶校验LDPC码的奇偶校验矩阵被生成,并且在由所述位翻转解码器接收之前被提供至通信信道;并且
对所接收的噪声码字执行单个解码迭代,所述单个解码迭代跨越多个阶段,
其中,针对所述多个阶段中的每个阶段,执行所述单个解码迭代包括:
计算与所述奇偶校验矩阵的单个列相对应的度量;
在确定所述度量超过翻转阈值T时,翻转所述单个列中的至少一位;
在所述翻转之后,将校正子s计算为所述噪声码字与所述奇偶校验矩阵的乘积;并且
在确定所述校正子不为零时,更新所述翻转阈值,其中基于第一组规则来更新所述多个阶段中的第一阶段的翻转阈值,并且其中基于与所述第一组规则不同的第二组规则来更新所述第一阶段之后的第二阶段的翻转阈值,
其中在所述单个解码迭代的中间更新所述翻转阈值。
9.根据权利要求8所述的系统,其中基于所述解码迭代的索引t、所述校正子中的非零值的数量或者先前解码迭代中的所述奇偶校验矩阵的列中的被翻转位的数量p,来更新所述翻转阈值。
10.根据权利要求8所述的系统,其中所述第一组规则和所述第二组规则包括有限状态机FSM。
11.根据权利要求10所述的系统,其中所述FSM最大化所述位翻转解码器的吞吐量。
12.根据权利要求8所述的系统,其中翻转所述至少一位包括翻转所述单个列中的多个位。
13.根据权利要求8所述的系统,其中所述多个阶段中的每个阶段对应于预定数量的时钟周期。
14.根据权利要求8所述的系统,其中所述单个解码迭代的索引小于解码迭代的最大次数。
15. 一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质存储提高非易失性存储器装置中的位翻转解码器的收敛性的指令,其中所述指令在由处理器运行时,使所述处理器执行包括以下各项的方法:
接收噪声码字,所述噪声码字已基于低密度奇偶校验LDPC码的奇偶校验矩阵被生成,并且在由所述位翻转解码器接收之前被提供至通信信道;并且
对所接收的噪声码字执行单个解码迭代,所述单个解码迭代跨越多个阶段,
其中,针对所述多个阶段中的每个阶段,执行所述单个解码迭代包括:
计算与所述奇偶校验矩阵的单个列相对应的度量令;
在确定所述度量超过翻转阈值T时,翻转所述单个列中的至少一位;
在所述翻转之后,将校正子s计算为所述噪声码字与所述奇偶校验矩阵的乘积;以及
在确定所述校正子不为零时,更新所述翻转阈值,其中基于第一组规则来更新所述多个阶段中的第一阶段的翻转阈值,并且其中基于与所述第一组规则不同的第二组规则来更新所述第一阶段之后的第二阶段的翻转阈值,并且
其中在所述单个解码迭代的中间更新所述翻转阈值。
16.根据权利要求15所述的非暂时性计算机可读存储介质,其中基于所述解码迭代的索引t、所述校正子中的非零值的数量或者先前解码迭代中的所述奇偶校验矩阵的列中的被翻转位的数量p,来更新所述翻转阈值。
17.根据权利要求15所述的非暂时性计算机可读存储介质,其中所述第一组规则和所述第二组规则包括有限状态机FSM。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中所述FSM最大化所述位翻转解码器的吞吐量。
19.根据权利要求15所述的非暂时性计算机可读存储介质,其中翻转所述至少一位包括翻转所述单个列中的多个位。
20.根据权利要求15所述的非暂时性计算机可读存储介质,其中所述多个阶段中的每个阶段对应于预定数量的时钟周期。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/680,330 US11018695B1 (en) | 2019-11-11 | 2019-11-11 | Fast-converging bit-flipping decoder for low-density parity-check codes |
US16/680,330 | 2019-11-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783685A CN112783685A (zh) | 2021-05-11 |
CN112783685B true CN112783685B (zh) | 2024-04-09 |
Family
ID=75749978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010139066.4A Active CN112783685B (zh) | 2019-11-11 | 2020-03-03 | 快速收敛的低密度奇偶校验码的位翻转解码器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11018695B1 (zh) |
CN (1) | CN112783685B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10951232B2 (en) * | 2018-11-26 | 2021-03-16 | Micron Technology, Inc. | Error correction bit flipping scheme |
FR3108221B1 (fr) * | 2020-03-11 | 2022-03-11 | Commissariat Energie Atomique | Méthode de décodage de codes ldpc à inversion de bits et effet inertiel |
CN113595561A (zh) * | 2021-07-14 | 2021-11-02 | 深圳宏芯宇电子股份有限公司 | 一种混合解码方法、存储装置控制器及存储系统 |
US11398835B1 (en) * | 2021-08-05 | 2022-07-26 | Micron Technology, Inc. | Managing defective bitline locations in a bit flipping decoder |
US11722151B2 (en) * | 2021-08-09 | 2023-08-08 | Micron Technology, Inc. | Bit flipping decoder based on soft information |
US11765604B2 (en) | 2021-12-16 | 2023-09-19 | T-Mobile Usa, Inc. | Providing configuration updates to wireless telecommunication networks |
US11664821B1 (en) | 2022-02-08 | 2023-05-30 | SK Hynix Inc. | Error floor performance of a bit flipping decoder through identifying unreliable check nodes |
CN114785353A (zh) * | 2022-03-24 | 2022-07-22 | 山东岱微电子有限公司 | 低密度奇偶校验码译码方法、系统、设备、装置及介质 |
US11777522B1 (en) | 2022-03-28 | 2023-10-03 | Micron Technology, Inc. | Bit flipping decoder with dynamic bit flipping criteria |
US11923867B1 (en) | 2022-08-18 | 2024-03-05 | Micron Technology, Inc. | Iterative decoder with a dynamic maximum stop condition |
US11923868B1 (en) * | 2022-08-18 | 2024-03-05 | Micron Technology, Inc. | Stall mitigation in iterative decoders |
US11901911B1 (en) | 2022-08-18 | 2024-02-13 | Micron Technology, Inc. | Stall detection and mitigation in iterative decoders |
US11967970B2 (en) * | 2022-09-14 | 2024-04-23 | SK Hynix Inc. | Bit-flipping decoder and decoding method for irregular codes |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1822510A (zh) * | 2006-01-23 | 2006-08-23 | 南京大学 | 高速的减少存储需求的低密度校验码解码器 |
CN101405943A (zh) * | 2005-10-03 | 2009-04-08 | 摩托罗拉公司 | 用于低密度奇偶校验解码器的方法和装置 |
CN108073467A (zh) * | 2016-11-08 | 2018-05-25 | 爱思开海力士有限公司 | 具有硬信道信息的位翻转ldpc解码算法 |
CN108933605A (zh) * | 2017-05-26 | 2018-12-04 | 爱思开海力士有限公司 | 低密度奇偶校验(ldpc)解码的提前终止 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090126829A (ko) * | 2008-06-05 | 2009-12-09 | 삼성전자주식회사 | 반복 복호 방법과 반복 복호 장치 |
US8756479B2 (en) * | 2011-01-14 | 2014-06-17 | Marvell World Trade Ltd. | LDPC multi-decoder architectures |
US10200064B1 (en) | 2014-03-18 | 2019-02-05 | Marvell International Ltd. | Systems and method for bit-flipping decoders with partial-column processing, ordering and scheduling |
TWI631830B (zh) * | 2016-12-30 | 2018-08-01 | 慧榮科技股份有限公司 | 解碼方法與相關解碼裝置 |
US10547327B2 (en) * | 2017-06-23 | 2020-01-28 | Intel Corporation | Self-configuring error control coding |
US10965319B2 (en) * | 2018-10-25 | 2021-03-30 | PetaIO Inc. | Bit flipping algorithm for decoding LDPC-encoded data |
-
2019
- 2019-11-11 US US16/680,330 patent/US11018695B1/en active Active
-
2020
- 2020-03-03 CN CN202010139066.4A patent/CN112783685B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101405943A (zh) * | 2005-10-03 | 2009-04-08 | 摩托罗拉公司 | 用于低密度奇偶校验解码器的方法和装置 |
CN1822510A (zh) * | 2006-01-23 | 2006-08-23 | 南京大学 | 高速的减少存储需求的低密度校验码解码器 |
CN108073467A (zh) * | 2016-11-08 | 2018-05-25 | 爱思开海力士有限公司 | 具有硬信道信息的位翻转ldpc解码算法 |
CN108933605A (zh) * | 2017-05-26 | 2018-12-04 | 爱思开海力士有限公司 | 低密度奇偶校验(ldpc)解码的提前终止 |
Non-Patent Citations (1)
Title |
---|
LDPC码位翻转解码算法研究;彭立, 朱光喜;华中科技大学学报(自然科学版)(05);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20210143836A1 (en) | 2021-05-13 |
US11018695B1 (en) | 2021-05-25 |
CN112783685A (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112783685B (zh) | 快速收敛的低密度奇偶校验码的位翻转解码器 | |
CN111538620B (zh) | 存储器装置的鲁棒检测方法 | |
US9454414B2 (en) | System and method for accumulating soft information in LDPC decoding | |
US11184024B2 (en) | Error mitigation scheme for bit-flipping decoders for irregular low-density parity-check codes | |
US10879935B2 (en) | LDPC decoder, semiconductor memory system, and operating method thereof | |
CN112860474B (zh) | 快速收敛的低密度奇偶校验码的软位翻转解码器 | |
US11190212B1 (en) | Dynamic control of quasi-cyclic low-density parity-check bit-flipping decoder | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
CN113411086A (zh) | Ldpc解码器及其操作方法 | |
CN111538621B (zh) | 针对位线故障的软芯片猎杀恢复 | |
US11139831B2 (en) | Fast fail support for error correction in non-volatile memory | |
CN114649047A (zh) | 具有高度可变节点的低密度奇偶校验码的译码 | |
US11206043B2 (en) | Bit-flipping decoder architecture for irregular quasi-cyclic low-density parity-check codes | |
CN112331244B (zh) | 广义低密度奇偶校验码的软输入软输出分量代码解码器 | |
US11456757B2 (en) | Oscillation detection and mitigation in bit-flipping decoders | |
US11265015B2 (en) | Out-of-order processing for bit-flipping decoders in non-volatile memory devices | |
CN112562772B (zh) | 自适应低密度奇偶校验硬解码器 | |
CN115482866A (zh) | 基于存储器装置中先前读取尝试的参数估计 | |
US20240103727A1 (en) | Out-of-order bit-flipping decoders for non-volatile memory devices | |
TWI837354B (zh) | 廣義低密度同位檢查碼的軟輸入軟輸出組件碼解碼器 | |
US11967970B2 (en) | Bit-flipping decoder and decoding method for irregular codes | |
US11881869B1 (en) | Asymmetric bit errors in low-density parity-check codes for non-volatile memory devices | |
CN113496752B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN112530506A (zh) | 减少基于校验子的准循环解码器的延迟 | |
CN113223599A (zh) | Ldpc解码器、ldpc解码器的操作方法以及半导体存储器系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |