基于模拟器的微处理器微体系结构参数优化方法

文档序号:6635250阅读:168来源:国知局
基于模拟器的微处理器微体系结构参数优化方法
【专利摘要】本发明公开了一种基于模拟器的微处理器微体系结构参数优化方法,其实施步骤如下:构造微处理器的流水线模型,通过模拟器运行目标应用程序获得模拟输出,生成描述目标应用程序在目标微处理器的时钟精确的模拟器上运行的有向无环图作为相关图,产生和修正有向边的权值;分别根据相关图生成关键路径报告、松弛时间报告;以关键路径报告、松弛时间报告为基础,分析微处理器的性能或功耗瓶颈,根据分析结果判断微处理器微体系结构的参数是否需要优化,决定重新执行或者结束退出。本发明够在微处理器微体系结构设计早期对流水线结构、系统资源等微体系结构参数进行快速的设计探索,具有优化细粒度好、性能分析优化效果好、优化快速高效的优点。
【专利说明】基于模拟器的微处理器微体系结构参数优化方法

【技术领域】
[0001]本发明涉及微处理器设计阶段的早期分析微处理器的性能,具体涉及一种基于模拟器的微处理器微体系结构参数优化方法。

【背景技术】
[0002]在设计起始阶段如何确定最优的微体系结构参数组合是项有挑战的工作。这里“最优”指的是针对某种类型的应用程序能够达到最优的性能。能够达到最优的微体系结构参数配置,而且,最优的微体系结构参数组合应该是在执行目标程序时处理器中的各项资源不存在利用率低下和等待时间过长的问题。
[0003]当前在微处理器设计早期进行设计空间探索,一般是通过在时钟精确的模拟器上运行benchmark程序,如SPEC2000,SPEC2006等程序,来获得程序运行的时间,和各项统计信息。模拟器的运行速度比较慢,如在时钟精确的模拟器上运行有代表性的测试程序(如SPEC 2000)来获取性能,往往需要花费若干个星期。而微处理器的设计工期一般都比较紧,在有限的时间内只能对几种微体系结构的参数配置进行试验。此外,模拟器虽然提供了大量的性能统计信息,如Cache失效率,分支预测失效率,取指数,提交指令数等信息,但是这些信息的粒度太粗,很难得出系统瓶颈的具体信息。因此,这种方法的使用非常受限。
[0004]现有技术的通过时钟精确模拟器运行benchmark程序分析结果,进行微处理器设计空间探索的方法存在如下缺陷:第一,通过在模拟器上运行benchmark程序,获得的性能统计信息粒度较粗,无法获得具体程序的细粒度的执行情况。如执行程序的哪段代码耗费的时间最长,是什么原因导致耗费时间长等等细粒度信息,目前是无法通过模拟器的输出而获得的。第二,基于粗粒度的模拟分析结果进行设计空间探索,较为盲目,而且每轮迭代耗费时间长。因此在微处理器设计的早期,如何充分利用时钟精确模拟器进行快速有效的设计空间探索,已经成为一项亟待解决的关键技术问题。


【发明内容】

