本文为CoreMark记录。
CoreMark介绍
CoreMark是用来衡量嵌入式系统中中心处理单元(CPU,或叫做微控制器MCU)性能的标准。该标准于2009年由EEMBC组织的Shay Gla-On提出,并且试图将其发展成为工业标准,从而代替陈旧的Dhrystone标准。目前CoreMark已经成为测量与比较各类处理器性能的业界标准基准测试。CoreMark得分越高,意味着性能更高。
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,那么实际结果是:2595.175186/(600/1) = 4.325 coremark/Mhz。Coretex-M7 ARM官方给出的coremark为5.01,有差距是因为coremark测试还和编译器、编译优化配置、运行的内存频率速率等等有关。
shell
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