TWI614680B - 用於分派電腦中多執行緒之開始虛擬執行指令 - Google Patents

用於分派電腦中多執行緒之開始虛擬執行指令 Download PDF

Info

Publication number
TWI614680B
TWI614680B TW104109237A TW104109237A TWI614680B TW I614680 B TWI614680 B TW I614680B TW 104109237 A TW104109237 A TW 104109237A TW 104109237 A TW104109237 A TW 104109237A TW I614680 B TWI614680 B TW I614680B
Authority
TW
Taiwan
Prior art keywords
core
thread
threads
state
entity
Prior art date
Application number
TW104109237A
Other languages
English (en)
Other versions
TW201610838A (zh
Inventor
強納森D 布瑞布里
法迪Y 布撒巴
馬克S 費洛
查爾士W 二世 蓋尼
丹F 葛瑞納
麗莎 克雷頓 海勒
克理斯俊 傑可比
傑佛瑞P 古巴拉
達米安L 歐西賽克
多納德W 席米得
提摩西J 史洛歌
Original Assignee
萬國商業機器公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 萬國商業機器公司 filed Critical 萬國商業機器公司
Publication of TW201610838A publication Critical patent/TW201610838A/zh
Application granted granted Critical
Publication of TWI614680B publication Critical patent/TWI614680B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

實施例係關於一電腦中之多執行緒。一態樣為一種電腦,該電腦包括具有一核心之一組態,該核心包括實體執行緒且可在單執行緒(ST)模式及多執行緒(MT)模式中操作。該電腦亦包括一主機程式,該主機程式經組態以在該核心上在該ST模式中執行以發出一開始虛擬執行(開始VE)指令,以分派包括一客體虛擬機(VM)之一客體實體。該開始VE指令係由該核心執行且包括自由該開始VE指令指定之一位置獲得具有一客體狀態之一狀態描述。該執行包括基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒,及基於該客體狀態以及該客體實體包括一單一客體執行緒抑或多個客體執行緒之一判定而在該MT模式或該ST模式中開始該等客體執行緒。

Description

用於分派電腦中多執行緒之開始虛擬執行指令
本發明大體上係關於多執行緒(MT),且更具體言之,係關於一種用於分派電腦中多執行緒之開始虛擬執行(開始VE)指令。
多執行緒(MT)提供用於增加可在無需新增額外核心的情況下在單一實體處理器核心內並行地操作之處理器執行緒之數目的方式。理想地,MT藉由使一或多個執行緒使用當前未由在同一核心上執行之其他執行緒使用的核心硬體之部分來提供此增加容量。舉例而言,在由一個執行緒中之快取未命中或其他延遲造成的延時期間,一或多個其他執行緒可利用核心資源,因此增加該等資源之利用率。實務上,即使此共用引起該等執行緒之間的某一干擾且需要某一額外硬體,MT仍提供使用比在每一執行緒在其自有隔離核心硬體上執行之情況下所需要之硬體更少的硬體來執行每一執行緒之工作的能力。常常,當執行緒之間的硬體資源之共用亦減低電腦系統上之總應變以將諸如來自記憶體之資料的資訊提供至兩個獨特核心時,可自MT得到額外益處。
通常,儘管MT提供硬體節省,但另一工作執行緒之新增會消耗超管理器(hypervisor)層級處之使用額外分離核心來提供增加容量將需要的相同協調成本。在許多情況下,一旦達成某一定標比率(scaling ratio),用以協調工作執行緒之間的資源的附加項(無論在單一核心抑 或共用核心上執行)就相當大且可減低或甚至勝於由執行獨立工作執行緒之能力所看到的益處。亦即,一般而言,隨著待管理事物之數目增加,存在更多管理附加項。
實施例包括一種用以開始用於分派一電腦中之多個執行緒之虛擬執行指令的系統、方法及電腦程式產品。根據一項態樣,一種電腦系統包括一組態,該組態具有經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心。該核心包括實體執行緒。該電腦系統亦包括一主機程式,該主機程式經組態以在該核心上在該ST模式中執行以發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體。該客體實體包括一客體虛擬機(VM)之全部或部分。該開始VE指令係由該核心執行。該執行包括自由該開始VE指令指定之一位置獲得一第一狀態描述。該第一狀態描述具有一客體狀態。該執行亦包括基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒。基於該客體狀態且基於判定該客體實體包括多個客體執行緒,在該核心上在該MT模式中開始該等客體執行緒。該等客體執行緒彼此獨立地執行。基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,在該核心上在該ST模式中開始該客體執行緒。
根據另一態樣,提供一種用於分派一組態中之多個執行緒的電腦實施方法。該組態包括經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心。該核心包括實體執行緒。該方法包括由在該核心上在該ST模式中執行之一主機程式發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體。該客體實體包括一客體VM之全部或部分,且該開始VE指令係由該核心執行。該執行包括自由該開始VE指令指定之一位置獲得一第一狀態描述。該第一狀態描述具有一客體狀態。該執行亦包括基於該客體狀態來判定該客體實體 包括一單一客體執行緒抑或多個客體執行緒。基於該客體狀態且基於判定該客體實體包括多個客體執行緒,該執行亦包括在該核心上在該MT模式中開始該等客體執行緒,其中該等客體執行緒彼此獨立地執行。基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,該執行包括在該核心上在該ST模式中開始該客體執行緒。
一另外態樣包括一種用於分派一組態中之多個執行緒的電腦程式產品。該組態包括經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心。該核心包括實體執行緒。該電腦程式產品包括具有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲存媒體並非一信號,該等程式指令可由一處理電路讀取以使該處理電路執行一方法。該方法包括由在該核心上在該ST模式中執行之一主機程式發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體。該客體實體包括一客體VM之全部或部分,且該開始VE指令係由該核心執行。該執行包括自由該開始VE指令指定之一位置獲得一第一狀態描述。該第一狀態描述具有一客體狀態。該執行亦包括基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒。基於該客體狀態且基於判定該客體實體包括多個客體執行緒,該執行包括在該核心上在該MT模式中開始該等客體執行緒,其中該等客體執行緒彼此獨立地執行。基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,該執行包括在該核心上在該ST模式中開始該客體執行緒。
100‧‧‧運算環境
102‧‧‧處理器複合體
104‧‧‧分割區
106‧‧‧實體核心
108‧‧‧超管理器
110‧‧‧作業系統(OS)/駐留作業系統
120‧‧‧系統控制器
200‧‧‧處理電路
202‧‧‧系統控制器介面單元
204‧‧‧Dcache
206‧‧‧快取記憶體介面單元
208‧‧‧Icache
210‧‧‧指令提取單元(IFU)
212‧‧‧指令解碼單元(IDU)
214‧‧‧發出單元
216‧‧‧定點單元(FXU)
218‧‧‧浮點單元(FPU)
220‧‧‧二進位浮點單元(BFU)
222‧‧‧十進位浮點單元(DFU)
224‧‧‧一般用途暫存器(GPR)
226‧‧‧浮點暫存器(FPR)
228‧‧‧載入/儲存單元(LSU)
230‧‧‧轉譯後備緩衝器(TLB)
300‧‧‧運算環境
302‧‧‧層級1超管理器
304‧‧‧虛擬機VM1
306‧‧‧虛擬機VM2
308‧‧‧虛擬機VM3
310‧‧‧OS3
312‧‧‧OS2
314‧‧‧OS1
400‧‧‧狀態描述
402‧‧‧客體一般暫存器(GR)
404‧‧‧存取暫存器(AR)
406‧‧‧控制暫存器(CR)
408‧‧‧客體計時器
410‧‧‧客體首碼暫存器
412‧‧‧虛擬CPU數目(VCN)
414‧‧‧程式狀態字組(PSW)及指令位址(IA)
420‧‧‧攔截控制(IC)位元
422‧‧‧下一狀態描述(NSD)
430‧‧‧執行緒有效性遮罩
432‧‧‧邏輯分割區數目(LPN)
520‧‧‧執行緒有效性遮罩(TVM)
530‧‧‧位元0
531‧‧‧位元1
532‧‧‧位元2
533‧‧‧位元3
537‧‧‧位元n
602‧‧‧開始VE指令之運算元
603‧‧‧主要狀態描述
605‧‧‧用於邏輯執行緒x之次要狀態描述
607‧‧‧用於邏輯執行緒y之次要狀態描述
620‧‧‧執行緒有效性遮罩
702‧‧‧開始VE指令之運算元
704‧‧‧主要狀態描述之第一輸入項
705‧‧‧主要狀態描述
706‧‧‧次要狀態描述之第二輸入項
707‧‧‧次要狀態描述
708‧‧‧次要狀態描述之第三輸入項
709‧‧‧次要狀態描述
720‧‧‧執行緒有效性遮罩
802‧‧‧開始VE指令之運算元
803‧‧‧主要狀態描述
804‧‧‧下一狀態描述(NSD)欄位
805‧‧‧用於執行緒1之次要狀態描述
806‧‧‧下一狀態描述(NSD)
807‧‧‧用於執行緒2之次要狀態描述
809‧‧‧用於最後執行緒n之狀態描述
810‧‧‧下一狀態描述(NSD)
820‧‧‧TVM
902‧‧‧開始VE指令之運算元
903‧‧‧主要狀態描述
904‧‧‧下一狀態描述(NSD)
905‧‧‧用於執行緒1之次要狀態描述
906‧‧‧下一狀態描述(NSD)
907‧‧‧用於執行緒2之次要狀態描述
909‧‧‧用於執行緒n之狀態描述
910‧‧‧下一狀態描述(NSD)
920‧‧‧執行緒有效性遮罩
1010‧‧‧實體核心N
1020‧‧‧實體執行緒A
1022‧‧‧區塊
1024‧‧‧區塊
1026‧‧‧區塊
1028‧‧‧區塊
1040‧‧‧實體執行緒B
1046‧‧‧區塊
1048‧‧‧區塊
1060‧‧‧實體執行緒C
1066‧‧‧區塊
1068‧‧‧區塊
1110‧‧‧實體核心N
1120‧‧‧實體執行緒A
1128‧‧‧區塊
1136‧‧‧區塊
1138‧‧‧區塊
1140‧‧‧實體執行緒B
1148‧‧‧區塊
1150‧‧‧區塊
1152‧‧‧區塊
1154‧‧‧區塊
1156‧‧‧區塊
1160‧‧‧實體執行緒C
1168‧‧‧區塊
1174‧‧‧區塊
1176‧‧‧區塊
1202‧‧‧開始VE指令之運算元
1203‧‧‧主要狀態描述
1204‧‧‧相同SCA原點(SCAO)
1205‧‧‧NSD01
1206‧‧‧CDAA欄位
1213‧‧‧用於核心0執行緒1之次要狀態描述
1214‧‧‧相同SCA原點(SCAO)
1215‧‧‧NSD02
1216‧‧‧CDAA欄位
1223‧‧‧用於核心0執行緒2之最後次要狀態描述
1224‧‧‧相同SCA原點(SCAO)
1226‧‧‧CDAA欄位
1232‧‧‧開始VE指令之運算元
1233‧‧‧主要狀態描述
1234‧‧‧相同SCA原點(SCAO)
1235‧‧‧NSD11
1236‧‧‧CDAA欄位
1243‧‧‧用於核心1執行緒1之次要狀態描述
1244‧‧‧相同SCA原點(SCAO)
1245‧‧‧NSD12
1246‧‧‧CDAA欄位
1253‧‧‧用於核心1執行緒2之最後次要狀態描述
1254‧‧‧相同SCA原點(SCAO)
1256‧‧‧CDAA欄位
1257‧‧‧IP位元
1260‧‧‧COSCA共同區
1261‧‧‧SCA核心有效性遮罩(SCVM)
1262‧‧‧核心描述區位址(CDAA)
1264‧‧‧核心描述區位址(CDAA)
1270‧‧‧用於核心0之核心描述區(CDA)
1271‧‧‧SCA執行緒有效性遮罩(STVM0)
1272‧‧‧用於核心0執行緒0之執行緒描述區
1273‧‧‧狀態描述位址(SDA)
1274‧‧‧用於核心0執行緒1之執行緒描述區
1275‧‧‧狀態描述位址(SDA)
1276‧‧‧用於核心0執行緒2之執行緒描述區
1277‧‧‧狀態描述位址(SDA)
1280‧‧‧用於核心1之CDA
1281‧‧‧SCA執行緒有效性遮罩(STVM1)
1282‧‧‧用於核心1執行緒0之執行緒描述區
1283‧‧‧狀態描述位址(SDA)
1284‧‧‧用於核心1執行緒1之執行緒描述區
1285‧‧‧狀態描述位址(SDA)
1286‧‧‧用於核心1執行緒2之執行緒描述區
1287‧‧‧狀態描述位址(SDA)
1302‧‧‧區塊
1304‧‧‧區塊
1306‧‧‧區塊
1308‧‧‧區塊
1310‧‧‧區塊
1312‧‧‧區塊
1314‧‧‧區塊
1316‧‧‧區塊
1400‧‧‧電腦程式產品
1402‧‧‧儲存媒體
1404‧‧‧電腦可讀程式碼構件或邏輯
當本說明書完結時在申請專利範圍中特定地指出且清楚地主張被視為實施例之主題。實施例之前述及其他特徵及優點自結合隨附圖式而進行的以下詳細描述顯而易見,在圖式中:圖1描繪可根據一實施例而實施之運算環境; 圖2描繪可根據一實施例而實施之實體處理器;圖3描繪可根據一實施例而實施之運算環境;圖4描繪根據一實施例之多執行緒(MT)邏輯執行緒的狀態描述;圖5描繪根據一實施例之執行緒有效性遮罩(TVM)的方塊圖;圖6描繪根據一實施例之固定偏移狀態描述群組;圖7描繪根據一實施例之經指定為位址清單之狀態描述群組;圖8描繪根據一實施例之經指定為連結清單之狀態描述群組;圖9描繪根據一實施例之經指定為循環清單或環之狀態描述群組;圖10描繪根據一實施例之核心分派程序;圖11描繪根據一實施例之自虛擬執行之協調退出;圖12描繪根據一實施例之系統控制區的方塊圖;圖13描繪根據一實施例之用於在多執行緒核心之間協調的程序流程;及圖14描繪根據一實施例之電腦可讀媒體。
本文中描述之實施例可用以縮減多執行緒(MT)環境中之超管理器管理附加項。如本文所描述,多個執行緒之管理可在將多個執行緒管理為單一邏輯核心之超管理器與隨著多個執行緒存取實體核心之資源而管理多個執行緒之間的互動之機器之間分隔。此情形可藉由允許超管理器基於邏輯核心來管理許多超管理器基礎結構資源且允許機器基於更細微之執行緒來管理其他資源而引起實質上縮減多執行緒(MT)附加項成本。一實施例包括可由在單執行緒(ST)上執行之超管理器執行的核心分派指令。核心分派指令(在本文中被稱為「MT被指定之開始VE指令(start-VE instruction with MT specified)」)之執行可造成構成客體虛擬機(VM)之全部或部分的多個客體邏輯執行緒在單一 實體核心上被分派。在一實施例中,由超管理器使用以分派客體之指令指定待分派客體為單執行緒的抑或多執行緒的。
本文中描述之實施例可包括用於管理多執行緒邏輯核心之分派的結構,諸如,用於指示客體邏輯核心內之哪些邏輯執行緒當前有效的執行緒有效性遮罩,及包括狀態描述環之狀態描述群組。另外,可實施主要狀態描述及次要狀態描述以及欄位類型(例如,主要、核心共同、執行緒特定)以在具有多個執行緒之邏輯核心被分派時允許電腦資源之有效管理。另外,可提供邏輯核心內之全部執行緒同時退出虛擬執行的協調退出以簡化超管理器及邏輯核心管理功能兩者。
實施例可包括由超管理器維持之控制結構,其在本文中被稱為核心導向式系統控制區(COSCA)。COSCA係由超管理器及機器兩者使用以管理可影響客體組態中之多個邏輯處理器的某些功能。COSCA之一實施例被實施為葉表示邏輯核心且每一葉含有對應於彼核心之執行緒之一清單的樹狀結構。COSCA結構可含有允許超管理器容易存取用於特定核心中之全部執行緒之狀態描述的欄位(例如,狀態描述位址)。
如本文所使用,術語「執行緒」係指單一指令串流及其關聯狀態。亦即,在架構層級處,每一邏輯執行緒表示一獨立CPU或處理器。在硬體層級處,當分派實體執行緒時,彼執行緒為與邏輯執行緒相關聯之指令串流之執行,其與彼客體狀態之維持進行組合。正是由機器進行的彼執行緒狀態之維持縮減了在超管理器層級處需要之管理。可用於由邏輯核心使用之邏輯執行緒的總數受到可用於實體核心之實體執行緒的總數限制。
如本文所使用,術語「實體核心」係指執行一或多個獨立指令串流或執行緒但共用諸如執行單元及低層級快取記憶體之許多基本資源的硬體處理單元。可以數種方式進行此共用,該等方式包括藉由使 每一執行緒在獨立時間使用相同硬體資源,或藉由使該等資源與被標記有執行緒識別符之每一實體輸入項邏輯上共用。執行緒(例如,常常需要資源A但僅很少需要資源B之一個執行緒,及通常使用資源B而非資源A之另一執行緒)之間的適當協同作用可改良此共用之效率。如本文所使用,術語「機器」係指包括於實體核心中之硬體,以及用於支援實體核心之毫碼(millicode)及其他硬體。
如本文所使用,術語「客體VM」及「客體」可被互換地使用以係指可包括單一CPU或多個CPU之單一客體組態。如本文所使用,術語「邏輯核心」係指經定義為作為指定MT之開始VE指令之部分而分派在一起的邏輯客體執行緒或CPU之群組。客體VM可由單一邏輯核心(ST或MT)或多個邏輯核心(其中之每一者亦可為ST或MT)組成。
如本文所使用,術語「軟體」係指超管理器程式(例如,PR/SM或zVM)或由於開始VE指令而分派之客體作業系統或應用程式。
如本文所使用,術語「超管理器」及「主機」係指管理系統資源且分派客體邏輯處理器以在實體硬體上執行之程式。
用以分派客體之開始VE指令之運算元指向定義彼客體處理器或核心之狀態的狀態描述或狀態描述群組。狀態描述自身具有指向可被視為狀態描述之延伸之「衛星區塊(satellite block)」的指標,且包括進一步定義彼客體核心或處理器之狀態的額外資訊。如本文所使用,術語「狀態描述」不僅係指狀態描述自身,而且係指彼等衛星區塊。圖12中描繪核心導向式系統控制區(COSCA)(此等衛星區塊中之一者)。
現在轉至圖1,大體上展示可由一例示性實施例實施之運算環境100。運算環境100可基於(例如)由紐約阿蒙克市之國際商業機器公司提供的z/Architecture。z/Architecture描述於2012年8月IBM公開案第SA22-7832-09號的名為「z/Architecture Principles of Operation」之 IBM®公開案中,該公開案之以全文係據此以引用方式併入本文中。在一項實例中,基於z/Architecture之運算環境包括由紐約阿蒙克市之國際商業機器公司提供的eServer zSeries。
作為一項實例,運算環境100可包括耦接至系統控制器120之處理器複合體102。處理器複合體102可包括(例如)一或多個分割區104(例如,邏輯分割區LP1至LPn)、一或多個實體核心106(例如,核心1至核心m),及層級0超管理器108(例如,邏輯分割區管理器),下文描述其中之每一者。
每一邏輯分割區104可能夠充當一分離系統。亦即,每一邏輯分割區104可被獨立地重設、在必要時最初被載入有作業系統110,且與不同程式一起操作。在邏輯分割區104中執行之作業系統110或應用程式可看起來好像能夠存取完全且完整之系統,但實際上,僅可得到其一部分。硬體與經授權內部程式碼之組合(被共同地稱作微程式碼或毫碼或韌體)阻止一個邏輯分割區104中之程式干擾不同邏輯分割區104中之程式。此情形允許若干不同邏輯分割區104以時間配量方式在單一或多個實體核心106上操作。在一實施例中,每一實體核心包括一或多個中央處理器(在本文中亦被稱作「實體執行緒」)。在圖1所展示之實例中,每一邏輯分割區104具有一駐留作業系統110,其可針對一或多個邏輯分割區104而不同。在每一邏輯分割區104中執行之作業系統110為虛擬機或客體組態之實例。在一項實施例中,作業系統110為由紐約阿蒙克市之國際商業機器公司提供的z/OS®作業系統。
實體核心106包括分配至邏輯分割區104之實體處理器資源。邏輯分割區104可包括一或多個邏輯處理器,其中之每一者表示分配至分割區104之實體處理器資源的全部或部分。實體核心106可專用於特定分割區104之邏輯核心,使得底層核心106之實體處理器資源經保留用於彼分割區104;或與另一分割區104之邏輯核心共用,使得底層核 心資源之實體處理器資源潛在地可用於另一分割區104。
在圖1所展示之實施例中,邏輯分割區104係由層級0超管理器108管理,層級0超管理器108係由在實體核心106上執行之韌體實施。邏輯分割區104及超管理器108各自包含駐留於與實體核心106相關聯之中央儲存體(記憶體)之各別部分中的一或多個程式。超管理器108之一項實例為由紐約阿蒙克市之國際商業機器公司提供的Processor Resource/Systems Manager(PR/SMTM)。
系統控制器120(其在圖1中耦接至中央處理器複合體102)可包括負責在發出請求之不同處理器之間仲裁的集中式邏輯。舉例而言,當系統控制器120接收到記憶體存取請求時,其判定是否允許對彼記憶體位置之存取,且若允許,則將彼記憶體位置之內容提供至中央處理器複合體102,同時維持彼複合體內之處理器之間的記憶體一致性。
現在轉至圖2,根據一實施例而大體上展示用於實施機器或實體核心(諸如,圖1中之實體核心106)之處理電路200的方塊圖。處理電路200可包括多處理環境中之複數個實體核心中之一個實體核心。圖2所展示之處理電路200包括可將處理電路200耦接至其他核心及周邊器件之系統控制器介面單元202。系統控制器介面單元202亦可將Dcache 204(其讀取及儲存資料值)、Icache 208(其讀取程式指令)及快取記憶體介面單元206連接至外部記憶體、處理器及其他周邊器件。
Icache 208可結合指令提取單元(IFU)210而提供指令串流之載入,IFU 210預提取指令且可包括推測式載入及分支預測能力。可將提取指令提供至指令解碼單元(IDU)212以供解碼成指令處理資料。
IDU 212可將指令提供至可控制指令至各種執行單元(諸如,用於執行一般運算之一或多個定點單元(FXU)216及用於執行浮點運算之一或多個浮點單元(FPU)218)之發出的發出單元214。FPU 218可包括二進位浮點單元(BFU)220、十進位浮點單元(DFU)222或任何其他浮 點單元。發出單元214亦可經由一或多個LSU管線而耦接至一或多個載入/儲存單元(LSU)228。多個LSU管線被處理為用於執行載入及儲存以及用於分支之位址產生的執行單元。LSU 228及IFU 210兩者可利用轉譯後備緩衝器(TLB)230以提供用於運算元及指令位址之經緩衝轉譯。
FXU 216及FPU 218耦接至諸如一般用途暫存器(GPR)224及浮點暫存器(FPR)226之各種資源。GPR 224及FPR 226提供用於由LSU 228自Dcache 204載入及儲存之資料值之資料值儲存。
現在轉至圖3,大體上展示可由一實施例實施之運算環境300。圖3所展示之運算環境300類似於圖1所展示之運算環境100,外加情形為:在標記為LP2之邏輯分割區104中執行之層級1超管理器302。如圖3所展示,層級1超管理器302可提供先前關於超管理器108(在本文中亦被稱作「層級0超管理器」)所描述之相同超管理器功能,諸如,在標記為LP2之邏輯分割區104內的多個作業系統(例如,在虛擬機VM1 304、VM2 306及VM3 308中執行之OS1 314、OS2 312及OS3 310)之間的資源之透通時間配量,及在標記為LP2之邏輯分割區104內的彼等作業系統彼此之隔離。圖3所展示之實施例作為一實例而包括三個虛擬機,且其他實施例可基於應用程式要求而包括更多或更少虛擬機。
如圖3所展示,標記為LP1之邏輯分割區104具有駐留作業系統110,且標記為LP2之邏輯分割區104執行層級1超管理器302,層級1超管理器302繼而建立虛擬機304、306、308,虛擬機304、306、308中之每一者執行其自有駐留作業系統314、312、310。任何數目個邏輯分割區104可執行層級1超管理器302。在一實施例中,層級1超管理器302為由紐約阿蒙克市之國際商業機器公司提供的z/VM超管理器。在各種邏輯分割區中執行之駐留作業系統可不同,且當在層級1超管理 器302下執行時,單一分割區104(例如,LP2)內之駐留作業系統(例如,作業系統314、312、310)亦可不同。在一實施例中,標記為LP1之邏輯分割區104中的作業系統110為由紐約阿蒙克市之國際商業機器公司提供的z/OS作業系統。在一實施例中,作業系統310及312為Linux,且作業系統314為z/OS。
當層級1超管理器302在邏輯分割區104中執行時,其可將由層級0超管理器(諸如,超管理器108)提供至邏輯分割區104之資源之相同虛擬化提供至在虛擬機308、306、304中執行之作業系統310、312、314。當在第一層級處時,每一虛擬機可包括多個虛擬處理器。
實體核心106包括可為專用或(如針對圖1所描述)在邏輯分割區104 LP1、LP2、LP3及LP4之間共用之實體處理器資源。當在一或多個實體核心上分派邏輯分割區LP2時,層級1超管理器302可接著在其虛擬機VM1 304、VM2 306及VM3 308之間透通地共用彼等資源。在一項實施例中,層級0超管理器108使用MT被指定之開始VE指令以分派多執行緒層級1超管理器302,多執行緒層級1超管理器302接著使用ST被指定之開始VE指令以分派單執行緒虛擬機VM1 304、VM2 306及VM3 308。在一不同實施例中,層級0超管理器108使用ST被指定之開始VE指令以分派單執行緒層級1超管理器302,單執行緒層級1超管理器302接著使用MT被指定之開始VE指令以分派多執行緒虛擬機VM1 304、VM2 306及VM3 308。在另一實施例中,層級1超管理器302及其客體VM 304、306、308兩者全部為單執行緒的。
在客體多處理(MP)環境中,超管理器可維持被稱為系統控制區(SCA)之控制結構,其係由超管理器及機器兩者使用以管理可影響客體組態中之多個邏輯處理器的某些功能。針對組態或虛擬機中之全部客體處理器而在狀態描述中指定相同SCA原點(SCAO)。在一實施例中,此區可包括一共同區(一般而言,用以協調全客體組態範圍功能) 及分離處理器特定輸入項。共同區(例如)保留關於客體組態內之哪些虛擬處理器有效的資訊。SCA內之分離處理器特定區可(例如)用以解譯或模擬諸如處理器間中斷之處理器間客體功能,或容易提供指向每一邏輯處理器之各別狀態描述的可存取指標。在一實施例中,藉由針對每一潛在客體執行緒新增額外執行緒特定輸入項而延伸用於ST之SCA以供MT使用。
核心分派之一實施例可允許在單執行緒上執行之超管理器使用開始VE指令之變化(有時被稱作開始多執行緒虛擬執行(開始MVE))而在其核心上分派多執行緒客體。多執行緒客體中之每一執行緒可表示一客體邏輯中央處理單元(CPU),或客體執行緒。開始VE指令可經由狀態描述中之控制欄位而啟用實體核心上之多執行緒(MT)客體執行。當用於核心分派時的開始VE指令之運算元可指定含有全部客體執行緒之狀態的單一狀態描述,或各自(例如)表示單一客體執行緒之狀態的狀態描述群組。在一實施例中,邏輯核心包括此狀態描述群組。核心分派需要虛擬執行輸入項以將邏輯核心之狀態及此等客體邏輯執行緒中之每一者載入至一實體核心執行緒及其執行緒中。此等執行緒可為彼此獨立地操作之指令串流。在各種實施例中,可以數種方式指定一狀態描述群組,該等方式包括作為彼此之固定偏移、作為狀態描述位址或狀態描述之清單、或作為應用於核心的狀態描述之循環清單(環),其中彼群組中之每一狀態描述表示一分離客體執行緒。此等技術允許超管理器及機器容易存取邏輯核心內之其他執行緒,且允許應用於整個邏輯核心之欄位維持於單一位置中。
客體OS可藉由簡單地發出啟用客體中之多執行緒的MT設定指令而使用多執行緒。此情形允許客體OS將此等新執行緒處理為額外獨立CPU,且如在不存在多執行緒的情況下一樣管理此等新執行緒。另外,客體OS可以充分利用此等執行緒共用一核心之事實的方式使用 此等執行緒,或客體OS可使此等執行緒以更相互相依之方式而操作。此情形對於超管理器及機器為全透通的。超管理器接著將此等額外執行緒提供至客體OS,同時超管理器自身繼續在每核心單執行緒上執行,且基於核心來管理許多客體MT環境。在同此同時地申請的名為「Thread Context Preservation in a Multithreading Computer System」之美國專利申請案代理人案號POU920140064US1中更詳細地描述多執行緒之OS啟用,該專利申請案之內容的全文係以引用方式併入本文中。
在核心分派之實施例中,經指定為MT被指定之開始VE指令之運算元的狀態描述為「主要」狀態描述,且關聯客體邏輯執行緒為「主要」執行緒。群組中之其他狀態描述在本文中被稱為「次要」狀態描述,且若適用,則應用於次要邏輯執行緒。當狀態描述群組被實施為清單或環時,可存在指向第一次要狀態描述的主要狀態描述中之下一狀態描述(NSD)欄位,第一次要狀態描述繼而1)指向群組中之下一次要狀態描述,或2)含有用以指示群組之末端的值。用於清單中之最後者的狀態描述中之NSD值可為主要狀態描述之位址,在此狀況下,清單形成狀態描述之環。
在一非MT實施中,超管理器每次在一給定實體核心上分派一個客體邏輯處理器(在本文中亦被稱作「邏輯執行緒」)。若特定邏輯處理器處於無效狀態中(例如,處於停止狀態中或處於停用等待中),則超管理器將不分派彼客體。在一MT環境中,核心分派允許超管理器同時在核心上分派多個客體執行緒。為了適應彼邏輯核心之狀態描述群組中的執行緒中之一或多者無效的可能性,一實施例利用主要狀態描述中之執行緒有效性遮罩(TVM),根據軟體觀點,其中之每一位元指示群組中之對應狀態描述中之邏輯執行緒之有效性。
在另一實施例中,僅有效執行緒包括於狀態描述群組中,且有 效性指示係不必要的。包括狀態描述群組中之無效邏輯執行緒的實施例允許超管理器維持與此等無效執行緒相關聯之狀態,且此等執行緒可在未來再次變得有效。機器將僅初始化及執行具有有效狀態之彼等執行緒。若群組中之至少一個執行緒有效,則超管理器將僅分派客體邏輯核心。
現在轉至圖4,根據一實施例而大體上展示包括客體之大多數架構式狀態的邏輯執行緒之狀態描述。在此上下文中,術語「狀態描述」不僅包括狀態描述自身,而且包括充當延伸之衛星區塊,其指標駐留於狀態描述中。如圖4所展示,狀態描述400可包括客體一般暫存器(GR)402、存取暫存器(AR)404、控制暫存器(CR)406、客體計時器408(包括時脈比較器及CPU計時器)、客體首碼暫存器410、虛擬CPU數目(VCN)412、程式狀態字組(PSW)及指令位址(IA)414。另外,其可包括諸如攔截控制(IC)位元420之控制資訊以指示某些指令(例如,載入程式狀態字組(LPSW)及失效頁面資料表輸入項(IPTE))是否需要對主機之攔截,或在客體指令執行可開始之前是否需要客體轉譯後備緩衝器(TLB)之清除。狀態描述亦含有用以定義如圖6至圖9所描述之狀態描述清單及環的下一狀態描述(NSD)422。主要狀態描述亦包括如圖5所描述之TVM 430,及邏輯分割區數目(LPN)432。虛擬CPU數目(VCN)412等效於CPU數目,其潛在地經調整以包括MT模式中之執行緒數目,如同此同時地申請的名為「Address Expansion and Contraction in a Multithreading Computer System」之美國專利申請案代理人案號POU920140072US1中所描述,該專利申請案之內容的全文係以引用方式併入本文中。
核心內之執行緒可藉由二進位執行緒識別(TID)而識別。在以下諸圖中出於簡潔起見,執行緒x常常係由術語TIDx指代,在此狀況下,含義為「具有TID x之執行緒」。
現在參看圖5,根據一實施例而大體上展示執行緒有效性遮罩(TVM)520之方塊圖。如圖5所展示,TVM 520之位元0 530表示狀態描述群組中的邏輯執行緒0之有效性,位元1 531表示執行緒1之有效性,位元2 532表示執行緒2之有效性,位元3 533表示執行緒3之有效性,等等,直至表示執行緒n之有效性的位元n 537為止,執行緒n為與此核心相關聯的狀態描述群組中之最後可能邏輯執行緒。TVM可駐留於用於群組之主要狀態描述中。
現在轉至圖6,根據一實施例而大體上展示固定偏移狀態描述群組結構。如圖6所展示,在彼此之固定偏移(N)處指定狀態描述群組。在此狀況下,開始VE指令之運算元602指向用於邏輯執行緒0之主要狀態描述603。用於邏輯執行緒x之次要狀態描述605位於在主要狀態描述之後的N個位元組之固定偏移處,且用於邏輯執行緒y之次要狀態描述607位於在用於執行緒x之次要狀態描述之後的N個位元組。此情形對於群組中之全部執行緒繼續。可以數種方式判定群組中之執行緒的數目,該等方式包括藉由主要狀態描述中之計數,或藉由在清單中之最後狀態描述位址之後的結束標記。
圖6可表示兩種狀況,第一狀況為其中群組包括群組中用於全部邏輯執行緒之狀態描述(無論其是否有效),且第二狀況為其中僅有效狀態描述包括於群組中。在第一狀況下,用於執行緒x之狀態描述605表示執行緒1之狀態,且用於執行緒y之狀態描述607表示執行緒2之狀態。僅在此第一狀況下需要之TVM 620表示此等邏輯執行緒中之每一者之有效性。在第二狀況下,用於執行緒x之狀態描述605表示第一有效邏輯次要執行緒之狀態,且用於執行緒y之狀態描述607表示第二有效次要執行緒之狀態。舉例而言,若執行緒1不有效且執行緒2及3皆有效,則執行緒x 605將表示執行緒2,且執行緒y 607將表示執行緒3。將不存在包括於用於執行緒1之群組中的狀態描述,此係因為其無 效。此等相同兩種狀況亦可應用於下文在圖7至圖9中展示之實施例,然而僅描述及繪出狀況1。
現在轉至圖7,根據一實施例而大體上展示經指定為清單之狀態描述群組結構。在此狀況下,開始VE指令之運算元702表示狀態描述位址之清單,其中該清單中之第一輸入項704指向用於執行緒0之主要狀態描述705,該清單中之第二輸入項706指向用於執行緒1之次要狀態描述707,該清單中之第三輸入項708指向用於執行緒2之次要狀態描述709,等等,針對群組中之全部執行緒繼續。TVM 720表示此等執行緒中之每一者之有效性。
現在轉至圖8,根據一實施例而大體上展示經指定為連結清單之狀態描述群組結構。在此狀況下,如在圖6所描繪之狀況下,開始VE指令之運算元802指向用於執行緒0之主要狀態描述803,但取而代之,用於執行緒1之次要狀態描述805的指標804被提供為主要狀態描述中之下一狀態描述(NSD)欄位804。又,用於執行緒2之次要狀態描述807的指標806被提供為用於執行緒1之次要狀態描述中的NSD 806。此情形將針對群組中之全部執行緒繼續,其中用於最後執行緒n之狀態描述809中的NSD 810被指定為零或指示清單之末端的某一其他唯一值。提供於主要狀態描述803中之TVM 820表示此等執行緒中之每一者之有效性。
現在轉至圖9,根據一實施例而大體上展示經指定為循環清單或環之狀態描述群組結構。此狀況相同於圖8所展示之狀況之處在於:開始VE指令之運算元902指向用於執行緒0之主要狀態描述903,用於執行緒0之主要狀態描述903含有用於執行緒1之次要狀態描述905的NSD 904,用於執行緒1之次要狀態描述905含有用於執行緒2之次要狀態描述907的NSD 906,且此情形針對全部執行緒直至最後執行緒n繼續。然而,在圖9所展示之實施例中,用於執行緒n之狀態描述909 中的NSD 910形成循環清單且返回指向主要狀態描述903。提供於主要狀態描述903中之TVM 920表示此等執行緒中之每一者之有效性。
核心分派允許超管理器在核心層級處管理邏輯執行緒之許多態樣。核心分派不僅常常藉由將核心之多個執行緒之虛擬執行的協調推送至機器中來簡化執行緒管理所需要之超管理器程式碼,而且可縮減管理組態中之更多處理器所需要的附加項。用於邏輯分割區(或客體)之優先權管理可繼續在邏輯核心層級處進行,從而縮減對此類型之管理的定標壓力。超管理器自身仍需要管理與邏輯核心相關聯之執行緒集合以確保在重新發出開始VE指令之前全部滿足其需要(諸如,指令攔截)。
現在參看圖10,大體上展示根據一實施例之核心分派程序。如圖10所展示,超管理器在實體核心N 1010及實體執行緒A 1020上以單執行緒方式執行。在區塊1022中,超管理器發出MT被指定之開始VE指令以分派多執行緒客體核心。機器判定客體為多執行緒的,且在區塊1024中,使實體執行緒B及C可用於執行軟體。機器將來自用於執行緒中之每一者之狀態描述的客體狀態載入至對應實體執行緒中。在圖10所描繪之實施例中,機器使用多個實體執行緒以執行此功能,亦即,在實體執行緒A 1020上執行之毫碼將客體邏輯執行緒X之狀態載入至實體執行緒A中,如區塊1026中所展示。同樣地,在實體執行緒B 1040及C 1060上執行之毫碼將客體邏輯執行緒Y及Z之狀態載入至實體執行緒B及C中,如區塊1046及1066中所展示。一旦載入客體狀態,在客體邏輯執行緒X、Y及Z上執行之軟體就在實體執行緒A、B及C上執行,如區塊1028、1048及1068中所展示。
現在參看圖11,根據一實施例而大體上展示自虛擬執行之協調退出。如圖11所展示,客體邏輯執行緒X、Y及Z在實體執行緒A 1120、B 1140及C 1160上執行客體軟體,如區塊1128、1148及1168中所指 示。需要判定自虛擬執行退出之一或多個客體執行緒。參看圖11,在實體執行緒B 1140上執行之客體邏輯執行緒Y判定其必須退出虛擬執行,如區塊1150中所展示,從而導致機器用信號通知實體執行緒A 1120及C 1160以退出虛擬執行,如區塊1152中所展示。在區塊1136、1154及1174中,在實體執行緒中之每一者上執行的毫碼協調自虛擬執行之退出,且接著使實體執行緒B 1140及C 1160不可用於由軟體使用,如區塊1156及1176中所指示。如區塊1138中所展示,實體執行緒A 1120上之毫碼將主機狀態重新載入至硬體中,此情形引起實體執行緒A上的超管理器軟體之執行,如區塊1140中所展示。超管理器接著將按需要而處理任何待決客體攔截及主機中斷。
圖12描繪根據一實施例的用於包括多個邏輯核心之單一客體組態之核心導向式系統控制區(COSCA)的方塊圖。圖12所展示之COSCA可用以提供既在一核心內之邏輯執行緒之間又在不同核心上之邏輯執行緒之間的協調。COSCA可包括表示具有指向分離核心描述區之指標之整個客體組態的共同區,每一邏輯核心一個指標。每一核心描述包括表示彼核心之一共同區,及用於彼核心之一系列連續分離執行緒特定區或執行緒描述。在另一實施例中,核心描述提供執行緒描述之位置。所提供之位置可為默許的(例如,其為核心描述中含有之清單,或其可在與核心描述相鄰之記憶體區塊中)。在其他實施例中,可提供指向含有執行緒描述之其他記憶體位置的指標。如本文所使用,術語「指示位置」用以係指判定項目(例如,執行緒描述或COSCA中之其他元素)之位置的此等者中之任一者,或任何額外方式。此結構維持MT客體組態之類樹狀表示,其在一些情形中(特別是在超管理器層級處)促進基於核心來管理事物,但在其他情形中促進基於執行緒或處理器來管理事物。
可針對客體組態內之全部客體執行緒而在狀態描述中之SCA原點 (SCAO)欄位中提供相同COSCA原點(COSCAO),且可針對給定核心內之全部執行緒提供相同核心描述區位址(CDAA)。此實施例之優點為其無需可難以使一些超管理器提供之同樣連續實際儲存。另一實施例可新增額外間接層級且使每一核心描述包括用於每一執行緒特定區之指標清單,從而移除針對使含有此等區之控制區塊連續的需要。
現在參看圖12,大體上展示用於包括兩個邏輯核心之單一客體組態的COSCA之實例實施例,其中每一核心中具有三個邏輯執行緒。在一實施例中,COSCA包括COSCA共同區1260(在圖12中被展示為「COSCACA 1260」)、核心描述區1270及核心描述區1280之內容。用於與邏輯核心0相關聯之狀態描述群組之主要狀態描述1203經指定為由超管理器使用以分派客體核心0的開始VE指令之運算元1202。另外,用於與邏輯核心1相關聯之狀態描述群組之主要狀態描述1233經指定為用以分派核心1的開始VE指令之運算元1232。用於「核心0執行緒0」之此主要狀態描述1203含有NSD01 1205,NSD01 1205指向用於核心0執行緒1之次要狀態描述1213,用於核心0執行緒1之次要狀態描述1213又含有NSD02 1215,NSD02 1215指向群組中用於核心0執行緒2之最後次要狀態描述1223。類似地,用於邏輯核心1之狀態描述群組以含有NSD11 1235的用於核心1執行緒0之主要狀態描述1233開始,NSD11 1235指向含有NSD12 1245的用於核心1執行緒1之次要狀態描述1243,NSD12 1245指向用於核心1執行緒2之最後次要狀態描述1253。用於此客體組態中之全部六個執行緒之狀態描述1203、1213、1223、1233、1243、1253含有SCAO 1204、1214、1224、1234、1244、1254中之相同值,其指向COSCA共同區1260。
如圖12所展示,COSCA共同區1260含有用以協調全客體組態範圍功能之核心層級資訊。COSCA共同區1260包括指示客體組態內之每一邏輯核心之有效性的SCA核心有效性遮罩(SCVM)1261,且亦包 括用於每一核心之核心描述區位址(CDAA)1262、1264。SCVM中之位元及核心描述位址之陣列兩者可藉由核心數目而編入索引。CDAA0 1262(其指向用於核心0之核心描述區(CDA)1270)包括於COSCA共同區1260中。另外,用於核心0中之全部執行緒之狀態描述中的CDAA欄位1206、1216、1226亦指向用於核心0之CDA 1270。CDAA1 1264(其指向用於核心1之CDA 1280)亦包括於COSCA共同區1260中,且同樣地,用於核心1中之全部執行緒之狀態描述中的CDAA欄位1236、1246、1256亦指向用於核心1之CDA 1280。用於核心0之核心描述區(CDA)1270含有指示核心0內之每一邏輯執行緒之有效性的SCA執行緒有效性遮罩(STVM0)1271。其亦含有用於核心0執行緒0之執行緒描述區1272、用於核心0執行緒1之執行緒描述區1274,及用於核心0執行緒2之執行緒描述區1276。用於核心1之CDA 1280類似地含有STVM1 1281,以及用於核心1執行緒0之執行緒描述區1282、用於核心1執行緒1之執行緒描述區1284,及用於核心1執行緒2之執行緒描述區1286。此等執行緒描述區1272、1274、1276、1282、1284、1286中之每一者含有用於對應於彼執行緒描述區之執行緒(分別為核心0執行緒0、核心0執行緒1、核心0執行緒2、核心1執行緒0、核心1執行緒1及核心1執行緒2)的狀態描述位址(SDA)1273、1275、1277、1283、1285、1287。STVM中之位元及執行緒描述區之陣列兩者可藉由執行緒識別而編入索引。此等SDA使超管理器較易於管理核心內之執行緒且使機器較易於呈現客體處理器間中斷。
圖13描繪根據一實施例之用於管理多執行緒核心的程序流程,其使用圖12所展示之COSCA。在圖13所展示之實例中,在區塊1302處,在第一實體執行緒(例如,由狀態描述1213定義之核心0執行緒1)上執行之客體作業系統(OS)已判定其將用信號通知第二邏輯執行緒或目標執行緒(例如,由狀態描述1253定義之核心1執行緒2)。在區塊 1304處,客體OS(例如)藉由發出處理器間中斷指令來進行此信號通知。作為執行處理器間中斷指令之部分,機器使用COSCA以模擬客體處理器間中斷指令。因為可或可不在進行信號通知時分派包括目標邏輯執行緒之邏輯核心,所以處理器間中斷指令係由機器模擬。在區塊1306處,機器定位(例如,經由SCA0 1214,此係因為處理器間中斷指令係由邏輯核心0執行緒1執行)用於客體組態之共同區(例如,COSCA共同區1260),以便存取SCVM(例如,SCVM 1261)以驗證目標核心之有效性且獲得適當CDAA(例如CDAA1 1264,此係因為目標執行緒係在核心1上)。
接下來,在區塊1308處,機器定位(例如,經由CDA1 1264)用於目標核心之核心描述區(例如,CDA 1280)。機器藉由存取核心描述區中之STVM(例如,CDA 1280中之STVM1 1281)而驗證目標執行緒有效。在區塊1310處,機器定位執行緒描述區(例如,對應於執行緒2之執行緒描述區1286,此係因為目標執行緒為執行緒2)。在區塊1312處,在用於目標執行緒之執行緒描述區中記錄關於中斷之資訊(例如,其將發送執行緒之識別碼置放至執行緒描述區1286中)。在區塊1314處,機器定位(例如,經由執行緒描述區1286中之SDA12 1287)用於目標執行緒之狀態描述(例如,用於核心1 TID2之次要狀態描述1253)。在區塊1316處,使中斷在目標狀態描述中待決(例如,在用於核心1 TID2之狀態描述1253中設定IP位元1257)。因此,當目標邏輯處理器(例如,核心1執行緒2)分派在實體執行緒上且經啟用用於中斷時,機器將在被啟用的情況下向客體作業系統呈現中斷。若目標邏輯處理器已經在中斷變得待決時被分派,則其將在被啟用後就採取中斷。
存在機器亦可使用邏輯核心內之執行緒具有共同屬性之事實的情況。舉例而言,核心分派自然地適於使邏輯核心上之全部客體執行 緒駐留於同一LPAR區域或分割區中。設計可藉由僅必須每核心一次而非每執行緒一次實施與該區域相關聯之事物而最小化硬體。另外,亦可簡化複雜的控制邏輯(例如,全系統範圍中斷之處置),此係因為其必須僅處理單一核心值。
在一項實施例中,表示多執行緒客體之狀態描述群組中的每一欄位(或欄位內之位元)被分類為主要、核心共同或執行緒特定。主要欄位僅駐留於主要狀態描述中且應用於邏輯核心中之全部處理器;代表核心之任何執行緒而對主要欄位進行的任何存取必須使用來自關聯主要狀態描述之值。此分類用於定義核心之總狀態(諸如,執行緒有效性遮罩)的欄位。核心共同欄位在邏輯核心內之全部處理器當中為共同的,且此欄位在群組中之每一狀態描述中具有相同值;代表處理器而對此等欄位中之一者進行的任何存取可使用來自群組中之任何狀態描述的值。此分類用於在整個核心上應用的欄位,諸如,LP數目。要求超管理器維持全部狀態描述中之核心共同欄位,但允許機器存取任何執行緒之狀態描述中的此欄位,無論哪一者皆提供最好效能。因為此等欄位並不常常由超管理器改變,但常常由機器在每次進入虛擬執行時存取,所以將欄位定義為核心共同而非執行緒特定允許虛擬執行輸入項(例如)使用主要狀態描述中之值而自主要執行緒載入次要執行緒設施。執行緒特定欄位特定於每一邏輯執行緒;代表任何給定執行緒而對此等欄位中之一者進行的任何存取必須使用來自彼執行緒之狀態描述的值。此分類用於通常在執行緒之間為唯一的欄位,諸如,客體首碼。
在一實施例中,為了支援核心分派之使用及以單執行緒方式執行之超管理器,可提供自虛擬執行之協調退出(VE退出),其中給定核心中之全部客體執行緒同時返回退出至ST主機。在協調VE退出之上下文中,VE退出之類型可劃分成三種類別:(1)關於主機操作之主機 中斷;(2)關於客體操作之主機中斷;及(3)客體攔截。主機外部、I/O及一些機器檢查中斷屬於VE退出類別(1)。對於此狀況,要求全部客體執行緒退出虛擬執行模式,以便允許主機處置中斷。此中斷將很可能造成主機分派不同客體。若在虛擬執行模式中執行時發生中斷,則可在全部執行緒上偵測到主機中斷,使得全部執行緒可退出虛擬執行模式,或在單一執行緒上偵測到主機中斷,該單一執行緒接著用信號通知其他執行緒其是否應退出。
VE退出類別(2)(關於客體之主機中斷)可包括一些機器檢查中斷(諸如,不可校正儲存錯誤)。在一非多執行緒情形中,此等條件被呈現為主機中斷。在運用核心分派的情況下,存在僅一個主機執行緒,但因為此等例外狀況係關於客體操作,所以有可能使多個客體執行緒偵測針對相同主機中斷之相異及不同原因。為了適應此情形,對於核心分派,在適當時,此等主機中斷改為在對應客體狀態描述中被呈現為新類型之客體攔截,且與下文所描述之類別(3)相同地被處置。在一實施例中,歸因於客體記憶體參考而引起的主機位址轉譯故障中斷亦屬於類別(2),且可被呈現為另一新類型之客體攔截。
即使在客體多執行緒環境中,針對VE退出類別(2)及(3)兩者(上述)之客體攔截仍係關於單一客體執行緒且獨立於另一執行緒之客體執行。進一步有可能的是,多個客體執行緒並行地辨識此等條件,從而要求主機處置其全部。通常,當運用攔截進行呈現時,主機將代表客體而模擬某一行為,且接著重新分派彼同一客體。對於此等狀況,因為主機以單執行緒方式執行,所以全部客體執行緒必須在主機可處置攔截之前退出虛擬執行模式。此情形可藉由等待全部執行緒自然地退出或藉由用信號通知其他執行緒以當一個執行緒已判定其必須攔截回至主機時退出而實現。此情形被稱作「協調VE退出」。
隨著每一執行緒判定其必須退出虛擬執行模式,其進入VE退 出,且在初始VE退出同步向上廻圈中等待直至全部其他有效執行緒亦準備退出為止。若實施需要,則其用信號通知其他執行緒以在進入此同步向上廻圈之前退出。在VE退出同步向上廻圈中時,僅處置最小中斷。為了允許當未應用主機中斷且未應用客體攔截時要求客體執行緒退出虛擬執行模式的情形,定義「無動作」攔截以向主機指示代表此客體無需攔截動作。
一旦全部執行緒已進入初始VE退出同步向上廻圈,全部有效狀態描述中的客體資料之儲存就可完成。亦即,駐留於硬體中之當前客體狀態儲存於對應狀態描述中,因此,此邏輯客體執行緒可在稍後時間被重新分派。在此儲存完成之後需要最後VE退出同步向上點以保證對次要執行緒狀態描述之全部更新在控制傳遞回至超管理器(其通常在主要執行緒上執行)之前完成。一旦VE退出完成,超管理器就可處理環中之每一執行緒以判定攔截是否被呈現,且若被呈現,則適當地處置攔截。在如此進行之後,其可接著在實體處理器上重新分派此同一客體邏輯核心或不同客體邏輯核心。
技術效應及益處包括在多執行緒(MT)環境中提供縮減之超管理器管理附加項。多個執行緒之管理可在將多個執行緒管理為單一邏輯核心之超管理器與隨著多個執行緒存取實體核心之資源而管理多個執行緒之間的互動之機器之間分隔,從而藉由允許超管理器基於邏輯核心來管理許多超管理器基礎結構資源且允許機器基於更細微之執行緒來管理其他資源而引起實質上縮減多執行緒(MT)附加項成本。
實施例包括一種用以提供用於分派一電腦中之多個執行緒之一開始虛擬執行指令的系統、方法及電腦程式產品。根據一項態樣,一種電腦系統包括一組態,該組態具有經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心。該核心包括實體執行緒。該電腦系統亦包括一主機程式,該主機程式經組態以在該核心上在該 ST模式中執行以發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體。該客體實體包括一客體虛擬機(VM)之全部或部分。該開始VE指令係由該核心執行。該執行包括自由該開始VE指令指定之一位置獲得一第一狀態描述。該第一狀態描述具有一客體狀態。該執行亦包括基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒。基於該客體狀態且基於判定該客體實體包括多個客體執行緒,在該核心上在該MT模式中開始該等客體執行緒。該等客體執行緒彼此獨立地執行。基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,在該核心上在該ST模式中開始該客體執行緒。
根據另一態樣,提供一種用於分派一組態中之多個執行緒的電腦實施方法。該組態包括經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心。該核心包括實體執行緒。該方法包括由在該核心上在該ST模式中執行之一主機程式發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體。該客體實體包括一客體VM之全部或部分,且該開始VE指令係由該核心執行。該執行包括自由該開始VE指令指定之一位置獲得一第一狀態描述。該第一狀態描述具有一客體狀態。該執行亦包括基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒。基於該客體狀態且基於判定該客體實體包括多個客體執行緒,該執行亦包括在該核心上在該MT模式中開始該等客體執行緒,其中該等客體執行緒彼此獨立地執行。基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,該執行包括在該核心上在該ST模式中開始該客體執行緒。
一另外態樣包括一種用於分派一組態中之多個執行緒的電腦程式產品。該組態包括經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心。該核心包括實體執行緒。該電腦程式產 品包括具有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲存媒體並非一信號,該等程式指令可由一處理電路讀取以使該處理電路執行一方法。該方法包括由在該核心上在該ST模式中執行之一主機程式發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體。該客體實體包括一客體VM之全部或部分,且該開始VE指令係由該核心執行。該執行包括自由該開始VE指令指定之一位置獲得一第一狀態描述。該第一狀態描述具有一客體狀態。該執行亦包括基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒。基於該客體狀態且基於判定該客體實體包括多個客體執行緒,該執行包括在該核心上在該MT模式中開始該等客體執行緒,其中該等客體執行緒彼此獨立地執行。基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,該執行包括在該核心上在該ST模式中開始該客體執行緒。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中該核心包括當該核心處於該MT模式中時控制該等實體執行緒之間的共用資源之使用的電腦指令。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中當該核心處於該MT模式中時,該主機程式將該客體實體之至少一部分管理為一單一邏輯核心。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中由該主機程式利用一執行緒有效性遮罩以指示該客體實體中之該一或多個客體執行緒之有效性。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括在將控制返回至該主機程式之前退出該客體實體中之該一或多個客體執行緒之全部。
除了上文所描述之特徵中之一或多者以外,或作為替代方案, 另外實施例亦可包括其中基於該客體實體包括多個客體執行緒,將為全部該等客體執行緒所共有的狀態資料之至少一部分儲存於一單一位置中。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中基於該客體實體包括多個客體執行緒,在一第一狀態描述中含有用於一個執行緒之狀態資料,且在一額外狀態描述中含有用於一或多個額外執行緒中之每一者之狀態資料。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中該第一狀態描述及該等額外狀態描述儲存於一環及一清單結構中之至少一者中。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括執行一無動作退出,該無動作退出包括基於來自一其他客體執行緒之一請求而退出一客體執行緒。
本文中所使用之術語僅用於描述特定實施例之目的,且並不意欲限制本發明。如本文中所使用,除非上下文另外清楚地指示,否則單數形式「一」及「該」意欲亦包括複數形式。將進一步理解,當在本說明書中使用時,術語「包含」指定所陳述特徵、整體、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整體、步驟、操作、元件組件及/或其群組的存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述目的呈現本發明之描述,但該描述並不意欲為詳盡的或將本發明限於所揭示之形式。在不背離本發明之範疇及精神的情況下,一般熟習此項技術者將顯而易見許多修改及變化。選擇並描述實施例以便最佳地解釋本發明之原理及實際應用,且使其他一般熟習此項技術者能夠關於具有 適合於所預期之特定用途的各種修改之各種實施例來理解本發明。
已出於說明之目的呈現本發明之各種實施例之描述,但該描述並不意欲為詳盡的或限於所揭示之實施例。在不背離所描述實施例之範疇及精神的情況下,一般熟習此項技術者將顯而易見許多修改及變化。本文中所使用之術語經選擇以最佳解釋實施例之原理、實際應用或對市場中發現的技術之技術改良,或使其他一般熟習此項技術者能夠理解本文中所揭示之實施例。
現在參看圖14,在一項實例中,電腦程式產品1400包括(例如)一或多個儲存媒體1402,其中該等媒體可為有形的及/或非暫時性的,其用以在其上儲存電腦可讀程式碼構件或邏輯1404以提供及促進本文中所描述之實施例之一或多項態樣。
本發明可為一種系統、方法及/或電腦程式產品。電腦程式產品可包括電腦可讀儲存媒體(或媒體),其上具有電腦可讀程式指令以使處理器進行本發明之態樣。
電腦可讀儲存媒體可為有形器件,其可留存及儲存指令以供指令執行器件使用。電腦可讀儲存媒體可為(例如但不限於)電子儲存器件、磁性儲存器件、光學儲存器件、電磁儲存器件、半導體儲存器件或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟性磁碟、機械編碼器件(諸如,上面記錄有指令之凹槽中之打孔卡或凸起結構)及前述各者之任何合適組合。如本文中所使用,不將電腦可讀儲存媒體本身理解為暫時信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖纜線傳遞之光脈衝),或 經由導線傳輸之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別運算/處理器件或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存器件。網路可包含銅傳輸纜線、光傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理器件中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別運算/處理器件內之電腦可讀儲存媒體中。
用於進行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯器指令、指令集合架構(ISA)指令、機器指令、機器相依指令、微碼、韌體指令、狀態設定資料或原始程式碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及習知程序性程式設計語言,諸如「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可完全在使用者電腦上執行、部分地在使用者電腦上執行、作為獨立套裝軟體執行、部分地在使用者電腦上執行且部分地在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後種情形中,該遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可連接至外部電腦(例如,使用網際網路服務提供者經由網際網路)。在一些實施例中,包括(例如)可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA)之電子電路可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例的方法、裝置(系統)及電腦程式產物之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖之每一區塊,及流 程圖說明及/或方塊圖中之區塊之組合。
可將此等電腦可讀程式指令提供至一般用途電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生機器,以使得經由該電腦或其他可程式化資料處理裝置之處理器執行之指令建立用於實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之手段。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,其可指導電腦、可程式化資料處理裝置及/或其他器件以特定方式起作用,使得儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施在該一或多個流程圖及/或方塊圖區塊中指定之功能/動作之態樣。
電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理裝置或其他器件上,以使一系列操作步驟在該電腦、其他可程式化裝置或其他器件上執行以產生電腦實施程序,使得在該電腦、其他可程式化裝置或其他器件上執行之指令實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施之架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示模組、區段或指令之部分,其包含用於實施指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中提到之功能可不按諸圖中所提到之次序發生。舉例而言,取決於所涉及之功能性,以連續方式展示之兩個區塊實際上可實質上同時執行,或該等區塊有時可以相反次序執行。亦將注意,可藉由基於執行指定功能或動作或進行專用硬體及電腦指令之組合的專用硬體之系統實施方塊圖及/或流程圖說明之每一區塊,及方塊圖及/或流程圖說明中之區塊之組合。
1010‧‧‧實體核心N
1020‧‧‧實體執行緒A
1022‧‧‧區塊
1024‧‧‧區塊
1026‧‧‧區塊
1028‧‧‧區塊
1040‧‧‧實體執行緒B
1046‧‧‧區塊
1048‧‧‧區塊
1060‧‧‧實體執行緒C
1066‧‧‧區塊
1068‧‧‧區塊

