CN103137215A - 向存储器提供低延时错误纠正码能力 - Google Patents

向存储器提供低延时错误纠正码能力 Download PDF

Info

Publication number
CN103137215A
CN103137215A CN201210498603XA CN201210498603A CN103137215A CN 103137215 A CN103137215 A CN 103137215A CN 201210498603X A CN201210498603X A CN 201210498603XA CN 201210498603 A CN201210498603 A CN 201210498603A CN 103137215 A CN103137215 A CN 103137215A
Authority
CN
China
Prior art keywords
byte
data
ecc
component part
storage component
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.)
Granted
Application number
CN201210498603XA
Other languages
English (en)
Other versions
CN103137215B (zh
Inventor
朱军
J·J·曹
S·鲁
P·苏塔德雅
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN103137215A publication Critical patent/CN103137215A/zh
Application granted granted Critical
Publication of CN103137215B publication Critical patent/CN103137215B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • 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

Abstract

本发明涉及向存储器提供低延时错误纠正码(ECC)能力。提供了一种用于向存储器提供低延时错误纠正码(ECC)能力的存储器控制器。在一些实施方式中,控制器被配置成:接收存储器访问命令,该存储器访问命令包括与将向或者从存储器器件传送的数据相关联的地址和长度;以及向或者从存储器器件中与该地址和长度相关联的位置传送数据的一个或者多个字节和ECC信息的一个或者多个字节。

Description

向存储器提供低延时错误纠正码能力
相关申请的交叉引用
本公开根据35 U.S.C.§119(e)要求于2011年11月23日提交的、题为“Method of Low Latency ECC for Non-ECC DDR InterfaceConfiguration”的美国临时申请No.61/563,368和于2012年4月13日提交的、题为“Method of Low Latency ECC for Non-ECC DDRInterface Configuration”的美国临时申请No.61/623,864的优先权权益,其公开内容通过引用整体并入于此。
技术领域
本公开涉及用于存储器的错误纠正码(ECC)能力。
背景技术
存储器器件,诸如动态随机存取存储器(DRAM)可以包括存储器单元。每个存储器单元通常可以通过例如在电容器中保持或者不保持电荷来存储一个比特的信息。电荷的存在或者不存在例如在存储电荷时指示逻辑1而在不存储电荷时指示逻辑0。电扰动,诸如来自噪声或者辐射的干扰可能改变一个或者多个存储器单元的内容或者干扰用来读取数据和向存储器单元写入数据的电路。另外,存储器器件被设计成以越来越高的吞吐速率和越来越低的功率消耗进行操作,这可能造成越来越高的比特错误率。比特错误可能引起数据损坏、安全弱点或者系统崩溃。
错误纠正码(ECC)可以用来检测并且纠正比特错误。ECC通过生成与数据一起存储于存储器器件中的ECC数据,例如,冗余比特或者奇偶校验比特来对数据进行编码。例如,可以针对32比特数据或者64比特数据生成8个奇偶校验比特。针对32比特数据生成8比特奇偶校验的ECC通常可以检测32比特数据中的两个比特错误并且纠正一个比特错误。类似地,针对64比特数据生成8比特奇偶校验的ECC通常可以检测64比特数据中的两个比特错误并且纠正一个比特错误。
通常,在系统中使用ECC存储器器件来提供ECC能力。ECC存储器器件可以包括被设计用于存储ECC信息的额外存储器芯片。ECC存储器器件也可以包括下述接口:该接口可以提供对数据字及其对应ECC信息的同时访问。例如,可以针对每个32比特数据字提供8比特奇偶校验的ECC存储器器件可以包括40比特宽的接口用于访问32比特数据字。类似地,可以针对每个64比特数据字提供8比特奇偶校验的ECC存储器器件可以包括72比特宽的接口以用于访问64比特数据字。
传统ECC存储器器件通常通过针对数据字提供8比特奇偶校验来向数据字应用ECC保护。例如,40比特ECC存储器器件支持用于32比特数据字的8比特奇偶校验,这提供1比特错误纠正和2比特错误检测。当将向ECC存储器写入完整32比特数据字时,ECC存储器器件可以向ECC存储器直接写入32比特数据字和8比特奇偶校验。当将向ECC存储器写入部分32比特数据字时,ECC存储器器件可能需要执行读取-修改-写入(RMW)以向ECC存储器写入部分32比特数据字和8比特奇偶校验。
对于RMW,ECC存储器器件从ECC存储器读取与部分32比特数据对应的40比特ECC码字(32比特数据字和8比特奇偶校验)并且使用ECC对从ECC存储器读取的32比特数据字执行错误检测、纠正或者二者。继而,将要向ECC存储器写入的部分32比特数据字合并到从ECC存储器读取的32比特数据字中以生成新32比特数据字。ECC存储器器件针对该新32比特数据字生成新8比特奇偶校验并且向ECC存储器写入新ECC码字。
然而,RMW可能由于减少数据吞吐量并且增加访问延时而明显影响存储器器件的性能。为了向ECC存储器写入部分32比特或者64比特数据字,ECC存储器器件需要执行读取操作和写入操作。这可能降低可以向存储器器件写入数据的速率并且增加向存储器器件写入数据所需要的时间量。
此外,消费者可能选择使用并不支持ECC存储器器件的系统,但是可能仍然希望有ECC能力。支持ECC存储器器件的系统可以与比不支持ECC存储器器件的系统高的成本相关联。例如,支持ECC存储器器件的系统部件,诸如主板、芯片组和处理器可能比不支持ECC存储器器件的系统部件昂贵。即使当系统支持ECC存储器器件时,消费者仍然可能选择使用非ECC存储器器件,但却仍希望有ECC能力。ECC存储器器件可能由于ECC存储器器件提供的用于实现ECC功能的额外存储器芯片和更宽的接口而比非ECC存储器器件昂贵。
发明内容
本公开描述了涉及用于存储器的ECC能力的系统和技术。一般而言,在一个方面中,本公开描述了一种控制器,该控制器被配置成:接收存储器访问命令,存储器访问命令包括与将向或者从存储器器件传送的数据相关联的地址和长度;确定地址与存储器器件中用于存储错误纠正码(ECC)保护的数据的区域相关联;根据存储器访问命令中所包括的地址生成新地址并且根据存储器访问命令中所包括的长度生成新长度以使得数据字节和ECC字节贯穿存储器器件的所述区域中被交织;以及向或者从存储器器件中由新地址和新长度指定的位置传送数据的一个或者多个字节和ECC信息的一个或者多个字节,数据的一个或者多个字节和ECC信息的一个或者多个字节被交织。
所描述的系统和技术可以被实现于电子电路、计算机硬件、固件、软件或者它们的组合中,诸如实现于在本说明书中公开的结构装置及其结构等效物中。这可以包括包含程序的至少一个计算机可读介质,该程序可操作用于使一个或者多个数据处理装置执行所描述的操作。因此,可以通过公开的方法、系统或者装置实现程序实施方式,并且可以通过公开的系统、计算机可读介质或者方法实现装置实施方式。类似地,可以通过公开的系统、计算机可读介质或者装置实现方法实施方式,并且可以通过公开的方法、计算机可读介质或者装置实现系统实施方式。
在附图和下文描述中阐述一个或者多个实施方式的细节。根据该描述和附图以及根据权利要求,其它特征、目的和优点可以是显而易见的。
附图说明
图1是示出了下述系统的示例的框图,在该系统中可以利用ECC控制器来向存储器提供低延时ECC(LL-ECC)能力。
图2示出了具有LL-ECC区域的存储器的示例,该LL-ECC区域存储使用LL-ECC处理的数据。
图3示出了具有LL-ECC区域的存储器的示例,该LL-ECC区域由LL-ECC区域开始地址和LL-ECC区域大小限定。
图4是示出了由ECC控制器执行以从存储器读取数据的操作的示例的流程图。
图5示出了在LL-ECC处理的不同阶段从存储器读取的数据和ECC信息的数据格式的示例。
图6是示出了由ECC控制器执行以向存储器写入数据的操作的示例的流程图。
图7示出了将在LL-ECC处理的不同阶段向存储器写入的数据和ECC信息的数据格式的示例。
图8示出了将在LL-ECC处理的不同阶段向存储器写入的数据和ECC信息的数据格式的其它示例。
具体实施方式
下文在用于存储器器件的低延时ECC(LL-ECC)能力的背景中讨论本公开的各种实施方式。在该公开中描述的系统和技术一般适用于希望为其提供低延时ECC能力的任何存储器器件。尽管图示和描述了存储器和存储器控制器的具体实施方式,但是可以存在包括与下文图示和描述的部件不同的部件的许多其它存储器和存储器控制器实施方式。
图1是示出了包括存储器控制器101的系统100的示例的框图,在该存储器控制器101中可以利用ECC控制器102来向存储器103提供低延时ECC(LL-ECC)能力。存储器控制器101可以包括多个系统端口104a、104b和104c、仲裁器105以及命令调度器106。系统端口104可以将存储器控制器101连接到系统100的其它部件,诸如中央处理单元(CPU)110、图形处理器111和直接存储器访问(DMA)控制器112。仲裁器105可以对来自系统端口104的存储器访问请求执行仲裁。命令调度器106可以基于各种因素,诸如存储器组状态、访问优先级和访问类型(例如,读取或者写入)来调度来自ECC控制器102的存储器访问请求。
存储器控制器101包括将存储器控制器101连接到存储器103的存储器接口107。存储器103可以包括希望为其提供LL-ECC能力的任何存储器器件。在一些实施方式中,存储器103可以包括易失性存储器,诸如随机存取存储器(RAM),该RAM包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、双数据速率随机存取存储器(DDR RAM)或者其它相似器件。在一些实施方式中,存储器103可以包括非易失性存储器,诸如闪速存储器、硬盘、软盘、磁带或者其它持久存储器件。存储器103可以包括一个或者多个存储器器件、芯片或者模块。另外,可以在集成电路器件,诸如片上系统(SoC)器件中包括存储器控制器101和存储器103。
ECC控制器102向存储器103提供LL-ECC能力。向非ECC存储器提供LL-ECC能力可以降低通常与具有传统ECC能力的系统相关联的成本,因为非ECC存储器通常比ECC存储器便宜并且使用更少功率。非ECC存储器是不具有内置到器件中的ECC电路的集成电路器件,而ECC存储器是具有内置到器件中的ECC电路的集成电路器件。内置到ECC存储器中的ECC电路可以包括ECC控制器、附加存储器芯片和更宽的接口。即使ECC存储器可以包括附加存储器芯片和更宽的接口,非ECC存储器和ECC存储器也可以提供相同的数据吞吐量。
可以向如下ECC存储器器件提供LL-ECC能力,该ECC存储器器件包括内置到器件中的ECC电路,例如,40比特或者72比特接口。除了由ECC存储器器件提供的传统ECC能力之外或者替代地还可以提供LL-ECC能力。与由ECC存储器使用的传统ECC相比,向ECC存储器提供LL-ECC能力可以关于由LL-ECC保护的数据提高ECC存储器的性能。例如,可以在使用LL-ECC来保护向ECC存储器写入的数据时避免读取-修改-写入(RMW)操作。ECC控制器102可以向ECC存储器直接写入2字节ECC码字(1字节数据和对应的1字节ECC信息)。为了向ECC存储器写入2字节ECC码字,ECC控制器102可以使用数据掩码或者写入选通以指示将更新与2字节ECC码字对应的数据字的两个字节而不更新该数据字的其它两个字节。
对照而言,为了使用传统ECC向ECC存储器写入数据字节,ECC存储器器件可能需要执行RMW操作以用该数据字节更新40比特ECC码字(4字节数据字和1字节奇偶校验)。ECC存储器器件读取40比特ECC码字,该码字包括4字节数据字和与将从ECC存储器写入的数据字节对应的1字节奇偶校验,并且使用ECC来对从ECC存储器读取的4字节数据字执行错误检测、纠正或者二者。继而,将要向ECC存储器写入的数据字节合并到从ECC存储器读取的4字节数据字中以生成新4字节数据字。ECC存储器器件针对该新4字节数据字生成新1字节奇偶校验并且向ECC存储器写入新ECC码字。将LL-ECC保护应用于向ECC存储器写入的数据因此与由ECC存储器使用的传统ECC相比可以增加数据吞吐量并且减少访问延时,因为可以在向存储器写入部分数据字时避免RMW操作。
另外,LL-ECC提供比如由传统ECC存储器器件提供的对较大数据块执行的ECC更强的ECC保护和更短的访问延时。对于LL-ECC,ECC控制器102针对每个数据字节生成1字节奇偶校验,这可以向每个数据字节提供1比特错误纠正和2比特错误检测。对照而言,40比特ECC存储器支持用于32比特(4字节)数据字的8比特(1字节)奇偶校验,这通常向4字节数据字提供1比特错误纠正和2比特错误检测。因此,LL-ECC可以适合于具有随机地址和低延时访问要求的存储器访问,诸如指令拾取。LL-ECC可以适合于保护希望对其有强ECC保护的关键系统数据。
ECC控制器102可以使用任何适当ECC来执行LL-ECC,诸如增强型汉明码或者Bose-Chaudhuri-Hocquenghem(BCH)码。使用增强型汉明码来保护数据可以向每个数据字节提供1比特错误纠正和2比特错误检测。使用BCH码来保护数据可以向每个数据字节提供2比特错误纠正。
图2示出了具有LL-ECC区域210的存储器203的示例,该区域存储使用LL-ECC处理的数据。存储器203如图2中所示是具有16兆字节(MB)容量的32比特存储器。存储器203可以包括LL-ECC区域210和旁路(bypass)区域211。区域可以是物理存储器地址的连续范围。区域可以被划分成单独的比特或者较大的聚合数据单位,诸如字节。
LL-ECC区域210可以被限定为总大小为4MB的从0MB至4MB的区域。LL-ECC区域210存储使用LL-ECC处理的数据和对应ECC信息。LL-ECC区域的两兆字节用来存储数据,并且LL-ECC区域的两兆字节用来存储ECC信息。在一些实施方式中,数据字节及其对应ECC字节被存储于相邻字节位置中。例如,如图2中所示,数据字节LD0与它的奇偶校验字节LP0相邻存储。因为一个数据字节对应于一个ECC字节,所以ECC控制器可以在不执行RMW操作的情况下直接向存储器203写入2字节ECC码字,例如,具有数据字节LD0和奇偶校验字节LP0的ECC码字。与由ECC存储器使用的传统ECC相比,直接向存储器203写入2字节ECC码字提供低延时ECC。
例如,依赖于用来执行LL-ECC的ECC,ECC字节可以包括任何数目的ECC比特。例如,使用增强型汉明码来执行LL-ECC生成5比特ECC数据(例如,4比特汉明校验和1比特总奇偶校验)。在这一实施方式中,LL-ECC提供1比特错误纠正能力。作为另一示例,使用BCH码来执行LL-ECC生成8比特ECC数据,这使用全ECC字节。在这一实施方式中,LL-ECC提供2比特错误纠正能力。
系统中的其它部件可以访问LL-ECC区域210中的地址空间的一半。这些部件可以使用存储器203中从0MB到2MB的位置的地址来访问LL-ECC区域210中的数据。在一些实施方式中,指定LL-ECC区域210中从2MB至4MB的地址的任何存储器访问都是非法的。非法访问可能引起设置错误标志、生成错误中断或者创建错误日志。
当ECC控制器接收到具有指定数据在LL-ECC区域210中的有效位置的地址的访问请求时,ECC控制器可以将接收的地址翻译成数据在LL-ECC区域210中的实际位置的地址。因为ECC字节与数据字节交织以用于存储于LL-ECC区域210中,因此数据的实际位置的地址可能不同于接收的地址。将数据字节和ECC字节交织以用于存储于LL-ECC区域210中,从而ECC控制器可以通过从存储器读取单个数据字来访问数据字节及其对应ECC字节。对照而言,为了访问在存储器的分离区域中存储数据字节和ECC字节的传统ECC存储器中的数据字节及其对应ECC字节,ECC控制器可能需要读取两个数据字,例如,包括数据字节的一个数据字和包括ECC字节的一个数据字。由于ECC控制器从存储器读取单个数据字来访问包括数据字节和ECC字节的ECC码字,所以LL-ECC可以提供对存储器中的ECC码字的低延时访问。
旁路区域211可以被限定为总大小为12MB的从4MB至16MB的区域。旁路区域211存储不受ECC保护的数据。旁路区域211中的所有地址可由系统的其它部件访问。
图3示出了存储器303的示例,该存储器303具有由LL-ECC区域开始地址和LL-ECC区域大小限定的LL-ECC区域310。LL-ECC区域开始地址可以是存储器303的存储器空间中的任何地址。存储器303的其余部分可以被限定为一个或者多个旁路区域311a和311b。
虽然图2和图3示出了具有包含一个LL-ECC区域的两个不同区域的存储器,但是存储器可以包括任何数目的不同区域。每个区域可以被独立配置为LL-ECC区域或非LL-ECC区域。存储器因此可以包括任何数目的分离LL-ECC区域。
图4是示出了由ECC控制器执行以从存储器读取数据的操作400的示例的流程图。在402处,ECC控制器从系统部件接收用于从存储器读取数据的命令。该命令包括存储器中与数据相关联的位置的地址和数据的长度。
在404处,ECC控制器确定命令是否与存储于存储器的LL-ECC区域中的数据相关联。ECC控制器可以使用命令中所包括的地址来确定该命令是否与存储于LL-ECC区域中的数据相关联。如果该地址指定由LL-ECC开始地址和LL-ECC区域大小所限定的区域中的位置,则该命令与存储于LL-ECC区域中的数据相关联。如果该地址未指定由LL-ECC开始地址和LL-ECC区域大小所限定的区域中的位置,则该命令不与存储于LL-ECC区域中的数据相关联。
如果ECC控制器在404处确定命令不与存储于LL-ECC区域中的数据相关联,则ECC控制器在406处向存储器发送接收的命令。在408处,ECC控制器从存储器接收数据。在410处,ECC控制器向系统部件发送数据。
如果ECC控制器在404处确定命令与存储于LL-ECC区域中的数据相关联,则ECC控制器在412处基于从系统部件接收的命令生成新命令。为了生成新命令,ECC控制器将接收的命令中所包括的地址翻译成LL-ECC区域中存储数据的实际位置的地址。ECC控制器基于在数据字节数目与奇偶校验字节数目之间的一对一关系来翻译接收的命令中所包括的地址。可以如下计算实际位置的地址:实际地址=2x(接收的地址-LL-ECC开始地址)+(LL-ECC开始地址)。
ECC控制器将接收的命令中所包括的长度翻译成如下长度,该长度指定数据及其对应ECC信息的长度。ECC控制器基于在数据字节数目与奇偶校验字节数目之间的一对一关系来翻译接收的命令中所包括的长度。可以如下计算数据及其对应ECC信息的长度:实际长度=2x接收的长度。ECC控制器生成具有与数据相关联的实际地址和实际长度的新命令。
在414处,ECC控制器向存储器发送新命令。在416处,ECC控制器从存储器接收数据和ECC信息。在418处,ECC控制器使用LL-ECC和ECC信息来处理数据以对该数据执行错误检测、纠正或者二者。在420处,ECC控制器向系统部件发送处理的数据。
图5示出了在LL-ECC处理的不同阶段从存储器读取的数据和ECC信息的数据格式的示例。从存储器接收的数据501包括两个4字节数据字502和503。数据字是可以在单个操作中向和从存储器传送的最大数据单位。
ECC字节P0与它的对应数据字节D0相邻存储。ECC字节P1与它的对应数据字节D1相邻存储。ECC字节P2与它的对应数据字节D2相邻存储。ECC字节P3与它的对应数据字节D3相邻存储。在接收数据501中交织数据字节D0、D1、D2、D3和ECC字节P0、P1、P2、P3。
ECC控制器通过使用LL-ECC对数据字节执行错误检测、纠正或者二者来处理接收数据501。ECC控制器使用每个数据字节D0、D1、D2、D3的对应ECC字节P0、P1、P2、P3来对该每个数据字节执行错误检测、纠正或者二者以生成处理数据504。处理数据504包括用于每个数据字节D0、D1、D2、D3的纠正数据字节D0’、D1’、D2’、D3’和对应ECC字节P0、P1、P2、P3。如果接收数据字节没有任何比特错误,则纠正数据字节可以与接收数据字节相同。ECC控制器向请求数据的系统部件发送包括纠正数据字节D0’、D1’、D2’、D3’的纠正数据505。
图6是示出了由ECC控制器执行以向存储器写入数据的操作600的示例的流程图。在602处,ECC控制器从系统部件接收用于向存储器写入数据的命令。该命令包括存储器中与数据相关联的位置的地址和数据的长度。
在604处,ECC控制器确定命令是否与将存储于存储器的LL-ECC区域中的数据相关联。ECC控制器可以使用命令中所包括的地址来确定该命令是否与将存储于LL-ECC区域中的数据相关联。如果该地址指定由LL-ECC开始地址和LL-ECC区域大小限定的区域中的位置,则该命令与将存储于LL-ECC区域中的数据相关联。如果该地址未指定由LL-ECC开始地址和LL-ECC区域大小限定的区域中的位置,则该命令不与将存储于LL-ECC区域中的数据相关联。
如果ECC控制器在604处确定命令不与将存储于LL-ECC区域中的数据相关联,则ECC控制器在606处向存储器发送接收的命令和将存储于存储器中的数据。
如果ECC控制器在604处确定命令与将存储于LL-ECC区域中的数据相关联,则ECC控制器在608处基于从系统部件接收的命令来生成新命令。为了生成新命令,ECC控制器将接收的命令中所包括的地址翻译成LL-ECC区域中将存储数据的实际位置的地址。可以如下计算实际位置的地址:实际地址=2x(接收的地址-LL-ECC开始地址)+LL-ECC开始地址。ECC控制器将接收的命令中所包括的长度翻译成如下长度,该长度指定数据及其对应ECC信息的长度。可以如下计算数据及其对应ECC信息的长度:实际长度=2x接收的长度。ECC控制器生成具有与数据相关联的实际地址和实际长度的新命令。
ECC控制器使用LL-ECC来处理将向存储器存储的数据。在610处,为了使用LL-ECC来处理数据,ECC控制器针对每个数据字节生成ECC字节。在612处,ECC控制器将数据字节和ECC字节进行交织,从而使得ECC字节与它的对应数据字节相邻存储。ECC控制器将交织的数据和ECC字节格式化成将向存储器写入的一个或者多个ECC码字。每个ECC码字包括数据字节和ECC字节。
在614处,ECC控制器生成用于向存储器写入数据字节和ECC字节的数据掩码或者写入选通。ECC控制器可以在一个或者多个ECC码字形成将向存储器写入的数据字的一部分、例如4字节或者8字节数据字的一部分时生成数据掩码。数据掩码允许向存储器写入部分数据字而不改写整个数据字。数据掩码指示数据字中哪些字节适合用于写入到存储器中。数据字中适合用于写入到存储器中的字节包括数据字节和ECC信息字节。
例如,当将向32比特存储器(与4字节的数据字对应)写入包括一个数据字节和一个ECC字节的一个ECC码字时,ECC控制器可以生成4字节数据掩码。该4字节数据掩码指示4字节数据字中与数据字节和ECC字节对应的两个字节适合用于写入到存储器中并且在向存储器写入该一个ECC码字时,4字节数据字中的其它两个字节无需在存储器中被更新。
在616处,ECC控制器向存储器发送新命令、交织的数据和ECC字节以及数据掩码以用于向存储器存储数据和ECC信息。当存储器接收到新命令、待写入的数据和数据掩码时,存储器向存储器中由新命令中所包括的地址和长度指定的位置写入数据。存储器使用数据掩码以数据字节和ECC字节来更新存储器中与上述地址和长度对应的数据字。
图7示出了将在LL-ECC处理的不同阶段向存储器写入的数据和ECC信息的数据格式的示例。从系统部件接收的数据701包括数据字节D0、D1、D2、D3。ECC控制器可以生成数据掩码702,该数据掩码702具有用于每个数据字节D0、D1、D2、D3的掩码比特M0、M1、M2、M3。数据掩码702指示数据701中哪些字节适合用于写入到存储器中。数据掩码702可以是低有效掩码,其中逻辑1掩蔽对应字节并且逻辑0写入对应字节。
ECC控制器使用LL-ECC来处理接收数据701以生成ECC数据703。ECC控制器向每个数据字节D0、D1、D2、D3应用LL-ECC以针对每个数据字节D0、D1、D2、D3生成对应ECC字节P0、P1、P2、P3。ECC数据703包括与数据字节D0、D1、D2、D3对应的ECC字节P0、P1、P2、P3。
ECC控制器将接收数据701和ECC数据703进行交织以生成写入数据704。在写入数据704中,ECC字节P0与它的对应数据字节D0相邻放置。ECC字节P1与它的对应数据字节D1相邻放置。ECC字节P2与它的对应数据字节D2相邻放置。ECC字节P3与它的对应数据字节D3相邻放置。
ECC控制器可以生成写入掩码705。为了生成写入掩码705,ECC控制器可以复制数据掩码702的每个掩码比特M0、M1、M2、M3并且向数据掩码702中交织每个复制比特。写入掩码705指示写入数据704中哪些数据字节和ECC字节适合用于写入到存储器中。ECC控制器向存储器发送写入数据704和写入掩码705以用于存储于存储器的LL-ECC区域中。
虽然图2、图5和图7示出了ECC字节与它的对应数据字节相邻存储,但是ECC字节可以存储于与它的对应数据字节相同的4字节数据字中的任何字节位置。例如,图8示出了将在LL-ECC处理的不同阶段向存储器写入的数据和ECC信息的数据格式的其它示例。在图8中,格式化写入数据804,从而使得数据字节被放置于数据字的前两个字节中并且ECC字节被放置于数据字的后两个字节中。ECC控制器可以生成与写入数据804对应的写入掩码805。
上文已经具体描述了几个实施方式,并且各种修改是可能的。包括在本说明书中描述的功能操作的、公开的主题内容可以被实现于电子电路、计算机硬件、固件、软件或者其组合中,诸如在本说明书中公开的结构装置及其结构等效物,包括片上系统(SOC)实施方式。
尽管本说明书包含许多细节,但是这些不应解释为对可以要求保护的范围的限制,而应解释为对可能特定于具体实施例的特征的描述。在本说明书中在单独实施方式的背景中描述的某些特征也可以组合实现于单个实施方式中。反之,在单个实施方式的背景中描述的各种特征也可以分离地或者以任何适当子组合的方式实现于多个实施方式中。另外,虽然上文可能将特征描述为在某些组合中作用并且甚至起初这样要求保护,但是来自要求保护的组合的一个或者多个特征可以在一些情况下从该组合中被去除,并且要求保护的组合可以涉及子组合或者子组合的变型。
类似地,尽管在附图中以特定顺序描绘了各操作,但是这不应理解为要求以所示特定顺序或者以依次顺序执行这样的操作或者执行所有所示操作以实现希望的结果。在某些境况中,多任务和并行处理可能是有利的。另外,在上文描述的实施方式中各种系统部件的分离不应理解为在所有实施方式中都要求这样的分离。
其它实施方式落入所附权利要求的范围内。例如,在一些实施方式中,描述的系统和技术可以适用于传统ECC存储器器件以提供比由ECC存储器器件提供的ECC能力更强的ECC能力。

Claims (23)

1.一种装置,包括:
存储器接口,被配置成与存储器器件通信;
控制器,耦合到所述存储器接口,所述控制器被配置成:
接收存储器访问命令,所述存储器访问命令包括与将向或者从所述存储器器件传送的数据相关联的地址和长度;以及
向或者从所述存储器器件中与所述地址和所述长度相关联的位置传送数据的一个或者多个字节和ECC信息的一个或者多个字节,所述数据的所述一个或者多个字节和所述ECC信息的所述一个或者多个字节被交织。
2.根据权利要求1所述的装置,其中所述控制器进一步被配置成:
确定所述地址与所述存储器器件中用于存储错误纠正码(ECC)保护的数据的区域相关联;
根据所述存储器访问命令中所包括的所述地址生成新地址并且根据所述存储器访问命令中所包括的所述长度生成新长度以使得数据字节和ECC字节在所述存储器器件的所述区域内被交织;以及
向或者从所述存储器器件中由所述新地址和所述新长度指定的位置传送所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节。
3.根据权利要求2所述的装置,其中所述控制器被配置成生成所述新地址和所述新长度包括所述控制器进一步被配置成基于所述存储器器件中用于存储ECC保护的数据的所述区域的开始地址来生成所述新地址和所述新长度。
4.根据权利要求1所述的装置,其中所述存储器访问命令是数据读取命令,并且所述控制器进一步被配置成使用所述ECC信息的一个或者多个字节中与所述数据的一个或多个字节中的每个字节相邻存储的字节来对所述数据的一个或者多个字节中的所述每个字节执行错误检测或者纠正。
5.根据权利要求1所述的装置,其中所述存储器访问命令是数据写入命令,并且所述控制器进一步被配置成:
针对所述数据的一个或者多个字节中的每个字节生成所述ECC信息的一个或者多个字节中的字节;以及
将所述ECC信息的一个或者多个字节和所述数据的一个或者多个字节进行交织。
6.根据权利要求4所述的装置,其中所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节形成数据字的一部分,并且所述控制器进一步被配置成生成用于向所述存储器器件写入所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节的数据掩码,所述数据掩码指示所述数据字中哪些字节包括所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节。
7.根据权利要求1所述的装置,其中所述控制器进一步被配置成:
限定所述存储器器件中用于存储错误纠正码(ECC)保护的数据的区域;以及
限定所述存储器器件中用于存储不受ECC保护的数据的一个或者多个区域。
8.根据权利要求1所述的装置,其中所述存储器接口被配置成与所述存储器器件通信包括所述存储器接口进一步被配置成与非ECC存储器器件通信。
9.一种系统,包括:
存储器器件;以及
控制器,被配置成:
接收存储器访问命令,所述存储器访问命令包括与将向或者从所述存储器器件传送的数据相关联的地址和长度;
确定所述地址与所述存储器器件中用于存储错误纠正码(ECC)保护的数据的区域相关联;
根据所述存储器访问命令中所包括的所述地址生成新地址并且根据所述存储器访问命令中所包括的所述长度生成新长度以使得数据字节和ECC字节在所述存储器器件的所述区域中被交织;以及
向或者从所述存储器器件中由所述新地址和所述新长度指定的位置传送数据的一个或者多个字节和ECC信息的一个或者多个字节,所述数据的所述一个或者多个字节和所述ECC信息的所述一个或者多个字节被交织。
10.根据权利要求9所述的系统,其中所述控制器被配置成生成所述新地址和所述新长度包括所述控制器进一步被配置成基于所述存储器器件中用于存储ECC保护的数据的所述区域的开始地址来生成所述新地址和所述新长度。
11.根据权利要求9所述的系统,其中所述存储器访问命令是数据读取命令,并且所述控制器进一步被配置成使用所述ECC信息的一个或者多个字节中与所述数据的一个或者多个字节中的每个字节相邻存储的字节来对所述数据的一个或者多个字节中的所述每个字节执行错误检测或者纠正。
12.根据权利要求9所述的系统,其中所述存储器访问命令是数据写入命令,并且所述控制器进一步被配置成:
针对所述数据的一个或者多个字节中的每个字节生成所述ECC信息的一个或者多个字节中的字节;以及
将所述ECC信息的一个或者多个字节和所述数据的一个或者多个字节进行交织。
13.根据权利要求12所述的系统,其中所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节形成数据字的一部分,并且所述控制器进一步被配置成生成用于向所述存储器器件写入所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节的数据掩码,所述数据掩码指示所述数据字中哪些字节包括所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节。
14.根据权利要求9所述的系统,其中所述控制器进一步被配置成:
限定所述存储器器件中用于存储错误纠正码(ECC)保护的数据的区域;以及
限定所述存储器器件中用于存储不受ECC保护的数据的一个或者多个区域。
15.根据权利要求9所述的系统,其中所述存储器器件包括非ECC存储器器件。
16.一种方法,包括:
接收存储器访问命令,所述存储器访问命令包括与将向或者从存储器器件传送的数据相关联的地址和长度;以及
向或者从所述存储器器件中与所述地址和所述长度相关联的位置传送数据的一个或者多个字节和ECC信息的一个或者多个字节,所述数据的所述一个或者多个字节和所述ECC信息的所述一个或者多个字节被交织。
17.根据权利要求16所述的方法,进一步包括:
确定所述地址与所述存储器器件中用于存储错误纠正码(ECC)保护的数据的区域相关联;
根据所述存储器访问命令中所包括的所述地址生成新地址并且根据所述存储器访问命令中所包括的所述长度生成新长度以使得数据字节和ECC字节在所述存储器器件的所述区域中被交织;以及
向或者从所述存储器器件中由所述新地址和所述新长度指定的位置传送所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节。
18.根据权利要求17所述的方法,其中生成所述新地址和所述新长度包括基于所述存储器器件中用于存储ECC保护的数据的所述区域的开始地址来生成所述新地址和所述新长度。
19.根据权利要求16所述的方法,其中所述存储器访问命令是数据读取命令,并且所述方法进一步包括使用所述ECC信息的一个或者多个字节中与所述数据的一个或者多个字节中的每个字节相邻存储的字节来对所述数据的一个或者多个字节中的所述每个字节执行错误检测或者纠正。
20.根据权利要求16所述的方法,其中所述存储器访问命令是数据写入命令,并且所述方法进一步包括:
针对所述数据的一个或者多个字节中的每个字节生成所述ECC信息的一个或者多个字节中的字节;以及
将所述ECC信息的一个或者多个字节和所述数据的一个或者多个字节进行交织。
21.根据权利要求19所述的方法,其中所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节形成数据字的一部分,并且所述方法进一步包括生成用于向所述存储器器件写入所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节的数据掩码,所述数据掩码指示所述数据字中哪些字节包括所述数据的一个或者多个字节和所述ECC信息的一个或者多个字节。
22.根据权利要求16所述的方法,进一步包括:
限定所述存储器器件中用于存储错误纠正码(ECC)保护的数据的区域;以及
限定所述存储器器件中用于存储不受ECC保护的数据的一个或者多个区域。
23.根据权利要求16所述的方法,其中所述存储器器件包括非ECC存储器器件。
CN201210498603.XA 2011-11-23 2012-11-23 向存储器提供低延时错误纠正码能力 Active CN103137215B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161563368P 2011-11-23 2011-11-23
US61/563,368 2011-11-23
US201261623864P 2012-04-13 2012-04-13
US61/623,864 2012-04-13

Publications (2)

Publication Number Publication Date
CN103137215A true CN103137215A (zh) 2013-06-05
CN103137215B CN103137215B (zh) 2017-06-23

Family

ID=48428131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210498603.XA Active CN103137215B (zh) 2011-11-23 2012-11-23 向存储器提供低延时错误纠正码能力

Country Status (2)

Country Link
US (1) US8959417B2 (zh)
CN (1) CN103137215B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107393596A (zh) * 2016-04-26 2017-11-24 三星电子株式会社 半导体存储设备和操作其的方法
CN107710163A (zh) * 2015-05-04 2018-02-16 德克萨斯仪器股份有限公司 一次写入型存储器码的纠错码管理

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130012737A (ko) * 2011-07-26 2013-02-05 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이를 포함하는 반도체 시스템
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
US9053050B2 (en) * 2011-12-02 2015-06-09 Synopsys, Inc. Determining a desirable number of segments for a multi-segment single error correcting coding scheme
US9064606B2 (en) * 2012-12-20 2015-06-23 Advanced Micro Devices, Inc. Memory interface supporting both ECC and per-byte data masking
WO2015016883A1 (en) 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Off-memory-module ecc-supplemental memory system
US20150046764A1 (en) * 2013-08-06 2015-02-12 Kabushiki Kaisha Toshiba Recording and reproducing apparatus
WO2016030466A1 (de) * 2014-08-29 2016-03-03 Continental Teves Ag & Co. Ohg Verfahren zur absicherung von nutzdaten eines speichers und elektronisches rechensystem
US10061645B2 (en) * 2015-06-30 2018-08-28 Qualcomm Incorporated Memory array and link error correction in a low power memory sub-system
US10140175B2 (en) 2015-11-20 2018-11-27 Qualcomm Incorporated Protecting an ECC location when transmitting correction data across a memory link
US9983930B2 (en) * 2016-07-28 2018-05-29 Qualcomm Incorporated Systems and methods for implementing error correcting code regions in a memory
KR20190054533A (ko) 2017-11-14 2019-05-22 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
KR102652001B1 (ko) 2019-05-22 2024-03-27 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167548A (en) * 1997-09-30 2000-12-26 Fujitsu Limited Data error correcting method and apparatus
CN101373449A (zh) * 2007-08-21 2009-02-25 三星电子株式会社 Ecc控制电路、多通道存储器系统以及相关操作方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4858349A (en) * 1988-06-02 1989-08-22 Walsh Brendan R Anchoring member for a fabric stretcher
US6086353A (en) * 1998-02-17 2000-07-11 Cincinnati Milacron Inc. Two-stage electric injection unit with rotating plunger
US6279072B1 (en) 1999-07-22 2001-08-21 Micron Technology, Inc. Reconfigurable memory with selectable error correction storage
US6662333B1 (en) 2000-02-04 2003-12-09 Hewlett-Packard Development Company, L.P. Shared error correction for memory design
US6961890B2 (en) 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US7117421B1 (en) 2002-05-31 2006-10-03 Nvidia Corporation Transparent error correction code memory system and method
DE602004014371D1 (de) 2004-09-10 2008-07-24 St Microelectronics Srl Speicher mit eingebauter Fehlerkorrekturkode-Einrichtung
TWI254848B (en) 2004-11-16 2006-05-11 Via Tech Inc Method and related apparatus for performing error checking-correcting
US7676730B2 (en) 2005-09-30 2010-03-09 Quantum Corporation Method and apparatus for implementing error correction coding in a random access memory
US7975205B2 (en) 2007-01-26 2011-07-05 Hewlett-Packard Development Company, L.P. Error correction algorithm selection based upon memory organization
US8051358B2 (en) 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
US8429492B2 (en) 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US8185801B2 (en) 2008-01-31 2012-05-22 International Business Machines Corporation System to improve error code decoding using historical information and associated methods

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167548A (en) * 1997-09-30 2000-12-26 Fujitsu Limited Data error correcting method and apparatus
CN101373449A (zh) * 2007-08-21 2009-02-25 三星电子株式会社 Ecc控制电路、多通道存储器系统以及相关操作方法
TW200915336A (en) * 2007-08-21 2009-04-01 Samsung Electronics Co Ltd ECC control circuits, multi-channel memory systems including the same, and related methods of operation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107710163A (zh) * 2015-05-04 2018-02-16 德克萨斯仪器股份有限公司 一次写入型存储器码的纠错码管理
CN107710163B (zh) * 2015-05-04 2021-06-18 德克萨斯仪器股份有限公司 一次写入型存储器码的纠错码管理的电路、系统和方法
CN107393596A (zh) * 2016-04-26 2017-11-24 三星电子株式会社 半导体存储设备和操作其的方法
CN107393596B (zh) * 2016-04-26 2022-03-01 三星电子株式会社 半导体存储设备和操作其的方法

Also Published As

Publication number Publication date
US8959417B2 (en) 2015-02-17
US20130132799A1 (en) 2013-05-23
CN103137215B (zh) 2017-06-23

Similar Documents

Publication Publication Date Title
CN103137215A (zh) 向存储器提供低延时错误纠正码能力
US10198310B1 (en) Providing error correcting code (ECC) capability for memory
CN109416666B (zh) 用于存储和读取多个缓存行的装置和方法
US11704183B2 (en) Data integrity for persistent memory systems and the like
KR100881187B1 (ko) 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
EP1449082B1 (en) Error correcting memory and method of operating same
US8161356B2 (en) Systems, methods, and apparatuses to save memory self-refresh power
JP5232018B2 (ja) エラー処理方法およびエラー処理装置
US8738995B2 (en) Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information
US20070234182A1 (en) Error checking and correction (ECC) system and method
US9754684B2 (en) Completely utilizing hamming distance for SECDED based ECC DIMMs
JP5202130B2 (ja) キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法
US10248497B2 (en) Error detection and correction utilizing locally stored parity information
US11218165B2 (en) Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US10908991B2 (en) Bit error protection in cache memories
KR20230070231A (ko) 신뢰할 수 있는 저전압 캐시 동작을 위한 마스킹된 결함 검출
US20140032855A1 (en) Information processing apparatus and method
KR20070074322A (ko) 메모리 시스템에 있어서 메모리 미러링 방법
KR20240003823A (ko) 정정된 에러를 관리하는 전자 장치 및 전자 장치의 동작 방법
CN115840661A (zh) 从hmb丢失恢复的无dram ssd

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200424

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200424

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200424

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.

TR01 Transfer of patent right