專利名稱:一種針對嵌入式多核系統(tǒng)的視頻編碼流水化并行方法
技術(shù)領(lǐng)域:
本發(fā)明涉及媒體應(yīng)用程序的并行化編程,特別針對嵌入式多核系統(tǒng)提出了一種視 頻編碼程序流水化并行方法。
背景技術(shù):
多處理器系統(tǒng)芯片(MPSoC:Multi-Processor System-on-Chip)在計算性能、功 耗、芯片面積、以及實時性等方面的優(yōu)勢使得它在當今嵌入式領(lǐng)域應(yīng)用越來越廣泛。但是, 如何方便地為MPSoC開發(fā)高效的并行程序,對應(yīng)用程序開發(fā)者和系統(tǒng)設(shè)計者都是挑戰(zhàn)。媒體視頻應(yīng)用程序是嵌入式領(lǐng)域中應(yīng)用較多且運算量較大的一類程序。媒體程序 是一種典型的數(shù)據(jù)流處理程序,即依次對順序輸入的源數(shù)據(jù)進行若干處理階段生成結(jié)果后 輸出。對媒體視頻應(yīng)用程序的并行化有兩種策略(1)數(shù)據(jù)性并行劃分;即將處理過程中沒 有依賴關(guān)系的源數(shù)據(jù)分配到不同的處理器上進行處理,達到多核并行執(zhí)行的目的。(2)任務(wù) 性并行劃分;即將基本單元宏塊的處理過程分為若干階段,每個處理器只負責特定階段,且 處理完當前宏塊的被分配的處理階段后,就把結(jié)果送至下一處理器使其開始計算,通過幾 個處理器的協(xié)同及流水化地處理宏塊達到并行加速目的。對于視頻編碼器來說,現(xiàn)存的一些任務(wù)性并行劃分方法存在的限制主要包括(1) 沒有一個理論上的確定任務(wù)流水并行劃分方案的依據(jù)。(2)在任務(wù)流水劃分方案的分析中 沒有明確提出處理不同源數(shù)據(jù)時的數(shù)據(jù)依賴關(guān)系對任務(wù)流水線的影響。(3)沒有一個簡單 高效的任務(wù)同步及調(diào)度機制。本發(fā)明提出任務(wù)性并行化方法能避免上述限制,可以通過改 變?nèi)蝿?wù)流水級的劃分來均衡處理器負載,提高資源利用效率。
發(fā)明內(nèi)容
本發(fā)明提供了一種針對嵌入式多核平臺的視頻編碼器任務(wù)性流水化并行方法。該 方法主要包括兩方面的內(nèi)容(1)原始程序的并行化劃分;(2)劃分后的任務(wù)/線程的處理 器映射及并行調(diào)度執(zhí)行。程序并行化劃分的目標包括提升并行化程序的加速比;挖掘串行程序的并行 性,調(diào)度任務(wù)使得處理器等待開銷最小,優(yōu)化并行系統(tǒng)的資源利用率。本發(fā)明提出的針對嵌入式多核平臺的視頻編碼器任務(wù)性流水化并行方法具體包 括以下步驟(1)針對目標視頻編碼原程序,根據(jù)要進行流水并行的基本數(shù)據(jù)單元級別得到程 序的一種粗顆粒度數(shù)據(jù)流圖表示;根據(jù)原程序的流程選取的基本數(shù)據(jù)單元級別,對于視頻編程序,可以選取宏塊作 為基本的數(shù)據(jù)處理單元。(2)對目標視頻編碼原程序進行模擬仿真,提取數(shù)據(jù)流圖中各個節(jié)點運算量;在目標視頻編碼原程序并行劃分之前,選擇目標視頻序列進行動態(tài)仿真,記錄步 驟(1)得到的數(shù)據(jù)流圖中各個節(jié)點的運算量,作為確定并行劃分方案的依據(jù)。
3
(3)分析數(shù)據(jù)流圖中各個節(jié)點的依賴關(guān)系及流水化并行后處理基本數(shù)據(jù)單元時的 數(shù)據(jù)依賴關(guān)系;通過動態(tài)仿真確定數(shù)據(jù)流圖中各個節(jié)點之間的數(shù)據(jù)依賴關(guān)系,統(tǒng)計因這些數(shù)據(jù)依 賴關(guān)系導致的節(jié)點間所需的數(shù)據(jù)通信量大小,作為流水并行方案中額外數(shù)據(jù)通信開銷的依 據(jù)。(4)根據(jù)核間任務(wù)的并行性及核間數(shù)據(jù)通信開銷,得到流水并行劃分方案,若該方 案滿足并行系統(tǒng)要求,進入步驟(5),否則對原始數(shù)據(jù)流圖中的節(jié)點進行分裂或合并,回到 步驟⑵;將步驟(2)和步驟(3)得到的數(shù)據(jù)流圖中節(jié)點運算量統(tǒng)計和節(jié)點間數(shù)據(jù)通信量的 統(tǒng)計標注到步驟(1)得到的數(shù)據(jù)流圖中,得到原程序的一種同步數(shù)據(jù)流圖表示。根據(jù)同步 數(shù)據(jù)流圖及目標多核平臺的處理器數(shù)量選擇并行劃分方案。并行劃分方案的選擇包括以下 兩個指導原則(1)各個流水級的運算量盡量相等,減少因處理器負載不均衡導致的并行 效率下降;(2)根據(jù)數(shù)據(jù)流圖中節(jié)點的數(shù)據(jù)依賴關(guān)系,將數(shù)據(jù)通信量大的節(jié)點分配到同一 處理器上,減少因核間數(shù)據(jù)通信產(chǎn)生的開銷;最終,以總的并行加速比和系統(tǒng)資源利用率最 高為準則選取劃分方案。(5)根據(jù)步驟(4)得到的劃分方案對任務(wù)節(jié)點按照指示器的接口標準進行對象化 封裝,封裝后的對象靜態(tài)地映射到相應(yīng)的處理器核上,配合各個處理器核上的指示器實現(xiàn) 多核系統(tǒng)對視頻編碼原程序的流水化并行執(zhí)行;每個封裝后的對象(Object)包括行為函數(shù)和若干輸入輸出端口,每個輸入輸出 端口對應(yīng)一個輸入輸出緩沖區(qū)。每個端口都有一個相應(yīng)的標志位表示端口的狀態(tài),所有的 標志組成信號量條目(SemaEntry),指示器通過對信號量條目的查詢和更新來管理對象。當 對象的所有輸入輸出端口都就緒時,指示器調(diào)度對象執(zhí)行行為函數(shù),行為函數(shù)從輸入緩沖 區(qū)取得數(shù)據(jù)進行處理后產(chǎn)生結(jié)果送到輸出緩沖區(qū)。不同處理器間的數(shù)據(jù)通信由指示器完 成。本發(fā)明提出一種面向媒體應(yīng)用的流水化并行方法,以視頻編碼器為實例來進行多 核系統(tǒng)的程序并行化定量分析,具體的實施方法對于數(shù)據(jù)流處理類型的程序具有通用性。
圖1是本發(fā)明實施例的流程示意圖;圖2是本發(fā)明實施例的粗顆粒度數(shù)據(jù)流示意圖;圖3是本發(fā)明實施例的當前宏塊與相鄰宏塊的關(guān)系示意圖;圖4是本發(fā)明實施例的MPEG-4簡單檔次編碼器編碼流程示意圖;圖5是本發(fā)明實施例的MPEG-4編碼P型宏塊數(shù)據(jù)流圖;圖6是本發(fā)明實施例的多核系統(tǒng)平臺結(jié)構(gòu)示意圖;圖7是本發(fā)明實施例的三核并行劃分和映射方案示意圖;圖8是本發(fā)明實施例的五核并行劃分和映射方案示意圖;圖9是本發(fā)明實施例的三核并行方案的流水線示意圖;圖10是本發(fā)明實施例的五核并行方案的流水線示意圖。
具體實施例方式下面結(jié)合附圖,通過對MPEG-4簡單檔次編碼器的任務(wù)性流水化并行劃分實例來 說明本發(fā)明一種面向媒體應(yīng)用的多處理器流水化并行方法的實施方式。本發(fā)明提出的針對嵌入式多核系統(tǒng)提出了一種視頻編碼程序流水化并行方法的 流程如圖1所示?;跀?shù)據(jù)流圖進行串行程序的并行性分析,如圖2所示。典型的數(shù)據(jù)流圖由若干 節(jié)點及表示這些節(jié)點連接關(guān)系的有向弧組成,圖中節(jié)點只要所有的輸入都滿足后成為就 緒態(tài),就可以被執(zhí)行,執(zhí)行后產(chǎn)生的結(jié)果作為后續(xù)節(jié)點的輸入。節(jié)點可以是一段程序塊或 者一次函數(shù)調(diào)用,只要有足夠的處理器數(shù)目和處于就緒態(tài)的節(jié)點,這些節(jié)點就可以同時被 調(diào)度執(zhí)行,因此數(shù)據(jù)流模型從本質(zhì)上來講能夠用來開發(fā)程序的并行性。數(shù)據(jù)流圖中的有 向弧表示節(jié)點之間的數(shù)據(jù)依賴關(guān)系,存在數(shù)據(jù)依賴關(guān)系的節(jié)點不能同時執(zhí)行,而數(shù)據(jù)依賴 關(guān)系又可以分為兩類(1)處理同一個源數(shù)據(jù)時的數(shù)據(jù)依賴,本發(fā)明稱之為前向依賴(FD: ForwardD印endence),圖2中弧上的黑點即表示這種依賴關(guān)系。(2)處理不同源數(shù)據(jù)時的數(shù) 據(jù)依賴,本發(fā)明稱之為后向依賴(BD backward Dependence),圖2中M即表示這種依賴關(guān) 系。一般并行性開發(fā)考慮的是前向依賴產(chǎn)生的限制,如圖2中節(jié)點Fb和Fc間沒有前向 依賴從而可以并行執(zhí)行。但節(jié)點fa和Fb在對同一源數(shù)據(jù)處理的時候有數(shù)據(jù)生產(chǎn)-消費依 賴dAB而不能并行執(zhí)行。若Fa和Fb對不同的源數(shù)據(jù)處理時不存在數(shù)據(jù)依賴,可以排成流水 并行處理。在Fa處理當前輸入數(shù)據(jù)的時候,F(xiàn)b同時處理前一個時刻Fa處理完的輸入數(shù)據(jù), 這樣就可消除對同一源數(shù)據(jù)處理的前向依賴,從而實現(xiàn)了任務(wù)流水化并行。任務(wù)流水化并行方案的確定應(yīng)該盡量降低后向依賴引起的同步等待開銷,提升系 統(tǒng)性能。如圖2中所示,若節(jié)點Fb與Fd處于不同的流水級,由于后向依賴M的存在,F(xiàn)b在 FD處理完當前源數(shù)據(jù)之前不能進行下一個源數(shù)據(jù)的處理,導致流水線的停頓等待,降低了 系統(tǒng)性能。為了提高并行系統(tǒng)的資源利用效率,需要統(tǒng)計程序的數(shù)據(jù)流圖表示中的各節(jié)點模 塊的運算量,分析節(jié)點間前向依賴和后向依賴關(guān)系,考察數(shù)據(jù)通信開銷等因素,以探索一種 使得多個處理器的負載均衡、流水線停頓等待開銷最小的程序劃分和任務(wù)映射方案。并行化方案的確定過程中,任務(wù)節(jié)點顆粒度大小的選擇至關(guān)重要。任務(wù)顆粒度小 則在任務(wù)映射時更方便地實現(xiàn)處理器的負載均衡化,同時能更靈活地適應(yīng)不同數(shù)量處理器 核的情況,但是相應(yīng)的通信開銷、劃分復雜度、以及程序代碼量都會增加,因為每個任務(wù)都 要進行對象化封裝,對象內(nèi)部需要額外的數(shù)據(jù)通信管理模塊。MPEG-4簡單檔次編碼流程如圖4所示。在MPEG-4編碼程序中,原始圖像的基本數(shù) 據(jù)單元宏塊(MB :MaCr0Bl0Ck)按照從上到下、從左到右的掃描順序輸入,經(jīng)過若干任務(wù)處 理后產(chǎn)生壓縮碼流。在對其并行化過程中,為了能夠合理安排任務(wù)流水,不僅要考慮編碼單 個宏塊時各個任務(wù)之間的數(shù)據(jù)依賴關(guān)系,還要考慮相鄰宏塊間的數(shù)據(jù)依賴關(guān)系即后向數(shù)據(jù) 依賴關(guān)系。如圖4所示,I幀和P幀的編碼流程不同,I幀宏塊不用進行P幀宏塊中的運動搜 索部分。因此針對P幀的劃分方案,在處理I幀數(shù)據(jù)時流水級會有較大的不均衡性。但是 由于一般而言的編碼模式為IPPP…IPPP…,每兩個I幀之間間隔十幾甚至幾十個P幀,且
5兩個I幀之間P幀越多這種不平衡造成的影響就越小,因此主要考慮P幀的均衡性進行流 水級并行化。通過對典型視頻序列(foreman,news,mobile,bus)的模擬仿真,統(tǒng)計得到MPEG-4 編碼器編碼P幀宏塊時各主要模塊的運算量比例如表1所示。表1. MPEG-4編碼P幀宏塊時各主要模塊運算量占總運算量比例 為了得到盡可能高的壓縮率,MPEG-4編碼器使用了各種預測技術(shù),從而加重了宏 塊間的數(shù)據(jù)依賴性。無論是幀內(nèi)編碼幀(I frame)還是幀間編碼幀(Pframe),當前宏塊與 宏塊A、宏塊B、以及宏塊C都存在數(shù)據(jù)依賴,如圖3所示。I幀中當前宏塊數(shù)據(jù)的預測值由宏 塊A、宏塊B、以及及宏塊C計算得到;P幀的最后編碼的運動矢量殘差(MVD :Motion Vector Difference)也是當前運動矢量與預測矢量相減計算得到;而預測矢量由宏塊A、宏塊C、以 及宏塊D計算得到,I幀和P幀的環(huán)路濾波都需要左邊和上邊宏塊的值。熵編碼的順序要 求嚴格按照宏塊掃描順序進行,即當前宏塊熵編碼未完成之前不能進行下一個宏塊的熵編 碼。保證在處理當前宏塊時上一行的宏塊都已處理完畢,這樣后向數(shù)據(jù)依賴存在于當前宏 塊與左邊宏塊間。但是這種有后向依賴的節(jié)點之間生產(chǎn)者所處的流水級階段在消費者所處 的流水級階段之前,如圖4中,系數(shù)預測模塊處理當前宏塊數(shù)據(jù)時需要上一個宏塊編碼完 成之后的結(jié)果,而宏塊編碼模塊在系數(shù)預測模塊之前,執(zhí)行當前宏塊系數(shù)預測時上一個宏 塊的編碼操作已經(jīng)完成,因此不會對任務(wù)流水線產(chǎn)生停頓影響。如表1所示,運算量比例不均衡。運動估計模塊占去了大部分的運算時間。為了 均衡處理器負載,必須重新分裂或合并節(jié)點,并根據(jù)具體硬件平臺的資源確定劃分策略。運 動估計模塊可分為整像素運動估計和半像素運動估計,其中運算量較大的半像素運動估計 模塊又可分為一次16X 16塊搜索和四次8X8塊搜索。MPEG-4編碼P幀宏塊的數(shù)據(jù)流圖如 圖5所示。圖5中節(jié)點邊上的數(shù)字表示該節(jié)點執(zhí)行的指令條數(shù),節(jié)點間數(shù)據(jù)通信量大小如 表2所示。表2.節(jié)點間數(shù)據(jù)通信量 本發(fā)明利用異構(gòu)多核片上系統(tǒng),包括1個精簡指令集計算機(RISC Reducedlnstruction Set Computer)處理器和 8 個數(shù)字信號處理器(DSPs :DigitalSignalProcessors)組成的多核RED平臺進行三核和五核的并行方案實驗,RED平臺結(jié)構(gòu)如圖6所 示。三核和五核的任務(wù)劃分及映射方案如圖7和圖8所示。圖7中的映射方案為三級流水,其中數(shù)字信號處理器#1上的兩個對象實際上處于 不同的流水級,但是流水化執(zhí)行一段時間后,可以把它們處理不同源數(shù)據(jù)的情況看成同一 流水階段。圖8中的映射方案為五核四級流水,其中數(shù)字信號處理器#2和數(shù)字信號處理器 #3上的對象彼此沒有數(shù)據(jù)依賴而并行,它們處于同一流水級。相應(yīng)的流水線狀態(tài)分別如圖 9和圖10所示。上述兩種方案提到的這些可并行模塊占程序總運算量的比例約為96. 3%,兩種并 行方案中這些模塊理論上的加速比分別為2. 92和4. 28,根據(jù)阿姆達爾(Amdahl)定律,整個 程序的理論加速比分別為2. 72和3. 82。最后,還需要注意的是,以上列舉的僅是本發(fā)明的具體實施例子。顯然,本發(fā)明不 限于以上實施例子,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直 接導出或聯(lián)想到的所有變形,均應(yīng)認為是本發(fā)明的保護范圍。
權(quán)利要求
一種針對嵌入式多核系統(tǒng)的視頻編碼流水化并行方法,其特征在于包括以下步驟(1)針對目標視頻編碼原程序,根據(jù)要進行流水并行的基本數(shù)據(jù)單元級別得到程序的一種粗顆粒度數(shù)據(jù)流圖表示;(2)對目標視頻編碼原程序進行模擬仿真,提取數(shù)據(jù)流圖中各個節(jié)點運算量;(3)分析數(shù)據(jù)流圖中各個節(jié)點的依賴關(guān)系及流水化并行后處理基本數(shù)據(jù)單元時的數(shù)據(jù)依賴關(guān)系;(4)根據(jù)核間任務(wù)的并行性及核間數(shù)據(jù)通信開銷,得到流水并行劃分方案,若該方案滿足并行系統(tǒng)要求,進入步驟(5),否則對原始數(shù)據(jù)流圖中的節(jié)點進行分裂或合并,回到步驟(2);(5)根據(jù)步驟(4)得到的劃分方案對任務(wù)節(jié)點按照指示器的接口標準進行對象化封裝,封裝后的對象靜態(tài)地映射到相應(yīng)的處理器核上,配合各個處理器核上的指示器實現(xiàn)多核系統(tǒng)對視頻編碼原程序的流水化并行執(zhí)行。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟(2)選取目標視頻序列,記錄視頻編 碼原程序動態(tài)處理目標序列時數(shù)據(jù)流圖中各個節(jié)點的運算量比例,作為得到任務(wù)流水級劃 分方案的依據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟(3)中對數(shù)據(jù)流圖中節(jié)點的依賴關(guān) 系包括節(jié)點間對同一個基本數(shù)據(jù)單元處理時產(chǎn)生的數(shù)據(jù)依賴和節(jié)點間處理不同基本數(shù)據(jù) 單元時產(chǎn)生的數(shù)據(jù)依賴。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于所述流水并行方案按如下方法得到根據(jù) 目標多核平臺的處理器數(shù)量和目標視頻編碼原程序處理一個基本數(shù)據(jù)單元的總運算量,確 定任務(wù)流水線的流水級數(shù)量和每級流水級的運算量;根據(jù)數(shù)據(jù)流圖中各節(jié)點的運算量比例 和節(jié)點間數(shù)據(jù)依賴關(guān)系分配節(jié)點到相應(yīng)的流水級中。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述流水并行劃分方案的選擇包括以下 兩個指導原則(1)各個流水級的運算量盡量相等,減少因處理器負載不均衡導致的并行 效率下降;(2)根據(jù)數(shù)據(jù)流圖中節(jié)點的數(shù)據(jù)依賴關(guān)系,將數(shù)據(jù)通信量大的節(jié)點分配到同一 處理器上,減少因核間數(shù)據(jù)通信產(chǎn)生的開銷;最終,以總的并行加速比和系統(tǒng)資源利用率最 高為準則選取劃分方案。
6 根據(jù)權(quán)利要求1所述的方法,其特征在于在步驟(5)中,所述封裝后的對象包括輸 入輸出端口和行為函數(shù),每個輸入輸出端口對應(yīng)一個輸入輸出緩沖區(qū),行為函數(shù)從輸入緩 沖區(qū)取得數(shù)據(jù)進行處理后產(chǎn)生結(jié)果送到輸出緩沖區(qū)。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟(5)中,指示器記錄各個對象端口對 應(yīng)的狀態(tài)信息,所述狀態(tài)信息組成信號量條目,指示器通過對信號量條目值的查詢和更新 來實現(xiàn)對象調(diào)度管理及同步操作。
全文摘要
本發(fā)明提出了一種針對嵌入式多核系統(tǒng)的視頻編碼程序流水化并行方法,該方法基于視頻編碼原程序?qū)緮?shù)據(jù)單元處理的數(shù)據(jù)流圖表示,對目標視頻編碼原程序進行模擬仿真,提取數(shù)據(jù)流圖中各個節(jié)點運算量,分析數(shù)據(jù)流圖中各個節(jié)點的依賴關(guān)系及流水化并行后處理基本數(shù)據(jù)單元時的數(shù)據(jù)依賴關(guān)系,根據(jù)得到的節(jié)點運算量及節(jié)點間依賴關(guān)系選擇處理器負載均衡、核間通信量少的流水并行劃分方案。得到劃分方案后對任務(wù)節(jié)點按照指示器的接口標準進行對象化封裝,將封裝后的對象靜態(tài)地映射到相應(yīng)的處理器核上,配合各個處理器核上的指示器實現(xiàn)多核系統(tǒng)對視頻編碼原程序的流水化并行執(zhí)行。本發(fā)明適用于各種數(shù)據(jù)流處理類型的程序的并行化。
文檔編號H04N7/26GK101860752SQ201010166248
公開日2010年10月13日 申請日期2010年5月7日 優(yōu)先權(quán)日2010年5月7日
發(fā)明者劉鵬, 徐志遠 申請人:浙江大學