目录
需要低功耗的原因:
电池寿命&容量;
电路集成密度的增大、时钟频率不断提高,使得功耗问题变严重;
功耗高的负面影响:系统可靠性降低(温度升高导致失效)、性能降低、高功耗需要电源线更宽使得芯片面积增加、系统散热装置成本增高。
功耗的类型:
CMOS电路中的功耗由两部分组成。第一部分为负载电容充放电时引起的功耗,称为动态功耗,另一部分为漏电流引起的功耗,称静态功耗。其中,动态功耗包括翻转功耗和短路功耗。翻转功耗是数字电路要完成功能计算所必须消耗的功耗,称为有效功耗;短路功耗是由于 CMOS 在翻转过程中PMOS 管和NMOS管同时导通时消耗的功耗,称为无效功耗。
动态功耗
充放电时,MOS管从高到低翻转或从低到高翻转(数据传输时有 1->0, 0->1 的变化),都需要固定数量的能量。这就是翻转功耗。在当前的电路中占主要部分。
动态功耗的大小与 CMOS电路的工作频率成正比,与工作电压 ² 也成正比。
静态功耗
静态功耗是指芯片在待机或非工作状态下由于晶体管泄漏电流引起的功耗。这种功耗与芯片的工艺制程、面积、晶体管数目以及电压等因素有关。
漏电流是静态功耗的主要来源,它包括以下几种类型:
-
亚阈值漏电流:这是晶体管应当截止时流过的电流。
-
栅极漏电流:由于栅极氧化物隧穿和热载流子注入,从栅极直接通过氧化物流到衬底的电流。
-
栅极感应漏极泄漏电流:结泄漏电流发生在源或漏扩散区处在与衬底不同电位的情况下。
-
PN结反向电流:扩散层与衬底之间的漏电电流。
随着当前工艺发展,尺寸的不断减小,也降低了电源电压进而降低了一些动态功耗。但是尺寸的减小,也导致了漏电流增加。另外尺寸的减小,总体的晶体管数量是增加的,所以整体上系统的功耗是越来越大的。
soc 中主要的功耗
从总体上看,主要的功耗通常在芯片上的处理器、存储器、时钟树上。
低功耗设计趋势(发展方向):
1. 系统层次上的低功耗设计
系统层次的优化往往对低功耗设计的 贡献最大,因此也越来越受到设计者的重视。这一层次上的优化主要包括两个方面:静态功耗优化和动态功耗优化。
静态功耗优化的研究重点在编译和算法设计上。具体而言,在编译时充分考虑指令的功耗特性,合理配置数据段和指令段在内存中的位置,并调整寄存器的分配;提高算法的执行效率;合理实现任务调度,减少由于频繁的上下文切换所造成的功耗。
动态功耗优化包括在操作系统支持下的动态功耗管理(关闭单元)和动态电压频率缩放(DVFS, Dynamic Voltage and Frequency Scaling)。前者是指将处于空闲状态或非满负荷运转状态的系统单元有 选择的关闭 或减慢运行速度。这主要有几种方式:给予超时(Timeout-based)的关闭策略、基于预测的关闭策略和基于Markov链的随机动态功耗管理策略。后者 DVFS 主要通过调整单元处在工作状态时性能和能耗之间的关系来降低功耗,即 根据性能的需要来分配不同的工作电压和频率,从而在满足性能的前提下,最大限度的降低功耗。
/* 发现也很适合 “经济上的节缩开支”, 哈哈哈哈哈。 减少支出=关闭单元, 按需分配 = 根据性能需要分配电压和频率, 优化 = 算法设计。 嗯,,,,这个优化可以多研究。*/
2. 测试电路的低功耗设计
通常为了SoC的测试方便,都会在系统中集成一些电路专门用于测试,如BIST、扫描链等。在测试环境下,由于电路中的触发器翻转概率比正常工作条件下大得多,由11.2.1节中的电路动态功耗公式可知,动态功耗会相应的增大。所以测试条件下的散热问题也成了SoC 设计中的一个要素。
当前的一个降低测试功耗的设计方向,是在测试电路中加人重排序电路,通过对ATPG生成的测试信号的重排序来减少系统中的触发器的翻转概率,从而減少动态功耗,解决测试条件下的散热问题。
3. 异步电路设计技术 ⭐
之前的大部分的数字设计都是基于使用全局时钟信号即用时钟信号控制系统中所有部件的操作,即同步电路设计。复杂的系统可能使用多个时钟,但是,其中 在每一个时钟控制的区域内都设计成一个同步的子系统 。通过 时钟树综合 的方法将使时钟到达每一个触发器的时间相同,进而保证同步电路正常工作。这种同步设计方法简化了设计的复杂度,使得设计变得高效简单。但在时钟分配网络上添加了大量的缓冲器。随着设计规模的变大和时钟频率的提高,时钟分配网络消耗的功耗将越来越大。
在异步电路中,不需要全局时钟。为了降低系统的功耗,异步电路技术将再次成为热点。但是传统的异步电路需要额外的时间花在询问及应答上面,并且目前BDA 工具还不支持异步电路设计技术。SoC设计用异步电路设计还有很长的路要走。
4. 内存的低功耗设计⭐
随着片上缓存和存储器容量的不断增大,它们所占的面积越来越大,也就是说片上存储器消耗的功耗也越来越多。当前,SoC 芯片中片上缓存和在储器所占的面积已经超过了50%,所以低功耗的存储器技术对于降低系统的功耗相当重要,这也是未来低功耗设计的一个重要方向。
(LPDDR 介绍:LPDDR(Low Power Double Data Rate SDRAM)是一种低功耗版本的双倍数据速率同步动态随机存取存储器(SDRAM),专门设计用于移动设备,对功耗和性能有严格要求 。
特点:
-
双倍数据速率:LPDDR与其他DDR内存技术一样,采用双倍数据速率,意味着数据在每个时钟周期的上升沿和下降沿都能被传输,从而提高了数据传输速率。
-
低功耗设计:LPDDR采用了多种低功耗技术,如时钟门控等,有助于在设备不使用内存时减少能耗 )
低功耗设计方法:
首先要确定性能和功耗的优先级,谁比谁重要?是要尽可能高的性能上降低功耗?还是尽可能低的功耗上提升性能? 这直接影响低功耗的技术方案。
功耗优化自顶向下分别为:系统级、行为级、RTL级、逻辑级优化 和 物理级优化。
层次越高的优化效果越明显,各层级优化方法和 节省功耗能力如下:
低功耗技术:
工艺优化(多阈值工艺、电源门控power gating ,减小漏电功耗)、
电压优化(体偏置、多电压)、
硬件低功耗优化(时钟门控 clock gating 、门级优化(毛刺消除、逻辑优化))、
低功耗系统 / 软件优化(动态电压及频率调节技术、低功耗系统、低功耗软件)。
低功耗技术的综合考虑
多电压技术:系统的功耗和 电压 ² 成正比,所以减小工作电压,可以有效降低功耗。不同的模块使用不同的电压,以不同的频率运行。(需注意:电压的降低使MOS 管的翻转速度降低)
clock gating :
RTL级的低功耗优化技术 时钟门控(clock gating)
门控时钟即 用逻辑门电路控制模块时钟的停或开 。当芯片上的某一模块的功能不需要工作时,如芯片上的USB 模块或SPI接口模块没有使用时,通常会将通往这些模块的时钟停下来。通过关断空闲电路的时钟,可以大量减少消耗在时钟树上的 和 不工作触发器上的功耗。
(1)门控时钟单元的结构和 RTL 实现
图11-19所示为一种简单的门控时钟电路结构,它由一个与非门(全1为0,有0为1)和一个非门组成,甚至可以仅仅引入一个与门(全1为1,有0为0)。其设计开销几乎可以忽略不计,可以说是门控时钟的原型。
题外话:
但是从时钟完整性的角度看,这种设计结构对于大规模的数字电路的实现有一个极大的缺陷— 可能产生毛刺。
在实际系统工作时,如图11-20所示,当源时钟 CLK 为高电平时,如果 CLK_EN 变为低电平,GCLK 将立刻变为低电平,结果一个时钟的下降沿提前出现,即产生一个类似于毛刺的不完整时钟信号,这会影响一些使用下降沿触发器的电路。同样的,当源时钟CLK为高电平时,如果CLK_EN变为高电平,GCLK 将立刻变为高电平,造成一个时钟的上升沿提前出现,这会影响一些使用上升沿触发器的电路。总之,这类在门控时钟上出现的毛刺,对同步电路来说是非常致命的。
由于上述限制,工业界广泛采用的门控电路是一种在上述简单的门控电路结构上加入了一个低电平敏感的锁存器,如图11-21所示,使用低电平敏感的锁存器可以保证时钟使能信号只在时钟低电平区域变化,从而避免了毛刺的产生。
(2)门控时钟的综合和时序分析
随着门控时钟电路设计的标准化,很多标准单元库也提供门控时钟单元,同时也出现了一些可以对门控时钟电路自动综合、布局布线的工具。综合工具在综合门控时钟结构时,可以进行时钟毛刺的检查,虽然此类计算结果并不是很准确。在时序分析时,从图11-21可以看出,时钟时序路径起始于 CLK,数据时序路径起始于CLK,经过锁存器到与非门结束。
(3) 门控时钟的可测性设计
在进行可测性设计的时候,如果要进行全扫描设计,则希望所有的触发器在扫描模式时都由一个统一的同步时钟驱动。如果电路中存在门控时钟单元,则会使得产生的时钟 GCLK不可控制。最简单的解决方法是在门控电路结构前加入一个或门,其输人为扫描测试模式的使能信号和门控时钟使能信号,在测试模式下,时钟的门控时钟单元将被旁路。
(4) 门控时钟的时钟树设计
在时钟树的设计中,门控时钟单元应尽量摆放在时钟源附近,即防止在门控时钟单元的前面摆放大量的时钟缓冲器(Buffer)。这样,在利用门控时钟电路停时钟时不仅能将该模块中的时钟停掉,也能将时钟树上的时钟缓冲器停止反转,有效地控制了时钟树上的功耗。
门级优化:
门级优化通常依赖于 EDA 工具完成。
毛刺消除:加 buffer
*这里的毛刺是指由于电路中信号的传输延迟引起的不必要的翻转,它的存在会引起很大的动态功耗。在有些数据通路的电路中,毛刺引起的功耗占到系统动态功耗的60%以上。
毛刺的消除需要进行大量的计算, 是一件很复杂的事情。图11-25 和图11-26所示为消除毛刺前后的电路,在电路A1 中,信号C上将会产生毛刺,这是由信号A与信号B的传输延迟不同造成的。在电路A2中,经过插人缓冲器之后,信号C上面的毛刺被消除了。显然电路A2 没有不必要翻转,减少了系统的动态功耗。
逻辑优化: 调整门的大小(减小门的输入电容从而减小翻转功耗)、引脚的重分配(用电容低的引脚连接快速翻转的信号)、重排序操作、重新映射(重新映射电路组成)、利用低功耗的标志单元进行设计。
重排序:图11-28和11-29所示为排序前和排序后的两个电路。电路中b信号是翻转率比较大的信号,在排序前的电路中,b的每次翻转要驱动4个门,在排序后的电路中,b的每次翻转只需要驱动2个门,显然有效地降低了系统的动态功耗。
物理级优化:物理级优化主要通过减少翻转和减少负载电容来降低系统的功耗。通过物理级的优化最多可以减少9%~30%的毛刺。还可以通过使用更少的逻辑、更小的驱动、有限的传输时间和更少更短的连线来降低负载电容。
物理级优化主要有以下几种方法:使用低功耗的库、设计低功耗的布局规划、基于功耗优化的布局规划、通过布局布线来减少毛刺、在优化布局的时候调整缓冲器和连线的大小、调整晶体管的大小减少负载电容。
控制输入向量:系统在睡眠状态下,控制输人向量可以明显的减少系统的漏电流。?
低功耗系统:
低功耗软件的设计原则:在满足应用的基础上,速度尽可能慢、电压尽可能低、尽可能满足时间要求。
1、动态电压、动态频率调节技术。
2、低功耗操作系统。在系统软件的运行过程中,最好把没有使用的硬件单元都关掉,称为系统功耗的动态管理。
操作系统的动态功耗管理有以下两种方法:计时的功耗管理和可预测关闭机制。在计时的功耗管理中,当系统进入空闲(Idle)状态时,启动一个计时器,当系统空闲了一定时间后,关掉整个系统。通常采用两种计时方式:固定的计时方式和自适应的计时方式。固定的计时方式在通常情况下很有效,但是在工作负载未知的情况下效率比较差;自适应的计时方式使用一组时间和索引,每一个时间都有一个权重,可以根据工作负载的不同进行自适应的计时。在可预测关闭机制中,当系统进人空闲时,如果预测机制认为此次空闲的时间将超过默认时间,系统将被关闭掉。使用这种方法的一个难题是怎么样去正确预测本次空闲的时间。通常使用静态预测关闭和预测唤醒,其中静态预测关闭包括非线性衰退预测机制和阈值预测机制。预测唤醒一般使用指数平均方法去修正预测错误,提前唤醒系统。
操作系统还可以通过动态调整供电电压和工作频率来控制系统功耗。操作系统可以在满足用户应用的基础上使用尽可能少的功耗,通过降低处理器的供电电压和工作频率可以得到平方级的功耗节省。
3、存储器功耗控制
前面的分析可以看出,存储器的功耗可能会占到了SoC 总功耗的一半左右,所以降低存储器的功耗非常重要。主要有以下几种优化存储器功耗的方法:存储器单元的优化,包括减小漏电流,如双阈值的SRAM 单元、门控电源的SRAM 单元 或者门控接地的SRAM 单元等,使用功耗可控的 DRAM;分层的存储器:将一大块存储器划分为几个单独时钟和电压可控的小段,使用小段,每一个存储器段都工作 在不同的功耗模式下;存储器管理使用多种功耗状态等。
参考书:soc 设计方法与实现,郭炜等,电子工业出版社。
今天发现这个书再版到 2022年的第四版了。文中引用的是第一版的,结构和组成有点不清晰。第四版的更加详细。
—————————————%—————%——————————————————
UPF
什么是 Power Intent 文件?
描述芯片低功耗架构,指导芯片编码(RTL Design)、仿真(simulation)、综合(Synthesis)、后端实现(Physical Design)与时序功耗验证(Sign Off)。
Power Intent 种类:
- "CPF:Common Power Format( Cadence )
- UPF : Unified Power Format ( All )
UPF 适用的设计种类:
- 多电压域架构(Multiple Supply Voltage )
- 电源关断(Power Shut Off)
- 动态电压频率调节(DVFS:DynamicVoltage and Frequency Scaling )
UPF文件内容架构
电源网络定义(Power、Ground Nets)
电压域定义(Power Domain/Voltage lsland)
芯片低功耗工作模式(Power State)
低功耗单元规则(lsolation、Shifter、Power Gating)
芯片边界供电定义(Boundary Ports)
IP单元供电描述(GNC Rule)