專利名稱:共享一組合寄存器文件的操作數(shù)存取端口的裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明關(guān)于計算機組織結(jié)構(gòu)(computer organization),特別是關(guān)于一種共享一組合寄存器文件(banked register file)的操作數(shù)存取端口(operand accessport)的裝置。
背景技術(shù):
一個典型的多端口寄存器文件包括多個寄存器,每一寄存器具有多個讀端口(read port)與至少一個寫端口(write port)。指令解碼器(instruction decoder)與此寄存器文件耦合,并且將多個指令封包(instruction packet)中的指令解碼。通常,每一指令寄存器(instruction register)有兩個讀端口,以允許同時獲取兩個來源操作數(shù)(source operand)。在一個寄存器文件里的每一個寄存器組合成一個相對應(yīng)的功能單元(functional unit,F(xiàn)U)。一個特長指令字(very longinstruction word,VLIW)處理器或一個超純尺寸結(jié)構(gòu)(superscalar structure)通常具有此種組織結(jié)構(gòu)。
包含在傳統(tǒng)特長指令字處理器里的寄存器文件通常是用來提升執(zhí)行效率(execution efficiency)。在傳統(tǒng)特長指令字處理器里,一個支持同時執(zhí)行兩個指令的寄存器文件具有四個讀端口與兩個寫端口,因為大部分的指令有兩個讀操作數(shù)及一個寫操作數(shù)。然而,傳統(tǒng)的多端口寄存器文件可能消耗大量電源和晶片體的面積(die area)。所以當(dāng)許多產(chǎn)品都使用此設(shè)計方式時,強調(diào)可攜帶式裝置的低電源消耗的重點為需要創(chuàng)新的方式來減少存取寄存器文件的電源耗損。減少寄存器文件的電源消耗的方法之一為減少寄存器文件的讀端口及寫端口的數(shù)量。傳統(tǒng)的方法是將寄存器文件分割成一奇數(shù)組庫(oddbank)及一偶數(shù)組庫(even bank)的兩個寄存器組庫。在每一組庫里的寄存器可建構(gòu)為具有兩個讀端口和一個寫端口。在任一時間點,像這樣的一個寄存器庫只能夠支持一個指令而非兩個指令。不過,此兩個寄存器組庫可以同時支持兩個指令,只要是此兩個指令存取不同的寄存器組庫。為了達到在一靜態(tài)排序(static-scheduled)處理器(也就是特長指令字處理器)中的兩個獨立的指令存取不同寄存器文件組庫的要求,利用一編譯器(complier)或一智能型組譯器(smart assembler)來執(zhí)行此要求,將兩個指令放在相同的平行執(zhí)行指令封包(parallel execution instruction packet)里,去存取不同的寄存器組庫。這種技術(shù)一般稱為乒乓(Ping-Pong)寄存器文件。
圖1為在計算機組織結(jié)構(gòu)中,一種傳統(tǒng)乒乓寄存器文件的一方塊示意圖。此乒乓寄存器文件利用6個2∶1多路復(fù)用器(multiplexer)來實現(xiàn),這些多路復(fù)用器由一乒乓控制位來控制。如圖1所示,功能單元1010和1011可以存取由寄存器文件1020和1021構(gòu)成的一乒乓寄存器文件102。一乒乓位103控制多個多路復(fù)用器的運作,以確保正確地執(zhí)行同時存取。利用此設(shè)計,例如以下兩個分別由功能單元1010和1011所執(zhí)行的指令I(lǐng)1和I2能夠在相同指令封包中同時存取乒乓寄存器文件。在范例中,指令I(lǐng)1安排為使用偶數(shù)寄存器組庫,而指令I(lǐng)2安排為使用奇數(shù)寄存器組庫。
(I1)Add r0,r2->|(I2)Add r1,r4->r7。
雖然這種技術(shù)可以降低此寄存器文件的復(fù)雜度,然而可能降低程序的執(zhí)行效率,大部分的時間是由于受到上述提及的限制。例如,如果被指令I(lǐng)2消耗的數(shù)據(jù)都駐留在此偶數(shù)寄存器組庫里,則指令I(lǐng)1和I2無法于相同周期(cycle)中平行執(zhí)行,并且指令I(lǐng)2必須至下一個周期去執(zhí)行。如此可能會導(dǎo)致浪費周期,因為可能沒有夠多的指令可被安排在相同的周期中。
發(fā)明內(nèi)容
本發(fā)明克服上述的乒乓寄存器文件的缺點。其主要目的為提供一種共享一組合寄存器文件的操作數(shù)存取端口的裝置。此裝置包含一分割的文件寄存器、一第一群功能單元、一第二群功能單元、以及一存取控制電路,每個功能單元具有多個輸入端口及至少一個輸出端口;分割的文件寄存器被分割成多個寄存器組庫,每個所述寄存器組庫具有多個讀端口及至少一個寫端口。此存取控制電路還包括三個控制位和多個選擇組件(selection element),來控制此功能單元存取寄存器組庫,其中由該選擇器選擇每個所述寄存器組庫的所述多個讀端口至所述多個功能單元的相對應(yīng)功能單元的該輸入端口,且該選擇器選擇所述多個功能單元的該輸出端口至所述多個寄存器組庫的該寫端口,并且該控制位控制該選擇器的共享該組合寄存器文件的操作數(shù)存取端口。
在所述的裝置中,該裝置應(yīng)用在一個指令中具有多個讀操作數(shù)及至少一個寫操作數(shù)的指令。
在所述的裝置中,該指令最多有兩個讀操作數(shù)和一個寫操作數(shù)。
在所述的裝置中,該分割的文件寄存器為一乒乓文件寄存器。
在所述的裝置中,所述多個選擇器為多個多路復(fù)用器。
在所述的裝置中,該存取控制電路還包含多個反相器,以及每個反相器具有一個各自的控制位作為它的輸入,并且該反相器輸出該控制位至一相連接的選擇器,以共享該組合寄存器文件的操作數(shù)存取端口。
在所述的裝置中,該存取控制電路包含六個2∶1多路復(fù)用器、三個控制位和三個相對應(yīng)的反相器,以及電線。
在所述的裝置中,該存取控制電路包含三個控制位,該三個控制位中的一個位控制連于具有相對應(yīng)功能單元的寫端口的共享,該三個控制位的另外兩個位控制具有相對應(yīng)功能單元的讀端口的共享。
在所述的裝置中,所述另外兩個控制位的一個位控制該多路復(fù)用器進行至每個所述寄存器文件的一個單獨的讀端口的多路復(fù)用,每個所述功能單元的相對應(yīng)輸入端口接收來自不同寄存器組庫的數(shù)值。
在所述的裝置中,該三個控制位的該單獨的一個位控制該多路復(fù)用器進行至每個所述功能單元的該輸出端口的多路復(fù)用,每個寄存器組庫的該寫端口接收來自不同功能單元的數(shù)值。
在所述的裝置中,該裝置應(yīng)用在一特長指令字處理器。
在所述的裝置中,所述控制位允許該特長指令字處理器以平行方式執(zhí)行指令去存取所述不同的寄存器組庫。
在所述的裝置中,該裝置允許該特長指令字處理器在相同周期中排序不同的該寄存器組庫里的相對應(yīng)讀和寫操作數(shù)的指令以改善程序性能。
本發(fā)明優(yōu)點之一為,允許同時存取一組庫的寄存器文件并減少電源消耗。
本發(fā)明的另一優(yōu)點為,改善執(zhí)行效率,并且保留電路面積和保留分割的乒乓寄存器文件技術(shù)的低電源消耗的好處。
本發(fā)明的主要特征是利用傳統(tǒng)的乒乓文件寄存器來緩解編譯器和智能型組譯器所遇到的前述的限制。被緩解后的限制允許兩個指令同時存取此分割的寄存器文件組庫,只要此兩個指令的每一相對應(yīng)的操作數(shù)是在不同的寄存器組庫里。通過此緩解后的限制,編譯器與智能型組譯器有更多選擇來排序程序中的指令,因而實質(zhì)上提升程序的效率。例如,當(dāng)一平行排序無法執(zhí)行于傳統(tǒng)乒乓寄存器文件時,以下兩個指令現(xiàn)在則可被排序于本發(fā)明的乒乓寄存器文件里的一個特長指令平行執(zhí)行封包。
(I1)Add r1,r2->|(I2)Add r0,r3->r7。
值得注意的是,指令I(lǐng)1里的操作數(shù)或指令I(lǐng)2的操作數(shù)可以是來自不同組庫,只要是此相對應(yīng)的操作數(shù)是在不同寄存器組庫里。此大幅增加編譯器或組譯器的指令排序的彈性空間。
配合下列附圖、實施例的詳細說明及權(quán)利要求書,將上述及本發(fā)明的其它目的與優(yōu)點詳述于后。
圖1為在計算機組織結(jié)構(gòu)中,一種傳統(tǒng)乒乓寄存器文件的一方塊示意圖。
圖2為根據(jù)本發(fā)明的一實施例的一方塊示意圖。
圖3為4×4 16-位Y=XC的一概要圖。
圖4為圖3中的系數(shù)矩陣C的一內(nèi)存布局圖。
圖5為圖3中的矩陣X的一內(nèi)存布局圖。
圖6為圖3中的矩陣Y的一內(nèi)存布局圖。
圖7為一傳統(tǒng)乒乓寄存器文件使用圖3中矩陣乘法的組合碼列表。
圖8為本發(fā)明使用圖3中矩陣乘法的組合碼列表。
其中,附圖標(biāo)記說明如下1010功能單元1011功能單元1020寄存器組庫 1021寄存器組庫103多路復(fù)用器
202分割的寄存器文件2020寄存器組庫2021寄存器組庫2010功能單元 2011功能單元203存取控制電路2031多路復(fù)用器2032多路復(fù)用器2033多路復(fù)用器具體實施方式
以下說明中,不失一般性,本發(fā)明假設(shè)一個指令最多有兩個讀操作數(shù)與一個寫操作數(shù),然而本發(fā)明可被應(yīng)用在具有更多個讀和寫的操作數(shù)的指令。
圖2為根據(jù)本發(fā)明的一實施例的一方塊示意圖。在此實施例中,此裝置包含一第一功能單元2010、一第二功能單元2011、一分割的寄存器文件202、以及一存取控制電路203。不失一般性,此分割的寄存器文件202被分割成兩個寄存器庫2020和2021,每個寄存器組庫具有兩個讀端口和一個寫端口。依此,控制存取電路203還包括多個選擇器(selector),例如多路復(fù)用器,以及三控制位2031-2033。一控制位控制將與此相對應(yīng)功能單元相關(guān)的寫端口的共享。另外兩個控制位控制將與此相對應(yīng)功能單元相關(guān)的兩個讀端口的共享。通過此存取控制電路203,此兩個指令能夠同時存取此兩個寄存器組庫2020和2021,只要此兩個指令的每個相對應(yīng)的操作數(shù)使用不同的寄存器組庫。從圖2可知,此第一和第二功能單元2010-2011通過此存取控制電路203來存取此分割的寄存器文件202。
利用一個簡單示例做說明,此存取控制電路203包括六個2∶1多路復(fù)用器和三個乒乓控制位2031-2033。每個2∶1多路復(fù)用器具有兩個輸入端和一個輸出端,并且是由此控制位2031-2033來決定數(shù)據(jù)存取。寄存器組庫2020-2021的相對應(yīng)讀端口經(jīng)由多路復(fù)用器作多路復(fù)用,并且作為至功能單元2010的讀操作數(shù)2011。類似地,來自功能單元2010-2011相對應(yīng)的寫操作數(shù)經(jīng)由多路復(fù)用器作多路復(fù)用至寄存器組庫2020-2021的寫端口??刂莆?031-2033分別控制每個指令中兩個讀操作數(shù)和一個寫操作數(shù)的相對應(yīng)的多路復(fù)用器。由此控制位2031-2033,指令對(instruction pair)的相對應(yīng)第一讀操作數(shù)、相對應(yīng)第二讀操作數(shù)及相對應(yīng)寫操作數(shù)能夠單獨的做多路復(fù)用。因此,以平行方式執(zhí)行的指令對可以同時存取寄存器文件,只要相對應(yīng)的操作數(shù)是在不同的寄存器組庫里。
在計算機組織結(jié)構(gòu)中,本發(fā)明與傳統(tǒng)乒乓寄存器文件的兩者的不同處在于存取控制電路。在圖2里,此存取控制電路包括三個反相器(inverter),其中每個反相器具有一個各自的控制位作為它的輸入,并且此反相器輸出此控制位至一相連接的選擇器,為了共享組合寄存器文件的操作數(shù)存取端口。比較圖2與圖1,本發(fā)明只增加兩個額外的控制位和相對應(yīng)的反相器以及一些電線(wire)。相較于傳統(tǒng)設(shè)計,本發(fā)明的額外硬件成本是相當(dāng)微小,因此,增加的電路和電源的消耗也是相當(dāng)?shù)奈⑿ ?br>
下列示例說明本發(fā)明的優(yōu)點。此范例使用組合碼(assembly code)將4×416-位矩陣乘法(matrix multiplication)Y=CX的程序,實現(xiàn)在具有乒乓寄存器文件架構(gòu)下的一特長指令字處理器系統(tǒng)。圖3為4×4 16-位矩陣乘法Y=XC的一個概要圖,其中C為一常數(shù)系數(shù)(constant coefficient)矩陣。
如圖4所示,此組合碼是在下列假設(shè)下撰寫的。此16個常數(shù)是以列排列方式(row-based fashion)布置于內(nèi)存內(nèi)。甚且假設(shè)所有的16個常數(shù)已經(jīng)下載于寄存器里,以準(zhǔn)備給連續(xù)的4×4矩陣乘法來作運算。兩個連續(xù)16-位常數(shù)儲存在一個32-位的寄存器里。
圖5和圖6分別為矩陣X和Y的內(nèi)存布局圖。假設(shè)矩陣X是以行的方式(column-based fashion)布置于內(nèi)存中,如圖5所示,其中所有的矩陣X里都是以組合碼加載在寄存器中。相似于常數(shù)系數(shù),在內(nèi)存中的兩個連續(xù)矩陣X 16-位數(shù)據(jù)會被加載至一32-位寄存器里,做計算用。假設(shè)矩陣Y是以列的方式布置于內(nèi)存中,如圖6所示,每一矩陣Y的元素為32-位。在存回內(nèi)存之前,此組合碼不會將此32-位元素轉(zhuǎn)換為16-位元素。
圖7與圖8分別為一特長指令字處理器使用本發(fā)明和一傳統(tǒng)乒乓寄存器文件的組合碼列表。對于此兩個組合碼列表,在每個周期,此五個功能單元可供執(zhí)行指令用。矩陣Y的16個元素的計算是平均分配到兩個特長指令字?jǐn)?shù)據(jù)路徑簇(data path cluster)。簇0負責(zé)元素y<0..3>0在第一迭代(iteration)的碼和元素y<0..3>2在第二迭代的碼。簇1負責(zé)元素y<0..3>1和y<0..3>3分別在兩個迭代的碼。以這種方式來安排產(chǎn)生這些元素的順序是為了減少從內(nèi)存存取矩陣X數(shù)據(jù)的數(shù)量。這個碼使用點積(dot product)dotp2(具有兩周期的延遲)指令來結(jié)合三個運算(兩個16-位乘法和一個32-位加法),以增加每個周期的平行運算的數(shù)量。此點積指令乘以兩個來源操作數(shù)的16-位低半部對(low-half pair)與16-位高半部對(high-half pair),然后相加運算結(jié)果,以形成一32-位數(shù)據(jù)。此碼的線(line)1和線2建立地址(address),以下載至內(nèi)存和儲存循環(huán)控制(loop control)的條件。線3至16構(gòu)成主要的回路本體。在線3中,使用兩個特殊的雙加載字(double load word)dlw(具有三個周期的延遲)指令,來下載總共128-位的數(shù)據(jù)至四個寄存器里。
如圖7所示,使用傳統(tǒng)乒乓寄存器文件的組合碼只能支持一個指令的讀與寫操作數(shù)于同組庫存取,且需要18個指令周期,而使用本發(fā)明的組合碼需要16個指令周期完成乘法。相較于傳統(tǒng)設(shè)計,對于一個簡單的范例,本發(fā)明就有12.5%(2/16)的效率改善。
與傳統(tǒng)技術(shù)相較,本發(fā)明將乒乓寄存器文件擴展,以極小的額外硬件成本和合適于編譯器的條件緩解,來適應(yīng)更多指令排序的靈活度。以這個額外增加的靈活度,編譯器能夠產(chǎn)生更佳的程序代碼,以彌補被傳統(tǒng)乒乓寄存器文件技術(shù)所限制的程序效率的衰減。
以上所述,僅為發(fā)明的最佳實施例而已,但不能依此限定本發(fā)明實施的范圍。即對本發(fā)明申請專利范圍所作的修改與修飾,皆應(yīng)仍屬本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種共享一組合寄存器文件額操作數(shù)存取端口的裝置,該裝置包含多個功能單元,每個功能單元具有多個輸入端口及至少一個輸出端口;一分割的文件寄存器,被分割成多個寄存器組庫,每個所述寄存器組庫具有多個讀端口及至少一個寫端口;以及一存取控制電路,還包含多個選擇器及多個控制位,其中,由該選擇器選擇每個所述寄存器組庫的所述多個讀端口至所述多個功能單元的相對應(yīng)功能單元的該輸入端口,且該選擇器選擇所述多個功能單元的該輸出端口至所述多個寄存器組庫的該寫端口,并且該控制位控制該選擇器的共享該組合寄存器文件的操作數(shù)存取端口。
2.如權(quán)利要求1所述的裝置,其中該裝置應(yīng)用在一個指令中具有多個讀操作數(shù)及至少一個寫操作數(shù)的指令。
3.如權(quán)利要求1所述的裝置,其中該指令最多有兩個讀操作數(shù)和一個寫操作數(shù)。
4.如權(quán)利要求1所述的裝置,其中該分割的文件寄存器為一乒乓文件寄存器。
5.如權(quán)利要求1所述的裝置,其中所述多個選擇器為多個多路復(fù)用器。
6.如權(quán)利要求1所述的裝置,其中該存取控制電路還包含多個反相器,以及每個反相器具有一個各自的控制位作為它的輸入,并且該反相器輸出該控制位至一相連接的選擇器,以共享該組合寄存器文件的操作數(shù)存取端口。
7.如權(quán)利要求3所述的裝置,其中該存取控制電路包含六個2∶1多路復(fù)用器、三個控制位和三個相對應(yīng)的反相器,以及電線。
8.如權(quán)利要求3所述的裝置,其中該存取控制電路包含三個控制位,該三個控制位中的一個位控制連于具有相對應(yīng)功能單元的寫端口的共享,該三個控制位的另外兩個位控制具有相對應(yīng)功能單元的讀端口的共享。
9.如權(quán)利要求8所述的裝置,其中所述另外兩個控制位的一個位控制該多路復(fù)用器進行至每個所述寄存器文件的一個單獨的讀端口的多路復(fù)用,每個所述功能單元的相對應(yīng)輸入端口接收來自不同寄存器組庫的數(shù)值。
10.如權(quán)利要求8所述的裝置,其中該三個控制位的該單獨的一個位控制該多路復(fù)用器進行至每個所述功能單元的該輸出端口的多路復(fù)用,每個寄存器組庫的該寫端口接收來自不同該功能單元的數(shù)值。
11.如權(quán)利要求8所述的裝置,其中該裝置應(yīng)用在一特長指令字處理器。
12.如權(quán)利要求11所述的裝置,其中所述控制位允許該特長指令字處理器以平行方式執(zhí)行指令去存取所述不同的寄存器組庫。
13.如權(quán)利要求11所述的裝置,其中該裝置允許該特長指令字處理器在相同周期中排序不同的該寄存器組庫里的相對應(yīng)讀和寫操作數(shù)的指令。
全文摘要
一種共享一組合寄存器文件的操作數(shù)存取端口的裝置,包含一分割的寄存器文件、一第一群功能單元、一第二群功能單元,及一存取控制電路。此存取控制電路包括三個控制位,藉由對操作數(shù)的功能單元來控制寄存器文件的存取。本發(fā)明使用常見的傳統(tǒng)的乒乓文件寄存器來緩解編譯器與智能型組譯器所遇到的限制。此被緩解后的限制允許由兩個指令同時存取的兩組被分割的寄存器文件,只要此兩指令的每個對應(yīng)的操作數(shù)位于不同的寄存器組庫里。編譯器與智能型組譯器通過此緩解后的限制,有更多的選擇來排序程序中的指令,因而實質(zhì)上提升了程序的效率。
文檔編號G06F9/30GK101051265SQ200610107518
公開日2007年10月10日 申請日期2006年7月20日 優(yōu)先權(quán)日2006年4月6日
發(fā)明者廖宜道, 彭權(quán)成, 黃柏涵, 張傳華 申請人:財團法人工業(yè)技術(shù)研究院