一种同时纠正固定错误与随机错误的纠错编码算法的制作方法

文档序号:6739501阅读:392来源:国知局
专利名称:一种同时纠正固定错误与随机错误的纠错编码算法的制作方法
技术领域
本发明涉及存储器领域,更具体的,涉及闪存或相变随机存取存储器中的纠错编码方法,尤其是固定错误与随机错误共存的纠错编码方法。
背景技术
闪存(FlashMemory)和相变随机存取存储器(Phase Change Random Access Memory, PCRAM)是两种新型的固态存储技术。闪存是目前使用最普遍的消费类存储器,如优盘,内存卡等,而PCRAM则是作为下一代固态存储器的最有力竞争者。闪存的存储原理是通过量化其浮栅(Floating Gate)结构中存储的电子数量来表示存储数据,而PCRAM则是通过存储介质材料在晶态和非晶态之间的导电性差异来表示存储数据。
闪存与PCRAM介质在生产过程中由于工艺,环境等因素都可能会产生坏位,即坏的存储单元,这些坏的存储单元被称为固定错误(Stuck Error or Stuck Cell),这些固定错误的取值是永久固定,不可以被改变的,一般而言,固定错误的位置与类型可以在芯片出厂之前通过测试获得,从而在使用中进行标记与纠正;与此同时,闪存与PCRAM在使用过程中,由于电子噪声,干扰等因素会产生随机错误(Random Error),相对于固定错误而言,随机错误的位置与类型是不可预知的,而且随机错误的产生跟芯片的使用时间有关,是可以被改变的。
在闪存与PCRAM存储系统中,为了确保存储数据的可靠性,在数据存储之前,需要对存储数据进行编码,然后在数据读取之后,对数据进行检错与纠错,这称为错误校验与纠错(Error Checking and Correcting, ECC)或纟H错编石马(Error Correcting Coding, ECC)。
传统的纠错方法采用线性分组码、循环码或者其他的纠错码来进行纠错,如汉明码,BCH码,LDPC码等。但是上述的这些纠错编码都是针对随机错误而设计的,对于固定错误与随机错误共存的场景,目前主要有两种方案来解决,第一种方案是把固定错误当作随机错误来处理,这样其需要的冗余会相对比较大,如(7,4)汉明码,纠正一个随机错误,需要3位冗余,码率只有57. 1%,而当编码器获知固定错误信息时,屏蔽一个固定错误,只需要 I位冗余,码率为85. 7% ;第二种方案是把固定错误图样传递给译码器,译码器输出数据时直接查询固定错误图样,然后进行纠正,这样其需要的解码时延比较大,同时破坏了系统的层次性与模块化特征,使得控制电路非常复杂,不具有实用性。
针对闪存与PCRAM系统中固定错误与随机错误共存的错误特点,同时编码器能获知固定错误信息的场景,需要设计一种编码效率高,解码时延小,复杂度低,同时具有实用性的纠错编码方法。发明内容
本发明针对固定错误与随机错误共存,并且编码器获知固定错误信息的场景,提供一种新的纠错编码方法来保证存储数据的可靠性,该方法可以提高编码效率,具有编解码复杂度低,时延小等特点,同时,本方法具有很强的通用性。
本发明提供一种同时纠正固定错误与随机错误的纠错编码方法,其包括错误图样检测;编码矩阵构造;特征序列生成;数据编码;数据解码。
I)错误图样检测获取固定错误的位置与类型。如果固定为“1”,则称其为“I-型错误”,如果固定为“0”,则称“O-型错误”,错误图样一般在生产之后进行检测,并存储在某个固定区域,当用户信息数据到达,编码器查询欲存储区域是否存在固定错误,若有,则获取错误图样。
2)编码矩阵构造根据系统所需的纠错能力,选取合适的线性编码矩阵G和校验矩阵H,满足G ·ΗΤ=0,在线性编码矩阵G的基础上,分解出纠正随机错误的编码矩阵G1与其伪逆矩阵A=Gf -(G1-Gfr1,满足G1 -Ht=O与G1 4=1,然后根据G1与,求解得到纠正固定错误的编码矩阵G。,满足Gtl · Ht=O与G0-(S1=O。
3)特征序列生成编码器根据获取到的固定错误图样,采用交叉熵 (Cross-Entropy, CE)迭代算法生成纠正固定错误的预编码序列U,使得其能屏蔽尽可能多的固定错误。
4)数据编码编码器编码矩阵G1与Gtl,分别对信息序列M与特征序列U进行编码,得到相应的码字G1和Ctl,然后做模2加法运算,得到最终的存储码字C。
5)数据解码解码器根据校验矩阵H进行校验与纠错,恢复出原始信息序列M,只要随机错误个数与固定错误个数没有超过系统给定的纠错能力,即能实现正确译码。
本发明考虑在编码器端对固定错误进行屏蔽的策略,解码器不需固定错误信息而直接进行解码,具有很低的解码时延和复杂度,同时本方法编码效率高,且具有很强的通用性。本发明特别适用于闪存与相变随机存取存储器等固定错误可检测,且要求低解码时延的应用场景中。


