CN117331743A - 一种译码方法、芯片及相关装置 - Google Patents

一种译码方法、芯片及相关装置 Download PDF

Info

Publication number
CN117331743A
CN117331743A CN202210723134.0A CN202210723134A CN117331743A CN 117331743 A CN117331743 A CN 117331743A CN 202210723134 A CN202210723134 A CN 202210723134A CN 117331743 A CN117331743 A CN 117331743A
Authority
CN
China
Prior art keywords
bit
check
bit sequence
data
sequence
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.)
Pending
Application number
CN202210723134.0A
Other languages
English (en)
Inventor
邢炯跃
吴庭伊
韩永祥
白铂
张弓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210723134.0A priority Critical patent/CN117331743A/zh
Priority to PCT/CN2023/098056 priority patent/WO2023246473A1/zh
Publication of CN117331743A publication Critical patent/CN117331743A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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

Abstract

本申请提供了一种译码方法、芯片及相关装置,通过引入阈值判断机制,使得控制器芯片可以同时进行比特不满足校验方程的个数的计算和比特翻转过程,降低控制器芯片的译码时延,提升译码吞吐率。同时,优化了控制器芯片计算每个比特不满足校验方程的个数的算法,降低正确的比特被错误翻转的概率,进而降低译码的错误平层。

Description

