TWI608411B - 於多執行緒處理器中控制執行緒之執行的電腦系統、電腦程式產品及方法 - Google Patents
於多執行緒處理器中控制執行緒之執行的電腦系統、電腦程式產品及方法 Download PDFInfo
- Publication number
- TWI608411B TWI608411B TW104110337A TW104110337A TWI608411B TW I608411 B TWI608411 B TW I608411B TW 104110337 A TW104110337 A TW 104110337A TW 104110337 A TW104110337 A TW 104110337A TW I608411 B TWI608411 B TW I608411B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- execution
- stopping
- instruction
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 25
- 238000004590 computer program Methods 0.000 title claims description 14
- 230000015654 memory Effects 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 38
- 238000004891 communication Methods 0.000 claims description 10
- 238000000605 extraction Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 4
- 238000005192 partition Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 9
- 238000004088 simulation Methods 0.000 description 5
- 239000000725 suspension Substances 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101100310513 Botryococcus braunii SMT-2 gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000001052 transient effect Effects 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
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/314—Parallel programming languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
一或多項態樣大體而言係關於多執行緒處理器,且特定而言係關於在此等處理器中控制執行緒之執行。
處理器可包括具有同步執行之指令的多個硬體執行緒。據稱此處理器實施同步多執行緒(SMT),該同步多執行緒為用於藉由允許執行之多個獨立執行緒更好利用由現代處理器架構提供之資源來改良處理器之總效率的技術。
藉由控制多執行緒處理器之執行緒之執行,可獲得進一步效率。
經由提供用於在運算環境內控制執行緒之執行的電腦系統來克服先前技術之缺點且提供優點。該電腦系統包括(例如)記憶體及與該記憶體通信的處理器,其中電腦系統經組態以執行一方法。該方法包括(例如)藉由在運算環境之處理器中運行的執行緒停止在處理器內執行之另一執行緒之執行,該停止使用處理器之一或多個共用暫存器中的一或多個控制項,該一或多個共用暫存器由執行緒及另一執行緒共用;及基於停止另一執行緒之執行而藉由執行緒執行一或多個操作。
本文亦描述及主張與一或多項實施例相關的方法及電腦程式產
品。
實現額外特徵及優勢。本文詳細描述其他實施例及態樣且將其視為所主張的本發明之一部分。
100‧‧‧運算環境
102‧‧‧中央處理器複合體
104‧‧‧處理器記憶體
106‧‧‧輸入/輸出器件
108‧‧‧輸入/輸出控制單元(控制項單元)
110‧‧‧處理器核心
111‧‧‧輸入/輸出子系統
112‧‧‧邏輯分割區
113‧‧‧處理器韌體
114‧‧‧邏輯分割區超管理器
115‧‧‧其他處理器韌體
120‧‧‧應用程式
122‧‧‧駐留作業系統
126‧‧‧執行緒T0
128‧‧‧執行緒T1
130‧‧‧共同暫存器
132‧‧‧唯一暫存器
134‧‧‧執行緒控制設施
200‧‧‧運算環境
202‧‧‧核心
204‧‧‧快取記憶體
206‧‧‧執行緒T0
208‧‧‧執行緒T1
210‧‧‧共同暫存器
212‧‧‧唯一暫存器
214‧‧‧執行緒控制設施
216‧‧‧記憶體
218‧‧‧快取記憶體
220‧‧‧控制公用程式
222‧‧‧輸入/輸出子系統
224‧‧‧外部輸入/輸出器件及資料
300a‧‧‧運算環境
302‧‧‧原生核心
304‧‧‧記憶體
306‧‧‧輸入/輸出器件及/或介面
308‧‧‧匯流排
310‧‧‧暫存器
311‧‧‧執行緒T0
312‧‧‧模擬器程式碼
313‧‧‧執行緒T1
315‧‧‧共同暫存器
317‧‧‧執行緒特定暫存器
319‧‧‧執行緒控制設施
320‧‧‧模擬執行緒控制設施
322‧‧‧模擬執行緒T0
324‧‧‧模擬執行緒T1
326‧‧‧模擬共同暫存器
328‧‧‧模擬唯一暫存器
350‧‧‧客體指令
352‧‧‧指令提取常式
354‧‧‧指令轉譯常式
356‧‧‧原生指令
360‧‧‧模擬控制常式
400‧‧‧MCR002(毫碼控制暫存器(MCR))
402‧‧‧欄位
404‧‧‧暫時停止I提取欄位
406‧‧‧非I提取停止允許欄位
450‧‧‧IAREGFA
452‧‧‧欄位
454‧‧‧欄位
500‧‧‧管線
502‧‧‧指令提取階段
504‧‧‧指令解碼/分派階段
506‧‧‧發佈階段
508‧‧‧執行階段
510‧‧‧完成階段
512‧‧‧完成階段
514‧‧‧復原檢查點階段
600‧‧‧步驟
602‧‧‧查詢
604‧‧‧步驟
606‧‧‧步驟
608‧‧‧查詢
610‧‧‧步驟
612‧‧‧步驟
614‧‧‧查詢
616‧‧‧步驟
618‧‧‧步驟
620‧‧‧步驟
622‧‧‧步驟
700‧‧‧清空指令
702‧‧‧作業碼欄位
704‧‧‧遮罩欄位
706‧‧‧指令欄位
750‧‧‧步驟
752‧‧‧查詢
754‧‧‧步驟
756‧‧‧步驟
800‧‧‧CSGRU指令
802a‧‧‧作業碼欄位
802b‧‧‧作業碼欄位
804‧‧‧第一暫存器欄位(R1)
806‧‧‧第二暫存器欄位(R3)
808‧‧‧指令欄位(I2)
850‧‧‧步驟
852‧‧‧查詢
854‧‧‧步驟
856‧‧‧步驟
858‧‧‧步驟
860‧‧‧步驟
900‧‧‧LORU指令
902a‧‧‧作業碼欄位
902b‧‧‧作業碼欄位
904‧‧‧第一暫存器欄位
906‧‧‧第二暫存器欄位
908‧‧‧指令欄位
950‧‧‧步驟
952‧‧‧步驟
954‧‧‧步驟
1000‧‧‧LNRU指令
1002a‧‧‧作業碼欄位
1002b‧‧‧作業碼欄位
1004‧‧‧第一暫存器欄位
1006‧‧‧第二暫存器欄位
1008‧‧‧指令欄位
1050‧‧‧步驟
1052‧‧‧步驟
1054‧‧‧步驟
1100‧‧‧步驟
1102‧‧‧步驟
1104‧‧‧查詢
1106‧‧‧步驟
1108‧‧‧步驟
1150‧‧‧查詢
1152‧‧‧查詢
1153‧‧‧步驟
1154‧‧‧步驟
1156‧‧‧步驟
1158‧‧‧步驟
1200‧‧‧電腦程式產品
1202‧‧‧電腦可讀儲存媒體
1204‧‧‧程式碼邏輯
在本說明書之結尾部分處之申請專利範圍中特別地指出且清楚地主張作為實例的一或多項態樣。前述內容及其他目標、特徵及優勢將自結合隨附圖式進行的以下詳細描述顯而易見,其中:圖1描繪併入有及使用控制執行緒之執行的一或多項態樣的運算環境之一項實例;圖2描繪併入有及使用控制執行緒之執行的一或多項態樣的運算環境之另一實例;圖3A描繪併入有及使用控制執行緒之執行的一或多項態樣的運算環境之又一實例;圖3B描繪圖3A之運算環境之記憶體之其他細節;圖3C描繪併入有及使用控制執行緒之執行的一或多項態樣的運算環境之另一實例;圖4A描繪根據控制執行緒之執行之一項態樣使用的控制暫存器之一項實例;圖4B描繪根據控制執行緒之執行之一項態樣使用的指令位址暫存器之一項實例;圖5描繪管線之階段之一項實例;圖6描繪於多執行緒處理器中控制執行緒之執行的邏輯之一項實例;圖7A描繪「清空」指令(Drain instruction)之格式之一項實例;圖7B描繪與圖7A之「清空」指令相關聯的邏輯之一項實施例;圖8A描繪「比較並交換R單元暫存器(Compare And Swap R-Unit
Register)」指令之格式之一項實例;圖8B描繪與圖8A之「比較並交換R單元暫存器」指令相關聯的邏輯之一項實施例;圖9A描繪「載入且或R單元暫存器(Load and OR R-Unit Register)」指令之格式之一項實例;圖9B描繪與圖9A之「載入且或R單元暫存器」指令相關聯的邏輯之一項實施例;圖10A描繪「載入且及R單元暫存器(Load and AND R-Unit Register)」指令之格式之一項實例;圖10B描繪與圖10A之「載入且及R單元暫存器」指令相關聯的邏輯之一項實施例;圖11A至11B描繪與由一或多個指令使用的連鎖相關聯的邏輯之一項實例;及圖12描繪電腦程式產品之一項實施例。
根據一或多項態樣,提供用於控制在運算環境內操作的核心(例如,實體硬體處理器,在本文中亦被稱作處理器或處理器核心)中控制執行緒(例如,硬體執行緒)之執行的能力。該核心支援(例如)多執行緒(諸如同步多執行緒(SMT)),此意謂可有效地存在於同一實體處理器硬體上同步操作的多個邏輯中央處理單元(CPU)。將此等邏輯CPU中之每一者視為一執行緒。
在此多執行緒環境中,可能需要一個執行緒來阻止該處理器核心上的其他執行緒執行。此情形可回應於運行需要處理器核心資源或以其他執行緒可能干擾其執行的方式操控處理器核心資源的關鍵序列或另一序列。在一項實例中,作為能力之一部分,可能需要等待直至處理器核心上的所有執行緒已滿足某一條件。舉例而言,假定在特定
硬體執行緒上運行的軟體或韌體意欲執行系統動作,首先需要自整個處理器核心無進行中之儲存器,亦即,在處理器核心上的所有執行緒上無儲存器在進行中。為了判定是否停止其他執行緒,根據一項態樣提供在本文中被稱作清空指令的指令,該指令監測在處理器核心上的執行緒之狀態。
另外,根據一或多項態樣,在控制執行緒之執行時,可使用各種不可部分完成的指令。此等指令在可由SMT處理器之執行緒存取且由SMT處理器之執行緒共用的暫存器上操作,而非在儲存器或記憶體上操作。(除非另外隱含地或明確地說明,否則記憶體及儲存器在本文中可互換使用。)此情形允許多個執行緒使用共用暫存器而非儲存器來傳達及共用資訊。如本文所描述,此等指令(在本文中被稱作「比較並交換R單元暫存器」或「比較並交換暫存器」指令、「載入且或R單元暫存器」或「載入且或暫存器」指令及「載入且及R單元暫存器」或「載入且及暫存器」指令)使用連鎖控制對共用暫存器之存取。
參考圖1描述併入有及使用控制執行緒之執行的一或多項態樣的運算環境之一項實例。參考圖1,在一項實例中,運算環境100係基於z/Architecture,該z/Architecture由紐約阿蒙克市之國際商業機器(IBM®)公司提供。z/Architecture描述於題為「z/Architecture-Principles of Operation」之出版號第SA22-7832-09號之IBM出版物(2012年9月,第10版)中,該出版物在此以其全文引用之方式併入本文中。
Z/ARCHITECTURE、IBM及Z/VM、Z/OS、POWER及POWERPC(本文中所參考)為紐約阿蒙克市之國際商業機器公司(International Business Machines Corporation,Armonk,New York)之註冊商標。本文中使用之其他名稱可為國際商業機器公司或其他公司之註冊商標、商標或產品名稱。
作為一項實例,運算環境100包括中央處理器複合體(CPU)102,該複合體經由一或多個控制項單元108耦接至一或多個輸入/輸出(I/O)器件106。中央處理器複合體102包括(例如)耦接至一或多個處理器核心110的處理器記憶體104(亦稱為,主記憶體、主儲存器、中央儲存器)以及輸入/輸出子系統111,其中每一者在下文中描述。
處理器記憶體104包括(例如)一或多個分割區112(例如,邏輯分割區)及包括(例如)邏輯分割區超管理器114及其他處理器韌體115之處理器韌體113。邏輯分割區超管理器114之一項實例為紐約阿蒙克市之國際商業機器公司提供的Processor Resource/System Manager(PR/SM)。
邏輯分割區充當單獨系統且具有一或多個應用程式120及視情況具有其中的駐留作業系統122,此對於每一邏輯分割區可為不同的。在一項實施例中,該作業系統為紐約阿蒙克市之國際商業機器公司提供之z/OS作業系統、z/VM作業系統、z/Linux作業系統或TPF作業系統。
邏輯分割區112由邏輯分割區超管理器114管理,該邏輯分割區超管理器藉由在核心110上運行之韌體實施。如本文中所使用,韌體包括(例如)處理器核心之微碼及/或毫碼(millicode)。其包括(例如)用於實施較高層級機器碼之硬體層級指令及/或資料結構。在一項實施例中,其包括(例如)專有碼,其通常作為包括受信任軟體之微碼或特定於基礎硬體之微碼遞送,且控制對系統硬體之作業系統存取。
處理器核心110為分配給邏輯分割區之實體處理器資源。詳言之,每一邏輯分割區112具有一或多個邏輯處理器,該等邏輯處理器中之每一者表示分配給該分割區之所有或一部分核心110。特定分隔區112之邏輯處理器可專用於該分割區,以便為彼分割區保留基礎核心資源110,或該等邏輯處理器可與另一分割區共用,以使得基礎處
理器資源對於另一分割區為潛在可用的。
在一項實例中,核心中之至少一者為包括多個執行緒(亦即,同步操作的多個邏輯CPU)的多執行緒處理器(諸如同步多執行緒處理器)。在一項實例中,核心包括兩個執行緒,但在其他實施例中,可存在兩個以上執行緒。兩個執行緒(在本文中被稱作T0(126)及T1(128))僅為一項實例。
為了支援同步多執行緒,處理器核心硬體含有每一執行緒之全架構狀態(例如,z/Architecture及微-架構狀態)。因此,提供對於所有執行緒為共同的處理器寬暫存器130(在本文中被稱作共同暫存器)及對於執行緒為唯一的執行緒特定暫存器132(在本文中被稱作唯一暫存器)。在下文進一步描述此等暫存器之使用。
為了控制多個執行緒之執行,核心110包括硬體及/或邏輯以提供如本文所描述之此控制。為方便起見,此硬體及/或邏輯在本文中被稱作執行緒控制設施134。
輸入/輸出子系統111引導輸入/輸出器件106與主儲存器104之間的資訊流。該子系統耦接至中央處理複合體,因為其可為中央處理複合體之一部分或自其分離。I/O子系統減輕處理器核心的與輸入/輸出器件直接通信之任務且准許資料處理與輸入/輸出處理同時進行。為提供通信,I/O子系統採用I/O通信配接器。存在各種類型之通信配接器,包括(例如)通道、I/O配接器、PCI卡、乙太網卡、小型電腦儲存介面(SCSI)卡等。在本文所描述之特定實例中,I/O通信配接器為通道,且因此,I/O子系統在本文中被稱作通道子系統。然而,此情形僅為一項實例。可使用其他類型之I/O子系統。
I/O子系統在管理至輸入/輸出器件106或來自輸入/輸出器件106之資訊流時使用一或多個輸入/輸出路徑作為通信鏈路。在此特定實例中,此等路徑被稱為通道路徑,此係由於通信配接器為通道。
參考圖2描述併入有及使用控制執行緒之執行的一或多項態樣的運算環境之另一實例。在此實例中,運算環境200包括基於z/Architecture(或另一實施例中的另一架構)實施之未經分割之環境。該運算環境包括核心202,該核心包括(例如)一或多個快取記憶體204、至少兩個執行緒T0(206)、T1(208)、用於執行緒之暫存器210之共同集合、用於每一執行緒之暫存器212之唯一集合,以及執行緒控制設施214。
核心202以通信方式耦接至具有一或多個快取記憶體218及至少一個控制項公用程式220的記憶體216,諸如操作系統;及耦接至輸入/輸出(I/O)子系統222。I/O子系統222以通信方式耦接至外部I/O器件224,該外部I/O器件可包括(例如)資料輸入器件、感測器及/或諸如顯示器之輸出器件。
參考圖3A描述併入有及使用控制執行緒之執行的一或多項態樣的運算環境之另一實施例。在此實例中,運算環境300a包括(例如)經由(例如)一或多個匯流排308及/或其他連接彼此耦接的原生核心302、記憶體304及一或多個輸入/輸出器件及/或介面306。作為實例,運算環境300a可包括:由紐約阿蒙克市之國際商業機器公司提供之PowerPC處理器或Power Systems伺服器;由加州帕洛阿爾托之惠普公司(Hewlett Packard Co.,Palo Alto,California)提供之具有Intel Itanium II處理器之HP Superdome;及/或基於由國際商業機器公司、惠普公司、英特爾公司、甲骨文公司(Oracle)或其他公司提供之架構之其他機器。
原生核心302包括一或多個原生暫存器310,諸如包括在環境內處理期間使用的一或多個通用暫存器及/或一或多個專用暫存器,該等暫存器表示在任何特定時間點的環境之狀態的資訊。另外,原生核心可包括(例如)至少兩個執行緒T0(311)、T1(313);用於執行緒之共
同暫存器315之集合;用於每一執行緒之執行緒特定暫存器317之集合;及執行緒控制設施319。
此外,原生核心302執行儲存於記憶體304中之指令及程式碼。在一個特定實例中,處理器核心執行儲存於記憶體304中之模擬器程式碼312。此程式碼使得在一個架構中組態之運算環境能夠模擬一或多個其他架構。舉例而言,模擬器程式碼312允許基於除z/Architecture以外之架構之機器(諸如,PowerPC處理器、Power Systems伺服器、HP Superdome伺服器或其他者)模擬z/Architecture及執行基於z/Architecture開發之軟體及指令。
在另一實施例中,如圖3C所展示,核心302為單一執行緒核心,但多執行緒核心經模擬且包括在模擬器程式碼312內。舉例而言,模擬器程式碼312包括模擬執行緒控制設施320;模擬執行緒322、324;模擬共同暫存器326及模擬唯一暫存器328,其中每一者基於不同於原生核心302之架構之一架構,諸如z/Architecture。
參考圖3B描述與模擬器程式碼312有關之其他細節。儲存於記憶體304中之客體指令350包含經開發以在除原生核心302之架構以外之架構中執行的軟體指令(例如,與機器指令相關)。舉例而言,客體指令350可經設計以在z/Architecture核心202上執行,但改為在原生核心302上模擬,該原生核心302可為(例如)Intel Itanium II處理器。在一項實例中,模擬器程式碼312包括指令提取常式352以自記憶體304獲得一或多個客體指令350,及視情況提供用於所獲得之指令之本端緩衝。該模擬器程式碼亦包括指令轉譯常式354以判定已獲得之客體指令的類型且將該客體指令轉譯成一或多個對應的原生指令356。此轉譯包括(例如)識別待藉由客體指令執行之功能及選擇原生指令以執行彼功能。
此外,模擬器程式碼312包括模擬控制常式360以引起執行原生
指令。模擬控制常式360可使得原生核心302執行模擬一或多個先前所獲得之客體指令之原生指令的常式且,在此執行完結時,使控制返回至指令提取常式以模擬下一客體指令或客體指令群組之獲得。客體指令可為本文所述之執行緒控制設施之指令。原生指令356之執行可包括將資料自記憶體304載入至暫存器;將資料自暫存器儲存回至記憶體;或執行某一類型之算術或邏輯運算(如藉由轉譯常式判定)。
每一常式(例如)在軟體中實施,該軟體儲存於記憶體中且由原生核心302執行。在其他實例中,該等常式或操作中之一或多者係在韌體、硬體、軟體或其某一組合中實施。所模擬處理器之暫存器可使用原生核心之暫存器310或藉由使用記憶體304中之位置來模擬。在實施例中,客體指令350、原生指令356及模擬器程式碼312可駐留於同一記憶體中或可分散於不同記憶體器件當中。
上文所描述之運算環境僅為可使用之運算環境的實例。可使用其他環境,包括但不限於其他未經分割之環境、其他經分割之環境及/或其他模擬環境;實施例不限於任何一種環境。
如上所指出,複數個暫存器與每一執行緒相關聯。對於執行緒為共同的一個共用暫存器為控制暫存器,諸如毫碼控制暫存器(MCR)MCR002,其中之一實例描繪於圖4A中。MCR002(400)包括判定執行緒如何表現的SMT之各種控制項。在一項實施例中,MCR002(400)包括複數個欄位402,且根據一或多項態樣使用之彼等欄位(例如)包括:(a)暫時停止I提取欄位404:此欄位之兩個位元與執行緒0及1呈一對一對應(若存在兩個以上執行緒,則可能存在兩個以上位元)。當位元為『1』b時,此變為有效暫時主要覆寫以阻斷I提取而不管其他控制位元之狀態;及(b)非I提取停止允許欄位406:此欄位之兩個位元與執行緒0及1
呈一對一對應(若存在兩個以上執行緒,則可能存在兩個以上位元)。當位元為『1』b時,其指示此執行緒進入程式碼之區段(例如,關鍵區段),其中不允許另一執行緒接通此執行緒之停止I提取位元。
所使用之另一暫存器為指令位址暫存器,其針對每一執行緒為唯一的。被稱作IAREGFA之此暫存器包括關於由硬體偵測的程式中斷的資訊。IAREGFA之實例描繪於圖4B中。如所示,IAREGFA 450包括複數個欄位452。根據一或多項態樣使用之一個欄位為指示執行緒處於採取例外之過程的欄位454。
以上暫存器中之每一者可包括額外、較少及/或不同欄位。另外,可能存在使用之其他暫存器。本文所述之暫存器及欄位為可使用的暫存器及/或欄位之實例。另外,MCR及IAREGFA僅為暫存器之名稱之實例。許多變化係可能的。
為了增加指令輸送量,每一執行緒使用指令管線用於處理允許多個操作同時執行。指令管線包括複數個階段,且參考圖5描述此管線之一項實例。參考圖5,支援無序處理的管線500包括(例如)自記憶體提取指令的指令提取階段502;形成分派/完成群組且將指令放在發佈佇列中的指令解碼/分派階段504;發佈指令(無序)的發佈階段506;執行指令(無序)的執行階段508;完成指令(無序)的完成階段510;涉及架構檢查點的完成階段512;及復原檢查點階段514。其他管線可包括額外、較少及/或不同階段。本文所述之階段僅為實例。
在一項實例中,至多三個指令(特定而言,微操作)可置放至群組中。然而,某些指令(諸如分支指令)結束一群組,即使該群組不完整。完整的指令群組經引導至同一發佈佇列,且隨後,下一群組進入另一發佈佇列。
根據本發明之態樣,提供在核心中運行之一個執行緒停止在該核心內執行之一或多個其他執行緒以執行一或多個操作的能力。在本
文所述之實例中,核心為指示存在兩個執行緒的SMT-2設計。然而,在其他實施例中,可能存在兩個以上執行緒。
參考圖6描述用於控制一或多個執行緒之執行的邏輯之一項實施例。在此實例中,在核心上執行的執行緒0(T0)嘗試停止在核心上執行的執行緒1(T1),且因此,該描述涉及T0及T1;然而,在其他實施例中,T1可嘗試停止T0;及/或可能存在在核心上執行的正停止的一個以上執行緒。舉例而言,T0可停止T1、T2、T3等。另外,在本文所述之實例中,藉由核心之韌體執行該邏輯;然而,在一或多個其他實施例中,可藉由通用軟體執行該邏輯。許多其他變化係可能的。
如參見圖6所描述,在一項實施例中,一個執行緒停止另一執行緒之執行,且該停止使用由執行緒共用的一或多個暫存器(例如,硬體暫存器)中的一或多個控制項(例如,指示符、位元等)。
參考圖6,在一項實施例中,執行緒0檢查是否禁止停止T1(或在其他實施例中,核心之一或多個執行緒),步驟600。在一項實例中,藉由檢查MCR002之經選擇之位元(例如,位元25)以及IAREGFA之經選擇之位元(例如,位元4)來判定此步驟。在一項實例中,藉由T0測試分支點來完成此步驟,參考STPIFALW。STPIFALW測試MCR002及IAREGFA之經選擇之位元。舉例而言,若MCR0002.25(亦即,MCR002之位元25)設定為0且IAREGIFA.4(亦即,IAREGIFA之位元4)設定為0,則允許停止T1之I提取。
若STPIFALW指示禁止停止T1,查詢602,則處理繼續至步驟600。然而,若未禁止停止T1,如由STPIFALW指示,且特定地MCR002.25=0及IAREGFA.4=0,則處理繼續T0停止T1上的指令提取及執行,步驟604。在一項實例中,此步驟包括T0設定T1之暫時停止I提取位元(例如,MCR002.9),其停止T1上的指令提取及執行。使用(例如)「比較並交換R單元暫存器(CSGRU)」指令或「載入且或R單元
暫存器」指令設定此位元,該等指令中之每一者在下文描述。
其後,T0執行所有執行緒之清空操作(DRAIN ALLTIDS),步驟606,該步驟保持T0之指令分派直至T1上的所有指令自管線清空或清空,並且針對狀態查詢T1。在一項實例中,清空指令用於執行清空操作,該清空操作之實例在下文描述。
當使管線清空其他執行緒上的指令(查詢608)時,處理繼續步驟606。然而,回應於T1上的指令被清空,T0繼續T0之指令分派及執行,步驟610。
其後,T0再次檢查是否禁止停止T1(及其他執行緒,若存在的話),以確保T1在測試之後但在停止之前不改變其狀態,步驟612。如上文所描述,使用STPIFALW執行此檢查。若現在禁止停止T1,查詢614,則T0允許T1藉由關閉MCR002之位元9(亦即,設定其為0)來繼續執行,步驟616。處理繼續至步驟600。
另外,若未禁止停止T1,查詢614,則T0執行導致T1之停止的指令序列(例如,一或多個操作),步驟618。在彼指令序列完成後,允許T1繼續,步驟620。因此,T0藉由使用(例如)「載入且及R單元(LNRU)」指令或CSGRU來重設MCR002中的位元9,如下所述。其後,兩個執行緒正常執行,步驟622。
如上文所描述,多個指令用於控制多執行緒處理器之一或多個執行緒之執行。在下文描述此等指令中之每一者。
參考圖7A至7B,描述「清空」指令之一項實施例。特定而言,圖7A描繪「清空」指令之格式之一項實施例,且圖7B描繪與「清空」指令相關聯之邏輯之一項實施例。
參考圖7A,「清空」指令700包括:作業碼欄位702,其包括識別清空操作的操作碼;遮罩(M3)欄位704,其包括指示延時計數的值,其指定延時多少循環處理;及指令欄位706(I2),其指示清空類型,
在此實例中,其為指定將清空所有執行緒的清空所有TIDS(執行緒ID)。
在操作中並參考圖7B,執行緒T0在管線之指令解碼或分派階段暫停T0之指令處理,直至滿足指定條件,步驟750。指令之I2欄位之指定位元(例如,I2之位元0:31,其為(例如)I文字欄位之位元16:47,該欄位包括指令之所有欄位)指定在繼續指令處理之前滿足一或多個硬體條件。在一項實施例中,指定條件包括跨執行緒控制(例如,I2欄位之位元0;I文字欄位之位元16),該跨執行緒控制檢查T1(或其他執行緒)之狀態以判定是否在T1上已暫停處理。當I2欄位之位元0為『1』b時,其指定將在兩個執行緒上滿足所有其他清空條件以在此執行緒上繼續處理(其他執行緒未經此執行緒上的DRAIN阻斷)。當使用此功能時,需注意以避免懸置。
在一或多項實施例中,可在I2欄位中指定其他條件。給定位元位置中的一指示將在恢復指令處理之前滿足條件;若開啟一個以上位元,則將滿足所有選擇之條件。在實施中,在一項實施例中,當I文字位元16(亦即,I2欄位之位元0)為1時,基於逐位元在或操作經選擇以判定是否滿足DRAIN條件的最終值的所有函式前執行兩個(或所有)硬體執行材之狀態函式之邏輯或。
判定是否已滿足指定條件,查詢752。若否,則繼續暫停,步驟750。否則,若已滿足條件,則處理延時額外數目之循環,步驟754。此額外數目可為零或多個,且在清空指令之M3欄位中指定。舉例而言,M3欄位指定(作為實例)0與15之間的額外數目之循環以在滿足I2欄位中指定的條件之後延時。在延時額外數目之循環後,恢復指令處理,步驟756。
在一項實施例中,若同時分派先前指令及清空,則允許先前指令完成分派及通常經由管線繼續,但「清空」指令及所有後續指令將
阻斷分派,直至滿足條件。注意,「清空」指令僅在此執行緒上操作延遲處理。為了停止另一執行緒,使用本文所述之技術。然而,指定位元(例如,I2之位元0)當為1時指示將滿足所有執行緒上的所有指定條件以在此執行緒上的「清空」指令後繼續處理。
如所指示,指令之M3欄位指定額外循環之數目以在管線處延時。此情形可結合I2欄位中的任何允許條件使用。其亦可指定I2欄位皆為0,這在分派處產生立即循環計數延遲。即使M3欄位為0,亦存在分派「清空」指令的一個循環之延時。因此,此計數指定循環之數目以延遲多一個循環。硬體可發佈「清空」指令連同其他指令且其可以無序方式發佈,原因是其僅影響管線之前端階段。
此指令意欲在保證正確操作必需的連鎖未建置至硬體中的情況下使用。在大多數情況下,硬體自管線中的先前指令自動覆蓋視窗。
未由此指令改變條件程式碼。
使用的另一指令為「比較並交換R單元暫存器」指令,參考圖8A至圖8B對其進行描述。特定而言,圖8A描繪「比較並交換R單元暫存器」指令之格式之一項實施例,且圖8B描繪與「比較並交換R單元暫存器」指令相關聯之邏輯之一項實施例。應注意,本文中論述的指令中的R單元係指執行指令的核心內的特定單元。然而,特定單元之使用並非必需的。可藉由其他單元或僅藉由核心執行。
參考圖8A,CSGRU指令800包括:至少一個作業碼欄位802a、802b,其包括指定「比較並交換暫存器」操作的操作碼;第一暫存器欄位(R1)804;第二暫存器欄位(R3)806;及指令欄位(I2)808,在下文描述該等欄位中之每一者。
在操作中且參考圖8B,由在經選擇之位元(例如,I文字之位元22:31(例如,I2欄位(808)之位元6:15))中指示的10位元絕對暫存器數目指定的R單元暫存器(在本文中被稱作MCR)之內容與在R1中指定的
通用暫存器(GR)之內容進行比較,步驟850。若其為相同的,查詢852,則將MCR之內容寫入R1中指定的通用暫存器,步驟854,且將R3中指定的通用暫存器之內容寫入MCR,步驟856。另外,將條件程式碼設定為0,步驟858,且完成CSGRU之處理。
回到查詢852,若MCR及R1中指定的暫存器之內容不相同,則將MCR之內容寫入R1中指定的暫存器,步驟860,且將條件程式碼設定為1,步驟858。此結束CSGRU之處理。
CSGRU之讀取-比較-置換函式為由此執行緒T0及此處理器之其他執行緒(例如,T1)觀察的不可部分完成的操作。在一項實施例中,在SLOW選項打開之情況下執行CSGRU以避免跨執行緒懸置。SLOW選項藉由將I2(808)之經選擇之位元(例如,位元17)設定為1來指示,且用於請求緩慢模式,此意謂一次在整個管線中僅存在一個指令。另外,使用如下所述之此指令來執行連鎖,且因此,將在本文中被稱作ILOCK的I2(808)之經選擇之位元(例如,位元16)設定為1。
在一項實施例中,若另一經選擇之指令(諸如,RSR(讀取專用暫存器)、WSR(寫入專用暫存器)、NSR(與專用暫存器)、OSR(或專用暫存器)、XSR(互斥或專用暫存器)、TRBIT(測試暫存器位元)、RASR(讀取絕對專用暫存器)、WASR(寫入絕對專用暫存器)、TARBIT(測試絕對暫存器位元)、NASR(與絕對專用暫存器)、OASR(或絕對專用暫存器)、XASR(互斥或絕對專用暫存器)、LORU(載入且或R-單元暫存器)、LNRU(載入且及R單元暫存器)或CSGRU(比較並交換R單元暫存器))在此執行緒(T0)或任何另一執行緒之管線中且ILOCK位元(例如,I2位元16)對另一指令開啟,則拒絕且重新發佈此指令。此指令(例如)僅在已發佈來自此執行緒的所有先前指令之後發佈且亦促使來自此執行緒之所有未來指令取決於該指令。
條件程式碼設定包括(例如):CC0比較相同,R單元暫存器由GR
R1替換;CC1比較不相同,R單元暫存器不變。
使用的另一指令為「載入且或R單元暫存器(LORU)」指令,參考圖9A至9B對該指令進行描述。特定而言,圖9A描繪「載入且或R單元暫存器」指令之格式之一項實施例,且圖9B描繪與「載入且或R單元暫存器」指令相關聯之邏輯之一項實施例。
參考圖9A,LORU指令900包括:至少一個作業碼欄位902a、902b,其包括指定載入且或暫存器操作的操作碼;第一暫存器欄位(R1)904;第二暫存器欄位(R3)906;及指令欄位(I2)908,在下文描述該等欄位中之每一者。
在操作中且參考圖9B,將由在經選擇之位元(例如,I2欄位(908)之I文字之位元22:31(例如,位元6:15))中指示的10位元絕對暫存器數目指定的R單元暫存器(在本文中被稱作MCR)之內容載入至R1中指定的通用暫存器中,步驟950。另外,R3中指定的通用暫存器之內容邏輯地用MCR之內容進行或運算,步驟952,且將結果寫入至MCR中,步驟954。
LORU之讀取-或-取代(read-OR-replace)函式為由此執行緒T0及此處理器之其他執行緒(例如,T1)觀察的不可部分完成的操作。在一項實施例中,在SLOW選項打開之情況下執行LORU以避免跨執行緒懸置。藉由將I2(908)之經選擇之位元(例如,位元17)設定為1來指示SLOW選項。另外,使用如下所述之此指令來執行連鎖,且因此,將在本文中被稱作ILOCK的I2(908)之經選擇之位元(例如,位元16)設定為1。
在一項實施例中,若另一經選擇之指令(諸如,RSR(讀取專用暫存器)、WSR(寫入專用暫存器)、NSR(與專用暫存器)、OSR(或專用暫存器)、XSR(互斥或專用暫存器)、TRBIT(測試暫存器位元)、RASR(讀取絕對專用暫存器)、WASR(寫入絕對專用暫存器)、
TARBIT(測試絕對暫存器位元)、NASR(與絕對專用暫存器)、OASR(或絕對專用暫存器)、XASR(互斥或絕對專用暫存器)、LORU(載入且或R-單元暫存器)、LNRU(載入且及R單元暫存器)或CSGRU(比較並交換R單元暫存器))在此執行緒(T0)或任何另一執行緒之管線中且ILOCK位元(I2位元16)對另一指令開啟,則拒絕且重新發佈此指令。此指令(例如)僅在已發佈來自此執行緒的所有先前指令之後發佈且亦促使來自此執行緒之所有未來指令取決於該指令。
條件程式碼不變。
使用的另一指令為「載入且及R單元暫存器(LNRU)」指令,參考圖10A至圖10B對該指令進行描述。特定而言,圖10A描繪「載入且及R單元暫存器」指令之格式之一項實施例,且圖10B描繪與「載入且及R單元暫存器」指令相關聯之邏輯之一項實施例。
參考圖10A,LNRU指令1000包括:至少一個作業碼欄位1002a、1002b,其包括指定「載入且及暫存器」操作的操作碼;第一暫存器欄位(R1)1004;第二暫存器欄位(R3)1006;及指令欄位(I2)1008,在下文描述該等欄位中之每一者。
在操作中且參考圖10B,將由在經選擇之位元(例如,I文字之位元22:31(例如,I2欄位(1008)之位元6:15))中指示的10位元絕對暫存器數目指定的R單元暫存器(在本文中被稱作MCR)之內容載入至R1中指定的通用暫存器中,步驟1050。另外,R3中指定的通用暫存器之內容邏輯地用MCR之內容進行與運算,步驟1052,且將結果寫入至MCR中,步驟1054。
LNRU之讀取-與-取代(read-AND-replace)函式為由此執行緒T0及此處理器之其他執行緒(例如,T1)觀察的不可部分完成的操作。在一項實施例中,在SLOW選項打開之情況下執行LNRU以避免跨執行緒懸置。藉由將I2(1008)之經選擇之位元(例如,位元17)設定為1來指示
SLOW選項。另外,使用如下所述之此指令來執行連鎖,且因此,將在本文中被稱作ILOCK的I2(1008)之經選擇之位元(例如,位元16)設定為1。
在一項實施例中,若另一經選擇之指令(諸如,RSR(讀取專用暫存器)、WSR(寫入專用暫存器)、NSR(與專用暫存器)、OSR(或專用暫存器)、XSR(互斥或專用暫存器)、TRBIT(測試暫存器位元)、RASR(讀取絕對專用暫存器)、WASR(寫入絕對專用暫存器)、TARBIT(測試絕對暫存器位元)、NASR(與絕對專用暫存器)、OASR(或絕對專用暫存器)、XASR(互斥或絕對專用暫存器)、LORU(載入且或R-單元暫存器)、LNRU(載入且及R單元暫存器)或CSGRU(比較並交換R單元暫存器))在此執行緒(T0)或任何另一執行緒之管線中且ILOCK位元(例如,I2位元16)對另一指令開啟,則拒絕且重新發佈此指令。此指令(例如)僅在已發佈來自此執行緒的所有先前指令之後發佈且亦促使來自此執行緒之所有未來指令取決於該指令。
條件程式碼不變。
LNRU以及LORU及CSGRU使用SMT核心中的所有執行緒可存取的暫存器,而非作為共用通信之構件的儲存器。此等暫存器為(例如)與處理器之記憶體或儲存器分離的硬體暫存器。舉例而言,在一個核心設計中,存在核心上的所有執行緒共用(共同)的大約64個暫存器;執行緒可自由讀取及寫入此等共用暫存器。在控制暫存器之一些情況下,若兩個執行緒嘗試在無特殊連鎖之情況下寫入該等暫存器,則可能失去藉由執行緒中之一者的更新。在其他情況下,僅准許執行緒中之一者「擁有」由暫存器中的位元控制的資源。因此,在共用暫存器上操作之此等不可部分完成的指令用於控制及定序對此等共用暫存器之存取。
LNRU、LORU及CSGRU各自允許藉由使用連鎖進行之通用暫存
器與MCR跨執行緒之間的不可部分完成的操作控制執行緒間操作及執行。如所指示,指令中之每一者具有ILOCK位元,且當彼位元對在管線中執行的指令開啟時,若第二指令進入管線,其中ILOCK位元亦經設定,則拒絕第二指令(且當第一指令完成時稍後重新執行)。此以對執行緒之間的此等暫存器的存取保證不可部分完成性。
存在(例如)兩種類型的連鎖指令:單一微操作μop指令,諸如LNRU及LORU;及二μop指令,諸如CSGRU。藉由單一μop指令,連鎖在μop發佈(RSR及WSR類型之指令)時設定,且在RSR類型的μop完成時及WSR類型的檢查點上清除。在二μop指令中,連鎖在第一μop(RSR類型)發佈時設定且在第二μop(WSR類型)之檢查點處清除。
參考圖11A至11B描述關於使用連鎖的其他細節及連鎖。藉由核心(且詳言之,藉由在其上發佈指令之管線)執行此邏輯。
最初參考圖11A,藉由多執行緒處理器獲得待執行之指令(例如,LNRU、LORU、CSGRU),步驟1100。藉由執行操作之多執行緒處理器來啟動指令之執行,步驟1102。該操作包括待以不可部分完成之方式執行的多個子操作。判定是否繼續執行指令,查詢1104。該判定使用(例如)連鎖以判定指令是否具有對由執行緒及一或多個其他執行緒共用的一或多個暫存器的不可部分完成的存取。
若繼續執行指令,則執行繼續,其包括使用至少一個共用暫存器執行操作,步驟1106。另外,若指令不繼續,則拒絕該指令,步驟1108。
參考圖11B描述與連鎖相關的其他細節。最初,當指令進入R單元時,在一項實例中,檢查是否設定鎖定指示符(諸如傳入指令之ILOCK位元(例如,I文字之位元32,亦稱為I2之位元16))(例如,設定為1),查詢1150。若ILOCK位元未經設定,則完成連鎖處理;然而,若傳入指令中的ILOCK位元經設定,則進一步判定是否設定鎖定(被
稱作連鎖),查詢1152。連鎖置放於多個執行緒可存取的硬體暫存器中。
若設定連鎖(例如,位元設定為1)指示另一指令正處理設定其ILOCK位元,則拒絕傳入指令,步驟1153。
然而,若未設定連鎖,則對其進行設定,步驟1154,且繼續進行指令處理(例如,在管線中),步驟1156。當指令完成(或設置檢查點)時,重設連鎖(例如,設定為0),步驟1158。
關於連鎖的其他細節包括:
(A)例如在如下情況時,可由管線0設定連鎖:
- 在需要設定連鎖的管線0中存在指令且該指令經單獨發佈
- 在需要設定連鎖的管線0中存在指令且在不意欲設定鎖定的管線1中存在另一指令,兩個指令均來自同一執行緒。
- 在需要設定連鎖的管線0中存在指令且在需要設定鎖定的管線1中存在另一指令,但管線0中的指令更早,兩個指令均來自同一執行緒。
- 在需要設定連鎖的管線0中存在指令且在不意欲設定鎖定的管線1中存在另一指令,兩個指令來自不同執行緒。
- 在需要設定連鎖的管線0中存在指令且在需要設定鎖定的管線1中存在另一指令,兩個指令來自不同執行緒,且LFSR(線性回饋移位暫存器)指向管線0。LFSR用於產生偽隨機數且藉由採取該數的最高有效位元,在兩個管線之間提供偽隨機選擇(亦即,隨機選擇哪一管線將設定連鎖)。
在一項實例中,連鎖為針對分派群組中的每一可能指令具有一位元的向量。舉例而言,在一項實例中,在一分派群組中可能存在至多三個指令,且因此,連鎖包括三個位元,每一指令一個。當位元設定為(例如)1時,此指示與彼位元相關聯之指令具有連鎖。
亦可由如上文所述之管線1設定連鎖,然而用管線1替換管線0,且用管線0替換管線1。
(B)例如在如下情況時,執行連鎖之設定:- 在管線中存在有效指令,與- 設定ILOCK,與- 設定predec_rd(亦即,讀取(RSR)類型指令之早期指示)[或]predec_wr(亦即,寫入(WSR)類型指令之早期指示),與- 管線中的指令未清空/經xcond編碼,與- 可由彼管線(根據(A))設定連鎖,與- 連鎖尚未經設定
(C)例如在如下情況時更新連鎖- 在管線中存在有效指令,與- 設定ILOCK,與- 設定predec_rd[或]predec_wr,與- 管線中的指令未清空/經xcond編碼,與- 已設定連鎖,與- instruction.GTAG(包括指令的分派群組之標識符)=interlock.GTAG(亦即,為與指令相關聯之標識符=設定連鎖的標識符),與- instruction.th_id(執行緒id)=interlock.th_id
在一項實施例中,若在抓取鎖定的群組中不存在寫入型微操作(μop),則針對群組完成執行連鎖之重設。若在群組中存在寫入型μop但其未抓取鎖定,則亦針對彼完成釋放鎖定(未抓取鎖定=ILOCK位元為0,此為CSGRU之ILOCK位元亦在WSR部分中設定因此其針對RSR之完成未經釋放的原因)。若寫入型指令亦抓取鎖定,則鎖定將僅針對檢查點經釋放。以此方式將見到不可部分完成性。CSGRU例外,
其中WSR在第二群組中,因此第一群組之RSR設定鎖定且第二群組中的WSR釋放鎖定。在彼情況下,第一群組在第二群組(其具有GTAG,比第一群組之GTAG大1)之前出現。
若群組中之μop不保持鎖定,則彼μop之拒絕可能不重設鎖定。在一項實例中,若群組中不存在亦保持鎖定的其他μop,則拒絕將僅釋放鎖定。
若群組中之μop不保持鎖定,則彼μop之撤銷可能不重設鎖定。在一項實例中,若群組中不存在亦保持鎖定的其他μop,則撤銷將僅釋放鎖定。
當xcond出現時,檢查是否可釋放連鎖。問題在於xcond應僅在抓取鎖定之指令尚未完成時釋放鎖定。若抓取鎖定的指令已完成,則xcond不應對鎖定有影響(這對於抓取鎖定的寫入型指令為真,原因是彼指令將針對檢查點釋放鎖定。針對讀取型指令,針對完成已進行釋放。CSGRU例外,其讀取型部分可能已完成,但若在寫入型完成之前可能存在xcond,則將釋放鎖定(若寫入型完成,則隨後將出現的xcond應對連鎖無影響)。
在需要清空設定鎖定的指令的情況下重設:將僅進行實際重設,例如,若不再由彼群組之任何指令保持鎖定。舉例而言,若清空命中群組中的第一μop且此μop保持鎖定,則鎖定釋放(當然,兩個其他μop亦可保持鎖定但其被清空)。若清空出現在群組中的第二μop上且此μop保持鎖定,則鎖定僅釋放,例如,若第一μop亦不保持鎖定(第三μop將無論如何被清空因此不需要對其進行檢查)。
(D)例如在如下情況時重設連鎖:- 已設定連鎖為與- 根據(C),未更新為與(
抓取鎖定的指令經完成:- 對其鎖定的讀取指令完成與- 此並非CSGRU之第一群組完成或(抓取鎖定的指令經設置檢查點:- 對其進行鎖定的寫入指令經設置檢查點與- Interlock.GTAG=Instruction.GTAG或- 若此為CSGRU之第二群組完成,則等待其經設置檢查點與- Interlock.GTAG+1=Instruction.GTAG)或拒絕抓取鎖定的μop且在彼群組中無其他保持者或撤銷抓取鎖定的μop且在彼群組中無其他保持者或抓取鎖定的μop被清空/經xcond編碼且在彼群組中無其他保持者或復原進行中)
(E)例如在如下情況時拒絕
1)連鎖經鎖定為與
instruction.th_id!=(不同)interlock.th_id與instruction.GTAG!=interlock.GTAG
針對CSGRU作業碼,當由RSR μop鎖定連鎖時,此情形消除WSR
μop之拒絕(該等μop具有相同GTAG及相同執行緒ID)。
針對類似發佈為有序的群組(RSR、x、WSR)亦為真,但出於某一原因RSR被拒絕且因此WSR鎖定該鎖定。在此情況下,若拒絕將基於個別指令id,則由於鎖定經鎖定,RSR將不能進入,且整個群組將不能完成==>死鎖,原因是WSR無法釋放鎖定。解決方案為使用GTAG,如此RSR將能夠進入且當其完成時,WSR亦將能夠完成且將釋放鎖定。
2)兩個管線上的同一執行緒與在兩個管線上開啟ILOCK與當前管線保持較新指令
==>應拒絕當前較新指令(同樣,若尚未由較舊指令打開連鎖位元)。
在打開連鎖之情況下,亦應由(1)條件拒絕較舊者(除非此為CSGRU指令之WSR)。
3)在兩個管線上的不同執行緒與在兩個管線上開啟ILOCK與當前的管線數目並不與LFSR之值相等(其針對管線0為0且針對管線1為1)==>應拒絕當前管線_x指令(同樣,若尚未由較舊指令打開連鎖位元)。
在打開連鎖之情況下,亦應由(1)條件拒絕兩者(除非其中一者為CSGRU指令之WSR)。
本文描述用於一個執行緒停止多執行緒處理器之一或多個其他執行緒之執行的技術之一項實施例。實施該技術以避免懸置且確保與其他執行緒相關聯之所有指令在其停止之前完成。在一項態樣中,此技術包括自處理器之所有硬體執行緒(或在另一實施例中的經選擇之執行緒)查看狀態資訊以瞭解在此執行緒處繼續操作之前是否滿足條
件。
此外,此技術之一項實施例使用不可部分完成的指令(諸如CSGRU、LORU及LNRU)以在共用暫存器上操作。舉例而言,在多執行緒核心設計(例如,SMT)中,當兩個或兩個以上執行緒共用共同核心時,其通常需要傳達及共用資訊;此可包括信號量、鎖定等。此可涉及韌體、毫碼或其可涉及軟體。執行緒可使用經由儲存器傳達的現有ISA指令。然而,此等可較慢且涉及儲存-命中-載入(store-hit-load)或載入-命中-儲存(load-hit-store)衝突(通常被稱為運算元儲存比較(Operand Store Compare;OSC))。另外,若由韌體完成傳達,則經由儲存器傳達可為非所要或不可能的;韌體常式可在禁止運算元載入及儲存的關鍵序列之中間。因此,此等指令在暫存器而非儲存器上操作。
儘管不可部分完成的指令描述為關於控制執行緒之執行,但該等指令可用於其他目的。每一指令脫離本文所述之使用且可用於其他情況。
參考圖12,在一項實例中,電腦程式產品1200包括(例如)將電腦可讀程式碼構件、邏輯及/或指令1204儲存於其上以提供及促進一或多項實施例之一或多個非暫時性電腦可讀儲存媒體1202。
本發明可為一種系統、方法及/或電腦程式產品。電腦程式產品可包括電腦可讀儲存媒體(或多個媒體),其上具有電腦可讀程式指令以用於使處理器執行本發明之態樣。
電腦可讀儲存媒體可為有形器件,其可持留及儲存指令以供指令執行器件使用。電腦可讀儲存媒體可為(例如但不限於):電子儲存器件、磁性儲存器件、光學儲存器件、電磁儲存器件、半導體儲存器件或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體
(RAM)、唯讀記憶體(ROM)、可擦除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟性磁碟、經機械編碼器件(諸如其上記錄有指令之打孔卡片或凹槽中之凸起結構)及前述各者之任何合適組合。如本文中所使用,不將電腦可讀儲存媒體本身理解為暫時性信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖線纜傳遞之光脈衝),或經由導線傳輸之電信號。
本文中所描述之電腦可讀程式指令可經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)自電腦可讀儲存媒體下載至各別運算/處理器件或下載至外部電腦或外部儲存器件。網路可包含銅傳輸線纜、光學傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理器件中之網路配接卡或網路介面自網路接收電腦可讀程式指令且遞送電腦可讀程式指令以用於儲存於各別運算/處理器件內之電腦可讀儲存媒體中。
用於執行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯程式指令、指令集合架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料或原始程式碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及諸如「C」程式設計語言或類似程式設計語言之習知程序程式設計語言。電腦可讀程式指令可完全在使用者電腦上執行、部分地在使用者電腦上執行、作為獨立軟體封裝執行、部分地在使用者電腦上執行且部分地在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後一情形中,該遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可連接至外部電腦(例如,使用網際網路服務提
供者,經由網際網路)。在一些實施例中,電子電路(包括例如可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA))可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路而執行電腦可讀程式指令,以執行本發明之態樣。
本文參考根據本發明之實施例之方法、裝置(系統)及電腦程式產品之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖之每一區塊,及流程圖說明及/或方塊圖中之區塊之組合。
可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生機器,以使得經由該電腦或其他可程式化資料處理裝置之處理器執行之指令建立用於實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之構件。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,該等指令可指導電腦、可程式化資料處理裝置及/或其他器件以特定方式起作用,使得其中儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施一或多個流程圖及/或方塊圖區塊中指定之功能/動作之態樣的指令。
電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理裝置或其他器件上,以使一系列操作步驟在該電腦、其他可程式化裝置或其他器件上執行以產生電腦實施之處理程序,使得在該電腦、其他可程式化裝置或其他器件上執行之指令實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施之架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、區段或部分,其包含用於實施指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中提及的功能可不按諸圖中所提及的次序發生。舉例而
言,取決於所涉及之功能性,以連續方式展示之兩個區塊實際上可實質上同時執行,或該等區塊有時可以相反次序執行。亦將注意,可藉由執行指定功能或動作或進行專用硬體及電腦指令之組合的基於專用硬體之系統實施方塊圖及/或流程圖說明之每一區塊,及方塊圖及/或流程圖說明中之區塊之組合。
雖然上文描述各種實施例,但其僅為實例。舉例而言,其他架構之運算環境可用於併入有及使用一或多項實施例。另外,本發明之一或多項態樣適用於除SMT外之多執行緒之形式。又另外,可使用不同指令、指令格式、指令欄位及/或指令值。許多變化係可能的。
另外,其他類型之運算環境可係有益的且可被使用。作為一實例,可使用適合於儲存及/或執行程式碼之資料處理系統,其包括直接或經由系統匯流排間接地耦接至記憶體元件之至少兩個處理器。記憶體元件包括(例如)在程式碼之實際執行期間使用之本端記憶體、大容量儲存器及快取記憶體,該等記憶體元件對至少某一程式碼提供暫時儲存以便減少在執行期間必須自大容量儲存器擷取程式碼之次數。
輸入/輸出或I/O器件(包括(但不限於)鍵盤、顯示器、指標器件、DASD、磁帶、CD、DVD、隨身碟(Thumb Drive)及其他記憶體媒體等)可直接地或經由介入I/O控制器耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠變成經由介入之私人網路或公用網路耦接至其他資料處理系統或遠端印表機或儲存器件。數據機、線纜數據機及乙太網卡僅為幾個可用類型之網路配接器。
本文中所使用之術語僅出於描述特定實施例之目的且並不意欲為限制性的。如本文中所使用,除非上下文另外清楚地指示,否則單數形式「一」及「該」意欲包括複數形式。應進一步理解,術語「包含」在用於本說明書中時指定所陳述特徵、整數、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整數、步驟、操
作、元件、組件及/或其群組之存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若存在)意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。一或多項實施例之描述已出於說明及描述之目的呈現,但不意欲為窮盡性的或限制於所揭示之形式。許多修改及變化將對一般熟習此項技術者顯而易見。實施例經選擇及描述以最佳地解釋各種態樣及實際應用,以使得一般熟習此項技術者能夠理解各種實施例及適於所涵蓋之特定用途的各種修改。
100‧‧‧運算環境
102‧‧‧中央處理器複合體
104‧‧‧處理器記憶體
106‧‧‧輸入/輸出器件
108‧‧‧輸入/輸出控制單元(控制項單元)
110‧‧‧處理器核心
111‧‧‧輸入/輸出子系統
112‧‧‧邏輯分割區
113‧‧‧處理器韌體
114‧‧‧邏輯分割區超管理器
115‧‧‧其他處理器韌體
120‧‧‧應用程式
122‧‧‧駐留作業系統
126‧‧‧執行緒T0
128‧‧‧執行緒T1
130‧‧‧共同暫存器
132‧‧‧唯一暫存器
134‧‧‧執行緒控制設施
Claims (17)
- 一種用於在一運算環境中控制執行緒之執行的電腦系統,該電腦系統包含:一記憶體;及一處理器,其與該記憶體通信,其中該電腦系統經組態以執行一方法,該方法包含:藉由在該運算環境之該處理器中運行的一執行緒停止在該處理器內執行之另一執行緒之執行,該停止使用該處理器之一或多個共用暫存器中的一或多個控制項,該一或多個共用暫存器由該執行緒及該另一執行緒共用,其中該停止該另一執行緒之執行包含:判定是否禁止停止該另一執行緒;基於指示未禁止停止該另一執行緒之該判定,停止該另一執行緒上的指令提取及執行;檢查該另一執行緒之狀態以判定是否已停止該另一執行緒之執行,其中該執行該一或多個操作係基於指示已停止該另一執行緒之執行的該檢查,該另一執行緒在判定之後停止之前並未從未禁止停止改變為禁止停止;在該另一執行緒在該處理器中藉由該執行緒停止執行之後藉由該執行緒執行一或多個操作;及基於完成該一個或多個操作藉由該執行緒允許該另一執行緒在該處理器中繼續執行。
- 如請求項1之電腦系統,其中該停止該另一執行緒之執行包含:獲得該另一執行緒之狀態資訊;及基於該狀態資訊判定是否停止該另一執行緒之執行,其中基 於指示停止該另一執行緒之執行的該判定執行該一或多個操作。
- 如請求項2之電腦系統,其中該判定包含:使用經組態以獲得該另一執行緒之狀態的一清空指令。
- 如請求項1之電腦系統,其中該一或多個控制項包括該一或多個共用暫存器中的一或多個指示符,且其中該判定是否禁止停止該另一執行緒包含檢查該一或多個指示符中之至少一個指示符。
- 如請求項1之電腦系統,其中該一或多個控制項包括該一或多個共用暫存器中的一或多個指示符,且其中該停止該另一執行緒上的指令提取及執行包括設定該一或多個指示符中之一指示符以停止該另一執行緒上的指令提取及執行。
- 如請求項1之電腦系統,其中該檢查該另一執行緒之狀態包含:使用一清空指令,該清空指令經組態以保持該執行緒上的指令分派及該另一執行緒之查詢狀態。
- 如請求項6之電腦系統,其中該清空指令在該執行該一或多個操作之前指定待滿足的一或多個條件,且其中該執行該一或多個操作係基於指示滿足該一或多個條件的該清空指令之一結果執行的。
- 如請求項1之電腦系統,其中該方法進一步包含:基於指示已停止該另一執行緒之執行的該檢查而重新判定是否禁止停止該另一執行緒;基於指示禁止停止該另一執行緒的該重新判定,允許在該另一執行緒上的執行;及基於指示未禁止停止該另一執行緒的該重新判定,執行該一或多個操作。
- 如請求項1之電腦系統,其中該停止包含:停止複數個執行緒之執行。
- 一種用於在一運算環境中控制執行緒之執行的電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其可藉由一處理電路讀取且儲存用於藉由該處理電路執行之指令以用於執行一方法,該方法包含:藉由在該運算環境之一處理器中運行的一執行緒停止在該處理器內執行之另一執行緒之執行,該停止使用該處理器之一或多個共用暫存器中的一或多個控制項,該一或多個共用暫存器由該執行緒及該另一執行緒共用,其中該停止該另一執行緒之執行包含:判定是否禁止停止該另一執行緒;基於指示未禁止停止該另一執行緒之該判定,停止該另一執行緒上的指令提取及執行;檢查該另一執行緒之狀態以判定是否已停止該另一執行緒之執行,其中該執行該一或多個操作係基於指示已停止該另一執行緒之執行的該檢查,該另一執行緒在判定之後停止之前並未從未禁止停止改變為禁止停止;在該另一執行緒在該處理器中藉由該執行緒停止執行之後藉由該執行緒執行一或多個操作;及基於完成該一個或多個操作藉由該執行緒允許該另一執行緒在該處理器中繼續執行。
- 如請求項10之電腦程式產品,其中該停止該另一執行緒之執行包含:獲得該另一執行緒之狀態資訊;及基於該狀態資訊判定是否停止該另一執行緒之執行,其中基 於指示停止該另一執行緒之執行的該判定執行該一或多個操作。
- 如請求項11之電腦程式產品,其中該檢查該另一執行緒之狀態包含使用一清空指令,該清空指令經組態以保持該執行緒上的指令分派及該另一執行緒之查詢狀態,且其中該清空指令在該執行該一或多個操作之前指定待滿足的一或多個條件,且其中該執行該一或多個操作係基於指示滿足該一或多個條件的該清空指令之一結果執行的。
- 如請求項11之電腦程式產品,其中該方法進一步包含:基於指示已停止該另一執行緒之執行的該檢查而重新判定是否禁止停止該另一執行緒;基於指示禁止停止該另一執行緒的該重新判定,允許在該另一執行緒上的執行;及基於指示未禁止停止該另一執行緒的該重新判定,執行該一或多個操作。
- 一種於一運算環境中控制執行緒之執行的方法,該方法包含:藉由在該運算環境之一處理器中運行的一執行緒停止在該處理器內執行之另一執行緒之執行,該停止使用該處理器之一或多個共用暫存器中的一或多個控制項,該一或多個共用暫存器由該執行緒及該另一執行緒共用,其中該停止該另一執行緒之執行包含:判定是否禁止停止該另一執行緒;基於指示未禁止停止該另一執行緒之該判定,停止該另一執行緒上的指令提取及執行;檢查該另一執行緒之狀態以判定是否已停止該另一執行緒之執行,其中該執行該一或多個操作係基於指示已停止 該另一執行緒之執行的該檢查,該另一執行緒在判定之後停止之前並未從未禁止停止改變為禁止停止;在該另一執行緒在該處理器中藉由該執行緒停止執行之後藉由該執行緒執行一或多個操作;及基於完成該一個或多個操作藉由該執行緒允許該另一執行緒在該處理器中繼續執行。
- 如請求項14之方法,其中該停止該另一執行緒之執行包含:獲得該另一執行緒之狀態資訊;及基於該狀態資訊判定是否停止該另一執行緒之執行,其中基於指示停止該另一執行緒之執行的該判定執行該一或多個操作。
- 如請求項14之方法,其中該檢查該另一執行緒之狀態包含使用一清空指令,該清空指令經組態以保持該執行緒上的指令分派及該另一執行緒之查詢狀態,且其中該清空指令在該執行該一或多個操作之前指定待滿足的一或多個條件,且其中該執行該一或多個操作係基於指示滿足該一或多個條件的該清空指令之一結果執行的。
- 如請求項14之方法,其進一步包含:基於指示已停止該另一執行緒之執行的該檢查而重新判定是否禁止停止該另一執行緒;基於指示禁止停止該另一執行緒的該重新判定,允許在該另一執行緒上的執行;及基於指示未禁止停止該另一執行緒的該重新判定而執行該一或多個操作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/525,800 US9575802B2 (en) | 2014-10-28 | 2014-10-28 | Controlling execution of threads in a multi-threaded processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201616342A TW201616342A (zh) | 2016-05-01 |
TWI608411B true TWI608411B (zh) | 2017-12-11 |
Family
ID=54361063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104110337A TWI608411B (zh) | 2014-10-28 | 2015-03-30 | 於多執行緒處理器中控制執行緒之執行的電腦系統、電腦程式產品及方法 |
Country Status (14)
Country | Link |
---|---|
US (2) | US9575802B2 (zh) |
EP (1) | EP3213187B1 (zh) |
JP (1) | JP6580134B2 (zh) |
KR (1) | KR101976295B1 (zh) |
CN (1) | CN107111482B (zh) |
AU (1) | AU2015340844B2 (zh) |
CA (1) | CA2961705C (zh) |
ES (1) | ES2805010T3 (zh) |
PT (1) | PT3213187T (zh) |
RU (1) | RU2680737C2 (zh) |
SG (1) | SG11201701612VA (zh) |
TW (1) | TWI608411B (zh) |
WO (1) | WO2016066486A1 (zh) |
ZA (1) | ZA201701306B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898348B2 (en) | 2014-10-22 | 2018-02-20 | International Business Machines Corporation | Resource mapping in multi-threaded central processor units |
JP6314246B2 (ja) * | 2014-11-11 | 2018-04-18 | ルネサスエレクトロニクス株式会社 | 命令実行制御システム及び命令実行制御方法 |
US9513956B2 (en) | 2015-02-10 | 2016-12-06 | International Business Machines Corporation | Compare point detection in multi-threaded computing environments |
US10740102B2 (en) | 2017-02-24 | 2020-08-11 | Oracle International Corporation | Hardware mechanism to mitigate stalling of a processor core |
GB2569098B (en) * | 2017-10-20 | 2020-01-08 | Graphcore Ltd | Combining states of multiple threads in a multi-threaded processor |
CN109144701A (zh) * | 2018-09-05 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种任务流管理方法、装置、设备及系统 |
US11734085B2 (en) | 2020-02-26 | 2023-08-22 | International Business Machines Corporation | Managing concurrent accesses by a set of tasks to a shared resource of a computer system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200945198A (en) * | 2002-03-29 | 2009-11-01 | Intel Corp | System and method for execution of a secured environment initialization instruction |
US20120185678A1 (en) * | 2010-02-19 | 2012-07-19 | International Business Machines Corporation | Hardware thread disable with status indicating safe shared resource condition |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5341482A (en) | 1987-03-20 | 1994-08-23 | Digital Equipment Corporation | Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
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 |
RU2229745C2 (ru) * | 2002-07-24 | 2004-05-27 | Игнатущенко Владислав Валентинович | Параллельная вычислительная система активного видео |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US7873785B2 (en) | 2003-08-19 | 2011-01-18 | Oracle America, Inc. | Multi-core multi-thread processor |
US7802255B2 (en) * | 2003-12-19 | 2010-09-21 | Stmicroelectronics, Inc. | Thread execution scheduler for multi-processing system and method |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US8719819B2 (en) | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
US7664936B2 (en) | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7350034B2 (en) | 2005-06-20 | 2008-03-25 | International Business Machines Corporation | Architecture support of best-effort atomic transactions for multiprocessor systems |
US7624257B2 (en) | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
EP1818812B1 (en) * | 2006-01-25 | 2016-01-06 | Brandt Technologies Limited | System and method for effecting simultaneous control of remote computers |
US8838940B2 (en) | 2006-06-07 | 2014-09-16 | Azul Systems, Inc. | CPU utilization metering on systems that include multiple hardware threads per core |
WO2008120367A1 (ja) * | 2007-03-29 | 2008-10-09 | Fujitsu Limited | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
US7917900B2 (en) * | 2007-03-30 | 2011-03-29 | Microsoft Corporation | Enabling analysis of software source code |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
CN101681261B (zh) | 2007-06-20 | 2014-07-16 | 富士通株式会社 | 运算处理装置及其控制方法 |
US8347312B2 (en) * | 2007-07-06 | 2013-01-01 | Xmos Limited | Thread communications |
US20090100249A1 (en) * | 2007-10-10 | 2009-04-16 | Eichenberger Alexandre E | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core |
US8078843B2 (en) * | 2008-01-31 | 2011-12-13 | International Business Machines Corporation | Facilitating processing in a computing environment using an extended drain instruction |
JP2010039536A (ja) * | 2008-07-31 | 2010-02-18 | Panasonic Corp | プログラム変換装置、プログラム変換方法およびプログラム変換プログラム |
GB2466984B (en) * | 2009-01-16 | 2011-07-27 | Imagination Tech Ltd | Multi-threaded data processing system |
JP5463076B2 (ja) * | 2009-05-28 | 2014-04-09 | パナソニック株式会社 | マルチスレッドプロセッサ |
US8695002B2 (en) | 2009-10-20 | 2014-04-08 | Lantiq Deutschland Gmbh | Multi-threaded processors and multi-processor systems comprising shared resources |
US8612978B2 (en) | 2009-12-10 | 2013-12-17 | Oracle America, Inc. | Code execution utilizing single or multiple threads |
JP2011170619A (ja) * | 2010-02-18 | 2011-09-01 | Toyota Motor Corp | マルチスレッド処理装置 |
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 |
US8560814B2 (en) | 2010-05-04 | 2013-10-15 | Oracle International Corporation | Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations |
US8468531B2 (en) * | 2010-05-26 | 2013-06-18 | International Business Machines Corporation | Method and apparatus for efficient inter-thread synchronization for helper threads |
US8713290B2 (en) | 2010-09-20 | 2014-04-29 | International Business Machines Corporation | Scaleable status tracking of multiple assist hardware threads |
US20130080738A1 (en) | 2011-09-23 | 2013-03-28 | Qualcomm Incorporated | Processor configured to perform transactional memory operations |
US9286072B2 (en) * | 2011-10-03 | 2016-03-15 | International Business Machines Corporation | Using register last use infomation to perform decode-time computer instruction optimization |
US20130246761A1 (en) * | 2012-03-13 | 2013-09-19 | International Business Machines Corporation | Register sharing in an extended processor architecture |
US10430190B2 (en) * | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US10534614B2 (en) * | 2012-06-08 | 2020-01-14 | MIPS Tech, LLC | Rescheduling threads using different cores in a multithreaded microprocessor having a shared register pool |
US9652300B2 (en) | 2012-06-28 | 2017-05-16 | Intel Corporation | Systems, methods, and computer program products for preemption of threads at a synchronization barrier |
US9110718B2 (en) * | 2012-09-24 | 2015-08-18 | Oracle International Corporation | Supporting targeted stores in a shared-memory multiprocessor system |
US9116738B2 (en) * | 2012-11-13 | 2015-08-25 | International Business Machines Corporation | Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system |
US9678897B2 (en) | 2012-12-27 | 2017-06-13 | Nvidia Corporation | Approach for context switching of lock-bit protected memory |
US20140244997A1 (en) * | 2013-02-25 | 2014-08-28 | Qualcomm Incorporated | Emergency mode for iot devices |
US9612811B2 (en) * | 2014-01-21 | 2017-04-04 | Nvidia Corporation | Confluence analysis and loop fast-forwarding for improving SIMD execution efficiency |
JP6330569B2 (ja) * | 2014-08-14 | 2018-05-30 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US9424103B2 (en) * | 2014-09-30 | 2016-08-23 | Hong Kong Applied Science and Technology Research Institute Company Limited | Adaptive lock for a computing system having multiple runtime environments and multiple processing units |
-
2014
- 2014-10-28 US US14/525,800 patent/US9575802B2/en active Active
-
2015
- 2015-03-30 TW TW104110337A patent/TWI608411B/zh active
- 2015-09-07 US US14/846,900 patent/US9582324B2/en active Active
- 2015-10-21 CN CN201580058127.1A patent/CN107111482B/zh active Active
- 2015-10-21 JP JP2017518814A patent/JP6580134B2/ja active Active
- 2015-10-21 SG SG11201701612VA patent/SG11201701612VA/en unknown
- 2015-10-21 KR KR1020177009987A patent/KR101976295B1/ko active IP Right Grant
- 2015-10-21 ES ES15787163T patent/ES2805010T3/es active Active
- 2015-10-21 AU AU2015340844A patent/AU2015340844B2/en active Active
- 2015-10-21 CA CA2961705A patent/CA2961705C/en active Active
- 2015-10-21 EP EP15787163.3A patent/EP3213187B1/en active Active
- 2015-10-21 PT PT157871633T patent/PT3213187T/pt unknown
- 2015-10-21 WO PCT/EP2015/074332 patent/WO2016066486A1/en active Application Filing
- 2015-10-21 RU RU2017103676A patent/RU2680737C2/ru active
-
2017
- 2017-02-21 ZA ZA2017/01306A patent/ZA201701306B/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200945198A (en) * | 2002-03-29 | 2009-11-01 | Intel Corp | System and method for execution of a secured environment initialization instruction |
US20120185678A1 (en) * | 2010-02-19 | 2012-07-19 | International Business Machines Corporation | Hardware thread disable with status indicating safe shared resource condition |
Also Published As
Publication number | Publication date |
---|---|
CA2961705A1 (en) | 2016-05-06 |
WO2016066486A1 (en) | 2016-05-06 |
US20160117192A1 (en) | 2016-04-28 |
ZA201701306B (en) | 2021-08-25 |
ES2805010T3 (es) | 2021-02-10 |
KR20170054488A (ko) | 2017-05-17 |
AU2015340844B2 (en) | 2018-10-18 |
US9582324B2 (en) | 2017-02-28 |
KR101976295B1 (ko) | 2019-05-07 |
TW201616342A (zh) | 2016-05-01 |
SG11201701612VA (en) | 2017-03-30 |
CA2961705C (en) | 2023-04-04 |
RU2017103676A (ru) | 2018-11-29 |
CN107111482B (zh) | 2021-02-05 |
RU2017103676A3 (zh) | 2018-11-29 |
CN107111482A (zh) | 2017-08-29 |
JP2018501535A (ja) | 2018-01-18 |
US20160117191A1 (en) | 2016-04-28 |
EP3213187B1 (en) | 2020-06-24 |
US9575802B2 (en) | 2017-02-21 |
AU2015340844A1 (en) | 2017-03-09 |
EP3213187A1 (en) | 2017-09-06 |
RU2680737C2 (ru) | 2019-02-26 |
PT3213187T (pt) | 2020-07-16 |
JP6580134B2 (ja) | 2019-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI608411B (zh) | 於多執行緒處理器中控制執行緒之執行的電腦系統、電腦程式產品及方法 | |
CN107111483B (zh) | 控制对多线程处理器的共享寄存器的存取的指令 | |
KR101148495B1 (ko) | 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치 | |
TWI533126B (zh) | 執行階段檢測報告 | |
TW201401045A (zh) | 自較低特殊權限狀態控制執行階段檢測設施之操作 | |
TW201403313A (zh) | 執行階段檢測導向取樣 | |
US20140372732A1 (en) | Accelerated reversal of speculative state changes and resource recovery | |
US11182168B2 (en) | Post completion execution in an out-of-order processor design | |
US10496412B2 (en) | Parallel dispatching of multi-operation instructions in a multi-slice computer processor | |
US10296348B2 (en) | Delayed allocation of an out-of-order queue entry and based on determining that the entry is unavailable, enable deadlock avoidance involving reserving one or more entries in the queue, and disabling deadlock avoidance based on expiration of a predetermined amount of time | |
WO2018100456A1 (en) | Memory access control for parallelized processing | |
KR102597201B1 (ko) | 트랜잭션 네스팅 심도 시험 명령 |