TWI617986B - 在電腦中分派多執行緒 - Google Patents

在電腦中分派多執行緒 Download PDF

Info

Publication number
TWI617986B
TWI617986B TW104109600A TW104109600A TWI617986B TW I617986 B TWI617986 B TW I617986B TW 104109600 A TW104109600 A TW 104109600A TW 104109600 A TW104109600 A TW 104109600A TW I617986 B TWI617986 B TW I617986B
Authority
TW
Taiwan
Prior art keywords
thread
threads
entity
core
state
Prior art date
Application number
TW104109600A
Other languages
English (en)
Other versions
TW201610854A (zh
Inventor
法迪Y 布撒巴
馬克S 費洛
麗莎 克雷頓 海勒
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 TW201610854A publication Critical patent/TW201610854A/zh
Application granted granted Critical
Publication of TWI617986B publication Critical patent/TWI617986B/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/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/45558Hypervisor-specific management and integration aspects
    • 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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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, 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
    • 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/4557Distribution of virtual machine instances; Migration and load balancing

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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

根據一項態樣,一種電腦系統包括一組態,該組態具有經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一機器。此外,該機器包括實體執行緒。該機器經組態以執行一方法,該方法包括發出一開始虛擬執行(開始VE)指令以在核心上分派具有多個邏輯執行緒的一客體實體。該客體實體包括一客體虛擬機(VM)之全部或一部分,且發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機執行。藉由該機器執行該開始VE指令包括:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。

Description

在電腦中分派多執行緒
本發明大體上係關於多執行緒(MT),且更具體言之,係關於用於在一電腦中分派多個執行緒之一機器實施。
多執行緒(MT)提供用於在不需要添加額外核心之情況下增加可在單一實體處理器核心內並行操作的處理器執行緒之數目的手段。理想地,MT藉由使一或多個執行緒使用核心硬體之當前未由在相同核心上執行之其他執行緒使用的部分來提供此增加能力。舉例而言,在由快取記憶體未命中所引起之潛時或一個執行緒中之其他延遲期間,一或多個其他執行緒可利用核心資源,因此增加資源之利用率。實際上,即使此共用導致執行緒之間的一些干擾且需要某一額外硬體,但MT仍提供使用較少硬體執行每一執行緒工作的能力,若每一執行緒在其自身隔離核心硬體上執行,則將需要此情形。常常,當執行緒之間的硬體資源之共用亦減少電腦系統上之總應力以將資訊(諸如,來自記憶體之資料)提供至兩個獨特核心時,額外益處可源自MT。
通常,儘管MT提供硬體節省,但另一工作執行緒之添加消耗超管理器層級處之使用額外單獨核心提供增加能力將需要的相同協調成本。在許多情況下,一旦達成某一按比例調整比率,在工作執行緒(無論執行於單一核心抑或共用核心上)之間協調資源的額外負荷便為顯著的且可減小或甚至勝過由執行獨立工作執行緒之能力所得到的益處。 亦即,當用於管理的事物之數目增加時通常存在更多管理額外負荷。
實施例包括一種用於分派一多執行緒化客體虛擬機(VM)之系統、方法及電腦程式產品。根據一項態樣,一種電腦系統包括一組態,該組態具有經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之機器。此外,該機器包括實體執行緒。該機器經組態以執行一方法,該方法包括發出一開始虛擬執行(開始VE)指令以在核心上分派包含多個邏輯執行緒的一客體實體。該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機執行。藉由該機器執行該開始VE指令包括:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
根據另一態樣,提供一種用於在一組態中分派一多執行緒化客體虛擬機(VM)之電腦實施方法。該組態包括一機器,該機器具有經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一單一核心。該核心包括實體執行緒。該方法包括發出一開始虛擬執行(開始VE)指令以在該核心上分派包含多個邏輯執行緒的一客體實體。該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機執行。藉由該機器執行該開始VE指令包括:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
另一態樣包括一種用於在一組態中分派一多執行緒化客體虛擬機(VM)之電腦程式產品。該組態包括一機器,該機器具有經啟用以 在一ST模式及一MT模式中操作之一單一核心。此外,該機器包括實體執行緒。該電腦程式產品包括體現有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲存媒體並非一信號。該等程式指令可藉由一處理電路讀取以使該處理電路執行一方法。該方法包括發出一開始虛擬執行(開始VE)指令以在該核心上分派包含多個邏輯執行緒的一客體實體。該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機執行。藉由該機器執行該開始VE指令包括:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
100‧‧‧運算環境
102‧‧‧處理器複合體
104‧‧‧分割區
106‧‧‧實體核心
108‧‧‧層級0超管理器
110‧‧‧作業系統
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‧‧‧虛擬機1(VM1)
306‧‧‧虛擬機2(VM2)
308‧‧‧虛擬機3(VM3)
310‧‧‧作業系統3(OS1)
312‧‧‧作業系統2(OS2)
314‧‧‧作業系統1(OS3)
400‧‧‧狀態描述
402‧‧‧客體通用暫存器(GR)
404‧‧‧存取暫存器(AR)
406‧‧‧控制暫存器(CR)
408‧‧‧客體計時器
410‧‧‧客體首碼暫存器
412‧‧‧虛擬CPU編號(VCN)
414‧‧‧程式狀態字組(PSW)及指令位址(IA)
420‧‧‧攔截控制(IC)位元
422‧‧‧下一狀態描述(NSD)
430‧‧‧執行緒有效性遮罩(TVM)
432‧‧‧邏輯分割區編號(LPN)
520‧‧‧執行緒有效性遮罩(TVM)
530‧‧‧位元0
531‧‧‧位元1
532‧‧‧位元2
533‧‧‧位元3
537‧‧‧位元n
602‧‧‧開始VE指令之運算元
603‧‧‧邏輯執行緒0之主要狀態描述
605‧‧‧邏輯執行緒x
607‧‧‧邏輯執行緒y
620‧‧‧執行緒有效性遮罩(TVM)
702‧‧‧開始VE指令之運算元
704‧‧‧第一輸入項
705‧‧‧執行緒0之主要狀態描述
706‧‧‧第二輸入項
707‧‧‧執行緒1之次要狀態描述
708‧‧‧第三輸入項
709‧‧‧執行緒2之次要狀態描述
720‧‧‧執行緒有效性遮罩(TVM)
802‧‧‧開始VE指令之運算元
803‧‧‧執行緒0之主要狀態描述
804‧‧‧指標/下一狀態描述(NSD)欄位
805‧‧‧執行緒1之次要狀態描述
806‧‧‧指標/下一狀態描述(NSD)
807‧‧‧執行緒2之次要狀態描述
809‧‧‧執行緒n之狀態描述
810‧‧‧下一狀態描述(NSD)
820‧‧‧執行緒有效性遮罩(TVM)
902‧‧‧開始VE指令之運算元
903‧‧‧執行緒0之主要狀態描述
904‧‧‧下一狀態描述(NSD)
905‧‧‧執行緒1之次要狀態描述
906‧‧‧下一狀態描述(NSD)
907‧‧‧執行緒2之次要狀態描述
909‧‧‧執行緒n之狀態描述
910‧‧‧下一狀態描述(NSD)
920‧‧‧執行緒有效性遮罩(TVM)
1010‧‧‧實體核心N
1020‧‧‧實體執行緒A
1040‧‧‧實體執行緒B
1060‧‧‧實體執行緒C
1120‧‧‧實體執行緒A
1140‧‧‧實體執行緒B
1160‧‧‧實體執行緒C
1202‧‧‧開始VE指令之運算元
1203‧‧‧主要狀態描述
1204‧‧‧系統控制區(SCA)起點(SCAO)
1205‧‧‧下一狀態描述01(NSD01)
1206‧‧‧核心描述區位址(CDAA)欄位
1213‧‧‧核心0執行緒1之次要狀態描述
1214‧‧‧系統控制區(SCA)起點(SCAO)
1215‧‧‧下一狀態描述02(NSD02)
1216‧‧‧核心描述區位址(CDAA)欄位
1223‧‧‧核心0執行緒2之最終次要狀態描述
1224‧‧‧系統控制區(SCA)起點(SCAO)
1226‧‧‧核心描述區位址(CDAA)欄位
1232‧‧‧開始VE指令之運算元
1233‧‧‧核心1執行緒0之主要狀態描述
1234‧‧‧系統控制區(SCA)起點(SCAO)
1235‧‧‧下一狀態描述11(NSD11)
1236‧‧‧核心描述區位址(CDAA)欄位
1243‧‧‧核心1執行緒1之次要狀態描述
1244‧‧‧系統控制區(SCA)起點(SCAO)
1245‧‧‧下一狀態描述12(NSD12)
1246‧‧‧核心描述區位址(CDAA)欄位
1253‧‧‧核心1執行緒2之最終次要狀態描述
1254‧‧‧系統控制區(SCA)起點(SCAO)
1256‧‧‧核心描述區位址(CDAA)欄位
1257‧‧‧IP位元
1260‧‧‧核心導向式系統控制區(COSCA)共同區
1261‧‧‧系統控制區(SCA)核心有效性遮罩(SCVM)
1262‧‧‧核心描述區位址0(CDAA0)
1264‧‧‧核心描述區位址1(CDAA1)
1270‧‧‧核心描述區
1271‧‧‧系統控制區(SCA)執行緒有效性遮罩(STVM0)
1272‧‧‧核心0執行緒0之執行緒描述區
1273‧‧‧狀態描述位址(SDA)
1274‧‧‧核心0執行緒1之執行緒描述區
1275‧‧‧狀態描述位址(SDA)
1276‧‧‧核心0執行緒2之執行緒描述區
1277‧‧‧狀態描述位址(SDA)
1280‧‧‧核心描述區
1281‧‧‧系統控制區(SCA)執行緒有效性遮罩1(STVM1)
1282‧‧‧核心1執行緒0之執行緒描述區
1283‧‧‧狀態描述位址(SDA)
1284‧‧‧核心1執行緒1之執行緒描述區
1285‧‧‧狀態描述位址(SDA)
1286‧‧‧核心1執行緒2之執行緒描述區
1287‧‧‧狀態描述位址(SDA)
1450‧‧‧控制及狀態位元
1508‧‧‧主要執行緒P之硬體狀態控制
1548‧‧‧次要執行緒A之硬體狀態控制
1578‧‧‧次要執行緒B之硬體狀態控制
1599‧‧‧最終同步點
1600‧‧‧電腦程式產品
1602‧‧‧儲存媒體
1604‧‧‧電腦可讀程式碼構件或邏輯
視為實施例的標的物被特別地指出且在本說明書的結論部分處之申請專利範圍中被清楚地主張。實施例之前述內容及其他特徵及優點自結合隨附圖式進行的以下詳細描述顯而易見,其中:圖1描繪可根據實施例實施之運算環境;圖2描繪可根據實施例實施之實體處理器;圖3描繪可根據實施例實施之運算環境;圖4描繪根據實施例之多執行緒化(MT)邏輯執行緒之狀態描述;圖5描繪根據實施例之執行緒有效性遮罩(TVM)之方塊圖;圖6描繪根據實施例之固定偏移狀態描述群組;圖7描繪根據實施例之經指定為位址清單的狀態描述群組;圖8描繪根據實施例之經指定為連結清單的狀態描述群組;圖9描繪根據實施例之經指定為循環清單或環的狀態描述群組;圖10描繪根據實施例之核心分派程序;圖11描繪根據實施例之來自虛擬執行的協調退出; 圖12描繪根據實施例之系統控制區的方塊圖;圖13描繪根據實施例之用於在多執行緒化核心之間協調的程序流程;包括圖14A及圖14B之圖14描繪根據實施例之核心分派的機器實施;包括圖15A及圖15B之圖15描繪根據實施例的自虛擬執行之協調退出的機器實施;及圖16描繪根據實施例之電腦可讀媒體。
本文中所描述之實施例可用以減少多執行緒(MT)環境中之超管理器管理額外負荷。如本文所描述,多個執行緒之管理可在將多個執行緒作為單一邏輯核心管理的超管理器與在多個執行緒存取實體核心之資源時管理多個執行緒之間的互動的機器之間分割。此可藉由允許超管理器基於邏輯核心管理許多的超管理器基礎設施資源及允許機器基於較細粒度執行緒管理其他資源而導致實質上減少多執行緒(MT)額外負荷成本。實施例包括可藉由在單一執行緒(ST)上執行之超管理器執行的核心分派指令。核心分派指令之執行(在本文中稱為「指定MT之開始VE指令」)可引起構成客體虛擬機(VM)之全部或一部分的多個客體邏輯執行緒待在單一實體核心上分派。在一實施例中,藉由超管理器使用以分派客體之指令指定待分派之客體為單執行緒化抑或多執行緒化的。
本文中所描述之實施例可包括用於管理多執行緒化邏輯核心之分派的結構,諸如用於指示客體邏輯核心內之哪些邏輯執行緒當前有效的執行緒有效性遮罩及包括狀態描述環之狀態描述群組。另外,主要及次要狀態描述及欄位類型(例如,主要、核心共用、執行緒特定)可經實施以在具有多個執行緒之邏輯核心被分派時允許電腦資源之有 效管理。另外,邏輯核心內之所有執行緒同時退出虛擬執行的協調退出可經提供以簡化超管理器及邏輯核心管理功能兩者。
實施例可包括藉由超管理器維持的在本文中稱為核心導向式系統控制區(COSCA)之控制結構。COSCA藉由超管理器及機器兩者使用以管理可影響客體組態中之多個邏輯處理器的某些功能。COSCA之實施例經實施為樹狀結構,其中葉表示邏輯核心且每一葉含有對應於彼核心之執行緒的清單。COSCA結構可含有允許超管理器容易地存取用於特定核心中之所有執行緒之狀態描述的欄位(例如,狀態描述位址)。
實施例亦可包括核心分派之機器實施(例如,指定MT之開始VE指令),其中位於機器上之毫碼可用以管理核心分派程序。
如本文中所使用,術語毫碼用以指處理器硬體之操作不可或缺的經授權內部程式碼。當機器在執行模式(本文中稱為毫模式)下執行時,由該機器執行毫碼。
當客體邏輯核心包括多個執行緒時,該等邏輯執行緒中之一者經指定為主要執行緒且剩餘者經指定為次要執行緒。術語「主要」適用於邏輯執行緒。自硬體觀點來看,實體執行緒既非主要執行緒亦非次要執行緒;一旦在其上發出指定MT之開始VE指令,其便變為主要執行緒。實體層級處之此臨時區別的原因係因為當控制經傳遞回至主機時,其通常在主要執行緒上進行,亦即,控制經傳遞回至與發出開始VE所在的實體執行緒相同的實體執行緒上之超管理器。
在一實施例中,毫碼可用以將任何執行緒(主要或次要)之幾乎整個狀態自任何其他執行緒(主要或次要)載入。在諸實施例中,毫碼使用此狀態載入靈活性以載入另一執行緒之極小部分,以便充分利用可藉由每一執行緒對其自身狀態之並行載入而獲得的潛在效率。一些命令(諸如,清除轉譯後備緩衝器或「PTLB」)及共同資源可適用於所有 執行緒,且此情形允許其自單一執行緒執行或載入。此不僅節省命令或負荷自身之時間,而且在一些狀況下,節省判定實際上是否需要該等動作所需之測試。包括於設計中之此靈活性可允許毫碼隨設計、開發及測試循環進展而持續地調整用以核心分派之演算法。可提供用以有效地開始及停止執行緒執行之機制。此外,毫碼亦可用以考量內部韌體正執行於在軟體層級處被視為無效之執行緒上的情境。
額外實施例係有關於自經分派MT客體邏輯核心協調退出而返回至ST主機(例如,超管理器)之機器實施。在一實施例中,毫碼用以使系統同步,且此同步包括藉由考量所有不同執行緒之當前狀態中之每一者來協調該等執行緒。實施例亦可包括在保持較低優先順序中斷之同時處置高優先順序中斷,其可延遲退出。可按允許在退出完成之後最有效使用核心資源之方式進行次要執行緒之關閉。舉例而言,毫碼可停用某些中斷以防止將核心資源用以在毫碼中斷處理常式並非必要時分派該毫碼中斷處理常式。毫碼亦可用以指示某些實體暫存器不再被使用以使得其為空閒的以用於供正執行之ST使用。
如本文所用,術語「執行緒」係指單一指令串流及其相關聯狀態。亦即,在架構層級處,每一邏輯執行緒表示一獨立CPU或處理器。在硬體層級處,實體執行緒係當邏輯執行緒經分派時結合維持彼客體狀態而執行與彼邏輯執行緒相關聯之指令串流。正是機器對彼執行緒狀態之維持減少了在超管理器層級處所需之管理。可用於由邏輯核心使用之邏輯執行緒之總數受可用於實體核心之實體執行緒之總數限制。
如本文中所使用,術語「實體核心」係指執行一或多個獨立指令串流或執行緒但共用許多基本資源(諸如,執行單元及低層級快取記憶體)的硬體處理單元。可以多種方式進行此共用,該等方式包括藉由使每一執行緒在獨立時間使用相同硬體資源,或藉由使資源被邏 輯上共用,同時每一實體輸入項被標示有執行緒識別符。執行緒(例如,常常需要資源A但僅很少需要資源B之一個執行緒及通常使用資源B而不使用資源A之另一執行緒)之間的適當綜效可改良此共用之效率。如本文中所使用,術語「機器」係指包括於實體核心中之硬體以及用於支援實體核心之毫碼及其他硬體。
如本文中所使用,術語「客體VM」及「客體」可互換地用以指可包括單一CPU或多個CPU之單一客體組態。如本文中所使用,術語「邏輯核心」係指經定義以作為指定MT之開始VE指令之一部分而一起分派的邏輯客體執行緒或CPU之群組。客體VM可由單一邏輯核心(ST或MT)或多個邏輯核心(其中之每一者亦可為ST或MT)組成。
如本文中所使用,術語「軟體」係指超管理器程式(例如,PR/SM或zVM)或客體作業系統或由於開始VE指令而分派的應用程式。
如本文中所使用,術語「超管理器」及「主機」係指管理系統資源且分派客體邏輯處理器以在實體硬體上執行的程式。
用以分派客體點至狀態描述或狀態描述群組之開始VE指令之運算元定義彼客體處理器或核心之狀態。狀態描述自身具有指向可視為狀態描述之擴充之「衛星區塊」的指標且包括進一步定義彼客體核心或處理器之狀態的額外資訊。如本文中所使用,術語「狀態描述」不僅指狀態描述自身而且指彼等衛星區塊。核心導向式系統控制區(COSCA)(此等衛星區塊中之一者)描繪於圖12中。
現轉向圖1,大體展示可藉由例示性實施例實施之運算環境100。運算環境100可(例如)基於由國際商業機器公司(Armonk,New York)提供之z/架構。z/架構描述於2012年8月之題為「z/Architecture Principles of Operation」之IBM®公開案(IBM公開案第SA22-7832-09號)中,該公開案特此以全文引用的方式併入本文中。在一項實例 中,基於z/架構之運算環境包括由國際商業機器公司(Armonk,New York)提供之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為由國際商業機器公司(Armonk,New York)提供之z/OS®作業系統。
實體核心106包括經分配至邏輯分割區104之實體處理器資源。邏輯分割區104可包括一或多個邏輯處理器,其中之每一者表示分配至分割區104之所有或一部分實體處理器資源。實體核心106可專用於特定分割區104之邏輯核心,使得基礎核心106之實體處理器資源經保留用於該分割區104;可與另一分割區104之邏輯核心共用,使得基礎核心資源之實體處理器資源潛在地可用於另一分割區104。
在圖1中所展示之實施例中,邏輯分割區104係藉由層級0超管理器108管理,該層級0超管理器藉由在實體核心106上執行之韌體實施。邏輯分割區104及超管理器108各自包含駐留在與實體核心106相關聯之中心儲存器(記憶體)之各別部分中的一或多個程式。超管理器108之一項實例為由國際商業機器公司(Armonk,New York)提供之處理器資源/系統管理器(PR/SMTM)。
在圖1中耦接至中央處理器複合體102之系統控制器120可包括負責在發出請求之不同處理器之間仲裁的集中式邏輯。舉例而言,當系統控制器120接收記憶體存取請求時,其判定是否允許存取彼記憶體位置,且若允許,則將記憶體位置之內容提供至中央處理器複合體102,同時維持彼複合體內之處理器之間的記憶體一致性。
現轉向圖2,大體展示根據實施例之用於實施機器或實體核心(諸如,圖1中之實體核心106)的處理電路200之方塊圖。處理電路200可包括在多處理環境中之複數個實體核心中之一個實體核心。圖2中所展示之處理電路200包括可將處理電路200耦接至其他核心及周邊器件的系統控制器介面單元202。系統控制器介面單元202亦可將Dcache 204(其讀取及儲存資料值)、Icache 208(其讀取程式指令)及快取記憶體介面單元206連接至外部記憶體、處理器及其他周邊器件。
Icache 208可結合指令提取單元(IFU)210提供指令串流之載入,該指令提取單元預先提取指令且可包括推測性載入及分支預測能力。可將所提取指令提供至指令解碼單元(IDU)212以用於解碼成指令處理資料。
IDU 212可將指令提供至發出單元214,該發出單元可控制指令至各種執行單元(諸如,用於執行一般運算之一或多個定點單元(FXU)216及用於執行浮點運算之一或多個浮點單元(FPU)218)之發出。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,外加在邏輯分割區104(標記為LP2)中執行之層級1超管理器302。如圖3中所展示,層級1超管理器302可提供先前關於超管理器108(在本文中亦稱為「層級0超管理器」)描述之相同超管理器功能,諸如在標記為LP2之邏輯分割區104內的多個作業系統(例如,在虛擬機VM1 304、VM2 306及VM3 308中執行之OS1 314、OS2 312及OS3 310)之間的資源之透明時間配量及彼等作業系統之彼此隔離。圖3中所展示之實施例包括作為實例之三個虛擬機且其他實施例可基於應用程式需求而包括更多或更少虛擬機。
如圖3中所展示,標記為LP1之邏輯分割區104具有駐留作業系統110,且標記為LP2之邏輯分割區104執行層級1超管理器302,層級1超管理器302繼而建立虛擬機304、306、308之層級1超管理器302,該等虛擬機中之每一者執行其自身的駐留作業系統314、312、310。任何數目個邏輯分割區104可執行層級1超管理器302。在一實施例中,層級1超管理器302為由國際商業機器公司(Armonk,New York)提供之z/VM超管理器。在各種邏輯分割區中執行之常駐作業系統可不同,且當在層級1超管理器302下執行時,單一分割區104(例如,LP2)內 之駐留作業系統(例如,作業系統314、312、310)亦可不同。在一實施例中,在標記為LP1之邏輯分割區104中的作業系統110為由國際商業機器公司(Armonk,New York)提供之z/OS作業系統。在一實施例中,作業系統310及312為Linux且作業系統314為z/OS。
當層級1超管理器302在邏輯分割區104中執行時,其可將由層級0超管理器(諸如,超管理器108)提供至邏輯分割區104之資源的相同虛擬化提供至在虛擬機308、306、304中執行之作業系統310、312、314。當在第一層級處時,每一虛擬機可包括多個虛擬處理器。
實體核心106包括可為專用或如針對圖1所描述在邏輯分割區104LP1、LP2、LP3及LP4之間共用之實體處理器資源。當在一或多個實體核心上分派邏輯分割區LP2時,層級1超管理器302可接著在其虛擬機VM1 304、VM2 306及VM3 308之間透明地共用彼等資源。在一項實施例中,層級0超管理器108使用指定MT之開始VE指令以分派多執行緒化層級1超管理器302,該多執行緒層級1超管理器接著使用指定ST之開始VE指令以分派單執行緒化虛擬機VM1 304、VM2 306及VM3 308。在一不同實施例中,層級0超管理器108使用指定ST之開始VE指令以分派單執行緒化層級1超管理器302,該單執行緒層級1超管理器接著使用指定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。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之狀態描述,此係因為執行緒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,其含有用於執行緒1之次要狀態描述905的NSD 904,該次要狀態描述含有用於執行緒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,大體展示根據實施例之自虛擬執行的協調退出。A如圖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中所指示。實體執行緒A 1120上之毫碼將主機狀態重新載入至硬體中(如區塊1138中所展示),此情形導致超管理器軟體在實體執行緒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,其指向核心0執行緒1之次要狀態描述1213,該次要狀態描述繼而含有指向群組中之核心0執行緒2之最終次要狀態描述1223的NSD02 1215。類似地,邏輯核心1之狀態描述群組以核心1執行緒0之主要狀態描述1233開始,該主要狀態描述含有指向核心1執行緒1之次要狀態描述1243的NSD11 1235,該次要狀態描述含有指向核心1執行緒2之最終次要狀態描述1253的NSD12 1245。此客體組態中之所有六個執行緒的狀態描述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中之位元及核心描述位址之陣列兩者可藉由核心編號來標以索引。指向核心0之核心描述區(CDA)1270的CDAA0 1262包括於COSCA共同區1260中。 另外,核心0中之所有執行緒的狀態描述中之CDAA欄位1206、1216、1226亦指向核心0之CDA 1270。指向核心1之CDA 1280的CDAA1 1264亦包括於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編號。需要超管理器維持在所有狀態描述中之核心共同欄位,但允許機器存取任何執行緒之狀態描述中的此欄位,無論哪個提供最佳效能。因為此等欄位並不藉由超管理器常常改變但常常藉由機器每次進入虛擬執行時存取,所以將欄位定義為核心共同而非執行緒特定的允許虛擬執行進入(例如)以使用主要狀態描述中之值自主要執行緒載入次要執行緒設施。執行緒特定欄位對每一邏輯執行緒為特定的;代表任何給定執行緒對此等欄位中之一者的任何存取必須使用來自彼執行緒之狀態描述的值。此分類用於在執行緒之間通常係獨特的欄位,諸如客體首碼。
實施例包括核心分派指令之機器實施。當超管理器發出核心分派或指定MT之開始VE指令時,藉由相關聯之狀態描述群組描述的邏輯核心藉由虛擬執行進入(VE進入)毫碼載入至實體核心中。作為此程序之部分,將每一有效邏輯執行緒之狀態載入至實體執行緒中。邏輯執行緒至實體執行緒之映射可為直接的一對一映射或可經虛擬化。在VE進入開始之前,每一實體執行緒之內容含有最後在其上執行之任一虛擬執行緒之狀態。因此,VE進入毫碼用新分派之客體執行緒之狀態替換整個狀態。
當核心分派藉由單執行緒化超管理器調用時,毫碼之職責為將個別客體執行緒(邏輯處理器)狀態載入至硬體中且設定硬體直至開始 多執行緒化執行。為了藉由允許每一實體執行緒並行地載入其自身狀態之大部分來改變效率,毫碼可針對次要執行緒中之每一者載入少數硬體暫存器(藉由主要執行緒抑或另一已初始化之次要執行緒)。此載入可需要自硬體觀點來看當前非作用之次要執行緒「被喚醒」以開始執行將完成其自身客體狀態之初始化的毫碼常式且最終開始執行客體程式。存在以下狀況:儘管無超管理器或客體程式碼正在次要執行緒上執行,但內部韌體可正執行以便處置(例如)一些內部系統管理功能。若為如此狀況,則機器必須協調此執行與客體執行緒之分派。
存在可經指定以適用於整個核心之一些操作,諸如TLB之清除。此情形消除對每一執行緒判定清除是否必要且在必要時執行彼清除之需求。此外,存在在核心內之實體執行緒之間共用或共有的一些核心資源。毫碼可利用以下事實:需要僅自單一執行緒載入共用資源且若認識到進行節省,則單一執行緒可載入共同執行緒資源之所有複本。VE進入毫碼亦可使用客體多執行緒啟用及執行緒有效性位元以略過無效邏輯執行緒之初始化,以便致力於加速初始化毫碼在有效執行緒上之執行。靈活硬體設計允許毫碼之實施例隨設計開發而使其實施最佳化。
現轉向包括圖14A及圖14B之圖14,大體展示根據實施例之核心分派之機器實施。如圖14A中所展示,在區塊1400處,藉由在單一執行緒(被稱為主要執行緒)上執行之超管理器使用指定MT之開始VE指令來初始化核心分派。基於超管理器發出開始VE指令,在主要執行緒上調用VE進入毫碼,該主要執行緒為發出該指令之執行緒且其藉由在用於整個核心之硬體上起始多執行緒而開始。此初始化之大部分可包括測試來自所有可適用之次要執行緒的硬體狀態位元及/或設定所有可適用之次要執行緒中的硬體控制位元或欄位。圖14A中所展示之控制及狀態位元1450可在邏輯上駐留於次要執行緒自身之硬體中, 或其可在邏輯上駐留於在執行緒之間共用但表示及控制次要執行緒的共同硬體資源中。在區塊1402處,VE進入毫碼使用狀態描述中之執行緒有效性遮罩(TVM)判定自軟體觀點來看哪些客體邏輯執行緒有效且因此需要被載入至硬體中。其亦判定有效邏輯執行緒至實體執行緒之映射。
圖14A之區塊1404至1414係藉由毫碼執行以驗證所請求之實體執行緒是否可用。在區塊1404處,毫碼防止可適用之次要硬體執行緒採用可調用內部程式碼之新中斷或開始執行任何新程式碼。此可藉由在次要執行緒中設定適當硬體控制來實現。在區塊1406處,判定軟體是否在次要執行緒上執行。在一實施例中,在主要執行緒上正發出開始VE指令之超管理器保證此核心上之其他硬體執行緒並不執行任何程式碼(例如,超管理器或客體程式碼)。在另一實施例中,發出開始VE指令之超管理器可能不能夠容易地判定此新的開始VE所需之任何其他硬體執行緒是否正執行程式碼,例如,程式碼與獨立開始VE相關聯。在此狀況下,VE進入毫碼在區塊1406處檢查關於次要執行緒之適當硬體狀態位元。
若在區塊1406處判定程式碼正在執行客體次要執行緒所需之硬體上執行,則新的開始VE指令完成且在區塊1408處,超管理器由機器告知開始VE指令不成功且可能被告知當前可用硬體執行緒之數目。作為回應,超管理器可在於區塊1400處再次發出開始VE指令之前採取適當動作,諸如減少待分派之有效客體執行緒之數目或等待一些預定時間,如由區塊1410所指示。若在區塊1406處判定硬體可用,則處理繼續至區塊1412。在區塊1412處,毫碼(例如)藉由檢查硬體中之適當狀態位元來判定可適用之次要執行緒中之任一者是否正執行內部韌體程式碼。若正執行,則在一項實施例中,主要執行緒等待次要執行緒完成執行內部程式碼且在等待的同時,為了避免懸置,主要執 行緒可實行某些中斷。然而,其可阻止次要執行緒採取其他中斷,因此其可更快速地達到閒置狀態。處理接著在區塊1416處繼續。在另一實施例中,若硬體執行緒正執行內部韌體程式碼(如在區塊1412處所判定),則機器可在區塊1414處廢棄開始VE指令且將控制傳回至超管理器。此操作給予主要執行緒採取內部韌體中斷且避免潛在懸置之機會,且一旦無中斷在主要執行緒上待決,則再次執行開始VE指令。當與暫停內部韌體及在多執行緒工作完成時在硬體上再次重新開始其相比較時,此等實施例中之兩者具有益處,此係因為韌體程式碼操作常常為系統操作(例如,並行升級)必需的且此外,執行緒充分不頻繁地執行內部韌體使得等待其完成為可行選項。
處理接著在區塊1416處繼續以開始將邏輯執行緒載入至實體核心上之實體執行緒中。在區塊1416處,毫碼檢查且採用與某些例外狀況條件相關之例外狀況。例外狀況條件中之一些可適用於開始VE指令自身(例如,無效狀態描述環結構),且其他者與可適用於次要邏輯執行緒之條件相關(例如,關於NSD之存取例外狀況)。在區塊1418處,可清除來自客體硬體後備緩衝器(包括TLB)之輸入項。此清除可包括在適當時清除用於次要執行緒之後備緩衝器。在區塊1420處,載入來自主要及次要狀態描述之最少狀態且初始化包括有效執行緒中之每一者的所需硬體設施。在一實施例中,最少狀態包括次要執行緒之狀態描述位址。在區塊1422處,將次要執行緒之硬體控制設定為停止提取任何內部指令串流。此可簡化自單一執行緒執行至多執行緒化執行之切換。在區塊1424處,針對其他有效次要執行緒中之每一者載入毫碼指令位址(毫IA)。毫IA為一旦次要執行緒開始提取內部指令串流,次要執行緒便開始執行所處之位置且其通常指向毫碼中的將完成每一有效邏輯執行緒之初始化的位置。主要執行緒繼續其對VE進入毫碼之執行且因此,此處不需要載入新的毫IA。在區塊1426處,在一 項實施例中,主要執行緒藉由設定硬體控制來喚醒次要執行緒,硬體控制將次要執行緒之執行模式改變為毫模式,其使次要執行緒開始在先前載入之毫IA處的執行。在另一實施例中,主要執行緒(Ta)可喚醒第一次要執行緒(Tb);Tb可喚醒下一次要執行緒(Tc);等等,直至所有有效執行緒處於作用中且在硬體中執行。在一實施例中,次要執行緒將直至另一執行緒將其執行模式設定為毫碼執行模式或毫模式才開始執行毫碼。
現參看圖14B,在區塊1428及1478處,主要執行緒及每一有效次要執行緒執行完成將相關聯之客體邏輯執行緒狀態載入至硬體中所需的毫碼。在一實施例中,該狀態包括如圖4中所展示之客體通用暫存器(GR)402、存取暫存器(AR)404、控制暫存器(CR)406、首碼暫存器410、客體計時器408、虛擬CPU編號(VCN)412、程式狀態字組(PSW)及指令位址(IA)414、攔截控制(IC)位元420及邏輯分割區編號(LPN)432。在區塊1430及1480處,主要執行緒及次要執行緒完成VE進入之執行且其退出毫碼模式(例如,毫模式)。在區塊1432及1482處,其開始執行客體執行緒程式指令串流。在一實施例中,每一執行緒之VE進入完成獨立於其他執行緒之VE進入完成。在另一實施例中,執行緒在完成VE進入之前同步。
在一實施例中,為了支援核心分派之使用及單執行緒化地執行之超管理器,可提供自虛擬執行之協調退出(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環境中,在大多數條件下,虛擬執行退出(VE退出)毫碼負責用信號向其他有效客體執行緒通知一旦退出可行便退出虛擬執行。特定言之,若執行緒當前正執行無法中斷以退出虛擬執行之內部程式碼,則由請求退出之執行緒經歷的延遲可為顯著的。在一執行緒正等待其他執行緒退出虛擬執行時,毫碼可用以處置某些中斷,諸如可產生懸置條件之彼等中斷或可影響整個系統效能之彼等中斷。若其他中斷現可僅延遲其他執行緒(其工作可已被中斷)已用信號通知之自虛擬執行的最終退出,則毫碼處置其他中斷可能並非最佳的。此皆必須進行同時仍維持恰當的中斷優先順序。
此外,退出藉由毫碼進行之虛擬執行所需的協調之大部分必須考量每一執行緒之狀態。舉例而言,其必須考量每一邏輯執行緒是否有效且實體執行緒是否正執行內部程式碼。無關於主要執行緒是否無效,其必須仍被用信號通知,此係因為此執行緒通常為主機程式將重 新繼續所在之執行緒。此操作皆係使用內部毫碼請求式中斷系統來實現。
毫碼亦可執行一些動作以釋放已由次要客體執行緒使用但由於客體狀態已儲存且主機並不使用次要執行緒而不再需要之實體暫存器。舉例而言,作為釋放資源之手段,毫碼可將經映射暫存器置零,此係因為在某些實施中,硬體可將具有零內容之所有邏輯暫存器映射至單一實體暫存器,使其他實體暫存器供主要執行緒使用。可存在可在執行緒之間共用且可經釋放以僅由主要執行緒使用之其他資源。毫碼亦可遮罩某些中斷使得核心資源不會不必要地用以調用毫碼。
一旦任何執行緒判定需要自虛擬執行之退出,其便將用信號通知其他執行緒,如下文(例如)參看包括圖15A及圖15B之圖15所描述。所使用之程序可基於正退出虛擬執行之執行緒為主要執行緒抑或次要執行緒而變化。
在一實施例中,若所有以下條件滿足,則主要執行緒可用信號通知有效次要執行緒以退出虛擬執行:(1)其想要退出虛擬執行模式且將控制傳回至超管理器;(2)並非所有其他有效執行緒已在退出程序中(亦即,至少一個執行緒仍正執行客體指令);(3)所有其他執行緒尚未被用信號通知以退出;及(4)存在至少一個其他有效執行緒。若此等條件未滿足,則每一次要執行緒被給予時間以獨立地進行清理且退出虛擬執行。在一實施例中,若所有上述條件(1)至(3)滿足,則次要執行緒用信號通知主要執行緒(即使其無效)及所有其他有效次要執行緒以退出虛擬執行模式。在一實施例中,即使次要執行緒為僅有的有效執行緒,其仍必須將信號發送至主要執行緒,此係因為其必須用信號通知主要執行緒以完成自虛擬執行之協調退出。
現轉向包括圖15A及圖15B之圖15,大體展示根據實施例之自虛擬執行之協調退出的機器實施。在圖15中所展示之實例中,在1502 處,主要執行緒P正執行客體指令串流P,在1542處,次要執行緒A正執行客體指令串流A,且在1572處,次要執行緒B正執行客體指令串流B。在區塊1544處,次要執行緒A判定其必須退出虛擬執行且使用上文所描述之準則在區塊1546處判定其必須用信號通知其他執行緒以同樣退出。次要執行緒A藉由進行在主要執行緒P之硬體狀態控制1508及次要執行緒B之硬體狀態控制1578中待決的內部退出虛擬執行請求中斷來用信號通知其他執行緒。次要執行緒A之硬體狀態控制1548亦展示於圖15A中。當對在針對主要執行緒P之區塊1510處及針對次要執行緒B之區塊1580處的內部中斷作出回應時,每一執行緒檢查內部中斷之原因且在針對主要執行緒P之區塊1512處及在針對次要執行緒B之區塊1582處判定內部中斷是否為退出虛擬執行請求。若判定並非退出虛擬執行請求,則主要執行緒P及次要執行緒B分別執行區塊1514及1584以處置另一中斷請求。
若該中斷為退出虛擬執行請求,則在一實施例中,每一執行緒可獨立地執行以下程序。在針對主要執行緒P之區塊1516處及在針對次要執行緒B之區塊1586處,判定該執行緒是否有效。可假設請求自虛擬執行之退出的次要執行緒A為有效的。對於判定為有效之執行緒,將來自硬體之大部分相關聯客體狀態儲存至其自身的狀態描述中。如圖4中所展示,此狀態包括客體通用暫存器(GR)402、存取暫存器(AR)404、控制暫存器(CR)406、程式狀態字組(PSW)及指令位址(IA)414。不需要儲存在虛擬執行期間不改變之客體狀態,諸如虛擬CPU編號(VCN)412及邏輯分割區編號(LPN)432。此在圖15A中展示於針對主要執行緒P之區塊1518處、針對次要執行緒A之區塊1558處及針對次要執行緒B之區塊1588處。每一執行緒更新其內部狀態以指示其處於初始VE退出同步點處。此在圖15A中展示於針對主要執行緒P之區塊1520處、針對次要執行緒A之區塊1560處及針對次要執行 緒B之區塊1590處。
該等執行緒各自等待主要執行緒(例如,主要執行緒P)及所有有效次要執行緒(例如,次要執行緒A及B)到達初始同步點,之後繼續。此在圖15A中展示於針對主要執行緒P之區塊1521處、針對次要執行緒A之區塊1561處及針對次要執行緒B之區塊1591處。一旦所有執行緒到達退出虛擬執行毫碼中之初始VE同步點,該等執行緒中之每一者便結束更新狀態描述中之適當資訊。此資訊之實例可包括為圖4中之客體計時器408之一部分的客體CPU計時器。此在圖15A中展示於針對主要執行緒P之區塊1522處、針對次要執行緒A之區塊1562處及針對次要執行緒B之區塊1592處。延遲此狀態儲存直至同步點改良了執行緒之間的客體時序一致性。
現參看圖15B,每一執行緒更新其自身的內部狀態以指示其處於VE退出毫碼中之最終同步點處。此在圖15B中展示於針對主要執行緒P之區塊1524處、針對次要執行緒A之區塊1564處及針對次要執行緒B之區塊1594處。此外,主要執行緒A在區塊1526處等待所有執行緒到達最終同步點1599,之後在區塊1528處繼續。每一次要執行緒設定內部硬體位元以指示其不再執行有效程式指令串流,其使機器退出毫模式且停止執行程式碼。此在圖15B中展示於針對次要執行緒A之區塊1566處及針對次要執行緒B之區塊1596處。在一實施例中,每一次要執行緒將不執行任何程式碼直至下一開始VE,然而,其可按需要執行內部程式碼以處置內部中斷。
一旦所有執行緒已到達VE退出毫碼中之最終同步點(在圖15B中展示為點1599),便在主要執行緒P上開始單執行緒化執行。主要執行緒P在區塊1528處完成核心清理,在區塊1530處將包括主機程式IA之超管理器狀態載入至硬體中,且在區塊1532處退出毫模式。結果,主要執行緒P正在主機模式中執行且將處置任何適當的主機中斷,且超 管理器將處置任何客體中斷。
技術效應及益處包括分派多執行緒化客體虛擬機之能力。
實施例包括一種用於分派一多執行緒化客體虛擬機(VM)之系統、方法及電腦程式產品。根據一項態樣,一種電腦系統包括一組態,該組態具有經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之機器。此外,該機器包括實體執行緒。該機器經組態以執行一方法,該方法包括發出一開始虛擬執行(開始VE)指令以在核心上分派包含多個邏輯執行緒的一客體實體。該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機執行。藉由該機器執行該開始VE指令包括:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
根據另一態樣,提供一種用於在一組態中分派一多執行緒化客體虛擬機(VM)之電腦實施方法。該組態包括一機器,該機器具有經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一單一核心。該核心包括實體執行緒。該方法包括發出一開始虛擬執行(開始VE)指令以在該核心上分派包含多個邏輯執行緒的一客體實體。該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機執行。藉由該機器執行該開始VE指令包括:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
另一態樣包括一種用於在一組態中分派一多執行緒化客體虛擬機(VM)之電腦程式產品。該組態包括一機器,該機器具有經啟用以 在一ST模式及一MT模式中操作之一單一核心。此外,該機器包括實體執行緒。該電腦程式產品包括體現有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲存媒體並非一信號,該等程式指令可藉由一處理電路讀取以使該處理電路執行一方法。該方法包括發出一開始虛擬執行(開始VE)指令以在該核心上分派包含多個邏輯執行緒的一客體實體。該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機執行。藉由該機器執行該開始VE指令包括:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中僅有效邏輯執行緒經映射至一對應實體執行緒。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該初始化包括針對該等邏輯執行緒中之每一者將該邏輯執行緒之該狀態之一部分載入至該對應實體執行緒中;及藉由每一經映射實體執行緒完成該對應邏輯執行緒之該狀態的剩餘部分之該載入,該狀態之該剩餘部分係基於該狀態之該部分判定。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該狀態之該部分包括該狀態之該剩餘部分的一狀態描述之一位址。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該等實體執行緒中之一者針對該等邏輯執行緒中之每一者執行該載入該邏輯執行緒之該狀態之一部分。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該執行包括在該初始化之前驗證該等經映射實體執 行緒當前並非正執行任何程式碼或內部程式碼。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該開始執行係針對該等實體執行緒中之每一者基於該實體執行緒之該初始化完成而執行。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該開始執行係針對該等實體執行緒中之每一者基於所有該等實體執行緒之該初始化完成而執行。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該執行包括判定軟體正在該等經映射實體執行緒中之一者上執行;及基於該判定完成該開始VE指令且通知該主機該開始VE指令失敗。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該執行包括判定內部韌體在該等經映射實體執行緒中之一者上執行;且基於該判定執行以下各者中之至少一者:廢棄該開始VE指令且將控制傳回至該主機;及等待該經映射實體執行緒變得可用。
本文中所使用之術語僅用於描述特定實施例之目的,且並不意欲限制本發明。如本文中所使用,除非上下文另外清楚地指示,否則單數形式「一」及「該」意欲亦包括複數形式。將進一步理解,當在本說明書中使用時,術語「包含」指定所陳述特徵、整體、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整體、步驟、操作、元件組件及/或其群組的存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述目的呈現本發明之描述,但該描述並不意欲為詳盡的或將本發明限於所揭示 之形式。在不背離本發明之範疇及精神的情況下,一般熟習此項技術者將顯而易見許多修改及變化。選擇並描述實施例以便最佳地解釋本發明之原理及實際應用,且使其他一般熟習此項技術者能夠關於具有適合於所預期之特定用途的各種修改之各種實施例來理解本發明。
已出於說明之目的呈現本發明之各種實施例之描述,但該描述並不意欲為詳盡的或限於所揭示之實施例。在不背離所描述實施例之範疇及精神的情況下,一般熟習此項技術者將顯而易見許多修改及變化。本文中所使用之術語經選擇以最佳解釋實施例之原理、實際應用或對市場中發現的技術之技術改良,或使其他一般熟習此項技術者能夠理解本文中所揭示之實施例。
現參看圖16,在一項實例中,電腦程式產品1600包括(例如)一或多個儲存媒體1602以在其上儲存電腦可讀程式碼構件或邏輯1604從而提供及促進本文中所描述之實施例之一或多項態樣,其中該媒體可為有形的及/或非暫時性的。
本發明可為一種系統、方法及/或電腦程式產品。電腦程式產品可包括電腦可讀儲存媒體(或媒體),其上具有電腦可讀程式指令以使處理器進行本發明之態樣。
電腦可讀儲存媒體可為有形器件,其可持留及儲存指令以供指令執行器件使用。電腦可讀儲存媒體可為(例如但不限於)電子儲存器件、磁性儲存器件、光學儲存器件、電磁儲存器件、半導體儲存器件或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟性磁碟、機械編碼器件(諸如,上面記錄有指令之凹槽中之打孔卡或凸起結構)及前述各 者之任何合適組合。如本文中所使用,不將電腦可讀儲存媒體本身理解為暫時信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖纜線傳遞之光脈衝),或經由導線傳輸之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別運算/處理器件或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存器件。網路可包含銅傳輸纜線、光傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理器件中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別運算/處理器件內之電腦可讀儲存媒體中。
用於進行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯器指令、指令集合架構(ISA)指令、機器指令、機器相依指令、微碼、韌體指令、狀態設定資料或原始程式碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及習知程序性程式設計語言,諸如「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可完全在使用者電腦上執行、部分地在使用者電腦上執行、作為獨立套裝軟體執行、部分地在使用者電腦上執行且部分地在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後種情形中,該遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可連接至外部電腦(例如,使用網際網路服務提供者經由網際網路)。在一些實施例中,包括(例如)可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA)之電子電路可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例的方法、裝置(系統)及電腦程式產物之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖之每一區塊,及流程圖說明及/或方塊圖中之區塊之組合。
可將此等電腦可讀程式指令提供至一般用途電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生機器,以使得經由該電腦或其他可程式化資料處理裝置之處理器執行之指令建立用於實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之手段。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,其可指導電腦、可程式化資料處理裝置及/或其他器件以特定方式起作用,使得儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施在該一或多個流程圖及/或方塊圖區塊中指定之功能/動作之態樣。
電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理裝置或其他器件上,以使一系列操作步驟在該電腦、其他可程式化裝置或其他器件上執行以產生電腦實施程序,使得在該電腦、其他可程式化裝置或其他器件上執行之指令實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施之架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示模組、區段或指令之部分,其包含用於實施指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中提到之功能可不按諸圖中所提到之次序發生。舉例而言,取決於所涉及之功能性,以連續方式展示之兩個區塊實際上可實質上同時執行,或該等區塊有時可以相反次序執行。亦將注意,可藉由基於執行指定功能或動作或進行專用硬體及電腦指令之組合的專用硬體之系統實施方塊圖及/或流程圖說明之每一區塊,及方塊圖及/或 流程圖說明中之區塊之組合。
1450‧‧‧控制及狀態位元

