專利名稱:Pc總線上的多重三維圖形管線的方法及系統(tǒng)的制作方法
技術(shù)領域:
本發(fā)明涉及一種三維的(three-dimensional)多重圖形處理方法及系統(tǒng)。特別涉及一種基于時間分割、圖像分割和對象分割三種并行方法的統(tǒng)一框架,通過圖形處理單元(GPU)改善圖像處理并行性的方法及系統(tǒng)。
定義、首字母縮拼詞和縮寫詞本說明書通篇采用下列定義GPUGPU(Graphic Processing Units)與CPU(Central ProcessingUnit)相類似,GPU是主要用于處理三維功能的單芯片處理器。其可執(zhí)行的任務包括,光照效果,對象轉(zhuǎn)換以及三維動作。這些都是計算密集的任務,會給CPU造成很重的負荷,而由于專門的GPU可以處理大多數(shù)三維計算,它可以協(xié)助計算機更有效并且當然能更快地執(zhí)行這些任務。
多邊形三維圖形中的多邊形是二維的圖元(two-dimensionalprimitives),其可以生成并顯示三維的復雜圖形物體。該多邊形是該物體的各個面并且由N個頂點組成。實際上,多邊形是由三條或更多的線段圍成的封閉的平面圖形。
幀緩沖區(qū)幀緩沖區(qū)(FB)是以象素形式存儲圖像內(nèi)容的緩沖區(qū)。通常,內(nèi)存部分是留作保存送到監(jiān)視器顯示的完整位像之用的。特別地,幀緩沖區(qū)是存儲在視頻適配器的內(nèi)存芯片里的。然而,在某些情況下,視頻芯片組集成在主板設計中,并且?guī)彌_區(qū)存儲在通用主內(nèi)存中。
對象合成單元用于將多個三維光柵再次合成為最終圖像?;谙笏氐纳疃戎?,該經(jīng)合并的數(shù)據(jù)根據(jù)與三維空間中的觀察器距離最近的象素而分解。所述的新方法基于自主聯(lián)合決策,允許運用對于任何幀復雜性的多重GPU。
顯示列表顯示列表是通過例如多邊形和屬性的圖形圖元的列表對三維場景的描述。該顯示列表為快速圖像檢索提供了中間圖像存儲。
頂點數(shù)組頂點數(shù)組是描繪三維場景的頂點的數(shù)組。頂點數(shù)組為快速圖像檢索提供了中間圖像存儲。
阿爾法融合阿爾法融合控制了圖形信息以諸如透明度或者不透明度等級顯示的方式。
背景技術(shù):
三維圖形管線結(jié)構(gòu)分為CPU階段,總線階段,GPU頂點處理階段,GPU碎片(象素)處理階段。給定的管線僅與上述階段之一的最薄弱的環(huán)節(jié)一樣強壯,因此該主要瓶頸決定了總的處理能力。要提高性能就必須減少或者消除這些瓶頸。主要的瓶頸很大程度上依賴于應用程序。極端的兩個例子,一個是類似CAD(Computer Aided Design)的應用程序,其特征為大量的多邊形(頂點),另一個是視頻游戲應用程序,其具有少量的多邊形但具有密集的碎片活動性(例如紋理)。第一類遭遇到頂點處理的瓶頸,而第二類遭遇到碎片的瓶頸。兩者經(jīng)常在PC總線上發(fā)生堵塞。許多應用程序具有混合的特征,在單幀基礎上,其瓶頸任意地在兩個極端之間改變。
改善GPU性能的唯一方法是根據(jù)瓶頸解決方法的其中之一使多重GPU能并行處理。有兩種主要的使用GPU再現(xiàn)(rendering)圖形數(shù)據(jù)的方法。這些方法包括時間分割(時域合成)法,其中每個GPU再現(xiàn)后繼幀,以及圖像分割(屏幕空間合成)法,其中每個GPU再現(xiàn)各幀的子象素集。第三種不常用的方法是對象分割(多邊形分解)法。
在時間分割法中每個GPU再現(xiàn)后繼幀。其缺點在于每個GPU都得再現(xiàn)一幅完整的幀。因此,各幀再現(xiàn)的速度就受限于單個GPU再現(xiàn)幀的速度。雖然多重GPU具有較高的幀頻,但是對于用戶的輸入在系統(tǒng)的響應時間(反應時間)里會產(chǎn)生延遲。這個延遲的發(fā)生是因為,雖然在任何給定的時間,只有一個GPU參與顯示一幅已再現(xiàn)的幀,但是每個GPU都處于順次再現(xiàn)一系列幀的其中之一的處理過程中。為了保持高的幀頻,系統(tǒng)延遲了用戶的輸入,直至首先接收到序列中循環(huán)信號的特定GPU再次參與其再現(xiàn)幀的顯示。在實際應用中,這種情況限制了系統(tǒng)中使用GPU的數(shù)量。如果有大數(shù)據(jù)集,由于每個GPU都必須能夠訪問所有的數(shù)據(jù),這里出現(xiàn)另一個瓶頸。這就要求或者是維持多重的大數(shù)據(jù)集的拷貝操作,或者在進行單獨拷貝操作中產(chǎn)生可能的沖突。
圖像分割法將屏幕分割給了N個GPU,因而每個GPU顯示圖像的1/N。整個多邊形集被轉(zhuǎn)移到各個GPU進行處理,但是,像素處理被顯著減少為窗口尺寸。圖像分割沒有等待時間的問題,但是它有與大數(shù)據(jù)集相類似的瓶頸,因為每個GPU都必須檢查整個數(shù)據(jù)庫以確定哪個圖形元素落在了分配給該GPU的屏幕部分內(nèi)。圖像分割方法適合于密集的像素處理的應用程序。
對象分割方法是基于數(shù)據(jù)子集在多重GPU之間的分配。該數(shù)據(jù)子集再現(xiàn)于GPU管線,并轉(zhuǎn)換到碎片(子圖像像素)的幀緩沖區(qū)(FB)。多重FB的子圖像必須被合并(合成)以產(chǎn)生最終要顯示的圖像。對象分割在由大量多邊形構(gòu)成的非常復雜的數(shù)據(jù)的單幀級別上傳遞并行再現(xiàn)。輸入數(shù)據(jù)在多邊形級別被分解,并在象素級別被重組。由專用的驅(qū)動巧妙地將由應用程序生成的數(shù)據(jù)流在所有GPU之間進行分配。由GPU產(chǎn)生的光柵被合成為最終的光柵,以及被移動到顯示器。對象分割法更適用于需要再現(xiàn)大量幾何數(shù)據(jù)的應用程序。特別是CAD,數(shù)字內(nèi)容創(chuàng)作(Digital Content Creation),以及類似的視覺仿真軟件,其被視為“觀察器”,意味著數(shù)據(jù)是預先設計好的,以致它們在空間中的三維位置不受用戶的交互控制。但是,用戶可以對觀察器的位置、觀察方向和圖形數(shù)據(jù)的尺度進行交互控制。用戶還可以對子數(shù)據(jù)集的選擇以及其再現(xiàn)的方法進行控制。其包括操控圖像的光照效果,著色效果,透明效果,以及底層數(shù)據(jù)其它的視覺特性。
在上述軟件中,由于所述顯示列表或頂點數(shù)組中的數(shù)據(jù)通常包括大量的幾何體,所以所述數(shù)據(jù)都趨向非常復雜。因此,單幀的構(gòu)成時間也趨向于非常長(典型地,例如兩千萬個多邊形需時0.5秒),其反過來降低了整個系統(tǒng)的性能。
因此,需要提供一個面臨PC(Personal Computer)總線上的高通信量,能保證最佳系統(tǒng)性能的系統(tǒng)。
本發(fā)明的一個目的是使多重GPU并行從而增強GPU的性能。
本發(fā)明的另一個目的是提供一個系統(tǒng),其中單幀的構(gòu)成時間不會減慢整個系統(tǒng)的響應。
本發(fā)明的又一個目的是提供一種系統(tǒng)和方法,其中頂點處理和碎片處理的圖形管線瓶頸可以得到明顯并且巧妙地解決。
本發(fā)明的再一個目的是提供一種具有高可測量性以及無限的場景復雜性的系統(tǒng)和方法。
本發(fā)明進一步的目的是提供一種克服因數(shù)據(jù)分解而引起的技術(shù)難點的處理過程,該數(shù)據(jù)分解是GPU間的數(shù)據(jù)和圖形命令的一部分。
本發(fā)明還有一個目的是提供一種用于數(shù)據(jù)和圖形命令智能分解的方法和系統(tǒng),其保留圖形庫的基本特征作為狀態(tài)機,并遵從圖形標準。
本發(fā)明其它的目的和優(yōu)勢將隨著說明的過程而漸漸清晰明了。
發(fā)明內(nèi)容
本發(fā)明為一種用于改善圖像處理的并行性的系統(tǒng),其使用一個或多個并行模式,其中圖像通過一個或多個圖形處理單元顯示在至少一個計算機屏幕上,該系統(tǒng)包括一個或多個應用軟件,其用于發(fā)出圖形命令;一個或多個圖形庫,其用于存儲用來執(zhí)行圖形命令的數(shù)據(jù);一個或多個軟件集線器驅(qū)動,其用于控制硬件集線器,使得計算機操作系統(tǒng)和圖形庫相互作用,以及用于對數(shù)據(jù)流進行實時分析,從這些數(shù)據(jù)流中將生成數(shù)幀圖像,用于確定每個GPU的并行模式,以及用于將數(shù)據(jù)流或其部分發(fā)送到各個GPU;一個或多個GPU驅(qū)動,其用于使得GPU與圖形庫相互作用;
至少一個I/O模塊,其用于軟件模塊和硬件集線器之間的相互連接,其中硬件集線器將對于各幀的根據(jù)圖形命令以及數(shù)據(jù)流或其部分在圖像中的相對復雜性在GPU之間分配圖形命令以及數(shù)據(jù)流或其部分,所述復雜性由所述軟件集線器驅(qū)動定義;軟件集線器驅(qū)動使用獲取自至少一個GPU的輸出合成用于顯示的圖形輸出,同時在任何需要的時候,可對于所述各幀的并行模式進行交替。
并行是基于對象分割模式,圖像分割模式,時間分割模式或者它們的任意組合。硬件集線器包含合成單元,用于從數(shù)據(jù)流的已處理的部分中合成出完整的幀。所述硬件集線器包含集線器路由器,其用于在對象分割,圖像分割,時間分割或者三者的任意組合的模式下,發(fā)送多邊形數(shù)據(jù)、圖形命令流、像素數(shù)據(jù)以及合成結(jié)果對象分割。所述硬件集線器包含控制單元,其用于在I/O模塊中接收來自軟件集線器驅(qū)動的命令。所述硬件集線器還包含內(nèi)存單元,其用于存儲一個或多個GPU的中間處理結(jié)果和用于合成的所需數(shù)據(jù),并傳送該用于顯示的已處理數(shù)據(jù)。
優(yōu)選地,所述軟件集線器驅(qū)動能夠執(zhí)行以下操作通過OS界面及其應用截取來自標準圖形庫的圖形命令;通過OS界面及其應用發(fā)送和創(chuàng)建圖形命令給GPU驅(qū)動;通過OS界面及其應用控制硬件集線器,注冊以及安裝操作;基于輸入圖形命令流,保持經(jīng)過GPU的圖形機狀態(tài)的一致性,并使用狀態(tài)監(jiān)視;
估計在已執(zhí)行的應用程序圖形上下文中圖形載入及超載的類型,并使用軟件和圖形資源分析;加載基于圖形命令流和時間尺度的GPU載入平衡的估計,并使用軟件和圖形資源分析;根據(jù)從每個有關載入平衡的GPU接收到的反饋,調(diào)整GPU間的載入分配,并使用軟件和圖形資源分析;根據(jù)當前的并行模式執(zhí)行圖形功能中的操作;以及控制分配的圖形功能,并根據(jù)當前的并行模式更改圖形命令和數(shù)據(jù)流功能。
本發(fā)明為一種用于改善圖像處理的并行性的方法,其使用一個或多個并行模式,其中圖像通過一個或多個圖形處理單元顯示在至少一個計算機屏幕上。提供應用軟件用于發(fā)出圖形命令,提供圖形庫用于存儲用來執(zhí)行圖形命令的數(shù)據(jù)。提供軟件集線器驅(qū)動,其用于控制硬件集線器,使得計算機操作系統(tǒng)和圖形庫相互作用,以及對數(shù)據(jù)流進行實時分析,從這些數(shù)據(jù)流中將生成數(shù)幀圖像,用于確定每個GPU的并行模式,以及用于將數(shù)據(jù)流或其部分發(fā)送到每個GPU。提供GPU驅(qū)動,其用于使得GPU與圖形庫相互作用,以及提供I/O模塊,其用于軟件模塊和硬件集線器的相互連接。圖形命令和數(shù)據(jù)流或其部分根據(jù)它們在圖像中的相對復雜性由硬件集線器對于每一幀在GPU之間進行分配,該復雜性由軟件集線器驅(qū)動進行定義。所述軟件集線器也使用獲取自至少一個GPU的輸出合成用于顯示的圖形輸出,同時在任何需要的時候,可對于所述每一幀改變并行模式。
當并行模式為對象分割并行模式時,將執(zhí)行下述步驟
對于每一幀,生成圖形操作和多邊形數(shù)據(jù)流;由軟件集線器驅(qū)動標記所述多邊形數(shù)據(jù)和圖形命令,用于在多重GPU之間進行分配;將已標記的數(shù)據(jù)發(fā)送到硬件集線器;通過集線器路由器將已標記的數(shù)據(jù)分配到多重GPU;由GPU再現(xiàn)數(shù)據(jù);從幀緩沖區(qū)中取出數(shù)據(jù)并將取出的數(shù)據(jù)經(jīng)過集線器路由器發(fā)送到合成單元;將幀緩沖區(qū)中的內(nèi)容合成到單幀緩沖區(qū);以及將單幀緩沖區(qū)中的內(nèi)容發(fā)送到至少一個指定的GPU進行顯示。
當并行模式為圖像分割并行模式時,將執(zhí)行下述步驟由軟件集線器驅(qū)動將屏幕細分為多個部分并將不同的視口(viewport)分配給GPU;將全部多邊形數(shù)據(jù)和圖形命令移到集線器路由器;將全部多邊形數(shù)據(jù)和圖形命令轉(zhuǎn)移到GPU,其中每個GPU接收到的是相同的數(shù)據(jù);由GPU再現(xiàn)數(shù)據(jù);將存儲在幀緩沖區(qū)中的內(nèi)容的部分發(fā)送到硬件集線器的合成單元中,用于創(chuàng)建完整的圖像;以及將圖像發(fā)送到至少一個GPU以進行顯示。
當并行模式為時間分割并行模式時,將執(zhí)行下述步驟將用于再現(xiàn)的全部數(shù)量的多邊形發(fā)送到多重GPU中的每一個;由軟件集線器驅(qū)動將全部的多邊形數(shù)據(jù)和圖形命令再次送到所有的GPU,并在它們之間進行交替;由GPU再現(xiàn)數(shù)據(jù);將來自至少一個GPU的已再現(xiàn)數(shù)據(jù)由集線器路由器進行轉(zhuǎn)移;以及將幀緩沖區(qū)中作為結(jié)果的內(nèi)容由集線器路由器再次送到至少一個指定的GPU以便進行顯示。
在多重GPU之間分配多邊形的操作是通過在多重GPU之間分配數(shù)據(jù)塊以及測試每個對于塊模式的圖形操作來執(zhí)行的,此后,都以一種或多種并行模式來執(zhí)行。數(shù)據(jù)通過規(guī)則的非塊化路徑轉(zhuǎn)送到至少一個指定的GPU,這個過程一直重復直到檢測到塊操作為止。為了在每個GPU中終止再現(xiàn)并清除內(nèi)部管線,隨后GPU通過執(zhí)行清洗(flush)操作來進行同步;通過執(zhí)行合成操作將幀緩沖區(qū)中的內(nèi)容合并到單幀緩沖區(qū)中,并將單幀緩沖區(qū)傳送至所有的GPU。然后當檢測到交換(swap)操作時,所合成的完整的幀就會終止于所有的GPU,除了一個或多個指定的GPU,并通過一個或多個指定的GPU顯示所述圖像時。只要塊模式還在運行,并還未檢測到交換操作,則所有GPU處理相同的數(shù)據(jù)。當塊模式停止運行時,指定的數(shù)據(jù)將進一步由多重GPU進行處理。
圖1為本發(fā)明實施例的多重GPU結(jié)構(gòu)系統(tǒng)的結(jié)構(gòu)圖;圖2為本發(fā)明實施例的硬件集線器各組成部分的結(jié)構(gòu)圖;圖3為本發(fā)明實施例的對象分割并行模式的結(jié)構(gòu)圖;圖4為本發(fā)明實施例的圖像分割并行模式的結(jié)構(gòu)圖;圖5為本發(fā)明實施例的時間分割并行模式的結(jié)構(gòu)圖;圖6為本發(fā)明實施例的軟件集線器與操作系統(tǒng)環(huán)境的一種可能的集成的示意結(jié)構(gòu)圖;圖7為本發(fā)明實施例的表示軟件集線器驅(qū)動的主要任務的功能結(jié)構(gòu)圖;圖8為本發(fā)明實施例的表示在GPU之間分配多邊形的過程的流程圖;圖9為本發(fā)明實施例的使用8個GPU示例系統(tǒng)結(jié)構(gòu)圖。
可以理解的是,為了圖示的簡單和清晰起見,圖中所示的各元素并未按尺寸描繪。例如,某些元素的尺度為清晰起見可能相對別的元素要擴大一些。此外,為適當考慮,各圖之間的參考數(shù)字標記可能重復,以表示相應的或類似的元素。
具體實施例方式
多重三維圖形管線本發(fā)明需要對包括三維管線集線器這種創(chuàng)新操作組成成分的可擴展的PC圖形結(jié)構(gòu)進行介紹。
圖1所示為本發(fā)明實施例的多重GPU結(jié)構(gòu)系統(tǒng)100。集線器110位于PC總線上獨特的位置,介于CPU(Central Processing Unit)和GPU群130之間。如圖1所示的多重圖形管線結(jié)構(gòu)包括,應用軟件121,圖形庫122,軟件集線器123,GPU驅(qū)動124,硬件集線器110,GPU群130,以及顯示器140。通常,GPU中有一個會被指定為顯示器單元。需要注意的是,可能有多于一個的顯示單元,或者將顯示單元直接包括在硬件集線器中。顯示器單元最好可以驅(qū)動多個屏幕。
集線器機制包括硬件集線器部分110,其位于PC總線上,介于作為I/O模塊的I/O(輸入/輸出)芯片組160和GPU群130之間,以及包含軟件集線器驅(qū)動123的,由PC執(zhí)行操作的軟件模塊。
硬件集線器110承擔至少下列動作在GPU之間分配已分解的多邊形流和圖形命令;根據(jù)不同的并行模式合成用于顯示的圖形輸出;進行數(shù)據(jù)緩存;以及切換并行模式。
軟件集線器驅(qū)動123,除了控制硬件集線器110外,還承擔至少以下動作使得OS(操作系統(tǒng))和諸如OpenGL和DirectX的圖形庫相互作用;對數(shù)據(jù)流進行實時分析;確定并行模式;以及分解數(shù)據(jù)和命令流。
本方法的一個優(yōu)勢在于,硬件集線器110的獨特位置使其能夠控制圖形管線,同時對于應用軟件121是透明的。連同例如OpenGL的圖形庫122,應用軟件121如單獨的GPU般運行。
本方法的另一個優(yōu)勢在于,硬件集線器110的獨特位置使其能夠控制用戶接口150和顯示器140之間的圖形管線,同時對于GPU是透明的。群中的每個GPU如同連接在I/O芯片集160上的僅有的圖形處理器一般運行。
本方法的又一個優(yōu)勢在于,硬件集線器110的獨特位置使其能夠控制在圖像分割模式,時間分割模式和對象分割模式這些不同并行模式下的圖形管線。
本方法進一步的優(yōu)勢在于,硬件集線器110的獨特位置使其能夠?qū)崟r地檢測到應用軟件載入?yún)?shù)的變化,例如多邊形計數(shù),紋理量,與人的交互作用,以及智能地確定和執(zhí)行當前最佳的并行方法。
需要注意的是,根據(jù)本發(fā)明的所有實施例,顯示器140可以直接或間接地連接到硬件集線器110。
參考圖2所示的本發(fā)明實施例的硬件集線器110的各個組成部分??刂茊卧?10,經(jīng)總線從軟件集線器驅(qū)動接收專有的命令,并相應地控制其他單元。集線器路由器230,其從左到右發(fā)送多邊形數(shù)據(jù)和圖形命令流,從右發(fā)送像素數(shù)據(jù)到合成單元,以及將合成的結(jié)果發(fā)送到右邊。合成單元240根據(jù)并行模式執(zhí)行各種合成計劃。輔助內(nèi)存塊220用于存儲一個或多個GPU的中間處理結(jié)果和合成所需的數(shù)據(jù),并傳送已處理的用于顯示的數(shù)據(jù)。
硬件集線器110根據(jù)并行模式利用其各個單元,所述并行模式為對象分割模式,圖像分割模式和時間分割模式。這些模式根據(jù)應用的需要由硬件集線器110適意地進行操作。
圖3所示為本發(fā)明實施例的對象分割并行模式。CPU執(zhí)行三維圖形應用軟件310,該軟件隨同標準圖形庫一起產(chǎn)生圖形操作和多邊形數(shù)據(jù)流。它們被特定地組織在數(shù)據(jù)塊中,這些數(shù)據(jù)塊或者如同顯示列表,頂點數(shù)組,或者如自由多邊形,所述自由多邊形是既沒有組織在顯示列表也沒有在頂點數(shù)組中的多邊形。步驟320中的軟件集線器驅(qū)動對多邊形數(shù)據(jù)和圖形命令進行標記,使得總的載入能夠以平衡的方式在GPU之間進行分配。已標記的數(shù)據(jù)發(fā)送到硬件集線器。在步驟330中,已標記的數(shù)據(jù)經(jīng)集線器路由器分配到多重GPU中。步驟340中,在GPU中的再現(xiàn)處理完成之后,在步驟350中將幀緩沖區(qū)取回并經(jīng)集線器路由器發(fā)送到合成單元。這里所述的幀緩沖區(qū)已被合成為一個單幀緩沖區(qū),并被發(fā)送到指定GPU用于顯示。該單幀緩沖區(qū)在步驟360中顯示。
圖4公開了本發(fā)明實施例的圖像分割并行模式下的操作。在這個模式中,軟件集線器驅(qū)動分配不同的視口給各個GPU,以便在GPU之間把屏幕劃分開來。視口的方位根據(jù)載入平衡的考慮而設置,以便保持總的GPU載入平衡均勻。在步驟420中,全部多邊形數(shù)據(jù)和圖形命令移入硬件集線器的集線器路由器中,并在步驟430中被傳送到多重GPU中。所有的GPU接收到相同的數(shù)據(jù)。在步驟440中的再現(xiàn)步驟之后,步驟450中,局部幀緩沖區(qū)被帶入硬件集線器的合成單元用于創(chuàng)建完整的圖像,隨后該圖像被移入指定GPU中用于顯示。完整的圖像在步驟460中顯示。
圖5公開了本發(fā)明實施例的圖像分割并行模式下的操作。在時間分割模式中,對每幀的處理占用N個幀時單元,同時有N個GPU(或者N群GPU)參與過程。所有的多邊形發(fā)送到每個GPU用以再現(xiàn)步驟。步驟530中,在每個幀時單元,軟件集線器驅(qū)動在某一時刻將多邊形數(shù)據(jù)和圖形命令發(fā)送到GPU群,并在這個群間進行交替。步驟540中在GPU中再現(xiàn)的數(shù)據(jù)經(jīng)集線器路由器轉(zhuǎn)移到上述GPU群中,隨后步驟550中作為結(jié)果的幀緩沖區(qū)經(jīng)集線器路由器發(fā)送到指定GPU中用于顯示。所有的GPU由軟件集線器驅(qū)動協(xié)調(diào)以創(chuàng)建連續(xù)的幀序列。步驟560中,顯示作為結(jié)果的幀緩沖區(qū)。
硬件集線器組成部分為其規(guī)劃(scaling)技術(shù)規(guī)劃基于PC的系統(tǒng)的現(xiàn)有GPU性能專用的結(jié)構(gòu)和專有處理群,該規(guī)劃是通過在芯片、卡或者芯片IP(知識產(chǎn)權(quán))核心的層次上使用并行的多重GPU,并處理CPU和GPU之間的多重總線路徑而進行的。該技術(shù)實現(xiàn)了性能上的線性增長。其對圖形廠家沒有變化,對于應用軟件也是透明的。在本發(fā)明中,頂點處理,碎片處理和總線傳送的圖形管線瓶頸已得到完全并且巧妙的解決。由于瓶頸可能在各幀之間變換,故硬件集線器被設計具有智能實時反饋系統(tǒng),其位于如圖2所示的控制單元210和如圖1所示的軟件集線器驅(qū)動123之間,通過總線,其使用不同的并行模式以克服不同的瓶頸,并且在幀的級別上保持最大性能。
軟件集線器驅(qū)動軟件集線器驅(qū)動是一個軟件包,其位于PC中,與計算機操作系統(tǒng)、標準圖形庫、應用軟件和廠家的GPU驅(qū)動共存。圖6為本發(fā)明實施例的軟件集線器驅(qū)動630與操作系統(tǒng)環(huán)境的一種可能的集成示意結(jié)構(gòu)圖。圖形應用軟件塊610旁邊為標準圖形庫塊620。軟件集線器驅(qū)動630位于標準圖形庫620下方,其截取通往廠家的GPU驅(qū)動640的圖形命令和數(shù)據(jù)流。軟件集線器驅(qū)動630也控制硬件集線器660。
圖7為本發(fā)明實施例的表示軟件集線器驅(qū)動主要任務的功能結(jié)構(gòu)圖。OS界面和應用塊710負責從標準圖形庫截取圖形命令,發(fā)送并創(chuàng)建圖形命令到廠家的GPU驅(qū)動,控制硬件集線器,注冊和安裝,OS服務和應用等。狀態(tài)監(jiān)視塊720負責基于輸入的圖形命令流保持經(jīng)過GPU的圖形機狀態(tài)的一致性。應用軟件和圖形資源分析塊730負責對應用軟件進行觀測估計圖形載入和當前應用軟件圖形內(nèi)容上下文中的瓶頸的類型,基于圖形命令流和時間度量估計載入的圖形資源(GPU)的載入平衡,以及根據(jù)載入平衡處理來自GPU的反饋。并行策略管理塊740是基于載入分析的。所有的并行模式,即對象分割模式,圖像分割模式和時間分割模式,都被結(jié)合在一起以便獲取最佳性能和最優(yōu)載入處理。并行策略基于對載入的分析,其必須在電路或芯片中保持所有相關聯(lián)的GPU的圖形系統(tǒng)的狀態(tài)。例如,在某些時間點加入一個新的光源從而造成的狀態(tài)改變肯定會影響到不同GPU中的所有的后繼多邊形。并行策略管理塊740負責解釋圖形功能中特定的處理策略。分布式圖形功能控制塊750負責基于并行策略修改圖形命令和數(shù)據(jù)流。
對象分割分解過程對象分割是公知的概念,而雖然數(shù)據(jù)分解(在GPU之間劃分數(shù)據(jù)和圖形命令)也是個公知的概念,但是至今還未得到有效的應用,這是因為其遇上了各種很大的困難。而這些困難通過本發(fā)明提議的處理及其執(zhí)行都可以順利得到解決。
分解以及更重要的合成必須精確而且高效。固定的操作必須按照應用軟件提交的順序執(zhí)行。例如,在半透明處理的例子中,要創(chuàng)建正確的圖形結(jié)果就必須保持命令和多邊形流的固定順序。
要保持圖形庫作為狀態(tài)機的基本特征以及服從圖形標準,必須巧妙地分解數(shù)據(jù)和圖形命令。本發(fā)明所提議的分解處理由軟件集線器驅(qū)動執(zhí)行。CPU運行三維圖形應用軟件,產(chǎn)生圖形命令和數(shù)據(jù)流。它們都特定地被組織在例如顯示列表或者頂點數(shù)組的塊中,并存儲在系統(tǒng)內(nèi)存中。
本發(fā)明的軟件集線器驅(qū)動在CPU中運行,其對場景多邊形(或頂點)的集合進行分解。它們的物理分配由硬件集線器執(zhí)行。
多邊形在GPU中再現(xiàn),同時保持本地內(nèi)存中作為結(jié)果的幀緩沖區(qū)。所有的FB都經(jīng)集線器路由器轉(zhuǎn)移到硬件集線器中的合成單元,然后被合并為單FB。最后,該合成的FB被送去顯示。
軟件集線器驅(qū)動繼續(xù)隨后的將多邊形在GPU之間進行分配的處理過程。假設所述圖形應用軟件工作的常規(guī)方式保持不變。對于每一幀,典型的應用軟件產(chǎn)生包括圖形數(shù)據(jù)塊的圖形調(diào)用流;每個塊包括幾何操作列表,如單個頂點操作或者基于緩沖區(qū)的操作(頂點數(shù)組)。特定地,分解過程保持各塊為基本的數(shù)據(jù)單元而將數(shù)據(jù)在GPU之間分割開來。幾何操作附加于數(shù)據(jù)塊,指示數(shù)據(jù)處理的方式。塊被指向指定的GPU。但是,還有屬于塊操作組的操作,例如清洗,交換,阿爾法融合等,這些操作將影響整個圖形系統(tǒng),并將系統(tǒng)設置為塊模式。塊操作比較特殊,它們需要合成的有效FB數(shù)據(jù),因此在本發(fā)明的并行設置中,它們對所有的GPU產(chǎn)生影響。所以,當執(zhí)行塊操作的其中之一時,所有的GPU必須同步。每個幀有至少兩個塊操作,即清洗和交換,所述操作將令幀終止。
圖8為本發(fā)明實施例的表示在GPU之間分配多邊形的過程的流程圖。幀的活動性從將數(shù)據(jù)塊在GPU之間分配開始。步驟820中,對每個圖形操作的塊模式進行測試。步驟830中,在規(guī)則(非塊)路徑下,數(shù)據(jù)再次指向指定的GPU。這個循環(huán)一直重復直到檢測到塊操作為止。
步驟840中,當檢測到塊操作時,所有的GPU至少必須按下列次序同步為了中止再現(xiàn)并清除GPU中的內(nèi)部管線(清洗),執(zhí)行清洗操作;為了合并FB的內(nèi)容到單FB,執(zhí)行合成操作;以及為了創(chuàng)建用以繼續(xù)處理的普通背景,將所述單FB中的內(nèi)容轉(zhuǎn)移回到所有的GPU。
交換操作交換前后顏色緩沖區(qū),激活雙倍緩沖機制。如果步驟850中檢測到了交換,意味著除了GPU0,所有GPU中合成的完整的幀都要終止。所有的GPU都有FB的最終合成內(nèi)容,該FB被指定存儲所述內(nèi)容,但是只有連接到屏幕的一個(GPU0)才顯示圖像,此為步驟860。
另一個例子是全局地應用到場景中的操作,并需要向所有的GPU廣播。如果識別出其他塊操作中的一個,例如用于透明化的阿爾法融合,則所有的GPU將如同步驟840的情形被清洗,并合并到普通的FB。這次沒有檢測到交換操作(步驟850),因此所有的GPU有同樣的數(shù)據(jù),并且只要塊模式在運行(步驟870),所有的GPU就保持處理同樣的數(shù)據(jù)(步驟880)。如果在步驟870中檢測到塊模式結(jié)束,則GPU恢復處理指定的數(shù)據(jù)(步驟830)。
通過結(jié)合三種分配方式對圖形載入的適應性處理另外,本發(fā)明介紹了一種動態(tài)的載入平衡技術(shù),其根據(jù)先前處理階段中的載入表現(xiàn),將對象分割方法和圖像分割方法以及時間分割方法在圖像和時域上合并。將所述三種并行方式合并為統(tǒng)一的框架,這極大地提高了本發(fā)明的效果。
并行處理是由管線執(zhí)行的,如任何普通GPU都可以在時域、圖像域和對象域并行處理數(shù)據(jù),。在圖形處理系統(tǒng)中執(zhí)行的操作,不論是在多重GPU上的并行處理還是順續(xù)處理,結(jié)果都是順次的完整的光柵圖像存儲在幀緩沖區(qū)中,然后送到顯示單元。這些圖像被簡稱為幀。一幀包括許多碎片。碎片是存儲在內(nèi)存中的可擴展的像素,其包括如顏色,阿爾法,深度,模板等的屬性。當在時域下執(zhí)行并行處理時,特殊的,每個GPU都負責產(chǎn)生完整的幀。在其他兩個域,即圖像和對象域,所有GPU并行操作以產(chǎn)生單幀。屏幕空間并行處理意味著每個GPU再現(xiàn)每幀的碎片子集,而對象并行處理意味著要輸入每幀的數(shù)據(jù),特別是,幾何數(shù)據(jù)(例如代表場景的多邊形集)在多重GPU之間進行分配。
三個域(時間,圖像和對象域)中的每一個都有優(yōu)點和缺點。每種規(guī)則的效力都是基于輸入數(shù)據(jù)的動態(tài)功能。此外,在許多例子中,單獨的規(guī)則總不會是較優(yōu)的。在這些例子中,兩者的結(jié)合甚至所有三種規(guī)則的結(jié)合可能得到最優(yōu)的結(jié)果。
本發(fā)明敘述了對三維數(shù)據(jù)并行處理系統(tǒng)的說明。本發(fā)明提供了一種新的對象并行處理,其包括在不同的GPU之間有效地分解數(shù)據(jù),以及將在不同的GPU上產(chǎn)生的許多幀組合成最終的準備再現(xiàn)的幀。
本發(fā)明提供了一種將所有三種并行模式動態(tài)地結(jié)合為統(tǒng)一框架以獲取最大載入平衡的方法。在每幀中,對可用GPU的設置可以重新配置,該配置基于其再現(xiàn)先前幀所需的時間,而瓶頸就是表現(xiàn)在對這些幀的處理過程中。
圖9為本發(fā)明實施例的使用8個GPU的系統(tǒng)示例結(jié)構(gòu)圖。上述示例結(jié)構(gòu)中假設采用穩(wěn)定的圖形應用軟件。在時間分割并行中GPU被分為兩組。標號為1、2、3和4的GPU設定為處理偶數(shù)幀,標號為5、6、7和8的GPU設定為處理奇數(shù)幀。在每組中,各有兩個子組被設置為圖像分割處理標號較低的GPU(分別為1、2和5、6)配置為處理一半的屏幕,而高標號的GPU(分別為3、4和7、8)則設定為處理另外一半屏幕。最后,對于對象分割處理,對標號為1、3、5和7的GPU供應一半的對象,而對標號為2、4、6和8的GPU供應另一半的對象。
如果在某些時刻,系統(tǒng)檢測到在先前的各幀的瓶頸在管道的光柵階段發(fā)生,這意味著在再現(xiàn)幀的時間上,對碎片的處理占據(jù)了支配地位,并且配置失去了平衡。這時GPU被重新配置,以便每個GPU在各自的幀中再現(xiàn)四分之一的屏幕。原有的在GPU1、2、3、4和GPU5、6、7、8之間的用于時間分割處理的部分依然保留,但是GPU2和GPU5分別設定為在偶數(shù)幀和奇數(shù)幀中再現(xiàn)首個四分之一的屏幕。GPU1和GPU6-第二個四分之一,GPU4和GPU7-第三個四分之一,以及GPU3和GPU8-第四個四分之一。不包括對象分割處理。
此外,如果在某些時候系統(tǒng)檢測到在先前的各幀的瓶頸在管道的幾何階段發(fā)生,則GPU被重新配置,以便每個GPU在各自的幀中處理四分之一的幾何數(shù)據(jù)。即,GPU3和GPU5分別設定為在偶數(shù)幀和奇數(shù)幀中處理多邊形的首個四分之一。GPU1和GPU7-第二個四分之一,GPU4和GPU6-第三個四分之一,GPU2和GPU8-第四個四分之一。不包括圖像分割處理。
需要注意的是,使用8個GPU足以組合所有的三種并行模式,即各幀的時間分割,圖像分割和對象分割模式。采用大于8個的GPU也可以組合所有的3種模式,但是結(jié)構(gòu)就不對稱了。時間分割循環(huán)中的幀的數(shù)量也有很大的靈活性。在上述例子中,8個GPU的群被分解為兩個組,每個組處理一個幀。但是,在時間分割模式中的序列中增大幀的數(shù)目也是可行的,即大于2幀,例如3或4幀。
采用更少數(shù)目的GPU仍然可以實現(xiàn)對并行模式的結(jié)合,但是就只能結(jié)合兩種模式。例如,僅采用4個GPU可以結(jié)合圖像分割和對象分割模式,沒有了時間分割模式。從圖9可以清楚地理解到,當采用左邊的群GPU1、GPU2、GPU3和GPU4時,或類似地,采用上邊的群GPU1、GPU2、GPU5和GPU6時,可使用對象分割和時間分割模式。最后,采用中間的群GPU2、GPU4、GPU5和6這一組的結(jié)構(gòu)可使用圖像分割和時間分割模式。
需要注意的是,類似于上述實施例,各并行模式間任何的組合可預定為對圖形載入均勻地平衡。
需要注意的另一點是,為了每幀的處理性能最優(yōu)化,本發(fā)明的所有GPU之間的并行處理可以基于對象分割模式或者圖像分割模式或者時間分割模式或者它們的任何組合。
雖然本發(fā)明的一些實施例已通過圖示的方式得到描述,但顯然,在不背離本發(fā)明的精神或者在不超出權(quán)利要求書所限定的范圍的前提下,對于本領域的技術(shù)人員來說,本發(fā)明在實際應用中可以進行許多修改,變化和改裝,以及可使用許多等同的或者他擇性的技術(shù)方案。
權(quán)利要求
1.一種用于改善圖像處理的并行性的系統(tǒng),其使用一個或多個并行模式,其中所述圖像通過一個或多個圖形處理單元(GPU)顯示在至少一個計算機屏幕上,該系統(tǒng)包括a.一個或多個應用軟件,其用于發(fā)出圖形命令;b.一個或多個圖形庫,其用于存儲用來執(zhí)行圖形命令的數(shù)據(jù);c.一個或多個軟件集線器驅(qū)動,其用于控制硬件集線器,使得計算機操作系統(tǒng)和圖形庫相互作用,以及用于對將生成圖像幀的數(shù)據(jù)流進行實時分析,用于確定各個GPU的并行模式,以及用于將數(shù)據(jù)流或其部分轉(zhuǎn)送到各個GPU;d.一個或多個GPU驅(qū)動,其用于使得GPU與圖形庫相互作用;及e.至少一個I/O模塊,其用于軟件模塊和硬件集線器之間的相互連接,其中,所述硬件集線器將對于各幀的根據(jù)圖形命令以及數(shù)據(jù)流或其部分在圖像中的相對復雜性在GPU之間分配圖形命令以及數(shù)據(jù)流或其部分,所述復雜性由所述軟件集線器驅(qū)動定義;以及使用獲取自至少一個GPU的輸出合成用于顯示的圖形輸出,同時在任何需要的時候,可對于所述各幀的并行模式進行交替。
2.如權(quán)利要求1所述的系統(tǒng),其中所述并行性基于對象分割模式、圖像分割模式、時間分割模式或者它們的任意組合。
3.如權(quán)利要求1所述的系統(tǒng),其中所述硬件集線器包含至少一個合成單元,其至少用于從數(shù)據(jù)流的已處理的部分合成出完整的幀。
4.如權(quán)利要求2所述的系統(tǒng),其中所述硬件集線器包含至少一個集線器路由器,其用于在對象分割、圖像分割、時間分割或者它們的任意組合的模式中運行的同時,發(fā)送多邊形數(shù)據(jù)、圖形命令流、像素數(shù)據(jù)以及合成結(jié)果。
5.如權(quán)利要求1所述的系統(tǒng),其中所述硬件集線器包含至少一個控制單元,其用于在I/O模塊中接收來自軟件集線器驅(qū)動的命令。
6.如權(quán)利要求1所述的系統(tǒng),其中所述硬件集線器包含內(nèi)存單元,其用于存儲一個或多個GPU的中間處理結(jié)果和用于合成所需的數(shù)據(jù),并傳送該已處理數(shù)據(jù)以便進行顯示。
7.如權(quán)利要求1所述的系統(tǒng),其中所述軟件集線器驅(qū)動能夠執(zhí)行以下操作a.通過OS界面及其應用截取來自標準圖形庫的圖形命令;b.通過OS界面及其應用轉(zhuǎn)送和創(chuàng)建圖形命令給GPU驅(qū)動;c.通過OS界面及其應用控制硬件集線器、注冊以及安裝操作;d.基于輸入圖形命令流,保持經(jīng)過GPU的圖形機狀態(tài)的一致性,同時使用狀態(tài)監(jiān)視;e.使用應用和圖形資源分析,估計在執(zhí)行的應用程序圖形背景中圖形載入及超載的類型;f.基于圖形命令流和時間尺度的GPU載入平衡的載入估計,同時使用應用和圖形資源分析;g.根據(jù)從各個GPU接收到的有關載入平衡的反饋,調(diào)整GPU間的載入分配,同時使用應用和圖形資源分析;h.根據(jù)當前的并行模式執(zhí)行圖形功能中的操作;以及i.控制分配的圖形功能,并根據(jù)當前的并行模式更改圖形命令和數(shù)據(jù)流。
8.一種用于改善圖像處理的并行性的方法,其使用一個或多個并行模式,其中圖像通過一個或多個圖形處理單元顯示在至少一個計算機屏幕上,該方法至少包括a.提供一個或多個應用軟件,用于發(fā)出圖形命令;b.提供一個或多個圖形庫,用于存儲用來執(zhí)行所述圖形命令的數(shù)據(jù);c.提供一個或多個軟件集線器驅(qū)動,用于控制硬件集線器,用于使得所述計算機操作系統(tǒng)和所述圖形庫相互作用,以及用于對將生成所述圖像幀的數(shù)據(jù)流進行實時分析,用于確定各個GPU的并行模式,以及用于將所述數(shù)據(jù)流或其部分轉(zhuǎn)送到各個GPU;d.提供一個或多個GPU驅(qū)動,用于使得所述GPU與所述圖形庫相互作用;e.提供至少一個I/O模塊,用于所述軟件模塊和所述硬件集線器之間的相互連接;f.對于各幀,根據(jù)圖形命令和所述數(shù)據(jù)流或其部分在所述圖像中相對的復雜性通過所述硬件集線器在所述GPU之間分配圖形命令和所述數(shù)據(jù)流或其部分,該復雜性由所述軟件集線器驅(qū)動進行定義;并使用獲取自至少一個GPU的輸出合成用于顯示的圖形輸出,同時在任何需要的時候,可對于所述各幀交替所述并行模式。
9.如權(quán)利要求8所述的方法,其中并行模式為對象分割并行模式,并執(zhí)行下述步驟a.對于各幀,生成圖形操作和多邊形數(shù)據(jù)流;b.由軟件集線器驅(qū)動標記所述多邊形數(shù)據(jù)和圖形命令,用于在多個GPU之間進行分配;c.將已標記的數(shù)據(jù)發(fā)送到硬件集線器;d.通過集線器路由器將所述已標記的數(shù)據(jù)分配到所述多個GPU;e.由GPU再現(xiàn)數(shù)據(jù);f.從所述幀緩沖區(qū)中取出數(shù)據(jù)并將取出的數(shù)據(jù)經(jīng)過集線器路由器轉(zhuǎn)送到合成單元;g.將所述幀緩沖區(qū)中的內(nèi)容合成到單幀緩沖區(qū);以及h.將所述單幀緩沖區(qū)中的內(nèi)容轉(zhuǎn)送到至少一個指定的GPU用于顯示。
10.如權(quán)利要求8所述的方法,其中并行模式為圖像分割并行模式,并執(zhí)行下述步驟a.由所述軟件集線器驅(qū)動將屏幕細分為多個部分并將不同的視口分配給GPU;b.將全部多邊形數(shù)據(jù)和圖形命令移到所述集線器路由器;c.將所述全部多邊形數(shù)據(jù)和圖形命令發(fā)送到GPU,其中各個GPU接收相同的數(shù)據(jù);d.由GPU再現(xiàn)數(shù)據(jù);e.將存儲在所述幀緩沖區(qū)中的內(nèi)容的部分轉(zhuǎn)送到硬件集線器的合成單元中,用于創(chuàng)建完整的圖像;以及f.將圖像轉(zhuǎn)送到至少一個指定的GPU用于顯示。
11.如權(quán)利要求8所述的方法,其中并行模式為時間分割并行模式時,并執(zhí)行下述步驟a.將用于再現(xiàn)的全部多邊形發(fā)送到多個GPU中的每一個;b.由軟件集線器驅(qū)動將全部多邊形數(shù)據(jù)和圖形命令再次送到所有的GPU,并在它們之間進行交替;c.通過GPU再現(xiàn)數(shù)據(jù);d.經(jīng)集線器路由器將來自至少一個GPU的再現(xiàn)數(shù)據(jù)進行轉(zhuǎn)移;以及e.將幀緩沖區(qū)中作為結(jié)果的內(nèi)容經(jīng)集線器路由器再次送到至少一個指定的GPU用于顯示。
12.如權(quán)利要求8所述的方法,其中在多個GPU之間進行多邊形的分配是通過a.在多個GPU之間分配數(shù)據(jù)塊;b.對于塊模式測試各個圖形操作,其中一種或多種并行模式被完成;c.將所述規(guī)則的非塊化路徑中的數(shù)據(jù)轉(zhuǎn)送到至少一個指定的GPU;d.重復步驟(b)和(c)直到檢測到塊操作;e.通過下列次序?qū)PU進行同步e.1.為了在各個GPU中終止再現(xiàn)并清除內(nèi)部管線,執(zhí)行清洗操作;e.2.執(zhí)行合成操作以將幀緩沖區(qū)中的內(nèi)容合并到單幀緩沖區(qū)中;e.3.將單幀緩沖區(qū)傳送至所有的GPU;f.在檢測到交換操作的任何時候,在所有的GPU終止所合成的完整的幀,除了一個或多個指定的GPU,并通過所述一個或多個指定的GPU顯示所述圖像;g.只要塊模式還在運行且未檢測到交換操作,則通過所有GPU處理相同的數(shù)據(jù);h.在塊模式停止運行的任何時候,通過多個GPU繼續(xù)進行指定的數(shù)據(jù)的處理。
13.如權(quán)利要求8所述的方法,其中所述并行性基于對象分割、圖像分割、時間分割模式或者它們的任意組合。
全文摘要
一種用于改善圖像處理并行性的方法和系統(tǒng),其使用一個或多個并行模式,其中圖像通過一個或多個圖形處理單元(GPUs)(130)顯示在至少一個計算機屏幕上。提供應用軟件(120)用于發(fā)出圖形命令,提供圖形庫(122)用于存儲用來執(zhí)行圖形命令的數(shù)據(jù)。提供軟件集線器驅(qū)動(123)用于控制硬件集線器(110),用于對將生成圖像幀的數(shù)據(jù)流進行實時分析,用于確定各個GPU的并行模式,以及用于將數(shù)據(jù)流或其部分轉(zhuǎn)送到各個GPU,提供GPU驅(qū)動(124)用于使得GPU與圖形庫相互作用,并提供I/O模塊(160)用于軟件模塊和硬件集線器之間的相互連接。
文檔編號G06T15/00GK1890660SQ200480034307
公開日2007年1月3日 申請日期2004年11月19日 優(yōu)先權(quán)日2003年11月19日
發(fā)明者魯文·巴卡拉西, 奧菲爾·列梅茲, 吉格·巴奧, 埃菲·福格爾, 阿米爾·沙哈姆 申請人:路西德信息技術(shù)有限公司