[发明专利]基于模调度实现循环指令调度的编译方法及装置有效
申请号: | 201110128054.2 | 申请日: | 2011-05-17 |
公开(公告)号: | CN102200924A | 公开(公告)日: | 2011-09-28 |
发明(设计)人: | 程旭;谭明星;刘先华;张吉豫 | 申请(专利权)人: | 北京北大众志微系统科技有限责任公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 栗若木;王漪 |
地址: | 100080 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 调度 实现 循环 指令 编译 方法 装置 | ||
技术领域
本发明涉及现代处理器代码编译优化方法,尤其涉及基于模调度实现循环指令调度的编译方法及编译器装置。
背景技术
在现代计算机系统中,通过编译器各种优化方法来挖掘处理器指令级并行性,是提高处理器性能的有效手段。软件流水是编译器中一种常见的优化方法,它通过在循环级别进行指令调度来挖掘指令级并行性,以提高处理器的性能。
软件流水的基本思想是通过重叠执行不同循环体指令来挖掘指令级并行性。编译器以C/C++/Java等高级语言源程序作为输入,从高级语言源程序中提取循环相关的代码作为调度对象,首先为这些循环建立控制流图(CFG,Control-Flow Graph)和数据依赖图(DDG,Data-Dependence Graph),然后将处理器中指令的延时和资源占用情况进行抽象,得到整个循环的控制依赖约束、数据依赖约束和资源约束。基于模调度的这些约束条件,软件流水使用自顶向下、自底向上或者双向调度方法,对循环中的指令进行调度,使其重组成为新的循环。重组之后的循环包括入口代码(prologue)、核心代码(kernel)以及排空代码(epilogue)三部分;其中入口代码和出口代码都是为了保持程序语义的正确性设置的,而核心代码则是循环的主体部分。在重组之后的循环中,循环核心的指令数目基本上和原来的循环保持一致,但是指令顺序发生了变化,尤其是相邻指令之间的依赖数量大大降低,从而减小指令之间由于依赖关系而导致的指令延时,并进一步减小程序运行时间。
目前已有的软件流水技术一般采用“表调度”等启发式策略,在循环重组过程中需要始终遵循所有的控制依赖约束、数据依赖约束和系统资源约束。若调度过程发生违反约束的冲突,则调度过程可能会失败,从而导致重组循环的性能降低。
随着现代处理器中指令发射宽度的增加和指令类型的增多,以上这种由于约束条件冲突引起的指令调度过程失败情况也越来越常见。调度过程的失败一方面可能导致完全无法挖掘指令级并行性,另一方面也可能引发循环执行时间较长和寄存器压力较大等问题,从而导致应用程序的性能较低。
因此,有效地解决现有技术中由于约束条件冲突引起的软件流水调度失败问题,从而提高循环重组之后的代码性能,对提高处理器性能乃至整个计算机系统性能都有着重要作用。
发明内容
本发明所要解决的技术问题是提供一种基于模调度实现循环指令调度的编译方法及装置,能够有效地避免由于模调度约束条件冲突引起的指令调度失败。
为了解决上述技术问题,本发明提供了一种基于模调度实现循环指令调度的编译方法,包括由编译器执行的下列步骤:
读入并解析源程序,获取控制流图信息;
建立循环体结构的数据依赖约束和资源依赖约束;
在对循环体结构执行模调度过程中,针对检测指令调度结果发生的数据依赖冲突和/或资源冲突根据符合相应约束的回溯模型解决。
进一步地,读入并解析源程序,获取控制流图信息,具体包括:
读入高级语言源程序,并通过控制流分析技术对高级语言的前端进行解析,获取基本块,并获取表述基本块的程序结构的控制流图信息。
进一步地,针对循环体结构建立数据依赖约束和资源依赖约束,具体包括:
根据控制流图信息建立所述数据依赖约束,根据目标处理器的资源信息建立资源依赖约束。
进一步地,在对循环体结构执行模调度过程中,针对检测指令调度结果发生的数据依赖冲突和/或资源冲突根据符合相应约束的回溯模型解决,具体包括:
根据预先对处理器执行可执行程序时采用典型输入数据收集的剖视信息指导对循环指令的模调度;
针对循环体中每一条需要调度指令当前节点的调度结果进行数据依赖冲突的检测和/或资源冲突的检测;
针对检测到调度结果会发生数据依赖冲突和/或资源冲突,则相应地使用符合数据依赖约束的回溯模型和符合资源约束的回溯模型消除。
进一步地,其中该方法中各步骤具体为:
根据剖视信息中的值剖视信息识别循环体结构,并初始化数据依赖冲突和资源冲突;根据剖视信息中的路径剖视信息指导从控制依赖到数据依赖的转换过程;
在假定启动间距条件下,采用摆动模调度算法选择对当前指令的调度位置,并设置相应的调度优先级;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北大众志微系统科技有限责任公司,未经北京北大众志微系统科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110128054.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:太阳能电池元件及其装置
- 下一篇:钾铷铯矾的提取方法