跳越mov指令的處理器的制造方法
【專利說明】跳越MOV指令的處理器
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)要求序列號(hào)為N0.62/003206,申請(qǐng)日為2014年5月27日,名稱為“PROCESSOR THAT LEAPFROGS MOV INSTRUCT1N,跳越(LEAPFROG,或蛙跳)MOV 指令的處理器”的美國(guó)臨時(shí)申請(qǐng)的優(yōu)先權(quán),其在整體上通過參考被引入這里。
技術(shù)領(lǐng)域
[0003]本發(fā)明是關(guān)于一種處理器,特別是關(guān)于可實(shí)現(xiàn)第一指令以及在程序順序中位于所述第一指令之后的第二指令的亂序執(zhí)行的處理器。
【背景技術(shù)】
[0004]數(shù)據(jù)移動(dòng)是處理器的基本功能,無(wú)論是從內(nèi)存移動(dòng)數(shù)據(jù)至緩存器、從緩存器移動(dòng)數(shù)據(jù)至內(nèi)存、或從緩存器移動(dòng)數(shù)據(jù)至緩存器,處理器都使用MOV這個(gè)指令。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的一個(gè)方面提供了一種處理器,實(shí)現(xiàn)第一指令以及在程序順序中位于所述第一指令之后的第二指令的亂序執(zhí)行,其中所述第一指令包括源指示器和目的指示器,其中所述源指示器規(guī)定數(shù)據(jù)的源,其中所述目的指示器規(guī)定數(shù)據(jù)的目的地,其中所述第一指令命令所述處理器將數(shù)據(jù)從所述源移動(dòng)到所述目的地,其中所述第二指令規(guī)定用于規(guī)定數(shù)據(jù)的源的源指示器。所述處理器包括重命名單元,配置為將所述第二指令的源指示器與所述第一指令的目的指示器進(jìn)行比較。所述重命名單元還配置為確定按照程序順序是否存在位于所述第一和第二指令之間的用于寫入到所述第一指令的源或目的地的任何指令。所述重命名單元還配置為如果在所述第一和第二指令之間不存在用于寫入到所述第一指令的源或目的地的指令,并且所述第二指令的源指示器與所述第一指令的目的指示器相匹配,則用所述第一指令的源指示器來更新所述第二指令的源指示器。
[0006]本發(fā)明的另一方面提供了一種由處理器使用的方法,用于幫助實(shí)現(xiàn)第一指令以及在程序順序中位于所述第一指令之后的第二指令的亂序執(zhí)行,其中所述第一指令包括源指示器和目的指示器,其中所述源指示器規(guī)定數(shù)據(jù)的源,其中所述目的指示器規(guī)定數(shù)據(jù)的目的地,其中所述第一指令命令所述處理器將數(shù)據(jù)從所述源移動(dòng)到所述目的地,其中所述第二指令規(guī)定用于規(guī)定數(shù)據(jù)的源的源指示器。所述方法包括將所述第二指令的源指示器與所述第一指令的目的指示器進(jìn)行比較,確定按照程序順序是否存在位于所述第一和第二指令之間的用于寫入到所述第一指令的源或目的地的任何指令,以及如果在所述第一和第二指令之間不存在用于寫入到所述第一指令的源或目的地的指令,并且所述第二指令的源指示器與所述第一指令的目的指示器相匹配,則用所述第一指令的源指示器來更新所述第二指令的源指示器。
[0007]本發(fā)明的又一方面提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品被編碼在與計(jì)算裝置一起使用的至少一個(gè)永久性計(jì)算機(jī)可用介質(zhì)中,所述計(jì)算機(jī)程序產(chǎn)品包括包含在所述介質(zhì)中的計(jì)算機(jī)可用程序代碼,用于實(shí)現(xiàn)第一指令以及在程序順序中位于所述第一指令之后的第二指令的亂序執(zhí)行,其中所述第一指令包括源指示器和目的指示器,其中所述源指示器規(guī)定數(shù)據(jù)的源,其中所述目的指示器規(guī)定數(shù)據(jù)的目的地,其中所述第一指令命令所述處理器將數(shù)據(jù)從所述源移動(dòng)到所述目的地,其中所述第二指令規(guī)定用于規(guī)定數(shù)據(jù)的源的源指示器。所述計(jì)算機(jī)可用程序代碼包括:用于規(guī)定重命名單元的第一程序代碼。所述重命名單元配置為將所述第二指令的源指示器與所述第一指令的目的指示器進(jìn)行比較。所述重命名單元還配置為確定按照程序順序是否存在位于所述第一和第二指令之間的用于寫入到所述第一指令的源或目的地的任何指令。所述重命名單元還配置為如果在所述第一和第二指令之間不存在用于寫入到所述第一指令的源或目的地的指令,并且所述第二指令的源指示器與所述第一指令的目的指示器相匹配,則用所述第一指令的源指示器來更新所述第二指令的源指示器。
【附圖說明】
[0008]圖1為圖示微處理器的方框圖。
[0009]圖2為圖示微指令的各字段的方框圖。
[0010]圖3為更詳細(xì)圖示圖1的重命名單元的實(shí)施例的方框圖。
[0011]圖4為圖示圖1的重命名單元的操作的流程圖。
[0012]圖5為更詳細(xì)圖示圖1的重命名單元的替換實(shí)施例的方框圖。
[0013]圖6為圖示圖5的重命名單元的操作的流程圖。
[0014]圖7為圖示圖5的重命名單元的操作的流程圖。
[0015]圖8為圖示圖5的重命名單元的操作的流程圖。
【具體實(shí)施方式】
[0016]現(xiàn)在參看圖1,示出了圖示微處理器100的方框圖。微處理器100包括指令緩存102,指令翻譯器104,重命名單元106,保留站(reservat1n stat1n) 108,執(zhí)行單元112,結(jié)構(gòu)寄存器114,重排序緩沖器(ROB) 116,以及結(jié)果轉(zhuǎn)發(fā)總線118。其他功能單元(未示出)可以包括微編碼單元;分支預(yù)測(cè)器;存儲(chǔ)器子系統(tǒng),包括緩存層次結(jié)構(gòu)(例如,一級(jí)數(shù)據(jù)緩存,二級(jí)緩存),存儲(chǔ)器順序緩沖器,以及存儲(chǔ)器管理單元;數(shù)據(jù)預(yù)取單元;以及總線接口單元等等。微處理器100具有亂序(out-of-order)執(zhí)行微體系結(jié)構(gòu),在所述亂序執(zhí)行微體系結(jié)構(gòu)中,可以不按照程序順序來發(fā)出指令,以供執(zhí)行。更具體來講,可以不按照程序順序來發(fā)出通過翻譯結(jié)構(gòu)指令而得到的微指令,以供執(zhí)行。微指令的程序順序,與用來翻譯得到所述微指令的相應(yīng)結(jié)構(gòu)指令的程序順序相同。微處理器100還具有超標(biāo)量微體系結(jié)構(gòu),在所述超標(biāo)量微體系結(jié)構(gòu)中,能夠在每個(gè)時(shí)鐘周期內(nèi)發(fā)出多個(gè)指令至執(zhí)行單元112,以供執(zhí)行。在一個(gè)實(shí)施例中,微處理器100基本上符合x86指令集體系結(jié)構(gòu)。
[0017]指令緩存102用于對(duì)從系統(tǒng)存儲(chǔ)器中取出的結(jié)構(gòu)指令進(jìn)行緩存。指令翻譯器104將從指令緩存102中取出的結(jié)構(gòu)指令翻譯成微處理器100的微體系結(jié)構(gòu)的微指令集中的微指令。(參見圖2的微指令200的例子)。執(zhí)行單元112執(zhí)行所述微指令。通過翻譯結(jié)構(gòu)指令而得到的微指令用于實(shí)現(xiàn)所述結(jié)構(gòu)指令。
[0018]重命名單元106按照程序順序接收翻譯得到的微指令。ROB 116為環(huán)形隊(duì)列,該環(huán)形隊(duì)列的每一項(xiàng)(entry)包括存儲(chǔ)空間,用于存儲(chǔ)與微指令相關(guān)聯(lián)的信息,比如用于指示其結(jié)果是否有效以及該項(xiàng)(即,微指令本身)是否有效的標(biāo)志。重命名單元106按照程序順序?yàn)槊總€(gè)微指令在ROB 116中分配一個(gè)項(xiàng),并且用(圖2的DEST ROBIDX 208中的)所分配的ROB項(xiàng)的索引來更新該微指令。所分配的ROB 116項(xiàng)具有用于存儲(chǔ)微指令的結(jié)果的關(guān)聯(lián)存儲(chǔ)空間(結(jié)果字段)。當(dāng)微指令退休(retire)時(shí),將該微指令的來自ROB項(xiàng)的結(jié)果寫入到被指定為微指令目的地的結(jié)構(gòu)寄存器114。
[0019]重命名單元106將每個(gè)微指令分派給與將要執(zhí)行該微指令的執(zhí)行單元112相關(guān)聯(lián)的適當(dāng)保留站108。當(dāng)執(zhí)行單元112可用、并且該微指令的所有源操作數(shù)都可用時(shí),保留站108發(fā)出該微指令至執(zhí)行單元112,以供執(zhí)行。依據(jù)生成源操作數(shù)的寫程序微指令的狀態(tài),執(zhí)行單元112從結(jié)構(gòu)寄存器114、R0B 116或者轉(zhuǎn)發(fā)總線118之一接收源操作數(shù)。更具體來說,如果源操作數(shù)生成(或?qū)懗绦?微指令已經(jīng)退休,則結(jié)構(gòu)寄存器114將成為源;否則,ROB 116將成為源,除非在其所需的時(shí)鐘周期內(nèi)可在轉(zhuǎn)發(fā)總線118上得到該結(jié)果。
[0020]重命名單元106進(jìn)行寄存器重命名,以及微指令的依賴性生成。在一般情況下(例如,在非MOV跳越的情況下),對(duì)于立即微指令的每個(gè)源操作數(shù),重命名單元106確定被分配給“最新較舊寫程序”的ROB 116中的項(xiàng)的索引,其中所述“最新較舊寫程序”是程序順序中的最新微指令,但在程序順序中比立即微指令更舊一些,并寫入用于提供源操作數(shù)的結(jié)構(gòu)寄存器(由圖2中的SRC字段212規(guī)定)。接著,重命名單元106用所述最新較舊寫程序的ROB索引,即最新較舊寫程序的DEST ROBIDX 208來更新立即微指令(圖2的SRC ROBIDX字段216中)。
[0021]保留站108將處于等待的微指令的SRC ROBIDX字段216值與由執(zhí)行單元112生成的每個(gè)結(jié)果的ROB索引進(jìn)行比較,以確定該源操作數(shù)是否是可用的。從上面的描述中可以看到,這產(chǎn)生了處于等待的微指令對(duì)于其最新較舊寫程序的依賴性,使得直到所有的最新較舊寫程序都已經(jīng)產(chǎn)生了它們的結(jié)果為止,該處于等待的微指令才能被發(fā)出以供執(zhí)行。這一般不利于性能,因?yàn)檫@會(huì)導(dǎo)致在一個(gè)給定的時(shí)鐘周期內(nèi),執(zhí)行單元112中的一個(gè)或多個(gè)執(zhí)行單元由于沒有有效的微指令可執(zhí)行而處于空閑狀態(tài)。這被稱作利用不足。一般來說,微處理器100的利用率與所執(zhí)行程序的指令級(jí)并行性相關(guān),這涉及程序指令流的指令獨(dú)立量,其規(guī)定了微處理器在每個(gè)時(shí)鐘周期內(nèi)能夠發(fā)出多個(gè)微指令