纠错处理的方法、装置及固态硬盘设备的制作方法

文档序号:6769423阅读:143来源:国知局
专利名称:纠错处理的方法、装置及固态硬盘设备的制作方法
技术领域
本发明涉及数据存储技术,特别涉及一种纠错处理的方法、装置和固态硬盘设备。
背景技术
固态硬盘多使用NAND Flash (与非门闪存)来实现,NAND Flash是一种非易失性 随机访问存储介质,其特点是断电后数据不丢失,它不同于传统的易失性随机访问存储介 质和挥发性存储器,可以作为外部存储器使用。固体硬盘的NAND Flash在使用过程会出现翻转导致数据出错,所以在使用NAND Flash的固态硬盘需要配备错误检查和纠正(Error Checking and Correcting,以下简称 ECC)模块。目前NAND Flash在出厂时都会有最低配备ECC纠错位数的要求,如4bits/512B、 24bits/lKB等;但是ECC纠错的位数越多带来的功耗就越大,固态硬盘的读取速度也会带 来影响。另外,为了保证固态硬盘的可靠性,在ECC将要出现不可纠正的ECC错误时往往采 取ECC预警,如采用8bits/512Bytes的ECC纠错,在出现6bit错误就启动预警,系统再根 据具体的情况做容错处理;现有技术的方案中,考虑到实现复杂度和成本的问题,通常是采用固定的ECC算 法和固定的ECC预警处理。固定的ECC算法如采用4bits/512Bytes的ECC纠错、采用 8bits/512Bytes的ECC纠错;固定的ECC预警如采用8bits/512Bytes的ECC纠错,在出现 6bit错误时就启动预警,系统再根据具体的情况做容错处理。但ECC错误在NAND Flash中实际出现的情况比较复杂,由于各供应商的NAND Flash颗粒之间是有差别的,所以各种颗粒在使用过程中的ECC错误位数出现的规律也不 尽相同,固定的ECC算法在需要纠错位数较多的情况下要耗费很大的功耗,并且在读取的 时候影响速度;固定的预警水线不能兼容多家厂商,以Mbits/IK Bytes的ECC纠错为例, 假设ECC预警水线设为20bit,针对不同供应商的实际的ECC出错曲线,该预警水线值可能 会有问题,例如符合了 A供应商的ECC出现特点但未必符合B供应商的ECC出现特点。另外,ECC错误位数出现的规律与擦/写次数之间也是有关系的,现有技术方案并 没有考虑擦/写次数对出现ECC的影响,依然以Mbits/IK Bytes的ECC纠错为例,在擦/ 写1000次后读20,000次可能会出现Mbit ECC错误;而在擦/写10次后读20,000次可 能仅仅出现^it ECC错误;不考虑不同供应商的ECC分布区别以及不考虑擦/写次数对出 现ECC的影响,在实际应用时会带来问题。因此,采用固定的ECC算法和固定的ECC预警处理的方式,缺乏灵活性,不能满足 多个供应商的不同的需求,ECC处理的效果也比较差。

发明内容
本发明实施例公开了一种纠错处理的方法、装置和固态硬盘设备,通过在ECC编 码模块中设置多个ECC算法单元,使得可以根据实际应用的颗粒特性选择相应的ECC算法, 改善ECC处理的效果。
本发明实施例提供了一种纠错处理的方法,包括根据错误检查和纠正ECC算法与进行ECC纠错的硬盘的颗粒特性的对应关系,在 ECC模块中嵌入与所述硬盘的颗粒特性对应的至少两种ECC算法;根据当前进行ECC纠错的硬盘的颗粒特性,选择相应的ECC算法进行ECC纠错处理。本发明实施例还提供了一种纠错处理的装置,包括错误检查和纠正ECC模块;所述ECC模块包括ECC算法单元和选择单元;所述ECC算法单元中嵌入至少两种ECC算法,所述ECC算法与进行ECC纠错的硬 盘的颗粒特性相对应;所述选择单元用于根据当前进行ECC纠错硬盘的颗粒特性,选择相应的ECC算法 进行ECC纠错处理。本发明实施例还提供了一种固态硬盘设备,包括处理器、存储模块、控制器、内存 以及接口模块;其中所述控制器包括上述的纠错处理的装置。本发明在对硬盘进行ECC处理的过程中,通过在ECC编码模块设置多个ECC算法, 使得可以根据实际应用的颗粒特性选择相应的ECC算法,能够满足各个供应商的不同的需 求,同时改善ECC处理的效果。


