一种基于lockstep架构的错误恢复方法

文档序号:8380812阅读:224来源:国知局
一种基于lockstep架构的错误恢复方法
【技术领域】
[0001]本发明属于计算机技术,涉及一种总线监控的锁步(Lock-Step)计算机的错误恢复,以实现高可靠性,包括错误恢复的硬件机制与软件机制。
【背景技术】
[0002]计算机的高故障检测率对于其在安全关键领域的应用具有非常重要的意义。传统的计算机的故障检测主要采用看门狗、闭环检测等方法实现,故障检测率很难到达到98%以上,计算结果比较监控可实现很高的故障检测率,但故障检测的实时性不高。Lock-Step计算机是另一种实现高完整性计算的方法,Lock-Step既能以很高的概率检测故障又能实时地检测故障。在检测出故障之后可以采用恢复机制对错误进行恢复,实现高可靠性的计算机。

【发明内容】

[0003]为了解决【背景技术】中所存在的技术问题,本发明提供一种基于总线监控的Lock-Step计算机的错误恢复机制。能实现计算机的实时的高概率故障检测和隔离,并且在发生错误时自动进行错误恢复,保证计算机数据处理的高完整性。
[0004]本发明的技术解决方案是:一种基于lockstep架构的错误恢复方法,其特征在于:所述方法包括以下步骤:
[0005]DLock-Step模块运行状态与转换=Lock-Skp模块上电后,采用基于时间流进行状态保存,通过硬件计时器,在一段时间之后发送一个硬件信号,软件读到这个状态后保存处理器状态;
[0006]2)对硬件状态进行切换,将硬件的保存恢复分为2个状态,即运行状态以及保存状态,在运行状态时如果处理器发生写操作,该写入不直接写入内存,而是写入一个软件可读、硬件例化的buffer结构(SM)中,在运行状态的时间片内如果有对写入SM的地址数据的操作由SM完成读写,以保证数据的一致;
[0007]3)在时间到达之后将处理器状态由运行状态转换为保存状态,在保存状态中将CPU内部的寄存器保存至一片内存中,之后将SM中数据写入处理器内存对应的地址,完成一次保存;保存状态完成之后(SM中数据写完成),处理器将自动切换为运行状态,继续运行。
[0008]4)运行状态下SM保证内存一致性:在运行状态时,每次有读操作时,首先查询SM的index位,如果SM中有该地址,在查询index对应的地址高位,如果命中,说明读地址的数据在SM中有保存,将SM中的数据作为读数据发送给CPU ;如果未命中,说明处理器该读操作的地址数据在SM中未出现,则处理器从内存中读出该地址的数据;
[0009]5)在运行状态写操作时,将数据不再写入内存,而是写入SM中;通过写入地址的addr的低9位作为SM的index,有index作为SM的地址进行访问SM,将写操作的写地址高位与写数据写入该SM的addr与data位,同时将valid置1,表示SM的该index对应的地址数据有效;当连续的写操作同样命中SM中同一个index时,如果写操作的地址与index对应的地址相同,说明这次写操作的地址与index中的写操作地址相同,则将index该条目的data项进行更新。如果写操作的地址与index对应的地址不同,则将该写操作的地址与数据写入该index条目对应的其他关联地址与数据(最大为4路组关联);当4路组关联的SRAM均写满后仍存在写操作命中该index对应的条目,则产生硬件控制退出运行状态,进入保存状态。
[0010]上述方法还包括步骤6)处理器运行状态结束,处理器进入保存状态进行处理器的保存;保存状态时处理器将SM中的数据按照SM的index条目中有效的地址数据写入处理器内存,更新处理器的内存,保证处理器内存的一致;同时将处理器的PC指针,堆栈列表,寄存器等保存在内存的固定位置,如果发生错误可以从该内存读取,达到处理器状态的恢复。
[0011 ] 上述方法还包括错误恢复流程:
[0012]在TO时刻,双处理器同步运行指令,TO时刻结束进入TO的保存状态,保存TO时的寄存器状态;
[0013]TO-Tl时间,由于该时间内无写操作,处理器在Tl时刻的内存与TO时刻一致,在Tl结束的保存状态,处理器保存Tl时的寄存器状态;
[0014]T1-T2时间,存在读操作,无写操作,处理器在T2结束的保存状态保存T2时的寄存器状态;
[0015]T2-T3时间,存在写操作,之后有读该地址的操作。在写操作时,在T3的运行状态,将该写操作将地址数据写入SM内,而保证内存不变。之后的读操作如果命中上次写操作的地址,则从SM中取出该读操作的数据给双处理器;如果该读操作未命中SM,则由内存直接返回读操作的数据;如有其余的写操作则依次写入SM,直到SM写满;处理器直接进行保存状态。
[0016]如果在T2-T3段发生一个错误,则将处理器的PC跳回T2时的保存值,同时将T2时保存的寄存器值写入处理器寄存器;此时内存没有在保存状态保存,处理器内存状态仍是T2状态的内存,由硬件将SM的valid位清零,使得SM中数据无效;如果运行到T3时刻结束的保存状态下时,处理器保存T3状态下的寄存器,同时将SM中的数据写入内存。
[0017]—种基于lockstep架构的错误恢复结构,其特征在于:包括内部FPGA例化出的SRAM结构;包括索引index,地址位(addr),数据位(data),以及有效位(valid);由地址位与索引位构成读写指令对应的地址,数据位则为该地址对应的数据;索引index为读写地址的低9位,作为SM的地址空间;地址位为该地址的高23位,有效位为每次对SM中该index条目进行一次写时对该index的有效位置I。
[0018]上述错误恢复结构采取4路组关联,将4路相同结构的SRAM关联在一起使用同一个index,在index命中之后比较4路中的addr,当addr命中时认为该读写操作命中SM ;当在运行状态需要运行一个写入操作,由硬件SM控制写入的地址以及数据,并不直接写入处理器内存,而是写入到硬件的SM结构中,在运行状态内如果还存在对SM该地址的读写操作,则直接从SM结构中读写。
[0019]本发明具有的优点是:涉及一种基于锁步(Lock-Step)计算机架构,在该计算机架构下可以发现计算机运行的瞬态错误,并可采用恢复机制将错误恢复,提高计算机的容错能力,实现高可靠性的计算机。本发明采用总线锁步与监控电路模块,利用硬件保存处理器运行的状态,并实时监测两个处理器的工作状况,一旦发现不一致,立即触发错误恢复,将处理器状态回退恢复至之前保存的正确状态,重新运行,达到隔离故障,从而保证计算机能高完整性地处理数据。本发明具有故障检测率很高、故障检测的实时性好、可自动恢复计算机瞬态故障,实现简便的特点。
【附图说明】
:
[0020]图1是Lock-Step计算机恢复机制硬件构成图;
[0021 ] 图2是Lock-St印恢复SM硬件结构;
[0022]图3是Lock-Step模块恢复机制的运彳丁流程;
【具体实施方式】
:
[0023]本发明通过采用总线锁步与监控模块(简称=Lock-Step模块)对两个处理器总线周期操作事务(读取,写入)进行同步“位位”比较,实时检测两个计算机的工作状况,并将处理器状态进行保存,在处理器比较发现不一致之后,将处理器状态恢复至上次保存的状态,可以恢复处理器内存由于瞬时故障产生的各种错误,内存总线上产生的瞬态错误,以及处理器内部运行产生的错误。从而实现高可靠性的处理器。
[0024]总线监控的Lock-St印计算机组成如图1所示,处理器部分为2个同步运行处理器,可以进行同步比较,检测错误的发生。在处理器同步之后每过一个固定的时间片,将处理器状态写入固定的保存空间(Store Memory SM),在发生错误之后将Store memory内的数据恢复回计算机,将计算机的状态恢复至上次保存的正确状态,实现错误恢复。由本专利的SM以及固定的硬件访问机制保证处理器硬件状态的正确(如内存的一致,指令流的连续,重新运行时机等),由软件在恢复之后重新读取状态寄存器保证处理器软件运行的正确。
[0025]SM的结果如图2所示,SM主要由内部FPGA例化出的SRAM结构,大小可定制,本专利以IKbyte为标准。其结构包括索引index,地址位(addr),数据位(data),以及有效位(valid)组成。索引index为读写地址的低9位,作为SM的地址空间。地址位为该地址的高23位,由地址位与索引位构成读写指令对应的地址,数据位则为该地址对应的数据。有效位为每次对SM中该index条目进行一次写时对该index的有效位置I。为了加大读操作时的命中,采取4路组关联,将4路相同结构的SRAM关联在一起使用同一个index,在index命中之后比较4路中的addr,当addr命中时认为该读写操作命中SM。当在运行状态需要运行一个写入操作,由硬件SM控制写入的地址以及数据,并不直接写入处理器内存,而是写入到硬件的SM结构中,在运行状态内如果还存在对SM该地址的读写操作,则直接从SM结构中读写。
[0026]方案的核心部分是设计对Lock-Step模块的错误恢复硬件,其余部分可采用通用器件、电路实现。
[0027]Lock-Step模块运行状态与转换:
[0028]Lock-St印模块上电后,采用基于时间流进行状态保存,通过硬件计时器,在一段时间之后发送一个硬件信号,软件读到这个状态后保存处理器状态。由于只有发生L/S操作且发生Cache miss时才会在处理器总线上进行访问,而在没有L/S操作时,处理器状态不会发生改变。为了减少保存次数,时间保存信号的发出可以通过L/S指令流来进行控制,在时间片内如果存在L/S指令才进行保存,如果没有该操作则放弃保存,采用上次保存的处理器状态。
[0029]到达时间片时,如果需要保存,保存该时的寄存器、PC等值,恢复时将载入其寄存器值,PC值。同时在一个时间片之内如果没有发生错误,认为该时间点的数据正确,将该时刻内存进行保存,将L/S指令写入内存。如果在一个时间片之内没有L/S指令,则处理器内存无变化,仅有寄存器堆、堆栈等变化,可以放弃这一次的保存,采用之前保存之前的内存状态,减少开销。
[0030]在时间片之内如果L/S指令存在,需要保存处理器当前的状态以及保证内存的一致。
[0031]这样,需要对硬件状态进行切换,将硬件的保存恢复分为2个状态,即运行状态以及保存状态,在运行状态时如果处理器发生写操作,该写入不直接写入内存,而是写入一个软件可读、硬件例化的buffer结构(Store memory (SM))中,在运行状态的时间片内如果有对写入SM的地址数据的操作由SM完成读写,以保证数据的一致。在时间到达之后将处理器状态由运行状态转换为保存状态,在保存状态中将CPU内部的寄存器(包括可能改变的堆栈PC指针等)保存至一片内存中,之后将上述的SM中数据写入处理
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1