CoreMark介绍
本文为CoreMark记录。
CoreMark介绍
CoreMark是用来衡量嵌入式系统中中心处理单元(CPU,或叫做微控制器MCU)性能的标准。该标准于2009年由EEMBC组织的Shay Gla-On提出,并且试图将其发展成为工业标准,从而代替陈旧的Dhrystone标准。目前CoreMark已经成为测量与比较各类处理器性能的业界标准基准测试。CoreMark 侧重于测试 CPU 流水线,通过运行一组算法(2k 代码,16k 数据)来评估处理器核心的效率,单位时间内同一组算法在不同CPU上能运行的次数,即可对比不同CPU的性能,CoreMark得分越高,意味着性能更高。
注意:CoreMark高度依赖于多个因素,包括所使用的编译器、编译器优化标志、内存子系统配置以及 SoC 中处理器的具体实现。
CoreMark源码
CoreMark软件使用C语言编写,是一个免费使用,易于移植的基准测试程序。CoreMark的源码可以在CoreMark的官网或者官方GitHub代码仓库获取。
- CoreMark官网:https://www.eembc.org/coremark/
- 代码仓库:https://github.com/eembc/coremark
CoreMark测试内容
CoreMark的模拟工作负载主要包含几种常用的算法:
- 矩阵操作,模拟常用的运算;
- 链表操作,模拟指针的各种用法;
- 状态机操作,模拟程序分支运行操作;
- 循环冗余校验(CRC),嵌入式系统常见的功能。
CoreMark测试结果说明
CoreMark输出结果为Iterations/Sec,这和CPU主频相关,所以但我们评判一个处理器的性能时,会将其对齐到每MHZ,即实际我们看的分数是 Iterations/Sec /MHZ,即最后需要的结果是跑分/(CPU时钟频率/1MHZ)--coremark/Mhz。
- 对比整体性能使用
Iterations/Sec。 - 对比不同CPU性能使用
coremark/Mhz。
例如国民N32H787 Coretex-M7内核600MHZ主频下,TCM运行coremark跑分是2595.175186,那么每MHZ结果是:2595.175186/(600/1) = 4.325 coremark/Mhz。Coretex-M7 ARM官方给出的coremark为5.01,有差距是因为coremark测试还和编译器、编译优化配置、运行的内存频率速率、cache等等有关。
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 16256128
Total time (secs): 13.871896
Iterations/Sec : 2595.175186
Iterations : 36000
Compiler version : GCC
Compiler flags : High Speed; No size constraints
Memory location : STACK
seedcrc : 0xe9f5
[0]crclist : 0xe714
[0]crcmatrix : 0x1fd7
[0]crcstate : 0x8e3a
[0]crcfinal : 0xcc42
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 2595.175186 / GCC High Speed; No size constraints
/ STACK
MSI->PLL, 600M=====================CM7:CoreMark_ITCM_DTCM(Nov 12 2025 - 14:17:52)=====================
各类处理器CoreMark参考
EEMBC 认证实验室提供了各类不同型号的CPU、MCU CoreMark分数参考,这些数据经过了EEMBC 认证实验室认证,网址如下https://www.eembc.org/coremark/scores.php
CoreMark-PRO
CoreMark 侧重于测试 CPU 流水线,无法评估整个处理器,为此EEMBC还提供付费版CoreMark-PRO,CoreMark-Pro 测试整个处理器,增加了对多核技术的全面支持,结合了整数和浮点工作负载的组合,以及用于利用更大内存子系统的数据集。
CoreMark-PRO基准测试包含五个常见的整数工作负载和四个流行的浮点工作负载。整数工作负载包括 JPEG 压缩、ZIP 压缩、XML 解析器、SHA-256 安全散列算法以及一个更内存密集型的原始 CoreMark 版本。浮点工作负载包括快速傅里叶变换 (FFT)、从 LINPACK 演变而来的线性代数例程、大大改进的 Livermore loops 基准测试版本以及一个用于评估模式的神经网络算法。详见:https://www.eembc.org/coremark-pro/

浙公网安备 33010602011771号