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

在計(jì)算機(jī)中分派多個(gè)線(xiàn)程的制作方法

文檔序號(hào):11814639閱讀:299來(lái)源:國(guó)知局
在計(jì)算機(jī)中分派多個(gè)線(xiàn)程的制作方法與工藝

本發(fā)明一般地涉及多線(xiàn)程(MT),且更具體言之,涉及用于在計(jì)算機(jī)中分派多個(gè)線(xiàn)程的機(jī)器實(shí)現(xiàn)。

多線(xiàn)程(MT)提供用于在不需要添加額外核心的情況下增加可在單個(gè)物理處理器核心內(nèi)并行操作的處理器線(xiàn)程的數(shù)目的手段。理想地,MT通過(guò)使一個(gè)或多個(gè)線(xiàn)程使用核心硬件的當(dāng)前未由在同一核心上運(yùn)行的其他線(xiàn)程使用的部分來(lái)提供此增加能力。舉例而言,在由高速緩存未命中所引起的延時(shí)或一個(gè)線(xiàn)程中的其他延遲期間,一個(gè)或多個(gè)其他線(xiàn)程可利用核心資源,因此增加資源的利用率。實(shí)際上,即使此共享導(dǎo)致線(xiàn)程之間的一些干擾且需要某一額外硬件,但MT仍提供使用較少硬件執(zhí)行每一線(xiàn)程工作的能力,如果每一線(xiàn)程在其自身隔離核心硬件上執(zhí)行,則將需要較多硬件。常常,當(dāng)線(xiàn)程之間的硬件資源的共享亦減少計(jì)算機(jī)系統(tǒng)上的將信息(諸如,來(lái)自存儲(chǔ)器的數(shù)據(jù))提供至兩個(gè)獨(dú)特核心的整體壓力時(shí),可從MT獲得額外益處。

通常,盡管MT提供硬件節(jié)省,但另一工作線(xiàn)程的添加消耗系統(tǒng)管理程序級(jí)別處的使用額外單獨(dú)核心提供增加能力將需要的相同協(xié)調(diào)成本。在許多情況下,一旦達(dá)成某一按比例調(diào)整比率,在工作線(xiàn)程(無(wú)論執(zhí)行于單個(gè)核心抑或共享核心上)之間協(xié)調(diào)資源的開(kāi)銷(xiāo)是顯著的且會(huì)減小或甚至勝過(guò)由運(yùn)行獨(dú)立工作線(xiàn)程的能力所得到的益處。亦即,當(dāng)待管理事物的數(shù)目增加時(shí)通常存在更多管理開(kāi)銷(xiāo)。



技術(shù)實(shí)現(xiàn)要素:

各實(shí)施例包括一種用于分派多線(xiàn)程化客體虛擬機(jī)(VM)的系統(tǒng)、方法及計(jì)算機(jī)程序產(chǎn)品。根據(jù)一個(gè)方面,一種計(jì)算機(jī)系統(tǒng)包括配置,所述配置具有被啟用以在單線(xiàn)程(ST)模式及多線(xiàn)程(MT)模式中操作的機(jī)器。此外,所述機(jī)器包括物理線(xiàn)程。所述機(jī)器被配置為執(zhí)行一種方法,所述方法包括發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在核心(core)上分派包括多個(gè)邏輯線(xiàn)程的客體實(shí)體。所述客體實(shí)體包括客體VM的全部或一部分,且所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行。由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及以MT模式在所述核心上開(kāi)始執(zhí)行所述客體實(shí)體。

根據(jù)另一方面,提供一種用于在配置中分派多線(xiàn)程化客體虛擬機(jī)(VM)的計(jì)算機(jī)實(shí)施的方法。所述配置包括機(jī)器,所述機(jī)器具有被啟用以在單線(xiàn)程(ST)模式及多線(xiàn)程(MT)模式中操作的單個(gè)核心。所述核心包括物理線(xiàn)程。所述方法包括發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在所述核心上分派包括多個(gè)邏輯線(xiàn)程的客體實(shí)體。所述客體實(shí)體包括客體VM的全部或一部分,且所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行。由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及以MT模式在所述核心上開(kāi)始執(zhí)行所述客體實(shí)體。

另一方面包括一種用于在配置中分派多線(xiàn)程化客體虛擬機(jī)(VM)的計(jì)算機(jī)程序產(chǎn)品。所述配置包括機(jī)器,所述機(jī)器具有被啟用以在ST模式及MT模式中操作的單個(gè)核心。此外,所述機(jī)器包括物理線(xiàn)程。所述計(jì)算機(jī)程序產(chǎn)品包括體現(xiàn)有程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并非信號(hào)。所述程序指令能由處理電路讀取以使所述處理電路執(zhí)行一種方法。所述方法包括發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在所述核心上分派包括多個(gè)邏輯線(xiàn)程的客體實(shí)體。所述客體實(shí)體包括客體VM的全部或一部分,且所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行。由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及以MT模式在所述核心上開(kāi)始執(zhí)行所述客體實(shí)體。

附圖說(shuō)明

當(dāng)本說(shuō)明書(shū)完結(jié)時(shí)在權(quán)利要求中特定地指出且清楚地要求保護(hù)被視為實(shí)施例的主題。實(shí)施例的前述及其他特征及優(yōu)點(diǎn)自結(jié)合附圖而進(jìn)行的以下詳細(xì)描述顯而易見(jiàn),在附圖中:

圖1描繪可根據(jù)一個(gè)實(shí)施例實(shí)施的計(jì)算環(huán)境;

圖2描繪可根據(jù)一個(gè)實(shí)施例實(shí)施的物理處理器;

圖3描繪可根據(jù)一個(gè)實(shí)施例實(shí)施的計(jì)算環(huán)境;

圖4描繪根據(jù)一個(gè)實(shí)施例的多線(xiàn)程化(MT)邏輯線(xiàn)程的狀態(tài)描述;

圖5描繪根據(jù)一個(gè)實(shí)施例的線(xiàn)程有效性屏蔽(TVM)的方塊圖;

圖6描繪根據(jù)一個(gè)實(shí)施例的固定偏移狀態(tài)描述組;

圖7描繪根據(jù)一個(gè)實(shí)施例的被指定為地址列表的狀態(tài)描述組;

圖8描繪根據(jù)一個(gè)實(shí)施例的被指定為鏈接列表的狀態(tài)描述組;

圖9描繪根據(jù)一個(gè)實(shí)施例的被指定為循環(huán)列表或環(huán)的狀態(tài)描述組;

圖10描繪根據(jù)一個(gè)實(shí)施例的核心分派過(guò)程;

圖11描繪根據(jù)一個(gè)實(shí)施例的從虛擬執(zhí)行的協(xié)調(diào)退出;

圖12描繪根據(jù)一個(gè)實(shí)施例的系統(tǒng)控制區(qū)的方塊圖;

圖13描繪根據(jù)一個(gè)實(shí)施例的用于在多線(xiàn)程化核心之間協(xié)調(diào)的過(guò)程流;

圖14(包括圖14A及圖14B)描繪根據(jù)一個(gè)實(shí)施例的核心分派的機(jī)器實(shí)現(xiàn);

圖15(包括圖15A及圖15B)描繪根據(jù)一個(gè)實(shí)施例的自虛擬執(zhí)行的協(xié)調(diào)退出的機(jī)器實(shí)現(xiàn);及

圖16描繪根據(jù)一個(gè)實(shí)施例的計(jì)算機(jī)可讀介質(zhì)。

具體實(shí)施方式

本文中所描述的實(shí)施例可用于減少多線(xiàn)程(MT)環(huán)境中的系統(tǒng)管理程序管理開(kāi)銷(xiāo)。如本文所描述,多個(gè)線(xiàn)程的管理可在將多個(gè)線(xiàn)程作為單個(gè)邏輯核心管理的系統(tǒng)管理程序與在多個(gè)線(xiàn)程存取物理核心的資源時(shí)管理多個(gè)線(xiàn)程之間的交互的機(jī)器之間分割。此可通過(guò)允許系統(tǒng)管理程序基于邏輯核心管理許多的系統(tǒng)管理程序基礎(chǔ)設(shè)施資源及允許機(jī)器基于較細(xì)粒度線(xiàn)程管理其他資源而導(dǎo)致顯著減少多線(xiàn)程(MT)開(kāi)銷(xiāo)成本。一個(gè)實(shí)施例包括可由在單個(gè)線(xiàn)程(ST)上運(yùn)行的系統(tǒng)管理程序執(zhí)行的核心分派指令。核心分派指令的執(zhí)行(在本文中稱(chēng)為“指定MT的開(kāi)始VE指令”)可引起構(gòu)成客體虛擬機(jī)(VM)的全部或一部分的多個(gè)客體邏輯線(xiàn)程待在單個(gè)物理核心上分派。在一實(shí)施例中,由系統(tǒng)管理程序用于分派客體的指令指定待分派的客體是單線(xiàn)程化還是多線(xiàn)程化的。

本文中所描述的實(shí)施例可包括用于管理多線(xiàn)程化邏輯核心的分派的結(jié)構(gòu),諸如用于指示客體邏輯核心內(nèi)的哪些邏輯線(xiàn)程當(dāng)前有效的線(xiàn)程有效性屏蔽及包括狀態(tài)描述環(huán)的狀態(tài)描述組。另外,主要及次要狀態(tài)描述及字段類(lèi)型(例如,主要、核心共享、線(xiàn)程特定)可被實(shí)施為在具有多個(gè)線(xiàn)程的邏輯核心被分派時(shí)允許計(jì)算機(jī)資源的有效管理。另外,可提供邏輯核心內(nèi)的所有線(xiàn)程同時(shí)退出虛擬執(zhí)行的協(xié)調(diào)退出以簡(jiǎn)化系統(tǒng)管理程序及邏輯核心管理功能兩者。

各實(shí)施例可包括由系統(tǒng)管理程序維護(hù)的在本文中稱(chēng)為核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA)的控制結(jié)構(gòu)。COSCA由系統(tǒng)管理程序及機(jī)器兩者使用以管理可影響客體配置中的多個(gè)邏輯處理器的某些功能。COSCA的一個(gè)實(shí)施例被實(shí)現(xiàn)為樹(shù)狀結(jié)構(gòu),其中葉表示邏輯核心且每一葉含有對(duì)應(yīng)于該核心的線(xiàn)程的列表。COSCA結(jié)構(gòu)可含有允許系統(tǒng)管理程序容易地存取用于特定核心中的所有線(xiàn)程的狀態(tài)描述的字段(例如,狀態(tài)描述地址)。

各實(shí)施例亦可包括核心分派的機(jī)器實(shí)現(xiàn)(例如,指定MT的開(kāi)始VE指令),其中位于機(jī)器上的毫碼可用于管理核心分派過(guò)程。

如本文中所使用,術(shù)語(yǔ)毫碼用于指處理器硬件的操作不可或缺的許可內(nèi)部代碼。當(dāng)機(jī)器在執(zhí)行模式(本文中稱(chēng)為毫模式)下執(zhí)行時(shí),由所述機(jī)器執(zhí)行毫碼。

當(dāng)客體邏輯核心包括多個(gè)線(xiàn)程時(shí),所述邏輯線(xiàn)程中的一者被指定為主要線(xiàn)程且剩余者被指定為次要線(xiàn)程。術(shù)語(yǔ)“主要”適用于邏輯線(xiàn)程。自硬件觀(guān)點(diǎn)來(lái)看,物理線(xiàn)程既非主要線(xiàn)程亦非次要線(xiàn)程;一旦在其上發(fā)出指定MT的開(kāi)始VE指令,其便變?yōu)橹饕€(xiàn)程。物理級(jí)別處的此臨時(shí)區(qū)別的原因是因?yàn)楫?dāng)控制被傳遞回至主機(jī)時(shí),其通常在主要線(xiàn)程上進(jìn)行,亦即,控制被傳遞回至與發(fā)出開(kāi)始VE所在的物理線(xiàn)程相同的物理線(xiàn)程上的系統(tǒng)管理程序。

在一實(shí)施例中,毫碼可用于自任何其他線(xiàn)程(主要或次要)加載任何線(xiàn)程(主要或次要)的幾乎整個(gè)狀態(tài)。在諸實(shí)施例中,毫碼使用此狀態(tài)加載靈活性以加載另一線(xiàn)程的極小部分,以便充分利用可由每一線(xiàn)程對(duì)其自身狀態(tài)的并行加載而獲得的潛在效率。一些命令(諸如,清除轉(zhuǎn)換后備緩沖器或“PTLB”)及公用資源可適用于所有線(xiàn)程,且此情形允許其自單個(gè)線(xiàn)程執(zhí)行或加載。這不僅節(jié)省命令或負(fù)荷自身的時(shí)間,而且在一些狀況下,節(jié)省判定實(shí)際上是否需要該動(dòng)作所需的測(cè)試。包括于設(shè)計(jì)中的此靈活性可允許毫碼隨設(shè)計(jì)、開(kāi)發(fā)及測(cè)試循環(huán)進(jìn)展而持續(xù)地調(diào)整用于支持核心分派的算法??商峁┯糜谟行У亻_(kāi)始及停止線(xiàn)程執(zhí)行的機(jī)制。此外,毫碼亦可用于考慮內(nèi)部固件正運(yùn)行在在軟件級(jí)別處被視為無(wú)效的線(xiàn)程上的情景。

