指令合并方法以及具有多數(shù)據(jù)通道的裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明關(guān)聯(lián)于一種圖形處理單元技術(shù),特別是一種指令合并方法W及具有多數(shù)據(jù) 通道的裝置。
【背景技術(shù)】
[0002] 圖形處理單元的架構(gòu)通常具有數(shù)百個(gè)基本著色器處理單元化asicshader processingunits),又稱為流處理器(streamprocessors)。每一個(gè)流處理器于每個(gè)周期 處理一個(gè)單指令多數(shù)據(jù)(SIMD,SingleInstructionMultipleData)線程(t虹ead)的指 令,接著于下一個(gè)周期處理另一個(gè)單指令多數(shù)據(jù)線程。圖形處理單元的效能受到二個(gè)重要 因素的影響,一為流處理器的數(shù)目,二為流處理器的能力。因此,本發(fā)明提出一種指令合并 方法W及具有多數(shù)據(jù)通道的裝置,用W增進(jìn)流處理器的能力。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的實(shí)施例提出一種由編譯器執(zhí)行的指令合并方法。取得多個(gè)第一指令,其 中,第一指令用W進(jìn)行計(jì)算操作、比較操作、邏輯操作、選擇操作W、條件分支操作、加載/ 存儲(chǔ)操作、采樣操作W及復(fù)雜數(shù)學(xué)操作中的一個(gè)。根據(jù)第一指令間的數(shù)據(jù)相依性進(jìn)行合并, W及將合并的指令傳送給流處理器。
[0004] 本發(fā)明的實(shí)施例另提出一種具有多數(shù)據(jù)通道的裝置,包含數(shù)據(jù)提取單元、旁路通 道W及主通道。旁路通道禪接至通用寄存器、常數(shù)緩沖器W及數(shù)據(jù)提取單元。主通道禪接 至數(shù)據(jù)提取單元W及旁路通道,包含序列的運(yùn)算單元、比較/邏輯單元W及后制單元。運(yùn)算 單元、比較/邏輯單元W及后制單元序列性地禪接,并且運(yùn)算單元、比較/邏輯單元W及后 制單元中的每一個(gè)禪接至旁路通道。
【附圖說明】
[0005] 圖1是依據(jù)本發(fā)明實(shí)施例的S維圖形處理裝置的硬件架構(gòu)圖。
[0006] 圖2是依據(jù)本發(fā)明實(shí)施例的指令合并方法流程圖。
[0007] 圖3A及3B是依據(jù)本發(fā)明實(shí)施例的=維圖形處理裝置的硬件架構(gòu)圖。
[0008] 圖4是依據(jù)本發(fā)明實(shí)施例的指令合并方法流程圖。
[0009] 圖5是依據(jù)本發(fā)明實(shí)施例的S維圖形處理裝置的硬件架構(gòu)圖。
【具體實(shí)施方式】
[0010] W下說明為完成發(fā)明的較佳實(shí)現(xiàn)方式,其目的在于描述本發(fā)明的基本精神,但并 不用W限定本發(fā)明。實(shí)際的
【發(fā)明內(nèi)容】
必須參考之后的權(quán)利要求書。
[0011] 必須了解的是,使用于本說明書中的"包含"、"包括"等詞,用W表示存在特定的技 術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、組件和/或組件,但并不排除可加上更多的技術(shù)特征、 數(shù)值、方法步驟、作業(yè)處理、組件、組件,或W上的任意組合。
[0012] 于權(quán)利要求中使用如"第一"、"第二"、"第等詞用來修飾權(quán)利要求中的組件,并 非用來表示之間具有優(yōu)先權(quán)順序,先行關(guān)系,或者是一個(gè)組件先于另一個(gè)組件,或者是執(zhí)行 方法步驟時(shí)的時(shí)間先后順序,僅用來區(qū)別具有相同名字的組件。
[0013]傳統(tǒng)的流處理器執(zhí)行單純的操作,例如演算(Algorithm)、比較(Compare)、邏輯 化ogic)、選擇(Selection)及條件分支度ranch)等。但一個(gè)著色器的指令間的數(shù)據(jù)相依 性高,使得流處理器必須頻繁的讀取或?qū)懭胪ㄓ眉拇嫫鳎–R,CommonRegisters)。運(yùn)些數(shù) 據(jù)相依性可能消耗大量的通用寄存器頻寬并造成瓶頸,并產(chǎn)生系統(tǒng)瓶頸。此外,通用寄存 器的寫后讀(RAW,ReadAfterWrite)問題可能危害指令執(zhí)行的效能。著色器通常使用搬 移(Move)指令來初始化通用寄存器,用W要求流處理器從一個(gè)通用寄存器或常數(shù)緩沖器 (CB,ConstantBuffer)傳遞數(shù)據(jù)或常數(shù)至另一個(gè)通用寄存器或常數(shù)緩沖器。為一個(gè)后處 理作業(yè),例如進(jìn)行數(shù)據(jù)存取的加載/存儲(chǔ)單元(LD/STLoad/Store化it)、進(jìn)行紋理數(shù)據(jù) 采樣的采樣單元(SMP,Sample化it)或特殊函數(shù)單元(S即,Special化nction化it)等, 流處理器負(fù)責(zé)從通用寄存器或常數(shù)緩沖器讀取一個(gè)或多個(gè)來源值,接著,傳遞至相應(yīng)的后 處理單元。運(yùn)些情況下,數(shù)據(jù)或常數(shù)不需要執(zhí)行任何算法,造成一定程度的流處理器不具 效率。本發(fā)明實(shí)施例提出一個(gè)新的架構(gòu),于一個(gè)流處理器中使用二個(gè)數(shù)據(jù)路徑,用W提升 流處理器的效能。第一個(gè)路徑可稱為主要通道(Main-pipe),包含演算(Algorithm)、比較 (Compare)、邏輯化ogic)、選擇(Selection)及條件分支度ranch)等作業(yè),而第二個(gè)路徑可 稱為旁路通道度ypass-pipe),用W從通用寄存器或常數(shù)緩沖器讀取數(shù)據(jù)或常數(shù),W及傳遞 至通用寄存器、常數(shù)緩沖器或后處理單元。
[0014] 圖1是依據(jù)本發(fā)明實(shí)施例的=維圖形處理裝置的硬件架構(gòu)圖。一個(gè)流處理器使 用二個(gè)通道來執(zhí)行指令,一為主要通道,另一為旁路通道。主要通道可包含=個(gè)具順序的 階段:演算階段(ALG,Algorithmstage);后邏輯階段(Post-LGC,Logic),包含比較和/或 邏輯等操作;W及后處理階段(Post-PROC,Process)包含選擇、條件分支和/或結(jié)果回寫 等操作。一個(gè)階段所產(chǎn)生的結(jié)果可帶到下一個(gè)階段。最終結(jié)果可存儲(chǔ)至通用寄存器,或輸 出至后處理單元。詳細(xì)來說,指令譯碼單元120譯碼從編譯器(compiler)傳來的指令請 求110,并通知需要取得數(shù)據(jù)或常數(shù)的通用寄存器地址121和/或常數(shù)緩沖器地址123。指 令譯碼單元120可取得指令請求110中的運(yùn)算碼的pcode,化erationCode)。數(shù)據(jù)提取單 元130取得通用寄存器地址121的數(shù)據(jù)133和/或常數(shù)緩沖器地址123的常數(shù)135,如果 需要,通知欲寫回的通用寄存器地址131。取得的數(shù)據(jù)133和/或常數(shù)135又可稱為操作 數(shù)的perand)。運(yùn)算單元140對取得的數(shù)據(jù)進(jìn)行計(jì)算操作。計(jì)算操作包含加、減、乘、除、左 位移、右位移等。比較/邏輯單元150可依據(jù)運(yùn)算單元140產(chǎn)生的結(jié)果進(jìn)行比較或邏輯操 作。比較操作包含取大值、取小值、數(shù)值比較等,邏輯操作包含與(AND)、或(OR)、非(NOT)、 或非(NOR)、異或狂OR)等。后制單元160可依據(jù)比較/邏輯單元150的操作結(jié)果將運(yùn)算后 的數(shù)據(jù)寫回至通用寄存器,或者傳遞至加載/存儲(chǔ)單元171、采樣單元173W及特殊函數(shù)單 元175中的一者。特殊函數(shù)單元175實(shí)施復(fù)雜數(shù)學(xué)運(yùn)算,例如正弦(SIN)、余弦(COS)、根數(shù) (SQRT)等。旁路通道可包含旁路單元180,用W從一個(gè)通用寄存器或一個(gè)常數(shù)緩沖器傳遞 數(shù)據(jù)或常數(shù)181至另一個(gè)通用寄存器或后處理單元。
[0015] 編譯器使用的指令可分為=類:主通道指令;旁路通道指令;W及后處理單元指 令。主通道指令包含演算階段、后邏輯階段W及后處理階段中使用到的指令。演算階段可 包含使用W下的指令(ALGinstructions) :FMAD、FA孤、FMUL、IMUL24、IMUL16、lA孤、SHL、S皿、FRC、FMOV、IMUL32I、IMUL24I、lA孤I、IMAXI、IMINI、SHLIW及甜RI等。后邏輯階段 可包含使用W下的指令(CMP/LGCinstructions) :IMAX、IMIN、FCMP、ICMP、IMAXI、IMINI、 N0R、AND、0R、X0R、ICMPI、N0RI、ANDI、0RIW及XORI等。后處理階段可包含使用W下的指令 (沈L/化anchinstructions):沈^8、化、IFANYW及IFA化等。后處理單元指令包含加載/ 存儲(chǔ)單元171、采樣單元173W及特殊函數(shù)單元175中使用到的指令。加載/存儲(chǔ)單元171 可包含使用W下的指令化Sinstructions) :LDU、STU、REDU、LDT、STT、REDUT、GLD、GSTW 及GREDU等。采樣單元173可包含使用W下的指令(SMPinstructions) :SAMPLE、SAMPLE_ B、SAMPLE_L、SAMPLE_C、SAMPLE_D、SAMPLE_GTHW及SAMPLE_FTH等。特殊函數(shù)單元 175 可 包含使用W下的指令(S即instructions):賄?、359、11)6、6乂?、5^、(:05^及591?1'等。旁 路通道指令可包含W下的指令:MOVW及M0VIMM等。
[0016] 使用如上所述的架構(gòu),編譯器可依據(jù)數(shù)據(jù)相依性合并多個(gè)主通道指令及后處理單 元指令成為一個(gè)指令,稱為靜態(tài)合并(staticCombine)。圖2是依據(jù)本發(fā)明實(shí)施例的指令 合并方法流程圖。編譯器可取得多個(gè)主通道指令W及一個(gè)后處理指令(如果需要)(步驟 S210),依據(jù)指令間的數(shù)據(jù)相依性進(jìn)行合并(S230),W及將合并后的指令傳送至指令譯碼單 元120(步驟S250)。于步驟S230,編譯器可依據(jù)W下規(guī)則來進(jìn)行靜態(tài)合并:
[0017]ALG+CMP+S化;
[0018]ALG+CMP+S化+S即/LS/SMP;
[0019]ALG+CMP+Branch;
[0020]ALG+LGC+沈L;
[0021]ALG+LGC+沈L+S即/LS/SMP;或
[0022] ALG+LGC+Branch。
[0023] 其中,ALG代表計(jì)算指令,CMP代表比較指令,LGC代表邏輯指令,S化代表選擇指 令,化anch代表?xiàng)l件分支指令,SFU代表數(shù)學(xué)運(yùn)算指令,LS代表加載/存儲(chǔ)指令,W及SMP 代表采樣指令。W下舉出一個(gè)實(shí)例說明靜態(tài)合并,著色器的偽碼如下所示:
[0024]
[00巧]編譯器將W上的偽碼進(jìn)行靜態(tài)合并,并轉(zhuǎn)譯成如下所示的機(jī)器碼:
[0026]
[0027] 第一個(gè)機(jī)器碼指示將通用寄存器R4的值加上通用寄存器R8的值(亦即是變量a 及b的值),并且將結(jié)果傳遞到下個(gè)階段,其中,"SFWD"代表將結(jié)果(亦即是變量X的值) 傳遞到下一階段的符號(hào)。第二個(gè)機(jī)器碼指示將寄存器R5的值(亦即是變量C的值)與上 一階段傳送下來的值(亦即是變量X的值)進(jìn)行比較,并將比較結(jié)果存儲(chǔ)于旗標(biāo)P1,其中, "代表此指令合并至前一個(gè)指令并且"SFWD"代表從上一階段傳送下來的符號(hào)。如果變量 X的值大于變量C的值,旗標(biāo)P1設(shè)為"1";否則,設(shè)為"0"。第S個(gè)機(jī)器碼指示依據(jù)旗標(biāo)P1 將寄存器R0寫入上一階段傳送下來的值(亦即是變量X的值)或者是寄存器R5的值(亦 即是變量C的值),其中,"+ "代表此指令合并至前一個(gè)指令。如果旗標(biāo)P1為"1",將寄存 器R0寫入寄存器R5的值(亦即是變量C的值);否則,寫入上一階段傳送下來的值(亦即 是變量X的值)。
[0028] 為了讓圖形處理單元可執(zhí)行合并后的指令,架構(gòu)中的計(jì)算單元(calculation units)可做一些調(diào)整。參考W上所述的靜態(tài)合并實(shí)例。圖3A及3B是依據(jù)本發(fā)明實(shí)施例的 S維圖形處理裝置的硬件架構(gòu)圖。加法