• 沒有找到結果。

6. 實驗結果

6.5. DSP delay實驗

HMP Scheduler 發展的概念是動態的精細分工排程。換言之,HMP Scheduler 會動態地分辦處理器的狀態。理論上當 DSP 處理 service 的速度快於 ARM,service 會被分配到 DSP。但如果 DSP 同時又因為有其他工作在做--不是屬於 decoder 的 工作在執行中。在 DSP 上會發生 context switch 輪流處理 service 和另一項工作。

這麼一來 service 的處理,從開始到完成的時間就會變長。這個影響會使得 HMP Scheduler 將 service 分配給 ARM 執行,以取得相較之下最好的效能。

我們在 DSP 端隨機地增加不同工作,分別會使 DSP 上的 service 延遲 1000~5000 的 time ticks 不等。因為測試用的 services,單次 service 執行的時間在 正常情況下最大不會超過 2500 個 time tick。選擇延遲最大 5000 個 time tick 就會 對 DSP 造成很大的影響,可以達到模擬的目的。

在實驗中為了使 DSP 延遲,設計除了 decoder 的 service 之外的另一個給 DSP 執行的延遲用 service,稱之為 D-service。Kernel 利用隨機的方式決定是否使 DSP 延遲,如果決定延遲,就同時將 decoder service 和 D-service 一併透過雙核心溝 通機制通知 DSP 執行。D-service 會到上一節介紹過的 parameter table 讀取 kernel 準備的參數。此參數告知 D-service 要做多少次 loop,換言之可以決定延遲的 time tick。

經過測量,一次 mailbox 的往返會花費平均 450 個 time tick。通知 D-service 延遲的時間必需減掉 mailbox 往返的花費,所以是 550~4550 個 time tick。D-service 內每個 service 設計為消耗 550 個 time tick,於是 550~4550 個 time tick 延遲分別 是 loop 1 ~ 9 次。實驗結果如表 18、19、20、21 和 22:

Table 20. dual-core without delay

Dual-core with delay 和 delay distribution 兩張表格為一組。首先看到 dual-core with delay,第一欄為 service 單獨的執行時間、service time、和 application time。接著 兩欄分別是各 service 執行在不同處理器的次數。再來看到 delay distribution 這張 表,delay 這一列顯示的數字是 delay 的 tick 數,如 1000 是指 delay 1000 個 time tick 到 1999 個 time tick。2000 是指 delay 2000 個 time tick 到 2999 個 time tick。但是 5000 的欄是不同的,只有到 5050 個 time tick。因為 5000 對於系統己經是很大的 delay,故只使用到 5050 個 time tick。

Table 21. dual-core with delay 1

time(ms) ARM(次) DSP(次) sum(次)

Table 22. Delay distribution 1

delay(tick) 1000 2000 3000 4000 5000

次數 945 1038 788 893 40

Table 23. Dual-core with delay 2

time(ms) ARM(次) DSP(次) sum(次) idct 4348 18247 3455 21702 dequant inter 2608 15039 3039 18078 dequant intra 532 3006 618 3624 interpolation 4823 26206 5283 31489

service time 12310 application time 15837

sum(次) 62498 12395 74893

Table 24. Delay distribution 2

delay(tick) 1000 2000 3000 4000 5000

次數 918 1033 824 865 60

比較加入 DSP delay 和沒有加入 DSP delay 的數據,可以看到 DSP 處理的次 數都下降。Dequant inter 的數字由 3385 降到 3039 和 3045,約有 350 次的減少。

但是看到 dequant intra 的下降卻只有 70 左右,這是因為會呼叫到 dequant intra 的時機很少,只有 intra frame 上的 macro block 和 inter frame 上的 I macro block 會呼叫。這個 foreman bit-stream 的 intra frame 只有第一張,其他都是 inter frame。

所有呼叫 dequant intra 的總次數也只有 3624 次,和其他 service 呼叫量有一個位 數之差,所以加入 DSP delay 改變的幅度相比之下不大。

在之前的實驗結果 dual-core 的效能大於 pure ARM 和 pure DSP。當 DSP delay 發生,HMP Scheduler 就認為 DSP 上 service 的執行時間增加,若執行時間大於 ARM 的時間,就會判定 service 由 ARM 執行。既便是原本由 DSP 執行較快的 service 也因 DSP delay 的影響,就不再交由 DSP 負責。Dual-core 加入 DSP delay 因素使得 service time 由 10724 1 毫秒上升到 12325 毫秒,效能降低了。換另一 方面看,若系統測試到 DSP 方面的速度下降後,仍執意由 DSP 執行,效能肯定

更下降。為了避免這情形發生,HMP Scheduler 會判斷由 ARM 負責執行 service。

再者,看到 pure ARM 的平均 service time 是 12453 毫秒,dual-core 加入 DSP delay 的效能下降到和 pure ARM 差不多,但又比 pure ARM 好一些。因為由 ARM 負 責的 service 量上升,更接近於 pure ARM 的工作清形。

原始期望的效能是 dual-core > pure DSP > pure ARM。由於前述的 overhead 尚未克服,使得效能成為 dual-core > pure ARM > pure DSP。倘若上述 overhead 都能克服,直接影響到 DSP 在系統中的能力會大幅上升,進而使得 dual-core 也得到幫助。