CN111143142A - 一种普适检查点和回滚恢复方法 - Google Patents

一种普适检查点和回滚恢复方法 Download PDF

Info

Publication number
CN111143142A
CN111143142A CN201911362161.4A CN201911362161A CN111143142A CN 111143142 A CN111143142 A CN 111143142A CN 201911362161 A CN201911362161 A CN 201911362161A CN 111143142 A CN111143142 A CN 111143142A
Authority
CN
China
Prior art keywords
interval
soft error
seiht
flag
check point
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
CN201911362161.4A
Other languages
English (en)
Other versions
CN111143142B (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.)
Jiangnan University
Original Assignee
Jiangnan University
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 Jiangnan University filed Critical Jiangnan University
Priority to CN201911362161.4A priority Critical patent/CN111143142B/zh
Publication of CN111143142A publication Critical patent/CN111143142A/zh
Application granted granted Critical
Publication of CN111143142B publication Critical patent/CN111143142B/zh
Active 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/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • 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/0721Error 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 within a central processing unit [CPU]
    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本发明公开了一种普适检查点和回滚恢复方法,属于处理器容错技术领域。该方法通过增设valid状态位,确保了不会使用不完整的检查点进行故障恢复,能够应对在建立检查点、执行回滚恢复以及故障恢复过程中遇到故障的情况,连续多次执行回滚恢复操作时,切换用于故障恢复的检查点,避免了与当前检查点本身相关的故障;通过采用软错误间隔历史表和模式历史表的自适应预测结构,给出一种自适应动态检查点方法,能够同时根据软错误间隔的长期特征和短期特征对软错误间隔进行更为准确的预测,从而有效地降低处理器任务的平均执行时间,而且该方法能够快速学会预测任意的重复模式,能够应对软错误分布复杂或未知的情况。

Description