Claims (20)

  1. 一種電腦系統,其包含:一組態,其包含經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心,該核心包括實體執行緒;及一主機程式,其經組態以在該核心上在該ST模式中執行以執行一方法,該方法包含:發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體,該客體實體包括一客體虛擬機(VM)之全部或部分,該開始VE指令係由該核心執行,該執行包含:自由該開始VE指令指定之一位置獲得一第一狀態描述,該第一狀態描述具有一客體狀態;基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒;基於該客體狀態且基於判定該客體實體包括多個客體執行緒,在該核心上在該MT模式中開始該等客體執行緒,其中該等客體執行緒彼此獨立地執行;及基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,在該核心上在該ST模式中開始該客體執行緒。
  2. 如請求項1之電腦系統,其中該核心包括當該核心處於該MT模式中時控制該等實體執行緒之間的共用資源之使用的電腦指令。
  3. 如請求項1之電腦系統,其中當該核心處於該MT模式中時,該主機程式將該客體實體之至少一部分管理為一單一邏輯核心。
  4. 如請求項1之電腦系統,其中由該主機程式利用一執行緒有效性遮罩以指示該客體實體中之該一或多個客體執行緒之有效性。
  5. 如請求項1之電腦系統,其中該方法進一步包含在將控制返回至 該主機程式之前退出該客體實體中之該一或多個客體執行緒之全部。
  6. 如請求項1之電腦系統,其中基於該客體實體包括多個客體執行緒,將為全部該等客體執行緒所共有的狀態資料之至少一部分儲存於一單一位置中。
  7. 如請求項1之電腦系統,其中基於該客體實體包括多個客體執行緒,在一第一狀態描述中含有用於一個執行緒之狀態資料,且在一額外狀態描述中含有用於一或多個額外執行緒中之每一者之狀態資料。
  8. 如請求項7之電腦系統,其中該第一狀態描述及該等額外狀態描述儲存於一環及一清單結構中之至少一者中。
  9. 如請求項1之電腦系統,其進一步包含執行一無動作退出,該無動作退出包括基於來自一其他客體執行緒之一請求而退出一客體執行緒。
  10. 一種用於分派一組態中之多個執行緒的電腦實施方法,該組態包含經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心,該核心包括實體執行緒,該方法包含:由在該核心上在該ST模式中執行之一主機程式發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體,該客體實體包括一客體虛擬機(VM)之全部或部分,且該開始VE指令係由該核心執行,該執行包含:自由該開始VE指令指定之一位置獲得一第一狀態描述,該第一狀態描述具有一客體狀態;基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒;基於該客體狀態且基於判定該客體實體包括多個客體執行 緒,在該核心上在該MT模式中開始該等客體執行緒,其中該等客體執行緒彼此獨立地執行;及基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,在該核心上在該ST模式中開始該客體執行緒。
  11. 如請求項10之方法,其中該核心包括當該核心處於該MT模式中時控制該等實體執行緒之間的共用資源之使用的電腦指令。
  12. 如請求項10之方法,其中當該核心處於該MT模式中時,該主機程式將該客體實體管理為一單一邏輯核心。
  13. 如請求項10之方法,其中由該主機程式利用一執行緒有效性遮罩以指示該客體實體中之該一或多個客體執行緒之有效性。
  14. 如請求項10之方法,其中該方法進一步包含在將控制返回至該主機程式之前退出該客體實體中之該一或多個客體執行緒之全部。
  15. 如請求項10之方法,其中基於該客體實體包括多個客體執行緒,在一第一狀態描述中含有用於一個執行緒之狀態資料,且在一額外狀態描述中含有用於一或多個額外執行緒中之每一者之狀態資料。
  16. 一種用於分派一組態中之多個執行緒的電腦程式產品,該組態包含經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一核心,該核心包括實體執行緒,且該電腦程式產品包含:具有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲存媒體並非一信號,該等程式指令可由一處理電路讀取以使該處理電路執行一方法,該方法包含:由在該核心上在該ST模式中執行之一主機程式發出一開始虛擬執行(開始VE)指令以在該核心上分派一客體實體,該客 體實體包括一客體虛擬機(VM)之全部或部分,且該開始VE指令係由該核心執行,該執行包含:自由該開始VE指令指定之一位置獲得一第一狀態描述,該第一狀態描述具有一客體狀態;基於該客體狀態來判定該客體實體包括一單一客體執行緒抑或多個客體執行緒;基於該客體狀態且基於判定該客體實體包括多個客體執行緒,在該核心上在該MT模式中開始該等客體執行緒,其中該等客體執行緒彼此獨立地執行;及基於該客體狀態且基於判定該客體實體包括一單一客體執行緒,在該核心上在該ST模式中開始該客體執行緒。
  17. 如請求項16之電腦程式產品,其中當該核心處於該MT模式中時,該主機程式將該客體實體之至少一部分管理為一單一邏輯核心。
  18. 如請求項16之電腦程式產品,其中由該主機程式利用一執行緒有效性遮罩以指示該客體實體中之該一或多個客體執行緒之有效性。
  19. 如請求項16之電腦程式產品,其中該方法進一步包含在將控制返回至該主機程式之前退出該客體實體中之該一或多個客體執行緒之全部。
  20. 如請求項16之電腦程式產品,其中基於該客體實體包括多個客體執行緒,在一第一狀態描述中含有用於一個執行緒之狀態資料,且在一額外狀態描述中含有用於一或多個額外執行緒中之每一者之狀態資料。
