一种降低指令级并行处理器功耗的并行度调整算法的制作方法

文档序号:12271065阅读:631来源:国知局
一种降低指令级并行处理器功耗的并行度调整算法的制作方法与工艺

本发明属于计算机体系结构设计技术领域,涉及一种低功耗设计优化算法。



背景技术:

最近几年,智能手机,可穿戴式智能设备等电子产品迅速发展,几乎每个人都拥有一部电子设备,尽管这些电子设备的出现方便了人们的生活,执行速度可以满足大多数用户的使用需求,但是功耗问题却特别突出,经常会影响设备的性能,可靠性和操作时间;特别在互联网+时代,对于计算机,智能机的性能要求越来越高,提高设备的能量效率越来越有现实意义。

这些电子设备执行速度快主要原因是指令级并行(Instruction Level Parallelism,ILP)处理器结构的应用,该结构使得多条指令可以同时执行。传统的ILP处理器总是用最大的并行度执行不同应用程式,即全部硬件资源同时开启,但是不同的应用程式运行在ILP处理器上时,对于硬件资源(如:功能单元和寄存器)的需求量有很大的差异,甚至在同一支应用程式中,不同的部分在执行的过程中对于硬件资源的需求量差异也很明显,如果利用传统的自始至终ILP处理器都以最大的并行度执行,那么对于硬件资源需求量很小的程式必然会造成额外的资源浪费,这些处于空闲状态的硬件资源必然会引起额外的漏电功耗;特别是晶体管的特征尺寸进入深亚微米级时,漏电功耗急剧增加甚至会超过动态功耗,ILP处理器中这些处于空闲状态的硬件资源产生的如此大的漏电功耗必然会降低处理器工作的性能,进而影响设备的可靠性。

为了降低漏电功耗,电源门控(power gating)技术作为电流开关被广泛应用,即通过把空闲的设备关断来降低漏电功耗。但是目前的研究都只是局限在整支程式在最快执行速度前提下,把那些处于空闲的设备关掉来降低漏电功耗,有的时候用户对于速度并没有那么高的期望,反而功耗问题更加引起他们的注意,所以设计一种可以根据用户对执行时间的要求来“自动的”调整程式执行并行度的算法,进而降低功耗很有现实意义。

Tabkhi于2014年提出的AFReP算法,只是在执行应用程式中每个函数前插入power gating指令,这导致了硬件设备频繁开启,即每进入一个函数都改变一次硬件组态,硬件设备的频繁开启,导致产生很大的额外耗能,总体评估AFReP的节能效果,虽然降低了漏电耗能,但是却产生很大的额外耗能,效果不好;而且AFReP算法只能在执行速度最快的时候降低功耗,并不能根据用户的需要调整并行度,达到一种“自动”的效果,这是该算法的一个缺陷。



技术实现要素:

本发明的目的是克服现有技术的上述不足,提供一种可以根据用户对执行时间的要求来“自动地”调整程式执行并行度的算法,进而降低ILP处理器中处于空闲状态的硬件资源产生的漏电功耗的优化算法,以减小漏电功耗对处理器工作性能的影响,本发明能提高ILP处理器中硬件资源的利用率,并且提高以ILP处理器为核心的设备的可靠性。本发明的技术方案如下:

一种降低指令级并行处理器功耗的并行度调整算法,包括下列步骤:

(1)利用编译器分析输入的应用程式各个部分的硬件资源和并行度需求量信息,并且得到该应用程式的控制流图CFG和循环层次树LHTs;

(2)划分应用程式,把应用程式切割为不同的区域;

(3)根据各个区域硬件资源和并行度的需求量以及能量效率,设置各个区域的执行并行度,使整个程式执行过程中,可以根据执行时间的需求调整和改变并行度,方法如下:

第一步,设置各个区域初始并行度:根据执行时间Tdl寻找执行并行度pi,使得执行时间小于Tdl,并设置各个区域的初始并行度为pi

第二步,寻找能量效率最低的区域,让其并行度减1,能量效率定义为:当区域Ri的并行度从p增加到q时,能量效率EE(Ri,p,q)为节约的执行时间与增加的能量的比值;

第三步,找到所有区域中能量效率最高的区域,让其并行度加1,补偿执行时间的损耗。

(4)编译器重新调度这支程式,每个区域用设置好的并行度进行调度,并在每个区域执行前插入power gating指令,把空闲的硬件资源关断,降低漏电功耗。