Claims (20)

  1. 一種用於分派一多執行緒化客體虛擬機(VM)之電腦系統,該電腦系統包含:一組態,其包含一機器,該機器包括經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一單一核心,該核心包括實體執行緒;該機器經組態以執行一方法,該方法包含:發出一開始虛擬執行(開始VE)指令以在該核心上分派包含多個邏輯執行緒的一客體實體,該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機進行,藉由該機器執行該開始VE指令包含:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
  2. 如請求項1之電腦系統,其中僅有效邏輯執行緒經映射至一對應實體執行緒。
  3. 如請求項1之電腦系統,其中該初始化包括:針對該等邏輯執行緒中之每一者將該邏輯執行緒之該狀態之一部分載入至該對應實體執行緒中;及藉由每一經映射實體執行緒完成該對應邏輯執行緒之該狀態的剩餘部分之該載入,該狀態之該剩餘部分係基於該狀態之該部分判定。
  4. 如請求項3之電腦系統,其中該狀態之該部分包括該狀態之該剩餘部分的一狀態描述之一位址。
  5. 如請求項3之電腦系統,其中該等實體執行緒中之該一者針對該等邏輯執行緒中之每一者執行該載入該邏輯執行緒之該狀態之一部分。
  6. 如請求項1之電腦系統,其中該執行進一步包含:在該初始化之前驗證該等經映射實體執行緒當前並非正執行任何程式碼或內部程式碼。
  7. 如請求項1之電腦系統,其中該開始執行係針對該等實體執行緒中之每一者基於該實體執行緒之該初始化完成而執行。
  8. 如請求項1之電腦系統,其中該開始執行係針對該等實體執行緒中之每一者基於所有該等實體執行緒之該初始化完成而執行。
  9. 如請求項1之電腦系統,其中該執行進一步包含:判定軟體正在該等經映射實體執行緒中之一者上執行;及基於該判定,完成該開始VE指令且通知該主機該開始VE指令失敗。
  10. 如請求項1之電腦系統,其中該執行進一步包含:判定內部韌體正在該等經映射實體執行緒中之一者上執行;及基於該判定,執行以下各者中之至少一者:廢棄該開始VE指令且將控制傳回至該主機;及等待該經映射實體執行緒變得可用。
  11. 一種用於在一組態中分派一多執行緒化客體虛擬機(VM)之電腦實施方法,該組態包含一機器,該機器包括經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一單一核心,該核心包括實體執行緒,該機器實施一方法,該方法包含: 發出一開始虛擬執行(開始VE)指令以在該核心上分派包含多個邏輯執行緒的一客體實體,該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機進行,藉由該機器執行該開始VE指令包含:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
  12. 如請求項11之方法,其中僅有效邏輯執行緒經映射至一對應實體執行緒。
  13. 如請求項11之方法,其中該初始化包括:針對該等邏輯執行緒中之每一者將該邏輯執行緒之該狀態之一部分載入至該對應實體執行緒中;及藉由每一經映射實體執行緒完成該對應邏輯執行緒之該狀態的剩餘部分之該載入,該狀態之該剩餘部分係基於該狀態之該部分判定。
  14. 如請求項11之方法,其中該等實體執行緒中之一者針對該等邏輯執行緒中之每一者執行載入該邏輯執行緒之該狀態之一部分。
  15. 如請求項11之方法,其中該執行進一步包含:在該初始化之前驗證該等經映射實體執行緒當前並非正執行任何程式碼或內部程式碼。
  16. 如請求項11之方法,其中該開始執行係針對該等實體執行緒中之每一者基於該實體執行緒之該初始化完成而執行。
  17. 一種用於在一組態中分派一多執行緒化客體虛擬機(VM)之電腦 程式產品,該組態包含一機器,該機器包括經啟用以在一單執行緒(ST)模式及一多執行緒(MT)模式中操作之一單一核心,該核心包括實體執行緒,該電腦程式產品包含:體現有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲存媒體並非一信號,該等程式指令可藉由一處理電路讀取以使該處理電路執行一方法,該方法包含:發出一開始虛擬執行(開始VE)指令以在該核心上分派包含多個邏輯執行緒的一客體實體,該客體實體包括一客體VM之全部或一部分,且該發出係藉由以該ST模式在該核心上的該等實體執行緒中之一者上執行的一主機進行,藉由該機器執行該開始VE指令包含:將該等邏輯執行緒中之每一者映射至該等實體執行緒中之一對應者;用該對應邏輯執行緒之一狀態初始化該等經映射實體執行緒中之每一者;及開始以MT模式在該核心上執行該客體實體。
  18. 如請求項17之電腦程式產品,其中僅有效邏輯執行緒經映射至一對應實體執行緒。
  19. 如請求項17之電腦程式產品,其中該初始化包括:針對該等邏輯執行緒中之每一者將該邏輯執行緒之該狀態之一部分載入至該對應實體執行緒中;及藉由每一經映射實體執行緒完成該對應邏輯執行緒之該狀態的剩餘部分之該載入,該狀態之該剩餘部分係基於該狀態之該部分判定。
  20. 如請求項17之電腦程式產品,其中該開始執行係針對該等實體執行緒中之每一者基於該實體執行緒之該初始化完成而執行。