TW104109237A 2014-03-27 2015-03-23 用於分派電腦中多執行緒之開始虛擬執行指令 TWI614680B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/227,003 US9223574B2 (en) 2014-03-27 2014-03-27 Start virtual execution instruction for dispatching multiple threads in a computer
US14/227,003 2014-03-27

Publications (2)

Publication Number Publication Date
TW201610838A TW201610838A (zh) 2016-03-16
TWI614680B true TWI614680B (zh) 2018-02-11

Family

ID=52633273

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104109237A TWI614680B (zh) 2014-03-27 2015-03-23 用於分派電腦中多執行緒之開始虛擬執行指令

Country Status (14)

Country Link
US (1) US9223574B2 (zh)
EP (1) EP3123325A1 (zh)
JP (1) JP6556748B2 (zh)
KR (1) KR101807450B1 (zh)
CN (1) CN106104465B (zh)
AU (1) AU2015238706B2 (zh)
BR (1) BR112016022436B1 (zh)
CA (1) CA2940891C (zh)
IL (1) IL247858B (zh)
MX (1) MX2016012532A (zh)
RU (1) RU2667791C2 (zh)
SG (1) SG11201606092XA (zh)
TW (1) TWI614680B (zh)
WO (1) WO2015144421A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789034B1 (en) * 2011-12-31 2014-07-22 Parallels IP Holdings GmbH Method for updating operating system without memory reset
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9898348B2 (en) * 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
CN105871917A (zh) * 2016-06-08 2016-08-17 北京金山安全管理系统技术有限公司 传输控制协议tcp连接调度的方法及装置
US10353736B2 (en) 2016-08-29 2019-07-16 TidalScale, Inc. Associating working sets and threads
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
CN109032792A (zh) * 2018-07-10 2018-12-18 矩阵元技术(深圳)有限公司 外包计算方法及系统
CN110032407B (zh) 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备
US11029991B2 (en) 2019-03-08 2021-06-08 International Business Machines Corporation Dispatch of a secure virtual machine
CN111552574A (zh) * 2019-09-25 2020-08-18 华为技术有限公司 一种多线程同步方法及电子设备
US11676013B2 (en) * 2019-12-30 2023-06-13 International Business Machines Corporation Job-launch time reduction by node pre-configuration
US12020059B2 (en) 2021-08-30 2024-06-25 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0145960A2 (en) * 1983-12-14 1985-06-26 International Business Machines Corporation Selective guest system purge control
US20070294696A1 (en) * 2006-06-20 2007-12-20 Papakipos Matthew N Multi-thread runtime system
TW201040840A (en) * 2009-02-25 2010-11-16 Ibm Microprocessor with software control over allocation of shared resources among multiple virtual servers

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4456954A (en) 1981-06-15 1984-06-26 International Business Machines Corporation Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations
EP0150177A1 (en) 1983-07-11 1985-08-07 Prime Computer, Inc. Data processing system
US4779188A (en) 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
US4792895A (en) 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
JPH0658650B2 (ja) * 1986-03-14 1994-08-03 株式会社日立製作所 仮想計算機システム
US5317754A (en) 1990-10-23 1994-05-31 International Business Machines Corporation Method and apparatus for enabling an interpretive execution subset
US5437033A (en) * 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
EP0619898A4 (en) 1992-01-02 1995-05-03 Amdahl Corp COMPUTER SYSTEM WITH TWO GAS SHIFTS.
US5485626A (en) 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
US6453392B1 (en) 1998-11-10 2002-09-17 International Business Machines Corporation Method of and apparatus for sharing dedicated devices between virtual machine guests
US6349365B1 (en) 1999-10-08 2002-02-19 Advanced Micro Devices, Inc. User-prioritized cache replacement
US6854114B1 (en) 1999-10-21 2005-02-08 Oracle International Corp. Using a virtual machine instance as the basic unit of user execution in a server environment
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
JP2004506262A (ja) 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
EP1182567B1 (en) 2000-08-21 2012-03-07 Texas Instruments France Software controlled cache configuration
US6971084B2 (en) 2001-03-02 2005-11-29 National Instruments Corporation System and method for synchronizing execution of a batch of threads
US20040128448A1 (en) 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
US7155600B2 (en) 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US7530067B2 (en) 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7130949B2 (en) * 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7694304B2 (en) 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US7493621B2 (en) 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7526515B2 (en) * 2004-01-21 2009-04-28 International Business Machines Corporation Method and system for a grid-enabled virtual machine with movable objects
US7526421B2 (en) 2004-02-27 2009-04-28 International Business Machines Corporation System and method for modeling LPAR behaviors in a simulation tool
US9189230B2 (en) * 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US8271976B2 (en) 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US7873776B2 (en) 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US20060242389A1 (en) 2005-04-21 2006-10-26 International Business Machines Corporation Job level control of simultaneous multi-threading functionality in a processor
US9785485B2 (en) * 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US8607228B2 (en) * 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
US7698540B2 (en) 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US8621459B2 (en) * 2006-12-22 2013-12-31 Intel Corporation Method and apparatus for multithreaded guest operating system execution through a multithreaded host virtual machine monitor
US8286170B2 (en) 2007-01-31 2012-10-09 International Business Machines Corporation System and method for processor thread allocation using delay-costs
US7685409B2 (en) * 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
JP5595633B2 (ja) 2007-02-26 2014-09-24 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
KR101109029B1 (ko) * 2007-06-20 2012-01-31 후지쯔 가부시끼가이샤 연산 장치
US9164784B2 (en) 2007-10-12 2015-10-20 International Business Machines Corporation Signalizing an external event using a dedicated virtual central processing unit
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
WO2009101563A1 (en) 2008-02-11 2009-08-20 Nxp B.V. Multiprocessing implementing a plurality of virtual processors
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
US9535767B2 (en) * 2009-03-26 2017-01-03 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture
FR2950714B1 (fr) 2009-09-25 2011-11-18 Bull Sas Systeme et procede de gestion de l'execution entrelacee de fils d'instructions
US8650554B2 (en) 2010-04-27 2014-02-11 International Business Machines Corporation Single thread performance in an in-order multi-threaded processor
US8595469B2 (en) * 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing
US8589922B2 (en) 2010-10-08 2013-11-19 International Business Machines Corporation Performance monitor design for counting events generated by thread groups
CN102193779A (zh) 2011-05-16 2011-09-21 武汉科技大学 一种面向MPSoC的多线程调度方法
US8856452B2 (en) 2011-05-31 2014-10-07 Illinois Institute Of Technology Timing-aware data prefetching for microprocessors
US8990830B2 (en) 2011-07-19 2015-03-24 International Business Machines Corporation Thread management in parallel processes
US8752036B2 (en) 2011-10-31 2014-06-10 Oracle International Corporation Throughput-aware software pipelining for highly multi-threaded systems
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US8930950B2 (en) 2012-01-19 2015-01-06 International Business Machines Corporation Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US9032191B2 (en) 2012-01-23 2015-05-12 International Business Machines Corporation Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels
CN102866957B (zh) 2012-07-31 2014-07-30 中国人民解放军国防科学技术大学 面向多核多线程微处理器的虚拟活跃页缓冲方法及装置
JP6074955B2 (ja) 2012-08-31 2017-02-08 富士通株式会社 情報処理装置および制御方法
US10002031B2 (en) 2013-05-08 2018-06-19 Nvidia Corporation Low overhead thread synchronization using hardware-accelerated bounded circular queues
US9218185B2 (en) * 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9804846B2 (en) * 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9195493B2 (en) * 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US9921848B2 (en) * 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9594660B2 (en) * 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0145960A2 (en) * 1983-12-14 1985-06-26 International Business Machines Corporation Selective guest system purge control
US20070294696A1 (en) * 2006-06-20 2007-12-20 Papakipos Matthew N Multi-thread runtime system
TW201040840A (en) * 2009-02-25 2010-11-16 Ibm Microprocessor with software control over allocation of shared resources among multiple virtual servers

