亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

不對稱多gpu處理的制作方法

文檔序號:6574261閱讀:222來源:國知局
專利名稱:不對稱多gpu處理的制作方法
技術領域
本發(fā)明實施例一般來說涉及計算機圖形,且更具體地說,涉及不對稱多GPU處理。
背景技術
計算機圖形圖像數(shù)據(jù)通常在被顯示于顯示裝置上之前經(jīng)歷若干處理步驟。每個處理步驟進一步細化圖像數(shù)據(jù),然而,每個處理步驟也增加了每個數(shù)據(jù)幀所需的處理時間。舉例來說,典型的處理步驟包括二維(2-D)和三維(3-D)處理。一子組計算機圖形數(shù)據(jù)是視頻圖像數(shù)據(jù)。同樣可由若干處理步驟來處理視頻圖像數(shù)據(jù)。視頻圖像數(shù)據(jù)的一個實例是與數(shù)字視頻光盤(DVD)有關的圖像數(shù)據(jù)。
與典型的計算機圖形圖像數(shù)據(jù)不同,視頻圖像數(shù)據(jù)是以每秒六十幀顯示的。因此,針對視頻數(shù)據(jù)的視頻圖像處理程序的執(zhí)行時間必須小于顯示一個視頻數(shù)據(jù)幀所需的時間(大約16.67毫秒)。如果處理一視頻數(shù)據(jù)幀所需的時間大于顯示一視頻數(shù)據(jù)幀所需的時間,那么不能顯示經(jīng)處理的視頻數(shù)據(jù)。而是,通常展示先前視頻數(shù)據(jù)來代替當前視頻數(shù)據(jù)。這種現(xiàn)象通常被稱為“丟失(dropping)”視頻幀,且是非常不合需要的,因為其導致不良視頻質量。
圖形處理單元(GPU)通常經(jīng)配置以提供視頻圖像處理,在視頻圖像數(shù)據(jù)可被顯示之前所述數(shù)據(jù)需要所述視頻圖像處理。舉例來說,GPU可經(jīng)配置以使用其3-D處理單元和2-D處理單元來處理視頻圖像數(shù)據(jù)。由于如上所述,顯示幀速率限制了可用于處理每個幀的時間量,且由于每個視頻圖像處理任務增加了總處理時間,因而限制了可在單個GPU上執(zhí)行的圖像處理程序的數(shù)目和復雜性。加劇此問題的是這樣一個事實,即高清晰度視頻圖像需要處理的像素比標準清晰度圖像多出高達六倍。增加像素數(shù)增加了執(zhí)行每個處理程序所需的時間量,從而進一步限制了單個GPU可在不丟失視頻幀的情況向一圖像數(shù)據(jù)幀施加的視頻圖像處理程序的數(shù)目。
減少總處理時間的一種方法是配置多個GPU來并行運作以處理單個視頻幀。這種方法一般需要使用功能相同的GPU來同時處理一視頻幀的不同部分,以增加視頻處理系統(tǒng)的處理量。這種方法的一個缺點在于將GPU限制為功能相同的。舉例來說,如果計算系統(tǒng)包括第一GPU,且用戶想要添加第二GPU,除非用戶添加與第一GPU功能相同的第二GPU,否則GPU不能像此方法預想的那樣并行運作。
如前文說明,此項技術需要一種在不對視頻處理系統(tǒng)施加此類不良設計限制的情況下增加視頻處理量的方式。

發(fā)明內容
本發(fā)明一個實施例陳述一種用于處理視頻數(shù)據(jù)的系統(tǒng)。所述系統(tǒng)包括主處理器和第一媒體處理裝置,所述第一媒體處理裝置耦合到第一緩沖區(qū),其中所述第一緩沖區(qū)經(jīng)配置以存儲一視頻數(shù)據(jù)幀,且所述第一媒體處理裝置經(jīng)配置以對所述視頻數(shù)據(jù)幀執(zhí)行第一處理任務。所述系統(tǒng)還包括第二媒體處理裝置,其耦合到第二緩沖區(qū),其中所述第二緩沖區(qū)經(jīng)配置以存儲所述經(jīng)處理的視頻數(shù)據(jù)幀,且所述第二媒體處理裝置經(jīng)配置以對所述經(jīng)處理的視頻數(shù)據(jù)幀執(zhí)行第二處理任務。
所揭示的系統(tǒng)的一個優(yōu)點在于可將整個視頻處理劃分成若干單獨視頻處理任務,其中所述第一媒體處理裝置對所述視頻數(shù)據(jù)幀執(zhí)行一個視頻處理任務(例如,解碼),而第二媒體處理裝置對所述視頻數(shù)據(jù)幀執(zhí)行另一視頻處理任務(例如,后處理操作)。使用這種方法,可由媒體處理裝置同時處理多個視頻幀,從而相對于現(xiàn)有技術視頻處理系統(tǒng)來說增加了總處理效率。