图I是闪存与相变随机存取存储器中固定错误图样示意图
图2是闪存与相变随机存取存储器典型系统结构框图3是本发明编解码整体框架结构示意图4是本发明编码流程示意图5是本发明解码流程示意图6是本发明编码矩阵构造流程示意图7是本发明特征序列生成流程示意图;具体实施方式
下面结合附图对本发明的具体实施方式
进行详细说明。
图I是本发明的提及的错误图样示意图,当需要把信息数据块中的数据(用M(i, j)表示),写入存储区域块中的存储单元(用C(i,j)表示)时(注这里i表示行号,j表示列号),由于存储单元存在固定错误,使得存储数据可能发生错误,难以保证其可靠性。假设信息数据与存取区域的错误图样如图I所示,则存储单元c(l,4)与C(4,6)固定为“0”,不论写入何值,其读出值始终为“0”,而存储单元C(2,7)与C(3,2)固定为“1”,不论写入何值,其读出值始终为“I”。对照信息数据块可知,M(l, 4)和M(3,2)的值为“1”,M(2, 7)和M(4,6)的值为“O”。因此,M(l,4)与C(l,4)不吻合,读出将出错;M(3,2)与C(3,2)吻合,读出将不出错;M(2,7)与C(2,7)不吻合,读出将出错;M(4,6)与C(4,6)吻合,读出将不出错。图2是本发明闪存与相变随机存取存储器典型系统结构框图,存储技术设备层(Memory Technology Device, MTD)作为底层功能模块提供对Flash存储单元最基本的读、写、擦除等操作;闪存映射层(Flash Translation Layer, FTL)作为上层文件系统与存储单元之间的中间层,提供逻辑块地址(Logic Block Address, LBA)到物理块地址(PhysicBlock Address, PBA)之间的映射,不同的存储系统根据实际应用需求采用不同的映射方法,典型的映射方式有基于页地址映射和基于块地址映射等;文件系统(File System,如FAT32)提供用户操作统一接口,屏蔽下层具体物理存储系统,存储控制器(StorageController)是存储系统管理相当重要的一个模块,包括磨损均衡(Wear Leveling, WL),垃圾回收(Garbage Collection, GC),坏块管理(Bad Block Management, BBM),错误检验与纠正(Error Checking and Correcting, ECC)等模块,这些模块对存储系统的稳定性与可靠性提供保障,本发明主要考虑ECC模块。图3是本发明编解码整体框架结构示意图,系统在启动时,需要根据预先设定的纠错能力选定合适的线性纠错编码,确定其生成矩阵G与校验矩阵H,然后在此基础上获得纠正固定错误的编码矩阵Gtl与纠正随机错误的编码矩阵G1,并根据错误图样获得特征序列U。写入数据时,用户信息数据M经过编码器G1后,得到码字G1,特征序列经过编码器Gtl后,得到码字Ctl,然后对Ctl和G1进行模2加法运算,得到最终的输出码字C,然后写入存储介质;读出数据时,用户从存储介质中获取数据码字C',经过解码器后,恢复信息数据M'。本发明提出第一实施例,给出本发明的编解码原理与流程。如图4所示为本发明编码流程图,设G为线性纠错码C(m,n)的生成矩阵,其为mXn的行满秩矩阵,H为其校验矩阵,满足G · Ητ=0。设G1和Gtl为根据G获得的分别用来纠正随机错误与固定错误的生成矩阵,其中G1为(m-k) Xn的行满秩矩阵,G0为kXn的行满秩矩阵,A=GfG1的伪逆矩阵,满足G1 · HT=0, G0 · HT=0, Gtl .(S1=O与Cri-Oi=GrGi .(GiW) =I,乂· J--C1与Gtl的获取以及相关关系式的证明将在接下来的实施例中给出。编码器I)假设码长为n,则实际信息序列长度为m-k,当写入请求到达,编码器接收到信息数据序列M,即M=Lx1, X2, *··, Xm-J.(I)编码器根据编码矩阵G1与M生成码字G1, SP :C1 = M · G1(2)同时根据编码矩阵Gtl与特征序U生成码字Ctl,即C0=U · G0(3)2)把G1和Ctl进行模2加法运算得到最终的存储码字C,并写入存储介质,即C=CfC1=U · G0+M · G1(4)由假设可知,Gtl为行满秩矩阵,rank (Gtl)=L则由Gtl生成的码字最小距离为k+Ι,因此只要固定错误个数小于等于k,则总能找到合适的特征序列U,使得C可以屏蔽所有的固定错误(注关于特征序列U的获取将在接下来的实施例中给出)。解码器如图5所示为本发明解码流程图。I)当读取请求到达,解码器从存储介质中获取存储数据码字C',即C ' =(c ' P c ' 2,…,c ' n) ·(5)然后根据校验矩阵H对随机错误进行检错与纠正,得到长度为m的解码序列C,根据假设,G1 · Ht=O且G0 · Ht=O,因此C可以被校验矩阵H进行校验,即C · Ht= (C0+Q · Ht=U · G0 · Ητ+Μ · G1 · Ht=O (6)因此C为去除了随机错误的序列,即为C=U ■ Ci0 - M ■ (i,(7)2)由于G0-G1=O,且G1-G=I,因此用即可恢复出原始信息序列,即M'= CG =(U-G^M-G1)-G1=U-G0-G^M-G1-G1=M (8)解码正确。实例I.假设C(7,3,I)码长为7,信息位长为3,纠正I个固定错误和一个随机错误,则可

"1000111" OOiOOO'"1011100"
G1 =0100011,G0=[1111111],A =0101000,H =IiOlOlO0010101(K)IlOOO1110001假设信息序列M = [1,1,0],不妨设固定错误为第三位,错误类型为“I-型错误”,则C1 = M · G1 = [1100100],其第三位不为I,与错误类型不一致,则找到一个IXk的向量U,使得C = M · G^U · G0的第三位与固定错误的值一致,由于k=l,所以U = I为一个值。所以C = M · G^U · G0 =
,由此看出其在固定错误位置与固定错误的值一致,所以其屏蔽了固定错误。又假设存在一个随机错误,不妨设其发生在第四位,则解码器得到输入码字为C ' = C+e =
,于是计算校验子s=C ' ·ΗΤ=[110]。即efefefeflGfeJefe6=I(9)GfeJefe7=O可知第四位发生错误,所以得到P =
,然后可得二[110] = If,解
码正确。本发明提出第二实施例,给出本发明的编码矩阵构造方法。如图6所示为本发明中编码矩阵Gtl与G1的构造过程,这是本发明最核心的部分之一,这个过程在系统出厂之前完成。根据第一实施例的需求,G0与G1必须满足如下条件=G1 · HT=0, G0 · HT=0, G0 G1=O与G1 .A=G1 .Gf -(G1-Gfr1=/ ,本实施例说明Gtl与G1的构造方法并验证上述条件。I)根据系统所需的纠正随机错误的能力,确定线性纠错码C(n,m),其中η为码字长度,m为信息位长度,则冗余位长度为n-m,设其编码矩阵与校验矩阵分别为G和H,满足G · Ht=O。2)根据系统所需的纠错固定错误的能力,确定所需冗余位长度,设其为k,这部分冗余从原始信息位中取得,则实际信息位长度为m-k。3)在G中选取任意m-k行作为纠正随机错误的生成矩阵G1,同时获得其伪逆矩阵G1=Gf '(G1 -Gfr1,不难验证 G1 · Ht=O 与 G1 G1 =G1 -Gf -(G1-G1rF1=/,这里 Ht 表示 H 的转置,I表示单位阵。4)由Gtl · Ητ=0,可知Gtl为G中行的线性组合,因此设Rkxm为一个待定的基本变换矩阵,设Gtl = R · G,则根据GnWl=O可知i .G.G=0.5)用高斯消元法可以把G G转换成如下形式,SP G0 G- =[/ P](10)从而可求得R= [Pt I](11)6)最后可得Gtl = R · G,经验证,上述条件均满足。本发明提出第三实施例,给出本发明的特征序列的生成方法。如图7所示为本发明中特征序列U的生成过程,称为交叉熵迭代算法。I)给定欲存储区域的固定错误图样E以及特征序列U的长度k,初始化迭代次数t=0,样本取值比率P=10%(P越大,结果越精确,但收敛速度越慢),以及概率向量P(t),即P(t=0) = [p1; P2, ···, pk] =
(12)其中Pi,i = 1,2,…,k表示特征序列第i位Ui取“I”的概率,则Ui取“O”的概率为 l_Pi。2)根据P(t)生成N组U的样本值{ ΟΓ,这里N与k的大小有关,一般k越大,N也越大,具体的取值根据系统需求决定。3)对每个样本计算C(i) =M-G^U(I) · Gtl并与错误图样进行比较,并根据屏蔽的固定错误个数对U(i)进行排序,即C(i)与E在固定错误位置上取值不一致的位数按从小到大排列,排序后的结果为C(I)彡 C(2)彡…彡 C(N)(13)4)选取排序后最前面的P · N个样本值估计P(t),
ρ· Nη其中Uy为第j的特征序列样本值中第i位的取值。5)令t = t+Ι,同时对P(t)进行加权更新,即P(t)=AP(t)+(\-l)P{t-\)(15)其中λ为原有概率与估计概率之间的加权值,一般取λ e [O. 6,I. O]。6)如果迭代次数达到或者P (t)满足需求,则停止迭代,用P (t)生成特征序列U,否则,回到第2步继续进行迭代。用此方法总可以找到屏蔽尽可能多固定错误的特征序列。本发明考虑在编码器端对固定错误进行屏蔽的策略,解码器不需固定错误信息而直接进行解码,具有很低的解码时延和复杂度,同时本方法编码效率高,且具有很强的通用性,特别适用于闪存与相变随机存取存储器等固定错误可检测,且要求低解码时延的应场景中。以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书以及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种同时纠正固定错误与随机错误的纠错编码方法,其包括 (1)错误图样E检测,获取固定错误的位置与类型; (2)编码矩阵构造,根据系统所需的纠正固定错误与随机错误的能力,选取合适的线性编码矩阵G和校验矩阵H,然后在此基础上分别构造纠正固定错误的编码矩阵Gtl和纠正随机错误的编码矩阵G1 ; (3)特征序列生成,根据获取的固定错误图样,生成纠正固定错误的预编码序列U; (4)数据编码,编码器根据编码矩阵Gtl和G1,分别对特征序列U和信息序列M进行编码,得到码字Ctl和G1,然后对Ctl和C1进行模2加法运算,得到最终的码字C ; (5)数据解码,由于固定错误已经在编码器端进行屏蔽,解码器只需对随机错误进行校验与纠正;解码器首先根据校验矩阵H对随机错误进行校验与纠正,得到去除了随机错误的码字序列,然后通过$即恢复出原始信息序列,只要随机错误个数与固定错误个数没有超过系统给定的纠错能力,即能实现正确译码。
2.根据权利要求I所述的编解码方法,其特征在于所有的序列均为二进制序列,序列的元素取值为“O”或者“I”。存在固定错误的存储单元无论输入为何值,输出保持固定为“O”或者“1”,如果固定为“1”,则称其为“I-型错误”,如果固定为“O”,则称“O-型错误”,其错误图样可以在出厂检测时获得。
3.根据权利要求I所述的编解码方法,其特征在于固定错误图样只有编码器可以获得,而解码器未知。除了这部分可以检测获知的固定错误,在存储或传输过程中,还有可能产生不可预知的随机错误。
4.根据权利要求I所述的编解码方法,其特征在于根据系统所需的纠错能力,选取合适的线性编码矩阵G和校验矩阵H,满足G · Ητ=0。在线性编码矩阵G的基础上,分解出纠正随机错误的编码矩阵G1与其伪逆矩阵(5, =Gf -(G1-Gfr1,满足G1 · Ht=O与G1 W1=I。
5.根据权利要求I所述的编解码方法,其特征在于根据G1与$,求解可得到纠正固定错误的编码矩阵G。,满足Gtl · Ht=O与(V G1=O。
6.根据权利要求I所述的编解码方法,其特征在于特征序列U是一串采用交叉熵迭代算法获得的二进制序列,其使得编码后的码字能屏蔽尽可能多的固定错误。
7.根据权利要求I所述的编解码方法,其特征在于编码过程包括随机错误编码与固定错误编码,然后再进行模2加法运算,得到最终的码字。
8.根据权利要求I所述的编解码方法,其特征在于本发明采用在编码器端对固定错误进行屏蔽的策略,使得编码后的码字与固定错误图样在相应位置上的取值保持一致,固定错误对解码器保持透明,解码器无需获得固定错误的任何信息,解码过程只需要进行随机错误的校验与纠正。
9.根据权利要求I所述的编解码方法,其特征在于即使固定错误没有全部被屏蔽,只要未屏蔽的固定错误与随机错误的个数总和没有超过系统总的纠错能力,依然可以用剩余的纠错能力来纠正这部分未屏蔽的固定错误。
全文摘要
本发明提供了一种同时纠正固定错误与随机错误的纠错编码方法,其对传统纠正随机错误的线性纠错码进行分解,使其在编码器端对固定错误进行屏蔽,从而提高编码效率。包括错误图样检测;编码矩阵构造,获得纠正固定错误和随机错误的编码矩阵G0与G1;特征序列生成,生成纠正固定错误的预编码序列;编码,根据G1和G0,对信息序列和特征序列进行编码;解码,恢复信息序列。本发明在编码器端对固定错误进行屏蔽,解码器不需固定错误信息而直接进行解码,具有很低的解码时延和复杂度,因而有很大的实用价值,同时,本方法还具有很强的通用性。
文档编号G11C29/42GK102930902SQ201210265610
公开日2013年2月13日 申请日期2012年7月27日 优先权日2012年7月27日
发明者康旺, 张德明, 张有光 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1