一种nand闪存系统的数据存储容错编码方法

文档序号:6544481阅读:130来源:国知局
一种nand闪存系统的数据存储容错编码方法
【专利摘要】本发明公开了一种NAND闪存系统的数据存储容错编码方法,该方法为:将初始数据从左到右进行迭代异或,左起第一位不变,生成码字;判断所述码字的0的数据个数是否过半,若过半,则对码字进行翻转,并在翻转后的数据最后添加标识位。本发明的方法能减少NAND闪存中待存入数据里CSPs数据模式,降低充电峰值电流,提高电压相对较低的区域中数据存储率,降低电压衰减导致的数据错误,从而加强数据可靠性。
【专利说明】一种NAND闪存系统的数据存储容错编码方法
【技术领域】
[0001]本发明涉及闪存容错编码【技术领域】,具体是一种NAND闪存系统的数据存储容错编码方法,适用于基于NAND闪存芯片的固态硬盘。
【背景技术】
[0002]固态硬盘(SSD,solid state drive)是一种利用Flash芯片或者DRAM芯片作为数据永久存储的硬盘,而基于Flash存储器又分为NOR型和NAND型,在这里我们所讨论的是NANDFlash memory,简称NAND闪存。NAND闪存是一种高性能、可携带、低功耗、非易失的存储技术,是当前在国际上备受关注的存储装置,而NAND闪存编码技术是当前研究者关注的热门领域,它涉及多学科高度交叉、知识高度集成的前沿热点研究领域。
[0003]由于计算机的数据只有O和I两种形式,在NAND闪存芯片中是使用晶体管中的电荷来表示和保存数据。NAND闪存芯片由许多晶体管组成,每个这样的晶体管称作“Cell”,即单元。Cell有两种类型:第一种是SLC(Single Level Cell),每个Cell可以存储Ibit数据,Cell中充满电表示0,放电后表示I ;第二种为MLC (Mult1-Level Cell),每个Cell可以存储多个bit,可以表示多种状态的数据,使用多个电压阈值来表示不同的数据状态。
[0004]每一个NAND闪存芯片中由许多Cell串组成,每个Cell串是由多个Cell串联而成,处于一条位线(bit-line)上,如图1中区域I内的Cell处于一条位线上,每个Cell串每次只能读写其中一个Cell,多个Cell串并联则可以并行读写多位数据,所有位于Cell串相同位置上的Cell称作一页(Page),如图1中区域2内的Cell就组成一页(Page),将一页(Page)上的Cell贯穿起来的导线组称为字线(word-line),多个页(Page)组成一个块(Block)。每一个NAND闪存芯片包含多个块(Block)。对于NAND闪存来说,读写操作的最小单位是页(Page),而一旦数据需要擦除,则需要擦除整块(Block)。
[0005]NAND闪存相比于传统硬盘虽然具备读取速度快、无噪音和发热量低等优点,但是随着时间的推移,NAND存储介质的使用寿命逐渐缩短,一方面对cell充电后,由于应力引起的泄漏电流(SILC)或电子陷阱从隧道氧化物从浮动闸门的电子喷射而引起电压衰减会导致数据保留错误(Data retention error);另一方面,读写操作电压引起的电子注入也会导致干扰错误(Program disturbance error),从而引发数值随机差错。而数据保留错误的出错率是干扰错误出错率的几百倍。由于闪存的Cell中数据保留错误的表现是数据O衰减变成数据1,因此,如果能增加存入数据中I的比重,便可以容错,降低数据保留错误。此外,在cell充电时,为了维持位线之间的电势差,需要在写操作的同时对相邻位线之间的电容进行充电,其充电的峰值电流可高达几百至上千毫安,不仅消耗电能而且这种突发的强电流极易导致存储设备异常,造成数据丢失。而CSPs数据模式(CSPs =Column StripePatterns,是指数据中O和I交错存入,如101010...,相邻数据都出现电势差,则需要很大电容来维持数据电势差)是消耗充电峰值电流最大的一种数据模式,因此,在数据存入NAND闪存时,有必要进行预先编码运算,让数据以合理的状态存入cell中,这里合理的状态是指尽可能将数据通过编码增加I的个数,从而减少电压衰减所导致的随机数据错误,以及消除CSPs数据模式,从而降低突发的写操作峰值电流强度和功耗,提高存储设备的可靠性。
[0006]R.Rivest等人在上世纪八十年代首次提出在NAND闪存里进行重写,由于闪存内的存储单元存储的数据只能由低到高,反过来则不允许。因此提出一种新颖的编码方案就是重写,在原来已经存储了数据的单元中继续存储数据,只需要升高原来的电压就可以达到重复存储数据的目的,同时,每次重写引入两个变量使译码得以实现。这种方法能够减少NAND闪存的擦写次数,但是并没有容错的作用。
[0007]Tanakamaru等人在近年提出一种SPEA消除算法和非对称编码算法,通过消除CSPs数据模式降低功耗,再使用非对称编码算法增加数据I的存储率,以此来降低数据保留错误和干扰错误。
[0008]NAND闪存是一种新兴存储设备,因此相关理论研究也是新兴的一个热门研究领域,对于闪存编码技术的目的包括消除NAND闪存数据存储过程中的大功耗数据模式,解决高电流所导致的存储设备异常问题;缓解闪存因使用寿命的降低所导致的数据保留错误问题;增加写的次数,以此减少擦除次数来延长闪存使用寿命。

