两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

使用寄存器重命名處理移動(dòng)指令的制作方法

文檔序號(hào):11653947閱讀:269來(lái)源:國(guó)知局
使用寄存器重命名處理移動(dòng)指令的制造方法與工藝

本技術(shù)涉及數(shù)據(jù)處理領(lǐng)域。



背景技術(shù):

數(shù)據(jù)處理裝置可支持寄存器重命名,其中由指令指定的邏輯寄存器被映射到硬件中設(shè)置的物理寄存器。例如,這可有利于通過(guò)消除寫(xiě)入相同邏輯寄存器的連續(xù)指令之間的依賴性來(lái)提高性能,其中它們之間的依賴性可通過(guò)將指令的目的地邏輯寄存器映射到不同的物理寄存器來(lái)消除。這在無(wú)序處理器中是特別有用的,因?yàn)槭褂眉拇嫫髦孛酥噶钪g的數(shù)據(jù)依賴的風(fēng)險(xiǎn),增加了改變指令執(zhí)行順序的自由,以改善性能。



技術(shù)實(shí)現(xiàn)要素:

至少一些示例提供了一種裝置,包括:

處理電路,該處理電路響應(yīng)于指令而執(zhí)行數(shù)據(jù)處理;

寄存器重命名電路,該寄存器重命名電路將由指令指定的邏輯寄存器映射到硬件中設(shè)置的物理寄存器;

控制電路,該控制電路選擇第一移動(dòng)處理技術(shù)和第二移動(dòng)處理技術(shù)中的一者用于處理指定源邏輯寄存器和目的地邏輯寄存器的移動(dòng)指令;其中:

在第一移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,寄存器重命名電路被配置為將目的地邏輯寄存器映射到與源邏輯寄存器相同的物理寄存器;

在第二移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,處理電路被配置為將從對(duì)應(yīng)于所述源邏輯寄存器的物理寄存器讀取的數(shù)據(jù)值寫(xiě)入對(duì)應(yīng)于所述目的地邏輯寄存器的不同物理寄存器;以及

該控制電路被配置為:當(dāng)移動(dòng)指令的源邏輯寄存器與根據(jù)第一移動(dòng)處理技術(shù)處理的較早移動(dòng)指令的源邏輯寄存器和目的地邏輯寄存器中的一者相同并且針對(duì)所述源邏輯寄存器和目的地邏輯寄存器中的一者的當(dāng)前寄存器映射與在處理所述較早移動(dòng)指令時(shí)針對(duì)所述源邏輯寄存器和目的地邏輯寄存器中的一者所使用的映射相同時(shí),選擇第二移動(dòng)處理技術(shù)。

至少一些示例提供了一種裝置,包括:

響應(yīng)于指令而執(zhí)行數(shù)據(jù)處理的裝置;

用于將由指令指定的邏輯寄存器映射到硬件中設(shè)置的物理寄存器的裝置;以及

選擇第一移動(dòng)處理技術(shù)和第二移動(dòng)處理技術(shù)中的一者用于處理指定源邏輯寄存器和目的地邏輯寄存器的移動(dòng)指令的裝置;其中:

在第一移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,用于映射的裝置被配置為將目的地邏輯寄存器映射到與源邏輯寄存器相同的物理寄存器;

在第二移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,用于執(zhí)行數(shù)據(jù)處理的裝置被配置為將從對(duì)應(yīng)于所述源邏輯寄存器的物理寄存器讀取的數(shù)據(jù)值寫(xiě)入對(duì)應(yīng)于所述目的地邏輯寄存器的不同物理寄存器;以及

用于選擇的裝置被配置為:當(dāng)移動(dòng)指令指定的源邏輯寄存器與根據(jù)第一移動(dòng)處理技術(shù)處理的較早移動(dòng)指令的源邏輯寄存器和目的地邏輯寄存器中的一者相同并且針對(duì)所述源邏輯寄存器和目的地邏輯寄存器中的一者的當(dāng)前寄存器映射與處理所述較早移動(dòng)指令時(shí)針對(duì)所述源邏輯寄存器和目的地邏輯寄存器中的一者所使用的映射相同時(shí),選擇第二移動(dòng)處理技術(shù)。

至少一些示例提供了一種數(shù)據(jù)處理方法,包括:

選擇第一移動(dòng)處理技術(shù)和第二移動(dòng)處理技術(shù)中的一者用于處理指定源邏輯寄存器和目的地邏輯寄存器的移動(dòng)指令;

當(dāng)?shù)谝灰苿?dòng)處理技術(shù)被選擇時(shí),將目的地邏輯寄存器映射到與源邏輯寄存器相同的物理寄存器;

當(dāng)?shù)诙苿?dòng)處理技術(shù)被選擇時(shí),將從對(duì)應(yīng)于所述源邏輯寄存器的物理寄存器讀取的數(shù)據(jù)值寫(xiě)入對(duì)應(yīng)于所述目的地邏輯寄存器的不同物理寄存器;以及

其中,當(dāng)移動(dòng)指令指定的源邏輯寄存器與根據(jù)第一移動(dòng)處理技術(shù)處理的較早移動(dòng)指令的源邏輯寄存器和目的地邏輯寄存器中的一者相同并且針對(duì)所述源邏輯寄存器和目的地邏輯寄存器中的一者的當(dāng)前寄存器映射與處理所述較早移動(dòng)指令時(shí)針對(duì)所述源邏輯寄存器和目的地邏輯寄存器中的一者所使用的映射相同時(shí),第二移動(dòng)處理技術(shù)被選擇。

本技術(shù)的其它方面、特征和優(yōu)點(diǎn)將從以下結(jié)合附圖來(lái)閱讀的示例的描述中顯而易見(jiàn)。

附圖說(shuō)明

圖1示意性地示出具有寄存器重命名電路的數(shù)據(jù)處理裝置的示例;

圖2a示出用于處理移動(dòng)指令的第一移動(dòng)處理技術(shù)的示例;

圖2b示出用于處理移動(dòng)指令的第二移動(dòng)處理技術(shù)的示例;

圖3示出針對(duì)第一移動(dòng)指令使用第一移動(dòng)處理技術(shù)以及根據(jù)第一移動(dòng)指令的源邏輯寄存器或目的地邏輯寄存器來(lái)針對(duì)隨后的移動(dòng)指令使用第二移動(dòng)處理技術(shù)的示例;

圖4示出確定在根據(jù)第一移動(dòng)處理技術(shù)處理移動(dòng)指令之后所映射到兩個(gè)不同邏輯寄存器的物理寄存器何時(shí)可被重新分配給不同的邏輯寄存器的示例;

圖5示出處理移動(dòng)指令的方法的流程圖;

圖6示出確定物理寄存器何時(shí)可被重新分配的方法;

圖7是示出給定物理寄存器的狀態(tài)轉(zhuǎn)換的狀態(tài)圖;

圖8示出使用推測(cè)和架構(gòu)重命名表的寄存器重命名電路的第二個(gè)實(shí)施例;

圖9示出使用圖8的實(shí)施例處理移動(dòng)指令的示例;

圖10示出在第二實(shí)施例中處理移動(dòng)指令的方法;

圖11示出在指令被提交時(shí)更新架構(gòu)重命名表的方法;

圖12示出響應(yīng)沖洗(flush)事件的方法;

圖13示出在第二實(shí)施例中確定物理寄存器何時(shí)可被重新分配的方法;

圖14是示出在第二實(shí)施例中給定物理寄存器的狀態(tài)轉(zhuǎn)換的狀態(tài)圖。

具體實(shí)施方式

以下將描述一些具體示例。應(yīng)當(dāng)理解的是,本發(fā)明不限于這些確切的示例。

指定源邏輯寄存器和目的地邏輯寄存器的移動(dòng)指令可被提供。對(duì)于不支持寄存器重命名的系統(tǒng),響應(yīng)于移動(dòng)指令,處理電路會(huì)從一個(gè)寄存器讀取數(shù)據(jù)值,并將該數(shù)據(jù)值寫(xiě)入不同的寄存器。然而,在寄存器重命名支持的情況下,通過(guò)簡(jiǎn)單地將移動(dòng)指令的目的地邏輯寄存器重映射到當(dāng)前被映射至源邏輯寄存器的相同的物理寄存器,移動(dòng)指令可在重命名級(jí)被更快地處理。使用寄存器重命名電路來(lái)處理移動(dòng)指令可幫助提高性能,首先通過(guò)消除對(duì)向處理電路實(shí)際分派移動(dòng)指令的需要,從而為其它指令釋放處理槽,并且還因?yàn)樽x取目的地邏輯寄存器的后續(xù)指令移動(dòng)指令有效地變得對(duì)于寫(xiě)入移動(dòng)指令的源邏輯寄存器的較舊指令產(chǎn)生依賴,因此后續(xù)指令不需要等待其操作數(shù)變得可用,從而提高了性能。

