一种闪存纠错方法和装置与流程

文档序号:12598582阅读:197来源:国知局
本发明涉及计算机技术,尤其涉及一种闪存纠错方法和装置。
背景技术
::随着闪存技术的不断成熟,其被广泛应用于固态存储领域。但是闪存中保存的数据,可能存在若干比特位的错误,如果直接将闪存物理页中读出的数据返回给上层业务,就可能造成业务失败。为了保证返回给上层业务的数据是正确有效的,需要对业务数据进行错误检查和纠正(ErrorCorrectingCode,简称为:ECC)保护,即对业务数据进行ECC编码,然后将ECC编码后的数据写入闪存。每当读取数据时,对从闪存中读取出来的数据进行错误检查和纠正,从而提升业务数据的可靠性。但ECC保护的纠错能力有一定的范围,只能在页面数据中出现比特位错误数量不超过一定的上限时才有效。如果所读取的介质颗粒中发生错误的比特的个数超过了ECC纠错码的纠错能力,则纠错码将无法恢复原始存储的数据信息,导致存储信息的丢失。为了避免存储信息的丢失,现有技术中常用的解决方案是Readretry,即如果用默认的读电压阈值读取介质颗粒的状态后用纠错码无法恢复原始信息时,通过调整读电压阈值,再次进行读取介质颗粒的状态并用纠错码恢复原始信息的机制。现有技术需要多次调整读电压阈值进行尝试性的读取数据,从而造成了读时延的成倍增加(通常从微秒量级增加到毫秒量级),导致SSD存储系统性能的大幅降低。技术实现要素:本发明实施例提供一种闪存纠错方法和装置,以克服现有技术中由于读时延的成倍增加而导致的SSD存储系统大幅降低的问题。第一方面,本发明实施例提供一种闪存纠错方法,包括:步骤101:在对采用第n读电压阈值读取的闪存页数据进行纠错译码失败后,采用第n+1读电压阈值读取闪存页的数据,其中,第n+1读取电压阈值与第n读电压阈值不同,n为大于等于1的正整数;步骤102:确定采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据中的第一数据位,第一数据位为采用第n+1读电压阈值读取闪存页得到的数据中与采用第m读电压阈值读取闪存页得到的数据中相同数据位对应的数据不同的数据位,m为大于等于1且小于等于n的正整数;步骤103:降低采用第n+1读电压阈值读取闪存页得到的数据中的第一数据位的可信度,可信度为第一数据位对应的置信度的绝对值;步骤104:根据调整后的第一数据位的可信度,对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码。在本实施例中,联合使用两次读取的同一闪存页得到的数据,降低数据位不同的数据对应的数据位的可信度,从而有效提高了纠错译码的成功率,减小了读时延,使得SSD存储系统的性能大幅提升。在前述第一方面的一些实施例中,还可以包括:确定采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据中的第二数据位,第二数据位为采用第n+1读电压阈值读取闪存页得到的数据中与采用第m读电压阈值读取闪存页得到的数据中相同数据位对应的数据相同的数据位;然后,提高采用第n+1读电压阈值读取闪存页得到的数据中的第二数据位的可信度。在本实施例中,通过联合使用两次读取的同一闪存页得到的数据,在降低降低数据位不同的数据对应的数据位可信度的同时,提高数据位相同的数据对应的数据位的可信度,从而可以进一步的提高纠错译码的成功率。在前述第一方面的一些实施例中,确定采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据中的第一数据位,具体包括:将采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据进行异或运算得到联合数据;若联合数据中的数据位的值为1,则确定该数据位为第一数据位。在本实施例中,通过异或的方法可快速得到数据不同的数据位,有效减小了纠错译码的时延。进一步的,在上述实施例的基础上,根据调整后的第一数据位的可信度,对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码之后,还包括:如果纠错译码成功,则将第n+1读电压阈值修改为预设读电压阈值;如果纠错译码不成功,则将n递增1,并重新执行上述第一方面中步骤101至步骤104。本实施例中,当译码不成功时,则重新循环执行上述第一方面中的步骤101至步骤104,从而有效提高了纠错译码的成功率。进一步的,重新执行上述第一方面中步骤101至步骤104之前还需要判断n递增后的的值是否大于预设阈值,若不大于,则重新执行上述第一方面中步骤101至步骤104;若大于,则确定闪存页所在的数据块为坏块。本实施例中,当多次执行上述各个实施例的步骤后,如果译码均不成功,则终止译码过程,且上报错误,从而避免下次继续使用该数据块。进一步的,根据调整后的第一数据位的可信度,对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码,包括:采用低密度奇偶校验码LDPC对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码。第二方面,本发明实施例提供一种闪存纠错装置,包括:读取模块、确定模块、可信度调整模块和译码模块,具体的:读取模块,用于在对采用第n读电压阈值读取的闪存页数据进行纠错译码失败后,采用第n+1读电压阈值读取闪存页的数据,第n+1读取电压阈值与第n读电压阈值不同,n为大于等于1的正整数;确定模块,用于确定采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据中的第一数据位,第一数据位为采用第n+1读电压阈值读取闪存页得到的数据中与采用第m读电压阈值读取闪存页得到的数据中相同数据位对应的数据不同的数据位,m为大于等于1且小于等于n的正整数;可信度调整模块,用于降低采用第n+1读电压阈值读取闪存页得到的数 据中的第一数据位的可信度,可信度为第一数据位对应的置信度的绝对值译码模块,用于根据调整后的第一数据位的可信度,对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码。本实施例的装置,用于执行第一方面提供的闪存纠错方法,其实现原理和有益效果类似,此处不再赘述。进一步的,确定模块,还用于确定采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据中的第二数据位,第二数据位为采用第n+1读电压阈值读取闪存页得到的数据中与采用第m读电压阈值读取闪存页得到的数据中相同数据位对应的数据相同的数据位;可信度调整模块,还用于提高采用第n+1读电压阈值读取闪存页得到的数据中的第二数据位的可信度。进一步的,确定模块具体用于:将采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据进行异或运算得到联合数据;若联合数据中的数据位的值为1,则确定该数据位为第一数据位。进一步的,还包括:修正模块,修正模块用于判断译码模块纠错译码是否成功,若成功,则修正模块还用于将第n+1读电压阈值修改为预设读电压阈值;若不成功,则修正模块还用于向读取模块发送指示消息,指示消息用于指示读取模块再次读取闪存页的数据,其中,n递增1。。进一步的,修正模块具体用于:向读取模块发送指示消息之前,修正模块还用于判断n递增后的值是否大于预设阈值,若不大于,则修正模块用于向读取模块发送指示消息;若大于,则修正模块用于确定闪存页所在的数据块为坏块。进一步的,译码模块,具体用于:采用低密度奇偶校验码LDPC对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码。本发明实施例提供一种闪存纠错方法和装置,该方法包括:首先,在对 采用第n读电压阈值读取的闪存页数据进行纠错译码失败后,采用第n+1读电压阈值读取闪存页的数据,第n+1读取电压阈值与第n读电压阈值不同,n为大于等于1的正整数;然后,确定采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据中的第一数据位,第一数据位为采用第n+1读电压阈值读取闪存页得到的数据中与采用第m读电压阈值读取闪存页得到的数据中相同数据位对应的数据不同的数据位,m为大于等于1且小于等于n的正整数;进而,降低采用第n+1读电压阈值读取闪存页得到的数据中的第一数据位的可信度,可信度为第一数据位对应的置信度的绝对值;最后,根据调整后的第一数据位的可信度,对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码。其中,联合使用两次读取的同一闪存页得到的数据,降低数据位不同的数据对应的数据位的可信度,从而有效提高了纠错译码的成功率,减小了读时延,使得SSD存储系统的性能大幅提升。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1所示为SSD控制器的一个基本功能模块示意图;图2所示为介质颗粒中理想的电压分布状态;图3所示为介质颗粒中实际的电压分布状态一;图4所示为介质颗粒中实际的电压分布状态二;图5所示为现有技术基于ReadRetry的纠错方案流程图;图6所示为本发明实施例提供的闪存纠错方法的流程图;图7所示为本发明实施例一提供的的闪存纠错装置的结构示意图一;图8所示为本发明实施例一提供的的闪存纠错装置的结构示意图二。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发 明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。固态存储很早就被应用于企业高价值数据的存储,以及消费电子产品中的存储。但随着企业级存储应用的日趋复杂,传统存储阵列逐渐在以下几个方面面临挑战:(1)可靠性。受限于硬盘驱动器(HardDiskDrive,简称为:HDD)的机械部件,单块HDD的年失效率难以继续有效降低,这阻碍了存储阵列可靠性的进一步提升。(2)性能。传统阵列依靠堆积大量的HDD来获取较高的读写速度,但是并不能有效降低读写时延;同时随着数据中心虚拟化的不断扩展,传统阵列所接收到的读写数据模型越来越随机,越来越难以作针对性的优化。(3)成本。企业一般通过堆积HDD来获取所需的读写速度,实际上,这导致了很多额外的容量成本,以及为了支撑这些大量的HDD的空间、能耗成本。基于上述问题,闪存应运而生,且为解决上述问题提供了可能。当前因为闪存在价格、容量、可靠性等多方面达到了相对领先的平衡,因此被广泛应用于固态存储领域。基于闪存的固态硬盘(SolidStateDrive,简称为:SSD)的核心部件为:闪存和主控制器。闪存是基本存储单元,而主控制器则是SSD的心脏,负责运算和任务分配,两者的结合才是一款SSD性能的真正体现。如果主控制器能力不足,会无法完全发挥闪存高速存取的特性,而如果闪存品质较低,那么主控再强也无济于事。图1所示为SSD控制器的一个基本功能模块示意图,如图1所示,SSD控制器由写数据处理模块、读数据处理模块以及读/写/擦除闪存控制模块组成。其中写数据处理模块完成对数据流的压缩、加密、加绕以及ECC编码等处理操作;读数据处理模块是写处理模块的逆过程,它完成对从闪存中读取的数据的ECC译码、解扰、解密以及解压缩等处理操作;读/写/擦除闪存控制模块完成从闪存颗粒读取数据的控制、写入数据的控制和擦除数据的控制 功能。SSD控制器普遍都将ECC编码器和解码器作为必选功能,其目的是提升数据的可靠性和闪存颗粒的寿命。但是,闪存中保存的数据,经过一段时间后,可能存在若干bit位的错误。如果直接将闪存物理页中读出的数据返回给上层业务,就可能造成业务失败。为了保证返回给上层业务的数据是正确有效的,SSD控制器会对业务数据进行ECC保护,即对业务数据进行ECC编码,然后将ECC编码后的数据写入闪存。每当读取数据时,SSD控制器会对从闪存中读取出来的数据进行错误检查和纠正,从而提升业务数据的可靠性。传统的SSD控制器受限于计算能力,所使用的ECC编码和译码都是非常简单的纠错码,比如BCH码,其纠错能力有限,只能在页面数据中出现bit位错误数量不超过一定的上限时才有效。举例来讲,传统的SSD控制器通常使用纠错能为24bit/1KB的BCH码,即每1KB数据(包含业务数据和校验数据)内出现了bit位错误不超过24个时,控制器可以通过计算的方式得出正确有效的业务数据。当某个页中的bit位错误数超过控制器的计算能力后,该页的业务数据无法被正确读出,此时便产生一个不可纠(uncorrectable)错误。当前,大容量高速闪存(NandFlash)存储系统是业界的主打产品。但在当前产品应用中NandFlash存储介质主要有两方面的缺点:(1)由于NandFlash物理特性的原因导致存储数据出错的现象;(2)用于NandFlash频繁擦写导致介质颗粒磨损老化,进而寿命受限的现象;因此在面向企业级高可靠性存储产品的应用中,提升NandFlash的可靠性和寿命是最核心的技术挑战。图2所示为介质颗粒中理想的电压分布状态,正常情况下介质颗粒中的电压分布应该为如图2所示的形态,其中T1,T2,T3分别是读电压阈值。但由于一些原因,介质颗粒中的电压分布状态会发生错误,通常来讲,NandFlash介质发生错误的原因主导的有两方面:(1)随着介质颗粒擦写次数的不断增加,编程过程中介质颗粒之间的编程干扰等,会导致介质的电压分布发生偏移,如图3所示,由于编程干扰,导致介质颗粒中的电压分布状态相对于图2所示的介质颗粒中理想的电压分布状态向右偏移,此时如果用理想情况下的读电压阈值读取介质颗粒,会造成 读取介质颗粒状态判决错误的大量增加。(2)随着介质颗粒放置时间的增加,介质颗粒中存储的电子发生了泄露,因此也会导致介质的电压分布发生偏移,如图4所示,由于长时间方式,导致介质颗粒中的电压分布状态相对于图2所示的介质颗粒中理想的电压分布状态向右偏移,同理也会造成读取介质颗粒状态判决错误的大量增加。由于以上两个物理机制导致的电压分布的偏移现象,在用固定的读电压阈值读取介质颗粒的状态时,就会发生判决错误。如果所读取的介质颗粒中发生错误的介质颗粒的个数超过了ECC纠错码的纠错能力,则纠错码将无法恢复原始存储的数据信息,导致存储信息的丢失。数据的丢失在面向企业级的存储产品中是灾难性的,因此业界都通过各种技术手段提升SSD存储产品的数据可靠性,尽可能的将发生数据丢失的概率降低。针对发生错误的两种原因,闪存介质厂商提供的纠错解决方案是Readretry,即用默认的读电压阈值读取介质颗粒的状态后用纠错码无法恢复原始信息时,通过调整读电压阈值,再次进行读取介质颗粒的状态并用纠错码恢复原始信息的机制。在现有技术中,SSD控制器可以通过ReadRetry命令,多次调整介质颗粒的读电压阈值,从而逐次逼近真实的介质颗粒电压阈值。该方案的一个致命缺点是ReadRetry的过程增加了读取介质颗粒的次数,从而造成读时延的大幅下降,最终导致SSD存储系统性能的急剧下降。具体的,图5所示为现有技术基于ReadRetry的纠错方案流程图,如图5所示:第一步:用默认的读电压阈值读取闪存介质的每一个页(page),并进行ECC纠错译码,如果译码成功,则反馈译码成功,ECC译码设备输出正确的原始信息,如果译码失败,则执行第二步;第二步:在第一步中如果ECC纠错失败并报错,则按照表1中的顺序(该表是美光(Micron)给出的默认读阈值调整顺序,用户也可以根据实际的应用场景自行定义)调整读电压阈值到读电压阈值选项1(01h)后,再次读取出错的页(page),并进行ECC纠错译码,如果译码成功,则将读电压阈值重新设置成默认的读电压阈值选项0),然后反馈译码成功,ECC译码设备输出正确的原始信息,如果译码失败,则执行第三步;第三步:在第二步中如果ECC译码设备再次纠错失败,则按照表1的顺序调整读电压阈值到读电压阈值选项2(02h)后,再次读取出错的页(page),并进行ECC纠错译码,如果译码成功,则将读电压阈值重新设置成默认的读电压阈值(选项0),然后反馈译码成功,ECC译码设备输出正确的原始信息,如果译码失败,则执行第四步;第四步:如果第三步再次译码失败,则按照表1列出的读阈值选择顺序依次调整读电压阈值,再次读取出错的页(page),并进行ECC纠错译码,直到ECC译码成功后,反馈译码成功,ECC译码设备输出正确的原始信息。如果SSD控制器尝试完上表中列出的所有选项后,ECC译码仍然失败,则反馈译码失败,该页(page)所在的块(block)(闪存介质的block包含很多个page)被SSD控制器中的上层管理系统标记为坏块。表1采用现有技术方案中存在以下问题:(1)现有技术是通过遍历读阈值的方式来逐步降低读取介质页(page)的出错个数,试图通过这样的方法使得介质(page)中出错的个数满足ECC纠错设备的纠错能力,但是这样做并没从本质上提升ECC纠错设备的纠错能力;举例来讲,假设ECC纠错设备的纠错能力是1KB/40bit(即1KB数据中可以纠40个比特的错误),ReadRetry的纠错机制希望通过调整读电压阈值的方式使得1KB数据中出错的个数少于40bit。(2)由于现有技术方案没有在本质上提升ECC纠错设备的纠错能力,因此需要多次调整读电压阈值进行尝试性的读取数据,从而造成了读时延的成倍增加(通常从微秒量级增加到毫秒量级),导致SSD存储系统性能的大幅降低。针对这一问题,本发明给出了一种增强ReadRetry纠错能力的纠错机制, 本方案在现有技术的基础上,联合利用两次读取的介质颗粒判决信息,从联合两次处理后得到的数据,并从中获得‘软信息’,进而提升了ECC纠错码的纠错能力,最终减少ReadRetry的读取次数,降低了读时延。下面通过具体实施例介绍本发明的方案:图6所示为本发明实施例提供的闪存纠错方法的流程图,如图6所示,本实施例的方法可以包括:步骤101、在对采用第n读电压阈值读取的闪存页数据进行纠错译码失败后,采用第n+1读电压阈值读取闪存页的数据,第n+1读取电压阈值与第n读电压阈值不同,n为大于等于1的正整数。上述的读电压阈值的值可以根据现有技术中已有的读电压阈值表进行调整,也可以为用户自己设定,本发明不对其加以限制。当采用第n读电压阈值读取的闪存页数据进行纠错译码失败后,将采用与第n读电压阈值不同的第n+1读电压阈值继续读取该闪存页的数据。步骤102、确定采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据中的第一数据位,第一数据位为采用第n+1读电压阈值读取闪存页得到的数据中与采用第m读电压阈值读取闪存页得到的数据中相同数据位对应的数据不同的数据位,m为大于等于1且小于等于n的正整数。步骤103:降低采用第n+1读电压阈值读取闪存页得到的数据中的第一数据位的可信度,可信度为第一数据位对应的置信度的绝对值。例如:置信度为0、±1、±2、±3、±4,则对应的可信度为0、1、2、3、4。在本发明实施例中,为了描述简单,将采用第m读电压阈值读取闪存页得到的数据称为第m数据;将采用第n+1读电压阈值读取闪存页得到的数据称为第n+1数据。值得注意的是,上述的第m数据和第n+1数据均是未经过纠错译码的数据。具体的:判断第m数据和第n+1数据中哪些比特位对应的数据不同,并降低该些比特位对应的可信度;例如:原数据为10101010,第m数据为10111010且该数据经纠错译码 后没有恢复出原数据,第n+1数据为10101010,则确定第m数据和第n+1数据中的第4比特位的数据不同,其他比特位的数据均相同,则可将第4比特位对应的可信度降低。继续上述例子,假如第n+1数据中第4比特位对应的可信度为3(置信度为-3),则可将第n+1数据中第4比特位对应的可信度降低为任一个可信度,只要该可信度小于3且大于等于系统规定的最小的可信度即可,例如可以为1或2等,但是,在实际应用中,可以将可信度逐渐减低,也即,将此时的第4比特位对应的置信度3降低为2。上述的置信度可以通过置信度映射获得,具体的:置信度通常定义为逻辑值判断为0的概率和逻辑值判断为1的概率的对数似然比值。举例来讲,逻辑值判断为0的概率为p,则逻辑值判断为1的概率为1-p,据此置信度定义为置信度映射将逻辑值映射为置信度的定量值。置信度的定量值根据需求可用自定义的量化比特位数表示。比如,如果采用4比特量化,其中1比特表示符号位,其余3比特表示绝对值,则置信度的定量值可以表示0,±1,±2,±3,±4,±5,±6,±7的一组取值集合。置信度映射可以使用查表等各种方便的方式完成从逻辑值到置信度取值的映射。需要说明的,置信度的绝对值越大,表示其可信度越高,因此置信度是描述判决值可信性的定量指标,此处也说明了由于上述例子中第4比特位对应的数据可信度低,因此要将该比特位对应的置信度降低,从而提高纠错译码的成功率。在实际应用中,如果使用一一比对的方法获取第m数据和第n+1数据中数据不同的比特位会增大系统的延时,因此,可采用将第m数据和第n+1数据进行异或运算得到联合数据,从而根据联合数据即可直接确定哪些比特位对应的数据相同,哪些比特位对应的数据不同,也即,联合数据中的数据位的值如果是1,则表明第m数据和第n+1数据中该数据位对应的数据不同,联合数据中的数据位的值如果是0,则表明第m数据和第n+1数据中该数据位对应的数据相同。继续按照上述的例子,第m数据为10111010,第n+1数据为10101010,将第m数据和第n+1数据进行异或运算,即:10111010⊕10101010=00010000,由于异或运算中如果进行异或的两个值不相同,则异或结果为1,如果进行 异或的两个值相同,异或结果为0,因此,根据上述异或结果00010000,可以很容易得知第4比特位的数据不同,其他比特位的数据均相同,从而提高了系统的处理效率,减小了系统的处理时延。步骤104、根据调整后的第一数据位的可信度,对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码。纠错设备根据调整后的第一数据位的可信度对第n+1数据数据进行纠错译码,如果纠错译码成功,则将此时的第n+1读电压阈值重新设置成预设的读电压阈值(也即为默认的读电压阈值),然后反馈纠错译码成功,纠错译码设备输出正确的原始信息。如果纠错译码不成功,则按照预设规则修改读电压阈值,也即将步骤101至步骤104中的n递增为n+1,并重新执行上述步骤101到104所示的步骤。进一步的,在循环执行上述步骤101-步骤104之前,还需判断n递增后的值是否大于预设阈值,若不大于,此时则重新执行上述步骤101至步骤104,若大于,则确定当前的闪存页所在的数据块为坏块。此处的预设阈值可以为用户自定义设置,也可以为系统预置,本发明不对其加以限制。为了进一步的提高纠错译码的成功率,在本发明中,还可以提高所述采用第n+1读电压阈值读取所述闪存页得到的数据和所述采用第m读电压阈值读取所述闪存页得到的数据中的第二数据位的可信度,其中,所述第二数据位为所述采用第n+1读电压阈值读取所述闪存页得到的数据中与所述采用第m读电压阈值读取所述闪存页得到的数据中相同数据位对应的数据相同的数据位。继续按照上述的例子,将采用第m读电压阈值读取闪存页得到的数据称为第m数据;将采用第n+1读电压阈值读取闪存页得到的数据称为第n+1数据。值得注意的是,上述的第m数据和第n+1数据均是未经过纠错译码的数据。具体的,确定第m数据和第n+1数据中哪些比特位对应的数据相同,并 提高该些比特位对应的可信度。在提高该些比特位对应的可信度之前,还可以包括,先判断该些比特位对应的可信度是否为最高可信度,如果是最高可信度,则不提高该些比特位对应的可信度,如果不是最高可信度,则提高该些比特位对应的可信度。例如:原数据为10101010,第m数据为10111010且该数据经纠错译码后没有恢复出原数据,第n+1数据为10101010,则确定第m数据和第n+1数据中除第4比特位的数据不同外,其他比特位的数据均相同,则在降低第4比特位对应的可信度降低的同时,提高其他比特位对应的可信度。进一步的,需要判断第1比特位、第2比特位、第3比特位、第5比特位、第6比特位、第7比特位、第8比特位对应的可信度是否为最高可信度,假如此时第6比特位和第8比特位对应的可信度为最高可信度,则无需提高该比特位的可信度,而提高第1比特位、第2比特位、第3比特位、第5比特位和第7比特位对应的可信度。同样可以采样将第m数据和第n+1数据进行异或运算的方法求得其中哪些比特位对应的数据相同,其实现方式与上述实施例中描述第m数据和第n+1数据中哪些比特位对应的数据不同的方法相同,此处不再赘述。表2是对美光NandFlash颗粒进行实测的统计结果,从表中可以看出在擦写次数分别为30K~36K下,本发明的技术方案的译码成功频率都大幅高于现有技术方案基于单次读信息的译码成功频率。本发明的技术方案译码成功频率的提升,将减少SSD控制器进行ReadRetry的次数,降低读时延,从而提升SSD存储系统的性能。表2理论推导和仿真结果表明:通过联合利用两次读取的同一闪存页的数据,并对两次的数据进行运算可以获取额外的软信息,纠错设备利用软信息后进 行译码纠错,其纠错能力可提升1倍以上。举例来讲,对于一个码长为4KByte字节,码率为94.57%的LDPC,在单次读取下的纠错能力近似为4KB/65bit(即4KB数据中可以纠65个比特的错误),而通过联合利用两次读取的软信息后,其纠错能力可以提升到近似为4KB/144bit(即4KB数据中可以纠144个比特的错误),因此联合两次的纠错能力是单次纠错能力的2.2倍。本实施例提供的闪存纠错方法,包括:在对采用第n读电压阈值读取的闪存页数据进行纠错译码失败后,采用第n+1读电压阈值读取闪存页的数据,第n+1读取电压阈值与第n读电压阈值不同,n为大于等于1的正整数;确定采用第n+1读电压阈值读取闪存页得到的数据和采用第m读电压阈值读取闪存页得到的数据中的第一数据位,第一数据位为采用第n+1读电压阈值读取闪存页得到的数据中与采用第m读电压阈值读取闪存页得到的数据中相同数据位对应的数据不同的数据位,m为大于等于1且小于等于n的正整数;降低采用第n+1读电压阈值读取闪存页得到的数据中的第一数据位的可信度,可信度为第一数据位对应的置信度的绝对值;根据调整后的第一数据位的可信度,对采用第n+1读电压阈值读取闪存页得到的数据进行纠错译码。其中,联合使用两次读取的同一闪存页得到的数据,降低数据位不同的数据对应的数据位的可信度,从而有效提高了纠错译码的成功率,减小了读时延,使得SSD存储系统的性能大幅提升。图7所示为本发明实施例一提供的的闪存纠错装置的结构示意图,如图7所示,本实施例的装置可以包括:读取模块11、确定模块12、可信度调整模块13和译码模块14,其中,读取模块11,用于在对采用第n读电压阈值读取的闪存页数据进行纠错译码失败后,采用第n+1读电压阈值读取闪存页的数据,所述第n+1读取电压阈值与所述第n读电压阈值不同,n为大于等于1的正整数;确定模块12,用于确定所述采用第n+1读电压阈值读取所述闪存页得到的数据和采用第m读电压阈值读取所述闪存页得到的数据中的第一数据位,所述第一数据位为所述采用第n+1读电压阈值读取所述闪存页得到的数据中与所述采用第m读电压阈值读取所述闪存页得到的数据中相同数据位对应的 数据不同的数据位,m为大于等于1且小于等于n的正整数;可信度调整模块13,用于降低所述采用第n+1读电压阈值读取所述闪存页得到的数据中的所述第一数据位的可信度,所述可信度为所述第一数据位对应的置信度的绝对值译码模块14,用于根据调整后的所述第一数据位的可信度,对所述采用第n+1读电压阈值读取所述闪存页得到的数据进行纠错译码。可选地,在图7所示实施例的基础上,所述确定模块12还用于:还用于确定所述采用第n+1读电压阈值读取所述闪存页得到的数据和所述采用第m读电压阈值读取所述闪存页得到的数据中的第二数据位,所述第二数据位为所述采用第n+1读电压阈值读取所述闪存页得到的数据中与所述采用第m读电压阈值读取所述闪存页得到的数据中相同数据位对应的数据相同的数据位;所述可信度调整模块,还用于提高所述采用第n+1读电压阈值读取所述闪存页得到的数据中的所述第二数据位的可信度。进一步的,所述确定模块12具体用于:将所述采用第n+1读电压阈值读取所述闪存页得到的数据和所述采用第m读电压阈值读取所述闪存页得到的数据进行异或运算得到联合数据;若所述联合数据中的数据位的值为1,则确定该数据位为所述第一数据位。可选地,在图7所示实施例的基础上,如图8所示,上述的装置,还包括:修正模块15,所述修正模块15用于判断所述译码模块纠错译码是否成功,若成功,则所述修正模块15还用于将所述第n+1读电压阈值修改为预设读电压阈值;若不成功,则所述修正模块15还用于向所述读取模块发送指示消息,所述指示消息用于指示所述读取模块再次读取所述闪存页的数据,其中,所述n递增1。可选地,所述修正模块具体用于:向所述读取模块发送指示消息之前,所述修正模块还用于判断所述n递增后的值是否大于预设阈值,若不大于,则所述修正模块用于向所述读取模块发送所述指示消息;若大于,则所述修正模块用于确定所述闪存页所在的数据块为坏块。可选的,所述译码模块14,具体用于:采用低密度奇偶校验码LDPC对所述采用第n+1读电压阈值读取所述闪存页得到的数据进行纠错译码。本实施例的装置,可以用于执行图6所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:只读存储记忆体(Read-OnlyMemory,简称为:ROM)、随机存储记忆体(RandomAccessMemory,简称为:RAM)、磁碟、光盘、寄存器、内存等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1