改进的指令总线功耗优化策略
改进的指令总线功耗优化策略
针对编译器系统设计和编译中的低功耗优化,基于可重定向编译器,实现在编译器后端对VLIW指令总线进行功耗优化的策略.通过对编译生成的二进制目标码进行横向再调度来减少指令总线上的高低电位切换次数,达到降低系统功耗的目的.对编译后端的软件流水和超块调度两种性能优化策略进行对比实验,表明其优化效果在30% 以上,并且代码的指令级并行性(Instruction Level Parallelism, ILP)与优化效果存在明显的相关性.最后,通过ILP对该策略提出改进,以指令级并行信息指导功耗优化,在功耗优化效果损失不大的前提下,可节省多达20%的算法开销.
匕的信息,
关键词:低功耗优化;重定向编译器;指令调度TP314
A
Improved low-power optimization strategy targeting instruction bus
XU Burong, LI Xi, WEI Lianghui
(Dcpt. of Computer Sci. & Tech., Univ. of Sci. & Tech, of China, Hefei 230027, China)
Abstract : With the design of compiler system and optimization for its low-power in compiling, the low-power optimization strategy for VLIW instruction bus is implemented
in the compiler backend. The strategy reduces the number of
voltage switch on instruction bus by rescheduling the generated binary code in horizon, which leads to system power reduction.
The comparison experiments for software pipeline and super block scheduling are done, which shows that the optimization effect
can be increased by more than 30% and has obvious relation to instruction level parallelism (ILP). At last, an enhancement method for the strategy is proposed based on ILP information.
The statistics shows that the cost saved can reach up to 20%.
Key words: low-power optimization: retargetable compiler; instruction scheduling
计算机功耗
0引言
近年来,随着计算机系统应用的普及,低功耗设计问题成为系统设计中关注的重点.在高性能计算领域,功耗问题也同样突出.因此,除了对代码的规模和执行性能优化之外,通过优化减少设备的功耗消耗,对于VLIW体系结构的一些高性能计算机系统而言,也是非常重要的研究方向.
目前,己经存在许多功耗优化方面的技术,例如:利用可变电压和
可变频率降低系统的静态功耗[1];通过存选择地关闭系统中暂时不用
的部件来减少系统的功耗[2];还有通过对总线上数据重编码[3]、对控制逻辑信号进行重新编码[4]等方法来降低系统的动态功耗等.其中,在编译阶段对生成代码进行性能优化的同时引入功耗优化,也是一个重要途径.
本文的研究基于可重定向编译研宄平台Tr i mar an [5]. Trimaran 是个参数化的重定向编译底层平台,主要由前端IMPACT和后端EL⑶R 组成,当前主要针对EPIC[6]结构,这是Intel提出的一种VLIW体系
结构.
由于总线功耗在芯片总功耗中占有较大份额,因此,以指令总线为功耗优化对象,实现在编译后端针对指令总线高低电位切换进行功耗优化的策略,并结合Trimaran后端的软件流水和超块(SUPER BLOCK) 调度这两种性能优化策略进行大量的对比实验和细致分析.实验表明,该功耗优化策略可以有效优化指令
总线上的翻转,并且代码的指令级并行性对该功耗优化效果有明显导向性作用.最后,基于分析结果,提出进一步的改进方案,以指令级并行信息指导功耗优化,从而在功耗优化效果损
失不大的前提下,节省大量算法幵销.
1针对指令总线的功耗优化
1.1功耗模型
CMOS电路中部件的功耗主要由3个部分组成:短路功耗、静态功耗和动态功耗.
短路功耗由短路电流形成,在系统层设计时基本不对其进行研宄; 静态功耗巾电源和地之间的漏电流引起,占CPU芯片功耗的2%〜5%; 动态功耗是由门电路开关造成的功耗,它是系统功耗的重要组成部分.
部件的平均动态功耗可以表示为
式中:c为电容,是线长和晶体管尺寸的函数;V为供电电压;f 为时钟频率;D为活动因子,指线路切换的平均频度.
活动因子D表明电路的功耗与电路状态的变化密切相关.每个输入向量都对应一种电路状态,若输入保持
不变,电路的状态也将保持不变,当输入发生切换就可能引起电路状态的切换.因此,电路功耗对输入向量的变化表现出强烈的数据依赖性.它不仅与当前的输入向量有关,更主要的是巾相邻两个输入向量决定.
以上对功耗方程的分析说明,器件功耗可以通过减少其电容和活动因子的乘积达到优化.由于总线的承载电容相对较大,并且总线输入向量切换较为频繁,因此总线上的动态功耗占了处理器功耗中较大的份额.例如,DEC Alpha 21064总线上的功耗占了处理器功耗的15%,
Intel 80386总线上的功耗更是占了处理器功耗的30%以上.[7]因此,针对总线的功耗优化是低功耗研究的一个重要方面.1.2针对指令总线的功耗优化策略
基于Trimaran,在编译后端实现二进制代码再调度模块,以降低指令总线上的高低电位翻转从而降低系统功耗.
由可秉定向编译器的机器描述提供每条操作的操作码编码,操作格式以及VLIW指令拼装格式可以得到每条操作的二进制表示,进而得到整个VLIW的二进制表示.
基于每条VLIW指令的二进制表示,采用前后两条指令之间的海明距离估算相邻两条指令在指令总线上的切换次数.
将该完全二分图中边的权值取为原来的负值,便可以采用求完全二分图的最佳匹配算法来到合适的匹配.
以下是对一个基本块或者超级块中的目标码使用该策略的伪码算法.
输入:基本块或者超级块中的n条VLIW指令X[n],每条VLIW指令中有m个操作槽,最多可填充m个操作(Xi,1, Xi,2,…,Xi,m)输出:优化后的基本块或者超级块,VLIW指令中的操作进行横向
重排
Begin
last_insti-X[0]:
for (i=l;i
current instr=X[i]:
bipart_match ( lastlayer_instr, currentlayer_instr );
/*对相邻两条VLIW指令的操作进行最优二分图匹配V

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。