TWI437507B - 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法 - Google Patents

具有多線程執行單元之繪圖處理裝置及其記憶體存取方法 Download PDF

Info

Publication number
TWI437507B
TWI437507B TW100110323A TW100110323A TWI437507B TW I437507 B TWI437507 B TW I437507B TW 100110323 A TW100110323 A TW 100110323A TW 100110323 A TW100110323 A TW 100110323A TW I437507 B TWI437507 B TW I437507B
Authority
TW
Taiwan
Prior art keywords
memory
register
thread
identifier
threads
Prior art date
Application number
TW100110323A
Other languages
English (en)
Other versions
TW201142740A (en
Inventor
Jeff Yang Jiao
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
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW201142740A publication Critical patent/TW201142740A/zh
Application granted granted Critical
Publication of TWI437507B publication Critical patent/TWI437507B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Description

具有多線程執行單元之繪圖處理裝置及其記憶體存取方法
本發明提供一個具有多線程執行單元的繪圖處理裝置及其記憶體存取方法。本發明利用共同暫存器檔案來調節執行單元所執行的所有線程之暫存器操作,此共同暫存器檔案規劃為複數個記憶庫,一部分的記憶庫對應至偶數線程,另一部分的記憶庫對應至奇數線程。當線程產生暫存器要求時,對應之邏輯暫存器識別符被轉譯為實體記憶體位置,使線程可存取對應的記憶庫。
眾所皆知,三維電腦繪圖技術著重於將三維(3D)物體以二維(2D)影像的方式呈現出來,並顯示於諸如陰極線真空管(CRT)螢幕或液晶螢幕(LCD)之類的顯示裝置上。此三維物體可以是簡單的幾何基元(primitive),例如點、線段、三角形或是多邊形(polygon)。較為複雜的物體則是以一系列相連之平面多邊形的方式呈現在顯示裝置上,例如一連串的平面三角形。所有的圖形基元都可以單一頂點或一組頂點的方式來表示,例如以座標(X,Y,Z)來定義一個點,或是線段的某一端點,或是多邊形的某一個頂點。
為了產生用來代表三維物體的二維投影資料使物體可呈現在顯示裝置上,圖形基元的頂點需要經過一連串的操作,以及繪圖顯像管線的多個階段來處理。一般的管線是由一連串相連的處理單元或階段所組成,上一階段的輸出可做為下一階段的輸入。對於繪圖處理單元而言,管線階段包括以下:逐一頂點操作,基元合成操作,像素操作,像素合成操作,光柵掃描(rasterization)操作以及碎型(fragment)操作等等。
在典型的繪圖顯示系統中,可利用影像資料庫來儲存場景中物體的敘述符。物體可以多個小多邊形來表示,這些小多邊形是涵蓋物體表面的多邊形,如同牆面上的磁磚。每一個多邊形又可以頂點座標清單以及表面材質特性來表示,甚或再包括每一頂點相對於表面的法線向量。頂點座標清單可以是模型空間的XYZ座標,表面材質特性可包括顏色,紋理或亮度等。對於具有複雜曲面的三維物體,通常是以三角形或四邊形來表示,而四邊形又可拆解為一對三角形。
當使用者決定了觀看的角度,轉換引擎單元便將物體座標轉換至相對於觀賞角度。此外,使用者可以指定視野範圍,所產生之影像的大小,以及可見物體的後方是否包含某一背景或是將背景刪除。
當視野區域選定之後,裁剪單元將位於視野區域之外的多邊形剔除,並且將部份位於視野區域之外部份位於視野區域之內的多邊形加以裁剪。裁減後的多邊形對應至原多邊形位於視野區域之內的部份,其裁減後的邊緣對應至視野區域的邊界。接著多邊形的頂點會傳遞到下一個管線階段,包含每一頂點在視野區域的座標(XY)以及其相對的深度值(Z)。之後一般的繪圖處理系統會進行光源模型處理,再將多邊形以及其顏色值傳遞至光柵掃描器。
對每一個多邊形而言,光柵掃描器會判斷哪些像素位在此多邊形,並將其對應的顏色值和深度值寫入畫幀緩衝器(frame buffer)。光柵掃描器會比較目前處理之多邊形其像素的深度值與原先儲存在畫幀緩衝器相對應位置之像素的深度值,如果多邊形像素的深度值較小,表示其位於畫幀緩衝器所儲存之像素的前方,則以多邊形像素的深度值取代原畫幀緩衝器的深度值,因為目前處理的多邊形會遮蔽原先儲存於畫幀緩衝器內的多邊形。上述步驟會持續重複直到所有的多邊形都已顯像處理過。之後,影像控制器會將畫幀緩衝器的內容以逐一掃描線的方式呈現在顯示裝置上。
在了解過上述相關背景技術後,請參見第一圖所繪示的電腦系統之繪圖管線的部份元件之功能方塊圖,此實施例僅為說明之便,繪圖管線的元件可因系統差異有所變化,並以其他方式表示。第一圖的主控電腦10可透過命令串流處理器(command stream processor)12產生命令清單,主控電腦10可以是電腦系統所執行的繪圖應用程式介面。命令清單包含一系列的繪圖命令以及將一環境顯像在顯示裝置所需的資料。繪圖管線中的元件可以對命令清單中的命令和資料執行操作,以繪製影像至顯示裝置上。
為達到上述目的,解析器(parser)14從命令串流處理器12接收命令,並透過資料解析來轉譯命令,以及將定義繪圖基元的資料沿著繪圖管線傳遞。繪圖基元可藉由位置資料來定義,例如XYZ和W座標,還有亮度和紋理資料。解析器14會從命令串流處理器12接收每一個基元的所有資訊,並且傳遞至頂點著色器(vertex shader)16。頂點著色器16可以對從命令清單所接收的繪圖資料作各種轉換,例如從世界座標轉換至視野座標,再到投影座標,最後是螢幕座標。頂點著色器16可執行的各項功能為本領域熟習技藝者已知,在此不加以敘述。經過上述處理後,繪圖資料傳遞至光柵掃描器18,其操作亦如上已述。
接續對圖形基元的每一個像素作深度測試,如上所述,深度測試是將目前基元之像素的深度值與對應之像素位置所儲存的深度值做比較,所儲存的深度值是先前繪製之基元的像素位置之深度值。如果目前基元的深度值比所儲存之深度值更為接近觀看者,則以目前基元的深度值取代所儲存的深度值,而目前基元的顏色資訊也會取代畫幀緩衝器中對應位置先前所儲存的顏色資訊(於像素著色器(pixel shader)22執行)。如果目前基元的深度值沒有比所儲存之深度值更接近觀看者,則所儲存之深度值與畫幀緩衝器都不會被更新取代,因為先前繪製之基元是位在目前基元的前面。對於被判定為較先前繪製之基元更接近觀看者的目前基元,其相關資訊都會傳送至像素著色器22,以決定其顏色資訊。
為了達到最佳化繪圖管線之效能的目的,必須取得與管線耗能相關的資訊。繪圖資料的數量與複雜度可反映出管線的耗能、延遲以及瓶頸,進而影響效能。因此,確認管線與資料流程的問題來源有助於增進管線效能。
本發明係關於在繪圖處理單元中執行暫存器存取與操作的方法和系統。
本發明實施例提供一個繪圖處理單元,其包含執行單元、記憶體單元與位址轉譯單元。執行單元用以執行可程式化的著色器操作,以實現多個管線的操作處理。記憶體單元用以形成暫存器檔案來調節執行單元所執行的所有線程之暫存器操作。記憶體單元包含複數個記憶庫,其中複數個第一記憶庫是分配給複數個第一線程,複數個第二記憶庫是分配給複數個第二線程。位址轉譯單元用以將邏輯暫存器識別符轉譯為實體記憶體位址。
本發明另一實施例提供另一繪圖處理單元,其包含執行單元、記憶體單元與線程控制器。執行單元用以執行可程式化的著色器操作,以實現多個管線的操作處理。記憶體單元用以形成暫存器檔案來調節執行單元所執行的所有線程之暫存器操作。記憶體單元包含複數個記憶庫,其中複數個第一記憶庫配置給複數個第一線程,複數個第二記憶庫配置給複數個第二線程。線程控制器用以管理線程對暫存器之存取,以減少延遲。
本發明的又一實施例提供一種多線程之執行單元的操作方法,此操作方法包含以下步驟:首先接收對應於一邏輯暫存器存取的邏輯暫存器要求,以實現指定線程的處理操作。接著產生一邏輯暫存器識別符,此邏輯暫存器識別符是根據該邏輯暫存器與指定線程之識別符的相關資訊而產生。根據邏輯暫存器要求將邏輯暫存器識別符轉譯為實體記憶體位址,再根據實體記憶體位址存取記憶體單元的一實體位址,以實現對應於邏輯暫存器識別符之暫存器相關的處理操作,該指定線程可透過邏輯暫存器識別符來存取記憶體單元的實體位址。
以下將配合圖示來說明本發明的各個實施例,雖然本發明係藉由該些實施例來說明,但本發明不侷限於下面所揭露之實施例,下述實施例之變形、改良與等同實施方式皆屬於本發明之範圍。
請參照第二圖,其繪示本發明一實施例之部分元件方塊圖,特別是繪圖處理管線的基本元件。首先是輸入組合器(input assembler)52,其基本上是用以形成管線的幾何基元和工作項目,幾何基元是由頂點所組成,工作項目則提供管線執行。輸入組合器52自記憶體單元接收資料,並藉此產生三角形、線段、點或者其他欲引入管線的幾何基元。當幾何基元組成後便傳送至頂點著色器54。頂點著色器54執行轉換、掃描和打光等操作來處理頂點,接著傳送至幾何著色器(geometry shader)56。幾何著色器56所接收之輸入為一完整基元的所有頂點,並將這些頂點以單一拓樸的形式輸出,例如三角形串,線段串或是點清單等。此外幾何著色器56還可執行諸如鑲嵌和陰影錐生成等操作,最後輸出資料至光柵掃描器58。光柵掃瞄器58是用以剪裁和設定基元,並決定何時和如何啟動像素著色器60。像素著色器60是在光柵掃描器58輸出一基元時啟動以處理其中的每一像素。如所已知,像素著色器60可執行內插或其他操作來決定輸出至畫幀緩衝器62的像素顏色值。第二圖的各元件之功能操作為本領域技術人員所熟知,在此不贅述。本發明係關於用以實現一般用途且可複製之處理架構的動態排程之系統和方法,此處理架構可執行頂點著色器54、幾何著色器56、和像素著色器60的各項操作,因此這些元件的內部操作和細部實現方式在此不多作說明,以使本發明可獲得較完整充分的理解。
第三圖為本發明一實施例之繪圖處理器的方塊圖。第三圖僅繪示有助於理解本發明的相關元件,並未完整繪示繪圖處理器之所有元件,本領域熟習技藝者應可自第三圖理解相關繪圖處理裝置的一般功能和架構。此繪圖處理裝置包含計算核心單元105,用以處理各種指令,且可在單一時脈週期執行多個指令。
除了計算核心單元105之外,此繪圖處理裝置還包括紋理濾波單元110、像素封裝器115、命令串流處理器120、回寫單元130、紋理位址產生器135和執行單元集區控制單元(EU pool control unit)125。執行單元集區控制單元125包含頂點快取記憶體和/或串流快取記憶體。計算核心單元105可接收各元件的輸入,並輸出至其他元件。
舉例而言,紋理濾波單元110提供紋理資料給計算核心單元105(透過輸入端口A和B)。在本發明的部分實施例中,紋理資料的格式是512位元的資料封包,以下敘述的資料結構亦與此相同。
像素封裝器115透過輸入端口C和D提供像素著色器輸入給計算核心單元105,同樣是512位元的格式。此外,像素封裝器115會向計算核心單元105要求像素著色器任務,包含指定執行單元號碼與線程號碼。由於像素封裝器115與紋理濾波單元110之操作為本領域習知技術,在此不多做討論。雖然第三圖之實施例中資料是以512位元之格式傳遞,本領域熟習技藝者應可理解資料封包之大小可依實際需要改變,以達到所需之效能或特性。
命令串流處理器120提供三角形頂點索引給執行單元集區控制單元125,於第三圖的實施例中,頂點索引的資料格式是256位元。執行單元集區控制單元125組合來自串流快取記憶體的頂點著色器輸入,並透過輸入端口E傳送資料給計算核心單元105。執行單元集區控制單元125也組合幾何著色器輸入並透過輸入端口F傳送資料給計算核心單元105。執行單元集區控制單元125還可控制執行單元輸入接口235和執行單元輸出接口220(第五圖),簡言之,執行單元集區控制單元125掌控計算核心單元105的輸入與輸出資料流向。
在處理過程中,計算核心單元105透過輸出端口J1和J2提供像素著色器輸出給回寫單元130,像素著色器輸出包括紅/綠/藍/透明度(RGBA)資訊,如所已知。根據先前所揭露之資料結構,像素著色器輸出可以是2個512位元的資料串流形式,然而其他實施例亦可以實現為不同的位元大小。
類似於像素著色器輸出,計算核心單元105透過輸出端口K1和K2輸出紋理座標給紋理位址產生器135,包含UVRQ資訊。紋理位址產生器135發出紋理要求T# REQ給計算核心單元105(從輸入端口X接收),而計算核心單元105從輸出端口W輸出紋理資料T# DATA給紋理位址產生器135。由於紋理位址產生器135和回寫單元130為習知技術,在此不多做討論。再次重申,雖然此實施例中UVRQ與RGBA資料皆是512位元的格式,但其他實施例中亦可為不同的資料長度。於第三圖的實施例中,匯流排分割為2條512位元的通道,分別傳送4個像素的128位元RGBA顏色值以及128位元UVRQ紋理座標。
計算核心單元105和執行單元集區控制單元125可以相互傳送512位元的快取溢出(cache spill)資料,此外,2個512位元的頂點快取寫入資料可以從計算核心單元105的輸出端口M1和M2輸出至執行單元集區控制單元125以作進一步處理。
了解計算核心單元105的外部資料交換之後,請參看第四圖計算核心單元105之內部方塊圖。計算核心單元105包括記憶體存取單元(memory access unit)205,其透過記憶體界面仲裁器(memory interface arbiter)245耦接至第二階快取記憶體(L2 cache)210。
L2快取記憶體210從輸入端口G接收第三圖之執行單元集區控制單元125輸出的頂點快取溢出資料,並從輸出端口G提供頂點快取預取(vertex cache prefetch)資料給執行單元集區控制單元125。此外,L2快取記憶體210可自輸入端口X從紋理位址產生器35接收紋理要求T# REQ,並從輸出W提供紋理資料T# DATA給紋理位址產生器35來回應此紋理要求T# REQ。
記憶體介面仲裁器245可作為區域影音記憶體(畫幀緩衝器)的控制介面。匯流排介面單元(未繪示)透過匯流排提供連接至處理單元的介面。記憶體介面仲裁器245和匯流排介面單元提供記憶體單元和執行單元集區230之L2快取記憶體210之間的介面。在某些實施例中,L2快取記憶體210是透過記憶體存取單元205連接至記憶體介面仲裁器245和匯流排介面單元。記憶體介面仲裁器245將L2快取記憶體210或其他單元的虛擬記憶體位址轉換成實體記憶體位址。
記憶體介面仲裁器245為L2快取記憶體210提供記憶體存取(亦即讀/寫存取),擷取指令、常數、資料和紋理數據,直接記憶體存取(亦即載入/儲存),暫時儲存存取的索引,暫存器溢出以及頂點快取記憶體溢出等等。
計算核心單元105還包括執行單元集區230,其中包括多個執行單元(EU,execution unit)240a至240h,統稱執行單元240。每一個執行單元240都包含執行單元控制單元和區域記憶體(未繪示),並且可以在單一時脈週期執行多個指令。因此在最大使用效率時,執行單元集區230基本上可以同時執行多個線程。執行單元240和其同步執行能力將於後續詳述。雖然第四圖的實施例繪示了8個執行單元EU0至EU7,本領域熟習技藝者應可理解其數量不限定於8個,在其他實施例中亦可包含較多或較少數量的執行單元。
計算核心單元105還包含執行單元輸入接口235和執行單元輸出接口220,分別用以提供執行單元集區230的輸入和輸出。執行單元輸入接口235和執行單元輸出接口220可以是交叉開關(crossbar)、匯流排或是其他輸出/輸入機制。
執行單元輸入接口235從第三圖的執行單元集區控制單元125接收頂點著色器輸入(輸入端口E)和幾何著色器輸入(輸入端口F),並提供給執行單元集區230的各個執行單元240來處理。此外,執行單元輸入接口235還接收像素著色器輸入(輸入端口C和D)和紋理封包(輸入端口A和B),並傳送給執行單元集區230的各個執行單元240來處理。執行單元輸入接口235亦可從L2快取記憶體210接收執行單元集區230所需要的資訊。
於第四圖的實施例中,執行單元輸出接口220劃分為偶數輸出接口225a和奇數輸出接口225b。偶數輸出接口225a負責管理偶數執行單元240a、240c、240e、240g的輸出,而奇數輸出接口225b負責管理奇數執行單元240b、240d、240f、240gh的輸出。整體而言,執行單元輸出接口225a和225b用以接收執行單元集區230的輸出資料,例如UVRQ或RGBA,這些輸出資料可以導回至L2快取記憶體,或是從計算核心單元105輸出至回寫單元130(透過輸出端口J1和J2),或是透過輸出端口K1和K2輸出至紋理位址產生器135,如第3圖所示。
以上概略描述本發明實施例的基本架構和元件,於下將介紹本發明其他實施例的元件和操作。如上所述,本發明所提供的是用以改善繪圖處理裝置之整體效能的系統與方法。依此考量,繪圖處理裝置的效能就整體來說與其中之管線所處理的資料流量相關。本發明之實施例所使用的各種著色器是可程式化的著色器,每個元件的功能並非以具有不同硬體設計的個別著色器單元搭配個別指令集來實現,而是透過執行單元240a~240h搭配統一指令集來執行各項功能。每一個執行單元240的設計都是相同的,並可程式化其操作,此外每個執行單元240都可實現多線程操作,例如同時處理64個線程。於其他實施例中亦可實現不同數量的同步線程。當頂點著色器54、幾何著色器56、像素著色器60等產生各項著色器任務之後,這些著色器任務會透過界面單元和排程器傳送至對應的執行單元來執行。
本發明的實施例是關於可實現繪圖操作環境的效能最佳化之獨特硬體架構。因此,本發明的實施例揭露了可提供並支援共同暫存器區域的元件架構,此共同暫存器區域可由執行單元的多個線程所共享,也可稱為共同暫存器檔案(common register file,CRF)。第5、6、7圖繪示了此硬體架構的實施例。
請先參見第五圖,其繪示本發明一實施例之執行單元的功能方塊圖,包含共同暫存器檔案520,以及相關的執行單元輸入接口235和執行單元資料路徑(EU data path)230。雖然第四圖的實施例包含多個執行單元240,但第五圖僅就單一個執行單元240作說明。執行單元集區230之中的每一個執行單元240都可包含一或多個共同暫存器檔案520,而執行單元資料路徑230包含執行單元240用以實現計算功能之硬體或電路,其中可能包括算術邏輯單元(ALU,浮點或固定運算),記憶體單元,專用計算硬體等等。在本發明之精神所涵蓋的範圍中,執行單元240可包含各種類型的處理硬體單元或邏輯單元。
資料輸出單元530用以提供執行單元資料路徑230所輸出之資料,並將資料導向執行單元輸出接口220或是回傳至共同暫存器檔案520。
請參見第六圖。於本發明一實施例中,共同暫存器檔案520可分割為兩個部份,其中一個部分520a是配置給所有的偶數線程,而另一個部份520b則是配置給所有的奇數線程。與第四圖中執行單元的分組相似,線程也可被分為偶數群組和奇數群組。第六圖繪示在此分組之下執行單元輸入接口235、執行單元輸出接口220、執行單元資料路徑225、資料輸出單元530、以及共同暫存器檔案520之間的資料流向。
於本發明實施例中,共同暫存器檔案520又可劃分為多個記憶庫(bank)。如第七圖所繪示,偶數半區520a和奇數半區520b分別又分割為4個記憶庫,此結構的優點將於下文詳敘。每一個記憶庫分別包含讀取埠521,寫入埠522以及讀寫埠523,但於其他實施例中,存取埠的數目可依需要增減。若記憶體單元的存取埠數目增加,由於需要仲裁機制和其他邏輯單元,相關成本通常會增加。若記憶體單元的存取埠數目減少,由於待處理的讀取和寫入都需要等待處理中的讀寫完成,其整體效能降低。
第七圖的實施例中共同暫存器檔案520分割為8個記憶庫。記憶庫0、2、4、6由偶數線程0、2…14所共享,而記憶庫1、3、5、7由奇數線程1、3…15所共享。對於每一個記憶庫而言,讀取埠521和寫入埠522被執行單元資料路徑225用來作為指令執行所引起之讀取或寫入存取之用。第八圖的線程控制器840則負責將不同線程的指令配對,使延遲時間和個別記憶庫的讀寫衝突減到最少。個別線程內文的資源衝突之避免或減少通常是在編譯器(compiler)層級控制的。
讀寫埠523被執行單元輸入和輸出端口用來載入初始的線程輸入資料,以及將最終的線程輸出資料寫至執行單元集區或其他模組單元。執行單元資料路徑230和執行單元輸出/輸入之讀寫存取使用分離之存取埠的好處在於,線程之輸入或輸出的載入或載出可以和線程的執行平行地進行,還可以避免執行單元資料路徑230和輸入輸出要求之間不必要的仲裁,此種情況會造成硬體複雜度的顯著增加。
讀寫埠523是由執行單元的輸入和輸出所共享,且寫入的優先級高於讀取。512位元的輸入資料分別進入4個不同的記憶庫,以避免在載入至共同暫存器檔案520時發生記憶體衝突,每一個記憶庫124位元。資料還會伴隨2位元的通道索引(channel index)以及512位元的排序基底位址(base address),用以識別輸入資料的起始記憶庫。舉例而言,如果起始通道索引是1,則自最低位元起算的第一筆128位元載入記憶庫1,其後的128位元載入記憶庫2,以此類推,最後的128位元載入記憶庫0,此實施例中假設此線程之記憶庫偏移量(bank offset)為0。在其他實施例中,可藉由線程識別符的2個最低位元來產生記憶庫偏移量,使每一線程的起始記憶庫位址可隨機產生。
由於共同暫存器檔案520所能提供的實體記憶體空間通常都小於暫存器的佔用空間(footprint),也絕對小於暫存器可定義的空間,因此邏輯暫存器識別符與實體暫存器位址之間需要適當的轉換或轉譯,邏輯暫存器識別符的範例如軟體所提供的暫存器識別符。位址轉譯的一種管理方式即是將共同暫存器檔案520之內的記憶體空間當做快取記憶體空間來處理。位址轉譯單元提供位址轉譯,近似於提供快取記憶體存取的快取標籤或是虛擬記憶體機制中的轉譯後備緩衝區(TLB,translation lookaside buffer)。第八圖將詳細描述位址轉譯的一種實施方式。
請注意,在不脫離本發明之精神與範疇的情況下,其他替代結構亦可用於實現本發明。舉例來說,記憶體之記憶庫的大小可以不是128位元,每個記憶庫可以包含較多或較少數量的存取埠,此外記憶庫的數量亦可增加或減少。本發明實施例所揭露之特定架構僅為敘述之便,並在各種設計因素的考量之下,可提供一定程度的整體效能和成本效益。
如上所述,執行單元用以處理著色器程式,例如頂點著色器程式,幾何著色器程式以及像素著色器程式。每一個著色器都是由軟體所定義的程式,軟體設計師所選擇的程式碼可配置暫存器給該程式。舉例而言,像素著色器程式可以利用下面的虛擬程式碼片段來定義特定輸入、輸出以及暫時暫存器:
在這個程式碼片段中,總共需要80個暫存器,設計一個大到可以支援所有線程(本實施例為32個)的所有暫存器總共需要2560個暫存器空間。這種設計會耗費過多的記憶體空間,並且造成記憶體空間不敷使用,因為通常在同一時間內僅有小部分的暫存器被使用。
相對地,著色器程式的轉譯器可以評估著色器程式在執行期間內所需的邏輯暫存器空間之最大值或是佔用空間。也就是說,轉譯器可以判斷在程式執行期間,同一時間可能使用的最大線程數量,而記憶體配置可以據此設計為提供剛好的實體記憶體空間來符合所有線程最大的佔用空間。在上面的實施例中,著色器暫存器可以對應至某一實體記憶體空間。然而,這種方式同樣也可能有過度配置的問題,因為並非所有線程都會同時被使用,當然也並非所有線程都會在單一事件中佔用到最大暫存器使用量。相對而言,如果記憶體空間配置過小,則會造成較高速的暫存器與系統記憶體之間頻繁的資料交換,導致效能低落。
因此,著色器程式的轉譯器可以根據著色器執行的某一需求量來配置實體暫存器,例如輸入暫存器。當此輸入暫存器已被讀取而且不需要再被使用時,被配置為輸入暫存器的實體暫存器可以重新對應至其他用途,例如暫時或輸出暫存器。在另一個實施例中,轉譯器可以配置一個實體暫存器做為暫時暫存器,用以儲存著色器程式所計算或合成的數值。當數值被計算完畢而且準備輸出之後,此實體暫存器可以重新配置為輸出暫存器。
本發明所使用的記憶庫結構反映出設計考量之間的權衡。舉例而言,每個記憶體空間的尺寸相對較小,並各自具有讀取埠和寫入埠,這種結構基本上等同於具有多個存取埠的大型記憶體,但成本相對較低。再者,記憶庫結構使得線程轉譯器得以減低某些指令延遲。
以下面的指令為例,R2←R0,R1,也就是把暫存器R0的值與暫存器R1的值相加,再將結果存入暫存器R2。第八圖的線程控制器840可以使這些暫存器分別存入不同的記憶體記憶庫,如此一來,暫存器R0與R1的值可以分別自對應的讀取埠同時被讀取。
第八圖繪示本發明一實施例的執行單元800內部組成之方塊圖。如上所述,每一個執行單元800包含用以執行多個線程的線程執行邏輯單元810,在一實施例中,線程邏輯單元810可執行多達32個獨立的平行線程,其他實施例亦可支援較多或較少的線程。每個執行單元800還包含記憶體820以及暫存器空間830(亦即共同暫存器檔案)。此外,每個執行單元800包含線程控制器(或執行單元管理器)840。線程控制器840用以管理和控制執行單元的各項操作,如本發明所提及的各種功能和特性。舉例來說,線程控制器840包含用以分派執行單元被指派之任務給可用線程的線程分派邏輯單元842,線程的分派包含可支援該線程之執行的相關資源,例如記憶體和暫存器。
相似地,線程控制器840包含用以在任務完成後回收線程以分派後續任務的線程回收邏輯單元844。線程控制器840還包含用以配對線程以減少或隱藏延遲的線程配對邏輯單元846。舉例來說,讀取-修改-寫入指令需要耗費多個時脈週期來執行,因為暫存器值必須先從共同暫存器檔案830(先前實施例中為元件520)讀出,然後傳送到執行單元資料路徑來作計算(也就是修改)。接著在下一個時脈週期,將計算後的值寫回共同暫存器檔案830。在修改的時脈週期中,其他資料也可能需要透過記憶體存取埠來傳遞或溝通,也就是說,在執行單元資料路徑執行修改指令當中,其他指令也可能發生暫存器檔案存取。因此,線程配對邏輯單元846可以最大化暫存器檔案讀取埠或寫入埠使用率或流量的方式來配對指令,以達到減少指令延遲的目的。
如上所述,共同暫存器檔案830的總體記憶體空間是依據設計和效能之間的權衡來選擇的。然而記憶體空間通常都會比著色器程式的最大佔用空間總和(包含所有線程)來得小。還有,處理邏輯暫存器識別符和共同暫存器檔案之實體記憶體位址之間的轉換或轉譯的一種方式與快取記憶體的實現方式類似。例如,暫存器可以在著色器程式有需要時才做配置,換句話說,可以利用快取命中測試來實現暫存器資源的配置和回收。以上述的虛擬程式碼為例,雖然著色器程式中定義了邏輯暫存器,但是這些邏輯暫存器未必會配置到硬體的實體暫存器,除非這些邏輯暫存器確實在著色器程式的執行中被使用到。由於記憶體空間被分割為記憶庫,這種方式也有其限制和先決條件。
因此,轉譯單元860是用將邏輯暫存器識別符(或位址)轉譯為實體暫存器位址(或識別符)。下方表一顯示了暫存器轉譯的一個範例。
共同暫存器檔案索引(CRF index,也就是程式暫存器識別符)以及線程識別符(thread identifier)可以用來構成特定的邏輯位址,用於讀取或寫入共同暫存器檔案時做標籤比對。位址的格式是對齊為128位元,也就是第七圖中記憶庫的寬度。單一位址的13個位元包含來自共同暫存器檔案索引的8位元和來自線程識別符的5位元(用以識別相關線程是32個線程中的哪一個),兩者合併形成共同暫存器檔案830中每一個項目的獨特位址。
在本發明的一個實施例中,每1024位元的記憶線(line)有一個標籤(tag),每一條記憶線有2個512位元的項目(entry),每個項目都是橫跨4個記憶庫來儲存的。共同暫存器檔案索引的最低2位元加上當前線程的記憶庫偏移量就產生記憶庫選擇(bank select)。
標籤比對機制允許不同線程的暫存器共享單一的共同暫存器檔案830,而不是每一個線程各自擁有一個暫存器檔案。但是,共同暫存器檔案830中的暫存器配置對個別線程來說未必要是連續的,因為暫存器可以藉由標籤依實際需要被配置或釋放,並以標籤來識別。這種方式可以達到有效率的記憶體空間使用。此外,執行單元集區資源監控器(未繪示)可以記錄共同暫存器檔案830的記憶體使用狀態,以確保在排程新任務給執行單元的可用線程之前,尚有足夠的可用暫存器空間。這是為了保證當寫入配置發生時,記憶體空間內會有可用的空閒記憶線,暫存器才不會重覆。此外,暫存器資源可以根據所指定的標籤(包含線程識別符)來釋放,這讓某一條線程所使用的所有實體暫存器可以幾乎同時被釋放,以供其他執行中的線程來使用。
接著請參見第九圖,其繪示本發明第八圖的執行單元800之操作流程圖,此操作流程圖也是本發明之操作方法的一個實施例。請注意此流程圖並非用以涵蓋所有執行單元的可能操作,而是用以示意本發明之執行單元800如何配置共同暫存器檔案830之項目以及提供位址轉譯的相關操作的實施例。
首先在步驟910,接收暫存器要求。暫存器要求可以是由執行單元800所執行的其中一線程所發出,也就是說,線程可以藉由提出對邏輯暫存器的請求來發出暫存器請求,例如由執行於線程中的軟體提供一個線程識別符。在步驟920中,對應於線程所提出的暫存器要求,執行單元800產生邏輯暫存器識別符。如上所述,在某些實施例中邏輯暫存器識別符可包含線程識別符還有與線程所要求之邏輯暫存器相關的資料,如此一來即可產生對應於線程所要求之邏輯暫存器的獨特邏輯暫存器識別符。在本發明的一個實施例中,針對線程所要求的每個邏輯暫存器,可以將線程識別符與邏輯暫存器相關資料組合以產生邏輯暫存器識別符。執行單元800接著於步驟930將步驟920所產生的邏輯暫存器識別符轉譯成實體記憶體位址,換句話說,執行單元800配置一個實體暫存器或是記憶體位置給邏輯暫存器識別符。這個步驟允許當線程要求暫存器的時候,共同暫存器檔案830中的某一項目可配置給線程的某一操作。本發明的一個實施例中步驟920的位址轉譯是由執行單元800的暫存器位址轉譯單元860所實現。接著在步驟940執行單元800即可允許共同暫存器檔案830中的某一暫存器或記憶體位置透過邏輯暫存器識別符被線程所存取。
本發明熟習技藝者應可理解,上述所提之執行單元還可包含額外的元件以實現各項功能和操作。在本發明中“邏輯單元”是指專用硬體或是一般用途的硬體,包含一般電路或半導體電路,上述硬體可被程式化以實現某些專門或預先定義的功能或操作。
本發明之流程方法實施例所包含的各項操作或方塊應解讀為程式碼的模組、片段或部分,其包含可實現特定邏輯功能或步驟的一或多個指令。任何可實現本發明各實施例的目的和功能的其他變形或替換實施例仍屬於本發明所涵蓋的範圍,在不脫離本發明精神之下,其他實施例亦可依據功能特性改變操作順序或同步執行。
雖然本發明以多個實施例揭露如上,但本領域熟習技藝者應可理解上述實施例的各種替換、變更或改良仍屬於本發明之範圍。例如本發明之繪圖處理裝置可包含用以處理可程式化著色器操作的執行單元,此執行單元可處理多個線程的操作。繪圖處理裝置還可包含可形成暫存器檔案的記憶體,用以調節執行單元之各線程所需的暫存器操作。此記憶體規劃為記憶庫架構,其中一部分的記憶庫配置給複數個第一線程,另一部分的記憶庫配置給複數個第二線程。此外,繪圖處理裝置還包含位址轉譯單元,用以將邏輯暫存器識別符轉譯成實體暫存器位址。
在本發明的另一實施例中,繪圖處理裝置可包含用以處理可程式化著色器操作的執行單元,此執行單元可處理多個線程的操作。繪圖處理裝置還可包含可形成暫存器檔案的記憶體單元,用以調節執行單元之各線程所需的暫存器操作。此記憶體單元規劃為記憶庫架構,其中一部分的記憶庫配置給複數個第一線程,另一部分的記憶庫配置給複數個第二線程。此外,繪圖處理裝置還包含線程控制器,用以管理線程對暫存器的存取,藉此減少指令的延遲。
本發明的又一實施例揭露多線程之執行單元的操作方法。此方法包含接收一暫存器的邏輯暫存器識別符,以供某一線程的處理操作來使用,將此邏輯暫存器識別符與該線程的線程識別符組合以產生一個實體記憶體位址,此實體記憶體位址對應至上述邏輯暫存器識別符,接著根據實體記憶體位址存取記憶體,以實現與該邏輯暫存器識別符相關的暫存器操作。
10...主控電腦
12、120...命令串流處理器
14...解析器
16、54...頂點著色器
18、58...光柵掃瞄器
20...深度測試
22、60...像素著色器
24、62...畫幀緩衝器
50...記憶體單元
52...輸入組合器
56...幾何著色器
105...計算核心單元
110...紋理濾波單元
115...像素封裝器
125...執行單元集區控制單元
130...回寫單元
135...紋理位址產生器
205...記憶體存取單元
210...L2快取記憶體
220...執行單元輸出接口
230...執行單元集區
235...執行單元輸入接口
240、800...執行單元
520...共同暫存器檔案
521...讀取埠
522...寫入埠
523...讀寫埠
530...資料輸出單元
810...線程執行邏輯單元
820...記憶體
830...共同暫存器檔案
840...線程控制器
842...線程分派邏輯單元
844...線程回收邏輯單元
846...線程配對邏輯單元
860...轉譯單元
910...接收邏輯暫存器要求
920...產生邏輯暫存器識別符
930...轉譯為實體記憶體位址
940...存取對應之記憶體位址
第一圖為習知技術之電腦系統之繪圖管線的部份元件之功能方塊圖。
第二圖為本發明一實施例之繪圖處理管線的部分元件方塊圖。
第三圖為本發明一實施例之繪圖處理器的方塊圖。
第四圖為本發明一實施例之計算核心單元的內部方塊圖。
第五圖為本發明一實施例之執行單元的功能方塊圖。
第六圖為本發明一實施例之共同暫存器檔案的資料流向。
第七圖為本發明一實施例之共同暫存器檔案架構圖。
第八圖為本發明一實施例之執行單元內部方塊圖。
第九圖為本發明一實施例之執行單元操作流程圖。
910...接收邏輯暫存器要求
920...產生邏輯暫存器識別符
930...轉譯為實體記憶體位址
940...存取對應之記憶體位址

Claims (19)

  1. 一種具有多線程執行單元之繪圖處理裝置,包含:一執行單元,用以執行可程式化著色器操作,該執行單元可執行複數個線程的處理操作;一記憶體單元,用以形成一暫存器檔案來調節該複數個線程的暫存器操作,該記憶體單元包含複數個記憶庫,其中複數個第一記憶庫分配給複數個第一線程,複數個第二記憶庫分配給複數個第二線程,其中上述暫存器檔案由上述執行單元因執行一修改指令而存取之過程中,同時供另一指令存取;一線程控制器,用以對應於該複數個線程所發出的一邏輯暫存器要求,配置和釋放該記憶體單元的該複數個記憶庫;以及一位址轉譯單元,用以將對應於該邏輯暫存器要求的一邏輯暫存器識別符轉譯為該記憶體單元的一實體記憶體位址;其中該邏輯暫存器識別符包含一線程識別符和一暫存器索引,該線程識別符用以識別該執行單元內的一線程,該暫存器索引用以識別該記憶體單元的一記憶庫。
  2. 如申請專利範圍第1項所述之繪圖處理裝置,其 中該記憶體單元規劃為8個記憶庫,其中4個記憶庫配置給該複數個第一線程,4個記憶庫配置給該複數個第二線程。
  3. 如申請專利範圍第2項所述之繪圖處理裝置,其中該複數個第一線程為偶數線程,該複數個第二線程為奇數線程。
  4. 如申請專利範圍第1項所述之繪圖處理裝置,其中該記憶體單元的每一個該記憶庫包含一讀取埠、一寫入埠和一讀寫埠。
  5. 如申請專利範圍第1項所述之繪圖處理裝置,其中該轉譯單元利用該可程式化著色器操作所指派的該線程識別符以及該暫存器索引將該邏輯暫存器識別符轉譯為該實體記憶體位址。
  6. 如申請專利範圍第5項所述之繪圖處理裝置,其中該線程識別符為5位元,該暫存器索引為8位元。
  7. 如申請專利範圍第1項所述之繪圖處理裝置,其中該線程控制器在對應於該邏輯暫存器要求的處理操作完成後,釋放對應於該邏輯暫存器識別符的該記憶庫。
  8. 一種具有多線程執行單元之繪圖處理裝置,包含:一執行單元,用以執行可程式化著色器操作,以實現複 數個線程的操作處理;一暫存器檔案,用以調節該執行單元的該複數個線程之暫存器操作,該暫存器檔案包含複數個記憶庫,其中複數個第一記憶庫配置給複數個第一線程,複數個第二記憶庫配置給複數個第二線程,其中上述暫存器檔案由上述執行單元因執行一修改指令而存取之過程中,同時供另一指令存取;一線程控制器,用以管理該複數個線程對該暫存器檔案之存取,以及用以產生一特定線程對一邏輯暫存器的要求;以及一位址轉譯單元,用以將對應於該邏輯暫存器要求的一邏輯暫存器識別符轉譯為該暫存器檔案的一實體記憶體位址;其中該邏輯暫存器識別符包含一線程識別符和一暫存器索引,該線程識別符用以識別該執行單元內的該特定線程,該暫存器索引用以識別對應之該暫存器檔案的該記憶庫。
  9. 如申請專利範圍第8項所述之繪圖處理裝置,其中該線程控制器用以配對指令,使得該特定線程之暫存器操作處理時,另一線程可同時存取另一記憶庫。
  10. 如申請專利範圍第8項所述之繪圖處理裝置,其中該暫存器檔案規劃為8個該記憶庫,4個該記憶庫配置給 該複數個第一線程,4個記憶庫配置給該複數個第二線程。
  11. 如申請專利範圍第10項所述之繪圖處理裝置,其中該複數個第一線程為偶數線程,該複數個第二線程為奇數線程。
  12. 如申請專利範圍第8項所述之繪圖處理裝置,其中該暫存器檔案的每一個該記憶庫包含一讀取埠、一寫入埠和一讀寫埠。
  13. 如申請專利範圍第8項所述之繪圖處理裝置,其中該轉譯單元利用該可程式化著色器操作所指派的該線程識別符以及該暫存器索引將該邏輯暫存器識別符轉譯為該實體記憶體位址。
  14. 如申請專利範圍第13項所述之繪圖處理裝置,其中該線程識別符為5位元,該暫存器索引為8位元。
  15. 如申請專利範圍第8項所述之繪圖處理裝置,其中該線程控制器還用以在該特定線程對該邏輯暫存器識別符所對應之該記憶庫存取結束後,釋放該邏輯暫存器識別符所對應之該記憶庫。
  16. 一種適用於具有多線程執行單元之繪圖處理裝置的記憶體存取方法,包含: 接收對應於一線程之一暫存器操作的一邏輯暫存器請求;根據與該邏輯暫存器請求相關的資料與該線程的一線程識別符產生一邏輯暫存器識別符;轉譯該邏輯暫存器識別符為一實體記憶體位址,該實體記憶體位址對應於該邏輯暫存器請求;根據該實體記憶體位址存取一記憶體的一實體位址,以實現對應於該邏輯暫存器識別符之該暫存器操作,該線程可透過該邏輯暫存器識別符來存取該記憶體的該實體位址;其中,當執行上述暫存器操作之一修改指令而存取一暫存器檔案時,上述暫存器檔案同時供另一指令存取。
  17. 如申請專利範圍第16項所述之記憶體存取方法,其中該產生步驟還包含合併該邏輯暫存器請求相關的資料與該線程識別符以產生該邏輯暫存器識別符。
  18. 如申請專利範圍第17項所述之記憶體存取方法,其中該線程識別符為5位元,該邏輯暫存器請求相關的資料為8位元的暫存器索引。
  19. 如申請專利範圍第16項所述之記憶體存取方法,還包含: 對應於該邏輯暫存器識別符之該暫存器操作結束後,釋放該邏輯暫存器請求對應之該實體位址。
TW100110323A 2010-04-21 2011-03-25 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法 TWI437507B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/764,243 US8514235B2 (en) 2010-04-21 2010-04-21 System and method for managing the computation of graphics shading operations

Publications (2)

Publication Number Publication Date
TW201142740A TW201142740A (en) 2011-12-01
TWI437507B true TWI437507B (zh) 2014-05-11

Family

ID=44438443

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100110323A TWI437507B (zh) 2010-04-21 2011-03-25 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法

Country Status (3)

Country Link
US (1) US8514235B2 (zh)
CN (1) CN102156959B (zh)
TW (1) TWI437507B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534614B2 (en) * 2012-06-08 2020-01-14 MIPS Tech, LLC Rescheduling threads using different cores in a multithreaded microprocessor having a shared register pool
US11663767B2 (en) * 2013-02-20 2023-05-30 Nvidia Corporation Power efficient attribute handling for tessellation and geometry shaders
US9292898B2 (en) * 2013-03-15 2016-03-22 Intel Corporation Conditional end of thread mechanism
US9767602B2 (en) * 2014-06-30 2017-09-19 Intel Corporation Techniques for reduced pixel shading
CN104572020B (zh) * 2014-12-31 2017-03-15 中国电子科技集团公司第三十八研究所 一种寄存器堆分页式扩展装置及其实现方法
KR20160144698A (ko) * 2015-06-09 2016-12-19 에스케이하이닉스 주식회사 메모리 장치
GB2546308B (en) * 2016-01-15 2019-04-03 Advanced Risc Mach Ltd Data processing systems
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
US10026145B2 (en) * 2016-12-13 2018-07-17 Qualcomm Incorporated Resource sharing on shader processor of GPU
US10360034B2 (en) * 2017-04-18 2019-07-23 Samsung Electronics Co., Ltd. System and method for maintaining data in a low-power structure
US11449432B2 (en) * 2019-05-24 2022-09-20 Texas Instruments Incorporated Methods and apparatus for eviction in dual datapath victim cache system
US10891708B1 (en) 2019-11-25 2021-01-12 Arm Limited Shader program execution in graphics processing
CN113345067B (zh) * 2021-06-25 2023-03-31 深圳中微电科技有限公司 一种统一渲染方法、装置、设备和引擎
CN116893854B (zh) * 2023-09-11 2023-11-14 腾讯科技(深圳)有限公司 指令资源的冲突检测方法、装置、设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9011743D0 (en) 1990-05-25 1990-07-18 Plessey Telecomm Data element switch
US7495669B2 (en) * 2002-12-26 2009-02-24 Canon Kabushiki Kaisha Image processing apparatus and image processing method
JP4637640B2 (ja) * 2005-05-16 2011-02-23 三菱電機株式会社 図形描画装置
US7313675B2 (en) * 2005-06-16 2007-12-25 Intel Corporation Register allocation technique
US7454599B2 (en) 2005-09-19 2008-11-18 Via Technologies, Inc. Selecting multiple threads for substantially concurrent processing
US8144149B2 (en) 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
CN1928918B (zh) 2005-10-14 2012-10-10 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
TWI322354B (en) * 2005-10-18 2010-03-21 Via Tech Inc Method and system for deferred command issuing in a computer system
US7692660B2 (en) 2006-06-28 2010-04-06 Microsoft Corporation Guided performance optimization for graphics pipeline state management
US8963930B2 (en) 2007-12-12 2015-02-24 Via Technologies, Inc. Triangle setup and attribute setup integration with programmable execution unit

Also Published As

Publication number Publication date
US20110261063A1 (en) 2011-10-27
CN102156959A (zh) 2011-08-17
US8514235B2 (en) 2013-08-20
CN102156959B (zh) 2014-04-23
TW201142740A (en) 2011-12-01

Similar Documents

Publication Publication Date Title
TWI437507B (zh) 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法
US8766988B2 (en) Providing pipeline state through constant buffers
US7447873B1 (en) Multithreaded SIMD parallel processor with loading of groups of threads
US7594095B1 (en) Multithreaded SIMD parallel processor with launching of groups of threads
CN109978751A (zh) 多gpu帧渲染
TWI525584B (zh) 多執行緒處理單元內之可程式繫結
US8817031B2 (en) Distributed stream output in a parallel processing unit
US8533435B2 (en) Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict
US8542247B1 (en) Cull before vertex attribute fetch and vertex lighting
US8619087B2 (en) Inter-shader attribute buffer optimization
US20110074802A1 (en) Architecture and Instructions for Accessing Multi-Dimensional Formatted Surface Memory
TW201337751A (zh) 執行成型記憶體存取作業的系統和方法
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
US10930047B2 (en) Resource synchronization for graphics processing
US11429534B2 (en) Addressing cache slices in a last level cache
US9348751B2 (en) System and methods for distributing a power-of-two virtual memory page across a non-power-of two number of DRAM partitions
WO2018118367A1 (en) Mid-render compute for graphics processing
US9734545B2 (en) Software methods in a GPU
US9594599B1 (en) Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors
US8605085B1 (en) System and method for perspective corrected tessellation using parameter space warping
US10445852B2 (en) Local image blocks for graphics processing
CN112749120A (zh) 将数据有效地传输至处理器的技术
US20110084975A1 (en) Draw Commands With Built-In Begin/End
US8564616B1 (en) Cull before vertex attribute fetch and vertex lighting
US8698814B1 (en) Programmable compute engine screen mapping