使用EEMBC® CoreMark™来比较不同微控制器的功耗

控制/MCU

1883人已加入

描述

  微控制器用于许多低功耗和/或电池供电的应用,从智能仪表到消费类医疗设备,再到远程传输温度、振动、湿度和其他参数数据的工业设备。在这些应用中,电池寿命是一个关键参数——微控制器在确定这一时间长度方面发挥着关键作用。

  许多因素对微控制器的选择起作用。主要因素,例如正确的外设组合和内存配置文件,是数据表中非常量化的细节。然而,数据表数字如何转化为电池寿命和微控制器性能是模棱两可的。为了准确比较,工程师使用多个供应商的设备构建原型,但这种方法非常耗时,因此唯一实际的选择是依靠数据表编号并希望它与应用程序有某种关联。这种方法通常意味着,在设计过程的后期,必须进行更改以添加更大或更复杂的电池。

  大多数电池应用程序大部分时间都在睡眠中,醒来以执行其功能,然后重新进入睡眠状态。对于这些应用,电池寿命取决于微控制器的三个主要方面:

  微控制器的“无所事事”状态,通常有许多不同的形式。

  启动时间,即微控制器从无操作状态到运行应用程序状态所需的时间。

  应用程序运行时。

  对于特定的微控制器,无论应用程序如何,无操作状态和启动状态的功耗或多或少都是给定的,但应用程序的功耗是唯一的。为了合理地比较不同的设备,我们需要一个代表“典型”微控制器应用的基准算法,并练习大多数架构特性和存储器选项。

  在以下研究中,我们使用 EEMBC® CoreMark™ 基准来创建一个合理的方法来比较不同微控制器的功耗。正如您将看到的,低功耗的“直观”选择并不一定会产生最长的电池寿命。

  CoreMark 复习

  在 2011 年 7 月 8 日的 TechZone 微控制器解决方案杂志中,我们谈到了CoreMark,但这里有一个快速复习。自 2009 年以来,CoreMark 基准测试已被下载近 7,000 次(截至撰写本文时)。开发人员特别注意解决困扰旧基准的陷阱:几乎不像真实代码的工作负载;可能优化部分代码的编译器;以及可能扭曲任何有意义的结果的其他操作的可能性。CoreMark 已证明自己是一个可靠的性能指标。CoreMark 基准测试通过仔细使用三种基本数据结构来反映真实世界的计算。链表执行指针操作;矩阵运算展示了紧密优化的循环;和状态机测试结构较少、难以预测的分支。

  该程序主要由一个主循环组成,其中完成了大部分工作。我们将循环的每次偏移称为一次迭代。在循环完成迭代后,运行循环冗余校验 (CRC),它也是基准的定时部分的一部分,以确认在执行期间没有出错。该基准测试的特点使其非常适合比较各种不同微控制器的性能(或在本例中为能耗)。

  使用 CoreMark 比较当前

  8位微控制器

  16位微控制器

  32位微控制器

  “典型”功耗的数据表值通常附有脚注,表明测试设置与实际用户应用程序中的现场情况有所不同。这些注意事项包括关闭所有内部振荡器并从外部振荡器驱动设备。此外,所有外围设备都关闭;核心和内存是唯一的活动组件。部分原因是因为几乎不可能设计出标准的使用配置文件,尤其是与内存和外围设备使用相关的情况。但是,数据表并未指定在进行功率测量时内核上运行的代码。有些表示 CRC 算法或简要描述代码;其他人指定一个“while (1)”循环。

  最初,当我们比较微控制器的功耗时,我们查看了运行 EEMBC 的 CoreMark 基准测试时消耗的电流,然后将该值与数据表编号进行比较。我们在室温下收集了我们的测试数据,并与数据表注释保持一致。在所有情况下,设备都是从 FLASH 执行的。因为我们匹配了所有已知的测试条件(除了代码),我们可以隔离代码对确定测量数字可靠性的影响。

  CoreMark 和数据表比较

  下图显示了器件在数据表中报告的频率以及运行 CoreMark 基准测试时测量的行为。在所有情况下,CoreMark 电流都高于报告的数据表数字,有时甚至高出很多。表 1 显示了 CoreMark 测量电流与数据表电流的比率。

微控制器

  图 1:比较数据表和 CoreMark 生成的通用 8 位微控制器的电流与频率值。

微控制器

  图 2:比较数据表和 CoreMark 生成的通用 32 位微控制器的电流与频率值。

 

微控制器

  表 1:CoreMark 与数据表的比率表明,对于实际代码执行,差异有时可能会大 2.5 倍。

  能量:计算曲线下的面积

  使用 CoreMark 提供了很好的工作负载来展示微控制器之间的性能差异,但需要额外的步骤来确定内核执行算法所需的能量。如果两个微控制器在给定频率下消耗相同的电流,但一个比另一个更快地完成工作,那么速度更快的微控制器在工作时使用的能量更少。请注意,数据表中的值仅显示电流消耗,不反映微控制器效率和能耗。

  32 位微控制器运行应用程序的速度可能比 8 位或 16 位微控制器快两到三倍,但这与电池寿命有什么关系呢?电池寿命由能量被移除的速率(即功率)决定,并由功率与时间曲线下的面积反映,如图 3 所示。执行。

微控制器

  图 3:功率曲线下的面积决定能量。

  更高效的微控制器可能会在固定时期内产生更小的曲线下面积,因为可以在睡眠模式下花费更多时间。营销幻灯片通常显示一个通用图表,所有位宽(8、16 或 32)的峰值电流相等,更宽位宽的执行速度更快(参见图 4)。换句话说,它们显示了速度的优势,但可能忽略了更高电流的劣势。这会夸大大型微控制器的能源效率。围绕 CoreMark 基准进行标准化的实际测量可以更真实地了解微控制器的性能。

