电子发烧友网 > 嵌入式技术 > 正文

动态时钟配置下的SoC低功耗管理详解

2018年02月12日 17:31 次阅读

随着集成电路技术的飞速发展和对消费类电子产品——特别是便携式(移动)面向客户的电子产品的需求,推动了SoC(System on Chip)的飞速发展,也给人们提出了许多新的课题[1]。对于电池驱动的SoC芯片,已不能再只考虑它优化空间的两个方面——速度(performance)和面积(cost),而必须要注意它已经表现出来的且变得越来越重要的第三个方面——功耗,这样才能延长电池的寿命和电子产品的运行时间。

SoC中CMOS电路功耗有:一是静态功耗,主要是由静电流、漏电流等因素造成的;二是动态功耗,主要是由电路中信号变换时造成的瞬态开路电流(crowbar current)和负载电流(load current)等因素造成的[2],它是SoC芯片中功耗的主要来源[3]。因此,解决好SoC中的动态功耗是降低整个SoC芯片功耗的关键。本文后面所提到的功耗就是指SoC芯片中的动态功耗。

如何降低SoC中的功耗,从不同的层面分析会得出不同的解决方案。从芯片的系统级(architecture)角度考虑,有低功耗总线设计、低功耗存储系统设计、低功耗时钟网络设计、开发系统的休息模式、时钟门控等技术;从芯片的行为级(RTL)角度考虑,有信号门控、预前计算、操作数分离、状态机优化、并行和流水结构等技术;从芯片的门级(gate)角度考虑,有缓冲插入、提取因子、单元缩放、管脚交换、相位配置等技术[4]。从越高的抽象层次去考虑功耗问题,芯片功耗优化的幅度就越显著。

本文所提出的基于动态配置时钟的SoC低功耗管理是从芯片的系统级角度考虑的。在最后的实验中,它非常明显地降低了整个芯片的功耗。

1 动态配置时钟的SoC低功耗管理原理

基于微处理器应用的SoC设计,其复杂程度变化很大:在一些应用中可能需要用到所有的硬件资源,但是在其它的一些应用中可能只需要用到其中一部分硬件资源;在一些应用中可能需要很高的工作频率,而在其它的一些应用中却可以大大降低工作频率。动态管理SoC系统时钟的思想就是:不仅动态地管理SoC内部模块的时钟源供给,还可以动态地配置SoC系统的时钟频率。

动态地管理SoC内部模块的时钟源供给就是,根据不同的应用,管理SoC内部的硬件资源。简而言之,就是进行内部模块的开和关的操作。关闭单个模块,可以通过对每个模块设置一个使能位,然后对这个使能位编程做到关闭或打开那个模块。但这样做不是最佳的,原因有二:其一,每个模块的接口部分必须是始终打开的,否则,CPU核无法随时对它的内部寄存器进行编程;其二,通过模块使能位只是关闭了它的功能操作,而并没有把它模块内的时钟树关闭掉,也就是说它里面的时钟树依然处于激活状态,而时钟树所造成的功耗占单个模块功耗的很大一部分。其实大多数模块都是同步系统,系统的所有操作都是在时钟信号的节拍下进行的[5],关闭时钟源能同时达到关闭模块和降低功耗的目的。

动态地配置SoC系统的时钟频率则是以不牺牲系统的性能为前提,动态地管理系统的工作频率来降低SoC的功耗。时钟频率是影响动态功耗的重要因素:[3]。它的工作频率越高,功耗也就越大。但在很多时候,所有的模块并不是工作在同一时钟频率,或者同一个模块在不同的时段可以工作在不同的时钟频率。这些就是动态地配置SoC系统的时钟频率的前提。

图1是整个SoC中的时钟网络(时钟树)。图中的功耗管理模块(power management module)完成这种功能。

图1 SoC时钟网络

2 芯片的低功耗工作管理模式

为了更好地实现动态配置时钟的SoC低功耗管理策略,芯片在其工作中开发出了其低功耗管理机制中的四种工作模式:Slow、Normal、Idle和Sleep。下面结合图2所示的工作模式流程图来说明它的工作机制。

\

图2 工作模式流程

表1为四种工作模式的状态。

表1

(1) Slow模式

当系统复位以后或当系统关掉PLL不需要高速时钟运行时,系统进入到Slow模式。在Slow模式下,系统中的CPU核和所有模块的时钟源都来自晶振。如果这时系统认为有必要关掉某些模块,那么,就可以通过配置功耗管理模块内部的寄存器,把相应模块的时钟源使能位关掉。

(2) Normal模式

如果在某些应用中需要高速时钟,那么就应该切换到Normal模式。在Normal模式下,系统中的CPU核和所有模块的时钟源都来自PLL。当然,在这种模式下也可以根据系统的应用关掉某些模块。如果系统需要调整时钟的频率,可以通过动态配置PLL来实现。但是在动态配置PLL过程中,要注意这样一个问题:因为PLL有一个时钟锁定的时间,在这段时间内,它输出的时钟波形是不规则的,此时不能使用它作为芯片的时钟源。为了保证系统的正常运行,可以暂时把系统的时钟源切换到晶振状态,待PLL的时钟输出稳定以后再把系统的时钟源切换到PLL状态。

(3) Idle模式

如果CPU核在当前状态下已经处理完所有任务,在很长一段时间内都将处于空闲状态,那么系统应该进入到Idle模式。在Idle模式下,只会关闭CPU核的时钟源,而所有的模块都保持原状。但在这种模式下,不可动态配置PLL,以得到不同的时钟频率;也不可以动态地管理各模块的时钟源,因为这个时钟Core已经休眠了,它没办法对功耗管理模块内部的寄存器进行配置。无论前一个状态是Slow模式还是Normal模式,系统都可以进入到Idle模式下;而当系统退出Idle模式时,它应该退回到前一个工作模式。当系统重新需要CPU核进行事务处理时,可以通过一个唤醒信号让系统退回到Slow模式或Normal模式。

(4) Sleep模式

如果整个系统都已经处理完所有的事务,并且在很长的一段时间内都将处于空闲状态,那么系统应该进入到Sleep模式。在Sleep模式下,关闭CPU核和所有模块的时钟源。虽然可以从Slow模式或Normal模式切换到Sleep模式,但是当它退出Sleep模式时,系统只能回到Slow模式。因为为了进一步降低整个芯片的功耗,在Sleep模式时会同时关闭PLL,所以在它退出时只能回到Slow模式,然后根据当前的应用决定有没有再切换到Normal模式的必要。当系统需要再次进行事务处理时,可以通过一个唤醒信号唤醒整个SoC芯片系统。

3 功耗管理模块的实现

功耗管理模块主要由一个状态机、一些多路选择器和一些门控时钟电路组成。状态机的责职就是完成各种模式之间的切换和送出PLL的控制信号。多路选择器主要完成各种时钟源之间的选择,而门控时钟电路则完成CPU核和各模块时钟源的打开和关闭功能。图3是功耗管理模块中时钟源路线。

从图3中可以清楚地看出,在功耗管理模块中例示了两个PLL:一个是主PLL(MPLL),它提供整个SoC中除USB模块以外的所有模块的时钟源;另一个是次PLL(UPLL),它只对USB提供时钟源。MUX完成晶振时钟和PLL时钟的选择,被选中的时钟(FCLK)同时送到CPU核、HCLK和PCLK,然后根据各个模块的需要门控地送出时钟源。这是基于AMBA总线结构的SoC。根据AMBA总线的协议,CPU核、AHB上的模块和APB上的模块的时钟频率可以配置成倍比关系[6]。经过HCLK分频的时钟源只提供给AHB上的模块,而经过PCLK分频的时钟源只提供给APB上的模块。AHB_con 、APB_con、Core_con和USB_con一起管理SoC内部模块的时钟源供给。

\

图3 时钟源路线

4 动态时钟管理中的问题及消除方法

动态地配置整个系统的时钟频率,虽然可以很方便地控制好整个SoC芯片的功耗,但同时也带来了一些负面影响。功耗管理单元中的多路选择器和门控时钟电路是最有可能产生毛刺的,而毛刺对同步数字系统是致命的。它会导致同步的失败、数据的丢失、寄存器进入亚稳态,更为严重的是,使整个同步系统的功能失败。毛刺的产生是因为那些输入信号的时序匹配出现了问题,没有按照既定的顺序出现,或者说那些信号装转换的时机不合适。因此在RTL设计时要保证做到时序的匹配,以降低毛刺产生的可能性。

在功耗管理模块中有三种情况需要用到多路选择器:

a. 由Slow模式切换到Normal模式;

