CN103077095B - 内存数据的纠错方法及装置及计算机系统 - Google Patents
内存数据的纠错方法及装置及计算机系统 Download PDFInfo
- Publication number
- CN103077095B CN103077095B CN201210586901.4A CN201210586901A CN103077095B CN 103077095 B CN103077095 B CN 103077095B CN 201210586901 A CN201210586901 A CN 201210586901A CN 103077095 B CN103077095 B CN 103077095B
- Authority
- CN
- China
- Prior art keywords
- data
- read
- read data
- bit
- memory
- 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
- 238000012937 correction Methods 0.000 title claims abstract description 185
- 238000000034 method Methods 0.000 title claims abstract description 111
- 238000012545 processing Methods 0.000 claims description 36
- 238000004364 calculation method Methods 0.000 claims description 27
- 208000016253 exhaustion Diseases 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 11
- 125000004122 cyclic group Chemical group 0.000 claims description 10
- 230000008569 process Effects 0.000 description 24
- 230000004044 response Effects 0.000 description 16
- 230000009286 beneficial effect Effects 0.000 description 15
- 238000012795 verification Methods 0.000 description 11
- 238000011084 recovery Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000009191 jumping Effects 0.000 description 5
- 238000011160 research Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002349 favourable effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及计算机领域,公开了一种内存数据的纠错方法及装置及计算机系统。方法包括:如果从内存地址先后读取获得的第一读取数据、第二读取数据均存在错误且错误未被纠正,则将第一读取数据或第二读取数据按位取反获得的第一取反数据写入确定的内存地址,根据确定的内存地址获得第一取反数据对应的读取值,将第一取反数据对应的读取值按位取反得到第三读取数据,如果第三读取数据存在错误且错误未被纠正,则根据第一读取数据、第二读取数据以及第三读取数据,确定待纠正数据中各硬件错误位或者随机错误位,根据各硬件错误位、或者硬件错误位以及随机错误位,纠正待纠正数据。如果纠正待校验数据被经校验为正确数据将正确数据写回确定的内存地址。
Description
技术领域
本发明涉及计算机领域,特别涉及一种内存数据的纠错方法及装置及计算机系统。
背景技术
在计算机领域,数据的可靠性对整个系统的性能至关重要,特别是系统核心数据或重要的应用程序数据,其数据的可靠性直接影响整个系统的运行。读取数据纠错技术便应运而生,通过采用纠错技术通过预定的纠错算法判定当前数据的数据是否为正确数据,而确定当前读取的数据的可靠性。
现有技术常用的纠错技术主要包括:
错误纠正码(Error Correction Code,简称ECC)纠错技术,其为当前已经比较成熟的纠错算法。ECC纠错算法具备一定的错误校验以及数据纠正能力,ECC纠错流程通过数据中预设预定数据位的ECC,结合当前数据中的有效数据按照预定的算法进行数据校验,确定当前的有效数据是否为正确数据,如果否,则根据ECC以及预定的ECC纠错流程启动数据纠正算法,纠正数据。
由于目前的可靠性内存系统的数据宽度为72比特(bit),数据通道的有效数据位设置为第0-63bit的共计64bits数据位,另外第64-71bit共计8bits的数据位可用于存储数据的验证码。在可靠性内存系统中采用ECC纠错技术往往最常用的是采用64bits数据+8bits ECC校验码的ECC纠错流程。
本发明人在进行本发明的研究过程中发现,该技术方案至少存在以下的缺陷:
ECC纠错技术虽然具备一定的错误校验能力以及纠错能力,但是错误纠错能力仅适用于当前数据中仅存在1bit错误数据位的状况,如果当前数据中存在2Bits甚至更多错误数据位的情况下,应用ECC纠错流程通过错误校验算法确定当前的无法纠正得到正确数据,即ECC纠错流程的纠错能力仅限于当前数据仅存在1bit错误数据位的状况,数据纠错能力有限,无法满足确保数据可靠性的应用需求。
发明内容
本发明实施例第一目的在于提供一种内存数据的纠错方法,应用该技术方案有利于提高对内存数据的纠错能力。
本发明实施例第二目的在于提供一种内存纠错装置,应用该技术方案有利于提高对内存数据的纠错能力。
本发明实施例第三目的在于提供另一种内存纠错装置,应用该技术方案有利于提高对内存数据的纠错能力。
本发明实施例第四目的在于提供另一种计算机系统,应用该技术方案有利于提高对内存数据的纠错能力。
第一方面,本发明实施例提供的一种内存数据的纠错方法,包括:
如果从内存中同一确定的内存地址,先后分别读取获得的第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据,则:
第一取反数据将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址,
根据所述确定的内存地址,从所述内存中再次读取数据,获得所述第一取反数据对应的读取值,将所述第一取反数据对应的读取值按位取反得到第三读取数据,
如果所述第三读取数据存在错误,并且所述错误未被纠正而得到正确数据,则:
将所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一,作为待纠正数据,
根据所述第一读取数据、第二读取数据以及所述第三读取数据,确定所述待纠正数据中各硬件错误位或者随机错误位,
根据各所述硬件错误位、或者所述硬件错误位以及随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据,
如果其中之一所述纠正待校验数据被经校验为正确数据,将所述正确数据写回所述确定的内存地址。
结合第一方面,在第一种实现方式下,在步骤:将所述第一取反数据对应的读取值按位取反得到第三读取数据之后,
如果所述第三读取数据不存在错误,或者存在错误但所述错误被纠正获得经纠正的正确数据,则:
将经校验不存在错误的所述第三读取数据、或者所述经纠正的正确数据写回所述确定的内存地址。
结合第一方面,在第一种实现方式下,在步骤:根据各所述硬件错误位、或者所述硬件错误位以及随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据之后,
如果所有所述纠正待校验数据均被经校验为不正确数据,则还包括:
将所述第一读取数据、第二读取数据或者所述第三读取数据写回所述确定的内存地址。
结合第一方面,在第一种实现方式下,将所述第一读取数据、第二读取数据或者所述第三读取数据写回所述确定的内存地址,具体是将所述待纠正数据写回所述确定的内存地址。
结合第一方面,在第一种实现方式下,将所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一,作为待纠正数据,具体是,
将所述第二读取数据作为所述待纠正数据。
结合第一方面,在第一种实现方式下,根据所述第一读取数据、第二读取数据以及第三读取数据,确定所述待纠正数据中各硬件错误位以及、或者所述硬件错误位以及随机错误位,包括:
分别获取所述第一读取数据、第二读取数据以及所述第三读取数据;
对:除当前已知的硬件错误位外的任一数据位:
如果所述第一读取数据、第二读取读数据在所述数据位上的值相同,并且与所述第三读取数据在所述数据位上的值不同,则所述数据位为硬件错误位,
如果所述第三读取数据、所述基准数据在所述数据位上的值相同,并且与第一读取数据、第二读取读数据中不用于作为所述基准数据的其中读取数据的在所述数据位上的值不同,则所述数据位为随机错误位,
否则,判定所述数据位为正确数据位。
结合第一方面,在第一种实现方式下,将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址,具体是:
将所述第二读取数据作为所述基准数据,将所述基准数据按位取反获得的所述第一取反数据写入所述确定的内存地址;
步骤:如果所述第一读取数据、第二读取读数据在当前所述数据位上的值相同,并且与所述第三读取数据在当前所述数据位上的值不同,则当前所述数据位为硬件错误位,具体包括:
计算第一函数式:X=(A&B)^C,所述X取值为:1,则确定所述第i数据位为:硬件错误位;
步骤:如果所述第三读取数据、所述第一取反数据对应的基准数据的取值相同,与第一读取数据、第二读取读数据中不为所述基准数据的其中之一的取值不同,则所述数据位为随机错误位,具体是:
计算第二函数式:Y=(A^(B&C))或者Y=(B^(A&C)),如果所述Y取值为:1,则确定所述第i数据位为随机错误位;
所述A为:所述第一读取数据中第i数据位的取值,
所述B为:所述第二读取数据中第i数据位的取值,
所述C为:所述第三读取数据中第i数据位的取值,
所述第i数据位为:除当前已知的硬件错误位外的任一数据位。
结合第一方面,在第一种实现方式下,还包括:
查询预存的各所述硬件错误位的位置信息,确定各所述已知的硬件错误位。
结合第一方面,在第一种实现方式下,在步骤:确定各所述数据位为硬件错误位之后,还分别包括:
在所述各所述硬件错误位的位置信息中存储信息:所述数据位为硬件错误位的信息。
结合第一方面,在第一种实现方式下,根据各所述硬件错误位,纠正所述待纠正数据得到至少一个纠正待校验数据,包括:
穷举所述待纠正数据中各所述硬件错误位的可能取值分别得到各穷举数据,并且根据预定的校验算法校验各所述穷举数据是否为正确数据,
如果任一所述穷举数据被校验为正确数据,则终止所述穷举,输出所述正确数据。
结合第一方面,在第一种实现方式下,在步骤:根据预定的校验算法校验各所述穷举数据是否为正确数据之后,
如果所有所述穷举数据均被校验为非正确数据,还进一步包括:
穷举所述待纠正数据中各所述硬件错误位、以及随机错误位的可能取值分别得到各二次穷举数据,并且根据预定的校验算法校验各所述二次穷举数据是否为正确数据,
如果任一所述二次穷举数据被校验为正确数据,则终止所述穷举,输出所述正确数据。
结合第一方面,在第一种实现方式下,步骤:根据预定的校验算法校验各所述穷举数据是否为正确数据,具体为:
根据所述待纠正数据中的循环冗余校验码以及有效数据,按照预定的循环冗余校验算法,校验各所述穷举数据是否为正确数据;
步骤:根据预定的校验算法校验各所述二次穷举数据是否为正确数据,具体为:
根据所述待纠正数据中的循环冗余校验码以及有效数据,按照预定的循环冗余校验算法,校验各所述二次穷举数据是否为正确数据。
结合第一方面,在第一种实现方式下,在步骤:根据预定的校验算法校验各所述二次穷举数据是否为正确数据之后,
如果所有所述二次穷举数据均被校验为非正确数据,则还包括:
输出纠正结果消息:所述错误不可纠正。
第二方面,本发明实施例提供的一种内存纠错装置,包括:
错误检验单元,用于校验从内存读取获得的读取数据、以及纠错处理单元得到的各纠正待校验数据是否为正确数据,
写内存操作单元,用于在控制单元控制下,向所述内存写入数据,包括:在所述内存读操作单元从内存中同一确定的内存地址先后分别读取获得第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,用于将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址;
内存读操作单元,用于在所述控制单元的控制下读取所述内存的数据,包括:当从内存中同一确定的内存地址,先后分别读取获得的第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据所述确定的内存地址,从所述内存中再次读取数据获得所述第一取反数据对应的读取值,
取反单元,用于将所述第一取反数据对应的读取值按位取反得到第三读取数据;
错误位计算单元,用于在纠错处理单元控制下工作,包括:当所述第一读取数据、第二读取数据、第三读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据所述第一读取数据、第二读取数据以及所述第三读取数据,确定待纠正数据中各硬件错误位或者随机错误位,所述待纠正数据为所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一;
所述纠错处理单元,用于在所述控制单元的控制下,当所述第一读取数据、第二读取数据、第三读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据各所述硬件错误位、或者所述硬件错误位以及所述随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据;
控制单元,用于根据所述错误检验单元控制所述写内存操作单元、内存读操作单元、错误位计算单元以及纠错处理单元的工作。
结合第二方面,在第一种实现方式下,所述写内存操作单元,还用于:
如果任一所述纠正待校验数据被经校验为正确数据,用于将所述正确数据写回所述确定的内存地址,和/或,
如果所有所述纠正待校验数据均被经校验为不正确数据,则还用于将所述第一读取数据、第二读取数据或者所述第三读取数据写回所述确定的内存地址。
结合第二方面,在第一种实现方式下,所述纠错处理单元具体是将所述第二读取数据作为所述基准数据;
所述错误位计算单元具体用于在控制单元的控制下,计算获得计算结果取值,根据所述计算结果确定所述随机错误位或硬件错误位,包括:
对除已知的硬件错误位外的任一数据位,分别:
计算第一函数式:X=(A&B)^C,所述X取值为:1,则确定所述第i数据位为:硬件错误位;
计算第二函数式:Y=(A^(B&C))或Y=(B^(A&C)),如果所述Y取值为:1,则确定所述第i数据位为随机错误位;
其中,所述A为:所述第一读取数据中第i数据位的取值,
所述B为:所述第二读取数据中第i数据位的取值,
所述C为:所述第三读取数据中第i数据位的取值,
所述第i数据位为:除当前已知的硬件错误位外的任一数据位。
结合第二方面,在第一种实现方式下,还包括:
查询单元,用于在控制单元的控制下,在所述错误位计算单元确定各硬件错误位之前,查询预存的所述硬件错误位的位置信息,确定所述已知的硬件错误位。
结合第二方面,在第一种实现方式下,还包括:
存储写单元,与所述控制单元连接,用于在所述错误位计算单元确定所述第i数据位为硬件错误位之后,在所述硬件错误位的位置信息中增加信息:所述第i数据位为硬件错误位的信息。
结合第二方面,在第一种实现方式下,第一数据缓冲单元,用于缓存数据;
第二数据缓冲单元,用于缓存数据;
第三数据缓冲单元,用于缓存数据;
缓存读单元,用于在所述控制单元控制控制下,根据当前内存读命令中的命令标识,分别读取所述第一数据缓冲单元、第二数据缓冲单元、第三数据缓冲单元,分别获得所述第一读取数据、第二读取数据、第三读取数据;
缓存写单元,分别与所述控制单元、第一数据缓冲单元、第二数据缓冲单元以及第三数据缓冲单元连接,用于在所述控制单元的控制下将所述第一读取数据、第二读取数据以及所述第三读取数据,缓存至所述第一数据缓冲单元、第二数据缓冲单元以及第三数据缓冲单元,包括:
在内存读操作单元从内存中一确定的内存地址,读取获得所述第一读取数据之后,以及在在内存读操作单元从所述确定的内存地址,读取获得所述第二读取数据之后,以及在在内存读操作单元从所述确定的内存地址,读取获得所述第三读取数据之后,
当所述第一数据缓冲单元中,地址为所述命令标识的空间为空时,缓存写单元用于以所述命令标识为目的地址时:缓存写单元用于将当前的读取数据存储至所述第一数据缓冲单元,
当所述第一数据缓冲单元中地址为所述命令标识的空间不为空,并且所述第二数据缓冲单元中地址为所述命令标识的空间为空时:缓存写单元用于以所述命令标识为目的地址,将当前的读取数据存储至所述第二数据缓冲单元,
当所述第二数据缓冲单元中地址为所述命令标识的空间不为空,并且所述第三数据缓冲单元中地址为所述命令标识的空间为空时:缓存写单元用于以所述命令标识为目的地址,将对所述第一读取数据或第二读取数据按位取反后得到的第一取反数据存储至所述第三数据缓冲单元,
各所述当前的读取数据为所述第一读取数据、或者第二读取数据或者第三读取数据。
第三方面,本发明实施例提供的一种内存纠错装置,包括:
错误检验器,用于校验从内存读取获得的读取数据以及纠错处理单元得到的各纠正待校验数据是否为正确数据;
写内存操作器,用于在控制器控制下,向所述内存写入数据,包括:在所述内存读操作单元从内存中同一确定的内存地址先后分别读取获得第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,用于将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址;
内存读操作器,用于在所述控制器的控制下读取所述内存的数据,包括:当从内存中同一确定的内存地址,先后分别读取获得的第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据所述确定的内存地址,从所述内存中再次读取数据,获得所述第一取反数据对应的读取值,将所述第一取反数据对应的读取值按位取反得到第三读取数据;
取反器,用于将所述第一取反数据对应的读取值按位取反得到第三读取数据;
错误位计算器,用于在纠错处理器控制下工作,用于当所述第一读取数据、第二读取数据、第三读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据所述第一读取数据、第二读取数据以及所述第三读取数据确定待纠正数据中各硬件错误位或者随机错误位,所述待纠正数据为所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一;
所述纠错处理器,用于在所述控制器的控制下,当所述第一读取数据、第二读取数据、第三读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据各所述硬件错误位或者随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据;
控制器,用于根据所述错误检验器控制所述写内存操作器、内存读操作器、错误位计算器以及纠错处理器的工作。
结合第三方面,在第一种实现方式下,所述写内存操作器,还用于:
如果任一所述纠正待校验数据被经校验为正确数据,用于将所述正确数据写回所述确定的内存地址,和/或,
如果所有所述纠正待校验数据均被经校验为不正确数据,所述写内存操作器还用于将所述第一读取数据、第二读取数据或者所述第三读取数据写回所述确定的内存地址。
结合第三方面,在第一种实现方式下,所述纠错处理器具体是将所述第二读取数据作为所述基准数据;
所述错误位计算器具体用于在控制器的控制下,计算获得计算结果取值,根据所述计算结果确定所述随机错误位或硬件错误位,包括:
对除已知的硬件错误位外的任一数据位,分别:
计算第一函数式:X=(A&B)^C,所述X取值为:1,则确定所述第i数据位为:硬件错误位;
计算第二函数式:Y=(A^(B&C))或Y=(B^(A&C)),如果所述Y取值为:1,则确定所述第i数据位为随机错误位;
其中,所述A为:所述第一读取数据中第i数据位的取值,
所述B为:所述第二读取数据中第i数据位的取值,
所述C为:所述第三读取数据中第i数据位的取值,
所述第i数据位为:除当前已知的硬件错误位外的其中之一数据位。
结合第三方面,在第一种实现方式下,还包括:
查询器,用于在控制器的控制下,在所述错误位计算器确定各硬件错误位之前,查询预存的所述硬件错误位的位置信息,确定所述已知的硬件错误位。
结合第三方面,在第一种实现方式下,还包括:
存储写器,与所述控制器连接,用于在所述错误位计算器确定所述第i数据位为硬件错误位之后,在所述硬件错误位的位置信息中增加信息:所述第i数据位为硬件错误位的信息。
结合第三方面,在第一种实现方式下,还包括:
第一数据缓冲器,用于缓存数据;
第二数据缓冲器,用于缓存数据;
第三数据缓冲器,用于缓存数据;
缓存读器,用于在所述控制器控制控制下,根据当前内存读命令中的命令标识,分别读取所述第一数据缓冲器、第二数据缓冲器、第三数据缓冲器中,分别获得所述第一读取数据、第二读取数据、第三读取数据;
缓存写器,分别与所述控制器、第一数据缓冲器、第二数据缓冲器以及第三数据缓冲器连接,用于在所述控制器的控制下将所述第一读取数据、第二读取数据以及所述第三读取数据,缓存至所述第一数据缓冲器、第二数据缓冲器以及第三数据缓冲器,包括:
在内存读操作器根据所述确定的内存地址,先后分别读取获得所述第一读取数据、第二读取数据、第三读取数据之后,
当所述第一数据缓冲器中,地址为所述命令标识的空间为空时,缓存写器用于以所述命令标识为目的地址时:所述缓存写器用于将当前的读取数据存储至所述第一数据缓冲器,
当所述第一数据缓冲器中地址为所述命令标识的空间不为空,并且所述第二数据缓冲器中地址为所述命令标识的空间为空时:所述缓存写器用于以所述命令标识为目的地址,将当前的读取数据存储至所述第二数据缓冲器,
当所述第二数据缓冲器中地址为所述命令标识的空间不为空,并且所述第三数据缓冲器中地址为所述命令标识的空间为空时:所述缓存写器用于以所述命令标识为目的地址,将对所述第一读取数据或第二读取数据按位取反后得到的第一取反数据存储至所述第三数据缓冲器,
各所述当前的读取数据为所述第一读取数据、第二读取数据、第三读取数据的任一。
第四方面,本发明实施例提供的一种计算机系统,包括:
总线;
与所述总线相连的处理器;
与所述总线相连的存储器;
其中,所述处理器通过所述总线,调用所述存储器中存储的代码,以用于:
如果从内存中同一确定的内存地址,先后分别读取获得的第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据,则:
第一取反数据将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址,
根据所述确定的内存地址,从所述内存中再次读取数据,获得所述第一取反数据对应的读取值,将所述第一取反数据对应的读取值按位取反得到第三读取数据,
如果所述第三读取数据存在错误,并且所述错误未被纠正而得到正确数据,则:
将所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一,作为待纠正数据,
根据所述第一读取数据、第二读取数据以及所述第三读取数据,确定所述待纠正数据中各硬件错误位或者随机错误位,
根据各所述硬件错误位、或者所述硬件错误位以及随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据,
如果其中之一所述纠正待校验数据被经校验为正确数据,将所述正确数据写回所述确定的内存地址。
由上可见,应用本实施例技术方案,综上可见,采用本实施例技术方案,可以具有以下的有益效果:
1、本实施例通过三次读取内存分别获得读取数据,在三次读取时都有机会得到正确数据,其相对于现有技术中一次读取的方案,采用本实施例技术方案得到正确数据的几率更高,即应用本实施例技术方案有利于大大提高对内存数据的纠错能力。
2、进一步的,如果二次得到的读取数据均为错误,并且未错误未纠正,则通过写入第一取反数据,并读取该第一取反数据对应的读取值,然后将得到的读取值取反恢复得到第三读取值,通过该取反回存再校验的技术方案:
一方面,增加了得到正确数据的几率;
另一方面,还在该第三读取数据校验失败后,还可以利用该第三读取数据结合第一读取数据以及第二读取数据,利用硬件错误位或者随机错误位的特点,而确定各数据位为硬件错误位还是随机数据位还是正确数据位,使相对于现有技术中内存纠错方案,应用本实施例技术方案还可以进一步具体确定各具体的错误数据位位置。
3、由于本实施例可根据具体的错误数据位的位置以及其性质而纠正数据,使最终校验正确的纠正数据的几率大大提高,即得到正确数据的几率大大提高。
4、在每次经过校验得到纠正后的正确数据后,除了返回数据响应之外,以向系统数据输出正确数据外,还将最终纠正后的正确数据写回内存中当前的内存地址一,以便于在下次读取时可以直接得到正确数据,提高系统效率以及提高系统可靠性;
5、如果第三读取数据不存在错误,或者存在错误但错误被纠正而得到正确数据获得经纠正的正确数据,还将经校验不存在错误的第三读取数据、或者经纠正的正确数据写回内存当前的内存地址一,以替换第一取反数据,以便于在下次读取时可以直接得到正确数据,提高系统效率以及提高系统可靠性。
作为本实施例的进一步有益效果,由于在最终纠正仍然无法得到正确数据后,还可以进一步向系统返回当前内存地址一的错误不可纠正的警示消息,以便用户以及系统知晓该数据错误数据不可靠的风险,另一边面也便于系统的后续处理,以便根据该警示消息确定对数据的应用。
综上,采用本实施例技术方案有利于大大提高甚至内存数据的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种内存数据的纠错方法流程示意图;
图2为本发明实施例2提供的一种内存数据的纠错方法流程示意图;
图3为本发明实施例3提供的一种内存数据的纠错方法流程示意图;
图4为本发明实施例4提供的一种内存数据的纠错方法流程示意图;
图5为本发明实施例5提供的一种内存纠错装置结构示意图;
图6为本发明实施例6提供的一种内存纠错装置结构示意图;
图7为本发明实施例7提供的一种内存纠错装置结构示意图;
图8为本发明实施例8提供的一种内存纠错装置结构示意图;
图9为本发明实施例9提供的一种内存纠错装置结构示意图;
图10为本发明实施例10提供的一种内存纠错装置结构示意图;
图11为本发明实施例提供的一种计算机系统的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
参见图1所示,本实施例提供一种内存数据的纠错方法,该方法主要包括以下的流程:
步骤101:判定从内存中一确定的内存地址分别读取获得的第一读取数据、第二读取数据均存在错误,并且该错误未被纠正而得到正确数据,如果是,则执行步骤102;否则,跳转执行步骤111:返回数据响应。
本实施例中所述的第一读取数据、第二读取数据具体为从内存的一相同地址(记为内存地址一,可为本实施例以及下文的任一内存地址)读取获得的读取数据,即:
两次从内存中的同一确定的地址(即存储在该地址对应的存储空间的数数据相同)读取获得,分别得到第一读取数据、第二读取数据。或者,
三次或者更多次读取内存中的同一地址的数据,选取其中任意两次读取获得数据作为第一读取数据、第二读取数据,在实际中往往选取前一技术方案。
对于当前为每次读取获得的内存读取数据进行数据纠错的纠错算法情况,对每次读取根据内存读命令(内存读命令中包含读取的内存地址,内存地址记为内存地址一),读取获得的内存读取数据进行以下处理:
第一情形:当前为每内存读取数据配置,根据当次读取的读取数据进行数据纠错的纠错算法为不具备纠错能力的错误校验算法,譬如循环冗余校验(Cyclic Redundancy Checks,简称CRC)技术,则进行以下的错误校验流程:
利用本次读取的读取数据中的CRC校验码以及其中的有效数据,校验本次读取获得的读取数据是否为正确数据,如果是则跳转至步骤111返回数据响应,结束,而停止后续对内存地址一的继续读取;如果不是,则:
再次读取内存地址一的数据获得第二读取数据(将之前读取且经过校验确定为非正确数据的读取数据记为第一读取数据),利用CRC校验算法对该第二读取数据进行上述的错误校验流程。
如果第二读取数据被校验是否为正确数据,则跳转至步骤111返回数据响应,结束,而停止在此读取内存地址一;否则跳转执行步骤102。
第二情形:当前为每内存读取数据配置,根据当次读取的读取数据进行数据纠错的纠错算法为具备纠错能力的错误校验算法,譬如ECC纠错技术,则进行以下的纠错流程:
利用本次读取的读取数据中的ECC校验码以及其中的有效数据,校验本次读取获得的读取数据是否为正确数据,如果是则跳转至步骤111返回数据响应,结束,而停止后续对内存地址一的继续读取;如果不是,则根据本次读取数据中的ECC校验码采用ECC纠错流程对数据进行纠正,如果纠正后的数据经过ECC错误校验为正确数据,则跳转至步骤111返回数据响应,结束,而停止后续对内存地址一的继续读取。如果纠正后的数据经过ECC错误校验为非正确数据,则:
再次读取内存地址一的数据获得第二读取数据(将之前读取且经过校验确定为非正确数据的读取数据记为第一读取数据),利用ECC纠错算法对该第二读取数据进行上述的纠错流程。
如果第二读取数据经过ECC错误校验为正确数据,则跳转至步骤111返回数据响应,结束,而停止后续对内存地址一的继续读取;如果根据本次读取的内存读取数据,对该本次读取的内存读取数据进行纠正,根据纠正结果确定该错误是否被顺利纠正,
如果第二读取数据被校验是否为正确数据,或者第二读取数据经过ECC就错误算法被纠正得到正确数据,则跳转至步骤111返回数据响应,结束,而停止在此读取内存地址一;否则跳转执行步骤102。
由上可见,无论在已有的系统中为每次读取获得内存读取数据预设的纠错算法是否具备纠错能力,均当至少两次读取内存获得内存读取数据均被校验存在错误,并且错误均未被纠正而得到正确数据的情况下,无论已有的纠错算法不具备纠错能力则错误显然未被纠正,还是已有的纠错算法具备纠错能力但错误未被纠正的任一情况,均启动步骤102后的流程,进一步启动数据纠错处理。
步骤102:将第一读取数据或第二读取数据作为基准数据,按位取反获得的第一取反数据,将第一取反数据写入内存,写入的地址为内存地址一。
当经过步骤101的错误校验以及纠错(如果为各次读取的读取数据配置的数据纠错方法具备纠错能力的话)后无法得到正确数据,则将第一读取数据或第二读取数据作为基准数据,对该基准数据按位取反获得的第一取反数据,将第一取反数据写入内存的该内存地址中。
步骤103:读取内存地址一获得第一取反数据对应的读取值,将第一取反数据对应的读取值按位取反得到第三读取数据。
步骤104:如果第三读取数据存在错误且错误未被纠正,则执行步骤105;否则跳转执行步骤110。
步骤105:将第一读取数据、第二读取数据以及第三读取数据的其中之一,作为待纠正数据。
将第一读取数据、第二读取数据、第三读取数据中选取其中之一,作为待纠正数据。
譬如可以但不限于选取第一读取数据作为待纠正数据,也可以选择第二读取数据作为待纠正数据。
步骤106:根据第一读取数据、第二读取数据以及第三读取数据,确定待纠正数据中各硬件错误位以及随机错误位。
本发明在本发明的研究过程中分析发现,内存读取数据存在读取错误(即读取获得数据相对于存储的数据不一致)主要由以下原因引起:
第一:由于硬件固有缺陷而导致读取在某些确定的数据位上出现错误,譬如动态随机访问存储器(Dynamic random access memory,简称DRAM)某些颗粒失效,或者由于内存读取总线或者其他读取线路出现硬件固有错误,导致这种错误会一直存在于系统中,每次读写都导致数据在这些确定的数据位上数据可能错误。本实施例中将该类由于硬件固有原因而导致数据错误的数据位记为硬件错误位。
第二:由于非硬件固有缺陷而导致读取在某些不确定的数据位上出现错误的数据位,譬如由于外部信号干扰或者内部信号间的干扰导致数据当前在某些数据位可能出现错误,本实施例中将该类由于非硬件固有原因而导致数据错误的数据位记为随机错误位。
本发明人在根据上述的数据错误位分为硬件错误位以及随机错误位的分类,根据从内存地址分别读取获得的第一读取数据、第二读取数据以及对第一读取数据或第二读取数据取反得到的第一取反数据回存至内存后再次读取获得的对读取值取反恢复获得的第三读取数据,确定当前待纠正数据中的硬件错误位以及随机错误位,如果任一数据位既不为硬件错误位也不为随机错误位,则该数据位的数据正确,即该数据位为正确数据位。
具体地,如果当前存在硬件错误,则该硬件错误位会固定在某数据位上,而使该数据位的读取固定在‘0’或‘1’电平上,即无论该数据位的存储值为0还是1,在读取数据中,该数据位的读取数据固定为0或者固定为1。即多次读取内存得到的读取数据在该数据位上的值相同,而无论其存储数据为任何。譬如:
在某数据位上的实际数据应为0,该位置存在硬件错误,第一次、二次读取获得的值均为“0”;回存的数据在该数据位的存储值应为“1”,由于该数据位对应的固有硬件错误,第三次读取获得的读取值为“0”,对应的第三读取数据在该数据位的值为“1”。可见由于如果任一数据位,其在第一读取数据、第二读取读数据在所述数据位上的值相同,与第三读取数据在所述数据位上的值不同,则该数据位为硬件错误位,
而如果存在随机错误,则每次对某数据的读取得到的读取值可能相同也可能不相同,且在一个数据位连续2次出现随机错误的几率较低。譬如:
在某数据位上的实际数据应为0,该位置存在随机错误,第一次、二次读取获得的值分别为“1”、“0”;
取第二读取数据为第一取反数据,则回存的第一取反数据在该数据位的存储值应为“1”,由于该数据位对应的随机错误,
第三次读取获得的读取值为“1”,对应的第三读取数据在该数据位的值为“0”。可见,对任一数据位,在如果第三读取数据、该第三读取数据对应的基准数据上的取值相同,与第一读取数据以及第二读取读数据中、未作为基准数据在该数据位的取值不同,则该数据位为随机错误位。
应用本步骤技术方案可以根据硬件错误以及随机错误的特性确定各数据位是硬件错误位还是随机错误位还是正确数据位。
步骤107:根据各硬件错误位以及随机错误位,纠正待纠正数据得到各纠正待校验数据。
在确定待纠正数据中的各数据位的硬件错误位以及随机错误位后,针对性对这些错误数据位进行数据纠正,直到经过错误校验的数据被纠正为正确数据为止。
在本实施例中采用的纠错方法可以但不限于采用穷举法或者其他任一现有技术中的数据纠错方法。
步骤108:如果任一纠正待校验数据被经校验为正确数据,则执行步骤110;否则执行步骤109。
步骤109:如果还未纠正完毕,则返回步骤107;否则,跳转步骤112。
步骤110:将被校验为正确数据的数据,写回内存当前的内存地址一。
步骤111:返回数据响应,结束。
通过系统命令接口向系统返回数据响应,以向系统输出被校验为正确数据的数据。
步骤112:返回错误不可纠正消息。
为了提高系统后续的数据处理,在确定当前内存地址一的数据为不可纠正的数据后,还可以但不限于通过系统命令接口向系统返回告警信息,以告知系统该处的错误不可纠正,以便于系统记录该内存地址一处的数据错误不可纠正,以避免在可靠性要求高的系统中应用该存储的数据以及便于其他的系统应用。
步骤113:将第一读取数据或者第二读取数据或者第三读取数据的任一,写回内存的内存地址一。
在进行步骤112之后或者在步骤109之后跳过步骤112执行本步骤:
将第一读取数据或者第二读取数据或者第三读取数据的任一,写回内存的内存地址一而替换上述的第一取反数据。
在本实施例中可以但不限于将待纠正数据写会内存的内存地址一。由上可见,应用本实施例技术方案,由于在多次读取第一读取数据、第二读取数据(其在内存的地址均为内存地址一)均被校验为存在错误,并且错误未被纠正的情况下,本实施例进一步对将第一读取数据或第二读取数据按位取反获得的第一取反数据写入内存的内存地址一,然后再次读取内存地址一中获得第一取反数据对应的读取值,将第一取反数据对应的读取值按位取反得到第三读取数据,对该第三取反数据进行数据纠错,如果该第三读取数据不存在错误或者错误被纠正,则向将经校验不存在错误的第三读取数据、或者经纠正的正确数据写回内存的内存地址一,并返回数据响应以输出该正确数据;如果该第三读取数据存在错误,并且该错误未被纠正,则进一步第一读取数据、第二读取数据以及所述第三读取数据的其中之一,作为待纠正数据,然后根据第一读取数据、第二读取数据以及第三读取数据,确定待纠正数据中各硬件错误位以及随机错误位,在确定各错误数据位的位置之后,再根据各硬件错误位以及随机错误位的位置,纠正待纠正数据得到各纠正待校验数据,直到任一纠正待校验数据被经校验为正确数据,则停止纠正,并且将该为正确数据写回内存的所述确定的内存地址一。
综上可见,采用本实施例技术方案,可以具有以下的有益效果:
1、本实施例通过三次读取内存分别获得读取数据,在三次读取时都有机会得到正确数据,其相对于现有技术中一次读取的方案,采用本实施例技术方案得到正确数据的几率更高。
2、进一步的,如果二次得到的读取数据均为错误,并且未错误未纠正,则通过写入第一取反数据,并读取该第一取反数据对应的读取值,然后将得到的读取值取反恢复得到第三读取值,通过该取反回存再校验的技术方案:
一方面,增加了得到正确数据的几率;
另一方面,还在该第三读取数据校验失败后,还可以利用该第三读取数据结合第一读取数据以及第二读取数据,利用硬件错误位以及随机错误位的特点,而确定各数据位为硬件错误位还是随机数据位还是正确数据位,使相对于现有技术中内存纠错方案,应用本实施例技术方案还可以进一步具体确定各具体的错误数据位位置。
3、由于本实施例可根据具体的错误数据位的位置以及其性质而纠正数据,使最终校验正确的纠正数据的几率大大提高,即得到正确数据的几率大大提高。
4、在每次经过校验得到纠正后的正确数据后,除了返回数据响应之外,以向系统数据输出正确数据外,还将最终纠正后的正确数据写回内存中当前的内存地址一,以便于在下次读取时可以直接得到正确数据,提高系统效率以及提高系统可靠性;
5、如果第三读取数据不存在错误,或者存在错误但错误被纠正获得经纠正的正确数据,还将经校验不存在错误的第三读取数据、或者经纠正的正确数据写回内存当前的内存地址一,以替换第一取反数据,以便于在下次读取时可以直接得到正确数据,提高系统效率以及提高系统可靠性。
作为本实施例的进一步有益效果,由于在最终纠正仍然无法得到正确数据后,还可以进一步向系统返回当前内存地址一的错误不可纠正的警示消息,以便用户以及系统知晓该数据错误数据不可靠的风险,另一边面也便于系统的后续处理,以便根据该警示消息确定对数据的应用。
综上,采用本实施例技术方案有利于大大提高甚至内存数据的可靠性。
需要说明的是,有本实施例技术方案,可以除了可以先仅仅对硬件错误位进行穷举纠错后看是否能得到正确数据,如果能得到正确数据则本方案仅仅根据硬件错误位即可实现对内存的纠错;或者还可以先仅仅对硬件错误位进行穷举纠错后看是否能得到正确数据,如果能得到正确数据则本方案仅仅根据随机错误位即可实现对内存的纠错;如果均否,还可以根据硬件错误位以及随机错误位进行所有错误数据位的穷举,在穷举纠错后看是否能得到正确数据,如果得到正确数据则本方案是根据硬件错误位以及随机错误位实现对内存的纠错。
实施例2:
参见图2所示,本实施例方法主要包括针对为每次读取获得的第一读取数据、第二读取数据、第三读取数据,根据本次读取的数据进行纠错的纠错算法既具备错误校验能力还具备一定的纠错能力,譬如ECC纠错技术。
本实施例以该纠错算法为ECC纠错技术为例进行示意性说明。
本实施例的内存数据纠错方法包括以下步骤:
步骤201:ECC校验第一次读取内存中的当前的内存地址一而获得的第一读取数据是否为正确数据,如果是,则执行步骤224;否则执行步骤202。
步骤202:采用ECC纠错流程对第一读取数据进行纠错。
步骤203:ECC校验,确定:该错误是否被纠正成功,如果是,则跳转执行步骤223;否则,执行步骤204。
步骤204:第二次读取内存中的当前的内存地址一获得第二读取数据。
步骤205:ECC校验第二读取数据是否为正确数据,如果是,则执行步骤224;否则执行步骤206。
步骤206:采用ECC纠错流程对第二读取数据进行纠错。
步骤207:ECC校验,确定:该错误是否被纠正成功,如果是,则跳转执行步骤223;否则,执行步骤208。
其中步骤202-208中的的ECC纠错技术方案具体可以参见现有技术中的任一。
步骤208:将第一读取数据或第二读取数据作为基准数据,按位取反获得的第一取反数据,将第一取反数据写入内存,写入的地址为内存地址一。
本步骤以实施例1中的步骤102同理,再次不作赘述。
步骤209:读取内存地址一获得第一取反数据对应的读取值,将第一取反数据对应的读取值按位取反得到第三读取数据。
本步骤以实施例1中的步骤103同理。
譬如:在本实施例中将第一读取数据或者第二读取数据进行按位取反运算后得到一数据值(记为第一取反数据),将第一取反数据写回至内存的预定位置,然后再读取该内存的预定位置(即再读取第一取反数据),得到第一取反数据对应的读取值,将第一取反数据对应的读取值进行按位取反后得到的数据作为第三读取数据。
在本实施例中以:第二读取数据进行按位取反运算得到的值作为第一取反数据。但实施中可以并不限于将第一读取数据进行按位取反运算得到的值作为第一取反数据。
更进一步的说明如下:
设某一数据为001;其按位取反后得到的值为:110,则将“110”存储至内存的预定位置,设由于硬件错误使第0bit数据位处的读取值固定为1,则读取该内存预定位置得到的读取值可能为“111”,该数值“111”为第三读取数据。
步骤210:ECC校验第三读取数据是否为正确数据,如果是,则执行步骤223;否则执行步骤211。
步骤211:采用ECC纠错流程对第三读取数据进行纠错。
步骤212:ECC校验,确定:该错误是否被纠正成功,如果是,则跳转执行步骤223;否则,执行步骤213。
步骤213:将第一读取数据、第二读取数据以及第三读取数据的其中之一,作为待纠正数据。
将第一读取数据、第二读取数据、第三读取数据中选取其中之一,作为待纠正数据。
譬如可以但不限于选取第一读取数据作为待纠正数据,也可以选择第二读取数据作为待纠正数据。
在本实施例中以第二读取数据作为待纠正数据为例进行示意性说明。在应用时也可以但不限于选取第一读取数据作为待纠正数据。而本发明人在试验过程中发现,选取后读取内存获得的第二读取数据发生随机错误的几率相对较低,其数据错误位相对更少,各选取其作为待纠正数据有利于进一步提高数据纠错的几率。
步骤214:根据第一读取数据、第二读取数据以及第三读取数据,确定待纠正数据中各硬件错误位以及随机错误位,并且在每确定一硬件错误位后,存储该硬件错误数据位的信息。
本步骤以实施例1中的步骤106同理。
进一步的,本发明人在进行本发明的研究过程中,进一步可以采用以下的技术方案高效,并且准确地确定各数据位为硬件错误位、随机错误位:
在获取第一读取数据、第二读取数据、第三读取数据后,对除当前已知的硬件错误位外的任一数据位(即该数据位为第i数据位,其中如果当前无已知的硬件错误位,则该除当前已知的硬件错误位外的任一数据位指的是任一数据位):
计算第一函数式:X=(A&B)^C,获得X的取值,通过该X的取值高效准确地确定在该第i数据位上,第一读取数据、第二读取读数据上的取值是否相同,并且是否与第三读取数据上的取值不同:
如果X取值为:1,则确定:在该第i数据位上,第一读取数据、第二读取读数据上的取值相同,并且与第三读取数据上的取值不同,该第i数据位为:硬件错误位。
如果确定该第i数据位不为硬件错误位,则进一步计算第二函数式:Y=(A^(B&C))或者Y=(B^(A&C));通过该Y的取值高效准确地确定:
在该第i数据位上,第三读取数据、第一取反数据对应的基准数据(本实施例以基准数据为第二读取数据为例)的取值是否相同,并且是否与第一读取数的取值不同:
则所述数据位为随机错误位,具体是:
如果Y取值为:1,则确定:在该第i数据位上,第三读取数据、第二读取数据的取值是否相同,并且是否与第一读取数的取值不同,该第i数据位为随机错误位。
如果确定该第i数据位也不为随机错误位,则可以判定该第i数据位为正确数据位。
由上可见,对每个数据位,应用本步骤提供的上述的错误数据位确定技术方案可以高效快捷地逐个当前数据中的各个错误数据位的位置,加快错误数据位的位置确定效率,提高系统效率。
作为本实施例的进一步优选方案,在确定任一第i数据位为硬件错误位后,还可以进一步在硬件错误位的位置信息中存储(增加或修改):当前第i数据位为硬件错误位,以便于在系统记录该固有的硬件错误位信息,以在后续无法得到正确数据时,无需重复计算即可确定该已知的硬件错误位,减少以后的计算量,进一步提高系统的处理效率。
另外,在本实施例中,为了进一步提高系统的效率,还可以采用以下对第一读取数据、第二读取数据、第三读取数据的缓存技术方案:
具体地,本实施例为第一读取数据、第二读取数据、第三读取数据分别设置有第一缓冲器、第二缓冲器、第三缓冲器。
在第一读取数据经过校验被认为存在错误,并且错误未被纠正的情况下,
以及,在读取内存获得第二读取数据,并且该第二读取数据经过校验被认为存在错误,并且错误未被纠正的情况下,
以及,在读取内存获得第三读取数据,并且该第三读取数据经过校验被认为存在错误,并且错误未被纠正的情况下,均进行以下步骤:
查询第一缓冲器中、地址为读取获取本第一读取数据时的内存读命令中的命令标识(根据目前的计算机技术,命令标识在一次读取过程中与确定的内存地址唯一对应,直到读取数据完成后此命令标识被释放,即在本实施例中,对同一内存地址的读取,其内存读命令中的命令标识相同)的空间是否为空:
如果第一缓冲器空中地址为命令标识的空间为空,则将当前的读取数据存储于第一缓冲器中,存储的目的地址为:上述的命令标识;
如果第一缓冲器空中地址为命令标识的空间不为空,则进一步查询第二缓冲器中、地址为上述命令标识的空间是否为空:
如果第二缓冲器空中地址为命令标识的空间为空,则将当前的读取数据存储于第二缓冲器中,存储的目的地址为:上述的命令标识;
如果第二缓冲器空中地址为命令标识的空间不为空,则则进一步查询第二缓冲器中、地址为上述命令标识的空间是否为空:
如果第三缓冲器空中地址为命令标识的空间为空,则将当前的读取数据存储于第三缓冲器中,存储的目的地址为:上述的命令标识;
如果第三缓冲器空中地址为命令标识的空间不为空,则可以确定当前的第一读取数据、第二读取数据、第三读取数据分别被存储至第一数据缓冲器、第二缓冲器、第三缓冲器中,并且在一数据缓冲器、第二缓冲器、第三缓冲器中的地址分别为上述的命令地址。
由于采用上述的缓存技术方案,故在进行本步骤:根据第一读取数据、第二读取数据以及第三读取数据,确定待纠正数据中各硬件错误位以及随机错误位时,具体可以:
以上述命令标识为读取地址,分别读取第一数据缓冲器、第二数据缓冲器、第三数据缓冲器,分别获得上述的第一读取数据、第二读取数据以及第三读取数据,以便根据该三组读取数据进行硬件错误位以及随机错误位的确定。
在本实施例中采用上述的缓存技术方案能进一步提高系统处理的效率,提高纠错的处理速度。
步骤215:穷举所述待纠正数据中各所述硬件错误位的可能取值分别得到所述待纠正数据对应的各穷举数据。
其中,任一硬件错误位的可能取值为:“0”或者“1”。
步骤216:ECC校验,确定:当前得到的穷举数据是否为正确数据,如果当次得到的穷举数据为正确数据,则跳转执行步骤223;否则执行步骤217。
步骤217:采用ECC纠错流程对当前的穷举数据进行纠错,得到纠错后的穷举数据。
步骤218:ECC校验当前纠错后的穷举数据是否为正确数据。
步骤219:如果当前纠错后的穷举数据是否为正确数据,则跳转执行步骤223;否则,执行步骤220。
步骤220:如果所有硬件错误位均穷举完毕,则执行步骤221;否则返回步骤215。
步骤221:返回错误不可纠正消息。
步骤222:将第一读取数据或者第二读取数据或者第三读取数据的任一,写回内存的内存地址一。
步骤221-222同理于实施例1中步骤112-113。
步骤223:将被校验为正确数据的数据,写回内存的当前的内存地址一。
步骤224:返回数据响应,结束。
步骤223-224分别同理于实施例1中步骤110-111。
由上可见,采用本实施例技术方案除了具备实施例1以及本实施例中以上已述的有益效果外,还由于本实施例在根据硬件错误位以及随机错误位纠正待纠正数据时,采用穷举法对数据进行纠正,并且在任一穷举数据被校验为正确数据或者经过纠正后被校验为正确数据后,均停止穷举,一方面确保提高得到正确数据的效率确保数据的可靠性;另一方面确保数据错误位越少,穷举花费时间越少。
实施例3:
参见图3所示,本实施例相对于实施例2所不同之处主要在于:
本实施例的内存数据纠错方法,在中步骤220之后,步骤221之前还包括:
步骤301:穷举待纠正数据中各硬件错误位以及随机错误位的可能取值,分别得到待纠正数据对应的各二次穷举数据。
其中,任一硬件错误位以及任一随机错误位的可能取值均为:“0”或者“1”。
步骤302:ECC校验当前得到的二次穷举数据是否为正确数据。
步骤303:如果当次得到的二次穷举数据是否为正确数据,则跳转执行步骤223;否则执行步骤304。
步骤304:采用ECC纠错流程对当前的穷举数据进行纠错,得到纠错后的穷举数据。
步骤305:ECC校验,确定当前纠错后的穷举数据是否为正确数据。如果当前纠错后的穷举数据是否为正确数据,则跳转执行步骤222;否则,执行步骤306。
步骤306:如果所有硬件错误位以及随机错误位均穷举完毕,则执行步骤221;否则,返回步骤301。
其他步骤的流程参见图3以及与实施例2中的相应描述相同,再次不再赘述。
由上可见,本实施例技术方案除了具备实施例2中所述的有益效果外,由于其在对硬件错误位的穷举完毕仍然无法获得正确的数据或者经过纠正被校验为正确的数据后,进一步扩大穷举范围,穷举所有的硬件错误位以及随机错误位的可能取值,进一步通过ECC错误校验以及ECC纠错尝试获取被正确数据,进一步提高了获得正确数据的几率,提高系统的可靠性。
实施例4:
参见图4所示,本实施例方法主要包括针对为每次读取获得的第一读取数据、第二读取数据、第三读取数据,根据本次读取的数据进行纠错的纠错算法仅具备错误校验能力,譬如CRC错误校验技术。
本实施例以CRC错误校验技术为例进行示意性说明。
本实施例的内存数据纠错方法包括以下步骤:
步骤401:CRC校验第一次读取内存中的当前的内存地址一而获得的第一读取数据是否为正确数据。
步骤402:如果第一读取数据为正确数据,则执行步骤422;否则执行步骤403。
步骤403:第二次读取内存中的当前的内存地址一获得第二读取数据。
步骤404:CRC校验第二读取数据是否为正确数据。
步骤405:如果第二读取数据为正确数据,则执行步骤422;否则,执行步骤406。
步骤406:将第一读取数据或第二读取数据作为基准数据,按位取反获得的第一取反数据,将第一取反数据写入内存,写入的地址为内存地址一。
本步骤同理于实施例1中的步骤102、实施例2中的步骤208。
步骤407:读取内存地址一获得第一取反数据对应的读取值,将第一取反数据对应的读取值按位取反得到第三读取数据。
本步骤以实施例1中的步骤103以及实施例2中的步骤209同理。
步骤406:读取内存地址一获得第一取反数据对应的读取值,将第一取反数据对应的读取值按位取反得到第三读取数据。
本步骤以实施例1中的步骤104同理,再次不作赘述。
步骤407:CRC校验第三读取数据是否为正确数据。
步骤408:如果第三读取数据为正确数据,则执行步骤421;否则,执行步骤409。
步骤409:将第一读取数据、第二读取数据以及第三读取数据的其中之一,作为待纠正数据。
本步骤以实施例2中的步骤210同理,再次不作赘述。
步骤410:根据第一读取数据、第二读取数据以及第三读取数据,确定待纠正数据中各硬件错误位以及随机错误位,并且在每确定一硬件错误位后,存储该硬件错误数据位的信息。
在本实施例中,在确定待纠正数据中各硬件错误位后,存储该硬件错误数据位的信息,为作为本实施例中提高其他内存数据纠错流程效率的优选技术方案。
本步骤以实施例1中的步骤106以及实施例2中的步骤211同理。
步骤411:穷举待纠正数据中各所述硬件错误位的可能取值分别得到所述待纠正数据对应的各穷举数据。
其中,任一硬件错误位的可能取值为:“0”或者“1”。
步骤412:CRC校验当前得到的穷举数据是否为正确数据。
步骤413:如果当次得到的穷举数据为正确数据,则跳转执行步骤420;否则执行步骤414。
步骤414:如果所有硬件错误位均穷举完毕,则执行步骤415;否则,返回步骤411。
步骤415:穷举待纠正数据中各硬件错误位以及随机错误位的可能取值,分别得到待纠正数据对应的各二次穷举数据。
其中,任一硬件错误位以及任一随机错误位的可能取值均为:“0”或者“1”。
步骤416:CRC校验当前得到的二次穷举数据是否为正确数据。
步骤417:如果当次得到的二次穷举数据为正确数据,则跳转执行步骤421;否则执行步骤418。
步骤418:如果所有硬件错误位以及随机错误位均穷举完毕,则执行步骤419;否则,返回步骤415。
步骤419:返回错误不可纠正消息。
步骤420:将第一读取数据或者第二读取数据或者第三读取数据的任一,写回内存的内存地址一。
步骤419-420同理于实施例1中步骤112-113。
步骤421:将被校验为正确数据的数据,写回内存的当前的内存地址一。
步骤422:返回数据响应,结束。
步骤421-422分别同理于实施例1中步骤110-111。
本实施例除了具备实施例3中所述的有益效果外,与实施例3所不用之处主要在于:本实施例技术方案还适应与不具备纠错能力的数据错误校验方法,适应该已有的纠错方案采用本实施例技术方案仍然可确保内存数据的纠错能力,提高内存数据的可靠性。
实施例5:
参见图5所示,本实施例提供了一种内存纠错装置,其主要包括:错误检验单元501、写内存操作单元502、内存读操作单元503、错误位计算单元504、纠错处理单元505以及控制单元506。
各部件的连接关系以及工作原理如下:
控制单元506,用于根据所述错误检验单元501的校验结果,控制写内存操作单元502、内存读操作单元503、错误位计算单元504以及纠错处理单元505的工作。
错误检验单元501,用于校验内存读取数据是否为正确数据,该校验包括:校验从内存中一确定的内存地址(记为内存地址一),先、后分别读取获得的第一读取数据、第二读取数据、第三读取数据是否分别存在错误,并且错误未被纠正。
错误检验单元501在进行错误校验过程中,具体采用的错误校验技术方案可以为任意预定的各种错误校验技术,譬如带纠正功能的ECC校验或者不带纠正功能的CRC校验。
写内存操作单元502,用于在控制单元506控制下,向内存写入数据。
该内存写入数据具体包括:当经错误校验单元确定:第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正时,写内存操作单元502用于将第一读取数据或第二读取数据按位取反获得的第一取反数据写入内存地址一覆盖原内存数据;以及,还可以当经错误校验单元确定任一纠正待校验数据被经校验为正确数据时,写内存操作单元502将正确数据写回内存地址一,以替换原存储的第一取反数据;以及,还可以当经错误校验单元确定如果所有所述纠正待校验数据均被经校验为不正确数据,即最终还是无法得到经校验为正确数据的纠正待校验数据时,写内存操作单元502用于将待纠正数据写回内存的内存地址一以替换原存储的第一取反数据。
内存读操作单元503,用于在控制单元506的控制下读取所述内存的数据,包括:当经错误校验单元确定第一读取数据、第二读取数据均存在错误,并且错误未被纠正时,内存读操作单元503用于读取内存地址一获得当前存储的第一取反数据对应的读取值,将第一取反数据对应的读取值按位取反得到第三读取数据。
错误位计算单元504,用于在纠错处理单元505控制下工作,用于当经错误校验单元确定第一读取数据、第二读取数据以及第三读取数据均存在错误,并且所述错误未被纠正时,将第一读取数据、第二读取数据以及第三读取数据的其中之一,作为待纠正数据。并且,根据第一读取数据、第二读取数据以及第三读取数据,确定待纠正数据中各硬件错误位以及随机错误位。
在被实施例中,硬件错误位具体为由于硬件固有原因而导致数据错误的数据位记为硬件错误位;
随机错误位具体为由于非硬件固有原因而导致数据错误的数据位记为随机错误位。
本发明人在进行本发明的研究过程中开发了以下通过第一读取数据、第二读取读数据、第三读取数据在各数据位上的取值的比较而确定该数据位是否为硬件错误位或者随机错误位的方法:
如果在任一数据位上,所述第一读取数据、第二读取读数据在所述数据位上的值相同,与所述第三读取数据上的取值不同,则所述数据位为硬件错误位,
设第三读取数据对应的述第一取反数据与第二读取数据对应,如果在任一数据位上,如果第三读取数据、第二读取数据的值相同,与第一读取数据的取值不同,则所述数据位为随机错误位;
除了上述两种情况之外的,判定该数据位为正确数据位。
为了进一步方便计算机的实现,在本实施例中错误位计算单元504还可以按照下面的技术方案确定各硬件错误位以及随机错误位:
对除已知的硬件错误位外的任一数据位(记为第i数据位),分别执行以下步骤:
计算第一函数式:X=(A&B)^C,所述X取值为:1,则确定当前第i数据位为:硬件错误位;
计算第二函数式:Y=(A^(B&C))或者Y=(B^(A&C)),如果所述Y取值为:1,则确定当前第i数据位为随机错误位;
其中,A为:所述第一读取数据中第i数据位的取值,
B为:所述第二读取数据中第i数据位的取值,
C为:所述第三读取数据中第i数据位的取值,
所述第i数据位为:除当前已知的硬件错误位外的任一数据位。
纠错处理单元505,与错误位计算单元504电连接,用于在控制单元506的控制下,当经错误校验单元确定第一读取数据、第二读取数据、第三读取数据均存在错误,并且错误未被纠正时,根据各硬件错误位以及随机错误位,纠正待纠正数据得到各纠正待校验数据。
其中,采用的纠错处理单元505可以但不限于为采用穷举算法对数据进行纠错处理的穷举单元,该穷举处理具体如下:在控制单元506的控制下,当第一读取数据、第二读取数据、第三读取数据均存在错误,并且所述错误未被纠正时,纠错处理单元505穷举待纠正数据中各所述硬件错误位和/或随机错误位的可能取值,分别得到待纠正数据对应的各穷举数据。控制单元506将各穷举单元输入值错误校验单元,以供错误校验单元确定当前的穷举数据是否为正确数据,当前穷举数据被所述错误校验单元校验为正确数据,则控制单元506终止穷举单元的穷举处理。
上述各部件以及各部件之间的更进一步的工作原理以及详细参见实施例1-4的记载。
由上可见,采用本实施例技术方案,可以具有以下的有益效果:
1、本实施例通过三次读取内存分别获得读取数据,在三次读取时都有机会得到正确数据,其相对于现有技术中一次读取的方案,采用本实施例技术方案得到正确数据的几率更高。
2、进一步的,如果二次得到的读取数据均为错误,并且未错误未纠正,则通过写入第一取反数据,并读取该第一取反数据对应的读取值,然后将得到的读取值取反恢复得到第三读取值,通过该取反回存再校验的技术方案:
一方面,增加了得到正确数据的几率;
另一方面,还在该第三读取数据校验失败后,还可以利用该第三读取数据结合第一读取数据以及第二读取数据,利用硬件错误位以及随机错误位的特点,而确定各数据位为硬件错误位还是随机数据位还是正确数据位,使相对于现有技术中内存纠错方案,应用本实施例技术方案还可以进一步具体确定各具体的错误数据位位置。
3、由于本实施例可根据具体的错误数据位的位置以及其性质而纠正数据,使最终校验正确的纠正数据的几率大大提高,即得到正确数据的几率大大提高。
4、在每次经过校验得到纠正后的正确数据后,除了返回数据响应之外,以向系统数据输出正确数据外,还将最终纠正后的正确数据写回内存中当前的内存地址一,以便于在下次读取时可以直接得到正确数据,提高系统效率以及提高系统可靠性;
5、如果第三读取数据不存在错误,或者存在错误但错误被纠正获得经纠正的正确数据,还将经校验不存在错误的第三读取数据、或者经纠正的正确数据写回内存当前的内存地址一,以替换第一取反数据,以便于在下次读取时可以直接得到正确数据,提高系统效率以及提高系统可靠性。
本实施例的其他进一步有益效果与实施例1-4中的相应描述同理。
实施例6
参见图6所示,本实施例的内存纠错装置相对于实施例5所不同之处主要包括:
本实施例的内存纠错装置还包括:
查询单元601,用于在控制单元605的控制下,在错误位计算单元504确定各硬件错误位以及随机错误位之前,查询预存的硬件错误位的位置信息,确定已知的硬件错误位,以便错误位计算单元504在进行硬件错误位以及随机错误位时无需对这些已知的硬件错误位进行数据计算,而有利于进一步提高系统的处理效率。
需要说明的是,在本实施例中这些已知的硬件错误位信息可以预存在本内存纠错装置上也可以预存在其他的任一位置。该已知的硬件错误位信息可以为由用户根据用户的检测预先设置,也可以由本内存纠错装置根据之前的历史处理而预存。采用后一技术方案时,本实施例的内存纠错装置还包括:
存储写单元602,与控制单元605连接,用于当错误位计算单元504每次当前第i数据位为硬件错误位之后,均硬件错误位的位置信息中增加信息:该i数据位为硬件错误位的信息。这样,在本实施例内存纠错装置运行的过程中,根据装置本身的运行自动化智能记录该已知的硬件错误位信息,从而使得后续的硬件错误位计算确定花费的时间越来越短,有利于提高后续的数据处理效率。
实施例7:
参见图7所示,本实施例的内存纠错装置相对于实施例5所不同之处主要包括:
本实施例的内存纠错装置还包括:
第一数据缓冲单元701、第二数据缓冲单元702以及第三数据缓冲单元703,分别用于缓存数据;
缓存写单元704,用于在所述控制单元706的控制下将所述第一读取数据、第二读取数据以及所述第三读取数据,缓存至所述第一数据缓冲单元701、第二数据缓冲单元702以及第三数据缓冲单元703,所述缓存具体包括:
在内存读操作单元503,从内存地址一,读取获得所述第一读取数据之后,
以及,在内存读操作单元503,从内存地址一,读取获得所述第二读取数据之后,
以及,在内存读操作单元503,从内存地址一,读取获得所述第三读取数据之后,
缓存写单元704分别查询第一数据缓冲单元701中,地址为所述命令标识的空间是否为空,
如果第一数据缓冲单元701中所述空间为空,则缓存写单元704以所述命令标识为目的地址,将当前的读取数据存储至所述第一数据缓冲单元701,
当前的读取数据为第一读取数据、或者第二读取数据或者第三读取数据;
如果第一数据缓冲单元701中地址为所述命令标识的空间不为空,则:
查询第二数据缓冲单元702中,地址为所述命令标识的空间是否为空,
如果第二数据缓冲单元702中所述空间为空,则缓存写单元704以所述命令标识为目的地址,将当前的读取数据存储至所述第二数据缓冲单元702,
如果第二数据缓冲单元702中所述空间不为空,则查询所述第三数据缓冲单元703中地址为所述命令标识的空间是否为空,
如果第三数据缓冲单元703中所述空间为空,则缓存写单元704以命令标识为目的地址,将对所述第一读取数据或第二读取数据按位取反后得到的第一取反数据存储至所述第三数据缓冲单元703,
如果所述第三数据缓冲单元703中所述空间不为空,则控制单元706可确定当前内存地址一对应的第一读取数据、第二读取数据、第三读取数据已分别被存储于第一数据缓冲单元701、第二数据缓冲单元702、第三数据缓冲单元703中,控制单元706控制缓存读单元分别以所述命令标识为读取地址,读取第一数据缓冲单元701、第二数据缓冲单元702、第三数据缓冲单元703,获得所述第一读取数据、第二读取数据、第三读取数据,传递至所述错误位计算单元504。
以上述命令标识为读取地址,分别读取第一数据缓冲单元701、第二数据缓冲单元702、第三数据缓冲单元703,分别获得上述的第一读取数据、第二读取数据以及第三读取数据,以便根据该三组读取数据进行硬件错误位以及随机错误位的确定。
在本实施例中采用上述的缓存技术方案能进一步提高系统处理的效率,提高纠错的处理速度。
实施例8:
参见图8所示,本实施例提供了一种内存纠错装置,其主要包括:错误检验器801、写内存操作器802、内存读操作器803、错误位计算器804、纠错处理器805以及控制器806。
各部件的连接关系以及工作原理如下:
控制器806,用于根据所述错误检验器801的校验结果,控制写内存操作器802、内存读操作器803、错误位计算器804以及纠错处理器805的工作。
错误检验器801,用于校验内存读取数据是否为正确数据,该校验包括:校验从内存中一确定的内存地址(记为内存地址一),先、后分别读取获得的第一读取数据、第二读取数据、第三读取数据是否分别存在错误,并且错误未被纠正。
错误检验器801在进行错误校验过程中,具体采用的错误校验技术方案可以为任意预定的各种错误校验技术,譬如带纠正功能的ECC校验或者不带纠正功能的CRC校验。
写内存操作器802,用于在控制器806控制下,向内存写入数据。
该内存写入数据具体包括:当经错误校验单元确定:第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正时,写内存操作器802用于将第一读取数据或第二读取数据按位取反获得的第一取反数据写入内存地址一覆盖原内存数据;以及,还可以当经错误校验单元确定其中之一纠正待校验数据被经校验为正确数据时,写内存操作器802将正确数据写回内存地址一,以替换原存储的第一取反数据;以及,还可以当经错误校验单元确定如果所有所述纠正待校验数据均被经校验为不正确数据,即最终还是无法得到经校验为正确数据的纠正待校验数据时,写内存操作器802用于将待纠正数据写回内存的内存地址一以替换原存储的第一取反数据。
内存读操作器803,用于在控制器806的控制下读取所述内存的数据,包括:当经错误校验单元确定第一读取数据、第二读取数据均存在错误,并且错误未被纠正时,内存读操作器803用于读取内存地址一获得当前存储的第一取反数据对应的读取值,将第一取反数据对应的读取值按位取反得到第三读取数据。
错误位计算器804,用于在纠错处理器805控制下工作,用于当经错误校验单元确定第一读取数据、第二读取数据以及第三读取数据均存在错误,并且所述错误未被纠正时,将第一读取数据、第二读取数据以及第三读取数据的其中之一,作为待纠正数据。并且,根据第一读取数据、第二读取数据以及第三读取数据,确定待纠正数据中各硬件错误位或者随机错误位。
在被实施例中,硬件错误位具体为由于硬件固有原因而导致数据错误的数据位记为硬件错误位;
随机错误位具体为由于非硬件固有原因而导致数据错误的数据位记为随机错误位。
本发明人在进行本发明的研究过程中开发了以下通过第一读取数据、第二读取读数据、第三读取数据在各数据位上的取值的比较而确定该数据位是否为硬件错误位或者随机错误位的方法:
如果在任一数据位上,所述第一读取数据、第二读取读数据在所述数据位上的值相同,与所述第三读取数据上的取值不同,则所述数据位为硬件错误位,
设第三读取数据对应的述第一取反数据与第二读取数据对应,如果在任一数据位上,如果第三读取数据、第二读取数据的值相同,与第一读取数据的取值不同,则所述数据位为随机错误位;
除了上述两种情况之外的,判定该数据位为正确数据位。
为了进一步方便计算机的实现,在本实施例中错误位计算器804还可以按照下面的技术方案确定各硬件错误位以及随机错误位:
对除已知的硬件错误位外的任一数据位(记为第i数据位),分别执行以下步骤:
计算第一函数式:X=(A&B)^C,所述X取值为:1,则确定当前第i数据位为:硬件错误位;
计算第二函数式:Y=(A^(B&C))或者Y=(B^(A&C)),如果所述Y取值为:1,则确定当前第i数据位为随机错误位;
其中,A为:所述第一读取数据中第i数据位的取值,
B为:所述第二读取数据中第i数据位的取值,
C为:所述第三读取数据中第i数据位的取值,
所述第i数据位为:除当前已知的硬件错误位外的任一数据位。
纠错处理器805,与错误位计算器804电连接,用于在控制器806的控制下,当经错误校验单元确定第一读取数据、第二读取数据、第三读取数据均存在错误,并且错误未被纠正时,根据各硬件错误位以及随机错误位,纠正待纠正数据得到各纠正待校验数据。
其中,采用的纠错处理器805可以但不限于为采用穷举算法对数据进行纠错处理的穷举单元,该穷举处理具体如下:在控制单元806的控制下,当第一读取数据、第二读取数据、第三读取数据均存在错误,并且所述错误未被纠正时,纠错处理器805穷举待纠正数据中各所述硬件错误位和/或随机错误位的可能取值,分别得到待纠正数据对应的各穷举数据。控制器806将各穷举单元输入值错误校验单元,以供错误校验单元确定当前的穷举数据是否为正确数据,当前穷举数据被所述错误校验单元校验为正确数据,则控制器806终止穷举单元的穷举处理。
上述各部件以及各部件之间的更进一步的工作原理以及详细参见实施例1-4的记载。
由上可见,采用本实施例技术方案,可以具有以下的有益效果:
1、本实施例通过三次读取内存分别获得读取数据,在三次读取时都有机会得到正确数据,其相对于现有技术中一次读取的方案,采用本实施例技术方案得到正确数据的几率更高。
2、进一步的,如果二次得到的读取数据均为错误,并且未错误未纠正,则通过写入第一取反数据,并读取该第一取反数据对应的读取值,然后将得到的读取值取反恢复得到第三读取值,通过该取反回存再校验的技术方案:
一方面,增加了得到正确数据的几率;
另一方面,还在该第三读取数据校验失败后,还可以利用该第三读取数据结合第一读取数据以及第二读取数据,利用硬件错误位以及随机错误位的特点,而确定各数据位为硬件错误位还是随机数据位还是正确数据位,使相对于现有技术中内存纠错方案,应用本实施例技术方案还可以进一步具体确定各具体的错误数据位位置。
3、由于本实施例可根据具体的错误数据位的位置以及其性质而纠正数据,使最终校验正确的纠正数据的几率大大提高,即得到正确数据的几率大大提高。
4、在每次经过校验得到纠正后的正确数据后,除了返回数据响应之外,以向系统数据输出正确数据外,还将最终纠正后的正确数据写回内存中当前的内存地址一,以便于在下次读取时可以直接得到正确数据,提高系统效率以及提高系统可靠性;
5、如果第三读取数据不存在错误,或者存在错误但错误被纠正获得经纠正的正确数据,还将经校验不存在错误的第三读取数据、或者经纠正的正确数据写回内存当前的内存地址一,以替换第一取反数据,以便于在下次读取时可以直接得到正确数据,提高系统效率以及提高系统可靠性。
本实施例的其他进一步有益效果与实施例1-4中的相应描述同理。
实施例9
参见图9所示,本实施例的内存纠错装置相对于实施例8所不同之处主要包括:
本实施例的内存纠错装置还包括:
查询器901,用于在控制器905的控制下,在错误位计算器804确定各硬件错误位以及随机错误位之前,查询预存的硬件错误位的位置信息,确定已知的硬件错误位,以便错误位计算器804在进行硬件错误位以及随机错误位时无需对这些已知的硬件错误位进行数据计算,而有利于进一步提高系统的处理效率。
需要说明的是,在本实施例中这些已知的硬件错误位信息可以预存在本内存纠错装置上也可以预存在其他的任一位置。该已知的硬件错误位信息可以为由用户根据用户的检测预先设置,也可以由本内存纠错装置根据之前的历史处理而预存。采用后一技术方案时,本实施例的内存纠错装置还包括:
存储写器902,与控制器905连接,用于当错误位计算器804每次当前第i数据位为硬件错误位之后,均硬件错误位的位置信息中增加信息:该i数据位为硬件错误位的信息。这样,在本实施例内存纠错装置运行的过程中,根据装置本身的运行自动化智能记录该已知的硬件错误位信息,从而使得后续的硬件错误位计算确定花费的时间越来越短,有利于提高后续的数据处理效率。
实施例10:
参见图10所示,本实施例的内存纠错装置相对于实施例9所不同之处主要包括:
本实施例的内存纠错装置还包括:
第一数据缓冲器1001、第二数据缓冲器1002以及第三数据缓冲器1003,分别用于缓存数据;
缓存写器1004,用于在所述控制器1006的控制下将所述第一读取数据、第二读取数据以及所述第三读取数据,缓存至所述第一数据缓冲器1001、第二数据缓冲器1002以及第三数据缓冲器1003,所述缓存具体包括:
在内存读操作器803,从内存地址一,读取获得所述第一读取数据之后,
以及,在内存读操作器803,从内存地址一,读取获得所述第二读取数据之后,
以及,在内存读操作器803,从内存地址一,读取获得所述第三读取数据之后,
缓存写器1004分别查询第一数据缓冲器1001中,地址为所述命令标识的空间是否为空,
如果第一数据缓冲器1001中所述空间为空,则缓存写器1004以所述命令标识为目的地址,将当前的读取数据存储至所述第一数据缓冲器1001,
当前的读取数据为第一读取数据、或者第二读取数据或者第三读取数据;
如果第一数据缓冲器1001中地址为所述命令标识的空间不为空,则:
查询第二数据缓冲器1002中,地址为所述命令标识的空间是否为空,
如果第二数据缓冲器1002中所述空间为空,则缓存写器1004以所述命令标识为目的地址,将当前的读取数据存储至所述第二数据缓冲器1002,
如果第二数据缓冲器1002中所述空间不为空,则查询所述第三数据缓冲器1003中地址为所述命令标识的空间是否为空,
如果第三数据缓冲器1003中所述空间为空,则缓存写器1004以命令标识为目的地址,将对所述第一读取数据或第二读取数据按位取反后得到的第一取反数据存储至所述第三数据缓冲器1003,
如果所述第三数据缓冲器1003中所述空间不为空,则控制器1006可确定当前内存地址一对应的第一读取数据、第二读取数据、第三读取数据已分别被存储于第一数据缓冲器1001、第二数据缓冲器1002、第三数据缓冲器1003中,控制器1006控制缓存读单元分别以所述命令标识为读取地址,读取第一数据缓冲器1001、第二数据缓冲器1002、第三数据缓冲器1003,获得所述第一读取数据、第二读取数据、第三读取数据,传递至所述错误位计算器804。
以上述命令标识为读取地址,分别读取第一数据缓冲器1001、第二数据缓冲器1002、第三数据缓冲器1003,分别获得上述的第一读取数据、第二读取数据以及第三读取数据,以便根据该三组读取数据进行硬件错误位以及随机错误位的确定。
在本实施例中采用上述的缓存技术方案能进一步提高系统处理的效率,提高纠错的处理速度。
实施例11
参见图11所示,本实施例提供一种计算机系统,其主要包括:总线1103、与总线1103相连的处理器1101、以及与总线1103相连的存储器1102;其中,处理器1101通过总线1103,调用存储器1102中存储的代码,以用于执行以下的处理:
如果从内存中一确定的内存地址分别读取获得的第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正,则:
第一取反数据将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址,
根据所述确定的内存地址,从所述内存中再次读取数据,获得所述第一取反数据对应的读取值,将所述第一取反数据对应的读取值按位取反得到第三读取数据,
如果所述第三读取数据存在错误,并且所述错误未被纠正,则:
将所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一,作为待纠正数据,
根据所述第一读取数据、第二读取数据以及所述第三读取数据,确定所述待纠正数据中各硬件错误位或者随机错误位,
根据各所述硬件错误位或者随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据,
如果其中之一所述纠正待校验数据被经校验为正确数据,将所述正确数据写回所述确定的内存地址。
需要说明的是,本发明各实施例的技术方案适用于与各种具备纠正能力的错误校验技术方案适配使用,还可以适用于各种不具备纠正能力的错误校验技术方案适配使用,应用本实施例技术方案只要当前的错误校验算法确定当前存在数据错误时,即可以采用本发明实施例的技术方案对所有错误位进行错误纠正,并且在错误纠正过程中无需在数据中为错误纠正设置冗余纠正校验码而占据数据位。故应用本发明实施例技术方案不仅有利于提高内存数据的纠正效率以及纠正准确率,并且还有利于提高数据有效长度,或者留出更多的数据位以存储与此数据相关的其他有用的信息(譬如:可存储用于存储此数据对应的目录或其他信息),从而提高存储器的空间利用率。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。
Claims (20)
1.一种内存数据的纠错方法,其特征在于,包括:
如果从内存中同一确定的内存地址,先后分别读取获得的第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据,则:
第一取反数据将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址,
根据所述确定的内存地址,从所述内存中再次读取数据,获得所述第一取反数据对应的读取值,将所述第一取反数据对应的读取值按位取反得到第三读取数据,
如果所述第三读取数据存在错误,并且所述错误未被纠正而得到正确数据,则:
将所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一,作为待纠正数据,
根据所述第一读取数据、第二读取数据以及所述第三读取数据,确定所述待纠正数据中各硬件错误位或者随机错误位,
根据各所述硬件错误位、或者所述硬件错误位以及随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据,
如果其中之一所述纠正待校验数据被经校验为正确数据,将所述正确数据写回所述确定的内存地址。
2.根据权利要求1所述的内存数据的纠错方法,其特征在于,
在步骤:将所述第一取反数据对应的读取值按位取反得到第三读取数据之后,
如果所述第三读取数据不存在错误,或者存在错误但所述错误被纠正获得经纠正的正确数据,则:
将经校验不存在错误的所述第三读取数据、或者所述经纠正的正确数据写回所述确定的内存地址。
3.根据权利要求1或2所述的内存数据的纠错方法,其特征在于,
在步骤:根据各所述硬件错误位、或者所述硬件错误位以及随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据之后,
如果所有所述纠正待校验数据均被经校验为不正确数据,则还包括:
将所述第一读取数据、第二读取数据或者所述第三读取数据写回所述确定的内存地址。
4.根据权利要求有3所述的内存数据的纠错方法,其特征在于,
将所述第一读取数据、第二读取数据或者所述第三读取数据写回所述确定的内存地址,具体是将所述待纠正数据写回所述确定的内存地址。
5.根据权利要求有1或2所述的内存数据的纠错方法,其特征在于,
将所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一,作为待纠正数据,具体是,
将所述第二读取数据作为所述待纠正数据。
6.根据权利要求1或2所述的内存数据的纠错方法,其特征在于,
根据所述第一读取数据、第二读取数据以及第三读取数据,确定所述待纠正数据中各硬件错误位以及、或者所述硬件错误位以及随机错误位,包括:
分别获取所述第一读取数据、第二读取数据以及所述第三读取数据;
对:除当前已知的硬件错误位外的任一数据位:
如果所述第一读取数据、第二读取读数据在所述数据位上的值相同,并且与所述第三读取数据在所述数据位上的值不同,则所述数据位为硬件错误位,
如果所述第三读取数据、所述基准数据在所述数据位上的值相同,并且与第一读取数据、第二读取读数据中不用于作为所述基准数据的其中读取数据的在所述数据位上的值不同,则所述数据位为随机错误位,
否则,判定所述数据位为正确数据位。
7.根据权利要求6所述的内存数据的纠错方法,其特征在于,
将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址,具体是:
将所述第二读取数据作为所述基准数据,将所述基准数据按位取反获得的所述第一取反数据写入所述确定的内存地址;
步骤:如果所述第一读取数据、第二读取读数据在当前所述数据位上的值相同,并且与所述第三读取数据在当前所述数据位上的值不同,则当前所述数据位为硬件错误位,具体包括:
计算第一函数式:X=(A&B)^C,所述X取值为:1,则确定第i数据位为:硬件错误位;
步骤:如果所述第三读取数据、所述第一取反数据对应的基准数据的取值相同,与第一读取数据、第二读取读数据中不为所述基准数据的其中之一的取值不同,则所述数据位为随机错误位,具体是:
计算第二函数式:Y=(A^(B&C))或者Y=(B^(A&C)),如果所述Y取值为:1,则确定所述第i数据位为随机错误位;
所述A为:所述第一读取数据中第i数据位的取值,
所述B为:所述第二读取数据中第i数据位的取值,
所述C为:所述第三读取数据中第i数据位的取值,
所述第i数据位为:除当前已知的硬件错误位外的任一数据位。
8.根据权利要求6所述的内存数据的纠错方法,其特征在于,还包括:
查询预存的各所述硬件错误位的位置信息,确定各所述已知的硬件错误位。
9.根据权利要求6所述的内存数据的纠错方法,其特征在于,
在步骤:确定各所述数据位为硬件错误位之后,还分别包括:
在所述各所述硬件错误位的位置信息中存储信息:所述数据位为硬件错误位的信息。
10.根据权利要求1或2所述的内存数据的纠错方法,其特征在于,
根据各所述硬件错误位,纠正所述待纠正数据得到至少一个纠正待校验数据,包括:
穷举所述待纠正数据中各所述硬件错误位的可能取值分别得到各穷举数据,并且根据预定的校验算法校验各所述穷举数据是否为正确数据,
如果任一所述穷举数据被校验为正确数据,则终止所述穷举,输出所述正确数据。
11.根据权利要求10所述的内存数据的纠错方法,其特征在于,
在步骤:根据预定的校验算法校验各所述穷举数据是否为正确数据之后,
如果所有所述穷举数据均被校验为非正确数据,还进一步包括:
穷举所述待纠正数据中各所述硬件错误位、以及随机错误位的可能取值分别得到各二次穷举数据,并且根据预定的校验算法校验各所述二次穷举数据是否为正确数据,
如果任一所述二次穷举数据被校验为正确数据,则终止所述穷举,输出所述正确数据。
12.根据权利要求有11所述的内存数据的纠错方法,其特征在于,
步骤:根据预定的校验算法校验各所述穷举数据是否为正确数据,具体为:
根据所述待纠正数据中的循环冗余校验码以及有效数据,按照预定的循环冗余校验算法,校验各所述穷举数据是否为正确数据;
步骤:根据预定的校验算法校验各所述二次穷举数据是否为正确数据,具体为:
根据所述待纠正数据中的循环冗余校验码以及有效数据,按照预定的循环冗余校验算法,校验各所述二次穷举数据是否为正确数据。
13.根据权利要求12所述的内存数据的纠错方法,其特征在于,
在步骤:根据预定的校验算法校验各所述二次穷举数据是否为正确数据之后,
如果所有所述二次穷举数据均被校验为非正确数据,则还包括:
输出纠正结果消息:所述错误不可纠正。
14.一种内存纠错装置,其特征是,包括:
错误检验器,用于校验从内存读取获得的读取数据以及纠错处理单元得到的各纠正待校验数据是否为正确数据;
写内存操作器,用于在控制器控制下,向所述内存写入数据,包括:在所述内存读操作单元从内存中同一确定的内存地址先后分别读取获得第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,用于将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址;
内存读操作器,用于在所述控制器的控制下读取所述内存的数据,包括:当从内存中同一确定的内存地址,先后分别读取获得的第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据所述确定的内存地址,从所述内存中再次读取数据,获得所述第一取反数据对应的读取值,将所述第一取反数据对应的读取值按位取反得到第三读取数据;
取反器,用于将所述第一取反数据对应的读取值按位取反得到第三读取数据;
错误位计算器,用于在纠错处理器控制下工作,用于当所述第一读取数据、第二读取数据、第三读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据所述第一读取数据、第二读取数据以及所述第三读取数据确定待纠正数据中各硬件错误位或者随机错误位,所述待纠正数据为所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一;
所述纠错处理器,用于在所述控制器的控制下,当所述第一读取数据、第二读取数据、第三读取数据均存在错误,并且所述错误未被纠正而得到正确数据时,根据各所述硬件错误位或者随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据;
控制器,用于根据所述错误检验器控制所述写内存操作器、内存读操作器、错误位计算器以及纠错处理器的工作。
15.根据权利要求14所述的内存纠错装置,其特征是,
所述写内存操作器,还用于:
如果任一所述纠正待校验数据被经校验为正确数据,用于将所述正确数据写回所述确定的内存地址,和/或,
如果所有所述纠正待校验数据均被经校验为不正确数据,所述写内存操作器还用于将所述第一读取数据、第二读取数据或者所述第三读取数据写回所述确定的内存地址。
16.根据权利要求14或15所述的内存纠错装置,其特征是,
所述纠错处理器具体是将所述第二读取数据作为所述基准数据;
所述错误位计算器具体用于在控制器的控制下,计算获得计算结果取值,根据所述计算结果确定所述随机错误位或硬件错误位,包括:
对除已知的硬件错误位外的任一数据位,分别:
计算第一函数式:X=(A&B)^C,所述X取值为:1,则确定第i数据位为:硬件错误位;
计算第二函数式:Y=(A^(B&C))或Y=(B^(A&C)),如果所述Y取值为:1,则确定所述第i数据位为随机错误位;
其中,所述A为:所述第一读取数据中第i数据位的取值,
所述B为:所述第二读取数据中第i数据位的取值,
所述C为:所述第三读取数据中第i数据位的取值,
所述第i数据位为:除当前已知的硬件错误位外的其中之一数据位。
17.根据权利要求16所述的内存纠错装置,其特征是,还包括:
查询器,用于在控制器的控制下,在所述错误位计算器确定各硬件错误位之前,查询预存的所述硬件错误位的位置信息,确定所述已知的硬件错误位。
18.根据权利要求14或者15所述的内存纠错装置,其特征是,还包括:
存储写器,与所述控制器连接,用于在所述错误位计算器确定第i数据位为硬件错误位之后,在所述硬件错误位的位置信息中增加信息:所述第i数据位为硬件错误位的信息。
19.根据权利要求14或者15所述的内存纠错装置,其特征是,还包括:
第一数据缓冲器,用于缓存数据;
第二数据缓冲器,用于缓存数据;
第三数据缓冲器,用于缓存数据;
缓存读器,用于在所述控制器控制控制下,根据当前内存读命令中的命令标识,分别读取所述第一数据缓冲器、第二数据缓冲器、第三数据缓冲器中,分别获得所述第一读取数据、第二读取数据、第三读取数据;
缓存写器,分别与所述控制器、第一数据缓冲器、第二数据缓冲器以及第三数据缓冲器连接,用于在所述控制器的控制下将所述第一读取数据、第二读取数据以及所述第三读取数据,缓存至所述第一数据缓冲器、第二数据缓冲器以及第三数据缓冲器,包括:
在内存读操作器根据所述确定的内存地址,先后分别读取获得所述第一读取数据、第二读取数据、第三读取数据之后,
当所述第一数据缓冲器中,地址为所述命令标识的空间为空时,缓存写器用于以所述命令标识为目的地址时:所述缓存写器用于将当前的读取数据存储至所述第一数据缓冲器,
当所述第一数据缓冲器中地址为所述命令标识的空间不为空,并且所述第二数据缓冲器中地址为所述命令标识的空间为空时:所述缓存写器用于以所述命令标识为目的地址,将当前的读取数据存储至所述第二数据缓冲器,
当所述第二数据缓冲器中地址为所述命令标识的空间不为空,并且所述第三数据缓冲器中地址为所述命令标识的空间为空时:所述缓存写器用于以所述命令标识为目的地址,将对所述第一读取数据或第二读取数据按位取反后得到的第一取反数据存储至所述第三数据缓冲器,
各所述当前的读取数据为所述第一读取数据、第二读取数据、第三读取数据的任一。
20.一种计算机系统,其特征是,包括:
总线;
与所述总线相连的处理器;
与所述总线相连的存储器;
其中,所述处理器通过所述总线,调用所述存储器中存储的代码,以用于:
如果从内存中同一确定的内存地址,先后分别读取获得的第一读取数据、第二读取数据均存在错误,并且所述错误未被纠正而得到正确数据,则:
第一取反数据将所述第一读取数据或第二读取数据作为基准数据,将所述基准数据按位取反获得的第一取反数据写入所述确定的内存地址,
根据所述确定的内存地址,从所述内存中再次读取数据,获得所述第一取反数据对应的读取值,将所述第一取反数据对应的读取值按位取反得到第三读取数据,
如果所述第三读取数据存在错误,并且所述错误未被纠正而得到正确数据,则:
将所述第一读取数据、第二读取数据以及所述第三读取数据的其中之一,作为待纠正数据,
根据所述第一读取数据、第二读取数据以及所述第三读取数据,确定所述待纠正数据中各硬件错误位或者随机错误位,
根据各所述硬件错误位、或者所述硬件错误位以及随机错误位,纠正所述待纠正数据得到至少一个纠正待校验数据,
如果其中之一所述纠正待校验数据被经校验为正确数据,将所述正确数据写回所述确定的内存地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210586901.4A CN103077095B (zh) | 2012-12-28 | 2012-12-28 | 内存数据的纠错方法及装置及计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210586901.4A CN103077095B (zh) | 2012-12-28 | 2012-12-28 | 内存数据的纠错方法及装置及计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103077095A CN103077095A (zh) | 2013-05-01 |
CN103077095B true CN103077095B (zh) | 2015-05-27 |
Family
ID=48153628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210586901.4A Active CN103077095B (zh) | 2012-12-28 | 2012-12-28 | 内存数据的纠错方法及装置及计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103077095B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102013215055B4 (de) * | 2013-07-31 | 2021-01-28 | Infineon Technologies Ag | Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern |
US10467774B2 (en) * | 2017-11-06 | 2019-11-05 | Qualcomm Incorporated | Memory address flipping to determine data content integrity in GPU sub-system |
CN111078459B (zh) * | 2018-10-22 | 2022-11-29 | 长鑫存储技术有限公司 | 半导体芯片的测试方法、装置及系统 |
KR20200126178A (ko) * | 2019-04-29 | 2020-11-06 | 삼성전자주식회사 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법 |
CN112783684A (zh) | 2019-11-06 | 2021-05-11 | 华为技术有限公司 | 一种校验数据计算方法及装置 |
CN111580750B (zh) * | 2020-03-24 | 2022-08-23 | 浙江工商大学 | 一种解决stt-ram缓存写失败的方法 |
CN113132060A (zh) * | 2021-04-21 | 2021-07-16 | 潍柴动力股份有限公司 | 一种报文数据传输方法及装置 |
CN114518972B (zh) * | 2022-02-14 | 2024-06-18 | 海光信息技术股份有限公司 | 内存错误处理方法、装置、内存控制器及处理器 |
CN117112289B (zh) * | 2023-10-17 | 2024-02-02 | 北京开源芯片研究院 | 内存纠错方法、装置、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040255225A1 (en) * | 2003-01-31 | 2004-12-16 | Yoriharu Takai | Control circuit for error checking and correction and memory controller |
CN101162965A (zh) * | 2006-10-09 | 2008-04-16 | 华为技术有限公司 | 一种ldpc码的纠删译码方法及系统 |
CN101183565A (zh) * | 2007-12-12 | 2008-05-21 | 深圳市硅格半导体有限公司 | 存储介质中数据校验方法 |
CN101546291A (zh) * | 2009-05-12 | 2009-09-30 | 华为技术有限公司 | 提高内存数据健壮性的存取方法和装置 |
CN101558385A (zh) * | 2006-12-14 | 2009-10-14 | 英特尔公司 | 高速缓存辅助的存储器检错和纠错的方法和装置 |
US20100088575A1 (en) * | 2008-10-07 | 2010-04-08 | Eran Sharon | Low density parity code (ldpc) decoding for memory with multiple log likelihood ratio (llr) decoders |
-
2012
- 2012-12-28 CN CN201210586901.4A patent/CN103077095B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040255225A1 (en) * | 2003-01-31 | 2004-12-16 | Yoriharu Takai | Control circuit for error checking and correction and memory controller |
CN101162965A (zh) * | 2006-10-09 | 2008-04-16 | 华为技术有限公司 | 一种ldpc码的纠删译码方法及系统 |
CN101558385A (zh) * | 2006-12-14 | 2009-10-14 | 英特尔公司 | 高速缓存辅助的存储器检错和纠错的方法和装置 |
CN101183565A (zh) * | 2007-12-12 | 2008-05-21 | 深圳市硅格半导体有限公司 | 存储介质中数据校验方法 |
US20100088575A1 (en) * | 2008-10-07 | 2010-04-08 | Eran Sharon | Low density parity code (ldpc) decoding for memory with multiple log likelihood ratio (llr) decoders |
CN101546291A (zh) * | 2009-05-12 | 2009-09-30 | 华为技术有限公司 | 提高内存数据健壮性的存取方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103077095A (zh) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103077095B (zh) | 内存数据的纠错方法及装置及计算机系统 | |
US8707122B1 (en) | Nonvolatile memory controller with two-stage error correction technique for enhanced reliability | |
US8949690B2 (en) | Memory controller | |
US7617437B2 (en) | Error correction device and method thereof | |
CN106910528B (zh) | 一种固态硬盘数据巡检的优化方法及装置 | |
US20070268905A1 (en) | Non-volatile memory error correction system and method | |
CN105740088B (zh) | 闪存数据纠错方法及装置 | |
WO2009089716A1 (fr) | Procédé et dispositif de vérification de données | |
CN110442473B (zh) | 一种非易失性数据存储方法、装置、电子设备及介质 | |
US8140940B2 (en) | Method and apparatus for controlling memory | |
TWI446160B (zh) | 快閃記憶體控制器及資料讀取方法 | |
US20150309862A1 (en) | Cache control device having fault-tolerant function and method of operating the same | |
CN105788648A (zh) | 基于异构混合内存的nvm坏块识别处理及纠错方法和系统 | |
KR20100104454A (ko) | 에러 교정 장치, 이의 동작 방법, 이를 포함하는 메모리 장치 및 데이터 처리 시스템 | |
CN108228381B (zh) | 存储系统及其错误校正方法 | |
CN111506452A (zh) | 数据存储保护方法、装置、计算机设备及存储介质 | |
CN104184543A (zh) | 一种数据传输的方法、装置和系统 | |
JP3922844B2 (ja) | キャッシュtag制御方法及びこの制御方法を用いた情報処理装置 | |
CN111625199A (zh) | 提升固态硬盘数据通路可靠性的方法、装置、计算机设备及存储介质 | |
US8850291B2 (en) | Data input and output method of NAND flash memory and embedded system using the same | |
CN108196975B (zh) | 基于多校验和的数据验证方法、装置及存储介质 | |
US11221789B2 (en) | Semiconductor device, memory controller, and memory accessing method | |
EP3125251A1 (en) | Hamming code-based data access method and integrated random access memory | |
CN116932424A (zh) | 一种基于ecc检测的缓存访问方法、装置、介质和设备 | |
EP4246329A1 (en) | Error correction method and apparatus |
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 |