一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于指令级数据流分析的新指令扩展方法

2022-12-31 16:59:07 来源:中国专利 TAG:


1.本发明涉及软件工程领域,具体涉及一种基于指令级数据流分析的新指令扩展方法。


背景技术:

2.软件性能一直是评估软件质量的核心指标,部分性能问题的根源在于系统关键耗时代码实现不够优化,目前软件工程领域已有根据性能相关代码特征,从源代码中找到性能关键部分并进行代码性能优化的工作,而近年来随着硬件架构和指令集的不断发展,可以支持自定义的指令集扩展,因此可以通过领域需求,找到程序及其运行轨迹中频繁出现的性能关键程序特征并为其构建新指令,通过程序特定指令集扩展来进一步提升程序性能。
3.目前指令扩展的通用方法是根据人工经验,自顶向下的程序建模以及程序动态执行过程中的性能指标,手动分析程序中的性能关键代码片段,再将其形成为新指令。这样的方式需要耗费大量人力,在实际操作中可找到的优化点并不多。在程序规模不断增大的背景下,需要一种自动化的新指令扩展方法。


技术实现要素:

4.本发明提供一种基于指令级数据流分析的新指令扩展方法,可以解决目前指令扩展的通用方法需消耗大量人力资源且指令挖掘效率较低的问题。
5.为解决上述问题,本发明通过以下技术方案来实现:
6.一种基于指令级数据流分析的新指令扩展方法,其特征在于,包括如下步骤:
7.步骤一,基于静态分析构建指令级数据流图,对输入程序及其变体进行静态分析,在基本块粒度上构造指令级数据流图;
8.步骤二,基于指令约束条件对指令级数据流图进行划分得到子图集合,通过穷举搜索指令级数据流图的所有可能的子图划分,在搜索过程中对每一子图进行遍历,收集子图中结点数量、出入边数量等信息,通过约束求解,判断子图是否满足指令约束条件,最终得到指令级数据流图中满足指令约束条件的子图集合;
9.步骤三,基于子图等价关系的定义对子图集合进行等价类划分并基于指令序列特征和频次筛选子图,首先根据等价关系的定义,遍历子图集合进行等价类划分,然后将指令序列特征转换为模板指令级数据流图,通过遍历子图等价类,筛选出与模板指令级数据流图等价的子图等价类并进行频次统计,最终保留出现频次超过用户自定义阈值的高频子图;
10.步骤四,基于抽象指令序列描述每一个高频子图对应的新指令语义,通过遍历子图,将子图转换为指令序列,并使用虚拟寄存器来表示指令的操作数和输出值。
11.上述的基于指令级数据流分析的新指令扩展方法,其特征在于,所述步骤一的基于静态分析构建指令级数据流图包括:
12.·
所述输入程序及其变体主要包括汇编表示、中间代码表示(ir)、程序动态运行轨迹(trace);
13.·
所述指令级数据流图是一种有向无环图,结点表示指令和值,包括四种类型:a、指令结点表示实际指令;b、指令输出值结点表示指令输出值;c、常值结点表示立即数;d、符号值结点表示外部输入值;边表示指令与值的数据依赖关系,边标记表示数据在指令操作中的语义,主要包括:一般值、地址和移位扩展值三类;
14.·
通过别名分析、值流分析等静态分析技术,在基本块粒度上构建程序中间表示(ir)对应的指令级数据流图;
15.·
通过抽象解释技术,在基本块粒度上构建程序动态运行轨迹(trace)对应的指令级数据流图;
16.·
约简指令级数据流图中表示中间值的结点,并将指令级数据流图中表示值的结点统一抽象成符号值结点;
17.·
将指令级数据流图按连通分量分割,得到对应的指令级数据流图集合。
18.上述的基于指令级数据流分析的新指令扩展方法,其特征在于,所述步骤二的基于指令约束条件对指令级数据流图进行划分得到子图集合包括:
19.·
所述指令约束条件主要包括指令条数、输入个数范围、输出个数范围、凸性,由用户设置;
20.·
对所述指令级数据流图的指令结点进行拓扑排序;
21.·
采用递归算法按指令级数据流图的指令结点的逆拓扑序进行搜索,穷举所有可能的子图划分;
22.·
对搜索过程中得到的每一子图进行遍历,得到子图中指令结点的数量、出入子图的边数、出入子图的边所连接的结点数量、是否存在子图出边连接子图外部结点再通过子图入边连接子图内部结点的情况,通过约束求解,判断子图是否满足指令约束条件,将不满足约束条件的子图剔除;在算法运行过程中,若某一子图划分不能满足约束,且基于此子图划分后续搜索得到的子图划分也不可能满足约束,则进行剪枝;
23.·
收集搜索过程中所有满足约束条件的子图,得到指令级数据流图对应的子图集合。
24.上述的基于指令级数据流分析的新指令扩展方法,其特征在于,所述步骤三的基于子图等价关系的定义对子图集合进行等价类划分并基于指令序列特征和频次筛选子图包括:
25.·
所述指令序列特征由用户自定义,是包含特定模式的指令序列;
26.·
所述图等价关系定义为:两个子图结点等价,当且仅当结点均为指令结点且指令相同或结点均为值结点;两个子图等价,当且仅当子图的输出相关结点等价,且对任意两等价指令结点,若其指令满足交换律,则其输入结点存在一个等价的一一对应,若其指令不满足交换律,则其输入结点按输入顺序等价;
27.·
基于图等价关系的定义,对子图集合进行等价类划分;
28.·
利用所述步骤一的指令级数据流图构造方法,将用户自定义的指令序列特征转换为模板指令级数据流图,对子图等价类进行遍历,剔除不匹配指令序列特征的等价类;
29.·
对等价类进行频次统计,保留出现频次高于自定义阈值的等价类,其所含子图
即为高频子图。
30.上述的基于指令级数据流分析的新指令扩展方法,其特征在于,所述步骤四的基于抽象指令序列描述每一个高频子图对应的新指令语义包括:
31.·
对高频子图中的指令结点进行拓扑排序,并按照拓扑序构造指令序列;
32.·
依据高频子图中各指令结点间数据依赖关系,生成指令对应的虚拟输入输出寄存器。
33.通过采用以上技术方案,可以得到以下有益效果:
34.本发明提出的一种基于指令级数据流分析的新指令扩展方法,通过指令级数据流图,自底向上地进行程序建模,自动地建模整个程序,再通过可配置的指令约束条件和指令序列特征,使得用户仅需要提供指令约束条件和指令序列特征等少量信息就可以自动化发掘程序中适合形成新指令的指令序列,从而有效降低人工成本,提高指令挖掘的准确性和效率。
附图说明
35.图1是本发明实施例基于指令级数据流分析的新指令扩展方法的框架图。
36.图2是本发明实施例输入程序的动态运行轨迹(trace)的示例图。
37.图3是本发明实施例输入示例的指令级数据流图的表示图。
具体实施方式
38.为了使本领域技术人员更好地理解本发明,以下结合附图和具体实施例对本发明作进一步详细阐述。
39.如图1所示,本实施例提供一种基于指令级数据流分析的新指令扩展方法,该方法包括如下步骤:
40.步骤一,基于静态分析构建指令级数据流图,对输入程序及其变体进行静态分析,在基本块粒度上构造指令级数据流图;其有益效果是,通过使用别名分析、值流分析、抽象解释等静态分析技术构建的程序基本块粒度的指令级数据流图,可以高精度地表达程序的指令和数据间依赖关系;
41.步骤二,基于指令约束条件对指令级数据流图进行划分得到子图集合,通过穷举搜索指令级数据流图的所有可能的子图划分,在搜索过程中对每一子图进行遍历,收集子图中结点数量、出入边数量等信息,通过约束求解,判断子图是否满足指令约束条件,最终得到指令级数据流图中满足指令约束条件的子图集合;其有益效果是,提出使用基于逆拓扑序的数据流子图搜索,使得对子图进行约束求解后的搜索剪枝更高效,有效减少了搜索空间,提高了算法效率;
42.步骤三,基于子图等价关系的定义对子图集合进行等价类划分并基于指令序列特征和频次筛选子图,首先根据等价关系的定义,遍历子图集合进行等价类划分,然后将指令序列特征转换为模板指令级数据流图,遍历子图等价类,筛选出与模板指令级数据流图等价的子图等价类并进行频次统计,最终保留出现频次超过用户自定义阈值的高频子图;其有益效果是,定义了一种考虑代数规律的子图等价关系,提高了等价子图判定的精度;提出了指令序列特征到模板数据流图的转换,将指令序列特征匹配问题转变为图匹配问题,提
高了用户配置的灵活性;
43.步骤四,基于抽象指令序列描述每一个高频子图对应的新指令语义,通过遍历子图,将子图转换为指令序列,并使用虚拟寄存器来表示指令的操作数和输出值;其有益效果是,定义了一种抽象指令序列,使用无限多的虚拟寄存器表示指令操作数和输出值,避免了因寄存器数量限制而引入的额外的内存存取指令,具体准确地表达了高频子图对应的指令序列的实际操作语义,方便后续根据语义实现新指令;
44.所述步骤一的基于静态分析构建指令级数据流图,具体步骤包括:
45.·
所述输入程序及其变体主要包括汇编表示、中间代码表示(ir)、程序动态运行轨迹(trace)等;所述程序动态运行轨迹(trace)如图2所示,记录了在程序实际运行过程中,中央处理器每一步执行的指令以及执行指令时的内部状态;
46.·
所述指令级数据流图是一种有向无环图,如图3所示,图3是本发明实施例输入示例的指令级数据流图的表示图,结点表示指令和值,包括四种类型:a、指令结点表示实际指令;b、指令输出值结点表示指令输出值;c、常值结点表示立即数;d、符号值结点表示外部输入值;边表示指令与值的数据依赖关系,边标记表示数据在指令操作中的语义,种类如表1所示;
47.表1边标记及其语义
[0048][0049]
·
通过别名分析、值流分析等静态分析技术,在基本块粒度上构建程序中间表示(ir)对应的指令级数据流图;
[0050]
·
通过抽象解释技术,在基本块粒度上构建程序动态运行轨迹(trace)对应的指令级数据流图;
[0051]
·
约简指令级数据流图中表示中间值的结点,并将指令级数据流图中表示值的结点统一抽象成符号值结点;
[0052]
·
将指令级数据流图按连通分量分割,得到对应的指令级数据流图集合。
[0053]
所述步骤二的基于指令约束条件对指令级数据流图进行划分得到子图集合,具体步骤包括:
[0054]
·
所述指令约束条件主要包括指令条数、输入个数范围、输出个数范围、凸性等,由用户设置;
[0055]
·
采用递归算法按指令级数据流图的指令结点的逆拓扑序进行搜索,穷举所有可能的子图划分;
[0056]
·
对搜索过程中得到的每一子图进行遍历,得到子图中指令结点的数量、出入子图的边数、出入子图的边所连接的结点数量、是否存在子图出边连接子图外部结点再通过子图入边连接子图内部结点的情况,通过约束求解,判断子图是否满足指令约束条件,将不满足约束条件的子图剔除;在算法运行过程中,若某一子图划分不能满足约束,且基于此子图划分后续搜索得到的子图划分也不可能满足约束,则进行剪枝,例如由于子图要求连通,任意子图均无法通过加入与当前子图不连通的指令结点来构成新的子图、由于按照逆拓扑序加入指令结点,加入新的指令结点不会使得子图出参数量减少,也无法使得被破坏的凸性得到恢复;
[0057]
·
收集搜索过程中所有满足约束条件的子图,得到指令级数据流图对应的子图集合。
[0058]
所述步骤三的基于子图等价关系的定义对子图集合进行等价类划分并基于指令序列特征和频次筛选子图,具体步骤包括:
[0059]
·
所述指令序列特征由用户自定义,是包含特定模式(如读-修改-写的模式)的指令序列;
[0060]
·
所述图等价关系定义为:两个子图结点等价,当且仅当结点均为指令结点且指令相同或结点均为值结点;两个子图等价,当且仅当子图的输出相关结点等价,且对任意两等价指令结点,若其指令满足交换律,则其输入结点存在一个等价的一一对应,若其指令不满足交换律,则其输入结点按输入顺序等价;
[0061]
·
基于图等价关系的定义,对子图集合进行等价类划分;
[0062]
·
利用所述步骤一的指令级数据流图构造方法,将用户自定义的指令序列特征转换为模板指令级数据流图,对子图等价类进行遍历,剔除不匹配指令序列特征的等价类;
[0063]
·
对等价类进行频次统计,保留出现频次高于自定义阈值的等价类,其所含子图即为高频子图。
[0064]
所述步骤四的基于抽象指令序列描述每一个高频子图对应的新指令语义包括:
[0065]
·
对高频子图中的指令结点进行拓扑排序,并按照拓扑序构造指令序列;
[0066]
·
依据高频子图中各指令结点间数据依赖关系,生成指令对应的虚拟输入输出寄存器。
[0067]
以上所述为本发明的实施例,但此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。凡在不脱离本发明的原理和精神的情况下依本发明申请专利范围所做的任何省略、修改、等同替换等,均应包含在本公开的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献