CN114595090A - 一种纠错方法及装置 - Google Patents

一种纠错方法及装置 Download PDF

Info

Publication number
CN114595090A
CN114595090A CN202011406212.1A CN202011406212A CN114595090A CN 114595090 A CN114595090 A CN 114595090A CN 202011406212 A CN202011406212 A CN 202011406212A CN 114595090 A CN114595090 A CN 114595090A
Authority
CN
China
Prior art keywords
data
failure
memory
location
error correction
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
CN202011406212.1A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011406212.1A priority Critical patent/CN114595090A/zh
Priority to EP21899740.1A priority patent/EP4246329A4/en
Priority to PCT/CN2021/123919 priority patent/WO2022116706A1/zh
Publication of CN114595090A publication Critical patent/CN114595090A/zh
Priority to US18/327,374 priority patent/US20230325276A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/085Error detection or correction by redundancy in data representation, e.g. by using checking codes using codes with inherent redundancy, e.g. n-out-of-m codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种纠错方法及装置,本申请中,寄存控制器可以检测该内存中存在的错误,当检测到UCE后,可以获取发生该UCE的内存地址。寄存控制器从该内存地址指示的位置处读取原始数据,将预设的第一数据存储在内存地址指示的位置处,在将该第一数据存储在该位置处后,再从该位置处读取第二数据;比对第一数据和第二数据,确定位置中的第一失效位置;从该位置出的原始数据中确定第一失效位置处存储的原始数据,对第一失效位置处存储的原始数据进行纠错。寄存控制器能够通过数据写入和读出的操作准确的定位到发生UCE的失效位置,对该失效位置处存储的原始数据进行纠错,这种失效位置的定位方式更加高效,进一步,减少UCE的发生,提高内存的稳定性。

Description