【发明内容】

[0009]本发明所要解决的技术问题是,针对现有编码技术不足,提供一种NAND闪存系统的数据存储编码方法,减少NAND闪存中待存入数据里CSPs数据模式,增加数据I的个数,降低数据差错率,同 时降低充电峰值电流。
[0010]为解决上述技术问题,本发明所采用的技术方案是:一种NAND闪存系统的数据存储容错编码方法,该方法为:将初始数据从左到右进行迭代异或,左起第一位不变,生成新码字;判断所述新码字的O的数据个数是否过半,若过半,则对所述新码字进行翻转,并在翻转后的数据最后添加标识位。
[0011]本发明方法具体步骤如下:
[0012]I)将待存数据dQ,Cl1, d2……..Cl2lri输入到相应的I/O数据缓冲区,所述待存数据长度为Cn = 2n = 2m,η≥4,m≥3 ;
[0013]2)将所述待存数据从左到右进行异或处理,第一位Cltl保持不变,Cl1和Cltl异或得到新码字第Cl1个数据,以此类推,最后,d2n_2和d2n_3异或得到新码字第d2n_2个数据,Cl2lri和d2n_2异或得到新码字第Cl2lri个数据;
[0014]3)将经上述步骤2)异或处理后的数据进行二进制相加,并将相加结果存储在一个m位的寄存器中,当相加结果不足m位时,在前面补O ;将所述相加结果的最高有效位取反得到标识位的值;
[0015]4)将经上述步骤2)异或处理后的数据与所述标识位的值进行异或处理;
[0016]5)将所述标识位的值作为经上述步骤4)处理后的数据的最后一位,得到最终的(2n+l)位数据,在相应的I/O数据接口中输出最终的数据。
[0017]与现有技术相比,本发明所具有的有益效果为:本发明的方法能减少NAND闪存中待存入数据里CSPs数据模式,提高数据I的比重,从而减少电压衰减所导致的随机数据错误,并降低突发的写操作峰值电流强度和功耗,提高存储设备的可靠性。【专利附图】