由于給定的移動(dòng)指令在重命名級(jí)通常比其在實(shí)際上由處理電路處理的情況下可被更快地處理,人們總是期望使用重命名技術(shù)來(lái)處理移動(dòng)指令。然而,這樣可能出現(xiàn)一些復(fù)雜情況,因?yàn)楫?dāng)通過(guò)將目的地邏輯寄存器重新映射到與重命名電路處的源邏輯寄存器相同的物理寄存器來(lái)處理移動(dòng)指令時(shí),會(huì)導(dǎo)致多個(gè)邏輯寄存器都被映射到相同的物理寄存器。這可能使得更難確定給定物理寄存器何時(shí)不再被任意未決指令所需要以及何時(shí)可被重新分配給不同的邏輯寄存器。給定程序可包括移動(dòng)指令鏈,其中各個(gè)指令取決于先前移動(dòng)指令的結(jié)果。例如,一個(gè)移動(dòng)指令可將數(shù)據(jù)從邏輯寄存器a移動(dòng)到邏輯寄存器b,另一個(gè)移動(dòng)指令隨后將數(shù)據(jù)從邏輯寄存器b移動(dòng)到邏輯寄存器c,接著是再一個(gè)移動(dòng)指令將數(shù)據(jù)從邏輯寄存器c移動(dòng)到邏輯寄存器d,以此類推。如果鏈中的這些移動(dòng)指令中的每一者使用重命名技術(shù)來(lái)處理,則這可能導(dǎo)致許多邏輯寄存器都被映射到相同的物理寄存器,并且這可能使物理寄存器解除分配復(fù)雜化。解決這個(gè)問(wèn)題的方法是為每個(gè)物理寄存器提供多個(gè)計(jì)數(shù)器,每當(dāng)邏輯寄存器映射到該物理寄存器時(shí)遞增計(jì)數(shù)器,并且當(dāng)該映射不再被需要時(shí)遞減計(jì)數(shù)器。當(dāng)計(jì)數(shù)器達(dá)到零時(shí),物理寄存器隨后可被重新分配給不同的邏輯寄存器。然而,這是相對(duì)昂貴的解決方案,因?yàn)橥ǔ5母叨藷o(wú)序處理流水線可具有多達(dá)160-180個(gè)物理寄存器,這樣為每個(gè)物理寄存器提供具有自身的多位計(jì)數(shù)器的可導(dǎo)致:除了為每個(gè)物理寄存器提供用于增加或減少計(jì)數(shù)器以及將計(jì)數(shù)器與零進(jìn)行比較以確定物理寄存器何時(shí)可被重新分配的電路之外,還需要存儲(chǔ)大量額外狀態(tài)數(shù)據(jù)。

取而代之的是,裝置可設(shè)置有控制電路,以便選擇第一移動(dòng)處理技術(shù)和第二移動(dòng)處理技術(shù)中的一者用于處理移動(dòng)指令。在第一移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,寄存器重命名電路將目的地邏輯寄存器映射到與源邏輯寄存器相同的物理寄存器。在第二移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,處理電路將從對(duì)應(yīng)于所述源邏輯寄存器的物理寄存器讀取的數(shù)據(jù)值寫(xiě)入對(duì)應(yīng)于所述目的地邏輯寄存器的不同物理寄存器。當(dāng)移動(dòng)指令指定的源邏輯寄存器與根據(jù)第一技術(shù)處理的較早移動(dòng)指令指定的源邏輯寄存器和目的地邏輯寄存器中的一者相同并且針對(duì)該源邏輯寄存器和目的地邏輯寄存器中的一者的當(dāng)前寄存器映射仍然是在處理較早移動(dòng)指令時(shí)的映射時(shí),控制電路可選擇第二移動(dòng)處理技術(shù)。

在某些場(chǎng)合期望選擇第二移動(dòng)處理技術(shù)將會(huì)損害性能,因?yàn)榈诙苿?dòng)處理技術(shù)通??赡鼙鹊谝灰苿?dòng)處理技術(shù)慢。然而,在實(shí)踐中,發(fā)明人觀察到,當(dāng)存在從屬移動(dòng)指令鏈時(shí),鏈中的第二移動(dòng)指令以及鏈中的任何后續(xù)移動(dòng)指令通常不在關(guān)鍵路徑上。在處理的關(guān)鍵路徑(限制性能的路徑)上觀察到的大多數(shù)移動(dòng)沒(méi)有取決于該移動(dòng)的后續(xù)移動(dòng)。因此,已發(fā)現(xiàn)在根據(jù)第一移動(dòng)處理技術(shù)來(lái)處理鏈的第一移動(dòng)指令,而后續(xù)鏈接的移動(dòng)使用第二移動(dòng)處理技術(shù)被處理的情況下,使用第一移動(dòng)處理技術(shù)來(lái)處理移動(dòng)指令可實(shí)現(xiàn)許多性能優(yōu)點(diǎn)。因此,當(dāng)移動(dòng)指令指定的源邏輯寄存器與根據(jù)第一技術(shù)處理的較早移動(dòng)指令指定的源邏輯寄存器和目的地邏輯寄存器中的一者相同并且針對(duì)該源邏輯寄存器和目的地邏輯寄存器中的一者的當(dāng)前寄存器映射仍然是在處理較早移動(dòng)指令時(shí)的映射時(shí),通過(guò)選擇第二移動(dòng)處理技術(shù)則可避免對(duì)用于跟蹤映射到相同物理寄存器的大量邏輯寄存器的復(fù)雜電路的需求,以便節(jié)省電路面積和功耗,但是直觀上,這也不會(huì)導(dǎo)致顯著的性能損失。

在一些示例中,除了上述條件(即,當(dāng)移動(dòng)指令的源與較早移動(dòng)指令的源或目的地匹配并且針對(duì)該源邏輯寄存器和目的地邏輯寄存器中的一者的當(dāng)前寄存器映射仍然是在處理較早移動(dòng)指令時(shí)的映射時(shí))之外的情況下可選擇第一移動(dòng)處理技術(shù)。另一方面,在除了上述條件之外的某些情況下也可選擇第二移動(dòng)處理技術(shù)。

注意的是,在確定如何處理給定移動(dòng)指令的時(shí)候,當(dāng)針對(duì)較早移動(dòng)指令的源或目的地邏輯寄存器的當(dāng)前寄存器映射仍然與當(dāng)處理較早移動(dòng)指令時(shí)使用的寄存器映射相同時(shí),這不一定意味著從處理較早移動(dòng)指令以來(lái),針對(duì)該邏輯寄存器的寄存器映射沒(méi)有改變。雖然通常情況是這樣的,但是在支持指令的推測(cè)重命名的系統(tǒng)中,可能的是,另一個(gè)指令可能被推測(cè)地重命名以改變針對(duì)相關(guān)邏輯寄存器的寄存器映射。如果隨后檢測(cè)到其他指令不應(yīng)被執(zhí)行(例如,分支可能已被錯(cuò)誤預(yù)測(cè)),則流水線可被沖洗且針對(duì)該邏輯寄存器的寄存器映射可恢復(fù)到在處理較早移動(dòng)指令時(shí)其具有的較早寄存器映射。

在第一移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,寄存器重命名電路將目的地邏輯寄存器映射到與源邏輯寄存器相同的物理寄存器。當(dāng)使用第一移動(dòng)處理技術(shù)時(shí),控制電路可抑制向處理電路分派移動(dòng)指令。

另一方面,對(duì)于第二移動(dòng)處理技術(shù),寄存器重命名電路可將移動(dòng)指令的目的地邏輯寄存器映射到與當(dāng)前映射到源邏輯寄存器的第一物理寄存器不同的第二物理寄存器。接著,該移動(dòng)可由處理電路分派和執(zhí)行,以便從第一物理寄存器讀取數(shù)據(jù)值,并將該數(shù)據(jù)值寫(xiě)入第二物理寄存器。

跟蹤使用在處理較早移動(dòng)時(shí)所使用的寄存器映射的給定邏輯寄存器是否是較早移動(dòng)指令的源或目的地的一種方式是提供若干控制標(biāo)志,其中每個(gè)控制標(biāo)志對(duì)應(yīng)于邏輯寄存器中的一者。例如,每個(gè)控制標(biāo)志可與相應(yīng)的邏輯寄存器一起存儲(chǔ)在重命名表中,以進(jìn)行物理寄存器映射。控制電路可基于對(duì)應(yīng)于要被處理的新移動(dòng)指令的源邏輯寄存器的控制標(biāo)志來(lái)在第一移動(dòng)處理技術(shù)和第二移動(dòng)處理技術(shù)之間進(jìn)行選擇。每個(gè)控制標(biāo)志可取第一值以及第二值。當(dāng)使用第一移動(dòng)處理技術(shù)處理移動(dòng)指令時(shí),控制電路將對(duì)應(yīng)于該移動(dòng)指令的源邏輯寄存器及目的地邏輯寄存器的控制標(biāo)志都設(shè)定為第一值。當(dāng)寄存器重命名電路針對(duì)不同于使用第一移動(dòng)處理技術(shù)處理的移動(dòng)指令的指令來(lái)將給定邏輯寄存器重新映射到不同物理寄存器時(shí),控制標(biāo)志被設(shè)定為第二值。當(dāng)遇到移動(dòng)指令時(shí),控制電路檢查對(duì)應(yīng)于移動(dòng)指令的源邏輯寄存器的控制標(biāo)志。當(dāng)控制標(biāo)志具有第一值時(shí),針對(duì)該移動(dòng)指令選擇第二移動(dòng)處理技術(shù)。當(dāng)控制標(biāo)志具有第二值時(shí),選擇第一移動(dòng)處理技術(shù)。第一值和第二值可以分別對(duì)應(yīng)于1和0,反之亦可。

