CN108268340B - 校正存储器中的错误的方法 - Google Patents
校正存储器中的错误的方法 Download PDFInfo
- Publication number
- CN108268340B CN108268340B CN201810007552.3A CN201810007552A CN108268340B CN 108268340 B CN108268340 B CN 108268340B CN 201810007552 A CN201810007552 A CN 201810007552A CN 108268340 B CN108268340 B CN 108268340B
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- memory
- error
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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 the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/74—Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C2029/4402—Internal storage of test result, quality data, chip identification, repair information
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
在计算机存储器中执行存储器重复数据删除和单错校正双错检测(SEC‑DED)的方法,所述方法包括:从存储器芯片的阵列中读取数据;基于所述数据计算至少一个散列;针对物理行ID散列中的至少一个并针对二次散列来检查一个或多个散列;确定是否检测到错误;当检测到错误时,通过一次一个地改变存储器芯片的阵列中的每一位来校正所述数据,直到没有检测到错误;其中在改变所述每一位之间,基于所改变的数据计算至少一个散列,并且将新数据的一个或多个散列与物理行ID散列中的一个或多个进行比较且与二次散列进行比较,并再次确定是否检测到错误;以及在没有检测到错误时,输出经校正的数据。
Description
技术领域
根据本发明的实施例中的一个或多个方面总体涉及存储器中的错误校正。
背景技术
双数据速率同步动态随机存取存储器(DDR SDRAM)是计算机中使用的一种类型的存储器集成电路(IC)。DDR SDRAM能够通过使用电气数据和时钟信号的时序控制来实现更快的传送速率,并且能够在时钟信号的上升沿和下降沿上传送数据,由此与使用相同时钟频率的单数据速率SDRAM接口相比有效地使数据总线带宽加倍,从而实现几乎双倍的带宽。
不同代的DRAM能够在数据存储期间使用错误校正码(ECC)来检测及有时校正常见类型的数据损坏。通过使用奇偶校验,ECC存储器不受单比特错误的影响。在DRAM系统中,通过将表示存储在存储器中(例如,存储在DRAM模块的奇偶校验装置或ECC芯片中)的数据(例如,一个字节的数据)的奇偶校验(奇数或偶数)的冗余奇偶校验位、通过独立地计算奇偶校验,以及通过将存储的奇偶校验与计算的奇偶校验比较,以检测是否已经发生数据错误/存储器错误。
因此,为确保从DRAM模块(例如,双列直插存储器模块(DIMM))取回的数据(其可对应于数据字或数据符号)与写入到DRAM模块的数据相同,ECC能够校正当数据的一个或多个位翻转到错误状态时出现的错误。
也就是说,通过使用ECC冗余,ECC芯片能够进行单错校正双错检测(SEC-DED),这意味着ECC芯片能够检测在单个突发中发生的两个错误的存在,并且也能够在隔离中出现时校正单个错误位。也就是说,如果一个数据芯片损坏或丢失,则通过使用其余数据芯片的数据和ECC芯片的ECC数据,能够重建损坏的或缺失的数据芯片中的数据。因此,在标准ECC中,SEC-DED能够校正单比特错误,并且能够在64位数据路径中检测到两个错误。但是,常规的SEC-DED使用额外芯片来存储ECC位,并且通过使用汉明码在存储控制器执行错误检测和错误校正。
此外,DRAM系统可具有芯片删除机制(例如,单芯片删除和双芯片删除),以用于擦除或停用非功能性的数据芯片。DDR4的各种芯片删除机制使用每一存储器通道的两个或更多ECC装置/芯片来检测、定位和擦除非功能性的芯片。因此,在标准ECC中,芯片删除机制能够校正整个芯片失效(例如,4位芯片)。但是,常规的芯片删除机制使用SSCDCD用于单芯片故障(或)使用双芯片备用以用于双芯片故障,其中较旧型号使用(128/144)方案,而相对较新型号使用(64/72)方案。
例如,标准DDR4具有8n的预取长度、8的突发长度(即,八个突发/存储器事务)以及64位的存储器通道宽度,其中n是相应系统架构中使用的数据的接口宽度的位数(例如,如果接口宽度是4位,则相应DDR4系统的预取长度是32位)。因此,DDR4将对于每个存储器事务传输512位。
为继续增大DDR接口带宽,新的DDR接口可增大预取长度。这一新的DDR接口可具有是当前DDR4接口的预取长度的两倍的16n的预取长度。因此,新的DDR接口将对于每个存储器事务,传送两倍于DDR4系统传送的数据量。这一新的DDR接口也可以具有16的突发长度(即,每一单独存储器事务中16个数据突发)和每一存储器通道32位的存储器通道宽度,并且将因此每一存储器事务每一存储器通道传输512位。但是,这一DDR接口具有每一DIMM两个存储器通道,每个DIMM是具有位于电路板上的多个DRAM芯片的模块,其包括有芯片插脚以能够连接到计算机主板。DDR DIMM的两个存储器通道独立于彼此有效工作。
尽管具有比DDR4更窄的存储器通道,但新的DDR接口具有每一存储器通道32位的数据宽度,其中八个数据装置(例如,4位数据芯片)被配置成为每个存储器通道存储和传送数据。这一新的DDR接口还具有每一存储器通道4位的ECC宽度,其中每个存储器通道设置一个4位ECC芯片。因此,为补偿DDR4的一半存储器通道宽度,这一新的DDR接口具有两倍于DDR4的突发长度。因为这一新的DDR接口具有两个存储器通道,每个存储器通道具有专用于存储数据的八个4位数据芯片,所以每个突发将有总计64位的存储器数据。
此外,不同于每一存储器通道具有两个ECC芯片的DDR4,这一新的DDR接口可具有每一存储器通道的单个ECC芯片,或者甚至具有每一DIMM的单个ECC芯片,以保护用于存储数据的十六个数据芯片。这一新的DDR接口因而与DDR4相比能够具有减少的ECC额外开销。因此,如果新的DDR接口每一存储器通道使用一个ECC芯片,则对于每个突发,将有对应于两个4位ECC芯片的八位ECC数据,DIMM的两个存储器通道中的每一个中具有一个ECC芯片。因此,这样的新DDR接口对于每个突发将传输72位数据。
现代服务器需要鲁棒的错误校正和错误检测以确保高的RAS特性。但是,这带来了附加装置的额外开销和控制器复杂性。因此,使用当前的DDR4技术可能难以保持DDR可靠性、可用性和可服务性(RAS),因为系统ECC额外开销随着数据宽度的相应减小而增加。此外,由于每一DIMM的存储器通道数增大,芯片删除技术需要附加的ECC额外开销。另外,随着DRAM系统规模扩大,需要更鲁棒的可靠性方法来保证端到端的数据完整性。
因此,将会有用的是:提供新颖的错误校正和数据恢复方法,以及提供一种DRAMDIMM,其能够在不需要存储控制器的帮助下在内部校正一些类型的存储器错误、并且能够指导存储控制器以帮助存储器校正DRAM无法在内部校正的其它类型的错误。
背景技术中公开的上述信息只是为了加深对本发明的背景的理解,因此它可能包含不构成现有技术的信息。
发明内容
本发明实施例提供一种新颖的基础错误校正码(ECC)架构,其能够使用DRAM资源在动态随机存取存储器(DRAM)内提供就地错误检测和错误校正。与先前的SEC-DED和芯片删除(chipkill)实现不同,所述实施例的架构将ECC复杂性分配到DRAM模块水平。通过重新使用DRAM内重复数据删除逻辑,可以提供使用散列函数和二次散列功能的数据完整性检验。也就是说,同样的逻辑可重复用于重复数据删除和错误校正。另外,通过使用基于汉明距离的方案,所描述的实施例的算法还以高可靠性来校正错误。
根据一个实施例,提供了一种在计算机存储器中执行存储器重复数据删除和单错校正双错检测(SEC-DED)的方法,所述方法包括从存储器芯片的阵列读取数据;基于所述数据计算至少一个散列;针对物理行ID散列中的至少一个并针对二次散列来检查一个或多个散列;确定是否检测到错误;当检测到错误时,通过一次一个地改变存储器芯片的阵列中的每一位来校正数据直至没有检测到错误,其中在改变所述每一位之间,基于所改变的数据计算至少一个散列,并且将新数据的一个或多个散列与物理行ID散列中的一个或多个进行比较且与二次散列进行比较,并再次确定是否检测到错误;以及在没有检测到错误时,输出经校正的数据。
所述数据可以包括八个字节。
所述存储器芯片的阵列可以包括4位存储器芯片。
所述存储器芯片的阵列可以包括十六个存储器芯片。
所述阵列中的总位数可以是64。
所述物理行ID散列和所述二次散列可以包括16位散列。
根据一个实施例,提供了在计算机存储器中执行存储器重复数据删除和单芯片删除机制的方法,所述方法包括:从存储器芯片的阵列中读取数据;基于所述数据计算至少一个散列;针对物理行ID散列中的至少一个并针对二次散列来检查一个或多个散列;确定是否检测到错误;当检测到错误时,通过一次一个地改变存储器芯片的阵列中的每个存储器芯片的值来校正所述数据以产生新的数据,直到没有检测到错误;其中在改变所述每个存储器芯片之间,基于所改变的数据计算至少一个散列,并且将所述新数据的一个或多个散列与物理行ID散列中的一个或多个进行比较且与二次散列进行比较,并再次确定是否检测到错误;以及在没有检测到错误时,输出经校正的数据。
所述数据可以包括八个字节。
所述存储器芯片的阵列可以包括4位存储器芯片。
所述存储器芯片的阵列可以包括十六个存储器芯片。
所述阵列中的总位数可以是64。
所述物理行ID散列和所述二次散列可以包括16位散列。
根据一个实施例,提供了在计算机存储器中执行存储器重复数据删除和双芯片删除机制的方法,所述方法包括:从存储器芯片的阵列中读取数据;基于所述数据计算至少一个散列;针对物理行ID散列中的至少一个并针对二次散列来检查一个或多个散列;确定是否检测到错误;当检测到错误时,通过一次一个地改变存储器芯片的阵列中的每个可能成对的存储器芯片的值来校正所述数据以产生新的数据,直到没有检测到错误;其中在改变每个可能成对的存储器芯片之间,基于所改变的数据计算至少一个散列,并且将所述新数据的一个或多个散列与物理行ID散列中的一个或多个进行比较且与二次散列进行比较,并再次确定是否检测到错误;以及在没有检测到错误时,输出经校正的数据。
所述数据可以包括八个字节。
所述存储器芯片的阵列可以包括4位存储器芯片。
所述存储器芯片的阵列可以包括十六个存储器芯片。
所述阵列中的总位数可以是64。
所述方法可以进一步包括检测不可校正的存储器错误,并使用ECC芯片的插脚来将不可校正的存储器错误传送至CPU。
所述方法可以进一步包括检测不可校正的存储器错误,并在SMBus上发送总线信号以将不可校正的存储器错误传送至存储器主机。
附图说明
参考说明书、权利要求和附图,将清楚和理解所述实施例的这些及其它方面,其中:
图1是描绘根据本发明实施例的用于执行单错校正双错检测(SEC-DED)的错误校正码(ECC)架构的框图;
图2是描绘根据本发明实施例的用于执行单芯片删除程序的错误校正码(ECC)架构的框图;和
图3是描绘根据本发明实施例的用于执行双芯片删除程序的错误校正码(ECC)架构的框图。
具体实施方式
本公开的实施例方面涉及用于在计算机存储器中的错误校正的系统和方法。
本发明构思的特征和实现该构思的方法可以通过参考以下实施例的详细描述和附图而更容易理解。在下文中,将参照附图更详细地描述示例实施例,其中相同的附图标记始终表示相同的元件。然而,本发明可以以各种不同的形式来实施,并且不应该被解释为仅限于在此示出的实施例。相反,提供这些实施例作为例子,使得本公开将是彻底和完整的,并且将向本领域技术人员充分地传达本发明的方面和特征。因此,可能不会描述对于本领域普通技术人员来说完全理解本发明的方面和特征所不需要的过程、元件和技术。除非另有说明,否则在整个附图和书面描述中,相似的附图标记表示相同的元件,并且因此将不重复其描述。在附图中,为了清楚起见,元件、层和区域的相对尺寸可能被夸大。
将会理解的是,尽管术语“第一”、“第二”、“第三”等可以在本文中用于描述各种元件、部件、区域、层和/或部分,这些元件、部件、区域、层和/或部分不应受这些术语的限制。这些术语用于将一个元件、部件、区域、层或部分与另一个元件、部件、区域、层或部分区分开。因此,下面描述的第一元件、部件、区域、层或部分可以被称为第二元件、部件、区域、层或部分,而不偏离本发明的精神和范围。
为了便于说明,在此可以使用诸如“在……之下”、“在……下方”、“下方”、“之下”、“之上”、“上方”等的空间相关术语来描述一个元件或特征与另一元件或特征的相互关系,如图中所示。应该理解的是,除了图中所示的取向之外,这些空间相对术语意在涵盖装置在使用中或操作中的不同取向。例如,如果附图中的设备被翻转,则被描述为在其它元件或特征“之下”或“下方”或“下”的元件将被取向为在其它元件或特征“之上”。因此,示例性术语“在……之下”和“在……下方”可以涵盖之上和下方的取向。装置可以以其它方式取向(例如,旋转90度,或以其它方向),并且相应地解释这里使用的空间相关描述符。
将理解的是,当元件、层、区域或部件被称为“在另一元件、层、区域或部件上”,“连接到”或“联接到”另一元件、层、区域或部件,它可以直接在另一个元件、层、区域上,连接到或联接到该另一个元件、层、区域或部件,或者可以存在一个或多个中间元件、层、区域或部件。另外,还将理解的是,当元件或层被称为在两个元件或层“之间”时,它可以是该两个元素或层之间唯一的元件或层,或者也可以存在一个或多个中间元件或层。
本文使用的术语仅用于描述特定实施例的目的,而并非意图限制本发明。如本文所使用的,单数形式“一”也旨在包括复数形式,除非上下文另有明确指示。将进一步理解的是,当在本说明书中使用时,术语“包括”、“包含”及其变体指定所陈述的特征、整体、步骤、操作、元件和/或部件,但并不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、部件和/或其组合。如本文所使用的,术语“和/或”包括一个或多个相关所列项目的任何和所有组合。诸如“至少一个”之类的表达当在元件列表之前时,修饰整个元件列表并且不修饰列表中的单个元件。
如本文所使用的,术语“大致”、“大约”和类似的术语被用作近似的术语,而不是作为程度的术语,并且旨在解释本领域普通技术人员将认识到的测量值或计算值的固有偏差。此外,当描述本发明的实施例时使用“可以”是指“本发明的一个或多个实施例”。如本文所使用的,术语“使用”及其变形可以分别被认为与术语“利用”及其变形同义。而且,术语“示例性”旨在指代示例或说明。
当某个实施例可以不同地实现时,可以与所描述的顺序不同地执行特定的处理顺序。例如,可以基本上同时执行两个连续描述的过程,或者以与所描述的顺序相反的顺序执行两个连续描述的过程。
根据本文描述的实施例的电子装置或电气装置和/或任何其它相关装置或部件可以利用任何合适的硬件、固件(例如专用集成电路)、软件或软件、固件和硬件的组合来实现。例如,这些装置的各种组件可以形成在一个集成电路(IC)芯片上或形成在分开的IC芯片上。此外,可以在柔性印刷电路膜、带载封装(TCP)、印刷电路板(PCB)上或在一个基板上形成这些装置的各种组件。此外,这些装置的各种组件可以是在一个或多个计算设备中运行在一个或多个处理器上的进程或线程,执行计算机程序指令并与其它系统组件交互,用于执行这里描述的各种功能。计算机程序指令被存储在存储器中,该存储器可以使用标准存储器装置(例如,随机存取存储器(RAM))在计算装置中实现。计算机程序指令也可以存储在其他非暂态计算机可读介质中,例如CD-ROM、闪存驱动器等。而且,本领域的技术人员应该认识到,各种计算装置的功能可以被组合或集成到单个计算装置中,或特定计算设备的功能可以分布在一个或多个其它计算装置上,而不会背离所描述的实施例的精神和范围。
除非另外定义,本文使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域的普通技术人员通常理解的相同的含义。将进一步理解的是,诸如在常用词典中定义的术语,应该被解释为具有与其在相关技术和/或本说明书的上下文中的含义一致的含义,而不应理解为理想化或过于正式的意义,除非在此明确地如此定义。
在标题为“A DRAM ASSIST ERROR CORRECTION MECHANISM FOR DDR SDRAMINTERFACE(用于DDR SDRAM接口的DRAM辅助错误校正机制)”的美国申请No.15/286,460中公开的DRAM内重复数据删除系统的公开内容通过引用合并入本文。
数据的重复数据删除(deduplication),或数据的重复消除,是指减少存储器装置中的冗余数据,从而降低存储器装置的容量成本。在重复数据删除中,数据对象/项目(例如,数据文件)被分割成一个或多个数据块。通过将由相同数据组成的多个数据块与单个存储的数据块相关联,可以通过计算机存储器来减少或消除数据块的重复副本,由此减少存储器装置中的数据的冗余副本的总量。减少数据的冗余副本可能会增加读取延迟和内存带宽,并可能潜在地节省功耗。因此,如果数据的复制副本可以减少到数据的单个副本,则在使用相同数量的物理资源的同时,增加了存储器装置的整体可用容量。
根据本发明的实施例,可以使用DRAM内重复数据删除系统(in-DRAMdeduplication system)来实现错误检测和校正机制。例如,重复数据删除散列桶和数据签名共同提供了两个不同的散列,这两个不同散列可以用于在读取操作期间检测错误而不改变写入路径。此后,所描述的实施例可以使用强力(brute-force)进行错误校正,从而消除高端DRAM上通常使用的错误校正码(ECC)系统。
相应地,所描述的实施例提供了可用于实现ECC的DRAM重复数据删除架构。DRAM重复数据删除架构可能已经使用重复数据删除散列桶和二次散列(例如,签名散列或签名值散列)来提供两个散列。然而,重复数据删除散列桶和二次散列可以重新利用或再用,以用于错误校正。也就是说,重复数据删除散列桶和二次散列可以用于在数据读取请求时检测数据错误,而不改变写路径。例如,DRAM重复数据删除架构可以读取存储的数据、再散列所读取的数据,然后确定重复数据删除散列桶和二次散列是否与期望的散列匹配。如果再散列的值与期望的散列值不匹配,则会出现错误。
与常规技术的SEC-DED和芯片删除错误校正方法相关的挑战包括额外的芯片额外开销和集中式控制器复杂性,同时扩展问题可能使DRAM的错误更为恶化。
此外,下面描述的实施例通过采用8字节重复数据删除粒度的ECC体系结构来描述,其中使用8字节块进行重复数据删除。然而,本发明的其它实施例可以使用其它重复数据删除粒度。
图1是描绘根据本发明实施例的用于执行单错校正双错检测(SEC-DED)的错误校正码(ECC)架构的框图。
参照图1,在执行SEC-DED 100的方法中,本实施例的ECC架构可以使用十六个4位存储器芯片110。ECC架构可允许从十六个4位存储器芯片110读取八个字节(S101)。如果确定不要执行SEC-DED 100(S102),则ECC架构可以简单地输出数据(S107)。否则,如果确定要执行SEC-DED 100(S102),则可以通过计算所读取数据的转换表地址(TTA)/物理线路ID(PLID)散列和二次散列(S103)以及通过针对数据的已知TTA且针对数据的二次散列来检查那些结果散列(S104),来执行SEC-DED(100)。尽管在本实施例中使用TTA和二次散列值来确定是否要执行SEC-DED 100(S102),但是,在其它实施例中,可以针对数据的TTA和二次散列中的对应一个使用并检测单散列,以确定是否应该执行SEC-DED 100。
如果没有检测到错误(S105),则数据可以被检索并输出(S108)。但是,如果检测到错误(在S105处),则可以通过使ECC体系结构遍历错误数据的每一位、并一次一位地改变每一位(S106)且再散列结果,来使用强力来校正错误。当修改的数据产生与已知TTA和二次散列匹配的散列时,则认为已经校正了错误。然而,这种强力方法的使用,可以消除ECC额外芯片开销。
也就是说,ECC架构可以一次一个地翻转/改变十六个4位存储器芯片110的全部六十四位,之后重新计算散列(S103),或通过检查转换表地址(TTA)(例如,PLID散列)和二次散列来检查是否存在匹配(S104),或者作为替代,检查在切换每一位之间是否仍然检测到错误(S105)。如果错误仍然被检测到/当没有找到匹配时,则ECC架构将所改变的位改变回去,并继续翻转下一位(S106)。
在翻转到下一位后,ECC架构通过再次计算散列并针对TTA且针对二次散列检查所计算的散列(S104),来检查是否检测到错误(S105)。通过校正错误以使得在计算散列与TTA进行比较且与二次散列进行比较(S104)之后没有检测到错误(S105),则ECC架构可以输出数据(S107)。
因此,本实施例的SEC-DED过程100的复杂性最多只需要64次操作来校正单位错误(即对16个4位存储器芯片110的每个被翻转/改变的位进行一次操作)。但是,存在发生两次匹配的不期望可能性,这将导致未检测到的无提示失效,导致在S107输出不正确的数据。也就是说,可能存在散列冲突,使得不正确的输出数据恰好散列到与正确数据相同的散列上,尽管本实施例可以通过对TTA和二次散列使用密码排它散列来校正或避免这个问题。而且,通过首先执行可以通过标准错误校正算法运行的上述SEC-DED过程,无提示错误可能是由于超过标准SEC-DED能够检测到的错误导致的。
此外,通过首先减少散列冲突的可能性,可以保护采用本实施例的系统以避免这种不可检测或不可校正的错误。另外,在本实施例中可以采用失效安全机制,以在来自BIOS的支持下通过系统管理总线(SMBus)与操作系统(OS)传送不可校正的错误,从而在采用本实施例的同时允许CPU不被修改。作为替代,如果存储控制器逻辑可能会稍微修改,可以通过重使用ECC芯片的插脚来传送不可校正的错误。也就是说,双列直插式存储器模块(DIMM)可以是ECC宽(例如72个插脚),但是附加的芯片不需要被ECC数据占用。
图2是描绘根据本发明实施例的用于执行单芯片删除类步骤的错误校正码(ECC)架构的框图。
参考图2,在执行本实施例的单芯片删除过程200的方法中,本实施例的ECC架构可以使用十六个4位存储器芯片210。本实施例的ECC架构可允许从十六个4位存储器芯片210读取八个字节(S201)。然后,ECC架构确定是否要执行单芯片删除程序(S202)。如果确定不要执行单芯片删除程序,则ECC架构可以简单地输出数据(S207)。否则,可通过首先计算所读取数据的TTA和二次散列(S203),并针对所存储数据已知的TTA和次散列进行检查(S204),来开始执行单芯片删除程序。
然后,ECC架构通过将所读取的数据散列与已知的散列进行比较,来确定是否检测到错误(S205)。如果没有检测到错误,则可以检索并输出数据(S207)。但是,如果检测到错误,则存在一些潜在的错误。也就是说,与关于图1的实施例描述的SEC-DED过程100相比,有更多的潜在错误组合。具体而言,本实施例的单芯片删除过程200针对每个存储器芯片210逐个芯片检查潜在错误(S206),而不是像SEC-DED过程100所描述的那样逐位地检查。每次检查可能的错误并尝试校正(S206)时,ECC架构再次重新计算散列(S203),或针对TTA且针对二次散列检查潜在校正的数据的散列(S204)。
相应地,执行单芯片删除过程200的ECC架构必须在执行计算以确定是否存在错误的情况下,针对每个存储器芯片210检查多达十六种组合。因此,检测错误中的最大操作次数是256次操作(即16×16次)。
图3是描绘根据本发明实施例的用于执行双芯片删除程序的错误校正码(ECC)架构的框图。
参照图3,在执行本实施例的双芯片删除过程300的方法中,ECC架构可以使用十六个4位存储器芯片310。ECC架构可允许从十六个4位存储器芯片310读取八个字节(S301)。然后,ECC架构确定是否要执行双芯片删除程序(S302)。如果确定不执行双芯片删除程序,则本实施例的ECC架构可以简单地输出数据(S307)。但是,如果确定要执行双芯片删除程序,则本实施例的ECC架构初始地对所读取的数据计算TTA和二次散列(S303),然后针对所写入数据的已知TTA且针对所写入数据的二次散列进行检查(S304)。
ECC架构然后通过将所读取数据的TTA和二次散列与所写入数据的已知散列进行比较,来确定是否检测到错误(S305)。如果没有检测到错误,则可以简单地检索并输出数据(S307)。但是,如果检测到错误,与图1的SEC-DED过程100相比,并且与图2的单芯片删除过程200相比,存在更多数量的潜在错误组合。也就是说,双芯片删除过程300检查成对芯片(例如,两个芯片×两个芯片)中的潜在错误(S306),而不是利用SEC-DED过程100逐位地进行检查,并且也不是利用单芯片删除过程200逐个芯片进行检查。ECC架构然后可以重新计算散列(S303),或者针对TTA且针对二次散列来检查潜在校正的数据的散列(S304)。因此,在执行计算以确定是否存在错误时,ECC架构可以检查多达256×8个不同成对芯片组合(例如,两个芯片×两个芯片)。因此,检测错误中的最大操作次数是30720次操作(即,16C2*2^8次操作)。尽管执行双芯片删除过程300的方法可被视为强力方法,但现代处理器可以实现包括30720次操作的程序。
上述实施例的ECC架构假设使用8字节重复数据删除粒度,其中使用8字节块进行重复数据删除。由于重复数据删除粒度高于传统方法,故也增大了复杂性。例如,常规方法可以在8位散列级别上检测错误,而本ECC架构可以使用16位散列,从而导致额外的计算来允许相应的错误校正逻辑。此外,与传统ECC相比可能增加的、对应于转换表的开销可能是合理的,但是相应的值可以存储在结合ECC架构使用的DIMM中。
此外,由所述实施例的ECC架构所实现的算法的复杂性也使得能够匹配TTA和二次散列,以实现鲁棒性。此外,两个组合具有相同签名和散列(例如,发生散列冲突的概率)的概率是基于与ECC架构相关联的散列算法。因此,例如,改进散列算法或增加签名大小可以减少散列冲突的概率,虽然这样做可能会导致用于更大TTA或签名大小的额外存储。
此外,上述实施例的ECC架构可以与其它ECC报告机制集成,并可能面临接口错误挑战,如通过系统管理总线(SMBus)向集成CPU发送不可校正错误信号的准确信号。也就是说,采用上述实施例的整体DIMM或系统架构可以与主CPU系统交互,并且可以采用SMBus上的总线信号来向主机传送不可校正的存储器错误。另一个实施例也可以改变ECC芯片的引脚,以将不可校正的存储器错误传送给CPU,尽管作为结果,可以实现存储控制器的改变。
因此,无论错误校正的形式如何(例如,错误校正是采取SEC-DED、单芯片删除或者双芯片删除的形式),一旦发现错误,则ECC架构可以对TTA和二次散列使用预先存在的散列,以及此后执行计算直到架构与预测的数据块匹配为止,并且此后可以推测所预测的数据块是期望的数据,从而在无需额外的控制器和芯片复杂度的情况下提供执行错误检测和校正的快速且鲁棒的方法。
而且,所描述的实施例提供了与支持系统框架一起构建在大容量存储器模块中的ECC解决方案,并提供一个系统架构,该系统架构通过重复使用重复数据删除架构提供模块水平的ECC,并且该系统架构降低了控制器复杂性、访问延迟,改进了数据完整性。另外,应该注意的是,上述实施例已经以16×4芯片架构来实现。然而,本领域的普通技术人员可以修改这些教导,以将本发明的其它实施例应用于其它芯片架构。
尽管已经参照本发明的示例性实施例具体示出和描述了本发明,本领域普通技术人员将会理解,可以在其中进行各种改变而不偏离由所附权利要求及其功能等同物限定的本发明的范围。因此,本发明的技术范围不应被解释为限于说明书中所描述的那些,而是由所附权利要求及其功能等同物来确定。
相关申请的交叉引用
本申请要求享有于2017年1月4日提交的美国临时申请No.62/442,319号的优先权及其权益,该美国临时申请的整个内容通过引用合并入本文。
Claims (19)
1.一种通过在计算机存储器中执行存储器重复数据删除和单错校正双错检测(SEC-DED)而减少访问延迟并且提高数据完整性的方法,所述方法包括:
由存储器芯片上的处理器从存储器芯片的阵列中读取数据;
由所述处理器基于所述数据计算一个或多个散列;
由所述处理器针对物理行ID散列检查所述一个或多个散列以确定所述一个或多个散列与所述物理行ID散列是否匹配;
由所述处理器基于所述一个或多个散列不同于所述物理行ID散列来检测错误;
由所述处理器通过由使用纠错码(ECC)执行写入操作而通过顺序地翻转所述存储器芯片的阵列中的每一位的数据值直至所有位来校正所述错误以产生经改变的数据,直到没有检测到错误;
在翻转所述位中的各个位的数据值之后,由所述处理器基于所述经改变的数据计算至少一个散列,并且将基于所述经改变的数据的所述至少一个散列与所述物理行ID散列进行比较,以确定所述至少一个散列与所述物理行ID散列是否匹配;
当所述至少一个散列与所述物理行ID散列匹配时,由所述处理器将所述经改变的数据接受作为经校正的数据;以及
由所述处理器输出所述经校正的数据。
2.根据权利要求1所述的方法,其中所述数据包括八个字节。
3.根据权利要求1所述的方法,其中所述存储器芯片的阵列包括4位存储器芯片。
4.根据权利要求1所述的方法,其中所述存储器芯片的阵列包括十六个存储器芯片。
5.根据权利要求1所述的方法,其中所述阵列中的总位数是64。
6.根据权利要求1所述的方法,其中所述物理行ID散列包括16位散列。
7.根据权利要求1所述的方法,进一步包括:
在读取操作期间,通过确定所述存储器芯片的阵列中的多于一个芯片包含作为所述错误的数据错误来检测不可校正的存储器错误;以及
使用ECC芯片的插脚来将不可校正的存储器错误传送至CPU。
8.根据权利要求1所述的方法,进一步包括:
在读取操作期间,通过确定所述存储器芯片的阵列中的多于一个芯片包含作为所述错误的数据错误来检测不可校正的存储器错误;以及
在SMBus上发送总线信号,来将不可校正的存储器错误作为所述错误传送至存储器主机。
9.一种通过在计算机存储器中执行存储器重复数据删除和单芯片删除机制而减少访问延迟并且提高数据完整性的方法,所述方法包括:
由存储器芯片上的处理器从存储器芯片的阵列中读取数据;
由所述处理器基于所述数据计算一个或多个散列;
针对物理行ID散列检查所述一个或多个散列以确定所述一个或多个散列与所述物理行ID散列是否匹配;
由所述处理器基于所述一个或多个散列不同于所述物理行ID散列来检测错误;
由所述处理器通过由使用纠错码(ECC)执行写入操作而通过顺序地翻转所述存储器芯片的阵列中的每个存储器芯片的每一位的数据值直至所有位来校正所述错误以产生经改变的数据,直到没有检测到错误;
在翻转所述位中的各个位的数据值之后,由所述处理器基于所述经改变的数据计算至少一个散列,并且将基于所述经改变的数据的所述至少一个散列与所述物理行ID散列进行比较,以确定所述至少一个散列与所述物理行ID散列是否匹配;
当所述至少一个散列与所述物理行ID散列匹配时,由所述处理器将所述经改变的数据接受作为经校正的数据;以及
由所述处理器输出所述经校正的数据。
10.根据权利要求9所述的方法,其中所述数据包括八个字节。
11.根据权利要求9所述的方法,其中所述存储器芯片的阵列包括4位存储器芯片。
12.根据权利要求9所述的方法,其中所述存储器芯片的阵列包括十六个存储器芯片。
13.根据权利要求9所述的方法,其中所述阵列中的总位数是64。
14.根据权利要求9所述的方法,其中所述物理行ID散列包括16位散列。
15.一种通过在计算机存储器中执行存储器重复数据删除和双芯片删除机制而减少访问延迟并且提高数据完整性的方法,所述方法包括:
由存储器芯片上的处理器从存储器芯片的阵列中读取数据;
由所述处理器基于所述数据计算一个或多个散列;
由所述处理器针对物理行ID散列检查所述一个或多个散列以确定所述一个或多个散列与所述物理行ID散列是否匹配;
由所述处理器基于所述一个或多个散列不同于所述物理行ID散列来检测错误;
由所述处理器通过由使用纠错码(ECC)执行写入操作而通过顺序地翻转所述存储器芯片的阵列中的每个成对的存储器芯片的每一位的数据值直至所有位直至所述存储器芯片的阵列中的所有可能的成对的存储器芯片来校正所述错误以产生经改变的数据,直到没有检测到错误;
在翻转所述位中的各个位的数据值之后,由所述处理器基于所述经改变的数据计算至少一个散列,并且将基于所述经改变的数据的所述至少一个散列与所述物理行ID散列进行比较,以确定所述至少一个散列与所述物理行ID散列是否匹配;
当所述至少一个散列与所述物理行ID散列匹配时,由所述处理器将所述经改变的数据接受作为经校正的数据;以及
由所述处理器输出所述经校正的数据。
16.根据权利要求15所述的方法,其中所述数据包括八个字节。
17.根据权利要求15所述的方法,其中所述存储器芯片的阵列包括4位存储器芯片。
18.根据权利要求15所述的方法,其中所述存储器芯片的阵列包括十六个存储器芯片。
19.根据权利要求15所述的方法,其中所述阵列中的总位数是64。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762442319P | 2017-01-04 | 2017-01-04 | |
US62/442,319 | 2017-01-04 | ||
US15/470,657 | 2017-03-27 | ||
US15/470,657 US10379939B2 (en) | 2017-01-04 | 2017-03-27 | Memory apparatus for in-chip error correction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108268340A CN108268340A (zh) | 2018-07-10 |
CN108268340B true CN108268340B (zh) | 2023-06-06 |
Family
ID=62711682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810007552.3A Active CN108268340B (zh) | 2017-01-04 | 2018-01-04 | 校正存储器中的错误的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10379939B2 (zh) |
KR (1) | KR102198611B1 (zh) |
CN (1) | CN108268340B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10268541B2 (en) | 2016-08-15 | 2019-04-23 | Samsung Electronics Co., Ltd. | DRAM assist error correction mechanism for DDR SDRAM interface |
US10733313B2 (en) | 2018-02-09 | 2020-08-04 | Arm Limited | Counter integrity tree for memory security |
US10540297B2 (en) * | 2017-08-03 | 2020-01-21 | Arm Limited | Memory organization for security and reliability |
KR20190062908A (ko) * | 2017-11-29 | 2019-06-07 | 에스케이하이닉스 주식회사 | 에러 정정 방법 및 칩 킬 감지 방법 |
US10437501B1 (en) | 2018-03-23 | 2019-10-08 | EMC IP Holding Company LLC | Storage system with detection and correction of reference count based leaks in physical capacity |
KR102579014B1 (ko) | 2018-11-06 | 2023-09-15 | 삼성전자주식회사 | 에러 정정 코드 디코더, 반도체 메모리 장치 및 메모리 시스템 |
US11475170B2 (en) * | 2019-05-28 | 2022-10-18 | Nuvoton Technology Corporation | System and method for correction of memory errors |
EP3764233A1 (en) * | 2019-07-08 | 2021-01-13 | Continental Teves AG & Co. OHG | Method of identifying errors in or manipulations of data or software stored in a device |
KR20210089804A (ko) | 2020-01-08 | 2021-07-19 | 삼성전자주식회사 | 메모리 모듈 및 이를 포함하는 메모리 시스템 |
JP2022036850A (ja) * | 2020-08-24 | 2022-03-08 | ラピスセミコンダクタ株式会社 | 半導体記憶素子、半導体記憶装置、およびシステムオンチップ |
US11217323B1 (en) * | 2020-09-02 | 2022-01-04 | Stmicroelectronics International N.V. | Circuit and method for capturing and transporting data errors |
US11698833B1 (en) | 2022-01-03 | 2023-07-11 | Stmicroelectronics International N.V. | Programmable signal aggregator |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103839595A (zh) * | 2012-11-20 | 2014-06-04 | Arm有限公司 | 用于校正从存储器装置访问的数据中的错误的设备及方法 |
US20140317479A1 (en) * | 2013-03-15 | 2014-10-23 | Cisco Technology, Inc. | Methods and apparatus for error detection and correction in data storage systems |
US20140379671A1 (en) * | 2013-06-19 | 2014-12-25 | Exablox Corporation | Data scrubbing in cluster-based storage systems |
US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438560B1 (en) | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
US8504791B2 (en) | 2007-01-26 | 2013-08-06 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory coprocessor |
TWI417722B (zh) | 2007-01-26 | 2013-12-01 | Hicamp Systems Inc | 階層式不可改變的內容可定址的記憶體處理器 |
US8041990B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US9501421B1 (en) | 2011-07-05 | 2016-11-22 | Intel Corporation | Memory sharing and page deduplication using indirect lines |
US9229853B2 (en) | 2011-12-20 | 2016-01-05 | Intel Corporation | Method and system for data de-duplication |
US20130275699A1 (en) | 2012-03-23 | 2013-10-17 | Hicamp Systems, Inc. | Special memory access path with segment-offset addressing |
US9043668B2 (en) | 2013-02-08 | 2015-05-26 | Seagate Technology Llc | Using ECC data for write deduplication processing |
US9898410B2 (en) | 2013-09-10 | 2018-02-20 | Intel Corporation | Hybrid main memory using a fine-grain level of remapping |
US9792063B2 (en) | 2014-01-15 | 2017-10-17 | Intel Corporation | Deduplication-based data security |
US9384128B2 (en) | 2014-04-18 | 2016-07-05 | SanDisk Technologies, Inc. | Multi-level redundancy code for non-volatile memory controller |
-
2017
- 2017-03-27 US US15/470,657 patent/US10379939B2/en active Active
- 2017-10-12 KR KR1020170132779A patent/KR102198611B1/ko active IP Right Grant
-
2018
- 2018-01-04 CN CN201810007552.3A patent/CN108268340B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
CN103839595A (zh) * | 2012-11-20 | 2014-06-04 | Arm有限公司 | 用于校正从存储器装置访问的数据中的错误的设备及方法 |
US20140317479A1 (en) * | 2013-03-15 | 2014-10-23 | Cisco Technology, Inc. | Methods and apparatus for error detection and correction in data storage systems |
US20140379671A1 (en) * | 2013-06-19 | 2014-12-25 | Exablox Corporation | Data scrubbing in cluster-based storage systems |
Also Published As
Publication number | Publication date |
---|---|
KR102198611B1 (ko) | 2021-01-05 |
US10379939B2 (en) | 2019-08-13 |
US20180189132A1 (en) | 2018-07-05 |
KR20180080683A (ko) | 2018-07-12 |
CN108268340A (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108268340B (zh) | 校正存储器中的错误的方法 | |
US20230229555A1 (en) | Dram assist error correction mechanism for ddr sdram interface | |
US11734106B2 (en) | Memory repair method and apparatus based on error code tracking | |
US10372531B2 (en) | Error-correcting code memory | |
CN107943609B (zh) | 存储器模块、存储器控制器和系统及其相应操作方法 | |
US8869007B2 (en) | Three dimensional (3D) memory device sparing | |
US20140047265A1 (en) | Enhanced storage of metadata utilizing improved error detection and correction in computer memory | |
US20120239996A1 (en) | Memory controller, information processing apparatus and method of controlling memory controller | |
US10606692B2 (en) | Error correction potency improvement via added burst beats in a dram access cycle | |
EP3462318B1 (en) | Memory controller error checking process using internal memory device codes | |
US11726665B1 (en) | Memory extension with error correction | |
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 | |
US11188417B2 (en) | Memory system, memory module, and operation method of memory system | |
US11928027B1 (en) | System and method for error checking and correction with metadata storage in a memory controller | |
US20080148132A1 (en) | Error detection and correction scheme for multi-level cell NAND flash | |
US20030182611A1 (en) | Method for verifying error correction code function of a computer system | |
US10740179B2 (en) | Memory and method for operating the memory | |
WO2023106434A1 (ko) | Ddr sdram 인터페이스를 이용한 dram 지원 에러 정정 방법 | |
CN117795466A (zh) | 使用子命令的存取请求管理 | |
RU2465636C1 (ru) | Способ исправления одиночных ошибок и предотвращения возникновения двойных ошибок в регистровом файле и устройство для его осуществления |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |