发明名称 一种基于汇编指令的动态同步单粒子软错误防护方法
摘要 一种基于汇编指令的动态同步单粒子软错误防护方法,首先将系统软件划分为多个功能模块,然后对各个功能模块进行汇编指令级编程,得到每个功能模块对应的汇编指令的指令序列,建立各个功能模块的有向图,确定各个模块的静态标识位,最后通过复制各个功能模块的中间变量并行执行后判断、计算进入功能模块的动态签名值并比较来完成动态同步单粒子软错误防护。本发明方法与现有技术相比,利用数据同步并行处理实现汇编指令在空间维度上的冗余设计,并基于软件标识位对功能模块跳转时的软错误进行防护,不仅提升了系统程序的防护执行效率及航天器系统程序软错误防护的可靠性,而且实现简单,运行时间短。
申请公布号 CN104932950A 申请公布日期 2015.09.23
申请号 CN201510310153.0 申请日期 2015.06.08
申请人 西安空间无线电技术研究所 发明人 高翔;赖晓玲;王健;龚科;袁雅婧
分类号 G06F11/08(2006.01)I 主分类号 G06F11/08(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 陈鹏
主权项 一种基于汇编指令的动态同步单粒子软错误防护方法,其特征在于包括如下步骤:(1)按照系统软件的用户需求书将系统软件划分为N个功能模块,记为v<sub>1</sub>,v<sub>2</sub>,v<sub>3</sub>…v<sub>N</sub>,然后对各个功能模块进行汇编指令级编程,得到每个功能模块对应的汇编指令的指令序列,根据系统软件各个功能模块的执行流程建立有向图V={v<sub>1</sub>,v<sub>2</sub>,v<sub>3</sub>…v<sub>i</sub>…v<sub>N</sub>},任意确定功能模块v<sub>i</sub>的静态标识位S<sub>i</sub>,其中,N为正整数且N≥2,N个静态标识位S<sub>i</sub>各不相同,i=1,2,3…N;(2)复制功能模块v<sub>i</sub>对应的汇编指令的指令序列中的中间变量,将复制得到的中间变量记为第二中间变量,然后使用中间变量执行功能模块v<sub>i</sub>对应的汇编指令的指令序列得到结果数据data1,使用第二中间变量执行功能模块v<sub>i</sub>对应的汇编指令的指令序列得到结果数据data2;所述的中间变量为在指令序列执行过程中用于生成其它变量的变量的值,其中,i的初值为1;(3)比较结果数据data1、结果数据data2,如果两者结果相同,则将数据data1作为功能模块v<sub>i</sub>的运算结果并存储,转入步骤(5),如果两者结果不相同,则转入步骤(4);(4)复制功能模块v<sub>i</sub>对应的汇编指令的指令序列中的中间变量,记为第三中间变量,并使用第三中间变量执行功能模块v<sub>i</sub>对应的汇编指令的指令序列,得到结果数据data3,将data3分别与步骤(2)得到的结果数据data1和结果数据data2比较,如果结果数据data3与结果数据data1或者结果数据data2中一个相同,则将结果数据dada3作为功能模块v<sub>i</sub>的运算结果并存储,然后转入步骤(5),否则重复复制功能模块v<sub>i</sub>对应的汇编指令的指令序列中的中间变量,并执行功能模块v<sub>i</sub>对应的汇编指令的指令序列过程,直至出现两个相同的结果数据,并将该结果数据作为功能模块v<sub>i</sub>的运算结果并存储转入步骤(5);(5)计算功能模块v<sub>i</sub>跳转进入的功能模块v<sub>m</sub>的动态签名值G<sub>m</sub>,并与功能模块v<sub>m</sub>的静态标识位S<sub>m</sub>对比,如果两者相同则转入步骤(6),否则读取功能模块v<sub>i</sub>对应的汇编指令的指令序列中的中间变量,重新执行功能模块v<sub>i</sub>进行跳转直至功能模块v<sub>i</sub>的结果数据与步骤(4)得到的功能模块v<sub>i</sub>的运算结果相同且功能模块v<sub>m</sub>的动态签名值G<sub>m</sub>与功能模块v<sub>m</sub>的静态标识位S<sub>m</sub>相同,然后转入步骤(6),其中,使用有向图判断功能模块v<sub>m</sub>存在多扇入模块还是单扇入模块,如果功能模块v<sub>m</sub>存在多扇入模块,则G<sub>m</sub>=S<sub>i</sub>⊕A<sub>i</sub>⊕d<sub>m</sub>,A<sub>i</sub>=S<sub>i</sub>⊕S<sub>j</sub>,d<sub>m</sub>=S<sub>j</sub>⊕S<sub>m</sub>;如果功能模块v<sub>m</sub>存在单扇入模块,则G<sub>m</sub>=S<sub>i</sub>⊕d<sub>m</sub>,d<sub>m</sub>=S<sub>i</sub>⊕S<sub>m</sub>,⊕为异或运算符号,S<sub>j</sub>为功能模块v<sub>m</sub>的多扇入模块中的起始功能模块v<sub>j</sub>的静态标识位,起始功能模块v<sub>j</sub>为功能模块v<sub>m</sub>的多扇入模块中的一个功能模块;(6)i=i+1,重复步骤(2)‑步骤(5),直至i=N。
地址 710100 陕西省西安市长安区西街150号