ZHCABI1B February   2022  – January 2024 AM2434 , AM6411 , AM6412 , AM6421 , AM6441 , AM6442

 

  1.   摘要
  2.   2
  3.   商标
  4. 1简介
  5. 2处理器内核基准测试
    1. 2.1 Dhrystone
    2. 2.2 三角函数
  6. 3计算和存储系统基准测试
    1. 3.1 存储器带宽和延迟
      1. 3.1.1 LMBench
      2. 3.1.2 STREAM
      3. 3.1.3 Cortex-R5 存储器存取延迟
    2. 3.2 CoreMark®-Pro
    3. 3.3 快速傅里叶变换
    4. 3.4 加密基准测试
  7. 4应用基准测试
    1. 4.1 机器学习推理
    2. 4.2 场定向控制 (FOC) 环路
    3. 4.3 使用 BCDMA 时的 PCIE 到 DDR 性能
      1. 4.3.1 测试设置
      2. 4.3.2 结果和观察
    4. 4.4 使用 BCDMA 时的 DDR 到 DDR 性能
      1. 4.4.1 测试设置
      2. 4.4.2 结果和观察
  8. 5参考文献
  9. 6修订历史记录

LMBench

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

LMBench 基准测试 bw_mem 测量实现的存储器复制性能。其使用参数 cp 复制数组,bcopy 参数使用运行时 glibc 版本的 memcpy() 标准函数。我利用 SIMD 等实现更高性能,在实施高度优化的基础上进行 glibc 实践。等于或小于给定级别高速缓存大小的 size 参数可测量进行典型的 for 循环或 memcpy() type 操作的软件可实现的存储器带宽。通常用于计算外部存储器带宽。带宽根据字节读写(每读写 1 字节计为 1)计算,结果应约为 STREAM 复制结果的一半。下表显示了相对于理论线速测得的带宽和效率。使用的线速计算方式为:DDR MT/s x 宽度 ÷ 2(构成复制的读取和写入均会消耗总线)。此基准测试还允许利用 -P 参数创建并行线程。为了获得较大多核存储器带宽,需要创建与操作系统可用内核相同数量的线程,即 2 个 (AM64x Linux (-P 2))。

Arm Cortex-A53,DDR4-1600MT/s-16 位 DDR4 效率 Arm Cortex-A53,LPDDR4-1600MT/s-16 位 LPDDR4 效率
bw_mem -P 2 8M bcopy(双核,glibc memcpy) 1226MB/s 77% 1100MB/s 69%
bw_mem 8M
bcopy(单核,glibc memcpy)
1016MB/s 64% 883MB/s 55%
bw_mem -P 2 8M
cp(双核,内联复制循环)
628MB/s 39% 756MB/s 47%
bw_mem 8M
cp(单核,内联复制循环)
528MB/s 33% 599MB/s 37%

LMBench 基准测试 lat_mem_rd 用于测量外部存储器 (AM64x DDR4/LPDDR4) 观察到的存储器存取延迟和高速缓存命中率。有两个参数,分别是事务大小(64,如以下截图所示)和读取跨度 (512)。选择这两个数值是为了测量高速缓存和外部存储器的延迟,而不是处理器数据预取器或其他推测执行的延迟。有些存取模式可实现预取,但此基准测试特别适用于无法实现预取的存取模式下的相关测量。左列是数据存取模式的大小(单位为兆字节),右侧是往返读取延迟(单位为纳秒)。Arm Cortex-A53 读取延迟概述如下:

  • L1D 为 3ns
  • L2 延时为 14ns
  • 对于 DDR4-1600 存取,延时为 196ns
  • 对于 LPDDR4-1600,延时为 217ns

以下为 DDR4 运行示例。对于 LPDDR4,在 L1D 和 L2 大小下,结果相同,但在最大大小下,结果会略高 (217ns)。

root@am6x-evm:~# lat_mem_rd 64 512         
"stride=512
0.00049 3.006
0.00098 3.006
0.00195 3.006
0.00293 3.006
0.00391 3.006
0.00586 3.006
0.00781 3.006
0.01172 3.006
0.01562 3.006
0.02344 3.009
0.03125 3.120
0.04688 9.212
0.06250 10.677
0.09375 12.269
0.12500 12.984
0.18750 13.651
0.25000 14.066
0.37500 115.226
0.50000 168.747
0.75000 189.919
1.00000 192.138
1.50000 193.431
2.00000 194.175
3.00000 194.870
4.00000 195.202
6.00000 195.463
8.00000 195.622
12.00000 195.700
16.00000 195.761
24.00000 195.876
32.00000 195.938
48.00000 196.001
64.00000 196.006