b. 在Normal模式下重新配置PLL;

c. 由Normal模式切换到Slow模式。

图4是功耗管理模块中的一个二选一MUX。它的控制信号是OscillatorOrMPLL,两个选择源是clk_MPLL和clk_Osci,输出是out_ClockSource。当OscillatorOrMPLL为“1”时,MUX选中clk_Osci;当OscillatorOrMPLL为“0”时,MUX选中clk_MPLL。在MUX选择其中任何一个时钟信号之前,clk_MPLL或clk_Osci必须已经稳定下来了。强调一下,这里的稳定不是指已经输送出完整的时钟信号,而是输送出高电平或低电平。这样当选择开关达到它们那一方时,接受到的是没有毛刺的且对整个SoC不会产生操作的时钟信号。虽然在这时因为这种操作把SoC的频率降了下来,但这是暂时的(大约2~3个晶振时钟周期),因此对整个SoC性能的影响是微乎其微的。接下来被选中的信号(clk_MPLL或clk_Osci)才开始输送出没有毛刺的时钟信号,从而最终送出的时钟信号是去除了毛刺的。

\

图4 MUX结构

图5是系统从Slow模式切换到Normal模式时的时序图。通过配置功耗管理模块的内部寄存器打开PLL,即in_PLLStartOrStop信号,由它触发Slow2Normal_r信号,表明当前将要从Slow模式过渡到Normal模式。然后,由这个信号触发Lock TIme 计数器开始计数(计数值由PLL的IP提供商所给的公式中确定),接着先把晶振时钟的使能信号关掉,再把多路选择器打到MPLL那一方。最后,把PLL时钟的使能信号打开,这时得到的就是经过倍频的PLL时钟。

\

图5 Slow到Normal的切换时序

从时序图可以清晰看出,在时钟源切换的过程中,最终送出的时钟(out_ClockSource)频率会很明显地降低下来(大约是晶振时钟频率的1/3或1/2);但是如果选择的晶振时钟频率在10MHz以上,则不会对整个SoC芯片的性能产生影响。

至于门控时钟电路,已经有许多人在这方面作了很广泛的研究,本文不再对此作过多的解释[7]。

5 结论

本文提出了一种SoC芯片的低功耗管理策略。其基本思想是,首先从全局考虑,在满足性能的前提下,根据各种应用环境动态地配置SoC芯片的时钟频率。然后,从局部单独考虑单个模块,通过判断它当前的工作状态决定是否打开其时钟源。

该低功耗管理方案已经应用于我们设计的一款SoC芯片——Garfield。经过表2所列Power Compiler的功耗分析,可以清晰地看出:在Slow模式下的功耗仅为Normal模式下功耗的17%左右,而在Sleep模式下的功耗更低。

表2 功耗分析结果

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

基于嵌入式系统的硬件仿真调试

未经彻底测试的硬件设计不可避免地导致返工,增加设计成本并延长布局流程的网表交付时间,并最终延迟上市时...

发表于 2018-04-12 16:31 7次阅读
基于嵌入式系统的硬件仿真调试

人工智能的机遇和挑战

鉴于这种新AI研究的优点和实际应用已经从实验室过渡到产业,目前业界已经开发了易于使用的软件工具,而且...

发表于 2018-04-08 09:35 3730次阅读
人工智能的机遇和挑战

移动处理器转型生死劫即将到来 曙光在人工智能?

在经历了智能手机的黄金十年之后,移动SoC厂商开始迈入了他们的“中年危机”。可以说,这个一百多克的设...

发表于 2018-04-05 11:41 3926次阅读
移动处理器转型生死劫即将到来 曙光在人工智能?

功耗分析测试入手,详谈IOT测试解决方案

物联网处理芯片 MCU/ECU、BLE/WIFI/Zigee 无线模块完成一个数据处理或传输的时间大...

发表于 2018-04-05 09:27 1924次阅读
功耗分析测试入手,详谈IOT测试解决方案

如何实现嵌入式处理器的低功耗 工作原理是什么?

自适应电压调整(AVS)方法是一种闭环控制技术,它比 DVS 有明显的改进。AVS 采用固有的对工艺...

发表于 2018-04-04 12:20 63次阅读
如何实现嵌入式处理器的低功耗 工作原理是什么?

GreenPAK设计软件和开发工具,几分钟内创建...

Dialog GreenPAK™ 是经济有效的非易失性内存可编程器件,可帮助创新企业集成众多系统功能...

