TW201610836A - 執行緒暫停處理器、方法、系統與指令 - Google Patents
執行緒暫停處理器、方法、系統與指令 Download PDFInfo
- Publication number
- TW201610836A TW201610836A TW104119283A TW104119283A TW201610836A TW 201610836 A TW201610836 A TW 201610836A TW 104119283 A TW104119283 A TW 104119283A TW 104119283 A TW104119283 A TW 104119283A TW 201610836 A TW201610836 A TW 201610836A
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- thread
- instruction
- end portion
- unit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 87
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000004044 response Effects 0.000 claims abstract description 34
- 230000015654 memory Effects 0.000 claims description 102
- 238000003860 storage Methods 0.000 claims description 22
- 239000000725 suspension Substances 0.000 claims description 18
- 238000004519 manufacturing process Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 39
- 235000012431 wafers Nutrition 0.000 description 15
- 238000007667 floating Methods 0.000 description 13
- 239000003795 chemical substances by application Substances 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 230000009467 reduction Effects 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000007717 exclusion Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000003756 stirring Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 238000012546 transfer Methods 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
- 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/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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種態樣的處理器包括解碼單元,用以從第一執行緒解碼執行緒暫停指令。處理器的後端部分係與解碼單元耦接。處理器的後端部分回應於執行緒暫停指令而用以暫停處理用於執行之第一執行緒的後續指令。後續指令在執行緒暫停指令之後依程式順序發生。除了執行緒暫停指令以外,後端部分回應於執行緒暫停指令而也用以保持處理器之至少大多數的後端部分清空第一執行緒的指令達一段預定時間。大多數可能包括複數個執行單元和指令佇列單元。
Description
本文所述之實施例一般關於處理器。尤其是,本文所述之實施例一般關於在處理器中的暫停執行緒。
軟體多執行緒係一種已用以幫助提高處理器效能的技術。在軟體多執行緒中,碼(例如,應用程式)可能被劃分成多個執行緒。每個執行緒可能代表能夠彼此分離及/或平行執行的指令流或序列。作為一簡單實例,一個執行緒可能處理視頻流的影像,而另一執行緒可能處理視頻流的音頻。
不同的方法可用於處理器硬體以實作多執行緒。一種方法被稱為交錯或時間多執行緒。上述方法的一個實例是時間片多執行緒或時間多工(TMUX)多執行緒,其中單一實體處理器(例如,核心)在交替週期上,或在一固定期間之後於執行緒之間切換。上述方法的另一實例是接通事件多執行緒(SoEMT),其中單一實體處理
器在發生觸發事件(例如,長延遲時間快取未中、分頁錯誤、其他長延遲時間事件或之類)時於執行緒之間切換。在交錯或時間多執行緒中,通常一次只有一執行緒的指令可能在給定管線級中執行。
另一種多執行緒方法被稱為同步多執行緒(SMT)。在SMT中,來自超過一個執行緒的指令可能於給定時間在單一實體處理器(例如,核心)的給定管線級中同時地執行。例如,可能使單一核心對軟體顯現為多個邏輯處理器,其中每個邏輯處理器執行不同的執行緒。核心的一些資源可能專用於給定執行緒或邏輯處理器。例如,通常每個執行緒或邏輯處理器可能維持完整的一組架構狀態。核心的其他資源可能由兩個或更多執行緒或邏輯處理器所共享。例如,依據特定實作,快取、執行單元、分支預測器、解碼器、其他邏輯、或以上之組合可能由在單一實體核心中執行的兩個或更多執行緒所共享。
在多執行緒中的一項挑戰是有效處理旋轉等待迴路。執行緒通常需要與其他執行緒共享資源及/或同步。旋轉等待迴路是一種在多執行緒應用程式中使用的技術,其中一個執行緒等待另一執行緒,例如,用以同步或增益存取共享資源。旋轉等待迴路可能代表常式或碼段,其中執行緒正在緊密的輪詢迴路中存取同步基元(例如,共享鎖、旗號、或互斥量)。例如,邏輯處理器可能執行負載-比較-分支迴路以重覆地比較同步基元,直到它具有期望值為止。邏輯處理器通常能夠非常快速地執行旋轉等
待迴路,其可能消耗大量的功率和執行資源。然而,迅速地執行旋轉等待迴路通常不會提高效能。
暫停或旋轉迴路暗示指令係說明於Intel®64和IA-32架構軟體開發者手冊,序號:325462-049US,2014年2月中。報告暫停指令以提高旋轉等待迴路的效能。也報告暫停指令的額外功能係用以當執行旋轉等待迴路時降低由處理器所消耗的功率量。
美國專利6,671,795描述了一種用於暫停在處理器中之執行的方法和設備。在某種程度上也揭露了暫停指令可能用以暫停一個執行緒之執行以給予另一執行緒優先序或用以省電。
100‧‧‧方法
101-103‧‧‧方塊
210‧‧‧處理器
216‧‧‧第一執行緒
224‧‧‧第二執行緒
220‧‧‧執行緒暫停指令
218‧‧‧先前指令
222‧‧‧後續指令
226‧‧‧指令
212‧‧‧前端部分
228‧‧‧後端部分
214‧‧‧解碼單元
230‧‧‧更名/分配單元
234‧‧‧執行單元
242‧‧‧提交單元
238‧‧‧指令佇列單元
235‧‧‧後端部分
244‧‧‧計時器
246‧‧‧電源管理單元
350‧‧‧總執行緒暫停時間
352‧‧‧指令排除時間
354‧‧‧預定空時間
350-1‧‧‧第一總執行緒暫停時間
350-2‧‧‧第二總執行緒暫停時間
352-1‧‧‧指令排除時間
354-1‧‧‧預定空時間
352-2‧‧‧指令排除時間
354-2‧‧‧預定空時間
356‧‧‧功率降低的重疊時間
410‧‧‧處理器
458‧‧‧控制暫存器
460‧‧‧欄位
520‧‧‧執行緒暫停指令
562‧‧‧運算元
610‧‧‧處理器
620‧‧‧執行緒暫停指令
614‧‧‧解碼單元
664‧‧‧佇列
664-1‧‧‧執行緒1佇列
664-2‧‧‧執行緒2佇列
668‧‧‧選擇單元
630‧‧‧更名/分配單元
634‧‧‧執行單元
672‧‧‧佇列
672-1‧‧‧執行緒1佇列
672-2‧‧‧執行緒2佇列
674‧‧‧選擇單元
642‧‧‧提交單元
CS1‧‧‧第一控制信號
CS2‧‧‧第二控制信號
CS3‧‧‧第三控制信號
670‧‧‧旗標
644‧‧‧計時器
710‧‧‧處理器
728‧‧‧後端部分
712‧‧‧前端部分
790‧‧‧記憶體執行單元
730‧‧‧邏輯
780‧‧‧信號
778‧‧‧後端閒置單元
784‧‧‧前端閒置邏輯
786‧‧‧信號
892‧‧‧方法
893-896‧‧‧方塊
900‧‧‧暫存器架構
910‧‧‧向量暫存器
915‧‧‧寫入遮罩暫存器
925‧‧‧通用暫存器
945‧‧‧純量浮點堆疊暫存器檔案
950‧‧‧MMX填充整數平暫存器檔案
1000‧‧‧處理器管線
1002‧‧‧提取級
1004‧‧‧長度解碼級
1006‧‧‧解碼級
1008‧‧‧分配級
1010‧‧‧更名級
1012‧‧‧排程級
1014‧‧‧暫存器讀取/記憶體讀取級
1016‧‧‧執行級
1018‧‧‧寫回/記憶體寫入級
1022‧‧‧例外處理級
1024‧‧‧提交級
1090‧‧‧處理器核心
1030‧‧‧前端單元
1050‧‧‧執行引擎單元
1070‧‧‧記憶體單元
1032‧‧‧分支預測單元
1034‧‧‧指令快取單元
1036‧‧‧指令轉譯旁視緩衝器
1038‧‧‧指令提取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧更名/分配器單元
1054‧‧‧引退單元
1056‧‧‧排程器單元
1058‧‧‧實體暫存器檔案單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取單元
1076‧‧‧L2快取單元
1100‧‧‧指令解碼器
1102‧‧‧互連網路
1104‧‧‧L2快取的區域子集
1106‧‧‧L1快取
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1106A‧‧‧L1資料快取
1120‧‧‧攪和單元
1122A-B‧‧‧數字轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1200‧‧‧處理器
1202A-N‧‧‧核心
1210‧‧‧系統代理器
1216‧‧‧匯流排控制器單元
1214‧‧‧整合記憶體控制器單元
1208‧‧‧專用邏輯
1206‧‧‧共享快取單元
1212‧‧‧互連單元
1300‧‧‧系統
1310‧‧‧處理器
1315‧‧‧處理器
1320‧‧‧控制器中心
1390‧‧‧圖形記憶體控制器中心
1350‧‧‧輸入/輸出中心
1340‧‧‧記憶體
1345‧‧‧協處理器
1360‧‧‧輸入/輸出裝置
1395‧‧‧連線
1400‧‧‧多處理器系統
1450‧‧‧點對點互連
1470‧‧‧第一處理器
1480‧‧‧第二處理器
1438‧‧‧協處理器
1472‧‧‧整合記憶體控制器單元
1482‧‧‧整合記憶體控制器單元
1476‧‧‧P-P介面
1478‧‧‧P-P介面
1486‧‧‧P-P介面
1488‧‧‧P-P介面
1432‧‧‧記憶體
1434‧‧‧記憶體
1452‧‧‧P-P介面
1454‧‧‧P-P介面
1490‧‧‧晶片組
1439‧‧‧高效能介面
1496‧‧‧介面
1416‧‧‧第一匯流排
1414‧‧‧I/O裝置
1418‧‧‧匯流排橋接器
1420‧‧‧第二匯流排
1415‧‧‧處理器
1422‧‧‧鍵盤及/或滑鼠
1427‧‧‧通訊裝置
1430‧‧‧資料
1428‧‧‧儲存單元
1424‧‧‧音頻I/O
1514‧‧‧I/O裝置
1600‧‧‧SoC
1602‧‧‧互連單元
1610‧‧‧應用處理器
1620‧‧‧協處理器
1630‧‧‧靜態隨機存取記憶體單元
1632‧‧‧直接記憶體存取單元
1640‧‧‧顯示單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二進制碼
1716‧‧‧x86指令集核心
1708‧‧‧指令集編譯器
1714‧‧‧x86指令集核心
1710‧‧‧指令集二進制碼
1712‧‧‧指令轉換器
可藉由參考下面說明和用以繪示實施例的附圖來最佳地了解本發明。在圖中:第1圖係執行執行緒暫停指令之實施例的方法之實施例的方塊流程圖。
第2圖係用以執行執行緒暫停指令之實施例的處理器之實施例的方塊圖。
第3A圖繪示用於執行緒暫停指令之總執行緒暫停時間的實施例。
第3B圖繪示用於第一執行緒之第一執行緒暫停指令的第一總執行緒暫停時間重疊用於第二執行緒之第二執行緒暫停指令的第二總執行緒暫停時間之實施例。
第4圖係具有控制暫存器的處理器之實施例的方塊圖,控制暫存器具有用以指定或以其他方式指示預定空時間的欄位。
第5圖係執行緒暫停指令之實施例的方塊圖,執行緒暫停指令具有用以指定或以其他方式指示預定空時間的運算元。
第6圖係處理器之特定示範實施例的方塊圖,處理器可操作以執行執行緒暫停指令的示範實施例。
第7圖係處理器之實施例的方塊圖,處理器具有後端部分,當後端部分係閒置時,其可操作以回應於執行緒暫停指令而發信號至前端部分及/或記憶體執行單元。
第8圖係執行執行緒暫停指令的方法之實施例的方塊圖,方法包括判斷是否使用較簡單實作或較詳盡實作。
第9圖係根據本發明之一實施例之適當暫存器架構的實施例之方塊圖。
第10A圖係繪示有序管線之實施例與暫存器更名亂序發出/執行管線之實施例的方塊圖。
第10B圖係處理器核心之實施例的方塊圖,處理器核心包括耦接至執行引擎單元的前端單元且兩者都耦接至記憶體單元。
第11A圖係單一處理器核心,與其連結至晶粒上互連網路的連線及其第2級(L2)快取的區域子集之
實施例的方塊圖。
第11B圖係第11A圖的處理器核心之部分分解圖的實施例之方塊圖。
第12圖係可能具有超過一個核心,可能具有整合記憶體控制器,且可能具有整合圖形之處理器的實施例之方塊圖。
第13圖係電腦架構之第一實施例的方塊圖。
第14圖係電腦架構之第二實施例的方塊圖。
第15圖係電腦架構之第三實施例的方塊圖。
第16圖係系統晶片架構之實施例的方塊圖。
第17圖係根據本發明之實施例之使用軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。
本文所揭露的是執行緒暫停指令、用以執行指令的處理器、當執行指令時由處理器所執行的方法、及結合一或更多處理器以執行指令的系統。在下面的說明中,提出許多具體細節(例如,特定指令操作、處理器配置、微型架構細節、操作序列等等)。然而,無須這些具體細節便可實施實施例。在其他例子中,未詳細顯示熟知的電路、結構及技術以免模糊對本說明之了解。
第1圖係執行執行緒暫停指令之實施例的方法100之實施例的方塊流程圖。在各種實施例中,方法可
能藉由處理器、指令處理設備、或其他數位邏輯裝置來執行。
在方塊101中,方法包括從第一執行緒接收執行緒暫停指令。在各種態樣中,可能在處理器、指令處理設備、或其部分(例如,指令提取單元、解碼單元、匯流排介面單元)中接收指令。在各種態樣中,可能從晶粒外來源(例如,記憶體、匯流排或其他互連)、或從晶粒上來源(例如,指令提取單元、指令快取)接收指令。
在方塊102中,回應於執行緒暫停指令(例如,回應於指令之運算碼)而暫停處理用於執行之第一執行緒的後續指令。後續指令係在執行緒暫停指令之後依程式順序發生的指令。
在方塊103中,除了執行緒暫停指令以外,回應於執行緒暫停指令而保持處理器之至少一部分後端部分(例如,至少執行單元和指令佇列單元)清空第一執行緒的指令達一段預定時間及/或一固定期間。
已以相對基本的形式來顯示和說明了方法,雖然操作可能可選地加入方法或從方法移除。舉例而言,可能提取、解碼、亂序地排程指令、可能執行微型架構操作以實作指令等等。在一些實施例中,用以實作指令的微型架構操作可能可選地包括針對第2、6、7、及/或8圖之任一者所顯示和說明。
第2圖係可操作以執行執行緒暫停指令220之實施例的處理器210之實施例的方塊圖。在一些實施例
中,第2圖之處理器可能執行第1圖之操作及/或方法。本文針對第2圖之處理器所述之元件、特徵、及具體可選細節也可選地適用於第1圖之操作及/或方法,其可藉由上述處理器來執行及/或在上述處理器內執行。另外,第1圖之操作及/或方法可能藉由類似或不同處理器或其他設備來執行及/或在類似或不同處理器或其他設備內執行。此外,第2圖之處理器可能執行與第1圖之操作及/或方法相同、類似、或不同的操作及/或方法。
在一些實施例中,處理器210可能是在桌上型電腦、膝上型電腦、或其他電腦中使用之類型的通用處理器(例如,專用微處理器或中央處理單元(CPU))。另外,處理器可能是專用處理器。適當專用處理器之實例包括,但不限於網路處理器、通訊處理器、密碼處理器、圖形處理器、協處理器、嵌入式處理器、數位信號處理器(DSP)、及控制器(例如,微控制器)。處理器可能是各種複雜指令集計算(CISC)處理器、精簡指令集計算(RISC)處理器、極長指令字(VLIW)處理器、以上之各種混合、其他類型的處理器、或具有上述不同處理器之組合之任一者(例如,在不同核心中)。
在操作期間,處理器210可能接收和處理第一執行緒216和第二執行緒224的指令。第一執行緒包括執行緒暫停指令220、在執行緒暫停指令之前依程式順序發生的先前指令218、及在執行緒暫停指令之後依程式順序發生的後續指令222。執行緒暫停指令在本文中可能也
被稱為暫停指令。第二執行緒也包括一組指令226。第一執行緒的指令可能被提供給處理器。
處理器包括前端部分212和後端部分228。前端部分包括解碼單元或解碼器214。解碼單元可能接收和解碼第一和第二執行緒的指令,包括執行緒暫停指令220。執行緒暫停指令可能代表巨集指令、組合語言指令、機器碼指令、或處理器之指令集的其他指令或控制信號。解碼單元可能輸出一或更多微指令、微操作、微碼進入點、解碼之指令或控制信號、或其他相對較低階指令或控制信號,其係從執行緒暫停指令反映、表現、及/或取得。一或更多較低階指令或控制信號可能透過一或更多較低階(例如,電路級或硬體級)操作來實作較高階執行緒暫停指令。解碼單元可能使用各種不同機制來實作,包括但不限於微碼唯讀記憶體(ROM)、查找表、硬體實作、可程式化邏輯陣列(PLA)、及用以實作本領域中所知之解碼單元的其他機制。
在一些實施例中,可能可選地使用指令模擬器、轉譯器、模仿器、解譯器、或其他指令轉換模組而不是將執行緒暫停指令直接地提供給解碼單元。各種類型的指令轉換模組在本領域中係已知的且可能在軟體、硬體、韌體、或以上之組合中實作。在一些實施例中,指令轉換模組可能位於處理器外部,例如,在單獨晶粒上及/或在記憶體中(例如,作為靜態、動態、或運行時間模擬模組)。舉例而言,指令轉換模組可能接收執行緒暫停指令
(其可能屬於第一指令集),且可能模擬、轉譯、模仿、解譯、或以其他方式將執行緒暫停指令轉換成一或更多對應或取得之中間指令或控制信號(其可能屬於不同的第二指令集)。第二指令集的一或更多中間指令或控制信號可能被提供給解碼單元,且可能將它們解碼成可由處理器的本機硬體(例如,管線元件)執行的一或更多較低階指令或控制信號。
再次參考第2圖,處理器也包括與後端部分228耦接的解碼單元214及/或前端部分212。後端部分可能接收一或更多解碼或以其他方式轉換之指令或控制信號,其從執行緒暫停指令表現及/或取得。在所示之實施例中,後端部分包括與解碼單元之輸出耦接的更名/分配單元230、與更名/分配單元之輸出耦接的一或更多執行單元234、及與執行單元之輸出耦接的提交單元242。後端部分也包括一或更多指令佇列單元238,例如,用以在處理器的亂序(OoO)部分中保持所謂的指令池或窗的單元。適當指令佇列單元之實例包括,但不限於重排序緩衝器、保留站等等。
所示之實施例有關亂序(OoO)處理器,雖然本發明之範圍並不以此為限。在OoO處理器中,執行單元可能相對於指令的原始程式順序而執行指令OoO。例如,處理器可能依取決於輸入資料之可用性及/或資源可用性的順序執行指令,而不是依程序順序執行指令。可能執行能夠執行的指令而沒有不當延遲,而不是抑制其在資
料及/或資源上等待的執行。指令可能在指令佇列單元238中被儲存或緩衝,直到它們準備要被執行單元執行為止。在執行之後,處理器可能需要重排序OoO執行結果及/或架構狀態並以原始程序順序而不是依實際上執行指令的順序呈現它們(例如,給軟體、使用者等等)。為了實現此,指令及其執行結果可能在指令佇列單元238被儲存或緩衝,且處理器的邏輯可能重排序執行結果及/或架構狀態。提交單元可能依原始程式順序控制架構狀態之更新。在一態樣中,提交邏輯可能等待提交每個指令,直到已提交依原始程式順序在它前面之所有較舊/先前指令為止。
在一些實施例中,處理器的後端部分可能可操作以回應於執行緒暫停指令(例如,回應於從執行緒暫停指令解碼的一或更多控制信號)而暫停或延遲處理用於執行之第一執行緒的後續指令。這可能以不同方式在不同實施例中實作。
在一些實施例中,從執行緒暫停指令解碼的控制信號可能停頓或留存於特定管線級(例如,在處理器的後端部分中),且藉此防止進一步透過管線前進。將控制信號停頓在處理器之有序部分中可能也阻止或防止透過從第一執行緒之(在執行緒暫停指令依程式順序發生的)所有後續指令解碼之控制信號的管線前進。這可能有效地暫停或處理用於執行之第一執行緒的後續指令。在其他實施例中,可能使用其他方法以暫停或延遲處理用於執行之第一執行緒的後續指令而不是停頓控制信號。例如,控制
信號為了透過管線前進所需的資源可能被迫顯現為充滿的或不可用的。作為一實例,亂序指令排程可能被停止及/或保留站可能被迫顯現為不可用的。另外其他方法對本領域之那些技藝者將顯而易見且具有本揭露之利益。
再次參考第2圖,在所示之示範實施例中,控制信號被停頓232在處理器之後端部分中的更名/分配單元230。更名/分配單元通常包括在位於處理器的後端之起始的有序級中且功能上設置於解碼單元214與執行單元234之間。更名/分配單元可能執行暫存器更名及某些資源之分配(例如,暫存器檔案項目、負載緩衝器、儲存暫存器等等)。另外,控制信號可能停頓或留存於(例如,在處理器之後端部分中)的其他管線級。值得注意的是也有可能將控制信號停頓在處理器之前端部分212中。例如,有可能通常將控制信號停頓在解碼單元214。最後,若控制信號被停頓得夠長,則後端部分228應排除來自暫停之第一執行緒的所有先前控制信號。然而,伴隨停頓在處理器之前端部分中之一個可能的缺點在於,特別若管線是相對深,後端部分排除來自暫停之第一執行緒的這些先前控制信號可能花費顯著的時間量。用以排除這些指令的此額外時間可能傾向於減少可用於功率降低的總時間量(例如,處理器的時脈閘控閒置部分)。換言之,將控制信號停頓在處理器的後端部分中可能為功率降低提供相對更多的時間。
儘管暫停第一執行緒,提交單元242仍可能
繼續提交第一執行緒的所有先前指令218(即,在執行緒暫停指令之前依原始程式順序發生的指令)。最後,除了仍被有序地執行以暫停第一執行緒的執行緒暫停指令以外,至少一部分,但通常是處理器之大多數的後端部分235可能變成清空所有這些先前指令(例如,從其解碼的控制信號)。在所示之實例中,大多數部分235包括例如所有執行單元234和至少一些或所有大多數指令佇列單元238,用以提供用於亂序指令執行的指令池或窗。特定單元或資源將取決於特定實作(例如,停頓係實作於哪個管線級)。
在一些實施例中,除了暫停處理用於執行之第一執行緒的後續指令之外,除了執行緒暫停指令以外,處理器的後端部分可能也可操作以回應於執行緒暫停指令(例如,回應於從執行緒暫停指令解碼的一或更多控制信號)而保持處理器之至少一部分,或通常是至少大多數的後端部分235達一段預定、確定、或固定期間。大多數部分包括超過基於總電晶體量、總積體電路量、或總晶粒上表面面積之至少一者之後端部分的一半。在所示之實例中,大多數部分235包括例如所有執行單元234和至少一些或所有大多數指令佇列單元238,用以提供用於亂序指令執行的指令池或窗。
在一些實施例中,當處理器之後端部分的部分清空來自第一執行緒之控制信號的預定時間可能以計時器244來實作。適當計時器之實例包括,但不限於正向計
時器、反向計時器、正向計數器、反向計數器、增量邏輯、及減量邏輯。在一些實施例中,在大多數部分235(例如,包括執行單元和更多功率消耗的指令佇列單元)已實質上完成清空從第一執行緒之先前指令218解碼的控制信號之後,後端部分可能可操作以回應於執行緒暫停指令而啟動或起動計數器244。以此方式,計數器可能用以計數一固定、預定、或確定時間,其相對更準確地反映若未執行任何其他執行緒(例如,在單執行緒模式中)則這些部分被清空及/或將為閒置的實際時間。有利地,當這些部分清空來自第一執行緒的所有先前指令時,這可能確保或保證一預定、固定、或確定最小時間。
值得注意的是也有可能啟動在管線之前端部分中的計時器。例如,可能回應於解碼執行緒暫停指令而啟動計時器。然而,伴隨這種方法之一項可能的缺點在於當從先前指令218解碼的控制信號仍存在於處理器之後端部分中執行解碼執行緒暫停指令而啟動計時器。例如,執行單元234、指令佇列單元238等可能仍包括這些控制信號。即使在單執行緒模式中,執行單元和指令佇列單元通常將不是閒置的,反而將仍主動處理這些控制信號。即使在暫停第一執行緒之後,執行單元和指令佇列單元通常將仍無法閒置,直到這些控制信號具有時間以透過隨時間被提交而從後端部分排除為止。用於此的時間量傾向於為可變的。因此,當後端的部分實際上清空來自第一執行緒的控制信號時,在解碼執行緒暫停指令時啟動或起動計時器
通常表示較不準確的時間測量(例如,且可以是在單執行緒模式中閘控的時脈)。
在一些情況中,暫停第一執行緒216可能用以提高一或更多其他執行緒(例如,第二執行緒224)的效能。例如,在同步多執行緒(SMT)模式中,第一執行緒216和第二執行緒224兩者可能共享具有前端部分212和後端部分228之核心的某些資源。例如,第一和第二執行緒可能共享執行單元234、指令佇列單元238、提交單元242等等。由於共享這些資源,執行緒可能競爭這些資源且可能稍微更緩慢地執行每個執行緒。在一些實施例中,當暫停第一執行緒時,可能完全或幾乎完全地藉由第二執行緒來釋放這些資源用於使用。這可能有助於提高第二執行緒之執行的效能或速度。舉例而言,當它正執行旋轉等待迴路時暫停第一執行緒可能是適當的且通常無論如何將不能夠使用這些資源以執行有用的工作。這些資源可能因此更好地用以藉由完全地給予它們第二執行緒來提高整體效能。有利地,在這種情況中,暫停指令可能有助於透過更好/更聰明的資源利用來提高整體效能。
在其他情況中,暫停第一執行緒216可能用以減少功率消耗。例如,在單執行緒模式中,只有第一執行緒216而沒有其他執行緒可能運行在具有前端部分212和後端部分228的核心上。第一執行緒可能具有專門使用執行單元234、指令佇列單元238、提交單元242等等。在一些實施例中,當暫停第一執行緒時,處理器之後端部
分的至少一部分可能完全地排除或清空來自第一執行緒的所有控制信號(除了執行緒暫停指令本身的控制信號以外),如上所述。例如,執行單元234和指令佇列單元238可能是空的。當這些資源變空時,它們也可能變得閒置,因為它們並不執行任何處理或被使用(例如,執行單元並未被使用且係閒置的)。在一些實施例中,藉由這些單元的功率消耗可能當它們是空的或閒置的時被減少。例如,在一些實施例中,與後端部分耦接的電源管理單元246可能判定這些資源(例如,執行單元234、指令佇列單元238)係閒置的,且可能藉由停止或閘控將時脈信號傳送至這些資源來減少這些資源的功率消耗。這可能有助於減少功率消耗。舉例而言,當它正執行旋轉等待迴路時暫停第一執行緒可能是適當的,且通常無論如何將不能夠使用這些資源以執行有用的工作。可能藉由對這些資源停止或閘控時脈來實現省電,而不是當它們被使用時計時這些資源。
在另外其他情況中,可能使用上述兩種方法之組合。例如,在同步多執行緒(SMT)模式中,第一執行緒216和第二執行緒224兩者可能共享具有前端部分212和後端部分228之核心的某些資源。若僅暫停其中一個執行緒(例如,第一執行緒),則可能相對完全地由其他非暫停之執行緒(例如,第二執行緒)使用資源。另外,在當同時暫停所有執行緒(例如,兩個執行緒正同時執行具有重疊暫停期間的旋轉等待迴路)時的期間,資源
(例如,執行單元234、指令佇列單元238)可能清空來自所有執行緒的所有控制信號,且可能變成閒置的。在上述情況中,電源管理單元246可能偵測閒置且採取功率降低動作(例如,停止或閘控傳送至這些閒置資源的時脈)。
如上所述,在一些實施例中,執行緒暫停指令可能迫使或至少導致允許功率降低(例如,關閉時脈)的條件。在一些實施例中,執行緒暫停指令本身可能不直接地停止任何功率傳送或使任何時脈被閘控或停止。反而,電源管理單元246(其可能可選地是未直接地由執行緒暫停指令所控制之傳統的功率管理單元)可能使用現有的及/或傳統的功率降低機制(例如,基於閒置的時脈閘控)以減少功率。暫停指令可能迫使或至少使至少一部分,通常是至少大多數的後端部分235清空來自暫停之執行緒的所有指令。在當上述部分完全地清空所有指令且閒置時,電源管理單元246可能可操作以偵測這些部分係不活動及/或閒置的且停止其時脈驅動器。在一些實施例中,執行緒暫停指令可能被設計或打算用以智能地與現有的功率管理機制一起相互影響或工作以導致暫停處理執行緒的指令,且也排除或清空處理器的一部分以建立可由導致時脈閘控之功率管理機制偵測的閒置。以此方式,執行緒暫停指令可能被視為功率降低支援的執行緒暫停指令,以此方式當沒有其他非暫停之執行緒係活動的時,它們操作支援或輔助功率降低。
處理器可能包括具體或特定邏輯(例如,電晶體、積體電路、或可能結合韌體(例如,儲存在非揮發性記憶體中的指令)的其他硬體及/或軟體),其可操作以回應於及/或由於執行緒暫停指令而執行執行緒暫停指令及/或暫停執行緒之執行。在一些實施例中,處理器可能包括針對第6、7圖之一或更多者所顯示和說明的單元、電路、或邏輯,雖然本發明之範圍並不以此為限。
為了避免模糊本說明,已顯示和說明了相對簡單的處理器210。在其他實施例中,處理器可能可選地包括其他熟知的處理器元件。這類元件之許多不同的組合和配置係適當的。實施例並不限於任何已知的組合或配置。再者,實施例可能包括在具有多個核心、邏輯處理器、或執行引擎(其中之至少一者具有用以執行執行緒暫停指令之實施例的邏輯)的處理器中。
第3A圖繪示用於執行緒暫停指令之總執行緒暫停時間350的實施例。總執行緒暫停時間包括指令排除時間352和預定空時間354。指令排除時間代表在處理用於執行的暫停之執行緒的指令被提交之後,用於先前指令的控制信號在執行緒暫停指令之前依程式順序發生以從處理器管線排除(例如,藉由被提交)的時間。預定空時間354週期代表當處理器管線清空來自先前指令的這些控制信號時起始之固定、預定、或確定時間。
第3B圖繪示用於第一執行緒之第一執行緒暫停指令的第一總執行緒暫停時間350-1重疊用於第二執行
緒之第二執行緒暫停指令的第二總執行緒暫停時間350-2之示範實施例。第一總執行緒暫停時間包括指令排除時間352-1和預定空時間354-1。同樣地,第二總執行緒暫停時間包括指令排除時間352-2和預定空時間354-2。用於功率降低的重疊時間356顯示預定空時間354-1、354-2之部分(其在實際時間內彼此重疊)。這代表可用於功率降低的時間量,例如,藉由對由第一和第二執行緒所使用的資源停止或閘控時脈信號。
提供用於執行緒暫停指令之預定空時間(例如,預定空時間354)的不同方式係可能的。第4-5圖繪示適當方法之實例。
第4圖係具有控制暫存器458的處理器410之實施例的方塊圖,控制暫存器458具有用以指定或以其他方式指示預定空時間(例如,預定空時間354)的欄位460。在一些實施例中,預定空時間可能在製造處理器時藉由處理器製造者來配置在控制暫存器中,且可能不可在使用期間被重新配置及/或藉由終端使用者來重新配置。在其他實施例中,預定空時間可能可在使用期間被配置及/或可藉由終端使用者來配置。例如,特權級指令(例如,可僅存取作業系統、超管理器、或其他特權軟體)或可能包括可存取使用者級應用程式的使用者級指令以配置或重新配置預定空時間。
第5圖係執行緒暫停指令520之實施例的方塊圖,執行緒暫停指令520具有用以明確地指定或以其他
方式指示預定空時間(例如,預定空時間354)的運算元562。運算元可能代表指令的一或更多位元或欄位。在一些實施例中,一或更多位元或欄位指示具有指定或指示預定空時間之值的暫存器或其他儲存位置。在其他實施例中,一或更多位元或欄位本身提供指定或指示預定空時間的值。例如,執行緒暫停指令之立即值可能指定或以其他方式指示預定空時間。無論值是否通過暫存器或其他儲存位置來直接或間接地提供在指令中,值可能明確地指定預定空時間(例如,明確地指定要用於預定空時間的一些時脈週期),或以其他方式指示預定空時間(例如,在一些不同預定空時間之間進行選擇的值)。例如,執行緒暫停指令可能具有兩個位元以在四個不同預定空時間之任一者之間進行選擇或指示四個不同預定空時間之任一者。作為一具體實例,2位元欄位可能具有用以選擇0週期之預定空時間的值00、用以選擇32週期之預定空時間的值01、用以選擇64週期之預定空時間的值10、及用以選擇128週期之預定空時間的值11。
將了解上述時間僅僅是實例,且本發明之範圍並不限於預定空時間之任何已知值,雖然通常時間不應為太長或太短。若時間太長,則暫停之執行緒可能錯過抓住釋放同步基元的機會。若時間太短,則可能降低功率減少的可能性。另外,用於預定空時間的最佳時間量可能取決於使用共享同步基元的處理器數量。例如,若大量處理器正在共享同步基元上等待,則使用太長的預定空時間可
能傾向於藉由使暫停之執行緒錯過取得鎖定的機會來降體整體系統效能。本領域之那些技藝者將了解適當的時間量可能藉由各種方法(例如,模擬、調諧後矽等等)來估計或判定。在一些實施例中,可能可選地使用在約0至約256時脈週期中、或從約32至約128時脈週期之範圍中的任何值,雖然本發明之範圍並不以此為限。
第6圖係處理器610之詳細示範實施例的方塊圖,處理器610可操作以執行執行緒暫停指令620的示範實施例。處理器包括解碼單元614和預更名/分配佇列664。佇列664被劃分成執行緒1佇列664-1,其對應於且係用以儲存來自第一執行緒(即,執行緒1)的控制信號、及執行緒2佇列664-2,其對應於且係用以儲存來自第二執行緒(即,執行緒2)的控制信號。多工器或其他選擇單元668係用以從來自佇列664的執行緒1或執行緒2選擇控制信號,且將它們提供給處理器的更名/分配單元630。處理器也包括一或更多執行單元634和預提交佇列672。預提交佇列同樣被劃分成執行緒1佇列672-1,其對應於且係用以儲存來自執行緒1的控制信號、及執行緒2佇列672-2,其對應於且係用以儲存來自執行緒2的控制信號。第二多工器或其他選擇單元674係用以從來自佇列672的執行緒1或執行緒2選擇控制信號,且將它們提供給處理器的提交單元642。
將了解解碼單元614、更名/分配單元630、執行單元634、及提交單元642可能可選地與本文別處(例
如,結合第2圖)所述之對應命名的單元類似、或相同,且可能具有類似的變化和替代方案。為了避免混淆本說明,下面的論述將傾向於強調所示之實施例的新或額外態樣,而不是重覆可能可選地為相同或類似的所有態樣。另外,所述之處理器係雙執行緒的,雖然在其他實施例中,處理器可能可選地具有三個或更多硬體執行緒。
第一執行緒(即,執行緒1)的執行緒暫停指令620可能被提供給解碼單元614。解碼單元可能將執行緒暫停指令解碼成一些控制信號。在特定所述之示範實施例中,控制信號包括第一控制信號(CS1)、第二控制信號(CS2)、及第三控制信號(CS3)。在一些實施例中,這些控制信號之各者可能代表微操作或micro-op。在其他架構中,反而可能使用其他類型的控制信號。
CS1可能被提供給預更名/分配佇列664的執行緒1佇列664-1。選擇單元668可能選擇CS1用於分配且可能將其提供給更名/分配單元630。在一些實施例中,如在標號(1)中所示,當CS1經過分配時,它可能設定旗標670(例如,計分板、一或更多位元等等)。在一些實施例中,設定旗標可能防止進一步分配來自對應之執行緒(即,執行緒1)的控制信號。第二控制信號(CS2)可能被提供給預更名/分配佇列664的執行緒1佇列664-1。在一些實施例中,如在標號(2)中所示,由於當分配時由第一控制信號(CS1)所設定的設定旗標670,CS2可能停頓於預更名/分配佇列664之執行緒1佇列664-1
中。停頓或抑制CS2可能有效地阻礙分配來自執行緒1的控制信號,使得沒有比通過管線往執行繼續進行的執行緒暫停指令更新的其他控制信號。在這種情況中,停頓係在分配時,雖然本發明之範圍並不以此為限。
CS1可能接著繼續進行至流過通過執行單元634、佇列672的管線且被提交單元642提交。在一些實施例中,如在標號(3)中所示,當提交CS1時,控制信號CS1可能啟動或起始空計時器644。在一些實施例中,空計時器可能是硬體計時器(例如,遞增或遞減計數器),其一般部署於管線之提交級。在一些實施例中,處理器可能包括上述空計時器預硬體執行緒。在一些實施例中,空計時器可能停頓或防止從對應之執行緒(即,在這種情況中是執行緒1)引退後續控制信號達一段預定空時間。如在標號(4)中所示,當提交CS1時,它可能重設旗標670。
在一些實施例中,在預更名/分配佇列664與提交單元642的輸出之間的管線級可能在提交CS1時清空來自執行緒1的控制信號。例如,CS1和CS2可能是連續的控制信號。提交單元可能有序地提交指令,使得可能在提交CS1之前提交來自執行緒1的所有先前指令。此外,由於CS1和CS2是連續的控制信號,因此沒有其他控制信號係在它們之間的管線中。CS2由於旗標670而從分配被抑制。藉此,前述管線級有效地排除或清空來自執行緒1的控制信號,除了CS1和CS2以外。
在一些實施例中,當提交CS1,且如在標號(4)中所示地重設旗標時,可能分配CS2。在一些實施例中,如在標號(5)中所示,當分配CS2時,可能再次設定旗標670,使得阻止分配來自執行緒1的後續控制信號。CS2可能接著通過管線而繼續進行。如在標號(6)中所示,CS2可能停頓或抑制於預提交佇列672之執行緒1佇列672-1中,而空計時器644計數或計時預定空時間。當空計時器已計數或計時預定空時間時,接著選擇單元674可能選擇CS2且將其提供給提交單元642。
在一些實施例中,如在標號(7)中所示,由於在分配CS2期間在標號(5)中所設定的設定旗標670,CS3可能停頓或抑制於預更名/分配佇列664之執行緒1佇列664-1中。在一些實施例中,如在標號(8)中所示,當提交CS2時,可能重設旗標670。這可能允許CS3,以及用於來自執行緒1之後續指令的控制信號要被分配且自由地流過管線。藉此,暫停執行緒1的時期可能回應於執行緒暫停指令(例如,回應於引退從執行緒暫停指令解碼的控制信號(例如,CS2))而結束。
第7圖係處理器710之實施例的方塊圖,處理器710包括後端部分728,當後端部分係閒置時,其可操作以回應於執行緒暫停指令而可選地發信號至前端部分712及/或記憶體執行單元790。後端部分包括單元或邏輯730(例如,更名/分配單元),其可操作以回應於執行緒暫停指令而暫停處理執行緒的後續指令。這可能實質上被
執行,如本文別處所述。如前面所提及,至少一部分,通常是處理器之至少大多數的後端部分可能變成清空來自此暫停之執行緒的指令。當沒有任何其他執行緒主動地被處理器的後端部分處理時(例如,在單執行緒模式中或當也暫停、停頓、或停止所有其他執行緒時),這些部分可能也變得閒置或不活動的。這也可能發生,如本文別處所述。
將執行緒暫停或停頓在後端部分中可能也傾向於引起或促進隨之發生地將暫停之執行緒的指令及/或控制信號流暫停或停頓在處理器之前端部分中。由於控制信號無法過去停頓在後端部分728中,此停頓或暫停前端單元可能是由於一種背壓782。雖然處理器的前端部分通常不會是空的,但它可能由於背壓而變得閒置或不活動。當後端部分係閒置或不活動時,記憶體執行單元790可能也變得閒置或不活動。
現在,前端部分712不一定能夠自動地停止其時脈,即使當它係閒置或不活動。例如,前端部分若它預期或可能期望來自需要被處理之後端部分728的某些信號或事件則可能需要保持其時脈進行。舉例而言,上述事件可能包括,但不限於跳躍錯誤預測清除,其可能當所執行的跳躍被解析為錯誤預測時發生、例外清除,其可能當指令提交時發生、或其他清除事件。
在一些實施例中,在當後端部分變得閒置時左右的時間(例如,就在它變得閒置之前、在它變得閒置
之後等),後端部分可能發信號780至前端部分712。例如,後端閒置單元778或其他邏輯可能發信號至前端閒置邏輯784或其他邏輯。信號可能在不同實施例中進行各種不同的指示。舉例而言,信號可能指示後端部分將是閒置的,可能指示後端部分將不提供需要注意前端部分的事件、後端部分認為前端部分可能停止其時脈的再保證或之類。信號可能幫助前端部分知道它可能安全地停止其時脈。若沒有這樣的信號,它也許不可能使前端部分停止其時脈及/或它可能不容易使前端部分停止其時脈及/或前端部分可能無法停止其時脈達一段長時間,這取決於特定實作。在一些實施例中,信號可能可選地指示一些時脈信號,通知後端部分將停止其時脈及/或將不需要前端部分。
在一些實施例中,在當後端部分變得閒置時左右的時間(例如,就在它變得閒置之前、在它變得閒置之後等),後端部分可能發信號786至記憶體執行單元790。例如,後端閒置單元778或其他邏輯可能發信號至記憶體執行單元閒置邏輯788或其他邏輯。信號可能在不同實施例中進行類似於上面針對前端部分所述之各種不同的指示。舉例而言,信號可能指示後端部分將是閒置的,可能指示後端部分將不提供需要注意記憶體執行單元的事件、後端部分認為記憶體執行單元可能停止其時脈的再保證或之類。信號可能幫助記憶體執行單元知道它可能安全地停止其時脈。若沒有這樣的信號,它也許不可能使記憶
體執行單元停止其時脈及/或它可能不容易使記憶體執行單元停止其時脈及/或記憶體執行單元可能無法停止其時脈達一段長時間,這取決於特定實作。在一些實施例中,信號可能可選地指示一些時脈信號,通知後端部分將停止其時脈及/或將不需要記憶體執行單元。
第8圖係執行執行緒暫停指令的方法892之實施例的方塊流程圖。可能在處理器、指令處理設備、或其他數位邏輯裝置中執行方法。方法包括在方塊893中,將執行緒暫停指令解碼成一組控制信號。可能解碼指令,如本文別處所述。
在方塊894中,這組控制信號的一或更多控制信號可能判斷執行緒暫停指令的相對較簡單實作是否為足夠的,或判斷是否應執行執行緒暫停指令的相對較詳盡實作(例如,使用微碼)。在方塊894中進行判斷的方式通常取決於特定實作及其中執行方法之處理器/設備的架構特徵。舉例而言,某些架構特徵、增強、或擴展(例如,支援虛擬化(例如,Intel®虛擬化技術)、支援異動執行(例如,限制異動記憶體)、或其他架構特徵)可能在執行緒暫停指令的實作上施加額外處理。例如,在Intel®64和IA-32架構軟體開發者手冊,序號:325462-049US,2014年2月中說明暫停指令的效能可能使異動執行被中斷。也在此參考中說明暫停指令可能或可能不會使虛擬機退出。因此,在一些實施例中,在方塊894中的判定可能包含判斷是否正使用虛擬及/或判斷是否正使用異
動執行。例如,這可能包括檢查在一或更多控制暫存器中的一或更多位元以查看是否正使用這些特徵。在其他實施例中,其他架構特徵或擴展可能影響執行緒暫停指令的實作且因此是相關的。
若在方塊894中的判定為較簡單實作係足夠的(即,判定是「是」),例如,若未使用將複雜化執行緒暫停指令之實作的架構特徵(例如,未使用虛擬化以及異動執行),則方法可能前進至方塊896。在方塊896中,執行緒暫停指令可能以相對較簡單實作來實作。例如,在一些實施例中,在方塊893中解碼的這組控制信號之一或更多剩餘的控制信號可能用以實作執行緒暫停指令。
相反地,若在方塊894中的判定為較簡單實作係不足夠的(即,判定是「否」),例如,若正使用將複雜化執行緒暫停指令之實作的架構特徵(例如,正使用虛擬化及/或正使用異動執行),則方法可能前進至方塊895。在方塊895中,方法可能回復至以相對較詳盡實作來實作執行緒暫停指令。例如,在一些實施例中,方法可能回復至使用微碼實作來實作執行緒暫停指令。舉例而言,較詳盡實作可能包括額外操作,用以鑑於複雜化其實作的一或更多架構特徵而確認正確地實作暫停指令。在一態樣中,這些額外操作可能是困難的,或在一些情況中對在由解碼器所解碼的解碼之控制信號(例如,微操作)中實作是不可行的。例如,解碼器可能無法解碼足夠的控制
信號以實作所有需要的檢查及其他操作。在一些實施例中,較詳盡實作可能需要更多時間及/或執行更多操作,或以其他方式傾向於減少執行緒暫停指令的省電機會。
有利地,方法可能允許在適當時機時(例如,當並非正使用複雜的架構特徵時)使用執行緒暫停指令的相對較簡單實作。這可能有助於減少執行暫停指令所需的時間和資源量,這可能允許更快地降低功率或更快地騰出用於另一執行緒的空間。當較簡單實作並不適當時,方法可能回復至較詳盡實作(例如,其更嚴格地處理複雜的架構特徵)。可能當需要它時而不是當不需要它時選擇性地使用上述較詳盡實作,且可能透過較簡單實作來節省更多功率。
第9圖係根據本發明之一實施例之暫存器架構900的方塊圖。在所示之實施例中,有32個512位元寬的向量暫存器910;這些暫存器被引用為zmm0至zmm31。較低12zmm暫存器的低序256位元係覆蓋在暫存器ymm0-12上。較低12zmm暫存器的低序128位元(ymm暫存器的低序128位元)係覆蓋在暫存器xmm0-11上。
寫入遮罩暫存器911-在所示之實施例中,有8個寫入遮罩暫存器(k0至k7),每個大小為64位元。在另一實施例中,寫入遮罩暫存器911的大小為12位
元。如之前所述,在本發明之一實施例中,向量遮罩暫存器k0不能作為寫入遮罩;當通常指示出k0係用於寫入遮罩的編碼時,便選擇0xFFFF的固線式寫入遮罩,有效地去能對此指令的寫入遮罩。
通用暫存器925-在所示之實施例中,有16個64位元的通用暫存器,其與現存之x86定址模式一起使用以定址記憶體運算元。這些暫存器所引用的名稱為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R11。
純量浮點堆疊暫存器檔案(x87堆疊)945,於其上堆疊MMX填充整數平暫存器檔案950-在所示之實施例中,x87堆疊係為8元素堆疊,用來使用x87指令集擴充對32/64/80位元浮點數資料執行純量浮點數操作;而MMX暫存器係用來對64位元填充整數資料執行操作,以及對在MMX與XMM暫存器之間執行的一些操作保持運算元。
本發明之其他實施例可能使用較寬或較窄的暫存器。此外,本發明之其他實施例可能使用更多、更少、或不同的暫存器檔案和暫存器。
可能以不同方式、針對不同目的、且在不同處理器中實作處理器核心。例如,上述核心之實作可能包括:1)預期用於通用計算的通用有序核心;2)預期用於
通用計算的高效能通用亂序核心;3)預期主要用於圖形及/或科學(產量)計算的專用核心。不同處理器之實作可能包括:1)包括預期用於通用計算的一或更多通用有序核心及/或預期用於通用計算的一或更多通用亂序核心之CPU;及2)包括預期主要用於圖形及/或科學(產量)的一或更多專用核心之協處理器。上述不同的處理器導致不同的電腦系統架構,其可能包括:1)在與CPU分離之晶片上的協處理器;2)在與CPU之相同封裝中之獨立晶粒上的協處理器;3)在與CPU相同之晶粒上的協處理器(在這種情況下,這類協處理器有時稱為專用邏輯,如整合圖形及/或科學(產量)邏輯、或專用核心);及4)系統晶片,其可能在相同晶粒上包括所述之CPU(有時稱為應用核心或應用處理器)、上述協處理器、及額外功能。在處理器和電腦架構示範的描述之後,接下來說明核心架構示範。
第10A圖係繪示根據本發明之實施例之示範有序管線與示範暫存器更名、亂序發出/執行管線兩者的方塊圖。第10B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖。第10A-B圖中的實線框繪示有序管線和有序核心,而非必要附加的虛
線框繪示暫存器更名、亂序發出/執行管線和核心。假定有序態樣係亂序態樣之子集,將說明亂序態樣。
在第10A圖中,處理器管線1000包括提取級1002、長度解碼級1004、解碼級1006、分配級1008、更名級1010、排程(也稱為調度或發出)級1012、暫存器讀取/記憶體讀取級1014、執行級1016、寫回/記憶體寫入級1018、例外處理級1022、及提交級1024。
第10B圖顯示處理器核心1090,包括前端單元1030,耦接至執行引擎單元1050,且這兩者都耦接至記憶體單元1070。核心1090可能是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或任一核心類型。作為另一種選擇,核心1090可能是專用核心,諸如,網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或之類。
前端單元1030包括分支預測單元1032,耦接至指令快取單元1034,其係耦接至指令轉譯旁視緩衝器(TLB)1036,其係耦接至指令提取單元1038,其係耦接至解碼單元1040。解碼單元1040(或解碼器)可能解碼指令,並產生作為輸出的一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或以其他方式反映原始指令、或從原始指令取得。解碼單元1040可能使用各種不同機制來實作。適當機制之實例包括,但不限於查找表、硬體實作、可程式化邏輯陣
列(PLA)、微碼唯讀記憶體(ROM)等等。在一實施例中,核心1090包括微碼ROM或儲存用於某些巨集指令之微碼的其他媒體(例如,在解碼單元1040中或以其他方式在前端單元1030內)。解碼單元1040係耦接至執行引擎單元1050中的更名/分配器單元1052。
執行引擎單元1050包括更名/分配器單元1052,耦接至引退單元1054及一組一或更多排程器單元1056。排程器單元1056代表任何數量的不同排程器,包括保留站、中央指令視窗等等。排程器單元1056係耦接至實體暫存器檔案單元1058。每個實體暫存器檔案單元1058代表一或更多實體暫存器檔案,其之不同者儲存一或更多不同的資料類型,如純量整數、純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數、狀態(例如,指令指標,其係將被執行之下一個指令的位址)等等。在一實施例中,實體暫存器檔案單元1058包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可能提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。引退單元1054重疊實體暫存器檔案單元1058以繪示可能實作暫存器更名和亂序執行的各種方式(例如,使用重排序緩衝器和引退暫存器檔案;使用未來檔案、歷史緩衝器、和引退暫存器檔案;使用暫存器映射及暫存器池;等等)。引退單元1054和實體暫存器檔案單元1058係耦接至執行叢集1060。執行叢集1060包括一組一或更多執行單元1062和一組一或更多記憶體
存取單元1064。執行單元1062可能對各種類型的資料(例如,純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數)執行各種操作(例如,移位、加法、減法、乘法)。儘管一些實施例可能包括一些專用於特定功能或功能組的執行單元,但其他實施例可能包括只有一個執行單元或全部執行所有功能的多個執行單元。排程器單元1056、實體暫存器檔案單元1058、和執行叢集1060被顯示為可能是複數的,因為某些實施例對某些類型的資料/操作建立獨立管線(例如,純量整數管線、純量浮點數/填充整數/填充浮點數/向量整數/向量浮點數管線、及/或各具有其自己之排程器單元的記憶體存取管線、實體暫存器檔案單元、及/或執行叢集-且在獨立的記憶體存取管線之情況下,實作了某些實施例是只有此管線的執行叢集具有記憶體存取單元1064。)也應了解這裡使用了獨立管線,這些管線之一或更多者可能是亂序發出/執行且其餘的是有序的。
這組記憶體存取單元1064係耦接至記憶體單元1070,其包括耦接至資料快取單元1074的資料TLB單元1072,資料快取單元1074耦接至第2級(L2)快取單元1076。在一示範實施例中,記憶體存取單元1064可能包括載入單元、儲存位址單元、及儲存資料單元,各耦接至記憶體單元1070中的資料TLB單元1072。指令快取單元1034更耦接至記憶體單元1070中的第2級(L2)快取單元1076。L2快取單元1076係耦接一或更多其他級的快
取且最終耦接至主記憶體。
舉例而言,示範暫存器更名、亂序發出/執行核心架構可能如下實作管線1000:1)指令提取1038執行提取和長度解碼級1002和1004;2)解碼單元1040執行解碼級1006;3)更名/分配器單元1052執行分配級1008和更名級1010;4)排程器單元1056執行排程級1012;5)實體暫存器檔案單元1058和記憶體單元1070執行暫存器讀取/記憶體讀取級1014;執行叢集1060執行執行級1016;6)記憶體單元1070和實體暫存器檔案單元1058執行寫回/記憶體寫入級1018;7)各種單元可能包含在例外處理級1022中;及8)引退單元1054和實體暫存器檔案單元1058執行提交級1024。
核心1090可能支援包括本文所述之指令的一或更多指令集(例如,x86指令集(具有已加入較新版本的一些擴充);美國加州Sunnyvale的MIPS技術之MIPS指令集;美國加州Sunnyvale的ARM股份公司之ARM指令集(具有如NEON的可選額外的擴充))。在一實施例中,核心1090包括支援填充資料指令集擴充(例如,AVX1、AVX2)的邏輯,藉此允許許多多媒體應用所使用之操作能使用填充資料來執行。
應了解核心可能支援多執行緒(執行兩個或更多平行組的操作或執行緒),且可能以各種方式來實行,包括時間切割多執行緒、同步多執行緒(其中單一實體核心提供邏輯核心給實體核心係同步多執行緒的每個執
行緒)、或以上之組合(例如,時間切割提取和解碼及之後如Intel®超執行緒技術的同步多執行緒)。
儘管在亂序執行之內文中說明了暫存器更名,但應了解可能在有序架構中使用暫存器更名。儘管處理器之所示實施例也包括分開的指令和資料快取單元1034/1074及共享L2快取單元1076,但其他實施例可能具有用於指令和資料兩者的單一內部快取,例如,第1級(L1)內部快取、或多個級的內部快取。在一些實施例中,系統可能包括內部快取與在核心及/或處理器外部的外部快取之組合。另外,所有快取可能在核心及/或處理器外部。
第11A-B圖繪示更具體之示範有序核心架構的方塊圖,其核心會是在晶片中的數個邏輯方塊之其一者(包括相同類型及/或不同類型的其他核心)。邏輯方塊依據應用透過高頻寬互連網路(例如,環形網路)來與一些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊。
第11A圖係根據本發明之實施例之單一處理器核心,與其連結至晶粒上互連網路1102的連線及其第2級(L2)快取的區域子集1104之方塊圖。在一實施例中,指令解碼器1100支援具有填充資料指令級擴充的x86指令集。L1快取1106允許將快取記憶體低延遲地存
取至純量和向量單元中。儘管在一實施例中(為了簡化設計),純量單元1108和向量單元1110使用單獨的暫存器組(分別是純量暫存器1112和向量暫存器1114),且傳輸於其間的資料被寫入至記憶體而接著從第1級(L1)快取1106讀回,但本發明之其他實施例可能使用不同的方法(例如,使用單一暫存器組或包括允許資料在沒被寫入和讀回的情況下傳輸於這兩個暫存器檔案之間的通訊路徑)。
L2快取的區域子集1104係為部分的全域L2快取,其分成單獨的區域子集,每個處理器核心一個。每個處理器核心具有直接存取路徑連接至自己的L2快取之區域子集1104。處理器核心所讀取的資料係儲存在其L2快取子集1104中並能與存取其自己區域L2快取子集之其他處理器核心並行地被快速存取。處理器核心所寫入的資料係儲存在自己的L2快取子集1104中,且若有需要的話,會從其他子集中清除。環形網路確保共享資料的一致性。環形網路係雙向的以使得如處理器核心、L2快取和其他邏輯方塊的代理器能在晶片內彼此通訊。每個環形資料路徑在每個方向上係為1012位元寬。
第11B圖係根據本發明之實施例之第11A圖中的處理器核心之部分分解圖。第11B圖包括L1快取1104之L1資料快取1106A部分,及更多關於向量單元1110和向量暫存器1114的細節。具體來說,向量單元1110係為16寬的向量處理單元(VPU)(參見16寬的
ALU 1128),其執行整數、單精度浮點數、及雙精度浮點數指令之一或更多者。VPU以攪和單元1120來支援攪和暫存器輸入、利用數字轉換單元1122A-B來支援數字轉換、及利用複製單元1124來支援複製記憶體輸入。寫入遮罩暫存器1126允許預測產生之向量寫入。
第12圖係根據本發明之實施例之可能具有超過一個核心,可能具有整合記憶體控制器,且可能具有整合圖形之處理器1200的方塊圖。第12圖中的實線框繪示具有單一核心1202A、系統代理器1210,一組一或更多匯流排控制器單元1216的處理器1200,而非必要添加的虛線框繪示具有多個核心1202A-N、在系統代理器單元1210中的一組一或更多整合記憶體控制器單元1214、及專用邏輯1208的另一處理器1200。
因此,處理器1200之不同實作可能包括:1)具有為整合圖形及/或科學(產量)邏輯(其可能包括一或更多核心)之專用邏輯1208、及為一或更多通用核心(例如,通用有序核心、通用亂序核心、這兩者之組合)之核心1202A-N的CPU;2)具有為預期主要用於圖形及/或科學(產量)之大量專用核心之核心1202A-N的協處理器;及3)具有為大量通用有序核心之核心1202A-N的協處理器。於是,處理器1200可能是通用處理器、協處理器或專用處理器,例如,網路或通訊處理器、壓縮
引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多重整合核心(MIC)協處理器(包括30個或更多核心)、嵌入式處理器、或之類。處理器可在一或更多晶片上實作。處理器1200可能是一或多個基板的一部分及/或可能使用如BiCMOS、CMOS、或NMOS的一些處理技術來實作在一或多個基板上。
記憶體階層包括核心內的一或更多級快取、一組或一或更多共享快取單元1206、及耦接至這組整合記憶體控制器單元1214的外部記憶體(未示出)。這組共享快取單元1206可能包括如第2級(L2)、第3級(L3)、第4級(L4)、或其他級之快取的一或多個中級快取、最後一級的快取(LLC)、及/或以上之組合。儘管在一實施例中,環形為基的互連單元1212互連整合圖形邏輯1208、這組共享快取單元1206、及系統代理器單元1210/整合記憶體控制器單元1214,但其他實施例可能使用一些熟知的技術來互連上述單元。在一實施例中,在一或更多快取單元1206與核心1202-A-N之間保持一致性。
在一些實施例中,一或更多核心1202A-N能夠執行多執行緒。系統代理器1210包括那些協調和操作核心1202A-N的元件。例如,系統代理器單元1210可能包括電力控制單元(PCU)及顯示單元。PCU可能是或包括調節核心1202A-N及整合圖形邏輯1208之電力狀態所需的邏輯和元件。顯示單元係用於驅動一或更多外部連接的顯示器。
就架構指令集而言,核心1202A-N可能是同型或不同型的;亦即,核心1202A-N之兩個或更多者也許能夠執行相同的指令集,而其他者也許僅能夠執行指令集的子集或不同的指令集。
第13-16圖係示範電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及各種其他電子裝置之本領域中所知的其他系統設計和配置也是適當的。一般而言,能夠合併處理器及/或如本文所揭露之其他執行邏輯之種類繁多的系統或電子裝置通常都是適當的。
現在參考第13圖,所顯示的係依照本發明之一實施例之系統1300的方塊圖。系統1300可能包括一或更多處理器1310、1315,其係耦接至控制器中心1320。在一實施例中,控制器中心1320包括圖形記憶體控制器中心(GMCH)1390和輸入/輸出中心(IOH)1350(其可能在獨立晶片上);GMCH 1390包括耦接記憶體1340和協處理器1345的記憶體和圖形控制器;IOH 1350將輸入/輸出(I/O)裝置1360耦接至GMCH 1390。另外,記憶體和圖形控制器之一或兩者係整合在(如本文所述之)處
理器內,記憶體1340和協處理器1345係直接耦接至處理器1310、及在具有IOH 1350之單晶片中的控制器中心1320。
在第13圖中以虛線來表示額外處理器1315的非必要性。每個處理器1310、1315可能包括一或更多本文所述之處理核心且可能是一些型式的處理器1200。
記憶體1340可能是例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或這兩者之組合。針對至少一實施例,控制器中心1320經由如前端匯流排(FSB)之多點匯流排、如快速路徑互連(QPI)的點對點介面、或類似連線1395來與處理器1310、1315通訊。
在一實施例中,協處理器1345係專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或之類。在一實施例中,控制器中心1320可能包括整合圖形加速器。
就規制標準而言,在實體資源1310、1315之間會有多種差異,包括架構、微型架構、熱、功率消耗特性等等。
在一實施例中,處理器1310執行控制一般類型之資料處理操作的指令。嵌入於指令內的可能是協處理器指令。處理器1310辨識這些協處理器指令為應由附接協處理器1345執行的類型。藉此,處理器1310在協處理器匯流排或其他互連上對協處理器1345發出這些協處理
器指令(或代表協處理器指令的控制信號)。協處理器1345接受和執行接收之協處理器指令。
現在參考第14圖,所顯示的係依照本發明之實施例之第一更具體示範系統1400的方塊圖。如第14圖所示,多處理器系統1400是點對點互連系統,且包括經由點對點互連1450耦接的第一處理器1470和第二處理器1480。處理器1470和1480之各者可能是一些型式的處理器1200。在本發明之一實施例中,處理器1470和1480分別是處理器1310和1315,而協處理器1438是協處理器1345。在另一實施例中,處理器1470和1480分別是處理器1310和協處理器1345。
顯示處理器1470和1480分別包括整合記憶體控制器(IMC)單元1472和1482。處理器1470也包括作為其匯流排控制器單元點對點(P-P)介面1476和1478的部分;同樣地,第二處理器1480包括P-P介面1486和1488。處理器1470、1480可能使用P-P介面電路1478、1488經由點對點(P-P)介面1450來交換資訊。如第14圖所示,IMC 1472和1482將處理器耦接至各別記憶體(即記憶體1432和1434),其可能是區域附接於各別處理器之主記憶體的部分。
處理器1470、1480可能各使用點對點介面電路1476、1494、1486、1498經由個別P-P介面1452、1454來與晶片組1490交換資訊。晶片組1490可能可選地經由高效能介面1439來與協處理器1438交換資訊。在
一實施例中,協處理器1438係專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或之類。
共享快取(未示出)可能包括在任一處理器中或兩處理器之外;還經由P-P互連與處理器連接,使得若將處理器置於低功率模式中,則任一或兩處理器的區域快取資訊可儲存於共享快取中。
晶片組1490可能經由介面1496來耦接至第一匯流排1416。在一實施例中,第一匯流排1416可能是周邊元件互連(PCI)匯流排、或如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明之範圍並不以此為限。
如第14圖所示,各種I/O裝置1414可能與匯流排橋接器1418一起耦接至第一匯流排1416,其中匯流排橋接器1418將第一匯流排1416耦接至第二匯流排1420。在一實施例中,一或更多額外的處理器1415(如協處理器、高產量MIC處理器、GPGPU的加速器(例如,圖形加速器或數位信號處理(DSP)單位)、現場可程式閘陣列、或任何其他處理器)係耦接至第一匯流排1416。在一實施例中,第二匯流排1420可能是低接腳數(LPC)匯流排。在一實施例中,各種裝置可能耦接至第二匯流排1420,包括例如鍵盤及/或滑鼠1422、通訊裝置1427及如磁碟機或可能包括指令/碼和資料1430之其他大容量儲存裝置的儲存單元1428。此外,音頻I/O 1424可
能耦接至第二匯流排1420。請注意其他架構係可能的。例如,系統可能實作多點匯流排或其他這類架構,來取代第14圖之點對點架構。
現在參考第15圖,所顯示的係依照本發明之實施例之第二更具體示範系統1500的方塊圖。第14和15圖中的相同元件具有類似參考數字,且已從第15圖省略第14圖之某些態樣以避免模糊第15圖之其他態樣。
第15圖繪示處理器1470、1480可能分別包括整合記憶體和I/O控制邏輯(「CL」)1472和1482。因此,CL 1472、1482包括整合記憶體控制器單元且包括I/O控制邏輯。第15圖不只繪示記憶體1432、1434耦接至CL 1472、1482,而且還繪示I/O裝置1514也耦接至控制邏輯1472、1482。傳統I/O裝置1515係耦接至晶片組1490。
現在參考第16圖,所顯示的係依照本發明之實施例之SoC 1600的方塊圖。第12圖中的相似元件具有相同參考數字。而且,虛線框在更進階的SoC上是非必要的特徵。在第16圖中,互連單元1602係耦接至:包括一組一或更多核心202A-N及共享快取單元1206的應用處理器1610;系統代理器單元1210;匯流排控制器單元1216;整合記憶體控制器單元1214;可能包括整合圖形邏輯、影像處理器、音頻處理器、和視頻處理器的一組或一或更多協處理器1620;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632、及用於
耦接至一或更多外部顯示器的顯示單元1640。在一實施例中,協處理器1620包括專用處理器,例如,網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器或之類。
本文所揭露之機制的實施例可能在硬體、軟體、韌體、或上述實作方法之組合中實作。本發明之實施例可能實作成執行在包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置的可程式系統上的電腦程式或程式碼。
可能施用程式碼(如第14圖所示之碼1430)來輸入指令以執行本文所述之功能並產生輸出資訊。可能以已知的方式來對一或更多輸出裝置施用輸出資訊。為了此應用之目的,處理系統包括任何具有處理器(例如,數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器)之系統。
程式碼可能以高階程序或物件導向編程語言來實作以與處理系統通訊。若需要的話,程式碼也可能以組合或機器語言來實作。事實上,本文所述之機制在範圍上並不受限於任何特定編程語言。在任何情況下,語言可能是經編譯或轉譯語言。
至少一實施例之一或更多態樣可能藉由儲存在機器可讀媒體上的代表指令來實作,其表現在處理器內的各種邏輯,當指令被機器讀取時會使機器製造邏輯來執
行本文所述之技術。這樣的表現,稱為「IP核心」,可能儲存在有形的機器可讀媒體上並供應給各種顧客或製造廠來下載至實際產生邏輯的製造機器或處理器中。
這類機器可讀儲存媒體可能包括,但不限於機器或裝置製造或形成之物件的非暫態有形佈置,包括如硬碟、任何型態之磁碟(包括軟碟、光碟、唯讀光碟機(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟機)、如唯讀記憶體(ROM)的半導體裝置、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或適用於儲存電子指令之任何其他型態之媒體的儲存媒體。
因此,本發明之實施例也包括非暫態、有形的機器可讀媒體,包含指令或包含設計資料,如硬體描述語言(HDL),其定義本文所述之結構、電路、設備、處理器及/或系統特徵。上述實施例也可能係指程式產品。
在一些情況中,可能使用指令轉換器來將指令從來源指令集轉換成目標指令集。例如,指令轉換器可能轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、模仿、模擬、或以其他方式將指令轉換
成一或更多待由核心處理的其他指令。指令轉換器可能在軟體、硬體、韌體、或以上之組合中實作。指令轉換器可能在處理器上、在處理器之外、或部分在處理器上且部分在處理器外。
第17圖係根據本發明之實施例之對照使用軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。雖然指令轉換器可能另外在軟體、韌體、硬體、或以上之各種組合中實作,但在所述之實施例中,指令轉換器係軟體指令轉換器。第17圖顯示高階語言1702的程式可能使用x86編譯器1704來編譯以產生x86二進制碼1706,其本身可被具有至少一x86指令集核心1716的處理器執行。具有至少一x86指令集核心1716的處理器代表任何能執行實質上與具有至少一x86指令集核心的Intel處理器相同之功能的處理器,藉由相容地執行或以其他方式處理(1)Intel x86指令集核心之指令集的實質部分或(2)目標碼型式的應用程式或其他針對在具有至少一x86指令集核心的Intel處理器上執行的軟體,以達到實質上與具有至少一x86指令集核心的Intel處理器有相同的結果。x86編譯器1704代表可操作以產生x86二進制碼1706(例如,目標碼)的編譯器,其能連同或無須額外的連鎖處理地在具有至少一x86指令集核心1716的處理器上執行。同樣地,第17圖顯示高階語言1702的程式可能使用另一指令集編譯器1708來編譯以產生原本就可被不具有至少一x86指令集
核心1714的處理器(例如,具有執行美國加州Sunnyvale的MIPS技術之MIPS指令集及/或執行美國加州Sunnyvale的ARM股份公司之ARM指令集之核心的處理器)執行的另一指令集二進制碼1710。指令轉換器1712係用於將x86二進制碼1706轉換成本身可能被不具有x86指令集核心1714之處理器執行的碼。由於能夠轉換上述的指令轉換器難以製造,因此經轉換碼不太可能與另一指令集二進制碼1710相同;然而,經轉換碼將完成一般操作且由來自另一指令集的指令組成。因此,指令轉換器1712代表軟體、韌體、硬體、或以上之組合,透過模仿、模擬或任何其他程序,允許處理器或其他不具有x86指令集處理器或核心的電子裝置執行x86二進制碼1706。
針對第3-8圖之任一者所說明的元件、特徵、及細節可能也可選地在第1-2圖之任一者中使用。再者,針對本文所說明之任一設備的本文所述之元件、特徵、及細節可能也可選地在本文所述之任一方法中使用及/或適用於本文所述之任一方法,其在實施例中可能藉由及/或以上述設備來執行。本文所述之任一處理器可能包括在本文所揭露之電腦系統或其他系統之任一者中。在一些實施例中,電腦系統可能包括互連(例如,點對點或多點,其中超過兩個晶片可能耦接至互連)、與互連耦接的處理器、及與互連耦接的動態隨機存取記憶體(DRAM)。另外,可能使用其他類型之不需要被再新的
揮發性記憶體而不是DRAM、可能使用快閃記憶體等等。在一些實施例中,處理器可能包括在包括晶片上記憶體控制器的晶片中,或在其他實施例中,記憶體控制器可能包括在單獨晶片(例如,中心晶片)中。
在本說明及申請專利範圍中,可能已使用「耦接」及/或「連接」之詞及其衍生詞。應了解這些詞不打算作為彼此的同義詞。反而,在特定實施例中,可能使用「連接」來表示兩個或更多元件彼此直接實體及/或電性接觸。「耦接」可能意味著兩個或更多元件直接實體及/或電性接觸。然而,「耦接」可能也意味著兩個或更多元件並非彼此直接接觸,但仍彼此合作或互動。例如,執行單元可能透過一或更多中間元件來與暫存器及/或解碼單元耦接。在圖中,箭頭係用於顯示連接和耦接。
在說明及/或申請專利範圍中,可能已使用「邏輯」、「單元」、「模組」、或「元件」之詞。這些詞之各者可能用以指硬體、韌體、軟體、或以上之各種組合。在示範實施例中,這些詞之各者可能指積體電路、專用積體電路、類比電路、數位電路、編程邏輯裝置、包括指令的記憶體裝置等等、及以上之各種組合。在一些實施例中,這些可能包括至少一些硬體(例如,電晶體、閘極、其他電路元件等等)。
可能已使用「及/或」之詞。如本文所使用,「及/或」之詞意味著一或另一者或兩者(例如,A及/或B意味著A或B;或A及B兩者)。
在上述說明中,已提出具體細節以提供對實施例的全面性了解。然而,無需一些這些具體細節便可能實施其他實施例。本發明之範圍並非由上面提出的具體實例所決定,而是僅由下面的申請專利範圍所決定。在其他例子中,未以方塊圖形式及/或未詳細顯示熟知的電路、結構、裝置、及操作以免模糊對本說明之了解。其中適當地認為,已在圖之間重覆參考數字、或參考數字的端部以指示對應或類似元件,其可能可選地具有類似或相同特性,除非另有指明或顯而易見的。
已說明了各種操作和方法。已以相對基本的形式來說明了一些方法,但操作可能可選地加入方法及/或從方法移除。另外,儘管已根據實施例來顯示或說明了操作的特定順序,但此特定順序是示範性的。其他實施例可能以不同順序來執行操作、結合某些操作、重疊某些操作等等。
某些操作可能藉由硬體元件來執行,或可能在機器可執行或電路可執行指令中實作,其可能用以導致及/或造成以執行操作的指令來編程機器、電路、或硬體元件(例如,處理器、處理器之部分、電路等)。操作可能也可選地藉由硬體和軟體之組合來執行。可能包括具體或特定電路或其他邏輯(例如,可能與韌體及/或軟體結合的硬體)的處理器、機器、電路、或硬體可操作以回應於指令而執行及/或處理指令並儲存結果。
一些實施例包括一種製造物品(例如,電腦
程式產品),其包括機器可讀媒體。媒體可能包括一種機制,其提供(例如,儲存)為機器可讀之形式的資訊。機器可讀媒體可能提供、或於其上已儲存一或更多、或一連串指令,若及/或當指令被機器執行時會使機器執行及/或導致機器執行本文所揭露之一或更多操作、方法、或技術。機器可讀媒體可能儲存或以其他方式提供本文所揭露之指令的一或更多實施例。
在一些實施例中,機器可讀媒體可能包括有形及/或非暫態機器可讀儲存媒體。例如,有形及/或非暫態機器可讀儲存媒體可能包括軟碟、光儲存媒體、光碟、光資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式化ROM(PROM)、可抹除可程式化ROM(EPROM)、電子可抹除可程式化ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置、或之類。非暫態機器可讀儲存媒體並非由暫態傳播信號組成。
適當機器之實例包括,但不限於通用處理器、專用記憶體、指令處理設備、數位邏輯電路、積體電路或之類。適當機器之另外其他實例包括計算裝置或其他電子裝置,其包括處理器、指令處理設備、數位邏輯電路、或積體電路。這類計算裝置和電子裝置之實例包括,但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電
腦、小筆電、智慧型手機、伺服器、網路裝置(例如,路由器及交換器)、行動上網裝置(MID)、媒體播放器、智慧型電視、易網機、機上盒、及電動遊戲控制器。
在本說明書中提到例如「一個實施例」、「一實施例」、「一或更多實施例」、「一些實施例」表示特定特徵可能包括在本發明之實施中,但並不一定需要如此。同樣地,在本說明中,為了整合本揭露及協助了解各種本發明態樣之目的,各種特徵在單一實施例、圖、或其說明中有時被組合在一起。然而,本揭露之這種方法並不被解釋為反映出本發明需要比在每個申請專利範圍所明確提出更多的特徵之打算。反而,如下面的申請專利範圍所反映,本發明態樣可能少於單一揭露之實施例的所有特徵。因此,在詳細說明之後的申請專利範圍特此被明確地併入此詳細說明中,其中每個申請專利範圍主張其本身作為本發明之獨立實施例。
下面的實例關於其他實施例。可在一或更多實施例中的任何地方使用實例中的具體細節。
實例1係一種處理器或其他設備,其包括解碼單元,用以從第一執行緒解碼執行緒暫停指令,及處理器的後端部分,與解碼單元耦接。處理器的後端部分回應於執行緒暫停指令而用以暫停處理用於執行之第一執行緒的後續指令。後續指令在執行緒暫停指令之後依程式順序
發生。除了執行緒暫停指令以外,處理器的後端部分回應於執行緒暫停指令而也用以保持包括複數個執行單元和指令佇列單元之處理器之至少大多數的後端部分清空第一執行緒的指令達一段預定時間。
實例2包括實例1之處理器,更包括計時器,其中處理器回應於執行緒暫停指令而用以在處理器之至少大多數的後端部分清空第一執行緒的指令之後啟動計時器。
實例3包括實例2之處理器,其中解碼單元係用以將執行緒暫停指令解碼成控制信號,且其中處理器的後端部分係用以回應於控制信號被提交而啟動計時器。
實例4包括實例1至3之任一者之處理器,更包括處理器的前端部分,其包括解碼單元,且其中當處理器之至少大多數的後端部分係閒置時,處理器的後端部分係回應於執行緒暫停指令而發信號至處理器的前端部分,通知處理器的前端部分將不從處理器的後端部分接收需要注意的事件。
實例5包括實例1至4之任一者之處理器,更包括記憶體執行單元,且其中當處理器之至少大多數的後端部分係閒置時,處理器的後端部分係回應於執行緒暫停指令而發信號至記憶體執行單元,通知記憶體執行單元將不從處理器的後端部分接收需要注意的事件。
實例6包括實例1至5之任一者之處理器,其中回應於執行緒暫停指令,處理器的後端部分係用以在
處理器之後端部分中的管線級將從執行緒暫停指令解碼的控制信號停頓這段預定時間。
實例7包括實例6之處理器,其中管線級係在解碼單元與執行單元之間。
實例8包括實例7之處理器,其中管線級包括分配單元。
實例9包括實例1至8之任一者之處理器,其中解碼單元係用以解碼執行緒暫停指令,其係用以具有運算元以指示這段預定時間。
實例10包括實例1至8之任一者之處理器,其中解碼單元係用以將執行緒暫停指令解碼成控制信號,其係用以判定要使用執行緒暫停指令的相對較簡單實作而不是處理器也能夠執行之執行緒暫停指令的相對較詳盡實作。
實例11包括實例10之處理器,其中處理器能夠虛擬化,其中執行執行緒暫停指令係用以使虛擬機退出,且能夠異動執行,其中至少有時執行執行緒暫停指令係用以使異動執行被中斷,且其中控制信號係用以判定要在判定虛擬化和異動執行未由處理器執行之後使用相對較簡單實作。
實例12包括實例1至8之任一者之處理器,其中執行緒暫停指令係用以允許處理器的後端部分提交第一執行緒的所有先前指令,其在起始這段預定時間之前,在執行緒暫停指令之前依程式順序發生。
實例13包括實例1至8之任一者之處理器,其中這段預定時間係在50和150時脈週期之間。
實例14包括一種在處理器中的方法,其包括從第一執行緒接收執行緒暫停指令,及回應於執行緒暫停指令而暫停處理用於執行之第一執行緒的後續指令。後續指令在執行緒暫停指令之後依程式順序發生。方法也包括除了執行緒暫停指令以外,回應於執行緒暫停指令而保持處理器之後端部分的至少複數個執行單元和指令佇列單元清空第一執行緒之指令達一固定期間。
實例15包括實例14之方法,更包括判定以對執行單元閘控時脈達基於固定期間的一段時間。
實例16包括實例14至15之任一者之方法,更包括除了執行緒暫停指令以外,回應於執行緒暫停指令而在至少執行單元和指令佇列單元清空第一執行緒之指令之後啟動計時器。
實例17包括實例14至16之任一者之方法,更包括回應於執行緒暫停指令,且在至少執行單元和指令佇列單元閒置之後,將信號從後端部分傳送至處理器的前端部分以指示後端部分將不發送前端部分之需要注意的事件。
實例18包括實例17之方法,更包括處理器的前端部分至少部分基於信號來判定停止時脈。
實例19包括實例14至18之任一者之方法,更包括回應於執行緒暫停指令而判定執行緒暫停指令的相
對較簡單實作係足夠的,而不是處理器也能夠實作之執行緒暫停指令的相對較詳盡實作。
實例20包括實例19之方法,其中判定執行緒暫停指令的相對較簡單實作係足夠的包括判定處理器未正執行虛擬化及處理器未正執行異動執行之至少一者。
實例21包括實例14之方法,其中暫停包括將已從執行緒暫停指令解碼的控制信號停頓在處理器的後端部分中達固定期間。
實例22包括實例14至21之任一者之方法,其中接收包括接收執行緒暫停指令,具有運算元以指示固定期間。
實例23包括一種用以處理指令的系統,包含互連,及處理器,與互連耦接。處理器係用以從第一執行緒接收執行緒暫停指令。處理器回應於執行緒暫停指令而暫停處理用於執行之第一執行緒的後續指令。後續指令在執行緒暫停指令之後依程式順序發生。除了執行緒暫停指令以外,處理器也用以保持包括複數個執行單元之處理器之至少大多數的後端部分清空第一執行緒的指令達一固定週期。系統也包括動態隨機存取記憶體(DRAM),與互連耦接。
實例24包括實例23之系統,其中當處理器之至少大多數的後端部分係閒置時,處理器的後端部分係回應於執行緒暫停指令而發信號至處理器的前端部分,通知處理器的後端部分將不對處理器的前端部分發送需要注
意的事件。
實例25包括一種包括非暫態機器可讀儲存媒體的製造物品。非暫態機器可讀儲存媒體儲存執行緒暫停指令。執行緒暫停指令若被機器執行以使機器執行操作,包括暫停處理具有用於執行之執行緒暫停指令的第一執行緒之後續指令。後續指令在執行緒暫停指令之後依程式順序發生。操作也包括除了執行緒暫停指令以外,回應於執行緒暫停指令而保持處理器之後端部分的至少複數個執行單元和指令佇列單元清空第一執行緒之指令達一段預定時間。
實例26包括實例25之物品,其中執行緒暫停指令若被機器執行以使機器用以判定執行緒暫停指令的相對較簡單實作係足夠的,而不是處理器也能夠實作之執行緒暫停指令的相對較詳盡實作。
實例27包括一種處理器或其他設備,其操作以執行實例14-22之任一者之方法。
實例28包括一種處理器或其他設備,其包括用於執行實例14-22之任一者之方法的設備。
實例29包括一種處理器,其包括用以執行實例14-22之任一者之方法的模組、單元、邏輯、電路、及方法。
實例30包括一種製造物品,其包括可選的非暫態機器可讀媒體,其若及/或當被處理器執行則可選地儲存或以其他方式提供指令,或其他機器係操作以使機器
執行實例14-22之任一者之方法。
實例31包括一種電腦系統或其他電子裝置,包括互連、實例1-13之任一者之處理器,與互連耦接、及至少一個元件,與互連耦接,其係選自動態隨機存取記憶體(DRAM)、網路介面、圖形晶片、無線通訊晶片、行動通訊全球系統(GSM)天線、相變記憶體、及攝影機。
實例32包括一種處理器或其他設備,實質上如本文所述。
實例33包括一種處理器或其他設備,其係操作以執行實質上如本文所述之任何方法。
實例34包括一種處理器或其他設備,包括用於執行實質上如本文所述之任何方法的工具。
實例35包括一種處理器或其他設備,其係操作以執行實質上如本文所述之任何執行緒暫停指令。
實例36包括一種處理器或其他設備,包括用於執行實質上如本文所述之任何執行緒暫停指令的工具。
實例37包括一種電腦系統或其他電子裝置,其包括處理器,具有解碼單元,其可操作以解碼第一指令集的指令,且具有一或更多執行單元。電腦系統也包括儲存裝置,耦接至處理器。儲存裝置係用以儲存第一指令,其可能是實質上如本文所述之任一指令,且其係為第二指令集。儲存裝置也用以儲存指令以將第一指令轉換成第一指令集的一或更多指令。第一指令集的一或更多指令當被
處理器執行時可操作以使處理器執行如申請專利範圍第14-22項之任一項所述之方法。
Claims (25)
- 一種處理器,包含:解碼單元,用以從第一執行緒解碼執行緒暫停指令;及該處理器的後端部分,與該解碼單元耦接,該處理器的該後端部分回應於該執行緒暫停指令而用以:暫停處理用於執行之該第一執行緒的後續指令,其中該些後續指令在該執行緒暫停指令之後依程式順序發生;及除了該執行緒暫停指令以外,保持包括複數個執行單元和指令佇列單元之該處理器之至少大多數的後端部分清空該第一執行緒的指令達一段預定時間。
- 如申請專利範圍第1項所述之處理器,更包含計時器,其中該處理器回應於該執行緒暫停指令而用以在該處理器之該至少大多數的後端部分清空該第一執行緒的該些指令之後啟動該計時器。
- 如申請專利範圍第2項所述之處理器,其中該解碼單元係用以將該執行緒暫停指令解碼成控制信號,且其中該處理器的該後端部分係用以回應於該控制信號被提交而啟動該計時器。
- 如申請專利範圍第1項所述之處理器,更包含該處理器的前端部分,其包括該解碼單元,且其中當該處理器之該至少大多數的後端部分係閒置時,該處理器的該後端部分係回應於該執行緒暫停指令而發信號至該處理器的該 前端部分,通知該處理器的該前端部分將不從該處理器的該後端部分接收需要注意的事件。
- 如申請專利範圍第1項所述之處理器,更包含記憶體執行單元,且其中當該處理器之該至少大多數的後端部分係閒置時,該處理器的該後端部分係回應於該執行緒暫停指令而發信號至該記憶體執行單元,通知該記憶體執行單元將不從該處理器的該後端部分接收需要注意的事件。
- 如申請專利範圍第1項所述之處理器,其中回應於該執行緒暫停指令,該處理器的該後端部分係用以在該處理器之該後端部分中的管線級將從該執行緒暫停指令解碼的控制信號停頓該段預定時間。
- 如申請專利範圍第6項所述之處理器,其中該管線級係在該解碼單元與該些執行單元之間。
- 如申請專利範圍第7項所述之處理器,其中該管線級包含分配單元。
- 如申請專利範圍第1項所述之處理器,其中該解碼單元係用以解碼該執行緒暫停指令,其係用以具有運算元以指示該段預定時間。
- 如申請專利範圍第1項所述之處理器,其中該解碼單元係用以將該執行緒暫停指令解碼成控制信號,其係用以判定要使用該執行緒暫停指令的相對較簡單實作而不是該處理器也能夠執行之該執行緒暫停指令的相對較詳盡實作。
- 如申請專利範圍第10項所述之處理器,其中該處 理器能夠虛擬化,其中執行該執行緒暫停指令係用以使虛擬機退出,且能夠異動執行,其中至少有時執行該執行緒暫停指令係用以使該異動執行被中斷,且其中該控制信號係用以判定要在判定該虛擬化和該異動執行未由該處理器執行之後使用該相對較簡單實作。
- 如申請專利範圍第1項所述之處理器,其中該執行緒暫停指令係用以允許該處理器的該後端部分提交該第一執行緒的所有先前指令,其在起始該段預定時間之前,在該執行緒暫停指令之前依該程式順序發生。
- 如申請專利範圍第1項所述之處理器,其中該段預定時間係在50和150時脈週期之間。
- 一種在處理器中的方法,包含:從第一執行緒接收執行緒暫停指令;回應於該執行緒暫停指令而暫停處理用於執行之該第一執行緒的後續指令,該些後續指令在該執行緒暫停指令之後依程式順序發生;及除了該執行緒暫停指令以外,回應於該執行緒暫停指令而保持該處理器之後端部分的至少複數個執行單元和指令佇列單元清空該第一執行緒之指令達一固定期間。
- 如申請專利範圍第14項所述之方法,更包含判定以對該些執行單元閘控時脈達基於該固定期間的一段時間。
- 如申請專利範圍第14項所述之方法,更包含除了該執行緒暫停指令以外,回應於該執行緒暫停指令而在至 少該些執行單元和該指令佇列單元清空該第一執行緒之該些指令之後啟動計時器。
- 如申請專利範圍第14項所述之方法,更包含回應於該執行緒暫停指令,且在至少該些執行單元和該指令佇列單元閒置之後,將信號從該後端部分傳送至該處理器的前端部分以指示該後端部分將不發送該前端部分之需要注意的事件。
- 如申請專利範圍第17項所述之方法,更包含該處理器的該前端部分至少部分基於該信號來判定停止時脈。
- 如申請專利範圍第14項所述之方法,更包含回應於該執行緒暫停指令而判定該執行緒暫停指令的相對較簡單實作係足夠的,而不是該處理器也能夠實作之該執行緒暫停指令的相對較詳盡實作。
- 如申請專利範圍第19項所述之方法,其中判定該執行緒暫停指令的該相對較簡單實作係足夠的包含判定該處理器未正執行虛擬化及該處理器未正執行異動執行之至少一者。
- 如申請專利範圍第14項所述之方法,其中暫停包含將已從該執行緒暫停指令解碼的控制信號停頓在該處理器的該後端部分中達該固定期間。
- 一種用以處理指令的系統,包含:互連;處理器,與該互連耦接,該處理器用以從第一執行緒接收執行緒暫停指令,該處理器回應於該執行緒暫停指令 而暫停處理用於執行之該第一執行緒的後續指令,其中該些後續指令在該執行緒暫停指令之後依程式順序發生,及除了該執行緒暫停指令以外,保持包括複數個執行單元之該處理器之至少大多數的後端部分清空該第一執行緒的指令達一固定週期;及動態隨機存取記憶體(DRAM),與該互連耦接。
- 如申請專利範圍第22項所述之系統,其中當該處理器之該至少大多數的後端部分係閒置時,該處理器的該後端部分係回應於該執行緒暫停指令而發信號至該處理器的前端部分,通知該處理器的該後端部分將不對該處理器的該前端部分發送需要注意的事件。
- 一種包含非暫態機器可讀儲存媒體的製造物品,該非暫態機器可讀儲存媒體儲存執行緒暫停指令,該執行緒暫停指令若被機器執行以使該機器執行操作,包含:暫停處理具有用於執行之該執行緒暫停指令的第一執行緒之後續指令,該些後續指令在該執行緒暫停指令之後依程式順序發生;及除了該執行緒暫停指令以外,回應於該執行緒暫停指令而保持處理器之後端部分的至少複數個執行單元和指令佇列單元清空該第一執行緒之指令達一段預定時間。
- 如申請專利範圍第24項所述之物品,其中該執行緒暫停指令若被該機器執行以使該機器用以判定該執行緒暫停指令的相對較簡單實作係足夠的,而不是該處理器也能夠實作之該執行緒暫停指令的相對較詳盡實作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/336,596 US10467011B2 (en) | 2014-07-21 | 2014-07-21 | Thread pause processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201610836A true TW201610836A (zh) | 2016-03-16 |
TWI544409B TWI544409B (zh) | 2016-08-01 |
Family
ID=55074644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104119283A TWI544409B (zh) | 2014-07-21 | 2015-06-15 | 執行緒暫停處理器、方法、系統與指令 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10467011B2 (zh) |
KR (1) | KR101847857B1 (zh) |
CN (1) | CN105279016B (zh) |
TW (1) | TWI544409B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI605416B (zh) * | 2016-10-25 | 2017-11-11 | 晨星半導體股份有限公司 | 影像處理裝置、影像處理方法及其非暫態電腦可讀取儲存媒體 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2618367C1 (ru) * | 2016-03-23 | 2017-05-03 | Андрей Сергеевич Моляков | Вычислительное устройство программно-аппаратного комплекса |
US10433025B2 (en) * | 2016-05-10 | 2019-10-01 | Jaunt Inc. | Virtual reality resource scheduling of process in a cloud-based virtual reality processing system |
US10761849B2 (en) * | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
CN106407016B (zh) * | 2016-10-19 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 一种多线程争抢资源的模拟方法及装置 |
CN108255516A (zh) * | 2016-12-29 | 2018-07-06 | 展讯通信(上海)有限公司 | 顺序同步多线程处理器及其指令执行控制方法、装置 |
US10303482B2 (en) * | 2017-03-07 | 2019-05-28 | Red Hat, Inc. | Dynamic processor frequency selection |
US10176147B2 (en) * | 2017-03-07 | 2019-01-08 | Qualcomm Incorporated | Multi-processor core three-dimensional (3D) integrated circuits (ICs) (3DICs), and related methods |
US10275254B2 (en) | 2017-03-08 | 2019-04-30 | International Business Machines Corporation | Spin loop delay instruction |
US11609791B2 (en) * | 2017-11-30 | 2023-03-21 | Advanced Micro Devices, Inc. | Precise suspend and resume of workloads in a processing unit |
US20200034146A1 (en) * | 2018-07-30 | 2020-01-30 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) * | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
CN111124496B (zh) * | 2019-12-25 | 2022-06-21 | 合肥中感微电子有限公司 | 一种多周期指令处理方法、处理器和电子设备 |
CN111459638B (zh) * | 2020-04-01 | 2023-07-07 | 广东三维家信息科技有限公司 | 主线程等待时间确定方法及装置 |
TWI748513B (zh) * | 2020-06-12 | 2021-12-01 | 鴻海精密工業股份有限公司 | 資料處理方法、系統、電子裝置及存儲介質 |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
US20220100504A1 (en) * | 2020-09-25 | 2022-03-31 | Advanced Micro Devices, Inc. | Shared data fabric processing client reset system and method |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
CN114138341B (zh) * | 2021-12-01 | 2023-06-02 | 海光信息技术股份有限公司 | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |
CN115640169A (zh) * | 2022-12-22 | 2023-01-24 | 苏州浪潮智能科技有限公司 | 保障主集群停止提供服务的方法、系统、设备和存储介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1291765B1 (en) | 1996-08-27 | 2009-12-30 | Panasonic Corporation | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream |
US6889319B1 (en) | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US6496925B1 (en) | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6671795B1 (en) | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US6965991B1 (en) * | 2000-05-12 | 2005-11-15 | Pts Corporation | Methods and apparatus for power control in a scalable array of processor elements |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US6687838B2 (en) | 2000-12-07 | 2004-02-03 | Intel Corporation | Low-power processor hint, such as from a PAUSE instruction |
US7152169B2 (en) | 2002-11-29 | 2006-12-19 | Intel Corporation | Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state |
US8010969B2 (en) | 2005-06-13 | 2011-08-30 | Intel Corporation | Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers |
US7479181B2 (en) * | 2006-07-31 | 2009-01-20 | Hewlett-Packard Development Company, L.P. | Inkjet ink composition and method of making the same |
US7716500B2 (en) * | 2006-08-31 | 2010-05-11 | Ati Technologies Ulc | Power source dependent program execution |
US8112570B2 (en) * | 2007-03-15 | 2012-02-07 | Broadcom Corporation | Pipelined buffer interconnect with trigger core controller |
US7774626B2 (en) | 2007-03-29 | 2010-08-10 | Intel Corporation | Method to control core duty cycles using low power modes |
US8230203B2 (en) * | 2007-03-30 | 2012-07-24 | Intel Corporation | Detecting spin loops in a virtual machine environment |
US8464035B2 (en) * | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US9304776B2 (en) * | 2012-01-31 | 2016-04-05 | Oracle International Corporation | System and method for mitigating the impact of branch misprediction when exiting spin loops |
-
2014
- 2014-07-21 US US14/336,596 patent/US10467011B2/en active Active
-
2015
- 2015-06-15 TW TW104119283A patent/TWI544409B/zh active
- 2015-06-16 KR KR1020150085170A patent/KR101847857B1/ko active IP Right Grant
- 2015-06-23 CN CN201510350735.1A patent/CN105279016B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI605416B (zh) * | 2016-10-25 | 2017-11-11 | 晨星半導體股份有限公司 | 影像處理裝置、影像處理方法及其非暫態電腦可讀取儲存媒體 |
Also Published As
Publication number | Publication date |
---|---|
US20160019063A1 (en) | 2016-01-21 |
CN105279016A (zh) | 2016-01-27 |
KR101847857B1 (ko) | 2018-05-28 |
US10467011B2 (en) | 2019-11-05 |
KR20160011144A (ko) | 2016-01-29 |
CN105279016B (zh) | 2019-06-28 |
TWI544409B (zh) | 2016-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI544409B (zh) | 執行緒暫停處理器、方法、系統與指令 | |
US10656697B2 (en) | Processor core power event tracing | |
CN107408036B (zh) | 用户级分叉与结合处理器、方法、系统和指令 | |
US10235175B2 (en) | Processors, methods, and systems to relax synchronization of accesses to shared memory | |
US20170269157A1 (en) | Reconfigurable test access port with finite state machine control | |
US20160179542A1 (en) | Instruction and logic to perform a fused single cycle increment-compare-jump | |
US11645159B2 (en) | System and method for granular reset management without reboot | |
JP6450705B2 (ja) | 永続コミットプロセッサ、方法、システムおよび命令 | |
KR20160075669A (ko) | 하이브리드 프로세서 코어를 포함하는 시스템-온-칩(soc) | |
TWI515653B (zh) | 指令順序執行之指令對、處理器、方法及系統 | |
CN108701101B (zh) | 处理器系统管理中断事件的基于仲裁器的串行化 | |
US20200110460A1 (en) | Instruction and logic for parallel multi-step power management flow | |
US20160364237A1 (en) | Processor logic and method for dispatching instructions from multiple strands | |
WO2018005718A1 (en) | System and method for out-of-order clustered decoding | |
US20160170767A1 (en) | Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor | |
US10795681B2 (en) | Instruction length decoding | |
US20160378698A1 (en) | Instruction and logic for real-time behavior of interrupts | |
US20180164870A1 (en) | Instruction and logic for parallel multi-step power management flow | |
US10990395B2 (en) | System and method for communication using a register management array circuit |