這種方法將可被映射到相同物理寄存器的邏輯寄存器的最大數(shù)目限制為兩個(gè),使得控制物理寄存器重新分配的開(kāi)銷可被減少,因?yàn)闉槊總€(gè)邏輯寄存器提供控制標(biāo)志比以上所討論的為每個(gè)物理寄存器提供多位計(jì)數(shù)器和相關(guān)聯(lián)的控制邏輯的可選技術(shù)具有更高面積效率,這是由于通常在由處理器支持的架構(gòu)中存在的邏輯寄存器比在硬件中設(shè)置的物理寄存器少得多。

該裝置可具有寄存器預(yù)留電路,以控制哪些物理寄存器可用于由寄存器重命名電路重新分配給不同的邏輯寄存器。在一些系統(tǒng)中,寄存器預(yù)留電路可被認(rèn)為與寄存器重命名電路是分離開(kāi)的,而在其他示例中,寄存器預(yù)留電路可是寄存器重命名電路自身的一部分。一般來(lái)說(shuō),如果后續(xù)指令可能潛在地需要存儲(chǔ)在物理寄存器中的值(或者因?yàn)槲锢砑拇嫫髦械闹当硎竞罄m(xù)指令所需的當(dāng)前架構(gòu)狀態(tài),或者因?yàn)槲锢砑拇嫫鞅A粝惹暗募軜?gòu)狀態(tài),該先前的架構(gòu)狀態(tài)在存在錯(cuò)誤推測(cè)的情況下可能需要被恢復(fù)),則寄存器預(yù)留電路可預(yù)留物理寄存器以防止它們被重新分配。

存在許多控制物理寄存器重新分配的方式:一些方法可允許物理寄存器更早地被回收以提高性能,而其他方法可能會(huì)更保守,但是需要復(fù)雜性較低的控制電路以節(jié)省面積和功率。一般來(lái)說(shuō),寄存器預(yù)留電路可針對(duì)邏輯寄存器與物理寄存器之間的每個(gè)寄存器映射來(lái)確定是否滿足重新分配物理寄存器的重新分配條件。例如,重新分配條件可基于對(duì)讀取或?qū)懭胂鄳?yīng)的邏輯寄存器的后續(xù)指令的觀察。在第一示例中,當(dāng)寫(xiě)入相同邏輯寄存器的較新指令已被提交,并且在不存在比較新指令更早的待運(yùn)行的未決指令時(shí),可滿足重新分配條件。在第二示例中,寄存器預(yù)留電路可跟蹤待由未決指令讀取的邏輯寄存器,并當(dāng)不存在更多的對(duì)應(yīng)于相同的邏輯寄存器的待運(yùn)行的未決指令并且在指定與目的寄存器相同的邏輯寄存器的較新指令被保證提交時(shí),給定的邏輯至物理寄存器映射滿足重新分配條件。與第一種方法相比,第二種方法可提高性能,因?yàn)榻o定的物理寄存器可更快地用于重新分配(如果不存在實(shí)際讀取物理寄存器的剩余指令,則不需要等待較新指令的實(shí)際提交)。另一方面,第一種方法可更有效地在電路中實(shí)現(xiàn),因?yàn)榭珊?jiǎn)單地基于未決指令的相對(duì)壽命來(lái)評(píng)估重新分配條件,并且不需要跟蹤由每條指令讀取的寄存器。因此,所使用的特定重新分配條件可在面積和性能之間的進(jìn)行權(quán)衡。

不管使用什么類型的重新分配條件,在根據(jù)第一移動(dòng)處理技術(shù)處理移動(dòng)指令之后,寄存器預(yù)留電路可防止被映射到移動(dòng)的源邏輯寄存器和目的地邏輯寄存器的物理寄存器變?yōu)榭捎糜谥匦路峙?,直到移?dòng)的源邏輯寄存器和目的地邏輯寄存器兩者都滿足重新分配條件。如上所述,通過(guò)在第一移動(dòng)處理技術(shù)和第二移動(dòng)處理技術(shù)之間進(jìn)行選擇,釋放給定物理寄存器僅需要跟蹤兩個(gè)不同的邏輯寄存器的重新分配條件,而不需要三個(gè)或更多個(gè)寄存器的鏈。這使得寄存器預(yù)留電路在面積和功耗方面更有效地被實(shí)現(xiàn)。

例如,跟蹤源邏輯寄存器映射和目的地邏輯寄存器映射是否滿足重新分配條件的一種方式可以是維持每個(gè)物理寄存器的寄存器狀態(tài)信息,該寄存器狀態(tài)信息指示各物理寄存器的多個(gè)寄存器狀態(tài)中的一個(gè)狀態(tài)。寄存器狀態(tài)可包括至少可用狀態(tài)、預(yù)留狀態(tài)和幾乎可用狀態(tài)。在一些系統(tǒng)中,可能存在比這三種狀態(tài)多的狀態(tài)(例如,如果存在物理寄存器可能需要被保護(hù)以避免重新分配的其他情況)。

當(dāng)給定的邏輯寄存器被映射到新的物理寄存器時(shí),該新的物理寄存器可從那些由相應(yīng)的寄存器狀態(tài)信息指示可用狀態(tài)的物理寄存器中選擇。處于預(yù)留狀態(tài)或幾乎可用狀態(tài)的物理寄存器沒(méi)有資格被選擇作為新的物理寄存器。當(dāng)新的物理寄存器被選擇并被映射到給定的邏輯寄存器時(shí),針對(duì)所選擇的物理寄存器的相應(yīng)寄存器狀態(tài)信息被更新為指示預(yù)留狀態(tài)。這樣可在其返回到可用狀態(tài)之前防止物理寄存器被映射到不同的邏輯寄存器。

在根據(jù)第一移動(dòng)處理技術(shù)處理移動(dòng)指令之后,映射到移動(dòng)的源邏輯寄存器及目的地邏輯寄存器這兩者的給定物理寄存器最初處于預(yù)留狀態(tài)(當(dāng)該物理寄存器響應(yīng)于較早指令之前已被分配給移動(dòng)的源邏輯寄存器時(shí),該物理寄存器可能已經(jīng)過(guò)渡到保留狀態(tài))。當(dāng)確定給定物理寄存器與源邏輯寄存器和目的地邏輯寄存器中的任一者之間的寄存器映射滿足重新分配條件并且給定物理寄存器的寄存器狀態(tài)信息指示預(yù)留狀態(tài)時(shí),給定物理寄存器的寄存器狀態(tài)信息被更新為指示幾乎可用狀態(tài),這樣物理寄存器尚未變得可用于重新分配(因?yàn)橐苿?dòng)的源邏輯寄存器和目的地邏輯寄存器中的另一者還不滿足重新分配條件)。當(dāng)源邏輯寄存器和目的地邏輯寄存器中的一者與給定物理寄存器之間的寄存器映射被檢測(cè)到滿足重新分配條件并且給定物理寄存器的寄存器狀態(tài)信息指示幾乎可用狀態(tài)時(shí),則該給定物理寄存器的寄存器狀態(tài)信息被更新為指示可用狀態(tài)。此時(shí),該物理寄存器再次變得可用于重新映射至不同的邏輯寄存器。因此,根據(jù)第一移動(dòng)處理技術(shù)處理的移動(dòng)指令的源寄存器和目的地寄存器映射都需要在相應(yīng)的物理寄存器可被重新分配之前滿足重新分配條件。

在一些系統(tǒng)中,寄存器重命名電路可使用單個(gè)重命名表來(lái)跟蹤邏輯寄存器和物理寄存器之間的寄存器映射。

然而,在其他示例中,將重命名表劃分為推測(cè)重命名表和架構(gòu)重命名表可能是有用的,其中推測(cè)重命名表用于標(biāo)識(shí)響應(yīng)于推測(cè)重命名指令而更新的寄存器映射以及架構(gòu)重命名表用于標(biāo)識(shí)響應(yīng)于所提交的指令而更新的寄存器映射。這對(duì)于在知曉指令實(shí)際上是否應(yīng)該被運(yùn)行之前支持這些指令的推測(cè)性的運(yùn)行可能是有用的。推測(cè)重命名表可被推測(cè)性地更新(例如在分派時(shí)間),并且如果推測(cè)是正確的,則推測(cè)重命名表中的寄存器映射是有效的。一旦指令被提交,架構(gòu)重命名表就可被更新,這表示針對(duì)被保證運(yùn)行的指令的最后知曉的寄存器映射。如果存在錯(cuò)誤推測(cè)(例如,分支錯(cuò)誤預(yù)測(cè)或不正確的數(shù)據(jù)預(yù)取),則架構(gòu)重命名表可用于將先前寄存器映射恢復(fù)到推測(cè)重命名表,以使處理能夠在發(fā)生錯(cuò)誤推測(cè)之前從先前點(diǎn)被恢復(fù)。

