專利名稱:雙線程處理器的制作方法
技術(shù)領(lǐng)域:
以下的公開內(nèi)容涉及處理電路和系統(tǒng)。
背景技術(shù):
常規(guī)的操作系統(tǒng)典型地支持多任務(wù),多任務(wù)是一種調(diào)度機制,該機制允許不只一個處理器線程(processor thread)共享共同的處理資源。處理器線程代表處理器內(nèi)的架構(gòu)狀態(tài)(architectural state),其跟蹤軟件程序的執(zhí)行。如果計算機具有單個處理器,在任何給定的時間點就只處理一個處理器線程,這就意味著處理器現(xiàn)在正在有效地執(zhí)行與單個處理器線程相關(guān)聯(lián)的指令。從一個處理器線程重新分配處理器到另一個線程的操作稱為上下文切換或環(huán)境切換(context switch)。
在常規(guī)的流水線處理器中,上下文切換通常是通過硬件中斷和中斷服務(wù)例程發(fā)生的。中斷服務(wù)例程通常具有相聯(lián)的執(zhí)行時間或中斷開銷,從而消耗寶貴的處理器時間。另外,在常規(guī)的流水線處理器中,上下文切換通常只以固定的間隔(例如,每100微秒)發(fā)生,如例如操作系統(tǒng)的供應(yīng)商所確定的那樣。
發(fā)明內(nèi)容
大體上,在一個方面,本說明書描述了一種包括流水線級或流水線階段的處理器。所述流水線級包括第一輸入寄存器、第二輸入寄存器、第一輸出寄存器,和第二輸出寄存器。所述處理器進一步包括與所述第一輸入寄存器和所述第二輸入寄存器通信的第一選擇器、和與所述第一輸出寄存器和所述第二輸出寄存器通信的第二選擇器。所述處理器也包括控制器,該控制器可運行以控制所述第一和第二選擇器的切換,以使在正在處理第一處理器線程的時間期間,與第一處理器線程相關(guān)聯(lián)的數(shù)據(jù)傳遞通過所述第一輸入寄存器、所述流水線級、和所述第一輸出寄存器,而在正在處理第二處理器線程的時間期間,與第二處理器線程相關(guān)聯(lián)的數(shù)據(jù)傳遞通過所述第二輸入寄存器、所述流水線級、和所述第二輸出寄存器。所述第一輸入寄存器和所述第一輸出寄存器可運行以存儲所述第一處理器線程的狀態(tài),而且所述第二輸入寄存器和所述第二輸出寄存器可運行以存儲第二處理器線程的狀態(tài)。
特定的實施方式可包括一個或多個以下特征。所述第一選擇器可包括多路復(fù)用器,而所述第二選擇器可包括多路分解器。所述流水線級可包括取指令單元、譯碼邏輯、發(fā)令邏輯(issue logic)、執(zhí)行單元、讀邏輯、或?qū)戇壿嬛械囊粋€。所述控制器可基于確定分配到所述第一和第二處理器線程的每個線程的處理器時間的輸入,來控制所述第一和第二選擇器的切換。所述控制器可以在執(zhí)行程序期間動態(tài)地控制所述第一和第二選擇器的切換,或基于先前確立的針對所述第一和第二處理器線程每個線程的處理器時間分配靜態(tài)地控制所述第一和第二選擇器的切換。
所述處理器可進一步包括第一中斷處理例程,以處理與所述第一處理器線程相關(guān)聯(lián)的中斷請求;和第二中斷處理例程,以處理與所述第二處理器線程相關(guān)聯(lián)的中斷請求。所述第一中斷處理例程和所述第二處理例程可具有各自的入口點(entry point)。所述處理器可進一步包括第一異常處理例程,以處理與所述第一處理器線程相關(guān)聯(lián)的異常請求;和第二異常處理例程,以處理與所述第二處理器線程相關(guān)聯(lián)的異常請求。所述處理器可進一步包括單個異常處理例程或單個中斷處理例程,以分別處理與所述第一和第二處理器線程都相關(guān)聯(lián)的基本上所有的異常請求或基本上所有的中斷請求。
所述處理器可進一步包括對應(yīng)于多個處理器線程中每個線程的一組寄存器。組中的每個寄存器可以位于所述處理器的流水線級之前或之后。所述控制器可以在所述多個處理器線程之間執(zhí)行上下文切換,包括在對應(yīng)的寄存器組中存儲當(dāng)前執(zhí)行的處理器線程的狀態(tài),和將來自對應(yīng)的寄存器組的另一處理器線程的狀態(tài)載入以允許處理另一處理器線程。
大體上,在另一方面,本說明書描述的處理器包括對應(yīng)于多個處理器線程中每個線程的一組寄存器。組中的每個寄存器可以位于所述處理器的流水線級之前或之后。所述處理器進一步包括可編程控制器,用來在所述多個處理器線程之間中執(zhí)行上下文切換,包括在對應(yīng)的寄存器組中存儲當(dāng)前執(zhí)行的處理器線程的狀態(tài),和將來自對應(yīng)的寄存器組的另一處理器線程的狀態(tài)載入以允許處理另一處理器線程。
特定的實施方式包括一個或多個以下的特征。所述可編程控制器可以在指令周期的結(jié)束(end)執(zhí)行上下文切換。所述處理器可進一步包括寄存器文件或寄存器堆或集(register file),該寄存器文件具有對應(yīng)于所述多個處理器線程中每個線程的多個存儲體或組(bank)。每個存儲體可存儲與對應(yīng)的處理器線程相關(guān)聯(lián)的數(shù)據(jù)。所述處理器可以進一步包括多個程序計數(shù)器,每個程序計數(shù)器可運行以指示對應(yīng)的處理器線程的執(zhí)行狀態(tài)。所述處理器可進一步包括對應(yīng)于所述多個處理器線程的多個中斷處理例程,其中每個中斷處理例程處理與對應(yīng)的處理器線程相關(guān)聯(lián)的中斷請求。所述多個中斷處理例程的每一個可以具有分離的入口點。所述處理器可進一步包括對應(yīng)于所述多個處理器線程的多個異常處理器例程,其中每個異常處理例程處理與對應(yīng)的處理器線程相關(guān)聯(lián)的異常請求。所述處理器可包括單個異常處理例程或單個中斷處理例程以分別處理與所述多個處理器線程相關(guān)聯(lián)的基本上所有的異常請求或基本上所有的中斷請求。
大體上,在另一方面,本說明書描述的一種方法包括提供用于指令執(zhí)行的第一處理器線程;提供用于指令執(zhí)行的第二處理器線程;處理所述第一處理器線程;和執(zhí)行從所述第一處理器線程到所述第二處理器線程的上下文切換。執(zhí)行上下文切換包括在對應(yīng)于所述第一存儲器線程的第一組寄存器內(nèi)存儲所述第一處理器線程的狀態(tài),和將來自對應(yīng)于所述第二處理器線程的第二組寄存器的、所述第二處理器線程的狀態(tài)載入。
特定的實施方式可包括一個或多個以下的特征。在對應(yīng)的寄存器組內(nèi)存儲給定處理器線程的狀態(tài)包括存儲對應(yīng)于處理器流水線級的數(shù)據(jù)。所述方法進一步包括接收改變所述處理器時間分配的輸入、和基于改變的處理器時間分配執(zhí)行在所述第一和第二處理器線程中之間的上下文切換。執(zhí)行上下文切換可包括在執(zhí)行程序期間動態(tài)地執(zhí)行上下文切換,或基于先前確立的針對所述第一和第二處理器線程每個線程的處理器時間分配靜態(tài)地執(zhí)行上下文切換。所述方法進一步包括使用第一中斷處理例程來處理與所述第一處理器線程相關(guān)聯(lián)的中斷請求、和使用第二中斷處理例程來處理與所述第二處理器線程相關(guān)聯(lián)的中斷請求。所述方法進一步包括使用第一異常處理例程,以處理與所述第一處理器線程相關(guān)聯(lián)的異常請求;和使用第二異常處理例程,以處理與所述第二處理器線程相關(guān)聯(lián)的異常請求。所述方法進一步包括使用單個異常處理例程或單個中斷處理例程,以分別處理與所述第一和第二處理器線程相關(guān)聯(lián)的基本上所有的異常請求或基本上所有的中斷請求。
大體上,在另一個方面,本說明書描述的處理器包括取指令單元,該單元可運行以取出與多個處理器線程相關(guān)聯(lián)的指令;響應(yīng)于所述取指令單元的譯碼器;響應(yīng)于所述譯碼器的發(fā)令邏輯;和寄存器文件,該寄存器文件包括對應(yīng)于所述多個處理器線程的多個存儲體或組(bank)。每個存儲體可運行從而只存儲與對應(yīng)的處理器線程相關(guān)聯(lián)的數(shù)據(jù)。
特定的實施方式可包括一個或多個以下特征。所述數(shù)據(jù)可包括與給定的處理器線程相關(guān)聯(lián)的被執(zhí)行指令的操作數(shù)或結(jié)果。所述處理器進一步包括與所述取指令單元通信的控制器。所述控制器可以確定處理器線程,從該處理器線程中,可以由所述取指令單元讀取下一個指令。所述處理器進一步包括對應(yīng)于所述多個線程的每個線程的一組寄存器。組中的每個寄存器可以位于所述處理器的流水線級之前或之后。所述控制器可以在所述多個處理器線程之間執(zhí)行上下文切換,包括在對應(yīng)的寄存器組中存儲當(dāng)前執(zhí)行的處理器線程的狀態(tài),和將來自對應(yīng)的寄存器組的另一處理器線程的狀態(tài)載入以允許處理另一處理器線程。所述控制器可包括對應(yīng)于所述多個處理器線程的多個線程分配計數(shù)器。每個線程分配計數(shù)器可包含一個數(shù)值,該數(shù)值代表有多少處理器時間將分配給各自的處理器線程。所述控制器可執(zhí)行上下文切換,其包括切換與所述取指令單元通信的選擇器。所述選擇器可包括多路復(fù)用器和多路分解器。
大體上,在一個方面,本說明書描述的處理器包括貫穿整個流水線級執(zhí)行指令的裝置。用于執(zhí)行指令的所述裝置包括用于存儲數(shù)據(jù)的第一輸入裝置,用于存儲數(shù)據(jù)的第二輸入裝置,用于存儲數(shù)據(jù)的第一輸出裝置,和用于存儲數(shù)據(jù)的第二輸出裝置。所述處理器進一步包括與用于存儲數(shù)據(jù)的所述第一輸入裝置和用于存儲數(shù)據(jù)的所述第二輸入裝置通信的第一選擇裝置;和與用于存儲數(shù)據(jù)的所述第一輸出裝置和用于存儲數(shù)據(jù)的所述第二輸出裝置通信的第二選擇裝置。所述處理器也包括用于控制所述第一和第二選擇裝置的切換的裝置,使得在正在處理第一處理器線程的時間期間,與所述第一處理器線程相關(guān)聯(lián)的數(shù)據(jù)通過用于存儲數(shù)據(jù)的所述第一輸入裝置、所述執(zhí)行裝置、和用于存儲數(shù)據(jù)的所述第一輸出裝置,而在正在處理第二處理器線程的時間期間,與所述第二處理器線程相關(guān)聯(lián)的數(shù)據(jù)通過用于存儲數(shù)據(jù)的所述第二輸入裝置、所述執(zhí)行裝置、和用于存儲數(shù)據(jù)的所述第二輸出裝置。用于存儲數(shù)據(jù)的所述第一輸入裝置和用于存儲數(shù)據(jù)的所述第一輸出裝置可運行以存儲所述第一處理器線程的狀態(tài),而用于存儲數(shù)據(jù)的所述第二輸入裝置和用于存儲數(shù)據(jù)的所述第二輸出裝置可運行以存儲所述第二處理器線程的狀態(tài)。
大體上,在另一方面,本說明書描述的處理器包括對應(yīng)于多個處理器線程中每個線程的數(shù)據(jù)存儲裝置。每個數(shù)據(jù)存儲裝置可以位于所述處理器的流水線級裝置之前或之后。所述處理器進一步包括用于在所述多個處理器線程之間執(zhí)行上下文切換的裝置,其包括用于在對應(yīng)的數(shù)據(jù)存儲裝置組內(nèi)存儲當(dāng)前執(zhí)行的處理器線程的狀態(tài)、并將來自對應(yīng)的數(shù)據(jù)存儲裝置組的另一處理器線程的狀態(tài)載入以允許處理另一處理器線程的裝置。
大體上,在另一方面,本發(fā)明描述的控制器包括用于取出與多個處理器線程相關(guān)聯(lián)的指令的裝置;用于對取出的指令進行譯碼的裝置;用于發(fā)出譯碼指令的裝置;和用于在對應(yīng)的存儲裝置內(nèi)存儲與對應(yīng)的處理器線程相關(guān)聯(lián)的數(shù)據(jù)的裝置。
特定的實施方式可包括一個或多個以下特征。所述數(shù)據(jù)可包括與給定處理器線程相關(guān)聯(lián)的被執(zhí)行指令的操作數(shù)或結(jié)果。所述處理器進一步包括確定處理器線程的裝置,從該處理器線程,將取出下一個指令。所述處理器進一步包括對應(yīng)于所述多個處理器線程中每個線程的數(shù)據(jù)存儲裝置。每個數(shù)據(jù)存儲裝置可以位于所述處理器的流水線級裝置之前或之后。所述處理器可包括用于在所述多個處理器線程之間執(zhí)行上下文切換的裝置,其包括用于在對應(yīng)的數(shù)據(jù)存儲裝置內(nèi)存儲當(dāng)前執(zhí)行的處理器線程的狀態(tài)、并將來自對應(yīng)的數(shù)據(jù)存儲裝置的另一處理器線程的狀態(tài)載入以允許處理另一處理器線程的裝置。
用于執(zhí)行上下文切換的所述裝置可包括用于存儲數(shù)值的裝置,該數(shù)值代表有多少處理器時間將分配給各個處理器線程。用于執(zhí)行上下文切換的所述裝置可包括用于切換選擇器的裝置,該選擇器與所述取指令裝置通信。
實施方式可包括一個或多個以下特征。流水線處理器被構(gòu)造成在沒有與硬件中斷相關(guān)聯(lián)的任何中斷開銷,例如中斷服務(wù)例程的情況下執(zhí)行上下文切換。在一個實施方案中,上下文切換自動地發(fā)生,并主要通過硬件,例如,使用可編程的線程分配控制器。在一個實施方案中,流水線處理器將第一處理器線程的狀態(tài)保存到位于所述流水線處理器每個流水線級之間的第一組寄存器,并將來自也位于所述流水線處理器每個流水線級之間的第二組寄存器的第二處理器線程的狀態(tài)載入。所述寄存器的位置允許快速的上下文切換時間。
用戶,例如,網(wǎng)絡(luò)管理員可以定制分配給每個處理器線程多少時間。在一個實施方式中,確立了初始處理器時間分配后,用戶可進一步動態(tài)地改變處理器時間分配。用戶可以保留對處理器時間分配的完全控制,而不是放棄對操作系統(tǒng)的控制。
一個或多個實施方式的細節(jié)在附圖和下面的說明中給出。通過說明和附圖以及權(quán)利要求,其它的特征和優(yōu)點會很清楚。
圖1是一種流水線處理器架構(gòu)的框圖。
圖2是在圖1的流水線處理器結(jié)構(gòu)或架構(gòu)中運行的方法。
圖3是根據(jù)圖1中流水線處理器結(jié)構(gòu)的一種流水線處理器的框圖。
圖4是一種流水線處理器結(jié)構(gòu)的框圖。
圖5是根據(jù)圖4中流水線處理器結(jié)構(gòu)的一種流水線處理器的框圖。
圖6是在圖1和圖4的流水線處理器結(jié)構(gòu)中執(zhí)行異常處理的方法。
圖7是在圖1和圖4的流水線處理器結(jié)構(gòu)中執(zhí)行中斷處理的方法。
在各個附圖中相同的附圖標(biāo)記表示相同的元件。
具體實施例方式圖1是流水線處理器結(jié)構(gòu)100的框圖,該結(jié)構(gòu)可運行以處理兩個或更多個處理器線程T1、T2...Tn。處理器線程T1、T2...Tn每個都代表流水線處理器結(jié)構(gòu)100內(nèi)跟蹤對應(yīng)的軟件程序執(zhí)行的一種結(jié)構(gòu)狀態(tài)。軟件程序的指令可以從,例如,指令高速緩沖存儲器(例如指令高速緩沖存儲器102)中檢索到。在一個實施方案中,流水線處理器結(jié)構(gòu)100包括兩個或多個程序計數(shù)器(未示出),每個計數(shù)器對應(yīng)處理器線程T1、T2...Tn。每個程序計數(shù)器指示流水線處理器結(jié)構(gòu)100關(guān)于指令序列的位置(針對對應(yīng)的處理器線程T1、T2...Tn)。程序計數(shù)器在下面將結(jié)合圖3和圖5更詳細地討論。
在一個實施方案中,流水線處理器結(jié)構(gòu)100包括六個流水線級。六個流水線級包括取指令級(instruction fetch stage,IF)、譯碼指令級(instruction decode stage,ID)、發(fā)出指令級(instruction issue stage,IS)、執(zhí)行指令級(instruction execution stage,EX)、讀取數(shù)據(jù)存儲器級(data memory read stage,MEM)、和回寫級(write back stage,WB)。然而,流水線處理器結(jié)構(gòu)100可包括不同數(shù)量的流水線級。流水線處理器結(jié)構(gòu)100進一步包括取指令單元(instruction fetch unit,IFU)104、譯碼邏輯106、發(fā)令邏輯108、寄存器文件110、執(zhí)行單元112、讀邏輯114、寫邏輯116、和可編程線程分配控制器118。
取指令單元104從例如,指令高速緩沖存儲器102取回程序指令。譯碼邏輯106將程序指令譯碼并產(chǎn)生將要被執(zhí)行單元112執(zhí)行的譯碼指令。在一個實施方案中,譯碼指令是固定長度的微操作(micro-op)指令。發(fā)令邏輯108向執(zhí)行單元112發(fā)出譯碼指令用于執(zhí)行。執(zhí)行單元112可以是載入執(zhí)行單元、存儲執(zhí)行單元、算術(shù)邏輯單元(ALU)、乘法和累加單元(MAC)、或組合載入/存儲執(zhí)行單元,如發(fā)明人為Hong-yiChen和Jensen Tjeng,名稱為“Variable Length Pipeline ProcessorArchitecture”的美國專利申請(代理人案卷號為MP0634/13361-140001)所描述的那樣,該申請在此全體參考引入。讀邏輯114從,例如,數(shù)據(jù)高速緩沖存儲器(未示出)讀數(shù)據(jù)。寫邏輯116將執(zhí)行指令的結(jié)果回寫到,例如,數(shù)據(jù)高速緩沖存儲器、寄存器文件110、或重排序緩沖器(re-order buffer)(未示出)。
寄存器文件110存儲與每個處理器線程T1、T2...Tn相關(guān)聯(lián)的數(shù)據(jù)。在一個實施方案中,寄存器文件110包括分離的存儲體(例如,存儲體T1、T2...Tn),這些存儲體存儲與對應(yīng)的處理器線程T1、T2...Tn相關(guān)聯(lián)的數(shù)據(jù)。例如,如果寫邏輯116正在將與處理器線程T2相關(guān)聯(lián)的數(shù)據(jù)回寫到寄存器文件110,那么寫邏輯116就會將數(shù)據(jù)寫到寄存器文件110的存儲體T2??梢赃x擇地,可以在流水線處理器結(jié)構(gòu)110中實現(xiàn)分離的寄存器文件(未示出),用于存儲對應(yīng)于每個處理器線程T1、T2...Tn的數(shù)據(jù)。
可編程線程分配控制器118可以被編程以存儲已經(jīng)為每個處理器線程T1、T2...Tn定義的處理器時間分配,即,哪部分處理器時間將專用于每個處理器線程T1、T2...Tn。在一個實施方案中,例如來自用戶的輸入通過圖形用戶界面(未示出)被接收,該輸入定義了分配給多個處理器線程(例如,處理器線程T1、T2...Tn)中每個線程的處理器時間部分。例如,針對雙線程流水線處理器,用戶可以將處理器時間的95%分配給第一處理器線程,并將處理器時間的5%分配給第二處理器線程。在一個實施方案中,為每個處理器線程(例如,處理器線程T1、T2...Tn)定義的處理器時間分配可以被用戶或優(yōu)選地被軟件程序(例如,將被執(zhí)行的軟件程序)動態(tài)地改變,即,在程序執(zhí)行中改變??梢赃x擇地,每個處理器線程的處理器時間分配可以被靜態(tài)地設(shè)定,即,在程序執(zhí)行期間不改變。
在一個實施方案中,可編程線程分配控制器118通過確定從其中讀取(例如,被取指令單元104讀取)下一條指令的處理器線程,來自動執(zhí)行上下文切換。在一個實施方案中,可編程線程分配控制器118通過切換一個或多個選擇器來執(zhí)行上下文切換,其中所述選擇器例如為與取指令單元104通信的多路復(fù)用器和/或多路分解器(未示出)。包括多路復(fù)用器和多路分解器來執(zhí)行上下文切換的處理器的一個實施方案在下面結(jié)合圖3、4和5討論。當(dāng)上下文切換發(fā)生時,與下一個處理器線程相關(guān)聯(lián)的指令被取指令單元104讀取。雖然流水線處理器結(jié)構(gòu)100的流水線級(例如,流水線級IF、ID、IS、EX、MEM、WB)可以包含與兩個或更多個處理器線程相關(guān)聯(lián)的指令,但與每個給定處理器線程相關(guān)聯(lián)的數(shù)據(jù)通過寄存器文件110被分別保存,因而與每個處理器線程相關(guān)的數(shù)據(jù)的完整性得以保持。與需要中斷服務(wù)例程的常規(guī)流水線處理器不同,可編程線程分配控制器118沒有與執(zhí)行上下文切換相關(guān)聯(lián)的任何中斷開銷。
圖2示出了通過流水線處理器結(jié)構(gòu)(例如,流水線處理器結(jié)構(gòu)100)處理處理器線程的一種方法200。接收輸入(步驟202),該輸入確定了分配給多個處理器線程中每個線程的處理器時間部分。在一個實施方案中,來自用戶的輸入分配是通過圖形用戶界面被接收的。分配給每個處理器線程的處理器時間可以被存儲在可編程線程分配控制器(例如,可編程線程分配控制器118)中。在一個實施方案中,處理器時間是基于CPU(中央處理器)周期、時鐘周期和/或指令周期分配的。
每個線程根據(jù)分配給每個線程的處理器時間被流水線處理器處理(步驟204)。在一個實施方案中,上下文切換根據(jù)存儲在所述可編程線程分配控制器中的、分配給每個線程的處理器時間而自動發(fā)生。在一個實施方案中,可編程線程分配控制器控制一個或多個多路復(fù)用器和/或多路分解器的切換,所述多路復(fù)用器和/或多路分解器與取指令單元(例如取指令單元104)通信。在一個實施方案中,可編程線程分配控制器控制一個或多個多路復(fù)用器和/或多路分解器的切換來進行上下文切換,所述多路復(fù)用器和/或多路分解器定位在流水線處理器的每個流水線級之前和之后,如以下更詳細地討論的那樣。在這個實施方案中,處理器線程的狀態(tài)被存入寄存器并從寄存器載入,這些寄存器位于流水線處理器中每個流水線級之前和之后。在一個實施方案中,上下文切換發(fā)生在給定指令周期的結(jié)尾或結(jié)束。
作出(例如通過可編程線程分配控制器118)是否接收了動態(tài)改變處理器時間分配的輸入的決定(步驟206)。如果分配給每個處理器線程的處理器時間沒有被動態(tài)地改變,那么根據(jù)先前確立的處理器時間分配來處理每個處理器線程,方法200返回到步驟204。如果處理器時間分配已經(jīng)被動態(tài)地改變,那么每個處理器線程就根據(jù)改變的處理器時間分配被處理(步驟208)。步驟208之后,方法200返回到步驟206,如以上討論的那樣。
圖3示出了一種流水線處理器300的框圖,該處理器300根據(jù)流水線處理器結(jié)構(gòu)100而構(gòu)造,能處理(n)個處理器線程T1、T2...Tn。在一個實施方案中,流水線處理器300包括取指令單元304、譯碼器306、寄存器文件308、發(fā)令邏輯310、兩級執(zhí)行單元312、重排序緩沖器314、和可編程線程分配控制器316。流水線處理器300進一步包括分別對應(yīng)于處理器線程T1、T2...Tn的寄存器T1-Tn和程序計數(shù)器T1-Tn。流水線處理器300進一步包括多路復(fù)用器350。
在一個實施方案中,在取指令(IF)級中,取指令單元304從,例如指令高速緩沖存儲器302,檢索將被執(zhí)行的指令。取指令單元304根據(jù)程序計數(shù)器T1、T2...Tn檢索指令。在一個實施方案中,程序計數(shù)器T1指示處理器線程T1的執(zhí)行狀態(tài)(即,相對于與處理器線程T1相關(guān)聯(lián)的指令序列,流水線處理器300的位置),程序計數(shù)器T2指示與處理器線程T2相關(guān)聯(lián)的執(zhí)行狀態(tài),程序計數(shù)器Tn指示與處理器線程Tn相關(guān)聯(lián)的執(zhí)行狀態(tài)。
在譯碼指令的級(ID)中,由取指令單元304檢索的指令被譯碼。
在發(fā)出指令級(IS)中,在一個實施方案中,譯碼后的指令被發(fā)送到重排序緩沖器314(通過發(fā)令邏輯310)。重排序緩沖器314存儲譯碼后的指令直到譯碼后的指令被發(fā)送用于執(zhí)行。在一個實施方案中,重排序緩沖器314是循環(huán)緩沖器。
重排序緩沖器314也可以存儲執(zhí)行指令的結(jié)果,直到執(zhí)行的指令準(zhǔn)備退出,例如,退到寄存器文件308內(nèi)。在一個實施方案中,寄存器文件308包括存儲體(例如,存儲體T1、T2...Tn),這些存儲體對應(yīng)于被處理器300處理的每個處理器線程(例如,處理器線程T1、T2...Tn)。存儲體T1保存與處理器線程T1相關(guān)聯(lián)的數(shù)據(jù),存儲體T2保存與處理器線程T2相關(guān)聯(lián)的數(shù)據(jù),存儲體Tn保存與處理器線程Tn相關(guān)聯(lián)的數(shù)據(jù)。數(shù)據(jù)可以包括與給定處理器線程相關(guān)聯(lián)的執(zhí)行指令的操作數(shù)和/或結(jié)果。在一個實施方案中,流水線處理器300不包括重排序緩沖器314。
在執(zhí)行級EX1、EX2中,執(zhí)行單元312執(zhí)行從發(fā)令邏輯310發(fā)送的譯碼指令。執(zhí)行單元312可以是任何類型的執(zhí)行單元,如以上討論的那樣。雖然所示的執(zhí)行單元312具有兩個流水線級,但執(zhí)行單元312可以具有不同數(shù)量的流水線級。在一個實施方案中,執(zhí)行指令的結(jié)果被回寫到重排序緩沖器314,然后退到寄存器文件308。
可編程線程分配控制器316可以被編程從而存儲針對每個處理器線程T1、T2...Tn的處理器時間分配,即,多少處理器時間將專用于每個處理器線程T1、T2...Tn。在一個實施方案中,例如來自用戶的輸入通過圖形用戶界面(未示出)被接收,該輸入為每個處理器線程T1、T2...Tn分配部分處理器時間。在一個實施方案中,每個處理器線程T1、T2...Tn的處理器時間分配可以被用戶動態(tài)地改變。在一個實施方案中,每個處理器線程T1、T2...Tn的處理器時間分配通過由處理器300正處理的軟件應(yīng)用被動態(tài)地改變。
在一個實施方案中,通過切換與取指令單元304通信的多路復(fù)用器350,可編程線程分配控制器316自動地執(zhí)行處理器線程T1、T2...Tn之間的上下文切換。例如,在流水線處理器300正在處理處理器線程T1的時間期間,多路復(fù)用器350被控制以將與處理器線程T1相關(guān)聯(lián)的指令傳遞通過流水線處理器300的流水線級。當(dāng)從處理器線程T1發(fā)生上下文切換時,多路復(fù)用器350被控制以傳遞通過與另一處理器線程,例如,處理器線程T2,相關(guān)聯(lián)的指令。在一個實施方案中,多路復(fù)用器350是n-對-1的多路復(fù)用器。
在一個實施方案中,可編程線程分配控制器316包括多個線程分配計數(shù)器(例如,線程分配計數(shù)器T1-Tn),這些計數(shù)器確定對應(yīng)于分配給每個處理器線程的處理器時間的加權(quán)。例如,在一個實施方案中,線程分配計數(shù)器T1-Tn中的每個計數(shù)器都包含一數(shù)值,該數(shù)值代表多少CPU周期被分配給每個線程。例如,如果線程分配計數(shù)器T1包含的數(shù)值為256,線程分配計數(shù)器T2包含的數(shù)值為16,而線程分配計數(shù)器Tn包含的數(shù)值為零,那么首先從處理器線程T1取出的指令用于256個CPU周期,然后從處理器線程T2取出的指令用于16個CPU周期,而從處理器線程Tn取出零個指令。然后從處理器線程T1和T2取出的指令重新分別用于另外256個CPU周期和16個CPU周期,如此等等。取指令可以這樣繼續(xù)直到一個或多個線程分配計數(shù)器內(nèi)的數(shù)值被改變。隨著每個線程分配計數(shù)器T1-Tn達到零值,可編程線程分配計數(shù)器316切換多路復(fù)用器350以將與下一個處理器線程相關(guān)聯(lián)的指令傳遞給取指令單元304用于處理。
圖4是一種流水線處理器結(jié)構(gòu)400的框圖,該結(jié)構(gòu)可運行以處理兩個或多個處理器線程T1、T2...Tn。與處理器線程T1、T2...Tn相關(guān)的指令可以從,例如,指令高速緩沖存儲器(例如,指令高速緩沖存儲器402)檢索。
在一個實施方案中,流水線處理器結(jié)構(gòu)400包括六個流水線級。這六個流水線級包括取指令級(IF)、譯碼指令級(ID)、發(fā)出指令級(IS)、執(zhí)行指令級(EX)、讀數(shù)據(jù)存儲器級(MEM)、和回寫級(WB)。然而流水線處理器結(jié)構(gòu)400可以包括不同數(shù)量的流水線級。流水線處理器結(jié)構(gòu)400進一步包括取指令單元(IFU)404、譯碼邏輯406、發(fā)令邏輯408、執(zhí)行單元410、讀邏輯412、寫邏輯414、和可編程線程分配控制器416。流水線處理器結(jié)構(gòu)400類似于圖1的流水線處理器結(jié)構(gòu),然而,流水線處理器結(jié)構(gòu)400進一步包括位于每個流水線級(在每個級之前和之后的一個)之間的一組寄存器(例如,寄存器A1-A7、B1-B7、N1-N7)用于在上下文切換期間存儲對應(yīng)的處理器線程T1、T2...Tn的狀態(tài)。
寄存器A1-A7存儲處理器線程T1的狀態(tài)。以類似的方式,寄存器B1-B7存儲處理器線程T2的狀態(tài),而寄存器N1-N7儲存處理器線程Tn的狀態(tài)。在一個實施方案中,每個寄存器A1-A7、B1-B7、N1-N7存儲對應(yīng)的處理器線程的狀態(tài),包括存儲流水線處理器結(jié)構(gòu)400的對應(yīng)的流水線級在給定指令周期的結(jié)尾產(chǎn)生的數(shù)據(jù)的狀態(tài)。例如,當(dāng)處理與處理器線程T1相關(guān)的指令時,在指令周期的結(jié)尾,寄存器A3可以存儲從譯碼邏輯406接收的用于處理器線程T1的數(shù)據(jù)的狀態(tài),而寄存器A5可以存儲從執(zhí)行單元410接收的數(shù)據(jù)的狀態(tài)。寄存器A1-A7、B1-B7、N1-N7之所以有助于上下文切換,是因為它們允許對應(yīng)的處理器線程的狀態(tài)直接從給定的寄存器載入(或存儲到給定的寄存器)。在一個實施方案中,每組寄存器A1-A7、B1-B7、N1-N7的位置相對靠近流水線處理器結(jié)構(gòu)400內(nèi)的功能單元(例如,在每個流水線級之間),從而允許快速的上下文切換時間。
在一個實施方案中,可編程線程分配控制器416通過切換位于每個流水線級(例如,流水線級IF、ID、IS、EX、MEM、WB)之前和之后的一個或多個多路復(fù)用器和/或多路分解器(未示出),來自動地執(zhí)行上下文切換。包括多路復(fù)用器和多路分解器以執(zhí)行上下文切換的處理器的一個實施方案在下面將會結(jié)合圖5進行討論。當(dāng)上下文切換發(fā)生時,與從其要發(fā)生上下文切換的當(dāng)前處理器線程(例如,處理器線程T1)相關(guān)聯(lián)的一組寄存器(例如,寄存器A1-A7)存儲當(dāng)前處理器線程的狀態(tài)。為了完成上下文切換,將來自與下一個處理器線程相關(guān)聯(lián)的一組不同的寄存器(例如,寄存器B1-B7)的下一個處理器線程(例如,處理器線程T2)的狀態(tài)載入。流水線處理器在接下來的指令周期內(nèi)處理下一個處理器線程。在一個實施方案中,上下文切換發(fā)生在指令周期的結(jié)尾(即,在來自流水線級的數(shù)據(jù)已經(jīng)被存到相關(guān)的寄存器后)從而允許無縫上下文切換。
圖5示出流水線處理器500的框圖,處理器500根據(jù)流水線處理器結(jié)構(gòu)400構(gòu)造,能夠處理兩個線程T1、T2。在一個實施方案中,流水線處理器500包括取指令單元504、譯碼器506、寄存器文件508、發(fā)令邏輯510、兩級執(zhí)行單元512、重排序緩沖器514、和可編程線程分配控制器516。流水線處理器500進一步包括對應(yīng)于處理器線程T1的第一組寄存器A1-A6,和對應(yīng)于處理器線程T2的第二組寄存器B1-B6。流水線處理器500進一步包括程序計數(shù)器T1、T2、多路復(fù)用器550、和多路分解器552。
在一個實施方案中,在取指令(IF)級,取指令單元504從,例如指令高速緩沖存儲器502,檢索將被執(zhí)行的指令。取指令單元504根據(jù)程序計數(shù)器T1、T2檢索指令。在一個實施方案中,程序計數(shù)器T1指示處理器線程T1的執(zhí)行狀態(tài)(即,相對于與處理器線程T1相關(guān)聯(lián)的指令序列,流水線處理器500的位置),程序計數(shù)器T2指示與處理器線程T2相關(guān)聯(lián)的執(zhí)行狀態(tài)。
在譯碼指令級(ID)中,由取指令單元504檢索的指令被譯碼。
在發(fā)出指令級(IS)中,在一個實施方案中,譯碼后的指令被發(fā)送到重排序緩沖器514(通過發(fā)令邏輯510)。重排序緩沖器514存儲譯碼后的指令直到譯碼后的指令被發(fā)送用于執(zhí)行。在一個實施方案中,重排序緩沖器514是循環(huán)緩沖器。
重排序緩沖器514也可以存儲執(zhí)行指令的結(jié)果,直到執(zhí)行的指令準(zhǔn)備退出,例如,退到寄存器文件508內(nèi)。在一個實施方案中,寄存器文件508包括兩個存儲體T1、T2。存儲體T1保存與處理器線程T1相關(guān)聯(lián)的數(shù)據(jù),存儲體T2保存與處理器線程T2相關(guān)聯(lián)的數(shù)據(jù)。寄存器文件508可包括線程索引(未示出)以指示將從哪個寄存器載入數(shù)據(jù)。線程索引確保來自與當(dāng)前執(zhí)行的處理器線程相關(guān)的寄存器的數(shù)據(jù)被載入到寄存器文件508內(nèi)。
在執(zhí)行級EX1、EX2中,執(zhí)行單元512執(zhí)行從發(fā)令邏輯510發(fā)送的譯碼后的指令。執(zhí)行單元512可以是任何類型的執(zhí)行單元,如以上討論的那樣。雖然所示的執(zhí)行單元512具有兩個流水線級,但執(zhí)行單元512可以具有不同數(shù)量的流水線級。在一個實施方案中,執(zhí)行指令的結(jié)果被回寫到重排序緩沖器514,然后退到寄存器文件508。
可編程線程分配控制器516可以被編程從而存儲針對每個處理器線程T1、T2的處理器時間分配。在一個實施方案中,可編程線程分配控制器516通過切換分別位于流水線處理器500的每個流水線級(例如,流水線級IF、ID、IS、EX1、EX2)之前和之后的多路復(fù)用器550和多路分解器552,來自動執(zhí)行處理器線程T1、T2之間的上下文切換。例如,當(dāng)流水線處理器500正在處理處理器線程T1時,多路復(fù)用器550和多路分解器552被控制以傳遞與處理器線程T1相關(guān)聯(lián)的指令(通過流水線處理器500的流水線級)。處理器線程T2的狀態(tài)信息被存儲在寄存器B1-B6中。當(dāng)從處理器線程T1發(fā)生上下文切換時,寄存器A1-A6存儲處理器線程T1的狀態(tài),來自寄存器B1-B6的處理器線程T2的狀態(tài)被載入(通過多路復(fù)用器550和多路分解器552)并被流水線處理器500處理。在一個實施方案中,每個多路復(fù)用器550是2-對-1的多路復(fù)用器,而每個多路分解器552是1-對-2的多路分解器。
異常處理 當(dāng)根據(jù)流水線處理器結(jié)構(gòu)100、400構(gòu)造的處理器(例如,處理器300、500)檢測到異常時,正常的指令執(zhí)行順序被中止。異常就是引起正常程序執(zhí)行中止的事件。異常的種類包括,例如,尋址異常、數(shù)據(jù)異常、操作異常、溢出異常、保護異常、下溢異常等等。異??梢允怯捎布蜍浖a(chǎn)生的。
圖6示出了在根據(jù)流水線處理器結(jié)構(gòu)100、400實施的處理器中執(zhí)行異常處理的一種方法。當(dāng)正在執(zhí)行給定線程的指令i時發(fā)生異常請求(步驟602)。與處理器流水線內(nèi)當(dāng)前指令的狀態(tài)一起,與每個處理器線程相關(guān)聯(lián)的程序計數(shù)器的值被保存(步驟604)。在一個實施方案中,處理器流水線內(nèi)所有的指令被終止或刷新。處理器跳轉(zhuǎn)到與給定線程相關(guān)的異常處理例程(步驟606)。在一個實施方案中,每個處理器線程都有相關(guān)的異常處理例程,該異常處理例程是分離的并獨立于與其它處理器線程相關(guān)的異常處理例程。在一個實施方案中,單個異常處理例程執(zhí)行針對幾乎所有的處理器線程的異常請求。
異常請求是由給定的異常處理例程執(zhí)行的(步驟608)。處理器已經(jīng)執(zhí)行異常請求后,程序計數(shù)器的值在處理器的程序計數(shù)器內(nèi)被恢復(fù),(異常請求之前的)指令的狀態(tài)在處理器的流水線內(nèi)被恢復(fù)(步驟610)。從異常處理例程返回后,處理器繼續(xù)下一條指令(例如,指令i+1)的程序執(zhí)行(步驟612)。在步驟612,如果指令要被重新執(zhí)行處理器就恢復(fù)在指令i處的程序指令。
中斷處理 根據(jù)流水線處理器結(jié)構(gòu)100、400實施的處理器中的中斷以類似于異常處理的方式被處理。圖7示出了在根據(jù)流水線處理器結(jié)構(gòu)100、400實施的處理器中處理中斷的一種方法。
當(dāng)正在執(zhí)行給定的線程的指令i時發(fā)生中斷(步驟702)。連同處理器流水線內(nèi)當(dāng)前指令的狀態(tài),與每個處理器線程相關(guān)聯(lián)的程序計數(shù)器的值被保存(步驟704)。處理器跳轉(zhuǎn)到與給定線程相關(guān)的中斷處理例程(步驟706)。在一個實施方案中,每個處理器線程都有相關(guān)的中斷處理例程,該中斷處理例程的入口點是分離的并獨立于與其它處理器線程相關(guān)的中斷處理例程。入口點是中斷處理例程的開始地址。在一個實施方案中,單個中斷處理例程(具有單個入口點)執(zhí)行針對幾乎所有的處理器線程的中斷。
中斷是由給定的中斷處理例程執(zhí)行的(步驟708)。處理器已經(jīng)執(zhí)行中斷后,程序計數(shù)器的值在處理器的程序計數(shù)器內(nèi)被恢復(fù),(中斷請求之前的)指令的狀態(tài)在處理器的流水線內(nèi)被恢復(fù)(步驟710)。從中斷處理例程返回后處理器繼續(xù)下一條指令(例如,指令i+1)的程序執(zhí)行(步驟712)。
根據(jù)流水線處理器結(jié)構(gòu)100、400構(gòu)造的流水線處理器可以用于廣泛的應(yīng)用中。實例性的應(yīng)用包括數(shù)據(jù)存儲應(yīng)用、無線應(yīng)用、和計算機系統(tǒng)應(yīng)用。
已經(jīng)描述了若干實施方式。但是,應(yīng)該理解的是可以在不背離本發(fā)明的精神和范圍的前提下進行各種改進。例如,上述的方法的步驟可以以不同的順序來執(zhí)行而仍能獲得所需的結(jié)果。因此,其它的實施方式仍然在所附的權(quán)利要求的保護范圍內(nèi)。
權(quán)利要求
1.一種處理器,包括流水線級,該流水線級包括,第一輸入寄存器,第二輸入寄存器,第一輸出寄存器,第二輸出寄存器;第一選擇器,其與所述第一輸入寄存器和所述第二輸入寄存器通信;第二選擇器,其與所述第一輸出寄存器和所述第二輸出寄存器通信;和控制器,該控制器可運行以控制所述第一和第二選擇器的切換,以使在正在處理第一處理器線程的時間期間,與第一處理器線程相關(guān)聯(lián)的數(shù)據(jù)傳遞通過所述第一輸入寄存器、所述流水線級、和所述第一輸出寄存器,而在正在處理第二處理器線程的時間期間,與第二處理器線程相關(guān)聯(lián)的數(shù)據(jù)傳遞通過所述第二輸入寄存器、所述流水線級、和所述第二輸出寄存器,其中所述第一輸入寄存器和所述第一輸出寄存器可運行以存儲所述第一處理器線程的狀態(tài),而且所述第二輸入寄存器和所述第二輸出寄存器可運行以存儲第二處理器線程的狀態(tài)。
2.如權(quán)利要求1所述的處理器,其中所述控制器基于確定分配到所述第一和第二處理器線程的每個線程的處理器時間的輸入,來控制所述第一和第二選擇器的切換。
3.如權(quán)利要求1所述的處理器,進一步包括第一中斷處理例程,其處理與所述第一處理器線程相關(guān)聯(lián)的中斷請求;和第二中斷處理例程,其處理與所述第二處理器線程相關(guān)聯(lián)的中斷請求。
4.如權(quán)利要求3所述的處理器,其中所述第一中斷處理例程和所述第二處理例程具有各自的入口點。
5.如權(quán)利要求1所述的處理器,進一步包括第一異常處理例程,其處理與所述第一處理器線程相關(guān)聯(lián)的異常請求;和第二異常處理例程,其處理與所述第二處理器線程相關(guān)聯(lián)的異常請求。
6.如權(quán)利要求1所述的處理器,進一步包括單個異常處理例程或單個中斷處理例程,它們分別處理與所述第一和第二處理器線程都相關(guān)聯(lián)的幾乎所有的異常請求或幾乎所有的中斷請求。
7.如權(quán)利要求1所述的處理器,進一步包括一組寄存器,其對應(yīng)于多個處理器線程中的每個線程,所述多個處理器線程包括所述第一處理器線程和所述第二處理器線程,組中的每個寄存器可以位于所述處理器的流水線級之前或之后;和其中所述控制器包括可編程控制器,該控制器可運行以在所述多個處理器線程之間執(zhí)行上下文切換,包括在對應(yīng)的寄存器組中存儲當(dāng)前執(zhí)行的處理器線程的狀態(tài),和將來自對應(yīng)的寄存器組的另一處理器線程的狀態(tài)載入以允許處理另一處理器線程。
8.如權(quán)利要求7所述的處理器,進一步包括寄存器文件,該寄存器文件包括對應(yīng)于所述多個處理器線程中每個線程的多個存儲體,每個存儲體可存儲與對應(yīng)的處理器線程相關(guān)聯(lián)的數(shù)據(jù)。
9.如權(quán)利要求7所述的處理器,進一步包括多個程序計數(shù)器,每個程序計數(shù)器可運行以指示對應(yīng)的處理器線程的執(zhí)行狀態(tài)。
10.如權(quán)利要求1所述的處理器,進一步包括取指令單元,該單元可運行以取出與多個處理器線程相關(guān)聯(lián)的指令,所述多個處理器線程包括所述第一處理器線程和所述第二處理器線程;譯碼器,其響應(yīng)于所述取指令單元;發(fā)令邏輯,其響應(yīng)于所述譯碼器;和寄存器文件,其包括對應(yīng)于所述多個處理器線程的多個存儲體,每個存儲體可運行從而只存儲與對應(yīng)的處理器線程相關(guān)聯(lián)的數(shù)據(jù)。
11.如權(quán)利要求10所述的處理器,其中所述數(shù)據(jù)包括與給定處理器線程相關(guān)聯(lián)的執(zhí)行指令的操作數(shù)或結(jié)果。
12.如權(quán)利要求10所述的處理器,進一步包括與所述取指令單元通信的控制器,所述控制器可以確定由所述取指令單元從其中讀取下一個指令的處理器線程。
13.如權(quán)利要求10所述的處理器,進一步包括一組寄存器,其對應(yīng)于所述多個處理器線程的每個線程,組中的每個寄存器可以位于所述處理器的流水線級之前或之后,其中所述控制器可以在所述多個處理器線程之間執(zhí)行上下文切換,包括在對應(yīng)的寄存器組中存儲當(dāng)前執(zhí)行的處理器線程的狀態(tài),和將來自對應(yīng)的寄存器組的另一處理器線程的狀態(tài)載入以允許處理另一處理器線程。
14.如權(quán)利要求10所述的處理器,其中所述控制器可包括對應(yīng)于所述多個處理器線程的多個線程分配計數(shù)器,每個線程分配計數(shù)器可包含一個數(shù)值,該數(shù)值代表有多少處理器時間要分配給各自的處理器線程。
15.如權(quán)利要求10所述的處理器,其中所述控制器可執(zhí)行上下文切換,其包括切換與所述取指令單元通信的選擇器。
16.如權(quán)利要求15所述的處理器,其中所述控制器可以在執(zhí)行程序期間,動態(tài)地控制與所述取指令單元通信的所述選擇器的切換。
17.如權(quán)利要求15所述的處理器,其中所述控制器可以基于先前確定的針對所述多個處理器線程的每個線程的處理器時間分配,靜態(tài)地控制與所述取指令單元通信的所述選擇器的切換。
18.一種方法,包括提供用于指令執(zhí)行的第一處理器線程;提供用于指令執(zhí)行的第二處理器線程;處理所述第一處理器線程;和執(zhí)行從所述第一處理器線程到所述第二處理器線程的上下文切換,執(zhí)行上下文切換包括,在對應(yīng)于所述第一處理器線程的第一組寄存器內(nèi)存儲所述第一處理器線程的狀態(tài);和將來自對應(yīng)于所述第二處理器線程的第二組寄存器的、所述第二處理器線程的狀態(tài)載入。
19.如權(quán)利要求18所述的方法,其中在對應(yīng)的寄存器組內(nèi)存儲給定處理器線程的狀態(tài)包括存儲對應(yīng)于處理器流水線級的數(shù)據(jù)。
20.如權(quán)利要求18所述的方法,進一步包括接收改變所述處理器時間分配的輸入;和基于改變的處理器時間分配在所述第一和第二處理器線程之間執(zhí)行上下文切換。
21.如權(quán)利要求18所述的方法,其中執(zhí)行上下文切換包括在執(zhí)行程序期間,動態(tài)地執(zhí)行上下文切換。
22.如權(quán)利要求18所述的方法,其中執(zhí)行上下文切換包括基于先前確定的針對所述第一和第二處理器線程的每個線程的處理器時間分配,靜態(tài)地執(zhí)行上下文切換。
23.如權(quán)利要求18所述的方法,其中執(zhí)行上下文切換包括在指令周期的結(jié)尾執(zhí)行上下文切換。
24.如權(quán)利要求18所述的方法,進一步包括在寄存器文件的對應(yīng)的存儲體中存儲與給定處理器線程相關(guān)聯(lián)的數(shù)據(jù)。
25.如權(quán)利要求18所述的方法,進一步包括指示對應(yīng)的處理器線程的執(zhí)行狀態(tài)。
26.如權(quán)利要求18所述的方法,進一步包括讀取與多個處理器線程相關(guān)的指令,所述多個處理器線程包括第一處理器線程和所述第二處理器線程;譯碼所述指令;將所述指令發(fā)送到執(zhí)行單元;和將與給定處理器線程的發(fā)送的指令相關(guān)的數(shù)據(jù)存儲到寄存器文件的對應(yīng)的存儲體中,其中每個存儲體只存儲與對應(yīng)的處理器線程相關(guān)聯(lián)的數(shù)據(jù)。
27.如權(quán)利要求26所述的方法,進一步包括確定從其中讀取下一條指令的處理器線程。
全文摘要
本發(fā)明提供了一種流水線處理器架構(gòu)或結(jié)構(gòu)、處理器、和方法。在一個實施方案中,所提供的處理器包括取指令單元,該單元可運行以取出與多個處理器線程相關(guān)聯(lián)的指令;響應(yīng)于所述取指令單元的譯碼器;響應(yīng)于所述譯碼器的發(fā)令邏輯;和寄存器文件,該寄存器文件包括對應(yīng)于所述多個處理器線程的多個存儲體(bank)。每個存儲體可運行從而存儲與對應(yīng)的處理器線程相關(guān)聯(lián)的數(shù)據(jù)。所述處理器可包括對應(yīng)于多個處理器線程中每個線程的一組寄存器。組中的每個寄存器可以位于所述處理器的流水線級之前或之后。
文檔編號G06F9/38GK1841314SQ20061006533
公開日2006年10月4日 申請日期2006年3月17日 優(yōu)先權(quán)日2005年3月18日
發(fā)明者H-Y·陳, S·蘇塔迪亞 申請人:馬維爾國際貿(mào)易有限公司