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