微控制器

  图 4:对平均电流的性能影响。

  能量测量

  在我们执行的评估过程中,每个设备都从睡眠状态中唤醒,执行 CoreMark 基准测试,然后重新进入静态低功耗模式。大多数微控制器有许多不同的断电模式。在一个示例中,微控制器可能会进入低功率振荡器保持开启的低功率状态保持状态。在这种情况下,微控制器会根据一些中断将自己唤醒,并从它进入睡眠状态时停止的地方继续执行应用程序。其他低功耗模式具有使微控制器的各个部分上电的选项。

  各种模式以唤醒时间换取功耗。在最低功耗模式下,外部源必须唤醒微控制器。为了进行公平的评估,我们选择了微控制器可以唤醒的最低功耗睡眠状态。我们将唤醒时间包括在整体能量测量中。

  随着时间的推移测量微控制器的电流是一项挑战——动态范围很大,在很短的时间内从微安到毫安。在这么大的范围内自动切换时,传统的电流表太慢了。此外,当前的采样时间太长,无法捕捉到快速变化。几家公司已经建立了合适的测量设备;我们使用了Hitex的PowerScale,它响应速度快,动态范围大。我们将 PowerScale 探头与微控制器的电源轨串联。在所有情况下,微控制器 I/O 都处于非活动状态,我们只测量了内核和内存。

  修改占空比

  在我们的测量中,我们想要修改执行时间与睡眠时间的比率。因此,我们修改了 CoreMark 基准,以允许测量工作循环的单次迭代。在 10 秒的时间里,我们运行了 CoreMark 工作循环的一次迭代,然后让微控制器休眠;我们从中获得了工作时间与睡眠时间的占空比。

  每个微控制器都被编程为唤醒到给定频率,执行 CoreMark 基准测试的一次迭代,然后重新进入睡眠状态。当电流开始上升时测量唤醒时间,当电流达到其静止状态时开始测量睡眠时间。这使得占空比测量与完成基准测试所需的时间(包括启动和关闭时间)成正比。

  我们通过调整时钟频率来修改占空比。例如,在 6 MHz 时,基准循环的完成速度是 3 MHz 时的两倍,从而留出更多的睡眠时间,从而减少占空比(参见表 2)。

微控制器

  表 2:作为工作频率函数的占空比比较(百分比)。

  测量结果

  对十秒内的电流积分得出消耗的电荷量。由于电压是固定的,每次迭代的电荷测量与每次迭代的能量成正比(参见图 5)。例如,在 4 MHz 时,32 位微控制器的效率分别是 16 位和 8 位微控制器的 3.5 倍和 8.6 倍。

微控制器

  图 5:每次迭代能量。

  输入电压对能量的影响

  输入电压会影响基于微控制器的半导体工艺的每次迭代能量,以及它是否具有电压调节器,如果有,调节器的类型。例如,我们的测试表明,与 32 位微控制器相比,电压变化导致 16 位微控制器的功耗变化更大;然而,16 位微控制器的制造过程允许设备在其整个电压范围内运行而无需稳压器;32 位微控制器需要一个板载稳压器。不带稳压器的设备的电流消耗变化将比带稳压器的设备大得多。在我们的具体测试中,32位微控制器在数字逻辑前端使用了线性稳压器;这在输入电压变化时提供恒定电流。如果设备改用开关稳压器,则设备将消耗恒定功率而不是恒定电流。

  单次迭代与重复能量

  单次迭代测试更多地关注睡眠时间而不是清醒时间。我们通过运行一个基准测试迭代并让微控制器进入睡眠状态来做到这一点。这将是一个应用程序的准确表示,该应用程序运行一次,然后等待很长时间才能再次运行。我们确定,如果睡眠时间少于 75 秒,则 32 位微控制器将使用最少的能量,因为它花费了大部分时间运行代码,而 32 位微控制器在运行代码时效率更高。对于超过 75 秒的睡眠时间,16 位微控制器使用的能量最少,因为它在睡眠时效率更高。当睡眠时间超过 300 秒时,8 位消耗的电流最小。

  如果应用程序代码不断迭代而不是只运行一次,那么能量分布看起来就会大不相同。图 6 显示了在选定频率下测试的三个设备的能量分布。随着时间的推移,能量线性累积。在这种类型的应用中,32 位微控制器可以以更低的电流更快地完成任务。

微控制器

  图 6:CoreMark 重复执行的测试结果。

  但是我的电池能用多久?

  绝对电池寿命取决于应用程序,但我们在运行重复的 CoreMark 工作负载时比较了上述三个微控制器。使用 240 mAhr CR2032纽扣电池为所有运行频率为 6 MHz 的微控制器供电,结果如下:

  32 位微控制器:360 万次迭代或 100 小时使用寿命

  16 位微控制器:120 万次迭代或 33 小时使用寿命

  8位微控制器:43.2万次迭代或12小时寿命

  结论

  随着电池供电嵌入式设备的普及,能耗已成为一个特别关键的设备参数。错误地获取此规范可能会导致产品在市场上彻底失败。不幸的是,微控制器数据表几乎没有提供真实的功率信息。使 CoreMark 基准测试对性能测量具有吸引力的特性也使其成为比较不同微控制器的实际功耗的有用应用程序。虽然绝对电池寿命估计需要使用实际目标应用程序进行测试,但 CoreMark 基准测试可以帮助在设计周期的早期做出关键的微控制器决策,远在目标应用程序准备好之前。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分