專利名稱:寄存器文檔電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種寄存器文檔電路,可在諸如處理器或處理器內(nèi)核中應(yīng)用。本發(fā)明還涉及可在諸如處理器或處理器內(nèi)核的管道環(huán)中應(yīng)用的一種寄存器重命名法。
背景技術(shù):
在高性能計(jì)算過程中,通常要求目標(biāo)機(jī)(如微處理器)高速執(zhí)行指令,軟件管道環(huán)中循環(huán)寄存器重命名的需求隨之增大。指令執(zhí)行時(shí)間一般由應(yīng)用程序中的環(huán)結(jié)構(gòu)決定。為高速執(zhí)行指令,處理器可以劃分多個(gè)單獨(dú)的執(zhí)行單元,其中每個(gè)單元可在其它執(zhí)行單元執(zhí)行指令時(shí)并行地執(zhí)行一條或多條指令。
通過這些指令執(zhí)行單元,可設(shè)定由多個(gè)單個(gè)的等級(jí)構(gòu)成的所謂的軟件管道。每個(gè)軟件管道等級(jí)與特定指令執(zhí)行單元沒有固定的物理對(duì)應(yīng)關(guān)系。當(dāng)應(yīng)用程序中的環(huán)結(jié)構(gòu)被編譯時(shí),構(gòu)成環(huán)的某個(gè)迭代的機(jī)器指令被列入執(zhí)行進(jìn)程表,以便由不同的指令執(zhí)行單元根據(jù)軟件管道進(jìn)程表來(lái)執(zhí)行。該進(jìn)程表分成連續(xù)的等級(jí),采用一種允許不同的指令執(zhí)行單元以重疊方式進(jìn)行多重迭代的方法,將機(jī)器指令列入進(jìn)程表,其中在各連續(xù)迭代的初始點(diǎn)之間有選定環(huán)初始時(shí)間間隔。當(dāng)?shù)鷌第一級(jí)結(jié)束進(jìn)入第二級(jí)時(shí),下一個(gè)迭代i+1第一級(jí)開始執(zhí)行。這樣,迭代i+1的第一級(jí)指令與迭代i的第二級(jí)指令同時(shí)執(zhí)行。
在這樣的軟件管道環(huán)中,每一時(shí)刻通常存在某一個(gè)環(huán)的部分完成態(tài)下的多個(gè)迭代。因而,該環(huán)內(nèi)每個(gè)計(jì)算值可能有多個(gè)活拷貝。為區(qū)分這些值并相對(duì)于當(dāng)前迭代對(duì)其進(jìn)行識(shí)別,寄存器內(nèi)存放的每個(gè)值的名稱需要在環(huán)執(zhí)行期間的各個(gè)確定時(shí)刻進(jìn)行變更。這些更名點(diǎn)對(duì)編譯器已知,編譯器還確定每條指令內(nèi)所需的寄存器名,以便根據(jù)計(jì)算每個(gè)值的迭代訪問該值。
就每條匯編碼指令內(nèi)的寄存器標(biāo)識(shí)符而言,寄存器內(nèi)存放的值的名稱對(duì)程序或編譯器已知。靜態(tài)寄存器的重命名是為了確定一種方案,以使得這些寄存器的標(biāo)識(shí)符可以在程序運(yùn)行期間,基于程序或編譯器可預(yù)知的某種轉(zhuǎn)換方案轉(zhuǎn)換為實(shí)際的寄存器編號(hào)。
例如,若給迭代1所用寄存器r1賦值x,一種典型的重命名方案是使該值也可用于迭代2所用寄存器r2和迭代3所用寄存器r3,依此類推。編譯器或程序負(fù)責(zé)采用一種能保證環(huán)正常運(yùn)行的方式給每個(gè)值分配寄存器標(biāo)識(shí)符。
在軟件管道環(huán)中,通常會(huì)有需要在管道中不同指令間相互聯(lián)系的環(huán)變量值,即需要在環(huán)的每個(gè)不同迭代中重新計(jì)算的表達(dá)式。為處理這樣的環(huán)變量值,可以將它們存放在所謂的循環(huán)寄存器文檔中。在這種情況下,給每個(gè)環(huán)變量值在循環(huán)寄存器文檔內(nèi)分配一個(gè)邏輯寄存器編號(hào),此邏輯寄存器編號(hào)在不同的迭代中保持不變。在循環(huán)寄存器文檔內(nèi),每個(gè)邏輯寄存器編號(hào)被映象到該寄存器文檔內(nèi)的一個(gè)物理寄存器上,每當(dāng)開始進(jìn)行一個(gè)新迭代,即每當(dāng)管道邊界關(guān)閉的時(shí)候,這種映象就循環(huán)一次。這樣,不同迭代中的相關(guān)指令都可引用同一個(gè)邏輯寄存器編號(hào),使編譯過的指令簡(jiǎn)單,同時(shí)避免一個(gè)迭代得出的值被隨后執(zhí)行的其它迭代指令重寫。
若采用這種寄存器重命名方案,那么在處理器執(zhí)行指令前,對(duì)于軟件管道環(huán)中的每一次寄存器訪問,首先必需進(jìn)行寄存器映象處理將寄存器標(biāo)識(shí)符轉(zhuǎn)換成實(shí)際的寄存器編號(hào)。該映象過程在程序運(yùn)行期間完成,從而在對(duì)速度,要求很高的活動(dòng)中,對(duì)處理器提出了額外的時(shí)間要求。因此希望映象過程所花的時(shí)間盡可能短。
在我們共同提交待批的英國(guó)專利申請(qǐng)No.0004582.3中,介紹了能夠進(jìn)行這種映象的映象電路。該映象電路接收邏輯寄存器編號(hào)作為輸入值,在預(yù)先選定的允許值范圍內(nèi)產(chǎn)生輸出值,來(lái)表示實(shí)際的物理寄存器編號(hào)。該電路同時(shí)產(chǎn)生兩個(gè)備選輸出值,第一個(gè)備選輸出值與收到的輸入值相差第一偏量值,第二個(gè)備選輸出值與收到的輸入值相差第二偏量值。對(duì)于預(yù)先選定的允許輸入值范圍內(nèi)的任一輸入值,第一個(gè)與第二個(gè)備選輸出值中有一個(gè)位于預(yù)先選定的輸出值范圍內(nèi),而另一個(gè)則超出了該范圍。該電路確定哪一個(gè)備選輸出值位于預(yù)先選定的輸出值范圍內(nèi),并選定其作為最后的輸出值。位于范圍內(nèi)的備選輸出值的確定也與第一及第二備選輸出值本身的產(chǎn)生同時(shí)進(jìn)行。盡管該映象電路在大多數(shù)實(shí)際應(yīng)用中運(yùn)行得相當(dāng)快,人們?nèi)匀幌MO(shè)計(jì)出映象進(jìn)行得更快的寄存器文檔電路。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,寄存器文檔電路包括多個(gè)物理寄存器;分別對(duì)應(yīng)于物理寄存器的多個(gè)標(biāo)記存儲(chǔ)部分,其中每一個(gè)部分存放表示一個(gè)邏輯寄存器標(biāo)識(shí)符(ID)的標(biāo)記,該標(biāo)識(shí)符被分配給相對(duì)應(yīng)的物理寄存器;寄存器選擇裝置,用于接收邏輯寄存器ID并選擇所述標(biāo)記與收到的邏輯寄存器ID相匹配的那一個(gè)物理寄存器;以及標(biāo)記變更裝置,可通過將至少一個(gè)標(biāo)記存儲(chǔ)部分存放的標(biāo)記轉(zhuǎn)移到另一個(gè)所述標(biāo)記存儲(chǔ)部分,變更所存放的標(biāo)記,從而改變所述物理寄存器之一與至少一個(gè)邏輯寄存器ID之間的映象關(guān)系。
根據(jù)本發(fā)明的第二方面,寄存器文檔電路包括多個(gè)物理寄存器;分別對(duì)應(yīng)于物理寄存器的多個(gè)標(biāo)記存儲(chǔ)部分,其中每一個(gè)部分存放表示一個(gè)邏輯寄存器ID的標(biāo)記,該ID被分配給相對(duì)應(yīng)的物理寄存器;寄存器選擇裝置,用于接收邏輯寄存器ID并選擇所述標(biāo)記與收到的邏輯寄存器ID相匹配的那一個(gè)物理寄存器;標(biāo)記變更裝置,用于變更所存放的標(biāo)記從而改變所述物理寄存器之一與至少一個(gè)邏輯寄存器ID之間的映象關(guān)系;以及物理寄存器指定裝置,用于從所述多個(gè)寄存器中指定至少一個(gè)物理寄存器作為靜態(tài)命名的物理寄存器,其所述標(biāo)記不能通過前述標(biāo)記變更裝置進(jìn)行改變。
根據(jù)本發(fā)明的第三方面,寄存器文檔電路包括多個(gè)物理寄存器;分別對(duì)應(yīng)于物理寄存器的多個(gè)標(biāo)記管理單元,其中每個(gè)標(biāo)記管理單元包含一個(gè)標(biāo)記存儲(chǔ)部分以存放表示一個(gè)邏輯寄存器ID的標(biāo)記,該ID被分配給該單元相對(duì)應(yīng)的物理寄存器,每個(gè)標(biāo)記管理單元可以改變存放在其自身單元所述標(biāo)記存儲(chǔ)部分的標(biāo)記;寄存器選擇裝置,用于接收邏輯寄存器ID并選擇所述標(biāo)記與收到的邏輯寄存器ID相匹配的那一個(gè)物理寄存器;兩個(gè)或更多的所述標(biāo)記管理單元,它們可以同時(shí)引起所述物理寄存器之一與至少一個(gè)邏輯寄存器ID之間映象關(guān)系的改變。
根據(jù)本發(fā)明的第四方面,適用于劃分有用于執(zhí)行指令的一系列管道等級(jí)的處理器的寄存器文檔電路,包括多個(gè)物理寄存器;第一組多個(gè)標(biāo)記存儲(chǔ)部分,這些部分分別對(duì)應(yīng)于物理寄存器,設(shè)置在管道等級(jí)系列中的第一級(jí),每個(gè)部分存放表示一個(gè)邏輯寄存器ID的工作標(biāo)記,該ID被分配給相對(duì)應(yīng)的物理寄存器;第二組多個(gè)標(biāo)記存儲(chǔ)部分,這些部分分別對(duì)應(yīng)于物理寄存器,存放分別與工作標(biāo)記相對(duì)應(yīng)的各個(gè)完成(committed)標(biāo)記;完成標(biāo)記更新裝置,該裝置與所述第二組標(biāo)記存儲(chǔ)部分相連,用于隨著管道等級(jí)執(zhí)行指令時(shí)更新完成標(biāo)記;以及工作標(biāo)記重載裝置,該裝置與所述第一及第二組標(biāo)記存儲(chǔ)部分相連,當(dāng)出現(xiàn)異常前的最后一條有效指令到達(dá)最后一個(gè)管道等級(jí)時(shí),該裝置可用相應(yīng)的完成標(biāo)記對(duì)每個(gè)工作標(biāo)記進(jìn)行重載。
根據(jù)本發(fā)明的第五方面,提供的處理器中帶有根據(jù)本發(fā)明前述第一至第五方面的寄存器文檔電路。
根據(jù)本發(fā)明的第六方面,提供了適用于帶有多個(gè)物理寄存器的寄存器文檔電路的一種寄存器重命名法,包括將標(biāo)記存放在多個(gè)標(biāo)記存儲(chǔ)部分,這些部分分別對(duì)應(yīng)于物理寄存器,存放的每個(gè)標(biāo)記表示一個(gè)邏輯寄存器ID,該ID被分配給相對(duì)應(yīng)的物理寄存器;通過將至少一個(gè)標(biāo)記存儲(chǔ)部分存放的標(biāo)記轉(zhuǎn)移到另一個(gè)所述標(biāo)記存儲(chǔ)部分,變更所存放的標(biāo)記,從而改變所述物理寄存器之一與至少一個(gè)邏輯寄存器ID之間的映象關(guān)系。
下面參照附圖舉例說(shuō)明,其中附圖1所示為實(shí)施本發(fā)明的帶有寄存器文檔電路的處理器的結(jié)構(gòu);附圖2所示為實(shí)施本發(fā)明的一個(gè)寄存器文檔實(shí)例;附圖3所示為實(shí)施本發(fā)明的寄存器文檔電路的框圖;附圖4所示為根據(jù)本發(fā)明第一實(shí)施例的寄存器文檔電路組成部分的電路圖;
附圖5更詳細(xì)地示出了附圖4所示寄存器文檔電路的結(jié)構(gòu);附圖6所示為用于本發(fā)明第一實(shí)施例的標(biāo)記管理單元結(jié)構(gòu);附圖7所示為說(shuō)明第一實(shí)施例工作過程的流程圖;附圖8-12所示為說(shuō)明第一實(shí)施例工作過程的示意圖;附圖13所示為用于提供第一實(shí)施例控制信號(hào)的控制信號(hào)產(chǎn)生電路的結(jié)構(gòu);附圖14所示為說(shuō)明第一實(shí)施例所用控制信號(hào)的示意圖;附圖15所示為說(shuō)明附圖6標(biāo)記管理單元工作過程的流程圖;附圖16所示為用于本發(fā)明第二實(shí)施例的標(biāo)記管理單元的結(jié)構(gòu);附圖17所示為說(shuō)明第二實(shí)施例所用控制信號(hào)的示意圖;附圖18(A)和18(B)所示為說(shuō)明附圖16標(biāo)記管理單元工作過程的流程圖;附圖19所示為根據(jù)本發(fā)明第三實(shí)施例的寄存器文檔電路結(jié)構(gòu)的電路圖;以及附圖20更詳細(xì)地示出了附圖19所示電路的結(jié)構(gòu)。
具體實(shí)施例方式
附圖1所示為實(shí)施本發(fā)明的帶有寄存器文檔電路的處理器的結(jié)構(gòu)。在此例中,處理器為特長(zhǎng)指令字(VLIW)處理器,帶有硬件支持軟件管道和循環(huán)寄存器重命名操作。處理器1中包括指令發(fā)布單元10,進(jìn)度表存儲(chǔ)單元12,第一、第二、第三執(zhí)行單元14、16、18,以及寄存器文檔電路20。指令發(fā)布單元10有三個(gè)時(shí)隙IS1,IS2和IS3分別與第一、第二和第三執(zhí)行單元14、16和18相連。第一總線22使三個(gè)執(zhí)行單元14、16、18與寄存器文檔電路20相連。通過第二總線24,第一及第二執(zhí)行單元14及16(本例中第三執(zhí)行單元18沒有連接)與存儲(chǔ)器26連接,本例中該存儲(chǔ)器為處理器內(nèi)部的類似高速緩沖存儲(chǔ)器的隨機(jī)存取存儲(chǔ)器(RAM)。存儲(chǔ)器26也可以是外部RAM。
順便說(shuō)明一下,雖然附圖1中連接執(zhí)行單元與寄存器文檔電路20及存儲(chǔ)器26的為共享總線22和24,但每個(gè)執(zhí)行單元也可以分別與寄存器文檔電路及存儲(chǔ)器單獨(dú)連接。另外,給執(zhí)行單元14、16及18分別配各自的寄存器文檔電路。
處理器1進(jìn)行一系列處理循環(huán)。在每個(gè)處理循環(huán)中,指令發(fā)布單元10可在發(fā)布時(shí)隙IS1至IS3各發(fā)布一條指令。指令是根據(jù)進(jìn)度表存儲(chǔ)單元12所存的軟件管道進(jìn)度表(在后面說(shuō)明)進(jìn)行發(fā)布的。
指令發(fā)布單元10通過不同的發(fā)布時(shí)隙發(fā)布的指令由相應(yīng)的執(zhí)行單元14、16及18執(zhí)行。在此例中,每個(gè)執(zhí)行單元可同時(shí)執(zhí)行一條以上的指令,因而在同一單元發(fā)布的前一條指令執(zhí)行完之前就可開始執(zhí)行一條新指令。
為執(zhí)行指令,執(zhí)行單元14、16及18都需通過第一總線22訪問寄存器文檔電路20。這樣,寄存器文檔電路20中的寄存器存放的數(shù)值可被執(zhí)行單元14、16及18讀取并寫入。此外,第一及第二執(zhí)行單元14和16可經(jīng)由第二總線24訪問存儲(chǔ)器26,從而使存放在存儲(chǔ)器26內(nèi)的存儲(chǔ)位置的數(shù)值可被讀取并寫入。在本例中,第三執(zhí)行單元18不能訪問存儲(chǔ)器26,因而只能處理寄存器文檔電路20中的數(shù)據(jù)。
附圖2所示為附圖1所示處理器的寄存器文檔電路20的一個(gè)實(shí)例的示意圖。附圖2所示的寄存器文檔電路20中包含D個(gè)物理寄存器。在此例中,D等于32。在這D個(gè)寄存器中,編號(hào)偏低的K個(gè)寄存器為靜態(tài)命名的,編號(hào)偏高的D-K個(gè)寄存器為動(dòng)態(tài)命名的(可重命名)。在此例中,K等于16。靜態(tài)命名寄存器組成寄存器文檔的靜態(tài)命名區(qū)20S,可重命名寄存器組成寄存器文檔的可重命名區(qū)20R。
要求訪問寄存器文檔內(nèi)的物理寄存器的每條處理器指令,都采用一個(gè)邏輯寄存器編號(hào)R來(lái)表示其寄存器操作數(shù)。R是0到D-1之間的一個(gè)m位二進(jìn)制整數(shù),其中m=[log2(D)]。此例中m等于5。每個(gè)物理寄存器編號(hào)P也是0到D-1之間的一個(gè)m位二進(jìn)制整數(shù),直接標(biāo)識(shí)一個(gè)實(shí)際的硬件寄存器(物理寄存器)。
對(duì)于靜態(tài)命名區(qū)20S中的寄存器,即P位于0到K-1之間的物理寄存器,邏輯寄存器編號(hào)R到物理寄存器編號(hào)P的映象關(guān)系為P=R。
對(duì)于動(dòng)態(tài)命名區(qū)20R中的寄存器,即P位于K到D-1之間的寄存器,邏輯寄存器編號(hào)R到物理寄存器編號(hào)P的映象關(guān)系為
P=K+|R-K+OFFSET|D-K(1)在上述符號(hào)中,|y|x表示y模x。OFFSET(偏移量)為一個(gè)映象偏置變量(整數(shù)),隨著動(dòng)態(tài)命名區(qū)20R中的寄存器重命名而增大(或減小)。
OFFSET在0到D-K-1之間變化。
在本例中,因D=32,K=16,上述等式1就變換為P=16+|R-16+OFFSET|16附圖2所示為OFFSET=6的映象。
雖然附圖2中靜態(tài)命名區(qū)20S是由編號(hào)偏低的K個(gè)寄存器組成的,靜態(tài)命名區(qū)也可由編號(hào)偏高的寄存器(如K或D-K個(gè)編號(hào)偏高的寄存器)組成。后面將說(shuō)明,若映象偏置變量OFFSET在寄存器重命名時(shí)增大,采用編號(hào)偏低的K個(gè)寄存器更好;若映象偏置變量OFFSET在寄存器重命名時(shí)減小,采用編號(hào)偏高的寄存器作為靜態(tài)命名寄存器更好。
附圖3所示為附圖1所示處理器的寄存器文檔電路20的結(jié)構(gòu)。電路20中包括D個(gè)物理寄存器320至32D-1、D個(gè)標(biāo)記存儲(chǔ)部分340至34D-1。這些標(biāo)記存儲(chǔ)部分340至34D-1分別對(duì)應(yīng)于物理寄存器320至32D-1。每個(gè)標(biāo)記存儲(chǔ)部分存放TAG0至TAGD-1中的一個(gè)標(biāo)記,這些標(biāo)記分別表示分配給相應(yīng)物理寄存器320至32D-1的邏輯寄存器標(biāo)識(shí)符。
附圖3所示電路中還包括一個(gè)寄存器選擇單元36,該單元接收邏輯寄存器標(biāo)識(shí)符R,從物理寄存器320至32D-1中選取標(biāo)記(TAG0至TAGD-1)與所收到的邏輯寄存器標(biāo)識(shí)符R匹配的那個(gè)物理寄存器。采用這種方法選取物理寄存器320至32D-1中之一后,預(yù)期的操作就在選中的寄存器上進(jìn)行,如一個(gè)訪問(讀或?qū)?操作。
附圖3所示電路中還包括一個(gè)標(biāo)記變更單元38,該單元可改變所存的標(biāo)記TAG0至TAGD-1以改變分配給一個(gè)或多個(gè)物理寄存器320至32D-1的邏輯寄存器標(biāo)識(shí)符。
附圖4所示為根據(jù)本發(fā)明第一優(yōu)選實(shí)施例的寄存器文檔電路40結(jié)構(gòu)圖。附圖4中僅示出了“端”(第一個(gè)及最后一個(gè))寄存器320及32D-1的某些組件。在這個(gè)實(shí)施例中,物理寄存器320至32D-1中的每一個(gè)都是一個(gè)存放n位數(shù)據(jù)字(如n=32)的n位寄存器。附圖4以物理寄存器320的基本單元1320,0和1320,n-1,以及物理寄存器32D-1的基本單元132D-1,0和132D-1,n-1為例。在物理寄存器320中基本單元1320,0用于存放n位數(shù)據(jù)字的第0位,基本單元1320,n-1用于存放同一數(shù)據(jù)字的第n-1位。同樣地,基本單元132D-1,0和132D-1,n-1分別用于存放物理寄存器32D-1所存的n位數(shù)據(jù)字的第0位和第n-1位。應(yīng)理解,物理寄存器320和32D-1中的其它所有位都各有其它寄存器基本單元,其它所有物理寄存器也都有同樣的寄存器基本單元結(jié)構(gòu)。
附圖4所示實(shí)施例中還包括n個(gè)輸出單元440至44n-1。物理寄存器320至32D-1中的每一位(bit)都有一個(gè)輸出單元44。每個(gè)輸出電路44i(i=0至n-1)接收D個(gè)選擇信號(hào)SEL0至SELD-1。每個(gè)輸出電路44i還接收D個(gè)數(shù)據(jù)信號(hào)DS0,i至DSD-1,i。每個(gè)輸出電路44i包含D個(gè)與門(AND)460至46D-1,每一個(gè)與門分別接收選擇信號(hào)SEL0至SELD-1之一和數(shù)據(jù)信號(hào)DS0,i至DSD-1,I之一作為其兩個(gè)輸入信號(hào)。與門460至46D-1分別產(chǎn)生輸出信號(hào)OP0至OPD-1。這些輸出信號(hào)分別作為D輸入或門(OR)48的輸入?;蜷T48產(chǎn)生對(duì)應(yīng)于輸出單元44i的一個(gè)位信號(hào)Bi。這樣,如附圖4所示,輸出單元440產(chǎn)生位信號(hào)B0,輸出單元44n-1產(chǎn)生位信號(hào)Bn-1。
附圖4所示電路中還包括D個(gè)標(biāo)記管理單元420至42D-1。物理寄存器320至32D-1中的每一個(gè)都有一個(gè)這樣的標(biāo)記管理單元。在此實(shí)施例中,每個(gè)標(biāo)記管理單元42i(i=0至D-1)中包含附圖3所示標(biāo)記存儲(chǔ)部分340至34D-1中的一個(gè)標(biāo)記存儲(chǔ)部分(第34i部分)。標(biāo)記存儲(chǔ)部分34i對(duì)應(yīng)于物理寄存器32i。
在此實(shí)施例中,每個(gè)標(biāo)記管理單元42中還包含一個(gè)復(fù)用器52。標(biāo)記管理單元42的結(jié)構(gòu)及工作過程將在后面參照附圖5作更詳細(xì)地說(shuō)明。
附圖4所示電路40中還包括D個(gè)比較器單元540至54D-1,每一個(gè)單元對(duì)應(yīng)于物理寄存器320至32D-1中的一個(gè)。這D個(gè)比較器單元540至54D-1整體對(duì)應(yīng)于附圖3所示的寄存器選擇單元38。每個(gè)比較器單元54接收表示選中物理寄存器的邏輯寄存器編號(hào)的信號(hào)R作為其第一輸入。每個(gè)比較器單元54同時(shí)接收相應(yīng)物理寄存器的標(biāo)記存儲(chǔ)部分34i(注原文中為340)所存的標(biāo)記作為其第二輸入。例如,比較器單元540接收物理寄存器320對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分340所存的標(biāo)記TAG0作為其第二輸入。比較器單元540至54D-1分別產(chǎn)生上述用于輸出單元440至44n-1的選擇信號(hào)SEL0至SELD-1。
附圖5對(duì)附圖4所示標(biāo)記管理單元42作了更詳細(xì)地圖示。附圖5中示出了三個(gè)標(biāo)記管理單元42i-2、42i-1及42i。每個(gè)標(biāo)記管理單元42中的復(fù)用器52有一組數(shù)據(jù)輸入,附圖5所示有三個(gè)。第一數(shù)據(jù)輸入I1為相應(yīng)標(biāo)記管理單元42中的標(biāo)記存儲(chǔ)部分34的輸出信號(hào)的反饋。因此,第一數(shù)據(jù)輸入I1接收單元自身所存的標(biāo)記。第二數(shù)據(jù)輸入I2接到所有單元共用的總線58上。總線58接到最后一個(gè)標(biāo)記管理單元42D-1中的標(biāo)記存儲(chǔ)部分34D-1的輸出上。因此,第二數(shù)據(jù)輸入I2接收標(biāo)記TAGD-1。第三數(shù)據(jù)輸入I3連接到前一個(gè)標(biāo)記管理單元42中的標(biāo)記存儲(chǔ)部分34的輸出上。因此,第三數(shù)據(jù)輸入I3接收前一個(gè)標(biāo)記管理單元42中所存的標(biāo)記。例如,標(biāo)記管理單元42i-1中的復(fù)用器52i-1接收前一個(gè)標(biāo)記管理單元42i-2中所存的標(biāo)記TAGi-2作為其第三數(shù)據(jù)輸入I3。
每個(gè)標(biāo)記管理單元42中的復(fù)用器52也有一個(gè)數(shù)據(jù)輸出連接到相應(yīng)標(biāo)記管理單元中的標(biāo)記存儲(chǔ)部分34的一個(gè)輸入上。
每個(gè)標(biāo)記管理單元中的標(biāo)記存儲(chǔ)部分34的輸出也連接到相應(yīng)比較器單元540至54D-1的第二輸入上,前面已有說(shuō)明。
每個(gè)標(biāo)記管理單元42還帶有通過總線60接收控制信號(hào)的控制輸入。這些用于控制標(biāo)記管理單元工作的控制信號(hào)由一個(gè)控制信號(hào)發(fā)生單元(附圖5中未示出)產(chǎn)生,后面將參照附圖13詳細(xì)說(shuō)明。
附圖6所示為標(biāo)記管理單元42i中的復(fù)用器52i。除前面提及的第一至第三數(shù)據(jù)輸入I1-I3以外,該復(fù)用器還有第四輸入I4接收一個(gè)固定值i,即其標(biāo)記管理單元42i的單元號(hào)。第四輸入I4可用來(lái)在復(fù)位(reset)操作時(shí)對(duì)每個(gè)標(biāo)記管理單元42所存的標(biāo)記進(jìn)行初始化,后面將詳細(xì)說(shuō)明。
下面參照附圖7說(shuō)明第一實(shí)施例的工作流程。附圖7所示的工作流程在每一次處理器循環(huán)中都會(huì)進(jìn)行。
步驟S1確定寄存器文檔電路是否需要復(fù)位。例如,當(dāng)處理器加電或寄存器文檔的靜態(tài)命名區(qū)20S與動(dòng)態(tài)命名區(qū)20R之間的界限改變的時(shí)候,需要這樣的復(fù)位操作。若步驟s1中確定需要復(fù)位,每個(gè)標(biāo)記管理單元420至42D-1促使其復(fù)用器52選擇第四數(shù)據(jù)輸入(附圖6中的I4)。結(jié)果是,復(fù)用器52輸出相應(yīng)標(biāo)記管理單元的單元號(hào);在下一個(gè)有效時(shí)鐘邊沿,這些單元號(hào)被存入標(biāo)記管理單元的標(biāo)記存儲(chǔ)部分34(步驟S5)。處理過程隨后結(jié)束。
若步驟s1中確定不需要復(fù)位,步驟S2檢查寄存器文檔中動(dòng)態(tài)命名區(qū)20R內(nèi)的寄存器是否需要重命名。當(dāng)軟件管道環(huán)中開始一個(gè)新迭代的時(shí)候,可能需要這樣的重命名操作。例如在這種情況下,處理器可能發(fā)出一個(gè)RENAME(重命名)控制信號(hào),該信號(hào)施加于寄存器文檔電路20(見附圖1)。
若不需要重命名操作,處理過程結(jié)束。否則,在步驟S3和S4中,與寄存器文檔動(dòng)態(tài)命名區(qū)20R內(nèi)的物理寄存器相對(duì)應(yīng)的標(biāo)記被“循環(huán)”一次。
特別是在步驟S3中,每一個(gè)標(biāo)記管理單元42i(i=K+1至D-1)促使其復(fù)用器52選擇第三輸入(附圖6中的I3)。結(jié)果是,復(fù)用器52輸出前一個(gè)標(biāo)記管理單元42i-1的標(biāo)記存儲(chǔ)單元34i-1中所存的標(biāo)記TAGi-1。在下一個(gè)有效時(shí)鐘邊沿,標(biāo)記TAGi-1被存入標(biāo)記管理單元42i的標(biāo)記存儲(chǔ)單元34i中。
最后一個(gè)標(biāo)記管理單元42D-1中存放的標(biāo)記必須回繞至動(dòng)態(tài)命名區(qū)20R內(nèi)第一個(gè)物理寄存器對(duì)應(yīng)的標(biāo)記管理單元42K中。因而在步驟S4中,標(biāo)記管理單元42K使其復(fù)用器52選擇第二輸入(附圖6中的I2)。結(jié)果是,該單元的復(fù)用器52輸出通過總線58從標(biāo)記管理單元42D-1接收的標(biāo)記TAGD-1。在下一個(gè)有效時(shí)鐘邊沿,標(biāo)記TAGD-1被存入標(biāo)記存儲(chǔ)單元34K中。
應(yīng)理解,在附圖7所示的工作流程中,除需要復(fù)位的情況外,與靜態(tài)命名區(qū)20S中的物理寄存器相對(duì)應(yīng)的標(biāo)記TAG0至TAGK-1保持不變。這樣,這些標(biāo)記保持值0至K-1,這些標(biāo)記在步驟S5復(fù)位操作時(shí)分別初始化為這些值。因此,對(duì)于寄存器文檔中靜態(tài)命名區(qū)20S內(nèi)的物理寄存器,邏輯寄存器編號(hào)總是直接映象到相同的物理寄存器編號(hào),例如物理寄存器320總有邏輯寄存器編號(hào)0(即TAG0=0),物理寄存器321總有邏輯寄存器編號(hào)1(即TAG1=1)等。
應(yīng)理解,在附圖4所示實(shí)施例中,與動(dòng)態(tài)命名區(qū)內(nèi)物理寄存器相應(yīng)的標(biāo)記的變更可通過以循環(huán)方式使標(biāo)記移位(循環(huán))經(jīng)過與那些物理寄存器相應(yīng)的標(biāo)記存儲(chǔ)部分來(lái)簡(jiǎn)單地實(shí)現(xiàn)。這種循環(huán)移位可快速進(jìn)行,因?yàn)槠渲胁恍枰阈g(shù)或其它復(fù)雜的數(shù)據(jù)處理過程。
比較器單元540至54D-1與輸出電路440至44n-1共同組成一個(gè)讀取端口,該端口根據(jù)信號(hào)R選取標(biāo)記與由信號(hào)R指定的邏輯寄存器編號(hào)匹配的相應(yīng)物理寄存器,輸出被選中的物理寄存器所存的n位數(shù)字作為位信號(hào)B0至Bn-1。
由于物理寄存器相應(yīng)的標(biāo)記總是互不同的,即便在寄存器重命名以后,在任一時(shí)刻僅有一個(gè)比較器單元54內(nèi)存放的標(biāo)記可與由信號(hào)R指定的邏輯寄存器編號(hào)匹配。這樣,僅有那一個(gè)比較器單元將其選擇信號(hào)SEL置為有效(1),其它所有選擇信號(hào)都為無(wú)效(0)。因此,在440至44n-1每一個(gè)輸出單元中,僅有一個(gè)與門46收到有效的選擇信號(hào)SEL而被置為有效,其它的與門都置為無(wú)效。唯一有效的與門46的輸出信號(hào)OP等于寄存器基本單元132(與該與門相連)存放的數(shù)據(jù)字位。所有無(wú)效的與門的輸出信號(hào)OP都為無(wú)效(0)。這樣,每個(gè)輸出單元44內(nèi)的或門48只傳送唯一有效與門46的輸出信號(hào)OP(即該與門收到的寄存器基本單元位)作為其位信號(hào)B。
由于比較器單元540至54D-1彼此并行工作,寄存器選擇操作進(jìn)行得非常快。同樣地,由于輸出單元440至44n-1彼此并行工作,對(duì)選中的寄存器的讀取也進(jìn)行得非???。
附圖4所示實(shí)施例的工作過程將參照附圖8-12所示實(shí)例予以說(shuō)明。此例中為簡(jiǎn)單起見,假設(shè)寄存器文檔總共僅有4個(gè)物理寄存器(D=4),開始僅有物理寄存器0位于靜態(tài)命名區(qū),其余物理寄存器1、2、3位于動(dòng)態(tài)命名區(qū)(K=1)。
附圖8中所示為緊跟復(fù)位操作后的標(biāo)記狀態(tài)。
附圖9所示為進(jìn)行第一次重命名操作后的標(biāo)記情況。標(biāo)記TAG0仍為0。如附圖9中粗箭頭所示,物理寄存器1、2及3對(duì)應(yīng)的標(biāo)記已循環(huán)移動(dòng)一位。這樣,若給比較器單元540至54D-1輸入邏輯寄存器編號(hào)R=2,物理寄存器3由于其對(duì)應(yīng)的標(biāo)記值為2而被選中。
附圖10所示為進(jìn)行第二次重命名操作后的標(biāo)記情況。操作后邏輯寄存器編號(hào)2被存儲(chǔ)在與物理寄存器1對(duì)應(yīng)的標(biāo)記中。因此,若給比較器單元540至54D-1輸入邏輯寄存器編號(hào)R=2,物理寄存器1就被選中。
進(jìn)行第三次重命名操作后,標(biāo)記情況如附圖11所示,與附圖8所示狀態(tài)(復(fù)位狀態(tài))相同。這樣,若邏輯寄存器編號(hào)為2,則物理寄存器2被選中。
達(dá)到附圖11所示狀態(tài)后,假設(shè)K從原值1改為新值2。僅當(dāng)標(biāo)記被復(fù)位至附圖8所示狀態(tài)以后,才允許這樣改變K值。在此例中,標(biāo)記在K值改變之前已返回如附圖11所示的復(fù)位狀態(tài)。但是在一般情況下,對(duì)K作任何改變之前必須進(jìn)行復(fù)位操作。
附圖12所示為改變K值并進(jìn)行第一次重命名操作后的標(biāo)記情況。由于K=2,重命名后物理寄存器0和1的標(biāo)記仍分別為0和1。位于動(dòng)態(tài)命名區(qū)內(nèi)的物理寄存器2和3的標(biāo)記被循環(huán)移動(dòng)。這樣,若邏輯寄存器編號(hào)為2,則物理寄存器3被選中。
可以改變附圖4所示實(shí)施例,使其不止具有一個(gè)讀取端口。這很容易實(shí)現(xiàn)對(duì)每一個(gè)另加的讀取端口,加裝與附圖4所示比較器單元540至54D-1相應(yīng)的另一組D個(gè)比較器單元,與附圖4所示輸出單元440至44n-1相應(yīng)的另一組n個(gè)輸出單元。若按這種方法裝好兩個(gè)或更多的讀取端口,這些讀取端口彼此并行工作,每一組比較器單元接收一個(gè)不同的信號(hào)R,該信號(hào)指定要通過相應(yīng)讀取端口讀取的物理寄存器的邏輯寄存器編號(hào)。
讀取端口的輸出單元440至44n-1可采用多種不同于附圖4所示的方法來(lái)實(shí)現(xiàn)。例如,讀取端口的輸出單元可采用D個(gè)三態(tài)驅(qū)動(dòng)器,其中每一個(gè)由不同的一個(gè)選擇信號(hào)SEL0至SELD-1激活以輸出相應(yīng)物理寄存器所存放的數(shù)據(jù)字。這些三態(tài)驅(qū)動(dòng)器的輸出統(tǒng)一接到讀取端口的一個(gè)輸出上,其中每個(gè)未激活的三態(tài)驅(qū)動(dòng)器都將其輸出設(shè)成高阻抗?fàn)顟B(tài)。
此外,可以采用不同于附圖4所示讀取端口的其它適當(dāng)?shù)碾娐?,?duì)選中的物理寄存器進(jìn)行預(yù)期的操作,例如寫操作或清除操作。
在附圖4所示實(shí)施例中,標(biāo)記管理單元420至42D-1由通過控制信號(hào)發(fā)生單元產(chǎn)生的控制信號(hào)進(jìn)行控制。附圖13示出了適用于附圖4所示實(shí)施例的控制信號(hào)發(fā)生單元的組成部分。
附圖13所示控制信號(hào)發(fā)生單元62中包括一個(gè)寄存器64、一個(gè)解碼器66以及多個(gè)或門681至6831。在此例中,假定寄存器文檔電路內(nèi)物理寄存器的總數(shù)D為32。這意味著此例中所需或門數(shù)為31,其原因?qū)⒉谎远鳌?br>
此例中寄存器64為用于存放當(dāng)前K值的5位寄存器。所存的K值作為解碼器66的一個(gè)輸入。解碼器66是一個(gè)“5到32”解碼器,有32個(gè)輸出。解出的信號(hào)Kdecoded
至Kdecoded[31]分別位于解碼器66的輸出上。每個(gè)或門在其第一輸入接收解碼信號(hào)Kdecoded
至Kdecoded[31]之一?;蜷T682至6831中的每一個(gè)都接收其前一個(gè)或門(681至6830)的輸出信號(hào)(rotatingRegion[1]至rotatingRegion[30])作為第二輸入。對(duì)于或門681,第二輸入為解出的信號(hào)Kdecoded
。解出的信號(hào)Kdecoded
直接提供后面的輸出信號(hào)rotatingRegion
。輸出信號(hào)rotatingRegion
至rotatingRegion[31]分別送到附圖4所示的標(biāo)記管理單元420至4231。
控制信號(hào)發(fā)生單元62的工作過程如下解碼器66接收所存的K值,將解出信號(hào)Kdecoded[K]置為有效狀態(tài)(1),其它解出的信號(hào)都置為無(wú)效(0);這樣,或門68K將其輸出信號(hào)rotatingRegion[K]置為有效狀態(tài)(1)(若K=0,由于解出的信號(hào)Kdecoded
為有效,輸出信號(hào)rotatingRegion
直接成為有效)。
輸出信號(hào)rotatingRegion[K]的有效狀態(tài)隨即“傳遞”給或門68K+1至6831,使得輸出信號(hào)rotatingRegion[K+1]至rotatingRegion[31]都同樣置為有效(1)。
由此可看出,管理與寄存器文檔動(dòng)態(tài)命名區(qū)20R內(nèi)物理寄存器32K至3231對(duì)應(yīng)的標(biāo)記的標(biāo)記管理單元42K至4231,分別接收處于有效狀態(tài)的輸出信號(hào)rotatingRegion[K]至rotatingRegion[31],而其它的標(biāo)記管理單元420至42K-1分別接收無(wú)效的輸出信號(hào)rotatingRegion
至rotatingRegion[K-1]。通過這種方法,每個(gè)標(biāo)記管理單元收到的控制信號(hào)確定其相應(yīng)的物理寄存器位于區(qū)20S還是區(qū)20R。
如附圖14中所示,每個(gè)標(biāo)記管理單元42i除接收控制信號(hào)rotatingRegion[i]以外,還接收來(lái)自控制信號(hào)發(fā)生單元62的另外兩個(gè)控制信號(hào)RESET(復(fù)位)和ROTATION(循環(huán))。當(dāng)需要對(duì)標(biāo)記進(jìn)行復(fù)位時(shí)(附圖7中步驟S1檢查),該RESET信號(hào)被置為有效狀態(tài)(1)。當(dāng)ROTATION信號(hào)為無(wú)效時(shí)(0),不需要對(duì)寄存器重命名(附圖7中步驟S2檢查)。每個(gè)標(biāo)記管理單元42i還接收來(lái)自控制信號(hào)發(fā)生單元62的解出信號(hào)Kdecoded[i]。
下面參見附圖15說(shuō)明通道管理單元42i根據(jù)收到的控制信號(hào)進(jìn)行的操作。
步驟S10檢查RESET信號(hào)是否為有效(1)。若有效,則進(jìn)到步驟S16,復(fù)用器52i選擇其第四數(shù)據(jù)輸入,即單元自身的識(shí)別號(hào)i。處理過程結(jié)束。
若在步驟S10中RESET信號(hào)為無(wú)效,步驟S11檢查ROTATION信號(hào)與rotatingRegion[i]信號(hào)是否都為有效(1)。若其中有一個(gè)無(wú)效,則進(jìn)到步驟S15,復(fù)用器52i選擇其第一數(shù)據(jù)輸入I1。在這種情況下,保持所存放的標(biāo)記TAGi不變。
若在步驟S11中ROTATION信號(hào)與rotatingRegion[i]信號(hào)都有效(1),則進(jìn)到步驟S12。步驟S12檢查Kdecoded[i]信號(hào)以確定標(biāo)記管理單元42i相應(yīng)的物理寄存器32i是否為寄存器文檔動(dòng)態(tài)命名區(qū)20R內(nèi)的第一個(gè)寄存器。若是,那么Kdecoded[i]信號(hào)為有效(1),進(jìn)到步驟S14,復(fù)用器52i(注原文中為32i)選擇其第二數(shù)據(jù)輸入。結(jié)果所存放的標(biāo)記改為TAGD-1。
若在步驟S12中Kdecoded[i]信號(hào)為無(wú)效,則標(biāo)記管理單元42i不是動(dòng)態(tài)命名區(qū)內(nèi)的第一個(gè)寄存器,進(jìn)到步驟S13,復(fù)用器52i選擇其第三數(shù)據(jù)輸入I3。在這種情況下,所存放的標(biāo)記改為等于前一個(gè)標(biāo)記管理單元42i-1中的TAGi-1。
由附圖15可看出,由于所存放的標(biāo)記在動(dòng)態(tài)命名區(qū)20R內(nèi)根據(jù)映象偏置值OFFSET(見附圖2,寄存器每重命名一次該偏置值就增加一次)循環(huán)移動(dòng),動(dòng)態(tài)命名區(qū)20R內(nèi)最后一個(gè)物理寄存器總是寄存器文檔的最后一個(gè)物理寄存器32D-1。這樣,盡管任何一個(gè)物理寄存器都可被指定為動(dòng)態(tài)命名區(qū)20R內(nèi)第一個(gè)物理寄存器32K,以致于每個(gè)標(biāo)記管理單元需能接收與最后一個(gè)物理寄存器32D-1相應(yīng)的所存標(biāo)記TAGD-1(標(biāo)記“回繞(wrap-around)”),每個(gè)標(biāo)記管理單元只需要標(biāo)記存儲(chǔ)部分34D-1作為一個(gè)源標(biāo)記存儲(chǔ)部分以便允許這樣的標(biāo)記回繞,而不需其它每個(gè)標(biāo)記存儲(chǔ)部分作為源標(biāo)記存儲(chǔ)部分。這樣可使每個(gè)標(biāo)記管理單元中的復(fù)用器因使用門數(shù)少而簡(jiǎn)單,也可使復(fù)用器運(yùn)行速度快。
在另一個(gè)實(shí)施例中,動(dòng)態(tài)命名寄存器為編號(hào)偏低的物理寄存器,第一個(gè)物理寄存器320總是動(dòng)態(tài)命名區(qū)20R內(nèi)的第一個(gè)物理寄存器。在這種情況下,當(dāng)標(biāo)記存儲(chǔ)部分320(唯一)為其它所有標(biāo)記存儲(chǔ)部分的源標(biāo)記存儲(chǔ)部分時(shí),可能進(jìn)行標(biāo)記回繞。此時(shí),寄存器每重命名一次,映象偏置值OFFSET就減少一次。
在附圖4所示實(shí)施例中,處理器每循環(huán)一次只能進(jìn)行一次重命名操作。不過,根據(jù)處理器中使用寄存器文檔電路的執(zhí)行單元的個(gè)數(shù),可允許處理器每循環(huán)一次進(jìn)行一次以上的重命名操作。
在根據(jù)本發(fā)明第二實(shí)施例的寄存器文檔電路中,處理器每循環(huán)一次可最多進(jìn)行兩次重命名操作。附圖16示出了第二實(shí)施例中的一個(gè)標(biāo)記管理單元142i的組成部分。采用了一個(gè)有六個(gè)數(shù)據(jù)輸入I1至I6的復(fù)用器152i代替附圖6中所示復(fù)用器52i。輸入I1至I4的連接與第一實(shí)施例中相同。第五數(shù)據(jù)輸入I5連接到標(biāo)記管理單元42i-2中數(shù)據(jù)存儲(chǔ)部分34i-2的輸出上。第六數(shù)據(jù)輸入I6接到一條總線上(未標(biāo)出,與附圖5中所示總線58類似),該總線連接到倒數(shù)第二個(gè)標(biāo)記管理單元42D-2中標(biāo)記存儲(chǔ)部分34D-2的輸出上。
在第二實(shí)施例中,如附圖17所示,每個(gè)標(biāo)記管理單元142還需要來(lái)自控制信號(hào)發(fā)生單元的另外的控制信號(hào)。特別是第二實(shí)施例中每個(gè)標(biāo)記管理單元142i都連接有ROTATEBYTWO信號(hào)。若當(dāng)前處理器循環(huán)中需要兩次重命名操作,則該控制信號(hào)為有效(1);若當(dāng)前處理器循環(huán)中需要一次重命名操作,則ROTATEBYTWO信號(hào)為無(wú)效(0)而ROTATION信號(hào)為有效(1);若當(dāng)前處理器循環(huán)中不需要重命名操作,則ROTATION控制信號(hào)為無(wú)效(0)而ROTATEBYTWO信號(hào)可為無(wú)效或有效(“無(wú)關(guān)”)。此外,附圖17所示第二實(shí)施例中每個(gè)標(biāo)記管理單元142i還接收解出的信號(hào)Kdecoded[i-1]。第二實(shí)施例中加到標(biāo)記管理單元142i上其余的控制信號(hào)與第一實(shí)施例中一樣(見附圖14)。
下面參照附圖18(A)和18(B)說(shuō)明第二實(shí)施例中標(biāo)記管理單元142i的工作流程。在附圖18(A)和18(B)中,凡與那些已結(jié)合附圖15說(shuō)明過的步驟相同的步驟,給出相同的參照號(hào)而省略對(duì)這些步驟的說(shuō)明。附圖18(A)和18(B)中增加了步驟S20至S25。
在第二實(shí)施例中,標(biāo)記管理單元142i不僅需確定其相應(yīng)的物理寄存器是否為動(dòng)態(tài)命名區(qū)20R內(nèi)的第一個(gè)寄存器,而且(在當(dāng)前循環(huán)要求兩次重命名操作的情況下)還需確定其相應(yīng)的物理寄存器是否為動(dòng)態(tài)命名區(qū)20R內(nèi)的第二個(gè)寄存器。若步驟S12已確定其相應(yīng)的物理寄存器不是區(qū)20R內(nèi)的第一個(gè)寄存器后,在步驟S20中檢查其相應(yīng)的寄存器是否為該區(qū)內(nèi)的第二個(gè)寄存器。若是,步驟S21檢查在此次處理器循環(huán)中是否需要兩次重命名操作(ROTATEBYTWO信號(hào)有效)。若需要兩次重命名操作,該標(biāo)記管理單元必須選擇與最后一個(gè)物理寄存器(也是動(dòng)態(tài)命名區(qū)20R內(nèi)的最后一個(gè)物理寄存器)相應(yīng)的標(biāo)記管理單元142D-1中的標(biāo)記TAGD-1。
若在步驟S21中ROTATEBYTWO信號(hào)為無(wú)效,則表示當(dāng)前循環(huán)中僅需一次重命名操作。這樣,在步驟S13中象第一實(shí)施例中一樣選擇前一級(jí)的標(biāo)記TAGi-1。
若在步驟S12中確定標(biāo)記管理單元142i的相應(yīng)物理寄存器32i為區(qū)20R內(nèi)的第一個(gè)物理寄存器,則進(jìn)到步驟S24。在這種情況下,若當(dāng)前處理器循環(huán)中需要兩次重命名操作(ROTATEBYTWO信號(hào)有效),那么在步驟S25中復(fù)用器152i選擇其第六數(shù)據(jù)輸入,使得與倒數(shù)第二個(gè)物理寄存器相應(yīng)的標(biāo)記TAGD-2被存入。否則,當(dāng)前處理器循環(huán)中僅需一次重命名操作,象第一實(shí)施例中一樣執(zhí)行步驟S14。
在第二實(shí)施例中,寄存器文檔在每次處理器循環(huán)中可進(jìn)行0、1或2次重命名操作。應(yīng)理解,在其它實(shí)施例中,通過增加每個(gè)復(fù)用器的輸入以及用于產(chǎn)生所需附加控制信號(hào)的相關(guān)控制邏輯電路,可使本發(fā)明支持每次循環(huán)中進(jìn)行任意次重命名操作。
采用本發(fā)明實(shí)施例的寄存器文檔電路的處理器,其執(zhí)行單元可以是管道化的。在這種情況下,需要提供一種異常處理裝置以使寄存器文檔電路中開始狀態(tài)信息可逆。同時(shí),需要給寄存器文檔電路提供一種停滯控制裝置。
附圖19所示為根據(jù)本發(fā)明第三優(yōu)選實(shí)施例的寄存器文檔電路80的組成結(jié)構(gòu)示意框圖。在此例中寄存器文檔電路80用于一個(gè)有五級(jí)(0至4級(jí))執(zhí)行單元管道的處理器中。在此實(shí)施例中,寄存器文檔電路80中每個(gè)物理寄存器除了有標(biāo)記存儲(chǔ)部分340至3431以外,另外增加了一組標(biāo)記存儲(chǔ)部分1340至13431。標(biāo)記存儲(chǔ)部分340至3431內(nèi)存放的標(biāo)記用作工作標(biāo)記,而標(biāo)記存儲(chǔ)部分1340至13431內(nèi)存放的標(biāo)記用作完成標(biāo)記。
電路80中還包含第一系列寄存器級(jí)(K寄存器級(jí))820至824以及第二系列寄存器級(jí)(TCP寄存器級(jí))840至843。
K寄存器級(jí)820至824中每一個(gè)都用于存放一個(gè)K值。K寄存器級(jí)824中存放的K值用作完成的K值。K寄存器級(jí)820至823組成完成K值更新單元182的一部分。在K寄存器級(jí)820的輸入與K寄存器級(jí)824的輸出之間接有一個(gè)復(fù)用器86。
TCP寄存器級(jí)840至843中每一個(gè)都用于存放一組標(biāo)記變更參數(shù)(TCP),這些參數(shù)被標(biāo)記管理單元用來(lái)改變工作標(biāo)記。例如,所存放的TCP來(lái)源于ROTATION和(若使用了)ROTATEBYTWO控制信號(hào)。TCP寄存器級(jí)840至843組成完成標(biāo)志更新單元184的一部分。
在正常操作中(無(wú)異常、無(wú)停頓),當(dāng)一條指令進(jìn)入第一管道級(jí)(0級(jí))時(shí),當(dāng)前適用的TCP被記入寄存器級(jí)840中。同樣地,當(dāng)前適用的K值也被記入寄存器級(jí)820中。當(dāng)連續(xù)的指令進(jìn)入管道時(shí),TCP和K值經(jīng)過第一和第二系列寄存器級(jí),每組TCP和每個(gè)K值與執(zhí)行單元管道中相應(yīng)的指令保持同步。
在每次處理器循環(huán)中,完成標(biāo)記更新單元184根據(jù)寄存器級(jí)843內(nèi)存放的TCP對(duì)完成標(biāo)記進(jìn)行更新。這樣,完成標(biāo)記對(duì)應(yīng)于退出最后管道級(jí)的指令(最后完成的指令)所用的標(biāo)記,而工作標(biāo)記對(duì)應(yīng)于進(jìn)入第一管道級(jí)的指令所用的標(biāo)記。中間管道級(jí)指令所用的標(biāo)記不被存儲(chǔ),只有中間管道級(jí)的K值和TCP被存儲(chǔ)。
如附圖19所示,每個(gè)管道級(jí)還有一個(gè)異常標(biāo)志和一個(gè)停滯標(biāo)志。對(duì)于異常和停滯情況,需要采用不同的方法處理。
對(duì)于異常處理情況,處理器中可能出現(xiàn)一些無(wú)法恢復(fù)的異常情況,如由于試圖對(duì)一個(gè)無(wú)效操作碼進(jìn)行解碼而導(dǎo)致的程序錯(cuò)誤;也可能出現(xiàn)其它一些消除異常原因后可恢復(fù)的異常情況,如虛擬存儲(chǔ)器轉(zhuǎn)換錯(cuò)誤。這樣的異常情況在任何管道級(jí)都可能出現(xiàn)。當(dāng)檢測(cè)到異常情況時(shí),出現(xiàn)異常的管道級(jí)i(“異常管道級(jí)”)設(shè)置其異常標(biāo)志。處于其后i+1級(jí)以后的指令必須執(zhí)行完,而處于異常級(jí)i以及之前的所有級(jí)的指令必須有效廢除。
因此,當(dāng)管道級(jí)i中出現(xiàn)異常時(shí),與異常管道級(jí)i對(duì)應(yīng)的TCP寄存器級(jí)84i以及之前所有的寄存器級(jí)840至84i-1將它們的TCP復(fù)位為0(不需要重命名操作)。K寄存器級(jí)820至82i-1中的K值不變,但標(biāo)明為無(wú)效。在每次處理器循環(huán)中,處理異常情況的同時(shí)TCP及K寄存器級(jí)繼續(xù)向前推進(jìn)。處于異常管道級(jí)i之后的K及TCP寄存器級(jí)繼續(xù)正常運(yùn)行,以保證K值和TCP傳遞到寄存器級(jí)823至843中。由于0至i-1級(jí)的TCP組已被復(fù)位為0,當(dāng)它們到達(dá)級(jí)843時(shí)不會(huì)影響完成標(biāo)記。同樣地,只有前一級(jí)823中有一個(gè)有效K值且沒有未處理完的異?;蛲闆r時(shí),完成K值更新單元182才更新其后級(jí)824中的完成K值。這樣,即使0至i-1級(jí)的K值到達(dá)級(jí)823,完成K值也不會(huì)更新,因?yàn)檫@些K值已在出現(xiàn)異常時(shí)被標(biāo)明為無(wú)效。通過這種方法,就可保證寄存器級(jí)824至843中的內(nèi)容對(duì)應(yīng)于最后執(zhí)行完的指令狀態(tài)。
一旦在出現(xiàn)異常情況之前最后一條有效指令到達(dá)完成級(jí)(即最后管道級(jí)),標(biāo)記存儲(chǔ)部分1340至13431內(nèi)存放的完成標(biāo)記就被重載至標(biāo)記存儲(chǔ)部分340至3431。同樣地,寄存器824內(nèi)存放的完成K值也通過復(fù)用器86被重載至820。
在停滯控制情況下,處理器試圖一直保持管道滿載以保證指令高速執(zhí)行。然而,有可能因?yàn)槟撤N原因(可能由于指令需要訪問一個(gè)低速存儲(chǔ)器或計(jì)算一個(gè)多循環(huán)),指令沒能在一個(gè)時(shí)鐘周期內(nèi)穿過某個(gè)管道級(jí)。這樣的事故被視為停滯。當(dāng)i級(jí)停滯時(shí),位于i-1級(jí)的指令不能前進(jìn),即使位于i-1級(jí)的指令自身并未停滯。它又返回來(lái)令i-2級(jí)停滯,依次輪回至0級(jí)。
在附圖19所示實(shí)施例中,當(dāng)i級(jí)停滯時(shí),與停滯管道級(jí)i及其以前所有的寄存器級(jí)相對(duì)應(yīng)的K寄存器級(jí)820至82i以及TCP寄存器級(jí)840至84i將其現(xiàn)有的值在停滯期間進(jìn)行再循環(huán)。作為0級(jí)輸入的TCP在停滯期間被完成標(biāo)記更新單元184復(fù)位至0(不需要重命名)。盡管TCP寄存器級(jí)84i+1至843從前面的停滯級(jí)收到“空”TCP(復(fù)位至0)以防止停滯管道級(jí)的TCP影響完成標(biāo)記,其它的寄存器級(jí)82i+1至823以及84i+1至843仍繼續(xù)管道化操作,直到停滯結(jié)束,停滯的指令開始前進(jìn)以退出管道為止。
附圖20更詳細(xì)地示出了TCP寄存器級(jí)的組成部分。附圖20只示出了級(jí)840、841及842的電路組成,而且只示出了處理其中一個(gè)TCP的電路組成。其它每個(gè)TCP都有相同或類似的電路。
如附圖20所示,每個(gè)寄存器級(jí)中包含一個(gè)寄存器基本單元102,以及由一個(gè)復(fù)用器104與一個(gè)邏輯門106組成的停滯控制電路。復(fù)用器104有一個(gè)選擇輸入連接相應(yīng)管道級(jí)的停滯標(biāo)志。若某級(jí)中出現(xiàn)停滯,其停滯標(biāo)志就被置為1;否則就被置為0。復(fù)用器104還有第一及第二數(shù)據(jù)輸入。當(dāng)停滯標(biāo)志無(wú)效(0)時(shí),第一數(shù)據(jù)輸入(“0”)被選中;當(dāng)停滯標(biāo)志有效(1)時(shí),第二數(shù)據(jù)輸入(“1”)被選中。復(fù)用器104的第二輸入為相應(yīng)寄存器級(jí)中寄存器基本單元102的數(shù)據(jù)輸出Q的反饋信號(hào)。這樣,當(dāng)某級(jí)的停滯標(biāo)志無(wú)效時(shí),來(lái)自前一寄存器級(jí)的TCP參數(shù)在下一個(gè)有效時(shí)鐘沿被存入該級(jí)的寄存器基本單元102中;而當(dāng)停滯標(biāo)志有效時(shí),該級(jí)的寄存器基本單元102內(nèi)存有的當(dāng)前TCP狀態(tài)通過復(fù)用器104,從寄存器基本單元102的輸出返回到輸入端進(jìn)行重復(fù)循環(huán),使得當(dāng)前TCP狀態(tài)保持不變。
每級(jí)中的邏輯門106接收停滯標(biāo)志和該級(jí)中寄存器基本單元102的當(dāng)前狀態(tài)。只要停滯標(biāo)志有效,邏輯門106的輸出就為無(wú)效(0)。
這樣,當(dāng)在管道級(jí)i中設(shè)置停滯標(biāo)志時(shí),寄存器級(jí)i-1中的寄存器基本單元102i-1送給下一寄存器級(jí)i的輸入端一個(gè)無(wú)效的標(biāo)記變更參數(shù)。這種方法可保證在停滯期間,對(duì)于未停滯管道級(jí)i+1及其以后級(jí)中的指令,完成標(biāo)記(存放在標(biāo)記存儲(chǔ)部分1340至13431中)會(huì)根據(jù)需要改變(循環(huán)),然后停止改變,而不論停滯級(jí)0至i中寄存器基本單元內(nèi)存放的TCP為何種狀態(tài)。
用于處理與RESET信號(hào)相應(yīng)的TCP參數(shù)的TCP寄存器級(jí)不必包含邏輯門106,即每個(gè)寄存器基本單元102i的輸出Q直接連到復(fù)用器104i+1的“0”輸入上。若所有寄存器級(jí)820至823中的K值都有效且沒有未處理完的異常或停滯情況,用于RESET信號(hào)的TCP寄存器最后一級(jí)的輸出則僅用來(lái)更新(復(fù)位)完成標(biāo)記。
如前所述,根據(jù)本發(fā)明實(shí)施例提供寄存器文檔電路,其靜態(tài)命名與可重命名區(qū)之間可以有一個(gè)完全可編程的邊界,而同時(shí)可使選擇及訪問所需物理寄存器所占用的時(shí)間最少。一般地,訪問一個(gè)處理器寄存器文檔的關(guān)鍵路徑是針對(duì)整個(gè)處理器的關(guān)鍵路徑之一,因此減少寄存器文檔內(nèi)的路徑延時(shí)可使整個(gè)處理器采用更高頻率的時(shí)鐘。
雖然前面結(jié)合實(shí)例的說(shuō)明基于具備軟件管道執(zhí)行能力的VLIW處理器,本發(fā)明也適用于不具備這些特點(diǎn)的處理器。實(shí)施本發(fā)明的處理器可作為處理器“內(nèi)核”安裝在高度集成的“位于一個(gè)芯片上的系統(tǒng)”(SOC)中,這種系統(tǒng)可用于多媒體應(yīng)用程序、網(wǎng)絡(luò)路由、視頻移動(dòng)電話、智能汽車、數(shù)字電視、語(yǔ)音識(shí)別、三維游戲等。
權(quán)利要求
1.一種寄存器文檔電路,其中包括多個(gè)物理寄存器;多個(gè)標(biāo)記存儲(chǔ)部分,分別對(duì)應(yīng)于物理寄存器,其中每一個(gè)部分存放表示一個(gè)邏輯寄存器ID的標(biāo)記,該ID被分配給相對(duì)應(yīng)的物理寄存器;寄存器選擇裝置,用于接收邏輯寄存器ID并選擇所述標(biāo)記與收到的邏輯寄存器ID相匹配的那一個(gè)物理寄存器;標(biāo)記變更裝置,可通過將至少一個(gè)標(biāo)記存儲(chǔ)部分存放的標(biāo)記轉(zhuǎn)移到另一個(gè)所述標(biāo)記存儲(chǔ)部分,變更所存放的標(biāo)記,從而改變所述物理寄存器之一與至少一個(gè)邏輯寄存器ID之間的映象關(guān)系。
2.根據(jù)權(quán)利要求1的電路,其中所述標(biāo)記變更裝置可使所存的標(biāo)記在與部分或全部多個(gè)物理寄存器分別對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分中循環(huán)移動(dòng)。
3.根據(jù)權(quán)利要求1或2的電路,其中還包括物理寄存器指定裝置,用于從所述多個(gè)寄存器中指定至少一個(gè)物理寄存器作為靜態(tài)命名的物理寄存器,其所述標(biāo)記不能通過所述標(biāo)記變更裝置進(jìn)行改變。
4.根據(jù)權(quán)利要求3的電路,其中所述物理寄存器指定裝置將所述多個(gè)物理寄存器分成至少一個(gè)靜態(tài)命名區(qū)和一個(gè)動(dòng)態(tài)命名區(qū),所述每個(gè)區(qū)內(nèi)有一個(gè)或多個(gè)物理寄存器;所述標(biāo)記變更裝置可以改變所述動(dòng)態(tài)命名區(qū)內(nèi)每個(gè)物理寄存器所存的標(biāo)記,但不能改變所述靜態(tài)命名區(qū)內(nèi)每個(gè)物理寄存器所存的標(biāo)記。
5.根據(jù)權(quán)利要求3或4的電路,其中所述靜態(tài)命名區(qū)和所述動(dòng)態(tài)命名區(qū)之間的邊界可編程。
6.根據(jù)前述任一權(quán)利要求的電路,其中每個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分在所述多個(gè)標(biāo)記存儲(chǔ)部分中有一個(gè)預(yù)先確定的源標(biāo)記存儲(chǔ)部分;以及對(duì)于所述每個(gè)標(biāo)記存儲(chǔ)部分,所述標(biāo)記變更裝置可將預(yù)先確定的源標(biāo)記存儲(chǔ)部分中存放的標(biāo)記移到該標(biāo)記存儲(chǔ)部分中。
7.根據(jù)前述任一權(quán)利要求的電路,其中每個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分在多個(gè)標(biāo)記存儲(chǔ)部分中有兩個(gè)或更多個(gè)預(yù)先確定的源標(biāo)記存儲(chǔ)部分;以及對(duì)于所述每個(gè)標(biāo)記存儲(chǔ)部分,所述標(biāo)記變更裝置可從所述兩個(gè)或更多個(gè)預(yù)先確定的源標(biāo)記存儲(chǔ)部分中選擇一個(gè),并將選中的那個(gè)源標(biāo)記存儲(chǔ)部分中存放的標(biāo)記移到該標(biāo)記存儲(chǔ)部分中。
8.根據(jù)權(quán)利要求6或7的電路,其中,對(duì)于每個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分,該這樣的或一個(gè)這樣的源標(biāo)記存儲(chǔ)部分為與相鄰的那個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分。
9.根據(jù)權(quán)利要求6至8中之一的電路,其中,對(duì)于每個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分,該這樣的或一個(gè)這樣的源標(biāo)記存儲(chǔ)部分為最末端物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分。
10.根據(jù)權(quán)利要求6至9中之一的電路,其中,對(duì)于每個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分,該這樣的或一個(gè)這樣的源標(biāo)記存儲(chǔ)部分為再下一個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分。
11.根據(jù)權(quán)利要求6至10中之一的電路,其中,對(duì)于每個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分,該這樣的或一個(gè)這樣的源標(biāo)記存儲(chǔ)部分為倒數(shù)第二個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分。
12.根據(jù)前述任一權(quán)利要求的電路,其中還包括復(fù)位裝置,用來(lái)將每個(gè)物理寄存器內(nèi)的標(biāo)記設(shè)置為預(yù)先選定的分配給該物理寄存器的初始邏輯寄存器ID。
13.根據(jù)前述任一權(quán)利要求的電路,其中包括多個(gè)標(biāo)記管理單元,分別對(duì)應(yīng)于物理寄存器,其中每個(gè)標(biāo)記管理單元包含對(duì)應(yīng)于該單元相應(yīng)物理寄存器的所述標(biāo)記存儲(chǔ)部分,每個(gè)標(biāo)記管理單元可以改變存放在其自身單元所述標(biāo)記存儲(chǔ)部分的標(biāo)記;兩個(gè)或更多個(gè)所述標(biāo)記管理單元,可以同時(shí)引起所述映象關(guān)系的所述改變。
14.根據(jù)權(quán)利要求13的電路,其中每個(gè)標(biāo)記管理單元中包含一個(gè)復(fù)用器,該復(fù)用器有用于接收不同備選標(biāo)記值的多個(gè)輸入,還有一個(gè)輸出與該單元中所述標(biāo)記存儲(chǔ)部分相連;該復(fù)用器可根據(jù)送到該標(biāo)記管理單元上的一個(gè)或多個(gè)控制信號(hào),將從不同的備選標(biāo)記值中被選取的一個(gè)送到所述標(biāo)記存儲(chǔ)部分存放。
15.根據(jù)權(quán)利要求14的電路,其中還包括物理寄存器指定裝置,用于從所述多個(gè)寄存器中指定至少一個(gè)物理寄存器作為靜態(tài)命名的物理寄存器,其所述標(biāo)記不能通過所述標(biāo)記變更裝置進(jìn)行改變,其中該這樣的或一個(gè)這樣的控制信號(hào)表明那個(gè)標(biāo)記管理單元相應(yīng)的物理寄存器是否為這樣的一個(gè)靜態(tài)命名寄存器。
16.根據(jù)權(quán)利要求14或15的電路,其中每個(gè)物理寄存器相對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分在多個(gè)標(biāo)記存儲(chǔ)部分中有兩個(gè)或更多個(gè)預(yù)先確定的源標(biāo)記存儲(chǔ)部分;以及對(duì)于所述每個(gè)標(biāo)記存儲(chǔ)部分,所述標(biāo)記變更裝置可從所述兩個(gè)或更多個(gè)預(yù)先確定的源標(biāo)記存儲(chǔ)部分中選擇一個(gè),并將選中的那個(gè)源標(biāo)記存儲(chǔ)部分中存放的標(biāo)記移到該標(biāo)記存儲(chǔ)部分中;所述標(biāo)記管理單元根據(jù)所述控制信號(hào)中至少一個(gè)來(lái)選擇所述源標(biāo)記存儲(chǔ)部分。
17.根據(jù)前述任一權(quán)利要求的電路,其中所述寄存器選擇裝置中包含多個(gè)比較器單元,分別與物理寄存器對(duì)應(yīng),當(dāng)某個(gè)物理寄存器內(nèi)存放的標(biāo)記與所述收到的邏輯寄存器ID匹配時(shí),比較器單元可產(chǎn)生一個(gè)選擇信號(hào)。
18.根據(jù)權(quán)利要求17的電路,其中還包括多個(gè)輸出單元,每一個(gè)對(duì)應(yīng)物理寄存器的一個(gè)不同的位,而且每一個(gè)與所述多個(gè)比較器單元相連以接收每個(gè)比較器單元產(chǎn)生的所述選擇信號(hào);每個(gè)輸出單元對(duì)所述比較器單元之一產(chǎn)生的所述選擇信號(hào)作出響應(yīng),以讀取該比較器單元相對(duì)應(yīng)的所述物理寄存器存放的數(shù)據(jù)字的所述相對(duì)應(yīng)的位。
19.根據(jù)權(quán)利要求18的電路,其中所述寄存器選擇裝置以及所述多個(gè)輸出單元屬于該電路的第一讀取端口;該電路中還可以增加至少一個(gè)包含這樣的寄存器選擇裝置和這樣的多個(gè)輸出單元的讀取端口。
20.根據(jù)前述任一權(quán)利要求的電路,適用于有一系列用于執(zhí)行指令的管道級(jí)的處理器,其中所述多個(gè)標(biāo)記存儲(chǔ)部分組成位于該系列第一管道級(jí)的第一組標(biāo)記存儲(chǔ)部分,以存放各工作標(biāo)記;該電路中還包括第二組標(biāo)記存儲(chǔ)部分,分別對(duì)應(yīng)于物理寄存器,用于存放與工作標(biāo)記一一對(duì)應(yīng)的各完成標(biāo)記;完成標(biāo)記更新裝置,與所述第二組標(biāo)記存儲(chǔ)部分連接,用于隨指令沿管道級(jí)往前執(zhí)行時(shí)更新完成標(biāo)記;以及工作標(biāo)記重載裝置,與所述第一及第二組標(biāo)記存儲(chǔ)部分連接,若最后一條有效指令在出現(xiàn)異常情況之前已到達(dá)最后一個(gè)管道級(jí),該裝置可采用其相應(yīng)的完成標(biāo)記對(duì)每個(gè)工作標(biāo)記進(jìn)行重載。
21.根據(jù)權(quán)利要求20的電路,其中所述完成標(biāo)記更新裝置中包含一系列寄存器級(jí),除所述最后一個(gè)管道級(jí)以外的每個(gè)管道級(jí)都對(duì)應(yīng)于所述系列寄存器級(jí)中之一,所述第一寄存器級(jí)用于接收并存放至少一個(gè)標(biāo)記變更參數(shù),該參數(shù)表示當(dāng)一條指令進(jìn)入管道時(shí)所應(yīng)用的一次標(biāo)記變更,除所述第一寄存器級(jí)以外的每個(gè)所述寄存器級(jí)與相鄰前一級(jí)連接,以便接收并存放所述至少一個(gè)標(biāo)記變更參數(shù)。
22.根據(jù)權(quán)利要求21的電路,其中,當(dāng)管道級(jí)i中出現(xiàn)異常時(shí),所述完成標(biāo)記更新裝置可根據(jù)寄存器級(jí)i+1及其之后的任意寄存器級(jí)內(nèi)所存的標(biāo)記變更參數(shù)更新完成標(biāo)記,避免根據(jù)寄存器級(jí)0至i內(nèi)存放的標(biāo)記變更參數(shù)更新完成標(biāo)記。
23.根據(jù)權(quán)利要求21或22的電路,其中,當(dāng)管道級(jí)i中出現(xiàn)停滯時(shí),所述完成標(biāo)記更新裝置可根據(jù)寄存器級(jí)i+1及其之后的任意寄存器級(jí)內(nèi)所存的標(biāo)記變更參數(shù),在停滯期間更新完成標(biāo)記,保持寄存器級(jí)0至i內(nèi)存放的標(biāo)記變更參數(shù)不變,直至停滯解除,使得停滯解除時(shí)那些保持不變的標(biāo)記變更參數(shù)可用于更新完成標(biāo)記。
24.寄存器文檔電路,其中包括多個(gè)物理寄存器;多個(gè)標(biāo)記存儲(chǔ)部分,分別對(duì)應(yīng)于物理寄存器,其中每一個(gè)部分存放表示一個(gè)邏輯寄存器ID的標(biāo)記,該ID被分配給相對(duì)應(yīng)的物理寄存器;寄存器選擇裝置,用于接收邏輯寄存器ID并選擇所述標(biāo)記與收到的邏輯寄存器ID相匹配的那一個(gè)物理寄存器;標(biāo)記變更裝置,用于變更所存放的標(biāo)記,從而改變所述物理寄存器之一與至少一個(gè)邏輯寄存器ID之間的映象關(guān)系;物理寄存器指定裝置,用于從所述多個(gè)寄存器中指定至少一個(gè)物理寄存器作為靜態(tài)命名的物理寄存器,其所述標(biāo)記不能通過所述標(biāo)記變更裝置進(jìn)行改變。
25.寄存器文檔電路,其中包括多個(gè)物理寄存器;多個(gè)標(biāo)記管理單元,分別對(duì)應(yīng)于物理寄存器,其中每個(gè)標(biāo)記管理單元包含一個(gè)標(biāo)記存儲(chǔ)部分,用于存放表示分配給該單元相應(yīng)物理寄存器的邏輯寄存器ID的標(biāo)記,每個(gè)標(biāo)記管理單元可以改變存放在其自身單元所述標(biāo)記存儲(chǔ)部分的標(biāo)記;寄存器選擇裝置,用于接收邏輯寄存器ID并選擇所述標(biāo)記與收到的邏輯寄存器ID相匹配的那一個(gè)物理寄存器;兩個(gè)或更多個(gè)所述標(biāo)記管理單元,可以同時(shí)改變所述物理寄存器之一與至少一個(gè)邏輯寄存器ID之間的映象關(guān)系。
26.適用于有一系列用于執(zhí)行指令的管道級(jí)的處理器的寄存器文檔電路,其中包括多個(gè)物理寄存器;第一組標(biāo)記存儲(chǔ)部分,分別對(duì)應(yīng)于物理寄存器,位于系列中第一管道級(jí),每一個(gè)用于存放表示分配給相應(yīng)物理寄存器的邏輯寄存器ID的一個(gè)工作標(biāo)記;第二組標(biāo)記存儲(chǔ)部分,分別對(duì)應(yīng)于物理寄存器,用于分別存放與工作標(biāo)記一一對(duì)應(yīng)的完成標(biāo)記;完成標(biāo)記更新裝置,與所述第二組標(biāo)記存儲(chǔ)部分連接,用于隨指令沿管道級(jí)往前執(zhí)行時(shí)更新完成標(biāo)記;以及工作標(biāo)記重載裝置,與所述第一及第二組標(biāo)記存儲(chǔ)部分連接,若最后一條有效指令在出現(xiàn)異常情況之前已到達(dá)最后一個(gè)管道級(jí),該裝置可采用其相應(yīng)的完成標(biāo)記對(duì)每個(gè)工作標(biāo)記進(jìn)行重載。
27.一種處理器,其中包含根據(jù)前述任一權(quán)利要求的寄存器文檔電路。
28.一種寄存器重命名方法,適用于有多個(gè)物理寄存器的寄存器文檔電路,所述方法包括將標(biāo)記存放在分別對(duì)應(yīng)于物理寄存器的多個(gè)標(biāo)記存儲(chǔ)部分,所存的每一個(gè)標(biāo)記表示分配給相應(yīng)物理寄存器的一個(gè)邏輯寄存器ID;通過將至少一個(gè)標(biāo)記存儲(chǔ)部分存放的標(biāo)記轉(zhuǎn)移到另一個(gè)所述標(biāo)記存儲(chǔ)部分,變更所存放的標(biāo)記,從而改變所述物理寄存器之一與至少一個(gè)邏輯寄存器ID之間的映象關(guān)系。
29.根據(jù)權(quán)利要求28的一種方法,其中包括使所存的標(biāo)記在與部分或全部多個(gè)物理寄存器分別對(duì)應(yīng)的標(biāo)記存儲(chǔ)部分中循環(huán)移動(dòng)。
30.參照附圖在前面進(jìn)行了充分說(shuō)明的寄存器文檔電路。
31.參照附圖在前面進(jìn)行了充分說(shuō)明的一種處理器。
32.參照附圖在前面進(jìn)行了充分說(shuō)明的一種寄存器重命名方法。
全文摘要
可用于處理器或處理器內(nèi)核中的寄存器文檔電路,它包含多個(gè)物理寄存器(3文檔編號(hào)G06F9/38GK1357825SQ0113728
公開日2002年7月10日 申請(qǐng)日期2001年11月2日 優(yōu)先權(quán)日2000年11月2日
發(fā)明者喬納森·邁克爾·哈里斯, 艾德里安·菲利普·懷斯, 奈杰爾·彼德·托法姆 申請(qǐng)人:斯羅揚(yáng)有限公司