• 沒有找到結果。

6. 實驗結果

6.3. 相異處理器實驗

對於 bit rate 為 192 K-bps 的 bit-stream,實驗在 Pure ARM、Pure DSP、和 Dual-core 時的效率。在每個處理器上跑 10 次 decoder 再做平均,觀察其效能的 不同。本實驗可以達到兩個目的。第一,探討 ARM 和 DSP 對 decoder service 的 相對速度。第二,驗證 dual-core 是否可以達到雙核心加成的能力:

Table 12. Pure ARM

service time(ms) application time(ms)

1 12454 15855

2 12451 15853

3 12459 15850

4 12451 15853

5 12452 15845

6 12452 15855

7 12451 15855

8 12450 15853

9 12454 15857

10 12452 15852

average 12453 15853

Table 13. Pure DSP

service time(ms) application time(ms)

1 14510 17911

average 14498 17893 Table 14. Dual core

service time(ms) application time(ms)

1 11003 14446

average 11520 14915

上方三張表分別是 pure ARM、pure DSP 和 dual-core 三種執行的結果。看 到 pure ARM 與 pure DSP 的比較。大家都知曉 DSP 就是為了處理數位訊號而特 別設計的處理器,其效能應該會比 ARM 來得好。在這組比較中得知卻是相反的。

其中的原因在於 HMP Scheduler 系統的 overhead。細數 overhead 有下例幾項:

z DSP invocation overhead

z Memory copy overhead

由第一項開始說明。ARM 如何通知 DSP 開始工作以及執行哪一個 service?

靠著 mailbox 來達成。ARM 如何得知工作己結束?也是靠 mailbox 來達成。因此 每個 service 交由 DSP 處理無可避免得承受 mailbox overhead。另外在 DSP 端 kernel 要處理 DSP 上排程問題,也必須執行 context switch,這些都是 overhead。

測量之下得到一次 DSP invocation overhead 平均時間要 450 個 time tick。比較 ARM 和 DSP 對 idct 最長的執行時間,ARM 為 600 個 time tick;DSP 為 2080 個 time tick。DSP invocation overhead 佔了 DSP 執行時間的五分之一。

另外,第二項 overhead,是 memory copy overhead。DSP 被限制無法存取 ARM 的記憶體空間,除了共用記憶體外。所以 HMP Scheduler 需負責將資料由 ARM heap 區搬到共用記憶提供 DSP 使用;相同地,DSP 運算完畢後,HMP Scheduler 也要負責填回到 heap 區。當然這一段時間包含在 service 給 DSP 處理 的執行時間內。就 idct 而言,必需搬動 64 筆 short 資料兩次,共要花 100 個 time tick。

表 12、13 和 14 記錄了所有 service 執行時間的總和以及應用程式執行的時 間。現在讓我們檢視各 sercive 在不同處理器上的執行時間,將表 12 和表 13 各 自第一筆實驗的細部資料列出如下二表;

Table 15. service time

ARM time(ms) DSP time(ms)

idct 3795 idct 4788 inter 2895 inter 3088 intra 591 intra 635 interpolation 5172 interpolation 5998

service time 12454 service time 14510 app time 15855 app time 17911

Table 16. Reference profile

ARM clock cycles per MB

DSP clock cycles per

MB ratio

(Y)DC pred. & comp. 44268 8465 5.229533373

(Y)Transform 188250 23178 8.121925964

(Y)Quant 247201 39521 6.25492776

(Y)Inv. Quant 238948 30002 7.964402373 (Y)Inv. Transform 202184 27863 7.256361483 (Y)Reconstruct 106392 17835 5.965349033

(DC)DC pred. & comp. 50458 10142 4.97515283

(DC)Transform 88928 11379 7.815097988

(DC)Quant 134689 20814 6.47107716

(DC)Inv. Quant 124131 15410 8.055223881 (DC)Inv. Transform 100497 13907 7.226360825 (DC)Reconstruct 51913 8861 5.858593838

cavlc 396022 46204 8.57116267

ILF 420018 37209 11.28807547

Total 2393899 310790

在表 15 裡面可得到各項 service 的執行時間、全部 service 總和執行時間、

和應用程式執行時間。我們著重於各項 service 在不同處理器上執行時間的討探,

藉此可以了解不同處理器對同一個 service 的處理速度。以 idct 為例,ARM 和 DSP 的比例是 1:1.26(3.7:4.7)。但是根據研究室學長過去的的測試[24] ARM 和 DSP 對 idct 的執行時間比為 7.226:1(Inv. Transform 欄位),這個數字是在 ARM 沒有開啟 cache 的情況下產生的。估計 ARM 的 cache 打開後,ARM 的處理時間

何以我們不也改用組語來寫 DSP 部份的程式和改變乘法的使用方式?其原 因是 HMP Scheduler 設計的重點在於減少 platform dependence 以及方便程式的移 植。忠重這個想法,我們對 reference software 只做最少且必要的修改,其他一律 依原程式的寫法忠實呈現-- 不特別將 C 語言改為組合語言也不特別對程式做最

Table 17. bit rate 實驗:192k bps service time(ms) application time(ms) 1 11004 14447

Table 18. bit rate 實驗:128k bps service time(ms) application time(ms) 1 9514 11967