針對H.264的編譯碼設(shè)計(jì)以及各種硬件加速架構(gòu)
——
由H.264具有一系列優(yōu)于MPEG4和H.263的特性,在相同的重建圖像質(zhì)量下,能比H.263節(jié)省約50%左右的流量。但是,在獲得優(yōu)越性能的同時(shí),H.264的計(jì)算復(fù)雜度卻大大增加。
了解視訊編譯碼發(fā)展歷史的讀者會知道,H.264編碼的計(jì)算復(fù)雜度大約相當(dāng)于H.263的3倍,解碼復(fù)雜度大約相當(dāng)于H.263的2倍,乍看之下,所得到的成果似乎與計(jì)算負(fù)擔(dān)不成比例,考慮到以目前的網(wǎng)絡(luò)環(huán)境、硬件的總線頻寬限制等因素,現(xiàn)階段硬件頻寬與網(wǎng)絡(luò)環(huán)境的拓展有其限制且進(jìn)展緩慢,但是處理器的計(jì)算能力一日千里,與其在硬件或網(wǎng)絡(luò)環(huán)境花成本、下功夫,不如利用更強(qiáng)大的處理器及更有效率的編碼機(jī)制來完成。
裝上高效能處理器之后,一般的純軟件解壓縮方案在個(gè)人計(jì)算機(jī)平臺上,已經(jīng)可以達(dá)到完美的播放質(zhì)量與速度,但是移動(dòng)產(chǎn)品受限于功耗問題,處理器的性能必須有所妥協(xié),因此移動(dòng)產(chǎn)品在進(jìn)行實(shí)時(shí)譯碼的過程中就會顯得力不從心,綜觀市面上可播放H.264視訊的移動(dòng)產(chǎn)品,以純軟件來完成譯碼工作,幾乎都無法達(dá)到完美的流暢度。
△圖說:PC的軟件譯碼能力已經(jīng)完美肩負(fù)起B(yǎng)D影片的播放需求。(www.Amazon.com)
視訊編譯碼導(dǎo)入SoC的關(guān)鍵技術(shù)
懂得運(yùn)用多媒體架構(gòu)對開發(fā)者來說十分重要,應(yīng)用在視訊編譯碼的處理架構(gòu)相當(dāng)多,針對移動(dòng)應(yīng)用方面來說,就可包括了硬件線路單元、獨(dú)立硬件線路芯片、嵌入式DSP、獨(dú)立視訊加速處理器、具備多媒體加速指令集的通用處理器等等,在SoC之中,我們??梢姷竭@些架構(gòu)彼此混用,事實(shí)上,適當(dāng)?shù)幕旌喜煌軜?gòu)的處理單元,常是1款SoC設(shè)計(jì)成功的關(guān)鍵,過于單向的設(shè)計(jì),可能會嚴(yán)重影響到SoC產(chǎn)品的應(yīng)用廣度。
純粹硬件線路(Hardwired)的視訊編譯碼設(shè)計(jì)
老式的硬件加速技術(shù)只執(zhí)行1個(gè)特定標(biāo)準(zhǔn)(通常是單個(gè)標(biāo)準(zhǔn))的單一功能(編碼或譯碼),具有最高的效率和較少的邏輯閘。研發(fā)時(shí),不同的SoC只有在功能完全相同時(shí)才能復(fù)用,例如當(dāng)加速器支持以VGA分辨率編碼的MPEG-4簡單格式時(shí),而當(dāng)加速器需要同時(shí)支持MPEG-4(簡單格式)和分辨率為D1的H.264(基線格式)編碼時(shí),則需要完全重新設(shè)計(jì),需要大約35萬個(gè)邏輯閘。
體積的精省是采用硬件加速器的主要優(yōu)點(diǎn),因?yàn)楣潭娐沸酒?guī)??梢宰龅椒浅P?。由于硬件線路只執(zhí)行固定的操作,不包括任何指令操作(存取、譯碼),也沒有程序儲存器管理。因此邏輯閘數(shù)較少。而邏輯閘數(shù)目少,晶體管數(shù)量也少,每單位的晶體管效率高,因此功耗較小。而在性能方面,由于這是一項(xiàng)效率非常高的解決方案,運(yùn)作的執(zhí)行時(shí)間和速度都較快。
上述方案優(yōu)點(diǎn)固然不少,但是也有不少缺點(diǎn),首先不同功能取向的硬件線路譯碼芯片,只能解決單一的編譯碼需求,因此視訊譯碼芯片只能處理視訊。采用硬件加速器時(shí),多媒體中的音效和語音部分必須由SoC中的其它部分來處理(通常是CPU或DSP);其次,音效與視訊之間的同步化必須在CPU上來執(zhí)行。
在CPU上實(shí)現(xiàn)同步增加了研發(fā)難度、整合難度和QA,如此一來也會帶來處理器的計(jì)算負(fù)載,而硬件線路未必能夠負(fù)擔(dān)起全部的運(yùn)算流程,當(dāng)采用硬件加速器時(shí),CPU通常執(zhí)行算法中的訊息編碼(如CAVLC)和后處理(如去方塊濾波器),這使得該方案耗費(fèi)的功率極大(在大約150MHz的載荷上,1個(gè)ARM11內(nèi)核消耗的功率可能就高達(dá)120mW以上)。
而硬件線路最大的缺點(diǎn),在于無法進(jìn)行軟件升級和缺陷修復(fù)。要修正錯(cuò)誤,通常也要伴隨著芯片本身的改版以及重新投片生產(chǎn),已經(jīng)生產(chǎn)出來的缺陷產(chǎn)品無法進(jìn)行任何修補(bǔ)工作。針對新一代的產(chǎn)品,在SoC中執(zhí)行特定任務(wù)的硬件加速器似乎不能滿足下一代的需求,也就是功能沒有拓展性,無法程序化,效率也固定,無法通過軟件來進(jìn)一步最佳化。
至于專屬內(nèi)存方面,在SoC中,硬件線路芯片的專用內(nèi)存不易被其它組件存取,因此從成本和硅芯片面積的角度上來看,效率顯得較低。 雖然某些硬件線路加速器能夠支持多種標(biāo)準(zhǔn)(如H.264 Baseline格式和MPEG-4 Simple Profile)的譯碼運(yùn)算,但盡管這些硬件線路設(shè)計(jì)加速器彈性佳,且兼具能性能表現(xiàn),卻也同時(shí)犧牲了邏輯閘和晶體管數(shù)目少的最大優(yōu)點(diǎn)。
硬件線路設(shè)計(jì)案例
△圖說:由交通大學(xué)與聯(lián)發(fā)科合作開發(fā)的硬件線路H.264譯碼的芯片。(交通大學(xué))
交通大學(xué)與聯(lián)發(fā)科在2006年合作開發(fā)出針對H.264譯碼的低耗電系統(tǒng)單芯片,便是針對移動(dòng)應(yīng)用所開發(fā)出來的1款產(chǎn)品,由于是采用硬件線路獨(dú)立芯片,相當(dāng)適用于各類型的移動(dòng)影音裝置,芯片本身采用108pin CQFP封裝,內(nèi)嵌了22.75Kb的高速緩存,并外接2顆4MB的SDRAM。核心電壓為1.8V,而I/O電壓則是3.3V,以1P6M CMOS工藝制作,Die size僅有3.9mm x 3.9mm,全速工作時(shí)功耗為12.4mW(16.6MHz的速度,D1分辨率,以30fps譯碼H.264影片),完全將硬件線路譯碼的優(yōu)點(diǎn)發(fā)揮的淋漓盡致。
由于這顆芯片采用的是MPEG-2與H.264混合設(shè)計(jì),在主要譯碼核心中,同時(shí)內(nèi)建了MPEG-2與H.264語法器,至于在其它如管線及內(nèi)存部份則是采共享設(shè)計(jì),因此如果想要擴(kuò)充規(guī)模支持其它編碼標(biāo)準(zhǔn),也是有可能的,在架構(gòu)上具備了相當(dāng)程度的彈性,或可稱為可調(diào)性。在設(shè)計(jì)上有幾個(gè)重點(diǎn),那就是H.264與MPEG-2的區(qū)塊取樣定義不同,因此采用了不同階段并用的區(qū)塊取樣策略。
其次,為了降低耗電,設(shè)計(jì)人員也大幅減少內(nèi)存耗電的電路構(gòu)成及處理步驟。通過將譯碼處理所需要的內(nèi)存空間區(qū)分為3個(gè)等級,分別準(zhǔn)備各自最佳的內(nèi)存容量。3個(gè)等級的內(nèi)存區(qū)塊分別稱為「Macroblock Memory」、「Slice Memory」及「Frame Memory」。 Macroblock Memory主要用于儲存進(jìn)行Motion compensation等的單位區(qū)塊的像素?cái)?shù)據(jù)。Slice Memory主要用于儲存Macroblock附近的影像數(shù)據(jù)。Frame Memory用于保存現(xiàn)有Frame和參考Frame,這部份采用了2個(gè)4MB的SDRAM,以及與芯片外部連接的總線。
輔助處理器
輔助處理器以可程序化的方式支持不同的視訊標(biāo)準(zhǔn),通常執(zhí)行譯碼和編碼處理?;谝曈嵼o助功能的處理器架構(gòu)規(guī)模,通常比基于硬件加速功能的處理器,芯片面積較大(40~50萬個(gè)邏輯閘用于視訊輔助處理器,視不同IC廠商的設(shè)計(jì)而有不同),但是,視訊輔助處理器在支持多視訊標(biāo)準(zhǔn)時(shí)有較大的應(yīng)變能力。除了僅針對視訊應(yīng)用的加速以外,以DSP為基本架構(gòu)的多媒體加速方式也是主流之一,許多公司在DSP架構(gòu)方面也下了不少的功夫。
△圖說:TI的OMAP產(chǎn)品便是結(jié)合了通用處理器、DSP與特定多媒體加速單元的設(shè)計(jì)典范。(www.TI.com)
■混合模型:由專用的CPU和附加的IP模塊一起構(gòu)成視訊輔助處理器,實(shí)現(xiàn)視訊加速功能。此類架構(gòu)以ARC公司的視訊處理子系統(tǒng)較為優(yōu)秀。以其最新的Vraptor架構(gòu)為例,該架構(gòu)采用了特殊多核心方案,其中有多個(gè)高性能處理器被連接到多個(gè)SIMD處理器和多個(gè)DMA引擎,還采用了針對不同應(yīng)用領(lǐng)域的加速器,這些相互連結(jié)的設(shè)計(jì),均采用了低耗電、低延遲的通訊信道和Local寬帶數(shù)據(jù)總線。
ARC公司的多媒體加速子系統(tǒng)可與包含ARM或MIPS等不同的嵌入式處理器進(jìn)行連結(jié),并設(shè)計(jì)于單一SoC上,但這并不是基于效能考慮,而是基于軟件開發(fā)的習(xí)慣與舊有軟件的兼容性,基本上,該子系統(tǒng)原本就包含了1個(gè)ARC700的可配置處理器,在性能表現(xiàn)上并不遜于其它嵌入式應(yīng)用處理器。
△圖說:ARC的VRaptor體系在多媒體應(yīng)用方面的效能極佳,且兼具彈性。(www.ARC.com)
VRaptor架構(gòu)利用以128位數(shù)據(jù)向量執(zhí)行的單一指令多數(shù)據(jù)流(SIMD)媒體處理器,來擴(kuò)展ARC700 CPU運(yùn)算功能,利用1個(gè)專用的向量緩存器文件,可分別以4個(gè)32位單元、8個(gè)16位單元或16個(gè)8位單元來進(jìn)行配置,彈性相當(dāng)高。SIMD處理器通常采用與 ARC700 CPU相同的頻率頻率,并具有兩種工作方式:一種是只簡單地?cái)U(kuò)展ARC700 CPU系列管線的緊密結(jié)合方式;另一種為松散耦合方式。在松散耦合方式中,SIMD處理器與ARC700 CPU架構(gòu)平行,彼此有獨(dú)立的內(nèi)存和處理單元結(jié)構(gòu),不會因?yàn)樘囟▋?nèi)存或處理單元被占用而影響到整體效能。
VRaptor架構(gòu)包含了2種多媒體處理子系統(tǒng),其一是針對多標(biāo)準(zhǔn)視訊的譯碼方案,另外1種則是針對音效應(yīng)用,該架構(gòu)除了可專心扮演子系統(tǒng)的角色,進(jìn)行特殊多媒體加速處理以外,也能搖身一變成為主角,進(jìn)行一般通用運(yùn)算,算是該架構(gòu)的最大特點(diǎn)之一。
■專用視訊核心:1種多標(biāo)準(zhǔn)視訊引擎,此方案較混合模型架構(gòu)的執(zhí)行效率為高,不過視訊核心可能僅具備簡單通用運(yùn)算能力,或根本沒有任何CPU的功能,因而只能進(jìn)行視訊處理。
采用視訊輔助處理器的主要優(yōu)點(diǎn)為:
1. 支持多標(biāo)準(zhǔn)-支持多種視訊編譯碼格式而無需硬件擴(kuò)展。
2. 可升級性-同一平臺可支持不同的分辨率和訊框率。
3. 規(guī)模-該方案的規(guī)模通常介于硬件加速和專用處理器之間。
4. 缺陷修復(fù)-與硬件線路芯片不同,該方案可透過軟件升級來隔離缺陷(不需要重新投片)。
通用處理器(RISC/DSP架構(gòu))
若以尋常的通用處理器(ARM/MIPS)來看,即便加入了針對多媒體處理的加速指令,其實(shí)也難肩負(fù)起全速的H.264 BaseLine Profile譯碼,因此這兩款處理器也都先后加入了DSP處理單元,以改善多媒體串流編譯碼的效能表現(xiàn)。雖然這些DSP單元在效能方面仍要稍遜于TI或其它公司的DSP單元,不過其優(yōu)點(diǎn)在于整合性高,不需要另外支付授權(quán)費(fèi)用,軟件開發(fā)也可以一脈相承,這是其最大優(yōu)勢。
△圖說:此類獨(dú)立的DSP芯片將逐漸被整合于SoC的嵌入式DSP所取代。(www.TI.com)
由于DSP逐漸成為未來串流媒體編譯碼加速的主角之一,在SoC設(shè)計(jì)時(shí),便要考慮到各種應(yīng)用層面與效能需求。首先,在各種不同的編譯碼器和不斷變革的標(biāo)準(zhǔn)要求下,解決方案必須是可程序化的;其次,大部分的編譯碼器是運(yùn)算密集型,而DSP本身便是設(shè)計(jì)用于高效能數(shù)學(xué)運(yùn)算。另外,功耗和成本是移動(dòng)串流傳輸中的重要考慮,一般而言,DSP核心也能在進(jìn)行多媒體編譯碼時(shí),提供比通用核心更高的效能以及更低的功耗表現(xiàn)。
典型的音效/視訊串流多媒體系統(tǒng),通常同時(shí)使用內(nèi)部存儲器和外部內(nèi)存。內(nèi)部存儲器是以DSP核心頻率速度運(yùn)行的快速內(nèi)存;外部內(nèi)存比較慢,但價(jià)格也較便宜。編譯碼指令儲存于外部內(nèi)存,但下載到內(nèi)部存儲器中執(zhí)行。由于視訊串流數(shù)據(jù)量龐大,除非必須,通常置于芯片之外,而音效串流數(shù)據(jù)則可視芯片需求內(nèi)外任意放置,還可以根據(jù)需要,將一些IP模塊安置在SoC系統(tǒng)總線上。
目前的趨勢是每2年就會發(fā)布新的編解碼標(biāo)準(zhǔn),每個(gè)新標(biāo)準(zhǔn)會需要更多的DSP周期。因此,選擇可依兼容性發(fā)展藍(lán)圖來演變的DSP平臺非常重要,這樣通過系統(tǒng)升級而不需要重新設(shè)計(jì),就可以滿足未來的系統(tǒng)要求。
針對嵌入式DSP的設(shè)計(jì),我們可以考慮以下4種基本設(shè)計(jì)配置:第1種,設(shè)計(jì)包含1個(gè)微控制器和1個(gè)DSP(MCU+DSP);第2種,設(shè)計(jì)包括1個(gè)微控制器和1個(gè)DSP,但是DSP同時(shí)也控制1個(gè)視訊編碼/譯碼硬件模塊(MCU+《DSP+VHW》);第3種,設(shè)計(jì)使用1個(gè)微控制器,DSP和視訊編碼/譯碼硬件模塊(MCU+DSP+ VHW),在該設(shè)計(jì)中微控制器控制DSP和視訊硬件模塊;最后1種,設(shè)計(jì)包含1個(gè)微控制器,1個(gè)視訊編碼/譯碼硬件模塊,1個(gè)音效編碼/譯碼硬件模塊(MCU +VHW+AHW)。
1.MCU+DSP:微控制器和DSP用于低視訊分辨率(CIF),軟件可升級,支持多種音、視訊標(biāo)準(zhǔn)的系統(tǒng)。DSP用于音效譯碼,視訊譯碼和音/視訊同步。雖然性能有限,但系統(tǒng)非常靈活,此平臺可輕松實(shí)現(xiàn)多種音效和視訊譯碼格式支持。
2.MCU+[DSP+VHW]:該視訊硬件模塊用于高分辨率視訊編/譯碼。DSP管理音效編/譯碼,也負(fù)責(zé)音/視訊同步,同時(shí)也能用于子母畫面或其它視訊迭加功能。該系統(tǒng)的1個(gè)優(yōu)勢是音效/視訊子系統(tǒng)可設(shè)計(jì)為1個(gè)標(biāo)準(zhǔn)的多媒體編/譯碼器,可輕松植入系統(tǒng)而不會增加太多的復(fù)雜性。DSP是系統(tǒng)多媒體部分的控制器,由于多媒體編/譯碼系統(tǒng)與微控制系統(tǒng)的連接很松散,因此能夠被輕松整合進(jìn)眾多現(xiàn)有微控制器系統(tǒng)中,從而使這個(gè)方案具備相當(dāng)吸引力。該編譯碼系統(tǒng)可被當(dāng)作1個(gè)具有標(biāo)準(zhǔn)Local總線端子的ASSP產(chǎn)品。
3.MCU+DSP+VHW:在該配置中,DSP用于音效編/譯碼,而微控制器用于實(shí)現(xiàn)音/視訊同步。這需要更復(fù)雜的微控制器設(shè)計(jì),但可采用與MCU+[DSP+VHW]系統(tǒng)相比之功耗、成本都更低的DSP。由于微控制器必須協(xié)調(diào)DSP和VHW,同時(shí)還要執(zhí)行其它的控制任務(wù)以及所有的協(xié)調(diào)操作,因此該方案在設(shè)計(jì)實(shí)現(xiàn)上困難很多。
該配置的1個(gè)變種方案,是由DSP執(zhí)行視訊譯碼、音效編/譯碼,而視訊編碼仍然由硬件執(zhí)行,這需要1個(gè)性能強(qiáng)大的DSP,但會使系統(tǒng)靈活性更強(qiáng),并支持多種視訊譯碼標(biāo)準(zhǔn)。
4.MCU+VHW+AHW:在此配置中,微控制器執(zhí)行除音效、視訊編/譯碼外的所有任務(wù),音/視訊同步也由微控制器執(zhí)行。該解決方案除音效子系統(tǒng)靈活性較差(僅能執(zhí)行原始設(shè)計(jì)中的音效編譯碼器而不能軟件升級)外,和MC+DSP+VHW很相似。其好處在于它能與特定應(yīng)用配合,與各種前述方案相比具有最佳的功耗表現(xiàn)。
在上述各類設(shè)計(jì)中,微控制器負(fù)責(zé)典型的嵌入式控制任務(wù):包括用戶控制連接(如游戲桿、按鍵控制),USB/UART/以太網(wǎng)絡(luò)驅(qū)動(dòng)和協(xié)議層 (如TCP/IP, HTTP)等。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論