[0005]本发明要解决的技术问题是:针对现有技术的上述技术问题,提供一种够在微处理器微体系结构设计早期对流水线结构、系统资源等微体系结构参数进行快速的设计探索,优化细粒度好、性能分析优化效果好、优化快速高效的基于模拟器的微处理器微体系结构参数优化方法。
[0006]为了解决上述技术问题,本发明采用的技术方案为:
一种基于模拟器的微处理器微体系结构参数优化方法,其实施步骤如下:
O分析时钟精确的模拟器所描述的处理器微体系结构,构造微处理器的流水线模型;
2)在所述模拟器上运行目标应用程序,获得模拟器的模拟输出;
3 )根据所述流水线模型、模拟输出生成描述目标应用程序在目标微处理器的时钟精确的模拟器上运行的有向无环图作为相关图,产生和修正所述相关图中有向边的权值;
4)计算所述有向无环图的关键路径得到关键路径矩阵,关键路径长度表示当前程序段在该处理器上执行的时间,根据关键路径矩阵列出关键路径所经过的节点,根据关键路径的节点和边的组成、关键路径中每种类型边的数量和延迟之和生成关键路径报告;计算每个节点的每个入边的松弛时间并生成松弛时间报告;
5)以所述关键路径报告、松弛时间报告为基础,分析微处理器在当前微体系结构参数配置下运行目标应用程序的性能瓶颈或功耗瓶颈;
6)根据微处理器在当前微体系结构参数配置下运行目标应用程序的性能瓶颈或功耗瓶颈的分析结果判断微处理器微体系结构的参数是否需要优化,如果需要优化则将微体系结构参数进行调整,并跳转执行步骤I);如果不需要优化,则结束并退出。
[0007]优选地,所述步骤2)中获得模拟器的模拟输出包括:
2.1)在模拟器上运行的目标测试程序的动态指令序列;
2.2)动态指令序列的指令间的相关关系,所述指令间的相关关系包括指令间的数据相关、控制相关和结构相关信息;
2.3)动态指令序列每条指令所使用的功能单元;
2.4)分支指令的分支预测结果;
2.5)每条指令进入每个流水段和离开每个流水段的时间。
[0008]优选地,所述步骤2.2)中的所述数据相关是指流水线中后发射的指令的源操作数是先发射指令的目的操作数,后发射的指令必须要等待先发射的数据相关的指令计算出结果后才能获得源操作数并继续执行;所述控制相关是指流水线中后发射的跳转指令的判断条件是先发射指令的计算结果,后面的跳转指令必须要等待先发射的相关指令计算出结果后才能真正得到解析得出指令流的正确方向;所述结构相关流水线中先发射的指令和后发射的指令使用相同的功能单元或者有限的系统资源。
[0009]优选地,所述步骤3)的详细步骤如下:
3.1)根据所述流水线模型、模拟输出生成描述目标应用程序在目标微处理器的时钟精确的模拟器上运行的有向无环图作为相关图,所述相关图中,每个节点表示底层微操作,所述底层微操作包括取指、译码、重命名、发射、执行和提交,节点之间的边表示各个微操作的顺序关系和触发关系,每个节点的入边表示这个节点所代表的微操作能够被触发所必须满足的条件;针对数据相关的指令对,增加前一条指令的执行段到后一条指令执行段的相关边;针对控制相关的指令对,增加前一条分支指令的执行段到后一条分支目标指令的取指段的相关边;根据取指宽度和提交宽度增加前后指令的取指节点间和提交节点间的相关边;所述相关边的延迟标为I个时钟周期;
3.2)根据所述模拟报告中每个模拟步触发的变迁和变迁被触发的时间,给有向无环图中的对应节点增加属性,属性值为变迁被触发的时间;
3.3)根据每条指令所使用的功能单元类型,更新有向无环图中“执行”流水段对应的节点的出边的延迟为功能单元的延迟或流水级数、其余边的延迟设置为I个时钟周期;
3.4)修正有向无环图的权值;
3.5)生成上述修正权值后的有向无环图的描述矩阵,所述描述矩阵的行和列都是有向无环图的节点,所述描述矩阵中的元素表示节点间有无有向边,如果节点间不存在有向边,则所述元素的权值为零,如果节点间存在有向边,则所述元素的权值为该边的权值。
[0010]优选地,所述步骤3.4)的详细步骤如下: 3.4.1)从有向无环图的节点集中取出一个节点作为当前节点;
3.4.2)获取当前节点的所有入边,得到当前节点的入边集合;
3.4.3)从当前节点的入边集合中取出一个边作为当前边,找出当前边的起点,如果当前节点的触发时间大于或等于当前边的目标触发时间和当前边的权值之和,则赋予当前边的到达节点时间为当前边的目标触发时间和当前边的权值之和;最终,从当前节点所有当前边的到达节点时间中选择最小到达节点时间;
3.4.4)计算当前节点的触发时间和最小到达节点时间之间的差值;
3.4.5)找到当前节点的所有出边,将每条出边的权值在原值的基础上增加当前节点的触发时间和最小到达节点时间之间的差值;
3.4.6)判断有向无环图的节点集中的所有节点是否已经遍历完毕,如果尚未遍历完毕,则从有向无环图的节点集中取出下一个节点作为当前节点,跳转执行步骤3.4.2);如果遍历完毕,则修正有向无环图的权值结束。
[0011]优选地,所述步骤4)的详细步骤如下:
4.1)将所述有向无环图的描述矩阵的所有的权值取反;
4.2)根据所述权值取反后的描述矩阵求解路径长度,从求解得到的路径长度中获取权值为负数的最短路径作为关键路径,所述关键路径的路径长度表示当前程序段在该处理器上执行的时间,根据关键路径的节点和边的组成、关键路径中每种类型边的数量和延迟之和生成关键路径报告;
4.3)根据关键路径矩阵列出关键路径所经过的节点;
4.4)计算每个节点的每个入边的松弛时间并生成松弛时间报告。
[0012]优选地,所述步骤4.2)中求解路径长度的详细步骤如下:
4.2.1)将所述权值取反后的描述矩阵中每个节点压入栈,且分别初始化设置每个节点到计算关键路径的源节点之间的距离为无穷大;
4.2.2)令所述源节点到源节点自身之间的距离为O ;
4.2.3)判断所述栈是否为空,如果栈为空则计算权值为负数的有向无环图的最短路径结束并退出,权值为负数的有向无环图的最短路径作为关键路径,关键路径长度表示当前程序段在该处理器上执行的时间;否则跳转执行步骤4.2.4);
4.2.4)从所述栈中弹出一个节点,判断弹出的节点到所述源节点之间的距离为无穷大是否成立,如果不成立则重新从所述栈中弹出一个节点,直至弹出的节点到源节点之间的距离为无穷大的条件成立;如果成立则跳转执行步骤4.2.5);
4.2.5)获得弹出的节点的所有入边,得到入边集合;
4.2.6)从所述入边集合中取出一个入边作为当前入边,获得当前入边对应的起点;
4.2.7)判断当前入边对应的起点到所述源节点的距离大于弹出的节点到源节点的距离、当前入边的权值两者的和是否成立,如果成立则跳转执行步骤4.2.8);否则,跳转执行步骤 4.2.9);
4.2.8)将当前入边对应的起点到源节点的距离赋值为弹出的节点到源节点的距离、当前入边的权值两者的和,跳转执行步骤4.2.10);
4.2.9)判断当前入边对应的起点是否在所述栈中,如果当前入边对应的起点不在所述栈中,则将当前入边对应的起点压入所述栈中,跳转执行步骤4.2.10);如果当前入边对应的起点在所述栈中,则直接跳转执行步骤4.2.10);
4.2.10)判断所述入边集合中的所有入边是否已经遍历完毕,如果尚未遍历完毕,则跳转执行步骤4.2.6);否则,跳转执行步骤4.2.3)。
[0013]优选地,所述步骤4.4)的详细步骤如下:
4.4.1)获取关键路径的最后一个节点作为当前节点;
4.4.2)获取所述当前节点的所有入边;
4.4.3)判断所述当前节点为关键路径的起点是否成立,如果成立则结束并退出;如果不成立,则跳转执行步骤4.4.4);
4.4.4)针对所述当前节点的每个入边作为当前入边,获得当前入边的起点;
4.4.5)判断所述当前节点的触发时间等于当前入边的起点的触发时间、当前入边的权值两者的和是否成立,如果成立则跳转执行步骤4.4.6);否则,跳转执行步骤4.4.4);
4.4.6)将当前入边的起点作为当前节点,跳转执行步骤4.4.2);
4.4.7)将当前入边的起点的触发时间、当前入边的权值两者求和,将所述当前节点的触发时间减去求和的结果作为所述当前节点的当前入边的松弛时间,跳转执行步骤4.4.4)直至所述当前节点的每个入边的松弛时间都已经进行计算;
4.4.8)生成包含每一个节点的每个入边的松弛时间的松弛时间报告。
[0014]本发明基于模拟器的微处理器微体系结构参数优化方法具有下述优点:
1、本发明能够在微处理器微体系结构设计早期,对流水线结构、系统资源等微体系结构参数进行快速的设计探索。
[0015]2、本发明能够增强时钟精确的模拟器在进行微处理器设计空间探索时的作用,通过在模拟器内增加相关代码,获取指令进入不同流水段的时间点,进而借助图论,构造相关图,计算关键路径,给出细粒度的性能分析结果,具有优化细粒度好的优点。
[0016]3、本发明基于本发明的关键路径分析方法所给出的细粒度的性能分析结果,可以进行具体的性能调优,如修改资源的数目,从而达到资源平衡,获得最大的性价比,具有性能分析优化效果好、优化快速高效的优点。

