本發(fā)明屬于集成電路技術(shù)領(lǐng)域,涉及一種基于SIMT架構(gòu)統(tǒng)一染色器陣列的低復(fù)雜度分支處理電路。
背景技術(shù):
統(tǒng)一染色圖形處理器中統(tǒng)一染色器陣列完成頂點、像素的統(tǒng)一染色功能。在統(tǒng)一染色器陣列中,并行處理的實現(xiàn)是以SIMT為基礎(chǔ)的,主要的并行執(zhí)行單元中有16個,在一條指令發(fā)射后需要同時在16個執(zhí)行單元上同時執(zhí)行。但是在程序設(shè)計中,必須要包括條件跳轉(zhuǎn)等流程控制指令,由于16個并行單元上的輸入數(shù)據(jù)不同,所以很可能會出現(xiàn)多個并行單元條件判斷不一致,進而導(dǎo)致跳轉(zhuǎn)也不一致的情況。
技術(shù)實現(xiàn)要素:
發(fā)明目的:
本發(fā)明主要提出一種面向SIMT架構(gòu)統(tǒng)一染色陣列的低復(fù)雜度分支處理電路,該電路對于不同數(shù)量并行單元,不同數(shù)量現(xiàn)場均可滿足要求,該機制的實現(xiàn)電路時序性能高、可擴展性好。
技術(shù)方案:
一種面向SIMT架構(gòu)統(tǒng)一染色陣列的低復(fù)雜度分支處理電路,包括:
斷言寄存器單元(1)、斷言堆棧單元(2)、控制單元(3);
斷言寄存器單元(1):在指令執(zhí)行模塊(4)執(zhí)行條件判斷指令時,將條件判斷的結(jié)果以及現(xiàn)場號輸出給斷言寄存器單元(1),斷言寄存器單元(1)按照現(xiàn)場號將該值存入該現(xiàn)場的斷言寄存器中;在分支處理電路執(zhí)行POP指令時,控制單元(3)從斷言堆棧單元(2)中讀出斷言堆棧的數(shù)值填寫入斷言寄存器單元(1)該現(xiàn)場的斷言寄存器中;在分支處理電路執(zhí)行INV指令時,控制單元(3)將原斷言寄存器的值取反與斷言堆棧頂部的數(shù)值按位相“與”,寫入斷言寄存器單元(1)該現(xiàn)場的斷言寄存器中;斷言寄存器單元(1)將每個現(xiàn)場的斷言寄存器值輸出給控制單元(3);
控制單元(3):與任務(wù)調(diào)度模塊(5)、IFID模塊(6)、斷言寄存器單元(1)、斷言堆棧單元(2)相連,控制單元(3)接收IFIF模塊(6)下發(fā)的分支處理指令,所述分支處理指令包括:POP指令、INV指令、PUSH指令;在執(zhí)行POP指令時,從斷言堆棧單元(2)中按現(xiàn)場讀取數(shù)值傳輸給斷言寄存器單元(1);控制單元(3)在執(zhí)行PUSH指令時,將來自于斷言寄存器單元(1)當(dāng)前現(xiàn)場的斷言寄存器值寫入斷言堆棧單元(2)中;控制單元(3)在執(zhí)行INV指令時,控制單元(3)從斷言堆棧單元(2)獲取堆棧頂部的數(shù)值,將所述數(shù)值與斷言寄存器值的按位“反”進行按位“與”操作,并將操作結(jié)果傳輸回斷言寄存器單元(1);控制單元(3)在IFID模塊(6)發(fā)射非分支處理指令時,將來自于斷言寄存器單元(1)的斷言寄存器值、來自于任務(wù)調(diào)度模塊(5)的TaskMask按位相“與”,并將結(jié)果傳輸給指令執(zhí)行模塊(4);
斷言堆棧單元(2):接收控制單元(3)發(fā)出三種類型操作,包括:POP操作、PUSH操作、INV操作;對于POP操作,斷言堆棧單元(2)根據(jù)控制單元(3)輸入的現(xiàn)場號,從對應(yīng)現(xiàn)場的堆棧頂部讀出數(shù)據(jù)并返回給控制單元(3);對于PUSH操作,斷言堆棧單元(2)根據(jù)控制單元(3)輸入的現(xiàn)場號,向?qū)?yīng)現(xiàn)場的堆棧頂部寫入數(shù)據(jù);對于INV操作,斷言堆棧單元(2)根據(jù)控制單元(3)輸入的現(xiàn)場號返回對應(yīng)現(xiàn)場頂部的數(shù)據(jù),但并不執(zhí)行讀操作,也就是不影響整個堆棧的內(nèi)容。
有益效果:
1、對于多個現(xiàn)場,可以根據(jù)數(shù)據(jù)有效與否(data mask)、條件成功與否(predict mask)產(chǎn)生用于指示本線程是否實際執(zhí)行的指標(biāo)(excute mask),從而保證SIMT結(jié)構(gòu)的染色陣列時鐘能正確的執(zhí)行發(fā)射的指令,并且該機制對并行單元數(shù)目的增加,效率不受影響;
2、關(guān)于多個現(xiàn)場,本發(fā)明以8個warp、每個warp執(zhí)行4個周期共計32現(xiàn)場為例進行設(shè)計,但對于更多的現(xiàn)場在增加data mask寄存器、predict mask寄存器、predict mask堆棧等后也同樣支持;
3、本發(fā)明的設(shè)計結(jié)構(gòu)簡單,可擴展性高,電路實現(xiàn)效率高。
附圖說明
圖1是本發(fā)明描述的分支處理機制的功能架構(gòu)框圖。
具體實施方式
下面結(jié)合附圖和具體實施例,對本發(fā)明的技術(shù)方案進行清楚、完整地表述。顯然,所表述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提所獲得的所有其它實施例,都屬于本發(fā)明的保護范圍。
一種面向SIMT架構(gòu)統(tǒng)一染色陣列的低復(fù)雜度分支處理電路,如圖1所示,包括:
斷言寄存器單元(1)、斷言堆棧單元(2)、控制單元(3)。
所述斷言寄存器單元(1),每一個現(xiàn)場對應(yīng)有一個斷言寄存器,用來存儲該現(xiàn)場的斷言寄存器值。斷言寄存器的位數(shù)等于并行單元的個數(shù),斷言寄存器的個數(shù)等于程序運行的現(xiàn)場數(shù)。
所述斷言堆棧單元(2),每一個現(xiàn)場對應(yīng)有一個斷言堆棧,該堆棧在執(zhí)行程序嵌套時使用,用來進行斷言寄存器的出棧、入棧操作。斷言堆棧的位寬等于并行單元的個數(shù),斷言堆棧的深度等于程序嵌套的級數(shù),斷言堆棧的個數(shù)等于程序運行的現(xiàn)場數(shù)。
所述控制單元(3),是用來執(zhí)行PUSH、POP、INV指令讀寫斷言堆棧,產(chǎn)生新的斷言寄存器值,并將PredictMask與TaskMask的值按位相與產(chǎn)生ExcuteMask。
斷言寄存器單元(1):在指令執(zhí)行模塊(4)執(zhí)行條件判斷指令時,將條件判斷的結(jié)果以及現(xiàn)場號輸出給斷言寄存器單元(1),斷言寄存器單元(1)按照現(xiàn)場號將該值存入該現(xiàn)場的斷言寄存器中;在分支處理電路執(zhí)行POP指令時,控制單元(3)從斷言堆棧單元(2)中讀出斷言堆棧的數(shù)值填寫入斷言寄存器單元(1)該現(xiàn)場的斷言寄存器中;在分支處理電路執(zhí)行INV指令時,控制單元(3)將原斷言寄存器的值取反與斷言堆棧頂部的數(shù)值按位相“與”,寫入斷言寄存器單元(1)該現(xiàn)場的斷言寄存器中;斷言寄存器單元(1)將每個現(xiàn)場的斷言寄存器值輸出給控制單元(3);
控制單元(3):與任務(wù)調(diào)度模塊(5)、IFID模塊(6)、斷言寄存器單元(1)、斷言堆棧單元(2)相連,控制單元(3)接收IFIF模塊(6)下發(fā)的分支處理指令,所述分支處理指令包括:POP指令、INV指令、PUSH指令;在執(zhí)行POP指令時,從斷言堆棧單元(2)中按現(xiàn)場讀取數(shù)值傳輸給斷言寄存器單元(1);控制單元(3)在執(zhí)行PUSH指令時,將來自于斷言寄存器單元(1)當(dāng)前現(xiàn)場的斷言寄存器值寫入斷言堆棧單元(2)中;控制單元(3)在執(zhí)行INV指令時,控制單元(3)從斷言堆棧單元(2)獲取堆棧頂部的數(shù)值,將所述數(shù)值與斷言寄存器值的按位“反”進行按位“與”操作,并將操作結(jié)果傳輸回斷言寄存器單元(1);控制單元(3)在IFID模塊(6)發(fā)射非分支處理指令時,將來自于斷言寄存器單元(1)的斷言寄存器值、來自于任務(wù)調(diào)度模塊(5)的TaskMask按位相“與”,并將結(jié)果傳輸給指令執(zhí)行模塊(4);
斷言堆棧單元(2):接收控制單元(3)發(fā)出三種類型操作,包括:POP操作、PUSH操作、INV操作;對于POP操作,斷言堆棧單元(2)根據(jù)控制單元(3)輸入的現(xiàn)場號,從對應(yīng)現(xiàn)場的堆棧頂部讀出數(shù)據(jù)并返回給控制單元(3);對于PUSH操作,斷言堆棧單元(2)根據(jù)控制單元(3)輸入的現(xiàn)場號,向?qū)?yīng)現(xiàn)場的堆棧頂部寫入數(shù)據(jù);對于INV操作,斷言堆棧單元(2)根據(jù)控制單元(3)輸入的現(xiàn)場號返回對應(yīng)現(xiàn)場頂部的數(shù)據(jù),但并不執(zhí)行讀操作,也就是不影響整個堆棧的內(nèi)容。
實施例
1、斷言寄存器單元
斷言寄存器即Predicate Mask,1個SSC內(nèi)部,1個周期內(nèi),對應(yīng)20個1位的Predicate Mask。為支持8個warp,每個warp運行4個周期,斷言寄存器需要有32套現(xiàn)場;SFU對應(yīng)的Predicate Mask由同一個SPU內(nèi)的4個SC的Predicate Mask進行或操作得到。
斷言寄存器的值受以下行為影響:SC對條件跳轉(zhuǎn)指令的執(zhí)行結(jié)果,對斷言堆棧的POP、INV操作。
2、控制單元
該單元負責(zé)Excute Mask的產(chǎn)生,以及斷言堆棧的PUSH、POP和INV。
一個SPU內(nèi)部SC和SFU的DataMask均與該SPU對應(yīng)的TaskMask相同,而ExcuteMask則是DataMask和PredicateMask的按位與。
PUSH操作過程為,讀取斷言寄存器的內(nèi)容(1個周期,共20位),寫入斷言堆棧;
POP操作過程為,從斷言堆棧的頂端讀取斷言信息,將其寫入斷言寄存器;
INV操作的過程為,讀取當(dāng)前斷言寄存器的內(nèi)容(假定為m),讀取斷言堆棧頂端的斷言信息(假定為n),對m按位取反后,將結(jié)果與n進行按位與,然后將結(jié)果((~m)&n)寫入斷言寄存器。
3、斷言堆棧單元
該堆棧用于保存Predicate Mask,為支持8個warp4個周期,該堆棧需要有32套現(xiàn)場。對于每個現(xiàn)場,該堆棧寬度為20b,深度為32(支持32層條件分支嵌套)。