TWI614681B - 用於執行緒上下文恢復之電腦系統、方法及程式產品 - Google Patents
用於執行緒上下文恢復之電腦系統、方法及程式產品 Download PDFInfo
- Publication number
- TWI614681B TWI614681B TW104109602A TW104109602A TWI614681B TW I614681 B TWI614681 B TW I614681B TW 104109602 A TW104109602 A TW 104109602A TW 104109602 A TW104109602 A TW 104109602A TW I614681 B TWI614681 B TW I614681B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- mode
- program
- core
- configuration
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000008569 process Effects 0.000 claims abstract description 19
- 238000011084 recovery Methods 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims description 38
- 238000003860 storage Methods 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 18
- 230000000717 retained effect Effects 0.000 claims description 11
- 102000004137 Lysophosphatidic Acid Receptors Human genes 0.000 description 28
- 108090000642 Lysophosphatidic Acid Receptors Proteins 0.000 description 28
- 230000006870 function Effects 0.000 description 18
- 102100029716 DnaJ homolog subfamily A member 3, mitochondrial Human genes 0.000 description 14
- 101000866012 Homo sapiens DnaJ homolog subfamily A member 3, mitochondrial Proteins 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 101001112162 Homo sapiens Kinetochore protein NDC80 homolog Proteins 0.000 description 11
- 102100023890 Kinetochore protein NDC80 homolog Human genes 0.000 description 11
- 101001038006 Homo sapiens Lysophosphatidic acid receptor 3 Proteins 0.000 description 9
- 102100040388 Lysophosphatidic acid receptor 3 Human genes 0.000 description 9
- 238000009434 installation Methods 0.000 description 9
- 101001038001 Homo sapiens Lysophosphatidic acid receptor 2 Proteins 0.000 description 8
- 102100040387 Lysophosphatidic acid receptor 2 Human genes 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 238000004904 shortening Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- -1 TID2 Proteins 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000002688 persistence Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000013316 zoning Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
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)
- Hardware Redundancy (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Advance Control (AREA)
Abstract
實施例係關於執行緒上下文恢復。一項態樣為一多執行緒電腦系統,其包括一組態,該組態具有可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心。該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒。一多執行緒設施經組態以控制對該組態之利用以執行一方法,該方法包括基於自MT模式至ST模式之切換來停用一或多個次要執行緒。使次要執行緒之一執行緒上下文不可用於程式。基於指示MT之一最後設定程式指定最大執行緒id,藉由以下操作獲得該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該執行緒上下文。
Description
本發明大體上係關於一種支援多個執行緒之電腦系統,且更具體言之,係關於在一多執行緒電腦系統中之執行緒上下文恢復。
當電腦系統之處理器速度在過去數十年內增加時,可存取此等電腦系統之記憶體所藉以的速度未成比例增加。因此,處理器之循環時間愈快,等待資料自記憶體中提取的延遲愈明顯。藉由各種快取層級且在最新處理器中藉由多執行緒(MT)減輕此等延遲之影響。
MT允許處理器之各種核心資源由複數個指令串流(稱為執行緒)共用。核心資源可包括執行單元、快取記憶體、轉譯後備緩衝器(TLB)及其類似者,其可一般統稱為核心。在由快取記憶體未命中所產生的潛時或一個執行緒中之其他延遲期間,一或多個其他執行緒可利用核心資源,因此增加核心資源之利用率。在超純量處理器同時多執行緒(SMT)實施中,多個執行緒可同時藉由一或多個核心之核心資源服務。
在現代硬體平台中,MT通常以對在MT硬體上執行的作業系統(OS)透明的方式實施。此特性之一項態樣為OS不需要修改以利用MT硬體。然而,相對於OS之透明MT操作可導致回應時間、容量供應、容量規劃及計費之高可變性。此可變性可出現係因為OS不感知其任
務是否具有核心之排它性控制,或其任務是否作為共用核心之執行緒執行。藉由設計,當在核心在使用中時存在高平均執行緒密度時,可達成具MT能力之硬體上之記憶體密集工作負荷的最高容量。額外容量可歸因於由MT提供的增加之快取記憶體利用。若OS不一致地維持所利用核心之高平均執行緒密度,則由MT提供的額外總輸送量容量將不可用。舉例而言,若當存在低運算利用率時硬體每核心執行單一MT執行緒且當存在高運算利用率時以高執行緒密度執行,則其可非常難以判定多少總MT運算容量可用於工作負荷。MT執行緒利用之此硬體可變性可以類似於先前關於容量所描述的方式導致異動回應時間及計費兩者的可變性。
實施例包括一種用於在一多執行緒電腦系統中之執行緒上下文恢復的系統、方法及電腦程式產品。一項態樣為一組態,其包括可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心。該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒。一多執行緒設施經組態以控制對該組態之利用以執行一方法,該方法包括基於自該MT模式至該ST模式之切換來停用該一或多個次要執行緒。使該一或多個次要執行緒之包括程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式。在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id。基於指示MT之該最後設定程式指定最大執行緒id,藉由以下操作獲得該一或多個次要執行緒之該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行緒上下文。
根據另一態樣,提供一種用於在一組態中之執行緒上下文恢復
的電腦實施方法。該組態包括可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心,其中該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒。該方法包括基於自該MT模式至該ST模式之切換來停用該一或多個次要執行緒。使該一或多個次要執行緒之包括程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式。在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id。基於指示MT之該最後設定程式指定最大執行緒id,藉由以下操作獲得該一或多個次要執行緒之該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行緒上下文。
另一態樣包括一種用於在一組態中之執行緒上下文恢復的電腦程式產品。該組態包括可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心,該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒。該電腦程式產品包括體現有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲存媒體並非一信號。該等程式指令可藉由一處理電路讀取以使該處理電路執行一方法。該方法包括基於自該MT模式至該ST模式之切換來停用該一或多個次要執行緒。使該一或多個次要執行緒之包括程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式。在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id。基於指示MT之該最後設定程式指定最大執行緒id,藉由以下操作獲得該一或多個次要執行緒之該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行緒上下文。
100‧‧‧電腦系統
102‧‧‧處理器核心
103‧‧‧MT設施
104‧‧‧輸入/輸出(I/O)子系統
110‧‧‧核心1
111‧‧‧執行緒
112‧‧‧執行緒
113‧‧‧執行緒
114‧‧‧執行緒
120‧‧‧核心2
121‧‧‧執行緒
122‧‧‧執行緒
123‧‧‧執行緒
124‧‧‧執行緒
130‧‧‧核心3
131‧‧‧執行緒
132‧‧‧執行緒
133‧‧‧執行緒
134‧‧‧執行緒
140‧‧‧核心4
141‧‧‧執行緒
142‧‧‧執行緒
143‧‧‧執行緒
144‧‧‧執行緒
150‧‧‧核心5
151‧‧‧執行緒
152‧‧‧執行緒
153‧‧‧執行緒
154‧‧‧執行緒
160‧‧‧系統記憶體
161‧‧‧硬體系統區(HSA)
162‧‧‧毫碼
163‧‧‧LPAR超管理器
164‧‧‧MT設施支援程式碼
165‧‧‧MT設施支援程式碼
170‧‧‧邏輯分割區1(LPAR1)
171‧‧‧作業系統(OS)
172‧‧‧程式
173‧‧‧程式
174‧‧‧程式
175‧‧‧程式
180‧‧‧邏輯分割區2(LPAR)
181‧‧‧作業系統(OS)
182‧‧‧程式
183‧‧‧程式
184‧‧‧程式
190‧‧‧邏輯分割區3(LPAR3)
191‧‧‧作業系統(OS)
192‧‧‧程式
193‧‧‧程式
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)
250‧‧‧計數器及/或計時器
300‧‧‧第二層級超管理器
301‧‧‧MT支援程式碼
310‧‧‧虛擬機
311‧‧‧客體作業系統
312‧‧‧程式
313‧‧‧程式
320‧‧‧虛擬機
321‧‧‧客體作業系統
322‧‧‧程式
323‧‧‧程式
330‧‧‧虛擬機
331‧‧‧客體作業系統
332‧‧‧程式
333‧‧‧程式
410‧‧‧結構
411‧‧‧邏輯執行緒
412‧‧‧邏輯執行緒
413‧‧‧邏輯執行緒
414‧‧‧邏輯執行緒
421‧‧‧邏輯執行緒
422‧‧‧邏輯執行緒
423‧‧‧邏輯執行緒
424‧‧‧邏輯執行緒
430‧‧‧結構
431‧‧‧邏輯執行緒
432‧‧‧邏輯執行緒
441‧‧‧邏輯執行緒
442‧‧‧邏輯執行緒
450‧‧‧結構
451‧‧‧邏輯執行緒
461‧‧‧邏輯執行緒
462‧‧‧邏輯執行緒
463‧‧‧邏輯執行緒
464‧‧‧邏輯執行緒
470‧‧‧結構
471‧‧‧邏輯執行緒
472‧‧‧邏輯執行緒
473‧‧‧邏輯執行緒
474‧‧‧邏輯執行緒
480‧‧‧結構
481‧‧‧邏輯執行緒
482‧‧‧邏輯執行緒
484‧‧‧結構
485‧‧‧邏輯執行緒
500‧‧‧用於多執行緒之動態啟用的程序流程
600A‧‧‧CPU位址擴展程序
600B‧‧‧CPU位址縮短程序
602‧‧‧區塊
604‧‧‧核心位址值
606‧‧‧箭頭
608‧‧‧區塊
610‧‧‧經擴展位址值
612‧‧‧經移位核心位址值
614‧‧‧執行緒位址值
616‧‧‧箭頭
700‧‧‧SIGP設定MT命令的程序
702‧‧‧SIGP設定MT命令
800A‧‧‧核心
800B‧‧‧核心
801‧‧‧記憶體
802‧‧‧系統資訊區塊(SYSIB)
804‧‧‧MT安裝識別符
806‧‧‧每核心最大TID/最大TID值
808‧‧‧用於通用核心之最大TID/最大TID值
809‧‧‧當前程式指定最大執行緒識別符(PSMTID)
810‧‧‧服務呼叫控制區塊(SCCB)
812‧‧‧MT安裝識別符
814‧‧‧每核心最大TID/最大TID值
816‧‧‧用於通用核心之最大TID/最大TID值
818‧‧‧最後設定程式指定最大執行緒識別符(PSMTID)
820‧‧‧PSMTID支援遮罩
830‧‧‧儲存系統資訊(STSI)指令
834‧‧‧服務呼叫(SERVC)指令
850‧‧‧組態
900‧‧‧用於判定多執行緒能力的程序流程
1000‧‧‧組態
1002‧‧‧核心
1005‧‧‧組態記憶體
1006‧‧‧記憶體
1007‧‧‧主機/韌體記憶體
1008‧‧‧狀態描述區塊
1010‧‧‧執行緒上下文
1012‧‧‧衛星區塊
1014‧‧‧執行緒上下文
1016‧‧‧硬體上下文暫存器
1018‧‧‧執行緒上下文
1100‧‧‧電腦系統
1102‧‧‧組態
1104‧‧‧組態
1106‧‧‧核心
1108‧‧‧核心
1110‧‧‧核心
1112‧‧‧核心
1114‧‧‧MT模式
1115‧‧‧執行緒上下文
1116‧‧‧MT模式
1118‧‧‧時間
1120‧‧‧ST模式
1122‧‧‧時間
1124‧‧‧ST模式
1200‧‧‧用於多執行緒暫存器儲存的程序流程
1300‧‧‧電腦系統
1302‧‧‧單一組態
1304‧‧‧核心
1306‧‧‧核心
1308‧‧‧核心
1310‧‧‧MT模式
1312‧‧‧時間
1314‧‧‧ST模式
1316‧‧‧時間
1318‧‧‧MT模式
1320‧‧‧獨立傾印程式
1400‧‧‧用於多執行緒暫存器恢復的程序流程
1500‧‧‧電腦程式產品
1502‧‧‧電腦可讀儲存媒體
1504‧‧‧程式指令
視為實施例的標的物被特別地指出且在本說明書的結論部分處之申請專利範圍中被清楚地主張。實施例之前述內容及其他特徵及優點自結合隨附圖式進行的以下詳細描述顯而易見,其中:圖1A描繪可根據實施例實施之運算環境;圖1B描繪可根據實施例實施之運算環境;圖2描繪可根據實施例實施的核心之處理電路;圖3描繪可根據實施例實施之運算環境;圖4描繪可根據實施例實施之運算環境中的超管理器上下文保持之實例;圖5描繪根據實施例之用於多執行緒之動態啟用的程序流程;圖6A描繪根據實施例之CPU位址擴展程序之實例;圖6B描繪根據實施例的CPU位址縮短程序之實例;圖7描繪根據實施例之用於設定多執行緒命令(order)的程序流程;圖8描繪根據實施例之儲存多執行緒能力資訊之實例;圖9描繪根據實施例之用於判定多執行緒能力的程序流程;圖10描繪根據實施例之各種執行緒上下文位置之實例;圖11描繪根據實施例之多執行緒暫存器保留之實例;圖12描繪根據實施例之用於多執行緒暫存器保留的程序流程;圖13描繪根據實施例之多執行緒暫存器恢復之實例;圖14描繪根據實施例之用於多執行緒暫存器恢復的程序流程;及圖15描繪根據實施例之電腦可讀媒體。
例示性實施例提供支援單執行緒及多執行緒操作模式之電腦系統中之多執行緒操作。如本文所使用,邏輯執行緒係指單一指令串流
及其相關聯狀態。亦即,在架構層級處,每一邏輯執行緒表示獨立中央處理單元(CPU)或處理器。在硬體層級處,當分派執行緒時,執行緒為與客體狀態之維持組合的與邏輯執行緒相關聯的指令串流之執行。因此,本文中可互換地使用術語「執行緒」與「CPU」。
在例示性實施例中,CPU含有用於指令執行、中斷動作、時序功能、初始程式載入及其他機器相關功能之定序及處理設施。CPU定義可映射至多種基礎實體實施之邏輯功能。CPU在執行指令時可處理固定長度之二進位整數及浮點數(例如,二進位、十進位及十六進位)、可變長度之十進位整數,及固定或可變長度之邏輯資訊。處理可為並行或串行的。處理元件之寬度、移位路徑之多重性及執行不同類型之算術中同時性之程度可在不影響邏輯結果的情況下在CPU之一個模型與另一模型之間不同。
CPU執行之指令可包括數個指令類別,諸如通用、十進位、浮點支援(FPS)、二進位浮點(BFP)、十進位浮點(DFP)、十六進位浮點(HFP)、控制及I/O指令。通用指令可用於執行二進位整數算術運算及邏輯、分支及其他非算術運算。十進位指令對十進位格式之資料進行運算。BFP、DFP及HFP指令分別對BFP、DFP及HFP格式之資料進行運算,同時FPS指令獨立於格式對浮點資料進行運算或自一種格式轉換至另一種格式。具特殊權限之控制指令及I/O指令可在CPU在監督狀態下時被執行,且半特殊權限之控制指令可在經歷適當授權機制的情況下在問題狀態下執行。
CPU提供可用於程式但在主儲存器中不具有可定址表示的暫存器。暫存器可包括(例如)當前程式狀態字組(PSW)、通用暫存器、浮點暫存器及浮點控制暫存器、向量暫存器、控制暫存器、存取暫存器、首碼暫存器、當天時間(TOD)可程式化暫存器及用於時脈比較器及CPU計時器之暫存器。此暫存器集合可被稱為CPU之架構式暫存器
上下文。在一組態中之每一CPU可提供對TOD時脈的存取,TOD時脈可由組態中之所有CPU共用。指令操作碼可判定哪一類型之暫存器將用於操作。
每一CPU可具有指示其是否提供全套功能及設施(例如,通用CPU),或是否預期處理特定類型之工作負荷(例如,特殊CPU)的類型屬性。主要CPU為通用CPU或具有與在最後初始程式載入(IPL)操作之後開始的CPU(IPL CPU)相同類型的CPU。次要CPU為具有不同於IPL CPU之CPU類型的除通用CPU以外的任何CPU。
多執行緒設施可用於實施支援架構之電腦系統上。多執行緒設施提供對於多執行緒之支援以啟用共用核心之執行緒(其亦可被稱為CPU)之群組。當多執行緒設施經啟用時,核心內之CPU可共用諸如執行單元或快取記憶體之某些硬體資源。當核心中之一個CPU等待硬體資源時(通常,在等待記憶體存取時),核心中之其他CPU可利用核心中之共用資源而非使其保持閒置。當已安裝及啟用多執行緒設施時,執行緒與為核心之成員的CPU同義。當多執行緒設施未經安裝或設施經安裝但經未啟用時,核心包含單一CPU或執行緒。
當多執行緒設施經安裝時,其可藉由執行設定多執行緒信號處理器(SIGP)命令而啟用。在例示性實施例中,當多執行緒設施經啟用時,在組態中的CPU之數目增加一倍數,倍數值係藉由程式指定最大執行緒識別碼(PSMTID)判定。核心中之CPU的數目可比PSMTID多一。對應於此倍數的數個CPU經分組至核心中。組態中的相同CPU類型之每一核心可具有相同數目個CPU。核心內之每一CPU為相同CPU類型;然而,基於模型及CPU類型,核心內之一些CPU可能係不可操作的。
在例示性實施例中,控制程式(諸如,作業系統(OS))明確地啟用多執行緒以便其可由OS管理的組態使用。替代地,超管理器可啟用
多執行緒,且超管理器之客體及其應用程式可明顯受益。應用程式通常不感知多執行緒是否已被啟用。當多執行緒經啟用時,組態中的所有CPU之CPU位址經調整以包括在位址之最左位元中的核心識別碼(或核心ID)及在位址之最右位元中的執行緒識別碼(執行緒ID或TID)。核心ID亦可被稱為核心位址值,且TID可被稱為執行緒位址值。核心內之CPU可共用諸如執行單元或較低層級快取記憶體之某些硬體設施,因此核心之一個CPU內的執行可影響核心中之其他CPU的效能。
為了管理與在單執行緒與多執行緒模式之間動態切換組態之一或多個核心相關聯的改變,包括數個支援特徵。為維持與不支援多執行緒的程式之相容性,單執行緒模式可為在重設或撤銷啟動後的預設模式。例示性實施例包括用以在自多執行緒模式轉變至單執行緒模式之後保留來自多執行緒模式之執行緒上下文、傳達該執行緒上下文及恢復該執行緒上下文以支援執行緒上下文之分析及/或恢復的特徵。
可藉由例示性實施例實施的運算環境可(例如)基於國際商業機器公司(Armonk,New York)提供之z/架構。z/架構描述於2012年8月之題為「z/Architecture Principles of Operation」之IBM®公開案(IBM公開案第SA22-7832-09號)中,該公開案特此以全文引用的方式併入本文中。在一項實例中,基於z/架構之運算環境包括由國際商業機器公司(Armonk,New York)提供之eServer zSeries。運算環境可包括(例如)具有具一或多個核心(例如,處理器核心)之一或多個分割區(例如,邏輯分割區)之處理器複合體,及如本文中進一步描述之一或多個超管理器層級。
圖1A展示作為支援多執行緒(MT)之運算環境之實例的電腦系統100。在圖1A之實例中,電腦系統100包括複數個處理器核心102、輸入/輸出(I/O)子系統104及系統記憶體160。I/O子系統104可提供對此
項技術中已知之I/O器件的存取。處理器核心102(本文中亦簡稱為「核心」)可包括具有支援元件之處理電路。在圖1A之實例中,五個核心102經描繪為核心1 110、核心2 120、核心3 130、核心4 140及核心5 150;然而,亦涵蓋較大或較少數目個核心102。MT設施103可為核心102中的每一者之硬體組件。在此實例中,核心102中之每一者能夠支援至多四個執行緒。舉例而言,核心1 110可支援執行緒111、112、113及114。核心2 120可支援執行緒121、122、123及124。核心3 130可支援執行緒131、132、133及134。核心4 140可支援執行緒141、142、143及144。核心5 150可支援執行緒151、152、153及154。應注意,並非每一核心102之所有四個可在任何瞬時為可操作的。舉例而言,在核心3 130中,執行緒131及132可在執行緒133及134經允許可操作(以陰影描繪)時可操作。
圖1A亦描繪電腦系統100之系統記憶體160,其中系統記憶體160之部分經分成邏輯分割區1(LPAR1)170、LPAR2 180及LPAR3 190。LPAR 170、180、190表示可執行作業系統(諸如,LinuxTM或IBM® z/OSTM、z/VM或zTPF作業系統)之虛擬化運算系統(亦稱為組態)。圖1A亦展示核心102至LPAR 170、180、190之分派。在此說明中,核心1 110及核心2 120專用於由LPAR1 170使用。核心3 130專用於由LPAR2 180使用,且核心5 150專用於由LPAR3 190使用。核心4 140可在LPAR2 180與LPAR3 190之間共用,但在圖1A中展示為經指派給LPAR2 180。LPAR3 190展示由分割區採用的兩種不同類型之核心102之實例,其中在此實例中核心4 140允許多個執行緒可操作,但核心5 150不允許多個執行緒可操作。在圖1A之實例中,LPAR1 170提供用於OS 171以及程式172、173、174及175之處理資源。LPAR2 180提供用於OS 181以及程式182、183及184的處理資源。LPAR3 190提供用於OS 191以及程式192及193之處理資源。
在LPAR中執行的作業系統之控制下,程式係在核心之執行緒上執行。在例示性實施例中,個別執行緒有時僅執行一個程式;然而,經設計為可重入之程式可在多個執行緒或核心上同時執行。舉例而言,LPAR1 170之OS 171之程式172可在核心1 110中之執行緒111及113上及核心2 120之執行緒121及124中執行。經歷OS之控制,不同程式可分派在相同或不同執行緒上,經歷分派規則及服務品質協議。
各種層級韌體亦駐留在系統記憶體160中,包括(例如)毫碼162及LPAR超管理器163。毫碼162可體現為韌體以支援較低層級系統功能。LPAR超管理器163可為(例如)經授權內部程式碼,諸如IBM處理器資源/系統ManagerTM(PR/SMTM)。LPAR超管理器163可建立LPAR 170、180、190且可管理在核心102上之分派。當MT設施103安裝在電腦系統100中時,毫碼162及LPAR超管理器163亦分別含有MT設施支援程式碼164及165。MT設施支援程式碼164及165可考慮為MT設施103之一部分,此係因為支援MT之邏輯可散佈在毫碼162、LPAR超管理器163及核心102之間。儘管未描繪,但OS 171、181、191中之每一者亦可包括MT設施支援程式碼以在其各別LPAR 170、180、190中啟用及採用MT。
圖1B展示與圖1A相同之運算系統100,除在圖1B之運算環境中核心4 140現經指派給LPAR3 190而非LPAR2 180以外。亦注意不同於執行緒143及144不可操作的圖1A,在圖1B中,當在核心4 140上分派LPAR3 190時所有四個執行緒141至144當前係可操作的。LPAR在核心102上之分派及解除分派為動態的,且在其他時間其他LPAR(未圖示)可在相同核心102上操作。
現轉向圖2,大體展示根據實施例之用於實施處理核心(諸如,圖1A及圖1B中之核心102中的一者)的處理電路200之方塊圖。處理電路200為可同時在MT環境中支援一或多個執行緒的處理電路之實例。圖
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載入及儲存的資料值之資料值儲存。
處理電路200亦可包括計數器及/或計時器250以支援基於系統時間之產生及診斷動作。舉例而言,計數器及/或計時器250以及各種診斷及量測設施可用於支援當天時間。
現轉向圖3,描繪類似於圖1A之運算環境,除在圖3中第二層級超管理器300係在電腦系統100之LPAR2 180中執行以外。第二層級超
管理器300(例如,IBM z/VM作業系統)包括MT支援程式碼301,其類似於由LPAR(第一層級)超管理器163提供之MT支援程式碼165。第二層級超管理器300提供對客體作業系統311、321及331分別操作所在之複數個虛擬機310、320及330(亦稱為組態)的支援。客體作業系統311、321及331可包括(例如)LinuxTM或IBM®z/OSTM、z/VM或z/TPF OS,或可包括諸如IBM交談式監視器系統(CMS)之客體開發環境。每一客體OS 311、321及331可或可不啟用多執行緒,在此狀況下第二層級超管理器300可負責使用可用於第二層級超管理器300操作所在之LPAR2 180之實體處理資源(核心130、140及執行緒131至134、141至144)分派客體OS 311、321、331及相關聯程式312、313、322、323、332及333。各種虛擬機310、320、330之程式312、313、322、323、332、333可在可用於各別客體OS 311、321及331之執行緒131至134、141至144上執行。客體OS 311、321及331無需包括MT支援程式碼,此係因為若第二層級超管理器300利用多執行緒,則客體OS可明顯受益於MT。
現轉向圖4,描繪可根據實施例實施的運算環境中之超管理器上下文保持之實例。在圖4之實例中,數個支援結構經描繪於圖1A及圖1B之LPAR超管理器163內。舉例而言,結構410可支援圖1A之LPAR1 170,包括儲存用於當前在如圖1A中所展示之實體執行緒111、112、113、114、121、122、123、124上執行之邏輯執行緒411、412、413、414、421、422、423、424之架構式暫存器上下文(亦即,執行緒上下文)的狀態描述及衛星區塊。在分派此等邏輯執行緒時,實體執行緒保持執行緒之當前架構式暫存器上下文。架構式暫存器上下文在邏輯執行緒不再被分派時將維持在狀態描述及衛星區塊中。結構430可支援圖1A之LPAR2 180,包括儲存用於當前在如圖1A中所展示之實體執行緒131、132、141、142上執行的邏輯執行緒431、432、
441、442之架構式暫存器上下文的狀態描述及衛星區塊。結構450可支援圖1A之LPAR3 190,包括儲存用於當前在如圖1A中所展示之實體執行緒151上執行的邏輯執行緒451之架構式暫存器上下文的狀態描述及衛星區塊。結構450亦包括儲存用於當前未在實體處理器(如以陰影所展示)上分派的邏輯執行緒461、462、463及464之架構式暫存器上下文的狀態描述及衛星區塊。亦可藉由LPAR超管理器163留存支援未在實體核心上分派的LPAR的其他結構,諸如包括用於邏輯執行緒471、472、473及474之狀態描述及衛星結構的LPAR A(圖1A中未描繪)之結構470。其他結構實例包括支援包括用於邏輯執行緒481及482之狀態描述及衛星結構的未經分派LPAR B(圖1A中未描繪)的結構480以及用於邏輯執行緒485之狀態描述及衛星結構的未經分派LPAR C(圖1A中未描繪)的結構484。
儘管數個結構經描繪在圖4之實例中,但應理解,額外結構可藉由LPAR超管理器163及電腦系統100中之別處支援以管理多執行緒。舉例而言,支援圖3之虛擬機310、320、330之多執行緒的結構可藉由圖3之第二層級超管理器300留存。
現轉向圖5,描繪根據實施例的用於多執行緒之動態啟用的程序流程500。在區塊502處,主要執行緒在單執行緒(ST)模式中執行。在區塊504處,在ST模式中提取多執行緒(MT)模式設定指令。在執行如在505處共同地描繪的此指令時,在區塊506處獲得向藉由MT模式設定指令指定之位置請求的執行緒之數目。當發出設定MT模式指令時可藉由參數暫存器指定位置。MT模式設定指令可為包括設定MT命令及與所請求執行緒之數目相關聯的程式指定最大執行緒id(PSMTID)的信號處理器(SIGP)指令。參看圖7在本文中進一步描述與SIGP指令之設定MT命令相關聯的程序之實例。
繼續程序500,在區塊508處,執行關於所請求執行緒之數目是
否指示多個執行緒的判定。舉例而言,多個執行緒可藉由大於一之值指示。在零值指示單一執行緒的實施例中,一或大於一之值可指示多個執行緒。基於判定所請求執行緒之數目不指示多個執行緒,在區塊510處核心保持在ST模式中,設定MT模式指令之執行完成,且控制返回至區塊502。基於判定所請求執行緒之數目指示多個執行緒,在區塊512處啟用MT模式,且設定MT模式指令之執行完成。在區塊514處,執行包括主要執行緒及一或多個次要執行緒之多個執行緒。在區塊516處,若不存在重設或撤銷啟動,則程序500迴圈回至區塊514;否則,在區塊518處,基於還原至ST模式的組態之重設或撤銷啟動而停用MT模式。作為停用MT模式之一部分,執行緒(PSMTID)之數目經留存用於非清除重設或經置零用於清除重設。程序500返回至區塊502。
當啟動載入正常、載入與傾印、載入清除或載入清除清單引導金鑰時CPU可進入載入狀態。若通道指令命令(command)字組(CCW)型初始程式載入操作成功地完成,則CPU自載入狀態改變至操作狀態。
CPU重設可用以在資訊損毀量最少之情況下清除設備檢查指示及任何由此產生之CPU狀態的不可預測性。詳言之,在保留CPU狀態以用於分析或重新繼續操作時,CPU重設可用以清除檢查條件。若CPU重設係由載入正常或載入與傾印金鑰之啟動引起,則(a)CPU重設可將架構模式設定成預設模式,且(b)若安裝及啟用多執行緒設施,則停用多執行緒。當CPU重設設定預設模式時,其可儲存當前PSW,使得可恢復PSW。
初始CPU重設提供CPU重設連同當前PSW、CPU計時器、時脈比較器及其他暫存器(諸如:中斷事件位址、所俘獲之PSW、控制、浮點控制、首碼及TOD可程式化暫存器)之初始化的功能。若初始CPU
重設係由載入正常或載入與傾印金鑰之啟動引起,則其可將架構模式設定為預設模式。若在初始CPU重設係藉由載入正常或載入與傾印金鑰的啟動所引起時多執行緒經啟用,則初始CPU重設功能可針對核心之最低編號CPU而執行,且CPU重設針對核心中之所有其他CPU而執行。清除重設引起初始CPU重設及子系統重設被執行,且另外,除TOD時脈以外,清除或初始化組態中之所有CPU中之所有儲存位置及暫存器。清除不影響外部儲存器,諸如藉由控制程式使用以保持不可定址頁面之內容的直接存取儲存器件。
CPU通電重設引起初始CPU重設被執行且將通用暫存器、存取暫存器、控制暫存器及浮點暫存器之內容清除至零/具有有效檢查區塊碼之預設值。應理解,狀態之清除或初始化無需為零值但在已清除狀態下可預設成非零值。若CPU通電重設建立組態,則其可將架構模式設定成預設模式;否則,其可將架構模式設定成已在組態中的CPU之模式。可手動地起始CPU重設、初始CPU重設、子系統重設及清除重設。
在例示性實施例中,每一CPU具有一經指派之編號,稱為其CPU位址。CPU位址獨特地識別組態內之一個CPU。CPU係藉由在SIGP指令之CPU位址欄位中指定此位址而指明。用信號通知故障警報、緊急信號或外部呼叫之CPU可在中斷情況下藉由在CPU位址欄位中儲存此位址而識別。CPU位址係藉由組態定義程序指派且通常並不由於重組態改變而改變。程式可藉由使用儲存CPU位址指令而判定CPU之位址。儲存CPU位址指令亦可用於識別CPU位址,藉由該CPU位址在多處理組態中識別CPU。
當啟用多執行緒時,CPU位址可包括與核心內的CPU之識別碼串接的核心識別碼(核心ID)。核心內之CPU識別碼為執行緒識別碼(執行緒ID或TID)。在組態內,所有核心提供相同數目個CPU;然而,取決
於模型及CPU類型,核心中之一些CPU可能係不可操作的。
基於藉由信號處理器設定多執行緒次序命令的參數暫存器之PSMTID,固定數目個位元表示執行緒識別碼。位元之此數目被稱為TID寬度。
在啟用多執行緒之前,核心ID可由CPU位址之最右位元形成。核心ID左移TID寬度個位元,從而在多執行緒可用之後產生CPU位址之最左位元。執行緒ID具有相同TID寬度數目個位元,且在多執行緒經啟用之後佔據CPU位址之最右位元。可在相連數目範圍中指派執行緒ID。表1說明PSMTID之實例關係,TID寬度及CPU位址位元包含核心識別碼及執行緒識別碼。
在圖6A中將位址擴展描繪為根據實施例之CPU位址擴展程序600A之實例。在區塊602處,可使用核心位址值604作為數個CPU位址位元在ST模式中存取主要執行緒。箭頭606指示自ST模式切換至MT模式。在區塊608處,可使用經擴展位址值610在MT模式中存取主要執行緒或一或多個次要執行緒。經擴展位址值610包括經移位為經移位核心位址值612且與執行緒位址值614串接之核心位址值604。經移位核心位址值612為核心識別符(核心ID),且執行緒位址值614為執行緒識別符(TID)。經移位核心位址值612可基於所請求之最大執行緒識
別符(例如,PSMTID)而移位一量。執行緒位址值614中之TID位元的數目可基於如上文表1中所展示之PSMTID而判定。執行緒位址值614可串接至經移位核心位址值612之低位位元以形成經擴展位址值610。全零之執行緒位址值614將指明主要執行緒,且大於零之值識別及定址次要執行緒。
當在MT模式與ST模式之間切換時,核心位址值604(ST模式)或經擴展位址值610(MT模式)經選擇以在各別ST模式或MT模式中用作CPU位址。核心位址值604為用於ST模式中的標準格式位址之實例,且核心基於停用MT模式而自MT模式還原至ST模式。在例示性實施例中,僅主要執行緒(亦即,非次要執行緒)可基於停用MT模式而存取。圖6B描繪根據實施例的CPU位址縮短程序600B之實例。圖6B之箭頭616說明自區塊608之MT模式切換回至區塊602之ST模式。自MT模式至ST模式之還原可包括將經擴展位址值610向右移位及去除執行緒位址值614以自經移位核心位址值612形成包括核心位址值604(核心ID)的標準格式位址作為CPU位址。
當重設功能停用多執行緒時,(a)使執行緒ID為零之CPU之CPU位址向右移位在啟用期間使用之相同TID寬度數目個位元,(b)零在位址左方被插入TID寬度數目個位元中,且(c)該CPU位址還原至其原始非多執行緒格式(亦即,標準格式位址)。當啟用多執行緒時在具有非零執行緒ID之核心中的所有CPU在停用多執行緒時不再為可操作的。
當不啟用多執行緒時,CPU位址保持自藉由組態定義程序指派的值而不變。在此狀況下,執行緒識別碼不存在。
數個信號處理器次序可將包括(例如)以下各者之命令提供至CPU:開始、停止、重新開始、停止及儲存狀態、初始CPU重設、CPU重設、在位址處之儲存狀態、設定架構、感測執行狀態、設定多執行緒、在位址處之儲存額外狀態及其類似者。初始CPU重設或CPU
重設可藉由信號處理器指令起始且不影響架構模式或其他CPU不停用多執行緒,且不引起I/O重設。
設定架構命令指定組態中之所有CPU待設定為的架構模式。架構差異可包括不同定址模式、暫存器定義及藉由CPU支援之指令。在架構模式改變後,可將暫存器之選擇位元欄位設定成預設狀態(例如,置零),清除組態中的所有CPU之存取暫存器轉譯後備緩衝器(ALB)及轉譯後備緩衝器(TLB),且可在組態中之所有CPU上執行串列化及檢查點同步功能。
感測執行狀態命令可指示經定址CPU是否正執行。在ST模式中,可返回指示符作為執行/非執行狀態。在MT模式中,指示符可用以識別經定址CPU為成員的核心之任何CPU正執行,抑或經定址CPU為成員的核心之所有CPU並不執行。
設定MT命令啟用多執行緒設施。參數暫存器之位元位置可含有待提供於組態中之PSMTID。PSMTID可經定義為比可待在每一核心中定址的CPU之數目小一。舉例而言,指明位元位置中之值3指示待提供最多四個執行緒。當組態中之所有CPU經考慮為待定址時,可忽略SIGP指令之CPU位址暫存器之內容。若接受,則在SIGP指令之執行期間藉由所有CPU完成設定MT命令。參看圖7,描繪用於SIGP設定MT命令702的程序700。可提供錯誤指示且基於判定藉由以下各者中之一或多者發出SIGP設定MT命令702而防止MT模式之啟用:無效命令、不正確狀態及無效參數,如本文中關於圖7之程序700進一步描述。
若在區塊704處多執行緒設施未安裝或CPU並未在有效架構模式中啟用(708),則不接受設定MT命令且可分別在區塊706或710處傳回無效命令指示。若在區塊712處在組態中之其他CPU不在停止或檢查停止狀態下,或若在區塊716處該組態已經啟用以用於多執行緒,則
不接受設定MT命令且可分別在區塊714或718處傳回不正確狀態指示。
若在區塊720處PSMTID為無效的,則不接受設定MT命令且在區塊722處可傳回無效參數指示。當在區塊724處PSMTID為零時,組態未經啟用以用於多執行緒,保持在ST模式中,且在區塊728處提供任何狀態作為條件碼。在例示性實施例中,當PSMTID有效且非零時,在區塊726處,組態經啟用以用於多執行緒,導致CPU位址擴展,組態中的所有CPU之ALB及TLB已清除其內容,且在組態中之所有CPU上執行串列化及檢查點同步功能。可在區塊728處在條件碼中提供狀態。在成功完成後,除執行設定MT命令之CPU以外的所有CPU保持在停止或檢查停止狀態下。然而,若在啟用多執行緒之前CPU在檢查停止狀態下,則相同核心中具有非零執行緒ID之CPU置於停止狀態抑或檢查停止狀態下可為不可預測的。
執行緒上下文亦可被稱為架構式暫存器上下文。在啟用多執行緒之前每一CPU之架構式暫存器上下文(亦即,PSW、CPU計時器、時脈比較器、通用暫存器、浮點暫存器及浮點控制暫存器、向量暫存器、控制暫存器、存取暫存器、首碼暫存器及TOD可程式化暫存器等之內容)在啟用多執行緒之後變為每一各別核心之具有TID零的CPU之架構式暫存器上下文。類似地,當由於載入正常或載入與傾印金鑰的啟動而停用多執行緒時,具MT能力之組態的每一核心之具有TID零的CPU之架構式暫存器上下文變為每一各別CPU之架構式暫存器上下文。
當由於載入正常或載入與傾印金鑰操作的啟動而停用多執行緒設施時,可留存具有非零執行緒識別碼的所有CPU之架構式暫存器上下文。若在無介入清除重設之情況下隨後重新啟用多執行緒設施,則恢復具有非零執行緒識別碼的所有CPU之架構式暫存器上下文。
當在已藉由載入正常或載入與傾印金鑰的啟動停用之後重新啟用多執行緒時,若參數暫存器之位元中的PSMTID之值不同於前述啟用中使用的值,則具有非零執行緒ID之所有CPU的架構式暫存器上下文可為不可預測的。
儲存系統資訊指令可用以將關於組態之一或多個組件的資訊儲存至系統資訊區塊(SYSIB)中。SYSIB可包括MT安裝欄位、MT通用欄位、總CPU/核心計數、經組態CPU/核心計數、待用CPU/核心計數、保留CPU/核心計數及其他欄位。MT安裝欄位可指示是否安裝多執行緒設施且亦可指示用於第一核心類型(例如,特殊核心類型)之最高支援TID。MT通用欄位可指示用於第二核心類型(例如,通用核心類型)之最高支援TID。MT通用欄位中之最高支援TID可限於小於或等於MT安裝欄位中之最高支援TID。總CPU/核心計數可指示組態中之通用CPU(不論在經組態、待用或保留狀態下)或包含通用CPU之核心的總數。經組態CPU/核心計數可指示在經組態狀態下(亦即,在組態及準備執行程式中)之通用CPU或包含通用CPU之核心的數目。待用CPU/核心計數指示在待用狀態下(亦即,不可用於用以執行程式直至置於經組態狀態下)之通用CPU或包含通用CPU之核心的數目。保留CPU/核心計數指示在保留狀態下(亦即,不可用於用以執行程式且不能置於經組態狀態下)之通用CPU或包含通用CPU之核心的數目。
圖8描繪根據實施例之儲存多執行緒能力資訊之實例。在執行緒(諸如,核心800A之執行緒1)中執行的程式可自組態850之諸如LPAR之記憶體801提取儲存系統資訊(STSI)指令830。STSI指令之執行可導致系統資訊區塊(SYSIB)802之儲存(832)。在圖8之實例中,SYSIB 802包括指示組態850是否支援多執行緒的MT安裝識別符804。SYSIB 802亦包括可作為用於特殊核心之每核心最大TID 806及用於通用核心之最大TID 808提供的核心800A/800B之最高支援執行緒的最大執行緒
識別符。SYSIB 802亦可包括當前程式指定最大執行緒識別符(PSMTID)809。當前PSMTID 809反映如藉由程式在組態850中啟用之多執行緒模式。若STSI指令830在基本機器層級處執行,則可不定義當前PSMTID 809。
在執行緒(諸如核心800B之執行緒2)中執行的程式亦可自組態850之記憶體801提取服務呼叫(SERVC)指令834,其中指令指定讀取系統控制程式資訊(讀取SCP資訊,或RSCPI)指令命令。RSCPI指令命令之執行可引起服務呼叫控制區塊(SCCB)810儲存(836)於記憶體801中。在例示性實施例中,藉由RSCPI指令命令之執行儲存的SCCB 810提供可不可用於SYSIB 802中的類似及額外資訊。在圖8之實例中,SCCB 810包括指示核心800B是否支援多執行緒之MT安裝識別符812。SCCB 810亦包括可經提供為用於特殊核心的每核心最大TID 814及用於通用核心之最大TID 816的核心800B之最高支援執行緒的最大執行緒識別符。SCCB 810之812至816的值等於可在SYSIB 802中可存取之值804至808。另外,SCCB 810可包括核心800B的最高支援執行緒之最後設定程式指定最大執行緒識別符,其亦被稱為最後設定程式指定最大執行緒識別符(PSMTID)818。SCCB 810亦可包括作為PSMTID支援遮罩820之關於設定MT命令可接受的PSMTID值之遮罩。當小於藉由每核心最大TID 814定義的數目為所要的時,PSMTID支援遮罩820可用以識別所支援CPU/執行緒。
應理解,核心800A及800B包括未在此實例中描繪的其他態樣。此外,SYSIB 802及SCCB 810可包括超出在圖8之實例中描繪的彼等值之額外值。
圖9描繪根據實施例之用於判定多執行緒能力的程序流程900。在區塊902處,核心執行擷取多執行緒能力資訊(RMTCI)指令,其可(例如)為SERVC指令或STSI指令中的任一者。在區塊904處,獲得識
別組態之多執行緒能力的執行緒識別資訊。在區塊906處,儲存所獲得之執行緒識別資訊。在區塊908處,基於所獲得之執行緒識別資訊判定組態先前是否已使多執行緒經啟用。
如先前所描述,SERVC指令經組態以將執行緒識別資訊儲存在記憶體中之回應區塊(例如,圖8之SCCB 810)中,且STSI指令經組態以將執行緒識別資訊儲存在記憶體中之SYSIB(例如,圖8之SYSIB 802)中。所獲得之執行緒資訊可包括指示核心是否支援多執行緒之MT安裝識別符(例如,圖8之MT安裝識別符804或812)。所獲得之執行緒資訊亦可包括核心的最高支援執行緒之最大執行緒識別符(例如,圖8之最大TID值806、808、814或816)。所獲得之執行緒資訊可包括當前程式指定最大執行緒識別符(例如,圖8之當前PSMTID 809)及最後設定程式指定最大執行緒識別符(例如,圖8之PSMTID 818)。回應區塊可包括指示個別地支援的特定執行緒識別符之位元遮罩(例如,圖8之PSMTID支援遮罩820)。組態先前已使MT被啟用的判定可基於最後設定程式指定最大執行緒識別符中之非零值(例如,最後設定PSMTID>0)。在例示性實施例中,組態支援複數個核心類型。
在例示性實施例中,暫存器及諸如程式計數器值之值(其可包括於暫存器中或單獨地管理)經俘獲為執行緒上下文。當在MT模式中發生位址擴展時,額外執行緒上下文變為可存取。如先前參看圖6所描述,針對組態中之每一核心形成CPU位址。CPU位址可藉由儲存CPU位址指令檢驗,該指令出現在其他結構中且用於各種SIGP命令中。當MT未經啟用時,此定址方案保持不變。當MT經啟用時,CPU位址經歷擴展程序。如先前所描述,CPU位址之非MT啟用部分可向左移位足夠位元以容納TID。舉例而言,若作業系統發出具有PSMTID值1之SIGP設定MT命令,則CPU位址將向左移位1位元;若PSMTID為2或3,則CPU位址將向左移位2位元,若PSMTID為4至7,則CPU位址將
向左移位3位元,等等。
當隨後停用多執行緒(由於由載入正常操作引起的清除重設或CPU重設)時,CPU位址縮短發生。具MT能力之CPU位址可向右移位用於啟用MT之SIGP設定MT命令中之相同數目個PSMTID位元,且位址之執行緒ID部分消失。可在MT模式期間存取的執行緒上下文可駐留在一或多個位置中,諸如圖10中描繪之實例。在圖10之實例中,組態1000包括核心1002且可包括其他核心(未描繪)。記憶體1006可包括作為組態1000之一部分的組態記憶體1005及與組態1000分離的主機/韌體記憶體1007。主機/韌體記憶體1007可包括藉由主機維持的狀態描述區塊1008,其可儲存用於執行緒(例如,圖10中之執行緒n)的執行緒上下文1010。衛星區塊1012可經錨定至作為主機/韌體記憶體1007之一部分的記憶體1006中之狀態描述區塊1008,其中衛星區塊1012可包括作為執行緒上下文1010之替代或結合執行緒上下文1010的執行緒上下文1014。每一執行緒可具有對應狀態描述區塊1008及(視需要)衛星區塊1012,其中可儲存執行緒上下文1010或執行緒上下文1014。作為另一替代例,硬體上下文暫存器1016可用以將執行緒上下文1018儲存在(例如)核心1002中。執行緒上下文1010、1014及1018之實例可組合地或單獨地用作儲存選項。可在實施例中使用替代儲存選項。無關於執行緒上下文維持在何處,在位址縮短後,執行緒上下文可不再直接可存取,但可藉由傾印程式而保留以用於存取。
當MT經停用時,CPU位址縮短程序使核心之執行緒1至n不再可定址;類似地,包括架構式暫存器之執行緒上下文不再為程式可見。若MT由於由非清除載入操作產生之CPU重設而停用,則留存執行緒1至n之暫存器上下文;若組態返回至MT模式,則可隨後檢驗此等資料。用於每一客體執行緒之暫存器上下文可藉由主機維持於如圖10中所描繪的執行緒狀態描述區塊1008中(或如在向量暫存器之狀況下,
維持於錨定於狀態描述中之衛星區塊1012中)。
MT停用期間的執行緒1至n之上下文的保持為用於在OS失敗之後待傾印的執行緒之狀態的診斷特徵。在OS失敗之後,操作者可選擇執行獨立傾印(SADMP)程式以在失敗時俘獲系統之記憶體及執行緒上下文。然而,載入SADMP程式可引起組態還原至啟用ST模式之預設架構模式,因此停用MT。但因為SADMP係藉由非清除載入操作載入,所以留存每一核心之執行緒1至n之暫存器上下文。SADMP可藉由查驗SERVC讀取SCP資訊指令命令之回應區塊的結果而判定MT是否在被傾印之組態中經啟用。此數目可隨後用作至SIGP設定MT命令的輸入以在與前述相同之層級處重新啟用MT。
圖11描繪根據實施例之多執行緒暫存器保留之實例。諸如圖11之電腦系統1100的系統可包括多個組態1102及1104。在圖11之實例中,組態1102包括核心1106及核心1108,且組態1104包括核心1110及核心1112。組態1102及1104中的每一者可在不同時間獨立地在ST模式與MT模式之間切換。電腦系統1100之組態1102及1104中的每一者可組態有不同數目個最大執行緒ID以在組態1102及1104中的每一者處支援同時啟用之不同數目個執行緒。在圖11之實例中,核心1106及1108各自支援最多兩個執行緒,同時組態1102係在MT模式1114下,而核心1110及1112各自支援最多四個執行緒,同時組態1104係在MT模式1116下。
當在組態1102中啟用MT模式1114時,TID 0及TID 1兩者可存取為單獨執行緒上下文,諸如執行緒上下文1115之單獨執行個體。在時間1118處,可藉由組態1102之載入正常操作或非清除重設而停用MT模式1114,其將核心1106及1108切換至ST模式1120中。歸因於如先前所描述之位址縮短,可在ST模式1120下存取TID0暫存器;然而,可在MT模式1114下存取的TID1暫存器經留存但不再可存取。舉例而
言,TID1暫存器可體現為圖10之執行緒上下文1010、1014或1018,其中在切換至ST模式1120後藉由位址擴展可用之位址在位址縮短之後不再可存取。
在組態1104使MT模式1116經啟用時,TID0、TID1、TID2及TID3暫存器可存取為獨立執行緒上下文,諸如圖10之執行緒上下文1010、1014或1018之單獨執行個體。在此實例中,TID0表示主要執行緒且TID1至TID3表示針對核心1110及核心1112中的每一者單獨地維持的次要執行緒。在時間1122處,可針對組態1104藉由清除重設而停用MT模式1116,其將核心1110及1112兩者切換至ST模式1124中。在時間1122處之清除重設可清除所有暫存器TID0、TID1、TID2及TID3。歸因於如先前所描述之位址縮短,可在ST模式1124下存取TID0暫存器;然而,可在MT模式1116下存取之TID1、TID2及TID3暫存器經留存於已清除狀態下但不再可存取。如圖11中所描繪,可在不同時間1118及1122處在每一組態1102及1104上以區域化至每一組態1102及1104之效應獨立地執行操作。因此,組態1102可在ST模式1120下而組態1104在MT模式1116下,且ST/MT模式無需電腦系統1100之所有組態而對準。
圖12描繪根據實施例之用於多執行緒暫存器保留的程序流程1200。在區塊1202處,基於藉由MT模式中之核心判定待在核心中停用MT,執行自MT模式至ST模式之切換。MT模式之主要執行緒可維持為ST模式之僅有執行緒。使包括次要執行緒之程式可存取暫存器值及程式計數器值的一或多個執行緒上下文不可由應用程式存取。在區塊1204處,基於切換,判定操作類型(例如,清除對非清除)以清除程式可存取暫存器值抑或留存程式可存取暫存器值。在區塊1206處,基於非清除操作,判定留存程式可存取暫存器值。在區塊1208處,基於清除操作,判定清除程式可存取暫存器。
如先前所描述,執行緒上下文之程式可存取暫存器值及程式計數器值可包括程式一般用途暫存器、浮點暫存器、控制暫存器、存取暫存器、首碼暫存器及TOD可程式化暫存器。控制暫存器可包括浮點控制暫存器、執行階段檢測控制、CPU量測控制及其類似者。可包括於執行緒上下文中的暫存器之其他實例包括程式狀態字組(例如,包括程式計數器/指令位址、條件碼及用以控制指令定序及判定CPU狀態的其他資訊)、向量暫存器、CPU計時器、時脈比較器、中斷事件(breaking-event)位址暫存器及此項技術中已知之其他暫存器。如先前所描述,PSMTID係基於引起啟用MT之最後成功地執行之信號處理器指令而設定。基於切換至MT模式,基於對應次要執行緒經重新啟用而使程式可存取暫存器值可由應用程式存取。舉例而言,在圖11中自ST模式1120切換回至MT模式1114允許TID1暫存器被存取,且TID1可經重新啟用。執行緒上下文可維持在以下各者中之任一者中:狀態描述區塊、錨定至記憶體中之狀態描述區塊之衛星區塊,或上下文暫存器,諸如圖10之執行緒上下文1010、1014或1018。
主要執行緒上下文可包括主要執行緒之程式可存取暫存器值及程式計數器值,例如,用於圖11之組態1104的TID0及TID0暫存器,其中主要執行緒上下文在ST模式1124及MT模式1116兩者下可由應用程式存取。次要執行緒上下文可包括次要執行緒之程式可存取暫存器值及程式計數器值,例如,用於圖11之組態1104的TID1至TID3及TID1至TID3暫存器。
圖13描繪根據實施例之多執行緒暫存器恢復之實例。圖13之實例包括具有單一組態1302之電腦系統1300。組態1302包括核心1304、核心1306及核心1308。在此實例中,核心1304至1308中的每一者包括最多四個執行緒(TID0、TID1、TID2及TID3)。在MT模式1310下,TID0至TID3之所有執行緒上下文可用於核心1304至1308中。在時間
1312處,可藉由組態1302之載入正常操作或非清除重設而停用MT模式1310,其將核心1304至1308切換至ST模式1314中。在ST模式1314下,TID0暫存器保持可存取,且TID1至TID3暫存器係不可存取的但針對核心1304至1308中之每一者留存。在時間1316處,可藉由SIGP設定MT命令之執行而重新啟用MT以進入經重新繼續之MT模式1318。在經重新繼續之MT模式1318下,針對核心1304至1308中之每一者恢復對TID1至TID3暫存器之執行緒上下文的存取。此藉由傾印程式(諸如,獨立傾印程式1320)實現對所有執行緒暫存器(包括TID1至TID3暫存器)之檢驗以儲存執行緒上下文資訊以供分析。
圖14描繪如可藉由獨立傾印(SADMP)程式(諸如,圖13之獨立傾印程式1320)使用以在作業系統失敗之後俘獲執行緒之架構式暫存器上下文的根據實施例之用於多執行緒暫存器恢復的程序流程1400。在區塊1405處,經由非清除載入操作(例如,載入正常或載入與傾印)載入SADMP程式。非清除載入操作隱含地引起組態還原至ST模式,諸如用於圖13之組態1302之ST模式1314。SADMP程式可接著在區塊1410處藉由使用STSI或SERVC指令查詢MT設施是否可用於組態中。若已安裝MT,則在區塊1415處SADMP程式查詢針對組態設定之最後設定程式指定最大執行緒識別碼(PSMTID)。若先前從未針對組態設定MT,則最後設定PSMTID值將為零。SADMP程式可在最後設定PSMTID無論為何值(即使其為零)的情況下在區塊1420處接著執行指令以重新啟用多執行緒。若在區塊1410處查詢揭露未安裝MT,則不嘗試在區塊1415處查詢最後設定PSMTID值或在區塊1420處重新啟用MT。
SADMP程式嘗試用信號通知組態中之每一其他CPU(執行緒)將其架構式暫存器上下文儲存在記憶體中之預定義位置中。若在載入SADMP之前先前未啟用MT,則CPU位址為正常的非擴展格式。若先
前啟用MT,則CPU位址為包括核心ID及執行緒ID之經擴展格式。SADMP在區塊1425處以零之CPU位址(N)開始,且在區塊1430處判定CPU位址是否表示執行SADMP所在之CPU。若表是,則跳過彼CPU/執行緒,且在區塊1450處將N遞增至下一值。若N不同於當前CPU位址,則在區塊1435處用信號通知彼CPU/執行緒(例如)藉由SIGP在位址處儲存狀態命令或SIGP停止及儲存狀態命令之執行將其架構式暫存器上下文儲存在記憶體中。若組態包括向量設施,則在SIGP在位址處儲存額外狀態命令亦可經執行以儲存CPU/執行緒之向量暫存器的內容。在區塊1440處作出關於區塊1435之發信號是否成功的判定。若成功,則在區塊1445處SADMP程式可將CPU/執行緒之暫存器上下文儲存在磁帶或磁碟上之傾印檔案中,且在區塊1450處處理藉由遞增N而繼續。若區塊1435之發信號如藉由區塊1440判定為未成功(例如,若執行緒不可操作),則其被跳過,且在區塊1450處處理藉由遞增N而繼續。在區塊1450處使發信號時所使用之CPU位址(N)的值遞增,且在區塊1455處作出關於N現是否大於用於組態之最高可能CPU位址的判定。若N不大於用於組態之最高可能CPU位址,則在區塊1430處處理藉由判定N是否表示執行SADMP程式所藉助的當前CPU/執行緒而繼續。若N大於用於組態之最高可能CPU位址,則在區塊1460處已完成架構式暫存器上下文恢復及傾印。
儘管圖14係關於組態之一個核心而描述,但應理解,圖14之程序流程1400可延伸以跨越包括多個核心的組態之所有核心遍及最大CPU位址而執行。可在組態中進行額外調節以支援不支援MT之OS或感知MT但不採用MT之程式的傾印。舉例而言,可在載入不支援組態中之MT的OS之前執行清除重設以防止MT感知獨立傾印程式嘗試自組態傾印任何次要執行緒。作為另一實例,感知MT但不採用MT之程式可在執行用於組態之獨立傾印程式之前發出具有為零之對應最大執行
緒id的設定MT命令。
技術效應及益處包括支援單執行緒操作模式及多執行緒操作模式兩者之多執行緒電腦系統中的執行緒上下文恢復。在多執行緒模式期間使用之執行緒上下文在單執行緒模式期間可被儲存但保持不可存取,且執行緒上下文在重新繼續多執行緒模式後恢復(例如)以供獨立傾印程式使用以搜集關於軟體或硬體失敗之診斷資訊。
本文中所描述之系統啟用軟體以藉由要求OS明確地「選擇進入」以採用MT硬體而減輕硬體可變性。當OS理解執行環境之MT性質時,OS具有明確地管理每核心執行緒密度的能力(對於其最佳能力,給定工作負荷分派型樣)。即使當運算資源較少被利用時OS仍具有維持高執行緒密度的選項,藉此減輕在其他MT實施上所見的總運算容量之大部分可變性。作為維持高執行緒密度之直接結果,異動回應時間及計費態樣兩者可更加一致。
實施例包括一種用於在一多執行緒電腦系統中之執行緒上下文恢復的系統、方法及電腦程式產品。一項態樣為一組態,其包括可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心。該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒。一多執行緒設施經組態以控制對該組態之利用以執行一方法,該方法包括基於自該MT模式至該ST模式之切換來停用該一或多個次要執行緒。使該一或多個次要執行緒之包括程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式。在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id。基於指示MT之該最後設定程式指定最大執行緒id,藉由以下操作獲得該一或多個次要執行緒之該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行
緒上下文。
根據另一態樣,提供一種用於在一組態中之執行緒上下文恢復的電腦實施方法。該組態包括可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心,其中該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒。該方法包括基於自該MT模式至該ST模式之切換來停用該一或多個次要執行緒。使該一或多個次要執行緒之包括程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式。在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id。基於指示MT之該最後設定程式指定最大執行緒id,藉由以下操作獲得該一或多個次要執行緒之該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行緒上下文。
另一態樣包括一種用於在一組態中之執行緒上下文恢復的電腦程式產品。該組態包括可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心,該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒。該電腦程式產品包括體現有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲存媒體並非一信號。該等程式指令可藉由一處理電路讀取以使該處理電路執行一方法。該方法包括基於自該MT模式至該ST模式之切換來停用該一或多個次要執行緒。使該一或多個次要執行緒之包括程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式。在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id。基於指示MT之該最後設定程式指定最大執行緒id,藉由以下操作獲得該一或多個次要執行緒之該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該
經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行緒上下文。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中該設定MT指令為包括一設定MT命令及指示MT之一程式指定最大執行緒id的一信號處理器指令。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括基於至該ST模式之切換來儲存該一或多個次要執行緒之該執行緒上下文。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中自該MT模式至該ST模式之該切換係基於一非清除重設操作,且用以重新繼續該MT模式之該設定MT指令的該執行及該一或多個次要執行緒之該執行緒上下文的該存取係藉由一獨立傾印程式執行。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中當發出一設定MT命令以重新繼續該MT模式時,該獨立傾印程式指定該最後程式指定最大執行緒id作為一程式指定最大執行緒id。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中一清除重設係在載入不支援該組態中之MT的一作業系統之前執行以防止一MT感知獨立傾印程式嘗試自該組態傾印任何次要執行緒。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他實施例可包括其中感知MT但不採用MT之一程式在執行用於該組態之一獨立傾印程式之前發出具有為零之一對應最大執行緒id的一設定MT命令。
除上文所描述的特徵中之一或多者之外,或作為替代例,其他
實施例可包括其中該最後程式指定最大執行緒id經留存直至該組態之一清除重設或一撤銷啟動發生。
本文中所使用之術語僅用於描述特定實施例之目的,且並不意欲限制本發明。如本文中所使用,除非上下文另外清楚地指示,否則單數形式「一」及「該」意欲亦包括複數形式。將進一步理解,當在本說明書中使用時,術語「包含」指定所陳述特徵、整體、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整體、步驟、操作、元件組件及/或其群組的存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述目的呈現本發明之描述,但該描述並不意欲為詳盡的或將本發明限於所揭示之形式。在不背離本發明之範疇及精神的情況下,一般熟習此項技術者將顯而易見許多修改及變化。選擇並描述實施例以便最佳地解釋本發明之原理及實際應用,且使其他一般熟習此項技術者能夠關於具有適合於所預期之特定用途的各種修改之各種實施例來理解本發明。
已出於說明之目的呈現本發明之各種實施例之描述,但該描述並不意欲為詳盡的或限於所揭示之實施例。在不背離所描述實施例之範疇及精神的情況下,一般熟習此項技術者將顯而易見許多修改及變化。本文中所使用之術語經選擇以最佳解釋實施例之原理、實際應用或對市場中發現的技術之技術改良,或使其他一般熟習此項技術者能夠理解本文中所揭示之實施例。
現參看圖15,大體上展示根據實施例之包括電腦可讀儲存媒體1502及程式指令1504的電腦程式產品1500。
本發明可為一種系統、方法及/或電腦程式產品。電腦程式產品可包括電腦可讀儲存媒體(或媒體),其上具有電腦可讀程式指令以使
處理器進行本發明之態樣。
電腦可讀儲存媒體可為有形器件,其可留存及儲存指令以供指令執行器件使用。電腦可讀儲存媒體可為(例如但不限於)電子儲存器件、磁性儲存器件、光學儲存器件、電磁儲存器件、半導體儲存器件或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟性磁碟、機械編碼器件(諸如,上面記錄有指令之凹槽中之打孔卡或凸起結構)及前述各者之任何合適組合。如本文中所使用,不將電腦可讀儲存媒體本身理解為暫時信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖纜線傳遞之光脈衝),或經由導線傳輸之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別運算/處理器件或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存器件。網路可包含銅傳輸纜線、光傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理器件中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別運算/處理器件內之電腦可讀儲存媒體中。
用於進行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯器指令、指令集合架構(ISA)指令、機器指令、機器相依指令、微碼、韌體指令、狀態設定資料或原始程式碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及習知程序性程式設計
語言,諸如「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可完全在使用者電腦上執行、部分地在使用者電腦上執行、作為獨立套裝軟體執行、部分地在使用者電腦上執行且部分地在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後種情形中,該遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可連接至外部電腦(例如,使用網際網路服務提供者經由網際網路)。在一些實施例中,包括(例如)可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA)之電子電路可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例的方法、裝置(系統)及電腦程式產物之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖之每一區塊,及流程圖說明及/或方塊圖中之區塊之組合。
可將此等電腦可讀程式指令提供至一般用途電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生機器,以使得經由該電腦或其他可程式化資料處理裝置之處理器執行之指令建立用於實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之手段。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,其可指導電腦、可程式化資料處理裝置及/或其他器件以特定方式起作用,使得儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施在該一或多個流程圖及/或方塊圖區塊中指定之功能/動作之態樣。
電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理裝置或其他器件上,以使一系列操作步驟在該電腦、其他可程式化裝置或其他器件上執行以產生電腦實施程序,使得在該電腦、其他可程式化裝置或其他器件上執行之指令實施該一或多個流程圖及/或方塊圖
區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施之架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示模組、區段或指令之部分,其包含用於實施指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中提到之功能可不按諸圖中所提到之次序發生。舉例而言,取決於所涉及之功能性,以連續方式展示之兩個區塊實際上可實質上同時執行,或該等區塊有時可以相反次序執行。亦將注意,可藉由基於執行指定功能或動作或進行專用硬體及電腦指令之組合的專用硬體之系統實施方塊圖及/或流程圖說明之每一區塊,及方塊圖及/或流程圖說明中之區塊之組合。
100‧‧‧電腦系統
102‧‧‧處理器核心
103‧‧‧MT設施
104‧‧‧輸入/輸出(I/O)子系統
110‧‧‧核心1
111‧‧‧執行緒
112‧‧‧執行緒
113‧‧‧執行緒
114‧‧‧執行緒
120‧‧‧核心2
121‧‧‧執行緒
122‧‧‧執行緒
123‧‧‧執行緒
124‧‧‧執行緒
130‧‧‧核心3
131‧‧‧執行緒
132‧‧‧執行緒
133‧‧‧執行緒
134‧‧‧執行緒
140‧‧‧核心4
141‧‧‧執行緒
142‧‧‧執行緒
143‧‧‧執行緒
144‧‧‧執行緒
150‧‧‧核心5
151‧‧‧執行緒
152‧‧‧執行緒
153‧‧‧執行緒
154‧‧‧執行緒
160‧‧‧系統記憶體
162‧‧‧毫碼
163‧‧‧LPAR超管理器
164‧‧‧MT設施支援程式碼
165‧‧‧MT設施支援程式碼
170‧‧‧邏輯分割區1(LPAR1)
171‧‧‧作業系統(OS)
172‧‧‧程式
173‧‧‧程式
174‧‧‧程式
175‧‧‧程式
180‧‧‧邏輯分割區2(LPAR2)
181‧‧‧作業系統(OS)
182‧‧‧程式
183‧‧‧程式
184‧‧‧程式
190‧‧‧邏輯分割區3(LPAR3)
191‧‧‧作業系統(OS)
192‧‧‧程式
193‧‧‧程式
Claims (20)
- 一種電腦系統,其包含:一組態,其包含可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心,該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒;及一多執行緒設施,其經組態以控制對該組態之利用以執行一方法,該方法包含:基於自該MT模式至該ST模式之切換,停用該一或多個次要執行緒,其中使該一或多個次要執行緒之包含程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式;在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id;及基於指示MT之該最後設定程式指定最大執行緒id,藉由執行包含以下操作之a)及b)獲得該一或多個次要執行緒之該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行緒上下文。
- 如請求項1之電腦系統,其中該設定MT指令為包含一設定MT命令及指示MT之一程式指定最大執行緒id的一信號處理器指令。
- 如請求項1之電腦系統,其進一步包含基於至該ST模式之切換來儲存該一或多個次要執行緒之該執行緒上下文。
- 如請求項1之電腦系統,其中自該MT模式至該ST模式之該切換係基於一非清除重設操作,且進一步其中用以重新繼續該MT模 式之該設定MT指令的該執行及該一或多個次要執行緒之該執行緒上下文的該存取係藉由一獨立傾印程式執行。
- 如請求項4之電腦系統,其中當發出一設定MT命令以重新繼續該MT模式時,該獨立傾印程式指定該最後設定程式指定最大執行緒id作為一程式指定最大執行緒id。
- 如請求項1之電腦系統,其中一清除重設係在載入不支援該組態中之MT的一作業系統之前執行以防止一MT感知獨立傾印程式嘗試自該組態傾印任何次要執行緒。
- 如請求項1之電腦系統,其中感知MT但不採用MT之一程式在執行用於該組態之一獨立傾印程式之前發出具有為零之一對應最大執行緒id的一設定MT命令。
- 如請求項1之電腦系統,其中該最後設定程式指定最大執行緒id經留存直至該組態之一清除重設或一撤銷啟動發生。
- 一種用於在一組態中之執行緒上下文恢復的電腦實施方法,該組態包含可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心,該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒,該方法包含:基於自該MT模式至該ST模式之切換,停用該一或多個次要執行緒,其中使該一或多個次要執行緒之包含程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式;在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id;及基於指示MT之該最後設定程式指定最大執行緒id,藉由執行包含以下操作之a)及b)獲得該一或多個次要執行緒之該執行緒上下文: a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行緒上下文。
- 如請求項9之方法,其中該設定MT指令為包含一設定MT命令及指示MT之一程式指定最大執行緒id的一信號處理器指令。
- 如請求項9之方法,其進一步包含基於至該ST模式之切換來儲存該一或多個次要執行緒之該執行緒上下文。
- 如請求項9之方法,其中自該MT模式至該ST模式之該切換係基於一非清除重設操作,且進一步其中用以重新繼續該MT模式之該設定MT指令的該執行及該一或多個次要執行緒之該執行緒上下文的該存取係藉由一獨立傾印程式執行。
- 如請求項12之方法,其中當發出一設定MT命令以重新繼續該MT模式時,該獨立傾印程式指定該最後設定程式指定最大執行緒id作為一程式指定最大執行緒id。
- 如請求項9之方法,其中一清除重設係在載入不支援該組態中之MT的一作業系統之前執行以防止一MT感知獨立傾印程式嘗試自該組態傾印任何次要執行緒。
- 如請求項9之方法,其中感知MT但不採用MT之一程式在執行用於該組態之一獨立傾印程式之前發出具有為零之一對應最大執行緒id的一設定MT命令。
- 一種用於在一組態中之執行緒上下文恢復的電腦程式產品,該組態包含可在一單執行緒(ST)模式與一多執行緒(MT)模式之間組態的一核心,該ST模式處理一主要執行緒,且該MT模式處理該核心之共用資源上的該主要執行緒及一或多個次要執行緒,該電腦程式產品包含:體現有程式指令之一電腦可讀儲存媒體,其中該電腦可讀儲 存媒體並非一信號,該等程式指令可藉由一處理電路讀取以使該處理電路執行一方法,該方法包含:基於自該MT模式至該ST模式之切換,停用該一或多個次要執行緒,其中使該一或多個次要執行緒之包含程式可存取暫存器值及程式計數器值的一執行緒上下文不可用於程式;在該ST模式中查詢一最後指定最大MT層級以判定該組態之一最後設定程式指定最大執行緒id;及基於指示MT之該最後設定程式指定最大執行緒id,藉由執行包含以下操作之a)及b)獲得該一或多個次要執行緒之該執行緒上下文:a)執行一設定MT指令以重新繼續該MT模式;及b)基於在該經重新繼續之MT模式中,存取該一或多個次要執行緒之該執行緒上下文。
- 如請求項16之電腦程式產品,其中該設定MT指令為包含一設定MT命令及指示MT之一程式指定最大執行緒id的一信號處理器指令。
- 如請求項16之電腦程式產品,其進一步包含基於至該ST模式之切換來儲存該一或多個次要執行緒之該執行緒上下文。
- 如請求項16之電腦程式產品,其中自該MT模式至該ST模式之該切換係基於一非清除重設操作,且進一步其中用以重新繼續該MT模式之該設定MT指令的該執行及該一或多個次要執行緒之該執行緒上下文的該存取係藉由一獨立傾印程式執行。
- 如請求項16之電腦程式產品,其中該最後設定程式指定最大執行緒id經留存直至該組態之一清除重設或一撤銷啟動發生。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/226,911 US9417876B2 (en) | 2014-03-27 | 2014-03-27 | Thread context restoration in a multithreading computer system |
US14/226,911 | 2014-03-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201610841A TW201610841A (zh) | 2016-03-16 |
TWI614681B true TWI614681B (zh) | 2018-02-11 |
Family
ID=52727100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104109602A TWI614681B (zh) | 2014-03-27 | 2015-03-25 | 用於執行緒上下文恢復之電腦系統、方法及程式產品 |
Country Status (13)
Country | Link |
---|---|
US (2) | US9417876B2 (zh) |
EP (1) | EP3123323A1 (zh) |
JP (1) | JP6509246B2 (zh) |
KR (1) | KR101868725B1 (zh) |
CN (1) | CN106133689B (zh) |
AU (1) | AU2015238663B2 (zh) |
CA (1) | CA2940988C (zh) |
IL (1) | IL247887B (zh) |
RU (1) | RU2670909C9 (zh) |
SG (1) | SG11201606094TA (zh) |
TW (1) | TWI614681B (zh) |
WO (1) | WO2015144477A1 (zh) |
ZA (1) | ZA201605466B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US10552212B2 (en) | 2016-11-28 | 2020-02-04 | Arm Limited | Data processing |
US10671426B2 (en) * | 2016-11-28 | 2020-06-02 | Arm Limited | Data processing |
US10423446B2 (en) | 2016-11-28 | 2019-09-24 | Arm Limited | Data processing |
CN108347623B (zh) * | 2017-01-23 | 2021-05-25 | 北京新唐思创教育科技有限公司 | 在线直播内容的生成方法、装置及在线直播系统 |
GB2564144B (en) * | 2017-07-05 | 2020-01-08 | Advanced Risc Mach Ltd | Context data management |
JP7381189B2 (ja) | 2017-11-09 | 2023-11-15 | ニプロ株式会社 | 弁付き針組立体 |
EP3776238A1 (en) * | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric |
WO2019191738A1 (en) * | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric |
CN109298922A (zh) | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 并行任务处理方法、协程框架、设备、介质和无人车 |
RU199929U1 (ru) * | 2019-12-31 | 2020-09-29 | Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный университет геодезии и картографии» | Устройство для обработки потоков пространственно-временных данных в режиме реального времени |
JP2023133850A (ja) * | 2022-03-14 | 2023-09-27 | 富士通株式会社 | 演算処理装置および演算処理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200825907A (en) * | 2001-06-19 | 2008-06-16 | Intel Corp | Method of assigning thread priority in a multi-threaded processor, multi-threaded processor, computer system and storage medium |
TW201023043A (en) * | 2008-09-19 | 2010-06-16 | Qualcomm Inc | Methods and systems for allocating interrupts in a multithreaded processor |
US20120017221A1 (en) * | 2005-06-13 | 2012-01-19 | Hankins Richard A | Mechanism for Monitoring Instruction Set Based Thread Execution on a Plurality of Instruction Sequencers |
US20140068284A1 (en) * | 2012-08-31 | 2014-03-06 | Malini K. Bhandaru | Configuring Power Management Functionality In A Processor |
Family Cites Families (139)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5684993A (en) | 1993-01-04 | 1997-11-04 | Microsoft Corporation | Segregation of thread-specific information from shared task information |
US5613114A (en) | 1994-04-15 | 1997-03-18 | Apple Computer, Inc | System and method for custom context switching |
US5799188A (en) | 1995-12-15 | 1998-08-25 | International Business Machines Corporation | System and method for managing variable weight thread contexts in a multithreaded computer system |
US6061711A (en) * | 1996-08-19 | 2000-05-09 | Samsung Electronics, Inc. | Efficient context saving and restoring in a multi-tasking computing system environment |
US6418460B1 (en) | 1997-02-18 | 2002-07-09 | Silicon Graphics, Inc. | System and method for finding preempted threads in a multi-threaded application |
US5872963A (en) | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
US6104700A (en) * | 1997-08-29 | 2000-08-15 | Extreme Networks | Policy based quality of service |
US6487578B2 (en) | 1997-09-29 | 2002-11-26 | Intel Corporation | Dynamic feedback costing to enable adaptive control of resource utilization |
US6272625B1 (en) | 1997-10-08 | 2001-08-07 | Oak Technology, Inc. | Apparatus and method for processing events in a digital versatile disc (DVD) system using system threads and separate dormant/awake counter threads and clock driven semaphores |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6061710A (en) | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US6401155B1 (en) | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
US6542991B1 (en) | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
US6519265B1 (en) * | 1999-05-28 | 2003-02-11 | Sony Corporation | System and method for context switching in an electronic network |
US6542921B1 (en) | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
US7318090B1 (en) * | 1999-10-20 | 2008-01-08 | Sony Corporation | Method for utilizing concurrent context switching to support isochronous processes |
US6889319B1 (en) | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
JP4693326B2 (ja) | 1999-12-22 | 2011-06-01 | ウビコム インコーポレイテッド | 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法 |
US6981180B1 (en) * | 2000-03-16 | 2005-12-27 | Akamai Technologies, Inc. | Method and apparatus for testing request-response service using live connection traffic |
US6757811B1 (en) | 2000-04-19 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Slack fetch to improve performance in a simultaneous and redundantly threaded processor |
US6792525B2 (en) | 2000-04-19 | 2004-09-14 | Hewlett-Packard Development Company, L.P. | Input replicator for interrupts in a simultaneous and redundantly threaded processor |
US6658654B1 (en) | 2000-07-06 | 2003-12-02 | International Business Machines Corporation | Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment |
US7073173B1 (en) | 2000-12-04 | 2006-07-04 | Microsoft Corporation | Code and thread differential addressing via multiplex page maps |
EP1256877A1 (en) * | 2001-05-10 | 2002-11-13 | Hewlett-Packard Company, A Delaware Corporation | Manufacture of computer systems |
US6954846B2 (en) | 2001-08-07 | 2005-10-11 | Sun Microsystems, Inc. | Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
JP3813930B2 (ja) | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
US8024735B2 (en) | 2002-06-14 | 2011-09-20 | Intel Corporation | Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution |
US7185338B2 (en) | 2002-10-15 | 2007-02-27 | Sun Microsystems, Inc. | Processor with speculative multithreading and hardware to support multithreading software |
US9138644B2 (en) * | 2002-12-10 | 2015-09-22 | Sony Computer Entertainment America Llc | System and method for accelerated machine switching |
US7533012B2 (en) | 2002-12-13 | 2009-05-12 | Sun Microsystems, Inc. | Multi-user web simulator |
US7822950B1 (en) | 2003-01-22 | 2010-10-26 | Ubicom, Inc. | Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls |
US20040154010A1 (en) | 2003-01-31 | 2004-08-05 | Pedro Marcuello | Control-quasi-independent-points guided speculative multithreading |
US20040216101A1 (en) | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor |
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 |
US7290261B2 (en) | 2003-04-24 | 2007-10-30 | International Business Machines Corporation | Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor |
US7496915B2 (en) | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US7360062B2 (en) | 2003-04-25 | 2008-04-15 | International Business Machines Corporation | Method and apparatus for selecting an instruction thread for processing in a multi-thread processor |
JP4818919B2 (ja) * | 2003-08-28 | 2011-11-16 | ミップス テクノロジーズ インコーポレイテッド | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム |
US7849297B2 (en) | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US20050071422A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | Method, system, and computer program product for an automation tool adapter for use with multiple different automation tools |
US7493621B2 (en) | 2003-12-18 | 2009-02-17 | International Business Machines Corporation | Context switch data prefetching in multithreaded computer |
US7210073B1 (en) * | 2003-12-31 | 2007-04-24 | Precise Software Solutions Ltd. | Workflows for performance management methodology |
US20050183065A1 (en) | 2004-02-13 | 2005-08-18 | Wolczko Mario I. | Performance counters in a multi-threaded processor |
US7426731B2 (en) * | 2004-03-22 | 2008-09-16 | Hewlett-Packard Development Company, L.P. | Determining processor usage by a thread |
US20050251649A1 (en) | 2004-04-23 | 2005-11-10 | Sony Computer Entertainment Inc. | Methods and apparatus for address map optimization on a multi-scalar extension |
US7216223B2 (en) | 2004-04-30 | 2007-05-08 | Hewlett-Packard Development Company, L.P. | Configuring multi-thread status |
US7607141B2 (en) | 2004-05-03 | 2009-10-20 | Microsoft Corporation | Systems and methods for support of various processing capabilities |
US7418582B1 (en) | 2004-05-13 | 2008-08-26 | Sun Microsystems, Inc. | Versatile register file design for a multi-threaded processor utilizing different modes and register windows |
US7519796B1 (en) | 2004-06-30 | 2009-04-14 | Sun Microsystems, Inc. | Efficient utilization of a store buffer using counters |
US7702887B1 (en) | 2004-06-30 | 2010-04-20 | Sun Microsystems, Inc. | Performance instrumentation in a fine grain multithreaded multicore processor |
US7676791B2 (en) * | 2004-07-09 | 2010-03-09 | Microsoft Corporation | Implementation of concurrent programs in object-oriented languages |
US7565659B2 (en) | 2004-07-15 | 2009-07-21 | International Business Machines Corporation | Light weight context switching |
JP4956891B2 (ja) | 2004-07-26 | 2012-06-20 | 富士通株式会社 | 演算処理装置,情報処理装置および演算処理装置の制御方法 |
JP4504132B2 (ja) | 2004-07-30 | 2010-07-14 | 富士通株式会社 | 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法 |
US7707578B1 (en) | 2004-12-16 | 2010-04-27 | Vmware, Inc. | Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system |
US8621458B2 (en) | 2004-12-21 | 2013-12-31 | Microsoft Corporation | Systems and methods for exposing processor topology for virtual machines |
US8015566B2 (en) * | 2005-01-13 | 2011-09-06 | Lenovo (Singapore) Pte. Ltd. | Attributing energy consumption to individual code threads in a data processing system |
US7317907B2 (en) * | 2005-01-31 | 2008-01-08 | Research In Motion Limited | Synchronizing server and device data using device data schema |
US7490230B2 (en) | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US20060242389A1 (en) | 2005-04-21 | 2006-10-26 | International Business Machines Corporation | Job level control of simultaneous multi-threading functionality in a processor |
US7765550B2 (en) * | 2005-05-26 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | System for controlling context switch of deferred requests using counter and flag setting of thread accessing shared resource or entering code region |
US7308565B2 (en) * | 2005-06-15 | 2007-12-11 | Seiko Epson Corporation | Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions |
JP4963018B2 (ja) | 2005-08-15 | 2012-06-27 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法およびスケジューリング装置 |
US8171268B2 (en) * | 2005-09-19 | 2012-05-01 | Intel Corporation | Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors |
US8402224B2 (en) * | 2005-09-20 | 2013-03-19 | Vmware, Inc. | Thread-shared software code caches |
RU2312388C2 (ru) * | 2005-09-22 | 2007-12-10 | Андрей Игоревич Ефимов | Способ организации многопроцессорной эвм |
US8275942B2 (en) | 2005-12-22 | 2012-09-25 | Intel Corporation | Performance prioritization in multi-threaded processors |
US9323578B2 (en) | 2006-01-19 | 2016-04-26 | International Business Machines Corporation | Analyzing wait states in a data processing system |
US7577826B2 (en) | 2006-01-30 | 2009-08-18 | Sony Computer Entertainment Inc. | Stall prediction thread management |
US8271994B2 (en) * | 2006-02-11 | 2012-09-18 | International Business Machines Corporation | Reduced data transfer during processor context switching |
CN100571167C (zh) | 2006-02-24 | 2009-12-16 | 国际商业机器公司 | Web服务业务流程的单元测试的方法和设备 |
JP2007317171A (ja) * | 2006-04-27 | 2007-12-06 | Matsushita Electric Ind Co Ltd | マルチスレッド計算機システム、マルチスレッド実行制御方法 |
US8041929B2 (en) | 2006-06-16 | 2011-10-18 | Cisco Technology, Inc. | Techniques for hardware-assisted multi-threaded processing |
US8136111B2 (en) | 2006-06-27 | 2012-03-13 | International Business Machines Corporation | Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system |
US7634642B2 (en) | 2006-07-06 | 2009-12-15 | International Business Machines Corporation | Mechanism to save and restore cache and translation trace for fast context switch |
US8291431B2 (en) * | 2006-08-29 | 2012-10-16 | Qualcomm Incorporated | Dependent instruction thread scheduling |
US8839271B2 (en) | 2006-10-11 | 2014-09-16 | International Business Machines Corporation | Call stack sampling to obtain information for analyzing idle states in a data processing system |
US7698540B2 (en) | 2006-10-31 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Dynamic hardware multithreading and partitioned hardware multithreading |
US8117478B2 (en) | 2006-12-29 | 2012-02-14 | Intel Corporation | Optimizing power usage by processor cores based on architectural events |
US7584346B1 (en) | 2007-01-25 | 2009-09-01 | Sun Microsystems, Inc. | Method and apparatus for supporting different modes of multi-threaded speculative execution |
US8156496B2 (en) * | 2007-01-31 | 2012-04-10 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US9195462B2 (en) | 2007-04-11 | 2015-11-24 | Freescale Semiconductor, Inc. | Techniques for tracing processes in a multi-threaded processor |
CN101042640A (zh) | 2007-04-24 | 2007-09-26 | 上海华龙信息技术开发中心 | 一种带有位扩充和位压缩单元的数字信号处理器 |
US20080270658A1 (en) | 2007-04-27 | 2008-10-30 | Matsushita Electric Industrial Co., Ltd. | Processor system, bus controlling method, and semiconductor device |
WO2008155797A1 (ja) | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 演算装置 |
US8762692B2 (en) * | 2007-09-27 | 2014-06-24 | Intel Corporation | Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode |
US8694997B2 (en) | 2007-12-12 | 2014-04-08 | University Of Washington | Deterministic serialization in a transactional memory system based on thread creation order |
US8544006B2 (en) | 2007-12-19 | 2013-09-24 | International Business Machines Corporation | Resolving conflicts by restarting execution of failed discretely executable subcomponent using register and memory values generated by main component after the occurrence of a conflict |
CN101216725B (zh) | 2008-01-04 | 2011-04-27 | 东南大学 | 利用堆栈深度进行多线程预测的动态功耗控制方法 |
US7734900B2 (en) | 2008-01-11 | 2010-06-08 | International Business Machines Corporation | Computer configuration virtual topology discovery and instruction therefore |
US7559061B1 (en) | 2008-03-16 | 2009-07-07 | International Business Machines Corporation | Simultaneous multi-threading control monitor |
US8117602B2 (en) * | 2008-04-01 | 2012-02-14 | Kaspersky Lab, Zao | Method and system for monitoring execution performance of software program product |
US8495662B2 (en) | 2008-08-11 | 2013-07-23 | Hewlett-Packard Development Company, L.P. | System and method for improving run-time performance of applications with multithreaded and single threaded routines |
US8209437B2 (en) | 2008-09-25 | 2012-06-26 | Rockliffe Systems, Inc. | Personal information management data synchronization |
US7873816B2 (en) | 2008-11-20 | 2011-01-18 | International Business Machines Corporation | Pre-loading context states by inactive hardware thread in advance of context switch |
US20100135179A1 (en) | 2008-11-28 | 2010-06-03 | International Business Machines Corporation | Communication device |
US8402464B2 (en) | 2008-12-01 | 2013-03-19 | Oracle America, Inc. | System and method for managing contention in transactional memory using global execution data |
US8572581B2 (en) | 2009-03-26 | 2013-10-29 | Microsoft Corporation | Measurement and reporting of performance event rates |
US8346509B2 (en) | 2009-04-08 | 2013-01-01 | Intel Corporation | Context switch sampling |
US8949582B2 (en) | 2009-04-27 | 2015-02-03 | Lsi Corporation | Changing a flow identifier of a packet in a multi-thread, multi-flow network processor |
GB2469822B (en) | 2009-04-28 | 2011-04-20 | Imagination Tech Ltd | Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor |
US9672132B2 (en) | 2009-11-19 | 2017-06-06 | Qualcomm Incorporated | Methods and apparatus for measuring performance of a multi-thread processor |
US8612978B2 (en) | 2009-12-10 | 2013-12-17 | Oracle America, Inc. | Code execution utilizing single or multiple threads |
US8615644B2 (en) | 2010-02-19 | 2013-12-24 | International Business Machines Corporation | Processor with hardware thread control logic indicating disable status when instructions accessing shared resources are completed for safe shared resource condition |
US8381216B2 (en) | 2010-03-05 | 2013-02-19 | Microsoft Corporation | Dynamic thread pool management |
US20110283286A1 (en) | 2010-05-11 | 2011-11-17 | Dell Products L.P. | Methods and systems for dynamically adjusting performance states of a processor |
WO2011161774A1 (ja) | 2010-06-22 | 2011-12-29 | 富士通株式会社 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
US8392473B2 (en) * | 2010-09-07 | 2013-03-05 | Microgen Aptitude Limited | Fast hierarchical enrichment |
US8656408B2 (en) | 2010-09-30 | 2014-02-18 | International Business Machines Corporations | Scheduling threads in a processor based on instruction type power consumption |
US8677361B2 (en) | 2010-09-30 | 2014-03-18 | International Business Machines Corporation | Scheduling threads based on an actual power consumption and a predicted new power consumption |
US8418177B2 (en) | 2010-10-01 | 2013-04-09 | Microsoft Corporation | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores |
US8601193B2 (en) | 2010-10-08 | 2013-12-03 | International Business Machines Corporation | Performance monitor design for instruction profiling using shared counters |
US8489787B2 (en) | 2010-10-12 | 2013-07-16 | International Business Machines Corporation | Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors |
US20120137295A1 (en) | 2010-11-30 | 2012-05-31 | Alcatel-Lucent Canada Inc. | Method for displaying cpu utilization in a multi-processing system |
CN103348324A (zh) | 2011-02-10 | 2013-10-09 | 富士通株式会社 | 调度方法、设计辅助方法以及系统 |
US9213551B2 (en) | 2011-03-11 | 2015-12-15 | Oracle International Corporation | Return address prediction in multithreaded processors |
US9330430B2 (en) | 2011-03-21 | 2016-05-03 | Apple Inc. | Fast queries in a multithreaded queue of a graphics system |
US9015449B2 (en) | 2011-03-27 | 2015-04-21 | International Business Machines Corporation | Region-weighted accounting of multi-threaded processor core according to dispatch state |
GB2489708B (en) | 2011-04-05 | 2020-04-15 | Advanced Risc Mach Ltd | Thread selection for multithreaded processing |
US8695010B2 (en) | 2011-10-03 | 2014-04-08 | International Business Machines Corporation | Privilege level aware processor hardware resource management facility |
CA2759365A1 (en) | 2011-11-24 | 2013-05-24 | Ibm Canada Limited - Ibm Canada Limitee | Identification of thread progress information |
US9075610B2 (en) | 2011-12-15 | 2015-07-07 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation |
WO2013100981A1 (en) | 2011-12-28 | 2013-07-04 | Intel Corporation | Performance monitoring resources programmed status |
US9069598B2 (en) | 2012-01-06 | 2015-06-30 | International Business Machines Corporation | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
CN102566974B (zh) | 2012-01-14 | 2014-03-26 | 哈尔滨工程大学 | 基于同时多线程的取指控制方法 |
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 |
US8751830B2 (en) | 2012-01-23 | 2014-06-10 | International Business Machines Corporation | Memory address translation-based data encryption/compression |
US8966232B2 (en) | 2012-02-10 | 2015-02-24 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
US20130283280A1 (en) | 2012-04-20 | 2013-10-24 | Qualcomm Incorporated | Method to reduce multi-threaded processor power consumption |
US9075735B2 (en) | 2012-06-21 | 2015-07-07 | Breakingpoint Systems, Inc. | Systems and methods for efficient memory access |
US9208044B2 (en) | 2012-06-25 | 2015-12-08 | Infosys Limited | Methods for simulating message-oriented services and devices thereof |
US9529719B2 (en) | 2012-08-05 | 2016-12-27 | Advanced Micro Devices, Inc. | Dynamic multithreaded cache allocation |
US9563663B2 (en) | 2012-09-28 | 2017-02-07 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
CN103488546B (zh) * | 2013-01-29 | 2016-06-08 | 中国人民解放军理工大学 | 一种支持多级别数据和数据库在线并发备份与恢复方法 |
CN103488684B (zh) | 2013-08-23 | 2016-12-28 | 国家电网公司 | 基于缓存数据多线程处理的电力可靠性指标快速计算方法 |
US9218185B2 (en) * | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
-
2014
- 2014-03-27 US US14/226,911 patent/US9417876B2/en active Active
-
2015
- 2015-03-16 EP EP15711699.7A patent/EP3123323A1/en not_active Ceased
- 2015-03-16 WO PCT/EP2015/055444 patent/WO2015144477A1/en active Application Filing
- 2015-03-16 SG SG11201606094TA patent/SG11201606094TA/en unknown
- 2015-03-16 CN CN201580015798.XA patent/CN106133689B/zh active Active
- 2015-03-16 JP JP2016557118A patent/JP6509246B2/ja active Active
- 2015-03-16 RU RU2016127444A patent/RU2670909C9/ru active
- 2015-03-16 CA CA2940988A patent/CA2940988C/en active Active
- 2015-03-16 KR KR1020167023371A patent/KR101868725B1/ko active IP Right Grant
- 2015-03-16 AU AU2015238663A patent/AU2015238663B2/en active Active
- 2015-03-25 TW TW104109602A patent/TWI614681B/zh active
- 2015-08-06 US US14/819,633 patent/US9454372B2/en active Active
-
2016
- 2016-08-05 ZA ZA2016/05466A patent/ZA201605466B/en unknown
- 2016-09-18 IL IL24788716A patent/IL247887B/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200825907A (en) * | 2001-06-19 | 2008-06-16 | Intel Corp | Method of assigning thread priority in a multi-threaded processor, multi-threaded processor, computer system and storage medium |
US20120017221A1 (en) * | 2005-06-13 | 2012-01-19 | Hankins Richard A | Mechanism for Monitoring Instruction Set Based Thread Execution on a Plurality of Instruction Sequencers |
TW201023043A (en) * | 2008-09-19 | 2010-06-16 | Qualcomm Inc | Methods and systems for allocating interrupts in a multithreaded processor |
US20140068284A1 (en) * | 2012-08-31 | 2014-03-06 | Malini K. Bhandaru | Configuring Power Management Functionality In A Processor |
Also Published As
Publication number | Publication date |
---|---|
JP6509246B2 (ja) | 2019-05-08 |
US9417876B2 (en) | 2016-08-16 |
SG11201606094TA (en) | 2016-08-30 |
TW201610841A (zh) | 2016-03-16 |
IL247887A0 (en) | 2016-11-30 |
KR101868725B1 (ko) | 2018-07-17 |
US20150277920A1 (en) | 2015-10-01 |
RU2016127444A3 (zh) | 2018-04-28 |
CA2940988A1 (en) | 2015-10-01 |
AU2015238663B2 (en) | 2017-05-25 |
KR20160113681A (ko) | 2016-09-30 |
US20150339121A1 (en) | 2015-11-26 |
ZA201605466B (en) | 2017-08-30 |
US9454372B2 (en) | 2016-09-27 |
CN106133689A (zh) | 2016-11-16 |
RU2670909C9 (ru) | 2018-12-12 |
JP2017513112A (ja) | 2017-05-25 |
EP3123323A1 (en) | 2017-02-01 |
RU2670909C2 (ru) | 2018-10-25 |
WO2015144477A1 (en) | 2015-10-01 |
AU2015238663A1 (en) | 2016-08-11 |
RU2016127444A (ru) | 2018-04-28 |
CN106133689B (zh) | 2019-03-22 |
CA2940988C (en) | 2022-08-16 |
IL247887B (en) | 2019-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI644255B (zh) | 用於多執行緒電腦系統中之位址擴展及縮短之電腦程式產品、系統及方法 | |
TWI614681B (zh) | 用於執行緒上下文恢復之電腦系統、方法及程式產品 | |
TWI594184B (zh) | 多執行緒之動態致能 | |
US9804847B2 (en) | Thread context preservation in a multithreading computer system | |
JP6440734B2 (ja) | マルチスレッディング・コンピュータ・システムにおける利用を追跡するコンピュータ実装方法、システムおよびコンピュータ・プログラム | |
EP3123327B1 (en) | Multithreading capability information retrieval |