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