在這種系統(tǒng)中,控制電路可基于推測(cè)重命名表來(lái)選擇使用第一移動(dòng)處理技術(shù)還是使用第二移動(dòng)處理技術(shù),而寄存器預(yù)留電路可基于架構(gòu)重命名表來(lái)控制物理寄存器是否可被重新分配。這確保了在當(dāng)來(lái)自架構(gòu)重命名表的映射在錯(cuò)誤推測(cè)之后被恢復(fù)到推測(cè)重命名表時(shí)仍然需要物理寄存器的情況中,這些物理寄存器不被重新分配。更具體地,當(dāng)移動(dòng)指令的源邏輯寄存器與根據(jù)第一移動(dòng)處理技術(shù)處理的較早移動(dòng)的源邏輯寄存器和目的地邏輯寄存器中的一者相同并且針對(duì)該源邏輯寄存器和目的地邏輯寄存器中的一者的在推測(cè)重命名表中的當(dāng)前寄存器映射與處理較早移動(dòng)指令時(shí)使用的寄存器映射相同時(shí),控制電路可選擇第二移動(dòng)處理技術(shù)。寄存器預(yù)留電路可防止映射到給定移動(dòng)的源邏輯寄存器和目的地邏輯寄存器的物理寄存器可用于重新分配,直到針對(duì)移動(dòng)的源寄存器和目的地寄存器這兩者的寄存器映射已在架構(gòu)重命名表中被重寫(xiě)。

除了推測(cè)和架構(gòu)重命名表,傳送緩沖器可被提供來(lái)存儲(chǔ)一個(gè)或多個(gè)寄存器映射條目,該映射條目指定在相應(yīng)的指令被提交時(shí)在推測(cè)重命名表中已被更新但在架構(gòu)重命名表中仍然待更新的寄存器映射。傳送緩沖器可使架構(gòu)重命名表的更新更簡(jiǎn)單以在電路中實(shí)現(xiàn),并且還具有如下優(yōu)點(diǎn):如果存在沖洗且來(lái)自架構(gòu)重命名表的映射被恢復(fù)到推測(cè)重命名表,則傳送緩沖器的一些寄存器映射可被用于重建推測(cè)重命名表,直到?jīng)_洗事件發(fā)生的時(shí)間點(diǎn)。

推測(cè)重命名表、傳送緩沖器和架構(gòu)重命名表的每個(gè)條目可具有相應(yīng)的控制標(biāo)志,所述控制標(biāo)志指示相應(yīng)的寄存器映射是否對(duì)應(yīng)于根據(jù)第一移動(dòng)處理技術(shù)處理的移動(dòng)的源邏輯寄存器或目的地邏輯寄存器。這些控制標(biāo)志可使用上面討論的將控制標(biāo)志設(shè)定為第一值和第二值的技術(shù)在推測(cè)重命名表和傳送緩沖器中更新。在該情況下:一旦提交相應(yīng)的指令則傳送緩沖器的條目被寫(xiě)入架構(gòu)重命名表,相應(yīng)的控制標(biāo)志也可被寫(xiě)入架構(gòu)重命名表,使得寄存器預(yù)留電路可確定架構(gòu)重命名表中哪些條目需要從預(yù)留狀態(tài)經(jīng)由幾乎可用狀態(tài)過(guò)渡到可用狀態(tài),并且如果條目不涉及根據(jù)第一移動(dòng)處理技術(shù)處理的移動(dòng)指令中的一者,則這些條目可直接過(guò)渡到可用狀態(tài)。

在一些情況下,上面討論的用于選擇如何處理給定移動(dòng)指令的控制電路可以與重命名電路本身分離開(kāi)。例如,指令解碼器可訪問(wèn)重命名表,并使用它來(lái)將移動(dòng)指令標(biāo)示為要根據(jù)第一移動(dòng)處理技術(shù)或第二移動(dòng)處理技術(shù)處理的指令,然后寄存器重命名電路可簡(jiǎn)單地讀取該標(biāo)示以確定是否為其自身應(yīng)使用第一技術(shù)來(lái)執(zhí)行移動(dòng)還是將指令分派到處理電路以使用第二技術(shù)處理進(jìn)行處理。

然而,在其他示例中,控制電路可以是寄存器重命名電路自身。這樣對(duì)于重命名電路可更簡(jiǎn)單地確定如何處理給定的移動(dòng)指令,正因如此,可控制重命名表來(lái)確定針對(duì)較早移動(dòng)的寄存器映射是否仍然是有效的。

圖1示意性地示出數(shù)據(jù)處理裝置2中部分處理流水線。流水線包括多個(gè)級(jí),包括獲取級(jí)4、解碼級(jí)6、重命名級(jí)8、分派級(jí)9、發(fā)布級(jí)10、運(yùn)行級(jí)12和回寫(xiě)級(jí)14。待處理的指令從一個(gè)級(jí)移動(dòng)至另一個(gè)級(jí),且一個(gè)指令可在流水線的一個(gè)級(jí)掛起,而另一個(gè)指令在不同級(jí)掛起時(shí)。應(yīng)當(dāng)理解的是,這僅是可能的流水線的一個(gè)示例,且其他示例可以具有其他級(jí)或布置。

獲取級(jí)4從指令緩存或存儲(chǔ)器獲取程序指令。解碼級(jí)6解碼所獲取的指令以生成經(jīng)解碼的指令,該指令被傳遞到流水線的其余部分以進(jìn)行處理。對(duì)于一些指令,從存儲(chǔ)器獲取的單個(gè)指令可被解碼為沿著流水線傳遞的單個(gè)經(jīng)解碼的指令。然而,對(duì)于其它更復(fù)雜的指令,單個(gè)獲取的指令可以被解碼為的多個(gè)解碼指令(被稱為“微操作”)。例如,用于觸發(fā)一系列要被執(zhí)行的操作(例如,加載多個(gè)指令)的指令可被解碼為各個(gè)微操作,其中每個(gè)操作對(duì)應(yīng)于操作中的一者。因此,后面的流水線級(jí)8、9、10、12、14中所示的“指令”可不同于從存儲(chǔ)器獲取的指令,并且術(shù)語(yǔ)“指令”應(yīng)當(dāng)被解釋為包括微操作。

裝置2具有可用于存儲(chǔ)數(shù)據(jù)值的若干物理寄存器20。寄存器重命名級(jí)8對(duì)經(jīng)解碼的指令(或微操作)執(zhí)行寄存器重命名以將由指令指定的邏輯寄存器指定符映射到標(biāo)識(shí)物理寄存器20中的一者的物理寄存器指定符。指令集架構(gòu)可支持特定數(shù)目的對(duì)程序員是可見(jiàn)的邏輯寄存器(也稱為架構(gòu)寄存器)。例如,指令編碼中的4位或5位寄存器字段可指定16個(gè)或32個(gè)不同的邏輯寄存器指定符中的一者。然而,為了使指定相同邏輯寄存器指定符的指令之間的風(fēng)險(xiǎn)被解決或者允許指令的無(wú)序或并行處理,可提供更多數(shù)量的物理寄存器,且寄存器重命名級(jí)8可將經(jīng)解碼的指令中的邏輯寄存器指定符映射到相應(yīng)的物理寄存器。

現(xiàn)在指定物理寄存器指定符的經(jīng)重命名的指令被傳遞到分派級(jí)9。分派級(jí)9將指令分派到發(fā)布隊(duì)列10,指令在發(fā)布隊(duì)列中在等待運(yùn)行的同時(shí)被列隊(duì)。指令保留在發(fā)布隊(duì)列中,直到它們的操作數(shù)可用,這時(shí)指令被發(fā)布到運(yùn)行級(jí)12來(lái)被運(yùn)行。指令可被發(fā)布來(lái)以與獲取級(jí)4獲取它們的原始程序順序不同的順序運(yùn)行。例如,當(dāng)一個(gè)指令由于其操作數(shù)尚不可用而暫停時(shí),操作數(shù)可用的后續(xù)指令可先被發(fā)布。分派級(jí)9提供緩沖器以使指令即使發(fā)布隊(duì)列10已滿的情況下能夠離開(kāi)重命名級(jí)8,以便繼續(xù)其他指令的重命名。在其他示例中,可省略分派級(jí)9,使得重命名級(jí)8有效地也充當(dāng)分派級(jí),但是在這種情況下,當(dāng)發(fā)布隊(duì)列10變滿時(shí),重命名被暫停。

運(yùn)行級(jí)12可包括各種處理單元,該處理單元響應(yīng)于指令而運(yùn)行處理操作。例如,處理單元可包括算術(shù)/邏輯單元(alu),該算術(shù)/邏輯單元用于執(zhí)行算術(shù)或邏輯操作;加載/存儲(chǔ)單元,該加載/存儲(chǔ)單元執(zhí)行加載操作來(lái)從存儲(chǔ)器加載數(shù)據(jù)值并將該數(shù)據(jù)值放置在物理寄存器中或執(zhí)行存儲(chǔ)操作來(lái)將當(dāng)前存儲(chǔ)在物理寄存器中的數(shù)據(jù)值存儲(chǔ)到存儲(chǔ)器;矢量處理單元,該矢量處理單元對(duì)包括多個(gè)數(shù)據(jù)元素的數(shù)據(jù)值執(zhí)行矢量運(yùn)算;浮點(diǎn)電路,該浮點(diǎn)電路對(duì)浮點(diǎn)值執(zhí)行運(yùn)算;或任何其他類型的處理電路。在一些情況下,運(yùn)行級(jí)12可包括用于處理不同種類的指令的若干并行運(yùn)行的流水線。

當(dāng)在運(yùn)行級(jí)12中完成指令的運(yùn)行時(shí),指令被傳遞到回寫(xiě)級(jí)14,回寫(xiě)級(jí)14將指令的結(jié)果寫(xiě)入物理寄存器20。在其他示例中,寄存器回寫(xiě)可被視為運(yùn)行級(jí)12本身的部分,而不是被視為單獨(dú)的流水線級(jí)。

在圖1所示的示例中,對(duì)于指定要從中讀取數(shù)據(jù)值的一個(gè)或多個(gè)物理寄存器的經(jīng)重命名的指令,物理寄存器的讀取發(fā)生在運(yùn)行級(jí)12處。然而,其他實(shí)施例中取而代之的是當(dāng)指令在在發(fā)布隊(duì)列中掛起時(shí)可讀取物理寄存器,如圖1中的虛線所示。發(fā)布級(jí)10、運(yùn)行級(jí)12和回寫(xiě)級(jí)14可一起被視為響應(yīng)于指令而執(zhí)行數(shù)據(jù)處理的處理電路,包括從物理寄存器20讀取數(shù)據(jù)和將數(shù)據(jù)寫(xiě)入寄存器20。

寄存器預(yù)留電路30被提供用于控制哪些物理寄存器可被重命名級(jí)8選擇來(lái)用于映射到邏輯寄存器。寄存器預(yù)留電路可向重命名級(jí)8提供指示哪些物理寄存器可供選擇或哪些物理寄存器是不可用的(被預(yù)留的)。當(dāng)從解碼級(jí)6接收到寫(xiě)入寄存器的指令時(shí),重命名級(jí)8為指定作為該指令的目的地寄存器的邏輯寄存器而生產(chǎn)新的寄存器映射。重命名級(jí)8選擇被寄存器預(yù)留電路30指示為可用的物理寄存器,并更新重命名表32以包括將目的地邏輯映射到所選的物理寄存器的重命名條目。

可由流水線處理的指令的一種類型是移動(dòng)指令,這種指令指定源邏輯寄存器和目的地邏輯寄存器,并用于觸發(fā)流水線來(lái)更新目的地邏輯寄存器以具有與源邏輯寄存器相同的數(shù)據(jù)值。在實(shí)踐中,雖然指令的運(yùn)行給出了數(shù)據(jù)值正在從一個(gè)寄存器移動(dòng)到另一個(gè)寄存器的印象,但是實(shí)際上流水線不需要在寄存器之間進(jìn)行任何數(shù)據(jù)值的傳送,因?yàn)橄嗤慕Y(jié)果可在重命名級(jí)8處簡(jiǎn)單地通過(guò)更新重命名表34來(lái)實(shí)現(xiàn)。

例如,在圖2a所示的第一移動(dòng)處理技術(shù)中,指定源邏輯寄存器r5和目的地邏輯寄存器r10的移動(dòng)指令可被接收。r5可被映射到給定的物理寄存器p71,以及r10可被映射到給定的物理寄存器p46,如圖2的左手部分所示。如圖2的右手部分所示,通過(guò)將重命名表34更新為將目的地邏輯寄存器r10映射到已經(jīng)被映射到源邏輯寄存器r5的相同物理寄存器p71,涉及邏輯寄存器r10的后續(xù)指令將訪問(wèn)物理寄存器p71中的數(shù)據(jù)值,并且因此將接收先前與邏輯寄存器r5相關(guān)的值,即與在硬件中的寄存器之間已實(shí)際傳輸數(shù)據(jù)值相同的結(jié)果。這種方法有若干優(yōu)點(diǎn)。首先,不需要實(shí)際將移動(dòng)指令分派到重命名級(jí)8之外的任何級(jí),從而例如在運(yùn)行級(jí)12處釋放指令處理槽,這可有助于加速其他指令的處理。此外,如果存在取決于邏輯寄存器r10中的值的后續(xù)指令,例如圖2的右手部分中所示的添加指令,則在重命名級(jí)8處理移動(dòng)意味著該添加指令僅取決于在寄存器r5中產(chǎn)生數(shù)據(jù)的先前指令(例如,加載),而不取決于移動(dòng)指令本身。通過(guò)允許移動(dòng)目的地寄存器的消耗器依賴于移動(dòng)源寄存器的生成器而不是移動(dòng)指令本身,可提高性能。為了了解性能改進(jìn)的可能性,specint2006基準(zhǔn)中的大約3%的指令以及specfp2000基準(zhǔn)中大約1%的指令是可使用重命名技術(shù)來(lái)加速的移動(dòng)。使用重命名來(lái)處理這些移動(dòng)可使specint2006的性能提高1.1%、specfp2000為1.4%,以及coremark基準(zhǔn)為3.6%。

如圖2b所示,流水線2還支持第二移動(dòng)處理技術(shù),其中移動(dòng)指令在運(yùn)行級(jí)12被分派及被運(yùn)行。在這種情況下,當(dāng)在重命名級(jí)8遇到移動(dòng)指令時(shí),重命名級(jí)8將移動(dòng)指令的目的地邏輯寄存器r10映射到與當(dāng)前被映射到移動(dòng)源邏輯寄存器r5的第一物理寄存器(例如,p71)不同的第二物理寄存器(例如p95)。當(dāng)移動(dòng)指令到達(dá)運(yùn)行級(jí)12時(shí),運(yùn)行級(jí)從物理寄存器p71讀取數(shù)據(jù)值,并且回寫(xiě)級(jí)14將所讀取的數(shù)據(jù)值寫(xiě)入到與該移動(dòng)指令的目的地邏輯寄存器r10相對(duì)應(yīng)的物理寄存器p95。

重命名級(jí)8在圖2a所示的第一移動(dòng)處理技術(shù)和圖2b所示的第二移動(dòng)處理技術(shù)之間進(jìn)行選擇??梢哉J(rèn)為,由于圖2a所示的第一技術(shù)更快,因此應(yīng)該總是選擇這種技術(shù)。然而,這可能導(dǎo)致寄存器預(yù)留電路30的復(fù)雜性的增加,因?yàn)樵S多邏輯寄存器可變?yōu)楸挥成涞较嗤奈锢砑拇嫫鳎@使得何時(shí)可將物理寄存器重新分配給不同的邏輯寄存器更加難以確定。

在本申請(qǐng)中討論的方法利用了如下觀察:依賴移動(dòng)鏈,盡管發(fā)生在相對(duì)高端的無(wú)序處理器中,通常不在關(guān)鍵路徑上。在關(guān)鍵路徑上觀察到的大多數(shù)移動(dòng)沒(méi)有依賴于它的后續(xù)移動(dòng)。例如,如果防止依賴移動(dòng)鏈被加速(僅鏈中的第一移動(dòng)使用第一移動(dòng)處理技術(shù)被加速,且鏈中的后續(xù)移動(dòng)使用第二移動(dòng)處理技術(shù)),則在specint2006中大約40%的移動(dòng)使用第二移動(dòng)處理技術(shù),但性能機(jī)會(huì)損失(在1.1%的性能提升中所占)只有大約0.2%。更戲劇的是,在coremark中,大約50%的移動(dòng)使用第二移動(dòng)處理技術(shù),但是性能機(jī)會(huì)損失(在3.6%的性能提升中所占)是0%。另外,一次可能存在許多移動(dòng)(例如,一次高達(dá)8個(gè),但并非不常見(jiàn)),如果這樣,它們通常彼此獨(dú)立。限制一次使用第一移動(dòng)處理技術(shù)來(lái)處理一個(gè)移動(dòng)太過(guò)禁止,因此我們的方法允許多個(gè)獨(dú)立移動(dòng)中的每者同時(shí)使用第一移動(dòng)處理技術(shù)。

