2.1数字电路的低功耗设计
2.1.1数字电路的功耗模型和影响因素
以图2.1.1所示的最基本的反相器单元为例,CMOS数字电路的功耗可以分为静态功耗和动态功耗两个部分:
其中,静态功耗
式中,第一项是p1和N1同时导通时的直流短路电流ISC引起的静态功耗;第二项是由漏泄电流引起,包括亚阈值电流和源漏区与衬底反向偏置时的漏泄电流。
动态功耗是对电路节点等效负载电容进行充放电所消耗的,也称为开关功耗,可表示为
式中,α0→1是开关活动因子,表示每个时钟周期内的状态跳变次数,其大小与电路结构、逻辑功能、输入信号的状态和节点的初始状态有关,一般地,CMOS电路中有α0→1≤1;CL是等效负载电容;ƒ是时钟频率;VDD是电源电压。
在0.18μm及其以上的CMOS电路功耗中,占主导地位的是动态功耗,有时还要考虑短路功耗,而在一般情况下,漏泄电流和稳态偏置电流功耗都可以忽略。因此,要降低电路功耗,必然要从降低动态功耗入手,可以说,式(2.1.3)是低功耗数字电路的指导公式。
式(2.1.3)可以看出,降低电路的动态功耗,可以有以下四种途径:
第一,降低开关活动因子α0→1。在每个时钟周期内,并不是所有节点的状态都发生跳变,也不是所有状态的跳变都要消耗能量(如1→0的状态转变),所以降低开关活动因子的本质是,根据输入信号的组合状况,通过优化算法、逻辑结构等方法,减小不必要的耗能跳变。常采用的方法有,门控时钟技术、功耗估算/优化CAD技术和降低跳变编码技术。由于快速、准确地估算α0→1有很大的难度,所以急待开发实用的功耗估算CAD技术;其次,降低α0→1来降低动态功耗十分有效,并且有很大的潜力,所以这也是低功耗研究的重要方面之一。
第二,降低等效负载电容CL。CL重要由两方面构成:一方面是后续门的输入门电容和反相器源漏区的电容,它们和器件工艺有关;另一方面互连线电容。
因此要降低CL,可以采用优化逻辑电路(如减小所用晶体管数目)、优化晶体管尺寸、工艺映射中降低高活动因子的电容、版图中合理布局等方法。可以说,在设计的各个层次,都要考虑到CL对功耗的影响。
第三,降低工作频率f.假如仅仅通过降低电路的频率来降低功耗,则它必然是以牺牲速度为代价的。所以时钟(频率)管理的策略是,在保证电路主频不变的情况下,通过多频率技术,即在不同系统部分中分配不同的频率,或者在设计版图时优化时钟树(ClockTree),以尽可能地降低动态功耗。
第四,降低工作的电源电压VDD。由于功耗和电源电压的平方项成正比,所以这也是降低功耗最有效的方法。但在工艺尺寸确定、一级近似条件下,电路延迟与VDD满足下式
即有Td∝(CdVDD)/(VDD-VTH)2,其中W和L分别是器件的栅宽和栅长,μ为载流子迁移率,COX为氧化层电容,VTH为MOS管阈值电压。
正如图2.1.2所示,从电路能量、延迟和工作电压的关系中可以看出,当VDD在2.5VTH到6VTH的范围内,延迟和能量延迟积的变化比较平缓,在VDD=3VTH时,这两者达到最低值。当工作电压继续下降到接近VTH时,延迟将急剧上升。
为了改善VDD下降引起的电路速度下降,可以采用并行或流水线结构,但这将使电路面积增大;另外一种补偿方法是,通过降低VTH来增大VDD/VTH值,但同时电路漏泄电流将新增,这时可以采用可变电压、可变阈值电压技术解决;在一些非关键电路中,也可以采用多电压、多阈值电压技术加以补偿。
2.1.2数字电路的低功耗设计方法
在目前ASIC设计过程中,常采用的是自顶向下(Top-Down)流程。对功耗的优化也就可以考虑到,在不同的设计层次,有目的地选择上述影响功耗的因素,在给定的性能约束下,实现功耗最小化的目标。
从抽象层次来分,低功耗设计可以分为:系统级、结构级/算法级、寄存器传输级、逻辑/门级和版图级。在设计的不同层次,影响功耗的因素所起的用途各不相同,因此功耗优化的效果也不同;综合地看,在芯片设计时越早考虑低功耗,取得的效果也越显著。
1系统、结构级
在这个层次上,从系统功能出发,分为静态低功耗设计和动态功耗管理(DynamicpowerManagement,DpM)技术两种。静态低功耗设计是在考虑系统的具体实现时,采用不同的电路结构和不同的编码方式,在设计阶段(如综合和编辑)实现低功耗;而动态功耗管理技术是和运行期间的行为密切相关,它要充分考虑系统和任务或者和负载的关系,做出相应的判决,来实现低功耗。
1)静态低功耗方法
①电路结构
并行(parallelism)结构是将一个数据处理功能模块分为几个相同的子模块,并行处理数据,然后选择对应的输出。这种方法允许在保持总模块速度不变的情况下,降低各个子模块的电压、频率等因素,使总功耗降低,但代价是将新增芯片的面积。
流水线(pipeline)结构是在保持总体速度不变的前提下,将数据分段后持续慢速处理,速度余量则可以通过降低电压来降低功耗。假如和并行结构相结合,就可以取得更好的功耗节省效果。
②电压技术
和改进电路结构相同,电压技术也是为了补偿工作电压的降低带来的速度下降[26,27]。多电压技术,是针对不同的性能要求,系统中各部分也采用不同的工作电压以节省功耗,但这要额外的片内电压转换器。
③编码优化
常用的二进制编码中,采用所有空闲的高位作符号扩展位,这将新增耗能的跳变。符号-数值编码(如格雷码等)方法只用最高位代表符号,假如用它来代替二进制编码,可以减少由于数据符号改变而出现的功耗。
2)动态功耗管理技术
是系统级功耗优化中的一个有效手段。根据负载的请求,子系统可以分为工作和空闲模式。在空闲模式下,可以将子系统关断,进入低功耗的待机(Standby)
和不消耗能量的睡眠(Sleep)状态;反之,则将子系统唤醒,进入正常的工作模式。
这种有选择地关断空闲的子系统,降低功耗的效果十分显著,如在pC系统级功耗管理中,最常见的是将无执行任务的硬盘和显示器关断以节省功耗。
这种方法的局限性在于,在功耗状态切换过程中,通常有延迟,唤醒处于睡眠状态的子系统也要更多的能量。因此,DpM技术要解决以下问题:一是何时将子系统关断,关断多长时间;二是是否值得关断,即恢复状态是否要更多的能量。这些都是判决策略要研究的内容,目前最常用的方法可分为三种:基于超时(Timeout)的方法、基于预估算(predictive)的方法、基于随机理论(Stochastic)的方法。
和上述改变子系统的功耗状态不同,动态电压等比例变化(DynamicVoltageScaling,DVS)技术是根据系统的工作状态,基于区间(Interval-based)或基于线程(Thread-based)来预测系统负载[33,34],动态地改变系统的工作电压。动态电压和频率等比例变化(DynamicVoltageandFrequencyScaling)技术则是同时改变工作电压和频率,获得最低的系统功耗。
和静态低功耗设计相比,DpM技术由于要预测系统和负载、系统和电源的关系,动态地调整工作状态、电压和频率,对系统工作状态的建模、预测算法都更复杂,有更多的工作急待开展,但是可以肯定的是,DpM技术降低功耗的效果也更显著。
2寄存器传输级
作为综合(排序和分配)的高层次结构,RTL层次将包含一个控制部分(也称控制器)和一个操作部分(也称数据通路),如图2.1.3所示。
数据通路以寄存器为特点,而控制器是由组合逻辑来实现,因此,RTL级低功耗设计的对象将是时序和组合逻辑,这可以采用硬件描述语言VHDL和VERILOG来实现。另外,RTL的抽象层次决定了它不可能涉及电源电压和电容,因此降低功耗的途径重要是降低开关活动因子,即减小寄存器和组合逻辑的跳变频率。
1)操作数
在RTL层次,操作数分离(OperandIsolation)是针对组合逻辑最常用的低功耗技术,其本质是在组合逻辑模块间加入一个锁存器,当锁存器的使能无效时,寄存器保存值不加以更新,组合路径被隔断[36,37]。只有在进行有效运算时,组合逻辑才有耗能的跳变出现,这样便降低了此模块的功耗。
操作数变形(OperandTransformation)有时也称为数据通路的重排序,即是指在不影响逻辑功能的条件下,以翻转频率最低为策略,对电路单元重新排序来降低功耗的技术。
2)门控时钟技术
目前,门控时钟(Clock-gated)技术被认为是最有效的降低功耗的方法之一,所控制的对象不仅可以是寄存器、锁存器、时钟出现电路等,甚至还可以利用门控时钟分布来控制子系统。
以寄存器为例,门控时钟的基本思想是,通过一个门控或使能信号来控制时钟,即在所谓的门控时钟单元的输出端出现一个“门控时钟”信号,代替寄存器原有的时钟输入信号。当寄存器暂时不工作时,门控时钟使寄存器处于不触发的状态,从而阻断了输入数据的更新,减少了无效的开关活动。在如图2.1.4所示的门控时钟单元中,常用锁存器来防止使能信号传播到输出端时出现的毛刺。
应该指出,时钟频率升高时,时钟偏差(ClockSkew)的影响将不容忽视,由此将新增时钟树设计的复杂程度;考虑到门控时钟逻辑的控制电路所出现的额外功耗,门控时钟技术适合应用在较高抽象层次;另外,在漏泄电流功耗为主时,门控时钟的用途不大。
3逻辑/门级
这两个层次的重要特点是可以在较宽的范围内应用先进的低功耗技术。在逻辑优化过程中,一些技术参数如电源电压是固定的,当要实现一个给定的逻辑时,设计的自由度可以在选择功能和确定门单元的尺寸上。有较多的文献研究了两个层次的低功耗技术。
1)局部转换技术:局部转换(localTransformation)
包括工艺映射(TechnologyMapping)、管脚变换(pinpermutation)、状态分配(phaseassignment)等方法,通常是施加在门网表上,并且是针对具有大开关电容的节点。其基本思想为:在目标节点附近,置换一个或几个门单元,以减小电容和开关活动因子。但是,这种方法必须注意在短路电流和输出功耗之间取得均衡。
在逻辑综合阶段,常用的转换技术有工艺映射,其目的在于,将一个经与工艺无关的优化程序优化后的逻辑网络,映射到一个预含义门单元的目标库。映射策略如下:一是将具有高开关活动因子的节点映射到单元的内部节点,以降低电容值;二是门单元尺寸的选择要在单元的驱动能力和功耗之间取得折衷;三是与功耗相关的工艺映射方法中,还要考虑小的延迟和面积映射。为了进一步降低功耗,在工艺映射前,通常要将具有复杂节点的原始电路分解成一系列具有基本功能的门单元,即所谓的工艺分解(TechnologyDecomposition);当一个电路完成映射后,还可以通过门重含义尺寸(GateResizing)和管脚变换,减小不必要的大尺寸的门单元和逻辑等效的管脚排列,来实现优化功耗。
状态分配是通过在节点间添加反相器,使操作的输入信号反相,同时也使输出反相。这种门级转换技术减小功耗的途径如下:一是加入的反相器新增了其它转换的机会,可以和原有相邻的反相器作相当多的变换,如合并、撤消等;二是这种方法能将高开关活动因子节点通路上的反相器移走,从而具有更低的功耗。
2)预决算方法指在原有电路中,加入一个预决算(pre-computation)逻辑电路的方法。其基本思想为:在提前一个时钟周期内,有选择地预估算电路的逻辑输出值,并在接下来的一个周期内,关掉电路内部的某些单元,降低节点的开关活动因子和电容来降低功耗。
3)新的逻辑电路结构逻辑结构的类型和电路的功耗、面积、速度密切相关。为了获得更低的功耗,有较多文献研究了逻辑结构的优化。
CpL(passTransistorLogic)是一种研究得较多的低功耗逻辑电路。它用两组NMOS传输门实现互补的两个逻辑信号,两个pMOS管用作反馈管,将NMOS传输门传输的高电平上拉到电源电压。CpL电路的优点是输入负载小,输出驱动能力强,缺点是固有节点多、连线多、布线难度大。
动态逻辑电路有较低的功耗,尤其是动态差分逻辑因为具有更高的噪声抑制特性而受到重视,文献[49]提出了研究了有限摆幅逻辑(SwingLimitedLogic,SLL),能够在给定的电源电压下实现高性能,能量延迟积比传统的电路低一个数量级。
4版图级
1)布局布线在低功耗版图设计中,合理的布局布线是关键。传统的布局和布线是以面积和延时为考虑重点,因此常常追求布线最短、电容最小;而面向低功耗的布局布线方法,不仅考虑传统的设计目标,还要和设计中的信号活动性结合,以信号活动性和电容乘积最小为优化目标,实现低功耗[50]。
2)时钟树设计版图设计中,时序电路是降低功耗的一个重点。在同步系统中,时钟通常消耗总能量中很大的一部分;不同的设计目标中,时钟出现和时钟分布的功耗所占系统功耗的比例可以达到30%甚至40%.在这个阶段,时钟网络分布即时钟树结构的优化,以及驱动方式的选择,利用缓冲器插入优化和变线宽优化,可以在节点延时和功耗之间取得折衷。另外,鉴于时钟偏差对电路性能的重要影响,在保证电路时序的前提下,可以采用特定的非零偏差时钟树,来获得有益的功耗降低以及时钟频率和电路稳定性的改善。