标题：功耗
功耗
拼音：gōnghào
英文：power waste（正确的说法是 power consumption）
待机功耗
2001年，欧盟要求额定输出功率0.3W~70W的无负载功率损耗均为1W；2005年，欧盟将该标准变为额定输出功率0.3W~50W的无负载功率损耗为0.3W、额定输出功率15W~70W的无负载功率损耗为0.75W。由此可以看出，大家对电器产品功耗方面的要求正日益严格。  功耗为了符合欧盟等组织针对产品功耗而制定的种种规范，很多新技术应运而生，主要思想是让开关电源在负载很小或空载处于待机状态时能够以较低开关频率操作。 
TI公司提供的UCC28600电源方案，在30%~100%输出功率段，采用准谐振零电压和固定频率不连续模式相结合的电源控制方式，以及高达1A的驱动能力，使得反激式电源的开关损耗大为降低，整机工作效率达到85%以上；在10%~30%输出功率段，采用固定峰值电流的关断时间调制模式的电源控制方式，使得电源的动态负载响应和低功率段的转换效率都得到极大的改善；同时在大约10%输出功率段采用跳脉冲的待机控制模式，使得待机功耗低至150毫瓦特。 
UCC28600能直接驱动高达200瓦特的反激式电源，同时UCC28600自身携带的引脚功能能在待机模式下自动关断PFC功能，使得用户的设计更为简洁，费用更低廉。
TDP功耗
热设计功耗TDP的英文全称是“Thermal Design Power”，中文翻译为“热设计功耗”，是反应一颗处理器热量释放的指标，它的含义是当处理器达到负荷最大的时候，释放出的热量，单位为瓦（W）。 
CPU的TDP功耗并不是CPU的真正功耗。功耗（功率）是CPU的重要物理参数，根据电路的基本原理，功率（P）=电流（A）×电压（V）。所以，CPU的功耗（功率）等于流经处理器核心的电流值与该处理器上的核心电压值的乘积。而TDP是指CPU电流热效应以及其他形式产生的热能，他们均以热的形式释放。显然CPU的TDP小于CPU功耗。换句话说，CPU的功耗很大程度上是对主板提出的要求，要求主板能够提供相应的电压和电流；而TDP是对散热系统提出要求，要求散热系统能够把CPU发出的热量散掉，也就是说TDP功耗是要求CPU的散热系统必须能够驱散的最大总热量。
现在CPU厂商越来越重视CPU的功耗，因此人们希望TDP功耗越小越好，越小说明CPU发热量小，散热也越容易，对于笔记本来说，电池的使用时间也越长。Intel和AMD对TDP功耗的含义并不完全相同。AMD的的CPU集成了内存控制器，相当于把北桥的部分发热量移到CPU上了，因此两个公司的TDP值不是在同一个基础上，不能单纯从数字上比较。另外，TDP值也不能完全反映CPU的实际发热量，因为现在的CPU都有节能技术，实际发热量显然还要受节能技术的影响，节能技术越有效，实际发热量越小。
参考指标TDP功耗可以大致反映出CPU的发热情况，实际上，制约CPU发展的一个重要问题就是散热问题。温度可以说是CPU的杀手，显然发热量低的CPU设计有望达到更高的工作频率，并且在整套计算机系统的设计、电池使用时间乃至环保方面都是大有裨益。目前的台式机CPU，TDP功耗超过100W基本是不可取的，比较理想的数值是低于50W。
低功耗SOC设计
（1）为什么需要低功耗？随着SOC的集成度与性能的不断发展，如今的SOC已达到百瓦量级。如Intel的Itanium2功耗约130瓦，这需要昂贵的封装，散热片及冷却环境。根据摩尔定律，每18个月晶体管密度增加一倍，而电源技术要达到相同的增速，需要5年，显然电源技术已成瓶颈。电路里的大电流会使产品的寿命和可靠性降低。电源的动态压降严重的时候还会造成失效。
（2）功耗从哪儿来？功耗一般分两种：来自开关的动态功耗，和来自漏电的静态功耗。而动态功耗又可分为电容充放电（包括网络电容和输入负载），还有当P/N MOS 同时打开形成的瞬间短路电流。静态功耗也可分为几类：扩散区和衬底形成二极管的反偏电流(Idiode)，另外一类是关断晶体管中通过栅氧的电流（Isubthreshold)。芯片的漏电会随温度变化，所以当芯片发热时，静态功耗指数上升。另外漏电流也会随特征尺寸减少而增加。
公式：Ptotal = Pdynamic + Pshort + Pleakage
Pswitch = A * C * V2 * F
Pshort = A (B/12) (V-2Vth)3 * F * T
Pleakage = (Idiode + Isubthreshold) * V
（3)怎样减少功耗呢？首先定义对功耗的需求，然后分析不同的架构，决定如下需求：system performance, processor and other IP selection, new modules to be designed, target technology, the number of power domains to be considered, target clock frequencies, clock distribution and structure, I/O requirements, memory requirements, analog features and voltage regulation.你还需要定义工作模式：如startup, active, standby, idle, and power down等等，当然这些模式是由软硬件共同决定的。
理想的解决办法是不同工作模式下用不同的工作电压，但这又会造成太过复杂的情况，比如你需要考虑不同电压区域隔离，开关及电压恢复，触发器和存储器的日常存储恢复中状态缺失，等等。简单一点来讲，你可以根据高性能/高电压和低性能/低电压来划分你的设计。接下来你可以考虑系统时钟结构，这对减少动态功耗很有用。你可以使用多个时钟域，降低频率，调整相位等等。一般处理器的软件接口控制都可做到这几点。别忘了可能出现的比如glitch,skew,等问题。
一旦架构确定下来，就可以做RTL code了，当然目标还是低功耗。使用EDA工具时注意mutiple threshold leakage optimization，multiple supply voltage domains，local latch based clock gating, de-clone and re-clone restructuring, operand isolation, and gate level power optimization. 
我们一条条的来看：
第一，mutiple threshold leakage optimization。库文件一般有三版：低Vth(快，大漏电），标准Vth,高Vth(慢，低漏电）。工具一般尽量用高Vth cell,而由于timing限制则需用低Vth cell.很明显，选库很重要。
第二，multiple voltage domains。不同工作电压需要库的支持。不同电压区域的划分则需要前后端设计的协作。
第三，local latch based clock gating。这是在成组的flop之前加上特定的clock gating latch.
第四，de-clone and re-clone restructuring。在layout之前,将local clock gating提到更高一级，以利于减少面积，为CTS建立“干净“的起始点。在具体布局时，对local clock gating进行re-clone,以利于优化时钟树。
第五，operand isolation。这一步通过一个通用控制信号，自动识别并关闭data path elements和分层组合模块。
第六，Classical gate level optimization。改变单元尺寸，pin swapping,去除不必要的buffer,合并门，加入buffer减少skew,调整逻辑等等。
SOC的功耗分析大规模集成电路多采用CMOS电路，对于CMOS电路来说，在执行某一任务期间，1个时钟周期的能量消耗为:　
式中:M为系统中门电路的个数，Cm为第m个门电路的负载电容， 为第k个门电路每个时钟周期的开关次数，Vdd为电路的电源电压值。
可以看出，影响系统功耗的主要因素有工作电压、负载电容、门电路的开关次数和时钟数。这些参数就是进行SOC系统低功耗设计的出发点。
SOC不同层次的低功耗设计影响系统功耗的参数调整主要是从系统级到物理级来进行。下面将针对各种不同层次中较为有效的设计方法进行阐述与探讨。 
主要方法有三：(1)软硬件划分软硬件划分是从系统功能的抽象描述着手，把系统功能分解为硬件和软件来实现。通过比较采用硬件方式和软件方式实现系统功能的功耗，得出一个比较合理的低功耗实现方案。由于软硬件的划分处于设计的起始阶段，所以能为降低功耗带来更大的可能。
(2)功耗管理功耗管理的核心思想是设计并区分不同的工作模式。其管理方式可分为动态功耗管理和静态功耗管理2种。动态功耗管理的思想就是有选择地将不被调用的模块挂起，从而降低功耗。静态功耗管理是对待机工作模式的功耗进行管理，它所要监测的是整个系统的工作状态，而不是只针对某个模块。如果系统在一段时间内一直处于空闲状态，则静态功耗管理就会把整个芯片挂起，系统进入睡眠状态，以减少功耗。
(3)软件代码优化软件代码的功耗优化主要包括:①在确定算法时，对所需算法的复杂性、并发性进行分析，尽可能利用算法的规整性和可重用性，减少所需的运算操作和运算资源。②把算法转换为可执行代码时，尽可能针对特定的硬件体系结构进行优化。例如，由于访问寄存器比访问内存需要更少功耗，所以，可以通过合理有效地利用寄存器来减少对内存的访问。③在操作系统中充分利用硬件提供的节电模式。随着动态电压缩放技术的出现，操作系统可以通过合理地设置工作状态来减少功耗。 
低功耗设计的主要方法有:(1)并行结构并行结构是将1条数据通路的工作分解到2条通路上完成。并行结构降低功耗的主要原因是其获得与参考结构相同的计算速度的前提下，其工作频率可以降低为原来的1/2，同时电源电压也可降低。并行电路结构是以牺牲芯片的面积来降低功耗。假定参考结构中的工作频率为. ，电源电压 ，整个数据通路的等效电容是 ，最坏情况下的延迟为 :，则: 。如果采用并行结构，可以使工作频率降为 /2，最坏情况下的延迟可以达到2 ，假定电源电压降低为 /1.8，由于电路的加倍和外部布线的增加，其等效的电容为2 。则:由上式可以看出，并行结构下功耗有明显的降低。
(2)流水结构电路流水就是采用插人寄存器的办法降低组合路径的长度，达到降低功耗的目的。一个先相加再比较的电路中间插人流水线寄存器的流水结构。加法器和选择器处在2条不同的组合路径上，电路的工作频率没有改变，但每一级的电路减少，使电源电压可以降低。假设电源电压为 /1.8，由于加入了流水线寄存器，等效电容变为原来的1.2 。则:由上式可见，采用流水线结构也可以显著地降低功耗。
电路流水化和并行化可以达到降低功耗的目的，这是因为设计者可以选择电路的工作电压。如果电路工作电压固定，2种方法只能提高电路的工作速度，但功耗将相应地有所增加。
(3)编码优化一般可采用One-Hot码、格雷码和总线反转码降低片上系统总线的功耗。
One-Hot码在一个二进制数中只允许1个数位不同于其他各数位的值;格雷码在任何2个连续的数字其对应的二进制码只有1位的数值不同。由于在访问相邻的2个地址的内容时，其跳变次数比较少，从而有效地减少了总线功耗。总线反转码是在传输数据时考虑相邻数据之间的关系来决定传输的格式。当发送部件向总线上传输第 个数据时，会将它和 进行比较，根据比较的结果来决定发送 还是 ，从而减少总线的有效翻转数，进而减少系统的功耗。
除了这几种编码外还有一些更为复杂的低功耗编码，如窄总线编码、部分总线反转编码和自适应编码等，这些编码方式的最终目的就是通过改变编码来降低不同数据切换时的平均翻转次数。在采用这些编码时，设计者应该综合考虑它们带来的其他代价，如增加的编码解码电路等。 在寄存器级进行低功耗设计的主要方法：
(1)门控时钟门控时钟有2种:门控到达逻辑模块的时钟和门控到达每个触发器的时钟。但不管是哪一种，都能起到降低功耗的作用。门控到达逻辑模块的时钟控制方法如下图所示。中心模块提供给模块A和模块B不同的门控时钟，当模块不工作时，可以关闭该模块，从而达到减少功耗的目的。
模块级时钟门控方法
门控到达每个触发器的时钟控制方法如下图所示。当寄存器保持数据时，可以关闭寄存器时钟输入，减少功耗。
门控时钟控制的寄存器
(2)存储分区访问存储分区访问是将一个大的存储模块分成不同的小的存储模块，通过译码器输出的高位地址来区分不同的存储模块。工作中，只有被访问的存储器才工作，其他几块存储器不工作。多模块RAM的架构如下图所示。
多模块ram架构
根据参考文献[[4]，采用此种方法可以将RAM的功耗减少12.5%。
(3)预计算预计算是提前进行位宽较小的计算工作，如果这些操作得到的信息可以代表实际的运算结果，就可以避免再进行位宽较大的计算工作，降低电路的有效翻转率，从而达到降低功耗的目的。