浪涌、静态功耗和动态功耗是三个主要的功耗源。
式中,CL为门寄生电容,S为每个时钟通过整个电路的平均转换次数,fclk为时钟频率,Vdd为供电电压。
动态功耗在大规模IC设计中占主要的地位,在典型的应用场景中动态功耗占到了总功耗的80%。
ASIC的总功耗定义为动态功耗加静态功耗。
降低功耗应当在所有设计层次上进行,即,在系统级、逻辑级和物理级。层次越高对功耗的降低就可能越有效。
下图展示了在不同设计层次上降低功耗的各种技术:
为了最大程度降低功耗,各抽象层次在设计时就需要把功耗因素考虑在内。参考前面对整体功耗描述的方程上,可以看出可以通过降低电压、电容、信号频率和单元能耗来降低整体功耗。在特定的层次上,指定技术会涉及这些因素中的一个或多个,如:
下表展示了各抽象设计层次中对功耗降低程度的影响:
在系统设计之前,必须对系统及其性能以及功耗的目标进行考虑。
对于纳米高端芯片,由于I/O使用比芯片内核逻辑更高的电压供电,使得其占到总功耗的50%以上。如果整个系统中包含多块芯片,这些芯片之间的连线将消耗大量的功耗。在现代数字设计实践中,片上系统方法学主要关注降低功耗,缩减面积以及降低成本的手段。
由于嵌入式处理器在大规模数字系统中广泛使用,因此某些功能可以用硬件实现,其余部分用软件来实现。通信算法具有高度递归的性质,这意味着少量的代码就可以负责大量的处理任务,10%的代码花费了90%的执行时间。如果这些资源密集型模块能用硬件标识和实现,就能节约大量功耗。这种递归模块可能只占整体系统很小的一部分,但能显著地降低功耗。
通过修改应用软件可以大量降低功耗。高级语言便于使用并可以在降低功耗方面事半功倍,但是实现高级语言的运行时环境使用高频轮询来实现这样的结构,这会导致较高的能耗,所以在使用高级语言时要避免使用复杂原语。
对于嵌入式应用,常常在设计中使用现有的工业级C代码。C代码可能会使用若干循环,在一些应用中,可能90%的运行时间都在执行这些循环。可以使用几种技术来优化这些循环以降低功耗。例如,如果两个循环在同样的索引下逐一执行,可以将它们合并。执行的指令数由此减少。
处理器的选择会对整体功耗产生明显影响。
1)应采用适合所要求的数据宽度的处理器。对于16位乘法,使用16位处理器需要30条指令(移位算法),而对于8位机器,需要127条指令(双精度)。更好的结构是使乘加单元(MAC)或16x16位并行乘法器用一条指令来执行乘法。
2)如果用简单的MAC就能满足运算要求,就没有必要使用专用的DSP处理器来处理数据,这样能显著降低功耗。
系统使用不同的体系结构对于功耗会有显著的影响。以下是一些体系结构级的权衡和技术以减少功耗:
因为组合门控时钟方案在输出不变的时候使触发器的时钟失效,所以它可以降低5% ~ 10%的动态功耗。反之,时序门控时钟在不影响设计功能的情况下改变设计结构。时序门控时钟能减少连接到带有门控时钟的寄存器块的设计部分的冗余切换。
动态电压频率调节(DVFS)是提高系统能效的流行方法。在对频率不敏感的应用阶段中降低时钟速率和供电电压,可以在性能适度损失的情况下大幅度降低功耗。
功耗正比于供电电压的平方。因此减少供电电压将会使功耗相应降低四分之一。但是降低供电电压也会降低系统的性能,所以需要作出权衡。
在实时嵌入式系统中,往往不能直接使用目前已知的DVFS算法,因为改变处理器的操作电压将会影响到任务的执行时间并违反时效性要求。有些DVFS能合并到OS调度程序和实时嵌入式系统任务管理服务中,这样既能通过DVFS节省功耗,又能保证对时效性的要求。
对大多数DSP应用,快速傅里叶变换(FFT)算法要求频繁访问系统存储器的数据,而这样的存储器能效并不高。增强型FFT体系结构需要在系统存储器或RAM和处理器之间增加缓存。使用小范围的缓存能使计算能耗大量下降,极大提高了FFT的能效。
对于要大规模运算的应用,使用对数系统(LNS)比使用线性系统更好。LNS在降低平均位元活跃度的同时用加法和减法实现乘除运算,使其效率比线性系统更高。因此基于LNS实现FFT可能节省大量功耗。负面影响是加法器和减法器的宽度会增加——导致需要以指数级增大的查找表。
对于基于时钟体系结构的同步时钟设计来说,时钟分布消耗掉了大部分的能量。而异步系统中不同模块使用握手接口进行交互,移除时钟使得能效大大提高。此外,由于未工作元件几乎不消耗能量,所以异步电路的动态功耗接近于0。
与电压门控类似,电源门控可以在模块不使用时暂时将其关闭,其通常指在芯片上加入开关以根据应用要求选择性切断供电电流。设计者可使用两类电源门控:细粒度电源门控和粗粒度电源门控。
1)在细粒度电源门控中,在每个门和地之间存在一个开关晶体管。这种方式允许在不使用某些功能时关闭与地的连接。可以对库中的每个元件进行这种控制。
2)在粗粒度电源门控中,电源门控晶体管是供电网络的一部分而不是标准单元的一部分。粗粒度本质上创建一个电源开关网络,各组开关晶体管能并行地将整个模块打开或关闭。与细粒度电源门控不同,粗粒度方式不完全依赖于库的质量,而EDA工具对其处理能力影响更大。
多单元库有助于处理漏电和动态功耗的问题。典型的多单元库包含至少两组功能相同但阈值电压不同的单元。高阈值电压单元较慢但是漏电较少;相反,低阈值电压单元更快但是漏电较多。
如果最终的设计目标是满足性能,设计者可以使用低阈值电压库进行第一遍综合以达到最好的性能来满足对时序的要求。然后对设计中不需要最高性能或低阈值电压的单元用高阈值电压单元进行替换,以减少整体功耗和设计的漏电流。这是的多阈值设计技术最常见使用的方法,因为大多数应用是以满足时序要求为前提条件的。
然而,如果设计的主要目标是功耗,而面积是其次的,在进行第一遍综合时使用高阈值电压单元更合适,然后找出关键路径并用低阈值电压单元进行替换,以达到最终的性能要求。
在多电压供电(MSV)设计中,设计可以分割为独立的“电压岛”或“电压域”,根据每个区域对时序的要求而使用不同的供电电压。
在典型的SOC中,SRAM消耗了总功耗的1/3,其余部分由时钟树和随机逻辑消耗掉。所以对于好的电源管理策略,存储器架构是关键的因素。最简单的形式是在不使用存储器矩阵时将其关闭。需要在功耗方面对使用单个大规模存储器矩阵或使用多个小存储器进行比较。
如果SOC只需要一小部分存储器常开,而其余部分存储器可以根据操作模式开关,就可以将存储器分割成多个部分。小部分存储器处于电压“开”状态,其余大部分存储器只在执行密集型运算时打开。
此外注意,如果将大块存储器划分为多个小块后,读周期总数仍是相同的,但是每个读周期所消耗的功耗会大大降低。
在大规ASIC中,在RTL(寄存器传输级)完成时至少80%的功耗已经确定。后端流程不能解决所有功耗问题,需要系统性地直接从RTL中或从映射结果中寻找降低功耗的机会。
在各种状态机编码类型中,格雷码是最适合低功耗设计的。对于二进制编码,在状态转换过程中可能有多个触发器发生翻转,这比在状态转换过程中每次只有一个触发器变化的格雷码要消耗更多的能量。
此外,以格雷码编码的状态机也消除了依赖于状态的组合等式中存在毛刺的风险。
在大多数应用中,用补码来表示二进制数往往比有符号数更常使用。然而,对于某些特殊应用如只使用积分器进行求和的应用,在切换过程中有符号数更有优势。
在RTL中表示多路器(MUX)最常用的方法是使用二进制编码,如果MUX的每个输入是多位总线,就会产生明显的开关过程,由此产生功耗。如果对“case”条件进行编码时按照独热码而不是二进制编码,输出就会更快、更稳定,而且在初期就能将未选中总线掩藏掉,因此实现了低功耗效果。
在没有设置默认状态的情况下,总线数据常常会发生没有意义的转换。如果转换后的数据未被真正采样,那么它就是多余的,将这样的转换去掉可以显著降低功耗。
对于涉及较多算术运算的设计,如果有同样的操作在多处使用,必须避免相应的运算逻辑在多个位置重复出现。
在使用行波计数器来降低功耗时,会对静态时序分析以及扫描链的插入造成很大的影响。
在当前数据和下一个数据之间的汉明距离大于N/2(N是总线宽度)时,就将下一个数据反向后传输,以减少总线上出现转换的位数量,这就是总线翻转编码。这种技术对于减少大容量总线上的转换次数很有效。
该技术在传输数据的同时也需要传输额外的一个控制位,以表示所传输的数据是否是已反转的。
处理这类设计的思路是将活跃度较高的网络和活跃度较低的网络区分开来,然后将它们置于逻辑云中尽可能深的位置。
某些降低功耗的工具能给设计加上驱动输入向量,然后对活跃的网络进行分析,并自动进行优化。
在操作大规模逻辑云(包括宽加法器、乘法器等)时,往往会在需要时才将其打开。
每代新的硅工艺都会相应带来功耗的降低。随着各种新CMOS生产工艺的出现会将功耗降低到一个新的水平。
在之前提到的所有降低功耗的技术都可以由电路设计人员直接实现。通过更先进的硅处理技术,可以额外降低功耗。
在版图阶段进行优化可以显著降低功耗。理想的优化意味着所有有直接关联的模块在硅片上都应紧密挨在一起。长布线会增加功耗。
由于漏电流是阈值电压Vth的函数,衬底偏压也称作“反偏压”能减少漏电功耗。采用这种技术,可以将衬底或合适的阱区电压偏置,以提高晶体管阈值,因此减少了漏电。在PMOS中,指将晶体管衬底偏置到高于Vdd的水平。在NMOS中,指将衬底电压偏置到低于Vss的水平。
阈值电压Vth的升高会影响性能,因此可以使用动态偏置的方式,即在工作模式下保持较小的偏置电压,而在保持模式下加强偏置电压。衬底偏压的效果与工艺尺寸有关,所以在使用更小工艺时,衬底偏压的效果会大大降低。
栅氧化层是门栅和沟道之间的绝缘体,常常将它做得尽可能薄,以使晶体管在打开时将沟道的导电性和性能增至最大,并在晶体管关闭时将阈值下漏电流降到最低。然而,在电流栅氧化层厚度在1.2nm附近时,会在门栅和沟道之间发生电子隧道效应的量子力学现象,使功耗增加。
类似于上节,此外厚氧化层头部/尾部开关也用来降低栅漏电流。
电容包括扇出门的输入电容、线电容和寄生电容。对于深亚微米技术,线电容是最主要的,也是最难估计的一种电容,必须将“串扰”之类复杂效应考虑在内。
由于设计者很难对门级以下的单元进行布局布线,因此对这些单元的参数无法产生重要影响。而使用定制设计就可以对这样的参数进行强有力的控制。