基于程序异构关系图的SDC错误检测方法

文档序号:36255833发布日期:2023-12-03 17:07阅读:32来源:国知局
基于程序异构关系图的

本发明属于sdc错误检测加固,特别是一种基于程序异构关系图的sdc错误检测方法。


背景技术:

1、随着芯片集成度和复杂度的指数级增长,系统的稳定性受到越来越大的挑战。在生活中,电磁或粒子辐射、安全攻击、硬件故障和软件错误等原因都可能导致计算机系统发生各种故障。其中,最具危害性的故障之一是错误的输出,称为静默数据损坏(sdc)。sdc具有复杂的传播机制,会随着程序的运行,传播到系统各个组件,最终可能导致重大的安全事故。因此,建立准确高效的sdc检测机制对于保证系统可靠性和安全性至关重要。

2、传统的基于冗余的sdc错误检测方法会导致巨大的性能开销,因此,近年来的工作主要偏向于识别程序中容易发生sdc的关键指令,进行针对性冗余,从而在保证检测率的同时,降低开销。最常见的是基于硬件故障注入的方法,它通过模拟硬件故障产生sdc错误,通过统计分析识别易损指令,然后进行冗余。schirmeier等人提出了一个基于硬件故障注入的智能框架(fail:anopenandversatilefault-injectionframeworkfortheassessmentofsoftware-implementedhardwarefaulttolerance)。为了更有效地压缩故障空间,提高硬件故障注入效率,它在没有故障模拟的情况下切割硬件故障,或识别出类似的故障。li等人采用了硬件故障结果预测技术(smartinjector:exploitingintelligentfault injectionforsdcrateanalysis),减少了单个硬件故障模拟的时间。近年来,随着人工智能的兴起,基于机器学习的sdc错误检测技术应运而生,通过识别脆弱指令在保证检测率的同时,降低硬件故障注入的开销。zheng等人采用分类回归树来预测sdc倾向性(vulnerabilityanalysisofinstructionsforsdc-causingerrordetection);ma等人[19]通过构建程序指令的汇编级异质图并利用图注意网络来预测指令错误(gatps:an attention-basedgraphneuralnetworkforpredictingsdc-causinginstructions)。

3、虽然现有研究工作中已有不少关于sdc错误检测的工作,但都存在一定的局限性。基于故障注入的错误检测方法随着程序大小和动态指令数的增加,硬件故障注入的成本呈指数级增长。基于人工智能的方法几乎都没有显式地考虑程序结构信息,程序表征不完整,无法充分挖掘sdc的损伤机理,其检测精度难以得到保证。


技术实现思路

1、本发明的目的在于针对上述现有技术存在的问题,提供一种基于程序异构关系图的sdc错误检测方法,实现更完整的程序信息挖掘,显式地考虑程序结构信息,以多关系异构图对程序进行表征,进一步探索sdc错误损伤机理,以此提高指令脆弱性预测精度,在保证检测率的同时,降低时空开销。此外,本发明具有良好的可扩展性,适用于各种程序的检测加固。

2、实现本发明目的的技术解决方案为:一方面,提供了一种基于程序异构关系图的sdc错误检测方法,所述方法包括以下步骤:

3、步骤1,对开源编译器llvm进行二次开发,获取程序的结构信息和非结构信息;

4、步骤2,基于故障注入工具llfi在寄存器或内存级别进行单粒子翻转故障模拟,挖掘程序各指令属性和sdc错误率;

5、步骤3,从步骤1和2获取的程序信息中挖掘指令节点和关系边,之后基于深度图谱库dgl构建程序异构关系图g;

6、步骤4,搭建多关系图注意力网络hprg,预测sdc脆弱指令,并挖掘影响sdc错误率的关键关系;

7、步骤5,设计容错机制,对步骤4预测的sdc脆弱指令和关键关系进行分析,识别sdc关键指令,进行针对性冗余加固,实现sdc错误检测。

8、进一步地,步骤1中所述程序的结构信息,包括程序控制流、程序数据流、指令调用和数据存取;程序的非结构信息,包括指令特征提取,所述指令特征包括指令名称、类别、所属基本块、所属函数。

9、进一步地,步骤2中基于llfi进行单粒子翻转故障模拟,其构建的故障模型fi表示为:

10、fi=(ii,ws,wt),i∈[1,n]

11、式中,ii表示第i个程序指令,ws表示程序指令的源操作数宽度,wt表示程序指令的目的操作数宽度,n表示程序指令总数。

12、进一步地,步骤3中所述从步骤1和2获取的程序信息中挖掘指令节点和关系边,之后基于深度图谱库dgl构建程序异构关系图g,具体包括:

13、步骤3-1,基于llvm指令集,从程序结构信息中提取出各指令间关系,表示为一个三元组:

14、eij=(ii,r,ij),i,j∈[1,n]

15、式中,eij表示指令i和指令j间的关系,r表示指令间关系;

16、形成指令关系库ed={eij|i∈n,j∈n};

17、步骤3-2,根据步骤1得到的程序的非结构信息和步骤2得到的故障信息,提取指令特征集,表示为一个8元组:

18、f=(bit,pre,suc,nop,type,bb,fun,e_rate)

