一种基于flash编程干扰错误感知的LDPC译码优化方法技术

技术编号:14517303 阅读:106 留言:0更新日期:2017-02-01 19:47
本发明专利技术公开了一种基于flash编程干扰错误感知的LDPC译码优化方法,随着NAND闪存存储密度的提升,每个单元存储较多的比特信息,单元之间的耦合干扰较强烈,造成严重的编程干扰错误,使得传统的BCH码不足以保证数据的可靠性,LDPC码具有优于BCH码的纠错性能而被应用于NAND闪存存储系统中。使用被优化的LDPC译码算法具有重要意义。现已观察,编程干扰错误具有数值相关性特征,当进行LDPC译码时,编程干扰错误的数值相关性特征能够被融入到LDPC译码过程,为比特判决提供一种额外的信息以此提高比特判决精度和译码收敛速度,从而降低LDPC译码延迟。

【技术实现步骤摘要】

本专利技术属于固态盘存储
,更具体地,涉及一种基于flash编程干扰错误感知的LDPC译码优化方法
技术介绍
基于NAND闪存的固态盘(SolidStateDisk,简称SSD)具有高性能,大容量,抗震动,低功耗和非易失等优点被广泛应用于计算机存储系统。固态盘SSD以NAND闪存(NANDflash)作为存储介质,随着NAND闪存制程工艺的提升,每个单元存储较多的比特信息,比如MLCNAND闪存每个单元存储两比特信息,单元中存储较少的电荷且单元之间的距离较近,单元之间的耦合干扰较为强烈,当对NAND闪存中某一个页执行编程操作时,会对邻近的页造成干扰,引起邻近页的存储单元阈值电压发生变化,阈值电压从一个状态转移到另一个状态,当执行读操作时,由于编程干扰的影响发生比特错误,数据的可靠性遭到破坏。为了保证数据可靠性,纠错码(Errorcorrectioncode,简称ECC)被运用到NAND闪存的控制器中,如BCH码和LDPC码,传统的方法采用BCH码以保证数据可靠性。但是,NAND闪存的存储容量越来越大,存储单元之间的电容耦合更为强烈,编程干扰引起的比特错误率越来越高,BCH码不足以胜任保证数据可靠性,此时,需要采用纠正能力更强的纠错码,LDPC码以优于BCH码的纠错性能被应用于NAND闪存。LDPC码是一种线性分组码,它的纠错性质被一种称为稀疏性的检验矩阵所决定,所谓稀疏检验矩阵就是矩阵中0的数量远远多于1的数量,矩阵中的每一行对应一个检验方程(也被称为检验节点),每一行对应一个比特节点(与码字中的每个比特对应),检验矩阵能够形象的被Tanner图所表示(如图1和图2所示),Tanner图中的Ci(1≤i≤m)与检验矩阵中的行相对应,Tanner图中的Vj(1≤j≤m)与检验矩阵中的列相对应,如果检验矩阵中的第i行和第j列是1,那么Tanner图中Ci和Vj之间有一条边相连。当进行LDPC译码时,这些边用来传递译码所需要的可靠性信息(比特正确与否的概率信息)。LDPC译码是一种可靠性信息传播的过程,是一种软判决译码,具有较为复杂的译码结构,如果直接的使用LDPC码会带来较大译码延迟开销,如果能够将NAND闪存的错误模式融合到LDPC译码过程中,利用NAND闪存介质本身的错误特征为LDPC译码提供判断比特正确性的额外信息,那么,这样能够提升LDPC译码的判决精度和收敛速度,降低译码延迟开销。另外,我们得知NAND闪存的编程干扰错误具有数值相关性特征,即MLCNAND闪存单元中存储的不同状态的比特数据当有编程干扰存在时会表现出不同的错误率(如图3所示),主要的编程干扰错误是11→10和10→01,它们的比例分别是70%和24%,其他的编程干扰错误是10→00,11→01和01→00,它们相对的比例分别是2.2%,1.5%和0.4%。当进行LDPC译码时,这些特征被融入到译码过程,为比特判决提供额外的信息以此提高译码精度降低译码延迟。现有的LDPC译码算法有概率域置信传播算法,最小和译码算法等。现有的LDPC译码算法存在以下几个明显的不足之处:1、现有的LDPC译码算法只考虑内部的信息传递没有充分利用flash本身的错误模式特征,具有较高的译码复杂度和较大的译码延迟开销;2、现有的LDPC译码算法没有考虑编程干扰错误的数值相关性特征的影响,没有将这种有利特征融入到LDPC译码信息更新过程;3、现有的LDPC译码算法没有额外的判决信息提供,单纯的依靠译码机制本身的特性进行信息更新。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于flash编程干扰错误感知的LDPC译码优化方法,其目的在于,通过将编程干扰错误的数值相关性特征融入到LDPC译码过程中,为比特判决提供额外的信息,有效的提高了LDPC译码准确性降低了译码延迟开销,进而提高系统的读性能和延长SSD的寿命。为实现上述目的,按照本专利技术的一个方面,提供了一种基于flash编程干扰错误感知的LDPC译码优化方法,包括以下步骤:(1)随机生成检验矩阵H,其元素为0或1,码率介于0.75至0.9之间,且不存在短环现象;其中检验矩阵的行数m是通过(SSD页面大小/(SSD页面大小+m))=码率获得,检验矩阵的列数是SSD页面大小+m;(2)根据生成的检验矩阵H生成列向量(码字)使其满足其中列向量中的后m个记为冗余位,剩余的记为信息位;(3)根据生成的校验矩阵H和列向量构造对应的Tanner图,其体现了检验方程C1,C2,…,Cm与列向量之间的映射关系;(4)使用0和1对列向量中的元素V1到Vn-m进行随机赋值,并使用公式计算获得的列向量中的元素Vn-m到Vn的值,从而生成多个列向量,并将这些生成的列向量包括依次以顺序写的方式存入SSD的页面中一直到页面存满为止;(5)将被写入到SSD的页面中的多个列向量依次读出进行纠错,其中记发生错误的列向量为该列向量为(6)获取列向量中每个元素的初始可靠性信息,并根据可靠性信息将每个元素转换为二进制,即将可靠性信息为负值的元素转换为1,将可靠性信息为正值的元素转换为0,从而获得新的列向量(7)将校验矩阵H和列向量相乘,并判断相乘后生成的每个检验方程是否均为零向量,如果是则将列向量输出给用户,过程结束,否则转入步骤(8);(8)根据步骤(6)中获得的列向量中每个元素初始可靠性信息Ij,对每个码字比特进行初始化赋值为其中当进行译码第一次迭代时,获取的变量节点可靠性信息即为初始值Ij,Vij′k=Ij(1≤i≤m,1≤j≤n,i∈R(j),j∈Q(i))]]>其中i∈R(j)表示与变量节点Vj相连的所有检验节点Ci的集合,j∈Q(i)表示与检验节点Ci相连的所有变量节点Vj的集合;(9)设置计数器k=1;(10)判断k是否小于预设最大迭代次数Tmax,如果是,则转入步骤(11),如果否,则过程结束,将最终的码字向量输出,并向用户提示译码失败;(11)根据步骤(8)对初始变量节点赋值并使用以下公式进行检验节点可靠性信息更新:Cijk=Πm∈Q(i)\\jsgn(Vim′k)·min{|Vim′k|:m∈Q(i)\\j本文档来自技高网
...

【技术保护点】
一种基于flash编程干扰错误感知的LDPC译码优化方法,其特征在于,包括以下步骤:(1)随机生成检验矩阵H,其元素为0或1,码率介于0.75至0.9之间,且不存在短环现象;其中检验矩阵的行数m是通过(SSD页面大小/(SSD页面大小+m))=码率获得,检验矩阵的列数是SSD页面大小+m;(2)根据生成的检验矩阵H生成列向量(码字)使其满足其中列向量中的后m个记为冗余位,剩余的记为信息位;(3)根据生成的校验矩阵H和列向量构造对应的Tanner图,其体现了检验方程C1,C2,…,Cm与列向量之间的映射关系;(4)使用0和1对列向量中的元素V1到Vn‑m进行随机赋值,并使用公式计算获得的列向量中的元素Vn‑m到Vn的值,从而生成多个列向量,并将这些生成的列向量包括依次以顺序写的方式存入SSD的页面中一直到页面存满为止;(5)将被写入到SSD的页面中的多个列向量依次读出进行纠错,其中记发生错误的列向量为该列向量为(6)获取列向量中每个元素的初始可靠性信息,并根据可靠性信息将每个元素转换为二进制,即将可靠性信息为负值的元素转换为1,将可靠性信息为正值的元素转换为0,从而获得新的列向量(7)将校验矩阵H和列向量相乘,并判断相乘后生成的每个检验方程是否均为零向量,如果是则将列向量输出给用户,过程结束,否则转入步骤(8);(8)根据步骤(6)中获得的列向量中每个元素初始可靠性信息Ij,对每个码字比特进行初始化赋值为其中当进行译码第一次迭代时,获取的变量节点可靠性信息即为初始值Ij,Vij′k=Ij,(1≤i≤m,1≤j≤n,i∈R(j),j∈Q(i))]]>其中i∈R(j)表示与变量节点Vj相连的所有检验节点Ci的集合,j∈Q(i)表示与检验节点Ci相连的所有变量节点Vj的集合;(9)设置计数器k=1;(10)判断k是否小于预设最大迭代次数Tmax,如果是,则转入步骤(11),如果否,则过程结束,将最终的码字向量输出,并向用户提示译码失败;(11)根据步骤(8)对初始变量节点赋值并使用以下公式进行检验节点可靠性信息更新:Cijk=Πm∈Q(i)\jsgn(Vim′k)·min{|Vim′k|:m∈Q(i)\j}]]>其中为符号函数,Q(i)\j表示与检验节点Ci相连的所有比特节点中排除Vj的集合。(12)判断步骤(11)中检验节点更新是否结束,如果否,则返回步骤(11),如果是,则进入步骤(13);(13)根据步骤(12)中已经被更新的检验节点可靠性信息采用以下公式进行变量节点可靠性信息更新:Vij′k=Yj+Σn∈R(j)\iCnjk+Aj,]]>其中Aj是由flash编程干扰错误的数值相关性提供的额外比特判决信息,被融入到变量节点可靠性信息更新过程,其中R(j)\i表示与Vj相连的所有检验节点中排除Ci的集合,变量节点的可靠性信息表示为:当该检验方程成立时与之相连的变量节点等于0或1的概率;(14)判断步骤(13)中的变量节点可靠性信息更新是否结束,如果否,则返回步骤(13),如果是,则进入步骤(15);(15)使用以下公式对检验节点进行译码判决:Vj′k=Yj+Σi∈R(j)Cijk+Aj]]>(16)根据步骤(15)译码判决的结果获得每个码字比特所对应的可靠性信息(17)对步骤(16)中获得的可靠性信息进行硬判决,即判断是否有如果是则将0赋值给aj,然后转入步骤(18),否则将1赋值给aj,然后转入步骤(18);(18)根据步骤(17)中硬判决的结果获得被判决的码字向量(19)检验步骤(18)中生成的码字向量是否满足检验方程其中H为(1)中生成的检验矩阵,如果满足,则直接输出码字向量过程结束,如果不满足则将迭代次数k逐次加1,并返回步骤(10)继续迭代操作,直到满足为止。...

