首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

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

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:南京航空航天大学

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

主权项:1.一种基于SIMD向量化的数据流软错误检测方法,其特征在于,包括以下步骤:步骤1,给定一个源程序,由编译器将其编译成中间代码,并构建控制流图和分析数据流指令依赖关系,得到指令依顺序;步骤2,根据加固策略,针对程序中的重要变量,判断变量数据的类型,并对这些数据应用相应的数据向量化方法,得到向量数据;步骤3,根据步骤1中得到的指令依赖关系顺序依次处理每条指令,对其应用相应的指令向量化方法,得到向量指令;步骤4,根据加固策略中的检查点应用相应的检查点规则,生成错误检测代码,将存在于向量中的原数据和冗余数据做比较从而实现错误检测;步骤2中所述数据向量化方法,具体包括:数据在程序中分为四类,包括标量类型,向量类型,数组类型和结构体类型:a标量类型数据Db:value,type>,表示数据类型为type,数据的值是value,基本标量数据类型有byte,char,short,int,long,float,double;b向量类型数据VD:<value1,value2,L,valueM,type>,表示包含M个类型为type的元素;c数组表示n个元素Db的集合,其中的类型type都相同,1≤i≤n;d结构体表示由Db和Darr组成的复合数据;所述标量类型,向量类型归属为基本类型;1基本类型数据向量化转换方法VEC_D_BDb,K,该方法定义为:对于任意Db=<value,type>,有:VEC_D_BDb,K:VDb=<value1,L,valueK,type>式中,Db为应用该方法的数据,valuei=value,1≤i≤K,K为转换后向量的长度,VDb为Db向量化后的数据;2数组向量化转换方法VEC_D_ARRDarr,K,该方法定义为:对于任意有: 式中,Darr为应用该方法的数组,VDarr为Darr向量化后的数组;3结构体数据向量化转化方法VEC_D_STDst,K,该方法定义为:对于任意有: 式中,Dst为应用该方法的结构体,VDst为Dst向量化后的结构体;步骤3中所述指令向量化方法,具体包括:指令I分成如下五种类型:a运算指令Iarith:<op,od1,od2,dest>,语义为dest=od1opod2,其中od1,od2为指令Iarith的操作数,dest为结果操作数;b加载指令Ild:<load,addr,val>,语义为将内存地址为addr处的值存放到变量val中,其中load为加载指令的符号;c存储指令Ist:<store,val,addr>,语义为将val的值存储到地址为addr内存处,其中store为加载指令的符号;d跳转指令Ijmp:<jmp,cond,tgt,语义为当cond条件为真时,程序跳转到tgt处执行,其中jmp为跳转指令的符号;e其他指令Iot:<op,od1,L,odn>,op为操作数,odi为指令的操作数;1运算指令向量化方法VEC_I_ARITHIarith,K,该方法定义为:对于任意Iarith=op,od1,od2,dest,有:VEC_I_ARITHIarith,K:VIarith=vop,vod1,vod2vdest=vop,VEC_D_Bod1,K,VEC_D_Bod2,K,VEC_D_Bdest,K式中,Iarith为应用该方法的运算指令,VIarith为Iarith向量化后的运算指令,vop、vod1、vod2、vdest分别为op,od1,od2,dest向量化后的结果;2加载指令向量化方法VEC_I_LDIld,K,该方法定义为:对于任意Ild=load,addr,val>,有:VEC_I_LDIld,K:VIld=<vload,addr,vval>=<vload,addr,VEC_D_Bval,K>式中,Ild为应用该方法的加载指令,VIld为Ild向量化后的加载指令,vload,addr,vval分别为load,addr,val向量化后的结果;3存储指令向量化方法VEC_I_STIst,K,该方法定义为:对于任意Ist=<store,val,addr,有:VEC_I_STIst,K:VIst=<vstore,vval,addr>=<vstore,VEC_D_Bval,K,addr式中,Ist为应用该方法的加载指令,VIst为Ist向量化后的加载指令,vstore,vval,addr分别为store,val,addr向量化后的结果;4向量数据转换为标量数据方法DEVEC_VD_BVDb,Idx,该方法定义为:对于任意VDb={value1,L,valueK},type,有:DEVEC_VD_BVDb,Idx:Db=valueIdx,type式中,VDb为应用该方法的向量数据,Idx是该方法返回向量数中的基本类型数据的索引。

全文数据:

权利要求:

百度查询: 南京航空航天大学 一种基于SIMD向量化的数据流软错误检测方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。