CN109582494A - 使用内部存储器设备代码的存储器控制器错误校验过程 - Google Patents

使用内部存储器设备代码的存储器控制器错误校验过程 Download PDF

Info

Publication number
CN109582494A
CN109582494A CN201811129501.4A CN201811129501A CN109582494A CN 109582494 A CN109582494 A CN 109582494A CN 201811129501 A CN201811129501 A CN 201811129501A CN 109582494 A CN109582494 A CN 109582494A
Authority
CN
China
Prior art keywords
data
memory devices
code
dimm
error checking
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
CN201811129501.4A
Other languages
English (en)
Inventor
K.E.克里斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN109582494A publication Critical patent/CN109582494A/zh
Pending legal-status Critical Current

Links

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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1064Adding 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 cache or content addressable 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/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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

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

Abstract

描述了一种装置。该装置包括用来从存储器设备接收数据的存储器控制器。该存储器控制器包括错误校验逻辑电路。该错误校验逻辑电路用来从存储器设备接收错误校验代码。该错误校验代码是在存储器设备内根据该数据生成的。该错误校验逻辑电路包括用来根据从存储器设备接收到的数据来生成错误校验代码的第二版本并且将所接收到的错误校验代码与错误校验代码的第二版本相比较以了解从存储器控制器接收的该数据是否被损坏的电路。

Description

