專利名稱:繪圖處理裝置及其方法
技術領域:
本發(fā)明涉及一種繪圖處理,特別是涉及處理單元的一分享集區(qū)中,平衡多重著色器層的加載系統(tǒng)及方法。
背景技術:
眾所周知,三維(“3-D”)計算機圖形的技術是有關3-D對象的二維(“2-D”)影像的產(chǎn)生或繪制,以顯示或呈現(xiàn)于一顯示裝置或屏幕上,例如一陰極射線管(CRT)或一液晶顯示器(LCD)。該對象可為一簡單幾何像素,例如一個點、一線段、一三角形或一多角形。更復雜的對象則可以通過一系列的相連平面多角形繪制于一顯示裝置上,舉例來說,例如通過一系列的相連平面三角形以呈現(xiàn)該對象。所有幾何像素最后可根據(jù)一頂點或一組頂點被描述,例如坐標(X,Y,Z)定義一個點,例如一線段的終點,或一多角形的一角。
為產(chǎn)生一數(shù)據(jù)集以顯示如一3-D像素的2-D投影代表于一計算機屏幕或其它顯示裝置上,該像素的頂點是通過一系列的操作、或一圖形繪制管線內的處理層而處理的。一同屬管線僅僅是一系列串接處理單元、或階層,其中前一層的輸出作為一隨后層的輸入。一繪圖處理器的內容中,這些階層包括,例如每一頂點操作、像素組合操作、像素操作、紋理操作、光柵化操作、及片段操作。
于一現(xiàn)有的圖形顯示系統(tǒng)中,一影像數(shù)據(jù)庫(如一命令列)可儲存一場景中對象的一描述。該對象以一些小多角形描述,與覆蓋對象表面類似,能以一些小磚瓦覆蓋一道墻或其它表面。每一多角形被描述以一頂點坐標(X,Y,Z于模型坐標系統(tǒng)中)列、一些材料面特性(即顏色、紋理、光澤度等等)的規(guī)格、及于每一頂點上至該表面的垂直向量。對具復雜曲線面的3-D對象而言,一般該多角形為三角形或四角形,而之后便能被分解為一對三角形。
一變換引擎變換該對象坐標以反應來自于使用者輸入由一使用者所選擇的觀測角度。該使用者另外可指定觀測范圍、欲產(chǎn)生影像的尺寸、及觀測容量的后端以依照要求包含或消除背景。
一旦觀測區(qū)域被選定,剪輯邏輯電路便消除該觀測區(qū)域外的多角形(即三角形),以及“剪輯”部分于觀測區(qū)域內而部分于觀測區(qū)域外的多角形。這些被剪輯的多角形將與于觀測區(qū)域內的部份多角形一致,具有符合觀測區(qū)域邊緣的新邊緣。該多角形頂點接著被傳送至下一層于對應于該觀測屏幕(于X,Y坐標)及每一頂點(Z坐標)相關深度的坐標中。于一典型系統(tǒng)中,其次應用該明暗模型以考慮光源。接著該多角形及其顏色值被傳送至一光柵處理器。
該光柵處理器決定位于每一多角形中的像素,并且試著寫入相關的顏色值及深度(Z值)至顯示緩沖存儲器。該光柵處理器比較該深度(Z值)與多角形中已經(jīng)處理過并可能已經(jīng)被寫入該顯示緩沖存儲器的像素深度。當新多角形像素的深度較小時,表示它在已被寫入該顯示緩沖存儲器的多角形前面,接著以此值取代該顯示緩沖存儲器中的值,因為該新多角形將會遮掩之前被處理及寫入該顯示緩沖存儲器的多角形。重復該步驟直至所有多角形均被光柵化。此時,一視頻控制器以光柵次序,每次一掃瞄線顯示一顯示緩沖存儲器的內容于一顯示器上。
與現(xiàn)有技術一致,現(xiàn)在請參考圖1,圖1顯示于一計算機圖形系統(tǒng)中,一繪圖管線內的特定組件的功能流程圖。一繪圖管線內的組件可于不同系統(tǒng)中變化,并且可以各種方式說明。如一般所知,一主機計算機10(或于一主機計算機上執(zhí)行的一圖形應用程序接口)可通過一命令流處理器12產(chǎn)生一命令列。該命令列包括一系列的圖形命令及數(shù)據(jù),以繪制一圖形顯示器上的一“環(huán)境”。該繪圖管線內的組件可操作數(shù)據(jù)及命令于一命令列內,以繪制一屏幕于一圖形顯示器上。
在此方面,一剖析器14可接收來自該命令流處理器12的命令、通過數(shù)據(jù)剖析以解譯命令、及傳遞定義圖形像素的數(shù)據(jù)沿(或到)該繪圖管線。在這方面,圖形像素可以位置數(shù)據(jù)(例如X,Y,Z,及W坐標)、明暗、及紋理信息定義。每一像素的所有訊息可通過來自該命令流處理器12的該剖析器14被檢索,以及被傳遞至一頂點著色器16。該頂點著色器16可執(zhí)行不同的轉換于從該命令列所接收的圖形數(shù)據(jù)上。就此而言,該數(shù)據(jù)可從世界坐標被轉換至模型視景坐標(Model View coordinates)、投影坐標(Projection coordinates)、及最后至屏幕坐標(Screen coordinates)。由于該頂點著色器16所執(zhí)行的函數(shù)處理已為本領域的技術人員所熟知,因此不需進一步描述。之后,該圖形數(shù)據(jù)可被傳遞至該光柵處理器18上,如上述總結操作的。
之后,執(zhí)行Z測試20于像素中的每一像素。于對應像素位置比較一目前Z值(即目前像素的一特定像素的Z值)與一存儲Z值以執(zhí)行一Z測試。于一特定像素位置,該存儲Z值提供一先前已繪制圖元深度值。當該目前Z值所指示的深度,比起該存儲Z值,更接近觀察角度時,則該目前Z值將取代該存儲Z值,然后目前圖形信息(即顏色)將取代對應的顯示緩沖存儲器像素位置(依該像素著色器22所決定)中的顏色信息。當比起該存儲Z值,該目前Z值并沒有更接近目前視角時,則該顯示緩沖存儲器及Z緩沖存儲器內容均不需被取代,因為之前被繪制的一像素將被視為在目前的像素前面。比起的前存儲像素,更接近視角的被繪制及決定的像素像素,其相關于該像素的信息被傳遞至該像素著色器22上,然后于較接近目前視角的像素像素內,決定每一像素的顏色信息。
最佳化一繪圖管線的性能,可要求與管道低效能的來源有關的信息。于一管線中圖形數(shù)據(jù)的復雜度及大小暗示著管道低效能、延遲及瓶頸,會顯著影響管線的性能。在此方面,識別上述數(shù)據(jù)流或處理問題的來源是有幫助的。
發(fā)明內容
本發(fā)明披露于繪圖處理單元的一頂點著色器、一幾何著色器及一像素著色器中,管理或執(zhí)行資源的動態(tài)配置或重新配置的新方法與裝置。于一實施例中,一種用于繪圖處理的方法,包括將至少一執(zhí)行單元,分配至每一多個著色器單元,所述著色器單元包括一頂點著色器、一幾何著色器及一像素著色器,其中,將一執(zhí)行單元分配至一指定著色器單元,以針對該著色單元執(zhí)行處理任務;確定所述著色器單元其中之一為瓶頸;以及將至少一執(zhí)行單元,從一非瓶頸著色器單元重新分配至被確定為瓶頸的著色器單元。
本發(fā)明提供一種繪圖處理方法,包括將至少一執(zhí)行單元,分配至每一多個著色器單元,所述著色器單元包括一頂點著色器、一幾何著色器及一像素著色器,其中,將一執(zhí)行單元分配至一特定著色器單元,以針對該特定著色單元執(zhí)行處理任務;確定所述著色器單元其中之一為瓶頸;以及將至少一執(zhí)行單元,從一非瓶頸的著色器單元,重新分配至被確定為瓶頸的著色器單元。
本發(fā)明提供一種繪圖處理裝置,包括多個執(zhí)行單元;及邏輯電路,被配置以個別分配該執(zhí)行單元,以執(zhí)行通過一頂點著色器、一幾何著色器、或一像素著色器其中之一所要求的處理任務,其中一旦一特定執(zhí)行單元被分配至該頂點著色器、幾何著色器、或像素著色器其中之一時,保持分配至那著色器直到重新配置為止,該邏輯電路還進一步被配置,根據(jù)共同執(zhí)行頂點著色任務的執(zhí)行單元的一相關工作量、共同執(zhí)行幾何著色任務的執(zhí)行單元的一相關工作量、及共同執(zhí)行像素著色任務的執(zhí)行單元的一相關工作量,以將執(zhí)行單元個別重新分配。
本發(fā)明提供一種用于計算繪圖操作的方法,包括從每一頂點著色器、幾何著色器及像素著色器之中,于時間內接受多個計算要求;將上述個別的計算要求,分配至個別的多執(zhí)行單元;及于時間內比較性的評估,共同被分配以執(zhí)行該頂點著色器計算要求的所有執(zhí)行單元效能、共同被分配以執(zhí)行該幾何著色器計算要求的所有執(zhí)行單元效能、以及,共同被分配以執(zhí)行來自于該像素著色器計算要求的所有執(zhí)行單元效能。
本發(fā)明提供一種繪圖處理裝置,包括多個執(zhí)行單元;及一調度器,被配置以分配所述執(zhí)行單元,以執(zhí)行任務,該任務包括頂點著色操作、幾何著色操作、及像素著色操作,該調度器被配置于所述執(zhí)行單元中,根據(jù)要求像素著色操作的一像素著色器所輸出的像素比例,動態(tài)地重新分配該任務。
本發(fā)明提供一種用于繪圖處理的方法,包括將至少一執(zhí)行單元,分配至每一多個著色器單元,其中,將一執(zhí)行單元分配至一特定著色器單元,以針對該著色器單元執(zhí)行處理任務;確定所述著色器單元其中之一為瓶頸;以及將至少一執(zhí)行單元,從一非瓶頸的著色器單元,重新分配至被確定為瓶頸的著色器單元。
執(zhí)行單元集區(qū)中,執(zhí)行單元個別被調度,以執(zhí)行著色器相關計算,因此可于時間內調度一特定執(zhí)行單元,以針對不同著色器層執(zhí)行著色器操作。雖然現(xiàn)有的系統(tǒng)使用專用著色器應體,但此一動態(tài)及穩(wěn)健的執(zhí)行緒分配未被實施或體現(xiàn)。
藉由以下附圖及詳細描述,其它系統(tǒng)、裝置、方法、特征、及優(yōu)點于所屬技術領域中將顯而易見。這一類更多的系統(tǒng)、裝置、方法、特征、及優(yōu)點均包括于此描述內、均于目前本發(fā)明披露范圍之內、以及均受本發(fā)明的權利要求所保護。
圖1示出了現(xiàn)有的一固定功能圖形處理器的部份方塊圖;圖2示出了與本發(fā)明實施例一致的圖形處理器階層或部份方塊圖;圖3示出了與本發(fā)明實施例一致的圖形處理器的處理器環(huán)境部份方塊圖;圖4示出了圖形處理器的計算核心的組件方塊圖;圖5示出了與本發(fā)明實施例一致的執(zhí)行單元集區(qū)及調度器方塊圖;圖6示出了與本發(fā)明某些實施例一致的調度器的部份方塊圖;圖7A、7B、7C、7D共同顯示依據(jù)本發(fā)明其它實施例的高階操作流程圖;圖8A、8B、8C、8D共同顯示依據(jù)本發(fā)明其它實施例的高階操作流程圖;圖9示出了依據(jù)本發(fā)明另一實施例的高階功能操作流程圖;圖10示出了高階功能操作方法的流程圖,用以確定任一著色器層是否為瓶頸;圖11示出了依據(jù)本發(fā)明實施例的一執(zhí)行單元中部份單元方塊圖;圖12及13示出了本發(fā)明實施例的高階特征圖。
附圖符號說明105~計算核心;110~紋理過濾單元;115像素包裝器;120~命令流處理器;125~集區(qū)控制單元;130~回寫單元;135~紋理地址產(chǎn)生器; 140~三角形設置單元。
具體實施例方式
以下將列舉實施例,并結合附圖示詳細說明。與附圖有關的實施例敘述,并非用以限定本發(fā)明至該實施例或披露的實施例。相反地,是用以包括所有選擇、修改及等效設計。
現(xiàn)在參考圖2,圖2顯示本發(fā)明一實施例的部份組件方塊圖。圖2具體地顯示包括一管線繪圖處理器的主要組件,被配置以執(zhí)行或完成本發(fā)明的實施例。該第一組件被指定為一輸入組譯器52,基本上接收或讀取來自于存儲器的頂點,該頂點用于形成幾何圖形,并為管線產(chǎn)生工作項目。就此而言,該輸入組譯器52讀取來自于存儲器的數(shù)據(jù)并由那些數(shù)據(jù)產(chǎn)生三角形、線、點、或其它像素并引入管線。一旦組譯該幾何信息后,即傳送至該頂點著色器54。該頂點著色器54通過執(zhí)行操作,如轉換、掃描、及照明,以處理頂點。之后,該頂點著色器54將數(shù)據(jù)傳送至該幾何著色器56。該幾何著色器56接收頂點為輸入,并作為一完整像素,因此能夠輸出多個頂點以形成一單一拓撲(topology),例如一三角形串行、一線串行、點串行等。該幾何著色器56可被進一步配置以執(zhí)行各種算法,例如細分(tessellation)、陰影范圍(shadow volume)產(chǎn)生等。該幾何著色器56接著將信息輸出至一光柵處理器58,負責剪輯、像素設置、并決定何時和/或如何引動該像素著色器60。該像素著色器60,為每個由該光柵處理器輸出的像素所含蓋的像素而被引動。如大家所知,該像素著色器60執(zhí)行內插及其它操作,以共同地決定像素顏色并輸出至一顯示緩沖存儲器62。于圖2中,各組件的功能操作為本領域技術人員所熟知,因此不須于此贅述。于此將更進一步說明,本發(fā)明用以執(zhí)行動態(tài)調度為目的的系統(tǒng)及方法,及用以執(zhí)行關于該頂點著色器54、該幾何著色器56及該像素著色器60的操作及任務的分享處理的重復處理架構。因此,這些單元內的特定建置及操作不須于此敘述,以獲得及體會對與本發(fā)明的充分理解。
現(xiàn)在參考圖3,圖3顯示依據(jù)本發(fā)明實施例所建構的一繪圖處理器的示范處理器環(huán)境。盡管并沒有顯示繪圖處理所需的所有組件,但圖3所顯示的組件,足以使本領域的技術人員了解此繪圖處理器相關的一般功能及架構。該處理環(huán)境中心為一計算核心105,用以處理各種指令。該計算核心105為多議題處理器,能于一單一時序訊號周期之內處理多重指令。
如圖3所示,該繪圖處理器的相關組件包括該計算核心105、一紋理過濾單元110、一像素包裝器115、一命令流處理器120、一回寫單元130、及一紋理地址產(chǎn)生器135。于圖3中亦包括一執(zhí)行單元(EU)集區(qū)控制單元125,該單元并包括一頂點高速緩存和/或一流高速緩存。該計算核心105接收來自于各組件的輸入,然后輸出至其它組件。
舉例而言,如圖3所示,該紋理過濾單元110提供紋理像素數(shù)據(jù)至該計算核心105(輸入A及B)。于某些實施例中,所提供的該紋理像素數(shù)據(jù)為512位數(shù)據(jù),因此符合以下所定義的數(shù)據(jù)結構。
該像素包裝器115提供頂點著色器輸入至該計算核心105(輸入C及D),亦為512位數(shù)據(jù)格式。此外,該像素包裝器115向該執(zhí)行單元集區(qū)控制單元125要求像素著色器任務,該執(zhí)行單元集區(qū)控制單元125提供一指定執(zhí)行單元號碼及一執(zhí)行緒號碼至該像素包裝器115。由于像素包裝器及紋理過濾單元已經(jīng)為本領域的技術人員所知,因此省略這些組件的進一步討論。盡管圖3所顯示的像素及紋理像素包為512位數(shù)據(jù)包,須了解該包的大小隨實施例而改變,取決于該繪圖處理器所須的工作特性。
該命令流處理器120提供三角形頂點索引至該執(zhí)行單元集區(qū)控制單元125。于圖3的實施例中,該索引為256位。該執(zhí)行單元集區(qū)控制單元125組譯來自命令流高速緩存的頂點著色器輸入,并將數(shù)據(jù)傳送至該計算核心105(輸入E)。該執(zhí)行單元集區(qū)控制單元125亦組譯幾何著色器輸入,并將該輸入提供至該計算核心105(輸入F)。該執(zhí)行單元集區(qū)控制單元125亦控制該執(zhí)行單元輸入235及該執(zhí)行單元輸出220。換句話說,該執(zhí)行單元集區(qū)控制單元125控制至該計算核心105各自的流入及流出。
經(jīng)處理之后,該計算核心105提供像素著色器輸出(輸出J1及J2)至該回寫單元130。該像素著色器輸出包括紅/綠/藍/透明度alpha(RGBA)信息。于此披露實施例所提供的數(shù)據(jù)結構中,該像素著色器輸出可被提供為兩組512位數(shù)據(jù)流。其它位寬度亦可于其它實施例中實現(xiàn)。
類似于該像素著色器輸出,該計算核心105輸出包括UVRQ信息的紋理坐標(輸出K1及K2)至該紋理地址產(chǎn)生器135。該紋理地址產(chǎn)生器135發(fā)送一紋理要求(T#Req)至該計算核心105(輸入X),而該計算核心105輸出(輸出W)該紋理數(shù)據(jù)(T#data)至該紋理地址產(chǎn)生器135。由于該紋理地址產(chǎn)生器135及該回寫單元130的各種范例,已經(jīng)為本領域的技術人員所知,因此省略這些組件的進一步討論。再者,盡管所顯示的UVRQ及RGBA為512位,須了解此參數(shù)亦可隨其它實施例而改變。于圖3的實施例中,該總線被分為兩組512位信道,每組信道包含4點像素的128位RGBA顏色值及128位UVRQ紋理坐標。
該計算核心105及該執(zhí)行單元集區(qū)控制單元125亦可將512位的頂點高速緩存溢出數(shù)據(jù)傳送給彼此。此外,為更進一步處理,兩組5 12位頂點高速緩存寫入被說明為由該計算核心105(輸出M1及M2)到該執(zhí)行單元集區(qū)控制單元125的輸出。
在敘述對該計算核心105之外部數(shù)據(jù)交換后,將注意轉至圖4,圖4顯示該計算核心105的各種組件方塊圖。如圖4所示,該計算核心105包括通過一存儲器接口仲裁器245,以耦接一個二階(L2)高速緩存210的一存儲器存取單元205。
該L2高速緩存210接收來自于該執(zhí)行單元集區(qū)控制單元125(圖3)的頂點高速緩存溢出量(輸入G),并將頂點高速緩存溢出量(輸出H)提供至該執(zhí)行單元集區(qū)控制單元125(圖3)。此外,該L2高速緩存210接收來自于該紋理地址產(chǎn)生器135(圖3)的T#要求(輸入X),并將該T#數(shù)據(jù)(輸出W)提供至該紋理地址產(chǎn)生器135(圖3)以對應該接收的要求。
該存儲器接口仲裁器245提供一控制接口至該區(qū)域視訊存儲器(顯示緩沖存儲器)。雖然并未圖標,一總線接口單元(BIU),通過如一PCI高速總線,以提供一接口至該系統(tǒng)。該存儲器接口仲裁器245和總線接口單元提供了在該存儲器與一執(zhí)行單元(EU)集區(qū)L2高速緩存210之間的接口。于某些實施例中,該執(zhí)行單元集區(qū)L2高速緩存,通過該存儲器存取單元205,以連接至該存儲器接口仲裁器245及該總線接口單元。該存儲器存取單元205,將來自于該L2高速緩存210及其它區(qū)塊的虛擬存儲器地址,轉換至物理存儲器。
該存儲器接口仲裁器245,為該L2高速緩存210提供存儲器存取(如讀取/寫入存取)以讀取指令/常數(shù)/數(shù)據(jù)/紋理,及直接存儲器存取(如加載/儲存)以指示暫時存取、緩存器溢出量、頂點高速緩存內容溢出量等。
該計算核心105亦包括一執(zhí)行單元集區(qū)230,其包括多重執(zhí)行單元(EUs)240a、...、240h(于此統(tǒng)一稱為240),各自包括一執(zhí)行單元控制及區(qū)域存儲器(未圖標)。這些執(zhí)行單元240的每個各自能于單一時序訊號周期之內處理多重指令。因此,該執(zhí)行單元集區(qū)230,能于尖峰時同時處理大量多重執(zhí)行緒。這些執(zhí)行單元240以及其極大的并行處理能力將詳述于下。雖然圖4顯示8個執(zhí)行單元240,但須了解的是執(zhí)行單元的數(shù)目不必局限于8,于其它實施例中可為較大或較小的的數(shù)目。
該計算核心105,還包括一執(zhí)行單元輸入235及一執(zhí)行單元輸出220,各自被配置,以提供輸入至該執(zhí)行單元集區(qū)230,及接收來自于該執(zhí)行單元集區(qū)230的輸出。該執(zhí)行單元輸入235及該執(zhí)行單元輸出220可為交叉式總線(crossbar)、總線或其它現(xiàn)有輸入機制。
該執(zhí)行單元輸入235接收來自于該執(zhí)行單元集區(qū)控制單元125(圖3)的頂點著色器輸入(E)及幾何著色器輸入(F),并將信息提供至該執(zhí)行單元集區(qū)230,以經(jīng)由各個執(zhí)行單元240處理。此外,該執(zhí)行單元輸入235接收該像素著色器輸入(輸入C及D)及該紋理像素包(輸入A及B),并將那些包傳送至該執(zhí)行單元集區(qū)230以經(jīng)由各個執(zhí)行單元240處理。此外,該執(zhí)行單元輸入235接收來自于該L2高速緩存210的信息(L2 read),并于需要時將該信息提供至該執(zhí)行單元集區(qū)230。
于圖4的實施例中,該執(zhí)行單元輸出被分為一偶輸出225a及一奇輸出225b。類似于該執(zhí)行單元輸入235,該執(zhí)行單元輸出225可為交叉式總線、總線或其它已知架構。該執(zhí)行單元偶輸出225a處理來自于偶數(shù)執(zhí)行單元240a、240c、240e、240g的輸出,而該執(zhí)行單元奇輸出225b處理來自于奇數(shù)執(zhí)行單元240b、240d、240f、240h的輸出。此兩個執(zhí)行單元輸出225a及225b共同接收來自于該執(zhí)行單元集區(qū)230的輸出,例如UVRQ及RGBA。于那些輸出之中,可被指示以回到該L2高速緩存210,或通過J1及J2從該計算核心105輸出至該回寫單元130(圖1),或通過K1及K2輸出至該紋理地址產(chǎn)生器135(圖3)。
在利用本發(fā)明的實施例來說明并敘述基本架構組件后,將敘述某些附加及/或選擇性組件及實施例的操作方面。如上綜述,本發(fā)明的實施例披露可增進一繪圖處理器整體效能的系統(tǒng)及方法。就此而言,一繪圖處理器的整體效能,與通過該繪圖處理器的管線而處理的數(shù)據(jù)量成比例。如上所述,本發(fā)明的實施例利用一頂點著色器、幾何著色器、及像素著色器。該操作反而通過一執(zhí)行單元集區(qū)301、302、...、304及一相同指令組執(zhí)行,而非分別以不同設計及指令組的著色器單元來實現(xiàn)那些組件的功能。這些執(zhí)行單元于設計上完全相同,并且可以編程操作配置。于一較佳實施例中,每一執(zhí)行單元具有多重執(zhí)行緒操作的能力,且更具體地能同時管理64個執(zhí)行緒的操作。于其它實施例中,可實現(xiàn)不同數(shù)量的執(zhí)行緒。請參考圖5,圖5顯示依據(jù)本發(fā)明一實施例的執(zhí)行單元集區(qū)及調度器方塊圖。當通過一頂點著色器(vertexshader)320、幾何著色器(geometry shader)330、及像素著色器(pixel shader)340產(chǎn)生各種著色任務時,將分別被傳送至各自的執(zhí)行單元(經(jīng)由接口310及調度器300)以被執(zhí)行。
當個別任務產(chǎn)生時,該調度器300將那些任務分配至各種執(zhí)行單元中可用的執(zhí)行緒。當任務完成時,該調度器300更進一步管理相關執(zhí)行緒的釋放。通過該調度器300的部份完成此執(zhí)行緒執(zhí)行管理。就此而言,該調度器300的部份負責將頂點著色器、幾何著色器、及像素著色器的任務/執(zhí)行緒分配至各種執(zhí)行單元,且該部份亦執(zhí)行相關聯(lián)的“簿記”(bookkeeping)。該調度器具體地保有全部執(zhí)行單元的執(zhí)行緒及存儲器的一資源表(未具體圖示說明)。該調度器(scheduler)300明確地知道哪些執(zhí)行緒已經(jīng)被分配任務并且被占用、哪些執(zhí)行緒于執(zhí)行緒終止后已經(jīng)被釋放、多少一般暫存文件存儲器緩存器被占用、及每一執(zhí)行單元中有多少閑置空間是可利用的。
因此當一任務被分配至一執(zhí)行單元(如302)時,該調度器300將此任務標示為忙碌,并減去總共可用的一般暫存文件存儲器以使每一執(zhí)行緒相差適當?shù)臅捍嫖募擞洈?shù)量。該標記通過該頂點著色器、幾何著色器、及像素著色器的狀態(tài)設置或決定。每一著色器層還可具有不同的標記尺寸。舉例來說,一頂點著色器執(zhí)行緒可能要求10組一般暫存文件緩存器,而一像素著色器執(zhí)行緒可能只要求5組這樣的緩存器。
當一執(zhí)行緒完成被分配的任務時,執(zhí)行該執(zhí)行緒的執(zhí)行單元傳送一適當訊號至該調度器300。該調度器300將依次更新它的資源表以標示該執(zhí)行緒為閑置,并將總共執(zhí)行緒的一般暫存文件空間加回該可用空間。當所有執(zhí)行緒為忙碌或全部一般暫存文件存儲器均已被配置(或剩余過少暫存空間而無法容納一額外執(zhí)行緒),于是該執(zhí)行單元被認為已滿,該調度器300將不再分配任何額外或新執(zhí)行緒至那執(zhí)行單元。
亦提供一執(zhí)行緒控制器(thread controller)(未具體說明)于每一執(zhí)行單元之內,而此執(zhí)行緒控制器負責管理或標示每一執(zhí)行緒為有效(如執(zhí)行中)或為可用。多重執(zhí)行緒執(zhí)行裝置及多重執(zhí)行緒執(zhí)行的管理已為人所知,因此不須于此進一步描述關于個別執(zhí)行單元的執(zhí)行緒執(zhí)行管理。
該調度器300可被配置以進行二階的調度,一第一階或低階調度及一第二階或高階調度。該第一階調度,將頂點著色器、幾何著色器、及像素著色器的任務,分配至各著色器層所指定的該執(zhí)行單元集區(qū)。意即,頂點著色器任務被分配至指定為該頂點著色器層的執(zhí)行單元集區(qū)。此第一階調度為該頂點著色器、幾何著色器、及像素著色器分別執(zhí)行以選擇一特定執(zhí)行單元及一執(zhí)行緒以處理一任務要求(如被調度的任務)。各種執(zhí)行緒的分配可以一循環(huán)型式(round-robin style)處理。例如若將3執(zhí)行單元分配至該幾何著色器層,于是來自于該幾何著色器的一第一任務將被傳送至該第一執(zhí)行單元的一執(zhí)行緒,一第二任務到該第二執(zhí)行單元,諸如此類。
該第二階調度是關于管理執(zhí)行單元的分配至各著色器層,以便于該頂點著色器、幾何著色器、及像素著色器層中執(zhí)行有效的加載平衡。
應當了解的是,于某些實施例中,可執(zhí)行單一階調度,因此于一加載平衡基礎上分別分配任務。于此系統(tǒng)中,所有執(zhí)行單元皆為可用,以處理來自于任一著色器層的任務。的確,于任一特定時間,每一執(zhí)行單元可具有執(zhí)行緒活動,為每一著色器層執(zhí)行任務。但應當了解到此一實施例的調度算法,比起有效率的二階調度方法,于實行上更為復雜。
應當了解到第一及第二階調度的解耦(decoupling)并不表示應用執(zhí)行單元的配置必須于該第二階(2nd)調度中執(zhí)行。事實上,可執(zhí)行一精細(finer-grain)加載平衡配置,例如,根據(jù)每一執(zhí)行緒(如為頂點著色器操作而配置80個執(zhí)行緒、為像素著色器操作而配置120個執(zhí)行緒等等)。因此,欲分開第一及第二階調度,僅表示加載平衡及任務要求分配處理的決策解耦。于此所提供的敘述,作為說明的目的,并依此基本認識應可理解。
本發(fā)明的某些實施例更具體地指出由該調度器300所執(zhí)行的第二階調度操作。于一較高階中,該調度器300明確地操作以將各種執(zhí)行單元302、304、...、306個別配置及分配至該頂點著色器320、幾何著色器330、及像素著色器340之一。該調度器300更進一步被配置以執(zhí)行一加載平衡操作,包括各種執(zhí)行單元的一動態(tài)重新分配及重新配置,以作為該頂點著色器320、幾何著色器330、及像素著色器340所須的各自工作量。
該2nd調度器的一目的為使三個著色器層(頂點著色器(VS)、幾何著色器(GS)、及像素著色器(PS))的加載達到合理的平衡,以讓整個執(zhí)行單元(EU)集區(qū)達到最佳的整體效能。有許多因素影響著該頂點著色器、幾何著色器、及像素著色器的載入,例如頂點著色器、幾何著色器、及像素著色器的每一任務的執(zhí)行指令數(shù)目、指令執(zhí)行效率、該初始輸入像素對幾何著色器輸出像素比、及像素對像素比,都被三角形的尺寸、三角形的選擇及剔除率等所影響,而這些因素可能經(jīng)常改變。該執(zhí)行單元集區(qū)的效能,可通過由該頂點著色器、幾何著色器、及像素著色器所輸出的頂點、像素、及像素數(shù)目,或通過整體執(zhí)行單元的使用來測量。當整體執(zhí)行單元使用率達到最高水準時,該執(zhí)行單元集區(qū)達到最佳效能。整體執(zhí)行單元使用率,可通過總指令流量(于每一周期內被執(zhí)行的總指令數(shù)),或通過一平均執(zhí)行單元指令發(fā)送率(每一執(zhí)行單元于每一周期內所執(zhí)行的平均指令數(shù))來測量。分配至該頂點著色器、幾何著色器、及像素著色器的執(zhí)行單元數(shù)量分別為nVS、nGS、及nPS,而每一執(zhí)行單元的平均指令流量分別為0<rVS≤rVSmax、0<rGS≤rGSmax、及0<rPS≤rPSmax,需注意針對不同著色器層而言,能達到的每一執(zhí)行單元的最大指令流量rVSmax、rGSmax、rPSmax也隨著色器設計特性而不同。當執(zhí)行單元的總數(shù)為NTOT時,可以得到nVS+nGS+nPS=NTOT。等式(1)假設通過該頂點著色器、幾何著色器、及像素著色器所產(chǎn)生或聚集的頂點、像素、及像素之間的比例為常數(shù),且該著色器程序未改變,因此,針對每一著色器層而言,每一著色器實例(聚集)的平均執(zhí)行指令為常數(shù),于不同著色器層間的總執(zhí)行指令比例將為常數(shù),以及于不同著色器層間的指令流量ni×ri比例將為常數(shù),則可以得到nVS×rVSCVS=nGS×rGSCGS=nPS×rPSCPS.]]>等式(2)可達到所要求的效能,當f(nVS,nGS,nPS)=nVS×rVS+nGS×rGS+nPS×rPS等式(3)達到最大值時。
同樣地,通過每一執(zhí)行單元的每一著色器層或每一執(zhí)行單元的“消耗率”所產(chǎn)生的頂點/像素/像素或輸出數(shù)據(jù)的平均流量,若使用ri表示,因為通過該頂點著色器、幾何著色器、及像素著色器所產(chǎn)生的頂點、像素、及像素(或輸出數(shù)據(jù))之間的比例為常數(shù)ni×ri,盡管具有不同Ci值,這些等式是相同的。假設ni為實數(shù)。從(2)可得nGS=rVS/CVSrGS/CGSnVS,]]>nPS=rVS/CVSrPS/CPSnVS,]]>取代等式(1)中nGS及nPS,則nVS=NTOT1+rVS/CVSrGS/CGS+rVS/CVSrPS/CPS,]]>等式(4)因此可得到nGS=NTOT1+rGS/CGSrVS/CVS+rGS/CGSrPS/CPS,]]>等式(5)以及nPS=NTOT1+rPS/CPSrVS/CVS+rPS/CPSrGS/CGS.]]>等式(6)代替(3)的(4)、(5)、及(6),則可得
f=nVS×rVS+nGS×rGS+nPS×rPS=CVS+CGS+CPSCVS/rVS+CGS/rGS+CPS/rPSNTOT]]>等式(7)因為rVS,rGS,rPS>0,函數(shù)f為單調遞增,則當rVS=rVSmax及rGS=rGSmax及rPS=rPSmax時,f達到最大值。假設rVS=rVSmax,rGS=rGSmax,rPS=rPSmax,則(2)成為nVS×rVSmaxCVS=nGS×rGSmaxCGS=nPS×rPSmaxCPS,---(2′)]]>則得到頂點著色器、幾何著色器、及像素著色器的理想目標分配,達到最大效能nVS_T=NTOT1+rVSmax/CVSrGSmax/CGS+rVSmax/CVSrPSmax/CPS,]]>等式(4’)nGS_T=NTOT1+rGSmax/CGSrVSmax/CVS+rGSmax/CGSrPSmax/CPS,]]>等式(5’)nPS_T=NTOT1+rPSmax/CPSrVSmax/CVS+rPSmax/CPSrGSmax/CGS.]]>等式(6’)然而,因為分配至每一著色器層的執(zhí)行單元或執(zhí)行緒為整數(shù),可能會犧牲掉一些精準度(granularity)。針對根據(jù)小單元的分配架構,例如應用執(zhí)行緒、或應用執(zhí)行緒的小區(qū)塊的調度,可使用整數(shù)部份Int(ni_T)以近似ni_T。因為分數(shù)部份為Frac(nVS_T)+Frac(nGS_T)+Frac(nPS_T)=frac_sum≤2,可將剩余執(zhí)行緒或執(zhí)行緒區(qū)塊frac_sum依序分配至該頂點著色器、幾何著色器、及像素著色器。不過,針對根據(jù)大單元的分配架構,例如應用執(zhí)行單元的調度,最好為剩余的執(zhí)行單元數(shù)frac_sum(0~2)找出最佳分配。找出最佳分配,意謂找出Ni=Int(ni_T)或Int(ni_T)+1,使f(NVS,NGS,NPS)=NVS×rVS+NGS×rGS+NPS×rPS到達最大值。 假設NVS×rVSCVS=NGS×rGSCGS=NPS×rPSCPS=H,]]>因此f(NVS,NGS,NPS)=CVS×H+CGS×H+CPS×H=(CVS+CGS+CPS)×H,問題轉變成找出H的最大值。對于frac_sum==2而言,僅有一著色器層為Ni=Int(ni_T),且剩余為Ni=Int(ni_T)+1,于是選擇具有最大值Hk=Int(nk_T)×rkmaxCk]]>(或等效最大值 ,更好且需更少計算)以作為Nk=Int(nk_T)的著色器層,而剩余著色器層為Ni≠k=Int(ni_T)+1。對于frac_sum==0而言,所有著色器層具有Ni=Int(ni_T)=ni_T,則已找出最佳分配Ni=ni_T。因此,表示該系統(tǒng)以此方法達到最佳效能。對于兩個著色器層(例如頂點著色器及像素著色器)或大于三個著色器層(例如三角化之前頂點著色器、三角化、三角化之后頂點著色器、幾何著色器、及像素著色器等)的類似情況而言,可以得到n0+n1+......nm-1=NTOT,等式(8)n0×r0_maxC0=n1×r1_maxC1=......=nm-1×rm-1_maxCm-1,]]>等式(9)接著針對n0,n1......nm-1分解(8)及(9),達到具有最大效能的所有著色器層的理想目標分配n0_T=NTOT1+r0_max/C0r1_max/C1+r0_max/C0r2_max/C2+...+r0_max/C0rm-1_max/Cm-1,]]>n1_T=NTOT1+r1_max/C1r0_max/C0+r1_max/C1r2_max/C2+...+r1_max/C1rm-1_max/Cm-1,......]]>nm-1_T=NTOT1+rm-1_max/Cm-1r0_max/C0+rm-1_max/Cm-1r1_max/C1+...+rm-1_max/Cm-1rm-2_max/Cm-2.]]>frac_sum=Frac(n0_T)+Frac(n1_T)+...+Frac(nm-1_T)≤m-1。于frac_sum==m-1的情況下,僅有一著色器層為Ni=Int(ni_T),且剩余為Ni=Int(ni_T)+1,于是選擇具有最大值Hk=Int(nk_T)×rkmaxCk]]>(或最大值 )以作為Nk=Int(nk_T)的著色器層,而剩余著色器層為Ni≠k=Int(ni_T)+1。對于frac_sum==m-2而言,兩個著色器層為Ni=Int(ni_T),且剩余為Ni=Int(ni_T)+1,于是選擇具1st及2nd大值Hk=Int(nk_T)×rkmaxck]]>(或最大值 )以作為Nk=Int(nk_T)的著色器層,而剩余著色器層為Ni≠k=Int(ni_T)+1諸如此類,...該架構,應于具有執(zhí)行多重著色層(或其它可編程程序)計算單元集區(qū)的多核心或多處理器系統(tǒng)中工作,每一層執(zhí)行一核心或程序,且為此一連串核心的一部份,前一層的輸出作為下一層的輸入等等。雖然為根據(jù)大單元的分配架構,例如應用執(zhí)行單元的調度,且特別的是當單元的總數(shù)不大(例如8~10之類)時,可使用一嘗試錯誤法,且于一單元(執(zhí)行單元)的小數(shù)量的每一調整上,限制切換的單元數(shù),這提供一合理有效的收斂階層函數(shù)(stepping function),并使一調度器易于管理。
與本發(fā)明的范疇及精神一致,可以利用多種調度計劃。而這樣的計劃可為一簡單的嘗試錯誤計劃。更加進步的一調度計劃則可具效能預測。對于基本計劃而言,假設一初始配置L0。首先,找出瓶頸在哪里(假設著色器層A)。接著選擇最近為瓶頸的一著色器層(例如B層),并且將一執(zhí)行單元由B層切換至A層。這成為配置L1。然后,于時間T之后,測量最終的消耗率(或L1的總指令流量)。若L1效能<=L0效能,則重復該重新配置以找出另一著色器層并切換之?;旧希虞d平衡可被視為設法找出一最佳或較佳的執(zhí)行單元配置。當一執(zhí)行單元由另一層切換至A層時,執(zhí)行一檢查以了解結果是否比L0好。若該結果并非更好,則繼續(xù)該流程直到循環(huán)完所有其它層為止。當測試完所有其它層并且仍然找不到一較佳的配置時,該加載平衡以配置L0結束。當找出一較佳配置且一新瓶頸發(fā)生時(例如A’層),則A’層成為該較佳配置,然后A’層成為需要除去為瓶頸的一目標層。然而若L1>L0,則已找到一較好的配置。若是這樣的話,則繼續(xù)尋找瓶頸在哪里(例如A’層)。
接著,試圖將該執(zhí)行單元由其它層切換至A’層,并與前次已知配置的m(m為著色器層的數(shù)量)記錄相比較。若符合那些記錄的當中一個,則跳過它直到根據(jù)一最近瓶頸規(guī)則找出一新配置。于一實施例中,試圖將一執(zhí)行單元由另一層切換至A’層,且該新配置符合前次已知記錄之一,則該記錄的流量或消耗率信息將用于決策-若比L0好,于此情況下,該實施例將切換至那個配置。然而若是更差的話,則該實施例繼續(xù)尋找其它配置。關于切換的決策,與先前段落所敘述是相同的。差別為,它是預先記錄效能信息以做出決策,而不是切換后再于實際情況下測量該效能。
在上述例子里,該流程起始于配置L0。配置至著色器層A、B、C、...的執(zhí)行單元數(shù)量分別為N_A、N_B、N_C、...(其中N為一整數(shù)),而A層被確定為瓶頸。例如B為最近為瓶頸的著色器層,接著此實施例的流程首先將一執(zhí)行單元由B切換至A(A為目標層)。那時,該配置為L1,著色器層A、B、C、...等分別為N_A+1、N_B-1、N_C、...。若該結果沒有比L0好,則下一個最近瓶頸層為C,然后該流程改為將一執(zhí)行單元由C切換至A(基于L0)。那時,該配置(L2)于是成為N_A+1、N_B、N_C-1、...。而這與將一執(zhí)行單元由C切換至B(基于L1)同樣有效,且在切換至L2之前,并不需要回到L0。因此所有嘗試可根據(jù)目前的配置及一次切換一執(zhí)行單元的步驟(或具有相同尺寸的執(zhí)行單元或者執(zhí)行緒的一群組)。切換一執(zhí)行單元,或切換具有相同尺寸的執(zhí)行單元或者執(zhí)行緒的一群組,保證每一配置的變化占一個步驟,且該流程可于一步驟中返回每一迭代的原始配置(L0)。
進一步地,當一新配置被發(fā)現(xiàn)比L0好時,結束目標著色器層A的目前迭代。然后該瓶頸著色器層A’成為新目標且重復該流程。
應當了解到,于此方法中,本實施例不能直接跳越至已知的最佳配置。的確,從上述解說中,該計劃保證在每一配置變化之間并沒有跳越。相反地,尋找及整合發(fā)生在相同流程中。每次該流程將一執(zhí)行單元從一層切換至另一層時,便測量效能以及與此回合較佳配置的結果互相比較,以決定繼續(xù)或停止。先前的記錄對于防止不必要的切換是有幫助的。
對于這樣一個基本計劃,已知最近配置的m筆記錄可與它們的效能數(shù)據(jù)(最后的消耗率或總指令流量)一起儲存。此外,當管線中有一些變化時,重新開始該整合流程,意即著色程序改變、由那些著色層輸入/輸出的比率改變所造成的流程變化等等。
與本發(fā)明的范疇及精神一致,比起上述的基本嘗試錯誤方法,可實現(xiàn)一更先進的可預測調度計劃。于此方法下,根據(jù)某些已知因素(例如每一著色器層中每一執(zhí)行單元的最大發(fā)送率或指令流量)以計算預計(或預測)效能,并且由此決定是否切換著色器層。
為進一步說明此高階操作,考慮一繪圖處理器的實施例,其具有8個執(zhí)行單元的一集區(qū)。作為一初始配置,前兩個執(zhí)行單元可被配置至頂點著色器320,而次兩個執(zhí)行單元可被配置至幾何著色器330,而最后四個執(zhí)行單元可被配置至像素著色器340。當通過各種著色器單元產(chǎn)生個別任務時,將那些任務分配至指定執(zhí)行單元(例如通過第一階調度)的個別(可用)執(zhí)行緒。當任務完成后,接著將執(zhí)行緒分配至那些被釋放(并且再次變?yōu)榭捎?的任務。一旦一執(zhí)行單元被配置到一特定著色器,該調度器保留該配置,直到該調度器300將該執(zhí)行單元重新配置至另一著色器。本發(fā)明實施例用以有效進行執(zhí)行單元的一動態(tài)重新分配及重新配置的系統(tǒng)及方法。
如上所述,一繪圖處理器的整體效能,與經(jīng)由該繪圖管線所處理的數(shù)據(jù)量成比例。當通過一繪圖處理器于一管線化模式(例如于光柵化之前執(zhí)行的頂點操作、于像素著色之前所執(zhí)行的光柵化等等)而處理數(shù)據(jù)時,該繪圖處理器的整體效能被管線中最慢(或最擁塞的)的組件所限制。因此本發(fā)明實施例的調度器動態(tài)重新分配執(zhí)行單元以增進該繪圖管線中,頂點著色器、幾何著色器、及像素著色器整體效能。與此目的一致,當這些單元其中之一為瓶頸時,該調度器300,將目前分配至其它著色器單元的一的較不忙碌執(zhí)行單元,重新分配至現(xiàn)在已擁塞的著色器單元。盡管方法將詳述如下,對于共同處理來自于頂點著色器、幾何著色器、及像素著色器的數(shù)據(jù)而言,此重新分配可依次以各種策略或實施例達到執(zhí)行單元的最佳配置。一配置,盡可能達到著色器單元都為非瓶頸的目的(表示就整個繪圖處理器而言,繪圖管線中剩下的固定功能部份為瓶頸,表示該執(zhí)行單元的配置并未導致繪圖處理器整體為瓶頸)。
關于執(zhí)行單元的動態(tài)調度及重新分配,與本發(fā)明實施例一致,可以了解到在頂點著色器320、幾何著色器330、及像素著色器340上的相對需求,將隨時間而有所變化,這取決于一些因素,包括像素相對尺寸與像素尺寸的比較、明暗條件、紋理條件等等。對于具有一大像素對像素比率的像素而言,與該頂點著色器320比較,該像素著色器340的操作一般而言將消耗更多資源。同樣地,對于具有一小像素對像素比率的像素而言,與該頂點著色器320比較,該像素著色器340的操作一般而言將消耗較少資源。其它因素可包括頂點著色器、幾何著色器、及像素著色器的程序長度(因為單元可編程),及被執(zhí)行指令的類型等等。
在討論具體實施之前,應當理解的是,依照本發(fā)明實施例,可以執(zhí)行各種用以動態(tài)重新分配不同執(zhí)行單元的策略。例如依照本發(fā)明的一實施例,可使用一嘗試錯誤法。在此實施例中,若一特定著色器單元被確認為瓶頸,該系統(tǒng)及方法將測量及記錄管線(或至少此三個著色器層)的整體效能。各種測量及估計整體效能的方法將詳述如下。
在記錄目前的效能后,該調度器300可將目前分配至兩個非瓶頸著色器單元其中之一的執(zhí)行單元,重新分配至目前已擁塞的著色器單元。在重新分配生效后,該系統(tǒng)及方法可隨后采取整體效能測量,以估計該重新配置是否增進或降低整體效能。若整體效能降低,則該調度器取消此重新分配(并從剩下非瓶頸執(zhí)行單元之中,隨意地重新分配一執(zhí)行單元)。采取適當?shù)臏y量保證任務配置不重復,或不會花費過多資源或時間于執(zhí)行改變執(zhí)行單元分配的管理任務上,應當了解的是,這一嘗試錯誤法可有效達到執(zhí)行單元與各種著色器層的最佳配置。
于其它實施例中,該調度器300可被配置以估算一可能的效能增加或減少,而導致執(zhí)行單元的預測性重新分配。于此實施例中,與其實際執(zhí)行重新分配再接著測量實際效能增加或減少,不如利用一效能預測或估算。這樣的預測估算可以通過考慮種種原因而實現(xiàn),例如各種執(zhí)行單元的一可用資源(如存儲器空間、執(zhí)行緒、可用緩存器等等)。于一實施例中,該預測估算根據(jù)指令流量及目前為瓶頸的著色器層而達成,并利用一般暫存文件存儲器及執(zhí)行緒使用,以確定該瓶頸著色器層。當這樣的預測或估算被認為是一個可積極增進效能的重新配置時,接著執(zhí)行該重新配置。應當了解的是,于多數(shù)這樣的實施例中,該預測或估算的效能變化具有一些既有的準確性缺點。然而,可以了解到造成不準確估算的缺點少于需要執(zhí)行重新分配的代價,使得于某些情況下,這樣的實施例為可行的選擇。
應當了解的是,于某些實施例中,該2nd階調度器中有兩種不同的調度配置,該調度器通過一調度控制緩存器配置。一為靜態(tài)調度配置,該驅動器靜態(tài)地編程該執(zhí)行單元配置。該驅動器,可根據(jù)硬件效能計數(shù)器于先前顯示或整批繪圖期間所收集的某些靜態(tài)數(shù)據(jù),決定如何分配執(zhí)行單元。第二為動態(tài)調度配置,硬件動態(tài)地完成執(zhí)行單元分配。于動態(tài)調度配置中,該驅動器要提供一初始分配(不然,若無特定,該硬件選擇硬件預設分配并從那里開始),然后傳送命令以通知該硬件于某一情況下重新評估該分配,或強迫一分配并且改回至靜態(tài)配置。
應該更進一步地了解到,對各種不同著色器單元的執(zhí)行單元的初始分配為一周期性執(zhí)行的操作。就此而言,當該繪圖處理器進行狀態(tài)變動時,各種著色器單元可能完全被重新分配,以于新繪圖狀態(tài)下執(zhí)行操作。例如,對于具不同著色特性的繪制目標的著色特性變動、可能變動的明暗條件、于一繪圖場景中可被繪制的一新目標、以及其它可能發(fā)生的多種事件,而造成該繪圖處理器的狀態(tài)變化,因此基本上重新開始處理。有各種方法及機制用以通知這樣的一個狀態(tài)變化,包括通過軟件驅動器產(chǎn)生訊號,該驅動器可被用以發(fā)送該執(zhí)行單元的此批分配至該調度器。
現(xiàn)在參考圖6,圖6顯示該調度器300內部某些組件的方塊圖。首先,該調度器300包括能根據(jù)一預先決定的分配比例,完成將執(zhí)行單元的一初始分配到各種著色器單元的邏輯電路。于繪圖處理器中,此預先決定的分配比例可為固定,或選擇性地由該軟件驅動器發(fā)送至至該繪圖處理器。
再者,于某些實施例中,具有兩種配置,且于靜態(tài)模式中,該軟件驅動器控制該執(zhí)行單元分配。于動態(tài)模式中,該硬件可根據(jù)實時瓶頸狀態(tài)自己決定。該軟件驅動器可根據(jù)由硬件效能計數(shù)器于先前顯示或整批繪圖期間所收集是某些統(tǒng)計數(shù)據(jù)做決定。該調度器300還包括邏輯電路360,根據(jù)實時效能參數(shù)或各個著色器單元所測量的效能,被配置以完成執(zhí)行單元的動態(tài)重新配置。如前所述,若現(xiàn)在并無著色器單元為瓶頸,則目前并不需要執(zhí)行一執(zhí)行單元的重新分配,因為這樣做并不會增加該繪圖處理器的整體效能。因此,該調度器包括邏輯電路362,被配置以確定是否有瓶頸存在于任一著色器單元中。一種方法是檢查或確定每一著色器層中這些執(zhí)行單元滿的程度。有許多方法可確認這樣的瓶頸。一種方法為確認情況,例如所有執(zhí)行緒為忙碌的情況,或所有存儲器被占用的情況。如上所述,于一實施例中,每一執(zhí)行單元被配置具有32個內部執(zhí)行緒以供執(zhí)行。若該調度器300確定被分配至一特定著色器的相關執(zhí)行單元的所有執(zhí)行緒(或大體上所有執(zhí)行緒)目前為忙碌,則那個特定著色器單元可被認定全滿。當所有屬于一著色器層的執(zhí)行單元皆全滿時,則該著色器層被視為全滿。當這一個著色器層已滿而下一管線層并非全滿時,該著色器層被視為瓶頸。同樣地,可用其它資源評估一特定著色器單元是否滿了。例如,每一執(zhí)行單元可具有一既定數(shù)量的配置存儲器或暫存空間。于利用或消耗某些既定數(shù)量的存儲器或暫存空間之后,該調度器300可確認那個別執(zhí)行單元若已全滿。
需說明的是,于一實施例中,通過配置于該著色器層的執(zhí)行單元滿的程度及次一管線層的狀態(tài)以確定一著色器層的瓶頸。若所有配置于該著色器層的執(zhí)行單元已滿且次一管線層(另一著色層或一固定功能區(qū)塊)的狀態(tài)并非全滿時,該著色器層被視為瓶頸。
該調度器300還包括邏輯電路364用以將執(zhí)行單元重新分配至一不同著色器。應當了解的是,此一重新分配包括需要執(zhí)行的步驟以停止分配屬于被分配至該執(zhí)行單元的先前著色器層的任何新任務,并開始為現(xiàn)有的任務/執(zhí)行緒排出該執(zhí)行單元。既然執(zhí)行單元硬件支持兩組著色器內容,于之前的著色器內容結束前,允許屬于被分配至該執(zhí)行單元的新著色器層的任務開始進來(這是為預防由于著色器層改變的管線停滯)。例如,假設執(zhí)行單元1302及執(zhí)行單元2304目前分配至該頂點著色器320。更進一步假設該像素著色器340由該調度器330確定于瓶頸情況中,且該調度器330更進一步尋找以將執(zhí)行單元2304重新分配至該像素著色器340。在把任務從該像素著色器340傳送至最近分配的執(zhí)行單元之前?;蛘撸撜{度器330可停止傳送新任務至執(zhí)行單元304,然后一旦目前于執(zhí)行單元304的全部任務已完成進行,則執(zhí)行單元304可被重新分配至像素著色器340,且可開始分配一新任務(前面所提)。
于一實施例中,該調度器300還包括邏輯電路366用以確定一最不忙碌、非瓶頸的執(zhí)行單元。于一實施例中利用此邏輯電路366,該調度器300可從其余執(zhí)行單元中利用或選擇該最不忙碌的(未被分配至為瓶頸著色器單元的執(zhí)行單元)。此判斷可用任一各種方式實現(xiàn),包括評估個別執(zhí)行單元的可用資源(如執(zhí)行緒、存儲器、暫存空間)、評估目前分配至個別執(zhí)行單元的數(shù)量等等。于一實施例中,利用一最近為瓶頸著色器層完成判斷(如前所述)。
最后,該調度器300包括邏輯電路368用以比較或測量不同執(zhí)行單元的效能。如上所述,本發(fā)明某些實施例利用一調度器300執(zhí)行一各種執(zhí)行單元的嘗試錯誤重新分配。于之前,及之后,針對此重新分配,該調度器測量該執(zhí)行單元的效能,并且特別是各種著色器單元所聚集的執(zhí)行單元,以評估重新分配前后的整體效能。除了于個別基礎上評估該執(zhí)行單元之外,整體效能亦可以其它方法評估。例如,評估像素著色器的輸出(有時被指為消耗率),以確定或測量已完成處理操作(意即準備好傳送至一顯示緩沖存儲器以顯示的像素)的像素數(shù)量?;蛘?,亦可評估每一個別著色器單元的輸出,以估算整理效能,特別是于不使用或略過一個或多個著色器單元的情形下。
現(xiàn)在參考圖7A-7D,圖7A-7D共同顯示依據(jù)本發(fā)明實施例的高階操作流程圖。于一第一步驟402中,該調度器依一預先決定的分配比例,將執(zhí)行單元分配至各種著色器單元中。例如,于一配置中具有8個執(zhí)行單元,則2個可分配至則頂點著色器,2個可分配至該幾何著色器,而其余4個一開始則分配至則像素著色器。之后,允許該執(zhí)行單元處理接踵而來的要求或任務于一某一段期間內(步驟404)。之后,該調度器檢查確定是否任一著色器單元為瓶頸。若沒有,該系統(tǒng)于進行一相似比較之前,允許恢復處理于另一既定時間(步驟406)。若該調度器實際上確定該著色器層其中之一為瓶頸,則該系統(tǒng)以目前執(zhí)行單元的配置及分配,測量及記錄目前效能(步驟408)。之后,要采取的步驟取決于哪一個著色器單元為瓶頸。若確定(步驟410)該頂點著色器為瓶頸,則本發(fā)明的一實施例,從該幾何著色器或該像素著色器之中,選擇一可用的執(zhí)行單元,以重新配置或重新分配。如步驟412所說明(圖7B),本發(fā)明的一實施例從其它著色器層的最近非瓶頸中選擇。則表示,若找到先前的瓶頸,且該幾何著色器的一執(zhí)行單元被重新分配,則在該幾何著色器或該像素著色器之間,步驟412將由該像素著色器選擇一執(zhí)行單元(若該幾何著色器近來為瓶頸)。
與圖7B的敘述一致,該調度器評估該被提出的配置或分配是否已于之前測試過(步驟413)。如前所述,本發(fā)明的一實施例,于各種著色器區(qū)塊之間,執(zhí)行動態(tài)重新配置執(zhí)行單元的一嘗試錯誤方法。若步驟413確定一配置或一被提出的配置并未于之前測試過,接著進行步驟414,從該幾何著色器或像素著色器中,執(zhí)行一執(zhí)行單元的一適當重新分配給該頂點著色器。另一方面,若步驟413確定提出的配置之前已試過,該調度器接著測量及比較目前的效能及先前被提出配置所記錄的效能(步驟415)。比起先前被提出配置生效后而實現(xiàn)的效能,若目前的效能較好(步驟416),則保留目前來自于該幾何著色器或像素著色器的執(zhí)行單元的配置或分配(步驟417)。然而,比起目前效能,若先前配置造成一較好的效能,則該調度器繼續(xù)執(zhí)行該執(zhí)行單元的重新分配(步驟414)。應當了解的是,于圖7A及7B(關于為瓶頸頂點著色器層的一重新分配)所說明的配置方法,在該頂點著色器仍為瓶頸時,該系統(tǒng)因此不會在各種執(zhí)行單元的重新分配間反復來回,因此僅于各種操作配置中反復測試時消耗資源。
返回圖7A的步驟410,可知若該幾何著色器、或像素著色器被確定為瓶頸,則該流程各自進入圖7C及7D。在這些圖中每一說明的操作,類似于圖7B有關于一為瓶頸頂點著色器而敘述的操作。因此,藉由參考圖7B的說明,理解到這些方法的操作。
現(xiàn)在參考圖8A-8,圖8A-8共同顯示依據(jù)本發(fā)明另一實施例的高階操作流程圖。如于圖7A-7D中所說明的實施例一樣,該調度器依一預先決定的分配比例,對各種著色器單元執(zhí)行一所有執(zhí)行單元的初始分配(步驟502)。之后,該系統(tǒng)于一既定時間內,依此比例處理著色器任務(步驟504)。之后,執(zhí)行一檢查以確定是否任一著色器單元為瓶頸(步驟506)。若是如此,于目前配置下測量及記錄目前效能(步驟508)。之后,該系統(tǒng)繼續(xù)進行,取決于哪一個特定著色器單元被確定為瓶頸(步驟510)。舉例來說,若該頂點著色器被確定為瓶頸,則該系統(tǒng)將一目前分配至該像素著色器的執(zhí)行單元,通過重新分配至目前為瓶頸的頂點著色器以繼續(xù)進行(步驟512)。之后,該系統(tǒng)測量該效能(于重新分配之后)(步驟512)、及確定(步驟516)該效能是否增進。若確定效能并沒有增進,則該系統(tǒng)取消該重新分配(步驟518),并且將一目前分配至該幾何著色器的執(zhí)行單元,用以代替該為瓶頸的頂點著色器。于重新分配之后,該系統(tǒng)再次測量效能(步驟520),及確定該效能是否增進(步驟522)。若沒有,則再次取消該重新分配(步驟524)。圖8C及8D說明當瓶頸被確定在幾何著色器或像素著色器時,各自采取的類似步驟。
現(xiàn)在參考圖9,圖9顯示依據(jù)本發(fā)明實施例的某高階操作流程圖。如前所述,狀態(tài)的變化,或其它事件,于一繪圖管線中,可導致一重置或一重新開始的情況。此一事件可由軟件觸發(fā)或通知,或由專屬硬件檢測(步驟602)。于一實施例中,在此一狀態(tài)變化被表示或者檢測到之后,從因為狀態(tài)改變而受到影響的每一著色器層最上端,利用管線傳送一命令標記(步驟604)。之后,該系統(tǒng)等待,直到所有有效著色器層的底端接收此標記,而在那時,該系統(tǒng)重置某些記錄,并重新開始某些計時計數(shù)器(步驟606)。之后,該系統(tǒng)等待一時間T(步驟608)。在這個時候,于此新繪圖狀態(tài)下,該系統(tǒng)開始處理圖形,并開始動態(tài)分配及管理各種著色器層,如上述實施例中的概括說明。
于圖9圖的實施例中,該系統(tǒng)檢測或確定(于步驟610)任一著色器單元或著色器層是否為瓶頸。此確定可以各種方式實現(xiàn),而一方法是顯示于圖10(將討論如下)。若無著色器層受阻(見步驟612),則該繪圖管線的瓶頸于它處,管線的固定功能部份(見步驟614)。然而,若一著色器層被確定受阻(或為瓶頸),則該系統(tǒng)為瓶頸的著色器層記錄一平均指令發(fā)送率(步驟616)。那就是,該系統(tǒng)測量及記錄每單位時間所執(zhí)行的一平均指令數(shù)量。關于非瓶頸著色器層(亦被稱為饑餓著色器層(starving shader stage),因為具有可用的資源用以處理),該系統(tǒng)從該層將將一執(zhí)行單元切換至該瓶頸層之后,估計或預測最大總指令流量,并比較預測及目前所測量的流量。若該預測流量大于目前所測量流量,則該層具有將執(zhí)行單元的一切換至該為瓶頸的著色器層的資格(步驟618)。該系統(tǒng)確定(步驟620)一個或多個執(zhí)行單元或著色器層具切換的資格。若沒有,則整合結束(步驟622)。然而,若一個或多個執(zhí)行單元或著色器層具此切換資格,則該系統(tǒng)在預測及目前流量之間找出具有最大比例的著色器層,并將一執(zhí)行單元由那層切換至瓶頸層(步驟624)。之后,該系統(tǒng)從受到切換影響著色器層的最上端利用管線傳送一命令標記(步驟626),并等待直到所有有效著色器層的底端接收此標記,然后再次重新開始適當?shù)挠嫈?shù)器,及重置適當?shù)挠涗?步驟628)。
現(xiàn)在參考圖10,圖10顯示某高階操作處理流程圖,以確定目前哪一著色器層為瓶頸。如前所述以及如本領域的技術人員所熟知,于任一特定時間或對某些繪圖操作而言,可能不使用一個或多個不同著色器層。因此,圖10的方法確定(步驟702)該像素著色器是否為致能。若為如此,接著該方法確定該像素著色器的所有執(zhí)行單元是否已滿,及該像素著色器的一輸出緩沖存儲器是否未滿。有關于確定所有像素著色器執(zhí)行單元是否已滿,該系統(tǒng)可調查該執(zhí)行單元的資源,例如所有執(zhí)行緒現(xiàn)在是否為忙碌、執(zhí)行單元的所有暫存空間是否已滿、執(zhí)行單元的存儲器資源是否已滿等等。因此,可利用這些因素的不同或變化,與本發(fā)明的實施例一致,以完成此確定(步驟704)。若所有這些資源全滿,且該輸出緩沖存儲器未滿,則指出該像素著色器為瓶頸(步驟706)。就此而言,該輸出緩沖存儲器具有能力從該像素著色器接收更多輸出,但該像素著色器并未產(chǎn)生足夠輸出,所以該像素著色器中并沒有更多可用的資源以產(chǎn)生額外輸出。
同樣地,該方法確定該幾何著色器是否為致能(步驟712)。若為如此,該方法確定所有幾何著色器執(zhí)行單元是否已滿,及該幾何著色器輸出頂點快取記體是否未滿(步驟714)。若符合此條件,則該系統(tǒng)確定該幾何著色器為瓶頸(步驟716)。
同樣地,該方法確定(于步驟722)該頂點著色器是否為致能。若為如此,該方法確定所有頂點著色器執(zhí)行單元是否已滿,及任一幾何著色器執(zhí)行單元是否未滿(步驟724)。當該幾何著色器于該頂點著色器的下游(于管線中)時,幾何著色器執(zhí)行單元中的執(zhí)行能力無疑表示該幾何著色器不為瓶頸,且具有能力由該頂點著色器接收額外數(shù)據(jù)或輸出。然而,若該頂點著色器的所有執(zhí)行單元全滿,此為該頂點著色器為瓶頸的一指示(步驟728),因為該頂點著色器無法夠快地處理信息,以傳送該幾何著色器層的可用資源。
若圖10的各種決策區(qū)塊允許該流程到達步驟730,則可確定無著色器層為瓶頸。本質上,若所有致能的著色器層具有可用的處理資源、或對于并不具有可用資源的任一著色器層而言,從那著色器層的輸出或緊接的下游單元具有可用的處理能力。
現(xiàn)在參考圖11,圖11顯示依據(jù)本發(fā)明實施例的一執(zhí)行單元800中,某些單元及邏輯電路方塊圖。如上所述,每一執(zhí)行單元800包括必要邏輯電路810,以執(zhí)行多個獨立執(zhí)行緒。于一實施例中,每一執(zhí)行單元800具有必要邏輯電路,以執(zhí)行32個獨立、并列的執(zhí)行緒。其它實施例可支持額外或較少的執(zhí)行緒。每一執(zhí)行單元800還包括存儲器資源820、及暫存空間830。此外,每一執(zhí)行單元800包括控制邏輯電路或一執(zhí)行單元管理器840。該執(zhí)行單元管理器840用以管理及控制執(zhí)行單元的各種操作,以完成各種功能和特征如此處的說明。例如該執(zhí)行單元管理器840包括邏輯電路842配置以分配可用的執(zhí)行緒,為了完成被分配至該執(zhí)行單元的任務。執(zhí)行緒的分配,包括不同資源(包括存儲器及緩存器)的結合及分配,以支持執(zhí)行緒的操作。同樣地,該執(zhí)行單元管理器840包括邏輯電路844,一旦該分配的任務完成,為了隨后而來的任務再利用執(zhí)行緒。更進一步還提供邏輯電路846,以估計指令流量,與圖9步驟618的簡短說明有關。同樣地,提供邏輯電路848以測量實際指令執(zhí)行率,如圖9的步驟616所述。
對本領域的技術人員而言,應當了解的是,可于一執(zhí)行單元中包括額外的組件,用以完成各種不同任務及操作,一致于所提供實施例的敘述。
應當了解的是,與圖7及8有關的說明流程圖已被簡化,目的為說明實施例的某些操作。于各種實施例中,當然可以包括額外的步驟及評估,在此不特別加以說明。
總而言之,在此已說明一種新的系統(tǒng)及方法,于一繪圖管線的若干著色器層中,執(zhí)行一執(zhí)行單元集區(qū)的有效加載平衡。于上述實施例中執(zhí)行二階調度,藉此執(zhí)行一第一階調度于該執(zhí)行緒階(如分配某些執(zhí)行緒于一特定執(zhí)行單元中以執(zhí)行某些任務),且執(zhí)行一第二階調度于一執(zhí)行單元階(如分配某些執(zhí)行單元至某些特定著色器層)。實施例亦已說明該第二階調度可為靜態(tài)(例如由軟件驅動器控制),或動態(tài)(例如由繪圖硬件實時控制)。實施例還更詳述用以執(zhí)行動態(tài)調度的各種方法。一種實現(xiàn)方法為一加載平衡調度(根據(jù)一工作量平衡調度)。另一種方法為根據(jù)指令流量(或發(fā)送率)的計算而調度/配置。另一實施例說明調度及分配執(zhí)行單元至各種著色器層的一嘗試錯誤法。然而應當了解的是,可完成額外的實施例,以符合本發(fā)明的范疇及精神。
此處所使用的名詞“邏輯電路”被定義為專用硬件(即電子或半導體電路),及一般用途的硬件,經(jīng)由軟件編程以完成某些專用或已定義的功能或操作。
于流程圖中,任何處理敘述及方塊應當被理解為表示模塊、區(qū)段、或是包括一個或多個可執(zhí)行指令的部份程序,以執(zhí)行過程中的特定功能及步驟,且于本發(fā)明所披露較佳實施例的范疇內,包括可供選擇的實施,可不依順序執(zhí)行功能,包括大體上同時發(fā)生或以相反順序,取決于牽涉的功能性,通過本發(fā)明披露的相關技術可以理解。
雖然示范的實施例已被顯示及說明,可以針對所披露進行一些改變、修正、或是交換。所有的這些、修正、或是交換,應該于所披露的范疇內被看到。例如于此敘述的動態(tài)調度已注意到實施例具在有三個著色器(一頂點著色器、一幾何著色器、及像圖著色器)。應當了解的是,本發(fā)明的實施例可于只有兩個著色器(例如頂點著色器與像素著色器)、或超過三個著色器情況下執(zhí)行。
舉例來說,于一實施例中,提供一方法,通過提供一執(zhí)行單元集區(qū),其包括多個執(zhí)行單元,于一圖形處理裝置中執(zhí)行著色操作,其中每一執(zhí)行單元被配置以多重執(zhí)行緒操作。一調度單元,由多個著色器層,個別接收要求,以執(zhí)行著色相關運算。并且于這些執(zhí)行單元集區(qū)中調度執(zhí)行緒,以執(zhí)行著色相關運算。于一實施例中,該執(zhí)行單元集區(qū)的執(zhí)行緒個別調度,以執(zhí)行著色相關運算。因此,一特定執(zhí)行緒,可于時間內被調度,以于不同的著色器層中執(zhí)行著色器操作。
于一實施例中,這個方法接收要求,特別是接收來自于一頂點著色器層、一幾何著色器層、以及一像素著色器層的每一要求。于另一實施例中,這個調度更特別地包括調度被要求的著色器相關計算,因此最大化相關繪圖處理管線的一整體流量。于另一實施例中,這個調度可還特別地包括調度被要求的著色器相關計算,于通過該頂點著色器層、該幾何著色器層、以及該素著色器層所要求的著色器相關計算中,提供一個相關平衡調度于執(zhí)行單元上。
于另一實施例中,提供一圖形處理裝置,包括多個執(zhí)行單元,每一執(zhí)行單元可以多重執(zhí)行緒操作配置。調度邏輯電路被配置,將著色相關運算調度至這些執(zhí)行單元內可利用的處理執(zhí)行緒,該調度邏輯電路,響應來自于每一多個著色器層的要求,以執(zhí)行著色相關運算。于此實施例中,集區(qū)的執(zhí)行單元可被分享,因此一特定執(zhí)行緒可于時間內被調度,以于不同著色器層執(zhí)行著色操作(也就是,執(zhí)行單元及特定執(zhí)行緒并非不變的)。于一實施例中,該調度邏輯電路更特別地被配置于每一執(zhí)行單元基礎上調度要求,因此于任一特定時間,一特定執(zhí)行單元的可利用執(zhí)行緒能被調度以處理來自于特定著色器層的要求,又于另外一實施例中,提供一計算繪圖操作的方法,包括提供一組包含多個執(zhí)行單元的執(zhí)行單元集區(qū),其中每一執(zhí)行單元可以多重執(zhí)行緒操作配置。這個方法,于期間內接收來自每一頂點著色器、幾何著色器、以及像素著色器多個運算要求。另外,這個方法將個別的該運算要求分配至執(zhí)行單元內可利用的執(zhí)行緒。
已經(jīng)詳盡敘述過某些實施例,請參考圖12,圖12顯示與本發(fā)明實施例一致的高階方塊圖。圖12類似于已知的圖1,且兩圖的比較說明本發(fā)明的進步。簡而言之,提供一獨特硬件元素916,包括執(zhí)行單元分享集區(qū),以處理頂點著色、幾何著色、以及像素著色的個別運算。
現(xiàn)在請參考圖13,相關聯(lián)于圖12。如同本文前面提到的,執(zhí)行單元的集區(qū)916包括多個類似執(zhí)行單元,其中每一個可被配置,以處理多重執(zhí)行緒。于一特定時間,當其它執(zhí)行單元(或者執(zhí)行緒)被配置以執(zhí)行幾何著色及/或頂點著色時,某些執(zhí)行單元(或者甚至某些執(zhí)行緒)可被配置以執(zhí)行像素著色操作。不同執(zhí)行單元(或者執(zhí)行緒)的配置、動態(tài)重新配置,可于工作量、積壓、以及/或者需求的基礎上執(zhí)行。也就是,當著色操作的需求產(chǎn)生時,可分配沒有使用的執(zhí)行單元(或者執(zhí)行緒)以執(zhí)行那些操作。當執(zhí)行單元(或者他們的資源)變的無法利用時(因為使用在執(zhí)行運算),則系統(tǒng)可更聰明地執(zhí)行這些執(zhí)行單元或者他們的資源的調度。
例如,假設執(zhí)行單元(或執(zhí)行緒)均被配置且被分配以執(zhí)行指定著色任務。該系統(tǒng)可以監(jiān)控著色操作積壓的要求(等待處理)。假設像素著色操作的積壓開始大量增加,而頂點或幾何著色要求尚未變成積壓時,該系統(tǒng)可以重新配置執(zhí)行單元的配置(或執(zhí)行緒)以重新配置一些頂點或者幾何著色操作到像素著色操作。這樣一個加載平衡可以通過管線增加整體流量。
如圖13所顯示,邏輯電路940可被提供以管理及/或調度執(zhí)行單元(或者執(zhí)行緒),以執(zhí)行頂點著色操作。邏輯電路950可被提供以管理及/或調度執(zhí)行單元(或者執(zhí)行緒),以執(zhí)行幾何著色操作。同樣的,邏輯電路960可被提供以管理及/或調度執(zhí)行單元(或者執(zhí)行緒),以執(zhí)行像素著色操作。另外,額外的邏輯電路930可被提供以整體管理及/或調度執(zhí)行單元(或者執(zhí)行緒)。此整體管理或者調度可以各種方式執(zhí)行,及以各種因素為基礎。因素可包括相對需求、積壓、資源損耗等等。
雖然本發(fā)明已以較佳實施例披露如上,然其并非用以限定本發(fā)明,本領域的技術人員在不脫離本發(fā)明的精神和范圍的前提下可做若干的更動與潤飾,因此本發(fā)明的保護范圍以本發(fā)明的權利要求為準。
權利要求
1.一種繪圖處理方法,包括將至少一執(zhí)行單元,分配至每一多個著色器單元,這些著色器單元包括一頂點著色器、一幾何著色器及一像素著色器,其中,將一執(zhí)行單元分配至一特定著色器單元,以針對該特定著色單元執(zhí)行處理任務;確定這些著色器單元其中之一為瓶頸;以及將至少一執(zhí)行單元,從一非瓶頸的著色器單元,重新分配至被確定為瓶頸的著色器單元。
2.如權利要求1所述的繪圖處理方法,其中該確定步驟還包括,評估被分配至一指定著色器單元所分配的執(zhí)行單元的資源可用性。
3.如權利要求2所述的繪圖處理方法,其中,該評估資源可用性的步驟包括,確定于一執(zhí)行單元中,可用的執(zhí)行緒數(shù)量。
4.如權利要求2所述的繪圖處理方法,其中,該評估資源可用性的步驟包括,從評估一執(zhí)行單元中可用的暫存空間及存儲器空間的群組選擇其一。
5.如權利要求1所述的繪圖處理方法,其中還包括當一執(zhí)行單元由一非瓶頸的著色器單元,重新分配至一被確定為瓶頸的著色器單元時,確定整體效能是否將會改進。
6.如權利要求5所述的繪圖處理方法,其中,確定整體效能是否將會改進包括,執(zhí)行一嘗試錯誤重新分配、以及只有當效能指標被明顯改進時才維持該重新分配。
7.如權利要求5所述的繪圖處理方法,其中,確定整體效能是否將會改進包括,針對一特定執(zhí)行單元的重新分配估計一指令流量、以及只有當估計的指令流量超過于重新分配前的一實際測量指令流量時,才執(zhí)行重新分配。
8.一種繪圖處理裝置,包括多個執(zhí)行單元;及邏輯電路,被配置以個別分配該執(zhí)行單元,以執(zhí)行通過一頂點著色器、一幾何著色器、或一像素著色器其中之一所要求的處理任務,其中一旦一特定執(zhí)行單元被分配至該頂點著色器、幾何著色器、或像素著色器其中之一時,保持分配至那著色器直到重新配置為止,該邏輯電路還進一步被配置,根據(jù)共同執(zhí)行頂點著色任務的執(zhí)行單元的一相關工作量、共同執(zhí)行幾何著色任務的執(zhí)行單元的一相關工作量、及共同執(zhí)行像素著色任務的執(zhí)行單元的一相關工作量,以將執(zhí)行單元個別重新分配。
9.如權利要求8所述的繪圖處理裝置,其中該邏輯電路更具體地被配置,將該頂點著色器、幾何著色器、或像素著色器中最不忙碌的執(zhí)行單元,重新分配至另一個被確定為瓶頸的該頂點著色器、幾何著色器、或像素著色器之一。
10.如權利要求8所述的繪圖處理裝置,還包括邏輯電路,被配置以從該像素著色器測量出的一輸出消耗率,其中,該邏輯電路被還具體地配置以反復方式,從一較不忙碌著色器單元,將執(zhí)行單元分配至一瓶頸著色器單元,直到達到最高點或最大的消耗率。
11.如權利要求8所述的繪圖處理裝置,還包括邏輯電路,被配置以確定于該頂點著色器、該幾何著色器、或該像素著色器的任一或多個中,是否具有一效能瓶頸。
12.如權利要求8所述的繪圖處理裝置,還包括邏輯電路,被配置以確定是否有一效能瓶頸于該頂點著色器中,當被分配至該幾何單元的至少一執(zhí)行單元具可用性時,該邏輯電路被配置以確定分配至該頂點著色器的所有執(zhí)行單元是否全滿;邏輯電路,被配置以確定是否有一效能瓶頸于該幾何著色器中,當一輸出頂點高速緩存未滿時,該邏輯電路被配置以確定分配至該幾何著色器的所有執(zhí)行單元是否全滿;及邏輯電路,被配置以確定是否有一效能瓶頸于該像素著色器中,當一像素著色器輸出緩沖存儲器未滿時,該邏輯電路被配置以確定分配至該像素著色器的所有執(zhí)行單元是否全滿。
13.一種用于計算繪圖操作的方法,包括從每一頂點著色器、幾何著色器及像素著色器之中,于時間內接受多個計算要求;將上述個別的計算要求,分配至個別的多個執(zhí)行單元;以及于時間內比較性的評估,共同被分配以執(zhí)行該頂點著色器計算要求的所有執(zhí)行單元效能、共同被分配以執(zhí)行該幾何著色器計算要求的所有執(zhí)行單元效能、以及,共同被分配以執(zhí)行來自于該像素著色器計算要求的所有執(zhí)行單元效能。
14.如權利要求13所述的用于計算繪圖操作的方法,還包括,根據(jù)一比較性的評估操作的結果,將一新計算要求分配至該執(zhí)行單元其中之一。
15.如權利要求14所述的用于計算繪圖操作的方法,其中將該新計算要求分配至一最不忙碌的執(zhí)行單元。
16.如權利要求13所述的用于計算繪圖操作的方法,還包括,根據(jù)一比較性的評估操作的結果,將一現(xiàn)有的計算要求重新分配至一個不同的執(zhí)行單元。
17.如權利要求16所述的用于計算繪圖操作的方法,其中將該現(xiàn)有的計算要求重新分配至最不忙碌的一執(zhí)行單元。
18.一種繪圖處理裝置,包括多個執(zhí)行單元;及一調度器,被配置以分配這些執(zhí)行單元,以執(zhí)行任務,該任務包括頂點著色操作、幾何著色操作、及像素著色操作,該調度器被配置于這些執(zhí)行單元中,根據(jù)要求像素著色操作的一像素著色器所輸出的像素比例,動態(tài)地重新分配該任務。
19.如權利要求18所述的繪圖處理裝置,其中該調度器被配置根據(jù)一預先決定的分配比例,完成執(zhí)行單元的一初始分配。
20.如權利要求18所述的繪圖處理裝置,其中,該調度器還包括重新分配邏輯電路,該邏輯電路被配置以將執(zhí)行單元,由一饑餓著色器單元,重新分配至一被確定為瓶頸的著色器單元。
21.如權利要求20所述的繪圖處理裝置,其中,該重新分配邏輯電路還包括測量一目前指令執(zhí)行率的邏輯電路、以及,當目前分配于該饑餓著色器單元的一執(zhí)行單元,被重新分配至另一著色器單元時,被配置以估計一指令執(zhí)行率的邏輯電路,該重新分配邏輯電路更進一步被配置,只要該重新分配邏輯電路確定該估計指令率超過該測量指令率,則將一執(zhí)行單元從該饑餓著色器單元重新分配。
22.一種用于繪圖處理的方法,包括將至少一執(zhí)行單元,分配至每一多個著色器單元,其中,將一執(zhí)行單元分配至一特定著色器單元,以針對該著色器單元執(zhí)行處理任務;確定這些著色器單元其中之一為瓶頸;以及將至少一執(zhí)行單元,從一非瓶頸的著色器單元,重新分配至被確定為瓶頸的著色器單元。
全文摘要
本發(fā)明系有關于繪圖處理單元的一頂點著色器、一幾何著色器及一像素著色器中,管理或執(zhí)行資源的動態(tài)配置或重新配置的新方法與裝置。于一實施例中,一種用于繪圖處理的方法,包括將至少一執(zhí)行單元,分配至每一多個著色器單元,這些著色器單元包括一頂點著色器、一幾何著色器及一像素著色器,其中,將一執(zhí)行單元分配至一指定著色器單元,以針對那著色單元執(zhí)行處理任務;確定這些著色器單元其中之一為瓶頸;以及將至少一執(zhí)行單元,從一非瓶頸著色器單元重新分配至被確定為瓶頸著色器單元。
文檔編號G06T15/00GK1983325SQ20061013615
公開日2007年6月20日 申請日期2006年10月13日 優(yōu)先權日2005年10月14日
發(fā)明者焦陽, 蘇奕榮 申請人:威盛電子股份有限公司