亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

具有用于增進(jìn)流水線使用效率的優(yōu)化線程調(diào)度器的多線程微處理器的制作方法

文檔序號:6566552閱讀:142來源:國知局

專利名稱::具有用于增進(jìn)流水線使用效率的優(yōu)化線程調(diào)度器的多線程微處理器的制作方法具有用于增進(jìn)流水線使用效率的優(yōu)化線程調(diào)度器的多線程微處理器與本發(fā)明互相參照的相關(guān)申請案[OOOl]本申請案和下列同時申請的待審美國專利申請案有關(guān),將這些申請案整體引入用于所有目的。序號(案號)申請曰期標(biāo)題(MIPS.0199-00-US)多線程微處理器中的二分化線程調(diào)度器(MIPS,0200獸US)多線程微處理器中的漏水桶線程調(diào)度器(MIPS扁1-01-US)包含具有根據(jù)指令停頓可能性預(yù)測的線程調(diào)度器的多線程微處理器(MIPS.0202-00-US)多線程微處理器中的指令/滑動緩沖器
技術(shù)領(lǐng)域
本發(fā)明關(guān)于一種多線程處理器的技術(shù)范疇,特別是執(zhí)行多線程時的指令發(fā)出調(diào)度。技術(shù)背景微處理器的設(shè)計者使用了許多技巧來增加微處理器的性能。大多數(shù)微處理器在固定頻率的時鐘信號下操作。微處理器中的各個電路在每一時鐘周期執(zhí)行各自的功能。根據(jù)漢尼斯與帕特森(請參閱計算機結(jié)構(gòu)一種定量描述,第三版),微處理器的性能根據(jù)執(zhí)行---個程序或多個程序所需的時間來衡量。在此觀點下,微處理器的性能取決于其時鐘頻率、執(zhí)行一個程序所需的平均時鐘周期數(shù)目(或是每一個時鐘周期所執(zhí)行的平均指令數(shù)目)、以及一個程序或多個程序中所執(zhí)行的指令數(shù)目。半導(dǎo)體科學(xué)家以及工程師,主要是通過減少晶體管大小,其導(dǎo)致更快的切換時間,不斷地使微處理器能夠在更快的時鐘頻率下運行。能夠執(zhí)行的指令數(shù)H很大程度上由程序中欲執(zhí)行的任務(wù)所限制,但是也會被微處理器的指令集結(jié)構(gòu)所影響。可通過結(jié)構(gòu)或組織機制的改變以大幅度提高性能,即改善每一時鐘周期所能執(zhí)行的指令數(shù),特別是利用平行處理機制。—種能改善每一時鐘周期所能執(zhí)行的指令數(shù)以及時鐘頻率的平行處理機制為流水線化微處理器,其使多個指令在微處理器各流水線階段中重迭地執(zhí)行。在理想的情況下,流水線中的指令在每一時鐘周期均向下一階段移動,其對指令執(zhí)行一個不同的功能。因此,雖然每--個指令需要多個時鐘周期才能完成,但是因為各個指令的多個周期互相重迭,所以每一指令所需的平均時鐘會減少。此種流水線化微處理器的性能可以視程序中指令容許的程度來改善其性能,即,在一個指令不需要依靠其前端指令就能執(zhí)行的程度下,可以與其前端指令平行地執(zhí)行,此稱之為指令級平行化。另一種指令級平行化也可以是微處理器同時在一個時鐘周期中發(fā)出多個執(zhí)行指令,通常稱之為超標(biāo)量微處理器。前述所討論的僅是單一指令級的平行處理機制,然而,根據(jù)指令級平行化所能達(dá)成的性能改善是有限的。許多研究如何改善指令級平行機制限制的做法最近又重新興起,如采用指令塊、指令流、或指令流級的平行化,通常稱為線程級平行機制。線程只是程序指令的系列或流。多線程微處理器可根據(jù)一些多線程指令提取及執(zhí)行的調(diào)度原則,如交錯、阻塞或是同時多重線程的方式,同時執(zhí)行多個線程。多線程微處理器通??梢匀菰S多個線程同時分享微處理器中的一些功能單元(如指令提取及譯碼單元、高速緩存、分支預(yù)測單元、以及加載/儲存、整數(shù)處理、浮點處理、單一指令多數(shù)據(jù)(SIMD)單元等)。然而,多線程微處理器還包含多組的資源或上下文(context),以儲存每一線程的特殊狀態(tài),如多個程序計數(shù)器和通用目的寄存器組,以提供在不同線程快速切換以提取及發(fā)出指令的能力。多線程微處理器所解決性能限制問題的一個例子是,因為高速緩存失誤而必須存取微處理器外的內(nèi)存時通常需要一段相對長的時間。對當(dāng)代微處理器為基礎(chǔ)的計算機系統(tǒng)而言,內(nèi)存的存取時間通常是高速緩存命中存取時間的一至二個數(shù)量級倍數(shù)是十分常見的。依賴于高速緩存中的丟失數(shù)據(jù)的指令在流水線中停頓,等待來自內(nèi)存的數(shù)據(jù)。結(jié)果是,當(dāng)流水線停頓以等待數(shù)據(jù)自內(nèi)存取出時,單線程微處理器的一些或全部流水線階段空閑,不執(zhí)行任何有意義的工作達(dá)數(shù)個時鐘周期之久。而多線程微處理器則可以在此等待內(nèi)存提取的時間,發(fā)出其它線程的指令以解決此問題,因此,可以使流水線各階段繼續(xù)從事其它有意義的工作,這類似于操作系統(tǒng)在頁面錯誤時的任務(wù)切換,但更精細(xì)。其它的多線程微處理器所解決性能限制問題的例子可以是因為分支錯誤預(yù)測以及相隨的流水線清空、或是因為數(shù)據(jù)相關(guān)、或是因為如除法指令、浮點指令等長時間等待指令,而造成的流水線停頓以及其相隨的空閑周期。同樣的,多線程微處理器則可以在此等待時間,發(fā)出其它線程的指令至原本應(yīng)該空閑的流水線階段以解決此問題,因此,可以使多線程處理器大幅減少執(zhí)行包含多個線程的一個程序或多個程序所需的時間。另一個問題是,特別是在嵌入式系統(tǒng)中,當(dāng)中斷服務(wù)時所浪費的時間。當(dāng)輸入輸出組件發(fā)出中斷信號至微處理器時,此微處理器通常會切換至中斷服務(wù)程序,此時必須儲存程序當(dāng)前狀態(tài),服務(wù)該中斷需求,以及在中斷需求服務(wù)后重新回到程序當(dāng)前狀態(tài)。多線程微處理器具有提供自己線程的自行上下文事件服務(wù)程序代碼的能力。其結(jié)果是,多線程微處理器能夠在最短時間內(nèi),甚至是一個時鐘周期,就可以響應(yīng)輸入輸出組件的事件信號,然后切換回原本的事件,因此可以避免傳統(tǒng)方式所造成的長時間事件服務(wù)浪費o由上面敘述可以觀察到,處理器同時執(zhí)行多個線程,可以減少執(zhí)行包含多個線程的一個程序或多個程序的時間。特別是,當(dāng)一個線程停頓時,此多線程處理器可以從其它線程發(fā)出指令,以充分使用可利用的指令執(zhí)行帶寬。然而,在具有單一執(zhí)行流水線的微處理器中,如果此流水線為了一個線程停頓,則會造成全部的線程都會停頓。即使其它線程具有與此停頓線程無關(guān)的指令,由于該標(biāo)量流水線停頓,此微處理器仍會因為此流水線停頓所造成的其它線程的指令無法執(zhí)行而浪費了指令執(zhí)行帶寬。此外,即使是具有多個執(zhí)行流水線的處理器,此微處理器依舊會因為此停頓的流水線無法執(zhí)行其它線程的指令而浪費了指令執(zhí)行帶寬。因此,需要提供一種使多線程微處理器中的停頓執(zhí)行流水線能夠執(zhí)行其它未停頓線程的指令的裝置和方法。
發(fā)明內(nèi)容—方面,本發(fā)明提供一種可同時執(zhí)行多個線程的多線程處理器。此處理器包括執(zhí)行流水線,用于執(zhí)行多個線程的指令。此執(zhí)行流水線響應(yīng)于發(fā)給該執(zhí)行流水線的一個指令而偵測到停頓事件。此指令包含于被定義為停頓線程的該多個線程之一中。因為該停頓事件,該執(zhí)行流水線在沒有錯誤地執(zhí)行該停頓線程的情況下不能繼續(xù)執(zhí)行該指令。該執(zhí)行流水線還指示該停頓線程和該停頓事件。該執(zhí)行流水線還響應(yīng)于偵測到該停頓事件而清空該執(zhí)行流水線。這使該執(zhí)行流水線能夠在該清空后繼續(xù)執(zhí)行指令。此處理器還包括線程調(diào)度器,其耦接至該執(zhí)行流水線,響應(yīng)于該執(zhí)行流水線指示出該停頓線程而發(fā)出除了該停頓線程以外的多個線程的指令到該執(zhí)行流水線。本發(fā)明的一個優(yōu)點是,通過偵測該執(zhí)行流水線內(nèi)的停頓事件且從該執(zhí)行流水線清空該指令,以使其它線程的指令可以被派送到執(zhí)行流水線并且其中被執(zhí)行,此處理器可以通過避免因為執(zhí)行流水線停頓所產(chǎn)生的時鐘周期浪費,而更有效率地使用執(zhí)行流水線。[OOIO]—方面,本發(fā)明的執(zhí)行流水線區(qū)分停頓線程和其它線程的指令,且只清空停頓線程,而不會清空執(zhí)行流水線內(nèi)的所有線程。只需要清空停頓線程就可以使執(zhí)行流水線繼續(xù)執(zhí)行指令,即,避免停頓;通過只清空停頓線程,其它線程的指令仍可以在執(zhí)行流水線中繼續(xù)被執(zhí)行,這說明在大部分情況下只會產(chǎn)生少數(shù)流水線氣泡,且在某些情況下,通過清空導(dǎo)致停頓事件的指令僅會產(chǎn)生單一流水線氣泡。因此,具有可以更有效率地使用執(zhí)行流水線的優(yōu)點?!矫?,如果停頓線程為唯一的可執(zhí)行線程,則執(zhí)行流水線停頓而不是清空該停頓線程。^停頓事件終止后,執(zhí)行流水線重新開始執(zhí)行該指令。這比清空唯一的可執(zhí)行線程且再重新派送被清空指令的方式更有效率。另一方面,當(dāng)此唯一的可執(zhí)行線程停頓時,如果有其它線程變成可執(zhí)行,則執(zhí)行流水線清空此停頓線程。--方面,處理器還包括滑動緩沖器,被清空的指令返回到該滑動緩沖器,使得響應(yīng)于該停頓事件不需要清空處理器流水線的指令提取部分,而只需要清空執(zhí)行流水線。因此,當(dāng)停頓事件終止時,調(diào)度器可以立刻開始派送此線程的指令,而不需要重新提取被清空的指令。另一方面,本發(fā)明提供一種在具有執(zhí)行流水線和線程調(diào)度器的多線程處理器中用于增加執(zhí)行流水線的使用效率的方法,此線程調(diào)度器用于調(diào)度在處理器上同時執(zhí)行的多個線程的指令派送。該方法包括響應(yīng)于派送到執(zhí)行流水線的一個指令而偵測到停頓事件,并且響應(yīng)于偵測到停頓事件而指示該停頓事件和停頓線程。該指令包括在定義為停頓線程的多個線程之一中。由于該停頓事件,執(zhí)行流水線在沒有錯誤地執(zhí)行停頓線程的情況下不能繼續(xù)執(zhí)行該指令。該方法還包括響應(yīng)于偵測到停頓事件而清空執(zhí)行流水線,以及響應(yīng)于所述清空而繼續(xù)執(zhí)行指令。該方法還包括響應(yīng)于執(zhí)行流水線指示出停頓線程,而派送除了停頓線程以外的多個線程的指令至執(zhí)行流水線。另一方面,本發(fā)明提供一種與計算設(shè)備一起使用的計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括計算機可用介質(zhì),具有包含于所述介質(zhì)中的計算機可讀程序代碼,用于實現(xiàn)多線程處理器,該多線程處理器被配置為同時執(zhí)行多個線程。該計算機可讀程序代碼包括第一和第二程序代碼。第一程序代碼提供執(zhí)行流水線,該執(zhí)行流水線用于執(zhí)行多個線程的指令。該執(zhí)行流水線響應(yīng)于發(fā)至該執(zhí)行流水線的一個指令而偵測到停頓事件。該指令包括在被定義為停頓線程的多個線程之一中。由于該停頓事件,執(zhí)行流水線在沒有錯誤地執(zhí)行停頓線程的情況下不能繼續(xù)執(zhí)行該指令。該執(zhí)行流水線還指示該停頓事件和停頓線程。該執(zhí)行流水線還響應(yīng)于偵測到停頓事件,清空該執(zhí)行流水線。這使該執(zhí)行流水線能夠在清空后繼續(xù)執(zhí)行指令。第二程序代碼提供耦接至執(zhí)行流水線的線程調(diào)度器,其響應(yīng)于執(zhí)行流水線指示出停頓線程,而發(fā)出除了停頓線程以外的多個線程的指令至執(zhí)行流水線。另一方面,本發(fā)明提供一種包含于傳輸介質(zhì)內(nèi)的計算機數(shù)據(jù)信號,包括計算機可讀程序代碼,用于提供多線程處理器,該多線程處理器被配置為同時執(zhí)行多個執(zhí)行線程。該程序代碼包括第一和第二程序代碼。第一程序代碼提供執(zhí)行流水線,該執(zhí)行流水線用于執(zhí)行多個線程的指令。該執(zhí)行流水線響應(yīng)于發(fā)至該執(zhí)行流水線的一個指令而偵測到停頓事件。該指令包括在被定義為停頓線程的多個線程之一中。由于該停頓事件,執(zhí)行流水線在沒有錯誤地執(zhí)行停頓線程的情況下不能繼續(xù)執(zhí)行該指令。該執(zhí)行流水線還指示該停頓事件和停頓線程。該執(zhí)行流水線還響應(yīng)于偵測到停頓事件,清空該執(zhí)行流水線。這使該執(zhí)行流水線能夠在清空后繼續(xù)執(zhí)行指令。第二程序代碼提供耦接至執(zhí)行流水線的線程調(diào)度器,其響應(yīng)于執(zhí)行流水線指示出停頓線程,而發(fā)出除了停頓線程以外的多個線程的指令至執(zhí)行流水線。圖1為根據(jù)本發(fā)明的流水線化多線程微處理器的方塊圖。圖2為根據(jù)圖1的本發(fā)明微處理器的一部份的方塊圖,特別是,顯示根據(jù)本發(fā)明一個實施例的指令/滑動(skid)緩沖器。[OOIS]圖3為根據(jù)圖2的本發(fā)明指令/滑動緩沖器的一個方塊圖,顯示如圖2例示的指令/滑動緩沖器,及其相關(guān)的控制邏輯。圖4為根據(jù)本發(fā)明實施例中如圖3中指令/滑動緩沖器例示操作的四個流程圖。圖5為根據(jù)本發(fā)明實施例圖1中的微處理器將停頓的線程上下文清空的操作,以改善執(zhí)行使用帶寬的流程圖。圖6為根據(jù)本發(fā)明實施例圖1中的微處理器內(nèi)的調(diào)度器的方塊圖,此調(diào)度器分為兩部分。圖7為根據(jù)本發(fā)明實施例圖6中的派送調(diào)度器以及圖2中的指令選擇邏輯的更具體細(xì)節(jié)的方塊圖。圖8為根據(jù)本發(fā)明圖7實施例中的派送調(diào)度器的操作流程圖。圖9為根據(jù)本發(fā)明實施例圖6中的策略管理器以及一TCSchedule寄存器的方塊圖。圖10為根據(jù)本發(fā)明實施例圖9的策略管理器的操作流程圖。圖11為根據(jù)本發(fā)明替代實施例圖6中的派送調(diào)度器以及圖2中的指令選取邏輯的更具體細(xì)節(jié)的方塊圖。[(X)27]圖12為根據(jù)本發(fā)明實施例圖11的派送調(diào)度器的操作流程圖。[(X)28]圖13為根據(jù)本發(fā)明替代實施例示出圖1中微處理器的共享可動態(tài)分配滑動緩沖器的方塊圖。圖14為根據(jù)本發(fā)明實施例圖13的滑動緩沖器的操作流程圖。圖15為根據(jù)本發(fā)明替代實施例圖1中微處理器的單個共享指令/滑動緩沖器可以被所有的線程上下文進(jìn)行共享的方塊圖。具體實施方式請參閱圖1,為本發(fā)明的流水線化多線程微處理器100的—個方塊圖。如圖所示,微處理器100被配置為可以同時處理多個線程。線程,還被稱為執(zhí)行線程或指令流,包含一系列或一串可以執(zhí)行的程序指令。這些線程或許是來自執(zhí)行于微處理器100中的不同程序,或許是來自執(zhí)行于微處理器IOO中的相同程序的不同部分,或是兩者結(jié)合。每一個線程有一個相關(guān)的線程上下文(TC)。線程上下文包含儲存元件的集合,如寄存器或鎖存器,和/或包括微處理器100的儲存元件中比特,其描述線程的執(zhí)行狀態(tài)。即,線程上下文描述線程的各自執(zhí)行狀態(tài),每一個線程的狀態(tài)均是獨一無二的,而不是其它在微處理器100中同時執(zhí)行的線程的分享狀態(tài)。通過在線程上下文中儲存每一線程的狀態(tài),微處理器IOO可以很快地在線程之間切換以提取和執(zhí)行指令。在一個實施例中,每個線程上下文包含程序計數(shù)器(PC)、通用目的寄存器(GPRs)組、以及線程控制寄存器,其均位于微處理器100的寄存器堆112中。微處理器IOO根據(jù)調(diào)度策略來執(zhí)行線程,此調(diào)度策略控制不同線程的指令的提取及發(fā)出。調(diào)度策略控制許多線程的指令的提取及發(fā)出的許多實施例將在以下描述。指令"發(fā)出"和"派送"這兩個名詞,將在以下描述中交互使用。多線程微處理器100允許多個線程分享微處理器100的功能單元(如指令提取及譯碼單元、高速緩存、分支預(yù)測單元、以及加載/儲存、整數(shù)處理、浮點處理、SIMD單元、以及其它功能單元等)。微處理器100包含指令高速緩存102,以緩沖從包含微處理器100的系統(tǒng)的系統(tǒng)內(nèi)存提取的程序指令,特別是各個線程的指令。微處理器100還包含指令提取器104或指令提取流水線104,耦接至指令高速緩存102和/或系統(tǒng)內(nèi)存,同時提取多個線程的指令至指令/滑動緩沖器106,該指令/滑動緩沖器與指令提取器104耦接。在一個實施例中,指令提取流水線104包含四個指令提取流水線階段。指令/滑動緩沖器106提供指令給指令調(diào)度器108或線程調(diào)度器108。在一個實施例中,每一線程有自己的指令/滑動緩沖器106。每一時鐘周期,調(diào)度器108從多個線程之一選擇一個指令,并發(fā)出該指令供微處理器100流水線的執(zhí)行階段來執(zhí)行。寄存器堆112與調(diào)度器108耦接,以提供指令操作數(shù)至執(zhí)行單元114來執(zhí)行此指令。微處理器100還包含數(shù)據(jù)高速緩存118,與執(zhí)行單元114耦接。執(zhí)行單元114可以包括,但是不限于,整數(shù)執(zhí)行單元、浮點執(zhí)行單元、SIMD執(zhí)行單元、加載/儲存單元以及分支執(zhí)行單元。在一個實施例中,整數(shù)執(zhí)行單元流水線包含四個階段寄存器堆(RF)存取階段以供存取寄存器堆U2,地址產(chǎn)生(AG)階段、執(zhí)行(EX)階段以及記憶(MS)階段。在執(zhí)行(EX)階段時,簡單的數(shù)學(xué)邏輯(ALU)(如加法、減法、移位等)運算被執(zhí)行。此外,高速緩存118是兩周期高速緩存,其在第一時鐘周期時在執(zhí)行(EX)階段被存取,在第二時鐘周期時在記憶(MS)階段被存取。每一線程上下文有自己的寄存器堆112,且每一寄存器堆112有自己的程序計數(shù)器、通用目的寄存器組以及線程控制寄存器。指令提取單元104根據(jù)每一線程上下文的程序計數(shù)器值提取線程的指令。請注意某些執(zhí)行單元114可以是流水線化,一些則是專用的。微處理器100還包含回寫階段116,以寫回指令結(jié)果至寄存器堆112。在一個實施例中,微處理器100流水線還包括例外處理階段,耦接在執(zhí)行單元U4與回寫階段116之間。執(zhí)行單元114產(chǎn)生與每一個線程上下文相關(guān)的TC_instr—committed信號124,以指示特定線程的指令被承諾執(zhí)行。如果一個指令保證不會被微處理器100流水線清空,而是最終會被執(zhí)行的話,則這個指令已被承諾執(zhí)行,這會產(chǎn)生一個結(jié)果且會更新微處理器100的結(jié)構(gòu)狀態(tài)。在一個實施例中,每一個時鐘周期內(nèi)可以有多個指令被承諾執(zhí)行,而TC—instr_committed信號124指示此時鐘周期內(nèi)此線程上下文中有多少個指令被承諾執(zhí)行。將TC—instr—committed信號124提供給調(diào)度器108。響應(yīng)于TC_instr—committed信號124,調(diào)度器108更新此線程的虛擬水位指示器,以供調(diào)度器108的線程調(diào)度策略使用,來達(dá)成所需的服務(wù)質(zhì)量,如同之后圖9和圖IO所描述的一般。[t)036]還將TCjnstr—committed信號124提供給各自的指令/滑動緩沖器106。響應(yīng)于TC一instr—committed信號124,指令/滑動緩沖器106更新指針,以有效地從緩沖器106中移除指令。在傳統(tǒng)的微處理器中,指令從傳統(tǒng)的指令緩沖器106中移除以及發(fā)出執(zhí)行。然而,本發(fā)明的指令/滑動緩沖器106的好處是,在指令發(fā)出執(zhí)行后會繼續(xù)地儲存指令。這些指令并不會從指令/滑動緩沖器106中移除,而是直到執(zhí)行單元114經(jīng)由各自的TCjnstr—committed信號124指出指令已經(jīng)被承諾執(zhí)行,如同之后圖3和圖4所描述的一般。調(diào)度器108提供執(zhí)行單元114一個可執(zhí)行的TC信號132??蓤?zhí)行的TC信號132指示那一個線程上下文是可執(zhí)行的,即,調(diào)度器108目前可以那些線程上下文發(fā)出指令。在一個實施例中,如果一個線程上下文是活動的且并沒有被其它條件所阻止(如中止、等待、暫?;蚴嵌Y讓等),則這個線程上下文是可執(zhí)行的,如同之后圖7所描述的一般。特別的是,執(zhí)行單元114利用可執(zhí)行TC信號132來決定一個停頓線程上下文是否是唯一的可執(zhí)行線程上下文,以決定是否將停頓線程上下文的指令清空,如同之后圖5所詳細(xì)描述的一般。調(diào)度器108提供執(zhí)行單元114一個停頓事件信號126。停頓事件信號126指示一個指令因為由該特定停頓事件信號126所指示的原因而停頓或是可能停頓在執(zhí)行單元114中。除此之外,停頓事件信號126包括標(biāo)識符,以指示停頓指令的線程上下文。執(zhí)行單元114還提供調(diào)度器108—個無停頓事件信號128。響應(yīng)于停頓事件信號126,調(diào)度器108停止發(fā)出此停頓線程上下文的指令,直到一個相關(guān)的無停頓事件信號128被發(fā)出,如同之后圖5所詳細(xì)描述的一般。可以導(dǎo)致執(zhí)行單元114響應(yīng)于一個指令而停頓的事件的例子包括,但不局限于,以下的情況第一,此指令依靠目前尚不可得的數(shù)據(jù),如在數(shù)據(jù)高速緩存118內(nèi)丟失的加載指令的數(shù)據(jù)。例如,一加法指令可以指定一個操作數(shù),因為先前的加載指令在數(shù)據(jù)高速緩存118內(nèi)丟失該操作數(shù)目前尚不可得,并且此操作數(shù)尚未從系統(tǒng)內(nèi)存中取出。第二,此指令依靠從一個長執(zhí)行時間指令所取出的數(shù)據(jù),如除法或其它長數(shù)學(xué)運算指令,或是例如,一個指令從協(xié)處理器的寄存器中轉(zhuǎn)移一個值。第三,此指令會造成有限硬件資源的沖突。例如,在一個實施例中,微處理器100包括單個除法器。如果一個除法指令已經(jīng)在此除法器中執(zhí)行的話,則第二個除法指令必須停頓以等待第一個除法指令完成。舉另一例,在一個實施例中,微處理器100指令集包括一組指令,以執(zhí)行指令高速緩存102的低級管理操作。如果一個指令高速緩存管理操作指令己經(jīng)被執(zhí)行的話,則第二個指令高速緩存管理操作指令必須停頓以等待第一個指令高速緩存管理操作指令的完成。再舉另一例,在一個實施例中,微處理器100包括加載隊列,該加載隊列包含相對小數(shù)目的槽(slot),供儲存正在運作的數(shù)據(jù)高速緩存U8重新填充。如果加載指令在數(shù)據(jù)高速緩存118丟失的話,則分配一個加載隊列條目,且處理器總線交易被初始化以從系統(tǒng)內(nèi)存中取出此丟失的數(shù)據(jù)。當(dāng)此數(shù)據(jù)返回至總線時,將會被儲存至加載隊列,之后被寫入至此數(shù)據(jù)高速緩存118中。當(dāng)此總線交易完成后,且所有的數(shù)據(jù)均已寫入至此數(shù)據(jù)高速緩存118后,此加載隊列條目才會被釋放。然而,當(dāng)此加載隊列是滿的時候,一個加載丟失會造成流水線的停頓。第四,此指令或許會在EHB指令之后。在一個實施例中,微處理器100指令集包括一個執(zhí)行危險障礙(EHB)指令,被軟件用來停止指令執(zhí)行,直到全部執(zhí)行危險皆被清除為止。通常,跟隨在EHB指令后的指令必須在流水線中停頓直到EHB指令執(zhí)行完畢。第五,此指令或許會在加載或儲存指令之后,在相同線程上下文中對線程間通信(ITC)空間尋址。在一個實施例中,微處理器100支持加載或儲存至一個線程間通訊(ITC)空間包括同步儲存,其可阻止任意長時間,導(dǎo)致跟隨在線程間通訊(ITC)加載或儲存之后的相同線程上下文中的指令停頓。相反,無停頓事件信號128的例子包括,但是不局限于,以下數(shù)據(jù)高速緩存118中丟失的加載數(shù)據(jù)返回;有限硬件資源釋放,如除法器電路、指令高速緩存102、或加載隊列空間;執(zhí)行危險障礙(EHB)指令、長執(zhí)行指令、或加載/儲存指令至線程間通訊(ITC)空間完成。執(zhí)行單元114還產(chǎn)生TC清空信號122,其與每一線程上下文相關(guān),以指示在流水線中執(zhí)行區(qū)域(如流水線中調(diào)度器108下方的區(qū)域)中特定線程的指令被清空或取消。在一個實施例中,清空或取消一個指令包括清除在此流水線中與此指令相關(guān)的一個有效位,其防止此流水線響應(yīng)于此指令的結(jié)果而更新微處理器100的結(jié)構(gòu)狀態(tài)。執(zhí)行單元114也許會產(chǎn)生TC清空信號122的原因是,如前所描述過的,一個線程的指令停頓于執(zhí)行單元114內(nèi)。清空或取消此指令以排除此指令在此流水線中停頓的原因,這是因為此指令產(chǎn)生的結(jié)果將被忽略而且從而不需要是正確的。本發(fā)明的好處是,清空此停頓指令后,其它線程的指令可以繼續(xù)執(zhí)行并利用此執(zhí)行流水線的執(zhí)行帶寬,如此或許可以增加微處理器100的整體性能,將會于以下詳加描述。在一個實施例中,只有停頓線程的指令會被清空,如此具有減少在此流水線中因為此清空所造成的氣泡數(shù)hl的好處,在某些情況下,此停頓的指令或許只會產(chǎn)'個氣泡,這取決于存在于執(zhí)行單元114流水線中不同線程的指令組成。在一個實施例屮,TC清空信號122指示所有未被承諾執(zhí)行的線程上下文指令皆被清空。在另一個實施例中,執(zhí)行單元114或許只會清空少于此執(zhí)行單元114中未被承諾執(zhí)行的線程上下文指令的數(shù)目,即只清空停頓線程上下文的停頓指令和任何更新的指令,但不會清空早于停頓指令的未被承諾執(zhí)行的線程上下文指令。在此實施例中,TC清空信號122也指示已被執(zhí)行單元114清空的指令的數(shù)H。TC清空信號122由執(zhí)行單元114提供給各自的指令/滑動緩沖器106。指令/滑動緩沖器106利用TC清空信號122以回到指令/滑動緩沖器106的指令狀態(tài),如同之后圖3和圖4所描述的一般。因為指令/滑動緩沖器106繼續(xù)儲存指令直到它們被承諾不被清空為止,任何被清空的指令都可以隨后從指令/滑動緩沖器106重新發(fā)出,不必從指令高速緩存102中重新提取。這樣的優(yōu)點是減少從執(zhí)行流水線清空停頓的指令以執(zhí)行其它線程的指令的相關(guān)代價。減少重新提取指令的可能性已經(jīng)變得非常重要,因為提取指令所費的時間越來越多。這是因為,與其它事相比,相較于老一代的微處理器設(shè)計,對于指令高速緩存需要更多時鐘周期以進(jìn)行存取是一件十分平常的事,主要是因為微處理器時鐘周期逐漸降低。因此,與老一代的設(shè)計相比,指令重新提取相關(guān)的代價大概是多出一個周期、兩個周期或更多周期。請參閱圖2,為根據(jù)圖1本發(fā)明微處理器100的一部份的方塊圖,特別是,顯示根據(jù)本發(fā)明一個實施例的指令/滑動緩沖器106。圖2中顯示出多個線程上下文各自的多個指令/滑動緩沖器106,圖1中所示的指令提取器104提取指令到多個指令/滑動緩沖器106中。根據(jù)本發(fā)明一個實施例的指令/滑動緩沖器106的結(jié)構(gòu)與操作,在之后的圖3及圖4中會詳加描述。每一個指令/滑動緩沖器106提供一個指令206給指令選擇邏輯202。每一個時鐘周期,指令選擇邏輯202選擇指令206之一作為被選擇指令204,提供給執(zhí)行單元114去執(zhí)行。指令選擇邏輯202響應(yīng)于由圖1中的調(diào)度器108所提供的DS—TC優(yōu)先權(quán)信號208來選擇被選擇指令204給每--個線程上下文。DS—TC優(yōu)先權(quán)信號208的操作,在之后的圖7及圖8中會詳加描述。雖然在實施例所描述的微處理器100是一個標(biāo)量處理器,即,在每一時鐘周期內(nèi)僅會發(fā)出一個指令,應(yīng)該可以理解指令選擇邏輯202也可以配置為運作于在每一時鐘周期內(nèi)會發(fā)出多個指令的超量處理器。更進(jìn)一步而言,指令選擇邏輯202也可以配置為運作于在每一時鐘周期內(nèi)可以選擇從多個不同的線程上下文發(fā)出指令,通常稱為同時多線程。請參閱圖3,為根據(jù)圖2本發(fā)明指令/滑動緩沖器106的一個方塊圖,顯示如圖2的一個例示的指令/滑動緩沖器106,及其相關(guān)的控制邏輯302。圖2中的每一個指令/滑動緩沖器106與圖3中的指令/滑動緩沖器106相似。即,雖然圖3僅51示一個指令/滑動緩沖器106及其相關(guān)的控制邏輯302,在-個實施例中,每--個線程上下文中均存在一個指令/滑動緩沖器106及其相關(guān)的控制邏輯302。每一個指令/滑動緩沖器106包含多個條目332,每一個儲存一個指令,且包含相關(guān)的有效位334,用以指示相關(guān)的指令是否有效。圖3所顯示的指令/滑動緩沖器106有六個條目,表示為0到5。在圖3的實施例中,指令/滑動緩沖器106配置為條目循環(huán)隊列。圖1中的指令提取器104每一次寫入一個指令至指令/滑動緩沖器106時,會產(chǎn)生一個寫入信號314至指令/滑動緩沖器106。寫入信號314也會提供給控制邏輯302。控制邏輯302產(chǎn)生一個充滿信號312給指令提取器104,以指示指令/滑動緩沖器106是滿的,所以指令提取器104無法再寫入更多的指令至指令/滑動緩沖器106,直到指令/滑動緩沖器106不再是滿的為止。圖1中的調(diào)度器108每一次從指令/滑動緩沖器106讀取一個指令時,會產(chǎn)生一個讀取信號316至指令/滑動緩沖器106。讀取信號316也會提供給控制邏輯302??刂七壿?02產(chǎn)生一個空信號318給指令調(diào)度器108,以指示指令/滑動緩沖器106是空的,所以調(diào)度器108無法從指令/滑動緩沖器106再讀取更多的指令,直到指令/滑動緩沖器106不再是空的為止??刂七壿?02包括有效產(chǎn)生邏輯342,其會更新指令/滑動緩沖器106的有效位334。有效產(chǎn)生邏輯342對各自的線程上下文,接收圖1中的TC—instr—committed信號124。每-次執(zhí)行單元114產(chǎn)生TC—instr—committed信號124之后,有效產(chǎn)牛:邏輯342會將指令/滑動緩沖器106中最舊的有效指令加以無效。有效產(chǎn)生邏輯342也會從指令提取器104接收寫入信號314。每一次指令提取器104產(chǎn)生寫入信號314后,有效產(chǎn)生邏輯342會將該指令寫入指令/滑動緩沖器106之處的條目標(biāo)記為有效。控制邏輯302還包括充滿_計數(shù)之計數(shù)器306,以儲存指令/滑動緩沖器106中H前的有效指令數(shù)目。充滿—計數(shù)之計數(shù)器306會根據(jù)指令提取器104產(chǎn)生寫入信號314來遞增,同時會根據(jù)TCjnstr—committed信號124來遞減??刂七壿?02也包括比較器304,來將充滿一計數(shù)306與可以儲存在指令/滑動緩沖器106中的指令最大數(shù)目(即指令/滑動緩沖器106中的條目332總數(shù)目)進(jìn)行比較,以在充滿一計數(shù)306與可以儲存在指令/滑動緩沖器106中的指令最大數(shù)目相等時,使充滿信號312產(chǎn)生-^個真值??刂七壿?02也包括空一計數(shù)之計數(shù)器346,以儲存指令/滑動緩沖器106目前尚可以發(fā)出的有效指令數(shù)目。空—計數(shù)346在某些情況下可以小于充滿—計數(shù)306,這是因為某些存在于指令/滑動緩沖器106中的有效指令已經(jīng)被發(fā)出至執(zhí)行流水線(但尚未被承諾執(zhí)行),因此目前沒有符合被發(fā)出的條件??找挥嫈?shù)之計數(shù)器346會根據(jù)指令提取器104產(chǎn)生寫入信號314來遞增,同時會根據(jù)調(diào)度器108的讀取信號316來遞減??刂七壿?02也包括比較器344,來比較空一計數(shù)346與零,以在空—計數(shù)346等于零時使空信號318產(chǎn)生真值。此外,空—計數(shù)之計數(shù)器346響應(yīng)于圖1中的TC清空信號122的真值,可以被寫入充滿—計數(shù)之計數(shù)器306的值。控制邏輯302也包括寫入指針322、承諾指針324,以及讀取指針326,每一個皆是起始于指令/滑動緩沖器106的條目零的計數(shù)器。每-一個計數(shù)器當(dāng)遞增超過其最大值時會巻回至零,該最大值通常是指令/滑動緩沖器106中的條目數(shù)目減去一。寫入指針322指示指令提取器104寫入指令到指令/滑動緩沖器106的下一個條目位置,同時會在指令被寫入后由寫入信號314遞增。承諾指針324指示指令/滑動緩沖器106中的下一個被承諾的指令,同時由TC—instr_committed信號124遞增。讀取指針326指示由調(diào)度器108從指令/滑動緩沖器106讀取指令的下一個條目位置,同時會在指令被讀取后由讀取信號316遞增。此外,響應(yīng)于TC清空信號122的一個真值,讀取指針326被g入承諾指針324的值。如圖3所示,滑動窗口包含從指令/滑動緩沖器106的承諾指針324開始至,但是不包含,讀取指針326的條目。此滑動窗口包含己經(jīng)發(fā)出執(zhí)行但是尚未被承諾的有效指令。請參閱圖4,為根據(jù)本發(fā)明實施例如圖3中指令/滑動緩沖器106例示操作的四個流程圖。每一個流程圖顯示指令/滑動緩沖器106響應(yīng)于不同事件而執(zhí)行的動作。第一流程圖的流程從方塊402開始。在方塊402,圖1中的指令提取器104對各自的指令/滑動緩沖器106發(fā)出圖3中的寫入信號314,并將一個指令寫入指令/滑動緩沖器106。此流程繼續(xù)至方塊404。在方塊404,有效產(chǎn)生邏輯342響應(yīng)于寫入信號314,將由寫入指針322所指示的條目標(biāo)記為有效。此流程繼續(xù)至方塊406。在方塊406,圖3中的寫入指針322響應(yīng)于寫入信號314而遞增。此流程繼續(xù)至方塊408。在方塊408,圖3中的充滿—計數(shù)之計數(shù)器306響應(yīng)于寫入信號314而遞增。此流程繼續(xù)至方塊412。在方塊412,圖3中的空一計數(shù)之計數(shù)器346響應(yīng)于寫入信號314而遞增。第一流程圖在方塊412結(jié)束。第二流程圖的流程從方塊422開始。在方塊422,圖1中的執(zhí)行單元114為與該指令/滑動緩沖器106相關(guān)的線程上下文發(fā)出圖1中的TC—instr—committed信號124。此流程繼續(xù)至方塊424。在方塊424,有效產(chǎn)生邏輯342響應(yīng)于TC—instr—committed信號124,將由圖3中的承諾指針324所指示的條目標(biāo)記為無效的,因此有效地將此指令從緩沖器中移除。此流程繼續(xù)至方塊426。在方塊426,承諾指針324響應(yīng)于TCjnstr—committed信號124而遞增。此流程繼續(xù)至方塊428。在方塊428,圖3中的充滿一計數(shù)之計數(shù)器306響應(yīng)于TC—instr—committed信號124而遞減。第二流程圖在方塊428結(jié)束。在一個實施例中,控制邏輯302并不會接收TC—instr—committed信號124,而是從執(zhí)行單元114接收另一個僅是指出一個指令應(yīng)該從指令/滑動緩沖器106中移除的信號,雖然此指令并不保證將來不會被需要重新派送。在一個實施例中,此信號指出一個指令到達(dá)一個事先決定的重新派送流水線階段。如果控制邏輯302偵測到此指令已到達(dá)事先決定的階段,則此控制邏輯302會將此指令從指令/滑動緩沖器106中移除。在另一個實施例中,此信號指示每一時鐘周期中一個指令時候正在執(zhí)行,即,并沒有停頓,還是向下一個流水線階段前進(jìn)。如果控制邏輯302偵測到此指令己經(jīng)執(zhí)行了事先決定的時鐘周期數(shù),則控制邏輯302會將此指令從指令/滑動緩沖器106中移除。在這些實施例中,若是指令已到達(dá)執(zhí)行流水線U4中事先決定的特定階段,則這些指令會被需要重新派送的機率就會很小,足以將其從指令/滑動緩沖器106中移除,而把位置讓給其它將要寫入指令/滑動緩沖器106的指令,即使它們并沒有保證將來不會被需要重新發(fā)送。在此實施例中,如果執(zhí)行單元14后續(xù)指出此指令在沒有執(zhí)行完畢前就被清空,則整個線程上下文的指令/滑動緩沖器106以及整個指令提取流水線104就需被清空,以保證整個線程指令按正確的順序發(fā)出。第三流程圖的流程從方塊442開始。在方塊442,圖1中的調(diào)度器108對各自的指令/滑動緩沖106發(fā)出讀取信號316,且從指令/滑動緩沖106讀取將要發(fā)給執(zhí)行流水線的指令。此流程繼續(xù)至方塊444。在方塊444,讀取指針326響應(yīng)于讀取信號316而遞增。此流程繼續(xù)至方塊446。在方塊446,空—計數(shù)之計數(shù)器346響應(yīng)于讀取信號316而遞減。第三流程圖在方塊446結(jié)束。第四流程圖的流程從方塊462開始。在方塊462,為與指令/滑動緩沖器106相關(guān)的線程上卜文發(fā)出TC清空信號122。此流程繼續(xù)至方塊464。在方塊464,響應(yīng)于TC清空信號122,讀取指針326被寫入承諾指針324的值。此流程繼續(xù)至方塊466。在方塊466,響應(yīng)于TC清空信號122,空_計數(shù)之計數(shù)器346被寫入充滿—計數(shù)之計數(shù)器306的值。第四流程圖在方塊466結(jié)束。如前述所討論的,在一個實施例中,TC清空信號122指示執(zhí)行單元114將此線程上下文所有未承諾的指令皆已清空。圖4中的第四流程圖描述了此種實施例中的指令/滑動緩沖器106的操作。然而,在其它的實施例中,執(zhí)行單元U4可以只清空目前位于執(zhí)行單元114中的一部分未承諾的指令而己,具體而言,只清空該停頓線程上下文的停頓指令以及更新的指令,但不清空較該停頓指令更舊的此線程上下文的未承諾指令。在此實施例中,TC清空信號122還指示被執(zhí)行單元114清空的指令數(shù)。在此實施例中,在方塊464,將所清空的指令數(shù)目從讀取指針326減去,而不是用承諾指針324的值更新讀取指針326。此外,在方塊466,所清空的指令數(shù)目加到空—計數(shù)346中,而不是用充滿—計數(shù)之計數(shù)器306的值更新空—計數(shù)之計數(shù)器346中。請參閱圖5,為根據(jù)本發(fā)明實施例圖1中的微處理器100將一個停頓的線程上下文清空的操作,以改善執(zhí)行帶寬使用的流程圖。此流程圖的流程從方塊502開始。在方塊502,圖1中的執(zhí)行單元114響應(yīng)于一個如停頓指令的指令,偵測到一個停頓事件,如前面所描述過的與圖1中的停頓事件信號126相關(guān)的那些停頓事件。執(zhí)行單元114還確定此停頓指令與哪個線程上下文相關(guān),即,該停頓線程上下文。在一個實施例中,每一指令隨著其沿流水線向下前進(jìn),會搭配一個唯一的線程上下文標(biāo)識符,以供執(zhí)行單元114使用來辨識此停頓線程上下文。在一個實施例中,執(zhí)行單元114并不會響應(yīng)于此停頓事件126而停頓,而是根據(jù)方塊512在偵測到此停頓事件126的同一個時鐘周期清空此指令,因此減緩?fù)nD此執(zhí)行單元114的需要。在另一個實施例中,如果因為時間考慮的需求,執(zhí)行單元U4也可以響應(yīng)于此停頓事件而實際上停頓一個時鐘周期,直到此停頓指令可以根據(jù)以下的方塊512被清空為止。此流程繼續(xù)至方塊504。在方塊504,執(zhí)行單元114根據(jù)檢驗圖1中的可執(zhí)行TC信號132,決定此停頓線程上下文是否是唯一可執(zhí)行的線程上下文。如果是的話,此流程繼續(xù)至方塊526;否則,此流程繼續(xù)至方塊506。在方塊506,執(zhí)行單元114經(jīng)由停頓事件信號126指出停頓事件,并也提供此停頓線程上下文的標(biāo)識符。此流程繼續(xù)至方塊508。在方塊508,調(diào)度器108標(biāo)記此停頓線程上下文是停頓的,停止對此線程上下文繼續(xù)發(fā)出指令,同時儲存關(guān)于此停頓事件原因的狀態(tài)。在如圖7的實施例中,可發(fā)出指令邏輯708將停頓指示器704設(shè)為真值以標(biāo)記此線程上下文是停頓的,此會導(dǎo)致可發(fā)出指令邏輯708在可發(fā)出信號746上產(chǎn)生一個假值。此流程繼續(xù)至方塊512。在方塊512,執(zhí)行單元114取消,即清空執(zhí)行單元114內(nèi)所有停頓線程上下文的指令,且在與此停頓線程上下文即清空的線程上下文相關(guān)的圖1中的TC清空信號122上產(chǎn)生一個真值。可以理解的是,執(zhí)行單元114僅會清空停頓指令及其后的指令,但是并不會清空在此停頓指令之前的指令;否則,停頓條件或許永遠(yuǎn)不會終止。在一個實施例中,執(zhí)行單元114清空所有線程上下文的指令,而不只是停頓線程上下文。然而,對于僅是清空停頓線程上下文的實施例而言,具有減少流水線內(nèi)潛在氣泡的優(yōu)點,這是因為其它線程上下文的指令仍可以留在執(zhí)行單元114中執(zhí)行,因此潛在地導(dǎo)致微處理器100會較清空全部線程上下文的實施例更具有效率。此流程繼續(xù)至方塊514。在方塊514,圖1中的指令/滑動緩沖器106響應(yīng)于此TC清空信號122,而巻回此清空指令,如同圖3和圖4所描述的實施例,或是圖13和圖14,或圖15所描述的實施例。此流程繼續(xù)至方塊516。在方塊516,調(diào)度器108根據(jù)線程調(diào)度策略,繼續(xù)發(fā)出沒有被標(biāo)記為停頓的線程上下文的指令。在如圖7的實施例中,停頓指示器704指示一個指令是停頓的還是不停頓的。此外,執(zhí)行單元114在清空方塊5I2后,會繼續(xù)執(zhí)行位于執(zhí)行單元114內(nèi)的其它線程上下文的指令和隨后派送的指令。此流程繼續(xù)至判定方塊518。在判定方塊518,調(diào)度器108判定此停頓事件是否終結(jié)。調(diào)度器108判定此停頓事件是否響應(yīng)于執(zhí)行單元114經(jīng)由圖1中的未停頓事件信號128發(fā)出--個未停頓事件,且進(jìn)一步根據(jù)在方塊508中保存的停頓事件原因狀態(tài)而被終結(jié)。如果此停頓線程上下文的停頓事件被終結(jié)的話,此流程繼續(xù)至方塊522;否則,此流程繼續(xù)至方塊516。在方塊522,調(diào)度器108將此停頓線程上下文標(biāo)記為未停頓,而開始重新發(fā)出這些不再停頓的線程上下文與其它未停頓線程上下文的指令。在圖7的實施例中,可發(fā)出指令邏輯708將停頓指示器704設(shè)為假值,以標(biāo)記此線程上下文是不停頓的。此流程于方塊522終止。在方塊524,因為此停頓線程上下文是唯一可執(zhí)行的線程上下文,執(zhí)行單元114停頓指令執(zhí)行以確保正確的程序執(zhí)行順序。此流程繼續(xù)至判定方塊526。在判定方塊526,調(diào)度器108判定此停頓事件是否被終止。如果是的話,此流程繼續(xù)至方塊534;否則,此流程繼續(xù)至判定方塊528。在判定方塊528,執(zhí)行單元114根據(jù)檢驗圖1中的可執(zhí)行TC信號132,判定此停頓線程上下文是否是唯一可執(zhí)行線程上下文。如果是的話,此流程回到方塊526;否則,此流程繼續(xù)至判定方塊506。在判定方塊528,執(zhí)行單元114判定此停頓線程上下文是否仍是唯一可執(zhí)行線程上下文。如果是的話,此流程回到方塊526;否則,此流程繼續(xù)至判定方塊506。在方塊532,執(zhí)行單元U4開始繼續(xù)執(zhí)行這些不再停頓的指令與其它的指令。這種方法的好處是,當(dāng)停頓事件結(jié)束后,此停頓指令及其后續(xù)的指令可以立即執(zhí)行,而不必像根據(jù)方塊512清空的話就必須再被重新發(fā)出。因此,如果此停頓線程上下文是唯一可執(zhí)行的線程上下文的話就不必被清空,這樣,微處理器100可以獲得增加性能的潛在好處。此流程結(jié)束于方塊532??梢杂蓤D5的敘述了解,偵測執(zhí)行單元114中的停頓事件126,以及從執(zhí)行單元114中清空指令以允許其它線程的指令被派送到執(zhí)行單元114中并執(zhí)行,可以使執(zhí)行單元114避免因為執(zhí)行流水線中的氣泡而浪費時鐘周期,而獲得更有效率的好處。根據(jù)實際情況而清空真的會停頓的指令,微處理器00可以獲得達(dá)到更高性能的潛在好處。請參閱圖6,為根據(jù)本發(fā)明-一個實施例圖1中微處理器100內(nèi)的調(diào)度器108的-'個方塊圖,此調(diào)度器108分為兩部分。二分化調(diào)度器108包含派送調(diào)度器(DS)602部份和策略管理器(PM)604部份。派送調(diào)度器(DS)602部份包含于微處理器100的處理器內(nèi)核606內(nèi);然而,策略管理器(PM)604部份包含于處理器內(nèi)核606外。處理器內(nèi)核606是微處理器100中不能被使用者定制化的部分;然而,策略管理器(PM)604部份可以被使用者定制化。在一個實施例中,處理器內(nèi)核606是可合成內(nèi)核,在此也可以稱為軟內(nèi)核。使用自動化設(shè)計工具,通常被稱為合成工具,可以很快速容易地將可合成內(nèi)核的設(shè)計簡化為可制造形式。處理器內(nèi)核606提供與策略管理器(PM)604相連的接口628,包含多個信號。在一個實施例中,派送調(diào)度器(DS)602的輸入與輸出會被寄存器記錄,好處是非內(nèi)核策略管理器(PM)604邏輯與處理器內(nèi)核606相連的接口628具有減緩二分化調(diào)度器所帶來的定時問題影響。此外,接口628十分容易讓顧客理解,這也會降低了策略管理器(PM)604的調(diào)度策略設(shè)計的困難度。在底下的表1,顯示出根據(jù)本發(fā)明一個實施例中策略管理器接口628包含的許多不同信號。表1顯示出信號名稱、相對于策略管理器604的信號方向以及這^信號的簡單描述。表1描述了一個實施例,其中微處理器100包括九個線程上下文,以儲存最多達(dá)九個線程的相關(guān)狀態(tài)。此外,此實施例中允許微處理器00配置為最多兩個虛擬處理組件(VPE)。在一個實施例中,微處理器IOO可以大致上與MIPS的微處理器架構(gòu)兼容,如MIPS32或MIPS64指令集架構(gòu)(ISA),同時包括控制協(xié)處理器0,在表中稱為CPO,其包括線程控制寄存器,大致上與由MIPS特殊資源架構(gòu)(PRA)和MIPS多線程應(yīng)用指定延伸集(MTASE沖所指定的控制協(xié)處理器(CPO凍容。在表l中所描述的許多信號用來存取CPO寄存器。<table>tableseeoriginaldocumentpage33</column></row><table><table>tableseeoriginaldocumentpage34</column></row><table>3#100暫停3#101等待ITC3#110因為WAIT而等待3#111使用為SRSPM—tc_state—1[2:0]輸入(I)TCI的狀態(tài),可參閱PMtcstate0PM—tc一state—2[2:0]輸入(I)TC2狀態(tài),可參閱PMtcstate0PM—tc_state_3[2:0]輸入(I)TC3的狀態(tài),可參閱PMtcstate0PM」c—state_4[2:0;|輸入(l)TC4的狀態(tài),可參閱PMtcstate0PM一tc一state一5[2:0]輸入(I)TC5的狀態(tài),可參閱PMtcstate0PM—tc_state—6[2:0]輸入(I)TC6的狀態(tài),可參閱PMtcstate0PM_tc_state_7[2:0〗輸入(I)TC7的狀態(tài),可參閱PMtcstate0PM—tc一state一8[2:0〗輸入(I)TC8的狀態(tài),可參閱PMtcstate0PM一tc一ss[8:0]輸入(I)信號間隔。9個TC除錯寄存器的SSt位PM—tc—inst_issued[8:0]輸入(I)派送調(diào)度器(DS)所發(fā)出指令PM_tc—instr_committed[8:0]輸入(I)被承諾指令PM—tc一fork[8:0]輸入(I)FORK指令已產(chǎn)生一新TC,PMtcinstrcommitted包S^^那一^hTC執(zhí)行FORKPM_tc_priority_0[l:0]輸出(o)TCO的優(yōu)先級PM—tc_priority—l[l:O]輸出(o)TCI的優(yōu)先級PM—tc_priority—2[1:0]輸出(o)TC2的優(yōu)先級PM_tc_priority—3[1:0]輸出(O)TC3的優(yōu)先級PM—tc_priority—4[1:0]輸出(O)TC4的優(yōu)先級PMtc_priority—5[1:0]輸出(o)TC5的優(yōu)先級PM—tc_priority—6[1:0]輸出(o)TC6的優(yōu)先級PMtc_priority_7[l:0]輸出(o)TC7的優(yōu)先級PM_tc_priority_8[l:0]輸出(o)TC8的優(yōu)先級PM_te—block[闊輸出(o)防止派送調(diào)度器對所選取的TC發(fā)出指令PM—vpe—relax—enable[1:0]輸出(o)對兩個虛擬處理組件(VPEs)使能的放松功能PM—vpe—relax_priority_0[l:0〗輸出(o)VPEO的放松優(yōu)先級PM—vpe—relax_priority—1[1:0〗輸出(o)VPE1的放松優(yōu)先級PM_vpe—exc—enable[l:0]輸出(o)對兩個虛擬處理組件(VPEs)使能的例外功能PM_vpe—exc_priority—O[l:0]輸出(o)VPEO的例外優(yōu)先級PM_vpe—exc_priority—1[1:0]輸出(o)VPE1的例外優(yōu)先級表l某些在表1所顯示的策略管理器接口628的信號在此將會詳細(xì)描述。策略管理器604經(jīng)由PM_TC_priority信號652對派送調(diào)度器602指定各自線程上下文的優(yōu)先級。在一個實施例中,PMJTC_priority信號652包含兩個位,且派送調(diào)度器602允許策略管理器604對一個線程上下文指定四種不同的優(yōu)先級之一。策略管理器604通過在各自PM—TC—block信號654上產(chǎn)生真值,命令派送調(diào)度器602停止發(fā)出一個線程上下文的指令。因此,策略管理器604可以經(jīng)由PM—TC_priority信號652和PM—TC_block信號654來影響派送調(diào)度器602對不同的線程上下文如何發(fā)出指令,將會在以下的敘述作進(jìn)一步的描述,特別是在以下的圖7到圖11中說明。微處理器內(nèi)核606提供PM_gclk信號658給策略管理器604,可以使能策略管理器604根據(jù)PM—gclk信號658,如以下圖9所敘述的一般,定期調(diào)整PM—TCj3riority信號652。派送調(diào)度器602經(jīng)由各自PM_TC—state輸入信號642傳送每個線程上下文的狀態(tài)。如表1中所示,線程上下文可以處于以下的八個狀態(tài)之一。不活動因為此線程上下文當(dāng)前不與一個執(zhí)行線程相關(guān),所以派送調(diào)度器602不會發(fā)出該線程上下文的指令?;顒右驗榇司€程上下文目前與一個執(zhí)行線程相關(guān),所以派送調(diào)度器602可以在沒有其它阻止條件存在的情況下發(fā)出該線程上下文的指令來執(zhí)行。禮讓因為此線程目前正在執(zhí)行一個禮讓(YIELD)指令,會導(dǎo)致此線程上下文在特定事件下被阻止,所以派送調(diào)度器602不能發(fā)出該線程上下文的指令來執(zhí)行。終止因為此線程上下文被他自己或其它線程上下文所終止,所以派送調(diào)度器602不會發(fā)出該線程上下文的指令來執(zhí)行。暫停因為此線程執(zhí)行了DMT或DVPE指令,或是因為微處理器100或虛擬處理組件(VPE)目前正在服務(wù)于一個例外,所以派送調(diào)度器602不會發(fā)出該線程上下文的指令來執(zhí)行。DMT指令暫停此虛擬處理組件(VPE)的多線程運作,而DVPE指令暫停整個微處理器100的多線程運作。等待ITC:因為此線程上下文正在等待根據(jù)此線程所執(zhí)行的加載/儲存指令、指示從/向線程間通訊(ITC)空間的一個位置加載/儲存數(shù)據(jù)而被阻止,派送調(diào)度器602不會發(fā)出該線程上下文的指令來執(zhí)行。因為WAIT而等待因為此線程上下文正在執(zhí)行等待(WAIT)指令,其會導(dǎo)致此線程上下文被阻止直到中斷發(fā)生,所以派送調(diào)度器602不會發(fā)出該線程上下文的指令來執(zhí)行。使用為SRS:因為此線程上下文寄存器組被用于影子寄存器組(SRS)操作,所以此線程上下文不能與一個執(zhí)行線程相關(guān),所以派送調(diào)度器602不會發(fā)出該線程上下文的指令。派送調(diào)度器602經(jīng)由各自PM_TC」nst_issued輸入信號646通知策略管理器604,其以及對于一個線程上下文發(fā)出一個指令。執(zhí)行單元114經(jīng)由各自PM—TC—instr—committed輸入信號644通知策略管理器604,它們以及承諾了一個線程上下文的一個指令。在一個實施例中,PM—TC—instr—committed輸入信號644指示該指令已完成執(zhí)行。在另一個實施例中,PM—TC—instr—committed輸入信號644指示該指令保證不會被清空;即最終會執(zhí)行,但或許尚未完成執(zhí)行。此特征點就是,PM—TC—instr_committed輸入信號644提供給策略管理器604這樣的信息,該信息關(guān)于執(zhí)行完畢的指令而不僅是已派送的指令(如PM—TC—inst—issued輸入信號646),兩者是有所不同的,這是因為某些指令會被不確定地發(fā)出但是永不會被完成。這或許是對策略管理器604的一個重要區(qū)別,這是閑為某個應(yīng)用中的某些線程或許需要一個特別的服務(wù)質(zhì)量,就如同以下圖9所敘述的--般。在'個實施例中,PM_TC—instr—committed輸入信號644是TC—instr_committedf言號124的寄存器版本。因此,處理器內(nèi)核606經(jīng)由PMJTC—inst一issued輸入信號646、PM—TC—instr—committed輸入信號644和PM—TC—state輸入信號642提供不同線程上下文有關(guān)指令發(fā)出、執(zhí)行的反饋,將會在以下的敘述作進(jìn)一步的描述,特別是在以下的圖7到圖11中說明。在一個實施例中,派送調(diào)度器602還提供給策略管理器604一個放松功能,其目的為允許微處理器100在應(yīng)用線程上下文不需要整個微處理器帶寬時,可以減少電能的使用,而不需要真的進(jìn)入睡眠狀態(tài)。此放松功能的操作就如同有一個額外的線程需要被調(diào)度一般。然而,當(dāng)此放松線程上下文被選擇發(fā)出時,派送調(diào)度器602并不是真的發(fā)出一個指令。策略管理器604維持-—個RELAX—LEVEL計數(shù)器(每VPE),其與TC—LEVEL918計數(shù)器(將會在之后的圖9中描述)的操作類似,除了它是使用RELEX—RATE來遞增且在--個放松指令槽(slot)完成后來遞減之外。在一個實施例中,微處理器100包括VPESchedule寄存器(每VPE),其與允許軟件去指定RELEX—RATE的TCSchedule寄存器卯2的操作很類似。此放松功能經(jīng)由表1中的PM_vpe—relax—enable信號來使能或禁止,同時此放松線程上下文優(yōu)先級經(jīng)由PM—vpe_relax_priority信號來指定。在一個實施例中,派送調(diào)度器602還提供給策略管理器604例外功能,其目的為允許一個例外線程上下文有與其它正常線程上下文不同的自己獨立的優(yōu)先級。策略管理器604維持一個EXCLEVEL計數(shù)器(每VPE),其與TC—LEVEL918計數(shù)器(將會在后面的圖9中描述)的操作類似,除了它是使用EXC一RATE來遞增且在一個例外指令槽完成后來遞減之外。當(dāng)此例外模式被使能且一個例外被VPE所接受,則此VPE的所有線程上下文都會被設(shè)定為該例外優(yōu)先級。在一個實施例中,軟件經(jīng)由VPESchedule寄存器來指定EXC—RATE的設(shè)定。此例外功能經(jīng)由表1中的PM—vpe—exc—enable信號來使能或禁止,同吋此例外線程上F文的優(yōu)先級經(jīng)由PM_vpe_exc_priority信號來指定。請參閱圖7,為根據(jù)本發(fā)明一個實施例圖6屮的派送調(diào)度器602以及圖2中的指令選擇邏輯202的--個方塊圖。指令選擇邏輯202包含由比較器714所控制的復(fù)用器724樹。每一復(fù)用器724從兩個不同的線程上下文接收圖2中的指令206。每一復(fù)用器724還接收與圖2中指令206相關(guān)的DS—TCjriority信號208。與每一個復(fù)用器724相關(guān)的比較器714te接收兩個不同的線程上下文的一對DS—TC_priority信號208,以控制其相關(guān)的復(fù)用器724來選取具有最高DS—TC_priority208值的指令206及其相關(guān)的DS—TC_priority信號208。被選取的指令206及其相關(guān)的DS—TC_priority信號208會沿著該樹向下傳遞直到最后一個復(fù)用器724,以選取圖2中具有最高DS—TC_priority208值的選取指令204,提供給執(zhí)行流水線。[t)098]圖7顯示了派送調(diào)度器602的邏輯,包括停頓指示器704,可發(fā)出指令邏輯708和輪循邏輯(roundrobin)712。在一個實施例中,在派送調(diào)度器602內(nèi)對于每一個線程上下文復(fù)制停頓指示器704和可發(fā)出指令邏輯708,以對于每一個線程上下文產(chǎn)生DS—TC_priority信號208。相反的是,輪循邏輯712僅對于每一個可能的PM—TC_priority信號652被說明一次,并給每一PM—TCjriority信號652產(chǎn)生一個輪循指示器。舉例而言,圖7顯示了一個實施例,其中,派送調(diào)度器602可以指定PM_TC_priority信號652的四種可能狀態(tài)之一;因此,輪循邏輯712在派送調(diào)度器602中被說明四次,且產(chǎn)生四個分別的輪循指示器。在一個實施例中,此輪循指示器包含微處理器100中每一線程上下文對應(yīng)的位。與各fi的線程上下文相關(guān)的輪循指示位被提供為如圖7中的輪循位748。、輪循位748為真值時,則在此與其它同時具有相同PM_TC_pri0rity優(yōu)先級的線程上下文的輪循機制中,該線程上下文被選擇為將要發(fā)出的線程上下文。可發(fā)出指令邏輯708從圖1中的執(zhí)行單元114接收未停頓事件信號128和停頓事件信號126,從圖6中的策略管理器604接收PM_TC—block信號654,從圖3中的指令/滑動緩沖器106接收空信號318,以及TC狀態(tài)信號742。在一個實施例中,TC狀態(tài)信號742有著與圖6中的PM—TC狀態(tài)信號642相似的信息??砂l(fā)出指令邏輯708響應(yīng)于一個停頓事件信號126識別出的一個線程上下文,會設(shè)置停頓指示器704,將此線程上下文標(biāo)記為停頓。可發(fā)出指令邏輯708也會儲存響應(yīng)于停頓事件信號126的狀態(tài),記錄導(dǎo)致停頓的原因。相反的,如果未停頓事件128與導(dǎo)致停頓的原因相關(guān)的話,則可發(fā)出指令邏輯708響應(yīng)于未停頓事件信號128,而將此停頓指示器704清除。可發(fā)出指令邏輯708響應(yīng)于其輸入信號而產(chǎn)生可發(fā)出信號746。如果由線程上下文的指令/滑動緩沖器106中讀指針326所指示的指令206是可發(fā)出的話,則可發(fā)出信號746為真值。在一個實施例中,如果TC狀態(tài)信號742指示此線程上下文處于活動狀態(tài)且并沒有被其它條件(如終止、等待、暫停或禮讓)所阻止,此停頓指示器704是假,此PMJTC—block信號654和空信號318是假的話,則指令是可發(fā)出的??砂l(fā)出位746、PM—TC_priority652位和輪循位748組合起來以產(chǎn)生DS_TC_priority208。在圖7的實施例中,可發(fā)出位746是最高位,輪循位748是最低位,而PMJTCj3riority652位是兩個中間位??梢杂^察到的是,因為可發(fā)出位746是此PM_TC_priority652的最高位,所以不可發(fā)出的指令將會較所有可發(fā)出的指令具有較低的優(yōu)先級。相反地,輪循位748僅在超過一個線程上下文中具有可發(fā)出的指令且有著相同最高PM_TC_priority652優(yōu)先級的情況下才會被使用來選擇一個線程。請參閱圖8,為根據(jù)本發(fā)明圖7實施例中的派送調(diào)度器602的操作流程圖。此流程圖的流程從方塊802開始。在方塊802,派送調(diào)度器602對每一PM—TC_priority652的每-輪循指示器進(jìn)行初始化。此流程繼續(xù)至方塊804。在方塊804,派送調(diào)度器602會判定,對每一線程.h下文,此線程上下文是否有著可發(fā)出的指令206。gp,可發(fā)出指令邏輯708會對每一線程上下文在可發(fā)出信號746上產(chǎn)生一值。在一個實施例中,可發(fā)出指令邏輯708僅會在TC狀態(tài)信號742指示此線程上下文處于活動狀態(tài)且并沒有被其它條件(如終止、等待、暫停或禮讓)所阻止,此停頓指示器704是假,此PM—TC—block信號654和空信號318是假的情況下,對可發(fā)出信號746產(chǎn)生真值信號。此流程繼續(xù)至判定方塊806。在判定方塊806,派送調(diào)度器602通過檢驗每一線程上下文的可發(fā)出信號746,來判定是否在任何線程上下文中有可執(zhí)行的指令206。如果沒有的話,流程回到方塊804直到至少一個線程上下文中有可執(zhí)行的指令206;否則,此流程繼續(xù)至方塊808。在方塊808,派送調(diào)度器602會根據(jù)此線程上下文的可發(fā)出位746、PM—TC_priority652位和PM—TC_priority652中的輪循位748,來對每一線程上下文的指令206產(chǎn)生DS一TCjriority208。此流程繼續(xù)至方塊812。在方塊812,派送調(diào)度器602發(fā)出有著最高DS一TCjriority208優(yōu)先級的指令206。換句話說,派送調(diào)度器602從有最高PM—TC_priority652優(yōu)先級且有可發(fā)出指令的線程上下文發(fā)出指令。如果有多個線程上下文符合此條件的話,派送調(diào)度器602會從根據(jù)這些線程上下文的PM_TC_pri0rity652中的輪循位748指示的線程上下文發(fā)出指令。此流程繼續(xù)至方塊814。在方塊814,輪循邏輯712根據(jù)哪一個線程上下文己被選擇發(fā)出指令,來更新PM—TC_priority652中的輪循指示器。此流程繼續(xù)回到方塊804。請參閱圖9,為根據(jù)本發(fā)明一個實施例圖6中的策略管理器604以及TCSchedule寄存器卯2的一個方塊圖。[OllO]微處理器lOO對于每一線程上下文包含一個TCSchedule寄存器902。TCSchedule寄存器902是軟件可程序的,且為此軟件提供--手段用以提供線程調(diào)度線索給策略管理器604。在一個實施例中,TCSchedule寄存器902被包含于如圖6和表1中所描述的協(xié)處理器O(CPO)寄存器中,且特別是包含于策略管理器604中。TCSchedule寄存器902包括六個字段TC—LEVEL—PARAM1908、TC—LEVEL_PARAM2906、TC—LEVEL—PARAM3904、TC—RATE912、OV9I4和PRI0916。在圖9的實施例中,TC—LEVEL—PARAM1卯8、TC—LEVEL—PARAM2906、TC—LEVEL_PARAM3904和TC—RATE912的字段包含四個位,PRJO916字段包含兩個位,而OV914字段是單--位。[Olll]圖9中所示的策略管理器604包括控制邏輯924;比較器922,與控制邏輯924耦接并提供輸出給控制邏輯924;TC—LEVEL寄存器918,與比較器922耦接并提供其輸出作為比較器922的輸入;以及三輸入復(fù)用器926,與TC_LEVEL寄存器918耦接并提供其輸出作為TC—LEVEL寄存器918的輸入。復(fù)用器926接收TC—LEVEL寄存器918的輸出作為第一輸入以保留正確值。復(fù)用器926接收遞減器932的輸出作為第二輸入,而此遞減器932的輸入是TC一LEVEL寄存器918的輸出。復(fù)用器926接收遞增器934的輸出作為第三輸入,而此遞增器932的輸入來自加法器936,此加法器936將TC—LEVEL寄存器918的輸出加上乘法器938的輸出,該乘法器938把TC—RATE912乘2。TC一RATE9I2指示此線程上下文的預(yù)計執(zhí)行速度;即,每一單位時間內(nèi)所欲完成的指令數(shù)目。在圖9的實施例中,TC_RATE912指示此線程上下文在每16個時鐘周期內(nèi)應(yīng)完成的指令數(shù)目。雖然在圖9中僅顯示一個邏輯,但是在策略管理器604中對每一個線程上下文復(fù)制此邏輯,以對于每一個線程上下文產(chǎn)生PMJPC—block654和PM—PC_priority652信號,以及接收PM—TC—state642、PM—TC」nst—committed644、PM—TC—inst—issued646和PM—gclk658信號。[(H12]策略管理器604使用改良的漏水桶算法以達(dá)成調(diào)度器108的高級線程調(diào)度策略。TC一LEVEL寄存器918模擬水桶中的水位。TC_LEVEL918實質(zhì)上是度量線程上下文待執(zhí)行的工作數(shù)量。在一個實施例中,TC—LEVEL寄存器918包含12位寄存器,初始化為零。控制邏輯924產(chǎn)生控制信號928,以控制復(fù)用器926選擇哪一個輸入。每32個時鐘周期,復(fù)用器926選取遞增器936的輸出,以儲存在TC—LEVEL寄存器918中,其會使TC—LEVEL寄存器918增加(TC—RATE*2+1)。在一個實施例中,根據(jù)TC—RATE912進(jìn)行的TC—LEVEL寄存器918更新之間的時鐘周期數(shù)也是可編程的。在其它的時鐘周期,如果PM—TC—inst—committed信號644指示在此線程上下文中的一個指令被承諾執(zhí)行,則復(fù)用器926選取遞減器932的輸出以將TC—LEVEL918遞減。因此,軟件可以通過調(diào)整此線程的TCSchedule寄存器902的TC—RATE912值,來影響此線程上下文水桶的虛擬水位。在圖9的實施例中,TC—RATE912的值指示微處理器100在每16個時鐘周期內(nèi)針對該線程上下文執(zhí)行的指令數(shù)目。當(dāng)此漏水桶內(nèi)的水位增加時,水壓也會增加,會導(dǎo)致水以較高的速率漏出。類似的,TC—LEVEL_PARAM字段904/906/908會被編成為單調(diào)地增加值,以定義虛擬水壓范圍。比較器922會比較TC—LEVEL918和TC—LEVEL—PARAMs904/906/908并提供其結(jié)果至控制邏輯924,以根據(jù)TC—LEVEL918所顯示的虛擬水壓范圍來產(chǎn)生PM—PC_priority652信號。如圖9中所示的漏水桶內(nèi),如果TC—LEVEL918的最高4位高于TC_LEVEL—PARAM3904的話,控制邏輯924產(chǎn)生一個值是3(最高優(yōu)先級)的PM—PCj)riority652信號;如果TC—LEVEL918的最高4位介于TC—LEVEL—PARAM3904和TC_LEVEL_PARAM2卯6的值之間的話,控制邏輯924產(chǎn)生一個值是2的PM—PC_priority652信號;如果TC_LEVEL918的最高4位介于TC—LEVEL—PARAM2906和TC—LEVEL—PARAM1908的值之間的話,控制邏輯924產(chǎn)生一個值是1的PM—PCjriority652信號;如果TC—LEVEL918的最高4位低于TCJEVEL—PARAM1908的話,控制邏輯924產(chǎn)生一個值是O(最低優(yōu)先級)的PM—PC_priority652信號。類似的,PM—PC_priority652值增加時也會增加派送調(diào)度器602對于此線程上下文發(fā)出指令的壓力,而PM_PC_priority652值減小也會減少派送調(diào)度器602對于此線程上下文發(fā)出指令的壓力。如之前所描述的,在某些使用微處理器的應(yīng)用中,不同的線程上下文或許需要不同的指令執(zhí)行速率,這可以使用TC—RATE字段912來設(shè)定。此外,不同的線程上下文需要不同的分辨率,即,在不同吋間段測量指令執(zhí)行速度。也就是說,某些線程雖然并不需要高的執(zhí)行速度,似是并不會在最短時間段內(nèi)缺乏指令執(zhí)行。S卩,此線程需要特殊的服務(wù)質(zhì)量??梢杂蓤D9中以及上述說明觀察到,TC—LEVEL—PARAMs904/906/908可以用來提供每一線程需要的分辨率。通過分配TCJLEVEL—PARAMs904/906/908彼此互相靠近,可以達(dá)到一個高分辨率相對而言,通過分配TC_LEVEL_PARAMs904/906/908彼此互相分離較遠(yuǎn),可以達(dá)到.-個低分辨率。因此,通過對每線程上K文調(diào)整TC—LEVEL—PARAMs904/906/908以達(dá)到此指令執(zhí)行速率的所需分辨率,軟件可以經(jīng)由策略管理器604達(dá)到所需的服務(wù)質(zhì)量。如果OV位914被設(shè)置,則控制邏輯924會忽略TC—LEVEL—PARAMs904/906/908、TC—LEVEL918和TC—RATE912的值,而是在PM—PC_priority652信號上產(chǎn)生等于PRIO字段916的值。這可使軟件略過此漏水桶策略,且在需要時直接控制一個或多個線程上下文的優(yōu)先級。在一個實施例中,如果TC—LEVEL918飽和至最大值且持續(xù)預(yù)定時鐘周期數(shù),則微處理器IOO會發(fā)出中斷信號以使能軟件在更高級調(diào)整線程調(diào)度,特別是改變一個或多個TCSchedule寄存器902內(nèi)的值。在一個實施例中,此中斷可以由軟件屏蔽。在一個實施例中,微處理器100指令集包括禮讓YIELD指令,線程上下文執(zhí)行該指令來命令調(diào)度器IOS停止對此線程上下文發(fā)出指令,直到一個特別事件發(fā)生為止。在一個實施例中,當(dāng)一個線程被禮讓,策略管理器604會暫時禁止對此線程的TC—LEVEL918的更新,所以此線程的PM—PC_priority會被保留直到此線程被解除禮讓為止。在另一個實施例中,策略管理器604會繼續(xù)對此線程的TC一LEVEL918更新,應(yīng)該會導(dǎo)致此線程的PM—PC_priority增加,所以當(dāng)此線程被解除禮讓時,其會暫時有一個高優(yōu)先權(quán)以幫助此線程實質(zhì)上啟動。在一個實施例中,策略管理器604對一個禮讓線程的行為是可由軟件編程的。必須了解的是,雖然在此實施例中,描述了特定數(shù)目的位被用來指定PM—TC_priority652、TC—LEVEL—PARAMs904/906/908、TC—RATE912、TC_LEVEL918等字段,但是調(diào)度器108并不局限在使用這些值的實施例中;而是,調(diào)度器108可以配置為使用其它不同數(shù)目的位、優(yōu)先級、級、速率等,根據(jù)微處理器100特定作業(yè)的需求來調(diào)整。更進(jìn)一步而言,雖然上述策略管理器604描述為使用一種改良式漏水桶線程調(diào)度策略,但是同樣地可以了解的是策略管理器604也可以配置為使用其它的線程調(diào)度策略,而仍舊。J以享受到二分化調(diào)度器108的優(yōu)點。例如,在一個實施例中,策略管理器604使用簡單的輪循線程調(diào)度策略,其中所有線程上下文的PM一TCjriority652輸出都是相同的值。在另一個實施例中,策略管理器604使用時間分割的線程調(diào)度策略,其中PM_TC_priority652根據(jù)一個線程上下文的TCSchedule寄存器902中指定的多個連續(xù)時鐘周期,在該多個連續(xù)時鐘周期內(nèi)對該線程上下文輸出最高優(yōu)先級的值,然后,再根據(jù)另一個線程上下文的TCSchedule寄存器902中指定的(可能不同的)多個連續(xù)時鐘周期,在該多個連續(xù)時鐘周期內(nèi)對該另一線程上下文輸出最高優(yōu)先級的值,并以時間分割的方式如此對每一線程上下文運作一段時間。在一個實施例中,微處理器100指令集包含F(xiàn)ORK指令,用來分配一個可用線程上下文以及調(diào)度此新分配線程上下文內(nèi)的一個新線程的執(zhí)行。在一個實施例中,當(dāng)一個線程上下文通過RORK指令得到一個新線程上下文時,母線程的TC—RATE912會均等地分配在它自己和該子線程上下文之間,即,此新的TC一RATE912會是舊的TC—RATE912除以2。這會具有防止一個線程上下文要求超過它原始分配到的處理帶寬的優(yōu)點。如前所描述過的,分為兩部分的調(diào)度器108可以使得位于處理器內(nèi)核606內(nèi)的派送調(diào)度器602相對簡單,如此可以使得派送調(diào)度器602具有較小的面積以及耗能,同時可以將與應(yīng)用復(fù)雜度相關(guān)的線程調(diào)度策略安置于處理器內(nèi)核606外的策略管理器604中。這種安排的優(yōu)點是,因為某些運用并不需要復(fù)雜的策略管理器604,如此就不會像在調(diào)度器108不是分為兩部分的情況下那樣,對所冇的應(yīng)用都額外增加面積及耗能需求。請參閱圖10,為根據(jù)本發(fā)明實施例圖9的策略管理器604的操作流程圖。雖然在圖10的流程圖中,僅顯示單一線程上下文的操作,但圖10的操作適用于策略管理器604內(nèi)對于每一線程上下文的運作。此流程從方塊1002開始。在方塊1002,策略管理器604將TC—level918初始化為零。此流程繼續(xù)至方塊1004。在方塊1004,策略管理器604等待PM—gclk658的一個時鐘信號。此流程繼續(xù)至方塊1006。在判定方塊1006,策略管理器604判定從上次流程來到此判定方塊1006后是否已經(jīng)過32個PM—gclk658時鐘信號。如果沒有的話,流程前進(jìn)到另一個判定方塊1012;否則,此流程繼續(xù)至方塊1008。在方塊1008,將TC—level918的值增加TC一RATE值的兩倍加一。此流程繼續(xù)至判定方塊1012。在判定方塊1012,策略管理器604判定PM—TC_instr—committed644是否為真。如果不是的話,流程前進(jìn)到另一個判定方塊1016;否則,此流程繼續(xù)至方塊1014。在方塊1014,將TC—level918的值遞減一。此流程繼續(xù)至判定方塊1016。在判定方塊1016,策略管理器604判定OV位914是否被設(shè)置。如果沒有的話,流程前進(jìn)到另一個判定方塊1022;否則,此流程繼續(xù)至方塊1018。在方塊1018,策略管理器604會對PM_TC_priority652產(chǎn)生一相當(dāng)于PRI0916字段的值。此流程回到方塊1004。在判定方塊1022,策略管理器604判定TCJevd918是否大于TC_LEVEL—PARAM3904的值。如果沒有的話,流程前進(jìn)到另一個判定方塊1026;否則,此流程繼續(xù)至方塊1024。在方塊1024,策略管理器604對PM—TC_priority652產(chǎn)生值3(相當(dāng)于最高優(yōu)先級)。此流程["j到方塊1004。在判定方塊1026,策略管理器604判定TC—level918是否大于TC—LEVEL—PARAM2906的值。如果沒有的話,流程前進(jìn)到另一個判定方塊1032;否則,此流程繼續(xù)至方塊1028。在方塊1028,策略管理器604對PM—TC_priority652產(chǎn)生值2。此流程回到方塊1004。在判定方塊1032,策略管理器604判定TCJevel918是否大于TC_LEVEL_PARAM1908的值。如果沒有的話,流程前進(jìn)到方塊1036;否則,此流程繼續(xù)至方塊1034。在方塊1034,策略管理器604對PM—TC_priority652產(chǎn)生值1。此流程回到方塊1004。在方塊1036,策略管理器604對PM—TC_priority652產(chǎn)生值O(相當(dāng)于最低優(yōu)先級)。此流程回到方塊1004。請參閱圖11,為根據(jù)本發(fā)明一替代實施例圖6中的派送調(diào)度器(DS)602以及圖2中的指令選取邏輯202的一個方塊圖。圖11中的實施例與圖7的實施例類似,然而,圖11的實施例中的派送調(diào)度器(DS)602還包括指令預(yù)譯碼器1108和停頓可能性優(yōu)先級產(chǎn)生器1104。指令預(yù)譯碼器1108對指令1114進(jìn)行預(yù)譯碼,以產(chǎn)生關(guān)于此指令1114的寄存器使用信息1106。在一個實施例中,此寄存器使用信息1106指定寄存器堆112中的哪些寄存器被使用作為此指令的源寄存器,以及此源寄存器在執(zhí)行流水線U4中的哪一個階段需要被使用。此外,寄存器使用信息1106也會指定寄存器堆112中的哪個寄存器被使用作為此指令的目的寄存器,以及在執(zhí)行流水線114中的哪一個階段需要將此指令的結(jié)果存入此目的寄存器中。停頓可能性優(yōu)先級產(chǎn)生器1104根據(jù)寄存器使用信息1106以及從微處理器100流水線所收到的處理器狀態(tài)信息1112產(chǎn)生停頓W能性優(yōu)先級1102。處理器狀態(tài)信息1112可以包括,但不限定于一個負(fù)載是否在數(shù)據(jù)高速緩存118中丟失;此丟失負(fù)載是否已被提取出來;目前正在執(zhí)行流水線中執(zhí)行的其它指令的寄存器使用信息(可包括由指令預(yù)譯碼器1108產(chǎn)生的寄存器使用信息1106),特別是關(guān)于目的寄存器;執(zhí)行流水線中EHB指令的存在與否;算術(shù)邏輯單元(ALU)是否正在忙于執(zhí)行另一ALU指令;執(zhí)行流水線中介于正在被預(yù)譯碼的指令和其他指令之間的目前流水線階段數(shù)目;等等。在圖11的實施例中,此停頓可能性優(yōu)先級1102包括兩個位,其包含在介于可發(fā)出位746以及PM_TC_priority位652之間,以形成圖2中的6位DS—TC_priority208,供圖2中的指令選取邏輯202來選取欲選擇的指令204。在一替代實施例中,停頓可能性優(yōu)先級1102的兩個位與PMJTCjriority652的兩個位交錯。在一個實施例中,這些位從最高到最低按照以下的方式交錯停頓可能性優(yōu)先級1102的最高位、PM_TC_priority652的最高位、停頓可能性優(yōu)先級1102的最低位、PM_TC_priority652的最低位。此交錯的實施例可以保持執(zhí)行流水線114中的整體吞吐量。停頓可能性優(yōu)先級1102根據(jù)其寄存器的使用來指示此指令可以被執(zhí)行而不致于停頓的可能性程度。在一個實施例中,停頓可能性優(yōu)先級1102包括兩個位,以產(chǎn)生四個優(yōu)先級,并且利用以下描述的方式由停頓可能性優(yōu)先級產(chǎn)生器1104產(chǎn)生停頓可能性優(yōu)先級1102。一個指令會被設(shè)定為最高停頓可能性優(yōu)先級1102,如果其保證不會停頓的話。例如,此指令不具有寄存器依賴性;或是此指令與具有依賴性的另一指令之間有著足夠的流水線階段距離;或是此指令所需的數(shù)據(jù)已經(jīng)準(zhǔn)備好,如丟失負(fù)載數(shù)據(jù)已經(jīng)返回或是前一指令的結(jié)果已經(jīng)執(zhí)行完畢,因此不再與此指令關(guān)聯(lián)。一個指令通常會被設(shè)定為最低停頓可能性優(yōu)先級1102,如果其保證會停頓的話。如,此指令跟隨正在執(zhí)行的EHB指令;或是此指令是從不可高速緩存區(qū)域而來的負(fù)載;此指令是從線程間通訊(ITC)空間中一位置的加載/或到該位置的存儲;或是此指令由于依賴性,如寄存器依賴性,無法與它之前的另一指令背靠背地執(zhí)行??筛咚倬彺尕?fù)載指令通常會被設(shè)定為倒數(shù)第二低優(yōu)先級。-一個指令通常會被設(shè)定為次高優(yōu)先級,如果其并不保證不會停頓,但是有極高的可能性不會停頓的話,如在一個實施例中,此指令依賴于乘法、除法或浮點指令的結(jié)果。在--個實施例中,指令1114為此線程上下文在圖2中指令/滑動緩沖器106的讀取指針326處的指令206,即,此線程上下文中的指令206是下一個可被發(fā)出的指令。在另一個實施例中,考慮到改進(jìn)定時,指令預(yù)譯碼器1108為指令1114產(chǎn)生寄存器使用信息1106,1儲存此指令到圖1的指令/滑動緩沖器106中時,將寄存器使用信息1106與此指令1114一同存入指令/滑動緩沖器106。當(dāng)指令1114/206被從指令/滑動緩沖器106讀取時,會在此時將寄存器使用信息1106提供給停頓可能性優(yōu)先級產(chǎn)生器1104。即,在此實施例中,指令/滑動緩沖器106耦接于指令預(yù)譯碼器1108與停頓可能性優(yōu)先級產(chǎn)生器1104之間。請參閱圖12,為根據(jù)本發(fā)明實施例圖11的派送調(diào)度器602的操作流程圖。圖12的流程圖類似于圖8的流程圖,相似的方塊標(biāo)記為相似的參考數(shù)字。然而,在圖12的流程圖中,方塊808由方塊1208所取代。此外,在圖12的流程圖中,另有一個額外的方塊1205。此流程從方塊804至方塊1205。在方塊205,對每一個線程上下文而言,停頓可能性優(yōu)先級產(chǎn)生器1104根據(jù)圖U中的處理器狀態(tài)信息1112以及指令1114的寄存器使用信息U06對指令1U4產(chǎn)生停頓nJ能性優(yōu)先級1102。此流程繼續(xù)至方塊806。在判定方塊806,派送調(diào)度器602通過檢驗每--線程上下文的可發(fā)出信號746,來判定是否有任何線程上下文,其中有可執(zhí)行的指令206。如果沒有的話,流程回到方塊804直到至少一個線程上—F文中有可執(zhí)行的指令206;否則,此流程繼續(xù)至方塊1208。在方塊1208,對每一線程上下文,派送調(diào)度器602根據(jù)此線程上下文的可發(fā)出位746、將要針對此線程上下文派送的下一指令206的停頓可能性優(yōu)先級1102、此線程上下文的PM—TC_priority652和此線程上下文的PM—TCj3riority652的輪循位748,來產(chǎn)生此線程上下文的指令206的DS—TC_priority208。此流程繼續(xù)至方塊812。請參閱圖13,為根據(jù)本發(fā)明的一個替代實施例圖1中微處理器100的共享動態(tài)可分配滑動緩沖器的一個方塊圖。微處理器100包含圖1中的指令提取器104及調(diào)度器108。微處理器IOO也包含圖2中的指令選取邏輯202,其響應(yīng)于DS—TC_priority信號208而產(chǎn)生被選取指令204輸出。微處理器100也包含多個線程上下文分別對應(yīng)的多個指令緩沖器1306,其中保存圖1中的指令提取器104所取出的指定。微處理器100也包含多個滑動緩沖器1312。在一個實施例中,指令緩沖器1306和滑動緩沖器1312各包含一個與圖3中的指令/滑動緩沖器106相似的先進(jìn)先出緩沖器(FIFO)。本發(fā)明的優(yōu)點是,l丙為滑動緩沖器1312是由各個線程上下文分享和動態(tài)分配的,所以滑動緩沖器1312的數(shù)目可以小于線程上下文的數(shù)目。圖13中顯示三個滑動緩沖器1312,分別標(biāo)示為滑動緩沖器A、滑動緩沖器B、和滑動緩沖器C。此外,每一個滑動緩沖器1312有-個相關(guān)的分配寄存器1314和鎖住寄存器1316。分配寄存器1314指示相關(guān)的滑動緩沖器1312是否被一個線程上下文所分配使用,如果是的話,哪一個線程上下文被分配到此滑動緩沖器1312。類似的是,鎖住寄存器1316指示相關(guān)的滑動緩沖器1312是否被鎖住由一個線程上下文使用,如果是的話,哪一個線程上下文使用該鎖住的滑動緩沖器1312。如何為線程上下文分配及鎖住滑動緩沖器1312將在以下圖14的敘述中詳細(xì)解釋。微處理器IOO也包含多個與每一個滑動緩沖器1312相關(guān)的復(fù)用器1322。每一個復(fù)用器1322的輸出耦接至與其相關(guān)的滑動緩沖器1312的輸入。每一個復(fù)用器1322將各個指令緩沖器1306的輸出作為其輸入。微處理器100還包含多個與每--個指令緩沖器1306相關(guān)的復(fù)用器1324。每一個復(fù)用器1324向指令選擇邏輯202輸出圖2中的其各自線程上下文的指令。每一個復(fù)用器1324的一個輸入端接收其各自的指令緩沖器1306的輸出。每一個復(fù)用器1324將各個滑動緩沖器1312的輸出作為其余的輸入。不像圖2中的指令/滑動緩沖器106,圖13中的滑動緩沖器501312不同于指令緩沖器1306,且由多個線程上下文分享和視需要動態(tài)地分配。這潛在地提供了更有效率地指令緩沖方案,特別是,在相同空間及功率下提供更高的性能,或是相同的性能下需要較少的空間及功率。微處理器100還包括緩沖器控制邏輯1332以控制指令緩沖器1306、滑動緩沖器1312、復(fù)川器1322和1324、分配寄存器1314以及鎖住寄存器1316的運作。指令緩沖器1306和滑動緩沖器1312的運作將在以下圖14的敘述中詳細(xì)解釋。請參閱圖14,為根據(jù)本發(fā)明實施例圖13的滑動緩沖器1312的操作流程圖。每一個流程圖顯示圖13中的指令緩沖器1306和滑動緩沖器1312響應(yīng)于不同的一個事件或一組事件的運作。第一個流程圖從方塊1404開始。在方塊1404,圖6中的派送調(diào)度器602從指令緩沖器1306發(fā)出一個指令。必需注意的是,指令提取器104持續(xù)地將指令寫入與一個線程上下文相關(guān)的指令緩沖器1306,特別是,將在方塊1404發(fā)出的指令寫入相關(guān)的指令緩沖器1306。此流程繼續(xù)至判定方塊1406。[(M50]在判定方塊1406,緩沖器控制邏輯1332通過讀取圖13中的分配寄存器1314,來判定-一個滑動緩沖器1312是否已分配給此線程上下文。如果是的話,流程繼續(xù)至方塊1412;否則,此流程繼續(xù)至方塊1408以判定是否有滑動緩沖器1312可分配給此線程上下文。在判定方塊1408,緩沖器控制邏輯1332通過讀取圖13中的鎖住寄存器1316,來判定每一滑動緩沖器1312是否皆已被鎖住。如果不是的話,流程繼續(xù)至方塊1414;否則,此流程結(jié)束,因為沒有滑動緩沖器1312可分配給此線程上下文,這隱含著如果此線程上下文在其后被執(zhí)行流水線清空的話,此被清空的指令必須重新提取。在方塊1412,在方塊1404中派送的指令此時被寫入先前分配給此線程上下文的滑動緩沖器1312中,且將此指令從指令緩沖器1306中移除。流程結(jié)束于方塊1412。在方塊1414,緩沖器控制邏輯1332分配一個滑動緩沖器1312給此線程上下文。在一個實施例中,緩沖器控制邏輯1332通過將此線程上下文標(biāo)識符寫入與所分配的滑動緩沖器1312相關(guān)的分配寄存器1314中,來分配此滑動緩沖器1312給此線程上下文。在一個實施例中,緩沖器控制邏輯1332分配最空的滑動緩沖器1312。在另一個實施例中,緩沖器控制邏輯1332會根據(jù)最近最少使用的原則來分配此滑動緩沖器1312。而在另一個實施例中,緩沖器控制邏輯1332根據(jù)最近最少未鎖住的原則來分配此滑動緩沖器1312。而在又一個實施例中,緩沖器控制邏輯1332根據(jù)其線程上下文目前有最低優(yōu)先級的原則來分配此滑動緩沖器1312。流程從方塊1414前進(jìn)至方塊1412以將指令寫入所分配的滑動緩沖器1312。第二個流程圖從方塊1442開始。在方塊442,圖1中的執(zhí)行單元114為此線程上下文發(fā)出一個指令停頓事件信號。此流程繼續(xù)至方塊1444。在方塊1444,圖1中的執(zhí)行單元114為此線程上下文發(fā)出--個TC—flush信號122。此流程繼續(xù)至判定方塊1446。在判定方塊1446,緩沖器控制邏輯1332通過讀取圖13中的分配寄存器1314,判定滑動緩沖器1312是否已分配給此線程上下文。如果不是的話,流程繼續(xù)至方塊1452;否則,此流程繼續(xù)至方塊1448。在方塊1448,緩沖器控制邏輯1332將為此線程上下文分配的滑動緩沖器1312鎖住。在一個實施例中,緩沖器控制邏輯1332通過將此線程上下文標(biāo)識符寫入與此滑動緩沖器1312相關(guān)的鎖住寄存器1316中,來鎖住此線程上下文的滑動緩沖器1312。此流程結(jié)束于方塊1448。在方塊1452,緩沖器控制邏輯1332將由執(zhí)行單元114所清空的此線程上下文的指令緩沖器1306清空。此流程結(jié)束于方塊1452。第三個流程圖從方塊1482開始。在方塊1482,執(zhí)行單元114為此線程上下文發(fā)出一個相關(guān)的未停頓事件信號128。此流程繼續(xù)至方塊1484。在判定方塊1484,緩沖器控制邏輯1332通過讀取圖13中的鎖住寄存器1316,來判定此線程上下文的滑動緩沖器1312是否己被鎖住。如果是的話,流程繼續(xù)至方塊1488;否則,此流程繼續(xù)至方塊1486。在方塊1486,調(diào)度器108從與此線程上下文相關(guān)的指令緩沖器1306發(fā)出該線程上下文的指令。必需注意的是,這些指令必須重新被提取進(jìn)入指令緩沖器1306,因為沒有此線程上下文的滑動緩沖器1312被鎖住。此流程結(jié)束于方塊I486。在方塊1488,調(diào)度器108從在第二流程圖的方塊1448中為此線程上下文鎖住的滑動緩沖器1312發(fā)出此線程上下文的指令,直到此滑動緩沖器1312變空或此滑動緩沖器1312被清空為止,舉例而言,該變空或清空響應(yīng)于例外或中斷或分支錯誤預(yù)測更正。必需注意的是,這些指令具有不需要重新被提取的優(yōu)點。此流程繼續(xù)至方塊1492。在方塊1492,緩沖器控制邏輯1332將在第二流程圖的方塊1448中為此線程上下'文鎖住的滑動緩沖器1312解除鎖定。此流程結(jié)束于方塊1492。請參閱圖15,為根據(jù)本發(fā)明的一個替代實施例圖1中微處理器100的單一指令/滑動緩沖器可以被所有的線程上下文共享的一個方塊圖。圖15中的微處理器100包含圖1中的指令提取器104及調(diào)度器108。微處理器100也包含單一指令/滑動緩沖器1506,指令提取器104將所有線程上下文的指令提取到該的指令/滑動緩沖器1506中。微處理器100也包含緩沖器控制邏輯1502,其從調(diào)度器108接收圖2中的DS_TC_priority信號208。緩沖器控制邏輯1502控制指令/滑動緩沖器1506產(chǎn)生圖2中的被選取指令204,以提供給執(zhí)行單元114。圖15中的單一指令/滑動緩沖器1506是隨機存取內(nèi)存(RAM),用于存儲來自所有線程上下文的指令。其結(jié)果是,緩沖器控制邏輯1502以類似于先前對于圖3所描述的方式,保持針對所有線程上下文的單一寫入指針(WP)以及充滿計數(shù)器。特別是,寫入指針(WP)指定隨機存取內(nèi)存1506的下一個寫入位置的地址,無論該指令的線程上下文為何。類似地,此充滿計數(shù)器在每一次一個指令寫入隨機存取內(nèi)存1506時遞增,而在每一個一個指令被承諾執(zhí)行時遞減,無論該指令的線程上下文為何。相反地,緩沖器控制邏輯1502以類似于先前對于圖3所描述的方式,對每個線程上下文保持一個分別的讀取指針(RP)、承諾指針(CP)以及空計數(shù)器。特別是,讀取指針(RP)指定針對各自的線程上下文而言隨機存取內(nèi)存1506的下一個讀取位置的地址;承諾指針(CP)會指定針對各自的線程上下文而言隨機存取內(nèi)存中的下一個被承諾執(zhí)行的指令地址;且空計數(shù)器在每一次針對各自的線程上下文而言一個指令'巧入隨機存取內(nèi)存1506時遞增,而在每--次針對各自的線程l-.卜'文而^—調(diào)度器108從隨機存取內(nèi)存1506讀取一個指令時遞減。在.個實施例屮,緩沖器控制邏輯1502對每--'線程上下文保持一個鏈表,其按照指令被提取到隨機存取內(nèi)存1506中的次序,指定隨機存取內(nèi)存1506中此線程上下文的有效指令的位置。此鏈表會在每一次一個指令寫入隨機存取內(nèi)存1506中時加以更新,且用來更新每一線程上下文的讀取指針(RP)與承諾指針(CP)。緩沖器控制邏輯1502在調(diào)度器108需要指令時,從此調(diào)度器108接收到DS—TCjriority信號208,作為響應(yīng),緩沖器控制邏輯1502選取一個線程上下文來派送指令,以及產(chǎn)生隨機存取內(nèi)存1506中合適的地址,以導(dǎo)致隨機存取內(nèi)存1506為由DS—TC_priority信號208指示的具有最高優(yōu)先級的線程上下文輸出指令204。雖然本發(fā)明及其目的、特征、與優(yōu)點皆已詳細(xì)揭露,但本發(fā)明的范疇還包括其它尚未提及的實施例,例如,本發(fā)明的實施例揭露調(diào)度器108分為兩部分,且參數(shù)化的漏水桶調(diào)度策略包含在微處理器內(nèi)核606外的調(diào)度器108部分中,即,在微處理器中100的使用者可調(diào)整部份之外,然而,應(yīng)該明了的是,參數(shù)化的漏水桶調(diào)度策略并不限于二分化的調(diào)度器,也可以適用于不是二分化的調(diào)度器,或是適用于以任何不同方式分割的調(diào)度器。此外,雖然二分化的調(diào)度器描述為策略管理器604使用漏水桶調(diào)度策略,但此二分化調(diào)度器108并不限于使用漏水桶調(diào)度策略,而是,該二分化調(diào)度器的策略管理器所使用的線程調(diào)度策略可以使用任何的線程調(diào)度算法。更進(jìn)一步而言,雖然在一個實施例中,策略管理器604根據(jù)一個指令是否被承諾執(zhí)行來更新線程上下文的優(yōu)先級,但是在其它的實施例中,策略管理器604也可以根據(jù)從微處理器內(nèi)核606所接收的其它信息來更新線程上下文的優(yōu)先級,如根據(jù)一個指令是否被發(fā)出(諸如由PM_TC—inst—issued信號646來指示)的指示、--個指令是否被完成或從微處理器100中退出的指示、或是其它指令執(zhí)行相關(guān)的指示。此外,雖然一種特別的計算被描述來使用TC_RATE912更新TC—LEVEL寄存器918,此TC一LEVEL寄存器918也可以用TC_RATE912按照其他方式來更新。最后,以上所述利用各種實施例詳細(xì)說明本發(fā)明,而非限制本發(fā)明的范圍,而且熟知此類技藝人士皆能明了,適當(dāng)?shù)母淖兗罢{(diào)整,仍將不失本發(fā)明的要義所在,還不脫離本發(fā)明的精神和范圍。本發(fā)明除以硬件實施外(如,中央處理單元(CPU)中的或搭配使用的硬件、微處理器、微控制器、數(shù)字信號處理器、處理器內(nèi)核、片上系統(tǒng)(SOC)、或其它可變成組件),還可以軟件(如,各種形式的,如源程序、目標(biāo)程序和機器語言形式的計算機可讀代碼、程序代碼、指令與/或數(shù)據(jù))實現(xiàn),該軟件設(shè)置在例如算機可用(如可讀)介質(zhì)中。這些軟件可實現(xiàn)在此描述的裝置與方法的功能、制造、模塊化、仿真、描述且/或測試。例如,以上的功能可通過使用一般編程語言(如C、C++、JAVA等)、GDSII數(shù)據(jù)庫、包括VorilogHDL、VHDL等的硬件描述語言(HDL)、或是其它可用程序、數(shù)據(jù)庫、與/或電路圖(即原理圖)輸入工具達(dá)成。前述的軟件可位于任何計算機可用(如可讀)介質(zhì)中,這些介質(zhì)可包括半導(dǎo)體內(nèi)存、磁盤、光盤(如CD-ROM、DVD-ROM等)等,且可以作為計算機數(shù)據(jù)信號包含在計算機可用(可讀)傳輸介質(zhì)(如載波或其它數(shù)字、光學(xué)、或模擬等介質(zhì))中。如此,軟件可通過包括互聯(lián)網(wǎng)和內(nèi)聯(lián)網(wǎng)的網(wǎng)絡(luò)傳輸。應(yīng)該理解,這里描述的本發(fā)明的裝置和方法可以包括在半導(dǎo)體知識產(chǎn)權(quán)內(nèi)核中,如微處理器內(nèi)核(如,以HDL實現(xiàn)),并可以在集成電路生產(chǎn)中轉(zhuǎn)化為硬件。當(dāng)然,本發(fā)明的裝置和方法可以軟件與硬件組合的方式實施。因此,本發(fā)明不應(yīng)該限制于上述任何實施例中,而是應(yīng)依照權(quán)利要求及等價原則來定義。權(quán)利要求1.一種多線程處理器,被配置為同時執(zhí)行多個線程,包括執(zhí)行流水線,用于執(zhí)行所述多個線程的指令,被配置為響應(yīng)于發(fā)到所述執(zhí)行流水線的一個指令偵測到停頓事件,其中所述執(zhí)行流水線在沒有錯誤地執(zhí)行停頓線程的情況下不能繼續(xù)執(zhí)行所述指令,其中所述停頓線程包括所述指令,其中所述停頓線程為所述多個線程之一;指示所述停頓線程及所述停頓事件;以及響應(yīng)于偵測到所述停頓事件,清空所述執(zhí)行流水線,從而使所述執(zhí)行流水線能夠在所述清空后繼續(xù)執(zhí)行指令;以及線程調(diào)度器,耦接至所述執(zhí)行流水線,被配置為響應(yīng)于所述執(zhí)行流水線指示出所述停頓線程,發(fā)出除了所述停頓線程以外的所述多個線程的指令至所述執(zhí)行流水線。2.如權(quán)利要求1所述的處理器,其中所述執(zhí)行流水線被配置為在清空所述執(zhí)行流水線后,只繼續(xù)執(zhí)行除了所述停頓線程以外的所述多個線程的指令。3.如權(quán)利要求1所述的處理器,其中所述線程調(diào)度器還被配置為,判定所述停頓事件已經(jīng)終止,并且響應(yīng)于所述停頓事件終止,重新發(fā)出所述停頓線程的指令至所述執(zhí)行流水線。4.如權(quán)利要求3所述的處理器,其中所述線程調(diào)度器包括多個儲存元件,每一個儲存元件儲存所述多個線程中相應(yīng)一個的狀態(tài),其中所述線程調(diào)度器被配置為響應(yīng)于所述停頓事件而儲存第一預(yù)定值在所述儲存元件中以及響應(yīng)于所述停頓事件終止而儲存第二預(yù)定值在所述儲存元件中,其中所述線程調(diào)度器被配置為只發(fā)送所述多個線程中其相應(yīng)儲存元件具有所述第二預(yù)定值的線程的指令到所述執(zhí)行流水線。5.如權(quán)利要求1所述的處理器,其屮所述淸^執(zhí)行流水線包括只從所述執(zhí)行流水線清空所述停頓線程。6.如權(quán)利要求1所述的處理器,還包括指示器,耦接至所述執(zhí)行流水線,用于指示所述停頓線程是否為所述處理器的所述多個線程中唯一的可執(zhí)行線程;其中所述執(zhí)行流水線被配置為如果所述指示器指示所述停頓線程為唯一的可執(zhí)行線程,則進(jìn)行停頓而不是清空。7.如權(quán)利要求6所述的處理器,其中所述執(zhí)行流水線被配置為在所述停頓事件終止后,不再停頓且繼續(xù)執(zhí)行所述指令。8.如權(quán)利要求6所述的處理器,其中所述執(zhí)行流水線被配置為如果所述指示器隨后指示所述停頓線程不再是唯-'的可執(zhí)行線程,則隨后清空所述執(zhí)行流水線,從而使所述執(zhí)行流水線能夠在所述清空后繼續(xù)執(zhí)行指令。9.如權(quán)利要求6所述的處理器,其中如果所述停頓線程是所述多個線程中的一個活動線程且目前沒有被阻止發(fā)出指令的話,則所述停頓線程是所述處理器的所述多個線程中唯一的可執(zhí)行線程。10.如權(quán)利要求1所述的處理器,其中所述指令指定一個操作數(shù),用在所述指令所指定的一個操作中,其中所述停頓事件包括所述指令到達(dá)所述執(zhí)行流水線中需要所述操作數(shù)來進(jìn)行所述操作的階段,而所述操作數(shù)無法得到。11.如權(quán)利要求10所述的處理器,還包括高速緩存,耦接至所述執(zhí)行流水線,用于高速緩沖來自系統(tǒng)內(nèi)存的數(shù)據(jù),其中所述操作數(shù)無法得到是因為所述操作數(shù)從所述高速緩存中丟失。12.如權(quán)利要求IO所述的處理器,其中所述操作數(shù)無法得到是因為所述操作數(shù)是先前指令的不可得到的結(jié)果。13.如權(quán)利要求12所述的處理器,其中所述先前指令包括算術(shù)指令。14.如權(quán)利要求13所述的處理器,其中所述算術(shù)指令包括除法指令。15.如權(quán)利要求1所述的處理器,其中所述停頓事件包括所述指令在'個未完成指令之后,該未完成指令正在訪問所述處理器的同步儲存地址空間。16.如權(quán)利要求1所述的處理器,其中所述停頓事件包括所述指令在執(zhí)行危險障礙指令之后。17.如權(quán)利要求1所述的處理器,其中所述停頓事件包括所述指令需要所述執(zhí)行流水線中無法得到的硬件資源。18.如權(quán)利要求17所述的處理器,其中所述無法得到的硬件資源包括其它指令正在使用的除法器電路。19.如權(quán)利要求17所述的處理器,其中所述無法得到的硬件資源包括加載隊列槽,其中所述處理器的所有加載隊列槽正在被其它指令使用,其中所述加載隊列槽包括用于儲存正在進(jìn)行的高速緩存重填數(shù)據(jù)的緩沖器。20.如權(quán)利要求17所述的處理器,還包括高速緩存,耦接至所述執(zhí)行流水線,用于高速緩沖來自系統(tǒng)內(nèi)存的指令,其中所述指令是進(jìn)行所述高速緩存低級管理的指令,其中所述停頓事件包括所述指令在其它指令仍正在進(jìn)行所述高速緩存低級管理時到達(dá)所述執(zhí)行流水線。21.如權(quán)利要求I所述的處理器,其中所述多線程處理器包括單一執(zhí)行流水線。22.如權(quán)利要求1所述的處理器,其中所述多線程處理器包括多個執(zhí)行流水線。23.如權(quán)利要求1所述的處理器,還包括指令提取流水線,用于提取指令,供所述線程調(diào)度器派送到所述執(zhí)行流水線;至少一個滑動緩沖器,耦接在所述指令提取流水線與所述執(zhí)行流水線之間,配置為在所述多個線程的所述指令被派送至所述執(zhí)行流水線后儲存所述指令;其中只有所述執(zhí)行流水線響應(yīng)于所述停頓事件而被清空,而所述指令提取流水線不會響應(yīng)于所述停頓事件而被清空,其中所述線程調(diào)度器被配置為隨后從所述至少-一個滑動緩沖器中,重新發(fā)出響應(yīng)于所述停頓事件而從所述執(zhí)行流水線被清空的指令。24.如權(quán)利要求1所述的處理器,其中由一種計算機程序產(chǎn)品實現(xiàn)所述處理器,所述計算機程序產(chǎn)品包括計算機可用介質(zhì),所述計算機可用介質(zhì)具有計算機可讀程序代碼,其中所述計算機程序產(chǎn)品與計算設(shè)備一起使用。25.如權(quán)利要求1所述的處理器,其中由傳輸介質(zhì)中所包含的包括計算機可讀程序代碼的計算機數(shù)據(jù)信號提供了所述調(diào)度器。26.—種在具有執(zhí)行流水線和線程調(diào)度器的多線程處理器中用于增加所述執(zhí)行流水線的使用效率的方法,所述線程調(diào)度器用于調(diào)度在所述處理器上同時執(zhí)行的多個線程的指令派送,所述方法包括-響應(yīng)于派送到所述執(zhí)行流水線的一個指令而偵測到停頓事件;響應(yīng)于所述偵測到停頓事件而指示所述停頓事件和停頓線程,其中所述停頓線程包括所述指令,其中所述停頓線程為所述多個線程之一,其中所述執(zhí)行流水線在沒有錯誤地執(zhí)行所述停頓線程的情況下不能繼續(xù)執(zhí)行所述指令;響應(yīng)于所述偵測而清空所述執(zhí)行流水線;響應(yīng)于所述清空而繼續(xù)執(zhí)行指令;以及響應(yīng)于所述執(zhí)行流水線指示出所述停頓線程,而派送除了所述停頓線程以外的所述多個線程的指令寧;所述執(zhí)行流水線。27.如權(quán)利要求26所述的方法,其中所述繼續(xù)執(zhí)行指令包括只繼續(xù)執(zhí)行除了所述停頓線程以外的所述多個線程的指令。28.如權(quán)利要求26所述的方法,還包括判定所述停頓事件己經(jīng)終止;以及響應(yīng)于判定所述停頓事件已經(jīng)終止,重新派送所述停頓線程的指令至所述執(zhí)行流水線。29.如權(quán)利要求26所述的方法,其中所述清空所述執(zhí)行流水線包括只從所述執(zhí)行流水線清空所述停頓線程。30.如權(quán)利要求26所述的方法,還包括判定所述停頓線程是否為所述處理器的所述多個線程中唯一的可執(zhí)行線程;如果所述停頓線程為唯一的可執(zhí)行線程的話,則停頓所述執(zhí)行流水線而不是清空。31.如權(quán)利要求30所述的方法,還包括在所述停頓期間判定所述停頓事件已經(jīng)終止;響應(yīng)于所述判定所述停頓事件已經(jīng)終止,不再停頓所述執(zhí)行流水線且繼續(xù)執(zhí)行所述指令。32.如權(quán)利要求30所述的方法,還包括在所述停頓期間判定所述停頓線程不再是唯一的可執(zhí)行線程;響應(yīng)于在所述停頓期間判定所述停頓線程不再是唯一的nj執(zhí)行線程,清空所述執(zhí)行流水線,從而所述執(zhí)行流水線能夠在所述清空后繼續(xù)執(zhí)行指令。33.如權(quán)利要求26所述的方法,其中所述指令指定一個操作數(shù),用在由所述指令所指定的操作中,其中所述偵測所述停頓事件包括偵測到所述指令到達(dá)所述執(zhí)行流水線中需要所述操作數(shù)來進(jìn)行所述操作的階段,而所述操作數(shù)無法得到。34.如權(quán)利要求33所述的方法,其中所述處理器還包括高速緩存,用于高速緩沖來自系統(tǒng)內(nèi)存的數(shù)據(jù),其中所述操作數(shù)無法得到是因為所述操作數(shù)從所述高速緩存中丟失。35.如權(quán)利要求33所述的方法,其中所述操作數(shù)無法得到是因為所述操作數(shù)是先前指令的不可得到的結(jié)果。36.如權(quán)利要求35所述的方法,其中所述先前指令包括算術(shù)指令。37.如權(quán)利要求36所述的方法,其中所述算術(shù)指令包括除法指令。38.如權(quán)利要求26所述的方法,其中所述偵測所述停頓事件包括:偵測到所述指令在-—個未完成指令的后,該未完成指令正在訪問所述處理器的同步儲存地址空間。39.如權(quán)利要求26所述的方法,其中所述偵測所述停頓事件包括偵測到所述指令在在執(zhí)行危險障礙指令之后。40.如權(quán)利要求26所述的方法,其中所述偵測所述停頓事件包括偵測到所述指令需要所述執(zhí)行流水線中的無法得到的硬件資源。41.如權(quán)利要求40所述的方法,其中所述偵測到所述指令需要所述執(zhí)行流水線中的無法得到的硬件資源包括偵測到其它指令正在使用除法器電路。42.如權(quán)利要求40所述的方法,其中所述偵測到所述指令需要所述執(zhí)行流水線中的無法得到的硬件資源包括偵測到所述處理器中沒有可以提供的加載隊列槽,其中所述加載隊列槽包括用于儲存正在進(jìn)行的高速緩存重填數(shù)據(jù)的緩沖器。43.如權(quán)利要求40所述的方法,其中所述處理器還包括高速緩存,用于高速緩沖來自系統(tǒng)內(nèi)存的指令,其中所述指令是進(jìn)行所述高速緩存低級管理的指令,其中所述偵測到所述指令需要所述執(zhí)行流水線中的無法得到的硬件資源包括偵測到所述指令在其它指令仍正在進(jìn)行所述高速緩存低級管理時到達(dá)所述執(zhí)行流水線。44.如權(quán)利要求26所述的方法,其中所述處理器還包括指令提取流水線,用于提取指令以供所述調(diào)度器派送到所述執(zhí)行流水線;以及至少一個滑動緩沖器,耦接于所述指令提取流水線與所述執(zhí)行流水線之間,被配置為在所述多個線程的所述指令被派送至所述執(zhí)行流水線后儲存所述指令,所述方法還包括;響應(yīng)于所述停頓事件,只清空所述執(zhí)行流水線,而不清空所述指令提取流水線;在所述只清空所述執(zhí)行流水線,而不清空所述指令提取流水線之后,從所述至少一個滑動緩沖器重新發(fā)出響應(yīng)于所述停頓事件而從所述執(zhí)行流水線清空的指令。45.—種與計算設(shè)備一起使用的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括計算機可用介質(zhì),具有包含于所述介質(zhì)中的計算機可讀程序代碼,用于實現(xiàn)多線程處理器,該多線程處理器被配置為同時執(zhí)行多個線程,所述計算機可讀程序代碼包括第--程序代碼,提供執(zhí)行流水線,該執(zhí)行流水線用于執(zhí)行所述多個線程的指令,被配置為響應(yīng)于發(fā)¥.所述執(zhí)行流水線的--個指令而偵測到停頓事件,其中所述執(zhí)行流水線在沒有錯誤地執(zhí)行停頓線程的情況下不能繼續(xù)執(zhí)行所述指令,其中所述停頓線程包括所述指令,其中所述停頓線程為所述多個線程之一;指示所述停頓事件和所述停頓線程;以及響應(yīng)于偵測到所述停頓事件,清空所述執(zhí)行流水線,從而使所述執(zhí)行流水線能夠在所述清空后繼續(xù)執(zhí)行指令;以及第二程序代碼,提供耦接至所述執(zhí)行流水線的線程調(diào)度器,其被配置為響應(yīng)于所述執(zhí)行流水線指示出所述停頓線程,而發(fā)出除了所述停頓線程以外的所述多個線程的指令至所述執(zhí)行流水線。46.如權(quán)利要求45所述的計算機程序產(chǎn)品,其中所述計算機可讀程序代碼還包括第三程序代碼,提供所述線程調(diào)度器,其中所述線程調(diào)度器還被配置為判定所述停頓事件已經(jīng)終止,且響應(yīng)于所述停頓事件己經(jīng)終止而重新發(fā)出所述停頓線程的指令至所述執(zhí)行流水線。47.如權(quán)利要求45所述的計算機程序產(chǎn)品,其中所述計算機可讀程序代碼還包括第三程序代碼,提供所述執(zhí)行流水線,其中所述執(zhí)行流水線還被配置為響應(yīng)于所述偵測到所述停頓事件,而只從所述執(zhí)行流水線清空所述停頓線程。48.如權(quán)利要求45所述的計算機程序產(chǎn)品,其中所述計算機可讀程序代碼還包括第三程序代碼,提供耦接至所述執(zhí)行流水線的指示器,用于指示所述停頓線程是否為所述處理器的所述多個線程中唯一的可執(zhí)行線程,其中所述執(zhí)行流水線被配置為如果所述指示器指示所述停頓線程為唯一的可執(zhí)行線程,則進(jìn)行停頓而不是清空。49.如權(quán)利要求48所述的計算機程序產(chǎn)品,其中所述計算機可讀程序代碼還包括第四程序代碼,提供所述執(zhí)行流水線,其中所述執(zhí)行流水線被配置為如果所述指示器隨后指示所述停頓線程不再是唯一的可執(zhí)行線程,則隨后清空所述執(zhí)行流水線。50.如權(quán)利要求45所述的計算機程序產(chǎn)品,其中所述計算機可讀程序代碼還包括第三程序代碼,提供指令提取流水線,用于提取指令以供所述線程調(diào)度器派送至所述執(zhí)行流水線;第四程序代碼,提供至少一個滑動緩沖器,該滑動緩沖器耦接于所述指令提取流水線與所述執(zhí)行流水線之間,被配置為儲存被派送至所述執(zhí)行流水線后的所述多個線程的所述指令,其中只有所述執(zhí)行流水線響應(yīng)于所述停頓事件而被清空,而所述指令提取流水線不會響應(yīng)于所述停頓事件而被清空,其中所述線程調(diào)度器被配置為隨后從所述至少一個滑動緩沖器重新發(fā)出響應(yīng)于所述停頓事件而從所述執(zhí)行流水線清空的指令。51.—種包含于傳輸介質(zhì)內(nèi)的計算機數(shù)據(jù)信號,包括計算機可讀程序代碼,用于提供多線程處理器,該多線程處理器被配置為同時執(zhí)行多個執(zhí)行線程,所述程序代碼包括第一程序代碼,提供執(zhí)行流水線,該執(zhí)行流水線用于執(zhí)行所述多個線程的指令,被配置為響應(yīng)于發(fā)至所述執(zhí)行流水線的--個指令而偵測到停頓事件,其中所述執(zhí)行流水線在沒有錯誤地執(zhí)行停頓線程的情況下不能繼續(xù)執(zhí)行所述指令,其中所述停頓線程包括所述指令,其中所述停頓線程為所述多個線程之一;指示所述停頓事件和所述停頓線程;以及響應(yīng)于偵測到所述停頓事件,清空所述執(zhí)行流水線,從而使所述執(zhí)行流水線能夠在所述清空后繼續(xù)執(zhí)行指令;以及第二程序代碼,提供耦接至所述執(zhí)行流水線的線程調(diào)度器,其被配置為響應(yīng)于所述執(zhí)行流水線指示出所述停頓線程,而發(fā)出除了所述停頓線程以外的所述多個線程的指令至所述執(zhí)行流水線。52.如權(quán)利要求51所述的計算機數(shù)據(jù)信號,其中所述計算機可讀程序代碼還包括第三程序代碼,提供所述線程調(diào)度器,其中所述線程調(diào)度器還被配置為判定所述停頓事件已經(jīng)終止,且響應(yīng)于所述停頓事件已經(jīng)終止而重新發(fā)出所述停頓線程的指令至所述執(zhí)行流水線。53.如權(quán)利要求51所述的計算機數(shù)據(jù)信號,其中所述計算機可讀程序代碼還包括第三程序代碼,提供所述執(zhí)行流水線,其中所述執(zhí)行流水線還被配置為響應(yīng)于所述偵測到所述停頓事件,而只從所述執(zhí)行流水線清空所述停頓線程。54.如權(quán)利要求51所述的計算機數(shù)據(jù)信號,其中所述計算機可讀程序代碼還包括第三程序代碼,提供耦接至所述執(zhí)行流水線的指示器,用于指示所述停頓線程是否為所述處理器的所述多個線程中唯一的可執(zhí)行線程,其中所述執(zhí)行流水線被配置為如果所述指示器指示所述停頓線程為唯一的可執(zhí)行線程,則進(jìn)行停頓而不是清空。55.如權(quán)利要求54所述的計算機數(shù)據(jù)信號,其中所述計算機可讀程序代碼還包括第四程序代碼,提供所述執(zhí)行流水線,其中所述執(zhí)行流水線被配置為如果所述指示器隨后指示所述停頓線程不再是唯一的可執(zhí)行線程,則隨后清空所述執(zhí)行流水線。56.如權(quán)利要求51所述的計算機數(shù)據(jù)信號,其中所述計算機可讀程序代碼還包括第三程序代碼,提供指令提取流水線,用于提取指令以供所述線程調(diào)度器派送至所述執(zhí)行流水線;第四程序代碼,提供至少一個滑動緩沖器,該滑動緩沖器耦接于所述指令提取流水線與所述執(zhí)行流水線之間,被配置為儲存被派送至所述執(zhí)行流水線后的所述多個線程的所述指令,其中只有所述執(zhí)行流水線響應(yīng)于所述停頓事件而被清空,而所述指令提取流水線不會響應(yīng)于所述停頓事件而被清空,其中所述線程調(diào)度器被配置為隨后從所述至少一個滑動緩沖器重新發(fā)出響應(yīng)于所述停頓事件而從所述執(zhí)行流水線清空的指令。全文摘要本發(fā)明提供一種同時執(zhí)行多個線程的多線程處理器。該處理器包括執(zhí)行流水線和線程調(diào)度器,該線程調(diào)度器派送多個線程的指令至執(zhí)行流水線。該執(zhí)行流水線偵測由一個所派送的指令導(dǎo)致的停頓事件,并清空執(zhí)行流水線,以繼續(xù)執(zhí)行其它線程的指令。該執(zhí)行流水線通知調(diào)度器哪一個線程導(dǎo)致停頓事件,該調(diào)度器停止派送該線程的指令,直到停頓條件終止為止。在一個實施例中,執(zhí)行流水線只清空包括導(dǎo)致該事件的指令的線程。在一個實施例中,如果該線程是唯一的可執(zhí)行線程,則執(zhí)行流水線停頓而不是清空。在一個實施例中,該處理器包括滑動緩沖器,將被清空的指令返回到該滑動緩沖器,從而不需要清空指令提取流水線,只需要清空執(zhí)行流水線。文檔編號G06F9/38GK101128797SQ200680003641公開日2008年2月20日申請日期2006年1月18日優(yōu)先權(quán)日2005年2月4日發(fā)明者圣杰·密斯辛,萊恩·C·肯特,達(dá)倫·M·瓊斯,麥克·G·詹森申請人:美普思科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1