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测试内容

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/

posted @ 2025-11-13 18:03  沐多  阅读(161)  评论(0)    收藏  举报