使用内部存储器设备代码的存储器控制器错误校验过程
技术领域
本发明的领域总体上涉及计算科学,并且更具体地涉及使用内部存储器设备代码的存储器控制器错误校验过程。
背景技术
在许多计算机系统中,一个相关的问题是系统存储器(也被称为“主存储器”)。在这里,正如本技术中所理解的那样,计算系统通过执行存储在系统存储器中的程序代码和从系统存储器读取程序代码对其进行操作的数据/将程序代码对其进行操作的数据写到系统存储器来操作。照此,在计算系统的操作的过程内,许多程序代码和数据读以及许多数据写大量利用系统存储器。因此,寻找提高系统存储器访问性能的方式是计算系统工程师的一个动机。
附图说明
可以结合下面附图从下面的详细描述获得本发明的更好理解,在其中:
图1示出x4 DIMM和x8 DIMM;
图2示出另一组x4和x8 DIMM;
图3a、3b和3c涉及错误校验过程;
图4示出SEC代码;
图5示出错误校验过程;
图6示出计算系统。
具体实施方式
如在本领域中已知的,双列直插式存储器模块(DIMM)被用来实施各种种类的计算系统(例如服务器、个人计算机塔等等)中的系统存储器(也被称为主存储器)。在典型场景中,一个或多个DIMM相应地插入部署在母板上的一个或多个存储器通道连接器中。
图1示出两种不同类型的现有技术DIMM。第一DIMM 110被称为“X4 DIMM”。第二DIMM 120被称为“X8 DIMM”。如在图1中观察到的,每种类型的DIMM 110、120在每个DIMM侧上都包括八个存储器芯片1一直到8。“X4”指示每个存储器设备存在4位并且“X8”指示每个存储器设备存在8位。照此,X4 DIMM 110在DIMM 110的每侧上具有32位数据总线并且X8DIMM在DIMM 120的每侧上具有64位数据总线(不同的DIMM侧都由贯穿在图1中描绘的每个DIMM 110、120的中间的一条虚线分开)。
在这里,DIMM卡110、120要插入的存储器通道具有64位数据总线。该存储器通道通常被设计成具有可以插入存储器通道中的存储器的许多可单独寻址的存储器区块(rank)。照此,整个x4 DIMM 110表现为单个64位区块。相比而言,x8 DIMM 102的每侧表现为64位区块。
DIMM 110、120二者也包括板载ECC芯片。在这里,在各种实现中,存储器通道的64位数据总线还保留用于纠错编码(ECC)信息的8位。如在本领域中已知的,存储器控制器将64位数据字写入存储器芯片1一直到8中的每一个的具体地址。也就是说,在X4 DIMM的情况下,存储器控制器将4个唯一位写入十六个存储器芯片的每一个中(两个DIMM侧上8个芯片),而在X8 DIMM的情况下,存储器控制器将8个唯一位写入八个存储器芯片的每一个中(在DIMM的特定侧上的一组八个存储器芯片)。
在典型系统存储器或主存储器应用中,从系统存储器访问数据单元作为由多个64位字组成的高速缓存行。例如,在被设计成访问512位高速缓存行的计算系统中,从具有来自/去到DIMM的八个读/写突发的特定DIMM读取高速缓存行或者将高速缓存行写到该特定DIMM,在这种情况下每个突发周期包括64位数据字和8位ECC。照此,每个高速缓存行都对应于数据的512位(64 x 8 = 512)和ECC的64字节(8 x 8 = 64)。在这里,在高速缓存行写过程期间,存储器控制器根据写数据的512位来计算64位EEC值并且在每个突发周期将ECC的8位切片存储到DIMM中。
在这里,ECC信息可以被看作其值是512位高速缓存行数据的特定位模式的函数的具体代码。在高速缓存行写的任何突发周期期间,在与64位数据字相同的存储器地址处的写过程期间将ECC信息的8位连同64位数据字一起存储在DIMM上的ECC存储器中。因此,对于单个突发周期的至DIMM的完整写操作不仅包括将64位数据字写到DIMM上,而且还包括将对于字的ECC信息的8位写到DIMM上。在各个实现中,应用于系统存储器的物理地址为每个高速缓存行的各个突发保留三个低阶位并且高阶位指定高速缓存行的系统存储器地址。
如果存储器控制器接收到对先前写的高速缓存行的后续读取请求,则存储器控制器将向DIMM发出对高速缓存行的突发读请求,这导致DIMM卡为每个突发周期不仅供应64位数据字,而且供应与连同数据字一起存储的ECC信息的8位切片。在接收到512但高速缓存行时(在8个突发周期后),存储器控制器从512位高速缓存行重新计算ECC信息,并将其与从DIMM读取的8个读取突发累积的64位ECC信息进行比较。如果新计算的ECC信息与从DIMM读取的64位ECC信息相匹配,则从DIMM读取的高速缓存行被认为是无错误的,并被转发给请求字的计算系统的任何一个单元(例如CPU核、GPU、网络接口等等)。
如果新计算的ECC信息与从DIMM读取的ECC信息不匹配,则存储器控制器将识别到在高速缓存行或从DIMM读取的ECC信息中存在某种种类的损坏。然而,可以将512位高速缓存行和64位ECC信息处理成“恢复”丢失的信息以使得可以由存储器控制器重建正确的512位高速缓存行以及对应的正确ECC信息。因此,即使在从DIMM读取的信息中存在损坏,也可以完全地恢复损坏并且可以将正确的512位高速缓存行转发至计算系统的请求它的任一个单元。
关于前面提到的突发,在双倍数据速率(DDR)存储器通道(诸如具有由联合电子器件工程委员会规范限定的特性的DDR存储器通道(例如DDR4))的情况下,每个时钟周期存在两个这样的读/写周期(一个读/写周期在时钟的上升沿上并且一个读/写周期在时钟的下降沿上)。如上面最后所描述的,为了产生512位高速缓存行,现有技术的x4 DIMM在8个周期内执行512位突发(16个存储器设备×每个存储器设备4位×每个突发8个周期=每个突发512位)。相比之下,为了产生512位高速缓存行,现有技术的x8 DIMM在8个周期内执行512位突发(8个存储器设备×每个存储器设备8位×每个突发8个周期=每个突发512位)。
JEDEC是颁布存储器通道和连接到它们的设备(诸如DIMM和存储器控制器)的工程规范的工业标准组 (最近的JEDEC存储器通道已通常被称为“DDR”存储器通道,因为它们被设计用于如上述的时钟信号的上升和下降沿二者上的时钟数据)。
图1的现有技术DIMM卡110、120指示两个ECC存储器设备被部署在DIMM卡110、120上。然而,未来的JEDEC DDR存储器通道旨在改变访问DIMM卡的方式。特别地,未来的JEDECDDR存储器通道将强调更少位宽度的更长突发。图2示出较新的x4和x8 DIMM 210、220的逻辑视角。如可以在图2中看到的,x4 DIMM 210和x8 DIMM 220二者都可以被视为支持32位传递而不是64位传递(位宽度在逻辑上被减半)。然而,尽管位宽度在逻辑上被减半,但是每个突发的周期数目从8个周期增加至16个周期。照此,用于新的x4 DIMM 210的512位高速缓存行被实现为8个存储器设备×每个存储器设备4位×每个突发16个周期。对于新的x8 DIMM220,512位高速缓存行被实现为4个存储器设备×每个存储器设备的8位×每个突发的16个周期。
DIMM的逻辑视角中的变化包括对于x4 DIMM的ECC信息的从每传递8位到每传递4位的相应变化。也就是说, x4 DIMM的每个传递,ECC信息(比如位宽度)已被切半。ECC位宽度的减少对应于对存储在x4 DIMM的板载ECC存储器设备上的ECC信息的更少保护。此外,即使新的x8 DIMM可以存储每个突发8位ECC信息,但在各个实施例中,x8 DIMM将使用相应地导致更少错误保护覆盖的x4 DIMM ECC代码。与x4 DIMM相比,对于x8 DIMM的新的和旧的DDR技术二者中的错误覆盖都要小一些,因为当x8 DIMM失败时需要纠正的数据是当x4DIMM失败时需要纠正的数据的两倍。
然而,认为板上存储器ECC信息的松弛允许可接受的性能,因为较新的DIMM上的每个存储器芯片都将包括它们自己的内部ECC功能230(为便于绘制图2,仅明确标记一个内部存储器ECC功能230)。
照此,存储器芯片它们自己将能够恢复从它们自己的内部存储器阵列读取的被损坏的数据,以便由存储器芯片给出正确的数据,即使它们自己的内部存储器阵列给出被损坏的数据。在图1的现有技术DIMM 110、120的情况下,源自存储器芯片阵列的数据损坏只能由存储器控制器利用存储在DIMM的板载ECC存储器芯片中的ECC信息的来纠正。
然而,在各个实施例中,集成在存储器管芯上的ECC功能230是不能从多位错误恢复的单纠错(SEC)代码。例如,在一个实现中,每个存储器芯片的存储单元阵列被分成例如128位的区,并且存储器芯片为每个不同的128位区保持唯一的内部SEC代码。在这里,每个SEC代码可以从128位区中的单位错误恢复,但是不能从128位区中的两个或更多位中的错误恢复(在至存储器芯片中的标称写过程期间,存储器芯片在内部为写数据被写入的特定128位区计算新的SEC值)。
较新的DIMM卡210、220因此在单个存储器设备在存储器读期间生成多于一个错误的情况下提出了错误恢复挑战。在这里,存储器设备将无法纠正多位错误(因为它使用SEC代码),并且板载ECC存储器设备保护可能由于其减少的信息内容而无法纠正该错误。
照此,在存储器设备自身不能纠正的来自单个存储器设备的多位错误的情况下,读取数据和板载ECC信息的存储器控制器的处理将能够检测错误存在但不能标识错误在哪里。也就是说,在来自特定存储器设备的不能被存储器设备纠正的多位错误的情况下,来自DIMM的板载ECC存储器设备的有限ECC信息能够标识已经出现错误但是不能标识哪个存储器设备已生成多位错误。
图3a、3b和3c关于可以由存储器控制器301利用驻留在DIMM 320上的不仅用来标识DIMM 320上的哪个存储器设备已生成多位错误而且还恢复丢失数据(利用正确数据来替换被损坏的数据)的纠错信息来执行的读错误恢复过程。为了便于讨论,下面的示例将关于读取数据的每个突发传递具有四个存储器设备(不算ECC)的x8 DIMM 220、320。
在读操作之前,参考图3a,假设存储器控制器301包括用来生成ECC代码P的ECC生成逻辑电路,对于存储在DIMM 320上的每个存储器字该ECC代码P被写入DIMM的板载ECC存储器321中。在这里,在x8 DIMM 320的情况下,每个存储器字由四个八位数据成分D0、D1、D2和D3组成(每个存储器芯片一个八位数据成分)。在一个实施例中,由存储器控制器301生成的ECC代码P可以被表述为:
P = S0(D0) + S1(D1) + S2(D3) + S4(D4) 等式1
在这里:1)Dx是被写的高速缓存行D的第一、第二、第三或第四成分,在这里D1对应于在需要全写高速缓存行的突发内写入第一存储器设备中的信息,D2对应于在需要全写高速缓存行的突发内写入第二存储器设备中的信息,D3对应于在需要全写高速缓存行的突发内写入第三存储器设备中的信息,并且D4对应于在需要全写高速缓存行的突发内写入第四存储器设备中的信息;2)Sx(Dx)是施加于作为x的函数的Dx的唯一置乱(例如偏移量);3)运算“+”对应于按位XOR。在这里,应该显而易见的是,x可以是对于每个传递采用4个存储器设备的x8 DIMM的0、1、2 或3中的任一个(x的值表示四个存储器设备中的具体一个)。
如在图3a中观察到的,在多个突发中执行DIMM卡320的读取1以照例利用来自每个存储器设备的数据字实现对于每个突发周期的高速缓存行的完整传递,该数据字是与由存储器控制器附加至该数据字的ECC代码P的切片同时读取的。在每个传递采用四个存储器设备的x8 DIMM 320的情况下,读高速缓存行是D = D0、D1、D2、D3,在这里D0是在多个突发内从DIMM 320上的第一存储器设备读取的信息,D1是在多个突发内从DIMM 320上的第二存储器设备读取的信息,D2是在多个突发内从DIMM 320上的第三存储器设备读取的信息,并且D3是在多个突发内从DIMM 320上的第四存储器设备读取的信息。另外,在多个突发内从DIMM 320上的ECC存储器设备321读取对于高速缓存行D的ECC代码P。(来自DDR5中的每个x8设备的128b)。
在从DIMM 320读取1数据字D以及其代码P之后,存储器控制器的错误校验逻辑电路302从刚刚从DIMM读取的高速缓存行D重新计算2 ECC代码字P’并且将其与刚刚从DIMM读取的ECC代码字P相比较。在这里,错误校验逻辑电路302的第一逻辑电路303被设计成例如执行上面等式1的公式。如果P’= P,则不存在数据损坏并且将高速缓存行D转发至数据的请求者。然而,如果P’≠ P,则存在需要由错误校验逻辑电路302解决的数据损坏。在这里,再次假设所检测到的错误是来自DIMM 320上的存储器设备中的一个的多位错误(因为存储器设备将能够在内部纠正任何单位错误)。
在一个实施例中,ECC代码P/P’不能自己确定哪个存储器生成损坏。也就是说,不能仅仅从P和P’的分析来确定D0、D1、D2或D3中的哪个包含多位错误。
照此,参考图3b,由存储器控制器从DIMM 320上的每个存储器设备读取3由每个存储器设备的内部SEC功能生成的SEC代码。从上面回想到,在实施例中,每个存储器设备存储对于存储器设备的内部存储单元阵列的每128位数据区的SEC代码。在x8 DIMM的情况下,在实施例中,每个SEC代码是8位。在从任何存储器设备读取数据时,存储器设备在内部重新计算对于来自目标读取数据作为其成分的128区的目标读取数据的SEC代码。该存储器设备将对于128位区的重新计算的SEC代码与所存储的对于128位区的SEC代码相比较。如果代码匹配则存储器设备将推断不存在错误并且将不尝试任何纠正(它将简单转发读取数据)。
因此重申,如果在图3a的基于最初读取1和P的ECC校验2之后,存储器控制器301确定存储器设备之一必定已生成多位错误(P≠P),则参考图3b,恢复过程的下一阶段需要读取3该SEC代码SEC0、SEC1、SEC2和SEC3,这些代码被存储在用于D0、D1、D2和D3在DIMM 320上的它们的相应存储器设备内相对应的相应128位区的每一个的存储器设备内(针对其计算SEC值的存储器芯片上的每个128位区是在写入高速缓存行的存储器设备的8位写数据的16个突发内计算的)。
在这里,在各个实施例中,也许由存储器设备生成的多位错误的多达一半都不能用存储器设备的内部SEC代码来校正,但是,这种错误仍然可以用存储器设备的内部SEC代码来检测(当ECC是SEC代码时,所有多位错误不能由存储器设备ECC来校正,但大约一半是可检测的,其他是漏掉的纠正(miss-correction))。也就是说,存储器设备的内部SEC功能可以利用SEC代码检测到存在错误但是不能纠正错误。在这里,如果“SEC”是针对128位区最初存储的SEC代码并且对于来自128位区的读取操作重新计算的代码是“SEC’”,则存储器设备将至少能够检测到SEC ≠ SEC’。
照此,在一个实施例中,利用最初存储的SEC0、SEC1、SEC2和SEC3代码的读取3,存储器控制器301(也具有用来执行存储器设备的内部SEC功能的逻辑电路304)可以从所接收的数据段D0、D1、D2和D3重新计算4 SEC0’、SEC1’、SEC2’和SEC3’(可以通过将SEC功能应用于D0来计算SEC0’、可以通过将SEC功能应用于D1来计算SEC1’、等等)。在这里,在存储器设备中的仅一个已生成多位错误的场景中,SEC代码对中的仅一个将不匹配。例如,如果SEC0≠ SEC0’,则存储器控制器的错误校验逻辑电路303将识别到存储器设备0已经生成多位错误,如果SEC1 ≠ SEC1’,则存储器控制器的错误校验逻辑电路302将识别到存储器设备1已经生成多位错误,等等。
当出错的存储器设备已知时,可以使用P以及应用于失败的存储器设备的数据的自定义置乱的p和反向应用来恢复被损坏的数据。也就是说,如果存储器设备0生成错误,则:
P’ = S0(D0 + e) + S1(D1) + S2(D3) + S4(D4) 等式2
在这里D0 是对于存储器设备0的正确数据并且e是当利用正确数据D0按位异或时导致针对存储器设备0接收到的被损坏的数据成分的损坏值。换句话说,如果从存储器设备0接收到的被损坏的数据是,则=D0 XOR e。在置乱函数S0是分布式的情况下,等式2可以被表述为:
P’ = S0(D0 ) + S0(e) + S1(D1) + S2(D3) + S4(D4) 等式3
采用P(从DIMM 320上的ECC存储器读取的值)和P’的值(由电路303在图3a的过程2期间重新计算的ECC值)的差,产生:
P’ – P = S0(e) 等式4。
也就是说,采用P’和P的差产生根据为存储器设备0保留的自定义置乱而置乱的损坏值e。因此将自定义置乱的逆应用于P’和P的差产生e(即,)。根据e,可以通过对和e执行XOR来恢复D0。也就是说,(XOR的逆是XOR)。
读者应该理解,存储器设备0作为生成被损坏的数据的存储器设备的使用仅仅是一个示例并且如果其他存储器设备中的任一个被认为是提供损坏结果的存储器设备,则可以将相同的过程用于其他存储器设备中的任一个。在恢复过程中的不同存储器设备之间的唯一差别是为每个存储器设备保留的自定义逆置乱。上面提出的方法还可以纠正因为除了内部存储器设备错误之外的原因引起的单位错误(例如物理存储器通道上的位翻转)。
还有必要指出,例如,作为一种形式的纠错加速,如果存储器设备检测到它不能纠正的内部错误,则可以将某一形式的元数据设置在图3a的最初读取1中以向存储器控制器301通知存储器设备已经检测到不能纠正的错误(例如可将具体消息发布在存储器通道的CA总线上)。在存储器控制器301识别到刚刚从其读取的存储器设备已经检测到它不能校正的错误的情况下,存储器控制器301可以在不必等待错误校验逻辑电路302确定P’≠ P的情况下立即发布SEC信息的读取3。
前面的示例描述了在其中可以由存储器控制器301来标识出错的存储器设备(该示例中的存储器0)的一个过程,该存储器控制器301对它从每个存储器设备接收的数据重新执行4内部存储器的SEC算法并且将它与每个存储器设备利用其内部SEC功能为其相应数据生成的内部SEC代码信息相比较。如上面阐述的,在大约一半的多位错误情况中,这两种代码(SEC和SEC’)将是不同的,这导致直接标识出错的存储器设备。
然而,多位错误情况的另一“半”导致两个SEC代码SEC’和SEC匹配(在存储器控制器301处以及在存储器设备中)。也就是说,即使在存储器设备的读取数据中存在多位错误,对于正确数据和被损坏的数据二者来说SEC代码是相同的(它是SEC代码的限制的一部分,它仅用来解决单位错误)。然而,仍可以处理SEC代码生成算法(H)和由存储器设备返回的数据以隔离存储器设备中的包含多位错误中的那个。
在这里,如本领域中已知的,纠错代码(诸如存储器设备的内部SEC代码)的生成包括要被编码的数据(例如存储器内128位区的数据)与矩阵H的在矩阵的行或列的每个交点中具有1或0的二进制值的逐位乘法。
在这里,例如,矩阵H的每行的位模式指示奇偶校验方程的系数的存在(1)或不存在(0)(照此,每一行都表示编码过程中的不同奇偶校验方程),在这种情况下,对于要为数据生成的具体代码中的每位都存在唯一的奇偶校验方程。因此,如果要为数据生成8位代码,则H矩阵具有8行。另外,在共用H矩阵结构中,矩阵H具有等于被编码的数据的位数和编码器要为数据生成的代码的位数的列数。
因此,例如,如果SEC代码要为数据的128位生成8位SEC代码,则H矩阵具有8个行(每个奇偶校验方程或所生成的SEC代码中每位一个)以及134个列(128个列用于被编码的数据的每位并且8位用于要针对数据生成的SEC代码的每位)。在从数学上将矩阵H应用于被编码的数据之后(例如在矩阵乘法操作中),生成8位SEC代码。在图4中提供这样的H矩阵的一个示例。
在SEC代码甚至无法标识多位错误的存在的情况下,因为从存储器设备的存储阵列读取的SEC代码与由存储器控制器生成的对应SEC代码匹配,所以对于图4的SEC矩阵H,如果出错的存储器设备只生成2位或3位错误,则存储器控制器仍然可以通过执行以下操作来恢复丢失的数据:
等式5
在这里:1)H’是前面提到的SEC矩阵H但是对于被移除的SEC代码位具有(例如8个)列;2)e是错误项,当与生成错误的存储器设备的正确数据异或时该错误项产生针对该存储器设备而接收到的损坏数据;3)是对于存储器设备m的逆自定义置乱;4)是对于存储器设备n的自定义置乱;以及4)d是存储器设备的数目。执行等式5的操作将产生结果得到的矩阵的位置的极小值(例如0),在这种情况下m=n=出错的存储器设备(极小值的位置标识出错的存储器设备)。
当出错的存储器设备已知时,可以通过应用上面关于等式4描述的相同方法来纠正针对该存储器设备接收到的被损坏的数据。因此,可以移除来自单个存储器设备的多位错误,即使由读取数据生成的SEC代码和与读取数据存储在一起的SEC代码彼此不匹配。
在甚至更多错误的情况下(诸如来自使用图4的SEC代码的相同存储器设备的多于三个错误或来自多于一个存储器设备的错误),在各个实施例中,这样的错误将更多地反映严重的硬件问题,而不是名义上的DRAM位翻转和系统内的偶尔/预期的软错误。
照此,参考图3c,存储器控制器的错误校验电路302进一步包括内建自测试(BIST)逻辑电路305。在这里,该存储器控制器301进入BIST模式,如果对于数据字D P’≠P,则对于所有存储器设备SEC’ = SEC,并且上面关于等式5描述的恢复过程的执行不会在结果得到的阵列中的任何位置中产生期望的极小值。在BIST模式进入的情况下,存储器控制器301将已知数据模式写入DIMM 320的存储器设备中并且然后从DIMM 320将它们读取回去。
在这里,在任一个或多个存储器设备(或更大存储器通道/系统)的严重硬件失败的情况下,BIST操作的结果应该披露(哪个或哪些)存储器设备没有可靠地操作。
尽管上面的示例主要依赖于的x8 DIMM的使用,但是读者应该理解可以将这些示例的教导容易地应用于x4 DIMM或由具有不同于四位或八位的位宽度的存储器设备组成的其他DIMM。另外,尽管如上面所述的那样,上面的示例讨论了单个数据字D,但是该单个数据字D可以是许多(例如16)个中的一个。
在存储器控制器301的任一个的以上描述中,可以利用部署在半导体芯片上的逻辑电路实施错误校验电路302或其部件。逻辑电路可以包括专用自定义硬连线逻辑电路、可编程逻辑电路(例如现场可编程门阵列(FPGA)逻辑电路、可编程逻辑阵列(PLA)逻辑电路等等)或者执行程序代码(例如嵌入式处理器逻辑电路、嵌入式控制器逻辑电路)的逻辑电路、或其任何组合。
图5示出上述的方法。如在图5中观察到的,该方法包括从DIMM读取501数据和ECC代码。该数据包括由DIMM上的相应存储器设备提供的数据成分。该ECC代码是由DIMM上的相应存储器设备提供的。该方法还包括根据数据成分重新计算502 ECC代码的第二版本。该重新计算包括将不同数据置乱应用于数据成分中的不同成分。该方法还包括识别503ECC代码和ECC代码的第二版本不匹配。该方法还包括从存储器设备接收504相应ECC代码以便纠正数据中的损坏。相应的ECC代码是最初在存储器设备内生成的。
图6示出可以表示上述服务器中的任一个的基本计算系统的基本模型。如在图6中观察到的,基本计算系统600可以包括中央处理单元601(其可以包括例如多个通用处理核615_1一直到615_X)以及部署在多核处理器或应用程序处理器上的主存储器控制器617、系统存储器602、显示器603(例如触摸屏、平板)、本地连线点对点链路(例如USB)接口604、各种网络I/O功能605(诸如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如WiFi)接口606、无线点对点链路(例如蓝牙)接口607和全球定位系统接口608、各种传感器609_1一直到609_Y、一个或多个相机610、电池611、功率管理控制单元612、扬声器和麦克风613和音频编码器/解码器614。
应用程序处理器或多核处理器650可以包括在其CPU 601内的一个或多个通用处理核615、一个或多个图形处理单元616、存储器管理功能617(例如存储器控制器)和I/O控制功能618。该通用处理核615通常执行计算系统的操作系统和应用程序软件。该图形处理单元616通常执行图形密集功能以例如生成呈现在显示器603上的图形信息。该存储器控制功能617与系统存储器602交互以将数据写到系统存储器602/从系统存储器602读数据。功率管理控制单元612通常控制系统600的功率消耗。
该存储器控制功能617(存储器控制器)可以包括错误校验逻辑电路,如上文详细讨论的那样其可以使用从其读取/其写入的存储器设备的内部错误校验代码来恢复丢失的数据。
触摸屏显示器603、通信接口604-1107、GPS接口608、传感器609、(一个或多个)相机610、和扬声器/麦克风编解码器613、614中的每一个都可以被视为与整个计算系统有关的各种形式的I/O(输入和/或输出),在适当的情况下该整个计算系统还包括集成外围设备(例如一个或多个相机610)。依据实现,这些I/O部件中的各个部件可以被集成在应用程序处理器/多核处理器650上或者可以定位成离开应用程序处理器/多核处理器650的管芯或位于应用程序处理器/多核处理器650的封装之外。
该计算系统还可以包括具有多个级的系统存储器(也被称为主存储器)。例如,第一(较快的)系统存储器级可以利用DRAM来实现并且第二(较慢的)系统存储器可以利用新兴的非易失性存储器(诸如其存储单元由氧族化合物、电阻存储器(RRAM)、铁电体存储器(FeFRAM)等等组成的非易失性存储器)来实现。新兴的非易失性存储器技术具有比传统FLASH更快的存取时间并且因此可以以系统存储器角色来使用而不是仅仅归入大容量存储装置。
在处理器的通用CPU核(或具有用来执行程序代码的指令执行管线的其他功能块)上执行的软件和/或固件可以执行上述功能中的任一个。
本发明的实施例可以包括上面阐述的各种过程。这些过程可以以机器可执行指令来体现。指令可以被用来使通用或专用处理器执行某些过程。备选地,这些过程可以由包含用于执行过程的硬连线逻辑的专用硬件部件或被编程的计算机部件和自定义硬件部件的任何组合来执行。
本发明的元件还可以被提供为用于存储机器可执行指令的机器可读介质。该机器可读介质可以包括但不限于软磁盘、光盘、CD-ROM和磁光盘、闪速存储器、ROM、 RAM、EPROM、EEPROM、磁卡或光学卡、传播介质或适用于存储电子指令的其他类型的介质/机器可读介质。例如,本发明可以被下载为计算机程序,可以经由通信链路(例如调制解调器或网络连接)以嵌入载波或其他传播介质中的数据信号的方式来将计算机程序从远程计算机(例如服务器)传递至请求计算机(例如客户端)。
在前述说明书中,已经参考其具体示例性实施例描述了本发明。然而,将显然的是可以在不偏离如由所附权利要求阐述的本发明的更广阔精神和范围的情况下对其作出各种修改和改变。相应地,可以以说明性而非限制性的意义来看待说明书和绘图。

