EEMBC 的 CoreMark® 评分是一种比较通用的基准测试方式,用于测量嵌入式系统中使用的微控制器(MCU)和中央处理单元(CPU)的性能,可以帮助人们比较不同的 CPU 架构的性能表现。
一、简介:
CoreMark 取代了过时的 Dhrystone 基准测试,并包含以下算法的实现:列表处理(查找和排序)、矩阵操作(常见的矩阵操作)、状态机(确定输入流是否包含有效数字)和 CRC(循环冗余校验)。可以在 8 位微控制器到 64 位微处理器上运行。
与 Dhrystone 对比
与 Dhrystone 类似,CoreMark 小巧、便携、易于理解、免费,并显示一项基准测试分数。与 Dhrystone 不同的是,CoreMark 具有特定的运行和报告规则,并旨在避免 Dhrystone 的问题。例如,Dhrystone 的主要部分实际上暴露了编译器优化工作负载的能力,而不是 MCU 或 CPU 的能力。因此,Dhrystone 作为编译器基准测试比作为硬件基准测试更具有洞察力。同样地,在 Dhrystone 的计时部分中使用库调用。通常,这些库调用消耗基准测试消耗的大部分时间。由于库代码不是基准测试的一部分,如果使用不同的库,很难比较结果。最后,存在执行 Dhrystone 的指导方针,但由于结果没有得到认证或验证,因此它们不被强制执行。关于如何报告 Dhrystone 结果没有标准化,存在各种格式(DMIPS、每秒 Dhrystones、DMIPS/MHz)。
CoreMark 基准评分特点
CRC 算法具有双重功能,在链表元素中包含的数据上执行16位 CRC,以验证操作正确,保证操作正确并提供自我检查机制。
为了确保编译器不能在编译时预先计算结果,基准测试中的每个操作都会产生一个在编译时不可用的值。此外,基准测试中定时部分使用的所有代码都是基准测试本身的一部分(没有库调用)。
CoreMark 是一种基于 C 语言的 CPU 性能评测工具,其目标是为了提供一个可重复、可移植且各平台间性能得分可比较的基准测试。CoreMark 包含多个小型测试,旨在模拟实际应用程序中常见的操作和趋势。
CoreMark 测试由以下六个部分组成:
- 数值操作(Data structure operations):例如排序、链表操作等。
- 控制操作(Control operations):例如循环、条件判断等。
- 数学运算(Arithmetic operations):例如位操作、浮点数运算等。
- 字符串操作(String manipulation):例如字符串拼接、比较等。
- 矩阵变换(Matrix manipulation):例如矩阵乘法、转置等。
- 加密/解密(Encryption and decryption):例如 AES、RSA 等。
每个测试的执行时间不同,最终将所有测试的得分累计起来,并通过一系列加权平均和标准化处理以产生 CoreMark 分数。所以,根据这些测试的结果,CoreMark 分数是计算机硬件整体性能的综合指标。
除了提供一个可重复、可移植且可比较的基准测试之外,CoreMark 还可以用作新处理器设计和优化的参考工具。它可以帮助开发人员更好地理解其处理器、操作系统、编译器和库等各种因素之间的性能优化关系。
二、CoreMark 对比
常见的 ARM 芯片 和 RISC-V 芯片的 CoreMark 分数对比如下:
- Cortex-M0: 2.33 CoreMark/MHz
- Cortex-M0+: 2.46 CoreMark/MHz
- Cortex-M3: 4.45 CoreMark/MHz
- Cortex-M4: 4.02 CoreMark/MHz
- Cortex-M7: 5.01 CoreMark/MHz
- Cortex-A7: 2.32 CoreMark/MHz
- Cortex-A53: 3.25 CoreMark/MHz
- Cortex-A9: 3.52 CoreMark/MHz
- Cortex-A55: 3.76 CoreMark/MHz
- Cortex-A15: 5.26 CoreMark/MHz
- Cortex-A72: 6.20 CoreMark/MHz
- Cortex-A76: 7.41 CoreMark/MHz
- 玄铁 C906: 3.40 CoreMark/MHz
- StarFive U74: 5.09 CoreMark/MHz
- 玄铁 C910: 7.10 CoreMark/MHz
需要注意,这些分数只是不同平台、编译器和优化级别得出的结果,并不能完全反映实际性能。实际应用中,还需考虑具体的工作负载、系统结构以及其他因素的影响。
STM32 MCU 的 CoreMark 分数
昉·星光 2、荔枝派 4A 与树莓派对比
作为 RISC-V 的标杆,昉·星光 2、荔枝派 4 与树莓派的对比如下:
常见板卡的 CoreMark 性能对比列表
构架 | Processor | MHz | 单核 CoreMark | 单核分数/MHz | 核心数 | 多核 CoreMark | 多核分数/MHz | 以树莓派4B参照 | |
爱芯元智 AX620A | Cortex-A | A7 | 1000 | 2323 | 2.32 | 4 | 9292 | 9.29 | 0.27 |
全志 D1-H | RISC-V | 玄铁C906 | 1008 | 3424 | 3.40 | 1 | 3424 | 3.40 | 0.10 |
昉·星光 2 JH7110 | RISC-V | StarFive U74 | 1500 | 7635 | 5.09 | 4 | 30540 | 20.36 | 0.90 |
T-Head | RISC-V | 玄铁C910 | 2500 | 17750 | 7.10 | 1 | 17750 | 7.10 | 0.52 |
荔枝派4A TH1520 | RISC-V | 玄铁C910 | 1850 | 13006 | 7.03 | 4 | 52024 | 28.12 | 1.53 |
树莓派3B BCM2837 | Cortex-A | A53 | 1200 | 3903 | 3.25 | 4 | 15612 | 13.01 | 0.46 |
BeagleboneAI AM5729 | Cortex-A | A15 | 1500 | 7894.5 | 5.26 | 2 | 15789 | 10.53 | 0.46 |
旭日X3派 地平线 X3 | Cortex-A | A53 | 1200 | 4935.5 | 4.11 | 4 | 19742 | 16.45 | 0.58 |
Rock3A RK3568 | Cortex-A | A55 | 2000 | 7432.0 | 3.72 | 4 | 29728 | 14.86 | 0.87 |
树莓派4B BCM2711 | Cortex-A | A72 | 1500 | 8500.7 | 5.67 | 4 | 34002.8 | 22.67 | 1.00 |
Cortex-A | A72 | 1800 | 10200.8 | 5.67 | 4 | 40803.4 | 22.67 | 1.20 | |
Cortex-A | A72 | 2145 | 12156 | 5.67 | 4 | 48624 | 22.67 | 1.43 | |
OrangePi5 RK3588S | Cortex-A | A76 | 2400 | 17785 | 7.41 | 4 | 71140 | 29.64 | 2.09 |
Cortex-A | A55 | 1800 | 6767 | 3.76 | 4 | 27068 | 15.04 | 0.80 | |
Cortex-A | 大小核合计 | 8 | 98208 | 2.89 |
三、小结
以 StarFive U74 和玄铁 C910 为代表的 RISC-V,无论在核心性能还是整个芯片的性能,已经可以 PK 以 Cortex-A72 为代表的 ARM;随着 “昉·星光 2” 和 “荔枝派 4A” 等 RISC-V 板卡的推出,必将大大推动 RISC-V 的推广和普及,吸引越来越多的用户和厂商的加入,社区和应用也会越来越完善,RISC-V 的未来已来!
老徐,端午 2023/6/22