【技术实现步骤摘要】
一种基于单类支持向量机的多位SDC脆弱指令识别方法
本专利技术属于软加固和可信软件领域,特别是一种基于单类支持向量机的多位SDC脆弱指令识别方法。
技术介绍
随着半导体制造技术的不断发展,处理器不断缩减集成电路的尺寸、降低工作的电压。然而,由于器件敏感度的提高,在计算机性能大幅度提升的同时使得芯片更容易受到空间辐射的影响。在恶劣辐射环境中,由高能粒子辐照或电磁干扰等造成的单粒子效应是计算机系统失效的主要原因之一。单粒子翻转(SingleEventUpset,SEU)是单粒子效应最主要的表现形式。SEU是指高能粒子轰击器件使其逻辑状态发生翻转,使得存储值的某一位由1变为0或由0变为1,可以通过重新写入逻辑值恢复其状态。这种由单粒子翻转造成的系统硬件故障是一种软错误。在计算机运行过程中,因为信号或者数据不正确造成的故障被称为软错误。导致软错误的原因有多种,从电路设计出现问题到元器件之间相互干扰均有可能发生软错误。但相比单粒子翻转所引起的软错误造成的事故,在航天等领域其他原因造成事故的占比要小很多。软错误会改变寄存器或存储器中的数值,从而导致处理器将程序带入错误循环或者直接进入死循环无法跳出。软错误还可以修改某些计算数值,造成数据结果的错误。由于软错误发生时缺乏足够“明显”的信息,因此使用者往往在错误发生了很久之后才能察觉,甚至始终没有意识到发生过软错误。尤其是静默数据损坏(SilentDataCorruption,SDC)这类错误难以检测,具体表现为程序似乎正常执行,但是最终数据结果或者中间过程的数据出现了错误。 ...
【技术保护点】
1.一种基于单类支持向量机的多位SDC脆弱指令识别方法,其特征在于,所述方法包括以下步骤:/n步骤1,对程序集进行故障注入实验,分析得到指令的多位SDC脆弱性值P
【技术特征摘要】
1.一种基于单类支持向量机的多位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脆弱指令进行识别。
2.根据权利要求1所述的基于单类支持向量机的多位SDC脆弱指令识别方法,其特征在于,步骤1中所述指令的多位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错误的次数。
3.根据权利要求2所述的基于单类支持向量机的多位SDC脆弱指令识别方法,其特征在于,步骤2中所构建的数据在程序中传播的指令数据传播特征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表示判断比较指令中的操作数是否含有浮点型。
4.根据权利要求3所述的基于单类支持向量机的多位SDC脆弱指令识别方法,其特征在于,步骤3中所述目标指令的多位屏蔽概率Pmask采用下式计算:
式中,分别代表指令的1位屏蔽概率、2位屏蔽概率和3位屏蔽概率;PSBU为单粒子翻转现象引起单位数据流错误翻转的概率,PH2BU为横向二位数据流错误翻转的概率,PV2BU为竖向二位数据流错误翻转的概率,PC2BU为交叉二位数据流错误翻转的概率,PH3BU为横向三位数据流错误翻转的概...
【专利技术属性】
技术研发人员:庄毅,郑伟宁,晏祖佳,顾晶晶,
申请(专利权)人:南京航空航天大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。