基于硬件监视和微包协议的关键数据恢复方法

文档序号:6338059阅读:275来源:国知局
专利名称:基于硬件监视和微包协议的关键数据恢复方法
技术领域
本发明涉及三模冗余容错计算机系统中的关键数据恢复方法,尤其涉及基于硬 件监视和微包协议的三模冗余容错计算机系统中的关键数据恢复方法。
背景技术
三模冗余(TMR)容错计算机通常用于要求可靠性比较高的环境中,如果其中一 台机器发生严重故障后,系统降级为双级运行模式,在双机运行过程中恢复故障机器, 并且在恢复过程中不中断系统的正常运行,使系统能够重新从双机运行模式恢复到三模 运行状态,从而提高三模冗余容错计算机的可靠性与连续性。。对于可修复TMR容错系 统来说,恢复是实现容错系统容错目的和提高系统可靠性和可用性的重要环节,因此故 障恢复对于研究三模冗余容错计算机来说是一项至关重要的技术,解决得好坏直接影响 到三模冗余系统的功能及运行操作的正确性。而目前的故障恢复方法都是针对专门的具体应用。文献1 (Nakamikawa T, Morita Y,Yamaguchi S.High Performance Fault Tolerant Computer and its Fault Recovery [J], 1997 Pacific Rim International Symposium on Fault-Tolerant Systems, 1997
2-6)给出了基于存储器双机窃取拷贝的恢复方案,可以不中断系统运行,快速实现大 量内存数据的传送,但需要复杂的硬件支持,更适合在双机系统中进行实现。文献 2 (Yu Shu-Yi, McCluskey E J.On-line Testing and Recovery in TMR Systems for Real-Time Applictions[J].Test Conference Proceedings.International, 2001,240-249)是一种部分恢复 方案,在数据/输出表决时一旦检查到故障状态,立即对故障机器故障区域进行恢复, 可实现对瞬态故障的状态恢复,但不适用于模块级恢复。文献3(李海山,欧中红,杨 升春等.基于COTS的容错服务器及其故障恢复技术[J].计算机工程,2007,33(8) 253-255)提出的阶梯型恢复方法以进程为单位逐步恢复系统到三模冗余状态。恢复过 程中,系统采用双机与三模混合运行,管理复杂,比较适合在三模冗余容错服务器中应 用。文献4(张伟功,朱晓燕,关永,等.基于微包协议的三模冗余容错计算机无缝 重构方法[J].计算机科学,2009,(36)6 286-289)中提出的基于微包协议的恢复方法通 过逻辑模块的优化设计,消除了单点故障模式,可以极大地提高系统应用的可靠性与可 信性。但是对于内存数据和当前状态的管理则是通过软件实现,主要有三方面的不足 首先,采用单向链表方式按更新频度对关键数据按队列进行管理,如果内存数据和机器 运行状态有更新则需要用户通过调用软件程序通知TMR容错计算机的恢复程序,多数 情况下用户会集中通知,否则需要在每一个程序分支中通知恢复程序,执行效率低;其 次,对关键数据的监测是以单向链表上的链表块为单位,如果关键数据有更新,则对应 的链表块数据的修改标志会重新置位,而用户的修改不可能局限在一个块内,也不可能 整块数据都需要重新传送恢复,因此以软件方式实现的关键数据管理导致应用方便性和 可监测性不足,监视粒度大;再次,原来的恢复方法只能利用周期任务的空闲时间,当
4空闲时间能够传送的数据量小于每个周期中用产更改量时有问题,不能进行无缝恢复。

发明内容
本发明旨在解决现有技术中存在的技术问题,尤其是上述文献4中存在的不 足,使得在不中止系统正常工作的情况下对系统进行恢复,以保证三模冗余容错系统正 常运算与控制过程的连续性与一致性。本发明为解决上述技术问题所采取的技术方案为一种基于硬件监视和微包协 议的三模冗余容错计算机系统中的关键数据恢复方法,其特征在于把需要恢复的关键 数据分成大小相等的硬件数据块,再把硬件数据块划分成大小相同的监测包;同时在硬 件上针对每个硬件数据块设置监视器,该监视器能监测的监测包数与每个硬件数据块划 分的监测包数相等,一旦发现某监测包有更新或修改,则形成对该硬件数据块的数据区 域重新传送的依据,重新传送数据时以监测包为单位进行以减少重新传送的数据量;监 视器为每个硬件数据块配置四个寄存器表示硬件块在整个监控内存区中的位置的块起 始地址寄存器、用来决定监测那些包的块内监测包使能标志寄存器、用来记录数据修改 的监测结果的块内监测包变化标志寄存器和在监测包被恢复时用来清除相应的包的修改 标志的块内监测包修改标志清除寄存器。本发明提出的上述技术方案克服了传统容错计算机在故障恢复方面的缺陷。本发明的其他特征和效果将在下面结合附图的具体实施方式
中详细说明。


