问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

单片机跑分:Coremark的原理与局限性

创作时间:
作者:
@小白创作中心

单片机跑分:Coremark的原理与局限性

引用
1
来源
1.
https://elmagnifico.tech/2021/07/31/Coremark-DMIPS/

在桌面CPU和GPU领域,我们经常看到各种跑分测试,如3dmark和Cinebench。而在嵌入式系统中,单片机也有自己的性能测试标准。其中,Coremark是最常用的测试之一。本文将详细介绍Coremark的原理、测试方法及其局限性。

前言

平常桌面CPU或者GPU的跑分测试见多了,比如3dmark、Cinebench等。其实嵌入式系统中常用的单片机也有跑分测试。现在比较多见的就是Coremark。

CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序。其主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的CoreMark程序次数(单位:CoreMark/MHz),该数字值越大则说明测试的性能越好。实际上现在也支持多核并行测试了。

目前在嵌入式CPU行业中普遍公认的性能测试指标的标准主要使用以下三种:MIPS、Dhrystone、Coremark。而CoreMark与Dhrystone一样,拥有体积小、方便移植、易于理解、免费并且显示单个数字基准分数的特点。与Dhrystone不同的是,Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而不是实际MCU或CPU的能力,而CoreMark具有特定的运行和报告规则,从而可以避免由于所使用的编译库不同而导致的测试结果难以比较。

比如在Coremark官网上可以看到,一些板子的跑分详情,有一些是网友提供的,打勾的基本就算官方认证跑分了。

而现在基本新出的芯片大部分都会在详情页上标注自己的跑分。比如,GDF450是673分。

STMF429是608分,STMF743是2424分,F767大概1200分左右。

局限性

缺少浮点运算

CoreMark是一个综合基准,用于测量嵌入式系统中使用的中央处理器(CPU)的性能。它是在2009年由EEMBC的Shay Gla-On开发的,旨在成为一个行业标准,取代过时的Dhrystone基准。代码用C编写,包含以下算法:列表处理(增删改查和排序)、矩阵操作(公共矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC。

它主要跑的就是这三个,而这3个基本涉及到的只有整数运算,所以衡量的也基本是MCU的基本指令集的运行情况,至于浮点运算这种,就完全不能衡量了。

CoreMark也有浮点类型的测试,不过这个就是CoreMark-Pro了,不过这个就不是普通单片机就能运行的,大部分单片机应该都不适合了。

缺少中断响应

单片机最主要的就是这个实时性,与此紧密相关的就是中断了。虽然不同单片机外设不同,但是对中断的响应非常重要,特别是某些单片机在高频采样或者负载较多的情况下,这个时候中断响应的速率就非常关键了。而由于单片机种类繁多,各种外设不同,中断不同,导致难以有一致的测试标准。但是光看一个CoreMark不足以评估中断响应是否能够来得及。

缺少功耗评估

实际上小的MCU大部分都需要看功耗的,而CoreMark中不能体现功耗,类似于英特尔最近的发布会,将会以每瓦性能来评估工艺。

运行位置

众所周知,一般直接把程序加载到SRAM里运行是比Flash中直接运行要快的,而CoreMark中的评分中也带有对应运行位置的标记。

编译器有影响

CoreMark说是让编译环境没影响,但是实际上很难做到,嵌入式的编译环境各自不同,最终导致的实际执行效率也略有区别。这也是为啥排行榜的时候都带编译环境。

架构级的领先

架构上的领先,从跑分中也无法体现出来。特别是M7带Cache和不带Cache的M4,看起来跑分差距不大,实际应用的时候就会发现差距特别大。整体运行效率可能相差接近10倍。

总结

所以不要盲目的以跑分作为评估的基础,还是要拿个开发板测试一下看。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号