什么是超低功耗基准测试——ULPMark Benchmark

姓名:方瑞敏;学号20021210923;学院;电子工程学院

转自

https://mp.weixin.qq.com/s/1C3Mx8b3MSYh-pz-HHqExQ

【嵌牛导读】本文介绍了超低功耗基准测试——ULPMark Benchmark

【嵌牛鼻子】超低功耗,基准测试

【嵌牛提问】什么是超低功耗基准测试——ULPMark Benchmark

【嵌牛正文】

前言

说起嵌入式领域的一些基准测试,大家可能更了解的是 Coremark Benchmark,也就是大家常说的 CPU (中央处理器)性能基准测试。ULPMark Benchmark 也和 Coremark 类似,ULPMark 即“Ultra-Low Power Mark” 超低功耗评分;二者都是由 EEMBC (嵌入式微处理器基准测试联盟)开发的一套用 C 语言编写的、易于移植的标准测试程序。略有不同的是 Coremark 是专门为测试处理器核心性能而设计的,而 ULPMark 是为了评价一款 MCU 的低功耗性能而设计的。

在嵌入式领域中对一款芯片的评价一般来说都会非常关心两个指标,一个就是性能,另一个就是功耗。所以性能就看 Coremark 评分,低功耗就看 ULPMark 评分。Coremark 网上资料有很多,这里我就不做过多介绍了,那么低功耗性能测试为什么是 ULPMark 呢?

0x01 为什么低功耗测评采用 ULPMark

首先,ULPMark 的测试代码与 Coremark 一样,几乎是一套与硬件无关的算法,是一套很标准化的测试,在不同的厂商的不同处理器上都可以运行,且使用相同的电流测试板记录电流数据,所以说大家几乎都是在相同的平台下进行测试的,这样在不同的处理器之间就具有可比性。

第二,所有人发布的测试评分提交给 EEMBC 组织时,都需要提供完整的操作流程说明,及测试代码包括测 bin 文件。所以在 EEMBC 官网上可以看到的评分(尤其是 EEMBC check 过,打勾的评分),你拿对应被测件,按照发布的流程使用对应的 bin 文件,你几乎都可以复现出厂商在 EEMBC 上发布的评分。

其次,著名的低功耗芯片厂商几乎都在使用 ULPMark 作为测试标准,包括 Ambiq、Analog、TI、Renesas、ST、On Semi、NXP 等著名的嵌入式芯片厂商。

最后, EEMBC 也是一个很可靠的组织,他们致力于开发基准测试,他们发布过很多的基准测试,广泛应用于电信、网络、汽车电子、消费电子等领域。

那么 ULPMark 怎么测,都测些什么呢?

ULPMark 测试有什么

ULPMark 测试目前有三个部分,分别是 ULPMark-CoreProfile、ULPMark-PeripheralProfile 和 ULPMark-CoreMark。

ULPMark 变体 测什么

ULPMark-CoreProfile 核心在深度睡眠模式下真正的能量消耗

ULPMark-PeripheralProfile 普通外围设备的能量对深度睡眠的影响

ULPMark-CoreMark 活跃功耗,使用 CoreMark 作为工作负载

但在实际的测试对比中,大家一般都比较关心 CoreProfile 和 PeripheralProfile 两项评分,大多数情况下大家都是对比的 CoreProfile 的评分,简写 ULPMark-CP。也就是在深度睡眠下整个芯片的能量消耗;因为在低功耗的应用场景下,该芯片设备可能是单电池供电,需要运行长达 10 年的时间,所以芯片设备绝大部分时间应该都是处在深度睡眠的模式,偶尔唤醒处理部分任务。

因此,ULPMark-CP 的测试就是类似于这样的一个场景设计的。ULPMark-CP 基准测试在长时间睡眠中运行,然后短暂唤醒以执行最少的处理,从而模仿一个节能的边缘节点。如下图:

ULPMark-CP

从上图中可以看到 ULPMark-CP 测试中,主要测量的就是在睡眠状态下的能量消耗,以及与活跃模式之间的切换,活跃模式时会运行一组工作负载,整个测试是以一秒为周期运行的,将工作负载与较长时间的不活动相结合交替运行,从而使用芯片的低功耗模式。

虽然基准测试的活跃部分仅运行了总运行时间的约 3%,但它要求通过使用 “保留 RAM” 在深度睡眠期间保存数据。由于很少有休眠的边缘节点在每个睡眠周期之后都清除它的 RAM,因此保留 RAM ,减少 RAM 数据重新刷新的成本,才能体现睡眠模式的真正能量消耗。

所以 ULPMark-CP 的评分基本上就可以看出一颗芯片的低功耗应用场景下的低功耗性能。

说了这么多,那 ULPMark-CP 都运行了些什么呢?要想知道那就要看测试代码了,但是 ULPMark 测试程序是需要授权的。不过 ULPMark 可以通过学校申请免费的学术授权,不过也只能是学术团队内部使用。

License 申请