TW104109600A 2014-03-27 2015-03-25 在電腦中分派多執行緒 TWI617986B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/226,955 2014-03-27
US14/226,955 US9195493B2 (en) 2014-03-27 2014-03-27 Dispatching multiple threads in a computer

Publications (2)

Publication Number Publication Date
TW201610854A TW201610854A (zh) 2016-03-16
TWI617986B true TWI617986B (zh) 2018-03-11

Family

ID=52727125

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104109600A TWI617986B (zh) 2014-03-27 2015-03-25 在電腦中分派多執行緒

Country Status (15)

Country Link
US (1) US9195493B2 (zh)
EP (1) EP3123319A1 (zh)
JP (1) JP6501791B2 (zh)
KR (1) KR101843676B1 (zh)
CN (1) CN106170768B (zh)
AU (1) AU2015238517B2 (zh)
BR (1) BR112016022282B1 (zh)
CA (1) CA2940923A1 (zh)
IL (1) IL247889B (zh)
MX (1) MX2016012528A (zh)
RU (1) RU2666249C2 (zh)
SG (1) SG11201606090RA (zh)
TW (1) TWI617986B (zh)
WO (1) WO2015144585A1 (zh)
ZA (1) ZA201606254B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US10198298B2 (en) * 2015-09-16 2019-02-05 Salesforce.Com, Inc. Handling multiple task sequences in a stream processing framework
US10146592B2 (en) 2015-09-18 2018-12-04 Salesforce.Com, Inc. Managing resource allocation in a stream processing framework
US10437635B2 (en) 2016-02-10 2019-10-08 Salesforce.Com, Inc. Throttling events in entity lifecycle management
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
CN105871917A (zh) * 2016-06-08 2016-08-17 北京金山安全管理系统技术有限公司 传输控制协议tcp连接调度的方法及装置
US10372498B2 (en) * 2016-09-26 2019-08-06 Intel Corporation Dynamic virtual CPU core allocation
US10771554B2 (en) * 2017-09-30 2020-09-08 Intel Corporation Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
GB2574049B (en) * 2018-05-24 2020-10-07 Advanced Risc Mach Ltd Interrupt controller

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526421B2 (en) * 2004-02-27 2009-04-28 International Business Machines Corporation System and method for modeling LPAR behaviors in a simulation tool
TW200935303A (en) * 2007-12-10 2009-08-16 Strandera Corp Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US7694304B2 (en) * 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
CN102193779A (zh) * 2011-05-16 2011-09-21 武汉科技大学 一种面向MPSoC的多线程调度方法
CN102866957A (zh) * 2012-07-31 2013-01-09 中国人民解放军国防科学技术大学 面向多核多线程微处理器的虚拟活跃页缓冲方法及装置
TW201333681A (zh) * 2004-09-14 2013-08-16 Coware Inc 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器
TW201411490A (zh) * 2012-06-15 2014-03-16 Ibm 受限異動執行

