CN103415840A - 跨硬件层和软件层的错误管理 - Google Patents

跨硬件层和软件层的错误管理 Download PDF

Info

Publication number
CN103415840A
CN103415840A CN2011800685836A CN201180068583A CN103415840A CN 103415840 A CN103415840 A CN 103415840A CN 2011800685836 A CN2011800685836 A CN 2011800685836A CN 201180068583 A CN201180068583 A CN 201180068583A CN 103415840 A CN103415840 A CN 103415840A
Authority
CN
China
Prior art keywords
hardware unit
error
mistake
application program
management modules
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
CN2011800685836A
Other languages
English (en)
Other versions
CN103415840B (zh
Inventor
N·P·卡特
E·C·汉娜
H·纳艾米
M·B·海科克
D·S·加德纳
S·Y·伯卡尔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN103415840A publication Critical patent/CN103415840A/zh
Application granted granted Critical
Publication of CN103415840B publication Critical patent/CN103415840B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0766Error or fault reporting or storing
    • G06F11/0781Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
    • 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1428Reconfiguring to eliminate the error with loss of hardware functionality

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Hardware Redundancy (AREA)

Abstract

通常,本发明提供了跨硬件层和软件层的错误管理,以使得硬件和软件在面对因老化、制造容差等引起的错误和硬件改变时能够传递可靠的操作。在一个实施例中,提供了错误管理模块,其收集来自硬件层和软件层的信息,并且检测和诊断错误。可以选择硬件或软件恢复技术来提供有效的操作,并且,在一些实施例中,尽管存在永久错误,但硬件装置可以被重新配置以防止将来的错误并允许硬件装置进行操作。

Description

跨硬件层和软件层的错误管理
技术领域
本公开涉及硬件层和软件层的错误管理,并且更特别地涉及硬件和软件应用程序的协作式跨层错误管理。
背景技术
随着制造工艺的特征尺寸缩小,错误率、装置变化以及装置老化增加,这迫使系统放弃如下的设想:电路将如期望地那样工作并且电路在计算机系统的整个寿命期间将保持不变。当前的可靠性技术非常以硬件为中心,这可以简化软件设计,但是通常能源消耗量大并且经常牺牲效率和带宽。就编写有错误检测能力和恢复能力的应用程序来说,应用程序方法可能是不充分的,甚至可能与硬件可靠性方法冲突。因而,当前的仅硬件可靠性技术或仅软件可靠性技术不能恰当地响应于错误,尤其是当错误率由于老化、装置变化以及环境因素而增加时。
附图说明
通过下面对与所要求保护的主题一致的实施例的详细描述,所要求保护的主题的特征和优点将显而易见,其描述应参考附图考虑,其中:
图1图示出与本公开的各个实施例一致的系统。
图2图示出与本公开的一个实施例一致的用于确定系统信息的方法。
图3图示出与本公开的一个实施例一致的用于检测和诊断硬件错误的方法。
图4图示出与本公开的一个实施例一致的用于错误恢复操作的方法。
图5图示出与本公开的一个实施例一致的用于硬件装置重新配置和系统适应的方法。
图6图示出与本公开的一个实施例一致的用于硬件装置和在硬件装置上运行的至少一个应用程序的跨层错误管理的方法。
虽然下面详细的描述将参照图示出的实施例进行,但是对于本领域技术人员来说其许多替换、改进以及变型将是显而易见的。
具体实施方式
总的来说,本公开提供的系统(和方法)能够使硬件和软件协作从而在面对由于老化、制造容差、环境条件等引起的错误和硬件变化时能够传递可靠的操作。在一个系统示例中,错误管理模块提供错误检测、诊断、恢复和硬件重新配置以及适应。错误管理模块被配置为与硬件层通信,以获得关于硬件的状态(例如错误条件、已知缺陷等)、错误处理能力和/或其他硬件参数的信息,并且被配置为控制硬件的各种操作参数。类似地,错误管理模块被配置为与至少一个软件应用程序层通信,以获得关于应用程序的可靠性要求(若有的话)、错误处理能力和/或与错误解决有关的其他软件参数的信息,并且被配置为控制应用程序的错误处理。利用硬件层和应用程序层的各种能力和/或局限性的知识,除了其他系统参数以外,错误管理模块被配置为决定应如何处理错误、在任意给定时间应激活哪一个硬件错误处理能力、以及如何配置硬件以解决再现错误。
图1图示出与本公开的各个实施例一致的系统。一般来说,图1的系统100包括硬件装置102、操作系统(OS)104、错误管理模块106以及至少一个应用程序108。如下面将更加详细描述的,错误管理模块106被配置为提供硬件装置102和应用程序108的跨层恢复力(resilience)和可靠性以管理错误。硬件装置102可以包括被配置为与OS104、错误管理模块106和/或应用程序108交换命令和数据的任意类型的电路。例如,硬件装置102可以包括在通用计算系统(例如台式PC、膝上型计算机、移动PC、手持移动装置、智能电话等)中可见的商品电路(例如,多核心CPU(其可以包括多个处理核心和算术逻辑单元(ALU))、存储器、存储器控制单元、视频处理器、网络处理器、网络处理器、总线控制器等)和/或在通用计算系统和/或专用计算系统(例如高可靠性系统、超级计算系统等)中可见的定制电路。
硬件装置102还可以包括错误检测电路110。一般来说,错误检测电路110包括被配置为检测与硬件装置102相关联的错误的任意类型的已知或之后开发的电路。错误检测电路110的示例包括存储器ECC码、计算单元(例如CPU等)上的奇偶码/剩余码、循环冗余码(CRC)、检测定时错误的电路(RAZOR、错误检测时序电路等)、检测表示错误(诸如在电路应当空闲期间内的电流尖脉冲)检验和码的电性能的电路、内装自测试(BIST)、冗余计算(在时间、空间方面,或者在这两者方面)、路径预测器(在程序以不寻常方式进行时通过指令和信号潜在错误观察程序进行路线的电路)、当模块已经长时间未响应时发信号的“看门狗”计时器、以及界限检验电路。
硬件装置102还可以包括错误恢复电路132。一般来说,错误恢复电路132包括被配置为从与硬件装置102相关联的错误中恢复的任意类型的已知或之后开发的电路。基于硬件的错误恢复电路的示例包括具有投票(在时间、空间方面,或者在这两者方面)的冗余计算、错误校正码、指令的自动重发以及回退到节约硬件程序状态。
虽然错误检测电路110和错误恢复电路132可以是分开的电路,但是在一些实施例中,错误处理电路110和错误恢复电路132可以包括至少部分地操作以既检测错误又从错误中恢复的组合电路。“电路”,如此处在任一实施例中所使用的,例如可以单独地或以任意组合方式包括硬连线电路、可编程电路、状态机电路,和/或存储由可编程电路执行的指令的固件。
应用程序108可以包括任意类型的软件包、代码模块、固件和/或指令集,其被配置为与硬件装置102、OS104和/或错误管理模块106交换命令和数据。例如,应用程序108可以包括与通用计算系统相关联的软件包(例如终端用户通用应用程序(例如微软Word、Excel等)、网络应用程序(例如网络浏览器应用程序、电子邮件应用程序等))和/或为通用计算系统和/或专用计算系统编写的定制软件包、定制码模块、定制固件和/或定制指令集(例如科学计算包、数据包等)。
应用程序108可以被配置为指定可靠性要求122。可靠性要求122可以包括例如可以被应用程序108允许的一组容错。通过示例的方式且假设应用程序108为视频应用程序,可靠性要求122可以将特定的错误指定为不能被忽略但对应用程序108的性能和/或功能无显著影响的关键错误,并且可以将其他错误指明为可以完全被忽略的非关键错误(或者被忽略直到这种错误的量超过预定的错误率)。继续此示例,用于此应用程序的关键错误可以包括在计算新视频帧的起点时的错误,而像素渲染错误可以被认为是非关键错误(如果在预定错误率以下其可以被忽略)。在财务应用程序的环境中,可靠性要求122的另一个示例包括应用程序可以忽略不会引起最后结果改变至少百分之一的任何错误的说明。在执行解决方案的反复求精的应用程序的环境中,可靠性要求122的又一示例包括应用程序可以容许中间步骤中的一定错误的说明,这种错误可以只引起应用程序需要更多的迭代以产生正确的结果。一些应用程序(诸如因特网搜索)具有多个正确的结果,并且能够忽略不会防止应用程序发现正确结果之一的错误。当然,这些只是可以与应用程序108相关联的可靠性要求122的一些示例。
应用程序108还可以包括错误检测能力124。例如,错误检测能力124可以包括一个或多个指令集,该指令集使得应用程序108能够检测在执行应用程序108的全部或部分期间发生的特定错误。基于应用程序的错误检测能力124的示例包括能够使应用程序108观察操作结果并且确定结果是否正确的自检验码(例如给出操作的操作数和指令)。基于应用程序的错误检测能力124的其他示例包括监控专用不变量(例如,变量X应总是在1和100之间,变量Y应总是小于变量X,比较序列中只有一个应为真等)的代码、自检验码(称为非确定性多项式(NP)的一类计算--完全已知能够以比产生结果花费更少的时间来检验其结果的正确性);类似的,已知多种技术,诸如用于增加自检验到对矩阵等的数学计算的基于应用程序的容错(ABFT)、基于应用程序的检验和或其他错误检测码、针对应用程序的冗余执行等。
应用程序108还可以包括错误恢复能力126。例如,错误恢复能力126可以包括一个或多个指令集,该指令集使应用程序108能够从执行应用程序108的全部或部分期间发生的特定错误中恢复。基于应用程序的错误恢复能力126的示例可以包括能够被再执行直到它们正确完成的计算(幂等计算)、基于应用程序的检验点和回退、基于应用程序的错误校正码(例如ECC码)、冗余执行等。
如这里所使用的,术语“错误”指的是来自硬件装置102和/或应用程序108的任意类型的意外响应。例如,与硬件装置102相关联的错误可以包括逻辑/电路故障、单粒子翻转、由于老化引起的定时冲突等。与应用程序108相关联的错误可以包括例如控制流错误(诸如取向错误路径的分支)、操作数错误、指令错误等。当然,虽然特定的应用程序可以包括错误检测能力、错误恢复性能力和/或指定可靠性要求的本领,但是仍存在不包括这些能力/本领中的至少一个的多类“遗留”软件应用程序。因而,在其他实施例中,应用程序106可以是不包括错误检测能力124、错误恢复能力126和/或指定可靠性需要122的本领中的一个或多个的遗留应用程序。
OS104可以包括任何通用操作系统或定制操作系统。例如,OS104可以使用微软Windows、HP-UX、Linux或UNIX、和/或其他通用操作系统来实施。OS104可以包括被配置为将硬件装置102(或其部件)分配给至少一个应用程序108和/或与一个或多个应用程序相关联的一个或多个线程的任务调度程序130。任务调度程序130可以被配置为基于例如负荷分布、硬件装置102的使用要求、硬件装置102的处理和/或容量、应用程序要求、硬件装置102的状态信息等来进行这种分配。例如,如果硬件装置102是多核心CPU并且系统100包括请求来自CPU的服务的多个应用程序,则任务调度程序130可以被配置为将每个应用程序分配给唯一的核心使得负荷遍及CPU分布。另外,OS104可以被配置为指定预定义的和/或用户功率管理参数。例如,如果系统100是电池供电装置(例如,膝上型计算机、手持装置、PDA等),OS104可以指定用于硬件装置102的功率预算,其可以包括例如与硬件装置102相关联的最大可允许功率损耗。另外,OS功率管理可以允许用户提供关于他们是更想要最大性能还是最大电池寿命的指导,同时一些应用程序具有性能(服务质量)要求(例如,视频播放器需要处理60帧/秒,VOIP需要跟得上口头数据速率等)。这种用户输入和/或应用程序要求也可以与任务调度一起被包括。另外,优先因子可以与任务调度一起被包括。在汽车内的计算系统的环境中,优先因子的示例包括为响应碰撞分配高优先级而为无线电设备分配低优先级。另外,任务调度可以考虑硬件状态信息的因素。例如,为了防止集成电路过热,对于应用程序来说可用的核心数量可能会随着集成电路温度的增加而减少。
错误管理模块106被配置为与硬件装置102、应用程序108和/或OS104交换命令和/或数据。模块106被配置为确定硬件装置102和/或应用程序108的能力,检测在硬件装置102和/或应用程序108中发生的错误,并且试图诊断这些错误,从这些错误中恢复和/或重新配置硬件使得系统能够例如适应永久硬件故障、容许性能变化(诸如老化等)。另外,模块106被配置为选择适于整个系统参数(例如功率管理)的错误恢复机制,以使得硬件102和/或应用程序108能够从特定错误中恢复。模块106进一步被配置为重新配置硬件装置102(例如,通过改变硬件操作点和/或禁用不再起作用的硬件装置的多个部分),以解决错误和/或避免将来的错误。另外,利用另外的系统参数(例如,功率预算等),模块106被配置为基于那些系统参数来配置硬件装置102。模块106可以进一步被配置为与OS104通信,以获得例如可以指定用于硬件装置102的特定功率预算和/或硬件装置102的使用要求的OS功率管理参数(如可以由应用程序108指定)。
错误管理模块106可以包括系统日志112。系统日志112是包括由错误管理模块106收集的关于硬件装置102、应用程序108和/或OS104的信息的日志文件。特别地,系统日志112可以包括与硬件装置102的错误检测能力和/或错误处理能力有关的信息、与应用程序108的可靠性要求和/或错误检测能力和/或错误处理能力有关的信息、和/或诸如功率管理预算、应用程序优先级、应用程序性能要求(例如,服务质量)等的系统信息(如可以由OS104提供且如上所述)。系统日志112的结构可以例如是查阅表(LUT)、数据文件等。
错误管理模块106还可以包括错误日志114。错误日志114是包括例如与由硬件装置102和/或应用程序108检测到的错误的性质和频率有关的信息的日志文件。因而,例如,当硬件装置102上发生错误时,错误管理模块106可以轮询硬件装置102以确定已发生的错误的类型(例如,逻辑错误(例如,算错的值)、定时错误(正确的结果,但是太晚了)、数据保持错误(从存储器或寄存器返回的错误值))。另外,错误管理模块106可以确定错误的严重性(例如,产生的错误比特越多,错误就越严重,特别是对于数据保持错误)。当模块106检测到错误时,可以将错误类型和/或严重性记录到错误日志114中。另外,可以确定硬件装置102中错误的位置并且记录到系统日志114中。例如,如果硬件装置102是多核心CPU,则错误可能会在多个核心之一上的ALU中、核心的高速缓冲存储器等中。另外,可以将错误发生时间(例如,时间戳)和已经发生的相同类型的错误的数量记录到错误日志114中。另外,错误日志114可以包括已解决相同类型或类似类型的先前错误的指明错误恢复机制。例如,如果使用应用程序108的所选择的错误恢复能力126来解决先前的错误,则可以将这种信息记录到错误日志114中以用于将来参考。错误日志114的结构可以例如是查阅表(LUT)、数据文件等。
错误管理模块106还可以包括错误管理器116。错误管理器116是被配置为管理如这里所描述的在系统100中发生的错误的一组指令。错误管理包括收集硬件装置102和应用程序108的能力和/或限制的信息,以及收集来自OS104的系统资源信息(例如,功率预算、带宽要求等)。另外,错误管理包括检测在硬件装置102中发生(或在应用程序108中发生)的错误,以及诊断这些错误以确定是否可以恢复或者硬件装置是否能被配置为解决错误和/或防止将来的错误。下面将更加详细描述这些操作中的每一个操作。
错误管理模块106还可以包括硬件图118。硬件图118是硬件装置102的能力(诸如已知的永久故障)和操作点的当前范围和可允许范围的日志。操作点可以包括例如硬件装置102的供应电压和/或时钟速率的可允许值。硬件装置102的操作点的其他示例包括温度/时钟速率对(例如,如果在80C以下则核心X能够以3.5GHz运行,如果在80C以上则核心X能够以3.0GHz运行)。如果硬件装置102的操作点和/或能力因重新配置技术(下面所述)而改变,则硬件装置102的新操作点也可以被记录到硬件图118中。硬件图118的结构可以例如是查阅表(LUT)、数据文件等。
错误管理模块106还可以包括硬件测试例程117。硬件测试例程117可以包括在恢复操作(下面所述)期间由错误管理模块106使用的一组指令,以使得硬件装置102在多个操作点执行测试。这里,“测试”可以包括被设计用于练习硬件(ALU、存储器等)的不同部分的例程、已知用来在逻辑路径上产生最坏情况延迟的例程(例如,在加法器中练习所有进位链的加法)、已知用来耗费最大可能功率的例程、测试不同硬件单元之间的通信的例程、测试硬件中少有的“角落”情况的例程、测试错误检测电路110和/或错误恢复电路132的例程等。为了检测故障和/或确定老化是否会在不久的将来有可能产生定时故障和/或确定环境(温度、供应电压等)中的变化是否会使硬件在过去引起错误的操作点处操作,即使硬件未检测到任何错误,硬件测试例程117也会被周期性地调用。
错误管理模块106还可以包括硬件管理器120。硬件管理器120包括能够使错误管理模块与硬件装置102通信并且至少部分地控制硬件装置102的操作的一组指令。因而,例如,当诊断错误和引导错误恢复或重新配置(均将在下面进行描述)时,硬件管理器120可以提供指令给硬件装置102(如可以由错误管理器116指定)。
错误管理模块106还可以包括检验点管理器121。检验点管理器121可以监控运行时的应用程序108,并且保存各个时间的状态信息和/或指令分支。检验点管理器121可以使得应用程序108回退到选择点,例如,回退到发生错误之前的点。在操作中,检验点管理器121可以周期性地将应用程序108的状态保存在存储装置中(因而产生应用程序的“已知良好的”快照),并且如果发生错误,则检验点管理器121可以加载应用程序108的检验点状态,使得应用程序108能够重新运行应用程序中承受错误的那部分。例如,这可以使应用程序108能够继续运行,即使已经发生了错误并且该错误正在被错误管理模块106诊断。
错误管理模块106还可以包括编程接口132和134,以使得能够在硬件装置102和错误管理模块106之间以及在应用程序108和错误管理模块106之间进行通信。每个编程接口132和134可以包括例如应用程序程序接口(API),其包括定义可以在两个实体如硬件装置102和模块106之间以及应用程序108和模块106之间调用或运行的一组函数或例程的说明。
应当注意的是,尽管图1描绘了单个应用程序108,但是在其他实施例中,多于一个的应用程序可以请求来自硬件装置102的服务,并且每个这种应用程序可以包括如上面所说的用于应用程序108的那些类似的特征。例如,如果硬件装置102是多核心CPU,则多个应用程序可以运行在CPU上,并且与这里的描述一致的,对于在硬件装置102中运行的每个应用程序来说,错误管理模块106可以被配置为提供错误管理。类似地,尽管图1描绘了单个硬件装置102,但是在其他实施例中,多于一个的硬件装置可以服务应用程序108,并且每个这种硬件装置可以包括如上面所说的用于硬件装置102的那些类似的特征。例如,如果硬件装置102是多核心CPU,则CPU的每个核心可以被认为是单独的硬件装置,并且这些核心(或其一些子集)的集合可以作为应用程序108和/或应用程序108的一个或多个线程的主机。在任意情况下,与这里的描述一致的,对于系统100中的每个硬件装置来说,错误管理模块106可以被配置为提供错误管理。
错误管理模块106可以被实施为执行本文所描述的操作的软件包、代码模块、固件和/或指令集。在一个示例中,如图1所描绘的,错误管理模块106可以被包括作为OS104的一部分。为此,错误管理模块106可以被实施为与OS104和/或装置驱动器(诸如与硬件装置102一起包括的装置驱动器)集成在一起的软件内核。在其他实施例中,错误管理模块106可以被实施为以与本文提供的描述一致的方式配置的独立软件和/或固件模块。在又一些其他实施例中,错误管理模块106可以包括例如经由网络(例如企业内部网、因特网、LAN、WAN等)彼此通信和与系统100的其他部件通信的多个分布式模块。在又一些其他实施例中,错误管理模块可以被实施为硬件装置102的电路,如由图1的虚线框106’所描绘出的,并且,参照错误管理模块106描述的操作可以同样地如错误管理模块106’一样在电路中实施。在又一些其他实施例中,错误管理模块的部件可以分布在硬件装置102和基于软件的模块106之间。在这种实施例中,例如,测试例程117可以被实施为硬件装置102上的电路,而模块106的其余部件可以被实施为软件和/或固件。
下面将参照附图2、3、4、5和6描述根据本公开的各个实施例的错误管理模块106的操作。
确定系统信息
图2图示出与本公开的一个实施例一致的用于确定系统信息的方法200。特别是,此实施例的方法200确定关于硬件装置、应用程序和/或操作系统的信息,使得在给出关于硬件装置、应用程序和/或操作系统的跨层信息的情况下,错误管理模块具有能够做出有效错误管理决定的信息。继续参照图1,并且为了清楚而省略图1中的附图标记,方法200的操作可以包括确定硬件错误检测能力和/或错误恢复能力202。在一个实施例中,错误管理模块可以轮询硬件装置以确定哪一个(如果有的话)硬件能力可用。在另一实施例中,例如如果错误管理模块是装置驱动器的形式,则此信息可以由硬件制造商和/或第三方供应商供应并且与错误管理模块一起被包含。错误管理模块还可以确定已知的硬件永久错误204。永久错误可以包括例如一个或多个故障核心/ALU、故障缓冲存储器、故障存储器单元和/或使得硬件装置的至少一部分不能操作的硬件装置的其他故障部分。
操作还可以包括确定应用程序是否包括错误检测能力和/或错误恢复能力206。另外,操作可以包括确定应用程序的可靠性要求208。在一个实施例中,错误管理模块可以轮询应用程序以确定哪一个应用程序能力和/或要求(如果有的话)可用。在另一个实施例中,例如当应用程序通过经由操作系统请求来自硬件装置的服务而实现“在线”时,错误管理模块可以接收来自操作系统的指示应用程序正请求来自硬件装置的服务的消息,并且OS可以促使错误管理模块轮询应用程序以确定能力和/或要求,或者应用程序可以将应用程序的能力和/或要求转发到OS。
另外,错误管理模块可以被配置为确定如可以由OS所指定的功率管理参数和/或硬件使用要求210。例如,功率管理参数可以包括用于硬件装置的可允许功率预算(其可以基于电池相对壁式插座电源)。基于硬件装置、应用程序和功率管理参数的信息,操作还可以包括禁用所选择的硬件错误检测能力和/或错误处理能力212。例如,给出的错误检测技术可以在应用程序中运行时相对硬件要求更少的功率和更少的带宽。因而,错误管理模块可以禁用所选择的硬件错误检测能力,以节省功率和/或提供更有效的操作。作为另一个示例,如果应用程序可靠性要求指示特定的错误是非关键错误,则错误管理模块可以禁用被设计用于检测那些非关键错误的所选择的硬件错误检测能力,其在发生这种非关键错误时可以转换成硬件操作开销的显著减少。
操作还可以包括生成当前硬件操作点和已知能力的硬件图214。如上述所注意的,硬件装置的操作点可以包括允许硬件装置的操作的有效电压/时钟频率对(例如,Vdd/时钟)。已知的能力可以包括与硬件装置相关联的已知错误或和/或已知故障。在一个实施例中,错误管理模块可以轮询硬件装置以确定哪一个(如果有的话)操作点可用于硬件装置,以及哪一个(如果有的话)已知故障与硬件装置相关联和/或是硬件装置的子部分。在另一实施例中,例如如果错误管理模块是装置驱动器的形式,则此信息可以至少部分地由硬件制造商和/或第三方供应商供应,并且与错误管理模块一起被包括。
操作还可以包括生成系统日志216。如上所述,系统日志112可以包括与硬件装置102的错误检测能力和/或错误处理能力有关的信息、与应用程序108的可靠性要求和/或错误检测能力和/或错误处理能力有关的信息、和/或系统信息(如可以由OS104提供)。错误管理模块还可以被配置为通知硬件操作点/能力的OS任务调度程序218。这可以使得任务调度程序基于硬件的已知操作点和/或能力来有效地调度硬件任务。因而,例如,如果硬件装置的ALU发生故障(但其余的核心/ALU可以适当地工作),则向OS任务调度程序通知该信息可以使得OS任务调度程序做出关于哪一个应用程序/线程不应被分配给具有缺陷ALU的核心的有效决定(例如,计算密集型应用程序/线程)。
在通常的系统中,应用程序可以随着时间以动态方式开始和结束。因而,在一些实施例中,当另外的应用程序开始并且请求来自硬件装置的服务(即,交换命令和/或数据)时,可以重复操作206、208、210、212、214、216和/或218以使得错误管理模块维持当前系统状态的认知。
错误检测和诊断
图3图示出与本公开的一个实施例一致的用于检测和诊断硬件错误的方法300。继续参照图1,并且为了清楚而省略图1的附图标记,错误管理模块可以等待来自硬件装置或应用程序的错误信号302。一旦错误管理模块接收来自硬件装置或应用程序的错误信号304,错误管理模块可以例如通过将错误的类型和时间记录到错误日志中来记录错误306。
错误管理模块可以为错误恢复技术确定错误是否是符合条件的。例如,错误管理模块可以将当前错误与错误日志中的先前错误进行比较,以确定当前错误与错误日志中的先前错误是否是相同类型308。这里,错误的“相同类型”可以包括例如相同类中或硬件装置的相同位置中的同样错误或类似错误。如果不是相同类型的错误,则错误管理模块可以将尝试指向错误恢复312,如下面参照图4所描述的。如果已经发生相同类型的错误,则错误管理模块可以确定相同类型的当前错误和先前错误是否已经在彼此的预定时间帧内发生310。预定时间帧可以基于例如,错误是否被认为是关键的、错误是否发生在具体的存储器单元、硬件装置的操作环境等。如果不是,则错误管理模块可以将尝试指向错误恢复312,如下面参照图4所描述的。来自308和/或310的操作的肯定性指示可以表示诸如可以由老化的硬件(例如,集成电路中一个或多个晶体管的老化)、环境因素等引起再现错误,和/或在硬件装置的全部或部分中的永久错误。
如果在预定时间帧内已经发生错误(310),则错误管理模块可以执行更详细的诊断,以确定例如硬件是否可以被重新配置来解决错误或防止将来的错误,或者确定错误是否是影响整个硬件装置或部分硬件装置的永久错误。错误管理模块可以指示操作系统将应用程序/线程移动到其他硬件,以允许硬件装置的更详细的诊断314。例如,如果错误发生在多核心CPU的一个核心中,则错误管理模块可以指示OS将运行在具有错误的核心上的应用程序移动到另一核心。作为另一示例,如果错误发生在存储器装置中指定的地址范围内,则应用程序可以被移动到另一存储器和/或其他存储器地址,以允许对存储器装置的进一步诊断。关于运行的应用程序和未解决的错误,一旦应用程序/线程已经从出错的硬件装置移走,错误管理模块就可以将应用程序回退到错误发生以前的最后检验点并且重新开始应用程序的操作。如果应用程序/线程无法从出错的硬件中移走,则错误管理模块可以中止应用程序并且执行更详细的诊断(如下所述),然后,如果可用,则将应用程序回退到发生错误以前的最后的检验点。
为了进一步诊断错误,错误管理模块可以在多个操作点(如果可用)处执行硬件装置的测试316。例如,错误管理模块可以根据硬件图确定硬件装置是否能够在多于一个的操作点(例如,Vdd、时钟速率等)处运行。在一个实施例中,错误管理模块可以指示硬件装置调用能够在多个操作点进行测试的硬件电路(例如,内装自测试(BIST)电路)。在另一实施例中,错误管理模块可以控制硬件装置(经由硬件管理器)并且在硬件装置上执行测试例程。例如,错误管理模块可以包括用于整数ALU的普通测试例程以及用于ALU的不同部件(加法器、乘法器等)的具体测试例程。然后错误管理模块可以运行一系列这些测试以精确地确定故障在哪里,例如通过以普通测试开始来看ALU是否根本不操作,然后运行具体测试例程来诊断每个部件。这些测试可以在不同的操作点处运行,以诊断定时错误以及逻辑错误。当然,如果应用程序无法从出错的硬件装置中移走314,或者如果测试无法在多个操作点处运行316,则错误管理模块可以尝试重新配置硬件装置322,如下面参照图5所描述的。
如果在硬件装置上在多个操作点处执行测试是可用的选项316,则方法还可以包括确定错误是否在所有的操作点处再现318,并且如果是的话则错误管理模块可以尝试重新配置硬件装置322,如下面参照图5所描述的。如果错误在所有的操作点处不再现,则操作可以包括确定错误是否在任意操作点处再现320,并且如果错误在一个或多个操作点处不再现(但是不是所有的操作点),则错误管理模块可以尝试重新配置硬件装置322,如下面参照图5所描述的。如果错误既不在所有的操作点处再现(318)也不在任意操作点处再现(320),则错误管理模块可以假设错误是长持续时间的瞬态错误或一致发生的两个(或更多)错误,并且可以返回到等待来自硬件装置或应用程序的错误信号的状态324。
错误恢复
图4图示出与本公开的一个实施例一致的用于错误恢复操作的方法400。继续参照图1,并且为了清楚而省略图1的附图标记,错误管理模块可以确定硬件装置或应用程序能够从错误中恢复(如图3的操作308和/或310处所描述的),并且错误管理模块可以开始错误恢复的操作402。错误恢复操作可以包括确定错误是否是关键错误404。如上所述,应用程序可以定义某个错误或某类错误为关键的,使得应用程序的继续操作例如是不可能的、不现实的或者如果应用程序继续但不校正错误将导致不能接受的错误。如果错误不是关键的,则错误可以被忽略406,并且硬件装置可以继续服务应用程序。如果错误是关键的,则错误管理模块可以确定应用程序是否能从错误中恢复408。如上所述,某些应用程序可以包括能够使应用程序从特定类型的错误中恢复的错误恢复码。例如,当在硬件装置中发生无法处理的错误时,诸如在仅有奇偶保护的单元上的双比特ECC错误或奇偶故障,错误管理模块可以从应用程序提供的一组能力中选择恢复能力以校正错误并且返回到正常操作条件。这可以使得能从其自身的错误中恢复的应用程序(诸如以功能式样编写的应用程序)比普通应用程序更有效地恢复,这会需要更密集的技术,如检验点和回退。
如果应用程序能从错误中恢复(408),则操作可以包括确定使用应用程序来从错误中恢复是否比使用硬件装置来从错误中恢复更有效410。这里,术语“有效”是指在给出另外的系统参数如功率管理预算、带宽要求等的情况下,应用程序恢复比硬件装置恢复技术对系统资源有更少的要求。如果应用程序能从错误中恢复,则错误管理模块可以指示应用程序使用应用程序的错误恢复能力来从错误中恢复412。如果应用程序不能从错误中恢复(408),或如果硬件装置恢复比应用程序恢复更有效(410),则操作可以包括确定硬件装置是否能重试引起错误的操作414。如果重试操作是可用的,则操作可以被重试416。如果重试出错的操作(416)引起另一错误,则图3的方法可以被调用以检测和诊断新的错误。如果硬件装置无法重试引起错误的操作(414),则操作可以包括回退到检验点418。
硬件重新配置和系统适应
图5图示出与本公开的一个实施例一致的用于硬件装置重新配置和系统适应的方法500。继续参照图1,并且为了清楚而省略图1的附图标记,错误管理模块可以确定通过重新配置硬件装置可以防止将来相同或类似类型的错误(如在图3的操作308和/或310处所描述的),并且错误管理模块可以开始硬件装置重新配置的操作502。重新配置操作可以包括确定硬件装置在一个或多个操作点处是否按意图操作504(意即硬件装置无错误地操作)。如果是,则错误管理模块可以选择最有效的操作点,并且以硬件装置的新操作点更新硬件图506。错误管理模块还可以调度硬件的再测试,以确定在允许的操作点中的变化是永久的还是由于长持续时间的瞬态作用引起的。因而,例如,如果硬件装置在多个供应电压/时钟频率对处保持无错误,则错误管理模块可以选择最高工作供应电压和时钟频率,使得硬件装置因错误而尽可能快地运行。
如果硬件装置在任意操作点处不是无错误地操作(504),则错误管理模块可以确定硬件是否能隔离故障电路508。例如,如果硬件装置是多核心CPU并且在多个核心之一中正发生错误,则硬件装置可以被配置为仅隔离故障核心,而CPU的其余电路可以被认为是有效的。作为另一个示例,如果硬件装置是多核心CPU并且在多个核心之一的ALU上正发生错误,则故障ALU可以被隔离并且被标记为不能使用的,但是包含故障ALU的核心的其余部分仍可以用来服务应用程序/线程。作为另一个示例,如果硬件装置是存储器,则存储器的故障部分(例如,故障地址)可以被隔离并且被标记为不能使用的,从而数据不能写入故障单元(或从故障单元读出数据),但是存储器的其余部分仍可以使用。如果硬件装置能够隔离故障电路(508),则操作还可以包括隔离有缺陷的电路和更新硬件图以表明硬件装置的新降低的能力510。如果不能(508),则操作可以包括更新硬件图以表明硬件不再是可使用的512。如果硬件图被更新(506、510或512),则错误管理模块可以向OS任务调度程序通知硬件装置中的变化。例如,这可以使OS任务调度程序将应用程序和/或线程有效地分配给硬件装置,从而使系统适应于硬件错误。例如,如果硬件装置被列为具有故障ALU,则OS任务调度程序可以使用此信息使得计算密集型应用程序/线程不分配给具有故障ALU的核心。
考虑到前述描述,本公开提供了跨层错误管理,其从硬件层和应用程序层二者确定错误检测能力和恢复能力。当检测到错误时,基于由硬件或应用程序提供的恢复技术中有效或可用的恢复技术,可以诊断错误以确定硬件层或应用程序层是否能从错误中恢复。为此,图6图示出与本公开的一个实施例一致的用于硬件装置和在硬件装置上运行的至少一个应用程序的跨层错误管理的方法600。继续参照图1,此实施例的操作包括确定硬件装置的错误检测能力和/或错误恢复能力602。操作还可以包括确定应用程序是否包括错误检测能力和/或错误恢复能力604。此实施例的操作可以进一步包括接收来自硬件装置或与硬件装置上的错误有关的至少一个应用程序的错误消息606。操作还可以包括至少部分基于硬件装置或至少一个应用程序的错误恢复能力而确定硬件装置或至少一个应用程序是否能从错误中恢复608。当另外的错误发生时,操作606和608可以重复。
虽然附图2、3、4、5和6图示出根据各个实施例的方法,但是应理解的是,在任意实施例中,不是所有的这些操作都是必须的。甚至,本文所全面考虑的是,在本公开的其他实施例中,附图2、3、4、5和/或6所描绘的操作可以任意图中未具体示出的方式组合,但是仍与本公开完全一致。因而,针对在一个图中未精确示出的特征和/或操作的权利要求被认为在本公开的范围和内容内。
本文描述的实施例可以使用硬件、软件和/或固件来实施,例如,以执行本文描述的方法和/或操作。本文所述的特定实施例可以被提供为存储机器可执行指令的有形机器可读介质,该机器可执行指令如果由机器执行的话会使机器执行本文所述的方法和/或操作。有形机器可读介质可以包括但不限于:任意类型的磁盘(包括软盘、光盘、压缩式光盘只读存储器(CD-ROM)、再写式压缩光盘(CD-RW)以及磁光盘)、半导体装置(如只读存储器(ROM)、随机存取存储器(RAM)(如动态和静态RAM)、可擦可编程只读存储器(EPROM)、电可擦写可编程只读存储器(EEPROM)、闪存、磁卡或光学卡)、或者适于存储电子指令的任意类型的有形介质。机器可以包括任意适合的处理平台、装置或系统,计算平台、装置或系统,并且可以使用任意适合的硬件和/或软件的组合来实施。指令可以包括任意适合类型的代码并且可以使用任意适合的编程语言来实施。
因而,在一个实施例中,本公开提供了用于硬件装置和硬件装置上运行的至少一个应用程序的跨层错误管理的方法。该方法包括通过错误管理模块确定硬件装置的错误检测能力或错误恢复能力;通过错误管理模块确定至少一个应用程序是否包括错误检测能力或错误恢复能力;通过错误管理模块接收来自硬件装置或与硬件装置上的错误有关的至少一个应用程序的错误消息;以及通过错误管理模块,至少部分地基于硬件装置的错误恢复能力和/或至少一个应用程序的错误恢复能力,确定硬件装置或应用程序是否能从错误中恢复。
在另一个实施例中,本公开提供了用于提供跨层错误管理的系统。该系统包括硬件层和应用程序层,硬件层包括至少一个硬件装置,而应用程序层包括至少一个应用程序。该系统还包括错误管理模块,该模块被配置为与硬件层和应用程序层交换命令和数据。错误管理模块还被配置为确定至少一个硬件装置的错误恢复能力;确定至少一个应用程序是否包括错误恢复能力;接收来自至少一个硬件装置或与至少一个硬件装置上的错误有关的至少一个应用程序的错误消息;以及至少部分地基于至少一个硬件装置的错误恢复能力和/或至少一个应用程序的错误恢复能力,确定至少一个硬件装置或至少一个应用程序是否能从错误中恢复。
在另一个实施例中,本公开提供了包括存储在其上的指令的有形计算机可读介质,该指令在由一个或多个处理器执行时使计算机系统来执行如下操作,包括:确定至少一个硬件装置的错误恢复能力;确定至少一个应用程序是否包括错误恢复能力;接收来自至少一个硬件装置或与至少一个硬件装置上的错误有关的至少一个应用程序的错误消息;以及至少部分地基于至少一个硬件装置的错误恢复能力和/或至少一个应用程序的错误恢复能力,确定至少一个硬件装置或至少一个应用程序是否能从错误中恢复。
本文采用的术语和表述被用作描述的术语而不是限制的术语,并且在使用这些术语和表述时,并不旨在排除所示出和描述的特征(或其部分)的等同,而且认可的是,在权利要求的范围内是可以进行各种改进的。因此,权利要求旨在覆盖所有的这种等同方案。
本文已经描述了各个特征、方案以及实施例。如本领域技术人员所理解的,这些特征、方案以及实施例易于彼此组合以及变型和修改。因此,本公开应当被认为包含这种组合、变型和修改。

Claims (33)

1.一种用于硬件装置和在所述硬件装置上运行的至少一个应用程序的跨层错误管理的方法,包括:
通过错误管理模块,确定所述硬件装置的错误检测能力或错误恢复能力;
通过所述错误管理模块,确定所述至少一个应用程序是否包括错误检测能力或错误恢复能力;
通过所述错误管理模块,接收来自所述硬件装置或与所述硬件装置上的错误有关的至少一个应用程序的错误消息;
通过所述错误管理模块,至少部分地基于所述硬件装置的错误恢复能力或所述至少一个应用程序的错误恢复能力来确定所述硬件装置或应用程序是否能从错误中恢复。
2.根据权利要求1所述的方法,进一步包括:
通过所述错误管理模块,生成包括按发生的类型和时间列表的错误的错误日志;以及
通过所述错误管理模块,在所述错误日志中记录错误;
其中,确定所述硬件装置或应用程序是否能从错误中恢复包括:
通过所述错误管理模块,比较错误与所述错误日志以确定与所述错误类型相同的错误是否列在所述错误日志中;或者
通过所述错误管理模块,比较错误与所述错误日志以确定与所述错误类型相同的错误是否已在预定时期内发生。
3.根据权利要求1所述的方法,进一步包括:
通过所述错误管理模块,确定所述至少一个应用程序的可靠性要求,所述可靠性要求包括关键错误和非关键错误的列表;
其中,确定所述硬件装置或应用程序是否能从错误中恢复包括:
通过所述错误管理模块,至少部分地基于所述至少一个应用程序的可靠性要求来确定错误是否是关键错误。
4.根据权利要求1所述的方法,进一步包括:
通过所述错误管理模块,确定所述硬件装置的功率管理参数或使用要求;
其中,确定所述硬件装置或应用程序是否能从错误中恢复包括:
通过所述错误管理模块,至少部分地基于所述硬件装置的功率管理或使用要求来选择应用程序恢复能力或硬件装置恢复能力。
5.根据权利要求1所述的方法,其中确定所述硬件装置或应用程序是否能从错误中恢复包括:
通过所述错误管理模块,确定所述硬件装置是否能重试引起错误的操作。
6.根据权利要求1所述的方法,进一步包括:
通过所述错误管理模块,确定所述硬件装置是否能被重新配置为:通过至少部分地确定所述硬件装置是否能在多个操作点处运行,来解决与所述错误类型相同或类似的将来的错误。
7.根据权利要求6所述的方法,进一步包括:
通过所述错误管理模块,确定错误是否在所有操作点处再现;和/或
通过所述错误管理模块,确定错误是否在任意操作点处再现。
8.根据权利要求6所述的方法,进一步包括:
通过所述错误管理模块,确定通过在至少一个操作点处操作所述硬件装置来解决错误;以及
通过所述错误管理模块,向操作系统通知解决错误的所述硬件装置的至少一个操作点。
9.根据权利要求6所述的方法,进一步包括:
通过所述错误管理模块,确定所述硬件装置是否能隔离涉及错误的电路,使得所述硬件装置能够以降低的能力进行操作;以及
通过所述错误管理模块,向操作系统通知所述硬件装置的降低的能力。
10.根据权利要求1所述的方法,进一步包括:
通过所述错误管理模块,确定在所述硬件装置上的错误是否是导致所述硬件装置不能使用的永久错误;以及
通过所述错误管理模块,向操作系统通知所述硬件装置不能使用。
11.根据权利要求1所述的方法,进一步包括:
通过所述错误管理模块,确定所述硬件装置的功率管理参数或使用要求;以及
通过所述错误管理模块,至少部分地基于所述功率管理参数或所述使用要求,禁用所述硬件装置的所选择的错误检测能力或错误恢复能力。
12.一种用于提供跨层错误管理的系统,包括:
硬件层,其包括至少一个硬件装置;
应用程序层,其包括至少一个应用程序;以及
错误管理模块,其被配置为与所述硬件层和所述应用程序层交换命令和数据,所述错误管理模块进一步被配置为:
确定所述至少一个硬件装置的错误恢复能力;
确定所述至少一个应用程序是否包括错误检测能力或错误恢复能力;
接收来自所述至少一个硬件装置或与所述至少一个硬件装置上的错误有关的所述至少一个应用程序的错误消息;以及
至少部分地基于所述至少一个硬件装置的错误恢复能力或所述至少一个应用程序的错误恢复能力来确定所述至少一个硬件装置或所述至少一个应用程序是否能从错误中恢复。
13.根据权利要求12所述的系统,其中所述错误管理模块进一步被配置为:
生成包括按发生的类型和时间列表的错误的错误日志;
在所述错误日志中记录错误;
比较错误与所述错误日志以确定与所述错误类型相同的错误是否列在所述错误日志中;以及
比较错误与所述错误日志以确定与所述错误类型相同的错误是否已在预定时期内发生。
14.根据权利要求12所述的系统,其中所述错误管理模块进一步被配置为:
确定所述至少一个应用程序的可靠性要求,所述可靠性要求包括关键错误和非关键错误的列表;以及
至少部分地基于所述至少一个应用程序的可靠性要求来确定错误是否是关键错误。
15.根据权利要求12所述的系统,其中所述错误管理模块进一步被配置为:
确定所述至少一个硬件装置的功率管理参数或使用要求;以及
至少部分地基于所述至少一个硬件装置的功率管理或使用要求来选择应用程序恢复能力或硬件装置恢复能力。
16.根据权利要求12所述的系统,其中所述错误管理模块进一步被配置为:
确定所述至少一个硬件装置是否能重试引起错误的操作。
17.根据权利要求12所述的系统,其中所述错误管理模块进一步被配置为:
确定所述至少一个硬件装置是否能被重新配置为:通过至少部分地确定所述至少一个硬件装置是否能在多个操作点处运行,来解决与所述错误类型相同或类似的将来错误。
18.根据权利要求17所述的系统,其中所述错误管理模块进一步被配置为:
确定错误是否在所有操作点处再现;和/或
确定错误是否在任意操作点处再现。
19.根据权利要求17所述的系统,其中所述错误管理模块进一步被配置为:
确定通过在至少一个操作点处操作所述至少一个硬件装置来解决错误;以及
向操作系统通知解决错误的所述至少一个硬件装置的至少一个操作点。
20.根据权利要求17所述的系统,其中所述错误管理模块进一步被配置为:
确定所述至少一个硬件装置是否能隔离涉及错误的电路,使得所述至少一个硬件装置能够以降低的能力进行操作;以及
向操作系统通知所述至少一个硬件装置的降低的能力。
21.根据权利要求12所述的系统,其中所述错误管理模块进一步被配置为:
确定在所述硬件装置上的错误是否是导致所述硬件装置不能使用的永久错误;以及
向操作系统通知所述硬件装置不能使用。
22.根据权利要求12所述的系统,其中所述错误管理模块进一步被配置为:
确定所述至少一个硬件装置的功率管理参数或使用要求;以及
至少部分地基于所述功率管理参数或所述使用要求,禁用所述至少一个硬件装置的所选择的错误恢复能力。
23.一种包括存储在其上的指令的有形计算机可读介质,所述指令在由一个或多个处理器执行时使得计算机系统执行如下操作,包括:
确定硬件装置的错误恢复能力;
确定至少一个应用程序是否包括错误恢复能力;
接收来自所述硬件装置或与在至少一个硬件装置上的错误有关的至少一个应用程序的错误消息;以及
至少部分地基于所述至少一个硬件装置的错误恢复能力或所述至少一个应用程序的错误恢复能力来确定所述硬件装置或所述至少一个应用程序是否能从错误中恢复。
24.根据权利要求23所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
生成包括按发生的类型和时间列表的错误的错误日志;
在所述错误日志中记录错误;
比较错误与所述错误日志以确定与所述错误类型相同的错误是否列在所述错误日志中;以及
比较错误与所述错误日志以确定与所述错误类型相同的错误是否已在预定时期内发生。
25.根据权利要求23所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定所述至少一个应用程序的可靠性要求,所述可靠性要求包括关键错误和非关键错误的列表;以及
至少部分地基于所述至少一个应用程序的可靠性要求来确定错误是否是关键错误。
26.根据权利要求23所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定所述硬件装置的功率管理参数或使用要求;以及
至少部分地基于所述硬件装置的功率管理或使用要求来选择应用程序恢复能力或硬件装置恢复能力。
27.根据权利要求23所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定所述硬件装置是否能重试引起错误的操作。
28.根据权利要求23所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定所述硬件装置是否能被重新配置为:通过至少部分地确定所述至少一个硬件装置是否能在多个操作点处运行,来解决与所述错误类型相同或类似的将来的错误。
29.根据权利要求28所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定错误是否在所有操作点处再现;和/或
确定错误是否在任意操作点处再现。
30.根据权利要求28所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定通过在至少一个操作点处操作所述至少一个硬件装置来解决错误;以及
向操作系统通知解决错误的所述至少一个硬件装置的至少一个操作点。
31.根据权利要求28所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定所述至少一个硬件装置是否能隔离涉及错误的电路,使得所述至少一个硬件装置能够以降低的能力进行操作;以及
向操作系统通知所述至少一个硬件装置的降低的能力。
32.根据权利要求23所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定在所述硬件装置上的错误是否是导致所述硬件装置不能使用的永久错误;以及
向操作系统通知所述硬件装置不能使用。
33.根据权利要求23所述的有形计算机可读介质,其中所述指令在由一个或多个处理器执行时导致下列另外的操作,包括:
确定所述至少一个硬件装置的功率管理参数或使用要求;以及
至少部分地基于所述功率管理参数或使用要求,禁用所述至少一个硬件装置的所选择的错误恢复能力。
CN201180068583.6A 2011-02-28 2011-12-21 跨硬件层和软件层的错误管理 Expired - Fee Related CN103415840B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/036,826 US20120221884A1 (en) 2011-02-28 2011-02-28 Error management across hardware and software layers
US13/036,826 2011-02-28
PCT/US2011/066524 WO2012121777A2 (en) 2011-02-28 2011-12-21 Error management across hardware and software layers

Publications (2)

Publication Number Publication Date
CN103415840A true CN103415840A (zh) 2013-11-27
CN103415840B CN103415840B (zh) 2016-08-10

Family

ID=46719832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180068583.6A Expired - Fee Related CN103415840B (zh) 2011-02-28 2011-12-21 跨硬件层和软件层的错误管理

Country Status (5)

Country Link
US (1) US20120221884A1 (zh)
EP (1) EP2681658A4 (zh)
CN (1) CN103415840B (zh)
TW (1) TWI561976B (zh)
WO (1) WO2012121777A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155826A (zh) * 2015-04-16 2016-11-23 伊姆西公司 用于在总线结构中检测及处理错误的方法和系统
CN115150179A (zh) * 2022-04-25 2022-10-04 深圳星云智联科技有限公司 软硬生命老化控制方法和相关装置、芯片、介质和程序

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103842835B (zh) * 2011-09-28 2016-03-23 英特尔公司 自主式通道级老化监控装置和方法
US8769498B2 (en) * 2011-12-07 2014-07-01 International Business Machines Corporation Warning of register and storage area assignment errors
US8954797B2 (en) 2012-04-16 2015-02-10 International Business Machines Corporation Reconfigurable recovery modes in high availability processors
JP6074955B2 (ja) * 2012-08-31 2017-02-08 富士通株式会社 情報処理装置および制御方法
US8966455B2 (en) * 2012-12-31 2015-02-24 International Business Machines Corporation Flow analysis in program execution
US9594411B2 (en) 2013-02-28 2017-03-14 Qualcomm Incorporated Dynamic power management of context aware services
EP2813949B1 (en) * 2013-06-11 2019-08-07 ABB Schweiz AG Multicore processor fault detection for safety critical software applications
US9270659B2 (en) 2013-11-12 2016-02-23 At&T Intellectual Property I, L.P. Open connection manager virtualization at system-on-chip
US9456071B2 (en) 2013-11-12 2016-09-27 At&T Intellectual Property I, L.P. Extensible kernel for adaptive application enhancement
CN105224416B (zh) * 2014-05-28 2018-08-21 联发科技(新加坡)私人有限公司 修复方法及相关电子装置
US10402245B2 (en) 2014-10-02 2019-09-03 Nxp Usa, Inc. Watchdog method and device
US9626220B2 (en) * 2015-01-13 2017-04-18 International Business Machines Corporation Computer system using partially functional processor core
US9563494B2 (en) 2015-03-30 2017-02-07 Nxp Usa, Inc. Systems and methods for managing task watchdog status register entries
CN104932960B (zh) * 2015-05-07 2018-05-15 四川九洲空管科技有限责任公司 一种Arinc429通信系统可靠性改进系统及方法
US9955150B2 (en) * 2015-09-24 2018-04-24 Qualcomm Incorporated Testing of display subsystems
KR102565918B1 (ko) 2016-02-24 2023-08-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작방법
KR102570367B1 (ko) * 2016-04-21 2023-08-28 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
US10127121B2 (en) * 2016-06-03 2018-11-13 International Business Machines Corporation Operation of a multi-slice processor implementing adaptive failure state capture
GB2554940B (en) 2016-10-14 2020-03-04 Imagination Tech Ltd Out-of-bounds recovery circuit
US10134139B2 (en) 2016-12-13 2018-11-20 Qualcomm Incorporated Data content integrity in display subsystem for safety critical use cases
US10445196B2 (en) * 2017-01-06 2019-10-15 Microsoft Technology Licensing, Llc Integrated application issue detection and correction control
US10552245B2 (en) 2017-05-23 2020-02-04 International Business Machines Corporation Call home message containing bundled diagnostic data
JP6853883B2 (ja) * 2017-06-15 2021-03-31 株式会社日立製作所 コントローラ
US10649829B2 (en) * 2017-07-10 2020-05-12 Hewlett Packard Enterprise Development Lp Tracking errors associated with memory access operations
US10997027B2 (en) * 2017-12-21 2021-05-04 Arizona Board Of Regents On Behalf Of Arizona State University Lightweight checkpoint technique for resilience against soft errors
US10777295B2 (en) 2018-04-12 2020-09-15 Micron Technology, Inc. Defective memory unit screening in a memory system
US11449380B2 (en) 2018-06-06 2022-09-20 Arizona Board Of Regents On Behalf Of Arizona State University Method for detecting and recovery from soft errors in a computing device
US10761926B2 (en) 2018-08-13 2020-09-01 Quanta Computer Inc. Server hardware fault analysis and recovery
US11710030B2 (en) * 2018-08-31 2023-07-25 Texas Instmments Incorporated Fault detectable and tolerant neural network
US11321144B2 (en) 2019-06-29 2022-05-03 Intel Corporation Method and apparatus for efficiently managing offload work between processing units
US11372711B2 (en) * 2019-06-29 2022-06-28 Intel Corporation Apparatus and method for fault handling of an offload transaction
US11740973B2 (en) * 2020-11-23 2023-08-29 Cadence Design Systems, Inc. Instruction error handling
FI130137B (en) 2021-04-22 2023-03-09 Univ Of Oulu A METHOD FOR INCREASING ENERGY EFFICIENCY USING ERROR-TOLERANT ALGORITHMS FOR UNDERVOLTAGE DIGITAL SYSTEMS

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126240A1 (en) * 2001-12-14 2003-07-03 Frank Vosseler Method, system and computer program product for monitoring objects in an it network
US20060143551A1 (en) * 2004-12-29 2006-06-29 Intel Corporation Localizing error detection and recovery
US20070038899A1 (en) * 2004-03-08 2007-02-15 O'brien Michael Method for managing faults in a computer system environment
CN101390067A (zh) * 2006-02-28 2009-03-18 英特尔公司 增强众核处理器的可靠性

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6622260B1 (en) * 1999-12-30 2003-09-16 Suresh Marisetty System abstraction layer, processor abstraction layer, and operating system error handling
US7281040B1 (en) * 2000-03-07 2007-10-09 Cisco Technology, Inc. Diagnostic/remote monitoring by email
US6684180B2 (en) * 2001-03-08 2004-01-27 International Business Machines Corporation Apparatus, system and method for reporting field replaceable unit replacement
US7000154B1 (en) * 2001-11-28 2006-02-14 Intel Corporation System and method for fault detection and recovery
US7062755B2 (en) * 2002-10-16 2006-06-13 Hewlett-Packard Development Company, L.P. Recovering from compilation errors in a dynamic compilation environment
US7146542B2 (en) * 2002-12-20 2006-12-05 Hewlett-Packard Development Company, L.P. Method and apparatus for diagnosis and repair of computer devices and device drivers
US7912931B2 (en) * 2003-02-03 2011-03-22 Hrl Laboratories, Llc Method and apparatus for increasing fault tolerance for cross-layer communication in networks
US7380167B2 (en) * 2003-02-13 2008-05-27 Dell Products L.P. Method and system for verifying information handling system hardware component failure diagnosis
US7278080B2 (en) * 2003-03-20 2007-10-02 Arm Limited Error detection and recovery within processing stages of an integrated circuit
US20070028220A1 (en) * 2004-10-15 2007-02-01 Xerox Corporation Fault detection and root cause identification in complex systems
US20060101402A1 (en) * 2004-10-15 2006-05-11 Miller William L Method and systems for anomaly detection
US7308610B2 (en) * 2004-12-10 2007-12-11 Intel Corporation Method and apparatus for handling errors in a processing system
US7949904B2 (en) * 2005-05-04 2011-05-24 Microsoft Corporation System and method for hardware error reporting and recovery
WO2006122225A2 (en) * 2005-05-11 2006-11-16 Board Of Trustees Of Michigan State University Corrupted packet toleration and correction system
US7424666B2 (en) * 2005-09-26 2008-09-09 Intel Corporation Method and apparatus to detect/manage faults in a system
US8358704B2 (en) * 2006-04-04 2013-01-22 Qualcomm Incorporated Frame level multimedia decoding with frame information table
US7849335B2 (en) * 2006-11-14 2010-12-07 Dell Products, Lp System and method for providing a communication enabled UPS power system for information handling systems
US7937618B2 (en) * 2007-04-26 2011-05-03 International Business Machines Corporation Distributed, fault-tolerant and highly available computing system
CA2593169A1 (en) * 2007-07-06 2009-01-06 Tugboat Enterprises Ltd. System and method for computer data recovery
US8527622B2 (en) * 2007-10-12 2013-09-03 Sap Ag Fault tolerance framework for networks of nodes
US8191074B2 (en) * 2007-11-15 2012-05-29 Ericsson Ab Method and apparatus for automatic debugging technique
US8983862B2 (en) * 2008-01-30 2015-03-17 Toshiba Global Commerce Solutions Holdings Corporation Initiating a service call for a hardware malfunction in a point of sale system
GB2458260A (en) * 2008-02-26 2009-09-16 Advanced Risc Mach Ltd Selectively disabling error repair circuitry in an integrated circuit
US8315159B2 (en) * 2008-09-11 2012-11-20 Rockstar Bidco, LP Utilizing optical bypass links in a communication network
JP4709268B2 (ja) * 2008-11-28 2011-06-22 日立オートモティブシステムズ株式会社 車両制御用マルチコアシステムまたは内燃機関の制御装置
JP5335552B2 (ja) * 2009-05-14 2013-11-06 キヤノン株式会社 情報処理装置、その制御方法、及びコンピュータプログラム
US8095759B2 (en) * 2009-05-29 2012-01-10 Cray Inc. Error management firewall in a multiprocessor computer
US20100315399A1 (en) * 2009-06-10 2010-12-16 Jacobson Joseph M Flexible Electronic Device and Method of Manufacture
US8132043B2 (en) * 2009-12-17 2012-03-06 Symantec Corporation Multistage system recovery framework
US9152484B2 (en) * 2010-02-26 2015-10-06 Red Hat, Inc. Generating predictive diagnostics via package update manager
US8762794B2 (en) * 2010-11-18 2014-06-24 Nec Laboratories America, Inc. Cross-layer system architecture design

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126240A1 (en) * 2001-12-14 2003-07-03 Frank Vosseler Method, system and computer program product for monitoring objects in an it network
US20070038899A1 (en) * 2004-03-08 2007-02-15 O'brien Michael Method for managing faults in a computer system environment
US20060143551A1 (en) * 2004-12-29 2006-06-29 Intel Corporation Localizing error detection and recovery
CN101390067A (zh) * 2006-02-28 2009-03-18 英特尔公司 增强众核处理器的可靠性

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155826A (zh) * 2015-04-16 2016-11-23 伊姆西公司 用于在总线结构中检测及处理错误的方法和系统
CN106155826B (zh) * 2015-04-16 2019-10-18 伊姆西公司 用于在总线结构中检测及处理错误的方法和系统
US10705936B2 (en) 2015-04-16 2020-07-07 EMC IP Holding Company LLC Detecting and handling errors in a bus structure
CN115150179A (zh) * 2022-04-25 2022-10-04 深圳星云智联科技有限公司 软硬生命老化控制方法和相关装置、芯片、介质和程序
CN115150179B (zh) * 2022-04-25 2024-01-02 深圳星云智联科技有限公司 软硬生命老化控制方法和相关装置、芯片、介质和程序

Also Published As

Publication number Publication date
EP2681658A4 (en) 2017-01-11
WO2012121777A3 (en) 2012-11-08
US20120221884A1 (en) 2012-08-30
CN103415840B (zh) 2016-08-10
WO2012121777A2 (en) 2012-09-13
EP2681658A2 (en) 2014-01-08
TW201235840A (en) 2012-09-01
TWI561976B (en) 2016-12-11

Similar Documents

Publication Publication Date Title
CN103415840A (zh) 跨硬件层和软件层的错误管理
JP6530774B2 (ja) ハードウェア障害回復システム
US7409594B2 (en) System and method to detect errors and predict potential failures
EP0335507B1 (en) Expert system for identifying likely failure points in a digital processing system
US8713350B2 (en) Handling errors in a data processing system
US8839032B2 (en) Managing errors in a data processing system
CN101236515B (zh) 多核系统单核异常的恢复方法
US8782469B2 (en) Request processing system provided with multi-core processor
US20050102568A1 (en) System, method and software for isolating dual-channel memory during diagnostics
WO2014200551A1 (en) Identifying the introduction of a software failure
CN102842342A (zh) 数据存储测试系统及方法
US20240045793A1 (en) Method and system for scalable performance testing in cloud computing environments
CN102915260B (zh) 固态硬盘容错的方法及其固态硬盘
JP6880961B2 (ja) 情報処理装置、およびログ記録方法
CN103890713A (zh) 用于管理处理系统内的寄存器信息的装置及方法
Mouallem et al. A fault-tolerance architecture for kepler-based distributed scientific workflows
US20130024730A1 (en) Disk control apparatus, method of detecting failure of disk apparatus, and recording medium for disk diagnosis program
CN111221681A (zh) 一种存储器的修复方法及装置
CN108762999A (zh) 一种内核故障收集方法及装置
US10592329B2 (en) Method and electronic device for continuing executing procedure being aborted from physical address where error occurs
CN117389781B (zh) 服务器设备的异常侦测与恢复方法、系统、服务器及介质
CN217825010U (zh) 通信测试系统
US11099838B1 (en) Method and system for recovery for custom integrated circuit
Kim et al. Probabilistic schedulability analysis of harmonic multi-task systems with dual-modular temporal redundancy
CN117076209A (zh) 执行计算任务的方法、装置和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160810

Termination date: 20201221

CF01 Termination of patent right due to non-payment of annual fee