[原创] 【ST NUCLEO-U5A5ZJ-Q开发板】第3帖 CoreMark跑分测试完成

常见泽1   2024-2-7 12:07 楼主

 

Coremark是一个综合性的基准测试程序,正如其名称所表示的, CoreMark测试是一个简单而又复杂的基准测试程序,是专门用来测试处理器核心性能的。通过执行常用于应用程序中的简单代码(基本的数据结构和算法)来测试cpu性能。结果是计算每秒钟主程序的迭代次数。

CoreMark测试是最大程度抛弃了程序对系统的依赖,不依赖于系统库函数,对编译器依赖也比较小,因此对于不同平台(如大小尾数,高端或低端处理器),其结果有较好的参考价值。运行 CoreMark测试产生一个简单分数,使用户能够快速比较不同处理器的性能。

 

CoreMark测试是读/写操作、整数操作和状态机控制等操作混合而成,其代码较小并易于理解。和其他 EEMBC基准测试项目不同, coremark不是某一实际的应用测试,但其实际工作内容,都是一些嵌入式系统中常用的算法,包括矩阵操作、链表操作、状态机操作和CRC算法等。

 

不说废话,开始移植coremark

 

一下载coremark

http://www.eembc.org/coremark/index.php

 

二创建工程

类似之前的printf工程

工程中添加文件

image-20240203153734-1.png
 
添加头文件路径
image.png  
增加堆栈大小
image-20240203153734-3.png
 

三 配置CoreMark

  1. 修改portable_init函数

 

修改前

image-20240207121258-1.png  

 

 

修改

把串口printf工程里Main函数里的初始化函数都复制过来

把SystemClock_Config, MX_USART1_UART_Init 和 MX_GPIO_Init 函数拷贝到core_portme.c, 并添将加 printf 重定向的代码。

这个比较简单,都是之前Printf工程里的代码复制过来就可以了

 

 

 

四修改计时相关代码

1.添加ITERATIONS定义

#define ITERATIONS 12000///at least 10s

 

优化等级COMPILER_FLAGS

image-20240207121258-2.png  

先选个O3试试

 

     #define COMPILER_FLAGS "-O3"

 

image-20240207121258-3.png  

 

编译出错了

 

因为我的COREMARK GITHUB打不开没法现在源码

 

网上随便找了个103的工程COREMARK文件复制过来的

源码肯定被改过了

 

去修改下

 

image-20240207121258-4.png  

改一下

image-20240207121258-5.png  

 

image-20240207121258-6.png  

试了改成-Ofast
也只有530分

Misc Controls:这一栏则是对上面选项卡的补充,如果上面的选项卡没有的选项,则可以增加命令

增加LTO –Omax

image-20240207121258-7.png  

 

跑分634分 和官网的650分左右的数据差不多了

差不多4 Coremark/MHz

 

image-20240207121258-8.png  

 

 

不开ICACHE

评分430

image-20240207121258-9.png  

ICACHE是必须得开的

ICACHE是指指令缓存(Instruction Cache)。ICACHE是一个硬件缓存单元,用于提高处理器执行指令的效率。具体来说,当处理器需要执行指令时,它首先检查指令是否已经在ICACHE中缓存。如果指令已经在ICACHE中缓存,则处理器可以直接从ICACHE中读取指令,从而避免了从闪存或其他存储器中读取指令的时间延迟。 

 

官方手册里也是有介绍的

image-20240207121258-10.png  

ICACHE 2-ways和1-way差距不大  开一个就行

 

 

不开DCACHE

image-20240207121258-11.png  

一点不影响评分

 

总结

(1)必须开LTO -OMAX 否则评分会少很多

(2)必须开ICACHE 

(3)DCACHE不影响评分

 

 

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复