發布日期:2022-04-26 點擊率:42
關鍵詞: imx8 imx8qm nxp
摘要:NXP發布的i.MX8處理器具有多種規格,最高配置的i.MX8QM具有雙核Cortex-A72和四核Cortex-A53。這種大小核組合的處理器,為用戶帶來更大的性能靈活性,利用高性能的大核快速完成運算,低性能小核則提供優化的功耗表現。下面我們將以Apalis iMX8QM核心板為例,介紹如何利用這種特性,并觀察功耗差異
1). 簡介
NXP發布的i.MX8處理器具有多種規格,最高配置的i.MX8QM具有雙核Cortex-A72和四核Cortex-A53。這種大小核組合的處理器,為用戶帶來更大的性能靈活性,利用高性能的大核快速完成運算,低性能小核則提供優化的功耗表現。下面我們將以Apalis iMX8QM核心板為例,介紹如何利用這種特性,并觀察功耗差異。
2). 單核性能測試
a). Cortex-A72最高時鐘1.6GHz,Cortex-A53最高為1.2GHz。Cortex-A72和Cortex-A53在架構也上存在很大的差異,雖然同屬于ARMv8.0-A,但是在流水線深度、亂序執行、緩存等特性上卻有所不同,從而帶來處理性能的差異。理論上Cortex-A72性能會高于Cortex-A53。
b). 為了測試在Cortex-A72和Cortex-A53上的單核性能表現,我們將使用encode-flac,測試壓縮一個WAV音頻文件所消耗的時間。該工具是單線程運行,適合做單核計算測試。
./ 首先下載SDK,編譯encode-flac。
-------------------------------
$ . environment-setup-aarch64-tdx-linux
$ cd encode-flac
$ ./configure --prefix=~/encode-flac-bin --host=aarch64-tdx-linux --build=x86_64-linux
$ make
$ make install
-------------------------------
./ 在~/encode-flac-bin 能找到到本次測試所需的flac程序。Taskset工具能夠指定應用運行在哪個處理器上面。Taskset通過設置CPU掩碼來選擇CPU。我們可以用cpufreq-info 命令查看所有可用的CPU。
-------------------------------
# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: imx8-cpufreq
CPUs which run at the same hardware frequency: 0 1 2 3
CPUs which need to have their frequency coordinated by software: 0 1 2 3
maximum transition latency: 61.0 us.
hardware limits: 600 MHz - 1.20 GHz
available frequency steps: 600 MHz, 900 MHz, 1.10 GHz, 1.20 GHz
available cpufreq governors: interactive, conservative, userspace, powersave, ondemand, performance, schedutil
current policy: frequency should be within 600 MHz and 1.20 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.20 GHz (asserted by call to hardware).
cpufreq stats: 600 MHz:59.80%, 900 MHz:0.06%, 1.10 GHz:0.04%, 1.20 GHz:40.11% (240)
......
analyzing CPU 5:
driver: imx8-cpufreq
CPUs which run at the same hardware frequency: 4 5
CPUs which need to have their frequency coordinated by software: 4 5
maximum transition latency: 61.0 us.
hardware limits: 600 MHz - 1.60 GHz
available frequency steps: 600 MHz, 1.06 GHz, 1.30 GHz, 1.60 GHz
available cpufreq governors: interactive, conservative, userspace, powersave, ondemand, performance, schedutil
current policy: frequency should be within 600 MHz and 1.60 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.60 GHz (asserted by call to hardware).
cpufreq stats: 600 MHz:69.45%, 1.06 GHz:0.05%, 1.30 GHz:0.01%, 1.60 GHz:30.49% (153)
-------------------------------
./ 這里總共有CPU 0到CPU 5,其中CPU 0~CPU 3為Cortex-A53,CPU 4~CPU 5為Cortex-A72。
例如0x30表示允許使用兩個A72核心,0x10表示只使用一個A72,同樣0x01表示只使用一個A53,而0x3F則表示使用所有的處理器核心。需要注意的是,這里是指用taskset工具指定某一個程序所使用的處理器核心,不被指定的處理器核心仍處于工作狀態,只是不用其來運行該程序。因此taskset并不能啟到關閉處理器核心的功能。
c). 我們將配合編譯好的encode-flac和taskset工具來觀察i.MX8QM不同核心的計算機能力以及功耗的差異。
在空閑狀態下,我們通過功率計查看Ixora底板和Apalis iMX8QM 模塊以及電源適配器的功耗(本文測試僅連接以太網和調試串口和散熱器風扇,不連接包括顯示器在內的其他設備)為7.6W。
./ 在一個A53內核上運行
-------------------------------
root@apalis-imx8:~# taskset 0x0f time ./flac --best ./Perfect.wav -f -o output 2>&1
flac 1.3.2
Copyright (C) 2000-2009 Josh Coalson, 2011-2016 Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under certain conditions. Type `flac' for details.
Perfect.wav: WARNING: skipping unknown chunk 'LIST' (use --keep-foreign-metadata to keep)
Perfect.wav: wrote 29478930 bytes, ratio=0.634
real 0m 41.21s
user 0m 40.90s
sys 0m 0.21s
-------------------------------
壓縮一個wav文件耗時41.2秒,功耗7.9W。
上圖我們看到,單線程的encode-flac僅在一個A53處理器上滿負荷運行。
./ 在一個A72內核上運行
-------------------------------
root@apalis-imx8:~# taskset 0x20 time ./flac --best ./Perfect.wav -f -o output 2>&1
flac 1.3.2
Copyright (C) 2000-2009 Josh Coalson, 2011-2016 Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under certain conditions. Type `flac' for details.
Perfect.wav: WARNING: skipping unknown chunk 'LIST' (use --keep-foreign-metadata to keep)
Perfect.wav: wrote 29478930 bytes, ratio=0.634
real 0m 9.23s
user 0m 9.06s
sys 0m 0.13s
-------------------------------
壓縮一個wav文件耗時9.2秒,功耗9.5W。
上圖我們看到,單線程的encode-flac僅在一個A72處理器上滿負荷運行。
單核性能和功耗對比
3). 多核性能測試
a). 我們將使用一個簡單C++全局光照渲染器smallpt在多個CPU上借助OpenMP實現多線程運算,測量在不同核心上完成渲染所需要的時間以及功耗。通過下面命令編譯smallpt
-------------------------------
$ ./configure --prefix=/home/ben/temp_ram --host=aarch64-tdx-linux --build=x86_64-linux
$ make
-------------------------------
b). 為了充分釋放所有核心的計算能力,我們將所有的CPU都配置為可用的最高時鐘,這時候請務必使用良好的散熱器件為處理器降溫。
-------------------------------
root@apalis-imx8:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
root@apalis-imx8:~# echo performance > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
-------------------------------
此時空閑狀態下的Ixora底板和Apalis iMX8QM 模塊以及電源適配器的功耗為7.9W。
./ 在4個A53同時運行
-------------------------------
root@apalis-imx8:~# taskset 0x0f time ./smallpt 100
Rendering (100 spp) 100.00%
real 3m 19.25s
user 13m 9.33s
sys 0m 0.09s
-------------------------------
功耗為8.9W,耗時3分19秒。上圖中看到4個A53核心處于滿負荷狀態。
./ 在2個A72同時運行
-------------------------------
root@apalis-imx8:~# taskset 0x30 time ./smallpt 100
Rendering (100 spp) 100.00%
real 2m 58.71s
user 5m 56.20s
sys 0m 0.03s
-------------------------------
功耗為10.3W,耗時2分58秒。上圖中看到2個A72核心處于滿負荷狀態。
./ 在4個A53和2個A72同時運行
-------------------------------
root@apalis-imx8:~# taskset 0x3f time ./smallpt 100
Rendering (100 spp) 100.00%
real 1m34.648s
user 9m20.123s
sys 0m0.127s
-------------------------------
功耗為11.4W,耗時1分34秒。上圖中看到2個A72和4個A53核心處于均滿負荷狀態。
多核性能和功耗對比
4). 總結
Apalis iMX8QM計算機模塊能夠利用A72核心強勁的計算能力迅速完成運算任務,甚至是調用iMX8QM所有6個核心發揮其最大的CPU計算能力,而在A53核心上則能夠以較低的功耗執行,這種組合方式為嵌入式產品在功耗和性能上提供了靈活的選擇。除此之外Apalis iMX8QM還具有DSP、雙核GPU以及Cortex-M4,能夠借助DSP指令、OpenCL并行計算帶來更多的算力,同時M4還可以以更低的功耗運行。本次測試采用了Toradex Linux v3.0b2 BSP,隨著模塊本身和軟件的進一步完善,該模塊會有更佳的表現。
下一篇: PLC、DCS、FCS三大控
上一篇: MATLAB和Simulink在航