一种译码方法、芯片及相关装置
技术领域
本申请涉及芯片技术领域,尤其涉及一种译码方法、芯片及相关装置。
背景技术
固态硬盘(solid state drive,SSD)是由固态电子储存芯片阵列而制成的硬盘,SSD包括控制单元和储存单元。固态硬盘采用的储存介质为闪存颗粒(例如NAND颗粒)。固态硬盘的优点是启动,读取时间快,不需要寻址,能够直接读取资料,不会影响读取时间。
衡量SSD存储设备的性能通常会考虑它在NAND颗粒上的读取速度和设备的使用寿命。其中,读取速度取决于纠错算法的译码速度(或者吞吐率),设备的使用寿命取决于纠错算法的极限译码性能。如何提高SSD的读取速度和使用寿命,是亟待解决的问题。
发明内容
本申请提供了一种译码方法、芯片及相关装置,实现了降低正确的比特被错误翻转的概率,同时降低了控制器芯片的译码时延,提升译码吞吐率。
第一方面,本申请提供了一种译码方法,方法包括:读取第一比特序列,并获取到第一比特序列的检验矩阵H,其中,第一比特序列包含n个比特数据;在第一次迭代过程中,基于第一比特序列和检验矩阵H,得到第一校正子S1;在第一校正子S1不是全0的情况下,芯片基于第一比特序列、第一校正子S1,确定出第一比特序列中每个比特数据不满足检验矩阵H中校验方程的第一数量;在第一比特序列中第一比特数据不满足检验矩阵H中校验方程的第一数量大于等于第一阈值T1的情况下,将第一比特数据翻转,得到第二比特序列;在第二次迭代过程中,在得到第二比特序列后,基于第二比特序列和检验矩阵H,得到第二校正子S2;在第二校正子S2不是全0的情况下,基于第二比特序列、第二校正子S2、第一正则项,得到第二比特序列中每个比特数据不满足检验矩阵H中校验方程的第二数量,其中第一正则项小于等于0;在第二比特序列中第二比特数据不满足检验矩阵H中校验方程的第二数量大于等于第一阈值T2的情况下,将第二比特数据翻转,得到第三比特序列;在得到第三比特序列后,基于第三比特序列和检验矩阵H,得到第三校正子S3;在第三校正子S3是全0的情况下,输出第三比特序列。
这样,一直循环,直至校正子为全0,或者达到最大迭代次数。
通过第一方面的方法,一方面,优化了控制器芯片计算每个比特不满足校验方程的个数的算法,降低正确的比特被错误翻转的概率,进而降低译码的错误平层。另一方面,引入阈值判断机制,使得控制器芯片可以同时进行比特不满足校验方程的个数的计算和比特翻转过程,降低控制器芯片的译码时延,提升译码吞吐率。再一方面,提出了随机序列生成器,对满足翻转条件的比特赋予一定的概率限制翻转。降低了同一个比特因重复翻转而陷入无限循环的情况发生。降低控制器芯片的译码时延,提升译码吞吐率。
结合第一方面,在一种可能的实现方式中,方法还包括:在第三次迭代过程中,在第三校正子S3不是全0的情况下,基于第三比特序列、第二校正子S2、第二正则项,得到第三比特序列中每个比特数据不满足检验矩阵H中校验方程的第三数量,其中第二正则项小于等于0;在第三比特序列中第三比特数据不满足检验矩阵H中校验方程的第三数量大于等于第三阈值T3的情况下,将第三比特数据翻转,得到第四比特序列;在得到第四比特序列后,基于第四比特序列和检验矩阵H,得到第四校正子S4;在第四校正子S4是全0的情况下,输出第三比特序列。这样,一直循环,直至校正子为全0,或者达到最大迭代次数。
结合第一方面,在一种可能的实现方式中,在第一比特数据在第一比特序列中位置和第二比特数据在第二比特序列中位置相同的情况下,第一正则项小于0。这样,优化了控制器芯片计算每个比特不满足校验方程的个数的算法,降低正确的比特被错误翻转的概率,进而降低译码的错误平层。
可选的,在第一比特数据在第一比特序列中位置和第二比特数据在第二比特序列中位置不同的情况下,第一正则项等于0。
结合第一方面,在一种可能的实现方式中,第一比特数据在第一比特序列中位置、第二比特数据在第二比特序列中位置和第三比特数据在第三比特序列中位置相同的情况下,第二正则项等于第一正则项,第二正则项小于0。这样,若同一个比特数据呗连续翻转,则在计算该比特数据不满足校验方程的个数时,加上小于0的正则项,降低被重复翻转的概率。
结合第一方面,在一种可能的实现方式中,在第二比特数据在第二比特序列中位置和第三比特数据在第三比特序列中位置不同的情况下,第二正则项的值为0。
结合第一方面,在一种可能的实现方式中,在将第一比特数据翻转的同时,方法还包括:在第一比特序列中第四比特数据不满足检验矩阵H中校验方程的第一数量大于等于第一阈值T1的情况下,第四比特数据翻转,得到第二比特序列。这样,引入阈值判断机制,使得控制器芯片可以同时进行比特不满足校验方程的个数的计算和比特翻转过程,降低控制器芯片的译码时延,提升译码吞吐率。
结合第一方面,在一种可能的实现方式中,基于检验矩阵H确定出第一阈值T1。
结合第一方面,在一种可能的实现方式中,在得到第二比特序列之后,在将第二比特数据翻转之前,方法还包括:基于每个比特数据不满足检验矩阵H中校验方程的第一数量和预设的每个比特数据不满足检验矩阵H中校验方程的最大数量,得到每个比特数据不满足检验矩阵H中校验方程的第四数量;芯片确定出每个比特数据不满足检验矩阵H中校验方程的第一数量和每个比特数据不满足检验矩阵H中校验方程的第四数量中的最大值为第二阈值T2。这样,在每次翻转之后,需更新阈值T。
结合第一方面,在一种可能的实现方式中,基于Ej 1=dvj+1-Ej确定出每个比特数据不满足检验矩阵H中校验方程的第四数量;其中,Ej 1表示每个比特数据不满足检验矩阵H中校验方程的第四数量,dvj表示预设的每个比特数据不满足检验矩阵H中校验方程的最大数量,Ej表示每个比特数据不满足检验矩阵H中校验方程的第一数量。
结合第一方面,在一种可能的实现方式中,将第一比特数据翻转,具体包括:基于第一概率值和第一随机序列生成器得到第一数字序列;其中,第一数字序列中包括的元素数量与第一比特序列中被翻转的比特数据的数量相同,第一数字序列中元素的取值为0或1,第一数字序列中元素的取值为1的比例为第一概率值;第一比特数据在第一比特序列中的位置提出了随机序列生成器,对满足翻转条件的比特赋予一定的概率限制翻转。降低了同一个比特因重复翻转而陷入无限循环的情况发生。降低控制器芯片的译码时延,提升译码吞吐率。对应在第一数字序列中的位置对应的元素的取值为1时,将第一比特数据翻转。
结合第一方面,在一种可能的实现方式中,在第一校正子S1是全0的情况下,输出第一比特序列。
结合第一方面,在一种可能的实现方式中,在第二校正子S2是全0的情况下,输出第二比特序列。
第二方面,本申请提供了一种芯片,芯片包括处理电路和接口电路,接口电路用于接收代码指令并传输至处理电路,处理电路用于运行代码指令以执行上述任一方面任一可能的实现方式中提供的一种译码方法。
第三方面,本申请提供了一种译码装置,译码装置包括芯片、存储器;存储器用存储第一比特序列,芯片用于从存储器中读取第一比特序列,执行上述任一方面任一可能的实现方式中提供的一种译码方法。
第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在芯片上运行时,使得芯片执行上述任一方面任一可能的实现方式中提供的一种译码方法。
第五方面,本申请提供了一种计算机程序产品,当计算机程序产品被芯片执行时,使得芯片执行上述任一方面任一可能的实现方式中提供的一种译码方法。
附图说明
图1为本申请实施例提供的一种多级译码算法的方法示意图;
图2为本申请实施例提供的一种GDBF算法的原理示意图;
图3为本申请实施例提供的一种Tanner图的示意图;
图4为本申请实施例提供的一种示意图;
图5为本申请实施例提供的一种NAND介质的SSD存储系统;
图6为本申请实施例提供的一种SSD控制器芯片的纠错过程示意图;
图7为本申请实施例提供的一种LDPC码译码方法示意图;
图8为本申请实施例提供的一种随机序列生成器生成的0-1的数字序列的示意图;
图9为本申请实施例提供的另一种多级译码算法的方法示意图;
图10为本申请实施例提供的一种译码方法的示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
为了保证吞吐率和使用寿命,当前的控制器芯片通常会采用多级译码算法。
图1示例性示出了多级译码算法的方法示意图。
示例性的,多级译码算法可以是,第一级译码算法为比特翻转(bit flipping,BF)译码算法,第二级译码算法为硬判决归一化最小和(normalized min sum,NMS)译码算法,第三级译码算法为软判决NMS译码算法。
S101、控制器芯片从NAND颗粒读取存储数据。
S102、控制器芯片基于比特翻转译码算法进行译码。
控制器芯片基于比特翻转译码算法进行译码,且译码成功后,控制器芯片将输出正确的存储数据,译码结束。
若控制器芯片基于比特翻转译码算法译码失败后,控制器芯片将执行下一级译码算法。
S103、控制器芯片基于硬判决NMS译码算法进行译码。
控制器芯片基于硬判决NMS译码算法进行译码,且译码成功后,控制器芯片将输出正确的存储数据,译码结束。
若控制器芯片基于硬判决NMS译码算法译码失败后,控制器芯片将执行下一级译码算法。
S104、控制器芯片基于软判决NMS译码算法进行译码。
控制器芯片基于软判决NMS译码算法进行译码,且译码成功后,控制器芯片将输出正确的存储数据,译码结束。
若控制器芯片基于软判决NMS译码算法译码失败后,则译码结束,控制器芯片无法恢复得到正确的存储数据。
上述多级译码算法,NAND介质在使用初期出错概率低,为了提升吞吐率,控制器芯片优先采用比特翻转译码算法进行译码,比特翻转译码算法的译码速度极快,但是纠错能力有限。随着擦写循环次数的增多和数据存储过程中单元的电荷泄露,NAND介质的出错概率将会变大。此时比特翻转译码算法译码失败的可能性也增大,无法恢复得到正确的存储数据。为了延长SSD设备的使用寿命,控制器芯片将会启动具备更强纠错能力但译码时延更长的硬判决NMS译码算法直至软判决NMS译码算法。
因此,SSD的读取速度主要取决于比特翻转译码算法,即提高比特翻转译码算法的译码速度,SSD的使用寿命主要取决于延长比特翻转译码算法进入硬判决NMS译码算法和软判决NMS译码算法的时间,即需要提高比特翻转译码算法的纠错能力,比特翻转译码算法的纠错能力越强,用到硬判决NMS译码算法和软判决NMS译码算法的时间越少,SSD的使用寿命就越长。
比特翻转译码算法可以是基于梯度下降的比特翻转(gradient descent bitflipping,GDBF)算法。
接下来介绍GDBF算法的实现原理。
图2示例性示出了GDBF算法的原理示意图。
GDBF算法包括以下步骤:
S201、控制器芯片从NAND颗粒读取存储数据r。
首先,控制器芯片读取存储数据r,存储数据r可以是长度为n的比特序列,存储数据r可以表示为(r0,r1,r2,r3,r4,r5,…,rn-1)。
S202、控制器芯片基于存储数据r和校验矩阵H计算校正子Si。
S203、校正子Si为全0?
是,则执行S204,此次译码正确,输出存储数据r。否,则执行S205。
S205、达到最大迭代次数?
是,则执行S206,此次译码失败,译码流程结束。否,则执行S207。
接下来介绍控制器芯片如何计算校正子Si。
控制器芯片获取到存储数据的校验矩阵H,校验矩阵为m行n列的矩阵,且校验矩阵中的元素为0或1,校验矩阵H的长度与存储数据r的长度相同。校验矩阵H是一个稀疏矩阵,即校验矩阵中非零元素个数远远小于零元素个数。正确的存储数据c满足H*cT=0,经过信道传输后,正确的比特序列c受到噪声等干扰,容易产生误码,所以接收到的信息为r。那么,H*rT=0将不再成立。需要通过译码找出r中存在的误码,并纠正。直到满足H*rT=0或者达到设定的最大迭代次数。H*rT的值可以理解为校正子。
其中,校验矩阵中第i行中元素1所在的位置集合可以表示为C(i),C(i)的度可以表示为dci,dci表示第i行中元素为1的个数。校验矩阵中第j列中元素1所在的位置集合可以表示为V(j),V(j)的度可以表示为dvj,dvj表示第j列中元素为1的个数。
在一种可能的实现方式中,控制器芯片可以计算存储数据r的校正子,并判断校正子的值是否均为0。若校正子的值均为0,则译码正确,控制器芯片输出正确的译码信息。若校正子的值不是均为0,则译码错误。若译码错误,控制器芯片需确定出译码错误的比特位,并将该比特位进行翻转。具体翻转的方式为:若该比特位上的数值为0,则将0变为1;若该比特位上的数值为1,则将1变为0。
控制器芯片可以基于检验矩阵H和存储数据r计算存储数据r中每一个比特的校正子。
校正子的计算公式如公式(1)所示。
如公式(1)所示,Si表示示存储数据r中第i个比特的校正子的值,Si的取值为0或1。基于公式(1),控制器芯片可以计算出存储数据r中每一个比特的校正子,存储数据r的校正子可以表示为S(S0,S1,S2,S3,S4……Sm-1)。在第一计算过程中,等于rj
若S为全0,则此次译码正确,控制器芯片输出译码信息。若S不为全0,则此次译码有误,控制器芯片需确定出译码错误的位置。
S207、控制器芯片计算每个比特不满足校验方程的个数,并确定出不满足校验方程的个数最多的比特。
S208、控制器芯片将不满足校验方程的个数最多的比特位翻转。
在译码错误的情况下,控制器芯片需确定出译码错误的位置。译码错误的位置即为不满足校验方程的个数最多的比特位。
控制器芯片可以基于存储数据r和校正子,确定出译码错误的位置。控制器芯片可以计算每个比特j的能量,可以基于公式(1)定出每个比特的能量值。每个比特的能量值也可以被称为每个比特不满足校验方程的个数。
如公式(2)所示,Ej表示比特j的能量,符号表示异或运算。比特j的能量可以理解为比特j不满足校验方程的个数。比特不满足校验方程的个数越多,则该比特的不可靠性越高,比特j不满足校验方程的个数越少,则该比特的不可靠性越低。
控制器芯片在确定出每个比特j不满足校验方程的个数后,确定出不满足校验方程的最多的比特j。之后,控制器芯片基于公式(3)将该比特翻转。
如公式(3)所示,控制器芯片在确定出不满足校验方程的最多的比特j之后,控制器芯片将该比特位进行翻转,即若该比特位的值为1,则将该比特位的值由1翻转为0。若该比特位的值为0,则将该比特位的值由1翻转为1。
基于上述S202-S208,确定出译码错误的位置。直至迭代次数达到了最大次数,退出译码流程,此次译码失败。或者在校正子的值为全0的情况下,则说明此次译码正确,此次译码成功并结束,控制器芯片输出正确的译码结果
接下来,先结合具体的例子对上述实施例介绍的如何何计算校正子以及如何计算每个比特不满足校验方程的个数的原理进行详细的说明,以便更容易理解后续的实施例。
首先,控制器芯片读取存储数据r,存储数据r可以是长度为n的比特序列。然后低密度奇偶校验(low density parity check,LDPC)译码器可以将比特序列作为第0次变量节点到校验节点的信息,或者,LDPC译码器可以根据比特序列确定第0次变量节点到校验节点的信息。
在迭代过程中,根据Tanner图,LDPC译码器可以首先对每个校验节点进行校验节点更新,对校验节点进行更新可以是对校验节点进行迭代,对校验节点进行迭代可以是获取迭代的校验节点传递给变量节点的信息。然后根据校验节点的迭代结果对每个变量节点进行变量节点更新,对变量节点进行更新可以是对变量节点进行迭代,对变量节点进行迭代可以是获取迭代的变量节点传递给校验节点的信息,然后可以根据变量节点的更新结果对校验节点进行更新,校验节点的更新结果再对变量节点进行更新。如此反复多次迭代,以达到迭代终止条件。
在每次对校验节点和/或变量节点进行更新后,LDPC译码器可以利用每次更新后的变量节点和/或每次更新后的校验节点进行迭代终止条件的判断。如果基于每次更新后的变量节点和/或每次更新后的校验节点确定满足迭代终止条件(例如校正子为全0),则译码流程结束,从最后一次迭代的变量节点和校验节点中确定译码结果。如果每次更新后的变量节点和/或每次更新后的校验节点不满足迭代终止条件。则进入下次的迭代流程,直到达到最大的迭代次数。
Tanner提出了用图模型来描述码字的概念,从而将LDPC码的校验矩阵对应到被成为Tanner图的双向二部图上,采用Tanner图构造的LDPC码,通过并行译码可以显著地降低译码复杂度。
Tanner图是一种表示LDPC码的双向图。Tanner图包含两类顶点:n个码字比特节点(也可以称为比特节点),分别与校验矩阵的各列对应;m个校验方程顶点(也可以成为校验节点),分别与校验矩阵的各行对应。Tanner图表示的可以是LDPC码的校验矩阵,其校验矩阵的每行表示一个校验方程,每列代表一个码字比特。校验矩阵中为1的元素,表示Tanner图中比特节点和校验节点之间存在连接边,这条边可称为两端节点的相邻边,相邻边两端的节点可以称为相邻节点,每个节点的相邻边数可以称为该节点的度数。
举例来说,存储数据(也可以被称为比特序列/>)可以表示为(r0,r1,r2,r3,r4,r5,r6,r7,r8,r9)。假设比特序列/>具体为(1,0,0,0,0,0,0,0,0),LDPC码的校验矩阵H如公式(4)所示:
则比特序列r必然满足线性方程组H*rT=0。通过信道传输后,LDPC译码器接收到的比特序列r=(r0,r1,r2,r3,r4,r5,r6,r7,r8,r9)可能包含错误,因此H*rT=0不再成立,需要根据译码法找出存在的误码位置并纠正。请参见图3,图3是本申请实施例提供的一种Tanner图的示意图。从图3可以看出,X0,X1,…,X9称为变量节点,代表10个比特,它们是译码器待求解的未知变量。图中的f0,f1,f2,f3,f4称为校验节点,代表线程方程组中的每一个校验方程。校验矩阵H中为“1”的元素,表示Tanner图中变量节点和校验节点之间的连线。
译码迭代过程是在变量节点和校验节点之间传递信息,在tanner图中,当变量节点和校验节点之间存在连线时,变量节点和校验节点之间可以传递信息。LDPC译码器可以将比特序列Y作为第0次变量节点到校验节点的信息,或者,LDPC可以根据比特序列Y确定第0次变量节点到校验节点的信息。也即,对于校验节点f0来说,可以接收到变量节点X0,X1,X2,X5,X6和X9传递来的信息。同理,对于校验节点f1来说,可以接收到变量节点X0,X2,X4,X5,X7和X8传递来的信息;对于校验节点f2来说,可以接收到变量节点X2,X3,X4,X6,X8和X9传递来的信息;对于校验节点f3来说,可以接收到变量节点X1,X3,X4,X5,X7和X9传递来的信息;对于校验节点f4来说,可以接收到变量节X0,X1,X3,X6,X7和X8传递来的信息。每个校验节点对接收到的信息进行处理后,将处理得到的信息传递给与其相邻的变量节点。也即,对于变量节点X0来说,可以接收到校验节点f0、f1和f4传递来的信息;对于变量节点X1来说,可以接收到校验节点f0、f3和f4传递来的信息;对于变量节点X2来说,可以接收到校验节点f0、f1和f2传递来的信息;对于变量节点X3来说,可以接收到校验节点f2、f3和f4传递来的信息;对于变量节点X4来说,可以接收到校验节点f1、f2和f3传递来的信息;对于变量节点X5来说,可以接收到校验节点f0、f1和f3传递来的信息;对于变量节点X6来说,可以接收到校验节点f0、f2和f4传递来的信息;对于变量节点X7来说,可以接收到校验节点f1、f3和f4传递来的信息;对于变量节点X8来说,可以接收到校验节点f1、f2和f4传递来的信息;对于变量节点X9来说,可以接收到校验节点f0、f2和f3传递来的信息。随后,每个变量节点再将得到的信息进行处理。最后,将处理得到的信息进行译码判决,如果满足比特序列的校正子为全0则结束译码,否则如此反复多次迭代,直到达到设定的最大迭代次数。
接下来结合公式(4)所示的校验方程,和比特序列r,介绍控制器芯片如何计算得到每个比特不满足校验方程的个数和校正子的。
如公式(4)所示的校验方程所示,基于公式(4)所示的校验方程,可以得到校验矩阵H中第0行中元素1所在的位置集合可以表示C(0)={0,1,2,5,6,9}。
校验矩阵H中第1行中元素1所在的位置集合可以表示C(1)={0,2,4,5,7,8}。
校验矩阵H中第2行中元素1所在的位置集合可以表示C(2)={2,3,4,6,8,9}。
校验矩阵H中第3行中元素1所在的位置集合可以表示C(3)={1,3,4,5,7,9}。
校验矩阵H中第4行中元素1所在的位置集合可以表示C(4)={0,1,3,6,7,8}。
其中,C(0)、C(1)、C(2)、C(3)和C(4)中各个数字表示校验矩阵H每一行中元素1的位置。
基于C(0)、C(1)、C(2)、C(3)和C(4),可以得到校验矩阵H每一行中元素1的个数,即C(i)的度,C(i)的度可以表示为d ci。
其中,dc(0)=dc(1)=dc(2)=dc(3)=dc(4)=6。
如公式(4)所示的校验方程所示,基于公式(4)所示的校验方程,可以得到校验矩阵H中第0列中元素1所在的位置集合可以表示V(0)={0,1,4}。
校验矩阵H中第1列中元素1所在的位置集合可以表示V(1)={0,3,4}。
校验矩阵H中第2列中元素1所在的位置集合可以表示V(2)={0,1,2}。
校验矩阵H中第3列中元素1所在的位置集合可以表示V(3)={2,3,4}。
校验矩阵H中第4列中元素1所在的位置集合可以表示V(4)={1,2,3}。
校验矩阵H中第5列中元素1所在的位置集合可以表示V(5)={0,1,3}。
校验矩阵H中第6列中元素1所在的位置集合可以表示V(6)={0,2,4}。
校验矩阵H中第7列中元素1所在的位置集合可以表示V(7)={0,3,4}。
校验矩阵H中第8列中元素1所在的位置集合可以表示V(8)={1,2,4}。
校验矩阵H中第9列中元素1所在的位置集合可以表示V(9)={0,2,3}。
其中,V(0)、V(1)、V(2)、V(3)、V(4)、V(5)、V(6)、V(7)、V(8)、V(9)中各个数字表示校验矩阵H每一列中元素1的位置。
基于V(0)、V(1)、V(2)、V(3)、V(4)、V(5)、V(6)、V(7)、V(8)、V(9),可以得到校验矩阵H每一列中元素1的个数,即V(j)的度,V(j)的度可以表示为dvj。其中,dvj也可以表示第j个比特不满足校验方程的最大数量。
其中,dv(0)=dv(1)=dv(2)=dv(3)=dv(4)=dv(5)=dv(6)=dv(7)=dv(8)=dv(9)=3。可以得知,比特序列中每一个比特不满足校验方程的最大数量为3。
假设比特序列基于公式(4)所示的校验方程H和比特序列/>通过公式/>可以得到校正子S,也可以通过公式(1)得到校正子S。
接下来介绍控制器芯片如何通过公式(1)得到校正子S的。
可以得到基于校验矩阵H和比特序列得到校子S=(11001),由于校正子S不是全0,则比特序列/>中存在错误的比特,控制器芯片需找到比特序列/>中错误的比特的位置,并将该错误比特进行翻转。
错误的比特的位置确认方法如下:控制器芯片分别计算每个比特不满足检验方程的个数,比特这种,不满足校验方程的个数最多的比特位错误的比特。基于公式(4)所示的校验方程H,可以确定出每一个列中,元素1的个数就是每个比特不满足检验方程最多的数量,可以得到,每个比特不满足检验方程的数量最多为3或者4。但是在实际计算中,每个比特不满足检验方程的数量小于等于3或者小于等于4。
控制器芯片可以基于前述公式(2)计算每个比特不满足检验方程的数量。
第0个比特不满足检验方程的数量为:
第1个比特不满足检验方程的数量为:
第2个比特不满足检验方程的数量为:
第3个比特不满足检验方程的数量为:
第4个比特不满足检验方程的数量为:
第5个比特不满足检验方程的数量为:
第6个比特不满足检验方程的数量为:
第7个比特不满足检验方程的数量为:
第8个比特不满足检验方程的数量为:
第9个比特不满足检验方程的数量为:
从E0至E9可以看出,最大值为E0,即第0个比特不满足校验方程的个数最多,控制器芯片可以确定出地0个比特为发生错误位置的比特,控制器芯片可以将地0个额比特按照公式(3)进行翻转,得到翻转后的比特序列,即将地0个比特由“1”变为“0”,翻转后的比特序列可以表示为
基于公式(4)所示的校验矩阵S和翻转后的比特序列再次计算校正子,若校正子为全0,则此次译码正确,输出翻转后的比特序列/>若校为正子非全0,则可以按照上述步骤在此计算翻转后的比特序列/>中,每个比特不满足校验方正的数量,再找到错误的比特位。基于此方法,若在某一次迭代过程中,校正子为全0,则此次译码正确,输出翻转后的比特序列。若在后续迭代过程汇总,校正子非全0,且达到了最大迭代次数,此次译码结束,且译码失败。
通过前述分析,可以得到图2示出的GDBF算法存在如下缺陷:
缺陷一:如图4所示,GDBF算法可能会落入无限循环,直至达到最大迭代次数,导致译码失败。具体的,控制器芯片可能在一次比特翻转过程中,将两个正确的比特翻转,将两个这两个错误的比特翻转。在下一次比特翻转过程中,控制器芯片可能将两个正确的比特再次翻转,将两个错误的比特再次翻转。以此类推,控制器芯片可能无限次的重复翻转这两个正确的比特和这两个错误的比特。导致译码失败。
缺陷二:再出现如缺陷一所示的无限循环后,导致GDBF算法存在较高的错误平层,且随着原始比特错误率(raw bit error rate,RBER)的减小,不可纠正比特错误率(uncorrectable bit error rate,UBER)无法获得明显提升。
缺陷三:图2示出的GDBF算法,必须在计算完每个比特不满足校验方程的个数后,才可以基于不满足校验方程的个数最多的比特确认出可能译码错误的比特位,再将可能译码错误的比特位翻转。即计算每个比特满足校验方程的个数和比特位翻转过程不能同时进行,导致译码时延较高,降低了吞吐量。
基于上述分析,本申请实施例主要针对第一级译码,即比特翻转译码算法,通过优化比特翻转译码算法,提供一种高性能高吞吐率的比特翻转译码算法,提升SSD设备的使用寿命。
优化后的比特翻转译码算法,主要包括以下改进:
改进一:优化了控制器芯片计算每个比特不满足校验方程的个数的算法,降低正确的比特被错误翻转的概率,进而降低译码的错误平层。
改进二:引入阈值判断机制,使得控制器芯片可以同时进行比特不满足校验方程的个数的计算和比特翻转过程,降低控制器芯片的译码时延,提升译码吞吐率。
改进三:提出了随机序列生成器,对满足翻转条件的比特赋予一定的概率限制翻转。降低了同一个比特因重复翻转而陷入无限循环的情况发生。降低控制器芯片的译码时延,提升译码吞吐率。
对于改进一、改进二和改进三的具体介绍,将在后续实施例中详细介绍,本申请实施例在此不做赘述。
本发明应用的场景为各类基于NAND介质的SSD存储系统,本发明方案服务于SSD控制器芯片上的数据纠错模块,保证存储信息读取过程的可靠性,延长存储设备的使用寿命等。本方案可适用于使用低密度奇偶校验(low density parity check,LDPC)码作为纠错码的SSD产品中。产品包括但不限于电脑设备、移动终端、高性能服务器、数据中心等设备。高性能服务器产品可包括应用于OceanStor Dorado存储、OceanStor 5000F存储等服务器产品。
图5示例性示出了本申请实施例提供的一种NAND介质的SSD存储系统。
该处处系统包括但不仅限于主机(host)、host接口、SSD控制器、SSD NAND接口以及多个NAND颗粒。
其中,NAND颗粒为一种存储介质,是一种非易失性储存器。
SSD NAND接口用于从NAND颗粒中读取数据或者写数据。
SSD控制器亦称主控芯片或主控,主要用于通过控制SSD NAND接口从NAND颗粒中读取数据或者写数据。
用户(host)用于通过SSD控制器来读取数据或者写数据。
如图5所示,用户可以通过Host接口和SSD控制器进行指令和数据传输,而SSD控制器则通过SSD NAND接口负责数据在NAND颗粒上的读写操作。即用户可以通过Host接口、SSD控制器和SSD NAND接口从NAND颗粒上读取数据。用户也可以通过Host接口、SSD控制器和SSD NAND接口向NAND颗粒上写数据。
图6示例性示出了SSD控制器芯片的纠错过程示意图。
SSD控制器芯片通过SSD NAND接口从NAND颗粒上读取数据,该读取的数据有可能是有误的,因此为了将正确的数据输出给用户,SSD控制器芯片需经过NAND错误检查和纠正编码(NAND error correcting code,NAND ECC)模块来译码,恢复出正确的数据。对于SSD控制器芯片如何进行纠错码,恢复出正确的数据的,将在后续实施例中详细介绍,本申请实施例在此不做赘述。
本申请以下实施例中,SSD控制器芯片也可以被简称为控制器芯片。
接下来介绍本申请实施例提供的LDPC码译码方法。
图7为本申请实施例提供的一种LDPC码译码方法示意图。
S701、控制器芯片从NAND颗粒读取存储数据r,令
首先,控制器芯片从NAND颗粒读取存储数据r。存储数据r可以是长度为n的比特序列,存储数据r也可以被称为比特序列r,比特序列r可以表示为(r0,r1,r2,r3,r4,r5,…,rn-1)。控制器芯片获取到存储数据的校验矩阵H,校验矩阵为m行n列的矩阵,且校验矩阵中的元素为0或1。校验矩阵H是一个稀疏矩阵,即校验矩阵中非零元素个数远远小于零元素个数。正确数据c满足H*cT=0,经过信道传输后,比特序列r受到噪声等干扰,容易产生误码,所以接收到的信息为那么,/>将不再成立。需要通过译码找出r中存在的误码。
在第一迭代运算之前,令比特序列
S702、控制器芯片基于存储数据和校验矩阵H计算校正子Si,并基于检验矩阵确定出阈值T。
控制器芯片基于校验矩阵H,可以得到每个比特不满足校验方程的最大数量,即校验矩阵H中,每一列中元素1的数量即为每个比特不满足校验方程的最大数量。也可以称为每个比特最大的度。每个比特又可以称为变量节点,因此又可以称为变量节点不满足校验方程的最大数量,或者变量节点最大的度。
如公式(5)所示,T表示所有比特中,不满足校验方程的最大数量。dvj表示第j个比特的度,即第j个比特不满足校验方程的最大数量,也可以说是校验矩阵H中第j列中元素1的数量。这样,控制器芯片在得到每个比特的度之后,从中选取最大的度作为阈值T。阈值T用于后续控制器芯片比较每个比特实际的不满足校验方程的数量和阈值T的大小。若比特实际的不满足校验方程的数量大于等于阈值T,则该比特为错误的比特位。若比特实际的不满足校验方程的数量小于阈值T,则该比特为正确的比特位。
其次,控制器芯片还需基于存储数据和校验矩阵H计算校正子Si。对于控制器芯片如何基于存储数据/>和校验矩阵H计算得到校正子Si的,可以参考前述实施例中的相关描述,本申请实施例在此不再赘述。
S703、校正子Si为全0?
是,则执行S704,此次译码正确,输出存储数据否,则执行S705。
S705、达到最大迭代次数?
是,则执行S706,此次译码失败,译码流程结束。否,则执行S707。
S707、控制器芯片计算每个比特不满足校验方程的个数,并进行比特翻转。其中, 并更新Ej1=dvj+1-Ej
在控制器芯片确定出校正子Si为非全0之后,控制器芯片需计算每个比特不满足检验方程的数量,基于每个比特不满足检验方程的数量和阈值T作比较,若比特不满足检验方程的数量小于阈值T,则该比特为正确的比特位。若比特不满足校验方程的数量大于等于阈值T,则该比特为错误的比特位。需要将该比特翻转。
在第一迭代运算时,控制器芯片可以基于公式(6)计算每个比特不满足检验方程的数量。
其中,如公式(6)所示,公式(6)与公式(2)的区别在于,公式(6)中计算比特不满足检验方程的数量的方式,增加了R(lj),其中R(lj)小于等于0,中间变量lj用来记录比特翻转影响的累积迭代次数,L为预设值,在一些实施例中,R(lj)也可以被称为正则项。若比特j翻转,则在下一次计算该比特不满足检验方程的数量时,更新lj=L,即在计算比特的Ej时,加上R(L),R(L)<0,使得该比特不满足检验方程的数量减少;若比特j不翻转,则在下一次计算该比特不满足检验方程的数量时,更新lj=max(lj-1,0)。其中,0=R(0)>R(1)>=R(2)>=R(3)…>=R(L)。
在一些实施例中,本申请实施例提供的优化比特不满足校验方程的数量的计算方法和并行化操作实现比特纠错算法,可以被称为正则项比特翻转(Regular Term BitFlipping,RTBF)算法。
例如,L=2。
示例性的,在第一次计算比特j不满足检验方程的数量(即得到Ej1)后,若确定出Ej1大于等于阈值T1时,则需将比特j进行翻转,在比特j被翻转一次之后,则在第二次计算该比特不满足检验方程的数量时,Ej2中R(lj)=R(L)=R(2),R(2)<0。若确定出Ej1小于阈值T1时,则比特j不用翻转,则在第二次计算该比特不满足检验方程的数量时,Ej2中R(lj)=R(0),R(0)=0。
在第二次计算比特j不满足检验方程的数量(即得到Ej2)后,在比特j已经被翻转过一次的情况下,若确定出Ej2大于等于阈值T2时,则需将比特j进行翻转,在比特j被翻转二次之后,则在第三次计算该比特不满足检验方程的数量时,Ej3中R(lj)=R(L)=R(2),R(2)<0。若确定出Ej3小于阈值T2时,则比特j不用翻转,则在第三次计算该比特不满足检验方程的数量时,Ej3中R(lj)=R(L-1)=R(1),0>R(1)>=R(2)。
在比特j没有被翻转过的情况下,若确定出Ej2大于等于阈值T2时,则需将比特j进行翻转,在比特j被翻转一次之后,则在第三次计算该比特不满足检验方程的数量时,Ej3中R(lj)=R(L)=R(2),R(2)<0。若确定出Ej2小于阈值T2时,则比特j不用翻转,则在第三次计算该比特不满足检验方程的数量时,Ej3中R(lj)=R(0)=0。
在第三次计算比特j不满足检验方程的数量(即得到Ej3)后,在比特j已经被翻转过二次的情况下,若确定出Ej3大于等于阈值T3时,则需将比特j进行翻转,在比特j被翻转三次之后,则在第四次计算该比特不满足检验方程的数量时,Ej4中R(lj)=R(L)=R(2),R(2)<0。若确定出Ej3小于阈值T3时,则比特j不用翻转,则在第四次计算该比特不满足检验方程的数量时,Ej4中R(lj)=R(L-1)=R(1),0>R(1)>=R(2)。
在比特j被翻转了一次和未被翻转一次之后,若确定出Ej3大于等于阈值T3时,则需将比特j进行翻转,在比特j被再次翻转一次之后,则在第四次计算该比特不满足检验方程的数量时,Ej4中R(lj)=R(L)=R(2),R(2)<0。若确定出Ej3小于阈值T3时,则比特j不用翻转,比特j在连续两次不被翻转之后,则在第四次计算该比特不满足检验方程的数量时,Ej4中R(lj)=R(1-1)=R(0)=0。
在第三次计算比特j不满足检验方程的数量(即得到Ej3)后,在比特j未被翻转一次和被翻转了一次之后,若确定出Ej3大于等于阈值T3时,则需将比特j进行翻转,在比特j被连续翻转二次之后,则在第四次计算该比特不满足检验方程的数量时,Ej4中R(lj)=R(L)=R(2),R(2)<0。若确定出Ej3小于阈值T3时,则比特j不用翻转,则在第四次计算该比特不满足检验方程的数量时,Ej4中R(lj)=R(L-1)=R(1),0>R(1)>=R(2)。
在比特j没有被翻转过的情况下,若确定出Ej3大于等于阈值T3时,则需将比特j进行翻转,在比特j被翻转一次之后,则在第四次计算该比特不满足检验方程的数量时,Ej4中R(lj)=R(L)=R(2),R(2)<0。若确定出Ej3小于阈值T3时,则比特j不用翻转,则在第四次计算该比特不满足检验方程的数量时,Ej4中R(lj)=R(0)=0。
需要说明的是,上述每一次迭代过程中,阈值T均会更新,具体的,可以参考后续实施例中的相关描述。
如果比特翻转,更新lj=,如果比特j发生翻转,那么在接下来的L次迭代过程中,在计算发生翻转的比特不满足检验方程的数量基础上增加一个非正数,比特j不满足检验方程的数量可能会减小,那么比特j被重复翻转的可能性也降低了。如果比特没有被翻转,则更新lj=max(lj-1,0),R(lj)=[0=R(0)>R(1)≥…≥R(L)],则该比特不满足校验方程的数量会逐渐增大,可以避免错误的比特没有被翻转的情况发生。
以此类推,当前比特发生翻转,那么在接下来的L次迭代过程中,该比特不满足校验方程的数量会被加上一个小于0的值,因此该比特相应的Ej也就变小了,即该比特不满足检验方程的数量也就变小了。当比特停止翻转后,该比特不满足校验方程的数量会被加上个小于0的值,且小于0的值逐渐增大,直至额外加的值(或者称为正则项)为0。
从上述过程可以看出,当前比特发生翻转,那么在接下来的L次迭代过程中,该比特不满足校验方程的数量会被加上一个小于0的值,因此该比特相应的Ej也就变小了,即该比特不满足检验方程的数量也就变小了。
这样,可以在计算每个比特不满足检验方程的数量时,如果比特j发生翻转,那么在接下来的L次迭代过程中,在计算发生翻转的比特不满足检验方程的数量基础上增加一个非正数,比特j不满足检验方程的数量可能会减小,那么比特j被重复翻转的可能性也降低了。这样,可以降低比特被重复反装的概率,达到了精细化控制比特翻转的效果。
并且,从S702和S707可以看出,阈值T在控制器芯片计算每个比特不满足检验方程的数量之前就被计算出来了,因此控制器芯片可以同时计算多个比特不满足检验方程的数量,并基于多个比特不满足检验方程的数量与阈值T的关系,同时判断是否需将多个比特翻转,即对于多个不同的比特,比特不满足检验方程的数量的计算过程和比特翻转过程可以同步进行。与之前的实施例相比,控制器芯片不需要在分别计算出每个比特不满足检验方程的数量之后,再基于每个比特不满足检验方程的数量确定出将哪几个比特进行翻转,提高了控制器芯片的纠错效率,较少了译码时延,提高了译码效率。
在第一迭代运算中,控制器芯片基于公式(6)得到每一个比特不满足检验方程的数量。若比特不满足检验方程的数量大于等于阈值T1,则控制器芯片基于公式将该比特翻转,得到翻转后的比特序列。
在得到翻转后的比特序列后,每个比特不满足检验方程的数量也变了,因此控制器芯片需更新翻转之后每个比特不满足检验方程的数量。以便后续可以更新阈值T。
在第一迭代运算之后,控制器芯片可以基于公式(7)更新每个比特不满足校验方程的数量,即更新翻转之后每个比特不满足检验方程的数量。
Ej 1=dvj+1-Ej公式(7)
如公式(4)所示,Ej 1表示翻转之后,每个比特不满足检验方程的数量。Ej表示翻转之前,每个比特不满足检验方程的数量。控制器芯片可以基于翻转之前每个比特不满足检验方程的数量和每个比特最大的度,得到翻转之后每个比特不满足检验方程的数量。需要说明的是,公式(7)为控制器芯片估算得到的翻转之后每个比特不满足检验方程的数量,以便控制器芯片可以更新阈值T。
S708、控制器芯片更新阈值T,其中,T2=max{maxEj,maxEj 1}。
比特翻转之后,第j个比特不满足检验方程的数量可能会大于等于比特翻转之前,第j个比特不满足检验方程的数量。因此,控制器芯片需基于比特翻转之前,每个比特不满足检验方程的数量,和比特翻转之后,每个比特不满足检验方程的数量,从中找到最大值,作为阈值T的更新值,即阈值T2,阈值T2=max{maxEj,maxEj 1}。
在控制器芯片更新阈值T,得到阈值T2之后,控制器芯片继续执行S702,在第二次迭代过程中,控制器芯片只需基于翻转之后的比特数据和检验矩阵H计算校正子Si。不需再基于检验矩阵H确定出阈值T2,阈值T2在比特翻转之后已经被计算出来了。
之后的纠错过程,可以参考前述S703-S707中的描述,直至校正子为全0,则输出正确的译码结果。或者,达到最大迭代次数,此次译码失败。
可选的,在一些实施例中,控制器芯片还可以执行S709,S709包括以下内容。
控制器芯片基于随机序列生成器,对于满足翻转条件的比特,控制器芯片以一定的概率限制他反转,主要的作用在于进一步的缓解同一个比特重复翻转的情况发生,从而有效的降低了错误平层。
具体的,控制器芯片基于随机序列生成器和预设的概率值p,该概率p为0-1序列中出现0的概率。当随机序列生成器输出0时,满足翻转条件的比特不翻转。当随机序列生成器输出1时,满足翻转条件的比特翻转。0-1序列中元素0和元素1的数量与满足翻转条件的比特数据的数量相同。
示例性的,例如对于比特系列,共有10个比特,控制器芯片确定出10个比特中的第0个比特、第3个比特、第4个比特、第5个比特、第7个比特和第9个比特满足翻转条件,即一共有6个比特满足翻转条件。控制器芯片基于随机序列生成器和预设的概率值(例如50%),确定出6个比特中仅有3个比特需要翻转。随机序列生成器会生成6个包含0-1的数字序列,其中6个包含0-1的数字序列中,包含0元素数量为3,包含1元素的数量也为3。当随机序列生成器输出0元素时,控制器芯片控制当前满足翻转条件的比特不翻转。当随机序列生成器输出1元素时,控制器芯片控制当前满足翻转条件的比特翻转。
如图8所示,图8示例性示出了一种随机序列生成器生成的0-1的数字序列的示意图。
图8所示,在随机序列生成器输出第一个0时,控制器芯片控制满足翻转条件的第0个比特不翻转。在随机序列生成器输出第一个1时,控制器芯片控制满足翻转条件的第3个比特翻转。在随机序列生成器输出第二个0时,控制器芯片控制满足翻转条件的第4个比特不翻转。在随机序列生成器输出第三个0时,控制器芯片控制满足翻转条件的第5个比特不翻转。在随机序列生成器输出第二个1时,控制器芯片控制满足翻转条件的第7个比特翻转。在随机序列生成器输出第三个1时,控制器芯片控制满足翻转条件的第9个比特翻转。
按照此方式,控制器芯片可以控制满足翻转条件的比特翻转的数量,采用随机序列生成器降低陷阱集的影响,用0-1比例序列实现硬件友好的生成器。
在一些实施例中,本申请实施例在RTBF算法基础上提供的概率翻转算法,可以被称为正则项概率性比特翻转(Regular Term Probabilistic Bit Flipping,RTPBF)算法。
本申请实施例在于SSD控制器芯片的第一级译码方案,通过优化比特不满足校验方程的数量的计算方法、并行化操作和随机翻转机制三者的结合,有效地提升比特翻转译码的纠错能力和整体方案的吞吐率,延长了SSD存储设备的使用寿命。
表1对比了在不同的RBER下,GDBF算法、RTPF算法和RTPBF算法的纠错能力。
表1
RBER 0.005 0.0045 0.004 0.0035 0.003 0.0025 0.002
GDBF 5.39E-06 9.37E-07 1.08E-07 1.05E-08 4.81E-09 1.60E-09 5.62E-10
RTBF 5.90E-06 1.15E-06 7.20E-08 1.88E-09 2.74E-11 3.49E-12 1.32E-12
RTPBF 5.90E-06 1.11E-06 6.71E-08 2.04E-09 1.50E-11 9.60E-13 1.80E-13
如表1所示,现有的GDBF算法随着RBER的减小出现明显的错误平层(Error Floor)现象,本申请提出的RTBF算法和RTPBF算法在RBER=0.002时分别降低了两个量级(100倍)和三个量级(1000倍)的错误平层,降低了控制器芯片进入时延更长的第二/三级译码阶段的比例。
表2对比了在不同的RBER下,GDBF算法、RTPF算法和RTPBF算法的纠错的平均迭代次数。
表2
RBER 0.005 0.0045 0.004 0.0035 0.003 0.0025 0.002
GDBF 23.64 15.73 11.57 8.97 7.17 5.806 4.689
RTBF 23.33 15.295 11.054 8.781 7.285 6.128 5.023
RTPBF 23.38 15.302 11.053 8.782 7.284 6.128 5.015
表2对比了在不同的RBER下,GDBF算法、RTPF算法和RTPBF算法的纠错的平均迭代次数。本申请将比特不满足校验方程的数量的计算和比特翻转的并行化处理,因此总体的吞吐率可提升一倍。
在消费级SSD设备中通常采用准循环块大小为256的LDPC码,它的码长为18944,信息维度为17152,码率为0.905。为了满足产品吞吐率和使用寿命的需求,本发明实施例采用了三级译码结构,如图9所示。在NAND颗粒使用初期,读取数据的错误率RBER较低,控制器芯片将启动本发明技术方案中的RTBF译码,提供高速读数据的功能给用户。随着NAND颗粒的读写次数增加以及使用时间加长,读取数据的错误率将会变大,RTBF译码失败的比例也会变大,此时控制器芯片将启动第二级译码——硬判决NMS译码。由于第二级译码不需要读取软信息,它提供了一种纠错能力和译码时延的折中效果。如果第二级译码失败,那么控制器芯片需要从NAND颗粒中读取软信息,并再次进行前两级译码,如果这两级译码再次失败的话,那么软判决NMS译码将启动,利用更高精度和复杂度的算法来纠错,恢复数据给用户,但相应的译码时延也会变长,最后一级译码主要为了保障SSD设备的使用寿命。
图9为本申请实施例提供的另一种多级译码算法的方法示意图。
示例性的,多级译码算法可以是,第一级译码算法为RTBF算法,第二级译码算法为硬判决NMS算法,第三级译码算法为软判决NMS译码算法。
S901、控制器芯片从NAND颗粒读取存储数据。
S902、控制器芯片基于正则项比特翻转算法或者正则项概率性比特翻转进行译码。
控制器芯片基于RTBF算法或者RTPBF算法进行译码,且译码成功后,控制器芯片将输出正确的存储数据,即将译码得到的存储数据通过host接口传输给host。译码结束。
若控制器芯片基于RTBF算法或者RTPBF算法译码失败后,控制器芯片将执行下一级译码算法。
S903、控制器芯片基于硬判决NMS算法进行译码。
硬判决NMS算法和RTBF算法或者RTPBF算法使用的是相同的数据进行译码的。硬判决NMS算法和RTBF算法或者RTPBF算法,与软判决NMS算法使用的是不同的数据进行译码的。
控制器芯片基于硬判决NMS算法进行译码,且译码成功后,控制器芯片将输出正确的存储数据,即将译码得到的存储数据通过host接口传输给host,译码结束。
若控制器芯片基于硬判决NMS算法译码失败后,控制器芯片将执行下一级译码算法。同时,硬判决NMS算法向NAND颗粒发送读取软信息指令。
S904、控制器芯片在从NAND颗粒中获取到软信息后,基于软判决NMS算法进行译码。
控制器芯片基于软判决NMS算法进行译码,且译码成功后,即将译码得到的存储数据通过host接口传输给host,控制器芯片将输出正确的存储数据,译码结束。
若控制器芯片基于软判决NMS算法译码失败后,则译码结束,控制器芯片无法恢复得到正确的存储数据。
图10为本申请实施例提供的一种译码方法的示意图。
S1001、读取第一比特序列,并获取到第一比特序列的检验矩阵H,其中,第一比特序列包含n个比特数据。
S1002、基于第一比特序列和检验矩阵H,得到第一校正子S1。在第一校正子S1不是全0的情况下,基于第一比特序列、第一校正子S1,确定出第一比特序列中每个比特数据不满足检验矩阵H中校验方程的第一数量。在第一比特序列中第一比特数据不满足检验矩阵H中校验方程的第一数量大于等于第一阈值T1的情况下,第一比特数据翻转,得到第二比特序列。
在一种可能的实现方式中,在将第一比特数据翻转的同时,方法还包括:在第一比特序列中第四比特数据不满足检验矩阵H中校验方程的第一数量大于等于第一阈值T1的情况下,第四比特数据翻转,得到第二比特序列。这样,引入阈值判断机制,使得控制器芯片可以同时进行比特不满足校验方程的个数的计算和比特翻转过程,降低控制器芯片的译码时延,提升译码吞吐率。
在一种可能的实现方式中,基于检验矩阵H确定出第一阈值T1。
在一种可能的实现方式中,将第一比特数据翻转,具体包括:基于第一概率值和第一随机序列生成器得到第一数字序列;其中,第一数字序列中包括的元素数量与第一比特序列中被翻转的比特数据的数量相同,第一数字序列中元素的取值为0或1,第一数字序列中元素的取值为1的比例为第一概率值;第一比特数据在第一比特序列中的位置提出了随机序列生成器,对满足翻转条件的比特赋予一定的概率限制翻转。降低了同一个比特因重复翻转而陷入无限循环的情况发生。降低控制器芯片的译码时延,提升译码吞吐率。对应在第一数字序列中的位置对应的元素的取值为1时,将第一比特数据翻转。
在一种可能的实现方式中,在第一校正子S1是全0的情况下,输出第一比特序列。
S1003、在得到第二比特序列后,基于第二比特序列和检验矩阵H,得到第二校正子S2;在第二校正子S2不是全0的情况下,基于第二比特序列、第二校正子S2、第一正则项,得到第二比特序列中每个比特数据不满足检验矩阵H中校验方程的第二数量,其中第一正则项小于等于0。
在一种可能的实现方式中,在第一比特数据在第一比特序列中位置和第二比特数据在第二比特序列中位置相同的情况下,第一正则项小于0。这样,优化了控制器芯片计算每个比特不满足校验方程的个数的算法,降低正确的比特被错误翻转的概率,进而降低译码的错误平层。
可选的,在第一比特数据在第一比特序列中位置和第二比特数据在第二比特序列中位置不同的情况下,第一正则项等于0。
在一种可能的实现方式中,在第二校正子S2是全0的情况下,输出第二比特序列。
S1004、在第二比特序列中第二比特数据不满足检验矩阵H中校验方程的第二数量大于等于第二阈值T2的情况下,第二比特数据翻转,得到第三比特序列;在得到第三比特序列后,基于第三比特序列和检验矩阵H,得到第三校正子S3;在第三校正子S3是全0的情况下,输出第三比特序列。
在一种可能的实现方式中,在得到第二比特序列之后,在将第二比特数据翻转之前,方法还包括:基于每个比特数据不满足检验矩阵H中校验方程的第一数量和预设的每个比特数据不满足检验矩阵H中校验方程的最大数量,得到每个比特数据不满足检验矩阵H中校验方程的第四数量;芯片确定出每个比特数据不满足检验矩阵H中校验方程的第一数量和每个比特数据不满足检验矩阵H中校验方程的第四数量中的最大值为第二阈值T2。这样,在每次翻转之后,需更新阈值T。
在一种可能的实现方式中,基于Ej 1=dvj+1-Ej确定出每个比特数据不满足检验矩阵H中校验方程的第四数量;其中,Ej 1表示每个比特数据不满足检验矩阵H中校验方程的第四数量,dvj表示预设的每个比特数据不满足检验矩阵H中校验方程的最大数量,Ej表示每个比特数据不满足检验矩阵H中校验方程的第一数量。
在一种可能的实现方式中,方法还包括:在第三校正子S3不是全0的情况下,基于第三比特序列、第二校正子S2、第二正则项,得到第三比特序列中每个比特数据不满足检验矩阵H中校验方程的第三数量,其中第二正则项小于等于0;在第三比特序列中第三比特数据不满足检验矩阵H中校验方程的第三数量大于等于第三阈值T3的情况下,将第三比特数据翻转,得到第四比特序列;在得到第四比特序列后,基于第四比特序列和检验矩阵H,得到第四校正子S4;在第三校正子S4是全0的情况下,输出第三比特序列。这样,一直循环,直至校正子为全0,或者达到最大迭代次数。
在一种可能的实现方式中,第一比特数据在第一比特序列中位置、第二比特数据在第二比特序列中位置和第三比特数据在第三比特序列中位置相同的情况下,第二正则项等于第一正则项,第二正则项小于0。这样,若同一个比特数据呗连续翻转,则在计算该比特数据不满足校验方程的个数时,加上小于0的正则项,降低被重复翻转的概率。
在一种可能的实现方式中,在第二比特数据在第二比特序列中位置和第三比特数据在第三比特序列中位置不同的情况下,第二正则项的值为0。
这样,一直循环,直至校正子为全0,或者达到最大迭代次数。
通过第一方面的方法,一方面,优化了控制器芯片计算每个比特不满足校验方程的个数的算法,降低正确的比特被错误翻转的概率,进而降低译码的错误平层。另一方面,引入阈值判断机制,使得控制器芯片可以同时进行比特不满足校验方程的个数的计算和比特翻转过程,降低控制器芯片的译码时延,提升译码吞吐率。再一方面,提出了随机序列生成器,对满足翻转条件的比特赋予一定的概率限制翻转。降低了同一个比特因重复翻转而陷入无限循环的情况发生。降低控制器芯片的译码时延,提升译码吞吐率。
本申请还提供了一种芯片,芯片包括处理电路和接口电路,接口电路用于接收代码指令并传输至处理电路,处理电路用于运行代码指令以执行图10实施例提供的一种译码方法。
本申请还提供了一种译码装置,译码装置包括芯片、存储器;存储器用存储第一比特序列,芯片用于从存储器中读取第一比特序列,执行图10实施例提供的一种译码方法。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在芯片上运行时,使得芯片执行图10实施例提供的一种译码方法。
本申请还提供了一种计算机程序产品,当计算机程序产品被芯片执行时,使得芯片执行图10实施例提供的一种译码方法。
本申请的各实施方式可以任意进行组合,以实现不同的技术效果。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solidstate disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
总之,以上所述仅为本发明技术方案的实施例而已,并非用于限定本发明的保护范围。凡根据本发明的揭露,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种译码方法,其特征在于,所述方法包括:
读取第一比特序列,并获取到所述第一比特序列的检验矩阵H,其中,所述第一比特序列包含n个比特数据;
基于所述第一比特序列和所述检验矩阵H,得到第一校正子S1;
在所述第一校正子S1不是全0的情况下,基于所述第一比特序列、所述第一校正子S1,确定出所述第一比特序列中每个比特数据不满足所述检验矩阵H中校验方程的第一数量;
在所述第一比特序列中第一比特数据不满足所述检验矩阵H中校验方程的第一数量大于等于第一阈值T1的情况下,将所述第一比特数据翻转,得到第二比特序列;
在得到所述第二比特序列后,基于所述第二比特序列和所述检验矩阵H,得到第二校正子S2;
在所述第二校正子S2不是全0的情况下,基于所述第二比特序列、所述第二校正子S2、第一正则项,得到所述第二比特序列中每个比特数据不满足所述检验矩阵H中校验方程的第二数量,其中所述第一正则项小于等于0;
在所述第二比特序列中第二比特数据不满足所述检验矩阵H中校验方程的第二数量大于等于第一阈值T2的情况下,将所述第二比特数据翻转,得到第三比特序列;
在得到所述第三比特序列后,基于所述第三比特序列和所述检验矩阵H,得到第三校正子S3;
在所述第三校正子S3是全0的情况下,输出所述第三比特序列。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第三校正子S3不是全0的情况下,基于所述第三比特序列、所述第二校正子S2、第二正则项,得到所述第三比特序列中每个比特数据不满足所述检验矩阵H中校验方程的第三数量,其中所述第二正则项小于等于0;
在所述第三比特序列中第三比特数据不满足所述检验矩阵H中校验方程的第三数量大于等于第三阈值T3的情况下,将所述第三比特数据翻转,得到第四比特序列;
在得到所述第四比特序列后,基于所述第四比特序列和所述检验矩阵H,得到第四校正子S4;
在所述第三校正子S4是全0的情况下,输出所述第三比特序列。
3.根据权利要求1或2所述的方法,其特征在于,在所述第一比特数据在所述第一比特序列中位置和所述第二比特数据在所述第二比特序列中位置相同的情况下,所述第一正则项小于0。
4.根据权利要求2所述的方法,其特征在于,所述第一比特数据在所述第一比特序列中位置、所述第二比特数据在所述第二比特序列中位置和所述第三比特数据在所述第三比特序列中位置相同的情况下,所述第二正则项等于所述第一正则项,且所述第二正则项小于0。
5.根据权利要求2或4所述的方法,其特征在于,在所述第二比特数据在所述第二比特序列中位置和所述第三比特数据在所述第三比特序列中位置不同的情况下,所述第二正则项的值为0。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述将所述第一比特数据翻转的同时,所述方法还包括:
在所述第一比特序列中第四比特数据不满足所述检验矩阵H中校验方程的第一数量大于等于所述第一阈值T1的情况下,所述第四比特数据翻转,得到所述第二比特序列。
7.根据权利要求1-6任一项所述的方法,其特征在于,基于所述检验矩阵H确定出所述第一阈值T1。
8.根据权利要求1-6任一项所述的方法,其特征在于,在得到第二比特序列之后,在将所述第二比特数据翻转之前,所述方法还包括:
基于所述每个比特数据不满足所述检验矩阵H中校验方程的第一数量和预设的每个比特数据不满足所述检验矩阵H中校验方程的最大数量,得到每个比特数据不满足所述检验矩阵H中校验方程的第四数量;
所述芯片确定出所述每个比特数据不满足所述检验矩阵H中校验方程的第一数量和所述每个比特数据不满足所述检验矩阵H中校验方程的第四数量中的最大值为所述第二阈值T2。
9.根据权利要求8所述的方法,其特征在于,基于Ej 1=dvj+1-Ej确定出所述每个比特数据不满足所述检验矩阵H中校验方程的第四数量;其中,所述Ej 1表示所述每个比特数据不满足所述检验矩阵H中校验方程的第四数量,dvj表示所述预设的每个比特数据不满足所述检验矩阵H中校验方程的最大数量,Ej表示所述每个比特数据不满足所述检验矩阵H中校验方程的第一数量。
10.根据权利要求1-9任一项所述的方法,其特征在于,将所述第一比特数据翻转,具体包括:
基于第一概率值和第一随机序列生成器得到第一数字序列;其中,所述第一数字序列中包括的元素数量与所述第一比特序列中被翻转的比特数据的数量相同,所述第一数字序列中元素的取值为0或1,所述第一数字序列中所述元素的取值为1的比例为所述第一概率值;
所述第一比特数据在所述第一比特序列中的位置对应在所述第一数字序列中的位置对应的元素的取值为1时,将所述第一比特数据翻转。
11.根据权利要求1-10任一项所述的方法,其特征在于,在所述第一校正子S1是全0的情况下,输出所述第一比特序列。
12.根据权利要求1-11所述的方法,其特征在于,在所述第二校正子S2是全0的情况下,输出所述第二比特序列。
13.一种芯片,其特征在于,所述芯片包括处理电路和接口电路,所述接口电路用于接收代码指令并传输至所述处理电路,所述处理电路用于运行所述代码指令以执行如权利要求1-12任一项所述的方法。
14.一种译码装置,其特征在于所述译码装置包括芯片、存储器;所述存储器用存储第一比特序列,所述芯片用于从所述存储器中读取所述第一比特序列,执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于所述计算机可读存储介质中存储有指令,当所述指令在芯片上运行时,使得所述芯片执行如权利要求1-12任一项所述的方法。
16.一种计算机程序产品,其特征在于,当所述计算机程序产品被芯片执行时,使得所述芯片执行如权利要求1-12任一项所述的方法。
CN202210723134.0A 2022-06-24 2022-06-24 一种译码方法、芯片及相关装置 Pending CN117331743A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210723134.0A CN117331743A (zh) 2022-06-24 2022-06-24 一种译码方法、芯片及相关装置
PCT/CN2023/098056 WO2023246473A1 (zh) 2022-06-24 2023-06-02 一种译码方法、芯片及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210723134.0A CN117331743A (zh) 2022-06-24 2022-06-24 一种译码方法、芯片及相关装置

