逻辑这回事(三)----功耗优化

低功耗设计概述

低功耗设计动机

  • 功耗的增加影响芯片Power grid(电源网格)的设计;
  • 功耗的增加导致芯片温度的上升,进而带来一系列影响。如Leakage Power增加;电路时序可能变差;IR Drop(IR压降)变大;
  • 功耗的增加导致芯片封装成本和散热成本的增加(packing cost、cooling cost)
  • 功耗的增加会影响芯片的长期可靠性(Long Term Reliability);
  • 对于便携设备来说,功耗的增加会导致电池寿命的降低和重量的增加;
  • 某些产品对对耗电有严格要求,例如基站的用电成本占运营商开支的30%。

CMOS电路功耗来源

CMOS电路功耗=动态功耗(Dynamic Power)+静态功耗(Static Power).

(1)静态功耗(Static Power)

静态功耗(Pstatic)是指电路不翻转时所消耗的功耗,器件中所有晶体管的漏电流(源极到漏极以及栅极泄露)引起的功耗,以及任何其他恒定功耗需求,即leakage power。电路处于静态时,由于 CMOS管没有完全关断,源漏之间的亚阈值电流和有源区与衬底之间的反向漏电流仍会造成功耗消耗。静态功耗主要由上述两种漏电流造成。

,其中Igate为有源区与衬底之间的反向漏电流,Is→d为源漏之间的亚阈值电流。

  • 静态功耗增加的比例大约是温度增加的3次方(或1.03倍)
  • 随着工艺提高,要求沟道相对宽度L减小,漏电流越大;
  • 静态功耗与供电电压呈线性关系

(2)动态功耗(Dynamic Power)

动态功耗(Dynamic Power) = 开关功耗(Switch Power)+ 短路功耗(Short-current Power)

Switch功耗(Pswitch)是指CMOS电路输出发生翻转时对负载电容充放电时所消耗的功耗。负载电容包括net电容和gate电容,

其中,A为电路翻转活动因子,C为电路负载电容和固有电容,f为电路工作频率。Switch功耗与供电电压呈平方关系,随逻辑反转率线性增长;逻辑的布线影响C,进而影响动态功耗,C是同等规模FPGA比ASIC功耗大的主因。

Short-current功耗(Pshort)是指 CMOS电路的输入变化导致输出状态翻转的时候,在电源和地之间形成的短暂通路所消耗的功耗(可以理解为Q1、Q2的延迟不一致,当Q1导通时,Q2也导通,会形成一瞬间的VDD到GND的通路), Pshort = A*V*Isc*f,其中,A为反转活动因子,V为供电电压,Isc为短路电流,f为运行频率。

功耗优化时间窗

低功耗设计涉及系统设计、架构设计到生产工艺的各个阶段,不同的设计层次采用相应的功耗优化设计技术。实践证明,按照自顶向下的电路设计方法,在不同设计层次上对功耗进行优化时,改善的程度是不同的:设计层次越高,优化所能达到的效果越好。 

以微处理器设计为例,在系统结构级上进行优化,它们的优化程度20%~90%不等,RTL(寄存器传输)级优化程度为10%~15%,而到版图级时优化程度则小于5%。

低功耗设计目标的实现是权衡收益与代价的结果。芯片设计是一个追求性能、面积和功耗等多个设计目标的过程。总的来说,面积 、成本、性能、功耗、风险、进度等因素都是相互关联和相互影响的,优化芯片的功耗势必会影响到芯片的其它方面,例如高性能必然伴随着高功耗。低功耗设计的目标就是采用各种优化技术和方法,在各个设计目标之间找到最佳的结合点,选择一种较好的折衷方案。

低功耗编码

复位方案

复位信号的扇出和功耗,都仅次于时钟网络,设计原则上要简化复位网络,减少对布线资源的占用。大规模逻辑的reset的网络占用了走线资源,如果能省掉一半的reset布线,其他信号就拥有了更多的布局布线选择,拥塞会缓解,时序有优化,功耗同样可以优化。

