3、性能评估指标:DMIPS/MHz、CoreMark/MHz、Dhrystone、Whetstone等基准测试解读

选CPU IP,最头疼的是什么?

我个人觉得,是看数据手册时那一堆跑分数字。DMIPS、CoreMark、Dhrystone……看着都眼熟,但真要用起来,又总觉得差点意思。

今天咱们就把这几个指标掰开揉碎,讲清楚它们到底测了什么,又该怎么用。

3.1 Dhrystone:老将出马,一个顶俩?

Dhrystone 是上世纪80年代的产物。说白了,它测的是CPU处理整数运算的能力,不涉及浮点、不涉及I/O,就是纯纯的整数指令流水线效率。

它的结果用 DMIPS 表示。注意这个“D”,就是 Dhrystone 的缩写。DMIPS/MHz 的意思是:每兆赫兹能跑多少个 Dhrystone MIPS。

举个例子:

某款CPU跑在100MHz,Dhrystone得分是0.8 DMIPS/MHz。那它的绝对性能就是 100 × 0.8 = 80 DMIPS。

嗯,这里要注意:Dhrystone 的代码量很小,小到可以完全塞进L1 Cache里。所以它测的其实是CPU内核的“裸奔”性能,跟实际应用场景差距挺大。

避坑指南: 我曾经在一个项目中,看到某IP厂商报的DMIPS/MHz特别高,结果一上实际代码,性能直接腰斩。为什么?因为厂商的编译器优化开到了极致,而我们的应用代码根本享受不到那种优化。所以,看Dhrystone得分时,一定要问清楚编译器版本和优化选项。

3.2 CoreMark:更“接地气”的现代基准

CoreMark 是 EEMBC 推出的,专门用来替代 Dhrystone 的。我个人习惯用 CoreMark 做初筛,因为它更贴近真实场景。

CoreMark 测试的内容包括:

  • 列表操作(查找、排序)
  • 矩阵运算(整数矩阵乘法)
  • 状态机模拟
  • CRC校验

你看,这些操作在嵌入式软件里天天见。CoreMark 的代码量比 Dhrystone 大,没法完全塞进L1 Cache,所以它更能反映CPU在真实工作负载下的表现。

CoreMark/MHz 这个指标,我建议你这么看:

  • 3.0 以下: 入门级MCU,适合简单控制
  • 3.0 - 5.0: 主流MCU,能跑RTOS和轻量级应用
  • 5.0 以上: 高性能MCU或应用处理器,可以跑Linux
我的经验: 选型时,我一般先看 CoreMark/MHz,再结合工作频率算绝对性能。比如两个IP,一个 CoreMark/MHz 是 4.0,频率 200MHz;另一个是 3.5,频率 300MHz。算下来:4.0×200=800,3.5×300=1050。后者绝对性能更高,但功耗也更大。怎么选?看你的功耗预算。

3.3 Whetstone:浮点运算的“试金石”

如果你的应用涉及音频处理、传感器融合、或者简单的AI推理,那浮点性能就很重要了。这时候要看 Whetstone。

Whetstone 测的是浮点运算能力,包括:

  • 浮点加减乘除
  • 三角函数、指数函数
  • 数组操作

它的结果用 MWIPS(Million Whetstone Instructions Per Second)表示。注意,Whetstone 的测试代码也是上世纪70年代的产物,但好在浮点运算的“套路”这么多年变化不大,所以它依然有参考价值。

关键点:

  • 如果CPU不带FPU(浮点单元),Whetstone得分会非常难看,因为所有浮点运算都要用软件模拟
  • 如果带FPU,还要看是单精度还是双精度。单精度快,但精度低;双精度慢,但精度高

实际案例:

我之前做一个电机控制项目,需要实时计算PID参数。一开始选了颗不带FPU的M0内核,Whetstone得分惨不忍睹。后来换成带FPU的M4,同样的算法,计算时间从200微秒降到了15微秒。所以,有浮点需求的,千万别省FPU的钱。

3.4 这些指标怎么组合使用?

说实话,没有哪个指标是万能的。我的做法是:

  1. 先用 CoreMark/MHz 做初筛: 排除掉明显性能不足的IP
  2. 再用 Dhrystone 对比同架构: 比如都是Cortex-M4,看谁的DMIPS/MHz更高
  3. 有浮点需求时,加看 Whetstone: 注意区分单精度和双精度场景
  4. 最后,跑自己的应用代码: 这才是最准的

你想想看,如果只看 Dhrystone,你可能会选到一个“考试型选手”——跑分高,实际用起来却不行。CoreMark 和 Whetstone 能帮你更全面地评估。

3.5 一个实用的对比表格

指标 测试内容 适用场景 注意事项
Dhrystone (DMIPS/MHz) 整数运算、指令流水线 通用控制、协议栈 代码量小,易受编译器优化影响
CoreMark (CoreMark/MHz) 列表、矩阵、状态机、CRC 嵌入式应用、RTOS 更贴近真实负载,推荐作为首选
Whetstone (MWIPS) 浮点运算、数学函数 音频、传感器、AI推理 注意区分单精度/双精度,以及是否带FPU

3.6 最后说两句

选CPU IP,跑分只是第一步。我见过太多人拿着数据手册上的数字当圣旨,结果项目做到一半才发现性能不够。

我的建议是:

  • 把跑分当作“体检报告”,而不是“判决书”
  • 多关注实际工作负载下的表现
  • 如果条件允许,让IP厂商提供你的应用代码的测试结果

嗯,今天就聊到这儿。下一章咱们讲讲功耗评估,那又是一个容易踩坑的地方。