[发明专利]一种超长指令字结构下延迟槽调度方法及其系统有效
申请号: | 201210347706.6 | 申请日: | 2012-09-18 |
公开(公告)号: | CN102880449A | 公开(公告)日: | 2013-01-16 |
发明(设计)人: | 朱浩;彭楚;王东辉;洪缨;侯朝焕 | 申请(专利权)人: | 中国科学院声学研究所 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京亿腾知识产权代理事务所 11309 | 代理人: | 陈霁 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 超长 指令 结构 延迟 调度 方法 及其 系统 | ||
技术领域
本发明涉及一种指令调度技术,尤其涉及一种超长指令字结构下延迟槽调度方法及其系统。
背景技术
超长指令字(Very Long Instruction Word,简称:VLIW)是一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度。VLIW技术是提高处理器指令级并行性的主要性能之一,它采用软硬件协同开发处理器的并行性。长指令的组装由编译器完成,而不是采用超标量处理器基于硬件动态调度策略,从而大幅度降低了硬件复杂度和芯片功耗。
在数字信号处理器(Digital Signal Processing,简称DSP)体系结构设计中,通常是在精简指令集计算机(Reduced Instruction Set Computer,简称:RISC)体系结构下结合VILW技术进行研究。采用这种体系结构的流水处理器中,分支指令是提高性能的一个重要障碍,这是因为分支指令之后的指令预取地址需要在分支指令执行到比较后的流水级时才能产生,中间的延迟会造成指令流水线停顿等分支结果,从而直接影响后续指令序列的执行,降低了指令并行度。延迟槽结构正是为了降低此类指令流水线控制流相关带来的性能开销,其原理是,如果在分支指令之后填入与分支指令不相关的指令,那么处理器的指令流水线将仍然处于工作状态,分支指令带来的延迟将会被这些指令合理应用,延迟槽就是用于存放这些指令的结构。延迟槽结构在实际程序执行中要想获得良好效果,需要软件调度算法的支持。如果在延迟槽中填充有用的指令,那么处理器的处理性能就可能提高,而如果找不到合适的指令使得延迟槽不得不填充空操作指令的话,那么控制相关操作所带来的性能损耗依然存在。因此,软件上如何让指令延迟槽获得尽量充分的使用,是值的探究的。
延迟槽调度算法主要包括局部调度算法和全局调度算法两种方案。传统编译器只采用较为简单的局部函数片段的调度,即局部调度,延迟槽中所填充的指令从基本块(Basic Block)中选取,基本块是程序中一个顺序执行的语句序列,在执行时只能从入口语句入,从出口语句退出(基本块只有一个出口语句和一个入口语句),基本块以分支指令做为结束指令。如果基本块中没有合适指令可选择,那么就填充空操作指令,而全局调度则是在发现基本块中没有合适指令可填充延迟槽后,还会基于一定约束规则从其他基本块中选择合适的指令进行填充,也就是说全局调度允许跨越基本块边界的代码移动,如果这个过程也失败,那么再选择空操作指令进行填充,但在编译器上实现全局调度的代价较大,而且直接影响编译器的编译速度。
在传统的DSP处理器体系结构设计中,通常只使用局部调度算法或限于对编译速度的考虑选择全局调度和编译器效率的折中,而局部调度算法通常局限于局部函数片段可选的目标指令数很少,当编译器充分优化时,局部函数片段中指令之间的逻辑性增强导致延迟槽使用率偏低。当传统的DSP处理器体系结构设计方案没用到基于VLIW技术实现的体系结构中,则无法评估对指令并行度的影响,而对延迟槽的使用可能带来对指令并行度的破坏,反而影响程序的实际效率。
发明内容
本发明的目的是提供一种超长指令字结构下的延迟槽调度的方法,以达到延迟槽调度和程序并行性度之间的权衡,局部调度和全局调度之间的权衡,从而使程序获得更高的执行效率。
为实现上述目的,一方面,本发明提供一种超长指令字结构下的延迟槽调度方法,该方法包括以下步骤:
对当前基本块内指令进行局部调度,所述局部调度完成后判断是否有剩余指令延迟槽,若没有,则调度结束;否则将可填充入指令延迟槽但开销较大的指令放入局部备选指令缓存;
对分支目标基本块内指令进行全局调度,选取可填充入指令延迟槽的指令放入全局备选指令缓存;
从所述局部备选指令缓存和/或所述全局备选指令缓存中选取指令填充入所述剩余指令延迟槽。另一方面,本发明还提供一种超长指令字结构下的延迟槽调度系统,该系统包括:
局部调度单元,用于对当前基本块内指令进行局部调度,所述局部调度完成后判断是否有剩余指令延迟槽,若没有,则调度结束;否则将可填充入指令延迟槽但开销较大的指令放入局部备选指令缓存;
全局调度单元,用于对分支目标基本块内指令进行全局调度,选取可填充入指令延迟槽的指令放入全局备选指令缓存;
平衡调度单元,用于从所述局部备选指令缓存和/或所述全局备选指令缓存中选取指令填充入所述剩余指令延迟槽。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院声学研究所,未经中国科学院声学研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210347706.6/2.html,转载请声明来源钻瓜专利网。