1903_CoreMark白皮书阅读笔记

1903_CoreMark白皮书阅读笔记

全部学习汇总: g_embedded: 嵌入式通用技术学习笔记 (gitee.com)

再看ARM的内核架构介绍的时候看到了不同的内核都测试了一个CoreMark/Mhz的参数。从名称看,可以理解为是MCU的算力跑分。至于这部分究竟是测试了哪些功能,接下来跟着白皮书卡一下。

白皮书的文件是可以从Embedded Microprocessor Benchmark Consortium网站上获取的。

CoreMark结果是一个数字,可以用来衡量CPU的运算能力。DMIPS以及BogoMIPS是从其他的角度做了一些类似的测试。

CoreMark是为了能够做到简单且标准化的测试而制定的,可以免费下载(这么看应该是源代码)。设计采用了常见的数据结构和算法,而且用到的运算都是在运行的过程中计算出来的从而避免编译器优化带来的影响。运行的方法以及报告方式也做了标准化的要求。

CoreMark的内容主要是链表处理、矩阵运算、以及状态机跳转。其中,链表会进行翻转、搜索、排序等操作对指针的处理、分散内存的访问等进行测试。如果链表的大小超过了Cache的大小,还可以同时测试内存以及缓存的层级结构的效率。为了检查结果的准确性,还对内容进行了CRC的校验,而CRC校验一者是可以判断对错;二者可以顺便考察一下运算能力。而状态机的跳转主要是用来测试条件分支的执行效率。

链表节点的数据结构中包括数据对象以及index。其中,index的存在是为了记录在排序中的位置。这种设计方式可以在内存比较小的平台上使用,同时避免了使用标准库进行存储的申请分配等操作。这种设计让我联想到了FreeRTOS的链表设计。

无论是什么平台,对比时候链表的节点数目都是相同的。因此,对比的时候主要看数据量而不看实际的内存消耗。

矩阵运算的主要目的是测试循环、MAC等设计。这个过程中同样采用了CRC来进行内容准确性的校验。

状态机一般可以使用switch或者if条件分支来实现,主要的测试点就是MCU的条件分支判断而非循环。

默认情况下,CoreMark需要2KB的存储来存储用到的数据。这么小的内存的需求量在一些低端的嵌入式MCU上都是可以满足的。不过,结合前面的信息我倒好奇,如果都是这么大的话再很多高端的MCU上岂不是会大量使用Cache从而导致得分虚高?

这个是一个基本的测试结果的展示,涉及到了不同的主频下的表现、不同的编译器版本的表现以及相同的MCU和编译器但是不同编译选项的表现。上面所有内容一直但是结果不同的两个就是编译选项不同,这个在文档的后续内容中给出了说明。

另外,从上面的信息看。商用的编译器看起来在效率上通常会比gcc要好一些,而gcc随着版本的升级也在不断改善生成代码在效率上的质量表现。

相关推荐
Young Doro11 小时前
从 DV 表示到 MI 下界,再到“置换技巧“(含“指数倾斜“完整推导)
笔记
ACP广源盛1392462567314 小时前
PCIe Gen3 交换芯片选型笔记:中小通道扩展方案 IX7012@ACP 评估
笔记·硬件架构·硬件工程·pcie·国产芯片
职豚求职小程序刷题14 小时前
国投证券笔试测评题型揭秘
笔记
Nuanyt14 小时前
LeetCode Hot100 刷题笔记 · 普通数组专题
java·笔记·算法·leetcode
职豚求职小程序16 小时前
蒙牛27秋招|数智化未来星测评重点整理✅
笔记
沪上企服通16 小时前
从票据到凭证的数据血缘:代账系统的 traceability 与可审计回放设计笔记
笔记
春弦_16 小时前
LeetCode Hot 100 刷题笔记
笔记·leetcode·哈希算法
叼烟扛炮16 小时前
Linux 学习笔记(四):文件检索与管道重定向
linux·笔记·学习
愤怒火龙果18 小时前
蓝队笔记整理04 安全设备、内网处置与云上防护
笔记·网络安全
果壳science19 小时前
张祥前最新研究成果登上SCI期刊!
笔记·嵌入式硬件·算法·硬件工程·几何学