CN104246898B - 局部错误检测和全局错误纠正 - Google Patents

局部错误检测和全局错误纠正 Download PDF

Info

Publication number
CN104246898B
CN104246898B CN201280072858.8A CN201280072858A CN104246898B CN 104246898 B CN104246898 B CN 104246898B CN 201280072858 A CN201280072858 A CN 201280072858A CN 104246898 B CN104246898 B CN 104246898B
Authority
CN
China
Prior art keywords
gec
cache line
data
chip
error
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.)
Expired - Fee Related
Application number
CN201280072858.8A
Other languages
English (en)
Other versions
CN104246898A (zh
Inventor
A.N.乌迪皮
N.穆拉利马诺哈
N.P.朱皮
A.L.戴维斯
R.巴拉苏布拉莫尼安
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN104246898A publication Critical patent/CN104246898A/zh
Application granted granted Critical
Publication of CN104246898B publication Critical patent/CN104246898B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/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
    • 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
    • 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/44Indication or identification of errors, e.g. for repair
    • 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/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

系统可使用局部错误检测(LED)和全局错误纠正(GEC)信息来检查数据保真度并纠正错误。可每与存储器的区块相关的数据的高速缓存线段地计算LED。可响应于存储器读操作而基于LED信息来检查数据保真度,以识别在区块的高速缓存线段当中的错误的存在和错误的位置。响应于识别出错误而基于GEC来纠正有所述错误的高速缓存线段。

Description

局部错误检测和全局错误纠正
技术领域
本发明涉及一种局部错误检测和全局错误纠正的方法。
背景技术
存储器系统可靠性是在现代服务器和刀片服务器中的严重和增长中的忧虑。现有的存储器保护机制需要下列项中的一个或多个:在每次存储器存取时大量芯片的激活、增加的存取粒度和存储开销的增加。这些导致增加的动态随机存取存储器(DRAM)存取时间、降低的系统性能和很大程度上更高的能量消耗。当前的商业芯片删除(chipkill)级可靠性机制可基于常规纠错码(ECC),例如里德-所罗门(RS)码、基于符号的码等。然而,当前ECC码将存储器系统设计限制到x4 DRAM的使用。此外,对于给定的容量,具有窄芯片(即,I/ODRAM x4芯片)的双列直插式存储器模块(DIMM)比具有较宽的I/O芯片(即,x8、x16或x32芯片)的DIMM消耗更多的能量。
有效的芯片删除机制的该不可用性是宽输入/输出(I/O)DRAM的采用不足的一个原因,尽管有它们提供的优点。其次,当前ECC码在大数据字上被计算以增加编码效率。该ECC码处理导致大存取粒度——为每个存储器操作激活大量芯片或甚至区块(区块),以及增加的能量消耗。面积、密度和成本约束可在某种程度上导致在芯片区块内的过取(overfetch),而强加额外的低效率以便提供容错应被避免。该处理可潜在地减小组(组)级和区块级并行性,这降低了DRAM将数据提供到例如光子信道的高带宽I/O的能力。最后,常规ECC码使用从时延和电路面积两方面来说效率低的复杂的伽罗瓦域算术。
发明内容
本发明的一个方面涉及一种局部错误检测和全局错误纠正的方法,包括:基于错误检测码,按与存储器的区块相关的数据的高速缓存线段计算局部错误检测LED信息;基于纠错码来产生用于所述高速缓存线段的全局错误纠正GEC;响应于存储器读操作而基于所述LED信息来检查数据保真度,以识别在所述区块的高速缓存线段当中的错误的存在和所述错误的位置;以及响应于识别出所述错误而基于所述GEC来纠正有所述错误的高速缓存线段。
本发明的另一个方面涉及一种局部错误检测和全局错误纠正的方法,包括:响应于存储器读操作而基于在高速缓存线段上计算的错误检测码来执行局部错误检测LED,以检测在区块中的N个数据芯片当中的芯片粒度的错误的位置;响应于检测到所述错误而在所述区块中的所述N个数据芯片上的所述高速缓存线段上执行全局错误纠正GEC,所述GEC基于纠错码来产生GEC信息;以及基于无错误段和所述GEC信息来重构有所述错误的数据段。
本发明的另一个方面涉及一种存储器控制器,其:响应于读操作,而基于针对与存储器的区块相关的数据的高速缓存线段的局部错误检测LED信息来验证数据保真度;根据所述LED信息来识别在所述区块的高速缓存线段当中的错误的存在和位置;基于纠错码来产生针对所述高速缓存线段的全局错误纠正GEC;以及响应于识别出所述错误,而基于所述GEC来纠正有所述错误的高速缓存线段。
附图说明
图1是包括根据例子的存储器控制器的系统的方框图。
图2是根据例子的存储器模块的方框图。
图3是根据例子的存储器模块区块的方框图。
图4是根据例子的包括多余比特的高速缓存线的方框图。
图5是根据例子的基于检查数据保真度的流程图。
图6是根据例子的基于执行错误检测和/或纠正的流程图。
具体实施方式
本文描述的例子可使用分离出错误检测和错误纠正功能的两层级保护方案。诸如基于校验和与奇偶性的那些的码可有效地用于在有很少或没有开销的情况下提供强容错。例如系统固件的存储装置可用于指导存储器控制器将一些纠正码存储在DRAM数据存储器中。存储器控制器可被修改以处理数据映射、错误检测和纠正。错误检测/纠正码的新颖应用和到存储器的新颖物理数据映射可允许商用存储器模块(例如ECC DIMM x4、x8、x16、x32等)提供芯片删除功能,而不增加取指令宽度和/或存储开销。此外,可通过将数据和ECC码放置在同一行缓冲器中来进一步提高局部性和DRAM行缓冲器命中率。因此,提供了有效的容错机制,其实现强可靠性保证,激活尽可能少的芯片以节约能量并提高性能,减小电路复杂性,并与例如x8、x16或x32的宽I/O DRAM芯片一起工作。
图1是根据例子的包括存储器控制器102的系统100的方框图。系统100响应于存储器读操作140来应用局部错误检测120和/或全局错误纠正130,以检测和/或纠正存储器的区块 112的高速缓存线段119的错误104。
在例子中,系统100计算数据的每高速缓存线段119的局部错误检测(LED)120信息。高速缓存线段119与存储器的区块 112相关。基于错误检测码来计算LED 120。系统100基于全局奇偶性来产生高速缓存线段的全局错误纠正(GEC)。系统100响应于存储器读操作140而基于LED 120信息来检查数据保真度,以在区块 112的高速缓存线段119当中识别错误104的存在和错误104的位置。系统100响应于识别出错误104而基于GEC来纠正有错误104的高速缓存线段119。
在可替代的例子中,系统100响应于存储器读操作140而基于在高速缓存线段119上计算的校验和来执行局部错误检测(LED)120,以在区块 112中的N个数据芯片当中检测芯片粒度的错误104的位置。系统100响应于检测到错误104而在区块 112中的N个数据芯片上的高速缓存线段119上执行全局错误纠正(GEC)130。系统100使用全局奇偶性来执行GEC130以产生GEC信息,并基于无错误段和GEC信息来重构有错误104的数据段119。
因此,系统100可使用简单的校验和奇偶性操作来在下至段119的粒度水平构建两层容错机制。第一层保护是局部错误检测(LED)120——检查(例如在读操作140之后的立即检查)以验证数据保真度。LED 120可通过跨存储器模块中的多个芯片分布LED信息120来提供芯片级错误检测(对于芯片删除,即,经得起整个DRAM芯片的故障的能力)。因此,LED信息120可不仅与作为整体的每个高速缓存线而且与每个高速缓存线“段”——即在区块中的单个芯片中存在的线的片断——相关。
相对短的校验和(1的补码、弗莱彻(Fletcher)和,或其它)可用作错误检测码,并可在段上被计算并附加到数据。错误检测码可基于其它类型的错误检测和/或错误保护码,例如循环冗余校验(CRC)、Bose、Ray-Chaudhuri和Hocquenghem(BCH)码等。该错误检测码可存储在同一存储器行中或不同的行中以包含几个高速缓存线的这样的LED信息。层1保护(LED 120)可不仅检测错误的存在,而且精确指出错误的位置,即,找出与错误104相关的芯片或其它位置信息。
如果LED 120检测到错误,则第二层保护——全局错误纠正(GEC)130——可被应用。GEC 130可基于奇偶性,例如跨区块 112中的N个数据芯片上的数据段119的基于异或的全局奇偶性。GEC 130也可基于其它错误检测和/或错误保护码,例如CRC、BCH等。GEC结果可存储在与数据段相同的行中或在分离的行中以包含针对几个数据行的GEC信息。可基于读出无故障段和GEC段以及位置信息(例如基于LED 120对出故障的芯片的识别)来重构数据。
可在单个高速缓存线中在数据字上计算LED 120和GEC 130。因此,当脏线(dirtyline)从处理器被写回到存储器时,不需要执行“写前读”(read-before-write),且两个码都可被直接计算,从而避免对写性能的影响。此外,考虑到可为了纠错码(ECC)目的而提供有限冗余存储的商用存储器系统,LED 120和/或GEC 130可存储在常规数据存储器中。额外的读/写操作连同处理器请求的读/写一起可用于存取该信息。将LED信息存储在每行内的所提供的存储空间中可使它能够与数据线串接地被读和写。GEC信息可存储在单独的高速缓存线中的数据存储器中,因为它可在错误数据读取的非常罕见的情况下被存取。适当的数据映射可将此定位在与数据相同的行缓冲器中以增加局部性和命中率。
存储器控制器102可提供数据映射、LED 120/GEC 130计算和验证,如果需要则执行额外的读,等等。因此,系统100可透明地提供完整功能,而不需要通知和/或修改操作系统(OS)或其它计算系统部件。可通过与系统固件相关的少量修改来处理留出一些数据存储器以存储LED 120/GEC 130,从而例如减小用于从OS和应用角度透明地容纳所存储的LED120/GEC 130的可用存储器存储的报告量。
图2是根据例子的存储器模块210的方框图。存储器模块210可与存储器控制器202通过接口连接。存储器模块210可以是电子设备工程联合委员会(JEDEC)式双数据率(DDRx,其中x=1, 2, 3, …)存储器模块,例如被配置为双列直插式存储器模块(DIMM)的同步动态随机存取存储器(SDRAM)。每个DIMM可包括至少一个区块 212,且区块 212可包括多个DRAM芯片216。示出两个区块 212,每个区块 212包括九个芯片216。区块 212可分成多个组214,每个组跨区块 212中的芯片216分布。虽然一个组 214被示为跨越区块中的芯片,但是区块可分成例如4-16个组。芯片216中的每个区块 212/组 214的部分是段219。当存储器控制器202发出对高速缓存线的请求时,在区块 212中的芯片216被激活,且每个段219贡献所请求的高速缓存线的一部分。因此,高速缓存线跨多个芯片216成带状。
在具有64比特的数据总线宽度和64字节的高速缓存线的例子中,高速缓存线传送可基于8个数据传送的突发来实现。芯片可以是xN部分,例如x4、x8、x16、x32等。组 214的每个段可被分区成N个阵列218(示出四个)。每个阵列218可将单个比特贡献于那个芯片216的数据I/O管脚上的N比特传送。因此,对于给定DIMM容量,使用较宽的I/O DRAM部分(例如x8、x16或x32)可减小实现给定数据总线宽度所需的DRAM芯片216的数量,DIMM上产生额外的空间用于更多芯片216,从而增加可用的独立组 214的数量。
每个芯片216可用于存储数据211、来自LED 220的信息和来自GEC 230的信息。因此,每个芯片216可包含数据211、LED 220和GEC 230信息的段219。这与常规9芯片ECC存储器模块如何被使用是相对的,其中8个芯片用于数据,且第9个芯片用于ECC信息。因此,本文描述的示例性使用提供鲁棒的芯片删除保护,因为为了识别和纠正错误的目的,每个芯片可包括数据211、LED 220和GEC 230。图2的例子示出具有九个x8芯片的仅仅单个区块的功能,其提高存取粒度、能量消耗和性能。此外,例子可支持在非常高的比率的芯片删除保护,例如处理在9个中的1个死芯片(dead chip)的能力,从而明显提高可靠性保证(与例如在36个中的1个死芯片的常规支持相对的)。
本文描述的例子可允许每存储器存取所激活的芯片的数量的几倍减小。这帮助通过将过取至少在那个程度上消除来减小动态能量消耗,并帮助通过允许未使用的芯片被置于低功率模式中来减小静态能量消耗。除了能量优点以外,减小存取粒度增加了区块级和组级并行性。这实现相当大的性能增益。本文描述的例子对DRAM部分、DIMM布局、DDR协议、突发长度等不强加限制,并可适合于x8、x16或x32 DRAM,允许服务器利用那些存储器配置的优点。例子可利用对系统设计的非侵入性修改来实现,因为示例性存储器控制器和在较小的程度的存储器固件可被修改以提供对例子的支持。例子可利用加法校验和及奇偶性计算以提供强容错,而没有对在16比特或32比特符号上的伽罗瓦域算术或其它增加的复杂性、时延和能量消耗的需要。
因此,本文的例子提供益处而没有对特别设计的DRAM芯片微架构的需要,所述特别设计的DRAM芯片微架构例如具有被提供来存储ECC信息的特殊区域并利用局部化数据映射架构的DRAM,如果芯片删除级可靠性被实现,则局部化数据映射架构将对写性能强加显著惩罚。此外,没有对使用具有关于DIMM和区块组织的约束的常规基于符号的ECC码的需要。例子是实现友好的,而没有对计算系统的几个部件进行修改的需要,因为例子对计算系统的操作系统、存储器管理单元、高速缓存等可以是透明的。
图3是根据例子的存储器模块区块 312的方框图。区块 312可包括N个芯片,例如九个x8 DRAM芯片316(芯片0…芯片8)和为8的突发长度。在可替代的例子中,可在不同级的xN和突发长度处使用N个芯片的其它数量/组合。可遍及区块 312的芯片316分布数据311、LED 320和GEC 330。
LED 320可在每个读操作之后执行中间检查以验证数据保真度。此外,LED 320可在区块 312内的芯片粒度识别故障的位置。为了确保这样的芯片级检测(可用于芯片删除),LED 320可被维持在与比作为整体的整个高速缓存线更多的特殊性相关的芯片级处(如在基于符号的ECC码中那样),维持在每个高速缓存线“段”——在区块 312中的单个芯片316中存在的线的片断——处。高速缓存线A分成段A0到A8,其具有相关的局部错误检测码LA0到LA8
高速缓存线可与数据的64字节或512个数据比特相关,与例如存储器请求的数据操作相关。因为需要总共512个数据比特(一个高速缓存线),所以每个芯片向高速缓存线提供57比特。具有为8的突发长度的x8芯片每存取提供64比特,其被解释为数据的57比特(例如图3中的A0)和与那些57比特相关的LED信息320的7比特(LA0)。物理数据映射策略可用于确保它们保护的LED比特320和数据段311位于同一芯片316上。对于每576比特,存储器的一个比特看来好像保持未使用,因为数据的57比特乘以9个芯片是513比特,且只有512比特需要存储高速缓存线。然而,该“多余比特”用作第二层保护(例如GEC)的部分,其细节参考图4被描述。
由于LED码320,对读或写没有性能惩罚。每个高速缓存线存取也读/写它的相应LED信息。因为LED 320是“自含式的”,即,它由属于确切地一个高速缓存线的比特构造,不需要写前读——用于构建码的所有比特在写之前已经在存储器控制器处。针对LED 320的错误检测码的选择可取决于预期的故障模式。例如,简单的1的补码加法校验和可用于一定范围的预期故障模式,包括存储器故障的最常见/频繁的模式。
一旦LED 320(层1码)检测到错误并指示错误的位置,也被称为层2全局纠错码的GEC 330帮助恢复丢失的数据。层2 GEC 330可由三个层级组成。GEC 330码可以是57比特实体,并可作为九个高速缓存线段的列式异或奇偶性被提供,每个高速缓存线段是来自数据区的57比特域。对于高速缓存线A,例如它的GEC 330可以是奇偶性,例如奇偶性PA,其为数据段A0、A1…A8的异或。从GEC 330码的数据重构可以是非资源密集操作(例如无错误段和GEC 330码的异或),因为错误的芯片316可被LED 320标记。因为没有对额外的专用ECC芯片的需要(通常用作在存储器模块区块 312上的ECC芯片的事物替代地用于存储数据+LED320),所以与使用专用ECC芯片相对地,GEC码可存储在数据存储器本身中。可用存储器可通过固件修改或其它技术从操作系统的角度被制造成看来好像比它在物理上更小(例如小了用于存储LED 320和/或GEC 330的12.5%开销)。存储器控制器也可知道变化以适应LED 320和/或GEC 330,并可相应地映射数据(例如进行映射以使LED 320和/或GEC 330对OS、应用等变得透明)。
为了提供用于芯片删除的在九个中的一个死芯片316的强容错,并最小化在每次存取时接触的芯片316的数量,GEC 330码可被放置在与其相应的高速缓存线相同的区块中。在区块 312中的九个芯片316中的每个中的特殊保留区(图3中的轻阴影GEC 330)可为了该目的而被留出。特别保留的区可以是在每个DRAM页(行)中的高速缓存线的子集,虽然为了清楚它被示为在图3中的行的不同集合。该共位(colocation)可确保在对GEC 330信息的任何读或写结合对实际数据高速缓存线的读或写被做出时将被保证产生行缓冲器命中,因而减小对性能的任何潜在影响。
图4是根据例子的包括多余比特436的高速缓存线413的方框图。GEC 430信息可布置在跨N个芯片(例如芯片0…8)的保留区中,例如作为也在图3所示的高速缓存线A。高速缓存线413也可包括奇偶性432、分层奇偶性434和多余比特436。
类似于如图3所示的数据比特,57比特GEC 430可分布在所有N(即,九)个芯片419当中。PA域的前7比特(PA0-6)可存储在第一芯片416(芯片0)中,接下来的七个比特(PA7-13)可存储在第二芯片(芯片1)中,依此类推。比特PA49-55可存储在第八芯片(芯片7)上。最后一比特PA56可在多余比特436中存储在第九芯片(芯片8)上。可从第N芯片(芯片8)的数据+LED区借多余比特436,如上面关于使用可用的513个比特(57比特x9个芯片)中的仅仅512比特来存储高速缓存线所阐述的。
芯片416的故障也导致在存储在该芯片中的GEC 430信息中的相应比特的丢失。GEC 430码PA本身因此被也被称为第三层级PPA的额外奇偶性432保护。在所示例子中的PPA是7比特域,并且是N-1个其它7比特域PA0-6、PA7-13…PA49-55的异或。奇偶性432(PPA域)被示为存储在第N(第九)芯片(芯片8)上。如果整个芯片416出故障,则GEC 430首先使用与来自其它芯片的未破坏的GEC段组合的奇偶性432而恢复。可基于LED来确定未破坏的芯片416,这可包括错误的位置的指示,即,找出有故障的芯片。完整GEC 430接着用于重构原始数据。
除了完全出故障的芯片错误以外,还可能有在第二芯片中的错误。本文描述的例子实现在各种故障模型之下的对这样的故障的检测,如果不纠正的话。如果第二错误也是完全芯片故障,则它连同读取的初始数据一起将被LED检测到,并被标记为双芯片故障。然而,如果第二错误仅仅出现在感兴趣的GEC 430行中,则它可在GEC阶段期间被检测到。
在示例性故障情景中,假设第二芯片完全出故障——A1,且PA7-13将丢失。如果此外在第一芯片的GEC区中有错误,则存在比特PA0-6中的一个或多个被破坏的可能性。来自PPA432的丢失的比特PA7-13和PA0-6、PA14-20、PA21-27…PA56的重构可能本身是不正确的。为了处理该问题,分层奇偶性434被使用,例如九个芯片416的其余9个比特(在图4中对层级4标记为T4)用于通过PA55和PPA跨GEC比特PA0构建错误检测码。注意,确切的错误位置信息和纠正能力在该阶段都不是需要的,因为可靠性目标仅仅是检测第二错误,且不必纠正它。因此可使用来自不同芯片的比特的各种置换来构建码以形成每个T4比特434。这可包括来自同一芯片416的多个比特和来自跨芯片416的不同列的比特以最大化检测的概率。
在另一例子中,考虑单个高速缓存线A。回顾芯片0-7(不失一般性地,例如N-1个芯片)可包含在数据区中的LED的7比特加上数据的57比特,以及在GEC区中的T4信息(分层奇偶性434)的1比特加上GEC 430奇偶性的7比特。芯片8(第N芯片)可包含在数据区中的一个多余比特436加上数据的56比特加上LED的7比特,以及在GEC区中的T4信息的一比特加上奇偶性的8比特(包括从数据区借的多余比特)。
如果前八个芯片之一(例如第二芯片)出故障,则除了GEC奇偶性信息PA7-13以外,数据(A1)的57比特也丢失。丢失的信息可通过读取A0-A8来恢复,且与A1(LA1)相关的LED指示芯片错误。读取GEC段PA0-6、PA14-20、PA21-27…PA49-55、PA56和PPA以恢复丢失的GEC比特PA7-13,从而重构GEC奇偶性PA。与值A0和A2-A7组合的数据值A1可被重构,因而恢复整个原始高速缓存线。然而如果第九芯片出故障,则除了PPA和多余比特PA56以外,只有数据的56比特将丢失(A8)。丢失的56比特可从存储在前八个芯片(PA0-55)中的奇偶性的56列恢复,因而恢复整个原始高速缓存线。多余比特PA56的丢失是无关紧要的。跨这些情况地,GEC奇偶性比特本身的保真度由分层奇偶性434 T4保证。
读操作不需要存取GEC 430信息,除非错误被检测到,这是罕见的事件。GEC 430因此对读没有明显影响。至于写操作,当数据被修改时,GEC 430可被更新(这包括Px、PPx和T4)。在基线实现中,每个高速缓存线写可转换成两个写——一个到数据位置(针对数据+LED+多余比特的全部576比特)且另一个到它的相应GEC位置(72比特)。虽然GEC+T4码的72比特可在每进行写时更新,但是其它约束(例如DDR3协议)可在每进行存取时与完成为8的突发(例如数据的整个72字节“高速缓存线”)相关。因此,更新可作为例如多达8个不同的GEC更新被组合到单个写命令中,以减小一些性能影响。这是低开销,因为写已经被缓冲和间歇地从存储器控制器流式流出,且额外的逻辑可容易在该阶段实现以合并尽可能多的GEC写。性能影响进一步被最小化,因为一旦数据线被写入,数据映射就确保GEC写是行缓冲器命中的。此外,注意,没有对数据高速缓存线本身的写前读的需要,因为对GEC码做贡献的比特来自已经在控制器处可用的单个高速缓存线。这进一步最小化性能影响。如果完全合并没有实现(基于被写到的地址),则数据掩蔽可用来将适当的比特写入存储器中。注意,尽管如此,为8的完整突发可被执行,一些数据片在实际写入DRAM时恰好被掩蔽。
在所有这些考虑的情况下,每个写转换成1+δ个写,对于某个片断δ<1,这取决于应用的存取特性。注意,在非合并的基线实现中δ=1,且在意义模糊的设计中δ=0.125,因为八个GEC字适合单个“高速缓存线”,并可潜在地合并成单个写。
在九个芯片(N=9)的示例性实现中,对于在具有九个x8芯片的区块中的每个64字节(512比特)高速缓存线,可使用下面的比特:LED信息的63比特,以每芯片7比特;GEC奇偶性的57比特,跨九个芯片的扩展;第三级奇偶性PPx的7比特;以及T4保护的9比特,每芯片1比特。这合计达高速缓存线的512比特中的总共136比特,26.5%的存储开销。在这26.5%中,12.5%可由被添加到标准ECC DIMM的第九芯片提供(例如使第九芯片变得可用于一般用途,而不是保留它用于标准的仅ECC操作),且其它14%存储在GEC区中的数据存储器中。
本文描述的例子可应用于较宽-I/O DRAM部分,其与较大的功率效率和较大的区块级并行性相关。将为x16 DRAM提供特定的例子,且类似的技术可用于将概念扩展到x32DRAM和以上。
考虑九个x16 DRAM的区块。在为8的突发中由x16 DRAM提供的128比特可被解释为114个数据比特和14个校验和LED比特,具有与使用x8 DRAM类似的存储开销。GEC操作可保持不变。虽然可能有存取粒度和过取的增加,但是存储开销可在大约25%(LED+GEC)处保持不变。
如果存取粒度固定在确切地一个高速缓存线处(即,64比特总线),则具有x16芯片的最小区块大小是5个芯片(4个数据加上1个 ECC)。每个芯片每为8的突发提供128比特,其被解释为103个数据比特(因为103*4个芯片=512比特高速缓存线)。这每芯片留25比特以存储LED码,其提供非常强的错误保护,但可能浪费存储区域(开销将是24%)。GEC开销也可能增加,因为全局奇偶性是在四个103比特数据段上计算的103比特实体,有25%的存储开销,总开销大约是50%。
如果存储开销被优先考虑,则它可固定在大约12.5%处,有存取粒度的增加的折衷。使用x16芯片和5芯片区块,例如9个读可被连续发出,读出总共每周期80比特*8个周期的突发*9个存取=5,760比特。这导致10个高速缓存线(5120比特)加上它们的LED码的非常大的存取粒度,有12.5%的存储开销。对于37.5%的总ECC存储开销,GEC开销保持大约25%(4个芯片中的1个)。
如果存取粒度和存储开销都没有被损害,但有实现定制DIMM的自由,则可使用在单个DIMM 区块内的异构DRAM的用途。在这种情况中,最小存取粒度可被维持,同时仍然保持12.5%的存储开销。使用例如x16部分,最小大小的区块将是四个x16 DRAM加上一个x8DRAM(注意,DRAM仍然是商品,只是不是DIMM),从而提供72比特的DIMM宽度。使用为8的突发长度,每个x16 DRAM提供128比特且x8 DRAM提供64比特。这些应分别被解释为(114数据+14LED)和(56数据+8 LED)。将没有对GEC开销或操作的改变。
因此,存在要改变的几个选项,包括存储开销、存取粒度的重要性(一般与在工作负荷中的存取局部性有关)和构建异构DIMM的意愿——随着例如x16或x32的宽I/O部分由于其减小的功率消耗而变成主流。本文描述的例子足够灵活,从而在具有变化的组合和这些选项的变化的设计中是有效的。
与传统芯片删除机制比较,可通过动态和静态功率二者的减小来实现相当大的功率节约。可能激活服务于请求所需的最小绝对数量的芯片,例如仅仅9个x8芯片,其例如在标准8-突发存取中读/写确切地一个64字节高速缓存线。这与可引起强制预取并增加动态功率消耗(例如通过在每次读/写时激活额外的芯片、在每标准8-突发存取时存取多个高速缓存线)的常规芯片删除解决方案是相对的。本文提供的例子也可实现激活功率的减小,因为每芯片行缓冲器的大小可以是不变的,但较少的芯片被激活。激活功率也可从x4芯片到x8芯片减小,因为较少的芯片构成区块。每次激活的覆盖区也可减小,从而允许未使用的区块/组转变到低功率模式,例如可被快速进入和退出的浅低功率模式。
除了大能量优点以外,减小存取粒度也对性能有正面影响。对于在系统中给定总数量的芯片,存在增加的区块级和组级并行性。这可减少组冲突和总平均存储器存取时延。该增益的一部分可能由于所需的对GEC线的额外写入连同常规写入而丢失。尽管有该开销,但例子可仍然处于领先,即使没有进行合并。
图5是根据例子的基于检查数据保真度的流程图500。在块510中,基于错误检测码,每与存储器的区块相关的数据的高速缓存线段地计算局部误差检测(LED)信息。在块520中,基于全局奇偶性为高速缓存线段产生全局错误纠正(GEC)。在块530中,响应于存储器读操作而基于LED信息来检查数据保真度,以识别在区块的高速缓存线段当中错误的存在和错误的位置。在块540中,响应于识别出错误而基于GEC来纠正有所述错误的高速缓存线段。
图6是根据例子的基于执行错误检测和/或纠正的流程图600。在块610中,响应于存储器读操作而基于在高速缓存线段上计算的校验和来执行局部错误检测(LED),以在区块中的N个数据芯片当中检测在芯片粒度的错误的位置。在块620中,响应于检测到错误而在区块中的N个数据芯片上的高速缓存线段上执行全局错误纠正(GEC),GEC使用全局奇偶性来执行以产生GEC信息。在块630中,基于无错误段和GEC信息来重构有错误的数据段。在块640中,响应于写操作来更新GEC信息。在块650中,产生分层奇偶性以保护GEC信息,其中分层奇偶性存储在第N芯片上并用于基于来自多个芯片的GEC信息段来恢复GEC信息。

Claims (15)

1.一种局部错误检测和全局错误纠正的方法,包括:
基于错误检测码,按与存储器的区块相关的数据的高速缓存线段计算局部错误检测LED信息;
基于纠错码来产生用于所述高速缓存线段的全局错误纠正GEC;
响应于存储器读操作而基于所述LED信息来检查数据保真度,以识别在所述区块的高速缓存线段当中的错误的存在和所述错误的位置;以及
响应于识别出所述错误而基于所述GEC来纠正有所述错误的高速缓存线段。
2.如权利要求1所述的方法,还包括合并与相邻高速缓存线相关的要被一起发送的多个GEC更新。
3.如权利要求1所述的方法,其中所述错误检测码识别在所述区块的高速缓存线段内的错误的存在和所述错误的位置。
4.如权利要求1所述的方法,还包括将针对与所述数据相关的所述高速缓存线段计算的所述LED信息和所述GEC存储在所述高速缓存线段处。
5.如权利要求1所述的方法,还包括将针对所述高速缓存线段计算的所述LED信息和所述GEC存储在与相关于所述数据的存储器行不同的存储器行中。
6.一种局部错误检测和全局错误纠正的方法,包括:
响应于存储器读操作而基于在高速缓存线段上计算的错误检测码来执行局部错误检测LED,以检测在区块中的N个数据芯片当中的芯片粒度的错误的位置;
响应于检测到所述错误而在所述区块中的所述N个数据芯片上的所述高速缓存线段上执行全局错误纠正GEC,所述GEC基于纠错码来产生GEC信息;以及
基于无错误段和所述GEC信息来重构有所述错误的数据段。
7.如权利要求6所述的方法,其中对相邻高速缓存线的多个GEC更新被合并且一起被发送。
8.如权利要求6所述的方法,其中所述纠错码基于N个高速缓存线段。
9.如权利要求6所述的方法,还包括响应于写操作来更新所述GEC信息。
10.如权利要求6所述的方法,还包括将所述GEC信息存储在所述N个数据芯片的每个中的保留区中的相应高速缓存线的行缓冲器中。
11.如权利要求6所述的方法,还包括基于物理数据映射策略将数据和相应的LED信息存储在所述区块的每个芯片上;以及响应于高速缓存线存取请求来提供所述数据和LED信息。
12.如权利要求6所述的方法,还包括产生分层纠错码来保护所述GEC信息,其中所述分层纠错码存储在所述N个数据芯片中的给定芯片上并用于基于来自多个芯片的GEC信息段来恢复所述GEC信息。
13.如权利要求12所述的方法,还包括基于在GEC阶段期间基于所述分层纠错码检测到感兴趣的GEC行中的错误,来识别不可纠正的双芯片故障。
14.一种存储器控制器,其:
响应于读操作,而基于针对与存储器的区块相关的数据的高速缓存线段的局部错误检测LED信息来验证数据保真度;
根据所述LED信息来识别在所述区块的高速缓存线段当中的错误的存在和位置;
基于纠错码来产生针对所述高速缓存线段的全局错误纠正GEC;以及
响应于识别出所述错误,而基于所述GEC来纠正有所述错误的高速缓存线段。
15.如权利要求14所述的存储器控制器,其中所述LED信息和GEC信息根据与所述存储器控制器相关的固件信息而被映射。
CN201280072858.8A 2012-05-31 2012-05-31 局部错误检测和全局错误纠正 Expired - Fee Related CN104246898B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/040108 WO2013180714A1 (en) 2012-05-31 2012-05-31 Local error detection and global error correction

Publications (2)

Publication Number Publication Date
CN104246898A CN104246898A (zh) 2014-12-24
CN104246898B true CN104246898B (zh) 2017-03-22

Family

ID=49673762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280072858.8A Expired - Fee Related CN104246898B (zh) 2012-05-31 2012-05-31 局部错误检测和全局错误纠正

Country Status (6)

Country Link
US (1) US9600359B2 (zh)
EP (1) EP2856471A4 (zh)
KR (1) KR101684045B1 (zh)
CN (1) CN104246898B (zh)
TW (1) TWI501251B (zh)
WO (1) WO2013180714A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014070200A1 (en) * 2012-11-02 2014-05-08 Hewlett-Packard Development Company, L.P. Selective error correcting code and memory access granularity switching
JP6140093B2 (ja) * 2014-03-18 2017-05-31 株式会社東芝 キャッシュメモリ、誤り訂正回路およびプロセッサシステム
US9600189B2 (en) 2014-06-11 2017-03-21 International Business Machines Corporation Bank-level fault management in a memory system
KR102131337B1 (ko) * 2014-10-20 2020-07-07 한국전자통신연구원 고장 제어 기능을 구비한 캐시 메모리
US10467092B2 (en) * 2016-03-30 2019-11-05 Qualcomm Incorporated Providing space-efficient storage for dynamic random access memory (DRAM) cache tags
WO2017192626A1 (en) 2016-05-02 2017-11-09 Intel Corporation Internal error checking and correction (ecc) with extra system bits
US10268541B2 (en) 2016-08-15 2019-04-23 Samsung Electronics Co., Ltd. DRAM assist error correction mechanism for DDR SDRAM interface
US10769540B2 (en) * 2017-04-27 2020-09-08 Hewlett Packard Enterprise Development Lp Rare event prediction
KR101934204B1 (ko) * 2017-07-28 2018-12-31 한양대학교 산학협력단 데이터 저장을 위한 소실 부호의 부호화 방법 및 장치
US10372535B2 (en) * 2017-08-29 2019-08-06 Winbond Electronics Corp. Encoding method and a memory storage apparatus using the same
US10606692B2 (en) 2017-12-20 2020-03-31 International Business Machines Corporation Error correction potency improvement via added burst beats in a dram access cycle
US11010234B2 (en) 2019-02-01 2021-05-18 Winbond Electronics Corp. Memory device and error detection method thereof
WO2020186524A1 (zh) * 2019-03-21 2020-09-24 华为技术有限公司 一种存储校验方法及装置
KR20200117129A (ko) * 2019-04-03 2020-10-14 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US20210306006A1 (en) * 2019-09-23 2021-09-30 SK Hynix Inc. Processing-in-memory (pim) devices
JP7018089B2 (ja) * 2020-04-02 2022-02-09 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および読出し方法
US11301325B2 (en) * 2020-05-29 2022-04-12 Intel Corporation Memory in integrity performance enhancement systems and methods
US11640336B2 (en) * 2020-07-24 2023-05-02 Seagate Technology Llc Fast cache with intelligent copyback
US20220207190A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Low overhead memory integrity with error correction capabilities
JP2022137811A (ja) * 2021-03-09 2022-09-22 キオクシア株式会社 情報処理システム、ストレージデバイスおよびホスト
JP7253594B2 (ja) * 2021-08-27 2023-04-06 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101681283A (zh) * 2007-06-28 2010-03-24 国际商业机器公司 存储系统中的错误纠正和检测的系统和方法
EP2261806A1 (en) * 2008-02-28 2010-12-15 Fujitsu Limited Storage device, storage controller, data transfer integrated circuit, and method of controlling storage

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2515097B2 (ja) 1985-10-08 1996-07-10 日本テキサス・インスツルメンツ 株式会社 半導体記憶装置
US6304992B1 (en) 1998-09-24 2001-10-16 Sun Microsystems, Inc. Technique for correcting single-bit errors in caches with sub-block parity bits
US6249475B1 (en) 1999-04-05 2001-06-19 Madrone Solutions, Inc. Method for designing a tiled memory
US6552947B2 (en) 1999-04-05 2003-04-22 Madrone Solutions, Inc. Memory tile for use in a tiled memory
US20020069317A1 (en) * 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system and method of operating the same
CA2447204C (en) 2002-11-29 2010-03-23 Memory Management Services Ltd. Error correction scheme for memory
US7149945B2 (en) 2003-05-09 2006-12-12 Hewlett-Packard Development Company, L.P. Systems and methods for providing error correction code testing functionality
US20040225944A1 (en) * 2003-05-09 2004-11-11 Brueggen Christopher M. Systems and methods for processing an error correction code word for storage in memory components
GB0315063D0 (en) 2003-06-27 2003-07-30 Ibm Memory devices
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
JP2005293728A (ja) 2004-03-31 2005-10-20 Toshiba Corp 半導体記憶装置
US7308638B2 (en) * 2004-06-29 2007-12-11 Hewlett-Packard Development Company, L.P. System and method for controlling application of an error correction code (ECC) algorithm in a memory subsystem
US7437651B2 (en) * 2004-06-29 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for controlling application of an error correction code (ECC) algorithm in a memory subsystem
US20060143551A1 (en) 2004-12-29 2006-06-29 Intel Corporation Localizing error detection and recovery
US20060236035A1 (en) * 2005-02-18 2006-10-19 Jeff Barlow Systems and methods for CPU repair
US8055982B2 (en) 2007-02-21 2011-11-08 Sigmatel, Inc. Error correction system and method
US8041989B2 (en) 2007-06-28 2011-10-18 International Business Machines Corporation System and method for providing a high fault tolerant memory system
US7747903B2 (en) 2007-07-09 2010-06-29 Micron Technology, Inc. Error correction for memory
US8176391B2 (en) * 2008-01-31 2012-05-08 International Business Machines Corporation System to improve miscorrection rates in error control code through buffering and associated methods
KR20100012605A (ko) 2008-07-29 2010-02-08 삼성전자주식회사 Ecc를 이용하여 프로그램하는 불휘발성 메모리 장치 및그 프로그램 방법
US8321758B2 (en) * 2008-08-05 2012-11-27 Advanced Micro Devices, Inc. Data error correction device and methods thereof
US8086783B2 (en) 2009-02-23 2011-12-27 International Business Machines Corporation High availability memory system
US8176284B2 (en) 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
JP4940322B2 (ja) * 2010-03-16 2012-05-30 株式会社東芝 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
US8762813B2 (en) 2010-05-17 2014-06-24 Skymedi Corporation Configurable coding system and method of multiple ECCS
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8640006B2 (en) * 2011-06-29 2014-01-28 International Business Machines Corporation Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101681283A (zh) * 2007-06-28 2010-03-24 国际商业机器公司 存储系统中的错误纠正和检测的系统和方法
EP2261806A1 (en) * 2008-02-28 2010-12-15 Fujitsu Limited Storage device, storage controller, data transfer integrated circuit, and method of controlling storage

Also Published As

Publication number Publication date
CN104246898A (zh) 2014-12-24
WO2013180714A1 (en) 2013-12-05
TWI501251B (zh) 2015-09-21
US20150082122A1 (en) 2015-03-19
EP2856471A1 (en) 2015-04-08
KR20140140632A (ko) 2014-12-09
US9600359B2 (en) 2017-03-21
KR101684045B1 (ko) 2016-12-07
EP2856471A4 (en) 2015-11-18
TW201407629A (zh) 2014-02-16

Similar Documents

Publication Publication Date Title
CN104246898B (zh) 局部错误检测和全局错误纠正
US10761766B2 (en) Memory management system and method
KR101495049B1 (ko) 저전력 상태를 지원하는 시스템에서 캐시 메모리를 이용하는 방법 및 장치
US8185800B2 (en) System for error control coding for memories of different types and associated methods
KR102190683B1 (ko) 메모리 데이터 에러 정정 방법
US8171377B2 (en) System to improve memory reliability and associated methods
US9183078B1 (en) Providing error checking and correcting (ECC) capability for memory
US8176391B2 (en) System to improve miscorrection rates in error control code through buffering and associated methods
CN103137215B (zh) 向存储器提供低延时错误纠正码能力
US8990660B2 (en) Data processing system having end-to-end error correction and method therefor
US9898365B2 (en) Global error correction
US8181094B2 (en) System to improve error correction using variable latency and associated methods
Mittal et al. A survey of techniques for improving error-resilience of DRAM
US8185801B2 (en) System to improve error code decoding using historical information and associated methods
US20160139988A1 (en) Memory unit
US20160147598A1 (en) Operating a memory unit
CN102929743A (zh) 具有软错误容错功能的一级缓存数据存储方法及装置
Nair Architectural techniques to enable reliable and scalable memory systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20170122

Address after: Texas, USA

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT L.P.

Address before: Texas, USA

Applicant before: HEWLETT-PACKARD DEVELOPMENT Co.,L.P.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170322

CF01 Termination of patent right due to non-payment of annual fee