一种基于SIMD向量化的数据流软错误检测方法技术

技术编号:33467511 阅读:16 留言:0更新日期:2022-05-19 00:46
本发明专利技术公开了一种基于SIMD向量化的数据流软错误检测方法。包括以下步骤:将源程序编译成中间代码,并构建控制流图和分析数据流指令依赖关系,得到指令依赖顺序;对数据应用相应的数据向量化方法,将原始数据和冗余数据向量化,得到向量数据;对指令应用相应的指令向量化方法,得到向量指令;根据加固策略中的检查点应用相应的检查点规则,生成错误检测代码。本发明专利技术提出的方法主要思想是针对冗余执行的数据流算法效率低下问题,根据数据和指令化方法,对程序进行向量化处理,通过利用硬件SIMD数据并行性提升程序性能,根据检查点规则在相应位置生成错误检测代码,实现错误自动检测功能,具有现有方法一般不能检测缓存等部件软错误的优点。软错误的优点。软错误的优点。

【技术实现步骤摘要】
一种基于SIMD向量化的数据流软错误检测方法


[0001]本专利技术属于软件可靠性和可信软件领域,特别是一种基于SIMD向量化的数据流软错误检测方法。

技术介绍

[0002]宇宙高能粒子辐射引起的计算机硬件的瞬时故障会导致软错误。如α粒子和高能中子,这种粒子的撞击持续时间很短,但会造成P

N结翻转,从而引起存储元件的位翻转或中断组合逻辑电路的异常,这种现象称为单粒子翻转(Single Event Upset,SEU)。这可能会影响应用程序的输出,甚至使计算机系统崩溃。工作在辐射环境中的SRAM单元很容易发生软错误。目前已有通过冗余电路设计和错误检查码(Error Correcting Code,ECC)等技术来提高其可靠性。随着集成度的提高,处理器尺寸的减小和电源电压的降低,技术的发展为处理器提供了更好的性能和能效,但是这又使得计算机系统更容易受到软错误的影响,对可靠性提出了重大挑战。
[0003]目前已有不少针对软错误的硬件和软件检测方法。例如高速缓存,大型SRAM阵列等技术均有较高的软错误率(Soft Error Rate,SER),这已经通过电路技术和使用校验验码来解决。已有的研究表明,SRAM的软错误率(Soft Error Rate,SER)在几代技术中大致保持不变,一般为10
‑4FIT/bit。组合逻辑电路更能抵抗由于错误掩蔽而引起的瞬时故障,即使存在软错误,逻辑电路的输出值也可能不会改变,在结果被锁定之前,电路也可以自己从错误中“恢复”。基于硬件的解决方案在性能方面十分有效,通常开销在5%到10%之间。但是基于硬件方法不仅增加了成本,并且也不能做到万无一失。为了克服这些缺点,可以通过软件实现容错(Software Implemented Hardware Fault Tolerance,SIHFT)来替换或加强硬件容错效果。这种方法的另一个好处是可以有选择地应用,例如对于一个系统的所有运行程序,中断控制程序和提供服务的应用程序是较为重要的。通过使用SIHFT,可以忽略非重要应用程序加固,并仅对重要应用程序进行软加固,以提高程序运行效率和加固方法灵活性。
[0004]软错误会对计算机系统产生不同的影响,例如系统崩溃、超时、SDC(Silent Data Corruption)等,其中SDC问题是可靠性领域一直以来研究的重点之一。当SDC发生时,程序正常执行,但是输出结果不正确。已有方法主要是通过软件方法对发生SDC概率高的指令进行保护,从而减少整个系统的SDC错误。
[0005]EDDI(Error Detection by Duplicated Instructions)是一个典型的数据流错误检测方法,它复制程序基本块中所有指令,并在存储指令和分支指令之前插入比较指令,用于比较原指令和复制指令的值。然而这种方法开销巨大。Reis,Eduardo,Thati,Ko等人对EDDI提出了改进的方法,对全冗余复制方法带来的开销问题进行了改进,设计了可选择指令复制和可选择检查指令插入机制。Gu,Yang等人提出了选择性保护方法,允许在指定的开销范围内有选择地保护程序中易发生SDC的指令,首先提取程序指令中静态和动态特征,通过建立回归树和随机森林预测模型来预测程序指令的SDC脆弱性,进而利用指令的SDC脆弱
性选择重要指令进行冗余,在保证高检错率的前提下减少冗余开销。但是这种方法如果为了较高检测率并不会减少明显的冗余执行开销。综上所述,虽然已有方法在检错率方面有很好表现,但仍然存在因冗余带来巨大性能开销问题有待解决。

技术实现思路