一种普适检查点和回滚恢复方法
技术领域
本发明涉及一种普适检查点和回滚恢复方法,属于处理器容错技术领域。
背景技术
检查点和回滚恢复是一种常用的处理器容错方法,可以用于应对在处理器中发生的软错误。检查点和回滚恢复方法的主要实施流程如下:在任务的执行过程中,定期设置检查点,为系统保存安全、无故障的处理器执行状态,将当前执行状态相关的重要数据(如寄存器、cache数据、主存数据等)存储到安全存储器中;在检测到故障后,用安全存储器中的数据替换当前处理器系统中的对应数据,使处理器的状态回滚到上一个检查点,从而避免从头开始执行,以减少计算性能损失。其中,安全存储器指的是被ECC(Error CorrectingCode)等容软错误技术保护的存储器,安全存储器可以是主存储区的一部分,也可以独立于主存储器,这类存储器能够极大程度地抵抗软错误从而保证所存储数据的安全。
应用检查点容错方法的系统在执行任务时,总的任务执行时间主要分为两个部分,一部分是建立检查点的时间,另一部分是因故障而引起的故障恢复时间。检查点的设置间隔对总的任务执行时间有很大影响,提升检查点的设置频率将减少故障恢复时间,但是建立检查点所用的时间会变长;降低检查点的设置频率将减短检查点的建立时间,但是故障恢复时间会变长。所以为减小任务执行时间,需要合理地设置检查点间隔。
现有的检查点容错方法中,往往仅考虑软错误发生在正常执行过程中的场景(可参考“Walker J R,Papachristou C.A rollback recovery system for embedded FPGAprocessors[D].Case Western Reserve University,2006”),而没有给出在建立检查点过程中、故障恢复过程中发生软错误时的解决方案。
现有的基于检查点的容错系统中,大部分仍然采用固定检查点的方法,固定检查点只有当系统失效服从泊松分布时效果最优,但实际的容错系统并不满足服从泊松分布的条件。实际的容错系统可能存在操作环境发生改变,进而导致软错误分布规律复杂且未知的情况,因此研究人员后续提出了动态的检查点设置方法,动态检查点方法能够根据历史软错误信息对未来一定时间内的软错误发生情况进行预测,进而能够动态地调整后续的检查点间隔。
现有动态检查点算法直接将历史平均软错误率作为未来一段时间的平均失效率(使用历史失效率预测将来的平均失效率),并根据泊松分布条件下的最优检查点公式重新确定检查点间隔。这种预测方法适合于对长期特征的预测,但由于历史平均软错误率不能及时地体现短期内容软错误分布的变化,所以使用该方法进行短期预测的准确度较低。综上所述,现有动态检查点算法不能得到很好的即时性或很高的短期预测精度。
发明内容
为了解决现有的检查点和回滚恢复方法没有同时考虑三种软错误发生情形的问题,以及现有的动态检查点方法对于软错误分布复杂的状况预测即时性差、预测精度不够高的问题,本发明提供了一种普适检查点和回滚恢复方法,所述方法将安全存储器分为N个存储区间、共能存储N个检查点,建立在各个存储区间上的检查点分别记为:C0、C1、C2、C3…CN-1,为每个检查点设置状态位valid,以指示该检查点的建立是否完成、所记录的数据是否完整可用,并记录每个检查点设置的时间信息,设置回滚计数IRC,用于记录连续执行回滚恢复操作的次数,其中,i表示检查点的编号,0≤i≤N-1,对应地,Ci表示编号为i的检查点,Ivmin表示其valid位为1的最早的检查点的编号,Ivmax表示其valid位为1的最晚的检查点的编号,Ic表示即将重新建立检查点的存储区间的编号,所述方法包括:
步骤1:处理器正常执行任务,并检测是否达到设置检查点的条件,由故障检测检测模块检测是否发生故障;
所述设置检查点的条件为:处理器正常执行任务的时间大于等于设定的检查点间隔时间并到达指令周期结束的时刻;
当处理器检测到到达设置检查点的条件时,执行步骤2,当故障检测模块检测到处理器系统中发生了故障,执行步骤5;
步骤2:处理器进入检查点异常服务程序,判断安全存储器中是否存在valid=0的检查点,如果存在,执行步骤31,否则执行步骤32;
步骤31:安全存储器中的存储空间未记录满,由于尚未有时间信息,所以可以将其valid位为0的任一检查点的编号赋值给Ic,执行步骤4;
步骤32:将其valid位为1的最早的检查点的编号记为Ivmin赋值给Ic,将
Figure BDA0002337457410000023
赋值为0,执行步骤4;
步骤4:在编号为Ic的检查点上重新建立检查点,处理器系统通过DMA将处理器中需要保存的寄存器以及主存中的有效数据复制到
Figure BDA0002337457410000021
所在的存储区域中,将
Figure BDA0002337457410000022
赋值为1,并记录该检查点的时间信息,将IRC赋值为0,检查点异常服务程序结束,执行步骤1;
步骤5:处理器进入回滚恢复异常服务程序,将其valid位为1的最晚的检查点的编号记为Ivmax,若Ivmax-IRC≤0,则执行步骤6,若Ivmax-IRC>0,则令IRC的数值加1并执行步骤7;
步骤6:没有可用的检查点,无法从现有检查点恢复任务,则重新执行整个任务,并执行步骤1;
步骤7:使用编号为Ivmax-IRC的检查点进行回滚恢复,通过DMA,使用保存在
Figure BDA0002337457410000031
中的处理器寄存器数据覆盖当前的处理器寄存器,使用其中的主存有效数据覆盖当前的主存数据,并对两个处理器中所有的cache执行invalidate操作,执行步骤8;其中,invalidate操作适用于采用写入策略的cache;
步骤8:使用自适应动态检查点算法,对检查点间隔进行调整,调整算法结束后,执行步骤1。
可选的,所述步骤8中,自适应动态检查点算法包括:
步骤一:将软错误发生次数N的值加1,记录检测到软错误时处理器的周期计数器指示的时刻,执行步骤二;
步骤二:判断本次记录是否是第一条记录,结果为否,执行步骤三;结果为是,执行步骤四;
步骤三:将上一次记录的时刻记为t0,将本次记录的时刻记为t1,将Δt=t1-t0作为上一次软错误到本次软错误的时间间隔,并将系统中最近一个软错误发生的时刻Tfinal赋值为t1,执行步骤五;
步骤四:将本次记录的时刻记为t0,并将系统中第一个软错误发生的时刻Tstart以及SEIHT所记录的最早的软错误发生时刻Tstart′均赋值为t0,算法结束;
步骤五:判断软错误间隔历史表SEIHT是否已满,结果为是,执行步骤六;结果为否,执行步骤七;
步骤六:将SEIHT中的软错误间隔标志FLAG的最高位SEIHT.FLAG.HSB的时间戳赋值给Tstart′,之后该时间戳所在的存储空间允许被覆盖、允许用于记录新的软错误发生时刻,计算软错误间隔阈值
Figure BDA0002337457410000032
T代表的是SEIHT中记录的k个软错误间隔的平均软错误间隔,执行步骤七;
步骤七:将步骤三中计算的Δt与软错误间隔阈值T进行比较,并根据比较结果对SEIHT的软错误间隔标志SEIHT.FLAG及对应的时间戳SEIHT.TIMESTAMP进行更新:
若Δt≥T,认为该间隔为“长间隔”,将SEIHT.FLAG左移一位,同时将1写入SEIHT中的软错误间隔标志FLAG的最低位SEIHT.FLAG.LSB,将该FLAG位对应的XLen位的时间戳TIMESTAMP赋值为t0
若Δt<T,认为该间隔为“短间隔”,将SEIHT.FLAG左移一位,同时将0写入SEIHT中软错误间隔标志FLAG的最低位SEIHT.FLAG.LSB,将该FLAG位对应的XLen位的时间戳TIMESTAMP赋值为t0
执行步骤八;
步骤八:对软错误发生间隔进行预测,首先判断本次预测是否是第一次进行预测,结果为否,执行步骤九;结果为是,执行步骤十;
步骤九:根据SEIHT.FLAG.LSB和两位饱和计数器的状态转换图对上一次预测所用的模式历史表PHT项进行更新,执行步骤十;
步骤十:以k位SEIHT.FLAG的值作为索引,查询具有2k个表项的PHT,执行步骤十一;
步骤十一:根据步骤九查询到的两位饱和计数器的值预测软错误的发生间隔,如果计数器的值为“00”或“01”,预测下一个软错误间隔是“短间隔”,将检查点的设置间隔Tc赋值为较短间隔Ts
如果计数器的值为“10”或“11”,预测下一个软错误间隔是“长间隔”,将检查点的设置间隔Tc赋值为较长间隔Tl,自适应动态检查点算法结束。可选的,若最开始的回滚恢复使用的Ci检查点为第二个及之后的检查点,即2≤i≤N-1,且在此故障恢复过程中又一次发生了故障,则使用Ci-1检查点执行第二次回滚恢复,在第二次回滚恢复中若再一次发生故障,则使用Ci-2检查点执行第三次回滚恢复。可选的,较短间隔
Figure BDA0002337457410000041
其中C表示建立检查点的时间开销,ρ表示从系统启动到最近一次发生软错误期间的软错误发生率,
Figure BDA0002337457410000042
Figure BDA0002337457410000043
其中,Tstart代表的是系统中第一次发生软错误的时刻;较长间隔Tl=2Ts
可选的,所述软错误间隔历史表SEIHT具有k项,每一项都由两部分组成:1位的软错误间隔标志以及与之对应的XLen位时间戳,软错误间隔标志用于指示软错误间隔是否大于阈值T,软错误标志SEIHT.FLAG为k位的移位寄存器,其中SEIHT.FLAG用于表示k项中所有1位软错误间隔标志FLAG的集合,时间戳表示的是对应于软错误间隔标志的、最近的一次软错误发生的时刻,XLen是处理器记录运行周期的计时器的宽度。
可选的,所述模式历史表PHT为SEIHT.FLAG所有的模式创建一个两位饱和计数器,SEIHT.FLAG共有2k种模式,用“00”表示“强短间隔”、“01”表示“弱短间隔”、“10”表示“弱长间隔”、“11”表示“强长间隔”。
可选的,所述软错误间隔标志用于指示软错误间隔是否大于阈值T,包括:
如果大于等于,将SEIHT.FLAG左移一位,同时将1写入SEIHT.FLAG.LSB,表示此间隔为“长间隔”;
如果小于,将SEIHT.FLAG左移一位,同时将0写入SEIHT.FLAG.LSB,表示此间隔为“短间隔”。
可选的,如果SEIHT.FLAG的最低位为1,则存在两种情况:如果当前状态不为“11”,则饱和计数器的状态向“10”、“11”的方向转换;如果当前状态是“11”,则状态不变。
可选的,如果SEIHT.FLAG的最低位为0,则存在两种情况:如果当前状态不为“00”,则饱和计数器的状态向“01”、“00”的方向转换;如果当前状态是“00”,则状态不变。
可选的,所述方法根据SEIHT和PHT动态地预测下一个软错误间隔,包括:
以SEIHT.FLAG的模式作为索引,查询PHT中对应的二位计数器的状态值,如果状态值为“00”、“01”,则预测下一个软错误间隔为短间隔;
如果状态值为“10”、“11”,则预测下一个软错误间隔为长间隔;
检查点间隔的调整方法为:如果预测下一个软错误间隔为短间隔,则将检查点的设置间隔Tc赋值为Ts;反之,则将检查点的设置间隔Tc赋值为Tl
本申请要提供上述普适检查点和回滚恢复方法在处理器故障恢复中的应用。
本发明有益效果是:
本发明方法不仅能够应对正常执行中遇到故障的情况,还能应对建立检查点、执行回滚恢复过程中遇到故障的情况。通过增设的valid状态位,确保了不会使用不完整的检查点进行故障恢复,使得本发明方法能够应对在建立检查点的过程中发生的故障。连续多次执行回滚恢复操作时,切换用于故障恢复的检查点,避免了与当前检查点本身相关的故障,比如发生多点故障等,使得本发明方法能够应对在故障恢复过程中发生的故障。本发明方法使用基于软错误间隔历史表和模式历史表的自适应预测结构,能够同时根据软错误间隔的长期特征和短期特征对软错误间隔进行更为准确的预测从而有效地降低检查点引入的时间开销、降低处理器任务的平均执行时间;该预测结构能够快速学会预测任意的重复模式,能够应对软错误分布未知的情况,普适性强。本申请中给出的自适应检查点方法的硬件需求主要包括一个SEIHT和一个PHT,易于实现。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法中普适检查点和回滚恢复算法的流程图。
图2是本发明方法中自适应动态检查点算法的流程图。
图3是本发明方法主要的硬件架构图。
图4是检查点操作的数据流向图。
图5是回滚恢复操作的数据流向图。
图6是连续回滚恢复情况下的程序执行流程。
图7是本发明方法中自适应动态检查点涉及的硬件架构图。
图8是本发明方法中SEIHT更新过程的示意图。
图9是本发明方法中PHT包含的两位饱和计数器的状态转换图。
图10是本发明方法中软错误间隔预测和检查点间隔调整的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一:
本实施例提供一种普适检查点和回滚恢复方法,包括普适检查点和回滚恢复、自适应动态检查点两个部分,其算法流程分别如图1和图2所示。
普适检查点和回滚恢复在传统的方法上,考虑了在建立检查点、回滚恢复过程中发生故障的情况,提高了普适性。
自适应动态检查点通过使用基于软错误间隔历史表和模式历史表的自适应预测结构,能够同时考虑软错误间隔的长期特征和短期特征,并对软错误分布进行更为准确的预测,从而有效地降低检查点引入的时间开销、降低处理器任务的平均执行时间;该预测结构能够快速学会预测任意的重复模式,普适性强。
本实施主要涉及的硬件包括:DMA(Direct Memory Access)、处理器系统(包含CPU和Cache)、主存储器、安全存储器,这些模块通过总线进行通信和数据传输,如图3所示。
在CPU的控制下,DMA能够实现存储器之间的直接数据搬运,在本方法中DMA能够完成处理器系统、主存、安全存储器之间的数据搬运。在建立检查点的过程中,DMA能够将CPU寄存器和主存中的有效数据复制到安全存储器中的某个检查点存储区间上,以建立C0检查点为例,检查点操作的数据流向图如图4所示。
在回滚恢复过程中,DMA能够使用安全存储器中的某个检查点存储区间上的CPU寄存器和主存有效数据覆盖当前CPU寄存器的数据以及当前主存中的相应数据,此外,还将对cache进行invalidation操作,以回滚恢复到C0检查点为例,回滚恢复操作的数据流向图如图5所示。
本实施方法使用安全存储器存储检查点,安全存储器是被ECC(Error CorrectingCode)等容软错误技术保护的存储器,安全存储器可以是主存储区的一部分,也可以独立于主存储器,该存储器能够极大程度地抵抗软错误并保证所存储数据的安全。设安全存储器分为N个存储区间、共能存储N个检查点,建立在各个存储区间上的检查点分别记为:C0、C1、C2、C3…CN-1,为每个检查点设置状态位(记为valid),以指示该检查点的建立是否完成、所记录的数据是否完整可用,并记录每个检查点设置的时间信息,设置回滚计数IRC,用于记录连续执行回滚恢复操作的次数,其中,i表示检查点的编号,0≤i≤N-1,对应地,Ci表示编号为i的检查点,Ivmin表示其valid位为1的最早的检查点的编号,Ivmax表示其valid位为1的最晚的检查点的编号,Ic表示即将重新建立检查点的存储区间的编号。应用本实施方法的系统在初始化时,建立N个数据为空的初始检查点,为这些初始的检查点分配0至N-1共N个编号,所有检查点的valid的初始值均设置为0,IRC的初始值设置为0。
本实施方法中,故障检测模块始终处于工作状态,允许在建立检查点或在执行回滚恢复的过程中,对检测到的故障再次做出响应并重新使用其他检查点执行回滚恢复异常服务程序。valid状态位的使用,保证了处理器不会使用未建立完成的检查点进行回滚恢复。
在连续回滚情况下的异常服务程序的响应情况示意图如图6所示,若最开始的回滚恢复使用的是C3检查点,且在此故障恢复过程中又一次发生了故障,则使用C2检查点执行第二次回滚恢复,在第二次回滚恢复中若再一次发生故障,则使用C1检查点执行第三次回滚恢复,以此类推。
本实施方式的自适应动态检查点相关的硬件架构主要由k项的软错误间隔历史表SEIHT和包含2k个两位饱和计数器的模式历史表PHT组成,如图7所示。SEIHT的每一项都由两部分组成:1位的软错误间隔标志以及XLen位的时间戳,软错误间隔标志用于指示软错误间隔是“短间隔”还是“长间隔”,时间戳表示的是每次软错误发生的时刻,SEIHT共有k位软错误间隔标志(记为SEIHT.FLAG),以及与k位软错误间隔标志分别对应的k个XLen位的时间戳(记为SEIHT.TIMESTAMP);SEIHT.FLAG的值作为PHT的索引,每一种SEIHT.FLAG的模式(一共有2k种)均对应着一个两位饱和计数器。
本实施方式中,SEIHT.FLAG是一个k位的移位寄存器,用于记录本次软错误的发生距离上一次软错误的发生间隔Δt是否大于阈值T,如果大于,将SEIHT左移一位,同时将0写入SEIHT.LSB,表示此间隔为“短间隔”;如果小于等于,将SEIHT左移一位,同时将1写入SEIHT.LSB,表示此间隔为“长间隔”。SEIHT.FLAG的更新过程如图8所示。
本实施方法中,两位饱和计数器用“00”状态表示“强短间隔”、“01”状态表示“弱短间隔”、“10”状态表示“弱长间隔”、“11”状态表示“强长间隔”,其状态转换图如图9所示。如果SEIHT.FLAG的最低位为1,则存在两种情况:如果当前状态不为“11”,则饱和计数器的状态向“10”、“11”的方向转换;如果当前状态是“11”,则状态不变。如果SEIHT.FLAG的最低位为0,则存在两种情况:如果当前状态不为“00”,则饱和计数器的状态向“01”、“00”的方向转换;如果当前状态是“00”,则状态不变。
本实施方式中,软错误间隔预测和检查点间隔的自适应调整流程如图10所示。SEIHT和PHT能够根据历史软错误间隔信息,动态地预测下一个软错误间隔,其具体步骤为:
以SEIHT.FLAG的模式作为索引,查询PHT中对应的二位计数器的状态值,如果状态值为“00”、“01”,则预测下一个软错误间隔为短间隔;如果状态值为“10”、“11”,则预测下一个软错误间隔为长间隔。检查点间隔的自适应调整方法为:如果预测的下一个软错误间隔为短间隔,则将检查点的设置间隔Tc赋值为Tl;反之,则将检查点的设置间隔Tc赋值为Ts,其中,
Figure BDA0002337457410000081
Tl=2Ts
普适检查点和回滚恢复的实施步骤如下:
处理器正常执行任务,并检测是否达到设置检查点的条件,由故障检测检测模块检测是否发生故障;
所述设置检查点的条件为:处理器正常执行任务的时间大于等于设定的检查点间隔时间并到达指令周期结束的时刻;
当处理器检测到到达设置检查点的条件时,执行步骤2,当故障检测检测模块检测到处理器系统中发生了故障,执行步骤5;
步骤2:处理器进入检查点异常服务程序,判断安全存储器中是否存在valid=0的检查点,如果存在,执行步骤31,否则执行步骤32;
步骤31:安全存储器中的存储空间未记录满,由于尚未有时间信息,所以可以将其valid位为0的任一检查点的编号赋值给Ic,执行步骤4;
步骤32:将其valid位为1的最早的检查点的编号记为Ivmin赋值给Ic,将
Figure BDA0002337457410000082
赋值为0,执行步骤4;
步骤4:在编号为Ic的检查点上重新建立检查点,处理器系统通过DMA将处理器中需要保存的寄存器以及主存中的有效数据复制到
Figure BDA0002337457410000083
所在的存储区域中,将
Figure BDA0002337457410000084
赋值为1,并记录该检查点的时间信息,将IRC赋值为0,检查点异常服务程序结束,执行步骤1;
步骤5:处理器进入回滚恢复异常服务程序,将其valid位为1的最晚的检查点的编号记为Ivmax,若Ivmax-IRC≤0,则执行步骤6,若Ivmax-IRC>0,则令IRC的数值加1并执行步骤7;
步骤6:没有可用的检查点,无法从现有检查点恢复任务,则重新执行整个任务,并执行步骤1;
步骤7:使用编号为Ivmax-IRC的检查点进行回滚恢复,通过DMA,使用保存在
Figure BDA0002337457410000091
中的处理器寄存器数据覆盖当前的处理器寄存器,使用其中的主存有效数据覆盖当前的主存数据,并对两个处理器中所有的cache执行invalidate操作,执行步骤8;其中,invalidate操作适用于采用写入(write-through)策略的cache;
步骤8:使用自适应动态检查点算法,对检查点间隔进行调整,调整算法结束后,执行步骤1。
自适应动态检查点的实施步骤如下:
步骤一:将软错误发生次数N的值加1,记录检测到软错误时处理器的周期计数器指示的时刻,执行步骤二;
步骤二:判断本次记录是否是第一条记录,结果为否,执行步骤三;结果为是,执行步骤四;
步骤三:将上一次记录的时刻记为t0,将本次记录的时刻记为t1,将Δt=t1-t0作为上一次软错误到本次软错误的时间间隔,并将系统中最近一个软错误发生的时刻Tfinal赋值为t1,执行步骤五;
步骤四:将本次记录的时刻记为t0,并将系统中第一个软错误发生的时刻Tstart以及SEIHT所记录的最早的软错误发生时刻(时间戳)Tstart′均赋值为t0,算法结束;
步骤五:判断软错误间隔历史表SEIHT是否已满,结果为是,执行步骤六;结果为否,执行步骤七;
步骤六:将SEIHT中的软错误间隔标志FLAG的最高位SEIHT.FLAG.HSB的时间戳赋值给Tstart′,之后该时间戳所在的存储空间允许被覆盖、允许用于记录新的软错误发生时刻,计算软错误间隔阈值
Figure BDA0002337457410000092
T代表的是SEIHT中记录的k个软错误间隔的平均软错误间隔,执行步骤七;
步骤七:将步骤三中计算的Δt与软错误间隔阈值T进行比较,并根据比较结果对SEIHT的软错误间隔标志SEIHT.FLAG及对应的时间戳SEIHT.TIMESTAMP进行更新:
若Δt≥T,认为该间隔为“长间隔”,将SEIHT.FLAG左移一位,同时将1写入SEIHT中的软错误间隔标志FLAG的最低位SEIHT.FLAG.LSB,将该FLAG位对应的XLen位的时间戳TIMESTAMP赋值为t0
若Δt<T,认为该间隔为“短间隔”,将SEIHT.FLAG左移一位,同时将0写入SEIHT中软错误间隔标志FLAG的最低位SEIHT.FLAG.LSB,将该FLAG位对应的XLen位的时间戳TIMESTAMP赋值为t0
执行步骤八;
步骤八:对软错误发生间隔进行预测,首先判断本次预测是否是第一次进行预测,结果为否,执行步骤九;结果为是,执行步骤十;
步骤九:根据SEIHT.FLAG.LSB和两位饱和计数器的状态转换图对上一次预测所用的模式历史表PHT项进行更新,执行步骤十;
步骤十:以k位SEIHT.FLAG的值作为索引,查询具有2k个表项的PHT,执行步骤十一;
步骤十一:根据步骤九查询到的两位饱和计数器的值预测软错误的发生间隔,如果计数器的值为“00”或“01”,预测下一个软错误间隔是“短间隔”,将检查点的设置间隔Tc赋值为较短间隔Ts
如果计数器的值为“10”或“11”,预测下一个软错误间隔是“长间隔”,将检查点的设置间隔Tc赋值为较长间隔Tl,自适应动态检查点算法结束。
本发明方法不仅能够应对正常执行中遇到故障的情况,还能应对建立检查点、执行回滚恢复过程中遇到故障的情况。通过增设的valid状态位,确保了不会使用不完整的检查点进行故障恢复,使得本发明方法能够应对在建立检查点的过程中发生的故障。连续多次执行回滚恢复操作时,切换用于故障恢复的检查点,避免了与当前检查点本身相关的故障,比如发生多点故障等,使得本发明方法能够应对在故障恢复过程中发生的故障。本发明方法使用基于软错误间隔历史表和模式历史表的自适应预测结构,能够同时根据软错误间隔的长期特征和短期特征对软错误间隔进行更为准确的预测从而有效地降低检查点引入的时间开销、降低处理器任务的平均执行时间;该预测结构能够快速学会预测任意的重复模式,能够应对软错误分布未知的情况,普适性强。本申请中给出的自适应检查点方法的硬件需求主要包括一个SEIHT和一个PHT,易于实现。
本发明实施例中的部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如主存、磁盘、硬盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种普适检查点和回滚恢复方法,其特征在于,所述方法将安全存储器分为N个存储区间、共能存储N个检查点,建立在各个存储区间上的检查点分别记为:C0、C1、C2、C3...CN-1,为每个检查点设置状态位valid,以指示该检查点的建立是否完成、所记录的数据是否完整可用,并记录每个检查点设置的时间信息;设置回滚计数IRC,用于记录连续执行回滚恢复操作的次数,其中,i表示检查点的编号,0≤i≤N-1,对应地,Ci表示编号为i的检查点,Ivmin表示其valid位为1的最早的检查点的编号,Ivmax表示其valid位为1的最晚的检查点的编号,Ic表示即将重新建立检查点的存储区间的编号,所述方法包括:
步骤1:处理器正常执行任务,并检测是否达到设置检查点的条件,由故障检测检测模块检测是否发生故障;
所述设置检查点的条件为:处理器正常执行任务的时间大于等于设定的检查点间隔时间并到达指令周期结束的时刻;
当处理器检测到到达设置检查点的条件时,执行步骤2,当故障检测模块检测到处理器系统中发生了故障,执行步骤5;
步骤2:处理器进入检查点异常服务程序,判断安全存储器中是否存在valid=0的检查点,如果存在,执行步骤31,否则执行步骤32;
步骤31:安全存储器中的存储空间未记录满,由于尚未有时间信息,所以可以将其valid位为0的任一检查点的编号赋值给Ic,执行步骤4;
步骤32:将其valid位为1的最早的检查点的编号记为Ivmin赋值给Ic,将
Figure FDA0002337457400000011
赋值为0,执行步骤4;
步骤4:在编号为Ic的检查点上重新建立检查点,处理器系统通过DMA将处理器中需要保存的寄存器以及主存中的有效数据复制到
Figure FDA0002337457400000012
所在的存储区域中,将
Figure FDA0002337457400000013
赋值为1,并记录该检查点的时间信息,将IRC赋值为0,检查点异常服务程序结束,执行步骤1;
步骤5:处理器进入回滚恢复异常服务程序,将其valid位为1的最晚的检查点的编号记为Ivmax,若Ivmax-IRC≤0,则执行步骤6,若Ivmax-IRC>0,则令IRC的数值加1并执行步骤7;
步骤6:没有可用的检查点,无法从现有检查点恢复任务,则重新执行整个任务,并执行步骤1;
步骤7:使用编号为Ivmax-IRC的检查点进行回滚恢复,通过DMA,使用保存在
Figure FDA0002337457400000014
中的处理器寄存器数据覆盖当前的处理器寄存器,使用其中的主存有效数据覆盖当前的主存数据,并对两个处理器中所有的cache执行invalidate操作,执行步骤8;其中,invalidate操作适用于采用写入策略的cache;
步骤8:使用自适应动态检查点算法,对检查点间隔进行调整,调整算法结束后,执行步骤1。
2.根据权利要求1所述的方法,其特征在于,所述步骤8中,自适应动态检查点算法包括:
步骤一:将软错误发生次数N的值加1,记录检测到软错误时处理器的周期计数器指示的时刻,执行步骤二;
步骤二:判断本次记录是否是第一条记录,结果为否,执行步骤三;结果为是,执行步骤四;
步骤三:将上一次记录的时刻记为t0,将本次记录的时刻记为t1,将Δt=t1-t0作为上一次软错误到本次软错误的时间间隔,并将系统中最近一个软错误发生的时刻Tfinal赋值为t1,执行步骤五;
步骤四:将本次记录的时刻记为t0,并将系统中第一个软错误发生的时刻Tstart以及SEIHT所记录的最早的软错误发生时刻Tstart′均赋值为t0,算法结束;
步骤五:判断软错误间隔历史表SEIHT是否已满,结果为是,执行步骤六;结果为否,执行步骤七;
步骤六:将SEIHT中的软错误间隔标志FLAG的最高位SEIHT.FLAG.HSB的时间戳赋值给Tstart′,之后该时间戳所在的存储空间允许被覆盖、允许用于记录新的软错误发生时刻,计算软错误间隔阈值
Figure FDA0002337457400000021
T代表的是SEIHT中记录的k个软错误间隔的平均软错误间隔,执行步骤七;
步骤七:将步骤三中计算的Δt与软错误间隔阈值T进行比较,并根据比较结果对SEIHT的软错误间隔标志SEIHT.FLAG及对应的时间戳SEIHT.TIMESTAMP进行更新:
若Δt≥T,认为该间隔为“长间隔”,将SEIHT.FLAG左移一位,同时将1写入SEIHT中的软错误间隔标志FLAG的最低位SEIHT.FLAG.LSB,将该FLAG位对应的XLen位的时间戳TIMESTAMP赋值为t0
若Δt<T,认为该间隔为“短间隔”,将SEIHT.FLAG左移一位,同时将0写入SEIHT中软错误间隔标志FLAG的最低位SEIHT.FLAG.LSB,将该FLAG位对应的XLen位的时间戳TIMESTAMP赋值为t0
执行步骤八;
步骤八:对软错误发生间隔进行预测,首先判断本次预测是否是第一次进行预测,结果为否,执行步骤九;结果为是,执行步骤十;
步骤九:根据SEIHT.FLAG.LSB和两位饱和计数器的状态转换图对上一次预测所用的模式历史表PHT项进行更新,执行步骤十;
步骤十:以k位SEIHT.FLAG的值作为索引,查询具有2k个表项的PHT,执行步骤十一;
步骤十一:根据步骤九查询到的两位饱和计数器的值预测软错误的发生间隔,如果计数器的值为“00”或“01”,预测下一个软错误间隔是“短间隔”,将检查点的设置间隔Tc赋值为较短间隔Ts
如果计数器的值为“10”或“11”,预测下一个软错误间隔是“长间隔”,将检查点的设置间隔Tc赋值为较长间隔Tl,自适应动态检查点算法结束。
3.根据权利要求2所述的方法,其特征在于,若最开始的回滚恢复使用的是Ci检查点,且在此故障恢复过程中又一次发生了故障,则使用Ci-1检查点执行第二次回滚恢复,在第二次回滚恢复中若再一次发生故障,则使用Ci-2检查点执行第三次回滚恢复,2≤i≤N-1。
4.根据权利要求3所述的方法,其特征在于,较短间隔
Figure FDA0002337457400000031
其中C表示建立检查点的时间开销,,ρ表示从系统启动到最近一次发生软错误期间的软错误发生率,
Figure FDA0002337457400000032
Figure FDA0002337457400000033
其中,Tstart代表的是系统中第一次发生软错误的时刻;较长间隔Tl=2Ts
5.根据权利要求4所述的方法,其特征在于,所述软错误间隔历史表SEIHT具有k项,每一项都由两部分组成:1位的软错误间隔标志以及与之对应的XLen位时间戳,软错误间隔标志用于指示软错误间隔是否大于阈值T,软错误标志SEIHT.FLAG为k位的移位寄存器,其中SEIHT.FLAG用于表示k项中所有1位软错误间隔标志FLAG的集合,时间戳表示的是对应于软错误间隔标志的、最近的一次软错误发生的时刻,XLen是处理器记录运行周期的计时器的宽度。
6.根据权利要求5所述的方法,其特征在于,所述模式历史表PHT为SEIHT.FLAG所有的模式创建一个两位饱和计数器,SEIHT.FLAG共有2k种模式,用“00”表示“强短间隔”、“01”表示“弱短间隔”、“10”表示“弱长间隔”、“11”表示“强长间隔”。
7.根据权利要求6所述的方法,其特征在于,所述软错误间隔标志用于指示软错误间隔是否大于阈值T,包括:
如果大于等于,将SEIHT.FLAG左移一位,同时将1写入SEIHT.FLAG.LSB,表示此间隔为“长间隔”;
如果小于,将SEIHT.FLAG左移一位,同时将0写入SEIHT.FLAG.LSB,表示此间隔为“短间隔”。
8.根据权利要求7所述的方法,其特征在于,如果SEIHT.FLAG的最低位为1,则存在两种情况:如果当前状态不为“11”,则饱和计数器的状态向“10”、“11”的方向转换;如果当前状态是“11”,则状态不变。
9.根据权利要求8所述的方法,其特征在于,如果SEIHT.FLAG的最低位为0,则存在两种情况:如果当前状态不为“00”,则饱和计数器的状态向“01”、“00”的方向转换;如果当前状态是“00”,则状态不变。
10.根据权利要求9所述的方法,其特征在于,所述方法根据SEIHT和PHT动态地预测下一个软错误间隔,包括:
以SEIHT.FLAG的模式作为索引,查询PHT中对应的二位计数器的状态值,如果状态值为“00”、“01”,则预测下一个软错误间隔为短间隔;
如果状态值为“10”、“11”,则预测下一个软错误间隔为长间隔;
检查点间隔的调整方法为:如果预测下一个软错误间隔为短间隔,则将检查点的设置间隔Tc赋值为Ts;反之,则将检查点的设置间隔Tc赋值为Tl
CN201911362161.4A 2019-12-26 2019-12-26 一种普适检查点和回滚恢复方法 Active CN111143142B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911362161.4A CN111143142B (zh) 2019-12-26 2019-12-26 一种普适检查点和回滚恢复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911362161.4A CN111143142B (zh) 2019-12-26 2019-12-26 一种普适检查点和回滚恢复方法

