在這一個章節中,我們會簡單介紹我們實驗環境的設定並列出資料,並根據這些 現有的資料來做進一步的分析。
5.1. 實驗環境與數據
在 H.264 的 INTRA_16x16 的壓縮過程中,我們切割成幾個模組並分別編譯成 ARM 與 DSP 的程式碼,如下圖所示。在 prediction & compensation 模組中,我們現在只有 將 DC prediction 的程式碼加上去,其他包括 Horizontal、Vertical、Plane 的程式碼我們 都還沒整合到這個架構中,所以我們現在壓縮的模式都是用 DC prediction。
chopper
mode
select prediction &
compensation Q
CAVLC
T-1 reconstruct ILF
mux bitstream
prediction &
compensation
ref 1 ref 2
ref 3 ARM
DSP
T Q-1
Q CAVLC
T-1 reconstruct ILF
T Q-1
chopper
mode
select prediction &
compensation Q
CAVLC
T-1 reconstruct ILF
mux bitstream
prediction &
compensation
ref 1 ref 2 ref 3 ref 1 ref 2
ref 3 ARM
DSP
T Q-1
Q CAVLC
T-1 reconstruct ILF
T Q-1
Fig. 29 INTRA_16x16 encoding process
為 了 兩 個 核 心 的 溝 通 方 便 , 所 以 我 們 利 用 DSP MMU 的 設 定 來 映 射 (mapping)SRAM 到 DSP 的記憶體空間,做為兩個核心的共享記憶體(share memory),
這個共享記憶體主要是存放現有要壓縮的畫面和解壓完後的畫面。ARM 的程式碼主 要是放在 SDRAM 上,DSP 的程式碼是放在 SARAM 上。因為我們在 ARM 的快取記 憶體的設定上一直出現問題,所以目前無法使用 ARM 上的快取記憶體,為了公平起 見,我們也將 DSP 上所需要用到的記憶體空間設定在 SRAM(share memory)上,而不 是比較快的 DARAM 上。
ARM 0x2000 0000
0x1130 0000 0x0000 0000
0x1120 0000
DSP
0x00 0000
0x00 8000
0x01 4000
0x68 0000 0x70 0000 Current
Frame &
Control data
Share MEM
Byte address ARM Word address
SRAM ARM Code
YCbCr Sequence 0x2000 0000
0x1130 0000 0x0000 0000
0x1120 0000
DSP
0x00 0000
0x00 8000
0x01 4000
0x68 0000 0x70 0000 Current
Frame &
Control data
Share MEM
Byte address Word address
Fig. 30 memory map
我們實驗用的影像序列是 stefan 的前 30 張,解析度是 QCIF(176x144),QP 固定 為 26。至於發展板上的設定,雖然 ARM 跟 DSP 都能達到 192MHz 的工作頻率,但是 我們是將他設定在 96MHz,以模擬現有的嵌入式系統的環境,Traffic Controller 我們 將它設定在它的最高頻率 96MHz。所量得數據如下:
Loosely-coupled
我們分別只利用單純的 ARM 或 DSP 來做整個的壓縮流程,我們利用每個巨區塊 所必須耗費的週期數(cycles per macroblock)來做統計。由下表我們可以很清楚的 發現 ARM 壓縮一個巨區塊耗費的時間是 DSP 處理的 7.62 倍,換句話說 ARM 處 理一個巨區塊的時間可以讓 DSP 處理 7.62 個巨區塊。
35
7.62 310796 1 (UV) Reconstruct
4.47%
13907 4.16%
98465 (UV) Inv. Transform
4.96%
15410 5.27%
124746 (UV) Inv. Quant
6.70%
20814 5.54%
131223 (UV) Quant
3.66%
11379 3.69%
87297 (UV) Transform
3.26%
10142 2.13%
50307 (UV) DC pred. & comp.
5.74%
17835 4.48%
105923 (Y) Reconstruct
8.97%
27863 8.31%
196585 (Y) Inv. Transform
9.65%
30002 9.43%
223279 (Y) Inv. Quant
12.72%
39521 10.51%
248798 (Y) Quant
7.46%
23178 7.84%
285453 (Y) Transform
2.72% (UV) Reconstruct
4.47%
13907 4.16%
98465 (UV) Inv. Transform
4.96%
15410 5.27%
124746 (UV) Inv. Quant
6.70%
20814 5.54%
131223 (UV) Quant
3.66%
11379 3.69%
87297 (UV) Transform
3.26%
10142 2.13%
50307 (UV) DC pred. & comp.
5.74%
17835 4.48%
105923 (Y) Reconstruct
8.97%
27863 8.31%
196585 (Y) Inv. Transform
9.65%
30002 9.43%
223279 (Y) Inv. Quant
12.72%
39521 10.51%
248798 (Y) Quant
7.46%
23178 7.84%
285453 (Y) Transform
2.72%
Table 1. Loose-coupled ARM and DSP performance
Tightly-coupled
利用 Tightly-coupled 的分工模式所得到的數據如表一所示,實驗的結果反而比單 純用一個 DSP 來跑的數據慢了大概 27.25%。ARM 所處理的巨區塊是 16 個,DSP Encode count
per frame
Tightly-couple Encode count
per frame
Tightly-couple DSP
ARM
Table 2. Tightly-coupled dual-core performance
A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D D D D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D A A D D D D D D D D D D D D D D D D D D D D
Fig. 31 tightly-coupled macroblock distributuion
5.2. 結果分析
從上一小節的數據中發現,Tightly-Coupled 的執行速度竟然還比用單一 DSP 還 慢,所以我們分析到底是為什麼?從圖 31 中我們大概可以猜的到 DSP 處理完一列後,
浪費許多時間在等 ARM 把第二個巨區塊執行完,而 ARM 幫忙做的區塊又比不上 DSP 在等待的這段時間中所能處理區塊數。
ARM
DSP D1 D2 D3
A1
D11
enable A1 end of row
switch A3
D12 D91
end of frame D99
parallel
ARM A2
DSP D1 D2 D3
A1
D11
enable A1 end of row
switch A3
D12 D91
end of frame D99
parallel
A2
Fig. 32 Tightly-Coupled execute time
Tightly-couple 每張畫面壓縮所花的時間:42025593 (clock cycles),真正壓縮的時 間為:T(DSP)*2+T(ARM)*18+T(DSP)*9 = 41290132 (clock cycle),所以在兩個核心在 溝通上與分配區塊所花費的週期數為 42025593 – 41290132 = 735461,所以會使系統的 效能降低 1.75%。
在平行化處理 88 個巨區塊的這段時間,總共花的時間為:T(ARM)*18 = 37871376
37
(clock cycles),如果這 88 個巨區塊都分配給 DSP 執行所花的時間為:T(DSP)*88 = 275350048(clock cycles),所以浪費了 3781376 – 27350048 = 10521328 (clock cycles),
約佔了全部的 25.035%。