沈忱,王宜怀,李成金,胡宗棠
(1.苏州大学物理科学与技术学院,苏州215006;2.苏州大学计算机科学与技术学院)
目前研究分析该系列微控制器低功耗机制资料较少,对开发者而言其低功耗机制理解不够可能会导致开发低功耗应用难度较高。鉴于此,本文以KL25微控制器为硬件平台,对比分析业界几款典型低功耗微控制器低功耗技术,总结了功耗参数及性能;充分分析了影响功耗的因素并给出这些功耗模型的优化方法以阐述其低功耗机理;研究了KL25不同等级功耗模式和时钟模块MCG 之间软件可配关系,并应用在实验室开发的KL25微控制器最小板载系统SD-FSL-KL25-EVB 平台上,实际测试评估了KL25微控制器运行性能。该分析研究对嵌入式低功耗应用产品的开发有着较大的实用价值。
目前,基于CMOS主流制程工艺,从硬件角度,其功耗主要分为动态功耗和静态功耗,并随着工艺尺寸变小,晶体管静态功耗成为影响低功耗设计的主要因素。
动态功率消耗发生在逻辑门状态切换时刻,与门极相关的晶体管内部电容C 被充电,其功耗大小依赖时钟频率f,信号翻转概率N,芯片核心电压V;静态功率消耗是指逻辑门不活动时晶体管开关引起的亚阈值漏电和氧化栅栅极漏电,大小与芯片核心电压V、晶体管开关阈值(Vt)、工作温度T 有关。其硬件功耗模型:
其中Ileak=exp(-qVt/KT),Pdynamic表示系统动态功耗;Pstatic表示系统静态功耗。由式(1)可以看出,动态功耗与电压二次方成正比,与频率成线性关系;静态功耗与温度、晶体管开关阈值成指数关系。所以,低功耗优化可从两方面着手。
在优化动态功耗方面,如降低时钟频率、时钟门控技术以减少电路活动次数;缩小门极驱动的过驱线圈大小,减少驱动电容值(如低k电介质材料或低阻抗/电容铜轨技术);利用多重电压区域,平衡逻辑门功耗与门极开关速度等。
在优化静态功耗方面,如在关键时序路径上使用低开关阈值(Vt)的晶体管,而在非关键路径使用高开关阈值(Vt)的晶体管的多阈值CMOS技术;剥离持续供电和可关断供电的片上门控电源(Power Gating,PG)技术以及更加特殊的状态保持门控电源(State Retention PG)技术,都能降低芯片漏电流和静态功耗。
对嵌入式低功耗的设计,不仅可以从硬件部分进行优化设计,还可通过软件优化来降低系统功耗。由于不同架构支持的指令集不同,所以软件优化方法适用性受限,但作用仍不可小觑,其软件功耗模型[1]:
其中E表示执行程序所耗总能量;I表示某条指令;N1表示该指令执行次数;i表示遍历程序中所有指令;O 表示某两条指令间的附加能量值;N2表示该两条指令出现的次数;j、k表示遍历所有相邻的两条指令;E0表示造成流水线停顿、访问Cache不命中等附加能量;o表示遍历所有这种附加能量。
从式(2)中可以得出,为降低系统功耗,可以从低功耗编译指令、指令低功耗调度和存储结构等方面着手。对于某微控制器,每条指令都有一定功耗,每个操作都会激活微控制器中某些硬件部件,其中存储功耗约占整个芯片功耗的30%~60%,所以采用高效的超长指令(VLIW)、代码融合(Code Morphing)技术、合适的编译方法,能够减少存储系统访问频率;通过合理选择状态机状态的编码方法(如Gray码),可以减少状态切换时电路的翻转次数,降低程序执行功耗。
本文选取4款价格区间近似的低功耗微控制器:Microchip PIC24F系列、TI MSP430F系列、STM L1系列和Freescale KL系列。目前,在低功耗前沿技术领域,Microchip采用nanoWatt XLPTM (nanoWatt XLP eXtreme Low Power Technology)超低功耗技术[2];TI采用130nm超低漏电(ULL)工艺技术,整合Ramtron F-RAM 低能量存储器技术[3];ST 采用130nm 专用低漏电流工艺以及优化的节能架构;Freescale采用90nm SG-TFS(Split Gate Thin Film Storage)工艺技术[4]各微控制器性能参数如表1所列。
从表1数据可以看出,各款MCU 在低功耗技术领域都有独特技术专利,从功耗和性能角度,KL25系列Core-Mark/Core相较更有优势,其工作主频高而运行功耗低,能效比最大。
表1 微控制器性能参数
基于ARM Cortex-M0+内核32位KL低功耗设计,从表1数据,运行功耗比、EEMBC标准CoreMark测试数据,都体现了低功耗策略。为了进一步剖析KL低功耗机制,本节将从硬件功耗模型和软件功耗模型角度出发,同时考虑到KL微控制器是面向取代8位市场领域,以Freescale S08系列的一款高性能低功耗8位微控制器MC9S08GB60为例进行分析,以全面阐述KL低功耗机制。
2.2.1 优化硬件功耗因子
(1)低功耗制程工艺
ARM 和Freescale公司都提供了先进的低功耗技术以优化式(1)中的功耗Pdynamic和Pstatic。
基于Cortex-M0+内核芯片的设计,ARM 提供标准单元库,设计人员可以选择不同的标准单元库类型,并针对速度、功耗和面积优化其设计。其中电源管理工具包(Power Management Kit,PMK)是一种精密电源管理技术,包括电源门控、保持寄存器、隔离单元、电平转换、不关机缓冲器和反偏压单元,提供对动态耗电和静态/泄露耗电的主动控制。依赖于PMK 技术,采用低功耗架构的通用I/O,可软件编程实现多种输入类型、压摆率、驱动强度、上拉/下拉/开漏,电源管理功能还支持内核至I/O 电压范围更大的内置电平转换器,并能在内核电源环断电时保持状态。
Cortex-M0+内核只是微控制器一部分,若要实现整个控制器的低功耗设计,采用支持低功耗特性的外设模块组件是实现微控制器整体低功耗不可或缺的条件,尤其是存储系统功耗。
Freescale是开发和优化了诸多工艺技术以降低功耗,详细描述及技术参数略——编者注。
相比基于增强型S08的内核GB60,基于Cortex-M0+KL25微控制器在最低工作电压、Flash电压上都有很大程度优化;系统工作在最佳性能时,工作电流接近而KL25主频是GB60的三倍;WAIT 模式静态漏电流降低1/4。
(2)灵活电源模式和时钟模式
KL25在Cortex-M0+内核低功耗模式Sleep、Deep Sleep基础上,扩展8种低功耗模式,集成新特性低漏唤醒单元(LLWU),专用于在超低功耗低漏模式下的唤醒操作。而GB60 功耗模式仅为STOP3、STOP2、STOP1。表2总结了KL25在内核不同状态下的功耗模式。
表2 KL25 8种功耗模式
VLPR模式限制CPU 频率在2MHz内,内部稳压器处于待机模式,同时还保持外设和低电压检测(LVD)正常工作;VLPW 模式下CPU 暂停,Flash、FlexMemory编程不可用,外部中断事件能够唤醒MCU,执行预定任务后恢复低功耗状态,最大限度减少运行状态和低功耗状态之间频繁切换;STOP模式MCU 处于静态,保留所有寄存器并同时保持LVD工作;VLPS进一步关闭LVD;LLS低漏停止模式降低内在逻辑的电压,最大限度减少未使用的内部电路的漏电;VLLSx极低漏停止模式则更进一步切断内在逻辑,选择性切断RAM 内存,从而减少未使用电路的漏电。
KL系列中一个关键功率组件就是低漏电唤醒单元(LLWU),它在所有低漏电停止模式中充当唤醒监控器。在LLS/VLLSx模式下,提供如低功耗定时器,实时时钟RTC,模拟比较器,触摸感应接口(TSI)和几个引脚中断作为唤醒源,使能唤醒输入,MCU 处于LLS/VLLSx模式它就会启动。
对于数字系统来说,时钟系统是整个系统的中枢神经,KL25片上集成灵活可配的时钟系统和门控时钟技术。在实际应用中,可软件配置时钟模式,选择不同时钟源和时钟频率。整个片上时钟系统来源分为:MCG、OSC、RTC、PMC四个模块,从功耗模式角度,这4个时钟源在0~3 功耗等级模式下都可以全功能输出,但在STOP以及功耗更低模式下,只有部分时钟模块工作;从时钟模式角度,片上时钟系统可分成8种:FEI、FEE、FBI、BLPI、FBE、BLPE、PBE、PEE,每种时钟模式的差异在于时钟源与时钟频率,共性都是为片上系统提供内核时钟、系统时钟、总线时钟、Flash时钟等。
在4大时钟系统来源中,MCG 模块是最重要的时钟参考系统,可工作在0~5功耗等级模式下。内部固化的4 MHz/32kHz时钟;内部集成锁频环FLL、锁相环PLL。FLL输出频率在20~48 MHz之间,PLL 输出频率在48~100 MHz之间。MCG 模块支持输出以上8 种时钟模式,尤其在系统时钟精度、功耗、性能要求不高的应用中,直接使用内部固化时钟驱动芯片工作,减少外围时钟电路。OSC模块提供了一个外部时钟源输入接口电路,其输出OSCERCLK 时钟可工作在0~9 全功耗等级模式下。RTC模块可在0~9全功耗等级模式下输出1 Hz时钟频率,可以为系统提供精准定时,尤其应用在定时唤醒系统中;PMC模块提供1kHz LPO 时钟,也可工作在0~9全功耗等级模式下。
(3)低功耗中断机制
为减少门数和提高系统灵活性,Cortex-M 处理器采用基于堆栈的异常模型。从中断处理机制角度,一旦发生异常,Cortex-M 处理器实现硬件入栈关键的通用寄存器,支持中断咬尾、晚到异常机制和自动执行多重数据传送指令。在许多其他架构中,这些任务必须在软件的中断处理程序中执行,从而引入延迟并带来复杂性。
基于门控状态保留技术SRPG(State Retention Power Gating)、唤醒中断控制器WIC(Wakeup Interrupt Controller)可在内核处于Deep Sleep模式,NVIC 停止工作、无片上时钟系统甚至控制器处于掉电状态下都能够快速检测中断信号并唤醒MCU,从而实现更低的静态功耗。
2.2.2 优化软件功耗因子
(1)高能效内核指令集
对于性能至上的嵌入式产品,更少的指令数通常意味着更高的性能。相较于传统8/16 位指令集,ARM Cortex-M0+采用Thumb 指令集,CoreMark/mA 将近8/16位MCU 的2倍,同时支持Thumb-2技术的特性解决了Thumb指令不支持一些特殊功能如SIMD,也不能访问协处理器和使用特权指令的缺陷。在代码密度和性能方面也得到改善,用更低的处理器主频完成相同功能,进而降低系统整体功耗。
表3给出了不同架构指令集实现一个16位乘法的汇编程序。可以看出,Cortex-M指令集是一种高效单周期指令集。
表3 各处理器体系结构16位乘法运算比较
(2)减少访问存储器频率
基于Load-Store架构,ARM Cortex-M0+采用二级流水线设计以减少每指令所耗平均周期(CPI),比高级流水线设计的内核更易简化架构复杂度,在开发难度上也更接近8/16位。KL 系列内含64字节Cache,从外部总线来看,虽然整体架构属于冯诺依曼结构,实际已经算是改进型哈佛结构,整体性能得到提高,同时处理器阴影分支(Branch Shadow)也可被降低,进而减少访问存储器频率。如图1所示。
图1 Branch Shadow 示意图
(3)IDE支持低功耗解决方案
KL系列低功耗策略,不仅体现于MCU 自身,同时支持它的开发工具和设计资源也是关键环节。第三方工具如IAR系统嵌入式工作平台IDE(IAR System Embedded Workbench IDE)集成电源调试和分析工具,能提供将程序执行的关键事件与功耗术语相映射的功能,进而修改源代码满足功率曲线的要求。
针对KL25微控制器低功耗特性的评估与验证,本文设计将KL25应用于水质监测系统中作为主控节点,采集来自PH 值传感器、溶氧传感器、光照传感器、温度传感器数据,配合无线收发器MC13192实现无线节点数据的采集与发送。
整个水质监测系统工作在户外且使用两节AA 电池3.0V 供电,分别采用GB60微控制器(内集成10位精度A/D模块与16位TPM 定时器),KL25微控制器(内集成16位精度A/D模块与16位低功耗定时器LPTMR),实测电流数据如表4所列。
表4 GB60与KL25应用测试功耗数据
其中,GB60待机模式处于STOP3,A/D模块不工作,SRAM 状态保持;KL25待机模式处于LLS,A/D 模块不工作,SRAM 状态保持。GB60运行模式处于RUN,Core@16 MHz,fbus@8 MHz;KL25 运行模式处于RUN,PEE,Core@48 MHz,fbus@24 MHz。
从整个测试分析结果来看,KL25工作性能明显高于GB60,最佳性能运行状态系统功耗小于GB60,而在处理主频上却是3倍。在3.0V 电池供电下,每5s采集一次外部传感器数据,其余时间微控制器处于待机模式,基于GB60主控节点工作时长约14天,而基于KL25主控节点工作时长约为20天。当然采集频率降低,工作时间也就越长。
本文从软硬件功耗模型角度分析了微控制器实现低功耗技术要点,总结出多种优化软硬件功耗因子方法,如采用先进工艺制程,高效指令集以及降低数据移动量的存储访问机制等。重点分析了基于ARM Cortex-M0+超低功耗内核KL系列微控制器的低功耗机制,阐述在不同功耗等级模式下软件可配时钟模式关系以及低功耗中断策略。最后,通过实例比较分析给出了KL25微控制器在低功耗应用中的性能参数,该研究给初学者快速了解、开发Kinetis L系列提供了技术基础。
编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。
[1]周宽久,迟宗正,西方.嵌入式软硬件低功耗优化研究综述[J].计算机应用研究,2010,27(2):423-425.
[2]Microchip.nanoWatt and nanoWatt XLP Technologies:An Introduction to Microchip Low-Power Devices。2009.
[3]Philofsky E M.FRAM-the ultimate memory[C]//Nonvolatile Memory Technology Conference,1996,Sixth Biennial IEEE International.IEEE,1996:99-104.
[4]Kang S T,Yater J,Hong C M,et al.Si nanocrystal split gate technology optimization for high performance and reliable embedded microcontroller applications[C]//Non-Volatile Semiconductor Memory Workshop,2008and 2008International Conference on Memory Technology and Design.NVSMW/ICMTD 2008.Joint.IEEE,2008:59-60.
[5]Freescale.KL25Sub-Family Data Sheet Rev.3,2012.
[6]ARM.Cortex-M0+Technical Reference Manual Rev.r0p0,2012.
[7]ARM.Cortex-M0+Devices Generic User Guide,2012.
[8]Brake C.基于ARM 的便携式系统的功耗管理[J].电子产品世界,2003(13):54-56.