LMBench 是一套適用于處理器內核和操作系統基元的微基準測試工具。存儲器帶寬和延遲相關測試非常適用于現代嵌入式處理器。每次運行的結果略有不同 (<10%)。
LMBench 基準測試 bw_mem 測量實現的存儲器復制性能。參數 cp 復制數組,bcopy 參數使用運行時 glibc 版本的 memcpy() 標準函數。利用 SIMD 等實現更高性能,在實施高度優化的基礎上進行 glibc 實踐。等于或小于給定級別高速緩存大小的 size 參數可測量進行典型的 for 循環或 memcpy() type 操作的軟件可實現的存儲器帶寬。通常用于計算外部存儲器帶寬。帶寬根據字節讀寫(每讀寫 1 字節計為 1)計算,結果約為 STREAM 復制結果的一半。表 3-1 展示了相對于理論線速測得的帶寬和效率。使用的線速計算方式為:DDR MT/s x 寬度 ÷ 2(構成復制的讀取和寫入均會消耗總線)。此基準測試還允許利用 -P 參數創建并行線程。要獲得更大的多核存儲器帶寬,請創建與操作系統可用內核相同數量的線程,對于 AM62x Linux 來說,為 4 個 (-P 4)。
表 3-1 LMBench 結果 | 說明 | Arm Cortex-A53,DDR4-1600MT/s-16 位 | DDR4 效率 |
|---|
| bw_mem -P 2 8M bcopy | 四核,glibc memcpy | 1222MB/s | 76% |
bw_mem 8M bcopy | 單核,glibc memcpy | 887MB/s | 55% |
bw_mem -P 4 8M cp | 四核,內聯復制循環 | 731MB/s | 46% |
bw_mem 8M cp | 單核,內聯復制循環 | 590MB/s | 37% |
LMBench 基準測試 lat_mem_rd 用于測量觀察到的外部存儲器(AM62x 上的 DDR4 和 LPDDR4)的存儲器訪問延遲和高速緩存命中率。兩個參數分別為事務大小(表 3-2 中的 64)和讀取跨度 (512)。選擇這兩個數值來測量高速緩存和外部存儲器的延遲,而不是處理器數據預取器或其他推測性執行的延遲。存取模式可實現預取,但此基準測試特別適用于無法實現預取的存取模式下的相關測量。左列是數據存取模式的大小(單位為兆字節),右側是往返讀取延遲(單位為納秒)。Arm Cortex-A53 讀取延遲概述如下:
- L1D 為 2.5ns
- L2 延時為 11.5ns
- 對于 DDR4-1600 存取,延遲為 209ns
- 對于 LPDDR4-1600 存取,延遲為 218ns
表 3-2 DDR4 和 LPDDR4 的 LMBench 基準測試
| DDR4-1600: |
LPDDR4-1600: |
root@am62xx-evm:~
#lat_mem_rd 64 512
"stride=512
0.00049 2.503
0.00098 2.504
0.00195 2.503
0.00293 2.503
0.00391 2.503
0.00586 2.503
0.00781 2.504
0.01172 2.503
0.01562 2.503
0.02344 2.520
0.03125 2.562
0.04688 7.673
0.06250 8.980
0.09375 10.190
0.12500 10.772
0.18750 11.374
0.25000 11.675
0.37500 11.969
0.50000 12.784
0.75000 140.541
1.00000 179.407
1.50000 192.142
2.00000 197.091
3.00000 202.542
4.00000 205.342
6.00000 207.528
8.00000 208.155
12.00000 209.024
16.00000 209.193
24.00000 209.510
32.00000 209.754
48.00000 209.919
64.00000 209.947
|
root@am62xx-lp-evm:~ #lat_mem_rd 64 512
"stride=512
0.00049 2.404
0.00098 2.404
0.00195 2.404
0.00293 2.404
0.00391 2.404
0.00586 2.404
0.00781 2.404
0.01172 2.404
0.01562 2.404
0.02344 2.404
0.03125 4.658
0.04688 7.361
0.06250 8.649
0.09375 9.829
0.12500 10.425
0.18750 10.902
0.25000 11.206
0.37500 19.735
0.50000 45.997
0.75000 142.079
1.00000 192.943
1.50000 211.722
2.00000 214.697
3.00000 216.157
4.00000 217.630
6.00000 217.874
8.00000 218.525
12.00000 218.666
16.00000 218.752
24.00000 218.732
32.00000 218.727
48.00000 218.696
64.00000 218.854
|