CN104685474A - 包括不可纠正的错误的地址范围的通知 - Google Patents

包括不可纠正的错误的地址范围的通知 Download PDF

Info

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
Application number
CN201280076003.2A
Other languages
English (en)
Other versions
CN104685474B (zh
Inventor
安德鲁·克里斯托弗·沃尔顿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN104685474A publication Critical patent/CN104685474A/zh
Application granted granted Critical
Publication of CN104685474B publication Critical patent/CN104685474B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/073Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (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所述的介质,其中所述处理器通过消耗导致机器校验异常的毒药来检测毒药。
CN201280076003.2A 2012-09-25 2012-09-25 用于处理不可纠正的内存错误的方法及非瞬态处理器可读介质 Active CN104685474B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114518972A (zh) * 2022-02-14 2022-05-20 海光信息技术股份有限公司 内存错误处理方法、装置、内存控制器及处理器

Families Citing this family (10)

* Cited by examiner, † Cited by third party
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
US10176043B2 (en) 2014-07-01 2019-01-08 Hewlett Packard Enterprise Development Lp 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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
JP4585520B2 (ja) * 2004-10-14 2010-11-24 株式会社アドバンテスト 試験装置及び試験方法
US7546487B2 (en) 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
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 パナソニック株式会社 抵抗変化型不揮発性記憶素子のフォーミング方法及び抵抗変化型不揮発性記憶装置
US8861727B2 (en) * 2010-05-19 2014-10-14 Cleversafe, Inc. Storage of sensitive data in a dispersed storage network
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
WO2014193412A1 (en) * 2013-05-31 2014-12-04 Hewlett-Packard Development Company, L.P. Memory error determination
US9323607B2 (en) * 2014-04-29 2016-04-26 Seagate Technology Llc Data recovery once ECC fails to correct the data

Patent Citations (12)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
TWI543179B (zh) 2016-07-21
US20150234702A1 (en) 2015-08-20
EP2901281B1 (en) 2017-11-01
CN104685474B (zh) 2018-04-20
JP5965076B2 (ja) 2016-08-03
WO2014051550A1 (en) 2014-04-03
US9804917B2 (en) 2017-10-31
JP2015529927A (ja) 2015-10-08
TW201415476A (zh) 2014-04-16
EP2901281A1 (en) 2015-08-05

Similar Documents

Publication Publication Date Title
CN104685474A (zh) 包括不可纠正的错误的地址范围的通知
EP2329371B1 (en) Evaluating effectiveness of memory management techniques selectively using mitigations to reduce errors
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
US7624301B2 (en) Method and apparatus for identifying failure module
CN109753378A (zh) 一种内存故障的隔离方法、装置、系统及可读存储介质
KR20230041103A (ko) 메모리 고장 처리 방법 및 장치
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) 硬件可纠正错误处理方法及系统

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