專利名稱:繪圖處理單元的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及改善繪圖處理單元的總處理量的方法與系統(tǒng),特別是涉及可同時(shí)處理多個(gè)線程的多個(gè)存取要求的執(zhí)行單元改善方法和系統(tǒng)。
背景技術(shù):
眾所皆知,三維計(jì)算機(jī)繪圖技術(shù)著重于將三維(3D)物體以二維(2D)影像的方式呈現(xiàn)出來,并顯示于諸如陰極線真空管(CRT)屏幕或液晶屏幕(LCD)之類的顯示裝置上。此三維物體可以是簡(jiǎn)單的幾何基元(primitive),例如點(diǎn)、線段、三角形或是多邊形 (polygon)。較為復(fù)雜的物體則是以一系列相連的平面多邊形的方式呈現(xiàn)在顯示裝置上,例如一連串的平面三角形。所有的圖形基元都可以單一頂點(diǎn)或一組頂點(diǎn)的方式來表示,例如以座標(biāo)(Χ,Υ,Ζ)來定義一個(gè)點(diǎn),或是線段的某一端點(diǎn),或是多邊形的某一個(gè)頂點(diǎn)。
為了產(chǎn)生用來代表三維物體的二維投影數(shù)據(jù)使物體可呈現(xiàn)在顯示裝置上,圖形基元的頂點(diǎn)需要經(jīng)過一連串的操作,以及繪圖顯像管線的多個(gè)階段來處理。一般的管線是由一連串相連的處理單元或階段所組成,上一階段的輸出可做為下一階段的輸入。對(duì)于繪圖處理單元而言,管線階段包括以下逐一頂點(diǎn)操作,基元合成操作,像素操作,像素合成操作,光柵掃描(rasterization)操作以及碎型(fragment)操作等等。
在典型的繪圖顯示系統(tǒng)中,可利用影像數(shù)據(jù)庫(kù)來儲(chǔ)存場(chǎng)景中物體的敘述符 。物體可以多個(gè)小多邊形來表示,這些小多邊形是涵蓋物體表面的多邊形,如同墻面上的磁磚。每一個(gè)多邊形又可以頂點(diǎn)座標(biāo)清單以及表面材質(zhì)特性來表示,甚或再包括每一頂點(diǎn)相對(duì)于表面的法線向量。頂點(diǎn)座標(biāo)清單可以是模型空間的XYZ座標(biāo),表面材質(zhì)特性可包括顏色,紋理或亮度等。對(duì)于具有復(fù)雜曲面的三維物體,通常是以三角形或四邊形來表示,而四邊形又可拆解為一對(duì)三角形。
當(dāng)使用者決定了觀看的角度,轉(zhuǎn)換引擎單元便將物體座標(biāo)轉(zhuǎn)換至相對(duì)于觀賞角度。此外,使用者可以指定視野范圍,所產(chǎn)生的影像的大小,以及可見物體的后方是否包含某一背景或是將背景刪除。
當(dāng)視野區(qū)域選定之后,裁剪單元將位于視野區(qū)域之外的多邊形剔除,并且將部份位于視野區(qū)域之外部份位于視野區(qū)域之內(nèi)的多邊形加以裁剪。裁減后的多邊形對(duì)應(yīng)至原多邊形位于視野區(qū)域之內(nèi)的部份,其裁減后的邊緣對(duì)應(yīng)至視野區(qū)域的邊界。接著多邊形的頂點(diǎn)會(huì)傳遞到下一個(gè)管線階段,包含每一頂點(diǎn)在視野區(qū)域的座標(biāo)(XY)以及其相對(duì)的深度值 (Z)。之后一般的繪圖處理系統(tǒng)會(huì)進(jìn)行光源模型處理,再將多邊形以及其顏色值傳遞至光柵掃描器。
對(duì)每一個(gè)多邊形而言,光柵掃描器會(huì)判斷哪些像素位在此多邊形,并將其對(duì)應(yīng)的顏色值和深度值寫入幀緩沖器(frame buffer)。光柵掃描器會(huì)比較目前處理的多邊形其像2/11 頁(yè)
素的深度值與原先儲(chǔ)存在幀緩沖器相對(duì)應(yīng)位置的像素的深度值,如果多邊形像素的深度值較小,表示其位于幀緩沖器所儲(chǔ)存的像素的前方,則以多邊形像素的深度值取代原幀緩沖器的深度值,因?yàn)槟壳疤幚淼亩噙呅螘?huì)遮蔽原先儲(chǔ)存于幀緩沖器內(nèi)的多邊形。上述步驟會(huì)持續(xù)重復(fù)直到所有的多邊形都已顯像處理過。之后,影像控制器會(huì)將幀緩沖器的內(nèi)容以逐一掃描線的方式呈現(xiàn)在顯示裝置上。實(shí)現(xiàn)即時(shí)顯像的典型方式是以像素來顯示多邊形,此像素可能位于多邊形之內(nèi)或之外,所產(chǎn)生的多邊形邊緣在靜態(tài)顯示之下可能產(chǎn)生不規(guī)則外觀,而在動(dòng)態(tài)顯示之下則是模糊的影像。其問題的背后成因在于鋸齒(aliasing)效應(yīng),而用以降低此效應(yīng)的方法就稱為反鋸齒(anti-aliasing)技術(shù)。以屏幕為基礎(chǔ)的反鋸齒方法并不需要欲顯像的物體的相關(guān)信息,因?yàn)榇朔N方法只需要繪圖管線的輸出樣本。其中一種典型的反鋸齒方法是利用掃描線反鋸齒技術(shù),稱為多取樣反鋸齒(Multi-Sample Anti-Aliasing, MSAA)方法,此方法在每一次傳遞時(shí)都對(duì)單一像素作一個(gè)以上的取樣。從每一個(gè)像素所取樣出來的樣本,或稱做次像素的數(shù)量即是所謂的取樣率,一般來說取樣率越高就會(huì)耗費(fèi)越多的存儲(chǔ)器流量。雖然上文僅簡(jiǎn)略說明繪圖處理單元的各個(gè)元件的大致操作,本領(lǐng)域的技術(shù)人員應(yīng)可理解繪圖數(shù)據(jù)的處理十分繁復(fù),因此提高處理效能與降低設(shè)計(jì)復(fù)雜度為常見考量和需求。若能提高繪圖處理單元的數(shù)據(jù)總處理量(throughput),不僅可達(dá)到提高處理效能的目的,亦可在維持一定效能之下,減少硬件需求的復(fù)雜度。
發(fā)明內(nèi)容
本發(fā)明的一實(shí)施例提供一種繪圖處理單元,包含一執(zhí)行單元,用以處理可編程著色器操作,并可用以同時(shí)處理多個(gè)線程的處理操作;一第一存儲(chǔ)器單元,用以形成一暫存器文件來調(diào)節(jié)該多個(gè)線程的暫存器操作,該存儲(chǔ)器單元包含多個(gè)存儲(chǔ)庫(kù),其中多個(gè)第一存儲(chǔ)庫(kù)分配給多個(gè)第一線程,多個(gè)第二存儲(chǔ)庫(kù)分配給多個(gè)第二線程;一第二存儲(chǔ)器單元,用以形成一常數(shù)閃速存儲(chǔ)器來調(diào)節(jié)該執(zhí)行單元的該多個(gè)線程所對(duì)應(yīng)的多個(gè)著色器操作的常數(shù)存取,該常數(shù)閃速存儲(chǔ)器用以儲(chǔ)存對(duì)應(yīng)于該多個(gè)著色器操作的多個(gè)內(nèi)文,并用以儲(chǔ)存該多個(gè)內(nèi)文的多個(gè)常數(shù)的多個(gè)版本;以及一第三存儲(chǔ)器單元,用以形成一頂點(diǎn)屬性閃速存儲(chǔ)器來調(diào)節(jié)該執(zhí)行單元的該多個(gè)線程所對(duì)應(yīng)的多個(gè)著色器操作的頂點(diǎn)屬性存取。本發(fā)明的另一實(shí)施例提供一種繪圖處理單元,包含一執(zhí)行單元,可用以執(zhí)行多線程操作,該執(zhí)行單元包含一線程控制器,該線程控制器包含一第一指令擷取仲裁器和一第二指令擷取仲裁器;其中該第一指令擷取仲裁器用以代表該執(zhí)行單元的多個(gè)第一線程來擷取指令;以及該第二指令擷取仲裁器用以代表該執(zhí)行單元的多個(gè)第二線程來擷取指令。本發(fā)明的又一實(shí)施例一種適用于執(zhí)行單元的指令處理方法,包含對(duì)應(yīng)于多個(gè)有效線程的一第一有效線程,從一指令閃速存儲(chǔ)器擷取一執(zhí)行單元的一第一指令;傳播該第一指令給該多個(gè)有效線程;維持該第一指令于對(duì)應(yīng)于該多個(gè)有效線程至少其中一個(gè)的一指令隊(duì)列中;解碼該指令隊(duì)列中的一第二指令;以及發(fā)送該第二指令的數(shù)據(jù)存取要求給至少下列一個(gè)一常數(shù)閃速存儲(chǔ)器、一頂點(diǎn)屬性閃速存儲(chǔ)器、一共同暫存器文件和一執(zhí)行單元數(shù)據(jù)路徑。
圖1為現(xiàn)有技術(shù)的計(jì)算機(jī)系統(tǒng)的繪圖管線的部份元件的功能方塊圖。
圖2為本發(fā)明一實(shí)施例的繪圖處理管線的部分元件方塊圖。
圖3為本發(fā)明一實(shí)施例的繪圖處理器的方塊圖。
圖4為本發(fā)明一實(shí)施例的執(zhí)行單元的內(nèi)部方塊圖。
圖5為本發(fā)明一實(shí)施例的常數(shù)閃速存儲(chǔ)器的功能方塊圖。
圖6為本發(fā)明另一實(shí)施例的執(zhí)行單元的內(nèi)部方塊圖。
圖7為本發(fā)明一實(shí)施例的操作流程圖。
附圖符號(hào)說明
100:繪圖處理管線
110:頂點(diǎn)著色器
120:幾何著色器
130:三角形設(shè)置單元
140:跨距/像磚產(chǎn)生器
150:屬性設(shè)置單元
160:像素著色器
170:幀緩沖器
200:繪圖處理管線
250:存儲(chǔ)器單元
252:命令串流處理器
254:頂點(diǎn)著色器
256:幾何著色器
257:三角形設(shè)置單元
258:跨距/像磚產(chǎn)生器
259:屬性設(shè)置單元
260:像素著色器
262:幀緩沖器
304:執(zhí)行單元集區(qū)控制單元
306:執(zhí)行單元集區(qū)
308:頂點(diǎn)著色器
310:幾何著色器
312:像素著色器
318:跨距/像磚產(chǎn)生器
320:三角形設(shè)置單元
322:屬性設(shè)置單元
400、600:執(zhí)行單元
402、604:線程控制器
404,606:指令擷取仲裁器O
406、608:指令擷取仲裁器I
408、602:指令閃速存儲(chǔ)器
410,624:常數(shù)閃速存儲(chǔ)器
412 :L2閃速存儲(chǔ)器存取單元
413:指令傳播總線
414,628:頂點(diǎn)屬性閃速存儲(chǔ)器
416,632:共同暫存器文件O
417,610,612:偶數(shù)線程
418,634:共同暫存器文件I
419,614,616:奇數(shù)線程
420、636:執(zhí)行單元數(shù)據(jù)路徑
422,638:算術(shù)邏輯單元O
424,640:算術(shù)邏輯單元I
426、642:內(nèi)插器
428、644:輸出緩沖器
500:常數(shù)閃速存儲(chǔ)器
502:頭標(biāo)表
504:對(duì)照表
506:閃速存儲(chǔ)器
508、626、630:先進(jìn)先出緩沖器
618:常數(shù)閃速存儲(chǔ)器仲裁器
620:共同暫存器文件仲裁器
622:頂點(diǎn)屬性閃速存儲(chǔ)器仲裁器
940:存取對(duì)應(yīng)的存儲(chǔ)器地址具體實(shí)施方式
以下將結(jié)合附圖來說明本發(fā)明的各個(gè)實(shí)施例,雖然本發(fā)明是藉由這些實(shí)施例來說明,但本發(fā)明不局限于下面所揭示的實(shí)施例,下述實(shí)施例的變形、改進(jìn)與等同實(shí)施方式皆屬于本發(fā)明的范圍。
本發(fā)明提供一種可提高繪圖處理單元的數(shù)據(jù)總處理量的系統(tǒng)和方法。在詳細(xì)探
討本發(fā)明的各個(gè)實(shí)施例之前,請(qǐng)先參見圖1,其繪示繪圖處理管線100的的部分元件方塊圖,特別是繪圖處理管線100的基本元件。這些基本元件包含頂點(diǎn)著色器110、幾何著色器120、三角形設(shè)置單元(triangle setupunit) 130、跨距與像磚產(chǎn)生器(span and tilegenerator) 140、屬性設(shè)置單元150、像素著色器160以及幀緩沖器170。上述元件的基本功能和操作為本領(lǐng)域的現(xiàn)有技術(shù),故在此不多加贅述。簡(jiǎn)而言之,繪圖基元可以位置數(shù)據(jù)(X、Y、Z和W座標(biāo))還有亮度及紋理數(shù)據(jù)來定義,以上所有數(shù)據(jù)可傳送至頂點(diǎn)著色器110。如所已知,頂點(diǎn)著色器110可對(duì)從命令清單所接收的繪圖數(shù)據(jù)執(zhí)行各種轉(zhuǎn)換,例如從世界座標(biāo)轉(zhuǎn)換至視野座標(biāo),再到投影座標(biāo),最后是屏幕座標(biāo)。頂點(diǎn)著色器110可執(zhí)行的各項(xiàng)功能為本領(lǐng)域技術(shù)人員所熟習(xí),在此不加以敘述。頂點(diǎn)著色器110輸出幾何基元給幾何著色器120。
幾何著色器120所產(chǎn)生的幾何和其他繪圖數(shù)據(jù)會(huì)傳送到三角形設(shè)置單元130來執(zhí)行三角形設(shè)置操作,其細(xì)部功能和實(shí)現(xiàn)方式可依據(jù)需求有所不同。一般來說,三角形設(shè)置單元130接收三角形基元的頂點(diǎn)信息,并依據(jù)基元的類型執(zhí)行各項(xiàng)操作,例如某些幾何轉(zhuǎn)換。
對(duì)每一頂點(diǎn)而言,所提供的幾何信息包含X、Y、Z和W座標(biāo),其中X、Y、Z為幾何座標(biāo),而W為齊次(hoogenous)座標(biāo)。如本領(lǐng)域技術(shù)人員所熟習(xí),相關(guān)轉(zhuǎn)換可能是例如從模型空間到世界空間,再到視野空間,投影空間,然后是齊次空間以及正規(guī)化裝置座標(biāo) (normalized device coordinates,NDC),最后是屏幕空間。請(qǐng)注意,為了簡(jiǎn)化說明之便,本發(fā)明的敘述省略部分繪圖管線元件,但這些繪圖管線元件的操作應(yīng)為本領(lǐng)域技術(shù)人員所熟習(xí)。舉例來說,本發(fā)明未揭示光柵掃描管線的所有階段,但本領(lǐng)域的技術(shù)人員應(yīng)可理解其包含未揭示的管線階段。
以上所述的繪圖管線階段通常實(shí)現(xiàn)于繪圖處理單元或繪圖處理裝置的中。某些管線階段依循已公開的應(yīng)用程序界面(application program interface, API)的規(guī)范,或是多個(gè)應(yīng)用程序界面群組所制定的需求限制。上述應(yīng)用程序界面可能是例如Direct 3D API。下文將以另一觀點(diǎn)闡述繪圖管線的實(shí)現(xiàn)。
請(qǐng)參見圖2,其繪示本發(fā)明一實(shí)施例的繪圖處理管線200的部分元件方塊圖。首先是命令串流處理器(command stream processor, CSP) 252,主要用以從存儲(chǔ)器接收或讀取頂點(diǎn)。頂點(diǎn)可用以形成幾何基元和管線的工作項(xiàng)目。命令串流處理器252從存儲(chǔ)器讀取數(shù)據(jù),并利用這些數(shù)據(jù)來產(chǎn)生繪圖管線的三角形、線段、點(diǎn)或其他基元,這些幾何信息組合完畢之后接著被傳送到頂點(diǎn)著色器254。某些繪圖API常有的限制在于,諸如頂點(diǎn)著色器之類的著色器是使用者可編程階段,也就是說使用這些API的程序設(shè)計(jì)者可以自行設(shè)計(jì)著色器,以及編程著色器可執(zhí)行的操作。因此,在圖2中以圓角標(biāo)示的管線階段即為可編程的階段,例如頂點(diǎn)著色器254,這些可編程階段可藉由繪圖處理器的處理核心單元的可編程執(zhí)行單元(或集區(qū))的指令執(zhí)行來實(shí)現(xiàn)。頂點(diǎn)著色器254藉由執(zhí)行例如轉(zhuǎn)換、掃描或打光等操作來處理頂點(diǎn),然后傳送給幾何著色器256。幾何著色器256所接收的輸入為一完整基元的所有頂點(diǎn),并將這些頂點(diǎn)以單一拓樸的形式輸出,例如三角形串,線段串或是點(diǎn)清單等。此外幾何著色器256還可執(zhí)行諸如鑲嵌和陰影錐生成等操作。
幾何著色器256輸出數(shù)據(jù)至三角形設(shè)置階段257,其用以執(zhí)行例如三角形刪除 (triangle trivial rejection)、行列式(determinant)計(jì)算、剔除(culling)、前屬性設(shè)置(pre-attribute setup)、邊緣函數(shù)計(jì)算以及安全頻帶剪裁(guardbandclipping),其操作為本領(lǐng)域技術(shù)容易所熟知,在此不贅述。三角形設(shè)置階段257輸出信息至跨距與像磚產(chǎn)生器258,其用以將不需呈現(xiàn)于屏幕上的三角形剔除以及執(zhí)行其他操作。本領(lǐng)域的技術(shù)人員應(yīng)可理解繪圖管線還包含其他處理階段,例如深度測(cè)試。深度測(cè)試可以據(jù)三角形的深度值來決定此三角形是否會(huì)顯示于屏幕之上,若不需顯示則剔除此三角形。其他未討論的管線階段為本領(lǐng)域的已知技術(shù),故在此省略。
如果三角形設(shè)置階段257所處理的三角形沒有被跨距與像磚產(chǎn)生器258或其他管線階段所剔除,則屬性設(shè)置(attribute setup)階段259會(huì)對(duì)這些三角形做屬性設(shè)置操作。 屬性設(shè)置階段259會(huì)產(chǎn)生后續(xù)管線階段所需的屬性的內(nèi)插函數(shù)清單,并且對(duì)管線階段所處理的幾何基元的各項(xiàng)屬性值作處理。
像素著色器260則是在屬性設(shè)置階段259每次輸出可覆蓋一個(gè)完整基元的各個(gè)頂點(diǎn)時(shí)被啟動(dòng)。如所已知,像素著色器260可執(zhí)行內(nèi)插或其他操作來決定輸出至幀緩沖器262的像素顏色值。圖2的各元件的功能操作為本領(lǐng)域技術(shù)人員所熟知,在此不贅述,因此上述各元件的內(nèi)部操作亦省略討論。接著請(qǐng)參見圖3,其為本發(fā)明一實(shí)施例的繪圖處理器環(huán)境的方塊圖。圖3僅繪示有助于理解本發(fā)明的相關(guān)元件,并未完整繪示繪圖處理器的所有元件,本領(lǐng)域的技術(shù)人員應(yīng)可自圖3理解相關(guān)繪圖處理器的一般功能和架構(gòu)。于本實(shí)施例中,為敘述簡(jiǎn)潔之便,繪圖處理單元300的部份元件被省略,但本領(lǐng)域的技術(shù)人員應(yīng)可理解其中還包含其他硬件或邏輯元件。繪圖處理單元300包含執(zhí)行單元集區(qū)306和執(zhí)行單元集區(qū)控制單元304。執(zhí)行單元集區(qū)306包含多個(gè)可編程的執(zhí)行單元,而執(zhí)行單元集區(qū)控制單元304用以掌控執(zhí)行單元集區(qū)306的執(zhí)行單元的線程管理,以及系統(tǒng)使用者和繪圖處理單元300的其他元件的相互溝通。執(zhí)行單元集區(qū)控制單元304還包含閃速存儲(chǔ)器次系統(tǒng),其具有可供執(zhí)行單元集區(qū)306使用的一個(gè)或多個(gè)閃速存儲(chǔ)器,并可用以儲(chǔ)存數(shù)據(jù)或一般的存儲(chǔ)器存取,例如頂點(diǎn)著色器線程可儲(chǔ)存數(shù)據(jù)以供后續(xù)的三角形設(shè)置單元使用。此外,執(zhí)行單元集區(qū)306的每一個(gè)執(zhí)行單元可各自具有執(zhí)行單元緩沖器,用以儲(chǔ)存此執(zhí)行單元本身的后續(xù)線程所需使用的數(shù)據(jù)。如上所述,繪圖管線的可編程階段包含頂點(diǎn)著色器308、幾何著色器310、像素著色器312都是在執(zhí)行單元集區(qū)306所執(zhí)行。由于執(zhí)行單元集區(qū)306通常是可執(zhí)行多線程操作的處理核心單元,執(zhí)行單元集區(qū)控制單元304需負(fù)責(zé)執(zhí)行單元集區(qū)306的線程調(diào)度。當(dāng)執(zhí)行單元集區(qū)控制單元304接收到執(zhí)行某一可編程著色器的要求時(shí),其會(huì)指示執(zhí)行單元集區(qū)306中的某一執(zhí)行單元建立一個(gè)新線程來執(zhí)行著色器要求。執(zhí)行單元集區(qū)控制單元304可管理執(zhí)行單元集區(qū)306的相互載入,以及將某一著色器的資源轉(zhuǎn)移給另一著色器來改善管線整理效能,相關(guān)管理技術(shù)為已知技術(shù),在此不贅述。舉例來說,如果以繪圖處理單元300的數(shù)據(jù)總處理量來看,像素著色器312是造成瓶頸的源頭,那么執(zhí)行單元集區(qū)控制單元304可以配置更多的執(zhí)行單元資源給像素著色器312來做改善。圖4為本發(fā)明一實(shí)施例的執(zhí)行單元400的部份元件方塊圖。本實(shí)施例的單一執(zhí)行單元400可同時(shí)執(zhí)行多個(gè)指令,因此執(zhí)行單元的集區(qū)可同時(shí)執(zhí)行多個(gè)著色器線程。執(zhí)行單元400包含線程控制器402,用以管理分派給執(zhí)行單元400的任務(wù),以及其中的有效(active)線程和休眠(sleeping)線程。有效線程是指對(duì)應(yīng)于該任務(wù)的線程已經(jīng)準(zhǔn)備好可執(zhí)行,也就是說,線程所需要的數(shù)據(jù)可被取得因此執(zhí)行單元可以執(zhí)行該線程。而休眠線程則是指線程控制器402所指派的任務(wù)尚未準(zhǔn)備好,亦即休眠線程處在等待繪圖管線其他元件傳送數(shù)據(jù)的狀態(tài)。線程控制器402包含指令擷取仲裁器0404和指令擷取仲裁器1406,而在本實(shí)施例中線程則可分為偶數(shù)線程和奇數(shù)線程。舉例而言,如果執(zhí)行單元400可執(zhí)行16個(gè)線程,其中8個(gè)線程,也就是偶數(shù)線程可分派給指令擷取仲裁器0404,而剩下8個(gè)奇數(shù)線程則分派給指令擷取仲裁器1406。將所有線程分成兩組并且具有個(gè)別的指令擷取仲裁器可減少指令擷取所造成的指令延遲,進(jìn)而增進(jìn)執(zhí)行單元400的數(shù)據(jù)總處理量。當(dāng)然,于其他實(shí)施例中線程可以其它方式分組或配置。指令擷取仲裁器404和406可以各自獨(dú)立替執(zhí)行單元400的有效線程仲裁其要求來擷取指令,仲裁方式是依據(jù)提出要求的線程的時(shí)序。自線程接收到指令要求之后,指令擷取仲裁器404和406從指令閃速存儲(chǔ)器408擷取指令。指令閃速存儲(chǔ)器408可包含指令閃速控制器,用以執(zhí)行閃速命中測(cè)試來判斷所要求的指令是否存在指令閃速存儲(chǔ)器408之內(nèi)。如果指令不在指令閃速存儲(chǔ)器408之內(nèi),或是閃速命中測(cè)試的結(jié)果是誤失,就必須通過二階L2閃速存儲(chǔ)器存取單元412從二階L2閃速存儲(chǔ)器或其他存儲(chǔ)器索取指令。擷取到的指令會(huì)在指令傳播總線413上傳播給偶數(shù)線程417和奇數(shù)線程419,如此一來,若有一個(gè)以上的線程要求相同指令時(shí),至少可以減少一次指令擷取,進(jìn)而減少指令延遲。也就是說,如果有不只一個(gè)線程向指令閃速存儲(chǔ)器408要求同一個(gè)指令,不需要分別為各個(gè)線程擷取和傳送指令,因?yàn)樗蟮闹噶钍峭ㄟ^指令傳播總線413回傳至指令閃速存儲(chǔ)器408,而執(zhí)行單元400中無論是偶數(shù)線程417或奇數(shù)線程419都可存取指令傳播總線413。指令擷取到之后,偶數(shù)線程417和奇數(shù)線程419之內(nèi)的線程會(huì)判斷所擷取的指令是否需要與常數(shù)閃速存儲(chǔ)器410、頂點(diǎn)屬性閃速存儲(chǔ)器414、共同存儲(chǔ)器文件0416和共同存儲(chǔ)器文件1418相互動(dòng)。舉例來說,材質(zhì)特性可能儲(chǔ)存于常數(shù)閃速存儲(chǔ)器410,還有其他對(duì)某一內(nèi)文而言不會(huì)改變的參數(shù),以及所要渲染的物體的所有頂點(diǎn)的常數(shù)。此外光源特性也是儲(chǔ)存于常數(shù)閃速存儲(chǔ)器410,因?yàn)檫@些參數(shù)通常在幀產(chǎn)生的過程中是穩(wěn)定不變的。如所繪示,共同暫存器文件分成偶數(shù)和奇數(shù)群組,與線程劃分為偶數(shù)和奇數(shù)群組相同。如果指令需要從常數(shù)閃速存儲(chǔ)器410存取數(shù)據(jù),那么在所需的數(shù)據(jù)準(zhǔn)備好之前,指令不會(huì)被發(fā)送出去。同樣地,如果指令需要常數(shù)閃速存儲(chǔ)器410的數(shù)據(jù),指令在數(shù)據(jù)從常數(shù)閃速存儲(chǔ)器410獲得數(shù)據(jù)之前不會(huì)被發(fā)送。更進(jìn)一步,如果所需的數(shù)據(jù)是位于繪圖處理單元之內(nèi),但位于執(zhí)行單元外部,在取得這些外部數(shù)據(jù)之前指令不會(huì)被發(fā)送。舉個(gè)例子,某個(gè)指令需要從執(zhí)行單元外部的元件擷取紋理數(shù)據(jù)并儲(chǔ)存于暫存器,線程就必須等待所要求的數(shù)據(jù)成功擷取并回傳。當(dāng)指令的執(zhí)行所需的數(shù)據(jù)已經(jīng)準(zhǔn)備完備,線程控制器402可以發(fā)送指令以供執(zhí)行單元數(shù)據(jù)路徑420來執(zhí)行。執(zhí)行單元數(shù)據(jù)路徑420包含算術(shù)邏輯單元0422、算術(shù)邏輯單元1424和內(nèi)插器426。當(dāng)執(zhí)行單元數(shù)據(jù)路徑420對(duì)指令的執(zhí)行結(jié)束后,所產(chǎn)生的結(jié)果可以從執(zhí)行單元400的輸出緩沖器428作輸出,進(jìn)而傳送至執(zhí)行單元400外繪圖處理單元內(nèi)的元件,或是執(zhí)行單元內(nèi)的其他元件,例如頂點(diǎn)屬性閃速存儲(chǔ)器414。舉例而言,若某個(gè)指令的執(zhí)行需要更新頂點(diǎn)屬性閃速存儲(chǔ)器414內(nèi)的數(shù)據(jù),這些數(shù)據(jù)就可以在執(zhí)行單元數(shù)據(jù)路徑420執(zhí)行完畢后,通過輸出緩沖器428傳送至頂點(diǎn)屬性閃速存儲(chǔ)器414。在另一個(gè)范例中,執(zhí)行單元數(shù)據(jù)路徑420可以計(jì)算紋理座標(biāo)或其他參數(shù),然后通過輸出緩沖器428輸出至紋理單元或其他執(zhí)行單元外部的元件。請(qǐng)注意本發(fā)明各實(shí)施例中并未繪示所有的元件和數(shù)據(jù)路徑,以利于文字說明的簡(jiǎn)潔之便。例如線程控制器可以耦接至執(zhí)行單元集區(qū)控制單元,以用于接收?qǐng)?zhí)行單元需管理的任務(wù)。再者,某些元件可能需要從L2閃速存儲(chǔ)器獲取數(shù)據(jù),而L2閃速存儲(chǔ)器可能位于執(zhí)行單元外部。因此,L2閃速存儲(chǔ)器存取單元所代表的是存取L2閃速存儲(chǔ)器或其他存儲(chǔ)器的機(jī)制。接著請(qǐng)參見圖5,其繪示本發(fā)明一個(gè)實(shí)施例的常數(shù)閃速存儲(chǔ)器的方塊圖,此閃速存儲(chǔ)器可用于執(zhí)行單元內(nèi)。由于執(zhí)行單元可以同時(shí)處理對(duì)應(yīng)于多種類型的著色器操作的多個(gè)執(zhí)行線程,例如像素著色器、頂點(diǎn)著色器和幾何著色器,執(zhí)行單元地須維持多組常數(shù)以供執(zhí)行單元數(shù)據(jù)路徑來使用。舉例來說,一個(gè)同時(shí)執(zhí)行像素著色器和頂點(diǎn)著色器的執(zhí)行線程的執(zhí)行單元需要維持像素著色器常數(shù)和頂點(diǎn)著色器常數(shù)。此外執(zhí)行單元還必須維持常數(shù)的多個(gè)內(nèi)文以及每個(gè)常數(shù)內(nèi)文的多個(gè)版本。例如執(zhí)行單元內(nèi)有兩條執(zhí)行線程在執(zhí)行像素著色器操作,而執(zhí)行線程內(nèi)存在多個(gè)不同的內(nèi)文,因此執(zhí)行單元必須維持至少兩組不同內(nèi)文的像素著色器常數(shù)。根據(jù)上述原因,本實(shí)施例的常數(shù)閃速存儲(chǔ)器可用以維持不同類型的著色器執(zhí)行線程的至少兩組常數(shù)內(nèi)文,同理執(zhí)行單元也必須維持各內(nèi)文的常數(shù)的多個(gè)變化版本。 舉例來說,如果存儲(chǔ)器中的頂點(diǎn)著色器內(nèi)文的一個(gè)常數(shù)被頂點(diǎn)著色器執(zhí)行線程所改變,常數(shù)閃速存儲(chǔ)器可以維持此常數(shù)的先前版本以及從存儲(chǔ)器中擷取更新后的版本。如此一來, 執(zhí)行單元內(nèi)的其他頂點(diǎn)著色器執(zhí)行線程可以根據(jù)需求存取此常數(shù)的先前版本或更新版本。
常數(shù)閃速存儲(chǔ)器500包含頭標(biāo)表502、閃速存儲(chǔ)器506、對(duì)照表504。著色器內(nèi)文的各個(gè)常數(shù)可以根據(jù)頭標(biāo)表502的定義儲(chǔ)存在閃速存儲(chǔ)器內(nèi)。例如,頭標(biāo)表502可以根據(jù)著色器類型、內(nèi)文或內(nèi)文識(shí)別符概括常數(shù)的分組。在本實(shí)施例中,對(duì)應(yīng)于同一著色器類型和內(nèi)文識(shí)別符的常數(shù)連續(xù)地將基底地址存入閃速存儲(chǔ)器。像素著色器可以直接向常數(shù)閃速存儲(chǔ)器500對(duì)某個(gè)常數(shù)提出要求,但不需要有關(guān)該常數(shù)位置的信息。著色器執(zhí)行線程只需要知道該常數(shù)在某個(gè)內(nèi)文內(nèi)位置即可向常數(shù)閃速存儲(chǔ)器500提出要求。在圖5的實(shí)施例中,如果像素著色器執(zhí)行線程內(nèi)有一個(gè)內(nèi)文識(shí)別符為O的內(nèi)文,那么只需要提出對(duì)內(nèi)文識(shí)別符O 的常數(shù)要求,常數(shù)閃速存儲(chǔ)器500就會(huì)回傳頭標(biāo)表502中對(duì)應(yīng)的基底地址或其附近的第一常數(shù)。同樣地,如果頂點(diǎn)著色器執(zhí)行線程內(nèi)有一個(gè)內(nèi)文識(shí)別符為I的內(nèi)文,那么只需要提出對(duì)內(nèi)文識(shí)別符I的常數(shù)要求,常數(shù)閃速存儲(chǔ)器500就會(huì)回傳頭標(biāo)表502中對(duì)應(yīng)的基底地址或其附近的第二常數(shù)。
另外,常數(shù)閃速存儲(chǔ)器500也可以儲(chǔ)存常數(shù)經(jīng)過執(zhí)行單元內(nèi)的執(zhí)行續(xù)處理的多個(gè)版本。本實(shí)施例的對(duì)照表504可維持有關(guān)經(jīng)過各著色器執(zhí)行線程處理的常數(shù)的數(shù)據(jù),還有追蹤每個(gè)常數(shù)的各版本,舉例來說,對(duì)照表504的第一個(gè)項(xiàng)目包含經(jīng)過頂點(diǎn)著色器執(zhí)行線程處理的頂點(diǎn)著色器常數(shù)A。因此,常數(shù)閃速存儲(chǔ)器500可已在閃速存儲(chǔ)器中維持此常數(shù)的每個(gè)版本,以備在其他執(zhí)行線程需要時(shí)可以使用。常數(shù)值的多個(gè)版本可依上述范例來維持。
常數(shù)閃速存儲(chǔ)器500還包含先進(jìn)先出緩沖器FIF0508,用以傳送數(shù)據(jù)給執(zhí)行單元所處理的著色器線程或是其他線程。FIF0508可以配置為任何大小而包含不同數(shù)目的項(xiàng)目, 以符合常數(shù)閃速存儲(chǔ)器500所在的執(zhí)行單元的實(shí)際需要。舉例來說,當(dāng)某一著色器線程向常數(shù)閃速存儲(chǔ)器500要求常數(shù)時(shí),可利用頭標(biāo)表502和對(duì)照表504來定位此常數(shù)并傳送給 FIF0508。FIF0508接著可以傳播訊號(hào)給執(zhí)行單元的其他元件以示意此常數(shù)已準(zhǔn)備好。因?yàn)閳?zhí)行單元可同時(shí)處理多個(gè)指令,F(xiàn)IF0508允許在先前線程所要求的常數(shù)擷取完成并準(zhǔn)備傳送之前,其他線程即可發(fā)送其他常數(shù)要求。常數(shù)閃速存儲(chǔ)器500的總數(shù)據(jù)處理量可因此提高,因?yàn)槌?shù)閃速存儲(chǔ)器500可服務(wù)的線程要求數(shù)量增加了。請(qǐng)注意本發(fā)明的常數(shù)閃速存儲(chǔ)器500的頭標(biāo)表502、對(duì)照表504和FIF0508可以任何形式來實(shí)現(xiàn),本領(lǐng)域的技術(shù)人員應(yīng)可理解本實(shí)施例僅為其中一種實(shí)現(xiàn)方式。
圖6繪示本發(fā)明圖4的執(zhí)行單元的另一實(shí)施例方塊圖。除了線程控制器604、指令擷取器0606和指令擷取器1608之外,本實(shí)施例還包含執(zhí)行單元600內(nèi)有效線程610、612、 614和616,以及對(duì)應(yīng)的指令隊(duì)列。為表述簡(jiǎn)潔之便,圖6并未繪示所有的有效線程和指令隊(duì)列,本領(lǐng)域的技術(shù)人員應(yīng)可理解執(zhí)行單元600可能包含較多或較少數(shù)量的有效線程。在本實(shí)施例中執(zhí)行單元600可同時(shí)處理至少八條有效線程,而有效線程又可分為偶數(shù)群組和奇數(shù)群組。換個(gè)角度來說,執(zhí)行單元600可已包含至少八個(gè)指令隊(duì)列,分別對(duì)應(yīng)至上述至少八條有效線程。本實(shí)施例中有效線程分別包含可保持四個(gè)指令的指令隊(duì)列。指令擷取器0606 和指令擷取器1608替有效線程向指令閃速存儲(chǔ)器602擷取指令,其中指令擷取器0606代表偶數(shù)有效線程610、612,而指令擷取器1608代表奇數(shù)有效線程614、616。
請(qǐng)注意對(duì)應(yīng)于有效線程的指令隊(duì)列可用以根據(jù)從指令閃速存儲(chǔ)器或其他存儲(chǔ)器擷取指令的延遲量,因而維持較多或較少數(shù)量的指令,而不一定是四個(gè)指令。每條有效現(xiàn)成的指令都是在實(shí)際執(zhí)行之前預(yù)先擷取(prefetch),藉此減少發(fā)送指令要求給指令閃速存儲(chǔ)器的延遲,還有在指令不存在于指令閃速存儲(chǔ)器時(shí),從L2閃速存儲(chǔ)器或其他存儲(chǔ)器獲得指令所造成的延遲。再者,請(qǐng)注意將有效線程的指令的擷取與指令的解碼和執(zhí)行分離處理可以改善執(zhí)行單元的效能和總處理量。擷取到的指令可以通過指令傳播總線617傳播給偶數(shù)線程和奇數(shù)線程。如此一來,若有一個(gè)以上的線程要求相同指令時(shí),至少可以減少一次指令擷取,進(jìn)而減少指令延遲。也就是說,如果有不只一個(gè)線程向指令閃速存儲(chǔ)器602要求同一個(gè)指令,不需要分別為各個(gè)線程擷取和傳送指令,因?yàn)樗蟮闹噶钍峭ㄟ^指令傳播總線 617回傳至指令閃速存儲(chǔ)器602,而執(zhí)行單元600中無論是偶數(shù)線程或奇數(shù)線程都可存取指令傳播總線617。
每個(gè)有效線程還包含指令預(yù)解碼器(predecoder),用以判斷下一個(gè)要處理的指令是否包含常數(shù)的擷取或儲(chǔ)存,或是頂點(diǎn)屬性數(shù)據(jù)的擷取或儲(chǔ)存,或是需要與共同暫存器文件632、634其中一個(gè)互動(dòng)。如果指令預(yù)解碼器發(fā)現(xiàn)指令包含常數(shù)的擷取或儲(chǔ)存,或是需要與常數(shù)閃速存儲(chǔ)器624互動(dòng),那么該指令所在的有效線程所對(duì)應(yīng)的指令預(yù)解碼器可以向常數(shù)閃速存儲(chǔ)器仲裁器618發(fā)送要求。常數(shù)閃速存儲(chǔ)器仲裁器618是用以仲裁常數(shù)閃速存儲(chǔ)器624的存取。在本實(shí)施例中,常數(shù)閃速存儲(chǔ)器仲裁器618會(huì)對(duì)常數(shù)閃速存儲(chǔ)器624提出要求。如上所述,常數(shù)閃速存儲(chǔ)器624會(huì)處理常數(shù)擷取要求,并將所要求的常數(shù)儲(chǔ)存于常數(shù)閃速存儲(chǔ)器624的FIF0626。
相似地,如果指令隊(duì)列的指令要求頂點(diǎn)屬性數(shù)據(jù)的擷取或儲(chǔ)存,或是需要與頂點(diǎn)屬性閃速存儲(chǔ)器622互動(dòng),那么指令預(yù)解碼器可以向頂點(diǎn)屬性閃速存儲(chǔ)器仲裁器622發(fā)送要求。頂點(diǎn)屬性閃速存儲(chǔ)器628會(huì)處理常數(shù)擷取要求,并將所要求的頂點(diǎn)屬性數(shù)據(jù)儲(chǔ)存于與頂點(diǎn)屬性閃速存儲(chǔ)器628耦接的FIF0630。如果指令需要與共同暫存器文件632、634其中一個(gè)互動(dòng),那么該指令所在的有效線程所對(duì)應(yīng)的指令預(yù)解碼器可以向共同暫存器仲裁器 620發(fā)送要求。共同暫存器仲裁器620是用以仲裁共同暫存器文件0632或是共同暫存器文件1634的存取要求,其可以根據(jù)指令是來自偶數(shù)線程或是奇數(shù)線程,發(fā)送指令要求給共同暫存器文件0632或共同暫存器文件1634。
請(qǐng)注意根據(jù)圖6的執(zhí)行單元架構(gòu),因?yàn)槌?shù)閃速存儲(chǔ)器624、共同暫存器文件0632 和共同暫存器文件1634、頂點(diǎn)屬性閃速存儲(chǔ)器628的存取要求可以在指令于執(zhí)行單元數(shù)據(jù)路徑636執(zhí)行之前先發(fā)送和處理,如此一來減少了處理瓶頸,執(zhí)行單元的總處理量可以獲得提升。舉例來說,如果指令包含常數(shù)擷取要求,而且常數(shù)閃速存儲(chǔ)器需要從L2閃速存儲(chǔ)器或是其他存儲(chǔ)器擷取所要求的常數(shù),那么可能需要多耗費(fèi)數(shù)個(gè)時(shí)脈周期來完成。然而本發(fā)明的執(zhí)行單元?jiǎng)t不需要暫停線程來等待常數(shù)擷取,因?yàn)閳?zhí)行單元可以同時(shí)處理其他指令,例如對(duì)共同暫存器文件0632和共同暫存器文件1634,或是頂點(diǎn)屬性閃速存儲(chǔ)器628的要求。
如上所述,執(zhí)行單元600還包含執(zhí)行單元數(shù)據(jù)路徑636,用以利用從常數(shù)閃速存儲(chǔ)器624、共同暫存器文件0632、共同暫存器文件1634,或是頂點(diǎn)屬性閃速存儲(chǔ)器628所擷取的數(shù)據(jù)執(zhí)行指令。線程控制器604在指令執(zhí)行所需的數(shù)據(jù)準(zhǔn)備完成之后可發(fā)送指令給執(zhí)行單元數(shù)據(jù)路徑636。舉例來說,在指令需要向常數(shù)閃速存儲(chǔ)器624要求常數(shù)的情況下,當(dāng)所要求的常數(shù)已經(jīng)儲(chǔ)存在常數(shù)閃速存儲(chǔ)器FIF0626時(shí),那么線程控制器604可以發(fā)送指令給執(zhí)行單元數(shù)據(jù)路徑636,而執(zhí)行單元數(shù)據(jù)路徑636可以從常數(shù)閃速存儲(chǔ)器FIF0626讀取數(shù)據(jù),并且把數(shù)據(jù)通過數(shù)據(jù)輸出緩沖器644輸出。同樣地,在指令需要與共同暫存器文件0632或共同暫存器文件1634其中一個(gè)互動(dòng)的情況下,當(dāng)指令準(zhǔn)備好可被執(zhí)行單元數(shù)據(jù)路徑636所執(zhí)行時(shí),線程控制器604可以發(fā)送指令給執(zhí)行單元數(shù)據(jù)路徑636。換句話說,當(dāng)指令執(zhí)行所需的數(shù)據(jù)準(zhǔn)備好時(shí),線程控制器604可以發(fā)送指令以供執(zhí)行。除此之外,為了更近一步改善執(zhí)行單元的總處理量,本發(fā)明可以對(duì)執(zhí)行單元數(shù)據(jù)路徑636進(jìn)行量測(cè)以最佳化指令的執(zhí)行。舉例來說,可以將兩個(gè)指令合并來改善執(zhí)行單元的總處理量,一個(gè)是對(duì)某一個(gè)共同暫存器文件的兩個(gè)數(shù)值做運(yùn)算的算術(shù)指令,一個(gè)是接續(xù)將運(yùn)算結(jié)果存入另一個(gè)共同暫存器文件的指令。合并后的指令只需執(zhí)行算術(shù)運(yùn)算并將結(jié)果存入目的暫存器,減少了將算術(shù)指令儲(chǔ)存于共同暫存器文件的執(zhí)行。實(shí)現(xiàn)方式是分析指令隊(duì)列內(nèi)的指令,或是在編譯器(compiler)將軟件程序碼轉(zhuǎn)譯為機(jī)器指令時(shí)來進(jìn)行。舉例來說,編譯器在將軟件程序碼轉(zhuǎn)譯為機(jī)器指令可進(jìn)行識(shí)別來判斷是否有如上述先執(zhí)行算術(shù)指令,接續(xù)將結(jié)果搬移至另一個(gè)共同暫存器文件的情況,在這種情況下,編譯器可以產(chǎn)生單一指令來合并算術(shù)指令和搬移結(jié)果的指令,而非產(chǎn)生兩個(gè)分離的指令。在本發(fā)明的另一個(gè)實(shí)施例中,執(zhí)行單元的線程所執(zhí)行的共同算術(shù)指令包含紋理座標(biāo)的計(jì)算和將紋理座標(biāo)存入共同暫存器文件的某一個(gè)暫存器。一般來說,此線程執(zhí)行完紋理座標(biāo)計(jì)算之后的下一個(gè)指令會(huì)是采樣指令,或是將紋理座標(biāo)輸出至紋理單元或是其他元件的輸出指令,紋理座標(biāo)的輸出是通過數(shù)據(jù)輸出緩沖器來實(shí)現(xiàn)的。利用上述的架構(gòu),這兩個(gè)指令可以合并成一個(gè)指令,計(jì)算紋理座標(biāo)和輸出至指令的紋理單元或是其他管線元件。因此,本發(fā)明的架構(gòu)下的執(zhí)行單元可以允許至少五個(gè)操作同時(shí)間進(jìn)行。舉例來說,執(zhí)行單元可以同時(shí)執(zhí)行常數(shù)閃速存儲(chǔ)器擷取、頂點(diǎn)屬性閃速存儲(chǔ)器擷取、常數(shù)暫存器文件O擷取、常數(shù)暫存器文件I擷取、以及自執(zhí)行單元路徑輸出數(shù)據(jù),輸出可以是如上述將紋理座標(biāo)輸出至紋理單元或是其他元件。圖7繪示本發(fā)明一實(shí)施例的方法流程圖,其中各項(xiàng)步驟可由執(zhí)行單元或是執(zhí)行單元的元件來執(zhí)行,例如通過對(duì)應(yīng)于各著色器的線程來執(zhí)行被分派的指令。首先于步驟702,一開始可分支為兩個(gè)平行流程,第一個(gè)流程描述指令擷取和隊(duì)列于線程階層的仲裁,第二個(gè)流程描述指令階層的執(zhí)行仲裁和調(diào)度。線程階層起始于步驟718,決定需指令預(yù)取的有效線程,其方式可依據(jù)執(zhí)行單元內(nèi)有效線程的時(shí)序,選擇替最舊(oldest)的線程預(yù)取指令。另一種方式是選擇自上一次預(yù)取之后等待時(shí)間最長(zhǎng)的線程,本領(lǐng)域的技術(shù)人員應(yīng)可理解尚有其它選擇方式。步驟720中,從指令閃速存儲(chǔ)器中替所選擇的有效線程擷取指令,如果指令不存在于指令閃速存儲(chǔ)器,則必須從L2閃速存儲(chǔ)器或是其他存儲(chǔ)器中擷取指令。所擷取到的指令會(huì)通過傳播總線傳送給有效線程,如步驟722所示。所有的有效線程皆可通過傳播總線獲取指令,因此若有一個(gè)以上的線程要求相同的指令,可以減少重復(fù)擷取相同指令所產(chǎn)生的延遲。也就是說,在不同線程要求相同指令的情況下,不需要逐一為每個(gè)線程擷取指令,因?yàn)樗芯€程都可通過傳播總線獲取指令,不管線程是屬于偶數(shù)群組或奇數(shù)群組。接著在步驟724中有效線程會(huì)將指令放入其指令隊(duì)列,如上所述,執(zhí)行單元中的每個(gè)有效線程都具有各自的指令隊(duì)列,指令隊(duì)列的大小可儲(chǔ)存一定數(shù)量的指令來減少向指令閃速存儲(chǔ)器擷取指令的延遲。
指令階層的流程起始于步驟704,解碼或是預(yù)解碼某一有效線程所要執(zhí)行的下一個(gè)指令,據(jù)此決定該指令所需的操作類型。步驟706中判斷指令操作的類型,例如常數(shù)閃速存儲(chǔ)器存取要求、頂點(diǎn)屬性閃速存儲(chǔ)器存取要求、共同暫存器文件存取要求、或是執(zhí)行單元數(shù)據(jù)路徑可直接執(zhí)行的操作。于步驟712中,如果指令需要擷取或儲(chǔ)存常數(shù),或是與常數(shù)閃速存儲(chǔ)器之間有互動(dòng),將該指令傳送至常數(shù)閃速存儲(chǔ)器。于步驟710中,如果指令需要擷取或儲(chǔ)存頂點(diǎn)屬性,或是與頂點(diǎn)屬性閃速存儲(chǔ)器之間有互動(dòng),將該指令傳送至頂點(diǎn)屬性閃速存儲(chǔ)器。于步驟708中,如果指令需要與共同暫存器文件之間有互動(dòng),將該指令傳送至共同暫存器文件。于步驟714中,如果執(zhí)行單元數(shù)據(jù)路徑可直接執(zhí)行指令,將該指令傳送至執(zhí)行單元數(shù)據(jù)路徑。當(dāng)執(zhí)行單元數(shù)據(jù)路徑對(duì)指令執(zhí)行完畢,步驟716將數(shù)據(jù)輸出至目的地,例如紋理單元之類執(zhí)行單元內(nèi)的元件,或是執(zhí)行單元的外部元件。
本發(fā)明的各實(shí)施例皆可以硬件、軟件、韌體或是上述的任意組合來實(shí)現(xiàn)。于部分實(shí)施例中,數(shù)據(jù)的壓縮可以通過執(zhí)行軟件或固件來實(shí)現(xiàn),而軟件或固件可以是儲(chǔ)存于存儲(chǔ)器中并可由適當(dāng)?shù)闹噶顖?zhí)行系統(tǒng)來執(zhí)行。于其他實(shí)施例中,本發(fā)明可以硬件方式來實(shí)現(xiàn)諸如三角形設(shè)置或?qū)傩栽O(shè)置階段,硬件可能是以下各類的任意組合離散邏輯電路、特殊應(yīng)用整合電路(ASIC)、可編程門陣列(PGA)、場(chǎng)域可編程門陣列(FPGA)。
本發(fā)明的流程方法實(shí)施例所包含的各項(xiàng)操作或方塊應(yīng)解讀為程序碼的模塊、片段或部分,其包含可實(shí)現(xiàn)特定邏輯功能或步驟的一或多個(gè)指令。任何可實(shí)現(xiàn)本發(fā)明各實(shí)施例的目的和功能的其他變形或替換實(shí)施例仍屬于本發(fā)明所涵蓋的范圍,在不脫離本發(fā)明精神之下,其他實(shí)施例亦可依據(jù)功能特性改變操作順序或同步執(zhí)行。上述各項(xiàng)操作也可理解為可實(shí)現(xiàn)特定邏輯功能或步驟的硬件邏輯電路的模塊或部分。
本領(lǐng)域的技術(shù)人員應(yīng)可理解,上述所提的執(zhí)行單元還可包含額外的元件以實(shí)現(xiàn)各項(xiàng)功能和操作。雖然本發(fā)明以多個(gè)實(shí)施例揭示如上,但本領(lǐng)域技術(shù)人員應(yīng)可理解上述實(shí)施例的各種替換、變更或改進(jìn)仍屬于本發(fā)明的范圍。
權(quán)利要求
1.一種繪圖處理單元,包含 一執(zhí)行單元,可用以執(zhí)行多線程操作,該執(zhí)行單元包含一線程控制器,該線程控制器包含一第一指令擷取仲裁器和一第二指令擷取仲裁器;其中 該第一指令擷取仲裁器用以代表該執(zhí)行單元的多個(gè)第一線程來擷取指令;以及 該第二指令擷取仲裁器用以代表該執(zhí)行單元的多個(gè)第二線程來擷取指令。
2.如權(quán)利要求I所述的繪圖處理單元,其中該執(zhí)行單元可用以處理至少八個(gè)有效線程,其中該有效線程的第一部分被分配給該第一指令擷取仲裁器,該有效線程的其余部分被分配給該第二指令擷取仲裁器,該有效線程的該第一部分包含至少四個(gè)。
3.如權(quán)利要求2所述的繪圖處理單元,還包含 一指令閃速存儲(chǔ)器,用以傳送指令給該至少八個(gè)有效線程; 其中該第一指令擷取仲裁器用以代表該有效線程的該第一部分從該指令閃速存儲(chǔ)器擷取指令,該第二指令擷取仲裁器用以代表該有效線程的該其余部分從該指令閃速存儲(chǔ)器掘取指令; 其中該第一指令擷取仲裁器和該第二指令擷取仲裁器可用以傳播所擷取的指令給該至少八個(gè)有效線程。
4.如權(quán)利要求3所述的繪圖處理單元,其中該至少八個(gè)有效線程的每一個(gè)還包含 一指令隊(duì)列,用以維持該指令閃速存儲(chǔ)器所傳送的第一指令;以及 一指令預(yù)解碼器,用以決定該指令隊(duì)列中的一第二指令的數(shù)據(jù)存取要求類型。
5.如權(quán)利要求4所述的繪圖處理單元,其中該第二指令的數(shù)據(jù)存取要求類型包含至少下列一個(gè)常數(shù)閃速存儲(chǔ)器要求、頂點(diǎn)屬性閃速存儲(chǔ)器要求、共同暫存器文件要求和一執(zhí)行單元數(shù)據(jù)路徑可直接執(zhí)行的要求。
6.如權(quán)利要求4所述的繪圖處理單元,其中該指令預(yù)解碼器還用以發(fā)送該第二指令的要求給至少下列一個(gè)該常數(shù)閃速存儲(chǔ)器仲裁器、該頂點(diǎn)屬性閃速存儲(chǔ)器仲裁器、該共同暫存器文件仲裁器和該執(zhí)行單元數(shù)據(jù)路徑。
7.如權(quán)利要求4所述的繪圖處理單元,其中該執(zhí)行單元可同時(shí)擷取該第一指令以及決定該指令隊(duì)列中的該第二指令的該數(shù)據(jù)存取要求的類型。
8.如權(quán)利要求4所述的繪圖處理單元,其中該線程控制器用以發(fā)送一第三指令給一執(zhí)行單元數(shù)據(jù)路徑。
全文摘要
本發(fā)明涉及增進(jìn)繪圖處理單元的總處理量的方法與系統(tǒng),此系統(tǒng)包含可執(zhí)行多個(gè)線程的執(zhí)行單元,該執(zhí)行單元可同時(shí)處理對(duì)常數(shù)閃速存儲(chǔ)器、頂點(diǎn)屬性閃速存儲(chǔ)器、至少一個(gè)共同暫存器文件以及執(zhí)行單元數(shù)據(jù)路徑的存取要求。
文檔編號(hào)G06T1/60GK102982503SQ201210536179
公開日2013年3月20日 申請(qǐng)日期2011年3月30日 優(yōu)先權(quán)日2010年4月21日
發(fā)明者洪洲, 焦陽(yáng) 申請(qǐng)人:威盛電子股份有限公司