無需額外寄存器執(zhí)行寄存器重命名的數(shù)據(jù)處理設(shè)備和方法【專利摘要】本發(fā)明提供了用于執(zhí)行寄存器重命名的數(shù)據(jù)處理設(shè)備和方法。該數(shù)據(jù)處理設(shè)備具有用于響應(yīng)于數(shù)據(jù)處理指令而執(zhí)行數(shù)據(jù)處理操作的處理電路,數(shù)據(jù)處理指令參考邏輯寄存器。另外,提供了一組物理寄存器,用于存儲(chǔ)供處理電路執(zhí)行數(shù)據(jù)處理操作時(shí)訪問的數(shù)據(jù)值。寄存器重命名存儲(chǔ)裝置存儲(chǔ)邏輯寄存器與物理寄存器之間的一對(duì)一映射,處理電路在執(zhí)行數(shù)據(jù)處理操作時(shí)訪問寄存器重命名存儲(chǔ)裝置以將所參考的邏輯寄存器映射到相應(yīng)的物理寄存器。設(shè)置了更新電路,該更新電路響應(yīng)于處理電路執(zhí)行的要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作,來標(biāo)識(shí)與寄存器重命名存儲(chǔ)裝置中的該多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器。其隨后改變寄存器重命名存儲(chǔ)裝置中的該多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射,從而使得在執(zhí)行當(dāng)前數(shù)據(jù)處理操作時(shí)改變后的一對(duì)一映射被采用。對(duì)于任何其它不要求多個(gè)邏輯寄存器被寫入的數(shù)據(jù)處理操作,這樣的重命名不會(huì)被執(zhí)行。這種方法使得寄存器重命名的安全相關(guān)的優(yōu)點(diǎn)針對(duì)特定的數(shù)據(jù)處理操作被實(shí)現(xiàn),而不需要增加物理寄存器組的大小,也不需要對(duì)運(yùn)行在處理電路上的軟件做任何修改?!緦@f明】無需額外寄存器執(zhí)行寄存器重命名的數(shù)據(jù)處理設(shè)備和方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及無需額外寄存器執(zhí)行寄存器重命名的數(shù)據(jù)處理設(shè)備和方法,該設(shè)備和方法可應(yīng)用于多種情況(例如,與安全敏感應(yīng)用有關(guān)的情況)。【
背景技術(shù):
】[0002]已知提供了一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備響應(yīng)于參考邏輯寄存器(又稱程序模型寄存器)的數(shù)據(jù)處理指令來執(zhí)行數(shù)據(jù)處理操作,同時(shí)該數(shù)據(jù)處理設(shè)備本身在一組物理寄存器內(nèi)存儲(chǔ)經(jīng)受這些數(shù)據(jù)處理操作的數(shù)據(jù)值。與保持邏輯寄存器和物理寄存器之間的固定映射不同,已知執(zhí)行一種被稱為寄存器重命名的技術(shù),在該技術(shù)中邏輯寄存器和物理寄存器之間的映射是變化和更新的。[0003]寄存器重命名可以主要基于性能方面的原因被執(zhí)行,例如,當(dāng)一個(gè)序列中的數(shù)據(jù)處理指令被并行或至少亂序執(zhí)行時(shí),用以允許數(shù)據(jù)處理指令的并行執(zhí)行;寄存器重命名技術(shù)隨后被用來維持給定的邏輯寄存器的不同版本,從而使得這些數(shù)據(jù)處理指令能夠被并行或亂序執(zhí)行而不會(huì)出現(xiàn)數(shù)據(jù)沖突。雖然寄存器重命名在性能方面有一定的優(yōu)勢(shì),但必須在數(shù)據(jù)處理設(shè)備中提供以允許這種寄存器重命名操作發(fā)生的額外硬件由于其引入的成本和復(fù)雜性而成為缺點(diǎn)。該缺點(diǎn)使得寄存器重命名技術(shù)在相對(duì)小型、低成本、低功耗的設(shè)備中使用的機(jī)會(huì)非常有限。[0004]寄存器重命名也是安全敏感設(shè)備背景下的一種有價(jià)值的技術(shù),因?yàn)樵摷夹g(shù)使得攻擊者例如,通過細(xì)粒度觀測(cè)設(shè)備的功率消耗或者通過侵入性技術(shù)來設(shè)法將值引入特定的寄存器以觀察對(duì)該設(shè)備操作的影響從外部獲取有關(guān)數(shù)據(jù)處理設(shè)備的內(nèi)部操作的信息變得更加困難。在期望將寄存器重命名的優(yōu)勢(shì)應(yīng)用于安全敏感設(shè)備時(shí),這些設(shè)備通常被構(gòu)造成小型、低成本、低功耗的設(shè)備,因此與典型的寄存器重命名技術(shù)相關(guān)聯(lián)的額外的構(gòu)造要求在傳統(tǒng)上限制了寄存器重命名技術(shù)在這種背景中的應(yīng)用機(jī)會(huì)。例如,為了使寄存器重命名技術(shù)得以操作,很多已知的寄存器重命名技術(shù)要求物理寄存器的數(shù)量超過邏輯寄存器的數(shù)量。因此,對(duì)于任何特殊設(shè)計(jì)的裝置,支持寄存器重命名操作所需的物理寄存器比不使用寄存器重命名所需的物理寄存器多。在小型設(shè)備(如,小型安全微處理器)中,包含物理寄存器的寄存器文件的大小非常大,所以所需的寄存器文件的大小的增加通常會(huì)阻礙很多寄存器重命名技術(shù)在這些設(shè)備中的應(yīng)用。[0005]論文“InstructionStreamMutationforNon-DeterministicProcessors,,,Irwin,PageandSmart,ProceedingsoftheIEEEInternationalConferenceonApplication-SpecificSystems,Architectures,andProcessors(ASAPf02),2002,描述了可以被用于防止差分功耗分析(DPA)安全攻擊的多種技術(shù),其中該多種技術(shù)之一涉及使用“活性表(livenesstable)”來控制寄存器重命名的寄存器重命名技術(shù)(在文章中被稱為寄存器重映射)。根據(jù)該技術(shù),物理寄存器的數(shù)量不需要超過邏輯寄存器的數(shù)量,但是額外的指令必須被添加到指令流中以產(chǎn)生維持活性表所需的信息。因此這種方法需要修改在該設(shè)備上運(yùn)行的代碼,并且由于需要執(zhí)行額外指令而會(huì)對(duì)性能產(chǎn)生顯著的影響。[0006]期望提出一種允許寄存器重命名的優(yōu)勢(shì)被應(yīng)用于數(shù)據(jù)處理設(shè)備(特別是在小型、低成本、低功耗設(shè)備的情況下)的改進(jìn)技術(shù),該技術(shù)減少了與很多寄存器重命名技術(shù)相關(guān)的硬件需求,同時(shí)也避免了在指令流中添加額外指令的需要?!?br/>發(fā)明內(nèi)容】[0007]從第一方面看,本發(fā)明提供了一種數(shù)據(jù)處理設(shè)備,包括:處理電路,被配置為響應(yīng)于數(shù)據(jù)處理指令而執(zhí)行數(shù)據(jù)處理操作,所述數(shù)據(jù)處理指令參考邏輯寄存器;一組物理寄存器,被配置為存儲(chǔ)供所述處理電路執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問的數(shù)據(jù)值;寄存器重命名存儲(chǔ)裝置,被配置為存儲(chǔ)所述邏輯寄存器與所述物理寄存器之間的一對(duì)一映射,所述處理電路在執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問所述寄存器重命名存儲(chǔ)裝置,以將所參考的邏輯寄存器映射到相應(yīng)的物理寄存器;更新電路,響應(yīng)于由所述處理電路執(zhí)行的要求數(shù)據(jù)被寫入所述邏輯寄存器中的多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作,標(biāo)識(shí)與所述寄存器重命名存儲(chǔ)裝置中的所述多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器,并改變所述寄存器重命名存儲(chǔ)裝置中的所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射,從而使得改變后的一對(duì)一映射在執(zhí)行所述當(dāng)前數(shù)據(jù)處理操作時(shí)被采用;并且如果所述當(dāng)前數(shù)據(jù)處理操作不要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器,那么在所述當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在所述處理電路參考所述寄存器重命名存儲(chǔ)裝置之前,所述寄存器重命名存儲(chǔ)裝置中的一對(duì)一映射不會(huì)被改變。[0008]根據(jù)本發(fā)明,發(fā)明人認(rèn)識(shí)到寄存器重命名可以與特定的數(shù)據(jù)處理操作相關(guān)聯(lián)地被提供,而不需要相對(duì)于不支持寄存器重命名的等效設(shè)備而言增大物理寄存器的大小,并且不需要在指令流中添加額外指令。特別地,根據(jù)本發(fā)明,寄存器重命名在所述處理電路執(zhí)行要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作時(shí)被使用。在該實(shí)例中,寄存器重命名存儲(chǔ)裝置被訪問以標(biāo)識(shí)對(duì)應(yīng)于所述多個(gè)邏輯寄存器的物理寄存器,然后所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射被改變(即,使用之前分配給所述多個(gè)邏輯寄存器的物理寄存器的群組,對(duì)這些邏輯寄存器執(zhí)行寄存器重命名)。重命名的定時(shí)是這樣的定時(shí),該定時(shí)使得在當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在數(shù)據(jù)被實(shí)際寫入寄存器時(shí),采用由寄存器重命名產(chǎn)生的改變后的一對(duì)一映射。對(duì)于任何不需要數(shù)據(jù)被寫入多個(gè)邏輯寄存器的數(shù)據(jù)處理操作,不執(zhí)行重命名,并且寄存器重命名存儲(chǔ)裝置的當(dāng)前狀態(tài)被用來確定在此數(shù)據(jù)處理操作的執(zhí)行期間哪個(gè)物理寄存器被實(shí)際訪問。[0009]當(dāng)寄存器重命名不是針對(duì)對(duì)于物理寄存器的所有訪問執(zhí)行時(shí),已經(jīng)發(fā)現(xiàn)本發(fā)明的方法仍可以提供對(duì)于安全攻擊的顯著增強(qiáng)的保護(hù)。此外,由于與不提供寄存器重命名的等效設(shè)備相比較不需要增大物理寄存器的大小,而且不需要修改該設(shè)備上運(yùn)行的程序來支持寄存器重命名,所以可以用最小的面積和性能成本實(shí)現(xiàn)以上效果。在安全相關(guān)設(shè)備的背景中,要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的數(shù)據(jù)處理操作發(fā)生得相對(duì)頻繁,例如,因?yàn)榘踩惴ㄍǔA向于在對(duì)數(shù)據(jù)執(zhí)行操作之前使用多加載指令(loadmultipleinstruction)來加載一系列數(shù)據(jù)值到寄存器內(nèi),并且本發(fā)明使得寄存器重命名在每當(dāng)這種操作發(fā)生時(shí)就被執(zhí)行。[0010]在一個(gè)實(shí)施例中,所述處理電路被配置為,如果當(dāng)前數(shù)據(jù)處理操作要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器,則向所述更新電路提供標(biāo)識(shí)所述多個(gè)邏輯寄存器的列表。然后,所述更新電路在訪問所述寄存器重命名存儲(chǔ)裝置時(shí)使用該列表,以標(biāo)識(shí)與該列表中的邏輯寄存器相對(duì)應(yīng)的物理寄存器。在許多實(shí)現(xiàn)方式中,在執(zhí)行要求多個(gè)寄存器被寫入的數(shù)據(jù)處理操作時(shí),所述處理電路已經(jīng)產(chǎn)生了這樣的列表作為它的輸出信號(hào)之一,因此很容易考慮到將該列表提供給更新電路。[0011]更新電路改變寄存器重命名存儲(chǔ)裝置中的多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射的方法可采取多種形式。例如,更新電路可以在一組預(yù)定的轉(zhuǎn)換中的轉(zhuǎn)換之間循環(huán),每個(gè)轉(zhuǎn)換都以預(yù)定的方式將邏輯寄存器映射到物理寄存器。然而,在一個(gè)實(shí)施例中,該數(shù)據(jù)處理設(shè)備還包括隨機(jī)數(shù)發(fā)生器電路,該隨機(jī)數(shù)發(fā)生器電路響應(yīng)于要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作,輸出隨機(jī)數(shù)給更新電路。更新電路然后被配置為使用隨機(jī)數(shù)來控制如何改變寄存器重命名存儲(chǔ)裝置中的一對(duì)一映射。產(chǎn)生的隨機(jī)數(shù)在一個(gè)實(shí)施例中可以是真正的隨機(jī)數(shù),而在另一個(gè)實(shí)施例中偽隨機(jī)數(shù)可以被生成。通過使用從隨機(jī)數(shù)發(fā)生器電路輸出的隨機(jī)數(shù)來控制如何改變一對(duì)一映射,進(jìn)一步提高了對(duì)于安全攻擊的防御,因?yàn)樵诩拇嫫鞅恢孛姆绞街袥]有規(guī)律的模式。[0012]改變多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射的定時(shí)可以根據(jù)實(shí)現(xiàn)方式而改變。在一個(gè)實(shí)施例中,更新電路被配置為在處理電路參考寄存器重命名存儲(chǔ)裝置來標(biāo)識(shí)與所述多個(gè)邏輯寄存器中的任意一個(gè)相對(duì)應(yīng)的物理寄存器之前,改變所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射。因此,根據(jù)本實(shí)施例,在任意寄存器通過當(dāng)前數(shù)據(jù)處理操作被寫入之前,寄存器重命名針對(duì)所有的多個(gè)邏輯寄存器被一次執(zhí)行。這種方法通??梢栽诓豢紤]當(dāng)前數(shù)據(jù)處理操作怎樣進(jìn)行對(duì)寄存器的多次寫入,并且因此不考慮是順序還是至少部分并行地執(zhí)行寫入的情況下被采用,所以它可以確保一對(duì)一映射被及時(shí)改變以供執(zhí)行任意多寄存器寫入時(shí)采用。[0013]然而,在替代實(shí)施例中,如果當(dāng)前數(shù)據(jù)處理操作要求數(shù)據(jù)被順序?qū)懭攵鄠€(gè)邏輯寄存器中的每個(gè)邏輯寄存器,那么可以使用替代方法來改變一對(duì)一映射。特別地,根據(jù)這種方法,更新電路創(chuàng)建空閑列表,該空閑列表最初標(biāo)識(shí)出了與寄存器重命名存儲(chǔ)裝置中的多個(gè)邏輯寄存器相對(duì)應(yīng)的所有的所標(biāo)識(shí)的物理寄存器。在當(dāng)前數(shù)據(jù)處理操作要求每個(gè)邏輯寄存器被寫入時(shí),更新電路被配置為通過為該邏輯寄存器分配空閑列表中所標(biāo)識(shí)的物理寄存器之一,然后將所分配的物理寄存器從空閑列表中刪除來改變?cè)撨壿嫾拇嫫鞯囊粚?duì)一映射。根據(jù)這種方法,一對(duì)一映射的改變是與每次寫入交織在一起的,所以特定邏輯寄存器的一對(duì)一映射在對(duì)該特定邏輯寄存器的寫入被執(zhí)行之前被改變。[0014]有各種形式的可能要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的數(shù)據(jù)處理操作。在一個(gè)實(shí)施例中,要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作響應(yīng)于多加載指令被執(zhí)行,該多加載指令標(biāo)識(shí)多個(gè)邏輯寄存器并且使得數(shù)據(jù)基于寄存器重命名存儲(chǔ)裝置中存儲(chǔ)的改變后的一對(duì)一映射被從存儲(chǔ)器加載到一組物理寄存器中的相應(yīng)的多個(gè)物理寄存器。如前所述,這樣的多加載指令經(jīng)常用在安全相關(guān)的應(yīng)用中,因此良好的安全攻擊應(yīng)變水平可以通過針對(duì)這些操作執(zhí)行寄存器重命名來提供。另外,進(jìn)一步提高的應(yīng)變力(如果需要的話)可以通過在設(shè)備上運(yùn)行的軟件內(nèi)增加使用該多加載指令來實(shí)現(xiàn)。[0015]替代地,或者另外,要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作可以是模式轉(zhuǎn)換操作,該模式轉(zhuǎn)換操作使得第一操作模式轉(zhuǎn)換到第二操作模式,在模式轉(zhuǎn)換期間,與第二操作模式相關(guān)的數(shù)據(jù)被從堆棧加載到該組物理寄存器中的以下物理寄存器,這些物理寄存器與寄存器重命名存儲(chǔ)裝置中存儲(chǔ)的改變后的一對(duì)一映射所標(biāo)識(shí)的所述邏輯寄存器中的多個(gè)預(yù)定的邏輯寄存器相對(duì)應(yīng)。在運(yùn)行安全軟件時(shí),模式轉(zhuǎn)換經(jīng)常發(fā)生。例如,經(jīng)常出現(xiàn)這樣的情況:在正常操作模式期間發(fā)生異常,這會(huì)使處理電路變換到安全操作模式,在該安全操作模式下異常處理例程被執(zhí)行。在變換到安全操作模式期間,至少一些物理寄存器中保存的數(shù)據(jù)將被從這些物理寄存器存儲(chǔ)到存儲(chǔ)器的堆棧中。異常處理例程完成后,處理電路將會(huì)從安全操作模式變換回正常操作模式,以恢復(fù)發(fā)生異常時(shí)運(yùn)行的程序代碼中從該點(diǎn)開始的處理。作為變換回正常操作模式的一部分,會(huì)發(fā)生出堆操作,從而使得存儲(chǔ)器中的堆棧中保存的數(shù)據(jù)被加載回相關(guān)的物理寄存器。因?yàn)檫@是要求多個(gè)寄存器被寫入的操作,所以在出堆操作期間可使用本發(fā)明實(shí)施例的寄存器重命名技術(shù)。[0016]在一個(gè)實(shí)施例中,該組物理寄存器可以具有允許多個(gè)物理寄存器被同時(shí)寫入的多個(gè)寫入端口。在這種情況下,要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的進(jìn)一步的數(shù)據(jù)處理操作會(huì)發(fā)生。特別地,在這樣的實(shí)施例中,這樣的數(shù)據(jù)處理操可以響應(yīng)于一個(gè)或多個(gè)指令的運(yùn)行而被執(zhí)行,該一個(gè)或多個(gè)指令使得針對(duì)被映射到寄存器重命名存儲(chǔ)裝置中的相應(yīng)的兩個(gè)或更多個(gè)邏輯寄存器的兩個(gè)或更多個(gè)物理寄存器的同時(shí)寫入經(jīng)由多個(gè)寫入端口被執(zhí)行。例如,一些比較復(fù)雜的算法指令可以導(dǎo)致兩項(xiàng)結(jié)果數(shù)據(jù)的輸出通過多個(gè)寫入端口被同時(shí)寫入兩個(gè)不同的寄存器。替代地,在一些系統(tǒng)中,多個(gè)指令可以在不同的運(yùn)行單元中并行執(zhí)行,并且因此可以分別產(chǎn)生將通過多個(gè)寫入端口被同時(shí)寫入物理寄存器的輸出。示例可以是并行執(zhí)行兩個(gè)單加載指令,并行執(zhí)行算法指令和單加載指令,并行執(zhí)行兩個(gè)算法指令,等等。[0017]從第二方面看,本發(fā)明提供了一種在數(shù)據(jù)處理設(shè)備中執(zhí)行寄存器重命名的方法,該數(shù)據(jù)處理設(shè)備包括用于響應(yīng)于數(shù)據(jù)處理指令而執(zhí)行數(shù)據(jù)處理操作的處理電路、以及用于存儲(chǔ)供所述處理電路執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問的數(shù)據(jù)值的一組物理寄存器,所述數(shù)據(jù)處理指令參考邏輯寄存器,該方法包括:(a)在寄存器重命名存儲(chǔ)裝置中存儲(chǔ)所述邏輯寄存器與所述物理寄存器之間的一對(duì)一映射;(b)當(dāng)執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問所述寄存器重命名存儲(chǔ)裝置,以將所參考的邏輯寄存器映射到相應(yīng)的物理寄存器;(c)響應(yīng)于由所述處理電路執(zhí)行的要求數(shù)據(jù)被寫入所述邏輯寄存器中的多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作,標(biāo)識(shí)與所述寄存器重命名存儲(chǔ)裝置中的所述多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器,改變所述寄存器重命名存儲(chǔ)裝置中的所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射,從而使得在所述當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在步驟(b)訪問所述寄存器重命名存儲(chǔ)裝置時(shí)采用改變后的一對(duì)一映射;和(d)如果所述當(dāng)前數(shù)據(jù)處理操作不要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器,那么保持所述寄存器重命名存儲(chǔ)裝置中的一對(duì)一映射不變,從而使得在所述當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在步驟(b)訪問所述寄存器重命名存儲(chǔ)裝置時(shí)采用未改變的一對(duì)一映射。[0018]從第三方面看,本發(fā)明提供了一種數(shù)據(jù)處理設(shè)備,包括:處理部件,用于響應(yīng)于數(shù)據(jù)處理指令而執(zhí)行數(shù)據(jù)處理操作,所述數(shù)據(jù)處理指令參考邏輯寄存器;一組物理寄存器部件,用于存儲(chǔ)供所述處理部件執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問的數(shù)據(jù)值;寄存器重命名存儲(chǔ)裝置部件,用于存儲(chǔ)所述邏輯寄存器與所述物理寄存器部件之間的一對(duì)一映射,所述處理部件在執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問所述寄存器重命名存儲(chǔ)裝置部件以將所參考的邏輯寄存器映射到相應(yīng)的物理寄存器部件;更新部件,用于響應(yīng)于由所述處理部件執(zhí)行的要求數(shù)據(jù)被寫入所述邏輯寄存器中的多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作,標(biāo)識(shí)與所述寄存器重命名存儲(chǔ)裝置部件中的所述多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器部件,改變所述寄存器重命名存儲(chǔ)裝置部件中的所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器部件之間的一對(duì)一映射,從而使得在執(zhí)行所述當(dāng)前數(shù)據(jù)處理操作時(shí)改變后的一對(duì)一映射被采用;并且如果所述當(dāng)前數(shù)據(jù)處理操作不要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器,那么在所述當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在所述處理部件參考所述寄存器重命名存儲(chǔ)裝置部件之前,所述寄存器重命名存儲(chǔ)裝置部件內(nèi)的一對(duì)一映射不被改變?!緦@綀D】【附圖說明】[0019]參考附圖中所示的實(shí)施例,僅通過示例來進(jìn)一步描述本發(fā)明,其中:[0020]圖1是根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理設(shè)備的框圖;[0021]圖2A更詳細(xì)地示出了根據(jù)一個(gè)實(shí)施例的圖1的寄存器文件電路的一個(gè)示例;[0022]圖2B示出了圖2A的寄存器重命名電路中的重命名表格中保存的數(shù)據(jù),該數(shù)據(jù)用于圖2A中示出的邏輯寄存器到物理寄存器的特定映射;[0023]圖3是更詳細(xì)地示出根據(jù)一個(gè)實(shí)施例的圖2A的寄存器重命名電路中所設(shè)置的組件的框圖;[0024]圖4是示出根據(jù)一個(gè)實(shí)施例的在操作執(zhí)行期間物理寄存器是如何被訪問的流程圖;[0025]圖5是提供了在執(zhí)行圖4的處理時(shí)寄存器重命名是怎樣被執(zhí)行的示例的表格;[0026]圖6是示出根據(jù)替代實(shí)施例的在操作執(zhí)行期間物理寄存器是如何被訪問的流程圖;以及[0027]圖7是提供了在執(zhí)行圖6的處理時(shí)寄存器重命名是怎樣被執(zhí)行的示例的表格?!揪唧w實(shí)施方式】[0028]圖1是根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理設(shè)備的框圖。在該示例中,數(shù)據(jù)處理設(shè)備采用處理器內(nèi)核5的形式,處理器內(nèi)核5包括用于響應(yīng)于數(shù)據(jù)處理指令而執(zhí)行數(shù)據(jù)處理操作的處理電路10。還提供了包括寄存器組45(在此也稱為寄存器文件)的寄存器文件電路40,該寄存器組45提供用于存儲(chǔ)供處理電路執(zhí)行數(shù)據(jù)處理操作時(shí)訪問的數(shù)據(jù)值的一組物理寄存器。[0029]處理電路10可以提供用于執(zhí)行所需的數(shù)據(jù)處理操作的多個(gè)數(shù)據(jù)處理單元。這些數(shù)據(jù)處理單元之一通常是加載/存儲(chǔ)單元(LSU)30,該加載/存儲(chǔ)單元用于將數(shù)據(jù)從存儲(chǔ)器加載到寄存器組45中的寄存器,或者將數(shù)據(jù)從寄存器組45中的寄存器存儲(chǔ)回存儲(chǔ)器。其他的數(shù)據(jù)處理單元(在圖1中統(tǒng)一標(biāo)識(shí)為塊20)可采取多種形式,例如,用于執(zhí)行算術(shù)運(yùn)算的算術(shù)邏輯單元(ALU)、用于執(zhí)行浮點(diǎn)運(yùn)算的浮點(diǎn)單元(FPU)、以及用于預(yù)讀取指令的預(yù)讀取單元等。這些其他的數(shù)據(jù)處理單元20也將在它們的數(shù)據(jù)處理操作的執(zhí)行期間從寄存器組45中讀取數(shù)據(jù)以及向寄存器組45中寫入數(shù)據(jù)。[0030]根據(jù)所述實(shí)施例,處理電路10上執(zhí)行的數(shù)據(jù)處理指令參考了邏輯寄存器,并且在某些情況中可以通過寄存器重命名電路50來改變這些邏輯寄存器到寄存器組45中的物理寄存器的映射。特別地,如會(huì)在稍后詳細(xì)討論的,如果通過處理電路10執(zhí)行的當(dāng)前數(shù)據(jù)處理操作要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器,那么寄存器重命名操作被寄存器重命名電路50執(zhí)行,以在該數(shù)據(jù)處理操作的執(zhí)行期間數(shù)據(jù)被寫入物理寄存器之前改變邏輯寄存器與物理寄存器之間的一對(duì)一映射。然而,對(duì)于不要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的任意數(shù)據(jù)處理操作,不執(zhí)行這樣的重命名,并且由寄存器重命名電路50維持的重命名表的當(dāng)前狀態(tài)被用來標(biāo)識(shí)邏輯寄存器與物理寄存器之間的映射。[0031]圖2A更詳細(xì)地示出了圖1的寄存器文件電路40。在此示例中,假設(shè)寄存器組具有一個(gè)寫入端口和一個(gè)讀取端口,這樣在任何時(shí)間點(diǎn),數(shù)據(jù)只能被寫入一個(gè)寄存器并且數(shù)據(jù)只能從一個(gè)寄存器讀取。當(dāng)要對(duì)寄存器組45的寄存器執(zhí)行寫入時(shí),邏輯寄存器的指示(在此也稱為邏輯寫入地址)被從處理電路10提供給寄存器文件電路40的邏輯寫入地址端口,然后被從該端口經(jīng)過路徑72路由到寄存器重命名電路50。類似地,如果要從寄存器組45的寄存器之一執(zhí)行讀取,那么邏輯讀取地址被從處理電路10提供給寄存器文件電路40的邏輯讀取地址端口,然后被從該端口經(jīng)過路徑76路由到寄存器重命名電路50。寄存器重命名電路維持重命名表格,該表格提供了可以在指令中指定的邏輯寄存器與寄存器組45的實(shí)際的物理寄存器42、44、46、48、50、52、54之間的一對(duì)一映射。圖2B示意性地示出了用于圖2A所示的具體示例的重命名表格100。在此示例中,邏輯寄存器O被映射到物理寄存器144,邏輯寄存器I被映射到物理寄存器348,等等。[0032]對(duì)于針對(duì)寄存器組45中的寄存器執(zhí)行的任意讀取,寄存器重命名電路50使用邏輯讀取地址來訪問重命名表格以標(biāo)識(shí)當(dāng)前被映射到該邏輯寄存器的物理寄存器,并且經(jīng)過路徑80將該物理寄存器的指示(在此也稱為虛擬讀取地址)輸出到虛擬讀取地址端口,該信息被用來控制多路復(fù)用器65,以使來自適當(dāng)?shù)奈锢砑拇嫫鞯妮敵鲎鳛樽x取數(shù)據(jù)經(jīng)過路徑84被路由出去,該讀取數(shù)據(jù)隨后被送回處理電路10。[0033]對(duì)于不要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的寫入操作,使用經(jīng)過路徑72提供的邏輯寫入地址執(zhí)行相似的處理,其中,通過訪問重命名表格標(biāo)識(shí)的虛擬寫入地址經(jīng)過路徑78被輸出,以控制多路復(fù)用器60,從而使得經(jīng)過路徑82提供的寫入數(shù)據(jù)被從處理電路10路由到寄存器組45中的相應(yīng)的物理寄存器。[0034]然而,如果由處理電路10執(zhí)行的當(dāng)前數(shù)據(jù)處理操作要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器,那么寄存器重命名電路50被設(shè)置為檢測(cè)這樣的情況,并且被配置為在檢測(cè)到時(shí)調(diào)用寄存器重命名電路50中的更新電路以在物理寄存器被寫入之前針對(duì)有關(guān)邏輯寄存器執(zhí)行重命名。在這樣的數(shù)據(jù)處理操作被執(zhí)行的很多情況中,處理電路10將經(jīng)過路徑74輸出指示該操作為多寫入操作的信號(hào),并且在這樣的實(shí)例中還將經(jīng)過路徑70提供標(biāo)識(shí)將被寫入的邏輯寄存器的列表的寄存器列表。這樣的信號(hào)由處理電路10發(fā)出的示例情況是:LSU30執(zhí)行多加載(loadmultiple,LDM)指令來將數(shù)據(jù)從存儲(chǔ)器加載到寄存器組中的多個(gè)寄存器。[0035]作為另一個(gè)示例,當(dāng)處理電路變換到安全操作模式以執(zhí)行異常處理例程來處理發(fā)生的異常情況時(shí),在從正常操作模式變換到安全操作模式期間,寄存器組45的當(dāng)前狀態(tài)通常會(huì)被存儲(chǔ)到存儲(chǔ)器中的堆棧。當(dāng)異常處理例程完成后,處理電路10將變換回正常操作模式,在該正常操作模式期間,出棧操作將被執(zhí)行以將已經(jīng)被置于堆棧上的數(shù)據(jù)加載回寄存器組45。用于該操作的寄存器列表是預(yù)先確定的,因?yàn)槌龆巡僮鲗⑨槍?duì)預(yù)定數(shù)目的寄存器執(zhí)行。以下的信號(hào)將被從處理電路10發(fā)布給寄存器文件電路40,該信號(hào)指示出堆操作正被執(zhí)行,該信號(hào)被解釋為指示存在多寫入操作。[0036]在其他實(shí)施例中,多個(gè)寫入端口可以被與寄存器組相關(guān)聯(lián)地提供,從而使得一個(gè)以上寫入操作可以針對(duì)寄存器組45被并行執(zhí)行。在這種情況下,通過處理電路執(zhí)行的要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的操作的數(shù)量會(huì)增加,因?yàn)樘幚黼娐?0的數(shù)據(jù)處理單元中執(zhí)行的各個(gè)指令本身會(huì)生成一個(gè)以上將被并行寫入多個(gè)邏輯寄存器的結(jié)果數(shù)據(jù)值,或者一個(gè)處理單元中執(zhí)行的產(chǎn)生一個(gè)輸出的指令可以與另一個(gè)處理單元中執(zhí)行的也產(chǎn)生一個(gè)輸出的另一指令并行執(zhí)行,并且這兩個(gè)輸出會(huì)被同時(shí)寫入寄存器文件。在這樣的實(shí)施例中,將有多于一個(gè)的邏輯寫入地址端口,并且寄存器列表可以由這些端口處提供的各種邏輯寫入地址構(gòu)建。而且,多寫入條件的存在可以通過在相同的時(shí)鐘周期里出現(xiàn)的一個(gè)以上有效邏輯寫入地址的存在被檢測(cè)到。[0037]每當(dāng)多寫入條件被檢測(cè)到時(shí),更新電路使用寄存器列表來訪問重命名表格,以標(biāo)識(shí)與該寄存器列表中的多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器。然后,其在多個(gè)邏輯寄存器當(dāng)中重新分配所標(biāo)識(shí)的物理寄存器,以改變寄存器重命名存儲(chǔ)裝置中的該多個(gè)邏輯寄存器與這些所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射。映射改變的定時(shí)被執(zhí)行,從而使得每個(gè)寫入在當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間發(fā)生,改變后的一對(duì)一映射在標(biāo)識(shí)將被寫入的實(shí)際的物理寄存器時(shí)被采用。[0038]圖3是更詳細(xì)地示出根據(jù)一個(gè)實(shí)施例的圖2A的寄存器重命名電路50中設(shè)置的組件的框圖。重命名表格110被提供用于針對(duì)每個(gè)邏輯寄存器標(biāo)識(shí)相關(guān)聯(lián)的物理寄存器。數(shù)據(jù)可以被保存在重命名表格中以實(shí)現(xiàn)這種映射的格式有多種。例如,指數(shù)值可以被存儲(chǔ),以標(biāo)識(shí)如何將標(biāo)識(shí)邏輯寄存器的邏輯地址轉(zhuǎn)變成標(biāo)識(shí)物理寄存器的虛擬地址。[0039]重命名表格110經(jīng)由邏輯到物理映射電路130被訪問,其中該電路可以根據(jù)經(jīng)過路徑132提供的邏輯寄存器指示(在此也稱為邏輯寄存器地址)在重命名表格中執(zhí)行查找以標(biāo)識(shí)相應(yīng)的物理寄存器,并可以隨后將標(biāo)識(shí)將被訪問的物理寄存器的虛擬地址輸出到寄存器組45的相關(guān)多路復(fù)用器60和65。[0040]寄存器訪問控制電路140被提供用于控制邏輯到物理映射電路130的操作,并且用于針對(duì)所選擇的操作控制更新電路120的操作。特別地,對(duì)于對(duì)寄存器組的每次訪問,寄存器訪問控制電路接收標(biāo)識(shí)該訪問是讀取訪問還是寫入訪問的讀取/寫入信號(hào),并且還在所要求的訪問涉及數(shù)據(jù)寫入多個(gè)邏輯寄存器的情況下接收多寫入信號(hào)。該信號(hào)被路由到寄存器訪問控制電路140中的多寫入檢測(cè)電路150。在不存在多寫入操作時(shí),寄存器訪問控制電路140發(fā)送使能信號(hào)給邏輯到物理映射電路130,以使其根據(jù)經(jīng)過路徑132提供的邏輯寄存器標(biāo)識(shí)符來訪問重命名表格110。然而,在多寫入操作的情況下,寄存器訪問控制電路140首先發(fā)送使能信號(hào)給更新電路120,以使其針對(duì)重命名表格100中的某些邏輯寄存器執(zhí)行重命名操作。特別地,更新電路120經(jīng)過路徑122接收寄存器列表并且根據(jù)該信息訪問重命名表格110,以標(biāo)識(shí)當(dāng)前與寄存器列表中標(biāo)識(shí)的多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器。其隨后改變?cè)摻M所標(biāo)識(shí)的物理寄存器與寄存器列表中的多個(gè)邏輯寄存器相關(guān)聯(lián)的方式,從而使得寄存器訪問控制電路140在這個(gè)時(shí)候使能邏輯到物理映射電路130根據(jù)經(jīng)過路徑132提供的邏輯寄存器標(biāo)識(shí)符來執(zhí)行其操作,改變后的映射被使用。[0041]更新電路120改變映射的方式有多種。例如,其可以配置有一組預(yù)定的轉(zhuǎn)換來執(zhí)行這樣的重映射,并且可以循環(huán)通過這些轉(zhuǎn)換以便在每次執(zhí)行這樣的更新操作時(shí)使用該組轉(zhuǎn)換中的不同轉(zhuǎn)換。然而,在一個(gè)實(shí)施例中,隨機(jī)數(shù)發(fā)生器160被提供,該隨機(jī)數(shù)發(fā)生器由寄存器訪問控制電路140控制來在多寫入操作存在的情況下生成隨機(jī)數(shù),該隨機(jī)數(shù)作為輸入被提供給更新電路120。盡管所生成的隨機(jī)數(shù)可以是真隨機(jī)數(shù),但是在一個(gè)實(shí)施例中,隨機(jī)數(shù)發(fā)生器160是生成偽隨機(jī)數(shù)的偽隨機(jī)數(shù)發(fā)生器。更新電路120隨后可以使用隨機(jī)數(shù)來控制如何將列表中的每個(gè)邏輯寄存器映射到所標(biāo)識(shí)的物理寄存器之一。這樣的方法確保了不存在重復(fù)的執(zhí)行更新的模式,因而進(jìn)一步提高了安全性。[0042]圖4是示出根據(jù)一個(gè)實(shí)施例的圖3的電路操作的流程圖。在步驟200,確定存在將被執(zhí)行的要求對(duì)寄存器組進(jìn)行訪問的操作。在步驟205中,確定該操作是否需要寫入寄存器組,如果不需要,那么在步驟245中寄存器訪問控制電路140促使邏輯到物理映射電路130使用經(jīng)過路徑132提供的邏輯寄存器地址來訪問重命名表格110。這會(huì)使得重命名表格在步驟245中返回與邏輯地址匹配的虛擬地址,然后數(shù)據(jù)在步驟250中被從該虛擬地址中讀取出來。接著,讀取的數(shù)據(jù)被返回給處理電路。處理隨后在步驟255中結(jié)束。[0043]如果在步驟205中確定該操作不需要寫入寄存器組,那么在步驟210中確定該操作是否只改變一個(gè)寄存器的內(nèi)容。如果是,那么在步驟215中寄存器訪問控制電路140促使邏輯到物理映射電路130根據(jù)經(jīng)過路徑132提供的邏輯寄存器地址在重命名表格110中執(zhí)行查找。在該處理期間,重命名表格不變,因此邏輯寄存器保持與之前相同的虛擬地址。然后,在步驟220中,由處理電路提供的寫入數(shù)據(jù)被寫入到虛擬地址所標(biāo)識(shí)的物理寄存器中,然后處理在步驟255中結(jié)束。[0044]如果在步驟210中確定該操作不只改變一個(gè)寄存器(即,該操作是要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的操作),那么處理分支到步驟225。在步驟225中,與要更新的邏輯寄存器相關(guān)聯(lián)的X個(gè)物理寄存器被標(biāo)識(shí)。該步驟由更新電路120使用經(jīng)過路徑122提供的寄存器列表執(zhí)行,其中更新電路對(duì)重命名表格110進(jìn)行訪問以標(biāo)識(shí)這些物理寄存器。[0045]在步驟230中,更新電路120針對(duì)寄存器列表中的每個(gè)邏輯寄存器執(zhí)行物理寄存器的重新分配。特別地,對(duì)于寄存器列表中的每個(gè)邏輯寄存器,更新電路120分配所標(biāo)識(shí)的物理寄存器之一并且相應(yīng)地更新重命名列表,以與該邏輯寄存器相關(guān)聯(lián)地標(biāo)識(shí)適當(dāng)?shù)奶摂M地址。[0046]—旦針對(duì)每個(gè)邏輯寄存器執(zhí)行了該操作,寫入操作可以繼續(xù)。特別地,在步驟235中,寄存器訪問控制電路140促使邏輯到物理映射電路130根據(jù)路徑132上所提供的邏輯寄存器標(biāo)識(shí)符來訪問重命名表格以獲得適當(dāng)?shù)奶摂M地址(這基于更新電路的操作產(chǎn)生的改變后的重映射),然后數(shù)據(jù)被寫入該虛擬地址中的寄存器。在步驟240中確定該操作是否完成(即,所有數(shù)據(jù)已經(jīng)被寫入),如果沒有完成,那么針對(duì)經(jīng)過路徑132提供的下一個(gè)邏輯寄存器標(biāo)識(shí)符步驟235被重新執(zhí)行。一旦操作完成,處理在步驟255中結(jié)束。[0047]圖5是示意性示出在執(zhí)行樣本序列的指令時(shí)如何根據(jù)圖4的技術(shù)對(duì)重命名表格110進(jìn)行修改的表格,其中,該樣本序列的指令是影響單個(gè)寄存器的移動(dòng)指令、影響多個(gè)寄存器的多加載指令(LDM)、以及僅影響一個(gè)寄存器的單加載指令。當(dāng)在時(shí)間to執(zhí)行移動(dòng)指令時(shí),假設(shè)邏輯寄存器與物理寄存器之間的映射是由圖5中的列260指示的。因?yàn)樵撘苿?dòng)指令只更新單個(gè)寄存器的內(nèi)容,所以不改變重命名表格,并且相應(yīng)地在針對(duì)邏輯寄存器r0執(zhí)行移動(dòng)操作時(shí)物理寄存器5被訪問。[0048]當(dāng)在時(shí)間tl執(zhí)行多加載指令時(shí),其促使更新電路120標(biāo)識(shí)在執(zhí)行該多加載操作時(shí)所有要被寫入的寄存器。這不僅包括目的寄存器r3到r6,還包括含有源地址的源寄存器r0,因?yàn)槠鋵?huì)在執(zhí)行多加載操作時(shí)被更新來標(biāo)識(shí)新的基址。因此,如列265所示,與目的邏輯寄存器r3到r6以及源邏輯寄存器rO相關(guān)聯(lián)的這些物理寄存器被標(biāo)識(shí)出來(被視為空閑,可用于重映射),相關(guān)的物理寄存器為物理寄存器0、1、2、4和5。當(dāng)再次處于時(shí)間tl時(shí)(即,隨后在相同的時(shí)鐘周期期間),基址在邏輯寄存器rO中被更新。在把該更新交給物理寄存器之前,更新電路對(duì)邏輯寄存器rO執(zhí)行重映射,并且在一個(gè)實(shí)施例中物理寄存器實(shí)際上是使用從隨機(jī)數(shù)發(fā)生器160輸入的隨機(jī)數(shù)隨機(jī)選擇的。在該示例中,假設(shè)隨機(jī)數(shù)輸入使更新電路將邏輯寄存器O和物理寄存器O關(guān)聯(lián)起來,并且如列270所示,更新后的基址被相應(yīng)地存儲(chǔ)在物理寄存器O中。[0049]根據(jù)圖4的處理,所有其他邏輯寄存器在相同時(shí)間被重映射,并且這可以根據(jù)所提供的隨機(jī)數(shù)再次隨機(jī)執(zhí)行。在該示例中,如列270所示,假設(shè)邏輯寄存器5被重映射到物理寄存器I,邏輯寄存器6被重映射到物理寄存器2,邏輯寄存器4被重映射到物理寄存器4,并且邏輯寄存器3被重映射到物理寄存器5。[0050]在時(shí)間t2、t3、t4、和t5,四個(gè)寫入操作被針對(duì)邏輯寄存器r3、r4、r5和r6分別執(zhí)行,并且對(duì)于這些寫入操作使用了在時(shí)間tl確定的修改后的重映射。列275、280、285、290示出該修改后的重映射被使用,因此,例如在時(shí)間t2邏輯寄存器3的數(shù)據(jù)值被寫入到物理寄存器5,在時(shí)間t3邏輯寄存器4的數(shù)據(jù)值被寫入到物理寄存器4,等等。[0051]在多加載指令被執(zhí)行后,在時(shí)間t6單加載指令被執(zhí)行。因?yàn)檫@不涉及更新一個(gè)以上邏輯寄存器,所以重命名表格的內(nèi)容不會(huì)發(fā)生改變,因此當(dāng)寄存器rO被更新為存儲(chǔ)與邏輯寄存器rl所提供的地址相關(guān)聯(lián)的數(shù)據(jù)時(shí),根據(jù)重命名表格的當(dāng)前內(nèi)容該數(shù)據(jù)被寫入物理寄存器O中。[0052]圖6是示出根據(jù)替代實(shí)施例的圖3的電路是如何操作的流程圖。從圖4和圖6的比較中可以明顯看出,唯一的不同出現(xiàn)在A點(diǎn)與B點(diǎn)之間,所以該圖的其它部分不會(huì)做進(jìn)一步討論,因?yàn)樗鶊?zhí)行的步驟已經(jīng)在之前參考圖4討論過。然而,根據(jù)圖6,針對(duì)要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的操作所執(zhí)行的步驟的順序稍有不同,在該實(shí)施例中,假設(shè)多次寫入是順序執(zhí)行的。在步驟300中,與寄存器列表中的邏輯寄存器相關(guān)聯(lián)的X個(gè)物理寄存器被標(biāo)識(shí)出來,并且在空閑列表中被標(biāo)記為空閑。空閑列表可以以各種各樣的方式被提供,并且在一個(gè)實(shí)施例中可以采用對(duì)于更新電路120來說可訪問的小型存儲(chǔ)塊的形式。在步驟305中,將變量N設(shè)置為I。然后,在步驟310中,對(duì)于當(dāng)前的邏輯寄存器,來自空閑列表的物理寄存器被分配給該邏輯寄存器,并且重命名表格被相應(yīng)地更新以與當(dāng)前的邏輯寄存器相關(guān)聯(lián)地標(biāo)識(shí)適當(dāng)?shù)奶摂M地址。[0053]然后,在步驟315中,從空閑列表中刪除已被分配的物理寄存器,隨后在步驟320中步驟310中考慮的邏輯寄存器所要求的寫入操作被執(zhí)行。因此,在此階段,邏輯到物理映射電路130使用經(jīng)過路徑132提供的邏輯寄存器地址在重命名表格110中進(jìn)行查找以標(biāo)識(shí)這樣的虛擬地址,該虛擬地址標(biāo)識(shí)出了需要被寫入的物理地址。此時(shí),作為步驟310的結(jié)果出現(xiàn)的改變后的重映射將被利用。[0054]然后,在步驟325中,確定變量N是否等于X,即是否對(duì)所有邏輯寄存器執(zhí)行了重映射,如果沒有,那么變量N在步驟330中增加,并且處理返回步驟310。該處理繼續(xù),直到在步驟325中確定所有的邏輯寄存器被重映射,并且執(zhí)行了所要求的所有寫入操作為止,然后處理在步驟255中結(jié)束。[0055]圖7是示出當(dāng)執(zhí)行圖6的處理時(shí)重命名表格是如何被修改的表格,圖7假設(shè)完全相同的序列的指令被如之前參考圖5所討論的執(zhí)行??梢钥闯?,列360和365相當(dāng)于圖5中的列260和265。然而,當(dāng)基址再次在時(shí)間tl被更新時(shí),只有對(duì)邏輯寄存器O的重映射被更新,并且再次假設(shè)根據(jù)從隨機(jī)數(shù)發(fā)生器輸出的隨機(jī)數(shù)決定將邏輯寄存器O關(guān)聯(lián)到物理寄存器O。此時(shí),物理寄存器O被從空閑列表中刪除,但物理寄存器1、2、4、和5仍保留在空閑列表中。在時(shí)間t2,要求將數(shù)據(jù)值寫入邏輯寄存器3,對(duì)重命名表格進(jìn)行進(jìn)一步的修改,以使邏輯寄存器3重映射到空閑列表中的可用物理寄存器之一。這同樣可以被隨機(jī)完成,并且為了與圖5—致假設(shè)邏輯寄存器3被分配給物理寄存器5。此時(shí),物理寄存器5被從空閑列表中刪除,并且物理寄存器1、2和4保留在空閑列表中。因此,重命名表格現(xiàn)在具有由列375示意性示出的形式。[0056]如列380、385和390所示,針對(duì)多加載指令的每次進(jìn)一步的寫入操作重命名表格被修改,并且為了與圖5相一致假設(shè)與之前參考圖5討論的相同的重映射被執(zhí)行。因此,在時(shí)間t5發(fā)生最后的寫入操作時(shí),重命名表格采用由列390示出的形式,這與圖5的列290所示出的形式相同。以與之前參照?qǐng)D5討論的同樣的方式,當(dāng)隨后的單加載指令被執(zhí)行時(shí),不會(huì)修改重命名表格,如列395示意性地示出的。[0057]從以上對(duì)實(shí)施例的描述可以看出,該些實(shí)施例允許針對(duì)某些操作執(zhí)行寄存器重命名,同時(shí)可以避免增加物理寄存器組的大小,避免為了支持寄存器重命名需要對(duì)處理器內(nèi)核上執(zhí)行的程序做任何改動(dòng)。因此,這使寄存器重命名在某種程度上被執(zhí)行,從而以相對(duì)于不具有寄存器重命名功能的相同處理器內(nèi)核相比的最小開銷提供了對(duì)安全攻擊的增強(qiáng)的魯棒性。根據(jù)所描述的技術(shù),每當(dāng)處理電路執(zhí)行要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作時(shí),寄存器重命名被執(zhí)行。這樣的操作在執(zhí)行安全應(yīng)用時(shí)經(jīng)常發(fā)生,因此對(duì)于這樣的操作執(zhí)行寄存器重命名是非常有利的。對(duì)于任何不要求數(shù)據(jù)被寫入多個(gè)邏輯寄存器的操作,不執(zhí)行寄存器重命名,并且重命名表格的當(dāng)前內(nèi)容被用于提供邏輯寄存器和物理寄存器之間的映射。與針對(duì)每個(gè)操作執(zhí)行寄存器重命名的方法相比時(shí),這種方法通過減少動(dòng)態(tài)功耗而提供了功耗收益。[0058]雖然在這里描述了本發(fā)明的特定實(shí)施例,但是很明顯本發(fā)明不限于此,可以在本發(fā)明范圍之內(nèi)做出很多的修改和添加。例如,在不脫離本發(fā)明的范圍的條件下,可以對(duì)獨(dú)立權(quán)利要求的特征做出下列從屬權(quán)利要求的特征的各種組合?!緳?quán)利要求】1.一種數(shù)據(jù)處理設(shè)備,包括:處理電路,被配置為響應(yīng)于數(shù)據(jù)處理指令而執(zhí)行數(shù)據(jù)處理操作,所述數(shù)據(jù)處理指令參考邏輯寄存器;一組物理寄存器,被配置為存儲(chǔ)供所述處理電路執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問的數(shù)據(jù)值;寄存器重命名存儲(chǔ)裝置,被配置為存儲(chǔ)所述邏輯寄存器與所述物理寄存器之間的一對(duì)一映射,其中,所述處理電路在執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問所述寄存器重命名存儲(chǔ)裝置以將所參考的邏輯寄存器映射到相應(yīng)的物理寄存器;更新電路,響應(yīng)于由所述處理電路執(zhí)行的要求數(shù)據(jù)被寫入所述邏輯寄存器中的多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作,來標(biāo)識(shí)與所述寄存器重命名存儲(chǔ)裝置內(nèi)的所述多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器,并且改變所述寄存器重命名存儲(chǔ)裝置內(nèi)的所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射,從而使得改變后的一對(duì)一映射在執(zhí)行所述當(dāng)前數(shù)據(jù)處理操作時(shí)被采用;以及如果所述當(dāng)前數(shù)據(jù)處理操作不要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器,那么在所述當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在所述處理電路參考所述寄存器重命名存儲(chǔ)裝置之前,所述寄存器重命名存儲(chǔ)裝置內(nèi)的一對(duì)一映射不會(huì)被改變。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其中:所述處理電路被配置為,如果所述當(dāng)前數(shù)據(jù)處理操作要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器,則向所述更新電路提供標(biāo)識(shí)所述多個(gè)邏輯寄存器的列表。3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)處理設(shè)備,進(jìn)一步包括:隨機(jī)數(shù)發(fā)生器電路,響應(yīng)于所述當(dāng)前數(shù)據(jù)處理操作要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器,而向所述更新電路輸出隨機(jī)數(shù);所述更新電路被配置為使用所述隨機(jī)數(shù)來控制如何改變所述寄存器重命名存儲(chǔ)裝置內(nèi)的一對(duì)一映射。4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)處理設(shè)備,其中,所述隨機(jī)數(shù)發(fā)生器電路輸出的隨機(jī)數(shù)是偽隨機(jī)數(shù)。5.根據(jù)前述任一權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中:所述更新電路被配置為在所述處理電路參考所述寄存器重命名存儲(chǔ)裝置來標(biāo)識(shí)與所述多個(gè)邏輯寄存器中的任意一個(gè)相對(duì)應(yīng)的物理寄存器之前,改變所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射。6.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中:由所述處理電路執(zhí)行的所述當(dāng)前數(shù)據(jù)處理操作要求數(shù)據(jù)被順序?qū)懭胨龆鄠€(gè)邏輯寄存器中的每個(gè)邏輯寄存器;所述更新電路創(chuàng)建空閑列表,所述空閑列表最初標(biāo)識(shí)與所述寄存器重命名存儲(chǔ)裝置內(nèi)的所述多個(gè)邏輯寄存器相對(duì)應(yīng)的所有的所標(biāo)識(shí)的物理寄存器;在所述當(dāng)前數(shù)據(jù)處理操作要求每個(gè)邏輯寄存器被寫入時(shí),所述更新電路被配置為通過分配所述空閑列表中所標(biāo)識(shí)的物理寄存器之一,然后從所述空閑列表中刪除所分配的物理寄存器來改變?cè)撨壿嫾拇嫫鞯囊粚?duì)一映射。7.根據(jù)前述任一權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中,響應(yīng)于多加載指令,要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器的所述當(dāng)前數(shù)據(jù)處理操作被執(zhí)行,所述多加載指令標(biāo)識(shí)多個(gè)邏輯寄存器并且使得數(shù)據(jù)基于所述寄存器重命名存儲(chǔ)裝置中存儲(chǔ)的改變后的一對(duì)一映射被從存儲(chǔ)器加載到所述一組物理寄存器中的相應(yīng)的多個(gè)物理寄存器。8.根據(jù)前述任一權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中,要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器的所述當(dāng)前數(shù)據(jù)處理操作是促使從第一操作模式轉(zhuǎn)換到第二操作模式的模式轉(zhuǎn)換操作,在所述模式轉(zhuǎn)換操作期間,與所述第二操作模式相關(guān)的數(shù)據(jù)被從堆棧加載到所述一組物理寄存器中的以下物理寄存器,該物理寄存器對(duì)應(yīng)于由所述寄存器重命名存儲(chǔ)裝置內(nèi)存儲(chǔ)的改變后的一對(duì)一映射所標(biāo)識(shí)的所述邏輯寄存器中的預(yù)定的多個(gè)邏輯寄存器。9.根據(jù)前述任一權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中:所述一組物理寄存器具有多個(gè)寫入端口,該多個(gè)寫入端口允許多個(gè)物理寄存器被同時(shí)寫入;并且響應(yīng)于一個(gè)或多個(gè)指令的執(zhí)行,要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器的所述當(dāng)前數(shù)據(jù)處理操作被執(zhí)行,所述一個(gè)或多個(gè)指令使得針對(duì)被映射到所述寄存器重命名存儲(chǔ)裝置中的相應(yīng)的兩個(gè)或更多個(gè)邏輯寄存器的兩個(gè)或更多個(gè)物理寄存器的同時(shí)寫入經(jīng)由所述多個(gè)寫入端口被執(zhí)行。10.一種在數(shù)據(jù)處理設(shè)備中執(zhí)行寄存器重命名的方法,該數(shù)據(jù)處理設(shè)備包括用于響應(yīng)于數(shù)據(jù)處理指令而執(zhí)行數(shù)據(jù)處理操作的處理電路以及用于存儲(chǔ)供所述處理電路執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問的數(shù)據(jù)值的一組物理寄存器,所述數(shù)據(jù)處理指令參考邏輯寄存器,該方法包括:(a)在寄存器重命名存儲(chǔ)裝置內(nèi)存儲(chǔ)所述邏輯寄存器與所述物理寄存器之間的一對(duì)一映射;(b)當(dāng)執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問所述寄存器重命名存儲(chǔ)裝置,以將所參考的邏輯寄存器映射到相應(yīng)的物理寄存器;(C)響應(yīng)于由所述處理電路執(zhí)行的要求數(shù)據(jù)被寫入所述邏輯寄存器中的多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作,標(biāo)識(shí)與所述寄存器重命名存儲(chǔ)裝置內(nèi)的所述多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器,并且改變所述寄存器重命名存儲(chǔ)裝置內(nèi)的所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器之間的一對(duì)一映射,從而使得在所述當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在步驟(b)訪問所述寄存器重命名存儲(chǔ)裝置時(shí)改變后的一對(duì)一映射被采用;以及(d)如果所述當(dāng)前數(shù)據(jù)處理操作不要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器,則保持所述寄存器重命名存儲(chǔ)裝置內(nèi)的一對(duì)一映射不改變,從而使得在所述當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在步驟(b)訪問所述寄存器重命名存儲(chǔ)裝置時(shí)未改變的一對(duì)一映射被采用。11.一種數(shù)據(jù)處理設(shè)備,包括:處理部件,用于響應(yīng)于數(shù)據(jù)處理指令而執(zhí)行數(shù)據(jù)處理操作,所述數(shù)據(jù)處理指令參考邏輯寄存器;一組物理寄存器部件,用于存儲(chǔ)供所述處理部件執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問的數(shù)據(jù)值;寄存器重命名存儲(chǔ)裝置部件,用于存儲(chǔ)所述邏輯寄存器與所述物理寄存器部件之間的一對(duì)一映射,所述處理部件在執(zhí)行所述數(shù)據(jù)處理操作時(shí)訪問所述寄存器重命名存儲(chǔ)裝置部件,以將所參考的邏輯寄存器映射到相應(yīng)的物理寄存器部件;更新部件,用于響應(yīng)于由所述處理部件執(zhí)行的要求數(shù)據(jù)被寫入所述邏輯寄存器中的多個(gè)邏輯寄存器的當(dāng)前數(shù)據(jù)處理操作,標(biāo)識(shí)與所述寄存器重命名存儲(chǔ)裝置部件內(nèi)的所述多個(gè)邏輯寄存器相對(duì)應(yīng)的物理寄存器部件,并且改變所述寄存器重命名存儲(chǔ)裝置部件內(nèi)的所述多個(gè)邏輯寄存器與所標(biāo)識(shí)的物理寄存器部件之間的一對(duì)一映射,從而使得在執(zhí)行所述當(dāng)前數(shù)據(jù)處理操作時(shí)改變后的一對(duì)一映射被采用;如果所述當(dāng)前數(shù)據(jù)處理操作不要求數(shù)據(jù)被寫入所述多個(gè)邏輯寄存器,那么在所述當(dāng)前數(shù)據(jù)處理操作的執(zhí)行期間在所述處理部件參考所述寄存器重命名存儲(chǔ)裝置部件之前,所述寄存器重命名存儲(chǔ)裝置件內(nèi)的一對(duì)一映射不會(huì)被改變?!疚臋n編號(hào)】G06F9/38GK103988174SQ201280058902【公開日】2014年8月13日申請(qǐng)日期:2012年10月5日優(yōu)先權(quán)日:2011年12月2日【發(fā)明者】吉恩-博迪斯特·布雷羅特,塞德里克·丹尼斯·羅伯特·艾拉德申請(qǐng)人:Arm有限公司