原创 低功耗设计基本概念

2015-4-8 16:07 1316 12 12 分类: FPGA/CPLD 文集: ASIC

转自http://www.elecfans.com/article/87/2006/20060311252.html

 

由于可以高度集成,并具有低功耗、输入电流小、连接方便和具有比例性等性质,CMOS逻辑电 路被认为是现今最通用的大规模集成电路技术。下面研究CMOS集成电路的功耗组成,概述实现集成电路——SoC(System on Chip)系统的低功耗设计的诸多方法。目的在于揭示当今电子系统结构复杂度、速度和其功耗的内在联系,在及在数字电子系统设计方向上潜在的启示。

1 CMOS集成电路功耗的物理源

要研究SoC的低功耗设计,首先要物理层次上弄清该集成电路的功耗组成,其次,才能从物理实现到系统实现上采用各种方法来节省功耗,达到低功耗设计的目的。图1为典型CMOS数字电路的功耗物理组成。

(1)动态功耗

200631112403562.gif

动 态功耗是由电路中的电容引起的。设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=aCVdd2f 70%~90%
内部短路功耗(internal short-circuit power) Pint=IintVdd 10%~30%
静态漏电功耗(static leakage power) Pleak=IleakVdd <1%
总功耗(total power) Ptotal=Psw+Pint+Pleak 100%

(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的功耗与寄生电容的充放电有很大的关系,作为后端综合与布线,同样也可采取一些措施来减少寄存器电容。可以优化电路,减少操作(电路的操作),选择节能的单元库,修改信号的相关关系,再次综合减少毛刺的产生概率。
200631112403564.gif
    实 际上,这一部分与使用的工具有关。与软件部分有相同之处,后端综合与布线同软件的编译差不多。软件编译的结果是产生可执行的机器代码;而RTL的综合与布 线是把RTL代码编译成真实的电路。但是,后端综合与布线优化比较编译优化有更好的效果。这是因为一段RTL代码所对应的电路是可以有多种形式的;同时现 有些编译器会根据设计者提供的波形,智能地修改电路(前提是最终电路的效果还是一样的),编译器就会进行相关的优化。但是后端综合的优化与RTL级代码优 化和时钟控制相比,同样的RTL级与时钟优化所产生的影响要远大于用编译工具所产生的影响。

(6)功耗的精确计算

后 端综合与布线工具不但可以根据基本单元提供的功耗参数进行优化,还可以根据这些参数估算出整个SoC的功耗。正因为有这样一些工具,使我们可以精确地知道 我们所设计的是否达到设计要求。万一设计功耗不符合总体要求,则可能要求从系统级到物理综合布线都要做出检查与分析,做出可能的改进,尽可能地减少功耗以 达到设计要求。

(7)小结

从上面的各种降低以及估算功耗的方法可以看出,SoC系统的拉耗优化涉及到从物理实现到系统实现的方方面面,是芯片设计中一个十足的系统工程。可以说,功耗可以决定一切。

 

数字电路,频率越高,系统越不稳定,通过提高电压可以使系统恢复稳定工作,所以频率和电压一般呈正比关系。二者对功耗影响较大,在低功耗设计中,可以采用DVFS技术,不同应用场景,采用不同频率和电压。

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条