SoC系统的低功耗设计
通过设计工艺技术的改善,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的功耗与寄生电容的充放电有很大的关系,作为后端综合与布线,同样也可采取一些措施来减少寄存器电容。可以优化电路,减少操作(电路的操作),选择节能的单元库,修改信号的相关关系,再次综合减少毛刺的产生概率。
javascript:window.open(this.src);" style="cursor:pointer;"/>
实际上,这一部分与使用的工具有关。与软件部分有相同之处,后端综合与布线同软件的编译差不多。软件编译的结果是产生可执行的机器代码;而RTL的综合与布线是把RTL代码编译成真实的电路。但是,后端综合与布线优化比较编译优化有更好的效果。这是因为一段RTL代码所对应的电路是可以有多种形式的;同时现有些编译器会根据设计者提供的波形,智能地修改电路(前提是最终电路的效果还是一样的),编译器就会进行相关的优化。但是后端综合的优化与RTL级代码优化和时钟控制相比,同样的RTL级与时钟优化所产生的影响要远大于用编译工具所产生的影响。
(6)功耗的精确计算
后端综合与布线工具不但可以根据基本单元提供的功耗参数进行优化,还可以根据这些参数估算出整个SoC的功耗。正因为有这样一些工具,使我们可以精确地知道我们所设计的是否达到设计要求。万一设计功耗不符合总体要求,则可能要求从系统级到物理综合布线都要做出检查与分析,做出可能的改进,尽可能地减少功耗以达到设计要求。
(7)小结
从上面的各种降低以及估算功耗的方法可以看出,SoC系统的拉耗优化涉及到从物理实现到系统实现的方方面面,是芯片设计中一个十足的系统工程。可以说,功耗可以决定一切。
结语
本文首先分析了CMOS集成电路的功耗物理组成,得到了其主要功耗成分。其次,以该主要功耗成分数学表达式为指导,突出了SoC低功耗设计的各种级别层次的不同方法。不管是现在还是将来,该领域的重要性将会日益显著。在下面的一些发展方向还将会有较大的发展:
①实现SoC系统设计的变换以及映射技术的进一步探索。
②将各种低功耗设计手段按照各性质最佳综合起来,以便使用基于人工智能的技术(如遗传算法和启发式算法等等)来研究。
③发展以实现低功耗为目的CPU指令程序的改写技术,以将其扩展到复杂SoC系统的设计中。
④进一步研究应用于SoC低功耗设计的编码和信号表示技术。
⑤扩展功耗估算模型的数量以覆盖所有的SoC系统模式,等等。
随着便携式和移动计算要求的进一步增长,集成电路—SoC的低功耗设计将变成一个越来越重要且必须面临的问题。它对开发新型电子产品,其意义重大。