圖3示出了重命名電路8(用作控制電路,該控制電路用于控制使用第一和第二移動(dòng)處理技術(shù)中的哪一者)所采用的方法。如圖1所示,重命名表34的每個(gè)條目具有控制標(biāo)志36(也稱為重復(fù)標(biāo)志或dup標(biāo)志),該控制標(biāo)志用于指示該條目是否對(duì)應(yīng)于使用第一移動(dòng)處理技術(shù)處理的移動(dòng)指令。當(dāng)在重命名時(shí)間遇到第一移動(dòng)時(shí),邏輯源和目的地兩者在重命名表中都被標(biāo)記為“重復(fù)”(或dup),因?yàn)樗鼈兌及嗤奈锢砑拇嫫?。?dāng)對(duì)應(yīng)于所提交的dup條目(移動(dòng)的源或目的地)的物理寄存器被驅(qū)逐時(shí),物理寄存器則進(jìn)入“幾乎釋放分配”(幾乎可用)狀態(tài)。此時(shí),物理寄存器接著等待其他dup條目的驅(qū)逐,一旦有其他dup條目被驅(qū)逐,物理寄存器就可轉(zhuǎn)換到“完全解除分配”(可用)狀態(tài),此時(shí)該物理寄存器可供重新使用。如果遇到另一個(gè)移動(dòng),其中源邏輯寄存器對(duì)應(yīng)于在重命名表中被標(biāo)記為dup的條目,則不符合使用第一移動(dòng)處理技術(shù)的條件,因?yàn)檫@將導(dǎo)致多于兩個(gè)邏輯寄存器被映射到給定物理寄存器(這將違反這里被解除分配的重命名要經(jīng)歷的唯一狀態(tài)轉(zhuǎn)換的數(shù)量)。借助于這種方法,若許多獨(dú)立移動(dòng)彼此獨(dú)立,這些獨(dú)立移動(dòng)可通過(guò)將邏輯寄存器對(duì)(經(jīng)優(yōu)化的移動(dòng)的源和目的地)標(biāo)記為dup被一次性優(yōu)化,其中邏輯寄存器彼此不重疊。

圖3和圖4示出用于這種跟蹤移動(dòng)指令寄存器映射和物理寄存器的重新分配的方法的示例。圖3示出當(dāng)遇到移動(dòng)指令時(shí)如何更新重命名表34。如圖3的左手部分所示,重命名表34最初具有分別映射到物理寄存器p71和p46的邏輯寄存器r5和r10,并且兩者條目的dup標(biāo)志36均0。如圖3左邊的第二個(gè)圖所示,當(dāng)接收到將數(shù)據(jù)值從邏輯寄存器r5移動(dòng)到邏輯寄存器r10的第一移動(dòng)指令時(shí),重命名級(jí)8檢查與源寄存器r5相關(guān)聯(lián)的dup標(biāo)志36并且看到該dup標(biāo)志為0。由于該寄存器未被標(biāo)記為重復(fù),所以該移動(dòng)有資格使用第一移動(dòng)處理技術(shù)來(lái)被處理,因此其目的地寄存器r10被重映射到與源邏輯寄存器r5相同的物理寄存器p71,并且將r5和r10的條目標(biāo)記為dup。

如圖3的第三個(gè)圖所示,當(dāng)在重命名級(jí)8處遇到源寄存器是邏輯寄存器r5或邏輯寄存器r10的另一移動(dòng)指令時(shí),選擇第二移動(dòng)處理技術(shù),因?yàn)榧拇嫫鱮5和r10被標(biāo)記為dup。因此,后續(xù)移動(dòng)的目的地寄存器r15被映射到與移動(dòng)的源寄存器r10或r5不同的物理寄存器p59,且邏輯寄存器r15的寄存器映射沒(méi)有被標(biāo)記為dup。

如圖4的右手圖所示,接著接收到分別指定邏輯寄存器r15和r20作為源和目的地的另一移動(dòng)指令。由于源寄存器r15未被標(biāo)記為dup,所以可使用圖2a的第一移動(dòng)處理技術(shù)來(lái)自由地對(duì)該移動(dòng)進(jìn)行優(yōu)化。因此,目的地寄存器r20被映射到與邏輯寄存器p15相同的物理寄存器p59,且兩個(gè)邏輯寄存器r15和r20都被標(biāo)記為dup。所以,如圖3所示,當(dāng)存在兩個(gè)或更多個(gè)不涉及相同邏輯寄存器的獨(dú)立移動(dòng)指令時(shí),可通過(guò)選擇圖2a所示的方法來(lái)加速這些移動(dòng)中的每一者(因?yàn)殡S后的獨(dú)立移動(dòng)不會(huì)導(dǎo)致兩個(gè)以上的邏輯寄存器被映射到相同的物理寄存器)。然而,當(dāng)存在依賴移動(dòng)時(shí),則移動(dòng)被分派以被運(yùn)行,以避免需要對(duì)映射到相同物理寄存器的許多邏輯寄存器進(jìn)行跟蹤。

圖4根據(jù)圖3的示例示出在處理移動(dòng)之后使用寄存器預(yù)留電路來(lái)控制哪些物理寄存器可被重新分配的示例。如圖4的左手部分所示,當(dāng)被標(biāo)記為dup的邏輯寄存器r5和r10中的一者滿足重新分配條件(例如,當(dāng)重命名表34中的重命名條目被重寫(xiě)時(shí)),相應(yīng)的物理寄存器p71從預(yù)留狀態(tài)(“否”)過(guò)渡到幾乎可用狀態(tài)(“幾乎”)。如圖4的右手部分所示,當(dāng)其他dup邏輯寄存器r10滿足重新分配條件時(shí),寄存器預(yù)留電路30更新空閑列表32以將物理寄存器p71從幾乎可用狀態(tài)過(guò)渡到可用狀態(tài)(“是”),此時(shí)物理寄存器p71可再次選擇用于映射至不同的邏輯寄存器。在圖4的示例中,當(dāng)重命名表34被更新為將dup邏輯寄存器重映射到不同的物理寄存器時(shí),重新分配條件被滿足,但是另一種方法可以是跟蹤流水線中掛起的讀取物理寄存器p71的實(shí)際指令,并當(dāng)在流水線中不存在物理寄存器p71的剩余消耗者并且重寫(xiě)邏輯寄存器r5或r10的較新的指令被確保提交時(shí)確定相應(yīng)的邏輯寄存器滿足重新分配條件。

圖5示出處理移動(dòng)指令的方法。在步驟50處,在重命名級(jí)8處確定是否已遇到移動(dòng)指令(該移動(dòng)指令指定源/目的地邏輯寄存器的ra和rb,其中ra當(dāng)前被映射到物理寄存器px)。如果當(dāng)前指令不是移動(dòng)指令,則根據(jù)常規(guī)技術(shù)以某種其它方式處理該指令。當(dāng)遇到移動(dòng)指令時(shí),則在步驟52處,重命名級(jí)8確定對(duì)應(yīng)于源邏輯寄存器ra的重命名表?xiàng)l目的dup標(biāo)志36是否被設(shè)置為1。如果邏輯寄存器ra的dup為0,則選擇第一移動(dòng)處理技術(shù),并且在步驟54處,重命名級(jí)8更新重命名表34,以將目的地邏輯寄存器rb映射到已被映射到源邏輯寄存器ra的相同物理寄存器px。在步驟56處,重命名級(jí)8針對(duì)兩個(gè)邏輯寄存器ra和rb將dup標(biāo)志36設(shè)定為1。在步驟58處,重命名級(jí)8抑制移動(dòng)指令的分派,使得移動(dòng)指令不需要由任何后續(xù)流水線級(jí)進(jìn)行處理。現(xiàn)在移動(dòng)指令已完成。如上所述,在處理的關(guān)鍵路徑上遇到的大多數(shù)移動(dòng)指令是第一移動(dòng)指令的鏈并獨(dú)立于任何先前的移動(dòng)指令,因此可使用第一移動(dòng)處理技術(shù)來(lái)更快地進(jìn)行處理。

另一方面,當(dāng)在步驟52處邏輯寄存器ra的dup標(biāo)志36為0時(shí),使用第二移動(dòng)處理技術(shù),并且在步驟60處,重命名級(jí)8選擇物理寄存器py中由寄存器預(yù)留電路30指示為處于可用狀態(tài)的一者。在一些情況下,寄存器預(yù)留電路30可向重命名級(jí)8提供所有可用的物理寄存器的指示,且重命名電路8可選擇這些可用物理寄存器中的一者。在其它實(shí)施例中,寄存器預(yù)留電路30可選擇py自身,并可簡(jiǎn)單地向重命名級(jí)8提供哪個(gè)物理寄存器是所選擇的寄存器py的指示。無(wú)論哪種方式,當(dāng)多個(gè)物理寄存器可用時(shí),可使用任何期望的選擇算法或策略來(lái)選擇哪個(gè)寄存器用作py。例如,選擇策略可以是循環(huán)法、最近最少使用法或隨機(jī)。