額外實(shí)施例涉及自被分派MT客體邏輯核心協(xié)調(diào)退出而返回至ST主機(jī)(例如,系統(tǒng)管理程序)的機(jī)器實(shí)現(xiàn)。在一實(shí)施例中,毫碼用于使系統(tǒng)同步,且此同步包括通過(guò)考慮所有不同線(xiàn)程的當(dāng)前狀態(tài)中的每一者來(lái)協(xié)調(diào)所述線(xiàn)程。一個(gè)實(shí)施例亦可包括在保持較低優(yōu)先級(jí)中斷的同時(shí)處置高優(yōu)先級(jí)中斷,其可延遲退出。可按允許在退出完成之后最有效使用核心資源的方式進(jìn)行次要線(xiàn)程的關(guān)閉。舉例而言,毫碼可停用某些中斷以防止將核心資源用于在毫碼中斷處理機(jī)并非必要時(shí)分派所述毫碼中斷處理機(jī)。毫碼亦可用于指示某些物理寄存器不再被使用以使得其為空閑的以供正執(zhí)行的ST使用。

如本文所用,術(shù)語(yǔ)“線(xiàn)程”指單個(gè)指令流及其相關(guān)聯(lián)狀態(tài)。亦即,在架構(gòu)級(jí)別處,每一邏輯線(xiàn)程表示獨(dú)立CPU或處理器。在硬件級(jí)別處,物理線(xiàn)程是當(dāng)邏輯線(xiàn)程被分派時(shí)結(jié)合維持該客體狀態(tài)而執(zhí)行與該邏輯線(xiàn)程相關(guān)聯(lián)的指令流。正是機(jī)器對(duì)該線(xiàn)程狀態(tài)的維護(hù)減少了在系統(tǒng)管理程序級(jí)別處所需的管理??捎糜谟蛇壿嫼诵氖褂玫倪壿嬀€(xiàn)程的總數(shù)受可用于物理核心的物理線(xiàn)程的總數(shù)限制。

如本文中所使用,術(shù)語(yǔ)“物理核心”指執(zhí)行一個(gè)或多個(gè)獨(dú)立指令流或線(xiàn)程但共享許多基本資源(諸如,執(zhí)行單元及低級(jí)別高速緩存)的硬件處理單元。可以多種方式進(jìn)行此共享,所述方式包括使每一線(xiàn)程在獨(dú)立時(shí)間使用相同硬件資源,或使資源被邏輯上共享,同時(shí)每一物理項(xiàng)被標(biāo)記線(xiàn)程識(shí)別符。線(xiàn)程(例如,常常需要資源A但僅很少需要資源B的一個(gè)線(xiàn)程及通常使用資源B而不使用資源A的另一線(xiàn)程)之間的適當(dāng)整合效果能夠改進(jìn)此共享的效率。如本文中所使用,術(shù)語(yǔ)“機(jī)器”指包括于物理核心中的硬件以及用于支持物理核心的毫碼及其他硬件。

如本文中所使用,術(shù)語(yǔ)“客體VM”及“客體”可互換地用以指可包括單個(gè)CPU或多個(gè)CPU的單個(gè)客體配置。如本文中所使用,術(shù)語(yǔ)“邏輯核心”指被定義以作為指定MT的開(kāi)始VE指令的一部分而一起分派的邏輯客體線(xiàn)程或CPU的組??腕wVM可由單個(gè)邏輯核心(ST或MT)或多個(gè)邏輯核心(其中的每一者亦可為ST或MT)組成。

如本文中所使用,術(shù)語(yǔ)“軟件”指系統(tǒng)管理程序(例如,PR/SM或zVM)或客體操作系統(tǒng)或由于開(kāi)始VE指令而分派的應(yīng)用程序。

如本文中所使用,術(shù)語(yǔ)“系統(tǒng)管理程序”及“主機(jī)”指管理系統(tǒng)資源且分派客體邏輯處理器以在物理硬件上執(zhí)行的程序。

用于分派客體點(diǎn)至狀態(tài)描述或狀態(tài)描述組的開(kāi)始VE指令的操作數(shù)定義該客體處理器或核心的狀態(tài)。狀態(tài)描述自身具有指向可視為狀態(tài)描述的擴(kuò)展的“衛(wèi)星(satellite)塊”的指針且包括進(jìn)一步定義該客體核心或處理器的狀態(tài)的額外信息。如本文中所使用,術(shù)語(yǔ)“狀態(tài)描述”不僅指狀態(tài)描述自身而且指這些衛(wèi)星塊。圖12中描繪了核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA)(這些衛(wèi)星塊中的一者)。

現(xiàn)轉(zhuǎn)向圖1,大體展示可由例示性實(shí)施例實(shí)施的計(jì)算環(huán)境100。計(jì)算環(huán)境100可(例如)基于由國(guó)際商業(yè)機(jī)器公司(Armonk,New York)提供的z/Architecture。z/Architecture描述于2012年8月的題為“z/Architecture Principles of Operation”的公開(kāi)(IBM公開(kāi)第SA22-7832-09號(hào))中,所述公開(kāi)特此以全文引用的方式并入本文中。在一個(gè)實(shí)例中,基于z/Architecture的計(jì)算環(huán)境包括由國(guó)際商業(yè)機(jī)器公司(Armonk,New York)提供的eServer zSeries。

作為一個(gè)實(shí)例,計(jì)算環(huán)境100可包括耦合至系統(tǒng)控制器120的處理器復(fù)合體102。處理器復(fù)合體102可包括(例如)一個(gè)或多個(gè)分區(qū)104(例如,邏輯分區(qū)LP1至LPn)、一個(gè)或多個(gè)物理核心106(例如,核心1至核心m)及級(jí)別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)用程序可看起來(lái)存取完全及完整系統(tǒng),但實(shí)際上存取僅其可獲得的一部分。硬件與許可內(nèi)部代碼(通常稱(chēng)為微碼或毫碼或固件)的組合將程序保持在一個(gè)邏輯分區(qū)104中以免干擾不同邏輯分區(qū)104中的程序。這允許若干不同邏輯分區(qū)104以時(shí)間分片方式在單個(gè)或多個(gè)物理核心106上操作。在一實(shí)施例中,每一物理核心包括一個(gè)或多個(gè)中央處理器(在本文中亦稱(chēng)為“物理線(xiàn)程”)。在圖1中所展示的實(shí)例中,每一邏輯分區(qū)104具有駐留操作系統(tǒng)110,其針對(duì)一個(gè)或多個(gè)邏輯分區(qū)104而可不同。在每一邏輯分區(qū)104中運(yùn)行的操作系統(tǒng)110為虛擬機(jī)或客體配置的一個(gè)實(shí)例。在一個(gè)實(shí)施例中,操作系統(tǒng)110為由國(guó)際商業(yè)機(jī)器公司(Armonk,New York)提供的操作系統(tǒng)。

物理核心106包括被分配至邏輯分區(qū)104的物理處理器資源。邏輯分區(qū)104可包括一個(gè)或多個(gè)邏輯處理器,其中的每一者表示分配至分區(qū)104的所有或一部分物理處理器資源。物理核心106可專(zhuān)用于特定分區(qū)104的邏輯核心,使得基礎(chǔ)核心106的物理處理器資源被保留用于該分區(qū)104;或與另一分區(qū)104的邏輯核心共享,使得基礎(chǔ)核心資源的物理處理器資源潛在地可用于另一分區(qū)104。

在圖1中所展示的實(shí)施例中,邏輯分區(qū)104由級(jí)別0系統(tǒng)管理程序108管理,所述級(jí)別0系統(tǒng)管理程序由在物理核心106上運(yùn)行的固件實(shí)施。邏輯分區(qū)104及系統(tǒng)管理程序108各自包括駐留在與物理核心106相關(guān)聯(lián)的中央存儲(chǔ)裝置(存儲(chǔ)器)的相應(yīng)部分中的一個(gè)或多個(gè)程序。系統(tǒng)管理程序108的一個(gè)實(shí)例為由國(guó)際商業(yè)機(jī)器公司(Armonk,New York)提供的Processor Resource/System Manager(PR/SMTM)。

在圖1中耦合至中央處理器復(fù)合體102的系統(tǒng)控制器120可包括負(fù)責(zé)在發(fā)出請(qǐng)求的不同處理器之間仲裁的集中式邏輯。舉例而言,當(dāng)系統(tǒng)控制器120接收存儲(chǔ)器存取請(qǐng)求時(shí),其判定是否允許存取該存儲(chǔ)位置,且如果允許,則將存儲(chǔ)位置的內(nèi)容提供至中央處理器復(fù)合體102,同時(shí)維護(hù)該復(fù)合體內(nèi)的處理器之間的存儲(chǔ)器一致性。

現(xiàn)轉(zhuǎn)向圖2,大體展示根據(jù)一個(gè)實(shí)施例的用于實(shí)施機(jī)器或物理核心(諸如,圖1中的物理核心106)的處理電路200的方塊圖。處理電路200可包括在多處理環(huán)境中的多個(gè)物理核心中的一個(gè)物理核心。圖2中所展示的處理電路200包括可將處理電路200耦合至其他核心及外圍設(shè)備的系統(tǒng)控制器接口單元202。系統(tǒng)控制器接口單元202亦可將Dcache 204(其讀取及存儲(chǔ)數(shù)據(jù)值)、Icache 208(其讀取程序指令)及高速緩存接口單元206連接至外部存儲(chǔ)器、處理器及其他外圍設(shè)備。

Icache 208可結(jié)合指令取回單元(IFU)210提供指令流的加載,所述指令取回單元預(yù)先取回指令且可包括推測(cè)性加載及分支預(yù)測(cè)能力??蓪⑺』刂噶钐峁┲林噶罱獯a單元(IDU)212以用于解碼成指令處理數(shù)據(jù)。

