實施例不限于解決任何或所有所陳述的問題的那些實施例或具有任何或所有所陳述的益處和優(yōu)點的那些實施例。
[0109]對“一”物件的任何提及指那些物件中的一個或多個。術(shù)語“包括”在本文中用于意指包括所識別的方法塊或元件,但這樣的塊或元件不包括排他列表,并且裝置可以包含附加的塊或元件,以及方法可以包含附加的操作或元件。
[0110]本文描述的方法的步驟可以在適當(dāng)?shù)膱龊习慈魏芜m當(dāng)?shù)捻樞蚧蛲瑫r執(zhí)行。在附圖中的框之間的箭頭示出了方法步驟的一個示例性序列,但并不是要排除其它序列或并行的多個步驟的執(zhí)行。此外,可以從所述方法的任何方法中刪除單獨的塊,而不偏離本文描述的主題的精神和范圍。上面描述的示例的任何方面可以與所描述的任何其它示例的方面組合以形成另外的示例,而不失去所尋求的效果。在附圖的元件由箭頭連接示出的場合,應(yīng)當(dāng)認(rèn)識到,這些箭頭只顯示在元件之間的通信(包括數(shù)據(jù)和控制消息)的一個示例性流程。元件之間的流程可以以在任一方向上或在兩個方向上。
[0111]應(yīng)當(dāng)理解,優(yōu)選實施例的上面的描述僅作為示例給出,并且各種修改可以由本領(lǐng)域中的技術(shù)人員做出。雖然各種實施例以某個程度的粒度或參考一個或多個單獨的實施例在上面描述,但是本領(lǐng)域中的技術(shù)人員可以對所公開的實施例進(jìn)行很多變更,而不偏離本發(fā)明的精神或范圍。
【主權(quán)項】
1.一種使用寄存器重命名來在多線程亂序處理器中的線程之間動態(tài)地分配物理寄存器以及資源的方法,所述方法包括: 接收用于寄存器重命名的指令,所述指令識別架構(gòu)寄存器和與所述指令相關(guān)聯(lián)的線程(202); 至少基于與所述指令相關(guān)聯(lián)的線程將來自所述處理器中的多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器(204),其中,所述多個物理寄存器中的每一個被映射到在動態(tài)地分配的資源中的一個或多個存儲位置;以及 存儲寄存器分配的細(xì)節(jié)(206)。
2.如權(quán)利要求1所述的方法,其中,所述動態(tài)地分配的資源是在所述多線程亂序處理器中的寄存器文件高速緩存。
3.如權(quán)利要求1所述的方法,其中,所述動態(tài)地分配的資源是在所述多線程亂序處理器中的重排序緩沖區(qū)和保留站存儲裝置中的一個。
4.如權(quán)利要求1所述的方法,其中,所述多個物理寄存器在邏輯上被劃分成多個組(210),并且,至少基于與所述指令相關(guān)聯(lián)的線程將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 至少基于與所述指令相關(guān)聯(lián)的線程來選擇組(212);以及 將來自所選擇的組中的可用的物理寄存器分配給所述架構(gòu)寄存器(214)。
5.如權(quán)利要求1所述的方法,其中,至少基于與所述指令相關(guān)聯(lián)的線程將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 使用預(yù)定義的映射標(biāo)準(zhǔn)將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器。
6.如權(quán)利要求5所述的方法,其中,每一個物理寄存器由編號register_number識別,并且所述預(yù)定義的映射標(biāo)準(zhǔn)是register_number模B,其中,B是整數(shù)(204f)。
7.如權(quán)利要求6所述的方法,其中,B= X,并且X是在所述多線程亂序處理器中的線程的數(shù)量,并且其中,使用預(yù)定義的映射標(biāo)準(zhǔn)將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 基于register_number模X來分配可用的物理寄存器。
8.如權(quán)利要求7所述的方法,其中,在所述多線程亂序處理器中的每一個線程都具有標(biāo)識符i,基于register_number模X來分配可用的物理寄存器包括: 分配滿足register_number模X = i的可用的物理寄存器(204e)。
9.如權(quán)利要求1所述的方法,其中,至少基于與所述指令相關(guān)聯(lián)的線程和在所述多線程亂序處理器中的至少一個線程的活動性的度量將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器(404)。
10.如權(quán)利要求9所述的方法,其中,所述多個物理寄存器在邏輯上被劃分成多個組(210),并且,至少基于與所述指令相關(guān)聯(lián)的線程和在所述多線程亂序處理器中的至少一個線程的活動性的度量將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 至少基于與所述指令相關(guān)聯(lián)的線程來選擇組(212); 將來自所選擇的組中的可用的物理寄存器分配給所述架構(gòu)寄存器(214);以及 如果在所選擇的組中不存在可用的物理寄存器,則分配來自另一組中的可用的寄存器(406、408)。
11.如權(quán)利要求9所述的方法,其中,所述多個物理寄存器在邏輯上被劃分成多個組(210),并且,至少基于與所述指令相關(guān)聯(lián)的線程和在所述多線程亂序處理器中的至少一個線程的活動性的度量將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 至少基于與所述指令相關(guān)聯(lián)的線程來選擇組(212); 將來自所選擇的組中的可用的物理寄存器分配給所述架構(gòu)寄存器(214);以及 如果在所選擇的組中不存在可用的物理寄存器,則改變線程和組之間的映射(406、410),至少基于與所述指令相關(guān)聯(lián)的線程和所改變的映射來選擇組(212);以及將來自新選擇的組中的可用的物理寄存器分配給所述架構(gòu)寄存器(214)。
12.如權(quán)利要求9所述的方法,其中,至少基于與所述指令相關(guān)聯(lián)的線程和在所述多線程亂序處理器中的至少一個線程的活動性的度量將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 如果與所述指令相關(guān)聯(lián)的線程的活動水平不超過閾值(414),則基于與所述指令相關(guān)聯(lián)的線程將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器(204);以及 如果與所述指令相關(guān)聯(lián)的線程的活動水平超過閾值(414),則將任意可用的物理寄存器分配給所述架構(gòu)寄存器(412)。
13.如權(quán)利要求9所述的方法,其中,所述多個物理寄存器在邏輯上被劃分成多個組(210),并且,至少基于與所述指令相關(guān)聯(lián)的線程和在所述多線程亂序處理器中的至少一個線程的活動性的度量將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 如果與所述指令相關(guān)聯(lián)的線程的活動水平不超過閾值(414),則基于與所述指令相關(guān)聯(lián)的線程和線程到組映射將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器;以及 如果與所述指令相關(guān)聯(lián)的線程的活動水平超過閾值(414),則改變所述線程到組映射(410),然后基于與所述指令相關(guān)聯(lián)的線程和線程到組映射將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器。
14.如權(quán)利要求9所述的方法,其中,至少基于與所述指令相關(guān)聯(lián)的線程和在所述多線程亂序處理器中的至少一個線程的活動性的度量將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 如果所述至少一個線程的活動水平不超過閾值(414),則基于與所述指令相關(guān)聯(lián)的線程將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器(204);以及 如果所述至少一個線程的活動水平超過閾值(414),則將任意可用的物理寄存器分配給所述架構(gòu)寄存器(412)。
15.如權(quán)利要求9所述的方法,其中,至少基于與所述指令相關(guān)聯(lián)的線程和在所述多線程亂序處理器中的至少一個線程的活動性的度量將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器包括: 如果所述至少一個線程的活動水平不超過閾值,則使用映射標(biāo)準(zhǔn)將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器;以及 如果所述至少一個線程的活動水平超過閾值,則修改所述映射標(biāo)準(zhǔn),然后使用所修改的映射標(biāo)準(zhǔn)將來自所述多個物理寄存器中的可用的物理寄存器分配給所述架構(gòu)寄存器。
16.如權(quán)利要求15所述的方法,其中,所述至少一個線程包括所述的與所述指令相關(guān)聯(lián)的線程。
17.如權(quán)利要求9所述的方法,其中,所述多個物理寄存器在邏輯上被劃分成多個組,并且至少一個線程的活動性的度量是基于在預(yù)定義的窗口內(nèi)從組中分配的寄存器的數(shù)量來確定的。
18.如權(quán)利要求9所述的方法,其中,所述至少一個線程的活動性的度量是基于從自動MIPS分配模塊(302)接收的信號來確定的。
19.一種在多線程亂序處理器(100、300)中的模塊(136,144),所述模塊被布置為使用寄存器重命名來在所述處理器中的線程之間動態(tài)地分配分配物理寄存器以及資源,所模塊包括硬件邏輯,所述硬件邏輯被布置用于: 至少基于與指令相關(guān)聯(lián)的線程將來自所述處理器中的多個物理寄存器的中可用的物理寄存器分配給所述指令中的架構(gòu)寄存器(204),其中,所述多個物理寄存器中的每一個被映射到動態(tài)地分配的資源中的一個或多個存儲位置。
20.一種計算機(jī)可讀存儲介質(zhì),其上編碼有計算機(jī)可讀程序代碼,所述計算機(jī)可讀程序代碼用于生成被配置成執(zhí)行權(quán)利要求1-18中的任何一項的方法的處理器。
【專利摘要】描述了對寄存器文件高速緩存的軟分區(qū)。所述軟分區(qū)通過基于在多線程亂序處理器中指令屬于的線程而對與所述指令相關(guān)聯(lián)的目的寄存器重命名來實現(xiàn)。寄存器重命名可以由寄存器重命名模塊來執(zhí)行,并且在實施例中,寄存器重命名模塊接收用于寄存器重命名的指令,所述指令識別與所述指令相關(guān)聯(lián)的線程和一個或多個架構(gòu)寄存器??捎玫奈锢砑拇嫫魅缓蠡谒R別的線程向每一個所識別的架構(gòu)寄存器分配。在一些示例中,將在多線程亂序處理器中的物理寄存器在邏輯上劃分成組,并且基于線程到組映射來分配物理寄存器。在另外的示例中,線程到組映射不是固定的,但可以基于在多線程亂序處理器中的一個或多個線程的活動水平來更新。
【IPC分類】G06F12-02, G06F12-08
【公開號】CN104679663
【申請?zhí)枴緾N201410705339
【發(fā)明人】A·霍特, H·杰克遜
【申請人】想象力科技有限公司
【公開日】2015年6月3日
【申請日】2014年11月27日
【公告號】DE102014017744A1, US20150154022