CN108491317B - 一种基于指令脆弱性分析的sdc错误检测方法 - Google Patents

一种基于指令脆弱性分析的sdc错误检测方法 Download PDF

Info

Publication number
CN108491317B
CN108491317B CN201810117528.5A CN201810117528A CN108491317B CN 108491317 B CN108491317 B CN 108491317B CN 201810117528 A CN201810117528 A CN 201810117528A CN 108491317 B CN108491317 B CN 108491317B
Authority
CN
China
Prior art keywords
instruction
sdc
vulnerability
program
instructions
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.)
Active
Application number
CN201810117528.5A
Other languages
English (en)
Other versions
CN108491317A (zh
Inventor
庄毅
张倩雯
顾晶晶
宴祖佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Aeronautics and Astronautics
Original Assignee
Nanjing University of Aeronautics and Astronautics
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University of Aeronautics and Astronautics filed Critical Nanjing University of Aeronautics and Astronautics
Priority to CN201810117528.5A priority Critical patent/CN108491317B/zh
Publication of CN108491317A publication Critical patent/CN108491317A/zh
Application granted granted Critical
Publication of CN108491317B publication Critical patent/CN108491317B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于指令脆弱性分析的SDC错误检测方法步骤如下:步骤1,对程序集进行故障注入实验,获取样本数据集;步骤2,提取指令SDC脆弱性描述特征;步骤3,训练基于支持向量回归的指令SDC脆弱性分析模型;步骤4,提取目标程序指令特征,对指令脆弱性进行预测分析;步骤5,根据指令脆弱性值对目标程序进行指令冗余处理;步骤6,对冗余处理后的目标程序进行故障注入实验,程序运行时对SDC错误进行检测;步骤7,对冗余处理后的目标程序的SDC错误检测能力进行评估。本发明对SDC错误的检测率高,且性能开销低,可应用于恶劣环境下瞬时故障导致的程序SDC错误的检测。

Description

一种基于指令脆弱性分析的SDC错误检测方法
技术领域
本发明属于软加固和可信软件领域,具体涉及基于指令脆弱性分析的SDC错误检测方法。
背景技术
随着集成电路技术的发展,在计算机性能大幅度提升的同时芯片也更容易受到空间辐射的影响。在太空环境中,由高能粒子辐照或电磁脉冲干扰等因素造成的单粒子效应是计算机系统失效的主要原因之一。单粒子翻转(Single Event Upset,SEU)是单粒子效应最主要的表现形式。由单粒子翻转造成的系统硬件故障称为软错误,是一种瞬时故障。软错误对系统可靠性的影响在于它会传播到程序中,造成程序的状态异常或功能失效。在星载计算机的研究领域中,已出现过多次单粒子翻转事件,造成计算机功能出现严重损伤。
瞬时故障对程序运行的影响有很多种:虽然发生了瞬时故障,但没有影响程序的正常运行及结果;由于访问越界等原因导致的程序崩溃或挂起,已有基于症状的检测方法对其进行检测,并使用检查点机制进行恢复;程序能够正常运行,但出现了结果错误,称为SDC(Silent Data Corruption)错误。SDC错误是隐蔽传播的,由于隐蔽传播在程序的执行过程中不会有系统错误的提示,因而无法被检测机制捕获,但却会导致程序产生错误的结果。
在基于软件的数据流错误检测方法中,目前针对程序SDC错误检测的方法主要有两种:程序冗余和程序断言。马骏驰等人在源代码中插入以不变量为内容的断言,利用发生软错误后断言报错来检测软错误,具有较高的检出率和较低的检测代价。Laguna等人针对瞬时故障下科学计算程序中SOC(Silent Output Corruption)错误,采用支持向量模型对程序中的SOC脆弱指令进行判定,并对其进行冗余保护,他们的方法极大的降低了错误检测的性能开销。但该方法针对的是科学计算程序,普适性不够好。Lu等人基于决策回归树对程序中的存储指令和比较指令进行脆弱性预测,通过程序分析的方法得出程序中所有指令的SDC脆弱性值,并基于此对程序进行冗余保护。基于程序断言的检测方法的检测代价不高,但检测率较低。而基于程序冗余的方法的研究重点在于如何分析程序中脆弱的部分并对其进行选择性的冗余处理。
随着集成电路芯片工艺尺寸的减小,软错误引起的失效问题也越来越多。为了解决空间辐射对软件执行的影响,尤其是在高可靠性的航空航天领域,要使得程序在SDC错误存在的条件下仍然可以正确的运行,首要的是必须及时检测出瞬时故障导致的程序SDC错误。已有研究表明,SDC错误是由相对较小比例的指令中的数据变量错误引起的,因此如可以事先找到软件中的脆弱点并选择性的保护这些变量,则可实现高效费比的SDC错误检测机制以及目标程序加固机制。有技术中尚无一种利用支持向量回归进行指令SDC脆弱性分析并对SDC错误进行检测的报道。
发明内容
本发明所解决的技术问题在于提供一种基于指令脆弱性分析的SDC错误检测方法,可应用于对恶劣环境下受到瞬时故障影响的程序进行SDC错误检测。
实现本发明目的的技术解决方案为:基于指令脆弱性分析的SDC错误检测方法,包括如下步骤:
步骤1,对程序集进行故障注入实验,得到指令的SDC脆弱性值,从而构建指令SDC脆弱性分析模型样本数据集;
步骤2,根据步骤1得到的程序指令样本的SDC脆弱性值,提取指令SDC脆弱性描述特征向量F;
步骤3,根据步骤1得到的指令脆弱性值和步骤2得到的指令特征向量,训练基于支持向量回归的指令SDC脆弱性分析模型;
步骤4,使用步骤2的方法提取目标程序的指令特征向量,根据训练得到的指令SDC脆弱性分析模型对目标程序指令脆弱性值进行预测分析;
步骤5,根据步骤4分析得到的指令脆弱性值,对目标程序进行指令冗余处理;
步骤6,对步骤5得到的冗余处理后的目标程序进行故障注入实验,程序在运行时对SDC错误进行检测;
步骤7,对步骤5得到的冗余处理后的目标程序的SDC错误检测能力进行评估。
本发明与现有技术相比,其显著优点为:1)本发明使用程序分析的方法分析目标程序,能够更全面的获得影响指令脆弱性的特征,从而提高指令SDC脆弱性分析的准确性;2)本发明基于支持向量回归模型分析指令SDC脆弱性,并对程序进行冗余保护,在保证检测率的同时降低了时间开销。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为本发明的一种基于指令脆弱性分析的SDC错误检测方法的流程图。
图2为本发明的一种基于指令脆弱性分析的SDC错误检测方法的框架图。
图3为SDC错误检测率比较图。
图4为性能开销比较图。
具体实施方式
结合附图,本发明的一种基于指令脆弱性分析的SDC错误检测方法,包括如下步骤:
步骤1,对程序集进行故障注入实验,得到指令的SDC脆弱性值,从而构建指令SDC脆弱性分析模型样本数据集;
所述的指令SDC脆弱性值采用下式计算:
Figure BDA0001571034670000031
其中,集合Vstatic是程序的静态指令集合,Ii表示程序中的第i条静态指令,N为程序中所有静态指令的数目;集合Vdynamic是程序运行时的动态指令集合,di为指令Ii的动态执行次数;集合Idynamic(i)代表程序运行时静态指令Ii对应的所有动态执行指令,是Vdynamic的子集,
Figure BDA0001571034670000032
为指令Ii的第q条动态指令;PSDC(Ii)为指令Ii的SDC脆弱性值,
Figure BDA0001571034670000033
为动态指令
Figure BDA0001571034670000034
的SDC脆弱性值,通过故障注入实验结果计算得到。
步骤2,根据步骤1得到的程序指令样本的SDC脆弱性值,提取指令SDC脆弱性描述特征向量F;
所构建的指令SDC脆弱性描述特征向量F为下列二元组:
Figure BDA0001571034670000035
其中,Fdependent为数据传播依赖相关的指令依赖特征向量;END是一个包含五个字段的特征向量,END=<Estore,Ecaller,Eicmp,Efcmp,Eaddress>,分别表示是否被存储指令、函数调用指令、整型比较指令、浮点型比较指令、地址相关指令引用,若是则将相应位标记为1,否则标记为0;CMP是一个包含两个字段的特征向量,用来表征末端指令为比较指令时相关的指令特征,CMP=<Loopdepth,Pbranch>,Loopdepth为比较指令所在的循环深度,Pbranch为静态分支概率;Crash是一个包含两个字段的特征向量,用来表征与程序崩溃相关的特征;Crash=<Bytedest,Addrnum>,Bytedest为目的操作位数,Addrnum为前向切片中与地址相关的指令数;MF为计算出的错误屏蔽因子;Finherent为表征指令自身性质的指令固有特征向量;IC为指令的类型,是一个包含8个字段的特征向量,IC=<Cint,Cfloat,Ccmp,Cbit,Cconv,Cmem,Ccall,Cload>,分别表示是否为整型二元操作、浮点型二元操作、比较指令、逻辑操作、转换操作、地址相关的操作、函数调用指令、内存读指令,若是则将相应字段标记为1,否则标记为0;Insttime为动态指令执行时间与程序总时间占比;BBL为指令所在基本块的大小;INloop表示指令是否在循环中;RINbb表示到基本块结束还需执行的指令数;DCratio表示指令与函数执行时间的比值;Callnum表示指令所在函数被调用的次数;RINfun表示到函数返回还需执行的指令数;Varglobal表示指令中变量是否会影响全局变量,若是则标记为1,否则标记为0;Fanout表示指令目的操作数的扇出值。
步骤3,根据步骤1得到的指令脆弱性值和步骤2得到的指令特征向量,训练基于支持向量回归的指令SDC脆弱性分析模型;
训练基于支持向量回归的指令SDC脆弱性分析模型时,给定指令样本数据的训练集T={(Fi,pi)},i=1,2,...,l,l为训练集中样本的数量,其中Fi=<Fi.inherent,Fi.dependent>为训练集中的第i个样本的特征向量;pi表示第i个指令样本的SDC脆弱性;根据支持向量回归机结构化风险最小化原则,建立指令脆弱性分析模型,并进行求解,可得到相应的指令SDC脆弱性预测分析函数为:
Figure BDA0001571034670000041
其中,F表示待分析目标指令的特征向量;α和
Figure BDA0001571034670000042
为求解得到的Lagrange乘子;K(Fi,F)表示根据SVR理论引入的核函数;b为求解得到的偏置项。
步骤4,使用步骤2的方法提取目标程序的指令特征向量,根据步骤3中训练得到的指令SDC脆弱性分析模型对目标程序指令脆弱性值进行预测分析;
步骤5,根据步骤4预测分析得到的指令脆弱性值,对目标程序进行指令冗余处理;所述的指令冗余的方法具体包含三个步骤:
步骤5.1:根据步骤4的指令SDC脆弱性预测分析函数分析得到指令脆弱性值,在程序中采用下式选择待冗余的指令集合:
Figure BDA0001571034670000051
其中,Isort表示对指令脆弱性按递减顺序进行排序后的指令集合;
Figure BDA0001571034670000052
为指令
Figure BDA0001571034670000053
的SDC脆弱性值,
Figure BDA0001571034670000054
为指令
Figure BDA0001571034670000055
的动态指令数;Iselected表示从排序后指令Isort中选出的前S条指令集合;Z表示对指令的冗余粒度,即对目标程序进行冗余处理的指令比例;D是程序中静态指令的总数目;
步骤5.2:对步骤5.1中的指令集合Iselected进行冗余处理得到集合
Figure BDA00015710346700000510
遍历Idup中所有指令,若指令
Figure BDA0001571034670000056
数据依赖于
Figure BDA0001571034670000057
且i>j,则他们存在定义引用关系;若Idup指令集合中的指令
Figure BDA0001571034670000058
不能和其他的冗余指令构成定义引用关系,则在步骤5.3中为该冗余指令添加单独的比较指令;
步骤5.3:在基本块的最后插入比较指令,比较原始指令的执行结果和插入的冗余指令的执行结果,若结果不一致,则表明出现了瞬时故障,需要采取措施进行恢复;若结果一致,则表明该段基本块代码的执行没有出现错误。
步骤6,对步骤5得到的冗余处理后的目标程序进行故障注入实验,程序在运行时对SDC错误进行检测;
步骤7,对步骤5得到的冗余处理后的目标程序的SDC错误检测能力进行评估。所述的SDC错误检测能力通过下式进行评估:
Figure BDA0001571034670000059
其中,SDCcoverage表示SDC错误检出率;NSDC表示原目标程序注入故障后发生SDC错误的次数;NDUP表示经过冗余处理后的目标程序注入故障后检测到SDC错误的次数。
本发明给出影响指令脆弱性的指令特征,指令SDC脆弱性分析模型,对脆弱性较高的指令进行冗余处理以及对SDC错误进行检测的方法。该方法对SDC错误的检测率高,且性能开销低,可应用于恶劣环境下瞬时故障导致的程序SDC错误的检测。
下面结合实施例对本发明做进一步详细的描述。
实施例
结合图1和图2,本发明是一种基于指令脆弱性分析的SDC错误检测方法。包括如下步骤:
步骤1、对Mibench程序集中的FFT(傅里叶变换)、basicmath(数学计算)、SHA(安全散列算法)、CRC(通信CRC32计算工具)、partricia(网络中用于叶子稀疏的树结构)、sphinx(语音解码)六个程序进行故障注入实验,得到指令的SDC脆弱性值,从而构建指令SDC脆弱性预测模型样本数据集,包括4365个指令样本。所述的指令的SDC脆弱性值采用如下公式:
Figure BDA0001571034670000061
其中,集合Vstatic是程序的静态指令集合,Ii表示程序中的第i条静态指令,N为程序中所有静态指令的数目;集合Vdynamic是程序运行时的动态指令集合,di为指令Ii的动态执行次数;集合Idynamic(i)代表程序运行时静态指令Ii对应的所有动态执行指令,是Vdynamic的子集,
Figure BDA0001571034670000062
为指令Ii的第q条动态指令。PSDC(Ii)为指令Ii的SDC脆弱性值,
Figure BDA0001571034670000063
为动态指令
Figure BDA0001571034670000064
的SDC脆弱性值,通过故障注入实验结果计算得到。
步骤2、根据步骤1得到的程序指令样本的SDC脆弱性值,提取指令SDC脆弱性描述特征向量F。所构建的指令特征向量F为下列二元组:
Figure BDA0001571034670000065
其中,Fdependent为数据传播依赖相关的指令依赖特征向量;END是一个包含五个字段的特征向量,END=<Estore,Ecaller,Eicmp,Efcmp,Eaddress>,分别表示是否被存储指令、函数调用指令、整型比较指令、浮点型比较指令、地址相关指令引用,若是则将相应位标记为1,否则标记为0;CMP是一个包含两个字段的特征向量,用来表征末端指令为比较指令时相关的指令特征,CMP=<Loopdepth,Pbranch>,Loopdepth为比较指令所在的循环深度,Pbranch为静态分支概率;Crash是一个包含两个字段的特征向量,用来表征与程序崩溃相关的特征;Crash=<Bytedest,Addrnum>,Bytedest为目的操作位数,Addrnum为前向切片中与地址相关的指令数;MF为计算出的错误屏蔽因子。
Finherent为表征指令自身性质的指令固有特征向量;IC为指令的类型,是一个包含8个字段的特征向量,IC=<Cint,Cfloat,Ccmp,Cbit,Cconv,Cmem,Ccall,Cload>,分别表示是否为整型二元操作、浮点型二元操作、比较指令、逻辑操作、转换操作、地址相关的操作、函数调用指令、内存读指令,若是则将相应字段标记为1,否则标记为0;Insttime为动态指令执行时间与程序总时间占比;BBL为指令所在基本块的大小;INloop表示指令是否在循环中;RINbb表示到基本块结束还需执行的指令数;DCratio表示指令与函数执行时间的比值;Callnum表示指令所在函数被调用的次数;RINfun表示到函数返回还需执行的指令数;Varglobal表示指令中变量是否会影响全局变量,若是则标记为1,否则标记为0;Fanout表示指令目的操作数的扇出值。
步骤3、根据步骤1得到的指令脆弱性值和步骤2得到的指令特征向量,训练基于支持向量回归的指令SDC脆弱性分析模型:
给定指令样本数据的训练集T={(Fi,pi)},i=1,2,...,l,l为训练集中样本的数量,其中Fi=<Fi.inherent,Fi.dependent>为训练集中的第i个样本的特征向量;pi表示第i个指令样本的SDC脆弱性。根据支持向量回归机结构化风险最小化原则,建立指令脆弱性分析模型,并进行求解,可得到相应的指令SDC脆弱性预测分析函数为:
Figure BDA0001571034670000071
其中,F表示待分析目标指令的特征向量;α和
Figure BDA0001571034670000081
为求解得到的Lagrange乘子;K(Fi,F)表示根据SVR理论引入的核函数;b为求解得到的偏置项。
步骤4、使用步骤2的方法提取qsort(快速排序)、dijkstra(最短路径算法)、susan(图像识别)三个目标程序的待分析目标指令特征向量,根据步骤3中训练得到的指令SDC脆弱性分析模型对指令脆弱性进行预测分析;
步骤5、根据步骤4预测分析得到的指令脆弱性值,对目标程序进行指令冗余。所述的指令冗余的方法具体包含三个步骤:
步骤5.1、根据步骤4预测分析得到指令脆弱性值,在程序中按照如下公式选择待冗余的指令集合:
Figure BDA0001571034670000082
其中,Isort表示对指令脆弱性按递减顺序进行排序后的指令集合;
Figure BDA0001571034670000083
为指令
Figure BDA0001571034670000084
的SDC脆弱性值,
Figure BDA0001571034670000085
为指令
Figure BDA0001571034670000086
的动态指令数;Iselected表示从排序后指令Isort中选出的前S条指令集合;Z表示对指令的冗余粒度,即对目标程序进行冗余处理的指令比例,取Z的值为分别为0.1、0.2、0.3;D是程序中静态指令的总数目。
步骤5.2、对步骤5.1中的指令集合Iselected进行冗余处理得到集合
Figure BDA00015710346700000810
遍历Idup中所有指令,若指令
Figure BDA0001571034670000087
数据依赖于
Figure BDA0001571034670000088
且i>j,则他们存在定义引用关系;若Idup指令集合中的指令
Figure BDA0001571034670000089
不能和其他的冗余指令构成定义引用关系,则在步骤5.3中为该冗余指令添加单独的比较指令。
步骤5.3、在基本块的最后插入比较指令,比较原始指令的执行结果和插入的冗余指令的执行结果,若结果不一致,则表明出现了瞬时故障,需要采取措施进行恢复;若结果一致,则表明该段基本块代码的执行没有出现错误。
步骤6、对步骤5得到的冗余处理后的目标程序进行故障注入实验,程序在运行时对瞬时故障导致的SDC错误进行检测。
步骤7、对步骤5得到的冗余处理后的目标程序的SDC错误检测能力进行评估。所述的SDC错误检测能力通过下式进行评估:
Figure BDA0001571034670000091
其中,SDCcoverage表示SDC错误检出率;NSDC表示原目标程序注入故障后发生SDC错误的次数;NDUP表示经过冗余处理后的目标程序注入故障后检测到SDC错误的次数。
图3给出了SDC错误检测率的比较图。其中,ML-SED-10、ML-SED-20、ML-SED-30分别对应本发明的方法中Z取0.1、0.2、0.3时对目标程序进行不同粒度的指令冗余处理。Hotpath是对程序中执行频繁的路径进行冗余。图4给出了性能开销比较图。
由图3和图4可知,本发明的方法可以以较低的时间开销获取较高的SDC错误检出率。

