專利名稱:在多線程處理器中用于高速線程間中斷的方法和設備的制作方法
技術領域:
本發(fā)明通常涉及數(shù)字數(shù)據(jù)處理器領域,特別是涉及用于多線程處理器中的中斷技術。
背景技術:
歷史上,計算機系統(tǒng)使用″中斷″機制來告知處理器意外的或偶發(fā)的活動或狀況。例如,無效計算、網(wǎng)絡分組到達、和磁盤存取的完成都會在標準的現(xiàn)代計算機上引起中斷。不涉及處理器正常操作的專用硬件檢測該狀況并向處理器發(fā)信號。當接收中斷的時候,處理器暫停其當前任務,執(zhí)行處理該狀況所必需的步驟,然后繼續(xù)其普通執(zhí)行的任務。中斷措施使計算機快速地應答偶發(fā)事件而無需不斷地檢查或″輪詢″它們。
多處理器系統(tǒng)一般支持處理器間中斷,其允許一個處理器中斷另一個處理器。處理器間中斷被用來同步不同處理器的活動,并將系統(tǒng)或它們正在運行的程序中的變化狀況告知處理器。例如,當多個處理器上運行的程序狀態(tài)發(fā)生改變時,這些改變不僅必須被反映到檢測到改變的處理器上,而且還要反映到執(zhí)行該程序的所有處理器上。另外,處理器間中斷可被用來告知處理器一處理器間消息已經(jīng)到達。
處理器間中斷的傳送和接收相對較快,但是它仍需使用多個處理器時鐘周期。用來發(fā)送和接收中斷的中斷控制器常常從處理器中被分離,而且需要多個周期的操作來處理。此外,實際上將中斷從一個中斷控制器發(fā)送到另一個中斷控制器可能需要幾個處理器時鐘周期,因為處理器一般以比常規(guī)中斷控制器更快的時鐘頻率運行。
多線程處理器是支持多個不同的指令序列或″線程″同時執(zhí)行的處理器。各個處理線程協(xié)作使用比一個單獨的線程更多的處理器計算能力。這種協(xié)作一般會導致比標準的多處理器系統(tǒng)更多的同步和通信,從而在通信機制的開銷上付出更高的額外代價,比如從一個線程到另一個線程的中斷,即線程間中斷。
諸如使用″超線程技術″的Intel處理器之類的現(xiàn)有多線程處理器一般使用這樣的技術來處理線程間中斷即在多處理器系統(tǒng)中模擬那些用來處理前述的處理器間中斷的技術。因而,處理線程間中斷的常規(guī)技術非常慢,并且可能在處理資源方面需要大量的開銷。例如,一個線程使用傳統(tǒng)方法來中斷另一個線程時一般需要大量的指令執(zhí)行周期。
從上文可以明顯地看出,需要改進用于多線程處理器中的線程間中斷處理的技術。
發(fā)明內(nèi)容
本發(fā)明提供用于在多線程處理器中處理線程間中斷的改進技術。
根據(jù)本發(fā)明的一方面,多線程處理器包括用于處理直接從請求線程到目的線程的線程間中斷的中斷控制器。
在一個說明性實施例中,中斷控制器接收傳送線程間中斷到目的線程的一個請求,確定線程間中斷的目的線程是否被允許用于接收線程間中斷,且如果目的線程被允許用于接收線程間中斷,則使用線程標識符來控制線程間中斷到目的線程的傳送。
通過在多線程處理器的標志寄存器中設置對應的中斷掛起位(interrupt pending bit),請求線程請求將線程間中斷傳送到目的線程。當線程間中斷被傳送到目的線程時,中斷掛起位可以被自動清除。
如果對應的允許位在多線程處理器的允許寄存器(enableregister)中被設置,則目的線程被允許來接收線程間中斷。當線程間中斷被傳送到目的線程時,可以自動清除允許位以免目的線程同時接收多個中斷,然后接著在線程間中斷的服務之后復位以便重新允許目的線程接收其它中斷。
在說明性實施例中,允許寄存器和標志寄存器都至少包括N個部分,其中每部分都對應于多線程處理器的N個線程之一。優(yōu)選地,N個線程中的每一個都只允許訪問允許寄存器的其對應部分,而不能訪問對應于其它線程的允許寄存器的N-1個部分。然而,N個線程中的每一個都被允許訪問標志寄存器的N個部分的每一個。
根據(jù)本發(fā)明的另一方面,中斷控制器中的邏輯電路可以包括用于處理中斷請求的中斷請求邏輯、多個邏輯門和多路復用電路,這些邏輯門的每一個從每個允許寄存器和標志寄存器接收對應位作為輸入。多路復用電路至少部分地根據(jù)線程標識符從邏輯門輸出中至少選擇一個用于控制線程間中斷產(chǎn)生的輸出。
中斷控制器的邏輯電路還可以包括優(yōu)先級邏輯電路,其用于相對于其它中斷類型給予線程間中斷優(yōu)先級,其它的中斷類型比如計時器中斷、指令地址中斷、外部產(chǎn)生的中斷等等。
本發(fā)明在多線程處理器中有利地提供了一個用于傳送和服務線程間中斷的低延時、低開銷的機制。例如,在上述的說明性實施例中,給定線程可能在單個指令執(zhí)行周期內(nèi)中斷另一個線程。
圖1是一個可以執(zhí)行本發(fā)明的示例處理系統(tǒng)的框圖。
圖2是一個更加詳細的框圖,其說明了圖1處理系統(tǒng)的多線程處理器的實施例。
圖3根據(jù)本發(fā)明的技術示出一個示例線程中斷允許寄存器(TIER),其可以在圖2的多線程處理器的中斷控制器中被執(zhí)行。
圖4根據(jù)本發(fā)明的技術示出一個示例的中斷標志寄存器(TIER),其可以在圖2的多線程處理器的中斷控制器中被執(zhí)行。
圖5示出根據(jù)本發(fā)明配置的中斷控制器的一個說明性實施例。
圖6是一個流程圖,說明運用本發(fā)明技術來處理線程間中斷。
具體實施例方式
在此,本發(fā)明將被說明為在多線程處理器中被執(zhí)行,該多線程處理器與主存儲器、多線程的高速緩沖存儲器和多線程的數(shù)據(jù)存儲器相關聯(lián)。然而應當理解,本發(fā)明不需要使用說明性實施例中的特定多線程處理器和存儲器配置,而更一般地適于使用任何多線程處理器中斷處理的應用,只要它們可提供改進的線程間中斷的處理。
結合圖1和圖2將描述一個示例處理系統(tǒng)100,其執(zhí)行根據(jù)本發(fā)明的線程間中斷處理技術。
圖1示出的處理系統(tǒng)100包括連接到主存儲器104的多線程處理器102。多線程處理器102包括中斷控制器105、多線程高速緩沖存儲器110和多線程數(shù)據(jù)存儲器112。
根據(jù)本發(fā)明的一方面提供一個改進技術,其用于在多線程處理器102中處理線程間中斷。在一個說明性的實施例中,這些技術主要是在中斷控制器105內(nèi)執(zhí)行。如圖1中大略說明的,中斷控制器105在這個實施例中被優(yōu)選地集成在多線程處理器102內(nèi)。
應當理解,盡管根據(jù)本發(fā)明技術來配置用于有效處理線程間中斷的中斷控制器105,然而它也可以被配置使用本領域技術人員所熟知的常規(guī)技術來處理其它類型的中斷,比如數(shù)據(jù)或指令地址中斷、計時器中斷、外部產(chǎn)生的中斷等等。例如,外部產(chǎn)生的中斷可能包括與多線程處理器102外部的特定裝置相關的中斷,或與處理器的特定輸入插腳相關的中斷。
因此,中斷控制器105可以包括在此描述的任何特定中斷控制器元件之外或代替它們的各種常規(guī)元件。
圖2示出一個更加詳細的視圖,即多線程處理器102的一個可能的執(zhí)行過程。在這個實施例中,多線程處理器102包括中斷控制器105、多線程高速緩沖存儲器110、數(shù)據(jù)存儲器112、高速緩沖存儲器控制器114、指令解碼器116、寄存器堆118和一組算術邏輯單元(ALU)120。多線程高速緩沖寄存器110在此還相當于多線程高速緩存。
應當指出,圖1和圖2中所示的特定布局是為了圖解的清晰性,所屬領域技術人員可以明顯地看出其中還包括沒有明確示出的附加或替換元件。
中斷控制器105包括邏輯電路202和中斷控制器寄存器204。在說明性的實施例中,寄存器204包括允許寄存器和標志寄存器,它們將分別結合圖3和圖4在下面被詳細描述。邏輯電路202及其與寄存器204的相互作用將結合圖5在下面被詳細描述。
中斷控制器105可以經(jīng)由系統(tǒng)總線206連接到多線程處理器102的其它元件。
在這個說明性的實施例中,還與中斷控制器105相關的是分支控制器210。分支控制器210被連接到高速緩存控制器114和中斷控制器105,經(jīng)由總線206或圖中沒有明確示出的其它適當連接,它還可以與多線程處理器102的一個或多個其它元件通信。盡管分支控制器210在圖中被示為一個分離的元件,然后其在此被描述的功能可以完全或部分地在中斷控制器105或多線程處理器102的其它元件內(nèi)來執(zhí)行。分支控制器210或關聯(lián)的中斷控制器105也可以執(zhí)行其它功能,比如與常規(guī)的線程執(zhí)行控制器相關的功能。
多線程高速緩存110包括多個線程高速緩存110-1、110-2、...110-N,其中,N通常表示多線程處理器102所支持的線程數(shù)。從而,每個線程在多線程高速緩存110中都有與之關聯(lián)的對應的線程高速緩存。同樣地,數(shù)據(jù)存儲器112包括N個不同的數(shù)據(jù)存儲器的實例,如圖所示被表示為數(shù)據(jù)存儲器112-1、112-2、...112-N。
多線程高速緩存110中的每個線程高速緩存可以包括具有一組或多組存儲單元的一個存儲器陣列。給定的線程高速緩存還可以包括,或者說與用于存儲關聯(lián)的線程標識符的線程標識符寄存器相關聯(lián)。
多線程高速緩存110經(jīng)由高速緩存控制器114與主存儲器104接口。高速緩存控制器114確保來自主存儲器104的適當指令被加載到多線程高速緩存110中。在這個說明性的實施例中,高速緩存控制器114結合邏輯電路或其它與單個的線程高速緩存110-1、110-2,...110-N相關的處理元件來運行,該高速緩存控制器114至少執(zhí)行一部分地址映射技術,比如完全關聯(lián)映射(fully associativemapping)、直接映射或組關聯(lián)映射(set-associative mapping)。在2002年6月4日申請的美國專利申請序列號10/161,774和10/161,874的申請中,描述了適于結合本發(fā)明使用或通常指定到本申請的說明性的組關聯(lián)映射技術,這兩個申請的內(nèi)容在此合并作為參考。
通常,多線程高速緩存110被用來存儲多線程處理器102將執(zhí)行的指令,而數(shù)據(jù)存儲器112儲存通過指令來操作的數(shù)據(jù)。指令通過指令解碼器116從多線程高速緩存110取得,指令解碼器結合寄存器堆118和算術邏輯單元120運行以用常規(guī)方式來控制指令的執(zhí)行。多線程處理器元件116、118和120的操作在本技術領域中是熟知的,因此就不在此做進一步的詳細說明。
數(shù)據(jù)存儲器112一般被直接連接到主存儲器104,盡管這個連接沒有明確地在圖中示出。
一個或多個存儲器104、110和112可以被配置以便包括多個存儲體(bank)或其它的指定部分。舉例來說,每個存儲體可以被看作由一個或多個存儲模塊組成,或由單個存儲模塊的指定部分組成。
在2002年10月11日申請的美國專利申請序列號為10/269,247,標題為″在多線程處理器中用于基于線程的存儲器存取的方法和設備(Method and Apparatus for Thread-Based Memory Access in aMultithreaded Processor)″的申請中,描述了用于與多線程處理器相關的這些和其它存儲器的基于線程的存儲體的技術,其內(nèi)容通過參考通常被指派并結合到本發(fā)明。
在此使用的術語″存儲器″被廣泛地解釋為包含內(nèi)部或外部存儲器、高速緩沖存儲器、數(shù)據(jù)存儲器,或其它數(shù)據(jù)存儲元件配置。本發(fā)明不受限于任何特定的存儲器類型、配置或應用。然而應當指出,存儲器在處理器技術中通常理解為不同于寄存器,比如在圖2中包括寄存器堆118的那些寄存器。
訪問寄存器堆的基于線程的技術在于2002年10月11日申請的美國專利申請序列號10/269,373的申請中被描述,其標題為″在多線程處理器中用于減少寄存器文件端口的方法和設備(Method andApparatus for Register File Port Reduction in a MultithreadedProcessor)″,其內(nèi)容通過參考通常被指定并結合到本發(fā)明。
應當強調(diào),本發(fā)明不要求圖2中所示的特定的多線程處理器配置。本發(fā)明可以在多種其它的多線程處理器配置中來執(zhí)行。
在2002年10月11日申請的美國專利申請序列號為10/269,372,標題為″用于有效處理收斂裝置應用的多線程處理器(MultithreadedProcessor with Efficient Processing For Convergence DeviceApplications)″的申請中,描述了圖2中所示的并適合于結合本發(fā)明使用的多線程處理器類型的更具體的例子,其內(nèi)容在此通過參考通常被指定并合并到本發(fā)明。在美國專利申請序列號為10/269,372的申請中描述了多線程處理器的一個說明性實施例,它能夠執(zhí)行基于精簡指令集計算機(RISC)的控制代碼、數(shù)字信號處理器(DSP)碼、Java碼和網(wǎng)絡處理碼。該處理器包括一個單指令多數(shù)據(jù)(SIMD)矢量單元、縮減單元、和長指令字(LIW)復合指令執(zhí)行。
多線程處理器102可以被配置來使用稱為令牌觸發(fā)線程的線程方法或其它適當?shù)木€程技術。優(yōu)選結合這類線程使用流水線數(shù)據(jù)處理。適用于本發(fā)明的線程技術和流水線技術的例子在于2002年10月11日申請,美國專利申請序列號為10/269,245,標題為″用于記號觸發(fā)多線程的方法和設備(Method and Apparatus for Token TriggeredMultithreading)″的申請中描述,其內(nèi)容在此通過參考通常被指定和結合到本發(fā)明中。
在多線程處理器中,給定線程通常可以根據(jù)硬件和軟件來看待。與給定線程相關的特定處理器硬件往往被更特別地稱為硬件線程單元或簡單地稱為″環(huán)境″。在此使用的術語″線程″意圖是包括軟件或硬件線程,或包括這兩者。
下面將詳細描述分支控制器210與中斷控制器105和多線程處理器102的其它元件的交互作用。通常,分支控制器210保存規(guī)定每個線程執(zhí)行什么指令的信息,并指揮線程高速緩存應該發(fā)送哪個指令給指令解碼器116以用于解碼和后續(xù)的執(zhí)行。對于每個線程,分支控制器210因此一般將保持一個分離的程序計數(shù)器以及一個用于在每個普通的指令、分支指令、中斷等等之后更新程序計數(shù)器的機制。
在圖2的框圖中,示出了在分支控制器210和中斷控制器105之間的兩個連接212和214。下面將在圖5中描述其所示出的這些連接的更加詳細的例子。分支控制器210使用連接212詢問中斷控制器105,看接下來將執(zhí)行的線程是否有一個中斷,在此稱之為″接下來執(zhí)行″線程。中斷控制器105通過連接214向分支控制器210返回一個這個詢問的響應。在圖5的示例中,連接212更具體地被指定來識別將被中斷的特定線程,而連接214按需包括與特定中斷相關的地址和控制輸出。
如上所述,根據(jù)本發(fā)明的一方面提供了多線程處理器102所用的改進的線程間中斷處理技術。
在本發(fā)明的一個說明性實施例中,例如多線程處理器102的多線程處理器被配置以便允許一個線程在單個指令執(zhí)行周期內(nèi)中斷另一個線程。如下所述,通過將中斷控制器105集成到多線程處理器102,從而使處理線程更快速地訪問中斷控制器寄存器204,傳送、服務或者說處理線程間中斷的時間顯著地減少。
圖3和圖4分別說明示例性的允許寄存器和標志寄存器,它們根據(jù)本發(fā)明與中斷控制器105相關聯(lián)。圖3和圖4的寄存器可以被看作在圖2中示出的寄存器204的具體示例。下面將詳細描述的是,這些說明性的中斷控制器寄存器控制在任何給定時間將哪個中斷傳遞到哪個線程,并且可以在單個指令執(zhí)行周期中被讀取或修改。如上所述,這些寄存器優(yōu)選和多線程處理器102集成。例如,這些中斷控制器寄存器可能就是所謂的″專用″寄存器,其被集成到中斷控制器105中或多線程處理器內(nèi)的其它地方。然而,其它類型的寄存器也可以用于執(zhí)行本發(fā)明的技術。
在結合圖3到圖5描述的實施例中,為了圖解簡明而假定線程數(shù)N為8。當然,本發(fā)明不限于這個特定的線程數(shù)。所屬領域技術人員很容易就能明白,此處所披露的方案可以用簡單直接的方法來修改以容許其它數(shù)目的線程。
首先參考圖3,其顯示了線程中斷允許寄存器(TIER)300。TIER可以被視作八個不同的四位寄存器,每個線程分配一個寄存器,盡管在這個實施例中TIER采用單個32位寄存器來實現(xiàn),其中位0、8、16和24與線程1相關、位1、9、17和25與線程2相關,依此類推。
中斷控制器被配置來確保每個線程只可以訪問TIER中其對應的部分。對于八個線程中的每一個,TIER包括數(shù)據(jù)地址(DADR)中斷允許位、指令地址(IADR)中斷允許位、計時器中斷允許位、和主中斷允許位。對于給定的其中一個線程,主中斷允許位在設置時允許線程從所有中斷源接收中斷,并且在清除時防止線程從所有中斷源接收中斷。為了圖解清晰起見,盡管可以使用其它假定,然而依然假設在此使用的術語″設置″和″清除″涉及相應的邏輯0和邏輯1″電平。
應當指出,TIER不要求特定位來允許線程間中斷,因為說明性實施例中的這些中斷至少可以部分地通過在多線程處理器102上運行的軟件來產(chǎn)生。
通常,TIER允許給定線程允許線程從多種中斷源來接收中斷。在這個實施例中,通過在TIER的相應部分設置主允許位,給定線程可以確保從所有中斷源接收中斷,包括從其它線程接收線程間中斷。應當指出,可以使用其它方案來允許根據(jù)本發(fā)明的線程間中斷。
圖4示出線程中斷標志寄存器(TIFR)400,其在這個實施例中被八個線程共享。TIFR在每個線程都可以訪問整個寄存器的情況下在線程之間被共享。這與TIER相反,其包括只有對應線程可以訪問的不同的部分。
TIFR包括一組用于八個線程中每一個的標志位、在此也被稱作″中斷掛起″位。更具體地,TIFR對于一個給定線程總共包括四個中斷掛起位,也就是分別用于數(shù)據(jù)地址(DADR)中斷、指令地址(IADR)中斷、計時器中斷和線程間(XTHR)中斷的一個單獨的中斷掛起位。TIFR在這個實施例中也用單個32位的寄存器來實現(xiàn),其中0、8、16和24位與線程1相關,而1、9、17和25位與線程2相關,依此類推。在TIFR中,給定的中斷掛起位在被設置時指示對應的中斷待決,和在被清除時指示對應的中斷并非待決。通常,通過在TIFR中設置對應的XTHR中斷掛起位,給定的線程設置用于另一個線程的線程間中斷。
如上所示,本發(fā)明的TIER和TIFR寄存器不要求附圖中所示的特定配置。例如,盡管在圖3和圖4中被顯示為單個寄存器,然而TIER和TIFR中的一個或兩個可以替換地用多個寄存器實現(xiàn),比如每個線程一個寄存器,每對線程一個寄存器,諸如此類。TIER和TIFR的多種其它替換配置對于所屬領域技術人員是顯而易見的。
圖5示出本發(fā)明說明性實施例的中斷控制器105的一個更詳細的視圖。中斷控制器105包括TIER300和TIFR400,它們用上述方法實現(xiàn)為32位的寄存器。中斷控制器105還包括具有中斷請求邏輯電路502的邏輯電路、在這個實施例中包括32個二輸入與門的邏輯門組504、多路復用電路506和產(chǎn)生中斷地址和控制輸出的優(yōu)先邏輯508。
中斷請求邏輯電路502被連接到中斷請求總線510,其可以表示圖2系統(tǒng)總線206的至少一部分。中斷請求邏輯電路502還經(jīng)由線路512接收作為輸入的中斷請求線程標識符。術語″線程標識符″在此還被表示為Thread_ID。其中一個給定的線程的線程標識符可被存儲在上述的用于該線程的線程標識符寄存器中。在當前例子中,如前述當N等于8時,線程標識符可以是三位標識符。
通常,輸入510和512用來確定應該設置TIFR中的哪個位。更具體地說,經(jīng)由輸入512提供的中斷請求線程標識符被中斷控制器105用來選擇用于所請求目的線程的標志寄存器部分,中斷請求總線510提供規(guī)定所請求中斷的特定類型的信息。
在此使用的術語″線程標識符″意在包括任何適用于在多線程處理器中識別特定線程或多個線程的組的信息。非限制性地舉例來說,線程標識符可以對應于多線程處理器中的線程計數(shù)器的輸出。更具體地說,給定的多線程處理器可以被配置成用預定次序來處理多個線程,比如循環(huán)次序,同時線程計數(shù)器輸出被用來識別正在被執(zhí)行的特定線程。在這樣一個實施例中,用循環(huán)次序處理的線程總共有8個,每個線程由三位標識符來識別,因此三位計數(shù)器的輸出可以被用來識別正在被處理的特定線程。其它實施例可以使用線程標識符的非計數(shù)器實現(xiàn)。適用于本發(fā)明的各式各樣的線程標識符配置對所屬領域技術人員來說是顯而易見的。
多線程處理器102的不同線程可以經(jīng)由中斷請求邏輯電路502訪問TIER和TIFR。請求另一個線程的線程間中斷的給定線程經(jīng)由輸入512把要被中斷的線程的中斷請求線程標識符提供給中斷請求邏輯電路502。將由線程間中斷來中斷的線程在此也稱為″目的″線程。
該邏輯門組504的二輸入端與門的每個輸入端接收一對位作為輸入,一個來自于TIER,一個來自TIFR。例如,二輸入端與門的最左端接收TIER和TIFR的第32位作為輸入,即在TIER和TIFR的DADR部分中被識別為位31的位。TIER和TIFR的其它位同樣成對地施加到各二輸入端與門。
與門的輸出被施加到多路復用電路506的輸入端。更具體地說,四個八至一的多路復用器506-1、506-2、506-3和506-4中的每一個都接收該邏輯門組504中32個二輸入端與門的八個輸出作為輸入。由多路復用器506-1、506-2、506-3和506-4接收的輸入分別與TIER和TIFR的0-7位、8-15位、16-23位和24-31位相關。
每個多路復用器還接收下一個執(zhí)行線程的線程標識符作為選擇信號輸入,其經(jīng)由連接212用結合圖2的上述方法從分支控制器210提供給中斷控制器105。這個線程標識符連同上述詢問一起被提供,該詢問關于下一個將被執(zhí)行的線程是否有任何未決中斷?;诒皇┘拥摹褰酉聛韴?zhí)行″線程標識符,每個多路復用器都把被選擇的八個輸入的其中一個輸出到優(yōu)先邏輯508。優(yōu)先邏輯508使用這些輸入來產(chǎn)生適當?shù)牡刂凡⒖刂朴糜趯袛嗟妮敵觥?br>
下面將要詳細描述的是,如果″下一個執(zhí)行″的線程有未決中斷,則中斷控制器105響應上述詢問,首先檢測主中斷允許位是否被設置用于特定的目的線程。然后,如果設置了主中斷允許位,則中斷控制器105經(jīng)由連接214把適當?shù)目刂戚敵龊蛯闹袛嗵幚沓绦虻刂穫魉偷椒种Э刂破鳌?br>
圖6是說明在中斷控制器105中與線程間中斷的處理相關的示例操作的流程圖600。為了傳送線程間中斷,請求線程在TIFR中設置對應于目的線程的XTHR位,如步驟602中所示?;凇逑乱粋€執(zhí)行″線程的線程標識符,多路復用器506-1、506-2、506-3和506-4把對應二輸入端與門的輸出傳遞到優(yōu)先邏輯508。
如果目的線程在TIER中設置了它的主允許位,則對應的與門輸出應該是邏輯高電平,并且這個方案結合多路復用器的操作提供這樣一個機制用于通知優(yōu)先邏輯508產(chǎn)生線程間中斷以用于在下個適宜的機會將其傳送到目的線程,如在步驟604中所示。
在該說明性實施例中,下個適宜的機會通常出現(xiàn)在下次目的線程將執(zhí)行一個指令的時候。如前所示,目的線程還必須設置了它的主允許位。在步驟606中,中斷被傳送到目的線程,一般以地址和來自優(yōu)先邏輯508的控制信息的形式,這將在下面被詳細描述。
在中斷被傳送到目的線程之后,其主允許位被自動清除,如步驟608所示。這防止目的線程同時接收多個中斷,而在這個說明性實施例中處理器通常無法正確地處理這些中斷。然后,如步驟610所示,中斷由目的線程來服務。如步驟612所示,目的線程的主允許位在中斷被服務之后被自動設置以便重新允許(re-enabled)目的線程的中斷。然后,進程返回步驟602以處理另一個線程間中斷。
在圖6的流程圖中,主允許位自動清除和設置應該被認為是示例性的而不是本發(fā)明所要求的。在其它實施例中,這個功能可以用其它技術來實現(xiàn)。例如,主允許位可以由適當?shù)能浖噶顏砻鞔_地設置或清除。
盡管未在圖中示出,然而用于自動清除TIFR中的XTHR中斷掛起位的操作可以被包括在步驟606之后的進程中,但是這個位在中斷被服務時將不會被重新允許。
如前所示,優(yōu)先邏輯508基于多路復用電路506的輸出產(chǎn)生地址和控制信息。在這個實施例中,線程間、計時器、指令地址和數(shù)據(jù)地址中斷的優(yōu)先級被固定在順序a、b、c和d,其中,a、b、c和d表示多路復用器506-1、506-2、506-3和506-4的相應輸出。對于給出的一組四個輸入a、b、c和d,優(yōu)先邏輯508產(chǎn)生中斷地址和多位控制信號作為輸出。地址輸出給出用于中斷處理程序的執(zhí)行地址,它是用于線程的新的執(zhí)行地址。例如,多位控制信號可以是一個五位信號,其中,最高有效位指出是否已經(jīng)取得中斷,而剩余位指出將取得哪個中斷。
作為更具體的示例,地址和控制信號可以基于輸入a、b、c和d具有下列值,其中,地址用十六進制計數(shù)法給出而控制信號用二進制計數(shù)法給出Xthr_I0=a; XThr_adress0x200cntl10001Xthr_I1=(not a and b); Timer_adress0x280cntl10010Xthr_I2=(not a and not b and c); IADR_adress0x300cntl10100Xthr_I3=(not a and not b and not c and d); DADR_adress0x380cntl11000OtherwiseAddressdon't carecntl00000
在上述示例中,Xthr_I0、Xthr_I1、Xthr_I2和Xthr_I3表示優(yōu)先邏輯輸入a、b、c和d的邏輯值的不同組合,其中,值的存在指出值處于邏輯高電平并且術語在值前面的術語″not(非)″指出值處于邏輯低電平。
應當指出,上述的固定優(yōu)先級方案并不是本發(fā)明必須的,也可以直接采用諸如隨機優(yōu)先級或可編程優(yōu)先級之類的其它類型的優(yōu)先級。
如上所示,本發(fā)明的線程間中斷技術比傳統(tǒng)技術有更多的優(yōu)越性。例如,本發(fā)明允許給定線程在單個指令執(zhí)行周期內(nèi)中斷另一個線程。從而,本發(fā)明在多線程處理器中有利地提供了一個用于傳送和服務線程間中斷的低延時、低開銷的機制。
本發(fā)明的上述實施例只是示例性的,并且對于本技術領域技術人員來說,在附加權利要求書的范圍內(nèi)顯然可以做出大量替換實施例。例如在說明性的實施例中,與中斷控制器相關的特定的電路方案可以被替換為替換的電路方案。此外,線程數(shù)、允許寄存器和標志寄存器的類型和配置、中斷優(yōu)先級、線程標識符配置以及說明性實施例的其它參數(shù)可以被改變來適應某個給定應用的特定需要。
權利要求
1.一種用于在多線程處理器中處理從請求線程直接到目的線程的線程間中斷的方法,該方法包括下列步驟接收把線程間中斷傳送到目的線程的請求;確定線程間中斷的目的線程是否被允許用于接收線程間中斷;和如果目的線程被允許來接收線程間中斷,則使用線程標識符來控制把線程間中斷傳送到目的線程。
2.如權利要求1所述的方法,其中,通過在多線程處理器的標志寄存器中設置對應的中斷掛起位,請求線程請求把線程間中斷傳送到目的線程。
3.如權利要求2所述的方法,其中,中斷掛起位在線程間中斷被傳送到目的線程的時候被自動清除。
4.如權利要求1所述的方法,其中,如果在多線程處理器的允許寄存器中設置了對應的允許位,則目的線程被允許來接收線程間中斷。
5.如權利要求4所述的方法,其中,允許位在線程間中斷被傳送到目的線程的時候被自動清除,以免目的線程同時接收多個中斷。
6.如權利要求5所述的方法,其中,允許位在線程間中斷被目的線程服務的時候被自動重新設置。
7.如權利要求1所述的方法,其中,對線程間中斷的請求被接收,并且線程間中斷在一個時段內(nèi)接著被傳送到目的線程,該時段小于多線程處理器的指令執(zhí)行周期。
8.如權利要求1所述的方法,其中,接收、確定和使用步驟在中斷控制器中被執(zhí)行。
9.如權利要求8所述的方法,其中,中斷控制器包括允許寄存器、標志寄存器和邏輯電路。
10.如權利要求9所述的方法,其中,允許寄存器至少包括N個部分,每部分都對應于多線程處理器N個線程中的一個線程。
11.如權利要求10所述的方法,其中,每個線程都只被允許訪問允許寄存器的其對應部分,而不能訪問對應于其它線程的允許寄存器的N-1個部分。
12.如權利要求9所述的方法,其中,標志寄存器至少包括N個部分,每部分都對應于多線程處理器N個線程中的一個線程。
13.如權利要求12所述的方法,其中,每個線程被允許訪問標志寄存器的該N部分中的每個部分。
14.一個用于在多線程處理器中處理從請求線程直接到目的線程的線程間中斷的設備,該設備包括一個包括邏輯電路的中斷控制器,中斷控制器被配置用于(i)接收把線程間中斷傳送到目的線程的請求;(ii)確定是否線程間中斷的目的線程被允許來接收線程間中斷;和(iii)如果目的線程被允許來接收線程間中斷,則使用線程標識符來控制線程間中斷向目的線程的傳送。
15.如權利要求14所述的設備,其中,中斷控制器還包括允許寄存器和標志寄存器,其中,請求線程通過在標志寄存器中設置對應的中斷掛起位來請求把線程間中斷傳送到目的線程,并且如果在允許寄存器中設置了對應的允許位,則目的線程被允許來接收線程間中斷。
16.權利要求15的設備,其中,邏輯電路包括中斷請求邏輯電路,其用于處理中斷請求;多個邏輯門,其中每個邏輯門從每個允許寄存器和標志寄存器接收對應位作為輸入;和多路復用電路,多路復用電路至少部分地基于線程標識符從邏輯門輸出中至少選擇一個用于控制線程間中斷產(chǎn)生的輸出。
17.如權利要求16所述的設備,其中,該邏輯電路還包括相對于至少一個附加類型的中斷給予線程間中斷優(yōu)先級的優(yōu)先邏輯,附加類型的中斷至少包括計時器中斷、指令地址中斷和數(shù)據(jù)地址中斷其中的一個。
18.如權利要求17所述的設備,其中,優(yōu)先邏輯電路被配置來提供線程間中斷,其具有比輔助類型的中斷更高或更低的優(yōu)先級。
19.一個多線程處理器,包括一存儲器,其至少包括數(shù)據(jù)存儲器和高速緩沖存儲器中的一個;和一中斷控制器,其用于在多線程處理器中處理從請求線程直接到目的線程的線程間中斷,中斷控制器被配置用于(i)接收把線程間中斷傳送到目的線程的請求;(ii)確定是否線程間中斷的目的線程被允許來接收線程間中斷;和(iii)如果目的線程被允許來接收線程間中斷,則使用線程標識符來控制線程間中斷向目的線程的傳送。
20.一件包括其中具有程序代碼的機器可讀的存儲媒介的產(chǎn)品,該程序代碼用于在多線程處理器中處理從請求線程直接到目的線程的線程間中斷,其中,該程序代碼在由處理器運行的時候執(zhí)行下列步驟接收把線程間中斷傳送到目的線程的請求;確定線程間中斷的目的線程是否被允許來接收線程間中斷;和如果目的線程被允許來接收線程間中斷,則使用線程標識符來控制把線程間中斷傳送到目的線程。
全文摘要
一個多線程處理器,其包括一個用于處理從請求線程到目的線程的線程間中斷的中斷控制器。在一個說明性實施例中,該中斷控制器接收傳送線程間中斷到目的線程的一個請求,確定是否線程間中斷的目的線程被允許來接收線程間中斷,并如果目的線程被允許來接收線程間中斷,則使用線程標識符來控制線程間中斷到目的線程的傳送。通過在多線程處理器的標志寄存器中設置對應的中斷掛起位,請求線程請求將線程間中斷傳送到目的線程。如果對應的允許位在多線程處理器的允許寄存器中被設置,則目的線程被允許來接收線程間中斷。標志寄存器和允許寄存器可以在中斷控制器內(nèi)來執(zhí)行。
文檔編號G06F13/20GK1720503SQ200380101480
公開日2006年1月11日 申請日期2003年10月10日 優(yōu)先權日2002年10月15日
發(fā)明者E·赫凱內(nèi)克, M·穆杜吉爾, S·M·多沃德 申請人:沙橋技術有限公司