CN108171016A - 一种线性汇编级的可配置容错方法、计算机、计算机程序 - Google Patents
一种线性汇编级的可配置容错方法、计算机、计算机程序 Download PDFInfo
- Publication number
- CN108171016A CN108171016A CN201711241004.9A CN201711241004A CN108171016A CN 108171016 A CN108171016 A CN 108171016A CN 201711241004 A CN201711241004 A CN 201711241004A CN 108171016 A CN108171016 A CN 108171016A
- Authority
- CN
- China
- Prior art keywords
- variable
- instruction
- updated
- variables
- configurable
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000004590 computer program Methods 0.000 title claims abstract description 8
- 238000004364 calculation method Methods 0.000 claims abstract description 15
- 230000002787 reinforcement Effects 0.000 abstract description 16
- 238000011156 evaluation Methods 0.000 abstract description 10
- 230000003014 reinforcing effect Effects 0.000 description 15
- 238000002347 injection Methods 0.000 description 10
- 239000007924 injection Substances 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 6
- TVZRAEYQIKYCPH-UHFFFAOYSA-N 3-(trimethylsilyl)propane-1-sulfonic acid Chemical compound C[Si](C)(C)CCCS(O)(=O)=O TVZRAEYQIKYCPH-UHFFFAOYSA-N 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 239000002243 precursor Substances 0.000 description 3
- IWNWLPUNKAYUAW-UHFFFAOYSA-N Ethylendiamine dihydroiodide Chemical compound I.I.NCCN IWNWLPUNKAYUAW-UHFFFAOYSA-N 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 240000002989 Euphorbia neriifolia Species 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000000686 essence Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013432 robust analysis Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明属于计算机软件加固技术领域,公开了一种线性汇编级的可配置容错方法、计算机、计算机程序,将程序代码划分为若干个基本块;所有变量重命名;计算每个变量的复算效率;计算每个变量的影响因子;对全部变量进行排序并选取部分进行可配置容错。本发明基于寄存器生命周期、进行加固所需添加的指令条数、影响的其他寄存器数量的情况,提出复算效率和影响因子两个评价指标,并提供计算方法与依据其进行可配置加固的方法,对寄存器的重要程度和加固难度进行了全面的考量,提出了更全面、性价比更高的可配置加固方法。
Description
技术领域
本发明属于计算机软件加固技术领域,尤其涉及一种线性汇编级的可配置容错方法、计算机、计算机程序。
背景技术
在软加固技术的应用中,在不同应用、不同场景下对于加固开销以及应用的可靠性可能有不同的要求。程序中对可靠性有关键影响的代码和数据一般只是一小部分,因此在开销受限的情况下,可以优先保护这部分的代码和数据。现有对于可配置加固技术的研究,包括使用指令鲁棒性分析进行部分指令加固的SIRFT技术和使用寄存器优先级分析进行部分寄存器加固的S-SWIFT-R。SIRFT技术通过对指令对错误的容忍能力即指令的鲁棒性进行分析,通过选择性保护鲁棒性较差的指令,在尽量保证可靠性的前提下减少加固时间开销,S-SWIFT-R基于SWIFT-R,通过计算寄存器的泛化生命期来选择性的对某些寄存器进行保护。两种可配置加固方法存在:(1)在SIRFT技术中,是以指令的鲁棒性作为评价标准进行可配置加固,这样的评价方法难以反应程序的数据流和控制流特征,单纯的保护某几条指令而不保护它们的数据来源并不会产生良好效果;该方法只能保证受保护指令不会受到发生在指令执行时的软错误影响,如果软错误发生在其前置指令执行时,依然会导致受保护指令出错。
(2)在S-SWIFT-R中,选取了寄存器的重要性作为评价标准,通过根据不同可靠性要求调整需要加固的寄存器范围来实现可配置加固,以寄存器作为可配置加固的加固单位反映了一部分的程序数据流控制流特征,但只以生命周期作为评价标准并不全面,无法切实反映寄存器的重要程度与对其进行加固的实际成本。以生命周期作为重要性评价标准无法完全反映实际的重要性,从而在资源有限时会在保护中保护一些实际上不那么重要的寄存器,而使一些更重要的寄存器失去保护。
SIRFT技术中以指令的鲁棒性作为评价标准进行可配置加固的加固单位是一条或几条指令,而一条指令的执行结果是否会发生错误,不止取决于该指令执行中是否发生了错误,也取决于与作为该指令数据来源的前置指令是否会发生错误,只对一条指令进行保护而不保护作为其前置指令,当受保护指令的前置指令发生错误时,受保护指令也会发生错误;S-SWIFT-R与本发明一样以寄存器(S-SWIFT-R是在汇编语言级,故使用寄存器作为单位,本发明在xi级,故使用变量作为单位,原理上类似)的重要性作为评价标准,但是在对寄存器的重要性进行评价时只使用了生命周期作为评价标准,生命周期指一个寄存器从赋值到不再使用该寄存器的时间,实际上,寄存器的生命周期长并不一定代表寄存器的重要性高,有些寄存器虽然生命周期很长,但使用次数并不多,单纯使用生命周期作为重要性评价标准不能完全反映实际重要性。
综上所述,现有技术存在的问题是:现有的可配置加固方法存在:难以反应程序的数据流和控制流特征,单纯的保护某几条指令而不保护它们的数据来源并不会产生良好效果;只以生命周期作为评价标准并不全面,无法切实反映寄存器的重要程度与对其进行加固的实际成本。
发明内容
针对现有技术存在的问题,本发明提供了一种线性汇编级的可配置容错方法、计算机、计算机程序。现有技术即SIRFT和S-SWIFT-R。本方案相较于现有技术:(1)考虑了数据流和控制流的错误传播原理,并体现在变量的影响因子计算过程中;(2)将单个基本块中的变量作为加固的最小单位,使得可配置的粒度更细。
本发明是这样实现的,本发明所提出的变量影响因子计算方法综合了本领域现有的一些效果较好的计算思路,并在其基础上进行改进提出。
一种线性汇编级的可配置容错方法,所述线性汇编级的可配置容错方法包括:
步骤一,将程序代码划分为若干个基本块;
步骤二,所有变量重命名,位于不同的基本块内的同名变量重命名进行区分以增加可配置容错的粒度;对于所有的变量,设其原名称为var,所处的基本块编号为b,则将其名称更新为var_b;
步骤三,计算每个变量的复算效率;
步骤四,计算每个变量的影响因子,若变量b是由变量a计算得到的,则变量a影响变量b;若变量a是进入变量b相关计算的基本块的进入条件,则变量a影响变量b;若变量a影响变量b,而变量b影响变量c,则变量a也影响变量c;
步骤五,对全部变量进行排序并选取部分进行可配置容错。
进一步,所述步骤一包括:
(1)初始化,令i=1,j=1,b=1;
(2)判断第i条指令是否为存储或者跳转指令,若是则转(3),否则转(4);
(3)标记第b个基本块开始于第j条指令,结束于第i条指令;将i的值更新为i+1,将j的值更新为i,将b的值更新为b+1,转(2);
(4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转S102,否则转(2)。
进一步,所述步骤三包括:
(1)初始化,令所有变量的生命期及复算次数为0,i=1;
(2)对于第i条指令中进行了读出的每一个变量var,设变量var的生命期为p,变量var的上一次写入位置为w,则将p更新为p+i-w,更新w为i;
(3)对于第i条指令中进行了写入的每一个变量var,设变量var的复算次数为d,变量var的上一次写入位置为w,则将d更新为d+1,更新w为i;
(4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转S104,否则转(2)。
进一步,所述步骤四包括:
(1)构建变量影响关系图,变量影响关系图是指用一张图G(V,E)来表示变量之间的传递关系,点集合V是所有变量的集合,有向边集合E是所有影响关系的集合;
1)初始化,令i=1;
2)若第i条指令是运算指令或读内存指令,则对于所有源变量var1至varn,在图G中添加其到目的变量var0的一条有向边;
3)若第i条指令是跳转指令,则对于所有跳转条件中的变量cond1至condn,建立其至跳转的目的基本块中的所有被写入的变量var1至varn的一条有向边;
4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转(2),否则转2);
(2)根据变量影响关系图,计算所有变量的影响因子;对于某个变量a,所有在图G中通过若干条边可达的变量b均是受变量a影响的;设点集V为(V1,V2,…Vn);
1)初始化,令i=1;
2)对点Vi进行深度优先搜索,对所有搜索到的不重复的点进行计数,将计数和作为点Vi所对应的变量的影响因子;
3)将i的值更新为i+1,判断i是否已大于V的元素个数,若是则转步骤五,否则转2)。
进一步,所述步骤五包括:
(1)对全部变量按照影响因子从大致小排序,对于影响因子相同的变量按照复算效率从大致小排序;排序后得到的变量序列中,靠前的变量具有更强的容错优先级;
(2)根据容错开销或容错率条件,在变量序列中从前往后选取变量进行容错保护。
本发明的另一目的在于提供一种应用所述线性汇编级的可配置容错方法的计算机程序。
本发明的另一目的在于提供一种搭载有所述计算机程序的计算机。
本发明的优点及积极效果为:基于寄存器生命周期、进行加固所需添加的指令条数、影响的其他寄存器数量的情况,提出复算效率和影响因子两个评价指标,并提供计算方法与依据其进行可配置加固的方法,对寄存器的重要程度和加固难度进行了全面的考量,提出了更全面、性价比更高的可配置加固方法。
本发明对全部变量按照影响因子从大致小排序,对于影响因子相同的变量按照复算效率从大致小排序。排序后得到的变量序列中,靠前的变量具有更强的容错优先级;
本发明根据容错开销或容错率条件,在变量序列中从前往后选取变量进行了容错保护。
附图说明
图1是本发明实施例提供的线性汇编级的可配置容错方法流程图。
图2是本发明实施例提供的变量v的一个生命周期是指从一次定值到下一次定值之间的区间图。
图3是本发明实施例提供的基于DSS的故障注入实验流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在软加固技术的应用中,在不同应用、不同场景下对于加固开销以及应用的可靠性可能有不同的要求。程序中对可靠性有关键影响的代码和数据一般只是一小部分,因此在开销受限的情况下,可以优先保护这部分的代码和数据。
下面结合附图对本发明的应用原理作详细的描述。
如图1所示,本发明实施例提供的线性汇编级的可配置容错方法包括以下步骤:
S101:将程序代码划分为若干个基本块,基本块是指不包含跳转指令或存储指令的程序段;
S102:将所有变量重命名,位于不同的基本块内的同名变量重命名进行区分以增加可配置容错的粒度;对于所有的变量,设其原名称为var,所处的基本块编号为b,则将其名称更新为var_b;
S103:计算每个变量的复算效率,复算效率是指变量的生命期与复算次数的比值;变量的生命期指的是变量被写入到被读出之间的过程;
S104:计算每个变量的影响因子,若变量b是由变量a计算得到的,则变量a影响变量b;若变量a是进入变量b相关计算的基本块的进入条件,则变量a影响变量b;若变量a影响变量b,而变量b影响变量c,则变量a也影响变量c;
S105:对全部变量进行排序并选取部分进行可配置容错。
在本发明的优选实施例中:步骤S101包括:
(1)初始化,令i=1,j=1,b=1;
(2)判断第i条指令是否为存储或者跳转指令,若是则转(3),否则转(4);
(3)标记第b个基本块开始于第j条指令,结束于第i条指令。将i的值更新为i+1,将j的值更新为i,将b的值更新为b+1,转(2);
(4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转S102,否则转(2)。
在本发明的优选实施例中:步骤S103包括:复算效率是指变量的生命期与复算次数的比值。变量的生命期指的是变量被写入到被读出之间的过程,在这个过程中若变量发生错误则会对计算结果产生影响,反之变量在生命期外发生错误不会对程序结果产生影响。变量的复算次数指的是保护该变量需要添加的复算指令数目,由于变量每次被写入都需要进行复算,因此变量的复算次数即该变量被写入的次数;
其中,变量声明期需要特殊说明一下:
变量生命期(LiveTime):在程序运行过程中,一个变量v可能被多次定值或引用。如图2所示,变量v的一个生命周期是指从一次定值到下一次定值之间的区间。
变量活跃区间(ActiveSpan):变量v从定值到下一次定值之前的最后一次引用之间的区间。
变量死亡区间(DeadSpan):变量v从最后一次引用到下一次定值之间的区间。如图2所示。
具体包括:
(1)初始化,令所有变量的生命期及复算次数为0,i=1;
(2)对于第i条指令中进行了读出的每一个变量var,设变量var的生命期为p,变量var的上一次写入位置为w,则将p更新为p+i-w,更新w为i;
(3)对于第i条指令中进行了写入的每一个变量var,设变量var的复算次数为d,变量var的上一次写入位置为w,则将d更新为d+1,更新w为i;
(4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转S104,否则转(2)。
在本发明的优选实施例中:步骤S104包括:影响因子是指某个变量能够影响到的变量数量。具体地,若变量b是由变量a计算得到的,则变量a影响变量b;若变量a是进入变量b相关计算的基本块的进入条件,则变量a影响变量b;若变量a影响变量b,而变量b影响变量c,则变量a也影响变量c;
变量影响因子也称为变量依赖影响因子,由变量间的相互依赖关系决定。
程序中的变量之间可能由于相互依赖而产生联系,如果被依赖的变量发生错误,很可能会沿着依赖关系发生错误传播,导致一系列的变量发生错误,因此,变量间的数据依赖关系也是变量关键性分析的关键因素之一。对变量的依赖关系的相关定义如下:
直接后继变量(Successor)、直接前驱变量(Precursor):如果变量vi的值被某个含变量vj的语句所更新,则变量vi就是变量vj的后继变量,记为vi∈Successor(vj),同时有vj∈Precursor(vi)。
后代变量(Descendant):包括直接后继与间接后继,定义如下:
依赖影响因子M:变量vj对其后代变量vi的影响因子记为M(vi,vj)。
具体包括:
(1)构建变量影响关系图。变量影响关系图是指用一张图G(V,E)来表示变量之间的传递关系,其中,点集合V是所有变量的集合,有向边集合E是所有影响关系的集合。
1)初始化,令i=1;
2)若第i条指令是运算指令或读内存指令,则对于所有源变量var1至varn,在图G中添加其到目的变量var0的一条有向边;
3)若第i条指令是跳转指令,则对于所有跳转条件中的变量cond1至condn,建立其至跳转的目的基本块中的所有被写入的变量var1至varn的一条有向边;
4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转(2),否则转2);
(2)根据变量影响关系图,计算所有变量的影响因子。对于某个变量a,所有在图G中通过若干条边可达的变量b均是受变量a影响的。设点集V为(V1,V2,…Vn);
1)初始化,令i=1;
2)对点Vi进行深度优先搜索,对所有搜索到的不重复的点进行计数,将计数和作为点Vi所对应的变量的影响因子;
3)将i的值更新为i+1,判断i是否已大于V的元素个数,若是则转S105,否则转2);
在本发明的优选实施例中:步骤S105包括:
(1)对全部变量按照影响因子从大致小排序,对于影响因子相同的变量按照复算效率从大致小排序。排序后得到的变量序列中,靠前的变量具有更强的容错优先级;
(2)根据容错开销或容错率条件,在变量序列中从前往后选取变量进行容错保护。
下面结合实验对本发明的应用效果作详细的描述.
故障注入一种通过人为引入故障,测试目标系统可靠性的仿真技术,通过故障注入,能够增加系统失效频率,快速测试系统的可靠性。调试脚本服务(Debug ScriptServer,DSS)是德州仪器公司的集成开发环境CCS(Code Composer Studio)中提供的用于调试和自动化处理的脚本引擎接口。DSS拥有大量开放的Java API,运行在CCS提供的模拟器环境中,能够通过Jave、JavaScript、Python等语言进行包括运行、停止、恢复系统状态、源码级和汇编级单步执行、读写内存、读写寄存器等操作。基于DSS的故障注入工具能够运行C6678型号DSP的模拟器,并在程序运行时选择时机进行故障注入,并对测试结果进行记录,以便于接下来的分析,故障注入的流程如图3所示。
基于DSS的故障注入工具能够模拟SEU故障模型中的故障类型,即程序每次执行过程只发生一次单粒子翻转错误,满足算法测试的需要。进行实验的条件如下:
1.实验选取的测试程序为JPEG2000应用中的嵌入式块编码(EBC)部分和小波变换部分,对其中的线性汇编模块进行容错转换,并将转换后的程序与其他高级语言模块一起进行编译为JPEG2000加固程序。
2.对数据流算法选择的对比算法为EDDI和SWIFT-R,故障注入部位为通用寄存器。
3.对控制流算法选择的对比算法为CFCSS和ACCE,故障注入部位为控制寄存器。
4.每次实验,循环运行未加固程序或对应算法加固后的程序,程序输入为8MB的样例图像,并在每次执行时EBC和小波模块执行的过程中注入单粒子翻转故障。
根据程序被注入故障的执行状态,可将结果分为5类:
结果正确(Correct):注入的故障没有影响到程序的正确性,程序在规定时间完成且结果正确。
结果错误(Incorrect):注入的故障正常退出,但得到了错误的结果。
异常终止(Exception):注入的故障被运行环境检测出,程序异常终止,例如非法指令。
运行超时(Timeout):注入的故障导致程序陷入死循环,程序不能再规定时间结束。
算法检出(Detected):注入的故障被容错算法检出。
表1给出了故障注入实验的结果。其中第2~6列分别表示的发生次数,第7、8列分别表示失效率(FailRate)和可靠性(Reliability)。每个目标程序中,“O”代表原始程序,“FT”代表加固程序。在程序对故障的5种反应中,Correct不影响输出结果,Exception、Timeout和Detected可以被用户感知,将它们定义为“可靠的”,而Incorrect不能被用户感知,定义为失效。
表1故障注入实验结果
从实验结果可以看出,注入故障后,加固后的程序失效率从11.4%和25.6%下降至1.2%和2.2%,得到了明显的改善,加固后程序的可靠性达到了98.8%和97.8%,由此可见,本发明的加固方法能够有效提高程序的可靠性。本发明由于进行了可配置加固,因此,时空开销都比较小。我们根据加固前和加固后的程序执行时钟周期数,进行了时间和空间开销计算,并与其它典型的加固方法进行了比较,如下表所示。
表2不同算法间的开销比较
表中给出了本发明与其它典型加固方法的开销比较,其中,ThOR[Rebaudengo M,Reorda M S,Violante M,et al.A source-to-source compiler for generatingdependable software[C]//Source Code Analysis and Manipulation,2001.Proceedings.First IEEE International Workshop on.IEEE,2001:33-42]是在源代码级实现的,EDDI+CFCSS[Oh N,Shirvani P P,McCluskey E J.Error detection byduplicated instructions in super-scalar processors[J].IEEE Transactions onReliability,2002,51(1):63-75][N.Oh,P.Mitra,E.J.McCluskey.ED4I:Error Detectionby Diverse Data and Duplicated Instructions.IEEE Transactions onComputer.2002,51(2):180–199]是在指令级实现的。可以看出,本发明的时空开销均小于两种经典算法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种线性汇编级的可配置容错方法,其特征在于,所述线性汇编级的可配置容错方法包括:
步骤一,将程序代码划分为若干个基本块;
步骤二,所有变量重命名,位于不同的基本块内的同名变量重命名进行区分以增加可配置容错的粒度;对于所有的变量,设其原名称为var,所处的基本块编号为b,则将其名称更新为var_b;
步骤三,计算每个变量的复算效率;
步骤四,计算每个变量的影响因子,若变量b是由变量a计算得到的,则变量a影响变量b;若变量a是进入变量b相关计算的基本块的进入条件,则变量a影响变量b;若变量a影响变量b,而变量b影响变量c,则变量a也影响变量c;
步骤五,对全部变量进行排序并选取部分进行可配置容错。
2.如权利要求1所述的线性汇编级的可配置容错方法,其特征在于,所述步骤一包括:
(1)初始化,令i=1,j=1,b=1;
(2)判断第i条指令是否为存储或者跳转指令,若是则转(3),否则转(4);
(3)标记第b个基本块开始于第j条指令,结束于第i条指令;将i的值更新为i+1,将j的值更新为i,将b的值更新为b+1,转(2);
(4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转S102,否则转(2)。
3.如权利要求1所述的线性汇编级的可配置容错方法,其特征在于,所述步骤三包括:
(1)初始化,令所有变量的生命期及复算次数为0,i=1;
(2)对于第i条指令中进行了读出的每一个变量var,设变量var的生命期为p,变量var的上一次写入位置为w,则将p更新为p+i-w,更新w为i;
(3)对于第i条指令中进行了写入的每一个变量var,设变量var的复算次数为d,变量var的上一次写入位置为w,则将d更新为d+1,更新w为i;
(4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转S104,否则转(2)。
4.如权利要求1所述的线性汇编级的可配置容错方法,其特征在于,所述步骤四包括:
(1)构建变量影响关系图,变量影响关系图是指用一张图G(V,E)来表示变量之间的传递关系,点集合V是所有变量的集合,有向边集合E是所有影响关系的集合;
1)初始化,令i=1;
2)若第i条指令是运算指令或读内存指令,则对于所有源变量var1至varn,在图G中添加其到目的变量var0的一条有向边;
3)若第i条指令是跳转指令,则对于所有跳转条件中的变量cond1至condn,建立其至跳转的目的基本块中的所有被写入的变量var1至varn的一条有向边;
4)将i的值更新为i+1,判断i是否已大于程序的总指令数,若是则转(2),否则转2);
(2)根据变量影响关系图,计算所有变量的影响因子;对于某个变量a,所有在图G中通过若干条边可达的变量b均是受变量a影响的;设点集V为(V1,V2,…Vn);
1)初始化,令i=1;
2)对点Vi进行深度优先搜索,对所有搜索到的不重复的点进行计数,将计数和作为点Vi所对应的变量的影响因子;
3)将i的值更新为i+1,判断i是否已大于V的元素个数,若是则转步骤五,否则转2)。
5.如权利要求1所述的线性汇编级的可配置容错方法,其特征在于,所述步骤五包括:
(1)对全部变量按照影响因子从大致小排序,对于影响因子相同的变量按照复算效率从大致小排序;排序后得到的变量序列中,靠前的变量具有更强的容错优先级;
(2)根据容错开销或容错率条件,在变量序列中从前往后选取变量进行容错保护。
6.一种应用权利要求1~5任意一项所述线性汇编级的可配置容错方法的计算机程序。
7.一种搭载有权利要求6所述计算机程序的计算机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711241004.9A CN108171016B (zh) | 2017-11-30 | 2017-11-30 | 一种线性汇编级的可配置容错方法、计算机、计算机程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711241004.9A CN108171016B (zh) | 2017-11-30 | 2017-11-30 | 一种线性汇编级的可配置容错方法、计算机、计算机程序 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108171016A true CN108171016A (zh) | 2018-06-15 |
CN108171016B CN108171016B (zh) | 2021-04-09 |
Family
ID=62524823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711241004.9A Expired - Fee Related CN108171016B (zh) | 2017-11-30 | 2017-11-30 | 一种线性汇编级的可配置容错方法、计算机、计算机程序 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108171016B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110126049A1 (en) * | 2009-11-24 | 2011-05-26 | Honeywell International Inc. | Architecture and method for hardware-assisted processor checkpointing and rollback |
CN103646194A (zh) * | 2013-11-29 | 2014-03-19 | 北京广利核系统工程有限公司 | 一种基于形式化验证的同步数据流程序的可信排序方法 |
CN104573427A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN106021040A (zh) * | 2016-05-04 | 2016-10-12 | 中国人民解放军国防科学技术大学 | 一种基于线形汇编指令差异性变换的dsp软错误检测方法 |
-
2017
- 2017-11-30 CN CN201711241004.9A patent/CN108171016B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110126049A1 (en) * | 2009-11-24 | 2011-05-26 | Honeywell International Inc. | Architecture and method for hardware-assisted processor checkpointing and rollback |
CN103646194A (zh) * | 2013-11-29 | 2014-03-19 | 北京广利核系统工程有限公司 | 一种基于形式化验证的同步数据流程序的可信排序方法 |
CN104573427A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN106021040A (zh) * | 2016-05-04 | 2016-10-12 | 中国人民解放军国防科学技术大学 | 一种基于线形汇编指令差异性变换的dsp软错误检测方法 |
Non-Patent Citations (3)
Title |
---|
曲越: "关于容错加固计算机软硬件实现的综述", 《全国抗恶劣环境计算机第十九届学术年会论文集》 * |
李剑明等: "程序控制流检测算法优化", 《计算机科学》 * |
盖璐璐等: "一种低开销的可配置容错技术", 《第十九届计算机工程与工艺年会暨第五届微处理器技术论坛论文集》 * |
Also Published As
Publication number | Publication date |
---|---|
CN108171016B (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Clap: Recording local executions to reproduce concurrency failures | |
US8769499B2 (en) | Universal causality graphs for bug detection in concurrent programs | |
Lu et al. | SDCTune: A model for predicting the SDC proneness of an application for configurable protection | |
CN106021040B (zh) | 一种基于线形汇编指令差异性变换的dsp软错误检测方法 | |
Pattabiraman et al. | Application-based metrics for strategic placement of detectors | |
Donaldson et al. | Automatic analysis of scratch-pad memory code for heterogeneous multicore processors | |
US8065565B2 (en) | Statistical debugging using paths and adaptive profiling | |
CN105260312B (zh) | 一种多核实时系统应用数据竞争错误的调试方法 | |
Bergaoui et al. | A new critical variable analysis in processor-based systems | |
Arora et al. | A systematic review of approaches for testing concurrent programs | |
Mammo et al. | BugMD: Automatic mismatch diagnosis for bug triaging | |
Joshi et al. | Aloe: verifying reliability of approximate programs in the presence of recovery mechanisms | |
US7555418B1 (en) | Procedure summaries for multithreaded software | |
Kasap et al. | Micro-Architectural features as soft-error markers in embedded safety-critical systems: preliminary study | |
Gulzar et al. | Optdebug: Fault-inducing operation isolation for dataflow applications | |
CN108171016A (zh) | 一种线性汇编级的可配置容错方法、计算机、计算机程序 | |
Sadi et al. | Component criticality analysis to minimizing soft errors risk | |
Cong et al. | Impact of loop transformations on software reliability | |
Aidemark et al. | Path-based error coverage prediction | |
Sun et al. | An Interleaving Guided Metamorphic Testing Approach for Concurrent Programs | |
Bhargava | Software reliability in real-time systems | |
Fang | Approaches for building error resilient applications | |
Yakhchi et al. | Silent data corruption estimation and mitigation without fault injection | |
Tan et al. | Detecting Incorrect Behavior of Cloud Databases as an Outsider | |
Qin et al. | Predicting aging-related bugs using network analysis on aging-related dependency networks |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210409 Termination date: 20211130 |
|
CF01 | Termination of patent right due to non-payment of annual fee |