Publications (2)

Publication Number Publication Date
CN111143142A true CN111143142A (zh) 2020-05-12
CN111143142B CN111143142B (zh) 2021-05-04

Family

ID=70520168

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911362161.4A Active CN111143142B (zh) 2019-12-26 2019-12-26 一种普适检查点和回滚恢复方法

Country Status (1)

Country Link
CN (1) CN111143142B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131034A (zh) * 2020-09-22 2020-12-25 东南大学 一种基于检测器位置的检查点软错误恢复方法
CN112445641A (zh) * 2020-11-05 2021-03-05 德州职业技术学院(德州市技师学院) 一种大数据集群的运行维护方法和系统
WO2021249377A1 (zh) * 2020-06-09 2021-12-16 华为技术有限公司 程序执行方法,程序处理方法以及相关设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110125968A1 (en) * 2009-11-24 2011-05-26 Honeywell International Inc. Architecture and method for cache-based checkpointing and rollback
CN103365731A (zh) * 2013-06-28 2013-10-23 中国科学院计算技术研究所 一种降低处理器软错误率的方法和系统
CN104331347A (zh) * 2014-11-25 2015-02-04 中国人民解放军国防科学技术大学 面向可变错误率的检查点间隔实时确定方法
CN104424017A (zh) * 2013-08-21 2015-03-18 中国科学院沈阳计算技术研究所有限公司 一种适用于数控系统的容错低功耗调度方法
CN105242979A (zh) * 2015-09-09 2016-01-13 高胜法 一种具有前向恢复特征的后向恢复容错方法
US20170068599A1 (en) * 2015-09-07 2017-03-09 International Business Machines Corporation Efficient index checkpointing in log-structured object stores
CN107544859A (zh) * 2017-07-12 2018-01-05 上海交通大学 在混合内存系统上用来保证数据一致性的检查点方法
CN107797885A (zh) * 2016-09-07 2018-03-13 蔚山科学技术院 电子设备及其控制方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110125968A1 (en) * 2009-11-24 2011-05-26 Honeywell International Inc. Architecture and method for cache-based checkpointing and rollback
CN103365731A (zh) * 2013-06-28 2013-10-23 中国科学院计算技术研究所 一种降低处理器软错误率的方法和系统
CN104424017A (zh) * 2013-08-21 2015-03-18 中国科学院沈阳计算技术研究所有限公司 一种适用于数控系统的容错低功耗调度方法
CN104331347A (zh) * 2014-11-25 2015-02-04 中国人民解放军国防科学技术大学 面向可变错误率的检查点间隔实时确定方法
US20170068599A1 (en) * 2015-09-07 2017-03-09 International Business Machines Corporation Efficient index checkpointing in log-structured object stores
CN105242979A (zh) * 2015-09-09 2016-01-13 高胜法 一种具有前向恢复特征的后向恢复容错方法
CN107797885A (zh) * 2016-09-07 2018-03-13 蔚山科学技术院 电子设备及其控制方法
CN107544859A (zh) * 2017-07-12 2018-01-05 上海交通大学 在混合内存系统上用来保证数据一致性的检查点方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
贾文涛等: "软错误率变动对检查点机制的影响", 《计算机学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021249377A1 (zh) * 2020-06-09 2021-12-16 华为技术有限公司 程序执行方法,程序处理方法以及相关设备
CN112131034A (zh) * 2020-09-22 2020-12-25 东南大学 一种基于检测器位置的检查点软错误恢复方法
CN112131034B (zh) * 2020-09-22 2023-07-25 东南大学 一种基于检测器位置的检查点软错误恢复方法
CN112445641A (zh) * 2020-11-05 2021-03-05 德州职业技术学院(德州市技师学院) 一种大数据集群的运行维护方法和系统