Also Published As

Publication number Publication date
RU2016127443A3 (zh) 2018-04-28
BR112016022436A2 (zh) 2017-08-15
IL247858B (en) 2019-03-31
KR101807450B1 (ko) 2018-01-18
SG11201606092XA (en) 2016-08-30
RU2667791C2 (ru) 2018-09-24
US9223574B2 (en) 2015-12-29
AU2015238706A1 (en) 2016-08-04
CA2940891A1 (en) 2015-10-01
TW201610838A (zh) 2016-03-16
JP2017515203A (ja) 2017-06-08
CA2940891C (en) 2023-09-26
CN106104465B (zh) 2019-03-01
US20150277908A1 (en) 2015-10-01
RU2016127443A (ru) 2018-04-28
JP6556748B2 (ja) 2019-08-07
AU2015238706B2 (en) 2018-05-10
KR20160104060A (ko) 2016-09-02
CN106104465A (zh) 2016-11-09
EP3123325A1 (en) 2017-02-01
MX2016012532A (es) 2016-12-20
BR112016022436B1 (pt) 2023-10-03
WO2015144421A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
TWI614680B (zh) 用於分派電腦中多執行緒之開始虛擬執行指令
TWI598818B (zh) 用於管理電腦中多執行緒之控制區之系統、方法及電腦程式產品
TWI617986B (zh) 在電腦中分派多執行緒
JP6556747B2 (ja) コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
US9389897B1 (en) Exiting multiple threads of a simulation environment in a computer