【技术特征摘要】
1.一种基于flash编程干扰错误感知的LDPC译码优化方法,其特征在于,包括以下步骤:(1)随机生成检验矩阵H,其元素为0或1,码率介于0.75至0.9之间,且不存在短环现象;其中检验矩阵的行数m是通过(SSD页面大小/(SSD页面大小+m))=码率获得,检验矩阵的列数是SSD页面大小+m;(2)根据生成的检验矩阵H生成列向量(码字)使其满足其中列向量中的后m个记为冗余位,剩余的记为信息位;(3)根据生成的校验矩阵H和列向量构造对应的Tanner图,其体现了检验方程C1,C2,…,Cm与列向量之间的映射关系;(4)使用0和1对列向量中的元素V1到Vn-m进行随机赋值,并使用公式计算获得的列向量中的元素Vn-m到Vn的值,从而生成多个列向量,并将这些生成的列向量包括依次以顺序写的方式存入SSD的页面中一直到页面存满为止;(5)将被写入到SSD的页面中的多个列向量依次读出进行纠错,其中记发生错误的列向量为该列向量为(6)获取列向量中每个元素的初始可靠性信息,并根据可靠性信息将每个元素转换为二进制,即将可靠性信息为负值的元素转换为1,将可靠性信息为正值的元素转换为0,从而获得新的列...

【专利技术属性】
技术研发人员:吴非谢长生张猛马瑞祥
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1