用跳转目标基本块的执行包填充空闲节拍的指令调度方法技术

技术编号:13832122 阅读:134 留言:0更新日期:2016-10-14 11:37
用跳转目标基本块的执行包填充空闲节拍的指令调度方法,包括如下步骤:步骤一,在代码流图中找出与进行跨基本块选择执行包填充空闲节拍操作有关的目标基本块对;步骤二,对跳转目标基本块内的指令执行包进行前驱执行包判定,即判定该执行包内各指令所依赖的其他指令,即被依赖指令所在的执行包及其位置,并根据指令之间的依赖关系确定该执行包的可执行最早时间对应的节拍;步骤三,根据各个指令执行包可执行最早时间对应的节拍与基本块内空闲节拍的位置关系,计算出各指令执行包各自对应的可填充最早时间,移动这些执行包到对应的空闲节拍处,完成填充。

【技术实现步骤摘要】

本专利技术涉及代码的编译优化方法,面向VLIW处理器硬件底层的无条件跳转指令延迟槽以及基本块内空闲节拍的填充
,特别涉及一种用跳转目标基本块的执行包填充空闲节拍的指令调度方法
技术介绍
在编译过程中,在完成了基本块调度之后,基本块内仍然可能存在一些空闲节拍,这些空闲节拍包括两部分:1)指令与指令之间的数据依赖关系和指令执行延时所造成的空闲节拍;2)分支指令后未被有效指令填充的延迟槽。分支调度指的是两件事:1)用有用的指令填充分支指令之后的延迟槽;2)隐藏处于比较指令和根据比较结果进行分支的指令之间的延迟。由于本专利技术针对的是无条件跳转指令延迟槽以及在基本块调度之后的空闲节拍的填充问题,所以不涉及比较指令和依赖比较结果的条件分支指令之间的延迟以及条件分支指令本身的调度优化问题。对于不同的体系结构,分支的实现有很大的区别,但大多带有多个延迟槽。如何有效地填充这些延迟槽是提高代码的并行度要考虑的重要问题之一。延迟槽可用有用的指令或nop指令来填充,但后者实际是空转。填充分支延迟槽时可以使用以该分支指令结束的基本块内部的指令。首先检查该基本块的依赖DAG中是否有任何叶子结点能
够放到它最后一条分支指令的延迟槽中。这种指令必须满足如下条件:1)它必须是与分支指令可置换的,即它不能是决定分支条件的指令,也不能是改变分支地址计算使用的寄存器之值或分支所使用的任何其他资源(如条件代码域)的指令;2)它本身不是分支指令。如果在以该分支指令结束的基本块内部存在若干指令能够填充该分支指令的延迟槽,选择那种延迟时间为一拍的指令;但是如果没有只需一拍的指令,选择延迟最小的指令。在处理一条分支指令时,可以同时关注该分支的目标基本块和紧接着它的后继基本块。如果当前基本块没有可以放置在分支延迟槽中的指令,下一步是构造分支目标基本块和它下面这个基本块的DAG,并尝试找出那种同时作为DAG的根而出现的指令;如果找不到这种指令,接下来就在目标基本块中寻找满足条件的指令。上述的延迟槽填充方法只适用于具有单个分支延迟槽的超标量体系结构。对于具有多个分支延迟槽的VLIW处理器来说,不能较好地填充分支指令的每一个延迟槽以及其他的空闲节拍。因此,这种方法不能较好地对这类处理器提高以无条件分支指令结束的基本块内指令的执行效率,难以充分发挥硬件的性能。
技术实现思路
为解决上述现有技术存在的问题,本专利技术的目的在于提供用跳转目标基本块的执行包填充空闲节拍的指令调度方法,针对基本块调度得到的执行包序列,进一步使用无条件跳转目标基本块内的执行包来填充该序列内的空闲节拍。本专利技术的方法通过合理地从目标基本块内
选择具有有效指令的执行包来填充当前基本块的无条件跳转指令延迟槽以及基本块内的空闲节拍,使得执行基本块指令过程中的空转时间减少,同时减少分支目标基本块的执行时间,达到提高代码执行效率的目的。为达到上述目的,本专利技术的技术方案为:用跳转目标基本块的执行包填充空闲节拍的指令调度方法,包括如下步骤:步骤一,在代码流图中找出与进行跨基本块选择执行包填充空闲节拍操作有关的目标基本块对;步骤二,对跳转目标基本块内的指令执行包进行前驱执行包判定,即判定该执行包内各指令所依赖的其他指令,即被依赖指令所在的执行包及其位置,并根据指令之间的依赖关系确定该执行包的可执行最早时间对应的节拍;步骤三,根据各个指令执行包可执行最早时间对应的节拍与基本块内空闲节拍的位置关系,计算出各指令执行包各自对应的可填充最早时间,移动这些执行包到对应的空闲节拍处,完成填充。进一步的,所述步骤一中,本方法对应的处理是在已经完成了基本块调度并形成了各基本块的执行包序列的基础上进行的;因此,在初始时刻,基本块内的指令已经被分派到执行包序列中的各个执行包内;进一步的,确定步骤一中基本块对的处理包括以下基本流程:1)找到含有无条件跳转指令的基本块B1,且B1中有空闲节拍;2)找到B1中的跳转指令的跳转目标基本块B2,并要求B2内第一个执行包中不包含跳转指令;3)判断B1是否是B2的唯一前驱基本块,B2是否是B1的唯一后继基本块;若条件满足,则表示发现了可进行跨基本块填充空闲节拍的一对基本块;进一步的,步骤二中目标基本块内执行包的前驱执行包判定具体为:如果指令I2必须在指令I1执行完之后才能执行,则称I1为I2的前驱指令。如果I2在执行包E2内,I1在执行包E1内,则称E1为E2的前驱执行包,即E2必须在E1之后执行。这种判定处理的主要方法是:1)判断目标基本块内的各指令执行包是否有前驱执行包;2)若存在前驱执行包,则通过该执行包与前驱执行包中各指令之间的数据依赖关系,计算该执行包的可执行最早时间,然后根据执行包的可执行最早时间对应的节拍与B1内空闲节拍的位置关系确定当前执行包的可填充最早时间;3)若不存在前驱执行包,则该执行包可插入到B1内的第一个空闲节拍。进一步的,所述步骤三中,执行包的可填充最早时间确定方法包括以下内容:1)确定B1中所有空闲节拍在基本块中的位置;2)对于跳转目标基本块中的某个执行包,在完成其前驱执行包判定、得到其可执行最早时间以后,判断其可填充最早时间对应的节拍时分三种情况处理:若其可执行最早时间在基本块内第一个空闲节拍之前,则可填充最早时间为第一个空闲节拍;若其可执行最早时间在基本块内第一个空闲节拍和最后一个空闲节拍之间,则可填充最早
时间为该执行包可执行最早时间之后的第一个空闲节拍;若其可执行最早时间在基本块内最后一个空闲节拍之后,则当前执行包不可以用来填充。相对于现有技术,本专利技术的有益效果为:本专利技术的使用无条件跳转目标基本块的执行包填充基本块内空闲节拍的方法考虑了代码在进行了基本块调度之后仍然可能存在部分可填充空闲节拍的问题。通过本方法可以使用无条件跳转目标基本块内的执行包同时对无条件跳转指令延迟槽和基本块内的其它空闲节拍进行填充。跨基本块进行执行包调度实际是增加了指令的调度域,给调度提供了更多改善代码的机会。附图说明图1为计算目标基本块内某个执行包的可执行最早时间的过程图。图中T为指令I与前驱指令inst之间必须的延迟时间;P为包含前驱指令inst的执行包所在的节拍编号,基本块内第一个执行包的P值为1。由于执行包中一条指令可能有多条前驱指令,所以可能有多个T+P的值,可执行最早时间为该指令对应的那些T+P值中最大的那个值。对目标基本块中某个执行包中的每条指令计算可执行最早时间,即找出该执行包中每条指令的最大T+P值;其中最大的那个可执行最早时间T+P的值就是该执行包的可执行最早时间。图2为选择执行包填充空闲节拍的状态转换图,计算目标基本块内执行包的最早可填充时间的状态转换。根据该图的各个状态以及相互之间的转换可实现一个确定有限状态自动机来判定目标基本块内各执行包的最早可填充时间。其中B1是B2的唯一前驱,B2是B1的唯一后继。Br指令表示无条件跳转指令。其他说明如下:1)ETime表示一个执行包的可执行最早时间所在的节拍号;2)FTime是一个执行包的可填充最早时间所在的节拍号;3)P[n]为基本块内所有空闲节拍的序列;4)P[1]为基本块内的第一个空闲节拍的节拍号;5)P[i]为基本块内第i个空闲节拍;6)EP为执行包可执行最早时间ET本文档来自技高网
...

