CN102253865A - 用于在系统中使用高速缓冲存储器的方法和装置 - Google Patents
用于在系统中使用高速缓冲存储器的方法和装置 Download PDFInfo
- Publication number
- CN102253865A CN102253865A CN201110130191XA CN201110130191A CN102253865A CN 102253865 A CN102253865 A CN 102253865A CN 201110130191X A CN201110130191X A CN 201110130191XA CN 201110130191 A CN201110130191 A CN 201110130191A CN 102253865 A CN102253865 A CN 102253865A
- Authority
- CN
- China
- Prior art keywords
- error correction
- cache line
- logic
- correction logic
- cache
- 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
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/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/1064—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 in cache or content addressable memories
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Detection And Correction Of Errors (AREA)
- Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)
Abstract
用于在系统中使用高速缓冲存储器的方法和装置。提供了使用具有低存储和复杂度开销的多比特纠错码(ECC)的高速缓冲存储器系统。该高速缓冲存储器系统可以以极低的空闲功率操作,而不会动态地增加转换到空闲功率状态和从空闲功率状态进行转换的、由于状态丢失导致的转换延迟。
Description
技术领域
本发明总体上涉及存储器,并且更具体地涉及当系统处于低功率状态时降低高速缓冲存储器的功耗。
背景技术
技术进步已经使得能够将大型管芯上嵌入式动态随机存取存储器(eDRAM)高速缓存与中央处理单元(CPU)集成在一起。嵌入式DRAM比传统的静态随机存取存储器(SRAM)密集得多,但是必须周期性地刷新以保持数据。类似于SRAM,嵌入式DRAM对设备变化敏感,设备变化在确定嵌入式DRAM单元的刷新周期中起作用。刷新eDRAM所消耗的功率占据了整个系统功率的一大部分,特别是在CPU处于空闲时的低功率状态期间。
附图说明
随着以下详细的描述的进行并参考附图,所声明的主题的实施例的特征将会变的显而易见,在附图中,相似的标号描述相似的部分,并且其中:
图1是根据本发明的原理的、包括高速缓冲存储器和纠错码逻辑(ECC)的处理器的实施例;
图2是包括最近访问行表(RALT)的实施例以及图1中示出的高速缓冲存储器和ECC逻辑的、说明了对高速缓冲存储器中的高速缓存行的快速访问的系统的框图;
图3是说明了在刷新周期中高速缓存行的随后的读取的图2中示出的系统的框图;
图4A是说明了包括在图1示出的快速ECC逻辑中的ECC编码器的实施例的框图;
图4B是说明了包括在图1中示出的快速ECC逻辑中的ECC解码器(解码逻辑)的实施例的框图;
图5是说明了根据本发明的原理的、用于使用图1中示出的系统的方法的实施例的流程图;
图6是包括图1中示出的处理器的实施例的系统的框图。
尽管将参考所声明的主题的说明性的实施例进行以下详细地描述,但是它们的许多替代、修改和变型对本领域中的技术人员将是显而易见的。因此,意图广泛地考虑所声明的主题,并且仅如所附权利要求中阐述的那样对其进行定义。
具体实施方式
纠错码(ECC)通常用来允许非易失性存储器和存储设备容忍软错误和硬错误。设备和存储设备(芯片、集成电路)中的片上高速缓存通常使用简单和快速的ECC,例如单错纠正双错检测(SECDED)汉明码。诸如闪速存储器的较慢的设备使用具有强纠错能力的多比特ECC,例如,Reed-Solomon码。强ECC机制的较高解码延迟对例如磁盘驱动器的大容量存储设备不会构成问题,因为与固有的设备访问时间相比,编码/解码延迟是不显著的。然而,由于技术发展的原因,片上存储器阵列(高速缓存)更容易遭受多比特错误。因此,对于片上高速缓存,强ECC码也是期望的。除了延迟开销之外,额外的ECC比特的存储开销也是针对片上高速缓冲存储器使用多比特ECC的障碍。
为了追求提高的功率和能量效率,微处理器实现了多个空闲状态来支持较低的功率模式(状态)。降低在空闲状态期间消耗的功率是尤为重要的,因为典型的中央处理单元(CPU)在空闲状态花费很多时间。嵌入式DRAM技术使得能够使用与SRAM单元相比更小的存储单元,这使得存储器密度大幅增加。因此,DRAM可以用来取代SRAM,作为高性能处理器中的最后一级的片上高速缓存。
然而,嵌入式DRAM(eDRAM)单元的一个问题是由于泄漏电流导致该单元随着时间丢失电荷。eDRAM单元的保存时间被定义为单元能够保持其状态(电荷)的时间长度。单元保存时间依赖于泄漏电流,泄漏电流继而依赖于设备泄漏。为了保持存储数据的状态,需要周期性地刷新eDRAM单元。为了阻止高速缓存中的状态丢失,刷新周期需要小于单元保存时间。因为eDRAM是集成在传统逻辑处理上的DRAM,所以它使用具有比传统DRAM中使用的晶体管更高的泄漏电流的快速逻辑晶体管。因此,eDRAM的刷新时间比传统DRAM大约短上千倍。更短的刷新周期增加了在空闲状态期间消耗的功率并且还导致降低的可用性。
在SRAM高速缓存中,由于在较低电压时失效(丢失电荷(状态))的一些弱单元,固有的变化强制在高电压进行操作,并且妨碍在空闲状态期间降低功耗的努力。同样地,在嵌入式DRAM高速缓存中,设备变化影响各个DRAM单元的刷新之间的保存时间,其中,一些特别弱的单元(比特)决定了整个高速缓存的刷新周期。阈值电压中的变化使得不同DRAM单元的保存时间变化很大。这些变化主要是由随机掺杂波动导致的并且将其自身表现为在eDRAM单元间的保存时间的随机分布。然而,提高刷新率显著地增加了高速缓存功率。
用于降低高速缓存功率的一种方法是使用电能门(power gate)。电能门是电源上的开关,其允许对晶体管的块完全切断电能。既然诸如eDRAM和SRAM的存储器技术在失去电能时不能保持状态,那么电能门控是以丢失存储器状态为代价来执行的。
随着高速缓存密度的增加,电能门控的性能和功耗也增加。随着嵌入式DRAM高速缓存的尺寸的增大,在空闲退出延迟(通过从主存储器检索高速缓存行来恢复高速缓存的状态的时间)和在空闲状态期间的功耗之间存在折衷。
可以通过用于动态地识别和修复丢失其状态的单元的纠错码(ECC)的使用,来增加DRAM刷新周期。设置刷新率而不考虑最弱的eDRAM单元,使用ECC来补偿丢失状态。具有纠正多比特错误的能力的较强的纠错码,意味着增加的刷新率和降低的功耗。然而,多比特ECC码具有限制其适用性的高的存储和复杂度开销。
本发明的实施例提供了灵活的存储器结构,其使用具有低的存储和复杂度开销的多比特ECC码并且能够以极低的空闲功率操作,而不会动态地增加由于单元(比特)状态的丢失导致的转换到空闲功率状态和从空闲功率状态进行转换的转换延迟。
图1是根据本发明的原理的包括高速缓冲存储器和纠错码(ECC)逻辑122的处理器100的实施例。ECC逻辑122是低延迟、低成本、多比特纠错逻辑,其用于补偿诸如图1中示出的存储器高速缓存110之类的易失性存储器中的高失效率。在示出的实施例中,存储器高速缓存110是嵌入式DRAM(eDRAM)。在其他实施例中,存储器高速缓存110可以是静态随机存取存储器(SRAM)或任何其他类型的易失性存储器。
纠正更多的错误需要更高的冗余,这导致高的检查比特开销。例如,要纠正k比特输入数据中的t比特错误,BCH码通常需要r=t*ceil(log2k)+1个检查比特。由于r和k之间的对数关系,检查比特的数量比输入数据的规模增加地慢得多。因此,通过增加k来降低ECC检查比特的开销。
例如,用于64字节(512比特)高速缓存行的单错纠正双错检测(SECDED)码需要11比特,其是大约2%的开销。随着数据字中比特的数量的增加,ECC码中比特的数量相对于数据字中比特的数量降低。例如,用于64字节高速缓存行的SECDED码具有11比特的开销(2%),而用于1024字节(1KB)高速缓存行的SECDED码具有15比特的开销(0.18%)。
然而,当使用大的高速缓存行时,对高速缓存行中的子块的写入可能需要每次读取整个高速缓存行以便重新生成ECC比特。作为线性码,BCH继承了线性系统的可加性,这确保能够仅使用修改的子块(数据的字节片(chunk))的信息来更新ECC检查比特。数据字d(表示高速缓存行)被分割为多个字节片(子块)[di-1,di-2,...,d0]。ECC编码中使用的G矩阵可以被分割为两个部分,如G=[Ik,P],其中P是用于ECC检查字C的生成器,即,C=dxP。如果用新的值dj_new来写入数据dj的第j个字节片,那么新的ECC是:
Cnew=dnew×P=(d+[0,...,(dj_old+dj_new),...,0])×P
=C+[0,...,(dj_old+dj_new),...,0]×P (1)
方程式(1)示出了新检查比特的生成只需要检查比特的旧的值和正在被修改的子块的旧的和新的值。
返回图1,ECC逻辑122是能够补偿eDRAM高速缓存110中的高失效率的低延迟、低成本、多比特纠错逻辑。ECC逻辑122实现具有纠正5个错误(5EC)和检测6个错误(6ED)(此后称为5EC6ED码)能力的强BCH码。使用多比特ECC的传统方法遭受限制其适用性的两个昂贵的开销。第一,为多比特ECC码构建低延迟解码器是极为昂贵的。第二,ECC比特的存储开销高(对于具有64字节的高速缓存行的5EC6ED ECC码大约是10%)。
ECC逻辑122用很小的区域、延迟和功率开销实现了多比特纠错码。ECC逻辑122使嵌入式DRAM在低功率操作模式(空闲状态)下的功耗最小,而不损害正常操作模式下的性能。ECC逻辑122包括快速ECC逻辑104,该快速ECC逻辑104针对需要极少纠正或不需要纠正的高速缓存行进行了优化。ECC逻辑122包括高延迟ECC逻辑106,该高延迟ECC逻辑106用于需要复杂多比特纠正的高速缓存行。在实施例中,为了使处理高延迟多比特纠正的性能影响最低,ECC逻辑122禁用具有多比特失效的行。在另一个实施例中,ECC逻辑122利用数据的自然的空间局部性来降低存储ECC比特的成本。
在一个实施例中,嵌入式DRAM 110是包括在处理器100中的128兆字节(MB)的最后一级(3级(L3))高速缓存。在不具有纠错能力的基准配置中,嵌入式DRAM高速缓存110的刷新之间的时间是30微秒(us)。这使得即使在中央处理单元(CPU)102是空闲时仍消耗相当大量的功率。可以通过在低功率操作模式(例如,空闲状态)期间清洗(flushing)和电能门控嵌入式DRAM高速缓存110,来降低刷新期间消耗的功率(刷新功率)。然而,这导致在CPU 102从空闲模式(状态)唤醒时显著的性能损害,因为CPU 102需要将数据从外部存储器(主存储器(未示出))重新加载到嵌入式DRAM高速缓存110中,由此遭受大量的冷启动高速缓存未命中。可替换地,可以通过降低刷新频率来减少刷新功耗,也就是说,增加存储在嵌入式DRAM高速缓存110中的高速缓存行中的数据的刷新周期(刷新之间的时间)。然而,如果降低刷新频率的话,那么针对每一个高速缓存行存在更大数量的失效(丢失个别比特(单元)的状态)。
ECC逻辑122在每一个1KB高速缓存行上实现码(5EC6ED),需要针对每一个高速缓存行额外的71比特(0.87%的开销)来存储5EC6ED码。在选择刷新周期以使得不超过高速缓存行的1E-03(即,1/1000)失效的实施例中,没有失效减轻的基准配置以30微秒(us)的基准刷新时间进行操作。纠错码逻辑122允许刷新周期增加到440微秒,这与基准配置相比刷新周期几乎是减少了15倍。
支持5EC6ED码的逻辑是非常复杂的并且产生了长的解码延迟损害,其与纠正的错误比特的数量和数据比特的数量二者成比例。如果对于对高速缓冲存储器的每一个访问都需要完全编码/解码,那么这会显著地增加高速缓存访问延迟。在本发明的实施例中,可以禁用高速缓存的容易产生错误的部分,避免操作期间解码的高延迟。
纠错码逻辑122包括快速纠错码(ECC)逻辑(第一纠错逻辑)104和高延迟纠错码(ECC)逻辑(第二纠错码逻辑)106。
快速ECC逻辑(单元)104包括校验子生成逻辑和用于具有0或1个失效的eDRAM 110中的高速缓存行的纠错逻辑。快速ECC逻辑104还基于校验子将高速缓存行分类为两组:需要复杂的多比特纠错的高速缓存行和具有少于2个错误(即0或1个错误)的高速缓存行。将需要多比特纠错的高速缓存行转发到执行多比特纠错的高延迟ECC处理逻辑(单元)106。将由快速ECC逻辑104纠正的高速缓存行经由L1/L2高速缓存124转发到CPU 102。
在一个实施例中,高延迟ECC处理逻辑106使用软件执行纠错。在另一实施例中,高延迟多比特ECC处理逻辑106使用状态机执行多比特纠错。快速ECC逻辑104和高延迟ECC处理逻辑106的组合允许eDRAM 110中的需要一个或更少纠错的高速缓存行被立即纠正并用低延迟经由L1/L2高速缓存124转发到CPU 102。用于将eDRAM 110中的具有两个或更多个失效的高速缓存行转发到CPU 102的延迟增加。
ECC逻辑122中的快速ECC逻辑104执行一个周期ECC来纠正嵌入式DRAM 110中的高速缓存行中的单个比特错误。ECC逻辑122中的高延迟纠正逻辑106执行非流水线的高延迟ECC处理,以纠正高速缓存行中的多比特错误。
当从嵌入式DRAM 110读取高速缓存行时,其和与从标签/ECC阵列108中读取的高速缓存行相关联的标签和ECC一起通过数据缓冲器114传送到快速纠错逻辑104。标签和ECC通过数据缓冲器116传送到快速ECC逻辑104。快速ECC逻辑104中的解码器(未示出)生成用于所接收的高速缓存行的校验子。生成的校验子包括关于高速缓存行具有0、1或更大数量的错误的信息。如果高速缓存行具有0或1比特失效,那么快速ECC逻辑104中的解码器在短时间段中执行1比特失效的纠正。在一个实施例中,该短时间段可以是单个周期(500微微秒(ps))。在其他实施例中,该短时间段可以是多于一个周期。该时间段少于由高延迟ECC处理逻辑106用来执行多比特纠错的时间。
与处理多比特失效相关联的高延迟可以显著地降低性能。为了避免遭受该高延迟,在实施例中,可以将禁用有问题的行或诸如比特修复的机制集成在修理逻辑120中。
错误的频率在禁用策略中起作用。如果存在低的多比特错误率,那么诸如禁用包含多比特错误的高速缓存行之类的方法减少性能损害。然而,如果多比特错误率高的话,那么高速缓存行禁用导致不可接受的高速缓存能力损失。如果存在高的多比特错误率,那么可以使用诸如比特修复之类的更加复杂的机制来最小化禁用高速缓存行的能力损失。
在一个实施例中,修理逻辑120耦合在数据缓冲器114、116和快速ECC逻辑122之间。使用额外的修理逻辑120,仅遭受一次多比特解码性能损害,即在第一次识别由于eDRAM 110中的弱单元引起的错误时。修理逻辑120允许在将高速缓存行转发到ECC逻辑122之前降低错误的数量。因此,通过在将ECC应用到高速缓存行之前首先使用修理机制来修复高速缓存行中的已知错误,来降低整体延迟。
在一个实施例中,修理逻辑120包括比特修复逻辑。比特修复逻辑识别“损坏的”比特对并维护用于修复高速缓存行中的“损坏的”比特对的补丁。在一个实施例中,比特修复逻辑使用高速缓存集中的路(way)的四分之一来存储位置和用于失效比特的修复比特(即,用于集合的其他路中的失效比特的正确状态(值))。在低电压模式中,在将高速缓冲存储器110实现为8路高速缓存的实施例中,8路中的2路被保留用来存储用于纠正“损坏的”比特对的缺陷纠正信息。
比特修复逻辑允许有缺陷的对,即,其中(由于逻辑状态保存失效)至少一个比特是有缺陷的要被禁用的高速缓存行中的2比特组。比特修复逻辑维护能够用来纠正有缺陷的2比特对的2比特“补丁”(正确的比特状态)。修理模式(repair pattern)存储在高速缓冲存储器(eDRAM)110中选择的高速缓存行中。在低电压操作期间,修理模式(修理指针和补丁)存储在高速缓冲存储器110中。高速缓存行上的读取和写入操作首先提取用于高速缓存行的修理模式。当读取时,修理模式允许读取操作避免读取来自“损坏的”比特(有缺陷的比特)的数据。使用来自修理模式的补丁,高速缓存行在被转发到CPU 102、另一高速缓存、或写回到存储器之前被重构。当写入时,修理模式允许写入操作避免写入到失效的比特。新的补丁被写入到修理模式中以反映写入到高速缓存的新的数据。描述了使用比特修复逻辑的修理机构(修理逻辑120)的实施例。在其他实施例中,可以在应用ECC之前使用不同于比特修复的修理机构来修复已知的错误。
在一个实施例中,高速缓冲存储器110是具有64B高速缓存行的32K的8路高速缓存。对存储在高速缓冲存储器110中的数据的每一次访问需要额外的访问来检索合适的修理模式。为了在不增加端口数量的情况下访问修理模式,比特修复方案将高速缓冲存储器110组织为两个存储体。维护了两个修复行,每个存储体中一个,并且每一个用于修复相对存储体中的高速缓存行。用于三个高速缓存行的修理模式安置在单个高速缓存行中。因此维护了用于每三个高速缓存行的单个修复行(存储修理模式的高速缓存行)。将修复行分配给与使用其修理模式的三个高速缓存行相对的存储体中。这允许并行地提取高速缓存行和其修理模式,而不增加高速缓存端口的数量。
当高速缓存命中时,从高速缓冲存储器110的一个存储体中读取数据行并且从高速缓冲存储器110的另一存储体中读取修复行。数据行通过“n”个比特移位阶段,其中“n”表示有缺陷的比特对的数量。每一个阶段移除一个有缺陷的对,并用修复后的对取代它。因为修复行也可能包含损坏的比特,所以在使用它们之前应用SECDED ECC来纠正修复行中的修理模式。在修复好修理模式之后,使用它们来纠正数据行。修理单个有缺陷的对包括三个部分。第一,SECDED ECC修理在修理模式中的任何有缺陷的比特。第二,缺陷指针识别有缺陷的对。第三,在移除有缺陷的对之后,补丁将缺失的正确比特再引入到高速缓存行中。
图2是包括最近访问行表(RALT)112的实施例和图1中示出的嵌入式DRAM高速缓存110和ECC逻辑122的系统200的框图,其说明了对eDRAM高速缓存110中的高速缓存行的快速访问。
使用大小大于64字节的高速缓存行来降低需要用来存储多比特ECC码的存储器存储。在一个实施例中,eDRAM高速缓存110是3级(L3)高速缓存,其是128MB嵌入式DRAM,并且高速缓存行202的大小是1024字节(1千字节(KB))。2级(L2)高速缓存/1级(L1)高速缓存124具有64字节(B)高速缓存行(称为L3高速缓存行的子块)。对L3eDRAM高速缓存110的大部分写入是在较低级(L1或L2)高速缓冲存储器124生成的或从非高速缓冲存储器(主存储器/外部存储器(未示出))提取的较小的64字节子块的形式。
要修改1KB高速缓存行202中的64B子块204,由CPU 102执行读取-修改-写入操作以计算ECC码。首先,与用于整个1KB高速缓存行202的ECC码208一起,从eDRAM高速缓存110读取正在被重写的64B子块204。使用旧的数据、旧的ECC码和新的数据来计算用于整个1KB高速缓存行202的新的ECC 208。将新的64B子块204和新的ECC码208写回到L3eDRAM高速缓存110。然而,如下面将讨论的,不读取整个1KB高速缓存行202以计算新的ECC 208。
执行来自L3高速缓存110的大部分读取以提供用于在较低级(L1和L2)高速缓存124中进行分配的高速缓存行。处理高速缓存行202的任何子块204需要处理ECC 208以及它保护的整个数据字(1KB高速缓存行)202。由于需要检查1KB高速缓存行202中的每一个64B子块204,所以对64B子块204的每一次访问都伴随着对周围64B子块204的访问。因此,除了高速缓存行202中的所有子块204共享的ECC 208(每高速缓存行)之外,对L3嵌入式DRAM高速缓存110的任何读取要访问1KB高速缓存行202中所有的16个64比特子块204。例如,为了只读取一个1KB高速缓存行202中的16个子块204中的8个,所有的16个子块204被读取8次,总共128次分离的子块读取。这种大量的额外的子块读取导致动态功耗的大幅增加和由eDRAM高速缓存110提供的有用高速缓存带宽的减少。
大多数eDRAM失效是由保存失效造成的,因为如已经讨论的,需要周期性地刷新eDRAM高速缓存110以维持每一个存储单元的当前状态。在一个实施例中,保存时间是30微秒(us),并且特定高速缓存行的每一次读取自动地意味着该高速缓存行的刷新。因此,在特定高速缓存行被读取之后,30us内在该高速缓存行中不应当出现保存失效。该知识允许最小化冗余读取的数量。使用RALT 112来跟踪在最近30us中被访问(读取)的高速缓存行。
对eDRAM高速缓存110中的高速缓存行202的第一次读取使得高速缓存行202中的所有子块204被读取和检查错误。读取的高速缓存行202的地址被存储在RALT 112中的RALT条目206中。存储的地址指示高速缓存行202最近被读取和检查,并且因此在接下来的30us中应当保持没有保存错误。当所读取的高速缓存行的地址被存储在RALT 112中时,对来自该高速缓存行202的子块的任何随后的读取可以放弃ECC处理,因此避免读取与高速缓存行202相关联的ECC 208以及高速缓存行202中的其他子块204。RALT 112通过将每一个30us时间段分割为多个相等的“高速缓存行读取”周期,来确保没有其条目206被保存超过30us。用识别子刷新周期的周期标识符214来标记在每一个周期期间在RALT 112中分配的条目206。子刷新周期之间的转换使得先前在多个“高速缓存行读取”周期的一个中分配的所有RALT条目无效(如由与RALT中条目206相关联的“有效”字段的状态所指示的)。
RALT 112中的每一个条目206包括以下字段:用于识别与条目相关联的高速缓存行的行地址字段209;有效字段212,用于指示在哪个周期分配了行的周期标识符字段214;以及包括用于高速缓存行中的每一个子块的一个奇偶校验比特的奇偶校验字段211。在一个实施例中,周期标识符214具有指示高速缓存行在四个周期(P0、P1、P2、P3)的哪一个中被分配的两个比特,并且奇偶校验字段211具有16个比特,其中,高速缓存行中的每个64B子块1个比特。RALT 112被直接映射,但是支持周期字段214上的CAM(可按内容寻址的存储器)无效以允许在周期转换期间RALT 112中的条目206的批量无效。
第一次读取子块204时,还读取整个ECC 208以及1KB高速缓存行202中的每一个子块以允许用于单个64B子块204的ECC处理。用访问的高速缓存行202的行地址、周期标识符和用于高速缓存行202中的每一个子块204的单个奇偶校验比特来更新与RALT 112中的高速缓存行202相关联的条目206。在对高速缓存行202第一次命中之后,在刷新周期中对同一高速缓存行202的未来访问不需要ECC处理。
对高速缓存行的第一次读取使得行中所有的子块被读取和检查失效。然后将该行的地址存储在RALT中以指示它最近已经被检查了并且将在接下来的30us中保持没有保存失效。只要行的地址存储在RALT中,来自该行的任何子块读取可以放弃ECC处理并且因此避免读取ECC码和该行中的其他子块。
为了正确地进行操作,RALT 112确保其条目都没有比30us更老。要保证这一点,使用计数器216来测量每一个30us周期的消逝。每一个30us周期被分割为四个相等的子周期(P0、P1、P2、P3)。用2比特的标识符来标记在每一个周期期间在RALT 112中分配的条目,以指定可以通过检查计数器的当前值来确定的分配子周期。例如,可以使用每个周期增加的、计数到60000的计数器216来测量2GHz处理器100中的30us的消逝。例如计数器值在0-15000之间对应于子周期P0,15001-30000对应于子周期P1,30001-45000对应于子周期P2,以及45001-60000对应于子周期P3。当计数器216到达60000时它复位为0.,使得从P3转换到P0。每一次子周期转换可以使得在该子周期的先前实例期间分配的一些或所有RALT条目无效。例如,从子周期P0到子周期P1的转换将使得先前在子周期P1中分配的所有RALT条目无效。
图3是说明了在刷新周期中对高速缓存行的随后的读取的图2中示出的系统的框图。在大部分情况中,只读取所请求的64B子块。计算用于该64B子块204的奇偶校验并且将其与存储在RALT 112中的用于高速缓存行202的那个64B子块204的奇偶校验211进行比较。如果存在匹配,那么推论是该64B子块204是有效的并且将该64B子块204转发到请求高速缓存124或处理器102。奇偶校验不匹配被视为RALT未命中,并且读取整个1KB高速缓存行202。RALT 112用来跟踪最近访问的高速缓存行202以避免在每一次高速缓存读取时读取整个1KB高速缓存行202,因此使动态功率最小。
图4A是说明了包括在图1中示出的快速ECC逻辑104中的ECC编码器400的实施例的框图。BCH码是可以纠正高度集中和广泛分散的错误二者的一大类多比特纠错码。通常,每一个BCH码是用生成器多项式在有限伽罗华域GF(2m)上定义的线性块码,其中2m表示码字比特的最大数量。
ECC编码器(编码逻辑)400采用k比特输入数据字d并且使用预定义的编码器矩阵G来生成对应的码字u(u=d×G)。由于BCH是系统码,所以原始的k比特数据被保存在码字u(x)中,并且后面是r个检查比特。
图4B是说明了包括在图1中示出的快速ECC逻辑中的ECC解码器(解码逻辑)402的实施例的框图。解码逻辑402检测和纠正所接收的码字u(x)中的任何错误以恢复数据的原始值。解码逻辑402包括校验子生成逻辑404、错误分类逻辑406和纠错逻辑408。
校验子生成逻辑404首先通过将v(具有错误e的码字,以使得v=u+e)乘以预定义的H矩阵的转置来计算校验子S(S=v×HT)。用G×HT=0的方式构造G和H矩阵。H矩阵的一般形式如下:
在有限域GF(2m)中,可以将每一个元素αi表示为次数少于m的α的多项式,或简单地为具有该多项式的m个二进制系数的矢量。因此,H矩阵可以扩展为具有(t*m+1)行的二进制矩阵,其中t是码能够纠正的错误的最大数量。由于S=v×HT,所有S也具有t*m+1比特,其可以被分割为多个部分[Parity,S1,S3,...,S2t-1]。
错误分类逻辑使用校验子S来检测码字是否具有任何错误。由于:
S=v×HT=(u+e)×HT=(d×G+e)×HT=d×(G×HT)+e×HT=e×HT (3)
因此,在0错误的情况中,S=0并且以下方程式将保持为真:
Parity=S1=S3=...=S2t-1=0 (4)
如方程式(3)所示出的,码字中没有错误使得校验子值为零。可以通过执行所有校验子比特的逻辑OR来检测这种情况。这需要ceil(log2tm)个2输入门延迟。
如果上述方程式没有满足,那么纠错逻辑使用校验子值来查明损坏的比特的位置。
将e中的错误位置标示为[j1,j2,...,jt],然后可以将每一个校验子部分Si指定为:
Si=αj1*i+αj2*i+...+αjt*i (5)
纠正逻辑实现以下三个步骤:
步骤1:确定错误位置多项式σ(x)的系数,其中,定义σ(x)以使得σ(x)的根分别由错误元素αj1,αj2, ...,αjt的逆给出,
σ(x)=1+σ1x+...+σtxt=(1-αj1x)(1-αj2x)...(1-αjtx) (6)
纠错的步骤1是基于t步迭代算法的,其中每个迭代涉及伽罗华域求逆,其独自花费2m次运算。
步骤2:求解σ(x)的根,其是错误位置。当确定了多项式σ(x)时,将每一个域元素αj代入到多项式中。那些使多项式等于零的元素是根。步骤2的实现采取一个电路的n次循环,或n个并行电路的单次循环。任一种方法,基本电路都是O(t*m2)。
步骤3:计算用于数据比特的纠正值。这可以通过简单地翻转错误位置的比特来完成。
在单个比特错误的情况中,校验子与对应于错误比特的H矩阵的列完全匹配。因此,可以通过将H矩阵的每一列与校验子进行比较来检测单个比特错误。该纠正比t比特纠正(t>1)的一般情况快得多,因为它不需要纠错逻辑的步骤1和大部分步骤2。所有的校验子部分不必都与整个H矩阵列相匹配。所需要的只是将S1与H1(在方程式(1)中定义的)中每一列进行比较并且验证满足以下方程式:
[(parity=1)&(S1 3==S3)&(S1 5==S5)&...&(S1 2t-1==S2t-1)]==1 (7)
为了使延迟最小,可以并行地进行S1与H1的比较以及方程式(7)中所有的比较。
图5是说明了根据本发明的原理的用于使用图1中示出的系统100的方法的实施例的流程图。
在框500,如果高速缓存行地址(addr)与最近访问行表112中的RALT条目206相关联,那么该高速缓存行最近被访问了并且不需要错误检查,将高速缓存行地址经由L1/L2高速缓存124转发到CPU 102。如果没有,处理继续进行到框502。
在框502,如前面结合图2所讨论的,高速缓存行地址(addr)被存储在RALT表112中的RALT条目206中的行地址字段209。存储在高速缓冲存储器110的高速缓存行中的数据和存储在对应于所述地址的标签/ECC阵列118中的标签/ECC被读取并且通过数据缓冲器114、116被转发。处理继续进行到框504。
在框504,在包括修理逻辑120的实施例中,处理继续进行到框512以修理高速缓存行。在没有包括修理逻辑的实施例中,处理继续进行到框506。
在框506,由快速ECC逻辑104执行快速ECC以确定高速缓存行中是否存在错误。处理继续进行到框508。
在框508,如果高速缓存行中存在多于两个错误要纠正,那么处理继续进行到框514。如果存在少于两个错误,那么由快速ECC逻辑104来纠正错误并且处理继续进行到框510。
在框510,将纠正的高速缓存行数据经由L1/L2高速缓存124转发到CPU 102。
在框512,如前面所讨论的,修理从高速缓冲存储器110读取并且通过数据缓冲器114、116转发的高速缓存行数据。处理继续进行到框506。
在框514,Hi ECC逻辑纠正高速缓存行中的多比特错误,然后处理继续进行到框510。
图6是包括图1中示出的处理器100的实施例的系统600的框图。系统600包括具有嵌入式高速缓冲存储器的处理器100、存储器控制器中心(MCH)602和输入/输出(I/O)控制器中心(ICH)604。MCH 602包括控制处理器601和外部存储器(主存储器)610之间的通信的存储器控制器606。处理器100和MCH 602通过系统总线616进行通信。
CPU 102可以是多个处理器中的任意一个,例如单核Pentium IV处理器、单核Intel Celeron处理器、XScale处理器或诸如Pentium D、处理器、或Duo处理器的多核处理器或任何其他类型的处理器。
存储器610可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率2(DDR2)RAM或Rambus动态随机存取存储器(RDRAM)或任何其他类型的存储器。
可以使用诸如直接介质接口(DMI)的高速芯片到芯片互连614将ICH604耦合到MCH 602。DMI支持经由两个单向通道的2吉比特/秒的并发传送速率。
ICH 604可以包括用于控制与耦合到ICH 604的至少一个存储设备612的通信的存储输入/输出(I/O)控制器。存储设备可以是,例如,磁盘驱动器,数字视频盘(DVD)驱动器、压缩盘(CD)驱动器、独立冗余磁盘阵列(RAID)、磁带驱动器或其他存储设备。ICH 604可以通过使用串行存储协议的存储协议互连618与存储设备612进行通信,其中所述串行存储协议例如串行连接小型计算机系统接口(SAS)或串行高级技术附件(SATA)。
对本领域中的普通技术人员显而易见的是,本发明的实施例中涉及的方法可以体现在包括计算机可用介质的计算机程序产品中。例如,计算机可用介质可以包括只读存储设备,例如压缩盘只读存储器(CD ROM)盘或传统的ROM设备,或具有在其上存储的计算机可读程序代码的计算机软盘。
尽管已经参考实施例特别示出和描述了本发明的实施例,但是本领域中的技术人员将理解,可以在不脱离由所附权利要求包含的本发明的实施例的范围的情况下,在其中对形式和细节进行各种改变。
Claims (22)
1.一种装置,包括:
高速缓冲存储器;以及
纠错逻辑,用于接收存储在所述高速缓冲存储器的高速缓存行中的数据,所述纠错逻辑包括:
第一纠错逻辑,用于为所接收的、从所述高速缓冲存储器读取的高速缓存行生成校验子,以确定所述高速缓存行中的错误的数量;以及
第二纠错逻辑,用于仅当所述高速缓存行具有多于一个错误时从所述第一纠错逻辑接收所述高速缓存行,所述第二纠错逻辑还用于对所接收的高速缓存行执行多比特纠错。
2.根据权利要求1所述的装置,还包括:
修理逻辑,所述修理逻辑用于在将所述高速缓存行转发到所述纠错逻辑之前修复所述高速缓存行中的已知错误。
3.根据权利要求1所述的装置,其中,所述高速缓冲存储器是易失性存储器。
4.根据权利要求1所述的装置,其中,所述第一纠错逻辑包括用于在比所述多比特纠错更短的时间段中执行纠正的解码器。
5.根据权利要求1所述的装置,其中,所述第一纠错逻辑包括校验子生成逻辑和用于具有0或1个失效的高速缓存行的纠错逻辑。
6.根据权利要求1所述的装置,还包括:
最近访问行表(RALT),其耦合到所述高速缓冲存储器的地址总线,所述RALT用于确定在所述易失性高速缓冲存储器的当前刷新时间周期中所寻址的高速缓存行是否已经被访问。
7.根据权利要求6所述的装置,其中,所述RALT用于跟踪最近访问的行。
8.根据权利要求1所述的装置,其中,所述第一纠错逻辑用于对所接收的高速缓存行中的单个错误执行纠错。
9.一种方法,包括:
将数据存储在高速缓冲存储器中;
由纠错逻辑接收存储在所述高速缓冲存储器的高速缓存行中的数据,所述纠错逻辑包括第一纠错逻辑和第二纠错逻辑;
由所述第一纠错逻辑为所接收的、从所述高速缓冲存储器读取的高速缓存行生成校验子,以确定所述高速缓存行中的错误的数量;
仅当所述高速缓存行具有多于一个错误时,由所述第一纠错逻辑将所述高速缓存行转发到第二纠错逻辑;以及
由所述第二纠错逻辑对所接收的高速缓存行执行多比特纠错。
10.根据权利要求9所述的方法,还包括:
在将所述高速缓存行转发到所述纠错逻辑之前,由修理逻辑修理所述高速缓存行中的已知错误。
11.根据权利要求9所述的方法,还包括:
由所述第一纠错逻辑在比所述多比特纠错更短的时间段中执行纠正。
12.根据权利要求11所述的方法,还包括:
由耦合到所述高速缓冲存储器的地址总线的最近访问行表(RALT)确定在所述高速缓冲存储器的当前刷新时间周期中所寻址的高速缓存行是否已经被访问。
13.根据权利要求12所述的方法,还包括:
由所述RALT跟踪最近访问的高速缓存行。
14.根据权利要求9所述的方法,还包括:
由所述第一纠错逻辑对所接收的高速缓存行中的单个错误执行纠错。
15.一种物品,其包括具有相关联的信息的机器可访问介质,其中,当所述信息被访问时使得机器执行:
将数据存储在高速缓冲存储器中;
由纠错逻辑接收存储在所述高速缓冲存储器的高速缓存行中的数据,所述纠错逻辑包括第一纠错逻辑和第二纠错逻辑;
由所述第一纠错逻辑为所接收的、从所述高速缓冲存储器读取的高速缓存行生成校验子,以确定所述高速缓存行中的错误的数量;
仅当所述高速缓存行具有多于一个错误时,由所述第一纠错逻辑将所述高速缓存行转发到第二纠错逻辑;以及
由所述第二纠错逻辑对所接收的高速缓存行执行多比特纠错。
16.根据权利要求15所述的物品,还包括:
在将所述高速缓存行转发到所述纠错逻辑之前,由修理逻辑修理所述高速缓存行中的已知错误。
17.根据权利要求15所述的物品,还包括:
由所述第一纠错逻辑在比所述多比特纠错更短的时间段中执行纠正。
18.根据权利要求15所述的物品,还包括:
由耦合到所述高速缓冲存储器的地址总线的最近访问行表(RALT)确定在所述高速缓冲存储器的当前刷新时间周期中所寻址的高速缓存行是否已经被访问。
19.根据权利要求15所述的物品,还包括:
由所述第一纠错逻辑对所接收的高速缓存行中的单个错误执行纠错。
20.一种系统,包括:
外部存储器;以及
处理器,所述处理器包括:
高速缓冲存储器,用于存储从所述外部存储器读取的数据;以及
纠错逻辑,用于接收存储在所述高速缓冲存储器的高速缓存行中的数据,所述纠错逻辑包括:
第一纠错逻辑,用于为所接收的、从所述高速缓冲存储器读取的高速缓存行生成校验子,以确定所述高速缓存行中的错误的数量;以及
第二纠错逻辑,用于仅当所述高速缓存行具有多于一个错误时从所述第一纠错逻辑接收所述高速缓存行,所述第二纠错逻辑还用于对所接收的高速缓存行执行多比特纠错。
21.根据权利要求20所述的系统,还包括:
修理逻辑,所述修理逻辑用于在将所述高速缓存行转发到所述纠错逻辑之前修复所述高速缓存行中的已知错误。
22.根据权利要求20所述的系统,其中,所述第一纠错逻辑包括:用于在比所述多比特纠错更短的时间段中执行纠正的解码器、校验子生成逻辑以及用于具有0或1个失效的高速缓存行的纠错逻辑。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/785,182 | 2010-05-21 | ||
US12/785,182 US8640005B2 (en) | 2010-05-21 | 2010-05-21 | Method and apparatus for using cache memory in a system that supports a low power state |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102253865A true CN102253865A (zh) | 2011-11-23 |
CN102253865B CN102253865B (zh) | 2014-03-05 |
Family
ID=44973483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110130191.XA Active CN102253865B (zh) | 2010-05-21 | 2011-05-19 | 用于在系统中使用高速缓冲存储器的方法和装置 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8640005B2 (zh) |
JP (1) | JP5604513B2 (zh) |
KR (1) | KR101495049B1 (zh) |
CN (1) | CN102253865B (zh) |
BR (1) | BRPI1105243A8 (zh) |
DE (1) | DE112011100579B4 (zh) |
GB (1) | GB2506833B (zh) |
TW (1) | TWI502599B (zh) |
WO (1) | WO2011146823A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103811047A (zh) * | 2014-02-17 | 2014-05-21 | 上海新储集成电路有限公司 | 一种基于分块dram的低功耗刷新方法 |
CN104424040A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN105027084A (zh) * | 2013-03-04 | 2015-11-04 | 三星电子株式会社 | 在移动通信系统中控制存储器的装置和方法 |
CN105590654A (zh) * | 2014-11-07 | 2016-05-18 | 恩智浦有限公司 | 易失性存储器电路的休眠模式操作 |
CN110838334A (zh) * | 2018-08-16 | 2020-02-25 | 爱思开海力士有限公司 | 高速缓存缓冲器以及具有其的半导体存储器装置 |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484539B1 (en) * | 2009-06-09 | 2013-07-09 | Sk Hynix Memory Solutions Inc. | Controlling power consumption in iterative ECC processing systems |
US8533572B2 (en) | 2010-09-24 | 2013-09-10 | Intel Corporation | Error correcting code logic for processor caches that uses a common set of check bits |
US8924817B2 (en) * | 2010-09-29 | 2014-12-30 | Advanced Micro Devices, Inc. | Method and apparatus for calculating error correction codes for selective data updates |
US8788904B2 (en) * | 2011-10-31 | 2014-07-22 | Hewlett-Packard Development Company, L.P. | Methods and apparatus to perform error detection and correction |
US9304570B2 (en) | 2011-12-15 | 2016-04-05 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements |
US9195551B2 (en) | 2012-03-29 | 2015-11-24 | Intel Corporation | Enhanced storage of metadata utilizing improved error detection and correction in computer memory |
US9444496B2 (en) * | 2012-04-04 | 2016-09-13 | University Of Southern California | Correctable parity protected memory |
US9323608B2 (en) | 2012-06-07 | 2016-04-26 | Micron Technology, Inc. | Integrity of a data bus |
KR101979734B1 (ko) | 2012-08-07 | 2019-05-17 | 삼성전자 주식회사 | 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법 |
US9703364B2 (en) * | 2012-09-29 | 2017-07-11 | Intel Corporation | Rotational graphics sub-slice and execution unit power down to improve power performance efficiency |
KR102081980B1 (ko) * | 2012-10-08 | 2020-02-27 | 삼성전자 주식회사 | 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 |
US9128858B1 (en) * | 2013-01-29 | 2015-09-08 | Pmc-Sierra Us, Inc. | Apparatus and method for adjusting a correctable raw bit error rate limit in a memory system using strong log-likelihood (LLR) values |
US9092353B1 (en) | 2013-01-29 | 2015-07-28 | Pmc-Sierra Us, Inc. | Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
US9397701B1 (en) | 2013-03-11 | 2016-07-19 | Microsemi Storage Solutions (Us), Inc. | System and method for lifetime specific LDPC decoding |
US9454414B2 (en) | 2013-03-15 | 2016-09-27 | Microsemi Storage Solutions (Us), Inc. | System and method for accumulating soft information in LDPC decoding |
US9450610B1 (en) | 2013-03-15 | 2016-09-20 | Microsemi Storage Solutions (Us), Inc. | High quality log likelihood ratios determined using two-index look-up table |
US9590656B2 (en) | 2013-03-15 | 2017-03-07 | Microsemi Storage Solutions (Us), Inc. | System and method for higher quality log likelihood ratios in LDPC decoding |
JP2014211800A (ja) * | 2013-04-19 | 2014-11-13 | 株式会社東芝 | データ記憶装置、ストレージコントローラおよびデータ記憶制御方法 |
TWI502601B (zh) * | 2013-04-24 | 2015-10-01 | Ind Tech Res Inst | 混合式錯誤修復方法及其記憶體裝置 |
WO2015016880A1 (en) | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Global error correction |
WO2015016879A1 (en) * | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Operating a memory unit |
JP6275427B2 (ja) * | 2013-09-06 | 2018-02-07 | 株式会社東芝 | メモリ制御回路およびキャッシュメモリ |
US9286224B2 (en) | 2013-11-26 | 2016-03-15 | Intel Corporation | Constraining prefetch requests to a processor socket |
JP6140093B2 (ja) | 2014-03-18 | 2017-05-31 | 株式会社東芝 | キャッシュメモリ、誤り訂正回路およびプロセッサシステム |
US9417804B2 (en) | 2014-07-07 | 2016-08-16 | Microsemi Storage Solutions (Us), Inc. | System and method for memory block pool wear leveling |
KR102193682B1 (ko) | 2014-08-01 | 2020-12-21 | 삼성전자주식회사 | 선택적 ecc 기능을 갖는 반도체 메모리 장치 |
US9442801B2 (en) | 2014-09-26 | 2016-09-13 | Hewlett Packard Enterprise Development Lp | Platform error correction |
US9489255B2 (en) | 2015-02-12 | 2016-11-08 | International Business Machines Corporation | Dynamic array masking |
US10332613B1 (en) | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
US9740558B2 (en) | 2015-05-31 | 2017-08-22 | Intel Corporation | On-die ECC with error counter and internal address generation |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
US10127101B2 (en) | 2015-08-28 | 2018-11-13 | Intel Corporation | Memory device error check and scrub mode and error transparency |
US9886214B2 (en) | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US10268539B2 (en) * | 2015-12-28 | 2019-04-23 | Intel Corporation | Apparatus and method for multi-bit error detection and correction |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US11169707B2 (en) | 2016-01-22 | 2021-11-09 | Netapp, Inc. | Garbage collection pacing in a storage system |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
US10157677B2 (en) | 2016-07-28 | 2018-12-18 | Ip Gem Group, Llc | Background reference positioning and local reference positioning using threshold voltage shift read |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
US10379944B2 (en) * | 2017-04-17 | 2019-08-13 | Advanced Micro Devices, Inc. | Bit error protection in cache memories |
US10642683B2 (en) | 2017-10-11 | 2020-05-05 | Hewlett Packard Enterprise Development Lp | Inner and outer code generator for volatile memory |
US10985780B2 (en) * | 2018-10-15 | 2021-04-20 | SK Hynix Inc. | Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller |
US10884940B2 (en) * | 2018-12-21 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for using compression to improve performance of low voltage caches |
KR20200140074A (ko) | 2019-06-05 | 2020-12-15 | 에스케이하이닉스 주식회사 | 휘발성 메모리 장치 및 이의 동작 방법 |
US11036636B2 (en) | 2019-06-28 | 2021-06-15 | Intel Corporation | Providing improved efficiency for metadata usages |
KR20210015087A (ko) | 2019-07-31 | 2021-02-10 | 에스케이하이닉스 주식회사 | 오류 정정 회로, 이를 포함하는 메모리 컨트롤러 및 메모리 시스템 |
US11049585B1 (en) * | 2020-03-27 | 2021-06-29 | Macronix International Co., Ltd. | On chip block repair scheme |
KR20210122455A (ko) | 2020-04-01 | 2021-10-12 | 삼성전자주식회사 | 반도체 메모리 장치 |
CN112181712B (zh) * | 2020-09-28 | 2022-02-22 | 中国人民解放军国防科技大学 | 一种提高处理器核可靠性的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480975B1 (en) * | 1998-02-17 | 2002-11-12 | International Business Machines Corporation | ECC mechanism for set associative cache array |
CN1881477A (zh) * | 2005-06-15 | 2006-12-20 | 日立环球储存科技荷兰有限公司 | 编码数据的错误检测和校正 |
US7389465B2 (en) * | 2004-01-30 | 2008-06-17 | Micron Technology, Inc. | Error detection and correction scheme for a memory device |
CN101558385A (zh) * | 2006-12-14 | 2009-10-14 | 英特尔公司 | 高速缓存辅助的存储器检错和纠错的方法和装置 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4139148A (en) * | 1977-08-25 | 1979-02-13 | Sperry Rand Corporation | Double bit error correction using single bit error correction, double bit error detection logic and syndrome bit memory |
US4236247A (en) * | 1979-01-15 | 1980-11-25 | Organisation Europeene De Recherches Spatiales | Apparatus for correcting multiple errors in data words read from a memory |
JP2696212B2 (ja) | 1987-05-06 | 1998-01-14 | セイコーエプソン株式会社 | 誤り訂正装置 |
JPH0275039A (ja) | 1988-09-12 | 1990-03-14 | Mitsubishi Electric Corp | メモリ回路 |
US5604213A (en) * | 1992-03-31 | 1997-02-18 | British Technology Group Limited | 17-substituted steroids useful in cancer treatment |
US5604753A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for performing error correction on data from an external memory |
CN1159648C (zh) | 1994-12-02 | 2004-07-28 | 现代电子美国公司 | 有限游程转移预测方法 |
JPH0991206A (ja) * | 1995-09-27 | 1997-04-04 | Toshiba Corp | メモリ制御装置およびメモリ検査方法 |
US5802582A (en) * | 1996-09-10 | 1998-09-01 | International Business Machines Corporation | Explicit coherence using split-phase controls |
US6044479A (en) * | 1998-01-29 | 2000-03-28 | International Business Machines Corporation | Human sensorially significant sequential error event notification for an ECC system |
US6304992B1 (en) | 1998-09-24 | 2001-10-16 | Sun Microsystems, Inc. | Technique for correcting single-bit errors in caches with sub-block parity bits |
US6772383B1 (en) * | 1999-05-27 | 2004-08-03 | Intel Corporation | Combined tag and data ECC for enhanced soft error recovery from cache tag errors |
US6505318B1 (en) * | 1999-10-01 | 2003-01-07 | Intel Corporation | Method and apparatus for partial error detection and correction of digital data |
JP2003203010A (ja) | 2002-01-07 | 2003-07-18 | Nec Computertechno Ltd | L2キャッシュメモリ |
US6971041B2 (en) | 2002-03-04 | 2005-11-29 | International Business Machines Corporation | Cache entry error-correcting code (ECC) based at least on cache entry data and memory address |
US7296213B2 (en) * | 2002-12-11 | 2007-11-13 | Nvidia Corporation | Error correction cache for flash memory |
JP4299558B2 (ja) * | 2003-03-17 | 2009-07-22 | 株式会社ルネサステクノロジ | 情報記憶装置および情報処理システム |
US7069494B2 (en) * | 2003-04-17 | 2006-06-27 | International Business Machines Corporation | Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism |
JP4041076B2 (ja) * | 2004-02-27 | 2008-01-30 | 株式会社東芝 | データ記憶システム |
US20060031708A1 (en) | 2004-08-04 | 2006-02-09 | Desai Kiran R | Method and apparatus for correcting errors in a cache array |
US7590920B2 (en) * | 2005-08-05 | 2009-09-15 | Hitachi Global Storage Technologies Netherlands, B.V. | Reduced complexity error correction encoding techniques |
US7590913B2 (en) * | 2005-12-29 | 2009-09-15 | Intel Corporation | Method and apparatus of reporting memory bit correction |
US7647536B2 (en) * | 2005-12-30 | 2010-01-12 | Intel Corporation | Repair bits for a low voltage cache |
US7512847B2 (en) * | 2006-02-10 | 2009-03-31 | Sandisk Il Ltd. | Method for estimating and reporting the life expectancy of flash-disk memory |
US8010875B2 (en) * | 2007-06-26 | 2011-08-30 | International Business Machines Corporation | Error correcting code with chip kill capability and power saving enhancement |
JP4672743B2 (ja) * | 2008-03-01 | 2011-04-20 | 株式会社東芝 | 誤り訂正装置および誤り訂正方法 |
-
2010
- 2010-05-21 US US12/785,182 patent/US8640005B2/en active Active
-
2011
- 2011-04-27 TW TW100114662A patent/TWI502599B/zh active
- 2011-05-19 CN CN201110130191.XA patent/CN102253865B/zh active Active
- 2011-05-20 WO PCT/US2011/037319 patent/WO2011146823A2/en active Application Filing
- 2011-05-20 BR BRPI1105243A patent/BRPI1105243A8/pt active Search and Examination
- 2011-05-20 GB GB1122300.5A patent/GB2506833B/en active Active
- 2011-05-20 KR KR20127033246A patent/KR101495049B1/ko active IP Right Grant
- 2011-05-20 JP JP2012517938A patent/JP5604513B2/ja active Active
- 2011-05-20 DE DE112011100579.2T patent/DE112011100579B4/de active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480975B1 (en) * | 1998-02-17 | 2002-11-12 | International Business Machines Corporation | ECC mechanism for set associative cache array |
US7389465B2 (en) * | 2004-01-30 | 2008-06-17 | Micron Technology, Inc. | Error detection and correction scheme for a memory device |
CN1881477A (zh) * | 2005-06-15 | 2006-12-20 | 日立环球储存科技荷兰有限公司 | 编码数据的错误检测和校正 |
CN101558385A (zh) * | 2006-12-14 | 2009-10-14 | 英特尔公司 | 高速缓存辅助的存储器检错和纠错的方法和装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105027084A (zh) * | 2013-03-04 | 2015-11-04 | 三星电子株式会社 | 在移动通信系统中控制存储器的装置和方法 |
CN105027084B (zh) * | 2013-03-04 | 2017-11-21 | 三星电子株式会社 | 在移动通信系统中控制存储器的装置和方法 |
CN104424040A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN107193684A (zh) * | 2013-08-23 | 2017-09-22 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104424040B (zh) * | 2013-08-23 | 2017-10-31 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN103811047A (zh) * | 2014-02-17 | 2014-05-21 | 上海新储集成电路有限公司 | 一种基于分块dram的低功耗刷新方法 |
CN103811047B (zh) * | 2014-02-17 | 2017-01-18 | 上海新储集成电路有限公司 | 一种基于分块dram的低功耗刷新方法 |
CN105590654A (zh) * | 2014-11-07 | 2016-05-18 | 恩智浦有限公司 | 易失性存储器电路的休眠模式操作 |
CN110838334A (zh) * | 2018-08-16 | 2020-02-25 | 爱思开海力士有限公司 | 高速缓存缓冲器以及具有其的半导体存储器装置 |
CN110838334B (zh) * | 2018-08-16 | 2023-03-21 | 爱思开海力士有限公司 | 高速缓存缓冲器以及具有其的半导体存储器装置 |
Also Published As
Publication number | Publication date |
---|---|
DE112011100579B4 (de) | 2021-09-02 |
DE112011100579T5 (de) | 2013-02-07 |
JP2012531683A (ja) | 2012-12-10 |
TW201209841A (en) | 2012-03-01 |
WO2011146823A3 (en) | 2012-04-05 |
CN102253865B (zh) | 2014-03-05 |
GB2506833A (en) | 2014-04-16 |
US8640005B2 (en) | 2014-01-28 |
WO2011146823A2 (en) | 2011-11-24 |
US20110289380A1 (en) | 2011-11-24 |
KR101495049B1 (ko) | 2015-02-24 |
KR20130020808A (ko) | 2013-02-28 |
BRPI1105243A2 (pt) | 2017-06-20 |
JP5604513B2 (ja) | 2014-10-08 |
TWI502599B (zh) | 2015-10-01 |
GB201122300D0 (en) | 2012-02-01 |
GB2506833B (en) | 2018-12-19 |
BRPI1105243A8 (pt) | 2018-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102253865B (zh) | 用于在系统中使用高速缓冲存储器的方法和装置 | |
US7437597B1 (en) | Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines | |
Yoon et al. | FREE-p: Protecting non-volatile memory against both hard and soft errors | |
Wilkerson et al. | Reducing cache power with low-cost, multi-bit error-correcting codes | |
Sim et al. | Resilient die-stacked DRAM caches | |
JP4512111B2 (ja) | 行列ストライプキャッシュを利用したraidシステムの入出力性能を向上させる方法 | |
AU2011229938B2 (en) | Non-regular parity distribution detection via metadata tag | |
US8205136B2 (en) | Fault tolerant encoding of directory states for stuck bits | |
US8190973B2 (en) | Apparatus and method for error correction of data values in a storage device | |
KR101557572B1 (ko) | 메모리 회로들, 메모리에 액세스하는 방법 및 메모리를 복구하는 방법 | |
Roberts et al. | On-chip cache device scaling limits and effective fault repair techniques in future nanoscale technology | |
Mittal et al. | A survey of techniques for improving error-resilience of DRAM | |
WO2015087184A1 (en) | Recording dwell time in a non-volatile memory system | |
US20120079346A1 (en) | Simulated error causing apparatus | |
US7689891B2 (en) | Method and system for handling stuck bits in cache directories | |
Ahn et al. | Selectively protecting error-correcting code for area-efficient and reliable STT-RAM caches | |
Farbeh et al. | CLEAR: Cache lines error accumulation reduction by exploiting invisible accesses | |
US12019881B1 (en) | Reduced power consumption by SSD using host memory buffer | |
CN104750577A (zh) | 面向片上大容量缓冲存储器的任意多位容错方法及装置 | |
Lee et al. | ECMO: ECC Architecture Reusing Content-Addressable Memories for Obtaining High Reliability in DRAM | |
CN105022675A (zh) | 嵌入式微处理器高速缓存4位数据翻转错误的纠正装置与方法 | |
Longofono et al. | Predicting and mitigating single-event upsets in DRAM using HOTH | |
Yalcin et al. | Flexicache: Highly reliable and low power cache under supply voltage scaling | |
Wilkerson et al. | SCALING THE MEMORY RELIABILITY WALL. | |
Alouani et al. | Parity-based mono-copy cache for low power consumption and high reliability |
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 |