CN114333964A - 用于存储器的纠错方法、装置、电子设备及介质 - Google Patents
用于存储器的纠错方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN114333964A CN114333964A CN202011054228.0A CN202011054228A CN114333964A CN 114333964 A CN114333964 A CN 114333964A CN 202011054228 A CN202011054228 A CN 202011054228A CN 114333964 A CN114333964 A CN 114333964A
- Authority
- CN
- China
- Prior art keywords
- data
- error
- memory
- bit information
- 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
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本公开提供了一种用于存储器的纠错方法,包括:将第一引导序列插入需要存储第一数据的预设位置,得到第二数据;对第二数据进行编码,得到含有校验位信息的第三数据;将第三数据在存储器中读写后,第一引导序列受噪音影响转变成第二引导序列,得到第四数据;利用第一引导序列替换第二引导序列,得到第五数据;根据奇偶校验矩阵及校验位信息对第五数据进行纠错。本公开还提供一种用于存储器的纠错装置、一种电子设备及介质。本公开通过引入引导序列,以及利用奇偶校验矩阵和生成的校验位信息进行纠错,提高了存储器的纠错能力。
Description
技术领域
本公开涉及的技术领域为通信领域和存储器差错控制领域,尤其涉及一种用于存储器的纠错方法、装置、电子设备及介质。
背景技术
NAND Flash存储密度及读写次数的增加会导致存储器原始误码率提高。过高的原始误码率限制了译码器的纠错性能,也限制了NAND Flash存储密度的提高。现有技术中提出了一种利用辅助消息编码以增强译码器纠错性能的方法,但是该方法不能保证辅助信息一定正确,所以对译码器纠错性能的提升效果波动较大。同时,存储器的写入和读取过程复杂,也无法估计存储器的原始误码率。
NAND Flash的读取有4种状态可选,使用何种状态取决于NAND Flash的原始误码率。在原始误码率未知的情况下需要逐个尝试,降低了读取速度。因此需要一种能够估测原始误码率的方法,为状态选择提供依据,减少逐个尝试浪费的时间。
目前一些研究将神经网络(ANN)引入差错控制系统中,提出了基于神经网络的译码算法。通过提前使用有噪声的数据训练,使神经网络学习信道噪声的概率特征,为SPA译码器引入extrinsic information外信息,通常是原始误码率或对数似然比,以提高译码器纠错性能。但是这种训练只能是离线的,训练好的神经网络权重不再改变。然而NAND Flash的噪声特征会随着读写次数的增加而逐渐改变,这会一定程度上影响神经网络预测的准确度。所以,有必要对已经训练好的神经网络定期进行小规模在线更新训练。
因此,一种能够简单快速实时预测存储器原始误码率、稳定提高译码器纠错性能、支持神经网络小规模在线训练的方法需要被探索。
发明内容
(一)要解决的技术问题
针对于现有的技术问题,本公开提供一种用于存储器的纠错方法、装置、电子设备及介质,用于至少部分解决以上技术问题。
(二)技术方案
本公开提供一种用于存储器的纠错方法,包括:获取需要存储的第一数据,将第一引导序列插入第一数据的预设位置,得到第二数据;对第二数据进行编码,得到含有校验位信息的第三数据,其中,校验位信息由第一数据和第一引导序列生成;将第三数据写入存储器,并从存储器中读取第三数据,读取后,第一引导序列转变成第二引导序列,得到含有第二引导序列及校验位信息的第四数据;利用第一引导序列替换第二引导序列,得到第五数据;根据奇偶校验矩阵及校验位信息对第五数据进行纠错。
可选地,对第二数据进行的编码为分组编码,每组编码包括:将第二数据与生成矩阵进行乘法运算,得到第三数据,其中,生成矩阵与奇偶校验矩阵正交。
可选地,第一引导序列转变成第二引导序列之后,对比第二引导序列与第一引导序列,统计第二引导序列中相对于第一引导序列发生变化的码占第一引导序列中所有码的比例,以估测原始误码率。
可选地,得到估测原始误码率之后,判断原始误码率与预设误码率的大小;若原始误码率小于预设误码率,则选择硬判决译码对第五数据进行纠错;若原始误码率大于预设误码率,则选择软判决译码对第五数据进行纠错。
可选地,根据奇偶校验矩阵及校验位信息对第五数据进行纠错包括:利用硬判决译码纠错:由奇偶校验矩阵得到第五数据中各个位置上的码字与校验位信息中码字的加和为0的校验式,其中,当某个位置上的码字出错时,则含有出错码字的校验式不等于0;判断是否有超出一半的校验式不等于0,若是,则对出错的码字进行翻转,否则,不翻转;利用软判决译码纠错:将第五数据转化成对数似然比LLR,然后根据奇偶校验矩阵及校验位信息将对数似然比LLR值进行迭代更新,再将对数似然比LLR值判决成比特值,判断是否有HyT=0,若是,则纠错成功,否则,继续迭代更新,直到达到预先设置的最大迭代次数,其中,H为奇偶校验矩阵,y为根据第五数据生成的矩阵,yT为y的转置矩阵。
可选地,根据奇偶校验矩阵及校验位信息对第五数据进行纠错之后,方法还包括:移除纠错后得到的第六数据中的第一引导序列和校验位信息,得到第七数据。
可选地,使用低密度奇偶校验码(LDPC码)或RS码和BCH码对第二数据进行分组编码。
本公开另一方面提供一种用于存储器的纠错装置,包括:获取模块,用于获取需要存储的第一数据,将第一引导序列插入第一数据的预设位置,得到第二数据;编码模块,用于对第二数据进行编码,得到含有校验位信息的第三数据,其中,校验位信息由第一数据和第一引导序列生成;读写模块,用于将第三数据写入存储器,并从存储器中读取第三数据,读取后,第一引导序列转变成第二引导序列,得到含有第二引导序列及校验位信息的第四数据;替换模块,用于利用第一引导序列替换第二引导序列,得到第五数据;纠错模块,用于根据奇偶校验矩阵及校验位信息对第五数据进行纠错。
本公开另一方面提供一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的方法。
本公开另一方面提供一种计算机可读存储介质,存储有计算机可执行指令,指令在被执行时用于实现上述的方法。
(三)有益效果
本公开提供一种用于存储器的纠错方法、装置、电子设备及介质,有益效果为:
1、通过插入引导序列到存储数据中,编码生成校验位信息,同时在译码前将正确的引导序列回填入读取的数据中,利用奇偶校验矩阵和校验位信息对读取的数据进行纠错,从而增加译码器的纠错性能。
2、将各组读取后的引导序列与插入存储数据中的已知引导序列作对比,统计读取后的引导序列中的错误,算出各组误码率,并取平均值,得到存储器的预测原始误码率,进而得知存储器中存储单元的损耗状况,同时为NAND Flash读取的状态选择提供依据,减少逐个尝试浪费的时间。
3、本公开的应用领域特别涉及NAND Flash的原始误码率估测和差错控制系统纠错能力提升。更进一步的,将神经网络(ANN)引入差错控制系统中,还可以通过对引导序列的自定义,在读取端收集未经过译码器纠错的相应数据,用做在线小规模训练更新神经网络的训练集和测试集,以定期在线更新存储器中的神经网络。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施的用于存储器的纠错方法的流程图;
图2示意性示出了根据本公开实施的分组编码的流程图;
图3示意性示出了根据本公开实施例的不同引导序列长度对应的估测误码率和真实原始误码率间的均方差的关系曲线图;
图4示意性示出了根据本公开实施例的估测的误码率与真实原始误码率的关系图;
图5示意性示出了根据本公开实施例中,硬判决译码状态和软判决译码状态的选取判断条件图;
图6示意性示出了根据本公开实施例中利用软判决译码算法纠错中的泰纳图;
图7示意性示出了根据本公开实施例中,提出的方法在使用比特翻转译码和和积译码算法译码时的效果图;
图8示意性示出了根据本公开实施例的有无引导序列纠错效果对比图;
图9示意性示出了根据本公开实施例的纠错电子设备的框图;
图10示意性示出了根据本公开实施例的纠错装置的框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
图1示意性示出了根据本公开实施的用于存储器的纠错方法的流程图。请参见图1,该方法包括:
S1、获取需要存储的第一数据,将第一引导序列插入第一数据的预设位置,得到第二数据。
引导序列为一定长度的二进制序列,序列可随机生成也可根据需要由用户自定义序列内容。在插入序列到存储数据之前,需要将数据平均分成多组初级消息,初级消息的组数与多编译码器合作架构中编译码器的组数相同。按照一定的顺序将引导序列插入到需要存储的初级消息中的特定位置处,特定位置可随机生成也可根据需要由用户自定义。组数、引导序列长度和插入位置也可根据实际情况调整。
本实施例中,在数据写入时,将输入消息例如可以分为16组初级消息,并将300位引导序列插入每个初级消息中。在固定为16组的前提下,估测的误码率会随着引导序列的长度增加而逐渐接近真实的原始误码率。
S2、对第二数据进行编码,得到含有校验位信息的第三数据,其中,校验位信息由第一数据和第一引导序列生成。
图2示意性示出了根据本公开实施的分组编码的流程图。如图2,在消息输入编码器后会被信道编码算法进行分组编码,在分组码中,通常是将输入x与生成矩阵相乘得到编码后的码字y=[x c],c为校验位信息。输入x是指已插入引导序列的初级消息,即引导序列也会参与到编码中,与初级消息共同生成校验位信息。生成矩阵是指与分组码的奇偶校验矩阵H相正交的一个矩阵G。奇偶校验矩阵是由专门的方法生成的,通常是在有限域(伽罗华域)下使用欧式几何或投影几何的方法构造,可以根据实际应用场景构造适合的奇偶校验矩阵。奇偶校验矩阵都是只含有0/1元素的稀疏矩阵。即H和G只含有0和1(二进制),有H.GT=0。生成矩阵在编码中用于生成码字y,故被称为生成矩阵,y=Gx=[x c]。GT是G的转置矩阵。基于引导序列、原始消息和校验位直接的数学关系y=[x c],校验位中的信息熵由于已知的引导序列的存在被降低了,校验位获得了引导序列携带的外信息。由于引导序列在接收端/读取端是已知的,且插入的位置不会因为编码而改变,因此可被完全正确还原,从而为译码器提供一些外信息,增强译码器的检测和纠正错误的能力。
S3、将第三数据写入存储器,并从存储器中读取第三数据,读取后,第一引导序列转变成第二引导序列,得到含有第二引导序列及校验位信息的第四数据。
对比第二引导序列与第一引导序列,统计第二引导序列中相对于第一引导序列发生变化的码占第一引导序列中所有码的比例,以估测原始误码率。
图3示意性示出了根据本公开实施例的不同引导序列长度对应的估测误码率和真实原始误码率间的均方差的关系曲线图。如图3,例如在编译码器组数为16组,每组初级消息插入引导序列长度为初级消息总长度的3-5%,采用均匀分布生成插入位置,可使估测误码率与真实误码率的均方差只有3.4×10-6。
图4示意性示出了根据本公开实施例中16组长度300/8400的引导序列估测的误码率与真实原始误码率的关系图。如图4,例如使用300位引导序列时估测的误码率与真实的原始误码率之间的关系,确定系数R2=0.992。可看出估测的误码率基本上能够反映真实的误码率,两者误差非常小。例如分别用(10080,8400)QC-LDPC码对这16个部分进行编码,生成码字并存入存储器。在数据读取时,先读取到未经译码器纠错的码字。将每组码字中的引导序列与已知的引导序列对比,计算每组的误码率并取平均,得到估测的存储器原始误码率。
在含有神经网络的系统中,通过对比错误的引导序列和正确的引导序列,可以统计出存储器的符号错误分布(symbol error distribution),即每个符号(symbol)发生错误的概率分布,从而建立起初步的信道模型,为神经网络提供额外信息,支持神经网络(ANN)学习存储器的噪声模型,以实现神经网络耦合译码(ANN coupled decoding)。符号指的是具有明确意义的最小传输单位,例如在MLC NAND flash存储器中,有4个符号11 10 0001,代表4个电压值存储在NAND flash的存储单元(cells)中。存储在存储单元中的电压值会通过统计每个符号转移成其他符号的百分比,可以得出存储器受噪声影响的电压偏移概率(一个状态转移矩阵),从而用于支持神经网络学习存储器的噪声模型。在将神经网络引入差错控制系统时,也可以不断改变第一引导序列,读取端收集未经过译码器纠错的相应数据,用于在线小规模训练中,更新神经网络的训练集和测试集。
判断原始误码率与预设误码率的大小;若原始误码率小于预设误码率,则选择硬判决译码对第五数据进行纠错;若原始误码率大于预设误码率,则选择软判决译码对第五数据进行纠错。
本实施例中,在NAND Flash读取数据时,可以根据已知的引导序列实时估测NANDflash误码率选择读取译码状态,降低选择状态所花费的时间,从而提高读取速度。数据读取和译码流程有4个状态:
1)具有硬判决译码的默认读取级别(状态0)
2)具有硬判决译码的重试级别(状态1)
3)具有软判决译码的多重读取级别(状态2)
4)报告译码失败重新读取(状态3)
硬判决译码是直接使用比特值间的数学关系去纠错,要比软判决译码快很多,而软判决的纠错能力要比硬判决强,但耗费的算力更大。使用何种状态取决于NAND Flash中误码率。NAND flash会随着擦写周期的增加误码率升高。当擦写周期少时,误码率低时,使用1)和2)译码;当P/E cycles增多时,误码率高,使用3)和4)。在不能提前知道误码率信息时,NAND Flash的读取和译码流程实际上是1)-4)逐个尝试,在信道状况不好的时候会耗费时间在1)和2)上。估测得到的误码率将用于决定读写状态,帮助NAND Flash决定使用哪种读取和译码状态,减少尝试浪费的时间,提高读取和译码速度。图5示意性示出了根据本公开实施例中,以纠错后的误码率小于10-5为阈值时,选取硬判决译码状态和软判决译码状态的判断条件,最大迭代次数10次。如图5,例如使用(10080,8400)的QC-LDPC码作为编码方案,以误码率小于10-5为基准,在raw BER<0.002时,可以使用硬判决译码状态;raw BER>0.002时,使用软判决译码状态。
由于原始误码率在一定擦写周期内可认为是不变的,长期记录的估测误码率将被用于统计分析存储器的噪声概率特征,以及用于支持读取状态的选择。
存储单元在反复读取过程中会逐渐老化,原始误码率也会随之增加,使用引导序列估测的误码率值可以实时反映存储单元的使用状态,在某区块的估测误码率增加到某个阈值时,可认为该区块正在损坏,可以发出提醒给存储器的主控,使数据被转存到使用状态良好的区块中,或使用多次读取加软判决的译码方式。值得一提的是,存储器的原始误码率在一段读写周期内改变不大,如MLC NAND flash在0-1000次擦写时误码率不会有太大变化,因此只需在擦写周期达到一定次数时测量一次当前原始误码率即可,不必每次读取时都测量。
S4、利用第一引导序列替换第二引导序列,将已知的引导序列回填到每组码字中,得到第五数据。
具体地,在测得原始误码率后,将已知的引导序列回填入被读取的码字中,以确保输入译码器的引导序列部分是完全正确的。之后码字将被分成多组输入译码器进行译码,组数与多编译码合作架构中编译码器的组数相同,从而检测和纠正由于写入和读取时的噪声造成的错误码。
S5、根据奇偶校验矩阵及校验位信息对第五数据进行纠错。译码方法可以使用大数逻辑译码、比特翻转译码、和积译码算法或最下和译码算法等。
利用硬判决译码算法,此例为比特翻转译码算法,纠错:
由奇偶校验矩阵得到第五数据中各个位置上的码字与校验位信息中码字的加和为0的校验式,其中,当某个位置上的码字出错时,则含有出错码字的校验式不等于0;判断是否有超出一半的校验式不等于0,若是,则对出错的码字进行翻转,否则,不翻转。
具体地,例如设第五数据y=[y1 y2 y3 y4 y5 y6],其中y4 y5 y6为校验位信息,根据奇偶校验矩阵,
可得到y1+y2+y4+y5=0,y1+y3+y5+y6=0,y2+y3+y4+y6=0,当y1出错时,含有y1的校验式y1+y2+y4+y5=1,y1+y3+y5+y6=1,如果有超出一半的校验式不等于0,则y1由1翻转成0,否则不翻转;
①、使用上述方法逐个遍历完所有码字;
②、将引导序列回填到已经遍历过的码字中;
③、重复步骤①、②直到达到预先设定好的迭代次数;
利用软判决译码算法,此例为和积译码算法,纠错:
图6示意性示出了由上述奇偶校验矩阵H生成的Tanner Graph(泰纳图),仅用于方便地解释软判决译码的步骤。其中,v称为变量节点,c称为校验节点。
1.初始化:将已经含有错误的码字中的每个bit转化成LLR值,记作初始的Lvj同时令Lvj=Lvj-ci,Lvj-ci为各个变量节点传递给校验节点的值,其中引导序列位置处的1会被赋予非常大的负值,0会被赋予非常大的正值。
2.更新校验节点:用与ci相连的vj的Lvj-ci值更新mci-vj,mci-vj为各个校验节点传递给变量节点的值。
3.更新变量节点:用与vj相连的ci的mci-vj更新Lvj-ci值。
4.更新LLR值:用Lvj-ci的值更新Lvj的值。
5.将LLR值重新转化成比特值,LLR>0,bit=0;LLR<0,bit=1,得到y。如果Hy=0,则译码成功,认为中已经没有错误;否则重复2-5,直到达到预先设置的最大迭代次数。迭代最大次数是预先设置好的,比如最大迭代次数为10、20、50次等。即将第五数据转化成对数似然比LLR,然后根据奇偶校验矩阵及校验位信息将对数似然比LLR值进行迭代更新,再将对数似然比LLR值判决成比特值,判断是否有HyT=0,若是,则纠错成功,否则,继续迭代更新,直到达到预先设置的最大迭代次数,其中,H为奇偶校验矩阵,y为根据第五数据生成的矩阵,yT为y的转置矩阵。
以和积译码算法(又称置信传播算法)SPA为例,译码器输入的初始值为每个比特的后验概率或后验概率求得的对数似然比(LLR),
其中y为读取到的码字(被噪声干扰过的),vi为传输的码字(未被噪声干扰的),为vi的对数似然比。和积译码是根据奇偶校验矩阵H中的校验式,更新每个码字比特的LLR值,经过多次迭代后判决得到vi的值,若LLR>0,则vi=0,否则vi=1。校验式指定了特定位置上码字的关系,如c1=vi+vk+vj+…。码字vi的LLR值会被所有包含vi的H中的校验式中的其他码字的LLR值更新。引导序列回填后,赋值给引导序列位置的比特较高的LLR值(建议为其他比特的LLR值的10倍),则在各比特LLR更新的过程中,引导序列的LLR值占更大的权重,能够起到一定的引导作用(使LLR值更偏正/负值),从而纠正一些之前无法纠正的错误,以及减少迭代次数/加快译码器收敛速度,从而增强译码器的纠错性能。
低密度奇偶校验码(LDPC码)或其他分组码都是有纠错上限的,在纠错上限附近译码成功率会非常低。举例来说,在没有引导序列时,某个LDPC码可以纠正原始误码率RBER<0.01的消息,当原始误码率为0.01时,该LDPC码一般会译码失败无法纠错(在100次迭代仍无法收敛,这时候误码认为它是无法收敛的,译码失败。实践中一般不会让译码器迭代100次,因为太耗时间和算力),当加入引导序列后译码成功率极大提高(平均20次迭代就会收敛/译码成功,纠正所有误码)。这说明加入引导序列后一些译码器原本不能纠正的错误被纠正了。
就译码算法而言,本公开并没有提出新的译码算法,只是对现有的译码方法做出了改进。对于硬判决译码算法,如大数逻辑译码算法、比特翻转译码算法,这类算法的输入是码字的每一位比特值,通过在每次迭代前回填正确的引导序列,提高了相应算法的纠错能力;对于软判决译码算法,如和积译码算法SPA,这类算法的输入是码字的每一位的比特值转化成的对数似然比(LLR),在第一次迭代前先将正确的引导序列回填入码字中,然后在将码字中的比特转化成LLR值时,赋予引导序列所在位置的LLR更大的值,以此来提高软判决译码算法的纠错能力,即在纠正相同原始误码率时有更少的迭代次数,有更快的收敛速度或在相同迭代次数下纠正了有更高原始误码率的数据。该软判决译码算法还可以应用在最小和算法(MSA)、分层译码算法(LBP)以及动态信息更新策略IDS(含RBP、NW-RBP、SVNF-RBP)中,进一步加快译码器收敛速度。
经实验测试,本公开提出的方法对比特翻转译码和和积译码算法均有效,均能够提升使用这些算法的译码器的纠错性能,图7示意性示出了根据本公开实施例中,提出的方法在使用比特翻转译码和和积译码算法译码时的效果图,最大迭代次数10。如图7,本例中使用比特翻转译码和和积译码算法分别对每组码字进行译码,译码器的最大迭代次数为10次。此后,从译码器的输出消息中移除引导序列,再将被译码的消息重新组合作为读取的数据输出。图8示意性示出了根据本公开实施例的有无引导序列纠错效果对比图。如图8,可看出有引导序列时,存储器的差错控制系统的纠错能力被增强。
需要指出的是,引导序列在纠错过程中起到减少初始错误数量的作用,以及在软判决译码中引导LLR值更快偏向正值或负值的作用。这两个作用使得译码器的纠错能力得到加强。奇偶校验矩阵H指示了校验的数学关系。校验位信息的存在使纠错称为可能。y中所有的码字在译码中是等价的,不区分信息位、校验位、引导序列位。y中因为含有校验位信息,相比于x包含了更多的冗余,因此可以纠正x。
对第五数据纠错得到第六数据后,还需要移除第六数据中的第一引导序列和校验位信息,得到第七数据,将各组第七数据合并,输出得到最终从存储器中读取到的数据。
具体地,例如译码输出被纠错过的数据x’后,用移位器移除插入到数据中的引导序列和校验位信息。也可用其他方法移除引导序列和校验位信息。在x’中,被插入的引导序列位置不变,同时校验位信息默认放在x’的后面,因此可将每组x’中及校验位信息相应位置的码直接移除,再合成一个整体输出,即为存储器读取到的数据。
综上所述,本公开实施例针对存储器噪声环境复杂、误码率随使用时间变化不易测量、高密度存储时错误较多的问题,提出了一种用于存储器的纠错方法,通过对引导序列的对比分析,可以简单快速实时预测存储器的原始误码率,稳定提高了译码器纠错性能并且可以支持应用于NAND Flash神经网络的小规模在线更新训练。
图9示意性示出了根据本公开实施例的纠错电子设备的框图。
如图9所示,本公开提供了一种用于存储器的纠错电子设备,纠错电子设备900包括处理器910和存储器920。该纠错电子设备900可以执行根据图1所示的本公开实施例的方法。
具体地,处理器910例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器910还可以包括用于缓存用途的板载存储器。处理器910可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
存储器920,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
存储器920可以包括计算机程序921,该计算机程序921可以包括代码/计算机可执行指令,其在由处理器910执行时使得处理器910执行根据本公开实施例的方法或其任何变形。
计算机程序921可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序921中的代码可以包括至少一个程序模块,例如包括模块921A、模块921B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器910执行时,使得处理器910可以执行根据本公开实施例的方法或其任何变形。
图10示意性示出了根据本公开实施例的存储器的纠错装置的框图。
如图10所示,本公开实施例提供了一种用于存储器的纠错装置1000,包括:
获取模块1010,用于获取需要存储的第一数据,将第一引导序列插入第一数据的预设位置,得到第二数据。
具体地,在插入序列到存储数据之前,需要将数据平均分成多组初级消息,初级消息的组数与多编译码合作架构中编译码器的组数相同。组数、引导序列长度和插入位置也可根据实际情况调整。本实施例中,在数据写入时,例如将输入消息分为16组初级消息,并将300位引导序列插入每个初级消息中。在固定为16组的前提下,估测的误码率会随着引导序列的长度增加而逐渐接近真实的原始误码率。
编码模块1020,用于对第二数据进行编码,得到含有校验位信息的第三数据,其中,校验位信息由第一数据和第一引导序列生成;
读写模块1030,用于将第三数据写入存储器,并从存储器中读取第三数据,读取后,第一引导序列转变成第二引导序列,得到含有第二引导序列及校验位信息的第四数据;
替换模块1040,用于利用第一引导序列替换第二引导序列,得到第五数据;
纠错模块1050,用于根据奇偶校验矩阵及校验位信息对第五数据进行纠错;
其中,编码模块和纠错模块分别包括至少一组分组码编码器和译码器,其中,编码器和译码器既可并行工作也可串行工作,分组码包括但不仅限于低密度奇偶校验码(LDPC码)、RS码和BCH码。
具体地,如图2,在消息输入编码器后会被信道编码算法进行分组编码,在分组码中,通常是将输入x与生成矩阵相乘得到编码后的码字y=[x c],c为校验位信息。引导序列也会参与到编码中,与初级消息共同生成校验位信息。由于引导序列在接收端/读取端是已知的,且插入的位置不会因为编码而改变,因此可被完全正确还原,从而为译码器提供一些外信息,增强译码器的检测和纠正错误的能力。如图3,例如在编译码器组数为16组,每组初级消息插入引导序列长度为初级消息总长度的3-5%,采用均匀分布生成插入位置,可使估测误码率与真实误码率的均方差只有3.4×10-6。图4展示了使用300位引导序列时估测的误码率与真实的原始误码率之间的关系,确定系数R2=0.992。可看出估测的误码率基本上能够反映真实的误码率,两者误差非常小。例如分别用(10080,8400)QC-LDPC码对这16个部分进行编码,生成码字并存入存储器。在数据读取时,先读取到未经译码器纠错的码字。将每组码字中的引导序列与已知的引导序列对比,计算每组的误码率并取平均,得到估测的存储器原始误码率。
本实施例中,在NAND Flash读取数据时,可以根据已知的引导序列实时估测NANDflash误码率选择读取译码状态,降低选择状态所花费的时间,从而提高读取速度。
在存储的码字被读取后将被输入译码器译码,从而检测和纠正由于写入和读取时的噪声造成的错误码。具体地,例如在估测完原始误码率之后,将码字重新分成16份,并将已知的引导序列回填到每组码字中。译码方法可以使用大数逻辑译码、比特翻转译码、和积译码算法或最下和译码算法等。经实验测试,本公开提出的方法对比特翻转译码和和积译码算法均有效,均能够提升使用这些算法的译码器的纠错性能,如图7。本例中使用比特翻转译码和和积译码算法分别对每组码字进行译码,译码器的最大迭代次数为10次。此后,从译码器的输出消息中移除引导序列,再将被译码的消息将重新组合作为读取的数据输出。图8可看出有引导序列时,存储器的差错控制系统的纠错能力被增强。
此外,还含有引导序列移除模块,包括若干个移位器,用于移除插入到数据中的引导序列和校验位信息。具体地,例如在x’中,被插入的引导序列位置不变,同时校验位信息默认放在x’的后面,因此可将每组x’及校验位信息相应位置的码直接移除,再合成一个整体输出,即为存储器读取到的数据。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (10)
1.一种用于存储器的纠错方法,其特征在于,包括:
获取需要存储的第一数据,将第一引导序列插入所述第一数据的预设位置,得到第二数据;
对所述第二数据进行编码,得到含有校验位信息的第三数据,其中,所述校验位信息由所述第一数据和所述第一引导序列生成;
将所述第三数据写入存储器,并从所述存储器中读取所述第三数据,读取后,所述第一引导序列转变成第二引导序列,得到含有所述第二引导序列及所述校验位信息的第四数据;
利用所述第一引导序列替换所述第二引导序列,得到第五数据;
根据奇偶校验矩阵及所述校验位信息对所述第五数据进行纠错。
2.根据权利要求1所述方法,其特征在于,所述对所述第二数据进行的编码为分组编码,每组编码包括:
将所述第二数据与生成矩阵进行乘法运算,得到所述第三数据,其中,所述生成矩阵与所述奇偶校验矩阵正交。
3.根据权利要求1所述方法,其特征在于,所述方法还包括:
对比所述第二引导序列与所述第一引导序列,统计所述第二引导序列中相对于所述第一引导序列发生变化的码占所述第一引导序列中所有码的比例,以估测原始误码率。
4.根据权利要求3所述方法,其特征在于,所述方法还包括:
判断所述原始误码率与预设误码率的大小;
若所述原始误码率小于所述预设误码率,则选择硬判决译码对所述第五数据进行纠错;
若所述原始误码率大于所述预设误码率,则选择软判决译码对所述第五数据进行纠错。
5.根据权利要求4所述方法,其特征在于,所述根据奇偶校验矩阵及所述校验位信息对所述第五数据进行纠错包括:
利用所述硬判决译码纠错:
由所述奇偶校验矩阵得到第五数据中各个位置上的码字与所述校验位信息中码字的加和为0的校验式,其中,当某个位置上的码字出错时,则含有所述出错码字的所述校验式不等于0;
判断是否有超出一半的校验式不等于0,若是,则对所述出错的码字进行翻转,否则,不翻转;
利用所述软判决译码纠错:
将所述第五数据转化成对数似然比LLR,然后根据所述奇偶校验矩阵及所述校验位信息将所述对数似然比LLR值进行迭代更新,再将所述对数似然比LLR值判决成比特值,判断是否有HyT=0,若是,则纠错成功,否则,继续迭代更新,直到达到预先设置的最大迭代次数,其中,H为所述奇偶校验矩阵,y为根据所述第五数据生成的矩阵,yT为y的转置矩阵。
6.根据权利要求1所述方法,其特征在于,在所述根据奇偶校验矩阵及所述校验位信息对所述第五数据进行纠错之后,所述方法还包括:
移除纠错后得到的第六数据中的所述第一引导序列和所述校验位信息,得到第七数据。
7.根据权利要求2所述方法,其特征在于,使用低密度奇偶校验码或RS码和BCH码对所述第二数据进行分组编码。
8.一种用于存储器的纠错装置,其特征在于,包括:
获取模块,用于获取需要存储的第一数据,将第一引导序列插入所述第一数据的预设位置,得到第二数据;
编码模块,用于对所述第二数据进行编码,得到含有校验位信息的第三数据,其中,所述校验位信息由所述第一数据和所述第一引导序列生成;
读写模块,用于将所述第三数据写入存储器,并从所述存储器中读取所述第三数据,读取后,所述第一引导序列转变成第二引导序列,得到含有所述第二引导序列及所述校验位信息的第四数据;
替换模块,用于利用所述第一引导序列替换所述第二引导序列,得到第五数据;
纠错模块,用于根据奇偶校验矩阵及所述校验位信息对所述第五数据进行纠错。
9.一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011054228.0A CN114333964A (zh) | 2020-09-29 | 2020-09-29 | 用于存储器的纠错方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011054228.0A CN114333964A (zh) | 2020-09-29 | 2020-09-29 | 用于存储器的纠错方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114333964A true CN114333964A (zh) | 2022-04-12 |
Family
ID=81010858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011054228.0A Pending CN114333964A (zh) | 2020-09-29 | 2020-09-29 | 用于存储器的纠错方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114333964A (zh) |
-
2020
- 2020-09-29 CN CN202011054228.0A patent/CN114333964A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102077173B (zh) | 利用写入验证减轻代码的误码平层 | |
CN103888148B (zh) | 一种动态阈值比特翻转的ldpc码硬判决译码方法 | |
US10547332B2 (en) | Device, system and method of implementing product error correction codes for fast encoding and decoding | |
KR101854954B1 (ko) | 치환 소행렬의 합을 사용하는 체크섬 | |
US10298261B2 (en) | Reduced complexity non-binary LDPC decoding algorithm | |
US8645810B2 (en) | Fast detection of convergence or divergence in iterative decoding | |
US8504895B2 (en) | Using damping factors to overcome LDPC trapping sets | |
US7949932B2 (en) | Strengthening parity check bit protection for array-like LDPC codes | |
US10812112B2 (en) | Methods and decoder for soft input decoding of generalized concatenated codes | |
KR20200058106A (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
JP5723975B2 (ja) | Ldpcコードの復号のための方法、システム、およびプログラム | |
US9564921B1 (en) | Method and system for forward error correction decoding based on a revised error channel estimate | |
JP2019125910A (ja) | メモリシステム | |
US9407290B2 (en) | Error-correction decoding with conditional limiting of check-node messages | |
US20220416812A1 (en) | Log-likelihood ratio mapping tables in flash storage systems | |
TW201320091A (zh) | 具有低密度奇偶校驗碼解碼能力的記憶體控制裝置及方法 | |
US20140129898A1 (en) | Evaluation of performance characteristics of a read channel | |
CN107026655B (zh) | 用于对码字进行译码的方法及译码器 | |
US8786968B2 (en) | Data storage device including a recording channel, a detector, and a noise prediction circuit, and method of processing a signal in a data storage device | |
CN107872231A (zh) | Ldpc译码方法与装置 | |
CN114333964A (zh) | 用于存储器的纠错方法、装置、电子设备及介质 | |
CN110708077B (zh) | Ldpc码大数逻辑译码方法、装置和译码器 | |
US8508391B1 (en) | Code word formatter of shortened non-binary linear error correction code | |
KR102530269B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
JP2021048525A (ja) | メモリシステム |
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 |