一种纠错方法及装置
技术领域
本申请涉及通信技术领域,尤其涉及一种纠错方法及装置。
背景技术
内存的RAS(reliability,availability,serviceability)是内存的可靠性、可实用性以及可服务性。目前为了保证内存的RAS提出了多种内存纠错方法,例如,自适应双颗粒数据纠正(adaptive double device data correction,ADDDC)、单颗粒数据纠正(single-device data correction,SDDC)、内存镜像(memory mirror)、内存热备(ranksparing)、系统管理中断(system management interrupt,SMI)等。
内存中发生的错误可以分为两种,一种为可纠正错误(corrected error,CE),也即该类错误是可以通过纠错算法进行纠正的,CE通常发生在内存的一个内存颗粒(内存颗粒是指内存的一个单元)中,发生的数据大小通常为1比特。对于纠错算法纠正不了的错误可以称为不可纠正错误(uncorrected error,UCE),这类错误通常发生在内存的多个内存颗粒中,发生的数据大小为多个比特;对于前者,目前提出的多种内存纠错方法均能够对该类错误进行纠错。而对于后者,无法实现准确定位,进而也无法进行纠错。
发明内容
本申请提供一种纠错方法及装置,用以定位内存中发生UCE的位置,对UCE进行纠错。
第一方面,本申请实施例提供了一种纠错方法,该方法由寄存控制器执行,该方法由寄存控制器执行,寄存控制器可以检测该内存中存在的错误,当检测到UCE后,可以获取发生该UCE的内存地址。在获取了该内存地址后,寄存控制器可以从该内存地址指示的位置处读取原始数据,也即存储在该内存地址指示的位置处的数据,之后,将预设的第一数据存储在内存地址指示的位置处,在将该第一数据存储在该位置处后,再从该位置处读取第二数据;比对第一数据和第二数据,确定位置中的第一失效位置;从该位置出的原始数据中确定第一失效位置处存储的原始数据,对第一失效位置处存储的原始数据进行纠错。
通过上述方法,寄存控制器能够通过数据写入和读出的操作准确的定位到发生UCE的失效位置,之后就可以对该失效位置处存储的原始数据进行纠错,这种失效位置的定位方式更加高效,通过对失效位置处的存储的原始数据纠错也能够减少UCE,提高内存的稳定性。
在一种可能的实施方式中,寄存控制器还能够对第一数据进行翻转,将翻转后的第一数据存在内存地址所指示的位置处,在将翻转后的第一数据存储在该位置后,可以从该位置中读取第三数据。之后再对翻转后的第一数据和第三数据件比对,确定该位置中的第二失效位置,寄存控制器可以对第二失效位置处存储的原始数据进行纠错。
通过上述方法,通过翻转第一数据、数据写入和读取能够确定与第一失效位置不同的第二失效位置,可以避免第一失效位置存在遗漏的情况,将该位置中所有的失效位置均定位到,保证失效位置定位的完整性以及准确性。
在一种可能的实施方式中,寄存控制器在对第一失效位置处存储的原始数据进行纠错时,寄存控制器可以对原始数据中该第一失效位置处至少一个比特位上的数据进行翻转,每翻转一次,该原始数据将转换为一个候选数据,寄存控制器可以利用纠错算法对候选数据进行纠错,确定该候选数据是否正确,若该候选数据正确或利用该纠错算法可以获得正确的数据,则停止翻转,否则,继续对原始数据中该第一失效位置处至少一个比特位上的数据进行翻转,直至能够获得正确的数据。寄存控制器也可以对原始数据中的目标数据(该目标数据是第一失效位置处位于目标颗粒上的至少一个比特位上的数据)进行翻转,每翻转一次,该原始数据将转换为一个候选数据,寄存控制器可以利用纠错算法对候选数据进行纠错,若对该候选数据纠错成功,利用该纠错算法纠错后的数据即为正确的数据,否则,继续对该第一失效位置处位于目标颗粒上的至少一个比特位上的原始数据继续进行翻转,获得另一个候选数据,再利用纠错算法对该候选数据进行纠错,循环执行,直至能够通过纠错算法获取正确的数据。
寄存控制器在对第二失效位置处存储的原始数据进行纠错的方式与寄存控制器对第一失效位置处存储的原始数据进行纠错的方式类似,具体可参见前述内容。
寄存控制器在确定了第一失效位置和第二失效位置之后,也可以一同对第一失效位置和第二失效位置处存储的原始数据进行纠错。具体的,寄存控制器可以对原始数据中该失效位置处至少一个比特位上的数据进行翻转,该失效位置包括第一失效位置和第二失效位置,每翻转一次,该原始数据将转换为一个候选数据,寄存控制器可以利用纠错算法对候选数据进行纠错,确定该候选数据是否正确,若该候选数据正确或利用该纠错算法可以获得正确的数据,则停止翻转,否则,继续对原始数据中该失效位置处至少一个比特位上的数据进行翻转,直至能够获得正确的数据。寄存控制器也可以对原始数据中的目标数据(该目标数据是失效位置处位于目标颗粒上的至少一个比特位上的数据)进行翻转,每翻转一次,该原始数据将转换为一个候选数据,寄存控制器可以利用纠错算法对候选数据进行纠错,若对该候选数据纠错成功,利用该纠错算法纠错后的数据即为正确的数据,否则,继续对该失效位置处位于目标颗粒上的至少一个比特位上的原始数据继续进行翻转,获得另一个候选数据,再利用纠错算法对该候选数据进行纠错,循环执行,直至能够通过纠错算法获取正确的数据。
通过上述方法,寄存控制器能够通过原始数据的翻转实现数据纠错,方式较为简单、高效,能够提升数据纠错效率。
在一种可能的实施方式中,寄存控制器在比对第一数据和第二数据,确定位置中的第一失效位置时,可以确定第一数据和第二数据中不一致的第一子数据,第一子数据存储的位置为第一失效位置。
通过上述方法,寄存控制器通过简单的对比第一数据和第二数据,可以确定出内存地址所指示的位置中的失效位置,失效位置的定位方式较为快捷,有效的提升了定位失效位置的效率。
在一种可能的实施方式中,寄存控制器比对翻转后的第一数据和第三数据,确定位置中的第二失效位置时,可以确定翻转后的第一数据和第三数据中不一致的第二子数据,第二子数据存储的位置为第二失效位置。
通过上述方法,寄存控制器通过简单的对比翻转后的第一数据和第三数据,可以确定出内存地址所指示的位置中除第一失效位置之外的第二失效位置,失效位置的定位方式较为快捷。
在一种可能的实施方式中,寄存控制器在将预设的第一数据存储在内存地址指示的位置处时,可以不生成该第一数据的冗余码,可以直接将该第一数据直接存储在内存地址指示的位置处。
通过上述方法,内存中冗余码所存储的位置也可能存在失效位置,将第一数据直接存储在该位置处,使得后续可以定位到冗余码所存储的位置中可能存在的失效位置,保证失效位置定位的准确性。
第二方面,本发明实施例提供了一种纠错装置,纠错装置具有实现上述方法实例中寄存控制器行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本发明实施例提供了一种装置,设备包括存储器以及处理器;处理器被配置为支持设备执行上述方法中相应的功能;存储器与处理器耦合,其保存设备必要的程序指令和数据。
第四方面,本申请实施例中还提供一种计算机可读存储介质,该存储介质中存储软件程序,该软件程序在被一处理器读取并执行时可实现第一方面以及第一方面任意一种设计提供的方法。
第五方面,本申请还提供一种计算机芯片,芯片与存储器相连,芯片用于读取并执行存储器中存储的软件程序,执行上述第一方面以及第一方面任意一种设计提供的方法。
附图说明
图1为本申请提供的一种系统的架构示意图;
图2A为本申请提供的一种数据写入方法示意图;
图2B为本申请提供的一种数据读取方法示意图;
图3为本申请提供的一种纠错方法示意图;
图4为本申请提供的另一种纠错方法示意图;
图5为本申请提供的一种纠错装置结构示意图;
图6为本申请提供的一种装置结构示意图。
具体实施方式
如图1所示,为本申请实施例所适用的一种系统架构图,该系统中包括寄存控制器100以及内存200。
寄存控制器100能够执行本申请实施例提供的纠错方法,寄存控制器100能够检测内存200中发生的UCE,获取发生UCE的内存地址;在对UCE进行纠错时,寄存控制器100可以通过数据写入以及数据读出操作,定位为该内存地址中的失效位置,对该失效位置处存储的原始数据进行纠错。
本申请实施例并不限定寄存控制器100的具体类型,例如,该寄存控制器100可以为双倍速率寄存控制器(double data rate controller,DDRC),也可以为处理器中的控制模块,凡是能够执行本申请实施例提供的纠错方法的模块均适用于本申请实施例。
内存200,用于存储数据,内存200包括多个内存颗粒210,内存颗粒210也可以称为内存芯片,内存颗粒210通常属于动态随机存取存储器(dynamic random access memory,DRAM)。每个内存颗粒210允许存储的数据大小通常是相同的,常见的内存颗粒210允许存储的数据大小为4~16兆字节(Gb)。
在本申请实施例中,寄存控制器100在检测到内存200中存在的UCE后,可以获取发生UCE的内存地址,将预设的数据(对应后续实施例中的第一数据)存储到内存地址指示的位置后,在从该位置处读取数据,通过比较写入的数据和读取的数据,确定该位置中的失效位置,该失效位置即为导致发生UCE的位置,之后对该失效位置处存储的原始数据进行纠错。采用本申请实施例提供纠错方法,能够快速的定位到发生UCE的位置,并进行纠错,减少内存200中存在的UCE,提升内存200的稳定性。
在对本申请实施例介绍的纠错方法进行说明之前,先对正常情况下,数据写入以及数据的读取过程进行简单说明:
(一)、数据写入
参见图2A,寄存控制器100接收数据写入请求(寄存控制器100可以从处理器接收该数据写入请求),该数据写入请求包括待写入数据以及该待写入数据所需写入的内存地址,寄存控制器100获取该写入数据后,先生成该待写入数据的冗余码。该冗余码能够在后续需要读取该待写入数据时,对待写入数据进行纠错,保证后续能够读取到正确的待写入数据。
在生成了待写入数据的冗余码后,将该待写入数据和该待写入数据的冗余码写入到数据写入请求中携带的内存地址所指示的位置处,该内存地址所指示的位置可以分布在内存200的一个或多个内存颗粒210中,也就是说,待写入数据以及该待写入数据的冗余码可以分布在该一个或多个内存颗粒210中。在如图2A所示,待写入数据可以分布在内存颗粒D0~D7中,该待写入数据的冗余码分布在内存颗粒D8~D9中。
(二)、数据读取
参见图2B,寄存控制器100接收数据读取请求(寄存控制器100可以从处理器接收该数据读取请求),该数据读取请求包括数据所在的内存地址,寄存控制器100从该内存地址所指示的位置处读取该数据和该数据的冗余码。
寄存控制器100利用该数据的冗余码对读取的数据进行检错,若该数据未出错,则直接反馈该数据,若该数据出错,则通过纠错算法利用该待数据的冗余码对该数据进行纠错,在对该数据纠错之后,反馈该纠错后的数据。
下面结合附图3对本申请实施例提供的一种纠错方法进行说明,参见图3,该方法包括:
步骤301:寄存控制器100检测内存200中存在的错误。寄存控制器100可以通过对内存200中存储的数据进行检错和纠错确定该内存200中是否存在错误。
寄存控制器100检测内存200中存在的错误的场景有许多种,例如,当处理器需要读取内存200中的数据时,寄存控制器100在从内存200读取该数据时,可以对该数据进行检错,确定该数据是否出错,若该数据出错,则说明内存200中存储该数据的位置存在错误,否则,内存200中存储该数据的位置不存在错误。又例如,寄存控制器100可以定期对内存200中的数据进行检错,确定该内存200中存储数据的位置是否存在错误。又例如,寄存控制器100也可以在处理器发出的检错指令下,对内存200中存储的数据进行检错。
本申请实施例并不限定寄存控制器100对内存200中存储的数据进行检错的方式,下面介绍其中一种,寄存控制器100在从内存200中读取数据时,可以将该数据以及该数据的冗余码一起读出,重新基于该数据计算新的冗余码,对新的冗余码和从内存200中读出的冗余码进行比对,若完全一致,则说明该数据正确,内存200中不存在错误(也即内存200中存储该数据的位置不存在错误),若不一致,则说明数据出错,内存200中存在错误(也即内存200中存储该数据和该数据的冗余码的位置存在错误)。
在发现数据出错后,寄存控制器100可以对该数据进行纠错,例如寄存控制器100可以通过纠错算法利用冗余码对该数据进行纠错。
若寄存控制器100能够通过纠错算法利用冗余码能够对该数据进行纠错,也就是说,该纠错算法的输出结果指示纠错后的数据,说明该内存200中存在的错误为可纠正错误(CE),若无法利用纠错算法和冗余码对该数据进行纠错,也就是说,该纠错算法的输出结果指示无法纠错,说明该内存200中存在的错误为不可纠正错误(UCE)。
通常寄存控制器100从内存200读取的数据大小是以特定值为单位的,也就是说,寄存控制器100一次从内存200读取的、除冗余码之外的数据大小是固定的,等于特定值。该特定值可以等于一个高速缓存块(cacheline)的大小,如64字节(Bytes)。这里特定值所指示的数据大小不包括数据的冗余码,寄存控制器100在一次从内存200中读取特定值大小的数据时,还可以从内存200中读取该数据的冗余码,该冗余码的大小可以为16字节,也即寄存控制器100从内存200中读取的数据的总大小等于冗余码和该数据的总大小,如寄存控制器100一次性从该内存200中读取的数据总大小等于80字节(64字节和16字节之和)。
步骤302:寄存控制器100在检测到内存200中存在UCE时,获取发生UCE的内存地址。该内存地址为错误数据(该错误数据包括数据以及数据的冗余码)的内存地址,该内存地址所指示的存储空间的大小等于特定值与冗余码大小之和,如84字节。
UCE发生的一个原因是因为内存颗粒210中的一个或多个比特位的位置上的硬件(如该位置处的晶体管或电容)损坏,导致该一个或多个比特位上的数据发生错误(这种失效是由于硬件导致的,属于硬失效)。这里该一个或多个比特位即为失效位置,只要对该一个或多个比特位上的数据进行纠错,可以实现对该UCE的纠错。而内存地址仅是指示了发生UCE的一个较大的比特位范围,而该内存地址并不能指示内存颗粒210中具体哪一个比特位失效,也即在步骤302中获取的内存地址并不能精确的定位到失效位置。
为了能够实现UCE纠错,首先需要定位失效位置,该失效位置包括第一失效位置(定位第一失效位置以及对第一失效位置的数据进行纠错的方式参见步骤303~306),可选的,还可以包括第二失效位置(定位第二失效位置以及对第二失效位置的数据进行纠错的方式参见步骤307~310)。
步骤303:寄存控制器100将预设的第一数据存储在内存地址指示的位置。
在执行步骤303之前,寄存控制器100还可以先将该内存地址所指示的位置处存储的原始数据(该原始数据包括数据以及数据的冗余码)读出,将读出的原始数据保证在本地,之后,再将第一数据写入到该内存地址指示的位置处。
从前述对UCE的说明中,可以看出UCE可能是因为硬件损坏导致的,也就是说,对于存储数据或冗余码的内存颗粒210均存在硬件损坏的可能性,若采用如图2A所示的数据写入方式执行步骤303,由于需要先生成第一数据的冗余码,之后将第一数据和第一数据的冗余码存储在该内存地址指示的位置(这种情况下第一数据和第一数据的冗余码的数据长度与该内存地址指示的位置的比特数相同),当冗余码所在的内存颗粒210中存在失效位置时,会导致冗余码存在错误,而后续在从内存地址指示的位置处读取数据时,由于冗余码仅是用于数据纠错的,最终读出的数据将不包括该冗余码,这样会导致无法定位到冗余码所在的内存颗粒210中的失效位置。
为了避免这种情况,尽可能准确的定位到失效位置,寄存控制器100在执行步骤303时,可以不生成该第一数据的冗余码,而是将该第一数据直接存储在该内存地址指示的位置处。也即第一数据的数据长度与该内存地址指示的位置的比特位数相同。
这里并不限定第一数据的具体值,可以为全0的数据,也可以为全1的数据,还可以是由0和1组成的数据。
步骤304:寄存控制器100从内存地址指示的位置处读取第二数据。
当第一数据存储到该内存地址指示的位置处,由于该内存地址指示的位置中存在失效位置,会导致第一数据中存储在该失效位置处的数据发生变化,寄存控制器100从该内存地址指示的位置处读取数据时,读取的数据将不再是第一数据,而是与第一数据存在一定差异的第二数据。
需要说明的是,由于在写入第一数据时,未生成第一数据的冗余码,寄存控制器100在从内存地址指示的位置处读取数据时,也就不需要通过纠错算法利用冗余码进行对读取的数据纠错,也就是说,寄存控制器100从内存地址指示的位置处读出的第二数据是未进行纠错的数据。
步骤305:寄存控制器100比对第一数据和第二数据,确定内存地址所指示的位置中的第一失效位置。
寄存控制器100在获取了第一数据和第二数据之后,可以对第一数据和第二数据进行比对,确定该第一数据和第二数据中不一致的数据,为方便说明,该不一致的数据可以称为第一子数据。该第一子数据所存储的位置即为第一失效位置。
举例来说,第一数据为0000000000000000,第二数据为0100001000100001,则第一子数据为第一数据和第二数据中第2、7、11和16位的数据。该第一子数据所存储的位置为第一数据和第二数据中第2、7、11和16位的数据所存储的位置,也即第一失效位置。
步骤306:寄存控制器100对第一失效位置处存储的原始数据进行纠错。
由于UCE发生分布在多个内存颗粒210上,也就说明,在步骤305中定位的第一失效位置分布在多个内存颗粒210上。
在确定了第一失效位置后,寄存控制器100可以从该内存地址所指示的位置上存储的原始数据(该原始数据为寄存控制器100在执行步骤303之前读取并保存的本地的)确定存储在第一失效位置处的数据,之后,寄存控制器100可以对该第一失效位置处的数据进行纠错。
由于内存颗粒210中的一个或多个比特位的位置上的硬件损坏,可能导致数据0变为数据1,或导致数据1变为数据0,也可能导致存储的数据为固定的数据,例如无论该位置处需要存储0还是1,最终写入的数据均会变成0,又例如,无论该位置处需要存储0还是1,最终写入的数据均会变成0。在对第一失效位置上存储的原始数据进行纠错时,可以对该第一失效上至少一个比特位上的数据进行翻转,以实现数据纠错。下面对本申请实施例提供的两种纠错方式进行说明:
方式一、多次翻转直至获得正确的数据。
寄存控制器100可以只利用数据翻转的方式进行纠错,寄存控制器100可以对原始数据中第一失效位置中部分或全部比特位的数据进行翻转,将0变为1,将1变为0,获得在第一失效位置处所有可能的数据。为方便说明,每一个可能的数据与该内存地址中除第一失效位置外的位置上的数据可以构成一个候选数据,也就是说,寄存控制器100对原始数据中第一失效位置中部分或全部比特位的数据进行一次翻转,会将原始数据转换为一个候选数据。
第一失效位置中包括N个比特位,则在第一失效位置处存储的所有可能的存储的数据会存在2N种形态,也即存在2N个候选数据。例如,第一失效位置包括2个比特位,第一失效位置则会存在4中可能存储的数据,分别为00、11、10、01,每一个可能存储的数据与该内存地址中除第一失效位置外的位置上存储的原始数据构成一个候选数据,生成4个候选数据。
由于原始数据中包括数据以及数据的冗余码,翻转之后形成的候选数据也包括数据和数据的冗余码。寄存控制器100在获取候选数据之后,可以对候选数据进行检错,确定该候选数据是否出错。具体的,寄存控制器100可以重新基于该候选数据中的数据生成一个新的冗余码,通过对新的冗余码与候选数据中的冗余码进行比对,确定该候选数据是否出错;若未出错,则该候选数据为正确的数据,若出错,寄存控制器100可以原始数据中第一失效位置中部分或全部比特位的数据进行一次翻转,将原始数据转换为另一个候选数据,继续对该候选数据进行检错,循环执行上述操作,直至确定出不出错的候选数据。
需要说明的是,在实际应用中,对候选数据进行检错之后,若该候选数据出错,寄存控制器100也可以通过纠错算法利用该候选数据中的冗余码对该候选数据中的数据进行纠错,若对候选数据纠错成功,则纠错后的候选数据为正确的数据,可以停止数据翻转。若对候选数据纠错失败,则可以继续进行数据翻转,获取另一个候选数据,循环上述操作,直至获得正确的数据。
方式二、通过翻转,将UCE转换为CE,再利用纠错算法对CE进行纠错。
当第一失效位置中包含较多的比特位的情况下,采用方式一,会获得数量较多的候选数据,纠错效率会有所降低。
为了进一步提升纠错效率,寄存控制器100可以利用数据翻转的方式将UCE转换为单个内存颗粒210发生的CE,之后,基于纠错算法对CE进行纠错。
具体的,寄存控制器100可以只翻转原始数据中第一失效位置中属于目标内存颗粒至少一个比特位上的数据,将原始数据转换为一个候选数据(该候选数据为翻转后的原始数据),之后,对候选数据进行检错、纠错。这里候选数据包括目标内存颗粒中翻转后的数据以及内存地址中除该目标内存颗粒外的位置上存储的原始数据。
该目标内存颗粒是发生UCE的多个内存颗粒210中的一个内存颗粒210或多个内存颗粒210,这里并不限定目标内存颗粒的确定方式,例如寄存控制器100可以第一失效位置中分布在各个内存颗粒210的比特数最少或比特位小于阈值的内存颗粒210作为目标内存颗粒,又例如,寄存控制器100也可以随机从该多个内存颗粒210中选择内存颗粒210作为目标内存颗粒。
本申请实施例并不限定纠错算法的类型,例如可以为循环冗余校验码(cyclicredundancy check,CRC)算法、Parity算法、RS16、RS32算法。
当发生UCE的多个内存颗粒210的数量为2,寄存控制器100可以从这两个内存颗粒210中选取一个作为目标内存颗粒,之后,对原始数据中第一失效位置中属于目标内存颗粒的数据进行翻转,之后,对翻转后的原始数据进行纠错。
寄存控制器100对原始数据中第一失效位置中属于目标内存颗粒的数据进行翻转的方式可以参见前述内存200,寄存控制器100通过对原始数据中第一失效位置中属于目标内存颗粒的数据进行翻转所能获得的候选数据的数量与该第一失效位置中属于目标内存颗粒的比特数有关。寄存控制器100可以每对原始数据中的第一失效位置中属于目标内存颗粒的数据翻转一次,获得一个候选数据,之后对该候选数据检错,若该候选数据未出错,则该候选数据为正确的数据,若该候选数据出错,寄存控制器100可以对该候选数据进行纠错,当对该候选数据纠错成功,纠错后的候选数据即为正确的数据,这种情况下,可以停止数据翻转;当对该候选数据纠错失败,可以继续进行数据翻转,循环执行上述操作,直至可以获得正确的数据。其中,对候选数据检错以及对候选数据纠错的方式可以参见前述说明此处不再赘述。
当发生UCE的多个内存颗粒210的数量为P(P为大于2的正整数)时,寄存控制器100可以从这P个内存颗粒210中选取Q个内存颗粒210作为目标内存颗粒(Q为小于P的正整数),之后,对第一失效位置中属于目标内存颗粒的原始数据进行翻转,之后,对翻转后的原始数据进行纠错。寄存控制器100对第一失效位置中属于目标内存颗粒的原始数据进行翻转的方式以及纠错的方式可以参见前述说明此处不再赘述。
通过步骤303~步骤306可以定位到第一失效位置,并对第一失效位置处存储的原始数据进行纠错。
在实际应用中,寄存控制器100可以多次执行步骤303~步骤305,每执行一次步骤303~步骤305,可以确定一个第一失效位置,通过比较每次确认的第一失效位置,可以确定第一失效位置是否准确。
以寄存控制器100执行两次步骤303~步骤305为例,寄存控制器100在第一次执行步骤303~步骤305时,确定的第一失效位置为失效位置1;寄存控制器100在第二次执行步骤303~步骤305时,确定的第一失效位置为失效位置2;寄存控制器100可以通过确认失效位置1和失效位置2是否一致来确定所确定的失效位置是否准确。
通常情况下,每次执行步骤303~步骤305确定的第一失效位置均相同,但在一些场景下,如在数据读取或写入的过程,由于内存200中微观粒子的作用引起数据的改变,会导致读取或写入的数据存在数据错误,这种情况下产生的数据错误称为软失效,也即并非是因为硬件损坏导致的失效,软失效具有一定的随机性,也即并不是每次数据读取或写入均会发生。在发生软失效的情况下,会使得寄存控制器100每次确定的第一失效位置存在差异,例如失效位置1与失效位置2相差了一个或多个比特位的位置。该一个或多个比特位的位置即为发生软失效的位置。
鉴于软失效具有随机性的特点,对于存在一个或多个比特位发生软失效的情况,数据纠错难度增大,寄存控制器100可以不对该一个或多个比特位上的数据进行纠错。也就是说,寄存控制器100可以将每次确认的第一失效位置中不包括发送软失效的位置的第一失效位置作为最终的第一失效位置(也即排除了发生软失效的比特位的第一失效位置),基于该最终的第一失效位置执行步骤306;当然,寄存控制器100可以将每次确认的第一失效位置中包括发送软失效的位置的第一失效位置作为最终的第一失效位置(也即该第一失效位置中包括发生软失效的比特位和发送硬失效的比特位),基于该最终的第一失效位置执行步骤306;在当发送软失效的比特位较多的情况下,寄存控制器100也可以放弃执行步骤306。寄存控制器100也可以在确认存在少量比特位(如一个比特位)发生软失效的情况下,将该少量比特位作为第一失效位置中的一部分,执行步骤306。
由于一个比特位所在位置处的硬件损坏,可能会导致该比特位的数据始终为0或始终为1,以该比特位的数据将始终为0为例,若该第一数据中该比特位对应的数据为0,之后读出的第二数据在该比特位的数据也会为0,会导致在步骤305中确认的第一失效位置并不包括该比特位,也即第一失效位置存在遗漏,为了能够保证定位到全部失效位置,寄存控制器100也可以继续执行步骤307~步骤310。
在实际应用中,寄存控制器100也可以不执行步骤307~步骤310,能够加快定位失效位置的速度,提升UCE的纠错效率。
需要说明的是,若寄存控制器100通过比对第一数据和第二数据的第一失效位置包括0个比特位,也即第一数据和第二数据相同。寄存控制器100可以继续执行步骤307~步骤310。
步骤307:寄存控制器100将翻转后的第一数据存储在所述内存地址指示的位置。
步骤308:寄存控制器100从内存地址指示的位置处读取第三数据。
步骤309:寄存控制器100比对翻转后的第一数据和所述第三数据,确定所述位置中的第二失效位置。
该第二失效位置可以包括一个或多个比特位,在一种可能的场景中,该第二失效位置也可以不包括比特位,也即未定位到失效的比特位。
步骤310:寄存控制器100对所述第二失效位置处存储的原始数据进行纠错。
步骤307~310与步骤303~306的方式类似,具体可以参见前述说明,此处不再赘述。
在实际应用中,可以将步骤307~310和步骤303~306结合使用,也即先确定出第一失效位置和第二失效位置,之后再对第一失效位置和第二失效位置处存储的原始数据进行纠错,下面结合如图4,对本申请实施例提供的一种纠错方法进行说明,参见图4,该方法包括:
步骤401:寄存控制器100检测内存200中存在的错误。
步骤402:寄存控制器100在检测内存200中存在UCE的情况下,获取发生UCE的内存地址。
步骤403:寄存控制器100将预设的第一数据存储在内存地址指示的位置。
步骤404:寄存控制器100从内存地址指示的位置处读取第二数据。
步骤405:寄存控制器100比对所述第一数据和所述第二数据,确定所述位置中的第一失效位置。这里并不限定第一失效位置包括的比特位的数量,可以为一个,也可以为多个,在一种可能的场景中,也可以包括0个比特位,也即未定位到失效的比特位。
寄存控制器100可以多次执行步骤403~步骤405以多次确认第一失效位置,并判断是否存在发生软失效的比特位,若存在一个发生软失效的比特位或不存在发生软失效的比特位,可以继续执行如下步骤,否则停止。
步骤406:寄存控制器100将翻转后的第一数据存储在所述内存地址指示的位置。
步骤407:寄存控制器100从内存地址指示的位置处读取第三数据。
步骤408:寄存控制器100比对翻转后的第一数据和所述第三数据,确定所述位置中的第二失效位置。这里并不限定第二失效位置包括的比特位的数量,可以为一个,也可以为多个,在一种可能的场景中,也可以包括0个比特位,也即未定位到失效的比特位。
寄存控制器100可以多次执行步骤406~步骤408,每执行一次确定一个第二失效位置,并判断是否存在发生软失效的比特位,若存在一个发生软失效的比特位或不存在发生软失效的比特位,可以继续执行如下步骤,否则停止。
步骤409:寄存控制器100对失效位置处存储的原始数据进行纠错。该失效位置包括第一失效位置和第二失效位置,寄存控制器100对失效位置处存储的原始数据进行纠错的方式与寄存控制器100对第一失效位置处存储的原始数据进行纠错的方式类似,具体可以参见前述说明,此处不再赘述。
基于与方法实施例同一发明构思,本申请实施例还提供了一种纠错装置,用于执行上述如图3或4所示的方法实施例中寄存控制器执行的方法,相关特征可参见上述方法实施例,此处不再赘述,如图5所示,纠错装置500包括获取单元501、读写单元502以及纠错单元503:
获取单元501,用于在检测到内存中存在不可纠正错误UCE后,获取发生UCE的内存地址;
读写单元502,用于将预设的第一数据存储在内存地址指示的位置处,从位置处读取第二数据;
纠错单元503,用于比对第一数据和第二数据,确定位置中的第一失效位置;以及对第一失效位置处存储的原始数据进行纠错。
在一种可能的实施方式中,读写单元502还可以将第一数据进行翻转,之后将翻转后的第一数据翻转后存储在内存地址指示的位置处,从位置处读取第三数据。
纠错单元503可以比对翻转后的第一数据和第三数据,确定位置中的第二失效位置;以及对第二失效位置处存储的原始数据进行纠错。
在一种可能的实施方式中,读取单元502在将预设的第一数据存储在内存地址指示的位置处之前,可以读取位置处存储的原始数据,保存该原始数据;当纠错单元503在对失效位置处存储的原始数据进行纠错时,可以对原始数据中失效位置处至少一个比特位上的数据进行翻转,获得正确的数据;也可以在对原始数据中的目标数据进行翻转后,对翻转后的原始数据进行纠错,目标数据是失效位置中位于目标内存颗粒的数据,其中,该失效位置包括第一失效位置和第二失效位置。
纠错单元503也可以对该第一失效位置处位于目标颗粒上的至少一个比特位上的原始数据进行翻转,每翻转一次,该内存地址所指示的位置原始数据将转换为一个候选数据,纠错单元503可以利用纠错算法对候选数据进行纠错,若对该候选数据纠错成功,利用该纠错算法纠错后的数据即为正确的数据,否则,继续对该第一失效位置处位于目标内存颗粒上的至少一个比特位上的原始数据继续进行翻转,获得另一个候选数据,再利用纠错算法对该候选数据进行纠错,循环执行,直至能够通过纠错算法获取正确的数据。
在一种可能的实施方式中,纠错单元503在比对第一数据和第二数据,确定位置中的第一失效位置时,可以确定第一数据和第二数据中不一致的第一子数据,第一子数据存储的位置为第一失效位置。
在一种可能的实施方式中,纠错单元503在比对翻转后的第一数据和第三数据,确定位置中的第二失效位置时,可以确定翻转后的第一数据和第三数据中不一致的第二子数据,第二子数据存储的位置为第二失效位置。
在一种可能的实施方式中,读写单元502在将预设的第一数据存储在内存地址指示的位置处时,可以不生成该第一数据的冗余码,将第一数据直接存储在内存地址指示的位置处。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
在一个简单的实施例中,本领域的技术人员可以想到如图3或4所示的实施例中寄存孔控制器可采用图6所示的形式。
如图6所示的装置600,包括至少一个处理单元601、存储器602,可选的,还可以包括通信单元603。
存储器602可以是易失性存储器,例如随机存取存储器;存储器也可以是非易失性存储器,例如只读存储器,快闪存储器,硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器602可以是上述存储器的组合。
本申请实施例中不限定上述处理单元601以及存储器602之间的具体连接介质。
处理单元601可以是通用处理单元、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、人工智能芯片、片上芯片等。该处理单元601可以具有数据收发功能,能够与其他设备进行通信,在如图6装置中,也可以设置独立的数据收发模块,例如通信单元603,用于收发数据;处理单元601在与其他设备进行通信时,可以通过通信单元603进行数据传输,如向内存传输第一数据、或翻转后的第一数据,从内存读取原始数据、第二数据或第三数据。
当所述寄存控制器采用图6所示的形式时,图6中的处理单元601可以通过调用存储器602中存储的计算机执行指令,使得所述目录更新装置可以执行上述任一方法实施例中的所述寄存控制器执行的方法。
具体的,图5的获取单元、读取单元以及纠错单元的功能/实现过程均可以通过图6中的处理单元601调用存储器602中存储的计算机执行指令来实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (14)