為了能詳細了解本發(fā)明的上述特征,可參考實施例來對上文簡要概述的本發(fā)明作更具體的描述,在附圖中說明某些實施例。然而,應注意到,附圖只說明本發(fā)明的典型實施例,且因此不應認為附圖限制本發(fā)明范圍,因為本發(fā)明可允許其它同樣有效的實施例。
圖1是經(jīng)配置以實施本發(fā)明一個或一個以上方面的計算裝置的概念圖;圖2是根據(jù)本發(fā)明一個實施例的圖1計算裝置的更詳細圖;圖3是根據(jù)本發(fā)明一個實施例說明軟件驅動程序如何在第一GPU與第二GPU之間分配視頻處理任務的概念圖;圖4是根據(jù)本發(fā)明一個實施例的用于產(chǎn)生GPU命令緩沖區(qū)和界定緩沖區(qū)的方法步驟流程圖;和圖5A和5B是根據(jù)本發(fā)明一個實施例的含有一命令序列的命令緩沖區(qū)的概念圖,所述命令使第一GPU和第二GPU同步。
具體實施例方式
本發(fā)明通過在兩個或兩個以上GPU之間分配各種圖像處理任務而減少處理圖像數(shù)據(jù)(例如視頻圖像數(shù)據(jù))所需的總時間。軟件驅動程序可經(jīng)配置以通過將每個特定處理任務匹配到最適合所述任務的GPU來優(yōu)化針對個別GPU的處理任務分配。
圖1是經(jīng)配置以實施本發(fā)明的一個或一個以上方面的計算裝置100的概念圖。所述計算裝置100包括(但不限于)中央處理單元(CPU)102、系統(tǒng)存儲器104、總線接口108、第一圖形子系統(tǒng)110和第二圖形子系統(tǒng)112。所述計算裝置100可以是桌上型計算機、服務器、膝上型計算機、掌上型計算機、平板計算機、游戲控制臺、蜂窩式電話、基于計算機的模擬器等。CPU102可用于執(zhí)行軟件程序(例如軟件驅動程序106),所述軟件驅動程序配置圖形子系統(tǒng)110和112以處理圖像數(shù)據(jù)。CPU102耦合到系統(tǒng)存儲器104,所述系統(tǒng)存儲器104可用于存儲數(shù)據(jù)和程序(例如軟件驅動程序106)。CPU102進一步耦合到系統(tǒng)接口108,所述系統(tǒng)接口108可以是橋接裝置和/或輸入/輸出接口。所述系統(tǒng)接口108還耦合到第一圖形子系統(tǒng)110和第二圖形子系統(tǒng)112。
第一圖形子系統(tǒng)110包括第一GPU120,其耦合到第一GPU存儲器124,所述第一GPU存儲器124經(jīng)配置以存儲圖形程序、命令和圖像數(shù)據(jù)。第一GPU120包括數(shù)字到模擬轉換器(DAC)122。傳統(tǒng)上,DAC用于將經(jīng)模擬處理的圖像數(shù)據(jù)從GPU傳輸?shù)斤@示裝置(例如VGA可行監(jiān)視器)。用于傳輸經(jīng)處理的圖像數(shù)據(jù)的其它構件包括數(shù)字視頻接口(DVI)和串行數(shù)字接口(SDI)。這些其它構件現(xiàn)通常包括在DAC內。顯示裝置耦合到DAC122(未圖示)以用于在完成處理時顯示視頻圖像。
第二圖形子系統(tǒng)112包括第二GPU130,其耦合到第二GPU存儲器134且包括DAC132。重要的是,此第二GPU130不必與第一GPU120功能相同,意味著所述兩個GPU可具有不同的處理能力。另外,第二GPU存儲器134不需要與第一GPU存儲器124具有相同大小。下文結合圖2更詳細地描述第一GPU120與第二GPU130之間以及第一GPU存儲器124與第二GPU存儲器134之間的差異。然而,所屬領域的技術人員將了解到,在特定實施例中,所述兩個GPU可以是功能相同的且/或所述兩個GPU存儲器可以是大小相同的。
通常,在視頻圖像數(shù)據(jù)可被顯示之前,對所述數(shù)據(jù)執(zhí)行若干單獨處理步驟。舉例來說,視頻圖像數(shù)據(jù)在被顯示之前可能需要解碼且接著需要后處理(post processing)。在具有多個能夠處理視頻圖像數(shù)據(jù)的GPU的系統(tǒng)(例如計算裝置100)中,可由所述可用GPU中的一者(例如第二GPU130)內的視頻處理功能單元提供用于解碼視頻圖像數(shù)據(jù)的功能性。另一方面,另一可用GPU(例如第一GPU120)內的3-D功能單元可提供后處理功能性。例如解碼和后處理的任務一般是獨立的,且不需要同時發(fā)生。因此,如本文更詳細描述,軟件驅動程序106可利用特定計算裝置中GPU的非對稱性質,并設法將每個圖像處理步驟分派給最適合所述特定步驟的GPU。
圖2是根據(jù)本發(fā)明一個實施例的圖1計算裝置100的更詳細圖。具體地說,更詳細地說明第一GPU120、第二GPU130、第一GPU存儲器124和第二GPU存儲器134。如圖所示,第一GPU120包括(但不限于)主機接口202、高級3-D處理單元206、2-D處理單元208、存儲器接口210和DAC122。主機接口202耦合到系統(tǒng)接口108,并實現(xiàn)將GPU指令和數(shù)據(jù)從CPU102傳送到第一GPU120。高級3-D處理單元206為3-D圖形圖像數(shù)據(jù)的渲染和著色提供增強的3-D處理功能性(例如3-D加速)。此類3-D功能性可用于(例如)提供邊緣增強和視頻圖像通常所需的其它類型的后處理。2-D處理單元208提供特定圖形程序(例如電子表格)和文字處理程序所需的2-D處理功能性。此類2-D處理功能性也可用于視頻圖像處理來插入處理DVD數(shù)據(jù)時通常所需的小標題信息。存儲器接口210將3-D處理單元206、2-D處理單元208和DAC122耦合到第一GPU存儲器124。軟件驅動程序106界定第一緩沖區(qū)212,所述第一緩沖區(qū)212是第一GPU存儲器124中可存儲用于第一GPU120的圖像數(shù)據(jù)的區(qū)域。第一緩沖區(qū)212以第一存儲器偏移量214定位,所述第一存儲器偏移量214表示第一緩沖區(qū)212與任意基準偏移多遠。在此示范性情況下,第一存儲器偏移量214相對于第一GPU存儲器124的“開始”來定位第一緩沖區(qū)212。在其它實施例中,可使用其它基準,例如第一GPU存儲器124的“末端”。
如先前所述,第二GPU130不需要與第一GPU120具有相同功能能力。在此示范性情況下,第二GPU130包括主機接口204和2-D處理單元226,其類似于第一GPU120內的主機接口202和2-D處理單元208。然而,第二GPU130與第一GPU120的不同之處在于第二GPU130還包括視頻處理單元222和基本3-D處理單元224。所述視頻處理單元222提供增強的視頻處理功能性(例如解碼)。所述基本3-D處理單元224提供某種3-D加速功能性;然而,基本3-D處理單元224的3-D處理能力通常次于第一GPU120的高級3-D處理單元206的3-D處理能力。再次,存儲器接口240將視頻處理器222、基本3-D處理器224和2-D處理器226耦合到第二GPU存儲器134。軟件驅動程序106界定第二緩沖區(qū)242,所述第二緩沖區(qū)242是第二GPU存儲器134內可存儲用于第二GPU130的視頻圖像數(shù)據(jù)的區(qū)域。第二緩沖區(qū)242以一存儲器偏移量244定位,所述存儲器偏移量244表示所述第二緩沖區(qū)242與任意基準偏移多遠。再次,在此示范性情況下,存儲器偏移量244相對于第二GPU存儲器134的“開始”來定位第二緩沖區(qū)242,但在其它實施例中,可使用其它基準,例如第二GPU存儲器134的“末端”。
回到圖1論述結束處陳述的實例,軟件驅動程序106可經(jīng)配置以識別處理視頻圖像數(shù)據(jù)需要執(zhí)行的單獨任務——此處是解碼和后處理。軟件驅動程序還可經(jīng)配置以識別計算裝置100內第一GPU120和第二GPU130中的每一者內包括的不同處理單元。由于可將整個視頻處理劃分成若干單獨視頻處理任務,因而軟件驅動程序106可將解碼和后處理任務分配給所述兩個GPU,以使得將這些任務中的每一者分派給最適合特定任務的GPU。因此,在示范性情況下且僅出于論述目的,軟件驅動程序106配置第二GPU130以在視頻處理器222內執(zhí)行視頻解碼任務,且配置第一GPU120以在高級3-D處理器206內執(zhí)行視頻后處理任務。
由于軟件驅動程序106將視頻圖像數(shù)據(jù)處理分成若干單獨處理任務,所述單獨處理任務被匹配到最適合每個特定任務的GPU,因此軟件驅動程序106可配置第一GPU120和第二GPU130以逐次執(zhí)行所述單獨視頻處理任務。繼續(xù)上文陳述的實例,在第二GPU130內開始視頻圖像處理,其中將一經(jīng)編碼的視頻數(shù)據(jù)幀傳輸并存儲到第二緩沖區(qū)242中。第二GPU130接著對所述視頻數(shù)據(jù)幀執(zhí)行解碼操作以解碼所述視頻數(shù)據(jù)。當完成此任務時,將所述經(jīng)解碼的視頻數(shù)據(jù)幀從第二緩沖區(qū)242傳輸?shù)降谝痪彌_區(qū)212。接著,第一GPU120對所述經(jīng)解碼的視頻數(shù)據(jù)幀執(zhí)行后處理操作,以完成視頻數(shù)據(jù)的處理。一旦完成了處理,就可將所述經(jīng)處理的視頻數(shù)據(jù)幀傳輸?shù)斤@示裝置以供顯示。在此實施例中,因為在第二GPU130內完成與一特定視頻數(shù)據(jù)幀有關的處理任務(例如解碼),且接著將經(jīng)處理的視頻圖像數(shù)據(jù)傳輸?shù)降谝籊PU120以供進一步處理,所以可由第二GPU130解碼另一視頻數(shù)據(jù)幀且同時由第一GPU120對第一視頻數(shù)據(jù)幀執(zhí)行后處理操作。因此,計算裝置100可經(jīng)有利配置為以此串行形式來處理視頻幀,以使得可由第一GPU120和第二GPU130同時處理多個視頻數(shù)據(jù)幀。本文更詳細描述一個GPU完成處理任務且另一GPU執(zhí)行隨后處理任務的過程。
圖3是根據(jù)本發(fā)明一個實施例說明軟件驅動程序106如何在第一GPU120與第二GPU130之間分配視頻處理任務的概念圖。如先前描述,軟件驅動程序106經(jīng)配置以將整個視頻處理劃分成若干單獨視頻處理任務,并將每個單獨任務分派給最適合特定視頻處理任務的GPU。接著由所分派的GPU對在與所述GPU相關聯(lián)的緩沖區(qū)內的視頻圖像數(shù)據(jù)執(zhí)行特定視頻處理任務。
回到上文陳述的實例,軟件驅動程序106將整個視頻處理分成解碼任務和后處理任務。軟件驅動程序106配置第二GPU130以執(zhí)行解碼任務,因為第二GPU130包括最適合解碼任務的視頻處理單元222。再次,將一經(jīng)編碼的視頻數(shù)據(jù)幀存儲在第二緩沖區(qū)242中。這些步驟在圖3中由元素302反映。軟件驅動程序106還配置第二GPU130以將經(jīng)解碼的視頻數(shù)據(jù)從第二緩沖區(qū)242傳送到第一緩沖區(qū)212。在一個實施例中,通過此項技術中被稱為直接存儲器存取(DMA)復制操作的過程來傳送視頻數(shù)據(jù)。此類操作一般被稱為“位塊傳送(blit)”,且以此形式,第二GPU130有效地將經(jīng)解碼的視頻數(shù)據(jù)從第二緩沖區(qū)242“推”到第一緩沖區(qū)212。在所述兩個緩沖區(qū)之間傳送視頻圖像數(shù)據(jù)在圖3中由元素304展示。如所屬領域的技術人員將了解,支持不同存儲器大小的一種方式是通過針對每個緩沖區(qū)的單獨存儲器偏移量。所述偏移量明確地將緩沖區(qū)定位在GPU存儲器內,以使得可將視頻數(shù)據(jù)準確地從第二緩沖區(qū)242傳輸?shù)降谝痪彌_區(qū)212,且反之亦然。最后,軟件驅動程序106配置第一GPU120以對所述經(jīng)解碼的視頻數(shù)據(jù)幀執(zhí)行后處理任務,如圖3中元素306展示,這是由于第一GPU120包括高級3-D處理單元206,而高級3-D處理單元206是最適合后處理任務的處理單元。在對第一緩沖區(qū)212中的經(jīng)解碼的視頻數(shù)據(jù)執(zhí)行后處理任務之后,第一GPU120將所述經(jīng)處理的視頻圖像數(shù)據(jù)幀傳輸?shù)斤@示裝置以供顯示,如元素308展示。應注意到,由于第一GPU120含有DAC122,且DAC耦合到顯示裝置,因而視頻圖像數(shù)據(jù)在被傳輸?shù)斤@示裝置之前無需傳輸?shù)讲煌腉PU存儲器。
由于將整個視頻處理劃分成若干單獨視頻處理任務,因而可由第一GPU120和第二GPU130同時處理多個視頻幀。圖3的上部分展示第二GPU130中的視頻處理單元222正在執(zhí)行針對幀n的解碼任務。圖3的中央部分展示第一GPU120中的高級3-D單元206正在執(zhí)行針對前一視頻數(shù)據(jù)幀(幀n-1)的后處理任務,且同時視頻處理單元222正在對幀n執(zhí)行解碼任務。類似地,圖3的下部分展示第一GPU120正將在前第二視頻數(shù)據(jù)幀(幀n-2)傳輸?shù)斤@示裝置,而同時高級3-D單元206正在對幀n-1執(zhí)行后處理任務且視頻處理單元222正在對幀n執(zhí)行解碼任務。
為使第一GPU120和第二GPU130執(zhí)行其各自視頻處理任務,軟件驅動程序106為每個GPU產(chǎn)生命令緩沖區(qū),所述命令緩沖區(qū)配置所述GPU以對視頻數(shù)據(jù)執(zhí)行其分派到的視頻處理任務。軟件驅動程序106也為每個GPU界定緩沖區(qū)。圖4是根據(jù)本發(fā)明一個實施例的用于產(chǎn)生GPU命令緩沖區(qū)和界定緩沖區(qū)的方法步驟流程圖。所屬領域的技術人員將認識到,任何經(jīng)配置為以任何次序執(zhí)行所述方法步驟的系統(tǒng)均屬于本發(fā)明范圍內。
方法在步驟402中開始,其中軟件驅動程序106在GPU存儲器中界定緩沖區(qū)域。因此,軟件驅動程序106在第一GPU存儲器124中界定第一緩沖區(qū)212且在第二GPU存儲器134中界定第二緩沖區(qū)242。一般來說,每個單獨視頻處理任務是針對特定視頻圖像數(shù)據(jù)幀而執(zhí)行的。所屬領域的技術人員將理解,正被處理的視頻數(shù)據(jù)不能由其它視頻處理任務共享。因此,看情況而定,每個視頻處理任務可能需要在第一GPU124或第二GPU存儲器134內的單獨緩沖區(qū)域。另外,如本文先前描述,第一緩沖區(qū)212和第二緩沖區(qū)242中的每一者可具有相關聯(lián)的存儲器偏移量(分別為偏移量214和244)以有助于將視頻數(shù)據(jù)從一個緩沖區(qū)傳送到另一個。所述方法繼續(xù)執(zhí)行步驟404,其中軟件驅動程序106將待處理的視頻圖像數(shù)據(jù)幀放到所界定的緩沖區(qū)中的一者中。再次回到上文陳述的示范性情況,由于第一視頻處理任務是解碼(其正由第二GPU130執(zhí)行),因而軟件驅動程序106將一經(jīng)編碼的視頻圖像數(shù)據(jù)幀放在第二緩沖區(qū)242中。在步驟406中,軟件驅動程序106為所述GPU產(chǎn)生命令緩沖區(qū)。命令緩沖區(qū)含有GPU指令,所述GPU指令尤其配置所述GPU以執(zhí)行其各自視頻處理任務。因此,軟件驅動程序106產(chǎn)生用于第二GPU130的命令緩沖區(qū),其包括解碼所述視頻數(shù)據(jù)幀所必需的指令,且產(chǎn)生用于第一GPU120的命令緩沖區(qū),其包括對所述經(jīng)解碼的視頻數(shù)據(jù)幀執(zhí)行后處理操作所必需的指令。最后,在步驟408中,軟件驅動程序106指導GPU執(zhí)行其各自命令緩沖區(qū)。
當如上所述,由第二GPU130對第二緩沖區(qū)242內的一視頻數(shù)據(jù)幀執(zhí)行第一視頻處理任務(例如,解碼),且由第一GPU120對第一緩沖區(qū)212內的所述經(jīng)處理的視頻數(shù)據(jù)幀執(zhí)行第二視頻處理任務(例如,后處理)時,在第一GPU120開始對所述經(jīng)處理的視頻數(shù)據(jù)幀執(zhí)行第二視頻處理任務之前將所述經(jīng)處理的視頻數(shù)據(jù)幀從第二緩沖區(qū)242傳送到第一緩沖區(qū)212。為了完成此處理序列,僅在第二GPU130向第一GPU120指示已完全將所述經(jīng)處理的視頻數(shù)據(jù)幀從第二緩沖區(qū)242傳送到第一緩沖區(qū)212之后,第一GPU120才開始執(zhí)行第二視頻處理任務。下文結合圖5A和5B來描述用于以此形式同步GPU的機制。
圖5A和5B是根據(jù)本發(fā)明一個實施例的含有一命令序列的命令緩沖區(qū)的概念圖,所述命令使第一GPU120和第二GPU130同步。圖5A說明含有由第二GPU130執(zhí)行的命令的命令緩沖區(qū)502。具體地說,命令緩沖區(qū)502內的命令使得第二GPU130處理第二緩沖區(qū)242內的一視頻數(shù)據(jù)幀,將所述經(jīng)處理的視頻數(shù)據(jù)幀傳送到第一緩沖區(qū)212,且釋放一信號來使第一GPU120和第二GPU130同步。第一命令510表示配置第二GPU130以執(zhí)行第一視頻處理任務的所述一個或一個以上個別GPU命令。再次,在所述示范性情況下,此第一視頻處理任務是解碼任務。第二GPU130對存儲在第二緩沖區(qū)242內的視頻圖像數(shù)據(jù)執(zhí)行此視頻處理任務。當完成了視頻處理任務時,第二GPU130將經(jīng)處理的視頻數(shù)據(jù)從第二緩沖區(qū)242傳送到第一緩沖區(qū)212,如命令512所示。釋放信號命令514促使第二GPU130釋放一信號。
軟件驅動程序106使用信號來同步第一GPU120和第二GPU130,使得所述GPU能在第一緩沖區(qū)212和第二緩沖區(qū)242中執(zhí)行單獨視頻處理任務。信號是指向系統(tǒng)存儲器中特定地址的指針。信號可被釋放或獲取。當GPU執(zhí)行釋放信號命令時,GPU將特定值寫入到與所述信號相關聯(lián)的存儲器位置中。當GPU執(zhí)行獲取信號命令時,GPU讀取與所述信號相關聯(lián)的存儲器位置,且將所述存儲器位置的值與所述獲取信號命令中反映的值進行比較。所述兩個值不匹配指示尚未釋放與所述獲取信號命令相關聯(lián)的信號。如果不存在匹配,那么執(zhí)行獲取信號命令的GPU繼續(xù)讀取與所述信號相關聯(lián)的存儲器位置,直到找到匹配為止。因而,執(zhí)行獲取信號命令的GPU不執(zhí)行命令緩沖區(qū)中包含的任何額外命令,直到找到匹配為止。舉例來說,假設第一GPU針對于釋放具有值42的信號,那么第二GPU就針對于獲取具有值42的信號。第二GPU將繼續(xù)讀取與所述信號相關聯(lián)的系統(tǒng)存儲器位置,直到所述存儲器位置具有值42為止。重要的是,第二GPU將在存儲器位置具有值42時才執(zhí)行下一個緩沖命令,且存儲器將只在第一GPU釋放具有值42的信號時才具有值42。
圖5B是含有由第一GPU120執(zhí)行的命令序列的命令緩沖區(qū)540的概念圖。第一命令542指示第一GPU120獲取由第二GPU130在執(zhí)行命令緩沖區(qū)502期間釋放的信號。第一GPU120不執(zhí)行命令542以外的任何命令,直到獲取所述信號為止。重要的是,由于第二GPU130在將視頻數(shù)據(jù)幀從第二緩沖區(qū)242傳送到第一緩沖區(qū)212之后才釋放信號,因而第一GPU120在已完全將視頻數(shù)據(jù)幀傳送到第一緩沖區(qū)212之后才執(zhí)行第二視頻處理任務。在獲取了信號之后,第一GPU120執(zhí)行命令544中的所述一個或一個以上GPU命令,所述GPU命令配置第一GPU120以對傳送到第一緩沖區(qū)212的視頻數(shù)據(jù)幀執(zhí)行第二視頻處理任務。再次參看所述示范性情況,命令544中的所述一個或一個以上命令配置第一GPU120以對所述視頻數(shù)據(jù)幀執(zhí)行一個或一個以上后處理操作。
總之,鑒于所述示范性情況,軟件驅動程序106將解碼任務分派給第二GPU130,且將后處理任務分派給第一GPU120。對于第二GPU130來說,軟件驅動程序106產(chǎn)生類似于命令緩沖區(qū)502的命令緩沖區(qū)。第二GPU130執(zhí)行命令510以執(zhí)行解碼。第二GPU130執(zhí)行命令512以將經(jīng)解碼的視頻數(shù)據(jù)幀從第二緩沖區(qū)242傳送到第一緩沖區(qū)212。最后,根據(jù)命令514,第二GPU130通過釋放一信號來發(fā)信號通知第一GPU120關于解碼已完成。對于第一GPU120來說,軟件驅動程序106產(chǎn)生類似于命令緩沖區(qū)540的命令緩沖區(qū)。第一GPU120通過執(zhí)行命令542來獲取所釋放的信號。第一GPU120接著通過執(zhí)行命令544對第一緩沖區(qū)212中經(jīng)解碼的視頻數(shù)據(jù)幀執(zhí)行后處理操作。
本發(fā)明的一個優(yōu)勢在于圖形子系統(tǒng)110和112可具有不同的視頻和圖形處理能力。軟件驅動程序經(jīng)配置以通過將單獨視頻處理任務匹配到最適合所述任務的GPU來利用不對稱圖形子系統(tǒng)和不對稱GPU。此方法使得單獨視頻處理能由系統(tǒng)中的GPU逐次執(zhí)行,此允許同時處理多個視頻數(shù)據(jù)幀以增加處理量。同樣,軟件驅動程序106經(jīng)配置以與具有不同大小的GPU存儲器一起運作。支持不同存儲器大小的一種方式是通過以特定偏移量來定位每個緩沖區(qū),以有利于將視頻數(shù)據(jù)從一個緩沖區(qū)傳送到另一個。
本發(fā)明的另一優(yōu)勢在于由于可配置非對稱GPU來共享視頻處理任務,因而可更容易地升級計算裝置。即使添加較小、能力較差的GPU也可減少總視頻圖像處理時間,尤其當額外GPU包括計算裝置最初包括的GPU中所缺少的視頻處理單元時。舉例來說,如果計算裝置包括不具有視頻處理單元的GPU,那么簡單地添加具有相對有限的功能性但包括視頻處理單元的GPU可增加計算裝置的視頻處理量,因為所述兩個GPU可經(jīng)配置以一起運作以根據(jù)本文所述的本發(fā)明教示來處理視頻數(shù)據(jù)。
盡管前文針對本發(fā)明的若干實施例,但在不偏離本發(fā)明基本范圍的情況下可設計出本發(fā)明的其它和進一步的實施例。舉例來說,可配置兩個以上GPU來執(zhí)行單獨視頻處理任務。另外,所分配的處理任務可不限于視頻處理任務。舉例來說,本發(fā)明的教示可應用于加速3-D渲染。在此情況下,軟件驅動程序106可經(jīng)配置以劃分3-D渲染任務并根據(jù)GPU的個別處理能力而將所述任務分配到計算裝置內的兩個或兩個以上GPU。在又一替代實施例中,第一GPU120和/或第二GPU130中的每一者可由具有經(jīng)配置以并行運作處理單個視頻幀的兩個或兩個以上GPU的子系統(tǒng)取代。此類子系統(tǒng)的結構在2005年11月4日申請的題為“Video Processing with Multiple Graphical Processing Units”且代理人案號為NVDA/P001732的第11/267,611號美國專利申請案中描述,所述專利申請案以引用的方式并入本文中。因此,由所附權利要求書確定本發(fā)明的范圍。
權利要求
1.一種用于處理視頻數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包含一主處理器;一第一媒體處理裝置,其耦合到一第一緩沖區(qū),其中所述第一緩沖區(qū)經(jīng)配置以存儲一視頻數(shù)據(jù)幀,且所述第一媒體處理裝置經(jīng)配置以對所述視頻數(shù)據(jù)幀執(zhí)行一第一處理任務;和一第二媒體處理裝置,其耦合到一第二緩沖區(qū),其中所述第二緩沖區(qū)經(jīng)配置以存儲所述經(jīng)處理的視頻數(shù)據(jù)幀,且所述第二媒體處理裝置經(jīng)配置以對所述經(jīng)處理的視頻數(shù)據(jù)幀執(zhí)行一第二處理任務。
2.根據(jù)權利要求1所述的系統(tǒng),其中所述第一媒體處理裝置和所述第二媒體處理裝置不具有相同的視頻處理能力或不具有相同的圖形處理能力。
3.根據(jù)權利要求1所述的系統(tǒng),其中存儲在所述第一緩沖區(qū)中的所述視頻數(shù)據(jù)幀是一經(jīng)編碼的視頻數(shù)據(jù)幀,且所述第一處理任務包含解碼所述視頻數(shù)據(jù)幀。
4.根據(jù)權利要求3所述的系統(tǒng),其中存儲在所述第二緩沖區(qū)中的所述經(jīng)處理的視頻數(shù)據(jù)幀是所述經(jīng)解碼的視頻數(shù)據(jù)幀,且所述第二處理任務包含一后處理操作。
5.根據(jù)權利要求1所述的系統(tǒng),其進一步包含一系統(tǒng)接口,所述系統(tǒng)接口耦合到所述主處理器、所述第一媒體處理裝置和所述第二媒體處理裝置中的每一者且經(jīng)配置以實現(xiàn)所述主處理器與所述第一媒體處理裝置和所述第二媒體處理裝置中每一者之間以及所述第一媒體處理裝置與所述第二媒體處理裝置之間的傳輸。
6.根據(jù)權利要求5所述的系統(tǒng),其中所述系統(tǒng)接口包含一橋接裝置。
7.根據(jù)權利要求1所述的系統(tǒng),其進一步包含一軟件驅動程序,所述軟件驅動程序經(jīng)配置以產(chǎn)生一用于所述第一媒體處理裝置的第一命令緩沖區(qū)和一用于所述第二媒體處理裝置的第二命令緩沖區(qū),其中所述第一命令緩沖區(qū)和所述第二命令緩沖區(qū)中的每一者包含復數(shù)個用于處理所述視頻數(shù)據(jù)幀的命令。
8.根據(jù)權利要求7所述的系統(tǒng),其中所述第一命令緩沖區(qū)包括一用于解碼存儲在所述第一緩沖區(qū)中的所述視頻數(shù)據(jù)幀的命令、一用于將所述經(jīng)解碼的視頻數(shù)據(jù)幀傳送到所述第二緩沖區(qū)的命令和一用于向所述第二媒體處理裝置釋放一信號的命令。
9.根據(jù)權利要求8所述的系統(tǒng),其中所述第二命令緩沖區(qū)包括一用于獲取由所述第一媒體處理裝置釋放的所述信號的命令和一用于對存儲在所述第二緩沖區(qū)中的所述經(jīng)解碼的視頻數(shù)據(jù)幀執(zhí)行一后處理操作的命令。
10.根據(jù)權利要求8所述的系統(tǒng),其中所述用于將所述經(jīng)解碼的視頻數(shù)據(jù)幀傳送到所述第二緩沖區(qū)的命令包含一直接存儲器存取命令。
11.根據(jù)權利要求10所述的系統(tǒng),其中所述直接存儲器存取命令包含一位塊傳送命令。
12.根據(jù)權利要求1所述的系統(tǒng),其中所述第一緩沖區(qū)以一第一偏移量定位在一與所述第一媒體處理裝置相關聯(lián)的第一存儲器內,且所述第二緩沖區(qū)以一第二偏移量定位在一與所述第二媒體處理裝置相關聯(lián)的第二存儲器內。
13.一種用于處理視頻數(shù)據(jù)的方法,所述方法包含將一經(jīng)編碼的視頻數(shù)據(jù)幀存儲在一第一緩沖區(qū)中,所述第一緩沖區(qū)耦合到一第一媒體處理裝置;解碼所述視頻數(shù)據(jù)幀;將所述經(jīng)解碼的視頻數(shù)據(jù)幀傳送到一第二緩沖區(qū),所述第二緩沖區(qū)耦合到一第二媒體處理裝置;和對所述經(jīng)解碼的視頻數(shù)據(jù)幀執(zhí)行一后處理操作。
14.根據(jù)權利要求13所述的方法,其進一步包含將所述經(jīng)處理的視頻數(shù)據(jù)幀從所述第二緩沖區(qū)傳送到一顯示裝置以供顯示的步驟。
15.根據(jù)權利要求13所述的方法,其進一步包含產(chǎn)生一用于所述第一媒體處理裝置的第一命令緩沖區(qū)和一用于所述第二媒體處理裝置的第二命令緩沖區(qū)的步驟,其中所述第一命令緩沖區(qū)和所述第二命令緩沖區(qū)中的每一者包含復數(shù)個用于處理所述視頻數(shù)據(jù)幀的命令。
16.根據(jù)權利要求15所述的方法,其中所述第一命令緩沖區(qū)包括一用于解碼存儲在所述第一緩沖區(qū)中的所述經(jīng)編碼的視頻數(shù)據(jù)幀的命令、一用于將所述經(jīng)解碼的視頻數(shù)據(jù)幀傳送到所述第二緩沖區(qū)的命令和一用于向所述第二媒體處理裝置釋放一信號的命令。
17.根據(jù)權利要求16所述的方法,其中所述第二命令緩沖區(qū)包括一用于獲取由所述第一媒體處理裝置釋放的所述信號的命令和一用于對存儲在所述第二緩沖區(qū)中的所述經(jīng)解碼的視頻數(shù)據(jù)幀執(zhí)行一后處理操作的命令。
18.一種用于處理視頻數(shù)據(jù)的方法,所述方法包含在一第一存儲器中界定一第一緩沖區(qū),所述第一緩沖區(qū)耦合到一第一媒體處理裝置,其中所述第一緩沖區(qū)以一第一偏移量定位在所述第一存儲器內;在一第二存儲器中界定一第二緩沖區(qū),所述第二緩沖區(qū)耦合到一第二媒體處理裝置,其中所述第二緩沖區(qū)以一第二偏移量定位在所述第二存儲器內;將一視頻數(shù)據(jù)幀存儲在所述第一緩沖區(qū)中;和產(chǎn)生一用于所述第一媒體處理裝置的第一命令緩沖區(qū)和一用于所述第二媒體處理裝置的第二命令緩沖區(qū),其中所述第一命令緩沖區(qū)和所述第二命令緩沖區(qū)中的每一者包含復數(shù)個用于處理所述視頻數(shù)據(jù)幀的命令。
19.根據(jù)權利要求18所述的方法,其中存儲在所述第一緩沖區(qū)中的所述視頻數(shù)據(jù)幀包含一經(jīng)編碼的視頻數(shù)據(jù)幀,且所述第一命令緩沖區(qū)包括一用于解碼所述經(jīng)編碼的視頻數(shù)據(jù)幀的命令、一用于將所述經(jīng)解碼的視頻數(shù)據(jù)幀傳送到所述第二緩沖區(qū)的命令和一用于向所述第二媒體處理裝置釋放一信號的命令。
20.根據(jù)權利要求19所述的方法,其中所述第二命令緩沖區(qū)包括一用于獲取由所述第一媒體處理裝置釋放的所述信號的命令和一用于處理存儲在所述第二緩沖區(qū)中的所述經(jīng)解碼的視頻數(shù)據(jù)幀的命令。
21.根據(jù)權利要求19所述的方法,其中用于將所述經(jīng)解碼的視頻數(shù)據(jù)幀傳送到所述第二緩沖區(qū)的所述命令包含一直接存儲器存儲命令。
22.根據(jù)權利要求21所述的方法,其中所述直接存儲器存取命令包含一位塊傳送命令。
全文摘要
本發(fā)明提供一種用于處理視頻數(shù)據(jù)的系統(tǒng),其包括一主處理器;一第一媒體處理裝置,其耦合到一第一緩沖區(qū),所述第一媒體處理裝置經(jīng)配置以對一視頻數(shù)據(jù)幀執(zhí)行一第一處理任務;和一第二媒體處理裝置,其耦合到一第二緩沖區(qū),所述第二媒體處理裝置經(jīng)配置以對所述經(jīng)處理的視頻數(shù)據(jù)幀執(zhí)行一第二處理任務。所述結構允許所述兩個裝置具有不對稱的視頻處理能力。因此,根據(jù)每個裝置的各自能力,所述第一裝置可有利地執(zhí)行一第一任務(例如解碼),而所述第二裝置執(zhí)行一第二任務(例如后處理),從而相對于現(xiàn)有技術系統(tǒng)來說增加了處理效率。另外,一個驅動程序可用于兩個裝置,使得應用程序能利用所述系統(tǒng)的加速處理能力而不需要代碼變化。
文檔編號G06F9/38GK101025821SQ20071008028
公開日2007年8月29日 申請日期2007年2月16日 優(yōu)先權日2006年2月21日
發(fā)明者弗蘭克·R·迪亞爾, 哈?!·阿扎爾 申請人:輝達公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1