Claims (4)

1.一种基于指令脆弱性分析的SDC错误检测方法,其特征在于,包括如下步骤:
步骤1,对程序集进行故障注入实验,得到指令的SDC脆弱性值,从而构建指令SDC脆弱性分析模型样本数据集;
步骤2,根据步骤1得到的程序指令样本的SDC脆弱性值,提取指令SDC脆弱性描述特征向量F,具体为:
Figure FDA0002890072080000011
其中,Fdependent为数据传播依赖相关的指令依赖特征向量;END是一个包含五个字段的特征向量,END=<Estore,Ecaller,Eicmp,Efcmp,Eaddress>,分别表示是否被存储指令、函数调用指令、整型比较指令、浮点型比较指令、地址相关指令引用,若是则将相应位标记为1,否则标记为0;CMP是一个包含两个字段的特征向量,用来表征末端指令为比较指令时相关的指令特征,CMP=<Loopdepth,Pbranch>,Loopdepth为比较指令所在的循环深度,Pbranch为静态分支概率;Crash是一个包含两个字段的特征向量,用来表征与程序崩溃相关的特征;Crash=<Bytedest,Addrnum>,Bytedest为目的操作位数,Addrnum为前向切片中与地址相关的指令数;MF为计算出的错误屏蔽因子;Finherent为表征指令自身性质的指令固有特征向量;IC为指令的类型,是一个包含8个字段的特征向量,IC=<Cint,Cfloat,Ccmp,Cbit,Cconv,Cmem,Ccall,Cload>,分别表示是否为整型二元操作、浮点型二元操作、比较指令、逻辑操作、转换操作、地址相关的操作、函数调用指令、内存读指令,若是则将相应字段标记为1,否则标记为0;Insttime为动态指令执行时间与程序总时间占比;BBL为指令所在基本块的大小;INloop表示指令是否在循环中;RINbb表示到基本块结束还需执行的指令数;DCratio表示指令与函数执行时间的比值;Callnum表示指令所在函数被调用的次数;RINfun表示到函数返回还需执行的指令数;Varglobal表示指令中变量是否会影响全局变量,若是则标记为1,否则标记为0;Fanout表示指令目的操作数的扇出值;
步骤3,根据步骤1得到的指令脆弱性值和步骤2得到的指令特征向量,训练基于支持向量回归的指令SDC脆弱性分析模型;
步骤4,使用步骤2的方法提取目标程序的指令特征向量,根据步骤3中训练得到的指令SDC脆弱性分析模型对目标程序指令脆弱性值进行预测分析;
步骤5,根据步骤4预测分析得到的指令脆弱性值,对目标程序进行指令冗余处理,具体包括以下步骤:
步骤5.1:根据步骤4的指令SDC脆弱性预测分析函数分析得到指令脆弱性值,在程序中采用下式选择待冗余的指令集合:
Figure FDA0002890072080000021
其中,Isort表示对指令脆弱性按递减顺序进行排序后的指令集合;
Figure FDA0002890072080000022
为指令
Figure FDA0002890072080000023
的SDC脆弱性值,
Figure FDA0002890072080000024
为指令
Figure FDA0002890072080000025
的动态指令数;Iselected表示从排序后指令Isort中选出的前S条指令集合;Z表示对指令的冗余粒度,即对目标程序进行冗余处理的指令比例;D是程序中静态指令的总数目;
步骤5.2:对步骤5.1中的指令集合Iselected进行冗余处理得到集合
Figure FDA0002890072080000026
遍历Idup中所有指令,若指令
Figure FDA0002890072080000027
数据依赖于
Figure FDA0002890072080000028
且i>j,则他们存在定义引用关系;若Idup指令集合中的指令
Figure FDA0002890072080000029
不能和其他的冗余指令构成定义引用关系,则在步骤5.3中为该冗余指令添加单独的比较指令;
步骤5.3:在基本块的最后插入比较指令,比较原始指令的执行结果和插入的冗余指令的执行结果,若结果不一致,则表明出现了瞬时故障,需要采取措施进行恢复;若结果一致,则表明该段基本块代码的执行没有出现错误;
步骤6,对步骤5得到的冗余处理后的目标程序进行故障注入实验,程序在运行时对SDC错误进行检测;
步骤7,对步骤5得到的冗余处理后的目标程序的SDC错误检测能力进行评估。
2.根据权利要求1所述的基于指令脆弱性分析的SDC错误检测方法,其特征在于,步骤1中所述的指令SDC脆弱性值采用下式计算:
Figure FDA0002890072080000031
其中,集合Vstatic是程序的静态指令集合,Ii表示程序中的第i条静态指令,N为程序中所有静态指令的数目;集合Vdynamic是程序运行时的动态指令集合,di为指令Ii的动态执行次数;集合Idynamic(i)代表程序运行时静态指令Ii对应的所有动态执行指令,是Vdynamic的子集,
Figure FDA0002890072080000032
为指令Ii的第q条动态指令;PSDC(Ii)为指令Ii的SDC脆弱性值,
Figure FDA0002890072080000033
为动态指令
Figure FDA0002890072080000034
的SDC脆弱性值,通过故障注入实验结果计算得到。
3.根据权利要求1所述的基于指令脆弱性分析的SDC错误检测方法,其特征在于,步骤3中训练基于支持向量回归的指令SDC脆弱性分析模型时,给定指令样本数据的训练集T={(Fi,pi)},i=1,2,...,l,l为训练集中样本的数量,其中Fi=<Fi.inherent,Fi.dependent>为训练集中的第i个样本的特征向量;pi表示第i个指令样本的SDC脆弱性;根据支持向量回归机结构化风险最小化原则,建立指令脆弱性分析模型,并进行求解,可得到相应的指令SDC脆弱性预测分析函数为:
Figure FDA0002890072080000035
其中,F表示待分析目标指令的特征向量;α和
Figure FDA0002890072080000036
为求解得到的Lagrange乘子;K(Fi,F)表示根据SVR理论引入的核函数;b为求解得到的偏置项。
4.根据权利要求1所述的基于指令脆弱性分析的SDC错误检测方法,其特征在于,步骤7中所述的SDC错误检测能力通过下式进行评估:
Figure FDA0002890072080000037
其中,SDCcoverage表示SDC错误检出率;NSDC表示原目标程序注入故障后发生SDC错误的次数;NDUP表示经过冗余处理后的目标程序注入故障后检测到SDC错误的次数。
CN201810117528.5A 2018-02-06 2018-02-06 一种基于指令脆弱性分析的sdc错误检测方法 Active CN108491317B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810117528.5A CN108491317B (zh) 2018-02-06 2018-02-06 一种基于指令脆弱性分析的sdc错误检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810117528.5A CN108491317B (zh) 2018-02-06 2018-02-06 一种基于指令脆弱性分析的sdc错误检测方法

