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