IDU 212可將指令提供至發(fā)出單元214,所述發(fā)出單元可控制指令至各種執(zhí)行單元(諸如,用于執(zhí)行一般運(yùn)算的一個(gè)或多個(gè)定點(diǎn)單元(FXU)216及用于執(zhí)行浮點(diǎn)運(yùn)算的一個(gè)或多個(gè)浮點(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)由一個(gè)或多個(gè)LSU管線(xiàn)耦合至一個(gè)或多個(gè)加載/存儲(chǔ)單元(LSU)228。多個(gè)LSU管線(xiàn)被視為用于執(zhí)行加載及存儲(chǔ)以及用于分支的地址產(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通過(guò)LSU 228提供用于自Dcache 204加載及存儲(chǔ)的數(shù)據(jù)值的數(shù)據(jù)值存儲(chǔ)。

現(xiàn)轉(zhuǎn)向圖3,大體展示可由一個(gè)實(shí)施例實(shí)施的計(jì)算環(huán)境300。圖3中所展示的計(jì)算環(huán)境300類(lèi)似于圖1中所展示的計(jì)算環(huán)境100,外加在邏輯分區(qū)104(標(biāo)記為L(zhǎng)P2)中執(zhí)行的級(jí)別1系統(tǒng)管理程序302。如圖3中所展示,級(jí)別1系統(tǒng)管理程序302可提供先前關(guān)于系統(tǒng)管理程序108(在本文中亦稱(chēng)為“級(jí)別0系統(tǒng)管理程序”)描述的相同系統(tǒng)管理程序功能,諸如在標(biāo)記為L(zhǎng)P2的邏輯分區(qū)104內(nèi)的多個(gè)操作系統(tǒng)(例如,在虛擬機(jī)VM1 304、VM2 306及VM3 308中運(yùn)行的OS1 314、OS2 312及OS3 310)之間的資源的透明時(shí)間分片及這些操作系統(tǒng)的彼此隔離。圖3中所展示的實(shí)施例包括作為實(shí)例的三個(gè)虛擬機(jī)且其他實(shí)施例可基于應(yīng)用需求而包括更多或更少虛擬機(jī)。

如圖3中所展示,標(biāo)記為L(zhǎng)P1的邏輯分區(qū)104具有駐留操作系統(tǒng)110,且標(biāo)記為L(zhǎng)P2的邏輯分區(qū)104運(yùn)行級(jí)別1系統(tǒng)管理程序302,級(jí)別1系統(tǒng)管理程序302繼而建立虛擬機(jī)304、306、308的級(jí)別1系統(tǒng)管理程序302,所述虛擬機(jī)中的每一者運(yùn)行其自身的駐留操作系統(tǒng)314、312、310。任何數(shù)目個(gè)邏輯分區(qū)104可運(yùn)行級(jí)別1系統(tǒng)管理程序302。在一實(shí)施例中,級(jí)別1系統(tǒng)管理程序302為由國(guó)際商業(yè)機(jī)器公司(Armonk,New York)提供的z/VM系統(tǒng)管理程序。在各種邏輯分區(qū)中運(yùn)行的常駐操作系統(tǒng)可不同,且當(dāng)在級(jí)別1系統(tǒng)管理程序302下運(yùn)行時(shí),單個(gè)分區(qū)104(例如,LP2)內(nèi)的駐留操作系統(tǒng)(例如,操作系統(tǒng)314、312、310)亦可不同。在一實(shí)施例中,在標(biāo)記為L(zhǎng)P1的邏輯分區(qū)104中的操作系統(tǒng)110為由國(guó)際商業(yè)機(jī)器公司(Armonk,New York)提供的z/OS操作系統(tǒng)。在一實(shí)施例中,操作系統(tǒng)310及312為L(zhǎng)inux且操作系統(tǒng)314為z/OS。

當(dāng)級(jí)別1系統(tǒng)管理程序302在邏輯分區(qū)104中運(yùn)行時(shí),其可將由級(jí)別0系統(tǒng)管理程序(諸如,系統(tǒng)管理程序108)提供至邏輯分區(qū)104的資源的相同虛擬化提供至在虛擬機(jī)308、306、304中運(yùn)行的操作系統(tǒng)310、312、314。當(dāng)在第一級(jí)別處時(shí),每一虛擬機(jī)可包括多個(gè)虛擬處理器。

物理核心106包括可為專(zhuān)用或如針對(duì)圖1所描述在邏輯分區(qū)104LP1、LP2、LP3及LP4之間共享的物理處理器資源。當(dāng)在一個(gè)或多個(gè)物理核心上分派邏輯分區(qū)LP2時(shí),級(jí)別1系統(tǒng)管理程序302可接著在其虛擬機(jī)VM1304、VM2 306及VM3 308之間透明地共享這些資源。在一個(gè)實(shí)施例中,級(jí)別0系統(tǒng)管理程序108使用指定MT的開(kāi)始VE指令來(lái)分派多線(xiàn)程化級(jí)別1系統(tǒng)管理程序302,所述多線(xiàn)程化級(jí)別1系統(tǒng)管理程序接著使用指定ST的開(kāi)始VE指令來(lái)分派單線(xiàn)程化虛擬機(jī)VM1 304、VM2 306及VM3 308。在一不同實(shí)施例中,級(jí)別0系統(tǒng)管理程序108使用指定ST的開(kāi)始VE指令來(lái)分派單線(xiàn)程化級(jí)別1系統(tǒng)管理程序302,所述單線(xiàn)程化級(jí)別1系統(tǒng)管理程序接著使用指定MT的開(kāi)始VE指令來(lái)分派多線(xiàn)程化虛擬機(jī)VM1 304、VM2 306及VM3 308。在另一實(shí)施例中,級(jí)別1系統(tǒng)管理程序302及其客體VM 304、306、308兩者皆為單線(xiàn)程化的。

在客體多處理(MP)環(huán)境中,系統(tǒng)管理程序可維護(hù)被稱(chēng)為系統(tǒng)控制區(qū)(SCA)的控制結(jié)構(gòu),其由系統(tǒng)管理程序及機(jī)器兩者使用以管理可影響客體配置中的多個(gè)邏輯處理器的某些功能。針對(duì)配置或虛擬機(jī)中的所有客體處理器,在狀態(tài)描述中指定相同SCA起點(diǎn)(SCAO)。在一實(shí)施例中,此區(qū)可包括公用區(qū)(一般用于協(xié)調(diào)全客體配置功能)及單獨(dú)處理器特定的項(xiàng)。公用區(qū)(例如)保存關(guān)于客體配置內(nèi)的哪些虛擬處理器有效的信息。SCA內(nèi)的單獨(dú)處理器特定的區(qū)可(例如)用于解釋或仿真處理器間客體功能(諸如,處理器間中斷)或容易地提供指向每一邏輯處理器的相應(yīng)狀態(tài)描述的可存取指針。在一實(shí)施例中,用于ST的SCA通過(guò)針對(duì)每一潛在客體線(xiàn)程添加額外線(xiàn)程特定的項(xiàng)而擴(kuò)展以供MT使用。

核心分派的一個(gè)實(shí)施例可允許在單個(gè)線(xiàn)程上運(yùn)行的系統(tǒng)管理程序使用開(kāi)始VE指令的變體(有時(shí)被稱(chēng)為開(kāi)始多線(xiàn)程化虛擬執(zhí)行(開(kāi)始MVE))在其核心上分派多線(xiàn)程化客體。在多線(xiàn)程化客體中的每一線(xiàn)程可表示客體邏輯中央處理單元(CPU),或客體線(xiàn)程。開(kāi)始VE指令能夠經(jīng)由狀態(tài)描述中的控制字段啟用在物理核心上的多線(xiàn)程(MT)客體執(zhí)行。當(dāng)用于核心分派時(shí),開(kāi)始VE指令的操作數(shù)可指定含有所有客體線(xiàn)程的狀態(tài)的單個(gè)狀態(tài)描述或各自(例如)表示單個(gè)客體線(xiàn)程的狀態(tài)的一組狀態(tài)描述。在一實(shí)施例中,邏輯核心包括該組狀態(tài)描述。核心分派需要虛擬執(zhí)行進(jìn)入以將邏輯核心及這些客體邏輯線(xiàn)程中的每一者的狀態(tài)加載至物理核心線(xiàn)程及其線(xiàn)程中。這些線(xiàn)程可為彼此獨(dú)立地操作的指令流。在各種實(shí)施例中,可以若干方式指定狀態(tài)描述組,包括指定為彼此的固定偏移、指定為狀態(tài)描述地址或狀態(tài)描述的列表、或指定為適用于核心的狀態(tài)描述的循環(huán)列表(環(huán)),其中該組中的每一狀態(tài)描述表示單獨(dú)客體線(xiàn)程。此類(lèi)技術(shù)允許系統(tǒng)管理程序及機(jī)器容易存取邏輯核心內(nèi)的其他線(xiàn)程且允許適用于整個(gè)邏輯核心的字段被保持在單個(gè)位置中。

客體OS可通過(guò)發(fā)出啟用客體中的多線(xiàn)程的MT設(shè)定指令簡(jiǎn)單地利用多線(xiàn)程。這允許客體OS將這些新線(xiàn)程視為額外獨(dú)立CPU且如這些新線(xiàn)程在不存在多線(xiàn)程化的情況下來(lái)管理它們。另外,客體OS可以以利用這些線(xiàn)程共享核心的事實(shí)的方式使用這些線(xiàn)程,或客體OS可使這些線(xiàn)程以相互更相依方式操作。這對(duì)于系統(tǒng)管理程序及機(jī)器為全部透明的。系統(tǒng)管理程序接著將這些額外線(xiàn)程提供至客體OS,同時(shí)系統(tǒng)管理程序自身繼續(xù)每核心在單個(gè)線(xiàn)程上運(yùn)行且基于核心管理客體MT環(huán)境中的許多部分。在同時(shí)申請(qǐng)的題為“Thread Context Preservation in a Multithreading Computer System”的美國(guó)專(zhuān)利申請(qǐng)14/226895(案號(hào)POU920140064US1)中更詳細(xì)地描述多線(xiàn)程的OS啟用,該申請(qǐng)的內(nèi)容以全文引用的方式并入本文中。

在核心分派的一個(gè)實(shí)施例中,指定為指定MT的開(kāi)始VE指令的操作數(shù)的狀態(tài)描述為“主要”狀態(tài)描述且相關(guān)聯(lián)的客體邏輯線(xiàn)程為“主要”線(xiàn)程。組中的其他狀態(tài)描述在本文中被稱(chēng)為“次要”狀態(tài)描述,且如果適用,則適用于次要邏輯線(xiàn)程。當(dāng)狀態(tài)描述組被實(shí)施為列表或環(huán)時(shí),主要狀態(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)管理程序每次在給定物理核心上分派一個(gè)客體邏輯處理器(在本文中亦被稱(chēng)為“邏輯線(xiàn)程”)。如果特定邏輯處理器處于無(wú)效狀態(tài)(例如,在停止?fàn)顟B(tài)下或在停用等待中),則系統(tǒng)管理程序?qū)⒉环峙稍摽腕w。在MT環(huán)境中,核心分派允許系統(tǒng)管理程序同時(shí)在核心上分派多個(gè)客體線(xiàn)程。為了適應(yīng)該邏輯核心的狀態(tài)描述組中的線(xiàn)程中的一者或多者無(wú)效的可能性,一個(gè)實(shí)施例利用主要狀態(tài)描述中的線(xiàn)程有效性屏蔽(TVM),自軟件觀(guān)點(diǎn),其中的每一位指示組中的對(duì)應(yīng)狀態(tài)描述中的邏輯線(xiàn)程的有效性。

在另一實(shí)施例中,僅將有效線(xiàn)程包括在狀態(tài)描述組中且有效性指示為不必要的。在狀態(tài)描述組中包括無(wú)效邏輯線(xiàn)程的一個(gè)實(shí)施例允許系統(tǒng)管理程序維護(hù)與這些無(wú)效線(xiàn)程相關(guān)聯(lián)的狀態(tài)且這些線(xiàn)程可在將來(lái)再次變得有效。機(jī)器將僅初始化且運(yùn)行具有有效狀態(tài)的這些線(xiàn)程。如果組中的至少一個(gè)線(xiàn)程為有效的,則系統(tǒng)管理程序?qū)H分派一個(gè)客體邏輯核心。

現(xiàn)轉(zhuǎn)向圖4,大體展示根據(jù)一個(gè)實(shí)施例的包括客體的架構(gòu)狀態(tài)的大部分的邏輯線(xiàn)程的狀態(tài)描述。在此上下文中,術(shù)語(yǔ)“狀態(tài)描述”不僅包括狀態(tài)描述自身而且包括充當(dāng)擴(kuò)展的衛(wèi)星塊,其指針駐留于狀態(tài)描述中。如圖4中所展示,狀態(tài)描述400可包括客體通用寄存器(GR)402、存取寄存器(AR)404、控制寄存器(CR)406、客體定時(shí)器408(包括時(shí)鐘比較器及CPU定時(shí)器)、客體前綴寄存器410、虛擬CPU編號(hào)(VCN)412、程序狀態(tài)字(PSW)及指令地址(IA)414。另外,狀態(tài)描述可包括控制信息,諸如攔截控制(IC)位420,其用以指示某些指令(例如,加載程序狀態(tài)字(LPSW)及失效頁(yè)表項(xiàng)(IPTE))是否需要攔截主機(jī)或在客體指令執(zhí)行可開(kāi)始之前是否需要清空客體轉(zhuǎn)換后備緩沖器(TLB)。狀態(tài)描述亦含有用于定義如圖6至圖9中所描述的狀態(tài)描述列表及環(huán)的下一狀態(tài)描述(NSD)422。主要狀態(tài)描述亦包括如圖5中所描述的TVM 430及邏輯分區(qū)編號(hào)(LPN)432。虛擬CPU編號(hào)(VCN)412等效于CPU編號(hào),可被調(diào)節(jié)以包括MT模式中的線(xiàn)程編號(hào),如同時(shí)申請(qǐng)的題為“Address Expansion and Contraction in a Multithreading Computer System”的美國(guó)專(zhuān)利申請(qǐng)14/226947(案號(hào)POU920140072US1)中所描述,所述申請(qǐng)的內(nèi)容以全文引用的方式并入本文中。隨文件包括了副本。

核心內(nèi)的線(xiàn)程可由二進(jìn)制線(xiàn)程標(biāo)識(shí)符(TID)識(shí)別。為簡(jiǎn)潔起見(jiàn),在以下各圖中,線(xiàn)程x常常通過(guò)術(shù)語(yǔ)TIDx來(lái)引用,所述術(shù)語(yǔ)在此狀況下含義為“具有TID x的線(xiàn)程”。

現(xiàn)參看圖5,大體展示根據(jù)一個(gè)實(shí)施例的線(xiàn)程有效性屏蔽(TVM)520的方塊圖。如圖5中所展示,TVM 520的位0 530表示狀態(tài)描述組中的邏輯線(xiàn)程0的有效性,位1 531表示線(xiàn)程1的有效性,位2 532表示線(xiàn)程2的有效性,位3 533表示線(xiàn)程3的有效性,等等,直至表示線(xiàn)程n(與此核心相關(guān)聯(lián)的狀態(tài)描述組中的最后可能邏輯線(xiàn)程)的有效性的位n 537。TVM可駐留于該組的主要狀態(tài)描述中。

現(xiàn)轉(zhuǎn)向圖6,大體展示根據(jù)一個(gè)實(shí)施例的固定偏移狀態(tài)描述組結(jié)構(gòu)。如圖6中所展示,在彼此的固定偏移(N)處指定狀態(tài)描述組。在此狀況下,開(kāi)始VE指令的操作數(shù)602指向邏輯線(xiàn)程0的主要狀態(tài)描述603。邏輯線(xiàn)程x的次要狀態(tài)描述605位于主要狀態(tài)描述之后N個(gè)字節(jié)的固定偏移處,且邏輯線(xiàn)程y的次要狀態(tài)描述607位于線(xiàn)程x的次要狀態(tài)描述之后N個(gè)字節(jié)處。對(duì)于組中的所有線(xiàn)程,此情形繼續(xù)。可以以若干方式確定組中的線(xiàn)程的數(shù)目,包括藉由主要狀態(tài)描述中的計(jì)數(shù)或藉由在列表中的最后狀態(tài)描述地址之后的結(jié)束標(biāo)記。