Claims (20)

1.一种装置,包括:
用来从存储器设备接收数据的存储器控制器,该存储器控制器包括错误校验逻辑电路,该错误校验逻辑电路用来从存储器设备接收错误校验代码,该错误校验代码是在存储器设备内根据该数据生成的,该错误校验逻辑电路包括用来根据从存储器设备接收到的数据来生成错误校验代码的第二版本并且将所接收到的错误校验代码与错误校验代码的第二版本相比较以了解从存储器控制器接收的该数据是否被损坏的电路。
2.根据权利要求1所述的装置,其中该存储器设备被部署在x4 DIMM上。
3.根据权利要求1所述的装置,其中该存储器设备被部署在x8 DIMM上。
4.根据权利要求1所述的装置,其中该错误校验代码是SEC代码。
5.根据权利要求1所述的装置,其中该数据是在多个数据读取突发中接收的。
6.根据权利要求1所述的装置,其中该错误校验逻辑电路进一步包括ECC代码生成电路,其用来根据从存储器设备接收的数据以及从与存储器设备相同的DIMM上的其他存储器设备接收的数据的其他成分来生成ECC代码。
7.根据权利要求6所述的装置,其中存储器控制器响应于ECC代码以及从对于该数据的DIMM以及数据的不匹配的其他成分读取的对应ECC代码来接收错误校验代码。
8.根据权利要求7所述的装置,其中如果对于每个存储器设备的错误校验代码的对应第二版本与从存储器设备以及其他存储器设备接收的每个对应错误校验代码匹配,则错误校验逻辑电路将为第一个存储器设备定制的第一置乱的逆应用于为被损坏的接收到的数据的第二个存储器设备定制的第二置乱。
9.根据权利要求6所述的装置,其中该错误校验逻辑电路用来通过将不同的数据置乱应用于存储器设备和其他存储器设备的相应数据来实施ECC代码。
10.根据权利要求1所述的装置,其中该错误校验逻辑电路用来在不能使用错误校验代码纠正被损坏的数据的情况下应用BIST序列。
11.一种计算系统,包括:
多个处理核:
包括DIMM的主存储器;
耦合至DIMM的存储器控制器,该存储器控制器用来从存储器设备接收数据,该存储器控制器包括错误校验逻辑电路,该错误校验逻辑电路用来从存储器设备接收错误校验代码,该错误校验代码是在存储器设备内根据该数据生成的,该错误校验逻辑电路包括用来根据从存储器设备接收到的数据来生成错误校验代码的第二版本并且将所接收到的错误校验代码与错误校验代码的第二版本相比较以了解从存储器控制器接收的该数据是否被损坏的电路。
12.根据权利要求1所述的计算系统,其中该存储器设备被部署在x4 DIMM上。
13.根据权利要求1所述的计算系统,其中该存储器设备被部署在x8 DIMM上。
14.根据权利要求1所述的计算系统,其中该错误校验代码是SEC代码。
15.根据权利要求1所述的计算系统,其中该数据是在多个读取数据读取突发中接收的。
16.根据权利要求1所述的计算系统,其中该错误校验逻辑电路进一步包括ECC代码生成电路,其用来根据从存储器设备接收的数据以及从与存储器设备相同的DIMM上的其他存储器设备接收的数据的其他成分来生成ECC代码。
17.一种方法,包括:
从DIMM读取数据和ECC代码,该数据包括由DIMM上的相应存储器设备提供的数据成分,该ECC代码由DIMM上的相应存储器设备来提供;
根据数据成分重新计算ECC代码的第二版本,该重新计算包括将不同数据置乱应用于数据成分的不同成分;
识别ECC代码与ECC代码的第二版本不匹配;以及
从存储器设备接收相应ECC代码以便纠正数据中的损坏,该相应ECC代码最初是关于存储器设备内的数据生成的。
18.根据权利要求17所述的方法,其中该DIMM是x4 DIMM。
19.根据权利要求17所述的方法,其中该DIMM是x8 DIMM。
20.根据权利要求17所述的方法,其中该错误校验代码是SEC代码。
CN201811129501.4A 2017-09-29 2018-09-27 使用内部存储器设备代码的存储器控制器错误校验过程 Pending CN109582494A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/721,252 US10606690B2 (en) 2017-09-29 2017-09-29 Memory controller error checking process using internal memory device codes
US15/721252 2017-09-29

