專利名稱:執(zhí)行并行著色操作的制作方法
執(zhí)行并行著色操作
背景技術(shù):
本發(fā)明總體上涉及基于處理器的系統(tǒng),并更加具體地,涉及進(jìn)行圖形處理的基于 處理器的系統(tǒng)。在圖形處理中,可以操縱電子數(shù)據(jù)以呈現(xiàn)用于顯示在計算機(jī)顯示器上的圖 形圖像。剔除算法被用在計算機(jī)圖形學(xué)中以避免執(zhí)行不必要的工作。例如,可編程的剔除 消除了實際永遠(yuǎn)不會在最終的描繪中出現(xiàn)的圖形元素所需要的處理。被其它元素遮擋的圖 形元素永遠(yuǎn)不會出現(xiàn)在實際的最終描繪中,然而對那些元素的處理卻可能消耗處理帶寬并 對性能產(chǎn)生不利影響。對不在視錐體中的對象不需要進(jìn)行處理。類似地,對不顯示在圖形 描繪中的表面上的特征不需要進(jìn)行處理。剔除著色器針對多個元素(例如像素或頂點)而自動生成,并針對每組圖元而被 讀取一次以確定是否剔除一個組中的所有元素。例如,可以做出是否一次性剔除多個像素 的決定。在被稱為圖塊的像素組上執(zhí)行剔除測試,這樣如果一個圖塊被剔除,那么在該圖塊 中沒有像素需要被著色或者在該圖塊中的每個像素都可以執(zhí)行更短且更有效的著色器。為 了剔除面片(patch)內(nèi)部的多個點,對保守的界限或多點包圍進(jìn)行剔除測試。典型的剔除算法由于其需要額外的處理而導(dǎo)致一些開銷成本。因此,存在由于剔 除算法所造成的性能下降,即使如此,從凈出上看,當(dāng)剔除實際上消除了圖塊或頂點組時, 這些算法導(dǎo)致了性能的提升。
圖1為對根據(jù)本發(fā)明的一個實施例的可編程的圖形管線的概要性描繪;圖2為對根據(jù)本發(fā)明的一個實施例的雙核心處理器體系結(jié)構(gòu)的描繪;圖3為針對本發(fā)明的一個實施例的流程圖;以及圖4為針對一個實施例的系統(tǒng)描繪。
具體實施例方式在一些實施例中,圖形處理核心可以包括至少兩個或更多個管道(pipe)。根據(jù)一 些實施例,可以在一個管道上執(zhí)行較低頻率的操作(較不經(jīng)常發(fā)生的操作),而同時在另一 個管道上執(zhí)行同一個指令流中的較高頻率的操作。在一些情況下,較低頻率的操作的結(jié)果 可以被保持以供稍后在另一個管道上的較高頻率的操作中使用。在一些情況下可以提升效 率,在這些情況中有可能使用較低頻率管道中未被使用的時隙(slot)來執(zhí)行操作,這些操 作協(xié)助在較高頻率管道中執(zhí)行的操作。有可能存在許多這種并行性的例子。例如,較低頻率的操作可以是剔除著色器, 而較高頻率的操作可以是像素著色器。較低頻率的操作可以是固定功能剔除操作,例如視 錐體剔除操作或背面剔除操作,而較高頻率的操作可以是光柵化。再如另一個示例,較低 頻率的操作可以是幾何著色,而較高頻率的操作可以是像素著色。一般來說,在圖形管線 (pipeline)中的任何操作都可以并行地運行。如本文所使用的,并行運行的意思是,在圖形管線的至少兩個不同管道上的操作是同一個指令流的組成部分并且被同時執(zhí)行。
在一些情況下,圖形管線可以包括一個或多個管道,這些管道中的一個管道比其 它管道寬。例如,在一個實施例中,一個管道可以是16道寬而另一個管道可以是1道寬???以在較寬的管道上執(zhí)行較高頻率的操作而在較窄的管道上執(zhí)行較低頻率的操作。然而,可 以存在具有各種寬度的任何數(shù)量的管道。在下面的討論中給出了一個示例,在這個示例中, 在較低頻率管道中執(zhí)行剔除著色,而在較高頻率管道中執(zhí)行像素著色。這是一個極其具有 優(yōu)勢的實施例,因為它在當(dāng)通過使用較低頻率管道上的原本不被使用的時隙而使剔除著色 可以與像素著色同時被執(zhí)行時,可以實現(xiàn)只有很少或沒有開銷的剔除著色。然而,本發(fā)明并 不局限于此,并且可以應(yīng)用到任何數(shù)量的管道、任何多樣的管道寬度以及以不同頻率并行 執(zhí)行的各種操作中的任何操作。根據(jù)一些實施例,可以并行地執(zhí)行實際的頂點或像素著色器程序。在雙管線體系 結(jié)構(gòu)中,一條管線,被稱為U管線或U-管道,負(fù)責(zé)執(zhí)行主要指令,而第二條更受限制的管道, 被稱為V管線或V-管道,負(fù)責(zé)執(zhí)行標(biāo)量指令。標(biāo)量指令一次對單獨一個元素進(jìn)行操作。 U-管道對一次處理多個數(shù)據(jù)項的矢量操作進(jìn)行操作。在典型的圖形管線中,可編程的著色器階段可以是工作量的主導(dǎo)部分。由于工作 量的高吞吐量,這些著色器被編譯為運行在U-管道上的代碼,一次處理多個元素。需要一 些標(biāo)量指令來用來粘合這些矢量操作,但是存在未被利用的空時隙。這些空時隙可以被利 用以執(zhí)行針對下一個圖塊或繪圖調(diào)用的剔除著色器程序。“繪圖調(diào)用”是一個狀態(tài)集合以及一組幾何體,從而可以使用一個(或至少是很少 量的)應(yīng)用程序接口調(diào)用來將整個組和狀態(tài)經(jīng)由應(yīng)用程序接口送入圖形卡,節(jié)約了開銷。通過使用并行管線中的空閑或未被使用的指令時隙,不存在任何由剔除算法引起 的性能的下降,因為剔除程序在并行管線(例如V-管道)上的原本未被使用的指令時隙上 并行地執(zhí)行。如果在V-管道上沒有足夠的空閑指令,則可以將著色器循環(huán)“展開”以產(chǎn)生 長段的矢量代碼,直到有足夠的空閑時隙為止。可以按如下來解釋對循環(huán)的展開。如果存在循環(huán)for(i = 0;i < 4; i++){doSomething(i) ;},則循環(huán)展開將是 doSomething(0) ;doSomething(1); doSomething(2) ;doSomething (3)。有可能存在部分循環(huán)展開,其中循環(huán)中的一些操作被展 開為一系列連續(xù)的組分操作。參照圖1,完整的可編程管線10可以接收輸入數(shù)據(jù)12,輸入數(shù)據(jù)12被提供給頂點 著色器14、幾何著色器16和圖元建立18。在光柵化20之后是像素著色器22和幀緩沖器 混合對。參照圖2,圖形處理器核心30可以包括U-管道32和V-管道38。U-管道32與矢 量處理單元34以及算術(shù)邏輯單元36向耦合。矢量處理單元34耦合至16個圖形處理寄存 器乘以4個線程42以及32個矢量寄存器乘以4個線程40。V-管道38耦合至算術(shù)邏輯單元36以及32個矢量寄存器40以及16個圖形處理 寄存器42。U-管道32和V-管道38的輸入來自于指令高速緩存45,其供應(yīng)指令讀取與拾取 單元44。數(shù)據(jù)高速緩存47接收來自各種處理單元34和36的輸出并通過雙向總線提供數(shù)據(jù)至二級或L2高速緩存48。L2高速緩存48通過環(huán)形總線46與主存儲器相耦合。時鐘單 元49提供時鐘信號至數(shù)據(jù)高速緩存與L2高速緩存之間的總線以及L2高速緩存與環(huán)形總 線之間的總線。針對一組元素(例如圖塊或繪圖調(diào)用)的剔除著色器,可以在運行針對那些元素 的著色器之前被運行,因為剔除著色器的目的在于避免運行針對不需要被著色的對象(例 如被遮擋的元素)的著色器。為了建立這種順序,當(dāng)真實的著色器正在處理當(dāng)前的一組元 素時,剔除著色器在將要被著色的下一組元素上運行剔除測試。因此,到真實的著色器開始 在U-管道上處理此下一組元素時,已經(jīng)可以從V-管道得到該著色器的組剔除測試的結(jié)果。將工作在較高級圖元上的標(biāo)量代碼與工作在較低級圖元上的矢量代碼交錯在一 起的概念完全地利用了可用的硬件。例如,幾何著色器與像素著色器也能夠使用并行操作。 幾何著色器工作在作為較高級圖元的三角形上,而像素著色器工作在作為較低級圖元的像 素上。從概念上講,當(dāng)像素著色器正工作在前一個三角形的像素上時,能夠基于下一個三角 形對幾何著色器進(jìn)行交錯。一般來講,高頻率的操作可以被映射到U-管道上的高吞吐量的部分上,而具有低 吞吐量的低頻率的操作可以在V-管道上操作。對代碼進(jìn)行交錯并且將操作的頻率映射到 矢量處理單元可以被一般化。如果機(jī)器已經(jīng)具有任意給定數(shù)量的管道,則能夠?qū)Υa進(jìn)行 交錯以使得以最少頻率執(zhí)行的代碼被映射到標(biāo)量代碼而以最多頻率執(zhí)行的代碼被映射到 最寬的矢量單元。工作量也可以從V-管道上的管線的固定功能組件(諸如交錯的固定功能剔除,例 如視錐體、背面等等)與U-管道上的光柵化(其是單指令、多數(shù)據(jù)(SIMD)指令)進(jìn)行組合。 將可編程的著色器與剔除著色器進(jìn)行交錯以及將固定功能的單指令、多數(shù)據(jù)操作與固定功 能剔除操作進(jìn)行交錯能夠使每個組合在該組合內(nèi)使用相同的編譯器??梢允褂脗鹘y(tǒng)的C++ 編譯器來編譯用于所有固定功能的編譯器的代碼,而可以使用著色器語言編譯器來編譯用 于著色器的代碼。由于編譯器是相同的,因此除了為幫助實現(xiàn)交錯而有可能需要的其它編 譯器優(yōu)化(諸如循環(huán)展開)之外,每個編譯器皆完全地控制如何最佳地對標(biāo)量代碼與矢量 代碼進(jìn)行交錯。在一些實施例中,由于剔除著色器可以與頂點著色或像素著色并行地執(zhí)行而導(dǎo)致 剔除算法可能成本極低。為了得到足夠的空閑時隙,有可能需要將循環(huán)在繪圖調(diào)用中的頂 點上展開。即使有可能難以收集足夠的圖塊或繪圖調(diào)用以在U-管道上執(zhí)行剔除著色器, 也有可能存在剔除著色器與像素著色器之間的一對一的關(guān)系,從而使得當(dāng)使用矢量指令在 U-管道上執(zhí)行像素著色器時,在像素的圖塊上使用標(biāo)量執(zhí)行剔除著色器。這樣可以簡化一 些實施例中的光柵化和剔除代碼。類似地,當(dāng)U-管道在繪圖調(diào)用中的頂點上進(jìn)行循環(huán)并估計出一次針對16個頂點 的頂點著色器時,U-管道能夠針對下一次繪圖調(diào)用而在V-管道上的空閑指令時隙中計算 出包圍盒(bounding box)。因此,參照圖3,并行剔除與著色序列50具有第一并行路徑52,其為V-管道路徑 及剔除著色器56。第二并行路徑M包括像素著色器及U-管道58。剔除著色器或V-管道 路徑處理下一個圖塊n+1、圖塊η以及圖塊η-1等等。U-管道路徑滯后一個圖塊,在圖塊η、 η-1和η-2上進(jìn)行操作。
因此,在一個實施例中,當(dāng)U-管道實際上正在通過使用矢量指令進(jìn)行著色時, V-管道正在通過使用標(biāo)量管道進(jìn)行剔除。由于V-管道的操作正在使用原本未被使用的時 隙,因此即使當(dāng)不能進(jìn)行任何剔除時,也不會遭受性能的下降。計算機(jī)系統(tǒng)130,如圖4所示,可以包括硬盤驅(qū)動器134和可移除介質(zhì)136,它們通 過總線124與芯片組核心邏輯110相耦合。核心邏輯可以通過總線105與圖形處理器112 相耦合,并在一個實施例中與主或主機(jī)處理器122相耦合。圖形處理器112還可以通過總 線126與幀緩沖器114相耦合。幀緩沖器114可以通過總線107與顯示屏幕118相耦合, 顯示屏幕118又通過總線1 與傳統(tǒng)組件,例如鍵盤或鼠標(biāo)120相耦合。在軟件實現(xiàn)的情況下,相關(guān)的代碼可以被存儲在任何合適的半導(dǎo)體存儲器、磁性 存儲器或光學(xué)存儲器中,包括主存儲器132。因此,在一個實施例中,代碼139(其執(zhí)行圖3 的序列),可以被存儲在機(jī)器或計算機(jī)可讀介質(zhì)中,例如存儲器132,以由處理器(例如處理 器122或圖形處理器11 所執(zhí)行。在一個實施例中,核心30是圖形處理器112的一部分??梢栽诟鞣N硬件體系結(jié)構(gòu)中實現(xiàn)本文所描述的圖形處理技術(shù)。例如,圖形功能可 以集成在芯片組內(nèi)部??蛇x擇地,可以使用分立的圖形處理器。再如另一個實施例,可以通 過通用處理器(包括多核處理器)來實現(xiàn)圖形功能。貫穿整個說明書的對“ 一個實施例,,或“實施例”的引用的意思是結(jié)合該實施例 而描述的特定的特征、結(jié)構(gòu)或特性被包括在了至少一個包含在本發(fā)明內(nèi)的實現(xiàn)方式中。因 此,本說明書中出現(xiàn)的用語“一個實施例”或“實施例”不一定指代同一實施例。此外,這些 特定的特征、結(jié)構(gòu)或特性可以以除所圖示說明的特定的實施例外的其它合適的形式實現(xiàn), 并且所有這些形式皆可以被包括在本申請的權(quán)利要求內(nèi)。盡管已經(jīng)參照數(shù)量有限的實施例描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將從中意識 到許多修改和變型。所附權(quán)利要求書意圖涵蓋落入本發(fā)明的實質(zhì)精神和范圍內(nèi)的所有這種 修改和變型。
權(quán)利要求
1.一種方法,包括在圖形管線的第一管道上執(zhí)行第一操作;與所述第一操作同時地,在圖形管線的第二管道上執(zhí)行第二操作,所述第一操作和第 二操作是同一指令流的組成部分,并且所述第一操作以低于所述第二操作的頻率來執(zhí)行。
2.根據(jù)權(quán)利要求1所述的方法,包括執(zhí)行剔除著色器作為所述第一操作。
3.根據(jù)權(quán)利要求2所述的方法,包括執(zhí)行像素著色器作為所述第二操作。
4.根據(jù)權(quán)利要求1所述的方法,包括執(zhí)行幾何著色器作為所述第一操作,以及執(zhí)行像 素著色器作為所述第二操作。
5.根據(jù)權(quán)利要求1所述的方法,包括執(zhí)行固定功能剔除作為所述第一操作,以及執(zhí)行 光柵化作為所述第二操作。
6.根據(jù)權(quán)利要求1所述的方法,包括對較低頻率的操作使用未被使用的時隙來進(jìn)行 對所述第一操作的所述執(zhí)行,所述第一操作為所述第二操作提供數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的方法,其中,所述第一操作是剔除操作,所述第二操作是著色 操作。
8.根據(jù)權(quán)利要求6所述的方法,包括通過對循環(huán)進(jìn)行展開來找到未被使用的時隙。
9.根據(jù)權(quán)利要求1所述的方法,包括在所述第二操作在一圖塊上運行之前,在所述圖 塊上執(zhí)行所述第一操作。
10.根據(jù)權(quán)利要求1所述的方法,其中,所述第一操作是標(biāo)量操作,并且所述第二操作是矢量操作。
11.一種計算機(jī)可讀介質(zhì),其存儲了指令,所述指令由處理器所執(zhí)行以用于 在圖形管線上并行地運行兩個不同頻率的操作;以及將一個操作的結(jié)果用于另一個操作中。
12.根據(jù)權(quán)利要求11所述的介質(zhì),還存儲用于以下的指令執(zhí)行剔除著色器作為所述 操作中的一個操作,以及執(zhí)行像素著色器作為所述操作中的另一個操作。
13.根據(jù)權(quán)利要求11所述的介質(zhì),還存儲用于以下的指令執(zhí)行幾何著色器作為所述 操作中的一個操作,以及執(zhí)行像素著色器作為所述操作中的另一個操作。
14.根據(jù)權(quán)利要求11所述的介質(zhì),還存儲用于以下的指令執(zhí)行固定功能剔除作為一 個操作,以及執(zhí)行光柵化作為另一個操作。
15.根據(jù)權(quán)利要求11所述的介質(zhì),還存儲用于以下的指令通過對循環(huán)進(jìn)行展開來找 到未被使用的時隙。
16.一種裝置,包括第一圖形處理管道,其執(zhí)行第一操作;第二圖形管道,其以與所述第一操作的頻率不同的頻率執(zhí)行第二操作,所述第一操作 和第二操作是同一指令流的組成部分,并且所述第一操作以低于所述第二操作的頻率來執(zhí) 行。
17.根據(jù)權(quán)利要求16所述的裝置,其中,所述第一操作是剔除著色器,并且所述第二操作是像素著色器。
18.根據(jù)權(quán)利要求16所述的裝置,其中,所述第一操作是幾何著色器,并且所述第二操作是像素著色器。
19.根據(jù)權(quán)利要求16所述的裝置,在所述第二操作在一圖塊上執(zhí)行之前,所述第一管 線在所述圖塊上執(zhí)行。
20.根據(jù)權(quán)利要求比所述的裝置,其中,所述第一管道是標(biāo)量管道,并且所述第二管道是矢量管道。
全文摘要
圖形處理管線可以包括至少兩個或更多個管道,以使得可以在一個管道上執(zhí)行較低頻率的操作而同時在另一個管道上執(zhí)行同一個指令流內(nèi)的較高頻率的操作。在一些情況下,較低頻率的操作的結(jié)果可以被保持以供稍后結(jié)合在一不同管道上執(zhí)行的較高頻率的操作來使用。特別是,當(dāng)未被使用的時隙可以被用于此較低頻率的操作時,可以提高效率。
文檔編號G06T1/20GK102054265SQ201010535140
公開日2011年5月11日 申請日期2010年11月3日 優(yōu)先權(quán)日2009年11月4日
發(fā)明者R·P·薩特, T·G·阿克寧-穆勒 申請人:英特爾公司