【附图说明】
[0018]图1为NAND闪存的一个Block内部结构示意图;
[0019]图2为本发明一实施例编码过程示意图;
[0020]图3为本发明一实施例译码过程示意图;
[0021]图4为本发明逻辑电路实施示意图。
【具体实施方式】
[0022]本发明是针对NAND闪存系统的数据存储容错方法是先对待存入设备的初始数据进行迭代异或编码,得到新码字之后再进行纠错码ECC编码,把编码后的码字再写入NAND闪存芯片中。在读取数据时,是先把芯片中的码字进行ECC译码,然后再进行迭代异或译码读取到数据。以上的ECC编码/译码以及迭代异或编码/译码都是在FPGA(现场可编程门阵列)中完成。
[0023]本发明编码过程分为两个阶段:第一个阶段,对于待存入设备的初始数据先从左到右进行迭代异或,左起第一个数据保持不变,生成码字I (见图2);第二个阶段,对码字I的O和I的个数进行判断,如果O的个数大于一半则将码字I全部进行位翻转得到最终的码字2 (见图2),并且在数据后添加标识位Flag (见图2)。
[0024]本发明译码过程是首先根据标识位来判断码字2 (见图3)是否翻转,如果数据翻转则译码时也全部翻转数据,再从左到右迭代异或得到初始数据,同时第一位保持不变。
[0025]这种针对NAND闪存系统的数据存储容错方法在对初始数据进行编码之后可以减少CSPs数据模式,降低写操作的峰值电流和设备功耗,而对O个数的判断来翻转数据则能提高I在整个数据中所占比重,提高数据可靠性。
[0026]示例:数据长度使用2n_bits,编码过程如图2所示,译码过程如图3所示,其中,标识位Flag是冗余开销。
[0027]本发明具体实现步骤如下:
[0028]第一步,将待存数据先输入到相应的I/O数据缓冲区(如图4input区域),数据长度 Cn = 2n = 2m, η > 4, m > 3。
[0029]第二步,将数据从左到右进行异或处理。数据用‘ Cl1, d2……..Cl2lri来表示,第一位Cltl保持不变,Cl1和Cltl或得到新码字第Cl1数据,以此类推,最后,d2n_2和d2n_3或得到新码字第d2n_2数据,Cl2lri和d2n_2异或得到新码字第Cl2lri个数据。如图4。
[0030]第三步,将第二步得到的数据全部进行二进制相加,结果存储在一个m位的寄存器中,不足m位的在前面补O。这里只有一种情况会产生溢出,即第二步产生的数据均为1,二进制相加之后和为(m+1)位,但是这种情况的概率是l/22n,当η不断增大时候l/22n接近于O,因此这里暂不考虑。MSB(The most significant bit)是指最高有效位,也就是m位里的左起第一位。通过MSB可以判断第二步得到的数据中的O是否大于一半,如果MSB是1,那么数据中O的个数少于数据总长度的1/2,如果MSB是0,则数据中O的个数大于等于数据总长度的1/2。计算出MSB的值后取反得到标识位的值。如图4。
[0031]第四步,将第二步产生的数据均和所述标识位进行异或处理得到最终的数据。如图4。
[0032]第五步,将第四步产生的数据(含标识位,置于数据最后一位)在相应的I/O数据接口中输出(如图4output区域)。
【权利要求】
1.一种NAND闪存系统的数据存储容错编码方法,其特征在于,该方法为:将初始数据从左到右进行迭代异或,左起第一位不变,生成新码字;判断所述新码字的O的数据个数是否过半,若过半,则对所述新码字进行翻转,并在翻转后的数据最后添加标识位。
2.根据权利要求1所述的NAND闪存系统的数据存储容错编码方法,其特征在于,该方法具体步骤如下: 1)将待存数据屯,Cl1,d2……..Cl2lri输入到相应的I/O数据缓冲区,所述待存数据长度为 Cn = 2n = 2% η ≤ 4,m ≤ 3 ; 2)将所述待存数据从左到右进行异或处理,第一位Cltl保持不变,Cl1和Cltl异或得到新码字第Cl1个数据,以此类推,最后,d2n_2和d2n_3异或得到新码字第d2n_2个数据,Cl2lri和d2n_2异或得到新码字第Cl2lri个数据; 3)将经上述步骤2)异或处理后的数据进行二进制相加,并将相加结果存储在一个m位的寄存器中,当相加结果不足m位时,在前面补O ;将所述相加结果的最高有效位取反得到标识位的值; 4)将经上述步骤2)异或处理后的数据与所述标识位的值进行异或处理; 5)将所述标识位的值作为经上述步骤4)处理后的数据的最后一位,即标识位,得到最终的(2n+l)位数据,在相应的I/O数据接口中输出最终的数据。
【文档编号】G06F11/10GK103942115SQ201410162872
【公开日】2014年7月23日 申请日期:2014年4月22日 优先权日:2014年4月22日
【发明者】胡玉鹏, 刘万青, 刘卫东, 卿敏龙, 宋顺, 周超 申请人:湖南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1