CN102855941A - 基于多符号多清理周期分析的抢先存储器修复方法和系统 - Google Patents
基于多符号多清理周期分析的抢先存储器修复方法和系统 Download PDFInfo
- Publication number
- CN102855941A CN102855941A CN2012102259844A CN201210225984A CN102855941A CN 102855941 A CN102855941 A CN 102855941A CN 2012102259844 A CN2012102259844 A CN 2012102259844A CN 201210225984 A CN201210225984 A CN 201210225984A CN 102855941 A CN102855941 A CN 102855941A
- Authority
- CN
- China
- Prior art keywords
- symbol
- storer
- correctable error
- parts
- symbols
- 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/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/10—Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
在一些示范性实施例中,一种方法包括跨多个清理周期的一个清理周期地进行存储器的存储器清理。该方法包括识别作为响应于存储器清理来自存储器的区段中的存取的结果的、存储器中的符号的可纠正错误。该方法还包括跨多个清理周期地进行分析,其中分析的进行包含确定跨多个清理周期的至少两个符号是否含有至少一个可纠正错误。该方法包括响应于确定跨多个清理周期的至少两个符号含有至少一个可纠正错误,进行包括所述存储器的区段的存储器的至少一个修复。
Description
技术领域
本发明主题的实施例一般涉及计算机领域,尤其涉及计算机、装置、设备等的存储器的抢先修复。
背景技术
现代计算机系统典型地配置有大量存储器,以便将数据和指令提供给计算机系统中的一个或多个处理器。历史上,处理器速度已经比大部分存储器,尤其是DRAM存储器(动态随机存取存储器)的存储器存取时间更迅速地提高。为了减小处理器与存储器之间的性能失配,已经构造多存储器层级。例如,大多数现代处理器被构造成含有由处理器半导体芯片上的SRAM(静态随机存取存储器)构成的L1(1级)高速缓存。L1高速缓存非常快,只在处理器的一个或几个周期中提供读写。然而,L1高速缓存虽然非常快,但也相当小,大概64KB(千字节)到256KB。通常还在处理器芯片上实现L2(2级)高速缓存。L2高速缓存典型地也使用SRAM存储构成,虽然一些处理器利用DRAM存储。L2高速缓存通常比L1高速缓存大几倍字节数,但读写较慢。一些现代处理器芯片还包含L3(3级)高速缓存。L3高速缓存能够保存比L2高速缓存大几倍的数据。L3高速缓存有时利用DRAM存储构成。一些计算机系统中的L3高速缓存被实现在与处理器分开的一个或多个芯片上,并利用印刷线路板(PWB)或多芯片模块(MCM)上的布线与处理器耦合。计算机系统的主存储器通常很大,往往多个GB(千兆字节),并且通常用DRAM实现。
主存储器通常利用存储器控制器与处理器耦合,存储器控制器可以集成在与处理器相同的器件上,或常常与处理器分开地处在相同MCM(多芯片模块)或PWB上。存储器控制器从处理器接收装载或读取命令和存储或写入命令,并为那些命令服务,从主存储器中读取数据或将数据写入主存储器中。通常,存储器控制器含有一个或多个队列,例如,读取队列和写入队列。读取队列和写入队列缓冲包括命令、控制、地址和数据的一种或多种的信息,从而使处理器能够在给定时间在进程中含有多个请求——包括读取和/或写入请求。
该行业不断地把资金投入到广泛的研究和开发努力中,以便通过改善存储器系统或存储器子系统设计和结构,来创建用于使整个系统性能和密度达到最大的改进、创新解决方案。由于顾客期待新计算机系统除了提供附加的功能、提高的性能、增大的存储、和更低的运行成本等之外,在平均无故障时间(MTBF)方面也显著优于现有系统,所以高可用性系统进一步提出了与整个系统可靠性有关的挑战。其它常见顾客要求进一步加重了存储器系统设计挑战,并且包括这样的项目,如易于升级以及降低系统环境影响像,诸如空间、功率和冷却。
随着DRAM接口的速度增大,读取包括由存储器设备、存储器信号路径中的任何互连结构、存储器接口、耦合噪声、电源波动或噪声、温度变化、时间漂移等的一种或多种引起的可纠正错误的概率也增加。
发明内容
在一些示范性实施例中,一种方法包括跨多个清理周期的一个清理周期进行存储器的存储器清理。该方法包括识别作为响应于存储器清理来自存储器的区段的存取结果的、存储器中的符号的可纠正错误。该方法还包括跨多个清理周期地进行分析,其中分析的进行包含确定跨多个清理周期的至少两个符号是否含有至少一个可纠正错误。该方法包括响应于跨多个清理周期的至少两个符号含有至少一个可纠正错误的确定,进行包括所述存储器的区段的存储器的至少一个修复。
在一些示范性实施例中,一种方法包括跨多个清理周期的一个清理周期地进行存储器的存储器清理。该方法包括识别作为响应于存储器清理来自存储器的区段的存取结果的、存储器中的符号的可纠正错误。该方法还包括跨多清理周期地进行分析,其中分析的进行包含确定是否对符号的至少两个符号的每一个已经识别了至少一个可纠正错误。分析的进行还包括确定至少两个符号的至少一个符号是否含有超过阈值的可纠正错误。分析的进行还包括响应于至少一个其它符号含有超过阈值的可纠正错误的确定,确定符号的至少一个其它符号是否含有超过阈值的可纠正错误。该方法包括响应于对至少两个符号的每一个已经识别了至少一个可纠正错误的确定、至少两个符号的至少一个符号含有超过阈值的可纠正错误的确定、和至少一个其它符号含有超过阈值的可纠正错误的确定,进行包括所述存储器的区段的存储器的至少一个修复。
附图说明
通过参考附图可以更好地理解本实施例,并且使许多目的、特征和优点对本领域的普通技术人员来说是显而易见的。
图1描绘了按照一些示范性实施例、基于多符号多清理周期分析的抢先存储器修复的计算机系统。
图2描绘了按照一些示范性实施例、基于多符号多清理周期分析的抢先存储器修复的流程图。
图3描绘了按照一些示范性实施例、存储跨多个清理周期的多个符号的错误的二维表格。
图4描绘了按照一些示范性实施例、基于多符号多清理周期分析的抢先存储器修复的继续操作的流程图。
图5描绘了按照一些示范性实施例、基于多符号多清理周期分析的抢先存储器修复的继续操作的流程图。
图6描绘了按照一些示范性实施例、利用三个不同修复的抢先存储器修复的流程图。
图7描绘了按照一些其它示范性实施例、存储跨多个清理周期的多个符号的错误的二维表格。
具体实施方式
如下的描述包括体现本发明主题的技术的示范性系统、方法、技术、指令序列以及计算机程序产品。但是,要理解所述的实施例可以无需这些具体细节地实施。例如,尽管一些例子提到三个类型的抢先存储器修复,但一些示范性实施例可以应用更多种或更少数量的抢先修复以及其它类型的抢先修复。在其它情况下,未详细示出众所周知的指令实例、协议、结构和技术,以便不混乱本描述。
存储器中的错误可以因存储单元未适当存储数据而发生。错误也可以发生在存储器的外部(例如,存取存储器的数据引脚)从而引起存储器中的错误。一些示范性实施例收集用于分析的数据以将不同类型的修复应用于存储器来纠正这些错误。在一些示范性实施例中,纠错码(ECC)存储器可以将不同修复方法应用于存储器来修复。第一修复方法包括修复一个符号宽度ECC高速缓存行错误的符号标志修复——两位宽度修复。第二修复方法包括修复一个芯片宽度ECC高速缓存行错误的芯片标志修复——八位宽度修复。在一些示范性实施例中,使用一个或多个纠错码(ECC)操作纠正符号标志修复和芯片标志修复。具体地,根据ECC校验位,可以对什么数据应该已经存储在存储器中作出确定。于是,ECC操作可以从存储器接收不正确的数据,并重新计算以提供正确的数据。这样的ECC操作可以针对符号级宽度存取以及芯片级宽度存取来进行。第三修复方法包括存储器(例如,动态随机存取存储器(DRAM)调整。一旦出现一个坏芯片,存储器调整就部署一个备用存储器。一些示范性实施例建立和应用确定将哪些修复方法应用于存储器修复的不同准则。与传统存储器修复方法相比,一些示范性实施例收集建立这些不同准则的附加数据。
具体地,一些示范性实施例包括跨多个清理(scrub)周期延伸多个清理周期和多个符号的分析。于是,一些实施例能够跟踪可以随时间缓慢积累(可能无法通过传统错误检查方法检测)的小错误。如果得不到修复,这些小的可纠正错误可以转变成导致系统崩溃的不可恢复错误。
传统方法未尝试过跨多个清理周期地寻找多个出错符号。于是,对于传统方法,可以对于单个清理周期内而不是在另一个清理周期期间检测坏符号。因此,对于传统方法,因为没有足够的数据用于分析和采取行动,所以仍然存在即将发生不可恢复错误(由多个出错符号引起)的机会。
一些示范性实施例在跨多个清理周期的时段上累积可恢复错误,以便找出以后可能导致不可恢复错误的、含有跨高速缓存行(cache line)的可恢复错误的多个符号。在累积了跨多个清理周期的多个符号的清理统计量之后,可以分析这样的统计量。如下面进一步所述,可以确定相对于可配置阈值的含有跨多个清理周期的可恢复错误的多个符号的各种组合。这样的分析可以导致将应用于含有可恢复错误的存储器的各种抢先ECC修复、存储器替换修复等。
一些示范性实施例在存储器中建立存储有关可恢复错误(CE)的统计量的二维数据阵列或表格。CE统计量可以针对存储器的给定列(rank)的符号。此外,可以为每个清理周期收集CE统计量,其中将跨多个清理周期的CE统计量存储在二维阵列中。可以根据先进先出(FIFO)原则将每个清理周期的CE统计量插入阵列中和从阵列中删除。阵列(CE_Table)的大小可以是N个符号×滑动窗口:
CE_Table[N_Symbols][Sliding_Window],
其中:
N_Symbols=对于用于存储器的存储器控制器的给定列上的符号数;
Sliding_Window=用于CE分析的清理周期数。
CE_Table[N_Symbols][0]含有最老清理周期的数据统计量,和CE_Table[N_Symbols][Sliding_Window-1]含有当前清理周期的数据统计量。在一些示范性实施例中,可以跨存储在阵列中的多个清理周期收集数据。阵列的大小可以基于系统的类型、存储器的类型、应用的类型等而变。在一些示范性实施例中,存在用于存储器内的每列的表格。虽然针对存储器的列来描述,但一些示范性实施例可应用于存储器中的不同地址范围的任何区段或分段(例如,行)。此外,对于存储器中的不同列可以存在跟踪错误的多个表格。一列可以具有取决于系统的类型、应用等的不同大小(例如,1GB、2GB等)。因此,如下面进一步所述,对于存储器中的分开列,可以分开进行分析和纠错。
图1描绘了按照一些示范性实施例、基于多符号多清理周期分析的抢先存储器修复的计算机系统。计算机系统100包括处理器102(可能包括多个处理器、多个核、多个节点、和/或实现多线程等)。计算机系统100还包括可以代表不同级别高速缓存(例如,L1,L2,L3等)的高速缓存106。处理器102通信地与高速缓存106耦合,高速缓存106通信地与总线108(例如,PCI、ISA、PCI-Express、NuBus等)、网络接口YY05(例如,ATM接口、以太网接口、帧中继接口、SONET接口、无线接口等)、和存储设备YY09(例如,光存储,磁存储体)耦合。
计算机系统100还包括存储器系统110,存储器系统110包括存储器控制器112和存储器114。存储器系统110通信地与总线108耦合。存储器114可以包括同步动态存取存储器(SRAM)、DRAM、零电容器RAM、双晶体管RAM、扩展数据输出(EDO)RAM、双数据速率(DDR)RAM、纳米RAM(NRAM)、电阻性RAM(RRAM)等。存储器114包括可以包括一个或多个列的多个模块115(例如,双列直插式存储模块(DIMM))。在一些示范性实施例中,可以将模块115之一的列与上面的多个存储器芯片相联系。在一些示范性实施例中,一个或多个存储器芯片可以是用于存储器调整修复(可纠正错误的可能的抢先修复之一)的备用芯片。
计算机系统100还包括服务处理器105,服务处理器105被配置成运行错误模块107。服务处理器105通信地与高速缓存106耦合。例如,错误模块107可以是软件和/或固件指令。如下面进一步所述,在运行时,错误模块107可以定位存储在存储器114的列115中的数据的错误。错误模块107也可以填充跨多个符号和跨多个清理周期地存储错误的二维阵列。错误模块107还可以根据相对于可配置阈值的跨多个符号和多个清理周期的错误数量,为抢先修复配置存储器114。错误模块107的操作将在下面参考例示在图2-5中的流程图作进一步描述。虽然描述在相对于处理器102的独立服务处理器上执行错误模块107的操作,但在一些其他示范性实施例中处理器102也可以运行错误模块107。
计算机系统100还包括ECC解码器111,ECC解码器111通信地与总线108耦合。如下面进一步所述,ECC解码器111可以配置成执行ECC操作来为存储器114中的数据纠正存储器错误。例如,ECC解码器111可以执行ECC操作以进行符号标志修复和芯片标志修复的至少一个。具体地,根据ECC校验位,可以对什么数据应该已经存储在存储器中作出确定。于是,ECC操作可以从存储器接收不正确数据,并重新计算以提供正确数据。这样的ECC操作可以针对符号级宽度存取以及芯片级宽度存取来进行。
计算机系统100还包括非易失性机器可读介质150(例如,光存储、磁存储等),非易失性机器可读介质150通信地与总线108耦合。并且,一些实现可以包括未例示在图1中的更少或附加组件(例如,视频卡、音频卡、附加网络接口、外围设备等)。
现在描述按照一些示范性实施例的操作的流程图。具体地,图2以及图4-6描绘了基于多符号多清理周期分析的抢先存储器修复的流程图。如下面进一步所述,图2以及4-5中的流程图的操作在不同过渡点(过渡点A,B和C)上相互跨越地移动。图6描绘了包括作为图4的方块406中的操作的扩展的操作的流程图。在一些示范性实施例中,图2以及4-6中的流程图的操作由图1的错误模块107和ECC解码器111执行。于是,图2以及图4-6中的流程图参考计算机系统100来描述。此外,为了有助于描述,参考例示在图3和7中的示范性二维表格来描述流程图。针对对存储器的一列执行的操作来描述图2-5的流程图的操作。但是,一些示范性实施例可以对其中不止一个或所有列执行。
图2描绘了按照一些示范性实施例、基于多符号多清理周期分析的抢先存储器修复的流程图。流程图200的操作从方块202开始。
在方块202中,错误模块107跨多个清理周期的一个新清理周期地进行存储器的新存储器清理。参照图1,错误模块107进行存储器114的列的新存储器清理。在存储器清理周期期间,从高速缓存106中读取高速缓存线,使得从存储器114的数据的相应读取。在一些示范性实施例中,高速缓存线的符号覆盖存储器114的地址空间。ECC解码器111使用ECC操作(例如,使用存储成高速缓存线的一部分的校验位)检测是否存在符号错误。对于识别的每个符号错误,通知错误模块107。在一些示范性实施例中,周期性(例如,每隔12小时)地进行新存储器清理。在方块204中继续流程图200的操作。
在方块204中,ECC解码器111以高速缓存线为粒度识别存储器114中的符号的可纠正错误。参考图1,ECC解码器111可以接收来自存储器114的数据,并响应于存取确定是否返回了正确数据。如一些示范性实施例所述,存储器清理针对高速缓存106中的给定高速缓存线中的每个符号。此外,ECC解码器111可以将可纠正错误的标识提供给错误模块107。在方块206中继续流程图200的操作。
在方块206中,错误模块107利用对这个清理周期识别的可纠正错误更新表格(存储跨多个清理周期的高速缓存的高速缓存行中定义的符号的可纠正错误)。参考图1,错误模块107可以从ECC解码器111接收可纠正错误的这些标识。为了例示的目的,图3描绘了按照一些示范性实施例、存储跨多个清理周期的多个符号的错误的二维表格。图3描绘了存储沿着高速缓存的高速缓存行的符号的可纠正错误的计数的表格300。表格300的垂直轴包括用于高速缓存行的不同清理周期的行。表格300的水平轴包括以高速缓存行为粒度(例如,128个字节)的用于存储器114的不同符号的列。在一些示范性实施例中,高速缓存行包含两个64字节ECC字,其中对每个64字节字进行ECC生成和校验。如本文所述,可以每列存储可纠正错误统计量。于是,在一些示范性实施例中,清理读取列中的所有高速缓存行。存储器控制器112维持多少次读取遇到该符号的可覆盖错误的每符号计数。例如,清理结束时符号N的64计数指示,对于那个列中的64个不同ECC字或32个不同高速缓存行在相同符号索引上存在可覆盖错误。
具体地,表格300包括映射到高速缓存行的10个不同符号的10个不同列(column)。为了清晰起见,对于给定高速缓存行只示出了10个符号。在一些示范性实施例中,高速缓存106中的给定高速缓存行包括72个符号。在这样的实施例中,表格300包括高速缓存行的72个不同符号的72个不同列。表格300包括10个不同符号的10个列——列322、324、326、328、330、332、334、336、338、和340。列322存储高速缓存行中的第1符号的可纠正错误计数。列324存储高速缓存行中的第2符号的可纠正错误计数。列326存储高速缓存行中的第3符号的可纠正错误计数。列328存储高速缓存行中的第4符号的可纠正错误计数。列330存储高速缓存行中的第5符号的可纠正错误计数。列332存储高速缓存行中的第6符号的可纠正错误计数。列334存储高速缓存行中的第7符号的可纠正错误计数。列336存储高速缓存行中的第8符号的可纠正错误计数。列338存储高速缓存行中的第9符号的可纠正错误计数。列340存储高速缓存行中的第10符号的可纠正错误计数。
表格300还包括映射到10个不同清理周期的10个不同行(row)。为了清晰起见,只示出了10个不同清理周期。但是,在表格300中可以存储更少或更多数量的清理周期。表格300包括10个不同行——行302、304、306、308、310、312、314、316、318、和320。行302存储当前清理周期的10个不同符号的错误计数。行304存储以前清理周期的相同10个符号的错误计数。行306存储以前清理周期的相同10个符号的错误计数。行308存储以前清理周期的相同10个符号的错误计数。行310存储以前清理周期的相同10个符号的错误计数。行312存储以前清理周期的相同10个符号的错误计数。行314存储以前清理周期的相同10个符号的错误计数。行316存储以前清理周期的相同10个符号的错误计数。行318存储以前清理周期的相同10个符号的错误计数。行320存储最老清理周期的相同10个符号的错误计数。
在一些示范性实施例中,根据先进先出(FIFO)原理建立和删除表格300的行。具体地,表格300将限定数量的清理周期存储在行中。在本例中,表格300存储10不同清理周期的符号的错误计数。一旦跟踪到超过10个清理周期的错误计数,错误模块107(图1)就删除最老清理周期以便存储当前清理周期。
返回到图2的描述,错误模块107根据沿着高速缓存行的不同符号的错误计数(从ECC解码器111接收)更新表格300。在本例中,错误模块107将当前清理周期的错误计数存储在表格300的顶部(行302),并删除具有最老清理周期——在时间上比存储在行320中的最老清理周期更老的清理周期的行。可以将表格300存储在非易失性机器可读介质150中。在方块208中继续图2的流程图200的操作。
在方块208中,错误模块107从以前的分析中确定是否已经将修复方法应用于存储器的这个列。具体地,如下面进一步所述,可以将限定数量的修复方法应用于存储器的给定列来修复其中的符号的错误。因此,如果当前正在应用这些修复方法的一些修复其它符号的以前识别错误,则这些修复方法不用于修复在这个分析期间识别的符号的任何错误。在一些示范性实施例中,将三个不同修复方法应用于存储器的给定列——符号标志修复、芯片标志修复和存储器调整修复。如下面进一步所述,可以将这些修复的至少两个应用于给定分析,以便可以将第三修复应用于在随后分析中识别的错误。于是,方块208中的操作需要从以前的分析中确定是否已经应用了这样的修复。如果从以前的分析中已经应用了修复,则流程图200的操作继续转到在图5(下面更详细描述)的流程图500上继续的过渡点C。否则,在方块210中继续流程图200的操作。
在方块210中,错误模块107确定是否已经对至少两个符号的每一个至少识别了可纠正错误(跨其数据存储在表格中的多个清理周期)。参照图3,错误模块107对跨整个表格300的两个不同符号确定是否存在至少两个非零条目。于是,错误模块107跨多个清理周期地进行分析。在本例中,对于三个不同符号,在表格300中存在12个非零条目:
1)行302列330上的条目存储20的错误计数—第一符号;
2)行304列330上的条目存储20的错误计数—第一符号;
3)行306列330上的条目存储15的错误计数—第一符号;
4)行308列330上的条目存储20的错误计数—第一符号;
5)行310列330上的条目存储35的错误计数—第一符号;
6)行312列330上的条目存储20的错误计数—第一符号;
7)行314列330上的条目存储20的错误计数—第一符号;
8)行316列330上的条目存储20的错误计数—第一符号;
9)行318列330上的条目存储18的错误计数—第一符号;
10)行320列330上的条目存储15的错误计数—第一符号;
11)行316列322上的条目存储16的错误计数—第二符号;
12)行316列340上的条目存储11的错误计数—第三符号。
于是,在本例中,错误模块107遍历表格300,定位含有非零条目的三个符号。如果不存在含有非零条目的至少两个符号,则在方块202中继续流程图200的操作,其中对于新的清理周期进行新的存储器清理。否则,流程图200的操作在过渡点A继续,过渡点A在图4(的流程图400现在描述)继续。
图4描绘了按照一些示范性实施例、基于多符号多清理周期分析的抢先存储器修复的继续操作的流程图。流程图400的操作在方块402开始。
在方块402上,错误模块107确定含有至少一个可纠正错误的至少一个符号是否含有超过阈值的可纠正错误(跨其数据存储在表格中的多个清理周期)。参考图3,错误模块107确定被识别成具有非零错误计数的三个符号(符号1,符号2或符号3)的至少一个是否含有表格300中具有超过阈值的错误计数的条目。在一些示范性实施例中,阈值是取决于系统的类型、应用的类型、存储器的类型等的可配置值。假设将阈值设置成值30。在本例中,表格300的一个条目超过阈值—行310列330上的条目存储35的错误计数。如果没有至少一个符号含有错误计数超过阈值的条目,则图400的操作在返回到流程图200的方块202的过渡点B继续,其中对新的清理周期内进行新的存储器清理。否则,在方块404中继续流程图400的操作。
在方块404中,错误模块107确定至少两个其它符号是否含有超过阈值的可纠正错误(跨其数据存储在表格中的多个清理周期)。参考图3,错误模块107再次遍历表格300,尝试定位含有超过阈值的可纠正错误的至少两个其它符号。假设将阈值设置成值10而不是30。在这样的情况下,错误模块107识别出条目的错误计数超过阈值的两个其它符号:
1)行316列322上的条目存储16的错误计数—第二符号;
2)行316列340上的条目存储11的错误计数—第三符号。
如果存在含有超过阈值的可纠正错误的至少两个其它符号,则在方块406继续流程图400的操作。否则,在方块408继续流程图400的操作。
在方块406中,错误模块107利用三个不同修复进行抢先修复。具体地,错误模块107已经识别了具有已经超过阈值的错误计数的至少三个符号。利用三个不同修复进行抢先修复的操作将在下面参考图6作更详细描述。然后完成图4的流程图400的操作。
在方块408中,错误模块107确定至少一个其它符号是否含有超过阈值的可纠正错误(跨其数据存储在表格中的多个清理周期)。参考图3,错误模块107再次遍历表格300,尝试定位含有超过阈值的可纠正错误的至少一个其它符号。假设将阈值设置成值15而不是30或10。在这样的情况下,错误模块107识别出条目的错误计数超过阈值的一个其它符号:
1)行316列322上的条目存储16的错误计数—第二符号。
如果不存在含有超过阈值的可纠正错误的至少一个其它符号,则流程图400的操作在返回到流程图200的方块202的过渡点B继续,其中对于新的清理周期内进行新的存储器清理。否则,在方块410继续流程图400的操作。
在方块410中,错误模块107对含有最多可纠正错误的符号进行存储器调整修复(识别成含有超过阈值的错误的两个符号之间)。具体地说,错误模块107在方块402中识别出具有超过阈值的错误计数的第一符号,和在方块408中识别出具有超过阈值的错误计数的第二符号。对于存储器调整修理,错误模块107将配置存储器114,以便用备用存储器芯片替换存储含有最多可纠正错误的符号的存储器芯片。如上所述,存储器114被配置成以便备用芯片可用于允许存储器调整。作为修复的一部分,错误模块107可以将内容从被替换的芯片复制到备用芯片(除了具有超过阈值的错误计数的符号之外)。对于这些符号,错误模块107可以根据ECC解码器111提供的数据写入正确数据。此外,错误模块107可以将存储器控制器112重新配置成以便将对从旧芯片存取数据的请求现在重新指向备用芯片。虽然描述了以便将存储器调整修复应用于存储含有最多可纠正错误的符号的存储器芯片,但一些其它实施例可以使用其它准则来确定将哪个修复应用于哪个符号(如下面进一步所述)。在方块412继续流程图400的操作。
在方块412中,错误模块107对含有超过阈值的可纠正错误的其它符号进行芯片标志修复或符号标志修复。在一些示范性实施例中,错误模块107根据故障的宽度确定使用哪个修复。例如,如果存在具有彼此相邻或相近的非零错误计数的其它符号(作为相同芯片的一部分),则错误模块107进行芯片标志修复(从而纠正八位)。如果不存在含有与这个特定错误相近或相邻的错误的其它符号,则错误模块107进行符号标志修复(从而纠正两位)。在一些示范性实施例中,使用ECC解码器111执行的一个或多个纠错码(ECC)操作进行符号标志修复和芯片标志修复。具体地,根据ECC校验位,ECC解码器111确定什么数据应该已经存储在存储器中。于是,ECC解码器111可以从存储器接收不正确数据,并重新计算以提供正确数据。这样的ECC操作可以针对符号级宽度存取以及芯片级宽度存取来进行。于是,错误模块107可以将指令发送给ECC解码器111,以便对从存储器114存取的给定位组进行芯片标志修复或符号标志修复。图400的操作在返回到流程图200的方块202的过渡点B继续,其中对新的清理周期内进行新的存储器清理。
图5描绘了按照一些示范性实施例、基于多符号多清理周期分析的抢先存储器修复的继续操作的流程图。流程图500的操作在方块502开始。这是从图2的流程图200的过渡点C的继续,其中从以前的分析中确定已经存在已应用的修复。如果从以前的分析中完成了这样的修复,则使用三个修复的两个(参见上述的方块410-412)。
在方块502中,错误模块107确定至少一个符号是否含有超过阈值的可纠正错误(跨其数据存储在表格中的多个清理周期)。参考图3,错误模块107遍历表格300,定位含有超过阈值的可纠正错误的符号。在一些示范性实施例中,如果存在满足这些准则的多个符号,则错误模块107选择含有最多可纠正错误的符号。在一些示范性实施例中,错误模块107选择在遍历表格300期间定位的满足准则的第一符号。如果不存在至少一个符号含有错误计数超过阈值的条目,则流程图500的操作在返回到流程图200的方块202的过渡点B继续,其中对新的清理周期内进行新的存储器清理。否则,在方块504中继续流程图500的操作。
在方块504中,错误模块107对这个识别的符号进行芯片标志修复或符号标志修复。具体地,错误模块107根据以前的分析进行当前未使用的修复。错误模块107进行在上述的方块412(其中选择芯片标志修复或符号标志修复)中未选择的修复。在一些示范性实施例中,使用ECC解码器111执行的一个或多个纠错码(ECC)操作进行符号标志修复和芯片标志修复。具体地,根据ECC校验位,ECC解码器111确定什么数据应该已经存储在存储器中。于是,ECC解码器111可以从存储器接收不正确数据,并重新计算以提供正确数据。这样的ECC操作可以针对符号级宽度存取以及芯片级宽度存取来进行。于是,错误模块107可以将指令发送给ECC解码器111以便对从存储器114存取的给定位组进行芯片标志修复或符号标志修复。完成流程图500的操作(因为已经将所有三个修复都应用于存储器的这个列)。
图6描绘了按照一些示范性实施例、利用三个不同修复方法的抢先存储器修复的流程图。流程图600包括作为在图4的方块406的操作的扩展的操作(其中进行利用三个不同修复的抢先修复)。流程图600的操作在方块602开始。
在方块602中,错误模块107对含有最多可纠正错误的符号进行存储器调整修复(识别成含有超过阈值的错误的三个符号当中)。具体地说,错误模块107在方块402中识别出具有超过阈值的错误计数的第一符号和在方块404中识别出具有超过阈值的错误计数的第二和第三符号。对于存储器调整修理,错误模块107将配置存储器114,以便用备用存储器芯片替换存储含有最多可纠正错误的符号的存储器芯片。如上所述,配置存储器114以便备用芯片可用于允许存储器调整。作为修复的一部分,错误模块107可以将内容从被替换的存储器芯片复制到备用存储器芯片(除了具有超过阈值的错误计数的符号之外)。对于这些符号,错误模块107可以根据ECC解码器111提供的数据写入正确数据。此外,错误模块107可以重新配置存储器控制器112,以便将对从旧存取芯片访问数据的请求现在重新指向到备用存储器芯片。在方块604中继续流程图600的操作。
在方块604中,错误模块107对含有超过阈值的次多可纠正错误的符号进行芯片标志修复。在一些示范性实施例中,使用ECC解码器111执行的一个或多个纠错码(ECC)操作进行芯片标志修复。具体地,根据ECC校验位,ECC解码器111确定什么数据应该已经存储在存储器中。于是,ECC解码器111可以从存储器接收不正确数据,并重新计算以提供正确数据。于是,错误模块107可以将指令发送给ECC解码器111以便对从存储器114存取的八位进行芯片标志修复。在方块606中继续流程图600的操作。
在方块606中,错误模块107对含有超过阈值的第三多可纠正错误的符号进行符号标志修复。在一些示范性实施例中,使用ECC解码器111执行的一个或多个纠错码(ECC)操作进行符号标志修复。具体地,根据ECC校验位,ECC解码器111确定什么数据应该已经存储在存储器中。于是,ECC解码器111可以从存储器接收不正确数据,并重新计算以提供正确数据。于是,错误模块107可以将指令发送给ECC解码器111以便对从存储器114存取的两位进行符号标志修复。结束流程图600的操作。
虽然描述了以便将存储器调整修复应用于含有最多可纠正错误的符号,将芯片标志修复应用于含有次多可纠正错误的符号,以及将符号标志修复应用于含有最少量可纠正错误的符号,但一些示范性实施例可以根据其它准则将这些修复应用于不同符号。例如,错误模块107可以考虑内含有可纠正错误的符号的分组。具体地,错误模块107可以为那个芯片内含有最多可纠正错误的那个存储器芯片选择存储器调整修复。此外,在一些示范性实施例中,错误模块107可以根据故障的宽度确定使用哪个修复。例如,如果存在具有彼此相邻或相近的非零错误计数的其它符号(作为相同芯片的一部分),则错误模块107进行芯片标志修复(从而纠正八位)。如果不存在含有与这个特定错误相近或相邻的错误的其它符号,则错误模块107进行符号标志修复(从而纠正两位)。
一些示范性实施例可以将可替代或附加准则用于确定符号是否适合修复。为了例示的目的,图7描绘了按照一些其它示范性实施例、存储跨多个清理周期的多个符号的错误的二维表格。与图3类似,图7描绘了存储沿着高速缓存的高速缓存行的符号的可纠正错误的计数的表格700。表格700的垂直轴包括高速缓存行的不同清理周期的行。表格700的水平轴包括高速缓存行的不同符号的列。
具体地,表格700包括映射到高速缓存行的10个不同符号的10个不同列。为了清晰起见,对于给定高速缓存行只示出了10个符号。在一些示范性实施例中,高速缓存106中的给定高速缓存行包括72个符号。在这样的实施例中,表格700将包括高速缓存行的72个不同符号的72个不同列。表格700包括10个不同符号的10个列——列722、724、726、728、730、732、734、736、738、和740。列722存储高速缓存行中的第1符号的可纠正错误计数。列724存储高速缓存行中的第2符号的可纠正错误计数。列726存储高速缓存行中的第3符号的可纠正错误计数。列728存储高速缓存行中的第4符号的可纠正错误计数。列730存储高速缓存行中的第5符号的可纠正错误计数。列732存储高速缓存行中的第6符号的可纠正错误计数。列734存储高速缓存行中的第7符号的可纠正错误计数。列736存储高速缓存行中的第8符号的可纠正错误计数。列738存储高速缓存行中的第9符号的可纠正错误计数。列740存储高速缓存行中的第10符号的可纠正错误计数。
表格700还包括映射到10个不同清理周期的10个不同行。为了清晰起见,只示出了10个不同清理周期。但是,在表格700中可以存储更少或更多个清理周期。表格700包括10个不同行——行702、704、706、708、710、712、714、716、718、和720。行702存储当前清理周期的10个不同符号的错误计数。行704存储以前清理周期的相同10个符号的错误计数。行706存储以前清理周期的相同10个符号的错误计数。行708存储以前清理周期的相同10个符号的错误计数。行710存储以前清理周期的相同10个符号的错误计数。行712存储以前清理周期的相同10个符号的错误计数。行714存储以前清理周期的相同10个符号的错误计数。行716存储以前清理周期的相同10个符号的错误计数。行718存储以前清理周期的相同10个符号的错误计数。行720存储最老清理周期的相同10个符号的错误计数。
在一些示范性实施例中,根据先进先出(FIFO)原理建立和删除表格700的行。具体地,表格700将限定数量的清理周期存储在行中。在本例中,表格700存储10不同清理周期的符号的错误计数。一旦跟踪到超过10个清理周期的错误计数,错误模块107(图1)就删除最老清理周期以便存储当前清理周期。
为了例示,与表格300的条目相比较,将用于确定符号适合修复不同错误计数的可替代或附加准则的使用存储在表格700的条目中。具体地,存储在列730中的相同符号在三个相继清理周期(行712、行710和行708)内具有非零错误计数。此外,存储在列722中的相同符号在两个相继清理周期(行718和行716)内具有非零错误计数。存储在列740中的相同符号在两个非相继清理周期(行720和行716)内具有非零错误计数。在一些示范性实施例中,错误模块107可以遵循给定符号的错误计数的趋势以确定是否需要修复。例如,如果相同符号对两个相继清理周期具有至少两个非零错误计数(例如,列722中的符号),则需要修复。在另一个例子中,如果相同符号对相继或非相继清理周期具有大于阈值(例如,15)的至少两个错误计数(例如,列730中的符号),则需要修复。在另一个例子中,如果相同符号对相继或非相继清理周期具有至少两个非零错误计数(例如,列740中的符号),则需要修复。可替代地或除了上面在图2-6中所述的准则之外,错误模块107可以使用这些准则。作为附加准则使用可以强化符号需要校正的假设。
如所属技术领域的技术人员知道,本发明主题可以实现为系统、方法或计算机程序产品。因此,本发明主题可以具体采用为以下形式,即:可以是完全的硬件实施例、也可以是完全的软件(包括固件、驻留软件、微代码等)实施例,还可以是硬件和软件方面结合实施例的形式,本文一般都称为“电路”、“模块”或“系统”。此外,本发明主题的各方面还可以采用为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含其上实现的计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者以上的任何适当组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件上下文中,计算机可读存储介质可以是任何可以包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式的任一,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上实现的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任何组合来编写用于本发明主题各方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”程序设计语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后者的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以进行连接到外部计算机(例如利用因特网服务提供商来通过因特网)。
下面将参照根据本发明主题的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述本发明主题。应当理解,流程图图示和/或框图的每个方框以及流程图图示和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些指令通过计算机或其它可编程数据处理装置的处理器执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指引计算机、其它可编程数据处理装置、或其他设备以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
虽然参考各种实现和开发描述了各实施例,但应该明白,这些实施例是例示性的,本发明主题的范围不局限于它们。一般说来,如本文所述的抢先存储器修复技术可以利用与任何硬件系统或硬件系统相容的设施实现。许多改变、修改、添加和改进是可能的。
可以为本文描述成单个实例的部件、操作或结构提供多个实例。最后,各种部件、操作和数据存储之间的边界有些任意,并且特定操作是在特定例示性配置的背景下例示的。功能的其它分配可以被预想,并且可以都在本发明主题的范围之内。一般说来,在示范性配置中表示成单独部件的结构和功能可以实现成组合结构或部件。类似地,表示成单个部件的结构和功能可以实现几个单独部件。这些和其它改变、修改、添加和改进都在本发明主题的范围之内。
Claims (21)
1.一种修复存储器的方法,其包含:
跨多个清理周期的一个清理周期地进行存储器的存储器清理;
识别作为响应于存储器清理来自存储器的区段的存取的结果的、存储器中的符号的可纠正错误;
跨多个清理周期地进行分析,其中分析的进行包含确定跨多个清理周期的至少两个符号是否含有至少一个可纠正错误;以及
响应于确定跨多个清理周期的至少两个符号含有至少一个可纠正错误,进行包括所述存储器的区段的存储器的至少一个修复。
2.如权利要求1所述的方法,其中确定跨多个清理周期的至少两个符号是否含有至少一个可纠正错误包含:
确定是否对符号的至少两个符号的每一个已经识别至少一个可纠正错误;
确定至少两个符号的至少一个符号是否含有超过阈值的可纠正错误;以及
响应于确定至少一个其它符号含有超过阈值的可纠正错误,确定符号的至少一个其它符号是否含有超过阈值的可纠正错误。
3.如权利要求2所述的方法,其中进行包括所述存储器的区段的存储器的至少一个修复包含:
响应于确定对至少两个符号的每一个已经识别了至少一个可纠正错误、确定至少两个符号的至少一个符号含有超过阈值的可纠正错误、和确定至少一个其它符号含有超过阈值的可纠正错误,进行包括所述存储器的区段的存储器的至少一个修复。
4.如权利要求1所述的方法,其中进行包括所述存储器的区段的存储器的至少一个修复包含:进行包括所述存储器的区段的存储器的至少两个修复,其中至少两个修复包含存储器调整修复、芯片标志修复和符号标记修复中的至少两个。
5.如权利要求1所述的方法,其中确定跨多个清理周期的至少两个符号含有至少一个可纠正错误包含:对多个清理周期的至少两个相继清理周期确定至少两个符号的每一个超过阈值。
6.如权利要求1所述的方法,其中所述存储器的区段包含存储器的列。
7.一种修复存储器的方法,包含:
跨多个清理周期的一个清理周期地进行存储器的存储器清理;
识别作为响应于存储器清理来自存储器的区段的存取的结果的、存储器中符号的可纠正错误;
跨多个清理周期地进行分析,其中进行分析包含:
确定是否对符号的至少两个符号的每一个已经识别了至少一个可纠正错误;
确定至少两个符号的至少一个符号是否含有超过阈值的可纠正错误;以及
响应于确定至少一个其它符号含有超过阈值的可纠正错误,确定符号的至少一个其它符号是否含有超过阈值的可纠正错误;以及
响应于确定对至少两个符号的每一个已经识别了至少一个可纠正错误、确定至少两个符号的至少一个符号含有超过阈值的可纠正错误、和确定至少一个其它符号含有超过阈值的可纠正错误,进行包括所述存储器的区段的存储器的至少一个修复。
8.如权利要求7所述的方法,进一步包含在进行分析期间确定第一其它符号和第二其它符号含有超过阈值的可纠正错误,其中进行存储器的至少一个修复包含:
针对至少一个符号、第一其它符号、和第二其它符号,根据可纠正错误的数量确定至少一个符号、第一其它符号、和第二其它符号之间的次序;
对于存储至少一个符号、第一其它符号、和第二其它符号之间含有最多可纠正错误的符号的存储器芯片,用备用存储器芯片替换存储器的所述存储器芯片;
对于存储至少一个符号、第一其它符号、和第二其它符号之间含有次多可纠正错误的符号的存储器芯片,进行存储器的芯片宽度纠错码(ECC)高速缓存行修复;以及
对于至少一个符号、第一其它符号、和第二其它符号之间含有第三多可纠正错误的符号,进行存储器的符号宽度ECC高速缓存行修复。
9.如权利要求7所述的方法,进一步包含:
跨多个清理周期的不同清理周期地进行存储器的不同存储器清理;
对于所述不同清理周期,识别作为响应于存储器清理来自所述存储器的区段的存取的结果的、限定在高速缓存的高速缓存行中的符号的可纠正错误;
跨多个清理周期地进行不同的分析,其中进行不同的分析包含:
跨多个清理周期地确定符号的不同符号是否含有超过阈值的可纠正错误,并且在以前进行的分析中是否未被识别出来;以及
响应于确定不同符号含有超过阈值的可纠正错误,进行包括所述存储器的区段的存储器的不同修复,其中进行不同修复包含在至少一个修复期间进行以前未进行过的ECC高速缓存行修复。
10.如权利要求7所述的方法,其中所述存储器的区段包含存储器的列。
11.一种修复存储器的装置,其包含:
配置成跨多个清理周期的一个清理周期地进行存储器的存储器清理的部件;
配置成对于所述清理周期,识别作为响应于存储器清理来自存储器的区段的存取的结果的、限定在通信地与存储器耦合的高速缓存的高速缓存行中的符号的可纠正错误的部件;
配置成利用对于所述清理周期识别的符号的可纠正错误更新表格的部件,其中所述表格被配置成存储跨多个清理周期的符号的可纠正错误;
配置成对跨其数据仍然存储在表格中的多个清理周期的符号进行表格分析的部件,其包含:
配置成确定对符号的至少两个符号的每一个是否已经识别了至少一个可纠正错误的部件;
配置成确定至少两个符号的至少一个符号是否含有超过阈值的可纠正错误的部件;以及
配置成响应于确定至少一个其它符号含有超过阈值的可纠正错误,确定符号的至少一个其它符号是否含有超过阈值的可纠正错误的部件;以及
配置成响应于确定对至少两个符号的每一个已经识别了至少一个可纠正错误、确定至少两个符号的至少一个符号含有超过阈值的可纠正错误、和确定至少一个其它符号含有超过阈值的可纠正错误,进行包括所述存储器的区段的存储器的至少一个修复的部件。
12.如权利要求11所述的装置,其中配置成确定至少一个其它符号含有超过阈值的可纠正错误的部件包含:配置成在进行分析期间确定第一其它符号和第二其它符号含有超过阈值的可纠正错误的部件。
13.如权利要求12所述的装置,其中配置成进行存储器的至少一个修复的部件包含:
配置成针对至少一个符号、第一其它符号、和第二其它符号,根据可纠正错误的数量确定至少一个符号、第一其它符号、和第二其它符号之间的次序的部件;
配置成对于存储至少一个符号、第一其它符号、和第二其它符号之间含有最多可纠正错误的符号的存储器芯片,用备用存储器芯片替换存储器的所述存储器芯片的部件;
配置成对于存储至少一个符号、第一其它符号、和第二其它符号之间含有次多可纠正错误的符号的存储器芯片,进行存储器的芯片宽度纠错码(ECC)高速缓存行修复的部件;以及
配置成对于至少一个符号、第一其它符号、和第二其它符号之间含有第三多可纠正错误的符号,进行存储器的符号宽度ECC高速缓存行修复的部件。
14.如权利要求11所述的装置,其中配置成确定至少一个其它符号含有超过阈值的可纠正错误的部件包含:配置成在分析期间确定只有一个其它符号含有超过阈值的可纠正错误的部件,其中配置成进行存储器的至少一个修复的部件包含:
配置成针对至少一个符号和只有一个其它符号,根据可纠正错误的数量确定至少一个符号和只有一个其它符号之间的次序的部件;
配置成对于存储至少一个符号和只有一个其它符号之间含有最多可纠正错误的符号的存储器模块,用备用存储器模块替换存储器的所述存储器模块的部件;以及
配置成对于至少一个符号和只有一个其它符号之间含有次多可纠正错误的符号,进行对存储该符号的存储器芯片的存储器的芯片宽度纠错码(ECC)高速缓存行修复、和存储器的符号宽度ECC高速缓存行修复中的至少一个的部件。
15.如权利要求14所述的装置,进一步包含:
配置成跨多个清理周期的不同清理周期地进行存储器的不同存储器清理的部件;
配置成对于所述不同清理周期,识别作为响应于存储器清理来自所述存储器的区段的存取的结果的、限定在高速缓存的高速缓存行中的符号的可纠正错误的部件;
配置成利用对于所述不同清理周期识别的符号的可纠正错误更新表格的部件;
配置成对跨多个清理周期的符号进行表格的不同分析的部件,其中配置成进行不同分析的部件包含:
配置成跨多个清理周期地确定符号的不同符号是否含有超过阈值的可纠正错误并且在以前进行的分析中是否未被识别出来的部件;以及
配置成响应于确定不同符号含有超过阈值的可纠正错误,进行包括所述存储器的区段的存储器的不同修复的部件,其中进行不同修复包含在至少一个修复期间进行以前未进行过的ECC高速缓存行修复。
16.一种修复存储器的装置,其包含:
配置成跨多个清理周期的一个清理周期地进行存储器的存储器清理的部件;
配置成识别作为响应于存储器清理来自存储器的区段的存取的结果的、存储器中的符号的可纠正错误的部件;
配置成跨多个清理周期地进行分析的部件,其中所述分析包含跨多个清理周期的至少两个符号是否含有至少一个可纠正错误的确定;以及
配置成响应于跨多个清理周期的至少两个符号含有至少一个可纠正错误的确定,进行包括所述存储器的区段的存储器的至少一个修复的部件。
17.如权利要求16所述的装置,其中配置成确定跨多个清理周期的至少两个符号是否含有至少一个可纠正错误的部件包含:
配置成确定是否对符号的至少两个符号的每一个已经识别了至少一个可纠正错误的部件;
配置成确定至少两个符号的至少一个符号是否含有超过阈值的可纠正错误的部件;以及
配置成响应于至少一个符号含有超过阈值的可纠正错误的确定,确定符号的至少一个其它符号是否含有超过阈值的可纠正错误的部件。
18.如权利要求17所述的装置,其中配置成进行至少一个修复的部件包含:
配置成响应于对至少两个符号的每一个已经识别了至少一个可纠正错误的确定、至少两个符号的至少一个符号含有超过阈值的可纠正错误的确定、和至少一个其它符号含有超过阈值的可纠正错误的确定,进行包括所述存储器的区段的存储器的至少一个修复的部件。
19.如权利要求16所述的装置,其中配置成进行至少一个修复的部件包含:配置成进行包括所述存储器的区段的存储器的至少两个修复的部件,其中至少两个修复包含存储器调整修复、芯片标志修复和符号标记修复的至少两个。
20.如权利要求16所述的装置,其中配置成确定跨多个清理周期的至少两个符号含有至少一个可纠正错误的部件包含:配置成对多个清理周期的至少两个相继清理周期确定至少两个符号的每一个超过阈值的部件。
21.如权利要求16所述的装置,其中所述存储器的区段包含存储器的列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/171,675 | 2011-06-29 | ||
US13/171,675 US8640006B2 (en) | 2011-06-29 | 2011-06-29 | Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102855941A true CN102855941A (zh) | 2013-01-02 |
CN102855941B CN102855941B (zh) | 2016-04-20 |
Family
ID=47355336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210225984.4A Active CN102855941B (zh) | 2011-06-29 | 2012-06-29 | 基于多符号多清理周期分析的抢先存储器修复方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8640006B2 (zh) |
CN (1) | CN102855941B (zh) |
DE (1) | DE102012210232B4 (zh) |
GB (1) | GB2501520B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106463179A (zh) * | 2014-04-16 | 2017-02-22 | 英特尔公司 | 利用存储器控制器处理数据错误事件的方法、装置和系统 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8640006B2 (en) | 2011-06-29 | 2014-01-28 | International Business Machines Corporation | Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis |
CN104246898B (zh) * | 2012-05-31 | 2017-03-22 | 慧与发展有限责任合伙企业 | 局部错误检测和全局错误纠正 |
US8904250B2 (en) * | 2013-02-14 | 2014-12-02 | Micron Technology, Inc. | Autorecovery after manufacturing/system integration |
US10372551B2 (en) * | 2013-03-15 | 2019-08-06 | Netlist, Inc. | Hybrid memory system with configurable error thresholds and failure analysis capability |
US9430324B2 (en) | 2013-05-24 | 2016-08-30 | Rambus Inc. | Memory repair method and apparatus based on error code tracking |
US9898365B2 (en) * | 2013-07-31 | 2018-02-20 | Hewlett Packard Enterprise Development Lp | Global error correction |
US9116702B2 (en) | 2013-11-21 | 2015-08-25 | International Business Machines Corporation | Computer memory power management |
US9594689B2 (en) | 2015-02-09 | 2017-03-14 | International Business Machines Corporation | Designated cache data backup during system operation |
KR102374202B1 (ko) | 2015-05-26 | 2022-03-14 | 쑤저우 레킨 세미컨덕터 컴퍼니 리미티드 | 광학 렌즈, 조명 모듈 및 이를 구비한 라이트 유닛 |
US10353669B2 (en) | 2016-09-02 | 2019-07-16 | International Business Machines Corporation | Managing entries in a mark table of computer memory errors |
US10297335B2 (en) | 2016-09-02 | 2019-05-21 | International Business Machines Corporation | Tracking address ranges for computer memory errors |
US10338999B2 (en) | 2016-09-02 | 2019-07-02 | International Business Machines Corporation | Confirming memory marks indicating an error in computer memory |
US10304560B2 (en) | 2016-09-02 | 2019-05-28 | International Business Machines Corporation | Performing error correction in computer memory |
US10978169B2 (en) * | 2017-03-17 | 2021-04-13 | Xerox Corporation | Pad detection through pattern analysis |
KR20180106494A (ko) * | 2017-03-20 | 2018-10-01 | 에스케이하이닉스 주식회사 | 반도체장치 |
KR102243582B1 (ko) * | 2017-04-24 | 2021-04-23 | 에스케이하이닉스 주식회사 | 반도체장치 |
KR102506507B1 (ko) * | 2018-01-19 | 2023-03-07 | 삼성전자주식회사 | 통신 시스템에서 신호를 송/수신하는 장치 및 방법 |
US11074126B2 (en) * | 2018-07-12 | 2021-07-27 | Micron Technology, Inc. | Methods for error count reporting with scaled error count information, and memory devices employing the same |
KR20220039432A (ko) | 2020-09-22 | 2022-03-29 | 삼성전자주식회사 | 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040030957A1 (en) * | 2002-08-12 | 2004-02-12 | Sitaram Yadavalli | Various methods and apparatuses to track failing memory locations to enable implementations for invalidating repeatedly failing memory locations |
CN101147204A (zh) * | 2006-01-24 | 2008-03-19 | 爱德万测试株式会社 | 测试装置以及选择装置 |
WO2011002656A1 (en) * | 2009-06-29 | 2011-01-06 | Sandisk Corporation | System and method of tracking error data within a storage device |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2289779B (en) | 1994-05-24 | 1999-04-28 | Intel Corp | Method and apparatus for automatically scrubbing ECC errors in memory via hardware |
US6279128B1 (en) | 1994-12-29 | 2001-08-21 | International Business Machines Corporation | Autonomous system for recognition of patterns formed by stored data during computer memory scrubbing |
US6035436A (en) | 1997-06-25 | 2000-03-07 | Intel Corporation | Method and apparatus for fault on use data error handling |
US7134069B1 (en) | 1999-06-16 | 2006-11-07 | Madrone Solutions, Inc. | Method and apparatus for error detection and correction |
US7062704B2 (en) | 2001-04-30 | 2006-06-13 | Sun Microsystems, Inc. | Storage array employing scrubbing operations using multiple levels of checksums |
US7272773B2 (en) | 2003-04-17 | 2007-09-18 | International Business Machines Corporation | Cache directory array recovery mechanism to support special ECC stuck bit matrix |
US7055003B2 (en) | 2003-04-25 | 2006-05-30 | International Business Machines Corporation | Data cache scrub mechanism for large L2/L3 data cache structures |
US7320100B2 (en) | 2003-05-20 | 2008-01-15 | Cray Inc. | Apparatus and method for memory with bit swapping on the fly and testing |
US7509560B2 (en) | 2003-12-29 | 2009-03-24 | Intel Corporation | Mechanism for adjacent-symbol error correction and detection |
US7100004B2 (en) | 2004-04-06 | 2006-08-29 | International Business Machines Corporation | Method for scrubbing regions in central storage |
US7246269B1 (en) | 2004-05-05 | 2007-07-17 | Advanced Micro Devices, Inc. | Efficient memory check architecture and method |
US7496823B2 (en) | 2005-03-16 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Hardware based memory scrubbing |
US20070089032A1 (en) * | 2005-09-30 | 2007-04-19 | Intel Corporation | Memory system anti-aliasing scheme |
US8065573B2 (en) | 2007-03-26 | 2011-11-22 | Cray Inc. | Method and apparatus for tracking, reporting and correcting single-bit memory errors |
US7661045B2 (en) | 2007-12-19 | 2010-02-09 | International Business Machines Corporation | Method and system for enterprise memory management of memory modules |
US20090307523A1 (en) | 2008-06-06 | 2009-12-10 | Allison Brian D | System Performance Through Invalidation of Speculative Memory Scrub Commands |
US8122308B2 (en) | 2008-06-25 | 2012-02-21 | Intel Corporation | Securely clearing an error indicator |
US9170879B2 (en) | 2009-06-24 | 2015-10-27 | Headway Technologies, Inc. | Method and apparatus for scrubbing accumulated data errors from a memory system |
US8103900B2 (en) | 2009-07-28 | 2012-01-24 | International Business Machines Corporation | Implementing enhanced memory reliability using memory scrub operations |
US8640006B2 (en) | 2011-06-29 | 2014-01-28 | International Business Machines Corporation | Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis |
-
2011
- 2011-06-29 US US13/171,675 patent/US8640006B2/en active Active
-
2012
- 2012-04-27 GB GB1207326.8A patent/GB2501520B/en active Active
- 2012-06-18 DE DE102012210232.9A patent/DE102012210232B4/de active Active
- 2012-06-29 CN CN201210225984.4A patent/CN102855941B/zh active Active
- 2012-08-21 US US13/590,998 patent/US8689080B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040030957A1 (en) * | 2002-08-12 | 2004-02-12 | Sitaram Yadavalli | Various methods and apparatuses to track failing memory locations to enable implementations for invalidating repeatedly failing memory locations |
CN101147204A (zh) * | 2006-01-24 | 2008-03-19 | 爱德万测试株式会社 | 测试装置以及选择装置 |
WO2011002656A1 (en) * | 2009-06-29 | 2011-01-06 | Sandisk Corporation | System and method of tracking error data within a storage device |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106463179A (zh) * | 2014-04-16 | 2017-02-22 | 英特尔公司 | 利用存储器控制器处理数据错误事件的方法、装置和系统 |
CN106463179B (zh) * | 2014-04-16 | 2019-11-19 | 英特尔公司 | 利用存储器控制器处理数据错误事件的方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
DE102012210232B4 (de) | 2023-06-29 |
US20130007541A1 (en) | 2013-01-03 |
US20130007542A1 (en) | 2013-01-03 |
DE102012210232A1 (de) | 2013-01-03 |
CN102855941B (zh) | 2016-04-20 |
GB201207326D0 (en) | 2012-06-13 |
GB2501520B (en) | 2015-10-07 |
GB2501520A (en) | 2013-10-30 |
US8640006B2 (en) | 2014-01-28 |
US8689080B2 (en) | 2014-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102855941A (zh) | 基于多符号多清理周期分析的抢先存储器修复方法和系统 | |
US10147500B2 (en) | Hybrid read disturb count management | |
US10540115B2 (en) | Controller adaptation to memory program suspend-resume | |
CN102163458B (zh) | 半导体存储器装置 | |
CN102194527B (zh) | 半导体存储器装置 | |
US10943669B2 (en) | Memory system and method for optimizing read threshold | |
US20160283138A1 (en) | Memory system and operating method thereof | |
US8347165B2 (en) | Self-timed error correcting code evaluation system and method | |
US9733861B2 (en) | Data temperature profiling by smart counter | |
CN102203717A (zh) | 固态驱动器优化器 | |
US10572342B2 (en) | Memory system with LDPC decoder and operating method thereof | |
US11036627B2 (en) | Self-management memory system and operating method thereof | |
CN104115231A (zh) | 用于确定对存储器阵列的访问的方法、装置和系统 | |
US20220261182A1 (en) | Superblock linkage systems and method for asymmetric die packages | |
US20170024333A1 (en) | High performance host queue monitor for pcie ssd controller | |
CN106294128B (zh) | 一种导出报表数据的自动化测试方法及装置 | |
US20110099461A1 (en) | Data integrity units in nonvolatile memory | |
US11163489B2 (en) | Workload clusterization for memory system and method of executing the same | |
CN109493910A (zh) | 微控制器及其操作方法以及具有该微控制器的存储系统 | |
CN102915207A (zh) | 固态储存装置及其数据储存方法 | |
JP6045351B2 (ja) | 検証装置及び検証方法 | |
CN110543434B (zh) | Nand快闪器件、存储表管理方法、设备和存储介质 | |
US20210223987A1 (en) | Controller with smart scheduling and method of operating the controller | |
CN109558265B (zh) | 具有特征增强的存储器系统及其操作方法 | |
CN110100236A (zh) | 数据读取方法及闪存设备 |
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 |