Family Cites Families (51)

* 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
CA1213986A (en) 1983-12-14 1986-11-12 Thomas O. Curlee, Iii Selective guest system purge control
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 株式会社日立製作所 仮想計算機システム
JPS6474632A (en) * 1987-09-16 1989-03-20 Fujitsu Ltd Control transfer system for virtual computer
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
AU3424293A (en) 1992-01-02 1993-07-28 Amdahl Corporation Computer system with two levels of guests
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
JP2004506262A (ja) 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
EP1182567B1 (en) 2000-08-21 2012-03-07 Texas Instruments France Software controlled cache configuration
EP1267572A2 (en) * 2001-06-11 2002-12-18 Canal+ Technologies Société Anonyme Improvements in the field of programme delivery
US20040128448A1 (en) 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
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
US7493621B2 (en) 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
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
CN102184123B (zh) * 2005-03-02 2013-10-16 英特尔公司 一种附加地支持虚拟多线程的多线程处理器及系统
US20060242389A1 (en) 2005-04-21 2006-10-26 International Business Machines Corporation Job level control of simultaneous multi-threading functionality in a processor
US7493436B2 (en) * 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
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
JP5595633B2 (ja) 2007-02-26 2014-09-24 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
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
US8010822B2 (en) * 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
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
US8589922B2 (en) 2010-10-08 2013-11-19 International Business Machines Corporation Performance monitor design for counting events generated by thread groups
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
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
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
JP5813554B2 (ja) * 2012-03-30 2015-11-17 ルネサスエレクトロニクス株式会社 半導体装置
JP6074955B2 (ja) 2012-08-31 2017-02-08 富士通株式会社 情報処理装置および制御方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7694304B2 (en) * 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US7526421B2 (en) * 2004-02-27 2009-04-28 International Business Machines Corporation System and method for modeling LPAR behaviors in a simulation tool
TW201333681A (zh) * 2004-09-14 2013-08-16 Coware Inc 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器
TW200935303A (en) * 2007-12-10 2009-08-16 Strandera Corp Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
CN102193779A (zh) * 2011-05-16 2011-09-21 武汉科技大学 一种面向MPSoC的多线程调度方法
TW201411490A (zh) * 2012-06-15 2014-03-16 Ibm 受限異動執行
CN102866957A (zh) * 2012-07-31 2013-01-09 中国人民解放军国防科学技术大学 面向多核多线程微处理器的虚拟活跃页缓冲方法及装置

Also Published As

Publication number Publication date
JP2017513128A (ja) 2017-05-25
CA2940923A1 (en) 2015-10-01
IL247889A0 (en) 2016-11-30
US20150277946A1 (en) 2015-10-01
RU2666249C2 (ru) 2018-09-06
BR112016022282B1 (pt) 2022-12-06
WO2015144585A1 (en) 2015-10-01
JP6501791B2 (ja) 2019-04-17
RU2016127435A3 (zh) 2018-04-28
ZA201606254B (en) 2017-08-30
AU2015238517B2 (en) 2018-02-22
BR112016022282A2 (zh) 2017-08-15
IL247889B (en) 2019-10-31
KR20160124887A (ko) 2016-10-28
SG11201606090RA (en) 2016-08-30
AU2015238517A1 (en) 2016-08-11
KR101843676B1 (ko) 2018-05-14
EP3123319A1 (en) 2017-02-01
MX2016012528A (es) 2016-12-20
US9195493B2 (en) 2015-11-24
CN106170768A (zh) 2016-11-30
TW201610854A (zh) 2016-03-16
CN106170768B (zh) 2020-01-03
RU2016127435A (ru) 2018-04-28

Similar Documents

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