在本章中,我們進行一些實驗來驗證我們所開發的系統效能.首先我們列出 實驗的執行環境如下:
一、實驗平台設定如下:
OMAP5912 內部的三個主要元件,ARM、DSP、Traffic Controller(TC),都 以96Mhz 的頻率在運作。測試結果以 ARM 端平均的 Timer count 值為單位。
二、H.264 編碼參數設定如下:
以 H.264 Intra frame 編碼,來源是 FOREMAN 的 300 張 yuv 檔,大小 176x144(qcif),QP 設定為 26,Slice 大小為整張 Frame,
5.1. 編碼速度測試
首先,我們以H.264 Intra frame 編碼器,來測試在純 ARM 和純 DSP 和第三 章所提到的以兩個核心一起協同運算(Tightly-coupled),這三種方式的視訊編碼效 率。
首先測試兩個核心基本的運算能力,因為ARM 有 Cache,而 DSP 有內部記 憶體,都可以用來提升編碼效率,所以在不使用Cache 和內部記憶體下的測試結 果如Table 5。我們可以看出基本上 DSP 的運算能力大約比 ARM 快了 1.4 倍。
Table 5. Encoding performance without Cache Encoding process Timer count % Pure ARM 464,756,901.91 139.10 Pure DSP 334,118,977.80 100.00
再來測試打開 I-Cache 後,雙方編碼速度各自能提升多少,雖然 DSP 也有 I-Cache,這邊是直接把程式(.text)載入到 DSP 內部記憶體的 SARAM,而沒有使 用DSP 的 I-Cache,測試結果如 Table 6。可以看出 ARM 的 I-Cache 效率不錯,
速度提升了4.4 倍,而 DSP 將運行的程式放在 SARAM,只提升了 2.4 倍,反而 讓ARM 的效率贏過了 DSP
Table 6. Encoding performance with I-Cache Encoding process Timer count %(ARM) %(DSP) Pure ARM 464,756,901.91 437.32 334.56 Pure ARM w/ I-Cache 106,274,430.96 100.00 76.50 Pure DSP 334,118,977.80 314.39 240.52 Pure DSP w/ SARAM 138,917,244.36 130.72 100.00
再加上D-Cache 來測試,但 DSP 並沒有 D-Cache,而且 DSP 內部記憶體大 小不夠把要編碼的 Frame 和之後重建出來的 Frame 都塞進去,所除了這兩個之 外的資料都是放在DSP 內部記憶體的 DARAM,測試結果如 Table 7。可以看到 ARM 再加上 D-Cache 後,速度提升了 3.1 倍,而 DSP 雖然無法把全部的資料都 放在DARAM,但也提升了 3.3 倍速度,可是還是比 ARM 慢了 1.2 倍。
Table 7. Encoding Performance with Cache
Encoding process Timer count %(ARM) %(DSP) Pure ARM 464,756,901.91 1,362.36 1,117.27 Pure ARM w/ I-Cache 106,274,430.96 311.53 255.48 Pure ARM w/ Cache 34,114,137.91 100.00 82.01 Pure DSP 334,118,977.80 979.41 803.21 Pure DSP w/ SARAM 138,917,244.36 407.21 333.95 Pure DSP w/ On-chip RAM 41,597,727.35 121.94 100.00
以Table 7 的數據來看,Tightly-coupled 的方式將採用兩個核心最快的 Cache 設定來測試,配合之前總合的結果如 Table 8。可以看到 Tightly-coupled 的方式 比純ARM 最快的速度還快了 1.2 倍,比純 DSP 最快的速度快了 1.5 倍。
Table 8. Overall Encoding Performance Encoding
process I-Cache D-Cache .text Data Shared
data Timer count % Pure ARM Off Off SDRAM SDRAM SDRAM 464,756,901.91 1,696.75 On Off SDRAM SDRAM SDRAM 106,274,430.96 387.99 On On SDRAM SDRAM SDRAM 34,114,137.91 124.55 Pure DSP Off SDRAM SDRAM SDRAM 334,118,977.80 1,219.82 Off SARAM SDRAM SDRAM 138,917,244.36 507.17 Off SARAM DARAM SDRAM 41,597,727.35 151.87 Tight-coupled A:On
D:Off
D:DARAM SDRAM 27,390,931.79 100.00
5.2. Scheduler 效率
為了提供多工環境的而在DSP 上增加了 Scheduler,其運行所帶來 overhead 也是必須值得參考。將分別以三種Time quantum,10ms、1ms、0.1ms,和以動 態服務的方式載入多個工作,在多 Process 的環境下,讓 DSP 運行 H.264 Intra frame 編碼器來測試對編碼效率的影響,將會測得 ARM 端的 Timer count 和 Scheduler 進行 Context switch 的次數。
測試結果如 Table 9,其中各項結果的百分比,是以前一節的純 DSP 運行 H.264 Intra frame 編碼器的 ARM 端 Timer count,41,597,727.35 為基準。而 Process 數大於1 的項目,除了運行 H.264 Intra frame 編碼器之外,多餘的 Process 都運 行了單純地在無窮迴圈中對一個變數做increment 運算。
Table 9. Scheduler Performance Process #
Time Quantum
1 2 3 4
取一個Process 和 Timer quantum 為 0.1ms 的項目,即運行 H.264 Intra frame 編碼器每 0.1ms 就會被強迫進行 Context switch,跟沒有 Scheduler 的條件下的 ARM 端 Timer count,來計算平均每次 Context switch 所需時間,ARM timer 是以 96Mhz 在運行,所 timer count 再除以 96Mhz,可得到時間:
(42,376,089.25 – 41,597,727.35) / 4,417.15 ≈ 176.21 (ARM timer count)
≈ 0.001836 ms
另外再由DSP 來測量 Context switch 的時間,如 Figure 49,以離開 Timer ISR 前的DSP Timer count 來計算實際花費時間,DSP timer 是以 12Mhz 在運行,所 timer count 再除以 12Mhz,可得到時間
(0x0000EA5F – 0x0000EA54)*2 = 22 (DSP timer count)
≈ 0.001833 ms
Load value Count value
Figure 49. Context Switch Time Measured by DSP Timer
分別由ARM 和 DSP 所測量的時間都蠻接近的。根據對 DSP 上運行服務的 反應速率的需求,可以選擇不同的Time quantum。而 Scheduler 所帶來的 overhead 如Table 10。
Table 10. Scheduler Overhead vs Time Quantum Time Quantum 10ms 1ms 0.1ms Overhead 0.018% 0.184% 1.836%
5.3. DMA 效率
由過去學長的論文[8],可得知 OMAP5912 的 System DMA 用來在兩個核心 的資料搬移,效率大不如DSP DMA。而且並沒有以 Burst 模式來測試,所以將 會測試DSP DMA 在 Burst 模式的效率。並且還測試在 3.2.4 小節所提到的,以 ENDPROG 的方式連續下兩個 DMA 命令,來搬移來源和目標的資料單位大小不 同之大筆資料。
測試方式是由Shared memory 上,搬移 32Kbyte 到 DSP 內部記憶體。測試 結果如下,其中參考了跟 OMAP5912 類似架構的數據,是由 TI 官方測試的 OMAP5910 平台上的 DMA 數據[18],單位是每 16bit 的 Traffic Control(TC) Cycle 數,Table 11 的數據是以 OMAP5912 的 TC 的 96Mhz 運行速度,計算得來的。
Table 11. DSP DMA 16to16 Performance with Burst Mode
MB/s W/o Burst W/ Burst 5910 Spec w/o Burst
5910 Spec w/ Burst SDRAM->SARAM 15.858 55.473 16.422 62.923 SDRAM->DARAM 15.855 55.506 16.422 62.923 SRAM->SARAM 21.254 60.995 36.621 104.632 SRAM->DARAM 21.254 60.995 36.621 104.632
如 Table 12,來源和目標都是以 16bit 為單位搬移 32Kbyte,跟來源是 8bit 而目標16bit 的搬移,以比較出兩次 DMA 搬移和單純用 DSP 搬移的效率,並以 DSP DMA 的數據一起對比。可以看出,單位大小一樣時,DSP 用 load-store 的 方式搬移,和沒有開Burst 模式的 DSP DMA 效率是類似的,而單位大小不一樣 時,用DSP DMA 並開啟 Burst 模式來搬移明顯比 DSP 有效率。
Table 12. 16to16 and 8to16 Performance
MB/s
SDRAM->SARAM 15.000 15.858 6.015 34.722 SDRAM->DARAM 15.007 15.855 6.015 34.735 SRAM->SARAM 22.888 21.254 7.630 37.722 SRAM->DARAM 22.888 21.254 7.630 34.735