本發(fā)明一般地涉及多線程(MT),且更具體言之,涉及用于管理計算機(jī)中的多個線程的核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA)。
背景技術(shù):
多線程(MT)提供用于在不需要添加額外核心的情況下增加可在單個物理處理器核心內(nèi)并行操作的處理器線程的數(shù)目的手段。理想地,MT通過使一個或多個線程使用核心硬件的當(dāng)前未由在同一核心上運(yùn)行的其他線程使用的部分來提供此增加能力。舉例而言,在由高速緩存未命中所引起的延時或一個線程中的其他延遲期間,一個或多個其他線程可利用核心資源,因此增加資源的利用率。實(shí)際上,即使此共享導(dǎo)致線程之間的一些干擾且需要某一額外硬件,但MT仍提供使用較少硬件執(zhí)行每一線程工作的能力,如果每一線程在其自身隔離核心硬件上執(zhí)行,則將需要較多硬件。常常,當(dāng)線程之間的硬件資源的共享亦減少計算機(jī)系統(tǒng)上的將信息(諸如,來自存儲器的數(shù)據(jù))提供至兩個獨(dú)特核心的整體壓力時,可從MT獲得額外益處。
通常,盡管MT提供硬件節(jié)省,但另一工作線程的添加消耗系統(tǒng)管理程序級別處的使用額外單獨(dú)核心提供增加能力將需要的相同協(xié)調(diào)成本。在許多情況下,一旦達(dá)成某一按比例調(diào)整比率,在工作線程(無論執(zhí)行于單個核心抑或共享核心上)之間協(xié)調(diào)資源的開銷是顯著的且會減小或甚至勝過由運(yùn)行獨(dú)立工作線程的能力所得到的益處。亦即,當(dāng)待管理事物的數(shù)目增加時通常存在更多管理開銷。
技術(shù)實(shí)現(xiàn)要素:
各實(shí)施例包括一種提供用于管理計算機(jī)中的多個線程的控制區(qū)的系統(tǒng)、方法及計算機(jī)程序產(chǎn)品。根據(jù)一個方面,一種計算機(jī)系統(tǒng)包括虛擬機(jī)(VM)配置,其具有一個或多個核心(core),其中每個核心被啟用以在單線程(ST)模式或多線程(MT)模式中操作。所述ST模式由單個線程構(gòu)成,且所述MT模式由在相應(yīng)核心的共享資源上的多個線程構(gòu)成。所述計算機(jī)系統(tǒng)還包括核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA),其具有表示所述VM配置的所有所述一個或多個核心的公用區(qū)及針對所述VM配置中的所述一個或多個核心中的每個核心的單獨(dú)核心描述區(qū)。每個核心描述區(qū)指示均表示所述相應(yīng)核心內(nèi)的線程的一個或多個線程描述區(qū)的位置,且每個線程描述區(qū)指示相應(yīng)線程的狀態(tài)描述的位置。所述計算機(jī)系統(tǒng)還包括一種工具,其被配置為控制所述配置以執(zhí)行一種方法。所述方法包括:基于所述COSCA的內(nèi)容來管理所述VM配置的所述一個或多個核心的線程。
根據(jù)另一方面,提供一種用于管理虛擬機(jī)(VM)配置中的多個線程的計算機(jī)實(shí)施的方法。所述配置包括一個或多個核心,其中每個核心被啟用以在單線程(ST)模式或多線程(MT)模式中操作。所述ST模式由單個線程構(gòu)成,且所述MT模式由在相應(yīng)核心的共享資源上的多個線程構(gòu)成。所述方法包括提供核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA),其具有表示所述VM配置的所有所述一個或多個核心的公用區(qū)及針對所述VM配置中的所述一個或多個核心中的每個核心的單獨(dú)核心描述區(qū)。每個核心描述區(qū)指示均表示所述相應(yīng)核心內(nèi)的線程的一個或多個線程描述區(qū)的位置,且每個線程描述區(qū)指示相應(yīng)線程的狀態(tài)描述的位置。所述方法進(jìn)一步包括由核心基于所述COSCA的內(nèi)容來管理所述VM配置的所述一個或多個核心的線程。
另一方面包括一種用于管理虛擬機(jī)(VM)配置中的多個線程的計算機(jī)程序產(chǎn)品,所述配置包括一個或多個核心,其中每個核心被啟用以在單線程(ST)模式或多線程(MT)模式中操作。所述ST模式由單個線程構(gòu)成,且所述MT模式由在相應(yīng)核心的共享資源上的多個線程構(gòu)成,所述計算機(jī)程序產(chǎn)品包括:體現(xiàn)有程序指令的計算機(jī)可讀存儲介質(zhì),其中所述計算機(jī)可讀存儲介質(zhì)并非信號,所述程序指令可由處理電路讀取以使所述處理電路執(zhí)行一種方法。所述方法包括提供核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA),其具有表示所述VM配置的所有所述一個或多個核心的公用區(qū)及針對所述VM配置中的所述一個或多個核心中的每個核心的單獨(dú)核心描述區(qū)。每個核心描述區(qū)指示均表示所述相應(yīng)核心內(nèi)的線程的一個或多個線程描述區(qū)的位置,且每個線程描述區(qū)指示相應(yīng)線程的狀態(tài)描述的位置。所述方法進(jìn)一步包括由核心基于所述COSCA的內(nèi)容來管理所述VM配置的所述一個或多個核心的線程。
附圖說明
當(dāng)本說明書完結(jié)時在權(quán)利要求中特定地指出且清楚地要求保護(hù)被視為實(shí)施例的主題。實(shí)施例的前述及其他特征及優(yōu)點(diǎn)自結(jié)合附圖而進(jìn)行的以下詳細(xì)描述顯而易見,在附圖中:
圖1描繪可根據(jù)一個實(shí)施例實(shí)施的計算環(huán)境;
圖2描繪可根據(jù)一個實(shí)施例實(shí)施的物理處理器;
圖3描繪可根據(jù)一個實(shí)施例實(shí)施的計算環(huán)境;
圖4描繪根據(jù)一個實(shí)施例的多線程化(MT)邏輯線程的狀態(tài)描述;
圖5描繪根據(jù)一個實(shí)施例的線程有效性屏蔽(TVM)的方塊圖;
圖6描繪根據(jù)一個實(shí)施例的固定偏移狀態(tài)描述組;
圖7描繪根據(jù)一個實(shí)施例的被指定為地址列表的狀態(tài)描述組;
圖8描繪根據(jù)一個實(shí)施例的被指定為鏈接列表的狀態(tài)描述組;
圖9描繪根據(jù)一個實(shí)施例的被指定為循環(huán)列表或環(huán)的狀態(tài)描述組;
圖10描繪根據(jù)一個實(shí)施例的核心分派過程;
圖11描繪根據(jù)一個實(shí)施例的從虛擬執(zhí)行的協(xié)調(diào)退出;
圖12描繪根據(jù)一個實(shí)施例的系統(tǒng)控制區(qū)的方塊圖;
圖13描繪根據(jù)一個實(shí)施例的用于在多線程化核心之間協(xié)調(diào)的過程流;及
圖14描繪根據(jù)一個實(shí)施例的計算機(jī)可讀介質(zhì)。
具體實(shí)施方式
本文中所描述的實(shí)施例可用于減少多線程(MT)環(huán)境中的系統(tǒng)管理程序管理開銷。如本文所描述,多個線程的管理可在將多個線程作為單個邏輯核心管理的系統(tǒng)管理程序與在多個線程存取物理核心的資源時管理多個線程之間的交互的機(jī)器之間分割。此可通過允許系統(tǒng)管理程序基于邏輯核心管理許多的系統(tǒng)管理程序基礎(chǔ)設(shè)施資源及允許機(jī)器基于較細(xì)粒度線程管理其他資源而導(dǎo)致顯著減少多線程(MT)開銷成本。一個實(shí)施例包括可由在單個線程(ST)上運(yùn)行的系統(tǒng)管理程序執(zhí)行的核心分派指令。核心分派指令的執(zhí)行(在本文中稱為“指定MT的開始VE指令”)可引起構(gòu)成客體虛擬機(jī)(VM)的全部或一部分的多個客體邏輯線程待在單個物理核心上分派。在一實(shí)施例中,由系統(tǒng)管理程序用于分派客體的指令指定待分派的客體是單線程化還是多線程化的。
本文中所描述的實(shí)施例可包括用于管理多線程化邏輯核心的分派的結(jié)構(gòu),諸如用于指示客體邏輯核心內(nèi)的哪些邏輯線程當(dāng)前有效的線程有效性屏蔽及包括狀態(tài)描述環(huán)的狀態(tài)描述組。另外,主要及次要狀態(tài)描述及字段類型(例如,主要、核心共享、線程特定)可被實(shí)施為在具有多個線程的邏輯核心被分派時允許計算機(jī)資源的有效管理。另外,可提供邏輯核心內(nèi)的所有線程同時退出虛擬執(zhí)行的協(xié)調(diào)退出以簡化系統(tǒng)管理程序及邏輯核心管理功能兩者。
各實(shí)施例可包括由系統(tǒng)管理程序維護(hù)的在本文中稱為核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA)的控制結(jié)構(gòu)。COSCA由系統(tǒng)管理程序及機(jī)器兩者使用以管理可影響客體配置中的多個邏輯處理器的某些功能。COSCA的一個實(shí)施例被實(shí)現(xiàn)為樹狀結(jié)構(gòu),其中葉表示邏輯核心且每一葉含有對應(yīng)于該核心的線程的列表。COSCA結(jié)構(gòu)可含有允許系統(tǒng)管理程序容易地存取用于特定核心中的所有線程的狀態(tài)描述的字段(例如,狀態(tài)描述地址)。
如本文所用,術(shù)語“線程”指單個指令流及其相關(guān)聯(lián)狀態(tài)。亦即,在架構(gòu)級別處,每一邏輯線程表示獨(dú)立CPU或處理器。在硬件級別處,物理線程是當(dāng)邏輯線程被分派時結(jié)合維持該客體狀態(tài)而執(zhí)行與該邏輯線程相關(guān)聯(lián)的指令流。正是機(jī)器對該線程狀態(tài)的維護(hù)減少了在系統(tǒng)管理程序級別處所需的管理。可用于由邏輯核心使用的邏輯線程的總數(shù)受可用于物理核心的物理線程的總數(shù)限制。
如本文中所使用,術(shù)語“物理核心”指執(zhí)行一個或多個獨(dú)立指令流或線程但共享許多基本資源(諸如,執(zhí)行單元及低級別高速緩存)的硬件處理單元??梢远喾N方式進(jìn)行此共享,所述方式包括使每一線程在獨(dú)立時間使用相同硬件資源,或使資源被邏輯上共享,同時每一物理項被標(biāo)記線程識別符。線程(例如,常常需要資源A但僅很少需要資源B的一個線程及通常使用資源B而不使用資源A的另一線程)之間的適當(dāng)整合效果能夠改進(jìn)此共享的效率。如本文中所使用,術(shù)語“機(jī)器”指包括于物理核心中的硬件以及用于支持物理核心的毫碼及其他硬件。
如本文中所使用,術(shù)語“客體VM”及“客體”可互換地用以指可包括單個CPU或多個CPU的單個客體配置。如本文中所使用,術(shù)語“邏輯核心”指被定義以作為指定MT的開始VE指令的一部分而一起分派的邏輯客體線程或CPU的組??腕wVM可由單個邏輯核心(ST或MT)或多個邏輯核心(其中的每一者亦可為ST或MT)組成。
如本文中所使用,術(shù)語“軟件”指系統(tǒng)管理程序(例如,PR/SM或zVM)或客體操作系統(tǒng)或由于開始VE指令而分派的應(yīng)用程序。
如本文中所使用,術(shù)語“系統(tǒng)管理程序”及“主機(jī)”指管理系統(tǒng)資源且分派客體邏輯處理器以在物理硬件上執(zhí)行的程序。
用于分派客體點(diǎn)至狀態(tài)描述或狀態(tài)描述組的開始VE指令的操作數(shù)定義該客體處理器或核心的狀態(tài)。狀態(tài)描述自身具有指向可視為狀態(tài)描述的擴(kuò)展的“衛(wèi)星(satellite)塊”的指針且包括進(jìn)一步定義該客體核心或處理器的狀態(tài)的額外信息。如本文中所使用,術(shù)語“狀態(tài)描述”不僅指狀態(tài)描述自身而且指這些衛(wèi)星塊。圖12中描繪了核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA)(這些衛(wèi)星塊中的一者)。
現(xiàn)轉(zhuǎn)向圖1,大體展示可由例示性實(shí)施例實(shí)施的計算環(huán)境100。計算環(huán)境100可(例如)基于由國際商業(yè)機(jī)器公司(Armonk,New York)提供的z/Architecture。z/Architecture描述于2012年8月的題為“z/Architecture Principles of Operation”的公開(IBM公開第SA22-7832-09號)中,所述公開特此以全文引用的方式并入本文中。在一個實(shí)例中,基于z/Architecture的計算環(huán)境包括由國際商業(yè)機(jī)器公司(Armonk,New York)提供的eServer zSeries。
作為一個實(shí)例,計算環(huán)境100可包括耦合至系統(tǒng)控制器120的處理器復(fù)合體102。處理器復(fù)合體102可包括(例如)一個或多個分區(qū)104(例如,邏輯分區(qū)LP1至LPn)、一個或多個物理核心106(例如,核心1至核心m)及級別0系統(tǒng)管理程序108(例如,邏輯分區(qū)管理器),下文描述其中的每一者。
每一邏輯分區(qū)104能夠充當(dāng)單獨(dú)系統(tǒng)。亦即,每一邏輯分區(qū)104可被獨(dú)立地重設(shè),視需要最初加載有操作系統(tǒng)110且以不同程序操作。在邏輯分區(qū)104中運(yùn)行的操作系統(tǒng)110或應(yīng)用程序可看起來存取完全及完整系統(tǒng),但實(shí)際上存取僅其可獲得的一部分。硬件與許可內(nèi)部代碼(通常稱為微碼或毫碼或固件)的組合將程序保持在一個邏輯分區(qū)104中以免干擾不同邏輯分區(qū)104中的程序。這允許若干不同邏輯分區(qū)104以時間分片方式在單個或多個物理核心106上操作。在一實(shí)施例中,每一物理核心包括一個或多個中央處理器(在本文中亦稱為“物理線程”)。在圖1中所展示的實(shí)例中,每一邏輯分區(qū)104具有駐留操作系統(tǒng)110,其針對一個或多個邏輯分區(qū)104而可不同。在每一邏輯分區(qū)104中運(yùn)行的操作系統(tǒng)110為虛擬機(jī)或客體配置的一個實(shí)例。在一個實(shí)施例中,操作系統(tǒng)110為由國際商業(yè)機(jī)器公司(Armonk,New York)提供的操作系統(tǒng)。
物理核心106包括被分配至邏輯分區(qū)104的物理處理器資源。邏輯分區(qū)104可包括一個或多個邏輯處理器,其中的每一者表示分配至分區(qū)104的所有或一部分物理處理器資源。物理核心106可專用于特定分區(qū)104的邏輯核心,使得基礎(chǔ)核心106的物理處理器資源被保留用于該分區(qū)104;或與另一分區(qū)104的邏輯核心共享,使得基礎(chǔ)核心資源的物理處理器資源潛在地可用于另一分區(qū)104。
在圖1中所展示的實(shí)施例中,邏輯分區(qū)104由級別0系統(tǒng)管理程序108管理,所述級別0系統(tǒng)管理程序由在物理核心106上運(yùn)行的固件實(shí)施。邏輯分區(qū)104及系統(tǒng)管理程序108各自包括駐留在與物理核心106相關(guān)聯(lián)的中央存儲裝置(存儲器)的相應(yīng)部分中的一個或多個程序。系統(tǒng)管理程序108的一個實(shí)例為由國際商業(yè)機(jī)器公司(Armonk,New York)提供的Processor Resource/System Manager(PR/SMTM)。
在圖1中耦合至中央處理器復(fù)合體102的系統(tǒng)控制器120可包括負(fù)責(zé)在發(fā)出請求的不同處理器之間仲裁的集中式邏輯。舉例而言,當(dāng)系統(tǒng)控制器120接收存儲器存取請求時,其判定是否允許存取該存儲位置,且如果允許,則將存儲位置的內(nèi)容提供至中央處理器復(fù)合體102,同時維護(hù)該復(fù)合體內(nèi)的處理器之間的存儲器一致性。
現(xiàn)轉(zhuǎn)向圖2,大體展示根據(jù)一個實(shí)施例的用于實(shí)施機(jī)器或物理核心(諸如,圖1中的物理核心106)的處理電路200的方塊圖。處理電路200可包括在多處理環(huán)境中的多個物理核心中的一個物理核心。圖2中所展示的處理電路200包括可將處理電路200耦合至其他核心及外圍設(shè)備的系統(tǒng)控制器接口單元202。系統(tǒng)控制器接口單元202亦可將Dcache 204(其讀取及存儲數(shù)據(jù)值)、Icache 208(其讀取程序指令)及高速緩存接口單元206連接至外部存儲器、處理器及其他外圍設(shè)備。
Icache 208可結(jié)合指令取回單元(IFU)210提供指令流的加載,所述指令取回單元預(yù)先取回指令且可包括推測性加載及分支預(yù)測能力。可將所取回指令提供至指令解碼單元(IDU)212以用于解碼成指令處理數(shù)據(jù)。
IDU 212可將指令提供至發(fā)出單元214,所述發(fā)出單元可控制指令至各種執(zhí)行單元(諸如,用于執(zhí)行一般運(yùn)算的一個或多個定點(diǎn)單元(FXU)216及用于執(zhí)行浮點(diǎn)運(yùn)算的一個或多個浮點(diǎn)單元(FPU)218)的發(fā)出。FPU 218可包括二進(jìn)制浮點(diǎn)單元(BFU)220、十進(jìn)制浮點(diǎn)單元(DFU)222或任何其他浮點(diǎn)單元。發(fā)出單元214亦可經(jīng)由一個或多個LSU管線耦合至一個或多個加載/存儲單元(LSU)228。多個LSU管線被視為用于執(zhí)行加載及存儲以及用于分支的地址產(chǎn)生的執(zhí)行單元。LSU 228及IFU 210兩者可利用轉(zhuǎn)換后備緩沖器(TLB)230以提供用于操作數(shù)及指令地址的緩沖轉(zhuǎn)換。
FXU 216及FPU 218耦合至各種資源,諸如通用寄存器(GPR)224及浮點(diǎn)寄存器(FPR)226。GPR 224及FPR 226通過LSU 228提供用于自Dcache 204加載及存儲的數(shù)據(jù)值的數(shù)據(jù)值存儲。
現(xiàn)轉(zhuǎn)向圖3,大體展示可由一個實(shí)施例實(shí)施的計算環(huán)境300。圖3中所展示的計算環(huán)境300類似于圖1中所展示的計算環(huán)境100,外加在邏輯分區(qū)104(標(biāo)記為LP2)中執(zhí)行的級別1系統(tǒng)管理程序302。如圖3中所展示,級別1系統(tǒng)管理程序302可提供先前關(guān)于系統(tǒng)管理程序108(在本文中亦稱為“級別0系統(tǒng)管理程序”)描述的相同系統(tǒng)管理程序功能,諸如在標(biāo)記為LP2的邏輯分區(qū)104內(nèi)的多個操作系統(tǒng)(例如,在虛擬機(jī)VM1 304、VM2 306及VM3 308中運(yùn)行的OS1 314、OS2 312及OS3 310)之間的資源的透明時間分片及這些操作系統(tǒng)的彼此隔離。圖3中所展示的實(shí)施例包括作為實(shí)例的三個虛擬機(jī)且其他實(shí)施例可基于應(yīng)用需求而包括更多或更少虛擬機(jī)。
如圖3中所展示,標(biāo)記為LP1的邏輯分區(qū)104具有駐留操作系統(tǒng)110,且標(biāo)記為LP2的邏輯分區(qū)104運(yùn)行級別1系統(tǒng)管理程序302,級別1系統(tǒng)管理程序302繼而建立虛擬機(jī)304、306、308的級別1系統(tǒng)管理程序302,所述虛擬機(jī)中的每一者運(yùn)行其自身的駐留操作系統(tǒng)314、312、310。任何數(shù)目個邏輯分區(qū)104可運(yùn)行級別1系統(tǒng)管理程序302。在一實(shí)施例中,級別1系統(tǒng)管理程序302為由國際商業(yè)機(jī)器公司(Armonk,New York)提供的z/VM系統(tǒng)管理程序。在各種邏輯分區(qū)中運(yùn)行的常駐操作系統(tǒng)可不同,且當(dāng)在級別1系統(tǒng)管理程序302下運(yùn)行時,單個分區(qū)104(例如,LP2)內(nèi)的駐留操作系統(tǒng)(例如,操作系統(tǒng)314、312、310)亦可不同。在一實(shí)施例中,在標(biāo)記為LP1的邏輯分區(qū)104中的操作系統(tǒng)110為由國際商業(yè)機(jī)器公司(Armonk,New York)提供的z/OS操作系統(tǒng)。在一實(shí)施例中,操作系統(tǒng)310及312為Linux且操作系統(tǒng)314為z/OS。
當(dāng)級別1系統(tǒng)管理程序302在邏輯分區(qū)104中運(yùn)行時,其可將由級別0系統(tǒng)管理程序(諸如,系統(tǒng)管理程序108)提供至邏輯分區(qū)104的資源的相同虛擬化提供至在虛擬機(jī)308、306、304中運(yùn)行的操作系統(tǒng)310、312、314。當(dāng)在第一級別處時,每一虛擬機(jī)可包括多個虛擬處理器。
物理核心106包括可為專用或如針對圖1所描述在邏輯分區(qū)104LP1、LP2、LP3及LP4之間共享的物理處理器資源。當(dāng)在一個或多個物理核心上分派邏輯分區(qū)LP2時,級別1系統(tǒng)管理程序302可接著在其虛擬機(jī)VM1 304、VM2 306及VM3 308之間透明地共享這些資源。在一個實(shí)施例中,級別0系統(tǒng)管理程序108使用指定MT的開始VE指令來分派多線程化級別1系統(tǒng)管理程序302,所述多線程化級別1系統(tǒng)管理程序接著使用指定ST的開始VE指令來分派單線程化虛擬機(jī)VM1 304、VM2 306及VM3 308。在一不同實(shí)施例中,級別0系統(tǒng)管理程序108使用指定ST的開始VE指令來分派單線程化級別1系統(tǒng)管理程序302,所述單線程化級別1系統(tǒng)管理程序接著使用指定MT的開始VE指令來分派多線程化虛擬機(jī)VM1304、VM2 306及VM3 308。在另一實(shí)施例中,級別1系統(tǒng)管理程序302及其客體VM 304、306、308兩者皆為單線程化的。
在客體多處理(MP)環(huán)境中,系統(tǒng)管理程序可維護(hù)被稱為系統(tǒng)控制區(qū)(SCA)的控制結(jié)構(gòu),其由系統(tǒng)管理程序及機(jī)器兩者使用以管理可影響客體配置中的多個邏輯處理器的某些功能。針對配置或虛擬機(jī)中的所有客體處理器,在狀態(tài)描述中指定相同SCA起點(diǎn)(SCAO)。在一實(shí)施例中,此區(qū)可包括公用區(qū)(一般用于協(xié)調(diào)全客體配置功能)及單獨(dú)處理器特定的項。公用區(qū)(例如)保存關(guān)于客體配置內(nèi)的哪些虛擬處理器有效的信息。SCA內(nèi)的單獨(dú)處理器特定的區(qū)可(例如)用于解釋或仿真處理器間客體功能(諸如,處理器間中斷)或容易地提供指向每一邏輯處理器的相應(yīng)狀態(tài)描述的可存取指針。在一實(shí)施例中,用于ST的SCA通過針對每一潛在客體線程添加額外線程特定的項而擴(kuò)展以供MT使用。
核心分派的一個實(shí)施例可允許在單個線程上運(yùn)行的系統(tǒng)管理程序使用開始VE指令的變體(有時被稱為開始多線程化虛擬執(zhí)行(開始MVE))在其核心上分派多線程化客體。在多線程化客體中的每一線程可表示客體邏輯中央處理單元(CPU),或客體線程。開始VE指令能夠經(jīng)由狀態(tài)描述中的控制字段啟用在物理核心上的多線程(MT)客體執(zhí)行。當(dāng)用于核心分派時,開始VE指令的操作數(shù)可指定含有所有客體線程的狀態(tài)的單個狀態(tài)描述或各自(例如)表示單個客體線程的狀態(tài)的一組狀態(tài)描述。在一實(shí)施例中,邏輯核心包括該組狀態(tài)描述。核心分派需要虛擬執(zhí)行進(jìn)入以將邏輯核心及這些客體邏輯線程中的每一者的狀態(tài)加載至物理核心線程及其線程中。這些線程可為彼此獨(dú)立地操作的指令流。在各種實(shí)施例中,可以若干方式指定狀態(tài)描述組,包括指定為彼此的固定偏移、指定為狀態(tài)描述地址或狀態(tài)描述的列表、或指定為適用于核心的狀態(tài)描述的循環(huán)列表(環(huán)),其中該組中的每一狀態(tài)描述表示單獨(dú)客體線程。此類技術(shù)允許系統(tǒng)管理程序及機(jī)器容易存取邏輯核心內(nèi)的其他線程且允許適用于整個邏輯核心的字段被保持在單個位置中。
客體OS可通過發(fā)出啟用客體中的多線程的MT設(shè)定指令簡單地利用多線程。這允許客體OS將這些新線程視為額外獨(dú)立CPU且如這些新線程在不存在多線程化的情況下來管理它們。另外,客體OS可以以利用這些線程共享核心的事實(shí)的方式使用這些線程,或客體OS可使這些線程以相互更相依方式操作。這對于系統(tǒng)管理程序及機(jī)器為全部透明的。系統(tǒng)管理程序接著將這些額外線程提供至客體OS,同時系統(tǒng)管理程序自身繼續(xù)每核心在單個線程上運(yùn)行且基于核心管理客體MT環(huán)境中的許多部分。在同時申請的題為“Thread Context Preservation in a Multithreading Computer System”的美國專利申請案號POU920140064US1中更詳細(xì)地描述多線程的OS啟用,該申請的內(nèi)容以全文引用的方式并入本文中。
在核心分派的一個實(shí)施例中,指定為指定MT的開始VE指令的操作數(shù)的狀態(tài)描述為“主要”狀態(tài)描述且相關(guān)聯(lián)的客體邏輯線程為“主要”線程。組中的其他狀態(tài)描述在本文中被稱為“次要”狀態(tài)描述,且如果適用,則適用于次要邏輯線程。當(dāng)狀態(tài)描述組被實(shí)施為列表或環(huán)時,主要狀態(tài)描述中可存在指向第一次要狀態(tài)描述的下一狀態(tài)描述(NSD)字段,第一次要狀態(tài)描述繼而1)指向組中的下一次要狀態(tài)描述或2)含有指示組的結(jié)束的值。列表中的最后狀態(tài)描述中的NSD值可為主要狀態(tài)描述的地址,在此狀況下,列表形成狀態(tài)描述環(huán)。
在非MT實(shí)現(xiàn)中,系統(tǒng)管理程序每次在給定物理核心上分派一個客體邏輯處理器(在本文中亦被稱為“邏輯線程”)。如果特定邏輯處理器處于無效狀態(tài)(例如,在停止?fàn)顟B(tài)下或在停用等待中),則系統(tǒng)管理程序?qū)⒉环峙稍摽腕w。在MT環(huán)境中,核心分派允許系統(tǒng)管理程序同時在核心上分派多個客體線程。為了適應(yīng)該邏輯核心的狀態(tài)描述組中的線程中的一者或多者無效的可能性,一個實(shí)施例利用主要狀態(tài)描述中的線程有效性屏蔽(TVM),自軟件觀點(diǎn),其中的每一位指示組中的對應(yīng)狀態(tài)描述中的邏輯線程的有效性。
在另一實(shí)施例中,僅將有效線程包括在狀態(tài)描述組中且有效性指示為不必要的。在狀態(tài)描述組中包括無效邏輯線程的一個實(shí)施例允許系統(tǒng)管理程序維護(hù)與這些無效線程相關(guān)聯(lián)的狀態(tài)且這些線程可在將來再次變得有效。機(jī)器將僅初始化且運(yùn)行具有有效狀態(tài)的這些線程。如果組中的至少一個線程為有效的,則系統(tǒng)管理程序?qū)H分派一個客體邏輯核心。
現(xiàn)轉(zhuǎn)向圖4,大體展示根據(jù)一個實(shí)施例的包括客體的架構(gòu)狀態(tài)的大部分的邏輯線程的狀態(tài)描述。在此上下文中,術(shù)語“狀態(tài)描述”不僅包括狀態(tài)描述自身而且包括充當(dāng)擴(kuò)展的衛(wèi)星塊,其指針駐留于狀態(tài)描述中。如圖4中所展示,狀態(tài)描述400可包括客體通用寄存器(GR)402、存取寄存器(AR)404、控制寄存器(CR)406、客體定時器408(包括時鐘比較器及CPU定時器)、客體前綴寄存器410、虛擬CPU編號(VCN)412、程序狀態(tài)字(PSW)及指令地址(IA)414。另外,狀態(tài)描述可包括控制信息,諸如攔截控制(IC)位420,其用以指示某些指令(例如,加載程序狀態(tài)字(LPSW)及失效頁表項(IPTE))是否需要攔截主機(jī)或在客體指令執(zhí)行可開始之前是否需要清空客體轉(zhuǎn)換后備緩沖器(TLB)。狀態(tài)描述亦含有用于定義如圖6至圖9中所描述的狀態(tài)描述列表及環(huán)的下一狀態(tài)描述(NSD)422。主要狀態(tài)描述亦包括如圖5中所描述的TVM 430及邏輯分區(qū)編號(LPN)432。虛擬CPU編號(VCN)412等效于CPU編號,可被調(diào)節(jié)以包括MT模式中的線程編號,如2014年3月27日申請的題為“Address Expansion and Contraction in a Multithreading Computer System”的美國專利申請14/226947中所描述,所述申請的內(nèi)容以全文引用的方式并入本文中。
核心內(nèi)的線程可由二進(jìn)制線程標(biāo)識符(TID)識別。為簡潔起見,在以下各圖中,線程x常常通過術(shù)語TIDx來引用,所述術(shù)語在此狀況下含義為“具有TID x的線程”。
現(xiàn)參看圖5,大體展示根據(jù)一個實(shí)施例的線程有效性屏蔽(TVM)520的方塊圖。如圖5中所展示,TVM 520的位0 530表示狀態(tài)描述組中的邏輯線程0的有效性,位1 531表示線程1的有效性,位2 532表示線程2的有效性,位3 533表示線程3的有效性,等等,直至表示線程n(與此核心相關(guān)聯(lián)的狀態(tài)描述組中的最后可能邏輯線程)的有效性的位n 537。TVM可駐留于該組的主要狀態(tài)描述中。
現(xiàn)轉(zhuǎn)向圖6,大體展示根據(jù)一個實(shí)施例的固定偏移狀態(tài)描述組結(jié)構(gòu)。如圖6中所展示,在彼此的固定偏移(N)處指定狀態(tài)描述組。在此狀況下,開始VE指令的操作數(shù)602指向邏輯線程0的主要狀態(tài)描述603。邏輯線程x的次要狀態(tài)描述605位于主要狀態(tài)描述之后N個字節(jié)的固定偏移處,且邏輯線程y的次要狀態(tài)描述607位于線程x的次要狀態(tài)描述之后N個字節(jié)處。對于組中的所有線程,此情形繼續(xù)??梢砸匀舾煞绞酱_定組中的線程的數(shù)目,包括藉由主要狀態(tài)描述中的計數(shù)或藉由在列表中的最后狀態(tài)描述地址之后的結(jié)束標(biāo)記。
圖6可表示兩種狀況,第一狀況為組包括組中的所有邏輯線程(無論其是否有效)的狀態(tài)描述的狀況,且第二狀況為僅有效狀態(tài)描述被包括在組中的狀況。在第一狀況下,線程x的狀態(tài)描述605表示線程1的狀態(tài),且線程y的狀態(tài)描述607表示線程2的狀態(tài)。僅在此第一狀況下需要的TVM 620表示這些邏輯線程中的每一者的有效性。在第二狀況下,線程x的狀態(tài)描述605表示第一有效的邏輯次要線程的狀態(tài),且邏輯線程y的狀態(tài)描述607表示第二有效的次要線程的狀態(tài)。舉例而言,如果線程1并不有效且線程2及3皆有效的,則線程x 605將表示線程2且線程y 607將表示線程3。將不存在包括于組中的線程1的狀態(tài)描述,這是因?yàn)榫€程1為無效的。這相同的兩種狀況亦可適用于以下圖7至圖9中所示的實(shí)施例,然而僅描述及圖示狀況1。
現(xiàn)轉(zhuǎn)向圖7,大體展示根據(jù)一個實(shí)施例的被指定為列表的狀態(tài)描述組結(jié)構(gòu)。在此狀況下,開始VE指令的操作數(shù)702表示狀態(tài)描述地址的列表,其中所述列表中的第一項704指向線程0的主要狀態(tài)描述705,所述列表中的第二項706指向線程1的次要狀態(tài)描述707,所述列表中的第三項708指向線程2的次要狀態(tài)描述709,等等,針對組中的所有線程繼續(xù)。TVM 720表示這些線程中的每一者的有效性。
現(xiàn)轉(zhuǎn)向圖8,大體展示根據(jù)一個實(shí)施例的被指定為鏈接列表的狀態(tài)描述組結(jié)構(gòu)。在此狀況下,如在圖6中所描繪的狀況下,開始VE指令的操作數(shù)802指向線程0的主要狀態(tài)描述803,但實(shí)際上用于線程1的次要狀態(tài)描述805的指針804被提供為主要狀態(tài)描述中的下一狀態(tài)描述(NSD)字段804。繼而,用于線程2的次要狀態(tài)描述807的指針806被提供為線程1的次要狀態(tài)描述中的NSD 806。針對組中的所有線程,此情形將繼續(xù),其中最后線程n的狀態(tài)描述809中的NSD 810被指定為0或指示列表結(jié)尾的某一其他獨(dú)特值。在主要狀態(tài)描述803中提供的TVM 820表示這些線程中的每一者的有效性。
現(xiàn)轉(zhuǎn)向圖9,大體展示根據(jù)一個實(shí)施例的被指定為循環(huán)列表或環(huán)的狀態(tài)描述組結(jié)構(gòu)。此狀況等同于圖8中所展示的狀況,因?yàn)殚_始VE指令的操作數(shù)902指向線程0的主要狀態(tài)描述903,其含有用于線程1的次要狀態(tài)描述905的NSD 904,所述次要狀態(tài)描述含有用于線程2的次要狀態(tài)描述907的NSD 906,且針對所有線程此情形繼續(xù)直至最后線程n。然而,在圖9中所展示的實(shí)施例中,在線程n的狀態(tài)描述909中的NSD 910形成循環(huán)列表且指回至主要狀態(tài)描述903。在主要狀態(tài)描述903中提供的TVM 920表示這些線程中的每一者的有效性。
核心分派允許系統(tǒng)管理程序管理在核心級別處的邏輯線程的許多方面。核心分派不僅常常通過將核心的多個線程的虛擬執(zhí)行的協(xié)調(diào)推送至機(jī)器中而簡化線程管理所需的系統(tǒng)管理程序代碼,而且其可減少管理配置中的更多處理器所需的開銷。用于邏輯分區(qū)(或客體)的優(yōu)先級管理可繼續(xù)在邏輯核心級別處進(jìn)行,從而減少此類管理上的按比例調(diào)整壓力。系統(tǒng)管理程序自身仍需要管理與邏輯核心相關(guān)聯(lián)的線程集合以確保在重新發(fā)出開始VE指令之前其需求(諸如,指令攔截)全部被滿足。
現(xiàn)參看圖10,大體展示根據(jù)一個實(shí)施例的核心分派過程。如圖10中所展示,系統(tǒng)管理程序正在物理核心N 1010及物理線程A 1020上單線程化地運(yùn)行。在塊1022中,系統(tǒng)管理程序發(fā)出指定MT的開始VE指令以分派多線程化客體核心。機(jī)器判定客體為多線程化的,且在塊1024中,使物理線程B及C可用于運(yùn)行軟件。機(jī)器將客體狀態(tài)自線程中的每一者的狀態(tài)描述加載至對應(yīng)物理線程中。在圖10中所描繪的實(shí)施例中,機(jī)器使用多個物理線程以執(zhí)行此功能,亦即,在物理線程A 1020上運(yùn)行的毫碼將客體邏輯線程X的狀態(tài)加載至物理線程A中,如塊1026中所展示。同樣地,在物理線程B 1040及C 1060上運(yùn)行的毫碼將客體邏輯線程Y及Z的狀態(tài)加載至物理線程B及C中,如塊1046及1066中所展示。一旦客體狀態(tài)已加載,在客體邏輯線程X、Y及Z上運(yùn)行的軟件便在物理線程A、B及C上執(zhí)行,如塊1028、1048及1068中所展示。
現(xiàn)參看圖11,大體展示根據(jù)一個實(shí)施例的自虛擬執(zhí)行的協(xié)調(diào)退出。如圖11中所展示,客體邏輯線程X、Y及Z正在物理線程A 1120、B 1140及C 1160上執(zhí)行客體軟件,如塊1128、1148及1168中所指示。一個或多個客體線程判定需要自虛擬執(zhí)行的退出。參看圖11,在物理線程B 1140上運(yùn)行的客體邏輯線程Y判定其必須退出虛擬執(zhí)行(如塊1150中所展示),從而使機(jī)器用信號通知物理線程A 1120及C 1160退出虛擬執(zhí)行,如塊1152中所展示。在塊1136、1154及1174中,在物理線程中的每一者上運(yùn)行的毫碼協(xié)調(diào)自虛擬執(zhí)行的退出且接著使物理線程B 1140及C 1160不可用于由軟件使用,如塊1156及1176中所指示。物理線程A 1120上的毫碼將主機(jī)狀態(tài)重載至硬件中(如塊1138中所展示),這導(dǎo)致系統(tǒng)管理程序軟件在物理線程A上的執(zhí)行,如塊1140中所展示。系統(tǒng)管理程序接著將按需處理任何待決客體攔截及主機(jī)中斷。
圖12描繪根據(jù)一個實(shí)施例的用于包括多個邏輯核心的單個客體配置的核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA)的方塊圖。圖12中所展示的COSCA可用于提供核心內(nèi)的邏輯線程之間的協(xié)調(diào)及不同核心上的邏輯線程之間的協(xié)調(diào)兩者。COSCA可包括具有指針的表示整個客體配置的公用區(qū),每一邏輯核心一個指針以便分離核心描述區(qū)。每一核心描述包括表示該核心的公用區(qū)及用于該核心的一系列鄰接的單獨(dú)線程特定區(qū)或線程描述。在另一實(shí)施例中,核心描述提供線程描述的位置。所提供位置可為隱含的(例如,它們?yōu)榘诤诵拿枋鲋械牧斜?,或它們可在與核心描述相連的存儲塊中)。在其他實(shí)施例中,可提供指向含有線程描述的其他存儲位置的指針。如本文中所使用,術(shù)語“指示位置”用于指確定項目(例如,線程描述或COSCA中的其他元素)的位置的這些方式中的任一者,或任何額外方式。此結(jié)構(gòu)維護(hù)MT客體配置的樹狀表示,其促進(jìn)(特定言之,在系統(tǒng)管理程序級別處)在一些情景下基于核心來管理事物,但其他情景下基于線程或處理器來管理事物。
可在客體配置內(nèi)的所有客體線程的狀態(tài)描述中的SCA起點(diǎn)(SCAO)字段中提供相同COSCA起點(diǎn)(COSCAO),且可針對給定核心內(nèi)的所有線程提供相同核心描述區(qū)地址(CDAA)。此實(shí)施例的優(yōu)點(diǎn)為其不需要一些系統(tǒng)管理程序可能難以提供的那樣多的鄰接實(shí)際存儲空間。另一實(shí)施例可添加額外間接層且使每一核心描述包括用于每一線程特定區(qū)的指針的列表,從而使含有這些區(qū)的控制塊無需是鄰接的。
現(xiàn)參看圖12,大體展示用于包括兩個邏輯核心(每一核心中具有三個邏輯線程)的單個客體配置的COSCA的一個實(shí)例實(shí)施例。在一實(shí)施例中,COSCA包括COSCA公用區(qū)1260(在圖12中展示為“COSCACA 1260”)、核心描述區(qū)1270及核心描述區(qū)1280的內(nèi)容。將與邏輯核心0相關(guān)聯(lián)的狀態(tài)描述組的主要狀態(tài)描述1203指定為由系統(tǒng)管理程序使用以分派客體核心0的開始VE指令的操作數(shù)1202。另外,將與邏輯核心1相關(guān)聯(lián)的狀態(tài)描述組的主要狀態(tài)描述1233指定為用于分派核心1的開始VE指令的操作數(shù)1232?!昂诵?線程0”的此主要狀態(tài)描述1203含有NSD01 1205,其指向核心0線程1的次要狀態(tài)描述1213,所述次要狀態(tài)描述繼而含有指向組中的核心0線程2的最終次要狀態(tài)描述1223的NSD02 1215。類似地,邏輯核心1的狀態(tài)描述組以核心1線程0的主要狀態(tài)描述1233開始,所述主要狀態(tài)描述含有指向核心1線程1的次要狀態(tài)描述1243的NSD11 1235,所述次要狀態(tài)描述含有指向核心1線程2的最終次要狀態(tài)描述1253的NSD12 1245。此客體配置中的所有六個線程的狀態(tài)描述1203、1213、1223、1233、1243、1253在SCAO 1204、1214、1224、1234、1244、1254中包含相同值,其指向COSCA公用區(qū)1260。
如圖12中所展示的COSCA公用區(qū)1260含有用以協(xié)調(diào)全客體配置功能的核心級別信息。COSCA公用區(qū)1260包括指示客體配置內(nèi)的每一邏輯核心的有效性的SCA核心有效性屏蔽(SCVM)1261,且亦包括每一核心的核心描述區(qū)地址(CDAA)1262、1264。SCVM中的位及核心描述地址的陣列兩者可通過核心編號來編制索引。指向核心0的核心描述區(qū)(CDA)1270的CDAA0 1262包括于COSCA公用區(qū)1260中。另外,核心0中的所有線程的狀態(tài)描述中的CDAA字段1206、1216、1226亦指向核心0的CDA 1270。指向核心1的CDA 1280的CDAA1 1264亦包括于COSCA公用區(qū)1260中,且同樣地,核心1中的所有線程的狀態(tài)描述中的CDAA字段1236、1246、1256亦指向核心1的CDA 1280。核心0的核心描述區(qū)(CDA)1270含有指示核心0內(nèi)的每一邏輯線程的有效性的SCA線程有效性屏蔽(STVM0)1271。其亦含有核心0線程0的線程描述區(qū)1272、核心0線程1的線程描述區(qū)1274及核心0線程2的線程描述區(qū)1276。核心1的CDA1280類似地含有STVM1 1281以及核心1線程0的線程描述區(qū)1282、核心1線程1的線程描述區(qū)1284及核心1線程2的線程描述區(qū)1286。這些線程描述區(qū)1272、1274、1276、1282、1284、1286中的每一者含有用于對應(yīng)于該線程描述區(qū)的線程(分別為核心0線程0、核心0線程1、核心0線程2、核心1線程0、核心1線程1及核心1線程2)的狀態(tài)描述地址(SDA)1273、1275、1277、1283、1285、1287。STVM中的位及線程描述區(qū)的陣列兩者可通過線程標(biāo)識來編制索引。這些SDA使系統(tǒng)管理程序更容易管理核心內(nèi)的線程且使機(jī)器更容易呈現(xiàn)客體處理器間中斷。
圖13描繪根據(jù)一個實(shí)施例的用于管理多線程化核心的過程流,其使用圖12中所展示的COSCA。在圖13中所展示的實(shí)例中,在塊1302處,在第一物理線程(例如,由狀態(tài)描述1213定義的核心0線程1)上運(yùn)行的客體操作系統(tǒng)(OS)已確定其將用信號通知第二邏輯線程或目標(biāo)線程(例如,由狀態(tài)描述1253定義的核心1線程2)。在塊1304處,客體OS(例如)通過發(fā)出處理器間中斷指令執(zhí)行此操作。作為執(zhí)行處理器間中斷指令的一部分,機(jī)器使用COSCA來仿真客體處理器間中斷指令。因?yàn)榘繕?biāo)邏輯線程的邏輯核心在發(fā)信號進(jìn)行時可能或可能未被分派,所以由機(jī)器仿真處理器間中斷指令。在塊1306處,機(jī)器定位(例如,經(jīng)由SCA0 1214,這是因?yàn)樘幚砥鏖g中斷指令由邏輯核心0線程1執(zhí)行)用于客體配置的公用區(qū)(例如,COSCA公用區(qū)1260),以便存取SCVM(例如,SCVM 1261)以檢驗(yàn)?zāi)繕?biāo)核心的有效性且獲得適當(dāng)CDAA(例如,CDAA1 1264,這是因?yàn)槟繕?biāo)線程系在核心1上)。
接下來,在塊1308處,機(jī)器定位(例如,經(jīng)由CDA1 1264)用于目標(biāo)核心的核心描述區(qū)(例如,CDA 1280)。機(jī)器通過存取核心描述區(qū)中的STVM(例如,CDA 1280中的STVM1 1281)而檢驗(yàn)?zāi)繕?biāo)線程為有效的。在塊1310處,機(jī)器定位線程描述區(qū)(例如,對應(yīng)于線程2的線程描述區(qū)1286,這是因?yàn)槟繕?biāo)線程為線程2)。在塊1312處,將關(guān)于中斷的信息記錄在用于目標(biāo)線程的線程描述區(qū)中(例如,其將發(fā)送線程的身份放置至線程描述區(qū)1286中)。在塊1314處,機(jī)器定位(例如,經(jīng)由線程描述區(qū)1286中的SDA12 1287)目標(biāo)線程的狀態(tài)描述(例如,核心1TID2的次要狀態(tài)描述1253)。在塊1316處,使中斷在目標(biāo)狀態(tài)描述中待決(例如,在核心1TID2的狀態(tài)描述1253中設(shè)定IP位1257)。因此,當(dāng)目標(biāo)邏輯處理器(例如,核心1線程2)被分派在物理線程上且被啟用以用于中斷時,機(jī)器將向客體操作系統(tǒng)呈現(xiàn)中斷(在啟用情況下)。如果目標(biāo)邏輯處理器已在中斷變?yōu)榇龥Q時被分派,則一旦其被啟用,其便將采取中斷。
存在機(jī)器亦可利用邏輯核心內(nèi)的線程具有共同屬性的事實(shí)的情況。舉例而言,核心分派自然地適于使邏輯核心上的所有客體線程駐留在同一LPAR區(qū)或分區(qū)中。該設(shè)計可通過僅必須每核心一個地而非每線程一個地實(shí)施與該分區(qū)相關(guān)聯(lián)的事物來最小化硬件。另外,亦可簡化復(fù)雜的控制邏輯(例如,全系統(tǒng)中斷的處置),這是因?yàn)槠浔仨殐H處理單個核心值。
在一個實(shí)施例中,表示多線程化客體的狀態(tài)描述的組中的每一字段(或字段內(nèi)的位)被分類為主要、核心公用或線程特定。主要字段僅駐留在主要狀態(tài)描述中且適用于邏輯核心中的所有處理器;代表核心的任何線程對主要字段的任何存取必須使用來自相關(guān)聯(lián)主要狀態(tài)描述的值。此分類用于定義核心的總狀態(tài)(諸如,線程有效性屏蔽)的字段。核心公用字段在邏輯核心內(nèi)的所有處理器當(dāng)中是公用的且此字段在組中的每一狀態(tài)描述中具有相同值;代表處理器對這些字段中的一者的任何存取可使用來自該組中的任何狀態(tài)描述的值。此分類用于在整個核心上應(yīng)用的字段,諸如LP編號。需要系統(tǒng)管理程序維護(hù)在所有狀態(tài)描述中的核心公用字段,但允許機(jī)器存取任何線程的狀態(tài)描述中的此字段,無論哪個提供最佳性能。因?yàn)檫@些字段并不由系統(tǒng)管理程序常常改變但常常由機(jī)器每次進(jìn)入虛擬執(zhí)行時存取,所以將字段定義為核心公用而非線程特定的允許虛擬執(zhí)行進(jìn)入(例如)以使用主要狀態(tài)描述中的值自主要線程加載次要線程工具。線程特定字段對每一邏輯線程為特定的;代表任何給定線程對這些字段中的一者的任何存取必須使用來自該線程的狀態(tài)描述的值。此分類用于在線程之間通常是獨(dú)特的字段,諸如客體前綴。
在一實(shí)施例中,為了支持核心分派的使用及單線程化地運(yùn)行的系統(tǒng)管理程序,可提供自虛擬執(zhí)行的協(xié)調(diào)退出(VE退出),其中給定核心中的所有客體線程同時退回至ST主機(jī)。在協(xié)調(diào)VE退出的情形中,VE退出的類型可劃分成三種類別:(1)與主機(jī)操作有關(guān)的主機(jī)中斷;(2)與客體操作有關(guān)的主機(jī)中斷;及(3)客體攔截。主機(jī)外部I/O及一些機(jī)器檢查中斷屬于VE退出類別(1)。對于此狀況,需要所有客體線程退出虛擬執(zhí)行模式,以便允許主機(jī)處置中斷。此中斷將可能引起主機(jī)分派不同客體。如果在以虛擬執(zhí)行模式運(yùn)行時發(fā)生中斷,則可在所有線程上檢測到主機(jī)中斷,使得所有線程可退出虛擬執(zhí)行模式,或可在單個線程上檢測到主機(jī)中斷,所述單個線程接著用信號通知其他線程它們是否應(yīng)退出。
VE退出類別(2)(與客體有關(guān)的主機(jī)中斷)可包括一些機(jī)器檢查中斷(諸如,不可糾正的存儲錯誤)。在非多線程化情景下,這些條件作為主機(jī)中斷來呈現(xiàn)。在核心分派情況下,僅存在一個主機(jī)線程,但因?yàn)檫@些異常與客體操作有關(guān),所以多個客體線程針對同一主機(jī)中斷檢測到相異及不同的原因是可能的。為適應(yīng)此情形,對于核心分派,在適當(dāng)時,將這些主機(jī)中斷替代地呈現(xiàn)于對應(yīng)客體狀態(tài)描述中作為新類型的客體攔截且與下文所描述的類別(3)相同地處置。在一實(shí)施例中,歸因于客體存儲器引用而產(chǎn)生的主機(jī)地址轉(zhuǎn)換錯誤中斷亦屬于類別(2),且可呈現(xiàn)為另一新類型的客體攔截。
對于VE退出類別(2)及(3)兩者(上述),客體攔截(甚至在客體多線程化環(huán)境中)與單個客體線程有關(guān)且獨(dú)立于另一線程的客體執(zhí)行。進(jìn)一步可能的,多個客體線程同時認(rèn)識到此類條件,需要主機(jī)處置它們中的全部。通常,當(dāng)呈現(xiàn)有攔截時,主機(jī)將仿真代表客體的一些行為且接著重新分派該同一客體。對于這些狀況,因?yàn)橹鳈C(jī)正單個線程化地運(yùn)行,所以所有客體線程必須在主機(jī)可處置攔截(多個)之前退出虛擬執(zhí)行模式。這可通過等待所有線程自然地退出或通過在一個線程已判定其必須攔截回至主機(jī)時用信號通知其他線程退出而實(shí)現(xiàn)。此被稱為“協(xié)調(diào)VE退出”。
當(dāng)每一線程判定其必須退出虛擬執(zhí)行模式時,其進(jìn)入VE退出,且在初始VE退出同步循環(huán)中等待,直至所有其他有效線程亦準(zhǔn)備退出。如果實(shí)施需要,則其用信號通知其他線程在進(jìn)入此同步循環(huán)之前退出。當(dāng)在VE退出同步循環(huán)中時,僅處置最少中斷。為了考慮在無主機(jī)中斷且無客體攔截應(yīng)用時需要客體線程退出虛擬執(zhí)行模式的情景,定義“無動作”攔截以向主機(jī)指示不需要代表此客體的攔截動作。
一旦所有線程已進(jìn)入初始VE退出同步循環(huán),客體數(shù)據(jù)在所有有效狀態(tài)描述中的存儲便可完成。亦即,駐留于硬件中的當(dāng)前客體狀態(tài)被保存在對應(yīng)狀態(tài)描述中,此邏輯客體線程因此可在稍后被重新分派。在此存儲完成之后需要最終VE退出同步點(diǎn)以保證對次要線程狀態(tài)描述的所有更新在控制返回至系統(tǒng)管理程序(其通常在主要線程上運(yùn)行)之前完成。一旦VE退出完成,系統(tǒng)管理程序便可處理環(huán)中的每一線程以判定是否呈現(xiàn)攔截,且如果呈現(xiàn),則適當(dāng)?shù)靥幹脭r截。在如此進(jìn)行之后,其可接著在物理處理器上重新分派此同一客體邏輯核心或不同客體邏輯核心。
技術(shù)效果及益處包括在VM配置中提供對主機(jī)(例如,系統(tǒng)管理程序)的線程管理支持。COSCA可用于通過允許主機(jī)容易地存取VM配置中的所有線程的狀態(tài)描述來輔助管理。
各實(shí)施例包括一種提供用于管理計算機(jī)中的多個線程的控制區(qū)的系統(tǒng)、方法及計算機(jī)程序產(chǎn)品。根據(jù)一個方面,一種計算機(jī)系統(tǒng)包括虛擬機(jī)(VM)配置,其具有一個或多個核心,其中每個核心被啟用以在單線程(ST)模式或多線程(MT)模式中操作。所述ST模式由單個線程構(gòu)成,且所述MT模式由在相應(yīng)核心的共享資源上的多個線程構(gòu)成。所述計算機(jī)系統(tǒng)還包括核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA),其具有表示所述VM配置的所有所述一個或多個核心的公用區(qū)及針對所述VM配置中的所述一個或多個核心中的每個核心的單獨(dú)核心描述區(qū)。每個核心描述區(qū)指示均表示所述相應(yīng)核心內(nèi)的線程的一個或多個線程描述區(qū)的位置,且每個線程描述區(qū)指示相應(yīng)線程的狀態(tài)描述的位置。所述計算機(jī)系統(tǒng)還包括一種工具,其被配置為控制所述配置以執(zhí)行一種方法。所述方法包括:基于所述COSCA的內(nèi)容來管理所述VM配置的所述一個或多個核心的線程。
根據(jù)另一方面,提供一種用于管理虛擬機(jī)(VM)配置中的多個線程的計算機(jī)實(shí)施的方法。所述配置包括一個或多個核心,其中每個核心被啟用以在單線程(ST)模式或多線程(MT)模式中操作。所述ST模式由單個線程構(gòu)成,且所述MT模式由在相應(yīng)核心的共享資源上的多個線程構(gòu)成。所述方法包括提供核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA),其具有表示所述VM配置的所有所述一個或多個核心的公用區(qū)及針對所述VM配置中的所述一個或多個核心中的每個核心的單獨(dú)核心描述區(qū)。每個核心描述區(qū)指示均表示所述相應(yīng)核心內(nèi)的線程的一個或多個線程描述區(qū)的位置,且每個線程描述區(qū)指示相應(yīng)線程的狀態(tài)描述的位置。所述方法進(jìn)一步包括由核心基于所述COSCA的內(nèi)容來管理所述VM配置的所述一個或多個核心的線程。
另一方面包括一種用于管理虛擬機(jī)(VM)配置中的多個線程的計算機(jī)程序產(chǎn)品,所述配置包括一個或多個核心,其中每個核心被啟用以在單線程(ST)模式或多線程(MT)模式中操作。所述ST模式由單個線程構(gòu)成,且所述MT模式由在相應(yīng)核心的共享資源上的多個線程構(gòu)成,所述計算機(jī)程序產(chǎn)品包括:體現(xiàn)有程序指令的計算機(jī)可讀存儲介質(zhì),其中所述計算機(jī)可讀存儲介質(zhì)并非信號,所述程序指令可由處理電路讀取以使所述處理電路執(zhí)行一種方法。所述方法包括提供核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA),其具有表示所述VM配置的所有所述一個或多個核心的公用區(qū)及針對所述VM配置中的所述一個或多個核心中的每個核心的單獨(dú)核心描述區(qū)。每個核心描述區(qū)指示均表示所述相應(yīng)核心內(nèi)的線程的一個或多個線程描述區(qū)的位置,且每個線程描述區(qū)指示相應(yīng)線程的狀態(tài)描述的位置。所述方法進(jìn)一步包括由核心基于所述COSCA的內(nèi)容來管理所述VM配置的所述一個或多個核心的線程。
除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述公用區(qū)進(jìn)一步指示所述一個或多個核心的一個或多個所述單獨(dú)核心描述區(qū)的位置。
除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述公用區(qū)進(jìn)一步包括指示所述一個或多個核心的有效性的核心有效性屏蔽。
除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述核心描述區(qū)進(jìn)一步包括指示與核心相關(guān)聯(lián)的一個或多個線程的有效性的線程有效性屏蔽。
除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中以下各者中的至少一者:所述核心描述區(qū)中的每一者進(jìn)一步指示所述公用區(qū)的位置;所述狀態(tài)描述中的每一者進(jìn)一步指示所述相應(yīng)線程的線程描述區(qū)的位置;所述線程描述區(qū)中的每一者進(jìn)一步指示所述相應(yīng)核心的核心描述區(qū)的位置;及所述線程描述區(qū)中的每一者進(jìn)一步指示所述公用區(qū)的位置。
除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中一個或多個所述狀態(tài)描述中的每一者進(jìn)一步指示所述公用區(qū)的位置。
除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括所述公用區(qū)進(jìn)一步指示所述一個或多個核心的一個或多個所述單獨(dú)核心描述區(qū)的位置;所述公用區(qū)進(jìn)一步包括指示所述一個或多個核心的有效性的核心有效性屏蔽;且所述核心描述區(qū)進(jìn)一步包括指示與核心相關(guān)聯(lián)的一個或多個線程的有效性的線程有效性屏蔽。
除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述管理包括提供所述VM配置中的線程之間的協(xié)調(diào)。
除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述管理包括修改線程描述區(qū)的內(nèi)容。
本文中所用的術(shù)語,僅僅是為了描述特定的實(shí)施例,而不意圖限定本發(fā)明。本文中所用的單數(shù)形式的“一”和“該”,旨在也包括復(fù)數(shù)形式,除非上下文中明確地另行指出。還要知道,“包含”和/或“包括”在本說明書中使用時,說明存在所指出的特征、整體、步驟、操作、單元和/或組件,但是并不排除存在或增加一個或多個其它特征、整體、步驟、操作、單元和/或組件,以及/或者它們的組合。
以下的權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置(means)或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對一個或多個實(shí)施例的描述其目的在于示意和描述,并非是窮盡性的,也并非是要將本發(fā)明限定到所表述的形式。對于所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,顯然可以作出許多修改和變型而不偏離本發(fā)明的精神和范圍。對實(shí)施例的選擇和描述,是為了最好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,使所屬技術(shù)領(lǐng)域的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實(shí)施例。
本發(fā)明的各種實(shí)施例的描述已為達(dá)成說明的目的而呈現(xiàn),但不意欲為窮盡性的或限于所揭示的實(shí)施例。在不脫離所描述實(shí)施例的范圍及精神的情況下,許多修改及變化對于本領(lǐng)域技術(shù)人員將顯而易見。本文中所使用的術(shù)語被選擇以最好地解釋實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌鲋姓业降募夹g(shù)的技術(shù)改進(jìn),或使其他本領(lǐng)域技術(shù)人員能夠理解本文所揭示的實(shí)施例。
現(xiàn)參看圖14,在一個實(shí)例中,計算機(jī)程序產(chǎn)品1400包括(例如)一個或多個存儲介質(zhì)1402以在其上存儲計算機(jī)可讀程序代碼裝置或邏輯1404從而提供及促進(jìn)本文中所描述的實(shí)施例的一個或多個方面,其中所述介質(zhì)可為有形的及/或非暫時性的。
本發(fā)明可以是系統(tǒng)、方法和/或計算機(jī)程序產(chǎn)品。計算機(jī)程序產(chǎn)品可以包括計算機(jī)可讀存儲介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個方面的計算機(jī)可讀程序指令。
計算機(jī)可讀存儲介質(zhì)可以是可以保持和存儲由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計算機(jī)可讀存儲介質(zhì)例如可以是但不限于電存儲設(shè)備、磁存儲設(shè)備、光存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或者上述的任意合適的組合。計算機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計算機(jī)盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機(jī)存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計算機(jī)可讀存儲介質(zhì)不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘枴?/p>
這里所描述的計算機(jī)可讀程序指令可以從計算機(jī)可讀存儲介質(zhì)下載到各個計算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機(jī)或外部存儲設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計算機(jī)和/或邊緣服務(wù)器。每個計算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計算機(jī)可讀程序指令,以供存儲在各個計算/處理設(shè)備中的計算機(jī)可讀存儲介質(zhì)中。
用于執(zhí)行本發(fā)明操作的計算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言—諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言—諸如“C”語言或類似的編程語言。計算機(jī)可讀程序指令可以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨(dú)立的軟件包執(zhí)行、部分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)—包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實(shí)施例中,通過利用計算機(jī)可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機(jī)可讀程序指令,從而實(shí)現(xiàn)本發(fā)明的各個方面。
這里參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機(jī)可讀程序指令實(shí)現(xiàn)。
這些計算機(jī)可讀程序指令可以提供給通用計算機(jī)、專用計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機(jī)可讀程序指令存儲在計算機(jī)可讀存儲介質(zhì)中,這些指令使得計算機(jī)、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲有指令的計算機(jī)可讀介質(zhì)則包括一個制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
也可以把計算機(jī)可讀程序指令加載到計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機(jī)實(shí)現(xiàn)的過程,從而使得在計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實(shí)施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實(shí)現(xiàn)。