• 沒有找到結果。

第四章 多核心視訊編碼器系統架構與實現

4.1 H.264 視訊編碼架構與平行處理分析

4.1.2 平行處理之選擇

平行處理一般指許多指令同時進行運算的模式。其中又可以分為時間平行與 空間平行。時間平行指的是執行緒級平行(thread-lever parallelism),以單一核心控 制執行的順序。空間平行是使用多個處理器同時計算,空間平行又可以分為指令 集平行(instruction-level parallelism: ILP)、任務平行(task-level parallelism: TLP)與 資料平行(data-level parallelism: DLP)。ILP 是在程式運作中,許多指令的操作能 同時進行,如圖 4.2 所示,三個加法以 ILP 則可以以一個指令完成運算。TLP 也 可以稱為控制平行(control parallelism)或功能平行(function parallelism),TLP 指每顆核心各自分配一個可以同時處理的任務或模組分別執行、運算。DLP 是將

38

把大任務劃分成數個相同的子任務分配到不同的核心中運算。根據 H.264 編碼器 之編碼層次架構與編碼流程,主要可以使用的平行方法為任務級平行和資料級平 行,以下對平行處理的方法與 H.264 之分析如下:

任務級平行(TLP )

如上文所述,H.264 的編碼流程可以劃分為許多不同的模組,intra prediction 舉例,如圖 4.3 intra predicton 編碼流程圖[10],流程的上半部為 chroma 的 intra prediction,流程的下半部為 luma 的 intra prediction,若在單核心處理器必須做完 luma,再做 chrom。若以 TLP 分工,一個核心做 luma,而另一個核心做 chroma,

則可以增加不少的編碼效能。但是以 TLP 分工執行編碼器會牽涉到編碼流程每 個模組之資料的相依性,例如 intra prediction 與 inter prediction 各自做完後須經 過比較,選擇一種最佳的 mode 才能繼續接著做其他的模組。如圖 4.4 所示,每 個模組運算負載也不盡相同,若是運用在對稱雙核心的 ADSP-BF609 開發板,在 沒有作業系統(operating system: OS)對執行續排程的情況下,以任務分配平行會 導致核心的工作分配不均勻,無法使多核心編碼器發揮至最大的效能。

圖 4.3、Intra predicton 編碼流程圖[10]

39

圖 4.4、intra 模組以任務級平行處理之編碼時序圖

資料級平行(DLP)

如在上文所述,資料級平行是把大任務細分後再分配給不同的核心做運算,

但 DPL 受限於資料相依性,因此必須在編碼結構中找出資料相依性較低的任務。

依據 H.264 編碼結構將可使用 DPL 的結構分為:GOP-LeveL parallelism(GLP)、

Frame-Level parallelism(FLP) 、 Slice-Level parallelism(SLP) 和 MBs-Level parallelism(MLP)。以下對 DLP 與 H.264 之分析如下:

GOP-LeveL parallelism(GLP):如圖 4.5 所示,H.264 編碼是以封閉式 GOP,

GOP 的開頭為 I-slice,後面每張畫面皆為 P-slice,直至下個 GOP。因此多核心 的處理器可以很輕易的以 GOP 當單位做分工與排成。但由於 ADSP-BF609 的記 憶體不像 PC 這麼充裕,且本論文希望能使用 ADSP-BF609 對較高的影像解析度 編碼,若一次讀取一個 GOP 會因記憶體不足導致編碼失敗。

40

圖 4.5、封閉式 GOP 示意圖

圖 4.6、H.264 位元流架構圖

Frame-Level parallelism(FLP): 在 GLP 內文提到,GOP 的第一張畫面為 I

畫面,往後的 P 畫面皆必須向前參考,且每張參考畫面必須經過 ME 後,在從 所有參考畫面中選取一個為最佳的 MV。FLP 是以不同的核心做不同的參考畫 面來加快編碼速度,但每個畫面間的參數必須在處理器間頻繁的傳輸,導致編 碼的資料依賴性十分的高。

Slice-Level parallelism(SLP): 如圖 4.6 所示,H.264 中 slice 為最小編解碼單

位,每個 slice 不需要依靠其他的 slice 即可獨立編、解碼。利用此特性設計的多 核心編碼器不僅可以適應任何大小的影像解析度。但過劃分多的 slice 會破壞資 料的相依性,導致位元率與編碼時間上升。

相關文件