CN114356645A - 用于数据纠错的方法、装置、电子设备及存储介质 - Google Patents

用于数据纠错的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114356645A
CN114356645A CN202111615712.0A CN202111615712A CN114356645A CN 114356645 A CN114356645 A CN 114356645A CN 202111615712 A CN202111615712 A CN 202111615712A CN 114356645 A CN114356645 A CN 114356645A
Authority
CN
China
Prior art keywords
data
error
error correction
errors
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.)
Pending
Application number
CN202111615712.0A
Other languages
English (en)
Inventor
周鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202111615712.0A priority Critical patent/CN114356645A/zh
Publication of CN114356645A publication Critical patent/CN114356645A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本公开的实施例提供了用于数据纠错的方法、装置、电子设备及存储介质。用于数据纠错的方法,包括:从存储地址读取第一对象数据;对第一对象数据执行第一校验;响应于第一校验的校验结果指示第一对象数据包括第一类数据错误,使用针对存储地址的第二类数据错误的历史纠错信息来至少部分纠正第一类数据错误,以得到中间数据;以及由中间数据得到对应于存储地址的无报错数据,其中,针对第一校验所采用的校验算法,第二类数据错误中可被纠正的错误位数小于第一类数据错误中可被纠正的错误位数。该用于数据纠错的方法可以用于提高存储器的纠错能力,例如纠正相关技术中的不可纠正错误,提高存储器的可靠性,大大降低数据丢失与系统宕机的风险。

Description

