关键词:VLSI SoC CMOS集成电路 低功耗设计
引言 从20世纪80年代初到90年代初的10年里,微电子领域的很多研究工作都集中到了数字系统速度的提高上,现如今的技术拥有的计算能力能够使强大的个人工作站、复杂实时语音和图像识别的多媒体计算机的实现成为可能。高速的计算能力对于百姓大众来说是触指可及的,不像早些年代那样只为少数人服务。另外,用户希望在任何地方都能访问到这种计算能力,而不是被一个有线的物理网络所束缚。便携能力对产品的尺寸、重量和功耗加上严格的要求。由于传统的镍铬电池每磅仅能提供20W.h的能量,因而功耗就变得尤为重要。电池技术正在改进,每5年最大能将电池的性能提高30%,然而其不可能在短期内显著地解决现在正遇到的功耗问题。 虽然传统可便携数字应用的支柱技术已经成功地用于低功耗、低性能的产品上,诸如电子手表、袖珍计算器等等,但是有很多低功耗、高性能可便携的应用一直在增长。例如,笔记本计算机就代表了计算机工业里增长最快的部分。它们要求与桌上计算机一样具有同样的计算能力。同样的要求在个人通信领域也正在迅速地发展,如采用了复杂语音编解码算法和无线电调制解调器的带袖珍通信终端的新一代数字蜂窝网。已提出的未来个人通信服务PCS(Personal Communication Services)应用对这些要求尤其明显,通用可便携多媒体服务是要支持完整的数字语音和图像辨别处理的。在这些应用中,不仅语音,而且数据也要能在无线链路上传输。这就为实现任何人在任何地方的任何时间开展任何想要的业务提供了可能。但是,花在对语音、图像的压缩和解压上的功耗就必须附加在这些可便携的终端上。确实,可便携能力已经不再明显地和低性能联系在一起了;相反,高性能且可便携的应用正在逐步得到实现。 当功率可以在非便携环境中获得时,低功耗设计的总理也变得十分关键。直到现在,由于大的封装、散热片和风扇能够轻而易举地散掉芯片和系统所产生的热,其功耗还未引起多大的重视。然而,随着芯片和系统尺寸持续地增加,要提供充分的散热能力就必须付出重要代价,或使所提供的总体功能达到极限时,设计高性能、低功耗数字系统方法的需求就会变得更为显著。幸好,现在已经发展了许多技术来克服这些矛盾。 由于可以高度集成,并具有低功耗、输入电流小、连接方便和具有比例性等性质,CMOS逻辑电路被认为是现今最通用的大规模集成电路技术。下面研究CMOS集成电路的功耗组成,概述实现集成电路——SoC(System on Chip)系统的低功耗设计的诸多方法。目的在于揭示当今电子系统结构复杂度、速度和其功耗的内在联系,在及在数字电子系统设计方向上潜在的启示。 1 CMOS集成电路功耗的物理源 要研究SoC的低功耗设计,首先要物理层次上弄清该集成电路的功耗组成,其次,才能从物理实现到系统实现上采用各种方法来节省功耗,达到低功耗设计的目的。图1为典型CMOS数字电路的功耗物理组成。 (1)动态功耗 动态功耗是由电路中的电容引起的。设C为CMOS电路的电容,电容值为PMOS管从0状态到H状态所需的电压与电量的比值。以一个反相器为例,当该电压为Vdd时,从0到H状态变化(输入端)所需要的能量是CVdd2。其中一半的能量存储在电容之中,另一半的能量扩展在PMOS之中。对于输出端来说,它从H到0过程中,不需要Vdd的充电,但是在NMOS下拉的过程中,会把电容存储的另一半能量消耗掉。如果CMOS在每次时钟变化时都变化一次,则所耗的功率就是CBdd2f,但并不是在每个时钟跳变过程之中,所有的CMOS电容都会进行一次转换(除了时钟缓冲器),所以最后要再加上一个概率因子a。电路活动因子a代表的是,在平均时间内,一个节点之中,每个时钟周期之内,这个节点所变化的几率。最终得到的功耗表达式为:Psw=aCVdd2f。 (2)内部短路功耗 CMOS电路中,如果条件Vtn<Vin<Vdd-|Vtp|(其中Vtn是NMOS的门限电压,Vtp是PMOS的门限电压)成立,这时在Vdd到地之间的NMOS和PMOS就会同时打开,产生短路电流。在门的输入端上升或者下降的时间比其输出端的上升或者下降时间快的时候,短路电流现象会更为明显。为了减少平均的短路电路,应尽量保持输入和输出在同一个沿上。 一般来说,内部短路电流功耗不会超过动态功耗的10%。而且,如果在一个节点上,Vdd<Vtn+|Vtp|的时候,短路电流会被消除掉。 (3)静态漏电功耗 静态漏电掉的是二极管在反向加电时,晶体管内出现的漏电现象。在MOS管中,主要指的是从衬底的注入效应和亚门限效应。这些与工艺有关,而且漏电所造成的功耗很小,不是考虑的重点。 表1为CMOS集成电路中主要的耗电类型。 表1 CMOS集成电路中主要的耗电类型 类 型公 式比 率动态功耗(switching power)Psw=aCVdd2f70%~90%内部短路功耗(internal short-circuit power)Pint=IintVdd10%~30%静态漏电功耗(static leakage power)Pleak=IleakVdd<1%总功耗(total power)Ptotal=Psw+Pint+Pleak100%(4)小结 通过设计工艺技术的改善,Pint和Pleak能被减小到可以忽略的程度,因而Psw也就成为功耗的主要因素。后面所做的功耗优化大部分是围绕这一个公式来进行的。对于SoC来说,所有的方法都是围绕着动态功耗来做文章的,因为在电路信号变化时,功耗消耗主要在电路中电容的充放电过程。如果从各个层次、各个方面尽量减少电路的充放电,将是我们关心的主题。 2 降低集成电路SoC功耗的方法 功耗对于一个便携式SoC数字系统来说尤为重要。事实上,很多便携式SoC系统的设计,是先进行功耗分析,由功耗分析的结果再来划分设计结构。可以说,功耗将可能决定一切。现在要做的是,根据功耗分析的结果,评判SoC结构,改进设计,优化方案。 SoC系统的功耗所涉及的内容十分广泛,从物理实现到系统实现都可以采用各种方法来节省和优化功耗。通过对国外大量文献的查阅,我们得到了常用的实现低功耗设计的各种较为有效的方法,如表2所列。 表2 常用实现低功耗的各种方法 类 型采用方法效 果行为级(系统级)Concurrency memor几倍软件代码软件优化32.3%功率管理Clock控制10%~90%RTL级结构变换10%~15%综合技术合成与分解逻辑15%综合技术映射 门级优化20% 20%布局布局优化20%(1)系统级功耗管理 这一部分实际上是动态功耗管理。主要做法是在没有操作的时候(也就是在SoC处于空闲状态的时候),使SoC运作于睡眠状态(只有部分设备处于工作之中);在预设时间来临的时候,会产生一个中断。由这个中断唤醒其它设备。实际上,这一部分需要硬件的支持,如判断,周期性的开、关门控时钟(gate clock)等。 (2)软件代码优化 软件代码优化是针对ARM嵌入式处理器而言的。对于编译器来说,所起的使用不到1%,而对于代码的优化则可以产生高达90%的功耗节省。Simunic等人曾分别做过用各种针对ARM处理器的编译器进行的试验。比此的实验结果发展,风格比较好的代码产生的效果远比用ARM编译器优化的效果好。 (3)Clock控制 这是在ASIC设计中行之有效的方法之一。如果SoC芯片在正常工作,有很大一部分模块(它们可能是用于一些特殊用途中,如调试Debug、程序下载等)是乖于空闲状态的,这些器件的空运作会产生相当大的功耗。这一部分应使用时钟控制,即clock enable & disable。 (4)RTL级代码优化 与软件相似,不同的RTL(Register Transfer Level,寄存器传输级)代码,也会产生不同的功耗,而且RTL代码的影响比软件代码产生的影响可能还要大。因为,RTL代码最终会实现为电路。电路的风格和结构会对功耗产生相当重要的影响。 RTL级代码优化主要包括: ①对于CPU来说,有效的标准功耗管理有睡眠模式和部分未工作模块掉电。 ②硬件结构的优化包括能降低工作电压Vdd的并行处理、流水线处理以及二者的混合处理。 ③降低寄存电容C的片内存储器memory模块划分。 ④降低活动因子a的信号门控、减少glitch(毛刺)的传播长度、Glitch活动最小化、FSM(有限状态机)状态译码的优化等。 ⑤由硬件实现的算法级的功耗优化有:流水线和并行处理、Retiming(时序重定)、Unfolding(程序或算法的展开)、Folding(程序或算法的折叠)等等基本方法以及其组合。 (5)后端综合与布线优化 既然SoC的功耗与寄生电容的充放电有很大的关系,作为后端综合与布线,同样也可采取一些措施来减少寄存器电容。可以优化电路,减少操作(电路的操作),选择节能的单元库,修改信号的相关关系,再次综合减少毛刺的产生概率。 实际上,这一部分与使用的工具有关。与软件部分有相同之处,后端综合与布线同软件的编译差不多。软件编译的结果是产生可执行的机器代码;而RTL的综合与布线是把RTL代码编译成真实的电路。但是,后端综合与布线优化比较编译优化有更好的效果。这是因为一段RTL代码所对应的电路是可以有多种形式的;同时现有些编译器会根据设计者提供的波形,智能地修改电路(前提是最终电路的效果还是一样的),编译器就会进行相关的优化。但是后端综合的优化与RTL级代码优化和时钟控制相比,同样的RTL级与时钟优化所产生的影响要远大于用编译工具所产生的影响。 (6)功耗的精确计算 后端综合与布线工具不但可以根据基本单元提供的功耗参数进行优化,还可以根据这些参数估算出整个SoC的功耗。正因为有这样一些工具,使我们可以精确地知道我们所设计的是否达到设计要求。万一设计功耗不符合总体要求,则可能要求从系统级到物理综合布线都要做出检查与分析,做出可能的改进,尽可能地减少功耗以达到设计要求。 (7)小结 从上面的各种降低以及估算功耗的方法可以看出,SoC系统的拉耗优化涉及到从物理实现到系统实现的方方面面,是芯片设计中一个十足的系统工程。可以说,功耗可以决定一切。 结语 本文首先分析了CMOS集成电路的功耗物理组成,得到了其主要功耗成分。其次,以该主要功耗成分数学表达式为指导,突出了SoC低功耗设计的各种级别层次的不同方法。不管是现在还是将来,该领域的重要性将会日益显著。在下面的一些发展方向还将会有较大的发展: ①实现SoC系统设计的变换以及映射技术的进一步探索。 ②将各种低功耗设计手段按照各性质最佳综合起来,以便使用基于人工智能的技术(如遗传算法和启发式算法等等)来研究。 ③发展以实现低功耗为目的CPU指令程序的改写技术,以将其扩展到复杂SoC系统的设计中。 ④进一步研究应用于SoC低功耗设计的编码和信号表示技术。 ⑤扩展功耗估算模型的数量以覆盖所有的SoC系统模式,等等。 随着便携式和移动计算要求的进一步增长,集成电路—SoC的低功耗设计将变成一个越来越重要且必须面临的问题。它对开发新型电子产品,其意义重大。 转自"液晶之友"http://www.lcdfriends.com