CN106463179B - 利用存储器控制器处理数据错误事件的方法、装置和*** - Google Patents
利用存储器控制器处理数据错误事件的方法、装置和*** Download PDFInfo
- Publication number
- CN106463179B CN106463179B CN201480077247.1A CN201480077247A CN106463179B CN 106463179 B CN106463179 B CN 106463179B CN 201480077247 A CN201480077247 A CN 201480077247A CN 106463179 B CN106463179 B CN 106463179B
- Authority
- CN
- China
- Prior art keywords
- memory
- processing routine
- processing
- routine process
- spare
- 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
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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- 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
- G11C2029/0409—Online test
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Hardware Redundancy (AREA)
Abstract
用于提供针对包括存储器的平台的错误检测和校正的技术和机制,所述存储器包括一个或多个备用存储器分段。在实施例中,存储器控制器执行第一清洗操作,其包括检测多个当前活动存储器分段中的错误。针对一个或多个存储器分段执行额外的巡检清洗,同时存储器分段中的每个可用于激活作为替代存储器分段。在另一实施例中,如果基于活动分段清洗检测到不可校正的错误事件,则用信号通知第一处理程序过程(但不是第二处理程序过程);而如果基于备用分段清洗检测到不可校正的错误事件,则用信号通知第二处理程序过程(但不是第一处理程序过程)。在第一处理程序过程和第二处理程序过程当中,仅用信号通知第一处理程序过程导致平台的崩溃事件。
Description
技术领域
本发明的实施例总体上涉及计算机存储器领域,并且更具体地但非排它地涉及处理在存储器设备中的错误。
背景技术
在现今的计算世界中,维持好的计算机***可靠性和工作时间通常是重要的甚至是强制性的。为了维持重大的计算机工作时间,***设计者建立了可靠性、可用性、可服务性、可管理性(RASM)特征,以改善整体***可靠性和可用性。因此,通常的是发现在这种***中不同级别处采用的各种冗余程度、错误校正、错误检测和错误包含技术。
计算机***故障的最常见类型之一归因于***存储器错误。存储器设备易受例如暂态(或软)错误之类的错误的影响。如果这些错误不被正确处理,则它们可能会引起计算***故障。因此,存储器子***(尤其是双列直插式存储器模块或DIMM)对此受到特别的注意。例如,纠错码(ECC)形式的冗余信息或其它这种纠错信息可以用于存储器清洗操作,以改善整体的***可靠性。需求存储器清洗是一种错误检测/校正技术,其中可以在操作过程中检测存储器分段中的错误(无论是一位或多位错误),以服务主机操作***的请求来访问存储器分段。通过对比,已知为巡检存储器清洗的另一RASM技术针对之前的错误前摄地扫描存储器分段,或者以其他方式不依赖于任何这种主机操作***请求来访问存储器分段而扫描存储器分段。
另一RAS技术(已知为“存储器备用”)在使用中的(或者“活动的”)存储器分段发生实际的或预期的未来错误时分配一个或多个存储器分段,每个存储器分段作为备用分段可用于服务。当误差检测或其它机制指示在使用中的存储器分段的这种故障时,备用存储器分段被分配为充当已故障的/正发生故障的分段的后继(替代)。将***存储器映射更新到与后续分段的存储器位置相关联的地址,例如,地址范围,其中先前的这种地址被映射以多方面地识别已故障的/正发生故障的活动分段的相应位置。
附图说明
通过示例而非限制的方式在附图的图中示出了本发明的各个实施例,其中:
图1是根据实施例示出用于提供对存储器分段的访问的计算机平台的元件的功能框图。
图2是根据实施例示出用于用信号通知存储器错误事件的存储器控制器的元件的功能框图。
图3是根据实施例示出用于调用操作来处理存储器错误事件的方法的元素的流程图。
图4A、4B是根据实施例分别示出用于处理存储器错误事件的方法的元素的流程图。
图4C是根据实施例示出执行的存储器分段分配的元件的功能框图。
图5A、5B是根据实施例分别示出用于处理存储器错误事件的方法的元素的流程图。
图5C是根据实施例示出执行的存储器分段分配的元件的功能框图。
图6是根据实施例示出用于控制存储器的计算机***的元件的功能框图。
图7是根据实施例示出用于控制存储器的移动平台的元件的功能框图。
具体实施方式
这里讨论的实施例多方面地提供了在包括一个或多个备用存储器分段的平台中的错误检测。如本文所使用的,“存储器分段”指的是在一个或多个方面可以独立于类似的存储器硬件单元而操作的存储器硬件的单元。存储器分段可以包括排(rank)、组(bank)或其它存储器硬件部件,例如,其中所述部件包括多个不同寻址的存储器位置。存储器分段可以包括或耦合到专用于通过在该分段和存储器控制器之间耦合的总线或其它互连只耦合到该分段而不是一个或多个其它存储器分段的接口硬件。可替代地或另外地,存储器分段可以包括专用芯片支持输入、地址解码器或其它逻辑。本文关于针对各个存储器排的各种实现存储器清洗和/或存储器备用讨论了特定实施例的特征。然而,这种讨论可以扩展为额外地或可替代地施加到任意各种其它类型的存储器分段。
例如,可以基于主机操作***(OS)或其它代理当前是否能够访问给定存储器分段,而将所述存储器分段分类为活动的或备用的。备用分段可用于最终激活以充当已经被识别为已故障分段或正发生故障分段的另一存储器分段的替代。为了简洁起见,这种分段在本文中被称作“已故障/正发生故障的”。可以根据不同实施例而多方面地执行清洗操作以检测(以及在一些实施例中,校正)在存储器的一个或多个分段中的错误。特定实施例并不局限于通过其来多方面地计算、存储和后续取回ECC或其它这种误差校正信息以用于执行个体错误检测计算的特定方式。这些方式的特定细节采纳传统的误差检测/校正技术和机制,并不在此进行讨论以避免模糊这些实施例的特征。
可以基于占位符数据(以及对应的错误校正信息),来执行备用存储器分段的清洗,存储器控制器和/或存储器设备可以例如独立于主机OS或其它请求者代理而将所述占位符数据例如存储到备用存储器分段中。在备用存储器分段的这种清洗期间,备用分段可能对主机OS或访问当前活动的存储器分段的其它这种请求者代理不可见(例如,未向其登记)。
虽然现代存储器采用纠错码(ECC)来检测和/或校正单位和双位错误,但是更高阶多位错误仍对***可靠性和可用性产生了重要的问题。错误检测机制通常包括用于将错误分类为可校正错误或不可校正错误之一的功能。常规的错误处理技术通过发起对操作***的机器检查操作,而多方面地响应于存储器中的不可校正错误。这种操作包括执行***范围的关机。
一般而言,常规存储器清洗技术甚至不支持清洗备用存储器,更不用说提供针对活动分段和备用分段的不同的各种错误处理机制。相比之下,特定实施例提供基于与检测出的错误事件相关联的存储器分段当前是被指定活动分段还是备用分段来用信号通知不同的处理程序过程。例如,针对活动分段检测的错误可以导致机器检查异常或异常处理程序的其它这种调用。相比之下,与备用分段相关联的错误事件可以导致用信号通知不同类型的事件处理程序(例如,中断处理程序)。在实施例中,备用分段错误事件导致在处理器的***管理模式期间执行的事件处理操作,例如,然而活动分段错误事件反而可以导致在处理器的不同模式期间由主机OS执行的操作。另外或可替代地,活动分段错误事件可以导致引起平台范围的重置、崩溃或其它这种“蓝屏”事件的事件处理操作。备用分段错误事件可以反而允许完成事件处理操作,而不依赖于重新启动或以其它方式重启平台执行软件的任何需要。
图1示出了根据实施例实现的***100的元件。***100表示任意数量的计算***,例如,包括服务器、台式计算机、膝上型计算机、移动设备、智能电话、游戏设备等,其可以多方面地支持错误检测功能和存储器备用功能,如本文所讨论的。
***100可以包括存储器子***120,其经由一个或多个数据、命令、地址和/或其它信号线(如图示互连125表示)耦合到存储器控制器110,例如,当存储器控制器110至少部分地控制在请求者和存储器子***120之间的信息转移。例如,这种请求者可以是处理器150(例如,中央处理单元、图形处理器、服务处理器、处理器核心和/或其它),或者可替代地可以是输入/输出设备(例如,快速***部件互连(PCI)设备)、存储器本身、或者是***100的请求访问存储器的任意其它元件。在一些实施例中,存储器控制器110处于与包括请求者的集成电路(IC)管芯相同的集成电路(IC)管芯上。
存储器子***120可以包括多种类型的存储器分段中的任一种,例如,其具有各自的存储器单元行,其中可经由字线或等价物访问数据。在一个实施例中,存储器子***120包括动态随机存取存储器(DRAM)技术,例如其根据双数据速率(DDR)规范、低电力DDR(LPDDR)规范或其它这种存储器标准进行操作。存储器子***120可以是***100的较大存储器设备(未示出)内的集成电路封装。例如,存储器子***120可以是存储器模块的DRAM设备,例如双列直插式存储器模块(DIMM)。
存储器控制器110可以包括逻辑(例如,包括多个硬件逻辑和/或执行软件逻辑中的任一个),以经由互连125发送命令,从而多方面地读取、写入或以其它方式访问存储器子***120的一个或多个分段。一个或多个这种命令可以由存储器控制器110根据用于访问存储器的一种或多种常规技术来发送。这种常规技术的特定细节不限于特定实施例,并在本文中不进行描述以避免模糊这些实施例。
通过示例而非限制的方式,存储器控制器110可以包括用于提供命令/地址信令功能的逻辑,所述功能例如符合双数据速率(DDR)规范的一些或全部要求,所述DDR规范例如2008年4月的DDR3同步动态随机存取存储器(SDRAM)电子器件工程联合委员会(JEDEC)标准JESD79-3C,2012年9月的DDR4SDRAM JEDEC标准JESD79-4,或其它这种规范。
在图示实施例中,存储器子***120包括分段130,其在给定时间是当前“活动的”,即被分配用于代表一个或多个请求者存储信息。这种分配至少部分地由存储器控制器110管理。在给定时间,分段130可以包括特定多个分段,如由图示分段132a、…、132n表示的,其中活动的分段130的群体可以随着分段在存储器子***120的操作期间被多方面地激活(例如,根据作为备用分段可用而转变)或停用(例如,禁用)而改变。
存储器控制器110和存储器子***120操作以实现错误检测/校正功能。例如,存储器控制140可以包括存储器清洗器逻辑114,包括硬件和/或执行软件的多种组合中的任一种,其用于多方面地执行要求清洗和/或巡检清洗活动分段130的当前群体。通过示例并非限制的方式,存储器子***120在存储器控制器110的控制下,可以多方面地在分段130中的不同分段中存储各自的数据位和对应的错误检查位,例如,纠错码(ECC)位。基于这种错误检查位,存储器清洗器逻辑114可以执行运算以确定先前存储于存储器子***120中的对应数据现在是否处于损坏状态。
存储器控制器110还可以包括存储器备用器逻辑112,包括硬件和/或执行软件的多种组合中的任一种,以例如响应于存储器清洗器逻辑114来识别活动分段130中的给定的一个活动分段是否被分类为已故障(和/或正发生故障)的分段。例如,基于来自存储器清洗器逻辑114的一个或多个指示,存储器备用器逻辑112可以针对活动分段130中的给定的一个活动分段检测一些阈值错误事件,例如,包括达到阈值数量的错误,达到阈值频率的错误等,以指示需要以一个或多个备用分段140中的一个来替换所述分段。
响应于检测到某阈值错误事件,存储器备用器逻辑112可以用信号通知事件处理器过程,例如,通过处理器150执行或待执行的第一处理程序152,以实现、跟踪或以其他方式支持存储器备用操作,从而从活动分段130的当前群体移除已故障的/正发生故障的分段,并将当前一个或多个备用分段140中的一个转变到活动分段130的群体中。第一处理程序152例如可以包括主机操作***(OS)过程,例如用于执行机器检查操作的OS过程。
在实施例中,存储器清洗器逻辑114包括额外(或相同)的逻辑,以进一步执行一个或多个分段140的当前群体的巡检清洗,所述分段140中的每一个都能够用于在将活动分段的分段识别为已故障或正发生故障的情况下充当备用。例如,清洗一个或多个备用分段140可以包括针对活动分段130执行清洗的特征。
存储器备用器逻辑112还可以响应于当前备用分段142的这种巡检清洗来执行操作,以检测备用分段142是否被分类为已故障的/正发生故障的。例如,响应于检测到阈值错误事件,存储器备用器逻辑112可以用信号通知一些其它事件处理程序过程,例如,通过处理器150执行的或将执行的第二处理程序154,来实现、跟踪或以其他方式支持从一个或多个备用分段140的当前群体移除已故障的/正发生故障的分段。第二处理程序154例如可以包括***管理模式(SMM)的中断处理程序过程,例如,当将SMM模式与处理器150的用于执行实现第一处理程序152的通用主机OS的替代模式区分时。
图2根据实施例示出用于执行存储器备用和错误检测的存储器控制器200的元件。存储器控制器200可以包括存储器控制器110的一个或多个特征。例如,存储器控制器200包括存储器备用器逻辑210和存储器清洗器逻辑230,其可以分别提供存储器备用器逻辑112和存储器清洗器逻辑114的一些或全部功能。
在实施例中,存储器清洗器逻辑230包括用于多方面地计算存储于存储器的分段(未示出)中的数据是否包括错误的电路逻辑,其通过图示的错误检测逻辑232表示。在一些实施例中,存储器清洗器逻辑还可以包括错误校正逻辑234,以多方面地校正一些或全部这种错误。错误检测逻辑232和错误校正逻辑234的操作可以包括执行采纳常规错误检测/校正技术的一个或多个过程。这种常规技术的特定细节不局限于一些实施例中,并在本文中不做讨论以避免模糊这些实施例的各种特征。
存储器清洗器逻辑210可以包括坏分段检测逻辑212、坏分段查找和替代(L/R)逻辑220以及分段重映射逻辑222。坏分段检测可以以多种方式实现。例如,坏分段检测逻辑212可以基于与存储器清洗器逻辑230的交换,跟踪在存储器事务期间返回坏数据的存储器的分段。例如,对存储器中地址的存储器请求可以到达存储器控制器200。然后将该请求发送给***存储器(未示出),并且存储器可以返回ECC信息。存储器清洗器逻辑230的错误检测逻辑232可以评估ECC信息,以确定在目标地址处的存储器分段处是否存在事务的错误。如果已经发生了错误,则坏分段检测逻辑212可以跟踪事务和结果。可替代地或另外,坏分段检测逻辑212可以跟踪在清洗存储器分段(例如,活动分段或备用分段)期间返回的坏数据。在将给定的错误识别为可校正的(例如,给定对存储器控制器可用的错误校正机制),则存储器清洗器逻辑230的错误校正逻辑234可以执行运算以生成所请求数据的修正(即,校正)版本。
在实施例中,坏分段检测逻辑212可以包括或以其它方式访问错误阈值214,例如,包括最大阈值错误数、最大阈值错误数、阈值错误类型和/或其它,其被访问以确定当前考虑的特定分段是否违反了错误阈值214。当表示出这种违反错误阈值214时,可以执行存储器备用。通过示例而非限制的方式,当将活动的分段识别为已故障的/正发生故障的,则分段L/R逻辑220可以执行操作,以识别要针对服务被激活作为替代分段的备用分段。在一些实施例中,分段重映射逻辑222可以确定存储器映射更新,其被实现以支持停用已故障的/正发生故障的活动分段和/或激活所选的备用分段。
检测已故障的或正发生故障的分段还可以包括存储器控制器的一些逻辑(由图示的处理程序调用逻辑224表示),向处理程序用信号通知将要执行事件处理操作。在实施例中,处理程序调用逻辑224根据检测到的已故障的/正发生故障的分段是活动分段还是备用分段而调用不同的处理程序。例如,基于已故障的/正发生故障的分段是活动的,处理程序调用逻辑224可以调用第一处理程序,而不是第二处理程序。相比之下,当已故障的/正发生故障的分段是备用分段时,处理程序调用逻辑224可以替代地调用第二处理程序,而不是第一处理程序。
图3根据实施例示出了用于控制存储器的方法300的元素。例如,当通过存储器控制器110执行方法300时,方法300可以被执行以管理存储器的分段,例如存储器子***120。
方法300可以包括,在310处,执行对多个(仅)活动的存储器分段的第一清洗。在310处执行的第一清洗可以包括要求清洗操作和/或巡检清洗操作。在实施例中,在310处的第一清洗包括对一些检测到的错误进行分类。例如,第一清洗可以包括将错误分类为可校正的或不可校正的。可替代地或另外,在310处的第一清洗可以包括确定是否已经发生了一些阈值错误事件,例如,除了或不同于任意不可校正的错误事件。
在320处,如果确定第一清洗检测到不可校正的错误,则方法300可以在330处用信号通知第一处理程序过程,以执行一个或多个事件处理程序操作。虽然特定实施例不局限于此,但第一处理程序可以由主机OS执行,例如,在主机处理器的通用模式期间。第一处理程序过程可以包括:例如,调用或以其他方式实现支持存储器备用的多种操作中的任一种。通过示例而非限制,第一处理程序过程可以包括或导致以下中的一个或多个:用信号通知硬件错误以调用机器检查、重置机器(例如,“蓝屏”事件)、定位一个或多个高速缓存行、通知主机OS将对应于已故障的/正发生故障的分段的一个或多个存储器页面离线等。
如果在320处没有指示不可校正的错误事件,则方法300可以在340处执行对存储器的一个或多个备用排的巡检清洗。在另一实施例中,独立于在320处的评估而执行在340处的巡检清洗,例如,其中根据预定安排执行在340处的巡检清洗的一些或全部。类似于在310处的第一清洗,在340处的巡检清洗可以包括将错误分类为可校正的(或不可校正的),和/或检测一个或多个阈值错误事件的任何发生。
如果在350处确定在340处的巡检清洗检测到不可校正的错误,则方法300可以在360处用信号通知第二处理程序过程,以执行一个或多个事件处理程序操作。在一个实施例中,第一处理程序过程和第二处理程序过程当中的第一处理程序可以是响应于在350处检测到的不可校正错误而用信号通知的唯一过程。可替代地或另外,第一处理程序过程和第二处理程序过程中的第一处理程序过程可以是响应于在320处检测到的不可校正的错误而用信号通知的唯一处理程序过程。
虽然特定实施例并不局限于此,但是第二处理程序过程可以在处理器的SMM中执行。第二处理程序过程可以包括:例如,调用或以其他方式实现支持从可用的备用分段池中移除分段的多种操作中的任一种。通过示例而非限制的方式,第二处理程序过程可以包括或导致更新分段L/R逻辑220(或其它这种逻辑)的一个或多个,以反映已故障的/正发生故障的备用分段被禁用和/或不再可用。可替代地或另外,可以对已故障的/正发生故障的备用分段掉电、从后续巡检清洗移除或以其他方式与未来存储器***操作隔离。当在350处指示没有不可校正的错误时,方法300可以结束或可替代地进行到额外的操作(未示出),例如,其中方法300返回在310处的活动排清洗的另一执行。
在实施例中,响应于在350处检测到的错误而执行的任意操作可以独立于响应于在320处检测到的错误而执行一种类型的一个或多个操作。第一处理程序过程和第二处理程序过程彼此不包含,至少关于响应于针对备用分段的不可校正的错误事件、相对活动分段的不可校正的错误事件,第一处理程序过程和第二处理程序过程彼此不包含。例如,第一处理程序过程和第二处理程序过程当中,在320处识别到的不可校正的错误可以导致仅调用第一处理程序过程。可替代地或另外,在第一处理程序过程和第二处理程序过程当中,在350处识别到的不可校正的错误可以导致仅调用第二处理程序过程。给定的已故障的/正发生故障的分段的特定的活动状态相对备用状态可以是用于至少在第一处理程序过程和第二处理程序过程之间选择将调用该两个处理程序过程中的哪一个(例如,唯一一个)的“除……外(but for)”条件。
图4A根据实施例示出了用于控制存储器的方法400的元素。例如,方法400可以包括方法300的特征中的一些或全部。在实施例中,至少部分地通过作为硬件平台的部件操作的一个或多个存储器控制器110、200(或其它这种控制器逻辑),来执行方法400。
在实施例中,方法400包括:在410处,执行对平台存储器的活动排(或其它这种分段)进行清洗的操作,例如,如本文结合第一清洗310所讨论的。在图4C所示的序列480中,针对其中存储器包括八个当前活动排Rank0、…、Rank7的场景,阶段482的“清洗1”示出了这种清洗的一个例子。方法400在412处可以随后评估通过这种清洗(例如,在其期间)是否指示数据错误。如果在412处没有指示这种数据错误,则在422处进行另一评估关于是否已经完成活动排的清洗。如果没有完成清洗,则方法400可以在410处继续活动排清洗操作。否则,方法400可以开始转变到备用排清洗操作,如结合图4B的方法450在此所讨论的。
如果在412处通过评估指示数据错误,则在414处方法400可以确定检测到的错误是(否)是可校正的。如果在414处指示错误是不可校正的,则方法400可以在416处用信号通知平台的主机OS发生了硬件错误。在416处的信号通知例如可以包括用信号通知机器检查(或其它)异常,例如,如本文结合方法300的330处的信号通知所讨论的。处理这种异常可能包括或导致***崩溃、***重置或其它这种事件,其在实施例中结束方法400。
相反,如果在414处确定在412处指示的错误事件是可校正的,则方法400可以在418处执行错误校正运算以确定毁坏数据的校正版本。另外,方法400可以在420处确定在412处检测到的错误事件是否构成达到(例如,超过)特定错误阈值CE_th_A,例如阈值数、可校正错误的百分比和/或频率。CE_th_A的具体值(和/或类型)可以是先验约束,其能够根据具体实现细节而广泛地变化,且不受限于特定实施例。如果没有达到CE_th_A,则方法400可以返回到422处的评估是否已经完成活动排清洗。
当在420处确定出已经达到CE_th_A时,方法400可以在424处用信号通知事件处理程序代码,以执行支持存储器备用的操作。例如可以在方法400的后续递归期间(例如,在图4C所示的阶段484的“清洗3”期间(如,在清洗1之后))进行这种确定。在一些实施例中,在424处以信号通知的事件处理程序事件可以与在416处可能以其他方式用信号通知的事件相同。可替代地,可以用信号通知另一事件处理程序过程。通过示例而非限制的方式,可以用信号通知***管理中断,以供处理器转变到SMM,例如,包括转变离开主机OS执行的模式。在实施例中,在424处执行的信号通知引起错误处理固件或其它这种逻辑开始从评估、管理或以其他方式靶定活动排的操作转变成反而靶定一个或多个备用排的操作。
例如,在424处的信号通知可能导致或以其他方式先于在426处的评估备用排是否当前可用。当所有的原始的一个或多个备用排先前被激活并且没有向存储器子***添加替代备用排时,做出该评估。如果在426处确定没有备用排可用,则在428处可以向管理控制台或计算机软件的其它软件登记服务请求,例如提供在下一服务调用期间需要替换DIMM或其它存储器设备的通知。
相反,如果在426处确定备用排是可用的,则在430处开始排备用操作。在430处的排备用可以包括激活在426处识别出的备用排,并停用已故障的/正发生故障的排,针对其激活的备用将用作替代。在430处执行排备用之后,方法400可以登记服务请求,如结合方法450在本文讨论的。凭借提前执行的备用排清洗,例如,根据方法450,待激活的备用排准备好用于这种激活(其中备用排本身不是已故障的/正发生故障的排)。例如,序列480的存储器备用阶段486可以激活备用排Spare0使其充当替代活动排Rank0,其中,针对该激活执行了对Spare0的较早的清洗2巡检清洗来确认Spare0的适合性。
图4B示出了用于执行这种备用排清洗的方法450的元素。方法400、450可以是根据一个实施例的一种较大方法的不同部分。方法450可以包括:在460处,执行对平台存储器的(仅)一个或多个备用排的巡检清洗操作,例如,如本文结合方法300的340处执行的清洗所讨论的。这种巡检清洗的例子在序列480中由阶段482的“清洗2”(例如,在清洗1之后和/或在清洗3之前)表示,其中存储器仅包括单个备用排。方法450随后可以在462处评估通过这种巡检清洗是否指示数据错误。如果在462处没有指示这种数据错误,则在472处进行关于是否已经完成备用排巡检清洗的另一评估。如果尚未完成清洗,则方法450可以继续在460处的备用排清洗操作。否则,在一个实施例中,方法450可以返回到活动巡检清洗操作,例如方法400的在410处的那些操作。
如果在462处通过评估指示数据错误,则方法450可以在464处确定检测到的错误是(否)是可校正的。如果在464处指示错误是不可校正的,则方法450可以在474处禁用备用排使得备用排至少不能用作任意已故障的/正发生故障的活动排的将来替代。在474处的操作还可以包括设置一个或多个配置,来将备用排与一个或多个供应电压轨迹解耦,从而从将来备用排巡检清洗操作中排除该备用排,以禁用、门或以其他方式减少定时和/或其它。
相反,如果在464处确定在462处指示的错误事件是可校正的,则方法450可以在468处执行错误校正运算,以确定损坏数据的校正版本或用于数据的损坏版本的新的ECC。在468处的校正之后(或甚至之前或期间),方法450可以在470处确定在462处检测到的错误事件是否构成到达(例如,超过)某错误阈值CE_th_B,其可以包括CE_th_A或另一这种阈值。如果没有达到CE_th_B,则方法350可以返回在472处的评估是否已经完成备用排清洗。
当在470处确定已经到达CE_th_B时,方法450可以在474处执行操作以禁用备用排。另外,方法500可以在476处调用处理程序以登记服务请求,指示(例如)在下一服务调用期间需要替换DIMM或其它存储器设备。在实施例中,可以在各种条件下在不同时间多方面地执行在476处的操作,例如,登记替换包括如在420处检测到的已故障的/正发生故障的活动排的存储器设备的需要,或者可替代地,登记替换包括如在464或在470处检测到的已故障的/正发生故障的备用排的存储器设备的需要。随后,方法450在一个实施例中可以返回活动的巡检清洗操作,例如在方法400的410处的那些操作。
图5A示出了根据实施例的用于控制存储器的另一方法500的元素。例如,方法500可以包括方法300的一些或全部特征。在实施例中,执行方法500来控制存储器子***,其包括多个活动排(或其它分段)以及多个备用排(分段)。
在实施例中,方法500包括:在510处,执行清洗平台存储器的活动排的操作,例如,如本文结合第一清洗310讨论的。在图5C中示出的序列590的阶段592示出了这种清洗的例子,用于存储器包括八个当前活动排的场景。方法500可以随后在512处评估由这种清洗(例如,在清洗期间)是否指示数据错误。如果在512处没有指示这种数据错误,则方法500循环回在510处恢复活动排清洗。否则,方法500可以在514处确定检测到的错误是(否)是可校正的。如果在514处指示错误是不可校正的,则例如方法500可以在516处与平台的主机OS通信硬件错误或其它信号以开始机器检查。相反,如果在514确定在512处指示的错误事件是可校正的,则方法500在518处可以执行错误校正运算,以确定毁坏数据的校正版本。另外,方法500可以在520处确定是否已经达到某错误阈值CE_th_X(例如,CE_th_A)。如果尚未达到CE_th_X,则方法500可以循环回到恢复在510处的活动排清洗。
当在520处确定出已经达到CE_th_X时,方法500可以在524处用信号通知事件处理程序,其用于执行存储器备用操作或为这种存储器备用操作的可能性作准备。通过示例而非限制的方式,可以用信号通知***管理中断,以供处理器转变到SMM,例如,包括转变离开主机OS执行的模式。在实施例中,在524处执行的信号通知可以使得错误处理固件或其它这种逻辑开始将处理器从评估、管理或以其他方式靶定活动排的操作转变成反而靶定一个或多个备用排的操作。例如,如序列590的阶段方法594所示出的,方法500可以将活动Rank0识别为已故障的/正发生故障的,并作为响应,转变到例如图5B的方法550的那些操作的操作。
图5B示出了用于执行备用排清洗的方法550的元素。方法500、550可以是根据一个实施例的一个较大方法的不同部分。在实施例中,方法550包括:在560处,确定是否存在备用排可用于评估和可能选作识别出的已故障的/正发生故障的排的替代。当没有可用的备用排时,方法550可以在580处调用处理程序或其它过程来登记服务请求,以指示替代一个或多个DIMM或其它存储器设备的需要,例如,提供新的活动排、新的备用排或两者。
当在560确定备用排可用于被评估时,方法500可以在562处将在560处检测到的备用排分配为被评估的当前备用排。方法500然后可以在564处执行对当前备用排的巡检清洗。在序列590中通过阶段594表示这种巡检清洗的例子,其中存储器包括备用排Spare0、Spare1,其中当前的活动Rank0已经被识别为已故障的/正发生故障的,并且其中针对巡检清洗选择了Spare0。方法550随后可以在566处评估通过这种巡检清洗是否指示数据错误。如果在566处没有指示这种数据错误,则在576处进行关于当前备用排的巡检清洗是否已经完成的另一评估。如果尚未完成清洗,则方法550可以在564处继续活动排清洗操作。否则,在一个实施例中,方法550可以在578处实现排备用,以激活当前备用排使其充当已故障的/正发生故障的排的替代(如方法500在520处检测到的排)。一个这种存储器备用的例子在序列590中由阶段596a示出,其中,备用排Spare0被激活以充当新的活动Rank0。
如果通过566处的评估指示数据错误,则方法550可以在568处确定检测到的错误是(否)是可校正的。如果在568处指示错误是不可校正的,则方法550可以在574处禁用当前备用排使得当前备用排至少不能用作任意已故障的/正发生故障的活动排的将来替代。在574处的操作还可以包括设置一个或多个配置,来将当前备用排与供应电压轨迹解耦,和/或从将来备用排巡检清洗操作排除当前备用排。在序列590中通过阶段596b(例如,阶段596a的替代)表示这种备用排禁用的例子,其中Spare0反而被识别为已故障的/正发生故障的排,并且随后将另一备用排Spare1分配为当前备用排以供评估。随后,方法500可以返回评估560另一备用排是否可以充当待评估的下一当前备用排。
相反,如果在568处确定在566处指示的错误事件是可校正的,则方法550可以在570处校正错误,并在572处确定已经达到一些错误阈值CE_th_Y(例如,CE_th_B)。当达到CE_th_Y时,方法550可以在574处执行操作以禁用备用排。否则,方法500可以进行到执行在576处的评估。序列590的阶段598示出场景,其中,在阶段596b之后,在578处的存储器备用使得备用排Spare1被激活以用作替代Rank0。
图6是在其中实现存储器访问的计算***的实施例的框图。***600表示根据本文描述的任意实施例的计算设备,并可以是膝上型计算机、台式计算机、服务器、游戏或娱乐控制***、扫描仪、复印机、打印机或其它电子设备。***600可以包括处理器620,其为***600提供处理、操作管理和执行指令。处理器620可以包括任意类型的微处理器、中央处理单元(CPU)、处理核心、或其它处理硬件,以为***600提供处理。处理器620控制***600的整体操作,并可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)等,或者这种设备的组合。
存储器子***630表示***600的主存储器,并提供对将由处理器620执行的代码或用于执行例程的数据值的临时存储。存储器子***630可以包括一个或多个存储器设备,例如只读存储器(ROM)、闪速存储器、各种随机存取存储器(RAM)中的一个或多个,或其它存储器设备,或这些设备的组合。除了其他以外,存储器子***630存储并托管操作***(OS)636等,以提供在***600中执行指令的软件平台。另外,从存储器子***630存储并执行其它指令638,以提供***600的逻辑和处理。OS 636和指令638由处理器620执行。
存储器子***630可以包括存储器设备632,在其中存储数据、指令、程序或其它项目。在一个实施例中,存储器子***包括存储器控制器634,其根据本文描述的任意实施例的存储器控制器,并且提供用于访问存储器设备632的机制。在一个实施例中,存储器控制器634提供命令以访问存储器设备632。
处理器620和存储器子***630耦合到总线/总线***610。总线610是表示任意一个或多个单独的物理总线、通信线/接口和/或通过适当的桥、适配器和/或控制器连接的点对点连接的抽象。因此,总线610例如可以包括以下中的一个或多个:***总线、***部件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机***接口(SCSI)总线、通用串行总线(USB)、或电子和电气工程师协会(IEEE)标准1394总线(统称为“火线”)。总线610的总线还可以对应于网络接口650中的接口。
***600还可以包括一个或多个输入/输出(I/O)接口640、网络接口650、一个或多个内部大容量存储设备660以及耦合到总线610上的***部件接口670。I/O接口640可以包括一个或多个接口部件,用户可通过所述接口部件与***600交互(例如,视频、音频和/或字母数字接口)。网络接口650向***600提供与远程设备(例如,服务器、其它计算设备)通过一个或过网络通信的能力。网络接口650可以包括以太网适配器、无线互连部件、USB(通用串行总线)或者其它基于有线或无线标准的或专有接口。
存储设备660可以是或包括用于以非易失性方式存储大量数据的任意常规的介质,例如,一个或多个基于磁、固态或光的盘或其组合。存储设备660以持久状态保存代码或指令和数据662(即,不管对***600的电力中断而保持值)。存储设备660一般可以被认为是“存储器”,尽管存储器630是向处理器620提供指令的执行或操作存储器。然而存储设备660是非易失性的,存储器630可以包括易失性存储器(即,当对***600的电力中断时,数据的值或状态是不确定的)。
***部件接口670可以包括上述未专门提及的任意硬件接口。***部件一般指的是独立连接到***600上的设备。独立连接是***600提供在其上可以执行操作的软件和/或硬件平台并利用其与用户交互的一种连接。
图7是可以在其中实现存储器访问的移动设备的实施例的框图。设备700表示移动计算设备,例如,计算平板、移动电话或智能电话、支持无线的电子阅读器、或其它移动设备。可以理解的是,一般性地示出了某些部件,而并非在设备700中示出了这种设备的所有部件。
设备700可以包括处理器710,其执行设备700的主要处理操作。处理器710可以包括一个或多个物理设备,例如微处理器、应用处理器、微控制器、可编程逻辑设备或其它处理单元。处理器710所执行的处理操作包括执行操作平台或操作***,在该操作平台或操作***上执行应用和/或设备功能。处理操作包括与通过人类用户或其它设备的I/O(输入/输出)相关的操作、与电力管理有关的操作,和/或将设备700连接到另一设备相关的操作。处理操作还可以包括与音频I/O和/或显示I/O相关的操作。
在一个实施例中,设备700包括音频子***720,其表示与向计算设备提供音频功能相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动器、编码解码器)部件。音频功能可以包括扬声器和/或耳机输出以及麦克风输入。用于这种功能的设备可以集成到设备700中,或连接到设备700上。在一个实施例中,通过提供由处理器710接收并处理的音频命令,用户与设备700进行交互。
显示子***730表示硬件(例如,显示设备)和软件(例如,驱动器)部件,其为用户提供视觉和/或触觉显示以与计算设备进行交互。显示子***730可以包括显示接口732,其可以包括用于向用户提供显示的特定屏幕或硬件设备。在一个实施例中,显示接口732包括与处理器710分离的逻辑,以执行与显示相关的至少一些处理。在一个实施例中,显示子***730包括触摸屏设备,其向用户提供输出和输入二者。
I/O控制器740表示与和用户交互相关的硬件设备和软件部件。I/O控制器740可以操作以管理作为音频子***720和/或显示子***730的一部分的硬件。另外,I/O控制器740示出了额外设备连接到设备700的连接点,用户通过该连接点可以与***交互。例如,附接到设备700上的设备可以包括麦克风设备、扬声器或立体***、视频***或其它显示设备、键盘或键板设备、或者与具体应用(例如,读卡器或其它设备)一起使用的其它I/O设备。
如上所述,I/O控制器740可以与音频子***720和/或显示子***730交互。例如,通过麦克风或其它音频设备的输入可以提供用于设备700的一个或多个应用或功能的输入或命令。另外,作为替代或除了显示输出外,可以提供音频输出。在另一例子中,如果显示子***包括触摸屏,则显示设备还用作输入设备,其可以至少部分地由I/O控制器740所管理。在设备700上还可能存在额外的按钮或开关,以提供由I/O控制器740所管理的I/O功能。
在一个实施例中,I/O控制器740管理设备,例如加速度计、摄像机、光传感器或其它环境传感器、陀螺仪、全球定位***(GPS)、或可以包含于设备700内的其它硬件。输入可以是直接用户交互的一部分,并向***提供环境输入以影响其操作(例如,过滤噪声、针对亮度检测调整显示器、为摄像机应用闪光或其它特征)。
在一个实施例中,设备700包括电力管理750,其管理电池电量使用、电池的充电、以及与省电操作相关的特征。存储器子***760可以包括存储器设备762,用于在设备700中存储信息。存储器子***760可以包括非易失性(当中断对存储器设备的电力时状态未改变)和/或易失性(当中断对存储器设备的电力时状态不确定)存储器设备。存储器760可以存储应用数据、用户数据、音乐、照片、文件或其它数据,以及与执行***700的应用和功能相关的***数据(长期或临时的)。在一个实施例中,存储器子***760包括存储器控制器764(其还可以被视作***700的控制的一部分,并可能被视作处理器710的一部分),以控制存储器762。
连接770可以包括硬件设备(例如,无线和/或有线连接器和通信硬件)和软件部件(例如,驱动器、协议堆栈),以使得设备700能够与外部设备通信。设备可以是独立的设备,例如其它计算设备、无线访问点或基站、以及***部件(如耳机、打印机或其它设备)。
连接770可以包括多个不同类型的连接。概括而言,设备700示出具有蜂窝连接772和无线连接774。蜂窝连接772一般指的是由无线载体提供的蜂窝网络连接,例如经由GSM(全球移动通信***)或变型或衍生物、CDMA(码分多址)或变型或衍生物、TDM(时分多路复用)或变型或衍生物、LTE(长期演进—还称作“4G”)、或其它蜂窝服务标准所提供的。无线连接774指的是不是蜂窝的无线连接,并可以包括个域网(例如,蓝牙)、局域网(例如,WiFi)和/或广域网(例如,WiMAX),或其它无线通信。无线通信指的是通过经过非固态介质使用已调的电磁辐射转移数据。有线通信通过固体通信介质发生。
***部件连接780包括硬件接口和连接器以及软件部件(例如,驱动器、协议堆栈)来进行***部件连接。可以理解的是,设备700可以是到其它计算设备的***设备(“到”782)以及使***设备与其连接(“来自”784)。设备700通常具有连接到其它计算设备的“对接”连接器,用于例如管理(如,下载和/或上传、改变、同步)在设备700上的内容的目的。另外,对接连接器可以允许设备700连接到特定的***部件,其允许设备700控制内容输出到例如视听或其它***。
除了专用对接连接器或其它专用连接硬件外,设备700还经由普通的或基于标准的连接器进行***部件连接780。普通类型可以包括通用串行总线(USB)连接器(其包括很多不同硬件接口中的任意硬件接口)、显示端口(其包括迷你显示端口(MDP))、高清晰多媒体接口(HDMI)、火线或其它类型。
在一个实现方式中,存储器控制器包括清洗器逻辑,其包括这样的电路:其执行存储器的多个活动分段的第一巡检清洗,并执行平台的一个或多个分段的第二巡检清洗,同时一个或多个分段中的每一个可用作多个活动分段的备用分段。存储器控制器还包括备用器逻辑,其包括这样的电路:用于接收基于第一巡检清洗检测到的第一不可校正的错误事件的指示,其中,在第一处理程序过程和第二处理程序过程当中,所述备用器逻辑响应于第一不可校正错误事件的指示仅用信号通知第一处理程序过程;所述备用器逻辑还用于接收基于第二巡检清洗检测到的第二不可校正的错误事件的指示,其中,在第一处理程序过程和第二处理程序过程中,所述备用器逻辑响应于第二不可校正错误事件的指示仅用信号通知第二处理程序过程。
在实施例中,第一处理程序过程包括机器检查异常处理程序。在另一实施例中,第二处理程序过程包括中断处理程序。在另一实施例中,第二处理程序过程登记服务请求以替换存储器设备。在另一实施例中,在主机操作***执行期间由处理器执行第一处理程序过程,并且在处理器的***管理模式期间执行第二处理程序过程。在另一实施例中,当基于第一巡检清洗检测到阈值可校正错误事件时,备用器逻辑还用信号通知不同于第一过程的处理程序过程,其中响应于阈值可校正错误事件用信号通知的任意处理程序是不同于第一处理程序过程的处理程序过程。在另一实施例中,备用器逻辑用信号通知不同于第一过程的处理程序过程包括:备用器逻辑用信号通知在处理器的***管理模式期间执行的处理程序过程。
在另一实现方式中,一种方法包括执行存储器的多个活动分段的第一巡检清洗,并且如果基于第一巡检清洗检测到不可校正的错误事件,则用信号通知第一处理程序过程,其中,在第一处理程序过程和第二处理程序过程当中,响应于由第一巡检清洗检测到的不可校正的错误事件,仅用信号通知第一处理程序过程。所述方法还包括执行对存储器的一个或多个分段的第二巡检清洗,同时一个或多个分段中的每一个可用作多个活动分段的备用分段,并且如果基于第二巡检清洗检测到不可校正的错误事件,则用信号通知第二处理程序过程,其中,在第一处理程序过程和第二处理程序过程当中,响应于由第一巡检清洗检测到不可校正的错误事件,仅用信号通知第一处理程序过程。
在实施例中,第一处理程序过程包括机器检查异常处理程序。在另一实施例中,第二处理程序过程包括中断处理程序。在另一实施例中,第二处理程序过程登记服务请求以替换存储器设备。在另一实施例中,在主机操作***执行期间由处理器执行第一处理程序过程,并且在处理器的***管理模式期间执行第二处理程序过程。在另一实施例中,所述方法还包括:当基于第一巡检清洗检测到阈值可校正错误事件时,用信号通知不同于第一过程的处理程序过程,其中响应于阈值可校正错误事件用信号通知的任意处理程序是不同于第一处理程序过程的处理程序过程。在另一实施例中,用信号通知不同于第一过程的处理程序过程包括:用信号通知在处理器的***管理模式期间执行的处理程序过程。
在另一实现方式中,一种***包括一个或多个存储器设备、互连以及经由互连与一个或多个存储器设备耦合的存储器控制器,所述存储器控制器用于控制一个或多个存储器设备。存储器控制器包括清洗器逻辑,其包括这样的电路:其执行一个或多个存储器设备的多个活动分段的第一巡检清洗,并执行一个或多个存储器设备的一个或多个分段的第二巡检清洗,同时一个或多个分段中的每一个可用作多个活动分段的备用分段。存储器控制器还包括备用器逻辑,其包括这样的电路:用于接收基于第一巡检清洗检测到的第一不可校正的错误事件的指示,其中,在第一处理程序过程和第二处理程序过程中,所述备用器逻辑响应于第一不可校正错误事件的指示仅用信号通知第一处理程序过程;所述备用器逻辑还用于接收基于第二巡检清洗检测到的第二不可校正的错误事件的指示,其中,在第一处理程序过程和第二处理程序过程中,所述备用器逻辑响应于第二不可校正错误事件的指示仅用信号通知第二处理程序过程。
在实施例中,第一处理程序过程包括机器检查异常处理程序。在另一实施例中,第二处理程序过程包括中断处理程序。在另一实施例中,第二处理程序过程登记服务请求以替换存储器设备。在另一实施例中,在主机操作***执行期间由处理器执行第一处理程序过程,并且在处理器的***管理模式期间执行第二处理程序过程。在另一实施例中,当基于第一清洗检测到阈值可校正错误事件时,备用器逻辑还用信号通知不同于第一过程的处理程序过程,其中响应于阈值可校正错误事件用信号通知的任意处理程序是不同于第一处理程序过程的处理程序过程。
在另一实现方式中,一种其上存储有指令的计算机可读存储介质,当被一个或多个处理单元执行时,所述指令使得一个或多个处理单元执行一种方法,所述方法包括执行存储器的多个活动分段的第一巡检清洗,并且如果基于第一巡检清洗检测到不可校正的错误事件,则用信号通知第一处理程序过程,其中,在第一处理程序过程和第二处理程序过程中,响应于由第一巡检清洗检测到不可校正的错误事件,仅用信号通知第一处理程序过程。所述方法还包括执行存储器的一个或多个分段的第二巡检清洗,同时一个或多个分段中的每一个可用作多个活动分段的备用分段,并且如果基于第二巡检清洗检测到不可校正的错误事件,则用信号通知第二处理程序过程,其中,在第一处理程序过程和第二处理程序过程中,响应于由第一巡检清洗检测到的不可校正的错误事件,仅用信号通知第一处理程序过程。
在实施例中,第一处理程序过程包括机器检查异常处理程序。在另一实施例中,第二处理程序过程包括中断处理程序。在另一实施例中,第二处理程序过程登记服务请求以替换存储器设备。在另一实施例中,在主机操作***执行期间由处理器执行第一处理程序过程,并且在处理器的***管理模式期间执行第二处理程序过程。
在本文中描述了用于控制存储器的技术和架构。在上述描述中,出于解释的目的,阐述了大量具体细节,以便提供对特定实施例的透彻理解。然而,本领域技术人员可以理解的是可以在不具备这些具体细节的情况下实践特定实施例。在其它实例中,以框图形式示出结构和设备,以避免模糊所述描述。
在说明书中引用“一个实施例”或“实施例”表示结合实施例描述的特定特征、结构或特性包含于本发明的至少一个实施例中。在说明书中各处出现的短语“在一个实施例中”不必全部指代同一实施例。
根据对计算机存储器内数据位上的操作的算法和符号表示来表示本文的具体实施方式的一些部分。这些算法描述和表示是计算领域的技术人员所使用的方式,以最有效地将其工作实质传达给本领域其他技术人员。算法在这里以及一般地构思为导致期望结果的步骤的自相容序列。步骤是需要物理量的物理操纵的步骤。通常但不必要的,这些量采取电信号或磁信号的形式,其能够被存储、转移、组合、比较和以其它方式操纵。主要为了共同使用的目的,已经证明了在将这些信号指代为位、值、元素、符号、字符、术语、数字等时是方便的。
然而,应该记住的是,所有这些和类似术语将与适当的物理量相关联,并仅是施加到这些量上的方便的标签。除非从本文讨论明显的另有表述,可以理解的是,遍及说明书,利用例如“处理”或“计算”或“运算”或“确定”或“显示”等术语的讨论指的是计算机***或类似电子计算设备的动作和过程,其将在计算机***的寄存器和存储器中表示为物理(电子)量的数据操纵和转换为类似地在计算机***存储器或寄存器或其它这种信息存储、传输或显示设备内表示为物理量的其它数据。
特定实施例还涉及用于执行本文的操作的装置。该装置可以针对所要求的目的而专门构造,或者其可以包括选择性地由存储于计算机内的计算机程序激活或配置的通用计算机。这种计算机程序可以存储于计算机可读存储介质中,例如但不限于,任意类型的盘,包括软盘、光盘、CD-ROM、和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)如动态RAM(DRAM)、EPROM、EEPROM、磁卡或光卡、或适于存储电子指令并耦合到计算机***总线上的任意类型的介质。
本文呈现的算法和显示并不固有地涉及任意特定计算机或其它装置。依照本文的教导各种通用***可以与程序一起使用,或者可以证明构造更通用的装置来执行所要求的方法步骤是方便的。根据本文的描述,用于多种这些***的所要求的结构将变得明显。另外,并未结合任意特定编程语言描述特定实施例。可以理解的是,可以使用多种编程语言来实现本文描述的这种实施例的教导。
除了本文所描述的,可以对所公开的实施例及其实现方式做出各种修改,而不背离其范围。因此,本文的图示和例子应该解释为说明性的,而非限制性的。应该仅通过参考后续权利要求测量本发明的范围。
Claims (21)
1.一种用于控制存储器的存储器控制器,所述存储器控制器包括:
清洗器逻辑,其包括这样的电路:其执行存储器的多个活动分段的第一巡检清洗,并执行所述存储器的一个或多个分段的第二巡检清洗,同时所述一个或多个分段中的每一个能够用作所述多个活动分段的备用分段;以及
备用器逻辑,其包括这样的电路:其接收基于所述第一巡检清洗所检测到的第一不可校正的错误事件的指示,其中,在第一处理程序过程和第二处理程序过程当中,所述备用器逻辑响应于所述第一不可校正的错误事件的指示,仅用信号通知所述第一处理程序过程;所述备用器逻辑还接收基于所述第二巡检清洗所检测到的第二不可校正的错误事件的指示,其中,在第一处理程序过程和第二处理程序过程当中,所述备用器逻辑响应于所述第二不可校正的错误事件的指示,仅用信号通知所述第二处理程序过程。
2.根据权利要求1所述的存储器控制器,其中,所述第一处理程序过程包括机器检查异常处理程序。
3.根据权利要求1和2中任一项所述的存储器控制器,其中,所述第二处理程序过程包括中断处理程序。
4.根据权利要求1和2中任一项所述的存储器控制器,其中,所述第二处理程序过程登记替换存储器设备的服务请求。
5.根据权利要求1和2中任一项所述的存储器控制器,其中,所述第一处理程序过程是在主机操作***执行期间由处理器执行的,并且其中,所述第二处理程序过程是在所述处理器的***管理模式期间执行的。
6.根据权利要求1和2中任一项所述的存储器控制器,所述备用器逻辑进一步用于:如果基于所述第一巡检清洗检测到阈值可校正错误事件,则用信号通知不同于所述第一处理程序过程的处理程序过程,其中,响应于所述阈值可校正错误事件而用信号通知的任意处理程序过程是不同于所述第一处理程序过程的处理程序过程。
7.根据权利要求6所述的存储器控制器,其中,所述备用器逻辑用信号通知不同于所述第一处理程序过程的处理程序过程包括:所述备用器逻辑用信号通知在处理器的***管理模式期间执行的处理程序过程。
8.一种用于控制存储器的方法,所述方法包括:
执行存储器的多个活动分段的第一巡检清洗;
如果基于所述第一巡检清洗检测到不可校正的错误事件,则用信号通知第一处理程序过程,其中,在所述第一处理程序过程和第二处理程序过程当中,响应于由所述第一巡检清洗检测到的所述不可校正的错误事件,仅用信号通知所述第一处理程序过程;
执行所述存储器的一个或多个分段的第二巡检清洗,同时所述一个或多个分段中的每一个能够用作所述多个活动分段的备用分段;以及
如果基于所述第二巡检清洗检测到不可校正的错误事件,则用信号通知所述第二处理程序过程,其中,在所述第一处理程序过程和第二处理程序过程当中,响应于由所述第二巡检清洗检测到的所述不可校正的错误事件,仅用信号通知所述第二处理程序过程。
9.根据权利要求8所述的方法,其中,所述第一处理程序过程包括机器检查异常处理程序。
10.根据权利要求8和9中任一项所述的方法,其中,所述第二处理程序过程包括中断处理程序。
11.根据权利要求8和9中任一项所述的方法,其中,所述第二处理程序过程登记替换存储器设备的服务请求。
12.根据权利要求8和9中任一项所述的方法,其中,所述第一处理程序过程是在主机操作***执行期间由处理器执行的,并且其中,所述第二处理程序过程是在所述处理器的***管理模式期间执行的。
13.根据权利要求8和9中任一项所述的方法,还包括:
如果基于所述第一巡检清洗检测到阈值可校正错误事件,则用信号通知不同于所述第一处理程序过程的处理程序过程,其中,响应于所述阈值可校正错误事件而用信号通知的任意处理程序过程是不同于所述第一处理程序过程的处理程序过程。
14.根据权利要求13所述的方法,其中,用信号通知不同于所述第一处理程序过程的处理程序过程包括:用信号通知在处理器的***管理模式期间执行的处理程序过程。
15.一种用于控制存储器的***,所述***包括:
一个或多个存储器设备;
互连;以及
存储器控制器,所述存储器控制器经由所述互连与所述一个或多个存储器设备耦合,所述存储器控制器用于控制所述一个或多个存储器设备,所述存储器控制器包括:
清洗器逻辑,其包括这样的电路:其执行所述一个或多个存储器设备的多个活动分段的第一巡检清洗,并执行所述一个或多个存储器设备的一个或多个分段的第二巡检清洗,同时所述一个或多个分段中的每一个能够用作所述多个活动分段的备用分段;以及
备用器逻辑,其包括这样的电路:其接收基于所述第一巡检清洗检测到的第一不可校正的错误事件的指示,其中,在第一处理程序过程和第二处理程序过程当中,所述备用器逻辑响应于所述第一不可校正的错误事件的指示仅用信号通知所述第一处理程序过程;所述备用器逻辑还接收基于所述第二巡检清洗检测到的第二不可校正的错误事件的指示,其中,在所述第一处理程序过程和所述第二处理程序过程当中,所述备用器逻辑响应于所述第二不可校正的错误事件的指示仅用信号通知所述第二处理程序过程。
16.根据权利要求15所述的***,其中,所述第一处理程序过程包括机器检查异常处理程序。
17.根据权利要求15和16中任一项所述的***,其中,所述第二处理程序过程包括中断处理程序。
18.根据权利要求15和16中任一项所述的***,其中,所述第二处理程序过程登记替换存储器设备的服务请求。
19.根据权利要求15和16中任一项所述的***,其中,所述第一处理程序过程是在主机操作***执行期间由处理器执行的,并且其中,所述第二处理程序过程是在所述处理器的***管理模式期间执行的。
20.根据权利要求15和16中任一项所述的***,所述备用器逻辑进一步用于:如果基于所述第一巡检清洗检测到阈值可校正错误事件,则用信号通知不同于所述第一处理程序过程的处理程序过程,其中,响应于所述阈值可校正错误事件而用信号通知的任意处理程序过程是不同于所述第一处理程序过程的处理程序过程。
21.一种包括代码的机器可读介质,当被执行时,所述代码使得机器执行如权利要求8到14中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/075472 WO2015157932A1 (en) | 2014-04-16 | 2014-04-16 | Method, apparatus and system for handling data error events with memory controller |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106463179A CN106463179A (zh) | 2017-02-22 |
CN106463179B true CN106463179B (zh) | 2019-11-19 |
Family
ID=54323369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480077247.1A Active CN106463179B (zh) | 2014-04-16 | 2014-04-16 | 利用存储器控制器处理数据错误事件的方法、装置和*** |
Country Status (6)
Country | Link |
---|---|
US (1) | US9535782B2 (zh) |
EP (1) | EP3132449B1 (zh) |
KR (1) | KR101821515B1 (zh) |
CN (1) | CN106463179B (zh) |
TW (1) | TWI553650B (zh) |
WO (1) | WO2015157932A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703661B2 (en) | 2015-02-05 | 2017-07-11 | International Business Machines Corporation | Eliminate corrupted portions of cache during runtime |
US9904595B1 (en) | 2016-08-23 | 2018-02-27 | Texas Instruments Incorporated | Error correction hardware with fault detection |
US10437729B2 (en) | 2017-04-19 | 2019-10-08 | International Business Machines Corporation | Non-disruptive clearing of varying address ranges from cache |
US10489253B2 (en) | 2017-05-16 | 2019-11-26 | International Business Machines Corporation | On-demand GPR ECC error detection and scrubbing for a multi-slice microprocessor |
GB2563887B (en) * | 2017-06-28 | 2019-12-25 | Advanced Risc Mach Ltd | Masking of architectural state associated with a realm |
US10679718B2 (en) * | 2017-10-04 | 2020-06-09 | Western Digital Technologies, Inc. | Error reducing matrix generation |
KR102538679B1 (ko) * | 2018-04-06 | 2023-06-02 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
TWI685751B (zh) * | 2018-04-10 | 2020-02-21 | 神雲科技股份有限公司 | 伺服器裝置的錯誤報告功能的控制方法 |
US11221910B2 (en) | 2018-07-24 | 2022-01-11 | Micron Technology, Inc. | Media scrubber in memory system |
US10846162B2 (en) | 2018-11-29 | 2020-11-24 | Oracle International Corporation | Secure forking of error telemetry data to independent processing units |
CN114579340A (zh) * | 2019-03-01 | 2022-06-03 | 超聚变数字技术有限公司 | 内存错误处理方法和装置 |
US11042483B2 (en) | 2019-04-26 | 2021-06-22 | International Business Machines Corporation | Efficient eviction of whole set associated cache or selected range of addresses |
US11334457B1 (en) * | 2019-06-27 | 2022-05-17 | Samsung Electronics Co., Ltd. | Semiconductor memory device and memory system including the same |
US11403010B2 (en) | 2020-08-19 | 2022-08-02 | Silicon Motion, Inc. | Data storage device and plane selection method thereof |
KR20220049397A (ko) | 2020-10-14 | 2022-04-21 | 삼성전자주식회사 | 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 |
WO2022099531A1 (en) * | 2020-11-12 | 2022-05-19 | Intel Corporation | Offloading reliability, availability and serviceability runtime system management interrupt error handling to cpu on-die modules |
US11348620B1 (en) * | 2021-01-26 | 2022-05-31 | Dell Products L.P. | Systems and methods for power protection on failed memory devices |
US11537468B1 (en) * | 2021-12-06 | 2022-12-27 | Hewlett Packard Enterprise Development Lp | Recording memory errors for use after restarts |
WO2023108319A1 (en) * | 2021-12-13 | 2023-06-22 | Intel Corporation | In-system mitigation of uncorrectable errors based on confidence factors, based on fault-aware analysis |
US20230333749A1 (en) * | 2022-04-15 | 2023-10-19 | SK Hynix Inc. | Memory, operation method of memory, and operation method of memory system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0530554A2 (en) * | 1991-09-05 | 1993-03-10 | International Business Machines Corporation | Scrubbing and sparing in a memory system |
CN1106560A (zh) * | 1992-09-29 | 1995-08-09 | 奇特尔公司 | 容错存储器*** |
CN101960532A (zh) * | 2008-03-28 | 2011-01-26 | 英特尔公司 | 用于节省存储器自刷新功率的***、方法和装置 |
CN102855941A (zh) * | 2011-06-29 | 2013-01-02 | 国际商业机器公司 | 基于多符号多清理周期分析的抢先存储器修复方法和*** |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69024086T2 (de) | 1989-04-13 | 1996-06-20 | Sundisk Corp | EEprom-System mit Blocklöschung |
US5263032A (en) | 1991-06-27 | 1993-11-16 | Digital Equipment Corporation | Computer system operation with corrected read data function |
US6480982B1 (en) * | 1999-06-04 | 2002-11-12 | International Business Machines Corporation | Computer RAM memory system with enhanced scrubbing and sparing |
US6715116B2 (en) | 2000-01-26 | 2004-03-30 | Hewlett-Packard Company, L.P. | Memory data verify operation |
US6981173B2 (en) * | 2001-09-28 | 2005-12-27 | Hewlett-Packard Development Company, L.P. | Redundant memory sequence and fault isolation |
US7234099B2 (en) | 2003-04-14 | 2007-06-19 | International Business Machines Corporation | High reliability memory module with a fault tolerant address and command bus |
US7334159B1 (en) | 2003-09-29 | 2008-02-19 | Rockwell Automation Technologies, Inc. | Self-testing RAM system and method |
US8060774B2 (en) * | 2005-06-24 | 2011-11-15 | Google Inc. | Memory systems and memory modules |
US20070089032A1 (en) | 2005-09-30 | 2007-04-19 | Intel Corporation | Memory system anti-aliasing scheme |
US7325078B2 (en) * | 2005-10-06 | 2008-01-29 | Hewlett-Packard Development Company, L.P. | Secure data scrubbing |
US7913147B2 (en) * | 2006-05-08 | 2011-03-22 | Intel Corporation | Method and apparatus for scrubbing memory |
US7823011B2 (en) * | 2007-08-22 | 2010-10-26 | International Business Machines Corporation | Intra-disk coding scheme for data-storage systems |
US8122308B2 (en) * | 2008-06-25 | 2012-02-21 | Intel Corporation | Securely clearing an error indicator |
US8020053B2 (en) * | 2008-10-29 | 2011-09-13 | Hewlett-Packard Development Company, L.P. | On-line memory testing |
US20110041005A1 (en) | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System |
US8687421B2 (en) | 2011-11-21 | 2014-04-01 | Sandisk Technologies Inc. | Scrub techniques for use with dynamic read |
US9003223B2 (en) * | 2012-09-27 | 2015-04-07 | International Business Machines Corporation | Physical memory fault mitigation in a computing environment |
-
2014
- 2014-04-16 CN CN201480077247.1A patent/CN106463179B/zh active Active
- 2014-04-16 EP EP14889730.9A patent/EP3132449B1/en active Active
- 2014-04-16 US US14/428,338 patent/US9535782B2/en active Active
- 2014-04-16 KR KR1020167025102A patent/KR101821515B1/ko active IP Right Grant
- 2014-04-16 WO PCT/CN2014/075472 patent/WO2015157932A1/en active Application Filing
-
2015
- 2015-03-13 TW TW104108096A patent/TWI553650B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0530554A2 (en) * | 1991-09-05 | 1993-03-10 | International Business Machines Corporation | Scrubbing and sparing in a memory system |
CN1106560A (zh) * | 1992-09-29 | 1995-08-09 | 奇特尔公司 | 容错存储器*** |
CN101960532A (zh) * | 2008-03-28 | 2011-01-26 | 英特尔公司 | 用于节省存储器自刷新功率的***、方法和装置 |
CN102855941A (zh) * | 2011-06-29 | 2013-01-02 | 国际商业机器公司 | 基于多符号多清理周期分析的抢先存储器修复方法和*** |
Also Published As
Publication number | Publication date |
---|---|
WO2015157932A1 (en) | 2015-10-22 |
KR20160120323A (ko) | 2016-10-17 |
EP3132449A4 (en) | 2017-12-20 |
US9535782B2 (en) | 2017-01-03 |
TW201603040A (zh) | 2016-01-16 |
CN106463179A (zh) | 2017-02-22 |
KR101821515B1 (ko) | 2018-01-23 |
EP3132449B1 (en) | 2023-04-26 |
TWI553650B (zh) | 2016-10-11 |
US20160004587A1 (en) | 2016-01-07 |
EP3132449A1 (en) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106463179B (zh) | 利用存储器控制器处理数据错误事件的方法、装置和*** | |
CN103930878B (zh) | 用于存储器验证的方法、装置及*** | |
US8671330B2 (en) | Storage device, electronic device, and data error correction method | |
CN103999055B (zh) | 访问命令/地址寄存器装置中存储的数据 | |
US9009580B2 (en) | System and method for selective error checking | |
EP3270290B1 (en) | Ddr memory error recovery | |
CN101110047B (zh) | 存储器重放机制 | |
US8806285B2 (en) | Dynamically allocatable memory error mitigation | |
US9122598B2 (en) | Semiconductor device and operating method thereof | |
KR20120052883A (ko) | 동시 판독 및 기록 메모리 동작을 수행하는 방법 및 장치 | |
US20080072119A1 (en) | Allowable bit errors per sector in memory devices | |
US9037948B2 (en) | Error correction for memory systems | |
CN104636271B (zh) | 访问命令/地址寄存器装置中存储的数据 | |
US11269715B2 (en) | Systems and methods for adaptive proactive failure analysis for memories | |
US8151176B2 (en) | CPU instruction RAM parity error procedure | |
US10579470B1 (en) | Address failure detection for memory devices having inline storage configurations | |
US10312943B2 (en) | Error correction code in memory | |
US11586360B2 (en) | Hybrid memory mirroring using storage class memory | |
US10540315B2 (en) | Computing systems relating to serial and parallel interfacing operations | |
US9715345B2 (en) | Apparatuses and methods for memory management | |
CN117795466A (zh) | 使用子命令的存取请求管理 | |
JP2013020515A (ja) | メモリ冗長化装置、メモリ冗長化方法、及びプログラム |
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 |