【技术实现步骤摘要】
适用于多发射处理器指令重排的启发式方法及装置
[0001]本专利技术涉及多发射处理器的软硬件协同
,具体是适用于多发射处理器指令重排的启发式方法及装置。
技术介绍
[0002]在现有国产申威众核处理器平台上,为了获取更高的程序性能表现,从汇编指令层级编写程序代码是一种常用的优化方法。然而,在将已有汇编语言程序迁移至新一代申威处理器时,由于指令集和微结构的变化,原有的汇编指令顺序不能很好的适配新的指令集和微结构,导致程序性能下降,不能充分发挥新一代申威处理器的计算能力。例如,某新型号申威处理器为提高时钟频率,将旧型号处理器上原本只需1个时钟周期完成的特定指令改为3个时钟周期完成。于是针对旧型号处理器编写的汇编程序代码在移植到新型号处理器之后,所有与该特定指令存在依赖关系的指令都需要与之间隔至少2个时钟周期才能发射,由此可能产生的流水线阻塞造成应用程序的性能下降。为了解决多发射处理器微结构变化导致的汇编程序性能下降问题,针对处理器微结构进行指令重排是一种有效的优化方法,其基本原理如图1所示。
[0003]指令重排是为了降低程序的执行时间而对汇编指令进行的排序优化。在基于高级语言编写的程序代码中,指令重排由高级语言编译器后端完成。然而在面向申威处理器平台的汇编语言程序开发中,由于缺少合适的编译优化工具,指令重排必须由人工分析指令依赖、手动进行指令排序,大幅降低了程序的移植优化效率。除此之外,现有高级语言编译器中的指令重排算法也难以应用于申威处理器上,一方面这些编译器无法掌握申威处理器的准确的微结构信息,另一方 ...
【技术保护点】
【技术特征摘要】
1.适用于多发射处理器指令重排的装置,其特征在于包括:输入模块(200)、汇编指令重排装置(100)与输出模块(300)依次相连接;输入模块(200)包括待排序代码块输入模块(210)和微结构/指令集信息输入模块(220),汇编指令重排装置(100)包括微结构/指令集信息处理模块(110)、数据依赖图获取及重排优先级计算模块(120)、功能单元运行模拟模块(130)以及寄存器重命名逻辑模块(140);微结构/指令集信息输入模块(220)的输出与微结构/指令集信息处理模块(110)的输入相连,待排序代码块输入模块(210)的输出与数据依赖图获取及处理模块(121)输入相连,微结构/指令集信息处理模块(110)的输出分别与数据依赖图获取及处理模块(121)和调度优先级获取及处理模块(122)的输入相连,数据依赖图获取及处理模块(121)的输出分别与调度优先级获取及处理模块(122)和广度优先搜索模块(123)的输入相连,调度优先级获取及处理模块(122)的输出和广度优先搜索模块(123)的输入相连,广度优先搜索模块(123)的输出与功能单元记分牌(131)的输入相连,功能单元记分牌(131)的输出和结构冒险判断模块(132)的输入相连,结构冒险判断模块(132)的输出和先读后写/先写后写数据依赖判断模块(141)的输入相连,先读后写/先写后写数据依赖判断模块(141)的输入和寄存器重命名应用模块(142)的输入相连,寄存器重命名应用模块(142)的输出和输出模块(300)的输入相连。2.利用如权利要求1所述的适用于多发射处理器指令重排的装置进行适用于多发射处理器指令重排的启发式方法,其特征在于包括以下步骤:S1、数据准备阶段所述输入模块(200)和微结构/指令集信息处理模块(110)根据指令集信息和功能单元信息获取各指令运行时参数,包括指令格式、指令周期、所用的功能单元相关数据、执行时序相关数据及可用寄存器相关数据;根据指令集与功能单元匹配后的指令信息,匹配到待处理的指令序列中,由指令间的数据依赖关系获取数据依赖图;S2:依赖图处理阶段所述数据依赖图获取及重排优先级计算模块(120)将指令重排问题抽象为图处理问题:将指令之间的数据依赖关系抽象为图中节点之间的边,将每条指令可以发射的最早时钟周期抽象为表征指令的节点与图中起始节点的最长路径长度,将指令序列的执行时间抽象为从图中起始节点到终点的最长路径长度;根据依赖图获取各条指令距离起始指令的最远距离作为该条指令最早能够发射的时钟周期,根据该路径计算各指令的发射优先级;S3:模拟运行阶段功能单元运行模拟模块(130)根据处理器从核微结构模拟程序实际运行过程,保证指令发射过程满足并行发射指令条数、可用功能单元数量、流水线功能限制的约束条件;随时钟周期推移,从节点集合中优先级最高的节点开始,判断当前满足数据依赖的可发射指令,判断可发射指令是否存在功能单元结构冒险,将满足发射条件的指令加入已调度队列,延迟不满足发射条件的指令发射时间,更新当前指令依赖数据,进入下个时钟周期,重复该过程直至所有指令均被加入已调度队列,其中判断结构冒险则是通过最大指令周期个数的记分牌,记录当前各功能单元各阶段的占用情况,记分牌循环覆盖。3.根据权利要求2所述的适用于多发射处理器指令重排的启发式方法,其特征在于:所述数据准备阶段的具体过程为:
S11:通过所述微结构/指令集信息输入模块(220)获取处理器从核微结构信息;S12:通过所述微结构/指令集信息输入模块(220)获取处理器从核指令集信息;S13:在所述微结构/指令集信息处理模块(110)中,将从核微结构信息与处理器从核指令集信息匹配到输入的汇编代码段指令中,并获取或计算出各指令的目的寄存器、源寄存器、地址偏移量,以及自发射至数据可用至少需要的时钟周期数;S14:根据指令间源寄存器和目的寄存器的对应关系,确定指令间的先写后读、先读后写、先写后写三类数据依赖,计算出具有依赖关系的指令间发射至少需要间隔的时钟周期数ins_interval;S15:所述数据依赖图获取及处理模块(121)以节点表示汇编指令,以有向边表示指令间的先写后读依赖关系,获得数据依赖图,其中,从节点A指向节点B的有向边C权重为W,表示:节点B表示指代的指令与节点A表示指代的指令之间存在先写后读数据依赖,至少需要在节点A表示的指令发射后W个时钟周期才可以发射。4.根据权利要求3所述的适用于多发射处理器指令重排的启发式方法,其特征在于:所述依赖图处理阶段的具体过程为:S21:根据所述数据依赖图,所述调度优先级获取及处理模块(122)确定每条指令自起始指令发射后最早可以发射的时钟周期,在数据依赖图中为从数据依赖图起点到该指令节点的最长路径,装置对数据依赖图自起始节点采用广度优先搜索,对当前搜索到的节点i,若其所有存在直接边相连的前序节点都已被搜索到且与当前时钟周期的间隔大于等于对应边的长度,则当前搜索到的起始节点到节点i的路径长度即节点i所代表的指令i自起始指令发射后最早可以发射的时钟周期,否则,表示存在与指令i存在数据依赖的前序指令还未发射或发射间隔不满足约束,指令i不满足发射条件;记录搜索到的每个节点对应的最长路径,若存在相同长度的两条最长路径,则均记录下来;判断最长路径时,设与节点i存在直接边相连的前序顶点j对应的最长路径长度为L
j
,对应的连接边长度为W
ij
,则节点i对应的最长路径长度L
i
=max{L
j
+W
ij
};待所有节点搜索完成后,记录在所有记录的路径中,每个节点所在的最长路径的长度作为调度时的第一优先级,其中路径越长的指令优先级越高;S22:所述调度优先级获取及处理模块(122)根据处理器从核功能单元信息,确定各条指令在两条流水线上分别是否可以发射,以及发射后的执行情况和可用功能单元的数量,记为第二优先级,其中仅能在一条流水线上执行的指令优先级要高于两条流水线上均可执行的指令,可用功能单元数量更少的指令优先级要高于可能功能单元数量更多的指令;对于无法在程序执行之前确定执行行为的功能单元,或无法在程序执行之前确定所用功能单元的指令,在输入信息时,列出所有可能的情况及发生条件,在统计指令可用单元数量以及各时序特征时,按照最差情况计算;S23:所述调度优先级获取及处理模块(122)根据数据依赖图,确定...
【专利技术属性】
技术研发人员:刘鹏,王彤,吴东,张振东,
申请(专利权)人:无锡江南计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。