Publications (2)

Publication Number Publication Date
CN108491317A CN108491317A (zh) 2018-09-04
CN108491317B true CN108491317B (zh) 2021-04-16

Family

ID=63344453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810117528.5A Active CN108491317B (zh) 2018-02-06 2018-02-06 一种基于指令脆弱性分析的sdc错误检测方法

Country Status (1)

Country Link
CN (1) CN108491317B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110674028A (zh) * 2019-08-20 2020-01-10 华为技术有限公司 故障注入方法及其装置、业务服务系统
CN111159011B (zh) * 2019-12-09 2022-05-20 南京航空航天大学 基于深度随机森林的指令脆弱性预测方法及系统
CN111274058B (zh) * 2020-01-20 2024-04-02 东南大学 一种轻量级冗余断言筛选方法
CN112765609B (zh) * 2020-12-31 2022-06-07 南京航空航天大学 一种基于单类支持向量机的多位sdc脆弱指令识别方法
CN113032232B (zh) * 2021-03-09 2023-06-20 广州虎牙科技有限公司 设备的性能检测的相关方法以及相关装置、设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1607493A (zh) * 2003-09-24 2005-04-20 王子尧 汉字单元全音取码输入法
WO2007117444A2 (en) * 2006-03-31 2007-10-18 Yinghe Hu Protein detection by aptamers
CN102063406A (zh) * 2010-12-21 2011-05-18 清华大学 用于多核处理器的网络共享Cache及其目录控制方法
CN103984632A (zh) * 2014-05-29 2014-08-13 东南大学 一种基于错误传播分析的sdc脆弱指令识别方法
CN104008428A (zh) * 2014-05-19 2014-08-27 上海交通大学 产品服务需求预测和资源优选配置方法
CN105279345A (zh) * 2015-11-19 2016-01-27 中国空间技术研究院 一种航天器用数字软ip核评测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9716884B2 (en) * 2014-03-20 2017-07-25 Hfi Innovation Inc. Method of signaling for mode selection in 3D and multi-view video coding

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1607493A (zh) * 2003-09-24 2005-04-20 王子尧 汉字单元全音取码输入法
WO2007117444A2 (en) * 2006-03-31 2007-10-18 Yinghe Hu Protein detection by aptamers
CN102063406A (zh) * 2010-12-21 2011-05-18 清华大学 用于多核处理器的网络共享Cache及其目录控制方法
CN104008428A (zh) * 2014-05-19 2014-08-27 上海交通大学 产品服务需求预测和资源优选配置方法
CN103984632A (zh) * 2014-05-29 2014-08-13 东南大学 一种基于错误传播分析的sdc脆弱指令识别方法
CN105279345A (zh) * 2015-11-19 2016-01-27 中国空间技术研究院 一种航天器用数字软ip核评测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Future water availability in the largest freshwater Mediterranean lake is at great risk as evidenced from simulations with the SWAT model;Bucak等;《Science of the Total Environment》;20171231;第581卷;第413-425页 *
基于错误传播分析的SDC脆弱指令识别方法;马骏驰 等;《计算机研究与发展》;20160930(第9期);第1943-1952页 *
自适应离散差分进化算法策略的选择;庄毅 等;《软件学报》;20140531(第5期);第984-996页 *