该方法在满足预期执行时间的前提下,“自动地”根据执行时间调整并行度,进而降低漏电功耗,使得一支程式不同的程序段采用不同的并行度和硬件组态执行,最终使得ILP处理器漏电功耗降低,提高能量效率。

附图说明

图1编译器工作流程(技术方案)

图2功耗与并行度的关系

图3并行度赋值模型

图4算法优化后程式的并行度执行模式

具体实施方式

本发明,利用相关编译器优化算法,分析应用程式执行时间,硬件需求量,以及并行度的需求量,调整各个区域的并行度,使得ILP处理器在执行不同应用程式时,可以根据执行时间的限制,“自动地”调整并行度,最终使得能量效率最高,漏电功耗最低。

图1展示了编译器在整个方案中工作流程,主要技术方案如下:

(1)利用编译器分析输入的应用程式各个部分的硬件资源和并行度需求量等信息,并且得到该应用程式的控制流图(Control Flow Graph,CFG),循环层次树(Loop Hierarchy Trees,LHTs);

(2)划分应用程式,把应用程式切割为不同的区域;

(3)根据各个区域硬件资源和并行度的需求量以及能量效率,设置各个区域的执行并行度,使整个程式执行过程中,可以根据执行时间的需求,“自动地”调整和改变并行度,与自始至终都采取统一的并行度模式相比,硬件资源利用率和能量效率提高,并且满足执行时间的要求;主要分为以下三步:

第一步,设置各个区域初始并行度。根据执行时间Tdl寻找执行并行度pi,使得执行时间小于Tdl,并设置各个区域的初始并行度为pi

第二步,寻找能量效率最低的区域,让其并行度减1。能量效率定义为:当区域Ri的并行度从p增加到q时,能量效率EE(Ri,p,q)为节约的执行时间与增加的能量的比值。

(其中,T(Ri,p)和T(Ri,q)分别为区域Ri在并行度为p和q时的执行时间,E(Ri,p)和E(Ri,q)分别为区域Ri在并行度为p和q时消耗的能量)

第三步,补偿上一步中执行时间的损耗。找到所有区域中能量效率最高的区域,让其并行度加1,补偿执行时间的损耗。

(4)编译器重新调度这支程式,每个区域用设置好的并行度进行调度,并在每个区域执行前插入power gating指令,把空闲的硬件资源关断,降低漏电功耗。

下面结合实施例对本发明进行说明。

(1)输入应用程式,编译器首先把它转换为中间语言的字节码,然后利用编译器的优化工具,提取出这段应用程式的控制流图(control flow graph,CFG),并且分析这段程式在各个并行度下的执行时间和对于硬件资源的需求量。

(2)划分应用程式,可以按程式中循环划分,也可以按程式中的函数划分为若干个区块。

(3)设置区域并行度。由于每个区域的功耗随着并行度的增加,都会呈现图2所示的趋势,随着并行度增加,功耗不断增加,所以可以通过适当的降低并行度,而使更多的硬件设备空闲下来,并且利用power gating技术关断,降低漏电耗能。

表1给出了需要的参数,该阶段的主要目的是找到一种解决方案(其中,Ri为某个划分的区域,pi为设置的并行度,m为区域的个数),使得最终执行时间TEX(S)满足Tdl,而且消耗的能量EEX(S)最小,图3为最终整只程式的设置并行度模型。公式(1)和公式(2)分别给出了TEX(S)和EEX(S)的计算方法:

表1参数说明

设置并行度的算法的伪代码为algorithm1和algorithm2,该算法为一种贪心式启发法,主要分为以下三步:

第一步,为了满足执行时间Tdl,先初始化S,即找到一个统一的并行度pi,设置各个区域Ri都为这个统一的并行度,;

第二步,为了获得最高的能量效率,先选择此时最低能量效率的区域Ra,并且把它的并行度pa减小1;

第三步,第二步中并行度的降低必然会导致执行时间的增加,为了补偿执行时间的损耗,选择具有最高能量效率的区域Rk,并且把它的并行度pk增加1;

(4)设置好并行度之后,用编译器重新调度这支程式,在应用程式划分的每个区域执行前插入power gating指令,控制硬件设备的开启和关断,降低漏电耗能,提高资源利用率。图4为经过算法优化后,整个程式执行过程中的执行并行度,可以看到并行度在程式执行的过程中是不断变化的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1