Publications (1)

Publication Number Publication Date
CN109582494A true CN109582494A (zh) 2019-04-05

Family

ID=63528513

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811129501.4A Pending CN109582494A (zh) 2017-09-29 2018-09-27 使用内部存储器设备代码的存储器控制器错误校验过程

Country Status (3)

Country Link
US (1) US10606690B2 (zh)
EP (1) EP3462318B1 (zh)
CN (1) CN109582494A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214347A (zh) * 2019-07-12 2021-01-12 美光科技公司 产生用于存储器子系统中的数据修改期间的错误检测的错误校验数据
CN114207592A (zh) * 2019-08-05 2022-03-18 赛普拉斯半导体公司 用于错误检测和校正的方法以及对应的系统和设备

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200081045A (ko) * 2018-12-27 2020-07-07 삼성전자주식회사 3차원 적층 메모리 장치 및 그 동작 방법
US11675660B2 (en) * 2019-05-24 2023-06-13 Texas Instruments Incorporated Parallelized scrubbing transactions
US11404136B2 (en) * 2020-12-16 2022-08-02 Micron Technology, Inc. Memory device protection using interleaved multibit symbols

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817095A (en) * 1987-05-15 1989-03-28 Digital Equipment Corporation Byte write error code method and apparatus
US5922080A (en) * 1996-05-29 1999-07-13 Compaq Computer Corporation, Inc. Method and apparatus for performing error detection and correction with memory devices
US20080005646A1 (en) * 2006-06-30 2008-01-03 Bains Kuljit S Reliability, availability, and serviceability in a memory device
US20100005376A1 (en) * 2008-07-02 2010-01-07 Micron Technology, Inc. Method and apparatus for repairing high capacity/high bandwidth memory devices
US20110010603A1 (en) * 2009-07-13 2011-01-13 Silicon Motion, Inc. Method for preventing data shift errors and controller using the same
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
CN102272730A (zh) * 2008-10-09 2011-12-07 美光科技公司 经虚拟化错误校正码nand
US20150278004A1 (en) * 2012-11-02 2015-10-01 Hewlett-Packard Development Company, L.P. Efficient and Reliable Memory Systems with Adaptive ECC and Granularity Switching
CN105190766A (zh) * 2013-03-25 2015-12-23 惠普发展公司,有限责任合伙企业 具有错误纠正逻辑的存储器设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5267241A (en) 1990-04-04 1993-11-30 Avasem Corporation Error correction code dynamic range control system
US8261159B1 (en) * 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
KR101401379B1 (ko) * 2010-10-13 2014-05-30 한국전자통신연구원 낸드 플래시 메모리의 데이터 입출력 방법과 그 방법을 이용한 임베디드 시스템
US9459955B2 (en) * 2012-05-24 2016-10-04 Sandisk Technologies Llc System and method to scramble data based on a scramble key
US20140122777A1 (en) * 2012-10-31 2014-05-01 Mosaid Technologies Incorporated Flash memory controller having multi mode pin-out
US9099173B2 (en) * 2012-12-14 2015-08-04 Virtium Technology, Inc. Classifying flash devices using ECC
KR101862379B1 (ko) * 2013-04-19 2018-07-05 삼성전자주식회사 Ecc 동작과 리던던시 리페어 동작을 공유하는 메모리 장치
US9754684B2 (en) 2014-11-06 2017-09-05 Samsung Electronics Co., Ltd. Completely utilizing hamming distance for SECDED based ECC DIMMs
KR20170012675A (ko) * 2015-07-22 2017-02-03 삼성전자주식회사 컴퓨팅 시스템 및 그것의 데이터 전송 방법
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US20180358989A1 (en) * 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817095A (en) * 1987-05-15 1989-03-28 Digital Equipment Corporation Byte write error code method and apparatus
US5922080A (en) * 1996-05-29 1999-07-13 Compaq Computer Corporation, Inc. Method and apparatus for performing error detection and correction with memory devices
US20080005646A1 (en) * 2006-06-30 2008-01-03 Bains Kuljit S Reliability, availability, and serviceability in a memory device
US20100005376A1 (en) * 2008-07-02 2010-01-07 Micron Technology, Inc. Method and apparatus for repairing high capacity/high bandwidth memory devices
CN102272730A (zh) * 2008-10-09 2011-12-07 美光科技公司 经虚拟化错误校正码nand
US20110010603A1 (en) * 2009-07-13 2011-01-13 Silicon Motion, Inc. Method for preventing data shift errors and controller using the same
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US20150278004A1 (en) * 2012-11-02 2015-10-01 Hewlett-Packard Development Company, L.P. Efficient and Reliable Memory Systems with Adaptive ECC and Granularity Switching
CN105190766A (zh) * 2013-03-25 2015-12-23 惠普发展公司,有限责任合伙企业 具有错误纠正逻辑的存储器设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吕小微;: "基于FPGA的NAND Flash ECC校验", 电子科技, vol. 24, no. 06, 15 June 2011 (2011-06-15), pages 34 - 37 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214347A (zh) * 2019-07-12 2021-01-12 美光科技公司 产生用于存储器子系统中的数据修改期间的错误检测的错误校验数据
CN114207592A (zh) * 2019-08-05 2022-03-18 赛普拉斯半导体公司 用于错误检测和校正的方法以及对应的系统和设备

