用于对内存屏障指令有效性进行验证的方法和相关产品技术

技术编号:34920379 阅读:57 留言:0更新日期:2022-09-15 07:12
本发明专利技术涉及一种用于对内存屏障指令有效性进行验证的方法和相关产品,所述方法包括:获取验证指令,所述验证指令包括基于验证代码集中各种程序结构的配置信息生成的一个或多个指令子集,每个指令子集中包含内存屏障指令;利用CPU运行所述验证指令,以生成对所述验证指令的执行结果;将CPU对所述验证指令的执行结果与所述验证指令对应的标准结果进行比对;响应于CPU对所述验证指令的执行结果与所述验证指令对应的标准结果不同,确定CPU中内存屏障指令失效。解决了现有CPU内存屏障指令功能异常造成的系统安全性差、指令运行正确性不能保证的问题。不能保证的问题。不能保证的问题。

【技术实现步骤摘要】
用于对内存屏障指令有效性进行验证的方法和相关产品


[0001]本专利技术一般地涉及计算机
更具体地,本专利技术涉及一种用于对内存屏障指令有效性进行验证的方法、设备和计算机可读存储介质。

技术介绍

[0002]近年来,我国科学技术等方向虽然得到不断发展,但在核心运算器、调度器、操作系统、核心算法、芯片设计原理上仍然处于摸索和学习阶段。
[0003]在核心处理器的设计理念上,目前我国以及世界发达国家均从“指令顺序执行”的第一代设计跨入了“指令乱序发射,乱序执行”的第二代设计阶段,出现了大量基于“指令乱序发射,乱序执行”的巅峰核心处理器设计框架,如Arm v8系列,Intel Xeon等。“指令乱序发射,乱序执行”使得核心处理器的性能通过自我优化的方式得到显著的提升。
[0004]传统的指令顺序执行CPU在接到1

4条指令时,会依次如下执行:首先寻访地址“北京”移动至“广州”,其次寻访地址“天津”移动至“上海”,然后寻访地址“北京”移动至“天津”,最后寻访地址“上海”移动至“广州”。如下表1所示:
[0005]表1:
[0006]序号指令执行顺序1北京

>广州12天津

>上海23北京

>天津34上海

>广州4
[0007]上述执行方式的优点在于:CPU可以精准地执行每条任务,但是其所存在的缺点也显而易见。在指令路径和相关联的节点上存在时间和空间的冗余。可以明显的看出,CPU其实不用从北京到广州寻址移动两次,一次即可完成全部任务,因而在后续的CPU设计中加入了“指令乱序发射,乱序执行”的设计。首先将所有指令乱序发射到CPU的指令级队列中进行排队,然后进行排序、筛选和优化(例如部分指令不执行)。接着将不影响程序运行结果的冗余指令进行排序和优化后,进行“乱序”的优化执行,以达到优化性能的结果。经过优化后的指令的实际执行顺序如表2所示:
[0008]表2:
[0009]序号指令优化结果实际执行顺序1北京

>广州优化掉不执行2天津

>上海排序不变23北京

>天津排序114上海

>广州排序33
[0010]表2中各指令的执行顺序如下:首先寻访地址“北京”移动至“天津”,其次直接访问地址“天津”移动至“上海”,最后直接寻访地址“上海”移动至“广州”。由于“北京

>广州”的指令实际已经达成效果,因而优化掉不执行。上述方式使得原先顺序输入的指令由于优化
而乱序发射给 CPU的运算单元,不按照原有的顺序执行,称为“乱序发射和乱序执行”,大大加快了CPU运算的速度和效率,也是当代CPU的主流设计原理。但是上述做法在安全性上存在一定的漏洞,它破坏了指令执行的原有顺序,很容易对指令的源地址和目标地址进行预判,通过旁信道分析的方式获取一定的信息,导致信息泄露。
[0011]随着CPU“乱序执行”技术的发展,为了使程序严格执行运算过程中的原始指令的顺序,CPU在指令集中增加了“内存屏障”指令barrier(),使得在内存屏障两侧的语句禁止执行优化。如下表3中示出了加入内存屏障指令后的执行顺序:
[0012]表3:
[0013]序号指令执行顺序1北京

>广州不执行2天津

>上海23北京

>天津14上海

>广州35barrier()46上海

>广州67天津

>上海5
[0014]内存屏障指令barrier()的出现使得指令队列划分为内存屏障指令前的一组(即序号1

4的指令)以及内存屏障指令后的一组(即序号6

7的指令)。通过实际执行顺序可以看出在内存屏障指令的两侧,CPU分别对 1