1.一种纠错方法,其特征在于,所述方法包括:
在检测到内存中存在不可纠正错误UCE后,获取发生所述UCE的内存地址;
将预设的第一数据存储在所述内存地址指示的位置处,从所述位置处读取第二数据;
比对所述第一数据和所述第二数据,确定所述位置中的第一失效位置;
对所述第一失效位置处存储的原始数据进行纠错。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一数据翻转后存储在所述内存地址指示的位置处,从所述位置处读取所述第三数据;
比对翻转后的所述第一数据和所述第三数据,确定所述位置中的第二失效位置;
对所述第二失效位置处存储的原始数据进行纠错。
3.如权利要求2所述的方法,其特征在于,所述将预设的第一数据存储在所述内存地址指示的位置处之前,还包括:
读取所述位置处存储的原始数据;
对失效位置处存储的原始数据进行纠错,所述失效位置包括所述第一失效位置和所述第二失效位置,包括:
对所述原始数据中所述失效位置处至少一个比特位上的数据进行翻转,获得正确的数据;或
在对所述原始数据中的目标数据进行翻转后,对翻转后的所述原始数据进行纠错,所述目标数据是所述失效位置中位于目标内存颗粒的数据。
4.如权利要求1所述的方法,其特征在于,所述比对所述第一数据和所述第二数据,确定所述位置中的第一失效位置,包括:
确定所述第一数据和所述第二数据中不一致的第一子数据,所述第一子数据存储的位置为所述第一失效位置。
5.如权利要求2所述的方法,其特征在于,所述比对翻转后的所述第一数据和所述第三数据,确定所述位置中的第二失效位置,包括:
确定翻转后的所述第一数据和所述第三数据中不一致的第二子数据,所述第二子数据存储的位置为所述第二失效位置。
6.如权利要求1~5任一所述的方法,其特征在于,所述将预设的第一数据存储在所述内存地址指示的位置处,包括:
在不生成所述第一数据的冗余码的情况下,将所述第一数据直接存储在所述内存地址指示的位置处。
7.一种纠错装置,其特征在于,所述装置包括获取单元、读写单元以及纠错单元:
所述获取单元,用于在检测到内存中存在不可纠正错误UCE后,获取发生所述UCE的内存地址;
所述读写单元,用于将预设的第一数据存储在所述内存地址指示的位置处,从所述位置处读取第二数据;
所述纠错单元,用于比对所述第一数据和所述第二数据,确定所述位置中的第一失效位置;以及对所述第一失效位置处存储的原始数据进行纠错。
8.如权利要求7所述的装置,其特征在于,
所述读写单元,还用于:将所述第一数据翻转后存储在所述内存地址指示的位置处,从所述位置处读取所述第三数据;
所述纠错单元,还用于:比对翻转后的所述第一数据和所述第三数据,确定所述位置中的第二失效位置;以及对所述第二失效位置处存储的原始数据进行纠错。
9.如权利要求8所述的装置,其特征在于,所述读取单元在将预设的第一数据存储在所述内存地址指示的位置处之前,还用于:
读取所述位置处存储的原始数据;
所述纠错单元在对失效位置处存储的原始数据进行纠错,所述失效位置包括所述第一失效位置和所述第二失效位置,具体用于:
对所述原始数据中所述第一失效位置处至少一个比特位上的数据进行翻转,获得正确的数据;或
在对所述原始数据中的目标数据进行翻转后,对翻转后的所述原始数据进行纠错,所述目标数据是所述第一失效位置中位于目标内存颗粒的数据。
10.如权利要求7所述的装置,其特征在于,所述纠错单元在比对所述第一数据和所述第二数据,确定所述位置中的第一失效位置时,具体用于:
确定所述第一数据和所述第二数据中不一致的第一子数据,所述第一子数据存储的位置为所述第一失效位置。
11.如权利要求8所述的装置,其特征在于,所述纠错单元在比对翻转后的所述第一数据和所述第三数据,确定所述位置中的第二失效位置时,具体用于:
确定翻转后的所述第一数据和所述第三数据中不一致的第二子数据,所述第二子数据存储的位置为所述第二失效位置。
12.如权利要求7~11任一所述的装置,其特征在于,所述读写单元在将预设的第一数据存储在所述内存地址指示的位置处时,具体用于:
在不生成所述第一数据的冗余码的情况下,将所述第一数据直接存储在所述内存地址指示的位置处。
13.一种装置,其特征在于,所述设备包括存储器以及处理单元;所述存储器存储有程序指令,所述处理单元读取所述存储器中存储的程序指令,执行如权利要求1~6任一所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至6任一项所述的方法。
CN202011406212.1A 2020-12-03 2020-12-03 一种纠错方法及装置 Pending CN114595090A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202011406212.1A CN114595090A (zh) 2020-12-03 2020-12-03 一种纠错方法及装置
EP21899740.1A EP4246329A4 (en) 2020-12-03 2021-10-14 ERROR CORRECTION METHOD AND DEVICE
PCT/CN2021/123919 WO2022116706A1 (zh) 2020-12-03 2021-10-14 一种纠错方法及装置
US18/327,374 US20230325276A1 (en) 2020-12-03 2023-06-01 Error correction method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011406212.1A CN114595090A (zh) 2020-12-03 2020-12-03 一种纠错方法及装置

