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

在多線程處理器中改變線程優(yōu)先級的方法和裝置的制作方法

文檔序號:6415868閱讀:188來源:國知局

專利名稱::在多線程處理器中改變線程優(yōu)先級的方法和裝置的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及下列美國專利申請,這些申請的主題在此被納入作為參考(1)美國專利申請,題為“在多線程處理器中選擇線程切換事件的方法和裝置,系列號08/958,716,于1997年10月23日遞交,與本申請同時遞交;(2)美國專利申請,題為“多線程處理器系統(tǒng)中的線程切換控制”,系列號08/957,002,于1997年10月23日與本申請同時遞交;(3)美國專利申請,題為“在多線程處理器中保證前進的裝置和方法,系列號08/956,875,于1997年10月23日與本申請同時遞交;(4)美國專利申請,題為“在多線程處理器中強行線程切換的方法和裝置”,系列號08/956,577,于1997年10月23日遞交,與本申請同時遞交,(5)美國專利申請,題為“在多線程處理器中后臺完成指令及相關(guān)的取請求”,系列號773,572,于1996年12月27日遞交;(6)美國專利申請,題為“多入口全相關(guān)過渡高速緩存”,系列號761,378,于1996年12月9日遞交;(7)美國專利申請,題為“對從命令源到命令容納點的命令設(shè)定優(yōu)先級和路由的方法和裝置”,系列號761,380,于1996年12月9日受理;(8)美國專利申請,題為“命令追蹤處理過程的方法和裝置”,系列號761,379,于1996年12月9日遞交;(9)美國專利申請,題為“通過減小存儲器訪問等待延遲以增強數(shù)據(jù)處理系統(tǒng)中多線程操作的方法和系統(tǒng)”,系列號473,692,于1995年6月7日遞交;(10)美國專利5,778,243號,題為“存儲器的多線程單元”,1998年7月7日發(fā)布。一般而言,本發(fā)明涉及用于計算機數(shù)據(jù)處理系統(tǒng)的一種改進的方法和裝置,具體而言,本發(fā)明涉及在處理器硬件中實現(xiàn)的一種改進的高性能多線程計算機數(shù)據(jù)處理系統(tǒng)和方法?,F(xiàn)代計算機的基本結(jié)構(gòu)包括與外部世界進行信息通信的外圍裝置;這些外圍裝置可以是鍵盤、監(jiān)視器、磁帶驅(qū)動器、與網(wǎng)絡(luò)連接的通信線路等。在計算機的基本結(jié)構(gòu)中還包括從外部世界接收這種信息,處理這種信息及向外部世界發(fā)布這種信息所必須的硬件,包括總線(bus)、存儲器單元、輸入/輸出(I/O)控制器、存儲裝置、以及至少一個中央處理單元(CPU)等。CPU是系統(tǒng)的大腦。它執(zhí)行包括計算機程序的指令,指揮其他系統(tǒng)部件的操作。從計算機硬件的角度看,大多數(shù)系統(tǒng)以基本相同的方式操作。處理器實際上是快速完成非常簡單的操作,如算術(shù)和邏輯比較以及從一地到另一地移動數(shù)據(jù)。指揮計算機完成大量這種簡單操作的程序給人一種錯覺,似乎計算機在做復(fù)雜的事情。用戶感覺到的計算機系統(tǒng)的新的或改善的能力實際上都可能是機器完成同樣的簡單操作,但快得多。所以,對計算機系統(tǒng)的不斷改進需要使這些系統(tǒng)比以往更快。對計算機系統(tǒng)總速度的一種度量,也稱作通過量,是由每單位時間完成的運算次數(shù)來度量的。從概念上講,對系統(tǒng)速度的所有可能的改進中最簡單的是提高各組成部分的時鐘速度,特別是處理器的時鐘速度。于是,如果每個部件以兩倍速度運行而工作方式完全不變,則系統(tǒng)將在一半時間內(nèi)完成給定任務(wù)。多年以前由分離元件構(gòu)成的計算機處理器通過縮小尺寸和減少元件數(shù)量使其運行速度顯著加快;最終使整個處理器作為一個集成電路組裝到單個芯片上。這種尺寸減小使有可能提高處理器的時鐘速度,從而提高系統(tǒng)速度。盡管由集成電路得到了速度的巨大改進,但仍然存在對更快計算機系統(tǒng)的需求。硬件設(shè)計者們通過更大規(guī)模的集成和其他技術(shù)、進一步減小電路尺寸,已能進一步改善速度。然而,設(shè)計者們認(rèn)為,物理尺寸的減小不能無限地繼續(xù)下去,而且繼續(xù)提高處理器時鐘速度也是有限的。所以,為進一步改善計算機系統(tǒng)的總體速度,其注意力已指向其他途徑。不改變時鐘速度,利用多處理器仍能改善系統(tǒng)速度。組裝在集成電路芯片上的單個處理器成本適中,使得使用多處理器成為實際可行的。使用從屬處理器,通過把工作從CPU卸載到從屬處理器,相當(dāng)大地改善了系統(tǒng)速度。例如,從屬處理器常規(guī)地執(zhí)行重復(fù)的和單一專用目的的程序,例如輸入/輸出裝置通信和控制。還可能把多個CPU放入單一計算機系統(tǒng),典型情況是同時服務(wù)于多用戶的基于主機的系統(tǒng)。每個不同的CPU能代表不同的用戶單獨執(zhí)行不同的任務(wù),從而提高系統(tǒng)同時執(zhí)行多個任務(wù)的總體速度。然而,要改善單個任務(wù)(例如一個應(yīng)用系統(tǒng))的執(zhí)行速度則困難得多。在多個CPU當(dāng)中協(xié)調(diào)各功能的執(zhí)行和發(fā)送結(jié)果,這是一個需要技巧的事。對于從屬I/O處理器,這不那么困難,因為功能是預(yù)先確定的和有限的,然而對于執(zhí)行通用應(yīng)用程序的多CPU,要協(xié)調(diào)各功能則困難得多,部分原因是設(shè)計者們事先不知道程序的詳細情況。大多數(shù)應(yīng)用程序遵循由處理器完成的單一路徑或步驟流程。但有時可能打破這一單一路徑,變成多個平行的路徑,這樣做的通用性應(yīng)用還處于研究之中。一般地說,把一個長的任務(wù)分配成較短的任務(wù)讓多處理器平行處理是由根據(jù)每個具體情況來編寫代碼的軟件工程師完成的。這種專門特定方案對于執(zhí)行那些不一定會重復(fù)或不一定可預(yù)測的商業(yè)事務(wù)是特別有問題的。這樣,盡管多處理器能改善總體系統(tǒng)性能,但仍有許多理由要改善單個CPU的速度。如果CPU時鐘速度是給定的,但通過增加每個時鐘周期的平均運算次數(shù),仍能進一步提高CPU速度,即增加每秒執(zhí)行的運算次數(shù)。高性能單芯片微處理器的一般結(jié)構(gòu)是簡化指令集計算機(RISC)結(jié)構(gòu),其特點是一個快速執(zhí)行的常用指令小型簡化集合,即前面提到的那些快速完成的簡單運算。隨著半導(dǎo)體技術(shù)的進步,RISC結(jié)構(gòu)的目標(biāo)已經(jīng)是開發(fā)能在每個機器時鐘周期執(zhí)行一個或多個指令的處理器。增加每個時鐘周期執(zhí)行的平均運算次數(shù)的另一途徑是修改CPU內(nèi)部的硬件。這一通過量度量,即每條指令的時鐘周期數(shù),通常用于表征高性能處理器的結(jié)構(gòu)的性能。指令流水線和高速緩存存儲器是能實現(xiàn)這一點的計算機結(jié)構(gòu)特征。流水線指令執(zhí)行允許在完成先前發(fā)出的指令之前開始執(zhí)行其后的指令。高速緩存存儲器存儲經(jīng)常使用的以及靠近存儲器的其他數(shù)據(jù),并在大多數(shù)情況下允許指令繼續(xù)執(zhí)行而無需等待主存儲器的完全訪問時間。利用向前看硬件找出要平行執(zhí)行的指令,從而多執(zhí)行單元也已表現(xiàn)出某些改進。在超標(biāo)量(superscalar)計算機和甚長指令字(VLIW)計算機中能進一步提高傳統(tǒng)RISC處理器的性能,這兩種計算機在每個處理器周期平行地執(zhí)行多于1條指令。在這種結(jié)構(gòu)中提供了多功能單元或多執(zhí)行單元以平行地運行多個流水線。在超標(biāo)量結(jié)構(gòu)中,指令可以按順序完成和不按順序完成。按順序完成的意思是在其前面已安排的所有指令已經(jīng)完成之前沒有任何指令能完成。不按順序完成的意思是允許在其前面的所有指令完成之前來完成該指令,只要能滿足預(yù)先定義的規(guī)則即可。為了在超標(biāo)量系統(tǒng)中按順序和不按順序完成指令,在某些環(huán)境下流水線將停止。如果一條指令依賴于先前分配的未完成指令的結(jié)果,則會造成流水線停止。例如,一些指令所依賴的加載/存儲指令中所需數(shù)據(jù)未在高速緩存中,即高速緩存缺失(miss),則在高速緩存中能得到數(shù)據(jù)之前便不能完成這些指令。在高速緩存中保持為繼續(xù)執(zhí)行所需的數(shù)據(jù),并維持高命中率,即對數(shù)據(jù)的請求次數(shù)與在高速緩存中準(zhǔn)備好可用數(shù)據(jù)的次數(shù)之比,對于特別是涉及大數(shù)據(jù)結(jié)構(gòu)的計算而言,可不是小事。高速緩存缺失能造成流水線停止達幾個周期,而且如果在大部分時間里不能得到數(shù)據(jù),則存儲器等待時間總量將是嚴(yán)重的。雖然主存儲器所用存儲器裝置的速度在變得更快,但這種存儲器芯片和高端處理器之間的這種速度差距都不斷增大。于是,在當(dāng)前的高端處理器設(shè)計中有大量執(zhí)行時間量花費在等待解決高速緩存缺失,而這些存儲器訪問延遲用去了處理器執(zhí)行時間中越來越多的部分。改進CPU內(nèi)硬件效率的又一種技術(shù)是把處理任務(wù)分配成可獨立執(zhí)行的指令序列,稱作線程(thread)。這一技術(shù)涉及把一較大任務(wù)分配成較小的任務(wù)而由不同的處理器執(zhí)行,唯其其中這些線程是由同一處理器執(zhí)行。于是,當(dāng)由于多種理由中的任何一個使CPU不能繼續(xù)處理或執(zhí)行這些線程之一時,該CPU便切換到去執(zhí)行另一線程。在計算機結(jié)構(gòu)領(lǐng)域中定義的術(shù)語“多線程(multithreading)”不同于該術(shù)語在軟件方面的應(yīng)用,在軟件使用中該術(shù)語的意思是一個任務(wù)分成多個相關(guān)線程。在結(jié)構(gòu)定義中,線程可以是獨立的。所以,“硬件多線程”常用于區(qū)分該術(shù)語的兩種應(yīng)用。在本發(fā)明的范圍內(nèi),術(shù)語“多線程”的意思就是承受存儲器等待時間的硬件多線程。當(dāng)對當(dāng)前線程檢測到流水線停止條件時,多線程允許處理器的流水線在不同的線程上作有用的工作。多線程還允許在檢測到當(dāng)前線程的停止條件時讓實現(xiàn)非流水線結(jié)構(gòu)的處理器為一單獨的線程去做有用的工作。有兩種基本的多線程形式。一種傳統(tǒng)的形式是在處理器中保持N個線程或狀態(tài),并在逐個周期的基礎(chǔ)上使這些線程相互交錯。這要消除所有流水線的依賴關(guān)系,因為在單一線程中的指令是彼此分離的。多線程的另一種形式,即本發(fā)明中要考慮的一種形式,是對某些長等待時間事件交錯其線程。多線程的傳統(tǒng)形式涉及對每個線程復(fù)制處理器寄存器。例如,以商品名PowerPCTM售出的實現(xiàn)該結(jié)構(gòu)的處理器,為實現(xiàn)多線程,處理器必須維持N個狀態(tài)以運行N個線程。于是下列寄存器被復(fù)制N次通用寄存器、浮點寄存器、條件(condition)寄存器、浮點狀態(tài)和控制寄存器、計數(shù)寄存器、鏈路寄存器、異常寄存器、保存/恢復(fù)寄存器、以及專用寄存器。再有,特殊的緩存器,如段后備緩存器,可被復(fù)制或每個入口可以用線程號作標(biāo)記,如果不如此做,則可在每次線程切換時清倉。還有,一些分支預(yù)測機制,例如相關(guān)寄存器和返回堆棧,也應(yīng)被復(fù)制。幸運的是,不需要復(fù)制處理器的某些更大的功能,例如一級指令高速緩存(L1I-高速緩存)、一級數(shù)據(jù)高速緩存(L1D-高速緩存)、指令緩存器、存儲隊列、指令調(diào)度器、功能或執(zhí)行單元、流水線、翻譯后備緩存器(TLB)、以及分支歷史表。當(dāng)一個線程遇到延遲時,處理器迅速切換到另一線程。這一線程的執(zhí)行復(fù)蓋了在第一線程上的存儲器延遲?,F(xiàn)有的多線程技術(shù)在一高速緩存缺失或一存儲器查訪上描述切換線程。在“Sparcle大規(guī)模多處理器的一種變革性設(shè)計”(Agarwal等,IEEE微(Micro)卷13、No.3,pp48-60,1993年6月)中回顧了這一技術(shù)的主要實例。如在RISC體系結(jié)構(gòu)中應(yīng)用的那樣,通常用于支持功能調(diào)用的多寄存器集被修改成用于維持多線程。8個重疊的寄存器窗口被修改成4個不重疊的寄存器集,其中每個寄存器集是為捕獲和消息處理所作的保留。這一系統(tǒng)揭示出一個線程切換,它發(fā)生在每次遠程存儲器請求中所造成的一級高速緩存缺失時。盡管這一系統(tǒng)代表了技術(shù)上的一種進步,但現(xiàn)代處理器設(shè)計經(jīng)常利用附加在處理器上的多級高速緩存和高速存儲器。該處理器系統(tǒng)利用某種公知的算法以確定每級高速緩存內(nèi)將加載的主存儲器的那個部分,這樣,每當(dāng)發(fā)生存儲器訪問時,如果它不在第一級高速緩存中,則處理器必須試圖從第二級或更高級高速緩存中得到那個存儲器訪問內(nèi)容。這樣,本發(fā)明的一個目標(biāo)是提供一種改進的數(shù)據(jù)處理系統(tǒng),它能利用多線程數(shù)據(jù)處理系統(tǒng)中實現(xiàn)的硬件邏輯和寄存器在一多級高速緩存系統(tǒng)中減小由于存儲器等待時間造成的延遲。本發(fā)明通過提供一個能在兩個指令線程之間切換執(zhí)行的多線程處理器和在帶有可選的對線程切換條件進行軟件改寫的硬件寄存器中實現(xiàn)的線程切換邏輯來實現(xiàn)這一目標(biāo)。處理各種指令線程的各種狀態(tài)允許優(yōu)化處理器在各線程當(dāng)中的使用。當(dāng)處理器為第一線程從各種存儲器部件,例如第一線程的高速緩存、存儲器、外部I/O、直接存取存儲器,檢索必要的數(shù)據(jù)和/或指令時,允許該處理器去執(zhí)行第二指令線程從而提高對處理器的利用程度,否則它會是空閑的。線程線換的條件對于每個線程可以是不同的,或者可以通過利用一個軟件線程控制管理器在處理過程中改變線程切換條件。當(dāng)?shù)谝痪€程具有要求大量周期來完成的等待時間事件例如高速緩存缺失時,可處理第二線程,在此期間第二線程可能遇到在同一或不同高速緩存級上的高速緩存缺失,但它可在短得多的時間內(nèi)完成。通過本發(fā)明實現(xiàn)一個前進計數(shù)寄存器和允許一個可編程最大線程切換次數(shù)的方法(在超過此最大次數(shù)之后處理器停止切換線程直至一個線程能夠執(zhí)行),可以避免翻來復(fù)去地重復(fù),其中每個線程被鎖在切換線程的一個重復(fù)周期中而沒有任何指令在執(zhí)行的情況。前進寄存器及其閾值監(jiān)視在沒有指令執(zhí)行的情況下已發(fā)生的線程切換次數(shù),并當(dāng)這個次數(shù)等于閾值時便不再發(fā)生線程切換,直至一條指令被執(zhí)行。前進計數(shù)寄存器的一個附加優(yōu)點是能對某些等待時間的事件定制寄存器和閾值,例如一個閾值用于像訪問外部計算機網(wǎng)絡(luò)那樣的等待時間很長的事件;而另一個前進閾值用于像高速緩存缺失那樣的等待時間較短的事件。在等待由一線程切換超時寄存器中指定的周期數(shù)之后迫使一線程切換可以防止對一線程的計算機處理在一個超常的時間段內(nèi)處于不活動狀態(tài)。計算機處理系統(tǒng)不會由于急用共享資源而遭到掛起。實現(xiàn)了在線程之間公平分配處理器周期,而且限定了對外部中斷及處理器外部其他事件的最大響應(yīng)等待時間??焖倬€程切換是由硬件寄存器實現(xiàn)的,這些寄存器存儲線程狀態(tài)、線程優(yōu)先級、以及線程切換條件。利用線程切換硬件寄存器能改變處理器中一個或多個線程的優(yōu)先級。來自中斷請求的信號或者軟件指令都能用于修改指示每個線程優(yōu)先級的狀態(tài)寄存器中的位。然后,根據(jù)每個線程的優(yōu)先級,可以發(fā)生線程切換,以允許較高優(yōu)先級的線程有更多的處理周期。改變優(yōu)先級的好處在于允許改變線程切換頻率,增加至關(guān)重要的任務(wù)的執(zhí)行周期數(shù),減小由于線程切換等待時間造成的高優(yōu)先級線程丟失的處理周期數(shù)。本發(fā)明的另一方面是在數(shù)據(jù)處理系統(tǒng)中完成多線程操作的一種計算機方法,作法是在與至少一個存儲器單元相連的多線程處理器中執(zhí)行多個指令線程中的至少一個,每個指令線程有一個優(yōu)先級,并改變這多個線程中一個或多個的優(yōu)先級。根據(jù)所有這些線程的優(yōu)先級,該多重處理器能從一個線程切換到另一線程。優(yōu)先級或者可由來自中斷的信號改變,或者可由稱作線程切換管理器的硬件和軟件結(jié)構(gòu)安排來改變。線程優(yōu)先級意味著一個線程的優(yōu)先級能高于另一個,但這些線程也能有相等的優(yōu)先級。提出了一種優(yōu)先級方案,其中每個線程能有3個優(yōu)先級之一。當(dāng)?shù)诙€程處于準(zhǔn)備好狀態(tài)時,能從較低優(yōu)先級的第一線程離開的切換。當(dāng)高優(yōu)先級線程有一個缺失是來自一級高速緩存或其他有快速響應(yīng)時間的存儲器時,能取消從這個有較高優(yōu)先級的第一線程離開的切換。簡言之,本發(fā)明是根據(jù)處理器中所有線程的相對優(yōu)先級在此多線程處理器中對多個指令線程的每一個分配處理器周期的計算機處理方法。線程切換管理器是一種硬件和軟件的結(jié)構(gòu)安排,它有至少一個優(yōu)先級切換指令,在一個第一寄存器(如機器狀態(tài)寄存器和/或線程切換控制寄存器)中的至少一個線程切換優(yōu)先級位,以及在一個第二寄存器(如線程狀態(tài)寄存器)中的多個狀態(tài)位,其中優(yōu)先級切換指令能改變這多個優(yōu)先級狀態(tài)位中的任何一位。在一個有不只一個線程的多線程處理系統(tǒng)中,正在執(zhí)行的線程稱作活動線程。優(yōu)先級切換指令能改變與多線程處理系統(tǒng)中的活動線程或任何其他線程相對應(yīng)的優(yōu)先級狀態(tài)位。然后,如果一個線程切換優(yōu)先級位是有效的,則多線程處理器把處理從活動線程切換出去,以響應(yīng)于該活動線程或另一線程優(yōu)先級的變化。為把一現(xiàn)有的處理器改造成能容納線程切換管理器,該優(yōu)先級切換指令不應(yīng)改變多線程處理器中被納入結(jié)構(gòu)的多個寄存器中的任何一個,還應(yīng)在多線程處理器上執(zhí)行并且沒有非法指令中斷,例如該優(yōu)先級切換指令可以是一個優(yōu)選的空操作(noop)指令。在本發(fā)明還是一個計算機處理系統(tǒng),包括處理多個指令線程的裝置;存儲這多個線程中每個優(yōu)先級狀態(tài)的裝置;改變這多個線程中每個的優(yōu)先級狀態(tài)的裝置,以及響應(yīng)于該裝置使處理裝置能把處理從多個線程中的第一線程切換到多個線程中的第二線程的裝置。從下面對最佳實施例及附圖的詳細描述,將清楚看出本發(fā)明的其他目標(biāo)、特性和特征;其結(jié)構(gòu)的相關(guān)元件的方法、操作和功能;部件的組合;以及制造的經(jīng)濟方面,所有這些都構(gòu)成本發(fā)明的一部分,其中在各圖中相似參考數(shù)字標(biāo)明相應(yīng)的部件。然而,參考下文中結(jié)合附圖閱讀示例性實施例的詳細描述,將會最好地理解發(fā)明本身及其最佳使用方式,以及其他目標(biāo)和優(yōu)點,其中,圖1是能實現(xiàn)其中描述的發(fā)明的計算機系統(tǒng)方框圖。圖2顯示根據(jù)本發(fā)明的多線程數(shù)據(jù)處理系統(tǒng)的高層次方框圖。圖3顯示圖2的存儲控制單元的方框圖。圖4顯示圖2的線程切換邏輯、存儲控制單元及指令單元的方框圖。圖5顯示當(dāng)線程遇到圖4所示不同線程切換事件時該線程狀態(tài)的變化。圖6是本發(fā)明的前進計數(shù)的流程圖?,F(xiàn)在參考附圖,具體參考圖1,圖中描述了計算機數(shù)據(jù)處理系統(tǒng)10的高極方框圖,該系統(tǒng)可用于實現(xiàn)本發(fā)明的方法和系統(tǒng)。能利用本發(fā)明的計算機數(shù)據(jù)處理系統(tǒng)10的主要硬件及相互連接示于圖1。用于處理指令的中央處理單元(CPU)100與高速緩存120、130及150相連。指令高速緩存150存儲供CPU100執(zhí)行的指令。數(shù)據(jù)高速緩存120存儲CPU100所用數(shù)據(jù),而高速緩存130能存儲由CPU100使用的數(shù)據(jù)和指令二者,例如高速緩存130能是一個L2高速緩存。高速緩存與主存儲器140中的隨機存取存儲器通信。CPU100和主存儲器140還經(jīng)由總線接口152與系統(tǒng)總線155通信。各種輸入/輸出處理器(IOP)160-168附加在系統(tǒng)總線155上并支持與各種存儲裝置及輸入/輸出(I/O)裝置通信,例如直接存取存儲裝置(DASD)170、帶驅(qū)動器172、遠程通信線路174、工作站176、及打印機178。應(yīng)該理解,圖1是要在高一級上描述計算機數(shù)據(jù)處理系統(tǒng)10的代表性組成部件,這些組成部件的數(shù)量和類型可以變化。在CPU100內(nèi)部,處理器核110包括專門化的功能單元,它們每個完成基本的操作,如對指令排序、執(zhí)行涉及整數(shù)的運算、執(zhí)行涉及實數(shù)的運算、在可編址存儲器和邏輯寄存器陣列之間傳送數(shù)值。圖2顯示處在計算機數(shù)據(jù)處理系統(tǒng)10的其他組成部件環(huán)境中的處理器核110的細節(jié)。在一個最佳實施例中,數(shù)據(jù)處理系統(tǒng)10的處理器核110是一個單個集成電路、構(gòu)成流水線的超標(biāo)量微處理器,它可利用任何計算機結(jié)構(gòu)實現(xiàn),如以商品名PowerPCTM出售的RISC處理器系列;例如由IBM出售的PowerPCTM604微處理器芯片。如下文中要討論的那樣,數(shù)據(jù)處理系統(tǒng)10最好包括各種單元、寄存器、緩存器、存儲器及其他部分,它們都最好由集成電路構(gòu)成。應(yīng)該理解,在圖中各數(shù)據(jù)路徑已被簡化;在實際上,有許多單獨的和平行的數(shù)據(jù)路徑進出各部件。此外,與其中描述的發(fā)明關(guān)系不密切的各種部件已被略去,但應(yīng)該理解,處理器含有額外的單元用于額外的功能。數(shù)據(jù)處理系統(tǒng)10可根據(jù)簡化指令集計算(RISC)技術(shù)或其他計算技術(shù)進行操作。如圖2所示,數(shù)據(jù)處理系統(tǒng)10的處理器核100最好包括一個一級數(shù)據(jù)高速緩存(L1D-高速緩存)120,一個二級L2高速緩存130,一個主存儲器140,以及一個一級指令高速緩存(L1I-高速緩存)150,所有這些都在操作上利用各種總線連接連至存儲控制單元200。如圖1中所示,存儲控制單元200包括用于互連L1D-高速緩存120和L2高速緩存130的過渡高速緩存210、主存儲器140、以及多個執(zhí)行單元。L1D-高速緩存120和L1I-高速緩存150最好作為處理器100的一部分在芯片上提供,而主存儲器140和L2高速緩存130可在芯片外提供。存儲器系統(tǒng)140準(zhǔn)備用于代表隨機存取主存儲器(它可以在處理器核100內(nèi)部,也可以不在)以及在處理器核100外部的其他數(shù)據(jù)緩存器和高速緩存(如果有的話),以及其他外部存儲器,例如DASD170、帶驅(qū)動器172及工作站176,如圖1中所示。L2高速緩存130最好是比主存儲器140速度更高的存儲器系統(tǒng),通過把選定的數(shù)據(jù)存儲在L2高速緩存130中,能將由于訪問主存儲器140而發(fā)生的存儲器等待時間減至最小。如圖1所示,L2高速緩存130和主存儲器140經(jīng)由存儲控制單元200直接連至L1I-高速緩存150和指令單元220二者。來自L1I-高速緩存150的指令最好輸出到指令單元220,根據(jù)本發(fā)明的方法和系統(tǒng),指令單元220控制由各種子處理單元(如分支單元260、定點單元270、存儲控制單元200、浮點單元280以及其他單元)執(zhí)行多個線程,這些單元由數(shù)據(jù)處理系統(tǒng)10的結(jié)構(gòu)指定。除了圖1中描述的各種執(zhí)行單元外,本領(lǐng)域技術(shù)人員會理解,現(xiàn)代超標(biāo)量微處理器系統(tǒng)常常包括每個這種執(zhí)行單元的多種版本,可以增加它們而不離開本發(fā)明的實質(zhì)和范圍。這些單元大多數(shù)將有來自各種寄存器(如通用寄存器GPR272、浮點寄存器FPR282)的操作數(shù)信息,作為輸入源。此外,可以利用多個專用寄存器SPR274。如圖1所示,存儲控制單元200和過渡高速緩存210直接與通用寄存器272及浮點寄存器282相連。通用寄存器272與專用寄存器274相連。在只有這個多線程處理器100才有的各功能硬件單元當(dāng)中,是線程切換邏輯400和過渡高速緩存210。線程切換邏輯400含有各種寄存器,它們確定哪個線程將是活動的或執(zhí)行的線程。線程切換邏輯400在操作上與存儲控制單元200、執(zhí)行單元260、270和280、以及指令單元220相連。在存儲控制單元200內(nèi)部的過渡高速緩存210必須能實現(xiàn)多線程。存儲控制單元200和過渡高速緩存210最好允許每線程至少一個未完成的數(shù)據(jù)請求。這樣,當(dāng)?shù)谝痪€程響應(yīng)于例如L1D-高速緩存缺失的發(fā)生而被掛起時,第二線程將能訪問L1D-高速緩存以得到那里存在的數(shù)據(jù)。如果這第二線程也造成L1D-高速緩存缺失,則將發(fā)出另一個數(shù)據(jù)請求,這樣在存儲控制單元200和過渡高速緩存210中必須保持多個數(shù)據(jù)請求。過渡緩存210最好是遞交美國專利申請系列號08/761,378的過渡高速緩存,該申請于1996年12月9日遞交,題為“多入口全相關(guān)過渡高速緩存”,其中作為參考引入。存儲控制單元200、執(zhí)行單元260、270和280以及指令單元220都在操作上與線程切換邏輯400相連。由它確定要執(zhí)行哪個線程。如圖2所示,在存儲控制單元200和指令單元220之間提供了總線205,用于例如把數(shù)據(jù)請求傳送給存儲控制單元200和把L2高速緩存130缺失傳送給指令單元220。再有,提供了一個翻譯后備緩存器TLB250,它含有虛擬到實際地址映射。雖然在本發(fā)明中未予說明,但可以提供各種附加的高級存儲器映射緩存器,如段后備緩存器,它的工作方式與翻譯后備緩存器250相同。圖3更詳細地顯示存儲控制單元200,如它的名稱表明的那樣,這一單元控制從各種存儲單元輸入和輸出的數(shù)據(jù)和指令,它們包括各種高速緩存、緩存器以及主存儲器。如圖3所示,存儲控制單元200包括過渡高速緩存210,它在功能上與L1D-高速緩存120、多路復(fù)用器360、L2高速緩存130以及主存儲器140相連。再有,過渡高速緩存210從排序器350接收控制信號。排序器350包括多個排序器,最好是3個,用于處理指令和/或數(shù)據(jù)的取請求。排序器350還向過渡高速緩存210及L2高速緩存130輸出控制信號,并對主存儲器140收、發(fā)控制信號。圖3所示存儲控制單元200中的多路復(fù)用器360從L1D-高速緩存120、過渡高速緩存210、L2高速緩存130及主存儲器140接收數(shù)據(jù),如果數(shù)據(jù)是要存儲到存儲器的話,則還從執(zhí)行單元270和280接收數(shù)據(jù)。多路復(fù)用器360對來自這些源的數(shù)據(jù)進行選擇,并響應(yīng)于一個從排序器350收到的選擇控制信號,把數(shù)據(jù)輸出到L1D-高速緩存120或執(zhí)行單元。再有,如圖3所示,排序器350輸出一個選擇信號去控制第二多路復(fù)用器370。多路復(fù)用器370根據(jù)從排序器350收到的這個選擇信號,把來自L2高速緩存130或主存儲器140的數(shù)據(jù)輸出到L1I-高速緩存150或指令單元220。在產(chǎn)生上文討論的控制和選擇信號時,排序器350訪問和更新L1D-高速緩存120的L1目錄320及L2高速緩存130的L2目錄。關(guān)于其中描述的處理器的多線程能力,存儲控制單元200的排序器350還向線程切換邏輯400輸出信號,這些信號指出數(shù)據(jù)和指令請求的狀態(tài)。于是,來自高速緩存120、130和150、主存儲器140以及過渡后備緩存器250的反饋被送到排序器350,然后傳送到線程切換邏輯400,它可以造成線程切換,如下文討論的那樣。請注意,如果在任何裝置中發(fā)生能在多線程處理器中造成線程切換的事件,則它在操作上與排序器350相連。圖4是線程切換邏輯硬件400的邏輯表示和方框圖,該硬件400確定是否一個線程將被切換,如果是,是哪個線程。存儲控制單元200和指令單元220與線程切換邏輯400互連。線程切換邏輯400最好容納在指令單元220中,但如果有許多線程,則線程切換邏輯400的復(fù)雜性會增加,因此該邏輯對指令單元220而言是外部的。為易于解釋,圖示的線程切換邏輯400對指令單元220是外部的。在本實施例中會造成一個線程被切換的事件在線470、472、474、476、478、480、482、484及486上從存儲控制單元200的排序器350向線程切換邏輯400傳送。其他等待事件能引起線程切換;這個清單不想全包括;相反,它只是表示如何能實現(xiàn)線程切換。由第一線程T0或第二線程T1請求一個未在指令單元220中的指令,則造成一個能引起線程切換的事件,在圖4中分別由470和472表示。線474指示何時活動線程(不論是T0還是T1)遇到一個L1D-高速緩存缺失120。L2高速緩存130對于線程T0或T1的高速緩存缺失分別由線476和478表示。當(dāng)為T0線程或為T1線程返回數(shù)據(jù)時線480和482分別被激活。翻譯后備緩存器缺失和完成表游動(tablewalk)分別由線484和486指示。這些事件都被饋送到線程切換邏輯400,更具體地說是饋送到線程狀態(tài)寄存器440和線程切換控制器450。線程切換邏輯400對每個線程有一個線程狀態(tài)寄存器。在其中描述的實施例中表現(xiàn)出兩個線程,所以有T0狀態(tài)寄存器442用于第一線程T0和T1狀態(tài)寄存器444用于第二線程T1,其中將對它們進行描述。線程切換邏輯400包括線程切換控制寄存器410,它控制哪些事件將造成線程切換。例如,線程切換控制寄存器410能鎖住會引起狀態(tài)變化的事件,使線程切換控制器450看不到這些事件,從而使一線程不會由于被鎖住事件的結(jié)果而被切換。線程狀態(tài)寄存器和改變線程的邏輯與操作是題為“多線程處理器系統(tǒng)中的線程切換控制”的美國專利申請的主題,該專利申請系列號為08/957,002,于1997年10月23日與本申請同時遞交,其中作為參考引入。線程切換控制寄存器410是題為“在多線程處理器中選擇線程切換事件的方法和裝置”的美國專利申請的主題,該申請的系列號是08/958,716,1997年10月23日遞交,與本申請同時遞交,其中作為參考引入。前進計數(shù)寄存器420用于防止翻來復(fù)去地重復(fù),它可以包括在線程切換控制寄存器410中。前進計數(shù)寄存器420是題為“在多線程處理器中保證前進的裝置和方法”的美國專利申請的主題,該申請的系列號是08/956,875,1997年10月23日遞交,與本申請同時遞交,其中作為參考引入。線程切換超時寄存器430是題為“在多線程處理器中迫使線程切換的方法和裝置”的美國專利申請的主題,該申請的系列號是08/956,577,1997年10月23日遞交,與本申請同時遞交,其中作為參考引入。線程切換超時寄存器430分配公平性和實際鎖定(livelock)事項。最后,但不限于此,線程切換控制器450包括無數(shù)個邏輯門,它們代表了所有邏輯的終極,這些邏輯實際確定是否一個線程被切換,哪個線程以及在什么環(huán)境下被切換。將進一步詳細給出這些邏輯部件及其功能。線程狀態(tài)寄存器線程狀態(tài)寄存器440包括每個線程的一個狀態(tài)寄存器,如其名稱所表明的那樣,它存儲相應(yīng)線程的狀態(tài);在這一情況中是T0線程狀態(tài)寄存器442和T1線程狀態(tài)寄存器444。對于具體的結(jié)構(gòu)和線程切換優(yōu)先級方案,可以定制位數(shù)和特定位的位置以描述每個線程的狀態(tài)。在下表中列出對具有兩個線程的多線程處理器在其線程狀態(tài)寄存器442和444中各位的分配。線程狀態(tài)寄存器位分配(0)指令/數(shù)據(jù)0=指令1=數(shù)據(jù)(12)缺失類型排序器00=無缺失01=翻譯后備緩存器缺失(檢驗位0判定I/D)10=L1高速緩存缺失11=L2高速緩存缺失(3)過渡0=到當(dāng)前狀態(tài)的過渡不造成線程切換1=到當(dāng)前狀態(tài)的過渡造成線程切換(47)保留(8)0=加載1=存儲(914)保留(1517)前進計數(shù)器111=復(fù)位(在這一線程中指令已完成)000=該線程W/0指令第一次執(zhí)行完成001=該線程W/0指令第二次執(zhí)行完成010=該線程W/0指令第三次執(zhí)行完成011=該線程W/0指令第四次執(zhí)行完成100=該線程W/0指令第五次執(zhí)行完成(1819)優(yōu)先級(可由軟件設(shè)置)00=中等01=低10=高11=<非法>(2031)保留(3263)保留,如果是64位實現(xiàn)的話在其中描述的實施例中,位0標(biāo)識缺失或處理器停止執(zhí)行的理由是否是一個請求指令或數(shù)據(jù)的結(jié)果。位1和2指示所請求的信息能否得到,如果如此,是從哪個硬件,即所翻譯的數(shù)據(jù)或指令地址是否不在翻譯后備緩存器250中,或者數(shù)據(jù)或指令本身不在L1D-高速緩存120或L2高速緩存130中,在圖5的描述中將進一步解釋。位3指示是否一線程狀態(tài)的改變會造成線程切換。一個線程可以改變其狀態(tài)而不造成線程切換。例如,如果當(dāng)線程T1遇到一個L1高速緩存缺失時發(fā)生了線程切換,那么如果線程T1遇到一個L2高速緩存缺失則將不會有線程切換,因為該線程已由于L1高速緩存缺失而切換了。然而,T1的狀態(tài)仍然改變。另一種情況是,如果通過選擇,線程切換邏輯400被配置或編程,使得在L1高速緩存缺失時不切換,那么當(dāng)一線程確實遇到L1高速緩存缺失時,即使該線程改變其狀態(tài),將沒有線程切換。線程狀態(tài)寄存器442和444的位8被分配為特定線程請求的信息是要加載到處理器核中還是從處理器核中存儲到高速緩存或主存儲器中。位15至17被分配為防止翻來復(fù)去的重復(fù),下文中將參考前進計數(shù)寄存器420加以討論。位18和19能在硬件中設(shè)定,或能由軟件設(shè)定,以指示線程優(yōu)先級。圖5代表本實施例中由數(shù)據(jù)處理系統(tǒng)10處理的一個線程的4種狀態(tài),這些狀態(tài)存儲在線程狀態(tài)寄存器440中,位的位置是12。狀態(tài)00代表“準(zhǔn)備好”狀態(tài),即該線程已準(zhǔn)備好供處理,因為所需要的所有數(shù)據(jù)和指令都能得到;狀態(tài)10代表這樣的線程狀態(tài),其中在處理器內(nèi)該線程的執(zhí)行被停止,因為該線程在等待或者數(shù)據(jù)返回到L1D-高速緩存120中或者指令返回到L1I-高速緩存150中;狀態(tài)11代表該線程在等待數(shù)據(jù)返回到L2高速緩存130;狀態(tài)01表明在翻譯后備緩存器250上有一缺失,即虛擬地址錯或不可用,稱作“表游走(tablewalk)”。在圖5中還顯示出線程狀態(tài)的層次結(jié)構(gòu),其中狀態(tài)00指示該線程已準(zhǔn)備好供執(zhí)行,具有最高優(yōu)先級。短等待時間的事件最好賦予較高優(yōu)先級。圖5還顯示了當(dāng)從各種源提取數(shù)據(jù)時狀態(tài)的變化。正常的無中斷地執(zhí)行線程T0在塊510中表示為狀態(tài)00。如果發(fā)生L1D-高速緩存或I-高速緩存缺失,則線程狀態(tài)變?yōu)闋顟B(tài)10,如在塊512中表示的,遵循分別在線474(圖4)上由存儲器控制單元200發(fā)出的信號和在線470(圖4)上由指令單元200發(fā)出的信號。如果所需的數(shù)據(jù)或指令在L2高速緩存130中并被提取,則在塊510恢復(fù)T0的正常執(zhí)行。類似地,圖5的塊514代表L2高速緩存缺失,它把T0或T1線程的狀態(tài)改變?yōu)闋顟B(tài)11,此時存儲控制單元200在線476或478(圖4)上通知這一缺失。當(dāng)如線480和482(圖4)上所指示的那樣,從主存儲器140中取出指令或數(shù)據(jù)到L2高速緩存中,并將其加載到處理器核100,則在塊510,狀態(tài)再變回到狀態(tài)00。當(dāng)所請求信息的虛擬地址在翻譯后備緩存器250中不可用時,存儲控制單元200在線484(圖4)上與線程寄存器440通信,如塊516所示,作為TLB缺失或狀態(tài)01。當(dāng)該地址變?yōu)榭捎玫幕蛘呷绻嬖谝粋€由存儲控制單元200在線486(圖4)上通告的數(shù)據(jù)存儲中斷指令,則該線程的狀態(tài)返回到狀態(tài)00,意思是已準(zhǔn)備好供執(zhí)行。狀態(tài)數(shù)和每個狀態(tài)代表什么,可由計算機結(jié)構(gòu)自由選定。例如,如果一線程有多個L1高速緩存缺失,例如L1I-高速緩存缺失和L1D-高速緩存缺失二者,則可對每個高速緩存類型賦予單獨的狀態(tài)。另一種作法是可以賦予單個線程狀態(tài)來代表不只一個事件或事件發(fā)生。給出了一個線程切換算法的實例,它針對有相等優(yōu)先級的兩個線程,用于確定是否要切換線程。能根據(jù)本發(fā)明的原理擴展和修改該算法,從而適用于更多的線程和線程切換條件。線程狀態(tài)寄存器440(圖4)中存儲的每個線程的狀態(tài)與線程切換算法給出的每個線程優(yōu)先級二者之間的相互作用在每個周期要動態(tài)地被詢問。如果活動線程T0有一個L1缺失,則該算法將使線程切換到休眠的線程T1,除非休眠線程T1在等待一個L2缺失的解決。如果未曾發(fā)生切換而且活動線程T0的L1高速緩存缺失轉(zhuǎn)變成了L2高速緩存缺失,則該算法指示處理器切換到休眠線程T1而不管T1的狀態(tài)如何。如果這兩個線程都在等待一個L2高速緩存缺失的解決,則首先使L2缺失得到解決的那個線程成為活動線程。在每個切換決定時刻,在大多數(shù)情況下采取的行動是最佳化的,造成最好的性能。請注意,由L2高速緩存缺失造成的線程切換以其他線程的狀態(tài)為條件,如果不是這樣,則額外的線程切換就會發(fā)生,造成性能降低。線程切換控制寄存器在任何多線程處理器中,都存在與切換線程相關(guān)聯(lián)的等待時間和性能代價。在其中描述的最佳實施例中的多線程處理器中,這種等待時間包括使當(dāng)前線程完成到它能被中斷并在其后被調(diào)用時能正確地重新啟動的那一點所需要的時間,把針對該線程的硬件設(shè)施從當(dāng)前線程的狀態(tài)切換到新線程的狀態(tài)所需要的時間,以及重新啟動新線程和開始其執(zhí)行所需要的時間。以本發(fā)明可操作的針對線程的硬件設(shè)施最好包括前面描述的線程狀態(tài)寄存器和在美國專利5,778,243號中描述的存儲器單元,該專利題為“存儲器的多線程單元”,其中作為參考引入。為了在一個“粗粒的”多線程數(shù)據(jù)處理系統(tǒng)中實現(xiàn)最佳性能,與通常的單線程方式相反,在多線程方式中產(chǎn)生線程切換的事件的等待時間必須大于與切換線程相關(guān)聯(lián)的性能損失。用于產(chǎn)生線程切換的事件的等待時間依賴于硬件和軟件二者。例如,在多線程處理器中特別的硬件考慮包括實現(xiàn)處理器芯片外部L2高速緩存所用外部SRAM的速度。在L2高速緩存中的快SRAM減小L1缺失的平均等待時間,而較慢的SRAMS增加L1缺失的平均等待時間。這樣,如果在外部L2高速緩存數(shù)據(jù)訪問等待時間大于線程切換代價的硬件中把一個線程切換事件定義為一個L1高速緩存缺失,則性能得到增強。作為特定軟件代碼特性如何影響線程切換事件等待時間的一例,考慮代碼的L2高速緩存命中與缺失之比,即在L2高速緩存中能準(zhǔn)確得到數(shù)據(jù)的次數(shù)與由于數(shù)據(jù)不在L2高速緩存中而必須從主存儲器中提取數(shù)據(jù)的次數(shù)之比。L2命中與缺失之比高則減小L2高速緩存缺失的平均等待時間,因為L1高速緩存缺失很少會造成更長的L2缺失等待時間。L2命中與缺失之比低則增加L1缺失的平均等待時間,因為更多的L1缺失造成更長等待時間的L2缺失。這樣,如果執(zhí)行代碼的L2命中與缺失之比高,則一個L1高速緩存缺失可不作為線程切換事件,因為L2高速緩存數(shù)據(jù)訪問等待時間小于線程切換代價。當(dāng)執(zhí)行的軟件代碼具有低L2命中與缺失之比時,L1高速緩存缺失將被啟動為線程切換事件,因為L1高速緩存缺失多半能導(dǎo)致更長等待時間的L2高速緩存缺失。某些類型的等待事件是不容易被檢測到的。例如,在某些系統(tǒng)中,當(dāng)發(fā)生一高速緩存缺失時L2高速緩存向指令單元輸出一個信號。然而,其他L2高速緩存不輸出這種信號,例如,如果L2高速緩存控制器在處理器以外的單獨芯片上,于是處理器不能容易地確定一個狀態(tài)變化。在這些結(jié)構(gòu)中,該處理器可對每個待決L1高速緩存缺失有一個周期計數(shù)器。如果在預(yù)定周期數(shù)之后缺失數(shù)據(jù)尚未從L2高速緩存返回,則處理器的行動猶如已發(fā)生了一個L2高速緩存缺失并相應(yīng)地改變線程狀態(tài)。這一算法可應(yīng)用于有不只一種獨特等待時間類型的其他場合。只作為一例,對于一個處理器中的L2高速緩存缺失,從主存儲器取得數(shù)據(jù)的等待時間可能顯著地不同于從另一處理器取得數(shù)據(jù)的等待時間。在線程狀態(tài)寄存器中可對這兩種事件賦予不同的狀態(tài)。如果沒有信號去區(qū)分這些狀態(tài),則可用一計數(shù)器去確定在它遇到L2高速緩存缺失之后該線程應(yīng)為哪一狀態(tài)。線程切換控制寄存器410是一個軟件可編程的寄存器,它選擇事件以確定線程切換,并對每個定義的線程切換控制事件有一個單獨的啟動位。雖然其中描述的實施例未對每個線程實施單獨的線程切換控制寄存器410,但能對每個線程實施單獨的線程切換控制寄存器410,從而以更多的硬件和復(fù)雜性為代價提供更大的靈活性和更高的性能。再有,在一個線程切換控制寄存器中的線程切換控制事件不需要與任何其他線程切換控制寄存器中的線程切換控制事件完全相同。線程切換控制寄存器410能由服務(wù)處理器以軟件寫入,例如在美國專利5,079,725號中說明的動態(tài)掃描通信接口,該專利題為“與掃描設(shè)計系統(tǒng)和掃描測試技術(shù)一起使用的芯片識別方法”,或者由處理器本身用軟件系統(tǒng)代碼寫入。線程切換控制器450使用線程切換控制寄存器410的內(nèi)容去使能允許或不允許產(chǎn)生一個線程切換。在寄存器410中的值1使與該位關(guān)聯(lián)的線程切換控制事件能產(chǎn)生一個線程切換。在線程切換控制寄存器410中的值零不允許與該位關(guān)聯(lián)的線程切換控制事件產(chǎn)生一個線程切換。當(dāng)然,在執(zhí)行線程過程中的一條指令能使那個特定線程或其他線程的任何一個或全部線程切換條件變?yōu)椤安荒堋?。下表顯示線程切換事件和它們在寄存器410中的使能位之間的關(guān)聯(lián)。線程切換控制寄存器位賦值(0)L1數(shù)據(jù)高速緩存取缺失時切換(1)L1數(shù)據(jù)高速緩存存儲缺失時切換(2)L1指令高速緩存缺失時切換(3)指令TLB缺失時切換(4)L2高速緩存取缺失時切換(5)L2高速緩存存儲缺失時切換(6)L2指令高速緩存缺失時切換(7)數(shù)據(jù)TLB/段后備緩存器缺失時切換(8)L2高速緩存缺失而且休眠線程無L2高速緩存缺失時切換(9)當(dāng)達到線程切換超時值時切換(10)當(dāng)L2高速緩存數(shù)據(jù)返回時切換(11)IO外部訪問時切換(12)雙X存儲兩個中第一缺失(*)時切換(13)雙X存儲兩個中第二個缺失(*)時切換(14)存儲多重/串任何訪問缺失時切換(15)加載多重/串任何訪問缺失時切換(16)保留(17)雙X加載兩個中第一個缺失(*)時切換(18)雙X加載兩個中第二個缺失(*)時切換(19)如果機器狀態(tài)寄存器(問題狀態(tài))位,msr(pr)=1則當(dāng)“或”1,1,1指令時切換。允許軟件優(yōu)先級變化不依賴于msr(pr)。如果位19為1,“或”1,1,1指令設(shè)為低優(yōu)先級。如果位19為0,在“或”1,1,1指令被執(zhí)行時,只有當(dāng)msr(pr)=0時優(yōu)先級才設(shè)為低優(yōu)先級。見下文要討論的“以軟件改變?yōu)閮?yōu)先級”。(20)保留(21)線程切換優(yōu)先級使能(2229)保留(3031)前進計數(shù)(3263)在64位寄存器實現(xiàn)中保留(*)雙X加載/存儲是指加載或存儲一個基本半字、字或雙字,它們穿過一個雙字邊界。在本文范圍內(nèi)的雙X加載/存儲不是加載或存儲多個字或字串。線程切換超時寄存器如前文討論的那樣,粗粒多線程處理器依靠長等待時間的事件去觸發(fā)線程切換。有時在執(zhí)行過程中在一多處理器環(huán)境中的一個處理器或在一多線程結(jié)構(gòu)中的一個后臺線程有一資源的所有權(quán),該資源只能有單一所有者,而另一處理器或活動線程需要訪問該資源,然后它才能前進。實例包括更新存儲器頁面表或從任務(wù)分配器得到一任務(wù)。該活動線程不能得到對該資源的所有權(quán)時不造成線程切換事件,盡管如此,線程在一個循環(huán)中繞圈,不能做有用的工作。在這種情況中,握有資源的后臺線程不能得到對處理器的訪問以釋放資源,因為它從未遇到一個線程切換事件,因而不能成為活動線程。在各線程當(dāng)中分配處理周期是另一個關(guān)心的問題;如果與在同一處理器中其他線程上運行的軟件代碼相比,在一個線程上運行的軟件代碼很少遇到長等待時間的切換事件。那么該線程得到的處理周期便多于它的公平分享的處理周期。而可能超過最大可接受時間的另一種過度延遲是在一有限時間段內(nèi)等待服務(wù)于一外部中斷或在處理器外部的某些其他事件的一個不活動線程的等待時間。這樣,如果沒有有用的處理要完成以防止系統(tǒng)掛起的話,最好在某一時間之后迫使一線程切換到休眠線程。在一時間段之后迫使一線程切換的邏輯是線程切換超時寄存器430(圖4),一個減量器,以及一個減量器寄存器用于保持被減量的值。該線程切換超時寄存器430保持線程切換超時值。在本實施例中使用的線程切換超時寄存器430的實現(xiàn)示于下表線程切換超時寄存器位(021)保留(2231)線程切換超時值其中描述的本發(fā)明實施例不對每個線程實現(xiàn)一個單獨的線程切換超時寄存器430,當(dāng)然可以那樣做以提供更大的靈活性。類似地,如果有多個線程,每個線程不需要有相同的線程切換超時值。每次發(fā)生線程切換時,由硬件把線程切換超時值從線程切換超時寄存器430加載到減量寄存器中。減量寄存器每周期減量一次,直至減量寄存器值等于零為止,然后一個信號發(fā)送到線程切換控制器450,它迫使產(chǎn)生一個線程切換,除非沒有任何其他線程準(zhǔn)備好處理指令。例如,如果系統(tǒng)中所有其他線程由于高速緩存缺失而在等待因而沒有準(zhǔn)備好去執(zhí)行指令,則線程切換控制器450不迫使產(chǎn)生一個線程切換。如果當(dāng)減量寄存器中之值達到零時沒有其他線程準(zhǔn)備好處理指令,則被減量的值凍結(jié)在零直至另一線程準(zhǔn)備好處理指令,在這一點上便發(fā)生一個線程切換,減量寄存器重新加載那個線程的線程切換超時值。類似地,減量寄存器也能同樣容易地命名為增量寄存器,當(dāng)一線程在執(zhí)行時,該寄存器可增量至某一預(yù)先確定值,此時將迫使產(chǎn)生線程切換。線程切換超時寄存器430可如前述由一服務(wù)處理器寫入,或由處理器本身用軟件代碼寫入??筛鶕?jù)特定的硬件配置和/或特定的軟件代碼來專門確定加載到線程切換超時寄存器430中的線程切換超時值,從而使不必要的線程切換造成的周期浪費達到最小。當(dāng)活動線程等待由另一線程掌握的資源時,或者如果一個外部中斷290或處理器外部的其他事件的響應(yīng)等待時間太長,則線性切換超時寄存器430中的值太高會造成性能下降。如果一個線程遇到的線程切換事件次數(shù)高而其他線程不是,則太高的超時值還會防礙公平性。推薦的線程切換超時值為長于最頻繁的最長等待時間事件(例如訪問主存儲器)的2倍至若干倍。在等待由線程切換超時寄存器430中指定的周期數(shù)之后迫使產(chǎn)生一個線程切換,這防止了系統(tǒng)由于爭奪共享資源而掛起,堅持了線程間處理器周期分配的公平性,并限制了對外部中斷及處理器外部其他事件的響應(yīng)等待時間。前進保證在某些情況下,例如當(dāng)一個單一指令產(chǎn)生多個高速緩存訪問和/或多個高速緩存缺失時,每次發(fā)出線程切換和新線程變?yōu)榛顒泳€程時必須至少有一個指令被執(zhí)行的限制太強了。例如,一個取指令可能引起L1I-高速緩存150缺失,如果所請求的指令不在該高速緩存中的話;但當(dāng)指令返回時,所請求的數(shù)據(jù)可能在L1D-高速緩存120中得不到。類似地,翻譯后備緩存器250中的缺失也能造成數(shù)據(jù)高速緩存缺失。因此,如果嚴(yán)格地強迫向前進,則在其后訪問時的缺失不會造成線程切換。第二個問題是某些高速緩存缺失可能需要大量周期去完成,在此期間可能有另一線程在同一高速緩存級別上遇到高速緩存缺失,而這一缺失能在短得多的時間內(nèi)完成。如果在返回第一線程時強迫嚴(yán)格的前進,則處理器便不能切換到有較短高速緩存缺失的線程。翻來復(fù)去重復(fù)即在那種情況下每個線程被鎖在切換線程重復(fù)周期中而沒有執(zhí)行任何指令,為了補救這一問題,存在一個前進計數(shù)寄存器420(圖4),它允許達到可編程的最大線程切換次數(shù),稱作前進閾值值。在最大線程切換次數(shù)之后,一條指令必須被完成,然后才能再發(fā)生切換。這樣,防止了翻來復(fù)去的重復(fù)。前進計數(shù)寄存器420實際上可以是線程切換控制寄存器410中的3031位,或該處理器的軟件可編程前進閾值寄存器。前進計數(shù)邏輯使用線程狀態(tài)寄存器442、444的位1517,它們指示線程的狀態(tài)并被分配一個線程在沒有指令執(zhí)行的情況下已遇到的線程切換數(shù)。于是,這些位最好包括前進計數(shù)器。當(dāng)一線程改變狀態(tài)而啟動線程切換算法時,如果在該活動線程中已完成了至少一個指令,則該活動線程的前進計數(shù)器復(fù)位,而線程切換算法繼續(xù)比較處理器中各線程之間的線程狀態(tài)。如果沒有完成任何指令,則在活動線程的線程狀態(tài)寄存器中的前進計數(shù)器值與前進閾值比較。如果計數(shù)器值不等于閾值,由線程切換算法繼續(xù)評估處理器中各線程的線程狀態(tài)。然后,如果發(fā)生線程切換,則前進計數(shù)器增量。然而,如果計數(shù)器值或狀態(tài)等于閾值,則在能執(zhí)行一條指令之前將不發(fā)生線程切換,即直到發(fā)生前進時才會發(fā)生線程切換。請注意,如果閾值寄存器有零值,則在切換到另一線之前在該活動線程內(nèi)必須完成至少一條指令。如果每次線程切換需要3個處理器周期,而且如果存在兩個線程,而且如果線程切換邏輯被編程為5次嘗試之后停止嘗試切換線程,則處理器將在30個周期內(nèi)翻來復(fù)去地重復(fù)。本領(lǐng)域技術(shù)人員會理解,在一方面由于沒有前進而禁止線程切換和另一方面由于已超過超時計數(shù)而迫使線程切換這二者之間存在潛在的沖突。這種沖突能根據(jù)結(jié)構(gòu)和軟件容易地解決。圖6是線程切換邏輯400的前進計數(shù)特性的流程圖,這防止翻來復(fù)去重復(fù)。在塊610,在從屬于線程T0的線程狀態(tài)寄存器442中的位1517被復(fù)位為狀態(tài)111。在塊620試圖執(zhí)行這一線程,于是狀態(tài)變?yōu)?00。如果對線程T0成功地執(zhí)行了一條指令,則線程T0的狀態(tài)變回為111并保持此狀態(tài)。然而,如果線程T0不能執(zhí)行一條指令,則線程T1發(fā)生線程切換,或者切換到另一后臺線程,如果在處理器結(jié)構(gòu)中允許兩個以上線程的話。當(dāng)發(fā)生離開T1或其他后臺線程的線程切換并使執(zhí)行返回到線程T0時,則發(fā)生執(zhí)行線程T0的第二次嘗試,于是線程T0的狀態(tài)在塊630變?yōu)?01。如果線程T0遇到線程切換事件,則處理器的控制再次從線程T0切換到另一線程。類似地,每當(dāng)發(fā)生離開另一線程(例如T1)返回線程T0的線程切換,則在這第3次嘗試執(zhí)行T0時T0的狀態(tài)變?yōu)?10(塊640);在第4次嘗試執(zhí)行T0時變?yōu)?11(塊650),并在第5次嘗試執(zhí)行T0時變?yōu)闋顟B(tài)100(塊660)。在這一實現(xiàn)中,有5次試圖切換到線程T0。在第5次嘗試之后,或每當(dāng)線程狀態(tài)寄存器(TSR)442中位1517的值等于線程切換控制寄存器(TSC)410中位3031之值加1的時候,即每當(dāng)TSC(3031)+1=TSR(1517)時,則不會發(fā)生從線程T0離開的線程切換??梢岳斫猓?次嘗試是一個任意數(shù);由于不成功執(zhí)行而允許切換的最大次數(shù),即前進閾值,是可編程的,而且在某些結(jié)構(gòu)中可能認(rèn)為5次切換太多,而在另一些結(jié)構(gòu)中5次又太少。不管怎樣,在無指令執(zhí)行的情況下試圖切換到一線程的次數(shù)必須與一閾值比較,而且一旦已達到那一閾值值,則不會再發(fā)生離開那個線程的線程切換,其中處理器將等待直至與那個線性關(guān)聯(lián)的等待時間被化解為止。在其中描述的實施例中,由線程狀態(tài)寄存器442的位1517代表的線程狀態(tài)與線程切換控制寄存器410中的位3031比較。對于有特別長等待時間的特殊事件,如與輸入/輸出裝置的相互作用,進行特殊處理以防止由前進邏輯過早地鎖住線程切換,從而改善了處理器性能。處置這些特別長等待時間事件的一種方式是鎖住前進計數(shù)器增量,或者忽略前進計數(shù)器與閾值比較的輸出信號,如果數(shù)據(jù)尚未返回的話。處理特別長等待時間事件的另一方式是對這些特殊事件使用單獨的更長的前進計數(shù)。分配給處理器的所有軟件線程的線程狀態(tài)最好如所描述的那樣保持在圖4中的線性狀態(tài)寄存器442和444中。在單一處理器中在一個時刻一個線程執(zhí)行它的指令而其他線程在休眠。當(dāng)相對于前進寄存器420、線程切換控制寄存器410或線性切換超時寄存器430而言,該活動線程遇到了一個長等待時間事件,則執(zhí)行從活動線程切換到一個休眠線程。與哪個線程是活動線程無關(guān),這些硬件寄存器使用的條件在執(zhí)行過程中不發(fā)生動態(tài)變化。由線程切換管理器靈活地改變線程切換條件改善了系統(tǒng)的總體性能。一個軟件線程切換管理器能改變線程切換頻率,增大至關(guān)重要任務(wù)可得到的執(zhí)行周期數(shù)和減小由于線程切換等待時間造成的總周期損失。線程切換管理器或者可在編譯時或者可在執(zhí)行過程中由操作系統(tǒng)編程,例如,一個閉鎖循環(huán)能改變線程切換頻率;或者由于處在較低優(yōu)先級的休眠線程在等待一個外部中斷或否則已準(zhǔn)備好,則可以把一操作系統(tǒng)任務(wù)分配。不允許或降低離開一活動線程的線程切換,從而使當(dāng)前指令流的性能不受進出于它的切換所造成的等待時間的影響,這可能是有利的。另一種作法是,通過基本上降低其優(yōu)先級,一個線程能放棄一些或全部它的執(zhí)行周期,結(jié)果降低了進入它的切換頻率或增加了離開該線程的切換頻率,以增強系統(tǒng)的總體性能。線程切換管理器還能無條件地迫使或禁止一線程切換,或者影響下一次選擇哪個線程去執(zhí)行。多優(yōu)先級線程切換方案對每個線程賦予一個優(yōu)先級值,以使引起切換的條件定量化。還可能希望在某些情況下有由硬件改變線程優(yōu)先級。例如,一個低優(yōu)先級線程可能在等待某一事件,而當(dāng)該事件發(fā)生時,該硬件能提高該線程的的優(yōu)先級以影響該線程對該事件(例如一個外部中斷290)的響應(yīng)時間。各線程間的相對優(yōu)先級或某一線程的優(yōu)先級將影響對這一事件的處理。線程的優(yōu)先級可由硬件響應(yīng)于一個事件來調(diào)節(jié),或由線程切換管理器軟件使用一個或多個指令來調(diào)節(jié)。線程切換管理器改變硬件線程切換邏輯完成的行動,以有效地改變線程的相對優(yōu)先級。對于其中描述的有兩線程的實施例使用了3個優(yōu)先級,這3個優(yōu)先級足以區(qū)分線程以允許對性能調(diào)優(yōu)而不會使系統(tǒng)性能變壞。利用3個優(yōu)先級,兩個線程能有相等的中等優(yōu)先級狀態(tài),對兩個線程選擇3個優(yōu)先級這種做法不想成為一種限制。在某些結(jié)構(gòu)中,一個“正?!睜顟B(tài)可能是有一個線程的優(yōu)先級總是高于其他線程。在本發(fā)明的范圍內(nèi)想要復(fù)蓋多于兩個執(zhí)行線程,具有一個或多個優(yōu)先級,它們可在硬件中設(shè)定或由軟件編程。每個線程的3個優(yōu)先級是高、中、低。當(dāng)線程T0的優(yōu)先級與線程T1的優(yōu)先級相同時,這對線程切換邏輯無影響。兩個線程都有相等的優(yōu)先級,則哪一個也沒有優(yōu)先的執(zhí)行時間。當(dāng)線程T0的優(yōu)先級大于線程T1的優(yōu)先級時,對某些線程切換事件,即所有L1高速緩存缺失(即數(shù)據(jù)加載、數(shù)據(jù)存儲和指令取),便不能由T0切換到T1,因為L1高速緩存缺失的解決要比其他條件(例如L2缺失和翻譯)快得多??赡苁谷魏尉€程切換事件失效,從而給予線程T0以更好的機會,以比線程T1接受更多的執(zhí)行周期,這允許線程T0繼續(xù)執(zhí)行,只要它不浪費過多的執(zhí)行周期數(shù)。然而,如果線程T0遇到一個較長的執(zhí)行等待時間,例如一個L2高速緩存缺失或從計算機系統(tǒng)外部的源提取數(shù)據(jù),則處理器仍將放棄對線程T1的控制。從線程T1到T0的線程切換不受影響,除非當(dāng)休眠線程T0準(zhǔn)備好而在這種情況中線程T0優(yōu)先于線程T1時發(fā)生切換。當(dāng)由于一L2高速緩存缺失或翻譯請求使線程T0被切換開,而當(dāng)線程T1在執(zhí)行時這一條件在后臺得以解決,這時預(yù)計會發(fā)生這種情況。線程T0的優(yōu)先級低于線程T1的情況類似于上述情況,只是指定的線程相反。有幾種不同的可能途徑去實現(xiàn)通過改變線程優(yōu)先級來管理線程切換。對處理器結(jié)構(gòu)可以增加新指令。有所希望的行動的那些有副作用的現(xiàn)存處理器指令也能使用。對在允許軟件控制的各種方法當(dāng)中進行選擇有影響的各因素當(dāng)中有(a)重新定義結(jié)構(gòu)以包括新指令的容易程度和結(jié)構(gòu)改變對現(xiàn)有處理器的影響;(b)在不同版本處理器上運行同一軟件的需要;(c)在使用新的專用指令與重用現(xiàn)有指令并確定造成的副作用二者之間作性能權(quán)衡;(d)所希望的軟件控制水平,例如能否由某些現(xiàn)有指令的每次執(zhí)行(例如特殊的加載或存儲)造成這種作用,或者是否需要通過向指令流中增加指令來增加控制以特別造成這種作用。其中描述的結(jié)構(gòu)最好利用未用過的指令,它的值不改變處理器中納入結(jié)構(gòu)的通用寄存器;這一特性對于把多線程能力改進到一個處理器結(jié)構(gòu)中是至關(guān)重要的。否則可對特殊指令編碼。這個指令是一個“優(yōu)選的空操作”“或0,0,0”;然而,其他指令能有效地用作空操作。空操作(no-op或nop)是這樣一條指令,它的執(zhí)行使計算機進入下一個要執(zhí)行的指令而不完成任何操作。在一個最佳結(jié)構(gòu)實施例中,通過使用不同版本的“或”指令,“或0,0,0”或“1,1,1”或任何現(xiàn)有的能把額外的優(yōu)先權(quán)切換意義加到它上面以改變線程優(yōu)先級的指令,這同一指令流可在一處理器上執(zhí)行而不產(chǎn)生壞作用,例如非法指令中斷。當(dāng)試圖執(zhí)行一個非法指令,或不由本實現(xiàn)提供的保留指令或可選指令時,便會產(chǎn)生非法指令中斷。一個擴展利用機器狀態(tài)寄存器的狀態(tài)去改變這些指令的意義。例如,可能不希望允許用戶對部分或全部這些線程優(yōu)先級指令進行編碼并訪問它們提供的功能。它們提供的特殊功能可能被規(guī)定為只在某些執(zhí)行方式中發(fā)生,而在其他方式中它們沒有作用而且將作為一個“空操作”正常執(zhí)行。一種可能的實現(xiàn),利用雙線程的多線程處理器,使用3個優(yōu)先級切換指令,這些指令成為執(zhí)行軟件本身的一部分,以改變本身的優(yōu)先級tsop1“或1,1,1”-切換到休眠線程tsop2“或1,1,1”-置活動線程于低優(yōu)先級-切換到休眠線程-注意只在特權(quán)模式下有效,除非TSC〔19〕=1Tsop3“或2,2,2”-置活動線程于中等優(yōu)先級Tsop4“或3,3,3”-置活動線程于高優(yōu)先級-注意只在特權(quán)模式下有效優(yōu)先級切換指令tsop1和tsop2可為同一指令,如在其中實現(xiàn)為“或1,1,1”,但它們也可以各為單獨的指令。如其中描述的那樣,這些指令與線程切換控制寄存器410的19和21位以及機器狀態(tài)寄存器的問題/特權(quán)位相互作用。如果線程切換控制寄存器410的位21位有值1,則線程切換管理器能把它的線程優(yōu)先級置為線程狀態(tài)寄存器中位1819中代表的3個優(yōu)先級之一。如果線程切換控制寄存器410的位19有值0,則指令tsop2的線程切換與線程優(yōu)先級設(shè)置由機器狀態(tài)寄存器的問題/特權(quán)位控制。另一方面,如果線程切換控制寄存器410的位19有值1,或者如果機器狀態(tài)寄存器的問題/特權(quán)位有值0而且在代碼中出現(xiàn)指令“或1,1,1”,則該活動線程的優(yōu)先級設(shè)為低而且執(zhí)行立即切換到休眠或后臺線程,如果該休眠線程被允許的話。指令“或2,2,2”置活動線程的優(yōu)先級于中等,不管機器狀態(tài)寄存器的問題/特權(quán)位的值如何。而當(dāng)機器狀態(tài)寄存器的問題/特權(quán)位有值0時,指令“或3,3,3”置活動線程的優(yōu)先級于高。如果線程切換控制寄存器320的位21為零,則兩個線程的優(yōu)先級都置于中等,而且“或X,X,X,”指令時優(yōu)先級的作用被鎖住。如果一個外部中斷請求有效,而且如果相應(yīng)線程的優(yōu)先級為低,則把該線程的優(yōu)先級置于中等。被線程優(yōu)先級改變的事件是(1)由于L1D-高速緩存加載數(shù)據(jù)缺失而切換;(2)由于L1D-高速緩存存儲數(shù)據(jù)缺失而切換;(3)由于L1I-高速緩存指令取缺失而切換;(4)如果休眠線程處于準(zhǔn)備好狀態(tài)而切換。此外,外部中斷生效可能改變相應(yīng)線程的優(yōu)先級。下表顯示優(yōu)先級對引起線程切換的條件的影響。在第3和第4列中的簡單的TSC條目的意思是利用線程切換控制(TSC)寄存器410中提出的條件去啟動一次線程切換。把TSC〔02〕條目作為0對待的意思是線程切換控制寄存器410的位02被看作是對那個線程這些位的值猶如零,而線程切換控制寄存器410中的其他位按原樣定義引起線程切換的條件。在第4列中的短語“當(dāng)線程T0準(zhǔn)備好時”的意思是一旦線程T0不再等待使它切換出去的缺失事件時便發(fā)生到線程T0的切換。在第3列中的短語“當(dāng)線程T1準(zhǔn)備好時”的意思是一旦線程T1不再等待使它切換出去的缺失事件時便發(fā)生到線程T1的切換。如果這缺失事件是一個線程切換超時,則不保證在一較高優(yōu)先級線程切換回來之前較低優(yōu)先級事件能完成一條指令建議給予做無產(chǎn)出工作的線程以低優(yōu)先級以避免損失性能,即使在閑循環(huán)中的每條指令引起線程切換也如此。然而,仍然重要的是,如果一個設(shè)在低先級的線程請求一外部中斷,則應(yīng)允許硬件改變線程優(yōu)先級。在這種情況下,該線程被提高到中等優(yōu)先級以允許更快地響應(yīng)中斷。這允許一個等待外部事件的線程把它本身設(shè)為低優(yōu)先級,它將停留在那里直至該事件被通知出去。盡管已聯(lián)系當(dāng)前認(rèn)為最實際的和最佳的實施例描述了本發(fā)明,但應(yīng)該理解,本發(fā)明不限于所說明的實施例,而是相反,本發(fā)明要復(fù)蓋在所附各權(quán)利要求的實質(zhì)和范圍內(nèi)包括的各種修改和等價安排。權(quán)利要求1.一種計算機處理方法,包括在多線程處理器中執(zhí)行多個指令線程的至少一個,其中每個線程有一優(yōu)先級;改變這多個線程的一個或多個的優(yōu)先級。2.權(quán)利要求1的方法,還包括根據(jù)每個線程的優(yōu)先級從多個線程之一切換到這多個線程的另一個。3.權(quán)利要求1或2的方法,其中由硬件產(chǎn)生的一個信號改變一個或多個線程的優(yōu)先級。4.權(quán)利要求1至3中任何一個的方法,其中由多線程處理器外部的事件造成該信號。5.權(quán)利要求1至4中任何一個的方法,其中線程切換管理器改變一個或多個線程的優(yōu)先級。6.權(quán)利要求1至5中任何一個的方法,其中多個線程之一的優(yōu)先級高于這多個線程中的另一個。7.權(quán)利要求1至5中任何一個的方法,其中這多個線程中至少兩個能有相等的優(yōu)先級。8.權(quán)利要求1至7中任何一個的方法,其中這多個線程中任何一個的優(yōu)先級可為高、中或低。9.權(quán)利要求1至6、8中任何一個的方法,其中當(dāng)?shù)谝痪€程的優(yōu)先級低于第二線程而且第二線程處于準(zhǔn)備好狀態(tài)時,發(fā)生從這多個線程的第一個向這多個線程的第二個的切換。10.權(quán)利要求1至6、8、9中任何一個的方法,其中對于指定的線程切換事件,取消從其優(yōu)先級高于這多個線程中另一個線程的多個線程中的那個線程向其他線程的切換。11.一種計算機處理方法,包括(a)在一個與高速緩存連接的多線程處理器中執(zhí)行多個指令線程中的至少一個,每個線程有一優(yōu)先級;(b)利用含有線程切換指令的線程切換管理器來改變這多個線程中的一個或多個的優(yōu)先級;(c)如果第一線程的優(yōu)先級低于第二線程而且第二線程處于準(zhǔn)備好狀態(tài),則從這多個線程的第一個切換到這多個線程的第二個;(d)對于指令的線程切換事件,不從有較高優(yōu)先級的多個線程之一切換出去。12.一種計算機處理方法,包括根據(jù)多個線程中至少一個的相對于這多個線程中至少另一個的優(yōu)先級,在多線程處理器中向多個指令線程中的至少一個分配處理周期數(shù)。13.計算機處理系統(tǒng)的線程切換管理器,包括至少一個優(yōu)先級切換指令;在第一寄存器中的至少一個線程切換優(yōu)先級位;在第二寄存器中的多個優(yōu)先級狀態(tài)位,其中優(yōu)先級切換指令能改變這多個優(yōu)先級狀態(tài)位中的任何一個。14.權(quán)利要求13的線程切換管理器,還包括一個多線程處理器;以及在多線程處理器中的包括至少一個活動線程的多個指令線程;其中優(yōu)先級切換指令改變多個優(yōu)先級狀態(tài)位之一,在多線程處理器中的多個指令線程中至少一個改變優(yōu)先級。15.權(quán)利要求14的線程切換管理器,其中如果至少一個線程切換優(yōu)先級位為有效的話,則多線程處理器響應(yīng)于這至少一個指令線程優(yōu)先級的變化,把處理從活動線程切換到其他線程。16.權(quán)利要求13至15中任何一個的線程切換管理器,其中多個優(yōu)先級狀態(tài)位包括多個設(shè)置,每個設(shè)置對應(yīng)于多個指令線程中的相應(yīng)一個。17.權(quán)利要求13至16中任何一個的線程切換管理器,其中所述第一寄存器和所述第二寄存器是一個整體。18.權(quán)利要求14至17中任何一個的線程切換管理器,其中在第一寄存器中的至少一個線程切換優(yōu)先級位是在操作上與多線處理器相連的線程切換控制寄存器中的至少一個線程切換控制位。19.權(quán)利要求14至18中任何一個的線程切換管理器,其中第二寄存器包括一個操作上與多線程處理器相連的線程狀態(tài)寄存器,該線程狀態(tài)寄存器存儲這多個指令線程中至少一個的狀態(tài)。20.權(quán)利要求13至19中任何一個的線程切換管理器,其中優(yōu)先級切換指令不改變多線程處理器內(nèi)多個納入結(jié)構(gòu)的寄存器的任何一個。21.權(quán)利要求13至20中任何一個的線程切換管理器,其中優(yōu)先級切換指令能在多線處理器上執(zhí)行而不發(fā)生非法指令中斷。22.權(quán)利要求13至21中任何一個的線程切換管理器,其中優(yōu)先級切換指令是一個空操作(noop)指令。23.一個計算機處理器,包括(a)處理多個指令線程的裝置;(b)存儲這多個線程中每個的優(yōu)先級狀態(tài)的裝置;(c)改變這多個線程中每個的優(yōu)先級狀態(tài)的裝置;(d)響應(yīng)改變裝置,使處理裝置能把處理從這多個線程中的一個第一線程切換到一個第二線程的裝置。24.權(quán)利要求23的計算機處理器,其中所述改變優(yōu)先級狀態(tài)的裝置還包括一個來自中斷請求的信號。25.權(quán)利要求23或24的計算機處理器,其中所述改變優(yōu)先級狀態(tài)的裝置包括至少一個軟件指令去操縱至少一個硬件寄存器中的優(yōu)先級位。26.一個計算機數(shù)據(jù)處理系統(tǒng),包括一個多線程處理器(100),能處理至少一個指令線程和在至少兩個指令線程之間切換;多個內(nèi)部存儲器單元(120、130、140、150);把內(nèi)部存儲器單元彼此連接和與多線程處理器連接的系統(tǒng)總線;多個外部連接(155),把多線程處理器與一個或多個下列外部裝置相連存儲器裝置(170)、通信裝置(164)、計算機網(wǎng)絡(luò)(168)及輸入/輸出裝置(178);總線接口(152)把外部連接與多線程處理器相連;以及線程切換管理器(460),在操作上與多線程處理器相連以改變至少一個指令線程的優(yōu)先級。全文摘要一種在數(shù)據(jù)處理系統(tǒng)中完成計算機處理操作的系統(tǒng)和方法包括一個多線程處理器(100)和線程切換邏輯(400)。多線程處理器能在兩個或多個能被獨立執(zhí)行的指令線程之間切換。每個線程在線程狀態(tài)寄存器(440)中有一個取決于它的執(zhí)行狀態(tài)的相應(yīng)狀態(tài)。線程切換邏輯包括一個線程切換控制寄存器(410)存儲將發(fā)生線程切換的條件。該線程切換邏輯有一個超時寄存器(430),當(dāng)在多線程處理器中的活動線程的執(zhí)行超過一個可編程的時間段時迫使發(fā)生線程切換。線程切換邏輯還有一個前進計數(shù)寄存器(420)防止在多線程處理器中在線程之間發(fā)生反復(fù)的無產(chǎn)出的線程切換。線程切換邏輯還響應(yīng)于一個能改變不同線程優(yōu)先級的軟件管理器,從而替代線程切換事件。文檔編號G06F9/30GK1276890SQ98810355公開日2000年12月13日申請日期1998年10月14日優(yōu)先權(quán)日1997年10月23日發(fā)明者約翰·M·博克哈根,威廉·T·弗林,安德魯·H·沃特靈申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1