Also Published As

Publication number Publication date
CN111143142B (zh) 2021-05-04

Similar Documents

Publication Publication Date Title
CN111143142B (zh) 一种普适检查点和回滚恢复方法
US6981104B2 (en) Method for conducting checkpointing within a writeback cache
JP2916420B2 (ja) チェックポイント処理加速装置およびデータ処理方法
EP0788052B1 (en) I/O control apparatus having check recovery function
CN111124720B (zh) 一种自适应的检查点间隔动态设置方法
US20080163255A1 (en) Core sparing on multi-core platforms
US7464208B2 (en) Method and apparatus for shared resource management in a multiprocessing system
US20060168473A1 (en) Method and system for deciding when to checkpoint an application based on risk analysis
CN111104243B (zh) 一种低延迟的双模lockstep容软错误处理器系统
US20070061555A1 (en) Call return tracking technique
JPH0812619B2 (ja) リカバリ制御システム及びエラー回復方法
US8301992B2 (en) System and apparatus for error-correcting register files
US8458403B2 (en) Architecture and method for cache-based checkpointing and rollback
US8806145B2 (en) Methods and apparatuses for improving speculation success in processors
CN115867888A (zh) 用于利用主-影子物理寄存器文件的方法和系统
US8312239B2 (en) Cache management for increasing performance of high-availability multi-core systems
US6684346B2 (en) Method and apparatus for machine check abort handling in a multiprocessing system
JPS58121457A (ja) 情報処理装置
CN110990197B (zh) 一种基于超级计算机的应用级多层检查点的优化方法
JP4376787B2 (ja) イベント通知方法、デバイス及びプロセッサシステム
US20080072015A1 (en) Demand-based processing resource allocation
JP4297846B2 (ja) アドレス変換バッファ制御装置およびアドレス変換バッファ制御方法
EP3058461A1 (en) Concurrently accessing memory
CN113656214A (zh) 一种乱序cpu刷新但不停顿流水的实现方法及系统
JP3483296B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant