SoC系统的低功耗设计(三)功耗降低技术

您所在的位置:网站首页 npu是啥 SoC系统的低功耗设计(三)功耗降低技术

SoC系统的低功耗设计(三)功耗降低技术

2023-04-09 23:53| 来源: 网络整理| 查看: 265

通过前面两篇文章我们学习了现代数字芯片中主要的功耗来源、降低功耗的必要性、如何对功耗进行分析等内容:

这一篇文章将从系统级、RTL级、门级、电路级、版图级这几个不同的层面分析如何降低功耗。

1、系统级低功耗设计和优化技术1.1、软硬件划分软硬件划分是从系统功能的抽象描述(如C语言)着手,把系统功能分解为硬件和软件来实现。对于一个系统功能的任务,可通过在微处理器上运行软件来实现和通过专用电路实现。比较两者的功耗得出一个低功耗的实现方案。软硬件划分的技术处于设计的起始阶段,可以给降低功耗带来更大的可能。

对于一款SoC芯片而言,软硬件如何进行划分通常由芯片架构师决定。理论上硬件能够实现的功能,软件一定也能实现。对于灵活性较强,且计算频率不是特别高的运算单元(或者是算子)如果使用专用的ASIC电路实现,会显得得不偿失。而对于计算密集型且计算频率特别高的运算单元,使用硬件实现,可以利用流水线和并行等技术大幅增加系统吞吐率,减少系统延时。上面也是一些最基本的划分软硬件的方式,真实的SoC设计中,这一部分非常重要,需要工作多年的架构师和下属员工展开充分的讨论,才能够得到相应的结果。ZYNQ、EFPGA等技术都充分体现了软硬件协同设计的思想,如何更好的进行软硬件划分,需要大家多实践才能体会。此外有关高效的软硬件协同设计,大家可以看一下下面这个视频和对应的文章,讲的非常好。

1.2、指令集优化

什么默认大家都知道什么是指令集。指令集是处理器的语言,规定了处理器的行为。传统的CPU、GPU、近期流行起来的NPU等都是基于指令运行的(NPU不一定是)。对指令集进行优化可以显著降低功耗,指令集优化主要包括以下几个方面:

指令集提取:对于确定的处理器,其每条指令的功耗是一定的,选择一个指令集实现系统并使得功耗最小。选择合适的指令长度(如16位、32位、64位或可变长度)以及指令压缩:如CISC的变长指令,ARM的thumb指令,RISC-V的C(compress)类指令,都是采用这种方式来提高程度的代码密度,以减少对存储器访问的功耗。其核心思想在于用更少的代码字节数,做更多的事情。因为本身从ICache/IRAM搬运数据对处理器而言就是很大的一笔开销。指令编码优化:通过对应用程序指令相关性的统计,对指令进行编码优化,使读取指令时总线上的信号翻转最少。你以为ARM/RISC-V/MIPS等指令集架构在制定的时候,指令编码都是随便规定的吗?那你就太Naive了。对于这种通用处理器设计,相关的研究人员会统计最常见的应用程序,需要哪些指令,指令与指令之间是什么关系,不能一条指令到另外一条指令翻转太多,考虑这一系列的因素。最终制定出你现在所看到的指令集架构。目前各个公司的NPU设计有没有类似的优化我不太清楚,但我认为如果可以统计哪些典型网络跑的最频繁,先跑哪个算子再跑哪个算子的概率最大,从而制定相应的编码,可以有效地降低相关功耗,如果只是凭空想象指令编码,那就有点too simple了。1.3、动态功耗管理

动态功耗管理是一种使系统或系统单元在不工作时候进入低功耗的休眠状态的控制技术。由于系统在正常工作状态和休眠状态之间的转换需要时间,会影响系统性能。

动态功耗管理技术的核心就是如何根据系统的状态信息决定系统何时进入低功耗的休眠状态。动态功耗管理的实现需要有操作系统(Operating System,OS)的帮助,非常适合在嵌入式系统使用,事实上目前大部分的MCU都有相应的机制。下面是恩智浦的一个文档,是学习MCU如何使用功耗管理技术一个非常好的学习资料。1.4、总线技术

根据维基百科的定义:总线(Bus)是指计算机组件间规范化的交换数据(data)的方式,即以一种通用的方式为各组件提供数据传送和控制逻辑。总线由于电容大、数据传输密度高,产生大量的功耗。总线的低功耗设计技术包括:

减小总线上信号的电压变化幅度(通常小于1V)对降低具有特大电容总线的功耗非常有效,它的额外代价是总线和功能模块之间的信号电平的变换电路。对总线进行分段控制,根据总线和功能模块连接的物理结构,在信号传输的时候,隔断总线的无关部分,从而减小总线的实际电容,以达到降低功耗的作用。通过对总线数据进行编码,是数据在总线上传输时引起的电平翻转减少(即减少了活性因子)。该方法使用最广泛、关于这一方法有相当多的研究。2、RTL级低功耗设计和优化技术2.1、状态分配

有限状态机的状态分配对其最终逻辑实现的面积有很大的影响

编码算法来减小每个状态转换过程的平均比特变化(如格雷码)。将相关性强的状态分配汉明距离近的状态编码,来减小状态转换引起的电路活动。(很自然的逻辑,相邻的状态本身编码就该靠近)。2.2、时钟技术门控时钟(Gated Clock)技术在系统的某一部分电路处于空闲状态或做无用运算的时候,使其时钟信号无效,从而有效减少时钟驱动的功耗。这个相关的文章非常多,大家可以搜来看看。另外一个常用的方法是双边沿触发器(DDR),此时输出在两个时钟沿都会发生改变,这样有效速率就达到系统时钟的两倍。这个额外的速率可以换取电源电压的降低。2.3、预计算逻辑

预计算逻辑的基本思想是有选择地对电路输出的逻辑值进行提前一个时钟的预计算,然后利用预计算的值来减少电路内部的开关活动。这个其实很好理解,就是在不影响关键路径的前提下,在本级逻辑中多算一些下一级逻辑需要的数据,减少下一级逻辑需要的运算,此方法还可以缩短关键路径。

G应该尽可能多的包含输入信号,但又不能使得G太复杂。电路的面积会有所增加,必须选择非关键模块和非关键路径的信号进行预计算。3、门级功耗降低技术3.1、用于低功耗的重定时

重定时是在流水化电路中,插入新的寄存器或者重新安排寄存器的位置。在流水线的设计中,通过对寄存器插入位置的调整,可以减少寄存器的数目和改善延时。

如下图, E_0C_{L1}+E_{1}^"C_R+E_2^"C_{L2}3.2、路径平衡

路径平衡是指为使得某一逻辑门的几个输入信号同时到达,而采用的路径延迟等技术。路径平衡技术能大大减少在该逻辑门输出端产生多余翻转的可能。

3.3、工艺映射

工艺映射就是把逻辑表达式或布尔网络映射到目标库中的门单元的过程。其基本原理是把翻转率高的节点隐藏到负载电容小的门单元内部,从而降低功耗。

如下图所示,将高翻转率信号隐含在单元中,且单元驱动的负载又小,因而明显缩小功耗。

3.4、晶体管和逻辑门尺寸优化

门尺寸优化的基本思想是对非关键路径的门可以缩小尺寸以减小面积和功耗。如果电路的性能不是其设计约束,那么可以通过减小所有门的尺寸来获得低功耗。因此门尺寸优化问题可以转化为满足给定延迟约束条件下的功耗极小化问题。

3.5、晶体管重排序和引脚分配

一般情况下,对于库单元功能相同的引脚,在综合时是等价的。但实际上,不同引脚的电容、信号延时等参数是不同的。引脚分配的基本思想就是将活性因子大的信号结点分配到输入电容相对小的引脚。

将控制值中最大概率的输入信号分配到靠近门输出端的晶体管。由于该晶体管经常被关断,该方法可以组织内部节点进行不必要的充电和放电。

4、电路级功耗降低技术4.1、电路风格

一般来说,一个给定的逻辑函数可以用多种不同的逻辑风格实现,例如静态CMOS、动态CMOS、传输晶体管、差分级电压开关逻辑等。

传输晶体管逻辑风格最适合低功耗设计,因为相对于传统的静态CMOS电路,传输晶体管需要更少的晶体管。

4.2、可变电压技术和多电压技术可变电压技术(时间上改变电压)降低工作电压是最有效的低功耗方法。通常电路都工作于相同的电压,而可变电压技术根据系统的不同工作状态对系统性能的不同要求,动态的改变电压从而最大限度地降低功耗。电压转换电路的功耗和电压转换时间对性能的影响是这项技术选择的制约因素。多电压技术(空间上改变电压)多电压技术的思路与可变电压技术类似。可变电压技术在时间上改变电压,而多电压技术在空间上使用不同的电压。根据系统不同部分的不同性能要求,使其工作于不同的电压,从而降低系统功耗。不同信号电平转换的系统代价是其主要的制约因素。模块间的多电压技术随着 V_{DD} 减小,阈值电压也减小(相互匹配)。这种方法引起漏电流的显著增加。为了关断漏电流,已经出现了很多方法,比如CMOS多阈值电压或者是变阈值电压方案。这些方法需要另外的工艺处理或者是额外的衬底偏执控制电路。采用并行结构来确保整个电路所需要的性能,但是这会导致并行数据通路的面积显著增加。模块内的多电压技术保证时间约束的前提下,在模块的非关键路径部分采用低电压 V_{DDL} 优点:不需要改变阈值电压;不需要生成并行数据通路方法:找到逻辑电路中有多余松弛量的逻辑门;在这些逻辑门上应用低电压 V_{DDL} ,如下所示:标黄的采用低电压

接下来我们做个题加深一下理解:

解答如下:其中 t_d 为模块的延时,要保证关键路径延时不变。

4.3、多/双 V_{th}

从公式 T_d=C_LV_{DD}/(V_{DD}-V{th})^2 可以看出:

降低电压 V_{DD} 提高 T_d 降低阈值 V_{th} 降低 T_d ,但是增加了泄露功耗。

几个解决的方案:

多阈值电压CMOS可变阈值电压CMOS弹性开启电压CMOS

如下图所示,关键路径可以使用降低阈值电压,从而降低延延时。

5、版图级功耗降低技术

版图优化必须同时优化器件和互连。这方面的大部分工作是基于Elmore模型。这些模型没有显式地将互连延迟和功耗与晶体管、引线的尺寸联系起来。因此有必要建立适当的模型,以利于版图级的优化。

深亚微米技术的应用,使得互连线的功耗逐渐成为整个电路功耗的主要部分。过去的布局布线技术只考虑面积和延时的因素,在加入来自设计前端的信号互动信息后,以实现对功耗的优化。

6、总结

功耗降低技术的应用举例:

如下图所示,采用门控时钟、总线翻转、DVS(动态电压调节)几个方面的优化,有效地降低了功耗。

低功耗设计的一些基本策略:

权衡面积和性能,使用并行、流水化和分布式计算等方法,用面积或时间换取低功耗;避免浪费,停掉不用的逻辑和时钟;使用多电压、变电压的设计;使用专用电路而不是可编程逻辑;使用规则的算法和结构减少控制符合;采用新型的低功耗器件和工艺。

最后总结一下这三篇文章:

数字CMOS电路的功耗表示:用概率论的知识来分析毛刺功耗低功耗设计方法概述

总而言之,低功耗设计是个博大精深的话题,大公司一般有专门的团队负责这一块,相关的文献、书籍也有很多,这里只是给大家入了个门。如果对这方面感兴趣,可以去低功耗部门工作,看相关的文献或者书籍。这一系列的文章到这里完结了,希望对大家有所帮助。

考资料主要是之前上课的课件,如果有侵权请联系我删除。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3