TWI808506B - 用於使用者等級執行緒暫止的方法、處理器及系統 - Google Patents
用於使用者等級執行緒暫止的方法、處理器及系統 Download PDFInfo
- Publication number
- TWI808506B TWI808506B TW110138201A TW110138201A TWI808506B TW I808506 B TWI808506 B TW I808506B TW 110138201 A TW110138201 A TW 110138201A TW 110138201 A TW110138201 A TW 110138201A TW I808506 B TWI808506 B TW I808506B
- Authority
- TW
- Taiwan
- Prior art keywords
- user
- level
- thread
- processor
- instruction
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 122
- 239000000725 suspension Substances 0.000 title claims description 12
- 230000004044 response Effects 0.000 claims abstract description 34
- 230000007704 transition Effects 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 264
- 238000010586 diagram Methods 0.000 description 42
- 238000003860 storage Methods 0.000 description 39
- 238000007726 management method Methods 0.000 description 37
- 238000012545 processing Methods 0.000 description 23
- 239000013598 vector Substances 0.000 description 19
- 238000001514 detection method Methods 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 13
- 230000007958 sleep Effects 0.000 description 13
- 238000005192 partition Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 11
- 238000007667 floating Methods 0.000 description 11
- 238000013519 translation Methods 0.000 description 11
- 239000003795 chemical substances by application Substances 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000006266 hibernation Effects 0.000 description 8
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 230000000977 initiatory effect Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000284 resting effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000011010 flushing procedure Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 206010000210 abortion Diseases 0.000 description 2
- 238000000137 annealing Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 230000000873 masking effect Effects 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
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000035484 reaction time Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Images
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/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/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Power Sources (AREA)
- Treatments For Attaching Organic Compounds To Fibrous Goods (AREA)
- Sewing Machines And Sewing (AREA)
- Debugging And Monitoring (AREA)
Abstract
一形態之處理器包括解碼單元,用以解碼使用者等級暫止執行緒指令,其係用以指示第一替代狀態。該處理器亦包括一與該解碼單元耦合之執行單元。該執行單元係用以於使用者特權等級履行該指令。該執行單元回應於該指令,以:(a)暫止使用者等級執行緒之執行,該指令應已從該使用者等級執行緒所接收;(b)將邏輯處理器變遷至該指示的第一替代狀態,該使用者等級執行緒應已運行於該邏輯處理器上;及(c)以一潛時重新開始該使用者等級執行緒之該執行,當該邏輯處理器處於該指示的第一替代狀態時,該潛時應小於當該邏輯處理器處於停止處理器電力狀態時執行緒之執行可被重新開始的潛時之一半。
Description
文中所述之實施例一般係有關於處理器。特別地,文中所述之實施例一般係有關於暫止處理器中之執行緒的執行。
軟體執行緒經常透過對於共用記憶體位置之改變來通訊或同步化。當作一範例,在當鎖定或旗號變為可用時,共用記憶體位置可被改變。當作另一範例,在當其將由軟體執行緒所履行之工作為可用時(例如,於工作佇列中),共用記憶體位置可被改變。
一種軟體執行緒可用來檢測何時對共用記憶體位置做出改變之可能方式是實施輪詢迴路,例如閒置迴路、忙碌迴路、忙碌等待迴路,等等。在該迴路期間,軟體執行緒可重複地執行指令以測試該共用記憶體位置是否已被改變。
100:電腦系統
101:處理器
102-1:第一邏輯處理器
102-2:第二邏輯處理器
103:指令集
104:使用者等級設定監督位址指令
105:使用者等級監督存取暫止執行緒指令
106:異動式記憶體相容的使用者等級暫止執行緒指令
107-1:第一軟體執行緒
107-2:第二軟體執行緒
108:耦合機制
109:記憶體
110:管理系統軟體模組
111:使用者等級應用程式模組
115:共用記憶體區
116-1:第一共用記憶體位置
116-N:第N共用記憶體位置
203:指令
220:同時多線程(SMT)核心
221:匯流排或其他互連
223:匯流排及/或記憶體控制器
224:前端
225:第一組執行緒可分割資源
226:指令指標(IP)
227:複製狀態儲存
228:共用資源
229:第二組執行緒可分割資源
402:邏輯處理器
447:C1或停止處理器電力狀態
448:C0.2處理器電力狀態
449:C0.1處理器電力狀態
450:參考
601:處理器
605:使用者等級監督存取暫止執行緒指令
620:核心管線
625:第一組選擇性執行緒可分割資源
628:第二組選擇性執行緒可分割資源
638:指示
645:使用者等級時間或暫停值
660:管理系統軟體加諸時間或暫停值
661:指示
670:解碼單元
671:執行緒暫止/重新開始單元
672:執行緒暫止/重新開始單元
673:管線清除邏輯
674:分割/退火單元
675:重新開始執行緒啟動單元
676:受監督存取檢測單元
677:事件檢測單元
678:暫止時間監督單元
679:事件
699:儲存位置
900:處理器管線
902:提取級
904:長度解碼級
906:解碼級
908:配置級
910:重新命名級
912:排程級
914:暫存器讀取/記憶體讀取級
916:執行級
918:寫入回/記憶體寫入級
922:例外處置級
924:確定級
930:前端單元
932:分支預測單元
934:指令快取單元
936:指令變換後備緩衝(TLB)
938:指令提取單元
940:解碼單元
950:執行引擎單元
952:重新命名/配置器單元
954:撤回單元
956:排程器單元
958:實體暫存器檔單元
960:執行叢集
962:執行單元
964:記憶體存取單元
970:記憶體單元
972:資料TLB單元
974:資料快取單元
976:第二階(L2)快取單元
990:處理器核心
1000:指令解碼器
1002:晶粒上互連網路
1004:第二階(L2)快取
1006:L1快取
1006A:L1資料快取
1008:純量單元
1010:向量單元
1012:純量暫存器
1014:向量暫存器
1020:拌合單元
1022A-B:數字轉換單元
1024:複製單元
1026:寫入遮蔽暫存器
1028:16寬的ALU
1100:處理器
1102A-N:核心
1106:共用快取單元
1108:特殊用途邏輯
1110:系統代理
1112:環狀為基的互連單元
1114:集成記憶體控制器單元
1116:匯流排控制器單元
1200:系統
1210、1215:處理器
1220:控制器集線器
1240:記憶體
1245:共處理器
1250:輸入/輸出集線器(IOH)
1260:輸入/輸出(I/O)裝置
1290:圖形記憶體控制器集線器(GMCH)
1295:連接
1300:多處理器系統
1314:I/O裝置
1315:額外處理器
1316:第一匯流排
1318:匯流排橋
1320:第二匯流排
1322:鍵盤及/或滑鼠
1324:音頻I/O
1327:通訊裝置
1328:儲存單元
1330:指令/碼及資料
1332:記憶體
1334:記憶體
1338:共處理器
1339:高性能介面
1350:點對點互連
1352、1354:P-P介面
1370:第一處理器
1372、1382:集成記憶體控制器(IMC)單元
1376、1378:點對點(P-P)介面
1380:第二處理器
1386、1388:P-P介面
1390:晶片組
1394、1398:點對點介面電路
1396:介面
1400:系統
1414:I/O裝置
1415:舊有I/O裝置
1500:SoC
1502:互連單元
1510:應用程式處理器
1520:共處理器
1530:靜態隨機存取記憶體(SRAM)單元
1532:直接記憶體存取(DMA)單元
1540:顯示單元
1602:高階語言
1604:x86編譯器
1606:x86二元碼
1608:指令集編譯器
1610:指令集二元碼
1612:指令轉換器
1614:沒有至少一x86指令集核心之處理器
1616:具有至少一x86指令集核心之處理器
本發明可藉由參考其被用以闡明實施例之以下描述及後附圖形而被最佳地瞭解。於圖形中:圖1為其中可實施本發明的實施例之電腦系統的實施例之方塊圖。
圖2為適於實施例之同時多線程(SMT)核心的範例實施例之方塊圖。
圖3為一種履行使用者等級設定監督位址指令的方法之實施例、以及一種執行使用者等級監督存取暫止執行緒指令的方法之實施例的方塊流程圖。
圖4為一種具有C1處理器功率狀態、C0.1處理器功率狀態、及C0.2處理器功率狀態之邏輯處理器的範例實施例之方塊圖。
圖5為一種履行使用者等級監督存取暫止執行緒指令之方法的第二實施例之方塊流程圖,該方法包括使用管理系統軟體加諸的最大暫停值。
圖6為一種可操作以履行使用者等級監督存取暫止執行緒指令之實施例的處理器之實施例的方塊圖。
圖7為一種於異動式記憶體異動內履行異動式記憶體相容的使用者等級暫止執行緒指令以暫止第一使用者等級執行緒而不異常中止該異動式記憶體異動之方法的範例實施例之方塊流程圖。
圖8為一種履行異動式記憶體相容的使用者等級暫止執行緒指令之實施例的方法的第二實施例之方塊流程圖。
圖9A為闡明依序管線之一實施例及暫存器重新命名失序問題/執行管線之一實施例的方塊圖。
圖9B為處理器核心之實施例的方塊圖,該處理器核心包括一耦合至執行引擎單位之前端單元且兩者均耦合至記憶體單元。
圖10A為單處理器核心之實施例的方塊圖,連同與晶粒上互連網路之其連接、以及第二階(L2)快取之其本地子集。
圖10B為圖10A之處理器核心的部分之展開視圖的實施例之方塊圖。
圖11為一種處理器之實施例的方塊圖,該處理器可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形。
圖12為一種電腦架構之第一實施例的方塊圖。
圖13為一種電腦架構之第二實施例的方塊圖。
圖14為一種電腦架構之第三實施例的方塊圖。
圖15為一種電腦架構之第四實施例的方塊圖。
圖16為一種軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。
文中所揭露者為使用者等級暫止執行緒指令,用以執行該些指令之處理器,當處理或執行該些指令時由該些處
理器所履行的方法,及結合一或更多用以處理或執行該些指令之處理器的系統。於以下描述中,提出了多樣特定的細節(例如,特定指令操作、處理器組態、微架構細節、邏輯分割/集成決定、操作之序列,等等)。然而,實施例可被實行而無這些特定的細節。於其他例子中,眾所周知的電路、結構及技術未被詳細地顯示以免妨礙對本說明書之瞭解。
圖1為其中可實施本發明的實施例之電腦系統100的實施例之方塊圖。系統包括至少一處理器101。處理器101係藉由耦合機制108而與記憶體109耦合、或者通訊。記憶體可包括相同或不同類型的一或更多記憶體裝置。耦合處理器與記憶體之各種傳統方式為適當的。例如,耦合機制可包括一或更多匯流排、集線器、記憶體控制器、晶片組組件,等等,以及其各種組合。於各個實施例中,電腦系統可代表桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、小筆電、智慧型手機、伺服器、網路裝置(例如,路由器、開關,等等)、或者具有一或更多處理器之其他類型的系統。
於某些實施例中,處理器101可為通用處理器(例如,用於桌上型電腦、筆記型電腦、或其他電腦之類型的通用微處理器或中央處理單元(CPU))。另一方面,處理器可為特殊用途處理器。適當的特殊用途處理器之範例包括(但不限定於)網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入處理器、數位信號處理
器(DSP)、及控制器(例如,微控制器)。處理器可具有多種複雜指令集計算(CISC)架構、減少指令集計算(RISC)架構、極長指令字元(VLIW)架構、併合架構、其他類型的架構之任一者,或者具有不同架構之組合(例如,不同核心可具有不同架構)。
處理器101包括至少第一邏輯處理器102-1。處理器101可選擇性地包括第一邏輯處理器102-1為單一邏輯處理器,或者處理器可選擇性地包括多數此類邏輯處理器。電腦系統亦包括至少第二邏輯處理器102-2,且可選擇性地包括其他邏輯處理器。虛線被用以顯示其第二邏輯處理器可為處理器101之部分、或者可於處理器101外部。舉例而言,第二邏輯處理器可選擇性地被包括於第二處理器(例如,第二晶粒)上或者於另一組件(例如,直接記憶體存取(DMA)裝置)中。
適當類型的邏輯處理器之範例包括(但不限定於)單執行緒核心、硬體執行緒、執行緒單元、執行緒槽、具有專屬背景或架構狀態儲存和程式計數器之邏輯處理器、具有專屬背景或架構狀態儲存和程式計數器之邏輯處理器(軟體可被獨立地排程於其上),等等。術語核心常被用以指稱置於積體電路上之邏輯,其能夠維持獨立的架構狀態(例如,執行狀態),及其中架構狀態係與專屬執行及某些其他專屬資源關聯。反之,術語硬體執行緒常被用以指稱置於積體電路上之邏輯,其能夠維持獨立的架構狀態,及其中架構狀態係共用針對執行及某些其他資源之存
取。根據哪些資源為共用的及專屬的於既定實施方式,術語核心與硬體執行緒的此等使用之間的界線可能傾向於較無區別的。然而,核心、硬體執行緒、及其他邏輯處理器通常被軟體視為個別的邏輯處理器或處理器元件。通常,軟體(例如,軟體執行緒、處理器、工作負擔,等等)可被排程於該些邏輯處理器之各者上、以及與該些邏輯處理器之各者獨立地關聯。
記憶體可儲存一或更多管理系統軟體模組110,例如,一或更多作業系統模組、一或更多虛擬機器監督模組、一或更多超管理器,等等。記憶體亦可儲存一或更多使用者等級應用程式模組111。此等使用者等級應用程式模組之一些代表性範例為字元處理器應用程式模組、試算表模組、電子郵件應用程式模組、網際網路瀏覽器模組、網路應用程式模組、視頻遊戲應用程式模組,等等。本發明之範圍不限於任何已知類型的應用程式模組。於操作期間,管理系統軟體模組可排程第一邏輯處理器上之第一軟體執行緒107-1,並排程第二邏輯處理器上之第二軟體執行緒107-2。
於運行時,第一及第二軟體執行緒107可操作以存取共用記憶體區115。如圖所示,共用記憶體區可包括第一共用記憶體位置116-1至第N共用記憶體位置116-N,其中數字N可代表適於特定實施方式之任何合理的數字。共用記憶體位置可選擇性地亦被其他軟體執行緒所共用。於某些情況下,第一軟體執行緒可能想要監督並檢測何時第
二軟體執行緒(或另一軟體執行緒)已寫入至及/或修改這些記憶體位置之一或更多者。當作一說明性範例,此可為配合同步化之情況。代表性地,不同記憶體位置可代表鎖定、旗號、消費者-製造商信箱,等等。軟體執行緒可在當相關的鎖定或旗號變為可用時修改既定的記憶體位置,而第一軟體執行緒可能想要能夠監督該記憶體位置以致其可判定何時該鎖定或旗號變為可用。當作另一說明性範例,此可為配合工作排程之情況。代表性地,不同記憶體位置可代表工作佇列、或用以指示其工作係於相關的工作佇列中之旗標。第二軟體執行緒(或其他軟體執行緒)可在當有針對第一軟體執行緒之工作可做時修改記憶體位置,而第一軟體執行緒可能想要能夠監督該記憶體位置,以致其可判定何時有可用的工作供履行。
一種該第一軟體執行緒107-1可得以監督並檢測何時記憶體位置116之既定一者已被修改的可能方式是履行閒置迴路、忙碌迴路、忙碌等待迴路、或其他此等輪詢迴路。此等迴路通常代表僅迴旋於通常為緊密的迴路中之執行緒,其係重複地執行指令以經常地檢查或輪詢其記憶體位置之修改是否已發生。然而,此等迴路通常傾向於具有至少針對某些實施方式之某些缺點。舉例而言,此等迴路通常傾向於在沒有任何實際工作被履行或任何顯著的前向計算進程之情況下損耗電力。同時,此等迴路通常傾向於佔據其可能另潛在地被一或更多其他執行緒所使用之處理器的資源(例如,於同時多線程(SMT)核心之情況
下)。另一可能的方式是透過休眠。然而,休眠通常傾向於較此等輪詢迴路更為牽連的且有更長的潛時,因為其涉及變遷至作業系統並返回。例如,作業系統可能保留其希望等待之執行緒的列表或等待佇列。執行緒可能將其本身置於等待佇列上,並要求作業系統在每當有事件發生時(例如,寫入至記憶體位址發生)將其喚醒。然而,此休眠通常傾向於具有針對使用者等級應用程式之高負擔及潛時,部分地由於必須屈服或變遷至作業系統或其他管理軟體並返回(例如,履行系統呼叫指令以透過第一環變遷而屈服至作業系統,及透過第二環變遷而從作業系統重新開始)。此傾向於使得使用者等級碼之反應時間相當慢。針對極短的等待時間,此等輪詢迴路可能不會過度有問題且可避免與屈服至作業系統休眠關聯的高潛時。反之,針對極長的等待時間,與屈服至作業系統休眠關聯的高潛時亦可能不會過度有問題。然而,特別針對中等歷時等待時間,此等輪詢迴路或屈服至作業系統休眠兩者均通常傾向於較有問題。替代方式可因此提供某些潛在優點,特別針對中間歷時時間週期。
再次參考圖1,第一邏輯處理器102-1具有指令集103。於某些實施例中,指令集可包括選擇性使用者等級設定監督位址指令104之實施例、選擇性使用者等級監督存取暫止執行緒指令105之實施例、及選擇性異動式記憶體相容的使用者等級暫止執行緒指令106之實施例。於某些實施例中,指令集可包括如僅有這些指令之任一者般
少。指令104、105、106為使用者等級指令,其可被履行於使用者等級特權、以及於更高的特權等級(例如,藉由管理系統軟體)。於某些實施例中,使用者等級監督存取暫止執行緒指令105可容許使用者等級軟體(例如,使用者等級應用程式模組111之一)以暫止執行緒;並使用監督機制(其係由使用者等級設定監督位址指令104所設定)以得知該些共用記憶體位置115之一何時已被存取。
有利地,可能無須履行閒置、忙碌、或其他迴路、或者甚至履行任何後續指令。此外,因為使用者等級監督存取暫止執行緒指令為使用者等級指令,其被容許履行於使用者等級特權(以及於更高的特權等級),所以使用者等級應用程式(例如,使用者等級應用程式模組111之一)沒有需要或需求屈服或者變遷至管理系統軟體(例如,管理系統軟體模組110之一),以供該指令被履行。反之,該指令可被履行在當處於(且未離開)使用者等級特權時,且無須履行環變遷或其他變遷至較高等級的特權。再者,藉由容許更快速地暫止並重新開始(例如)以處置如「你有信件」或「去提取」等指示,此可經常容許對於使用者等級執行緒之較佳的回應性。於一形態中,雖然實施例確定不限於此,但用以於使用者等級履行該些指令之能力可協助容許降低潛時,其可被用於配合資料之修改,藉由如邏輯處理器(例如)之相同晶片或晶粒上的晶粒上硬體加速器。此晶粒上硬體加速器通常具有低潛時且常希望使用者等級執行緒得以驅動或者與其互介面,因為通過特
權系統軟體並返回之行程具有較長的潛時。
圖2為適於實施例之同時多線程(SMT)核心220的範例實施例之方塊圖。SMT核心可包括複數硬體執行緒,其可各代表邏輯處理器或處理器元件。各邏輯處理器可操作以履行不同的軟體執行緒。以此方式,多數不同的軟體執行緒可被同時地履行於SMT核心上。
核心220係藉由匯流排及/或記憶體控制器223而與匯流排或其他互連221耦合。匯流排/記憶體控制器可提供指令203以供對於核心之前端224的執行。這些指令可包括該核心之指令集(例如,指令集103)的指令,包括有時候使用者等級設定監督位址指令105、使用者等級監督存取暫止執行緒指令106、及異動式記憶體相容的使用者等級暫止執行緒指令107之任何一或更多者。前端可包括指令提取單元及解碼單元。指令提取單元可提取其正被該核心所履行之多數執行緒的指令,依據多數相應的複製指令指標(IP)226。指令指標可針對每執行緒而被複製以支援多數執行緒。解碼單元可解碼針對該些執行緒之各者的已接收指令。
已解碼指令或控制信號可從前端被提供至第一組執行緒可分割資源225以供進一步處理。舉例而言,第一組執行緒可分割資源可包括已解碼指令佇列。當多數執行緒於該核心內為有效時,執行緒可分割資源可包括邏輯上分離的分割,其可各專屬於特定執行緒。於某些實施例中,各分離的分割可僅含有來自該分割所屬之相應執行緒的指
令。如以下將進一步解釋,於某些替代狀態下,當該核心處於單執行緒模式下時,第一組執行緒可分割資源之分割可選擇性地被退火或者結合以形成專屬於一個單執行緒(或任何剩餘的執行緒)之單一大分割。可分割資源之分割及結合可依據該核心中哪些執行緒為有效的或暫止的而被履行。
該核心亦包括多組複製狀態儲存227。例如,針對其在該核心上為有效之執行緒的各者及/或針對該核心之各硬體執行緒,可以有一組複製狀態儲存。複製狀態儲存可包括(例如)架構暫存器及其他儲存,用以儲存狀態或背景。各組複製狀態儲存可操作以儲存足以保存背景之狀態或者針對相應硬體執行緒或邏輯處理器之架構狀態。藉由複製狀態儲存,多數執行緒可實質上執行而無針對狀態儲存之競爭。此外,相關的暫存器配置邏輯可針對各執行緒而被複製。複製狀態相關邏輯可配合適當的資源分割而操作以準備用於執行之進入的指令。
第一組執行緒可分割資源225可提供已解碼指令至共用資源228。例如,第一組可分割資源可將來自多數執行緒之指令饋送至共用資源,藉由交替於其嘗試提供對於各有效執行緒之持續進步的執行緒之間(例如,以一種公平或一般交替的方式)。例如,執行緒選擇多工邏輯可交替於分割的資源之間以提供對該些有效執行緒之各者的合理存取。共用資源可操作於多數執行緒之指令上。舉例而言,共用資源可包括排程器、執行單元、及管線之暫存器
讀取和寫入部分中的暫存器池。
第二組執行緒可分割資源229可與共用資源228之輸出耦合。第二組執行緒可分割資源可包括撤回或確定資源,諸如(例如)重新排序緩衝器等等。第二組執行緒可分割資源可確定來自各執行緒之指令並更新該些執行緒之適當架構狀態。
應理解:此僅為適當SMT核心之一說明性範例。於其他實施例中,共用以及執行緒可分割資源可被不同地配置。例如,可能沒有可分割資源在該些共用資源的兩端。此外,於其他實施例中,可分割資源無法被嚴格地分割,而是可容許某些指令交叉分割及/或可容許分割根據因素(諸如以該分割來執行之特定執行緒及被執行之執行緒的總數)以改變其大小。此外,資源之不同混合可被指定為共用的、複製的、及分割的資源。
SMT核心之一潛在優點在於其可協助增進處理器利用,透過容許多數軟體執行緒被履行於單核心上。此可特別在當核心具有高度平行架構時之情況,以致其可另傾向於有時候欲從單執行緒提取足夠的平行度以利用所有執行單元是有挑戰性的。然而,利用SMT,多數執行緒可同時地被履行於不同的執行資源中以嘗試較佳地利用那些資源。同時,此一SMT核心可傾向於有助於其遭遇高潛時延遲或者其經常等待事件發生之應用程式。當一執行緒等待高潛時工作完成或者等待一特定事件時,則不同執行緒可被處理。
圖3為一種履行使用者等級設定監督位址指令的方法334之實施例、以及一種履行使用者等級監督存取暫止執行緒指令的方法340之實施例的方塊流程圖。於某些實施例中,這兩個指令可以是可一起使用以暫止執行緒而同時等待對於記憶體位置之受監督的寫入/儲存存取。替代地,單指令可結合兩指令之操作。於各個實施例中,該些方法可由處理器、指令處理設備、數位邏輯裝置、或積體電路來履行。
首先參考履行使用者等級設定監督位址指令之方法334。該方法包括從第一使用者等級執行緒接收使用者等級設定監督位址指令,於區塊335。於各個形態中,指令可被接收於處理器或其一部分上(例如,指令提取單元、解碼單元、匯流排介面單元,等等)。於各個形態中,指令可被接收自處理器外及/或晶粒外來源(例如,自記憶體、互連,等等),或者自處理器上及/或晶粒上來源(例如,自指令快取、指令佇列,等等)。
於某些實施例中,使用者等級設定監督位址指令可明確地指明(例如,透過一或更多欄位或一組位元),或者指示(例如,透過運算碼而隱含地指示),記憶體位址將被監督(例如,監督對於記憶體位址之寫入/儲存存取)。該指令可「指示」監督位址,在於其可傳遞足夠的資訊以容許處理器判定待監督位址,可能利用其他資訊及/或一或更多暫存器(例如,分段暫存器,等等)中之資訊。於一形態中,該指令可指示線性位址,其具有將被監
督以供存取之相應實體位址(例如,根據位址變換)。當作其他範例,受監督位址可被提供以虛擬位址格式,或可被指示為相對位址,或可被指明以其他已知或習知的位址指明方式。監督位址可指示用於監督之記憶體的各個單元。例如,於某些實施例中,記憶體位址可指示快取線。替代地,記憶體位址可指示快取線之一部分、記憶體之特定/選定大小部分(其可帶有相對於不同處理器之快取線大小的不同關係)、或單一位址。監督位址因此可指示一包括由運算元(及更多資料)所指明之資料的單元或者可明確地指示針對資料之所欲單元的位址。於某些實施例中,所指示之記憶體位址或範圍可屬於寫回快取類型。
於某些情況下,該指令可選擇性地具有來源運算元指明欄位,用以指明暫存器(例如,通用暫存器)或其他儲存位置,其係用以儲存用來指示待監督之記憶體位址的資訊。於其他情況下,暫存器(例如,通用暫存器)或其他儲存位置(其係用以儲存用來指示待監督之記憶體位址的資訊)可選擇性地暗示該指令(例如,暗示該指令之運算碼)。例如,處理器可隱含地瞭解(根據該運算碼之辨識)其暫存器或其他儲存位置被用以儲存用來指示該記憶體位址之資訊,即使該指令並未明確地指明或確實地識別該暫存器或其他儲存位置。軟體可儲存其指示該暫存器或其他儲存位置中的待監督記憶體位址之資訊,在使用者等級設定監督位址指令被履行之前。
於區塊位址336,處理器之位址監督邏輯可被設定或
組態成監督對於由使用者等級設定監督位址指令所指示之記憶體位址的存取,回應於及/或由於使用者等級設定監督位址指令。於某些實施例中,此可包括通知位址監督邏輯有關待監督之記憶體位址。例如,待監督之記憶體位址可被儲存於非架構暫存器或其他儲存位置中,於該位址監督邏輯內及/或可由該位址監督邏輯所存取。於某些實施例中,此亦可選擇性地包括增加對於受監督位址之寫入/儲存的可觀察性(例如,使快取代理執行寫入操作,其將影響在該位址監督邏輯可見之該位址監督邏輯上所儲存的資訊)。於某些實施例中,設定或組態該位址監督邏輯以監督對於記憶體位址之存取亦可包括打開、啟動、或致能該位址監督邏輯以監督對於記憶體位址之存取(例如,寫入存取)。
於某些實施例中,用於監督之位址監督邏輯可包括(主要地或者僅僅地)處理器之晶粒上邏輯。例如,位址監督邏輯可被完全地或至少主要地實施以晶粒上硬體(例如,積體電路、電晶體或其他電路元件,等等)、晶粒上韌體(例如,ROM、EPROM、快閃記憶體、或者其他持續或非揮發性記憶體及微碼、微指令、或儲存於其中之其他較低階指令)、或其組合。於其他實施例中,位址監督邏輯可包括晶粒上硬體及/或晶粒上韌體,選擇性地/潛在地具有某軟體。位址監督邏輯亦可於文中被簡稱為監督、位址監督、或監督單元。
於區塊337,設定或組態位址監督邏輯可監督對於指
示的記憶體位址之存取。一旦啟動或致能,則位址監督邏輯可開始連續地操作(與處理器中之其他操作平行地)以監督此等存取。位址監督邏輯可包括比較邏輯,比較待監督之記憶體位址與匯流排循環資訊(例如,接收自匯流排及/或記憶體控制器)。記憶體存取資訊可被獲得自處理器之內部及/或外部匯流排。於某些實施例中,實體位址可被比較。例如,由該指令所指示之線性或其他邏輯位址可由位址變換邏輯(例如,變換後備緩衝(TLB)、頁遺失處置器,等等)所變換以獲得該實體位址。於此等實施例中,位址監督邏輯可觀察其指示實際或潛在寫入至該實體位址之任何匯流排循環。此一循環可為明確寫入循環之形式及/或可針對所有權或者無效化循環之讀取,藉由嘗試取得可快取線之專屬所有權的其他代理,以致其可寫入至該線而無外部匯流排異動。於讀取監督位址之情況下,同調相關邏輯可被啟動並可確立一信號(例如,HIT#信號)以協助防止其他代理獲取所有權,其將容許未來寫入而無需同調廣播。假如檢測到對於受監督記憶體位址(例如,相關快取線或位址範圍)之存取,則該方法可前進至區塊338。否則,位址監督邏輯可持續監督嘗試的存取直到其被撤消。
於區塊338,位址監督邏輯及/或處理器可指示其已檢測到對於受監督位址之嘗試的寫入/儲存存取。此指示可以不同方式被提供於不同實施例中。於各個實施例中,此指示可藉由以下方式而被提供:設定或者修改位元、儲存
或修改暫存器或記憶體位置中之值、傳輸或確立信號(例如,寫入檢測信號)、遞增計數器,等等。於某些實施例中,此指示可代表其另一邏輯處理器已修改共用記憶體位置(例如,指示其鎖定或旗號為可用的、指示佇列中之待履行工作的可用性,等等)。如以下將進一步解釋,於某些實施例中,此指示可被用以重新開始已暫止執行緒之執行。
再次參考圖3,接下來將描述履行使用者等級監督存取暫止執行緒指令之方法340。使用者等級監督存取暫止執行緒指令可被接收,於區塊341。於某些實施例中,使用者等級監督存取暫止執行緒指令可被接收自相同的第一使用者等級執行緒(例如,於區塊335使用者等級設定監督位址指令被接收自該第一使用者等級執行緒)。
於某些實施例中,使用者等級監督存取暫止執行緒指令可選擇性地指明或者另外指示暫停值(例如,當作來源運算元)。暫停值可代表有限或最大值(如由使用者等級監督存取暫止執行緒指令所指示者),針對將處於暫止狀態之第一使用者等級執行緒,在其對於受監督位址及/或其他重新開始執行緒事件之存取未被事先檢測的事件中。暫停值可被表示以各種不同的方式,諸如(例如)一值,計數器將被遞增高達該值、一值,計數器將被遞減低達該值、一值,計數器將從該值被遞減至零、一值,計時器將計數高達該值、一值,計時器將計數低達該值、一值,計時器將從該值計數至零、全球時脈或其他時脈歷時、最終
全球時脈或其他時脈時間、處理器時脈循環之數,等等。為了簡明,暫停值或時間可不同地代表時間之遞增、歷時、或實際停止時間(例如,為了說明差異,重新開始於時間8:01:32:32、或從現在起重新開始以一秒的1/10000)。
暫停值可代表使用者等級值(例如,由使用者等級應用程式所提供及/或於使用者等級特權所提供)。編程器及/或使用者等級應用程式可根據該暫止應有多長來選擇暫停值。於某些實施例中,該指令可具有用以指明或者指示該暫停值之位元或欄位。當作一範例,該指令可具有用以指明該暫停值之4位元、6位元、8位元、或其他位元長度即刻。於其他實施例中,該指令可具有位元或欄位,用以指示其用來儲存資訊(用以指明或者指示該暫存器)之暫存器或其他儲存位置。替代地,此一暫存器或其他儲存位置可選擇性地暗示該指令(例如,暗示其運算碼)。替代地,固定的使用者等級暫停值可選擇性地被用於該指令(例如,固定於及/或暗示該運算碼)。
於某些實施例中,使用者等級監督存取暫止執行緒指令可指明或者指示選擇性地可能的替代狀態之既定一者,其係容許相關邏輯處理器所將被變遷入之指令(當第一使用者等級執行緒被暫止時)。於某些實施例中,使用者等級監督存取暫止執行緒指令之運算碼可選擇性地容許此等多數可能替代狀態之任一者,且該指令之另一非運算碼部分可指示多數可能替代狀態之一。替代地,於其他實施例
中,不同的運算碼可選擇性地被用於不同的狀態。
該指令可以不同方式指明或者指示替代狀態於不同實施例中。於某些實施例中,該指令可具有一或更多位元或欄位,其可具有用以指明、選擇、或者指示多數可能替代狀態之既定一者的不同值。當作一說明性範例,該指令之單一位元可具有第一值(例如,被設為二元一)以指示第一替代狀態、或第二不同值(例如,被清除至二元零)以指示第二不同的替代狀態。替代地,二或更多位元可選擇性地被用以選擇於三或更多不同的可能替代狀態之間。於其他實施例中,該指令可具有位元或欄位,用以指示其用來儲存資訊(用以指明、選擇、或者指示二或更多可能替代狀態之既定一者)之暫存器或其他儲存位置。替代地,此一暫存器或其他儲存位置可選擇性地暗示該指令(例如,暗示其運算碼)。於又其他實施例中,由該指令所指示之暫停值的大小本身可被用以指示多數不同的可能替代狀態之既定一者。當作一說明性範例,小於臨限值或預定值之暫停值的大小可指示第一替代狀態,或者大於臨限值或預定值之暫停值的大小可指示第二不同的替代狀態。三或更多不同狀態可藉由使用二或更多不同的臨限值或預定值而被類似地實施。
容許該指令指示多數可能替代狀態之既定一者可協助容許編程器及/或使用者等級軟體指示針對潛時應有多長以重新開始執行及/或電力保存狀態應多積極地被使用(當執行緒被暫止時)等等的偏好(但並非必要)。於某
些實施例中,多數可能替代狀態可包括邏輯處理器相對較長的重新開始執行潛時狀態(例如,休憩狀態)、及邏輯處理器相對較短的重新開始執行潛時狀態(例如,較輕微休憩狀態)。如文中所使用,「較長」及「較短」被使用為相對用語(亦即,相對於彼此),而非絕對用語。再者,「較輕微休憩」狀態中之「較輕微」表示其相對於休憩是更輕微的。於某些實施例中,相對較長的重新開始執行潛時狀態(例如,休憩狀態)亦可具有相對較為積極的電力保存手段,而相對較短的重新開始執行潛時狀態(例如,較輕微休憩狀態)可具有相對較不積極的電力保存手段。再次地,此背景下之「較長」及「較短」於文中被使用為相對用語(亦即,相對於彼此),而非絕對用語。假如想要的話,多數狀態可選擇性地包括三或更多不同的狀態,其各具有不同的相對重新開始執行潛時及/或電力保存積極度之等級。
於某些實施例中,針對使用者等級監督存取暫止執行緒指令之一或更多可能的/容許的替代狀態之至少一者(或者於某些實施例選擇性地所有各者)可具有較C1或停止處理器電力狀態(如由先進組織與電力介面(ACPI)之目前版本所定義者)更短的(或至少不更長的)重新開始執行潛時。來自C1(或ACPI之停止處理器電力狀態)的重新開始執行潛時有時被稱為「基本上瞬時地」,雖然實際上其通常具有一千時脈循環之等級。如文中所使用,「C1狀態」及「停止處理器電力狀態」係指
稱那些由ACPI所定義者。代表性地,因為該指令為使用者等級指令,所以於某些情況下其為可用的,假如使用者等級碼可被容許(或者於某些實施例中可僅被容許)具有較C1或停止處理器電力狀態更短的(或至少不更長的)重新開始執行潛時。當作一可能範例,管理系統軟體可能不希望使用者等級碼能夠自主地進入如C1(或停止處理器電力狀態)般深的替代狀態,以致其管理系統軟體可具有對於平台電力管理更多的控制。當作一可能原因,管理系統軟體可用來測量不同C狀態下所花費之時間量的性能監督計數器及/或其他方式可能潛在地為不準確的,假如使用者等級碼被容許自主地進入C1或停止處理器電力狀態、或更深的睡眠狀態時。
於某些實施例中,該指令可選擇性地容許第一替代狀態(例如,較輕微的休憩狀態),其可被表示以ACPI C狀態標記為C0.1狀態。於某些實施例中,C0.1狀態可具有重新開始執行潛時,其不長於ACPI之C1或停止處理器電力狀態的重新開始執行潛時之約一半(例如,不大於約五百時脈循環)。於各個實施例中,C0.1狀態之重新開始執行潛時可不大於C1或停止處理器電力狀態之重新開始執行潛時的約三分之一(例如,不大於約三百三十三時脈循環)、不大於C1或停止處理器電力狀態之重新開始執行潛時的約四分之一(例如,不大於約二百五十時脈循環)、不大於C1或停止處理器電力狀態之重新開始執行潛時的約五分之一(例如,不大於約二百時脈循環)、不
大於C1或停止處理器電力狀態之重新開始執行潛時的約八分之一(例如,不大於約一百二十五時脈循環)、不大於C1或停止處理器電力狀態之重新開始執行潛時的約十分之一(例如,不大於約一百時脈循環)。於某些實施例中,該指令可選擇性地容許第二替代狀態(例如,休憩狀態),其可被表示以ACPI C狀態標記為C0.2狀態。於某些實施例中,C0.2狀態可具有重新開始執行潛時,其係稍微短於(或至少不長於)C1或停止處理器電力狀態的重新開始執行潛時(例如,不長於約一千時脈循環之等級)。
於某些實施例中,藉由容許使用者等級指令僅具有其不顯著地大於前述C0.2狀態之重新開始執行潛時的重新開始執行潛時,該使用者等級指令可留存其僅有管理系統軟體可進入深如C1或停止處理器電力狀態之睡眠狀態的限制。於某些實施例中,管理系統軟體可用來測量不同C狀態下所花費之時間量的性能監督計數器及/或其他方式可能潛在地將C0.1或C0.2中所花費的時間視為ACPI之C0或有效狀態下所花費的時間。換言之,即使C0.2狀態可潛在地具有如C1或停止處理器電力狀態之類似的重新開始潛時及/或類似的電力節省,管理系統軟體仍可將其視為有效狀態,其將不是針對C1或停止狀態之情況。
再次參考圖3,於某些實施例中,處理器可選擇性地履行有關位址監督邏輯是否被啟動之初始判定,於區塊342。此可選擇性地被執行在暫止該第一使用者等級執行
緒之執行以前。舉例而言,當設定位址監督邏輯被履行以回應不同的指令時,此可協助確保其位址監督邏輯被實際地設定並啟動,其可協助避免其中該第一執行緒可能因為位址監督邏輯未被實際地啟動而被暫止較所欲者更長的潛在狀況。然而,此為選擇性的而非必要的。假如該判定是位址監督邏輯已被啟動(亦即,判定為「是」),則該方法可前進至區塊343。否則,假如位址監督邏輯未被啟動(亦即,判定為「否」),則該方法可前進至區塊346。
於區塊343,第一使用者等級執行緒之執行可被暫止且該第一使用者等級執行緒所被運行於其上之邏輯處理器可被變遷至指示的替代狀態,回應於使用者等級監督存取暫止執行緒指令(例如,回應於被解碼之該指令)。如文中所使用者,暫止執行緒之執行包括暫時地停止履行該執行緒之額外指令直到該執行緒被重新開始。於某些實施例中,其中邏輯處理器所被變遷至指示的替代狀態之方式可根據及/或取決於由使用者等級監督存取暫止執行緒指令所指示的替代狀態。例如,於某些實施例中,當相對較短的重新開始執行潛時狀態(例如,較輕微的休憩狀態)被指示時所採行以變遷該邏輯處理器的該組動作可能在至少某些方面不同於當相對較長的重新開始執行潛時狀態(例如,休憩狀態)被指示時所採行的該組動作。
例如,於某些實施例中,當相對較短的重新開始執行潛時狀態(例如,較輕微的休憩狀態)被指示時,則先前一開始配置給第一使用者等級執行緒之一或更多組可分割
資源(例如,運行於第一SMT硬體執行緒上)無法被熔合或退火以供由第二軟體執行緒所使用(例如,運行於相同核心之第二SMT硬體執行緒上);但當相對較長的重新開始執行潛時狀態(例如,休憩狀態)被指示時,則這些一或更多組可分割資源配置可被熔合或退火以供由第二軟體執行緒所使用。例如,當相對較短的重新開始執行潛時狀態進入時,第一使用者等級執行緒可被暫止,但可留存相對較多的其可分割資源。通量仍可被提升,因為當第一使用者等級執行緒被暫止時共用資源可專屬地由其他執行緒所使用。反之,當相對較長的重新開始執行潛時狀態進入時,第一使用者等級執行緒可被暫止,而同時其先前專屬於該第一使用者等級執行緒之其可分割資源的相對更多者(例如,針對圖2所討論之那些的任一者)可被釋出(當其被暫止時)。此可容許其他執行緒使用這些資源,其可協助增加這些其他執行緒之通量。然而,釋出這些資源可能有的代價是與熔合/結合這些可分割資源關聯之一些增加的重新開始執行潛時。因此,此等可分割資源可被熔合/結合於相對較長的所欲重新開始執行潛時,但無法(或至少不太能)於相對較短的所欲重新開始執行潛時。此僅為一說明性範例。於其他實施例中,兩個狀態可用其他方式而被不同地微架構地處置。例如,於另一實施例中,於較短的重新開始執行潛時狀態(例如,較輕微的休憩狀態或C0.1狀態)下,時脈無法被停止或閘通至至少某些硬體資源,而於較長的重新開始執行潛時狀態(例
如,休憩狀態或C0.2狀態)下,時脈可被停止或閘通至這些硬體資源。
以上針對區塊343係討論其處理器(回應於該指令)可暫止第一使用者等級執行緒之執行,且將邏輯處理器變遷為指示的替代狀態。應理解:此討論涵蓋(於某些實施例中)其處理器可選擇性地首先判定或確保滿足一或更多條件的可能性。舉例而言,這些條件可相關於處理器是否將能夠重新開始執行及/或檢測重新開始執行緒執行事件及/或其他條件,其中不希望容許邏輯處理器進入指示的替代狀態。用於特別實施方式之特定條件可部分地由於模型特定的及/或微架構的設計。當作一範例,這些條件可判定處理器是否目前不具有得以可靠地檢測出是否存取一將需被監督的位址所需之資源。於某些實施例中,假如滿足此等條件,則處理器可選擇性地決定暫止使用者等級執行緒之執行並將邏輯處理器變遷為不同於所指示者的替代狀態,或者可決定完全不暫止使用者等級執行緒之執行。因此,暫止使用者等級執行緒之執行、及將邏輯處理器變遷為指示的替代狀態(回應於該指令)係涵蓋使其滿足一或更多條件。
於區塊344及345,可判定是否重新開始第一使用者等級執行緒之執行。明確地,於區塊344,可判定是否有指示其已檢測到對於受監督記憶體位址(例如,由使用者等級設定監督位址指令所指示之記憶體位址)之存取。例如,於某些實施例中,此判定可關聯其判定位址監督邏輯
是否已指示其已檢測到對於受監督之存取,於區塊338。於各個實施例中,此一判定可藉由判定位元之值、暫存器中之值、或記憶體位置中之值(其係指示對於受監督位址之存取是否已被檢測)來做出。於又其他實施例中,此一判定可藉由判定信號是否已被傳輸或確立(其係指示對於受監督位址之存取是否已被檢測)來做出。於某些實施例中,判定有一關於已檢測到對於受監督記憶體位置之存取的指示可代表判定其另一邏輯處理器已修改記憶體位址上之共用記憶體位置(例如,指示其鎖定或旗號為可用、指示佇列中之待履行工作的可用性,等等)。注意:無額外指令需被履行以重新開始第一使用者等級執行緒。反之,第一使用者等級執行緒可保持暫止且處理器(例如,致能的位址監督邏輯及執行緒暫止和重新開始邏輯)可自主地監督並檢測對於受監督記憶體位置之記憶體存取,且造成第一使用者等級執行緒之重新開始而無須執行任何額外指令。假如有一關於已檢測到對於受監督記憶體位址之存取的指示(亦即,「是」為區塊344上之判定),則該方法可前進至區塊346。否則,假如沒有關於已檢測到對於受監督記憶體位址之存取的指示(亦即,「否」為區塊344上之判定),則該方法可前進至區塊345。
於區塊345,可選擇性地做出有關使用者等級暫停值(其係由使用者等級監督存取暫止執行緒指令所指示)是否已截止之判定。如先前所述,此暫停值之使用為選擇性而非必要的。暫停值可代表讓第一使用者等級執行緒保留
於暫止執行狀態之最大值,如由使用者等級監督存取暫止執行緒指令所指示者。此判定可以不同方式被做出於不同實施例中。例如,於各個實施例中,此可包括判定其在當第一使用者等級執行緒被暫止時的時刻附近開始之計數器是否已遞增高達暫停值或者已遞減低至零或一從暫停值開始的停止值;判定從第一使用者等級執行緒被暫止之時刻附近開始所經歷的時間週期是否等於或大於暫停值;判定從第一使用者等級執行緒被暫止之時刻附近開始是否已發生了暫停值數目的時脈循環,等等。假如暫停值已截止(亦即,「是」為區塊345上之判定),則該方法可前進至區塊346。否則,假如暫停值尚未截止(亦即,「否」為區塊345上之判定),則該方法可再次回到區塊344。
於區塊346,執行(例如,第一使用者等級執行緒的)可被重新開始自其邏輯處理器先前所變遷入之指示的替代狀態。例如,假如於區塊344-345之一上做出「是」判定,則第一使用者等級執行緒之執行可在接續於使用者等級監督存取暫止執行緒指令後之第一使用者等級執行緒的下一指令處重新開始;或者假如任何中斷或某應由特權軟體所處置之其他事件被檢測時(未顯示),則執行可轉移至處置器。
於某些實施例中,執行可被重新開始之潛時可取決於特別指示的替代狀態。例如,其中執行可被重新開始自指示的第一替代狀態之方式可根據及/或取決於:特定指示的替代狀態以及哪些操作需被履行以將邏輯處理器變遷回
至能夠執行狀態。經常,此重新開始可實質上為其被採取以將邏輯處理器變遷至指示的替代狀態(於區塊343)之動作的反轉。例如,於某些實施例中,當執行被重新開始自相對較短的重新開始執行潛時狀態(例如,較輕微的休憩狀態)時,可能無須結合/熔合一或更多組可分割資源(例如,其可保持分割並配置給第一使用者等級執行緒);而當執行被重新開始自相對較長的重新開始執行潛時狀態(例如,休憩狀態),則先前熔合/退火的資源可被再分割及再配置。
於某些實施例中,指示的替代狀態可具有較ACPI之C1或停止處理器電力狀態更低的重新開始執行潛時。於此等實施例中,執行可被重新開始以一潛時,自當邏輯處理器處於指示的替代狀態下時,該潛時比其執行緒之執行可被重新開始在當邏輯處理器處於ACPI之C1或停止處理器電力狀態下時的潛時小於一半、小於三分之一、小於四分之一、小於五分之一、小於八分之一、小於十分之一、或甚至更小。於某些實施例中,選擇性地一或更多其他可能的/容許的替代狀態亦可選擇性地被支援以重新開始執行潛時,其係小於及/或至少不大於ACPI之C1或停止處理器電力狀態的那些潛時。提供二或更多替代狀態可協助提供權衡選項給編程器或使用者等級軟體以於如下兩者之間選擇:相對較長的重新開始執行潛時狀態(其傾向於藉由容許資源之更多釋出來增進另一SMT執行緒之性能)、以及相對較短的重新開始執行潛時狀態(其通常無
法容許藉由其他SMT執行緒之如此多的性能增進,但其通常容許第一使用者等級執行緒被更快速地重新開始)。
方法334及340已被顯示並描述以相對基本的形式,雖然操作可選擇性地被加至及/或移除自該些方法。例如,假如想要的話,方法340可選擇性地被修改以移除其處理器或其他設備容許多數替代的可能狀態而配合履行使用者等級監督存取暫止執行緒指令之形態,及選擇性地移除其使用者等級監督存取暫止執行緒指令指示這些多數可能的替代狀態之一的形態。反之,單一固定的替代狀態可選擇性地被使用(例如,較輕微的休憩狀態)。當作另一範例,於其他實施例中,方法340可選擇性地被修改以包括加諸管理系統軟體及/或特權等級的最大時間或暫停值(例如,如以下將配合圖5而進一步描述者)。當作又另一範例,雖然為了簡化而未顯示,於某些實施例中,方法340可選擇性地容許一或更多其他類型的事件造成第一使用者等級執行緒被重新開始,雖然此並非必要。例如,一或更多額外判定區塊(類似於區塊344及345)可選擇性地被加入。於各個實施例中,這些判定區塊可判定是否已檢測到未標記的中斷(NMI)、系統管理中斷(SMI)、除錯例外、機器檢查例外、初始信號、重設信號、某類型的外部中斷(假如其將被傳遞至軟體的話)、一改變位址變換之事件,等等,以及假如檢測到的話造成第一使用者等級執行緒之執行重新開始。此外,雖然方法之流程圖示係顯示特定順序的操作,但該順序僅為範例而非必要。替
代實施例可以不同的順序履行某些操作、結合某些操作、重疊某些操作,等等。例如,於區塊344及345之判定可選擇性地被履行以不同的順序及/或同時地,等等。
於以上描述中,已顯示及描述回應於兩不同指令(例如,兩不同運算碼)之方法。使用兩不同的指令以設定位址監督邏輯並暫止執行緒可傾向於提供編程器附加的彈性及/或傾向於容許更多的編程。替代地,於其他實施例中,前述操作可取代地被履行以回應於及/或由於單指令(例如,單運算碼)。
圖4為具有一組適當的替代電力狀態之範例實施例的邏輯處理器402之範例實施例的方塊圖。邏輯處理器具有或支援C1或停止處理器電力狀態447。邏輯處理器可選擇性地具有或支援選擇性的C0.2處理器電力狀態448。邏輯處理器具有或支援C0.1處理器電力狀態449。如一般於參考450所示,C0.1電力狀態之重新開始執行潛時可小於C0.2處理器電力狀態之重新開始執行潛時,而C0.2電力狀態之重新開始執行潛時可小於(類似於)或約略等於(但非實質上大於)C1或停止處理器電力狀態之重新開始執行潛時。
圖5為一種履行使用者等級監督存取暫止執行緒指令之方法540的第二實施例之方塊流程圖,該方法包括使用管理系統軟體加諸的最大暫停值。於各個實施例中,該些方法可由處理器、指令處理設備、數位邏輯裝置、或積體電路來履行。方法540具有與圖3之方法340的某些類似
性。為了避免混淆說明,將主要地描述針對圖5之方法的不同及/或額外形態,而不重複相對於圖3之所有選擇性地類似或共同形態及細節。然而,應理解:圖3之方法的前述形態及細節(以及其所述之變化)亦可選擇性地應用於圖5之方法,除非另有聲明或另為清楚明白者。主要地,圖5之方法的不同點在於其進一步加入使用管理系統軟體加諸的最大暫停值(例如,如配合區塊560所討論者),並容許多數替代狀態為可選的。圖5之方法可被履行,結合其履行圖3之使用者等級設定監督位址指令的前述方法334,雖然本發明之範圍未限制於此形態。
參考圖5,使用者等級監督存取暫止執行緒指令可被接收自第一使用者等級執行緒,於區塊541。於某些實施例中,該指令可選擇性地指明或者指示使用者等級暫停值(例如,選擇性地如配合圖3之先前所述者)。於某些實施例中,該指令可指明或者指示選擇性地多數可能的替代狀態之既定一者,其係容許當第一使用者等級執行緒被暫止時邏輯處理器所將被變遷入之指令(例如,選擇性地如配合圖3之先前所述者),雖然此並非必要。假如被使用,則此等多數替代狀態可選擇性地類似於或相同於如配合圖3之那些先前所述的任一者。然而,選擇性的(非必要的)其處理器或其他設備(其中係履行該方法)可操作以支援此等多數替代狀態,配合履行該指令。再者,選擇性的(非必要的)其指令(例如,其運算碼)係操作以支援此等多數替代狀態。於某些實施例中,取代地處理器及
/或指令可選擇性地僅指示並支援單一替代狀態在當第一執行緒被暫止時(例如,單一替代狀態可選擇性地暗示該指令(例如,其運算碼))。例如,較輕微的休憩狀態及/或C0.1狀態可選擇性地暗示。
再次參考圖5,於某些實施例中,處理器可選擇性地履行有關位址監督邏輯是否被啟動之初始判定,於區塊542。例如,此可選擇性地被履行如先前配合圖3之區塊342所述者。假如位址監督邏輯被啟動(亦即,判定為「是」),則該方法可前進至區塊543。否則,假如位址監督邏輯未被啟動(亦即,判定為「否」),則該方法可前進至區塊546。
於區塊543,第一使用者等級執行緒之執行可被暫止,而邏輯處理器(第一使用者等級執行緒已被運行於其上)可被變遷為指示的替代狀態。如先前所述,根據替代狀態,可能需要指示的不同潛時來重新開始執行(例如,由於當變遷至指示的替代狀態時所做出的改變)。例如,此可選擇性地被執行如先前配合圖3之區塊343所述者。
於區塊544、545、及560,可判定是否重新開始(例如,第一使用者等級執行緒之)執行。明確地,於區塊544,可判定是否有指示其已檢測到對於受監督記憶體位址之存取。例如,此可選擇性地被執行如先前配合圖3之區塊344所述者。假如有一關於已檢測到對於受監督記憶體位址之存取的指示(亦即,判定為「是」),則該方法可前進至區塊546。否則,假如沒有一關於已檢測到對於
受監督記憶體位址之存取的指示(亦即,判定為「否」),則該方法可前進至區塊545。
於區塊545,可選擇性地做出有關由該指令所指示的使用者等級暫停值是否已截止之判定。例如,此可選擇性地被執行如先前配合圖3之區塊345所述者。假如暫停值已截止(亦即,判定為「是」),則該方法可前進至區塊546。否則,假如暫停值尚未截止(亦即,判定為「否」),則該方法可前進至區塊560。
於區塊560,可做出有關管理系統軟體加諸的及/或特權等級的最大時間或暫停值是否已截止之判定。為了簡化,管理系統軟體加諸的及/或特權等級的最大時間或暫停值亦可於文中被簡稱為管理系統軟體加諸的暫停值。管理系統軟體加諸的暫停值可代表有限或最大時間或歷時相關的值,其為第一使用者等級執行緒可被容許以保持暫止於其事先尚未檢測到對於受監督位址之存取(例如,於區塊544)及/或選擇性使用者等級暫停值尚未截止(例如,如於區塊545所判定)的事件中。舉例而言,加諸管理系統軟體加諸的暫停值可協助防止第一使用者等級執行緒使用處理器資源太久,當管理系統軟體可能想要將其用於另外用途時。相反於配合區塊545所討論的使用者等級暫停值,管理系統軟體加諸的暫停值可由管理系統軟體(例如,作業系統模組、虛擬機器監督模組,等等)所提供及/或來自特權等級的操作(例如,至少高於使用者等級特權)。因此,於某些實施例中,最大暫停值可選擇性地被
提供自使用者等級特權或觀點、以及自特權等級或觀點。
管理系統軟體加諸的暫停值可被表示以各種不同的方式,諸如(例如)一值,計數器將被遞增高達該值、一值,計數器將被遞減低達該值、一值,計數器將從該值被遞減至零、一值,計時器將計數高達該值、一值,計時器將計數低達該值、一值,計時器將從該值計數至零、全球時脈或其他時脈歷時、處理器時脈循環之數,等等。
於某些實施例中,管理系統軟體加諸的暫停值可被儲存或提供於暫存器或其他儲存位置中,藉由管理系統軟體及/或來自特權等級之執行。例如,於某些實施例中,處理器可具有模型特定暫存器(MSR)、或其他控制暫存器,其可被用以儲存管理系統軟體加諸的暫停值。MSR或其他控制暫存器可選擇性地暗示該指令(例如,暗示其運算碼)而無須被明確地指明。替代地,管理系統軟體加諸的暫停值可選擇性地被不同地組態。
假如管理系統軟體加諸的暫停值尚未截止(亦即,於區塊560之判定為「否」),則該方法可再次回到區塊544,其中更多判定可選擇性地被做出於重複迴路中直到檢測到從該迴路的離開情況。替代地,假如管理系統軟體加諸的暫停值已截止(亦即,「是」為區塊560上之判定),則該方法可前進至區塊561。
於區塊561,可儲存或者提供指示其第一使用者等級執行緒之暫止係由於管理系統軟體加諸的暫停值之截止而被結束。此可代表對於第一使用者等級執行緒及/或其相
關的使用者等級應用程式之指示或通訊,其第一使用者等級執行緒係因為管理系統軟體加諸的暫停值截止及/或管理系統軟體限制它而被重新開始,不是為了其他原因(例如,檢測到受監督記憶體存取、選擇性使用者等級暫停值截止、檢測到中斷或其他事件,等等)。
於區塊561之指示可以不同方式被提供於不同實施例中。例如,於各個實施例中,此指示可藉由以下方式而被提供:設定或者修改一或更多位元;設定或者修改一或更多旗標(例如,於架構旗標或狀態暫存器中之一或更多位元);儲存一值於暫存器或記憶體位置中;或者傳輸或確立一或更多信號。於一特定範例實施例中,此指示可藉由以下方式而被提供:修改旗標(例如,設定一位元,其係相應於一在用以實施架構旗標之暫存器中的旗標),諸如(例如)零旗標、攜載旗標、新的專屬旗標(假如想要的話)、或某其他旗標。
第一使用者等級執行緒及/或其相關的使用者等級應用程式可得以接收或觀察此一指示,其第一使用者等級執行緒暫止係由於管理系統軟體加諸的暫停值而被結束。於某些實施例中,此指示可選擇性地被使用為介於管理系統軟體與使用者等級應用程式之間的通訊或通知,其管理系統軟體具有其想要配合處理器資源配置(其目前係配置給第一使用者等級執行緒)來執行的更好事情及/或其管理系統軟體想要第一使用者等級執行緒讓給它。選擇性地,可能有瞭解、同意、或合約,其在此一指示被提供之事件
中,第一使用者等級執行緒應轉移控制至管理系統軟體,諸如(例如)藉由讓給作業系統模組並本身進入與睡眠狀態關聯的等待佇列。然而,實施此一瞭解或同意是選擇性而非必要的。
於區塊546,執行(例如,第一使用者等級執行緒的)可被重新開始自其邏輯處理器已被變遷入之指示的替代狀態。例如,此可選擇性地被執行如先前配合圖3之區塊346所述者。於某些實施例中,執行可被重新開始之潛時可取決於特別指示的替代狀態。例如,於某些實施例中,執行可被重新開始以一潛時,自當邏輯處理器處於指示的替代狀態下時,該潛時比其執行緒之執行可被重新開始在當邏輯處理器處於ACPI之C1或停止處理器電力狀態下時的潛時小於一半、小於三分之一、小於五分之一、小於八分之一、甚至更小。於某些實施例中,選擇性地一或更多其他替代狀態可選擇性地被支援以重新開始執行潛時,其係小於或至少不大於ACPI之C1或停止處理器電力狀態的那些潛時。
方法540已被顯示並描述以相對基本的形式,雖然操作可選擇性地被加至及/或移除自該方法。例如,雖然為了簡化而未顯示,於某些實施例中,方法340可選擇性地容許一或更多其他類型的事件造成第一使用者等級執行緒被重新開始,雖然此並非必要。例如,一或更多額外判定區塊(類似於區塊344及345)可選擇性地被加入。於各個實施例中,這些判定區塊可判定是否已檢測到非遮蔽中
斷(NMI)、系統管理中斷(SMI)、除錯例外、機器檢查例外、初始信號、重設信號、某類型的外部中斷(假如其將被傳遞至軟體的話)、一改變位址變換之事件,等等,以及假如檢測到的話造成第一使用者等級執行緒之執行重新開始。當作另一範例,假如想要的話(於某些實施例中),管理系統軟體模組及/或執行之特權等級亦可選擇性地具有其他控制,諸如(例如)一種當第一使用者等級執行緒被暫止時用以調節或控制或判定是否容許進入替代狀態之能力。例如,於某些實施例中,管理系統軟體及/或執行之特權等級可選擇性地操作以容許進入相對較短的重新開始執行潛時但防止進入相對較長的重新開始執行潛時狀態。此外,雖然方法之流程圖示係顯示特定順序的操作,但該順序僅為範例而非必要。替代實施例可以不同的順序履行某些操作、結合某些操作、重疊某些操作,等等。例如,於區塊544、545及560之判定可選擇性地被履行以不同的順序及/或同時地,等等。
圖6為一種可操作以履行使用者等級監督存取暫止執行緒指令605之實施例的處理器601之實施例的方塊圖。於某些實施例中,圖6之處理器可操作以履行圖3-5之任何一或更多者的方法。針對圖3-5之任一者的方法所描述之形態及特定選擇性細節(包括例如不同的可能替代狀態和用以將邏輯處理器變遷至那些替代狀態及相關重新開始執行潛時之所述方式、以及管理系統軟體加諸的最大暫停值和其所述的使用)亦可選擇性地應用於圖6之方法。替
代地,圖6之處理器可履行類似的或不同的方法。此外,圖3-5之任何一或更多的方法可由如圖6之相同的、類似的、或不同的處理器所履行。
於操作期間,處理器可接收來自第一使用者等級軟體執行緒之使用者等級監督存取暫止執行緒指令605。指令可代表巨集指令、組合語言指令、機器碼指令、或者處理器之指令集的其他指令或控制信號。於某些實施例中,指令可選擇性地指明或者指示選擇性使用者等級指明時間或暫停值(例如,當作來源運算元)。例如,時間或暫停值可選擇性地類似於(或相同於)配合圖3之區塊345所討論的時間或暫停值。於一形態中,時間或暫停值可代表有限或最大值(如由使用者等級監督存取暫止執行緒指令所指示者),針對將處於暫止狀態之第一既定執行緒,在其尚未事先檢測到另一重新開始的事件中。用以表達使用者等級時間或暫停值之先前討論的各種不同方式均為適當的。舉例而言,使用者等級暫停值可選擇性地被儲存於指明或指示的暫存器中或由該指令之即刻所提供。
於某些實施例中,使用者等級監督存取暫止執行緒指令605可指明或者指示選擇性地多數可能的替代狀態之既定一者,其係容許邏輯處理器所將被變遷入之指令(當第一使用者等級執行緒被暫止時),雖然此並非必要。其中該指令可指示該替代狀態之先前討論的各種不同方式、以及各種先前所述的替代狀態(例如,不限於休憩狀態及較輕微的休憩狀態)均為適當的。替代地,僅單一替代狀態
可選擇性地由該指令所支援。例如,該指令之運算碼可隱含地指示單一支援的替代狀態以致其可能不需要與該指令關聯的額外資訊來於此等替代狀態之間選擇。
再次參考圖6,處理器包括核心管線620。於某些實施例中,核心管線為硬體多線程的,諸如(例如)SMT。核心管線包括解碼單元或解碼器670。解碼單元可接收並解碼使用者等級監督存取暫止執行緒指令605。解碼單元可輸出一或更多相對較低等級的指令或控制信號(例如,一或更多微指令、微操作、微碼進入點、已解碼指令或控制信號,等等),其係反應、代表、及/或被衍生自相對較高等級的使用者等級監督存取暫止執行緒指令。於某些實施例中,解碼單元可包括:一或更多輸入結構(例如,埠、互連、介面),用以接收該指令、指令辨識並解碼邏輯,其係耦合以辨識並解碼該指令、及一或更多輸出結構(例如,埠、互連、介面),其係耦合以輸出較低階指令或控制信號。解碼單元可使用各種不同的機制來實施,包括(但不限定於)微碼唯讀記憶體(ROM)、查找表、硬體實施方式、可編程邏輯陣列(PLA)、及適於實施解碼單元之其他機制。
於某些實施例中,取代其使用者等級監督存取暫止執行緒指令605被直接地提供至解碼單元,可選擇性地使用指令仿真器、翻譯器、編輯器、解譯器、或其他指令轉換模組。各種類型的指令轉換模組可被實施以軟體、硬體、韌體、或其組合。於某些實施例中,指令轉換模組可位於
處理器外部,諸如(例如)於分離的晶粒上及/或於記憶體中(例如,當作靜態、動態、或運行時間仿真模組)。舉例而言,指令轉換模組可接收使用者等級監督存取暫止執行緒指令605,其可屬於第一指令集;並且可仿真、翻譯、編輯、解譯、或者轉換使用者等級監督存取暫止執行緒指令605為一或更多相應的中間指令或控制信號,其可屬於第二不同指令集。第二指令集之一或更多相應的中間指令或控制信號可被提供至解碼單元(例如,解碼單元670),其可將其解碼為可由處理器之本機硬體(例如,一或更多執行單元)所執行的一或更多較低階指令或控制信號。
再次參考圖6,執行緒暫止/重新開始單元671與解碼單元670耦合。執行緒暫止/重新開始單元可代表用以履行指令605之執行單元及/或亦可於文中被簡稱為執行單元。如圖所示,執行緒暫止/重新開始單元或執行單元可透過其他中間組件(諸如,例如,第一組選擇性執行緒可分割資源625)而與解碼單元耦合。第一組選擇性執行緒可分割資源可選擇性地類似於(或相同於)執行緒可分割資源225。第二組選擇性執行緒可分割資源628可與執行單元之輸出耦合。此選擇性第二組可選擇性地類似於(或相同於)執行緒可分割資源229。執行緒暫止/重新開始單元可接收一或更多已解碼或者已轉換指令或控制信號,其係代表及/或衍生自使用者等級監督存取暫止執行緒指令605。這些控制信號可潛在地指示或建議欲進入之替代狀
態(例如,於某些實施例為休憩狀態或較輕微的休憩狀態)。執行緒暫止/重新開始單元亦可接收選擇性使用者等級時間或暫停值,假如其被使用於特別實施方式的話。
執行緒暫止/重新開始單元可包括特定或特別邏輯,其係操作以履行使用者等級監督存取暫止執行緒指令605。執行緒暫止/重新開始單元及/或任何其所闡明或描述的組件可被實施以硬體(例如,積體電路、電晶體或其他電路元件,等等)、韌體(例如,ROM、EPROM、快閃記憶體、或其他持續或非揮發性記憶體和微碼、微指令、或其他儲存於其中之較低階指令)、或其各種組合,潛在地/選擇性地與某軟體(例如,儲存於記憶體中之較高階指令)結合。於某些實施例中,執行緒暫止/重新開始單元及/或任何其所闡明或描述的組件可選擇性地包括僅硬體及/或韌體而無任何軟體。執行緒暫止/重新開始單元可操作以回應於及/或由於使用者等級監督存取暫止執行緒指令605(例如,回應於從該指令所解碼的一或更多指令或控制信號)來暫止該指令605所被接收自之第一使用者等級軟體執行緒。於某些實施例中,在暫止該執行緒前,執行緒暫止/重新開始單元可選擇性地操作(回應於該指令)以判定位址監督邏輯是否被啟動(例如,選擇性地如先前配合圖3之區塊342所述)及/或確保一或更多其他選擇性條件被事先滿足,雖然此並非必要。例如,此可藉由執行單元及/或處理器與位址監督邏輯交換信號或其他通訊來完成。
執行緒暫止/重新開始單元亦可操作以回應於及/或由於指令605來將該執行緒所正運行於其上之邏輯處理器(例如,核心管線620之SMT硬體執行緒)變遷至指示的替代狀態。於某些實施例中(例如,於較輕微的休憩狀態(例如,C0.1狀態)、或選擇性甚至更輕微的休憩狀態之情況下),為了暫止該執行緒,執行緒暫止/重新開始單元可變遷至較低的潛時重新開始執行狀態(例如,主要係告知核心管線停止執行該執行緒之指令,並藉此容許共用資源由一或更多共用相同資源之其他執行緒所專屬地使用,而無可分割資源之任何熔合/結合)。於某些實施例中,此一替代狀態可選擇性地為針對該指令所實施的唯一狀態。於此等情況下,執行緒暫止/重新開始單元可能無須包括選擇性管線清除邏輯673或選擇性分割/退火單元674。
替代地,於其他實施例中(例如,於休憩(例如,C0.2狀態)、較深層休憩、或選擇性地被支援的C1或停止處理器狀態之一或更多者的情況下),執行緒暫止/重新開始單元可選擇性地將邏輯處理器變遷至較長的潛時重新開始執行替代狀態。例如,此可包括通知核心管線停止執行該執行緒之指令並容許共用資源由一或更多共用相同資源之其他執行緒所專屬地使用,且亦重新組態(例如,熔合或結合)至少某些可分割資源(例如,第一組選擇性執行緒可分割資源625及/或第二組選擇性執行緒可分割資源628)以供由這些一或更多其他執行緒所使用。於此
等情況下,執行緒暫止/重新開始單元可包括選擇性管線清除邏輯673及選擇性分割/退火單元674。選擇性管線清除單元可操作以回應於該指令來清除或排出該核心管線以便清除所有指令。如圖所示,選擇性管線清除單元可操作以通知管線之其他組件。
一旦管線已被清除或排出,則選擇性的分割/退火單元可操作以熔合、退火、或者結合至少某些可分割資源(例如,第一組625及/或第二組628),其係先前專屬於第一使用者等級執行緒,以致其在當第一使用者等級執行緒被暫止時一或更多其他執行緒可使用這些資源。如圖所示,選擇性的分割/退火單元可操作以通知第一及/或第二組選擇性執行緒可分割資源。舉例而言,此可包括首先排出指令自佇列、儲存緩衝器、記錄器緩衝器,等等;並接著結合佇列、儲存緩衝器、記錄器緩衝器之項目以供由第一使用者等級執行緒旁邊的一或更多其他執行緒所使用。
一旦第一使用者等級執行緒已被暫止,則重新開始執行緒啟動單元675可操作以回應於該指令而監督或檢測一或更多類型的事件或條件(例如,如針對特別實施方式所欲者),其係用以觸發或致使第一使用者等級執行緒之重新開始。如圖所示,重新開始執行緒啟動單元可包括受監督存取檢測單元676。受監督存取檢測單元可操作以觀看及/或觀察及/或檢測對於受監督位址之存取的指示638。舉例而言,對於受監督位址之存取的指示可被提供以先前配合圖3之區塊338所描述的各種方式。假如此一指示被
檢測,則受監督存取檢測單元及/或重新開始執行緒啟動單元可起始第一使用者等級執行緒之重新開始。
重新開始執行緒啟動單元可選擇性地包括事件檢測單元677。選擇性事件檢測單元可操作以觀看及/或觀察及/或檢測一或更多不同類型的事件679,其可致使第一使用者等級執行緒之重新開始。任何此等事件是否可觸發第一使用者等級執行緒之重新開始是針對特別實施方式而為選擇性的。於某些實施例中,其可選擇性地觸發第一使用者等級執行緒之重新開始的事件之可能範例包括一或更多非遮蔽中斷(NMI)、系統管理中斷(SMI)、除錯例外、機器檢查例外、初始信號、重設信號、某些類型的外部中斷(假如其將被傳遞至軟體的話)、其改變位址變換之事件、或其各種組合。假如此一事件被檢測,則事件檢測單元及/或重新開始執行緒啟動單元可起始第一使用者等級執行緒之重新開始。
重新開始執行緒啟動單元可選擇性地包括暫止時間監督單元678。選擇性暫止時間監督單元可操作以監督其第一使用者等級執行緒已被暫止之時間,相對於選擇性使用者等級時間或暫停值645及選擇性管理系統軟體加諸時間或暫停值660之一或更多者。使用者等級時間或暫停值645可選擇性地已由該指令所指示,如以上所討論。選擇性管理系統軟體加諸時間或暫停值可類似於其先前配合圖5之區塊560所描述者,並可選擇性地被使用以類似的方式。舉例而言,此管理系統軟體加諸時間或暫停值660可
選擇性地被儲存於處理器之控制暫存器(例如,模型特定暫存器)中。假如管理系統軟體加諸時間或暫停值660被判定為已截止,則此事件之指示661可選擇性地被儲存於儲存位置699中。例如,此可被履行如於圖5之區塊561所述者。假如選擇性地實施的時間或暫停值之任一者被為截止,則暫止時間監督單元及/或重新開始執行緒啟動單元可起始第一使用者等級執行緒之重新開始。
於檢測到前述執行緒重新開始條件之任一者、或針對特別實施方式所欲之其他者時,則執行緒暫止/重新開始單元672(回應於該指令)可操作以重新開始第一使用者等級執行緒。假如先前已分割及釋出的可分割資源將被再分割的話,則選擇性管線清除單元672可操作以回應於清除或排出核心管線來清除所有指令。一旦管線已被清除或排出,則選擇性分割/退火單元674可操作以再分割這些可分割資源(例如,其先前被退火之第一組625及/或第二組628的任一者),以致其即將醒來的第一使用者等級執行緒可再次能夠利用那些資源。第一使用者等級執行緒可接著被重新開始且來自第一使用者等級執行緒之指令的進一步執行可開始。
為了避免混淆說明,已顯示及描述一相對簡單的處理器。然而,處理器可選擇性地包括其他處理器組件。例如,各個不同實施例可包括針對圖9A/B、10A/B、及11之任一者所顯示並描述的組件之各個不同組合及組態。處理器之所有組件可被耦合在一起以容許其操作如所欲。
圖7為一種於異動式記憶體異動內履行異動式記憶體相容的使用者等級暫止執行緒指令以暫止第一使用者等級執行緒而不異常中止該異動式記憶體異動之方法780的範例實施例之方塊流程圖。於某些實施例中,該方法可容許第一使用者等級執行緒被重新開始,其係回應於異動式記憶體相容的使用者等級暫止執行緒指令或由於藉由處理器之異動式記憶體邏輯的異動式記憶體異動的異常中止。於各個實施例中,該些方法可由處理器、指令處理設備、數位邏輯裝置、或積體電路來履行。於某些實施例中,圖7之方法可由圖6之處理器所履行及/或被履行於圖6之處理器內,其可額外地選擇性地包括用以支援異動式記憶體之異動式記憶體邏輯。針對圖6之處理器之文中所述的組件、特徵、及特定選擇性細節亦選擇性地適用於圖7之方法。替代地,圖7之方法可由類似的或不同的處理器或設備所履行及/或被履行於類似的或不同的處理器或設備內(例如,一選擇性地省略監督存取檢測單元676及/或選擇性地省略邏輯以監督對於記憶體位址之存取的檢測)。此外,圖6之處理器可履行相同於、類似於、或不同於圖7之那些的方法。
異動式記憶體有時候亦被稱為異動式執行。異動式記憶體代表一種用以控制由不同實體(例如,邏輯處理器)對於共用資料之同時存取的方式,其可協助減少使用鎖定之需求。異動式記憶體之一種適當範例(針對某些實施例)是異動式記憶體之Intel®異動式同步化延伸(Intel®
TSX)形式的異動式記憶體之受限異動式記憶體(RTM)形式,雖然本發明之範圍未如此限制。如文中所述之異動式記憶體可於某些實施例中具有異動式記憶體之RTM形式的特徵之一或更多者(或選擇性地實質上所有),雖然本發明之範圍未如此限制。其他形式的異動式記憶體亦為適當的。
處理器、積體電路、或其他設備(其中該方法被履行)可具有異動式記憶體邏輯。硬體、韌體、其組合、及硬體及/或韌體與軟體之組合可被用以實施不同形式的異動式記憶體,諸如純硬體異動式記憶體(HTM)、無界異動式記憶體(UTM)、及硬體支援的(例如,加速的)軟體異動式記憶體(STM)(硬體支援的STM)。舉例而言,處理器可具有異動緩衝器或其他儲存、異動開始邏輯(用以開始異動)、異動衝突檢測邏輯(用以檢測異動異常中止狀況)、異動異常中止邏輯(用以異常中止異動)、異動結束邏輯(用以結束異動),等等。
參考圖7,該方法包括接收異動開始指令,並開始異動式記憶體異動,於區塊781。適當的異動開始指令之一特定範例為具有異動式記憶體之RTM形式的XBEGIN指令,雖然本發明之範圍未如此限制。XBEGIN指令(當履行時)可操作以致使處理器將該執行變遷至異動式記憶體(例如,開啟異動式記憶體),假如其尚未被變遷至異動式記憶體的話。XBEGIN指令亦可指示一用以處置異常中止異動(假如有發生的話)之處置器的指令位址。於其他
實施例中,異動開始指令可不是特定XBEGIN指令,而是可具有XBEGIN指令之特徵的任何一或更多者(或選擇性地所有)、或類似特徵,潛在地與額外特徵結合。本發明之範圍不限於任何已知的異動開始指令或其操作。
異動內之一群指令及/或操作可透過利用異動式記憶體而被透明地原子地履行。原子係部分地暗示其這些指令及/或操作被完全地履行、或完不履行,但非可分割地。於異動內,其將另由鎖來保護的資料僅可被讀取,但無法以一種將是整體可見的方式被非臆測地寫入於異動內,且可能無須實際的獲得該鎖。假如異動式記憶體異動是成功的,則藉由異動內之指令及/或操作的寫入至該資料可被原子地履行,而無其需已被獲得之鎖。然而,假如異動式記憶體異動是不成功的及/或被異常中止,則臆測式更新至現狀可被丟棄而無須曾為其他邏輯處理器所可見的。此外,異動內之資料讀取亦可原子地發生而無須獲得鎖。這些讀取可代表異動式記憶體異動之讀取集。假如,當於異動式記憶體異動內,異動式記憶體邏輯檢測到其已被讀取於該異動(例如,異動讀取集)內之記憶體位址的任一者已由另一邏輯-處理器所修改的話,則該異動可能異常中止,因為讀取集無法被原子地獲得。如將被進一步解釋於下,異動式記憶體之此形態可被平衡以一起監督多數記憶體位址,並結合一暫止執行緒指令,其不一定需具有受監督的相關記憶體位址(例如,替代地,此可被卸載至經由異動式記憶體之監督)。
再次參考圖7,一旦異動式記憶體異動已開始(例如,藉由履行異動開始指令,於區塊781),則異動式記憶體邏輯(例如,包括處理器之主要晶粒上邏輯(例如,硬體及/或韌體))可開始監督並判定是否檢測到異動式記憶體異動異常中止狀況,於區塊790。注意:在區塊781之輸出處的「分岔」不代表替代的路徑,而是其可一起並同時地發生的平行路徑,如將被進一步討論於下。不同類型的異常中止狀況可針對特別實施方式而潛在地被支援如所欲。於某些實施例中,衝突的存取(例如,寫入至異動讀取集)可代表一此異動異常中止狀況。假如無此異常中止狀況被檢測到(亦即,於區塊790之判定為「否」),則該方法可透過於區塊790做出此一判定而重複地循環回。於一形態中,處理器及/或其異動式記憶體邏輯可實質上持續地監督此異常中止狀況,只要該異動式記憶體異動正被履行。假如此一異常中止狀況被檢測到(亦即,於區塊790之判定為「是」),則該方法可前進至區塊791,其中異動式記憶體邏輯異常中止該異動,如將被進一步討論於下。
再次參考圖7,在異動開始指令已被履行之後,以及當異動式記憶體邏輯監督異常中止狀況於區塊790時,則該異動之額外指令可被履行。於某些實施例中,一或更多載入指令可被履行於該異動內以從共用記憶體位置載入資料。載入指令有時候亦被稱為讀取指令或移動指令。如於區塊782所示,第一載入指令可被接收並履行於異動式記
憶體異動內,而第一共用記憶體位置可被載入。選擇性地,其他載入指令可類似地被履行以讀取其他的共用記憶體位置或位址。如於區塊783所示,選擇性地高達第N載入指令可被接收並履行於異動式記憶體異動內,而第N相應共用記憶體位置或記憶體位址可被載入。舉例而言,於某些實施例中,所讀取的記憶體位置之數目範圍可從一(或二)至五十之等級、或從一(或二)至二十之等級,雖然本發明之範圍未如此限制於任何已知的數目。這些履行於該異動內之一或更多載入可代表異動之所謂的讀取集。
再次參考圖7,異動式記憶體相容的使用者等級暫止執行緒指令可被接收於異動式記憶體異動內,於區塊784。該指令可被接收自第一使用者等級執行緒,區塊781-783之指令亦已被接收自該第一使用者等級執行緒。於區塊785,一方法可被履行以回應於異動式記憶體相容的使用者等級暫止執行緒指令而不異常中止異動式記憶體異動。有利地,異動式記憶體相容的使用者等級暫止執行緒指令可被容許被履行於異動式記憶體異動內,而無須使異動式記憶體異動被結束或異常中止及/或無須轉移至管理軟體處置器。反之,某些其他類型的暫止執行緒指令及/或電力管理指令可能與異動式記憶體不相容,而假如被履行於異動式記憶體異動內,則可致使該異動式記憶體異動被異常中止。
如於區塊786所示,第一使用者等級執行緒之執行可
被暫止以回應於異動式記憶體相容的使用者等級暫止執行緒指令。接著,於區塊787,回應於異動式記憶體相容的使用者等級暫止執行緒指令,可做出是否已檢測到重新開始執行緒條件之判定。注意:於區塊787之判定可與區塊790之判定同時地且平行地發生。換言之,區塊787可回應於異動式記憶體相容的使用者等級暫止執行緒指令而實質上連續地發生,一旦其已被履行且直到其完成;而於區塊790之判定可被實質上連續地履行,一旦異動式執行已開始並可持續直到異動式執行異常中止或結束。於區塊787,假如尚未檢測到此重新開始執行緒條件(亦即,於區塊787之判定為「否」),則該方法可持續檢查。否則,假如已檢測到重新開始執行緒條件(亦即,「是」為區塊787上之判定),則該方法可前進至區塊788。於區塊788,第一使用者等級執行緒可被重新開始以回應於異動式記憶體相容的使用者等級暫止執行緒指令。例如,該執行緒可在接續於異動式記憶體相容的使用者等級暫止執行緒指令後之下一指令時重新開始。假如想要的話,該方法及/或軟體可接著辨識其受監督位置尚未被修改並可選擇性地履行異動式記憶體相容的使用者等級暫止執行緒指令之另一實例以再次暫止該執行緒,當該些位置進一步由異動式記憶體邏輯所監督時。替代地,該方法可接著前進至區塊789,其中異動結束指令(例如,當作一範例之XEND指令)可被接收,且異動式記憶體異動回應地確定。
區塊785之操作已被顯示並描述以相對基本的形式,雖然操作可選擇性地被加至該方法。例如,於某些實施例中,於區塊785之操作可包括圖3之區塊342-346的操作之任何一或更多者,包括其變化及替代物。於其他實施例中,於區塊785之操作可包括圖5之區塊542-546及/或560-561的操作之任何一或更多者,包括其變化及替代物。於又其他實施例中,於區塊785之操作可包括圖8之區塊894-899的操作之任何一或更多者(其將被進一步包括討論於下),包括其變化及替代物。亦即,於某些實施例中,配合圖3所討論之前述替代狀態可選擇性地被使用與異動式記憶體相容的使用者等級暫止執行緒指令。同時,於某些實施例中,配合圖5之區塊560及區塊561的指示而討論之前述管理軟體加諸最大暫停值可選擇性地被使用與異動式記憶體相容的使用者等級暫止執行緒指令。於某些實施例中,區塊785可選擇性地包括判定是否已檢測到對於受監督位址之存取的指示(例如,於針對區塊344或544所述者)。於其他實施例中,區塊785可選擇性地省略做出此一判定。亦即,於某些實施例中,可能無相關的記憶體位址監督操作為此指令之部分。
現在,即使在第一使用者等級執行緒之執行被重新開始於區塊788以後,於區塊790之判定仍可能發生。亦即,於區塊790之判定可發生在異動式記憶體相容的使用者等級暫止執行緒指令的履行之前、當時、及之後,只要異動式記憶體異動正被履行時。於區塊790之此判定可分
離自異動式記憶體相容的使用者等級暫止執行緒指令(且不受其控制),而是更為異動式記憶體之部分。部分地,於區塊790之判定可判定是否有對於記憶體位置或位址(相應於區塊782-783之載入指令)之任何衝突存取。這些可代表異動式記憶體異動之讀取集。於某些實施例中,由另一邏輯處理器對於異動式記憶體異動之讀取集的這些共用記憶體位置之任一者的測得寫入(或測得嘗試寫入)可代表此一衝突存取,其可能致使異動式記憶體異動被異常中止。
假如檢測到異常中止狀況(亦即,於區塊790之判定為「是」),例如假如檢測到對於與區塊782-783之載入指令關聯的記憶體位址之任一者的寫入、或假如中斷或某其他微架構狀況發生,則該方法可前進至區塊791。於區塊791,異動式記憶體邏輯可致使異動式記憶體異動被異常中止。對於架構狀態之任何臆測性更新(例如,區塊782-783之載入)可被取消。選擇性地,有關異常中止之原因的資訊可被提供(例如,於通用暫存器中)。於某些實施例中,此亦可結束異動式記憶體相容的使用者等級暫止執行緒指令之執行並重新開始暫止的第一使用者等級執行緒。注意:於此等狀況下,異常中止異動式記憶體異動、及重新開始第一使用者等級執行緒可由異動式記憶體邏輯所分別地履行,而非回應於履行異動式記憶體相容的使用者等級暫止執行緒指令(例如,非為區塊785之部分)。控制亦可一般地轉移至異常中止處置器(例如,於
由區塊781之異動開始指令所指示的指令位址上)。於某些實施例中,處置器可預期受監督位置(例如,相應於區塊782-783)之一已被修改並可對其調查。
異動式記憶體異動之區塊782(及選擇性地區塊783)的載入指令可有效地設定或組態異動式記憶體邏輯以欲監督之記憶體位址及/或範圍。至少觀念上,當以此方式使用時,異動式記憶體邏輯可作用為一種位址監督邏輯,其可被平衡以致無須使用一分離的位址監督邏輯(例如,由使用者等級設定監督位址指令所設定)。此外,於某些實施例中,異動式記憶體邏輯可選擇性地/潛在地監督一記憶體位址或範圍、或選擇性地/潛在地二或更多記憶體位址或範圍、或選擇性地/潛在地來自數個至大量的記憶體位址或範圍。代表性地,假如存取其與這些一或多數記憶體位址或範圍之任一者關聯的讀取集,則異動式記憶體邏輯可異常中止異動並致使執行被重新開始。此外,當異動式記憶體邏輯監督此等寫入至該讀取集時,異動式記憶體相容的使用者等級暫止執行緒指令之一或更多者可被履行以暫止第一使用者等級執行緒。
有多種不同的可能原因想要監督多數記憶體位址。本發明之範圍不限於任何已知的此類原因。然而,為了進一步闡明某些觀念,一特定範例將被描述。於此範例中,軟體可與網路介面卡互動,該網路介面卡可支援到達不同鏈結之訊息的多數進入佇列。網路介面卡可將用以指示訊息之接收的記憶體中之不同位置寫入多數相應進入佇列之各
者。既定軟體執行緒可能想要暫止(當進入佇列中沒有訊息時),但可能希望被重新開始(當進入佇列之一中有訊息可用時)。此僅為一範例。於其他範例中,記憶體位址可被監督針對其他類型的輸入-輸出資料、或針對各種其他原因。
於其他實施例中,使用者等級暫止執行緒指令(類似於針對圖7之區塊784-785的異動式記憶體相容的使用者等級暫止執行緒指令所述者)無須被使用於異動式記憶體異動內且無須與異動式記憶體相容。亦即,選擇性的其此一指令被使用於異動式記憶體異動中。此外,選擇性的其此一指令為異動式記憶體相容的。反之,例如,此一指令可被用以暫止使用者等級執行緒,當等待一或更多暫停值截止時(例如,使用者等級暫停值及/或管理系統軟體加諸的暫停值)及/或當等待針對特別實施方式所欲之中斷及/或其他重新開始執行緒事件時。
圖8為一種履行選擇性異動式記憶體相容的使用者等級暫止執行緒指令之方法892的實施例之方塊流程圖。於各個實施例中,該些方法可由處理器、指令處理設備、數位邏輯裝置、或積體電路來履行。於某些實施例中,該方法可由圖6之處理器所履行。針對圖6之處理器之文中所述的組件、特徵、及特定選擇性細節亦選擇性地適用於圖8之方法。替代地,圖8之方法可由類似的或不同的處理器或設備所履行及/或被履行於類似的或不同的處理器或設備內(例如,一選擇性地省略監督存取檢測單元676及
/或選擇性地省略任何邏輯以觀察對於任何記憶體位址之存取的檢測)。此外,圖6之處理器可履行相同於、類似於、或不同於圖8之那些的方法。
再次參考圖8,選擇性異動式記憶體相容的使用者等級暫止執行緒指令可被接收,於區塊893。於某些實施例中,此指令可選擇性地與異動式記憶體相容。於其他實施例中,此並非必要的。於某些實施例中,該指令可選擇性地指明或者指示使用者等級暫停值。例如,此可選擇性地為如先前配合圖3之區塊341所述者,包括其變化及替代物。於某些實施例中,該指令可指明或者指示選擇性多數可能替代狀態之一。例如,此可選擇性地為如先前配合圖3之區塊341所述者,包括其變化及替代物。舉例而言,此可包括先前所述之較輕微的休憩狀態及休憩狀態。
於區塊894,第一使用者等級執行緒之執行可被暫止,而邏輯處理器(第一使用者等級執行緒已被運行於其上)可被變遷為指示的替代狀態。例如,此可選擇性地被執行如先前配合圖3之區塊343所述者,包括其變化及替代物,並包括使用先前所述的替代狀態(例如,較輕微的休憩、休憩、C0.1、C0.2,等等)之任一者。
於區塊895-897,可選擇性地判定是否重新開始(例如,第一使用者等級執行緒之)執行。明確地,於區塊895,可選擇性地判定是否已檢測到中斷或其他執行緒重新開始事件。例如,於各個實施例中,非遮蔽中斷(NMI)、系統管理中斷(SMI)、除錯例外、機器檢查
例外、初始信號、重設信號、某些類型的外部中斷(假如其將被傳遞至軟體的話)、改變位址變換之事件,及其各種組合,可選擇性地造成第一使用者等級執行緒被重新開始。許多此等事件通常係由特權軟體所處置,而因此由於此等事件所致之重新開始執行可涉及將執行變遷至適當的特權等級處置器。於其他實施例中,某些類型的中斷(例如,輸入-輸出中斷、來自晶粒上硬體加速器之中斷、適於使用者等級碼之其他中斷)可選擇性地被直接地提供至使用者等級應用程式,且係由使用者等級應用程式所處置而無須從使用者等級應用程式變遷至較高的特權等級,雖然此並非必要。於此等事件中,執行可重新開始,潛在地以相同的使用者等級執行緒或不同的使用者等級執行。假如已檢測到這些類型之一的重新開始事件(亦即,「是」為區塊895上之判定),則該方法可前進至區塊899。否則,假如尚未檢測到重新開始事件(亦即,判定為「否」),則該方法可前進至區塊896。
於區塊896,可選擇性地做出有關選擇性的使用者等級暫停值(其係由異動式記憶體相容的使用者等級暫止執行緒指令所指示)是否已截止之判定。例如,此可選擇性地為如先前配合圖3之區塊345所述者,包括其變化及替代物。假如使用者等級暫停值已截止(亦即,判定為「是」),則該方法可前進至區塊899。否則,假如使用者等級暫停值尚未截止(亦即,判定為「否」),則該方法可前進至區塊897。
於區塊897,可選擇性地做出有關選擇性的管理系統軟體加諸的暫停值是否已截止之判定。例如,此可選擇性地為如先前配合圖5之區塊560所述者,包括其變化及替代物。假如管理系統軟體加諸的暫停值尚未截止(亦即,判定為「否」),則該方法可再次回到區塊895,其中可做出另一回合的判定,選擇性地於連續迴路中直到檢測到從該迴路的離開情況。替代地,假如暫停值已截止(亦即,判定為「是」),則該方法可前進至區塊898。
於區塊898,可提供指示其第一使用者等級執行緒之暫止係由於管理系統軟體加諸的及/或特權等級的最大時間或暫停值之截止而被結束。例如,此可選擇性地為如先前配合圖5之區塊561所述者,包括其變化及替代物。
於區塊899,第一使用者等級執行緒之執行可被重新開始自邏輯處理器,於指示的替代狀態。例如,此可選擇性地被執行如先前配合圖3之區塊346及/或圖5之區塊546所述者,包括其變化及替代物。
注意於圖8中,於某些實施例中,選擇性地異動式記憶體相容的使用者等級暫止執行緒指令可選擇性地省略監督對於記憶體位置之存取的指示之需求(例如,如同其先前針對圖3之區塊344所述者)。反之,於某些實施例中,該指令無須具有任何相關的受監督位址或任何此位址監督。反之,當作一範例,異動式記憶體邏輯可選擇性地被用以監督對於一或更多位址之存取(例如,如針對圖7所討論者),雖然此並非必要。再者,當作另一範例,執
行緒可被暫止卻不等待記憶體存取發生,而是僅等待一或更多暫停值、等待中斷發生(例如,選擇性地使用者等級中斷,其可被直接地遞送至使用者等級碼)、或者結合而無受監督記憶體位址。
方法892已被顯示並描述以相對基本的形式,雖然操作可選擇性地被加至及/或移除自該方法。例如,於區塊895-897上之選擇性判定的一或更多者可選擇性地被移除。此外,雖然方法之流程圖示係顯示特定順序的操作,但該順序僅為範例而非必要。替代實施例可以不同的順序履行某些操作、結合某些操作、重疊某些操作,等等。例如,於區塊895-897上之判定可選擇性地被履行以不同的順序及/或同時地,等等。
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施方式可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施方式可包括:1)CPU,其包括用於通用計算之一或更多通用依序核心及/或用於通用計算之一或更多通用失序核心;及2)核心處理器,其包括主要用於圖形及/或科學(通量)之一或更多特殊用途核心。此等不同處理器導致不同的電腦系統架構,其可包括:1)在來自該CPU之分離晶片上的共處
理器;2)在與CPU相同的封裝中之分離晶粒上的共處理器;3)在與CPU相同的晶粒上的共處理器(於該情況下,此一處理器有時被稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)在一可包括於相同晶粒上之所述CPU(有時稱為應用程式核心或應用程式處理器)、上述共處理器、及額外功能的晶片上之系統。範例核心架構被描述於下,接續著其後為範例處理器及電腦架構之描述。
圖9A為闡明範例依序管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖,依據本發明之實施例。圖9B為一方塊圖,其闡明將包括於依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者。圖9A-B中之實線方框係闡明依序管線及依序核心,而虛線方框之選擇性加入係闡明暫存器重新命名、失序問題/執行管線及核心。假設其依序形態為失序形態之子集,將描述失序形態。
於圖9A中,處理器管線900包括提取級902、長度解碼級904、解碼級906、配置級908、重新命名級910、排程(亦已知為分派或發送)級912、暫存器讀取/記憶體讀取級914、執行級916、寫入回/記憶體寫入級918、例
外處置級922、及確定級924。
圖9B顯示處理器核心990,其包括一耦合至執行引擎單元950之前端單元930,且兩者均耦合至記憶體單元970。核心990可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者併合或替代核心類型。當作又另一種選擇,核心990可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元930包括一分支預測單元932,其係耦合至指令快取單元934,其係耦合至指令變換後備緩衝(TLB)936,其係耦合至指令提取單元938,其係耦合至解碼單元940。解碼單元940(或解碼器)可解碼指令;並可將以下產生為輸出:一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其被解碼自(或者反應)、或被衍生自原始指令。解碼單元940可使用各種不同的機制來實施。適當機制之範例包括(但不限定於)查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM),等等。於一實施例中,核心990包括微碼ROM或者儲存用於某些巨指令之微碼的其他媒體(例如,於解碼單元940中或者於前端單元930內)。解碼單元940被耦合至執行引擎單元950中之重新命名/配置器單元952。
執行引擎單元950包括重新命名/配置器單元952,其
係耦合至撤回單元954及一組一或更多排程器單元956。排程器單元956代表任何數目的不同排程器,包括保留站、中央指令窗,等等。排程器單元956被耦合至實體暫存器檔單元958。實體暫存器檔單元958之各者代表一或更多實體暫存器檔,其不同者係儲存一或更多不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為下一待執行指令之位址的指令指標),等等。於一實施例中,實體暫存器檔單元958包含向量暫存器單元、寫入遮蔽暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮蔽暫存器、及通用暫存器。實體暫存器檔單元958係由撤回單元954所重疊以闡明其中暫存器重新命名及失序執行可被實施之各種方式(例如,使用記錄器緩衝器和撤回暫存器檔;使用未來檔、歷史緩衝器、和撤回暫存器檔;使用暫存器映圖和暫存器池,等等)。撤回單元954及實體暫存器檔單元958被耦合至執行叢集960。執行叢集960包括一組一或更多執行單元962及一組一或更多記憶體存取單元964。執行單元962可履行各種操作(例如,偏移、相加、相減、相乘)以及於各種類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括數個專屬於特定功能或功能集之執行單元,但其他實施例可包括僅一個執行單元或者全部履行所有功能之多數執行單元。排程器單元956、實體暫存器檔單元958、及執行叢集960被顯示
為可能複數的,因為某些實施例係針對某些類型的資料/操作產生分離的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有本身的排程器單元、實體暫存器檔單元、及/或執行叢集-且於分離記憶體存取管線之情況下,某些實施例被實施於其中僅有此管線之執行叢集具有記憶體存取單元964)。亦應理解:當使用分離管線時,這些管線之一或更多者可為失序發送/執行而其他者為依序。
該組記憶體存取單元964被耦合至記憶體單元970,其包括資料TLB單元972,其耦合至資料快取單元974,其耦合至第二階(L2)快取單元976。於一範例實施例中,記憶體存取單元964可包括載入單元、儲存位址單元、及儲存資料單元,其各者係耦合至記憶體單元970中之資料TLB單元972。指令快取單元934被進一步耦合至記憶體單元970中之第二階(L2)快取單元976。L2快取單元976被耦合至一或更多其他階的快取且最終至主記憶體。
舉例而言,範例暫存器重新命名、失序發送/執行核心架構可實施管線900如下:1)指令提取938履行提取和長度解碼級902和904;2)解碼單元940履行解碼級906;3)重新命名/配置器單元952履行配置級908和重新命名級910;4)排程器單元956履行排程級912;5)實體暫存器檔單元958和記憶體單元970履行暫存器讀取
/記憶體讀取級914;執行叢集960履行執行級916;6)記憶體單元970和實體暫存器檔單元958履行寫入回/記憶體寫入級918;7)各個單元可參與例外處置級922;及8)撤回單元954和實體暫存器檔單元958履行確定級924。
核心990可支援一或更多指令集(例如,x86指令集,具有其已被加入以較新版本之某些延伸);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON之選擇性額外延伸),包括文中所述之指令。於一實施例中,核心990包括支援緊縮資料指令集延伸(例如,AVX1、AVX2)之邏輯,藉此容許由許多多媒體應用程式所使用的操作使用緊縮資料來履行。
應理解:核心可支援多線程(執行二或更多平行組的操作或線緒),並可以多種方式執行,包括時間切割多線程、同時多線程(其中單一實體核心提供邏輯核心給其實體核心正同時地多線程之每一線緒)、或者其組合(例如,時間切割提取和解碼以及之後的同時多線程,諸如Intel® Hyperthreading科技)。
雖然暫存器重新命名被描述於失序執行之背景,但應理解其暫存器重新命名可被使用於依序架構。雖然處理器之所述的實施例亦包括分離的指令和資料快取單元934/974以及共用L2快取單元976,但替代實施例可具有針對指令和資料兩者之單一內部快取,諸如(例如)第一
階(L1)內部快取、或多階內部快取。於某些實施例中,該系統可包括內部快取與外部快取之組合,該外部快取是位於核心及/或處理器之外部。替代地,所有快取可於核心及/或處理器之外部。
圖10A-B闡明更特定的範例依序核心架構之方塊圖,該核心將為晶片中之數個邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊係透過高頻寬互連網路(例如,環狀網路)來通訊,利用某些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯,根據其應用而定。
圖10A為單處理器核心之方塊圖,連同與晶粒上互連網路1002之其連接、以及第二階(L2)快取1004之其本地子集,依據本發明之實施例。於一實施例中,指令解碼器1000支援具有緊縮資料指令集延伸之x86指令集。L1快取1006容許針對快取記憶體之低潛時存取入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元1008及向量單元1010使用分離的暫存器組(個別地,純量暫存器11012及向量暫存器1014),且於其間轉移的資料被寫入至記憶體並接著從第一階(L1)快取1006被讀取回;但本發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或者包括一通訊路徑,其容許資料被轉移於兩暫存器檔之間而不被寫入及讀取回)。
L2快取1004之本地子集為其被劃分為分離本地子集(每一處理器核心有一個)之總體L2快取的部分。各處理器核心具有一直接存取路徑通至L2快取1004之其本身的本地子集。由處理器核心所讀取的資料被儲存於其L2快取子集1004中且可被快速地存取,平行於存取其本身本地L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集1004中且被清除自其他子集,假如需要的話。環狀網路確保共用資料之一致性。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理於晶片內部彼此通訊。各環狀資料路徑於每方向為1012位元寬。
圖10B為圖10A中之處理器核心的部分之延伸視圖,依據本發明之實施例。圖10B包括L1快取1004之L1資料快取1006A部分、以及有關向量單元1010和向量暫存器1014之更多細節。明確地,向量單元1010為16寬的向量處理單元(VPU)(參見16寬的ALU 1028),其係執行整數、單精確度浮點、及雙精確度浮點指令之一或更多者。VPU支援以拌合單元1020拌合暫存器輸入、以數字轉換單元1022A-B之數字轉換、及於記憶體輸入上以複製單元1024之複製。寫入遮蔽暫存器1026容許斷定結果向量寫入。
圖11為一種處理器1100之方塊圖,該處理器1100
可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形,依據本發明之實施例。圖11中之實線方框闡明處理器1100,其具有單核心1102A、系統代理1110、一組一或更多匯流排控制器單元1116;而虛線方框之選擇性加入闡明一替代處理器1100,其具有多核心1102A-N、系統代理單元1110中之一組一或更多集成記憶體控制器單元1114、及特殊用途邏輯1108。
因此,處理器1100之不同實施方式可包括:1)CPU,具有其為集成圖形及/或科學(通量)邏輯(其可包括一或更多核心)之特殊用途邏輯1108、及其為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者之組合)之核心1102A-N;2)共處理器,具有其為主要用於圖形及/或科學(通量)之大量特殊用途核心的核心1102A-N;及3)共處理器,具有其為大量通用依序核心的核心1102A-N。因此,處理器1100可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多數集成核心(MIC)共處理器(包括30或更多核心)、嵌入式處理器,等等。該處理器可被實施於一或更多晶片上。處理器1100可為一或更多基底之部分及/或可被實施於其上,使用數個製程技術之任一者,諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體等級包括該些核心內之一或更多階快取、一組或者一或更多共用快取單元1106、及耦合至該組集成記
憶體控制器單元1114之額外記憶體(未顯示)。該組共用快取單元1106可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中環狀為基的互連單元1112將以下裝置互連:集成圖形邏輯1108、該組共用快取單元1106、及系統代理單元1110/集成記憶體單元1114,但替代實施例可使用任何數目之眾所周知的技術以互連此等單元。於一實施例中,一致性被維持於一或更多快取單元1106與核心1102-A-N之間。
於某些實施例中,一或更多核心1102A-N能夠進行多線程。系統代理1110包括協調並操作核心1102A-N之那些組件。系統代理單元1110可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者包括用以調節核心1102A-N及集成圖形邏輯1108之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
核心1102A-N可針對架構指令集為同質的或異質的;亦即,二或更多核心1102A-N可執行相同的指令集,而其他者可執行該指令集或不同指令集之僅一子集。
圖12-21為範例電腦架構之方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理
器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之技術中已知的其他系統設計和組態亦為適當的。通常,能夠結合處理器及/或其他執行邏輯(如文中所揭露者)之多種系統或電子裝置為一般性適當的。
現在參考圖12,其顯示依據本發明之一實施例的系統1200之方塊圖。系統1200可包括一或更多處理器1210、1215,其被耦合至控制器集線器1220。於一實施例中,控制器集線器1220包括圖形記憶體控制器集線器(GMCH)1290及輸入/輸出集線器(IOH)1250(其可於分離的晶片上);GMCH 1290包括記憶體及圖形控制器(耦合至記憶體1240及共處理器1245);IOH 1250為通至GMCH 1290之耦合輸入/輸出(I/O)裝置1260。另一方面,記憶體與圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1240及共處理器1245被直接地耦合至處理器1210、及具有IOH 1250之單一晶片中的控制器集線器1220。
額外處理器1215之選擇性本質於圖12中被標示以斷線。各處理器1210、1215可包括文中所述的處理核心之一或更多者並可為處理器1100之某版本。
記憶體1240可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1220經由諸如前側匯
流排(FSB)等多點分支匯流排、諸如QuickPath互連(QPI)等點對點介面、或類似連接1295而與處理器1210、1215通訊。
於一實施例中,共處理器1245為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。於一實施例中,控制器集線器1220可包括集成圖形加速器。
針對價值度量之譜,包括架構、微架構、熱、功率耗損特性,等等,於實體資源1210、1215間可有多樣差異。
於一實施例中,處理器1210執行其控制一般類型之資料處理操作的指令。指令內所嵌入者可為共處理器指令。處理器1210辨識這些共處理器指令為其應由裝附之共處理器1245所執行的類型。因此,處理器1210將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發送至共處理器1245。共處理器1245接受並執行該些接收的共處理器指令。
現在參考圖13,其顯示依據本發明之實施例的第一更特定範例系統1300之方塊圖。如圖13中所示,多處理器系統1300為點對點互連系統,並包括經由點對點互連1350而耦合之第一處理器1370及第二處理器1380。處理器1370及1380之每一者可為處理器1100之某版本。於本發明之一實施例中,處理器1370及1380個別為處理器
1210及1215,而共處理器1338為共處理器1245。於另一實施例中,處理器1370及1380個別為處理器1210及共處理器1245。
處理器1370及1380被顯示為個別地包括集成記憶體控制器(IMC)單元1372及1382。處理器1370亦包括其匯流排控制器單元點對點(P-P)介面1376及1378之部分;類似地,第二處理器1380包括P-P介面1386及1388。處理器1370、1380可使用P-P介面電路1378、1388而經由點對點(P-P)介面1350來交換資訊。如圖13中所示,IMC 1372及1382將處理器耦合至個別記憶體,亦即記憶體1332及記憶體1334,其可為本地地裝附至個別處理器之主記憶體的部分。
處理器1370、1380可各經由個別的P-P介面1352、1354而與晶片組1390交換資訊,使用點對點介面電路1376、1394、1386、1398。晶片組1390可經由高性能介面1339而選擇性地與共處理器1338交換資訊。於一實施例中,共處理器1338為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。
共用快取(未顯示)可被包括於任一處理器中或者於兩處理器外部,而經由P-P互連與處理器連接,以致處理器之任一者或兩者的本地快取資訊可被儲存於共用快取中,假如處理器被置於低功率模式時。
晶片組1390可經由一介面1396而被耦合至第一匯流
排1316。於一實施例中,第一匯流排1316可為周邊組件互連(PCI)匯流排、或者諸如PCI快速匯流排或其他第三代I/O互連匯流排等匯流排,雖然本發明之範圍未如此限制。
如圖13中所示,各種I/O裝置1314可被耦合至第一匯流排1316,連同匯流排橋1318,其係將第一匯流排1316耦合至第二匯流排1320。於一實施例中,一或更多額外處理器1315(諸如共處理器、高通量MIC處理器、GPGPU加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器)被耦合至第一匯流排1316。於一實施例中,第二匯流排1320可為低管腳數(LPC)匯流排。各個裝置可被耦合至第二匯流排1320,其包括(例如)鍵盤/滑鼠1322、通訊裝置1327、及資料儲存單元1328,諸如磁碟機或其他大量儲存裝置(其可包括指令/碼及資料1330),於一實施例中。此外,音頻I/O 1324可被耦合至第二匯流排1320。注意:其他架構是可能的。例如,取代圖13之點對點架構,系統可實施多點分支匯流排其他此類架構。
現在參考圖14,其顯示依據本發明之實施例的第二更特定範例系統1400之方塊圖。圖13與14中之類似元件具有類似的參考數字,且圖13之某些形態已從圖14省略以免混淆圖14之其他形態。
圖14闡明其處理器1370、1380可包括集成記憶體及
I/O控制邏輯(「CL」)1372和1382,個別地。因此,CL 1372、1382包括集成記憶體控制器單元並包括I/O控制邏輯。圖14闡明其不僅記憶體1332、1334被耦合至CL 1372、1382,同時其I/O裝置1414亦被耦合至控制邏輯1372、1382。舊有I/O裝置1415被耦合至晶片組1390。
現在參考圖15,其顯示依據本發明之一實施例的SoC 1500之方塊圖。圖11中之類似元件具有類似的參考數字。同時,虛線方塊為更多先進SoC上之選擇性特徵。於圖15中,互連單元1502被耦合至:應用程式處理器1510,其包括一組一或更多核心142A-N及共用快取單元1106;系統代理單元1110;匯流排控制器單元1116;集成記憶體控制器單元1114;一組一或更多共處理器1520,其可包括集成圖形邏輯、影像處理器、音頻處理器、及視頻處理器;靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(DMA)單元1532;及顯示單元1540,用以耦合至一或更多外部顯示。於一實施例中,共處理器1520包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器,等等。
文中所揭露之機制的實施例可被實施以硬體、軟體、韌體、或此等實施方式之組合。本發明之實施例可被實施為電腦程式或程式碼,其被執行於可編程系統上,該可編程系統包含至少一處理器、儲存系統(包括揮發性和非揮
發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼(諸如圖13中所示之碼1330)可被應用於輸入指令以履行文中所述之功能並產生輸出資訊。輸出資訊可以已知的方式被應用於一或更多輸出裝置。為了本申請案之目的,處理系統包括任何系統,其具有處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或物件導向的編程語言來與處理系統通訊。假如想要的話,程式碼亦可被實施以組合或機器語言。事實上,文中所述之機制在範圍上不限於任何特定編程語言。於任何情況下,該語言可為編譯或解讀語言。
至少一實施例之一或更多形態可由其儲存在機器可讀取媒體上之代表性指令所實施,該機器可讀取媒體代表處理器內之各個邏輯,當由機器讀取時造成該機器製造邏輯以履行文中所述之技術。此等表示(已知為「IP核心」)可被儲存在有形的、機器可讀取媒體上,且被供應至各個消費者或製造設施以載入其實際上製造該邏輯或處理器之製造機器。
此類機器可讀取儲存媒體可包括(無限制)由機器或裝置所製造或形成之物件的非暫態、有形配置,包括:儲存媒體,諸如硬碟、包括軟碟、光碟、微型碟唯讀記憶體(CD-ROM)、微型碟可再寫入(CD-RW)、及磁光碟等
任何其他類型的碟片;半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)、磁或光學卡、或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)等設計資料之非暫態、有形的機器可讀取媒體,該硬體描述語言(HDL)係定義文中所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、動態二元翻譯,包括動態編譯)、變形、仿真、或者轉換至一或更多其他指令以供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或者部分於處理器上而部分於處理器外。
圖16為一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。於所述之實施
例中,指令轉換器為一種軟體指令轉換器,雖然替代地該指令轉換器亦可被實施以軟體、韌體、硬體、或其各種組合。圖16顯示一種高階語言1602之程式可使用x86編譯器1604而被編譯以產生x86二元碼1606,其可由具有至少一x86指令集核心之處理器1616來本機地執行。具有至少一x86指令集核心之處理器1616代表任何處理器,其可藉由可相容地執行或者處理以下事項來履行實質上如一種具有至少一x86指令集核心之Intel處理器的相同功能:(1)Intel x86指令集核心之指令集的實質部分或者(2)針對運作於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體之物件碼版本,以獲得如具有至少一x86指令集核心之Intel處理器的相同結果。x86編譯器1604代表一種編譯器,其可操作以產生x86二元碼1606(例如,物件碼),其可(具有或沒有額外鏈結處理)被執行於具有至少一x86指令集核心之處理器1616上。類似地,圖16顯示高階語言1602之程式可使用替代的指令集編譯器1608而被編譯以產生替代的指令集二元碼1610,其可由沒有至少一x86指令集核心之處理器1614來本機地執行(例如,具有其執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或其執行ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器1612被用以將x86二元碼1606轉換為其可由沒有至少一x86指令集核心之處理器1614來本機地執行的碼。已轉換碼不太可能相同於替代的指令
集二元碼1610,因為能夠執行此功能之指令很難製造;然而,已轉換碼將完成一般性操作並由來自替代指令集之指令所組成。因此,指令轉換器1612代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許處理器或其他不具有x86指令集處理器或核心的電子裝置來執行x86二元碼1606。
針對圖1、2、及4之任一者所述之組件、特徵、及細節亦可選擇性地應用於圖3、5、6、7、及8之任一者。再者,針對設備之任一者所述之組件、特徵、及細節亦可選擇性地應用於其在實施例中可由及/或以此類設備所履行的方法之任一者。處理器可具有用以履行圖3、5、7、及8之不同區塊的不同邏輯。文中所述的處理器之任一者可被包括於文中所揭露的電腦系統之任一者(例如,圖12-15)。於某些實施例中,電腦系統可包括動態隨機存取記憶體(DRAM)。替代地,電腦系統可包括其不需被更新之揮發性記憶體的類型或者快閃記憶體。文中所揭露之指令可被履行以文中所示之任何處理器,其具有文中所示之任何微架構,於文中所示之任何系統上。文中所揭露之指令可具有文中所述之指令格式的任何特徵。
於說明書及申請專利範圍中,術語「耦合」及/或「連接」(連同其衍生詞)可被使用。這些術語並非被用為彼此的同義詞。反之,於實施例中,「連接」可被用以指示其二或更多元件係彼此直接地實體及/或電氣接觸。「耦合」可表示二或更多元件係彼此直接地物理及/或電
氣接觸。然而,「耦合」亦可表示其二或更多元件不是彼此直接接觸,而仍彼此合作或互動。例如,執行單元可透過一或更多中間組件而與暫存器及/或解碼單元耦合。於圖形中,箭號被用以顯示連接或耦合。
於說明書及/或申請專利範圍中,術語「邏輯」、「單元」、「模組」、或「組件」可已被使用。這些術語之各者可被用以指稱硬體、韌體、軟體、或其各種組合。於範例實施例中,這些術語之各者可指稱積體電路、特定應用積體電路、類比電路、數位電路、編程邏輯裝置、包括指令之記憶體裝置,等等,以及其各種組合。於某些實施例中,這些可包括至少某些硬體(例如,電晶體、閘極、其他電路組件,等等)。
術語「及/或」可已被使用。如文中所使用者,術語「及/或」表示一者或另一者或兩者(例如,A及/或B表示A或B或A與B兩者)。
於以上說明中,已提出數個特定細節以提供實施例之透徹瞭解。然而,其他實施例可被實行而無這些特定的細節。本發明之範圍並非由以上所提供的特定範例來決定,而僅由底下的申請專利範圍來決定。於其他例子中,眾所周知的電路、結構、裝置、及操作已被顯示於方塊圖形式及/或無細節地,以避免妨礙對描述之瞭解。在適當情況下,參考數字、或參考數字之末端部已被重複於圖形中以指示相應的或類似的元件,其可選擇性地具有類似的或相同的特性,除非另有指明或清楚明白的。
某些操作可由硬體組件來履行,或者可被實施以機器可執行或電路可執行指令,其可被用以致使及/或導致以指令編程之機器、電路、或硬體組件(例如,處理器、處理器之部分、電路,等等)履行該些操作。該些操作亦可選擇性地由硬體與軟體之組合來履行。處理器、機器、電路、或硬體可包括特定或特殊的電路或其他邏輯(例如,潛在地與韌體及/或軟體結合之硬體),其可操作以執行及/或處理指令並回應於該指令而儲存結果。
某些實施例包括製造物件(例如,電腦程式產品),其包括機器可讀取媒體。媒體可包括一種機制,其係以可由機器讀取之形式提供(例如,儲存)資訊。機器可讀取媒體可提供(或於其上儲存)指令或指令序列,其(假如及/或當由機器執行時)可操作以致使機器履行及/或導致機器履行文中所揭露的操作、方法、或技術之一。
於某些實施例中,機器可讀取媒體可包括非暫態機器可讀取儲存媒體。例如,非暫態機器可讀取儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除且可編程ROM(EPROM)、電可抹除且可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相位改變記憶體、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置,等等。非暫態機器可讀取儲存媒體不包括暫態傳播信號。
於某些實施例中,儲存媒體可包括其包括固態物質之有形媒體。
適當機器之範例包括(但不限定於)通用處理器、特殊用途處理器、數位邏輯電路、積體電路,等等。適當機器之又其他範例包括電腦系統或其他電子裝置,其包括處理器、數位邏輯電路、或積體電路。此類電腦系統或電子裝置之範例包括(但不限定於)桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、小筆電、智慧型手機、行動電話、伺服器、網路裝置(例如,路由器及開關)、行動網際網路裝置(MID)、媒體播放器、智慧電視、桌上型易網機、機上盒、及視頻遊戲控制器。
遍及本說明書針對「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」(舉例而言)之參考係指示其特定特徵可被包括於本發明之實施中但並不一定必要。類似地,於說明書中,各個特徵有時被組合在一起於單一實施例、圖形、或其描述中,以供解釋本發明及協助瞭解實施例之各個發明性形態的目的。然而,本發明之方法不應被解讀為反應其本發明需要比各申請專利範圍中所明確記載之更多特徵的企圖。反之,如以下申請專利範圍所反應者,發明性形態在於比單一所揭露實施例之所有特徵更少的特徵。因此,接續著實施方式之申請專利範圍於此被清楚地併入此實施方式中,以各項申請專利範圍本身可獨立成為本發明之一分離的實施例。
下列範例係有關進一步的實施例。範例中之明確細節可被使用於一或更多實施例中的任何地方。
範例1為一種處理器,包括解碼單元,用以解碼使用者等級暫止執行緒指令,其係用以指示第一替代狀態。該處理器亦包括一與該解碼單元耦合之執行單元。該執行單元係操作以於使用者特權等級履行該指令。該執行單元回應於該指令,以:(1)暫止使用者等級執行緒之執行,該指令應已從該使用者等級執行緒所接收;(2)將邏輯處理器變遷至該指示的第一替代狀態,該使用者等級執行緒應已運行於該邏輯處理器上;及(3)以一潛時重新開始該使用者等級執行緒之該執行,當該邏輯處理器處於該指示的第一替代狀態時,該潛時應小於當該邏輯處理器處於停止處理器電力狀態時執行緒之執行可被重新開始的潛時之一半。
範例2包括範例1之處理器,其中該解碼單元係用以解碼其用以具有一欄位之該指令,該欄位係用以選擇該第一替代狀態為複數不同的可能替代狀態之任一者。
範例3包括範例2之處理器,其中該些複數不同的可能替代狀態包括第二替代狀態。同樣選擇性地其中該第二替代狀態係用以容許第一使用者等級執行緒之執行被重新開始以一潛時,該潛時應不大於當該邏輯處理器處於該停止處理器電力狀態時之潛時。
範例4包括範例1至3之任一者的處理器,進一步包
括儲存位置,其係用以儲存管理系統軟體加諸的暫停值。同樣選擇性地其中該執行單元回應於該指令,以:(1)判定其該管理系統軟體加諸的暫停值已截止;及(2)回應於判定其該管理系統軟體加諸的暫停值已截止,亦選擇性地重新開始該使用者等級執行緒之該執行。
範例5包括範例1至4之任一者的處理器,進一步包括架構上可見的儲存位置。該執行單元係回應於該指令以儲存其該使用者等級執行緒之該執行係由於該管理系統軟體加諸的暫停值在該架構上可見的儲存位置中截止而重新開始的指示。
範例6包括範例5之處理器,其中該執行單元回應於該指令以儲存該指示,藉由修改一用以儲存複數旗標之暫存器中的架構旗標。
範例7包括範例1至6的任一者之處理器,其中該解碼單元係用以解碼其用以指示使用者等級暫停值之該指令。同樣選擇性地其中該執行單元回應於該指令,以:(1)判定其該使用者等級暫停值已截止;及(2)回應於判定其該使用者等級暫停值已截止,亦選擇性地重新開始該使用者等級執行緒之該執行。
範例8包括範例1至7的任一者之處理器,其中該執行單元回應於該指令以重新開始該使用者等級執行緒之該執行,當該邏輯處理器處於該指示的第一替代狀態時,以其小於當該邏輯處理器處於該停止處理器電力狀態時之該潛時的五分之一的該潛時。
範例9包括範例1至8的任一者之處理器,其中該執行單元回應於該指令以重新開始該使用者等級執行緒之該執行,當該邏輯處理器處於該指示的第一替代狀態時,以其小於五百時脈循環之該潛時。
範例10包括範例1至9的任一者之處理器,其中該執行單元回應於該指令以重新開始該使用者等級執行緒之該執行而無須離開該使用者特權等級。
範例11為一種於處理器中之方法,包括接收來自使用者等級執行緒之使用者等級暫止執行緒指令,該指令係指示第一替代狀態。該方法亦包括於使用者特權等級履行該指令,包括:(1)暫止該使用者等級執行緒之執行;(2)將邏輯處理器變遷至該指示的第一替代狀態,該使用者等級執行緒係運行於該邏輯處理器上;(3)以一潛時重新開始該使用者等級執行緒之該執行,當該邏輯處理器處於該指示的第一替代狀態時,該潛時係小於當該邏輯處理器處於停止處理器電力狀態時重新開始執行緒之執行的潛時之一半。
範例12包括範例11之方法,其中接收包括接收具有一欄位之該指令,該欄位係用以選擇該第一替代狀態為複數不同的可能替代狀態之任一者。
範例13包括範例11至12的任一者之方法,其中該些複數不同的可能替代狀態包括第二替代狀態。同樣選擇性地其中該第二替代狀態係容許使用者等級執行緒之執行被重新開始以一潛時,該潛時應不大於當該邏輯處理器處
於該停止處理器電力狀態時之潛時。
範例14包括範例11至13的任一者之方法,進一步包括:(1)判定其管理系統軟體加諸的暫停值已截止;及(2)回應於判定其該管理系統軟體加諸的暫停值已截止,選擇性地重新開始該使用者等級執行緒之該執行。
範例15包括範例14之方法,進一步包括儲存其該使用者等級執行緒之該執行係由於該管理系統軟體加諸的暫停值在該處理器之架構上可見的儲存位置中截止而重新開始的指示。
範例16包括範例15之方法,其中儲存該指示包括修改一用以儲存複數架構旗標之暫存器中的架構旗標,並進一步包括存取來自該處理器之控制暫存器的該管理系統軟體加諸的暫停值。
範例17包括範例11至16的任一者之方法,其中接收包括接收其指示使用者等級暫停值之該指令,同時選擇性地該方法進一步包括:(1)判定其該使用者等級暫停值已截止;及(2)回應於判定其該使用者等級暫停值已截止,選擇性地重新開始該使用者等級執行緒之該執行。
範例18包括範例11至17的任一者之方法,其中重新開始該使用者等級執行緒之該執行,當該邏輯處理器處於該指示的第一替代狀態時,以其小於當該邏輯處理器處於該停止處理器電力狀態時之該潛時的五分之一的該潛時。
範例19包括範例11至19的任一者之方法,其中重
新開始該使用者等級執行緒之該執行被履行而無須離開該使用者特權等級。
範例20為一種用以處理指令之系統,其包括互連、及與該互連耦合之處理器。該處理器係用以接收使用者等級暫止執行緒指令。該指令係用以指示第一替代狀態。該處理器係操作以於使用者特權等級履行該指令,並回應於該指令,以:(1)暫止使用者等級執行緒之執行;(2)將單執行緒核心、硬體執行緒、執行緒單元、執行緒槽、及具有專屬背景和專屬程式計數器的邏輯處理器之一者變遷至該指示的第一替代狀態,該使用者等級執行緒應已運行於該一者上;及(3)以一潛時重新開始該使用者等級執行緒之該執行,當該一者處於該指示的第一替代狀態時,該潛時應小於當該一者處於停止處理器電力狀態時執行緒之執行可被重新開始的潛時之一半。該系統亦選擇性地包括與該互連耦合之動態隨機存取記憶體(DRAM)。
範例21包括範例20之系統,其中該指令係具有一欄位,該欄位係用以選擇該第一替代狀態為複數不同的可能替代狀態之任一者。
範例22為一種包括非暫態機器可讀取儲存媒體之製造物件。該非暫態機器可讀取儲存媒體係儲存使用者等級暫止執行緒指令。該指令係操作以指示第一替代狀態。該指令係操作以被執行於使用者特權等級。假如由機器所履行的話該指令係用以致使該機器履行包括以下之操作:(1)暫止其相應於該指令的使用者等級執行緒之執行;
(2)將單執行緒核心、硬體執行緒、執行緒單元、執行緒槽、及具有專屬背景和專屬程式計數器的邏輯處理器之一者變遷至該指示的第一替代狀態,該使用者等級執行緒應已運行於該一者上;及(3)以一潛時重新開始該使用者等級執行緒之該執行,從處於該指示的第一替代狀態之該邏輯處理器,該潛時係小於當該邏輯處理器處於停止處理器電力狀態時重新開始執行緒之執行的潛時之一半。
範例23包括範例22之製造物件,其中該指令係具有一欄位,該欄位係用以選擇該第一替代狀態為複數不同的可能替代狀態之任一者。
範例24包括範例22至23的任一者之製造物件,其中假如由該機器所履行的話該指令係進一步用以致使該機器履行包括以下之操作:(1)判定其管理系統軟體加諸的暫停值已截止;及(2)回應於判定其該管理系統軟體加諸的暫停值已截止,選擇性地重新開始該使用者等級執行緒之該執行。
範例25包括範例22至24的任一者之製造物件,其中假如由該機器所履行的話該指令係進一步用以致使該機器履行包括以下之操作:(1)判定其該使用者等級暫停值已截止;及(2)回應於判定其該使用者等級暫停值已截止,選擇性地重新開始該使用者等級執行緒之該執行。
範例26包括範例1至10的任一者之處理器,進一步包括用以預測分支之選擇性分支預測單元、及與該分支預測單元耦合之選擇性指令預提取單元,該指令預提取單元
係用以預提取包括該使用者等級暫止執行緒指令之指令。該處理器亦可選擇性地包括:與該指令預提取單元耦合之第1階(L1)指令快取、用以儲存資料之選擇性L1資料快取、及用以儲存資料和指令之選擇性第2階(L2)快取,該L1指令快取係用以儲存指令。該處理器亦可選擇性地包括與該解碼單元、該L1指令快取、及該L2快取耦合之指令提取單元,用以(於某些情況下)從該L1指令快取與該L2快取之一提取該使用者等級暫止執行緒指令;並提供該使用者等級暫止執行緒指令至該解碼單元。該處理器亦可選擇性地包括:暫存器重新命名單元,用以重新命名暫存器、選擇性排程器,用以排程一或更多已從該使用者等級暫止執行緒指令所解碼的操作以供執行、及選擇性確認單元,用以確認該使用者等級暫止執行緒指令之執行結果。
範例27包括一種系統單晶片,其包括至少一互連、與該至少一互連耦合之範例1至10的任一者之該處理器、與該至少一互連耦合之選擇性圖形處理單元(GPU)與該至少一互連耦合之選擇性數位信號處理器(DSP)、與該至少一互連耦合之選擇性顯示控制器、與該至少一互連耦合之選擇性記憶體控制器、與該至少一互連耦合之選擇性無線數據機、與該至少一互連耦合之選擇性影像信號處理器、與該至少一互連耦合之選擇性通用串列匯流排(USB)3.0相容的控制器、與該至少一互連耦合之選擇性藍牙4.1相容的控制器、及與該至少一互連耦合之選擇
性無線收發器控制器。
範例28為一種可操作以履行範例11至19的任一者之方法的處理器或其他設備。
範例29為一種包括用以履行範例11至19的任一者之方法的機構之處理器或其他設備。
範例30為一種包括用以履行範例11至19的任一者之方法的模組及/或單元及/或邏輯及/或電路及/或機構之任何組合的處理器或其他設備。
範例31為一種選擇性非暫態及/或有形機器可讀取媒體,其係選擇性地儲存或者提供包括第一指令之指令,假如及/或當由處理器、電腦系統、電子裝置、或其他機器所執行時,則該第一指令係操作以致使該機器履行範例11至19的任一者之方法。
範例32為一種實質上如文中所述的處理器或其他設備。
範例33為一種可操作以履行實質上如文中所述的任何方法之處理器或其他設備。
範例34為一種可操作以履行實質上如文中所述的任何使用者等級暫止執行緒指令之處理器或其他設備。
範例35為一種電腦系統或其他電子裝置,其包括具有可操作以解碼第一指令集之指令的解碼單元之處理器。該處理器亦具有一或更多執行單元。該電子裝置亦包括與該處理器耦合之儲存裝置。該儲存裝置係操作以儲存第一指令,該第一指令可為實質上如文中所揭露之任何指令,
且其係屬於第二不同的指令集者。該儲存裝置亦操作以儲存將該第一指令轉換為該第一指令集之一或更多指令的指令。當由該處理器履行時,該第一指令集之該些一或更多指令係用以致使該處理器具有如該第一指令(假如被直接履行的話)之相同效果。
100:電腦系統
101:處理器
102-1:第一邏輯處理器
102-2:第二邏輯處理器
103:指令集
104:使用者等級設定監督位址指令
105:使用者等級監督存取暫止執行緒指令
106:異動式記憶體相容的使用者等級暫止執行緒指令
107-1:第一軟體執行緒
107-2:第二軟體執行緒
108:耦合機制
109:記憶體
110:管理系統軟體模組
111:使用者等級應用程式模組
115:共用記憶體區
116-1:第一共用記憶體位置
116-N:第N共用記憶體位置
Claims (19)
- 一種處理器,包含:解碼單元,用以解碼使用者等級執行緒之使用者等級暫止執行緒指令,該使用者等級暫止執行緒指令用以指示第一替代狀態;以及執行單元,與該解碼單元耦接,該執行單元用以當該使用者等級暫止執行緒指令被包括在異動式記憶體異動內時,履行對應於使用者特權上的該使用者等級暫止執行緒指令,而不異常中止該異動式記憶體異動,該運算包括用以:暫止執行該使用者等級執行緒;將對應於該使用者等級執行緒的邏輯處理器變遷至指示的該第一替代狀態;以及反應於執行緒重新開始條件,以小於五百時脈循環之潛時,從該第一替代狀態重新開始履行該使用者等級執行緒。
- 如請求項1所述的處理器,其中該潛時小於二百時脈循環。
- 如請求項1所述的處理器,其中該使用者等級暫止執行緒指令係用以指示該第一替代狀態為複數個可能的替代狀態其中一者。
- 如請求項3所述的處理器,其中該複數個可能的替代狀態包括第二替代狀態,該使用者等級執行緒之履行係用以用小於該第一替代狀態之該潛時的潛時從該第二替 代狀態被重新開始。
- 如請求項4所述的處理器,其中用於該第一替代狀態和第二替代狀態兩者的潛時小於停止狀態之潛時。
- 如請求項1所述的處理器,其中該使用者等級暫止執行緒指令具有來源運算元,用以明定使用者等級暫停值。
- 如請求項1所述的處理器,更包含控制暫存器,用以儲存管理系統軟體加諸的暫停值。
- 如申請求項7所述的處理器,其中該執行單元係用以:判定該管理系統軟體加諸的暫停值是否已截止;以及當該管理系統軟體加諸的暫停值已截止時,儲存該系統軟體加諸的暫停值已截止的指示。
- 如請求項1所述的處理器,其中該使用者等級暫止執行緒指令具有來源運算元,用以明定使用者等級暫停值,且更包含控制暫存器,用以儲存管理系統軟體加諸的暫停值。
- 一種在處理器中實行的方法,包含:從在使用者等級執行緒之異動式記憶體異動內接收使用者等級暫止執行緒指令,該使用者等級暫止執行緒指令指示第一替代狀態;履行在使用者等級特權上對應於該使用者等級暫止執行緒指令的運算,而不異常中止該異動式記憶體異動,該運算包括: 暫止執行該使用者等級執行緒;將對應於該使用者等級執行緒的邏輯處理器變遷至指示的該第一替代狀態;以及偵測執行緒重新開始條件;以及在該執行緒重新開始條件之後,以小於五百時脈循環之潛時,從該第一替代狀態重新開始履行該使用者等級執行緒。
- 如請求項10所述的方法,其中該使用者等級執行緒係以小於二百時脈潛時的潛時來重新開始。
- 如請求項10所述的方法,其中該使用者等級暫止執行緒指令係用以指示該第一替代狀態為複數個可能的替代狀態其中一者。
- 如請求項12所述的方法,其中該複數個可能的替代狀態包括第二替代狀態,該使用者等級執行緒之履行係以小於該第一替代狀態之該潛時的潛時可從該第二替代狀態重新開始。
- 如請求項10所述的方法,其中該使用者等級暫止執行緒指令具有來源運算元,其明定使用者等級暫停值。
- 如請求項10所述的方法,更包含控制暫存器,其儲存管理系統軟體加諸的暫停值。
- 如申請專利範圍第15項的方法,更包含:判定該管理系統軟體加諸的暫停值是否隨著該執行緒重新開始條件而已截止;以及 儲存該管理系統軟體加諸的暫停值已截止的指示。
- 一種用於使用者等級執行緒暫止的系統,包含:互連;與該互連耦接的動態隨機存取記憶體(DRAM);與該互連耦接的處理器,該處理器包括:解碼單元,用以解碼使用者等級執行緒之使用者等級暫止執行緒指令,該使用者等級暫止執行緒指令用以指示第一替代狀態;以及執行單元,與該解碼單元耦接,該執行單元用以當該使用者等級暫止執行緒指令被包括在異動式記憶體異動內時,履行對應於使用者特權上的該使用者等級暫止執行緒指令,而不異常中止該異動式記憶體異動,該運算包括用以:暫止執行該使用者等級執行緒;將對應於該使用者等級執行緒的邏輯處理器變遷至指示的該第一替代狀態;以及反應於執行緒重新開始條件,以小於五百時脈循環之潛時,從該第一替代狀態重新開始履行該使用者等級執行緒。
- 如請求項17所述的系統,其中該使用者等級暫止執行緒指令具有來源運算元,用以明定使用者等級暫停值,且更包含控制暫存器,用以儲存管理系統軟體加諸的暫停值。
- 如申請求項18所述的系統,其中該執行單元係 用以:判定該管理系統軟體加諸的暫停值是否已截止;以及當該管理系統軟體加諸的暫停值已截止時,儲存該系統軟體加諸的暫停值已截止的指示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/019,112 | 2016-02-09 | ||
US15/019,112 US11023233B2 (en) | 2016-02-09 | 2016-02-09 | Methods, apparatus, and instructions for user level thread suspension |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202207024A TW202207024A (zh) | 2022-02-16 |
TWI808506B true TWI808506B (zh) | 2023-07-11 |
Family
ID=59497682
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106101044A TWI742032B (zh) | 2016-02-09 | 2017-01-12 | 用於使用者等級執行緒暫止的方法、設備及指令 |
TW110138201A TWI808506B (zh) | 2016-02-09 | 2017-01-12 | 用於使用者等級執行緒暫止的方法、處理器及系統 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106101044A TWI742032B (zh) | 2016-02-09 | 2017-01-12 | 用於使用者等級執行緒暫止的方法、設備及指令 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11023233B2 (zh) |
CN (2) | CN108701040B (zh) |
DE (1) | DE112017000721T5 (zh) |
TW (2) | TWI742032B (zh) |
WO (1) | WO2017139054A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10509729B2 (en) | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US10185564B2 (en) * | 2016-04-28 | 2019-01-22 | Oracle International Corporation | Method for managing software threads dependent on condition variables |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
EP3422192B1 (en) * | 2017-06-28 | 2020-08-12 | Arm Ltd | Address translation data invalidation |
US11593117B2 (en) | 2018-06-29 | 2023-02-28 | Qualcomm Incorporated | Combining load or store instructions |
EP3594804B1 (en) * | 2018-07-09 | 2021-11-03 | ARM Limited | Transactional compare-and-discard instruction |
CN112470125B (zh) * | 2018-07-24 | 2024-02-20 | 三菱电机株式会社 | 中断处理方法、计算机系统以及存储介质 |
US10885698B2 (en) * | 2018-08-10 | 2021-01-05 | Nvidia Corporation | Method for programmable timeouts of tree traversal mechanisms in hardware |
GB2579246B (en) * | 2018-11-28 | 2021-10-13 | Advanced Risc Mach Ltd | Apparatus and data processing method for transactional memory |
CN111309402B (zh) * | 2018-12-11 | 2023-06-27 | 阿里巴巴集团控股有限公司 | 数据监测及针对应用程序的处理方法、装置及设备 |
US11157283B2 (en) * | 2019-01-09 | 2021-10-26 | Intel Corporation | Instruction prefetch based on thread dispatch commands |
US11086672B2 (en) * | 2019-05-07 | 2021-08-10 | International Business Machines Corporation | Low latency management of processor core wait state |
CN111221621A (zh) * | 2019-10-11 | 2020-06-02 | 中国电力科学研究院有限公司 | 一种电能表虚拟机的专用指令处理方法及系统 |
CN110727507B (zh) * | 2019-10-21 | 2022-09-09 | 广州欢聊网络科技有限公司 | 一种消息的处理方法、装置、计算机设备和存储介质 |
CN116097221A (zh) * | 2020-04-30 | 2023-05-09 | 华为技术有限公司 | 安全数据处理方法及装置 |
CN113760364B (zh) * | 2020-06-03 | 2022-06-17 | 广东高云半导体科技股份有限公司 | 逻辑器件的控制器 |
US11586466B2 (en) * | 2021-01-20 | 2023-02-21 | EMC IP Holding Company LLC | Centralized high-availability flows execution framework |
CN115903695B (zh) * | 2022-11-07 | 2023-10-10 | 哈尔滨工业大学 | 基于分层式有限状态机的多功能贴片机生产流程控制方法 |
CN116909799B (zh) * | 2023-09-13 | 2023-12-26 | 飞腾信息技术有限公司 | 数据访问方法和片上系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5392444A (en) * | 1987-06-06 | 1995-02-21 | Omron Tateisi Electronics Co. | Programmable controller for completing the execution of a block of user programs within a set time period |
TWI243333B (en) * | 2002-06-03 | 2005-11-11 | Intel Corp | Architecture to support multiple concurrent execution contexts on a processor |
US20060294406A1 (en) * | 2005-06-23 | 2006-12-28 | Intel Corporation | Reducing storage data transfer interference with processor power management |
US20100332753A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Wait loss synchronization |
US20120054511A1 (en) * | 2010-08-31 | 2012-03-01 | Sonics, Inc | Intelligent power controller |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671795B1 (en) | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US20030126416A1 (en) * | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
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 |
US7559060B2 (en) * | 2003-06-10 | 2009-07-07 | National Instruments Corporation | Time-bounded program execution |
US7213093B2 (en) | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
US7313673B2 (en) * | 2005-06-16 | 2007-12-25 | International Business Machines Corporation | Fine grained multi-thread dispatch block mechanism |
US8028295B2 (en) * | 2005-09-30 | 2011-09-27 | Intel Corporation | Apparatus, system, and method for persistent user-level thread |
US9081687B2 (en) | 2007-12-28 | 2015-07-14 | Intel Corporation | Method and apparatus for MONITOR and MWAIT in a distributed cache architecture |
US20090307707A1 (en) | 2008-06-09 | 2009-12-10 | International Business Machines Corporation | System and method for dynamically adaptive mutual exclusion in multi-threaded computing environment |
CN101944046A (zh) * | 2009-07-07 | 2011-01-12 | 英特尔公司 | 用于调度线程的技术 |
US8464035B2 (en) | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US9588576B2 (en) | 2011-09-12 | 2017-03-07 | Microsoft Technology Licensing, Llc | Managing processes within suspend states and execution states |
US20140075163A1 (en) | 2012-09-07 | 2014-03-13 | Paul N. Loewenstein | Load-monitor mwait |
US9304810B2 (en) | 2012-10-15 | 2016-04-05 | National Instruments Corporation | Time monitoring in a processing element and use |
US20140129784A1 (en) | 2012-11-07 | 2014-05-08 | Mellanox Technologies, Ltd. | Methods and systems for polling memory outside a processor thread |
US9274832B2 (en) * | 2013-02-07 | 2016-03-01 | Htc Corporation | Method and electronic device for thread scheduling |
US10705961B2 (en) | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
US9898351B2 (en) | 2015-12-24 | 2018-02-20 | Intel Corporation | Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
-
2016
- 2016-02-09 US US15/019,112 patent/US11023233B2/en active Active
-
2017
- 2017-01-10 WO PCT/US2017/012828 patent/WO2017139054A1/en active Application Filing
- 2017-01-10 CN CN201780010719.5A patent/CN108701040B/zh active Active
- 2017-01-10 DE DE112017000721.6T patent/DE112017000721T5/de active Pending
- 2017-01-10 CN CN202210427999.2A patent/CN115016907A/zh active Pending
- 2017-01-12 TW TW106101044A patent/TWI742032B/zh active
- 2017-01-12 TW TW110138201A patent/TWI808506B/zh active
-
2021
- 2021-05-31 US US17/334,901 patent/US12020031B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5392444A (en) * | 1987-06-06 | 1995-02-21 | Omron Tateisi Electronics Co. | Programmable controller for completing the execution of a block of user programs within a set time period |
TWI243333B (en) * | 2002-06-03 | 2005-11-11 | Intel Corp | Architecture to support multiple concurrent execution contexts on a processor |
US20060294406A1 (en) * | 2005-06-23 | 2006-12-28 | Intel Corporation | Reducing storage data transfer interference with processor power management |
US20100332753A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Wait loss synchronization |
US20120054511A1 (en) * | 2010-08-31 | 2012-03-01 | Sonics, Inc | Intelligent power controller |
Also Published As
Publication number | Publication date |
---|---|
WO2017139054A1 (en) | 2017-08-17 |
DE112017000721T5 (de) | 2018-10-31 |
CN108701040A (zh) | 2018-10-23 |
CN115016907A (zh) | 2022-09-06 |
TWI742032B (zh) | 2021-10-11 |
US11023233B2 (en) | 2021-06-01 |
US20170228233A1 (en) | 2017-08-10 |
CN108701040B (zh) | 2022-05-13 |
TW202207024A (zh) | 2022-02-16 |
US20210357214A1 (en) | 2021-11-18 |
US12020031B2 (en) | 2024-06-25 |
TW201734767A (zh) | 2017-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI808506B (zh) | 用於使用者等級執行緒暫止的方法、處理器及系統 | |
JP6708335B2 (ja) | ユーザレベルの分岐及び結合を行うプロセッサ、方法、システム、及び命令 | |
US10152599B2 (en) | Security mechanisms for extreme deep sleep state | |
TWI494850B (zh) | 通透地提供給作業系統之非對稱多核心處理器系統 | |
US10156884B2 (en) | Local power gate (LPG) interfaces for power-aware operations | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
JP6450705B2 (ja) | 永続コミットプロセッサ、方法、システムおよび命令 | |
US10768680B2 (en) | Hardware apparatuses and methods to perform transactional power management | |
US20060271932A1 (en) | Transparent support for operating system services for a sequestered sequencer | |
JP2017527902A (ja) | 例外からの復帰時のマスク不可割り込みの早期有効化の回避 | |
US20170147345A1 (en) | Multiple operation interface to shared coprocessor | |
US20190205061A1 (en) | Processor, method, and system for reducing latency in accessing remote registers | |
US10599335B2 (en) | Supporting hierarchical ordering points in a microprocessor system | |
US20240103868A1 (en) | Virtual Idle Loops | |
Fasiku et al. | A review of architectures-Intel single core, Intel dual core and AMD dual core processors and the benefits |