專利名稱:包括純量算術(shù)邏輯單元的單指令多數(shù)據(jù)處理機(jī)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖形向量(vector)處理機(jī),特別是涉及一種包括純量(scalar)算術(shù)邏輯單元(arithmetic logic units;ALUs)的圖形處理機(jī),可用于處理圖形向量數(shù)據(jù)。
背景技術(shù):
圖形數(shù)據(jù)可利用幾何(XYZW)信息或像素值(RGBA)信息為成分,以向量形式組合來表示。通常用來處理這些向量的幾何計算器(geometry engine)會將所有的信息組合成分在同一時間處理,因而需要復(fù)雜的內(nèi)部構(gòu)造,并且數(shù)據(jù)輸入與輸出的間也需要較長的時間才能完成圖形數(shù)據(jù)的處理。一般幾何計算器是任何現(xiàn)代圖形加速器(graphics accelerator)中重要的前端部分。幾何計算器處理數(shù)據(jù)的速度會影響圖形加速器結(jié)構(gòu)整體的效率。
最近圖形API發(fā)展必須要支持特殊指示,并且規(guī)定硬件處理幾何與像素值向量的能力。由于這些高標(biāo)準(zhǔn)實施規(guī)定,現(xiàn)在的圖形計算器(graphicsengine)都被實施成能接收復(fù)雜輸入數(shù)據(jù)與內(nèi)部數(shù)據(jù)縱橫制(crossbars),以并行方式處理全部向量的組合成分的一個單元。再者,為了實現(xiàn)這些實施規(guī)定,圖形計算器利用額外硬件與額外時間,在單指令多數(shù)據(jù)(SingleInstrction,Multiple Data;SIMD)或多指令多數(shù)據(jù)(MultipleInstruction,Multiple Data;MIMD)的架構(gòu)中使用多向量單元。因此導(dǎo)致需要極長指令(Very Long Instruction Word;VLIW)的架構(gòu),其中包括復(fù)雜的控制與同步單元以支持多線執(zhí)行(multithreaded execution)的程序。
請參閱圖1,圖1顯示已知技術(shù)的向量處理機(jī)單元的數(shù)據(jù)流10。圖形向量12的組合成分Xi、Yi、Zi、與Wi輸入至緩沖存儲器14。每一個圖形向量12從緩沖存儲器14依序讀出到向量ALU 16。單一向量ALU 16同一時間并行運(yùn)算向量12的每一個組合成分。向量ALU 16包括一個執(zhí)行特殊運(yùn)作的特殊功能單元18。ALU 16需要大而復(fù)雜的內(nèi)部結(jié)構(gòu)以便同時執(zhí)行向量12的四個組合成分(即Xi、Yi、Zi、以及Wi)的運(yùn)算。此外,ALU 16的內(nèi)部協(xié)議以及通訊也因運(yùn)算的并行性質(zhì)而更復(fù)雜。向量ALU 16產(chǎn)生最終輸出向量20,其中包括的組合成分有Xout、Yout、Zout、以及Wout。已知的向量處理單元同時處理各向量12的所有組合成分,因此這樣的向量處理單元的架構(gòu)為并行(全向量或橫向)向量成分流。
請參閱圖2,圖2顯示已知的向量處理機(jī)處理一組數(shù)據(jù)的數(shù)據(jù)途徑圖。圖2的例子中,“正規(guī)化差額”的函數(shù)顯示如下vector Normalized_Difference(vector V1,vector V2)V1->r0.xyzw V2->r1.xyzw(xyzw為圖形數(shù)據(jù)的組合成分)該函數(shù)對應(yīng)的指令如下SUB r2,r0,r1//subtraction of all componentsDP3 r3.x,r2,r2//dot product of 3 components(x,y,z)with resultin x-componentRSQ r3.x,r3.x//reciprocal square root of result in x-componentMUL r2,r2,r3.x//scaling all components with RSQ result請參閱圖2,其中第一行指令周期(1)將r0與r1相減,并產(chǎn)生各組合成分x、y、z、w的輸出向量r2。第二行指令周期(2)將r2與本身點(diǎn)積(dotproduct),只有在x組合成分如r3.x所得到的答案。第三行指令周期(3)中,計算出r 3.x的平方根倒數(shù)。如圖2所示,第三行指令周期(3)中,只有在向量的x組合成分上運(yùn)算。第四行指令周期(4)中,r2的組合成分于是按照x組合成分(即r3.x)的比例調(diào)整,以產(chǎn)生正規(guī)化向量差r2。使用已知技術(shù)處理四組的數(shù)據(jù),程序會重復(fù)四次,也就是一共會花費(fèi)執(zhí)行十六行指令周期的時間。
已知技術(shù)的向量處理單元,由于要同時(并行)處理向量的組合成分,結(jié)構(gòu)非常復(fù)雜。也因此潛伏著延遲時間成為處理過程中極大的問題。已知的向量處理單元也需要較大的指令形式,可以包括控制向量組合成分選路及處理的多位。已知的向量處理單元并需要復(fù)雜的輸入數(shù)據(jù)總線,以支持圖形API所需要的功能。最后,使用已知的向量處理單元的硬件或軟件必須要檢測數(shù)據(jù)相依性。
本發(fā)明針對上述已知的向量處理單元的缺點(diǎn),提供一個使用純量ALU的向量處理單元。本發(fā)明提供的SIMD純量處理單元,因此會比已知的單元更小而簡單。本發(fā)明還因此提供一種系統(tǒng),系統(tǒng)的指令組比已知的向量處理單元更簡單,并降低所需的潛伏延遲時間。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種SIMD純量處理單元,處理至少兩個由多成分組合而成的向量。SIMD純量處理單元還包括至少一個可運(yùn)作的純量算術(shù)邏輯單元,從輸入數(shù)據(jù)緩沖器接收向量的組合成分。純量算術(shù)邏輯單元可在向量的各組合成分上執(zhí)行函數(shù)運(yùn)作,以判斷結(jié)果。SIMD純量處理單元還包括輸出轉(zhuǎn)換器,可從算術(shù)邏輯單元接收結(jié)果。如有需要,輸出轉(zhuǎn)換器還可將組合成分重組成并行向量成分流(parallel vector component flow)。
SIMD純量處理單元還包括與純量算術(shù)邏輯單元相互通訊的特殊功能單元。特殊功能單元可在向量組合成分上執(zhí)行某些特殊運(yùn)算,是純量算術(shù)邏輯單元無法做到的運(yùn)算。SIMD純量處理單元還包括多工器,多工器從各純量算術(shù)邏輯單元接收向量組合成分,并為特殊功能單元選擇一個組合成分執(zhí)行特殊運(yùn)算。
通常向量會有i個組合成分,純量處理單元于是包括i個純量算術(shù)邏輯單元(scalar arithmetic logic units;SCU)。每一個純量算術(shù)邏輯單元是一個連接至另一個,而指令傳送至第一個純量算術(shù)邏輯單元后會先被延遲,再被傳送至隨后的純量算術(shù)邏輯單元。每一個純量算術(shù)邏輯單元至少有一個指令延遲寄存器,以延遲傳給下一個連接的純量算術(shù)邏輯單元的指令。下一個純量算術(shù)邏輯單元的地址與控制訊號也可因此被延遲。
純量算術(shù)邏輯單元還包括一個為要運(yùn)算向量組合成分的數(shù)據(jù)路徑區(qū),以及一個運(yùn)算數(shù)據(jù)路徑區(qū)的控制與地址模塊。純量算術(shù)邏輯單元也可包括至少一個延遲共享數(shù)據(jù)至下一個連接的純量算術(shù)邏輯單元的數(shù)據(jù)延遲寄存器。
依照本發(fā)明提供一種方法,以SIMD純量處理單元,處理至少兩個由多成分組合而成的向量。本發(fā)明的方法最初利用輸入數(shù)據(jù)緩沖器,先將向量的組合成分從并行向量成分流重新排列成連續(xù)向量成分流(sequential vectorcomponent flow)。接著,以一各自的純量算術(shù)邏輯單元執(zhí)行一個向量組合成分的運(yùn)算,并產(chǎn)生運(yùn)算結(jié)果。特殊功能單元也可在組合成分上執(zhí)行運(yùn)算。最后運(yùn)算結(jié)果的各組合成分會被輸出至轉(zhuǎn)換器,以重新排列成并行向量成分流。
按照本發(fā)明提供的純量算術(shù)邏輯單元,可用在SIMD純量處理單元上處理向量組合成分。各純量算術(shù)邏輯單元可被連續(xù)連接到另一個向量處理單元的純量算術(shù)邏輯單元。純量算術(shù)邏輯單元有一個執(zhí)行向量組合成分的運(yùn)算的數(shù)據(jù)路徑區(qū)。純量算術(shù)邏輯單元還有一個延遲發(fā)布向量的組合成分到下一個連接的純量算術(shù)邏輯單元的延遲寄存器區(qū)。依據(jù)本發(fā)明,純量算術(shù)邏輯單元的延遲寄存器區(qū)可包括一個寄存器,用來延遲每個通過純量算術(shù)邏輯單元的向量組合成分。純量算術(shù)邏輯單元還包括一個用來控制數(shù)據(jù)路徑區(qū)的地址與控制模塊。純量算術(shù)邏輯單元的一個地址與控制延遲寄存器可延遲傳地址與控制訊號至下一個連接的純量算術(shù)邏輯單元所需要的時間。純量算術(shù)邏輯單元還可包括一個共享數(shù)據(jù)延遲寄存器,用來延遲傳送共享數(shù)據(jù)至數(shù)據(jù)路徑區(qū)的時間。
依照本發(fā)明,可提供SIMD處理單元,用來處理包括x、y、z、w組合成分的向量。各個x、y、z、w組合成分都有多個值。SIMD處理單元有一個正交存取存儲器(orthogonal access memory),將各組合成分中多個值的并行向量成分流排列成連續(xù)向量成分流。SIMD處理單元還包括一個純量處理機(jī)與正交存取存儲器相連。純量處理機(jī)有一排純量算術(shù)邏輯單元,分別用來執(zhí)行從正交存取存儲器傳來組合成分的每一個值,并產(chǎn)生結(jié)果。純量處理機(jī)還包括一個特殊功能單元,與這排純量算術(shù)邏輯單元相連。特殊功能單元執(zhí)行從其中一個純量算術(shù)邏輯單元傳來結(jié)果的運(yùn)算,并將結(jié)果送回原本的純量算術(shù)邏輯單元。SIMD處理單元還包括一個輸出正交轉(zhuǎn)換器,與純量處理機(jī)連接。輸出正交轉(zhuǎn)換器將從純量處理機(jī)得到的結(jié)果,重新排列成并行向量成分流。
為了使本發(fā)明的上述和其它特征能更明顯易懂,下面將結(jié)合附圖作詳細(xì)說明。
圖1為已知向量處理單元的數(shù)據(jù)流程圖;圖2為已知向量處理單元處理一組數(shù)據(jù)的路徑表示圖;圖3為本發(fā)明的向量SIMD處理單元;圖4為本發(fā)明的純量SIMD處理機(jī)的實體組織圖;圖5為使用本發(fā)明的向量SIMD處理單元的指令計時圖;
圖6為圖4的純量算術(shù)與邏輯單元(SCU)的內(nèi)部結(jié)構(gòu)的電路圖;圖7a-7b為本發(fā)明的向量處理單元處理一組數(shù)據(jù)的路徑表示圖。
附圖符號說明10-已知技術(shù)的向量處理機(jī)單元的數(shù)據(jù)流;12-圖形向量;14-輸入緩沖存儲器;16-向量ALU;18-特殊功能單元;20-輸出向量;30-SIMD處理單元;32-輸入數(shù)據(jù)緩沖器;33-分量向量(component vector);34a-34d-純量ALU1-4;36-特殊功能單元;38-輸出正交轉(zhuǎn)換器;40-純量輸出向量;42-純量處理機(jī);44-多工器;46-數(shù)據(jù)路徑區(qū);48-7×4多工器;50-乘法器;52-多工器;54-加法器;56-進(jìn)位傳播加法器(CPA);58-2×1多工器;60-乘法累加器;62-寫回寄存器;64-累加寄存器;66-寄存器區(qū);68、70、72、74、76-寄存器;
78-負(fù)載寄存器;79-存儲器區(qū);80-寄存器檔案;82-控制與地址模塊;84-控制區(qū)。
具體實施例方式
圖示的目的只在于解釋本發(fā)明的最佳實施例,并非用來限制本發(fā)明。圖3描述依據(jù)本發(fā)明建造的SIMD向量處理單元。圖形向量12輸入至SIMD處理單元30的輸入數(shù)據(jù)緩沖器32,使圖形向量12可被重新安排成適當(dāng)?shù)捻樞?。輸入?shù)據(jù)緩沖器32具體來說是四組正交存取存儲器,可將組合成分以連續(xù)(垂直)向量成分流的方式輸出。如同圖3所示,向量的組合成分被重新排列而使每一個向量的x組合成分同時被輸出。因此,分量向量(componentvector)33的組合成分是被同時輸出的X1、X2、X3、以及X4。接著各向量的Y組合成分(即Y1、Y2、Y3、Y4)同時被輸出。這樣的輸出程序也同樣發(fā)生在Z以及W組合成分上。藉由這種輸出程序,向量被輸入數(shù)據(jù)緩沖器32從并行向量成分流轉(zhuǎn)換成連續(xù)向量成分流。
分量向量(component vector)33接著會被輸入至純量處理機(jī)42,純量處理機(jī)42中有一排四個純量ALU34a-34d,以及一個特殊功能單元(SpecialFunction Unit;SFU)36。每一個ALU34a-34d與SFU36都為分量向量(component vector)33的組合成分執(zhí)行運(yùn)算。分量向量(componentvector)33的組合成分被純量ALU 34a-34d以并行方式處理,下面會有較詳細(xì)的說明。純量處理機(jī)42產(chǎn)生一個純量輸出向量40,并將此純量輸出向量40輸入至一個輸出正交轉(zhuǎn)換器38。純量輸出向量40必須被重新排列,才可產(chǎn)生輸出向量20。轉(zhuǎn)換器38是一個垂直寄存器,有能力同時處理向量12的所有組合成分。為了產(chǎn)生輸出向量20,轉(zhuǎn)換器38會將純量處理機(jī)12輸出的向量組合成分重新排列至正確的并行向量成分流。輸出正交轉(zhuǎn)換器38的運(yùn)作在本發(fā)明申請人的另一份專利“同步定期正交數(shù)據(jù)轉(zhuǎn)換器”說明書中有更詳細(xì)的解說。
請參閱圖4,此圖顯示純量處理機(jī)42的實體組織。處理機(jī)42有四個一樣的純量ALU(SCU)34a-34d以及一個特殊功能單元36。每一個純量ALU34a-34d都有四個輸入I0-I3,以及四個輸出O0-O3。每一個純量ALU34a-34d也有一個存儲器地址輸入MA、一個共享數(shù)據(jù)輸入C、一個存儲器地址輸出MO、以及一個共享數(shù)據(jù)輸出CO。每一個純量ALU 34a-34d還有一個轉(zhuǎn)送輸出FWD,與一個特殊功能單元輸入SC。
每個分量向量(component vector)33中各有M位的組合成分,分別輸入至純量ALU 34a-34d輸入I0-I3的其中特定的一個輸入。例如,分量向量(component vector)33包括X組合成分(即X1、X2、X3、X4),第一個X組合成分(即X1)的M位先被輸入至純量ALU34a的I0。同樣地,第二個X組合成分(即X2)的M位被輸入至第二個純量ALU 34b的I1,第三個X組合成分(即X3)的M位被輸入至第三個純量ALU 34c的I2,第四個X組合成分(即X4)的M位被輸入至第四個純量ALU 34d的I3。每一個純量ALU 34a-34d剩下的輸入會連接到純量ALU 34a-34d的一個輸出。例如,第一個純量ALU 34a中,輸出O0被連接至輸入I3,輸出O2被連接至輸入I1,輸出O3被連接至輸入I2。輸出O1是最終的輸出,用來產(chǎn)生純量ALU輸出向量40的第一個X組合成分。依照圖4所示,其它純量ALU 34b-34d也會將各自剩下來的輸出連接至各自的其它輸入。各純量ALU 34a-34d個別將輸入I0-I3以及輸出O0-O3連接,這樣的方式使各純量ALU依據(jù)圖5的指示圖中每一個指示周期作個別運(yùn)作。純量ALU 34b在輸出O2產(chǎn)生純量ALU輸出向量40的第二個組合成分,同樣地,純量ALU34c在輸出O3產(chǎn)生純量ALU輸出向量40的第三個組合成分,純量ALU 34d在輸出O0產(chǎn)生純量ALU輸出向量40的第四個組合成分。
這里補(bǔ)充前面的敘述,每一個純量ALU 34a-34d的轉(zhuǎn)送輸出FWD連接于一個多工器44。多工器44的輸出連接到SFU 36,SFU 36是用來運(yùn)算特殊的功能,例如1/x、1/sqrt、sqrt、log、exp、等等。SFU 36的輸出連接到每一個純量ALU 34a-34d的SC輸入。當(dāng)純量ALU 34a-34d執(zhí)行到無法運(yùn)算的指令時,SFU 36會幫忙執(zhí)行運(yùn)算,并將運(yùn)算結(jié)果傳回到適當(dāng)?shù)募兞緼LU34a-34d。
每一個純量ALU 34a-34d的輸入MA用來接收地址與控制訊號。在經(jīng)過一段適當(dāng)?shù)难舆t時間后,每一個純量ALU 34a-34d的輸出MO轉(zhuǎn)送這些地址與控制訊號到下一個純量ALU 34a-34d。適當(dāng)?shù)难舆t使得每一個接下來的純量ALU 34a-34d可以在正確的周期處理指令,以支持分量向量(componentvector)33的并行處理方式。同樣地,從存儲器傳來共享數(shù)據(jù)的M位會輸入至每一個純量ALU 34a-34d的輸入C,并在適當(dāng)?shù)囊欢窝舆t時間后,藉由輸出CO轉(zhuǎn)送到下一個純量ALU 34a-34d。地址與控制訊號因此會從一個純量ALU 34到另一個純量ALU 34,間隔適當(dāng)?shù)难舆t時間,一個接著一個的發(fā)布。輸入數(shù)據(jù)(向量組合成分)直接分發(fā)到各純量ALU 34一個合適的輸入I0-I3,因此提供處理隨后的時鐘周期所需要的延遲時間。如圖4所示,純量處理機(jī)42只有三種單元純量ALU 34a-34d、特殊功能單元(SFU)36、以及多工器44,因此在實施上是非常簡單的。
請參閱第4、5、6圖,其中包括一個純量處理機(jī)42以及指令周期計時的例子。在第一個指令執(zhí)行周期(1)中,第一個純量ALU 34a在第一個純量ALU 34a的輸入I0接收到第一個組合成分33a,并對第一個組合成分33a作運(yùn)算。第一個純量ALU 34a從微碼(microcode)單元接收控制與地址數(shù)據(jù),并從存儲器接收共享數(shù)據(jù)。參閱圖6,控制與共享數(shù)據(jù)在控制與共享延遲寄存器68與70中被延遲一個指令執(zhí)行周期,并以連續(xù)順序轉(zhuǎn)送至下一個純量ALU 34b,以在下一個指令執(zhí)行周期作運(yùn)算。同樣地,純量單元34b、34c、以及34d會用相同的方法,彼此依序延遲并轉(zhuǎn)送對應(yīng)的控制與共享數(shù)據(jù)。反之,如圖4所示,輸入向量成分?jǐn)?shù)據(jù)33b將被傳送到第二個純量ALU 34b的輸入I1。如第4與圖6所示,輸入向量成分?jǐn)?shù)據(jù)33b會被寄存器72延遲,直到下一個指令周期,然后再從O1轉(zhuǎn)送至同一個純量ALU 34b的輸入I0。其它的純量ALU 34c以及34d會分別從輸入I2、I3接收此輸入數(shù)據(jù),為各向量組合成分33c、33d提供所需的延遲時間。
在第二個指令執(zhí)行周期(2)中,第二個純量ALU 34b對第二組合成分33b作運(yùn)算,并在延遲后將控制與共享數(shù)據(jù)轉(zhuǎn)送至第三個純量ALU 34c。當(dāng)?shù)诙兞緼LU 34b在作運(yùn)算的同一時間,第一個純量ALU 34a的輸出,與其它向量輸入向量組合成分33c、33d將會被純量ALU 34a、34c、及34d的內(nèi)部延遲寄存器延遲。同樣地,在第三個指令周期(3)中,第三個純量ALU 34c在其它訊號被延遲的時候,對第三組合成分33c作運(yùn)算。在第四個指令周期(4)中,第四個純量ALU 34d在其它訊號被延遲的時候,對第四組合成分33d作運(yùn)算。由此所見,各純量ALU 34a-34d分別對向量的一個組合成分作相同指令的運(yùn)算,只不過是發(fā)生在不同的時間。延遲輸入及輸出向量組合成分的內(nèi)部延遲寄存器在最終的處理周期會將輸出數(shù)據(jù)對齊,使得每周期提供的執(zhí)行指令可以產(chǎn)生正確的運(yùn)算結(jié)果。
藉由在每個指令周期延遲訊號,以及交錯各純量ALU 34a-34d的運(yùn)算,可以只利用一個特殊功能單元來執(zhí)行純量運(yùn)算。如圖5所示,各純量ALU34a-34d的輸出還可跳至多工器44的輸入(即圖4所示的Fwd輸出)。藉由跳過延遲程序,SFU 36可以在適當(dāng)?shù)膱?zhí)行指令周期執(zhí)行其特殊功能。SFU 36的輸出會輸入至各純量ALU 34a-34d的輸入SC。就這一點(diǎn),純量處理機(jī)42可以只使用單個SFU 36作特殊運(yùn)算。
請參閱圖6,圖6顯示各純量ALU 34a-34d的內(nèi)部結(jié)構(gòu)。各純量ALU 34的構(gòu)造并不取決于該純量ALU 34在處理機(jī)42中的位置。端口連接的差別是由處理機(jī)34中純量ALU 34的位置規(guī)定的。純量ALU 34有數(shù)據(jù)路徑區(qū)46,包括7×4多工器48。7×4多工器48其中一個輸入為端口10。7×4多工器48的其它輸入為共享數(shù)據(jù)、從內(nèi)部寄存器檔案80來的已登記數(shù)據(jù)、寫回寄存器62、累加器64、以及負(fù)載寄存器78。數(shù)據(jù)路徑區(qū)46還包括乘法器50,與多工器48的兩個輸出連接。乘法器50也與7×4多工器48的其中一個輸出連接。乘法器50的另一個輸入與乘法累加器(Multiply Accumulator;MACC)60的輸出連接。乘法器50的輸出與多工器52的輸出與加法器54的輸入連接。加法器54的輸出則連接至乘法累加器60以及進(jìn)位傳播加法器(Carry Propagation Adder;CPA)56。乘法器50、加法器54與CPA 56構(gòu)成ALU 34的算術(shù)計算單元。CPA 56的輸出被連接至寫回(Write Back;WB)寄存器62,產(chǎn)生輸出O0,以及將寄存器62連接至7×4多工器48的輸入與寄存器檔案80。
數(shù)據(jù)路徑區(qū)46還包括第二個2×1多工器58,多工器58的輸入與CPA56的輸出訊號,以及從特殊功能單元36傳回的數(shù)據(jù)訊號SC連接。多工器64的輸出接著被輸進(jìn)累加器寄存器ACCxT 64,累加寄存器64中運(yùn)作的每一個引線(thread)。累加器寄存器64的輸出被連接于7×4多工器48的輸入。
純量ALU 34還包括寄存器區(qū)66,包括延遲與處理寄存器。更具體來說,寄存器66有地址與控制延遲寄存器68與共享數(shù)據(jù)延遲寄存器70,用來提供地址/控制訊號提供所需要的延遲時間,并如先前圖5的描述,用作共享數(shù)據(jù)訊號的延遲。寄存器區(qū)66也包括負(fù)載寄存器(Load Register;LR)78,從7×4多工器48計算出的結(jié)果。寄存器區(qū)66也有三個輸入延遲寄存器72、74、及76,如圖5中所示,這些輸入延遲寄存器是用來延遲輸入訊號I1、I2、及I3。
請參閱圖6,在存儲器區(qū)79中,純量ALU 34a有一個暫時的SRAM存儲器80,大小為N乘M個位,為7×4多工器48提供讀出輸出訊號RD0與RD1。存儲器80被控制區(qū)84的控制與地址模塊82所控制,從端口MA接收地址與控制數(shù)據(jù),以產(chǎn)生適合的地址與控制訊號到多工器48、乘法器50、及多工器52,以及累加器64與負(fù)載寄存器78。
下文與圖7a-7b為本發(fā)明的指令周期的范例。這些指令的功能與之前所述的圖2范例相同,為“正規(guī)化差額”的函數(shù)。
Vector Normalized_Difference(vector V1,vector V2)V1->r0.xyzw=r0
,r0[1],r0[2],r0[3]V2->r1.xyzw=r1
,r1[1],r1[2],r1[3](x,y,z,w-圖形數(shù)據(jù)向量的組合成本,r
為分別的純量)對于此函數(shù)在純量處理機(jī)30中對應(yīng)的指令為Repl(j<3)SUB R2[j],r0[j],r1[j]//subtraction of allcomponentsRepl(j<3)MAC Null,r2[j],r2[j]//dot product of all componentswith result in x-component,implements as multiply-accumulateRSQ ACC,F(xiàn)WD//reciprocal square root of result in x-componentforwarded to Special Function Unit,paired with MACRepl(j<3)MUL r2[j],r2[j],r2[j],ACC//scaling allcomponents with the RSQ result(Repl(j<3)為相同指令的復(fù)制前置)圖7a-7b顯示每一個純量ALU34a-34d執(zhí)行先前描述的函數(shù)vectorNormalized_Difference(vector V1,vector V2)的運(yùn)算。在第一行指令周期(1)中,第一個純量ALU 34a將第一個x組合成分執(zhí)行減法。的后在第二個指令周期(2)中,純量ALU 34a將第二個y組合成分執(zhí)行減法。在第三個指令周期(3)中,純量ALU 34a將第三個z組合成分執(zhí)行減法。在第四個指令周期(4)的一開始,純量ALU 34a利用乘法累加運(yùn)算,開始將所有組合成分執(zhí)行點(diǎn)乘。在第四個指令周期(4)中,x組合成分會被乘。在第五個指令周期(5)中,y組合成分會被乘,以及在第六個指令周期(6)中,z組合成分會被乘,以計算出點(diǎn)乘的結(jié)果。接著在第七個指令周期(7)中,點(diǎn)乘結(jié)果會被轉(zhuǎn)送到特殊功能單元36,隨即執(zhí)行平方根倒數(shù)(RSQ)。如同先前所描述的,特殊功能單元36用來執(zhí)行ALU34a無法運(yùn)算的特殊函數(shù),例如計算平方根、平方根倒數(shù)、log、exp等等。當(dāng)特殊功能單元36執(zhí)行RSQ運(yùn)算時,純量ALU34a保留在閑置狀態(tài),然后將計算出的運(yùn)算結(jié)果放入累加器(ACC)中。在第八個指令周期(8)中,累加器(ACC)的結(jié)果與x組合成分相乘,以按照比例放大。同樣地,在第九個指令周期(9)中,累加器的結(jié)果與y組合成分相乘,以及在第十個指令周期(10)中,累加器的結(jié)果與z組合成分相乘。如此,第一純量ALU 34a的結(jié)果在第十個指令周期就會計算好,也就是純量ALU 34會有九個指令周期忙碌,只有一個指令周期是閑置的。
第二、第三、及第四個純量ALU 34b、34c、34d分別在延遲過后,對一個向量組合成分執(zhí)行與第一個純量ALU 34a相同的指令。如圖7a-7b所示,第二個純量ALU 34b在延遲一個指令周期后,執(zhí)行與第一個純量ALU 34a相同的指令于第二組的組合成分。第三個純量ALU 34c在第二個純量ALU 34b執(zhí)行指令之后的一個指令周期開始運(yùn)算,而第四個純量ALU 34d在第三個純量ALU 34c執(zhí)行指令的后的一個指令周期開始運(yùn)算。
藉由將每一個ALU 34a-34d執(zhí)行指令的時間依序延遲一個周期,在純量處理機(jī)42中,只使用一個特殊功能單元36是可行的。如圖7a-7b所示的函數(shù)運(yùn)算中,第七個指令周期(7),特殊功能單元36會為第第一個純量ALU34a的指令引線計算平方根倒數(shù)(RSQ)。而在第八個指令周期(8)中,特殊功能單元36會為第二個純量ALU34b的指令引線計算平方根倒數(shù)(RSQ)。第三個純量ALU 34c的平方根倒數(shù)(RSQ)會在第九個指令周期(9)被計算,第四個純量ALU 34d的平方根倒數(shù)(RSQ)則會在第十個指令周期(10)被計算。
SIMD純量處理單元30可以與每一個純量ALU 34a-34d同時處理四組圖案數(shù)據(jù)。如圖7a-7b所示。與已知的圖形處理機(jī)需要十六指令周期比較,完整的執(zhí)行運(yùn)算總共只需十三個指令周期(事實上平均為十個周期)。每個純量ALU 34a-34d只用了九個指令周期運(yùn)算,并在一個指令的周期時間內(nèi)利用特殊功能單元36。因此總共只需要十個指令周期,便可得到一組圖形數(shù)據(jù)的結(jié)果,而已知處理機(jī)則須花十六個指令周期。此外,SIMD純量處理機(jī)42的效率隨著向量的尺寸增加。舉例來說,同樣是處理二元(2-element)向量數(shù)據(jù),本發(fā)明的處理機(jī)42只一共需八個指令周期,就可代替使用已知處理機(jī)的架構(gòu)所需的十六個周期。
權(quán)利要求
1.一種SIMD純量處理單元,用來處理至少兩個包括多個組合成分的向量,該SIMD純量處理單元包括一輸入數(shù)據(jù)緩沖器,將所述向量的所述組合成分重新組合,從一并行向量成分流排成一連續(xù)向量成分流;至少一個純量算術(shù)邏輯單元,從該輸入數(shù)據(jù)緩沖器接收所述向量的所述組合成分,該純量算術(shù)邏輯單元對所述向量的所述組合成分執(zhí)行一運(yùn)算,以測定一結(jié)果;以及一輸出轉(zhuǎn)換器,從該純量算術(shù)邏輯單元接收該結(jié)果,該輸出轉(zhuǎn)換器將該結(jié)果的所述組合成分從新組合,從該連續(xù)向量成分流排成該并行向量成分流。
2.如權(quán)利要求1所述的純量處理單元,還包括一特殊功能單元,與該純量算術(shù)邏輯單元互相通訊,該特殊功能單元用在對所述向量組合成分執(zhí)行運(yùn)算。
3.如權(quán)利要求2所述的純量處理單元,還包括一多工器,從該純量算術(shù)邏輯單元接收多個向量組合成分,并選擇一組合成分給該特殊功能單元處理。
4.如權(quán)利要求1所述的純量處理單元,其中包括i個純量算術(shù)邏輯單元,各向量有i個組合成分。
5.如權(quán)利要求4所述的純量處理單元,其中所述純量算術(shù)邏輯單元以一連續(xù)結(jié)構(gòu)連接,各純量算術(shù)邏輯單元從前一個純量算術(shù)邏輯單元被延遲一指令后執(zhí)行運(yùn)算。
6.如權(quán)利要求5所述的純量處理單元,其中各純量算術(shù)邏輯單元為隨后的一純量算術(shù)邏輯單元設(shè)定延遲地址、以及控制與共享數(shù)據(jù)訊號。
7.如權(quán)利要求1所述的純量處理單元,其中各純量算術(shù)邏輯單元包括至少一個指令延遲寄存器,延遲傳送指令至下一個以一連續(xù)結(jié)構(gòu)連接的純量算術(shù)邏輯單元。一數(shù)據(jù)路徑區(qū),對所述向量的所述組合成分執(zhí)行運(yùn)算;以及一控制與地址模塊,操作該數(shù)據(jù)路徑區(qū)。
8.如權(quán)利要求7所述的純量處理單元,其中各純量算術(shù)邏輯單元還包括至少一個數(shù)據(jù)延遲寄存器,延遲傳送數(shù)據(jù)至下一個連續(xù)連接的純量算術(shù)邏輯單元。
9.一種處理至少兩個包括多個組合成分的向量的方法,包括一SIMD純量處理單元,其中有一輸入數(shù)據(jù)緩沖器、至少一個純量算術(shù)邏輯單元、以及一輸出轉(zhuǎn)換器,該方法包括以下步驟(1)利用該輸入數(shù)據(jù)緩沖器,重新組合所述向量的所述組合成分,從一并行向量成分流排成一連續(xù)向量成分流;(2)利用一特定的純量算術(shù)邏輯單元,將從該輸入數(shù)據(jù)緩沖器接收的每一個組合成分,分別執(zhí)行一運(yùn)算,以產(chǎn)生一結(jié)果;以及(3)利用一輸出轉(zhuǎn)換器,將該結(jié)果的所述組合成分從新組合成該并行向量成分流。
10.如權(quán)利要求9所述的處理方法,其中該SIMD純量處理單元還包括一特殊功能單元,以及步驟(2)還包括利用該特殊功能單元對各組合成分執(zhí)行一運(yùn)算。
11.如權(quán)利要求10所述的處理方法,其中該SIMD純量處理單元還包括一多工器,從各純量算術(shù)邏輯單元接收多個向量組合成分,以及步驟(2)還包括利用該多工器選擇從該純量算術(shù)邏輯單元計算的該結(jié)果,給該特殊功能單元運(yùn)算。
12.如權(quán)利要求9所述的處理方法,其中所述純量算術(shù)邏輯單元以一連續(xù)地址、控制與數(shù)據(jù)訊號分布的方式連接,以及該方法還包括延遲一指令至隨后的一個算術(shù)邏輯單元。
13.如權(quán)利要求9所述的處理方法,其中所述純量算術(shù)邏輯單元彼此連續(xù)連接,以及該方法還包括延遲多個向量組合成分至下一個連續(xù)連接著的多個算術(shù)邏輯單元。
14.如權(quán)利要求9所述的處理方法,其中各純量算術(shù)邏輯單元包括一數(shù)據(jù)路徑區(qū),并且步驟(2)還包括使用該路徑數(shù)據(jù)區(qū)執(zhí)行該運(yùn)算。
15.如權(quán)利要求9所述的處理方法,其中各純量算術(shù)邏輯單元有一控制與地址模塊,并且步驟(2)還包括利用該控制與地址模塊控制該數(shù)據(jù)路徑區(qū)的該運(yùn)算。
16.一種SIMD純量處理單元,用來處理多個向量的多個組合成分,該SIMD純量處理單元包括一種轉(zhuǎn)換所述向量的所述組合成分的裝置,從一并行向量成分流重新排成一連續(xù)向量成分流;一種對以該連續(xù)向量成分流排列的所述向量的所述組合成分執(zhí)行運(yùn)算的裝置,并產(chǎn)生多個向量組合成分的一結(jié)果;以及一種將該結(jié)果從該連續(xù)向量成分流轉(zhuǎn)換為一并行向量成分流的裝置。
17.如權(quán)利要求16所述的SIMD純量處理單元,其中轉(zhuǎn)換所述向量的所述組合成分,從一并行向量成分流重新排成一連續(xù)向量成分流的裝置為一輸入數(shù)據(jù)緩沖器;對所述向量的所述組合成分執(zhí)行運(yùn)算的裝置為至少一個純量算術(shù)邏輯單元;以及將多個組合成分的該結(jié)果從該連續(xù)向量成分流轉(zhuǎn)換為該并行向量成分流的裝置為一正交轉(zhuǎn)換器。
18.一種給一純量處理單元的算術(shù)邏輯單元,用來處理多個向量成分,該算術(shù)邏輯單元可與另一算術(shù)邏輯單元連接成連續(xù)結(jié)構(gòu),該算術(shù)邏輯單元包括一數(shù)據(jù)路徑區(qū),執(zhí)行所述向量成分的運(yùn)算;以及一數(shù)據(jù)延遲寄存器區(qū),延遲所述向量成分傳至下一個以一連續(xù)結(jié)構(gòu)連接的算術(shù)邏輯單元。
19.如權(quán)利要求18所述的算術(shù)邏輯單元,還包括一地址與控制模塊,用在該數(shù)據(jù)路徑區(qū)的控制。
20.如權(quán)利要求19所述的算術(shù)邏輯單元,還包括一地址與控制延遲寄存器,用來延遲地址與控制訊號的計時。
21.如權(quán)利要求20所述的算術(shù)邏輯單元,還包括一共享數(shù)據(jù)延遲寄存器,用來延遲遞送共享數(shù)據(jù)至接下來算術(shù)邏輯單元的該數(shù)據(jù)路徑區(qū)。
22.如權(quán)利要求21所述的算術(shù)邏輯單元,其中該延遲寄存區(qū)包括一延遲寄存器,用在通過該純量算術(shù)邏輯單元的向量成分的輸入或輸出。
全文摘要
本發(fā)明提供一種純量處理單元,用來處理至少兩個含有多個組合成分的向量。純量處理單元包括一輸入數(shù)據(jù)緩沖器,將向量的組合成分重新組合,從并行向量成分流排列成連續(xù)向量成分流。純量處理單元還包括至少一個純量算術(shù)邏輯單元,從輸入數(shù)據(jù)緩沖器接收向量的組合成分。純量算術(shù)邏輯單元對向量的各組合單元執(zhí)行函數(shù)運(yùn)算,并因此判斷一運(yùn)算結(jié)果。純量處理單元還包括從算術(shù)邏輯單元接收運(yùn)算結(jié)果的一輸出轉(zhuǎn)換器。輸出轉(zhuǎn)換器重新將組合成分排列回并行向量成分流。
文檔編號G06F9/30GK1519704SQ200410002419
公開日2004年8月11日 申請日期2004年1月29日 優(yōu)先權(quán)日2003年1月29日
發(fā)明者鮑里斯·普羅科彭科, 鮑里斯 普羅科彭科, 帕爾塔舍夫, 蒂莫·帕爾塔舍夫, 格拉丁, 德里克·格拉丁 申請人:威盛電子股份有限公司