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