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

多線程處理器在單線程與并發(fā)多線程模式之間的動態(tài)切換的制作方法

文檔序號:6380625閱讀:305來源:國知局
專利名稱:多線程處理器在單線程與并發(fā)多線程模式之間的動態(tài)切換的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機與計算機軟件,具體地說,涉及多線程處理器及其在單線程與并發(fā)(simultaneous)多線程運行模式之間的切換。
背景技術(shù)
由于當今社會越來越依賴于計算機,所以計算機技術(shù)必須在許多方面發(fā)展以滿足增長的需求。一個具體的重要研究與開發(fā)課題是并行性,即并行地執(zhí)行多個任務(wù)。
已經(jīng)開發(fā)了許多計算機軟機與硬件技術(shù)以促進增長的并行處理。從軟件的觀點看,已經(jīng)開發(fā)了多線程操作系統(tǒng)與內(nèi)核,其使計算機程序能夠以多個“線程”并發(fā)執(zhí)行,從而在實質(zhì)上可以在同時執(zhí)行多個任務(wù)。一般線程表示程序的獨立執(zhí)行路徑。例如,對于電子商務(wù)計算機應用,可能將不同的線程分配給不同的顧客,從而在獨立的線程中處理每一顧客的特有電子商務(wù)交易。
從軟件的觀點看,某些計算機實現(xiàn)了邏輯分區(qū)的觀念,其中允許一單一的物理計算機實質(zhì)上如同多個獨立“虛擬”計算機(稱為邏輯分區(qū))一樣運行,在該物理計算機中的各種資源(例如,處理器、內(nèi)存、輸入/輸出設(shè)備)在各個邏輯分區(qū)中分配。每一邏輯分區(qū)執(zhí)行獨立的操作系統(tǒng),并且從用戶以及運行在該邏輯分區(qū)上的軟件應用的角度看,每一邏輯分區(qū)都如同完全獨立的計算機一樣運行。
從硬件的觀點看,計算機越來越依賴于多微處理器以提供更高的工作負荷能力。此外,已經(jīng)開發(fā)的一些微處理器支持并行執(zhí)行多線程的能力,從而有效地提供了與通過使用多微處理器一樣所能達到的許多性能上的改善。例如,一種形式的多線程處理器支持并發(fā)地或同時地執(zhí)行在硬件中的多個線程,這種功能常被稱為并行多線程(SMT)。
在SMT處理器中,在該處理器中定義多個硬件線程,其中每一線程都能夠執(zhí)行分配給該線程的特定任務(wù)。配置適當數(shù)量的執(zhí)行單元(諸如算術(shù)邏輯單元、定點數(shù)單元、加載存儲單元、浮點數(shù)單元等等)以并發(fā)執(zhí)行來自多個線程的指令。一般地,大部分通用寄存器(GPR)與表示體系狀態(tài)(architectedstate)的專用寄存器(SPR)都為該處理器中每一硬件線程所復制。然而,其他片上資源(諸如某些SPR、片上高速緩存、地址切換緩存器)以及其他非體系資源一般在多個線程之間共享,所希望的結(jié)果是當一個或更多個硬件線程阻塞在長延遲事件時(例如在高速緩存未命中時等待),其他線程能夠繼續(xù)行進并且使用某些芯片資源。
對于許多工作負荷來說,SMT提高了計算機系統(tǒng)的總體性能(即總體吞吐量)。然而,此改善經(jīng)常是以單一任務(wù)的周轉(zhuǎn)時間為代價的,這是因為在SMT處理器上運行的每一任務(wù)都被要求與在同一處理器上并發(fā)運行的其他任務(wù)共享某些片上資源。例如,在其他硬件線程上運行的任務(wù)的高速緩存訪問模式可能對特定任務(wù)的性能具有不利影響,而最終結(jié)果是對于每一單個任務(wù)的更長的而且經(jīng)常無法預測的周轉(zhuǎn)時間。但是,已經(jīng)發(fā)現(xiàn)在某些應用中(例如科學與工程應用),對迅速且可預測的單個任務(wù)周轉(zhuǎn)時間的需求可能超過對高速系統(tǒng)吞吐總量的需求。在這些情況下,多線程實際上可能阻礙了系統(tǒng)性能。
某些多線程處理器設(shè)計也支持以單線程模式執(zhí)行的能力,由此實質(zhì)上廢止SMT并使任務(wù)能夠以更加可預測的周轉(zhuǎn)時間運行。然而,對這種功能的支持要求通過系統(tǒng)重啟,或初始程序加載(LPL),以在單線程與多線程模式之間切換。然而,由于對許多高性能計算機系統(tǒng)的可用性要求,系統(tǒng)重啟是非常不受歡迎的,并且對許多顧客來說常常是無法接受的。
另外,即使當需要以SMT模式運行處理器時,由于該處理器中各個硬件線程對共享資源的消耗,仍然可能引起效率不足。例如,即使當硬件線程執(zhí)行空閑循環(huán)時,即沒有執(zhí)行有用的活動時,該硬件線程仍然在消耗著共享資源,由此從其他活動線程奪走資源,而這些活動線程可能本來能夠使用這些資源的。結(jié)果,由于未執(zhí)行該系統(tǒng)有用工作的線程對資源的此類消耗,可能引起次優(yōu)性能。
人們非常希望促進這一能力對在多線程處理器中執(zhí)行的硬件線程所消耗的資源,提供更多的控制;具體地,減少由于在多線程處理器中此類線程的一個或更多個之間的資源低效率分配而可能發(fā)生的效率不足。

發(fā)明內(nèi)容
為處理與現(xiàn)有技術(shù)有關(guān)的這些以及其他問題,本發(fā)明提供了一種裝置、程序產(chǎn)品與方法,該裝置、程序產(chǎn)品與方法使用多線程處理器,在多個硬件線程之中,該處理器具有至少一個硬件線程能夠響應于控制電路地被選擇性地激活(activate)與滅活(deactivate)。另外,該控制電路還提供能力以控制非活動線程在該線程在被滅活后如何被激活,一般是通過為該線程指明重新激活條件。
通過提供控制電路,可以實現(xiàn)許多有用的性能改善,其中該控制電路能夠控制硬件線程為活動或非活動,以及控制如何激活非活動線程。例如,根據(jù)本發(fā)明的某些實施例通過控制是否能夠響應于中斷地重新激活線程來支持控制如何激活非活動線程的能力。使非活動線程能夠響應于中斷地被激活使(例如)線程能夠有效地被拿(taken)“下線(offline)”,而沒有什么系統(tǒng)耗費,由此允許該線程所消耗的所有處理器資源可以由其他線程所使用,但仍然允許通過中斷迅速高效地重新激活該被滅活線程以恢復運行。這樣一來,就可能(例如)允許釋放由在空閑循環(huán)中執(zhí)行的線程所消耗的共享資源,以備其他線程使用,但仍然允許較迅速地重新激活該線程(以及重新獲取共享資源),并且沒有什么系統(tǒng)耗費。
相反,廢止線程被響應于中斷地激活的能力可以支持以下能力將共享資源釋放較長時間,以利于多線程處理器中仍然為活動的任意線程的更高效的運行。另外,由于提供了防止通過中斷來重新激活的保護,所以常??梢圆挥靡笙到y(tǒng)重啟地激活或滅活線程。這樣一來,即使在硬件線程長時間滅活的情況下,也很少甚至不會降低系統(tǒng)可用性。
表現(xiàn)本發(fā)明特征的這些以及其他優(yōu)點與特征在權(quán)利要求書中列出,該權(quán)利要求書構(gòu)成此文的另一部分。然而,為更好地理解本發(fā)明以及通過其使用所達到的優(yōu)點與目的,應該參照附圖以及伴隨的描述文字,其中描述了本發(fā)明的示范性實施例。


圖1為依據(jù)本發(fā)明的邏輯分區(qū)計算機中主要硬件組件的方框圖。
圖2為圖1所參照的多線程處理器中所使用的共享與專用資源的方框圖。
圖3的流程圖示出了由圖1的邏輯分區(qū)計算機所執(zhí)行的切換到單線程模式的例程程序流程,以將多線程處理器切換到單線程模式。
圖4的流程圖示出了由圖1的邏輯分區(qū)計算機所執(zhí)行的切換到并發(fā)多線程模式的例程程序流程,以根據(jù)本發(fā)明的方法,將多線程處理器切換到并發(fā)多線程模式。
圖5的流程圖示出了由圖1的邏輯分區(qū)計算機所執(zhí)行的邏輯處理器空閑循環(huán)的例程程序流程。
圖6的流程圖示出了由非邏輯分區(qū)計算機所執(zhí)行的切換到單線程模式的例程程序流程,以根據(jù)本發(fā)明的方法,將多線程處理器切換到單線程模式。
圖7的流程圖示出了非邏輯分區(qū)計算機所執(zhí)行的切換到并發(fā)多線程模式的例程程序流程,以根據(jù)本發(fā)明的方法,將多線程處理器切換到并發(fā)多線程模式。
圖8的流程圖示出了非邏輯分區(qū)計算機所執(zhí)行的邏輯處理器空閑循環(huán)的例程程序流程。
具體實施例方式
此后所描述的實施例支持多線程處理器中所選擇的硬件線程的動態(tài)激活與滅活,以及選擇性地控制非活動硬件線程一旦被滅活后如何被激活。
依據(jù)本發(fā)明的多線程計算機一般為并行多線程處理器,但可替換地,也可能使用其他形式的多線程處理器。另外,在依據(jù)本發(fā)明的多線程處理器中可以支持幾乎任意數(shù)目的硬件線程,而且可以用此處所描述的方法選擇性地激活任意數(shù)目的此類硬件線程。例如,在所示實施例中,公開的并行多線程處理器(SMT)包括兩個硬件線程,其中一個線程能夠被選擇性地滅活,以將該處理器在SMT與單線程(ST)模式之間切換。
對在滅活后如何激活非活動硬件線程的控制一般基于為特定線程或處理器所指定的重新激活條件,并且可以根據(jù)本發(fā)明的多種方法進行變化。例如,在所示實施例中,重新激活條件可能基于選擇性使能響應于中斷(諸如處理器間中斷(IPI),I/O中斷,定時器或遞減器中斷等等)的線程激活。然而,應該理解可替換地可以使用限制線程被激活的能力的其他控制。
現(xiàn)在轉(zhuǎn)到附圖,其中幾個圖中的相同的數(shù)字表示相同的部件,圖1為依據(jù)本發(fā)明的邏輯分區(qū)計算機中主要硬件組件的方框圖。計算機10一般表示(例如)大量多用戶計算機(諸如網(wǎng)絡(luò)服務(wù)器、中檔計算機、大型機等等)中的任意一種(例如IBM eServer計算機)。然而,應該理解本發(fā)明可以實現(xiàn)于其他計算機與數(shù)據(jù)處理系統(tǒng)中,例如在單用戶計算機(諸如工作站、臺式機、便攜機等等)或其他可編程電子設(shè)備(例如具備嵌入式控制器等等)。另外,本發(fā)明可以結(jié)合非邏輯分區(qū)的多線程計算機使用。
計算機10一般包括一個或更多個處理器12,其借助總線16與存儲器14相連。每一處理器12可以實現(xiàn)為單線程處理器,或者實現(xiàn)為多線程處理器,例如處理器12a,其顯示具備多個硬件線程18。大體來講,多線程處理器18中的每一硬件線程18都被位于該計算機中的軟件當作獨立的處理器來對待。在這方面,為此公開的目的,將把單線程處理器考慮為具備單一硬件線程,即單一獨立的執(zhí)行單位。然而應該理解,基于軟件的多線程或多任務(wù)可以結(jié)合單線程與多線程處理器使用,以進一步支持該計算機中多個任務(wù)的并行性能。
另外,也如圖1所示,處理器12的一個或多個(例如12b)可以實現(xiàn)為服務(wù)處理器,其被用來運行專門的固件代碼以管理系統(tǒng)初始程序加載(IPL),以及監(jiān)視、診斷與配置系統(tǒng)硬件。一般地,計算機10將包括一個服務(wù)處理器與多個系統(tǒng)處理器,其被用來執(zhí)行位于該計算機內(nèi)的操作系統(tǒng)與應用,然而,本發(fā)明并不局限于該特定實現(xiàn)。在某些實現(xiàn)中,服務(wù)處理器可能以不同于通過總線16的方式連接到該計算機中的各個其他硬件組件。
存儲器14可以包括一或更多級的存儲器設(shè)備,例如基于DRAM的主存儲器,以及一或多級數(shù)據(jù)、指令和/或組合高速緩存,其中某些高速緩存或者服務(wù)于單個處理器或者服務(wù)于多個處理器,如從現(xiàn)有技術(shù)所知。另外,存儲器14通過總線20連接到多種外部設(shè)備,例如一個或更多網(wǎng)絡(luò)適配器22(用于該計算機與(多個)網(wǎng)絡(luò)24相連接),一個或更多存儲控制器26(用于該計算機與一個或更多存儲設(shè)備28相連接),以及一個或更多工作站控制器30(用于借助多個工作站適配器與一個或更多終端或工作站32相連接)。
圖1還詳細示出了在計算機10上實現(xiàn)邏輯分區(qū)計算環(huán)境時所使用的主要軟件組件與資源,包括多個邏輯分區(qū)24,其由分區(qū)管理器或超級管理器36管理。如從現(xiàn)有技術(shù)所知,可以支持任意數(shù)目的邏輯分區(qū),而且當從該計算機上增加或移除邏輯分區(qū)時,任意時間位于該計算機內(nèi)的邏輯分區(qū)的數(shù)目可以動態(tài)改變。
在所示基于IBM eServer的實現(xiàn)中,分區(qū)管理器2包括兩層程序代碼。此處第一層被稱為不可分派部分28,在計算機10的固件中或者許可內(nèi)部代碼(LIC)實現(xiàn),其被用來提供到各種硬件組件的低級接口,同時將高層(例如操作系統(tǒng))與硬件訪問的細節(jié)隔離。該固件也可以與諸如服務(wù)處理器12b的服務(wù)處理器通信。不可分派部分38為計算機10提供許多低級分區(qū)管理功能,例如頁表管理等等。不可分派部分38還沒有任務(wù)的概念,并且主要通過來自軟件高層的函數(shù)調(diào)用訪問。
分區(qū)管理器36的第二層程序代碼此處被稱為可分派部分40。與沒有任務(wù)的概念、運行時關(guān)閉重定位和主要通過來自軟件高層的函數(shù)調(diào)用訪問的不可分派部分38相比,可分派部分40具有任務(wù)的概念(如同所有操作系統(tǒng)一樣),并且運行時打開重定位。一般地,可分派部分以大致與分區(qū)相同的方式執(zhí)行,只是它向用戶隱藏。一般地,可分派部分管理較高級的分區(qū)管理操作,諸如生成與刪除分區(qū),并發(fā)I/O維護,分配處理器、存儲器以及其他硬件資源給各個分區(qū)34等等。
一般地,靜態(tài)地和/或動態(tài)地向每一邏輯分區(qū)34分配計算機10中可用資源的一部分。例如,可以向每一分區(qū)分配一個或更多處理器12和/或一個或更多硬件線程18,以及可用存儲器空間的一部分。邏輯分區(qū)可以共享諸如處理器的特定硬件資源,從而給定處理器由多于一個邏輯分區(qū)所使用??商鎿Q地,可以將硬件資源一次只分配給一個邏輯分區(qū)。
一般地,以從現(xiàn)有技術(shù)所知的方法,將其他資源(例如海量存儲器,備份存儲器、用戶輸入、網(wǎng)絡(luò)連接及其I/O適配器)分配給一個或多個邏輯分區(qū)??梢砸远喾N方法分配資源,例如對于多個邏輯分區(qū)共享同一總線上的資源,以逐總線為依據(jù),或者以逐資源為依據(jù)。某些資源甚至可以一次被分配給多個邏輯分區(qū)。
每一邏輯分區(qū)34使用操作系統(tǒng)42,該操作系統(tǒng)42以與非邏輯分區(qū)計算機的操作系統(tǒng)相同的方式,控制該邏輯分區(qū)的基本操作。例如,每一操作系統(tǒng)42可以使用OS/400操作系統(tǒng)實現(xiàn),該操作系統(tǒng)可以從國際商用機器公司得到。
每一邏輯分區(qū)34在分離的或獨立的存儲器空間中執(zhí)行,由此從在每一這些邏輯分區(qū)上運行的用戶應用44的角度看,每一邏輯分區(qū)的反應方式都大致等同于獨立的非分區(qū)計算機。這樣一來,為在分區(qū)環(huán)境中使用,用戶應用一般不需要任何特殊的配置。
由于邏輯分區(qū)34作為獨立的虛擬計算機的性質(zhì),所以可能希望支持分區(qū)間通信,以使邏輯分區(qū)能夠相互通信,有如這些邏輯分區(qū)位于獨立的物理計算機上一樣。這樣一來,在某些實現(xiàn)中,可能希望在不可分派部分38支持虛擬局域網(wǎng)(LAN),以使邏輯分區(qū)34中能夠通過諸如以太網(wǎng)協(xié)議的網(wǎng)絡(luò)協(xié)議進行相互通信。根據(jù)本發(fā)明,也可以支持支持分區(qū)間通信的其他方法。
應該理解,根據(jù)本發(fā)明,可以使用其他邏輯分區(qū)環(huán)境。例如,不同于使用與所有分區(qū)34獨立的可分派部分40,可替換地,可分派部分的功能可以融入一個或更多邏輯分區(qū)之中。
一般地,被執(zhí)行以實現(xiàn)本發(fā)明實施例的例程此處被稱為“計算機程序代碼”或簡稱為“程序代碼”,而不管這些例程被實現(xiàn)為操作系統(tǒng)的部分,或者特定應用、組件、程序、對象、模塊或指令序列甚至其子集。程序代碼一般包括一或多條指令,這些指令在不同的時間位于計算機的各種存儲器與存儲設(shè)備內(nèi),而且這些指令當用計算機中的一個或更多處理器所讀取并執(zhí)行時,使該計算機執(zhí)行實現(xiàn)本發(fā)明各個方面的步驟或元素所需的步驟。另外,雖然已經(jīng)而且此后將在功能完備的計算機與計算機系統(tǒng)的背景下描述本發(fā)明,但本領(lǐng)域的技術(shù)人員應該理解本發(fā)明的各種實施例能夠作為程序產(chǎn)品以各種形式分發(fā),而且不管用來實際承載該分發(fā)的信號承載介質(zhì)的具體類型,都可以同樣方式應用本發(fā)明。信號承載介質(zhì)的例子包括但不局限于可記錄盤片、硬盤驅(qū)動器、磁帶、光盤(例如CD-ROM、DVD等等)等等,以及傳輸類型介質(zhì),諸如數(shù)字與模擬通信鏈接。
另外,此后描述的各種程序可以基于它們在本發(fā)明的特定實施例中所實現(xiàn)的應用來標識。然而,應該理解以下任何特定的程序術(shù)語只是為了方便而使用,因此本發(fā)明不應該只局限于這些術(shù)語所標識和/或暗示的具體應用。另外,由于計算機程序一般可以用無限種方式組織為例程、子程序、方法、模塊、對象等等,并且程序功能可以用各種方式在一般計算機內(nèi)駐留的各種軟件層次(例如操作系統(tǒng)、函數(shù)庫、API、應用、applet等等)之間分配,所以應該理解本發(fā)明并不局限于此處所描述的特定組織與程序功能分配。
本領(lǐng)域的技術(shù)人員應該理解圖1中所示的示范性實施例不是用來限定本發(fā)明的。本領(lǐng)域的技術(shù)人員應該理解可以在不脫離該基本范圍的前提下使用可替換的硬件和/或軟件環(huán)境。
如上所述,可以使用所示實施例處理使用多線程處理器的系統(tǒng)中可能發(fā)生的多種問題。一個此類問題的發(fā)生是以下的結(jié)果當在多線程環(huán)境中執(zhí)行時,單個任務(wù)的更緩慢的、不確定的周轉(zhuǎn)時間。已經(jīng)知道當希望單一任務(wù)的周轉(zhuǎn)時間可靠并且迅速時,可能希望切換多線程處理器的模式以廢止一個或多個線程,例如通過運行該處理器于單線程(ST)模式。另外,常常希望發(fā)生模式切換時不需要重啟系統(tǒng)。另外還知道希望能夠類似地使能從單線程模式到多線程(例如并行多線程(SMT))模式的切換,也不需要重啟系統(tǒng)。
可以處理的另一問題為多線程處理器中,由不執(zhí)行系統(tǒng)的有效工作的硬件線程所消耗的共享資源。如下所述,對于操作系統(tǒng),硬件線程一般如同獨立的邏輯處理器。這樣一來,當線程運行于操作系統(tǒng)的空閑循環(huán),而且沒有做任何有用工作時,該線程正在消耗該處理器的某些共享資源,并且影響該處理器上其他線程的性能。因此希望使操作系統(tǒng)能夠在該線程空閑時將處理器切換到單線程模式,并且當該邏輯處理器有工作時,或者當該邏輯處理器被要求服務(wù)中斷時,將該處理器返回SMT模式。然而,已經(jīng)知道對于操作系統(tǒng),將處理器置于單線程模式可能有如該處理器下線。從操作系統(tǒng)的角度來看,將邏輯處理器拿下線一般為代價昂貴的操作。另外,將邏輯處理器拿下線以及當需要工作時將其放上線的消耗,可能使當該線程進入空閑循環(huán)時將其廢止毫無益處。希望提供一種機制,使操作系統(tǒng)能夠在單線程與SMT模式之間轉(zhuǎn)換而沒有什么消耗,使線程沒有執(zhí)行有用工作的短時間段能夠觸發(fā)線程的滅活,以釋放共享資源供其他線程使用。
因此,在所示實施例中,希望提供一種能力,以將多線程處理器在單線程與SMT模式之間切換,而不需要系統(tǒng)重啟或其他對計算機可用性的限制。另外,希望支持一種能力,以將處理器放入單線程模式,從而提高活動線程的性能,做這些時非活動線程對操作系統(tǒng)的其他部分如同在線一樣。
為處理這些問題,所示實施例支持全處理器(per-processor)寄存器,此處稱為“控制”或“CTRL”寄存器,其控制該處理器運行于單線程或多線程模式。另外,還提供了另一全處理器寄存器,以控制如何復活非活動線程,例如通過外部中斷(諸如定時器或遞減器中斷、處理器間中斷、I/O中斷等等)。后一個寄存器在所示實施例中稱為硬件實現(xiàn)依賴(HID)寄存器,此寄存器存儲為特定線程所指定的重新激活條件。如下所述,當廢止中斷時,復活線程一般只能通過該系統(tǒng)中另一活動線程的顯式動作。
使用上述機制,如果操作系統(tǒng)認為應該將處理器長時間地運行于單線程模式,則該操作系統(tǒng)可能選擇該處理器上的一個或更多線程以使其非活動。然后,該操作系統(tǒng)可以將相應于這些目標線程的邏輯處理器拿下線。作為將邏輯處理器拿下線的部分,操作系統(tǒng)可能通過HID寄存器的適當控制(例如指定由此廢止中斷的復活條件),確保該線程不會被外部中斷源所中斷。然后該線程可能進入死亡模式,由此復活該線程只能通過該處理器上活動線程的顯式操作。在這樣的模式下,在硬件與軟件中都不為死亡線程保持狀態(tài)。然后該線程能夠通過向CTRL寄存器寫入適當位將自己變?yōu)榉腔顒印?br> 為處理當相應于線程的邏輯處理器進入空閑循環(huán)時的上述其他問題,操作系統(tǒng)可以通過寫入CTRL寄存器使該線程非活動。另外,操作系統(tǒng)可以設(shè)置HID寄存器,使復活條件指定該線程可以通過外部中斷復活,例如I/O中斷、處理器間中斷、定時器中斷等等。然后,該線程可能被置入“休眠”模式,其中由軟件保持狀態(tài),但硬件從該休眠線程拿走所有資源并將這些資源分配給一個或更多活動線程。當觸發(fā)中斷時,該線程則可以被復活,并且相應邏輯處理器被返回其空閑循環(huán),以確定作為所觸發(fā)的中斷的結(jié)果,其是否有任何工作可做。例如,如果遞減器或定時器I/O中斷未決,則可能復活線程以使相應邏輯處理器能夠確定作為該中斷的結(jié)果,是否需要任何工作。另外,如果另一處理器希望一任務(wù)可以被相應于非活動線程的邏輯處理器所執(zhí)行,則該另一處理器可以通過向該非活動線程發(fā)送處理器間中斷來復活該非活動線程,以使該邏輯處理器進入其空閑循環(huán)來檢查其他工作。另外,如果需要,系統(tǒng)中的另一線程可以顯式地復活該線程,如同對死亡線程一樣。
現(xiàn)在轉(zhuǎn)到圖2,其示出了在邏輯分區(qū)計算機10(圖1)中的一個本發(fā)明的具體實現(xiàn)。具體地,圖2示出了示范性多線程處理器50,包括一對硬件線程52,標記為線程T0與T1,其被配置來共享標記在54的多個共享資源。每一線程具有許多專用資源,例如一組通用寄存器(GPR)56與專用寄存器(SPR)58。另外,每一線程可以共享各種共享資源54,包括(例如)諸如數(shù)據(jù)高速緩存和/或指令高速緩存的片上高速緩存器60。另外,線程T0與T1可以共享各種SPR 62以及存儲隊列64、有效實際地址轉(zhuǎn)換(ERAT)表66、地址轉(zhuǎn)換高速緩沖器(TLB)68等等??梢砸赃@里描述的方式在多線程之間共享其他類型的資源。
另外,在多線程處理器50中還設(shè)有控制電路70,包括CTRL寄存器72與HID寄存器74,該控制電路被用來選擇性地激活或滅活線程T0與T1的一個或全部。具體地,每一線程在每一寄存器72、74中都分配有至少一個字段,以分別指定(1)該線程為活動或非活動,以及(2)該線程是否可以響應于中斷地再次被激活。應該理解可以使用不同的數(shù)據(jù)結(jié)構(gòu)來替換寄存器72、74。例如,寄存器72、74中的各種信息可以結(jié)合到一個寄存器中。另外應該理解,根據(jù)本發(fā)明,也可以在線程T0與T1之間共享不同的共享資源54。此外,應該理解,在給定多線程處理器上可以支持任意數(shù)目的線程,并且響應于控制電路70,可以選擇性地激活或滅活這些線程中的一部分或全部。
控制電路70也可以被配置來在線程T0與T1之間分配共享資源,以及保存或拋棄在每一硬件線程中保持的特定狀態(tài)信息,或者(如果需要)啟動這些狀態(tài)信息的存儲與檢索。另外,控制電路70可以被配置以選擇性地激活或滅活線程而不要求系統(tǒng)重啟。有關(guān)具有此處所描述的特征的多線程處理器的一個適當?shù)膶崿F(xiàn)的進一步細節(jié)可以在以下美國專利申請中找到“METHOD AND LOGICAL APPARATUS FOR MANAGING THREADEXECUTION IN A SIMULTANEOUS MULTI-THREADED(SMT)PROCESSOR”(律師卷號為AUS920030217US1);“METHOD AND LOGICALAPPARATUS FOR MANAGING RESOURCE REDISTRIBUTION IN ASIMULTANEOUS MULTI-THREADED(SMT)PROCESSOR(律師卷號為AUS920030267US1);以及“METHOD AND LOGICAL APPARTUS FORRENAME RE GIS TRER REALLOCATION IN A SIMULTANEOUSMULTI-THREADED(SMT)PROCESSOR(律師卷號為AUS920030229US1)。所有這些申請同此文在同一日期提交,并且與本發(fā)明的受讓人相同,此后包含其內(nèi)容作為參考。
如上所述,計算機10(圖1)被配置為邏輯分區(qū)計算機。因此在該計算機中,有多個操作系統(tǒng)在多個邏輯分區(qū)中執(zhí)行。這樣一來,該計算機中的分區(qū)管理器被配置來控制分區(qū)將其處理器運行于ST或SMT模式。希望在該分區(qū)管理器中保持該控制以確保該計算機的分區(qū)完整性。這樣一來,只要該計算機處于能夠運行多個分區(qū)的模式下,上述的CTRL與HID寄存器一般只能由分區(qū)管理器寫入。
為支持此處所述的功能,分區(qū)管理器提供服務(wù)給每一分區(qū)以使這些分區(qū)能夠控制每一處理器的ST/SMT模式。只要分區(qū)希望將邏輯處理器拿下線,就可以在操作系統(tǒng)希望變?yōu)榉腔顒拥木€程上訪問服務(wù),此處稱為H_STOP_SELF服務(wù)。另外,為了將邏輯分區(qū)在被拿下線后帶上線,分區(qū)可以對分區(qū)管理器啟動H_START_LOGICAL_PROCESSOR調(diào)用,以通過復活該死亡線程來將該邏輯處理器帶回上線。
當分區(qū)希望將線程變?yōu)樾菝邥r,例如響應于邏輯處理器進入空閑循環(huán),分區(qū)管理器支持H_CEDE調(diào)用,分區(qū)管理器使用該調(diào)用以將分區(qū)變?yōu)樾菝撸乖摼€程可以被任意多類型的中斷中的一個所復活。還希望允許分區(qū)通過啟動H_PROD調(diào)用復活休眠線程。應該理解,這些調(diào)用也可以為共享存儲器分區(qū)所使用,以及只依賴于專用處理器的分區(qū)所使用。
例如,圖3示出了到ST模式的切換例程100,其可被用來將與特定分區(qū)相關(guān)聯(lián)的多線程處理器切換單線程模式。例程100開始于方框102,從操作系統(tǒng)的角度看,分區(qū)將與變?yōu)榉腔顒拥木€程相關(guān)聯(lián)的邏輯處理器拿下線。接著,在方框104,該變?yōu)榉腔顒拥木€程調(diào)用分區(qū)管理器以停止該線程,例如使用上述的H_STOP_SELF。接著,在方框106,該變?yōu)榉腔顒拥木€程(作為上述調(diào)用的結(jié)果,該線程現(xiàn)在分區(qū)管理器中執(zhí)行)設(shè)置HID寄存器以防止中斷引起該線程的復活。接著,在方框108,該變?yōu)榉腔顒拥木€程(仍在分區(qū)管理器中執(zhí)行)設(shè)置CTRL寄存器以滅活該線程。根據(jù)這些操作,該多線程處理器中的控制電路滅活該線程,引起到單線程模式的處理器切換。
為將上述處理器切換回SMT模式,可以執(zhí)行例程120。例程120開始于方框120,在同一分區(qū)中的活動線程調(diào)用分區(qū)管理器以啟動先前非活動線程,例如,使用上述的START_LOGICAL_PROCESSER調(diào)用。接著,如方框124中所示,該活動線程(在分區(qū)管理器中執(zhí)行)寫入CTRL寄存器以復活該非活動線程。通過做這些,此處理器上的控制電路將復活該非活動線程。接著,如方框126中通過一獨立欄示出,在分區(qū)管理器中該先前非活動線程蘇醒,具體地,是在位于分區(qū)管理器的重置處理器程序代碼中。接著,在方框128中,該被恢復線程(現(xiàn)在分區(qū)管理器中執(zhí)行)將控制返回給擁有該線程的分區(qū),然后如方框130中所示,該分區(qū)將該邏輯處理器帶回上線(online)。然后完成例程120。
現(xiàn)在轉(zhuǎn)到圖5,只要執(zhí)行于分區(qū)的邏輯處理器進入空閑狀態(tài),就可以執(zhí)行邏輯處理器空閑循環(huán)例程140。例程140可以將與邏輯處理器相關(guān)聯(lián)的多線程處理器暫時切換到單線程模式,以釋放所有共享資源,供該處理器中其他活動線程消耗。
例程140開始于方框142,變?yōu)榉腔顒拥木€程(現(xiàn)在分區(qū)中執(zhí)行)調(diào)用分區(qū)管理器以放棄該線程。接著,在方框144,該變?yōu)榉腔顒拥木€程(作為該調(diào)用的結(jié)果,現(xiàn)在分區(qū)管理器中執(zhí)行)保存分區(qū)狀態(tài)。接著,在方框146,該變?yōu)榉腔顒拥木€程(還是在分區(qū)管理器中執(zhí)行)設(shè)置HID寄存器以使能中斷引起該線程的復活。然后,在方框148,該變?yōu)榉腔顒拥木€程(仍然在分區(qū)管理器中執(zhí)行)設(shè)置CTRL寄存器以滅活該線程。然后,作為設(shè)置該寄存器的結(jié)果,該多線程處理器中的控制電路將該處理器切換到單線程模式,由此有效地滅活該線程。然后該線程保持非活動,直到或者由另一個活動線程通過寫入CTRL寄存器以顯式地復活(與上述結(jié)合圖4所描述的方法類似),或者可替換地,響應于中斷接收。
例如,如方框152中所示,作為接收中斷152的結(jié)果,作為到單線程模式切換的結(jié)果而已經(jīng)被滅活的線程在分區(qū)管理器中在重置處理器處蘇醒。接著,如方框154中所示,該線程(仍然在分區(qū)管理器中執(zhí)行)恢復分區(qū)狀態(tài)并且將控制交給分區(qū)。接著,如方框156中所示,復活該邏輯處理器的空閑循環(huán),以處理所接收的中斷。然后完成例程140并且恢復該邏輯處理器的處理。
應該理解,本發(fā)明的原理也可以應用到與邏輯分區(qū)計算機不同的計算機中。例如圖6-8示出與圖4-6相應的例程,但是在非邏輯分區(qū)計算機中使用。例如,圖6示出了到ST模式的切換例程160,其可由操作系統(tǒng)執(zhí)行,以將多線程處理器切換ST模式。例程160開始于方框162,將與變?yōu)榉腔顒拥木€程相關(guān)聯(lián)的邏輯處理器置入下線狀態(tài)。接著,在方框164,該變?yōu)榉腔顒拥木€程設(shè)置HID寄存器以防止中斷引起該線程的復活。接著,在方框166,該變?yōu)榉腔顒拥木€程設(shè)置控制寄存器以滅活該線程,由此該處理器中的控制電路滅活該線程,如上所述。然后完成例程160。
接著,如圖7中所示,響應于由在該計算機中的另一活動線程寫入CTRL寄存器(方框182),到SMT模式的切換例程180可以復活非活躍線程。作為寫入CTRL寄存器的結(jié)果(由圖7中的一獨立欄表示),該先前被滅活的線程在操作系統(tǒng)中在重置處理器處蘇醒(方框184)。蘇醒后,該線程將該邏輯處理器帶回上線(方框186)。該邏輯處理器上線后,執(zhí)行恢復常規(guī)方式,并且完成例程180。
圖8示出邏輯處理器空閑循環(huán)例程200,開始于方框202,變?yōu)榉腔顒拥木€程設(shè)置HID寄存器以使能中斷引起該線程的復活。然后,如方框148中所示,該變?yōu)榉腔顒拥木€程設(shè)置CTRL寄存器以滅活該線程,由此向該多線程處理器上的控制電路發(fā)送信號表示該線程應該被滅活。
在將來的某點,響應于中斷接收208,該線程可以被重新激活,如方框206所示。接收中斷后,該線程在操作系統(tǒng)中在重置處理器處蘇醒。接著,如方框210中所示,復活該空閑循環(huán),以處理所接收的中斷。然后,執(zhí)行恢復常規(guī)方式,并且完成例程200。
這樣一來,可以看出根據(jù)本發(fā)明的實施例支持在多線程處理器中選擇性地動態(tài)地激活與滅活硬件線程的能力,并且常常不需要系統(tǒng)重啟。對本領(lǐng)域的技術(shù)人員來講,顯然對此處所模式的實施例可以有各種修改,同時具備本公開的優(yōu)點。因此,本發(fā)明蘊涵于權(quán)利要求之中。
權(quán)利要求
1.一種用于控制位于邏輯分區(qū)計算機中的多線程處理器的方法,其中該邏輯分區(qū)處理器支持多個硬件線程的執(zhí)行,其中該邏輯分區(qū)計算機包含分區(qū)管理器與多個分區(qū),其中該多個硬件線程中的第一硬件線程被分配給位于該多個分區(qū)中的第一分區(qū)中的邏輯處理器,該方法包括與在第一分區(qū)中將該邏輯處理器拿下線相關(guān)聯(lián),滅活該第一硬件線程,同時響應于中斷聲明禁止該第一硬件線程的重新激活;以及響應于該邏輯處理器進入空閑循環(huán),滅活該第一硬件線程,同時響應于中斷聲明允許該第一硬件線程的重新激活。
2.一種裝置,包括多線程處理器,其支持多個硬件線程的執(zhí)行,以及控制電路,其被配置以選擇性地激活與滅活由該多線程處理器所執(zhí)行的該多個硬件線程中的第一硬件線程,該控制電路進一步被配置以控制該第一硬件線程在被滅活后如何被激活。
3.如權(quán)利要求2所述的裝置,其中該控制電路包括至少一個寄存器。
4.如權(quán)利要求2所述的裝置,其中該至少一個寄存器包括第一與第二寄存器,該第一寄存器指定該第一硬件線程為活動或非活動,并且該第二寄存器指定該第一硬件線程能否響應于所選擇事件地被重新激活。
5.如權(quán)利要求2所述的裝置,其中該控制電路配置以通過控制該第一硬件線程能否響應于中斷聲明地被激活,來控制該第一硬件線程在被滅活后如何被激活。
6.如權(quán)利要求5所述的裝置,其中該中斷為以下的至少一個外部中斷、處理器間中斷、輸入/輸出中斷以及定時器中斷。
7.如權(quán)利要求5所述的裝置,進一步包括多個分區(qū)與控制該多個分區(qū)的分區(qū)管理器,其中該第一硬件線程被分配該多個分區(qū)中至少一個,并且該分區(qū)管理器被配置以指導該控制電路以選擇性地激活與滅活該第一硬件線程,并且控制該第一硬件線程能否響應于中斷聲明地被激活。
8.如權(quán)利要求5所述的裝置,其中該第一硬件線程與在該多個分區(qū)中的一個中執(zhí)行的邏輯處理器相關(guān)聯(lián),并且與分區(qū)將該邏輯處理器拿下線相關(guān)聯(lián),該分區(qū)管理器被配置以指導該控制電路以滅活該第一硬件線程,并且響應于中斷聲明禁止該第一硬件線程的重新激活。
9.如權(quán)利要求8所述的裝置,其中與分區(qū)將該邏輯處理器帶回上線相關(guān)聯(lián),為該分區(qū)管理器執(zhí)行程序代碼的第二硬件線程被配置以指導該控制電路以重新激活該第一硬件線程。
10.如權(quán)利要求7所述的裝置,其中該第一硬件線程與在該多個分區(qū)中的一個中執(zhí)行的邏輯處理器相關(guān)聯(lián),并且與分區(qū)檢測到該邏輯處理器正在空閑循環(huán)中執(zhí)行相關(guān)聯(lián),該分區(qū)管理器被配置以指導該控制電路以滅活該第一硬件線程,并且響應于中斷聲明允許該第一硬件線程的重新激活。
11.如權(quán)利要求10所述的裝置,其中該控制電路配置以響應于中斷聲明地激活該第一硬件線程,并且該邏輯處理器被配置以處理所接收的中斷。
12.如權(quán)利要求11所述的裝置,其中該分區(qū)管理器被進一步配置以相應于該邏輯處理器進入空閑循環(huán),保存與該邏輯處理器相關(guān)聯(lián)的分區(qū)的狀態(tài),并且響應于中斷聲明恢復與該邏輯處理器相關(guān)聯(lián)的分區(qū)的狀態(tài)。
13.一種用于控制支持多個硬件線程的執(zhí)行的多線程處理器的方法,該方法包括為由該多線程處理器所執(zhí)行的多個硬件線程中的第一硬件線程指定重新激活條件,該重新激活條件確定該第一硬件線程在被滅活后如何被激活;滅活該第一硬件線程;以及基于為第一硬件線程所指定的重新激活條件,選擇性地重新激活該第一硬件線程。
14.如權(quán)利要求13所述的方法,其中該多線程處理器包括控制電路,該控制電路被配置以選擇性地激活與滅活該第一硬件線程,該控制電路被進一步配置以基于該重新激活條件重新激活該第一硬件線程。
15.如權(quán)利要求13所述的方法,其中該控制電路包括至少一個寄存器。
16.如權(quán)利要求15所述的方法,其中該至少一個寄存器包括第一與第二寄存器,該第一寄存器指定該第一硬件線程為活動或非活動,并且該第二寄存器指定該重新激活條件。
17.如權(quán)利要求13所述的方法,其中該重新激活條件指定該第一硬件線程能否響應于中斷聲明地被激活。
18.如權(quán)利要求17所述的方法,其中該中斷為以下的至少一個外部中斷、處理器間中斷、輸入/輸出中斷以及定時器中斷。
19.如權(quán)利要求17所述的方法,其中該多線程處理器被安裝在計算機中,該計算機包括分區(qū)管理器與多個分區(qū),該分區(qū)管理器控制該多個分區(qū),其中指定重新激活條件以及滅活該第一硬件線程由該分區(qū)管理器進行。
20.如權(quán)利要求19所述的方法,其中該第一硬件線程與在該多個分區(qū)中的一個內(nèi)所執(zhí)行的邏輯處理器相關(guān)聯(lián),并且與分區(qū)將該邏輯處理器拿下線相關(guān)聯(lián),該分區(qū)管理器被配置以指定重新激活條件,該重新激活條件響應于中斷聲明禁止該第一硬件線程的重新激活。
21.如權(quán)利要求20所述的方法,進一步包括,與分區(qū)將該邏輯處理器帶回上線相關(guān)聯(lián),使用為該分區(qū)管理器執(zhí)行程序代碼的第二硬件線程,重新激活該第一硬件線程。
22.如權(quán)利要求19所述的方法,其中該第一硬件線程與在該多個分區(qū)中的一個內(nèi)所執(zhí)行的邏輯處理器相關(guān)聯(lián),該方法進一步包括檢測分區(qū)的邏輯處理器正在空閑循環(huán)中執(zhí)行,并且響應于此,指定重新激活條件,該條件響應于中斷聲明允許該第一硬件線程的重新激活。
23.如權(quán)利要求22所述的方法,其中基于為第一硬件線程所指定的重新激活條件,選擇性地重新激活該第一硬件線程包括響應于中斷聲明,重新激活該第一硬件線程,其中該邏輯處理器被配置以處理所接收的中斷。
24.如權(quán)利要求23所述的方法,進一步包括相應于該邏輯處理器進入空閑循環(huán),保存與該邏輯處理器相關(guān)聯(lián)的分區(qū)的狀態(tài),并且響應于中斷聲明,恢復與該邏輯處理器相關(guān)聯(lián)的分區(qū)的狀態(tài)。
25.如權(quán)利要求17所述的方法,其中該多線程處理器被安裝在計算機中,該計算機包括操作系統(tǒng),其中該第一硬件線程與邏輯處理器相關(guān)聯(lián),并且指定該重新激活條件以及滅活該第一硬件線程由該操作系統(tǒng)進行。
26.如權(quán)利要求25所述的方法,其中與該邏輯處理器被拿下線相關(guān)聯(lián),該操作系統(tǒng)被配置以指定重新激活條件,該重新激活條件響應于中斷聲明禁止該第一硬件線程的重新激活。
27.如權(quán)利要求25所述的方法,其中與該邏輯處理器進入空閑循環(huán)相關(guān)聯(lián),該操作系統(tǒng)被配置以指定重新激活條件,該重新激活條件響應于中斷聲明允許該第一硬件線程的重新激活。
28.一種程序產(chǎn)品,包括程序代碼,其被配置以通過以下方法控制支持多個硬件線程的執(zhí)行的多線程處理器為由該多線程處理器所執(zhí)行的多個硬件線程中的第一硬件線程指定重新激活條件;滅活該第一硬件線程;以及基于為第一硬件線程所指定的重新激活條件,選擇性地重新激活該第一硬件線程,其中該重新激活條件確定該第一硬件線程在被滅活后如何被激活,以及承載該程序代碼的信號承載介質(zhì)。
29.如權(quán)利要求28所述的程序產(chǎn)品,其中該信號承載介質(zhì)包括以下至少一個可記錄介質(zhì)與傳送介質(zhì)。
全文摘要
一種裝置、程序產(chǎn)品與方法,使用具有多個硬件線程中的至少一個硬件線程的多線程處理器,該線程能夠響應于控制電路地被激活與滅活。該控制電路還提供控制非活動線程在該線程被滅活后如何被激活的能力,例如,通過使能或廢止響應于中斷的重新激活。
文檔編號G06F9/38GK1540508SQ20041000288
公開日2004年10月27日 申請日期2004年1月20日 優(yōu)先權(quán)日2003年4月24日
發(fā)明者威廉·J·阿姆斯特朗, 布魯斯·G·米利, 納爾什·內(nèi)亞, 巴拉拉姆·辛哈羅伊, G 米利, 內(nèi)亞, 姆 辛哈羅伊, 威廉 J 阿姆斯特朗 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1