图1为本发明的基于硬件监视和微包协议的三模冗余容错计算机系统中的关键 数据恢复方法中的三模冗余容错计算机的系统组成图;图2为本发明的基于硬件监视和微包协议的三模冗余容错计算机系统中的关键 数据恢复方法中的关键数据区数据变化监测地址映射示意图。图3为本发明的基于硬件监视和微包协议的三模冗余容错计算机系统中的关键 数据恢复方法中的链表结构图。图4为本发明的基于硬件监视和微包协议的三模冗余容错计算机系统中的关键 数据恢复方法中的故障机器自恢复流程图。图5为本发明的基于硬件监视和微包协议的三模冗余容错计算机系统中的关键 数据恢复方法中的正常机器恢复故障机器流程图。
具体实施例方式下面将结合附图描述本发明的基于硬件监视和微包协议的三模冗余容错计算机 系统中的关键数据恢复方法。三模冗余容错计算机的系统组成如图1所示。系统由三个完全相同的高性能嵌 入式计算机主板和一个输出表决模块组成,通过内置的紧耦合同步机制构成一个完全没 有单点失效模式的面向嵌入式控制的三模冗余计算机。其中CPU模块是计算机主板的核 心组成部分,使用基于SPARC V8体系结构的32位微处理器BM3803MG,三个计算机主 板上都集成了专门的同步模块和串行数据交换模块,各计算机主板之间相互完全独立,可以在同步模块的控制下对外部输入数据进行同步采集,独立完成控制运算,同步输出 控制信号,最后通过表决模块输出到控制对象。其中三机同步模块与串行数据交换通道 在同一块FPGA上实现。系统恢复的核心问题是将正常机器的内存数据与机器状态复制到故障机器上, 使其能够恢复到与正常机器相同的状态。为了有效地利用系统任务的空闲时间提高执行 效率,并能够提供较强的系统扩展能力,对无缝恢复关键数据方法进行改进,本发明采 取的主要方法是利用硬件上的设置监视关键数据区域的写操作,即把需要恢复的关 键数据分成大小相等的硬件数据块,在硬件数据块相等的基础上再把数据块划分成大小 相同的监测包;同时在硬件上针对每个硬件块设置一种监视器,该监视器能监测的包数 与每个硬件块划分的包数相等,这样可基于包尺寸进行监视,一旦发现某监测包数据有 更新或修改,则形成对该块数据区域重新传送的依据,重新传送数据时以监测包为单位 进行以减少重新传送的数据量。因为在机器运行过程中,对数据的更新可能只是某个硬 件块中的一包或几包数据,有可能不会涉及到整个数据块,如果基于包尺寸进行监视的 话,检测到有监测包被更新,那么只传送该包数据即可,不用重新传送整个数据块。故障机器恢复的过程中是不能中断其它两个机器正常运行的,只能利用CPU的 空闲时间恢复关键数据,如果恢复的数据量大,整个机器的恢复时间可能会延长。总体来说是将恢复改由硬件完成,在监测数据变化和更新的过程,不需要软件 参与管理关键数据的变化从而降低软件参与的要求,提高软件执行的效率,软件设计模 块只负责把恢复数据分成适当的协议微包通过同步串口传送给故障机器。结合不同状态 恢复的需要,制定一套具有扩展能力的恢复命令包协议,然后在此基础上研究一种无缝 恢复的方法。采用上述的无缝数据恢复方法后,将故障恢复过程分解为众多不连续的子过程 穿插在系统的空闲时间中执行,关键数据区也按照协议包的数据容量分为若干个微包进 行传送和恢复。当系统空闲时间不足以将关键数据区的所有微包在一个空闲时间片中完 全恢复时,就会发生关键数据区的微包恢复传送过程与系统应用程序交替执行的情况。 由于系统应用程序执行过程中会对关键数据区中的部分数据进行修改,如不做特别处 理,就会出现一部分已传送和恢复的数据会被应用程序修改,导致故障机器最终恢复的 关键数据区的内部比较陈旧,与正常机器上的数据不一致,从而使恢复过程失败。如何 对关键数据区进行有效管理,保证正常机器与故障机器数据的一致性成为上述无缝恢复 方法必须研究的一个重要问题。本发明根据计算机程序执行与访问的局部性理论,建立一种基于单向有序链表 结构和矩阵式监测的关键数据区管理方法,按照微包协议的数据容量、恢复通道数据传 送速率、系统任务周期与空闲时间大小、恢复缓冲区尺寸这些参数,将需要恢复的关键 数据区在软件上划分为若干个连续或不连续的数据片,纵横排列组成关键数据矩阵,借 鉴CACHE命中比较方法,对每个数据片的修改情况和恢复情况进行实时监测,根据恢复 子过程的可重复性原理,按照关键数据区的链接顺序,对所有关键数据进行轮回查询与 恢复,实现一种可收敛的增量式恢复,从而保证数据恢复的一致性。为保证机器状态恢复的一致性,规定将系统时间基准和I/O状态恢复工作安排 在恢复过程的末尾,与关键数据区恢复的结束检查过程及系统重同步过程一起组成一个不可中断的原子过程。下面将具体描述本发明的方法的实现过程。首先介绍系统关键数据的硬件监视策略。为了能够实时监测应用软件对关键数据区的访问情况,可以从硬件上设置一套 关键数据区数据修改监测电路。如图2所示,将关键数据区划分为若干个(例如16个) 连续或不连续的硬件数据块,每个块又分为若干个(例如为16个)连续的监测包。监测 包大小为数据变化监测区域的粒度,即数据修改监测的最小分辨单位,其大小可以是一 个微包的数据容量,也可以是多个微包容量的大小,监测包的大小例如为1KB,这样每 个监测块的数据容量例如就是1KB* 16 = 16KB,16个块一共可以监测总大小为256KB的 不连续内存区域。监测块的起始地址由应用软件在初始化时设置,为了管理方便,可以 规定监测块的起始地址必须与块大小的边界对齐,即在16KB边界上对齐。这样的话, 硬件就不需要保存和比较地址的低位部分,可以在实现过程中简化逻辑,节省资源,提 高电路速度。监测电路为每个硬件块各配置4个32位边界对齐的寄存器,如果硬件实现了多 个数据块,则各块寄存器顺序排列。例如,当实现的数据块为16个时,本模块将包括 64个寄存器,占用地址00 FC,第一个块的寄存器的地址是0、4、8、c第二个块是 10、14、18、Ic,依次类推,第16块的寄存器地址是F0、F4、F8、FC。每个块的四个 寄存器定义如下(1)块起始地址寄存器,指一个硬件块在整个监控内存区中的位置,块地址从位 0开始。可以读写,复位后内容不确定。(2)块内监测包使能标志寄存器,用来决定监测哪些包,每位对应一个监测包。 可读写,复位后为全0。(3)块内监测包变化标志寄存器,用来记录数据修改的监测结果,各位为1时, 表示相应包对应的数据区域被改写过,只读,复位后为全0(4)块内监测包修改标志清除寄存器,在监测包被恢复时,通过它来清除相应的 包的修改标志,只写。由于CPU数据宽度限制了硬件块监测包数量的地址位数。为了方便CPU对监 视模块中监测包修改标志的访问,设计中限制每个硬件数据块中的监测包数量不能大于 CPU的数据宽度。CPU通过一次读操作即可能取得一个数据块中所有监测包的修改标 志,这样做的目的可以降低设计难度。另外CPU的数据宽度还会限制数据块起始地址的 长度,即要求数据块的起始地址位数也不能大于CPU数据宽度。在硬件设计上把所有的关键数据区看作是一个以块号为行、包号为列的监测矩 阵。假设RAM区大小为18MB,每个块起始地址寄存器不仅包括12位起始地址,还包 括一个地址匹配比较器(16个块的起始地址寄存器合在一起可以看作是一个输出为块编 号的联相存储器)。当CPU对RAM存储器进行写操作时,存储器地址同时送给监测电 路,监测电路将CPU的地址对应地划分为块地址、包地址和数据地址三个域。块地址域 送到每个块地址的地址匹配比较器,包地址则被送给一个译码器。如果某一监测块的块 起始地址与CPU的块地址域相匹配,块地址比较器输出一个匹配块编号,然后以此匹配 块编号作为地址,将包地址译码结果写入对应的块的包修改标志寄存器的相应位中;如
7果对应的包没有被使能(即不需要监测)或没有匹配块,则不启动包修改标志的写操作。 图2给出了关键数据区数据更改监测过程的地址变换示意图。下面说明系统关键数据区管理及恢复方法。首先介绍关键数据区链表结构。关键数据区是指系统恢复时需要在故障机器上恢复的那些内存区域,一般由全 局变量、静态数据及任务堆栈等重要数据构成,可以是一个连续的内存区域,也可以是 由多个内存数据块组成。我们在选择关键数据区时应尽量减少数据量,降低对三机数据 交换速率的要求,有效减少系统恢复时间。在硬件设计中,把关键数据区域的数据划分成大小相等的硬件数据块。在软件 设计模块中,将所有需要恢复的关键数据区组成一个有序的单向链表,链表上的每块数 据量最大不超过每个硬件块数据的大小。在恢复关键数据时,以微包大小为单位传送, 微包的大小可以根据需要改变,但必须小于等于监测包。用户可以通过固化函数库中的 关键数据区管理函数向此单向链表中添加或删除关键数据,设置关键数据区时不需要受 前述的硬件监测电路块、包结构及链表排序的限制,只需要提供起始地址与长度即可。 管理函数会将用户设置区域自动对齐到硬件监测包的边界上,然后将其按地址从低到高 的顺序插入到单向链表结构中。在搜索各硬件数据块的块起始地址时,如果有匹配的地 址,则将块中相应包的使能标志设为有效,否则按从低到高的顺序重新排列各硬件数据 块的起始地址,并将当前设置的数据区的起始地址作为一个新块插入到硬件数据块中。单向链表中为每个链表数据块设置一个包括数据块地址范围、监测块号、监测 包屏蔽字、包恢复标志(RF)、包长度剩余和包数等内容的数据块表项,如图3所示。接着介绍关键数据区的管理。关键数据区管理主要包括链表数据块的添加和删除。链表数据块的添加过程 如下首先判断要插入的数据块大小是否超出硬件数据块的范围,如果超出则拆分为两 块,依次类推,直到划分完毕为止,最多不超过硬件上规定的硬件数据块数;其次是将 要插入的数据块起始地址依次与链表上的数据块起始地址相比较,按照地址序列将数据 块插入链表中。如果当前链表数据块地址范围包含要插入的数据块,则合并数据块。如 果要插入的数据块的地址范围介于链表中两个数据块之间则同时进行合并。如果没有重 合的地址范围则与当前链表数据块的起始地址相比较,依次插入到链表中即可。如果没 有找到小于当前链表数据块的起始地址则直接插入到链表末尾。确定数据块在链表中的位置以后,要置相应的包屏蔽字。包屏蔽字是链表结构 中的一个数据项,相当于一个32位的寄存器,有几个监测包数据就把包屏蔽寄存器相应 位置1。由于在软件设计模块对每个链表数据块进行了合并排序,每个链表数据块的第一 个监测包和最后一个监测包的大小有可能不等于硬件上规定的监测包的大小,因此在设 置包屏蔽字时首先判断是不是第一个监测包和最后一个监测包,如果是则先置第一个监 测包和最后一个监测包的包屏蔽字,再置其它的监测包屏蔽字,置包屏蔽字的过程中记 录该链表数据块的监测包数,同时使包恢复标志(RF)等于包屏蔽字。删除操作可以把链表上的数据块全部删除,也可以删除链表上的某个数据块。 删除某个数据块的过程和添加数据块过程基本上是一样的,首先也是找到要删除的数据 块在链表中的地址范围,如果介于两个数据块之间则要进行两次删除,删除完之后需要扫描链表上的数据块是否有需要合并的,如果有则进行合并。基本过程和添加数据块过 程是一样的,这里不再赘述。现在介绍系统恢复方法。硬件监视和单向链表式数据结构的软硬件设计使得容错计算机的故障恢复效率 得到了极大提高,利用系统任务的空闲周期将用户设置的关键数据恢复到故障机器中, 把系统恢复状态分为故障机器的自恢复和正常机器恢复故障机器两个状态。故障机器自恢复的流程如图4所示,故障机器进入故障恢复状态后,不停地检 测是否收到其他两个正常机器的恢复微包,当收到一个微包后,首先检查是否恢复完成 命令微包,如果是则设置三机同步模式,退出故障恢复状态,发送本机的同步请求,进 入同步等待状态;其次若不是命令结束微包,故障机器要对左右机传送的微包进行正确 性校验,若两个微包都正确则取故障值较小机器的微包,否则取正确机器的微包;若左 右机的微包都不正确,向两个正常机器回送微包错误应答字。最后根据恢复类型字的判 别恢复故障机器的故障表、内存数据或不归零计数器等。正常机器恢复故障机器是指在系统空闲态时发送正常机器的数据给故障机器, 流程如图5所示。首先判断任务定时器的剩余时间是否足够传送一次微包数据,如果时 间允许则先恢复故障表数据,再恢复内存数据。内存数据是按单向链表结构,逐块按监 测包传送的。在数据恢复过程中,判断RF、块内数据变化标志寄存器和包屏蔽相与的结 果,如果判断结果不为0则恢复该包数据,如果该包数据恢复完,则RF置为0,下次判 断该包数据是否需要恢复时,再取三者相与的结果,如果为0就不需要再次恢复了。其次,当链表中最后一个数据块被恢复完成后,恢复函数从链表开始处对每个 数据块进行修改标志检查,若某一监测包的数据修改标志有效,重新启动对它的恢复过 程。恢复完成后,继续检查其它监测包的修改标志,直到链表结尾,然后再重新检查。 如果在一次检查过程中,链表中所有数据块对应的监测包的修改标志均无效,则说明关 键数据区的恢复过程已完成,恢复函数启动恢复结束过程,因为同步过程会首先判断恢 复完成标志,如果处于恢复完成状态,则重新升级为三机同步模式。然后再根据目前的 同步模式调用对应的同步函数,使被恢复的机器进入重同步过程,系统恢复为三机运行 模式。
权利要求
1.一种基于硬件监视和微包协议的三模冗余容错计算机系统中的关键数据恢复方 法,其特征在于把需要恢复的关键数据分成大小相等的硬件数据块,再把硬件数据块 划分成大小相同的监测包;同时在硬件上针对每个硬件数据块设置监视器,该监视器能 监测的监测包数与每个硬件数据块划分的监测包数相等,一旦发现某监测包有更新或修 改,则形成对该硬件数据块的数据区域重新传送的依据,重新传送数据时以监测包为单 位进行以减少重新传送的数据量;监视器为每个硬件数据块配置四个寄存器表示硬件 块在整个监控内存区中的位置的块起始地址寄存器、用来决定监测那些包的块内监测包 使能标志寄存器、用来记录数据修改的监测结果的块内监测包变化标志寄存器和在监测 包被恢复时用来清除相应的包的修改标志的块内监测包修改标志清除寄存器。
2.根据权利要求1所述的方法,其特征在于软件设计模块只负责把关键数据分成 适当的协议微包通过同步串口传送给故障机器。
3.根据权利要求2所述的方法,其特征在于所述软件设计模块建立一种基于单向 有序链表结构和矩阵式监测的关键数据区管理方法,按照微包协议的数据容量、恢复通 道数据传送速率、系统任务周期与空闲时间大小、恢复缓冲区尺寸这些参数,将需要恢 复的关键数据区在软件上划分为若干个连续或不连续的数据片,纵横排列组成关键数据 矩阵,借鉴CACHE命中比较方法,对每个硬件数据块的修改情况和恢复情况进行实时监 测,按照关键数据区的链表顺序,对所有关键数据进行轮回查询与恢复,从而保证数据 恢复的一致性。
4.根据权利要求3所述的方法,其特征在于为保证机器状态恢复的一致性,将系 统时间基准和I/O状态恢复工作安排在恢复过程的末尾,与关键数据区恢复的结束检查 过程及系统重同步过程一起组成一个不可中断的原子过程。
5.根据权利要求3所述的方法,其特征在于所述单向有序链表由所有需要恢复 的关键数据区组成,链表上的每块数据量最大不超过每个硬件块数据的大小;用户能够 通过管理函数向此单向链表中添加或删除关键数据;设置关键数据区时只需要提供起始 地址与长度,管理函数能将用户设置区域自动对齐到硬件监测的监测包的边界上,然后 将其按地址从低到高的顺序插入到单向链表结构中;在搜索各硬件数据块的块起始地址 时,如果有匹配的地址,则将块中相应包的使能标志设为有效,否则按从低到高的顺序 重新排列各硬件数据块的起始地址,并将当前设置的数据区的起始地址作为一个新块插 入到硬件数据块中。
6.根据权利要求5所述的方法,其特征在于所述管理函数向单向链表中添加关键 数据的过程如下首先判断要插入的数据块大小是否超出硬件数据块的范围,如果超出 则拆分为两块,依次类推,直到划分完毕为止,最多不超过硬件上规定的数据块数;其 次是将要插入的数据块起始地址依次与链表上的数据块起始地址相比较,按照地址序列 将数据块插入链表中;如果当前数据块地址范围包含要插入的数据块,则合并数据块; 如果要插入的数据块的地址范围介于链表中两个数据块之间则同时进行合并;如果没有 重合的地址范围则与当前数据块的起始地址相比较,依次插入到链表中即可;如果没有 找到小于当前数据块的起始地址则直接插入到链表末尾。
7.根据权利要求6所述的方法,其特征在于在确定数据块在链表中的位置以后, 要置相应的包屏蔽字,包屏蔽字是链表结构中的一个数据项,有几包数据就把包屏蔽寄存器相应位置1 ;在设置包屏蔽字时首先判断是不是第一包数据和最后一包数据,如果 是则先置第一包数据和最后一包数据的包屏蔽字,再置其它的包屏蔽字,置包屏蔽字的 过程中记录该块数据的包数,同时使包恢复标志RF等于包屏蔽字。
8.根据权利要求7所述的方法,其特征在于在数据恢复过程中,判断包恢复标志 RF、块内数据变化标志寄存器和包屏蔽字相与的结果,如果判断结果不为0则恢复该包 数据,如果该包数据恢复完,则包恢复标志RF置为0,下次判断该包数据是否需要恢复 时,再取三者相与的结果,如果为0就不需要再次恢复了;当链表中最后一个数据块被 恢复完成后,恢复函数从链表开始处对每个数据块进行修改标志检查,若某一监测包的 数据修改标志有效,重新启动对它的恢复过程;恢复完成后,继续检查其它监测包的包 恢复标志,直到链表结尾,然后再重新检查;如果在一次检查过程中,链表中所有数据 块对应的监测包的修改标志均无效,则说明关键数据区的恢复过程已完成,恢复函数启 动恢复结束过程,如果处于恢复完成状态,则重新升级为三机同步模式;然后再根据目 前的同步模式调用对应的同步函数,使被恢复的机器进入重同步过程,系统恢复为三机 运行模式。
全文摘要
一种基于硬件监视和微包协议的三模冗余容错计算机系统中的关键数据恢复方法,其特征在于把需要恢复的关键数据分成大小相等的硬件数据块,再把硬件数据块划分成大小相同的监测包;同时在硬件上针对每个硬件数据块设置监视器,该监视器能监测的监测包数与每个硬件数据块划分的监测包数相等,一旦发现某监测包有更新或修改,则形成对该硬件数据块的数据区域重新传送的依据,重新传送数据时以包为单位进行以减少重新传送的数据量。
文档编号G06F11/14GK102012850SQ201010579850
公开日2011年4月13日 申请日期2010年12月9日 优先权日2010年12月9日
发明者丁瑞, 张伟功, 张永祥, 朱晓燕, 荣金叶, 邱庆林, 高兰志 申请人:首都师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1