在步驟62處,重命名級(jí)8更新重命名表34以將移動(dòng)指令的目的地邏輯寄存器rb重映射到新選擇的物理寄存器py(該新選擇的物理寄存器py是與被映射到移動(dòng)指令的源寄存器ra的物理寄存器px的不同的物理寄存器py)。重命名級(jí)8將對(duì)應(yīng)于邏輯寄存器rb的重命名表?xiàng)l目的dup標(biāo)志36設(shè)定為0,以指示該條目不對(duì)應(yīng)于使用第一移動(dòng)處理技術(shù)處理的移動(dòng)指令。在步驟64處,重命名級(jí)8將移動(dòng)指令傳遞到分派級(jí)9,該分派級(jí)分派該指令。當(dāng)移動(dòng)指令到達(dá)運(yùn)行級(jí)時(shí),在步驟66處,移動(dòng)指令被運(yùn)行以從物理寄存器px讀取數(shù)據(jù)值,并且回寫(xiě)級(jí)14將所讀取的數(shù)據(jù)值回寫(xiě)至物理寄存器py。

圖6示出控制哪些寄存器可用于由寄存器預(yù)留電路30進(jìn)行的重新分配的方法。在步驟70處,寄存器預(yù)留電路30檢測(cè)到給定邏輯寄存器rm和給定物理寄存器pz之間的映射滿足重新分配條件。例如,當(dāng)對(duì)應(yīng)于邏輯寄存器rm的重命名表?xiàng)l目由重命名級(jí)8響應(yīng)于指定與pz不同的物理寄存器的給定指令而更新且不存在除給定的指令之外較舊的待運(yùn)行的指令時(shí),可滿足重新分配條件(在本上下文中,“較舊指令”是指在獲取級(jí)4從存儲(chǔ)器獲取指令的程序順序中的較早指令)。注意的是,觸發(fā)邏輯寄存器rm的重新映射的給定指令可以是根據(jù)第二移動(dòng)處理技術(shù)處理的移動(dòng)指令,或者為非移動(dòng)指令的另一類型的指令。

當(dāng)滿足重新分配條件時(shí),在步驟72處寄存器預(yù)留電路30檢測(cè)dup標(biāo)志是否為1。如果不是,則不能有指向同一物理寄存器的另一重命名表?xiàng)l目,因此在步驟74處物理寄存器pz在空閑列表32中從預(yù)留狀態(tài)過(guò)渡至可用狀態(tài)。如果dup是1,則在步驟76處,寄存器預(yù)留電路30檢查空閑列表來(lái)確定物理寄存器pz處于什么狀態(tài)。如果物理寄存器pz處于預(yù)留狀態(tài),則意味著還有另一個(gè)指向相同的物理寄存器的重命名表?xiàng)l目,因此物理寄存器pz還不能變得可用,而在步驟78處,物理寄存器pz從預(yù)留狀態(tài)過(guò)渡到幾乎可用狀態(tài)。如果在步驟76處確定物理寄存器pz已處于幾乎可用的狀態(tài),則意味著對(duì)應(yīng)于相同物理寄存器的其他條目已被更新,也就是說(shuō),這是指向pz的最后一個(gè)條目,因此在步驟80處物理寄存器pz從幾乎可用狀態(tài)過(guò)渡到可用狀態(tài)。接著步驟78或步驟80,在步驟82處,邏輯寄存器rm的dup標(biāo)志被設(shè)定為0。

圖7示出總結(jié)給定物理寄存器pz的狀態(tài)轉(zhuǎn)換的狀態(tài)圖。當(dāng)pz被選擇用于映射到給定邏輯寄存器rm時(shí)(而不是在pz被映射到使用第一移動(dòng)處理技術(shù)處理的移動(dòng)的目的地時(shí)),pz從可用狀態(tài)100過(guò)渡到預(yù)留狀態(tài)102,并且此時(shí)邏輯寄存器rm的dup標(biāo)志被設(shè)定為0。當(dāng)從rm至pz的映射滿足重新分配條件且邏輯寄存器rm的dup標(biāo)志仍然為0時(shí),pz從預(yù)留狀態(tài)102過(guò)渡到可用狀態(tài)100。如果在物理寄存器pz處于預(yù)留狀態(tài)102時(shí),指定rm作為其源寄存器的移動(dòng)指令使用第一移動(dòng)處理技術(shù)在重命名級(jí)處被處理,則物理寄存器pz保持在預(yù)留狀態(tài)中,但是rm的dup標(biāo)志被設(shè)定為1(此時(shí),pz也將變?yōu)楸挥成涞揭苿?dòng)的目的地的另一邏輯寄存器rn)。當(dāng)rm至pz的映射或rn至pz映射中的一者映射滿足重新分配條件且該映射的dup標(biāo)志為1時(shí),物理寄存器pz從預(yù)留狀態(tài)102過(guò)渡到幾乎可用狀態(tài)104。當(dāng)rm至pz的映射或rn至pz的映射中的另一者滿足重新分配條件且該映射的dup標(biāo)志是1時(shí),物理寄存器pz從幾乎可用狀態(tài)104過(guò)渡到可用狀態(tài)100。

圖8示出重命名表34的更詳細(xì)的實(shí)施例,其中重命名表被分割成推測(cè)重命名表(srt)120和架構(gòu)重命名表(art)122。在重命名時(shí)間或分派時(shí)間(在知曉相應(yīng)的指令是否應(yīng)該運(yùn)行之前)推測(cè)性地更新srt120,并且在提交時(shí)間更新art122(當(dāng)已經(jīng)評(píng)估了足夠的較早指令以保證所提交的指令應(yīng)該運(yùn)行時(shí))。沿著流水線傳遞的推測(cè)性指令使用來(lái)自srt120的寄存器映射。當(dāng)目的地寄存器被提交時(shí),邏輯和物理寄存器指針(在寄存器fifo124中列隊(duì)的)被用來(lái)更新具有指向新架構(gòu)的指針的art122。當(dāng)通過(guò)該過(guò)程從art122進(jìn)行條目的驅(qū)逐時(shí),這觸發(fā)由寄存器預(yù)留電路30對(duì)逐出的物理寄存器進(jìn)行的解除分配。在沖洗(flush)時(shí),art122被恢復(fù)到srt120,并且在該沖洗時(shí)間點(diǎn)之前,通過(guò)使用寄存器fifo124執(zhí)行srt的任何重建(若需要)。

例如,fifo124用作使用寫(xiě)指針和提交指針來(lái)管理的循環(huán)緩沖器。當(dāng)指令被重命名時(shí),其(一個(gè)或多個(gè))重命名映射被推送到fifo的由寫(xiě)指針指示的位置。相應(yīng)的指令可在其向流水線2的其余部分傳遞時(shí)以寫(xiě)指針的當(dāng)前值來(lái)標(biāo)示,以使得能夠識(shí)別流水線中的指令與fifo124中條目對(duì)應(yīng)關(guān)系。提交指針表示最舊的未提交的指令。當(dāng)具有與提交指針相對(duì)應(yīng)的標(biāo)記的指令被提交時(shí),提交指針被更新為與下一個(gè)最舊未提交指令的標(biāo)示對(duì)應(yīng),且現(xiàn)在位于提交指針之后的任何fifo條目從fifo彈出并被寫(xiě)入art122。如果寫(xiě)指針或提交指針到達(dá)緩沖器的一端,則寫(xiě)指針或提交指針的后續(xù)增量將該寫(xiě)指針或提交指針移動(dòng)到緩沖器的另一端,并且只要指令被重命名和提交時(shí),寫(xiě)指針和提交指針就會(huì)繞著緩沖器互相追逐。

如圖9所示,當(dāng)將以上所討論的移動(dòng)處理方法應(yīng)用于具有單獨(dú)的推測(cè)重命名表120、架構(gòu)重命名表122的實(shí)施例時(shí),srt、art和寄存器fifo(也稱為傳送緩沖器)被更新為具有用于使用第一移動(dòng)處理技術(shù)處理的移動(dòng)的dup位。在確定是否可使用第一移動(dòng)處理技術(shù)進(jìn)行加速(如果源或目的地邏輯寄存器在srt120中設(shè)定了dup位,則不能加速)之前,移動(dòng)源和目的地查詢srt120。在寄存器fifo中分配兩個(gè)條目用于經(jīng)加速的移動(dòng)(分別用于源和目的地,且每個(gè)都標(biāo)記為dup)。當(dāng)經(jīng)加速的移動(dòng)提交時(shí),通過(guò)使用寄存器fifo的兩個(gè)相應(yīng)條目,art中的源和目的地都被標(biāo)記為dup。當(dāng)?shù)谝籨up條目從art被驅(qū)逐時(shí),相關(guān)聯(lián)的物理寄存器被標(biāo)記為“幾乎可用”,并且逐出針對(duì)相同物理寄存器的第二dup條目導(dǎo)致最終過(guò)渡至“完全解除分配”(可用)。在沖洗時(shí),如果經(jīng)加速的移動(dòng)需要重建/恢復(fù)srt,則需使用寄存器fifo。此處,對(duì)應(yīng)于經(jīng)優(yōu)化的移動(dòng)(源和目的地)的兩個(gè)條目都用于寫(xiě)入srt條目以及其dup位。

