CoreMark 跑个分:RISC-V vs ARM

EEMBC 的 CoreMark® 评分是一种比较通用的基准测试方式,用于测量嵌入式系统中使用的微控制器(MCU)和中央处理单元(CPU)的性能,可以帮助人们比较不同的 CPU 架构的性能表现。

简介:

CoreMark 取代了过时的 Dhrystone 基准测试,并包含以下算法的实现:列表处理(查找和排序)、矩阵操作(常见的矩阵操作)、状态机(确定输入流是否包含有效数字)和 CRC(循环冗余校验)。可以在 8 位微控制器到 64 位微处理器上运行。

与 Dhrystone 对比:

与 Dhrystone 类似,CoreMark 小巧、便携、易于理解、免费,并显示一项基准测试分数。与 Dhrystone 不同的是,CoreMark 具有特定的运行和报告规则,并旨在避免 Dhrystone 的问题。例如,Dhrystone 的主要部分实际上暴露了编译器优化工作负载的能力,而不是 MCU 或 CPU 的能力。因此,Dhrystone 作为编译器基准测试比作为硬件基准测试更具有洞察力。同样地,在 Dhrystone 的计时部分中使用库调用。通常,这些库调用消耗基准测试消耗的大部分时间。由于库代码不是基准测试的一部分,如果使用不同的库,很难比较结果。最后,存在执行 Dhrystone 的指导方针,但由于结果没有得到认证或验证,因此它们不被强制执行。关于如何报告 Dhrystone 结果没有标准化,存在各种格式(DMIPS、每秒 Dhrystones、DMIPS/MHz)。

CoreMark 基准评分特点:

CRC 算法具有双重功能,在链表元素中包含的数据上执行16位 CRC,以验证操作正确,保证操作正确并提供自我检查机制。

为了确保编译器不能在编译时预先计算结果,基准测试中的每个操作都会产生一个在编译时不可用的值。此外,基准测试中定时部分使用的所有代码都是基准测试本身的一部分(没有库调用)。

CoreMark 是一种基于 C 语言的 CPU 性能评测工具,其目标是为了提供一个可重复、可移植且各平台间性能得分可比较的基准测试。CoreMark 包含多个小型测试,旨在模拟实际应用程序中常见的操作和趋势。

CoreMark 测试由以下六个部分组成:

  1. 数值操作(Data structure operations):例如排序、链表操作等。
  2. 控制操作(Control operations):例如循环、条件判断等。
  3. 数学运算(Arithmetic operations):例如位操作、浮点数运算等。
  4. 字符串操作(String manipulation):例如字符串拼接、比较等。
  5. 矩阵变换(Matrix manipulation):例如矩阵乘法、转置等。
  6. 加密/解密(Encryption and decryption):例如 AES、RSA 等。

每个测试的执行时间不同,最终将所有测试的得分累计起来,并通过一系列加权平均和标准化处理以产生 CoreMark 分数。所以,根据这些测试的结果,CoreMark 分数是计算机硬件整体性能的综合指标。

除了提供一个可重复、可移植且可比较的基准测试之外,CoreMark 还可以用作新处理器设计和优化的参考工具。它可以帮助开发人员更好地理解其处理器、操作系统、编译器和库等各种因素之间的性能优化关系。

CoreMark 对比:

常见的 ARM 芯片 和 RISC-V 芯片的 CoreMark 分数对比如下:
  • Cortex-M0:    2.33 CoreMark/MHz
  • Cortex-M0+:  2.46 CoreMark/MHz
  • Cortex-M3:    4.45 CoreMark/MHz
  • Cortex-M4:    4.02 CoreMark/MHz
  • Cortex-M7:    5.01 CoreMark/MHz
  • Cortex-A7:    2.32 CoreMark/MHz
  • Cortex-A53:  3.25 CoreMark/MHz
  • Cortex-A9:    3.52 CoreMark/MHz
  • Cortex-A55:  3.76 CoreMark/MHz
  • Cortex-A15:  5.26 CoreMark/MHz
  • Cortex-A72:  6.20 CoreMark/MHz
  • Cortex-A76:  7.41 CoreMark/MHz
  • 玄铁 C906:     3.40 CoreMark/MHz
  • StarFive U74: 5.09 CoreMark/MHz
  • 玄铁 C910:     7.10 CoreMark/MHz

需要注意的是,这些分数只是不同平台、编译器和优化级别得出的结果,并不能完全反映实际性能。实际应用中,还需考虑具体的工作负载、系统结构以及其他因素的影响。

STM32 MCU 的 CoreMark 分数:

CoreMark 跑个分:RISC-V vs ARM_第1张图片

 

构架 Processor MHz 单核 CoreMark 单核分数/MHz 核心数 多核 CoreMark 多核分数/MHz 以树莓派4B参照
爱芯元智 AX620A Cortex-A A7 1000 2323 2.32  4 9292 9.29  0.27 
全志 D1-H  RISC-V 玄铁C906 1008 3424 3.40  1 3424 3.40  0.10 
昉·星光 2 JH7110 RISC-V  StarFive U74  1500 7635 5.09  4 30540 20.36  0.90 
T-Head  RISC-V 玄铁C910 2500 17750 7.10  1 17750 7.10  0.52 
荔枝派4a TH1520  RISC-V 玄铁C910 1850 13006 7.03  4 52024 28.12  1.53 
树莓派3B BCM2837 Cortex-A A53 1200 3903 3.25  4 15612 13.01  0.46 
BeagleboneAI AM5729 Cortex-A A15 1500 7894.5 5.26  2 15789 10.53  0.46 
旭日X3派 地平线 X3 Cortex-A A53 1200 4935.5 4.11  4 19742 16.45  0.58 
Rock3A RK3568 Cortex-A A55 2000 7432.0  3.72  4 29728 14.86  0.87 
树莓派4B BCM2711 Cortex-A A72 1500 8500.7  5.67  4 34002.8  22.67  1.00 
Cortex-A A72 1800 10200.8  5.67  4 40803.4  22.67  1.20 
Cortex-A A72 2145 12156 5.67  4 48624 22.67  1.43 
OrangePi5 RK3588S Cortex-A A76 2400 17785 7.41  4 71140 29.64  2.09 
Cortex-A A55 1800 6767 3.76  4 27068 15.04  0.80 
Cortex-A 大小核合计 8 98208 2.89 

                                                                                                                老徐,端午 2023/6/22 

你可能感兴趣的:(risc-v,coremark,嵌入式硬件,树莓派)