專利名稱:用于亂序執(zhí)行條件指令的硬件裝置及其執(zhí)行方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及一種用于發(fā)布并執(zhí)行條件指令的硬件裝置及其執(zhí)行方法。更具體地講,本發(fā)明涉及一種亂序發(fā)布并執(zhí)行條件指令從而提高處理器性能的硬件裝置。
背景技術(shù):
諸如處理器的硬件裝置已被改進(jìn)為具有指令執(zhí)行的更高的速度并且在單個(gè)周期期間同時(shí)發(fā)布并執(zhí)行多條指令。
然而,分支指令妨礙了處理器性能的提高并且限制了可發(fā)布的指令。處理器需要用于分支指令的分支預(yù)測(cè)的適當(dāng)?shù)挠布渲?,并且?dāng)分支預(yù)測(cè)錯(cuò)誤時(shí)需要清除在分支指令之后執(zhí)行的指令的所有執(zhí)行結(jié)果。這些要求引起了性能的降低。
在這方面,一些處理器通過采用條件指令來減少使用的分支指令?!皸l件指令”在指定的條件下被執(zhí)行。表1顯示了分支指令和條件指令的示例。
就表1中的分支指令而言,指令CMP被執(zhí)行為比較兩個(gè)操作數(shù)a和0。如果結(jié)果是兩個(gè)操作數(shù)相等,那么發(fā)布分支指令BREQ以執(zhí)行L1階段。
條件的執(zhí)行結(jié)果引起亂序執(zhí)行指令。相反,如果根據(jù)比較兩個(gè)操作數(shù)不相等,那么被引向?yàn)轫樞驁?zhí)行指令A(yù)DD以將a和10相加。
就表1中的條件指令而言,獲得了與分支指令相同的結(jié)果。同時(shí),在執(zhí)行指令CMP之后,如果兩個(gè)操作數(shù)相等,那么執(zhí)行將a和l相加的條件指令A(yù)DDEQ。如果兩個(gè)操作數(shù)不相等,那么按次序執(zhí)行將a和10相加的條件指令A(yù)DDNE。
條件指令能夠減少分支指令的個(gè)數(shù),并防止由于分支預(yù)測(cè)失敗所導(dǎo)致的性能降低。減少的分支指令的個(gè)數(shù)表示更大的塊大小。塊大小是基本處理器一次可執(zhí)行的指令的大小。
在單個(gè)周期期間可以發(fā)布并執(zhí)行多條指令的超標(biāo)量處理器或超常指令字(VLIW)處理器能夠一次發(fā)布多條指令。然而,由于條件指令依賴于從先前指令的執(zhí)行所產(chǎn)生的條件,所以很難亂序執(zhí)行條件指令。
“亂序”執(zhí)行不是根據(jù)程序來順序處理指令,而是首先處理可執(zhí)行的指令而不管可執(zhí)行的指令的次序。
起初,處理器“按次序”執(zhí)行程序指令。因而,最初的處理器按次序執(zhí)行程序,并且系統(tǒng)按次序處理包括程序中指定的寄存器的處理器的狀態(tài)。
在邏輯基礎(chǔ)上,如果不受數(shù)據(jù)依賴的影響,或者如果在處理指令期間沒有資源沖突,那么可以跳過某個(gè)指令,改為發(fā)布并處理后面的指令,所述數(shù)據(jù)依賴是當(dāng)指令依賴于先前指令的執(zhí)行結(jié)果時(shí)產(chǎn)生的。因而,亂序執(zhí)行可以大大地提高處理器的性能。
傳統(tǒng)的支持條件指令的處理器包括INTEL Corp.的Alpha 21264微處理器和IA-64以及Advanced RISC Machines(ARM)Ltd.的ARM處理器。問題在于,當(dāng)使用條件指令時(shí)傳統(tǒng)的處理器不支持亂序執(zhí)行。這是因?yàn)椋?dāng)使用從先前指令的結(jié)果產(chǎn)生的狀態(tài)時(shí),由于數(shù)據(jù)依賴而導(dǎo)致很難支持亂序執(zhí)行。
當(dāng)條件指令的條件被存儲(chǔ)在某個(gè)寄存器中時(shí),除寄存器文件之外還需要讀端口。當(dāng)使用軟件的條件指令的處理改變指令集架構(gòu)(ISA)時(shí),將失去與遺產(chǎn)程序(legacy program)的兼容。因此,當(dāng)使用條件指令時(shí)需要用于亂序執(zhí)行的處理器。
發(fā)明內(nèi)容
本發(fā)明的一方面已被提供以解決傳統(tǒng)布置中出現(xiàn)的上述和其他的問題以及缺點(diǎn),并且本發(fā)明的一方面提供了一種用于支持并亂序執(zhí)行條件指令以提高硬件裝置性能的硬件裝置以及用于亂序執(zhí)行條件指令的方法。
根據(jù)本發(fā)明的一方面,一種用于亂序執(zhí)行條件指令的硬件裝置包括解碼和發(fā)布部分,取出用于設(shè)置條件的條件設(shè)置器指令、根據(jù)所述條件設(shè)置器指令的結(jié)果而被執(zhí)行的條件指令和使用所述條件指令的結(jié)果的條件用戶指令中的至少一個(gè),并通過針對(duì)所述條件指令將目的操作數(shù)的寄存器重命名為不同的寄存器來亂序發(fā)布取出的指令;執(zhí)行部分,包括至少一個(gè)執(zhí)行發(fā)布的指令的執(zhí)行器;條件處理部分,包括存儲(chǔ)重命名信息、條件和所述條件指令的結(jié)果的重命名的寄存器,并通過檢索有效的條件指令來輸出存儲(chǔ)的所述條件指令的結(jié)果,所述有效的條件指令的條件根據(jù)所述條件設(shè)置器指令的結(jié)果而被滿足;和寄存器文件,將從所述條件處理部分輸出的所述條件指令的結(jié)果存儲(chǔ)到原始寄存器。
所述解碼和發(fā)布部分可包括解碼器,取出所述至少一條指令,當(dāng)取出的指令是條件指令時(shí),將所述目的操作數(shù)的寄存器重命名為另一寄存器并輸出所述取出的指令,并且當(dāng)所述取出的指令是條件用戶指令時(shí),等待將被存儲(chǔ)在所述寄存器文件的相應(yīng)的寄存器中的所述有效的條件指令的結(jié)果并輸出所述取出的指令;和指令發(fā)布隊(duì)列,給從所述解碼器輸出的指令分派發(fā)布隊(duì)列入口,并且當(dāng)在所述執(zhí)行部分中存在用于執(zhí)行所述指令的可利用的執(zhí)行器時(shí),將所述指令發(fā)布到所述執(zhí)行部分。
所述條件處理部分可包括條件設(shè)置指針,指示由所述指令發(fā)布隊(duì)列分派給所述條件設(shè)置器指令的入口;條件執(zhí)行緩沖器,將重命名信息、條件和緩沖器入口分派給至少一個(gè)條件指令中的每個(gè),所述重命名信息是從所述解碼器接收的重命名的寄存器的信息以及原始寄存器信息,所述緩沖器入口存儲(chǔ)由所述條件設(shè)置指針指示的發(fā)布隊(duì)列入口信息;條件檢驗(yàn)器,當(dāng)所述條件設(shè)置器指令的結(jié)果從所述執(zhí)行部分被接收時(shí),向所述條件執(zhí)行緩沖器請(qǐng)求根據(jù)所述條件設(shè)置器指令的結(jié)果而被執(zhí)行的所述條件指令的條件,與所述條件設(shè)置器指令的結(jié)果比較,并選擇滿足所述條件的條件指令;和條件執(zhí)行寄存器文件,從所述執(zhí)行部分接收所述條件指令的結(jié)果,并將所述條件指令的結(jié)果暫時(shí)存儲(chǔ)在重命名的寄存器中。
所述條件執(zhí)行緩沖器可包括每個(gè)緩沖器入口中的緩沖器,所述緩沖器根據(jù)所述條件檢驗(yàn)器的條件檢驗(yàn)來指示滿足所述條件的有效的條件指令。
所述條件執(zhí)行緩沖器還可包括所述緩沖器入口中的緩沖器,所述緩沖器指示分派給所述條件指令的緩沖器入口是否被使用,并且指示當(dāng)所述解碼器對(duì)用于新近取出的條件指令的寄存器重命名時(shí),所述緩沖器入口是否被使用。
所述條件執(zhí)行寄存器文件可與所述寄存器一起指示所述重命名的寄存器是否被使用,并且當(dāng)所述解碼器對(duì)用于新的條件指令的寄存器重命名時(shí),所述條件執(zhí)行寄存器文件允許使用所述寄存器。
當(dāng)所述取出的指令使用存儲(chǔ)在所述條件執(zhí)行緩沖器中的原始寄存器作為源操作數(shù)時(shí),所述解碼器可確定所述指令為條件用戶指令。
一種計(jì)算機(jī)系統(tǒng)能夠通過使用根據(jù)本發(fā)明實(shí)施例的可亂序執(zhí)行條件指令的硬件裝置來亂序執(zhí)行條件指令。
根據(jù)本發(fā)明的另一方面,一種支持條件指令的硬件裝置的亂序執(zhí)行方法包括取出用于設(shè)置條件的條件設(shè)置器指令、根據(jù)所述條件設(shè)置器指令的結(jié)果而被執(zhí)行的條件指令和使用所述條件指令的結(jié)果的條件用戶指令中的至少一個(gè);當(dāng)所述至少一個(gè)取出的指令被發(fā)布以用于執(zhí)行時(shí),針對(duì)所述條件指令將目的操作數(shù)的寄存器重命名為不同的寄存器并亂序發(fā)布指令;分別存儲(chǔ)重命名信息和所述條件指令的條件;執(zhí)行所述發(fā)布的指令并將所述條件指令的結(jié)果存儲(chǔ)在重命名的寄存器中;當(dāng)所述條件設(shè)置器指令的執(zhí)行完成時(shí),通過使用存儲(chǔ)的重命名信息和存儲(chǔ)的條件來選擇有效的條件指令,所述有效的條件指令具有根據(jù)所述條件設(shè)置器指令的結(jié)果而被滿足的條件;和存儲(chǔ)所述重命名的寄存器的內(nèi)容,所述重命名的寄存器將所述有效的條件指令的結(jié)果存儲(chǔ)在原始寄存器中。
當(dāng)所述取出的指令是條件用戶指令時(shí),所述指令可在所述有效的條件指令的結(jié)果被存儲(chǔ)在所述原始寄存器中之后被發(fā)布。
根據(jù)本發(fā)明的另一方面,一種支持條件指令的硬件裝置中的條件設(shè)置器指令處理方法包括從存儲(chǔ)器取出條件設(shè)置器指令,并將所述取出的條件設(shè)置器指令轉(zhuǎn)遞給指令發(fā)布隊(duì)列;當(dāng)所述指令發(fā)布隊(duì)列接收到所述條件設(shè)置器指令并已分派發(fā)布隊(duì)列入口時(shí),亂序發(fā)出存儲(chǔ)在所述發(fā)布隊(duì)列的入口中的指令;執(zhí)行與所述發(fā)布的指令相應(yīng)的指令,并將執(zhí)行結(jié)果提供給寄存器和條件檢驗(yàn)器;將接收到的執(zhí)行結(jié)果存儲(chǔ)在所述寄存器中;和當(dāng)一接收到所述執(zhí)行結(jié)果時(shí),檢驗(yàn)所述條件指令的條件是否被滿足。
本發(fā)明的另外和/或其它方面及優(yōu)點(diǎn)將在下面的描述中部分被闡述,并且部分從描述是顯而易見的,或者可通過本發(fā)明的實(shí)施被領(lǐng)會(huì)。
通過結(jié)合附圖,從下面詳細(xì)的描述中,本發(fā)明的上述和/或其它方面及優(yōu)點(diǎn)將會(huì)變得清楚,并且更易于理解,其中圖1是根據(jù)本發(fā)明實(shí)施例的用于亂序執(zhí)行條件指令的硬件裝置的方框圖;圖2是示出條件指令的重命名的操作的示圖;圖3是解釋硬件裝置如何處理?xiàng)l件設(shè)置器指令的流程圖;圖4是解釋硬件裝置執(zhí)行條件指令的過程的流程圖;和圖5是解釋硬件裝置如何處理?xiàng)l件用戶指令的流程圖。
具體實(shí)施例方式
現(xiàn)在將詳細(xì)描述本發(fā)明的實(shí)施例,其示例在附圖中示出,其中,相同的標(biāo)號(hào)始終表示相同的部件。下面通過參照附圖來描述實(shí)施例以解釋本發(fā)明。
圖1是根據(jù)本發(fā)明實(shí)施例的用于亂序執(zhí)行條件指令的硬件裝置的方框圖。
該硬件裝置可適用于微處理器或計(jì)算機(jī)系統(tǒng)。該硬件裝置根據(jù)電存儲(chǔ)指令來操作。
該硬件裝置可以執(zhí)行條件指令。根據(jù)本發(fā)明的實(shí)施例,對(duì)于所有或一些可執(zhí)行指令,該硬件裝置支持條件指令。
在本實(shí)施例中,采用該硬件裝置來支持條件指令的亂序執(zhí)行。為此,使用重命名操作來將多個(gè)物理目的寄存器分配給與條件指令相關(guān)的目的操作數(shù)的寄存器。下面是參照?qǐng)D2的重命名的操作的解釋。
圖2示出了條件指令的重命名的操作。詳細(xì)地講,圖2顯示了重命名之前的指令集A和重命名的指令集B,所述重命名的指令集B包含指令集A的重命名的指令。
就指令集A而言,指令CMP比較寄存器r1的內(nèi)容是否等于0。如果該內(nèi)容等于0,那么發(fā)布指令A(yù)DDEQ來將寄存器r1的內(nèi)容和1相加并將結(jié)果存儲(chǔ)在寄存器r2中,所述寄存器r2是目的操作數(shù)的寄存器。相反,如果寄存器r1的內(nèi)容不同于0,那么發(fā)布指令A(yù)DDNE來將10加到該內(nèi)容并將結(jié)果存儲(chǔ)在寄存器r2中。接下來,發(fā)布指令A(yù)DD來將100加到存儲(chǔ)在寄存器r2中的結(jié)果,并將獲得的結(jié)果存儲(chǔ)在作為目的操作數(shù)的寄存器的寄存器r3中。
指令CMP的條件的執(zhí)行能夠確定后面的指令A(yù)DDEQ和ADDNE中的哪個(gè)被執(zhí)行。在下文中,“條件設(shè)置器指令”指的是確定諸如指令CMP的哪個(gè)條件指令將被執(zhí)行的指令。
存在這樣一種條件指令只有當(dāng)根據(jù)條件設(shè)置器指令的結(jié)果滿足某個(gè)條件時(shí)才能執(zhí)行相應(yīng)的指令。例如,這種條件指令包括ADDEQ和ADDNE。
條件用戶指令利用條件指令執(zhí)行的結(jié)果。在指令集A中,只有當(dāng)有效的條件指令被從條件指令A(yù)DDEQ和ADDNE選擇并且當(dāng)其結(jié)果被存儲(chǔ)在寄存器r2中時(shí),指令A(yù)DD才被執(zhí)行。因此,即使條件設(shè)置器指令和條件指令能夠被并行執(zhí)行,條件用戶指令也不被執(zhí)行,直到精確的條件被確定。
指令集A的指令A(yù)DDEQ可以被安排為根據(jù)指令CMP的結(jié)果稍后被處理,并且在獲得指令CMP的結(jié)果之前被執(zhí)行并被存儲(chǔ)在寄存器r2中。相反,指令A(yù)DDNE不能與指令CMP或指令A(yù)DDEQ同時(shí)執(zhí)行,這是因?yàn)橹噶預(yù)DDEQ已經(jīng)使用了寄存器r2并且還沒有獲得指令CMP的結(jié)果。因而,指令必須被順序執(zhí)行。
指令集B包含從條件指令的目的操作數(shù)被重命名為不同寄存器的指令。A’(由虛線指示)的寄存器r2分別被重新分配為B’(由虛線指示)中的C_r0和C_r1。因此,指令A(yù)DDEQ和ADDNE與指令CMP被并行執(zhí)行而不必等待指令CMP的結(jié)果,并且它們的結(jié)果被分別存儲(chǔ)到C_r0和C_r1。當(dāng)獲得指令CMP的結(jié)果時(shí),只有滿足結(jié)果之中的條件的條件指令結(jié)果被接受,其余的被舍棄。結(jié)果,指令集B中的作為條件用戶指令的指令A(yù)DD不能被并行執(zhí)行。
根據(jù)本發(fā)明的另一實(shí)施例,所有或一些指令可以被重命名以并行執(zhí)行多條指令。在這種情況下,為了并行處理,指令集A已經(jīng)被重命名,并且指令集A的集A’也可以為了并行處理而被重命名,所述指令集A參與了為了亂序執(zhí)行的重命名操作。
回頭參照?qǐng)D1,當(dāng)執(zhí)行圖2的指令集時(shí)具體地解釋硬件裝置。
硬件裝置100可被配備在計(jì)算機(jī)系統(tǒng)中。硬件裝置100可以被連接到存儲(chǔ)器(未示出)、高速緩沖存儲(chǔ)器(未示出)、輸入和輸出(I/O)接口(未示出)和總線架構(gòu)(未示出)。通過使用總線架構(gòu),硬件裝置100可被連接到接口,所述接口用于與諸如硬盤驅(qū)動(dòng)器(未示出)的存儲(chǔ)裝置以及諸如顯示器、鍵盤和調(diào)制解調(diào)器的計(jì)算機(jī)外圍設(shè)備連接。
硬件裝置100可被配備在包括高速緩沖存儲(chǔ)器(未示出)、I/O接口(未示出)和總線架構(gòu)(未示出)的處理器中。
硬件裝置100通過高速緩沖存儲(chǔ)器(未示出)從存儲(chǔ)器(未示出)讀取程序指令并執(zhí)行讀取的指令。因而,硬件裝置100按程序要求來處理和操作。
仍然參照?qǐng)D1,硬件裝置100包括解碼和發(fā)布部分110、執(zhí)行部分130、條件處理部分150和寄存器文件170。
指令發(fā)布隊(duì)列103和執(zhí)行部分130通過使用指令總線111來被連接。執(zhí)行部分130、寄存器文件170、條件檢驗(yàn)器155和條件執(zhí)行寄存器文件157通過使用結(jié)果總線113來被連接。寄存器文件170通過使用操作數(shù)總線115被連接到執(zhí)行部分130。
解碼和發(fā)布部分110包括解碼器101和指令發(fā)布隊(duì)列103。解碼和發(fā)布部分110從存儲(chǔ)器(未示出)取出指令,對(duì)條件指令重命名,并將指令亂序發(fā)布到執(zhí)行部分130。
解碼器101從存儲(chǔ)在存儲(chǔ)器(未示出)中的程序取出將被執(zhí)行的指令,并將取出的指令轉(zhuǎn)遞給指令發(fā)布隊(duì)列103。如果硬件裝置100支持超標(biāo)量架構(gòu),那么解碼器101在單個(gè)周期期間可以一次取出多條指令。
條件指令被解碼以對(duì)目的操作數(shù)的寄存器重命名,并被提供給指令發(fā)布隊(duì)列103和條件執(zhí)行緩沖器153。解碼器101將關(guān)于重命名的寄存器的信息提供給條件執(zhí)行寄存器文件157。
如果確定取出的指令是條件用戶指令,那么有效的條件指令被選擇,并且直到有效的條件指令的結(jié)果被存儲(chǔ)在寄存器文件170的相應(yīng)的寄存器中所述指令才被傳送到指令發(fā)布隊(duì)列103。
指令發(fā)布隊(duì)列103使用頂指針和底指針來遞歸分配和移動(dòng)隊(duì)列的入口,并以非遞歸的方式將頂指針和底指針之間的有效指令發(fā)布到執(zhí)行部分130。頂指針指示存儲(chǔ)新指令的入口,底指針指示指令發(fā)布隊(duì)列的入口之中的最舊的入口。由于指令以非遞歸的方式被發(fā)布,所以后面的入口可優(yōu)先于前面的入口被發(fā)布。
對(duì)于入口中的指令,當(dāng)源寄存器和源條件寄存器的數(shù)據(jù)作好準(zhǔn)備并且執(zhí)行部分130中存在可利用的執(zhí)行器時(shí),指令發(fā)布隊(duì)列130將每個(gè)指令發(fā)布到執(zhí)行部分130。
執(zhí)行部分130負(fù)責(zé)指令的實(shí)際執(zhí)行。執(zhí)行部分130包括至少一個(gè)執(zhí)行器。執(zhí)行部分130經(jīng)指令總線111從指令發(fā)布隊(duì)列103接收指令,并經(jīng)操作數(shù)總線115從寄存器文件170讀取用于指令執(zhí)行的操作數(shù)的值。在執(zhí)行部分130執(zhí)行的指令的結(jié)果經(jīng)結(jié)果總線113被提供給寄存器文件170、條件檢驗(yàn)器155和條件執(zhí)行寄存器文件157。
條件處理部分150包括最新的條件設(shè)置指針(LCSP)151、條件執(zhí)行緩沖器153、條件檢驗(yàn)器155和條件執(zhí)行寄存器文件157。
當(dāng)條件指令從解碼器101被供給指令發(fā)布隊(duì)列103時(shí),LCSP 151指定從指令發(fā)布隊(duì)列103分配的入口9000(在下文中,被稱為發(fā)布隊(duì)列入口),并將相應(yīng)的指令隊(duì)列的入口信息提供給條件執(zhí)行緩沖器153。
根據(jù)本發(fā)明的實(shí)施例,條件執(zhí)行緩沖器153支持用于條件指令的亂序執(zhí)行的重命名操作。當(dāng)條件指令被供給指令發(fā)布隊(duì)列103時(shí),條件執(zhí)行緩沖器153為重命名的條件指令分配一個(gè)入口(在下文中,被稱為執(zhí)行緩沖器入口)。如表2中所顯示,每個(gè)入口包括條件設(shè)置指針(CSP)、執(zhí)行條件(COND)、原始寄存器(OR)、重命名的寄存器(RR)、條件有效(CV)和有效(V)。
表2顯示了條件執(zhí)行緩沖器153的入口,所述入口被分配并被設(shè)置以處理?xiàng)l件指令A(yù)DDEQ和ADDNE。
在表2中,為兩個(gè)條件指令分派了兩個(gè)入口。
CSP存儲(chǔ)由LCSP 151指示的條件設(shè)置器指令的發(fā)布隊(duì)列入口。如果獲得條件設(shè)置器指令的結(jié)果,那么將使用該結(jié)果的條件指令可以從條件執(zhí)行緩沖器153被檢驗(yàn)。
COND存儲(chǔ)各個(gè)條件指令的條件。就如圖2中所示的指令集B而言,用于相加的條件EQ(指示相等)和NE(指示不相等)被存儲(chǔ)。
OR存儲(chǔ)條件指令的原始目的操作數(shù)的寄存器。RR存儲(chǔ)重命名的目的操作數(shù)的寄存器。
CV指示滿足相關(guān)的COND的條件的有效的條件指令。最好是,就有效的入口而言,CV被設(shè)置為1。就不滿足條件的無效的入口而言,CV被設(shè)置為零。CV可被設(shè)置為零,直到獲得條件設(shè)置器指令的結(jié)果。
V是用于入口管理的緩沖器。如果相關(guān)的入口被確定為無效的入口,那么V被設(shè)置為零而不是清除整個(gè)相關(guān)的入口,從而可使用該相關(guān)的入口來分派關(guān)于下一個(gè)條件指令的入口。
當(dāng)一從條件檢驗(yàn)器155接收到傳送與條件設(shè)置器指令的發(fā)布隊(duì)列入口相同的執(zhí)行緩沖器入口的COND的請(qǐng)求時(shí),條件執(zhí)行緩沖器153檢索CSP并將與條件設(shè)置器指令的發(fā)布隊(duì)列入口9000相同的執(zhí)行緩沖器入口的COND提供給條件檢驗(yàn)器155。
當(dāng)一通過結(jié)果總線113從執(zhí)行部分130接收到條件設(shè)置器指令的結(jié)果和相關(guān)的發(fā)布隊(duì)列入口9000時(shí),條件檢驗(yàn)器155向條件執(zhí)行緩沖器153請(qǐng)求具有與相關(guān)的條件設(shè)置器指令的發(fā)布隊(duì)列入口9000相同的CSP的執(zhí)行緩沖器入口的COND數(shù)據(jù)。接下來,條件檢驗(yàn)器155將接收到的COND與條件設(shè)置器指令的結(jié)果比較。在條件執(zhí)行緩沖器153的入口之中滿足條件的入口的CV被設(shè)置為1。
條件執(zhí)行寄存器文件157包括數(shù)據(jù)和有效的緩沖器。條件執(zhí)行寄存器文件157從解碼器101接收關(guān)于條件指令的重命名的寄存器的信息,并設(shè)置為有效的緩沖器。
當(dāng)通過結(jié)果總線113將重命名的目的操作數(shù)的寄存器地址提供給在執(zhí)行部分130執(zhí)行的條件指令的結(jié)果時(shí),條件執(zhí)行寄存器文件157將相應(yīng)的結(jié)果存儲(chǔ)在相關(guān)的寄存器的數(shù)據(jù)緩沖器中。例如,就圖2中所示的指令集B而言,指令A(yù)DDEQ的結(jié)果被存儲(chǔ)到C_r0,指令A(yù)DDNE的結(jié)果被存儲(chǔ)到C_r1。
根據(jù)條件檢驗(yàn)器155的條件檢驗(yàn),當(dāng)有效的條件指令被選擇時(shí),存儲(chǔ)在由條件執(zhí)行緩沖器153的RR指定的寄存器中的相應(yīng)的值最終被存儲(chǔ)到由條件執(zhí)行緩沖器153的OR指定的寄存器。
寄存器文件170將執(zhí)行指令所需的源操作數(shù)的寄存器值提供給執(zhí)行部分130,從執(zhí)行部分130接收指令的結(jié)果,并將該結(jié)果存儲(chǔ)在相應(yīng)的目的操作數(shù)的寄存器中。此外,寄存器文件170從條件執(zhí)行寄存器文件157接收有效的條件指令的結(jié)果,并將接收的結(jié)果存儲(chǔ)在由OR指定的寄存器中。
在下文中,參照?qǐng)D3到圖5基于圖2的指令集來示出按照類型來說的指令的執(zhí)行。盡管圖3到圖5分別解釋了按照類型來說的指令的執(zhí)行,但是假定指令的條件設(shè)置器指令和條件指令可被并行地并且以亂序執(zhí)行來被處理。
圖3是解釋根據(jù)本發(fā)明實(shí)施例亂序執(zhí)行條件指令的硬件裝置100如何處理?xiàng)l件設(shè)置器指令的流程圖。
參照?qǐng)D1和圖3,當(dāng)從存儲(chǔ)器(未示出)取出條件設(shè)置器指令CMP時(shí),解碼器101將取出的條件設(shè)置器指令CMP轉(zhuǎn)遞給指令發(fā)布隊(duì)列103。如果硬件裝置100支持超標(biāo)量架構(gòu),那么解碼器101在單個(gè)周期期間可以一次取出多條不同的指令(S301)。
當(dāng)指令發(fā)布隊(duì)列103接收到條件設(shè)置器指令并分派入口9000時(shí),LCSP151指示分派的發(fā)布隊(duì)列入口9000。指令發(fā)布隊(duì)列103亂序發(fā)布存儲(chǔ)在發(fā)布隊(duì)列的入口中的指令,并將條件設(shè)置器指令發(fā)布到相關(guān)的執(zhí)行部分130(S303)。
執(zhí)行部分130經(jīng)操作數(shù)總線115從寄存器文件170接收并執(zhí)行相應(yīng)的指令,所述相應(yīng)的指令被存儲(chǔ)在與指令CMP相關(guān)的源操作數(shù)r1的寄存器中。執(zhí)行部分130將結(jié)果提供給寄存器文件170和條件檢驗(yàn)器155(S305)。
寄存器文件170將從執(zhí)行部分130接收的結(jié)果存儲(chǔ)在相應(yīng)的目的操作數(shù)的寄存器中(S307)。注意到,沒有目的操作數(shù)的指令CMP沒有被存儲(chǔ)在寄存器文件170中。
當(dāng)在操作S305中一接收到條件設(shè)置器指令的結(jié)果時(shí),條件檢驗(yàn)器155檢驗(yàn)條件指令的條件是否被滿足,而不論條件指令的結(jié)果是否被存儲(chǔ)在條件執(zhí)行寄存器文件157中。
更具體地講,為了檢索與相應(yīng)的條件設(shè)置器指令相關(guān)的條件指令,條件檢驗(yàn)器155向條件執(zhí)行緩沖器153請(qǐng)求具有與條件設(shè)置器指令的發(fā)布隊(duì)列入口相同的CSP的執(zhí)行緩沖器入口的COND值。條件執(zhí)行緩沖器153在CSP中檢索被存儲(chǔ)為9000的執(zhí)行緩沖器入口,并將條件EQ和NE提供給條件檢驗(yàn)器155。
條件檢驗(yàn)器155通過使用COND的條件來檢索滿足條件的條件指令,并將CV設(shè)置為1。根據(jù)CMP的結(jié)果,如果當(dāng)存儲(chǔ)在r1中的值等于零時(shí)條件EQ被滿足,那么指令A(yù)DDEQ成為有效的條件指令,指令A(yù)DDNE成為無效的條件指令。因此,如表2中所顯示,第一入口的CV被設(shè)置為1,第二入口的CV被設(shè)置為零(S309)。
結(jié)果,完成了條件設(shè)置器指令的處理。注意到,需要條件設(shè)置器指令的結(jié)果來使條件指令的執(zhí)行完成,所述條件指令的執(zhí)行將參照?qǐng)D4來被描述。
圖4是解釋根據(jù)本發(fā)明實(shí)施例硬件裝置100如何亂序執(zhí)行條件指令的流程圖。
參照?qǐng)D1和圖4,當(dāng)從存儲(chǔ)器(未示出)取出條件指令A(yù)DDEQ和ADDNE時(shí)(S401),解碼器101在將條件指令A(yù)DDEQ和ADDNE轉(zhuǎn)遞給指令發(fā)布隊(duì)列103之前對(duì)它們重命名(S403)。為此,解碼器101通過檢驗(yàn)條件執(zhí)行寄存器文件157的有效來將目的操作數(shù)的寄存器重命名為可利用的寄存器。解碼器101將重命名的條件指令提供給指令發(fā)布隊(duì)列103,同時(shí)將重命名的寄存器信息C_r0和C_r1提供給條件執(zhí)行寄存器文件157。
當(dāng)指令發(fā)布隊(duì)列103接收到條件指令并分派入口時(shí),條件執(zhí)行緩沖器153還分派條件指令的執(zhí)行緩沖器入口。
就指令A(yù)DDEQ而言,如表2中所顯示的第一入口,在操作S303中條件執(zhí)行緩沖器153將由LCSP 151指示的條件設(shè)置器指令的發(fā)布隊(duì)列入口9000存儲(chǔ)到CSP,并將條件EQ存儲(chǔ)到COND。條件執(zhí)行緩沖器153將原始寄存器r2存儲(chǔ)在OR中,將重命名的寄存器C_r0存儲(chǔ)在RR中,將CV設(shè)置為零,并將V設(shè)置為1。
指令發(fā)布隊(duì)列103亂序發(fā)布存儲(chǔ)在發(fā)布隊(duì)列的入口中的指令,并將條件指令發(fā)布到相關(guān)的執(zhí)行部分130。該指令在操作S303中可與作為條件設(shè)置器指令的指令CMP并行被發(fā)布。簡(jiǎn)而言之,該指令被亂序發(fā)布(S405)。
執(zhí)行部分130通過操作數(shù)總線115從寄存器文件170接收存儲(chǔ)在與相應(yīng)的指令A(yù)DDEQ相關(guān)的源操作數(shù)的寄存器r1中的操作數(shù),并執(zhí)行相應(yīng)的指令(S407)。
執(zhí)行部分130將指令的結(jié)果提供給條件執(zhí)行寄存器文件157的重命名的寄存器,并將該指令的結(jié)果存儲(chǔ)在條件執(zhí)行寄存器文件157的重命名的寄存器中(S409)。例如,如圖2中所示的指令A(yù)DDEQ的結(jié)果被提供給寄存器C_r0。
當(dāng)條件檢驗(yàn)終止時(shí),在操作S409中有效的條件指令被選擇并且相關(guān)的執(zhí)行緩沖器入口的CV被設(shè)置,條件執(zhí)行寄存器文件157讀取由相關(guān)的執(zhí)行緩沖器入口的RR所指定的寄存器的值,并將該值存儲(chǔ)在由OR指定的寄存器文件170的原始寄存器中(S411)。
因此,條件指令能夠被執(zhí)行。
圖5是解釋根據(jù)本發(fā)明實(shí)施例所述硬件裝置如何處理?xiàng)l件用戶指令的流程圖。
參照?qǐng)D1和圖5,取出指令(S501)之后,如果取出的指令是一般的指令而非條件設(shè)置器指令或條件指令,那么解碼器101通過檢驗(yàn)源操作數(shù)的寄存器r2是否在條件執(zhí)行緩沖器153的OR中被指定來確定該取出的指令是否是條件用戶指令。如圖2中所顯示的指令A(yù)DD使用條件指令的目的操作數(shù)r2作為源操作數(shù)。在表2中,由于在操作S405中r2被分派為OR,所以指令A(yù)DD成為條件用戶指令。
當(dāng)一確定為條件用戶指令時(shí),解碼器101根據(jù)操作S411中的結(jié)果確定有效的條件指令是否被選擇(S503)。如果有效的條件指令被選擇,那么解碼器101將條件用戶指令提供給指令發(fā)布隊(duì)列103。
指令發(fā)布隊(duì)列103將入口分配給條件用戶指令并將該指令亂序發(fā)布到執(zhí)行部分130(S505)。當(dāng)執(zhí)行部分130執(zhí)行條件用戶指令(S507)時(shí),結(jié)果被存儲(chǔ)在寄存器文件170中(S509)。
因此,所述指令能夠被執(zhí)行。盡管已經(jīng)參照?qǐng)D1到圖3分別示出了指令,但是指令被并行執(zhí)行是預(yù)先安排好的。
由于通過使用寄存器重命名操作在操作S303和S305中條件設(shè)置器指令的執(zhí)行以及在操作S405和S407中條件指令的執(zhí)行沒有相互的數(shù)據(jù)依賴,所以條件設(shè)置器指令和條件指令被執(zhí)行部分130并行地并且亂序地執(zhí)行。
因而,硬件裝置100能夠亂序執(zhí)行條件指令。
如以上所闡述的,所述硬件裝置能夠亂序執(zhí)行條件指令。條件指令的依賴通過寄存器重命名被去除。當(dāng)執(zhí)行器的數(shù)量足夠時(shí),條件設(shè)置器指令和條件指令能夠在單個(gè)周期中被執(zhí)行,并且它們的結(jié)果能夠被選擇。此外,可提高整個(gè)系統(tǒng)的執(zhí)行速度。
不需要另外的指令,這是因?yàn)樽鳛橛布臈l件執(zhí)行緩沖器實(shí)現(xiàn)亂序執(zhí)行。
即使當(dāng)盡管寄存器重命名但因?yàn)闂l件指令不能滿足執(zhí)行條件而使執(zhí)行的條件指令變成無效時(shí),條件執(zhí)行緩沖器的入口也可被清除并被恢復(fù),而不必單獨(dú)恢復(fù)寄存器。
由于所述硬件沒有改變傳統(tǒng)的ISA,所以遺產(chǎn)程序可被再使用。
盡管已經(jīng)顯示并描述了本發(fā)明的一些實(shí)施例,但是本發(fā)明并不限于所描述的實(shí)施例。相反,本領(lǐng)域的技術(shù)人員應(yīng)該理解,在不脫離本發(fā)明的原理和精神的條件下可以對(duì)這些實(shí)施例進(jìn)行改變,本發(fā)明的范圍由權(quán)利要求及其等同物來限定。
權(quán)利要求
1.一種用于亂序執(zhí)行條件指令的硬件裝置,包括解碼和發(fā)布部分,取出用于設(shè)置條件的條件設(shè)置器指令、根據(jù)所述條件設(shè)置器指令的結(jié)果而被執(zhí)行的條件指令和使用所述條件指令的結(jié)果的條件用戶指令中的至少一個(gè),并通過針對(duì)所述條件指令將目的操作數(shù)的寄存器重命名為不同的寄存器來亂序發(fā)布取出的指令;執(zhí)行部分,包括至少一個(gè)執(zhí)行發(fā)布的指令的執(zhí)行器;條件處理部分,包括存儲(chǔ)重命名信息、條件和所述條件指令的結(jié)果的重命名的寄存器,并通過檢索有效的條件指令來輸出存儲(chǔ)的所述條件指令的結(jié)果,所述有效的條件指令的條件根據(jù)所述條件設(shè)置器指令的結(jié)果而被滿足;和寄存器文件,將從所述條件處理部分輸出的所述條件指令的結(jié)果存儲(chǔ)到原始寄存器。
2.根據(jù)權(quán)利要求1所述的硬件裝置,其中,所述解碼和發(fā)布部分包括解碼器,取出所述指令,當(dāng)取出的指令是條件指令時(shí),將所述目的操作數(shù)的寄存器重命名為另一寄存器并輸出所述取出的指令,并且當(dāng)所述取出的指令是條件用戶指令時(shí),等待將被存儲(chǔ)在所述寄存器文件的相應(yīng)的寄存器中的所述有效的條件指令的結(jié)果并輸出所述取出的指令;和指令發(fā)布隊(duì)列,給從所述解碼器輸出的指令分派發(fā)布隊(duì)列入口,并且當(dāng)在所述執(zhí)行部分中存在用于執(zhí)行所述指令的可利用的執(zhí)行器時(shí),將所述指令發(fā)布到所述執(zhí)行部分。
3.根據(jù)權(quán)利要求1所述的硬件裝置,其中,所述條件處理部分包括條件設(shè)置指針,指示由所述指令發(fā)布隊(duì)列分派給所述條件設(shè)置器指令的入口;條件執(zhí)行緩沖器,將重命名信息、條件和緩沖器入口分派給至少一個(gè)條件指令中的每個(gè),所述重命名信息是從所述解碼器接收的重命名的寄存器的信息以及原始寄存器信息,所述緩沖器入口存儲(chǔ)由所述條件設(shè)置指針指示的發(fā)布隊(duì)列入口信息;條件檢驗(yàn)器,當(dāng)所述條件設(shè)置器指令的結(jié)果從所述執(zhí)行部分被接收時(shí),向所述條件執(zhí)行緩沖器請(qǐng)求根據(jù)所述條件設(shè)置器指令的結(jié)果而被執(zhí)行的所述條件指令的條件,與所述條件設(shè)置器指令的結(jié)果比較,并選擇滿足所述條件的條件指令;和條件執(zhí)行寄存器文件,從所述執(zhí)行部分接收所述條件指令的結(jié)果,并將所述條件指令的結(jié)果暫時(shí)存儲(chǔ)在重命名的寄存器中。
4.根據(jù)權(quán)利要求3所述的硬件裝置,其中,所述條件執(zhí)行緩沖器包括每個(gè)緩沖器入口中的緩沖器,所述緩沖器根據(jù)所述條件檢驗(yàn)器的條件檢驗(yàn)來指示滿足所述條件的有效的條件指令。
5.根據(jù)權(quán)利要求3所述的硬件裝置,其中,所述條件執(zhí)行緩沖器還包括所述緩沖器入口中的緩沖器,所述緩沖器指示分派給所述條件指令的緩沖器入口是否被使用,并且指示當(dāng)所述解碼器對(duì)用于新近取出的條件指令的寄存器重命名時(shí),所述緩沖器入口是否被使用。
6.根據(jù)權(quán)利要求3所述的硬件裝置,其中,所述條件執(zhí)行寄存器文件與所述寄存器一起指示所述重命名的寄存器是否被使用,并且當(dāng)所述解碼器對(duì)用于新的條件指令的寄存器重命名時(shí),所述條件執(zhí)行寄存器文件允許使用所述寄存器。
7.根據(jù)權(quán)利要求3所述的硬件裝置,其中,當(dāng)所述取出的指令使用存儲(chǔ)在所述條件執(zhí)行緩沖器中的原始寄存器作為源操作數(shù)時(shí),所述解碼器確定所述指令為條件用戶指令。
8.一種用于通過使用硬件裝置來亂序執(zhí)行條件指令的計(jì)算機(jī)系統(tǒng),所述硬件裝置包括解碼和發(fā)布部分,取出用于設(shè)置條件的條件設(shè)置器指令、根據(jù)所述條件設(shè)置器指令的結(jié)果而被執(zhí)行的條件指令和使用所述條件指令的結(jié)果的條件用戶指令中的至少一個(gè),并通過針對(duì)所述條件指令將目的操作數(shù)的寄存器重命名為不同的寄存器來亂序發(fā)布取出的指令;執(zhí)行部分,包括至少一個(gè)執(zhí)行發(fā)布的指令的執(zhí)行器;條件處理部分,包括存儲(chǔ)重命名信息、條件和所述條件指令的結(jié)果的重命名的寄存器,并通過檢索有效的條件指令來輸出存儲(chǔ)的所述條件指令的結(jié)果,所述有效的條件指令的條件根據(jù)所述條件設(shè)置器指令的結(jié)果而被滿足;和寄存器文件,將從所述條件處理部分輸出的所述條件指令的結(jié)果存儲(chǔ)到原始寄存器。
9.一種支持條件指令的硬件裝置的亂序執(zhí)行方法,包括取出用于設(shè)置條件的條件設(shè)置器指令、根據(jù)所述條件設(shè)置器指令的結(jié)果而被執(zhí)行的條件指令和使用所述條件指令的結(jié)果的條件用戶指令中的至少一個(gè);當(dāng)取出的指令被發(fā)布以用于執(zhí)行時(shí),針對(duì)所述條件指令將目的操作數(shù)的寄存器重命名為不同的寄存器并亂序發(fā)布指令;分別存儲(chǔ)重命名信息和所述條件指令的條件;執(zhí)行所述發(fā)布的指令并將所述條件指令的結(jié)果存儲(chǔ)在重命名的寄存器中;當(dāng)所述條件設(shè)置器指令的執(zhí)行完成時(shí),通過使用存儲(chǔ)的重命名信息和存儲(chǔ)的條件來選擇有效的條件指令,所述有效的條件指令具有根據(jù)所述條件設(shè)置器指令的結(jié)果而被滿足的條件;和存儲(chǔ)所述重命名的寄存器的內(nèi)容,所述重命名的寄存器將所述有效的條件指令的結(jié)果存儲(chǔ)在原始寄存器中。
10.根據(jù)權(quán)利要求9所述的亂序執(zhí)行方法,其中,當(dāng)所述取出的指令是條件用戶指令時(shí),所述指令在所述有效的條件指令的結(jié)果被存儲(chǔ)在所述原始寄存器中之后被發(fā)布。
11.一種支持條件指令的硬件裝置中的條件設(shè)置器指令處理方法,包括從存儲(chǔ)器取出條件設(shè)置器指令,并將取出的條件設(shè)置器指令轉(zhuǎn)遞給指令發(fā)布隊(duì)列;當(dāng)所述指令發(fā)布隊(duì)列接收到所述條件設(shè)置器指令并已分派發(fā)布隊(duì)列入口時(shí),亂序發(fā)出存儲(chǔ)在所述發(fā)布隊(duì)列的入口中的指令;執(zhí)行與發(fā)布的指令相應(yīng)的指令,并將執(zhí)行結(jié)果提供給寄存器和條件檢驗(yàn)器;將接收到的執(zhí)行結(jié)果存儲(chǔ)在所述寄存器中;和當(dāng)一接收到所述執(zhí)行結(jié)果時(shí),檢驗(yàn)所述條件指令的條件是否被滿足。
全文摘要
一種用于亂序執(zhí)行條件指令的硬件裝置以及執(zhí)行方法。提供了一種架構(gòu),該架構(gòu)使得諸如支持條件指令的處理器以及計(jì)算機(jī)系統(tǒng)的硬件裝置能夠亂序執(zhí)行指令。為此,提供了一種條件執(zhí)行緩沖器,并且條件指令的目的操作數(shù)的寄存器被重命名為另一寄存器。因此,該使用條件指令的硬件裝置能夠?qū)崿F(xiàn)亂序執(zhí)行,并且該硬件裝置的執(zhí)行速度可被極大地提高。
文檔編號(hào)G06F9/38GK1746842SQ20051010252
公開日2006年3月15日 申請(qǐng)日期2005年9月8日 優(yōu)先權(quán)日2004年9月8日
發(fā)明者李溶錫, 鄭夏榮, 金南局, 鄭鎮(zhèn)宇, 張?zhí)? 金大雄 申請(qǐng)人:三星電子株式會(huì)社