发表于 2018-03-31 08:10 827次阅读
GreenPAK设计软件和开发工具,几分钟内创建...

慧荣科技(Silicon Motion) 图形显...

从设计和配置目前办公空间、零售店、酒店运营和工厂的趋势来看,该方案比以往更具移动性和灵活性。 这对提...

发表于 2018-03-30 12:33 3725次阅读
慧荣科技(Silicon Motion) 图形显...

nRF52840 SoC是市场上唯一支持蓝牙5和...

高端nRF52840 SoC基于Nordic成熟的nRF52系列架构,是目前市场第一款全面支持蓝牙5...

发表于 2018-03-29 10:59 225次阅读
nRF52840 SoC是市场上唯一支持蓝牙5和...

Nordic Semiconductor批量生产...

高端nRF52840 SoC结合Nordic最新的nRF5 SDK和S140 协议栈(RF协议栈),...

发表于 2018-03-28 12:28 2474次阅读
Nordic Semiconductor批量生产...

STM32L152的低功耗测试

发表于 2018-03-26 15:06 336次阅读
STM32L152的低功耗测试

一种低功耗检测金属传感模块

发表于 2018-03-26 13:39 201次阅读
一种低功耗检测金属传感模块

2018无线充电市场竞争加剧,选择MCU还是So...

自iPhone 8/X标配无线充电功能后,无线充电市场开始爆发且持续升温,给国内无线充电厂商带来了巨...

发表于 2018-03-26 09:37 6991次阅读
2018无线充电市场竞争加剧,选择MCU还是So...

[射频芯片] 求推荐性价比高的超低功耗无线射频模块

发表于 2018-03-25 19:57 164次阅读
[射频芯片] 求推荐性价比高的超低功耗无线射频模块

SoC设计是围绕着什么在设计?

 SoC设计是围绕着总线来开展设计的。SoC最需要掌握的核心知识点其实并不是什么SoC的概念之类的,...

发表于 2018-03-25 00:08 1257次阅读
SoC设计是围绕着什么在设计?

基于CK802安全内核开发出面向物联网安全的商业...

中天微积极布局AI领域的嵌入式CPU IP研发与推广,其针对AI领域的新一代CPU内核系列将于近期推...

发表于 2018-03-24 10:27 532次阅读
基于CK802安全内核开发出面向物联网安全的商业...

推荐一款,多串口,低功耗,小体积的ARM主机,可接显示器

发表于 2018-03-20 22:51 1026次阅读
推荐一款,多串口,低功耗,小体积的ARM主机,可接显示器

Arm发布集成式SIM身份认证

Arm 预计,到 2035 年将有 1 万亿台联网设备,而这些设备都将需要一个安全的身份认证,从而使...

发表于 2018-03-20 22:23 59次阅读
Arm发布集成式SIM身份认证

有了硬件模拟器“加持”以太网SoC测试才能“稳准...

现今乙太网路系统单晶片(SoC)设计日益复杂,且电路与功能的模拟验证更是旷日费时;而利用硬体模拟技术...

发表于 2018-03-20 11:08 46次阅读
有了硬件模拟器“加持”以太网SoC测试才能“稳准...

高达40J功率、功能强大的浪涌测试仪PK战

测试结果发现,光耦合器裂成了两半,而数字隔离器安然无恙。 一战成名高下立现,主要的临界安全参数领先(...

发表于 2018-03-20 09:21 874次阅读
高达40J功率、功能强大的浪涌测试仪PK战

动力电池SOC估算复杂方法综述

该领域研究初期,比较常用的方法有开路电压法、安时积分法、放电实验法等,但是这些方法难以运用到实际在线...

发表于 2018-03-18 10:13 801次阅读
动力电池SOC估算复杂方法综述

巧用IC负载开关的特性来安全地降低功耗

为了最大限度地降低功耗,一个简单的MOSFET通常用于为未使用的电路提供电源。 然而,更好的选择是使...

发表于 2018-03-16 17:59 2236次阅读
巧用IC负载开关的特性来安全地降低功耗

硬件仿真如何让嵌入式系统便宜可靠?看完懂了~

在当今竞争激烈的形势下,使富含嵌入式软件的复杂电子设备更快面市,但是同时确保其更便宜更可靠,是一种相...

发表于 2018-03-14 17:07 1821次阅读