xusiwei1236 发表于 2022-5-14 22:51

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

本帖最后由 xusiwei1236 于 2022-5-14 22:51 编辑

<h1>【先楫HPM6750测评】CoreMark跑分测试</h1>

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

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

<h2>CoreMark简介</h2>

<p>什么是CoreMark?</p>

<p>来自<a href="https://www.eembc.org/coremark/">CoreMark首页</a>的解释是:</p>

<blockquote>
<p>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.</p>
</blockquote>

<p>翻译一下就是:</p>

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

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

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

<h2>在HPM6750上运行CoreMark</h2>

<h3>创建CoreMark项目</h3>

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

<p>首先,根据上篇帖子中的介绍,使用generate_project命令生成Embedded Studio的项目:<br />
</p>

<p>generate_project命令执行完毕后,打开生成的hpm6750evkmini_build\segger_embedded_studio子目录,可以看到项目文件已经创建完成了:<br />
</p>

<p>双击coremark.emProject文件,默认会使用Embedded Studio打开项目(Embedded Studio安装成功的话):<br />
</p>

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

<h3>编译CoreMark项目</h3>

<p>点击Embedded Studio的【Build】&rarr;【Build coremark】菜单,即可触发编译;稍等一段实际后,编译完成,可以在Output窗口看到Build complete:<br />
</p>

<h3>运行CoreMark跑分</h3>

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

<p>串口配置是:</p>

<ul>
        <li>波特率115200,</li>
        <li>8位数据位,</li>
        <li>1位停止位,</li>
        <li>无校验位。</li>
</ul>

<p>点击Embedded Studio的【Debug】&rarr;【Go】菜单,即可运行coremark程序:<br />
</p>

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

<p>点击运行按钮后,立刻可以看到串口输出:<br />
</p>

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

<p>运行一段时间后(10秒左右),可以看到跑分结果输出了:<br />
</p>

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

<p>最总跑分:4698.857421</p>

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

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

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

<h2>不同存储模式的CoreMark对比</h2>

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

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

<p>观察generate_project命令的输出,可以发现不同-t参数,项目使用的链接脚本不同:<br />
</p>

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

<table>
        <thead>
                <tr>
                        <th>调试版</th>
                        <th>发布版(更小)</th>
                        <th>程序代码</th>
                        <th>运行内存</th>
                </tr>
        </thead>
        <tbody>
                <tr>
                        <td>debug</td>
                        <td>release</td>
                        <td>片内SRAM</td>
                        <td>片内SRAM</td>
                </tr>
                <tr>
                        <td>flash_xip</td>
                        <td>flash_xip_release</td>
                        <td>FLASH芯片</td>
                        <td>片内SRAM</td>
                </tr>
                <tr>
                        <td>flash_sdram_xip</td>
                        <td>flash_sdram_xip_release</td>
                        <td>FLASH芯片</td>
                        <td>DRAM芯片</td>
                </tr>
        </tbody>
</table>

<h2>和其他芯片的CoreMark跑分对比</h2>

<h3>CoreMark跑分榜</h3>

<p><a href="https://www.eembc.org/coremark/scores.php">CoreMark首页的Scores页面</a>中,有一些已经测试过的CPU、MCU的跑分记录。<br />
</p>

<h3>CoreMark跑分查询</h3>

<p>我们可以在Processor Name Match框中输入STM32,点击Apply进行过滤。过滤出结果后,我们可以按照分数从高到底排序:<br />
</p>

<p>可以看到,STM32H745的跑分是<a href="https://www.eembc.org/viewer/?benchmark_seq=13116">3223.82</a>分,STM32H743的跑分是<a href="https://www.eembc.org/viewer/?benchmark_seq=2539">2020.55</a>分。相比HPM6750单个CPU核的4698.86分差的都比较多。</p>

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

<table>
        <thead>
                <tr>
                        <th>&nbsp;</th>
                        <th>STM32H743</th>
                        <th>STM32H745</th>
                        <th>HPM6750</th>
                </tr>
        </thead>
        <tbody>
                <tr>
                        <td>处理器架构</td>
                        <td>ARM Cortex-M7</td>
                        <td>ARM Cortex-M7+M4</td>
                        <td>双32位RISC-V核</td>
                </tr>
                <tr>
                        <td>CPU最高频率(MHz)</td>
                        <td>480</td>
                        <td>480+240</td>
                        <td>816+816</td>
                </tr>
                <tr>
                        <td>CoreMark跑分(官方数据)</td>
                        <td>2424</td>
                        <td>3224</td>
                        <td>9220</td>
                </tr>
        </tbody>
</table>

<h2>参考连接</h2>

<ol>
        <li>HPM6750EVKMINI用户手册(网盘资料夹中的文件,没有独立链接);</li>
        <li>HPM6750的CPU核心是晶心科技的D45,具体信息详见晶心D45介绍页:<a href="http://www.andestech.com/en/products-solutions/andescore-processors/riscv-d45/">http://www.andestech.com/en/products-solutions/andescore-processors/riscv-d45/</a></li>
        <li>STM32H743产品介绍页:<a href="https://www.st.com/zh/microcontrollers-microprocessors/stm32h743-753.html">https://www.st.com/zh/microcontrollers-microprocessors/stm32h743-753.html</a></li>
        <li>STM32H745产品介绍页:<a href="https://www.st.com/zh/microcontrollers-microprocessors/stm32h745-755.html">https://www.st.com/zh/microcontrollers-microprocessors/stm32h745-755.html</a></li>
        <li>CoreMark项目首页:<a href="https://www.eembc.org/coremark/">https://www.eembc.org/coremark/</a></li>
</ol>

Jacktang 发表于 2022-5-15 08:54

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

xusiwei1236 发表于 2022-5-15 19:39

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

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

freebsder 发表于 2022-5-17 23:23

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

xusiwei1236 发表于 2022-5-19 00:10

freebsder 发表于 2022-5-17 23:23
这个差的有点多呀,主频上去了分值就上去了吗?

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

lugl4313820 发表于 2022-5-22 17:37

这芯片很强大呀,我跑CH32V307才380分。

hustjtj0806 发表于 2022-10-30 12:17

<p>CH32V307才380分,这个分数也不错了</p>

<p>&nbsp;</p>

<p>&nbsp;</p>
页: [1]
查看完整版本: 【先楫HPM6750测评】CoreMark跑分测试