[发明专利]指令调度方法及装置有效
| 申请号: | 201210307180.9 | 申请日: | 2012-08-24 |
| 公开(公告)号: | CN102830954A | 公开(公告)日: | 2012-12-19 |
| 发明(设计)人: | 朱浩;王东辉;洪缨;王德滨 | 申请(专利权)人: | 北京中科信芯科技有限责任公司 |
| 主分类号: | G06F9/38 | 分类号: | G06F9/38 |
| 代理公司: | 北京亿腾知识产权代理事务所 11309 | 代理人: | 陈霁 |
| 地址: | 100190 北京市海淀区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 指令 调度 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种指令调度方法及装置。
背景技术
指令调度是编译器挖掘程序潜在的指令级并行的有效手段。它是在不改变程序语义,满足目标机器的相关性和资源依赖性的前提下,通过重新调整指令顺序来提高一个周期内目标机器能够执行的指令数目(IPC)。指令调度是现代高性能编译器的一项关键技术,它决定各操作的相对执行顺序,具体执行时间及使用哪些硬件资源等。从代码块划分角度来看,指令调度可以分为局部指令调度和全局指令调度,其中局部指令调度是指基本块内的指令调度,而全局调度是指基本块间的指令调度。
局部指令调度算法是指基本块内的相关指令调度算法。其中,基本块被定义成只有一个入口点和一个出口点的代码段,且没有转移、跳转分支。因此局部指令调度算法避免了转移相关,其难点在于数据相关和资源相关问题。
列表调度算法(List Scheduling)是一种典型的局部指令调度算法。Fisher等提出了基本块内实现带有优先级的列表调度算法,即根据带有优先级的拓扑排序,来访问数据依赖图的各个结点,并根据每个结点和已调度的结点之间的数据依赖关系,计算出能够执行该结点的最早时间位置,并根据一个资源预约表将当前结点安排在最早能够获得所需资源的时间位置上。列表调度算法不会回溯,它对每个结点进行有且仅有一次的指令调度,并使用一个启发式的优先级函数从已经就绪的结点中选择下一个调度的结点。然而,列表调度算法中的拓扑排序的最优选择问题,是难点所在,即该算法不能有效保证被选择的拓扑排序一定是所有可能的拓扑排序中的最优选择。
与指令调度随之而来的是寄存器分配与指令调度的时序问题。从某种意义上讲,虽然二者都是为了提高程序的并行度,但其相互作用是负面的:一方面,寄存器分配尽量减少正在使用的寄存器数目,但这可能会导致更多的相互依赖关系,限制了可能的指令调度;另一方面,指令调度通常会需要更多的寄存器来消除伪相关,进而增大了寄存器分配的压力,以至于寄存器溢出会抵消指令级并行所带来的好处。由于指令调度与寄存器分配实现十分复杂,大多数ILP(Instruction Level Parallelism)编译器的后端设计中,仍采用两个或多个分离的阶段来处理。例如MIPS编译器先进行寄存器分配再进行指令调度,而在IBM RI SC S/7000中正好相反。编译器在权衡指令调度和寄存器分配的执行顺序上很难给出最优方案。
发明内容
本发明的目的是针对现有技术的缺陷,提供一种指令调度方法及装置,从而解决指令调度和寄存器分配的执行顺序上很难给出最优方案,无法高效提高指令执行的并行度问题。
在第一方面,本发明实施例提供了一种指令调度方法,所述方法包括:
根据汇编指令建立汇编级数据流图和汇编级控制流图;
根据所述汇编级数据流图找出伪相关指令,并根据所述汇编级控制流图将可用的寄存器分配给所述伪相关指令,根据寄存器重新分配后的指令建立新的汇编级数据流图;
在所述新的汇编级数据流图中加入汇编指令序,并从所述新的汇编级数据流图中查找最佳路径,根据所述最佳路径进行指令调度。
在第二方面,本发明实施例提供了一种指令调度装置,所述装置包括:
建立单元,用于根据汇编指令建立汇编级数据流图和汇编级控制流图;
分配单元,用于根据所述汇编级数据流图找出伪相关指令,并根据所述汇编级控制流图将可用的寄存器分配给所述伪相关指令,根据寄存器重新分配后的指令建立新的汇编级数据流图;
调度单元,用于在所述新的汇编级数据流图中加入汇编指令序,并从所述新的汇编级数据流图中查找最佳路径,根据所述最佳路径进行指令调度。
本发明实施例中,根据汇编指令建立汇编级数据流图(Assembly Data Dependence Graph,ADDG)和汇编级控制流图(Assembly Control Flow Graph,ACFG);根据所述ADDG找出伪相关指令,并根据所述ACFG将可用的寄存器分配给所述伪相关指令,根据寄存器重新分配后的指令建立新的ADDG;在所述新的ADDG中加入汇编指令序,并从所述新的ADDG中查找最佳路径,根据所述最佳路径进行指令调度,由此给出了指令调度与寄存器分配执行顺序的最优方案,并提高了指令执行的并行度。
附图说明
图1是本发明实施例提供的指令调度方法流程图;
图2是本发明实施例提供的ADDG的生成方法流程图;
图3是本发明实施例提供的汇编代码片段及其ADDG;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中科信芯科技有限责任公司,未经北京中科信芯科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210307180.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:金属颜料组合物
- 下一篇:腔体类机加零件的立体组合式样板检验方法





