專利名稱:在分支預(yù)測失敗時(shí)使用rob恢復(fù)rat內(nèi)容的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器體系結(jié)構(gòu)技術(shù)領(lǐng)域,特別涉及一種在分支預(yù)測失敗時(shí)使用重排序緩沖器(Reorder Buffer,簡稱為ROB)恢復(fù)寄存器別名表(Register Alias Table, 簡稱為RAT)內(nèi)容的系統(tǒng)。
背景技術(shù):
現(xiàn)代的微處理器體系結(jié)構(gòu),大多采用了超標(biāo)量(Super kale)技術(shù),通過在一個(gè)周期同時(shí)執(zhí)行多條指令的方法來提高程序執(zhí)行性能。要想在一個(gè)周期內(nèi)能執(zhí)行多條指令,就需要解決指令間的相關(guān)性問題。指令的相關(guān)性分為控制相關(guān)和數(shù)據(jù)相關(guān)。其中數(shù)據(jù)相關(guān)又分為寫后讀(RAW)相關(guān)(又稱真數(shù)據(jù)相關(guān)),讀后寫(WAR)相關(guān)(又稱偽相關(guān))和寫后寫(WAW) 相關(guān)(又稱結(jié)構(gòu)相關(guān))三種。寄存器重命名(Register Renaming)技術(shù)通過將同一個(gè)邏輯寄存器映射到多個(gè)物理寄存器的方式,解決了程序運(yùn)行中的讀后寫(WAR)和寫寫(WAW)數(shù)據(jù)相關(guān),大大提高了指令的并行性。一般來說,為邏輯寄存器分配用于重命名的物理寄存器是通過寄存器別名表RAT (Register Alias Table)來實(shí)現(xiàn)。RAT中保留了當(dāng)前時(shí)刻邏輯寄存器和物理寄存器的最新映射關(guān)系,RAT用邏輯寄存器地址來尋址,它存儲的數(shù)據(jù)(即,RAT表項(xiàng)的內(nèi)容)是邏輯寄存器對應(yīng)的物理寄存器地址。就是說,在微處理器運(yùn)行的任意時(shí)刻,都有一個(gè)邏輯寄存器到物理寄存器的映射關(guān)系,而RAT就是保存這個(gè)映射關(guān)系的模塊。通過使用邏輯寄存器地址查找 RAT就可以知道當(dāng)前是哪個(gè)物理寄存器代表這個(gè)邏輯寄存器,使用這個(gè)邏輯寄存器為源操作數(shù)的指令就要從這個(gè)物理寄存器中讀取數(shù)據(jù);而使用這個(gè)邏輯寄存器為目標(biāo)操作數(shù)的指令會獲得一個(gè)空閑的物理寄存器用來保存這個(gè)目標(biāo)操作數(shù),同時(shí)要修改這個(gè)邏輯寄存器在 RAT中的對應(yīng)表項(xiàng),將它對應(yīng)的物理寄存器地址改為該指令獲得的空閑物理寄存器地址,在該指令之后的指令如果要讀取這個(gè)邏輯寄存器,就會從修改后的物理寄存器地址中讀取。為了保證微處理器可以進(jìn)行精確的異常返回,采用亂序執(zhí)行技術(shù)的微處理器使用重排序緩沖器ROB(ReOrder Buffer)按照指令執(zhí)行的順序保存正在執(zhí)行的指令的信息,并對執(zhí)行完成的指令按照指令執(zhí)行的順序進(jìn)行提交。所謂的提交是表示確認(rèn)指令和該指令之前的指令都已經(jīng)執(zhí)行完成,亂序執(zhí)行的微處理器與順序執(zhí)行的編程模型的執(zhí)行結(jié)果在提交階段達(dá)成了一致。重排序緩沖器ROB是用于亂序執(zhí)行后恢復(fù)指令原來順序的一種硬件結(jié)構(gòu),以達(dá)到指令結(jié)果順序提交的目的。可以把重排序緩沖器看作是一個(gè)包含頭指針和尾指針的堆棧FIFO。每條指令進(jìn)入流水線的時(shí)候,按照程序的最先順序都在重排序緩沖器中依次占據(jù)了一列條目,等指令執(zhí)行完畢,按照先入先出的順序依次提交指令。當(dāng)發(fā)生中斷或者異常行為時(shí),也能恢復(fù)原來的執(zhí)行順序。寄存器重命名有兩種主要的實(shí)現(xiàn)方式,一種是把物理寄存器分為體系結(jié)構(gòu)寄存器和重命名寄存器兩種。其中體系結(jié)構(gòu)寄存器與邏輯寄存器是一一對應(yīng)的,表示的是指令提交后邏輯寄存器的狀態(tài);重命名寄存器與邏輯寄存器可以是多對一的映射關(guān)系,在指令提交前臨時(shí)保存指令的執(zhí)行結(jié)果。指令的目標(biāo)邏輯寄存器在寄存器重命名時(shí)被分配一個(gè)重命名寄存器,而執(zhí)行完成后目標(biāo)操作數(shù)會被從重命名寄存器中寫回到體系結(jié)構(gòu)寄存器中,而重命名寄存器會被釋放。在這種方式下,每個(gè)邏輯寄存器和它所對應(yīng)的RAT表項(xiàng)雖然可以對應(yīng)多個(gè)重命名寄存器,但是只有一個(gè)體系結(jié)構(gòu)寄存器與它對應(yīng),當(dāng)微處理器復(fù)位時(shí),各個(gè) RAT表項(xiàng)的內(nèi)容就被復(fù)位成與其對應(yīng)的體系結(jié)構(gòu)寄存器的地址。另一種實(shí)現(xiàn)方式是不將物理寄存器固定地劃分為體系結(jié)構(gòu)寄存器和重命名寄存器,而在RAT之外再加入一個(gè)體系結(jié)構(gòu)寄存器映射表保存物理寄存器與體系結(jié)構(gòu)寄存器的映射關(guān)系。指令在寄存器重命名時(shí)被分配一個(gè)空閑的物理寄存器用來保存目標(biāo)操作數(shù),而在提交時(shí)這個(gè)物理寄存器地址會被寫入體系結(jié)構(gòu)寄存器映射表而被確認(rèn)為體系結(jié)構(gòu)寄存器。被認(rèn)為是體系結(jié)構(gòu)寄存器的物理寄存器不能用于寄存器重命名直到它被別的物理寄存器替換出體系結(jié)構(gòu)寄存器映射表,此時(shí)該物理寄存器又成了一個(gè)空閑的重命名寄存器。在這種方式下,每個(gè)邏輯寄存器在微處理器運(yùn)行時(shí)可以和任何一個(gè)物理寄存器建立對應(yīng)關(guān)系,但是每個(gè)邏輯寄存器還是有一個(gè)對應(yīng)的物理寄存器作為它的默認(rèn)體系結(jié)構(gòu)寄存器,當(dāng)微處理器復(fù)位時(shí),各個(gè)RAT表項(xiàng)的內(nèi)容就被復(fù)位成與邏輯寄存器相對應(yīng)的默認(rèn)體系結(jié)構(gòu)寄存器的地址。這兩種實(shí)現(xiàn)方式下文還會提到,為了表述簡化,把上述第一種方式稱為重命名實(shí)現(xiàn)方式A,而把上述第2種方式稱為重命名實(shí)現(xiàn)方式B?,F(xiàn)代的微處理器同時(shí)還使用了分支預(yù)測(Branch Predict)技術(shù)和推測執(zhí)行 (Speculation Execution)技術(shù),使得未確定分支的指令可以提前被微處理器加載和執(zhí)行, 由此解決指令的控制相關(guān)。但是這產(chǎn)生了一個(gè)問題如果分支預(yù)測錯(cuò)誤,則推測執(zhí)行的指令也要被取消,在寄存器重命名時(shí)為他們分配的物理寄存器要被收回,因此在RAT中保存的邏輯寄存器和物理寄存器的映射關(guān)系要被恢復(fù)到推測執(zhí)行錯(cuò)誤的指令執(zhí)行之前的狀態(tài)。一種簡單的方法是等到分支指令到達(dá)提交階段再判斷預(yù)測是否正確,因?yàn)橹噶畹奶峤淮砦⑻幚砥鞯臓顟B(tài)已經(jīng)確認(rèn),如果此時(shí)發(fā)現(xiàn)指令的分支預(yù)測錯(cuò)誤,可以直接取消指令中正在執(zhí)行的所有指令。對于上述的第一種寄存器重命名實(shí)現(xiàn)方式,即重命名方式A,RAT 將被恢復(fù)到微處理器復(fù)位后的狀態(tài),即RAT的所有表項(xiàng)都是指向與它們一一對應(yīng)的體系結(jié)構(gòu)寄存器。而對于上述的第二種寄存器重命名實(shí)現(xiàn)方式,即重命名方式B,將體系結(jié)構(gòu)寄存器映射表的內(nèi)容直接拷到RAT中就可實(shí)現(xiàn)對RAT的恢復(fù)。這種方法的實(shí)現(xiàn)十分簡單,但是在亂序執(zhí)行的微處理器中,從指令執(zhí)行完畢到指令提交可能需要很多個(gè)周期,如果把對分支預(yù)測錯(cuò)誤的糾正放在提交階段進(jìn)行,則在分支指令執(zhí)行之后到提交之前這段時(shí)間,微處理器一直在從錯(cuò)誤的地址取值,而這些指令是要被取消的,這相當(dāng)于這段時(shí)間被浪費(fèi)了,降低了處理器的性能。常用的恢復(fù)RAT的方法是為每個(gè)基本塊設(shè)置一個(gè)單獨(dú)的RAT,基本塊內(nèi)的指令地址是連續(xù)的,且分支指令是基本塊的最后一條指令(如果微處理器有分支延遲槽,那么延遲槽內(nèi)的指令就是基本塊內(nèi)的最后一條指令),在分支指令的目標(biāo)地址處(不論分支是否發(fā)生)的指令與該分支指令處于不同的基本塊中,基本塊切換時(shí)RAT也會切換。這樣為微處理器中的每個(gè)基本塊保留了一個(gè)RAT,當(dāng)微處理器發(fā)現(xiàn)分支預(yù)測錯(cuò)誤時(shí),會切換回預(yù)測錯(cuò)誤的那條分支指令目標(biāo)所在基本塊所對應(yīng)的RAT,邏輯寄存器的映射關(guān)系就返回到了預(yù)測錯(cuò)誤的分支指令(對于某些體系結(jié)構(gòu)來說,還包括延遲槽中的指令)被重命名之后的狀態(tài)。這種方法需要設(shè)置多個(gè)RAT,并且每遇到一條分支指令就要進(jìn)行RAT的切換,而預(yù)測錯(cuò)誤時(shí)還要進(jìn)行切換。RAT由時(shí)序單元組成,需要有時(shí)鐘并且時(shí)刻處于通電(power on)狀態(tài),增加了功耗。而在寄存器重命名時(shí)需要選擇使用哪個(gè)RAT的結(jié)果和將重命名后的狀態(tài)寫回哪個(gè)RAT中,也增加了重命名時(shí)的時(shí)序開銷。
發(fā)明內(nèi)容
本發(fā)明目的在于克服現(xiàn)有技術(shù)的在功耗和時(shí)序上的不足,利用從發(fā)現(xiàn)分支預(yù)測錯(cuò)誤到重命名單元重新開始工作之間的空閑時(shí)間,根據(jù)ROB中已保存的信息,使用純組合邏輯恢復(fù)RAT。由于只在分支預(yù)測錯(cuò)誤時(shí)工作,而現(xiàn)代微處理器在大多數(shù)情況下分支預(yù)測成功率很高(大于95%),純組合邏輯又沒有時(shí)鐘信號,所以可以減小動(dòng)態(tài)功耗。而由于不需要額外的保存信息,在不工作時(shí)這部分電路可以處于shutdown狀態(tài),所以也可以減小靜態(tài)功耗。因?yàn)橹挥幸粋€(gè)RAT,在重命名操作時(shí)不需要根據(jù)基本塊進(jìn)行選擇,因此在時(shí)序上也有一定提尚。根據(jù)本發(fā)明的第一方面,提供一種在分支預(yù)測失敗時(shí)使用重排序緩沖器ROB恢復(fù)寄存器別名表RAT內(nèi)容的系統(tǒng),所有的ROB項(xiàng)按照其地址被分成多個(gè)組,每個(gè)組包括預(yù)定數(shù)目的ROB項(xiàng)并且所述預(yù)定數(shù)目的ROB項(xiàng)互相之間沒有重疊,所述系統(tǒng)包括
用于產(chǎn)生指示RAT進(jìn)行更新操作的更新信號的定時(shí)裝置; 對應(yīng)于RAT中每個(gè)表項(xiàng)的映射關(guān)系恢復(fù)模塊,其中每個(gè)映射關(guān)系恢復(fù)模塊包括 分別對應(yīng)于每個(gè)ROB項(xiàng)的比較器,將保存在每個(gè)ROB項(xiàng)中的目標(biāo)邏輯地址與該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址進(jìn)行比較并且輸出指示二者是否相等的比較結(jié)果,其中保存在每個(gè)ROB項(xiàng)中的目標(biāo)邏輯地址與該ROB項(xiàng)所對應(yīng)的指令的目標(biāo)邏輯寄存器地址相等;
對應(yīng)于ROB項(xiàng)的每個(gè)組的組內(nèi)查找裝置,其接收每個(gè)組內(nèi)的ROB項(xiàng)所對應(yīng)的比較器輸出的比較結(jié)果,在這些比較結(jié)果中進(jìn)行查找并輸出查找結(jié)果;
用于ROB項(xiàng)的多個(gè)組的組間多選器,用于選出ROB項(xiàng)中的ROB尾項(xiàng)所在的組,所述ROB 尾項(xiàng)是發(fā)生錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng)(對于有分支延遲槽的微處理器來說,是延遲槽中的指令),并輸出該ROB尾項(xiàng)所在的組的組內(nèi)的比較器的比較結(jié)果;
特殊組內(nèi)查找裝置,接收所述組間多選器輸出的比較結(jié)果,并且基于所述組間多選器輸出的比較結(jié)果對所述ROB尾項(xiàng)所在組內(nèi)的比較器的比較結(jié)果進(jìn)行查找,并輸出查找結(jié)果;
全局查找裝置,用于基于所述組內(nèi)查找裝置輸出的查找結(jié)果和所述特殊組內(nèi)查找裝置輸出的查找結(jié)果輸出最終的查找結(jié)果,所述最終的查找結(jié)果指示在ROB中是否還有其目標(biāo)邏輯地址與該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的ROB 項(xiàng),以及在其目標(biāo)邏輯地址與該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的這些ROB項(xiàng)中對應(yīng)于應(yīng)該最晚被執(zhí)行的其目標(biāo)寄存器地址與所述目標(biāo)邏輯地址相等的指令的ROB項(xiàng)的地址;
RAT表項(xiàng)恢復(fù)裝置,接收全局查找裝置輸出的最終的查找結(jié)果,輸出該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。根據(jù)本發(fā)明的系統(tǒng),其中在對所述ROB項(xiàng)進(jìn)行分組的過程中,每個(gè)組內(nèi)的ROB項(xiàng)的地址是相鄰的,并且所有的ROB項(xiàng)中的每一個(gè)都在且只在一個(gè)組中。根據(jù)本發(fā)明的系統(tǒng),當(dāng)所述定時(shí)裝置中的計(jì)數(shù)器的計(jì)數(shù)值達(dá)到預(yù)定的值時(shí),該定時(shí)裝置發(fā)出更新信號以指示RAT根據(jù)其各個(gè)表項(xiàng)所對應(yīng)的映射關(guān)系恢復(fù)模塊輸出更新各個(gè)RAT表項(xiàng)原來所保存的物理寄存器地址,其中所述定時(shí)裝置的定時(shí)時(shí)間不超過當(dāng)發(fā)生分支預(yù)測錯(cuò)誤時(shí)微處理器從新地址重新加載指令的時(shí)間。根據(jù)本發(fā)明的系統(tǒng),其中所述比較器輸出的比較結(jié)果指示該比較器所對應(yīng)的ROB 項(xiàng)所存儲的目標(biāo)邏輯地址與該比較器所在的映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址是否相等,如果該比較器所對應(yīng)的ROB項(xiàng)已經(jīng)被取消,則比較結(jié)果指示為不相等。根據(jù)本發(fā)明的系統(tǒng),其中所述組內(nèi)查找裝置按照其所對應(yīng)的組內(nèi)的ROB項(xiàng)地址由組內(nèi)最大遞減到組內(nèi)最小的順序查找是否有ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,如果有,則輸出指示這個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,如果有多個(gè)ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,輸出指示最先找到的那個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,否則輸出指示查找失敗的信號。根據(jù)本發(fā)明的系統(tǒng),其中所述組間多選器根據(jù)修改后的ROB尾指針,從已有的ROB 分組中選擇出ROB尾項(xiàng)所在的組。根據(jù)本發(fā)明的系統(tǒng),在沒有轉(zhuǎn)移延遲槽的微處理器中,修改后的ROB尾指針指向預(yù)測錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng);在有轉(zhuǎn)移延遲槽的微處理器中,修改后的ROB尾指針指向延遲槽中的指令所對應(yīng)的ROB項(xiàng)。根據(jù)本發(fā)明的系統(tǒng),其中所述特殊組內(nèi)查找裝置接收組間多選器的輸出結(jié)果,并以所述ROB尾項(xiàng)為起點(diǎn),按照ROB項(xiàng)地址由大到小的順序查找是否有ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,如果有,則輸出指示這個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,如果有多個(gè)ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,則輸出指示最先找到的那個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,否則輸出指示查找失敗的信號,其中對應(yīng)于其地址大于ROB尾項(xiàng)地址的ROB項(xiàng)的比較器的比較結(jié)果將不會被查找。根據(jù)本發(fā)明的系統(tǒng),其中所述全局查找裝置首先根據(jù)所述特殊組內(nèi)查找裝置的輸出的指示查找是否成功的信號來判斷特殊組內(nèi)查找裝置是否找到了比較器的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,就將特殊組內(nèi)查找裝置找到的ROB項(xiàng)的地址作為輸出并且輸出表示查找成功的信號,如果特殊組內(nèi)查找裝置沒有找到比較器的比較結(jié)果指示為相等的 ROB項(xiàng),則按照指令依次進(jìn)入ROB的方向,判斷組間多選器所選擇的組的下一個(gè)組所對應(yīng)的組內(nèi)查找裝置是否找到了比較器的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,將這個(gè)組內(nèi)查找裝置找到的ROB項(xiàng)的地址作為輸出并且輸出指示查找成功的信號,如果沒有找到,繼續(xù)判斷下一個(gè)組內(nèi)查找裝置的結(jié)果,直到循環(huán)到組間多選器找到的ROB組為止,此時(shí)全局查找裝置查找組間多選器所選擇的ROB組的組內(nèi)查找裝置是否找到比較器比較結(jié)果指示為相等的ROB項(xiàng),如果找到,將這一 ROB項(xiàng)的地址作為輸出并且輸出指示查找成功的信號, 否則全局查找裝置輸出指示查找失敗的信號,并結(jié)束查找。根據(jù)本發(fā)明的系統(tǒng),其中如果全局查找裝置輸出指示查找成功的信號,則所述RAT 表項(xiàng)恢復(fù)裝置將所述全局查找裝置輸出的ROB項(xiàng)地址前面再加一位并將此位設(shè)為‘1’以作為該RAT表項(xiàng)中所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容;如果全局查找裝置輸出指示查找失敗的信號,則RAT表項(xiàng)恢復(fù)裝置就將該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)體系結(jié)構(gòu)寄存器的地址作為該RAT表項(xiàng)中所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。
根據(jù)本發(fā)明的系統(tǒng),其中所述每個(gè)映射關(guān)系恢復(fù)模塊的結(jié)構(gòu)是相同的。根據(jù)本發(fā)明的系統(tǒng),其中所述的組內(nèi)查找裝置與特殊組內(nèi)查找裝置的區(qū)別是,組內(nèi)查找裝置的查找對象是固定的,且與修改后的ROB尾指針無關(guān);而特殊組內(nèi)查找裝置的查找對象是由組間多選器根據(jù)修改后的ROB尾指針從所有的已有ROB組中選出的ROB尾項(xiàng)所在的組,且在查找時(shí)以ROB尾項(xiàng)為起始點(diǎn),其地址大于ROB尾項(xiàng)的地址的ROB項(xiàng)不會被查找。在本發(fā)明中,每個(gè)ROB項(xiàng)所對應(yīng)的比較器所使用的目標(biāo)邏輯地址在采用常用的恢復(fù)RAT方法的微處理器中也是存在于ROB中的,用于在指令提交時(shí)對寄存器重命名進(jìn)行確認(rèn)。本發(fā)明只是將這些信息又用于RAT恢復(fù)上,而沒有額外為ROB增加新的硬件保存這些內(nèi)容。根據(jù)本發(fā)明的另一方面,提供一種在分支預(yù)測失敗時(shí)使用重排序緩沖器ROB恢復(fù)寄存器別名表RAT內(nèi)容的方法,所有的ROB項(xiàng)按照其地址被分成多個(gè)組,每個(gè)組包括預(yù)定數(shù)目的ROB項(xiàng)并且所述預(yù)定數(shù)目的ROB項(xiàng)互相之間沒有重疊,所述方法包括以下步驟
(I)提供用于產(chǎn)生指示RAT進(jìn)行更新操作的更新信號;
(II)將各個(gè)ROB項(xiàng)中保存的目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址進(jìn)行比較并且輸指示二者是否相等的出比較結(jié)果,其中保存在各個(gè)ROB項(xiàng)中的目標(biāo)邏輯地址與各個(gè)ROB項(xiàng)所對應(yīng)的指令的目標(biāo)邏輯寄存器地址相等;
(III)對ROB項(xiàng)的每個(gè)組,對該組內(nèi)的各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果進(jìn)行查找,并輸出查找結(jié)果;
(IV)選出ROB項(xiàng)中的ROB尾項(xiàng)所在的組,所述ROB尾項(xiàng)是發(fā)生錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng),并輸出該ROB尾項(xiàng)所在的組的組內(nèi)的各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果;
(V)基于所述ROB尾項(xiàng)所在的組的組內(nèi)的各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果,對所述ROB尾項(xiàng)所在組內(nèi)的比較器的比較結(jié)果進(jìn)行查找,并輸出查找結(jié)果;
(VI)基于步驟(III)中的查找結(jié)果和步驟(V)中的查找結(jié)果輸出最終的查找結(jié)果,所述最終的查找結(jié)果指示在ROB中是否還有其目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的ROB項(xiàng),以及在其目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的這些ROB項(xiàng)中對應(yīng)于應(yīng)該最晚被執(zhí)行的其目標(biāo)寄存器地址與所述目標(biāo)邏輯地址相等的指令的ROB項(xiàng)的地址;
(VII)基于步驟(VI)中的最終的查找結(jié)果,根據(jù)步驟(I)中的指示RAT進(jìn)行更新操作的更新信號輸出要被恢復(fù)的RAT表項(xiàng)所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。根據(jù)本發(fā)明的方法,其中在對所述ROB項(xiàng)進(jìn)行分組的過程中,每個(gè)組內(nèi)的ROB項(xiàng)的地址是相鄰的,并且所有的ROB項(xiàng)中的每一個(gè)都在且只在一個(gè)組中。根據(jù)本發(fā)明的方法,其中使用定時(shí)裝置來提供指示RAT進(jìn)行更新操作的更新信號,當(dāng)所述定時(shí)裝置中的計(jì)數(shù)器的計(jì)數(shù)值達(dá)到預(yù)定的值時(shí),該定時(shí)裝置發(fā)出更新信號以指示RAT根據(jù)其各個(gè)表項(xiàng)所對應(yīng)的映射關(guān)系恢復(fù)模塊的輸出更新各個(gè)RAT表項(xiàng)原來所保存的物理寄存器地址,其中所述定時(shí)裝置的定時(shí)時(shí)間不超過當(dāng)發(fā)生分支預(yù)測錯(cuò)誤時(shí)微處理器從新地址重新加載指令的時(shí)間。根據(jù)本發(fā)明的方法,其中步驟(II)進(jìn)一步包括輸出指示ROB項(xiàng)所存儲的目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址是否相等的信號,如果ROB項(xiàng)已經(jīng)被取消,則輸出指示比較結(jié)果為不相等的信號。根據(jù)本發(fā)明的方法,其中步驟(III)進(jìn)一步包括按照ROB項(xiàng)的每個(gè)組內(nèi)的ROB項(xiàng)的地址由組內(nèi)最大遞減到組內(nèi)最小的順序查找是否有ROB項(xiàng)所對應(yīng)的比較結(jié)果指示為相等,如果有,則輸出指示這個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,如果有多個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果指示為相等,輸出指示最先找到的那個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,否則輸出指示查找失敗的信號。根據(jù)本發(fā)明的方法,其中步驟(IV)進(jìn)一步包括根據(jù)修改后的ROB尾指針,從已有的ROB分組中選擇出ROB尾項(xiàng)所在的組。根據(jù)本發(fā)明的方法,其中所述修改后的ROB尾指針指向所述ROB尾項(xiàng),在分支預(yù)測錯(cuò)誤時(shí)根據(jù)分支隊(duì)列對ROB尾指針進(jìn)行修改,在沒有轉(zhuǎn)移延遲槽的微處理器中,修改后的 ROB尾指針指向預(yù)測錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng);在有轉(zhuǎn)移延遲槽的微處理器中,修改后的ROB尾指針指向延遲槽中的指令所對應(yīng)的ROB項(xiàng)。根據(jù)本發(fā)明的方法,其中步驟(V)進(jìn)一步包括以所述ROB尾項(xiàng)為起點(diǎn),按照ROB項(xiàng)地址由大到小的順序查找ROB尾項(xiàng)所在的組內(nèi)是否有ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,如果有,則輸出指示這個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,如果有多個(gè)ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,則輸出指示最先找到的那個(gè)ROB 項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,其中其地址大于ROB尾項(xiàng)地址的ROB項(xiàng)所對應(yīng)的比較結(jié)果將不會被查找。根據(jù)本發(fā)明的方法,其中步驟(VI)進(jìn)一步包括根據(jù)在步驟(V)中輸出的指示查找是否成功的信號來判斷在步驟(V)中是否找到了 ROB項(xiàng)所對應(yīng)的比較結(jié)果指示為相等的 ROB項(xiàng),如果找到,就將該ROB項(xiàng)所對應(yīng)的地址作為輸出,如果在步驟(V)中沒有找到ROB項(xiàng)所對應(yīng)的比較結(jié)果指示為相等的ROB項(xiàng),則按照指令依次進(jìn)入ROB的方向,判斷ROB尾項(xiàng)所在的組的下一個(gè)組內(nèi)是否找到了 ROB項(xiàng)對應(yīng)的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,將這個(gè)組內(nèi)最先找到的那個(gè)ROB項(xiàng)所對應(yīng)的地址作為輸出并且輸出指示查找成功的信號,如果沒有找到,繼續(xù)判斷下一個(gè)組否找到了 ROB項(xiàng)對應(yīng)的比較結(jié)果指示為相等的ROB項(xiàng),直到循環(huán)到ROB尾項(xiàng)所在的組為止,此時(shí)判斷ROB尾項(xiàng)所在組內(nèi)是否找到了 ROB項(xiàng)對應(yīng)的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,將這個(gè)組內(nèi)最先找到的那個(gè)ROB項(xiàng)的地址作為輸出并且輸出指示查找成功的信號,否則輸出指示查找失敗的信號,并結(jié)束查找。根據(jù)本發(fā)明的方法,其中如果在步驟(VI)中輸出指示查找成功的信號,則將在步驟(VI)中輸出的ROB項(xiàng)地址前面在加一位并將此位設(shè)為‘1’以作為該RAT表項(xiàng)中所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容;如果在步驟(VI)中輸出指示查找失敗的信號,則將該RAT表項(xiàng)所對應(yīng)體系結(jié)構(gòu)寄存器的地址作為該RAT表項(xiàng)中所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。根據(jù)本發(fā)明的方法,其中步驟(III)與步驟(V)的區(qū)別是,在步驟(III)中的查找對象是固定的,且與修改后的ROB尾指針無關(guān);而在步驟(V)中的查找對象是根據(jù)修改后的 ROB尾指針從所有的已有ROB組中選出的ROB尾項(xiàng)所在的組,且在查找時(shí)以ROB尾項(xiàng)為起始點(diǎn),其地址大于ROB尾項(xiàng)的地址的ROB項(xiàng)不會被查找。本發(fā)明具有下列優(yōu)點(diǎn)
1.本發(fā)明除了定時(shí)裝置外,不增加其它的時(shí)序邏輯,而是利用了 ROB原有的信息。由于只在分支預(yù)測失敗時(shí)才工作,在不工作時(shí)可以將所的輸入固定(比如用‘0’與所有信號做與操作),或者把電源關(guān)掉,從而降低功耗。2.本發(fā)明利用分支預(yù)測錯(cuò)誤時(shí)微處理器從新地址重新加載指令的時(shí)間進(jìn)行RAT 恢復(fù),沒有可見的時(shí)間開銷。而由于只有一個(gè)RAT,因此在寄存器重命名時(shí)控制邏輯比較簡單,時(shí)序開銷小。
圖1是本發(fā)明的實(shí)施例的ROB和RAT示意圖。圖2是本發(fā)明的實(shí)施例的總體結(jié)構(gòu)圖。圖3是本發(fā)明的實(shí)施例中所述的映射關(guān)系恢復(fù)模塊示意圖。圖4是根據(jù)本發(fā)明實(shí)施例的在發(fā)生分支預(yù)測錯(cuò)誤時(shí)取消指令后的ROB狀態(tài)示意圖。圖5是根據(jù)本發(fā)明實(shí)施例的在發(fā)生分支預(yù)測錯(cuò)誤時(shí)取消指令后的ROB狀態(tài)示意圖。圖6是根據(jù)本發(fā)明的用于在分支預(yù)測失敗時(shí)使用重排序緩沖器ROB恢復(fù)寄存器別名表RAT內(nèi)容的方法的流程圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)描述
在本實(shí)施例中,微處理器共有32個(gè)邏輯寄存器(Logical Register,以后簡稱為LR), 編號分別為LRO LR31。其中LRO為只讀寄存器,它的值恒為0,在實(shí)際應(yīng)用中,不需要對 LRO做重命名操作,所以實(shí)際要進(jìn)行重命名操作的是LRl LR31這31個(gè)邏輯寄存器。RAT包含31個(gè)表項(xiàng),分別對應(yīng)于LRl LR31這31個(gè)邏輯寄存器的地址,表項(xiàng)的內(nèi)容是當(dāng)前LRl LR31這31個(gè)邏輯寄存器所對應(yīng)的物理寄存器的地址。本實(shí)施例采用重命名實(shí)現(xiàn)方式A,體系結(jié)構(gòu)寄存器(Architectural Register,以后簡稱為AR)有31個(gè),編號為ARl AR31,分別對應(yīng)于LRl LR31這31個(gè)邏輯寄存器,而重命名寄存器(Rename Register,以后簡稱RR)與ROB項(xiàng)——對應(yīng),ROB共有32項(xiàng),相對的有32個(gè)重命名寄存器,編號為RRO RR31,分別對應(yīng)于ROBO R0B31這32個(gè)ROB項(xiàng)。物理寄存器地址共有6位,其中最高位表示該物理寄存器是屬于體系結(jié)構(gòu)寄存器還是重命名寄存器,當(dāng)最高位為0時(shí),表示這個(gè)物理寄存器是體系結(jié)構(gòu)寄存器,而當(dāng)最高位為1時(shí),表示這個(gè)寄存器是重命名寄存器,物理寄存器地址的后面5位是該物理寄存器在體系結(jié)構(gòu)寄存器組或重命名寄存器組中的編號。具體來說,物理寄存器地址000001 011111分別對應(yīng)于體系結(jié)構(gòu)寄存器ARl AR31,物理寄存器地址100000 111111分別對應(yīng)于重命名寄存器 RRO RR31,而因?yàn)檫壿嫾拇嫫鱈RO沒有對應(yīng)的物理寄存器,所以物理寄存器地址000000 是空地址,不對應(yīng)于任何物理寄存器。在ROB項(xiàng)中有一個(gè)專門的區(qū)域保存該ROB項(xiàng)中的指令的目標(biāo)操作數(shù)所對應(yīng)的邏輯寄存器地址,邏輯寄存器地址共有5位,其中00001 11111 分別對應(yīng)LRl LR31,由于LRO的值恒為0,所以LRO作為目標(biāo)操作數(shù)沒有意義,因此保存在ROB項(xiàng)中的邏輯寄存器地址00000也是個(gè)空地址,表示該項(xiàng)中的指令不會寫回目標(biāo)操作數(shù)到物理寄存器中,當(dāng)微處理器復(fù)位時(shí),所有ROB項(xiàng)中的邏輯寄存器地址都被設(shè)為00000,而當(dāng)ROB項(xiàng)中的指令被取消或被提交時(shí),該項(xiàng)的邏輯寄存器地址也被設(shè)為00000。圖1是本實(shí)施例在沒有發(fā)生分支預(yù)測失敗時(shí)ROB和RAT的狀態(tài)示意圖,其中左側(cè)為ROB中的邏輯寄存器地址,右側(cè)為RAT的內(nèi)容。ROB12 R0B20為有效的ROB項(xiàng),而RATI RAT31分別代表了 LRl LR31與物理寄存器的映射關(guān)系。以LR6為例,ROB12和R0B16的目標(biāo)邏輯寄存器地址都是LR6,則RAT6中保留的是LR6最新的映射關(guān)系即RR14(表示R0B14 所對應(yīng)的物理寄存器)。而沒有被ROB隊(duì)列中的指令所使用到的邏輯寄存器所對應(yīng)的RAT表項(xiàng)的內(nèi)容就是該邏輯寄存器所對應(yīng)的體系結(jié)構(gòu)寄存器的地址,比如RAT5的內(nèi)容就是AR5。 而沒有目標(biāo)邏輯寄存器的指令所在的ROB項(xiàng),比如ROBlSjn ROB隊(duì)列之外目前沒有被使用的ROB項(xiàng),比如ROBl 1,它們的邏輯寄存器地址都是00000。在本實(shí)施例中,映射關(guān)系恢復(fù)模塊按照ROB項(xiàng)的地址把ROB分為8組,第0組對應(yīng)于ROB的第0 3項(xiàng),其地址為00000 00011 ;第1組對應(yīng)于ROB的第4 7項(xiàng),其地址為00100 00111 ;第2組對應(yīng)于ROB的第8 11項(xiàng),其地址為01000 01011 ;第3組對應(yīng)于ROB的第12 15項(xiàng),其地址為01100 01111 ;第4組對應(yīng)于ROB的第16 19項(xiàng),其地址為10000 10011 ;第5組對應(yīng)于ROB的第20 23項(xiàng),其地址為10100 10111 ;第6 組對應(yīng)于ROB的第M 27項(xiàng),其地址為11000 11011 ;第7組對應(yīng)于ROB的第28 31 項(xiàng),其地址為11100 11111。從上面的描述可以看到,ROB項(xiàng)地址的第4 2位就是組的編號,而ROB項(xiàng)地址的第1 0位可以作為組內(nèi)編號。比如R0B7,地址為00111,第4 2 位為001,第1 0位為11,即第1組第3項(xiàng)。而R0B29,地址為11101,第4 2位為111, 第1 0位為01,即第7組第1項(xiàng)。從上述的分組方式可以看出,每個(gè)組內(nèi)的ROB項(xiàng)的地址是相鄰的,并且所有的ROB項(xiàng)中的每一個(gè)都在且只在一個(gè)組中。圖2是當(dāng)分支預(yù)測失敗時(shí)本實(shí)施例的工作過程(為了表示簡單,圖2中沒有畫出所有映射關(guān)系恢復(fù)模塊與ROB項(xiàng)的關(guān)系,但是所有ROB項(xiàng)的邏輯寄存器寫回地址都要進(jìn)入到所有的映射關(guān)系恢復(fù)模塊中),分支隊(duì)列判斷出分支預(yù)測錯(cuò)誤后,修改ROB尾項(xiàng)到發(fā)生錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng),并使定時(shí)裝置開始工作和各個(gè)映射關(guān)系恢復(fù)模塊同時(shí)開始工作,每個(gè)映射關(guān)系恢復(fù)模塊從各個(gè)ROB項(xiàng)得到它們要寫回的邏輯寄存器地址,經(jīng)過一定時(shí)間的操作后,輸出各個(gè)RAT表項(xiàng)的更新內(nèi)容,當(dāng)定時(shí)器達(dá)到預(yù)定值時(shí)(當(dāng)這個(gè)值不大于從分支預(yù)測失敗到新地址的指令進(jìn)入流水線的重命名階段之前的周期數(shù)時(shí),本實(shí)施例的延遲被隱藏,不會影響性能),發(fā)出更新信號,RAT中的各個(gè)表項(xiàng)各自把自己的內(nèi)容更新成與其對應(yīng)的映射關(guān)系恢復(fù)模塊的輸出。圖3是映射關(guān)系恢復(fù)模塊的內(nèi)部結(jié)構(gòu),對應(yīng)于每個(gè)RAT項(xiàng)的每個(gè)映射關(guān)系恢復(fù)模塊的結(jié)構(gòu)都是相同的,此處以RAT7對應(yīng)的映射關(guān)系恢復(fù)模塊為例,每個(gè)映射關(guān)系恢復(fù)模塊由以下部分組成
對應(yīng)于每個(gè)ROB項(xiàng)的比較器,用于判斷該ROB項(xiàng)要寫回的邏輯寄存器地址是否與該映射關(guān)系恢復(fù)模塊對應(yīng)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等(在圖3中就是LR7),如果相等,輸出‘1’,否則輸出‘0’。如果該比較器所對應(yīng)的ROB項(xiàng)已經(jīng)被取消,則比較結(jié)果輸出 ‘0,。針對ROB項(xiàng)分組,每個(gè)組都有一個(gè)組內(nèi)查找裝置與其對應(yīng),組內(nèi)查找裝置按照組內(nèi)的ROB項(xiàng)地址由大到小的順序,依次檢查與組內(nèi)的ROB項(xiàng)對應(yīng)的比較器的比較結(jié)果,將最先發(fā)現(xiàn)輸出為‘1’的比較器所對應(yīng)的ROB項(xiàng)地址的第1 0位(即組內(nèi)編號)輸出,同時(shí)將查找成功信號設(shè)為‘1’,表示在組內(nèi)找到了輸出為‘1’的比較器。如果組內(nèi)查找裝置遍歷了組內(nèi)的所有ROB項(xiàng)仍沒有找到輸出為‘1’的比較器,則將查找成功信號設(shè)為‘0’,表示查找失敗。 針對ROB分組,根據(jù)修改后的ROB尾指針找到ROB尾項(xiàng)所在的組,如所公知的,在發(fā)生分支預(yù)測錯(cuò)誤時(shí),ROB尾指針被恢復(fù)為指向發(fā)生錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng)的下一項(xiàng)。根據(jù)本發(fā)明,將該ROB尾指針修改為使其指向發(fā)生錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng) (即,ROB尾項(xiàng)),在沒有轉(zhuǎn)移延遲槽的微處理器中,修改后的ROB尾指針指向預(yù)測錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng);在有轉(zhuǎn)移延遲槽的微處理器中,修改后的ROB尾指針指向延遲槽中的指令所對應(yīng)的ROB項(xiàng)。組間多選器根據(jù)修改后的ROB尾指針?biāo)赶虻腞OB尾項(xiàng)的二進(jìn)制ROB 地址的第4 2位判斷ROB尾項(xiàng)在哪個(gè)組中,在圖2中,ROB尾項(xiàng)是R0B18,地址為10010, 其中第4 2位為100,所以ROB尾項(xiàng)就在第4組中。組間多選器將ROB尾項(xiàng)所在的組選出后,輸出這組的ROB項(xiàng)對應(yīng)的比較器的比較結(jié)果作為自己的輸出。特殊組建查找裝置接受組間多選器的結(jié)果和ROB尾項(xiàng)二進(jìn)制ROB地址的第1 0 位,先根據(jù)ROB尾項(xiàng)地址的第1 0位在組間多選器的結(jié)果中找到ROB尾項(xiàng)所對應(yīng)的比較器結(jié)果,從這個(gè)結(jié)果開始按照ROB項(xiàng)地址由大到小的順序依次判斷比較器的比較結(jié)果,判斷的范圍是從ROB尾項(xiàng)到該組的第0項(xiàng),而組內(nèi)編號大于ROB尾項(xiàng)的ROB項(xiàng)的比較結(jié)果不會被判斷。特殊組內(nèi)查找裝置將找到的第一個(gè)輸出為‘1’的比較器所對應(yīng)的ROB項(xiàng)地址的第1 0位輸出,同時(shí)將查找成功信號設(shè)為‘1’,表示在組內(nèi)找到了輸出為‘1’的比較器。 如果特殊組內(nèi)查找裝置一直找到了組內(nèi)的第0項(xiàng)仍沒有找到輸出為‘1’的比較器,則將查找成功信號設(shè)為‘0’,表示查找失敗。全局查找裝置根據(jù)8個(gè)組內(nèi)查找裝置,1個(gè)特殊組內(nèi)查找裝置和ROB尾項(xiàng)的地址來查找出針對某一 RAT表項(xiàng)被用來恢復(fù)其內(nèi)容的ROB項(xiàng)的地址。全局查找裝置先判斷特殊組內(nèi)查找裝置的查找結(jié)果,如果特殊組內(nèi)查找裝置的查找成功信號為‘1’,則將特殊組內(nèi)查找裝置所查找的組編號(也就是ROB尾項(xiàng)的地址的第4 2位)與特殊組內(nèi)查找裝置輸出的組內(nèi)編號(ROB項(xiàng)地址的第1 0位)拼起來,作為全局查找裝置的輸出,同時(shí)把全局查找裝置的查找成功信號設(shè)為‘1’,如果特殊組內(nèi)查找裝置的查找成功信號為‘0’,則將ROB尾項(xiàng)的地址的第4 2位減1后作為組編號,判斷該組所對應(yīng)的組內(nèi)查找裝置的查找成功信號是否為‘1’,如果為‘1’,則將該組的組編號與該組所對應(yīng)的組內(nèi)查找裝置輸出的組內(nèi)編號拼起來,作為全局查找裝置的輸出,同時(shí)把全局查找裝置的查找成功信號設(shè)為‘1’,如果為 ‘0’,則繼續(xù)將該組編號減1后作為組編號,判斷下一組所對應(yīng)的組內(nèi)查找裝置的查找成功信號……直到找到查找成功的組內(nèi)查找裝置或判斷完所有的組內(nèi)查找裝置的結(jié)果為止(最后一個(gè)被判斷的組內(nèi)查找裝置和特殊組內(nèi)查找裝置查找的是同一組),其中如果組編號已經(jīng)為0而仍需繼續(xù)查找,則組編號會被回繞回7 ;如果所有的組內(nèi)查找裝置的查找成功信號都為‘0’,表示此時(shí)寫回這一邏輯寄存器地址的所有指令都已不在執(zhí)行狀態(tài)中,全局查找裝置把它的查找成功信號設(shè)為‘0’。注意此處拼接的含義為將所查找到的組編號(也就是ROB 尾項(xiàng)的地址的第4 2位)與所查找到的組內(nèi)編號(ROB項(xiàng)地址的第1 0位)按照由高位到低位的順序加以排列,例如,如果查找到的組編號為AAA,而查找到的組內(nèi)編號為BB,這拼接后的結(jié)果為AAABB。基于上述描述可以看出,本發(fā)明的組內(nèi)查找裝置與特殊組內(nèi)查找裝置的區(qū)別是,組內(nèi)查找裝置的查找對象是固定的,且與修改后的ROB尾指針無關(guān),即,組內(nèi)查找裝置只是查找自己組內(nèi)的ROB項(xiàng)所對應(yīng)的比較器輸出的比較結(jié)果;而特殊組內(nèi)查找裝置的查找對象是由組間多選器根據(jù)修改后的ROB尾指針從所有的已有ROB組中選出的ROB尾項(xiàng)所在的組,且在查找時(shí)以ROB尾項(xiàng)為起始點(diǎn),其地址大于ROB尾項(xiàng)的地址的ROB項(xiàng)不會被查找。在本實(shí)施例中,ROB的分組是按照均勻分組的原則,把32個(gè)ROB項(xiàng)平均分成8組, 每組4項(xiàng)。這種分組方法考慮了實(shí)現(xiàn)的簡單高效,因?yàn)榇藭r(shí)可以使用ROB項(xiàng)的地址的不同位作為組的編號和組內(nèi)編號,由此可以通過對組的編號和組內(nèi)編號進(jìn)行拼接的方式得到最后輸出的查找結(jié)果。但是ROB的分組方式并不只限于這一種分組方式,ROB的分組方式可以根據(jù)具體情況而改變,也不一定每一組所包含的項(xiàng)數(shù)都是相等的,把ROB進(jìn)行分組的目的是各組并行查找縮短查找時(shí)間,具體的分組方式要看實(shí)際情況而定,在ROB項(xiàng)數(shù)很少或者可以用于查找的時(shí)間很長的情況下,甚至可以不分組。此時(shí)雖然不能直接使用ROB項(xiàng)的地址的不同位作為組的編號和組內(nèi)編號,但是本領(lǐng)域的技術(shù)人員可以想到使用類似的方式來得到與本發(fā)明所舉例說明的實(shí)施例相同的結(jié)果。諸如對于每個(gè)組包括不等項(xiàng)數(shù)的ROB項(xiàng)的分組方法,可以先根據(jù)ROB項(xiàng)地址進(jìn)行不均等分組,此后在后續(xù)處理中對得到的ROB項(xiàng)地址采取加減地址偏移的方法獲得相應(yīng)的組編號和組內(nèi)編號,從而最后得到拼接后的結(jié)果。對于不對ROB進(jìn)行分組的情況,可以根據(jù)各個(gè)ROB項(xiàng)地址直接得到最后查找到的結(jié)果的ROB 項(xiàng)地址。此類方法很多,因此不在這里具體描述??傊景l(fā)明并不限于32個(gè)ROB項(xiàng)并且將這32個(gè)ROB項(xiàng)分成8組,每組4個(gè)ROB項(xiàng)的實(shí)施例,其它的數(shù)目的ROB項(xiàng)和其它分組方式也適應(yīng)于本發(fā)明。本文使用具有32項(xiàng)的ROB舉例說明了本發(fā)明的實(shí)施例是為了更好地對本發(fā)明加以描述,由此幫助本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明。RAT表項(xiàng)恢復(fù)裝置接受全局查找裝置的輸出,如果全局查找裝置的查找成功信號為‘ 1’,則RAT表項(xiàng)恢復(fù)裝置則將全局查找裝置輸出的ROB項(xiàng)地址前面再加1位并將此位設(shè)為‘1’以作為該RAT表項(xiàng)中保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。如前所述,由于首位為‘1’的物理寄存器地址對應(yīng)于重命名寄存器,因此對RAT表項(xiàng)中保存的物理寄存器地址的上述修改就表示目前該RAT表項(xiàng)所對應(yīng)的物理寄存器是重命名寄存器;如果全局查找裝置的查找成功信號為‘0’,則RAT表項(xiàng)恢復(fù)裝置就將該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT 表項(xiàng)所對應(yīng)的體系結(jié)構(gòu)寄存器的地址作為該RAT中保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容,這表示目前該RAT表項(xiàng)所對應(yīng)的物理寄存器是與該表項(xiàng)所對應(yīng)的邏輯寄存器所對應(yīng)的體系結(jié)構(gòu)寄存器。以上述圖2中的情況為例,如果全局查找裝置的查找成功信號為‘1’, 則RAT表項(xiàng)恢復(fù)裝置則將全局查找裝置輸出的ROB項(xiàng)地址(例如XXXXX)前面在加1位并將此位設(shè)為‘1’(此地址因此變?yōu)?XXXXX),然后將RAT7中存儲的物理寄存器的地址修改為 1XXXXX,由于該物理寄存器地址的首位為1,因此表示目前該RAT表項(xiàng)所對應(yīng)的物理寄存器是重命名寄存器。如果全局查找裝置的查找成功信號為‘0’,則RAT表項(xiàng)恢復(fù)裝置就將該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)的體系結(jié)構(gòu)寄存器的地址,正如前所述,雖然每個(gè)邏輯寄存器和它所對應(yīng)的RAT表項(xiàng)雖然可以對應(yīng)多個(gè)重命名寄存器,但是只有一個(gè)體系結(jié)構(gòu)寄存器與它對應(yīng),比如與RAT7對應(yīng)的體系結(jié)構(gòu)寄存器就是AR7,在任何時(shí)候都是AR7, 盡管RAT7的內(nèi)容不一定總是AR7,但是決不會是其它的體系結(jié)構(gòu)寄存器。因此,RAT表項(xiàng)恢復(fù)裝置就將RAT7的地址作為該RAT表項(xiàng)應(yīng)該被恢復(fù)的內(nèi)容,即將該RAT表項(xiàng)的內(nèi)容修改成 AR7的地址(000111),此時(shí)表示目前該RAT表項(xiàng)所對應(yīng)的物理寄存器是體系寄存器。
根據(jù)本發(fā)明,還包括用于產(chǎn)生指示RAT進(jìn)行更新操作的更新信號的定時(shí)裝置(參見圖2),可以將該定時(shí)裝置設(shè)計(jì)為當(dāng)所述定時(shí)裝置中的計(jì)數(shù)器的計(jì)數(shù)值達(dá)到預(yù)定的值時(shí), 該定時(shí)裝置發(fā)出更新信號以指示RAT根據(jù)其各個(gè)表項(xiàng)所對應(yīng)的映射關(guān)系恢復(fù)模塊輸出更新各個(gè)RAT表項(xiàng)原來所保存的物理寄存器地址,其中所述定時(shí)裝置的定時(shí)時(shí)間不超過當(dāng)發(fā)生分支預(yù)測錯(cuò)誤時(shí)微處理器從新地址重新加載指令的時(shí)間,因此,沒有可見的時(shí)間開銷。而由于只有一個(gè)RAT,因此在寄存器重命名時(shí)控制邏輯比較簡單,時(shí)序開銷小。本實(shí)施例是針對重命名實(shí)現(xiàn)方式A的,但是其實(shí)只要在RAT表項(xiàng)恢復(fù)裝置上做修改就可以適用于重命名實(shí)現(xiàn)方式B。修改的方法是相對于重命名方式A,重命名方式B會在ROB項(xiàng)中額外保存目標(biāo)邏輯寄存器所對應(yīng)的物理寄存器地址,RAT表項(xiàng)恢復(fù)裝置從各個(gè) ROB項(xiàng)中讀出各自的物理地址,如果全局查找裝置的查找成功信號為‘ 1’,則根據(jù)全局查找裝置輸出的ROB地址選擇與其對應(yīng)的目標(biāo)物理寄存器地址作為RAT表項(xiàng)的恢復(fù)數(shù)據(jù);如果全局查找裝置的查找成功信號為‘0’,則從體系結(jié)構(gòu)寄存器映射表中讀出相應(yīng)表項(xiàng)的內(nèi)容作為對應(yīng)RAT表項(xiàng)的恢復(fù)數(shù)據(jù)。下面列舉兩個(gè)具體的例子來具體說明本發(fā)明的工作方式,由于RAT的每個(gè)表項(xiàng)都對應(yīng)于同樣的恢復(fù)邏輯,所以下面的例子只以對RAT中的一個(gè)表項(xiàng)的恢復(fù)過程加以說明
例1.如圖4所示,在發(fā)生分支預(yù)測錯(cuò)誤時(shí),指令取消后ROB中還有4個(gè)針對邏輯寄存器LR15的重命名操作,分別處于ROB的第13、17、24J6項(xiàng)中,指令取消后ROB的頭指針位于第12項(xiàng),而修改后的尾指針在第2項(xiàng),屬于映射關(guān)系恢復(fù)模塊對ROB分組的第0組,所以第0組也是要送到特殊組內(nèi)查找裝置的特殊組。對LR15的4個(gè)操作分別位于第3、第4和第6組中,其中第6組包含兩個(gè)對LR15的操作。對應(yīng)于LR15的映射關(guān)系恢復(fù)模塊內(nèi)的所有組內(nèi)查找裝置和特殊組內(nèi)查找裝置各自搜索對LR15的操作,在本例中,第3、第4和第6 組的組內(nèi)查找裝置找到了對LR15的操作,其中第6組找到的是ROB的第沈項(xiàng),因?yàn)閺臅r(shí)間上來說,它比同組的第M項(xiàng)新。全局查找裝置首先判斷特殊組內(nèi)查找裝置的結(jié)果,特殊組內(nèi)查找裝置沒有找到有要寫回LR15的ROB項(xiàng),全局查找裝置接下來判斷第7組的結(jié)果,還是沒有找到,緊跟著是第6組,第6組找到了保存的目標(biāo)邏輯寄存器地址是LR15的ROB項(xiàng), 于是全局查找裝置將第6組的搜索結(jié)果也即ROB的第沈項(xiàng)作為自己的輸出送給RAT表項(xiàng)恢復(fù)裝置得出與LR15相對應(yīng)的RAT表項(xiàng)的恢復(fù)數(shù)據(jù)。例2.這是一種比較極端的情況,也是本系統(tǒng)中為什么要設(shè)置特殊組內(nèi)查找裝置的原因,如圖5所示,在發(fā)生分支預(yù)測錯(cuò)誤時(shí),指令取消后只有兩個(gè)ROB項(xiàng)是空著的,而修改后的ROB隊(duì)列尾項(xiàng)所在的塊有兩個(gè)ROB項(xiàng)寫回LR15,分別是第8項(xiàng)和第11項(xiàng),雖然它們屬于一個(gè)塊,但是在邏輯上分處有效ROB隊(duì)列的兩端,第11項(xiàng)是最早使用LR15的塊,而第8項(xiàng)是最后使用LR15的塊。如果用普通的組內(nèi)編碼器來做判斷,應(yīng)該選擇第11項(xiàng),可實(shí)際上第 8項(xiàng)才是現(xiàn)有的對LR15的最新重命名結(jié)果。特殊組內(nèi)查找裝置由于是從修改后的ROB隊(duì)列尾項(xiàng)開始查找,所以特殊組內(nèi)查找裝置的查找結(jié)果將是第8項(xiàng),而在特殊組內(nèi)查找裝置找到結(jié)果的情況下,全局編碼器將優(yōu)先使用特殊組內(nèi)查找裝置的結(jié)果。參照圖6,描述了根據(jù)本發(fā)明的方法。所述方法從提供用于產(chǎn)生指示RAT進(jìn)行更新操作的更新信號步驟601開始,在步驟602,將各個(gè)ROB項(xiàng)中保存的目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址進(jìn)行比較并且輸出指示二者是否相等的比較結(jié)果; 在步驟602輸出的比較結(jié)果被提供給步驟603和604,在步驟603,對ROB項(xiàng)的每個(gè)組,對該組內(nèi)的各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果進(jìn)行查找,并輸出查找結(jié)果;在步驟604,選出ROB項(xiàng)中的ROB尾項(xiàng)所在的組并輸出該ROB尾項(xiàng)所在的組的組內(nèi)各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果; 步驟604輸出的比較結(jié)果被提供給步驟605,在步驟605中,基于所述ROB尾項(xiàng)所在的組的組內(nèi)的各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果,對所述ROB尾項(xiàng)所在組內(nèi)的比較器的比較結(jié)果進(jìn)行查找,并輸出查找結(jié)果;步驟603和步驟605中輸出的查找結(jié)果被提供給步驟606,在步驟 606中,基于在步驟603和605中的查找結(jié)果,輸出最終的查找結(jié)果,所述最終的查找結(jié)果指示在ROB中是否還有其目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的ROB項(xiàng),以及在其目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的這些ROB項(xiàng)中對應(yīng)于應(yīng)該最晚被執(zhí)行的其目標(biāo)寄存器地址與所述目標(biāo)邏輯地址相等的指令的ROB項(xiàng)的地址;步驟606中的最終查找結(jié)果被提供給步驟607,在步驟607中,基于最終的查找結(jié)果,根據(jù)在步驟601中的指示RAT進(jìn)行更新操作的更新信號輸出要被恢復(fù)的 RAT表項(xiàng)所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。 最后應(yīng)說明的是以上實(shí)施例僅用以說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種在分支預(yù)測失敗時(shí)使用重排序緩沖器ROB恢復(fù)寄存器別名表RAT內(nèi)容的系統(tǒng), 所有的ROB項(xiàng)按照其地址被分成多個(gè)組,每個(gè)組包括預(yù)定數(shù)目的ROB項(xiàng)并且所述預(yù)定數(shù)目的ROB項(xiàng)互相之間沒有重疊,所述系統(tǒng)包括用于產(chǎn)生指示RAT進(jìn)行更新操作的更新信號的定時(shí)裝置;對應(yīng)于RAT中每個(gè)表項(xiàng)的映射關(guān)系恢復(fù)模塊,其中每個(gè)映射關(guān)系恢復(fù)模塊包括分別對應(yīng)于每個(gè)ROB項(xiàng)的比較器,將保存在每個(gè)ROB項(xiàng)中的目標(biāo)邏輯地址與該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址進(jìn)行比較并且輸出指示二者是否相等的比較結(jié)果,其中保存在每個(gè)ROB項(xiàng)中的目標(biāo)邏輯地址與該ROB項(xiàng)所對應(yīng)的指令的目標(biāo)邏輯寄存器地址相等;對應(yīng)于ROB項(xiàng)的每個(gè)組的組內(nèi)查找裝置,其接收每個(gè)組內(nèi)的ROB項(xiàng)所對應(yīng)的比較器輸出的比較結(jié)果,在這些比較結(jié)果中進(jìn)行查找并輸出查找結(jié)果;用于ROB項(xiàng)的多個(gè)組的組間多選器,用于選出ROB項(xiàng)中的ROB尾項(xiàng)所在的組,所述ROB 尾項(xiàng)是發(fā)生錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng),并輸出該ROB尾項(xiàng)所在的組的組內(nèi)的比較器的比較結(jié)果;特殊組內(nèi)查找裝置,接收所述組間多選器輸出的比較結(jié)果,并且基于所述組間多選器輸出的比較結(jié)果對所述ROB尾項(xiàng)所在組內(nèi)的比較器的比較結(jié)果進(jìn)行查找,并輸出查找結(jié)果;全局查找裝置,用于基于所述組內(nèi)查找裝置輸出的查找結(jié)果和所述特殊組內(nèi)查找裝置輸出的查找結(jié)果輸出最終的查找結(jié)果,所述最終的查找結(jié)果指示在ROB中是否還有其目標(biāo)邏輯地址與該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的ROB 項(xiàng),以及在其目標(biāo)邏輯地址與該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的這些ROB項(xiàng)中對應(yīng)于應(yīng)該最晚被執(zhí)行的其目標(biāo)寄存器地址與所述目標(biāo)邏輯地址相等的指令的ROB項(xiàng)的地址;RAT表項(xiàng)恢復(fù)裝置,接收全局查找裝置輸出的最終的查找結(jié)果,輸出該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。
2.如權(quán)利要求1所述的系統(tǒng),當(dāng)所述定時(shí)裝置中的計(jì)數(shù)器的計(jì)數(shù)值達(dá)到預(yù)定的值時(shí), 該定時(shí)裝置發(fā)出更新信號以指示RAT根據(jù)其各個(gè)表項(xiàng)所對應(yīng)的映射關(guān)系恢復(fù)模塊輸出更新各個(gè)RAT表項(xiàng)原來所保存的物理寄存器地址,其中所述定時(shí)裝置的定時(shí)時(shí)間不超過當(dāng)發(fā)生分支預(yù)測錯(cuò)誤時(shí)微處理器從新地址重新加載指令的時(shí)間。
3.如權(quán)利要求1所述的系統(tǒng),其中所述組內(nèi)查找裝置按照其所對應(yīng)的組內(nèi)的ROB項(xiàng)地址由組內(nèi)最大遞減到組內(nèi)最小的順序查找是否有ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,如果有,則輸出指示這個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,如果有多個(gè)ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,輸出指示最先找到的那個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,否則輸出指示查找失敗的信號。
4.如權(quán)利要求1所述的系統(tǒng),其中所述特殊組內(nèi)查找裝置接收組間多選器的輸出結(jié)果,并以所述ROB尾項(xiàng)為起點(diǎn),按照ROB項(xiàng)地址由大到小的順序查找是否有ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,如果有,則輸出指示這個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,如果有多個(gè)ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,則輸出指示最先找到的那個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,否則輸出指示查找失敗的信號,其中對應(yīng)于其地址大于ROB尾項(xiàng)地址的ROB項(xiàng)的比較器的比較結(jié)果將不會被查找。
5.如權(quán)利要求4所述的系統(tǒng),其中所述全局查找裝置首先根據(jù)所述特殊組內(nèi)查找裝置的輸出的指示查找是否成功的信號來判斷特殊組內(nèi)查找裝置是否找到了比較器的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,就將特殊組內(nèi)查找裝置找到的ROB項(xiàng)的地址作為輸出并且輸出表示查找成功的信號,如果特殊組內(nèi)查找裝置沒有找到比較器的比較結(jié)果指示為相等的ROB項(xiàng),則按照指令依次進(jìn)入ROB的方向,判斷組間多選器所選擇的組的下一個(gè)組所對應(yīng)的組內(nèi)查找裝置是否找到了比較器的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,將這個(gè)組內(nèi)查找裝置找到的ROB項(xiàng)的地址作為輸出并且輸出指示查找成功的信號,如果沒有找到,繼續(xù)判斷下一個(gè)組內(nèi)查找裝置的結(jié)果,直到循環(huán)到組間多選器找到的ROB組為止,此時(shí)全局查找裝置查找組間多選器所選擇的ROB組的組內(nèi)查找裝置是否找到比較器比較結(jié)果指示為相等的ROB項(xiàng),如果找到,將這一 ROB項(xiàng)的地址作為輸出并且輸出指示查找成功的信號,否則全局查找裝置輸出指示查找失敗的信號,并結(jié)束查找。
6.如權(quán)利要求5所述的系統(tǒng),其中如果全局查找裝置輸出指示查找成功的信號,則所述RAT表項(xiàng)恢復(fù)裝置將所述全局查找裝置輸出的ROB項(xiàng)地址前面在加一位并將此位設(shè)為 ‘1’以作為該RAT表項(xiàng)中所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容;如果全局查找裝置輸出指示查找失敗的信號,則RAT表項(xiàng)恢復(fù)裝置就將該映射關(guān)系恢復(fù)模塊所對應(yīng)的RAT表項(xiàng)所對應(yīng)體系結(jié)構(gòu)寄存器的地址作為該RAT表項(xiàng)中所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。
7.—種在分支預(yù)測失敗時(shí)使用重排序緩沖器ROB恢復(fù)寄存器別名表RAT內(nèi)容的方法, 所有的ROB項(xiàng)按照其地址被分成多個(gè)組,每個(gè)組包括預(yù)定數(shù)目的ROB項(xiàng)并且所述預(yù)定數(shù)目的ROB項(xiàng)互相之間沒有重疊,所述方法包括以下步驟(I)提供用于產(chǎn)生指示RAT進(jìn)行更新操作的更新信號;(II)將各個(gè)ROB項(xiàng)中保存的目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址進(jìn)行比較并且輸出指示二者是否相等的比較結(jié)果,其中保存在各個(gè)ROB項(xiàng)中的目標(biāo)邏輯地址與各個(gè)ROB項(xiàng)所對應(yīng)的指令的目標(biāo)邏輯寄存器地址相等;(III)對ROB項(xiàng)的每個(gè)組,對該組內(nèi)的各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果進(jìn)行查找,并輸出查找結(jié)果;(IV)選出ROB項(xiàng)中的ROB尾項(xiàng)所在的組,所述ROB尾項(xiàng)是發(fā)生錯(cuò)誤的分支指令所對應(yīng)的ROB項(xiàng),并輸出該ROB尾項(xiàng)所在的組的組內(nèi)的各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果;(V)基于所述ROB尾項(xiàng)所在的組的組內(nèi)的各個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果,對所述ROB尾項(xiàng)所在組內(nèi)的比較器的比較結(jié)果進(jìn)行查找,并輸出查找結(jié)果;(VI)基于步驟(III)中的查找結(jié)果和步驟(V)中的查找結(jié)果輸出最終的查找結(jié)果,所述最終的查找結(jié)果指示在ROB中是否還有其目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的ROB項(xiàng),以及在其目標(biāo)邏輯地址與要被恢復(fù)的RAT表項(xiàng)所對應(yīng)的邏輯寄存器地址相等的這些ROB項(xiàng)中對應(yīng)于應(yīng)該最晚被執(zhí)行的其目標(biāo)寄存器地址與所述目標(biāo)邏輯地址相等的指令的ROB項(xiàng)的地址;(VII)基于步驟(VI)中的最終的查找結(jié)果,根據(jù)步驟(I)中的指示RAT進(jìn)行更新操作的更新信號輸出要被恢復(fù)的RAT表項(xiàng)所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。
8.如權(quán)利要求7所述的方法,其中使用定時(shí)裝置來提供指示RAT進(jìn)行更新操作的更新信號,當(dāng)所述定時(shí)裝置中的計(jì)數(shù)器的計(jì)數(shù)值達(dá)到預(yù)定的值時(shí),該定時(shí)裝置發(fā)出更新信號以指示RAT根據(jù)其各個(gè)表項(xiàng)所對應(yīng)的映射關(guān)系恢復(fù)模塊的輸出更新各個(gè)RAT表項(xiàng)原來所保存的物理寄存器地址,其中所述定時(shí)裝置的定時(shí)時(shí)間不超過當(dāng)發(fā)生分支預(yù)測錯(cuò)誤時(shí)微處理器從新地址重新加載指令的時(shí)間。
9.如權(quán)利要求7所述的方法,其中步驟(III)進(jìn)一步包括按照ROB項(xiàng)的每個(gè)組內(nèi)的ROB 項(xiàng)的地址由組內(nèi)最大遞減到組內(nèi)最小的順序查找是否有ROB項(xiàng)所對應(yīng)的比較結(jié)果指示為相等,如果有,則輸出指示這個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,如果有多個(gè)ROB項(xiàng)所對應(yīng)的比較結(jié)果指示為相等,輸出指示最先找到的那個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,否則輸出指示查找失敗的信號。
10.如權(quán)利要求7所述的方法,其中步驟(V)進(jìn)一步包括以所述ROB尾項(xiàng)為起點(diǎn),按照 ROB項(xiàng)地址由大到小的順序查找ROB尾項(xiàng)所在的組內(nèi)是否有ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,如果有,則輸出指示這個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,如果有多個(gè)ROB項(xiàng)所對應(yīng)的比較器的比較結(jié)果指示為相等,則輸出指示最先找到的那個(gè)ROB項(xiàng)在組內(nèi)的位置的信號和指示查找成功的信號,其中其地址大于ROB尾項(xiàng)地址的 ROB項(xiàng)所對應(yīng)的比較結(jié)果將不會被查找。
11.如權(quán)利要求10所述的方法,其中步驟(VI)進(jìn)一步包括根據(jù)在步驟(V)中輸出的指示查找是否成功的信號來判斷在步驟(V)中是否找到了 ROB項(xiàng)所對應(yīng)的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,就將該ROB項(xiàng)所對應(yīng)的地址作為輸出,如果在步驟(V)中沒有找到 ROB項(xiàng)所對應(yīng)的比較結(jié)果指示為相等的ROB項(xiàng),則按照指令依次進(jìn)入ROB的方向,判斷ROB 尾項(xiàng)所在的組的下一個(gè)組內(nèi)是否找到了 ROB項(xiàng)對應(yīng)的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,將這個(gè)組內(nèi)最先找到的那個(gè)ROB項(xiàng)所對應(yīng)的地址作為輸出并且輸出指示查找成功的信號,如果沒有找到,繼續(xù)判斷下一個(gè)組否找到了 ROB項(xiàng)對應(yīng)的比較結(jié)果指示為相等的ROB 項(xiàng),直到循環(huán)到ROB尾項(xiàng)所在的組為止,此時(shí)判斷ROB尾項(xiàng)所在組內(nèi)是否找到了 ROB項(xiàng)對應(yīng)的比較結(jié)果指示為相等的ROB項(xiàng),如果找到,將這個(gè)組內(nèi)最先找到的那個(gè)ROB項(xiàng)的地址作為輸出并且輸出指示查找成功的信號,否則輸出指示查找失敗的信號,并結(jié)束查找。
12.如權(quán)利要求11所述的方法,其中如果在步驟(VI)中輸出指示查找成功的信號,則將在步驟(VI)中輸出的ROB項(xiàng)地址前面在加一位并將此位設(shè)為‘1’以作為該RAT表項(xiàng)中所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容;如果在步驟(VI)中輸出指示查找失敗的信號,則將該RAT表項(xiàng)所對應(yīng)體系結(jié)構(gòu)寄存器的地址作為該RAT表項(xiàng)中所保存的物理寄存器地址應(yīng)該被恢復(fù)的內(nèi)容。
全文摘要
本發(fā)明涉及在分支預(yù)測失敗時(shí)使用ROB恢復(fù)RAT內(nèi)容的系統(tǒng)和方法。提出了一種在分支預(yù)測失敗時(shí)使用重排序緩沖器ROB恢復(fù)寄存器別名表RAT內(nèi)容的系統(tǒng),所述系統(tǒng)包括用于產(chǎn)生指示RAT進(jìn)行更新操作的更新信號的定時(shí)裝置和對應(yīng)于RAT中每個(gè)表項(xiàng)的映射關(guān)系恢復(fù)模塊。其中每個(gè)映射關(guān)系恢復(fù)模塊包括分別對應(yīng)于每個(gè)ROB項(xiàng)的比較器;對應(yīng)于ROB項(xiàng)的每個(gè)組的組內(nèi)查找裝置;用于ROB項(xiàng)的多個(gè)組的組間多選器;特殊組內(nèi)查找裝置;全局查找裝置和RAT項(xiàng)恢復(fù)裝置。根據(jù)本發(fā)明的系統(tǒng),可以有效地對行RAT進(jìn)行恢復(fù)。還提出了一種在分支預(yù)測失敗時(shí)使用重排序緩沖器ROB恢復(fù)寄存器別名表RAT內(nèi)容的方法。
文檔編號G06F11/14GK102567137SQ20101060721
公開日2012年7月11日 申請日期2010年12月27日 優(yōu)先權(quán)日2010年12月27日
發(fā)明者楊思博 申請人:北京國睿中數(shù)科技股份有限公司