一、
Coremark是嵌入式微型单片机常用的一个CPU基准测试程序,像PC上的CPU-Z等测试软件,测试分数越高表明这款MCU性能越强劲。CoreMark的模拟工作负载主要包含几种常用的算法:
矩阵操作,模拟常用的运算;
链表操作,模拟指针的各种用法;
状态机操作,模拟程序分支运行操作;
循环冗余校验(CRC),嵌入式系统常见的功能。
作为stm32目前性能最强劲的H7系列处理器,使用coremark测试它的实际性能还是有一定的参考意义的。源于coremark的评测机制,评测结果更能真实反映其实际工作性能
二、
新建CubeMX基本工程,时钟树把系统时钟设置为最大值600MHz
配置串口2外设,以输出评测结果
最后生成Keil MDK工程开始coremark基准测试
2.1
导入外部coremark测试函数
/* USER CODE BEGIN PFP */ extern void coremark_main(); /* USER CODE END PFP */
main函数运行
/* USER CODE BEGIN 2 */ coremark_main();//运行基准测试程序 /* USER CODE END 2 */
2.2 测试结果
这个测试成绩是偏低的,原因是工程未开启I/D cache加速
在程序中使能 指令缓存加速
/* Enable I-Cache---------------------------------------------------------*/ SCB_EnableICache();
测试成绩从327提升至943
继续使能 数据缓存加速
/* Enable D-Cache---------------------------------------------------------*/ SCB_EnableDCache();
最终成绩为2613.2299
ICache,DCache分别指MCU上最靠近CPU的指令缓存、数据缓存单元,它们的作用是能够提前预写、预存数据、指令,以达到CPU加速运算的效果。但一般这样的指令、数据缓存单元不会很大,在某些应用处理在如果能够巧妙运用这些缓存加速就能取得非常好的效果。coremark测试成绩从未开启缓存加速的327分提高到2613分,ICache,Dcache起到的作用是非常明显的
根据官方数据宣传,coremark每秒迭代次数达3224,可能是工程还有其他地方没优化到位所以最终测试成绩没有突破3000