用于数据纠错的方法、装置、电子设备及存储介质
技术领域
本公开的实施例涉及数据纠错技术领域,并且更具体地,涉及用于数据纠错的方法、装置、电子设备及存储介质。
背景技术
数据在传输、通信和存储过程中容易受到环境等因素干扰,从而导致数据错误。例如,双倍数据速率(Double Data Rate,DDR)存储器(例如,DDR SDRAM)在工作过程中难免会受到诸如电磁等环境因素的干扰,从而导致内存出现错误。对于稳定性要求高的用户来说,内存错误可能会引起致命性的问题。例如,对于服务器而言,其对DDR数据可靠性要求比较高,DDR存储器纠错技术就能提高服务器内存的稳定性和纠错能力,例如支持错误检查和纠正(Error Correcting Code,ECC)的内存条可以提高服务器内存的稳定性和纠错能力。
对于某种支持ECC的内存条而言,其用于ECC的冗余位是固定,其纠错的位数/位宽和位置往往存在限制,因而支持ECC的内存条的纠错能力存在限制。当内存颗粒的错误超出了该支持ECC的内存条的纠错能力,系统就会报出不可纠正错误。在出现所采用的ECC算法的不可纠正错误的情况下,一般就会丢失数据并且数据无法被回复。数据的丢失将影响处理器或其他计算单元执行相应运算,导致相关功能或应用无法正常运行,甚至引起宕机。
存在提高存储器的纠错能力,例如纠正相关技术中的不可纠正错误的需要。
发明内容
本公开的至少一实施例公开了用于数据纠错的方法、装置、电子设备及存储介质,用于提高存储器的纠错能力,例如纠正相关技术中的不可纠正错误,提高存储器的可靠性,大大降低数据丢失与系统宕机的风险。
本公开的第一方面提供了一种用于数据纠错的方法,包括:从存储地址读取第一对象数据;对第一对象数据执行第一校验;响应于第一校验的校验结果指示第一对象数据包括第一类数据错误,使用针对存储地址的第二类数据错误的历史纠错信息来至少部分纠正第一类数据错误,以得到中间数据;以及由中间数据得到对应于存储地址的无报错数据,其中,针对第一校验所采用的校验算法,第二类数据错误中可被纠正的错误位数小于第一类数据错误中可被纠正的错误位数。换句话说,针对第一校验所采用的校验算法,纠正第二类数据错误所需的冗余位小于纠正第一类数据错误所需的冗余位。
例如,在本公开的至少一实施例提供的方法中,使用针对存储地址的第二类数据错误的历史纠错信息来至少部分纠正第一类数据错误,以得到中间数据,包括:响应于历史纠错信息指示存储地址存在针对同一位置的固定错误,纠正对第一对象数据中对应于同一位置的数据位,以得到中间数据。
例如,在本公开的至少一实施例提供的方法还包括:根据历史纠错信息来判断存储地址是否存在针对同一位置的固定错误。
例如,在本公开的至少一实施例提供的方法中,根据历史纠错信息来判断存储地址是否存在针对同一位置的固定错误,包括:响应于历史纠错信息包括连续N条涉及第二类数据错误的纠错信息且N条纠错信息针对同一位置,确定存储地址存在针对同一位置的固定错误,其中,N为大于或等于2的整数。
例如,在本公开的至少一实施例提供的方法还包括:响应于历史纠错信息指示存储地址不存在针对同一位置的固定错误,再次从存储地址读取第二对象数据,对第二对象数据再次执行第一校验;以及响应于再次执行的第一校验的校验结果指示第二对象数据包括第一类数据错误,执行报错操作。
例如,在本公开的至少一实施例提供的方法中,由中间数据得到对应于存储地址的无报错数据,包括:对于中间数据执行第二校验以纠正中间数据剩余的数据错误,从而得到对应于存储地址的无报错数据。
例如,在本公开的至少一实施例提供的方法中,第一校验和第二校验采用相同的校验算法。
例如,在本公开的至少一实施例提供的方法中,校验算法为RS算法。
例如,在本公开的至少一实施例提供的方法中,存储地址涉及存储器内的同一内存颗粒或者多个内存颗粒。
本公开的另一方面提供了一种用于数据纠错的方法,包括:分别对从存储地址读取多条对象数据;分别对多条对象数据执行第一校验;响应于对多条对象数据执行的第一校验的校验结果指示多条对象数据分别包括可纠正错误,存储多条对象数据的多条纠错信息,其中,多条纠错信息中的每一条包括所对应的可纠正错误所针对的存储位置;根据多条纠错信息纠正后续从存储地址读取的第一对象数据的数据错误。
例如,在本公开的至少一实施例提供的方法中,根据多条纠错信息纠正后续从存储地址读取的第一对象数据的数据错误,包括:响应于对第一对象数据的第一校验的校验结果指示第一对象数据包括不可纠正错误,使用多条纠错信息来至少部分纠正不可纠正错误,以得到中间数据;以及由中间数据得到对应于存储地址的无报错数据。
本公开的另一方面提供了一种用于数据纠错的装置,包括:读取单元,被配置为从存储地址读取第一对象数据;第一校验单元,被配置为对第一对象数据执行第一校验;第一纠正单元,被配置为:响应于第一校验的校验结果指示第一对象数据包括第一类数据错误,使用针对存储地址的第二类数据错误的历史纠错信息来至少部分纠正第一类数据错误,以得到中间数据;以及第二纠正单元,被配置为由中间数据得到对应于存储地址的无报错数据,其中,针对第一校验所采用的校验算法,第二类数据错误中可被纠正的错误位数小于第一类数据错误中可被纠正的错误位数。
例如,在本公开的至少一实施例提供的装置中,第一纠正单元包括:第一纠正子单元,被配置为:响应于历史纠错信息指示存储地址存在针对同一位置的固定错误,纠正第一对象数据中对应于同一位置的数据位,以得到中间数据。
例如,在本公开的至少一实施例提供的装置中,第一纠正单元还包括:固定错误判断单元,被配置为:根据历史纠错信息来判断存储地址是否存在针对同一位置的固定错误。
例如,在本公开的至少一实施例提供的装置中,固定错误判断单元包括:固定错误确定单元,被配置为:响应于历史纠错信息包括连续N条涉及第二类数据错误的纠错信息且N条纠错信息针对同一位置,确定存储地址存在针对同一位置的固定错误,其中,N为大于或等于2的整数。
例如,在本公开的至少一实施例提供的装置还包括报错单元,其中:读取单元还被配置为:响应于历史纠错信息指示存储地址不存在针对同一位置的固定错误,再次从存储地址读取第二对象数据;第一校验单元还被配置为:对第二对象数据再次执行第一校验;以及报错单元被配置为响应于再次执行的第一校验的校验结果指示第二对象数据包括第一类数据错误,执行报错操作。
例如,在本公开的至少一实施例提供的装置中,第二纠正单元包括:第二纠正子单元,被配置为:对于中间数据执行第二校验以纠正中间数据剩余的数据错误,从而得到对应于存储地址的无报错数据。
例如,在本公开的至少一实施例提供的装置中,第一校验和第二校验采用相同的校验算法。
例如,在本公开的至少一实施例提供的装置中,校验算法为RS算法。
例如,在本公开的至少一实施例提供的装置中,存储地址涉及存储器内的同一内存颗粒或者多个内存颗粒。
本公开的另一方面提供了一种用于数据纠错的装置,包括:读取单元,分别对从存储地址读取多条对象数据;第一校验单元,分别对多条对象数据执行第一校验;存储单元,响应于对多条对象数据执行的第一校验的校验结果指示多条对象数据分别包括可纠正错误,存储多条对象数据的多条纠错信息,其中,多条纠错信息中的每一条包括所对应的可纠正错误所针对的存储位置;以及纠正单元,根据多条纠错信息纠正后续从存储地址读取的第一对象数据的数据错误。
例如,在本公开的至少一实施例提供的装置中,第一校验单元还被配置为:对第一对象数据执行第一校验;并且纠正单元包括第一纠正单元和第二纠正单元,其中,第一纠正单元被配置为:响应于对第一对象数据的第一校验的校验结果指示第一对象数据包括不可纠正错误,使用多条纠错信息来至少部分纠正不可纠正错误,以得到中间数据;以及第二纠正单元被配置为:由中间数据得到对应于存储地址的无报错数据。
本公开的另一方面提供了一种电子设备,包括:处理器;存储器,包括一个或多个计算机程序模块;其中,该一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,该一个或多个计算机程序模块包括用于被由处理器执行时执行本公开的任一项所述的方法的指令。
本公开的另一方面提供了一种非暂存计算机可读存储介质,其上存储有可执行指令,其中,可执行指令在被处理器执行时,使得处理器执行本公开的任一项所述的方法。
如上所述,本公开的至少一实施例在于,通过存储的针对存储地址的第二类数据错误的历史纠错信息来部分地纠正针对该存储地址的第一类数据错误,得到包含部分剩余错误的中间数据,可进而纠正该中间数据。以这种方式,可以实现数据错误的逐步纠正,例如将原来的不可纠正错误逐步纠正,提高了存储器的可靠性,大大降低了数据丢失与系统宕机的风险。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对本公开的实施例的附图作简单地介绍。明显地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了根据本公开的至少一实施例的用于数据纠错的方法的流程图。
图2示出了根据本公开的至少一实施例的另一用于数据纠错的方法的流程图。
图3示出了根据本公开的至少一实施例的用于数据纠错的装置的结构示意图。
图4示出了根据本公开的至少一实施例的另一用于数据纠错的装置的结构示意图。
图5示出了一种示例场景示意图,其中存在不可纠正错误。
图6示出了利用了根据本公开的用于数据纠错的方法或装置的示例场景示意图。
图7示出了根据本公开的至少一实施例的电子设备的示意图。
图8示出了根据本公开的至少一实施例的另一电子设备的示意图
图9示出了根据本公开的至少一实施例的非瞬时可读存储介质的示意图。
具体实施方式
现在将详细参考本公开的具体实施例,在附图中例示了本公开的示例。尽管将结合具体实施例描述本公开,但将理解,不是想要将本公开限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本公开的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法操作都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
本公开中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。
本公开中使用了流程图来说明根据本公开的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
为便于理解,首先对本公开的至少一实施例涉及的相关术语进行解释:
可纠正错误(Correctable Error,CE),简称CE错误,是指硬件(芯片)基于自身所采用的ECC算法可以纠正的错误。由于内存控制器设计不一样,对于可纠正错误的能力可能存在不同。例如,主流x86服务器的内存控制器(支持带ECC的内存条),在一次读操作中,一个4位的数据位宽(X4宽度/位宽)的内存颗粒内的任意错误都是可纠正的。如果内存的组(Rank)是由8位的数据位宽(X8宽度/位宽)的内存颗粒组成,其纠正能力还是与X4宽度的内存颗粒及位置保持一致,在X8宽度的一个内存颗粒中,包括DQ0-7的8位数据,其中只有DQ0-3,或者DQ4-7可以被纠正。
不可纠正错误(Uncorrectable Error,UCE),简称UCE错误,是指硬件(芯片)基于自身所采用的ECC算法无法纠正的错误。例如,在一次读取操作中,错误数据位分布在不同X4宽度的内存颗粒范围,即出现跨内存颗粒的错误,以现有内存控制设计来看,属于不可纠正错误。又例如,内存的组是由X8宽度的内存颗粒组成,其纠正能力还是与X4宽度的内存颗粒及位置保持一致,在X8宽度的一个内存颗粒中,如果出错位置是例如DQ2-5,虽然是X4宽度但位置与X4宽度不对应,其中出错位置DQ2-3对应于一个X4位宽,而出错位置DQ4-5对应于另一X4位宽,即一个内存颗粒的出错位置跨不同的X4位宽时,也无法纠正。又例如,如果内存的组是由X8宽度的内存颗粒组成,其纠正能力还是与X4宽度的内存颗粒及位置保持一致,在X8的一个内存颗粒中,如果是例如DQ0-4,错误的位宽(此时为X5位宽)超过了可以被纠正的位宽(X4),也无法纠正。
对于例如DDR存储器,可以存在多种技术来实现可纠正错误的纠正。例如,ECC纠错算法可以使用RS算法,而该RS算法运算一次只能做到一个通道(channel)上纠正一个内存颗粒数据。又例如,可以使用奇偶校验和循环冗余校验(Parity+CRC)结构进行内存颗粒的纠正,其中一个内存颗粒负责存放CRC校验信息用于检查错误,另一个内存颗粒负责存放奇偶校验信息用于纠正错误。然而,无论是单内存颗粒数据纠正(Single Device DataCorrection,SDDC)、还是双内存颗粒数据纠正(Double Device Data Correction,DDDC)也只能一次纠正一个内存颗粒数据。这种一个内存颗粒错误属于可纠正错误。
支持上述ECC技术的内存条的冗余位是固定,其纠错的位数/位宽和位置往往存在限制,因而支持ECC的内存条的纠错能力存在限制。当内存颗粒的错误超出了该支持ECC的内存条的纠错能力,系统就会报出不可纠正错误。在出现不可纠正错误的情况下,一般就会丢失数据并且数据无法被回复。数据的丢失将影响处理器或其他计算单元执行相应运算,导致相关功能或应用无法正常运行,甚至引起宕机。
本公开的至少一实施例提供了用于数据纠错的方法、装置、电子设备及存储介质,用于提高存储器的纠错能力,例如纠正相关技术中的不可纠正错误,提高存储器的可靠性,大大降低数据丢失与系统宕机的风险。
以下参照附图,对本公开的实施例的用于数据纠错的方法、装置、电子设备及存储介质分别进行详细介绍。
首先,以下介绍本公开的实施例的用于数据纠错的方法,该用于数据纠错的方法可以应用于如下文进一步描述的用于数据纠错的装置、电子设备、其他合适的软件或硬件、或硬件和软件的结合。
图1示出了根据本公开的至少一实施例的用于数据纠错的方法的流程图,该方法可以包括步骤S102~S108。
在步骤S102中,从存储地址读取第一对象数据。
在一些实施例中,存储地址对应于数据读取操作的对象数据的地址,例如存储地址可以指代一个存储行或一个BANK。可以从数据存储装置或数据传输装置中读取第一对象数据。例如,可以从存储器(例如,DDR存储器)中读取第一对象数据。在一些实施例中,第一对象数据是指代当前校验操作的对象数据,例如第一对象数据可以在校验操作中被译码和纠错(如有必要),以得到用于执行计算以实现预定功能的数据或指令。
在步骤S104中,对第一对象数据进行执行第一校验。
在一些实施例中,从存储地址读取的第一对象数据由于例如电磁等环境的干扰存在错误的情况,因此可以对第一对象数据执行第一校验。在一些实施例中,第一校验可以以ECC技术来实现。例如,可以通过汉明码、RS算法、Parity+CRC或其他合适的技术来实现第一校验。在一些实施例中,在执行第一校验的过程中,可以确定第一对象数据是否出现错误以及出现错误的位置。
在步骤S106中,响应于第一校验的校验结果指示第一对象数据包括第一类数据错误,使用针对该存储地址的第二类数据错误的历史纠错信息来至少部分纠正第一类数据错误,以得到中间数据。
在一些实施例中,对于所采用的校验算法而言,第一类数据错误可以对应于不可纠正错误,第二类数据错误可以对应于可纠正错误,然而本公开的实施例不以此为限。在本公开的一些实施例中,针对第一校验所采用的校验算法,第二类数据错误中可被纠正的错误位数小于第一类数据错误中可被纠正的错误位数。
例如,当出现会导致如上所述的第二类数据错误,可以通过ECC技术来纠正该第二类数据错误,以得到正确的数据。在通过ECC技术来纠正该第二类数据错误期间,可以记录或存储第二类数据错误的历史纠错信息。当出现不可纠正错误时,可以使用该历史纠错信息来至少部分纠正第一类数据错误。这样得到的中间数据与第一对象数据相比,其错误的位数被减少了。例如中间数据中所包含的错误数据可以变为可纠正错误。
在步骤S108中,由中间数据得到对应于存储地址的无报错数据。
在一些实施例中,可以再次通过ECC技术对前述得到的中间数据进行处理得到对应于存储地址的无报错数据。例如可以通过RS算法纠正中间数据中的错误,从而得到对应于存储地址的无报错数据。
如上所述,本公开的至少一实施例所公开的用于数据纠错的方法在于,通过存储的针对存储地址的第二类数据错误的历史纠错信息来部分地纠正针对该存储地址的第一类数据错误,得到包含部分剩余错误的中间数据,可进而纠正该中间数据。以这种方式,可以在不改变用于ECC的冗余位的情况下,通过数据错误的逐步纠正,例如将原来的不可纠正错误逐步纠正,提高了存储器的可靠性,大大降低了数据丢失与系统宕机的风险。
以下对本公开的至少一实施例的用于数据纠错的方法的其他方面进行详细的描述。
在一些实施例的用于数据纠错的方法中,可以根据历史纠错信息来判断存储地址是否存在针对同一位置的固定错误。以这种方式,可以确定出固定错误,以便后续利用对应于固定错误的历史纠错信息来至少部分地纠正第一对象数据中的第一类数据错误。
在一些实施例的用于数据纠错的方法中,使用针对存储地址的第二类数据错误的历史纠错信息来至少部分纠正第一类数据错误,以得到中间数据可以包括:响应于历史纠错信息指示存储地址存在针对同一位置的固定错误,纠正对第一对象数据中对应于同一位置的数据位,以得到中间数据。以这种方式,利用对应于固定错误的历史纠错信息来纠正对第一对象数据中对应于同一位置的数据位,实现了至少部分纠正第一类数据错误。
在一些实施例的用于数据纠错的方法中,根据历史纠错信息来判断存储地址是否存在针对同一位置的固定错误可以包括:响应于历史纠错信息包括连续N条涉及第二类数据错误的纠错信息且N条纠错信息针对同一位置,确定存储地址存在针对同一位置的固定错误,其中,N为大于或等于2的整数。例如,N可以为3~10,例如5。
在一些情况下,仅通过读取以第二类数据错误的一条纠错信息无法判断该第二类数据错误是否是固定错误。在一些情况下,当前的第一类数据错误与前面几次或一定时间范围内的第二类数据错误有关,当发生第一类数据错误的时间与发生第二类数据错误的时间间隔较长,例如一天、1周等,利用第二类数据错误的纠错信息可能会降低对至少部分地纠正第一类数据错误效果。因此,在该实施例中,可以根据具体的数据存储的环境适应性的设置N值,从而选择合适数量的纠错信息来判断存储地址是否存在针对同一位置的固定错误,增加了该方法的灵活性和可靠性。
在一些实施例的用于数据纠错的方法中,响应于历史纠错信息指示存储地址不存在针对同一位置的固定错误,可以再次从存储地址读取第二对象数据,对第二对象数据再次执行第一校验;以及响应于再次执行的第一校验的校验结果指示第二对象数据包括第一类数据错误,可以执行报错操作。
在该实施例的用于数据纠错的方法中,可以在确定出历史纠错信息指示存储地址不存在针对同一位置的固定错误的情况下,即指示历史纠错信息对应的第二数据错误中存在随机错误,因此读取的第一类数据错误可能也包含随机错误,可以再次从读取第一对象数据的地址读取第二对象数据,消除第一类数据错误中的随机数据错误。与出现第一类数据错误而直接丢弃该数据相比,以这种方式,可以提高第一类数据错误被纠正的可能性。然而,在一些实施例中,从同一存储地址再次读取的数据(即第二对象数据)在经过第一校验之后仍然显示存在第一类数据错误,那么此时可以选择不再重复尝试,而是执行报错操作。
另外,在该实施例的用于数据纠错的方法中,报错操作可以包括例如报告数据丢失、提醒工作人员更换内存条或其他操作等,以防止后续的数据丢失与宕机的风险。
在一些实施例的用于数据纠错的方法中,由中间数据得到对应于存储地址的无报错数据可以包括:对于中间数据执行第二校验以纠正中间数据剩余的数据错误,从而得到对应于存储地址的无报错数据。例如,可以通过ECC技术进行第二校验。以这种方式,可以通过第二校验来纠正剩余的数据错误,从而得到无报错数据。
在一些实施例的用于数据纠错的方法中,第一校验和第二校验采用相同的校验算法。例如,第一校验和第二校验均可以采用RS算法,本公开的实施例也可以适用于采用其他算法的场景。以这种方式,可以减少需要使用的算法的种类,降低了校验操作的复杂度。
在一些实施例的用于数据纠错的方法中,作为数据读取操作的目的地址的存储地址涉及存储器内的同一内存颗粒或者多个(例如两个或更多个)内存颗粒。以这种方式,本公开的至少一实施例可以对同一内存颗粒进行数据纠错,或者可以对两个内存颗粒进行数据纠错。
图2示出了根据本公开的至少一实施例的另一用于数据纠错的方法的流程图,该方法可以包括步骤S202~S208。
在步骤S202中,分别对从存储地址读取多条对象数据。
在一些实施例中,可以从数据存储装置或数据传输装置中读取对象数据。例如,可以从存储器(例如,DDR存储器)中读取对象数据。在一些实施例中,对象数据包括被用来执行计算以实现预定功能的数据或指令。
在步骤S204中,分别对多条对象数据执行第一校验。
在一些实施例中,参照图2描述的第一校验可以与参照图1描述的第一校验相同或者类似。
在步骤S206中,响应于对多条对象数据执行的第一校验的校验结果指示多条对象数据分别包括可纠正错误,存储多条对象数据的多条纠错信息,其中,多条纠错信息中的每一条包括所对应的可纠正错误所针对的存储位置。
在一些实施例中,在执行第一校验的过程中,可以确定对象数据是否出现错误以及出现错误的位置,并且可以基于出现错误的位置确定对象数据是否包括可纠正错误。在执行第一校验的过程中,可以纠正该可纠正错误,并且可以生成纠错信息。
在步骤S208中,根据多条纠错信息纠正后续从该存储地址读取的第一对象数据的数据错误。
如上所述,本公开的至少一实施例所公开的另一用于数据纠错的方法在于,通过存储针对存储地址的可纠正错误的纠错信息,可以利用该纠错信息来纠正后续从该存储地址的获取的数据中的数据错误。以这种方式,可以实现减少不可纠正错误的错误位数,将不可纠正错误改变为可纠正错误,从而解决相关技术中的不可纠正错误的问题,提高了存储器的可靠性,大大降低了数据丢失与系统宕机的风险。
在一些实施例中,根据多条纠错信息纠正后续从存储地址读取的第一对象数据的数据错误可以包括:响应于对第一对象数据的第一校验的校验结果指示第一对象数据包括不可纠正错误,使用多条纠错信息来至少部分纠正不可纠正错误,以得到中间数据;以及由中间数据得到对应于存储地址的无报错数据。以这种方式,可以利用该纠错信息来至少部分纠正不可纠正错误,从而实现不可纠正错误的逐步纠错。
以上分别结合图1和图2描述了根据本公开的实施例的用于数据纠错的方法。然而,可以理解的是,结合图1和图2描述的用于数据纠错的方法的各个方面可以结合或相互引用,而不超出本公开的实施例所公开的范围。
为使本领域技术人员更好地理解和实现本公开的实施例,以下对能够实现上述参照图1所描述的用于数据纠错的方法以及附加方面的用于数据纠错的装置参照附图进行相应描述。
与本公开的至少一实施例提供的用于数据纠错的方法相对应,本公开还提供了一种用于数据纠错的装置。图3示出了根据本公开的至少一实施例的用于数据纠错的装置300的结构示意图。
参照图3,本公开的实施例的用于数据纠错的装置300可以包括读取单元310、第一校验单元320、第一纠正单元330以及第二纠正单元340。
读取单元310被配置为从存储地址读取第一对象数据。
第一校验单元320被配置为对第一对象数据执行第一校验。
第一纠正单元330被配置为,响应于第一校验的校验结果指示第一对象数据包括第一类数据错误,使用针对存储地址的第二类数据错误的历史纠错信息来至少部分纠正第一类数据错误,以得到中间数据。
第二纠正单元340被配置为由中间数据得到对应于存储地址的无报错数据,其中,针对第一校验所采用的校验算法,第二类数据错误中可被纠正的错误位数小于第一类数据错误中可被纠正的错误位数。
如上所述,本公开的至少一实施例所公开的用于数据纠错的装置在于,通过存储的针对存储地址的第二类数据错误的历史纠错信息来部分地纠正针对该存储地址的第一类数据错误,得到包含部分剩余错误的中间数据,可进而纠正该中间数据。以这种方式,可以实现数据错误的逐步纠正,例如将原来的不可纠正错误逐步纠正,提高了存储器的可靠性,大大降低了数据丢失与系统宕机的风险。
以下对本公开的实施例的用于数据纠错的装置的其他方面进行详细的描述。
在一些实施例的用于数据纠错的装置中,第一纠正单元330可以包括第一纠正子单元,第一纠正子单元被配置为:响应于历史纠错信息指示存储地址存在针对同一位置的固定错误,纠正第一对象数据中对应于同一位置的数据位,以得到中间数据。
在一些实施例的用于数据纠错的装置中,第一纠正单元330还包括固定错误判断单元,固定错误判断单元被配置为根据历史纠错信息来判断存储地址是否存在针对同一位置的固定错误。
在一些实施例的用于数据纠错的装置中,固定错误判断单元包括固定错误确定单元,固定错误确定单元被配置为,响应于历史纠错信息包括连续N条涉及第二类数据错误的纠错信息且N条纠错信息针对同一位置,确定存储地址存在针对同一位置的固定错误,其中,N为大于或等于2的整数。
在一些实施例的用于数据纠错的装置中,装置300还可以包括报错单元,在这些实施例中,读取单元310还被配置为,响应于历史纠错信息指示存储地址不存在针对同一位置的固定错误,再次从存储地址读取第二对象数据;第一校验单元320还被配置为对第二对象数据再次执行第一校验;报错单元被配置为,响应于再次执行的第一校验的校验结果指示第二对象数据包括第一类数据错误,执行报错操作。
在一些实施例的用于数据纠错的装置中,第二纠正单元340可以包括第二纠正子单元,第二纠正子单元被配置为,对于中间数据执行第二校验以纠正中间数据剩余的数据错误,从而得到对应于存储地址的无报错数据。
在一些实施例的用于数据纠错的装置中,第一校验和第二校验采用相同的校验算法。
在一些实施例的用于数据纠错的装置中,校验算法为RS算法。
在一些实施例的用于数据纠错的装置中,上述存储地址涉及存储器内的同一内存颗粒或者多个内存颗粒,例如,上述存储地址仅位于同一内存颗粒内或者同时位于多个(例如两个或更多个)内存颗粒。
以上仅结合图3描述了根据本公开的至少一实施例的用于数据纠错的装置300的部分,并且用于数据纠错的装置300的其余部分可以与本公开的结合图1描述的用于数据纠错的方法的各个方面相对应,并且根据本公开的结合图1描述的用于数据纠错的方法的各个方面的效果同样可以映射到本公开的用于数据纠错的装置300,在此不在赘述。
与本公开的至少一实施例提供的用于数据纠错的方法相对应,本公开还提供了另一种用于数据纠错的装置。图4示出了根据本公开的至少一实施例的另一用于数据纠错的装置400的结构示意图。
参照图4,用于数据纠错的装置400可以包括读取单元410、第一校验单元420、存储单元430以及纠正单元440。
读取单元410被配置为分别对从存储地址读取多条对象数据。
第一校验单元420被配置为分别对多条对象数据执行第一校验。
存储单元430被配置为,响应于对多条对象数据执行的第一校验的校验结果指示多条对象数据分别包括可纠正错误,存储多条对象数据的多条纠错信息,其中,多条纠错信息中的每一条包括所对应的可纠正错误所针对的存储位置。
纠正单元440被配置为,根据多条纠错信息纠正后续从存储地址读取的第一对象数据的数据错误。
读取单元410可以与结合图3描述的读取单元310相同或类似,第一校验单元420可以与结合图3描述的第一校验单元320相同或类似。
如上所述,本公开的至少一实施例所公开的另一用于数据纠错的装置在于,通过存储针对存储地址的可纠正错误的纠错信息,可以利用该纠错信息来纠正后续从该存储地址的获取的数据中的数据错误。以这种方式,可以实现减少不可纠正错误的错误位数,将不可纠正错误改变为可纠正错误,从而解决相关技术中的不可纠正错误的问题,提高了存储器的可靠性,大大降低了数据丢失与系统宕机的风险。
在一些实施例中,第一校验单元320还被配置为:对第一对象数据执行第一校验;并且纠正单元340可以包括第一纠正单元和第二纠正单元,其中,第一纠正单元被配置为:响应于对第一对象数据的第一校验的校验结果指示第一对象数据包括不可纠正错误,使用多条纠错信息来至少部分纠正不可纠正错误,以得到中间数据;以及第二纠正单元被配置为:由中间数据得到对应于存储地址的无报错数据。
以上仅结合图4描述了根据本公开的至少一实施例的用于数据纠错的装置400的部分,并且用于数据纠错的装置400的其余部分可以与本公开的结合图2描述的用于数据纠错的方法的各个方面相对应,并且根据本公开的结合图2描述的用于数据纠错的方法的各个方面的效果同样可以映射到本公开的用于数据纠错的装置400,在此不在赘述。
以上分别结合图3和图4描述了根据本公开的实施例的用于数据纠错的装置。然而,可以理解的是,结合图3和图4描述的用于数据纠错的装置的各个方面可以结合或相互引用,而不超出本公开的范围。
下面通过图5和图6来描述利用了根据本公开的至少一实施例所提供的用于数据纠错的方法或装置的示例场景。可以理解的是,图5和图6所示出的场景仅是示例性的,而没有穷尽列举说明上述用于数据纠错的方法和用于数据纠错的装置的各个方面。
图5示出了一种示例场景示意图,其中存在不可纠正错误。为了简便,图5仅说明了与本公开的至少一实施例的用于数据纠错的方法或装置相关的示例场景。
参见图5,可以根据读取请求从DDR存储器502中的目标存储地址读出数据504,例如,数据504根据读取请求而具有对应的长度,数据504可以为数据+校验值信息(如图中的Data1+chk1、Data2+chk2……)。随后,数据504可以被送入RS算法模块506。在RS算法模块506中,可以通过里德所罗门(Reed-Solomon,RS)算法对数据进行校验操作来确定对象数据是否包括错误、或者当包括错误时,该错误是可纠正错误还是不可纠正错误。例如,在RS算法模块506中,可以通过RS算法来指示数据504是否出现错误、出现错误的位置是否涉及一个符号错误(即出现可纠正错误,即CE错误)、以及出现错误的位置是否涉及二个符号错误(即出现不可纠正错误,即UCE错误)。这里的符号为纠错的最小单位,其例如可以包含特定的若干比特数据。如果数据504没有错误或出现CE错误,将输出正确数据。例如,当数据504没有错误,将直接输出正确数据(如图中的Data1、Data3、Data4)。当数据504出现CE错误,例如图5中的Data2出现错误,可以对其进行纠正,以得到正确数据(如图中的Data2')。
然而,在图5所示的场景中,一旦数据出现UCE错误时,数据无法正确读回,数据将会丢失,如模块510所示。
图6示出了利用了根据本公开的至少一实施例的用于数据纠错的方法或装置的示例场景示意图,以示例性的说明解决图5所示的场景中存在的UCE错误问题的实现。然而,可以理解的是,根据本公开的至少一实施例描述的用于数据纠错的方法和用于数据纠错的装置可以应用于其他场景。
参照图6,可以根据读取请求从DDR存储器602中的目的存储地址读出数据604,例如,数据604根据读取请求而具有对应的长度,数据604可以为数据+校验值信息。这里的数据604可以是上文提到的对象数据,然而对象数据不限于此,并且可以是其他形式的数据。
随后,数据604可以被送入RS算法模块606。在RS算法模块606中,可以通过RS算法对数据604执行校验操作。这里的校验操作可以为在上文提到的第一校验,以判断数据604是否出现错误,以及如果出现错误,该错误是CE错误还是UCE错误。如果RS算法模块606的执行结果指示数据604没有错误,则可以直接输出正确数据608(如图中的Data1、Data3、Data4)。如果RS算法模块606的执行结果指示数据604出现CE错误,可以利用RS算法纠正数据,即纠错操作,以输出正确数据608(如图中的Data2')。
在RS算法模块606中确定出数据604包括CE错误时以及纠正该CE错误时,可以记录CE错误的纠错信息612。示例性的纠错信息612可以包括当前CE错误的内存颗粒的位置(如图中E1)、与当前的伴随式信息(如图中Sym1)。纠错信息612仅是示例性的,纠错信息612可以取决于不同的ECC技术所采用的算法而进行改变。
图6中示出了三次CE错误的纠错信息,上图中将会记录最近三次CE错误的纠错信息。对于存储CE错误的纠错信息的次数,可以以设置阈值的方式来控制,例如可以根据具体的应用情况来设置阈值。例如,当阈值设置为3,则存储最近连续3次CE错误的纠错信息。若阈值设置为5,则存储最近连续5次CE错误的纠错信息。当然,其他阈值也是可能的。
可以理解的是,因为数据的错误是逐步累积造成的。如果还没有达到阈值次数的CE错误就出现UCE错误,那么目前没有办法纠正,之前也没有办法纠正。这种小概率事件不在本公开的实施例所涉及的范围内。
在一些情况下,纠错信息可以存储在存储器中,并且可以在需要使用纠错信息时(例如下面描述的模块614)从该存储器中读取。在另一些情况下,纠错信息可以存储在寄存器中,并且可以在需要使用纠错信息时(例如下面描述的模块614)从寄存器中读取。与使用存储器存储纠错信息相比,使用寄存器存储纠错信息可以提高纠错信息被存储和读取的效率。
回到模块610,当出现UCE错误时,将触发模块614的操作。在模块614中,可以读取存储的纠错信息612,并且可以判断读取的纠错信息对应的内存颗粒的出错位置是否相同。如图所示,模块614可以读取三次CE错误的纠错信息,并且判断三次CE错误的纠错信息分别对应的内存颗粒的出错位置是否相同。
如果位置不相同(模块614的“否”分支),说明三次CE错误并不发生在同一位置,因此读取的数据604出现的UCE错误也很可能是随机错误。在一些情况下,可以再次从先前出现UCE错误的存储地址读取数据,以降低随机错误。再次读取的次数可以以设置阈值的方式来控制,例如可以根据具体的应用情况来设置阈值。例如,当阈值设置为2,即可以再读两次。当然,其他阈值也是可能的。在另一些情况下,当经过阈值次数的读取的次数仍然出现UCE错误时,将视为无解的UCE错误,并且可以在模块616中进行报错操作,例如报告数据丢失、提醒工作人员更换内存条或其他操作等。
如果位置相同(模块614的“是”分支),则说明三次CE错误发生在同一位置,即固定错误,因此读取的数据604出现的UCE错误也很可能是固定错误,并且可以启动RS算法后处理模块618。在RS算法后处理模块618中,将根据CE错误的纠错信息以及当前读取的出现UCE错误的数据(如图中的Datam+chkm),通过RS算法后处理计算并反推出针对CE错误所存储的那个位置的正确数据,并得到中间数据620(如图中的Datam'+chkm)。此时,Datam'将只包含一个出错位置。可以理解的是,这里的RS算法后处理仅是示出了基于CE错误的纠错信息来计算并反推出针对CE错误所存储的那个位置的正确数据的一种示例方式,RS算法后处理模块618也可以替代地通过其他数据处理方式或算法来实现。
随后,中间数据620(Datam'+chkm)可以输入到RS算法模块622中进行运算。这里示出的RS算法模块622可以与RS算法模块606是同一RS算法模块。在这种情况下,RS算法模块606的校验结果就会报出中间数据620(Datam'+chkm)出现CE错误,并且可以通过RS算法(对应于上文所述的第二校验)将该出现CE错误的中间数据纠正回来,从而得到完全正确的数据624(如图中的Datam”)。
在上述场景中,可以通过纠错信息来部分地纠正UCE错误,得到包含部分剩余错误的中间数据,可进而纠正该中间数据。以这种方式,可以在不改变用于ECC的冗余位的情况下,通过数据错误的逐步纠正,例如将原来的不可纠正错误逐步纠正,有效解决了UCE错误带来的问题,提高了存储器的可靠性,大大降低了数据丢失与系统宕机的风险。
例如,在上述场景中,UCE错误可以涉及第一内存颗粒和第二内存颗粒,即上文提到的出现跨内存颗粒的错误,可以通过CE错误的纠错信息纠正第一内存颗粒的错误,进而可以纠正不同内存颗粒的错误,从而可以实现两个出错位置的纠正,有效解决了UCE错误带来的问题。
又例如,在上述场景中,UCE错误可以涉及一个内存颗粒,即如上提到的一个内存颗粒的出错位置跨不同的位宽,可以通过CE错误的纠错信息纠正位于第一位宽位置内的错误,进而可以纠正位于第二位宽位置内的错误,从而可以实现跨不同位宽的内存颗粒的错误的纠正,有效解决了UCE错误带来的问题。
又例如,在上述场景中,当UCE错误的位宽超过了可以被纠正的位宽,可以通过CE错误的纠错信息纠正该UCE错误的部分,得到包含部分剩余错误的中间数据,可进而纠正该中间数据,有效解决了UCE错误带来的问题。
根据本公开的至少一些实施,使用本公开的实施例的方法,利用硬件记录之前的CE错误的纠错信息,可以实现逐个纠正数据错误的目的,解决UCE错误的问题。以提高存储器的可靠性,大大降低数据丢失与宕机的风险。
可以理解的是,如上参照图6描述的CE错误的纠错信息也可以由软件存储和使用,并且相应的模块(例如模块614至模块624)也可以通过软件来实施。如此,可以提高DDR存储器的兼容性。
图7示出了根据本公开的至少一实施例的电子设备700的示意图。如图7所示,电子设备700包括处理器710和存储器720。
存储器720包括一个或多个计算机程序模块721。一个或多个计算机程序模块721被存储在存储器720中并被配置为由处理器710执行,该一个或多个计算机程序模块721包括用于执行本公开的至少一实施例提供的用于数据纠错的方法的指令,这些指令被处理器710执行时,可以执行本公开的至少一实施例提供的用于数据纠错的方法及其附加方面的一个或多个步骤。存储器720和处理器710可以通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,处理器710可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其他形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构、RISC-V架构等。处理器710可以为通用处理器或专用处理器,可以控制电子设备700中的其他组件以执行期望的功能。
例如,存储器720可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块721,处理器710可以运行一个或多个计算机程序模块721,以实现电子设备700的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。该电子设备700例如可以是片上系统(SOC)或者包括该SOC的计算机、电视、显示器等。该电子设备700的具体功能和技术效果可以参考上文中关于用于数据纠错的方法及其附加方面的描述,此处不再赘述。
图8示出了根据本公开的至少一实施例的另一电子设备800的示意图。该电子设备800例如适于用来实施本公开的至少一实施例提供的用于数据纠错的方法及其附加方面。需要注意的是,图8示出的电子设备800仅仅是一个示例,其不会对本公开的至少一实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)810,其可以根据存储在只读存储器(ROM)820中的程序或者从存储装置880加载到随机访问存储器(RAM)830中的程序而执行各种适当的动作和处理。在RAM 830中,还可以存储有电子设备800操作所需的各种程序和数据。处理装置810、ROM 820以及RAM 830通过总线840彼此相连。输入/输出(I/O)接口850也连接至总线840。
通常,以下装置可以连接至I/O接口850:例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置860;例如液晶显示器(LCD)、扬声器、振动器等的输出装置870;例如磁带、硬盘等的存储装置880;通信装置890。通信装置890可以允许电子设备800与其他电子设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备800,但应理解的是,并不要求实施或具备所有示出的装置,电子设备800可以替代地实施或具备更多或更少的装置。
例如,本公开的至少一实施例提供的用于数据纠错的方法及其附加方面可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述用于数据纠错的方法及其附加方面的程序代码。在这样的实施例中,该计算机程序可以通过通信装置890从网络上被下载和安装,或者从存储装置880安装,或者从ROM 820安装。在该计算机程序被处理装置810执行时,可以执行本公开的至少一实施例提供的用于数据纠错的方法及其附加方面。
本公开的至少一实施例还提供一种非瞬时可读存储介质。图9示出了根据本公开的至少一实施例的非瞬时可读存储介质900的示意图。如图9所示,非瞬时可读存储介质900上存储有计算机指令910,该计算机指令910被处理器执行时执行如上所述的用于数据纠错的方法及其附加方面中的一个或多个步骤。
例如,该非瞬时可读存储介质900可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含用于从存储地址读取第一对象数据的计算机可读的程序代码,另一个计算机可读存储介质包含用于对第一对象数据执行第一校验的计算机可读的程序代码,另一个计算机可读存储介质包含用于响应于第一校验的校验结果指示第一对象数据包括第一类数据错误,使用针对存储地址的第二类数据错误的历史纠错信息来至少部分纠正第一类数据错误,以得到中间数据的计算机可读的程序代码,另一个计算机可读存储介质包含用于由中间数据得到对应于存储地址的无报错数据的计算机可读的程序代码。又例如,一个计算机可读存储介质包含用于分别对从存储地址读取多条对象数据的计算机可读的程序代码,另一个计算机可读存储介质包含用于分别对多条对象数据执行第一校验的计算机可读的程序代码,另一个计算机可读存储介质包含用于响应于对多条对象数据执行的第一校验的校验结果指示多条对象数据分别包括可纠正错误,存储多条对象数据的多条纠错信息,其中,多条纠错信息中的每一条包括所对应的可纠正错误所针对的存储位置的计算机可读的程序代码,另一个计算机可读存储介质包含用于根据多条纠错信息纠正后续从存储地址读取的第一对象数据的数据错误的计算机可读的程序代码。
当然,上述各个程序代码也可以存储在同一个计算机可读介质中,本公开的实施例对此不作限制。
例如,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一个实施例提供的用于数据纠错的方法及其附加方面。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
可以理解,本文的框图可以表示体现所描述的实施例的原理的说明性电路系统或其他功能单元的概念图。类似地,可以理解,任何流程图等表示各种过程,这些过程可以基本上在计算机可读存储介质中表示,并且由计算机或处理器执行,无论是否明确示出了这样的计算机或处理器。包括功能块的各种元件的功能可以通过使用硬件(诸如电路硬件和/或能够以存储在上述计算机可读存储介质上的编码指令的形式执行软件的硬件)来提供。因此,这样的功能和所示的功能块将被理解为是硬件实施的和/或计算机实施的,因此是机器实施的。就硬件实施方式而言,功能块可以包括或涵盖但不限于数字信号处理器(digital signal processor,DSP)硬件、精简指令集处理器、硬件(例如,数字或模拟)电路系统,包括但不限于(多个)专用集成电路(application specific integrated circuit,ASIC)和/或(多个)现场可编程门阵列(field programmable gate array,FPGA),以及(在适当的情况下)能够执行这些功能的状态机。
就计算机实施方式而言,计算机通常被理解为包括一个或多个处理器或一个或多个控制器。当由计算机或处理器或控制器提供时,功能可以由单个专用计算机或处理器或控制器、单个共享计算机或处理器或控制器、或多个单独的计算机或处理器或控制器提供,其中一些可以是共享的或分布式的。
本公开中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本公开所提供的几个实施例中,应该理解到,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框/操作中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框/操作实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框/操作、以及框图和/或流程图中的方框/操作的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。

Claims (15)

1.一种用于数据纠错的方法,包括:
从存储地址读取第一对象数据;
对所述第一对象数据执行第一校验;
响应于所述第一校验的校验结果指示所述第一对象数据包括第一类数据错误,使用针对所述存储地址的第二类数据错误的历史纠错信息来至少部分纠正所述第一类数据错误,以得到中间数据;以及
由所述中间数据得到对应于所述存储地址的无报错数据,
其中,针对所述第一校验所采用的校验算法,所述第二类数据错误中可被纠正的错误位数小于所述第一类数据错误中可被纠正的错误位数。
2.根据权利要求1所述的方法,其中,使用针对所述存储地址的第二类数据错误的历史纠错信息来至少部分纠正所述第一类数据错误,以得到所述中间数据,包括:
响应于所述历史纠错信息指示所述存储地址存在针对同一位置的固定错误,纠正对所述第一对象数据中对应于所述同一位置的数据位,以得到所述中间数据。
3.根据权利要求2所述的方法,还包括:
根据所述历史纠错信息来判断所述存储地址是否存在针对所述同一位置的固定错误。
4.根据权利要求3所述的方法,其中,根据所述历史纠错信息来判断所述存储地址是否存在针对所述同一位置的固定错误,包括:
响应于所述历史纠错信息包括连续N条涉及所述第二类数据错误的纠错信息且所述N条纠错信息针对所述同一位置,确定所述存储地址存在针对所述同一位置的固定错误,其中,N为大于或等于2的整数。
5.根据权利要求2所述的方法,还包括:
响应于所述历史纠错信息指示所述存储地址不存在针对同一位置的固定错误,再次从所述存储地址读取第二对象数据,对所述第二对象数据再次执行所述第一校验;以及
响应于再次执行的所述第一校验的校验结果指示所述第二对象数据包括所述第一类数据错误,执行报错操作。
6.根据权利要求1所述的方法,其中,由所述中间数据得到对应于所述存储地址的无报错数据,包括:
对于所述中间数据执行第二校验以纠正所述中间数据剩余的数据错误,从而得到对应于所述存储地址的所述无报错数据。
7.根据权利要求6所述的方法,其中,所述第一校验和所述第二校验采用相同的校验算法。
8.根据权利要求1所述的方法,其中,所述校验算法为RS算法。
9.根据权利要求1所述的方法,其中,所述存储地址涉及存储器内的同一内存颗粒或者多个内存颗粒。
10.一种用于数据纠错的方法,包括:
分别对从存储地址读取多条对象数据;
分别对所述多条对象数据执行第一校验;
响应于对所述多条对象数据执行的第一校验的校验结果指示所述多条对象数据分别包括可纠正错误,存储所述多条对象数据的多条纠错信息,其中,所述多条纠错信息中的每一条包括所对应的可纠正错误所针对的存储位置;
根据所述多条纠错信息纠正后续从所述存储地址读取的第一对象数据的数据错误。
11.根据权利要求10所述的方法,其中,根据所述多条纠错信息纠正后续从所述存储地址读取的第一对象数据的数据错误,包括:
响应于对所述第一对象数据的第一校验的校验结果指示所述第一对象数据包括不可纠正错误,使用所述多条纠错信息来至少部分纠正所述不可纠正错误,以得到中间数据;以及
由所述中间数据得到对应于所述存储地址的无报错数据。
12.一种用于数据纠错的装置,包括:
读取单元,被配置为从存储地址读取第一对象数据;
第一校验单元,被配置为对所述第一对象数据执行第一校验;
第一纠正单元,被配置为:响应于所述第一校验的校验结果指示所述第一对象数据包括第一类数据错误,使用针对所述存储地址的第二类数据错误的历史纠错信息来至少部分纠正所述第一类数据错误,以得到中间数据;以及
第二纠正单元,被配置为由所述中间数据得到对应于所述存储地址的无报错数据,
其中,针对所述第一校验所采用的校验算法,所述第二类数据错误中可被纠正的错误位数小于所述第一类数据错误中可被纠正的错误位数。
13.一种用于数据纠错的装置,包括:
读取单元,分别对从存储地址读取多条对象数据;
第一校验单元,分别对所述多条对象数据执行第一校验;
存储单元,响应于对所述多条对象数据执行的第一校验的校验结果指示所述多条对象数据分别包括可纠正错误,存储所述多条对象数据的多条纠错信息,其中,所述多条纠错信息中的每一条包括所对应的可纠正错误所针对的存储位置;
纠正单元,根据所述多条纠错信息纠正后续从所述存储地址读取的第一对象数据的数据错误。
14.一种电子设备,包括:
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于被所述处理器执行时执行根据权利要求1-11中任一项所述的方法的指令。
15.一种非暂存计算机可读存储介质,其上存储有可执行指令,
其中,所述可执行指令在被处理器执行时,使得所述处理器执行根据权利要求1-11中任一项所述的方法。
CN202111615712.0A 2021-12-27 2021-12-27 用于数据纠错的方法、装置、电子设备及存储介质 Pending CN114356645A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111615712.0A CN114356645A (zh) 2021-12-27 2021-12-27 用于数据纠错的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111615712.0A CN114356645A (zh) 2021-12-27 2021-12-27 用于数据纠错的方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114356645A true CN114356645A (zh) 2022-04-15

Family

ID=81102400

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111615712.0A Pending CN114356645A (zh) 2021-12-27 2021-12-27 用于数据纠错的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114356645A (zh)

Similar Documents

Publication Publication Date Title
US10019312B2 (en) Error monitoring of a memory device containing embedded error correction
US20190079836A1 (en) Predictive memory maintenance
US10572345B2 (en) First responder parities for storage array
US8185800B2 (en) System for error control coding for memories of different types and associated methods
US10346268B2 (en) Efficient data recovery for write path errors
US8171377B2 (en) System to improve memory reliability and associated methods
US8352806B2 (en) System to improve memory failure management and associated methods
KR101343262B1 (ko) 동시 판독 및 기록 메모리 동작을 수행하는 방법 및 장치
US8181094B2 (en) System to improve error correction using variable latency and associated methods
US20160239663A1 (en) Detecting a cryogenic attack on a memory device with embedded error correction
US8949694B2 (en) Address error detection
US8185801B2 (en) System to improve error code decoding using historical information and associated methods
KR20180086816A (ko) 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
US20140344643A1 (en) Hybrid memory protection method and apparatus
CN114360623A (zh) 用于存储器纠错的方法、存储器控制器及计算机系统
CN109669800B (zh) 用于写入路径错误的高效数据恢复
US9690649B2 (en) Memory device error history bit
CN110349616A (zh) 针对nand闪存中的位线故障的动态交织器变化
CN101634938A (zh) 固态硬盘的数据迁移方法、数据迁移装置及固态硬盘
US7240272B2 (en) Method and system for correcting errors in a memory device
US10025652B2 (en) Error location pointers for non volatile memory
CN114356645A (zh) 用于数据纠错的方法、装置、电子设备及存储介质
CN111989745A (zh) 通用高和低随机位纠错逻辑
CN109710445B (zh) 内存校正方法和电子设备
CN114356984B (zh) 标记存储器的风险状态的方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination