一种面向VLIW体系结构的多元启发式指令选择方法技术

技术编号:11572596 阅读:84 留言:0更新日期:2015-06-10 03:19
本发明专利技术公开一种面向VLIW体系结构的多元启发式指令选择方法,步骤包括:1)获取各功能单元的候选指令集中所有可发射指令,可发射指令为所有其数据依赖指令均已执行完的指令;2)分别计算各功能单元中每条可发射指令对应的多个启发量,启发量包括指令与依赖指令之间的依赖关系量、指令与处理单元之间的关系量以及指令与功能单元之间的关系量;3)对各功能单元中的可发射指令执行多次排序,每次排序时按照优先级顺序选择一个启发量作为排序比较量,得到排序后的可发射指令序列作为指令选择对象。本发明专利技术针对VLIW体系结构的特性,充分考虑了指令与处理单元之间的硬件特性以及数据与功能单元的关联性,具有指令选择合理、并行度高的优点。

【技术实现步骤摘要】
一种面向VLIW体系结构的多元启发式指令选择方法
本专利技术涉及VLIW(VeryLongInstructionWord,超长指令字)体系结构的编译优化
,尤其涉及一种面向VLIW体系结构的多元启发式指令选择方法。
技术介绍
基本块调度是提高代码的指令级并行度的重要处理过程之一,它在保证产生相同结果的前提下,通过重新安排指令的执行顺序来充分发挥硬件的性能,因而是流水线体系结构或者多功能单元的超长指令字体系结构中提高代码执行效率的重要途径。对于流水线体系结构,基本块调度通常是采用表调度方法,采用该方法在调度过程中,需要维持2个序列:一是已经调度过(被发射)的结点序列Scheds;二是每一个时间点的候选指令集合Cands。候选指令集合Cands有两个子集:一是到基本块末尾具有最大延迟时间的第一候选指令集合ACands;二是第一候选指令集合ACands中最早开始时间小于或等于等于当前时间的第二候选指令集合BCands。基于表调度方法对基本块的指令进行重排的流程如下:1)获得各指令到基本块末尾的最大可能延迟;2)从基本块的无环有向图(DirectedAcyclicGraph,DAG)的根结点向叶结点方向遍历,找出候选指令集合Cands;3)从候选指令集合Cands中找到到达基本块末尾具有最大延迟时间的指令到第一候选指令集合ACands;4)从ACands中选择合适的指令到已经调度过的结点序列Scheds;5)反复进行2)、3)、4)三个步骤的处理直到基本块内的所有指令全部都到已经调度过的结点序列Scheds中,已经调度过的结点序列Scheds中的指令顺序即指令重排后的指令顺序。在基本块调度中,影响指令重排结果的核心因素是每一个时间点的指令的选择。在表调度方法中,具体就是从候选指令集合Cands中的选择指令。然而,当第一候选指令集合ACands中的指令数量大于1时,则存在具体选择哪条指令的问题。目前对于解决指令选择的问题有一些启发式策略,例如:策略一:从第一候选指令集合ACands中选择延迟时间最大或具有最小ETime的结点n,其中ETime是为了避免停顿该结点应当被调度的最早时间;策略二:如果体系结构有多条流水线,并且每条流水线都有若干候选结点,则优先选择最近没有为它调度指令的那些流水线上的候选结点;策略三:优先选择那些在选择之后能使新产生的候选指令集合Cands的元素个数最大的指令。上述三种策略对于功能单元丰富的流向量超长指令字处理器而言,一方面没有考虑处理器内标量处理单元和向量处理单元的区分;另一方面没有考虑指令间数据依赖关系所隐含的相应功能单元之间的关联性,因此其均不适用于在VLIW体系结构中进行较好的指令选择。由于流向量超长指令字处理器具有超标量机器的特征,因此目前对于超标量系统,指令调度还存在通过使用成组启发式的贪婪法来实现的策略。该贪婪法是尽可能地用就绪指令填充有效指令槽实现,具体方法是:假设所考虑的处理机有n个可并行执行的部件P1...Pn,并且每一个部件Pi可以执行类别为PClass(i)的指令,用表调度算法中所用的数据结构的n个副本来模拟这些功能部件,并由IClass函数确定具体指令inst所对应的类别,当且仅当PClass(i)=IClass(inst)时指令inst能够由执行部件Pi执行。但该贪婪方法是从在表调度方法的基础上修改而来的,其仍然没有考虑处理器内处理单元与指令之间的硬件特性,以及指令间数据依赖关系所隐含的功能单元之间的关联性。综上所述,上述指令选择策略对于流向量VLIW处理器均不能较好地反映代码与功能单元之间的关联关系,也不能反映代码在处理器上一段时间内的执行特征,因此无法充分地发掘VLIW类处理器中指令的并行性,同时难以充分发挥硬件的性能。
技术实现思路
本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种实现方法简单、指令选择合理且并行度高的面向VLIW体系结构的多元启发式指令选择方法,能够针对VLIW体系结构的特性,充分考虑指令与处理单元之间的硬件特性以及数据与功能单元的关联性。为解决上述技术问题,本专利技术提出的技术方案为:一种面向VLIW体系结构的多元启发式指令选择方法,步骤包括:1)获取各功能单元的候选指令集中所有可发射指令,所述可发射指令为所有数据依赖指令均已执行完的指令;2)分别计算各功能单元中每条可发射指令对应的多个启发量,所述启发量包括指令与依赖指令之间的依赖关系量、指令与处理单元之间的关系量以及指令与功能单元之间的关系量;3)对各功能单元中的可发射指令执行多次排序,每次排序时按照优先级顺序选择一个启发量作为排序比较量,得到排序后的可发射指令序列作为指令选择对象。作为本专利技术的进一步改进,所述步骤3)中每个功能单元的可发射指令执行多次排序的具体实施步骤为:3.1)取目标功能单元中所有可发射指令作为当前排序序列,并选择优先级最高的启发量作为当前启发量,转入执行步骤3.2);3.2)将可发射指令根据当前启发量的值进行排序,对排序后的指令按照启发量的值分为多个指令子序列,得到排序后的多个指令子序列;3.3)取所述步骤3.2)得到的排序后的多个指令子序列中最优启发量值对应的最优指令子序列作为当前排序序列,并选择优先级为下一级的启发量作为当前启发量,返回执行步骤3.2),直至完成根据所有启发量进行的排序。作为本专利技术的进一步改进,所述步骤2)中指令与处理单元之间的关系量具体包括:目标指令中与目标指令对应不同处理单元的数据依赖指令数所对应的第一处理单元关系量,以及目标指令中是由标量处理单元或向量处理单元的通道寄存器引起数据依赖的数据依赖指令数所对应的第二处理单元关系量;所述步骤2)中启发量包括对应所述第一处理单元关系量的另类处理单元依赖指令启发量、对应所述第二处理单元关系量的通道寄存器依赖指令启发量。作为本专利技术的进一步改进,所述步骤2)中指令与功能单元之间的关系量具体包括:目标指令的数据依赖指令对应的所有功能单元数所对应的第一功能单元关系量,以及目标指令的数据依赖指令对应的所有功能单元中下拍空闲的功能单元数所对应的第二功能单元关系量,以及目标指令中与目标指令对应不同功能单元的数据依赖指令数所对应的第三功能单元关系量;所述步骤1)中启发量还包括对应所述第一功能单元关系量的关联功能单元启发量、对应所述第二功能单元关系量的下拍空闲关联功能单元启发量、以及对应所述第三功能单元关系量的另类功能单元依赖指令启发量。作为本专利技术的进一步改进,所述步骤2)中指令与依赖指令之间的依赖关系量具体是指目标指令的所有数据依赖指令数;所述步骤2)中启发量还包括对应所述数据依赖指令数的依赖指令启发量。作为本专利技术的进一步改进:所述步骤2)中启发量还包括指令本身执行特性启发量,所述指令本身执行特性启发量为执行目标指令所需的节拍数。作为本专利技术的进一步改进:所述步骤3)中各启发量的优先级顺序从高到低依次为:另类处理单元依赖指令启发量、通道寄存器依赖指令启发量、下拍空闲关联功能单元启发量、关联功能单元启发量、另类功能单元依赖指令启发量、依赖指令启发量以及指令执行节拍数。作为本专利技术的进一步改进,所述步骤1)中还包括获取资源状态表步骤,具体实施步骤为:获取目标基本块中当前节拍以及当前节拍本文档来自技高网
...
一种面向VLIW体系结构的多元启发式指令选择方法

【技术保护点】
一种面向VLIW体系结构的多元启发式指令选择方法,其特征在于,步骤包括:1)获取各功能单元的候选指令集中所有可发射指令,所述可发射指令为所有数据依赖指令均已执行完的指令;2)分别计算各功能单元中每条可发射指令对应的多个启发量,所述启发量包括指令与依赖指令之间的依赖关系量、指令与处理单元之间的关系量以及指令与功能单元之间的关系量;3)对各功能单元中的可发射指令执行多次排序,每次排序时按照各所述启发量的优先级顺序选择其中一个启发量作为排序比较量,得到排序后的可发射指令序列作为指令选择对象。

【技术特征摘要】
1.一种面向VLIW体系结构的多元启发式指令选择方法,其特征在于,步骤包括:1)获取各功能单元的候选指令集中所有可发射指令,所述可发射指令为所有数据依赖指令均已执行完的指令;2)分别计算各功能单元中每条可发射指令对应的多个启发量,所述启发量包括指令与依赖指令之间的依赖关系量、指令与处理单元之间的关系量以及指令与功能单元之间的关系量;3)对各功能单元中的可发射指令执行多次排序,每次排序时按照各所述启发量的优先级顺序选择其中一个启发量作为排序比较量,得到排序后的可发射指令序列作为指令选择对象;所述步骤3)中每个功能单元中的可发射指令执行多次排序的具体实施步骤为:3.1)取目标功能单元中所有可发射指令作为当前排序序列,并选择优先级最高的启发量作为当前启发量,转入执行步骤3.2);3.2)将可发射指令根据当前启发量的值进行排序,对排序后的指令按照启发量的值分为多个指令子序列,得到排序后的多个指令子序列;3.3)取所述步骤3.2)得到的排序后的多个指令子序列中最优启发量对应的最优指令子序列作为当前排序序列,并选择优先级为下一级的启发量作为当前启发量,返回执行步骤3.2),直至完成根据所有启发量进行的排序。2.根据权利要求1所述的面向VLIW体系结构的多元启发式指令选择方法,其特征在于,所述步骤2)中指令与处理单元之间的关系量具体包括:目标指令中与目标指令对应不同处理单元的数据依赖指令数所对应的第一处理单元关系量,以及目标指令中是由标量处理单元或向量处理单元的通道寄存器引起数据依赖的数据依赖指令数所对应的第二处理单元关系量;所述步骤2)中启发量还包括对应所述第一处理单元关系量的另类处理单元依赖指令启发量、对应所述第二处理单元关系量的通道寄存器依赖指令启发量。3.根据权利要求2所述的面向VLIW体系结构的多元启发式指令选择方法,其特征在于,所述步骤2)中指令与功能单元之间的关系量具体包括:目标指令的数据依赖指令对应的所有功能单元数所对应的第一功能单元关系量,以及目标指令的数据依赖指令对应的所有功能单元中下拍空闲的功能单元数所对应的第二功能单元关系量,以及目标指令中与目标指令对应不同功能单元的数据依赖指令数所对应的第三功能单元关系量;所述步骤2)中启发量还包括对应所述第一功能单元关系量的关联功能单元启发量、对应所述第二功能单元关系量的下拍空闲关联功能单元启发量、以及对应所述第三功能单元关系...

【专利技术属性】
技术研发人员:陈书明胡勇华孙海燕王霁扈啸
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南;43

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

1