CN102279776B - 一种错误检查与纠正能力的测试方法及装置 - Google Patents
一种错误检查与纠正能力的测试方法及装置 Download PDFInfo
- Publication number
- CN102279776B CN102279776B CN201010205606.0A CN201010205606A CN102279776B CN 102279776 B CN102279776 B CN 102279776B CN 201010205606 A CN201010205606 A CN 201010205606A CN 102279776 B CN102279776 B CN 102279776B
- Authority
- CN
- China
- Prior art keywords
- data
- ecc
- bit
- correct
- mistake
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种错误检查与纠正能力的测试方法,用于实现对ECC算法的纠错能力的测试,从而获知ECC算法是否能较好的完成纠错任务。所述方法包括:根据ECC算法和正确的ECC数据对存在错误的测试数据进行纠错,获得纠错后的数据;所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的;将纠错后的数据与正确数据进行比对,并根据比对结果获知ECC算法的纠错能力。本发明还公开了用于实现所述方法的装置。
Description
技术领域
本发明涉及计算机及嵌入式领域,特别是涉及错误检查与纠正能力的测试方法及装置。
背景技术
Nand-flash是闪存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand-flash具有成本较低、容量较大,改写速度较快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的认同。随着人们持续追求功耗更低、重量更轻和性能更佳的产品,Nand-flash被愈加广泛地应用于移动多媒体设备上,用于存储应用程序或在之上建立文件系统存储多媒体数据,如嵌入式产品中的数码相机、MP3(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)随身听、记忆卡等。
由于Nand-flash中存放的资料较多,结构相对复杂,出错的几率也相应增加,这样就会使程序和文件资源很容易遭到破坏。因此,必须对Nand-flash进行错误纠正。现在普遍采用错误检查与纠正(Error Checking and Correcting,ECC)算法对Nand-flash进行纠错。ECC算法是通过在原始的数据位基础上增加ECC数据(或称校验位)来实现的。对Nand-flash操作(读取或写入数据)时如果出现了ECC算法的纠错能力范围之内的错误,则ECC算法可以自动识别错误并将其更正,使系统得以持续正常的操作,这样就能大大提高使用Nand-flash运行的安全性及稳定性。
综上所述可以看出,ECC算法对于Nand-flash是否能安全稳定运行起着至关重要的作用。关于ECC算法的纠错能力,有理论上定义的纠错值,而对于ECC算法是否能达到此理论纠错值,现有技术中并未给出具体的测试方案。因此,需要对ECC算法的纠错能力进行测试评估,以判断ECC算法是否能达到其理论纠错值,满足纠错需求。
发明内容
本发明实施例提供一种ECC算法的纠错能力的测试方法,用于实现对ECC算法的纠错能力的测试,从而获知ECC算法是否能较好的完成纠错任务。
一种ECC算法纠正能力的测试方法,包括以下步骤:
根据ECC算法和正确的ECC数据对存在错误的测试数据进行纠错,获得纠错后的数据;所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的;
将纠错后的数据与正确数据进行比对,并根据比对结果获知ECC算法的纠错能力。
一种ECC算法纠正能力的测试装置,包括:
ECC算法模块,用于根据ECC算法和正确的ECC数据对存在错误的测试数据进行纠错;所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的;
校验模块,用于将纠错后的数据与正确数据进行比对,并根据比对结果获知ECC算法的纠错能力。
本发明实施例根据ECC算法和正确的ECC数据对存在错误的测试数据进行纠错,获得纠错后的数据;所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的;将纠错后的数据与正确数据进行比对,可以获知ECC算法纠正了多少处错误,从而获知ECC算法是否能达到其理论纠错值,进而可以根据ECC算法的纠错能力选择与其相适应的Nand-flash,以提高Nand-flash运行的安全性及稳定性。并且,对于无法达到理论纠错值的ECC算法,可以采取测试等手段,检测可能出现纰漏之处并加以改进,以提高ECC算法的纠错能力。
附图说明
图1为本发明实施例中ECC纠错能力测试装置的主要结构图;
图2A为本发明实施例中ECC纠错能力测试装置的详细结构图;
图2B为本发明实施例中当获取ECC数据的过程用硬件实现时ECC纠错能力测试装置的详细结构图;
图3为本发明实施例中ECC纠错能力测试的主要方法流程图;
图4为本发明实施例中当获取ECC数据的过程用软件实现时ECC纠错能力测试的详细方法流程图;
图5为本发明实施例中当获取ECC数据的过程用硬件实现时ECC纠错能力测试的详细方法流程图;
图6为本发明实施例中对ECC数据制造错误时ECC纠错能力测试的详细方法流程图。
具体实施方式
本发明实施例根据ECC算法和正确的ECC数据对存在错误的测试数据进行纠错,获得纠错后的数据;所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的;将纠错后的数据与正确数据进行比对,可以获知ECC纠正了多少处错误,从而获知ECC算法的纠错能力。
本实施例中,存在错误的测试数据包括对正确的原始数据制造错误后获得的存在错误的原始数据和/或对正确的ECC数据制造错误后获得的存在错误的ECC数据。
本发明实施例中的原始数据是指最初获得的数据,未制造错误,默认为正确的数据;ECC数据是指根据数据(如原始数据等)和ECC算法进行计算后获得的数据,并且可以根据ECC算法和依据正确数据获得的正确的ECC数据对存在错误的测试数据进行纠错。
参见图1,本发明实施例提供一种用于测试ECC能力的装置。其包括ECC算法模块101及校验模块102。所述的装置可以具体为Nand-flash控制器(NFC)等。
ECC算法模块101用于根据ECC算法和依据正确数据获得的正确的ECC数据对存在错误的测试数据进行纠错。其中,ECC算法模块101的纠错功能如下:获得正确数据对应的第一ECC数据,以及获得存在错误的测试数据对应的第二ECC数据,将第一ECC数据与第二ECC数据进行比较。如果两份ECC数据不相同,则对两份ECC数据进行解码,获得解码后的正确数据和解码后的存在错误的测试数据,并将解码后的正确数据和解码后的存在错误的测试数据进行比较,当有数据位不相同时,对存在错误的测试数据中的该数据位进行纠错,获得纠错后的数据。由于获得ECC数据过程、解码过程和纠错过程都可能存在失误,以及受ECC算法本身的局限,所以ECC算法只能对一定范围内的错误进行纠错,而该能力范围目前只局限于理论值,故本实施例需要对其实际的纠错能力进行测试。由于需要对ECC算法的纠错能力进行测试,所以还需要校验模块102进行校验。
ECC算法可以有多种,如汉明码和RS码等,不一一列举,所有ECC算法均适用于本实施例。
其中,获得ECC数据的过程可以用软件实现,也可以用硬件实现。
校验模块102用于将纠错后的数据与正确数据进行比对。如果纠错后的数据中第一比特位与正确数据中第二比特位一致,则确定该处纠正正确;如果两者不一致,则确定此处未纠正;如果纠错后的数据中原来正确的比特位与正确数据中相应的比特位不一致,则确定此处将本来正确的比特位值纠正成错误的值。由此可以获得ECC算法的纠错能力,其中,第一比特位为制造过错误的比特位,第二比特位为与第一比特位相应位置的比特位。具体的,可以通过多项指标来评估ECC算法的纠错能力。如纠正正确的比特数,未能纠正的比特数、ECC将本来正确的数据成错误数据的比特数及纠正了的比特位的总数(纠正正确的比特数与纠正错误的比特数之和为进行纠正了的比特位的总数)中的一项或多项。还可以将上述指标分别与正确数据的比特总数做计算,得到计算结果,以此来评估ECC算法的纠错能力。
其中,可以有多种计算方式,例如:计算纠正正确的比特数与正确数据的比特数的百分比值,此百分比值称为纠正正确率;计算未纠正的比特数与正确数据的比特数的百分比值,此百分比值称为未纠正率;计算将本来正确的数据纠正成错误数据的比特数与正确数据的比特数的百分比值,此百分比值称为纠正失误率;计算已纠正的比特数与正确数据的比特数的百分比值,此百分比值称为纠正率。
为了提高测试的准确度,ECC算法模块101对多份存在错误的测试数据进行纠错,得到多份纠错后的数据。校验模块102针对多份纠错后的数据得到多个测试结果。以及,校验模块102还用于根据多次测试的测试结果计算最终测试结果。此计算最终测试结果的方式可以是对多次测试结果求平均值等。
为了使实现模式更加优化,所述装置还包括输出模块103和第一存储模块104,参见图2A。
输出模块103用于接收校验模块102计算出的结果并输出。输出方式可以是输出到本地并存储,也可以是输出到终端显示设备供用户查看,还可以是其它方式。其中,可以是自动输出,也可以是收到输出指令后输出。
第一存储模块104用于存储存在错误的测试数据、正确数据、纠错后的数据和存在错误的比特位的位置信息等。
当获得ECC数据的过程用硬件实现时,根据数据和ECC算法进行计算后获得的ECC数据被保存在硬件电路中,此时ECC数据或许只是一些高低电平的信号,是不可见的。因此需要将原始数据写入存储模块,根据存储模块中的原始数据和ECC算法进行计算,得到ECC数据,如果硬件电路中带有模数转换功能,则将以电平信号获得的ECC数据通过模数转换获得数字信号后存储在寄存器中,再将得到的数字形式的ECC数据从寄存器中读出;如果硬件电路不带模数转换功能,则读模块需带有模数转换功能,将以电平信号获得的ECC数据转换为数字信号,获得数字形式的ECC数据,以获得本来不可见的ECC数据。
因此,所述装置还包括写模块105、读模块106和控制模块108。所述装置还可以与第二存储模块107相连接。参见图2B所示。
写模块105用于将正确数据和/或存在错误的测试数据等写入第二存储模块107。
读模块106用于从第二存储模块107中读取数据,以及读取ECC算法模块101通过硬件方式获得的ECC数据。
控制模块108用于格式化第二存储模块107。
第二存储模块107用于存储数据。第二存储模块107具体可以是Nand-flash等。
下面通过实现流程来介绍ECC纠错能力的测试方法。
参见图3,ECC纠错能力测试的主要方法流程如下:
可以从本地(如存储器中)获取存在错误的测试数据,或者从其它外部设备中获取存在错误的测试数据,或者以其它方式获取存在错误的测试数据。
步骤301:根据ECC算法和正确的ECC数据对存在错误的测试数据进行纠错,获得纠错后的数据。所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的。
其中,对于如何对数据制造错误,可以是人为制造错误,或者计算机随机制造错误,还可以是其它方式制造错误。制造错误时,尽量使错误比特位在数据中离散分布,如果错误分布过于集中,则测试出的ECC算法的纠错能力可能不够准确;并且,制造错误的比特位的数量最好不低于ECC算法的理论纠错能力值,如果制造错误的比特位的数值低于ECC算法的理论纠错能力值,则ECC算法有可能将错误全部纠正过来,而此时得出的ECC算法的纠错能力可能低于ECC算法的真实能力。
步骤302:将纠错后的数据与正确数据进行比对,并根据比对结果获知ECC算法的纠错能力。
可以在制造错误时记录错误的比特的位置,此记录信息可以保存在第一存储模块104中。当进行比对时,可以只针对这些错误的比特位进行比对。当需要获得较为详细的测试结果时,则可以将纠错后的数据与正确数据的每一个比特位进行比对。还可以有其它的实现方式,如不记录错误的比特的位置,而是将正确数据、存在错误的测试数据和纠错后的数据三者进行比对。如果正确数据与存在错误的测试数据相应位置的比特位不一致,确定此处制造了错误,如果纠错后的数据中此处的比特位与正确数据中一致,确定此处纠正正确,如果纠错后的数据中该比特位与正确数据中不一致,确定此处未纠正;如果正确数据与存在错误的测试数据相应位置的比特位一致,确定此处未制造错误,如果纠错后的数据中该比特位与正确数据中不一致,确定此处将本来正确的数据纠正成错误数据。
因为可能存在各种随机或是不可控制的原因,只进行一次或几次测试不能保证测试结果的准确性。因此,为了使测试结果更为准确可靠,可以重复执行步骤301-302,进行大批量的测试过程。可以采用对每次的测试结果求平均值的方法来获得最终测试结果。也可以采用其它方法来获得最终测试结果。
存在错误的测试数据包括对正确的原始数据制造错误后获得的存在错误的原始数据和/或对正确的ECC数据制造错误后获得的存在错误的ECC数据。如果ECC算法支持ECC数据本身有错,则也可以对ECC数据制造错误,否则只能对原始数据制造错误。并且,获得ECC数据的过程可以由软件实现或硬件实现。下面通过三个实施例来详细介绍测试ECC算法纠错能力的实现过程。
本发明实施例为ECC算法模块101用软件方式获得ECC数据时的测试流程。参见图4,详细方法流程如下:
步骤401:获取原始数据和ECC数据。
可以从本地第一存储模块104中获取原始数据和ECC数据,或者从其它外部设备中获取原始数据和ECC数据,或者以其它方式获取原始数据和ECC数据。
也可以只获取原始数据,软件的ECC算法模块101根据原始数据和ECC算法进行计算,获得ECC数据。
步骤402:对原始数据制造错误。
其中,可以是人为制造错误,或者计算机随机制造错误,还可以是其它方式制造错误。
如果ECC算法支持ECC数据本身有错,则也可以对ECC数据制造错误。
制造错误时,尽量使错误比特位在数据中离散分布;并且,制造错误的比特位的数值不能低于ECC算法的理论纠错值。
步骤403:根据ECC算法和原始数据对应的ECC数据对存在错误的原始数据进行纠错。
步骤404:针对制造了错误的比特位,将纠错后的原始数据与正确的原始数据进行比对,若比对一致,则继续步骤405,否则继续步骤406。
步骤405:更新比对一致的比特位的数量。继续步骤406。
本实施例中还可以将上述指标与正确的原始数据的比特总数做计算,得到计算结果,以此来评估ECC算法的纠错能力。其中,可以有多种计算方式,例如:计算未纠正的比特数与正确的原始数据的比特数的百分比值,此百分比值称为未纠正率。
如果在步骤403中是根据ECC算法对存在错误的ECC数据进行纠错,则本步骤中是将纠错后的ECC数据与正确的ECC数据进行比对。
步骤406:判断是否有未进行比对的比特位,若有,则针对下一个比特位,继续步骤404,否则继续步骤407。
因为可能存在各种随机或是人为不可控制的原因,只进行或几次测试不能保证测试结果的准确性。因此,为了使测试结果更为准确可靠,可以重复执行步骤401-406,进行大批量的测试过程。
步骤407:对多次的测试结果求平均值,获得最终测试结果。
步骤408:输出最终测试结果。还可以输出其中一次或几次测试的测试结果。
ECC算法模块101还可以通过硬件方式获得ECC数据,此时第二存储模块107也需用硬件实现。本实施例中是对原始数据制造错误,ECC算法模块101用硬件实现。参见图5,详细方法流程如下:
步骤501:控制模块108格式化第二存储模块107。可以根据需要格式化相应于数据大小的区块(block)。
第二存储模块107具体可以是Nand-flash。Nand-flash中的每个区块只能写入一次,如需再写则需要先将该区块格式化。如果能确定需要写入的区块之前未被写入,则无需格式化的步骤。
步骤502:写模块105将原始数据写入格式化后的第二存储模块107中。
步骤503:ECC算法模块101根据原始数据和ECC算法进行计算,获得第一ECC数据。
当获取ECC数据的过程用硬件实现时,根据数据和ECC算法进行计算后获得的ECC数据被保存在硬件电路中,此时ECC数据或许只是一些高低电平的信号,是不可见的。因此,执行以下步骤504的目的是为了获得本来不可见的ECC数据。
步骤504:读模块106将第二存储模块107中存储的原始数据与及ECC算法模块101中的ECC数据均读取出来。
步骤505:写模块105将存在错误的原始数据写入第二存储模块107。
制造错误时,尽量使错误比特位在数据中离散分布;并且,制造错误的比特位的数值不能低于ECC算法的理论纠错值。
其中,需写入的区块必须是空的,如果不能确定需写入的区块此前是否未曾操作过,则在步骤505之前需要对第二存储模块107进行格式化。
步骤506:ECC算法模块101根据存在错误的原始数据和ECC算法进行计算,获得第二ECC数据。
步骤507:读模块106将写入第二存储模块107区块中的存在错误的原始数据及ECC算法模块101中的第二ECC数据读取出来。
步骤508:ECC算法模块101通过第一ECC数据和第二ECC数据确定需要对存在错误的原始数据进行纠错,并根据ECC算法和第一ECC数据对存在错误的原始数据进行纠错。由于本实施例中对原始数据制造了错误,所以第一ECC数据与第二ECC数据一定不一致,因此一定会需要对存在错误的原始数据进行纠错。
步骤509:针对未制造错误的比特位,将纠错后的原始数据与正确的原始数据进行比对,若比对一致,则继续步骤510,否则继续步骤511。
本实施例中还可以将上述指标与正确的原始数据的比特总数做计算,得到计算结果,以此来评估ECC算法的纠错能力。其中,可以有多种计算方式,例如:计算将本来正确的数据纠正成错误数据的比特数与正确的原始数据的比特数的百分比值,此百分比值称为纠正失误率。
步骤510:更新比对一致的比特位的数量,此数量表示将本来正确给纠正错误的比特位的总数。继续步骤511。
步骤511:判断是否有未进行比对的比特位,若有,则针对下一个比特位,继续步骤508,否则继续步骤512。
步骤512:输出测试结果,即输出本来正确给纠正错误的比特位的总数。
还可以输出纠正失误率。
有的ECC算法支持ECC数据本身存在错误并能对其进行纠错。本实施例中是对ECC数据制造错误,ECC算法模块101通过硬件方式获得ECC数据。参见图6,对ECC数据制造错误时的测试流程如下:
确定ECC算法模块101支持ECC数据本身有错并能对其进行纠错。
其中,可以在ECC算法中加入一个标识符,用此标识符来确定ECC算法是否支持ECC数据本身有错。如果此标识符为“0”,确定ECC算法不支持ECC数据本身有错,则只能对原始数据制造错误。如果此标识符为“1”,确定ECC算法支持ECC数据本身有错,可以对原始数据和/或ECC数据制造错误。也可以用其它方式来确定ECC算法是否支持ECC数据本身有错。
步骤601:控制模块101格式化第二存储模块107。可以根据需要格式化相应于数据大小的区块。
当第二存储模块107用硬件实现时,其具体可以是Nand-flash。Nand-flash中每个区块只能写入一次,如需再写则需要先将该区块格式化。如果能确定需要写入的区块之前未被写入,则无需格式化的步骤。
步骤602:写模块105将原始数据写入格式化后的第二存储模块107中。
步骤603:ECC算法模块101根据原始数据和ECC算法进行计算,获得第一ECC数据。
当ECC算法模块101用硬件实现时,根据数据和ECC算法进行计算后获得的ECC数据被保存在硬件电路中,此时ECC数据或许只是一些高低电平的信号,是不可见的。因此,执行步骤604的目的是为了获得本来不可见的ECC数据。
步骤604:读模块106将第二存储模块107中存储的原始数据与ECC算法模块101中的ECC数据均读取出来。
步骤605:写模块105将存在错误的ECC数据写入第二存储模块107。
在步骤605之前可以加入读取ECC算法标识符的步骤。当读取的标识符为“1”时,确定ECC算法支持ECC数据本身有错,则可以对ECC数据制造错误。制造错误时,尽量使错误比特位在数据中离散分布;并且,制造错误的比特位的数值不能低于ECC算法的理论纠错值。
写入的也可以是制造过错误的ECC数据及制造过错误的原始数据。
其中,需写入的区块必须是经过格式化的,若需写入的是未经过格式化的区块,则需加上格式化的步骤。
步骤606:ECC算法模块101根据存在错误的ECC数据和ECC算法进行计算,获得第二ECC数据。
如果在步骤605中写入的是存在错误的ECC数据及存在错误的原始数据,则本步骤中ECC算法模块101根据存在错误的ECC数据及存在错误的原始数据和ECC算法进行计算,获得第二ECC数据。
步骤607:读模块106将写入第二存储模块107区块中的存在错误的ECC数据及ECC算法模块101中的第二ECC数据读取出来。
如果在步骤605中写入的是存在错误的ECC数据及存在错误的原始数据,则本步骤中,读模块106将写入第二存储模块107区块中的制造过错误的ECC数据及制造过错误的原始数据读取出来。
步骤608:ECC算法模块101通过第一ECC数据和第二ECC数据确定需要对存在错误的ECC数据进行纠错,并根据ECC算法和第一ECC数据对存在错误的ECC数据进行纠错。由于本实施例中对ECC数据制造了错误,所以第一ECC数据与第二ECC数据一定不一致,因此一定会需要对存在错误的ECC数据进行纠错。
如果在步骤605中写入的是存在错误的ECC数据及存在错误的原始数据,则本步骤中,ECC算法模块101根据ECC算法和第一ECC数据对存在错误的ECC数据及存在错误的原始数据进行纠错。
步骤609:针对每一个比特位,将纠错后的ECC数据与正确的ECC数据进行比对,若比对一致,则继续步骤610,否则继续步骤611。
本发明实施例中还可以将上述指标与正确的ECC数据的比特总数做计算,得到计算结果,以此来评估ECC算法的纠错能力。其中,可以有多种计算方式,例如:计算已纠正的比特位总数与正确的ECC数据的比特数的百分比值,此百分比值称为纠正率。
如果步骤608中ECC算法模块101是对存在错误的ECC数据及存在错误的原始数据进行纠错,则本步骤中是将纠错后的ECC数据及纠错后的原始数据与正确的ECC数据及正确的原始数据进行比对,其中,将纠错后的ECC数据及纠错后的原始数据看作一份整体数据,将正确的ECC数据及正确的原始数据看作一份整体数据,将这两份整体数据进行比对,根据比对结果获知ECC的纠错能力。
步骤610:更新比对一致的比特位的数量。此数量为已纠正的比特位总数。获得测试结果。继续步骤611。
步骤611:判断是否有未进行比对的比特位,若有,则针对下一个比特位,继续步骤609,否则继续步骤612。
因为可能存在各种随机或是人为不可控制的原因,只进行或几次测试不能保证测试结果的准确性。因此,为了使测试结果更为准确可靠,可以重复执行步骤601-611,进行大批量的测试过程。
步骤612:对多次的测试结果求平均值,获得最终测试结果。
步骤613:输出最终测试结果。还可以输出其中一次或几次测试的测试结果。
本发明实施例对获取的原始数据用ECC算法进行纠错,得到一份ECC数据,根据ECC算法和正确的ECC数据对存在错误的测试数据进行纠错,获得纠错后的数据;所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的;可以将纠错后的数据中制造过错误的比特位与正确数据中相应比特位进行比较,如果纠错后的数据中第一比特位与正确数据中第二比特位一致,则确定该处纠正正确;如果两者不一致,则确定此处未纠正,由此得到ECC算法的纠错能力,其中,第一比特位为制造过错误的比特位,第二比特位为与第一比特位相应位置的比特位。其不仅可以获得ECC算法的纠错能力,而且比对次数较少,实现过程比较快捷,结果准确,针对性强。如果需要得到较为详细的ECC算法纠错能力的评估结果,也可以将纠错后的数据与正确数据中每个比特位进行比较,除了可以得知纠正正确的比特位和未纠正的比特位之外,如果纠错后的数据中原来正确的比特位与正确数据中相应的比特位不一致,还可确定此处将本来正确的比特位值纠正成错误的值。此时得到的ECC算法的纠错能力评估比较详细可靠。还可以通过多项指标来评估ECC算法的纠错能力,如纠正了的比特位的总数(纠正正确的比特数与纠正错误的比特数之和为进行纠正了的比特位的总数),以及将上述指标分别与正确数据的比特总数做计算,得到计算结果,以此来评估ECC算法的纠错能力,使对于ECC算法纠错能力的评估标准化,更有利于实际应用。其中,可以有多种计算方式,例如:计算纠正正确的比特数与正确数据的比特数的百分比值,此百分比值称为纠正正确率;计算未纠正的比特数与正确数据的比特数的百分比值,此百分比值称为未纠正率;计算将本来正确的数据纠正成错误数据的比特数与正确数据的比特数的百分比值,此百分比值称为纠正失误率;计算已纠正的比特数与正确数据的比特数的百分比值,此百分比值称为纠正率。并且,本发明实施例支持ECC算法模块101通过硬件方式或软件方式获得ECC数据。为了使测试结果更为准确可靠,可以重复进行大批量的测试过程,采用对每次的测试结果求平均值的方法来获得最终测试结果。本发明实施例获得了对ECC纠错能力的量化评定结果,从而获知ECC算法是否能达到其理论纠错值,进而可以根据ECC算法的纠错能力选择与其相适应的Nand-flash,如果ECC算法的纠错能力比较强,可以选择性能一般的Nand-flash与其对应,以节省成本,并且保证了Nand-flash运行的安全性及稳定性;如果ECC算法的纠错能力较弱,则可以选择性能质量较好的Nand-flash与其对应,以提高Nand-flash运行的安全性及稳定性。并且,对于无法达到理论纠错值的ECC算法,还可以采取测试等手段,检测可能出现纰漏之处并加以改进,以提高ECC的纠错能力。
用于实现本发明实施例的软件可以存储于软盘、硬盘、光盘和闪存等存储介质。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种ECC算法纠正能力的测试方法,其特征在于,包括以下步骤:
将第一ECC数据与第二ECC数据进行比较,其中第一ECC数据为正确数据对应的ECC数据,第二ECC数据为存在错误的测试数据对应的ECC数据;当第一ECC数据与第二ECC数据不同时,对第一ECC数据和第二ECC数据进行解码,获得解码后的正确数据和解码后的存在错误的测试数据,并将解码后的正确数据和解码后的存在错误的测试数据进行比较;
根据ECC算法和正确的ECC数据对存在错误的测试数据进行纠错,具体的,当有比特位不相同时,根据ECC算法和正确的ECC数据对存在错误的测试数据中的该比特位进行纠错,获得纠错后的数据;所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的;
将纠错后的数据与正确数据进行比对,并根据比对结果获知ECC算法的纠错能力。
2.如权利要求1所述的方法,其特征在于,ECC数据是通过软件方式获得的,或者是通过硬件方式获得的。
3.如权利要求2所述的方法,其特征在于,当ECC数据是通过硬件方式获得时,在获得ECC数据之前,还包括步骤:
将数据写入存储器;
通过硬件电路从存储器中获得数据,及根据ECC算法和获得的数据进行计算;
从硬件电路中获得ECC数据。
4.如权利要求1所述的方法,其特征在于,将纠错后的数据与正确数据进行比对的步骤包括:
针对制造错误时记录的存在错误的比特位,将纠错后的数据与正确数据进行比对;或者
将纠错后的数据与正确数据按照比特位逐一进行比对。
5.如权利要求1所述的方法,其特征在于,在根据比对结果获知ECC算法的纠错能力之前,还包括步骤:
当纠错后的数据中第一比特位与正确数据中第二比特位的值一致时,确定第一比特位的值已被纠正正确;其中,第一比特位为制造过错误的比特位,第二比特位为与第一比特位相应位置的比特位;
当纠错后的数据中第一比特位与正确数据中第二比特位的值不一致时,确定第一比特位的值未被纠正;
当纠错后的数据中正确比特位与正确数据中相应位置的比特位的值不一致时,确定该本来正确的比特位的值被纠正成错误的值。
6.如权利要求5所述的方法,其特征在于,根据比对结果获知ECC算法的纠错能力的步骤包括:
根据第一比特位中已被纠正正确的比特位的数量与正确数据的比特数的比值获知ECC算法的纠错能力;和/或
根据第一比特位中未被纠正的比特位的数量与正确数据的比特数的比值获知ECC算法的纠错能力;和/或
根据本来正确且被纠正成错误的比特位的数量与正确数据的比特数的比值获知ECC算法的纠错能力;和/或
根据第一比特位中已被纠正正确的比特位的数量和本来正确且被纠正成错误的比特位的数量之和,与正确数据的比特数的比值,获知ECC算法的纠错能力。
7.一种ECC算法纠正能力的测试装置,其特征在于,包括:
ECC算法模块,用于将第一ECC数据与第二ECC数据进行比较,其中第一ECC数据为正确数据对应的ECC数据,第二ECC数据为存在错误的测试数据对应的ECC数据;当第一ECC数据与第二ECC数据不同时,对第一ECC数据和第二ECC数据进行解码,获得解码后的正确数据和解码后的存在错误的测试数据,并将解码后的正确数据和解码后的存在错误的测试数据进行比较;当有比特位不相同时,根据ECC算法和正确的ECC数据对存在错误的测试数据中的该比特位进行纠错,获得纠错后的数据;所述正确的ECC数据是依据正确数据获得的;所述存在错误的测试数据是对正确数据制造错误后获得的;
校验模块,用于将纠错后的数据与正确数据进行比对,并根据比对结果获知ECC算法的纠错能力。
8.如权利要求7所述的装置,其特征在于,ECC数据是通过软件方式获得的,或者是通过硬件方式获得的。
9.如权利要求8所述的装置,其特征在于,所述装置与存储模块连接;
所述装置还包括:写模块和读模块;
写模块,用于将数据写入存储模块;
ECC算法模块还用于通过硬件电路从存储模块中获得数据,及根据ECC算法和获得的数据进行计算;
读模块,用于从硬件电路中获得ECC数据。
10.如权利要求7所述的装置,其特征在于,校验模块针对制造错误时记录的存在错误的比特位,将纠错后的数据与正确数据进行比对;或者,将纠错后的数据与正确数据按照比特位逐一进行比对。
11.如权利要求7所述的装置,其特征在于,校验模块具体用于:
当纠错后的数据中第一比特位与正确数据中第二比特位的值一致时,确定该第一比特位的值已被纠正正确;其中,第一比特位为制造过错误的比特位,第二比特位为与第一比特位相应位置的比特位;
当纠错后的数据中第一比特位与正确数据中第二比特位的值不一致时,确定该第一比特位的值未被纠正;
当纠错后的数据中正确比特位与正确数据中相应位置的比特位的值不一致时,确定该本来正确的比特位的值被纠正成错误的值。
12.如权利要求7所述的装置,其特征在于,校验模块根据第一比特位中已被纠正正确的比特位的数量与正确数据的比特数的比值获知ECC算法的纠错能力;和/或,根据第一比特位中未被纠正的比特位的数量与正确数据的比特数的比值获知ECC算法的纠错能力;和/或,根据本来正确且被纠正成错误的比特位的数量与正确数据的比特数的比值获知ECC算法的纠错能力;和/或,根据第一比特位中且已被纠正正确的比特位的数量和本来正确且被纠正成错误的比特位的数量之和,与正确数据的比特数的比值,获知ECC算法的纠错能力。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010205606.0A CN102279776B (zh) | 2010-06-11 | 2010-06-11 | 一种错误检查与纠正能力的测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010205606.0A CN102279776B (zh) | 2010-06-11 | 2010-06-11 | 一种错误检查与纠正能力的测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102279776A CN102279776A (zh) | 2011-12-14 |
CN102279776B true CN102279776B (zh) | 2015-06-24 |
Family
ID=45105238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010205606.0A Active CN102279776B (zh) | 2010-06-11 | 2010-06-11 | 一种错误检查与纠正能力的测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102279776B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11855656B2 (en) | 2021-12-30 | 2023-12-26 | Changxin Memory Technologies, Inc. | Detection circuit and detection method, electronic device, and computer-readable storage medium |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9385756B2 (en) * | 2012-06-07 | 2016-07-05 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Data processing system with retained sector reprocessing |
CN103279401B (zh) * | 2013-05-31 | 2016-01-27 | 华为技术有限公司 | 一种访问存储器的方法及装置 |
CN104731671B (zh) * | 2013-12-20 | 2018-09-25 | 炬芯(珠海)科技有限公司 | 一种插错装置及方法、纠错码电路的验证设备和方法 |
CN104731704B (zh) * | 2013-12-24 | 2018-04-27 | 惠州市德赛西威汽车电子股份有限公司 | Nand flash管理软件的测试方法 |
KR20170075065A (ko) * | 2015-12-22 | 2017-07-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 동작 방법 |
CN106933696A (zh) * | 2015-12-31 | 2017-07-07 | 北京国睿中数科技股份有限公司 | Ecc功能验证方法 |
CN107203436B (zh) * | 2017-05-25 | 2021-04-06 | 郑州云海信息技术有限公司 | 一种Nand Flash数据校验的方法与装置 |
CN110459259A (zh) * | 2019-07-31 | 2019-11-15 | 至誉科技(武汉)有限公司 | 存储设备写错误纠错能力的测试方法、系统及存储介质 |
CN110444247A (zh) * | 2019-07-31 | 2019-11-12 | 至誉科技(武汉)有限公司 | 存储设备写错误纠错能力的测试装置 |
CN113778822B (zh) * | 2021-08-04 | 2023-05-23 | 成都佰维存储科技有限公司 | 纠错能力测试方法、装置、可读存储介质及电子设备 |
CN116680194A (zh) * | 2023-06-29 | 2023-09-01 | 广州形银科技有限公司 | 一种高效半自动人工智能软件的实现方法 |
CN117234789A (zh) * | 2023-09-07 | 2023-12-15 | 上海合芯数字科技有限公司 | 校验纠错方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477481A (zh) * | 2009-02-06 | 2009-07-08 | 中国科学院计算技术研究所 | 一种自动纠错系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100833600B1 (ko) * | 2006-08-25 | 2008-05-30 | 삼성전자주식회사 | 에러 정정 회로, 그 방법 및 상기 회로를 구비하는 반도체메모리 장치 |
-
2010
- 2010-06-11 CN CN201010205606.0A patent/CN102279776B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477481A (zh) * | 2009-02-06 | 2009-07-08 | 中国科学院计算技术研究所 | 一种自动纠错系统及方法 |
Non-Patent Citations (1)
Title |
---|
NAND FLASH快速BCH编解码算法及便件实现;许锦;《国优秀硕士学位论文全文数据库》;20090430;第1,40-43页 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11855656B2 (en) | 2021-12-30 | 2023-12-26 | Changxin Memory Technologies, Inc. | Detection circuit and detection method, electronic device, and computer-readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
CN102279776A (zh) | 2011-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102279776B (zh) | 一种错误检查与纠正能力的测试方法及装置 | |
CN101427323B (zh) | 读取非易失性计算机存储器的系统和方法 | |
US20140189335A1 (en) | Firmware upgrade error detection and automatic rollback | |
CN103778030B (zh) | 日志子系统写入方法、错误追踪方法及处理器 | |
CN104282342A (zh) | 闪存装置、存储器控制器及闪存的控制方法 | |
US20190129776A1 (en) | Memory management method and storage controller | |
CN107807792A (zh) | 一种基于副本存储系统的数据处理方法及相关装置 | |
CN107315616B (zh) | 一种固件的加载方法、装置及电子设备 | |
CN103631721A (zh) | 一种隔离内存中坏块的方法及系统 | |
TW201021045A (en) | Reliability test method for solid storage medium | |
CN102110028A (zh) | 一种nand闪存及其数据的校验方法和装置 | |
CN103077095B (zh) | 内存数据的纠错方法及装置及计算机系统 | |
CN103218271B (zh) | 一种数据纠错方法及装置 | |
CN103064902A (zh) | Hdfs中数据的存储方法、读取方法及存储系统、读取系统 | |
CN111104246B (zh) | 提升dram的错误检测与纠错的验证效率的方法、装置、计算机设备及存储介质 | |
CN110442473A (zh) | 一种非易失性数据存储方法、装置、电子设备及介质 | |
TWI564904B (zh) | 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
CN101488369B (zh) | Bch码控制器接口电路 | |
CN102890645A (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN111078462A (zh) | 数据校验方法及电路 | |
CN109783297A (zh) | 一种固态硬盘使用温宽提升方法与固态硬盘 | |
CN102799494B (zh) | 一种校验内存中应用程序的方法和装置 | |
CN102520223A (zh) | 用于电能表的软件抗干扰方法 | |
CN109783001B (zh) | 数据编码方法、数据解码方法以及存储控制器 | |
CN106648969A (zh) | 一种磁盘中损坏数据巡检方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: 214028 national integrated circuit design (21-1), Changjiang Road, New District, Jiangsu, Wuxi, China, China (610) Patentee after: WUXI ZHONGGAN MICROELECTRONIC CO., LTD. Address before: 214028 national integrated circuit design (21-1), Changjiang Road, New District, Jiangsu, Wuxi, China, China (610) Patentee before: Wuxi Vimicro Co., Ltd. |