【技术保护点】
用跳转目标基本块的执行包填充空闲节拍的指令调度方法,其特征在于,包括如下步骤:步骤一,在代码流图中找出与进行跨基本块选择执行包填充空闲节拍操作有关的目标基本块对;步骤二,对跳转目标基本块内的指令执行包进行前驱执行包判定,即判定该执行包内各指令所依赖的其他指令,即被依赖指令所在的执行包及其位置,并根据指令之间的依赖关系确定该执行包的可执行最早时间对应的节拍;步骤三,根据各个指令执行包可执行最早时间对应的节拍与基本块内空闲节拍的位置关系,计算出各指令执行包各自对应的可填充最早时间,移动这些执行包到对应的空闲节拍处,完成填充。

【技术特征摘要】
1.用跳转目标基本块的执行包填充空闲节拍的指令调度方法,其特征在于,包括如下步骤:步骤一,在代码流图中找出与进行跨基本块选择执行包填充空闲节拍操作有关的目标基本块对;步骤二,对跳转目标基本块内的指令执行包进行前驱执行包判定,即判定该执行包内各指令所依赖的其他指令,即被依赖指令所在的执行包及其位置,并根据指令之间的依赖关系确定该执行包的可执行最早时间对应的节拍;步骤三,根据各个指令执行包可执行最早时间对应的节拍与基本块内空闲节拍的位置关系,计算出各指令执行包各自对应的可填充最早时间,移动这些执行包到对应的空闲节拍处,完成填充。2.根据权利要求1所述的方法,其特征在于,所述步骤一中,本方法对应的处理是在已经完成了基本块调度并形成了各基本块的执行包序列的基础上进行的;因此,在初始时刻,基本块内的指令已经被分派到执行包序列中的各个执行包内。3.根据权利要求1所述的方法,其特征在于,确定步骤一中基本块的处理包括以下基本流程:1)找到含有无条件跳转指令的基本块B1,且B1中有空闲节拍;2)找到B1中的跳转指令的跳转目标基本块B2,并要求B2内第一个执行包中不包含跳转指令;3)判断B1是否是B2的唯一前驱基本块,B2是否是B1的唯一后继基本块;若条件满足,则表示发现了可进行跨基本块填充空闲节拍的一对基本块。4.根据权利要求1所述的方法,其特...

【专利技术属性】
技术研发人员:胡勇华黄文体李国辉邱亚琼
申请(专利权)人:湖南科技大学
类型:发明
国别省市:湖南;43

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

1