1、体系结构中低功耗优化策略摘要:随着嵌入式系统的广泛应用,低功耗问题摆在了设计人员面前低功耗设计包括系统设计、硬件设计 软件设计 器件的工艺设计等诸多万面。其中器件的工艺设计主要由半导体器件的厂家来完成,嵌入式系统的应用设计人员只需要关心器件的功耗指标。更多的工作集中于系统的硬件、软件以及它们之间的配合方面。关键字:嵌入式设备 低功耗 优化引言功耗问题是近几年来人们在嵌入式系统的设计中普遍关注的难点与热点,特别是对于电池供电系统,而且大多数嵌入式设备都有体积和质量的约束。降低系统的功耗具有下面的优点:(1)对于电池供电系统,延长电池的寿命,降低用户更换电池的周期,提高系统性能与降低系统开销,甚至
2、能起到保护环境的作用;(2)安全的需要:例如工业现场总线设备的本安 1 要求,实现本安要求的一个重要途径是降低系统的功耗;(3)降低电磁干扰:系统的功耗越低,电磁辐射的能量越小,对其它设备造成的干扰越小,如果所有的电子产品都设计成低功耗的,那么电磁兼容性设计会变得容易;(4)节能:特别是对电池供电系统来说,节能更为重要。对于高性能计算机系统和大型服务器产生了大量的能量消耗.高性能计算机系统往往由大量的处理节点、大规模的存储系统和 I/O 设备构成,消耗了大量能量.能量优化对保证系统可靠运行有重要作用.为了跟踪 Moore 定律 2,计算机产业的支撑技术互补金属氧化物半导体(CMOS)的工艺不断
3、缩放,芯片的能量密度越来越大,这增加了封装和制冷的代价,能量问题成为芯片设计必须解决的问题.大型服务器系统的电力和制冷问题经常是许多结点失效的原因之一.1 本安是一种危险区域的防爆技术,原理是通过限制进入危险区域电路和设备的能量2 1965 年,Intel 公司的缔造者之一 Gordon Moore 在总结存储器芯片的增长规律时,指出“微芯片上集成的晶体管数目每十二个月翻一番”图 1:Pentium 系列处理器能量增长曲线线路层、门层、体系结构层开发了很多方法减少芯片内部的冗余能量消耗,这包括选择适当的晶体管大小,选择低功耗的逻辑风格、多阈值电压、动态电压缩放技术(dynamic voltag
4、e scaling,简称 DVS)、冗余部件关闭技术.动态电压缩放和冗余部件关闭技术是在系统的较高层次完成的节能技术,可以通过硬件方法来实现,同时通过软件来完成部件的管理.早期的软件低功耗管理主要由操作系统完成,操作系统负责将空转的 CPU、内存、磁盘系统等关闭以达到节能的目的.随着硬件技术的发展,产生了一些细粒度的节能技术,例如,关闭 cache 行,关闭多 bank3 内存系统,关闭某些 CPU 部件.完成这些细粒度的控制需要对程序本身的特点有更全面而具体的了解,所以编译指导的低功耗技术得以研究,例如,编译指导的动态电压缩放技术、编译指导的 cache 能量优化、编译指导的适应性处理节点策
5、略、编译指导的内存系统管理策略3 物理 Bank传统内存系统为了保证 CPU 的正常工作,必须一次传输完 CPU 在一个传输周期内所需要的数据。而 CPU在一个传输周期能接受的数据容量就是 CPU 数据总线的位宽,单位是 bit(位) 。当时控制内存与 CPU 之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于 CPU 数据总线的位宽,而这个位宽就称之为物理 Bank(Physical Bank)的位宽1 功耗产生的原因目前的集成电路工艺主要有 TTL 和 CMOS 两大类,无论哪种工艺,电路中只要有电流通过,就会产生功耗。通常,集成电路的功耗分为静态功耗和动态功耗两部分:当电路的状态没有
6、进行翻转(保持高电平或低电平)时,电路的功耗属于静态功耗,其大小等于电路的电压与流过的电流的乘积;动态功耗是电路翻转时产生的功耗,由于电路翻转时存在跳变沿,在电路的翻转瞬间,电流比较大,存在较大的动态功耗。式(1)表示电路的功耗组成:P=V2(?)f(?)C+Pstatic ( 1)其中是静态功耗,是 V 工作电压,是 f 工作频率,是 C 负载电容。?表示式中 V2 与 f 功耗相关的因素越大,功耗越大,但不是线性的。由于目前大多数电路采用 CMOS 工艺,静态功耗很小,可以忽略。起主要作用的是动态功耗,因此降低功耗从降低动态功耗入手。2 体系结构层降低功耗技术系统中的动态能量消耗占主要部分
7、,随着工艺的缩放,泄漏电流的比例逐渐增大.如果不使用任何泄漏控制机制,未来的工艺中动态能量消耗和静态能量消耗比例基本相当.计算机系统是由软件和硬件组成的系统,低功耗问题必须从软件和硬件两方面综合考虑. 计算机系统包括中心处理器、主存和 I/O 设备.一般来说,磁盘设备的能量消耗要比主存和处理器的功耗大几个量级,低功耗的系统往往不使用磁盘系统.内存系统 DRAM 的能量消耗是处理器能量消耗的几十倍到几百倍.处理器内部的动态能量消耗又由时钟系统、数据路径、存储系统和控制 I/O 等组成 .2.1 一些重要的体系结构层降低功耗技术.(1) 动态电压缩放(dynamic voltage scaling
8、,简称 DVS)降低电压系统的动态功耗和电压成二次方关系,降低供应电压可以降低系统的动态功耗,动态电压缩放在系统运行时动态改变电压.一般可以设置几个离散电压值,软件可以根据需求在几个电压值之间进行动态调整.实用的处理器包括 Transmeta Crusoe,Intel Xscale 和 AMD K6 III+.电压切换存在一定的能量开销和时间开销.(2) 时钟门(clock gating)减少切换电容时钟系统的能量消耗占 CPU 总功耗的很大一部分,减少时钟系统的切换电容对总功耗有很大的作用.一种实际有效的方法是划分时钟网络,在每个周期只允许必要的部分进行切换.这通过时钟门来实现.使用时钟门关
9、闭的部件一般不能及时恢复正常状态,并且时钟系统可能产生小故障,这是使用时钟门存在的问题.如何有效地使用时钟门关闭功能部件,如何及时地将关闭的功能部件恢复到正常状态以降低性能损失是软件需要解决的问题.(3) 存储系统减少切换电容CPU 内部的 cache,TLB*,分支缓存占能量消耗的很大部分,DRAM 的功耗又是 CPU 的几十倍,磁盘设备更是重要的能量消耗源.低功耗的存储系统对降低系统功耗有很大作用.除了传统的多运行模式磁盘、内存系统以外,很多新的硬件技术用来解决存储系统的运行时功耗:新的 cache 技术.处理器的发展集成了越来越大的芯片内 cache,大的 cache 造成了大量的能量消
10、耗.在保持程序性能的前提下,功耗最优的 cache 大小和结构随着负载的变化而变化.于是产生了可重配置的 cache1和动态关闭 cache 行的 cache2,这些 cache 设计的主要目的是减少动态切换的电容量,降低功耗.多 bank 的内存结构.为了降低访存的切换电容量,将存储结构划分为多个 bank,每次只访问部分部件,不使用的内存 bank 可以关闭.这些动态的存储系统部件为存储系统的能量优化提出了新问题,如动态 cache 结构下,如何有效利用 cache,保证性能并提高能量效率?采用什么样的方法进行 cache 数据的映射?基于分页的操作系统如何有效利用多 bank 的内存系统
11、?程序如何有效地局部化,利用多个内存 bank降低功耗?(4) 编码和缓存减少切换因子应用中很多计算存在重复部分,可以在功能部件中增加 cache,将计算的结果保存.如果又有同样操作数的计算,则直接使用原来的值.这种方法减少了切换活动,降低了功耗.有些计算使用的操作数不需要很高的精度,低位部分就足够了,这样可以通过一些技术监测冗余的高位部分,避免高位部分的计算以降低功耗3.(5) 泄漏能量减少技术泄漏能量消耗是今后工艺发展面临的重要问题之一,泄漏控制的主要方式有:A. 输入向量控制(IVC)B. 增加阈值电压(MTCMOS,BBC)C. 关闭供应电压(power supply gating,简
12、称 PSG)D. 动态电压缩放缩放内存单元的电压为 1.5 倍的阈值电压,这样内存单元的内容可以保留,同时由于在高性能工艺中的短信道效果,泄漏会随着电压缩放显著减少.对于 0.07m 工艺,睡眠电压近似为0.3V.动态电压缩放方法的能量状态转换很快 ,转换延迟 0.28ns.该方法被使用在 drowsy cache4中.减少泄漏能量的技术是今后低功耗研究的热点,上述各种泄漏控制方式适用于体系结构层,这为编译指导控制泄漏能量消耗提供了可行的途径.* TLB 是一个专用的高速缓冲器,用于存放近期经常使用的页表项,其内容是页表部分内容的一个副本。TLB 也常称为快表或地址变换缓冲器3 开发部件使用的
13、局部性系统中的指令类型是多种多样的,每种指令使用的功能部件或设备都是不同的,以往的任务调度和指令调度策略很少考虑到设备类型的因素.在新的低功耗技术支持下的系统,这些可能是关键的因素.程序执行期间对设备的使用是很复杂的,它可能随时都有启动设备的需求,如果这些设备被过于频繁地访问,考虑到节能策略的时间开销和能量损失,不是任何情况下使用节能方法都会得到收益,尽量集中一类部件或者一个部件的使用,最大化部件使用的间隔具有重要意义,这就是部件使用的局部化。图 2 显示了典型的 PDA 系统各部件间的关系.图 2:典型的 PDA 系统各部件间的关系根据这一概念,我们总结出一些方法用于低功耗编译优化,这些方法
14、可能是早有研究的,也可能是尚未考虑过的.(1) 处理器部件类型局部化和设置恰当的部件数量处理器中存在多种类型的处理部件,程序运行期间,可能使用不同类型的部件.如果在执行指令期间,把使用同种类型部件的指令尽量集中在一起,就可以更有效地使用节能策略.例如,区分使用整数部件和浮点部件的指令.假定有指令序列 i1,f2,i3,f4,其中代表整数指令,f代表浮点指令.如果直接使用上面的调度方法,浮点指令和整数指令相互间隔,我们在运行期间需要对整数部件和浮点部件各进行两次能量等级切换.如果指令不相关,可以调整指令序列为 i1,i3,f2,f4,这样,部件只需要各切换一次,并且增大了切换间隔的时间(指令数)
15、除了集中对部件的使用,还需要设置程序运行需要的恰当的部件数目.在程序运行期间,各种部件类型使用的数目是不同的,并不是总处于供需的平衡状态.我们要使用有效的方法平衡程序需求和部件数量.例如,系统中的取指队列、保留站队列等结构的数量并不总是适当的,我们可以采取一定措施在程序运行期间关闭部分部件.过去在这方面有一些研究工作,例如,W.Zhang 等人5 提出,在存在多种能量模式的 IALU 部件的 VLIW 处理器中,采用编译技术分析程序的特性,将非关键路径上的指令调度到慢速 IALU,以减少系统动态功耗,利用输入向量控制和能量门技术适时关闭和打开部件减少泄漏能量消耗;H.S.Kim 等人6采用编译
16、技术在循环粒度中分析程序的 IPC 值,基于分析结果,动态分配激活的 IALU(整数运算单元)7数量,降低系统泄漏能量消耗.(2) Cache 使用的局部化和设置适当的 cache 行数目Cache 是处理器中能量消耗比例很高的部分,cache 使用的优化对优化系统能量消耗十分重要,需要对 cache 的使用进行局部化.这不单纯是根据 cache 的大小进行一些数据的局部性优化,而是假定在执行期间程序应当使用尽量小的 cache 行数目,然后将剩余的 cache 行关闭.这与传统的基于 cache 的局部性优化存在差别,一些原来的基于循环的优化方法需要一定的修改才能得到更有效的优化效果.设置好
17、 cache 的使用数目,还要考虑 cache 行适时关闭和激活的策略,必须有恰当的 cache 管理方式才能减少引入的时间和能量开销.对于 cache 的优化也存在一些研究,例如,基于循环的粒度,在每个循环结束时用编译方法插入指令关闭指令 cache 行,减少泄漏能量消耗.(3) 内存使用的局部化内存的功耗占系统功耗的很大比例.内存系统能量的优化在很大程度上依赖于程序使用的局部性,对于多带的内存系统和多芯片系统的局部性优化需要进一步研究.例如,对多运行模式、多带的内存系统进行了分析,使用软件策略优化程序的内存布局,降低存储器的活动.(4) I/O 使用的局部化对数据输入输出依赖很强的程序可以
18、考虑进行 I/O 使用的局部化.I/O 局部化的可能方式是采用缓存方法,将大量小规模的 I/O 集中起来,这延长了两组 I/O 的时间,然后可能使用更积极有效的 I/O 节能策略.但是,这也可能造成内存需求的增加 ,必须考虑整体的能量消耗,确定能量的最大收益.例如在应用层和编译层对非交互式应用程序中的 I/O 访问时间进行变换,最大限度地使用内存空间缓存将来使用的数据,通过延长 I/O 的访问间隔来提高磁盘设备可以进行能量管理的比率.(5) 多任务多设备的调度对于运行在多任务环境、存在多种设备的系统,如何使用节能技术?任务的调度需要考虑对部件的使用情况,将集中使用某些部件的任务同时调度,这一般
19、不会影响系统的吞吐量,并可以采取一些更有效的节能技术.4 编译低功耗技术研究的基本方法综上所述,功耗优化要求编译和体系结构密切结合,当设计一种新的体系结构时要充分考虑到对编译时功耗优化支持;在对于一个已有的体系结构,编译要充分利用体系结构的各种硬件特点对应用程序进行尽可能的功耗优化。因此,结合目前的发展趋势,在开展体系结构以及相应的低功耗和编译优化技术的研究工作中。首先要考虑几个问题:(1)我们在设计一种新的体系结构时能否提出一种这样的结构模型,在提高性能的同时,应考虑如何有效支持编译时的功耗优化,在设计技术上要做出那些扩展和权衡?(2)如何在这种新的体系结构模型上研究和实现充分综合开发体系结
20、构并行性以及降低功耗的模型和算法?(3)这种模型对于实际应用程序的性能提高与降低功耗权衡的关键是什么?(4)提出充分发挥体系结构特征的并能达到降低功耗目的的相关编译优化的方法和技术;(5)通过对特选应用实例(如 benchmark)的模拟和分析,评价所提出的结构特征和相应的编译技术;(6)研究和形式化对以上问题的求解策略,并提出有效实现方案;(7)对以上方法进行实现,并开展验证结果的实验研究;很多降低功耗的设计可能导致编译方法由以性能为中心转移到以功耗或以功耗与性能的权衡为中心。因此,需要重新研究:1 LOOP 优化2 过程分析和优化3 软件流水4 指令调度5 寄存器分配等通过这些新的研究来观
21、察性能与功耗的影响,提出有效降低功耗的编译和 runtime 软件技术以及实现方法。参考资料:1 Zhang CJ, Vahid F, Najjar W. A highly configurable cache architecture for embedded systems. In: ACM ed. Proc. of the 30th Annual Intl Symp. on Computer Architecture. New York: ACM Press, 2003. 111.2 Witchel E, Asanovi K. The span cache: Software contr
22、olled tag checks and cache line size. In: IEEE ed. Proc. of the 28th ISCA, Workshop on Complexity-Effective Design. Washington: IEEE Computer Society Press, 2001. 112.3 Brooks D, Martonosi M. Dynamically exploiting narrow width operands to improve processor power and performance. In: IEEE ed. Proc.
23、of the 5th Intl Symp. on High Performance Computer Architecture. Washington: IEEE Computer Society Press, 1999. 110.4 Flautner K, Kim NS, Martin S, Blaauw D, Mudge T. Drowsy caches: Simple techniques for reducing leakage power. In: IEEE, ed. Proc. of the 29th Annual Intl Symp. on Computer Architectu
24、re. Washington: IEEE Computer Society Press, 2002. 148157.5 Zhang W, Vijaykrishnan N, Kandemir M, Irwin MJ, Duarte MJ, Tsai Y-T. Exploiting VLIW schedule slacks for dynamic and leakage energy reduction. In: IEEE, ed. Proc. of the 34th Annual Intl Symp. on Microarchitecture (MICRO-34). Washington: IE
25、EE Computer Society, 2001. 102113.6 Kim HS, Vijaykrishnan N, Kandemir M, Irwin MJ. Adapting instruction level parallelism for optimizing leakage in VLIW architectures. In: ACM, ed. Proc. of the Languages, Compilers, and Tools for Embedded Systems (LCTES 2003). New York: ACM Press, 2003. 275283.7 Mai
26、kel Kokaly-Bannourah 用 VisualDSP+开发 TigerSHARC DSP 多处理器系统简介Analog Devices 公司 DSP 器件和开发工具的使用技术指南 April. 4th. 20038 YI Hui-Zhan YANG Xue-Jun . Energy Efficiency of Microarchitectures In High-Performance Microprocessors. School of Computer Science, National University of Defense Technology9 CHEN Juan,
27、YANG Xuejun. Key Technology on Reducing Memory System Power Dissipation. School of Computer Science, National University of Defense Technology14 ZHAO Rongcai TANG Zhimin. Technology Studies for Low Power at Compiling Optimization Time. Institute of Computing Technology, Chinese Academy of Science, B
28、eijing10 赵荣彩 唐志敏.张兆庆.编译指导的多线程低功耗技术研究 .中国科学院计算技术研究所11 赵荣彩 唐志敏,张兆庆, Guang R. Gao.低功耗多线程编译优化技. 中国科学院计算技术研究所12 Accelent 系统公司Cliff Brake. 基于ARM 的便携式系统的功耗管理13 王丽芳 符意德 纽远. 嵌入式系统程序优化方法的研究 . Journal of Communication and Computer, ISSN1548-7709, USA14 YI Hui-Zhan YANG Xue-Jun . An Effective Method of Low-Power Compilation Optimization: Localizing the Use of System Units. School of Computer Science, National University of Defense Technology