圖6可表示兩種狀況,第一狀況為組包括組中的所有邏輯線(xiàn)程(無(wú)論其是否有效)的狀態(tài)描述的狀況,且第二狀況為僅有效狀態(tài)描述被包括在組中的狀況。在第一狀況下,線(xiàn)程x的狀態(tài)描述605表示線(xiàn)程1的狀態(tài),且線(xiàn)程y的狀態(tài)描述607表示線(xiàn)程2的狀態(tài)。僅在此第一狀況下需要的TVM 620表示這些邏輯線(xiàn)程中的每一者的有效性。在第二狀況下,線(xiàn)程x的狀態(tài)描述605表示第一有效的邏輯次要線(xiàn)程的狀態(tài),且邏輯線(xiàn)程y的狀態(tài)描述607表示第二有效的次要線(xiàn)程的狀態(tài)。舉例而言,如果線(xiàn)程1并不有效且線(xiàn)程2及3皆有效的,則線(xiàn)程x 605將表示線(xiàn)程2且線(xiàn)程y 607將表示線(xiàn)程3。將不存在包括于組中的線(xiàn)程1的狀態(tài)描述,這是因?yàn)榫€(xiàn)程1為無(wú)效的。這相同的兩種狀況亦可適用于以下圖7至圖9中所示的實(shí)施例,然而僅描述及圖示狀況1。

現(xiàn)轉(zhuǎn)向圖7,大體展示根據(jù)一個(gè)實(shí)施例的被指定為列表的狀態(tài)描述組結(jié)構(gòu)。在此狀況下,開(kāi)始VE指令的操作數(shù)702表示狀態(tài)描述地址的列表,其中所述列表中的第一項(xiàng)704指向線(xiàn)程0的主要狀態(tài)描述705,所述列表中的第二項(xiàng)706指向線(xiàn)程1的次要狀態(tài)描述707,所述列表中的第三項(xiàng)708指向線(xiàn)程2的次要狀態(tài)描述709,等等,針對(duì)組中的所有線(xiàn)程繼續(xù)。TVM 720表示這些線(xiàn)程中的每一者的有效性。

現(xiàn)轉(zhuǎn)向圖8,大體展示根據(jù)一個(gè)實(shí)施例的被指定為鏈接列表的狀態(tài)描述組結(jié)構(gòu)。在此狀況下,如在圖6中所描繪的狀況下,開(kāi)始VE指令的操作數(shù)802指向線(xiàn)程0的主要狀態(tài)描述803,但實(shí)際上用于線(xiàn)程1的次要狀態(tài)描述805的指針804被提供為主要狀態(tài)描述中的下一狀態(tài)描述(NSD)字段804。繼而,用于線(xiàn)程2的次要狀態(tài)描述807的指針806被提供為線(xiàn)程1的次要狀態(tài)描述中的NSD 806。針對(duì)組中的所有線(xiàn)程,此情形將繼續(xù),其中最后線(xiàn)程n的狀態(tài)描述809中的NSD 810被指定為0或指示列表結(jié)尾的某一其他獨(dú)特值。在主要狀態(tài)描述803中提供的TVM 820表示這些線(xiàn)程中的每一者的有效性。

現(xiàn)轉(zhuǎn)向圖9,大體展示根據(jù)一個(gè)實(shí)施例的被指定為循環(huán)列表或環(huán)的狀態(tài)描述組結(jié)構(gòu)。此狀況等同于圖8中所展示的狀況,因?yàn)殚_(kāi)始VE指令的操作數(shù)902指向線(xiàn)程0的主要狀態(tài)描述903,其含有用于線(xiàn)程1的次要狀態(tài)描述905的NSD 904,所述次要狀態(tài)描述含有用于線(xiàn)程2的次要狀態(tài)描述907的NSD 906,且針對(duì)所有線(xiàn)程此情形繼續(xù)直至最后線(xiàn)程n。然而,在圖9中所展示的實(shí)施例中,在線(xiàn)程n的狀態(tài)描述909中的NSD 910形成循環(huán)列表且指回至主要狀態(tài)描述903。在主要狀態(tài)描述903中提供的TVM 920表示這些線(xiàn)程中的每一者的有效性。

核心分派允許系統(tǒng)管理程序管理在核心級(jí)別處的邏輯線(xiàn)程的許多方面。核心分派不僅常常通過(guò)將核心的多個(gè)線(xiàn)程的虛擬執(zhí)行的協(xié)調(diào)推送至機(jī)器中而簡(jiǎn)化線(xiàn)程管理所需的系統(tǒng)管理程序代碼,而且其可減少管理配置中的更多處理器所需的開(kāi)銷(xiāo)。用于邏輯分區(qū)(或客體)的優(yōu)先級(jí)管理可繼續(xù)在邏輯核心級(jí)別處進(jìn)行,從而減少此類(lèi)管理上的按比例調(diào)整壓力。系統(tǒng)管理程序自身仍需要管理與邏輯核心相關(guān)聯(lián)的線(xiàn)程集合以確保在重新發(fā)出開(kāi)始VE指令之前其需求(諸如,指令攔截)全部被滿(mǎn)足。

現(xiàn)參看圖10,大體展示根據(jù)一個(gè)實(shí)施例的核心分派過(guò)程。如圖10中所展示,系統(tǒng)管理程序正在物理核心N 1010及物理線(xiàn)程A 1020上單線(xiàn)程化地運(yùn)行。在塊1022中,系統(tǒng)管理程序發(fā)出指定MT的開(kāi)始VE指令以分派多線(xiàn)程化客體核心。機(jī)器判定客體為多線(xiàn)程化的,且在塊1024中,使物理線(xiàn)程B及C可用于運(yùn)行軟件。機(jī)器將客體狀態(tài)自線(xiàn)程中的每一者的狀態(tài)描述加載至對(duì)應(yīng)物理線(xiàn)程中。在圖10中所描繪的實(shí)施例中,機(jī)器使用多個(gè)物理線(xiàn)程以執(zhí)行此功能,亦即,在物理線(xiàn)程A 1020上運(yùn)行的毫碼將客體邏輯線(xiàn)程X的狀態(tài)加載至物理線(xiàn)程A中,如塊1026中所展示。同樣地,在物理線(xiàn)程B 1040及C 1060上運(yùn)行的毫碼將客體邏輯線(xiàn)程Y及Z的狀態(tài)加載至物理線(xiàn)程B及C中,如塊1046及1066中所展示。一旦客體狀態(tài)已加載,在客體邏輯線(xiàn)程X、Y及Z上運(yùn)行的軟件便在物理線(xiàn)程A、B及C上執(zhí)行,如塊1028、1048及1068中所展示。

現(xiàn)參看圖11,大體展示根據(jù)一個(gè)實(shí)施例的自虛擬執(zhí)行的協(xié)調(diào)退出。如圖11中所展示,客體邏輯線(xiàn)程X、Y及Z正在物理線(xiàn)程A 1120、B 1140及C 1160上執(zhí)行客體軟件,如塊1128、1148及1168中所指示。一個(gè)或多個(gè)客體線(xiàn)程判定需要自虛擬執(zhí)行的退出。參看圖11,在物理線(xiàn)程B 1140上運(yùn)行的客體邏輯線(xiàn)程Y判定其必須退出虛擬執(zhí)行(如塊1150中所展示),從而使機(jī)器用信號(hào)通知物理線(xiàn)程A 1120及C 1160退出虛擬執(zhí)行,如塊1152中所展示。在塊1136、1154及1174中,在物理線(xiàn)程中的每一者上運(yùn)行的毫碼協(xié)調(diào)自虛擬執(zhí)行的退出且接著使物理線(xiàn)程B 1140及C 1160不可用于由軟件使用,如塊1156及1176中所指示。物理線(xiàn)程A 1120上的毫碼將主機(jī)狀態(tài)重載至硬件中(如塊1138中所展示),這導(dǎo)致系統(tǒng)管理程序軟件在物理線(xiàn)程A上的執(zhí)行,如塊1140中所展示。系統(tǒng)管理程序接著將按需處理任何待決客體攔截及主機(jī)中斷。

圖12描繪根據(jù)一個(gè)實(shí)施例的用于包括多個(gè)邏輯核心的單個(gè)客體配置的核心導(dǎo)向式系統(tǒng)控制區(qū)(COSCA)的方塊圖。圖12中所展示的COSCA可用于提供核心內(nèi)的邏輯線(xiàn)程之間的協(xié)調(diào)及不同核心上的邏輯線(xiàn)程之間的協(xié)調(diào)兩者。COSCA可包括具有指針的表示整個(gè)客體配置的公用區(qū),每一邏輯核心一個(gè)指針以便分離核心描述區(qū)。每一核心描述包括表示該核心的公用區(qū)及用于該核心的一系列鄰接的單獨(dú)線(xiàn)程特定區(qū)或線(xiàn)程描述。在另一實(shí)施例中,核心描述提供線(xiàn)程描述的位置。所提供位置可為隱含的(例如,它們?yōu)榘诤诵拿枋鲋械牧斜?,或它們可在與核心描述相連的存儲(chǔ)塊中)。在其他實(shí)施例中,可提供指向含有線(xiàn)程描述的其他存儲(chǔ)位置的指針。如本文中所使用,術(shù)語(yǔ)“指示位置”用于指確定項(xiàng)目(例如,線(xiàn)程描述或COSCA中的其他元素)的位置的這些方式中的任一者,或任何額外方式。此結(jié)構(gòu)維護(hù)MT客體配置的樹(shù)狀表示,其促進(jìn)(特定言之,在系統(tǒng)管理程序級(jí)別處)在一些情景下基于核心來(lái)管理事物,但其他情景下基于線(xiàn)程或處理器來(lái)管理事物。

可在客體配置內(nèi)的所有客體線(xiàn)程的狀態(tài)描述中的SCA起點(diǎn)(SCAO)字段中提供相同COSCA起點(diǎn)(COSCAO),且可針對(duì)給定核心內(nèi)的所有線(xiàn)程提供相同核心描述區(qū)地址(CDAA)。此實(shí)施例的優(yōu)點(diǎn)為其不需要一些系統(tǒng)管理程序可能難以提供的那樣多的鄰接實(shí)際存儲(chǔ)空間。另一實(shí)施例可添加額外間接層且使每一核心描述包括用于每一線(xiàn)程特定區(qū)的指針的列表,從而使含有這些區(qū)的控制塊無(wú)需是鄰接的。

現(xiàn)參看圖12,大體展示用于包括兩個(gè)邏輯核心(每一核心中具有三個(gè)邏輯線(xiàn)程)的單個(gè)客體配置的COSCA的一個(gè)實(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的開(kāi)始VE指令的操作數(shù)1202。另外,將與邏輯核心1相關(guān)聯(lián)的狀態(tài)描述組的主要狀態(tài)描述1233指定為用于分派核心1的開(kāi)始VE指令的操作數(shù)1232?!昂诵?線(xiàn)程0”的此主要狀態(tài)描述1203含有NSD01 1205,其指向核心0線(xiàn)程1的次要狀態(tài)描述1213,所述次要狀態(tài)描述繼而含有指向組中的核心0線(xiàn)程2的最終次要狀態(tài)描述1223的NSD02 1215。類(lèi)似地,邏輯核心1的狀態(tài)描述組以核心1線(xiàn)程0的主要狀態(tài)描述1233開(kāi)始,所述主要狀態(tài)描述含有指向核心1線(xiàn)程1的次要狀態(tài)描述1243的NSD11 1235,所述次要狀態(tài)描述含有指向核心1線(xiàn)程2的最終次要狀態(tài)描述1253的NSD12 1245。此客體配置中的所有六個(gè)線(xiàn)程的狀態(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)全客體配置功能的核心級(jí)別信息。COSCA公用區(qū)1260包括指示客體配置內(nèi)的每一邏輯核心的有效性的SCA核心有效性屏蔽(SCVM)1261,且亦包括每一核心的核心描述區(qū)地址(CDAA)1262、1264。SCVM中的位及核心描述地址的陣列兩者可通過(guò)核心編號(hào)來(lái)編制索引。指向核心0的核心描述區(qū)(CDA)1270的CDAA0 1262包括于COSCA公用區(qū)1260中。另外,核心0中的所有線(xiàn)程的狀態(tài)描述中的CDAA字段1206、1216、1226亦指向核心0的CDA 1270。指向核心1的CDA 1280的CDAA1 1264亦包括于COSCA公用區(qū)1260中,且同樣地,核心1中的所有線(xiàn)程的狀態(tài)描述中的CDAA字段1236、1246、1256亦指向核心1的CDA 1280。核心0的核心描述區(qū)(CDA)1270含有指示核心0內(nèi)的每一邏輯線(xiàn)程的有效性的SCA線(xiàn)程有效性屏蔽(STVM0)1271。其亦含有核心0線(xiàn)程0的線(xiàn)程描述區(qū)1272、核心0線(xiàn)程1的線(xiàn)程描述區(qū)1274及核心0線(xiàn)程2的線(xiàn)程描述區(qū)1276。核心1的CDA 1280類(lèi)似地含有STVM1 1281以及核心1線(xiàn)程0的線(xiàn)程描述區(qū)1282、核心1線(xiàn)程1的線(xiàn)程描述區(qū)1284及核心1線(xiàn)程2的線(xiàn)程描述區(qū)1286。這些線(xiàn)程描述區(qū)1272、1274、1276、1282、1284、1286中的每一者含有用于對(duì)應(yīng)于該線(xiàn)程描述區(qū)的線(xiàn)程(分別為核心0線(xiàn)程0、核心0線(xiàn)程1、核心0線(xiàn)程2、核心1線(xiàn)程0、核心1線(xiàn)程1及核心1線(xiàn)程2)的狀態(tài)描述地址(SDA)1273、1275、1277、1283、1285、1287。STVM中的位及線(xiàn)程描述區(qū)的陣列兩者可通過(guò)線(xiàn)程標(biāo)識(shí)來(lái)編制索引。這些SDA使系統(tǒng)管理程序更容易管理核心內(nèi)的線(xiàn)程且使機(jī)器更容易呈現(xiàn)客體處理器間中斷。

圖13描繪根據(jù)一個(gè)實(shí)施例的用于管理多線(xiàn)程化核心的過(guò)程流,其使用圖12中所展示的COSCA。在圖13中所展示的實(shí)例中,在塊1302處,在第一物理線(xiàn)程(例如,由狀態(tài)描述1213定義的核心0線(xiàn)程1)上運(yùn)行的客體操作系統(tǒng)(OS)已確定其將用信號(hào)通知第二邏輯線(xiàn)程或目標(biāo)線(xiàn)程(例如,由狀態(tài)描述1253定義的核心1線(xiàn)程2)。在塊1304處,客體OS(例如)通過(guò)發(fā)出處理器間中斷指令執(zhí)行此操作。作為執(zhí)行處理器間中斷指令的一部分,機(jī)器使用COSCA來(lái)仿真客體處理器間中斷指令。因?yàn)榘繕?biāo)邏輯線(xiàn)程的邏輯核心在發(fā)信號(hào)進(jìn)行時(shí)可能或可能未被分派,所以由機(jī)器仿真處理器間中斷指令。在塊1306處,機(jī)器定位(例如,經(jīng)由SCA0 1214,這是因?yàn)樘幚砥鏖g中斷指令由邏輯核心0線(xiàn)程1執(zhí)行)用于客體配置的公用區(qū)(例如,COSCA公用區(qū)1260),以便存取SCVM(例如,SCVM 1261)以檢驗(yàn)?zāi)繕?biāo)核心的有效性且獲得適當(dāng)CDAA(例如,CDAA1 1264,這是因?yàn)槟繕?biāo)線(xiàn)程系在核心1上)。

接下來(lái),在塊1308處,機(jī)器定位(例如,經(jīng)由CDA1 1264)用于目標(biāo)核心的核心描述區(qū)(例如,CDA 1280)。機(jī)器通過(guò)存取核心描述區(qū)中的STVM(例如,CDA 1280中的STVM1 1281)而檢驗(yàn)?zāi)繕?biāo)線(xiàn)程為有效的。在塊1310處,機(jī)器定位線(xiàn)程描述區(qū)(例如,對(duì)應(yīng)于線(xiàn)程2的線(xiàn)程描述區(qū)1286,這是因?yàn)槟繕?biāo)線(xiàn)程為線(xiàn)程2)。在塊1312處,將關(guān)于中斷的信息記錄在用于目標(biāo)線(xiàn)程的線(xiàn)程描述區(qū)中(例如,其將發(fā)送線(xiàn)程的身份放置至線(xiàn)程描述區(qū)1286中)。在塊1314處,機(jī)器定位(例如,經(jīng)由線(xiàn)程描述區(qū)1286中的SDA12 1287)目標(biāo)線(xiàn)程的狀態(tài)描述(例如,核心1TID2的次要狀態(tài)描述1253)。在塊1316處,使中斷在目標(biāo)狀態(tài)描述中待決(例如,在核心1TID2的狀態(tài)描述1253中設(shè)定IP位1257)。因此,當(dāng)目標(biāo)邏輯處理器(例如,核心1線(xiàn)程2)被分派在物理線(xiàn)程上且被啟用以用于中斷時(shí),機(jī)器將向客體操作系統(tǒng)呈現(xiàn)中斷(在啟用情況下)。如果目標(biāo)邏輯處理器已在中斷變?yōu)榇龥Q時(shí)被分派,則一旦其被啟用,其便將采取中斷。

存在機(jī)器亦可利用邏輯核心內(nèi)的線(xiàn)程具有共同屬性的事實(shí)的情況。舉例而言,核心分派自然地適于使邏輯核心上的所有客體線(xiàn)程駐留在同一LPAR區(qū)或分區(qū)中。該設(shè)計(jì)可通過(guò)僅必須每核心一個(gè)地而非每線(xiàn)程一個(gè)地實(shí)施與該分區(qū)相關(guān)聯(lián)的事物來(lái)最小化硬件。另外,亦可簡(jiǎn)化復(fù)雜的控制邏輯(例如,全系統(tǒng)中斷的處置),這是因?yàn)槠浔仨殐H處理單個(gè)核心值。

在一個(gè)實(shí)施例中,表示多線(xiàn)程化客體的狀態(tài)描述的組中的每一字段(或字段內(nèi)的位)被分類(lèi)為主要、核心公用或線(xiàn)程特定。主要字段僅駐留在主要狀態(tài)描述中且適用于邏輯核心中的所有處理器;代表核心的任何線(xiàn)程對(duì)主要字段的任何存取必須使用來(lái)自相關(guān)聯(lián)主要狀態(tài)描述的值。此分類(lèi)用于定義核心的總狀態(tài)(諸如,線(xiàn)程有效性屏蔽)的字段。核心公用字段在邏輯核心內(nèi)的所有處理器當(dāng)中是公用的且此字段在組中的每一狀態(tài)描述中具有相同值;代表處理器對(duì)這些字段中的一者的任何存取可使用來(lái)自該組中的任何狀態(tài)描述的值。此分類(lèi)用于在整個(gè)核心上應(yīng)用的字段,諸如LP編號(hào)。需要系統(tǒng)管理程序維護(hù)在所有狀態(tài)描述中的核心公用字段,但允許機(jī)器存取任何線(xiàn)程的狀態(tài)描述中的此字段,無(wú)論哪個(gè)提供最佳性能。因?yàn)檫@些字段并不由系統(tǒng)管理程序常常改變但常常由機(jī)器每次進(jìn)入虛擬執(zhí)行時(shí)存取,所以將字段定義為核心公用而非線(xiàn)程特定的允許虛擬執(zhí)行進(jìn)入(例如)以使用主要狀態(tài)描述中的值自主要線(xiàn)程加載次要線(xiàn)程工具。線(xiàn)程特定字段對(duì)每一邏輯線(xiàn)程為特定的;代表任何給定線(xiàn)程對(duì)這些字段中的一者的任何存取必須使用來(lái)自該線(xiàn)程的狀態(tài)描述的值。此分類(lèi)用于在線(xiàn)程之間通常是獨(dú)特的字段,諸如客體前綴。

一個(gè)實(shí)施例包括核心分派指令的機(jī)器實(shí)現(xiàn)。當(dāng)系統(tǒng)管理程序發(fā)出核心分派或指定MT的開(kāi)始VE指令時(shí),由相關(guān)聯(lián)的狀態(tài)描述組描述的邏輯核心通過(guò)虛擬執(zhí)行進(jìn)入(VE進(jìn)入)毫碼加載至物理核心中。作為此過(guò)程的一部分,將每一有效邏輯線(xiàn)程的狀態(tài)加載至物理線(xiàn)程中。邏輯線(xiàn)程至物理線(xiàn)程的映射可為直接的一對(duì)一映射或可被虛擬化。在VE進(jìn)入開(kāi)始之前,每一物理線(xiàn)程的內(nèi)容含有最后在其上運(yùn)行的任一虛擬線(xiàn)程的狀態(tài)。因此,VE進(jìn)入毫碼用新分派的客體線(xiàn)程的狀態(tài)替換整個(gè)狀態(tài)。

當(dāng)核心分派由單線(xiàn)程化系統(tǒng)管理程序調(diào)用時(shí),毫碼的職責(zé)為將個(gè)體客體線(xiàn)程(邏輯處理器)狀態(tài)加載至硬件中且設(shè)定硬件直至開(kāi)始多線(xiàn)程化執(zhí)行。為了通過(guò)允許每一物理線(xiàn)程并行地加載其自身狀態(tài)的大部分來(lái)改進(jìn)效率,毫碼可針對(duì)次要線(xiàn)程中的每一者加載少數(shù)硬件寄存器(由主要線(xiàn)程抑或另一已初始化的次要線(xiàn)程)。此加載可需要自硬件觀(guān)點(diǎn)來(lái)看當(dāng)前不活動(dòng)的次要線(xiàn)程“被喚醒”以開(kāi)始執(zhí)行將完成其自身客體狀態(tài)的初始化的毫碼例程且最終開(kāi)始執(zhí)行客體程序。存在以下?tīng)顩r:盡管無(wú)系統(tǒng)管理程序或客體程序代碼正在次要線(xiàn)程上運(yùn)行,但內(nèi)部固件可正運(yùn)行以便處置(例如)一些內(nèi)部系統(tǒng)管理功能。如果為如此狀況,則機(jī)器必須協(xié)調(diào)此執(zhí)行與客體線(xiàn)程的分派。

存在可被指定以適用于整個(gè)核心的一些操作,諸如TLB的清除。此情形消除對(duì)每一線(xiàn)程判定清除是否必要且在必要時(shí)執(zhí)行該清除的需求。此外,存在在核心內(nèi)的物理線(xiàn)程之間共享或公用的一些核心資源。毫碼可利用以下事實(shí):需要僅自單個(gè)線(xiàn)程加載共享資源且如果認(rèn)識(shí)到進(jìn)行節(jié)省,則單個(gè)線(xiàn)程可加載公用線(xiàn)程資源的所有副本。VE進(jìn)入毫碼亦可使用客體多線(xiàn)程啟用及線(xiàn)程有效性位以繞過(guò)無(wú)效邏輯線(xiàn)程的初始化,以便致力于加速初始化毫碼在有效線(xiàn)程上的執(zhí)行。靈活硬件設(shè)計(jì)允許毫碼的實(shí)施例隨設(shè)計(jì)開(kāi)發(fā)而使其實(shí)施優(yōu)化。

現(xiàn)轉(zhuǎn)向包括圖14A及圖14B的圖14,大體展示根據(jù)一個(gè)實(shí)施例的核心分派的機(jī)器實(shí)現(xiàn)。如圖14A中所展示,在塊1400處,由在單個(gè)線(xiàn)程(被稱(chēng)為主要線(xiàn)程)上運(yùn)行的系統(tǒng)管理程序使用指定MT的開(kāi)始VE指令來(lái)初始化核心分派?;谙到y(tǒng)管理程序發(fā)出開(kāi)始VE指令,在主要線(xiàn)程上調(diào)用VE進(jìn)入毫碼,該主要線(xiàn)程為發(fā)出所述指令的線(xiàn)程且其通過(guò)在用于整個(gè)核心的硬件上發(fā)起多線(xiàn)程而開(kāi)始。此初始化的大部分可包括測(cè)試來(lái)自所有可適用的次要線(xiàn)程的硬件狀態(tài)位及/或設(shè)定所有可適用的次要線(xiàn)程中的硬件控制位或字段。圖14A中所展示的控制及狀態(tài)位1450可在邏輯上駐留于次要線(xiàn)程自身的硬件中,或它們可在邏輯上駐留于在線(xiàn)程之間共享但表示及控制次要線(xiàn)程的公用硬件資源中。在塊1402處,VE進(jìn)入毫碼使用狀態(tài)描述中的線(xiàn)程有效性屏蔽(TVM)判定自軟件觀(guān)點(diǎn)來(lái)看哪個(gè)(哪些)客體邏輯線(xiàn)程有效且因此需要被加載至硬件中。其亦判定有效邏輯線(xiàn)程至物理線(xiàn)程的映射。

圖14A的塊1404至1414由毫碼執(zhí)行以檢驗(yàn)所請(qǐng)求的物理線(xiàn)程是否可用。在塊1404處,毫碼防止可適用的次要硬件線(xiàn)程采用可調(diào)用內(nèi)部代碼的新中斷或開(kāi)始運(yùn)行任何新程序代碼。此可通過(guò)在次要線(xiàn)程中設(shè)定適當(dāng)硬件控制來(lái)實(shí)現(xiàn)。在塊1406處,判定軟件是否正在次要線(xiàn)程上運(yùn)行。在一實(shí)施例中,在主要線(xiàn)程上正發(fā)出開(kāi)始VE指令的系統(tǒng)管理程序保證此核心上的其他硬件線(xiàn)程并不執(zhí)行任何程序代碼(例如,系統(tǒng)管理程序或客體代碼)。在另一實(shí)施例中,發(fā)出開(kāi)始VE指令的系統(tǒng)管理程序可能不能夠容易地判定此新的開(kāi)始VE所需的任何其他硬件線(xiàn)程是否正執(zhí)行程序代碼,例如,代碼與獨(dú)立開(kāi)始VE相關(guān)聯(lián)。在此狀況下,VE進(jìn)入毫碼在塊1406處檢查關(guān)于次要線(xiàn)程(多個(gè))的適當(dāng)硬件狀態(tài)位(多個(gè))。

如果在塊1406處判定程序代碼正在運(yùn)行客體次要線(xiàn)程所需的硬件上運(yùn)行,則新的開(kāi)始VE指令完成且在塊1408處,系統(tǒng)管理程序由機(jī)器告知開(kāi)始VE指令不成功且可能被告知當(dāng)前可用硬件線(xiàn)程的數(shù)目。作為響應(yīng),系統(tǒng)管理程序可在于塊1400處再次發(fā)出開(kāi)始VE指令之前采取適當(dāng)動(dòng)作,諸如減少待分派的有效客體線(xiàn)程的數(shù)目或等待一些預(yù)定時(shí)間,如由塊1410所指示的。如果在塊1406處判定硬件可用,則處理繼續(xù)至塊1412。在塊1412處,毫碼(例如)通過(guò)檢查硬件中的適當(dāng)狀態(tài)位(多個(gè))來(lái)判定可適用的次要線(xiàn)程中的任一者是否正運(yùn)行內(nèi)部固件代碼。如果正執(zhí)行,則在一個(gè)實(shí)施例中,主要線(xiàn)程等待次要線(xiàn)程(多個(gè))完成運(yùn)行內(nèi)部代碼且在等待的同時(shí),為了避免掛起,主要線(xiàn)程可實(shí)行某些中斷。然而,這可阻止次要線(xiàn)程(多個(gè))采取其他中斷以使它們可更快速地達(dá)到閑置狀態(tài)。處理接著在塊1416處繼續(xù)。在另一實(shí)施例中,如果硬件線(xiàn)程正運(yùn)行內(nèi)部固件代碼(如在塊1412處所判定),則機(jī)器可在塊1414處使開(kāi)始VE指令無(wú)效且將控制返回至系統(tǒng)管理程序。此操作給予主要線(xiàn)程采取內(nèi)部固件中斷且避免潛在掛起的機(jī)會(huì),且一旦無(wú)中斷在主要線(xiàn)程上待決,則再次執(zhí)行開(kāi)始VE指令。當(dāng)與暫停內(nèi)部固件及在多線(xiàn)程工作完成時(shí)在硬件上再次重新開(kāi)始相比較時(shí),這些實(shí)施例中的兩者具有益處,這是因?yàn)楣碳a操作常常為系統(tǒng)操作(例如,并行升級(jí))必需的且此外,線(xiàn)程充分不頻繁地運(yùn)行內(nèi)部固件使得等待其完成是可行的選項(xiàng)。

處理接著在塊1416處繼續(xù)以開(kāi)始將邏輯線(xiàn)程(多個(gè))加載至物理核心上的物理線(xiàn)程中。在塊1416處,毫碼檢查且采用與某些異常條件相關(guān)的異常。異常條件中的一些可適用于開(kāi)始VE指令自身(例如,無(wú)效狀態(tài)描述環(huán)結(jié)構(gòu)),且其他異常條件與可適用于次要邏輯線(xiàn)程的條件相關(guān)(例如,關(guān)于NSD的存取異常)。在塊1418處,可清除來(lái)自客體硬件后備緩沖器(包括TLB)的項(xiàng)。此清除可包括在適當(dāng)時(shí)清除用于次要線(xiàn)程(多個(gè))的后備緩沖器。在塊1420處,加載來(lái)自主要及次要狀態(tài)描述的最少狀態(tài)且初始化包括有效線(xiàn)程中的每一者的所需硬件工具。在一實(shí)施例中,最少狀態(tài)包括次要線(xiàn)程的狀態(tài)描述地址。在塊1422處,將次要線(xiàn)程(多個(gè))的硬件控制設(shè)定為停止取回任何內(nèi)部指令流(多個(gè))。此可簡(jiǎn)化自單個(gè)線(xiàn)程執(zhí)行至多線(xiàn)程化執(zhí)行的切換。在塊1424處,針對(duì)其他有效次要線(xiàn)程中的每一者加載毫碼指令地址(毫IA)。毫IA為一旦次要線(xiàn)程開(kāi)始取回內(nèi)部指令流,次要線(xiàn)程便開(kāi)始執(zhí)行所處的位置且其通常指向毫碼中的將完成每一有效邏輯線(xiàn)程的初始化的位置。主要線(xiàn)程繼續(xù)其對(duì)VE進(jìn)入毫碼的執(zhí)行且因此,此處不需要加載新的毫IA。在塊1426處,在一個(gè)實(shí)施例中,主要線(xiàn)程通過(guò)設(shè)定硬件控制來(lái)喚醒次要線(xiàn)程,硬件控制將次要線(xiàn)程的執(zhí)行模式改變?yōu)楹聊J?,其使次要線(xiàn)程開(kāi)始在先前加載的毫IA處的執(zhí)行。在另一實(shí)施例中,主要線(xiàn)程(Ta)可喚醒第一次要線(xiàn)程(Tb);Tb可喚醒下一次要線(xiàn)程(Tc);等等,直至所有有效線(xiàn)程活動(dòng)且在硬件中運(yùn)行。在一實(shí)施例中,次要線(xiàn)程將直至另一線(xiàn)程將其執(zhí)行模式設(shè)定為毫碼執(zhí)行模式或毫模式時(shí)才開(kāi)始執(zhí)行毫碼。

現(xiàn)參看圖14B,在塊1428及1478處,主要線(xiàn)程及每一有效次要線(xiàn)程執(zhí)行完成將相關(guān)聯(lián)的客體邏輯線(xiàn)程狀態(tài)加載至硬件中所需的毫碼。在一實(shí)施例中,該狀態(tài)包括如圖4中所展示的客體通用寄存器(GR)402、存取寄存器(AR)404、控制寄存器(CR)406、前綴寄存器410、客體定時(shí)器408、虛擬CPU編號(hào)(VCN)412、程序狀態(tài)字(PSW)及指令地址(IA)414、攔截控制(IC)位420及邏輯分區(qū)編號(hào)(LPN)432。在塊1430及1480處,主要線(xiàn)程及次要線(xiàn)程完成VE進(jìn)入的執(zhí)行且它們退出毫碼模式(例如,毫模式)。在塊1432及1482處,它們開(kāi)始執(zhí)行客體線(xiàn)程程序指令流。在一實(shí)施例中,每一線(xiàn)程的VE進(jìn)入完成獨(dú)立于其他線(xiàn)程的VE進(jìn)入完成。在另一實(shí)施例中,線(xiàn)程在完成VE進(jìn)入之前同步。

在一實(shí)施例中,為了支持核心分派的使用及單線(xiàn)程化地運(yùn)行的系統(tǒng)管理程序,可提供自虛擬執(zhí)行的協(xié)調(diào)退出(VE退出),其中給定核心中的所有客體線(xiàn)程同時(shí)退回至ST主機(jī)。在協(xié)調(diào)VE退出的情形中,VE退出的類(lèi)型可劃分成三種類(lèi)別:(1)與主機(jī)操作有關(guān)的主機(jī)中斷;(2)與客體操作有關(guān)的主機(jī)中斷;及(3)客體攔截。主機(jī)外部I/O及一些機(jī)器檢查中斷屬于VE退出類(lèi)別(1)。對(duì)于此狀況,需要所有客體線(xiàn)程退出虛擬執(zhí)行模式,以便允許主機(jī)處置中斷。此中斷將可能引起主機(jī)分派不同客體。如果在以虛擬執(zhí)行模式運(yùn)行時(shí)發(fā)生中斷,則可在所有線(xiàn)程上檢測(cè)到主機(jī)中斷,使得所有線(xiàn)程可退出虛擬執(zhí)行模式,或可在單個(gè)線(xiàn)程上檢測(cè)到主機(jī)中斷,所述單個(gè)線(xiàn)程接著用信號(hào)通知其他線(xiàn)程它們是否應(yīng)退出。

VE退出類(lèi)別(2)(與客體有關(guān)的主機(jī)中斷)可包括一些機(jī)器檢查中斷(諸如,不可糾正的存儲(chǔ)錯(cuò)誤)。在非多線(xiàn)程化情景下,這些條件作為主機(jī)中斷來(lái)呈現(xiàn)。在核心分派情況下,僅存在一個(gè)主機(jī)線(xiàn)程,但因?yàn)檫@些異常與客體操作有關(guān),所以多個(gè)客體線(xiàn)程針對(duì)同一主機(jī)中斷檢測(cè)到相異及不同的原因是可能的。為適應(yīng)此情形,對(duì)于核心分派,在適當(dāng)時(shí),將這些主機(jī)中斷替代地呈現(xiàn)于對(duì)應(yīng)客體狀態(tài)描述中作為新類(lèi)型的客體攔截且與下文所描述的類(lèi)別(3)相同地處置。在一實(shí)施例中,歸因于客體存儲(chǔ)器引用而產(chǎn)生的主機(jī)地址轉(zhuǎn)換錯(cuò)誤中斷亦屬于類(lèi)別(2),且可呈現(xiàn)為另一新類(lèi)型的客體攔截。

對(duì)于VE退出類(lèi)別(2)及(3)兩者(上述),客體攔截(甚至在客體多線(xiàn)程化環(huán)境中)與單個(gè)客體線(xiàn)程有關(guān)且獨(dú)立于另一線(xiàn)程的客體執(zhí)行。進(jìn)一步可能的,多個(gè)客體線(xiàn)程同時(shí)認(rèn)識(shí)到此類(lèi)條件,需要主機(jī)處置它們中的全部。通常,當(dāng)呈現(xiàn)有攔截時(shí),主機(jī)將仿真代表客體的一些行為且接著重新分派該同一客體。對(duì)于這些狀況,因?yàn)橹鳈C(jī)正單個(gè)線(xiàn)程化地運(yùn)行,所以所有客體線(xiàn)程必須在主機(jī)可處置攔截(多個(gè))之前退出虛擬執(zhí)行模式。這可通過(guò)等待所有線(xiàn)程自然地退出或通過(guò)在一個(gè)線(xiàn)程已判定其必須攔截回至主機(jī)時(shí)用信號(hào)通知其他線(xiàn)程退出而實(shí)現(xiàn)。此被稱(chēng)為“協(xié)調(diào)VE退出”。

當(dāng)每一線(xiàn)程判定其必須退出虛擬執(zhí)行模式時(shí),其進(jìn)入VE退出,且在初始VE退出同步循環(huán)中等待,直至所有其他有效線(xiàn)程亦準(zhǔn)備退出。如果實(shí)施需要,則其用信號(hào)通知其他線(xiàn)程在進(jìn)入此同步循環(huán)之前退出。當(dāng)在VE退出同步循環(huán)中時(shí),僅處置最少中斷。為了考慮在無(wú)主機(jī)中斷且無(wú)客體攔截應(yīng)用時(shí)需要客體線(xiàn)程退出虛擬執(zhí)行模式的情景,定義“無(wú)動(dòng)作”攔截以向主機(jī)指示不需要代表此客體的攔截動(dòng)作。

一旦所有線(xiàn)程已進(jìn)入初始VE退出同步循環(huán),客體數(shù)據(jù)在所有有效狀態(tài)描述中的存儲(chǔ)便可完成。亦即,駐留于硬件中的當(dāng)前客體狀態(tài)被保存在對(duì)應(yīng)狀態(tài)描述中,此邏輯客體線(xiàn)程因此可在稍后被重新分派。在此存儲(chǔ)完成之后需要最終VE退出同步點(diǎn)以保證對(duì)次要線(xiàn)程狀態(tài)描述的所有更新在控制返回至系統(tǒng)管理程序(其通常在主要線(xiàn)程上運(yùn)行)之前完成。一旦VE退出完成,系統(tǒng)管理程序便可處理環(huán)中的每一線(xiàn)程以判定是否呈現(xiàn)攔截,且如果呈現(xiàn),則適當(dāng)?shù)靥幹脭r截。在如此進(jìn)行之后,其可接著在物理處理器上重新分派此同一客體邏輯核心或不同客體邏輯核心。

一個(gè)實(shí)施例包括自包含多線(xiàn)程化客體執(zhí)行的擱置及控制至單線(xiàn)程化主機(jī)的返回的虛擬執(zhí)行的協(xié)調(diào)退出的機(jī)器實(shí)現(xiàn)。在MT環(huán)境中,在大多數(shù)條件下,虛擬執(zhí)行退出(VE退出)毫碼負(fù)責(zé)用信號(hào)向其他有效客體線(xiàn)程通知一旦退出可行便退出虛擬執(zhí)行。特定言之,如果線(xiàn)程當(dāng)前正運(yùn)行無(wú)法中斷以退出虛擬執(zhí)行的內(nèi)部代碼,則由請(qǐng)求退出的線(xiàn)程經(jīng)歷的延遲可為顯著的。在一個(gè)線(xiàn)程正等待其他線(xiàn)程退出虛擬執(zhí)行時(shí),毫碼可用于處置某些中斷,諸如可產(chǎn)生懸置條件的那些中斷或可影響整個(gè)系統(tǒng)性能的那些中斷。如果其他中斷現(xiàn)可僅延遲其他線(xiàn)程(其工作可已被中斷)已被用信號(hào)通知的自虛擬執(zhí)行的最終退出,則毫碼處置其他中斷可能并非最佳的。這必須都被完成,同時(shí)仍維持恰當(dāng)?shù)闹袛鄡?yōu)先級(jí)。

此外,退出由毫碼進(jìn)行的虛擬執(zhí)行所需的協(xié)調(diào)的大部分必須考慮每一線(xiàn)程的狀態(tài)。舉例而言,其必須考慮每一邏輯線(xiàn)程是否有效且物理線(xiàn)程是否正運(yùn)行內(nèi)部代碼。無(wú)關(guān)于主要線(xiàn)程是否無(wú)效,其必須仍被用信號(hào)通知,這是因?yàn)榇司€(xiàn)程通常為主機(jī)程序?qū)⒅匦吕^續(xù)所在的線(xiàn)程。此操作均使用內(nèi)部毫碼請(qǐng)求式中斷系統(tǒng)來(lái)實(shí)現(xiàn)。

毫碼亦可執(zhí)行一些動(dòng)作以釋放已由次要客體線(xiàn)程(多個(gè))使用但由于客體狀態(tài)已被保存且主機(jī)并不使用次要線(xiàn)程(多個(gè))而不再需要的物理寄存器。舉例而言,作為釋放資源的手段,毫碼可將被映射寄存器置0,這是因?yàn)樵谀承?shí)施中,硬件可將具有零內(nèi)容的所有邏輯寄存器映射至單個(gè)物理寄存器,使其他物理寄存器供主要線(xiàn)程使用??纱嬖诳稍诰€(xiàn)程之間共享且可被釋放以?xún)H由主要線(xiàn)程使用的其他資源。毫碼亦可屏蔽某些中斷,使得核心資源不會(huì)不必要地被用于調(diào)用毫碼。

一旦任何線(xiàn)程判定需要自虛擬執(zhí)行的退出,其便將用信號(hào)通知其他線(xiàn)程,如下文(例如)參看包括圖15A及圖15B的圖15所描述。所使用的過(guò)程可基于正退出虛擬執(zhí)行的線(xiàn)程是主要線(xiàn)程還是次要線(xiàn)程而變化。

在一實(shí)施例中,如果所有以下條件滿(mǎn)足,則主要線(xiàn)程可用信號(hào)通知有效次要線(xiàn)程以退出虛擬執(zhí)行:(1)其想要退出虛擬執(zhí)行模式且將控制返回至系統(tǒng)管理程序;(2)并非所有其他有效線(xiàn)程已在退出過(guò)程中(亦即,至少一個(gè)線(xiàn)程仍正運(yùn)行客體指令);(3)所有其他線(xiàn)程尚未被用信號(hào)通知以退出;及(4)存在至少一個(gè)其他有效線(xiàn)程。如果這些條件未滿(mǎn)足,則每一次要線(xiàn)程被給予時(shí)間以獨(dú)立地進(jìn)行清理且退出虛擬執(zhí)行。在一實(shí)施例中,若所有上述條件(1)至(3)滿(mǎn)足,則次要線(xiàn)程用信號(hào)通知主要線(xiàn)程(即使該線(xiàn)程無(wú)效)及所有其他有效次要線(xiàn)程以退出虛擬執(zhí)行模式。在一實(shí)施例中,即使次要線(xiàn)程為僅有的有效線(xiàn)程,其仍必須將信號(hào)發(fā)送至主要線(xiàn)程,這是因?yàn)槠浔仨氂眯盘?hào)通知主要線(xiàn)程以完成自虛擬執(zhí)行的協(xié)調(diào)退出。

現(xiàn)轉(zhuǎn)向包括圖15A及圖15B的圖15,大體展示根據(jù)一個(gè)實(shí)施例的自虛擬執(zhí)行的協(xié)調(diào)退出的機(jī)器實(shí)現(xiàn)。在圖15中所展示的實(shí)例中,在1502處,主要線(xiàn)程P正執(zhí)行客體指令流P,在1542處,次要線(xiàn)程A正執(zhí)行客體指令流A,且在1572處,次要線(xiàn)程B正執(zhí)行客體指令流B。在塊1544處,次要線(xiàn)程A判定其必須退出虛擬執(zhí)行且使用上文所描述的準(zhǔn)則在塊1546處判定其必須用信號(hào)通知其他線(xiàn)程以同樣退出。次要線(xiàn)程A通過(guò)進(jìn)行在主要線(xiàn)程P的硬件狀態(tài)控制1508及次要線(xiàn)程B的硬件狀態(tài)控制1578中待決的內(nèi)部退出虛擬執(zhí)行請(qǐng)求中斷來(lái)用信號(hào)通知其他線(xiàn)程。次要線(xiàn)程A的硬件狀態(tài)控制1548亦展示于圖15A中。當(dāng)對(duì)在針對(duì)主要線(xiàn)程P的塊1510處及針對(duì)次要線(xiàn)程B的塊1580處的內(nèi)部中斷作出響應(yīng)時(shí),每一線(xiàn)程檢查內(nèi)部中斷的原因且在針對(duì)主要線(xiàn)程P的塊1512處及在針對(duì)次要線(xiàn)程B的塊1582處判定內(nèi)部中斷是否為退出虛擬執(zhí)行請(qǐng)求。如果判定并非退出虛擬執(zhí)行請(qǐng)求,則主要線(xiàn)程P及次要線(xiàn)程B分別執(zhí)行塊1514及1584以處置另一中斷請(qǐng)求。

如果所述中斷為退出虛擬執(zhí)行請(qǐng)求,則在一實(shí)施例中,每一線(xiàn)程可獨(dú)立地執(zhí)行以下過(guò)程。在針對(duì)主要線(xiàn)程P的塊1516處及在針對(duì)次要線(xiàn)程B的塊1586處,判定所述線(xiàn)程是否有效??杉僭O(shè)請(qǐng)求自虛擬執(zhí)行的退出的次要線(xiàn)程A為有效的。對(duì)于判定為有效的線(xiàn)程,將來(lái)自硬件的大部分相關(guān)聯(lián)客體狀態(tài)保存至其自身的狀態(tài)描述中。如圖4中所展示,此狀態(tài)包括客體通用寄存器(GR)402、存取寄存器(AR)404、控制寄存器(CR)406、程序狀態(tài)字(PSW)及指令地址(IA)414。不需要保存在虛擬執(zhí)行期間不改變的客體狀態(tài),諸如虛擬CPU編號(hào)(VCN)412及邏輯分區(qū)編號(hào)(LPN)432。這在圖15A中展示于針對(duì)主要線(xiàn)程P的塊1518處、針對(duì)次要線(xiàn)程A的塊1558處及針對(duì)次要線(xiàn)程B的塊1588處。每一線(xiàn)程更新其內(nèi)部狀態(tài)以指示其處于初始VE退出同步點(diǎn)處。這在圖15A中展示于針對(duì)主要線(xiàn)程P的塊1520處、針對(duì)次要線(xiàn)程A的塊1560處及針對(duì)次要線(xiàn)程B的塊1590處。

所述線(xiàn)程均等待主要線(xiàn)程(例如,主要線(xiàn)程P)及所有有效次要線(xiàn)程(例如,次要線(xiàn)程A及B)到達(dá)初始同步點(diǎn),之后繼續(xù)。這在圖15A中展示于針對(duì)主要線(xiàn)程P的塊1521處、針對(duì)次要線(xiàn)程A的塊1561處及針對(duì)次要線(xiàn)程B的塊1591處。一旦所有線(xiàn)程到達(dá)退出虛擬執(zhí)行毫碼中的初始VE同步點(diǎn),所述線(xiàn)程中的每一者便結(jié)束更新?tīng)顟B(tài)描述中的適當(dāng)信息。此信息的實(shí)例可包括為圖4中的客體定時(shí)器408的一部分的客體CPU定時(shí)器。這在圖15A中展示于針對(duì)主要線(xiàn)程P的塊1522處、針對(duì)次要線(xiàn)程A的塊1562處及針對(duì)次要線(xiàn)程B的塊1592處。延遲此狀態(tài)保存直至同步點(diǎn)改進(jìn)了線(xiàn)程之間的客體計(jì)時(shí)一致性。

現(xiàn)參看圖15B,每一線(xiàn)程更新其自身的內(nèi)部狀態(tài)以指示其處于VE退出毫碼中的最終同步點(diǎn)處。這在圖15B中展示于針對(duì)主要線(xiàn)程P的塊1524處、針對(duì)次要線(xiàn)程A的塊1564處及針對(duì)次要線(xiàn)程B的塊1594處。此外,主要線(xiàn)程A在塊1526處等待所有線(xiàn)程到達(dá)最終同步點(diǎn)1599,之后在塊1528處繼續(xù)。每一次要線(xiàn)程設(shè)定內(nèi)部硬件位以指示其不再執(zhí)行有效程序指令流,其使機(jī)器退出毫模式且停止執(zhí)行代碼。這在圖15B中展示于針對(duì)次要線(xiàn)程A的塊1566處及針對(duì)次要線(xiàn)程B的塊1596處。在一實(shí)施例中,每一次要線(xiàn)程將不執(zhí)行任何程序代碼直至下一開(kāi)始VE,然而,其可按需執(zhí)行內(nèi)部代碼以處置內(nèi)部中斷。

一旦所有線(xiàn)程已到達(dá)VE退出毫碼中的最終同步點(diǎn)(在圖15B中展示為點(diǎn)1599),便在主要線(xiàn)程P上開(kāi)始單線(xiàn)程化執(zhí)行。主要線(xiàn)程P在塊1528處完成核心清理,在塊1530處將包括主機(jī)程序IA的系統(tǒng)管理程序狀態(tài)加載至硬件中,且在塊1532處退出毫模式。結(jié)果,主要線(xiàn)程P正在主機(jī)模式中運(yùn)行且將處置任何適當(dāng)?shù)闹鳈C(jī)中斷,且系統(tǒng)管理程序?qū)⑻幹萌魏慰腕w中斷。

技術(shù)效果及益處包括分派多線(xiàn)程化客體虛擬機(jī)的能力。

各實(shí)施例包括一種用于分派多線(xiàn)程化客體虛擬機(jī)(VM)的系統(tǒng)、方法及計(jì)算機(jī)程序產(chǎn)品。根據(jù)一個(gè)方面,一種計(jì)算機(jī)系統(tǒng)包括配置,所述配置具有被啟用以在單線(xiàn)程(ST)模式及多線(xiàn)程(MT)模式中操作的機(jī)器。此外,所述機(jī)器包括物理線(xiàn)程。所述機(jī)器被配置為執(zhí)行一種方法,所述方法包括發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在核心上分派包括多個(gè)邏輯線(xiàn)程的客體實(shí)體。所述客體實(shí)體包括客體VM的全部或一部分,且所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行。由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及以MT模式在所述核心上開(kāi)始執(zhí)行所述客體實(shí)體。

根據(jù)另一方面,提供一種用于在配置中分派多線(xiàn)程化客體虛擬機(jī)(VM)的計(jì)算機(jī)實(shí)施的方法。所述配置包括機(jī)器,所述機(jī)器具有被啟用以在單線(xiàn)程(ST)模式及多線(xiàn)程(MT)模式中操作的單個(gè)核心。所述核心包括物理線(xiàn)程。所述方法包括發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在所述核心上分派包括多個(gè)邏輯線(xiàn)程的客體實(shí)體。所述客體實(shí)體包括客體VM的全部或一部分,且所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行。由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及以MT模式在所述核心上開(kāi)始執(zhí)行所述客體實(shí)體。

另一方面包括一種用于在配置中分派多線(xiàn)程化客體虛擬機(jī)(VM)的計(jì)算機(jī)程序產(chǎn)品。所述配置包括機(jī)器,所述機(jī)器具有被啟用以在ST模式及MT模式中操作的單個(gè)核心。此外,所述機(jī)器包括物理線(xiàn)程。所述計(jì)算機(jī)程序產(chǎn)品包括體現(xiàn)有程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并非信號(hào)。所述程序指令能由處理電路讀取以使所述處理電路執(zhí)行一種方法。所述方法包括發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在所述核心上分派包括多個(gè)邏輯線(xiàn)程的客體實(shí)體。所述客體實(shí)體包括客體VM的全部或一部分,且所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行。由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及以MT模式在所述核心上開(kāi)始執(zhí)行所述客體實(shí)體。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中僅有效邏輯線(xiàn)程被映射至對(duì)應(yīng)物理線(xiàn)程。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述初始化包括:針對(duì)所述邏輯線(xiàn)程中的每一者將該邏輯線(xiàn)程的所述狀態(tài)的一部分加載至對(duì)應(yīng)物理線(xiàn)程中;及由每一被映射物理線(xiàn)程完成所述對(duì)應(yīng)邏輯線(xiàn)程的所述狀態(tài)的剩余部分的加載,所述狀態(tài)的所述剩余部分基于所述狀態(tài)的所述一部分來(lái)確定。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述狀態(tài)的所述一部分包括所述狀態(tài)的所述剩余部分的狀態(tài)描述的地址。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述物理線(xiàn)程中的所述一者針對(duì)所述邏輯線(xiàn)程中的每一者執(zhí)行加載該邏輯線(xiàn)程的所述狀態(tài)的一部分。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述執(zhí)行包括在所述初始化之前檢驗(yàn)所述被映射物理線(xiàn)程當(dāng)前未正在運(yùn)行任何程序代碼或內(nèi)部代碼。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中針對(duì)所述物理線(xiàn)程中的每一者基于該物理線(xiàn)程的初始化完成而執(zhí)行所述開(kāi)始執(zhí)行。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中針對(duì)所述物理線(xiàn)程中的每一者基于所有所述物理線(xiàn)程的初始化完成而執(zhí)行所述開(kāi)始執(zhí)行。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述執(zhí)行包括判定軟件正在所述被映射物理線(xiàn)程中的一者上運(yùn)行;及基于所述判定,完成所述開(kāi)始VE指令且向所述主機(jī)通知所述開(kāi)始VE指令失敗。

除上文所描述的特征中的一者或多者之外,或作為替代例,其他實(shí)施例可包括其中所述執(zhí)行包括判定內(nèi)部固件正在所述被映射物理線(xiàn)程中的一者上運(yùn)行;及基于所述判定,執(zhí)行以下各者中的至少一者:使所述開(kāi)始VE指令無(wú)效且將控制返回至所述主機(jī);及等待該被映射物理線(xiàn)程變得可用。

本文中所用的術(shù)語(yǔ),僅僅是為了描述特定的實(shí)施例,而不意圖限定本發(fā)明。本文中所用的單數(shù)形式的“一”和“該”,旨在也包括復(fù)數(shù)形式,除非上下文中明確地另行指出。還要知道,“包含”和/或“包括”在本說(shuō)明書(shū)中使用時(shí),說(shuō)明存在所指出的特征、整體、步驟、操作、單元和/或組件,但是并不排除存在或增加一個(gè)或多個(gè)其它特征、整體、步驟、操作、單元和/或組件,以及/或者它們的組合。

以下的權(quán)利要求中的對(duì)應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置(means)或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對(duì)一個(gè)或多個(gè)實(shí)施例的描述其目的在于示意和描述,并非是窮盡性的,也并非是要將本發(fā)明限定到所表述的形式。對(duì)于所屬技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),顯然可以作出許多修改和變型而不偏離本發(fā)明的精神和范圍。對(duì)實(shí)施例的選擇和描述,是為了最好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,使所屬技術(shù)領(lǐng)域的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實(shí)施例。

本發(fā)明的各種實(shí)施例的描述已為達(dá)成說(shuō)明的目的而呈現(xiàn),但不意欲為窮盡性的或限于所揭示的實(shí)施例。在不脫離所描述實(shí)施例的范圍及精神的情況下,許多修改及變化對(duì)于本領(lǐng)域技術(shù)人員將顯而易見(jiàn)。本文中所使用的術(shù)語(yǔ)被選擇以最好地解釋實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌?chǎng)中找到的技術(shù)的技術(shù)改進(jìn),或使其他本領(lǐng)域技術(shù)人員能夠理解本文所揭示的實(shí)施例。

現(xiàn)參看圖16,在一個(gè)實(shí)例中,計(jì)算機(jī)程序產(chǎn)品1600包括(例如)一個(gè)或多個(gè)存儲(chǔ)介質(zhì)1602以在其上存儲(chǔ)計(jì)算機(jī)可讀程序代碼裝置或邏輯1604從而提供及促進(jìn)本文中所描述的實(shí)施例的一個(gè)或多個(gè)方面,其中所述介質(zhì)可為有形的及/或非暫時(shí)性的。

本發(fā)明可以是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)可讀程序指令。

計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是但不限于電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式壓縮盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能盤(pán)(DVD)、記憶棒、軟盤(pán)、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無(wú)線(xiàn)電波或者其他自由傳播的電磁波、通過(guò)波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過(guò)光纖電纜的光脈沖)、或者通過(guò)電線(xiàn)傳輸?shù)碾娦盘?hào)。

這里所描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過(guò)網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無(wú)線(xiàn)網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無(wú)線(xiàn)傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。

用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語(yǔ)言的任意組合編寫(xiě)的源代碼或目標(biāo)代碼,所述編程語(yǔ)言包括面向?qū)ο蟮木幊陶Z(yǔ)言—諸如Smalltalk、C++等,以及常規(guī)的過(guò)程式編程語(yǔ)言—諸如“C”語(yǔ)言或類(lèi)似的編程語(yǔ)言。計(jì)算機(jī)可讀程序指令可以完全地在用戶(hù)計(jì)算機(jī)上執(zhí)行、部分地在用戶(hù)計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶(hù)計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類(lèi)的網(wǎng)絡(luò)—包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶(hù)計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。在一些實(shí)施例中,通過(guò)利用計(jì)算機(jī)可讀程序指令的狀態(tài)信息來(lái)個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本發(fā)明的各個(gè)方面。

這里參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。

這些計(jì)算機(jī)可讀程序指令可以提供給通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可以把這些計(jì)算機(jī)可讀程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。

也可以把計(jì)算機(jī)可讀程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。

附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。

權(quán)利要求書(shū)(按照條約第19條的修改)

1.一種用于分派多線(xiàn)程化客體虛擬機(jī)(VM)的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括:

配置,其包括機(jī)器,所述機(jī)器包括被啟用以在單線(xiàn)程(ST)模式及多線(xiàn)程(MT)模式中操作的單個(gè)核心,所述核心包括物理線(xiàn)程;

所述機(jī)器被配置為執(zhí)行一種方法,所述方法包括:

發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在所述核心上分派包括多個(gè)邏輯線(xiàn)程的客體虛擬機(jī)(VM),所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行,由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:

將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;

使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及

以MT模式在所述核心上開(kāi)始執(zhí)行所述客體虛擬機(jī)。

2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),包括:

標(biāo)識(shí)哪些邏輯線(xiàn)程有效;及

僅將有效邏輯線(xiàn)程映射至對(duì)應(yīng)物理線(xiàn)程。

3.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述初始化包括:

針對(duì)所述邏輯線(xiàn)程中的每一者將該邏輯線(xiàn)程的所述狀態(tài)的一部分加載至對(duì)應(yīng)物理線(xiàn)程中;

針對(duì)所述邏輯線(xiàn)程中的每一者確定該邏輯線(xiàn)程的所述狀態(tài)的剩余部分,該邏輯線(xiàn)程的所述狀態(tài)的剩余部分包括該邏輯線(xiàn)程的未包含在該邏輯線(xiàn)程的所述狀態(tài)的所述一部分中的內(nèi)容;及

由每一被映射物理線(xiàn)程完成所述對(duì)應(yīng)邏輯線(xiàn)程的所述狀態(tài)的所述剩余部分的加載。

4.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其中所述狀態(tài)的所述一部分包括所述狀態(tài)的所述剩余部分的狀態(tài)描述的地址。

5.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其中所述物理線(xiàn)程中的所述一者針對(duì)所述邏輯線(xiàn)程中的每一者執(zhí)行該邏輯線(xiàn)程的所述狀態(tài)的一部分的加載。

6.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述執(zhí)行進(jìn)一步包括:在所述初始化之前檢驗(yàn)所述被映射物理線(xiàn)程當(dāng)前未正在運(yùn)行任何程序代碼或內(nèi)部代碼。

7.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中針對(duì)所述物理線(xiàn)程中的每一者基于完成該物理線(xiàn)程的初始化而執(zhí)行所述開(kāi)始執(zhí)行。

8.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中針對(duì)所述物理線(xiàn)程中的每一者基于完成所有所述物理線(xiàn)程的初始化而執(zhí)行所述開(kāi)始執(zhí)行。

9.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述執(zhí)行進(jìn)一步包括:

判定軟件正在所述被映射物理線(xiàn)程中的一者上運(yùn)行;及

基于所述判定,向所述主機(jī)通知所述開(kāi)始VE指令失敗。

10.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述執(zhí)行進(jìn)一步包括:

判定內(nèi)部固件正在所述被映射物理線(xiàn)程中的一者上運(yùn)行;及

基于所述判定,執(zhí)行以下各者中的至少一者:

使所述開(kāi)始VE指令無(wú)效且將控制返回至所述主機(jī);及

等待該被映射物理線(xiàn)程變得可用。

11.一種用于在配置中分派多線(xiàn)程化客體虛擬機(jī)(VM)的計(jì)算機(jī)實(shí)施的方法,所述配置包括機(jī)器,所述機(jī)器包括被啟用以在單線(xiàn)程(ST)模式及多線(xiàn)程(MT)模式中操作的單個(gè)核心,所述核心包括物理線(xiàn)程,所述機(jī)器實(shí)施一種方法,所述方法包括:

發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在所述核心上分派包括多個(gè)邏輯線(xiàn)程的客體虛擬機(jī),所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行,由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:

將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;

使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及

以MT模式在所述核心上開(kāi)始執(zhí)行所述客體虛擬機(jī)。

12.如權(quán)利要求11所述的方法,包括:

標(biāo)識(shí)哪些邏輯線(xiàn)程有效;及

僅將有效邏輯線(xiàn)程映射至對(duì)應(yīng)物理線(xiàn)程。

13.如權(quán)利要求11所述的方法,其中所述初始化包括:

針對(duì)所述邏輯線(xiàn)程中的每一者將該邏輯線(xiàn)程的所述狀態(tài)的一部分加載至對(duì)應(yīng)物理線(xiàn)程中;

針對(duì)所述邏輯線(xiàn)程中的每一者確定該邏輯線(xiàn)程的所述狀態(tài)的剩余部分,該邏輯線(xiàn)程的所述狀態(tài)的剩余部分包括該邏輯線(xiàn)程的未包含在該邏輯線(xiàn)程的所述狀態(tài)的所述一部分中的內(nèi)容;及

由每一被映射物理線(xiàn)程完成所述對(duì)應(yīng)邏輯線(xiàn)程的所述狀態(tài)的所述剩余部分的加載。

14.如權(quán)利要求11所述的方法,其中所述物理線(xiàn)程中的所述一者針對(duì)所述邏輯線(xiàn)程中的每一者執(zhí)行該邏輯線(xiàn)程的所述狀態(tài)的一部分的加載。

15.如權(quán)利要求11所述的方法,其中所述執(zhí)行進(jìn)一步包括:在所述初始化之前檢驗(yàn)所述被映射物理線(xiàn)程當(dāng)前未正在運(yùn)行任何程序代碼或內(nèi)部代碼。

16.如權(quán)利要求11所述的方法,其中針對(duì)所述物理線(xiàn)程中的每一者基于完成該物理線(xiàn)程的初始化而執(zhí)行所述開(kāi)始執(zhí)行。

17.一種用于在配置中分派多線(xiàn)程化客體虛擬機(jī)(VM)的計(jì)算機(jī)程序產(chǎn)品,所述配置包括機(jī)器,所述機(jī)器包括被啟用以在單線(xiàn)程(ST)模式及多線(xiàn)程(MT)模式中操作的單個(gè)核心,所述核心包括物理線(xiàn)程,所述計(jì)算機(jī)程序產(chǎn)品包括:

體現(xiàn)有程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并非信號(hào),所述程序指令可由處理電路讀取以使所述處理電路執(zhí)行一種方法,所述方法包括:

發(fā)出開(kāi)始虛擬執(zhí)行(開(kāi)始VE)指令以在所述核心上分派包括多個(gè)邏輯線(xiàn)程的客體虛擬機(jī),所述發(fā)出由以所述ST模式在所述核心上的所述物理線(xiàn)程中的一者上運(yùn)行的主機(jī)進(jìn)行,由所述機(jī)器執(zhí)行所述開(kāi)始VE指令包括:

將所述邏輯線(xiàn)程中的每一者映射至所述物理線(xiàn)程中的對(duì)應(yīng)一者;

使用對(duì)應(yīng)邏輯線(xiàn)程的狀態(tài)初始化被映射物理線(xiàn)程中的每一者;及

以MT模式在所述核心上開(kāi)始執(zhí)行所述客體虛擬機(jī)。

18.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述方法進(jìn)一步包括:

標(biāo)識(shí)哪些邏輯線(xiàn)程有效;及

僅將有效邏輯線(xiàn)程映射至對(duì)應(yīng)物理線(xiàn)程。

19.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述初始化包括:

針對(duì)所述邏輯線(xiàn)程中的每一者將該邏輯線(xiàn)程的所述狀態(tài)的一部分加載至對(duì)應(yīng)物理線(xiàn)程中;

針對(duì)所述邏輯線(xiàn)程中的每一者確定該邏輯線(xiàn)程的所述狀態(tài)的剩余部分,該邏輯線(xiàn)程的所述狀態(tài)的剩余部分包括該邏輯線(xiàn)程的未包含在該邏輯線(xiàn)程的所述狀態(tài)的所述一部分中的內(nèi)容;及

由每一被映射物理線(xiàn)程完成所述對(duì)應(yīng)邏輯線(xiàn)程的所述狀態(tài)的所述剩余部分的加載。

20.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中針對(duì)所述物理線(xiàn)程中的每一者基于完成該物理線(xiàn)程的初始化而執(zhí)行所述開(kāi)始執(zhí)行。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1