CN103514961B - 自修复存储器、包含该存储器的计算装置以及操作存储器的方法 - Google Patents
自修复存储器、包含该存储器的计算装置以及操作存储器的方法 Download PDFInfo
- Publication number
- CN103514961B CN103514961B CN201310250358.5A CN201310250358A CN103514961B CN 103514961 B CN103514961 B CN 103514961B CN 201310250358 A CN201310250358 A CN 201310250358A CN 103514961 B CN103514961 B CN 103514961B
- Authority
- CN
- China
- Prior art keywords
- word
- correction data
- storage
- reparation
- mistake
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
存储阵列具有包括多个存储字的多行。多个第一位中的每个第一位都与每行的存储字相关。每个第一位的状态都指示相关存储字是否存在错误。多个冗余行中的每个冗余行都包括多个冗余字。每个冗余字都与存储字相关。校正数据高速缓存具有:至少一个修复字(repair word),被配置成存储校正数据;以及至少一个状态位,与至少一个修复字相关联,状态位指示存储在修复字中的校正数据是否是待处理的修复。校正数据高速缓存被配置成将存储在修复字中的校正数据写入到相应的存储字和相应的冗余字中的至少一个中。本发明还提供了自修复存储器。
Description
相关申请的交叉参考
本申请要求于2012年6月29日提交的美国临时申请第61/666,771号的优先权并且是于2012年2月17日提交的美国申请第13/399,993号的部分继续案,美国申请第13/399,993号又是于2010年8月3日提交的美国申请第12/849,157号的部分继续案,并且美国申请第12/849,157号又要求于2009年8月12日提交的美国临时申请第61/233,387号的优先权,其全部结合于此作为参考。
技术领域
本发明一般地涉及半导体技术领域,更具体地来说,涉及存储器。
背景技术
在一些情况下,从存储阵列所读取的信息包括错误。一些错误是存储阵列的电路中的缺陷所产生结果。一些错误是在信号处理期间发生的随机结果。在任一种情况下,为了使用存储阵列的组件适当地发挥作用,必须校正错误。在一些现有方法中,当在嵌入式存储器的存储位置处发生错误时,诸如系统工程师的人需要通过一些处理来修复错误。
发明内容
为了解决现有技术中所存在的缺陷,根据本发明的一方面,提供了一种存储器,包括:存储阵列,具有多行,所述存储阵列的所述多行中的每行都包括多个存储字;多个第一位,所述多个第一位中的每个第一位都与所述存储阵列的所述多行中的每行的所述多个存储字中的存储字相关联,其中,每个第一位的逻辑状态都指示与所述每个第一位相关联的存储字是否存在故障位;多个冗余行,所述多个冗余行中的每个冗余行都包括多个 冗余字,所述多个冗余字中的每个冗余字都与所述存储阵列的所述多行中的每行的所述多个存储字中的相应存储字相关联;以及校正数据高速缓存,具有被配置成存储校正数据的至少一个修复字和与所述至少一个修复字相关联的至少一个状态位,所述状态位指示存储在所述修复字中的所述校正数据是否是待处理的修复,所述校正数据高速缓存被配置成将存储在所述修复字中的所述校正数据写入到相应的(counterpart)存储字和相应的冗余字的至少一个中。
该存储器进一步包括:
自修复地址比较器,被配置成将与所述校正数据相关联的地址和要访问的地址进行比较。
该存储器进一步包括:高速缓存堆栈计数器,被配置成监控所述校正数据高速缓存中的待处理的修复的数量。
在该存储器中,所述校正数据高速缓存被配置成具有在每兆字节(MB)存储阵列中具有1个至4个待处理的修复的最大数量。
该存储器进一步包括:字逻辑引擎,被配置成处理所述存储阵列的一行的所述多个存储字中的每个存储字;以及位-标签逻辑引擎,被配置成处理与要处理的所述多个存储字中的每个存储字相关联的每个第一位。
该存储器进一步包括:错误校正引擎,被配置成基于与所述每个第一位相关联的存储字中的错误改变所述每个第一位的状态,并且将具有改变的位的存储字写入所述校正数据高速缓存中作为所述校正数据;和/或基于与每个第二位相关联的冗余字中的错误改变所述每个第二位的状态,并且将具有改变的位的冗余字写入所述校正数据高速缓存中作为所述校正数据。
该存储器进一步包括:错误校正引擎,被配置成基于所述每个第一位的状态和与所述每个第一位相关联的存储字中的错误生成错误-修复标记;和/或基于每个第二位的状态和与所述每个第二位相关联的冗余字中的错误生成错误-修复标记。
根据本发明的另一方面,提供了一种计算装置,包括:处理器;以及存储器宏,连接至所述处理器,包括:存储阵列,具有多行,所述存储阵 列的所述多行中的每行都包括多个存储字;多个第一位,所述多个第一位中的每个第一位都与所述存储阵列的所述多行中的每行的所述多个存储字中的存储字相关联,其中,每个第一位的逻辑状态都指示与所述每个第一位相关联的所述存储字是否存在故障位;多个冗余行,所述多个冗余行中的每个冗余行都包括多个冗余字,所述多个冗余字中的每个冗余字都与所述存储阵列的所述多行中的每行的所述多个存储字中的相应存储字相关联;以及校正数据高速缓存,具有被配置成存储校正数据的至少一个修复字和与所述至少一个修复字相关联的至少一个状态位,所述状态位指示存储在所述修复字中的所述校正数据是否是待处理的修复,所述校正数据高速缓存被配置成将存储在所述修复字中的所述校正数据写入相应的存储字和相应的冗余字中的至少一个中。
该计算装置进一步包括:自修复地址比较器,被配置成将与所述校正数据相关联的地址和要访问的地址进行比较。
该计算装置进一步包括:高速缓存堆栈计数器,被配置成监控所述校正数据高速缓存中的待处理的修复的数量。
在该计算装置中,所述校正数据高速缓存被配置成具有在每兆字节(MB)存储阵列中具有1个至4个待处理的修复的最大数量。
该计算装置进一步包括:字逻辑引擎,被配置成处理所述存储阵列的一行的所述多个存储字中的每个存储字;以及位-标签逻辑引擎,被配置成处理与要处理的所述多个存储字中的每个存储字相关联的每个第一位。
该计算装置,进一步包括:错误校正引擎,被配置成:基于与所述每个第一位相关联的所述存储字中的错误改变所述每个第一位的状态,并且将具有改变的位的存储字写入所述校正数据高速缓存中作为所述校正数据;和/或基于与每个第二位相关联的所述冗余字中的错误改变所述每个第二位的状态,并且将具有改变的位的冗余字写入所述校正数据高速缓存中作为所述校正数据。
该计算装置进一步包括:错误校正引擎,被配置成:基于所述每个第一位的状态和与所述每个第一位相关联的存储字中的错误,生成错误-修复标记;和/或基于每个第二位的状态和与所述每个第二位相关联的存储字中 的错误,生成所述错误-修复标记。
根据本发明的又一方面,提供了一种操作存储器的方法,所述方法包括:检测在访问存储阵列中的地址期间发生的错误;校正与检测到的错误相对应的数据;将校正数据存储在校正数据高速缓存中;使所述校正数据与所述存储阵列中的所述地址相关联;将所述校正数据输出到所述存储器外部的电路;确定所述错误是硬错误还是软错误;以及如果所述错误是软错误,则将存储在所述校正数据高速缓存中的所述校正数据写回到所述存储阵列中。
该方法进一步包括:在将所述校正数据存储在所述校正数据高速缓存中之后,检验所述校正数据高速缓存的容量状态;以及当存储在所述校正数据高速缓存中的校正数据的数量超过阈值时,输出信号。
该方法进一步包括:如果所述错误是硬错误,则将所述校正数据写回到冗余存储器中;以及使所述存储阵列中的所述地址与所述冗余存储器中的所述校正数据的地址相关联。
该方法进一步包括:如果所述错误是硬错误,则将所述校正数据永久地存储在所述校正数据高速缓存中;以及将所述地址的随后访问引导至存储在所述校正数据高速缓存中的所述校正数据。
在该方法中,将所述数据写回到所述存储阵列中包括:执行隐式写入操作。
在该方法中,将所述数据写回到所述存储阵列中包括:在外部电路不访问所述存储阵列的周期内,写回到所述存储阵列中。
附图说明
在以下附图和说明书中阐述了本发明的一个或多个实施例的细节。通过说明书、附图和权利要求应该理解其他特征和优点。
图1是根据一些实施例的具有存储器宏的系统的框图。
图2是根据一些实施例的存储器宏的框图。
图3是根据一些实施例修复存储器宏中的存储器故障的方法的流程图。
图4至图9是根据一些实施例处于各个操作阶段的存储器宏的框图。
多个附图中的类似参考标号指示类似元件。
具体实施方式
以下使用特定语言公开了附图所示的实施例或实例。然而,应该理解,实施例和实例不用于进行限定。对于本领域普通技术人员来说,如通常发生的所公开的实施例中的任何更改和修改、以及本文档中公开的原理的任何进一步的应用都在预期的范围内。
一些实施例具有以下特征和/或优点中的一个或组合。在一些实施例中,动态地(on-the-fly)执行用于硬错误或软错误的存储器自修复处理,并且在硬错误或软错误的识别之后但是在存储器自修复处理的完成之前,存储器适用于执行一个或多个随后存储器访问操作。在一些实施例中,在自修复处理期间不使用外部存储器。在一些实施例中,存储器自修复在无操作(NOP)指令周期内完成。在一些实施例中,在NOP指令的系统执行期间执行自修复。在一些实施例中,在系统读取、写入或刷新功能期间执行自修复。结果,存储器自修复没有使用额外的外部系统操作。
示例性系统
图1是根据一些实施例的系统100的框图。系统100包括:芯片上系统(SoC)120和SoC120外部的专用集成电路(ASIC)。在一些实施例中,系统100还包括在图1中未示出的其他电部件。在一些实施例中,系统100用作网络路由器、网络交换机、移动设备、计算机或计算机子系统。
SoC120包括处理器122和存储器宏(memory macro)126。在一些实施例中,处理器122是中央处理单元(CPU)、数字信号处理器(DSP)或被配置成执行一个或多个预定任务的核心逻辑电路。在一些实施例中,存储器宏126是存储单元,该存储单元包括诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)的易失性存储设备、诸如闪存的非易失性存储设备、一次编程(OTP)存储器、多次编程(MTP)存储器或它们的组合。在一些实施例中,SoC120进一步包括输入-输出(IO)控制器、网络接口或一个或多个数字或模拟电路。
ASIC130包括专用设计,在一些实施例中,ASIC130包括网络处理单 元(NPU)、电源管理单元、编码/解码单元等。在一些实施例中,省略ASIC130。
存储器宏
图2是根据一些实施例的存储器宏200的框图。在一些实施例中,存储器宏200可用作图1中的存储器宏126。存储器宏200包括:存储单元210、连接至存储单元的错误校正码(ECC)引擎220、连接至ECC引擎的校正数据高速缓存230、连接至ECC引擎和校正数据高速缓存的自修复单元240、连接至自修复单元的全局控制逻辑250以及连接至全局控制逻辑和自修复单元的局部控制逻辑260。
全局控制逻辑250和局部控制逻辑260共同管理和控制存储器宏210的操作。例如,全局控制逻辑250通过接口272从诸如处理器122的存储器宏200外部的电路接收命令和地址信息。然后,全局控制逻辑250将地址信息和/或命令发送至局部控制逻辑260和自修复单元240,以用于根据本发明进行进一步处理。
存储单元210包括:存储阵列212、错误-标签(ET)存储器214、冗余存储器216以及ET冗余存储器218。存储阵列212和冗余存储器216包括布置为行和列的存储单元并且被用于存储多行用户数据。ET存储器214和ET冗余存储器218被用于存储相应行的用户数据的错误-标签信息。在一些实施例中,通过奇偶校验位和/或ECC编码来保护用户数据和错误-标签信息。在一些实施例中,存储阵列212包括多于一组存储阵列和/或其相应的ET存储器214。在一些实施例中,存储阵列212进一步包括读出放大器、字线、位线等。
冗余存储器216包括用于修复存储阵列212和/或冗余存储器216中的错误存储单元。一些应用中的冗余存储器216还被称为行冗余存储器。
在一些实施例中,存储阵列212、ET存储器214、冗余存储器216和/或ET冗余存储器218在物理上相互分离。然而,在一些实施例中,存储阵列212、ET存储器214、冗余存储器216和/或ET冗余存储器218是在一个或多个物理存储阵列上所限定的虚拟存储空间。而且,存储阵列212、ET存储器214、冗余存储器216以及ET冗余存储器218的不同位置在多 个实施例的范围内。在一些实施例中,ET存储器214和ET冗余存储器218的存储单元以与存储阵列212和冗余存储器216的存储单元或字(即,一组预定数量的存储单元)交替的方式进行定位。在一些实施例中,ET存储器214和ET冗余存储器218的每个存储单元都邻近存储阵列212和冗余存储器216的相应的存储单元或字进行定位。在一些实施例中,对错误-标签信息和用户数据同时进行编码和处理。
ECC引擎220对存储到存储单元210的入站数据进行编码和/或对从存储单元210读取的出站数据进行解码并且校正。当访问存储单元210时,将数据和相关奇偶校验位发送至ECC引擎220,并且ECC引擎220确定是否存在错误。在一些实施例中,如果ECC引擎220识别出存储单元210中的错误,则ECC引擎指示错误的地址。在一些实施例中,ECC引擎220还能够通过接口274输出指示存在错误的“ECC标记”、来自存储单元210的读取数据和/或校正数据。
在一些实施例中,ECC引擎220使用六个奇偶校验位来校正32位的数据字中的单个错误,并且使用七个奇偶校验位来校正单个错误并且检测双重错误。在一些实施例中,ECC引擎220能够进行单个错误校正双重错误检测(SECDED)。在一些实施例中,使用汉明码(Hamming code)来实现SECDED。在一些实施例中,ECC引擎220能够进行双重错误校正双重错误检测(DECDED)。在多个实施例中,ECC引擎220由SoC设计者进行限定,因此,适用于设计选择的不同数据宽度。ECC引擎的实现所依据的其他ECC算法在多个实施例的范围内。
错误的实例包括软错误和硬错误。软错误是指基本上随机发生的并且不可能在相同位置多次重复的错误。硬错误是指在相同位置重复发生的错误。
校正数据高速缓存230存储来自ECC引擎220的校正数据。在一些实施例中,校正数据高速缓存230包括一行或多行存储单元,并且每行校正数据高速缓存230都具有与存储单元210类似的长度和布置。在一些实施例中,校正数据高速缓存230的每行存储单元都被用于存储一行用户数据和相应的错误-标签信息。在一些实施例中,校正数据高速缓存230还能够 通过接口276输出从ECC引擎220所接收到的校正数据。在一些实施例中,校正数据高速缓存230包括被配置成存储修复字的至少一个存储字(memory word)。
基于错误的预测频率、在存储单元210的操作期间的期望数量的修复机会、存储单元210中的相同地址的访问频率、存储阵列212的尺寸和/或用于创建存储器宏200的制造处理的质量来选择校正数据高速缓存230的容量。当校正数据高速缓存230的容量增加时,校正数据高速缓存可以在修复之间存储的错误的数量增加;然而,校正数据高速缓存的尺寸也增加。为了补偿错误的较高预测频率,校正数据高速缓存230的容量增加。当在存储单元210的操作期间的期望修复机会的数量增加时,因为校正数据高速缓存具有修复存储单元210中的错误的更多机会,所以校正数据高速缓存230的容量减小。类似地,当访问存储单元210中的相同地址的频率增加时,因为修复错误的机会的数量增加,所以校正数据高速缓存230的容量减小。较大存储阵列比较小存储阵列更可能具有更多错误。因此,当存储阵列212的尺寸增加时,校正数据高速缓存230的容量也增加。制造处理的质量与错误的预测频率相关。当制造处理的质量改进时,错误的预测频率减小。在一些实施例中,校正数据高速缓存230的容量在存储阵列212中的每兆字节(MB)存储器1个修复至存储阵列212中的每MB存储器4个修复的范围内。
在错误的预测频率足够小的一些实施例中,省略冗余存储器216和相应ET冗余存储器218,并且用于硬错误的修复被存储在校正数据高速缓存230中。在省略冗余存储器216和相应ET冗余存储器218的一些实施例中,校正数据高速缓存230的容量增加,以负责保持(withhold)硬错误的校正数据。
冗余单元240包括冗余引擎242、自修复地址比较器244以及高速缓存堆栈计数器246。冗余单元240负责将访问存储单元210的地址与存储单元210中的已知错误位置进行比较,以以代替已知错误位置将那些访问重定向(redirect)为被分配的冗余存储器216中的冗余或备用位置。
在一些实施例中,冗余单元240存储故障位置的地址。当在操作期间 错误发生时,例如,自修复地址比较器244识别故障位置,并且冗余引擎242控制并识别用于修复故障位置的冗余位置的相应的可选地址。一旦冗余位置被修复(即,校正数据已被写入到冗余位置),冗余引擎242就能够将接下来的访问从故障位置重定向为相应冗余位置。
在一些实施例中,由位于自修复地址比较器244中的相应的状态位SB指示校正数据高速缓存230中的每个修复字的状态。例如,如果状态位SB具有高逻辑值,则校正数据高速缓存230中的相应修复字存储未被写回到存储单元210中的相应位置的校正数据。如果状态位SB具有低逻辑值,则不再需要存储在相应的修复字中的数据,并且可以再次使用该修复字。
自修复地址比较器244被配置成从全局控制逻辑250接收地址信息。自修复地址比较器244该地址与要使用校正数据高速缓存230修复的地址进行比较。如果自修复地址比较器244没有找到匹配地址,则全局控制逻辑250继续正常地执行访问命令,即,假设在所访问的存储器位置处没有错误。如果自修复地址比较器244找到匹配地址,则自修复地址比较器检验与校正数据高速缓存230中的相应的修复字相关的状态位SB。如果状态位SB指示修复待处理,则自修复引擎242相应地管理如以下进一步说明的访问和/或修复。在一些实施例中,自修复引擎242插入和去除用于在自修复地址比较器244中的修复的地址。
高速缓存堆栈计数器246被配置成确定校正数据高速缓存230中的存储单元被校正数据占用的行数或字数。在一些实施例中,高速缓存堆栈计数器246基于具有高逻辑值的多个状态位SB来确定校正数据高速缓存230中的待处理的修复的数量。如果待处理的修复的数量等于校正数据高速缓存230的容量,则高速缓存堆栈计数器246通过接口278输出指示校正数据高速缓存满了的“高速缓存满”信号。在一些实施例中,高速缓存堆栈计数器246被配置成在待处理的修复的数量等于校正数据高速缓存230的容量之前,输出警报信号。在一些实施例中,当待处理的修复的数量在校正数据高速缓存230的容量的修复的预定数量的范围内时,高速缓存堆栈计数器246输出警报信号。基于类似于校正数据高速缓存230的容量的选择的标准,选择预定数量。
在一些实施例中,当存储阵列212中的存储单元具有硬错误时,使用冗余存储器216中的行代替包含存储阵列212中错误存储单元的的行。例如,如果存储单元具有错误并且被访问,则自修复引擎242将存储阵列212中的错误存储器行的访问重定向为冗余存储器216中的相应行。而且,如果冗余存储器216的行中的存储单元具有硬错误,使用冗余存储器216中的另一行代替包含错误存储单元的冗余存储器216的该行。自修复冗余存储器216中的冗余行类似于自修复存储阵列212中的行。
在一些实施例中,信号通过冗余单元240输出“冗余存储器满”,以指示冗余存储器216中的所有冗余行都已被使用,并且没有附加硬错误可以恢复。换句话说,满信号指示存储单元210已经作出存储单元210能够进行的所有修复。在一些实施例中,使用校正数据高速缓存230和/或存储器宏200之外的其他存储单元仍然可恢复随后的硬错误。
使用高速缓存自修复的方法
图3是根据一些实施例修复存储器宏中的存储器故障的示例性方法300的流程图。图4至图9是根据一些实施例处于多个操作阶段的存储器宏200的框图。应该理解,在图3所示的方法300之前、期间和/或之后,可以执行附加操作,并且一些其他处理本文中仅简单地进行描述。在一些实施例中,省略图4所示的一个或多个操作。
如图4所示,为了说明,在存储阵列212中示出存储单元行415。存储单元行包括多个存储字。为了说明,示出的行415具有被标记为字W[1]、W[2]、W[3]和W[4]的四个字。在一些实施例中,行中的字W的一般数量包括:8、16、32、64等。存储单元行中的字的不同数量在多个实施例的范围内。每个字都包括多个存储单元或存储位。在至少一个实施例中,字包括8位。
此外,作为实例,ET存储器214包括分别对应于四个字W[1]、W[2]、W[3]和W[4]的四个错误标签(ET)位ET[1]、ET[2]、ET[3]和ET[4]。当存储单元行中的字的数量改变时,错误标签位的数量相应地改变。例如,如果N表示整数,并且如果存在N个字W[1]至W[N],则存在N个ET位ET[1]至ET[N]。
在一些实施例中,每个错误标签位默认为指示不存在先前在任何相应字中所识别的软错误的逻辑低值。当字中的存储单元已被识别为具有软错误时,相应ET位被设置为高逻辑值。指示相应字的错误状态的ET位中的其他值在多个实施例的范围内。
如图3和图4所示,在操作402中,执行存储器访问。存储器访问开始于通过逻辑控制单元250接收地址信息和访问命令。在一些实施例中,地址信息和访问命令从电路外部被发送至存储器宏200。如果命令是读取操作,则全局控制逻辑250将地址信息发送至冗余单元240,并且冗余单元240确定局部控制逻辑260是否需要被设置为将访问重定向为冗余存储器216。在图4所示的实施例中,局部控制逻辑260没有被设置为将访问重定向为冗余存储器216。
将存储在存储阵列212或冗余存储器216的相应地址中的数据(诸如,行415中的字W[3])输出到ECC引擎220,以用于解码和/或错误校正。ECC引擎220确定在读出数据中是否存在错误。在一些实施例中,相应的ET存储器212或ET冗余存储器218中的数据位(诸如,行415中的ET[3])还被发送至ECC引擎220。
ECC引擎220包括字逻辑引擎ECCW和错误-标签逻辑引擎ECCET。字逻辑引擎ECCW用于处理字,诸如,字W[1]、W[2]、W[3]或W[4]。例如,当访问字时,将字的二进制值和奇偶校验位提供给字逻辑引擎ECCW,在一些实施例中,该字逻辑引擎ECCW基于汉明码技术识别被翻转的字中的位。引擎ECCW还翻转错误位,以提供错误字的校正数据。实际上,引擎ECCW确定在字W中是否发生错误,并且如果发生错误,则引擎ECCW提供校正数据。汉明ECC码技术用于说明性的。其他ECC技术在多个实施例的范围内。
错误-标签逻辑引擎ECCET用于处理每个ET位,四位ET[1]至ET[4]中的每位。在一些实施例中,引擎ECCET是提供指示被访问的ET位是逻辑高还是逻辑低的结果的比较器。例如,如果被访问的ET位具有高逻辑值,则引擎ECCET提供具有高逻辑值的结果。实际上,引擎ECCET指示对应于位ET的字W先前具有错误。相反地,如果被访问的ET位具有低逻辑 值,则引擎ECCT提供具有低逻辑值的结果。实际上,引擎ECCET指示对应于被访问的位ET的字W先前没有错误。对于另一个实例,来自引擎ECCET的高逻辑值和“ECC标记”信号的高逻辑值指示对应于被访问的位ET的字W中的错误是硬错误。在位ET与它们各自的字W共同定位的实施例中,引擎ECCET是引擎ECCW的一部分。实际上,ECC引擎220在估计相应的ET位之前,进行解码并且检测错误。
在操作404中,确定在访问存储单元415的地址期间是否生成“ECC标记”。在一些实施例中,由ECC引擎220进行确定。ECC引擎220确定存储在该地址处的数据的错误是否发生并且响应于错误生成标记。
如图3和图5所示,在操作406中,如果没有“ECC标记”生成,则正常地访问存储器宏200。在一些实施例中,通过接口274输出由ECC引擎220解码的字W[3]。
如图3和图6所示,在操作408中,如果生成“ECC标记”,则将由ECC引擎220生成的校正数据存储在校正数据高速缓存230中。地址标签与校正数据相关,并且被添加至自修复地址比较器244。在一些实施例中,校正数据被添加至校正数据高速缓存244并且作为堆栈进行管理。在一些实施例中,校正数据被添加至校正数据高速缓存244中并且作为队列进行管理。在一些实施例中,校正数据以随机方式被添加至校正数据高速缓存244。在一些实施例中,与校正数据相关的状态位SB被设置为高逻辑值。
例如,如图6所示,校正数据高速缓存230包括被配置成存储修复字CW的至少一个存储字。在一些实施例中,校正数据高速缓存230包括均被配置成存储修复字CW的多个存储单元。校正数据高速缓存230进一步包括与存储在校正数据高速缓存中的修复字CW相关的高速缓存错误标签CET。在操作中,如果ECC引擎220在来自存储阵列212或冗余存储器216的输出数据中检测到错误,则ECC引擎220校正输出数据并且将校正数据发送至校正数据高速缓存230。然后,校正数据被存储为修复字CW,以用于存储阵列212或冗余存储器216的随后修复。一旦校正数据被存储在校正数据高速缓存230中,对应于修复字CW的高速缓存错误标签CET就被重置为低逻辑值。
每个修复字CW都与位于自修复地址比较器244中的相应状态位SB相关联,使得状态位SB的数量等于校正数据高速缓存230的修复字CW的数量。与每个修复字CW都相关联的状态位SB指示存储在修复字CW中的修复的状态。例如,如果状态位SB具有高逻辑值,则存储在修复字CW中的修复未被执行。如果状态位SB具有低逻辑值,则存储在修复字CW中的修复已被修复,并且该修复字可以用新信息覆盖。当执行修复时,对应于修复字CW的状态位SB被重置为低逻辑值。在一些实施例中,通过自修复引擎242来重置状态位SB。
如图3和图7所示,在操作410中,将校正数据输出到外部电路中。在一些实施例中,由ECC引擎220输出校正数据。在一些实施例中,由校正数据高速缓存230输出校正数据。在一些实施例中,由ECC引擎220输出“ECC标记”。在一些实施例中,将“ECC标记”输出到自修复单元240。而且,在操作410中,基于被解码的位ECCET和“ECC标记”设置“重复错误标记”。设置“重复错误标记”使得相同地址处的任何随后的错误都被确定为硬错误。例如,ECCET中的高逻辑值指示之前发生了关于字W[3]的软错误;以及“ECC标记”进一步指示字W[3]再次具有解码错误,因此,字W[3]被视为包含硬错误。在一些实施例中,使用自修复引擎242设置“重复错误标记”。
在步骤412中,确定错误是否为在相同位置处的重复错误。在一些实施例中,通过自修复引擎242和/或自修复地址比较器244进行该确定。在一些实施例中,在与“ECC标记”相关的地址和先前发生错误的地址之间进行比较。如果比较的结果是匹配,则错误被确定为硬错误。如果比较的结果是不匹配,则错误被确定为软错误。
如图3和图8所示,在操作414中,如果错误被确定为软错误,则在非阻止周期期间将校正的数据写回到存储阵列212或冗余存储器216中的相关的原始地址。而且,在操作414中,将高逻辑值设置在字W[3]中,以指示在位ET[3]的任一位中发生了错误。而且,如果在字W[3]中再次发生错误,则位ET[3]中的高逻辑值以及错误的重现指示错误是硬错误。
在一些实施例中,当具有比校正数据高速缓存230更高的优先级的电 路或系统访问各自存储器时,存储阵列212或冗余存储器216被视为被阻止。在一些实施例中,校正数据在NOP期间被写回。在一些实施例中,校正数据在刷新操作期间被写回。在一些实施例中,当访问需要修复的地址时,进行修复。在一些实施例中,在各个存储器的刷新周期期间进行修复。
在一些实施例中,在关于与校正数据高速缓存230中的待处理的修复字CW相对应的地址的读取操作期间,全局控制器250管理校正数据高速缓存230的修复字CW。将存储在修复字CW中的信息输出到外部电路。在一些实施例中,校正数据高速缓存230作为NOP处理该读取操作并且执行“隐式写入”,以修复对应于被访问的修复字CW的错误。校正数据高速缓存230将修复字CW写入存储阵列212中的相应地址,并且与修复字相关联的状态位SB被改变为低逻辑值。在一些实施例中,校正数据高速缓存230不执行“隐式写入”并且等待NOP修复存储阵列212中的错误。
在一些实施例中,在关于与校正数据高速缓存230中的待处理的修复字CW相对应的地址的写操作期间,全局控制器250进行管理以将所接收的数据直接写入该地址,并且写操作有效地修复错误。对应于与存储阵列212中的被访问的存储单元相关联的修复字CW的状态字SB被改变为低逻辑值以指示完成修复。
在一些实施例中,在关于与校正数据高速缓存230中的待处理的修复字CW相对应的地址的刷新操作期间,全局控制器250管理校正数据高速缓存230以将字CW中的校正数据写入存储阵列212中的地址。在一些实施例中,校正数据高速缓存230作为NOP处理刷新操作,并且执行“隐式写入”以修复对应于被访问的修复字CW的错误。此外,与修复字CW相关的状态位SB被改变为低逻辑值。在一些实施例中,校正数据高速缓存230不执行“隐式写入”并且等待NOP修复存储阵列212中的错误。校正数据高速缓存230在刷新操作期间不输出信息。
在一些实施例中,在NOP期间,校正数据高速缓存230将数据写入存储阵列212或冗余存储器216,以校正软错误或硬错误。
在一些实施例中,以先输入先输出(FIFO)调度排列执行待处理的修复。在一些实施例中,以后输入先输出(LIFO)调度排列执行待处理的修 复。在一些实施例中,以任意调度排列执行待处理的修复。
如图3和图9所示,在操作416中,如果错误被确定为硬错误,则校正数据被写回到冗余存储器216。作为实例,图9中示出了冗余存储器216包括的一行426冗余存储器216。在至少一个实施例中,一行冗余存储器216中的字的数量与一行存储阵列212中的字的数量一致。例如,示出的行425具有分别对应于存储阵列212的四个字W[1]、W[2]、W[3]和W[4]的四个字RW[1]、RW[2]、RW[3]和RW[4]。如果一行存储阵列212中的字的数量改变,则一行冗余存储器216中的字的数量相应地改变。冗余存储器216中的冗余行的数量根据应用和设计选择改变,例如,考虑包括存储器宏200的期望寿命、寿命期限内的故障的估计数量等的多种因素。
ET冗余存储器218包括对应于行冗余存储器216中的存储字的错误-标签位。如图9示意性示出,ET冗余存储器216包括分别对应于四个字RW[1]、RW[2]、RW[3]和RW[4]的四位RET[1:4]。当行中的字RW的数量改变时,位RET的数量相应地改变。在一些实施例中,以类似于错误-标签位ET[1]、ET[2]、ET[3]和ET[4]以及字W[1]、W[2]、W[3]和W[4]的方式来布置错误-标签位RET[1]、RET[2]、RET[3]和RET[4]以及字RW[1]、RW[2]、RW[3]和RW[4]。
在一些实施例中,除了使用引导至冗余存储器216中的指定替换行的可选地址之外,以类似于修复结合操作914所述的软错误的方式来执行修复硬错误。在一些实施例中,使用隐式写入处理写回校正数据。在一些实施例中,在NOP期间写回校正数据。在一些实施例中,在刷新操作期间写回校正数据。此外,在操作416中,冗余存储器216中的写回地址代替存储阵列212中的相关地址。在一些实施例中,自修复引擎242执行地址替换。此外,在操作416中,重置关于字RW[3]的“重复错误标记”。“重复错误标记”被重置,使得冗余存储器地址(例如,字RW[3])处的初始错误被确定为软错误。在一些实施例中,使用自修复引擎242重置重复错误标记。
在一些实施例中,存储单元210没有冗余存储器216,或者冗余存储器216没有可用于任何未来硬错误的更多空间,省略操作416,并且通过 校正数据高速缓存230来处理硬错误。
如图3所示,在操作418中,检验校正数据高速缓存230,以确定校正数据高速缓存是否满了。在一些实施例中,通过高速缓存堆栈计数器246进行确定。
在操作418中,如果确定校正数据高速缓存230满了,则将“高速缓存满”信号发送至外部电路。在一些实施例中,当接收到“高速缓存满”信号时,提供用于存储器宏200的NOP周期,以提供校正数据高速缓存230写回至少一个存储的修复的机会。
在操作418中,如果确定校正数据高速缓存230没有满,则修复计数增加1。在一些实施例中,修复计数被存储在高速缓存堆栈计数器246中。在一些实施例中,当存储在校正数据高速缓存230中的修复的数量超过阈值时,将警报信号发送给外部电路。
以上方法包括示例性操作,但是不必按照所示的顺序执行操作。根据所公开的实施例的精神和范围,操作可以适当地被添加、替换、改变顺序和/或删除。
本发明的一个方面涉及存储阵列具有包括多个存储字的多行。多个第一位中的每个第一位都与每行的存储字相关。每个第一位的状态指示相关存储字是否存在错误。多个冗余行中的每个冗余行都包括多个冗余字。每个冗余字都与存储字相关。校正数据高速缓存具有被配置成存储校正数据的至少一个修复字和与至少一个修复字相关的至少一个状态位,状态位指示存储在修复字中的校正数据是待处理的修复。校正数据高速缓存被配置成将存储在修复字中的校正数据写入相应的(counterpart)存储字和相应的冗余字中的至少一个。
本发明的另一方面涉及包括连接至存储阵列的处理器的计算设备,存储阵列具有包括多个存储字的多行。多个第一位中的每个第一位都与每行的存储字相关。每个第一位的状态都指示相关存储字是否存在错误。多个冗余行中的每个冗余行都包括多个冗余字。每个冗余字都与存储字相关。校正数据高速缓存具有被配置成存储校正数据的至少一个修复字和与至少一个修复字相关的至少一个状态位,状态位指示存储在修复字中的校正数 据是待处理的修复。校正数据高速缓存被配置成将存储在修复字中的校正数据写入相应的存储字和相应的冗余字中的至少一个。
本发明的另一方面涉及操作存储器的方法。该方法包括:检测在访问存储阵列中的地址期间发生的错误。该方法进一步包括:校正与被检测的错误相对应的数据。该方法进一步包括:将校正数据存储在校正数据高速缓存中。该方法进一步包括:使校正数据与存储阵列中的地址相关。该方法进一步包括:将校正数据输出到存储器外部的电路。该方法进一步包括:确定错误是硬错误还是软错误。该方法进一步包括:如果错误是软错误,则将存储在校正数据高速缓存中的校正数据写回到存储阵列。
已经描述了多个实施例。然而,应该理解,可以在不脱离本发明的精神和范围的情况下,作出多种修改。
Claims (20)
1.一种存储器,包括:
存储阵列,具有多行,所述存储阵列的所述多行中的每行都包括多个存储字;
多个第一位,所述多个第一位中的每个第一位都与所述存储阵列的所述多行中的每行的所述多个存储字中的存储字相关联,其中,每个第一位的逻辑状态都指示与所述每个第一位相关联的存储字是否存在故障位;
多个冗余行,所述多个冗余行中的每个冗余行都包括多个冗余字,所述多个冗余字中的每个冗余字都与所述存储阵列的所述多行中的每行的所述多个存储字中的相应存储字相关联;以及
校正数据高速缓存,具有被配置成存储校正数据的至少一个修复字和与所述至少一个修复字相关联的至少一个状态位,所述状态位指示存储在所述修复字中的所述校正数据是否是待处理的修复,所述校正数据高速缓存被配置成将存储在所述修复字中的所述校正数据写入到相应的存储字和相应的冗余字的至少一个中。
2.根据权利要求1所述的存储器,进一步包括:
自修复地址比较器,被配置成将与所述校正数据相关联的地址和要访问的地址进行比较。
3.根据权利要求1所述的存储器,进一步包括:高速缓存堆栈计数器,被配置成监控所述校正数据高速缓存中的待处理的修复的数量。
4.根据权利要求1所述的存储器,其中,所述校正数据高速缓存被配置成具有在每兆字节(MB)存储阵列中具有1个至4个待处理的修复的最大数量。
5.根据权利要求1所述的存储器,进一步包括:
字逻辑引擎,被配置成处理所述存储阵列的一行的所述多个存储字中的每个存储字;以及
位-标签逻辑引擎,被配置成处理与要处理的所述多个存储字中的每个存储字相关联的每个第一位。
6.根据权利要求1所述的存储器,进一步包括:错误校正引擎,被配置成基于与所述每个第一位相关联的存储字中的错误改变所述每个第一位的状态,并且将具有改变的位的存储字写入所述校正数据高速缓存中作为所述校正数据;和/或
基于与每个第二位相关联的冗余字中的错误改变所述每个第二位的状态,并且将具有改变的位的冗余字写入所述校正数据高速缓存中作为所述校正数据。
7.根据权利要求1所述的存储器,进一步包括:错误校正引擎,被配置成基于所述每个第一位的状态和与所述每个第一位相关联的存储字中的错误生成错误-修复标记;和/或
基于每个第二位的状态和与所述每个第二位相关联的冗余字中的错误生成错误-修复标记。
8.一种计算装置,包括:
处理器;以及
存储器宏,连接至所述处理器,包括:
存储阵列,具有多行,所述存储阵列的所述多行中的每行都包括多个存储字;
多个第一位,所述多个第一位中的每个第一位都与所述存储阵列的所述多行中的每行的所述多个存储字中的存储字相关联,其中,每个第一位的逻辑状态都指示与所述每个第一位相关联的所述存储字是否存在故障位;
多个冗余行,所述多个冗余行中的每个冗余行都包括多个冗余字,所述多个冗余字中的每个冗余字都与所述存储阵列的所述多行中的每行的所述多个存储字中的相应存储字相关联;以及
校正数据高速缓存,具有被配置成存储校正数据的至少一个修复字和与所述至少一个修复字相关联的至少一个状态位,所述状态位指示存储在所述修复字中的所述校正数据是否是待处理的修复,所述校正数据高速缓存被配置成将存储在所述修复字中的所述校正数据写入相应的存储字和相应的冗余字中的至少一个中。
9.根据权利要求8所述的计算装置,进一步包括:
自修复地址比较器,被配置成将与所述校正数据相关联的地址和要访问的地址进行比较。
10.根据权利要求8所述的计算装置,进一步包括:高速缓存堆栈计数器,被配置成监控所述校正数据高速缓存中的待处理的修复的数量。
11.根据权利要求8所述的计算装置,其中,所述校正数据高速缓存被配置成具有在每兆字节(MB)存储阵列中具有1个至4个待处理的修复的最大数量。
12.根据权利要求8所述的计算装置,进一步包括:
字逻辑引擎,被配置成处理所述存储阵列的一行的所述多个存储字中的每个存储字;以及
位-标签逻辑引擎,被配置成处理与要处理的所述多个存储字中的每个存储字相关联的每个第一位。
13.根据权利要求8所述的计算装置,进一步包括:错误校正引擎,被配置成:
基于与所述每个第一位相关联的所述存储字中的错误改变所述每个第一位的状态,并且将具有改变的位的存储字写入所述校正数据高速缓存中作为所述校正数据;和/或
基于与每个第二位相关联的所述冗余字中的错误改变所述每个第二位的状态,并且将具有改变的位的冗余字写入所述校正数据高速缓存中作为所述校正数据。
14.根据权利要求8所述的计算装置,进一步包括:错误校正引擎,被配置成:
基于所述每个第一位的状态和与所述每个第一位相关联的存储字中的错误,生成错误-修复标记;和/或
基于每个第二位的状态和与所述每个第二位相关联的存储字中的错误,生成所述错误-修复标记。
15.一种操作存储器的方法,所述方法包括:
检测在访问存储阵列中的地址期间发生的错误;
校正与检测到的错误相对应的数据;
将校正数据存储在校正数据高速缓存中,其中,所述校正数据高速缓存具有被配置成存储校正数据的至少一个修复字和与所述至少一个修复字相关联的至少一个状态位,所述状态位指示存储在所述修复字中的所述校正数据是否是待处理的修复;
使所述校正数据与所述存储阵列中的所述地址相关联;
将所述校正数据输出到所述存储器外部的电路;
确定所述错误是硬错误还是软错误;以及
如果所述错误是软错误,则将存储在所述校正数据高速缓存中的所述校正数据写回到所述存储阵列中。
16.根据权利要求15所述的方法,进一步包括:
在将所述校正数据存储在所述校正数据高速缓存中之后,检验所述校正数据高速缓存的容量状态;以及
当存储在所述校正数据高速缓存中的校正数据的数量超过阈值时,输出信号。
17.根据权利要求15所述的方法,进一步包括:
如果所述错误是硬错误,则将所述校正数据写回到冗余存储器中;以及
使所述存储阵列中的所述地址与所述冗余存储器中的所述校正数据的地址相关联。
18.根据权利要求15所述的方法,进一步包括:
如果所述错误是硬错误,则将所述校正数据永久地存储在所述校正数据高速缓存中;以及
将所述地址的随后访问引导至存储在所述校正数据高速缓存中的所述校正数据。
19.根据权利要求15所述的方法,其中,将所述数据写回到所述存储阵列中包括:执行隐式写入操作。
20.根据权利要求15所述的方法,其中,将所述数据写回到所述存储阵列中包括:在外部电路不访问所述存储阵列的周期内,写回到所述存储阵列中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261666771P | 2012-06-29 | 2012-06-29 | |
US61/666,771 | 2012-06-29 | ||
US13/840,386 | 2013-03-15 | ||
US13/840,386 US9042191B2 (en) | 2009-08-12 | 2013-03-15 | Self-repairing memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103514961A CN103514961A (zh) | 2014-01-15 |
CN103514961B true CN103514961B (zh) | 2016-08-10 |
Family
ID=49897540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310250358.5A Active CN103514961B (zh) | 2012-06-29 | 2013-06-21 | 自修复存储器、包含该存储器的计算装置以及操作存储器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103514961B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753374B (zh) * | 2017-11-01 | 2022-05-03 | 珠海兴芯存储科技有限公司 | 内存位级的修复方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414489A (zh) * | 2007-10-19 | 2009-04-22 | 中国科学院计算技术研究所 | 一种容错存储器及其纠错容错方法 |
CN101996689A (zh) * | 2009-08-12 | 2011-03-30 | 台湾积体电路制造股份有限公司 | 存储器错误处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100877701B1 (ko) * | 2006-11-23 | 2009-01-08 | 삼성전자주식회사 | 반도체 메모리 장치 및 이 장치의 리던던시 방법 |
-
2013
- 2013-06-21 CN CN201310250358.5A patent/CN103514961B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414489A (zh) * | 2007-10-19 | 2009-04-22 | 中国科学院计算技术研究所 | 一种容错存储器及其纠错容错方法 |
CN101996689A (zh) * | 2009-08-12 | 2011-03-30 | 台湾积体电路制造股份有限公司 | 存储器错误处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103514961A (zh) | 2014-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10019312B2 (en) | Error monitoring of a memory device containing embedded error correction | |
US9042191B2 (en) | Self-repairing memory | |
US9389954B2 (en) | Memory redundancy to replace addresses with multiple errors | |
CN108877870B (zh) | 用于修复操作的修复电路以及包括修复电路的存储器件 | |
US8869007B2 (en) | Three dimensional (3D) memory device sparing | |
US20160239663A1 (en) | Detecting a cryogenic attack on a memory device with embedded error correction | |
US9396815B2 (en) | Memory structure | |
US9003153B2 (en) | Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system | |
US10467074B2 (en) | Conditional journal for storage class memory devices | |
US9262284B2 (en) | Single channel memory mirror | |
US10916325B2 (en) | Memory chip and test system including the same | |
JP2013196393A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20050240838A1 (en) | Semiconductor memory device having code bit cell array | |
US8995217B2 (en) | Hybrid latch and fuse scheme for memory repair | |
US9037948B2 (en) | Error correction for memory systems | |
CN104750577A (zh) | 面向片上大容量缓冲存储器的任意多位容错方法及装置 | |
Lu et al. | Synergistic reliability and yield enhancement techniques for embedded SRAMs | |
CN103514961B (zh) | 自修复存储器、包含该存储器的计算装置以及操作存储器的方法 | |
US11749343B2 (en) | Memory management device, system and method | |
CN210136722U (zh) | 一种存储器 | |
Sun et al. | Cost-efficient built-in repair analysis for embedded memories with on-chip ECC | |
US20230386598A1 (en) | Methods for real-time repairing of memory failures caused during operations, memory systems performing repairing methods, and data processing systems including repairing memory systems | |
Skoncej | WBR-word-and block-level hard error repair for memories | |
Sim et al. | A configurable and strong RAS solution for die-stacked DRAM caches | |
KR20240070026A (ko) | 심층 신경망을 위한 비휘발성 메모리 장치 및 이의 신뢰도 향상 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |