CN110352407A - 纠错码存储器 - Google Patents

纠错码存储器 Download PDF

Info

Publication number
CN110352407A
CN110352407A CN201880014974.1A CN201880014974A CN110352407A CN 110352407 A CN110352407 A CN 110352407A CN 201880014974 A CN201880014974 A CN 201880014974A CN 110352407 A CN110352407 A CN 110352407A
Authority
CN
China
Prior art keywords
data
ecc
memory
signal
write
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
CN201880014974.1A
Other languages
English (en)
Inventor
I·珀若撒盼
P·萨拉夫
D·P·M·费尔南迪斯
S·贾兰
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of CN110352407A publication Critical patent/CN110352407A/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/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/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/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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • 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
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3776Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using a re-encoding step during the decoding process
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2263Write conditionally, e.g. only if new data and old data differ
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/229Timing of a write operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

在所描述的示例中,一种非暂时性机器可读介质包括编译器(56),编译器(56)检测源代码(52)中包括的循环中的软中断指示符,并且编译器(56)应用软件流水线操作来为循环生成编译代码(58)。编译代码(58)包括汇编指令,并且软中断指示符使编译器(56)能够在执行软中断之后安排汇编指令以完成循环的空中迭代。

Description

纠错码存储器
技术领域
本公开总体涉及纠错码存储器,更具体地涉及用于纠错码存储器的控制器。
背景技术
使用纠错码(ECC)保护其数据免受瞬时错误的存储器被称为ECC存储器。纠错码(ECC)存储器是一种可以检测和纠正最常见的内部数据损坏类型的计算机数据存储。ECC存储器被用于几乎在任何情况下都不能容忍数据损坏的计算机,诸如用于安全计算、科学计算和/或金融计算的计算机。ECC存储器具有纠错码(ECC)位以及数据,以便于检测和纠正错误。额外的纠错码位可以与数据一起被存储在数据存储器中或者被存储在ECC存储器的单独的代码存储器中。常见的纠错码、单纠错和双错误检测(SECDED)汉明码允许纠正单个位错误并且检测双位错误。
在一些示例中,ECC存储器维持存储器系统免受单个位错误的影响。因此,从ECC存储器中的每个字读取的数据与已经写入ECC存储器的数据相同,即使先前存储的一个或多个位已经被翻转到错误状态。ECC方案可以基于大于可以被写入的最小数据大小的数据大小,其被称为“部分数据写入”。对于这种部分数据写入,执行读取-修改-写入操作。为了执行读取-修改-写入操作,数据是来自存储器的读取数据并且使用ECC检查逻辑检查数据的错误。在单个位错误(SBE)的情况下,使用纠正逻辑修复数据,然后将纠正的读取数据与部分写入数据组合并且写入数据存储器。组合数据还用于计算要写入代码存储器的新的ECC代码。
发明内容
在第一示例中,存储器控制器包括读取-修改-写入逻辑模块,该读取-修改-写入逻辑模块接收对纠错码(ECC)存储器中的部分写入数据的部分写入数据请求,并且在纠正读取数据之前将部分写入数据请求中的部分写入数据与从ECC存储器提供的读取数据组合以形成组合数据。存储器控制器还包括写入控制模块,该写入控制模块控制组合数据到ECC存储器的写入。
在第二示例中,存储器控制器包括ECC检查和修复模块,该ECC检查和修复模块从ECC存储器接收读取数据和纠错码,并且提供指示是否在读取数据的至少一个位位置中检测到错误的ECC错误信号。存储器控制器还包括读取-修改-写入逻辑模块,该读取-修改-写入逻辑模块接收对ECC存储器中的部分写入数据的部分写入数据请求,并且在ECC检查和修复模块检测读取数据的至少一个位位置中的错误之前,将部分写入数据请求中的部分写入数据与从ECC存储器提供的读取数据组合以形成组合数据。存储器控制器进一步包括写入控制模块,该写入控制模块基于ECC错误信号,控制组合数据到ECC存储器的写入。
在第三示例中,一种方法包括接收对ECC存储器中的数据的部分写入数据请求。该方法还包括将部分写入数据请求中的部分写入数据与从ECC存储器提供的读取数据组合以形成组合数据。该方法还包括与组合并行地检查读取数据的准确性。
附图说明
图1是用于执行部分存储器写入的存储器控制器的一个示例的框图。
图2是用于执行部分存储器写入的存储器控制器的另一示例的框图。
图3是可以由图2的存储器控制器采用的示例波形的时序图。
图4是用于执行部分存储器写入的存储器控制器的又一示例的框图。
图5是可以由图2的存储器控制器采用的示例波形的时序图。
图6是用于执行部分存储器写入的一个示例方法的流程图。
图7是用于执行部分存储器写入的另一示例方法的流程图。
具体实施方式
示例实施例包括用于在部分存储器写入操作期间实现纠错码(ECC)保护存储器的存储器控制器和方法。存储器控制器被配置为以满足包括部分宽度数据写入的大存储器(数据存储)的ECC核(主要/主控制器)的相对严格的时序要求的方式操作。
在至少一个示例中,存储器控制器在部分写入期间实现并行操作的读取路径和写入路径。例如,在并行操作中,在纠正读取数据中的错误之前,将从ECC存储器读取的数据(“读取数据”)与部分写入数据组合。采用产生的组合数据以在写入路径上生成新的纠错码。为了简化说明,如下面所使用的,术语“ECC”表示硬件(例如,ECC存储器),术语“纠错码”表示代表纠错码的数据的实际实例,其也可以被称为错误代码字。
并行(例如,同时操作并且在并行路径上操作),重新生成(重新计算)纠错码,并且通过将重新生成的纠错码与代码存储器中的存储的纠错码进行比较,为读取数据生成校正子。在单个位错误检测的情况下,该校正子用于解码数据位错误位置。如果发现错误位于的位位置用于生成用于计算部分写入的新的纠错码的组合数据,则存储器控制器翻转损坏的位(通过XOR操作),并且得到的修复数据(其包括部分写入数据)被写入存储器。类似地,通过使用相对简单的逻辑门操作(例如,一级逻辑)(通过XOR功能)来翻转纠错码中受损坏的数据位影响的位,以生成修复的纠错码,该修复的纠错码被写入ECC存储器。通过并行地生成用于读取路径和写入路径的纠错码,通过避免需要对纠错码进行连续(接连)计算来放宽控制器的定时。例如,通过采用并行路径,如本文所描述的,部分写入可以在两(2)个时钟周期内完成。在这种情况下,在第一个时钟周期期间,从数据存储器读取数据。在第二个时钟周期期间,通过将部分写入中的数据与读取数据组合来生成组合数据,为组合数据计算新的纠错码,并且(在XOR功能之后)将组合数据和新的纠错码写入ECC存储器。
在另一示例中,存储器控制器在读取路径和写入路径上实现流水线并行处理以执行部分存储器写入操作。在涉及大容量(例如,1千兆字节或更大)的存储器的高频设计中,存储器延迟可能禁止在读取路径上添加更多逻辑电平。在这种情况下,在读取路径上使用读取数据之前,读取数据被寄存(register)(被存储在延迟中)。寄存在读取路径上的纠错码计算和校正子解码之前。该寄存导致部分存储器写入(在读取-修改-写入操作中)的等待时间增加至少一个时钟周期,使得部分写入操作在至少3个时钟周期而不是2个时钟周期内完成。然而,通过采用流水线并行操作可以避免/减轻额外的时钟周期,如下面所描述的。
在部分写入的流水线并行操作中,在第一时钟周期中,数据被从ECC存储器中读取(“读取数据”)。此外,停止信号被断言到主控制器以将ECC存储器的写控制信号保持再多一个时钟周期。在第二时钟周期中,通过存储器控制器将读取数据与部分写入数据组合以形成组合数据,并且ECC生成器生成新的纠错码。组合数据和新的纠错码被写入ECC存储器,并且停止信号被去断言。此外,在第二时钟周期中,读取数据在延迟(触发器)中被寄存。
寄存的读取数据在第三时钟周期可用,并且检查寄存的读取数据以发现数据损坏。在单个位错误的情况下,存储器控制器将停止信号重新断言一个附加的时钟周期,以使用正确的值更新ECC存储器中的数据和纠错码。因为预期存储器位损坏的概率非常低且不频繁(例如,小于约0.00001%的时间),所以用于纠错的另外一个时钟周期的附加等待时间并无大碍。
图1示出用于通过读取-修改-写入操作对ECC存储器52执行部分写入的存储器控制器50的一部分的框图。术语“部分写入”可以替代地称为部分数据写入或部分数据传输。ECC存储器52是非暂时性机器可读介质(例如,随机存取存储器),其可以在需要高度准确的(例如,未损坏的)数据的情况下采用。因此,ECC存储器52通常用于诸如汽车制动控制和/或气囊部署的安全应用中,其中不正确的数据(损坏的数据)可能导致安全系统的功能不当。然而,ECC存储器52可以被部署在几乎任何需要或期望高度准确数据的计算环境中。ECC存储器52包括数据存储器54和代码存储器56。
数据存储器54包括用于存储数据的存储器单元,并且代码存储器56包括用于为存储在数据存储器54中的数据存储纠错码的数据单元。数据字(简称为“字”)由数据存储器54中的多个单元形成,并且代码存储器56是唯一可寻址的。存储在ECC存储器52的数据存储器54中的数据具有K位的指定字大小,其中K是等于或大于等于二(2)的整数。
在至少一个示例中,存储器控制器50包括读取-修改-写入逻辑58(读取-修改-写入逻辑模块),读取-修改-写入逻辑58响应于部分写入数据请求(在图1中标记为“部分WR数据”)在ECC存储器52上执行读取-修改-写入操作。部分写入数据请求包括数据存储器54中的字的唯一地址。此外,部分写入数据请求包括要写入数据存储器54的T个位,其中T是大于或等于一(1)且小于K(即数据存储器54的字大小)的整数。因此,如果数据存储器54具有64位的字大小,则在读取-修改-写入操作中,T可以是1-63位,以写入数据存储器54。
读取-修改-写入逻辑58接收低电平有效存储器使能信号(图1中的“EZ”)和低电平有效写入使能信号(图1中的“WZ”),这与部分写入数据请求同时。如本文所使用的,在低电平有效信号是逻辑‘0’的情况下断言低电平有效信号,并且在低电平有效信号是逻辑‘1’的情况下去断言低电平有效信号。如果存储器使能EZ被去断言(例如,逻辑‘1’),则包括在ECC存储器52中的存储器单元是无效的,不能被读取并且不能被写入。相反,如果EZ被断言(例如,逻辑‘0’),则包括在ECC存储器中的存储器单元是有效的,并且可以被从其读取和/或被向其写入。此外,WZ被去断言(例如,逻辑‘1’)而EZ被断言(例如,逻辑‘0’),则ECC存储器52正在执行读取操作。而且,如果WZ被断言(例如,逻辑‘0’)而EZ被断言(例如,逻辑‘0’),则ECC存储器正在执行写入操作。
响应于写入信号、WZ和存储器使能信号EZ被断言(例如,逻辑‘0’),读取-修改-写入逻辑68断言低电平有效停止信号停止_N(逻辑‘0’),其阻止在ECC存储器52上的后续存储器操作。此外,读取-修改-写入逻辑58将地址信号MEM ADDR(被包括在部分写入数据请求部分WR数据中)转发到ECC存储器52。作为响应,数据存储器54向读取-修改-写入逻辑58提供读取数据信号(图1中的“RD数据”)。读取数据信号RD数据包括存储在信号(例如,数据字)的地址中识别的数据存储器45的存储器位置处的数据。
响应于读取数据信号RD数据,读取-修改-写入逻辑58将RD数据中的数据与部分写入数据请求部分WR数据中的数据组合以形成组合数据,并且生成写入数据信号(图1中的“WR数据”)。写入数据信号WR数据包含要写入数据存储器54的相同位置(由地址信号MEMADDR识别的位置)的组合数据。在读取数据信号RD数据中的数据的任何纠错之前生成写入数据信号WR数据。写入数据信号WR数据被提供给写入控制62(写入控制模块)和ECC生成器64。
响应于写入数据信号WR数据,ECC生成器64为包括在写入数据信号WR数据中的组合数据生成新的纠错码,并且将新的纠错码转发到写入控制62。写入控制62控制数据到数据存储器54和代码存储器56的写入定时。
在第一示例(下文中,“第一示例”)中,读取数据信号RD数据也被提供给ECC检查和修复60(ECC检查和修复模块),第一示例可以被称为并行操作,并且将参照图2详细描述。此外,响应于地址信号MEM ADDR,ECC存储器52的代码存储器56向ECC检查和修复60提供纠错码信号(图1中的“ECC1”)。纠错码信号ECC包括存储在代码存储器56中的地址处的纠错码,该代码存储器56中的地址对应于由地址信号MEM ADDR识别的地址,该地址可以称为错误代码地址。
继续第一示例,响应于读取数据信号RD数据,ECC检查和修复60采用纠错码ECC1以识别包括在读取数据信号RD数据中的数据中的错误。此外,ECC检查和修复60生成提供给写入控制62的数据修复模式信号(图1中的“数据修复模式”)。数据修复模式信号数据修复模式包括用于纠正错误的数据。类似地,ECC检查和修复60生成提供给写入控制62的ECC修复模式信号(“ECC修复模式”)。
在第一示例中,写入控制62采用写入数据信号WR数据中的组合数据和数据修复模式信号数据修复模式中的数据来生成修复数据信号,该修复数据信号包括在地址信号MEMIDDR中识别的地址处被写入数据存储器54的数据。此外,写入控制62采用来自ECC生成器64的新的纠错码和来自错误检查和修复60的ECC修复模式信号ECC修复模式,以生成用于在错误代码地址处被写入代码存储器56的数据的修复的纠错码。此外,在写入修复的纠错码之后,读取-修改-写入逻辑58去断言停止信号停止_N(例如,逻辑‘1’)以启用ECC存储器52上的后续存储器操作。
在第二示例(下文中,“第二示例”)中,响应于写入数据信号WR数据和新的纠错码,写入控制62在地址信号MEM ADDR中识别的地址处将组合数据写入数据存储器54,并且将新的纠错码写入代码存储器56的错误代码地址,第二示例可以被称为流水线并行操作,并且将参考图4详细描述。此外,读取-修改-写入逻辑58去断言停止信号停止_N(例如,逻辑‘1’)。
随后,分析读取数据信号RD数据(在延迟中寄存)和纠错码ECC1的错误,并且如果ECC检查和修复60确定被包括在读取数据信号RD数据中的数据中存在单个位错误,则ECC检查和修复60断言(例如,逻辑‘1’)ECC单个位错误信号(图1中的“ECC SBE”)并且将ECC单个位错误信号ECC SBE提供给写入控制62和读取-修改-写入逻辑58。ECC单个位错误信号ECCSBE可以替代地称为ECC错误信号。相反,如果ECC检查和修复60确定在读取数据信号RD数据中没有错误,则ECC单个位错误信号ECC SBE被去断言(例如,逻辑‘0’)并且被提供给写入控制62和读取-修改-写入逻辑58。
在第二示例中,响应于单个位错误信号ECC SBE被断言(例如,逻辑‘1’),读取-修改-写入逻辑58断言停止信号停止_N(例如,逻辑‘0’),其防止后续数据传输用于ECC存储器52上的其他操作。此外,断言单个位错误信号ECC SBE,使写入控制62采用数据修复模式信号数据修复模式和ECC修复模式信号ECC修复模式来纠正写入地址信号MEM ADDR中识别的数据存储器54的地址的数据和写入代码存储器56的错误地址的纠错码。此外,读取-修改-写入逻辑58去断言停止信号停止_N,并且允许ECC存储器52上的后续操作。
相反,在第二示例中,响应于单个位错误信号ECC SBE被去断言(例如,逻辑‘0’),读取-修改-写入逻辑58继续去断言停止信号停止_N(例如,逻辑‘0’)。以这种方式,不改变写入ECC存储器52的组合数据和新的纠错码。
在第一示例和第二示例两者中,在读取数据信号RD数据中的数据的纠错之前,(包括在RD数据中的)数据从数据存储器54读取并且与部分写入数据请求部分WR数据中的数据组合。因此,与其他操作并行地执行纠错,以减少读取-修改-写入操作的等待时间。
图2示出用于利用读取-修改-写入操作对ECC存储器102执行部分写入的存储器控制器100的一部分的框图的另一示例。存储器控制器100以并行操作执行处理。在至少一个示例中,存储器控制器100可以被采用以实现图1中所示的存储器控制器50。ECC存储器102是非暂时性机器可读介质(例如,随机存取存储器),其可以在诸如安全应用(例如,汽车)、金融应用等的需要高度准确的(例如,未损坏的)数据的情况下采用。ECC存储器102包括数据存储器104和代码存储器106。
数据存储器104包括用于存储数据的存储器单元,并且代码存储器106包括用于为存储在数据存储器104中的数据存储纠错码的数据单元。字由数据存储器104中的多个单元形成,并且代码存储器106是唯一可寻址的。存储在ECC存储器102的数据存储器104中的数据具有K位的指定字大小。
在至少一个示例中,存储器控制器100包括读取-修改-写入逻辑108,该读取-修改-写入逻辑108响应于部分写入数据请求(在图2中标记为“部分WR数据”)在ECC存储器102上执行读取-修改-写入操作。部分写入数据请求部分WR数据包括数据存储器104中的字的唯一地址。此外,部分写入数据请求部分WR数据包括要写入数据存储器104的T个位,其中T是大于或等于一(1)且小于K(即数据存储器104的字大小)的整数。因此,如果数据存储器104具有32位的字大小,则在读取-修改-写入操作中,T可以是1-31位,以写入数据存储器104。
读取-修改-写入逻辑108部分数据接收低电平有效存储器使能信号(图2中的“EZ”)和低电平有效写入使能信号(图2中的“WZ”,这与部分写入数据请求部分WR数据同时。响应于写入使能信号WZ和存储器使能信号EZ被去断言(例如,逻辑‘0’),在第一时钟周期(来自主存储器控制器,未示出)中,读取-修改-写入逻辑108断言停止信号停止_N,其阻止ECC存储器102上的后续存储器操作。此外,读取-修改-写入逻辑108将地址信号MEM ADDR(作为部分写入数据信号部分WR数据中的ADDR被包括到数据存储器)转发到ECC存储器102。读取-修改-写入逻辑108还提供对应于存储器使能信号MZ和写入使能信号WZ的低电平有效断言条件存储器使能信号MEM EZ(例如,逻辑‘0’)和低电平有效去断言条件存储器重写信号MEM WZ(例如,逻辑‘1’)。作为响应,数据存储器104向读取-修改-写入逻辑108和ECC检查和修复112的ECC生成器110提供读取数据信号(图1中的“RD数据”)。读取数据信号RD数据包括存储在地址信号MEM ADDR(例如,数据字)中识别的存储器地址处的数据。进一步响应于地址信号MEM ADDR,ECC存储器102的代码存储器106将纠错码信号(图2中的“ECC1”)提供给ECC检查和修复112的ECC比较114。纠错码信号ECC包括存储在代码存储器106中的地址处的错误代码,该代码存储器106中的地址对应于由地址信号MEM ADDR识别的地址,该地址可以称为错误代码地址。
在第二时钟周期(来自主存储器控制器)中,响应于读取数据信号RD数据,读取-修改-写入逻辑108通过将RD数据中的数据与部分写入数据请求部分WR数据中的数据组合来修改RD数据中的数据,以生成写入数据信号(图2中的“WR数据”)。此外,读取-修改-写入逻辑108断言MEM_WZ信号(例如,逻辑‘0’)。写入数据信号WR数据包含要写入数据存储器104的相同位置(由地址信号MEM ADDR识别的位置)的组合数据。在采用任何纠错码以纠正可能先前存储在数据存储器104中的数据的错误之前,生成写入数据信号WR数据。写入数据信号WR数据被提供给写入控制118的XOR数据逻辑116和ECC生成器120。此外,读取-修改-写入逻辑108去断言停止信号停止_N。
此外,在第二时钟周期中,响应于写入数据信号WR数据,ECC生成器120生成提供给XOR ECC逻辑119(XOR门逻辑)的纠错码。此外,在第二时钟周期期间,在并行操作中,响应于读取数据信号RD数据,ECC检查和修复112的ECC生成器110为包括在读数据信号RD数据中的数据生成重新计算的纠错码(图2中的“ECC2”)。重新计算的纠错码ECC2被提供给ECC比较114。ECC比较114将从代码存储器106提供的纠错码ECC1与重新计算的纠错码ECC2进行比较,并且生成识别被包括在读取数据信号RD数据中的数据中的错误的校正子信号(图2中的“校正子”)。例如,校正子信号校正子识别读取数据信号RD数据中的位被破坏。在至少一个示例中,自生成纠错码ECCI以来(在数据存储器104处的存储时),如果被包括在读取数据信号RD数据和/或纠错码ECC1中的数据中没有位已经改变,则校正子信号校正子具有逻辑‘0’的值。在该示例中,自生成纠错码ECCl以来,如果被包括在读取数据信号RD数据中的数据中的一个或多个位已经改变,则校正子信号校正子被设置为识别读取数据信号RD数据的数据中的特定位已经被损坏的值。
将校正子信号校正子提供给数据修复查找表(LUT)122和ECC修复LUT124。数据修复LUT 122将校正子信号转换为提供给写入控制118的XOR数据逻辑116的数据修复模式信号(图2中的“数据修复模式”)。数据修复模式信号数据修复模式包含这样的数据,其可用于将读取数据信号RD数据中的数据恢复/纠正到与数据读取信号RD数据中的数据相同的值,恢复/纠正到正确值。类似地,ECC修复LUT 124将校正子信号校正子转换为可用于恢复/纠正纠错码ECC1的ECC修复模式信号(图2中的“ECC修复模式”)。
XOR数据逻辑116对数据修复模式信号数据修复模式和写入数据信号WR数据执行XOR功能,以生成修复的数据值,该修复的数据值被写入在地址信号MEM ADDR中识别的数据存储器104的存储器地址中。例如,在将纠正数据写入数据存储器104之前,XOR数据逻辑116翻转(“XOR”)被破坏的数据位(由校正子信号校正子识别)。XOR ECC逻辑119对ECC修复模式信号ECC修复模式和新的纠错码执行XOR功能,以生成在错误代码地址处被写入代码存储器106的修复的数据值。例如,XOR ECC逻辑126翻转受被损坏的数据影响的纠错码位,以生成被写入代码存储器106的修复的纠错码。此外,读取-修改-写入逻辑去断言条件存储器使能信号MEM EZ和条件存储器写入信号MEM WZ信号(例如,逻辑‘1’)。
图3示出存储器控制器100采用的示例波形的时序图150。在时序图150中,时钟信号CLK、地址信号ADDR和数据信号数据被包括在图2的部分写入数据信号部分WR数据中,或者作为单独的信号(未示出)被提供。时序图150示出D0到存储器地址A0的部分写入。
如时序图150所示,从数据存储器104读取存储器Q0并且将其与D0组合以形成存储器M0。存储器M0被写入地址A0中的数据存储器104。
再次参考图3,通过采用存储器控制器100的一部分,从数据存储器104读取的数据(RD数据)直接用于与部分写入数据请求部分WR数据中的数据组合。因此,(在写入路径中)由ECC生成器120执行的纠错码生成与由ECC检查和修复112的ECC生成器110执行的纠错码重新生成并行操作。因此,读取-修改-写入操作的定时路径避免了连续(例如,接连)生成纠错码的需要。
作为一个示例,由存储器控制器100执行的读取-修改-写入操作的关键路径由等式1定义。
CP=DR+ECC检查+Syndrome Decode+XOR(等式1)
其中:
CP是关键路径时间/延迟,以皮秒(ps)为单位;
DR是数据存储器104的clk2q(时钟到Q)延迟;
ECC检查是ECC生成器120和120产生纠错码引起的延迟,以及ECC比较114的比较时间;
Syndrome Decode是由数据修复LUT产生数据修复模式信号数据修复模式的延迟以及由ECC修复LUT 124产生ECC修复模式信号ECC修复模式的延迟;
XOR是通过XOR数据逻辑116对数据修复模式信号数据修复模式执行XOR逻辑的延迟时间和通过XOR ECC逻辑126对ECC修复模式信号ECC修复模式执行XOR逻辑的延迟时间。
在一些示例中,关键路径CP具有比采用连续生成纠错码的系统的关键路径低大约20%(或更大)的延迟。因此,存储器控制器100可用于具有高频时钟信号的系统中,而不需要附加的控制逻辑。
图4示出用于利用读取-修改-写入操作对ECC存储器202执行部分写入的存储器控制器200的一部分的框图的另一示例。在至少一个示例中,存储器控制器200被采用以实现流水线并行操作。在至少一个示例中,存储器控制器200可以被采用以实现图1中所示的存储器控制器50。ECC存储器202是非暂时性机器可读介质(例如,随机存取存储器),其可以在诸如安全应用(例如,汽车)、金融应用等的需要高度准确的(例如,未损坏的)数据的情况下采用。ECC存储器202包括数据存储器204和代码存储器206。
数据存储器204包括用于存储数据的存储器单元,并且代码存储器206包括用于为存储在数据存储器204中的数据存储纠错码的数据单元。字由数据存储器204中的多个单元形成,并且代码存储器206是唯一可寻址的。存储在ECC存储器202的数据存储器204中的数据具有K位的指定字大小。
在至少一个示例中,存储器控制器200包括读取-修改-写入逻辑208,该读取-修改-写入逻辑208响应于部分写入数据请求(在图2中标记为“部分WR数据”)在ECC存储器202上执行读取-修改-写入操作部分数据。部分写入数据请求部分WR数据包括数据存储器204中的字的唯一地址。此外,部分写入数据请求部分WR数据包括要写入数据存储器204的T个位,其中T是大于或等于一(1)且小于K(即数据存储器204的字大小)的整数。因此,如果数据存储器204具有32位的字大小,则在读取-修改-写入操作中,T可以是1-31位,以写入数据存储器204。
读取-修改-写入逻辑208部分数据接收低电平有效存储器使能信号(图4中的“EZ”)和低电平有效写入使能信号(图4中的“WZ”),这与部分写入数据请求部分WR数据同时。响应于写入使能信号WZ和存储器使能信号EZ被断言(例如,逻辑‘1’),在第一时钟周期(来自主要/主存储器控制器,未示出),读取-修改-写入逻辑208断言低电平有效停止信号停止_N(例如,逻辑‘0’),其阻止ECC存储器202上的后续存储器操作。此外,读取-修改-写入逻辑208将地址信号MEM ADDR(作为ADDR被包括在部分写入数据信号部分WR数据中)转发到ECC存储器202。读取-修改-写入逻辑208还转发被断言的低电平有效条件存储器使能信号MEM EZ(例如,逻辑‘0’)和去断言的条件存储器写入信号MEM WZ(例如,逻辑‘1’)。作为响应,数据存储器204将读取数据信号(图1中的“RD数据”)提供给读取-修改-写入逻辑208和延迟210(例如,触发器),从而对读取数据信号RD数据中的数据进行寄存/流水线操作。读取数据信号RD数据包括存储在地址信号(例如,数据字)中识别的存储器位置处的数据。在预定延迟(例如,大约一(1)个时钟周期)之后,延迟210将读取数据信号RD数据传递到ECC检查和修复214的ECC生成器212。延迟210还将读取数据信号RD数据传递到写入控制218的XOR数据逻辑216(例如,XOR门)。
进一步响应于地址信号MEM ADDR,ECC存储器202的代码存储器206向延迟220提供纠错码信号(图4中的“ECC”),从而寄存纠错码信号ECC。纠错码信号ECC包括存储在代码存储器206中的地址处的错误代码,该代码存储器206中的地址对应于由地址信号MEM ADDR识别的地址,该地址可以被称为错误代码地址。在预定的延迟(例如大约一个时钟周期)之后,延迟220将纠错码信号ECC传递到ECC检查和修复214的ECC比较222。延迟210和延迟220被示为ECC检查和修复214的功能块。但是在其他示例中,延迟210和/或延迟220可以在ECC检查和修复214的外部实现。
在第二时钟周期(来自主要存储器控制器)中,响应于读取数据信号RD数据,读取-修改-写入逻辑208通过将RD数据中的数据与部分写入数据请求部分WR数据中的数据组合来修改RD数据中的数据,以生成组合数据。读取-修改-写入逻辑208生成写入数据信号(图4中的“WR数据”)并且断言条件存储器写入信号MEM EZ(例如,逻辑‘0’)。写入数据信号WR数据包含要写入数据存储器204中的相同位置(由地址信号MEM ADDR识别的位置)的组合数据。在采用任何纠错码以纠正可能先前存储在数据存储器204中的数据的错误之前生成写入数据信号WR数据。写入数据信号WR数据被提供给写入控制218的数据多路复用器(MUX)224的输入节点和ECC生成器226。
ECC生成器226为写入数据信号WR数据中的组合数据生成新的纠错码,并且将新的纠错码传递给ECC MUX 228的输入和延迟230。在预定量的时间(例如,一个时钟周期)之后,延迟230将新的纠错码传递到写入控制218的XOR逻辑232。此外,读取-修改-写入逻辑208去断言(例如,逻辑‘1’)停止信号停止_N。而且,在一些示例中,读取-修改-写入逻辑208还去断言(例如,逻辑‘1’)条件存储器写入信号MEM WZ。
XOR数据逻辑216向数据MUX 224的另一输入提供信号。而且,XOR ECC逻辑232向ECC MUX 228的另一输入提供信号。此外,ECC比较222将ECC单个位错误(图4中的“ECCSBE”)提供给数据MUX 224和ECC MUX 228的控制/选择节点。在第二时钟周期期间,ECC单个位错误信号ECC SBE被去断言(例如,逻辑‘0’),使得数据MUX 224和ECC MUX 228选择分配给写入数据信号WR数据的输入节点。响应于单个位错误信号ECC SBE,数据多路复用器224将写入数据信号WR数据中的组合数据写入地址信号MEM ADDR中识别的数据存储器204中的地址。而且,ECC MUX 228将新的纠错码写入代码存储器206中的相应的错误地址。以这种方式,用ECC存储器202寄存组合数据。
此外,在第三时钟周期中,在将组合数据写入数据存储器204并且将新的纠错码写入代码存储器205之后,将寄存/流水线操作的读取数据RD数据从延迟210输出到ECC生成器212。类似地,延迟220处的纠错码ECC1将寄存/流水线操作的纠错码ECC1输出到ECC比较222。ECC检查和修复214的ECC生成器212为包括在读取数据信号RD数据中的数据生成重新计算的纠错码(图4中的“ECC2”)。重新计算的纠错码ECC2被提供给ECC比较222。ECC比较222将从延迟220提供的纠错码ECC1与重新计算的纠错码ECC2进行比较,并且生成识别包括在读取数据信号RD数据中的数据中的错误的校正子信号(图4中的“校正子”)。在至少一个示例中,自生成纠错码ECC1(在数据存储器204处的存储时)以来,如果包括在读取数据信号RD数据中的数据和/或纠错码ECC1中的位没有改变,则校正子信号校正子具有逻辑‘0’的值。在该示例中,自生成纠错码ECC1以来,如果包括在读取数据信号RD数据中的数据中的一个或多个位已经改变(例如,通过损坏),则校正子信号校正子被设置为识别读取数据信号RD数据和/或纠错码ECC1的数据中的特定位已经被损坏的值。
ECC比较222基于校正子信号的值设置ECC单个位错误信号ECC SBE。例如,如果校正子信号校正子具有指示读取数据信号RD数据和/或纠错码ECC1中的数据中没有错误的值,则ECC比较222保持单个位错误信号ECC SBE处于初始状态(例如,逻辑‘0’)。相反,如果校正子信号校正子具有指示读取数据信号RD数据和/或纠错码ECC1中的数据中没有错误的值,则ECC比较222设置单个位错误信号ECC SBE为错误状态(例如,逻辑‘1’)。如本文所描述的,ECC单个位错误信号ECC SBE被提供给读取-修改-写入逻辑208、数据MUX224和ECC MUX228。
校正子信号校正子被提供给数据修复LUT 234和ECC修复LUT 236。数据修复LUT234将校正子信号转换为提供给写入控制218的XOR数据逻辑216的数据修复模式信号(图2中的“数据修复模式”)。数据修复模式信号数据修复模式包含可用于纠正读取数据信号RD数据中的被损坏的数据的数据。类似地,ECC修复LUT 236将校正子信号校正子转换为ECC修复模式信号(图4中的“ECC修复模式”),该ECC修复模式信号可用于恢复纠错码ECC 1。
XOR数据逻辑216对数据修复模式信号数据修复模式和从延迟210提供的读取数据信号RD数据的数据执行XOR功能,以生成输入到数据MUX 224的另一输入的修复数据值。例如,XOR数据逻辑216翻转(“XOR”)被损坏的数据位(由校正子信号校正子识别),这些被损坏的数据位被提供给数据MUX224的另一输入。XOR ECC逻辑232对ECC修复模式信号ECC修复模式和从延迟230提供的新的纠错码执行XOR功能,以生成提供给ECC MUX 228的另一输入的修复的纠错码。例如,XOR ECC逻辑232翻转受损坏数据影响的纠错码位,以生成提供给ECCMUX 228的另一输入的修复的纠错码。
在第三时钟周期期间,响应于接收到单个位错误信号ECC SBE处于错误状态(例如,逻辑‘1’),读取-修改-写入逻辑208断言停止信号停止_N和条件写入信号MEM WZ(例如,逻辑‘0’)。而且,响应于接收到单个位错误信号ECC SBE处于错误状态(例如,逻辑‘1’),数据MUX 224选择来自XOR数据逻辑216的另一输入,并且ECC MUX 228选择来自XOR ECC逻辑232的另一输入。此外,从XOR数据逻辑216提供给数据MUX 224的值(修复的数据)在地址信号MEM ADDR中识别的地址处被写入数据存储器204。类似地,从XOR ECC逻辑232提供给ECCMUX 228的值(修复的纠错码)被写入代码存储器206中的相应的错误地址。读取-修改-写入逻辑208去断言停止信号停止_N(例如,逻辑‘1’)。而且,在一些示例中,读取-修改-写入逻辑208去断言(例如,逻辑‘1’)条件存储器使能信号MEM EZ和条件写入信号WZ。
图5示出存储器控制器200采用的示例波形的时序图250。在时序图250中,时钟信号CLK、地址信号MEM ADDR和数据信号数据被包括在图4的部分写入数据信号WR数据中或者可以被单独提供(未示出)。时序图250示出D0到存储器地址A0的部分写入,以及D1到存储器地址A1的部分写入。
在时序图150中,读取数据信号RD数据提供数据Q0,数据Q0与数据信号D0中的数据组合以形成组合数据M0,组合数据M0被写入数据存储器204。然而,假设数据Q0中的错误是由ECC单个位错误信号ECC SBE的上升沿(指示错误状态)指示的。因此,停止信号停止_N被断言,并且数据被纠正以形成重新写入数据存储器204的数据M0’,这导致ECC信号位错误信号ECC SBE返回到初始状态。这允许D1到存储器地址A1的第二部分写入开始。第二部分写入将数据Q1与数据D1组合以形成写入存储器地址A1的组合数据M1。
再次参考图4,通过采用存储器控制器200的一部分,从数据存储器204读取的数据(RD数据)被直接用于与部分写入数据请求部分WR数据中的数据组合。此外,当发生错误时,采用第三时钟周期以纠正错误。但是,在许多应用中,错误极为罕见,通常以低于0.00001%的时间发生。因此,通过在完成错误检查和修复完成之前将数据写入ECC存储器202,可以实现显著的时间节省。因此,存储器控制器200通过在绝大多数时间(例如,大约0.99999%或更多),不需要纠正数据和/或纠错码的假设下操作来提供时间节省。
鉴于上文描述的前述结构和功能特征,参考图6和图7描述示例方法。为了简化说明,图6和图7的示例方法被示出并且被描述为连续执行,但是因为一些动作在其他示例中可以以不同顺序、多次和/或与本文所示和描述的动作同时发生,所以(除非另有说明)这些示例不受所示顺序的限制。此外,一些描述的动作对于实现方法是可选的。
图6示出用于对ECC存储器执行部分写入的示例方法300的流程图。例如,方法300可以由存储器控制器(诸如图1的存储器控制器50和/或图2的存储器控制器100)执行。在310处,读取-修改-写入逻辑(例如,读取-修改-写入逻辑58)接收对存储在ECC存储器(例如,ECC存储器52)的数据存储器(例如,数据存储器54)中的数据的部分写入数据请求。在320处,将从数据存储器读取的数据与存储器读取-修改-写入逻辑处的部分写入数据请求中的数据组合以形成组合数据。在330处,基于对读取数据和相应的纠错码的准确性的检查,通过ECC检查和修复(例如,ECC检查和修复60)生成数据修复模式信号和ECC修复模式信号。读取-修改-写入逻辑执行的组合与ECC检查和修复执行的检查并行。
在340处,由ECC生成器(例如,ECC生成器64)生成用于组合数据的纠错码。在350处,对数据修复模式信号和组合数据执行XOR功能,并且通过写入控制对ECC修复模式信号和组合数据的错误代码执行XOR功能,以生成修复的数据和修复的纠错码。在360处,将修复的数据和修复的纠错码写入ECC存储器。
图7示出用于对ECC存储器执行部分写入的另一示例方法400的流程图。例如,方法400可以由存储器控制器(诸如图1的存储器控制器50和/或图4的存储器控制器200)执行。在410处,读取-修改-写入逻辑(例如,读取-修改-写入逻辑58)接收对存储在ECC存储器(例如,ECC存储器52)的数据存储器(例如,数据存储器54)中的数据的部分写入数据请求。在420处,将从数据存储器读取的数据与存储器读取-修改-写入逻辑处的部分写入数据请求中的数据组合以形成组合数据。在430处,由ECC生成器(例如,ECC生成器64)生成用于组合数据的纠错码。在430处,ECC检查和修复(例如,ECC检查和修复60)检查读取数据和纠错码的准确性。
在440处,基于检查读取数据和相应的纠错码的准确性,由ECC检查和修复生成数据和ECC修复模式信号。在450处,写入控制可以将组合数据和修复的纠错码写入ECC存储器。在460处,可以通过ECC检查和修复来确定是否检测到错误。如果460处的确定是否定的(例如,否),则方法400可以返回到410(以处理下一个部分数据写入请求)。如果460处的确定是肯定的(例如,是),则方法400可以进行到470。而且,在460处,可以输出指示450处的确定的ECC单个位错误信号。
在470处,读取-修改-写入逻辑可以断言停止信号一个时钟周期,从而防止接收和执行后续的部分写入数据请求。在480处,写入控制可以应用XOR功能以生成修复的数据和ECC修复数据。在490处,写入控制将修复的数据和ECC修复数据写入ECC存储器。方法400返回410以处理下一个部分写入数据请求。
在本说明书中,术语“基于”意味着至少部分地基于。在权利要求的范围内,在所描述的实施例中可以进行修改,并且其他实施例也是可能的。

Claims (20)

1.一种存储器控制器,其包括:
读取-修改-写入逻辑模块,其接收对纠错码存储器即ECC存储器中的部分写入数据的部分写入数据请求,并且在纠正所述读取数据之前,将所述部分写入数据请求中的所述部分写入数据与从所述ECC存储器提供的读取数据组合,以形成组合数据;和
写入控制模块,其控制所述组合数据到所述ECC存储器的写入。
2.如权利要求1所述的存储器控制器,进一步包括:
ECC检查和修复模块,其响应于所述读取数据和纠错码生成修复数据模式信号;
其中所述ECC存储器将所述读取数据和所述纠错码提供到所述ECC检查和修复模块以及所述读取-修改-写入逻辑模块。
3.如权利要求2所述的存储器控制器,其中所述写入控制模块进一步包括:
XOR数据逻辑,其对所述数据修复模式信号和所述组合数据执行XOR功能即异或功能,以形成修复数据,所述修复数据被写入所述ECC存储器。
4.如权利要求3所述的存储器控制器,其中所述XOR功能翻转所述组合数据中的适当比特子集以形成所述修复数据。
5.如权利要求2所述的存储器控制器,其中所述ECC检查和修复模块从所述ECC存储器接收所述读取数据和所述纠错码,并且所述ECC检查和修复模块响应于所述读取数据和所述纠错码的接收而生成ECC修复模式信号,所述ECC修复模式信号被提供给所述写入控制模块。
6.如权利要求5所述的存储器控制器,进一步包括:
ECC生成器,其响应于所述组合数据的接收,生成新的纠错码。
7.如权利要求6所述的存储器控制器,其中所述写入控制进一步包括:
XOR ECC逻辑,其对所述ECC修复模式信号和来自所述ECC生成器的所述新的纠错码执行XOR功能即异或功能,以形成修复的纠错码,所述修复的纠错码被写入所述ECC存储器的代码存储器。
8.如权利要求2所述的存储器控制器,其中所述ECC检查和修复模块进一步包括:
ECC生成器,其响应于所述读取数据的接收,生成重新生成的纠错码;和
ECC比较模块,其将所述重新生成的纠错码与从所述ECC存储器提供的纠错码进行比较,并且基于比较结果生成ECC错误信号,其中所述ECC错误信号被提供给所述读取-修改-写入逻辑模块和所述写入控制模块。
9.如权利要求8所述的存储器控制器,其中所述存储器控制器寄存所述读取数据,并且所述读取-修改-逻辑模块响应于所述ECC错误信号指示所述读取数据的位位置中的至少一个具有错误,对于另外的时钟周期断言停止信号,其防止接受新的存储器读取或写入请求。
10.如权利要求8所述的存储器控制器,其中所述写入控制进一步包括:
XOR数据逻辑,其对所述数据修复模式信号和所述读取数据执行XOR功能即异或功能,以形成修复的数据信号;和
数据多路复用器,其接收相应输入节点处的所述组合数据和所述修复数据以及选择节点处的所述ECC错误信号。
11.如权利要求10所述的存储器控制器,其中所述数据多路复用器响应于所述ECC错误信号指示所述读取数据中不存在错误,将所述组合数据写入所述ECC存储器,并且所述数据多路复用器响应于所述ECC错误信号指示所述读取数据的至少一个位位置具有错误,将所述修复数据写入所述ECC存储器。
12.如权利要求8所述的存储器控制器,其中:
所述ECC检查和修复模块基于所述纠错码和所述读取数据生成ECC修复模式信号,所述ECC修复模式被提供给所述写入控制模块;
所述存储器控制器进一步包括为所述组合数据生成新的纠错码的另一个ECC生成器;并且
所述写入控制进一步包括:
XOR ECC逻辑,其对所述ECC修复模式信号和所述新的纠错码执行XOR功能即异或功能,以形成修复的纠错码;和
ECC多路复用器,其接收相应输入节点处的所述新的纠错码和所述修复的纠错码以及选择节点处的所述ECC错误信号。
13.如权利要求12所述的存储器控制器,其中所述ECC多路复用器响应于所述ECC错误信号指示在所述读取数据中没有检测到错误,将所述新的纠错码写入所述ECC存储器,并且所述数据多路复用器响应于所述ECC错误信号指示所述读取数据和所述纠错码中的至少一个具有检测到的错误,将所述修复的纠错码写入所述ECC存储器的所述代码存储器。
14.一种存储器控制器,其包括:
纠错码检查和修复模块即ECC检查和修复模块,其从ECC存储器接收读取数据和纠错码,并且提供ECC错误信号,所述ECC错误信号指示是否在所述读取数据的至少一个位位置中检测到错误;
读取-修改-写入逻辑模块,其接收对所述ECC存储器中的部分写入数据的部分写入数据请求,并且在所述ECC检查和修复模块检测所述读取数据的至少一个位位置中的错误之前,将所述部分写入数据请求中的所述部分写入数据与从所述ECC存储器提供的所述读取数据组合,以形成组合数据;和
写入控制模块,其基于所述ECC错误信号,控制所述组合数据到所述ECC存储器的写入。
15.如权利要求14所述的存储器控制器,其中所述存储器控制器寄存所述读取数据,并且所述读取-修改-写入逻辑模块响应于所述ECC错误信号指示在所述读取数据的至少一个位位置中检测到错误,对于另外的时钟周期断言停止信号,其中所述停止信号的断言防止接收后续读取请求或写入请求。
16.如权利要求14所述的存储器控制器,其中所述ECC检查和修复模块进一步包括:
ECC生成器,其响应于所述读取数据的接收,生成重新生成的纠错码;和
ECC比较模块,其将所述纠错码与所述重新生成的纠错码进行比较,以生成所述ECC错误信号和校正子信号,所述校正子信号识别所述读取数据中的一组位和/或所述纠错码具有错误。
17.如权利要求16所述的存储器控制器,其中所述ECC检查和修复模块进一步包括:
数据修复查找表即LUT,其响应于所述校正子信号生成数据修复模式信号,所述数据修复模式信号被提供给所述写入控制;和
ECC修复LUT,其响应于所述校正子信号生成ECC修复模式信号,所述ECC修复模式信号被提供给所述写入控制。
18.一种方法,其包括:
接收对纠错码存储器即ECC存储器中的数据的部分写入数据请求;
将所述部分写入数据请求中的部分写入数据与从所述ECC存储器的数据存储器提供的读取数据组合以形成组合数据;以及
与组合并行地检查所述读取数据的准确性。
19.如权利要求18所述的方法,进一步包括:
基于所述检查,生成数据修复模式信号;以及
基于所述检查,生成ECC修复模式信号。
20.如权利要求19所述的方法,进一步包括:
基于所述组合数据,生成新的纠错码;
对所述组合数据和所述数据修复模式信号执行XOR功能即异或功能;以及
对所述新的纠错码和所述ECC修复模式信号执行另一个XOR功能。
CN201880014974.1A 2017-01-05 2018-01-05 纠错码存储器 Pending CN110352407A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN201741000483 2017-01-05
IN201741000483 2017-01-05
US15/653,749 US10372531B2 (en) 2017-01-05 2017-07-19 Error-correcting code memory
US15/653,749 2017-07-19
PCT/US2018/012477 WO2018129246A1 (en) 2017-01-05 2018-01-05 Error-correcting code memory

Publications (1)

Publication Number Publication Date
CN110352407A true CN110352407A (zh) 2019-10-18

Family

ID=62708405

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880014974.1A Pending CN110352407A (zh) 2017-01-05 2018-01-05 纠错码存储器

Country Status (5)

Country Link
US (2) US10372531B2 (zh)
EP (1) EP3566139A1 (zh)
JP (1) JP7137569B2 (zh)
CN (1) CN110352407A (zh)
WO (1) WO2018129246A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112000511A (zh) * 2020-07-28 2020-11-27 京微齐力(北京)科技有限公司 一种基于汉明码的ecc电路优化方法

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2467852B1 (en) * 2009-08-20 2019-05-22 Rambus Inc. Atomic memory device
US10372531B2 (en) * 2017-01-05 2019-08-06 Texas Instruments Incorporated Error-correcting code memory
US10824504B2 (en) * 2018-04-16 2020-11-03 International Business Machines Corporation Common high and low random bit error correction logic
US10761927B2 (en) * 2018-07-16 2020-09-01 Taiwan Semiconductor Manufacturing Co., Ltd. Detection and correction of data bit errors using error correction codes
US10901839B2 (en) 2018-09-26 2021-01-26 International Business Machines Corporation Common high and low random bit error correction logic
CN109960605A (zh) * 2019-04-01 2019-07-02 江苏华存电子科技有限公司 一种支持部分写的ecc内存及数据部分写入的方法
US10866861B1 (en) * 2019-08-29 2020-12-15 Micron Technology, Inc. Deferred error-correction parity calculations
US11416336B2 (en) 2019-10-15 2022-08-16 International Business Machines Corporation Managing parity data associated with configuration register data
US11150814B2 (en) * 2019-10-28 2021-10-19 International Business Machines Corporation Utilizing a link interface for performing partial write operations to memory
US11422887B2 (en) 2019-12-26 2022-08-23 Micron Technology, Inc. Techniques for non-deterministic operation of a stacked memory system
WO2021133690A1 (en) 2019-12-26 2021-07-01 Micron Technology, Inc. Host techniques for stacked memory systems
KR20220110295A (ko) 2019-12-26 2022-08-05 마이크론 테크놀로지, 인크. 적층 메모리 시스템을 위한 진리표 확장
KR20210122455A (ko) 2020-04-01 2021-10-12 삼성전자주식회사 반도체 메모리 장치
KR20220067992A (ko) * 2020-11-18 2022-05-25 삼성전자주식회사 선택적 및 병렬적 에러 정정을 수행하는 메모리 컨트롤러, 이를 포함하는 시스템 및 메모리 장치의 동작 방법
KR20220069543A (ko) * 2020-11-20 2022-05-27 삼성전자주식회사 스토리지 장치, 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
KR20220106307A (ko) * 2021-01-22 2022-07-29 삼성전자주식회사 스토리지 장치 및 그 구동 방법
CN112925670B (zh) * 2021-03-17 2023-07-21 江西昌河汽车有限责任公司 一种基于ecc机制的flash异常自修复处理系统
US11586502B2 (en) * 2021-05-19 2023-02-21 Micron Technology, Inc. Performance and deadlock mitigation during a memory die fail storm
US11994333B2 (en) 2021-11-17 2024-05-28 Whirlpool Corporation Appliance fan assembly
KR102669845B1 (ko) * 2023-11-16 2024-05-28 주식회사 에이피랩스 SoC 버스 오류 검출과 메모리 오류 정정 장치 및 방법

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1167981A (zh) * 1995-12-25 1997-12-17 索尼公司 编码数字信号的解码装置和方法
US20030093744A1 (en) * 2001-11-14 2003-05-15 Monilithic System Technology, Inc. Error correcting memory and method of operating same
CN1771565A (zh) * 2003-08-18 2006-05-10 富士通株式会社 半导体存储器以及半导体存储器的操作方法
CN101211667A (zh) * 2006-12-29 2008-07-02 三星电子株式会社 降低误纠概率的纠错电路和方法和包括该电路的存储设备
US20100125765A1 (en) * 2008-11-20 2010-05-20 Yair Orbach Uninitialized memory detection using error correction codes and built-in self test
CN104583964A (zh) * 2012-09-28 2015-04-29 英特尔公司 与用于编码的数据的纠错相关联的技术
US20150143201A1 (en) * 2013-11-19 2015-05-21 International Business Machines Corporation Error-correcting code distribution for memory systems
US20150363263A1 (en) * 2014-06-12 2015-12-17 HGST Netherlands B.V. ECC Encoder Using Partial-Parity Feedback
US20160315639A1 (en) * 2014-12-19 2016-10-27 Micron Technology, Inc. Apparatuses and methods for pipelining memory operations with error correction coding
CN106201763A (zh) * 2015-05-22 2016-12-07 德克萨斯仪器股份有限公司 双模式纠错码/可写入一次存储器编解码器

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6053337B2 (ja) * 1980-10-09 1985-11-25 日本電気株式会社 誤り訂正符号発生兼誤り訂正回路
JPS61110247A (ja) * 1984-11-02 1986-05-28 Nec Corp 記憶装置
JPS62242258A (ja) * 1986-04-14 1987-10-22 Iwaki Denshi Kk 記憶装置
JPS62278651A (ja) * 1986-05-28 1987-12-03 Hitachi Ltd 部分書込制御装置
US5488691A (en) * 1993-11-17 1996-01-30 International Business Machines Corporation Memory card, computer system and method of operation for differentiating the use of read-modify-write cycles in operating and initializaiton modes
US5452429A (en) * 1993-11-17 1995-09-19 International Business Machines Corporation Error correction code on add-on cards for writing portions of data words
US6035369A (en) * 1995-10-19 2000-03-07 Rambus Inc. Method and apparatus for providing a memory with write enable information
US6161165A (en) 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
US5996105A (en) 1997-11-14 1999-11-30 Cirrus Logic, Inc. ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes
JP4105819B2 (ja) 1999-04-26 2008-06-25 株式会社ルネサステクノロジ 記憶装置およびメモリカード
US6785835B2 (en) * 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6854070B2 (en) * 2000-01-25 2005-02-08 Hewlett-Packard Development Company, L.P. Hot-upgrade/hot-add memory
US6640282B2 (en) * 2000-01-25 2003-10-28 Hewlett-Packard Development Company, L.P. Hot replace power control sequence logic
US6766469B2 (en) * 2000-01-25 2004-07-20 Hewlett-Packard Development Company, L.P. Hot-replace of memory
US6684292B2 (en) * 2001-09-28 2004-01-27 Hewlett-Packard Development Company, L.P. Memory module resync
US7028213B2 (en) * 2001-09-28 2006-04-11 Hewlett-Packard Development Company, L.P. Error indication in a raid memory system
US6938133B2 (en) * 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6981173B2 (en) * 2001-09-28 2005-12-27 Hewlett-Packard Development Company, L.P. Redundant memory sequence and fault isolation
US7155568B2 (en) * 2001-09-29 2006-12-26 Hewlett-Packard Development Company, L.P. Transaction generator for initialization, rebuild, and verify of memory
US20040163027A1 (en) * 2003-02-18 2004-08-19 Maclaren John M. Technique for implementing chipkill in a memory system with X8 memory devices
US7096407B2 (en) * 2003-02-18 2006-08-22 Hewlett-Packard Development Company, L.P. Technique for implementing chipkill in a memory system
US7099997B2 (en) 2003-02-27 2006-08-29 International Business Machines Corporation Read-modify-write avoidance using a boundary word storage mechanism
US7392456B2 (en) 2004-11-23 2008-06-24 Mosys, Inc. Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory
US7743311B2 (en) 2006-01-26 2010-06-22 Hitachi Global Storage Technologies Netherlands, B.V. Combined encoder/syndrome generator with reduced delay
US7958427B1 (en) 2007-03-30 2011-06-07 Link—A—Media Devices Corporation ECC with out of order completion
US8327242B1 (en) 2008-04-10 2012-12-04 Apple Inc. High-performance ECC decoder
US20090276587A1 (en) * 2008-04-30 2009-11-05 Moyer William C Selectively performing a single cycle write operation with ecc in a data processing system
US7814300B2 (en) * 2008-04-30 2010-10-12 Freescale Semiconductor, Inc. Configurable pipeline to process an operation at alternate pipeline stages depending on ECC/parity protection mode of memory access
US8291305B2 (en) * 2008-09-05 2012-10-16 Freescale Semiconductor, Inc. Error detection schemes for a cache in a data processing system
US8145985B2 (en) * 2008-09-05 2012-03-27 Freescale Semiconductor, Inc. Error detection schemes for a unified cache in a data processing system
US8949520B2 (en) 2009-01-22 2015-02-03 Rambus Inc. Maintenance operations in a DRAM
US8266498B2 (en) * 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
US9268632B2 (en) 2010-09-24 2016-02-23 Rambus Inc. Memory device with ECC history table
US9003260B2 (en) 2011-06-29 2015-04-07 Texas Instruments Incorporated Partial-writes to ECC (error check code) enabled memories
US9189329B1 (en) 2011-10-13 2015-11-17 Marvell International Ltd. Generating error correcting code (ECC) data using an ECC corresponding to an identified ECC protection level
CN110265071B (zh) * 2013-09-24 2023-05-12 拉姆伯斯公司 具有内部读取-修改-写入操作的存储部件
US9477550B2 (en) 2013-10-24 2016-10-25 Globalfoundries Inc. ECC bypass using low latency CE correction with retry select signal
US9354970B2 (en) * 2014-03-31 2016-05-31 Advanced Micro Devices, Inc. Method and apparatus for encoding erroneous data in an error correction code protected memory
JP6600146B2 (ja) 2015-03-27 2019-10-30 ルネサスエレクトロニクス株式会社 データ処理回路及びエラー訂正方法
US10176038B2 (en) * 2015-09-01 2019-01-08 International Business Machines Corporation Partial ECC mechanism for a byte-write capable register
US9985655B2 (en) * 2015-09-01 2018-05-29 International Business Machines Corporation Generating ECC values for byte-write capable registers
US10372531B2 (en) * 2017-01-05 2019-08-06 Texas Instruments Incorporated Error-correcting code memory

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1167981A (zh) * 1995-12-25 1997-12-17 索尼公司 编码数字信号的解码装置和方法
US20030093744A1 (en) * 2001-11-14 2003-05-15 Monilithic System Technology, Inc. Error correcting memory and method of operating same
CN1771565A (zh) * 2003-08-18 2006-05-10 富士通株式会社 半导体存储器以及半导体存储器的操作方法
CN101211667A (zh) * 2006-12-29 2008-07-02 三星电子株式会社 降低误纠概率的纠错电路和方法和包括该电路的存储设备
US20100125765A1 (en) * 2008-11-20 2010-05-20 Yair Orbach Uninitialized memory detection using error correction codes and built-in self test
CN104583964A (zh) * 2012-09-28 2015-04-29 英特尔公司 与用于编码的数据的纠错相关联的技术
US20150143201A1 (en) * 2013-11-19 2015-05-21 International Business Machines Corporation Error-correcting code distribution for memory systems
US20150363263A1 (en) * 2014-06-12 2015-12-17 HGST Netherlands B.V. ECC Encoder Using Partial-Parity Feedback
US20160315639A1 (en) * 2014-12-19 2016-10-27 Micron Technology, Inc. Apparatuses and methods for pipelining memory operations with error correction coding
CN106201763A (zh) * 2015-05-22 2016-12-07 德克萨斯仪器股份有限公司 双模式纠错码/可写入一次存储器编解码器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112000511A (zh) * 2020-07-28 2020-11-27 京微齐力(北京)科技有限公司 一种基于汉明码的ecc电路优化方法

Also Published As

Publication number Publication date
US10838808B2 (en) 2020-11-17
EP3566139A4 (en) 2019-11-13
JP2020514869A (ja) 2020-05-21
US10372531B2 (en) 2019-08-06
WO2018129246A1 (en) 2018-07-12
US20180189133A1 (en) 2018-07-05
EP3566139A1 (en) 2019-11-13
US20190317855A1 (en) 2019-10-17
JP7137569B2 (ja) 2022-09-14

Similar Documents

Publication Publication Date Title
CN110352407A (zh) 纠错码存储器
US7694198B2 (en) Self-repairing of microprocessor array structures
KR101374455B1 (ko) 메모리 에러와 리던던시
US20120072796A1 (en) Memory controller with automatic error detection and correction
US9760434B2 (en) ECC method for double pattern flash memory
US9208024B2 (en) Memory ECC with hard and soft error detection and management
US9042191B2 (en) Self-repairing memory
US10891185B2 (en) Error counters on a memory device
US20120079346A1 (en) Simulated error causing apparatus
US9529671B2 (en) Error detection in stored data values
US20100235695A1 (en) Memory apparatus and testing method thereof
AU597140B2 (en) Efficient address test for large memories
US9437327B2 (en) Combined rank and linear address incrementing utility for computer memory test operations
JP2017215958A (ja) 複数のデータビット及び複数のアドレスビットを有するブロックのエラーコード生成装置及び方法
US20040225932A1 (en) Systems and methods for scripting data errors to facilitate verification of error detection or correction code functionality
TWI527049B (zh) 操作記憶體之方法及記憶體裝置
US9329926B1 (en) Overlapping data integrity for semiconductor devices
US20150095740A1 (en) Error Detection and Correction in Binary Content Addressable Memory (BCAM)
KR102271054B1 (ko) 저장 데이터 값의 에러 검출
JPH0594377A (ja) パリテイ検出回路
US20200201559A1 (en) Semiconductor device, memory controller, and memory accessing method
CN112181712B (zh) 一种提高处理器核可靠性的方法及装置
TWI509622B (zh) 具分散錯誤功能的記憶體及其分散錯誤位元的方法
US20140136910A1 (en) Data communication apparatus and control method
US11928027B1 (en) System and method for error checking and correction with metadata storage in a memory controller

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