[MCU] 【先楫HPM6750测评】CoreMark跑分测试

xusiwei1236   2022-5-14 22:51 楼主

【先楫HPM6750测评】CoreMark跑分测试

上篇帖子中,我们完成了Embedded Studio开发环境搭建,对Hello World示例进行了编译和调试。

本篇将使用Embedded Studio编译CoreMark程序,并进行coremark跑分测试,同时对HPM6750的跑分结果和STM32部分型号的跑分结果进行对比。

CoreMark简介

什么是CoreMark?

来自CoreMark首页的解释是:

CoreMark is a simple, yet sophisticated benchmark that is designed specifically to test the functionality of a processor core. Running CoreMark produces a single-number score allowing users to make quick comparisons between processors.

翻译一下就是:

CoreMark是一个简单而又精密的基准测试程序,是专门为测试处理器核功能而设计的。运行CoreMark会产生一个“单个数字”的分数,(从而)允许用户在(不同)CPU之间进行快速比较。

简单来说,就是一个测试CPU性能的程序,类似PC上的Cinebench、CPU-Z之类的CPU性能测试工具。

了解了CoreMark是什么之后,接下来我们尝试在HPM6750开发板上跑一下CoreMark,看看分数是多少。

在HPM6750上运行CoreMark

创建CoreMark项目

HPM SDK样例中已经附带了CoreMark,因此我们直接使用SDK中的coremark程序就行了。

首先,根据上篇帖子中的介绍,使用generate_project命令生成Embedded Studio的项目:
QQ截图20220504133214.png

generate_project命令执行完毕后,打开生成的hpm6750evkmini_build\segger_embedded_studio子目录,可以看到项目文件已经创建完成了:
QQ截图20220504115832.png QQ截图20220504115903.png

双击coremark.emProject文件,默认会使用Embedded Studio打开项目(Embedded Studio安装成功的话):
QQ截图20220504133002.png

可以看到,coremark主要的源文件只有6个.c文件。

编译CoreMark项目

点击Embedded Studio的【Build】→【Build coremark】菜单,即可触发编译;稍等一段实际后,编译完成,可以在Output窗口看到Build complete:
QQ截图20220504140605.png

运行CoreMark跑分

开始运行之前,我们可以使用串口调试助手(或者其他类似的工具),连接开发板的串口设备。我这里使用的是MobaXterm,Putty或者sscom之类也是可以的。

串口配置是:

  • 波特率115200,
  • 8位数据位,
  • 1位停止位,
  • 无校验位。

点击Embedded Studio的【Debug】→【Go】菜单,即可运行coremark程序:
QQ截图20220504140850.png

不需要单步执行,直接点绿色三角形图标(Continue Execution),让程序直接运行。

点击运行按钮后,立刻可以看到串口输出:
QQ截图20220504141548.png

这段输出是由CoreMark程序启动时调用board_init输出的,所以在测试刚刚开始就会输出。

运行一段时间后(10秒左右),可以看到跑分结果输出了:
QQ截图20220504141846.png

图中的HPMicro字符画是测试刚开始时输出的,下面的部分是最终输出。

最总跑分:4698.857421

细心的朋友可能会发现,这里的分数并不像新闻里面报道的9220分。这是为什么呢?

经过简单的分析coremark项目的代码,不难得出答案。原来,示例程序里面的coremark项目,只是用了HPM6750的一个CPU核,而HPM6750是有两个同样的CPU核的。

那么,双核同时运行CoreMark测试,分数会翻倍吗?会是官方公布的9220分吗?这里我们暂且保留悬念,后面的帖子中我们将进行双核CoreMark实验。

不同存储模式的CoreMark对比

前面的跑分结果是使用-t flash_xip生成的项目得到的,接下来我们尝试使用不同-t选项进行10轮测试:
excel_report.png

可以看到,release参数的执行平均分数最高,单核达到了4701.68分。

观察generate_project命令的输出,可以发现不同-t参数,项目使用的链接脚本不同:
generate_project_flash_sdram_xip.png

通过对比链接脚本的内容,我们可以知道,不同链接脚本使用的存储配置不同。上一篇帖子的最后,也有一个表格做了总结,这里再次贴出来:

调试版 发布版(更小) 程序代码 运行内存
debug release 片内SRAM 片内SRAM
flash_xip flash_xip_release FLASH芯片 片内SRAM
flash_sdram_xip flash_sdram_xip_release FLASH芯片 DRAM芯片

和其他芯片的CoreMark跑分对比

CoreMark跑分榜

CoreMark首页的Scores页面中,有一些已经测试过的CPU、MCU的跑分记录。
QQ截图20220504143646.png

CoreMark跑分查询

我们可以在Processor Name Match框中输入STM32,点击Apply进行过滤。过滤出结果后,我们可以按照分数从高到底排序:
QQ截图20220504143239.png

可以看到,STM32H745的跑分是3223.82分,STM32H743的跑分是2020.55分。相比HPM6750单个CPU核的4698.86分差的都比较多。

不过这里查询到的数据都比较老了,STM32H7系列产品也在不断更新。因此,我从STM官网上找来了关于STM32H743和STM32H745的CoreMark跑分,以及HPM6750官方公布跑分数据,对比如下:

  STM32H743 STM32H745 HPM6750
处理器架构 ARM Cortex-M7 ARM Cortex-M7+M4 双32位RISC-V核
CPU最高频率(MHz) 480 480+240 816+816
CoreMark跑分(官方数据) 2424 3224 9220

参考连接

  1. HPM6750EVKMINI用户手册(网盘资料夹中的文件,没有独立链接);
  2. HPM6750的CPU核心是晶心科技的D45,具体信息详见晶心D45介绍页:http://www.andestech.com/en/products-solutions/andescore-processors/riscv-d45/
  3. STM32H743产品介绍页:https://www.st.com/zh/microcontrollers-microprocessors/stm32h743-753.html
  4. STM32H745产品介绍页:https://www.st.com/zh/microcontrollers-microprocessors/stm32h745-755.html
  5. CoreMark项目首页:https://www.eembc.org/coremark/
本帖最后由 xusiwei1236 于 2022-5-14 22:51 编辑

回复评论 (6)

确实有点疑问,双核同时运行CoreMark测试,分数会翻倍吗?

点赞  2022-5-15 08:54
引用: Jacktang 发表于 2022-5-15 08:54 确实有点疑问,双核同时运行CoreMark测试,分数会翻倍吗?

基本上是的,我看了coremark源码,它的多核跑分计算方式是:迭代次数*并发数/持续时间。

点赞  2022-5-15 19:39

这个差的有点多呀,主频上去了分值就上去了吗?

默认摸鱼,再摸鱼。2022、9、28
点赞  2022-5-17 23:23
引用: freebsder 发表于 2022-5-17 23:23 这个差的有点多呀,主频上去了分值就上去了吗?

这是单核跑分,双核的话基本上会翻倍

点赞  2022-5-19 00:10
这芯片很强大呀,我跑CH32V307才380分。
点赞  2022-5-22 17:37

CH32V307才380分,这个分数也不错了

 

 

点赞  2022-10-30 12:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复