Publications (1)

Publication Number Publication Date
CN117331743A true CN117331743A (zh) 2024-01-02

Family

ID=89281722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210723134.0A Pending CN117331743A (zh) 2022-06-24 2022-06-24 一种译码方法、芯片及相关装置

Country Status (2)

Country Link
CN (1) CN117331743A (zh)
WO (1) WO2023246473A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117713839A (zh) * 2024-02-05 2024-03-15 极芯通讯技术(安吉)有限公司 Rm译码及结果校验方法、装置、设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9203432B2 (en) * 2012-08-28 2015-12-01 Marvell World Trade Ltd. Symbol flipping decoders of non-binary low-density parity check (LDPC) codes
CN103281090B (zh) * 2013-05-29 2017-02-22 华南理工大学 混合修正加权比特翻转的ldpc译码算法
CN103888148B (zh) * 2014-03-20 2016-10-26 山东华芯半导体有限公司 一种动态阈值比特翻转的ldpc码硬判决译码方法
TWI543178B (zh) * 2014-06-10 2016-07-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
EP3540949A1 (en) * 2018-03-13 2019-09-18 Universite De Bretagne Sud Bit flipping decoding for ldpc codes
CN109560819A (zh) * 2018-11-21 2019-04-02 南京大学 一种通用于ldpc码比特翻转译码算法的翻转准则
CN110572164B (zh) * 2019-09-29 2023-02-10 深圳忆联信息系统有限公司 Ldpc译码方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
WO2023246473A1 (zh) 2023-12-28