19、式中,bit表示指令宽度、pre表示指令前驱数、suc表示指令后继数、type表示指令类型、bb表示指令所属基本块、fun表示指令所属函数、e_rate表示指令sdc错误率;

20、对f中各元素进行编码和标准化,得到标准特征集f:

21、

22、式中,l表示指令特征总数,表示指令j的第i个特征,i∈[1,l],j∈[1,n];

23、步骤3-3,根据指令关系库ed和标准特征集f,基于dgl构建程序异构关系图g,具体为:以程序各指令为程序异构关系图g的节点,以指令间的关系为程序异构关系图g的边,该程序异构关系图表示为g=(v,e),其中v表示指令节点集合,e表示关系边集合。

24、进一步地,步骤4中构建的多关系图注意力网络hprg具体为:

25、步骤4-1,输入为异构关系图g和标准特征集f,基于多头图注意力机制,首先,对于程序指令i∈[1,n],计算其邻域节点j∈n(i)在关系r下第k∈[1,k]个注意力头的注意力权重

26、

27、其中,n(i)为程序指令i的邻居指令,是关系r下第k个注意力头的初始化节点特征变换矩阵,k为注意力头总数,fi为程序指令i的特征,fj为程序指令j的特征,是关系r下第k个注意力头的权重参数,由mlp来表示,leakyrelu为激活函数,t表示转置;

28、进一步,对注意力权重进行归一化,得到权重系数

29、

30、式中,i∈[1,n],j∈[1,n],r∈[1,r],r为指令关系总数,为程序指令i的邻域节点c∈n(i)在关系r下第k∈[1,k]个注意力头的注意力权重;

31、对权重系数进行加权求和,得到程序指令i在关系r下第k个注意力头的嵌入

32、

33、式中,w(k)为第k个注意力头的线性变换权重矩阵;

34、步骤4-2,对程序指令i在各关系r下的各注意力头k的嵌入进行聚合,得到程序指令i的表征qi:

35、

36、通过分类器得到程序指令i的sdc脆弱性y'i:

37、y'i=wm(relu(qi))+bm

38、式中,wm为全连接网络的权重参数,bm为偏置参数;

39、对于程序异构关系图g,多关系图注意力网络的损失函数l为:

40、

41、进一步地,步骤5所述设计容错机制,对步骤4预测的sdc脆弱指令和关键关系进行分析,识别sdc关键指令,进行针对性冗余加固,实现sdc错误检测,具体包括:

42、步骤5-1,根据步骤4中多关系图注意力网络得到的指令脆弱性y={y'i|i∈[1,n]},对目标程序中的指令进行降序排列,得到降序表dt;并根据可配置冗余粒度g∈(0,1),从dt中筛选出初步指令集s;

43、步骤5-2,根据步骤4中的多关系图注意力网络,获取每种关系下各注意力头的各边的注意力权重对每种关系下的边权重求和取平均值,获取权重最大关系rmax,表示为:

44、

45、式中,vr表示关系r下的指令集,numr为vr的指令总数;

46、针对权重最大关系下的指令,选择权重大于阈值tv的边作为关键边,将该关键边的两端指令作为关键指令,形成关键指令集ekey,表示为:

47、

48、式中,表示关系rmax下的程序指令集;

49、进一步,对ekey和s求并集得到最终冗余指令集rd,表示为:

50、rd=ekey∪s

51、步骤5-3,对所述冗余指令集rd中的指令进行冗余加固,并插入比较指令cmp,用于比较原始指令与冗余指令,若相同则表示程序运行正常,继续运行程序;否则跳转到错误处理模块,进行异常中断。

52、进一步地,步骤5-1中根据可配置冗余粒度g∈(0,1),从dt中初步筛选出初步指令集s,具体为:从dt中选择前g*n个程序指令构成初步指令集s。

53、另一方面,提供了一种基于程序异构关系图的sdc错误检测系统,所述系统包括顺次执行的:

54、第一模块,用于对开源编译器llvm进行二次开发,获取程序的结构信息和非结构信息;

55、第二模块,用于基于故障注入工具llfi在寄存器或内存级别进行单粒子翻转故障模拟,挖掘程序各指令属性和sdc错误率;

56、第三模块,用于从第一模块和第二模块获取的程序信息中挖掘指令节点和关系边,之后基于深度图谱库dgl构建程序异构关系图g;

57、第四模块,用于搭建多关系图注意力网络hprg,预测sdc脆弱指令,并挖掘影响sdc错误率的关键关系;

58、第五模块,用于设计容错机制,对预测的sdc脆弱指令和关键关系进行分析,识别sdc关键指令,进行针对性冗余加固,实现sdc错误检测。

59、本发明与现有技术相比,其显著优点为:1)显式地考虑程序结构信息,创新地构建程序异构关系图,对程序表征信息进行更全面挖掘;2)构建了多关系图注意力网络,挖掘指令间空间相关性,可以更加准确地识别脆弱指令和关键关系,具有更高的sdc错误检测率和更低的时空开销,并且可以灵活适用于各种程序;3)对脆弱指令和关键关系进行分析,设计了程序容错机制,对程序进行粒度可配置冗余,从而达到有效高精度检测sdc错误的目的。

60、下面结合附图对本发明作进一步详细描述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1