• 沒有找到結果。

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

4.2 雙核心 SLP 編碼器實現

4.2.1 雙核心 SLP 編碼器

通常在非對稱的雙核心嵌入式系統中包含一般處理器,如 ARM,以及專門 用來處理多媒體任務的處理器,如 DSP,FPGA。如圖 4.9[11]所示,一般處理器 為主端(master),主要控制輸入、輸出、周邊設備與 DSP 啟動時機等等,DSP 為 從端(slaves),從端(DSP)接收到主端(RISC)的訊號後開始做視訊編碼,結束後再 給主端一個訊號告訴主端編碼完成,主端再輸出編碼後的位元流,從端(DSP)編 碼的過程中,主端可以進行其他的程式。在非對稱雙核心處理器中,常因兩個處 理器不同的架構,暫存器的長度也不同,導致兩個核心的參數溢位。

但在 ADSP-BF609 中兩個處理器皆為 DSP,且兩個 DSP 硬體架構相同,因 此能直接避免上述溢位的問題,但兩個核心間的工作必須完善規劃才能發揮兩個 DSP 晶片的效能。如圖 4.10 所示,本論文令 Core0 主端,負責 SD card 的讀取與 寫入,由於 Core0 也是 DSP 晶片,於是本論文規劃在 SD card 讀取後再執行視訊 編碼,分擔一半的編碼運算,也藉此提高編碼效能。Core1 為從端,單純負責 H.264 之視訊編碼。

圖 4.9、非對稱雙核心處理器工作排程[11]

44

圖 4.10、ADSP-BF609 雙核心工作分配

在雙核心 DSP 中除了工作分配外,記憶體的配置也是十分重要。如圖 4.11 雙核心 SLP 編碼器記憶體配置示意圖,兩個核心的 L1 為獨自使用,沒有共享,

且存取速度較快,於是配置程各自的 stack 以儲存區域變數,提高編碼效能。L2、

L3 為兩個核心共享的記憶體。L2 記憶體空間較小,存取速度高於 L3,於是本論 文將 L2 配置為兩個核心的溝通記憶體空間,利用兩個核心皆能對 L2 存取,在 L2 儲存共同使用的參數,不僅能讓兩個核心互相傳遞參數,也能降低兩個核心 傳輸的耗能。L3 的存取速度較慢、儲存空間較大,所以本論文將 L3 配置為輸入、

輸出與 heap 的儲存空間。輸入與輸出主要由主端使用,且使用的次數較少,因 此配置在比較後面的記憶體區段。由於兩個核心皆有嵌入編碼器,所以在 L3 配 置兩個 heap 空間供不同的處理器使用。

45

在運行雙核心 SLP 編碼器時,由 Core 0 先將影像序從 SD card 讀取至 L3 暫 存。雙核心 SLP 編碼器會將連續影像序列的每張畫面劃分成兩個 slice 進行編碼 如圖 4.12。如圖 4.11 所示,對第一張畫面編碼時,Core 0 至 L3 讀取 slice 1 的原 始影像進行編碼,Core 1 至 L3 讀取對 slice 2 進行編碼。編碼完程後必須 slice 1 先將 H.264 位元流存入 Output buffer 才能再存 slice 2,這樣才能確保 H.264 位 元流的正確性。接著再編畫面 2、畫面 3 直至全部畫面都完成編碼,且位元流皆 存入 Output buffer 後,Core 0 再將 Output buffer 中的 H.264 位元流寫入至 SD card。

圖 4.11、雙核心 SLP 編碼器記憶體配置示意圖

46

圖 4.12、連續影像序列劃分 slice 示意圖

相關文件