三、架构层面的降低功耗
系统的实现有很多的方式,每种方式对功耗的影响都不相同,本节主要介绍架构对功耗的影响。
3.1 高级门口电路
在同步电路系统中,时钟占据了大部分的动态功耗,因而在一些情况下,如果有些电路不工作的时候可以将这块电路的时钟gating掉,以减少功耗。这种架构通常能带来15-25%的功耗节省。
3.2 动态频率和电压调整
动态的调整频率和电压是非常流行和常见的控制功耗的方法,由下面的动态功耗公式可以清楚的看见:
但是频率肯定不是想降就能降的,它会影响到系统的性能,电压则需要和工艺挂钩,所以也 不是随便就能降的。
3.3 异步时钟处理
一个soc中通常有很多模块,也有很多外设,事实上他们并不需要都跑到很快的程度,例如uart这种慢速的外设,这个时候就有异步时钟之说。当然异步时钟的设计就需要designer在设计的时候要格外小心,尤其是CDC的问题,处理不好经常会遇到一个系统用了几个小时或者几天就挂的问题,会出现很多稀奇古怪的问题。另外,就是时钟树的处理,clk skew处理起来就变得复杂起来了。
异步电路通常采用握手机制,异步fifo等机制进行CDC的处理,这一部分可以参考我之前的博客(跨时钟域处理)。
3.4 Fine grain power gating
如何降低功耗,我想恐怕最直接的方式就是插断电源了吧,但是直接拔掉电源肯定是不行的,这不是节能了,是直接断源了。那么可以怎么处理呢,其实可以像处理clk一样,进行gating的动作。
如上图的A将VCC进行gating,或B将Vdd进行gating,这些方式看起来很容易理解,但是真正操作起来却并非那么容易,如何gating,何时gating,这个就需要足够的经验和知识技能了。
对上面的方式进行延伸,其实就可以得到如上的图,可以对整个模块进行gating。例如某系统中的运算单元,可能在某段时间不需要工作,则可以将其电压gating。但是gating之后是否需要恢复之前的状态,如何恢复这需要认真考虑。
如上图是另外一种gating的方式,在这里就不做赘述了。
除此之外,还有许多对电压进行操作的方式,例如多阈值电压(Multi-threshold Voltage),multi supply voltage,gate memory power等方式,这些方法多半和工具,工艺有关,对designer而言多半无力,不过多了解些毕竟是好事。
curton 2019-4-5 16:08