基于異構(gòu)多核全高清H264解碼系統(tǒng)設(shè)計(jì)
移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來(lái),高清多媒體視頻的普及,3D大型手機(jī)游戲?qū)Φ某霈F(xiàn),單核嵌入式硬件平臺(tái)已經(jīng)難以滿(mǎn)足復(fù)雜的實(shí)際計(jì)算需求。而異構(gòu)多核處理器在視頻編解碼運(yùn)算上具有強(qiáng)大的優(yōu)勢(shì),已經(jīng)成為了嵌入式處理器架構(gòu)發(fā)展的趨勢(shì)。目前普遍高清視頻編解碼都采用異構(gòu)多核處理器內(nèi)的DSP進(jìn)行協(xié)同處理,通過(guò)片上通信機(jī)制實(shí)現(xiàn)核間多媒體數(shù)據(jù)傳輸。DSP相比軟解碼在速度和性能上得到了一定的提升,如DaVinci平臺(tái)內(nèi)置DSP能夠?qū)崿F(xiàn)720P視頻實(shí)時(shí)解碼。但DSP運(yùn)行時(shí)需要對(duì)信箱以及DMA進(jìn)行配置,占用較多的片上通信帶寬,導(dǎo)致核間通信效率不高,同時(shí)DSP編解碼效率和硬編解碼器相比仍偏低。為了進(jìn)一步提高全高清H264編解碼性能,本文采用TI Soc OMAP4430異構(gòu)多核處理器作為處理平臺(tái),其最大不同在于內(nèi)置雙核Cortex-A9強(qiáng)勁處理器、雙核Cortex-M3協(xié)處理器及IVA-HD多媒體硬編解碼加速引擎。IVA-HD引擎內(nèi)部有7個(gè)針對(duì)各種視頻編解碼而設(shè)計(jì)的加速引擎,每個(gè)加速引擎擁有獨(dú)立的數(shù)據(jù)存儲(chǔ)器,可以在最大程度上降低模塊間因?yàn)樽x寫(xiě)數(shù)據(jù)造成的競(jìng)爭(zhēng)。同時(shí)采用virtio緩存隊(duì)列和RPMsg消息框架來(lái)實(shí)現(xiàn)基于異步通知的主處理核A9與協(xié)處理核M3間數(shù)據(jù)通信,具有大數(shù)據(jù)通信效率高、異步通知、等優(yōu)點(diǎn)。OMAP4430處理器內(nèi)部的Cortex-A9雙核處理器將運(yùn)行高級(jí)嵌入式操作系統(tǒng)Linux,負(fù)責(zé)系統(tǒng)工作任務(wù)的調(diào)度、音頻解碼、用戶(hù)界面交互,而其內(nèi)部的Cortex-M3將充當(dāng)輔助處理核,管理IVA-HD加速引擎完成解碼任務(wù),最后用實(shí)例驗(yàn)證本次設(shè)計(jì)的正確性。
本文引用地址:http://www.ex-cimer.com/article/271885.htm1主要技術(shù)
1.1 virtio緩存隊(duì)列
Virtio是半虛擬化hypervisor中位于設(shè)備之上的抽象層,為異構(gòu)多核間數(shù)據(jù)通信提供了最低層的實(shí)現(xiàn)。它使用了兩個(gè)基于異步通知的緩存隊(duì)列(一個(gè)用于向協(xié)處理核發(fā)送數(shù)據(jù),一個(gè)用于從協(xié)處理核接收數(shù)據(jù))和散列表用于與遠(yuǎn)程異構(gòu)處理器進(jìn)行數(shù)據(jù)通信。每個(gè)緩存隊(duì)列最多包含有512個(gè)緩存,每個(gè)緩存的大小限制在512字節(jié)以?xún)?nèi),緩沖池里面存放著通信數(shù)據(jù)。為了最大程度減少共享內(nèi)存,采用環(huán)形散列表,散列表每個(gè)表項(xiàng)包括了緩存的物理地址和緩存的大小,散列表存放在內(nèi)存特定地址中,主處理核與協(xié)處理核基于互斥機(jī)制的共享內(nèi)存方式進(jìn)行訪問(wèn),如圖1所示:
圖1異構(gòu)多核間訪問(wèn)virtio緩存池示意圖
采用共享環(huán)形散列表進(jìn)行異構(gòu)處理核間數(shù)據(jù)通信的好處主要有幾個(gè)方面:
1)采用散列表表項(xiàng)表示數(shù)據(jù)緩存可以減小共享內(nèi)存區(qū)域的大小,提高系統(tǒng)內(nèi)存使用率,同時(shí)允許變長(zhǎng)數(shù)據(jù)傳輸。
2)采用中斷方式通知目的處理器散列表的變化,減少了處理器盲目等待時(shí)間,提高了處理器的利用率
3)允許同時(shí)傳輸多個(gè)緩存數(shù)據(jù),提高了系統(tǒng)通信的吞吐率
1.2 RPMsg消息框架
RPMsg(Remote processor Messaging)是一個(gè)基于virtio技術(shù)的用于處理器核間數(shù)據(jù)通信的消息框架,提供協(xié)處理核上電復(fù)位管理、消息通信等功能。
1.2.1協(xié)處理核復(fù)位管理
主要負(fù)責(zé)加載程序執(zhí)行體到協(xié)處理核的運(yùn)行內(nèi)存中、設(shè)置負(fù)責(zé)虛擬地址映射到物理地址MMU單元,當(dāng)協(xié)處理核遇段錯(cuò)誤或內(nèi)部代碼異常時(shí),需要輸出直觀的出錯(cuò)信息并且提供了恢復(fù)機(jī)制使得協(xié)處理核可以重新使用。
1.2.2消息通信
RPMsg消息框架是基于virtio緩存隊(duì)列實(shí)現(xiàn)的主處理核和協(xié)處理核間進(jìn)行消息通信框架,RPMsg向系統(tǒng)注冊(cè)了一條消息總線,并為每個(gè)M3協(xié)處理核創(chuàng)建相應(yīng)的總線設(shè)備,而多個(gè)客戶(hù)端驅(qū)動(dòng)程序也注冊(cè)在該消息總線上并分配一個(gè)本地地址端口src和遠(yuǎn)程地址端口dst,當(dāng)客戶(hù)端驅(qū)動(dòng)需要發(fā)送消息時(shí),會(huì)把消息封裝成virtio緩存并添加到緩存隊(duì)列中以完成消息的發(fā)送,當(dāng)消息總線接收到協(xié)處理器送到的消息時(shí)會(huì)根據(jù)消息地址端口dst合理的派送給客戶(hù)驅(qū)動(dòng)程序進(jìn)行處理。其示意圖如圖2所示:
圖2 RPMsg消息總線工作示意圖
1.3 IVA-HD加速引擎
H.264/MPEG-4 Part 10是由ITU-T視頻編碼專(zhuān)家組和ISO/IEC運(yùn)動(dòng)圖像專(zhuān)家組(MPEG)聯(lián)合提出的高度壓縮數(shù)字視頻編解碼器標(biāo)準(zhǔn),被廣泛應(yīng)用于網(wǎng)絡(luò)流媒體資源、HDTV等方面。與之前MPEG4、H263等標(biāo)準(zhǔn)相比,H.264具有低碼率、高畫(huà)質(zhì)、高壓縮率和高可靠性等特點(diǎn),適用于干擾嚴(yán)重、丟包率高的信道中傳輸。
H264解碼流程如圖3所示,解碼器從網(wǎng)絡(luò)抽象層NAL中接收輸入的數(shù)據(jù)幀,進(jìn)過(guò)熵解碼、重新排列后得到量化系數(shù)矩陣X,量化系數(shù)矩陣在經(jīng)過(guò)反量化和空間變換后得到計(jì)算殘差Dn,同時(shí)通過(guò)運(yùn)動(dòng)補(bǔ)償和幀間預(yù)測(cè)或幀內(nèi)預(yù)測(cè)得到預(yù)測(cè)快Pn,將Pn和Dn相加結(jié)果uFn經(jīng)過(guò)環(huán)路濾波得到輸出緩存圖像Fn.
圖3 H264解碼器工作流程
IVA-HD引擎是針對(duì)嵌入式平臺(tái)進(jìn)行多媒體編解碼加速而設(shè)計(jì)的第三代硬件加速引擎,其支持H264、MPEG4、MPEG2、H263等常見(jiàn)的視頻編解碼標(biāo)準(zhǔn)。為了釋放CPU,讓其更有效的進(jìn)行數(shù)據(jù)準(zhǔn)備和邏輯功能控制,IVA-HD集成了7個(gè)硬件加速引擎,他們和H264解碼各個(gè)功能模塊所對(duì)應(yīng)關(guān)系在圖3中用虛線框表示,其中加速引擎名稱(chēng)core1-5所對(duì)應(yīng)的模塊功能分別是:熵解碼、反量化和反變換、環(huán)路濾波、幀內(nèi)預(yù)測(cè)、運(yùn)動(dòng)補(bǔ)償。
評(píng)論