【专利附图】

【附图说明】
[0017]图1为本发明实施例的方法流程示意图,矩形框表示操作,平行四边形框表示中间数据。
[0018]图2为现有技术微处理器流水线的微体系结构示意图。
[0019]图3为本发明实施例中得到的有向无环图。
[0020]图4为本发明实施例中修正有向无环图的权值的流程示意图。
[0021]图5为本发明实施例中求解关键路径长度的流程示意图。
[0022]图6为本发明实施例中计算每个节点的每个入边的松弛时间的流程示意图。

【具体实施方式】
[0023]如图1所示,本实施例基于模拟器的微处理器微体系结构参数优化方法的实施步骤如下:
I)分析时钟精确的模拟器所描述的处理器微体系结构,构造微处理器的流水线模型。
[0024]参见图2所示的超标量乱序流水线的微体系结构,该流水线包括6个流水段,分别为取指(fetch)、译码(decode)、重命名(rename)、发射(issue)、执行(exe)和写回(commit),其中执行(exe)包括2个算数逻辑单元(ALU)、1个浮点单元(FP), I个访存单元(load/store)。取指段要访问指令cache,访存段要访问数据cache。重命名段需要申请重命名缓冲。译码段需要读取寄存器文件。分支预测的结果将会影响取指。指令执行的顺序是取指、译码、重命名、发射、执行和写回。图中的箭头简单标识了流水线中数据和指令的流向。构造得到的微处理器的流水线模型描述了流水线的结构:如包含哪些流水段,流水线中各种资源的数量(如流水线站间缓存、取指队列(fetch queue)、重定向缓存(reorderbuffer)的数量),资源的竞争和仲裁策略等。
[0025]2)在模拟器上运行目标应用程序,获得模拟器的模拟输出。
[0026]本实施例中,步骤2)中获得模拟器的模拟输出包括:
2.1)在模拟器上运行的目标测试程序的动态指令序列;
2.2)动态指令序列的指令间的相关关系,指令间的相关关系包括指令间的数据相关、控制相关和结构相关信息;
2.3)动态指令序列每条指令所使用的功能单元;
2.4)分支指令的分支预测结果;
2.5)每条指令进入每个流水段和离开每个流水段的时间。
[0027]本实施例中,步骤2.2)中的数据相关是指流水线中后发射的指令的源操作数是先发射指令的目的操作数,后发射的指令必须要等待先发射的数据相关的指令计算出结果后才能获得源操作数并继续执行;控制相关是指流水线中后发射的跳转指令的判断条件是先发射指令的计算结果,后面的跳转指令必须要等待先发射的相关指令计算出结果后才能真正得到解析得出指令流的正确方向;结构相关流水线中先发射的指令和后发射的指令使用相同的功能单元或者有限的系统资源。以使用相同的功能单元为例,如果功能单元流水,则后发射的指令必须等待先发射的相关指令进入相应功能单元后才能进入功能单元执行,如果功能单元不流水,则后发射的指令必须等待先发射的相关指令使用完功能单元才可使用功能单元;使用有限的系统资源也一样,指令对之间同样也存在竞争关系,后发射的指令必须等待先发射的相关指令使用完有限的系统资源才可使用有限的系统资源。
[0028]3 )根据流水线模型、模拟输出生成描述目标应用程序在目标微处理器的时钟精确的模拟器上运行的有向无环图作为相关图,产生和修正相关图中有向边的权值。
[0029]本实施例中,步骤3)的详细步骤如下:
3.1)根据流水线模型、模拟输出生成描述目标应用程序在目标微处理器的时钟精确的模拟器上运行的有向无环图作为相关图(dependence graph),相关图中,每个节点表示底层微操作,底层微操作包括取指、译码、重命名、发射、执行和提交,节点之间的边表示各个微操作的顺序关系和触发关系,每个节点的入边表示这个节点所代表的微操作能够被触发所必须满足的条件;针对数据相关的指令对,增加前一条指令的执行段到后一条指令执行段的相关边;针对控制相关的指令对,增加前一条分支指令的执行段到后一条分支目标指令的取指段的相关边;根据取指宽度和提交宽度增加前后指令的取指节点间和提交节点间的相关边;相关边的延迟标为I个时钟周期。相关图(dependence graph)是基于增加了本发明相关代码的模拟器或者运行时profiler (记录程序)获取的profile (记录)生成的有向无环图(DAG:Directed Acyclic Graph)。在相关图中,每个节点表示微处理器执行指令时的微操作:如取指、译码、重命名、发射、执行和提交等,节点之间的边表示各个微操作的顺序关系和触发关系。如译码必须在取指之后进行,重命名必须在译码之后进行。这样,每个节点的入边表示这个节点所代表的微操作能够被触发所必须满足的条件,如取指必须满足的条件是上条指令已经取完,且取指队列里面有空闲两个条件;执行必须满足的条件是指令已经发射且需要的功能单元就绪。如果某节点的任何一个触发条件不满足,则必须等待所有条件都就绪才能被触发。本实施例分别在相关图上根据数据相关和控制相关的情况,增加相应的边。数据相关的情况如下:如果指令i的目标寄存器是指令m的源操作数,则称指令m和指令i之间存在相关。如果是数据相关,则增加“数据相关指令对”前一条指令的执行段到后一条指令执行段的相关边。控制相关的情况如下:如果指令i恰好是条被预测错误的分支指令,那么从i的执行节点到i+Ι的取指节点将会有条边,这是因为必须等待分支指令的执行结果才能知道程序的下一条指令的地址。因此如果是控制相关,则增加“控制相关指令对”中前一条指令(分支指令)的执行段到后一条指令(分支目标指令)的取指段的相关边。根据取指宽度和提交宽度增加前后指令的取指节点间和提交节点间的相关边。例如,取指宽度为3,则增加指令η的取指节点指向指令η+3的取指节点的相关边;类似的,如果提交宽度为4,则增加指令η的提交节点指向指令η+4的提交节点的相关边。这种相关边的延迟标为I个时钟周期。本实施例得到的相关图如图3所示,不同类型的箭头表示不同类型的边,详见图例,其中三列分别对应图3中的三条指令,每一行圆形中的字母F表示取指、D表示解压,R表示重命名,I表示发射,E表示执行,C表示写回。。对共享资源的竞争无法使用有向图建模,但有向图可以对发射宽度、译码宽度这类简单的约束进行建模。图中黑色虚线表示的是对宽度约束的建模,以取指宽度为例,如果宽度约束为2,则指令I和指令2同时取指,但是指令3、4必须等待指令1、2的取指结束才能开始。因此从指令I的取指段到指令3的取指段有条边,指令2的取指段到指令4的取指段之间有条边来对这种宽度约束进行建模。
[0030]3.2)根据模拟报告中每个模拟步触发的变迁和变迁被触发的时间,给有向无环图中的对应节点增加属性,属性值为变迁被触发的时间。
[0031]3.3)根据每条指令所使用的功能单元类型,更新有向无环图中“执行”流水段对应的节点的出边的延迟为功能单元的延迟或流水级数、其余边的延迟设置为I个时钟周期。
[0032]3.4)修正有向无环图的权值。
[0033]3.5)生成上述修正权值后的有向无环图的描述矩阵,描述矩阵的行和列都是有向无环图的节点,描述矩阵中的元素表示节点间有无有向边,如果节点间不存在有向边,则元素的权值为零,如果节点间存在有向边,则元素的权值为该边的权值。
[0034]如图4所示,步骤3.4)的详细步骤如下:
3.4.1)从有向无环图的节点集中取出一个节点 ' 作为当前节点;
3.4.2)获取当前节点 ' 的所有入边,得到当前节点的入边集合;
3.4.3)从当前节点的入边集合中取出一个边Eu作为当前边,找出当前边Eu的起点Vi,如果当前节点Eij的触发时间V」, firetime大于或等于当前边的目标触发时间V1.firetime和当前边的权值Eij.weight之和(V」, firetime〉=^^.firetime+Ei」.weight),则赋予当前边的到达节点时间slack[i, j]为当前边的目标触发时间V1.firetime和当前边的权Eij.weight值之和(slack[i, j]= V1.firetime+Eij.weight);最终,从当前节点所有当前边的到达节点时间中选择最小到达节点时间(T=min (slack [j, O], slack [j, I], slack [j, 2],......,
slack[j, k~l]));
3.4.4)计算当前节点的触发时间Vj.firetime和最小到达节点时间T之间的差值X ;
3.4.5)找到当前节点的所有出边,将每条出边的权值在原值的基础上增加当前节点的触发时间Vj.firetime和最小到达节点时间T之间的差值X ;
3.4.6)判断有向无环图的节点集中的所有节点是否已经遍历完毕,如果尚未遍历完毕,则从有向无环图的节点集中取出下一个节点作为当前节点 ',跳转执行步骤3.4.2);如果遍历完毕,则修正有向无环图的权值结束。
[0035]4)计算有向无环图的关键路径得到关键路径矩阵,关键路径长度表示当前程序段在该处理器上执行的时间,根据关键路径矩阵列出关键路径所经过的节点,根据关键路径的节点和边的组成、关键路径中每种类型边的数量和延迟之和生成关键路径报告;计算每个节点的每个入边的松弛时间并生成松弛时间报告。
[0036]本实施例中,步骤4)的详细步骤如下:
4.1)将有向无环图的描述矩阵的所有的权值取反;
4.2)根据权值取反后的描述矩阵求解路径长度,从求解得到的路径长度中获取权值为负数的最短路径(也就是权值为正的有向无环图的最长路径)作为关键路径,关键路径的路径长度表示当前程序段在该处理器上执行的时间,根据关键路径的节点和边的组成、关键路径中每种类型边的数量和延迟之和生成关键路径报告;
4.3)根据关键路径矩阵列出关键路径所经过的节点;
4.4)计算每个节点的每个入边的松弛时间并生成松弛时间报告。
[0037]如图5所示,步骤4.2)中求解路径长度的详细步骤如下:
4.2.1)将权值取反后的描述矩阵中每个节点 ' 压入栈Q,且分别初始化设置每个节点到计算关键路径的源节点之间的距离dist[j]为无穷大infinity ;
4.2.2)令源节点到源节点自身之间的距离为O (dist[s]=0);
4.2.3)判断栈Q是否为空,如果栈Q为空则计算权值为负数的有向无环图的最短路径结束并退出,权值为负数的有向无环图的最短路径作为关键路径,关键路径长度表示当前程序段在该处理器上执行的时间;否则跳转执行步骤4.2.4);
4.2.4)从栈Q中弹出一个节点V」,判断弹出的节点Vj到源节点之间的距离dist[j]为无穷大infinity是否成立,如果不成立则重新从栈Q中弹出一个节点Vj,直至弹出的节点Vj到源节点之间的距离dist[j]为无穷大infinity的条件成立;如果成立则跳转执行步骤4.2.5);
4.2.5)获得弹出的节点Vj的所有入边,得到入边集合neis ;
4.2.6)从入边集合neis中取出一个入边作为当前入边Ek,获得当前入边Ek对应的起点 targetk;
4.2.7)判断当前入边Ek对应的起点targetk到源节点的距离dist [targetj大于弹出的节点到源节点的距离dist [j]、当前入边的权值weights [k]两者的和(dist [targetk]>dist [j] +weights [k])是否成立,如果成立则跳转执行步骤4.2.8);否则,跳转执行步骤4.2.9); 4.2.8)将当前入边对应的起点到源节点的距离dist[targetj赋值为弹出的节点到源节点的距离dist [j]、当前入边的权值weights [k]两者的和(dist [targetj =dist [j]+weights[k]),跳转执行步骤4.2.10);
4.2.9)判断当前入边对应的起点target,是否在栈Q中,如果当前入边对应的起点targetk不在栈Q中,则将当前入边对应的起点targetk压入栈Q中,跳转执行步骤4.2.10);如果当前入边对应的起点在栈Q中,则直接跳转执行步骤4.2.10);
4.2.10)判断入边集合neis中的所有入边是否已经遍历完毕,如果尚未遍历完毕,则跳转执行步骤4.2.6);否则,跳转执行步骤4.2.3)。
[0038]上述步骤4.2.1)?4.2.10)中,s为计算关键路径的源节点;dist 口为每个节点Vj到s的的距离;weights[]为每条边的权值;target为与每个节点Vj有边相连的目标结点;Q为存储节点的堆栈;infinity为无穷大。
[0039]如图6所示,步骤4.4)的详细步骤如下:
4.4.1)获取关键路径的最后一个节点 ' 作为当前节点;
4.4.2)获取当前节点Vj的所有入边;
4.4.3)判断当前节点Vj为关键路径的起点s是否成立,如果成立则结束并退出;如果不成立,则跳转执行步骤4.4.4);
4.4.4)针对当前节点Vj的每个入边作为当前入边Ek,获得当前入边的起点targetk ;4.4.5)判断当前节点的触发时间res[0, j]等于当前入边的起点的触发时间res[0,targetj、当前入边的权值 weights [k]两者的和(res [0,j] == res [O, targetk] +weights[k])是否成立,如果成立则跳转执行步骤4.4.6);否则,跳转执行步骤4.4.7);
4.4.6)打印输出j,将当前入边的起点作为当前节点(j = targetk),跳转执行步骤
4.4.2);
4.4.7)将当前入边的起点的触发时间res[0, targetk]、当前入边的权值weights[k]两者求和,将当前节点的触发时间res[0, j]减去求和的结果(res [O, targetk] +weights [k])作为当前节点的当前入边的松弛时间slacktime [j, k](即slacktime [j, k] =res[0, j]-(res[0, targetk] +weights [k])),跳转执行步骤 4.4.4)直至当前节点的每个入边的松弛时间都已经进行计算;
4.4.8)生成包含每一个节点的每个入边的松弛时间的松弛时间报告。
[0040]上述步骤4.4.1)?4.4.8)中,res[i, j]是节点 Vj 的触发时间;slacktime[j, k]是接点Vj的入边Ek的松她时间;weights[]为每条边的权值;s为关键路径的起点。
[0041]5)以关键路径报告、松弛时间报告为基础,分析微处理器在当前微体系结构参数配置下运行目标应用程序的性能瓶颈或功耗瓶颈;例如可以分析出当前微体系结构存在重命名缓冲配置不足的问题。本实施例中,由于关键路径报告的内容包括:关键路径的节点和边的组成,关键路径中每种类型边的数量和延迟之和。松弛时间报告包括关键路径上每个节点的所有入边松弛时间。根据这些信息,可以获得系统的性能瓶颈。例如,如果从译码段到重命名段这种类型的边数量多且延迟之和大,则表示系统的性能瓶颈可能是缺少足够的重命名资源。松弛时间报告为微体系结构的优化空间提供了参考。
[0042]6)根据微处理器在当前微体系结构参数配置下运行目标应用程序的性能瓶颈或功耗瓶颈的分析结果判断微处理器微体系结构的参数是否需要优化,如果需要优化则将微体系结构参数进行调整,并跳转执行步骤I);如果不需要优化,则结束并退出。本实施例步骤6)根据步骤5)的分析结果改变微处理器的微体系结构参数配置,例如改变流水线结构、改变资源数量、改变功能单元延迟等;然后转入步骤I)从头开始,获得新配置的关键路径长度、组成和松弛事件报告,与之前的设计进行对比,完成微处理器微体系结构的参数优化,从而指导设计空间的探索。
[0043]综上所述,本实施例在微处理器设计阶段的早期分析微处理器的性能瓶颈,通过基于现有的微处理器模拟器在运行应用程序时的输出信息,分析程序执行过程的关键路径和松弛时间,然后基于关键路径和松弛时间的信息,获得系统的性能瓶颈,提出针对系统瓶颈的优化方案,修改微处理器的微体系结构参数配置,进行微处理器的设计空间探索,具有能够在微处理器微体系结构设计早期对流水线结构、系统资源等微体系结构参数进行快速的设计探索,优化细粒度好、性能分析优化效果好、优化快速高效的优点。
[0044]以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种基于模拟器的微处理器微体系结构参数优化方法,其特征在于实施步骤如下: .1)分析时钟精确的模拟器所描述的处理器微体系结构,构造微处理器的流水线模型;.. 2)在所述模拟器上运行目标应用程序,获得模拟器的模拟输出;. 3 )根据所述流水线模型、模拟输出生成描述目标应用程序在目标微处理器的时钟精确的模拟器上运行的有向无环图作为相关图,产生和修正所述相关图中有向边的权值; .4)计算所述有向无环图的关键路径得到关键路径矩阵,关键路径长度表示当前程序段在该处理器上执行的时间,根据关键路径矩阵列出关键路径所经过的节点,根据关键路径的节点和边的组成、关键路径中每种类型边的数量和延迟之和生成关键路径报告;计算每个节点的每个入边的松弛时间并生成松弛时间报告; 5)以所述关键路径报告、松弛时间报告为基础,分析微处理器在当前微体系结构参数配置下运行目标应用程序的性能瓶颈或功耗瓶颈; 6)根据微处理器在当前微体系结构参数配置下运行目标应用程序的性能瓶颈或功耗瓶颈的分析结果判断微处理器微体系结构的参数是否需要优化,如果需要优化则将微体系结构参数进行调整,并跳转执行步骤I);如果不需要优化,则结束并退出。
2.根据权利要求1所述的基于模拟器的微处理器微体系结构参数优化方法,其特征在于,所述步骤2)中获得模拟器的模拟输出包括: .2.1)在模拟器上运行的目标测试程序的动态指令序列; . 2.2)动态指令序列的指令间的相关关系,所述指令间的相关关系包括指令间的数据相关、控制相关和结构相关信息; . 2.3)动态指令序列每条指令所使用的功能单元; . 2.4)分支指令的分支预测结果; .2.5)每条指令进入每个流水段和离开每个流水段的时间。
3.根据权利要求2所述的基于模拟器的微处理器微体系结构参数优化方法,其特征在于:所述步骤2.2)中的所述数据相关是指流水线中后发射的指令的源操作数是先发射指令的目的操作数,后发射的指令必须要等待先发射的数据相关的指令计算出结果后才能获得源操作数并继续执行;所述控制相关是指流水线中后发射的跳转指令的判断条件是先发射指令的计算结果,后面的跳转指令必须要等待先发射的相关指令计算出结果后才能真正得到解析得出指令流的正确方向;所述结构相关流水线中先发射的指令和后发射的指令使用相同的功能单元或者有限的系统资源。
4.根据权利要求1或2或3所述的基于模拟器的微处理器微体系结构参数优化方法,其特征在于,所述步骤3)的详细步骤如下: .3.1)根据所述流水线模型、模拟输出生成描述目标应用程序在目标微处理器的时钟精确的模拟器上运行的有向无环图作为相关图,所述相关图中,每个节点表示底层微操作,所述底层微操作包括取指、译码、重命名、发射、执行和提交,节点之间的边表示各个微操作的顺序关系和触发关系,每个节点的入边表示这个节点所代表的微操作能够被触发所必须满足的条件;针对数据相关的指令对,增加前一条指令的执行段到后一条指令执行段的相关边;针对控制相关的指令对,增加前一条分支指令的执行段到后一条分支目标指令的取指段的相关边;根据取指宽度和提交宽度增加前后指令的取指节点间和提交节点间的相关边;所述相关边的延迟标为I个时钟周期; .3.2)根据所述模拟报告中每个模拟步触发的变迁和变迁被触发的时间,给有向无环图中的对应节点增加属性,属性值为变迁被触发的时间; . 3.3)根据每条指令所使用的功能单元类型,更新有向无环图中“执行”流水段对应的节点的出边的延迟为功能单元的延迟或流水级数、其余边的延迟设置为I个时钟周期; . 3.4)修正有向无环图的权值; .3.5)生成上述修正权值后的有向无环图的描述矩阵,所述描述矩阵的行和列都是有向无环图的节点,所述描述矩阵中的元素表示节点间有无有向边,如果节点间不存在有向边,则所述元素的权值为零,如果节点间存在有向边,则所述元素的权值为该边的权值。
5.根据权利要求4所述的基于模拟器的微处理器微体系结构参数优化方法,其特征在于,所述步骤3.4)的详细步骤如下: .3.4.1)从有向无环图的节点集中取出一个节点作为当前节点; .3.4.2)获取当前节点的所有入边,得到当前节点的入边集合;. 3.4.3)从当前节点的入边集合中取出一个边作为当前边,找出当前边的起点,如果当前节点的触发时间大于或等于当前边的目标触发时间和当前边的权值之和,则赋予当前边的到达节点时间为当前边的目标触发时间和当前边的权值之和;最终,从当前节点所有当前边的到达节点时间中选择最小到达节点时间; . 3.4.4)计算当前节点的触发时间和最小到达节点时间之间的差值; .3.4.5)找到当前节点的所有出边,将每条出边的权值在原值的基础上增加当前节点的触发时间和最小到达节点时间之间的差值; .3.4.6)判断有向无环图的节点集中的所有节点是否已经遍历完毕,如果尚未遍历完毕,则从有向无环图的节点集中取出下一个节点作为当前节点,跳转执行步骤3.4.2);如果遍历完毕,则修正有向无环图的权值结束。
6.根据权利要求5所述的基于模拟器的微处理器微体系结构参数优化方法,其特征在于,所述步骤4)的详细步骤如下: . 4.1)将所述有向无环图的描述矩阵的所有的权值取反; . 4.2)根据所述权值取反后的描述矩阵求解路径长度,从求解得到的路径长度中获取权值为负数的最短路径作为关键路径,所述关键路径的路径长度表示当前程序段在该处理器上执行的时间,根据关键路径的节点和边的组成、关键路径中每种类型边的数量和延迟之和生成关键路径报告; . 4.3)根据关键路径矩阵列出关键路径所经过的节点; . 4.4)计算每个节点的每个入边的松弛时间并生成松弛时间报告。
7.根据权利要求6所述的基于模拟器的微处理器微体系结构参数优化方法,其特征在于,所述步骤4.2)中求解路径长度的详细步骤如下:. 4.2.1)将所述权值取反后的描述矩阵中每个节点压入栈,且分别初始化设置每个节点到计算关键路径的源节点之间的距离为无穷大; . 4.2.2)令所述源节点到源节点自身之间的距离为O ; . 4.2.3)判断所述栈是否为空,如果栈为空则计算权值为负数的有向无环图的最短路径结束并退出,权值为负数的有向无环图的最短路径作为关键路径,关键路径长度表示当前程序段在该处理器上执行的时间;否则跳转执行步骤4.2.4); . 4.2.4)从所述栈中弹出一个节点,判断弹出的节点到所述源节点之间的距离为无穷大是否成立,如果不成立则重新从所述栈中弹出一个节点,直至弹出的节点到源节点之间的距离为无穷大的条件成立;如果成立则跳转执行步骤4.2.5); . 4.2.5)获得弹出的节点的所有入边,得到入边集合; . 4.2.6)从所述入边集合中取出一个入边作为当前入边,获得当前入边对应的起点; . 4.2.7)判断当前入边对应的起点到所述源节点的距离大于弹出的节点到源节点的距离、当前入边的权值两者的和是否成立,如果成立则跳转执行步骤4.2.8);否则,跳转执行步骤 4.2.9); . 4.2.8)将当前入边对应的起点到源节点的距离赋值为弹出的节点到源节点的距离、当前入边的权值两者的和,跳转执行步骤4.2.10); .4.2.9)判断当前入边对应的起点是否在所述栈中,如果当前入边对应的起点不在所述栈中,则将当前入边对应的起点压入所述栈中,跳转执行步骤4.2.10);如果当前入边对应的起点在所述栈中,则直接跳转执行步骤4.2.10); .4.2.10)判断所述入边集合中的所有入边是否已经遍历完毕,如果尚未遍历完毕,则跳转执行步骤4.2.6);否则,跳转执行步骤4.2.3)。
8.根据权利要求6所述的基于模拟器的微处理器微体系结构参数优化方法,其特征在于,所述步骤4.4)的详细步骤如下: .4.4.1)获取关键路径的最后一个节点作为当前节点; . 4.4.2)获取所述当前节点的所有入边; . 4.4.3)判断所述当前节点为关键路径的起点是否成立,如果成立则结束并退出;如果不成立,则跳转执行步骤4.4.4); . 4.4.4)针对所述当前节点的每个入边作为当前入边,获得当前入边的起点; . 4.4.5)判断所述当前节点的触发时间等于当前入边的起点的触发时间、当前入边的权值两者的和是否成立,如果成立则跳转执行步骤4.4.6);否则,跳转执行步骤4.4.4); . 4.4.6)将当前入边的起点作为当前节点,跳转执行步骤4.4.2); . 4.4.7)将当前入边的起点的触发时间、当前入边的权值两者求和,将所述当前节点的触发时间减去求和的结果作为所述当前节点的当前入边的松弛时间,跳转执行步骤4.4.4)直至所述当前节点的每个入边的松弛时间都已经进行计算; . 4.4.8)生成包含每一个节点的每个入边的松弛时间的松弛时间报告。
【文档编号】G06F17/50GK104361183SQ201410673313
【公开日】2015年2月18日 申请日期:2014年11月21日 优先权日:2014年11月21日
【发明者】王永文, 王蕾, 窦强, 邓宇, 赵天磊, 黄立波, 陈微, 隋兵才, 倪小强, 孙彩霞, 张承义, 高军 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1