[0006]本专利技术的目的在于提供一种基于SIMD向量化的数据流软错误检测方法,利用单指令流多数据流并行性来提高软件冗余方法的效率,将原代码与冗余代码转换为高效率的SIMD代码,生成具有检错能力的加固程序。
[0007]实现本专利技术目的的技术解决方案为:一种基于SIMD向量化的数据流软错误检测方法,包括以下步骤:
[0008]步骤1,给定一个源程序,由编译器将其编译成中间代码,并构建控制流图和分析数据流指令依赖关系,得到指令依顺序;
[0009]步骤2,根据加固策略,针对程序中的重要变量,判断变量数据的类型,并对这些数据应用相应的数据向量化方法,得到向量数据;
[0010]步骤3,根据步骤1中得到的指令依赖关系顺序依次处理每条指令,对其应用相应的指令向量化方法,得到向量指令;
[0011]步骤4,根据加固策略中的检查点应用相应的检查点规则,生成错误检测代码,将存在于向量中的原数据和冗余数据做比较从而实现错误检测。
[0012]一种基于SIMD向量化的数据流软错误检测系统,所述系统包括:
[0013]第一模块,用于给定一个源程序,由编译器将其编译成中间代码,并构建控制流图和分析数据流指令依赖关系,得到指令依顺序;
[0014]第二模块,用于根据加固策略,针对程序中的重要变量,判断变量数据的类型,并对这些数据应用相应的数据向量化方法,得到向量数据;
[0015]第三模块,用于根据所述指令依赖关系顺序依次处理每条指令,对其应用相应的指令向量化方法,得到向量指令;
[0016]第四模块,用于根据加固策略中的检查点应用相应的检查点规则,生成错误检测代码,将存在于向量中的原数据和冗余数据做比较从而实现错误检测。
[0017]一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
[0018]步骤1,给定一个源程序,由编译器将其编译成中间代码,并构建控制流图和分析数据流指令依赖关系,得到指令依顺序;
[0019]步骤2,根据加固策略,针对程序中的重要变量,判断变量数据的类型,并对这些数据应用相应的数据向量化方法,得到向量数据;
[0020]步骤3,根据步骤1中得到的指令依赖关系顺序依次处理每条指令,对其应用相应的指令向量化方法,得到向量指令;
[0021]步骤4,根据加固策略中的检查点应用相应的检查点规则,生成错误检测代码,将存在于向量中的原数据和冗余数据做比较从而实现错误检测。
[0022]一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0023]步骤1,给定一个源程序,由编译器将其编译成中间代码,并构建控制流图和分析数据流指令依赖关系,得到指令依顺序;
[0024]步骤2,根据加固策略,针对程序中的重要变量,判断变量数据的类型,并对这些数据应用相应的数据向量化方法,得到向量数据;
[0025]步骤3,根据步骤1中得到的指令依赖关系顺序依次处理每条指令,对其应用相应的指令向量化方法,得到向量指令;
[0026]步骤4,根据加固策略中的检查点应用相应的检查点规则,生成错误检测代码,将存在于向量中的原数据和冗余数据做比较从而实现错误检测。
[0027]本专利技术与现有技术相比,其显著优点为:
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于SIMD向量化的数据流软错误检测方法,其特征在于,包括以下步骤:步骤1,给定一个源程序,由编译器将其编译成中间代码,并构建控制流图和分析数据流指令依赖关系,得到指令依顺序;步骤2,根据加固策略,针对程序中的重要变量,判断变量数据的类型,并对这些数据应用相应的数据向量化方法,得到向量数据;步骤3,根据步骤1中得到的指令依赖关系顺序依次处理每条指令,对其应用相应的指令向量化方法,得到向量指令;步骤4,根据加固策略中的检查点应用相应的检查点规则,生成错误检测代码,将存在于向量中的原数据和冗余数据做比较从而实现错误检测。2.根据权利要求1所述的基于SIMD向量化的数据流软错误检测方法,其特征在于,步骤2中所述数据向量化方法,具体包括:数据在程序中分为四类,包括标量类型,向量类型,数组类型和结构体类型:a)标量类型数据D
b
:<value,type>,表示数据类型为type,数据的值是value,基本标量数据类型有byte,char,short,int,long,float,double;b)向量类型数据VD:<(value1,value2,

,value
M
),type>,表示包含M个类型为type的元素;c)数组D
arr
:表示n个元素D
b
的集合,其中的类型type都相同,1≤i≤n;d)结构体D
st
:表示由D
b
和D
arr
组成的复合数据;所述标量类型,向量类型归属为基本类型;(1)基本类型数据向量化转换方法VEC_D_B(D
b
,K),该方法定义为:对于任意D
b
=<value,type>,有:VEC_D_B(D
b
,K):VD
b
=<(value1,

,value
K
),type>式中,D
b
为应用该方法的数据,value
i
=value,1≤i≤K,K为转换后向量的长度,VD
b
为D
b
向量化后的数据;(2)数组向量化转换方法VEC_D_ARR(D
arr
,K),该方法定义为:对于任意有:VEC_D_ARR(D
arr
,K):式中,D
arr
为应用该方法的数组,VD
arr
为D
arr
向量化后的数组;(3)结构体数据向量化转化方法VEC_D_ST(D
st
,K),该方法定义为:对于任意有:VEC_D_ST(D
st
,K):
式中,D
st
为应用该方法的结构体,VD
st
为D
st
向量化后的结构体。3.根据权利要求1或2所述的基于SIMD向量化的数据流软错误检测方法,其特征在于,步骤3中所述指令向量化方法,具体包括:指令I分成如下五种类型:a)运算指令I
arith
:<op,od1,od2,dest>,语义为dest=od
1 op od2,其中od1,od2为指令I
arith
的操作数,dest为结果操作数;b)加载指令I
ld
:<load,addr,val>,语义为将内存地址为addr处的值存放到变量val中,其中load为加载指令的符号;c)存储指令I
st
:<store,val,addr>,语义为将val的值存储到地址为addr内存处,其中store为加载指令的符号;d)跳转指令I
jmp
:<jmp,cond,tgt>,语义为当cond条件为真时,程序跳转到tgt处执行,其中jmp为跳转指令的符号;e)其他指令I
ot
:<op,od1,

,od
n
>,op为操作数,od
i
为指令的操作数;(1)运算指令向量化方法VEC_I_ARITH(I
arith
,K),该方法定义为:对于任意I
...

【专利技术属性】
技术研发人员:庄毅张磊顾晶晶郭黎烨曹子宁
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1