TWI474280B - 增進繪圖處理單元之總處理量的方法與系統 - Google Patents

增進繪圖處理單元之總處理量的方法與系統 Download PDF

Info

Publication number
TWI474280B
TWI474280B TW100110084A TW100110084A TWI474280B TW I474280 B TWI474280 B TW I474280B TW 100110084 A TW100110084 A TW 100110084A TW 100110084 A TW100110084 A TW 100110084A TW I474280 B TWI474280 B TW I474280B
Authority
TW
Taiwan
Prior art keywords
instruction
cache memory
constant
execution unit
threads
Prior art date
Application number
TW100110084A
Other languages
English (en)
Other versions
TW201137786A (en
Inventor
Jeff Yang Jiao
Mike Hong
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/764,256 external-priority patent/US8564604B2/en
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW201137786A publication Critical patent/TW201137786A/zh
Application granted granted Critical
Publication of TWI474280B publication Critical patent/TWI474280B/zh

Links

Description

增進繪圖處理單元之總處理量的方法與系統
本發明係關於改善繪圖處理單元之總處理量的方法與系統,特別是可同時處理多個線程之多個存取要求的執行單元改善方法和系統。
眾所皆知,三維電腦繪圖技術著重於將三維(3D)物體以二維(2D)影像的方式呈現出來,並顯示於諸如陰極線真空管(CRT)螢幕或液晶螢幕(LCD)之類的顯示裝置上。此三維物體可以是簡單的幾何基元(primitive),例如點、線段、三角形或是多邊形(polygon)。較為複雜的物體則是以一系列相連之平面多邊形的方式呈現在顯示裝置上,例如一連串的平面三角形。所有的圖形基元都可以單一頂點或一組頂點的方式來表示,例如以座標(X,Y,Z)來定義一個點,或是線段的某一端點,或是多邊形的某一個頂點。
為了產生用來代表三維物體的二維投影資料使物體可呈現在顯示裝置上,圖形基元的頂點需要經過一連串的操作,以及繪圖顯像管線的多個階段來處理。一般的管線是由一連串相連的處理單元或階段所組成,上一階段的輸出可做為下一階段的輸入。對於繪圖處理單元而言,管線階段包括以下:逐一頂點操作,基元合成操作,像素操作,像素合成操作,光柵掃描(rasterization)操作以及碎型(fragment)操作等等。
在典型的繪圖顯示系統中,可利用影像資料庫來儲存場景中物體的敘述符。物體可以多個小多邊形來表示,這些小多邊形是涵蓋物體表面的多邊形,如同牆面上的磁磚。每一個多邊形又可以頂點座標清單以及表面材質特性來表示,甚或再包括每一頂點相對於表面的法線向量。頂點座標清單可以是模型空間的XYZ座標,表面材質特性可包括顏色,紋理或亮度等。對於具有複雜曲面的三維物體,通常是以三角形或四邊形來表示,而四邊形又可拆解為一對三角形。
當使用者決定了觀看的角度,轉換引擎單元便將物體座標轉換至相對於觀賞角度。此外,使用者可以指定視野範圍,所產生之影像的大小,以及可見物體的後方是否包含某一背景或是將背景刪除。
當視野區域選定之後,裁剪單元將位於視野區域之外的多邊形剔除,並且將部份位於視野區域之外部份位於視野區域之內的多邊形加以裁剪。裁減後的多邊形對應至原多邊形位於視野區域之內的部份,其裁減後的邊緣對應至視野區域的邊界。接著多邊形的頂點會傳遞到下一個管線階段,包含每一頂點在視野區域的座標(XY)以及其相對的深度值(Z)。之後一般的繪圖處理系統會進行光源模型處理,再將多邊形以及其顏色值傳遞至光柵掃描器。
對每一個多邊形而言,光柵掃描器會判斷哪些像素位在此多邊形,並將其對應的顏色值和深度值寫入畫幀緩衝器(frame buffer)。光柵掃描器會比較目前處理之多邊形其像素的深度值與原先儲存在畫幀緩衝器相對應位置之像素的深度值,如果多邊形像素的深度值較小,表示其位於畫幀緩衝器所儲存之像素的前方,則以多邊形像素的深度值取代原畫幀緩衝器的深度值,因為目前處理的多邊形會遮蔽原先儲存於畫幀緩衝器內的多邊形。上述步驟會持續重複直到所有的多邊形都已顯像處理過。之後,影像控制器會將畫幀緩衝器的內容以逐一掃描線的方式呈現在顯示裝置上。
實現即時顯像的典型方式是以像素來顯示多邊形,此像素可能位於多邊形之內或之外,所產生的多邊形邊緣在靜態顯示之下可能產生不規則外觀,而在動態顯示之下則是模糊的影像。其問題的背後成因在於鋸齒(aliasing)效應,而用以降低此效應的方法就稱為反鋸齒(anti-aliasing)技術。
以螢幕為基礎的反鋸齒方法並不需要欲顯像之物體的相關資訊,因為此種方法只需要繪圖管線的輸出樣本。其中一種典型的反鋸齒方法是利用掃描線反鋸齒技術,稱為多取樣反鋸齒(Multi-Sample Anti-Aliasing,MSAA)方法,此方法在每一次傳遞時都對單一像素作一個以上的取樣。從每一個像素所取樣出來的樣本,或稱做次像素的數量即是所謂的取樣率,一般來說取樣率越高就會耗費越多的記憶體流量。
雖然上文僅簡略說明繪圖處理單元之各個元件的大致操作,本領域熟習技藝者應可理解繪圖資料的處理十分繁複,因此提高處理效能與降低設計複雜度為常見考量和需求。若能提高繪圖處理單元的資料總處理量(throughput),不僅可達到提高處理效能的目的,亦可在維持一定效能之下,減少硬體需求的複雜度。
本發明的一實施例提供一種繪圖處理單元,包含:一執行單元,用以處理可程式化著色器操作,並可用以同時處理複數個線程的處理操作;一第一記憶體單元,用以形成一暫存器檔案來調節該複數個線程的暫存器操作,該記憶體單元包含複數個記憶庫,其中複數個第一記憶庫分配給複數個第一線程,複數個第二記憶庫分配給複數個第二線程;一第二記憶體單元,用以形成一常數快取記憶體來調節該執行單元的該複數個線程所對應之複數個著色器操作的常數存取,該常數快取記憶體用以儲存對應於該複數個著色器操作的複數個內文,並用以儲存該複數個內文的複數個常數的複數個版本;以及一第三記憶體單元,用以形成一頂點屬性快取記憶體來調節該執行單元的該複數個線程所對應之複數個著色器操作的頂點屬性存取。
本發明的另一實施例提供一種繪圖處理單元,包含:一執行單元,可用以執行多線程操作,該執行單元包含一線程控制器,該線程控制器包含一第一指令擷取仲裁器和一第二指令擷取仲裁器;其中該第一指令擷取仲裁器用以代表該執行單元的複數個第一線程來擷取指令;以及該第二指令擷取仲裁器用以代表該執行單元的複數個第二線程來擷取指令。
本發明的又一實施例一種適用於執行單元的指令處理方法,包含:對應於複數個有效線程的一第一有效線程,從一指令快取記憶體擷取一執行單元的一第一指令;傳播該第一指令給該複數個有效線程;維持該第一指令於對應於該複數個有效線程至少其中一者的一指令佇列中;解碼該指令佇列中的一第二指令;以及發送該第二指令的資料存取要求給至少下列一者:一常數快取記憶體、一頂點屬性快取記憶體、一共同暫存器檔案和一執行單元資料路徑。
以下將配合圖示來說明本發明的各個實施例,雖然本發明係藉由該些實施例來說明,但本發明不侷限於下面所揭露之實施例,下述實施例之變形、改良與等同實施方式皆屬於本發明之範圍。
本發明提供一種可提高繪圖處理單元之資料總處理量的系統和方法。在詳細探討本發明的各個實施例之前,請先參見第一圖,其繪示繪圖處理管線100的之部分元件方塊圖,特別是繪圖處理管線100的基本元件。這些基本元件包含頂點著色器110、幾何著色器120、三角形設置單元(triangle setup unit)130、跨距與像磚產生器(span and tile generator)140、屬性設置單元150、像素著色器160以及畫幀緩衝器170。上述元件的基本功能和操作為本領域習知技術,故在此不多加贅述。簡而言之,繪圖基元可以位置資料(X、Y、Z和W座標)還有亮度及紋理資料來定義,以上所有資料可傳送至頂點著色器110。如所已知,頂點著色器110可對從命令清單所接收的繪圖資料執行各種轉換,例如從世界座標轉換至視野座標,再到投影座標,最後是螢幕座標。頂點著色器110可執行的各項功能為本領域熟習技藝者已知,在此不加以敘述。頂點著色器110輸出幾何基元給幾何著色器120。
幾何著色器120所產生的幾何和其他繪圖資料會傳送到三角形設置單元130來執行三角形設置操作,其細部功能和實現方式可依據需求有所不同。一般來說,三角形設置單元130接收三角形基元的頂點資訊,並依據基元的類型執行各項操作,例如某些幾何轉換。
對每一頂點而言,所提供的幾何資訊包含X、Y、Z和W座標,其中X、Y、Z為幾何座標,而W為齊次(hoogenous)座標。如本領域熟習技藝者已知,相關轉換可能是例如從模型空間到世界空間,再到視野空間,投影空間,然後是齊次空間以及正規化裝置座標(normalized device coordinates,NDC),最後是螢幕空間。請注意,為了簡化說明之便,本發明之敘述省略部分繪圖管線元件,但該些繪圖管線元件之操作應為本領域熟習技藝者已知。舉例來說,本發明未揭露光柵掃描管線的所有階段,但本領域熟習技藝者應可理解其包含未揭露之管線階段。
以上所述之繪圖管線階段通常實現於繪圖處理單元或繪圖處理裝置之中。某些管線階段係依循已公開之應用程式介面(application program interface,API)之規範,或是多個應用程式介面群組所制定的需求限制。上述應用程式介面可能是例如3D API。下文將以另一觀點闡述繪圖管線之實現。
請參見第二圖,其繪示本發明一實施例之繪圖處理管線200的部分元件方塊圖。首先是命令串流處理器(command stream processor,CSP)252,主要用以從記憶體接收或讀取頂點。頂點可用以形成幾何基元和管線的工作項目。命令串流處理器252從記憶體讀取資料,並利用這些資料來產生繪圖管線的三角形、線段、點或其他基元,這些幾何資訊組合完畢之後接著被傳送到頂點著色器254。某些繪圖API常有的限制在於,諸如頂點著色器之類的著色器是使用者可程式化階段,也就是說使用這些API的程式設計者可以自行設計著色器,以及程式化著色器可執行的操作。因此,在第二圖中以圓角標示的管線階段即為可程式化的階段,例如頂點著色器254,這些可程式化階段可藉由繪圖處理器之處理核心單元的可程式化執行單元(或集區)的指令執行來實現。頂點著色器254藉由執行例如轉換、掃描或打光等操作來處理頂點,然後傳送給幾何著色器256。幾何著色器256所接收之輸入為一完整基元的所有頂點,並將這些頂點以單一拓樸的形式輸出,例如三角形串,線段串或是點清單等。此外幾何著色器256還可執行諸如鑲嵌和陰影錐生成等操作。
幾何著色器256輸出資料至三角形設置階段257,其用以執行例如三角形刪除(triangle trivial rejection)、行列式(determinant)計算、剔除(culling)、前屬性設置(pre-attribute setup)、邊緣函數計算以及安全頻帶剪裁(guardband clipping),其操作為本領域熟習技藝者已知,在此不贅述。三角形設置階段257輸出資訊至跨距與像磚產生器258,其用以將不需呈現於螢幕上的三角形剔除以及執行其他操作。本領域熟習技藝者應可理解繪圖管線還包含其他處理階段,例如深度測試。深度測試可以據三角形的深度值來決定此三角形是否會顯示於螢幕之上,若不需顯示則剔除此三角形。其他未討論之管線階段為本領域習知技術,故在此省略。
如果三角形設置階段257所處理之三角形沒有被跨距與像磚產生器258或其他管線階段所剔除,則屬性設置(attribute setup)階段259會對這些三角形做屬性設置操作。屬性設置階段259會產生後續管線階段所需之屬性的內插函數清單,並且對管線階段所處理之幾何基元的各項屬性值作處理。
像素著色器260則是在屬性設置階段259每次輸出可覆蓋一個完整基元的各個頂點時被啟動。如所已知,像素著色器260可執行內插或其他操作來決定輸出至畫幀緩衝器262的像素顏色值。第二圖的各元件之功能操作為本領域技術人員所熟知,在此不贅述,因此上述各元件的內部操作亦省略討論。
接著請參見第三圖,其為本發明一實施例之繪圖處理器環境的方塊圖。第三圖僅繪示有助於理解本發明的相關元件,並未完整繪示繪圖處理器之所有元件,本領域熟習技藝者應可自第三圖理解相關繪圖處理器的一般功能和架構。
於本實施例中,為敘述簡潔之便,繪圖處理單元300之部份元件被省略,但本領域熟習技藝者應可理解其中還包含其他硬體或邏輯元件。繪圖處理單元300包含執行單元集區306和執行單元集區控制單元304。執行單元集區306包含多個可程式化的執行單元,而執行單元集區控制單元304用以掌控執行單元集區306之執行單元的線程管理,以及系統使用者和繪圖處理單元300之其他元件的相互溝通。執行單元集區控制單元304還包含快取記憶體次系統,其具有可供執行單元集區306使用的一或多個快取記憶體,並可用以儲存資料或一般的記憶體存取,例如頂點著色器線程可儲存資料以供後續之三角形設置單元使用。此外,執行單元集區306的每一個執行單元可各自具有執行單元緩衝器,用以儲存此執行單元本身之後續線程所需使用的資料。
如上所述,繪圖管線的可程式化階段包含頂點著色器308、幾何著色器310、像素著色器312都是在執行單元集區306所執行。由於執行單元集區306通常是可執行多線程操作的處理核心單元,執行單元集區控制單元304需負責執行單元集區306的線程排程。當執行單元集區控制單元304接收到執行某一可程式化著色器的要求時,其會指示執行單元集區306中的某一執行單元建立一個新線程來執行著色器要求。執行單元集區控制單元304可管理執行單元集區306的相互載入,以及將某一著色器的資源轉移給另一著色器來改善管線整理效能,相關管理技術為已知技術,在此不贅述。舉例來說,如果以繪圖處理單元300之資料總處理量來看,像素著色器312是造成瓶頸的源頭,那麼執行單元集區控制單元304可以配置更多的執行單元資源給像素著色器312來做改善。
第四圖為本發明一實施例之執行單元400的部份元件方塊圖。本實施例的單一執行單元400可同時執行多個指令,因此執行單元的集區可同時執行多個著色器線程。執行單元400包含線程控制器402,用以管理分派給執行單元400的任務,以及其中的有效(active)線程和休眠(sleeping)線程。有效線程是指對應於該任務的線程已經準備好可執行,也就是說,線程所需要的資料可被取得因此執行單元可以執行該線程。而休眠線程則是指線程控制器402所指派的任務尚未準備好,亦即休眠線程處在等待繪圖管線其他元件傳送資料的狀態。線程控制器402包含指令擷取仲裁器0404和指令擷取仲裁器1406,而在本實施例中線程則可分為偶數線程和奇數線程。舉例而言,如果執行單元400可執行16個線程,其中8個線程,也就是偶數線程可分派給指令擷取仲裁器0404,而剩下8個奇數線程則分派給指令擷取仲裁器1406。將所有線程分成兩組並且具有個別的指令擷取仲裁器可減少指令擷取所造成的指令延遲,進而增進執行單元400的資料總處理量。當然,於其他實施例中線程可以其它方式分組或配置。
指令擷取仲裁器404和406可以各自獨立替執行單元400的有效線程仲裁其要求來擷取指令,仲裁方式是依據提出要求之線程的時序。自線程接收到指令要求之後,指令擷取仲裁器404和406從指令快取記憶體408擷取指令。指令快取記憶體408可包含指令快取控制器,用以執行快取命中測試來判斷所要求的指令是否存在指令快取記憶體408之內。如果指令不在指令快取記憶體408之內,或是快取命中測試的結果是誤失,就必須透過二階L2快取記憶體存取單元412從二階L2快取記憶體或其他記憶體索取指令。擷取到的指令會在指令傳播匯流排413上傳播給偶數線程417和奇數線程419,如此一來,若有一個以上的線程要求相同指令時,至少可以減少一次指令擷取,進而減少指令延遲。也就是說,如果有不只一個線程向指令快取記憶體408要求同一個指令,不需要分別為各個線程擷取和傳送指令,因為所要求的指令是透過指令傳播匯流排413回傳至指令快取記憶體408,而執行單元400中無論是偶數線程417或奇數線程419都可存取指令傳播匯流排413。
指令擷取到之後,偶數線程417和奇數線程419之內的線程會判斷所擷取的指令是否需要與常數快取記憶體410、頂點屬性快取記憶體414、共同記憶體檔案0 416和共同記憶體檔案1 418相互動。舉例來說,材質特性可能儲存於常數快取記憶體410,還有其他對某一內文而言不會改變的參數,以及所要渲染之物體的所有頂點的常數。此外光源特性也是儲存於常數快取記憶體410,因為這些參數通常在畫幀產生的過程中是穩定不變的。如所繪示,共同暫存器檔案分成偶數和奇數群組,與線程劃分為偶數和奇數群組相同。如果指令需要從常數快取記憶體410存取資料,那麼在所需的資料準備好之前,指令不會被發送出去。同樣地,如果指令需要常數快取記憶體410的資料,指令在資料從常數快取記憶體410獲得資料之前不會被發送。更進一步,如果所需的資料是位於繪圖處理單元之內,但位於執行單元外部,在取得這些外部資料之前指令不會被發送。舉個例子,某個指令需要從執行單元外部的元件擷取紋理資料並儲存於暫存器,線程就必須等待所要求的資料成功擷取並回傳。
當指令之執行所需的資料已經準備完備,線程控制器402可以發送指令以供執行單元資料路徑420來執行。執行單元資料路徑420包含算數邏輯單元0 422、算數邏輯單元1 424和內插器426。當執行單元資料路徑420對指令的執行結束後,所產生的結果可以從執行單元400的輸出緩衝器428作輸出,進而傳送至執行單元400外繪圖處理單元內的元件,或是執行單元內的其他元件,例如頂點屬性快取記憶體414。舉例而言,若某個指令的執行需要更新頂點屬性快取記憶體414內的資料,這些資料就可以在執行單元資料路徑420執行完畢後,透過輸出緩衝器428傳送至頂點屬性快取記憶體414。在另一個範例中,執行單元資料路徑420可以計算紋理座標或其他參數,然後透過輸出緩衝器428輸出至紋理單元或其他執行單元外部的元件。
請注意本發明各實施例中並未繪示所有的元件和資料路徑,以利於文字說明的簡潔之便。例如線程控制器可以耦接至執行單元集區控制單元,以用於接收執行單元需管理的任務。再者,某些元件可能需要從L2快取記憶體獲取資料,而L2快取記憶體可能位於執行單元外部。因此,L2快取記憶體存取單元所代表的是存取L2快取記憶體或其他記憶體的機制。
接著請參見第五圖,其繪示本發明一個實施例的常數快取記憶體之方塊圖,此快取記憶體可用於執行單元內。由於執行單元可以同時處理對應於多種類型之著色器操作的多個執行緒,例如像素著色器、頂點著色器和幾何著色器,執行單元地須維持多組常數以供執行單元資料路徑來使用。舉例來說,一個同時執行像素著色器和頂點著色器之執行緒的執行單元需要維持像素著色器常數和頂點著色器常數。此外執行單元還必須維持常數的多個內文以及每個常數內文的多個版本。例如執行單元內有兩條執行緒在執行像素著色器操作,而執行緒內存在多個不同的內文,因此執行單元必須維持至少兩組不同內文的像素著色器常數。根據上述原因,本實施例的常數快取記憶體可用以維持不同類型之著色器執行緒的至少兩組常數內文,同理執行單元也必須維持各內文之常數的多個變化版本。舉例來說,如果記憶體中的頂點著色器內文的一個常數被頂點著色器執行緒所改變,常數快取記憶體可以維持此常數的先前版本以及從記憶體中擷取更新後的版本。如此一來,執行單元內的其他頂點著色器執行緒可以根據需求存取此常數的先前版本或更新版本。
常數快取記憶體500包含頭標表502、快取記憶體506、對照表504。著色器內文的各個常數可以根據頭標表502的定義儲存在快取記憶體內。例如,頭標表502可以根據著色器類型、內文或內文識別符概括常數的分組。在本實施例中,對應於同一著色器類型和內文識別符的常數連續地將基底位址存入快取記憶體。像素著色器可以直接向常數快取記憶體500對某個常數提出要求,但不需要有關該常數位置的資訊。著色器執行緒只需要知道該常數在某個內文內位置即可向常數快取記憶體500提出要求。在第五圖的實施例中,如果像素著色器執行緒內有一個內文識別符為0的內文,那麼只需要提出對內文識別符0的常數要求,常數快取記憶體500就會回傳頭標表502中對應之基底位址或其附近的第一常數。同樣地,如果頂點著色器執行緒內有一個內文識別符為1的內文,那麼只需要提出對內文識別符1的常數要求,常數快取記憶體500就會回傳頭標表502中對應之基底位址或其附近的第二常數。
甚者,常數快取記憶體500也可以儲存常數經過執行單元內之執行續處理的多個版本。本實施例的對照表504可維持有關經過各著色器執行緒處理之常數的資料,還有追蹤每個常數的各版本,舉例來說,對照表504的第一個項目包含經過頂點著色器執行緒處理的頂點著色器常數A。因此,常數快取記憶體500可已在快取記憶體中維持此常數的每個版本,以備在其他執行緒需要時可以使用。常數值的多個版本可依上述範例來維持。
常數快取記憶體500還包含先進先出緩衝器FIFO 508,用以傳送資料給執行單元所處理的著色器線程或是其他線程。FIFO 508可以配置為任何大小而包含不同數目的項目,以符合常數快取記憶體500所在之執行單元的實際需要。舉例來說,當某一著色器線程向常數快取記憶體500要求常數時,可利用頭標表502和對照表504來定位此常數並傳送給FIFO 508。FIFO 508接著可以傳播訊號給執行單元的其他元件以示意此常數已準備好。因為執行單元可同時處理多個指令,FIFO 508允許在先前線程所要求之常數擷取完成並準備傳送之前,其他線程即可發送其他常數要求。常數快取記憶體500的總資料處理量可因此提高,因為常數快取記憶體500可服務的線程要求數量增加了。請注意本發明的常數快取記憶體500之頭標表502、對照表504和FIFO 508可以任何形式來實現,本領域熟習技藝者應可理解本實施例僅為其中一種實現方式。
第六圖繪示本發明第四圖之執行單元的另一實施例方塊圖。除了線程控制器604、指令擷取器0 606和指令擷取器1 608之外,本實施例還包含執行單元600內有效線程610、612、614和616,以及對應的指令佇列。為表述簡潔之便,第六圖並未繪示所有的有效線程和指令佇列,本領域熟習技藝者應可理解執行單元600可能包含較多或較少數量的有效線程。在本實施例中執行單元600可同時處理至少八條有效線程,而有效線程又可分為偶數群組和奇數群組。換個角度來說,執行單元600可已包含至少八個指令佇列,分別對應至上述至少八條有效線程。本實施例中有效線程分別包含可保持四個指令的指令佇列。指令擷取器0 606和指令擷取器1 608替有效線程向指令快取記憶體602擷取指令,其中指令擷取器0 606代表偶數有效線程610、612,而指令擷取器1 608代表奇數有效線程614、616。
請注意對應於有效線程的指令佇列可用以根據從指令快取記憶體或其他記憶體擷取指令的延遲量,因而維持較多或較少數量的指令,而不一定是四個指令。每條有效現成的指令都是在實際執行之前預先擷取(prefetch),藉此減少發送指令要求給指令快取記憶體的延遲,還有在指令不存在於指令快取記憶體時,從L2快取記憶體或其他記憶體獲得指令所造成的延遲。再者,請注意將有效線程之指令的擷取與指令的解碼和執行分離處理可以改善執行單元的效能和總處理量。擷取到的指令可以透過指令傳播匯流排617傳播給偶數線程和奇數線程。如此一來,若有一個以上的線程要求相同指令時,至少可以減少一次指令擷取,進而減少指令延遲。也就是說,如果有不只一個線程向指令快取記憶體602要求同一個指令,不需要分別為各個線程擷取和傳送指令,因為所要求的指令是透過指令傳播匯流排617回傳至指令快取記憶體602,而執行單元600中無論是偶數線程或奇數線程都可存取指令傳播匯流排617。
每個有效線程還包含指令預解碼器(predecoder),用以判斷下一個要處理的指令是否包含常數的擷取或儲存,或是頂點屬性資料的擷取或儲存,或是需要與共同暫存器檔案632、634其中一者互動。如果指令預解碼器發現指令包含常數的擷取或儲存,或是需要與常數快取記憶體624互動,那麼該指令所在之有效線程所對應的指令預解碼器可以向常數快取記憶體仲裁器618發送要求。常數快取記憶體仲裁器618是用以仲裁常數快取記憶體624的存取。在本實施例中,常數快取記憶體仲裁器618會對常數快取記憶體624提出要求。如上所述,常數快取記憶體624會處理常數擷取要求,並將所要求的常數儲存於常數快取記憶體624的FIFO 626。
相似地,如果指令佇列的指令要求頂點屬性資料的擷取或儲存,或是需要與頂點屬性快取記憶體622互動,那麼指令預解碼器可以向頂點屬性快取記憶體仲裁器622發送要求。頂點屬性快取記憶體628會處理常數擷取要求,並將所要求的頂點屬性資料儲存於與頂點屬性快取記憶體628耦接的FIFO 630。如果指令需要與共同暫存器檔案632、634其中一者互動,那麼該指令所在之有效線程所對應的指令預解碼器可以向共同暫存器仲裁器620發送要求。共同暫存器仲裁器620是用以仲裁共同暫存器檔案0 632或是共同暫存器檔案1 634的存取要求,其可以根據指令是來自偶數線程或是奇數線程,發送指令要求給共同暫存器檔案0 632或共同暫存器檔案1 634。
請注意根據第六圖的執行單元架構,因為常數快取記憶體624、共同暫存器檔案0 632和共同暫存器檔案1 634、頂點屬性快取記憶體628的存取要求可以在指令於執行單元資料路徑636執行之前先發送和處理,如此一來減少了處理瓶頸,執行單元的總處理量可以獲得提升。舉例來說,如果指令包含常數擷取要求,而且常數快取記憶體需要從L2快取記憶體或是其他記憶體擷取所要求的常數,那麼可能需要多耗費數個時脈週期來完成。然而本發明的執行單元則不需要暫停線程來等待常數擷取,因為執行單元可以同時處理其他指令,例如對共同暫存器檔案0 632和共同暫存器檔案1 634,或是頂點屬性快取記憶體628的要求。
如上所述,執行單元600還包含執行單元資料路徑636,用以利用從常數快取記憶體624、共同暫存器檔案0 632、共同暫存器檔案1 634,或是頂點屬性快取記憶體628所擷取的資料執行指令。線程控制器604在指令執行所需的資料準備完成之後可發送指令給執行單元資料路徑636。舉例來說,在指令需要向常數快取記憶體624要求常數的情況下,當所要求的常數已經儲存在常數快取記憶體FIFO 626時,那麼線程控制器604可以發送指令給執行單元資料路徑636,而執行單元資料路徑636可以從常數快取記憶體FIFO 626讀取資料,並且把資料透過資料輸出緩衝器644輸出。同樣地,在指令需要與共同暫存器檔案0 632或共同暫存器檔案1 634其中一者互動的情況下,當指令準備好可被執行單元資料路徑636所執行時,線程控制器604可以發送指令給執行單元資料路徑636。換句話說,當指令執行所需的資料準備好時,線程控制器604可以發送指令以供執行。
除此之外,為了更近一步改善執行單元的總處理量,本發明可以對執行單元資料路徑636進行量測以最佳化指令的執行。舉例來說,可以將兩個指令合併來改善執行單元的總處理量,一個是對某一個共同暫存器檔案的兩個數值做運算的算術指令,一個是接續將運算結果存入另一個共同暫存器檔案的指令。合併後的指令只需執行算術運算並將結果存入目的暫存器,減少了將算術指令儲存於共同暫存器檔案的執行。實現方式是分析指令佇列內的指令,或是在編譯器(compiler)將軟體程式碼轉譯為機器指令時來進行。舉例來說,編譯器在將軟體程式碼轉譯為機器指令可進行辨識來判斷是否有如上述先執行算術指令,接續將結果搬移至另一個共同暫存器檔案的情況,在這種情況下,編譯器可以產生單一指令來合併算術指令和搬移結果的指令,而非產生兩個分離的指令。
在本發明的另一個實施例中,執行單元之線程所執行的共同算術指令包含紋理座標的計算和將紋理座標存入共同暫存器檔案的某一個暫存器。一般來說,此線程執行完紋理座標計算之後的下一個指令會是採樣指令,或是將紋理座標輸出至紋理單元或是其他元件的輸出指令,紋理座標的輸出是透過資料輸出緩衝器來實現的。利用上述的架構,這兩個指令可以合併成一個指令,計算紋理座標和輸出至指令的紋理單元或是其他管線元件。因此,本發明之架構下的執行單元可以允許至少五個操作同時間進行。舉例來說,執行單元可以同時執行常數快取記憶體擷取、頂點屬性快取記憶體擷取、常數暫存器檔案0擷取、常數暫存器檔案1擷取、以及自執行單元路徑輸出資料,輸出可以是如上述將紋理座標輸出至紋理單元或是其他元件。
第七圖繪示本發明一實施例的方法流程圖,其中各項步驟可由執行單元或是執行單元的元件來執行,例如透過對應於各著色器之線程來執行被分派的指令。首先於步驟702,一開始可分支為兩個平行流程,第一個流程描述指令擷取和佇列於線程階層的仲裁,第二個流程描述指令階層的執行仲裁和排程。線程階層起始於步驟718,決定需指令預取的有效線程,其方式可依據執行單元內有效線程的時序,選擇替最舊(oldest)的線程預取指令。另一種方式是選擇自上一次預取之後等待時間最長的線程,本領域熟習技藝者應可理解尚有其它選擇方式。
步驟720中,從指令快取記憶體中替所選擇之有效線程擷取指令,如果指令不存在於指令快取記憶體,則必須從L2快取記憶體或是其他記憶體中擷取指令。所擷取到的指令會透過傳播匯流排傳送給有效線程,如步驟722所示。所有的有效線程皆可透過傳播匯流排獲取指令,因此若有一個以上的線程要求相同的指令,可以減少重覆擷取相同指令所產生的延遲。也就是說,在不同線程要求相同指令的情況下,不需要逐一為每個線程擷取指令,因為所有線程都可透過傳播匯流排獲取指令,不管線程是屬於偶數群組或奇數群組。
接著在步驟724中有效線程會將指令放入其指令佇列,如上所述,執行單元中的每個有效線程都具有各自的指令佇列,指令佇列之大小可儲存一定數量的指令來減少向指令快取記憶體擷取指令的延遲。
指令階層的流程起始於步驟704,解碼或是預解碼某一有效線程所要執行的下一個指令,據此決定該指令所需之操作類型。步驟706中判斷指令操作之類型,例如常數快取記憶體存取要求、頂點屬性快取記憶體存取要求、共同暫存器檔案存取要求、或是執行單元資料路徑可直接執行的操作。於步驟712中,如果指令需要擷取或儲存常數,或是與常數快取記憶體之間有互動,將該指令傳送至常數快取記憶體。於步驟710中,如果指令需要擷取或儲存頂點屬性,或是與頂點屬性快取記憶體之間有互動,將該指令傳送至頂點屬性快取記憶體。於步驟708中,如果指令需要與共同暫存器檔案之間有互動,將該指令傳送至共同暫存器檔案。於步驟714中,如果執行單元資料路徑可直接執行指令,將該指令傳送至執行單元資料路徑。當執行單元資料路徑對指令執行完畢,步驟716將資料輸出至目的地,例如紋理單元之類執行單元內的元件,或是執行單元的外部元件。
本發明的各實施例皆可以硬體、軟體、韌體或是上述的任意組合來實現。於部分實施例中,資料的壓縮可以透過執行軟體或軔體來實現,而軟體或軔體可以是儲存於記憶體中並可由適當的指令執行系統來執行。於其他實施例中,本發明可以硬體方式來實現諸如三角形設置或屬性設置階段,硬體可能是以下各類的任意組合:離散邏輯電路、特殊應用整合電路(ASIC)、可程式閘陣列(PGA)、場域可程式閘陣列(FPGA)。
本發明之流程方法實施例所包含的各項操作或方塊應解讀為程式碼的模組、片段或部分,其包含可實現特定邏輯功能或步驟的一或多個指令。任何可實現本發明各實施例的目的和功能的其他變形或替換實施例仍屬於本發明所涵蓋的範圍,在不脫離本發明精神之下,其他實施例亦可依據功能特性改變操作順序或同步執行。上述各項操作也可理解為可實現特定邏輯功能或步驟的硬體邏輯電路的模組或部分。
本發明熟習技藝者應可理解,上述所提之執行單元還可包含額外的元件以實現各項功能和操作。雖然本發明以多個實施例揭露如上,但本領域熟習技藝者應可理解上述實施例的各種替換、變更或改良仍屬於本發明之範圍。
100...繪圖處理管線
110...頂點著色器
120...幾何著色器
130...三角形設置單元
140...跨距/像磚產生器
150...屬性設置單元
160...像素著色器
170...畫幀緩衝器
200...繪圖處理管線
250...記憶體單元
252...命令串流處理器
254...頂點著色器
256...幾何著色器
257...三角形設置單元
258...跨距/像磚產生器
259...屬性設置單元
260...像素著色器
262...畫幀緩衝器
304...執行單元集區控制單元
306...執行單元集區
308...頂點著色器
310...幾何著色器
312...像素著色器
318...跨距/像磚產生器
320...三角形設置單元
322...屬性設置單元
400、600...執行單元
402、604...線程控制器
404、606...指令擷取仲裁器0
406、608...指令擷取仲裁器1
408、602...指令快取記憶體
410、624...常數快取記憶體
412...L2快取記憶體存取單元
413...指令傳播匯流排
414、628...頂點屬性快取記憶體
416、632......共同暫存器檔案0
417、610、612...偶數線程
418、634...共同暫存器檔案1
419、614、616...竒數線程
420、636...執行單元資料路徑
422、638...算數邏輯單元0
424、640...算數邏輯單元1
426、642...內插器
428、644...輸出緩衝器
500...常數快取記憶體
502...頭標表
504...對照表
506...快取記憶體
508、626、630...先進先出緩衝器
618...常數快取記憶體仲裁器
620...共同暫存器檔案仲裁器
622...頂點屬性快取記憶體仲裁器
940...存取對應之記憶體位址
第一圖為習知技術之電腦系統之繪圖管線的部份元件之功能方塊圖。
第二圖為本發明一實施例之繪圖處理管線的部分元件方塊圖。
第三圖為本發明一實施例之繪圖處理器的方塊圖。
第四圖為本發明一實施例之執行單元的內部方塊圖。
第五圖為本發明一實施例之常數快取記憶體的功能方塊圖。
第六圖為本發明另一實施例之執行單元的內部方塊圖。
第七圖為本發明一實施例之操作流程圖。
400...執行單元
402...線程控制器
404...指令擷取仲裁器0
406...指令擷取仲裁器1
408...指令快取記憶體
410...常數快取記憶體
412...L2快取記憶體存取單元
413...指令傳播匯流排
414...頂點屬性快取記憶體
416...共同暫存器檔案0
417...偶數線程
418...共同暫存器檔案1
419...竒數線程

Claims (22)

  1. 一種繪圖處理單元,包含:一執行單元,用以處理可程式化著色器操作,並可用以同時處理複數個線程的處理操作;一第一記憶體單元,用以形成一暫存器檔案來調節該複數個線程的暫存器操作,該記憶體單元包含複數個記憶庫,其中複數個第一記憶庫分配給複數個第一線程,複數個第二記憶庫分配給複數個第二線程;一第二記憶體單元,用以形成一常數快取記憶體來調節該執行單元的該複數個線程所對應之複數個著色器操作的常數存取,該常數快取記憶體用以儲存用於該複數個著色器類型之各者的複數個常數內文,並用以儲存複數個常數值及各內文中之常數值的複數個版本;以及一第三記憶體單元,用以形成一頂點屬性快取記憶體來調節該執行單元的該複數個線程所對應之複數個著色器操作的頂點屬性存取。
  2. 如專利範圍第1項所述之繪圖處理單元,更包含:一暫存器仲裁器,用以仲裁該執行單元所執行之指令的暫存器檔案存取要求。
  3. 如專利範圍第1項所述之繪圖處理單元,更包含:一常數快取記憶體仲裁器,用以仲裁該執行單元所執行之指令的常數快取記憶體存取要求。
  4. 如專利範圍第1項所述之繪圖處理單元,更包含:一頂點屬性快取記憶體仲裁器,用以仲裁該執行單元所執行之指令的頂點屬性快取記憶體存取要求。
  5. 如專利範圍第1項所述之繪圖處理單元,其中該常數快取記憶體是用以根據一頭標表來維持幾何著色器、頂點著色器和像素著色器的複數個內文的複數個常數。
  6. 如專利範圍第5項所述之繪圖處理單元,其中該常數快取記憶體是用以根據一對照表來維持該內文的該複數個版本。
  7. 如專利範圍第3項所述之繪圖處理單元,更包含:一常數快取記憶體先進先出緩衝器,用以儲存從該常數快取記憶體所擷取的該複數個常數,並使該複數個常數可以被該執行單元的該複數個線程所存取。
  8. 如專利範圍第4項所述之繪圖處理單元,更包含:一頂點屬性快取記憶體先進先出緩衝器,用以儲存從該頂點屬性快取記憶體所擷取的該複數個頂點屬性,並使該複數個頂點屬性可以被該執行單元的該複數個線程所存取。
  9. 一種繪圖處理單元,包含:一執行單元,可用以執行多線程操作,該執行單元包含一線程控制器,該線程控制器包含一第一指令擷取仲裁器和一第二指令擷取仲裁器;以及一常數快取記憶體,用以調節在該執行單元中所執行之複 數個著色器操作的常數存取,該常數快取記憶體用以儲存用於複數個著色器類型之各者的複數個常數內文,並用以儲存複數個常數值及各內文中之常數值的複數個版本,其中該第一指令擷取仲裁器用以代表該執行單元的複數個第一線程來擷取指令;其中該第二指令擷取仲裁器用以代表該執行單元的複數個第二線程來擷取指令。
  10. 如專利範圍第9項所述之繪圖處理單元,其中該執行單元可用以處理至少八個有效線程,其中該有效線程的第一部分被分配給該第一指令擷取仲裁器,該有效線程的其餘部分被分配給該第二指令擷取仲裁器,該有效線程的該第一部分包含至少四個。
  11. 如專利範圍第10項所述之繪圖處理單元,更包含:一指令快取記憶體,用以傳送指令給該至少八個有效線程;其中該第一指令擷取仲裁器用以代表該有效線程的該第一部分從該指令快取記憶體擷取指令,該第二指令擷取仲裁器用以代表該有效線程的該其餘部分從該指令快取記憶體擷取指令;其中該第一指令擷取仲裁器和該第二指令擷取仲裁器可用以傳播所擷取的指令給該至少八個有效線程。
  12. 如專利範圍第11項所述之繪圖處理單元,其中該至 少八個有效線程的每一者更包含:一指令佇列,用以維持該指令快取記憶體所傳送的第一指令;以及一指令預解碼器,用以決定該指令佇列中的一第二指令的資料存取要求類型。
  13. 如專利範圍第12項所述之繪圖處理單元,其中該第二指令的資料存取要求類型包含至少下列一者:常數快取記憶體要求、頂點屬性快取記憶體要求、共同暫存器檔案要求和一執行單元資料路徑可直接執行的要求。
  14. 如專利範圍第12項所述之繪圖處理單元,其中該指令預解碼器更用以發送該第二指令的要求給至少下列一者:該常數快取記憶體仲裁器、該頂點屬性快取記憶體仲裁器、該共同暫存器檔案仲裁器和該執行單元資料路徑。
  15. 如專利範圍第12項所述之繪圖處理單元,其中該執行單元可同時擷取該第一指令以及決定該指令佇列中的該第二指令的該資料存取要求的類型。
  16. 如專利範圍第12項所述之繪圖處理單元,其中該線程控制器用以發送一第三指令給一執行單元資料路徑。
  17. 一種適用於執行單元的指令處理方法,包含:對應於複數個有效線程的一第一有效線程,從一指令快取記憶體擷取一執行單元的一第一指令;傳播該第一指令給該複數個有效線程; 維持該第一指令於對應於該複數個有效線程至少其中一者的一指令佇列中;解碼該指令佇列中的一第二指令;以及發送該第二指令以做為一資料要求至一常數快取記憶體、一頂點屬性快取記憶體、一共同暫存器檔案和一執行單元資料路徑的每一者。
  18. 如專利範圍第17項所述的指令處理方法,其中該擷取第一指令的步驟和該發送第二指令的步驟可同時執行。
  19. 如專利範圍第17項所述的指令處理方法,更包含:傳送一要求給該常數快取記憶體,其中該常數快取記憶體維持一頭標表,該頭標表包含根據著色器類型和內文所區分的至少一組常數的實體基底位址,該常數快取記憶體可用以維持對應於頂點著色器、幾何著色器和像素著色器的至少兩個內文的常數。
  20. 如專利範圍第19項所述的指令處理方法,其中該常數快取記憶體還包含一對照表,該對照表用以維持該常數記憶體中所更改的常數以及被更改的常數之位址。
  21. 如專利範圍第17項所述的指令處理方法,其中該常數快取記憶體、該頂點屬性快取記憶體、該共同暫存器檔案和該執行單元資料路徑可同時處理指令。
  22. 如專利範圍第17項所述的指令處理方法,更包含:當指令執行所需之資料準備好時,發送該指令給該執行單 元資料路徑;以及透過一資料輸出緩衝器從該執行單元資料路徑輸出資料。
TW100110084A 2010-04-21 2011-03-24 增進繪圖處理單元之總處理量的方法與系統 TWI474280B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/764,256 US8564604B2 (en) 2007-06-12 2010-04-21 Systems and methods for improving throughput of a graphics processing unit

Publications (2)

Publication Number Publication Date
TW201137786A TW201137786A (en) 2011-11-01
TWI474280B true TWI474280B (zh) 2015-02-21

Family

ID=44310115

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100110084A TWI474280B (zh) 2010-04-21 2011-03-24 增進繪圖處理單元之總處理量的方法與系統

Country Status (2)

Country Link
CN (2) CN102136128B (zh)
TW (1) TWI474280B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI602151B (zh) * 2015-08-19 2017-10-11 上海兆芯集成電路有限公司 三維圖形管道中之可程式化圖元設定方法以及使用該方法的裝置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10134101B2 (en) 2012-02-27 2018-11-20 Intel Corporation Using cost estimation to improve performance of tile rendering for image processing
US9741154B2 (en) 2012-11-21 2017-08-22 Intel Corporation Recording the results of visibility tests at the input geometry object granularity
US9495721B2 (en) 2012-12-21 2016-11-15 Nvidia Corporation Efficient super-sampling with per-pixel shader threads

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200529071A (en) * 2003-12-18 2005-09-01 Nvidia Corp Across-thread out of order instruction dispatch in a multithreaded microprocessor
US20090172362A1 (en) * 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Processing pipeline having stage-specific thread selection and method thereof
US20090189896A1 (en) * 2008-01-25 2009-07-30 Via Technologies, Inc. Graphics Processor having Unified Shader Unit
TW200933522A (en) * 2008-01-25 2009-08-01 Via Tech Inc Graphics processing systems, cache systems and data-handling methods
US20090210660A1 (en) * 2008-02-07 2009-08-20 Andrew Webber Prioritising of instruction fetching in microprocessor systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958028A (en) * 1997-07-22 1999-09-28 National Instruments Corporation GPIB system and method which allows multiple thread access to global variables
CN100359506C (zh) * 2001-12-20 2008-01-02 杉桥技术公司 能够高效处理汇聚设备应用的多线程处理器
US6895497B2 (en) * 2002-03-06 2005-05-17 Hewlett-Packard Development Company, L.P. Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
US7454599B2 (en) * 2005-09-19 2008-11-18 Via Technologies, Inc. Selecting multiple threads for substantially concurrent processing
CN1928918B (zh) * 2005-10-14 2012-10-10 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
CN101145239A (zh) * 2006-06-20 2008-03-19 威盛电子股份有限公司 绘图处理单元及处理边框颜色信息的方法
US20080198166A1 (en) * 2007-02-16 2008-08-21 Via Technologies, Inc. Multi-threads vertex shader, graphics processing unit, and flow control method
US20090289947A1 (en) * 2008-05-20 2009-11-26 Himax Technologies Limited System and method for processing data sent from a graphic engine

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200529071A (en) * 2003-12-18 2005-09-01 Nvidia Corp Across-thread out of order instruction dispatch in a multithreaded microprocessor
US20090172362A1 (en) * 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Processing pipeline having stage-specific thread selection and method thereof
US20090189896A1 (en) * 2008-01-25 2009-07-30 Via Technologies, Inc. Graphics Processor having Unified Shader Unit
TW200933522A (en) * 2008-01-25 2009-08-01 Via Tech Inc Graphics processing systems, cache systems and data-handling methods
US20090210660A1 (en) * 2008-02-07 2009-08-20 Andrew Webber Prioritising of instruction fetching in microprocessor systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI602151B (zh) * 2015-08-19 2017-10-11 上海兆芯集成電路有限公司 三維圖形管道中之可程式化圖元設定方法以及使用該方法的裝置
US9892541B2 (en) 2015-08-19 2018-02-13 Via Alliance Semiconductor Co., Ltd. Methods for a programmable primitive setup in a 3D graphics pipeline and apparatuses using the same

Also Published As

Publication number Publication date
CN102982503A (zh) 2013-03-20
CN102982503B (zh) 2015-10-21
CN102136128A (zh) 2011-07-27
TW201137786A (en) 2011-11-01
CN102136128B (zh) 2014-05-21

Similar Documents

Publication Publication Date Title
JP4938850B2 (ja) 拡張型頂点キャッシュを備えたグラフィック処理装置
JP4639232B2 (ja) フラグメントシェーディングパイプラインにおけるスケーラビリティの向上
US9142002B2 (en) FPGA packet processing engine
US8074224B1 (en) Managing state information for a multi-threaded processor
US9129443B2 (en) Cache-efficient processor and method of rendering indirect illumination using interleaving and sub-image blur
US10120187B2 (en) Sub-frame scanout for latency reduction in virtual reality applications
JP6467062B2 (ja) スプーフクロック及び細粒度周波数制御を使用する下位互換性
US8564604B2 (en) Systems and methods for improving throughput of a graphics processing unit
TWI437507B (zh) 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法
US20090189896A1 (en) Graphics Processor having Unified Shader Unit
CN106575430B (zh) 用于像素哈希的方法和装置
US7747842B1 (en) Configurable output buffer ganging for a parallel processor
US10818054B2 (en) Apparatus and method for asynchronous texel shading
US7616202B1 (en) Compaction of z-only samples
US8363059B2 (en) Rendering processing apparatus, parallel processing apparatus, and exclusive control method
TWI474280B (zh) 增進繪圖處理單元之總處理量的方法與系統
US10417813B2 (en) System and method for generating temporally stable hashed values
US9019284B2 (en) Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline
US20030169271A1 (en) Magnified texture-mapped pixel performance in a single-pixel pipeline
US6885375B2 (en) Stalling pipelines in large designs