ZHCACB1 February   2023 AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1

 

  1.   摘要
  2.   商标
  3. 1引言
    1. 1.1 更改 Cortex-A53 时钟频率
  4. 2处理器内核基准测试
    1. 2.1 Dhrystone
  5. 3计算和存储系统基准测试
    1. 3.1 存储器带宽和延迟
      1. 3.1.1 LMBench
      2. 3.1.2 STREAM
      3. 3.1.3 临界存储器访问延迟
    2. 3.2 CoreMark-Pro
    3. 3.3 快速傅里叶变换
    4. 3.4 加密基准测试
  6. 4应用基准测试
    1. 4.1 机器学习推理
  7. 5参考文献

LMBench

LMBench 是一套适用于处理器内核和操作系统基元的微基准测试工具。存储器带宽和延迟相关测试非常适用于现代嵌入式处理器。每次运行的结果略有不同 (<10%)。

LMBench 基准测试 bw_mem 测量实现的存储器复制性能。其使用参数 cp 复制数组,bcopy 参数使用运行时 glibc 版本的 memcpy() 标准函数。利用 SIMD 等实现更高性能,在实施高度优化的基础上进行 glibc 实践。等于或小于给定级别高速缓存大小的 size 参数可测量进行典型的 for 循环或 memcpy() type 操作的软件可实现的存储器带宽。通常用于计算外部存储器带宽。带宽根据字节读写(每读写 1 字节计为 1)计算,结果约为 STREAM 复制结果的一半。此基准测试还允许利用 -P 参数创建并行线程。为了获得较大多核存储器带宽,需要创建的线程数量应等同于操作系统可用的内核数量,即 4 个 (AM62x Linux (-P 4))。为了显示 AM62Ax 的完整性能特征,LMBench 测试是在内核数量和时钟频率的完整阶乘组合上实施的。下面的代码块展示了执行 LMBench 命令的终端打印输出。

root@am62axx-evm:~# bw_mem 8M bcopy
8.00 2125.96
root@am62axx-evm:~# bw_mem -P 2 8M bcopy
8.00 3408.74
root@am62axx-evm:~# bw_mem -P 4 8M bcopy
8.00 3884.24

root@am62axx-evm:~# bw_mem 8M cp
8.00 1108.49
root@am62axx-evm:~# bw_mem -P 2 8M cp
8.00 1671.98
root@am62axx-evm:~# bw_mem -P 4 8M cp
8.00 1976.17

表 3-1 展示了相对于理论线速测得的带宽和效率。 使用的线速计算方式为:LPDDR4 MT/s 速率 x 宽度 ÷ 2(构成复制的读取和写入均会消耗总线)。

方程式 1. E f f i c i e n c y =   M e a s u r e d   S p e e d L P D D R 4   M T / s   ×   W i d t h 2 =   M e a s u r e d   S p e e d 3200   × 4   B 2 =   M e a s u r e d   S p e e d 6400  
表 3-1 LMBench 结果
命令 说明 1.25GHz 下的 Arm-Cortex-A53、LPDDR4-3200MT/s 32 位 LPDDR4 效率 1.4GHz 下的 Arm-Cortex-A53、LPDDR4-3200MT/s 32 位 LPDDR4 效率
Bw_mem 8M bcopy 单核,glibc memcpy 2,058 MB/s 32% 2,125 MB/s 33%
bw_mem -P 2 8M bcopy 双核,glibc memcpy 3,300 MB/s 52% 3,408 MB/s 53%
bw_mem -P 4 8M
bcopy
四核,glibc memcpy 3,816 MB/s 60% 3,884 MB/s 61%
Bw_mem 8M cp 单核,内联复制循环 1,076 MB/s 17% 1,108 MB/s 17%
bw_mem -P 2 8M
cp
双核,内联复制循环 1,659 MB/s 26% 1,671 MB/s 26%
bw_mem -P 4 8M
cp
单核,内联复制循环 1,952 MB/s 31% 1,976 MB/s 31%

LMBench 基准测试 lat_mem_rd 用于测量外部存储器 (AM62Ax LPDDR4) 观察到的存储器存取延迟和高速缓存命中率。有两个参数,分别是事务大小(64,如以下代码块所示)和读取跨度 (512)。选择这两个数值来测量高速缓存和外部存储器的延迟,而不是处理器数据预取器或其他推测性执行的延迟。存取模式可实现预取,但此基准测试特别适用于无法实现预取的存取模式下的相关测量。

下面的代码块展示了执行 lat_mem_rd 命令的终端打印输出。左列是数据存取模式的大小(单位为兆字节),右侧是往返读取延迟(单位为纳秒)。此命令在 1.25GHz 和 1.4GHz 的 Arm-Cortex-A53 时钟频率下执行。

root@am62axx-evm:~# lat_mem_rd 64 512
"stride=512
0.00049 2.146
0.00098 2.146
0.00195 2.146
0.00293 2.146
0.00391 2.146
0.00586 2.146
0.00781 2.146
0.01172 2.146
0.01562 2.146
0.02344 2.146
0.03125 2.202
0.04688 6.725
0.06250 7.711
0.09375 8.725
0.12500 9.229
0.18750 9.748
0.25000 10.009
0.37500 22.217
0.50000 23.840
0.75000 88.270
1.00000 116.937
1.50000 133.405
2.00000 135.724
3.00000 137.268
4.00000 137.974
6.00000 138.512
8.00000 138.841
12.00000 139.033
16.00000 139.102
24.00000 139.097
32.00000 139.165
48.00000 139.163
64.00000 139.261

图 3-1 展示了 1.25GHz 和 1.4GHz 下存储器延迟结果的连接散点图。基于存储器块大小(x 轴),该图可分为三个区域。 第一个区域是被存取的存储器块小于 L1 缓存时。可以假定数据完全位于 L1 内部,因此该区域中的这种延迟是 L1 缓存延迟的近似估计值。第二个区域是被访问的存储器块大于 L1 但小于 L2 缓存时。该区域中的延迟是 L1、L2 和 LPDDR4 延迟的混合。可以假设该区域中间的延迟是 L2 延迟的近似表示。第三个区域是访问的存储器块大于 L2 缓存时。该区域中的最后一个读数反映了 LPDDR4 延迟。

GUID-9D2B874F-569B-4FD4-80C1-9659D3AAA189-low.png图 3-1 存储器读取延迟

表 3-2 展示了 Arm-Cortex-A53 读取延迟的摘要。

表 3-2 存储器读取延迟结果
存储器 1.25GHz 时的 Arm-Cortex-A53 1.4GHz 时的 Arm-Cortex-A53
L1 缓存 2.4ns 2.1ns
L2 缓存 10.3ns 9.2ns
LPDDR4-3200MT/s 140.2ns 139.2ns