5.2 功耗源
浪涌、静态功耗、动态功耗 是三个主要的功耗源。浪涌电流指的是期间上电的时候产生的最大输入电流,也称之为启动电流。
- 电机的启动电流是正常满载电流的数倍。
- 基于SRAM 的FPGA浪涌电流也很大,因为其初始状态是空白的或者可以理解为复位导通状态,加载配置连接之后就恢复长长电流
- 待机电流、晶体管漏电流、电容漏电流也就是静态功耗
- 动态功耗是由逻辑切换的时候造成的额外输出功耗
动态功耗定义式:
P d y n a m i c = S C L V d d 2 f c l k \\ P_{dynamic}=SC_LV_{dd^2}f_{clk} Pdynamic=SCLVdd2fclk
式中 C L = 门 寄 生 电 容 \\C_L=门寄生电容 CL=门寄生电容 S = 每 个 多 时 钟 通 过 整 个 电 路 的 平 均 转 换 次 数 \\S=每个多时钟通过整个电路的平均转换次数 S=每个多时钟通过整个电路的平均转换次数
f c l k = 时 钟 频 率 \\f_{clk}=时钟频率 fclk=时钟频率
V d d = 供 电 电 压 \\V_{dd}=供电电压 Vdd=供电电压
动态功耗在典型应用中占据整个系统功耗的80%左右
5.3 在各个设计层次降低功耗
在系统级、逻辑级、物理级都可以降低功耗,层级越高效果越好。
抽象级 | 功耗降低几率 |
---|---|
系统级 | 10%100% |
体系结构级 | 10%-90% |
寄存器传输级 | 15%-50% |
逻辑、门级 | 15%-20% |
晶体管级 | 2%-10% |
5.4 系统级低功耗技术
- 使用片上系统(1.8v或更低)来降低高io电压(3.3v)之间连接的数据传输损耗。
- 将通常使用软件实现的功能使用硬件实现可以显著降低功耗,需要针对高功耗的循环部分使用硬件进行替代。有两种方法:
第一种是经验法,自己分析自己划分
第二种是数据库法,把用过的划分规则都存下来,以后方便复用 - 优化程序以减少功耗,下列操作有效移除循环计数器的初始化、递增和比较,减少循环指令数目,显著降低功耗
for i :=1 to n
do a
for j :=1 to n
do b
优化为
for i :=1 to n
do a,b
- 选择处理器
4.1 选择一个合适的处理器可以极大的减少功耗,例如16位数据的乘法,用8位处理器需要127条指令,用16位处理器需要30条质量,用1位乘加单元(MAC)来进行运算只需要1条指令。
4.2 能用简单MAC就不用DSP
4.3 各类操作分属不同处理器,各自执行自己擅长的
5.5体系结构降低功耗
- 高级门控时钟:在不需要的时候关闭(永久性删除)多余的不需要的时钟,可以降低大约15-25%的功耗(开关次数)
- 动态电压频率调节:高性能–高电压,高频率;低性能—低电压,低频率,包括电源和主控芯片一同调节,常规应用直接使用软件编程即可,但是实时嵌入式应用需要使用操作系统自带的动态电压频率调节才可以保证满足实时性
- 多级缓存:cache
- 使用对数设计的FFT结构,此时的乘除法就可以变换为加减法。凡是加法器减法器的宽度会增加。
- 异步设计,放弃高功耗的多级时钟
- 粗粒度电源门控(芯片、功能区)和细粒度电源门控(门级)
- 多电压供电
- 存储器电源门控
5.6 寄存器传输级降低功耗
- 使用格雷码
- 二进制数在积分的时候使用有符号数而不是补码来表示
- 门控时钟
- 独热码多路器,就是在多路器前加入多个与门,进行比较控制,2位4输入多路器修改为4位4输入多路器,增加面积缩小功耗
- 消除多余转换,例如输入一个数执行aa操作和bb操作,判断输入a则取aa中的数,输入b则取bb中的数,将判断放在开始,直接省略后续冗余的操作,降低功耗。本法可以在软件和硬件中同时使用
- 资源共享,具有同样基础操作的先执行完然后再判断后续
- 行波计数器
- 总线反转编码,在第一个数据和发出一半总线宽度(汉明距离)之后发送一个反转编码,用于转换
- 提取高度活跃网络:利用高度活跃网络,将低度活跃网络分块,以减少规模
- 门控逻辑云
5.7寄存器级低功耗技术
- 不同的技术水平
- 版图优化,大多是利用工具
- 衬底偏压,pmos升高,nmos降低,用于减小电压反转时的电压变化量
- 大尺寸的期间可以通过减少氧化层厚度来降低漏电流,但是当删级厚度到达1.2nm的时候两字隧穿效应就会导致功耗急剧上升,此事就需要使用高K介质来减少漏电流
- 多样化层降低漏电流
- 定制设计减小电容(扇出门输入电容、线电容、寄生电容)