Logo image
Accelerating H.264 Decoder on an Mulit-core Platform
Thesis

Accelerating H.264 Decoder on an Mulit-core Platform

陳文遠
Masters, 國立清華大學, 資訊工程學系
2010

Abstract

H.264 嵌入式系統 單一指令處理多筆資料 數位訊號處理器 多核心 H.264 Embedded System SIMD DSP Multi-core
在嵌入式系統的領域中,許多應用軟體開始夾帶大量的計算。而基於嵌入式系統的單一處理器效能並不彰,所以現今方法大多使用多顆處理器來同時處理這些運算。 此篇論文中,我們探討H.264 的解碼器在多核心架構的嵌入式系統上表現如何。我們所使用的平台是工研院研發的PAC DUO,其上有一顆ARM 的記憶體單元處理器以及兩顆數位訊號處理器PACDSP。除此之外,我們將H.264 的解碼器放到Android 的平台上面去跑以期能夠更接近現世的潮流。 過去,實驗室曾在PACDSP 上面研發一套編譯器。此套編譯器上有提供一組Intrinsic 的功能,讓使用者能夠寫出相當有效率的程式碼。換句話說,利用這組Intrinsic,使用者能夠輕易的達成SIMD 的效果,同時加速整個程式。為了要提昇H.264 在此平台的效能,我們將以下的因素全都納入考量:第一,遠端程序呼叫(RPC),每當程式需要從MPU 去呼叫PACDSP 時,此功能就會被呼叫一次,所以MPU 與PACDSP 之間的溝通越頻繁,此功能所花費的時間就越多,同時會拖慢整個程式;第二,由於PACDSP 本身的記憶體相當有限,在MPU 與 PACDSP 之間資料的傳遞也會是個關鍵;第三,H.264 解碼器本身的資料處理就附帶大量的關聯性,此特性會對整個程式的平行化有所阻礙。 我們不論在執行緒層級(thread-level)上,抑或是資料層級(data-level)以及功能層級(function-level)上都做了平行化。在執行緒層級(thread-level)上,我們創兩個執行緒分別執行解碼(decoding)部份以及繪圖(rendering)部份。在資料層級(data-level)上,平均分配資料給兩顆PACDSP 去執行繪圖部份。最後在功能層級(function-level)上,我們將繪圖部份其中的一些功能切到PACDSP 去執行,使其加速。 而實驗部份,我們測出在不同的加速技巧組合下,分別得出的每秒張數(frame rate),並且深入的坦討。只有一顆MPU 的版本有10.93 的每秒張數,而在我們許多加速技巧的最終版本則是得到14.26 的每秒張數。此外,如果只針對編譯的的Intrinsic 所產生的加速效果來看,則是有3.56 倍的成長。

Metrics

1 Record Views

Details

Logo image