4指令以及6

7指令进行乱序执行,并非按照1

7指令进行乱序执行。未增加“内存屏障”指令barrier()时,其理论上经过乱序执行产生的结果如下表4:
[0015]表4:
[0016]序号指令执行顺序1北京

>广州不执行2天津

>上海23北京

>天津14上海

>广州35上海

>广州不执行6天津

>上海不执行
[0017]内存屏障指令作为阻止CPU乱序执行的重要条件,其硬件实现可以由指令级隔离寄存器、开关选择门电路等实现。在细节芯片的设计工艺上,如:指令级隔离寄存器、开关门电路、选择门电路的实现上,会由于工艺、设计的缺陷导致前述器件的功能失效,其失效的结果就是内存屏障指令barrier()无法正常运转,导致大规模的指令乱序执行的发生,破坏了传统芯片的运算逻辑。如果不对这种现象及时发现,CPU内存屏障指令功能异常将会带来系统安全性差、指令运行正确性不能保证等严重问题。
[0018]由于CPU的生产和测试多依赖于CPU流片制造商或CPU设计商的制造水平以及测试水平,在操作系统以及用户层并不能真实反映内存屏障指令失效性的问题,因而内存屏障指令的失效对CPU执行指令的影响并不易被发现。而且目前内存屏障指令在常规编程时一般很少被引入,因而即使发生故障也不易被编程者所发觉。然而,内存屏障指令运行的正确
性关乎于系统安全以及指令运行的正确性,其作用尤其在国产自主CPU中的价值不容忽视。
[0019]因此,如何能快速、便捷的检测CPU屏障指令是否存在功能性的异常则成为目前亟需解决的技术问题。

技术实现思路

[0020]为解决上述一个或多个技术问题,本专利技术提出通过各种程序结构生成包含内存屏障的验证指令,并利用CPU执行该验证指令的执行结果对CPU 中内存屏障指令的有效性进行判断,从而有效提升CPU中指令运行的有效性,减少内存屏障指令使用不当造成的越权或权限提升漏洞。为此,本专利技术在如下的多个方面中提供方案。
[0021]在第一方面中,本专利技术中提供了一种用于对内存屏障指令有效性进行验证的方法,包括:获取验证指令,所述验证指令包括基于验证代码集中各种程序结构的配置信息生成的一个或多个指令子集,每个指令子集中包含内存屏障指令;利用CPU运行所述验证指令,以生成对所述验证指令的执行结果;将CPU对所述验证指令的执行结果与所述验证指令对应的标准结果进行比对;以及响应于CPU对所述验证指令的执行结果与所述验证指令对应的标准结果不同,确定CPU中内存屏障本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于对内存屏障指令有效性进行验证的方法,其特征在于,包括:获取验证指令,所述验证指令包括基于验证代码集中各种程序结构的配置信息生成的一个或多个指令子集,每个指令子集中包含内存屏障指令;利用CPU运行所述验证指令,以生成对所述验证指令的执行结果;将CPU对所述验证指令的执行结果与所述验证指令对应的标准结果进行比对;以及响应于CPU对所述验证指令的执行结果与所述验证指令对应的标准结果不同,确定CPU中内存屏障指令失效。2.根据权利要求1所述的方法,其特征在于,所述程序结构包括以下类型中的一种或多种:顺序结构、循环结构、判断结构、队列结构、栈结构、树形结构、图形结构和嵌套结构,其中所述图形结构包括无向图结构和有向图结构。3.根据权利要求2所述的方法,其特征在于,所述利用CPU运行所述验证指令以生成对所述验证指令的执行结果包括:按照程序结构的复杂度从小到大的顺序分别将对应的指令子集进行排序;以及利用CPU根据所述排序分别运行每种程序结构对应的指令子集,以生成对应的执行结果。4.根据权利要求1所述的方法,其特征在于,所述指令子集中还包括探针,其中所述利用CPU运行所述验证指令以生成对所述验证指令的执行结果还包括:利用所述探针获取所述验证指令在CPU中运行时的数据流信息,以便对CPU的处理过程进行监测。5.根据权利要求1所述的方法,其特征在于,其中将所述验证指令输入CPU之前还包括:禁用编译器的优化选项,以避免编译器对所述验证...

【专利技术属性】
技术研发人员:马瑶瑶
申请(专利权)人:中金金融认证中心有限公司
类型:发明
国别省市:

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

1