数字IC设计之——低功耗设计

news2024/11/16 11:33:41

目录

概述

背景

为什么需要低功耗设计

CMOS IC功耗分析

基本概念

功耗的分类

功耗相关构成

不同层次低功耗设计方法

芯片中的功耗分布以及对应的低功耗方案

低功耗方案

系统算法级的低功耗技术

编码阶段的低功耗技术

门控时钟 Clock Gating

物理实施的低功耗技术

操作数分离(Operand Isolate)

门级电路的功耗优化(Gate Level Power Optimization,简称GLPO)

多电压供电

电源门控(Power Gating)

其他


概述

背景

低功耗设计是IC设计基础能力的组成部分,也是IC设计能力地图中重要的一部分。

对于深亚微米(DSM,deep sub-micron)芯片,例如:0.35um,0.25um,0.18um的物理实施与纳米级(nm,nanometer)的设计中≤130nm,需要在物理实施中考虑的更多,也更复杂。同时互连线延时也会随着工艺的更加先进更加严重。现代电子的发展趋势是:半导体的几何尺寸越来越小、供电电压越来越低、单元的阈值电压越来越小、电路规模越来越大,功耗密度越来越高,漏电流越来越大,在90nm或一下的工艺,静态功耗占整个设计功耗的20%以上。因此对于静态功耗也需要有足够的重视,进行相关的优化与设计。

本文首先分析需要低功耗设计的原因,进一步的,对基本的概念进行介绍以及功耗分析的相关概述。进而针对功耗的问题,在多个layer给出对应的低功耗技术及其优缺点。个人学习总结,水平有限,有问题欢迎指出~

为什么需要低功耗设计

  • 便携设备的要求 便携设备电池容量有限,低功耗是决定长时间待机的关键
  • 可靠性的要求 功耗越大,芯片的有源区温度越高,芯片失效率越高 ,寿命越低
  • 芯片性能持续发展的要求  2004年后,功耗超过100W,能耗密度过大加上散热成本过高导致芯片温度超过能忍受的限度,时钟频率无法再提升(饱和值3~4GHz)
  • 节约能源的需求 例:世界范围内的4亿台个人电脑(2000年数据),每年消耗0.16T kW/h(1011度电)的电能,与26个核电站的发电能力相当

CMOS IC功耗分析

基本概念

能耗:执行特定任务所消耗的能量,单位J

功耗:单位时间的能耗,单位W

功耗密度:单位面积或单位体积消耗的功率,单位W/CM²,W/CM³

吞吐率:or 吞吐量,单位时间执行的操作次数、指令个数或者运算次数

MOPS(Million Operation Per Second):每秒执行多少百万次操作

MIPS(Million Instruction Per Second):每秒执行多少百万次指令

GFLOPS(Giga Float-Point Operation Per Second):每秒执行多少个10亿次浮点运算

功耗效率

消耗单位功率能达到的吞吐率

有MIPS/mW、 GFLOPS/W等

功耗的分类

除此之外,一般使用反相器来对功耗相关的概念进行介绍,反相器的电路图如下所示:

从动静态来分,可以分为动态功耗与静态功耗,其中动态功耗又分为翻转功耗与短路功耗,其中时钟频率,电源电压对翻转功耗有着较大的影响,静态功耗指得是漏电流功耗。动态功耗是在电路条件下的功耗,静态功耗是即使电路状态不改变也会产生的功耗~翻转功耗是实现电路功能必须的,称为有效功耗,短路功耗与静态功耗不是实现电路功能所必须的,称为无效功耗。这里单独开一个小节CMOS IC功耗类型及其影响因素,详细的分析这些功耗的影响因素。这里只是大致定性的有所了解。小节中将会更进一步的解释,同时结合单元库,对一个反相器进行功耗的计算,不在这里展开。

功耗相关构成

本节提供一些顶层的数据,对于功耗在各个层次的相关数据进行展示

不同层次低功耗设计方法

苹果就是软件+硬件共同实现自己的产品,因此在很多方面做的很优秀~同时我们需要在架构设计的时候就将低功耗方案作为一个设计标准,不能仅仅在编码层次进行功耗的优化。该图来自庄老师PPT

芯片中的功耗分布以及对应的低功耗方案

一般时钟树与latch占50%,因此在不需要高频的时候降频,加时钟门控思路是很重要的。I/O占用20%,标准单元占10%,存储模块占用20%。根据设计实验,采用多电源电压的方法可以使得功耗减少30%,门控电路方法可以使得功耗减少50%,衬底电压偏置方式功耗可以减少70%。当然,想来也是一个common部分,不是绝对的,只是一个参考~

该节对应的图片来自《数字集成电路物理设计》

低功耗方案

我们前面了解了功耗的来源,组成,及其计算方式,下面将介绍一些各个阶段的低功耗方案

功耗设计决策方案有

系统设计-编码与算法

设计架构-多电源电压,睡眠模式

设计实施阶段有

RTL门控时钟,多域值,微架构(RTL编码阶段),综合布局布线(物理实现阶段)

那么据此,我们作为前端设计,重点应该学习了解的是编码阶段以及物理实现阶段可以做的优化,在更高层的方案需要结合项目需求,不太具有总领性质的内容,不在这里进行总结。后续有合适的demo在这里补充上例子,同时这里需要考虑是否结合工具的使用,若是有需要,将单独开一篇,这里不进行强制要求。同时没有什么是没有代价的,低功耗方案也是,必定会引入时序或者是面积上的问题,需要根据需求进行取舍。

系统算法级的低功耗技术

系统算法级别的解决方案为系统分割,内存组织管理,电源管理,电压频率选择,算法评估,算法转换。这些可能看起来比较笼统,但是确实在设计中是很重要且相对来说比较困难的部分。需要经验丰富,能力全面的工程师来做。同时这些将决定后面步骤的实现。个人理解这里是对每一个功能的解耦,将不同的功能单独分割开,方便后续的实现。

编码阶段的低功耗技术

本节主要介绍编码阶段的低功耗技术:门控时钟(Clock Gating工具自动加,但是要注意编码风格)

门控时钟 Clock Gating

  • 基本概述与物理实现

时钟门控可以说是编码阶段,作为数字前端人员可以进行优化的,这是一种有效的降低动态功耗的手段,门控时钟电路可以有效的节省20%-60%的功耗。那么什么是时钟门控技术呢?简单来解释:就是使用一个门将时钟给控制住,让其不进行翻转。我们知道时钟是一个设计中翻转最频繁的信号,前面介绍时钟相关的功耗占整个芯片功耗组成的50%。同时触发器都是使用边沿触发的,在当这个触发器不需要使用时钟的时候,可以将该触发器的时钟关掉,就可以节省其动态功耗,从而减少不必要时钟跳变产生的功耗。这就是门控时钟的工作逻辑。

下面是一个简单的门控时钟

当EN为0时,GCLK始终没有沿触发,Q端保持输出。但是这样处理EN可能会带来以下问题:当EN信号到来可能会引起时钟毛刺!显然这是一种为危险的行为,根本原因是不受控制的EN引起的。因此只需要将EN进行控制就可以得到一个没有毛刺的时钟了。

我们引入了锁存器来帮助EN稳定。D锁存器,又称透明锁存器,的功能表如下所示:

在E为0的时候,保持,E为1的时候跟随D端的输入。优化后的功能实现的电路及其时序图如下所示。需要注意,锁存器的E端接时钟,由于有一个取反,因此低有效,D端接EN,可以将其毛刺滤去。因此在CLK为低的时候,为跟随逻辑。当CLK为高电平时候,为保持逻辑。输出的EN就会是一个受控制的EN信号。

根据波形可以看到,EN1的毛刺,仅仅在CLK低电平期间会有,输出的时钟通过与门,就会将其滤去,在CLK高电平期间,为保持逻辑,不会有毛刺的产生。

不过需要注意的是,如果在电路中,锁存器与与门相隔很远,到达锁存器的时钟与到达与门的时钟有较大的延迟差别,则仍会出现毛刺,同样是这个电路,时钟在latch的E端与与门的输入端的skew时钟偏移较大,并且大于latch的D-Q的delay的时候,就会出现毛刺。

上边的例子是CLKB相对于CLKA有延时,那么当CLKB较早与CLKA到来的时候呢?就会有如下的问题,当Td-q的延时>Skew的时候,还是会有毛刺产生。

仅通过与门进行时钟门控不足以满足所有设计要求。仅仅加入一个锁存器也是有可能带来时钟毛刺的,这是由于CLKA与CLKB需要满足一定的时序关系,这个时候ICG Integrated Clock Gating Cell 的引入非常引人注目,它轻松解决了传统方法的问题。如下图所示:将锁存器与与门作为一个单元,就可以解决上述的毛刺。

我们在使用中可以直接使用ICG,而不需要自己搭建门控时钟,ICG门控单元是对Skew作了控制,不存在前面描述的毛刺问题。

同时我们了解到,停时钟就会使得Q的输出保持为Q本身,因此这也是我们使用门控时钟的条件。

  • 编码技巧

根据前面的使用门控时钟的条件可得知,保持逻辑是我们综合出来ICG的必须条件。如下图所示

因此在代码中多写保持逻辑,就可以优化功耗,同时需要看gating的插入率,过低的插入率并不能有效的降低功耗,尽可能使得gating的插入率在80%以上

  • 物理实现

在综合时候使用特定的综合指令,即可指导综合工具帮我们集成ICG。门控时钟的实现主要有两步,一步是设置门控时钟的风格,通过命令set_clock_gating_stale 及其选项来实现;另一步就是在网表中加入门控时钟,通过命令insert_clock_gating来实现

-sequential_cell 选项设置是否采用基于锁存器的风格。

基于锁存器的离散门控单元是默认值,可以通过下面的命令来设置:set_clock_gating_style   -sequential_cell  latch

不使用锁存器的门控单元,可以通过下面的命令来设置:set_clock_gating_style   -sequential_cell  none

使用集成的门控单元则不需要使用这个-sequential_cell来设置了,因为-sequential_cell 选项设置是否采用基于锁存器的风格。使用集成的门控单元直接设置参数就可以:set_clock_gating_style    “integrated”(推荐)

-positive_edg_logic选项(简写为-positive或-pos)设置在RTL代码中用上升沿锁存的寄存器(也就是上升沿沿触发的寄存器)采用何种门控逻辑

-negative_edg_logic选项(简写为-negative或-neg)设置在RTL代码中用下降沿锁存的寄存器(也就是下降沿触发的寄存器)采用何种门控逻辑。

举例:

set_clock_gating_style  -sequential_cell  none  -pos  “or”

该命令设置了不适用锁存器的风格,然后对于上升沿触发的寄存器,其门控单元使用或门逻辑构成。

set_clock_gating_style -positive  “integrated”  -negative “integrated”

该命令设置RTL代码中,无论你的寄存器是上升沿触发还是下降沿触发,控制该寄存器的时钟单元都是使用集成门控时钟单元。

set_clock_gating_style  -minimum_bitwidth  4

上述命令意味着一个门控时钟至少要触发4个寄存器(这是由于引入ICG不可避免的会引入额外的面积,因此需要关注门控时钟至少需要gating寄存器的个数

-num_stages选项用于设置一个多级门控的级数,在有些设计中,顶层的门控信号会分解成不同的子门控信号。在缺省情况下 为1,仅对跟寄存器阵列相连的门控制信号生成门控逻辑

-galbal选项可以使得门控时钟穿越层次结构,如下图所示:

-control_point与-control_signal选项跟DFT有关,用于设置该门控单元在DFT时是否可控,DFT控制信号是scan-enable还是test-mode,以及DFT控制信号与EN信号的组合逻辑是放在门逻辑中的锁存器之前还是之后

合并的命令为"merge_clock_gating_cells",如果两个或以上的门控时钟单元的输人逻辑相等,它们可以被合并。合并只能在一个层次内部进行。合并后,冗余的逻辑被删除。如下图所示:

有时候,我们需要删除某些门控时钟,这个时候我可以使用remove_clock_gating命令.

该部分参见《专用集成电路设计使用教程》9.3.1

举一个例子,例子来源于庄老师PPT,MPEG-4编码器中,90%的寄存器被门控时钟控制,70%的功耗降低都归功于门控时钟,使得其总功耗从30.6mW降到了8.5mW,近似为之前功耗的1/3

至此,门控时钟的概述,编码推荐与物理实现部分均已经介绍,后面就是物理实施的低功耗技术。

物理实施的低功耗技术

本节主要介绍物理实施,或者是数字后端阶段进行的低功耗技术:操作数分离(一般由工具来做,手工做若是有时序问题,将很难处理)、门级电路的功耗优化、多电压供电、电源门控(Power Gating)。

操作数分离(Operand Isolate)

操作数隔离(简称OI)的核心思路是在不需要计算的时候,使用使能控制信号将输入数置于某一个固定值,使之不再进行计算,从而降低动态功耗~实现方式可以使用RTL编码的实行或者是指导综合工具(新思的Power Compiler)来执行。这里我们更多的关注基本的原理,就像CDC问题一样,对于工具的使用其实也是根据这些基本原理作为其原则来工作的,工具的使用可以关注UG,有需要的可以进行学习。先看下面的图示

上图当SEL_0不等于1、SEL_1不等于0的时候,加法器Add_0的结果不需要送到寄存器的输入。为了节省功耗,我们将通过改变电路的方式来控制当不需要加法输入的时候,停止送数据到加法器的输入。

我们可以看到这种方式带来的问题很明显的有面积的增大,时序变得更差。功耗再一定程度上有所改善。需要结合设计需求进行选择。同时可以在编码的时候进行相关操作,但是引入的问题是在时序过紧的时候,过多的OI可能会导致时序问题,过少的OI又很难有一个明显的功耗优化~算是有些难以理解的,当然一般还是根据需求,设计人员自行决定是否需要加做OI。使用工具加OI的好处是可以根据时序,时序不紧的路径添加,紧的路径不添加,来实现一个时序(性能),面积,功耗的折中PPA。

门级电路的功耗优化(Gate Level Power Optimization,简称GLPO)

门级优化是从已经映射的门级网表开始,对设计进行功耗优化以满足功耗的约束,同时保证设计性能,满足设计规则与时序。门级电路的功耗优化包括了设计总功耗,动态功耗以及漏电功耗的优化。在进行优化时,优化的优先次序如下图所示。

优化的相关原则如下图所示

阈值电压和漏电功耗(静态功耗)有如下关系

我们可以利用多阈值电压工艺库的特点进行漏电的功耗优化,设计静态功耗低,性能高的电路。一般可以将关键路径选择延时较短的,将非关键路径选择延时长的路径(漏电较小)。

对于动态功耗的优化有如下方式:

  • 修改单元的驱动能力

  • 技术映射:把高翻转率的连线放入单元内,减小开关功耗

  • 交换引脚:把高翻转的连线接到电容值小的引脚

  • 相位分配(不太理解这里是做了什么)

  • 因式分解:其中b是高翻转率的信号

  • 插入缓冲器

插入缓冲器后,减少了与非门的负载,并使寄存器的输入转换时间变小。

多电压供电

降低供电电压是降低芯片功耗最直接的方式,如下图所示,根据不同的频率要求、单元延时与供电电压成反比关系,对于低频可以使用较低的电压,从而满足时序与低功耗的设计要求。

多电压设计的风格有三种

  • 各电压区域有固定的单一电压
  • 各电压区域有多个固定电压,软件进行控制
  • 采用自适应方式,可以使用软件进行控制

采用多电压技术需要在不同的电压之间进行信号的传递,需要使用电平转换器,将高低电压区域的信号传递到目标电压区域。

电源门控(Power Gating)

电源门控值得是芯片中某个区域的供电电源被关掉,即该区域内的逻辑电路的供电电源断开。

其他

门控输入:暂时切断模块的输入,避免待机时因输入变化而导致的动态功耗,适用于无寄存器的组合逻辑模块,如共享总线

至此,低功耗相关专栏至此结束,回顾来看,制造工艺在其中有着很大的影响。另外的就是需要设计人员,后端人员需要继续努力的,通过相关的技术来优化功耗。

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

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

相关文章

【第六部分 | JavaScript高级】1:面向对象

目录 【第一章】面向对象 | Class创建、构造函数、方法 | Class继承 | 三个注意点 | 静态成员 | 原型对象 __ _proto___ | 类的本质 【第一章】面向对象 | Class创建、构造函数、方法 创建类 class name {// class body }var xx new name() 构造函数 class Person {co…

【Godot】数据响应的方式执行功能

Godot Engine 版本:4.0 beta 6 下载地址:Index of /godotengine/4.0/beta6/ (downloads.tuxfamily.org) 在这个教程中,学会理解以数据为主的进行处理执行逻辑的代码编写方式,虽然看似简单,但是确是方便又好用。 以及下…

Git使用教程

Git项目的三个工作区域的概念: 1、Git仓库Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。 2、工作目录工作目录是对项目的某个版本独立提取出来的内容…

Ansible之 AWX 创建管理项目的一些笔记

写在前面 分享一些 AWX 创建管理项目的笔记博文内容涉及: 容器化 AWX 手工创建项目Demo通过 SCM 创建项目 Demo项目角色,更新策略介绍,SCM 凭据的创建 食用方式: 需要了解 Ansible理解不足小伙伴帮忙指正 傍晚时分,你坐…

ssm项目改造spring boot项目

快速创建 Spring Boot 项目 添加依赖 如果是普通 Maven 项目&#xff0c;需要手动添加。 <!-- 打包方式 jar 包 --> <packaging>jar</packaging><!-- 指定父工程 --> <parent><groupId>org.springframework.boot</groupId><ar…

操作系统学习笔记(Ⅰ):概述

目录 1 操作系统概念 1.1 定义 1.2 功能 1.系统资源的管理者 2.用户和计算机硬件间接口 3.最接近硬件的层次 2 操作系统的特征 2.1 并发 2.2 共享 2.3 虚拟 2.4 异步 3 发展和分类 3.1 手工操作阶段 3.2 批处理阶段 1.单道批处理阶段 2.多道批处理系统 3.3 分…

启明欣欣STM32开发板闪烁LED实验

最近在咸鱼上买了一块启明欣欣的STM32板子&#xff0c;准备在上面测试open62541和CANopen&#xff0c;到货后如下图&#xff0c; 找商家要了资料&#xff0c;然后运行一个LED灯的实验来简单测试下板子&#xff0c;本文记录一下这个过程。 一 准备 安装Keil 5.35&#xff0c;安…

【selection】 学习光标API并实现编辑区插入表情图片的功能

目录场景介绍selection介绍selection APIrange 介绍range API实现编辑区插入表情图片参考资料场景介绍 在写web版聊天器时&#xff0c;遇到一个需求&#xff1a; 聊天时用户可以在编辑区加入表情图片&#xff0c;并且表情图片要插入在光标位置。// *web版聊天器地址&#xff…

useMemo 使用误区

文章の目录问题背景useMemo 使用前后组件性能对比结论问题背景 在某一个h5项目中&#xff0c;使用了 useMemo 对项目中的组件进行优化&#xff0c;减少组件不必要的re-render, 优化后的结果&#xff1a; 在组件的props和状态未改变时&#xff0c;组件不再进行 re-render 表面上…

生意不好如何逆风翻盘 | 多门店经营必读技巧(1):导购管理 连锁店管理的技巧 连锁店生意经 如何做导购管理

很多连锁店老板反馈&#xff0c;为了优化门店的销售业绩&#xff0c;什么方法都试过了&#xff0c;改店铺陈列、搞优惠活动、做会员管理.......为什么分店的业绩还是看不到明显的提升&#xff1f; 方法试过了&#xff0c;结果没变化&#xff0c;那只能是执行这块出了问题&#…

量子计算(八):观测量和计算基下的测量

文章目录 观测量和计算基下的测量 一、观测量 二、计算基下的测量 三、投影测量 观测量和计算基下的测量 一、观测量 量子比特&#xff08;qubit&#xff09;不同于经典的比特&#xff08;bit&#xff09;&#xff0c;一个量子比特|>可以同时处于|0>和|1>两个状态…

Linux从入门到精通(八)——Linux磁盘管理

文章篇幅较长&#xff0c;建议先收藏&#xff0c;防止迷路 文章跳转Linux从入门到精通&#xff08;八&#xff09;——Linux磁盘管理goLinux从入门到精通&#xff08;九&#xff09;——Linux编程goLinux从入门到精通&#xff08;十&#xff09;——进程管理goLinux从入门到精…

C++ 结合mysql写一个服务端

1 libhv和mysql libhv是一个跨平台的C网络库。 mysql是一个关系型数据库。 2 下载MySQL&#xff0c; 最好不要下载高版本的&#xff0c;容易出错&#xff01;&#xff01;&#xff01; 下载地址MySQL 下载好后目录是这样的&#xff1a; 然后在环境变量里配置&#xff1a;…

Hive 3.1.3

1.下载安装包 Index of /hive/hive-3.1.3https://dlcdn.apache.org/hive/hive-3.1.3/ 2.安装&修改配置文件 2.1 安装MySQL a. 搜索centos7默认的mariadb & 卸载 [root@node1 ~]# rpm -qa | grep mariadb mariadb-libs-5.5.44-2.el7.centos.x86_64 卸载 [r…

【计算机组成原理Note】5.4.2 控制器-微程序

5.4.2 控制器-微程序 硬布线工作原理&#xff1a;微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序&#xff0c;即时产生微程序工作原理&#xff1a;事先把微操作控制信号存储在一个专门的存储器(控制存储器)中&#xff0c;将每一条机器指令编写成一个微程序&#xf…

差钱吗?周杰伦线上演唱会没关打赏惹争议,看看同时直播的腾格尔

随着世界杯的到来&#xff0c;全球都进入了世界杯时间&#xff0c;音乐领域的明星们&#xff0c;都以各种形式欢迎世界杯的到来。在世界杯开幕的前一晚上&#xff0c;著名音乐人周杰伦&#xff0c;在某手平台开启了线上演唱会&#xff0c;吸引了众多人前来围观。 据不完全统计&…

【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第七章 Verilog …

【计组】入门篇 --《深入浅出计算机组成原理》

课程链接&#xff1a;深入浅出计算机组成原理_组成原理_计算机基础-极客时间 目录 一、为什么需要学习计算机组成原理 二、冯诺依曼体系结构&#xff1a;计算机组成的金字塔 1、计算机的基本硬件组成 2、冯诺依曼体系结构 三、通过CPU主频谈性能 1、什么是性能 2、计算…

【微信早安定时推送消息】微信公众号定时推送早安消息 带天气、纪念日、生日、定时推送等(完整代码)

我挥舞着键盘和本子&#xff0c;发誓要把世界写个明明白白。 简介 利用所学知识给他/她一个惊喜&#xff0c;是作为计算机专业的你最大的乐趣。 无计算机基础&#xff0c;5分钟即设置好 &#xff08;定时推送 及 最新版 将在下期带来&#xff09; 获取完整代码&#xff0c;关注…

性能测试怎么做?性能测试重点和各项性能测试流程(超级详细)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 性能测试基础 1&am…