- 相關(guān)推薦
視頻并行處理系統分析與設計
摘要:視頻數據處理的特點(diǎn)是數據量大,而且各種視頻處理模塊的數據交換頻繁,實(shí)時(shí)性要求高。為了滿(mǎn)足海量視頻數據的處理,提出了一種利用非透明橋連接多個(gè)CPU橋連的硬件架構及其并行處理方法,實(shí)現視頻的并行處理。本系統突破了單個(gè)高性能CPU的計算能力,大大提高了海量視頻信號的處理能力;而且該處理方法不會(huì )單純地依靠硬件技術(shù)如CPU處理速度等的發(fā)展,可以通過(guò)合理調節視頻處理步驟來(lái)實(shí)現快速視頻處理的功能。
關(guān)鍵詞:非透明橋;并行運算;視頻;同步機制;PCI-E協(xié)議
引言
圖像與人們的生產(chǎn)生活息息相關(guān),是人類(lèi)獲取和交換信息的主要來(lái)源,據統計人類(lèi)有80%以上的信息來(lái)自于圖像。隨著(zhù)數字化進(jìn)程的加速普及,人們對視頻的需求提出了更高要求,電視、內容、數字攝像機等提供的各種形式視頻正在向高清轉變。高清晰度的視頻在各個(gè)領(lǐng)域的應用越來(lái)越廣,3D技術(shù)也日趨成熟,需要對海量視頻數據進(jìn)行復雜處理的應用越來(lái)越多,這對視頻處理技術(shù)提出了一個(gè)新的挑戰。傳統的視頻處理多采用GPU( Graphic Processing Unit圖形處理器)進(jìn)行,限于目前單個(gè)顯卡的處理能力有限,需要同時(shí)對一個(gè)大屏幕的高清視頻數據進(jìn)行紋理映射、顏色混合、3D渲染等操作的場(chǎng)合已經(jīng)很難勝任了。近年來(lái),對于視頻并行運算的研究取得了很多進(jìn)展,提出了很多的解決辦法,但是這些辦法都是僅僅解決了視頻處理中的某一個(gè)問(wèn)題。例如目前利用網(wǎng)絡(luò )進(jìn)行并行運算的計算機系統,雖然其并行運算的能力較強,但是對于海量的視頻數據,其數據傳輸能力有很大的局限|生:網(wǎng)絡(luò )帶寬不足以實(shí)時(shí)地傳輸信號,這導致出現圖像無(wú)法流暢顯示的問(wèn)題,隨著(zhù)目前需要處理的視頻數據量的增加,這種缺陷已越來(lái)越嚴重。
一、非透明橋技術(shù)
非透明橋顧名思義是一座連接兩端處理器的橋梁,且兩端的處理器均有獨立的地址空間,橋兩端的主機不能看到另外一個(gè)主機完整的地址或者I/O空間。在非透明橋環(huán)境中,PCIExpress系統需要在從一個(gè)內存地址空間穿越到另一個(gè)地址空間時(shí)進(jìn)行地址翻譯。每一個(gè)非透明橋(NTB)端口都有兩套基地址寄存器(BAR),一套是給主設備端用的,另一套是給從設備端用的;刂芳拇嫫骺捎脕(lái)定義在非透明橋另一端的內存地址空間的地址翻譯窗口,并允許這個(gè)翻譯被映射到本地的內存或I/O空間。
非透明橋允許橋兩邊的主機通過(guò)便箋寄存器、門(mén)鈴寄存器和心跳消息來(lái)交換一些狀態(tài)信息。便箋寄存器在非透明橋的兩端都是可讀寫(xiě)的,但是,便箋寄存器的數量在具體的實(shí)現中是可以不同的。他們可以被橋兩邊的設備用來(lái)傳送一些狀態(tài)信息,也可作為通用的可讀可寫(xiě)寄存器使用。門(mén)鈴寄存器被用來(lái)從非透明橋的一邊向另一邊發(fā)送中斷。非透明橋的兩邊一般都有軟件可以控制的中斷請求寄存器和相應的中斷屏蔽寄存器。這些寄存器在非透明橋的兩邊都是可以被訪(fǎng)問(wèn)的。心跳消息一般來(lái)自主設備端往從設備端的主機,可用來(lái)指示它還活著(zhù)。從設備主機可監控主設備主機的狀態(tài),如果發(fā)現出錯,它就可以采取一些必要的措施。通過(guò)門(mén)鈴寄存器可以傳送心跳消息。當從設備主機沒(méi)有收到一定數量預先規定好的心跳消息時(shí),就可以認為主設備的主機出錯了。
二、視頻處理系統架構
本文提出了一種并行視頻處理的系統架構,具體見(jiàn)圖1,該并行視頻處理系統包括了多個(gè)視頻處理系統,一個(gè)非透明橋和一個(gè)視頻輸出系統。視頻處理系統主要完成規定的各種視頻處理,視頻輸出系統負責完成視頻數據對屏幕的輸出。非透明橋(NTB)用于連接視頻處理系統和視頻輸出系統,控制數據和視頻數據的交互通過(guò)非透明橋芯片實(shí)現:非透明橋為系統之間提供一個(gè)高速的數據交換通道和通信的橋梁。多個(gè)視頻處理系統和一個(gè)視頻輸出系統通過(guò)PCI-E總線(xiàn)和非透明橋(NTB)相連接,利用NTB的交換( switch)功能,實(shí)現多個(gè)視頻系統之間的點(diǎn)對點(diǎn)通信。各個(gè)視頻處理系統之間相互連接,每個(gè)視頻處理系統都可以單獨和任意一個(gè)視頻處理系統之間通信和進(jìn)行海量數據傳輸:視頻輸出系統通過(guò)非透明橋的連接,也可以和任意一個(gè)視頻處理系統連接,視頻處理系統可以將任意一個(gè)視頻處理系統的數據輸出給屏幕顯示。每個(gè)視頻處理系統具有一個(gè)或多個(gè)外圍設備相關(guān)聯(lián)的信息處理模塊,外圍設備信息通過(guò)PCI-E協(xié)議進(jìn)出傳輸。
數據傳輸中采用了高速的PCI-E傳輸通道,該并行架構系統解決了海量視頻數據傳輸的瓶頸問(wèn)題,為并行處理提供了硬件基礎。單通道的PCI―E總線(xiàn)帶寬可以達到lOGbps,該總線(xiàn)有Xl、X2、X4、X8和X16、X32(X32目前還不支持)通道規格可選,如果采用X4,通道的總帶寬可以達到40Gbps(PCI-E 2.0協(xié)議),單方向帶寬可以達到20Gbps。超寬的P CI-E數據傳輸通道為海量視頻數據提供了高速通道。例如逐行掃描制式,幀率通常為60Hz的1080P無(wú)壓縮視頻,傳輸需要3Gbps的數據通道,采用PCI-E通道可以傳輸多個(gè)1080P視頻數據,保證了視頻信號傳輸的流暢。
三、視頻并行處理方法
在圖像處理的過(guò)程中,需要對圖像進(jìn)行紋理映射、顏色混合、深度緩沖、模板緩沖等步驟。這些串行步驟的執行均需要非常大的計算量,并且耗時(shí)。因此,在上述的并行視頻處理系統的基礎上,提出了一種并行視頻處理的方法。我們這里將視頻圖像的處理分成若干個(gè)步驟,分別由不同的視頻處理系統來(lái)處理,最后完成視頻圖像的處理并通過(guò)視頻輸出系統進(jìn)行輸出顯示。每個(gè)視頻處理系統都具備任意一個(gè)圖像處理步驟的功能,它根據上一個(gè)數據流攜帶的處理命令來(lái)執行相應的處理。我們在傳輸過(guò)程中對視頻流數據進(jìn)行打包,一包數據可以包含一幀圖像或者幾十幀圖像,這可以根據實(shí)際的需求而定,原則是數據交換的次數越少越好,但是數據包也不能太大,以至于影響到圖像處理的時(shí)間。在數據包里邊,專(zhuān)門(mén)指定了一個(gè)位置用于包含視頻數據處理命令。該處理命令在該包數據被成功處理后,該位置的處理命令改為下一個(gè)處理命令。若該包數據沒(méi)有被成功處理,該處理命令不變。
該方法人為地將需要使用的視頻處理過(guò)程分為若干個(gè)步驟,每個(gè)步驟分塊的原則是處理時(shí)間基本相等:視頻處理步驟的粒度可大可小,小至包括一個(gè)視頻數據的深度緩沖或者對數變換,大至視頻數據的整個(gè)3D渲染過(guò)程:每個(gè)視頻處理步驟由系統內的單個(gè)視頻處理系統進(jìn)行處理,同時(shí)考慮到每個(gè)處理步驟的時(shí)間差異性問(wèn)題,提出了一種同步機制:在處理過(guò)程中,同一個(gè)時(shí)間內,每個(gè)視頻處理步驟是同時(shí)在每個(gè)視頻處理系統進(jìn)行的,達到了并行處理的效果:最后處理好的數據統一由高速的PCI-E通道送至視頻輸出系統進(jìn)行輸出顯示。
因為有了各個(gè)視頻處理系統間的高速PCI-E通道,所以數據包傳送的時(shí)間相對于圖像處理步驟的時(shí)間來(lái)說(shuō)非常少。每個(gè)圖像處理步驟都包含了一個(gè)完整的流程,如圖2所示。
我們可以將圖像處理的過(guò)程分為A、B、C、D四個(gè)步驟,每個(gè)步驟在一個(gè)視頻處理系統中執行。如圖3所示,我們采用視頻處理系統并行做圖像處理。
在Tl時(shí)間周期內,由視頻處理系統1發(fā)起圖像處理的命令,并且將完成了圖像處理步驟A后的數據打包,同時(shí)加上圖像處理步驟B的處理命令,發(fā)送到視頻處理系統2。發(fā)送完數據以后,視頻處理系統1繼續對后續進(jìn)來(lái)的視頻流信號做處理。在T2時(shí)間周期內,視頻處理系統2接收到視頻處理系統1發(fā)送過(guò)來(lái)的數據包后,首先分析其圖像處理命令,發(fā)現是圖像處理的步驟B,便完成步驟B,同時(shí)打包該處理完的數據并加上圖像處理步驟C的處理命令,將數據發(fā)送到視頻處理系統3。發(fā)送完數據后視頻處理系統2繼續完成其后續視頻流的處理。在T3時(shí)間周期內,視頻處理系統1和視頻處理系統2在進(jìn)行視頻圖像處理的同時(shí),視頻處理系統3接收到發(fā)過(guò)來(lái)的視頻數據包后,對處理步驟命令進(jìn)行分析,完成步驟C的處理:處理完畢,數據打包并添加步驟D的處理命令后發(fā)送到視頻處理系統4。視頻處理系統3繼續完成后續的視頻流的處理。在T4時(shí)間周期內,視頻處理系統1和視頻處理系統2在進(jìn)行視頻圖像處理的同時(shí),視頻處理系統3接收到發(fā)過(guò)來(lái)的視頻數據包后,對處理步驟命令進(jìn)行分析,完成步驟C的處理:處理完畢,數據打包并添加步驟D的處理命令后發(fā)送到視頻處理系統4。視頻處理系統3繼續完成后續的視頻流的處理。在T4的時(shí)間周期內,視頻處理系統1、視頻處理系統2和視頻處理系統3同時(shí)在做視頻圖像處理:視頻處理系統4接收到數據后,判斷處理命令,完成步驟D的處理,此時(shí)該包圖像全部處理完畢,便送視頻輸出系統進(jìn)行顯示。
上述的處理過(guò)程只是一個(gè)基本視頻數據并行處理方法,它的一個(gè)關(guān)鍵在于整個(gè)圖像處理步驟時(shí)間的合理安排,要求每個(gè)操作步驟的劃分合理。如果前級操作時(shí)間恰好等于后級的操作時(shí)間,則最為簡(jiǎn)單,前級的輸出直接匯入后級的輸入即可:如果前級操作時(shí)間大于后級的操作時(shí)間,則需要對前級的輸出數據適當緩存才能匯入到后級輸入端:如果前級操作時(shí)間恰好小于后級的操作時(shí)間,則必須通過(guò)復制邏輯,將數據流分流,或者在前級對數據采用存儲、后處理方式,否則會(huì )造成后級數據溢出。
四、同步機制與異常處理
為了解決數據溢出問(wèn)題,本文在對圖像處理步驟進(jìn)行劃分時(shí),盡量使得每個(gè)步驟的處理時(shí)間都相同,這樣可以很大程度上緩解前后級之間處理時(shí)間不一致造成的矛盾:同時(shí)引入同步機制,在多個(gè)視頻處理系統之間建立一個(gè)同步信息傳遞機制,每個(gè)視頻數據包被處理后往同步處理模塊發(fā)送一個(gè)值,當在一個(gè)時(shí)間周期內所有的處理步驟往同步處理模塊發(fā)送了處理完畢的值后,由同步處理模塊發(fā)送視頻數據流統一下傳的命令。
圖4為同步模塊處理流程,每次進(jìn)入一個(gè)新的視頻圖像處理流程后,同步模塊開(kāi)始計數;在同步模塊計數器件,圖像處理的每個(gè)步驟處理完畢后,視頻處理系統均會(huì )發(fā)出處理完畢命令:同步模塊接收該命令,并對此進(jìn)行判斷在該圖像處理周期中所有的處理步驟是否處理完畢:如果處理完畢則發(fā)出下個(gè)處理步驟的同步信號:若沒(méi)有處理完畢則通過(guò)計數器判斷該次處理周期時(shí)間是否達到T,如果達到時(shí)間T則強制完成該處理周期,發(fā)出下一個(gè)處理步驟的同步信號,如果沒(méi)有達到時(shí)間T則轉入判斷所有步驟是否處理完畢的流程中。
當強制同步信號到來(lái)時(shí),由于某種特殊情況,視頻處理系統對于本系統的圖像處理步驟無(wú)法完成,如圖5所示,在T3周期,視頻處理系統3處理出錯。此時(shí),為了不影響整個(gè)處理流程的時(shí)間,將數據包繼續往下一級發(fā)送,并且執行相同的處理步驟。在T3時(shí)間周期,本來(lái)由視頻處理系統3完成的處理步驟C,出錯后,在T4時(shí)間周期,由視頻處理系統4完成。上述提到圖像處理步驟A、B、C、D可以根據不同的應用來(lái)定義,處理步驟的粒度可大可小。對于一些比較大粒度的功能分工,如3D處理和GIS等,也可以采用上述提到的并行處理方法完成。如圖3歷示,可以用步驟A表示3D處理,步驟B表示GIS處理,由兩個(gè)視頻處理系統分別完成,同時(shí)在視頻輸出進(jìn)行疊加顯示:并采用方法中提到的同步機制使得兩個(gè)系統處理后的圖像能同時(shí)顯示。
五、結果與分析
本文根據目前一些海量數據并行處理的應用限制,提出了通過(guò)非透明橋連接的多CPU并行出現系統架構,并提出了一種并行處理的方法。該并行處理方法在筆者設計的系統平臺中得到了實(shí)際應用和驗證,運行效果良好,突破了單個(gè)高性能CPU計算能力,大大提高了海量視頻信號的處理能力:而且該處理方法不會(huì )單純地依靠硬件技術(shù)如CPU處理速度等的發(fā)展,可以通過(guò)合理調節視頻處理步驟來(lái)實(shí)現快速視頻處理的功能,具有很高的產(chǎn)品推廣價(jià)值。
【視頻并行處理系統分析與設計】相關(guān)文章:
一種新型多DSP并行處理結構03-19
異地并行設計中WEB數據庫設計*03-18
視頻壓縮IPcore設計03-18
淺論無(wú)線(xiàn)校園網(wǎng)系統分析與設計03-05
探析視頻設計的平面化趨勢03-20