Similar Documents

Publication Publication Date Title
US8880987B2 (en) Checksum using sums of permutation sub-matrices
US11005499B2 (en) LDPC decoder, semiconductor memory system, and operating method thereof
US9529666B2 (en) Decoding method, memory storage device and memory controlling circuit unit
US8385117B2 (en) Semiconductor memory device and decoding method
US8250437B2 (en) Memory system and control method for the same
US8645810B2 (en) Fast detection of convergence or divergence in iterative decoding
US10103749B2 (en) LDPC decoder, semiconductor memory system and operating method thereof
US9189322B2 (en) Memory system
US10445175B2 (en) Controller and operating method thereof
US8751895B2 (en) Semiconductor memory device and decoding method
US9342404B2 (en) Decoding method, memory storage device, and memory controlling circuit unit
US20110072331A1 (en) Memory system and control method for the same
US9973213B2 (en) Decoding method, and memory storage apparatus and memory control circuit unit using the same
US10103748B2 (en) Decoding method, memory control circuit unit and memory storage device
US10707902B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
US10879935B2 (en) LDPC decoder, semiconductor memory system, and operating method thereof
US9274891B2 (en) Decoding method, memory storage device, and memory controlling circuit unit
US11139832B1 (en) LDPC decoder and operating method thereof
US10200063B2 (en) Memory controller, semiconductor memory system and operating method thereof
US20170214415A1 (en) Memory system using integrated parallel interleaved concatenation
US10846170B2 (en) Decoder, operating method thereof and memory system including the decoder
WO2023246473A1 (zh) 一种译码方法、芯片及相关装置
US10700708B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
US11163639B2 (en) Memory system and method for controlling nonvolatile memory
US20210279133A1 (en) Memory system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication