CN104685474A - 包括不可纠正的错误的地址范围的通知 - Google Patents
包括不可纠正的错误的地址范围的通知 Download PDFInfo
- Publication number
- CN104685474A CN104685474A CN201280076003.2A CN201280076003A CN104685474A CN 104685474 A CN104685474 A CN 104685474A CN 201280076003 A CN201280076003 A CN 201280076003A CN 104685474 A CN104685474 A CN 104685474A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory address
- operating system
- repairable
- poison
- 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
- 230000015654 memory Effects 0.000 claims abstract description 285
- 238000000034 method Methods 0.000 claims abstract description 136
- 230000008569 process Effects 0.000 claims description 122
- 239000002574 poison Substances 0.000 claims description 100
- 231100000614 poison Toxicity 0.000 claims description 100
- 238000001514 detection method Methods 0.000 claims description 9
- 230000001052 transient effect Effects 0.000 claims description 6
- 230000009471 action Effects 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000004140 cleaning Methods 0.000 description 8
- 238000011084 recovery Methods 0.000 description 8
- 230000002159 abnormal effect Effects 0.000 description 4
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 3
- 230000026676 system process Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003446 memory effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供用于从不可纠正的内存错误中恢复的技术。可以访问内存位置。可以确定该内存位置包括不可纠正的错误。可以确定与该内存位置关联的地址的范围。可以对整个地址范围采取纠正措施,以识别该地址范围内包括不可纠正的内存错误的其它地址。
Description
背景技术
机器校验架构是一种可以在现代计算系统中用于检测故障(如内存中的故障)的技术。在许多计算系统中,通过纠错码(ECC)保护内存。通常使用的纠错码能够检测和纠正单比特错误。在多比特错误的情况下,ECC能够检测该错误,但不能纠正该错误。在使用机器校验架构的系统中,当发现包括不可纠正的错误的内存位置时,在该内存位置中设置被称为毒药签名(poison signature)或简称毒药(poison)的特殊值。该毒药签名一般通过操纵ECC比特来产生。数据中不可纠正的错误可以由内存控制器、CPU缓存、IO设备或在任意多个其它元件中被识别,并且那些元件中的任意元件能够在该数据中生成毒药签名。
系统能够长期运行,即使存在毒药。但是,当中央处理单元(CPU)尝试使用包括毒药的内存位置时,处理器可能产生机器校验异常。该机器校验异常可以由计算设备的固件或操作系统截获。在一些情况下,不能够采取纠正措施,并且整个系统可能崩溃。但是,在其它情况下,操作系统能够采取恢复措施。例如,操作系统可以杀掉正在使用被确定包括毒药的内存位置的特定进程。
附图说明
图1是根据本文描述的技术的系统的示例。
图2是用于处理不可纠正的内存错误的概要流程图的示例。
图3是用于基于不可纠正的错误的检测来初始化内存的概要流程图的示例。
图4是操作系统清理内存地址范围的概要流程图的示例。
图5是用于处理由不可纠正的内存错误导致的可恢复错误和不可恢复错误的概要流程图的示例。
图6是用于检测毒药消耗的概要流程图的示例。
图7是用于检测毒药和从该毒药恢复的概要流程图的示例。
具体实施方式
毒药(poison)在机器校验架构系统中的使用对检测包括不可纠正的错误的内存及防止CPU使用包括错误的内存是非常有用的。在一些情况下,内存可以包括由软件使用的数据值。损坏的数据值的使用可以导致获得不正确的结果。在其它情况下,内存位置可以包括待由CPU执行的指令。在这种情况下,该内存位置中包括的指令基本上是随机指令,因为不能确定错误如何修改该指令。利用ECC,损坏的指令可以被识别出,但不一定被纠正。
如上面提到的,当接收到机器校验异常时,由操作系统采取的典型动作是清除正在使用受影响的内存位置的进程。通常,清除该进程意味着停止该进程的操作并且释放已分配给该进程的所有资源,如内存。但是,当仅清除进程时,由于毒药的存在,产生数个问题。产生的一个问题是,一旦操作系统清除该进程,由该进程使用的内存便处于未知状态。内存可能包括更多错误,在这种情况下,由不同进程尝试使用该内存会导致附加机器校验异常。另一问题是由该进程使用的内存可能具有毒药并且如果OS将该内存区域分配给另一进程,则该进程可能进入该有毒药的内存。当前系统中的操作系统通常不充分了解内存控制器清理被清除的进程的具有毒药的内存。
操作系统有两个选择。第一,可以声明由被清除的进程使用的内存不可用。在这种情况下,操作系统不再尝试使用该内存。在重启之间长时间运行的系统中,随着越来越多进程被清除以及它们的内存资源被标记为不可用,这可以导致在内存映射中出现大量间断。在第二选择中,操作系统可以清除该进程,但是允许继续使用该内存,尽管最初可能存在与导致该毒药的内存硬件相关的实际问题。如果不采取措施来确保该内存没有毒药以及没有会导致未纠正错误的故障,则盲目地重新使用内存可以导致产生附加机器校验。
上面的讨论假定最初可以清除正在使用包括错误的内存的进程。如果在敏感进程(如操作系统内核)中检测到毒药,则清除进程通常导致系统崩溃。在许多情况中,操作系统的设计者提供在清除关键进程(如内核)时由该关键进程使用的内存的内存转储(dump)。该转储允许专家分析在故障时该关键进程正在做什么以及更好地调试该故障。但是,如果由关键进程使用的内存包括附加错误,则访问该内存以转储内容的仅有动作可以导致附加的机器校验异常。
进一步加重由毒药导致的机器校验异常的问题是纯粹的毒药产生不是清除进程的自身原因。例如,当尝试预获取CPU缓存的缓存行时,内存控制器可以检测内存中的错误。然后,内存控制器可以用毒药签名替代包含该错误的内存并加载带有该毒药签名的缓存。此时,系统知道已经产生毒药,但是无法确定该毒药是否以及何时将被消耗(consume)。例如,进程可以从不尝试访问所预获取的缓存行,因此从不产生机器校验异常。此外,系统没有明确方法来确定通过清除消耗该毒药的进程,操作系统是否能够从该毒药的消耗中恢复。
本文描述的技术克服上面提到的从由毒药消耗导致的机器校验异常恢复的问题。当这种异常发生时,操作系统可以向充当操作系统和硬件之间的抽象层的系统固件通知已接收到机器校验异常。操作系统还可以向固件通知进程是否已被成功地清除或是否将发生其它恢复措施,如内存转储。此外,操作系统可以向该固件通知由要被清除的进程使用的内存地址的一个或多个范围。
随后,系统固件可以检查由操作系统提供的内存地址范围。该固件可以确定内存是否包括附加错误并且重新初始化该内存范围,清理针对之前的错误产生的毒药的内存范围。系统固件还可以测试内存以确定错误是否是由内存中的实际缺陷导致的。该固件还可以清除可能包括被损坏的数据的所有其它位置,如缓存内存。一旦内存清理被执行,该固件就可以将结果报告回操作系统。结果可以包括哪些内存范围被成功地清理以及哪些未被成功地清理。
随后,操作系统可以使用由固件提供的信息,以将内存返回至可使用的状态或者将内存标记为不可使用。由固件指示为已成功测试的内存能够被返回给操作系统,以被再用于不同的进程。
在一些情况下,不能清除使用包括错误的内存的进程。例如,不能直接清除运行操作系统内核的进程,因为这可能导致系统崩溃。在这种情况下,操作系统可以向固件通知要为以后的分析转储的内存地址的范围。在此情况下,固件可能不尝试重新初始化内存,而相反仅仅记录包括毒药签名的内存位置或者在操作系统访问内存位置时会导致附加未纠正错误的内存位置。可以向操作系统提供该信息,操作系统可以于是在转储内存时避开包括毒药或错误的内存位置。
图1是根据本文描述的技术的系统的示例。系统100可以是在服务器计算机或个人计算机中能发现的计算系统。系统100还可以是任何其它类型的计算设备,如智能电话、平板电脑、个人数字助理或任何其它这样的设备。本文描述的技术不限于任何特定类型的设备,而适于包括下面描述的元件类型的任何种类的设备。
系统100可以包括处理器110、非瞬态处理器可读介质120和内存130。处理器可以是能够取得和执行处理器可读指令的任何类型的处理器。此外,处理器可以具有能够检测内存错误并且向系统的其它组件通知那些错误的类型。例如,处理器可以遵循机器校验构架,其中包括不可纠正的错误的内存被标记有被称为毒药签名的特殊签名。毒药签名通常通过用能够被识别为毒药的样式改变缓存行中包含内存错误的ECC比特来创建。当处理器消耗毒药时,可以产生异常,如机器校验异常。如下面将描述的,固件和操作系统可以接收该异常并采取纠正措施。处理器还可以包括缓存内存115。缓存内存可以是位于处理器内核(die)自身上的内存并且可以允许快速访问数据。缓存内存的使用在下面更详细地描述。
该系统还可以包括非瞬态处理器可读介质120,非瞬态处理器可读介质120上包含一组指令。当处理器执行这些指令时,处理器可以实现本文描述的功能。该介质可以包括应用程序122、操作系统124和固件126。应用程序可以提供系统100的功能。例如,在网页托管服务器中,该应用程序可以是网页服务器。本文描述的技术不限于任何特定类型的应用程序。应当理解,应用程序是运行在该系统上并且提供终端用户所期望的功能的程序。
该介质还可以包括操作系统。操作系统可以管理系统100的资源。例如,操作系统可以通过向在该系统上运行的应用程序分配资源(如内存)来管理那些应用程序。操作系统还可以通过操作系统应用编程接口(API)来向应用程序提供各种功能。通过这些API,应用程序可以访问计算系统的资源。操作系统可以跟踪系统100的所有资源并且确定哪些资源是可用的以及哪些资源在使用中或不可用。
操作系统124可以通过使用固件126来与处理器以及系统100的其它组件交互。该固件可以是提供硬件和操作系统之间的抽象层的软件指令。例如,操作系统可能希望利用底层硬件的功能。操作系统可以与具有更大硬件集成程度的固件交互以请求该功能。固件具有关于硬件的更多知识,并且因此能提取来自操作系统的广泛资源请求且将那些需求翻译成所需要的具体硬件层命令。固件还能够对硬件执行操作系统通常不可获得的命令。例如,固件能够启用和禁用硬件的功能。
系统100还可以包括内存130。内存通常是可以由处理器使用的随机存取存取内存。在典型的计算系统中,存储在非瞬态处理器可读介质120上的处理器指令通常在由处理器执行之前被加载到内存130中。通过处理器访问内存通常能够比通过访问介质120获得快得多。
通常,应用程序作为由操作系统管理的进程来运行。操作系统可以分配内存地址范围供该应用程序使用。如图所示,存在两个示例应用程序进程132、134。这些进程可以是任何类型的应用程序,如网页服务器、文字处理程序或任何其它类型的应用程序。如图1所示,进程占用内存地址范围。尽管该内存地址范围被示出为连续范围,但这是为了方便描述。内存地址范围可以是不连续的。例如,在分配给进程的内存之间可以存在多个空闲的内存地址部分133、135。在余下的描述中,由进程使用的地址范围意味着分配给该进程的所有内存,无论该内存是否位于一个或多个连续范围中。
尽管已经从应用程序角度描述了进程,但是操作系统本身就是进程。正如任何其它进程一样,操作系统自身可以被分配内存131以存储用于提供操作系统功能的指令。从硬件的角度看,操作系统基本上仅是要被运行的另一进程。
在运行中,处理器可以加载来自内存的指令和数据。在包括缓存内存的处理器架构中,内存内容可以被加载到缓存中以由处理器的更快速访问。通常,内存的内容以可被称为缓存行的具有多个字节的单位,被移动至处理器/处理器缓存和从处理器/处理器缓存移出。例如,内存中具有8个字节的一组可以被组合在一起作为缓存行。但是,应当理解,本文描述的技术不限于任何特定大小的缓存行。缓存行可以由ECC保护。如上面提到的,ECC通常能够检测和纠正缓存行中的单比特错误。因此,不进一步描述单比特错误。在多比特错误的情况下,ECC可以能够检测错误,但不能纠正错误。缓存行中的多比特错误可以被称为不可纠正的错误。
内存中存在许多错误来源。一个可能的来源是高能粒子。高能粒子可以引起存储在内存位置中的一个或多个比特改变值,因此导致内存包括不正确的值。错误的另一可能来源是内存芯片出故障。错误的又一可能来源可能是可直接访问内存和不正确地存储数据的输入/输出设备(未示出)。此外,应用程序软件、操作系统或固件中的故障(bug)可以导致内存中的错误。
可以通过许多机制检测内存中的错误。例如,许多处理器架构包括可以单步调试内存中每个缓存行的擦除器硬件。通过ECC的使用,擦除器可以确定内存中存在错误。如果错误具有不可纠正的类型(意味着多比特错误),则擦除器可以用指示内存已损坏的毒药签名替换该缓存行的内容。同样,当缓存行被从内存加载到处理器或处理器缓存中时,用于加载该内存的硬件可以确定该缓存行中存在不可纠正的错误。再次可以用毒药签名替换该缓存行。当损坏的缓存行被从处理器缓存中赶出时,在该缓存行被送回内存之前,CPU缓存控制器可以对该缓存行设置毒药。毒药签名产生的其它可能原因对本领域技术人员将是已知的。应当理解,当在缓存行中发现不可纠正的错误时,可以用毒药签名替换该缓存行。
在某一点处,处理器可以对包括毒药签名的缓存行尝试某个类型的访问。处理器可以从内存或从处理器缓存直接加载该缓存行。访问操作可以是尝试执行存储在该缓存行中的指令或者使用存储在该缓存行中的数据值。访问包括毒药签名的缓存行的尝试被称为毒药的消耗。在遵循机器校验架构的处理器中,毒药的消耗导致处理器产生机器校验异常。机器校验异常可以从处理器硬件传递至固件。然后,固件可以将机器校验异常的指示传递至操作系统。
一旦操作系统接收到机器校验异常的指示,操作系统就必须首先决定错误是否是可恢复的。如上面所提到的,每个进程被分配内存地址范围。机器校验异常识别包括毒药的特定内存位置。因此,操作系统能够确定哪个进程(以及关联的内存范围)是机器校验异常的原因。
在一些情况下,操作系统可以通过清除导致机器校验异常的进程,从机器校验异常中恢复。清除进程通常涉及使进程停止以及释放该进程使用的所有资源。清除进程还可以被称为杀掉进程。但是,正是在这一点上,发生了上面关于机器校验异常描述的问题。即使操作系统能够清除进程,由该进程使用的内存也仍然可能包括错误。例如,如果包括使毒药产生的缓存行的内存芯片实际上是故障的,则由该进程使用的地址范围内的其它缓存行也十分可能包括毒药签名或者包括会导致毒药产生的错误。
在使由被清除的进程使用的内存可用于其它进程之前,操作系统首先清理和验证该内存是可取的。在一个示例实现方式中,操作系统可以向固件发送毒药被消耗以及操作系统正在通过清除包括具有毒药的缓存行的进程来尝试恢复的指示。操作系统可以向固件通知由被清除的进程使用的内存地址范围。换句话说,处理器可以向固件通知需要针对毒药的存在或其它错误的存在而被检查的内存地址范围。
当接收到该指示时,固件可以尝试清理由被清除的进程使用的内存地址范围。在一些示例实现方式中,作为清理的一部分,固件可以临时性地禁用毒药的产生和处理器内毒药消耗的检测。如上面所解释的,固件紧密地与处理器集成在一起,因此能够控制这些较低层的功能。在清理进程期间,固件可以禁用机器校验异常,因为纯粹的清理内存动作可以另外导致附加机器校验异常。例如,假定包括与被清除的进程关联的若干缓存行的内存芯片出故障,并因此具有许多错误。在尝试清理内存的过程中,该内存将被访问。如果机器校验异常被启用,则访问该内存以清理该内存将导致附加机器校验异常。
在一个示例实现方式中,正如在系统启动期间所做的那样,通过初始化内存地址范围,固件可以尝试清理该内存地址范围。换句话说,可以将内存初始化为不包括错误的已知良好值。当该初始化完成时,可以使内存控制器进入将ECC比特初始化到已知良好状态的没有毒药的模式。随后,固件可以测试该内存地址范围以确定该已知良好值是否能够被正确地存储在该内存地址范围内。在瞬态故障情况下,测试会成功。但是,在持久故障(如有缺陷的内存芯片)情况下,初始化可能失败。无论如何,固件可以确定哪些内存位置能够被成功地初始化以及哪些位置不能被成功地初始化。
随后,固件可以将这个信息传递回操作系统。操作系统可以随后将被成功地初始化的内存位置标记为现在可由其它进程使用。未被成功地初始化的内存位置可以被标记为不可使用。
除了清理内存本身以外,固件还可以清理包括毒药签名或包括错误的内存已扩散到的任何位置。如上面解释的,在一些处理器架构中,内存不直接被读取,而是首先被读取到处理器缓存中并从那里由处理器读取。如果在该内存中的缓存行中存在毒药签名,那么该毒药签名还会出现在处理器缓存中。因此,固件还可以针对毒药的存在检查处理器缓存,并且如果发现毒药的存在,则可以从处理器缓存中清除包括毒药的缓存行。在尝试清除内存中的毒药之前,固件还可以刷新所有CPU缓存。
处理器缓存针对毒药的存在或其它错误的存在而被检查,因为有可能有故障的缓存行可能已经被加载到处理器缓存中(如通过预获取操作),但实际上从未被处理器消耗。因此,通过核查可能是坏缓存行的所有位置,如内存和处理器缓存,所有故障的缓存行都可以被检测到,即使那些缓存行不导致机器校验异常。
在一些情况下,通过清除进程来恢复是不可能的。例如,如果与导致机器校验异常的内存关联的进程是操作系统进程本身,那么立即清除进程将导致系统崩溃。尽管毒药的消耗可能没有给系统崩溃留下替代方式,但许多操作系统在崩溃之前尝试将调试(debug)信息转储到日志文件中。该调试信息对工程师确定在崩溃之前系统中发生了什么可能是有用的。
一种经常使用的技术是转储核心文件,核心文件包括操作系统进程的内存内容。在崩溃之前,操作系统可以读取与操作系统进程关联的内存并且将内存内容写入文件。但是,正如上面所述,纯粹为了转储内容而访问内存的动作可以导致附加机器校验异常。可以稍稍改变本文描述的技术以允许内存内容被转储。
操作系统可以再次向固件发送进程将要被清除以及由该进程使用的地址范围的指示。但是,该指示还可以包括操作系统将不尝试从错误中恢复。在这种情况下,固件可以不尝试重新初始化内存,因为这会无法实现将内存转储到文件的目的。相反,固件可以检查该内存地址范围,以确定哪些地址包括毒药或不可纠正的错误。包括不可纠正的错误的内存位置可以被送回至操作系统。当操作系统尝试将内存内容转储到文件时,可以跳过被指示为包括错误的内存位置,因此防止附加机器校验异常的产生。尽管这导致由操作系统使用的内存的不完整转储,但结果好于根本不产生调试数据的系统崩溃。
除了上面描述的恢复技术以外,固件还可以跟踪之前已被确定为包括毒药的内存位置。例如,假定内存芯片有缺陷并且因此导致每次使用该芯片上的内存时连续产生毒药。第一次检测到毒药时,操作系统可以清除进程并返回该内存去使用(假定故障具有能够通过初始化和测试的类型)。操作系统可以将该内存位置分配给不同进程,再次导致毒药产生。固件可以跟踪连续产生毒药的内存位置,并且可以将那些位置指示为有故障的,即使它们能够通过初始化。
图2是用于处理不可纠正的内存错误的概要流程图的示例。在框210中,可以从处理器接收不可纠正的内存错误的指示。例如,在利用机器校验架构的系统的情况下,该指示可以是由毒药消耗引起的机器校验异常。在框220中,可以向操作系统发送不可纠正的内存错误的通知。例如,该通知可以是机器校验异常并且该通知能够被发送到操作系统的异常处理程序。
在框230中,可以从操作系统接收要初始化的内存地址范围。该地址范围可以包括上面在框210中指示的不可纠正的内存错误的地址。如上面解释的,该内存地址范围可以是由与包括不可纠正的内存错误的内存位置关联的进程使用的内存地址范围。
图3是用于基于不可纠正的错误的检测来初始化内存的概要流程图的示例。正如上面所述,在框305中,可以从处理器接收不可纠正的内存错误的指示。在框310中,可以向操作系统发送不可纠正的内存错误的通知。在框315中,可以从操作系统接收指示操作系统是否能够从不可纠正的内存错误中恢复的指示。如上面解释的,恢复可以包括进程是否能够被成功地清除。
在框320中,不可纠正的内存错误可以被记录在错误日志中。该记录可以包括操作系统是否能够从错误中恢复。如上面解释的,固件可以跟踪不可纠正的内存错误,以确定物理内存是否存在问题。如果特定内存范围重复地出现不可纠正的内存错误的情况,则固件可以确定物理内存存在问题,并且可以从服务中删除该内存或者告知OS停止使用该内存。
在框325中,可以从操作系统接收内存地址范围。该内存地址范围可以包括不可纠正的内存错误的地址。该地址范围可以是由因为不可纠正的内存错误而已被清除的进程使用的内存地址。在框330中,可以至少对该内存地址范围禁用不可纠正的内存错误的检测。如上面解释的,当固件尝试清理该内存地址范围时,固件进行嵌套机器校验会适得其反,因为内存将被重新初始化、被测试和被清理毒药。
在框335中,可以初始化内存地址范围。如上面解释的,初始化内存地址范围可以包括初始化物理内存本身以及毒药已经扩散到的任何其它区域。例如,如果包括毒药的缓存行存在于在内存以及CPU缓存中,那么可以从缓存中清除该缓存行,使得内存的初始化从系统中消除毒药。在框340中,可以测试内存地址范围。在已经初始化内存地址之后,可以测试内存以确定导致错误的物理内存本身是否存在实际问题。
在框345中,可以重新启用不可纠正的内存错误的检测。在框350中,可以向操作系统通知内存地址范围内未被成功地初始化的内存地址。基于在框340中执行的测试,可以确定成功的初始化。操作系统可以将未被成功地初始化的内存声明为不可由任何进程进一步使用。在框355中,可以向操作系统通知内存地址范围的成功初始化。因此,可以向操作系统传递被成功地初始化的内存地址。随后操作系统可以使这些内存地址范围可由其它进程使用。
图4是操作系统清理内存地址范围的概要流程图的示例。在框410中,可以从固件接收不可纠正的内存错误的指示。例如,如果处理器架构包括机器校验,则该指示可以是机器校验异常。在框420中,可以确定其地址范围包括不可纠正的内存错误的进程是否能够被恢复。如上面解释的,恢复可以包括清除进程。在一些情况下,像操作系统内核这样的进程不能在不对系统造成进一步影响的情况下被清除。
在框430中,可以向固件发送要初始化的内存地址范围。该内存地址范围可以包括不可纠正的内存错误的地址。如上面解释的,恢复措施可以是清除正在使用包括错误的内存位置的进程。恢复进程的一部分可以是校验由该进程使用的所有内存。所提供的内存地址范围可以包括由该进程使用的所有内存。
图5是用于处理由不可纠正的内存错误导致的可恢复错误及不可恢复错误的概要流程图的示例。在框505中,可以从在处理器上执行的固件接收不可纠正的内存错误的指示。在框510中,可以确定其地址范围包括不可纠正的内存错误的进程是否能够被恢复。可恢复的进程可以是可以被清除的进程,而仍然允许系统的余下部分继续运行。例如,应用程序进程可以被清除,而仍然允许其它应用程序和操作系统本身继续运行。但是,一些进程(如操作系统本身)可能不能被清除。
在框515中,可以确定进程是否是可恢复的。如果不可恢复,则流程移动到下面描述的框545。如果可恢复,则流程移动到框520。在框520中,可以向固件发送要初始化的内存地址范围。该范围可以包括不可纠正的内存错误的地址。在框525中,可以清除该进程。如上面解释的,清除进程可以包括停止该进程和释放正由该进程使用的所有资源,如内存。
在框530中,可以从固件接收被成功地初始化的内存地址范围的指示。在一些情况中,被成功地初始化的内存地址范围可以与框520中发送的地址范围相同。但是,情况不总是如此。在一些情况中,仅该内存地址范围的一子集可能被成功地初始化。在框535中,可以将被成功地初始化的内存地址范围标记为可使用。因此,操作系统可以将被成功地重新初始化的内存自由地重新分配给其它进程。在框540中,可以将未被成功地初始化的内存标记为不可使用。操作系统不会尝试分配已经被标记为不可使用的内存。
如果正在使用包括不可纠正错误的内存的进程是不可恢复的,则流程移动到框540。在框540中,其内容要被转储到日志的内存地址范围可以由固件接收。固件本身不知道该转储过程,而仅仅接收内存地址范围和进程不会被恢复的指示。数据到日志的实际转储是由操作系统进行的。
在框550中,操作系统可以从固件接收该范围内包括不可纠正内存错误的内存位置的指示。换句话说,操作系统可以接收那些如果被访问则会导致附加机器校验异常的内存地址。在框555中,不包括不可纠正的内存错误的内存地址可以被转储到日志。换句话说,在框550中向操作系统通知包括错误的内存位置,并且在框555中,仅那些不包括错误的位置被转储到日志。因此,为了转储而获取内存中数据的进程不会导致附加机器校验异常,因为那些有错误的存储位置不被转储。
图6是用于检测毒药消耗的概要流程图的示例。在框610中,可以访问内存位置。该访问可以通过内存控制器、IO设备或任何其它可以访问内存的元件。在框620中,可以确定该内存位置包括毒药。在一些情况中,毒药可能已经存在于该内存位置中。在其它情况中,当访问该内存位置时,可以确定内存中存在错误。例如,可以由ECC检测错误。如果错误不能被纠正,则可以在该内存位置中设置毒药签名。
在框630中,可以向操作系统通知毒药消耗。例如,当处理器尝试利用(例如消耗)该内存位置和检测到该内存位置包括毒药时,处理器可以引起机器校验异常。通常可以通过固件将该机器校验异常扩散给操作系统。
在框640中,可以从操作系统接收由与包括毒药的内存位置关联的进程占用的内存地址范围。操作系统可能已经清除该进程以从毒药消耗恢复,因此需要校验由该进程使用的所有内存,然后尝试将内存重新用于其它进程。在框650中,可以确定该内存地址范围内包括不可纠正的内存错误的内存地址。
图7是用于检测毒药和从毒药中恢复的概要流程图的示例。正如上面所述,在框705中,可以访问内存位置。在框710中,内存位置的访问可以导致机器校验异常。在框715中,可以确定由于该内存位置包括毒药和处理器消耗该毒药,所以导致了机器校验异常。在框720中,可以向操作系统通知毒药的消耗。通过从处理器通过固件向操作系统传递机器校验异常,该通知可以发生。随后,操作系统可以尝试进行适当的恢复。
在框725中,可以从操作系统接收由与该内存位置关联的进程占用的内存地址范围。如上面解释的,操作系统可能希望清除进程或转储由该进程使用的内存。该内存地址范围可以包括由该进程使用的内存。在框730中,可以禁用毒药监视。如上面解释的,重新初始化内存和用于校验内存的ECC比特的进程或者测试内存本身的进程可以导致附加毒药产生以及更多机器校验异常。禁用毒药监视可以允许执行恢复操作而不生成附加机器校验异常。
在框735中,可以确定错误是否是可恢复的。如上面解释的,可恢复的错误是可以清除进程并且回收内存的一种错误。不可恢复的错误是不能清除进程的一种错误,如当进程是操作系统本身时。
如果进程是可恢复的,则流程移动到下面描述的框750。否则,流程移动到框740。在框740中,可以测试该内存地址范围内的内存地址以确定哪些地址包括不可纠正的错误。访问这些内存位置可能不是期望的,因为访问本身可以导致附加机器校验异常。在框745中,包括不可纠正的错误的内存地址范围可以被发送到操作系统。随后,操作系统可以在转储由进程使用的内存时利用该信息来避开访问会导致附加机器校验异常的位置。
如果进程是可恢复的,则流程移动到框750。在框750中,可以初始化内存地址范围内的内存地址。如上面解释的,初始化内存地址可以包括初始化物理内存。另外,还可以清除内存中的值可能已经扩散到的位置,如缓存。在框755中,可以测试内存地址范围以确定初始化是否成功。
在框760中,可以确定该内存地址范围内未被成功地初始化并因此可能包括不可纠正的内存错误的内存地址。在框765中,可以向操作系统发送被成功地初始化的内存地址的范围。随后,操作系统可以使被成功地初始化的内存可以使用。另外,操作系统可以使未被成功地初始化的内存位置不可用于今后使用。
Claims (15)
1.一种方法,包括:
从处理器接收不可纠正的内存错误的指示;
向操作系统发送所述不可纠正的内存错误的通知;以及
从所述操作系统接收要初始化的内存地址范围,该地址范围包括所述不可纠正的内存错误的地址。
2.根据权利要求1所述的方法,进一步包括:
从所述操作系统接收指示,所述指示指示所述操作系统是否从所述不可纠正的内存错误中恢复;以及
将所述不可纠正的内存错误记录在错误日志中,该记录包括所述操作系统是否从所述错误中恢复。
3.根据权利要求1所述的方法,其中所述不可纠正的内存错误的所述指示是由所述处理器消耗毒药导致的处理器机器校验异常。
4.根据权利要求1所述的方法,进一步包括:
至少针对所述内存地址范围禁用不可纠正的内存错误的检测;
初始化所述内存地址范围;
测试所述内存地址范围;以及
重新启用不可纠正的内存错误的检测。
5.根据权利要求4所述的方法,进一步包括:
向所述操作系统通知所述内存地址范围的成功初始化。
6.根据权利要求4所述的方法,进一步包括:
基于所述内存地址范围的所述测试的结果,向所述操作系统通知所述内存地址范围内未被成功地初始化的内存地址。
7.一种方法,包括:
从在处理器上执行的固件接收不可纠正的内存错误的指示;
确定地址范围包括所述不可纠正的内存错误的进程是否能够被恢复;以及
向固件发送要初始化的内存地址范围,该范围包括所述不可纠正的内存错误的地址。
8.根据权利要求7所述的方法,其中如果所述进程能够被恢复,则所述方法进一步包括:
清除所述进程。
9.根据权利要求8所述的方法,进一步包括:
从所述固件接收被成功地初始化的所述内存地址范围的指示;
将被成功地初始化的内存地址标记为可使用;以及
将未被成功地初始化的内存地址标记为不可使用。
10.根据权利要求7所述的方法,其中如果所述进程不能够被恢复,则所述方法进一步包括:
将内容要被转储至日志的内存地址的范围发送给固件;
从所述固件接收所述范围内包括不可纠正的错误的内存位置的指示;以及
将内存地址的所述范围内不包括不可纠正的内存错误的内存地址转储至所述日志。
11.根据权利要求7所述的方法,其中所述不可纠正的内存错误的所述指示是由所述处理器消耗毒药导致的处理器机器校验异常。
12.一种非瞬态处理器可读介质,在所述介质上包括一组处理器可执行指令,所述处理器可执行指令在由所述处理器执行时引起所述处理器:
访问内存位置;
确定所述内存位置包括毒药;
向操作系统通知所述毒药的消耗;
从所述操作系统接收由与所述内存位置关联的进程占用的内存地址范围;以及
确定所述内存地址范围内包括不可纠正的内存错误的内存地址。
13.根据权利要求12所述的介质,进一步包括指令,该指令引起所述处理器:
禁用毒药监视;
初始化所述内存地址范围内的内存地址;
测试所述内存地址范围内的所述内存地址以确定成功初始化;以及
向所述操作系统发送被成功地初始化的所述内存地址范围。
14.根据权利要求12所述的介质,进一步包括指令,该指令引起所述处理器:
禁用毒药监视;
测试所述内存地址范围内的内存地址以确定哪些地址包括不可纠正的错误;以及
向所述操作系统发送包括不可纠正的错误的所述内存地址范围。
15.根据权利要求12所述的介质,其中所述处理器通过消耗导致机器校验异常的毒药来检测毒药。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/057107 WO2014051550A1 (en) | 2012-09-25 | 2012-09-25 | Notification of address range including non-correctable error |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104685474A true CN104685474A (zh) | 2015-06-03 |
CN104685474B CN104685474B (zh) | 2018-04-20 |
Family
ID=50388759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280076003.2A Active CN104685474B (zh) | 2012-09-25 | 2012-09-25 | 用于处理不可纠正的内存错误的方法及非瞬态处理器可读介质 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9804917B2 (zh) |
EP (1) | EP2901281B1 (zh) |
JP (1) | JP5965076B2 (zh) |
CN (1) | CN104685474B (zh) |
TW (1) | TWI543179B (zh) |
WO (1) | WO2014051550A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114518972A (zh) * | 2022-02-14 | 2022-05-20 | 海光信息技术股份有限公司 | 内存错误处理方法、装置、内存控制器及处理器 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652328B2 (en) * | 2014-05-12 | 2017-05-16 | International Business Machines Corporation | Restoring an application from a system dump file |
US9389973B2 (en) * | 2014-05-30 | 2016-07-12 | Oracle International Corporation | Memory error propagation for faster error recovery |
WO2016003449A1 (en) | 2014-07-01 | 2016-01-07 | Hewlett-Packard Development Company, L.P. | Memory controller |
GB2528901B (en) * | 2014-08-04 | 2017-02-08 | Ibm | Uncorrectable memory errors in pipelined CPUs |
CN104461759B (zh) * | 2014-11-27 | 2018-05-11 | 杭州华为企业通信技术有限公司 | 一种内存多位错误的处理方法及装置 |
US9934117B2 (en) * | 2015-03-24 | 2018-04-03 | Honeywell International Inc. | Apparatus and method for fault detection to ensure device independence on a bus |
US20190034252A1 (en) * | 2017-07-28 | 2019-01-31 | Hewlett Packard Enterprise Development Lp | Processor error event handler |
DE102020121109A1 (de) | 2019-09-20 | 2021-03-25 | Samsung Electronics Co., Ltd. | Speicher-controller, speichervorrichtungen und betriebsverfahren der speichervorrichtungen |
US11385974B1 (en) | 2021-03-01 | 2022-07-12 | Google Llc | Uncorrectable memory error recovery for virtual machine hosts |
US11947420B2 (en) * | 2021-12-15 | 2024-04-02 | Google Llc | Hardware memory error tolerant software system |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05265876A (ja) * | 1992-03-19 | 1993-10-15 | Fujitsu Ltd | エラー報告処理方式 |
JP2000011677A (ja) * | 1998-06-25 | 2000-01-14 | Tokyo Electron Ltd | フラッシュメモリシステム |
US6405322B1 (en) * | 1999-04-13 | 2002-06-11 | Hewlett-Packard Company | System and method for recovery from address errors |
US20050015672A1 (en) * | 2003-06-25 | 2005-01-20 | Koichi Yamada | Identifying affected program threads and enabling error containment and recovery |
US20050138487A1 (en) * | 2003-12-08 | 2005-06-23 | Intel Corporation (A Delaware Corporation) | Poisoned error signaling for proactive OS recovery |
CN1752936A (zh) * | 2004-09-23 | 2006-03-29 | 英特尔公司 | 将进程删除错误引向应用程序 |
US20090070630A1 (en) * | 2007-09-12 | 2009-03-12 | Dell Products, Lp | System and method of identifying and storing memory error locations |
CN101599305A (zh) * | 2008-06-04 | 2009-12-09 | 威刚科技股份有限公司 | 具有数据修复功能的储存系统及其数据修复方法 |
US20100037097A1 (en) * | 2008-08-07 | 2010-02-11 | Hitachi, Ltd. | Virtual computer system, error recovery method in virtual computer system, and virtual computer control program |
US20110271152A1 (en) * | 2010-04-28 | 2011-11-03 | Hitachi, Ltd. | Failure management method and computer |
US20120023364A1 (en) * | 2010-07-26 | 2012-01-26 | Swanson Robert C | Methods and apparatus to protect segments of memory |
US20120137168A1 (en) * | 2010-11-26 | 2012-05-31 | Inventec Corporation | Method for protecting data in damaged memory cells by dynamically switching memory mode |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19861088A1 (de) * | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6594785B1 (en) * | 2000-04-28 | 2003-07-15 | Unisys Corporation | System and method for fault handling and recovery in a multi-processing system having hardware resources shared between multiple partitions |
WO2002037503A1 (fr) * | 2000-11-02 | 2002-05-10 | Hitachi, Ltd. | Memoire a semi-conducteur, procede pour tester une memoire a semi-conducteur et procede de fabrication de memoires a semi-conducteur |
US7734966B1 (en) * | 2002-12-26 | 2010-06-08 | Marvell International Ltd. | Method and system for memory testing and test data reporting during memory testing |
US7539909B2 (en) * | 2003-09-30 | 2009-05-26 | Intel Corporation | Distributed memory initialization and test methods and apparatus |
US7376887B2 (en) * | 2003-12-22 | 2008-05-20 | International Business Machines Corporation | Method for fast ECC memory testing by software including ECC check byte |
US7594135B2 (en) * | 2003-12-31 | 2009-09-22 | Sandisk Corporation | Flash memory system startup operation |
KR101174936B1 (ko) * | 2004-10-14 | 2012-08-17 | 주식회사 아도반테스토 | 오류 정정 부호가 부가된 데이터열을 기억하는 피시험메모리를 시험하는 시험 장치 및 시험 방법 |
US7546487B2 (en) | 2005-09-15 | 2009-06-09 | Intel Corporation | OS and firmware coordinated error handling using transparent firmware intercept and firmware services |
US9026758B2 (en) * | 2005-09-30 | 2015-05-05 | Cleversafe, Inc. | Memory device utilization in a dispersed storage network |
US20070088988A1 (en) | 2005-10-14 | 2007-04-19 | Dell Products L.P. | System and method for logging recoverable errors |
US20070118778A1 (en) * | 2005-11-10 | 2007-05-24 | Via Telecom Co., Ltd. | Method and/or apparatus to detect and handle defects in a memory |
US7339844B2 (en) * | 2006-02-17 | 2008-03-04 | Verigy (Singapore) Pte. Ltd. | Memory device fail summary data reduction for improved redundancy analysis |
US7913147B2 (en) * | 2006-05-08 | 2011-03-22 | Intel Corporation | Method and apparatus for scrubbing memory |
US7568135B2 (en) * | 2006-05-15 | 2009-07-28 | Apple Inc. | Use of alternative value in cell detection |
KR100736103B1 (ko) * | 2006-06-27 | 2007-07-06 | 삼성전자주식회사 | 비휘발성 메모리, 상기 비휘발성 메모리의 데이터 유효성을판단하는 장치 및 방법 |
US7607060B2 (en) * | 2006-09-12 | 2009-10-20 | International Business Machines Corporation | System and method for performing high speed memory diagnostics via built-in-self-test |
JP5177991B2 (ja) * | 2006-10-25 | 2013-04-10 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US20080294951A1 (en) * | 2007-05-01 | 2008-11-27 | Ahmad Mustafa S | Methods and devices for testing computer memory |
JP4617405B2 (ja) * | 2008-02-05 | 2011-01-26 | 富士通株式会社 | 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム |
US8122308B2 (en) | 2008-06-25 | 2012-02-21 | Intel Corporation | Securely clearing an error indicator |
US8001432B2 (en) * | 2008-11-20 | 2011-08-16 | Lsi Corporation | Uninitialized memory detection using error correction codes and built-in self test |
WO2010103567A1 (ja) * | 2009-03-10 | 2010-09-16 | 株式会社アドバンテスト | 試験装置および試験方法 |
US8166338B2 (en) * | 2009-06-04 | 2012-04-24 | International Business Machines Corporation | Reliable exception handling in a computer system |
US8745618B2 (en) | 2009-08-25 | 2014-06-03 | International Business Machines Corporation | Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments |
KR101678909B1 (ko) * | 2009-09-17 | 2016-11-23 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 소거 리프레쉬 방법 |
US8327228B2 (en) * | 2009-09-30 | 2012-12-04 | Intel Corporation | Home agent data and memory management |
KR101603099B1 (ko) * | 2009-10-01 | 2016-03-28 | 삼성전자주식회사 | 불안정 메모리 셀 산포를 검출하는 메모리 시스템 및 상기 불안정 메모리 셀 산포 검출방법 |
US8473809B2 (en) * | 2009-11-20 | 2013-06-25 | Sandisk Technologies Inc. | Data coding for improved ECC efficiency |
KR101090394B1 (ko) * | 2009-12-24 | 2011-12-07 | 주식회사 하이닉스반도체 | 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 |
US8327226B2 (en) * | 2010-02-03 | 2012-12-04 | Seagate Technology Llc | Adjustable error correction code length in an electrical storage device |
JP5291248B2 (ja) * | 2010-03-30 | 2013-09-18 | パナソニック株式会社 | 抵抗変化型不揮発性記憶素子のフォーミング方法及び抵抗変化型不揮発性記憶装置 |
US8990660B2 (en) * | 2010-09-13 | 2015-03-24 | Freescale Semiconductor, Inc. | Data processing system having end-to-end error correction and method therefor |
US8572445B2 (en) * | 2010-09-21 | 2013-10-29 | Freescale Semiconductor, Inc. | Non-volatile memory (NVM) with imminent error prediction |
US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US8289773B2 (en) * | 2010-11-09 | 2012-10-16 | Freescale Semiconductor, Inc. | Non-volatile memory (NVM) erase operation with brownout recovery technique |
TWI459393B (zh) * | 2011-01-19 | 2014-11-01 | Phison Electronics Corp | 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置 |
US8484542B2 (en) * | 2011-02-08 | 2013-07-09 | Sandisk Technologies Inc. | Data recovery using additional error correction coding data |
US8671309B2 (en) * | 2011-07-01 | 2014-03-11 | Intel Corporation | Mechanism for advanced server machine check recovery and associated system software enhancements |
US8745323B2 (en) * | 2011-09-01 | 2014-06-03 | Dell Products L.P. | System and method for controller independent faulty memory replacement |
US8694855B1 (en) * | 2011-11-02 | 2014-04-08 | Pmc-Sierra Us, Inc. | Error correction code technique for improving read stress endurance |
US8898408B2 (en) * | 2011-12-12 | 2014-11-25 | Dell Products L.P. | Memory controller-independent memory mirroring |
US8811074B2 (en) * | 2012-04-03 | 2014-08-19 | Seagate Technology Llc | Parametric tracking to manage read disturbed data |
US9003224B2 (en) * | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8566671B1 (en) * | 2012-06-29 | 2013-10-22 | Sandisk Technologies Inc. | Configurable accelerated post-write read to manage errors |
KR102028128B1 (ko) * | 2012-08-07 | 2019-10-02 | 삼성전자주식회사 | 불휘발성 랜덤 액세스 메모리 및 낸드 플래시 메모리를 포함하는 메모리 시스템의 동작 방법 |
US8966343B2 (en) * | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
KR101961318B1 (ko) * | 2012-09-07 | 2019-07-17 | 삼성전자주식회사 | 중앙처리장치에서의 점유시간을 최소화하는 방어코드 운영 방법 및 그에 따른 메모리 시스템 |
US9378829B2 (en) * | 2013-02-07 | 2016-06-28 | Cypress Semiconductor Corporation | Non-volatile memory device with an EPLI comparator |
US10261852B2 (en) * | 2013-05-31 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Memory error determination |
US9323607B2 (en) * | 2014-04-29 | 2016-04-26 | Seagate Technology Llc | Data recovery once ECC fails to correct the data |
-
2012
- 2012-09-25 JP JP2015533032A patent/JP5965076B2/ja not_active Expired - Fee Related
- 2012-09-25 US US14/430,877 patent/US9804917B2/en active Active
- 2012-09-25 WO PCT/US2012/057107 patent/WO2014051550A1/en active Application Filing
- 2012-09-25 CN CN201280076003.2A patent/CN104685474B/zh active Active
- 2012-09-25 EP EP12885193.8A patent/EP2901281B1/en active Active
-
2013
- 2013-07-24 TW TW102126480A patent/TWI543179B/zh not_active IP Right Cessation
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05265876A (ja) * | 1992-03-19 | 1993-10-15 | Fujitsu Ltd | エラー報告処理方式 |
JP2000011677A (ja) * | 1998-06-25 | 2000-01-14 | Tokyo Electron Ltd | フラッシュメモリシステム |
US6405322B1 (en) * | 1999-04-13 | 2002-06-11 | Hewlett-Packard Company | System and method for recovery from address errors |
US20050015672A1 (en) * | 2003-06-25 | 2005-01-20 | Koichi Yamada | Identifying affected program threads and enabling error containment and recovery |
US20050138487A1 (en) * | 2003-12-08 | 2005-06-23 | Intel Corporation (A Delaware Corporation) | Poisoned error signaling for proactive OS recovery |
CN1752936A (zh) * | 2004-09-23 | 2006-03-29 | 英特尔公司 | 将进程删除错误引向应用程序 |
US20090070630A1 (en) * | 2007-09-12 | 2009-03-12 | Dell Products, Lp | System and method of identifying and storing memory error locations |
CN101599305A (zh) * | 2008-06-04 | 2009-12-09 | 威刚科技股份有限公司 | 具有数据修复功能的储存系统及其数据修复方法 |
US20100037097A1 (en) * | 2008-08-07 | 2010-02-11 | Hitachi, Ltd. | Virtual computer system, error recovery method in virtual computer system, and virtual computer control program |
US20110271152A1 (en) * | 2010-04-28 | 2011-11-03 | Hitachi, Ltd. | Failure management method and computer |
US20120023364A1 (en) * | 2010-07-26 | 2012-01-26 | Swanson Robert C | Methods and apparatus to protect segments of memory |
US20120137168A1 (en) * | 2010-11-26 | 2012-05-31 | Inventec Corporation | Method for protecting data in damaged memory cells by dynamically switching memory mode |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114518972A (zh) * | 2022-02-14 | 2022-05-20 | 海光信息技术股份有限公司 | 内存错误处理方法、装置、内存控制器及处理器 |
Also Published As
Publication number | Publication date |
---|---|
EP2901281A4 (en) | 2016-06-22 |
EP2901281B1 (en) | 2017-11-01 |
US9804917B2 (en) | 2017-10-31 |
JP5965076B2 (ja) | 2016-08-03 |
EP2901281A1 (en) | 2015-08-05 |
US20150234702A1 (en) | 2015-08-20 |
TW201415476A (zh) | 2014-04-16 |
CN104685474B (zh) | 2018-04-20 |
WO2014051550A1 (en) | 2014-04-03 |
TWI543179B (zh) | 2016-07-21 |
JP2015529927A (ja) | 2015-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104685474A (zh) | 包括不可纠正的错误的地址范围的通知 | |
US7814366B2 (en) | On-demand CPU licensing activation | |
US20140188829A1 (en) | Technologies for providing deferred error records to an error handler | |
US7895477B2 (en) | Resilience to memory errors with firmware assistance | |
CN109656895B (zh) | 分布式存储系统、数据写入方法、装置和存储介质 | |
US6550019B1 (en) | Method and apparatus for problem identification during initial program load in a multiprocessor system | |
US9529674B2 (en) | Storage device management of unrecoverable logical block addresses for RAID data regeneration | |
US20060218438A1 (en) | Method and apparatus for identifying failure module | |
CN109753378A (zh) | 一种内存故障的隔离方法、装置、系统及可读存储介质 | |
EP2329384B1 (en) | Memory management techniques selectively using mitigations to reduce errors | |
US7953914B2 (en) | Clearing interrupts raised while performing operating system critical tasks | |
CN113568777B (zh) | 一种故障处理方法、装置、网络芯片、设备及存储介质 | |
CN115705261A (zh) | 内存故障的修复方法、cpu、os、bios及服务器 | |
CN107729182B (zh) | 数据存储和访问的方法及装置 | |
CN117170806A (zh) | 虚拟机运行稳定性增强的方法、装置、电子设备及介质 | |
US8195981B2 (en) | Memory metadata used to handle memory errors without process termination | |
US7895493B2 (en) | Bus failure management method and system | |
Zhang et al. | Software-Based Detecting and Recovering from ECC-Memory Faults | |
CN112562774B (zh) | 存储设备挂载方法、装置、计算机设备和存储介质 | |
CN113946463A (zh) | 一种risc-v服务器自检测方法、装置、软件架构及电子设备 | |
CN118280429A (zh) | 固态硬盘中qlc数据恢复方法、装置、设备及介质 | |
CN115495291A (zh) | 用于促进系统致命错误的记录的方法和设备 | |
CN116466875A (zh) | 用于系统中的离线修复及后续重新集成的方法和系统 | |
CN117271190A (zh) | 硬件可纠正错误处理方法及系统 | |
CN116089155A (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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160913 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership |
|
GR01 | Patent grant | ||
GR01 | Patent grant |