目录
一、低功耗设计简介
二、功耗的组成
三、各抽象层次降低功耗
四、常见的低功耗技术
1、power gating 电源门控技术
2、多电压供电技术
3、多阈值电压技术
4、clock gating 门控时钟技术
5、DVFS 动态电压频率调整技术
6、寄存器传输级降低功耗技术
一、低功耗设计简介
芯片功耗的问题最近几年得到了越来越多的重视,主要来源于以下几个方面:
1、90nm以下,随着设计流程的发展,芯片的集成度达到了上千万门级。一颗最顶级的芯片总功耗可以达到惊人的100-150W(可以煮鸡蛋了),单位面积功耗可以达到50-75W/cm^2,而局部热点的功耗更大。这就产生了芯片封装成本、电源成本和可靠性问题,估计还要有大得像砖头一样的散热片。
2、对于需要电池供电便携式设备和无源芯片类(非接触电子标签)来说,功耗则意味着电池寿命和工作距离。只有功耗降下来,产品才能更可靠的工作。
3、功耗会影响系统的工作频率。比如cpu,当功耗太大导致发热太多时,cpu的主频就必须得降下来,影响整体的工作效率。
因此,无论是从成本角度还是产品性能角度来说,降低功耗都是必不可少的。
二、功耗的组成
功耗主要分为三部分,分别是浪涌功耗、静态功耗和动态功耗。
浪涌功耗是指设备上电时由于巨大的启动电流所产生的功耗,不同设备的启动电流不同,浪涌功耗差异也很大,在进行IC设计时一般不需要关注浪涌功耗。
静态功耗是指设备在待机是产生的功耗,静态功耗与元件的电气特性密切相关,主要来源是晶体管的漏电流所产生的功耗。
动态功耗是指由于逻辑转换所产生的功耗。动态功耗的定义如下:
其中: 为门寄生电容,S为每个时钟通过整个电路的平均转换次数,f为时钟频率,v为供电电压。
三、各抽象层次降低功耗
按照设计层次划分,整个系统的设计主要被抽象为四个层级,从高到低依次为:系统级、体系结构级、寄存器传输级+门级、晶体管级。
实践表明,虽然每个层次都可以通过优化来降低功耗,但层次越高,降低功耗的效果就越明显。也就是说,虽然寄存器传输级也可以降低功耗,但效果要比系统级和体系结构级差,具体可见下图:
四、常见的低功耗技术
虽然系统级降低功耗效果最明显,但系统级降功耗手段比较少,常见的有合理的软硬件划分和使用低功耗软件,而且软件的发展要快于硬件的发展,因此系统级降功耗技术可能在当下的设计中收效甚微。在系统结构不清晰的年代可能用武之地更大。
晶体管级虽然也可以降低功耗,但主要涉及的是器件与工艺相关的知识,对于设计人员来说比较难控制,因此不在这里展开。(我也不太懂)
下面详细说下体系结构级和寄存器传输级的常用低功耗技术。
1、power gating 电源门控技术
电源门控技术是一种简单粗暴的低功耗技术,做法是将暂时用不到的模块直接关闭,这样就节省了动态功耗和静态功耗,达到降功耗的目的。分为细粒度电源门控技术和粗粒度电源门控技术,这里不详细展开,有兴趣的可以查阅资料做深一步的了解。
需要注意的是,这一技术需要手动设计实现,工具无法自动完成。
2、多电压供电技术
由动态功耗的计算公式可知,动态功耗与供电电压成正比,因此降低供电电压可以有效的降低功耗。不同模块对于供电电压的敏感程度不一样,时许要求严格、时许余量较小的电路,可能需要使用标准电压进行供电,但一些时序要求不严格的电路,可以降低电压标准,以达到节省功耗的目的。以90nm为例,将1V的供电电压降低到0.8V,可以使动态功耗降低36%.
这一手段的实现也需要手动设计,但EDA工具好像也可以实现了。没有实操过,说不太准。
3、多阈值电压技术
多单元库有助于处理漏电和动态功耗问题。典型的多单元库至少包含功能相同但阈值电压不同的单元。高阈值电压单元速度较慢但漏电流较小,低阈值电压单元速度较快但漏电流较大。而两者在面积上几乎相同,但高阈值电压单元可以降低50%的漏电流。因此在设计时可以将对性能要求较高的电路使用低阈值电压单元,对功耗要求较高的电路使用高阈值电压单元。
这一技术工具可自动完成。
4、clock gating 门控时钟技术
由于触发器的状态翻转会产生动态功耗,因此将时钟关断可以让触发器无法工作,自然也就降低了动态功耗。使用这一技术一般可使功耗降低5%~10%,但只有触发器的个数不少于16个时才会更有效。
这一技术工具会自动完成,自己写的clock gating可能功能能够实现,但会产生毛刺,稳定性差。
5、DVFS 动态电压频率调整技术
DVFS是降低功耗的有效手段。设备在工作时会处于不同的工作阶段,在对电压和频率要求不高的阶段降低电压和工作频率不会使设备的使用出现问题但却可以有效的降低功耗。
这个可能需要手动设计,比如插入可编程的DC-DC电压调节器。
6、寄存器传输级降低功耗技术
这一层次的低功耗技术主要通过优化代码来实现。常用的手段如下:
资源共享:如果实现计算较多的逻辑,一定要共享计算的结果,避免在不同的位置重复相同的计算。
去除多余的转换:如果某个转换发生后并没有后续的操作,数据不会被采样信号也不会变化,那么这就属于多余的转换,要避免。
选择合适的编码:格雷码相邻位置只有一位不同,使用得当可以有效的降低功耗。独热码可以省去复杂的译码逻辑,使用得当也可以降低功耗。
参考文献:《硬件架构的艺术》