Also Published As

Publication number Publication date
CN108491317A (zh) 2018-09-04

Similar Documents

Publication Publication Date Title
CN108491317B (zh) 一种基于指令脆弱性分析的sdc错误检测方法
US7747932B2 (en) Reducing the uncorrectable error rate in a lockstepped dual-modular redundancy system
US7137028B2 (en) Method and apparatus for improving reliability in microprocessors
Chen et al. Fault tolerant one-sided matrix decompositions on heterogeneous systems with gpus
Sullivan et al. Swapcodes: Error codes for hardware-software cooperative gpu pipeline error detection
CN108334903B (zh) 一种基于支持向量回归的指令sdc脆弱性预测方法
Liu et al. Identifying SDC-causing Instructions based on Random forests algorithm
Fang et al. Sdc is in the eye of the beholder: A survey and preliminary study
Dimitrov et al. Unified architectural support for soft-error protection or software bug detection
Wang et al. On probability of detection lossless concurrent error detection based on implications
CN103984632A (zh) 一种基于错误传播分析的sdc脆弱指令识别方法
Nikseresht et al. A selective soft error protection method for cots processor-based systems
CN112765609B (zh) 一种基于单类支持向量机的多位sdc脆弱指令识别方法
Sadi et al. An efficient approach towards mitigating soft errors risks
CN116578978A (zh) 针对ip软核的多维分层式硬件木马评估方法
CN111274058A (zh) 一种轻量级冗余断言筛选方法
Nezzari et al. Modelling processor reliability using LLVM compiler fault injection
Almukhaizim et al. Cost-effective graceful degradation in speculative processor subsystems: The branch prediction case
Ferreira et al. Compiler optimizations impact the reliability of the control-flow of radiation-hardened software
Aidemark et al. Path-based error coverage prediction
Nazarian et al. Bit-flip aware control-flow error detection
US8539403B2 (en) Reducing observability of memory elements in circuits
Utrera et al. Analysis of the impact factors on data error propagation in HPC applications
Naveed et al. Aster: Multi-Bit Soft Error Recovery Using Idempotent Processing
CN114510427B (zh) 一种基于simd向量化的数据流软错误检测方法

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