Publications (1)

Publication Number Publication Date
CN114595090A true CN114595090A (zh) 2022-06-07

Family

ID=81802430

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011406212.1A Pending CN114595090A (zh) 2020-12-03 2020-12-03 一种纠错方法及装置

Country Status (4)

Country Link
US (1) US20230325276A1 (zh)
EP (1) EP4246329A4 (zh)
CN (1) CN114595090A (zh)
WO (1) WO2022116706A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024041093A1 (zh) * 2022-08-25 2024-02-29 超聚变数字技术有限公司 一种处理内存故障的方法及其相关设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002007225A (ja) * 2000-06-22 2002-01-11 Fujitsu Ltd アドレスパリティエラー処理方法並びに情報処理装置および記憶装置
KR101603099B1 (ko) * 2009-10-01 2016-03-28 삼성전자주식회사 불안정 메모리 셀 산포를 검출하는 메모리 시스템 및 상기 불안정 메모리 셀 산포 검출방법
WO2012039983A1 (en) * 2010-09-24 2012-03-29 Rambus Inc. Memory device with ecc history table
US8707133B2 (en) * 2011-12-05 2014-04-22 Lsi Corporation Method and apparatus to reduce a quantity of error detection/correction bits in memory coupled to a data-protected processor port
US20140047296A1 (en) * 2012-08-09 2014-02-13 Broadcom Corporation Error Correcting Code Design For A Parity Enabled Memory
CN103019873B (zh) * 2012-12-03 2016-08-10 华为技术有限公司 一种存储器故障单元的替换方法及装置、数据存储系统
US20150046772A1 (en) * 2013-08-06 2015-02-12 Sandisk Technologies Inc. Method and device for error correcting code (ecc) error handling
CN103984630B (zh) * 2014-05-27 2017-02-01 中国科学院空间科学与应用研究中心 一种基于at697处理器的单粒子翻转故障处理方法
CN105788648B (zh) * 2014-12-25 2020-09-18 研祥智能科技股份有限公司 基于异构混合内存的nvm坏块识别处理及纠错方法和系统
US10108509B2 (en) * 2015-07-16 2018-10-23 Texas Instruments Incorporated Dynamic enabling of redundant memory cells during operating life
US10025649B2 (en) * 2016-08-25 2018-07-17 Microsoft Technology Licensing, Llc Data error detection in computing systems
JP6799262B2 (ja) * 2017-03-03 2020-12-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11409597B2 (en) * 2017-10-03 2022-08-09 Nvidia Corp. System and methods for hardware-software cooperative pipeline error detection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024041093A1 (zh) * 2022-08-25 2024-02-29 超聚变数字技术有限公司 一种处理内存故障的方法及其相关设备

