專利名稱:跨線程寄存器共享技術的制作方法
技術領域:
本發(fā)明涉及微處理器體系結構。更具體而言,本發(fā)明涉及用于在微處理器內共享寄存器資源的技術。
背景技術:
在典型的高性能超標量(superscalar)微處理器中,一種提高性能的技術是寄存器重命名(register renaming),其中指令所引用的邏輯寄存器被映射到一個更大的物理寄存器集合上。這種物理寄存器映射有助于消除邏輯寄存器映射中會存在的假相關性(false dependency)。傳統(tǒng)上,諸如寄存器別名表(RAT)之類的結構存儲“邏輯到物理”的映射,而另一種結構,例如空閑清單表(“空閑清單”(freelist)),則保持未使用或“空閑”的物理寄存器,直到它們被重命名單元所分配和使用為止。
在有能力同時執(zhí)行若干線程的多線程處理器中,用于從空閑清單中分配物理寄存器的技術可以使用硬分區(qū)空閑清單或共享空閑清單。共享空閑清單技術通常需要較大的空閑清單表和相關聯的邏輯,但它在性能上具有以下的優(yōu)勢,即如果處理器運行在單線程模式下,則使空閑清單內的所有寄存器都對一個活動線程可用。硬分區(qū)空閑清單技術需要較少的硬件,但可能由于每個線程的寄存器數量是固定的而約束了性能。
現有技術中兩線程處理器的共享寄存器分配技術的一個示例在圖1中示出。當一個寄存器被分配到任一線程或兩個線程時,它被從空閑清單105中讀取,并寫入到合適的RAT 110中,作為重命名的寄存器。而且,諸如重排序緩沖區(qū)(ROB)115之類的單獨結構跟蹤所分配的寄存器,從而這些寄存器可以在不再需要時被返回到空閑清單。
共享空閑清單自身難以處理寄存器釋放(deallocation),因為在兩個線程之間沒有受保證的退休(retirement)順序。空閑清單中的條目數等于物理寄存器的條目數,在復位時,用每個物理寄存器號將空閑清單初始化。然后,可以將這些初始化了的寄存器分配到任一線程或兩個線程的RAT中。
利用硬分區(qū)寄存器分配技術,可以減少特定數量的物理寄存器所需的硬件量。硬分區(qū)寄存器分配技術的一個現有技術示例在圖2中示出。圖2的硬分區(qū)寄存器分配技術為每個線程指定了可以使用哪些寄存器。而且,如果一個線程休眠,則其所指定的寄存器不被使用,這也浪費了物理寄存器空間。
在圖2的現有技術示例中,可以用物理寄存器號將RAT 210和空閑清單205初始化,這允許每個空閑清單僅跟蹤當前未被RAT使用的寄存器,從而限制空閑清單的大小。假定每個線程都按程序順序使指令退休,每個空閑清單就可以處理寄存器釋放而無需ROB,從而減少了對執(zhí)行釋放的單獨結構的需求。
圖1的現有技術示例使特定線程可用的空閑清單大小最大化,但需要使用額外的硬件,即ROB,來重分配空閑清單中的寄存器。另一方面,圖2的現有技術示例允許在空閑清單中重分配寄存器而無須使用ROB,但減少了單個線程可用的空閑清單條目的數量。
發(fā)明內容
本發(fā)明的目的在于提供用于在微處理器內進行寄存器共享的裝置、系統(tǒng)和方法,用于將最優(yōu)數量的物理寄存器映射到希望數量的邏輯寄存器,同時不增加硬件成本。
根據本發(fā)明一個方面,提供了一種裝置,該裝置包括物理寄存器文件,在該物理寄存器文件中,與計算機程序的指令相關聯的數據被按照與執(zhí)行所述指令的處理器是處于多線程模式還是單線程模式無關的順序而存儲。
根據本發(fā)明另一方面,提供了一種裝置,該裝置包括第一裝置,用于指示物理寄存器文件中要由微處理器使用的、未被分配到邏輯寄存器的寄存器,所述第一裝置在所述微處理器的第二操作模式期間被分區(qū),而在所述微處理器的第一操作模式期間不被分區(qū);和第二裝置,用于將所述邏輯寄存器分配到所述物理寄存器。
根據本發(fā)明又一方面,提供了一種系統(tǒng),該系統(tǒng)包括存儲器單元,用于存儲第一和第二指令線程;和處理器,用于執(zhí)行所述第一和第二指令線程,所述處理器包括物理寄存器文件,其中與所述第一和第二指令線程相對應的數據被按照與所述處理器是處于多線程模式還是單線程模式無關的順序而存儲。
根據本發(fā)明再一方面,提供了一種方法,該方法包括以下步驟將寄存器分配表初始化,以將第一組邏輯寄存器映射到第二組物理寄存器;如果與寄存器空閑清單相關聯的處理器處于多線程模式,則將所述寄存器空閑清單對半分開;以及如果所述處理器處于單線程模式,則不分開所述寄存器空閑清單。
利用本發(fā)明所提供的裝置、系統(tǒng)和方法,可以有效地將最優(yōu)數量的物理寄存器映射到希望數量的邏輯寄存器,同時不增加硬件成本。
在附圖中,示例性而非限制性地圖示了本發(fā)明的實施例,在附圖中,相同的標號指示相似的元件,其中圖1示出了現有技術的一種用于多線程處理器的寄存器共享技術,其將單個線程可用的空閑清單空間最大化;圖2示出了現有技術的一種寄存器共享技術,其減少了對用來在空閑清單中對退休的寄存器進行重分配的額外的硬件結構的使用;圖3示出了一種計算機系統(tǒng),在其中可以使用本發(fā)明的至少一個實施例;圖4示出了一種微處理器體系結構,其中可以使用本發(fā)明的至少一個
具體實施例方式
本發(fā)明的實施例涉及微處理器體系結構。更具體而言,本發(fā)明的實施例涉及用于多線程指令的微處理器內的寄存器共享技術,其有助于將最優(yōu)數量的物理寄存器映射到希望數量的邏輯寄存器,而不會帶來大量的硬件開銷。
在本發(fā)明的至少一個實施例中,使用了這樣一種技術,該技術帶來了與硬分區(qū)寄存器共享技術相關聯的硬件成本,但當一個線程休眠時使更多的寄存器對另一線程可用。
圖3示出了一種計算機系統(tǒng),在該計算機系統(tǒng)中可以使用本發(fā)明的至少一個實施例。處理器305從緩存存儲器310和主存儲器315訪問數據。在圖3的處理器中示出的是本發(fā)明的一個實施例306。然而,本發(fā)明的其它實施例可以實現在該系統(tǒng)內諸如單獨的總線代理之類的其它設備中,或者分布在整個系統(tǒng)的硬件、軟件或其某種組合當中。
所述主存儲器可以實現在各種存儲器源中,所述存儲器源例如是動態(tài)隨機訪問存儲器(DRAM)、硬盤驅動器(HDD)320,或者包含各種存儲設備和技術的經由網絡接口330而位于所述計算機系統(tǒng)遠程的存儲器源。所述緩存存儲器可以位于處理器內或靠近處理器,例如位于處理器的本地總線307上。而且,所述緩存存儲器還可以包含較快的存儲器單元,例如六晶體管(6T)單元,或者訪問速度近似相等或更快的其它存儲器單元。
圖4示出了一種微處理器,在該處理器中可以使用本發(fā)明的至少一個實施例。處理器400具有執(zhí)行單元420、調度單元415、重命名單元410、退休單元425和譯碼器單元405。
在本發(fā)明的一個實施例中,微處理器是設有流水線的超標量處理器,其可以包含串行和/或并行配置的多階段處理功能。因此,在處理器內可以同時處理多條指令,每條指令處于不同的流水線階段。而且,為了處理具有相似類型或相似屬性(例如延遲容忍(latency-tolerance))的指令,執(zhí)行單元可以是執(zhí)行集群(cluster)的一部分。在其它實施例中,執(zhí)行單元可以是單一執(zhí)行單元。
調度單元可以包含各種功能單元,包括本發(fā)明的實施例413。本發(fā)明的其它實施例可以駐留在圖4的處理器體系結構的其它地方,包括重命名單元407。
圖5示出了根據本發(fā)明一個實施例的寄存器共享體系結構,其有助于增加單線程執(zhí)行模式下可用的寄存器數量,而不會帶來全共享的空閑清單體系結構的硬件成本。這種體系結構用寄存器重命名來初始化分別與線程0和線程1相對應的兩個RAT 501、502,而不管處理器是處于單線程(ST)還是多線程(MT)模式。用剩余的重命名寄存器將空閑清單505初始化,并檢查處理器的模式(ST還是MT)。如果處理器處于MT模式,則空閑清單將其自身分區(qū),使得空閑清單的每一半對不同的線程可用。在ST模式下,空閑清單中的所有寄存器對于活動線程都是可用的。
圖5的實施例包括兩個線程,每個線程8個邏輯寄存器,總共28個物理寄存器510,在該實施例中還指明了處于ST模式下時機器的初始狀態(tài)。具體而言,物理寄存器空間的后8個條目被用于線程1(當前休眠),而前20個條目對線程0可用。
如果處理器從ST切換到MT模式,則空閑清單將其自身對半分區(qū),每一半用于不同的線程。這與現有技術硬分區(qū)寄存器共享技術相似,主要區(qū)別在于分配到每個線程的物理寄存器集合將會依賴于ST到MT轉變時空閑清單的狀態(tài),而不是每個線程的預定的物理寄存器集合。這意味著物理寄存器文件中每個線程所使用的寄存器將會被隨機分散到整個物理寄存器文件中。
圖6示出了根據本發(fā)明一個實施例,在MT到ST轉變之后所述體系結構的狀態(tài)。具體而言,在MT到ST的轉變中,空閑清單601將其自身解分區(qū),并允許活動線程對空閑清單中此時的剩余寄存器進行分配。休眠線程605仍將具有8個分配在物理寄存器文件中隨機位置(并且未被活動線程使用)的寄存器。活動線程610將會再次具有20個物理寄存器,用這些寄存器來映射8個邏輯寄存器。
本發(fā)明的多個方面可以使用互補金屬氧化物半導體(CMOS)電路和邏輯設備(硬件)來實現,而其它方面可以使用存儲在機器可讀介質上的指令(軟件)來實現,所述指令當由處理器執(zhí)行時,會使該處理器執(zhí)行實現本發(fā)明實施例的方法。而且,本發(fā)明的一些實施例可以僅用硬件來執(zhí)行,而另一些實施例可以僅用軟件來執(zhí)行。
圖7是一個流程圖,示出了用于執(zhí)行本發(fā)明至少一個實施例的多種操作。在操作701,本發(fā)明的實施例處于ST模式,并被初始化以對物理寄存器文件內的8個寄存器進行分配和重命名。而且,物理寄存器文件中另外12個未使用的寄存器被列出在空閑清單中,以供活動線程使用。如果正在執(zhí)行圖7的本發(fā)明實施例的處理器在操作705處切換到MT模式,則空閑清單在操作710被分成兩半,并且第二線程可以隨意使用空閑清單屬于它的那一半中所指示的寄存器。如果任何寄存器退休,則空閑清單在操作715相應地反映這些寄存器,無論是在MT還是ST模式下。如果圖7所示的本發(fā)明實施例不在MT和ST模式間切換,則在操作720,根據隨后的指令所使用的寄存器來更新RAT和空閑清單。
雖然已參照說明性實施例對本發(fā)明進行了描述,但本說明書不應被理解為具有限制性意義。本發(fā)明所屬領域的技術人員所清楚的對所述說明性實施例的各種修改以及其它實施例都被視為處于本發(fā)明的精神和范圍之內。
權利要求
1.一種裝置,包括物理寄存器文件,在該物理寄存器文件中,與計算機程序的指令相關聯的數據被按照與執(zhí)行所述指令的處理器是處于多線程模式還是單線程模式無關的順序而存儲。
2.如權利要求1所述的裝置,還包括至少一個寄存器分配表,用于指示所述數據在所述物理寄存器文件內從邏輯寄存器到物理寄存器的分配。
3.如權利要求1所述的裝置,還包括所述物理寄存器文件內未被分配到邏輯寄存器的物理寄存器的清單,當所述處理器處于單線程模式時,所述清單中的條目被完全分配到第一線程,而當所述處理器處于多線程模式時,所述清單中的條目被分區(qū),以使得所述條目中的第一部分被分配到第一線程,而所述條目中的第二部分被分配到第二線程。
4.如權利要求3所述的裝置,其中,如果所述處理器處于單線程模式,則所述物理寄存器文件的所有物理寄存器中的第一部分被分配到所述第一線程,而所述物理寄存器文件的所有物理寄存器中的第二部分被分配到所述第二線程,所述所有物理寄存器中的第一部分大于所述所有物理寄存器中的第二部分。
5.如權利要求4所述的裝置,其中,如果所述處理器處于單線程模式,則所述第二線程休眠。
6.如權利要求4所述的裝置,其中,在所述處理器轉變到多線程模式之后,所述物理寄存器文件內的所有物理寄存器中的第一部分仍被分配到所述第一線程,直到與所述物理寄存器文件的所有物理寄存器中的第一部分內的數據相關聯的指令退休為止。
7.如權利要求6所述的裝置,其中,在所述物理寄存器清單中指示與所述退休的指令相關聯的物理寄存器。
8.一種裝置,包括第一裝置,用于指示物理寄存器文件中要由微處理器使用的、未被分配到邏輯寄存器的寄存器,所述第一裝置在所述微處理器的第二操作模式期間被分區(qū),而在所述微處理器的第一操作模式期間不被分區(qū);第二裝置,用于將所述邏輯寄存器分配到所述物理寄存器。
9.如權利要求8所述的裝置,其中,所述邏輯寄存器被與所述邏輯寄存器彼此間的相對位置無關地分配到所述物理寄存器。
10.如權利要求9所述的裝置,其中,所述第二裝置包括寄存器分配表,用于指示所述邏輯寄存器到所述物理寄存器的分配。
11.如權利要求9所述的裝置,其中,所述第二裝置包括多個寄存器分配表,用于指示所述邏輯寄存器到所述物理寄存器的分配,所述多個寄存器分配表中的每一個都與一個單獨的指令線程相關聯。
12.如權利要求11所述的裝置,其中,所述第一操作模式是單線程模式,而所述第二模式是多線程模式。
13.如權利要求12所述的裝置,其中,所述第一裝置是寄存器文件,該寄存器文件包括未被分配到所述邏輯寄存器的物理寄存器的清單。
14.如權利要求13所述的裝置,其中,所述清單中物理寄存器的數量和與單個線程相關聯的邏輯寄存器的數量之和等于所述物理寄存器文件中物理寄存器的數量。
15.如權利要求14所述的裝置,其中,在與存儲在第一物理寄存器中的數據相關聯的指令退休之后,在所述清單中指示所述第一物理寄存器。
16.一種系統(tǒng),包括存儲器單元,用于存儲第一和第二指令線程;處理器,用于執(zhí)行所述第一和第二指令線程,所述處理器包括物理寄存器文件,其中與所述第一和第二指令線程相對應的數據被按照與所述處理器是處于多線程模式還是單線程模式無關的順序而存儲。
17.如權利要求16所述的系統(tǒng),其中,所述處理器還包括至少一個寄存器分配表,用于指示所述數據在所述物理寄存器文件內從邏輯寄存器到物理寄存器的分配。
18.如權利要求16所述的系統(tǒng),還包括未被分配到邏輯寄存器的物理寄存器的清單,當所述處理器處于單線程模式時,所述清單中的條目被完全分配到所述第一線程,而當所述處理器處于多線程模式時,所述清單中的條目被分區(qū),以使得所述條目中的第一部分被分配到所述第一線程,而所述條目中的第二部分被分配到所述第二線程。
19.如權利要求18所述的系統(tǒng),其中,如果所述處理器處于單線程模式,則所述物理寄存器文件內的所有物理寄存器中的第一部分被分配到所述第一線程,而所述物理寄存器文件內的所有物理寄存器中的第二部分被分配到所述第二線程,所述所有物理寄存器中的第一部分大于所述所有物理寄存器中的第二部分。
20.如權利要求19所述的系統(tǒng),其中,如果所述處理器處于單線程模式,則所述第二線程休眠。
21.如權利要求19所述的系統(tǒng),其中,在所述處理器轉變到多線程模式之后,所述物理寄存器文件內的所有物理寄存器中的第一部分仍被分配到所述第一線程,直到與所述物理寄存器文件內的所有物理寄存器中的第一部分內的數據相關聯的指令退休為止。
22.如權利要求21所述的系統(tǒng),其中,在所述物理寄存器清單中指示與所述退休的指令相關聯的物理寄存器。
23.一種方法,包括將寄存器分配表初始化,以將第一組邏輯寄存器映射到第二組物理寄存器;如果與寄存器空閑清單相關聯的處理器處于多線程模式,則將所述寄存器空閑清單對半分開;如果所述處理器處于單線程模式,則不分開所述寄存器空閑清單。
24.如權利要求23所述的方法,還包括從單線程模式轉變到多線程模式,所述第二組物理寄存器散布在整個物理寄存器文件當中。
25.如權利要求24所述的方法,其中,在從單線程模式轉變到多線程模式之后,所述第二組物理寄存器仍散布在整個所述物理寄存器文件當中。
26.如權利要求23所述的方法,還包括從多線程模式轉變到單線程模式,所述第二組物理寄存器散布在整個物理寄存器文件當中。
27.如權利要求26所述的方法,其中,在從多線程模式轉變到單線程模式之后,所述第二組物理寄存器仍散布在整個所述物理寄存器文件當中。
28.如權利要求23所述的方法,其中,所述邏輯寄存器被與所述邏輯寄存器彼此間的相對位置無關地分配到所述物理寄存器。
29.如權利要求28所述的方法,其中,所述空閑清單中的條目數量和與單個線程相關聯的邏輯寄存器數量之和等于所述物理寄存器文件內的物理寄存器數量。
30.如權利要求29所述的方法,還包括在與存儲在第一物理寄存器中的數據相關聯的指令退休之后,在所述空閑清單中指示所述第一物理寄存器。
全文摘要
本發(fā)明公開了一種用于在微處理器中共享寄存器資源的技術。本發(fā)明的實施例涉及用于多線程指令的微處理器內的寄存器共享技術,其有助于將最優(yōu)數量的物理寄存器映射到希望數量的邏輯寄存器,而不會帶來大量的硬件開銷。
文檔編號G06F9/38GK1577260SQ20041004614
公開日2005年2月9日 申請日期2004年6月2日 優(yōu)先權日2003年6月26日
發(fā)明者尼古拉斯·G·薩姆拉, 安德魯·S·黃 申請人:英特爾公司