視頻并行處理系統(tǒng)分析與設(shè)計(jì)
摘要:視頻數(shù)據(jù)處理的特點(diǎn)是數(shù)據(jù)量大,而且各種視頻處理模塊的數(shù)據(jù)交換頻繁,實(shí)時(shí)性要求高。為了滿足海量視頻數(shù)據(jù)的處理,提出了一種利用非透明橋連接多個(gè)CPU橋連的硬件架構(gòu)及其并行處理方法,實(shí)現(xiàn)視頻的并行處理。本系統(tǒng)突破了單個(gè)高性能CPU的計(jì)算能力,大大提高了海量視頻信號(hào)的處理能力;而且該處理方法不會(huì)單純地依靠硬件技術(shù)如CPU處理速度等的發(fā)展,可以通過(guò)合理調(diào)節(jié)視頻處理步驟來(lái)實(shí)現(xiàn)快速視頻處理的功能。
本文引用地址:http://cafeforensic.com/article/277710.htm引言
圖像與人們的生產(chǎn)生活息息相關(guān),是人類(lèi)獲取和交換信息的主要來(lái)源,據(jù)統(tǒng)計(jì)人類(lèi)有80%以上的信息來(lái)自于圖像。隨著數(shù)字化進(jìn)程的加速普及,人們對(duì)視頻的需求提出了更高要求,電視、內(nèi)容、數(shù)字 攝像機(jī)等提供的各種形式視頻正在向高清轉(zhuǎn)變。高清晰度的視頻在各個(gè)領(lǐng)域的應(yīng)用越來(lái)越廣,3D技術(shù)也日趨成熟,需要對(duì)海量視頻數(shù)據(jù)進(jìn)行復(fù)雜處理的應(yīng)用越來(lái)越多,這對(duì)視頻處理技術(shù)提出了一個(gè)新的挑戰(zhàn)。傳統(tǒng)的視頻處理多采用GPU( Graphic Processing Unit圖形處理器)進(jìn)行,限于目前單個(gè)顯卡的處理能力有限,需要同時(shí)對(duì)一個(gè)大屏幕的高清視頻數(shù)據(jù)進(jìn)行紋理映射、顏色混合、3D渲染等操作的場(chǎng)合已經(jīng)很難勝任了。近年來(lái),對(duì)于視頻并行運(yùn)算的研究取得了很多進(jìn)展,提出了很多的解決辦法,但是這些辦法都是僅僅解決了視頻處理中的某一個(gè)問(wèn)題。例如目前利用網(wǎng)絡(luò)進(jìn)行并行運(yùn)算的計(jì)算機(jī)系統(tǒng),雖然其并行運(yùn)算的能力較強(qiáng),但是對(duì)于海量的視頻數(shù)據(jù),其數(shù)據(jù)傳輸能力有很大的局限性;網(wǎng)絡(luò)帶寬不足以實(shí)時(shí)地傳輸信號(hào),這導(dǎo)致出現(xiàn)圖像無(wú)法流暢顯示的問(wèn)題,隨著目前需要處理的視頻數(shù)據(jù)量的增加,這種缺陷已越來(lái)越嚴(yán)重。
1 非透明橋技術(shù)
非透明橋顧名思義是一座連接兩端處理器的橋梁,且兩端的處理器均有獨(dú)立的地址空間,橋兩端的主機(jī)不能看到另外一個(gè)主機(jī)完整的地址或者I/O空間。 在非透明橋環(huán)境中,PCI Express系統(tǒng)需要在從一個(gè)內(nèi)存地址空間穿越到另一個(gè)地址空間時(shí)進(jìn)行地址翻譯。每一個(gè)非透明橋(NTB)端口都有兩套基地址寄存器(BAR),一套是給主設(shè)備端用的,另一套是給從設(shè)備端用的?;刂芳拇嫫骺捎脕?lái)定義在非透明橋另一端的內(nèi)存地址空間的地址翻譯窗口,并允許這個(gè)翻譯被映射到本地的內(nèi)存或I/O空間。
非透明橋允許橋兩邊的主機(jī)通過(guò)便箋寄存器、門(mén)鈴寄存器和心跳消息來(lái)交換一些狀態(tài)信息。便箋寄存器在非透明橋的兩端都是可讀寫(xiě)的,但是,便箋寄存器的數(shù)量在具體的實(shí)現(xiàn)中是可以不同的。他們可以被橋兩邊的設(shè)備用來(lái)傳送一些狀態(tài)信息,也可作為通用的可讀可寫(xiě)寄存器使用。 門(mén)鈴寄存器被用來(lái)從非透明橋的一邊向另一邊發(fā)送中斷。非透明橋的兩邊一般都有軟件可以控制的中斷請(qǐng)求寄存器和相應(yīng)的中斷屏蔽寄存器。這些寄存器在非透明橋的兩邊都是可以被訪問(wèn)的。心跳消息一般來(lái)自主設(shè)備端往從設(shè)備端的主機(jī),可用來(lái)指示它還活著。從設(shè)備主機(jī)可監(jiān)控主設(shè)備主機(jī)的狀態(tài),如果發(fā)現(xiàn)出錯(cuò),它就可以采取一些必要的措施。通過(guò)門(mén)鈴寄存器可以傳送心跳消息。當(dāng)從設(shè)備主機(jī)沒(méi)有收到一定數(shù)量預(yù)先規(guī)定好的心跳消息時(shí),就可以認(rèn)為主設(shè)備的主機(jī)出錯(cuò)了[1]。
2 視頻處理系統(tǒng)架構(gòu)
本文提出了一種并行視頻處理的系統(tǒng)架構(gòu),具體見(jiàn)圖1,該并行視頻處理系統(tǒng)包括了多個(gè)視頻處理系統(tǒng),一個(gè)非透明橋和一個(gè)視頻輸出系統(tǒng)。視頻處理系統(tǒng)主要完成規(guī)定的各種視頻處理,視頻輸出系統(tǒng)負(fù)責(zé)完成視頻數(shù)據(jù)對(duì)屏幕的輸出。非透明橋(NTB)用于連接視頻處理系統(tǒng)和視頻輸出系統(tǒng),控制數(shù)據(jù)和視頻數(shù)據(jù)的交互通過(guò)非透明橋芯片實(shí)現(xiàn);非透明橋?yàn)橄到y(tǒng)之間提供一個(gè)高速的數(shù)據(jù)交換通道和通信的橋梁。多個(gè)視頻處理系統(tǒng)和一個(gè)視頻輸出系統(tǒng)通過(guò)PCI-E總線和非透明橋(NTB)相連接,利用NTB的交換(switch)功能,實(shí)現(xiàn)多個(gè)視頻系統(tǒng)之間的點(diǎn)對(duì)點(diǎn)通信。各個(gè)視頻處理系統(tǒng)之間相互連接,每個(gè)視頻處理系統(tǒng)都可以單獨(dú)和任意一個(gè)視頻處理系統(tǒng)之間通信和進(jìn)行海量數(shù)據(jù)傳輸;視頻輸出系統(tǒng)通過(guò)非透明橋的連接,也可以和任意一個(gè)視頻處理系統(tǒng)連接,視頻處理系統(tǒng)可以將任意一個(gè)視頻處理系統(tǒng)的數(shù)據(jù)輸出給屏幕顯示。每個(gè)視頻處理系統(tǒng)具有一個(gè)或多個(gè)外圍設(shè)備相關(guān)聯(lián)的信息處理模塊,外圍設(shè)備信息通過(guò)PCI-E協(xié)議進(jìn)出傳輸。
數(shù)據(jù)傳輸中采用了高速的PCI-E傳輸通道,該并行架構(gòu)系統(tǒng)解決了海量視頻數(shù)據(jù)傳輸?shù)钠款i問(wèn)題,為并行處理提供了硬件基礎(chǔ)。單通道的PCI-E總線[2]帶寬可以達(dá)到10Gbps,該總線有X1、X2、X4、X8和X16、X32(X32目前還不支持)通道規(guī)格可選,如果采用X4,通道的總帶寬可以達(dá)到40Gbps(PCI-E 2.0協(xié)議),單方向帶寬可以達(dá)到20Gbps。超寬的PCI-E數(shù)據(jù)傳輸通道為海量視頻數(shù)據(jù)提供了高速通道。例如逐行掃描制式,幀率通常為60Hz的 1080P無(wú)壓縮視頻,傳輸需要3Gbps的數(shù)據(jù)通道,采用PCI-E通道可以傳輸多個(gè)1080P視頻數(shù)據(jù),保證了視頻信號(hào)傳輸?shù)牧鲿场?/p>
3 視頻并行處理方法
在圖像處理的過(guò)程中,需要對(duì)圖像進(jìn)行紋理映射[3]、顏色混合、深度緩沖、模板緩沖等步驟。這些串行步驟的執(zhí)行均需要非常大的計(jì)算量,并且耗時(shí)。因此,在上述的并行視頻處理系統(tǒng)的基礎(chǔ)上,提出了一種并行視頻處理[4-5]的方法。我們這里將視頻圖像的處理分成若干個(gè)步驟,分別由不同的視頻處理系統(tǒng)來(lái)處理,最后完成視頻圖像的處理并通過(guò)視頻輸出系統(tǒng)進(jìn)行輸出顯示。每個(gè)視頻處理系統(tǒng)都具備任意一個(gè)圖像處理步驟的功能,它根據(jù)上一個(gè)數(shù)據(jù)流攜帶的處理命令來(lái)執(zhí)行相應(yīng)的處理。我們?cè)趥鬏斶^(guò)程中對(duì)視頻流數(shù)據(jù)進(jìn)行打包,一包數(shù)據(jù)可以包含一幀圖像或者幾十幀圖像,這可以根據(jù)實(shí)際的需求而定,原則是數(shù)據(jù)交換的次數(shù)越少越好,但是數(shù)據(jù)包也不能太大,以至于影響到圖像處理的時(shí)間。在數(shù)據(jù)包里邊,專(zhuān)門(mén)指定了一個(gè)位置用于包含視頻數(shù)據(jù)處理命令。該處理命令在該包數(shù)據(jù)被成功處理后,該位置的處理命令改為下一個(gè)處理命令。若該包數(shù)據(jù)沒(méi)有被成功處理,該處理命令不變。
該方法人為地將需要使用的視頻處理過(guò)程分為若干個(gè)步驟,每個(gè)步驟分塊的原則是處理時(shí)間基本相等;視頻處理步驟的粒度可大可小,小至包括一個(gè)視頻數(shù)據(jù)的深度緩沖或者對(duì)數(shù)變換,大至視頻數(shù)據(jù)的整個(gè)3D渲染過(guò)程;每個(gè)視頻處理步驟由系統(tǒng)內(nèi)的單個(gè)視頻處理系統(tǒng)進(jìn)行處理,同時(shí)考慮到每個(gè)處理步驟的時(shí)間差異性問(wèn)題,提出了一種同步機(jī)制;在處理過(guò)程中,同一個(gè)時(shí)間內(nèi),每個(gè)視頻處理步驟是同時(shí)在每個(gè)視頻處理系統(tǒng)進(jìn)行的,達(dá)到了并行處理的效果;最后處理好的數(shù)據(jù)統(tǒng)一由高速的PCI-E通道送至視頻輸出系統(tǒng)進(jìn)行輸出顯示。
因?yàn)橛辛烁鱾€(gè)視頻處理系統(tǒng)間的高速PCI-E通道,所以數(shù)據(jù)包傳送的時(shí)間相對(duì)于圖像處理步驟的時(shí)間來(lái)說(shuō)非常少。每個(gè)圖像處理步驟都包含了一個(gè)完整的流程,如圖2所示。
我們可以將圖像處理的過(guò)程分為A、B、C、D四個(gè)步驟,每個(gè)步驟在一個(gè)視頻處理系統(tǒng)中執(zhí)行。如圖3所示,我們采用視頻處理系統(tǒng)并行做圖像處理。
在T1時(shí)間周期內(nèi),由視頻處理系統(tǒng)1發(fā)起圖像處理的命令,并且將完成了圖像處理步驟A后的數(shù)據(jù)打包,同時(shí)加上圖像處理步驟B的處理命令,發(fā)送到視頻處理系統(tǒng)2。發(fā)送完數(shù)據(jù)以后,視頻處理系統(tǒng)1繼續(xù)對(duì)后續(xù)進(jìn)來(lái)的視頻流信號(hào)做處理。在T2時(shí)間周期內(nèi),視頻處理系統(tǒng)2接收到視頻處理系統(tǒng)1發(fā)送過(guò)來(lái)的數(shù)據(jù)包后,首先分析其圖像處理命令,發(fā)現(xiàn)是圖像處理的步驟B,便完成步驟B,同時(shí)打包該處理完的數(shù)據(jù)并加上圖像處理步驟C的處理命令,將數(shù)據(jù)發(fā)送到視頻處理系統(tǒng)3。發(fā)送完數(shù)據(jù)后視頻處理系統(tǒng)2繼續(xù)完成其后續(xù)視頻流的處理。在T3時(shí)間周期內(nèi),視頻處理系統(tǒng)1和視頻處理系統(tǒng)2在進(jìn)行視頻圖像處理的同時(shí),視頻處理系統(tǒng)3接收到發(fā)過(guò)來(lái)的視頻數(shù)據(jù)包后,對(duì)處理步驟命令進(jìn)行分析,完成步驟C的處理;處理完畢,數(shù)據(jù)打包并添加步驟D的處理命令后發(fā)送到視頻處理系統(tǒng)4。視頻處理系統(tǒng)3繼續(xù)完成后續(xù)的視頻流的處理。在T4時(shí)間周期內(nèi),視頻處理系統(tǒng)1和視頻處理系統(tǒng)2在進(jìn)行視頻圖像處理的同時(shí),視頻處理系統(tǒng)3接收到發(fā)過(guò)來(lái)的視頻數(shù)據(jù)包后,對(duì)處理步驟命令進(jìn)行分析,完成步驟C的處理;處理完畢,數(shù)據(jù)打包并添加步驟D的處理命令后發(fā)送到視頻處理系統(tǒng)4。視頻處理系統(tǒng)3繼續(xù)完成后續(xù)的視頻流的處理。在T4的時(shí)間周期內(nèi),視頻處理系統(tǒng)1、視頻處理系統(tǒng)2和視頻處理系統(tǒng)3同時(shí)在做視頻圖像處理;視頻處理系統(tǒng)4接收到數(shù)據(jù)后,判斷處理命令,完成步驟D的處理,此時(shí)該包圖像全部處理完畢,便送視頻輸出系統(tǒng)進(jìn)行顯示。
評(píng)論