一.什么是EEMBC
定义
EEMBC(Embedded Microprocessor Benchmark Consortium):嵌入式微处理器基准评测协会。
EEMBC测试是基于每秒钟算法执行的次数和编译代码大小的综合统计结果。
二.什么是Coremark
CoreMark是由EEMBC的Shay Gla-On于2009年提出的一项基准测试程序,其主要目标是测试处理器核心性能。
EEMBC的CoreMark®是衡量嵌入式系统中使用的微控制器(MCU)和中央处理器(CPU)性能的基准。取代过时的Dhrystone基准,Coremark包含以下算法的实现:列表处理(查找和排序),矩阵处理(常见的矩阵操作),状态机(确定输入流是否包含有效数字)和CRC(循环冗余校验) 。它旨在在从8位微控制器到64位微处理器的设备上运行。
CoreMark标准的测试方法:
在配置参数组合下单位时间内跑了多少次CoreMark程序,其指标单位为CoreMark/MHz。CoreMark数字越高,意味着性能更高。
Coremark和Dhrystone的相同点与不同点
相同点:
与Dhrystone一样,CoreMark体积小,便于携带,易于理解,免费,并且显示单个数字基准分数.
不同点:
CoreMark具有特定的运行和报告规则,旨在避免Dhrystone出现问题。
Ex:
1.Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而不是MCU或CPU的能力。Dhrystone作为编译器基准而不是硬件基准。
2.库调用是在Dhrystone的定时部分内进行的,这些库调用消耗基准测试大部分时间,库代码不是基准测试的一部分,如果使用不同的库,那么很难比较结果。
3.存在有关如何运行Dhrystone的准则,但是由于结果未经认证或验证,因此不允许执行。
CRC算法
CRC算法具有双重功能。它提供了嵌入式应用程序中常见的工作负载,并确保CoreMark基准测试正确运行,本质上提供了一种自我检查机制。
为了验证正确的操作,对链接列表的元素中包含的数据执行16位CRC。
为确保编译器无法在编译时预先计算结果,基准测试中的每个操作都会得出一个在编译时不可用的值。此外,在基准测试的计时部分内使用的所有代码都是基准测试本身的一部分(无库调用)。