所以代码不宜直接公开,这里就简述一下其功能。

休眠时当然就是休眠了,那么在 Active 阶段,主要执行了以下操作:

会运行两次 Workload,每个 Workload 都包含以下几个工作:

· 快速切换GPIO指示端口20次

· 运行 24 次 16-bit 的滤波器运算,并根据每次的运算结果来设置状态机

· 使用状态机的输出作为输入来运行 bin to LCD 转换功能,即模拟 LCD 显示

· 在基于上一步选择的字符串上运行子字符串搜索

· 在搜索到的字符串上运行字节拷贝

· 然后对上一步结果进行一个小的冒泡排序

· 最后,根据输入和先前的状态对字符串的位进行排列

· 执行完就进入休眠,等待下一次被唤醒,每一秒一次,无限重复。


ULPMark 如何使用

如果你申请到了 ULPMark 的学术授权版本,那么应该怎么移植使用它呢?

通常你获得的 ULPMark-CP 的代码目录应该是这样的,如图。也有可能我这个版本比较老,和你新申请的可能会略有不同。但我想大体上应该是差不多的。

ULPMark-CP TOC

通常你只需要去修改 Platforms 下的文件, porting 到你的芯片上即可。一般情况下包括 系统时钟的设置,Low Power 模式的设置,相应 GPIO 引脚的设置,以及低功耗 RTC 的设置,当然还包括 RTC 中断的设置。将这些接口设置好基本上就完成了移植工作。然后将代码编译,烧写进芯片中。软件代码准备好了之后,就是测量 ULPMark 测试代码在芯片上运行时产生的功耗了。那么如何测量呢?

ULPMark 测量使用的板子

测量我们的芯片在低功耗模式下的实际功耗,EEMBC 和 ST 合作,开发了一套标准的能量消耗监测板 EMON (Energy Monitor LPM01A),Energy Monitor 能量监测板如下图,这块板子的详细信息可以在 ST 官网获取到,这里也就不做过多介绍了,链接:https://www.st.com/en/evaluation-tools/x-nucleo-lpm01a.html

EMON LPM01A


LPM01A top layout

通常情况下,我们的被测板可能是不符合 Arduino Uno 和 Arduino Nano 接口的,所以我们一般直接使用 CN14 的基本插接口。被测板的所有供电都由 Energy Monitor 提供,将 EMON CN14 接口中的 Vout 和 GND 分别连接到 DUT (被测件) 的 VDD 和 GND 上即可。如下图所示。

EMON connect DUT

这里还需要在 ST 官网下载并安装相应的上位机软件,安装完成后,在 PC 上启动 STM32CubeMonitor-Power 软件,打开窗口后如下图所示。

ST Mon Pwr

点击 TAKE CONTROL 连接能量监测板,在窗口中设置好需要的采样率、时间、电流、电压等参数后,点击 START ACQUISITION 按钮,就可以看到 DUT 运行时对应的电流消耗。点击 ULP BENCH 标签栏后,同样设置好需要的参数后,点击运行,就可以直接获得 ULPMark 评分,如下图,评分越高代表低功耗性能越好。

ULP BENCH

ULPMark 的评分是如何计算的?

那么 ULP Benchmark 的评分是如何计算的呢?如果我们手上没有 Energy Monitor 这个能量监测板,我们有没有其他办法计算出我们的低功耗性能?

ULP Benchmark 的计算公式是这样的:

ULP Score

就是 1000 除以,在 10 次 ULP 周期中取其中 5 次的能量均值,计算出得分,所以这个评分的单位就是 uJ/s 即 μ焦/秒。

所以根据这个公式,我们只要知道了我们芯片在单位时间内的能量消耗,就可以计算我们的低功耗评分。那么如何知道消耗的能量呢,那当然就是测量在单位时间内,额定电压下的电流消耗值,这样我们就可以计算了。虽然这样说起来简单,但是要想精确的测量在睡眠模式下的电流是不容易的,因为一般的低功耗芯片在深度睡眠模式下的电流消耗都是以 nA 计算的,一般的电流源无法做到这么精确。但方法总是有的。

假设我们在 3V 的电压下,测量到了相应的电流消耗,那么我们计算公式就可以这样写了。

3V ULP Score


当然,这个地方的电流还是粗略的,如果你还想在更加精确的分析,那么还应该去把 Active Current 和 Sleep Current 分开计算,然后在计算总的能量消耗。除此之外,不同编译器不同优化选项编译出的代码对于电流的消耗也存在一些差异。

总结

好了,到这里关于 ULPMark 的介绍就基本完成了,相信通过本文的简单介绍,你应该对 ULPMark 有了一定的认识,让我们一起学习进步,欢迎大家和我交流!感兴趣的还可以看一下今天的第二条转载,较为详细的介绍了 IC 设计中常用的电源、功耗管理相关的技术。

贴一张目前 ULPMark-CP 目前的评分排行榜(前 25 名)

ULPMark TOP25
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容