建议数据路径尽量不用reset,控制路径如果必须用,也尽量用同步复位。ASIC芯片无复位寄存器面积小于带复位寄存器,功耗也小。例如3种28nm HPTSMC工艺下的寄存器参数,可以发现同一类型下面积差别如下;

同步复位比无复位的REG面积大约5~15%左右;

异步复位比同步复位的REG面积大约0~10%左右;

Memory方案

设计原则:合理使用Memory模式,降低Memory组件功耗。

设计原则描述:系统设计时,优化Memory数目和大小。大规模逻辑Memory功耗占比较高,通过控制Memory使用,减少Memory反转,降低Memory功耗。

  • 在设计上尽量减小Memory的大小,减小无效读写次数,避免无效访问。尽快利用计算后的结果,减少对临时存储的需求。
  • 门控处理:用Memory的片选信号(或者读写使能)对时钟和地址/数据总线进行门控处理,减少时钟和地址总线不必要的翻转。例如某些Memory在某种工作模式下没有用到,则可以关闭时钟信号。在没有读写操作时必须为无效状态,地址在没有读写操作时必须为固定值,例如为上一次操作的历史值。
  • 存储器分片处理,减少同时访问Memory块数,降低整体功耗。通过将系统所需要一定容量的存储器分成多块,然后高位地址线进行片选译码。通过这种分片方式,来降低Memory访问功耗,适用于大块Memory。越大的Memory,时序越差;分片处理可降低Memory功耗,对Timing也有好处,但是对面积指标会有影响。将小的Memory合并为大的Memory,可以减小面积;将大的Memory拆分为小的Memory,可以降低功耗和优化时序,这两者在设计时需要进行折中权衡,例如:1024*32的两块RAM和2048*32的一块RAM。面积:1块2048的比2个1024的小;功耗:采用2块1024的RAM,每次读写只操作了2块中的一块,读写的动态功耗小。采用1块2048的RAM,读写的总次数不变,但是由于每次操作的都是一块大RAM,读写的动态功耗大。

平均动态电流(mA)

芯片面积(mm2)

优化前

13.4

6.4

优化后

11.2

6.4

  • 小深度的RAM由寄存器数组替换,深度小于64的RAM,建议用存器数组来实现,功耗和布局上都有帮助。
  • WRITE_MODE推荐全部用NO_CHANGE模式,功耗最优。
  • RAM的读使能启用,不访问时建议启用ram sleep mode。并且RAM读出的数据用读使能锁存,减少数据的翻转。
  • 挖掘更有效的数据存储格式,减少对冗余信息的存储。
  • 采用合理高效的层次化Memory结构,提高Memory使用效率,合理安排片内片外Memory比例。
  • 控制对Memory的读写操作次数,提高读写效率对Memory地址和数据总线的处理。
  • 编码处理:对地址总线进行编码,编码的目的是为了降低地址总线的翻转率;例如,对于深度为2^n,并且地址规律递增或者递减可以进行格雷码编码,减少地址bit位翻转,降低功耗。
  • Memory选型

对于ASIC:

  1. 如果Vendor提供低功耗Memory库,在性能和面积满足要求的情况下,建议选用低功耗Memory库。通常我们以端口功能来对Memory分类,对应到物理实现上,每一种memory,都有多个不同的类型可以选择,包括HSD(高速)、HDE(高密度)等。Memory的功耗、面积与其bit数,并不是理想的比例关系,具体选择哪一种memory类型,需要实际综合一下看看。另外注意进出低功耗模式有时间开销,需要在设计中提前考虑能否及时切换。
  2. SRAM和RegFile之间的选择:如果SRAM和RegFile深度和位宽规格相同对两者的面积和功耗进行评估,从中选择更优的。
  3. 一般Memory具有Power gating/power retention等低功耗特性,支持这些低功耗特性的Memory面积会稍稍变大,根据应用场景分析且在面积成本可接受的前提下,推荐选用这些低功耗特性Memory;可在Memory idle条件下彻底关断电源以节省漏电。

对于FPGA:

  1. WRITE_MODE推荐全部用NO_CHANGE模式,功耗最优。
  2. 大块的RAM使用URAM替代(X 16nm FPGA以后);
  3. RAM的读使能启用,不访问时建议启用ram sleep mode。并且RAM读出的数据用读使能锁存,减少数据的翻转。

组合逻辑电路

设计原则:优化流水线,减少组合逻辑毛刺,降低功耗。

设计原则描述:组合逻辑,尤其是异或逻辑,每次输入的任何变化都会改变输出值,对于高位宽XOR逻辑,功耗会非线性增加。

插入REG分解流水

加解密压缩以及CRC模块存在大量高位宽的XOR逻辑,导致信号反转率飙升,信号消耗的功耗较大。解决办法是在中间插入寄存器,但会额外增加一个周期的延时,如果无法承受这部分时延,建议插入下降沿触发器,这会影响时序,但对功耗有帮助。

操作数隔离技术

对设计中的算术运算单元做操作数隔离设计,主要思想是:在不进行算术运算的时候,使这些模块的输入保持不变,不让新的操作数进来,使得输出结果不会翻转;而在进行算术运算的时候,再将它们打开。从而去除算术单元的冗余运算,达到降低翻转率的目的。以乘法器为例,是一个组合逻辑,输入数据如果一直在变化,那么这个乘法器会一直有相应的动态功耗。

超前计算技术的本质是操作数隔离,主要针对复杂运算。一般地,一个复杂的运算过程通常由很多计算步骤组成,而这些计算步骤由不同的功能逻辑完成。针对某一种具体的输入,有些计算步骤其实并不需要,可以简化关键是如何判断。因此,可以通过超

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql 8.0.37 安装教程

图片有点长,慢慢来 安装教程 安装地址:MySQL :: MySQL Downloads 进入官网 下载社区版 此处有两个版本,我们下载的是8.0.37版本 第一个需要联网安装,我们现在第二个离线安装 server only:仅安装MySQL server clien…

Java18+前端html+后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统(用户端)介绍

Java18前端html后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统(用户端)介绍 家政服务用户端是一个为家庭用户提供便捷、高效家政服务的应用程序。 以下是家政服务用户端的详细功能描述: 一、注册与登录&#…

day46 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 01背包内嵌的循环是从…

BearPi-HM Nano开发笔记

小熊派 简单介绍 BearPi-HM Nano开发板是一块专门为鸿蒙OS设计的HarmonyOS开发板,板载高度集成的2.4GHz WLAN SoC芯片Hi3861,并板载NFC电路及标准的E53接口可拓展 E53接口 介绍 E53接口标准为“物联网俱乐部”联合国内多家开发板厂家制定的物联网案…

80个GitHub上c/c++学习项目推荐——拎几个出来写进简历

1.《30天自制C服务器》 ①语言:c ②来源:GitHub 目前star:4.8k ③项目地址:https://github.com/yuesong-feng/30dayMakeCppServer ④类型:免费 2.《btop》(命令行资源监视器) ①语言:c ②…

【六一儿童节】的科技奇幻旅程:解锁【机器学习】与【人工智能】的无限创意

目录 一、机器学习与人工智能简介 二、六一儿童节的特殊意义 三、项目概述:智能绘画助手 四、技术栈和工具 五、数据准备 六、模型训练 1. 数据预处理 2. 构建和训练模型 七、智能绘画助手的实现 1. 搭建Flask应用 2. 客户端界面 八、扩展功能与优化 1…

图像交换部分区域或帧

生成一个boundingbox,或区间 给定矩形框占图像的面积比例,和图像的宽W高H,生成矩形框。根据给定的矩形框,交换两张图像的部分区域。 这里为了方便展示,简化问题,给定一个图像数组mels,对第 i …

从零到一的程序猿-day2-yoloV4训练及免环境易语言调用

简介 本项目功能介绍:针对4位英文数字随机组合的验证码抽象图片进行分类识别,识别结果为验证码内容 训练 没有难度,手动标注,样本为150张,首先识别出图片中每个英数的位置,再由分类器进行标注识别&#x…

Github:ChatTTS从下载到使用

前言 本文使用工具: Anaconda :直接进行包管理,用来自定义生成python解释器,虚拟环境vscode:用来执行代码 注:我使用的Ubuntu,使用win,mac等,需要额外配置 简介 Chat…

【环境栏Composer】Composer常见问题(持续更新)

1、执行composer install提示当前目录中没有 composer.lock 文件时 No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Composer 在执行 install 命令时会…

Pytorch线性回归

使用pytorch来重现线性模型的过程,构造神经网络module,构造损失函数loss,构造随机梯度下降的优化器sgd。 一 revise 首先确定我们的模型,我们希望完成的目标就是得到较小的loss,所以我们就需要一个标量值的loss。 那…

YOLOv10(2):网络结构及其检测模型代码部分阅读

YOLOv10(1):初探,训练自己的数据-CSDN博客 目录 1. 写在前面 2. 局部模块 (1)SCDown (2)C2fCIB (3)PSA(partial self-attention) 3. 代码解读 &#x…

手把手教大家如何使用Kaggle平台的免费GPU资源跑深度学习模型

如果手头没有GPU资源是没法很好进行学习和实操各种深度学习模型的,所幸有一些平台提供了GPU资源供广大兴趣爱好者进行免费使用。 一、免费GPU资源的平台 1. Google Colab 地址:https://colab.research.google.com/ 简介:Google Colab&…

ssm_mysql_高校自习室预约系统(源码)

博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

IDEA中,MybatisPlus整合Spring项目的基础用法

一、本文涉及的知识点【重点】 IDEA中使用MybatisPlus生成代码,并使用。 Spring整合了Mybatis框架后,开发变得方便了很多,然而,Mapper、Service和XML文件,在Spring开发中常常会重复地使用,每一次的创建、修…

权限修饰符和代码块

一.权限修饰符 1.权限修饰符:是用来控制一个成员能够被访问的范围的。 2.可以修饰成员变量,方法,构造方法,内部类。 3.例子: public class Student {priviate String name;prviate int age;} 二.权限修饰符的分类 有四种作用范围大小…

详解寄存器模型reg_model的auto_predict

什么是reg_model镜像值? DUT的配置寄存器的值是实际值,reg_model有镜像值、期望值的概念。 镜像值:存放我们认为此时DUT里寄存器的实际值。 期望值:存放我们期望DUT寄存器被赋予的值。 什么是auto predict? 那么怎么更新reg…

安卓ANR检测、分析、优化面面谈

前言 一个引发讨论的楔子,以下三种现象有什么区别: App停止运行App暂无响应App闪退 答案: 产生原因不同:停止运行是UNCheckExceptionError暂无响应是ANRDialog闪退是CheckExceptionError 本文讨论的主题是ANR的定义、分类、复现…

内核注入DLL,支持注入PPL

这是我的个人项目,目前功能: 内核注入DLL到进程,支持注入PPL进程,可绕过任意代码卫士保护,签名校验。内核调用应用层任意函数,支持常见的调用约定。 后续可能会增加: 代码注入 Rookit和Anti-…

E. 矩阵第k大

看到这句话,其中任意两个数都不能在同一行或者同一列 经典的网络流/匈牙利 由于小白看不懂网络流 (其实是我不会) ,不妨就讲讲匈牙利 匈牙利算法 前置知识: 二分图 匈牙利(是个人)算法是二分…