CN112765609B - 一种基于单类支持向量机的多位sdc脆弱指令识别方法 - Google Patents
一种基于单类支持向量机的多位sdc脆弱指令识别方法 Download PDFInfo
- Publication number
- CN112765609B CN112765609B CN202011634260.6A CN202011634260A CN112765609B CN 112765609 B CN112765609 B CN 112765609B CN 202011634260 A CN202011634260 A CN 202011634260A CN 112765609 B CN112765609 B CN 112765609B
- Authority
- CN
- China
- Prior art keywords
- instruction
- bit
- data
- sdc
- program
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000012706 support-vector machine Methods 0.000 title claims abstract description 18
- 230000000873 masking effect Effects 0.000 claims abstract description 26
- 239000013598 vector Substances 0.000 claims abstract description 25
- 238000012549 training Methods 0.000 claims abstract description 22
- 238000002347 injection Methods 0.000 claims description 7
- 239000007924 injection Substances 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000002474 experimental method Methods 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 claims description 2
- 238000005457 optimization Methods 0.000 claims description 2
- 230000001902 propagating effect Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 4
- 238000004364 calculation method Methods 0.000 description 16
- 238000001514 detection method Methods 0.000 description 10
- 239000002245 particle Substances 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000005855 radiation Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 240000007594 Oryza sativa Species 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
Images
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于单类支持向量机的多位SDC脆弱指令识别方法,包括:构建多位SDC脆弱指令识别模型训练样本数据集;构建表征数据在程序中传播的指令数据传播特征;计算目标指令的多位屏蔽概率;生成基于数据变量的与程序数据流相关的指令集合,并构建指令的屏蔽特征;构建传播性特征向量;构建固有性特征向量;基于单类支持向量机训练多位SDC脆弱指令识别模型;提取目标程序的指令特征,利用多位SDC脆弱指令识别模型对目标程序多位SDC脆弱指令进行识别。本发明方法分类准确率高,召回率高,f‑score也较高,可以有效应用于单粒子效应造成的嵌入式系统中数据单位或多位翻转后导致的程序中多位SDC脆弱指令的识别。
Description
技术领域
本发明属于软加固和可信软件领域,特别是一种基于单类支持向量机的多位SDC脆弱指令识别方法。
背景技术
随着半导体制造技术的不断发展,处理器不断缩减集成电路的尺寸、降低工作的电压。然而,由于器件敏感度的提高,在计算机性能大幅度提升的同时使得芯片更容易受到空间辐射的影响。在恶劣辐射环境中,由高能粒子辐照或电磁干扰等造成的单粒子效应是计算机系统失效的主要原因之一。单粒子翻转(Single Event Upset,SEU)是单粒子效应最主要的表现形式。SEU是指高能粒子轰击器件使其逻辑状态发生翻转,使得存储值的某一位由1变为0或由0变为1,可以通过重新写入逻辑值恢复其状态。这种由单粒子翻转造成的系统硬件故障是一种软错误。
在计算机运行过程中,因为信号或者数据不正确造成的故障被称为软错误。导致软错误的原因有多种,从电路设计出现问题到元器件之间相互干扰均有可能发生软错误。但相比单粒子翻转所引起的软错误造成的事故,在航天等领域其他原因造成事故的占比要小很多。软错误会改变寄存器或存储器中的数值,从而导致处理器将程序带入错误循环或者直接进入死循环无法跳出。软错误还可以修改某些计算数值,造成数据结果的错误。由于软错误发生时缺乏足够“明显”的信息,因此使用者往往在错误发生了很久之后才能察觉,甚至始终没有意识到发生过软错误。尤其是静默数据损坏(Silent Data Corruption,SDC)这类错误难以检测,具体表现为程序似乎正常执行,但是最终数据结果或者中间过程的数据出现了错误。
针对瞬时故障导致的程序SDC错误,传统的冗余检测与加固技术存在着高成本问题。但由于该类方法实施简单,运行稳定,且具有较高的检测率,因此有不少改进的研究工作。如美国普林斯顿大学的Reis提出了一种可以检测软错误的SWIFT(SoftwareImplemented Fault Tolerance)技术。SWIFT首先通过回收程序在执行期间未使用的指令级资源来对程序进行冗余,在程序运行的同时执行冗余计算副本,然后通过检查点比较原始程序的运算结果和冗余副本的计算结果来检测SDC错误。但是,这种方法设置的冗余副本需要复制大量的指令,在程序执行时也需要额外执行副本,产生了巨大的性能开销。
断言检测技术则是通过在程序中插入断言来检测数据流错误。断言的内容是在正常情况下程序运行时的数值特征,如数值区间、数值间的关系等。Hari等人针对SDC错误提出了一种程序级的SDC检测器,这种检测器就是通过在程序中植入断言的方法来检测数据流错误,有效降低了空间成本和性能开销。但是由于程序断言的提取主要靠人工分析,存在较大的随机性,所以这种方法灵活性和普适性较差。而且如果断言设置的不好,检测率就会下降。
为了规避传统的断言检测技术与冗余检测技术的缺点,学界提出了一种将二者混合的冗余断言检测技术。这类技术仅对程序中对SDC较为敏感的部分进行冗余处理,再通过插桩断言来对错误进行检测。如Hari等人就提出了Relyzer方法以检测SDC错误,将程序对SDC错误的敏感程度称为SDC脆弱性。该方法通过故障注入寻找程序中SDC 脆弱性高的位置,并针对这些位置进行冗余处理。既节省了一部分成本,又提高了方法的灵活性与普适性。因此,冗余断言检测技术已成为SDC错误检测的研究热点。但目前主流的冗余断言检测技术大多考虑的是单粒子单位翻转,未考虑到多位翻转问题。如 Liu等人于2019年提出的SDCPredictor方法和wang等人提出的PVInsiden方法等都是只考虑单粒子单位翻转的方法。无论在理论还是实现技术层面,研究单粒子多位翻转问题要比只考虑单粒子单位翻转问题更具有挑战性。首先单粒子多位翻转现象比单粒子单位翻转现象更为随机,其发生形式相比单位翻转更加多样化。其次,对于多位翻转造成的软错误在程序中传播的研究也更具难度。
发明内容
本发明的目的在于提供一种基于单类支持向量机的多位SDC脆弱指令识别方法,能有效地对辐射环境下受到单粒子翻转影响的程序进行多位SDC脆弱指令识别。
实现本发明目的的技术解决方案为:一种基于单类支持向量机的多位SDC脆弱指令识别方法,所述方法包括以下步骤:
步骤1,对程序集进行故障注入实验,分析得到指令的多位SDC脆弱性值PecSDC,根据脆弱性值对指令进行分类,构建多位SDC脆弱指令识别模型训练样本数据集;
步骤2,根据步骤1得到的程序指令样本,遍历样本数据集构建表征数据在程序中传播的指令数据传播特征Fdata,FOP,FCMP;
步骤3,遍历样本数据集,计算目标指令的多位屏蔽概率Pmask;
步骤4,遍历样本数据集,生成基于数据变量的与程序数据流相关的指令集合Sdf,结合步骤3中的多位屏蔽概率计算屏蔽概率特征fm,并构建指令的屏蔽特征Fmask;
步骤5,根据步骤1、步骤2、步骤4得到的程序指令样本的多位SDC脆弱性值、数据传播特征和屏蔽特征,遍历样本数据集构建与错误传播相关的指令的传播性特征向量Fspread;
步骤6,遍历样本数据集,构建与指令本身性质相关的指令的固有性特征向量Finherence;
步骤7,根据步骤1得到的指令多位SDC脆弱性值和步骤5以及步骤6得到的指令特征向量,基于单类支持向量机训练多位SDC脆弱指令识别模型;
步骤8,使用步骤5和步骤6的方法提取目标程序的指令特征,根据步骤7中训练得到的多位SDC脆弱指令识别模型对目标程序多位SDC脆弱指令进行识别。
本发明与现有技术相比,其显著优点为:1)使用程序分析的方法分析目标程序,从指令传播性特征和指令固有性特征两方面更全面的获得影响指令多位SDC脆弱性的特征,从而提高识别多位SDC脆弱指令SDC脆弱性预测的准确性;2)使用单类支持向量机模型训练多位SDC脆弱指令识别模型,使得模型具有较好的泛化能力。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为本发明的一种基于单类支持向量机的多位SDC脆弱指令识别方法的流程图。
图2为多位SDC脆弱指令识别准确率比较图。
图3为多位SDC脆弱指令识别召回率比较图。
图4为多位SDC脆弱指令识别f-score比较图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,结合图1,提供了一种基于单类支持向量机的多位SDC脆弱指令识别方法,该方法包括以下步骤:
步骤1、对程序集进行故障注入实验,析得到指令的多位SDC脆弱性值PecSDC,根据脆弱性值对指令进行分类,构建多位SDC脆弱指令识别模型训练样本数据集。所述的指令的多位SDC脆弱性值采用如下公式:
式中,集合Isset是程序的静态指令集合,Ii表示程序中的第i条静态指令,size()表示括号内集合的元素个数,size(Isset)表示程序内静态指令数目;集合Idset是程序运行时的动态指令集合,ni为指令Ii的总动态执行次数;是指令Ii的第k条动态执行指令; PecSDC(Ii)为指令Ii的多位SDC脆弱性值;单粒子翻转现象引起单位数据流错误翻转的概率,记为PSBU;单粒子翻转现象引起横向二位数据流错误翻转的概率,记为PH2BU;单粒子翻转现象引起竖向二位数据流错误翻转的概率,记为PV2BU;单粒子翻转现象引起交叉二位数据流错误翻转的概率,记为PC2BU;单粒子翻转现象引起横向三位数据流错误翻转的概率,记为PH3BU;单粒子翻转现象引起竖向三位数据流错误翻转的概率,记为PV3BU;单粒子翻转现象引起L型三位数据流错误翻转的概率,记为PL3BU;设R代表向指令中注入故障的总次数,则代表向动态指令注入单粒子单位翻转故障的总次数,依此类推,分别代表向动态指令注入横向二位翻转故障、竖向二位翻转故障、交叉二位翻转故障、横向三位翻转故障、竖向三位翻转故障、L型三位翻转故障的总次数;T代表向指令中注入故障后造成SDC错误的次数,同理, 分别代表对应类型的故障注入后造成SDC错误的次数。
步骤2、根据步骤1得到的程序指令样本,遍历样本数据集构建表征数据在程序中传播的指令数据传播特征Fdata,FOP,FCMP,分别为下列向量:
(1)Fdata为数据变量中和SDC错误传播有关的特征,可表示为四元组:
Fdata=<life(num),width(num),is_int,is_float>
式中,life(num)为变量生命周期,width(num)为数据变量的二进制位数,is_int表示判断当前数据变量类型是否为整型,is_float为判断数据变量是否为浮点类型。
(2)FOP为指令运算操作相关的特征,可表示为二元组:
FOP=<is_and_op,is_or_op>
其中,is_and_op代表对运算类型的判断,确认其是否是与运算,若是则相应字段标记为1,否则标记为0。is_or_op会判断运算指令是否为或运算,同样用0和1进行区分。
(3)FCMP为指令比较运算相关特征,可表示为三元组:
FCMP=<is_cmp,is_icmp,is_fcmp>
其中,is_cmp代表对指令类型的判断,确认其是否是比较指令,若是则相应字段标记为1,否则标记为0。is_icmp会判断比较指令中的两个操作数是否均为整型,同样用 0和1进行区分。is_fcmp会判断比较指令中的操作数是否含有浮点型,也使用0和1 区分。
步骤3、遍历样本数据集,计算目标指令的多位屏蔽概率Pmask。设函数f(x)表示二进制数x的总位数,例如若x为32位数,则f(x)=32。设和分别代表二进制数x中 1和0的位数,两函数具体的计算方法如下:
设Z为二进制数中连续相同数位数的集合。代表x中连续2位以上均为0的位数集合,集合内元素从右至左统计。代表x中连续3位以上均为0的位数集合,代表x中连续2位以上均为1的位数集合,代表x中连续3位以上均为1的位数集合。若设x为32位二进制数,如00100111011110001000111111110111,则
首先讨论逻辑运算相关指令中屏蔽概率Pmask的计算。与运算和或运算是较为常见的逻辑运算,指令中包含的ANDx,y(或者ORx,y)是指数据x按位与(或者按位或)y的逻辑计算。设x为受到单粒子翻转影响的数据,则在与运算中y对应的位为0时,就可以对x中受到的错误进行屏蔽;而或运算则是y对应的位为1时,就可以屏蔽错误。要计算此时指令的Pmask,需要对AND和OR运算的双方数据进行分析,同时也要考虑到多位翻转的情况,下面分情况进行讨论:
(1)按位与运算
为单粒子翻转现象错误翻转了1位数据时的屏蔽概率,为了计算该值,需要考虑二进制数x与y所有的位数中,翻转后错误会被屏蔽的位数。与运算中,操作数的0 位会屏蔽另一操作数对应位的翻转错误。故只需统计操作数中0位的数量占总位数的比率,就可算出1位屏蔽概率,计算方法如下式所示:
其中代表数x中0位的个数,代表数y中0位的个数,f(x)代表数x的总位数,f(y)代表数y的总位数,在与运算中只统计操作数中0位便可计算屏蔽概率,故只用了0位相关函数。与运算中的2位屏蔽概率与3位屏蔽概率计算参数的计算方法类似,只需统计操作数中连续两位均为0位的个数和连续三位均为0位的个数即可,计算方法如下式所示:
其中,和分别代表x中连续2位和连续3位为0的位数集合,和分别代表y中连续2位和连续3位为0的位数集合,l代表集合中第l项元素,size()表示括号内集合的元素个数。通过可以计算屏蔽概率Pmask,计算方法如下所示:
PSBU为单粒子翻转现象引起单位数据流错误翻转的概率,PH2BU为横向二位数据流错误翻转的概率,PV2BU为竖向二位数据流错误翻转的概率,PC2BU为交叉二位数据流错误翻转的概率,PH3BU为横向三位数据流错误翻转的概率,PV3BU为竖向三位数据流错误翻转的概率,PL3BU为引起L型三位数据流错误翻转的概率。
(2)按位或运算
指令中x与y进行按位或运算,设单粒子翻转现象发生在x或者发生在y上的概率是随机且均匀的。或运算中,操作数的1位会屏蔽另一操作数对应位的翻转错误。故只需统计操作数中1位的数量占总位数的比率,就可算出1位屏蔽概率,计算方法如下式所示:
其中代表数x中1位的个数,代表数y中1位的个数,f(x)代表数x的总位数,f(y)代表数y的总位数。或运算中的2位屏蔽概率与3位屏蔽概率计算参数的计算方法类似,只需统计操作数中连续两位均为1位的个数和连续三位均为1 位的个数即可,计算方法如下式所示:
其中,和分别代表x中连续2位和连续3位为1的位数集合,和分别代表y中连续2位和连续3位为1的位数集合,l代表集合中第l项元素,size()表示括号内集合的元素个数。通过可以计算屏蔽概率Pmask,计算方法如下式如下所示:
(3)比较运算
在程序中比较指令之后通常是跳转指令,根据比较的结果跳转指令会选择一个分支。若单粒子翻转引起的数据错误未改变跳转指令的跳转分支,则此错误就会被屏蔽。继续使用x,y作为示例对屏蔽概率Pmask进行分析。若比较指令中x>y程序跳转至正确目标指令,即按正常执行时,x要比y大。设单粒子翻转会随机发生在数据x和y上,且分布均匀。此时可分为下列几种情况进行讨论。
与不相等说明x与y的最高1位并不在同一位上,则是指x去掉最高位仍然要比y大。此时翻转x中的任意一位,x仍比y大,错误会被屏蔽。若翻转y中末位至x最高1位对应位,错误也会被屏蔽,故此时的单位屏蔽概率的计算方法如下所示:
与相等说明x与y的最高1位相同,此时问题的关键点并不在此处,而在于x与y不同的最高位此时需要使用一辅助分类的二进制数u进行分析。u为一种满足特定数值的二进制数,其前位均为0,后位均为1。即此时单位屏蔽概率的计算可使用u进行分类讨论。
3.1)(x&u)>(y&u)
x中0位翻转成1位会使x增大,y中的1位变为0位会使得y变小,二者均不会导致结果发生改变,错误会被屏蔽。x从末位至位中的1位翻转尽管会使x减小,但仍保证x比y大。y从末位至位中的0位翻转会使y增大,但仍比x小。故屏蔽概率计算方法如下式所示:
3.2)(x&u)≤(y&u)
上述结果只给出了单位屏蔽概率多位屏蔽概率由于情况复杂,难以使用计算公式算出,故本文使用枚举法进行计算。对于二进制数x与y,遍历翻转x中所有的连续两数据位,再比较x与y。若x>y,则此时未发生屏蔽。若x≤y,证明此时发生屏蔽。记为枚举翻转x的过程中发生屏蔽的次数。同理可进行三位连续翻转,并记为枚举翻转x的过程中发生屏蔽的次数。则比较指令的2位屏蔽概率和3位屏蔽概率的计算方法如下式所示:
式中,分别代表指令的1位屏蔽概率、2位屏蔽概率和3位屏蔽概率;PSBU为单粒子翻转现象引起单位数据流错误翻转的概率,PH2BU为横向二位数据流错误翻转的概率,PV2BU为竖向二位数据流错误翻转的概率,PC2BU为交叉二位数据流错误翻转的概率,PH3BU为横向三位数据流错误翻转的概率,PV3BU为竖向三位数据流错误翻转的概率,PL3BU为引起L型三位数据流错误翻转的概率。
步骤4、遍历样本数据集,生成基于数据变量的与程序数据流相关的指令集合Sdf,结合步骤3中的屏蔽概率计算屏蔽概率特征fm,最后提取指令的屏蔽特征Fmask。基于数据变量的与程序数据流相关的指令集合Sdf和屏蔽概率特征fm可分别由下式表示和计算:
Sdf(x)={Iin,...,Ii,...,Iend}
式中,Sdf为基于数据变量的与程序数据流相关的指令集合,fm(Ii,x)是指令Ii关于数据变量x的屏蔽概率特征。其中,x为程序中的数据变量,Iin一般为数据输入指令,指程序中调用该数据的第一条指令。Iend为数据末端指令,是程序最后包含该数据的指令。 Ii为程序中包含该数据的第i条指令,由于Sdf(x)为有序集合,故i也代表指令在程序中的位置。Pmask(Ij)为指令Ij的屏蔽概率,j代表程序中的第j条指令,范围在i至end之间。
结合步骤3中计算的屏蔽概率Pmask和上述屏蔽概率特征fm(Ii,x),步骤4所构建的屏蔽特征Fmask为下列二元组:
Fmask=<Pmask,fm(Ii,x)>
步骤5、根据步骤1得到的程序指令样本的多位SDC脆弱性值,步骤2中的数据传播特征,以步骤4中的屏蔽特征,遍历样本数据集提取与错误传播相关的指令的传播性特征向量Fspread,表示为下列四元组:
Fspread=<Fdata,FOP,FCMP,Fmask>
其中,Fdata为步骤2提取出的数据变量相关特征,FOP为步骤2提取的指令逻辑运算相关的特征,FCMP为步骤2提取的指令比较运算相关的特征,Fmask为步骤4提取的屏蔽特征。
步骤6、遍历样本数据集,提取与指令本身性质相关的指令的固有性特征向量Finherence,表示为下列五元组:
Finherence=<texecution,Fconnect,Fstructure,Farithmetic,FMemReg>
其中,texecution为执行时间相关特征,代表程序运行一次时指令的动态执行次数。连接指令相关特征Fconnect=<is_global,is_func,is_stack>,内部元素分别代表指令中是否含有全局变量、是否包含函数调用、是否包含堆栈分配。程序结构相关的特征 Fstructure=<bbsize,bbsucc,dloop>,内部元素分别代表指令所在基本块的大小,所在基本块后继基本块的数量,嵌套指令的最大循环深度。算术运算指令相关的特征 Farithmetic=<opadd,opsub,opmul,opdiv>,内部元素分别代表指令中是否包含加法运算、是否含有减法运算、是否含有乘法运算、是否含有除法运算。与存储器和寄存器读写相关的指令特征FMemReg=<rMem,wMem,rReg,wReg>,内部元素分别代表指令中是否包含从存储器读取数据的操作、是否包含从存储器写入数据的操作、是否包含从寄存器读取数据的操作、是否包含从寄存器写入数据的操作。
步骤7、根据步骤1得到的指令多位SDC脆弱性值和步骤5以及步骤6得到的指令特征向量,基于单类支持向量机训练多位SDC脆弱指令识别模型:
给定指令样本数据的训练集T={(Fg,Lg)}g=1,2,...,m,m为训练指令样本的数量,其中Fg=<Fg.spread,Fg.inherence>为训练集中的第g个样本的特征向量;Lg表示第g个指令样本的标签值,代表了该条数据所对应指令的类型。
设指令多位SDC脆弱性阈值为S,若多位SDC脆弱性超过了阈值,则将该样本所对应的指令判别为多位SDC脆弱指令,同时将该指令的标签变为+1;反之,则判别为普通指令,标签值变为-1。
根据单类支持向量机结构化风险最小化原则,建立求解的最优化问题,并进行推导,可得到多位SDC脆弱性指令识别函数为:
其中,F=<F,F>表示待识别目标指令的特征向量;Fg为训练集中的第g个样本的特征向量;αg为求解得到的Lagrange乘子;k(Fg,F)表示根据单类支持向量机理论引入的核函数;ρ为求解得到的偏移项。
步骤8,使用步骤5和步骤6的方法提取目标程序的指令特征,根据步骤7中训练得到的多位SDC脆弱指令识别模型对目标程序多位SDC脆弱指令进行识别。
图2、图3和图4给出了本发明方法相比其他方法的优势。图中SDCVA-OCSVM是本发明的方法;用于对比的SDCPredictor是由wang于2018年提出的方法,该方法使用随机森林对所有指令的SDC脆弱性进行预测,预测出的SDC脆弱性较高的指令就可被定义为SDC脆弱指令;PVInsiden方法则是于2019年提出,该方法则是使用故障注入实验与机器学习相结合的方法来确定SDC脆弱指令。
由图可知,本发明的方法要优于其它方法,性能更好。该方法分类准确率高,召回率高,f-score也较高,可以有效应用于单粒子效应造成的嵌入式系统中数据单位或多位翻转后导致的程序中多位SDC脆弱指令的识别。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (2)
1.一种基于单类支持向量机的多位SDC脆弱指令识别方法,其特征在于,所述方法包括以下步骤:
步骤1,对程序集进行故障注入实验,分析得到指令的多位SDC脆弱性值PecSDC,根据脆弱性值对指令进行分类,构建多位SDC脆弱指令识别模型训练样本数据集;所述指令的多位SDC脆弱性值采用下式计算:
式中,集合Isset是程序的静态指令集合,Ii表示程序中的第i条静态指令,size()表示括号内集合的元素个数,size(Isset)表示程序内静态指令数目;集合Idset是程序运行时的动态指令集合,ni为指令Ii的总动态执行次数;是指令Ii的第k条动态执行指令;PecSDC(Ii)为指令Ii的多位SDC脆弱性值;单粒子翻转现象引起单位数据流错误翻转的概率,记为PSBU;单粒子翻转现象引起横向二位数据流错误翻转的概率,记为PH2BU;单粒子翻转现象引起竖向二位数据流错误翻转的概率,记为PV2BU;单粒子翻转现象引起交叉二位数据流错误翻转的概率,记为PC2BU;单粒子翻转现象引起横向三位数据流错误翻转的概率,记为PH3BU;单粒子翻转现象引起竖向三位数据流错误翻转的概率,记为PV3BU;单粒子翻转现象引起L型三位数据流错误翻转的概率,记为PL3BU;设R代表向指令中注入故障的总次数,则代表向动态指令注入单粒子单位翻转故障的总次数,依此类推,分别代表向动态指令注入横向二位翻转故障、竖向二位翻转故障、交叉二位翻转故障、横向三位翻转故障、竖向三位翻转故障、L型三位翻转故障的总次数;T代表向指令中注入故障后造成SDC错误的次数,同理, 分别代表对应类型的故障注入后造成SDC错误的次数;
步骤2,根据步骤1得到的程序指令样本,遍历样本数据集构建表征数据在程序中传播的指令数据传播特征Fdata,FOP,FCMP;所构建的数据在程序中传播的指令数据传播特征Fdata,FOP,FCMP分别为下列向量:
(1)Fdata为数据变量中和SDC错误传播有关的特征,表示为四元组:
Fdata=<life(num),width(num),is_int,is_float>
式中,life(num)为数据变量num的生命周期,width(num)为数据变量的二进制位数,is_int表示判断当前数据变量类型是否为整型,is_float表示判断数据变量是否为浮点类型;
(2)FOP为与指令运算操作相关的特征,表示为二元组:
FOP=<is_and_op,is_or_op>
式中,is_and_op表示对运算类型的判断,判断其是否为与运算,is_or_op表示判断运算指令是否为或运算;
(3)FCMP为与指令比较运算相关的特征,表示为三元组:
FCMP=<is_cmp,is_icmp,is_fcmp>
式中,is_cmp表示对指令类型的判断,确认其是否为比较指令;is_icmp表示判断比较指令中的两个操作数是否均为整型,is_fcmp表示判断比较指令中的操作数是否含有浮点型;
步骤3,遍历样本数据集,计算目标指令的多位屏蔽概率Pmask;所述目标指令的多位屏蔽概率Pmask采用下式计算:
式中,分别代表指令的1位屏蔽概率、2位屏蔽概率和3位屏蔽概率;PSBU为单粒子翻转现象引起单位数据流错误翻转的概率,PH2BU为横向二位数据流错误翻转的概率,PV2BU为竖向二位数据流错误翻转的概率,PC2BU为交叉二位数据流错误翻转的概率,PH3BU为横向三位数据流错误翻转的概率,PV3BU为竖向三位数据流错误翻转的概率,PL3BU为引起L型三位数据流错误翻转的概率;
步骤4,遍历样本数据集,生成基于数据变量的与程序数据流相关的指令集合Sdf,结合步骤3中的多位屏蔽概率计算屏蔽概率特征fm,并构建指令的屏蔽特征Fmask;所述的基于数据变量的与程序数据流相关的指令集合Sdf,及屏蔽概率特征fm分别由下式表示和计算:
Sdf(x)={Iin,...,Ii,...,Iend}
式中,Sdf为数据变量与程序数据流相关的指令集合,代表在程序中所有受到数据变量x影响以及影响了数据变量x的指令集合;fm(Ii,x)是指令Ii关于数据变量x的屏蔽概率特征,其中,x为程序中的数据变量,Iin为数据输入指令,指程序中调用该数据的第一条指令,Iend为数据末端指令,是程序最后包含该数据的指令,Ii为程序中包含该数据的第i条指令,由于Sdf(x)为有序集合,故i也代表指令在程序中的位置;Pmask(Ij)为指令Ij的屏蔽概率,j代表程序中的第j条指令,范围在i至end之间;
结合步骤3中计算的屏蔽概率Pmask和上述屏蔽概率特征fm(Ii,x),步骤4所构建的屏蔽特征Fmask为下列二元组:
Fmask=<Pmask,fm(Ii,x)>
步骤5,根据步骤1、步骤2、步骤4得到的程序指令样本的多位SDC脆弱性值、数据传播特征和屏蔽特征,遍历样本数据集构建与错误传播相关的指令的传播性特征向量Fspread;所构建的与错误传播相关的指令的传播性特征Fspread为下列四元组:
Fspread=〈Fdata,FOP,FCMP,Fmask>
其中,Fdata为步骤2提取的数据变量相关特征,FOP为步骤2提取的指令逻辑运算相关的特征,FCMP为步骤2提取的指令比较运算相关的特征,Fmask为步骤4提取的屏蔽特征;
步骤6,遍历样本数据集,构建与指令本身性质相关的指令的固有性特征向量Finherence;所构建的与指令本身性质相关的指令的固有性特征Finherence为下列五元组:
Finherence=〈texecution,Fconnect,Fstructure,Farithmetic,FMemReg>
式中,texecution为执行时间相关特征,代表程序运行一次时指令的动态执行次数;连接指令相关特征Fconnect=〈is_global,is_func,is_stack>,内部元素分别代表指令中是否含有全局变量、是否包含函数调用、是否包含堆栈分配;程序结构相关的特征Fstructure=〈bbsize,bbsucc,dloop>,内部元素分别代表指令所在基本块的大小、所在基本块后继基本块的数量、嵌套指令的最大循环深度;算术运算指令相关的特征Farithmetic=<opadd,opsub,opmul,opdiv>,内部元素分别代表指令中是否包含加法运算、是否含有减法运算、是否含有乘法运算、是否含有除法运算;与存储器和寄存器读写相关的指令特征FMemReg=<rMem,wMem,rReg,wReg>,内部元素分别代表指令中是否包含从存储器读取数据的操作、是否包含从存储器写入数据的操作、是否包含从寄存器读取数据的操作、是否包含从寄存器写入数据的操作;
步骤7,根据步骤1得到的指令多位SDC脆弱性值和步骤5以及步骤6得到的指令特征向量,基于单类支持向量机训练多位SDC脆弱指令识别模型;
步骤8,使用步骤5和步骤6的方法提取目标程序的指令特征,根据步骤7中训练得到的多位SDC脆弱指令识别模型对目标程序多位SDC脆弱指令进行识别。
2.根据权利要求1所述的基于单类支持向量机的多位SDC脆弱指令识别方法,其特征在于,步骤7所述根据步骤1得到的指令多位SDC脆弱性值和步骤5以及步骤6得到的指令特征向量,基于单类支持向量机训练多位SDC脆弱指令识别模型,具体包括:
训练基于支持向量回归的指令SDC脆弱性预测模型时,给定指令样本数据的训练集T={(Fg,Lg)},设g=1,2,...,m,m为训练指令样本的总数量,g为所选样本在总样本中的位置,Fg=<Fg.spread,Fg.inherence>为训练集中的第g个样本的特征向量,Fg.spread、Fg.inherence分别为第g个样本的传播性特征向量、固有性特征向量;Lg表示第g个指令样本的标签值,代表了该条数据所对应指令的类型:
设指令多位SDC脆弱性阈值为S,若多位SDC脆弱性超过了阈值,则将该样本所对应的指令判别为多位SDC脆弱指令,同时将该指令的标签变为+1;反之,则判别为普通指令,标签值变为-1;
根据单类支持向量机结构化风险最小化原则,建立求解的最优化问题,并进行推导,可得到训练后的多位SDC脆弱性指令识别模型为:
式中,F表示待识别目标指令的特征向量,F=<Fspread,Finherence>;Fg为训练集中的第g个样本的特征向量;m为αg为求解得到的Lagrange乘子;k(Fg,F)表示根据单类支持向量机理论引入的核函数;ρ为求解得到的偏移项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011634260.6A CN112765609B (zh) | 2020-12-31 | 2020-12-31 | 一种基于单类支持向量机的多位sdc脆弱指令识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011634260.6A CN112765609B (zh) | 2020-12-31 | 2020-12-31 | 一种基于单类支持向量机的多位sdc脆弱指令识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112765609A CN112765609A (zh) | 2021-05-07 |
CN112765609B true CN112765609B (zh) | 2022-06-07 |
Family
ID=75697985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011634260.6A Active CN112765609B (zh) | 2020-12-31 | 2020-12-31 | 一种基于单类支持向量机的多位sdc脆弱指令识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765609B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113610154B (zh) * | 2021-08-06 | 2023-12-29 | 吉林大学 | 一种gpgpu程序sdc错误检测方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334903A (zh) * | 2018-02-06 | 2018-07-27 | 南京航空航天大学 | 一种基于支持向量回归的指令sdc脆弱性预测方法 |
CN108491317A (zh) * | 2018-02-06 | 2018-09-04 | 南京航空航天大学 | 一种基于指令脆弱性分析的sdc错误检测方法 |
CN109063775A (zh) * | 2018-08-03 | 2018-12-21 | 南京航空航天大学 | 基于长短期记忆网络的指令sdc脆弱性预测方法 |
-
2020
- 2020-12-31 CN CN202011634260.6A patent/CN112765609B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334903A (zh) * | 2018-02-06 | 2018-07-27 | 南京航空航天大学 | 一种基于支持向量回归的指令sdc脆弱性预测方法 |
CN108491317A (zh) * | 2018-02-06 | 2018-09-04 | 南京航空航天大学 | 一种基于指令脆弱性分析的sdc错误检测方法 |
CN109063775A (zh) * | 2018-08-03 | 2018-12-21 | 南京航空航天大学 | 基于长短期记忆网络的指令sdc脆弱性预测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112765609A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mittal | A survey on modeling and improving reliability of DNN algorithms and accelerators | |
Reis et al. | Software-controlled fault tolerance | |
CN108491317B (zh) | 一种基于指令脆弱性分析的sdc错误检测方法 | |
US10296312B2 (en) | Methods, apparatuses, and systems for zero silent data corruption (ZDC) compiler technique | |
Condia et al. | Combining architectural simulation and software fault injection for a fast and accurate CNNs reliability evaluation on GPUs | |
Gu et al. | Vulnerability analysis of instructions for SDC-causing error detection | |
Liu et al. | Identifying SDC-causing Instructions based on Random forests algorithm | |
Guo et al. | Paris: Predicting application resilience using machine learning | |
Sullivan et al. | Swapcodes: Error codes for hardware-software cooperative gpu pipeline error detection | |
CN112765609B (zh) | 一种基于单类支持向量机的多位sdc脆弱指令识别方法 | |
CN108334903B (zh) | 一种基于支持向量回归的指令sdc脆弱性预测方法 | |
Yue et al. | G-SEPM: building an accurate and efficient soft error prediction model for GPGPUs | |
Condia et al. | An effective method to identify microarchitectural vulnerabilities in gpus | |
Liu et al. | SDC-causing error detection based on lightweight vulnerability prediction | |
Thati et al. | Comparative study on data error detection techniques in embedded systems | |
CN103984632A (zh) | 一种基于错误传播分析的sdc脆弱指令识别方法 | |
Sadi et al. | An efficient approach towards mitigating soft errors risks | |
CN111274058A (zh) | 一种轻量级冗余断言筛选方法 | |
Nikseresht et al. | A selective soft error protection method for cots processor-based systems | |
CN107817966B (zh) | 比较器和存储器区域检测电路和方法 | |
Yan et al. | Multi-bit data flow error detection method based on SDC vulnerability analysis | |
Cong et al. | Impact of loop transformations on software reliability | |
WO2002003200A2 (en) | Method and apparatus to replay transformed instructions | |
Aidemark et al. | Path-based error coverage prediction | |
Rojas et al. | Exploring the effects of silent data corruption in distributed deep learning training |
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 |