CN104932950A - 一种基于汇编指令的动态同步单粒子软错误防护方法 - Google Patents
一种基于汇编指令的动态同步单粒子软错误防护方法 Download PDFInfo
- Publication number
- CN104932950A CN104932950A CN201510310153.0A CN201510310153A CN104932950A CN 104932950 A CN104932950 A CN 104932950A CN 201510310153 A CN201510310153 A CN 201510310153A CN 104932950 A CN104932950 A CN 104932950A
- Authority
- CN
- China
- Prior art keywords
- functional module
- module
- instruction
- result data
- assembly instruction
- 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
Links
Landscapes
- Hardware Redundancy (AREA)
Abstract
一种基于汇编指令的动态同步单粒子软错误防护方法,首先将***软件划分为多个功能模块,然后对各个功能模块进行汇编指令级编程,得到每个功能模块对应的汇编指令的指令序列,建立各个功能模块的有向图,确定各个模块的静态标识位,最后通过复制各个功能模块的中间变量并行执行后判断、计算进入功能模块的动态签名值并比较来完成动态同步单粒子软错误防护。本发明方法与现有技术相比,利用数据同步并行处理实现汇编指令在空间维度上的冗余设计,并基于软件标识位对功能模块跳转时的软错误进行防护,不仅提升了***程序的防护执行效率及航天器***程序软错误防护的可靠性,而且实现简单,运行时间短。
Description
技术领域
本发明涉及***抗单粒子软错误容错技术领域,特别是一种基于汇编指令的动态同步单粒子软错误防护方法。
背景技术
在空间应用中,数字信号处理器***在高速数传、信号通信、导航处理等数据信息处理领域得到广泛应用,然而由于空间单粒子辐射效应的存在,将会引起***程序的“跑飞”、“异常”、“紊乱”或者“死机”等故障,降低了星上数字信号处理设备的可靠性。因此,从数字信号处理器的硬件架构出发,利用数据同步并行处理能力实现汇编指令在空间维度上的冗余设计,从而将程序在不改变按时间执行计算流程前提下,增加空间同步冗余防护设计,从而提升***程序的防护执行效率,达到数字信号处理器***的高可靠性设计目的。
当前的防护技术多侧重于硬件的并行架构和专用编译环境相互配合完成空间的多模冗余设计,而对程序本身发生的单粒子软错误则缺乏有效判读和针对性防护优化设计分析。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供了一种将汇编指令冗余和软件标识位检纠错方法结合以提升***程序防护可靠性的基于汇编指令的动态同步单粒子软错误防护方法。
本发明的技术解决方案是:一种基于汇编指令的动态同步单粒子软错误防护方法,包括如下步骤:
(1)按照***软件的用户需求书将***软件划分为N个功能模块,记为v1,v2,v3…vN,然后对各个功能模块进行汇编指令级编程,得到每个功能模块对应的汇编指令的指令序列,根据***软件各个功能模块的执行流程建立有向图V={v1,v2,v3…vi…vN},任意确定功能模块vi的静态标识位Si,其中,N为正整数且N≥2,N个静态标识位Si各不相同,i=1,2,3…N;
(2)复制功能模块vi对应的汇编指令的指令序列中的中间变量,将复制得到的中间变量记为第二中间变量,然后使用中间变量执行功能模块vi对应的汇编指令的指令序列得到结果数据data1,使用第二中间变量执行功能模块vi对应的汇编指令的指令序列得到结果数据data2;所述的中间变量为在指令序列执行过程中用于生成其它变量的变量的值,其中,i的初值为1;
(3)比较结果数据data1、结果数据data2,如果两者结果相同,则将数据data1作为功能模块vi的运算结果并存储,转入步骤(5),如果两者结果不相同,则转入步骤(4);
(4)复制功能模块vi对应的汇编指令的指令序列中的中间变量,记为第三中间变量,并使用第三中间变量执行功能模块vi对应的汇编指令的指令序列,得到结果数据data3,将data3分别与步骤(2)得到的结果数据data1和结果数据data2比较,如果结果数据data3与结果数据data1或者结果数据data2中一个相同,则将结果数据dada3作为功能模块vi的运算结果并存储,然后转入步骤(5),否则重复复制功能模块vi对应的汇编指令的指令序列中的中间变量,并执行功能模块vi对应的汇编指令的指令序列过程,直至出现两个相同的结果数据,并将该结果数据作为功能模块vi的运算结果并存储转入步骤(5);
(5)计算功能模块vi跳转进入的功能模块vm的动态签名值Gm,并与功能模块vm的静态标识位Sm对比,如果两者相同则转入步骤(6),否则读取功能模块vi对应的汇编指令的指令序列中的中间变量,重新执行功能模块vi进行跳转直至功能模块vi的结果数据与步骤(4)得到的功能模块vi的运算结果相同且功能模块vm的动态签名值Gm与功能模块vm的静态标识位Sm相同,然后转入步骤(6),其中,使用有向图判断功能模块vm存在多扇入模块还是单扇入模块,如果功能模块vm存在多扇入模块,则Gm=Si⊕Ai⊕dm,Ai=Si⊕Sj,dm=Sj⊕Sm;如果功能模块vm存在单扇入模块,则Gm=Si⊕dm,dm=Si⊕Sm,⊕为异或运算符号,Sj为功能模块vm的多扇入模块中的起始功能模块vj的静态标识位,起始功能模块vj为功能模块vm的多扇入模块中的一个功能模块;
(6)i=i+1,重复步骤(2)-步骤(5),直至i=N。
所述的起始功能模块vj为从功能模块vm的多扇入模块中任意选择得到的一个功能模块。
本发明与现有技术相比的优点在于:
(1)本发明方法与现有空间同步冗余防护技术相比,通过利用数据同步并行处理实现汇编指令在空间维度上的冗余设计,不仅提升了***程序的防护执行效率,还提高了航天器***程序软错误防护的可靠性;
(2)本发明方法基于软件标识位对功能模块跳转时的软错误进行防护,无需借助外部设备辅助,就能够精准的区分并实现包括多扇入、单扇入的混合控制流状态的软错误检测和恢复;
(3)本发明方法与现有空间同步冗余防护技术相比,能够有效减弱单粒子软错误对***程序运行引起的***“跑飞”、“异常”、“紊乱”等状况,实现简单,运行时间短。
附图说明
图1为本发明基于汇编指令的动态同步单粒子软错误防护的设计架构;
图2为本发明数字信号处理器硬件架构框图;
图3为本发明基于汇编指令的软错误防护方法原理示意图;
图4为本发明基于软件标识位的检纠错防护方法原理示意图;
图5为本发明一种基于汇编指令的动态同步单粒子软错误防护方法原理流程图。
具体实施方式
本发明提出一种基于汇编指令的动态同步单粒子软错误防护方法,采用基于程序/数据冗余的方法对单粒子软错误进行防护,结合软件标识位检测机制实现汇编指令级的程序执行状态的控制流检测和恢复。下面结合附图对本发明进行详细说明:
如图1所示为基于该方法形成的数字信号处理***防护设计架构图,主要分为三个阶段
阶段一:设计分析
根据数字信号处理器的硬件架构和受单粒子效应影响产生的软错误机理分析,完成对***的单粒子软错误防护设计分析。
步骤1:根据图2的架构框图,由***设计架构确定单粒子效应主要对存储类部件产生影响,即程序区和数据区RAM、Cache、通用寄存器组。
步骤2:分析单粒子效应对存储类部件产生软错误状态主要表现形式。
表1存储类部件软错误状态主要表现形式
存储类部件 | 软错误状态表现形式 | 存储类部件 | 软错误状态表现形式 |
程序区RAM | 程序跑飞、紊乱、异常 | 数据区RAM | 功能异常或执行紊乱 |
Cache | 程序跑飞、紊乱、异常 | 通用寄存器组 | 功能异常 |
阶段二:软错误防护设计
利用阶段一对***产生单粒子软错误影响的表现形式分析,完成存储类部件的软错误防护设计,以下为防护设计具体步骤。
步骤3:按照程序指令的执行流程,如图3所示完成对汇编指令的动态同步编程,按照空间和时间维度的冗余设计完成存储类部件的软错误防护设计。
步骤3-1:按照***设计需求划分功能模块,并以功能模块为防护的基本单元,实施汇编指令级编程;
步骤3-2:从数据RAM读取数据写入寄存器,并根据变量在指令序列中的作用分为两类:中间变量:用于生成其它变量;最终变量:不参与生成任何其他变量;
步骤3-3:根据处理器的并行数据通路,调用通用寄存器完成中间变量复制,同时按照各数据通路的逻辑运算单元执行空间维度上的模块同步并行运算;
步骤3-4:由并行数据通路运算生成两路最终变量数据data1和dada2,并进行比较,如果比较结果一致则选择data1数据保存,并跳转至下一模块按照步骤3-2~步骤3-4执行;如果比较结果不一致,则执行步骤3-5;
步骤3-5:选择任意空闲状态的数据通路,调用通用寄存器完成中间变量复制,并在结合通路中的空闲逻辑运算单元执行时间维度上的模块冗余运算,得到时间维度模块的运算最终变量数据data3;
步骤3-6:将data3,分别同最终变量数据data1和data2进行比较,如果有一路数据比较结果一致,则存储dada3变量数据,并跳转至下一模块按步骤3-2~步骤3-4重复执行;如果数据均不一致,则重复复制当前功能模块对应的中间变量并执行功能模块对应的指令序列过程,直至出现两个相同的结果数据,并将该结果数据作为当前功能模块的运算结果并存储转入步骤(5),并跳转至下一模块按照步骤3-2~步骤3-4重复执行。
步骤4:根据***模块的状态转换关系,并结合步骤3中的汇编指令动态同步编程,对程序模块中的状态跳入指令处进行***标识位,从而实现软件的检纠错防护设计。
步骤4-1:如图4所示,选择将要进行程序检测的模块,定义程序状态控制流图为有向图V={v1,v2,..},其中,模块vi对应唯一静态标识位Si,指令执行完的功能模块vi和将要正确跳转执行的目的基本块vm的静态签名距离dm=Si⊕Sm,其中,i=1,2,3…N,m=1,2,3…N,i=1,2,3…N,N为正整数且N≥2;其中,为了便于描述,图4中各个G的计算公式省略了⊕符号。
步骤4-2:计算功能模块vi跳转进入的功能模块vm的动态签名值Gm,并与功能模块vm的静态标识位Sm对比;
步骤4-3:如果两者相同则继续运行执行后续模块指令,否则读取功能模块vi对应的汇编指令的指令序列中的中间变量,重新执行功能模块vi进行跳转直至功能模块vi的结果数据与步骤3得到的功能模块vi的运算结果相同且功能模块vm的动态签名值Gm与功能模块vm的静态标识位Sm相同,然后继续运行执行后续模块指令,使用有向图判断功能模块vm存在多扇入模块还是单扇入模块,如果功能模块vm存在多扇入模块,则Gm=Si⊕Ai⊕dm,Ai=Si⊕Sj,dm=Sj⊕Sm;如果功能模块vm存在单扇入模块,则Gm=Si⊕dm,dm=Si⊕Sm,⊕为异或运算符号,Sj为功能模块vm的多扇入模块中起始功能模块vj的静态标识位,j=1,2,3…N,起始功能模块vj为从功能模块vm的多扇入模块中任意选择得到的一个功能模块。例如,功能模块v1、功能模块v2、功能模块v3扇入功能模块v4,即功能模块v4存在多扇入模块,分别为功能模块v1、功能模块v2、功能模块v3,当计算功能模块v1跳转进入的功能模块v4的动态签名值G4,并与功能模块v4的静态标识位S4对比时,选择功能模块v2作为功能模块v4的起始标志位,即当前G4=S1⊕A1⊕d4,A1=S1⊕S2,d4=S2⊕S4,那么当计算功能模块v2跳转进入的功能模块v4的动态签名值G4,并与功能模块v4的静态标识位S4对比时,功能模块v4的起始标志位仍然为功能模块v2,即当前G4=S2⊕A2⊕d4,A2=S2⊕S2,d4=S2⊕S4。
步骤4-4:遍历所有的vi。
阶段三、性能评估
步骤5:按照阶段二防护设计策略,完成程序模块指令编程并运行;
步骤6:通过与时间维度指令冗余防护设计评估对比,在程序执行的时间效能上提升近3倍,并且可有效减弱单粒子软错误对***程序间运行引起的***“跑飞”、“异常”、“紊乱”等状况。
如图5所示为本发明一种基于汇编指令的动态同步单粒子软错误防护方法原理流程图,首先将防护前的汇编指令程序划分为多个功能模块,根据***软件各个功能模块的执行流程建立有向图V={v1,v2,v3…vi…vN};然后确定功能模块vi的静态标识位Si、静态签名距离di、调整签名值Ai,其中,N为正整数且N≥2,N个静态标识位Si各不相同,i=1,2,3…N;最后进行通过复制各个功能模块的中间变量并行执行后判断、计算进入功能模块的动态签名值并比较的防护设计,完成并得到加入防护、检测、恢复设计的汇编指令程序。
本发明方法根据TI公司提出的线性汇编的编译***架构,将汇编指令冗余和软件标识位检纠错方法结合,提出一种在程序内部的汇编指令动态同步单粒子软错误防护方法,实现程序冗余、控制流状态检纠错防护设计,从而提升***程序高可靠性防护优化设计。下面结合具体实施例对本发明方法进行说明:
1、按照TI的线性汇编指令格式,进行汇编指令功能描述:
11)在模块指令入口处设置唯一的模块标号label vi;
12)每条指令设置执行条件;
13)根据数字信号处理器的双数据通路,指定一侧汇编指令执行的功能单元;
14)按照所指定一侧的功能单元,选择匹配的寄存器完成操作数运算的读写。
汇编指令格式如下:
[label vi:][||][执行条件][.功能单元][寄存器操作数…]。
2、按照上述汇编指令书写格式,完成模块vi运算功能的线性汇编指令级描述,格式如下所示:
3、针对模块vi,完成对应模块的汇编指令级动态同步冗余防护设计,形如:
31)根据以上执行过程,模块vi利用数据通路A和B动态同步并行执行汇编指令,其中“||”表示指令并行执行符号。同时,利用“cmpeq”比较指令对最终变量data1和data2比对,如果if条件为1则表示运算结果一致,跳转下一个模块vi+1;否则执行第三次指令运算,得到最终变量data3。
32)用“cmpeq”比较指令对最终变量data1和data3进行结果比对,如果if条件为1则表示运算结果一致,跳转下一个模块vi+1;否则用“cmpeq”比较指令对最终变量data2和data3比对,执行完毕后跳转下一个模块vi+1。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
Claims (2)
1.一种基于汇编指令的动态同步单粒子软错误防护方法,其特征在于包括如下步骤:
(1)按照***软件的用户需求书将***软件划分为N个功能模块,记为v1,v2,v3…vN,然后对各个功能模块进行汇编指令级编程,得到每个功能模块对应的汇编指令的指令序列,根据***软件各个功能模块的执行流程建立有向图V={v1,v2,v3…vi…vN},任意确定功能模块vi的静态标识位Si,其中,N为正整数且N≥2,N个静态标识位Si各不相同,i=1,2,3…N;
(2)复制功能模块vi对应的汇编指令的指令序列中的中间变量,将复制得到的中间变量记为第二中间变量,然后使用中间变量执行功能模块vi对应的汇编指令的指令序列得到结果数据data1,使用第二中间变量执行功能模块vi对应的汇编指令的指令序列得到结果数据data2;所述的中间变量为在指令序列执行过程中用于生成其它变量的变量的值,其中,i的初值为1;
(3)比较结果数据data1、结果数据data2,如果两者结果相同,则将数据data1作为功能模块vi的运算结果并存储,转入步骤(5),如果两者结果不相同,则转入步骤(4);
(4)复制功能模块vi对应的汇编指令的指令序列中的中间变量,记为第三中间变量,并使用第三中间变量执行功能模块vi对应的汇编指令的指令序列,得到结果数据data3,将data3分别与步骤(2)得到的结果数据data1和结果数据data2比较,如果结果数据data3与结果数据data1或者结果数据data2中一个相同,则将结果数据dada3作为功能模块vi的运算结果并存储,然后转入步骤(5),否则重复复制功能模块vi对应的汇编指令的指令序列中的中间变量,并执行功能模块vi对应的汇编指令的指令序列过程,直至出现两个相同的结果数据,并将该结果数据作为功能模块vi的运算结果并存储转入步骤(5);
(5)计算功能模块vi跳转进入的功能模块vm的动态签名值Gm,并与功能模块vm的静态标识位Sm对比,如果两者相同则转入步骤(6),否则读取功能模块vi对应的汇编指令的指令序列中的中间变量,重新执行功能模块vi进行跳转直至功能模块vi的结果数据与步骤(4)得到的功能模块vi的运算结果相同且功能模块vm的动态签名值Gm与功能模块vm的静态标识位Sm相同,然后转入步骤(6),其中,使用有向图判断功能模块vm存在多扇入模块还是单扇入模块,如果功能模块vm存在多扇入模块,则Gm=Si⊕Ai⊕dm,Ai=Si⊕Sj,dm=Sj⊕Sm;如果功能模块vm存在单扇入模块,则Gm=Si⊕dm,dm=Si⊕Sm,⊕为异或运算符号,Sj为功能模块vm的多扇入模块中的起始功能模块vj的静态标识位,起始功能模块vj为功能模块vm的多扇入模块中的一个功能模块;
(6)i=i+1,重复步骤(2)-步骤(5),直至i=N。
2.根据权利要求1所述的一种基于汇编指令的动态同步单粒子软错误防护方法,其特征在于:所述的起始功能模块vj为从功能模块vm的多扇入模块中任意选择得到的一个功能模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510310153.0A CN104932950B (zh) | 2015-06-08 | 2015-06-08 | 一种基于汇编指令的动态同步单粒子软错误防护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510310153.0A CN104932950B (zh) | 2015-06-08 | 2015-06-08 | 一种基于汇编指令的动态同步单粒子软错误防护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104932950A true CN104932950A (zh) | 2015-09-23 |
CN104932950B CN104932950B (zh) | 2018-01-05 |
Family
ID=54120123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510310153.0A Active CN104932950B (zh) | 2015-06-08 | 2015-06-08 | 一种基于汇编指令的动态同步单粒子软错误防护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104932950B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221670A (zh) * | 2019-10-21 | 2020-06-02 | 西安空间无线电技术研究所 | 一种缓解检测冲突的单粒子软错误防护设计方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060090099A1 (en) * | 2004-08-30 | 2006-04-27 | Martin Alain J | SEU-tolerant QDI circuits |
CN101145118A (zh) * | 2007-10-30 | 2008-03-19 | 北京时代民芯科技有限公司 | Sparc处理器单粒子效应检测装置与检测方法 |
CN101551764A (zh) * | 2009-02-27 | 2009-10-07 | 北京时代民芯科技有限公司 | 基于同步冗余线程与编码技术的抗单粒子效应***及方法 |
CN103019878A (zh) * | 2012-12-31 | 2013-04-03 | 清华大学 | 一种冗余结构存储单元 |
US20140195729A1 (en) * | 2013-01-08 | 2014-07-10 | Andrew C. Russell | Memory Having Improved Reliability for Certain Data Types |
-
2015
- 2015-06-08 CN CN201510310153.0A patent/CN104932950B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060090099A1 (en) * | 2004-08-30 | 2006-04-27 | Martin Alain J | SEU-tolerant QDI circuits |
CN101145118A (zh) * | 2007-10-30 | 2008-03-19 | 北京时代民芯科技有限公司 | Sparc处理器单粒子效应检测装置与检测方法 |
CN101551764A (zh) * | 2009-02-27 | 2009-10-07 | 北京时代民芯科技有限公司 | 基于同步冗余线程与编码技术的抗单粒子效应***及方法 |
CN103019878A (zh) * | 2012-12-31 | 2013-04-03 | 清华大学 | 一种冗余结构存储单元 |
US20140195729A1 (en) * | 2013-01-08 | 2014-07-10 | Andrew C. Russell | Memory Having Improved Reliability for Certain Data Types |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221670A (zh) * | 2019-10-21 | 2020-06-02 | 西安空间无线电技术研究所 | 一种缓解检测冲突的单粒子软错误防护设计方法 |
CN111221670B (zh) * | 2019-10-21 | 2023-03-28 | 西安空间无线电技术研究所 | 一种缓解检测冲突的单粒子软错误防护设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104932950B (zh) | 2018-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102253889B (zh) | 一种回归测试中基于分布的测试用例优先级划分方法 | |
CN103365776B (zh) | 基于确定性重放的并行***弱一致性的验证方法和*** | |
Donaldson et al. | Automatic analysis of scratch-pad memory code for heterogeneous multicore processors | |
CN106021040B (zh) | 一种基于线形汇编指令差异性变换的dsp软错误检测方法 | |
US8972785B2 (en) | Classifying processor testcases | |
US20170010957A1 (en) | Method for Multithreaded Program Output Uniqueness Testing and Proof-Generation, Based on Program Constraint Construction | |
CN102915271A (zh) | 基于控制流图的单元回归测试用例集合优化方法 | |
US10360027B2 (en) | Automatically extracting a model for the behavior of a mobile application | |
CN103885876B (zh) | 测试方法及设备 | |
US9396095B2 (en) | Software verification | |
CN103617115A (zh) | 一种基于抽象解释和模型验证的运行时错误分析方法 | |
KR102013657B1 (ko) | 연관된 다중 파일 정적 분석 장치 | |
US8875074B1 (en) | Formal fault detection | |
US9471327B2 (en) | Verifying forwarding paths in pipelines | |
Yang et al. | JIT trace-based verification for high-level synthesis | |
Alves et al. | A method to localize faults in concurrent C programs | |
CN104932950A (zh) | 一种基于汇编指令的动态同步单粒子软错误防护方法 | |
CN104049949A (zh) | 一种面向bswap指令的窥孔优化方法 | |
US9122603B2 (en) | Failure detection in high-performance clusters and computers using chaotic map computations | |
Vargas et al. | Preliminary results of SEU fault-injection on multicore processors in AMP mode | |
Cong et al. | Impact of loop transformations on software reliability | |
Ghalaty et al. | Software-based control flow error detection and correction using branch triplication | |
Darvish et al. | Guidiva: Automated discovery and validation of state-based gui invariants | |
CN104932975B (zh) | 一种测试用例选择方法和装置 | |
CN112416687B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |