本發(fā)明一般地涉及一種支持多個線程的計算機系統(tǒng),且更具體言之,涉及多線程計算機系統(tǒng)中的線程上下文恢復。
背景技術:
當計算機系統(tǒng)的處理器速度在過去數(shù)十年內增加時,可存取此類計算機系統(tǒng)的存儲器所藉以的速度未成比例增加。因此,處理器的周期時間愈快,等待數(shù)據(jù)自存儲器中取回的延遲愈明顯。藉由各種級別的緩存且在最新處理器中藉由多線程(MT)減輕此類延遲的影響。
MT允許處理器的各種核心資源由多個指令流(稱為線程)共享。核心資源可包括執(zhí)行單元、高速緩存、轉換后備緩沖器(TLB)及其類似者,其可一般統(tǒng)稱為核心。在由高速緩存未命中所產生的延時或一個線程中的其他延遲期間,一個或多個其他線程可利用核心資源,因此增加核心資源的利用率。在超標量處理器同時多線程(SMT)實施中,多個線程可同時由一個或多個核心的核心資源來服務。
在現(xiàn)代硬件平臺中,MT通常以對在MT硬件上運行的操作系統(tǒng)(OS)透明的方式實施。此特性的一個方面為OS不需要修改以利用MT硬件。然而,相對于OS的透明MT操作可導致響應時間、容量供應、容量規(guī)劃及計費的高可變性。此可變性可出現(xiàn)是因為OS不感知其任務是否具有核心的獨占性控制,或其任務是否作為共享核心的線程執(zhí)行。借助設計,當在核心在使用中時存在高平均線程密度時,可獲得具MT能力的硬件上的存儲器密集工作負荷的最高容量。額外容量可歸因于由MT提供的增加的高速緩存利用。如果OS不一致地維持所利用核心的高平均線程密度,則由MT提供的額外總吞吐量容量將不可用。舉例而言,如果當存在低計算利用率時硬件每核心執(zhí)行單一MT線程且當存在高計算利用率時以高線程密度執(zhí)行,則其可非常難以判定多少總MT計算容量可用于工作負荷。MT線程利用的此硬件可變性可以以類似于先前關于容量所描述的方式導致事務響應時間及計費兩者的可變性。
技術實現(xiàn)要素:
各實施例包括一種用于多線程計算機系統(tǒng)中的線程上下文恢復的系統(tǒng)、方法及計算機程序產品。一個方面為一種配置,所述配置包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心(core)。所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程。多線程工具被配置為控制對所述配置的利用以執(zhí)行一種方法,所述方法包括基于自MT模式至ST模式的切換來停用一個或多個次要線程。使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序。在所述ST模式中查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id?;谒鲎詈笤O定程序指定最大線程id指示MT,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
根據(jù)另一方面,提供一種用于配置中的線程上下文恢復的計算機實施的方法。所述配置包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心,其中所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程。所述方法包括基于自所述MT模式至所述ST模式的切換,停用所述一個或多個次要線程。使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序。在所述ST模式中查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id。基于所述最后設定程序指定最大線程id指示MT,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
另一方面包括一種用于配置中的線程上下文恢復的計算機程序產品。所述配置包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心,所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程。所述計算機程序產品包括具有程序指令的計算機可讀存儲介質,其中所述計算機可讀存儲介質并非信號。所述程序指令能由處理電路讀取以使所述處理電路執(zhí)行一種方法。所述方法包括基于自所述MT模式至所述ST模式的切換,停用所述一個或多個次要線程。使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序。在所述ST模式中查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id?;谒鲎詈笤O定程序指定最大線程id指示MT,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
附圖說明
當本說明書完結時在權利要求中特定地指出且清楚地要求保護被視為實施例的主題。實施例的前述及其他特征及優(yōu)點自結合附圖而進行的以下詳細描述顯而易見,在附圖中:
圖1A描繪可根據(jù)一個實施例實施的計算環(huán)境;
圖1B描繪可根據(jù)一個實施例實施的計算環(huán)境;
圖2描繪可根據(jù)一個實施例實施的核心的處理電路;
圖3描繪可根據(jù)一個實施例實施的計算環(huán)境;
圖4描繪可根據(jù)一個實施例實施的計算環(huán)境中的系統(tǒng)管理程序(hypervisor)上下文保持的一個實例;
圖5描繪根據(jù)一個實施例的用于多線程的動態(tài)啟用的過程流;
圖6A描繪根據(jù)一個實施例的CPU地址擴展過程的一個實例;
圖6B描繪根據(jù)一個實施例的CPU地址縮短過程的一個實例;
圖7描繪根據(jù)一個實施例的用于設定多線程命令(order)的過程流;
圖8描繪根據(jù)一個實施例的存儲多線程能力信息的一個實例;
圖9描繪根據(jù)一個實施例的用于確定多線程能力的過程流;
圖10描繪根據(jù)一個實施例的各種線程上下文位置的一個實例;
圖11描繪根據(jù)一個實施例的多線程寄存器保留的一個實例;
圖12描繪根據(jù)一個實施例的用于多線程寄存器保留的過程流;
圖13描繪根據(jù)一個實施例的多線程寄存器恢復的一個實例;
圖14描繪根據(jù)一個實施例的用于多線程寄存器恢復的過程流;及
圖15描繪根據(jù)一個實施例的計算機可讀介質。
具體實施方式
例示性實施例提供支持單線程及多線程操作模式的計算機系統(tǒng)中的多線程操作。如本文所使用,邏輯線程是指單一指令流及其相關聯(lián)狀態(tài)。亦即,在架構級別處,每一邏輯線程表示獨立中央處理單元(CPU)或處理器。在硬件級別處,當分派線程時,線程為與客體狀態(tài)的維持組合的與邏輯線程相關聯(lián)的指令流的執(zhí)行。因此,本文中可互換地使用術語“線程”與“CPU”。
在一個例示性實施例中,CPU含有用于指令執(zhí)行、中斷動作、時序功能、初始程序加載及其他機器相關功能的定序及處理工具。CPU定義可映射至多種基礎物理實施的邏輯功能。CPU在執(zhí)行指令時可處理固定長度的二進制整數(shù)及浮點數(shù)(例如,二進制、十進制及十六進制)、可變長度的十進制整數(shù),及固定或可變長度的邏輯信息。處理可為并行或串行的。處理元素的寬度、移位路徑的多重性及執(zhí)行不同類型算術中的同時性程度可在不影響邏輯結果的情況下在CPU的一個模型與另一模型之間不同。
CPU執(zhí)行的指令可包括多個指令類別,諸如通用、十進制、浮點支持(FPS)、二進制浮點(BFP)、十進制浮點(DFP)、十六進制浮點(HFP)、控制及I/O指令。通用指令可用于執(zhí)行二進制整數(shù)算術運算及邏輯、分支及其他非算術運算。十進制指令對十進制格式的數(shù)據(jù)進行運算。BFP、DFP及HFP指令分別對BFP、DFP及HFP格式的數(shù)據(jù)進行運算,同時FPS指令獨立于格式對浮點數(shù)據(jù)進行運算或自一種格式轉換至另一種格式。特權控制指令及I/O指令可在CPU在監(jiān)督狀態(tài)下時被執(zhí)行,且半特權控制指令可在經(jīng)歷適當授權機制的情況下在問題狀態(tài)下執(zhí)行。
CPU提供可用于程序但在主存儲裝置中不具有可尋址表示的寄存器。寄存器可包括(例如)當前程序狀態(tài)字組(PSW)、通用寄存器、浮點寄存器及浮點控制寄存器、向量寄存器、控制寄存器、存取寄存器、前綴寄存器、當天時間(TOD)可編程寄存器及用于時鐘比較器及CPU定時器的寄存器。此寄存器集合可被稱為CPU的架構式寄存器上下文。在配置中的每一CPU可提供對TOD時鐘的存取,TOD時鐘可由配置中的所有CPU共享。指令操作碼可判定哪一類型的寄存器將用于操作。
每一CPU可具有指示其是否提供全套功能及工具(例如,通用CPU),或是否預期處理特定類型的工作負荷(例如,特殊CPU)的類型屬性。主要CPU為通用CPU或具有與在最后初始程序加載(IPL)操作之后開始的CPU(IPL CPU)相同類型的CPU。次要CPU為具有不同于IPL CPU的CPU類型的除通用CPU以外的任何CPU。
多線程工具可用于實施支持架構的計算機系統(tǒng)上。多線程工具提供對于多線程的支持以啟用共享核心的一組線程(其亦可被稱為CPU)。當多線程工具被啟用時,核心內的CPU可共享諸如執(zhí)行單元或高速緩存的某些硬件資源。當核心中的一個CPU等待硬件資源時(通常,在等待存儲器存取時),核心中的其他CPU可利用核心中的共享資源而非使其保持閑置。當已安裝及啟用多線程工具時,線程與為核心的成員的CPU同義。當多線程工具未被安裝或工具被安裝但未被啟用時,核心包括單一CPU或線程。
當多線程工具被安裝時,其可通過執(zhí)行設定多線程信號處理器(SIGP)命令而被啟用。在一個例示性實施例中,當多線程工具被啟用時,在配置中的CPU的數(shù)目增加一倍數(shù),該倍數(shù)的值由程序指定最大線程標識(PSMTID)確定。核心中的CPU的數(shù)目可比PSMTID多1。對應于此倍數(shù)的數(shù)個CPU被分組至核心中。配置中的相同CPU類型的每一核心可具有相同數(shù)目個CPU。核心內的每一CPU為相同CPU類型;然而,基于模型及CPU類型,核心內的一些CPU可能不可操作。
在一個例示性實施例中,控制程序(諸如,操作系統(tǒng)(OS))顯式地啟用多線程以便其可由OS管理的配置使用。備選地,系統(tǒng)管理程序可啟用多線程,且系統(tǒng)管理程序的客體及其應用可明顯受益。應用程序通常不感知多線程是否已被啟用。當多線程被啟用時,配置中的所有CPU的CPU地址被調整以包括在地址的最左側位中的核心標識(或核心ID)及在地址的最右側位中的線程標識(線程ID或TID)。核心ID亦可被稱為核心地址值,且TID可被稱為線程地址值。核心內的CPU可共享諸如執(zhí)行單元或較低級別高速緩存的某些硬件工具,因此核心的一個CPU內的執(zhí)行可影響核心中的其他CPU的性能。
為了管理與在單線程與多線程模式之間動態(tài)切換配置的一個或多個核心相關聯(lián)的改變,包括數(shù)個支持特征。為維持與不支持多線程的程序的兼容性,單線程模式可為在重設或去激活后的缺省模式。例示性實施例包括用于在自多線程模式轉變至單線程模式之后保留來自多線程模式的線程上下文、傳送所述線程上下文及恢復所述線程上下文以支持線程上下文的分析及/或恢復的特性。
可由例示性實施例實施的計算環(huán)境可(例如)基于國際商業(yè)機器公司(Armonk,New York)提供的z/Architecture。z/Architecture描述于2012年8月的題為“z/Architecture Principles of Operation”的公開(IBM公開第SA22-7832-09號)中,該公開以全文引用的方式并入本文中。在一個實例中,基于z/Architecture的計算環(huán)境包括由國際商業(yè)機器公司(Armonk,New York)提供的eServer zSeries。計算環(huán)境可包括(例如)具有具一個或多個核心(例如,處理器核心)的一個或多個分區(qū)(例如,邏輯分區(qū))的處理器復合體,及如本文中進一步描述的一個或多個級別的系統(tǒng)管理程序。
圖1A展示作為支持多線程(MT)的計算環(huán)境的一個實例的計算機系統(tǒng)100。在圖1A的實例中,計算機系統(tǒng)100包括多個處理器核心102、輸入/輸出(I/O)子系統(tǒng)104及系統(tǒng)存儲器160。I/O子系統(tǒng)104可提供對本領域公知的I/O設備的存取。處理器核心102(本文中亦簡稱為“核心”)可包括具有支持元件的處理電路。在圖1A的實例中,五個核心102被描繪為核心1 110、核心2 120、核心3 130、核心4 140及核心5 150;然而,亦涵蓋較大或較少數(shù)目個核心102。MT工具103可為核心102中的每一者的硬件組件。在此實例中,核心102中的每一者能夠支持至多四個線程。舉例而言,核心1 110可支持線程111、112、113及114。核心2 120可支持線程121、122、123及124。核心3 130可支持線程131、132、133及134。核心4 140可支持線程141、142、143及144。核心5 150可支持線程151、152、153及154。應注意,并非每一核心102的所有四個線程均可在任何瞬時可操作。舉例而言,在核心3 130中,線程131及132可在線程133及134被允許可操作(以陰影描繪)時可操作。
圖1A亦描繪計算機系統(tǒng)100的系統(tǒng)存儲器160,其中系統(tǒng)存儲器160的各部分被分成邏輯分區(qū)1(LPAR1)170、LPAR2 180及LPAR3 190。LPAR 170、180、190表示可執(zhí)行操作系統(tǒng)(諸如,LinuxTM或z/OSTM、z/VM或zTPF操作系統(tǒng))的虛擬化計算系統(tǒng)(亦稱為配置)。圖1A亦展示核心102至LPAR 170、180、190的分派。在此說明中,核心1 110及核心2120專用于由LPAR1 170使用。核心3 130專用于由LPAR2 180使用,且核心5 150專用于由LPAR3 190使用。核心4 140可在LPAR2 180與LPAR3 190之間共享,但在圖1A中展示為被指派給LPAR2 180。LPAR3 190展示由分區(qū)采用的兩種不同類型的核心102的一個實例,其中在此實例中核心4 140允許多個線程可操作,但核心5 150不允許多個線程可操作。在圖1A的實例中,LPAR1 170提供用于OS 171以及程序172、173、174及175的處理資源。LPAR2 180提供用于OS 181以及程序182、183及184的處理資源。LPAR4 190提供用于OS 191以及程序192及193的處理資源。
在LPAR中執(zhí)行的操作系統(tǒng)的控制下,程序在核心的線程上執(zhí)行。在一個例示性實施例中,個體線程有時僅執(zhí)行一個程序;然而,被設計為可重入的程序可在多個線程或核心上同時執(zhí)行。舉例而言,LPAR1 170的OS 171的程序172可在核心1 110中的線程111及113上及核心2 120的線程121及124中執(zhí)行。取決于OS的控制,不同程序可根據(jù)分派規(guī)則及服務質量協(xié)議被分派在相同或不同線程上。
各種級別固件亦駐留在系統(tǒng)存儲器160中,包括(例如)毫碼162及LPAR系統(tǒng)管理程序163。毫碼162可體現(xiàn)為固件以支持較低級別系統(tǒng)功能。LPAR系統(tǒng)管理程序163可為(例如)許可內部代碼,諸如IBM Processor-Resource/System ManagerTM(PR/SMTM)。LPAR系統(tǒng)管理程序163可建立LPAR 170、180、190且可管理在核心102上的分派。當MT工具103安裝在計算機系統(tǒng)100中時,毫碼162及LPAR系統(tǒng)管理程序163亦分別含有MT工具支持代碼164及165。MT工具支持代碼164及165可視為MT工具103的一部分,因為支持MT的邏輯可散布在毫碼162、LPAR系統(tǒng)管理程序163及核心102之間。盡管未描繪,但OS 171、181、191中的每一者亦可包括MT工具支持代碼以在其相應LPAR 170、180、190中啟用及利用MT。
圖1B展示與圖1A相同的計算系統(tǒng)100,除在圖1B的計算環(huán)境中核心4 140現(xiàn)被指派給LPAR3 190而非LPAR2 180以外。亦注意不同于線程143及144不可操作的圖1A,在圖1B中,當在核心4 140上分派LPAR3 190時所有四個線程141至144當前可操作。LPAR在核心102上的分派及解除分派為動態(tài)的,且在其他時間其他LPAR(未圖示)可在同一核心102上操作。
現(xiàn)轉向圖2,大體展示根據(jù)一個實施例的用于實施處理核心(諸如,圖1A及圖1B中的核心102中的一者)的處理電路200的方塊圖。處理電路200為可同時在MT環(huán)境中支持一個或多個線程的處理電路的一個實例。圖2中所展示的處理電路200包括可將處理電路200耦合至其他處理器及外圍設備的系統(tǒng)控制器接口單元202。系統(tǒng)控制器接口單元202亦可將Dcache 204(其讀取及存儲數(shù)據(jù)值)、Icache 208(其讀取程序指令)及高速緩存接口單元206連接至外部存儲器、處理器及其他外圍設備。
Icache 208可結合指令取回單元(IFU)210提供指令流的加載,所述指令取回單元預先取回指令且可包括推測性加載及分支預測能力。可將所取回指令提供至指令解碼單元(IDU)212以便解碼成指令處理數(shù)據(jù)。
IDU 212可將指令提供至發(fā)出單元214,所述發(fā)出單元可控制指令至各種執(zhí)行單元(諸如,用于執(zhí)行一般運算的一個或多個定點單元(FXU)216及用于執(zhí)行浮點運算的一個或多個浮點單元(FPU)218)的發(fā)出。FPU 218可包括二進制浮點單元(BFU)220、十進制浮點單元(DFU)222或任何其他浮點單元。發(fā)出單元214亦可經(jīng)由一個或多個LSU管線耦合至一個或多個加載/存儲單元(LSU)228。多個LSU管線被視為用于執(zhí)行加載及存儲以及用于分支的地址產生的執(zhí)行單元。LSU 228及IFU 210兩者可利用轉換后備緩沖器(TLB)230以提供用于操作數(shù)及指令地址的緩沖轉換。
FXU 216及FPU 218耦合至各種資源,諸如通用寄存器(GPR)224及浮點寄存器(FPR)226。GPR 224及FPR 226通過LSU 228提供用于自Dcache 204加載及存儲的數(shù)據(jù)值的數(shù)據(jù)值存儲。
處理電路200亦可包括計數(shù)器及/或定時器250以支持基于系統(tǒng)時間的產生及診斷動作。舉例而言,計數(shù)器及/或定時器250以及各種診斷及量測工具可用于支持當天時間。
現(xiàn)轉向圖3,描繪類似于圖1A的計算環(huán)境,除在圖3中第二級別系統(tǒng)管理程序300是在計算機系統(tǒng)100的LPAR2 180中執(zhí)行以外。第二級別系統(tǒng)管理程序300(例如,IBM z/VM操作系統(tǒng))包括MT支持代碼301,其類似于由LPAR(第一級別)系統(tǒng)管理程序163提供的MT支持代碼165。第二級別系統(tǒng)管理程序300提供對客體操作系統(tǒng)311、321及331分別操作所在的多個虛擬機310、320及330(亦稱為配置)的支持??腕w操作系統(tǒng)311、321及331可包括(例如)LinuxTM或z/OSTM、z/VM或z/TPF OS,或可包括諸如IBM交談式監(jiān)視器系統(tǒng)(CMS)的客體開發(fā)環(huán)境。每一客體OS311、321及331可以或可以不啟用多線程,在此狀況下第二級別系統(tǒng)管理程序300可負責使用可用于第二級別系統(tǒng)管理程序300操作所在的LPAR2 180的物理處理資源(核心130、140及線程131至134、141至144)分派客體OS 311、321、331及相關聯(lián)程序312、313、322、323、332及333。各種虛擬機310、320、330的程序312、313、322、323、332、333可在可用于相應客體OS 311、321及331的線程131至134、141至144上執(zhí)行。客體OS 311、321及331無需包括MT支持代碼,這是因為如果第二級別系統(tǒng)管理程序300利用多線程,則客體OS可明顯受益于MT。
現(xiàn)轉向圖4,描繪可根據(jù)一個實施例實施的計算環(huán)境中的系統(tǒng)管理程序上下文保持的一個實例。在圖4的實例中,數(shù)個支持結構被描繪于圖1A及圖1B的LPAR系統(tǒng)管理程序163內。舉例而言,結構410可支持圖1A的LPAR1 170,包括存儲用于當前在如圖1A中所展示的物理線程111、112、113、114、121、122、123、124上執(zhí)行的邏輯線程411、412、413、414、421、422、423、424的架構式寄存器上下文(亦即,線程上下文)的狀態(tài)描述及衛(wèi)星(satellite)塊。在分派這些邏輯線程時,物理線程保持線程的當前架構式寄存器上下文。架構式寄存器上下文在邏輯線程不再被分派時將被保持在狀態(tài)描述及衛(wèi)星塊中。結構430可支持圖1A的LPAR2 180,包括存儲用于當前在如圖1A中所展示的物理線程131、132、141、142上執(zhí)行的邏輯線程431、432、441、442的架構式寄存器上下文的狀態(tài)描述及衛(wèi)星塊。結構450可支持圖1A的LPAR3 190,包括存儲用于當前在如圖1A中所展示的物理線程151上執(zhí)行的邏輯線程的架構式寄存器上下文的狀態(tài)描述及衛(wèi)星塊451。結構450亦包括存儲用于當前未在物理處理器(如以陰影所展示)上分派的邏輯線程的架構式寄存器上下文的狀態(tài)描述及衛(wèi)星塊461、462、463及464。亦可藉由LPAR系統(tǒng)管理程序163保留支持未在物理核心上分派的LPAR的其他結構,諸如包括用于邏輯線程的狀態(tài)描述及衛(wèi)星結構471、472、473及474的LPAR A(圖1A中未描繪)的結構470。其他結構實例包括支持包括用于邏輯線程的狀態(tài)描述及衛(wèi)星結構481及482的未經(jīng)分派LPAR B(圖1A中未描繪)的結構480以及用于邏輯線程的狀態(tài)描述及衛(wèi)星結構485的未經(jīng)分派LPAR C(圖1A中未描繪)的結構484。
盡管數(shù)個結構被描繪在圖4的實例中,但應理解,額外結構可由LPAR系統(tǒng)管理程序163及計算機系統(tǒng)100中的其他位置支持以管理多線程。舉例而言,支持圖3的虛擬機310、320、330的多線程的結構可由圖3的第二級別系統(tǒng)管理程序300保留。
現(xiàn)轉向圖5,描繪根據(jù)一個實施例的用于多線程的動態(tài)啟用的過程流500。在塊502處,主要線程在單線程(ST)模式中執(zhí)行。在塊504處,在ST模式中取回多線程(MT)模式設定指令。在執(zhí)行如在505處共同地描繪的此指令時,在塊506處獲得從由MT模式設定指令指定的位置請求的線程的數(shù)目。當發(fā)出設定MT模式指令時可由參數(shù)寄存器指定位置。MT模式設定指令可為包括設定MT命令及與所請求線程的數(shù)目相關聯(lián)的程序指定最大線程id(PSMTID)的信號處理器(SIGP)指令。參看圖7在本文中進一步描述與SIGP指令的設定MT命令相關聯(lián)的過程的一個實例。
繼續(xù)過程500,在塊508處,執(zhí)行關于所請求線程的數(shù)目是否指示多個線程的判定。舉例而言,多個線程可藉由大于1的值指示。在0值指示單個線程的實施例中,1或大于1的值可指示多個線程。基于判定所請求線程的數(shù)目不指示多個線程,在塊510處核心保持在ST模式中,設定MT模式指令的執(zhí)行完成,且控制返回至塊502?;谂卸ㄋ埱缶€程的數(shù)目指示多個線程,在塊512處啟用MT模式,且設定MT模式指令的執(zhí)行完成。在塊514處,執(zhí)行包括主要線程及一個或多個次要線程的多個線程。在塊516處,如果不存在重設或去激活,則過程500循環(huán)回至塊514;否則,在塊518處,基于恢復至ST模式的配置的重設或去激活而停用MT模式。作為停用MT模式的一部分,線程(PSMTID)的數(shù)目被保留用于非清除重設或被置0用于清除重設。過程500返回至塊502。
當激活加載正常、加載與轉儲、加載清除或加載清除清單引導密鑰時CPU可進入加載狀態(tài)。如果通道命令(command)字(CCW)型初始程序加載操作成功地完成,則CPU自加載狀態(tài)改變至操作狀態(tài)。
CPU重設可用于在信息損毀量最少的情況下清除設備檢查指示及任何由此產生的CPU狀態(tài)的不可預測性。詳言之,在保留CPU狀態(tài)以用于分析或重新繼續(xù)操作時,CPU重設可用于清除檢查條件。如果CPU重設由加載正常或加載與轉儲密鑰的激活引起,則(a)CPU重設可將架構模式設定成缺省模式,且(b)如果安裝及啟用多線程工具,則停用多線程。當CPU重設設定缺省模式時,其可保存當前PSW,使得可恢復PSW。
初始CPU重設提供CPU重設連同當前PSW、CPU定時器、時鐘比較器及其他寄存器(諸如:中斷事件地址、所捕獲的PSW、控制、浮點控制、前綴及TOD可編程寄存器)的初始化的功能。如果初始CPU重設由加載正?;蚣虞d與轉儲密鑰的激活引起,則其可將架構模式設定為缺省模式。如果在初始CPU重設由加載正?;蚣虞d與轉儲密鑰的激活所引起時多線程被啟用,則初始CPU重設功能可針對核心的最低編號CPU而執(zhí)行,且CPU重設針對核心中的所有其他CPU而執(zhí)行。清除重設引起初始CPU重設及子系統(tǒng)重設被執(zhí)行,且另外,除TOD時鐘以外,清除或初始化配置中的所有CPU中的所有存儲位置及寄存器。清除不影響外部存儲裝置,諸如由控制程序使用以保存不可尋址頁面的內容的直接存取存儲器件。
CPU通電重設引起初始CPU重設被執(zhí)行且將通用寄存器、存取寄存器、控制寄存器及浮點寄存器的內容清除至0/具有有效檢查塊碼的缺省值。應理解,狀態(tài)的清除或初始化無需為0值但在已清除狀態(tài)下可缺省為非0值。如果CPU通電重設建立配置,則其可將架構模式設定成缺省模式;否則,其可將架構模式設定成已在配置中的CPU的模式??墒謩拥匕l(fā)起CPU重設、初始CPU重設、子系統(tǒng)重設及清除重設。
在例示性實施例中,每一CPU具有被指派的編號,稱為其CPU地址。CPU地址獨特地識別配置內的一個CPU。CPU通過在SIGP指令的CPU地址字段中指定此地址而被指定。用信號通知故障警報、緊急信號或外部調用的CPU可在中斷情況下由在CPU地址字段中存儲此地址而識別。CPU地址由配置定義程序指派且通常并不由于重配置改變而改變。程序可通過使用存儲CPU地址指令而確定CPU的地址。存儲CPU地址指令亦可用于識別CPU地址,借助該CPU地址在多處理配置中識別CPU。
當啟用多線程時,CPU地址可包括與核心內的CPU的標識串接的核心標識(核心ID)。核心內的CPU標識為線程標識(線程ID或TID)。在配置內,所有核心提供相同數(shù)目個CPU;然而,取決于模型及CPU類型,核心中的一些CPU可能不可操作。
基于由信號處理器設定多線程命令使用的參數(shù)寄存器的PSMTID,固定數(shù)目個位表示線程標識。此位數(shù)目被稱為TID寬度。
在啟用多線程之前,核心ID可由CPU地址的最右側位形成。核心ID左移TID寬度個位,從而在多線程可用之后產生CPU地址的最左側位。線程ID具有相同TID寬度數(shù)目個位,且在多線程被啟用之后占據(jù)CPU地址的最右側位。可在連續(xù)數(shù)目范圍中指派線程ID。表1例示PSMTID的實例關系,TID寬度及CPU地址位包括核心標識及線程標識。
表1-實例地址位映射
在圖6A中將地址擴展描繪為根據(jù)一個實施例的CPU地址擴展過程600A的一個實例。在塊602處,可使用核心地址值604作為數(shù)個CPU地址位在ST模式中存取主要線程。箭頭606指示自ST模式切換至MT模式。在塊608處,可使用擴展后的地址值610在MT模式中存取主要線程或一個或多個次要線程。擴展后的地址值610包括被移位為移位后的核心地址值612且與線程地址值614串接的核心地址值604。移位后的核心地址值612為核心識別符(核心ID),且線程地址值614為線程識別符(TID)。移位后的核心地址值612可基于所請求的最大線程識別符(例如,PSMTID)而移位一定量。線程地址值614中的TID位的數(shù)目可基于如上文表1中所展示的PSMTID而確定。線程地址值614可串接至移位后的核心地址值612的低階位以形成擴展后的地址值610。全0的線程地址值614將指明主要線程,且大于0的值識別及處理次要線程。
當在MT模式與ST模式之間切換時,核心地址值604(ST模式)或擴展后的地址值610(MT模式)被選擇以在相應ST模式或MT模式中用作CPU地址。核心地址值604為用于ST模式中的標準格式地址的一個實例,且核心基于停用MT模式而自MT模式恢復至ST模式。在一個例示性實施例中,僅主要線程(亦即,非次要線程)可基于停用MT模式而存取。圖6B描繪根據(jù)一個實施例的CPU地址縮短過程600B的一個實例。圖6B的箭頭616說明自塊608的MT模式切換回至塊602的ST模式。自MT模式至ST模式的恢復可包括將擴展后的地址值610向右移位及去除線程地址值614以從移位后的核心地址值612形成包括核心地址值604(核心ID)的標準格式地址作為CPU地址。
當重設功能停用多線程時,(a)使線程ID為0的CPU的CPU地址向右移位在啟用期間使用的相同TID寬度數(shù)目個位,(b)0在地址左側被插入TID寬度數(shù)目個位中,且(c)所述CPU地址恢復至其原始非多線程格式(亦即,標準格式地址)。當啟用多線程時在具有非0線程ID的核心中的所有CPU在停用多線程時不再為可操作的。
當不啟用多線程時,CPU地址保持由配置定義過程指派的值而不變。在此狀況下,線程標識不存在。
數(shù)個信號處理器命令可將包括(例如)以下各者的命令提供至CPU:開始、停止、重新開始、停止及存儲狀態(tài)、初始CPU重設、CPU重設、在地址處的存儲狀態(tài)、設定架構、感測運行狀態(tài)、設定多線程、在地址處的存儲額外狀態(tài)及其類似者。初始CPU重設或CPU重設可由信號處理器指令發(fā)起且不影響架構模式或其他CPU不停用多線程,且不引起I/O重設。
設定架構命令指定配置中的所有CPU待設定為的架構模式。架構差異可包括不同尋址模式、寄存器定義及由CPU支持的指令。在架構模式改變后,可將寄存器的選擇位字段設定成缺省狀態(tài)(例如,置0),清除配置中的所有CPU的存取寄存器轉換后備緩沖器(ALB)及轉換后備緩沖器(TLB),且可在配置中的所有CPU上執(zhí)行序列化及檢查點同步功能。
感測運行狀態(tài)命令可指示被尋址的CPU是否正在運行。在ST模式中,可返回指示符作為運行/非運行狀態(tài)。在MT模式中,指示符可用于識別被尋址CPU為成員的核心的任何CPU是正在運行,還是被尋址CPU為成員的核心的所有CPU未正在運行。
設定MT命令啟用多線程工具。參數(shù)寄存器的位位置可含有待提供于配置中的PSMTID。PSMTID可被定義為比可待在每一核心中尋址的CPU的數(shù)目小1。舉例而言,所指明位位置中的值3指示待提供最多四個線程。當配置中的所有CPU被視為待尋址時,可忽略SIGP指令的CPU地址寄存器的內容。如果接受,則在SIGP指令的執(zhí)行期間由所有CPU完成設定MT命令。參看圖7,描繪用于SIGP設定MT命令702的過程700??商峁╁e誤指示且基于判定由以下各者中的一者或多者發(fā)出SIGP設定MT命令702而防止MT模式的啟用:無效命令、不正確狀態(tài)及無效參數(shù),如本文中關于圖7的過程700進一步描述的。
如果在塊704處多線程工具未安裝或CPU并未在有效架構模式中啟用(708),則不接受設定MT命令且可分別在塊706或710處返回無效命令指示。如果在塊712處在配置中的其他CPU不在停止或檢查停止狀態(tài)下,或如果在塊716處所述配置已被啟用以用于多線程,則不接受設定MT命令且可分別在塊714或718處返回不正確狀態(tài)指示。
如果在塊720處PSMTID為無效的,則不接受設定MT命令且在塊722處可返回無效參數(shù)指示。當在塊724處PSMTID為0時,配置未被啟用以用于多線程,保持處于ST模式中,且在塊728處提供任何狀態(tài)作為條件代碼。在一個例示性實施例中,當PSMTID有效且非0時,在塊726處,配置被啟用以用于多線程,導致CPU地址擴展,配置中的所有CPU的ALB及TLB已清除其內容,且在配置中的所有CPU上執(zhí)行序列化及檢查點同步功能??稍趬K728處在條件代碼中提供狀態(tài)。在成功完成后,除執(zhí)行設定MT命令的CPU以外的所有CPU保持在停止或檢查停止狀態(tài)下。然而,如果在啟用多線程之前CPU在檢查停止狀態(tài)下,則同一核心中具有非0線程ID的CPU置于停止狀態(tài)還是檢查停止狀態(tài)下可能是不可預測的。
線程上下文亦可被稱為架構式寄存器上下文。在啟用多線程之前每一CPU的架構式寄存器上下文(亦即,PSW、CPU定時器、時鐘比較器、通用寄存器、浮點寄存器及浮點控制寄存器、向量寄存器、控制寄存器、存取寄存器、前綴寄存器及TOD可編程寄存器等的內容)在啟用多線程之后變?yōu)槊恳幌鄳诵牡木哂蠺ID 0的CPU的架構式寄存器上下文。類似地,當由于加載正?;蚣虞d與轉儲密鑰的激活而停用多線程時,具MT能力的配置的每一核心的具有TID 0的CPU的架構式寄存器上下文變?yōu)槊恳幌鄳狢PU的架構式寄存器上下文。
當由于加載正?;蚣虞d與轉儲密鑰操作的激活而停用多線程工具時,可保留具有非0線程標識的所有CPU的架構式寄存器上下文。如果在無介入清除重設的情況下隨后重新啟用多線程工具,則恢復具有非0線程標識的所有CPU的架構式寄存器上下文。
當在已由加載正?;蚣虞d與轉儲密鑰的激活停用之后重新啟用多線程時,如果參數(shù)寄存器的位中的PSMTID的值不同于前述啟用中使用的值,則具有非0線程ID的所有CPU的架構式寄存器上下文可為不可預測的。
存儲系統(tǒng)信息指令可用于將關于配置的一個或多個組件的信息存儲至系統(tǒng)信息塊(SYSIB)中。SYSIB可包括MT安裝字段、MT通用字段、總CPU/核心計數(shù)、被配置CPU/核心計數(shù)、待用CPU/核心計數(shù)、保留CPU/核心計數(shù)及其他字段。MT安裝字段可指示是否安裝多線程工具且亦可指示用于第一核心類型(例如,特殊核心類型)的最高支持TID。MT通用字段可指示用于第二核心類型(例如,通用核心類型)的最高支持TID。MT通用字段中的最高支持TID可限于小于或等于MT安裝字段中的最高支持TID。總CPU/核心計數(shù)可指示配置中的通用CPU(不論在被配置、待用或保留狀態(tài)下)或包括通用CPU的核心的總數(shù)。被配置CPU/核心計數(shù)可指示在被配置狀態(tài)下(亦即,在配置及準備執(zhí)行程序中)的通用CPU或包括通用CPU的核心的數(shù)目。待用CPU/核心計數(shù)指示在待用狀態(tài)下(亦即,不可用于執(zhí)行程序直至置于被配置狀態(tài)下)的通用CPU或包括通用CPU的核心的數(shù)目。保留CPU/核心計數(shù)指示在保留狀態(tài)下(亦即,不可用于執(zhí)行程序且不能置于被配置狀態(tài)下)的通用CPU或包括通用CPU的核心的數(shù)目。
圖8描繪根據(jù)一個實施例的存儲多線程能力信息的一個實例。在線程(諸如,核心800A的線程1)中執(zhí)行的程序可自配置850的諸如LPAR的存儲器801取回存儲系統(tǒng)信息(STSI)指令830。STSI指令的執(zhí)行可導致系統(tǒng)信息塊(SYSIB)802的存儲(832)。在圖8的實例中,SYSIB 802包括指示配置850是否支持多線程的MT安裝識別符804。SYSIB 802亦包括可作為用于特殊核心的每核心最大TID 806及用于通用核心的最大TID 808提供的核心800A/800B的最高支持線程的最大線程識別符。SYSIB 802亦可包括當前程序指定最大線程識別符(PSMTID)809。當前PSMTID 809反映如由程序在配置850中啟用的多線程模式。如果STSI指令830在基本機器級別處執(zhí)行,則可不定義當前PSMTID 809。
在線程(諸如核心800B的線程2)中執(zhí)行的程序亦可自配置850的存儲器801取回服務調用(SERVC)指令834,其中指令指定讀取系統(tǒng)控制程序信息(讀取SCP信息,或RSCPI)命令。RSCPI命令的執(zhí)行可引起服務調用控制塊(SCCB)810存儲(836)于存儲器801中。在一個例示性實施例中,通過RSCPI命令的執(zhí)行而存儲的SCCB 810提供可不可用于SYSIB 802中的類似及額外信息。在圖8的實例中,SCCB 810包括指示核心800B是否支持多線程的MT安裝識別符812。SCCB 810亦包括可被提供為用于特殊核心的每核心最大TID 814及用于通用核心的最大TID 816的核心800B的最高支持線程的最大線程識別符。SCCB 810的812至816的值等于可在SYSIB 802中可存取的值804至808。另外,SCCB 810可包括核心800B的最高支持線程的最后設定程序指定最大線程識別符,其亦被稱為最后設定程序指定最大線程識別符(PSMTID)818。SCCB 810亦可包括作為PSMTID支持屏蔽820的關于設定MT命令可接受的PSMTID值的屏蔽。當小于由每核心最大TID 814定義的數(shù)目為所期望的時,PSMTID支持屏蔽820可用以識別所支持CPU/線程。
應理解,核心800A及800B包括未在此實例中描繪的其他方面。此外,SYSIB 802及SCCB 810可包括超出在圖8的實例中描繪的那些值的額外值。
圖9描繪根據(jù)一個實施例的用于確定多線程能力的過程流900。在塊902處,核心執(zhí)行取回多線程能力信息(RMTCI)指令,其可(例如)為SERVC指令或STSI指令中的任一者。在塊904處,獲得識別配置的多線程能力的線程識別信息。在塊906處,存儲所獲得的線程識別信息。在塊908處,基于所獲得的線程識別信息判定配置先前是否已使多線程被啟用。
如先前所描述,SERVC指令被配置為將線程識別信息存儲在存儲器中的響應塊(例如,圖8的SCCB 810)中,且STSI指令被配置為將線程識別信息存儲在存儲器中的SYSIB(例如,圖8的SYSIB 802)中。所獲得的線程信息可包括指示核心是否支持多線程的MT安裝識別符(例如,圖8的MT安裝識別符804或812)。所獲得的線程信息亦可包括核心的最高支持線程的最大線程識別符(例如,圖8的最大TID值806、808、814或816)。所獲得的線程信息可包括當前程序指定最大線程識別符(例如,圖8的當前PSMTID 809)及最后設定程序指定最大線程識別符(例如,圖8的PSMTID 818)。響應塊可包括指示個體地支持的特定線程識別符的位掩碼(例如,圖8的PSMTID支持屏蔽820)。配置先前已使MT被啟用的判定可基于最后設定程序指定最大線程識別符中的非0值(例如,最后設定PSMTID>0)。在一個例示性實施例中,配置支持多個核心類型。
在例示性實施例中,寄存器及諸如程序計數(shù)器值的值(其可包括于寄存器中或單獨地管理)被捕獲為線程上下文。當在MT模式中發(fā)生地址擴展時,額外線程上下文變?yōu)榭纱嫒?。如先前參看圖6所描述,針對配置中的每一核心形成CPU地址。CPU地址可由存儲CPU地址指令檢驗,所述指令出現(xiàn)在其他結構中且用于各種SIGP命令中。當MT未被啟用時,此尋址方案保持不變。當MT被啟用時,CPU地址經(jīng)歷擴展程序。如先前所描述,CPU地址的非MT啟用部分可向左移位足夠的位以容納TID。舉例而言,如果操作系統(tǒng)發(fā)出具有PSMTID值1的SIGP設定MT命令,則CPU地址將向左移位1位;如果PSMTID為2或3,則CPU地址將向左移位2位,如果PSMTID為4至7,則CPU地址將向左移位3位,等等。
當隨后停用多線程(由于由加載正常操作引起的清除重設或CPU重設)時,CPU地址縮短發(fā)生。具MT能力的CPU地址可向右移位用于啟用MT的SIGP設定MT命令中的相同數(shù)目個PSMTID位,且地址的線程ID部分消失??稍贛T模式期間存取的線程上下文可駐留在一個或多個位置中,諸如圖10中描繪的實例。在圖10的實例中,配置1000包括核心1002且可包括其他核心(未描繪)。存儲器1006可包括作為配置1000的一部分的配置存儲器1005及與配置1000分離的主機/固件存儲器1007。主機/固件存儲器1007可包括由主機維護的狀態(tài)描述塊1008,其可存儲用于線程(例如,圖10中的線程n)的線程上下文1010。衛(wèi)星塊1012可被錨定至作為主機/固件存儲器1007的一部分的存儲器1006中的狀態(tài)描述塊1008,其中衛(wèi)星塊1012可包括作為線程上下文1010的替代或結合線程上下文1010的線程上下文1014。每一線程可具有對應狀態(tài)描述塊1008及(可選地)衛(wèi)星塊1012,其中可存儲線程上下文1010或線程上下文1014。作為另一替代例,硬件上下文寄存器1016可用于將線程上下文1018存儲在(例如)核心1002中。線程上下文1010、1014及1018的實例可組合地或單獨地用作存儲選項??稍趯嵤├惺褂锰娲鎯x項。與在何處維護線程上下文無關,在地址縮短后,線程上下文可不再直接可存取,但可由轉儲程序而保留以用于存取。
當MT被停用時,CPU地址縮短過程使核心的線程1至n不再可尋址;類似地,包括架構式寄存器的線程上下文不再為程序可見。如果MT由于由非清除加載操作產生的CPU重設而停用,則保留線程1至n的寄存器上下文;如果配置返回至MT模式,則可隨后檢驗這些數(shù)據(jù)。用于每一客體線程的寄存器上下文可由主機維護于如圖10中所描繪的線程狀態(tài)描述塊1008中(或如在向量寄存器的狀況下,維護于錨定在狀態(tài)描述中的衛(wèi)星塊1012中)。
MT停用期間的線程1至n的上下文的保持為用于在OS失敗之后待轉儲的線程的狀態(tài)的診斷特性。在OS失敗之后,操作者可選擇運行獨立轉儲(SADMP)程序以在失敗時捕獲系統(tǒng)的存儲器及線程上下文。然而,加載SADMP程序可引起配置恢復至啟用ST模式的缺省架構模式,因此停用MT。但因為SADMP由非清除加載操作加載,所以保留每一核心的線程1至n的寄存器上下文。SADMP可通過查驗SERVC讀取SCP信息命令的響應塊的結果而判定MT是否在被轉儲的配置中被啟用。此數(shù)目可隨后用作至SIGP設定MT命令的輸入以在與前述相同的級別處重新啟用MT。
圖11描繪根據(jù)一個實施例的多線程寄存器保留的一個實例。諸如圖11的計算機系統(tǒng)1100的系統(tǒng)可包括多個配置1102及1104。在圖11的實例中,配置1102包括核心1106及核心1108,且配置1104包括核心1110及核心1112。配置1102及1104中的每一者可在不同時間獨立地在ST模式與MT模式之間切換。計算機系統(tǒng)1100的配置1102及1104中的每一者可配置有不同數(shù)目個最大線程ID以在配置1102及1104中的每一者處支持同時啟用的不同數(shù)目個線程。在圖11的實例中,核心1106及1108均支持最多兩個線程,同時配置1102在MT模式1114下,而核心1110及1112均支持最多四個線程,同時配置1104在MT模式1116下。
當在配置1102中啟用MT模式1114時,TID 0及TID 1兩者可存取為單獨線程上下文,諸如線程上下文1115的單獨實例。在時間1118處,可通過配置1102的加載正常操作或非清除重設而停用MT模式1114,其將核心1106及1108切換至ST模式1120中。歸因于如先前所描述的地址縮短,可在ST模式1120下存取TID0寄存器;然而,可在MT模式1114下存取的TID1寄存器被保留但不再可存取。舉例而言,TID1寄存器可體現(xiàn)為圖10的線程上下文1010、1014或1018,其中在切換至ST模式1120后借助地址擴展可用的地址在地址縮短之后不再可存取。
在配置1104使MT模式1116被啟用時,TID0、TID1、TID2及TID3寄存器可存取為獨立線程上下文,諸如圖10的線程上下文1010、1014或1018的單獨實例。在此實例中,TID0表示主要線程且TID1至TID3表示針對核心1110及核心1112中的每一者單獨地維護的次要線程。在時間1122處,可針對配置1104借助清除重設而停用MT模式1116,其將核心1110及1112兩者切換至ST模式1124中。在時間1122處的清除重設可清除所有寄存器TID0、TID1、TID2及TID3。歸因于如先前所描述的地址縮短,可在ST模式1124下存取TID0寄存器;然而,可在MT模式1116下存取的TID1、TID2及TID3寄存器被保留于已清除狀態(tài)下但不再可存取。如圖11中所描繪,可在不同時間1118及1122處在每一配置1102及1104上以區(qū)域化至每一配置1102及1104的效果獨立地執(zhí)行操作。因此,配置1102可在ST模式1120下而配置1104在MT模式1116下,且ST/MT模式無需針對計算機系統(tǒng)1100的所有配置而對準。
圖12描繪根據(jù)一個實施例的用于多線程寄存器保留的過程流1200。在塊1202處,基于由MT模式中的核心判定待在核心中停用MT,執(zhí)行自MT模式至ST模式的切換。MT模式的主要線程可被維護為ST模式的僅有線程。使包括次要線程的程序可存取寄存器值及程序計數(shù)器值的一個或多個線程上下文不可由應用程序存取。在塊1204處,基于切換,判定操作類型(例如,清除對非清除)以清除程序可存取寄存器值抑或保留程序可存取寄存器值。在塊1206處,基于非清除操作,判定保留程序可存取寄存器值。在塊1208處,基于清除操作,判定清除程序可存取寄存器。
如先前所描述,線程上下文的程序可存取寄存器值及程序計數(shù)器值可包括程序通用寄存器、浮點寄存器、控制寄存器、存取寄存器、前綴寄存器及TOD可編程寄存器。控制寄存器可包括浮點控制寄存器、運行時插裝控件、CPU測量控件及其類似者??砂ㄓ诰€程上下文中的寄存器的其他實例包括程序狀態(tài)字(例如,包括程序計數(shù)器/指令地址、條件代碼及用以控制指令定序及判定CPU狀態(tài)的其他信息)、向量寄存器、CPU定時器、時鐘比較器、中斷事件地址寄存器及本領域公知的其他寄存器。如先前所描述,PSMTID基于引起啟用MT的最后成功地執(zhí)行的信號處理器指令而設定?;谇袚Q至MT模式,基于對應次要線程被重新啟用而使程序可存取寄存器值不可由應用程序存取。舉例而言,在圖11中自ST模式1120切換回至MT模式1114允許TID1寄存器被存取,且TID1可被重新啟用。線程上下文可被維護在以下各者中的任一者中:狀態(tài)描述塊、錨定至存儲器中的狀態(tài)描述塊的衛(wèi)星塊,或上下文寄存器,諸如圖10的線程上下文1010、1014或1018。
主要線程上下文可包括主要線程的程序可存取寄存器值及程序計數(shù)器值,例如,用于圖11的配置1104的TID0及TID0寄存器,其中主要線程上下文在ST模式1124及MT模式1116兩者下可由應用程序存取。次要線程上下文可包括次要線程的程序可存取寄存器值及程序計數(shù)器值,例如,用于圖11的配置1104的TID1至TID3及TID1至TID3寄存器。
圖13描繪根據(jù)一個實施例的多線程寄存器恢復的一個實例。圖13的實例包括具有單一配置1302的計算機系統(tǒng)1300。配置1302包括核心1304、核心1306及核心1308。在此實例中,核心1304至1308中的每一者包括最多四個線程(TID0、TID1、TID2及TID3)。在MT模式1310下,TID0至TID3的所有線程上下文可用于核心1304至1308中。在時間1312處,可通過配置1302的加載正常操作或非清除重設而停用MT模式1310,其將核心1304至1308切換至ST模式1314中。在ST模式1314下,TID0寄存器保持可存取,且TID1至TID3寄存器不可存取的但針對核心1304至1308中的每一者保留。在時間1316處,可通過SIGP設定MT命令的執(zhí)行而重新啟用MT以進入被重新繼續(xù)的MT模式1318。在被重新繼續(xù)的MT模式1318下,針對核心1304至1308中的每一者恢復對TID1至TID3寄存器的線程上下文的存取。此通過轉儲程序(諸如,獨立轉儲程序1320)實現(xiàn)對所有線程寄存器(包括TID1至TID3寄存器)的檢驗以保存線程上下文信息以供分析。
圖14描繪如可由獨立轉儲(SADMP)程序(諸如,圖13的獨立轉儲程序1320)使用以在操作系統(tǒng)失敗之后捕獲線程的架構式寄存器上下文的根據(jù)一個實施例的用于多線程寄存器恢復的過程流1400。在塊1405處,經(jīng)由非清除加載操作(例如,加載正?;蚣虞d與轉儲)加載SADMP程序。非清除加載操作隱含地引起配置恢復至ST模式,諸如用于圖13的配置1302的ST模式1314。SADMP程序可接著在塊1410處通過使用STSI或SERVC指令查詢MT工具是否可用于配置中。如果已安裝MT,則在塊1415處SADMP程序查詢針對配置設定的最后設定程序指定最大線程標識(PSMTID)。如果先前從未針對配置設定MT,則最后設定PSMTID值將為0。SADMP程序可在最后設定PSMTID無論為何值(即使其為0)的情況下在塊1420處接著執(zhí)行指令以重新啟用多線程。如果在塊1410處查詢揭露未安裝MT,則不嘗試在塊1415處查詢最后設定PSMTID值或在塊1420處重新啟用MT。
SADMP程序嘗試用信號通知配置中的每一其他CPU(線程)將其架構式寄存器上下文保存在存儲器中的預定義位置中。如果在加載SADMP之前先前未啟用MT,則CPU地址為正常的非擴展格式。如果先前啟用MT,則CPU地址為包括核心ID及線程ID的擴展格式。SADMP在塊1425處以為0的CPU地址(N)開始,且在塊1430處判定CPU地址是否表示執(zhí)行SADMP所在的CPU。如果是,則跳過該CPU/線程,且在塊1450處將N遞增至下一值。如果N不同于當前CPU地址,則在塊1435處用信號通知該CPU/線程(例如)通過SIGP在地址處存儲狀態(tài)命令或SIGP停止及存儲狀態(tài)命令的執(zhí)行將其架構式寄存器上下文存儲在存儲器中。如果配置包括向量工具,則在SIGP在地址處存儲額外狀態(tài)命令亦可被執(zhí)行以存儲CPU/線程的向量寄存器的內容。在塊1440處作出關于塊1435的發(fā)信號是否成功的判定。如果成功,則在塊1445處SADMP程序可將CPU/線程的寄存器上下文存儲在磁帶或磁盤上的轉儲文件中,且在塊1450處處理通過遞增N而繼續(xù)。如果塊1435的發(fā)信號如由塊1440判定為未成功(例如,如果線程不可操作),則其被跳過,且在塊1450處處理通過遞增N而繼續(xù)。在塊1450處使發(fā)信號時所使用的CPU地址(N)的值遞增,且在塊1455處作出關于N現(xiàn)是否大于用于配置的最高可能CPU地址的判定。如果N不大于用于配置的最高可能CPU地址,則在塊1430處處理通過判定N是否表示執(zhí)行SADMP程序所借助的當前CPU/線程而繼續(xù)。如果N大于用于配置的最高可能CPU地址,則在塊1460處已完成架構式寄存器上下文恢復及轉儲。
盡管針對配置的一個核心而描述圖14,但應理解,圖14的過程流1400可延伸以跨越包括多個核心的配置的所有核心遍歷最大CPU地址而運行??稍谂渲弥羞M行額外調節(jié)以支持并不支持MT的OS或感知MT但不采用MT的程序的轉儲。舉例而言,可在加載不支持配置中的MT的OS之前執(zhí)行清除重設以防止MT感知獨立轉儲程序嘗試自配置轉儲任何次要線程。作為另一實例,感知MT但不采用MT的程序可在執(zhí)行用于配置的獨立轉儲程序之前發(fā)出具有為0的對應最大線程id的設定MT命令。
技術效果及益處包括支持單線程操作模式及多線程操作模式兩者的多線程計算機系統(tǒng)中的線程上下文恢復。在多線程模式期間使用的線程上下文在單線程模式期間可被保存但保持不可存取,且線程上下文在重新繼續(xù)多線程模式后恢復(例如)以供獨立轉儲程序使用以搜集關于軟件或硬件失敗的診斷信息。
本文中描述的系統(tǒng)使軟件能夠通過要求OS顯式地“加入宣告(opt in)”以利用MT硬件而減輕硬件可變性。當OS理解執(zhí)行環(huán)境的MT性質時,OS具有顯式地管理每核心線程密度的能力(對于其最好能力,給定工作負載分派模式)。OS具有如下選項:即使當較少地利用計算資源時仍維持高線程密度,由此減輕在其他MT實施上看到的總技術容量的許多可變性。作為維持高線程密度的直接結果,事務響應時間及計費方面兩者可更一致。
各實施例包括一種用于多線程計算機系統(tǒng)中的線程上下文恢復的系統(tǒng)、方法及計算機程序產品。一個方面為一種配置,所述配置包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心。所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程。多線程工具被配置為控制對所述配置的利用以執(zhí)行一種方法,所述方法包括基于自MT模式至ST模式的切換來停用一個或多個次要線程。使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序。在所述ST模式中查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id?;谒鲎詈笤O定程序指定最大線程id指示MT,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
根據(jù)另一方面,提供一種用于配置中的線程上下文恢復的計算機實施的方法。所述配置包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心,其中所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程。所述方法包括基于自所述MT模式至所述ST模式的切換,停用所述一個或多個次要線程。使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序。在所述ST模式中查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id?;谒鲎詈笤O定程序指定最大線程id指示MT,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
另一方面包括一種用于配置中的線程上下文恢復的計算機程序產品。所述配置包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心,所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程。所述計算機程序產品包括具有程序指令的計算機可讀存儲介質,其中所述計算機可讀存儲介質并非信號。所述程序指令能由處理電路讀取以使所述處理電路執(zhí)行一種方法。所述方法包括基于自所述MT模式至所述ST模式的切換,停用所述一個或多個次要線程。使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序。在所述ST模式中查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id?;谒鲎詈笤O定程序指定最大線程id指示MT,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
除了上文所描述的特征中的一者或多者以外,或作為替代例,其他實施例可包括其中所述設定MT指令為包括設定MT命令及指示MT的程序指定最大線程id的信號處理器指令。
除了上文所描述的特征中的一者或多者以外,或作為替代例,其他實施例可包括基于至所述ST模式的切換而保存所述一個或多個次要線程的所述線程上下文。
除了上文所描述的特征中的一者或多者以外,或作為替代例,其他實施例可包括其中自所述MT模式至所述ST模式的所述切換基于非清除重設操作,且用于重新繼續(xù)所述MT模式的所述設定MT指令的執(zhí)行及所述一個或多個次要線程的所述線程上下文的存取由獨立轉儲程序執(zhí)行。
除了上文所描述的特征中的一者或多者以外,或作為替代例,其他實施例可包括其中當發(fā)出設定MT命令以重新繼續(xù)所述MT模式時,所述獨立轉儲程序指定所述最后程序指定最大線程id作為程序指定最大線程id。
除了上文所描述的特征中的一者或多者以外,或作為替代例,其他實施例可包括其中在加載不支持所述配置中的MT的操作系統(tǒng)之前執(zhí)行清除重設以防止MT感知獨立轉儲程序嘗試自所述配置轉儲任何次要線程。
除了上文所描述的特征中的一者或多者以外,或作為替代例,其他實施例可包括其中感知MT但不采用MT的程序在執(zhí)行用于所述配置的獨立轉儲程序之前發(fā)出具有為0的對應最大線程id的設定MT命令。
除了上文所描述的特征中的一者或多者以外,或作為替代例,其他實施例可包括其中保留所述最后程序指定最大線程id,直至發(fā)生所述配置的清除重設或去激活。
本文中所用的術語,僅僅是為了描述特定的實施例,而不意圖限定本發(fā)明。本文中所用的單數(shù)形式的“一”和“該”,旨在也包括復數(shù)形式,除非上下文中明確地另行指出。還要知道,“包含”和/或“包括”在本說明書中使用時,說明存在所指出的特征、整體、步驟、操作、單元和/或組件,但是并不排除存在或增加一個或多個其它特征、整體、步驟、操作、單元和/或組件,以及/或者它們的組合。
以下的權利要求中的對應結構、材料、操作以及所有功能性限定的裝置(means)或步驟的等同替換,旨在包括任何用于與在權利要求中具體指出的其它單元相組合地執(zhí)行該功能的結構、材料或操作。所給出的對一個或多個實施例的描述其目的在于示意和描述,并非是窮盡性的,也并非是要將本發(fā)明限定到所表述的形式。對于所屬技術領域的普通技術人員來說,顯然可以作出許多修改和變型而不偏離本發(fā)明的精神和范圍。對實施例的選擇和描述,是為了最好地解釋本發(fā)明的原理和實際應用,使所屬技術領域的普通技術人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實施例。
本發(fā)明的各種實施例的描述已為達成說明的目的而呈現(xiàn),但不意欲為窮盡性的或限于所揭示的實施例。在不脫離所描述實施例的范圍及精神的情況下,許多修改及變化對于本領域技術人員將顯而易見。本文中所使用的術語被選擇以最好地解釋實施例的原理、實際應用或對市場中找到的技術的技術改進,或使其他本領域技術人員能夠理解本文所揭示的實施例。
現(xiàn)參看圖15,總體上展示根據(jù)一個實施例的包括計算機可讀存儲介質1502及程序指令1504的計算機程序產品1500。
本發(fā)明可以是系統(tǒng)、方法和/或計算機程序產品。計算機程序產品可以包括計算機可讀存儲介質,其上載有用于使處理器實現(xiàn)本發(fā)明的各個方面的計算機可讀程序指令。
計算機可讀存儲介質可以是可以保持和存儲由指令執(zhí)行設備使用的指令的有形設備。計算機可讀存儲介質例如可以是但不限于電存儲設備、磁存儲設備、光存儲設備、電磁存儲設備、半導體存儲設備或者上述的任意合適的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機械編碼設備、例如其上存儲有指令的打孔卡或凹槽內凸起結構、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘枴?/p>
這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質下載到各個計算/處理設備,或者通過網(wǎng)絡、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機或外部存儲設備。網(wǎng)絡可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網(wǎng)關計算機和/或邊緣服務器。每個計算/處理設備中的網(wǎng)絡適配卡或者網(wǎng)絡接口從網(wǎng)絡接收計算機可讀程序指令,并轉發(fā)該計算機可讀程序指令,以供存儲在各個計算/處理設備中的計算機可讀存儲介質中。
用于執(zhí)行本發(fā)明操作的計算機程序指令可以是匯編指令、指令集架構(ISA)指令、機器指令、機器相關指令、微代碼、固件指令、狀態(tài)設置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標代碼,所述編程語言包括面向對象的編程語言—諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言—諸如“C”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡—包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機可讀程序指令,從而實現(xiàn)本發(fā)明的各個方面。
這里參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產品的流程圖和/或框圖描述了本發(fā)明的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現(xiàn)。
這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產出一種機器,使得這些指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質中,這些指令使得計算機、可編程數(shù)據(jù)處理裝置和/或其他設備以特定方式工作,從而,存儲有指令的計算機可讀介質則包括一個制造品,其包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
也可以把計算機可讀程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產生計算機實現(xiàn)的過程,從而使得在計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上執(zhí)行的指令實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
權利要求書(按照條約第19條的修改)
1.一種計算機系統(tǒng),包括:
配置,其包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心,所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程;及
多線程工具,其被配置為控制對所述配置的利用以執(zhí)行一種方法,所述方法包括:
基于響應于所述配置的重設或去激活而自所述MT模式至所述ST模式的切換,停用所述一個或多個次要線程,其中使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序;
當在所述ST模式中執(zhí)行時查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id,所述配置的所述最后設定程序指定最大線程id指示在所述切換之后是否可存取所述一個或多個次要線程的所述線程上下文;及
基于所述最后設定程序指定最大線程id指示在所述切換之后可存取所述一個或多個次要線程的所述線程上下文,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:
a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及
b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
2.如權利要求1所述的計算機系統(tǒng),其中所述設定MT指令為包括設定MT命令及指示MT的程序指定最大線程id的信號處理器指令。
3.如權利要求1所述的計算機系統(tǒng),進一步包括基于至所述ST模式的切換而保存所述一個或多個次要線程的所述線程上下文。
4.如權利要求1所述的計算機系統(tǒng),其中自所述MT模式至所述ST模式的所述切換是響應于非清除重設操作,且進一步其中用于重新繼續(xù)所述MT模式的所述設定MT指令的執(zhí)行及所述一個或多個次要線程的所述線程上下文的存取由獨立轉儲程序執(zhí)行。
5.如權利要求4所述的計算機系統(tǒng),其中當發(fā)出設定MT命令以重新繼續(xù)所述MT模式時,所述獨立轉儲程序指定所述最后程序指定最大線程id作為程序指定最大線程id。
6.如權利要求1所述的計算機系統(tǒng),其中在加載不支持所述配置中的MT的操作系統(tǒng)之前執(zhí)行清除重設以防止MT感知獨立轉儲程序嘗試自所述配置轉儲任何次要線程。
7.如權利要求1所述的計算機系統(tǒng),其中感知MT但不采用MT的程序在執(zhí)行用于所述配置的獨立轉儲程序之前發(fā)出具有為0的對應最大線程id的設定MT命令。
8.如權利要求1所述的計算機系統(tǒng),其中保留所述最后程序指定最大線程id,直至發(fā)生所述配置的清除重設或去激活。
9.一種用于配置中的線程上下文恢復的計算機實施的方法,所述配置包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心,所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程,所述方法包括:
基于響應于所述配置的重設或去激活而自所述MT模式至所述ST模式的切換,停用所述一個或多個次要線程,其中使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序;
當在所述ST模式中執(zhí)行時查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id,所述配置的所述最后設定程序指定最大線程id指示在所述切換之后是否可存取所述一個或多個次要線程的所述線程上下文;及
基于所述最后設定程序指定最大線程id指示在所述切換之后可存取所述一個或多個次要線程的所述線程上下文,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:
a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及
b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
10.如權利要求9所述的方法,其中所述設定MT指令為包括設定MT命令及指示MT的程序指定最大線程id的信號處理器指令。
11.如權利要求9所述的方法,進一步包括基于至所述ST模式的切換而保存所述一個或多個次要線程的所述線程上下文。
12.如權利要求9所述的方法,其中自所述MT模式至所述ST模式的所述切換是響應于非清除重設操作,且進一步其中用于重新繼續(xù)所述MT模式的所述設定MT指令的執(zhí)行及所述一個或多個次要線程的所述線程上下文的存取由獨立轉儲程序執(zhí)行。
13.如權利要求12所述的方法,其中當發(fā)出設定MT命令以重新繼續(xù)所述MT模式時,所述獨立轉儲程序指定所述最后程序指定最大線程id作為程序指定最大線程id。
14.如權利要求9所述的方法,其中在加載不支持所述配置中的MT的操作系統(tǒng)之前執(zhí)行清除重設以防止MT感知獨立轉儲程序嘗試自所述配置轉儲任何次要線程。
15.如權利要求9所述的方法,其中感知MT但不采用MT的程序在執(zhí)行用于所述配置的獨立轉儲程序之前發(fā)出具有為0的對應最大線程id的設定MT命令。
16.一種用于配置中的線程上下文恢復的計算機程序產品,所述配置包括能在單線程(ST)模式與多線程(MT)模式之間配置的核心,所述ST模式處理主要線程,且所述MT模式處理所述主要線程及所述核心的共享資源上的一個或多個次要線程,所述計算機程序產品包括:
具有程序指令的計算機可讀存儲介質,其中所述計算機可讀存儲介質并非信號,所述程序指令能由處理電路讀取以使所述處理電路執(zhí)行一種方法,所述方法包括:
基于響應于所述配置的重設或去激活而自所述MT模式至所述ST模式的切換,停用所述一個或多個次要線程,其中使所述一個或多個次要線程的包括程序可存取寄存器值及程序計數(shù)器值的線程上下文不可用于程序;
當在所述ST模式中執(zhí)行時查詢最后指定最大MT級別以確定所述配置的最后設定程序指定最大線程id,所述配置的所述最后設定程序指定最大線程id指示在所述切換之后是否可存取所述一個或多個次要線程的所述線程上下文;及
基于所述最后設定程序指定最大線程id指示在所述切換之后可存取所述一個或多個次要線程的所述線程上下文,通過執(zhí)行包括以下操作的a)及b)獲得所述一個或多個次要線程的所述線程上下文:
a)執(zhí)行設定MT指令以重新繼續(xù)所述MT模式;及
b)基于處于被重新繼續(xù)的MT模式中,存取所述一個或多個次要線程的所述線程上下文。
17.如權利要求16所述的計算機程序產品,其中所述設定MT指令為包括設定MT命令及指示MT的程序指定最大線程id的信號處理器指令。
18.如權利要求16所述的計算機程序產品,進一步包括基于至所述ST模式的切換而保存所述一個或多個次要線程的所述線程上下文。
19.如權利要求16所述的計算機程序產品,其中自所述MT模式至所述ST模式的所述切換是響應于非清除重設操作,且進一步其中用于重新繼續(xù)所述MT模式的所述設定MT指令的執(zhí)行及所述一個或多個次要線程的所述線程上下文的存取由獨立轉儲程序執(zhí)行。
20.如權利要求16所述的計算機程序產品,其中保留所述最后程序指定最大線程id,直至發(fā)生所述配置的清除重設或去激活。