專利名稱:管理處理器的寄存器的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及管理處理器中的寄存器,更具體地說,涉及面向單指令多數(shù)據(jù)(SIMD)的管理寄存器映射以便基于映射的間接訪問寄存器文件的方法、系統(tǒng)和程序產(chǎn)品。
背景技術(shù):
處理器或執(zhí)行單元使用寄存器來存儲旨在用于進(jìn)行操縱的各種數(shù)據(jù)。在許多方面,寄存器在數(shù)據(jù)操縱上要優(yōu)于例如系統(tǒng)存儲器。例如,通??梢栽谥噶钪杏杀刃枰獙ぶ返南到y(tǒng)存儲器中的位置更少的位來指定寄存器。此外,寄存器比大多數(shù)系統(tǒng)存儲器具有更高的帶寬和更短的訪問時間。另外,寄存器的設(shè)計和測試相對直接。因此,現(xiàn)代處理器架構(gòu)傾向于具有相對多的寄存器。
盡管一般可以通過增加處理器內(nèi)寄存器的數(shù)量來提高處理器/執(zhí)行單元的性能,但是大量寄存器也會帶來問題。其中一個問題是寄存器可尋址性。如果處理器包括大量可尋址的寄存器,則每個具有一個或多個寄存器指定的指令將要求單獨(dú)為了尋址寄存器而分配許多位。例如,如果處理器具有32個寄存器,則需要總的20位來指定指令中的4個寄存器,因?yàn)樾枰?個位來尋址所有32個寄存器。因此,有效限制了處理器架構(gòu)中可以直接訪問的寄存器的最大數(shù)量。
間接尋址是一種已用于訪問大型寄存器文件的技術(shù)。假如適合非常大的寄存器文件并滿足以下目標(biāo)的話,間接尋址機(jī)制對于擴(kuò)展諸如由國際商業(yè)機(jī)器公司出售的PowerPCTM處理器之類的架構(gòu)是有用的·兼容標(biāo)準(zhǔn)PowerPCTM指令格式;·支持現(xiàn)有代碼,無需重新編譯;
·足夠靈活以支持循環(huán)展開、軟件流水線操作,以及用于減輕長流水線等待時間的影響的相關(guān)軟件技術(shù);以及·足夠靈活以支持用于適當(dāng)?shù)鼐S護(hù)內(nèi)部循環(huán)中的寄存器文件內(nèi)的工作數(shù)據(jù)集的大型子集的軟件技術(shù)。
用于訪問大型寄存器文件的現(xiàn)有技術(shù)間接尋址機(jī)制無法滿足一個或多個上述目標(biāo)。這些現(xiàn)有技術(shù)間接尋址機(jī)制包括ItaniumTM-使用稱為“旋轉(zhuǎn)寄存器”的技術(shù)來提供對來自具有128個寄存器的寄存器文件中的較高的96個寄存器的相鄰寄存器組的間接訪問。ItaniumTM對于循環(huán)展開而非以更通用的方式利用大型寄存器文件來說是有用的。(“Intel ItaniumTMArchitecture Software Developer’sManual”,2002年10月。)“寄存器隊列”-在某些方面類似于旋轉(zhuǎn)寄存器,在定義和建立對相鄰寄存器組的訪問方面具有明顯增加的靈活性。由于間接訪問仍限于相鄰寄存器組,所以靈活性不足。(Tyson等人,IEEE Trans.Computers,2001年8月。)“寄存器連接”-表現(xiàn)得更為通用,因此對于大型寄存器文件的間接訪問來說,是一種比旋轉(zhuǎn)寄存器和寄存器隊列更靈活的機(jī)制。但是,其限制在于,如果與PowerPCTM架構(gòu)一起使用,則因?yàn)橛糜趯⒅噶钪芯幋a的寄存器名稱映射到寄存器文件中的實(shí)際物理寄存器的機(jī)制,任何特定循環(huán)中發(fā)出的指令只能訪問32個寄存器。(Kiyohara等人,ISCA的會議記錄,1993年。)因此,希望提供一種增加處理器尋址寄存器的能力的改進(jìn)的裝置。
發(fā)明內(nèi)容
在以上結(jié)合的標(biāo)題為“Apparatus for Increasing Addressability ofRegisters within a Processor(用于增加處理器中寄存器的可尋址性的裝置)”的專利申請中,描述了一種滿足以上列出的四個目標(biāo)的新穎的間接尋址機(jī)制。該機(jī)制使用基本寄存器名稱組和擴(kuò)展寄存器名稱組之間的映射。在PowerPCTM架構(gòu)的情況下,基本名稱組是在現(xiàn)有架構(gòu)中的一組名稱,即,0-31,而擴(kuò)展名稱組由可在擴(kuò)展版本的架構(gòu)中實(shí)際實(shí)現(xiàn)的寄存器數(shù)來確定。所述映射具有以下屬性·映射包含在寄存器中。
·由軟件管理映射,即,可以由是支持間接尋址機(jī)制的擴(kuò)展架構(gòu)一部分的指令寫入和讀取包含映射的寄存器。
·映射可以是任意的,根據(jù)軟件如何選擇對其進(jìn)行管理。
·映射與機(jī)器指令中出現(xiàn)的寄存器操作數(shù)具有位置關(guān)聯(lián)。
對于具有這些特性的基于映射的間接尋址機(jī)制,就如何管理映射而言應(yīng)滿足一組目標(biāo),包括1.映射管理機(jī)制應(yīng)支持一定程度的如何使用映射的靈活性,適于滿足以上列出的間接尋址機(jī)制的基本目標(biāo)。
2.映射管理應(yīng)是高效的,例如,就需要管理映射的內(nèi)部循環(huán)中執(zhí)行的指令數(shù)的部分而言。
3.與映射管理關(guān)聯(lián)的流水線等待時間不應(yīng)負(fù)面地影響其靈活性或效率。
在此提供了滿足這些目標(biāo)的面向SIMD的管理寄存器映射的方法、系統(tǒng)和程序產(chǎn)品。
根據(jù)本發(fā)明的一個方面,提供了一種管理處理器的寄存器的方法。所述方法包括提供包括一組映射的寄存器映射,所述映射組中的每個映射都包括多個映射寄存器;提供由所述處理器通過所述寄存器映射的所述映射組的映射表項(xiàng)來間接引用/訪問的一組實(shí)際寄存器,其中所述實(shí)際寄存器組中的實(shí)際寄存器的數(shù)量大于所述映射組中的映射表項(xiàng)的數(shù)量,并且其中所述映射組的所述映射表項(xiàng)在任意給定時刻僅引用所述實(shí)際寄存器組的子集;以及通過響應(yīng)于執(zhí)行單個更新指令而更新所述映射組中的至少一個映射的多個映射表項(xiàng)來管理對所述寄存器映射的所述映射組的映射表項(xiàng)的更新。
在其他方面,所述管理映射表項(xiàng)更新與所述處理器使用所述映射組的至少一些其他映射表項(xiàng)來間接訪問所述實(shí)際寄存器組以便處理數(shù)據(jù)同時發(fā)生。此外,所述管理映射更新可以與所述處理器使用至少一個通過所述單個更新指令更新多個映射表項(xiàng)的映射的至少一些其他映射表項(xiàng)同時發(fā)生,其中所述單個更新指令是單指令多數(shù)據(jù)指令(SIMD)指令。公開和要求保護(hù)了多種實(shí)現(xiàn)映射表項(xiàng)更新的方法。例如,所述單個更新指令可以包括“將數(shù)據(jù)從SIMD寄存器移動到映射寄存器”指令。備選地,可以采用使用關(guān)聯(lián)遞增寄存器的遞增值的“遞增映射寄存器”或采用與多個映射寄存器關(guān)聯(lián)的預(yù)遞增映射寄存器來更新映射表項(xiàng)。此外,可以使用“立即設(shè)置映射寄存器”指令來更新映射表項(xiàng),其中所述指令本身中提供了開始所述多個映射表項(xiàng)的遞增初始化的初始化值。
在其他方面,提供了一種用于管理處理器的寄存器的系統(tǒng)。所述系統(tǒng)包括包含一組映射的寄存器映射,其中所述映射組中的每個映射包括多個映射寄存器;以及由所述處理器通過所述寄存器映射的所述映射組的映射表項(xiàng)來間接訪問的一組實(shí)際寄存器。所述實(shí)際寄存器組中的實(shí)際寄存器的數(shù)量大于所述映射組中的映射表項(xiàng)的數(shù)量,并且其中所述映射組的所述映射表項(xiàng)在任意給定時刻僅引用所述實(shí)際寄存器組的寄存器的子集。所述系統(tǒng)還包括用于通過響應(yīng)于執(zhí)行單個更新指令而更新所述映射組中的至少一個映射的多個映射表項(xiàng)來管理對所述寄存器映射的所述映射組的映射表項(xiàng)的更新的裝置。
在其他方面,提供了至少一個計算機(jī)可讀的、有形地包含至少一個指令程序的程序存儲設(shè)備,所述指令可由所述計算機(jī)執(zhí)行以執(zhí)行管理處理器的寄存器的方法,其中所述寄存器包括一組實(shí)際寄存器。所述方法包括提供一組映射,所述映射組中的每個映射包括多個映射寄存器;允許所述處理器通過所述映射組的映射表項(xiàng)來間接訪問所述多個實(shí)際寄存器,其中所述實(shí)際寄存器組中的實(shí)際寄存器的數(shù)量大于所述映射組中的映射表項(xiàng)的數(shù)量,并且其中所述映射組的所述映射表項(xiàng)在任意給定時刻僅引用所述實(shí)際寄存器組的子集;以及通過響應(yīng)于執(zhí)行單個更新指令而更新所述映射組中的至少一個映射的多個映射表項(xiàng)來管理對所述映射組的映射表項(xiàng)的更新。
此外,通過本發(fā)明的技術(shù)實(shí)現(xiàn)了其他功能和優(yōu)點(diǎn)。在本文中詳細(xì)說明了本發(fā)明的其他實(shí)施例和方面,并且它們被看作所要求保護(hù)的發(fā)明的一部分。
在說明書結(jié)尾處的權(quán)利要求書中特別指出并明確要求保護(hù)被認(rèn)為是本發(fā)明的主題。從以下結(jié)合附圖的詳細(xì)說明中,本發(fā)明的上述和其他目標(biāo)、特性和優(yōu)點(diǎn)是顯而易見的,這些附圖是圖1示出了根據(jù)本發(fā)明的一個方面的使用基于映射的間接寄存器文件訪問的處理器的方塊圖;圖2示出了根據(jù)本發(fā)明的一個方面的基于映射的間接寄存器文件訪問以便增加圖1的處理器中的寄存器可尋址性的機(jī)制的一個實(shí)施例;圖3是根據(jù)本發(fā)明的一個方面的使用基于映射的間接寄存器文件訪問的映射管理工具的處理器的另一個實(shí)施例的方塊圖;圖4是根據(jù)本發(fā)明的各方面的表示寄存器映射單元的一個實(shí)施例、示出管理映射表項(xiàng)的各方面,以及間接訪問目標(biāo)單元中的實(shí)際寄存器組的方塊圖;圖5是根據(jù)本發(fā)明的一個方面的由寄存器映射單元使用的一組映射的圖示;圖6A示出了與例如PowerPCTM處理器的VMX單元關(guān)聯(lián)的常規(guī)128位VMX寄存器;圖6B示出了根據(jù)本發(fā)明的一個方面的包括分成8個16位半字的128位并示出了映射寄存器和VMX寄存器的通常大小的映射寄存器的一個實(shí)施例;圖7示出了根據(jù)本發(fā)明的一個方面的基于映射的間接寄存器文件訪問的其他實(shí)例;
圖8是根據(jù)本發(fā)明的一個方面的映射管理指令處理的總體流程圖;圖9是根據(jù)本發(fā)明的一個方面的“立即設(shè)置映射寄存器”指令處理的一個實(shí)施例的流程圖;圖10是根據(jù)本發(fā)明的一個方面的“從VMX移動到映射寄存器”指令處理的一個實(shí)施例的流程圖;圖11是根據(jù)本發(fā)明的一個方面的“從映射寄存器移動到VMX寄存器”指令處理的一個實(shí)施例的流程圖;圖12是根據(jù)本發(fā)明的一個方面的“遞增映射寄存器”指令處理的一個實(shí)施例的流程圖;圖13是根據(jù)本發(fā)明的一個方面的“遞增映射寄存器”指令處理的其他實(shí)施例的流程圖;以及圖14是根據(jù)本發(fā)明的一個方面的自動更新預(yù)遞增映射寄存器的預(yù)遞增映射表項(xiàng)的過程的一個實(shí)施例的流程圖。
具體實(shí)施例方式
本發(fā)明可以在精簡指令集計算(RISC)處理器或復(fù)雜指令集計算(CISC)處理器中實(shí)現(xiàn)。出于說明目的,如下所述的本發(fā)明的一個實(shí)施例在RISC處理器(例如,由紐約阿蒙克的國際商業(yè)機(jī)器公司制造的PowerPCTM系列處理器)中實(shí)現(xiàn)。
圖1示出了根據(jù)本發(fā)明的一個方面的實(shí)現(xiàn)間接寄存器文件訪問的處理器100的方塊圖。處理器100包括數(shù)據(jù)高速緩存111和指令高速緩存112,二者都連接到總線接口單元120。通過總線接口單元120將指令從存儲器(未示出)檢索到處理器100,并存儲到指令高速緩存112。通過總線接口單元120檢索的數(shù)據(jù)存儲在數(shù)據(jù)高速緩存111中。由指令單元115從指令高速緩存112根據(jù)需要取回指令,指令單元115包括指令取回器、分支預(yù)測模塊、指令排隊和調(diào)度單元。
指令單元115將適當(dāng)?shù)闹噶罘峙傻綀?zhí)行單元,如整數(shù)單元116、加載/存儲單元117和/或浮點(diǎn)單元118。整數(shù)單元116對整數(shù)執(zhí)行加、減、乘、除、移位或旋轉(zhuǎn)運(yùn)算,從通用寄存器113檢索操作數(shù)并將結(jié)果存儲到通用寄存器113。浮點(diǎn)單元118執(zhí)行單精度和/或雙精度乘/加運(yùn)算,從浮點(diǎn)寄存器114檢索操作數(shù)并將結(jié)果存儲到浮點(diǎn)寄存器114。加載/存儲單元117根據(jù)需要將指令操作數(shù)從數(shù)據(jù)高速緩存111加載到通用寄存器113或浮點(diǎn)寄存器114中,并將指令結(jié)果(當(dāng)可從通用寄存器113或浮點(diǎn)寄存器114提供時)存儲到數(shù)據(jù)高速緩存111中。
完成單元119(其包括多個重排序緩沖器)結(jié)合指令單元115操作以支持亂序指令處理。完成單元119還結(jié)合通用寄存器113和浮點(diǎn)寄存器114中的重命名緩沖器操作以避免特定寄存器中的指令結(jié)果的任何沖突。
根據(jù)本發(fā)明的一個方面,使用一組視在寄存器(apparent register)來增加處理器中實(shí)際寄存器組的可尋址性。在稱為視在寄存器名稱空間的空間中尋址視在寄存器,在稱為實(shí)際寄存器名稱空間的更大的空間中尋址實(shí)際寄存器。視在寄存器中的表項(xiàng)引用實(shí)際寄存器名稱空間中的寄存器所名稱??捎芍噶钪惺褂玫募拇嫫魈栔苯訉ぶ芬曉诩拇嫫髅Q空間。另一方面,可以通過視在寄存器中存儲的值直接(從一些指令)或間接尋址實(shí)際寄存器名稱空間。
圖2示出了根據(jù)本發(fā)明的一個方面的一組視在寄存器和一組實(shí)際寄存器。如圖所示,視在寄存器221包括多個寄存器表項(xiàng)。視在寄存器221中的寄存器表項(xiàng)的總數(shù)可以等于2到保留用于尋址寄存器的指令223內(nèi)視在寄存器字段中的位數(shù)的冪。例如,如果指令223中寄存器字段內(nèi)的位數(shù)為3,則視在寄存器221中的寄存器表項(xiàng)數(shù)為8;如果指令223中視在寄存器字段內(nèi)的位數(shù)為4,則視在寄存器221中的寄存器表項(xiàng)數(shù)為16。在圖2的實(shí)施例中,指令223中視在寄存器字段(例如,vA字段、vB字段、vC字段和vD字段)中的位數(shù)為5,視在寄存器221中的寄存器表項(xiàng)數(shù)為32。在PowerPCTM處理器的上下文中,vA、vB、vC和vD字段為向量(或VMX或Altivec)寄存器的名稱,并且本發(fā)明的一個實(shí)施例引用PowerPCTM向量寄存器。
實(shí)際寄存器222也包括多個寄存器表項(xiàng)。每個視在寄存器表項(xiàng)中的位數(shù)大到足以尋址提供的實(shí)際寄存器的數(shù)量,可能為該數(shù)字的未來增長留出空間。實(shí)際寄存器222中的寄存器總數(shù)至少等于2到視在寄存器221的寄存器表項(xiàng)中的位數(shù)的冪。例如,如果視在寄存器221的每個寄存器表項(xiàng)中的位數(shù)為5,則實(shí)際寄存器222中的寄存器總數(shù)為32;如果視在寄存器221的每個寄存器表項(xiàng)中的位數(shù)為6,則實(shí)際寄存器222中的寄存器總數(shù)為64。在圖2的實(shí)施例中,視在寄存器221的每個寄存器表項(xiàng)中的位數(shù)為7,則實(shí)際寄存器222中的寄存器總數(shù)為128。
在運(yùn)算過程中,由視在寄存器221的寄存器表項(xiàng)中的位來選擇實(shí)際寄存器222中的寄存器,由指令(如指令223)的視在寄存器字段中的位來選擇視在寄存器221。例如,如圖2所示,由視在寄存器221的寄存器表項(xiàng)23中的位來選擇實(shí)際寄存器222中的寄存器123,由指令223的視在寄存器字段vD中的位來選擇視在寄存器221。同樣,由視在寄存器221的寄存器表項(xiàng)19中的位來選擇實(shí)際寄存器222中的寄存器125,由指令223的視在寄存器字段vA中的位來選擇視在寄存器221。
指令可以包括兩種不同類型的寄存器字段。如圖2所示,指令224包括如上所述在視在寄存器221中索引的視在寄存器vD字段。指令224還包括標(biāo)準(zhǔn)寄存器字段,例如rA字段和rB字段,用于在一組通用寄存器225中進(jìn)行索引。通用寄存器225中的寄存器總數(shù)遠(yuǎn)少于實(shí)際寄存器222中的寄存器總數(shù)。由于rA字段和rB字段中的位數(shù)都是5,所以通用寄存器組中的最大寄存器數(shù)限制在32。
可以以適合其中結(jié)合本發(fā)明的處理器架構(gòu)的方式來設(shè)計對視在寄存器221的控制。在PowerPCTM架構(gòu)中,例如,適合通過兩個或更多個寄存器來控制映射,這在以下結(jié)合圖3-14詳細(xì)說明。
本發(fā)明的寄存器重新映射可以獨(dú)立地應(yīng)用于不同的寄存器組。例如,在PowerPCTM架構(gòu)的上下文中,寄存器重新映射可以應(yīng)用到向量寄存器和浮點(diǎn)寄存器,而非通用寄存器。因此,本發(fā)明提供了一種用于增加處理器中的寄存器的可尋址性的靈活裝置,并可以以兼容的方式在現(xiàn)有處理器架構(gòu)中實(shí)現(xiàn)。
在上述教導(dǎo)的基礎(chǔ)上,在此還提出了面向單指令多數(shù)據(jù)(SIMD)管理映射表項(xiàng)以便基于映射間接引用實(shí)際寄存器文件的方法、系統(tǒng)和程序產(chǎn)品。許多現(xiàn)有的處理器架構(gòu)都結(jié)合了單指令多數(shù)據(jù)(SIMD)擴(kuò)展;例如,PowerPCTM具有VMX,Intel IA-32結(jié)合了SSE3等。因此,在此公開了一種利用特定處理器的SIMD功能以靈活高效的方式提供映射表項(xiàng)更新的映射管理工具。
圖3示出了根據(jù)本發(fā)明的一個方面的使用面向SIMD管理寄存器映射以便基于映射進(jìn)行間接寄存器文件訪問的處理器的一個實(shí)施例。處理器仍包括數(shù)據(jù)高速緩存111、指令高速緩存112、通用寄存器113、浮點(diǎn)寄存器114、指令單元115、整數(shù)單元116、加載/存儲單元117、浮點(diǎn)單元118和完成單元119,它們連同圖1的處理器分別如上所述地工作。圖3的處理器還包括VMX單元300和關(guān)聯(lián)的VMX寄存器(VMXR)310。眾所周知,VMX單元和關(guān)聯(lián)的寄存器提供采用SIMD處理的計算能力并例如對多個數(shù)據(jù)元素并行執(zhí)行公共運(yùn)算。在一種實(shí)施方式中,數(shù)據(jù)元素可以是半字,每個VMX寄存器可以包括解釋為8個16位半字的128位(參見圖6A和6B)。因此,作為一個實(shí)例,在VMX中執(zhí)行單個SIMD指令會導(dǎo)致一次執(zhí)行8個運(yùn)算。
在圖3的處理器中還提供了寄存器映射單元320,其示為連接到VMX寄存器310和浮點(diǎn)寄存器114。此實(shí)例假設(shè)包含要間接引用的實(shí)際寄存器組的大型寄存器文件是由浮點(diǎn)單元使用的浮點(diǎn)寄存器文件114。注意,如以下描述的,寄存器映射單元320和VMXR 310之間的右側(cè)箭頭代表將VMX寄存器的內(nèi)容移動到映射寄存器的能力,并且反之亦然。
通過實(shí)例的方式,典型的浮點(diǎn)寄存器可以包括32個寄存器,而本發(fā)明的一個方面所設(shè)想的大型寄存器文件可以包括1024個寄存器。在浮點(diǎn)寄存器中定位大型寄存器文件只是一個實(shí)例。備選地或附加地,要間接訪問的大型寄存器文件可以是VMX寄存器文件310。但是作為一種考慮,大型寄存器文件優(yōu)選地與處理器中的執(zhí)行單元關(guān)聯(lián),在所述處理器中,流水線等待時間是一個問題,其中大型寄存器文件的使用通過例如循環(huán)展開和軟件流水線操作之類的技術(shù)減輕了流水線等待時間的影響。
圖4更詳細(xì)地示出了根據(jù)本發(fā)明的一個方面的寄存器映射單元320的一個實(shí)施例。所述寄存器映射單元包括一組映射,該映射組中的每個映射都包括多個映射寄存器,所有這些映射寄存器都總的表示為映射寄存器(MR)400。在一個實(shí)例中,所述映射寄存器包含以與SIMD執(zhí)行單元的寄存器(即,圖3和4的實(shí)例中的VMX寄存器310)相同的格式構(gòu)造的映射表項(xiàng)。例如,參考圖6A,假定VMX寄存器為128位寬,每個位擁有16個單字節(jié)數(shù)據(jù)元素,8個半字?jǐn)?shù)據(jù)元素,或4個全字?jǐn)?shù)據(jù)元素。包含映射表項(xiàng)的寄存器也被選為128位寬。還假定根據(jù)擴(kuò)展寄存器組的大小,編碼映射表項(xiàng)所需的位數(shù)大于8并小于17。然后,每個128位的映射寄存器都包含8個映射表項(xiàng),每個映射表項(xiàng)占據(jù)寄存器的一個半字,如圖6B所示。在該討論中,包含這些映射表項(xiàng)的寄存器被稱為映射寄存器400。
因此,要指出的一點(diǎn)是,映射寄存器的物理結(jié)構(gòu)與SIMD寄存器(例如,VMX寄存器)的物理結(jié)構(gòu)完全相同,即,每個映射寄存器都如圖6A所示為128位寬。第二個相關(guān)點(diǎn)是,映射寄存器的邏輯結(jié)構(gòu)與SIMD寄存器(例如,VMX寄存器)的邏輯結(jié)構(gòu)完全相同,且內(nèi)容解釋為16位半字(在圖6B中示出了每個映射寄存器的邏輯結(jié)構(gòu))。映射寄存器中的每個半字都是映射表項(xiàng)。每個映射寄存器中包含8個映射表項(xiàng)。由于每個映射具有32個表項(xiàng),所以每個映射有4個映射寄存器。由于有4個映射,所以總共有16個映射寄存器。維護(hù)映射寄存器與SIMD寄存器之間的物理和邏輯結(jié)構(gòu)的對應(yīng)的一個顯著好處是,可以使用SIMD執(zhí)行單元對SIMD寄存器的內(nèi)容進(jìn)行算術(shù)和邏輯運(yùn)算以及將SIMD寄存器的內(nèi)容從存儲器往返移動的現(xiàn)有能力,以有效地構(gòu)建與基本上任意的表項(xiàng)的映射。在SIMD寄存器中可以構(gòu)建具有8個映射表項(xiàng)的組,然后將SIMD寄存器的內(nèi)容移動到映射寄存器,而無需作為移動操作一部分的任何數(shù)據(jù)變換。因此,從硬件的角度,寄存器映射單元(RMU)可以相對簡單??梢允褂肦MU中的基本硬件執(zhí)行映射表項(xiàng)的簡單設(shè)置(例如,在映射寄存器中設(shè)置8個連續(xù)值,或?qū)⒂成浼拇嫫髦械乃?個表項(xiàng)遞增相同的常數(shù))。可以使用SIMD執(zhí)行單元在SIMD寄存器中設(shè)置更為復(fù)雜的映射表項(xiàng)組并將其移動到映射寄存器中。
圖4中示出了寄存器映射單元(RMU)中的兩個其他寄存器組。這些寄存器組包括遞增寄存器(IR)420和預(yù)遞增映射寄存器(PIMR)430,如下所述,兩者都可以用于管理映射表項(xiàng)。
圖4中的目標(biāo)單元410是通過基于映射的間接尋址來間接訪問其寄存器文件的單元;即,圖3的實(shí)例中的浮點(diǎn)寄存器114。標(biāo)為“T”、“A”、“B”和“C”的箭頭指示寄存器操作數(shù)的索引映射表項(xiàng)可從映射寄存器400提供給目標(biāo)單元410。RMU 320和VMXR 310之間的箭頭指示將VMX寄存器的內(nèi)容移動到映射寄存器(反之亦然)的能力,如以下進(jìn)一步描述的。
如上所述,在一個實(shí)施例中,寄存器映射單元中有4組映射,每組映射有32個表項(xiàng)。這些映射在圖5中示出,并與在目標(biāo)單元中執(zhí)行的指令的指令格式中出現(xiàn)的寄存器操作數(shù)關(guān)聯(lián),它們是·T映射T映射與目標(biāo)操作數(shù)關(guān)聯(lián)。
·A映射A映射與指令格式中指定為“A”操作數(shù)的輸入寄存器操作數(shù)關(guān)聯(lián)。
·B映射B映射與指令格式中指定為“B”操作數(shù)的輸入寄存器操作數(shù)關(guān)聯(lián)。
·C映射C映射與指令格式中指定為“C”操作數(shù)的輸入寄存器操作數(shù)關(guān)聯(lián)。
此外,這些映射之一(例如C映射)可以與加載和存儲指令中指示目標(biāo)單元的寄存器文件中的源或目標(biāo)寄存器的寄存器操作數(shù)關(guān)聯(lián)。
在圖5的實(shí)例中,仍有四組映射,每組映射有32個映射表項(xiàng)。因?yàn)槊總€映射寄存器有8個半字(HW),即8個映射表項(xiàng),所以有16個映射寄存器,標(biāo)為m0-m15。這16個映射寄存器中的每個寄存器都是128位寄存器(如圖6A和6B所示)。另外,映射寄存器中的8個空位中的每個空位都是半字并包含一個映射表項(xiàng)。
將映射與寄存器操作數(shù)關(guān)聯(lián)表示可以將為操作數(shù)編碼的值(在0到31的范圍內(nèi))用作映射的索引;即,如此引用的映射表項(xiàng)中包含的值是要訪問的大型寄存器文件中的寄存器的索引。例如,考慮目標(biāo)單元是浮點(diǎn)單元且浮點(diǎn)寄存器文件是使用間接尋址訪問的大型寄存器文件(如圖3所示),并考慮圖7中示出的指令‘fadd fT,fA,fB’。在現(xiàn)有的PowerPCTM架構(gòu)中,這執(zhí)行將浮點(diǎn)寄存器fA中的數(shù)據(jù)元素與浮點(diǎn)寄存器fB中的數(shù)據(jù)元素進(jìn)行浮點(diǎn)相加并將結(jié)果置于浮點(diǎn)寄存器fT中。如果將指令編碼為‘fadd 1,2,3’,即,“1”編碼為用于fT操作數(shù),“2”編碼為用于fA操作數(shù),以及“3”編碼為用于fB操作數(shù),則根據(jù)現(xiàn)有架構(gòu),從浮點(diǎn)寄存器文件的寄存器2和3獲得輸入值,并將結(jié)果寫入浮點(diǎn)寄存器文件中的寄存器1。使用間接尋址,編碼的值“1”、“2”和“3”分別用作T映射、A映射和B映射的索引。例如,假定A映射中的表項(xiàng)“2”包含值“17”,B映射中的表項(xiàng)“3”包含值“95”,T映射中的表項(xiàng)“1”包含值“1”,則編碼為‘fadd 1,2,3’的指令從寄存器17和95獲得輸入操作數(shù)并將結(jié)果置于大型寄存器文件的寄存器6中。圖7中形象化地示出了此過程。
關(guān)于圖7應(yīng)注意以下方面·在所述實(shí)例中,大型寄存器文件(例如,布置在浮點(diǎn)寄存器或VMX寄存器中)具有1024個寄存器。因此,擴(kuò)展的寄存器名稱組至少包含0到1023,并且最少需要10個位來編碼每個映射表項(xiàng)。
·因?yàn)樗鰧?shí)例中的指令只有3個寄存器操作數(shù),所以未使用C映射。
·映射表項(xiàng)是可以使用其配置映射的任意性的實(shí)例。在T映射中,大多數(shù)表項(xiàng)指向同一物理寄存器(可能不是現(xiàn)實(shí)情況)。在A映射中,表項(xiàng)沒有模式。B映射具有8個連續(xù)的實(shí)際寄存器索引(名稱)的組。
C映射為恒等映射。
鑒于以上所述,根據(jù)本發(fā)明的一個方面,映射管理工具的某些特性包括1.包含映射表項(xiàng)的寄存器的結(jié)構(gòu)優(yōu)選地與SIMD執(zhí)行單元中的寄存器(例如,VMX寄存器)具有相同的格式。例如,假定SIMD單元的寄存器為128位寬,每個寄存器包括16個單字節(jié)數(shù)據(jù)元素,8個半字?jǐn)?shù)據(jù)元素,或4個全字?jǐn)?shù)據(jù)元素。包含映射表項(xiàng)的寄存器也是128位寬。根據(jù)擴(kuò)展寄存器組的大小,假定編碼映射表項(xiàng)所需的位數(shù)大于8并且小于17。然后,每個128位的“映射寄存器”包含8個映射表項(xiàng),每個映射表項(xiàng)占據(jù)寄存器中的一個半字。
2.設(shè)置、修改或讀取映射表項(xiàng)的操作以類似SIMD的方式進(jìn)行,因?yàn)閱蝹€指令引用單個映射寄存器的內(nèi)容,例如128位寄存器的寄存器中的所有8個映射表項(xiàng),每個映射表項(xiàng)占據(jù)半字。
3.可以使用簡單的硬件對映射寄存器的內(nèi)容執(zhí)行簡單的操作,包括(a)將映射表項(xiàng)設(shè)置為連續(xù)值(例如,將映射寄存器中的8個映射表項(xiàng)設(shè)置為8個以某個指定的初始化值開始的連續(xù)值);以及(b)將寄存器中的所有映射表項(xiàng)遞增相同的常數(shù)值。將布置所述硬件以便以最小的等待時間來執(zhí)行這些操作。
4.假定映射寄存器的格式匹配SIMD寄存器(例如,VMX寄存器)的格式,則可以直接將數(shù)據(jù)從SIMD單元寄存器移動到映射寄存器中,并且反之亦然。通過這種方式,可以使用已在SIMD執(zhí)行單元(例如,VMX單元)中可用的算術(shù)和邏輯功能來構(gòu)建映射表項(xiàng)的任意組并將其移動到寄存器映射單元內(nèi)的映射寄存器。備選地,可以將映射表項(xiàng)組從存儲器加載到SIMD單元寄存器(即,VMX寄存器)中,然后將其移動到映射寄存器。因此,專門為映射管理提供的硬件可以相對簡單。
5.通過使用“恒等映射”,可以提供對現(xiàn)有代碼的支持而無需重新編譯,其中映射內(nèi)的每個表項(xiàng)包含其在映射中的索引(例如,恒等映射中的表項(xiàng)k包含值k)。可以提供將每個映射設(shè)置為恒等映射的指令,以便作為應(yīng)用二進(jìn)制接口(ABI)的一部分,高效且與現(xiàn)有代碼兼容地初始化映射。
圖8-14示出了根據(jù)本發(fā)明的各方面的映射管理指令處理的各種實(shí)例。映射管理指令使用處理器的通用指令格式。這種格式通常包括操作碼字段,該字段標(biāo)識將由指令執(zhí)行的功能(如浮點(diǎn)相加、從存儲單元加載等),還包括n個標(biāo)識源數(shù)據(jù)或源數(shù)據(jù)位置的操作數(shù),以及目標(biāo)位置。在PowerPCTM的情況下,所有指令都占據(jù)32位。操作碼至少有6位,多數(shù)情況多于6位。操作數(shù)字段的數(shù)量和每個字段的大小取決于指令。
圖8示出了通過從映射管理指令的適當(dāng)指令字段解碼值810來處理一般映射管理指令800。一旦獲取了操作數(shù)值,就可以使用解碼的操作數(shù)值執(zhí)行指令(即,操作碼)820。如果必要,還自動遞增圖4的預(yù)遞增映射寄存器(PIMR)組中的預(yù)遞增映射表項(xiàng)。如上所述,映射管理指令中的指令字段定義了指令的功能并為上述的間接寄存器文件訪問提供了映射表項(xiàng)引用。通常,處理器的指令單元理解(根據(jù)功能)處理器中的哪些執(zhí)行單元將執(zhí)行所需的功能,并且將指令傳遞到該指令單元。因此,就映射表項(xiàng)管理而言,將映射管理指令傳遞到映射寄存器單元以便執(zhí)行。
在一個實(shí)例中,只要出現(xiàn)映射寄存器更改或關(guān)聯(lián)的遞增寄存器值的更改,就可以更新預(yù)遞增存儲器寄存器。通過預(yù)先計算映射表項(xiàng)值,遞增的映射表項(xiàng)將可用于未來的映射管理遞增指令。注意,在此說明的預(yù)遞增映射寄存器僅為一個映射表項(xiàng)管理選項(xiàng)。在一個實(shí)例中,在映射寄存器與預(yù)遞增映射寄存器之間存在一對一的對應(yīng)關(guān)系,使得根據(jù)所接收的映射管理指令,可以簡單地將預(yù)遞增映射表項(xiàng)的值換入映射寄存器。以下參考圖13和14更詳細(xì)地說明了該過程。
圖9示出了“立即設(shè)置映射寄存器”指令的處理實(shí)例900。初始解析指令以從指令的適當(dāng)指令字段獲取映射寄存器ID 900,并且將變量k設(shè)置為該映射寄存器ID。通過“立即設(shè)置映射寄存器”指令,在指令本身中提供了映射表項(xiàng)更新的初始化值。因此,處理接著從適當(dāng)?shù)闹噶钭侄潍@取立即初始化值920,并將變量i設(shè)置為此初始化值。假定指令將標(biāo)識的映射寄存器(例如,參見圖6B)的8個半字初始化為8個連續(xù)的值。因此,將第一個半字(j=0,其中j=0到7)設(shè)置為來自指令的立即初始化值,而將每個后續(xù)半字依次增加值1,如等式HWj[Mk]=i+j所示。再次地,本領(lǐng)域中的技術(shù)人員將理解,此設(shè)置映射寄存器立即指令僅代表更新映射表項(xiàng)的一種方法。
圖10中描述了另一種方法,并且該方法基于上述的映射寄存器與VMX寄存器之間的物理和邏輯格式的相似性。此指令標(biāo)為“從VMX寄存器移動到映射寄存器”指令1000,其被初始地處理以從指令獲取映射寄存器ID 1010。將變量k再次設(shè)置為該映射寄存器ID。接下來,從所述指令的適當(dāng)指令字段獲取VMX寄存器ID,并將該VMX寄存器ID設(shè)置為變量i 1020。然后,對于映射寄存器的每個連續(xù)半字,將該映射表項(xiàng)的值(HWj[Mk])設(shè)置為VMX寄存器i(HWj[Vi])中的對應(yīng)半字1030。備選地,所述處理可以只是實(shí)現(xiàn)將標(biāo)識的VMX寄存器的全部內(nèi)容塊復(fù)制到標(biāo)識的映射寄存器中。
圖11示出了與圖10相反的指令,其中將映射表項(xiàng)內(nèi)容從映射寄存器移動到標(biāo)識的VMX寄存器。處理該“從映射寄存器移動到VMX寄存器”指令1100始于從指令的適當(dāng)指令字段獲取映射寄存器ID 1110,并將該映射寄存器ID設(shè)置為變量k。接下來,從指令的適當(dāng)指令字段獲取VMX寄存器ID 1120,并將該值設(shè)置為變量i。然后,對于映射寄存器的每個半字(HWj[Mk]),將對應(yīng)VMX寄存器半字(HWj[Vi])的內(nèi)容設(shè)置為映射表項(xiàng)的內(nèi)容。
圖12和13示出了簡單的“遞增映射寄存器”指令的備選實(shí)施例。始于圖12,初始地解析“遞增映射寄存器”指令1200以從指令的適當(dāng)指令字段獲取映射寄存器ID 1210,將其設(shè)置為變量k。此外,從關(guān)聯(lián)遞增寄存器(IR)獲取映射寄存器k的遞增值1220,并且將該遞增值設(shè)置為變量i。然后處理將標(biāo)識的映射寄存器的每個連續(xù)半字(HWj[Mk])增加遞增值i1230。
在圖13的備選實(shí)施方式中,再次解析“遞增映射寄存器”指令1300以從指令的適當(dāng)指令字段獲取映射寄存器ID 1310。將該映射寄存器ID設(shè)置為變量k。然后,使用對應(yīng)的預(yù)遞增映射寄存器k(PIMk),并只是將相應(yīng)的半字映射表項(xiàng)從預(yù)遞增映射寄存器(HWj[PIMk])復(fù)制到標(biāo)識的映射寄存器的對應(yīng)半字(HWj[Mk])1320。
圖14示出了用于自動更新預(yù)遞增映射表項(xiàng)的過程的一個實(shí)施例。此更新預(yù)遞增映射表項(xiàng)(如果必要)過程1400始于查詢是否出現(xiàn)了映射寄存器的指令更新1410。如果“是”,則假定映射寄存器k已更新1420,并且變量i設(shè)置為等于映射寄存器k的當(dāng)前遞增值1430。如果“否”,則過程查詢是否出現(xiàn)了遞增寄存器的指令更新1460。如果“是”,則假定映射寄存器k的遞增已更新1470,并且變量i設(shè)置為等于映射寄存器k的當(dāng)前遞增值1430。仍如圖4所示,映射寄存器k的當(dāng)前遞增值保存在遞增寄存器(IR)420中。然后,對于每個半字j=0到7,將映射寄存器k的當(dāng)前表項(xiàng)(HWj[Mk])遞增值i(HWj[Mk]+i),并且將結(jié)果置于預(yù)遞增映射寄存器k的半字j中1440。注意此處(及上文)中,HWj[PIMk]指預(yù)遞增映射寄存器k中的第j個半字。一旦更新了預(yù)遞增映射寄存器,或如果對兩個查詢的回答都是“否”,則過程結(jié)束1450。
假定剛執(zhí)行的指令未更新寄存器1410,則過程判定之前執(zhí)行的指令是否更新了遞增寄存器1460。如果“否”,過程結(jié)束1450。否則,過程確定更新的遞增寄存器是針對映射寄存器k 1470,并繼續(xù)如上所述地更新對應(yīng)的預(yù)遞增映射表項(xiàng)。
從上述討論中,本領(lǐng)域的技術(shù)人員將認(rèn)識到,在此提供了一種用于管理映射寄存器的映射表項(xiàng)以便進(jìn)行基于映射的間接寄存器引用的靈活工具。該映射表項(xiàng)管理工具和本文所述的寄存器映射單元支持(在一個實(shí)施例中)以下映射管理功能·使用“設(shè)置映射寄存器”指令將映射寄存器初始化為一系列連續(xù)的值。由于如上所示每個映射寄存器具有8個映射表項(xiàng),所以該操作可以將這8個映射表項(xiàng)初始化為一系列的8個連續(xù)值。在一個實(shí)施例中,可以在“立即設(shè)置映射寄存器”指令的立即字段中提供起始值,以便將指令的等待時間保持在一個周期(即,初始化的映射寄存器可用于緊接其中發(fā)出“立即設(shè)置映射寄存器”指令的周期之后的周期中發(fā)出的指令)。
·使用“遞增映射寄存器”指令將映射寄存器中的表項(xiàng)遞增一個常數(shù)。從與映射寄存器關(guān)聯(lián)的對應(yīng)遞增寄存器(IR)獲取遞增,且將映射寄存器中的每個表項(xiàng)遞增相同的遞增值。注意,每個映射寄存器有一個遞增寄存器。還注意的是,在一個實(shí)施例中,與操作關(guān)聯(lián)的等待時間可以保持在一個周期(即,遞增的映射寄存器可用于緊接其中發(fā)出“遞增映射寄存器”指令的周期之后的周期中發(fā)出的指令)。為此,將預(yù)遞增映射寄存器(PIMR)包括在寄存器映射單元中,每個映射寄存器有一個預(yù)遞增映射寄存器。預(yù)遞增映射寄存器中的每個表項(xiàng)的值等于對應(yīng)映射寄存器中的對應(yīng)表項(xiàng)的當(dāng)前值,所述每個表項(xiàng)的值遞增對應(yīng)遞增寄存器中的當(dāng)前值。執(zhí)行“遞增映射寄存器”指令導(dǎo)致從對應(yīng)的預(yù)遞增映射寄存器加載目標(biāo)映射寄存器(即,在圖4中的RMU底部處的箭頭);同時,它導(dǎo)致將目標(biāo)映射寄存器中的新值遞增對應(yīng)遞增寄存器中的當(dāng)前值,并將其加載到對應(yīng)的預(yù)遞增映射寄存器(即,在圖4中的RMU頂部處的箭頭)。任何對映射寄存器內(nèi)容的更改(例如,通過“立即設(shè)置映射寄存器”指令或“移動到映射寄存器”指令)都會導(dǎo)致將來自新映射寄存器內(nèi)容的遞增值放置到對應(yīng)的預(yù)遞增映射寄存器中。
·使用“往返移動到映射寄存器”指令(通過例如圖4中的寄存器之間的“移動”路線)將VMX寄存器的內(nèi)容移動到映射寄存器或反之亦然??梢允褂镁哂蠧映射的間接尋址來訪問是指令的源或目標(biāo)的VMX寄存器。就如何間接訪問目標(biāo)單元中的寄存器而言,“移動到映射寄存器”操作提供了完全的靈活性??梢允褂肰MX單元的算術(shù)、邏輯和變換功能在VMX寄存器中創(chuàng)建映射,或者可以從存儲器將它們加載到VMX寄存器;并且可以根據(jù)需要將它們移動到映射寄存器。由于寄存器文件到寄存器文件的移動對這些指令來說是必要的,所以希望其等待時間大于一個周期。對這些指令來說,大概4個周期的等待時間被看作是可接受的。
此外,在一種實(shí)施方式中,在立即字段中編碼的掩碼可用于防止映射管理指令更改由所述掩碼確定的映射寄存器中的一個或多個表項(xiàng)。還可以容易地提供設(shè)置遞增寄存器中的值的指令。
從上述說明中,本領(lǐng)域的技術(shù)人員將注意到,在此提供了一種用于管理寄存器映射以便進(jìn)行大型寄存器文件的基于映射的間接寄存器文件訪問的面向SIMD的管理工具。
所述管理工具包括具有一組映射的寄存器映射單元,所述映射組的每個映射都包括多個映射寄存器。此外,提供了由處理器通過寄存器映射單元的映射組的映射表項(xiàng)間接訪問的一組實(shí)際寄存器。實(shí)際寄存器組中的實(shí)際寄存器的數(shù)量大于映射組中的映射表項(xiàng)的數(shù)量,并且映射組中的映射表項(xiàng)在任意給定時刻僅引用實(shí)際寄存器的子集。所述工具通過響應(yīng)于執(zhí)行單個更新指令而更新映射組中的至少一個映射的多個映射表項(xiàng)來管理對寄存器映射單元的映射組的映射表項(xiàng)的更新。此管理可以與處理器使用映射組的至少一些其他映射表項(xiàng)來間接訪問實(shí)際寄存器組以便處理數(shù)據(jù)同時發(fā)生。根據(jù)本發(fā)明的各方面,無需停止處理器或執(zhí)行單元以便實(shí)現(xiàn)映射表項(xiàng)更新。此外,本發(fā)明無需強(qiáng)制修改給定映射中的所有表項(xiàng),但仍允許從執(zhí)行單個更新指令來修改多個映射表項(xiàng)。所述單個更新指令可以包括單指令多數(shù)據(jù)(SIMD)指令。執(zhí)行SIMD指令會導(dǎo)致更新多個映射表項(xiàng),但是少于映射組的至少一個映射的所有映射表項(xiàng)。
說明了各種用于指示寄存器映射單元更新映射表項(xiàng)的技術(shù)。例如,可以使用基于SIMD的執(zhí)行單元和關(guān)聯(lián)的SIMD寄存器(例如,VMX執(zhí)行單元和VMX寄存器)來在至少一個SIMD寄存器中建立多個映射表項(xiàng),使用“移動”指令來將至少一個SIMD寄存器的內(nèi)容傳送到至少一個映射寄存器。同樣,可以將至少一個映射寄存器的內(nèi)容傳送到至少一個SIMD寄存器,因?yàn)橛成浼拇嫫骱蚐IMD寄存器優(yōu)選地具有通用的物理和邏輯格式。將映射表項(xiàng)從映射寄存器傳送到SIMD寄存器在捕獲處理器狀態(tài)或上下文切換期間可以是有利的。其他用于更新映射表項(xiàng)的技術(shù)包括使用簡單的“遞增映射寄存器”指令,該指令導(dǎo)致將多個連續(xù)的映射表項(xiàng)遞增更新期望的值,所述值例如存儲在與要更新的映射寄存器關(guān)聯(lián)的遞增寄存器中。作為一種擴(kuò)展,可以使用預(yù)遞增映射寄存器來自動預(yù)先計算對現(xiàn)有映射寄存器值的遞增更新,并且可以使用單個更新指令來將預(yù)遞增映射表項(xiàng)換入對應(yīng)的映射寄存器。此外,可以使用“立即設(shè)置映射寄存器”指令以使用在指令本身的字段內(nèi)提供的值對一系列映射表項(xiàng)進(jìn)行初始化更新。通過提供多種方法來更新寄存器映射單元的映射組中的映射表項(xiàng),本發(fā)明的管理工具是一種非常靈活的映射管理機(jī)制并且例如就管理映射所需的內(nèi)部循環(huán)中執(zhí)行的指令數(shù)的部分而言,該工具是高效的。此外,與映射管理關(guān)聯(lián)的流水線等待時間對其靈活性或效率沒有負(fù)面影響。
根據(jù)在計算機(jī)或計算機(jī)網(wǎng)絡(luò)上執(zhí)行的程序過程討論了以上提供的詳細(xì)說明。本領(lǐng)域的技術(shù)人員使用這些過程說明來將其工作的實(shí)質(zhì)最有效地傳達(dá)給本領(lǐng)域的其他技術(shù)人員。它們可以在硬件或軟件或兩者的組合中實(shí)現(xiàn)。
過程在此通常被認(rèn)為是導(dǎo)致期望結(jié)果的一系列步驟。這些步驟是需要對物理量進(jìn)行物理操縱的步驟。通常,盡管并非一定如此,這些量采取能夠被存儲、傳輸、組合、比較以及以其他方式操縱的電或磁信號的形式。有時,主要是出于經(jīng)常使用的原因,將這些信號稱為位、值、元素、符號、字符、術(shù)語、數(shù)字、對象、屬性等是方便的。但是應(yīng)指出,所有這些術(shù)語和類似術(shù)語都與適當(dāng)?shù)奈锢砹筷P(guān)聯(lián),并只是應(yīng)用于這些物理量的方便的標(biāo)記。
此外,執(zhí)行的操縱通常涉及術(shù)語(例如加或比較),這些術(shù)語一般與人工操作員進(jìn)行的智力運(yùn)算關(guān)聯(lián)。在形成本發(fā)明一部分的在此描述的任何操作中,這種人工操作員的能力是不必要的,或在多數(shù)情況下不需要;這些操作為機(jī)器運(yùn)算。執(zhí)行本發(fā)明的運(yùn)算的有用的機(jī)器包括通用數(shù)字計算機(jī)或類似設(shè)備。
所述方法的每個步驟可以在任何通用計算機(jī)(例如大型機(jī)、個人計算機(jī)等)上執(zhí)行,并與從任何編程語言(例如,C++、Java、Fortran等)生成的一個或多個程序模塊或?qū)ο蠡蚱湟徊糠窒嘁恢隆4送?,每個步驟,或?qū)崿F(xiàn)每個步驟的文件或?qū)ο蟮龋梢杂蓪S糜布驅(qū)S秒娐纺K來執(zhí)行。
本發(fā)明優(yōu)選地以高級過程或面向?qū)ο蟮木幊陶Z言實(shí)現(xiàn)以便與計算機(jī)通信。但是,如果需要,可以以匯編或機(jī)器語言來實(shí)現(xiàn)本發(fā)明。在任何情況下,語言可以是編譯的或解釋的語言。
本發(fā)明可以實(shí)現(xiàn)為包括記錄介質(zhì)的機(jī)構(gòu)或計算機(jī)程序產(chǎn)品。此類機(jī)構(gòu)或計算機(jī)程序產(chǎn)品可以包括,但不限于,CD-ROM、軟盤、磁帶、硬盤驅(qū)動器、計算機(jī)RAM或ROM和/或電、磁、光、生物或程序的其他類似體現(xiàn)。實(shí)際上,所述機(jī)構(gòu)或計算機(jī)程序產(chǎn)品可以包括任何固體或液體傳輸介質(zhì)、磁或光等,用于存儲或傳送可由機(jī)器讀取的信號,以便根據(jù)本發(fā)明的方法控制通用或?qū)S每删幊逃嬎銠C(jī)的操作和/或根據(jù)本發(fā)明的系統(tǒng)構(gòu)造其組件。
本發(fā)明也可以以系統(tǒng)實(shí)現(xiàn)。系統(tǒng)可以包括計算機(jī),所述計算機(jī)包括處理器和存儲器設(shè)備并可選地包括存儲設(shè)備、諸如視頻顯示的輸出設(shè)備和/或諸如鍵盤或計算機(jī)鼠標(biāo)的輸入設(shè)備。此外,系統(tǒng)可以包括計算機(jī)的互聯(lián)網(wǎng)絡(luò)。計算機(jī)可以是獨(dú)立的形式(例如傳統(tǒng)的臺式個人計算機(jī))或集成到其他裝置(例如,電子測試裝置)??梢猿鲇谒枘康奶貏e構(gòu)建所述系統(tǒng)以執(zhí)行例如本發(fā)明的方法步驟,或所述系統(tǒng)可以包括一個或多個通用計算機(jī),由根據(jù)存儲在計算機(jī)(多個)中的此處教導(dǎo)的計算機(jī)程序有選擇地激活或重新配置所述通用計算機(jī)。此處提出的過程并不內(nèi)在地與特定計算機(jī)系統(tǒng)或其他裝置相關(guān)。從給出的說明可以產(chǎn)生這些系統(tǒng)中的多種系統(tǒng)所需的結(jié)構(gòu)。
再次地,本發(fā)明的一個或多個方面的功能可以在軟件、固件、硬件或它們的某些組合中實(shí)現(xiàn)。
本發(fā)明的一個或多個方面可以包括在一件制品(例如,一個或多個計算機(jī)程序產(chǎn)品)中,所述制品具有例如計算機(jī)可用介質(zhì)。所述介質(zhì)其中具有例如計算機(jī)可讀程序代碼裝置或邏輯(例如,指令、代碼、命令等)來提供和促進(jìn)本發(fā)明的功能。所述制品可以包括為計算機(jī)系統(tǒng)的一部分或單獨(dú)出售。
此外,可以提供至少一個機(jī)器可讀的程序存儲設(shè)備,所述程序存儲設(shè)備包含至少一個可由機(jī)器執(zhí)行的指令程序以便執(zhí)行本發(fā)明的功能。
本文描述的流程圖只是實(shí)例。在不偏離本發(fā)明的精神的情況下,其中說明的這些程序或步驟(或操作)存在許多變型。例如,可以以不同的順序執(zhí)行這些步驟,或添加、刪除或修改步驟。所有這些變型都被看作要求保護(hù)的發(fā)明的一部分。
盡管在此詳細(xì)示出和說明了優(yōu)選實(shí)施例,但是對本領(lǐng)域的技術(shù)人員顯而易見的是,在不偏離本發(fā)明的精神的情況下,可以做出各種修改、添加、替換等,因此,這些被認(rèn)為是在如以下權(quán)利要求限定的本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種管理處理器的寄存器的方法,所述方法包括提供包括一組映射的寄存器映射,所述映射組中的每個映射都包括多個映射寄存器;提供由所述處理器通過所述寄存器映射的所述映射組的映射表項(xiàng)來間接訪問的一組實(shí)際寄存器,其中所述實(shí)際寄存器組中的實(shí)際寄存器的數(shù)量大于所述映射組中的映射表項(xiàng)的數(shù)量,并且其中所述映射組的所述映射表項(xiàng)在任意給定時刻僅引用所述實(shí)際寄存器組的子集;以及通過響應(yīng)于執(zhí)行單個更新指令而更新所述映射組中的至少一個映射的多個映射表項(xiàng)來管理對所述寄存器映射的所述映射組的映射表項(xiàng)的更新。
2.如權(quán)利要求1中所述的方法,其中所述管理與所述處理器使用所述映射組的至少一些其他映射表項(xiàng)來間接訪問所述實(shí)際寄存器組以便處理數(shù)據(jù)同時發(fā)生。
3.如權(quán)利要求2中所述的方法,其中所述管理還與所述處理器使用至少一個通過所述單個更新指令更新多個映射表項(xiàng)的映射的至少一些其他映射表項(xiàng)同時發(fā)生,并且其中所述單個更新指令包括單指令多數(shù)據(jù)指令。
4.如權(quán)利要求1中所述的方法,其中通過所述單個更新指令更新的所述多個映射表項(xiàng)少于所述映射組的所述至少一個映射的所有映射表項(xiàng)。
5.如權(quán)利要求1中所述的方法,其中所述處理器還包括基于單指令多數(shù)據(jù)的執(zhí)行單元和關(guān)聯(lián)的單指令多數(shù)據(jù)寄存器,并且其中所述管理還包括使用所述處理器的所述基于單指令多數(shù)據(jù)的執(zhí)行單元和關(guān)聯(lián)的單指令多數(shù)據(jù)寄存器來在至少一個單指令多數(shù)據(jù)寄存器中建立多個映射表項(xiàng)更新,并且其中所述管理還包括使用所述單個更新指令來將所述多個映射表項(xiàng)更新從所述至少一個單指令多數(shù)據(jù)寄存器移動到所述至少一個映射的至少一個映射寄存器,其中所述多個映射寄存器與所述單指令多數(shù)據(jù)寄存器具有相同的位大小和邏輯結(jié)構(gòu),并且所述單個更新指令是“將數(shù)據(jù)從單指令多數(shù)據(jù)寄存器移動到映射寄存器”指令。
6.如權(quán)利要求5中所述的方法,其中將所述多個映射表項(xiàng)更新從所述至少一個單指令多數(shù)據(jù)寄存器移動到所述至少一個映射寄存器是從所述至少一個單指令多數(shù)據(jù)寄存器到所述寄存器映射的所述至少一個映射寄存器直接發(fā)生,而不使用所述處理器的加載/存儲單元。
7.如權(quán)利要求5中所述的方法,其中所述管理還包括響應(yīng)于單獨(dú)的單個移動指令,將所述寄存器映射的所述映射組的至少一個映射的多個映射表項(xiàng)移動到與所述單指令多數(shù)據(jù)執(zhí)行單元關(guān)聯(lián)的單指令多數(shù)據(jù)寄存器中的至少一個單指令多數(shù)據(jù)寄存器,其中所述單獨(dú)的單個移動指令是“將數(shù)據(jù)從映射寄存器移動到單指令多數(shù)據(jù)寄存器”指令。
8.如權(quán)利要求1中所述的方法,其中提供所述寄存器映射還包括為所述寄存器映射提供多個遞增寄存器,每個遞增寄存器與所述多個映射寄存器中的相應(yīng)映射寄存器關(guān)聯(lián),并且其中所述管理包括響應(yīng)于所述單個更新指令,使用所述多個遞增寄存器中的至少一個遞增寄存器來更新所述映射組的所述至少一個映射的多個映射表項(xiàng),其中所述單個更新指令包括“遞增映射寄存器”指令。
9.如權(quán)利要求8中所述的方法,其中提供所述寄存器映射還包括為所述寄存器映射提供多個預(yù)遞增映射寄存器,每個預(yù)遞增映射寄存器與所述多個映射寄存器中的相應(yīng)映射寄存器關(guān)聯(lián),并且其中所述管理還包括使用所述單個更新指令,將預(yù)遞增映射表項(xiàng)從至少一個預(yù)遞增映射寄存器移動到所述至少一個映射的至少一個映射寄存器。
10.如權(quán)利要求9中所述的方法,還包括響應(yīng)于更新所述多個映射寄存器的關(guān)聯(lián)映射寄存器或所述多個遞增寄存器的關(guān)聯(lián)遞增寄存器的映射表項(xiàng),自動地確定所述多個預(yù)遞增映射寄存器中的預(yù)遞增映射寄存器的映射表項(xiàng)。
11.如權(quán)利要求1中所述的方法,其中所述單個更新指令包括“立即設(shè)置映射寄存器”指令,并且其中所述管理還包括從所述“立即設(shè)置映射寄存器”指令的字段獲取初始化值并使用從所述“立即設(shè)置映射寄存器”指令獲取的所述初始化值來對所述多個映射表項(xiàng)進(jìn)行初始化遞增更新。
12.如權(quán)利要求11中所述的方法,其中被更新的所述多個映射表項(xiàng)在至少一個映射寄存器中,所述至少一個映射寄存器包括多個半字,并且其中所述管理還包括使用從所述“立即設(shè)置映射寄存器”指令獲取的所述初始化值來初始化所述至少一個映射寄存器的第一半字,并分別通過將所述至少一個映射寄存器的至少一個關(guān)聯(lián)的遞增寄存器遞增1或遞增值i來更新所述映射寄存器的每個連續(xù)的半字。
13.如權(quán)利要求1中所述的方法,其中所述映射組包括目標(biāo)映射和三個源映射,并且其中所述目標(biāo)映射和所述三個源映射中的每個映射都包括四個映射寄存器,每個映射寄存器包括八個半字表項(xiàng),且所述映射組的每個映射具有三十二個映射表項(xiàng),并且其中所述單個更新指令包括四個操作數(shù),一個操作數(shù)是目標(biāo)映射標(biāo)識符,并且其余三個操作數(shù)中的至少兩個操作數(shù)是源映射標(biāo)識符。
14.一種用于管理處理器的寄存器的系統(tǒng),所述系統(tǒng)包括包含一組映射的寄存器映射,所述映射組中的每個映射包括多個映射寄存器;由所述處理器通過所述寄存器映射的所述映射組的映射表項(xiàng)來間接訪問的一組實(shí)際寄存器,其中所述實(shí)際寄存器組中的實(shí)際寄存器的數(shù)量大于所述映射組中的映射表項(xiàng)的數(shù)量,并且其中所述映射組的所述映射表項(xiàng)在任意給定時刻僅引用所述實(shí)際寄存器組的子集;以及用于通過響應(yīng)于執(zhí)行單個更新指令而更新所述映射組中的至少一個映射的多個映射表項(xiàng)來管理對所述寄存器映射的所述映射組的映射表項(xiàng)的更新的裝置。
15.如權(quán)利要求14中所述的系統(tǒng),其中所述用于管理的裝置的操作與所述處理器使用所述映射組的至少一些其他映射表項(xiàng)來間接訪問所述實(shí)際寄存器組以便處理數(shù)據(jù)同時進(jìn)行。
16.如權(quán)利要求15中所述的系統(tǒng),其中所述用于管理的裝置的操作還與所述處理器使用至少一個通過所述單個更新指令更新多個映射表項(xiàng)的映射的至少一些其他映射表項(xiàng)同時進(jìn)行,并且其中所述單個更新指令包括單指令多數(shù)據(jù)指令。
17.如權(quán)利要求14中所述的系統(tǒng),其中通過所述單個更新指令更新的所述多個映射表項(xiàng)少于所述映射組的所述至少一個映射的所有映射表項(xiàng)。
18.如權(quán)利要求14中所述的系統(tǒng),其中所述處理器還包括基于單指令多數(shù)據(jù)的執(zhí)行單元和關(guān)聯(lián)的單指令多數(shù)據(jù)寄存器,并且其中所述用于管理的裝置還包括用于使用所述處理器的所述基于單指令多數(shù)據(jù)的執(zhí)行單元和關(guān)聯(lián)的單指令多數(shù)據(jù)寄存器來在至少一個單指令多數(shù)據(jù)寄存器中建立多個映射表項(xiàng)更新的裝置,并且其中所述用于管理的裝置還包括用于使用所述單個更新指令來將所述多個映射表項(xiàng)更新從所述至少一個單指令多數(shù)據(jù)寄存器移動到所述至少一個映射的至少一個映射寄存器的裝置,其中所述多個映射寄存器與所述單指令多數(shù)據(jù)寄存器具有相同的位大小和邏輯結(jié)構(gòu),并且所述單個更新指令是“將數(shù)據(jù)從單指令多數(shù)據(jù)寄存器移動到映射寄存器”指令。
19.如權(quán)利要求18中所述的系統(tǒng),其中使用所述寄存器映射來直接執(zhí)行所述用于將所述多個映射表項(xiàng)更新從所述至少一個單指令多數(shù)據(jù)寄存器移動到所述至少一個映射寄存器的裝置,而不使用所述處理器的加載/存儲單元。
20.如權(quán)利要求18中所述的系統(tǒng),其中所述用于管理的裝置還包括用于響應(yīng)于單獨(dú)的單個移動指令,將所述寄存器映射的所述映射組的至少一個映射的多個映射表項(xiàng)移動到與所述單指令多數(shù)據(jù)執(zhí)行單元關(guān)聯(lián)的單指令多數(shù)據(jù)寄存器中的至少一個單指令多數(shù)據(jù)寄存器的裝置,其中所述單獨(dú)的單個移動指令是“將數(shù)據(jù)從映射寄存器移動到單指令多數(shù)據(jù)寄存器”指令。
21.如權(quán)利要求14中所述的系統(tǒng),其中所述寄存器映射還包括多個遞增寄存器,每個遞增寄存器與所述多個映射寄存器中的相應(yīng)映射寄存器關(guān)聯(lián),并且其中所述用于管理的裝置包括用于響應(yīng)于所述單個更新指令,使用所述多個遞增寄存器中的至少一個遞增寄存器來更新所述映射組的所述至少一個映射的多個映射表項(xiàng)的裝置,其中所述單個更新指令包括“遞增映射寄存器”指令。
22.如權(quán)利要求21中所述的系統(tǒng),其中所述寄存器映射還包括多個預(yù)遞增映射寄存器,每個預(yù)遞增映射寄存器與所述多個映射寄存器中的相應(yīng)映射寄存器關(guān)聯(lián),并且其中所述用于管理的裝置還包括用于使用所述單個更新指令,將預(yù)遞增映射表項(xiàng)從至少一個預(yù)遞增映射寄存器移動到所述至少一個映射的至少一個映射寄存器的裝置。
23.如權(quán)利要求22中所述的系統(tǒng),還包括用于響應(yīng)于更新所述多個映射寄存器的關(guān)聯(lián)映射寄存器或所述多個遞增寄存器的關(guān)聯(lián)遞增寄存器的映射表項(xiàng),自動地確定所述多個預(yù)遞增映射寄存器中的預(yù)遞增映射寄存器的映射表項(xiàng)的裝置。
24.如權(quán)利要求14中所述的系統(tǒng),其中所述單個更新指令包括“立即設(shè)置映射寄存器”指令,并且其中所述用于管理的裝置還包括用于從所述“立即設(shè)置映射寄存器”指令的字段獲取初始化值并使用從所述“立即設(shè)置映射寄存器”指令獲取的所述初始化值來對所述多個映射表項(xiàng)進(jìn)行初始化遞增更新的裝置。
25.如權(quán)利要求24中所述的系統(tǒng),其中被更新的所述多個映射表項(xiàng)在至少一個映射寄存器中,所述至少一個映射寄存器包括多個半字,并且其中所述用于管理的裝置還包括用于使用從所述“立即設(shè)置映射寄存器”指令獲取的所述初始化值來初始化所述至少一個映射寄存器的第一半字,并分別通過將所述至少一個映射寄存器的至少一個關(guān)聯(lián)的遞增寄存器遞增1或遞增值i來更新所述映射寄存器的每個連續(xù)的半字的裝置。
26.如權(quán)利要求14中所述的系統(tǒng),其中所述映射組包括目標(biāo)映射和三個源映射,并且其中所述目標(biāo)映射和所述三個源映射中的每個映射都包括四個映射寄存器,每個映射寄存器包括八個半字表項(xiàng),且所述映射組的每個映射具有三十二個映射表項(xiàng),并且其中所述單個更新指令包括四個操作數(shù),一個操作數(shù)是目標(biāo)映射標(biāo)識符,并且其余三個操作數(shù)中的至少兩個操作數(shù)是源映射標(biāo)識符。
27.至少一個計算機(jī)可讀的、有形地包含至少一個指令程序的程序存儲設(shè)備,所述指令可由所述計算機(jī)執(zhí)行以執(zhí)行如權(quán)利要求1-13中的任一權(quán)利要求所述的方法。
全文摘要
本發(fā)明提供了一種用于管理處理器中基于映射的間接寄存器文件訪問的寄存器映射的工具。所述管理工具包括包含一組映射的寄存器映射,所述映射組中的每個映射都具有多個映射寄存器。所述處理器通過所述映射組的映射表項(xiàng)來間接訪問一組實(shí)際寄存器。所述實(shí)際寄存器組中的實(shí)際寄存器的數(shù)量大于所述映射組中的映射表項(xiàng)的數(shù)量,并且所述映射組的所述映射表項(xiàng)在任意給定時刻僅引用所述實(shí)際寄存器組的子集。所述工具包括通過響應(yīng)于執(zhí)行單個更新指令而更新所述映射組中的至少一個映射的多個映射表項(xiàng)來管理對所述寄存器映射的所述映射組的映射表項(xiàng)的更新。
文檔編號G06F15/78GK101030192SQ20071008612
公開日2007年9月5日 申請日期2007年3月1日 優(yōu)先權(quán)日2006年3月2日
發(fā)明者J·H·德比, P·G·卡佩克, R·K·蒙托耶 申請人:國際商業(yè)機(jī)器公司