位翻转解码器中的振荡检测和缓解的制作方法
1.本专利文件通常涉及非易失性存储器装置,并且更具体地,涉及非易失性存储器装置中的错误校正。
背景技术:
2.数据完整性是任何数据存储装置和数据传输的重要特征。建议对包括nand闪速存储器装置的各种类型的数据存储装置使用强健的错误校正码(ecc)。
3.固态驱动器(ssd)使用多级nand闪存装置以进行永久存储。然而,多级nand闪存装置本质上可能是不可靠的,并且通常需要使用ecc来大幅提高数据可靠性,代价是用于ecc奇偶校验位的额外的存储空间。需要更有效的解码方法,其可以提供具有改进的解码性能的数据保护。
技术实现要素:
4.所公开的技术的实施例涉及通过检测振荡并且缓解振荡来提高与非易失性存储器相关联的位翻转解码器的解码性能。检测和缓解位翻转解码器中的振荡降低了位翻转解码器的故障率,从而提高了非易失性存储器的吞吐量和读取qos(服务质量)。
5.在示例方面,描述了一种用于提高位翻转解码器的解码性能的方法。该方法包括:接收基于传输码字的噪声码字,该传输码字是根据低密度奇偶校验(ldpc)码生成的;对噪声码字执行第一多次解码迭代,第一多次解码迭代中的至少一次解码迭代包括以第一顺序执行消息传递算法;基于第一多次解码迭代的完成来计算与第一多次解码迭代相对应的多个校验和值以及多个位翻转计数;确定多个校验和值以及多个位翻转计数是周期性的,周期小于预定阈值(t);并且对噪声码字执行后续解码迭代,后续解码迭代包括以与第一顺序不同的第二顺序执行消息传递算法。
6.在又一示例方面,上述方法可以由联接到存储器的处理器来实施。
7.在又一示例方面,这些方法可以以存储在计算机可读程序介质上的、处理器可运行的指令的形式来体现。
8.本专利文件中描述的主题可以以提供下列特征中的一个或多个的特定方式来实施。
附图说明
9.图1示出存储器系统的示例。
10.图2是示例性非易失性存储器装置的示图。
11.图3是示出非易失性存储器装置的单元电压电平分布(v
th
)的示例图。
12.图4是示出非易失性存储器装置的单元电压电平分布(v
th
)的另一示例图。
13.图5是示出编程干扰之前和之后的非易失性存储器装置的单元电压电平分布(v
th
)的示例图。
14.图6是示出非易失性存储器装置的、作为参考电压的函数的单元电压电平分布(v
th
)的示例图。
15.图7示出用于振荡检测和缓解的流程图。
16.图8示出用于提高与非易失性存储器相关联的位翻转解码器的解码性能的示例方法的流程图。
具体实施方式
17.固态驱动器(ssd)是计算机中使用的新一代存储装置。ssd通过使用明显更快的基于闪存的存储器来取代传统的机械硬盘。ssd由于其低读取访问时间和快吞吐量,显著加快了计算机的速度。ssd可以被配置为使用非规则准循环低密度奇偶校验(qc-ldpc)码来校正从nand介质读取的页面中的任何位错误。qc-ldpc码用于确保使用新一代nand闪速存储器的存储器系统中的数据完整性。用于ldpc码的迭代解码器,特别是用于非规则qc-ldpc码的解码器,通常具有广泛的复杂性。两种主要类型的解码器是错误校正能力低的低复杂度位翻转(bf)解码器和错误校正能力高的高复杂度最小和(ms)解码器。
18.对于典型的ssd应用,大多数页面读取(超过99%)由位翻转解码器进行。因此,设计用于表现出改进的收敛特性的快速且有效的位翻转(bf)解码器的硬件至关重要,尤其是在移动和客户端ssd应用中,因为它们具有严格的功率限制和吞吐量要求。
19.本文件首先概述了可以实施位翻转解码器以对非规则qc-ldpc码进行解码的非易失性存储器系统的示例,然后描述了通过例如计算不规则qc-ldpc码中的前一数量的循环列上的位翻转次数并且随后更新位翻转阈值来提高位翻转解码器的解码性能的方法、系统和装置。
20.图1-图6概述了可以实施所公开技术的实施例的非易失性存储器系统(例如,基于闪存的存储器或nand闪存)。
21.图1是基于所公开技术的一些实施例实施的存储器系统100的示例的框图。存储器系统100包括存储器模块110,存储器模块110可以用于存储供其它电子装置或系统使用的信息。存储器系统100可以被并入其它电子装置和系统中(例如,位于电路板上)。可选地,存储器系统100可以被实施为诸如usb闪存驱动器和固态驱动器(ssd)的外部存储装置。
22.存储器系统100中包括的存储器模块110可以包括存储器区域(例如,存储器阵列)102、104、106和108。可以在单个存储器管芯或多个存储器管芯中包括存储器区域102、104、106和108中的每一个。可以在集成电路(ic)芯片中包括存储器管芯。
23.存储器区域102、104、106和108中的每一个包括多个存储器单元。可以基于存储器元件(memory unit)来执行读取操作、编程操作或擦除操作。因此,每个存储器元件可以包括预定数量的存储器单元。可以在单个存储器管芯或多个存储器管芯中包括存储器区域102、104、106或108中的存储器单元。
24.存储器区域102、104、106和108中的每一个中的存储器单元可以按行和列布置在存储器元件中。存储器元件中的每一个可以是物理元件。例如,一组多个存储器单元可以形成存储器元件。存储器元件中的每一个也可以是逻辑元件。例如,存储器元件可以是块或页面,该块或页面可以分别由诸如块地址或页面地址之类的唯一地址来识别。再例如,其中存储器区域102、104、106和108可以包括计算机存储器,该计算机存储器包括存储器组
(memory bank)作为数据存储的逻辑元件,存储器元件可以是可以通过组地址来识别的组。在读取操作或写入操作期间,与特定存储器元件相关联的唯一地址可以用于访问该特定存储器元件。基于唯一地址,可以将信息写入该特定存储器元件中的一个或多个存储器单元或从该特定存储器元件中的一个或多个存储器单元检索信息。
25.存储器区域102、104、106和108中的存储器单元可以包括非易失性存储器单元。非易失性存储器单元的示例包括:闪速存储器单元、相变随机存取存储器(pram)单元、磁阻随机存取存储器(mram)单元或其它类型的非易失性存储器单元。在存储器单元被配置为nand闪速存储器单元的示例实施方式中,可以基于页面来执行读取操作或写入操作。然而,nand闪速存储器中的擦除操作是基于块来执行的。
26.非易失性存储器单元中的每一个可以被配置为单层单元(slc)或多层存储器单元。单层单元可以每单元存储一位信息。多层存储器单元可以每单元存储多于一位的信息。例如,存储器区域102、104、106和108中的存储器单元中的每个可以被配置为每单元存储两位信息的多层单元(mlc)、每单元存储三位信息的三层单元(tlc)或每单元存储四位信息的四层单元(qlc)。在另一示例中,存储器区域102、104、106和108中的存储器单元中的每个可以被配置为存储至少一位信息(例如,一位信息或多位信息),并且存储器区域102、104、106和108中的存储器单元中的每个可以被配置为存储多于一位的信息。
27.如图1所示,存储器系统100包括控制器模块120。控制器模块120包括用于与存储器模块110通信的存储器接口121、用于与主机(未示出)通信的主机接口126、用于运行固件层代码的处理器124以及分别临时或永久存储可运行固件/指令和相关联的信息的缓冲器/高速缓存123和系统存储器122。在一些实施方式中,控制器单元120可以包括错误校正码(ecc)引擎125,以对存储器模块110中存储的信息执行错误校正操作。错误校正码引擎125可以被配置为检测/校正单个位错误或多个位错误。在另一实施方式中,错误校正码引擎125可以位于存储器模块110中。
28.主机可以是包括一个或多个处理器的装置或系统,这些处理器进行操作以从存储器系统100检索数据或将数据存储或写入到存储器系统100。在一些实施方式中,主机的示例可以包括个人计算机(pc)、便携式数字装置、数码相机、数字多媒体播放器、电视和无线通信装置。
29.在一些实施方式中,控制器模块120还可以包括主机接口126,以与主机通信。主机接口126可以包括符合主机接口规范中的至少一种的组件,主机接口规范包括但不限于串行高级技术附件(sata)、串列小型计算机系统接口(sas)规范、高速外围组件互连(pcie)。
30.图2示出基于所公开技术的一些实施例实施的存储器单元阵列的示例。
31.在一些实施方式中,存储器单元阵列可以包括被划分为许多块的nand闪速存储器阵列,并且每个块包括一定数量的页面。每个块包括多个存储器单元串,并且每个存储器单元串包括多个存储器单元。
32.在存储器单元阵列是nand闪速存储器阵列的一些实施方式中,基于页面来执行读取操作和写入(编程)操作,并且基于块来执行擦除操作。在对块中包括的任何页面执行编程操作之前,必须同时擦除相同块内的所有存储器单元。在实施方式中,nand闪速存储器可以使用偶数/奇数位线结构。在另一实施方式中,nand闪速存储器可以使用全位线(all-bit-line)结构。在偶数/奇数位线结构中,偶数位线和奇数位线沿着每个字线交错并且被
交替访问,以便每对偶数位线和奇数位线可以共享诸如页面缓冲器之类的外围电路。在全位线结构中,所有位线被同时访问。
33.图3示出多层单元装置中的阈值电压分布曲线的示例,其中每个编程/擦除状态的单元的数量被绘制为阈值电压的函数。如图3所示,阈值电压分布曲线包括具有最低阈值电压的擦除状态(表示为“er”并且对应于“11”),以及三个编程状态(表示为“p1”、“p2”和“p3”,分别对应于“01”、“00”和“10”),读取电压位于这些状态之间(由虚线表示)。在一些实施例中,由于存储器阵列间的材料特性的差异,编程/擦除状态的阈值电压分布中的每一个具有有限的宽度。
34.尽管图3通过示例的方式示出多层单元装置,但是存储器单元中的每一个可以被配置为每单元存储任意数量的位。在一些实施方式中,存储器单元中的每一个可以被配置为每单元存储一位信息的单层单元(slc),或被配置为每单元存储三位信息的三层单元(tlc),或被配置为每单元存储四位信息的四层单元(qlc)。
35.在将多于一个数据位写入存储器单元时,由于相邻分布之间的距离减小,因此需要精细地设置存储器单元的阈值电压电平。这是通过使用增量步进脉冲编程(ispp)来实现的,即,使用向字线施加阶梯式编程电压的编程和验证方法来对相同字线上的存储器单元进行重复编程。每个编程状态与在验证操作中使用的验证电压相关联,并且设置每个阈值电压分布窗口的目标位置。
36.阈值电压分布的失真或重叠可能导致读取错误。由于例如编程和擦除(p/e)循环、单元间干扰和数据保留错误,理想的存储器单元阈值电压分布可能显著失真或重叠(这将在下面进行讨论),并且在大多数情况下,可以通过使用错误校正码(ecc)来管理这些读取错误。
37.图4示出理想的阈值电压分布曲线410的示例和失真的阈值电压分布曲线420的示例。纵轴表示具有在横轴上表示的特定阈值电压的存储器单元的数量。
38.对于n位多层单元nand闪速存储器,可以将每个单元的阈值电压编程为2n个可能的值。在理想的多层单元nand闪速存储器中,每个值对应于非重叠的阈值电压窗口。
39.闪速存储器p/e循环对单元晶体管的电荷捕获层的浮栅的隧道氧化物造成损坏,这导致阈值电压偏移,从而逐渐降低存储器装置噪声裕量(margin)。随着p/e循环的增加,不同编程状态的相邻分布之间的裕量减小,并且最终分布开始重叠。阈值电压被编程在相邻分布的重叠范围内的存储器单元中存储的数据位可能被误判断为不同于原始目标值的值。
40.图5示出nand闪速存储器中的单元间干扰的示例。单元间干扰还可能导致闪存单元的阈值电压失真。一个存储器单元晶体管的阈值电压偏移可以通过干扰单元与受影响单元(victim cell)之间的寄生电容耦合效应来影响其相邻存储器单元晶体管的阈值电压。单元间干扰的量可能受nand闪速存储器位线结构的影响。在偶数/奇数位线结构中,一条字线上的存储器单元交替连接到偶数位线和奇数位线,并且在相同的字线中,偶数单元在奇数单元之前被编程。因此,偶数单元和奇数单元受到不同量的单元间干扰。全位线结构中的单元受到的单元间干扰比偶数/奇数位线结构中的偶数单元受到的单元间干扰少,并且全位线结构可以有效支持高速电流感测,以提高存储器读取和验证速度。
41.图5中的虚线表示所考虑的单元的p/e状态(在编程干扰之前)的标称分布,“相邻
状态值”表示相邻状态已被编程为的值。如图5所示,如果相邻状态被编程为p1,则所考虑的单元的阈值电压分布偏移特定量。然而,如果相邻状态被编程为具有比p1更高的阈值电压的p2,则与相邻状态为p1相比,这导致更大的偏移。类似地,当相邻状态被编程为p3时,阈值电压分布的偏移最大。
42.图6通过将正常的阈值电压分布和偏移的阈值电压分布进行比较来示出nand闪速存储器中的保留错误的示例。nand闪速存储器中存储的数据倾向于随着时间的推移而损坏,这被称为数据保留错误。保留错误由单元晶体管的浮栅或电荷捕获层中存储的电荷丢失导致。由于浮栅或电荷俘获层的磨损,具有较多编程擦除循环的存储器单元更容易出现保留错误。在图6的示例中,顶行的电压分布(在损坏之前)与底行的分布(被保留错误污染)的比较显示出向左偏移。
43.位翻转解码器一般用作对非易失性存储器装置中的ldpc码字进行解码的第一步(例如,如图1-图6中所述),使得可以利用快速、低功率的解码器对大部分读取流量进行解码。然而,对于某些错误模式,位翻转解码器在解码期间可能卡住(或停顿),例如,由于达到某一错误模式并且然后重复翻转同一组或同一系列的位。在这些情况下,每次迭代中的校验和以及翻转位的数量开始振荡。
44.根据所公开技术的一些实施例,方法、系统和装置通过检测和缓解在解码过程期间可能发生的振荡来提高用于ldpc码的位翻转解码器实施方式的解码性能。本文中描述的实施例也适用于准循环ldpc(qc-ldpc)码。
45.准循环码由以下性质定义:对于整数n0,码字每循环移位n0个位置还是码字。对于系统的(n=mn0,k=mk0)准循环线性码,相应的奇偶校验矩阵h被表示为:
[0046][0047]
在本文中,n表示码的长度,k表示码的秩(对应于其基(basis)中的码字的数量和其生成矩阵中的行的数量),m表示循环矩阵的大小,k0是基于n,m和n0的值的整数,i
n-k
代表(n-k)
×
(n-k)单位矩阵,并且每个c
′
i,j
是以下形式的m
×
m循环矩阵(大小为circulantsize或circsize):
[0048][0049]
与所有列具有相等的列权重(例如,每列具有相同数量的1)的准循环码相反,非规则准循环码的至少两个列具有不同数量的1,即至少两个列具有不同的权重。
[0050]
规则和不规则ldpc码都可以使用坦纳(tanner)图表示,tanner图包括一组节点(或顶点)和连接节点的一组边。与m
×
n奇偶校验矩阵相对应的tanner图包括m个变量节点
(或位节点)和n个校验节点(或校验和节点),并且提供其所对应的奇偶校验矩阵的图形表示。ldpc码(规则或不规则)的性能和解码基于奇偶校验矩阵的行权重和列权重,或者相等地,基于tanner图形表示中的循环。
[0051]
在位翻转算法中,在每次迭代时并且对于每个变量节点,将不满意(unsatisfied)的校验节点的数量与阈值进行比较,如果不满意的校验节点的数量大于阈值,则对变量节点的硬判决估计量进行翻转。在现有的实施方式中,位翻转解码器通常使用在每次迭代中对变量节点的处理顺序固定的预定调度算法。然而,一些错误模式可能对固定的处理顺序敏感,因为如果某个错误模式引起振荡,则在每次迭代中对变量节点使用相同的处理顺序无法避免振荡并且导致解码操作不成功。
[0052]
当发生这种错误时,所公开技术的实施例可以使用一个或多个解码器参数(例如,翻转位的数量、校验和等)来检测振荡。在示例中,由于变量节点的振荡,翻转位的数量和校验和的值以一定周期进行重复。在这种情况下,位翻转解码器可以被配置为使用随机化顺序来处理变量节点,从而使解码器能够避免振荡以提高解码性能。
[0053]
在一些实施例中,因为确定解码器参数的周期(t)可能需要额外的硬件,因此仅在振荡的周期小于预定阈值的情况下才可以实现随机化顺序。在示例中,t≤10。
[0054]
对于大多数错误模式,位翻转检测器中的振荡是由变量节点的处理顺序引起的。因此,改变变量节点的翻转顺序可以帮助解码器避免振荡。然而,在传统的非易失性存储器(例如,图1-图6中描述的示例实施方式)中,由于运行位翻转解码器的状态机的复杂性增加,通过改变硬件设计来改变变量节点的处理顺序实际上不可行。
[0055]
在不改变硬件设计的情况下改变位翻转解码器中的变量节点的翻转顺序的有效技术是对已经被位翻转解码器配置为翻转的位进行随机翻转。也就是说,解码器以一定概率接受翻转位的判决,从而在其中拒绝位翻转判决中的一些。然而,这种类型的随机实施通常会减慢位翻转解码器的速度。
[0056]
所公开技术的实施例仅当检测到振荡时才使用随机判决来接受或拒绝位翻转判决,从而减少了吞吐量的任何损失。在示例中,当由于随机判决而跳过在振荡期间翻转的变量节点时,解码轨迹开始偏离先前的迭代。这有利地使解码器能够避免振荡,并且在再多几次的迭代中收敛到正确的码字。在一些实施例中,可以由需要最少的硬件资源的线性反馈移位寄存器(lfsr)以伪随机方式来生成随机判决。
[0057]
用于振荡检测和缓解的示例算法
[0058]
对于迭代的位翻转解码器,假设i(0≤i≤i
max
)表示迭代次数,表示第i次解码迭代的变量节点j的判决,是第i次解码迭代的判决向量,并且第i次迭代的校验子为第i次迭代的校验子为其中h是ldpc码的奇偶校验矩阵。
[0059]
进一步假设是用作初始判决向量的接收到的字,并且s
(-1)
=yh
t
是初始校验子向量。还假设以下符号:
[0060]-cs_arr[i]是第i次解码迭代的校验和;
[0061]-flip_num_arr[i]是第i次解码迭代的翻转位的数量;
[0062]-t是周期性阈值;
[0063]-p是解码器接受翻转判决的概率;以及
[0064]-是在第i次解码迭代中第j个循环列的翻转能量的阈值。用于振荡检测和缓解的示例算法包括:
[0065]
步骤0:设置i=0,curr_flip_bits=0,计算s
(-1)
,并且转到步骤1;
[0066]
步骤1:i=i+1,如果达到最大迭代,则停止解码。否则,转到步骤2;
[0067]
步骤2:如果|s|=0,则停止解码。否则,转到步骤3;
[0068]
步骤3:(振荡检测)
[0069]-存储cs_arr[i-1]=|s|,flip_num_arr[i-1]=cur_flip_bits。
[0070]-检查cs_arr和flip_num_arr是否都是周期性的(周期≤t)
[0071]-如果它们都是周期性的,则生成大小为n
circ
个位的伪随机数组p,使得p[j]=1的概率为p。
[0072]-否则,对于所有循环1≤j≤n
circ
,将p设置为1。
[0073]
步骤4:
[0074]-更新第j个循环列中的所有vn v的翻转能量e[v]。
[0075]-如果p[j]等于1
[0076]-翻转vn的硬判决估计量,翻转能量
[0077]-否则
[0078]-跳过第j个循环(振荡缓解)
[0079]-将翻转的位的数量添加到cur_flip_bits。
[0080]-计算并且更新s。
[0081]
步骤5:转到步骤1。
[0082]
图7示出用于振荡检测和缓解的方法的流程图。如在其中所示,方法700开始于操作710,其中i被设置为0,curr_flip_bits被设置为0,并且计算s
(-1)
=yh
t
,这对应于上述步骤0。
[0083]
在操作715中,i递增并且该方法通过在操作720中检查是否已经超过迭代的最大数量或者校验子是否为零来确定是否应该继续解码,这对应于上述步骤1和步骤2。
[0084]
如果已超过迭代的最大数量或校验子为零,则在操作790中位翻转解码器停止(720中的“否”分支)。否则,解码通过操作730继续(720中的“是”分支)。
[0085]
在操作730中,更新前一次迭代中的校验和(对于第i次解码迭代,表示为cs_arr[i])与翻转的数量(对于第i次解码迭代,表示为flip_num_arr[i],并且相当于位翻转的轨迹)。
[0086]
在操作740中,方法700检查轨迹是否是周期性的。在示例中,轨迹的周期性必须低于预定阈值。如果轨迹是周期性的(740中的“是”分支),则在操作742中,针对所有j将p[j]设置为随机数生成器(rng)生成的概率。另一方面,如果轨迹不是周期性的(740中的“否”分支),则在操作744中,针对所有j将p[j]设置为1。该方法继续进行操作746,其中当前翻转的位的数量(cur_flip_bits)和循环列索引(j)被设置为0。
[0087]
在操作750中,循环列索引(j)递增,并且在操作760中,该方法确定是否所有循环
列都已被处理,即,检查j是否小于或等于n
circ
(循环列的数量)。如果所有循环列都已被处理(760中的“否”分支),则算法开始下一次迭代(通过在操作715中使循环列索引i递增),但如果至少一个循环列尚未被处理(760中的“是”分支),则该方法继续到操作770。
[0088]
在操作770中,该方法检查第j个循环列的随机分配的概率是否等于0。如果是(770中的“是”分支),则随机判决过程将不会翻转与第j个变量节点相关联的位,并且该方法循环回到操作750以处理下一个循环列。然而,如果概率p[j]不为零(770中的“否”分支),则(i)为第j个循环中的所有变量节点v计算翻转能量e[v](操作780),(ii)对于所有v,其中对第j个循环中的位进行翻转(操作782),以及(iii)更新当前翻转位的数量(cur_flip_bits)和校验子向量。然后,方法700循环回到操作750以处理下一个循环列。
[0089]
在方法700中,操作730-760对应于上述步骤3,图7中所示的其余操作对应于上述步骤4和步骤5。
[0090]
在一些实施例中,用于振荡检测和缓解的示例算法(并且如图7所述)适用于ldpc码和qc-ldpc码两者。
[0091]
在一些实施例中,用于振荡检测和缓解的示例算法(并且如图7所述)适用于使用1位以上来存储每个变量节点的估计量的位翻转解码器。
[0092]
在一些实施例中,位数组用于存储在检测到振荡之后在迭代中翻转的循环列。在新周期开始时,其它循环列的p值保持为1,只有在整个周期期间翻转的变量节点才针对p数组中的该变量节点的相应元素使用伪随机位。
[0093]
图8示出基于检测和缓解振荡来提高与非易失性存储器相关联的位翻转解码器的解码性能的方法的流程图。方法800包括,在操作810,接收基于传输码字的噪声码字,所述传输码字是根据低密度奇偶校验(ldpc)码生成的。
[0094]
方法800包括,在操作820,对噪声码字执行第一多次解码迭代,第一多次解码迭代中的至少一次解码迭代包括以第一顺序执行消息传递算法。
[0095]
方法800包括,在操作830,基于第一多次解码迭代的完成,计算与第一多次解码迭代相对应的多个校验和值以及多个位翻转计数。
[0096]
方法800包括,在操作840,确定多个校验和值以及多个位翻转计数是周期性的,周期小于预定阈值(t)。
[0097]
方法800包括,在操作850,对噪声码字执行后续解码迭代,后续解码迭代包括以与第一顺序不同的第二顺序执行消息传递算法。
[0098]
在一些实施例中,第一多次解码迭代中的每次解码迭代包括在表示ldpc码的奇偶校验矩阵的多个变量节点和多个校验节点之间传递一个或多个消息。
[0099]
在一些实施例中,位翻转解码器使用两个或更多个位来存储针对多个变量节点中的每一个的估计。
[0100]
在一些实施例中,第一顺序包括在解码迭代中多个变量节点的第一解码顺序,第二顺序包括在解码迭代中多个变量节点的第二解码顺序。
[0101]
在一些实施例中,后续解码迭代包括对n个循环列中的每一个执行n次消息传递算法,n个循环列包括ldpc码的奇偶校验矩阵,n是整数。
[0102]
在一些实施例中,方法800进一步包括基于生成长度为n的位伪随机数组来确定第
二顺序的操作,其中位伪随机数组中的每个位具有值1的概率为p,并且其中第二顺序包括当位伪随机数组中的相应位具有值1时翻转位。
[0103]
在一些实施例中,p=0.8且t=10。
[0104]
在一些实施例中,方法800进一步包括以下操作:计算校验子,并且在确定已经执行了最大次数的迭代或校验子等于零时,避免在后续解码迭代之后执行位翻转解码器的额外的解码迭代。
[0105]
在一些实施例中,ldpc码是非规则qc-ldpc码。
[0106]
本专利文件中描述的主题和功能操作的实施方式可以在各种系统、数字电子电路中或在计算机软件、固件或硬件(包括本说明书中公开的结构及其等效结构)中或在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施方式可以被实施为一个或多个计算机程序产品,即,在有形和非暂时性计算机可读介质上编码以由数据处理设备运行或以控制数据处理设备的操作的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储装置、机器可读存储衬底、存储器装置、影响机器可读传播信号的物质组成,或者它们中的一个或多个的组合。术语“数据处理单元”或“数据处理设备”涵盖用于处理数据的所有设备、装置和机器,包括例如可编程处理器、计算机或者多个处理器或计算机。除了硬件之外,该设备还可以包括为讨论中的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
[0107]
计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以用包括编译或解释语言的任何形式的编程语言编写,并且可以以任何形式来部署,包括部署为独立程序或适合在计算环境中使用的模块、组件、子程序或其它单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其它程序或数据(例如,标记语言文档中存储的一个或多个脚本)的文件的一部分中、专用于讨论中的程序的单个文件中或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署为在一台计算机上或者位于一个地点或分布在多个地点并且通过通信网络互连的多台计算机上运行。
[0108]
本说明书中描述的过程和逻辑流可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,该可编程处理器通过对输入数据进行操作并且生成输出来执行功能。过程和逻辑流也可以由专用逻辑电路执行,并且设备也可以实施为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。
[0109]
适用于运行计算机程序的处理器包括,例如,通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本要素是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器装置。通常,计算机还包括用于存储数据的一个或多个大容量存储装置(例如,磁盘、磁光盘或光盘),或可操作地联接以从用于存储数据的一个或多个大容量存储装置(例如,磁盘、磁光盘或光盘)接收数据或向其传送数据,或者这两者。然而,计算机不需要有这种装置。适于存储计算机程序指令和数据的计算机可读媒质包括所有形式的非易失性存储器、媒质和存储器装置,包括例如半导体存储器装置,例如,eprom、eeprom和闪速存储器装置。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0110]
尽管本专利文件包括许多细节,但是这些细节不应解释为对任何发明或可以要求
保护的范围的限制,而应解释为对可能特定于特定发明的特定实施例的特征的描述。本专利文件中在不同实施例的背景下描述的某些特征也可以以组合的方式在单个实施例中实施。相反,在单个实施例的背景下所描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合实施。此外,尽管以上特征可以被描述为以某些组合的方式而起作用,甚至最初这样声称,但是可以在某些情况下,从组合中去除来自所声称的组合的一个或多个特征,从而所声称的组合可以指子组合或子组合的变型。
[0111]
类似地,尽管在附图中以特定顺序描述了操作,但是这不应被理解为要求按所示的特定顺序或按先后顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。此外,在本专利文件中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。
[0112]
仅描述了一些实现方案和示例,并且可以基于在本专利文件中描述和示出的内容得到其他实现方案、改进和变型。
技术特征:
1.一种提高与非易失性存储器相关联的位翻转解码器的解码性能的方法,包括:接收基于传输码字的噪声码字,所述传输码字是根据低密度奇偶校验码即ldpc码生成的;对所述噪声码字执行第一多次解码迭代,所述第一多次解码迭代中的至少一次解码迭代包括以第一顺序执行消息传递算法;基于所述第一多次解码迭代的完成,计算与所述第一多次解码迭代相对应的多个校验和值以及多个位翻转计数;确定所述多个校验和值以及所述多个位翻转计数是周期性的,周期小于预定阈值t;并且对所述噪声码字执行后续解码迭代,所述后续解码迭代包括以与所述第一顺序不同的第二顺序来执行所述消息传递算法。2.根据权利要求1所述的方法,其中,所述第一多次解码迭代中的每次解码迭代包括在表示所述ldpc码的奇偶校验矩阵的多个变量节点和多个校验节点之间传递一个或多个消息。3.根据权利要求2所述的方法,其中,所述位翻转解码器使用两个或更多个位来存储针对所述多个变量节点中的每个变量节点的估计。4.根据权利要求2所述的方法,其中,所述第一顺序包括解码迭代中的所述多个变量节点的第一解码顺序,并且其中所述第二顺序包括解码迭代中的所述多个变量节点的第二解码顺序。5.根据权利要求1所述的方法,其中,所述后续解码迭代包括对n个循环列中的每个循环列执行n次消息传递算法,所述n个循环列包括所述ldpc码的奇偶校验矩阵,并且其中n是整数。6.根据权利要求5所述的方法,进一步包括:基于生成长度为n的位伪随机数组来确定所述第二顺序,其中,所述位伪随机数组中的每个位具有值1的概率为p,并且其中所述第二顺序包括当所述位伪随机数组中的相应位具有值1时对位进行翻转。7.根据权利要求6所述的方法,其中,p=0.8且t=10。8.根据权利要求1所述的方法,进一步包括:计算校验子;并且在确定已经执行了最大次数的迭代或所述校验子等于零时,避免在所述后续解码迭代之后执行所述位翻转解码器的额外的解码迭代。9.根据权利要求1所述的方法,其中,所述ldpc码是非规则准循环低密度奇偶校验码即qc-ldpc码。10.一种提高与非易失性存储器相关联的位翻转解码器的解码性能的系统,包括:处理器和存储器,所述存储器包括存储在其上的指令,其中所述指令在由所述处理器运行时使所述处理器:接收基于传输码字的噪声码字,所述传输码字是根据非规则准循环低密度奇偶校验码即qc-ldpc码生成的;对所述噪声码字执行第一多次解码迭代,所述第一多次解码迭代中的至少一次解码迭
代包括以第一顺序执行消息传递算法;基于所述第一多次解码迭代的完成,计算与所述第一多次解码迭代相对应的多个校验和值以及多个位翻转计数;确定所述多个校验和值以及所述多个位翻转计数是周期性的,周期小于预定阈值t;并且对所述噪声码字执行后续解码迭代,所述后续解码迭代包括以与所述第一顺序不同的第二顺序执行所述消息传递算法。11.根据权利要求10所述的系统,其中,所述第一多次解码迭代中的每次解码迭代包括在表示所述qc-ldpc码的奇偶校验矩阵的多个变量节点和多个校验节点之间传递一个或多个消息。12.根据权利要求11所述的系统,其中,所述第一顺序包括解码迭代中的所述多个变量节点的第一解码顺序,并且其中所述第二顺序包括解码迭代中的所述多个变量节点的第二解码顺序。13.根据权利要求10所述的系统,其中,所述后续解码迭代包括对n个循环列中的每个循环列执行n次所述消息传递算法,所述n个循环列包括所述qc-ldpc码的奇偶校验矩阵,并且其中n是整数。14.根据权利要求13所述的系统,其中,所述指令在由所述处理器运行时配置所述处理器以:基于生成长度为n的位伪随机数组来确定所述第二顺序,其中所述位伪随机数组的每个位具有值1的概率为p,并且其中所述第二顺序包括当所述位伪随机数组中的相应位具有值1时对位进行翻转。15.根据权利要求14所述的系统,其中,p=0.8且t=10。16.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有用于提高与非易失性存储器相关联的位翻转解码器的解码性能的指令,所述指令包括:用于接收基于传输码字的噪声码字的指令,所述传输码字是根据准循环低密度奇偶校验码即qc-ldpc码生成的;用于对所述噪声码字执行第一多次解码迭代的指令,所述第一多次解码迭代中的至少一次解码迭代包括以第一顺序执行消息传递算法;用于基于所述第一多次解码迭代的完成,计算与所述第一多次解码迭代相对应的多个校验和值以及多个位翻转计数的指令;用于确定所述多个校验和值以及所述多个位翻转计数是周期性的指令,周期小于预定阈值t;以及用于对所述噪声码字执行后续解码迭代的指令,所述后续解码迭代包括以与所述第一顺序不同的第二顺序来执行所述消息传递算法。17.根据权利要求16所述的非暂时性计算机可读存储介质,其中,所述第一多次解码迭代中的每次解码迭代包括在表示所述qc-ldpc码的奇偶校验矩阵的多个变量节点与多个校验节点之间传递一个或多个消息,其中所述第一顺序包括解码迭代中的所述多个变量节点的第一解码顺序,并且其中所述第二顺序包括解码迭代中的所述多个变量节点的第二解码顺序。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中,所述位翻转解码器使用两个或更多个位来存储针对所述多个变量节点中的每个变量节点的估计。19.根据权利要求16所述的非暂时性计算机可读存储介质,其中,所述后续解码迭代包括对n个循环列中的每个循环列执行n次所述消息传递算法,所述n个循环列包括所述qc-ldpc码的奇偶校验矩阵,并且其中n是整数。20.根据权利要求19所述的非暂时性计算机可读存储介质,进一步包括:用于基于生成长度为n的位伪随机数组来确定所述第二顺序的指令,其中所述位伪随机数组中的每个位具有值1的概率为p,并且其中所述第二顺序包括当所述位伪随机数组中的对应位具有值1时对位进行翻转。
技术总结
本公开涉及用于检测和缓解与非易失性存储器相关联的位翻转解码器中的振荡的装置、系统和方法。示例方法包括:接收基于传输码字的噪声码字,该传输码字是根据低密度奇偶校验码生成的;对噪声码字执行第一多次解码迭代,第一多次解码迭代包括以第一顺序执行消息传递算法;基于第一多次解码迭代的完成,计算与第一多次解码迭代相对应的多个校验和值以及多个位翻转计数;确定多个校验和值和多个位翻转计数是周期性的,周期小于预定阈值;并且对噪声码字执行后续解码迭代,后续解码迭代包括以与第一顺序不同的第二顺序执行消息传递算法。与第一顺序不同的第二顺序执行消息传递算法。与第一顺序不同的第二顺序执行消息传递算法。
