專利名稱:多線程再循環(huán)和調度系統(tǒng)及其方法
技術領域:
本發(fā)明一般涉及改善有序(in-order)處理器的吞吐量,并特別涉及有序處理器中的多線程技術。
背景技術:
“多線程”是一種計算機系統(tǒng)中使用的普通技術,以允許多個線程處理共享的數(shù)據(jù)流。如果用于單處理器系統(tǒng)中,多線程賦予單處理器系統(tǒng)的操作系統(tǒng)軟件一個多處理器系統(tǒng)的外部特征。
在現(xiàn)有技術中使用了幾種多線程技術。例如,粗粒度(coarse-grain)多線程允許在某一時間只激活一個線程,并且當存在線程交換時,則刷新整個的管線(pipeline)。在此技術中,單線程一直運行直到遇到事件,比如高速緩存錯誤(miss),并且然后該管線被排空,備用線程被激活(也就是換入)。
另一個例子中,同時多線程(SMT)允許多個線程同時被激活,并使用無序設計的資源,比如寄存器改名、和完成對緩沖器重新排序以跟蹤多個激活的線程。SMT在硬件實現(xiàn)中會相當昂貴。
所以,需要一種無需使用無序設計技術而改善有序多線程處理器的吞吐量的系統(tǒng)和方法。
發(fā)明內容
本發(fā)明提供了一種用于改善有序多線程處理器的吞吐量的系統(tǒng)和方法。根據(jù)來自第一線程的寄存器相關性來識別相關指令以跟隨至少一個長等待時間指令。通過將其提供給更早的管線級,該相關指令被再循環(huán)。調度時該相關指令被延遲。從第一線程檢測該長等待時間指令的完成。當執(zhí)行該長等待時間指令時,允許備用線程發(fā)布一個或更多指令。
為了更全面理解本發(fā)明及其優(yōu)點,下面結合附圖進行說明,其中
圖1是示出了處理器中的多線程指令流的方框圖;圖2是示出了正常線程交換的時序圖;和圖3是示出了當相關(dependent)指令跟隨線程中載入錯誤時線程切換的時序圖。
具體實施例方式
在以下的討論中,提出了許多特定細節(jié)以更全面理解本發(fā)明。然而,本領域普通技術人員應明白無需這些特定細節(jié)也能實現(xiàn)本發(fā)明。在其它例子中,已用示意圖或方框圖形式示出了公知元件,以防本發(fā)明被遮掩在不必要的細節(jié)中。
更要注意的是,除非另行說明,可以用硬件或軟件、或其結合執(zhí)行這里描述的所有功能。然而,在優(yōu)選實施例中,如果不另行說明,根據(jù)比如計算機程序代碼的代碼、軟件和/或被編碼以執(zhí)行這些功能的集成電路,由例如計算機或電子數(shù)據(jù)處理器的處理器執(zhí)行這些功能。
參照圖1,附圖標記100一般表示在方框圖中具有多線程指令流的處理器100。最好是,處理器100是一個有序多線程處理器。處理器100有兩個線程(A和B);然而,它可以有兩個以上的線程。
處理器100分別包含對于線程A和B的指令讀取地址寄存器(IFAR)102和104。IFAR 102和104與具有IC1、IC2和IC3的指令高速緩沖存儲器(ICACHE)106相連。處理器100還分別包含線程A和B的指令緩沖器(IBUF)108和110。IBUF 108和110中的每一個為兩個入口深和四指令寬。特別是,IBUF 108包含IBUF A(0)和IBUF A(1)。類似的,IBUF 110包含IBUF B(0)和IBUF B(1)。處理器100還包含指令調度塊ID1 112和ID2114。ID1 112包括與ICACHE 106及IBUF 108和110相連的多路復用器116。多路復用器116被配置成接收線程調度請求信號118作為控制信號。ID1 112也與ID2 114相連接。
處理器100還包含指令發(fā)布塊IS1 120和IS2 122。IS1 120與ID2 114相連以接收指令。IS1 120也與IS2 122相連以向IS2 122發(fā)送該指令。處理器100還包含與執(zhí)行單元相連的各種寄存器文件以處理該指令。特別地,處理器100包含與向量/SIMD多媒體擴展(VMX)126相連的向量寄存器文件(VRF)124。處理器100還包含與浮點單元(FPU)130相連的浮點寄存器文件(FPR)128。此外,處理器100包含與定點單元/載入存儲(load-store)單元(FXU/LSU)134及數(shù)據(jù)高速緩沖存儲器(DCACHE)136相連的通用目的寄存器文件(GPR)132。處理器100還包含條件寄存器文件/鏈接寄存器文件/計數(shù)寄存器文件(CR/LNK/CNT)138和分支140。IS2 122與VRF 124、FPR 128、GPR 132、和CR/LNK/CNT 138相連。處理器100還包含一個最好與IS2 122相連的相關性檢驗邏輯142。
每個線程中指令讀取將保持分離的IFAR 102和104。在線程之間的每一循環(huán)中讀取將交替進行。在此實現(xiàn)中,指令讀取被管線處理并占用三次循環(huán)。在三次循環(huán)的最后,從ICACHE 106中讀取四個指令并轉發(fā)給ID1 112。這四個指令被調度或插入IBUF 108和/或110。
在ID1 112中確定線程交換的選擇。該確定基于線程調度請求信號118和對于該線程可用的指令。最好是,線程調度請求信號118在每個線程的每次循環(huán)中觸發(fā)。如果有一個對于給定線程的可用指令,而且對于那個線程而言為有效線程,那么為那個線程而調度一個指令。如果在其有效線程周期內沒有對該線程可用的指令,那么如果備用線程含有可用指令,則該備用線程可以使用此調度時隙。
在現(xiàn)有技術系統(tǒng)中,當在第一線程(舉例來說,A線程)中一個相關指令跟隨一個長等待時間指令時,該相關指令直到長等待時間指令被處理后才被執(zhí)行。因此,該相關指令將被儲存在IS2 122中,直到長等待時間指令被處理。然而在本發(fā)明中,相關性檢驗邏輯142識別跟隨在長等待時間指令之后的相關指令。最好是,標記該相關指令以使相關性檢驗邏輯能夠識別它。通過提供相關指令給更早的管線級(stage)(例如,讀取級),該相關指令被再循環(huán)。在調度時該相關指令被延遲。當執(zhí)行長等待時間指令時,允許備用線程發(fā)布一個或多個指令。一旦完成長等待時間指令,第一線程的相關指令得到執(zhí)行。
現(xiàn)在參考圖2,時序圖200示出了正常線程交換。時序圖200顯示了無分支重定向或管線停止的正常讀取、調度和發(fā)布處理。最好是,在每一循環(huán)的線程之間交替進行讀取、調度和發(fā)布處理。特別是,A(03)是為線程A讀取的四個指令的組。類似地,B(03)是為線程B讀取的四個指令的組。沒有分支以使每一循環(huán)中讀取和調度都觸發(fā)線程。
現(xiàn)在參考圖3,時序圖300顯示了由線程A的相關指令跟隨的線程A的DCACHE載入錯誤。在循環(huán)1中,加載302在管線級EX2中。在循環(huán)1中,線程A的相關指令304在管線級IS2。在循環(huán)4中,DCACHE錯誤信號306被激活。這依次使線程A的回寫使能信號308被禁止。在循環(huán)7中,F(xiàn)LUSH(A)信號310刷新線程A中的相關指令304。然后調度時該相關指令304將被再循環(huán)和保持,直到數(shù)據(jù)從錯過DCACHE的加載返回。在刷新發(fā)生后,線程B被給予循環(huán)21開始的所有調度時隙。這一直持續(xù)到DCACHE載入數(shù)據(jù)返回為止。
需要注意的是,在加載302被完全執(zhí)行后,線程A通過管線發(fā)送相關指令304用于執(zhí)行。
長等待時間指令可能會采取許多不同的形式。如圖3所示的載入錯誤是長等待時間指令的一個例子。另外,還有其他類型的長等待時間指令,包含但不僅限于(1)地址轉換錯誤;(2)定點合成(complex)指令;(3)浮點合成指令;及(4)浮點反向(denorm)指令。盡管圖3示出了一個載入錯誤實例,但本領域普通技術人員應該理解,本發(fā)明同樣適用于其他類型的長等待時間指令。
從前述說明中應理解在不脫離其真實精神的情況下,可對本發(fā)明的優(yōu)選實施例進行各種變形和變更。本說明僅為了闡明本發(fā)明,而非限制目的。本發(fā)明的范圍僅由所附權利要求書來限定。
權利要求
1.一種用于改善有序多線程處理器吞吐量的方法,該方法包括步驟根據(jù)來自第一線程的寄存器相關性識別跟隨在至少一個長等待時間指令之后的相關指令;通過提供該相關指令給更早的管線級來再循環(huán)該相關指令;在調度時延遲該相關指令;從該第一線程檢測至少一個長等待時間指令的完成;和當正在執(zhí)行至少一個長等待時間指令時,允許備用線程發(fā)布一個或更多指令。
2.根據(jù)權利要求1的方法,其特征在于,所述調度時延遲相關指令的步驟包含在指令緩沖器中保持該相關指令的步驟。
3.根據(jù)權利要求2的方法,其特征在于,調度塊標記表示該相關指令將在該指令緩沖器中被保持。
4.根據(jù)權利要求3的方法,其特征在于,該調度塊標記被重置以表示將從該指令緩沖器釋放該相關指令。
5.根據(jù)權利要求1的方法,其特征在于,至少一個長等待時間指令為載入錯誤。
6.根據(jù)權利要求5的方法,還包括步驟發(fā)布載入/存儲指令;跟蹤該載入/存儲指令的目標相關性;在錯誤隊列中保存該載入/存儲指令;執(zhí)行該載入/存儲指令;發(fā)信號通知載入錯誤;刷新隨后的相關指令;當調度備用線程的其他指令時,在調度時保持該相關指令;和調度該相關指令。
7.根據(jù)權利要求1的方法,其特征在于,至少一個長等待時間指令為地址轉換錯誤。
8.根據(jù)權利要求1的方法,其特征在于,至少一個長等待時間指令為定點合成指令。
9.根據(jù)權利要求1的方法,其特征在于,至少一個長等待時間指令為浮點合成指令。
10.根據(jù)權利要求1的方法,其特征在于,至少一個長等待時間指令為浮點反向指令。
11.一種具有兩個或更多線程的有序多線程處理器,包含多個指令讀取地址寄存器,至少一個指令讀取地址寄存器被分配給多個線程中的兩個線程中的每一個;指令高速緩沖存儲器,與所述多個指令讀取地址寄存器相連;多個指令緩沖器,至少一個指令緩沖器被分配給每個線程,所述多個指令緩沖器與該指令高速緩沖存儲器相連,用于從該指令高速緩沖存儲器接收一個或多個指令;指令調度級,與該指令高速緩沖存儲器和所述多個指令緩沖器相連;指令發(fā)布級,與該指令調度級相連;相關性檢驗邏輯,與該指令發(fā)布級相連,用于根據(jù)來自第一線程的寄存器相關性識別跟隨在至少一個長等待時間指令之后的相關指令;該相關性檢驗邏輯用于通過提供該相關指令給更早的管線級而再循環(huán)該相關指令;該相關性檢驗邏輯用于延遲調度時的相關指令;該相關性檢驗邏輯用于檢測來自該第一線程的至少一個長等待時間指令的完成;和該相關性檢驗邏輯用于當執(zhí)行該至少一個長等待時間指令時,允許備用線程發(fā)布一個或更多指令。
12.根據(jù)權利要求11的有序多線程處理器,其特征在于,該發(fā)布級包含至少一個寄存器文件和至少一個與該寄存器文件相連的執(zhí)行單元。
13.根據(jù)權利要求12的有序多線程處理器,其特征在于,該至少一個寄存器文件包含向量寄存器文件(VRF),并且其中該至少一個執(zhí)行單元包含向量/SIMD多媒體擴展(VMX)。
14.根據(jù)權利要求12的有序多線程處理器,其特征在于,該至少一個寄存器文件包含浮點寄存器文件(VPR),并且其中該至少一個執(zhí)行單元包含浮點單元(FPU)。
15.根據(jù)權利要求12的有序多線程處理器,其特征在于,該至少一個寄存器文件包含通用目的寄存器文件(GPR),并且其中該至少一個執(zhí)行單元包含定點單元(FXU)和載入/存儲單元(LSU)。
16.根據(jù)權利要求12的有序多線程處理器,其特征在于,該至少一個寄存器文件包含條件寄存器文件(CR)、鏈接寄存器文件(LNK)和計數(shù)寄存器文件(CNT),并且其中該至少一個執(zhí)行單元包含分支。
17.一種具有兩個或更多線程的有序多線程處理器,包含用于根據(jù)來自第一線程的寄存器相關性識別跟隨在至少一個長等待時間指令之后的相關指令的裝置;用于通過提供該相關指令給更早的管線級而再循環(huán)該相關指令的裝置;用于在調度時延遲該相關指令的裝置;用于檢測來自第一線程的至少一個長等待時間指令的完成的裝置;和用于當執(zhí)行至少一個長等待時間指令時,允許備用線程發(fā)布一個或更多指令的裝置。
18.根據(jù)權利要求17的有序多線程處理器,其特征在于,該用于在調度時延遲該相關指令的裝置包含用于在指令緩沖器中保持該相關指令的裝置。
19.根據(jù)權利要求18的有序多線程處理器,其特征在于,一調度塊標記表示該相關指令將在該指令緩沖器中被保持。
20.根據(jù)權利要求19的有序多線程處理器,其特征在于,該調度塊標記被重置,以表示將從該指令緩沖器釋放該相關指令。
21.根據(jù)權利要求17的有序多線程處理器,其特征在于,該至少一個長等待時間指令為載入錯誤。
22.根據(jù)權利要求21的有序多線程處理器,還包括發(fā)布載入/存儲指令的裝置;跟蹤該載入/存儲指令的目標相關性的裝置;在錯誤隊列中保存該載入/存儲指令的裝置;執(zhí)行該載入/存儲指令的裝置;發(fā)信號通知載入錯誤的裝置;刷新隨后的相關指令的裝置;當調度備用線程的其他指令時,保持調度時的該相關指令的裝置;和調度該相關指令的裝置。
23.根據(jù)權利要求17的有序多線程處理器,其特征在于,該至少一個長等待時間指令為地址轉換錯誤。
24.根據(jù)權利要求17的有序多線程處理器,其特征在于,該至少一個長等待時間指令為定點合成指令。
25.根據(jù)權利要求17的有序多線程處理器,其特征在于,該至少一個長等待時間指令為浮點合成指令。
26.根據(jù)權利要求17的有序多線程處理器,其特征在于,該至少一個長等待時間指令為浮點反向指令。
27.一種用于改善有序多線程處理器的吞吐量的計算機程序產品,該計算機程序產品具有其上含有計算機程序的介質,所述計算機程序包括根據(jù)來自第一線程的寄存器相關性識別跟隨在至少一個長等待時間指令之后的相關指令的計算機程序代碼;通過提供該相關指令給更早的管線級而再循環(huán)該相關指令的計算機程序代碼;用于延遲調度時的相關指令的計算機程序代碼;用于檢測來自該第一線程的至少一個長等待時間指令的完成的計算機程序代碼;和當執(zhí)行該至少一個長等待時間指令時,允許備用線程發(fā)布一個或更多指令的計算機程序代碼。
28.根據(jù)權利要求27的計算機程序產品,其特征在于,該用于延遲調度時的相關指令的計算機程序代碼包括用于在指令緩沖器中保持該相關指令的計算機程序代碼。
全文摘要
提供了一種改善有序多線程處理器吞吐量的系統(tǒng)及方法。根據(jù)來自第一線程的寄存器相關性識別相關指令以跟隨至少一個長等待時間指令。通過將其提供給更早的管線級,該相關指令被再循環(huán)。在調度時,該相關指令被延遲。從第一線程檢測長等待時間指令的完成。當執(zhí)行長等待時間指令時,允許備用線程發(fā)布一個或多個指令。
文檔編號G06F9/312GK1504873SQ0315403
公開日2004年6月16日 申請日期2003年8月14日 優(yōu)先權日2002年12月5日
發(fā)明者庫爾特·A·費斯特, 戴維·希皮, 小艾伯特·J·范諾斯特蘭德, 希皮, 庫爾特 A 費斯特, 特 J 范諾斯特蘭德 申請人:國際商業(yè)機器公司