CoreMark 1.0 介绍
CoreMark 是由 EEMBC(Embedded Microprocessor Benchmark Consortium)组织于 2009 年推出的一款用于衡量嵌入式系统 CPU 或 MCU 性能的标准基准测试工具。它旨在替代陈旧的 Dhrystone 标准(Dhrystone 容易受到各种libc不同库的影响),成为工业界衡量处理器性能的新标准。
测试内容:
CoreMark 的代码使用 C 语言编写,包含以下几种算法:
- 列表操作:用于测试处理器的内存访问和数据结构操作能力。
- 矩阵运算:测试处理器的数学计算能力。
- 状态机:评估处理器在复杂逻辑控制中的表现。
- CRC 校验:用于验证数据完整性。
这些算法综合评估处理器在不同场景下的性能。
性能衡量: - CoreMark 的得分越高,表示处理器的性能越好。
- 它的设计方式尽量减少了内存对测试结果的影响,从而更准确地反映处理器本身的性能。
适用性:
CoreMark 适用于各种嵌入式系统和微控制器,广泛用于硬件设计、性能评估和优化。
我们以兆讯MH2103为例,采用CoreMark 1.0来评估其性能:
有关MH2103为可以参考文章:MH2103芯片资源介绍
第一次采用MDK5,AC5编译器编译,得出成绩是:2.56CoreMark/MHz(CoreMark1.0)
这个成绩视乎并不理想,AC5已经在2017年被ARM官方抛弃(停止维护),转而支持AC6,那我们也用AC编译器来跑一跑看看效果如何?
测试工程切换到AC6编译器,同样的代码,AC6开优化-Ofast+LTO,工程编译选项配置如下:
看看结果:
cormark1.0 跑分635.93,换算一下约为635.93/216=2.94CoreMark/MHz(CoreMark1.0),是不是提升非常明显?
参考arm官方的理想数据(不考虑Flash读写延迟,纯MCU内核运行),虽然还有一点差距,但是考虑到时间运行代码是在Flash内部,这个成绩已经非常不错了。
但是对比两次运行结果,AC6相较于AC5编译器,成绩提升约15%,还是非常明显,所以建议后续开发的时候,切换到AC6编译器来,以最大化的发挥该息芯片的性能。
兆讯MCU支持ARM-2D
视频为arm2d运行在MH2103的实际效果,320x240的分辨率,各种圆弧绘制,效果,图像旋转等都有较好的效果,充分说明了这颗高主频(216M,cortex-M3内核)的芯片在现实应用方面的强劲能力。