图Ia为本发明一实施例提供的纠错处理的方法流程图;图Ib为本发明一实施例提供的ECC模块进行ECC编码处理的示意图;图Ic为本发明一实施例提供的ECC模块进行EEC解码处理的示意图;图加为本发明一实施例提供的纠错预警的方法流程图;图2b为本发明一实施例提供的根据擦/写次数设置ECC预警水线的示意图;图3为本发明一实施例提供的纠错处理的装置的结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。在本发明实施例中,在对固态硬盘进行ECC纠错处理的过程中,通过在ECC模块设 置多个ECC算法单元,使得可以根据实际应用的颗粒特性选择相应的ECC算法,能够满足各 个供应商的不同的需求,同时改善ECC处理的效果。本实施例提供的纠错处理的方法的流程图如图Ia所示,本实施例的执行主体可 以为ECC模块,方法包括步骤11、根据ECC算法与进行ECC纠错的硬盘的颗粒特性的对应关系,在ECC模块 中嵌入与所述硬盘的颗粒特性相对应的至少两种ECC算法;本实施例中采用的ECC模块参见图Ib和图Ic所示,其中图Ib为ECC模块进行编 码处理的示意图,图Ic为ECC模块进行解码处理的示意图。
在ECC模块中设置有ECC算法单元,ECC算法单元中设置有至少两种ECC算法,如 8bit/512B、12bit/512B、24bit/lKB等,实际的算法模块包含且不限于此,可以根据不同供 应商的需求设计相应的算法,不同供应商生产的NAND Flash的颗粒特性是有差别的,而不 同NAND Flash的颗粒特性需要使用不同的ECC算法进行ECC纠错,才能达到最有效的效果。本实施例中,考虑到的固态硬盘的颗粒特性可包括多个方面,比如可以是擦/写 (Program/Erase)次数、CPU占用率、内存占用率等。以考虑擦/写次数为例进行说明,比如, 使用供应商A的NAND Flash的固态硬盘A的颗粒特性,与使用供应商B的NAND Flash的固 态硬盘B的颗粒特性会有所不同。例如在擦/写了 1000次后,固态硬盘A在读操作10000 次时,ECC错误位数为libit ;而固态硬盘B在读操作10000次时,ECC错误位数为6bit。因此,对于固态硬盘A,在擦/写了 1000次后,可能使用ECC算法A会有比较好的 ECC处理效果,而对于固态硬盘B,在擦/写了 1000次后,可能使用ECC算法B会有比较好 的处理效果。不同供应商的NAND Flash,可以根据统计的方式得出其颗粒特性所对应的最 有效的ECC算法。使用不同供应商的NAND Flash的固态硬盘,由于不同NAND Flash颗粒特性不同, 其对应的最有效的ECC算法也不同。为了更好的进行ECC处理,预先建立该固态硬盘的颗 粒特性与ECC算法的对应关系。比如,固态硬盘A,其颗粒特性与ECC算法的对应关系可以为擦/写了 1000次时, 对应ECC算法C,擦/写了 2000次时,对应ECC算法D,擦/写了 N次时,对应算法M,则该设 备中的ECC算法可以设置算法C、D、M0步骤12、根据当前进行ECC纠错的硬盘的颗粒特性,选择相应的ECC算法进行ECC 纠错处理。在ECC模块中设置至少一个选择单元,该选择单元可以是选择器,选择单元根据 当前进行ECC纠错硬盘的颗粒特性,确定相对应的ECC算法,并控制ECC模块采用相应的 ECC算法进行纠错处理。该选择单元根据实际应用固态硬盘的颗粒特性与ECC算法的对应关系,就能够确 定并选择相应的ECC算法。如可以根据该固态硬盘当前的擦/写次数来选择ECC算法,如 在擦/写100次以内使用8bit/512B的ECC算法,擦/写达到一个较大值如该固态硬盘的 出厂额定擦/写次数的50%时(不同供应商的硬盘的额定擦/写次数可能不同),可以使 用Mbit/IKB的ECC算法。或者也可以根据资源使用情况在ECC算法单元内嵌多组ECC算 法,根据不同的情况做不同的选择,如固态硬盘CPU占用了 30%时使用ECC算法A,占用了 50%时使用ECC算法B。需要说明的是,可以在该固态硬盘中添加至少一个能够统计擦/写次数和/或读 操作次数的记数模块,记录该固态硬盘已进行擦/写的次数和/或读操作的次数。在具体实现时,选择单元可以设置编码选择标志位,编码选择标志位与ECC算法 一一对应。选择单元通过编码选择标志位,指示ECC模块进行纠错处理时,采用哪一种ECC 算法进行编码,比如编码选择标志位为01时,用于指示ECC模块选择ECC算法单元中的算 法A进行ECC处理;编码选择标志位为10时,用于指示ECC模块选择ECC算法单元中的算 法B进行ECC处理。在选择单元选择了 ECC算法进行编码处理后;在进行相应的解码处理时,则需要采用与编码时相同的ECC算法进行相应的解码处理。即在使用某种ECC算法时,在进行解码 时也必须采用同样的ECC算法,保证数据的一致性;如编码时写入的数据使用12bit/512B 的ECC算法,在解码的时候也必须使用12bit/512B的DEC解码算法。本实施例在对固态硬盘进行ECC处理的过程中,通过在ECC模块中设置多个ECC 算法,使得固态硬盘可以根据实际应用的颗粒特性选择相应的ECC算法,能够满足各个供 应商的不同的需求,同时改善ECC处理的效果。在上述实施例的基础上,可以利用上述纠错处理的方法,在进行ECC纠错处理的 过程中,进一步的进行纠错预警,本实施例提供了一种纠错预警的方法,用以在对固态硬盘 进行纠错处理的过程中进行动态的预警,参见图加所示为本实施例提供的纠错预警的方 法流程图,本实施例的执行主体可以为ECC模块,方法包括步骤21、根据进行ECC纠错的硬盘的颗粒特性,设置至少两个预警水线。在ECC模块设置至少两个ECC预警水线,所述预警水线与ECC纠错的颗粒特性相 对应,用于在ECC纠错过程中,ECC错误位数突然增加时进行预警,以提示固态硬盘可能有 故障。比如,对于上述举例的固态硬盘A和固态硬盘A,在擦/写了 1000次后,固态硬盘 A在读操作了 10000次时,ECC错误位数为libit ;而固态硬盘B在读操作了 10000次时, ECC错误位数为6bit。则说明固态硬盘A可靠性不好,因此,可以设置固态硬盘A的预警水 线相对比较高,如擦/写1000次时,预警水线20bit,在其ECC错误位数为20bit时,预警以 提示所述固态硬盘可能出现了问题。固态硬盘B可靠性较好,可以设置固态硬盘B的预警 水线相对比较低,如擦/写1000次时,预警水线lObit,在其ECC错误位数为IObit时进行 预警。对于使用不同供应商的NAND Flash的固态硬盘,在设置ECC预警水线的时候,考 虑到的固态硬盘的颗粒特性主要可以有以下几个角度1、ECC错误位数的分布特性,如ECC 错误位数的最大值和最小值,以及ECC错误位数的平均值等。比如在进行了 20000次以内 的读操作过程中,产生的最小的ECC错误位数,以及最大的ECC错误位数,以及产生的ECC 错误位数的平均值。2、擦/写次数对产生ECC错误位数的影响,通常情况下,对固态硬盘擦 /写次数越多,相应的产生的ECC错误位数也越多。比如擦/写了 100次时,可能使ECC错 误位数增加10%,擦/写了 1000次时,可能使ECC错误位数增加20%。进行了相同次数的 擦/写操作,ECC错误位数增加数量越小的固态硬盘其性能越稳定。因此,本实施例中,预警水线是根据实际应用的颗粒特性进行设置的,非固定值需 要动态调整。该预警水线根据不同应用场景动态调整为不同的值;如在擦/写次数为额定 擦/写次数的10%以下时使用IObit水线,达到额定擦/写次数的50%以上时使用20bit 水线等。预警水线的设置公式可以为下式
权利要求
1.一种纠错处理的方法,其特征在于,包括根据错误检查和纠正ECC算法与进行ECC纠错的硬盘的颗粒特性的对应关系,在ECC 模块中嵌入与所述硬盘的颗粒特性对应的至少两种ECC算法;根据当前进行ECC纠错的硬盘的颗粒特性,选择相应的ECC算法进行ECC纠错处理。
2.根据权利要求1所述的纠错处理的方法,其特征在于,根据当前进行ECC纠错的颗粒 特性,选择相应的ECC算法进行ECC纠错处理,包括根据当前进行ECC纠错的硬盘的擦/写次数选择ECC算法进行ECC纠错处理。
3.根据权利要求1所述的纠错处理的方法,其特征在于,还包括在对ECC纠错处理生成的编码数据进行解码处理时,采用与编码时使用的相同的ECC 算法进行解码处理。
4.根据权利要求1所述的纠错处理的方法,其特征在于,还包括根据进行ECC纠错的硬盘的颗粒特性,设置至少两个预警水线,根据硬盘当前的使用情况,调整所述预警水线;根据调整后的所述预警水线,进行ECC预警处理。
5.根据权利要求4所述的纠错处理的方法,其特征在于,根据硬盘当前的使用情况,调 整所述预警水线,包括根据硬盘当前已进行的擦/写次数和/或读操作次数,调整所述预警水线。
6.根据权利要求4所述的纠错处理的方法,其特征在于,根据硬盘当前的使用情况,调 整所述预警水线,包括在产生了一个以上的ECC预警时,根据所述ECC预警的优先级顺序,对所述ECC预警进 行处理。
7.一种纠错处理的装置,其特征在于,包括错误检查和纠正ECC模块;所述ECC模块包括ECC算法单元和选择单元;所述ECC算法单元中嵌入至少两种ECC算法,所述ECC算法与进行ECC纠错的硬盘的 颗粒特性相对应;所述选择单元用于根据当前进行ECC纠错硬盘的颗粒特性,选择相应的ECC算法进行 ECC纠错处理。
8.根据权利要求7所述的纠错处理的装置,其特征在于,所述选择单元用于根据当前进行ECC纠错的硬盘的擦/写次数选择ECC算法进行纠错 处理;所述ECC模块用于在对ECC纠错处理生成的编码数据进行解码处理时,采用与编码时 使用的相同的ECC算法进行解码处理。
9.根据权利要求7所述的纠错处理的装置,其特征在于,还包括预警模块,所述预警模 块中设置有至少两个预警水线,所述预警水线与进行ECC纠错的硬盘的颗粒特性相对应;所述预警模块包括调整单元和处理单元;所述调整单元用于根据硬盘当前的使用情况,调整所述预警水线;所述处理单元用于根据调整后的所述预警水线,进行ECC预警处理。
10.根据权利要求9所述的纠错处理的装置,其特征在于,所述调整单元具体用于根据硬盘当前已进行的擦/写次数和/或读操作次数,调整所述预警水线;所述处理单元具体用于在产生了一个以上的ECC预警时,根据所述ECC预警的优先级 顺序,对所述ECC预警进行处理。
11. 一种固态硬盘设备,其特征在于,包括处理器、存储模块、控制器、内存以及接口 模块;其中所述控制器包括如权利要求7-10所述的纠错处理的装置。
全文摘要
本发明公开了一种纠错处理的方法、装置和固态硬盘设备,方法包括根据错误检查和纠正ECC算法与进行ECC纠错的硬盘的颗粒特性的对应关系,在ECC模块中嵌入至少与所述硬盘的颗粒特性对应的至少两种ECC算法;根据当前进行ECC纠错的硬盘的颗粒特性,选择相应的ECC算法进行ECC纠错处理。本发明在对硬盘进行ECC处理的过程中,通过在ECC编码模块设置多个ECC算法,使得可以根据实际应用的颗粒特性选择相应的ECC算法,能够满足各个供应商的不同的需求,同时改善ECC处理的效果。
文档编号G11C7/10GK102081970SQ20101062082
公开日2011年6月1日 申请日期2010年12月31日 优先权日2010年12月31日
发明者周建华 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1