圖10示出在具有單獨(dú)srt120和art122的實(shí)施例中對(duì)移動(dòng)指令執(zhí)行寄存器重命名的方法。除了涉及檢查dup標(biāo)志及更新重命名表的步驟52、54、56和62是使用srt120來(lái)執(zhí)行的,步驟50至66與圖5的相應(yīng)步驟相同。此外,在第一移動(dòng)處理技術(shù)中,存在附加步驟130,在該步驟中兩個(gè)條目被推送至fifo緩沖器124,其中一個(gè)條目為將源邏輯寄存器ra映射到物理寄存器px(其中dup位設(shè)定為1)的條目,另一條目為將目的地邏輯寄存器rb映射到相同物理寄存器px(dup標(biāo)志再次設(shè)定為1)的條目。另一方面,在第二移動(dòng)處理技術(shù)中存在附加步驟132,其中單個(gè)條目被推送到fifo124,該單個(gè)條目為將邏輯寄存器rb映射到物理寄存器py(dup位設(shè)定為0)的條目。在其他方面,圖10的方法與圖5相同。

圖11示出當(dāng)指令被提交時(shí)由重命名級(jí)執(zhí)行的方法。響應(yīng)于在步驟140處被提交的指令,在步驟142處從fifo124讀取相應(yīng)的fifo條目(使用所提交的指令的標(biāo)示及fifo124的提交指針來(lái)標(biāo)識(shí)),并將其寫(xiě)入對(duì)應(yīng)于由這些fifo條目指定的邏輯寄存器的art122。這些fifo條目的dup標(biāo)志也被傳送到art122。在步驟144,遞增遞交指針以指向與下一個(gè)最舊的未提交指令相關(guān)聯(lián)的fifo條目。注意,與該下一個(gè)最舊的未提交指令相關(guān)聯(lián)的fifo條目可能不再在srt120中被指定,因?yàn)閟rt120后續(xù)可能響應(yīng)于較新的指令而被更新。有效地,fifo124在不同的時(shí)間點(diǎn)提供了srt120的內(nèi)容的一系列快照。

圖12示出處理沖洗事件或錯(cuò)誤推測(cè)(例如,分支錯(cuò)誤預(yù)測(cè)或數(shù)據(jù)預(yù)取錯(cuò)誤)的方法。響應(yīng)于在步驟150處發(fā)生的沖洗事件,在步驟152處,來(lái)自art122的所有條目被恢復(fù)到srt120。因此,邏輯寄存器現(xiàn)在被映射到表示在運(yùn)行的最后提交點(diǎn)(此時(shí)已知運(yùn)行是正確的)的寄存器狀態(tài)數(shù)據(jù)的物理寄存器。不需要在寄存器之間傳送狀態(tài),因?yàn)榕f狀態(tài)已經(jīng)被保存在較大的物理寄存器文件中,并且可簡(jiǎn)單地通過(guò)基于art進(jìn)行srt的更新來(lái)訪問(wèn)該舊狀態(tài)。在步驟154處,在沖洗時(shí)間點(diǎn)之前,通過(guò)向srt120寫(xiě)入來(lái)自傳送緩沖器124的fifo條目來(lái)重建srt120(例如,地址滯后于fifo標(biāo)示的fifo條目與所引起沖洗的指令相關(guān)聯(lián))。在步驟156處,fifo被清空。

圖13示出使用寄存器預(yù)留電路30控制寄存器重新分配的方法。圖13與圖6相同,除了在步驟70處基于art122評(píng)估重新分配條件,以及類似地在步驟72處相關(guān)的dup標(biāo)志為對(duì)應(yīng)于邏輯寄存器rm的art條目的dup標(biāo)志。此外,圖13中省略了圖6的步驟82,因?yàn)閐up標(biāo)志可固有地被設(shè)定為在art條目被來(lái)自具有等于0的dup標(biāo)志的緩沖器124的相應(yīng)fifo條目重寫(xiě)時(shí)的值。

圖14示出使用srt和art的實(shí)施例的對(duì)應(yīng)于圖7的狀態(tài)圖。圖14與圖7相同,除了當(dāng)在srt120中存在重映射時(shí)發(fā)生的從可用100至預(yù)留102的過(guò)渡,以及針對(duì)art122中的給定映射的重新分配條件被滿足時(shí),其他從預(yù)留102到可用100的過(guò)渡、從預(yù)留102到幾乎可用104的過(guò)渡,以及從幾乎可用104到可用100的過(guò)渡。

應(yīng)當(dāng)理解的是,使用以上所討論的srt120、art122和fifo124的布置僅是處理推測(cè)重命名的一個(gè)示例,其他技術(shù)可被使用。此外,盡管上面討論的例子將dup標(biāo)志36存儲(chǔ)在重命名表自身的條目本身,但是也可將dup標(biāo)志36與重命名表分離式地存儲(chǔ)。

為了指示可用、預(yù)留和幾乎可用的狀態(tài),空閑列表32的每個(gè)條目具有至少兩個(gè)位,用于指示相應(yīng)物理寄存器的狀態(tài)。在那種將物理寄存器指示為可用或預(yù)留(在沒(méi)有本技術(shù)的情況下)的系統(tǒng)中,每一物理寄存器可能需要附加位。但是,這將比提供如上所述的每一物理寄存器的多位計(jì)數(shù)器和相應(yīng)的比較/控制邏輯器的替代技術(shù)的開(kāi)銷小得多。實(shí)際上,空閑列表32可能已經(jīng)需要為每個(gè)物理寄存器指示其他類型的寄存器狀態(tài)(例如,如果存在物理寄存器需要被保護(hù)以免重新分配的另一條件),并且可能存在尚未被使用的寄存器狀態(tài)字段的一些備用編碼。如果是這樣,則備用編碼中的一者可被分配來(lái)指示幾乎可用狀態(tài)104,在這種情況下,添加幾乎可用狀態(tài)將不需要在空閑列表32中每一物理寄存器的附加位。

雖然圖1的示例示出了重命名級(jí)8來(lái)作為用于確定如何處理給定移動(dòng)指令的控制電路,但是也可提供單獨(dú)的控制電路。例如,解碼級(jí)6可將移動(dòng)指令進(jìn)行標(biāo)示以控制重命名級(jí)8如何對(duì)它們進(jìn)行處理。

另一個(gè)示例提供了一種裝置,包括:

響應(yīng)于指令而執(zhí)行數(shù)據(jù)處理的裝置;

用于將由指令指定的邏輯寄存器映射到硬件中設(shè)置的物理寄存器的裝置;以及

選擇第一移動(dòng)處理技術(shù)和第二移動(dòng)處理技術(shù)中的一者用于處理指定源邏輯寄存器和目的地邏輯寄存器的移動(dòng)指令的裝置;其中:

在第一移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,用于映射的裝置被配置為將目的地邏輯寄存器映射到與源邏輯寄存器相同的物理寄存器;

在第二移動(dòng)處理技術(shù)中,響應(yīng)于移動(dòng)指令,用于執(zhí)行數(shù)據(jù)處理的裝置被配置為將從對(duì)應(yīng)于所述源邏輯寄存器的物理寄存器讀取的數(shù)據(jù)值寫(xiě)入對(duì)應(yīng)于所述目的地邏輯寄存器的不同物理寄存器;以及

用于選擇的裝置被配置為:當(dāng)移動(dòng)指令指定的源邏輯寄存器與根據(jù)第一移動(dòng)處理技術(shù)處理的較早移動(dòng)指令的源邏輯寄存器和目的地邏輯寄存器中的一者相同并且針對(duì)所述源邏輯寄存器和目的地邏輯寄存器中的一者的當(dāng)前寄存器映射與處理所述較早移動(dòng)指令時(shí)針對(duì)所述源邏輯寄存器和目的地邏輯寄存器中的一者所使用的映射相同時(shí),選擇第二移動(dòng)處理技術(shù)。

在本申請(qǐng)中,詞語(yǔ)“被配置為……”用于表示裝置的元件具有能夠執(zhí)行所定義的操作的配置。在本文中,“配置”是指硬件或軟件的互連的布置或方式。例如,裝置可具有提供所定義的操作的專用硬件、處理器或其他處理設(shè)備可被編程以執(zhí)行功能?!芭渲脼椤辈灰馕吨b置元件為了提供所定義的操作需要以任何方式被改變。

雖然本文已參照附圖詳細(xì)描述了本發(fā)明的說(shuō)明性實(shí)施例,但是應(yīng)當(dāng)理解的是,本發(fā)明不限于這些確切的實(shí)施例,并且本領(lǐng)域技術(shù)人員可在其中實(shí)現(xiàn)各種改變和修改,而不脫離由所附權(quán)利要求限定的本發(fā)明的范圍和精神。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
石泉县| 来安县| 大连市| 饶平县| 淮阳县| 顺平县| 梁平县| 定陶县| 邮箱| 天等县| 深州市| 四平市| 东乡族自治县| 南阳市| 陇西县| 正镶白旗| 黑龙江省| 太原市| 额尔古纳市| 襄城县| 文化| 沾化县| 兴国县| 苗栗市| 尉氏县| 霞浦县| 治县。| 衡阳市| 博野县| 兴隆县| 南川市| 修文县| 木兰县| 遂溪县| 上饶市| 琼中| 武隆县| 宜兰县| 沅江市| 西平县| 汽车|