物联网 (IoT) 正在推动对各种电池供电设备的巨大需求。这反过来又推动了对微控制器和其他系统级组件不断提高能效的要求。因此,超低功耗(ULP)已成为一个过度使用的营销短语,尤其是在用于描述微控制器时。作为理解ULP背后真正含义的第一步,请考虑其含义的多样性。在某些情况下,当电源受到严重限制(例如,能量收集)时,需要最低的有功电流。或者,当系统大部分时间处于待机或睡眠模式,不经常(定期或异步)唤醒以处理任务时,需要最低的睡眠模式电流。此外,ULP还可以意味着能源效率,因此大多数工作都是在有限的时间内完成的。总体而言,电池供电设备将根据一系列权衡利用这些要求的组合。
当然,ULP 也是一个意见和功能问题——例如,我们通常认为微控制器单元 (MCU) 是 ULP,其活动模式范围为 30 μA/MHz 至 40 μA/MHz,关断电流为 50 nA 至 70 nA。然而,将微控制器归类为超低功耗是各种特性的复杂组合,包括架构、SoC 设计、工艺技术、智能外设和深度睡眠模式。在本文中,我们将研究ADI公司的两款微控制器,以帮助您了解如何在这种情况下解释超低功耗的真正含义。我们还将研究EEMBC联盟的认证机制,该机制确保分数的准确性,以帮助系统开发人员为其解决方案选择最合适的微控制器。
测量和优化超低功耗
作为理解ULP的起点,我们首先解释如何测量它。开发人员通常会查看数据手册,在那里可以找到每MHz的电流值,以及不同睡眠模式的电流。第一个问题是,在查看有功电流消耗时,数据手册通常无法解释获得该值的条件,例如代码、电压和闪存上的等待状态。一些供应商使用主动模式引用,例如EEMBC CoreMark,而其他供应商将使用像运行“while 1”语句这样简单的东西。如果闪存上存在等待状态,微控制器单元的性能会降低,从而增加执行时间,从而增加执行任务的能耗。一些供应商提供典型电压的数字,其他供应商提供最低电压的数字,而其他供应商则不指定任何电压。也许这些都是微妙的差异,但没有标准,比较只是近似的。
通常,数据手册中对深度睡眠模式进行了很好的解释,但同样,获得这些模式的电流消耗的条件因供应商而异(例如,保留的内存量或电压)。此外,在实际应用中,用户还必须考虑进入和退出这些模式时消耗的能量。这可能是一个微不足道的值,也可能是真正相关的,具体取决于设备大部分时间是否处于睡眠模式或频繁唤醒。这就引出了下一点——设备在睡眠中花费了多少时间?活动模式和睡眠模式之间的平衡对于确定ULP测量非常重要。为了简化流程,EEMBC为其ULPMark-CoreProfile(ULPMark-CP)使用了1秒周期,该基准测试被许多微控制器供应商用作数据手册标准。注意:使用1秒的决定是EEMBC工作组的共识。考虑到ULPMark-CoreProfile工作负载的活动时间,占空比约为2%。在此基准测试中,设备每秒唤醒一次,执行少量工作(活动周期),然后返回睡眠状态。
通常,在有源模式下,由于模拟电路,电流消耗会有所偏移,因此,最小化有源电流并有效使用深度睡眠模式对于优化整体系统能源使用是有意义的。请注意,通过降低频率,有功电流将减少,但时间会增加,并且前面提到的模拟电路引起的失调在微控制器处于活动状态时保持不变。但是,微控制器选择之间的权衡是什么,应用的占空比和深度睡眠电流对该能量有何影响?
每个周期的能量作为占空比D的函数(以活动模式下的时间与总时间的百分比给出)由一个简化的方程定义,该方程假设开和关转换中的能量很小。
其中斜率由 I 定义上自从我睡比我小得多上而 y 截距只是我睡.该方程有助于理解占空比,其中有功电流比睡眠电流更重要。
图1.ULPMark-CP的周期为1秒。在此期间,设备将从深度睡眠模式唤醒,执行固定工作负载,然后返回到深度睡眠模式。
超低功耗测试平台
如前所述,我们将比较ADI公司两款微控制器ADuCM4050和ADuCM302x的超低功耗(能量)。在ULPMark结果表中,ADuCM4050和ADuCM302x分别获得了203和245.5的分数。请记住,此基准测试仅执行微控制器单元的内核(因此称为CoreProfile)。如何解释18%的差异?
ADuCM4050内置一个实现ARMv7E-M架构的ARM Cortex-M4F。ADuCM302x包含一个实现ARMv7-M架构的ARM Cortex-M3。虽然两个内核都有一个具有分支推测的 3 级流水线,并且在指令集架构上都相似,但只有 Cortex-M4F 支持 DSP 和浮点指令。由于ULPMark-CoreProfile上没有DSP指令,Cortex-M4F部件没有利用FPU。®®
对于基准分析,ADuCM4050和ADuCM302x的工作频率分别为52 MHz和26 MHz。ADuCM4050执行ULPMark工作负载需要约11,284个周期,ADuCM302x需要10,920个周期,这意味着前者在1秒周期的217 μs内完成活动模式部分,而后者在420 μs内有效。ADuCM4050使用的周期比ADuCM3029多几个,是因为使用的频率(分别为52 MHz和26 MHz),ADuCM4050需要一个等待闪存状态,而ADuCM3029在闪存上没有等待状态。由于ADuCM4050具有高速缓存,因此在闪存上添加等待状态不会造成重大损失,因为许多指令是从高速缓存执行的,可以全速(52 MHz)访问,而无需额外的等待状态。在执行时间方面,正如预期的那样,ADuCM4050的工作负载执行速度比ADuCM3029快,因为它的运行频率是ADuM3029的两倍。
ARM核心 | 完成 ULPMark 活动模式的近似周期 | ||
皮层-M0 | 15,174* | ||
皮层-M0+ | 14,253 | ||
皮质-M3 | 10,920 | ||
皮层-M4 | 11,852 | ||
皮层-M4F | 11,284 | ||
*这是基于Cortex-M0+和Cortex-M3数字的估计值。 |
但是,为什么ADuCM4050的功耗比ADuCM3029高10 μA/MHz?这种增加背后的原因是,前者的工作频率可能是后者的两倍,需要额外的缓冲器来完成更高频率的时序约束。与ADuCM3029相比,ADuCM4050还具有一些额外的特性:
存储器大小翻倍(SRAM和闪存):分别为128 kB和512 kB,而ADuCM3029为64 kB和256 kB。根据应用程序需求,您可能需要额外的存储空间。
双频:ADuCM3029为52 MHz,而ADuCM3029为26 MHz,因此ADuCM4050具有更好的性能。
添加了 RGB 计时器。
添加了新的安全功能:具有密钥包装-解包功能的受保护密钥存储和具有密钥解包的密钥 HMAC。
添加了三个额外的传感器频闪™输出。
增加了完整的SRAM保留:ADuCM4050可保留高达124 kB,而ADuCM3029可保留高达32 kB。
图2.ULPMark-CP的前10个结果,位于EEMBC网站(18千2017年8月)。1
根据应用需求(功耗优化、额外存储、主动性能、保持能力等),您可以决定使用ADuCM4050或ADuCM302x产品。
在深度睡眠模式下,ADuCM4050的休眠电流是运行ULPMark-CoreProfile时ADuCM3029的两倍(前者为16 kB,后者为8 kB)。这种改进的原因是较新的ADuCM4050产品上的架构得到增强。
编译器的作用
如上所述,ULPMark 由两种操作状态组成 — 活动状态和设备处于睡眠模式的低功耗状态。这些状态组合成正好 1 秒的时间段。在活动状态下,每个设备执行相同的工作负载。但正如我们所看到的,这项工作的效率受到架构的影响。此外,它还受编译器的影响。编译器可以选择更改和优化语句,以便指令组合将更改。
根据应用程序需求,您可以优化大小、速度、平衡大小和速度等。循环展开是一个简单的示例,其中执行的分支与循环内代码的比率发生变化。编译器仍然可以在寻找更好的计算结果方法方面发挥重要作用,但所做的工作是等效的。例如,ADuCM3029的ULPMark-CP结果可能从速度优化高的245.5到中等优化的232或低优化的209不等。编译器重要性的另一个例子是德州仪器 MSP430FR5969 的 ULPMark 结果,通过应用较新版本的 IAR 嵌入式工作台编译器,编译器提高了 5%,尽管不知道为完成此改进进行了哪些内部编译器更改 (www.eembc.org/ulpbench/)。同样,如果不深入了解专有编译器技术,就无法确定为什么意法半导体STM32L476RG的结果在从ARMCC编译器到IAR编译器的过程中提高了16%。
ADI公司MCU的两个结果都是使用IAR编译器编译的代码生成的,但版本不同。ADuCM4050和ADuCM302x分别使用IAR EWARM 7.60.1.11216和7.50.2.10505。同样,不可能知道进行了哪些内部更改。两个分数都是使用与优化速度相对应的no_size_constraints选项提交的。
将 ULPMark 转换为能量值
ULPMark-CoreProfile 使用一个公式,该公式取能量值的倒数(中位数为 5× 10 个周期每秒的平均能量)。
能量作为设备执行工作负载(在活动模式下)和设备处于休眠状态时消耗的能量的总和获得。
根据ADuCM3029数据手册,运行质数代码时,有源电流的典型值为980 μA。此代码适合缓存并利用其较低的功耗。对于ULPMark-CoreProfile代码,由于它主要是线性代码,因此启用缓存没有太大的好处,因此电流消耗类似于禁用缓存的数据手册中显示的电流消耗,为1.28 mA。对于休眠电流,ULPMark-CoreProfile 需要启用 LFXTAL 和 RTC,因此休眠模式下的电流消耗为 830 nA(根据数据手册)。如前所述,活动持续时间为420 μs。
根据数据手册编号和执行时间,有功电流的能量为1.61 μJ,睡眠期间消耗的能量为2.49 μJ。根据这些值得出的分数与使用EEMBC EnergyMonitor软件测量的分数相匹配。
第一代ULPMark的缺点之一是运行规则将工作电压限制为3 V(由工作组以这种方式实现,为所有设备建立通用电平)。大多数现代MCU在较低电压下运行具有更好的能效(尽管这可能会受到温度和工作频率的影响)。例如,意法半导体STM32L476RG的ULPMark性能提高了19%,采用DC-DC转换器将电压从3 V降至1.8 V。
图3.ADuCM4050的框图它集成了一个1.2 V低压差稳压器(LDO)和一个可选的容性降压转换器。
意法半导体STM32L476RG并不是唯一一款公布结果受DC-DC转换器影响的器件,尽管在某些器件中,转换器集成在器件本身中,如ADuCM302x和ADuCM4050,无需外部IC即可提高器件的电源性能。然而,使用DC-DC转换器有助于创造公平的竞争环境,因为它允许器件以最佳能效运行。例如,仅在3 V下工作的器件将无法从DC-DC转换器中受益,因为它已经处于最佳(或次优)效率。另一方面,一个可以在低至1.8 V电压下工作但不能利用DC-DC转换器的器件基本上浪费了64%的供电能量。此外,对于优先考虑能效的系统设计人员来说,如果系统使用3 V电池,则外部DC-DC转换器的额外成本可能并不重要。使用DC-DC转换器时必须小心,以避免测量转换器而不是MCU的能效。然而,必须考虑到,在实际应用中,DC-DC工作模式可能存在缺点,例如从/到活动模式/到睡眠模式的转换时间延长。
使用DC-DC转换器时的另一个考虑因素是转换器的类型。一些转换器是基于电感的,它们意味着更大的面积、更高的成本和可能的电磁干扰(EMI)问题。ADuCM4050和ADuCM302x器件使用容性转换器来避免这些问题。有关更多信息,请参阅用户指南UG-1091“如何设置和使用ADuCM3027/ADuCM3029微控制器”。
在分析 ULPMark-CP 结果甚至数据手册值时,请务必确认器件差异。换句话说,在测量设备的能效时,漏电流是一个重要因素,尤其是在睡眠模式下。虽然传统的性能基准通常不受影响,但温度和湿度等各种因素都会对器件的漏电流产生一定程度的影响,进而影响其ULPMark-CP结果。在制造业中,供应商的设备每天都会有所不同,晶圆与晶圆之间也会有所不同。即使是完全相同的设备的能耗也可能有所不同(我们已经看到从5%到15%不等的变化,具体取决于进行测量的时间和地点)。从根本上说,这意味着给定的ULPMark-CP分数应该用作能源效率的指南。例如,ULPMark 结果为 245 的器件在取自不同晶圆的同一器件上可能介于 233 到 257 之间(假设增量为 5%)。
认证机制——建立信誉
为了确保分数的准确性,愿意认证其设备的供应商将电路板和工具与特定于平台的配置文件一起发送到EEMBC技术中心(ETC)。EEMBC将平台配置文件集成到其系统文件(包括工作负载)中,并在不同的板上多次测量分数。认证的分数是所有测量值的平均值。
通过这种方式,EEMBC确保所有分数的条件都相同(相同的工作量,相同的能量监控板,相似的温度等)。
图4显示了在ADuCM3029 EZ-Kit上测量ULPMark-CP的连接设置。
图4.用于测量分数的板设置。
为了衡量分数,EEMBC提供了EnergyMonitor软件。通过单击运行ULPBench按钮,能量监控器硬件为ADuCM3029 EZ-Kit板供电,并测量配置文件运行的能耗。在执行结束时,软件计算分数并将其显示在屏幕上。该软件还在历史记录窗口中显示先前周期的平均能耗。®
图5.能源监控软件 — 图形用户界面。
下一步 — MCU 效率分析
EEMBC的最终目标是提供多套基准测试,使用户能够全面评估MCU。除了专注于MCU核心效率的ULPMark-CP之外,新发布的ULPMark-PeripheralProfile(ULPMark-PP)专注于各种MCU外设,如ADC,PWM,SPI和RTC。在ULPMark-PP中,有源和轻度睡眠电流消耗非常重要,因为器件在工作负载中执行多个外设事务。
接下来开发的是IoTMark-BLE和SecureMark套件。前者侧重于测量MCU和无线电通过蓝牙发送和接收的效率。后者是一个复杂的安全套件,将测量为物联网设备实施各种加密元素的能源和性能开销。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !