功耗的优化
4.1优化的原则
图3是几个典型设计中功耗分布数据:
(数据来自“International Solid-State Circuits Conference”)
图3
我们的目标是减少时钟树、标准单元和存储器的功耗。功耗与性能通常是充满矛盾的:
1)使时钟变慢(更少的转换),但我们想要更快的处理速度。
2)减小Vdd,但Vdd变小会限制时钟速度。
3)更少的电路,但更多的晶体管可以做更多的工作。
简言之,我们想用最少的能量完成最大量的任务。实现方式是对电路动作的控制精细化,仅让恰好需要的电路,在需要的时间内动作,而不浪费分毫。完成这一任务,需要设计者有效率地管理电路的动作。
现代系统是如此复杂,以致设计者必须切分为若干层次,分步前行才能把握:
软件 -> 架构 -> 逻辑 -> 电路
每一层次中,设计者对电路动作的控制范围和手段都是不同的。软件是硬件动作的总调度师,设计者可以根据特定应用,关掉整个模块或减少无效的动作。进入架构层,视角转为怎样将设定任务合理分配到各个模块,协调动作最有效率,如pipeline、分布式计算、并行计算等。在逻辑层,则考虑怎样实现一步动作仅使需要的电路动作。电路层的视角更为精细,通过调节平衡信号到达时间,驱动单元大小等手段,使电路的动作耗能最小。这里存在一个重要规律,称作效率递减率:
在高的抽象层次减少功耗的效率会比低的层次更高。
所以,降低功耗是一个系统工程,需要软件、硬件、电路、工艺等人员的共同努力。这里,我们将采用架构与逻辑的视角进行下面的讨论。