Also Published As

Publication number Publication date
US20230325276A1 (en) 2023-10-12
EP4246329A1 (en) 2023-09-20
WO2022116706A1 (zh) 2022-06-09
EP4246329A4 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
US20190079836A1 (en) Predictive memory maintenance
US8171377B2 (en) System to improve memory reliability and associated methods
US8869007B2 (en) Three dimensional (3D) memory device sparing
US8352806B2 (en) System to improve memory failure management and associated methods
US8181094B2 (en) System to improve error correction using variable latency and associated methods
KR20190129653A (ko) 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US8185801B2 (en) System to improve error code decoding using historical information and associated methods
CN111625199B (zh) 提升固态硬盘数据通路可靠性的方法、装置、计算机设备及存储介质
US11030040B2 (en) Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system
US9086990B2 (en) Bitline deletion
US10489244B2 (en) Systems and methods for detecting and correcting memory corruptions in software
US20230325276A1 (en) Error correction method and apparatus
US9037948B2 (en) Error correction for memory systems
US11372720B2 (en) Systems and methods for encoding metadata
US7577804B2 (en) Detecting data integrity
US11182231B2 (en) Host system and computing system including the host system
US10740179B2 (en) Memory and method for operating the memory
WO2023093173A1 (zh) 一种内存硬件故障检测方法、装置以及内存控制器
US20230386598A1 (en) Methods for real-time repairing of memory failures caused during operations, memory systems performing repairing methods, and data processing systems including repairing memory systems
WO2023104008A1 (zh) 一种数据纠错方法、装置、内存控制器及系统
US11537467B2 (en) Memory, memory system, and operation method of memory
JP2019149069A (ja) 半導体装置及び半導体メモリの故障検出方法
US11809272B2 (en) Error correction code offload for a serially-attached memory device
US11609813B2 (en) Memory system for selecting counter-error operation through error analysis and data process system including the same
CN116820829A (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