Also Published As

Publication number Publication date
EP3462318B1 (en) 2020-12-30
US10606690B2 (en) 2020-03-31
US20190102246A1 (en) 2019-04-04
EP3462318A1 (en) 2019-04-03

Similar Documents

Publication Publication Date Title
CN109582494A (zh) 使用内部存储器设备代码的存储器控制器错误校验过程
KR101750662B1 (ko) 데이터 에러 교정용 회로, 장치, 및 방법
CN108292248B (zh) 存储器系统中的单独链路和阵列纠错
US10108512B2 (en) Validation of memory on-die error correction code
US7149945B2 (en) Systems and methods for providing error correction code testing functionality
CN104347122B (zh) 一种消息式内存模组的访存方法和装置
CN107924705A (zh) 存储器装置错误校验和清除模式以及错误透明度
US10546649B2 (en) Post package repair for mapping to a memory failure pattern
US8812934B2 (en) Techniques for storing bits in memory cells having stuck-at faults
US8255771B2 (en) Memory device repair apparatus, systems, and methods
US10795763B2 (en) Memory system and error correcting method thereof
KR20170109568A (ko) Ecc(error correcting code)의 저장에 전용되는 ecc 저장 유닛에의 데이터 표시자(들)의 저장을 지원하는 dimm들(dual in-line memory modules)
US9507662B2 (en) Expanded error correction codes
KR20170054182A (ko) 반도체 장치
US20170123892A1 (en) Parity check circuit and memory device including the same
US10777294B2 (en) DRAM-level error injection and tracking
US9875085B2 (en) Memory system and method of generating a seed value
US10275307B2 (en) Detection of error patterns in memory dies
US7401269B2 (en) Systems and methods for scripting data errors to facilitate verification of error detection or correction code functionality
TWI514400B (zh) 記憶體裝置修護技術
US9183952B2 (en) Apparatuses and methods for compressing data received over multiple memory accesses
US11010304B2 (en) Memory with reduced exposure to manufacturing related data corruption errors
KR20170143084A (ko) 반도체장치 및 반도체시스템
TW201923572A (zh) 記憶模組
JP2011243249A (ja) 不揮発性メモリ

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