汇编级跨文件调度框架的构建方法技术

技术编号:9794434 阅读:120 留言:0更新日期:2014-03-21 18:36
本发明专利技术涉及一种汇编级跨文件调度框架的构建方法,其步骤包括:判断、分析并描述汇编级寄存器内指令之间的数据依赖关系,构建汇编级数据依赖图ADDG,并且利用伪相关检测算法进行寄存器重新分配;分析汇编级基本块之间的调用关系,构建汇编级控制流图ACFG,并选择性添加控制依赖图CDG中删除冗余信息的特性来辅助后续调度;构建汇编级程序调用图APCG,组织管理全局源文件内函数调用关系。本发明专利技术提供了一种汇编级跨文件调度框架的构建方法,该方法从汇编级着手构建更高效的结构来完成更深层次的优化,其存储资源占用代价低、构建方法简单,并且支持全文件级的指令再调度与优化。

【技术实现步骤摘要】
汇编级跨文件调度框架的构建方法
本专利技术涉及计算机领域,尤其涉及一种汇编级跨文件调度框架的构建方法。
技术介绍
编译优化的效果与编译器可见的视野息息相关,更宽的视野能给编译器更大的发挥空间,从而获得更好的优化效果。采用跨文件调度框架能使编译器的视野扩大至整个程序是未来编译领域的发展方向。然而,跨文件调度框架下进行的过程间分析、优化等均占用了过多的编译时间和较大的存储空间,这就导致绝大多数编译器并不支持跨文件调度框架。现有技术方案一般是针对编译框架的中间语言提出,其中特征较为明显的实现方法包括Vortex编译器、SYZYGY编译系统、LLVM编译系统。其中:VorteX是华盛顿大学实现的支持跨文件优化的编译器。Vortex编译器前端正常的处理整个应用程序,然后利用它的专用中间语言VortexIL中间代码表示把所有的编译结果保存下来,一旦得到全部的过程的VIL表示,也就形成了跨文件调度框架。SYZYGY是HP公司的SungdoMoon等人于2004年实现的基于HP-UX的Itanium处理器的编译器的连接时跨文件过程间优化框架。它将传统编译流程划分为四个阶段,包括:前端、连接时、过程间分析和后端,它选择来连接时来可见全部的过程信息,所以在连接前保存目标代码的编译结果。LLVM是伊利诺斯大学2004年提出的连接时全程序优化框架。为了支持全程序优化,LLVM选择的是通过一个伪连接器来保存编译的中间结果,这个中间结果以目标文件的面貌出现。但不同于SYZYGY的目标代码。LLVM扩展了GCC原编译器的Link阶段。在LLVM系统中提供了一个用于进行跨文件过程间分析和优化的伪连接器,这个连接器主要用来处理LLVM系统自身生成的目标代码和LLVM汇编代码。LLVM修改了GCC前端,这个前端完成对源程序的处理生成树表示后将树表示转换成LLVM的中间代码表示形式,中级优化器对这个中间代码表示进行一系列优化后生成LLVM的.o文件。全部程序都被修改后的前端转换为LLVM的.o文件后,再调用LLVM的优化连接器将它们Link为一个单独的文件。这样编译器就可见到全部的过程并基于这个文件进行跨文件的过程间分析和优化变形。完成优化变形后,这个LLVM中间代码表示被转换成GCC自身所使用的RTL表示。GCC编译器处理RTL表示,生成真正的目标代码,然后调用真正的NativeLinker生成最终的可执行文件。现有技术主要是通过保存编译器的中间结果实现跨文件调度框架,而保存中间结果是为了辅助跨文件间过程调度,但这并不能提供合适的结构去实现指令级再调度。
技术实现思路
本专利技术的目的是针对上述问题,提供了一种有效的汇编级跨文件调度框架的构建方法。为实现上述目的,本专利技术提供了一种汇编级跨文件调度框架的构建方法,其包括以下步骤:构建汇编级数据依赖图ADDG,判断、分析并描述汇编级寄存器内指令之间的数据依赖关系,并且利用伪相关检测算法进行寄存器重新分配,避免临时寄存器的复用带来数据间的伪相关;以及构建汇编级控制依赖图ACFG,控制数据依赖分析,并添加控制依赖图CDG中删除冗余信息的特性来辅助后续调度,构建基于多叉树结构的谓词分析方法,通过遍历控制流图,跨基本块的分析条件判断相关指令间的数据依赖关系来完成谓词分析;以及构建汇编级程序调用图APCG,组织管理全局源文件间的关系;所述APCG中每个节点对应一个所述ACFG,所述ACFG中每个节点可映射到一个汇编级基本块,所述ACFG中每个节点对应一个独立的ADDG。进一步地,所述ADDG包括数据依赖检测算法、ADDG创建算法以及所述伪相关检测算法,其中,所述数据依赖检测算法用于判断两条指令之间为何种所述数据依赖关系;所述ADDG创建算法反映了汇编级基本块内全部指令之间为何种所述数据依赖关系,并表现出来;所述伪相关检测算法用于寄存器重新分配,避免伪相关带来的数据依赖关系。进一步地,所述ADDG是一个有向无环图DAG。进一步地,所述ACFG是一个有向有环图DCG。进一步地,所述构建基于多叉树结构的谓词分析方法是通过遍历控制流图,跨基本块的分析条件判断相关指令之间的数据依赖关系来完成谓词分析。进一步地,所述寄存器重新分配包括以下步骤:函数栈框架分析,首先分析程序的栈框架,并统计函数内即将用到的同类寄存器;以及路径分析,分析后文将介绍的ACFG统计当前汇编级基本块的全部前驱动点对同类寄存器的使用情况;以及判断所述路径分析中同类寄存器是否全部被使用。进一步地,所述函数栈框架分析用于保存函数内使用到的临时寄存器。进一步地,若所述路径分析中同类寄存器全部被使用,则判断修改栈结构时导致的指令带来的影响是否小于对依赖关系的减少。进一步地,若所述路径分析中同类寄存器未全部被使用,则任意选择一个未使用的寄存器进行重新分配。进一步地,若所述修改栈结构时导致的指令带来的影响小于对依赖关系的减少,则重新进行分配,否则放弃分配。进一步地,构建所述APCG的步骤包括:前端分析过程中收集全部的函数,并创建所述APCG的点集合;以及顺序分析点集元素对应的汇编指令片段,分析其中的函数调用指令目标地址,并在点元素之间添加边;以及生成未经边冗余删除的APCG;进一步地,所述APCG是一个DCG。本专利技术带来的有益效果是:本专利技术提供了一种汇编级跨文件调度框架的构建方法,该方法从汇编级着手构建更高效的结构来完成更深层次的优化,其存储资源占用代价低、构建方法简单,并且支持全文件级的指令再调度与优化。附图说明图1为本专利技术一实施例一种汇编级跨文件调度框架的构建方法流程图;图2为本专利技术一实施例中I1-I6的ADDG示意图;图3为寄存器重新分配后的ADDG示意图;图4为本专利技术进行寄存器重分配时的流程图;图5为表8中对应的基本控制流图;图6为表8中所示的代码片段的谓词关系示意图;图7为本专利技术一实施例中ACFG示意图;图8为本专利技术汇编级跨文件调度框架的构建方法中APCG、ACFG及ADDG间的嵌套关系示意图。具体实施方式下面通过附图和实施例,对本专利技术的技术方案做进一步地详细描述。如图1所示是本专利技术一实施例一种汇编级跨文件调度框架的构建方法流程图,如图所示,本专利技术具体包括以下步骤:步骤101、构建汇编级数据依赖图(AssemblyDataDependenceGraph,ADDG),判断、分析并描述汇编级寄存器内指令之间的数据依赖关系,并且利用伪相关检测算法进行寄存器重新分配,避免临时寄存器的复用带来数据间的伪相关。数据依赖是指语句之间存在数据约束关系,如果两个运算操作之间无重复使用的变量,或仅连续读取同一个变量,那么执行结果与它们的执行顺序无关,如果相关则这两个运算操作之间就被认定为存在数据约束关系。数据依赖关系包括:写后写、写后读、读后写以及存储依赖四种。汇编级数据依赖图就是为了描述汇编级基本块内指令之间的这四种数据依赖关系。ADDG是一个有向无环图(DirectedAcyclicGraph,DAG)。在ADDG中,G(ADDG)=(V(G),E(G),Φ(G)),其中V(G)是节点集合,E(G)是边集合,φ(G)是关联函数。节点集合V(G)={v1,v2,v3…vn},其中vi与汇编级基本块内的指令呈一一映射关系并被其属性刻画,vi的出度(out-deg本文档来自技高网
...
汇编级跨文件调度框架的构建方法

【技术保护点】
一种汇编级跨文件调度框架的构建方法,其特征在于,包括以下步骤:?构建汇编级数据依赖图ADDG,判断、分析并描述汇编级寄存器内指令之间的数据依赖关系,并且利用伪相关检测算法进行寄存器重新分配,避免临时寄存器的复用带来数据间的伪相关;以及?构建汇编级控制依赖图ACFG,控制数据依赖分析,并添加控制依赖图CDG中删除冗余信息的特性来辅助后续调度,构建基于多叉树结构的谓词分析方法,通过遍历控制流图,跨基本块的分析条件判断相关指令间的数据依赖关系来完成谓词分析;以及?构建汇编级程序调用图APCG,组织管理全局源文件间的关系;?所述APCG中每个节点对应一个所述ACFG,所述ACFG中每个节点可映射到一个汇编级基本块,所述ACFG中每个节点对应一个独立的ADDG。

【技术特征摘要】
1.一种汇编级跨文件调度框架的构建方法,其特征在于,包括以下步骤:构建汇编级数据依赖图ADDG,判断、分析并描述汇编级寄存器内指令之间的数据依赖关系,并且利用伪相关检测算法进行寄存器重新分配,避免临时寄存器的复用带来数据间的伪相关;以及构建汇编级控制依赖图ACFG,控制数据依赖分析,并添加控制依赖图CDG中删除冗余信息的特性来辅助后续调度,构建基于多叉树结构的谓词分析方法,通过遍历控制流图,跨基本块的分析条件判断相关指令间的数据依赖关系来完成谓词分析;以及前端分析过程中收集全部的函数,并创建汇编级程序调用图APCG的点集合;顺序分析点集元素对应的汇编指令片段,分析其中的函数调用指令目标地址,并在点元素之间添加边;生成未经边冗余删除的APCG;组织管理全局源文件间的关系;所述APCG中每个节点对应一个所述ACFG,所述ACFG中每个节点可映射到一个汇编级基本块,所述ACFG中每个节点对应一个独立的ADDG。2.如权利要求1所述的汇编级跨文件调度框架的构建方法,其特征在于,所述ADDG包括数据依赖检测算法、ADDG创建算法以及所述伪相关检测算法,其中,所述数据依赖检测算法用于判断两条指令之间为何种所述数据依赖关系;所述ADDG创建算法反映了汇编级基本块内全部指令之间为何种所述数据依赖关系,并表现出来;所述伪相关检测算法用于寄存器重新分配,避免伪相关带来的数据依赖关系。3.如权利要求...

【专利技术属性】
技术研发人员:朱浩彭楚王东辉洪缨
申请(专利权)人:中国科学院声学研究所
类型:发明
国别省市:

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

1