CoreMark——嵌入式处理器“性能测评”神器,专门给嵌入式 CPU 做基准测试的“小工具”

 


CoreMark 是啥?

CoreMark 其实是一个专门给嵌入式 CPU 做基准测试的“小工具”。它的目标很简单:只测处理器核心的算力,不去管外设、操作系统这些“花里胡哨”。想象一下,你手里有一块新买的 MCU,想知道它到底跑得快不快,能不能胜任你的项目需求——CoreMark 就是那根“体能计”,跑一次、给你一个 Iterations/Sec(每秒执行次数)的分数,直接对比就行。

“别把整个系统的性能都往这儿塞,核心跑得好,别的东西再慢点也能凑合。”


为什么我们需要 CoreMark?

痛点

传统办法

CoreMark 的解决方案

基准不统一

各厂商自己写 benchmark,结果不可比

统一的源码、统一的运行规则

代码臃肿

Dhrystone、Linpack 代码几千行,移植麻烦

只有 6 个源码文件,几百行

结果不可信

编译器把一些运算提前算好,分数被“刷”

采用 volatile、随机种子,强制运行时计算

跨平台难

不同架构、不同工具链要重写

只改 core_portme.*,几分钟完成移植

缺少并行测试

大多数基准只跑单核

支持 MULTITHREAD,测多核吞吐

一句话:想要一个轻量、可比、可靠的核心性能测评,CoreMark 就是你的不二选择。


安装 & 上手

Linux(最常见)

$ git clone https://github.com/eembc/coremark.git
$ cd coremark
$ make            # 默认跑两套:性能跑 + 验证跑
$ cat run1.log    # 这里就是你的分数
  • • run1.log → 性能跑(Iterations/Sec)

  • • run2.log → 验证跑(CRC 检查,确保跑对了)

想要自定义迭代次数?

$ make ITERATIONS=20   # 只跑 20 次,适合仿真器、功耗测量

没有 make? 把下面几文件直接 gcc 编译就行(记得加 -DPERFORMANCE_RUN=1):

gcc -O2 -o coremark.exe core_list_join.c core_main.c core_matrix.c \
    core_state.c core_util.c simple/core_portme.c -DPERFORMANCE_RUN=1
./coremark.exe > run1.log

移植到 MCU

  1. 1. 在 port 目录下拷贝一个已有平台(比如 linux)

    mkdir my_mcu && cp -r linux/* my_mcu
  • 2. 修改 my_mcu/core_portme.c/h/mak,把时钟、计时器换成你的硬件实现。

  • 3. 编译

    make PORT_DIR=my_mcu
  • 小贴士:一定要保证计时函数返回的单位是“ticks”,且跑满 10 秒以上,否则分数不被官方认可。


    使用技巧

    场景

    推荐参数

    目的

    多核 CPU make XCFLAGS="-DMULTITHREAD=4 -DUSE_PTHREAD -pthread"

    同时跑 4 线程,测吞吐

    功耗测量 make ITERATIONS=10

    短时间跑,配合功耗仪器

    验证移植 make XCFLAGS="-DPERFORMANCE_RUN=1" REBUILD=1 run1.log
    make XCFLAGS="-DVALIDATION_RUN=1" REBUILD=1 run2.log

    确保 CRC 正确,防止移植错误

    大数据集 make XCFLAGS="-DTOTAL_DATA_SIZE=6000"

    增加内存占用,逼近真实业务场景


    CoreMark 的优缺点

    优点

    缺点

    轻量

    :源码仅 6 文件,几百行

    功能单一

    :只测核心,不涉及外设、IO

    跨平台

    :几行改动即可移植

    对编译器优化敏感

    :不同 -O 级别分数差异大

    可并行

    :支持多线程/多核

    不适合高功耗/高频 MCU

    :计时误差可能放大

    官方认可

    :EEMBC 标准基准

    缺少图形化报告

    :需要自行整理数据

    整体来看,如果你的目标是快速、可靠地对比不同 MCU 核心的算力,CoreMark 绝对是首选。如果你想要更全面的系统评估(比如 I/O、内存带宽),可能需要再配合其他基准(比如 CoreMark‑PRO、Dhrystone、Linpack)。


    小结

    • • CoreMark 是专为嵌入式 CPU 设计的核心性能基准,代码简洁、移植容易、结果可比。

    • • 安装只需 make,自定义参数灵活,支持单核、多核、仿真、功耗测量等多种场景。

    • • 优点是轻量、跨平台、官方认可,缺点是只测核心、对编译器优化敏感。

    • • 用它来快速评估新 MCU、对比不同编译选项、做产品性能宣讲,都是非常合适的。

    记住,测试不是全部,真正的产品性能还要看功耗、外设、系统集成。但有了 CoreMark,你至少能确保“CPU 核心”这块砖头是好砖。


    项目地址:https://github.com/eembc/coremark

     

    发表评论