TWI515653B - 指令順序執行之指令對、處理器、方法及系統 - Google Patents
指令順序執行之指令對、處理器、方法及系統 Download PDFInfo
- Publication number
- TWI515653B TWI515653B TW103121587A TW103121587A TWI515653B TW I515653 B TWI515653 B TW I515653B TW 103121587 A TW103121587 A TW 103121587A TW 103121587 A TW103121587 A TW 103121587A TW I515653 B TWI515653 B TW I515653B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- execution
- processor
- instructions
- sequentially
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 69
- 230000000903 blocking effect Effects 0.000 claims description 40
- 238000012545 processing Methods 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 24
- 230000009849 deactivation Effects 0.000 claims description 18
- 230000008859 change Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 41
- 238000003860 storage Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000007667 floating Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 235000012431 wafers Nutrition 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000005611 electricity 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
- 230000002250 progressing effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000003786 synthesis reaction 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/30079—Pipeline control instructions, e.g. multicycle 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
Description
此處說明之實施例一般係關於處理器。尤其是,此處說明之實施例一般係關於亂序執行處理器中執行指令順序。
許多現代處理器是亂序(OoO)執行處理器,其能夠以不同於其中指令顯露原始軟體程式之順序的順序而執行指令。“程式順序”用詞通常被使用以涉及原始軟體程式中指令之順序。取代必須地以程式順序執行指令,亂序執行處理器可依據輸入資料可用性,以及各種其他的因素之順序而執行指令。藉由範例,一些較新指令可能需要來自較舊指令之輸入資料,而其他的較新指令可能不需要來自任何較舊指令之輸入資料。
亂序執行可允許該處理器即時地執行指令,該等指令是備妥而不必延遲等待因為它們等待資料而可能本身未備妥以執行的先前指令。指令實際上於亂序執行處理
器中被執行之順序通常被稱為資料順序。隨後,該亂序執行處理器可重新排序該執行結果及/或結構狀態且呈現該執行結果及/或結構狀態(例如,至軟體,一使用者,等等)於原始程式順序而非其中該等指令原先實際上被執行之資料順序。有利地,部分地由於增加之管線階段或處理時間槽之使用,此等亂序執行處理器一般具有被改進性能及/或速率。
但是,某些情況亂序執行處理器之一挑戰是因亂序執行結果使得當一資源僅應該以程式順序存取時被以資料順序存取之問題可能發生。
依據本發明之一實施例,係特地提出一種處理器,其包括:一指令擷取單元,其擷取一指令順序執行之指令對,該指令順序執行之指令對係要是該處理器的一指令集之部份,該指令順序執行之指令對包含一致動指令與一執行指令,該致動指令於一程式順序中發生在該執行指令之前;以及一指令順序執行模組,其響應於該指令順序執行之指令對,防止該程式順序中發生在該執行指令之後的指令,不會於該處理器之一亂序部份中,先前於該致動指令被處理。
100‧‧‧處理器
102‧‧‧管線
104‧‧‧依序前端
105‧‧‧擷取單元
106‧‧‧亂序執行部份
108‧‧‧依序後端
110‧‧‧指令順序執行模組
112‧‧‧程式
114‧‧‧指令對
116‧‧‧致動指令
118‧‧‧執行指令
120‧‧‧其他指令
122‧‧‧程式順序
226‧‧‧處理器中方法
227、228‧‧‧區塊
304‧‧‧依序前端
306‧‧‧亂序執行部份
308‧‧‧依序後端
310‧‧‧指令順序執行模組
316‧‧‧致動指令
318/320‧‧‧執行與其他指令
330‧‧‧致動模組
332‧‧‧第一階段
334‧‧‧指令順序執行控制位元
336‧‧‧阻止模組
337‧‧‧指令保持邏輯
338‧‧‧控制位元檢查邏輯
340‧‧‧第二階段
342‧‧‧停用模組
344‧‧‧第三階段
404‧‧‧依序前端
406‧‧‧亂序執行部份
408‧‧‧依序後端
410‧‧‧指令順序執行模組
416‧‧‧致動指令
418/420‧‧‧執行與其他指令
430‧‧‧致動模組
432‧‧‧第一階段
436‧‧‧阻止模組
437‧‧‧指令保持邏輯
438‧‧‧計數器檢查邏輯
440‧‧‧第二階段
448‧‧‧指令順序執行計數器
502A~C‧‧‧管線
550‧‧‧分配階段之致動
551‧‧‧分配階段之阻止
552‧‧‧提交階段之停用
553‧‧‧擷取階段之致動
554‧‧‧分配階段之阻止
555‧‧‧儲存廣域可見之停用
557‧‧‧擷取階段之阻止
556‧‧‧排程階段之致動
555‧‧‧提交階段之停用
660‧‧‧致動指令格式
662‧‧‧操作碼
664‧‧‧運算元
760‧‧‧致動指令格式
761‧‧‧操作碼
764‧‧‧運算元
766‧‧‧前綴
768、776‧‧‧其他運算元
770‧‧‧執行指令格式
772‧‧‧前綴
774‧‧‧操作碼
800‧‧‧管線
802‧‧‧擷取階段
804‧‧‧長度解碼階段
806‧‧‧解碼階段
808‧‧‧分配階段
810‧‧‧重新命名階段
812‧‧‧排程階段
814‧‧‧暫存器讀取/記憶體讀取階段
816‧‧‧執行階段
818‧‧‧寫回/記憶體寫入階段
822‧‧‧例外處理階段
824‧‧‧提交階段
830‧‧‧前端單元
832‧‧‧分支預測單元
834‧‧‧指令快取單元
836‧‧‧指令TLB單元
838‧‧‧指令擷取單元
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧重新命名/分配器單元
854‧‧‧除役單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔案單元
860‧‧‧執行聚集器
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料TLB單元
874‧‧‧資料快取單元
876‧‧‧L2快取單元
890‧‧‧核心
900‧‧‧指令解碼器
902‧‧‧互連網路
904‧‧‧L2快取的本地子集
906‧‧‧L1快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
906A‧‧‧L1資料快取
920‧‧‧拌和單元
922A~B‧‧‧數值轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
928‧‧‧16-位元寬ALU
1000‧‧‧處理器
1002A~N‧‧‧核心
1004A~N‧‧‧快取單元
1006‧‧‧共用快取單元
1008‧‧‧特定用途邏輯
1010‧‧‧系統代理器單元
1012‧‧‧環式為基礎之互連單元
1014‧‧‧整合記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110、1115‧‧‧處理器
1120‧‧‧控制器中樞
1140‧‧‧記憶體
1145‧‧‧協同處理器
1150‧‧‧IOH
1160‧‧‧輸入/輸出(I/O)設備
1190‧‧‧GMCH
1195‧‧‧相似連接
1200‧‧‧系統
1214‧‧‧I/O設備
1215‧‧‧處理器
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋
1220‧‧‧第二匯流排
1222‧‧‧鍵盤/滑鼠
1224‧‧‧音訊I/O
1227‧‧‧通訊設備
1228‧‧‧儲存器單元
1230‧‧‧數碼與資料
1232、1234‧‧‧記憶體
1238‧‧‧協同處理器
1239‧‧‧介面
1250‧‧‧點對點互連/P-P介面
1252、1254‧‧‧P-P介面
1270、1280‧‧‧處理器
1272、1282‧‧‧IMC單元/CL
1276、1278、1286、1288‧‧‧點對點(P-P)介面/P-P介面電路
1286‧‧‧點對點(P-P)介面
1288‧‧‧點對點(P-P)介面
1290‧‧‧晶片組
1292‧‧‧介面
1294、1298‧‧‧點對點(P-P)介面電路
1296‧‧‧介面
1300‧‧‧系統
1314‧‧‧I/O設備
1315‧‧‧遺留I/O
1400‧‧‧晶片系統
1402‧‧‧互連單元
1410‧‧‧應用處理器
1420‧‧‧協同處理器
1430‧‧‧SRAM單元
1432‧‧‧DMA單元
1440‧‧‧顯示單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二進制碼
1508‧‧‧替代的指令集編譯器
1510‧‧‧替代的指令集二進制碼
1512‧‧‧指令轉換器
1514‧‧‧無x86指令集核心之處理器
1516‧‧‧具有至少一個x86指令集核心之處理器
本發明可參看被使用以例示實施例的下面說明與附圖而更了解。
圖1是可操作以處理或進行一指令順序執行之指令對之一處理器實施例方塊圖。
圖2是處理或進行一指令順序執行之指令對實施例之一處理器中方法實施例方塊流程圖。
圖3是一適當的指令順序執行模組之第一範例實施例方塊圖。
圖4是一適當的指令順序執行模組之第二範例實施例方塊圖。
圖5A-C是例示許多適當的管線階段以實行指令順序之致動、執行、及停用實施例之方塊圖。
圖6是一適當的致動指令格式之第一實施例方塊圖。
圖7A是一適當的致動指令格式之第二實施例方塊圖。
圖7B是一適當的執行指令格式之實施例方塊圖。
圖8A是例示依據本發明實施例,一範例依序管線與一範例暫存器重新命名,亂序發出/執行管線之方塊圖。
圖8B是例示依據本發明實施例,被包含於一處理器中一範例依序結構核心與一範例暫存器重新命名,亂序發出/執行結構核心之方塊圖。
圖9A是依據本發明實施例,一單一處理器核心,與其一起連接之晶粒上互連網路與其之本地位準2(L2)
快取子集之方塊圖。
圖9B是依據本發明實施例圖9A中處理器核心之部件之擴展圖。
圖10是依據本發明實施例一處理器之方塊圖,該處理器可具有多於一個核心,可具有一被整合記憶體控制器,及可具有被整合圖形核心。
圖11展示依據本發明一實施例之一系統方塊圖。
圖12展示依據本發明一實施例之一第一更特定範例的系統方塊圖。
圖13展示依據本發明一實施例之一第二更特定範例的系統方塊圖。
圖14展示依據本發明一實施例之一SoC方塊圖。
圖15是依據本發明實施例對照使用一軟體指令轉換器轉換一來源指令中二進制指令集至一目標指令集中二進制指令之方塊圖。
此處所揭示是指令順序執行指令對、處理或進行該指令對之處理器、當處理或進行該指令對時處理器進行之方法、以及包含一個或多個處理器以處理或進行該指令對之系統。下面的說明中,許多特定細節被提出(例如,特定指令功能,處理器組態,微結構細節,操作序
列,等等)。但是,實施例可以被實施而不必這些特定細節。於其他實例中,習知的電路,結構與技術不詳細被展示以避免混淆說明之了解。
圖1是可操作以處理或進行一指令順序執行之指令對114之處理器100實施例方塊圖。於一些實施例中,該處理器100可以是一般用途處理器(例如,一中央處理單元(CPU)或其他的一般用途微處理器或被使用於桌上型、膝上型電腦、平板電腦、及其類似者之電腦型式)。另外地,該處理器可以是一特殊用途處理器。適當的特殊用途處理器範例包含,但是不受限於,網路處理器、通訊處理器、密碼處理器、圖形處理器、輔助處理器、嵌入式處理器、數位信號處理器(DSP)、以及控制器(例如,微控制器),只作為一些範例。該處理器可以是任何之各種複雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種非常長指令字組(VLIW)處理器、各種其混合,或其他型式的處理器。
一程式112同時也被展示。藉由範例,該程式可以被儲存於主要記憶體,或另一適當的儲存設備。在期間操作,該程式可以藉由處理器被進行,被執行,或另外地被進行。該處理器可擷取或以不同的方法接收該程式之指令。於一些實施例中,該程式之指令可以是該處理器指令集之一部份。該指令集之指令可代表相對地高階巨指令、組件語言指令、機器-位準指令、或在指令集位準之控制信號,其可被提供至該處理器供執行,如對照於相對低階
微指令、微-操作、或藉由處理器自相對地高階指令被解碼的其他指令或控制信號。
於一些實施例中,該處理器可代表一亂序(OoO)執行處理器100,其可操作以亂序地執行指令。亂序執行處理器已在上面背景部份討論。亂序執行處理器具有一亂序執行管線102。該管線包含一依序前端104、一亂序執行部份106、以及一依序後端108。這些管線相位的特定單元或構成可自一個實行例至另一實行例而變化。於一代表性實施例中,該依序前端可包含一指令擷取單元或階段(例如,擷取單元105)、一長度解碼單元或階段、一解碼單元或階段、一分配單元或階段、一重新命名單元或階段。於一代表性實施例中,該亂序執行部份可包含一排程器單元或階段(有時也被稱為派遣或發出)、一暫存器檔案單元以及記憶體單元或暫存器讀取/記憶體讀取階段、一執行單元或階段,一暫存器檔案單元以及記憶體單元或寫回/記憶體寫入階段。於一代表性實施例中,該依序後端可包含一例外處理階段以及一除役或提交單元或階段。這只是一個特定的範例並且可了解本發明範疇是不受限於這特定的範例。其他的實施例可使用單元及/或管線階段的其他組合與組態。習知於亂序執行處理器技術之單元及/或管線階段之任何組合或組態一般應該是適用的。
亂序執行處理器之一挑戰是即使在處理器之亂序執行部份106之內也保持某些指令於原始的程式順序是重要或至少有用的。藉由範例,這可以是如果一記憶體位
置、映射輸入-輸出數值、或其他的資源只以原始程式順序被更新或以不同的方法被存取之情況。代表性地,如果記憶體位置以資料順序而非程式順序被更新,則一錯誤可發生(例如,一較舊/先前的指令之寫入可更新亂序接近該較舊/先前的指令被執行之一較新指令之寫入)。此一錯誤可導致數值不同及不一致於該原始程式之意圖。更一般地,這可以是各種可能情形之任何情況,其中,如果指令亂序及/或以資料順序取代依序及/或程式順序被執行,一非正確或不一致結果可能發生,或一些其他的問題可能發生。
再次參看圖1,該程式包含一指令順序執行之指令對114。該指令順序執行之指令對包含一致動指令116與一執行指令118。於一些實施例中,該致動指令可操作以導致處理器致動指令順序執行,且該執行指令可操作以導致處理器執行該指令順序。該程式同時也包含其他指令120。利用一向下箭號來表示增加之程式順序122。於例示之實施例中,原始之程式順序122指定在程式順序中,致動指令116發生在執行指令118之前。此外,程式順序中,其他指令120發生在執行指令之後。如果需要,一個或多個指令(未被展示於圖中)可選擇地被包含在致動與執行指令之間的程式順序中。
如例示之展示,該處理器同時也包含一指令順序執行模組110。該指令順序執行模組可以硬體(例如,積體電路、電晶體或其他的電路元件,等等)、韌體(例如,
儲存於非依電性記憶體之微碼或其他的低階指令)、軟體(例如,儲存於記憶體之高階指令),或其組合(例如,硬體與一個或多個韌體及/或軟體組合)被實行。
於一些實施例中,該指令順序執行模組110,響應於指令順序執行之指令對114,可操作以防止程式順序122中在執行指令118之後發生之其他指令120,不會於處理器100之亂序執行部份106中,先前於致動指令116被處理。該指令對可導致處理器執行一指令順序限制於在該指令對之前與之後發出之指令或操作。於一些實施例中,該致動指令116可操作以致動一給定的管線階段之指令順序執行,例如,該依序前端104中之一階段。可有不同的致動該指令順序執行之方式且將進一步地在下面被說明。於一些實施例中,該執行指令118可操作以在一給定的管線階段執行該指令順序,例如,該依序前端104中之一階段。例如,於一些實施例中,該執行指令可以被保持於該給定的管線階段之佇列中且因而被防止,以及防止較新的其他指令120,不會前進經由管線越過該給定的管線階段。稍後,該指令順序執行可被停用且接著執行指令及其他的較新指令可繼續前進經由管線。有利地,這可協助執行指令排序,例如,其有助於排序記憶體位置或其他的資源之存取。
如先前所述,於一些實施例中,致動與執行指令可代表處理器指令集之指令。有利地,使用該指令集(亦即,指令集位準指令)之二指令,則不需要進行微碼中
之相關的指令順序操作或功能。於一個論點中,這可提供於一RISC處理器及/或一處理器之一優點,該等處理器是不可操作以使用微碼(例如,微指令或微操作)進行該指令順序執行之指令對114(例如,該處理器可能無法使用微碼或僅可以有限制或被限制方式使用微碼,那是不適於實行指令順序執行之指令對)。但是,該等指令同時也可選擇地被使用於CISC或其他型式的處理器,包含可選擇地以微碼實行該指令順序執行之指令對之處理器。此外,該指令對可允許一業者(例如,一軟體程式師)或軟體靈活地控制程式或指令對數碼之位置以達成所需的指令順序。
於一些實施例中,對照於某些型式指令,例如比較與交換及其類似指令,其僅影響一單一信號、互斥鎖、或被共用變量,指令順序執行之指令對實施例可允許排序存取多重、多數個、任何數之記憶體位址。於一些實施例中,對照於某些記憶體圍欄或記憶體屏障指令,指令順序執行之指令對實施例可執行多重、多數個、或任何數之不同型式的指令之順序,而非只是記憶體存取指令(例如,記憶體負載,記憶體儲存,記憶體負載與記憶體儲存,等等)。此外,記憶體圍欄指令一般只執行存取記憶體之順序。相對地,此處被揭示指令之實施例可執行存取記憶體之順序,以及執行其他的事項之順序,例如,存取暫存器,算術操作,及/或處理指令時間。此外,此處被揭示指令實施例可執行記憶體圍欄指令一般不能執行順序的其他情況之順序。作為一範例,考慮一輸入/輸出(I/O)
設備,其具有兩位置,一第一位置X與一第二位置Y。寫入X可允許Y被讀取。記憶體圍欄指令可保持在X之後一些時間發生Y之間的一致性,但不是反之亦然。
為避免混淆說明,一相對簡單處理器已被展示且被說明。該處理器可選擇地包含發現於處理器中的其他習知構件。此等構件範例包含,但是不受限於,一分支預測單元、指令與資料快取、第二或較高位準快取、指令與資料轉譯後備緩衝器、預擷取緩衝器、一暫存器重新命名單元、一指令排程單元、匯流排介面單元、一除役單元,包含於處理器的其他構件,及其各種組合。處理器有許多不同的組合與構件組態,且實施例是不受限於任何特定的組合或組態。實施例可以包含於具多數個核心,邏輯處理器,或執行引擎之處理器,其中至少一者是可操作以處理此處揭示之一指令順序執行之指令對。
圖2是處理或進行一指令順序執行之指令對實施例之處理器中方法226之實施例方塊流程圖。各種實施例中,該方法可以利用一般用途處理器,特殊用途處理器,或其他的指令處理裝置或數位邏輯設備被進行。於一些實施例中,圖2之操作及/或方法可以利用圖1處理器及/或在其之內被進行。此處對於圖1處理器被說明之構件,特點,及特定選擇細節同時也選擇地應用於圖2之操作及/或方法。另外地,圖2之操作及/或方法可以利用一相似或不同的處理器及/或在其之內被進行。此外,圖1之處理器可進行相同、相似、或不同於圖2那些者之操作及/或方法。
該方法包含接收一指令順序執行之指令對,在區塊227。於各種論點,該指令對可以在一處理器或其部份(例如,一指令擷取單元、一指令快取、一解碼器,等等)被接收。於各種論點中,該指令可以被接收自一晶粒外來源(例如,自記憶體、一晶粒外互連,等等),或自一晶粒上來源(例如,自一指令快取)。該指令順序執行之指令對可以是一處理器之一指令集的部份。於一些實施例中,該指令順序執行之指令對可包含一致動指令與一執行指令。普遍地,該致動指令可在程式順序中在該執行指令之前發生。
該方法包含,在區塊228,響應於該指令順序執行之指令對,防止該程式順序中在該執行指令之後發生之指令,不會於該處理器之亂序部份中,先前於該致動指令被處理。於一些實施例中,這可包含在該處理器之一管線的一第一階段(例如,在該處理器之一依序前端中之一階段),響應於該致動指令,而致動指令順序執行。於一些實施例中,當該指令順序執行被致動時,該方法可包含藉由防止該執行指令以及發生在該執行指令之後的指令,不會前進越過該管線之一第二階段(例如,在該處理器之一依序前端中之一階段)而執行該指令順序。於一些實施例中,該執行指令可以被保持於一佇列中(例如,該管線之該第二階段中)且可防止於程式順序中在該執行指令之後的該等指令不會前進繞過該執行指令。稍後該指令順序執行可以被停用且接著該執行指令與在該執行指令之後的該
等指令可前進經由管線。
該方法已被展示且以一相對簡單格式被說明,但是操作可選擇地添加至及/或移除自該方法。例如,於其他實施例中,該方法可選擇地包含擷取指令、解碼指令、排程指令(例如,亂序排程致動指令)、執行指令、進行與執行指令相關聯之微結構操作(例如,修改一個或多個位元,程式規劃或致動一計數器,等等)、提交指令,等等。
圖3是一適當的指令順序執行模組310之第一範例實施例方塊圖。於一些實施例中,該指令順序執行模組310可以包含於圖1處理器及/或可被使用以進行圖2之操作或方法。另外地,該指令順序執行模組310可以包含於相似或不同的處理器及/或可被使用以進行相似或不同的操作或方法。此外圖1之處理器可包含如圖3之一相似或不同的指令順序執行模組及/或圖2之操作或方法可以如圖3之一相似或不同的指令順序執行模組被進行。
指令順序執行模組310包含一致動模組330。該致動模組可操作以在該處理器之一管線的一第一階段332,響應於一致動指令316,而啟動或致動指令順序執行。如所展示,於一些實施例中,該第一階段332可以在一依序前端304之內,雖然本發明範疇是不受限制於此。藉由範例,在該依序前端之內第一階段的適當範例包含,但是不受限於,一擷取階段、一解碼階段、及一分配階段,或在其間各點。另外地,依序前端中的其他階段,或
處理器之另一部份,可選擇地被使用。例如,該第一階段可以是一執行階段、一排程階段、或另一階段。於一些實施例中,該致動可以於依序前端中且該停用可以於依序前端、亂序部份、或依序後端中。如果被致動與執行指令使用之管線階段本身不保證充分順序以避免僵局情節(例如,如果致動與執行指令以將導致問題方式失去順序),則某些其他的機構可以被包含於處理器中以提供充分順序保證而避免此等僵局情節。
於這第一範例實施例中,該指令順序執行之致動是經由一個或多個指令順序執行控制位元334。如所展示,該致動模組可被耦合與該一個或多個控制位元334。於一些實施例中,該致動模組可操作以修改或改變該一個或多個控制位元334自一第一狀態(例如,一開始二進制數值)至一第二不同的狀態(例如,一不同的二進制數值)以致動指令順序執行。作為一特定的範例,該致動模組可操作以設定一單一位元至二進制之1而致動該指令順序執行,因此當指令順序執行被停用時該單一位元可以不同的方式被清除為二進制0。
該指令順序執行模組310同時也包含一阻止模組336。該阻止模組可操作,以當該指令順序執行被致動時,響應於該致動與執行指令,而執行指令順序。於一些實施例中,該阻止模組可操作以防止該執行指令以及發生在該執行指令之後的指令,不會前進越過該管線之一第二階段以防止該執行指令以及程式順序中發生在該執行指令
之後的指令,不會前進越過該管線之一第二階段340。如所展示,於一些實施例中,該第二階段可以在與該致動模組分離之階段,且該阻止模組可耦合於該致動模組。於其他實施例中,該第二階段及/或該阻止模組可以在如致動模組之相同階段。藉由範例,阻止模組的適當階段包含,但是不受限於,一擷取階段、一解碼階段、一分配階段、一排程階段、一執行階段、及在其間之各點。另外地,其他的階段可選擇地被使用。
如所展示,在這第一範例實施例中,該阻止模組可包含耦合於該等控制位元之控制位元檢查邏輯338。該控制位元檢查邏輯及/或該阻止模組可操作以讀取或存取該等控制位元而決定是否指令順序執行目前被致動。如進一步地被展示,於這第一範例實施例,該阻止模組可包含指令保持邏輯337(例如,一佇列,被來自二組或更多組線程之指令共用的一多線程資源,等等),其可操作以保持執行指令。於一些實施例中,當決定指令順序執行被致動時,該指令保持邏輯及/或該阻止模組可操作以保持執行指令在第二階段340,且防止程式順序中在該執行指令之後的其他指令不會前進繞過該執行指令及/或移動越過該第二階段。對於具有致動與執行指令,及在該執行指令之後指令的線程之管線化執行,可實質地拖延或暫停一時間週期。在這時間週期間,來自其他線程的指令可選擇地被安置進入管線以善用未使用溝槽或管線階段。
於這第一範例實施例,該指令順序執行模組310
同時也可包含一停用模組342。於一些實施例中,該停用模組可操作,而在管線之第三階段344,響應於該致動指令316,以停用指令順序執行。如所展示,於一些實施例中,該停用模組可耦合於一個或多個指令順序執行控制位元334。於一些實施例中,該停用模組可自被使用以指示致動之第二狀態改變或修改控制位元334至被使用以指示停用之另一狀態(例如,第一狀態)。如所展示,於一些實施例中,該第三階段可以在一依序後端308之內,雖然本發明之範疇是不受限制於此。藉由範例,該依序後端中適當的點包含,但是不受限於,一提交階段,在提交之後其中一儲存是廣域地可見且是已知將發生但是尚未實際上發生之一點,在提交之後其中儲存實際上已發生之一點,及在其之間之各點。另外地,該處理器管線中的其他點或階段可選擇地被使用。在停用之後,該執行指令及程式順序中的其他依序的指令可以被允許進行或向前移動經由管線。作為另一選擇,於一些實施例中,該執行指令可隨後被處理如在該第二階段或一依序階段任一者之一無操作(NOP)。
圖4是一適當的指令順序執行模組410之一第二實施範例方塊圖。於一些實施例中,該指令順序執行模組410可以包含於圖1處理器中及/或可被使用以進行圖2之操作或方法。另外地,指令順序執行模組410可以包含於一相似或不同的處理器及/或可被使用以進行相似或不同的操作或方法。此外圖1之處理器可包含如圖4之一相似或不
同的指令順序執行模組及/或圖2之操作或方法可以利用圖4之一相似或不同的指令順序執行模組被進行。
指令順序執行模組410包含一致動模組430。該致動模組可操作以在該處理器管線之一第一階段432響應於一致動指令416而啟動或致動指令順序執行。如所展示,於一些實施例中,該第一階段432可以在一依序前端404之內,雖然本發明之範疇是不受限制於此。藉由範例,在該依序前端內之該第一階段的適當範例包含,但是不受限於,一擷取階段、一解碼階段、及一分配階段,或在其間的各點。替代地,該依序前端中的其他階段,或該處理器之另一部份,可選擇地被使用。例如,該第一階段可以是一執行階段、一排程階段、或其他階段。
於這第二實施例,該指令順序執行之致動是經由一指令順序執行計數器448。如所展示,致動模組430可耦合於計數器448。於一些實施例中,該致動模組可操作以致動或啟動計數器而開始啟動計數至一給定或預定的數值以致動指令順序執行。藉由範例,該計數器可自一啟始數值(例如,零)往上計數至一給定或預定的停止數值,或自一啟始、給定或預定的數值向下計數至停止數值(例如,零)。於一些實施例中,一給定或預定的數值可以對於該致動指令為固定或是常數(例如,對於該致動指令之一操作碼為固定,不能夠利用致動指令被指定或被改變,可基於解碼該操作碼之一解碼器被決定,等等)。於其他實施例中,該致動指令可具有一運算元以明顯地指定被使用於
該計數器之數值,或另外地指示被使用於該計數器之數值(例如,可具有一個或多個位元以自一些預定數值選擇)。有利地,這可允許一程式師或軟體以適用於特定的實行例之一彈性數值而規劃該計數器。
指令順序執行模組410同時也包含一阻止模組436。該阻止模組,當該指令順序執行被致動時,可響應於該致動與執行指令,而操作以執行指令順序。於一些實施例中,該阻止模組可操作以防止該執行指令以及程式順序中發生在該執行指令之後的指令,不會前進越過該管線之一第二階段440。如所展示,於一些實施例中,該第二階段可以是在與致動模組分離之一階段,且該阻止模組可耦合於該致動模組。於其他實施例中,該第二階段及/或該阻止模組可以在如致動模組之相同階段。藉由範例,阻止模組的適當階段包含,但是不受限於,一擷取階段、一解碼階段、一分配階段、一排程階段、一執行階段、及在其間的各點。另外地,其他的階段可選擇地被使用。
如所展示,於這第二實施例,該阻止模組可包含耦合於計數器448之計數器檢查邏輯438。該計數器檢查邏輯及/或該阻止模組可操作以讀取,檢查,或存取該計數器以決定指令順序執行是否目前被致動。另外地,該計數器可以被組態以發信號示知該阻止模組以指示指令順序執行是否目前被致動。如進一步地被展示,於這第一範例實施例,該阻止模組可包含指令保持邏輯437(例如,一佇列,被來自二組或更多組線程之指令共用之一多線程資
源,等等),其可操作以保持執行指令。於一些實施例中,當決定指令順序執行被致動時,該指令保持邏輯及/或該阻止模組可操作以保持執行指令在該第二階段440,且防止在程式順序中在執行指令之後的其他指令不會前進繞過該執行指令及/或移動越過該第二階段。
於這第二實施例,指令順序執行可以在計數器計數至給定或預定的數值時自動地被停用。在停用之後,該執行指令與其他的依序指令可以被允許繼續或前進經由管線(例如,經由一亂序執行部份406與一依序後端408)。作為另一選擇,於一些實施例中,該執行指令可隨後在第二階段或該管線之一依序的階段選擇地被處理如一無操作(NOP)。
圖5A-C是方塊圖,其例示實行指令順序之致動、執行、及停用的適當管線階段之許多實施例。於這些圖中,管線階段,自左方至右方被展示,包含擷取、長度解碼、解碼、分配、重新命名、排程、暫存器/記憶體讀取、執行、寫回/記憶體寫入、例外處理、及提交。這些特定的管線階段不是必需的。任何本技術習知的其他管線階段一般應該是適當的。
圖5A例示一管線502A之一實施例,其中指令順序之致動550是在分配階段,指令順序之執行或阻止551同時也是在該分配階段,且指令順序之停用552是在提交階段。圖5B例示一管線502B之實施例,其中指令順序之致動553是在擷取階段,指令順序之執行或阻止554是在分配
階段,且指令順序之停用555是在提交階段,其在其中儲存廣域可見之一點。圖5C例示一管線502C之一實施例,其中指令順序之致動556是在排程階段,指令順序之執行或阻止557是在擷取階段,且指令順序之停用558是在提交階段。應了解,這些只是一些展示的實施例。那些熟習本技術者且具有本揭示益處者將了解各種其他的管線階段及/或管線階段之組合可另外地被使用。
圖6是一適當致動指令格式660的一第一實施例方塊圖。致動指令格式包含一操作碼662。該操作碼可代表複數個位元或一個或多個欄位,其可操作以辨識將被進行之指令及/或操作。於一些實施例,該致動指令格式同時也可選擇地包含一個或多個運算元664以指定或另外不同的方式指示被使用以致動一指令順序執行計數器之一數值。該等一個或多個運算元可包含一個或多個欄位或位元。於一些實施例中,該等一個或多個運算元可明顯地指定或外不同的方式直接地指示在指令之內之數值。例如,一即時(例如,一4-位元或8-位元即時)可明顯地指定數值或選擇多數個預定數值之一個。於一些實施例中,該數值可代表一些計數之時脈週期,雖然本發明之範疇是不受限制於此。於其他實施例中,該等一個或多個運算元可指示一個或多個暫存器或被使用以儲存該數值的其他儲存位置。於再另一實施例中,該暫存器或具有該數值的其他儲存位置可以隱含於指令而不明定。
圖7A是一適當致動指令格式760的一第二實施
例方塊圖。於一些實施例中,該致動指令格式可選擇地包含一前綴766以指示該指令是致動指令順序執行之一致動指令。該致動指令格式同時也包含一操作碼761。於一些實施例中,該操作碼可辨識除了致動指令順序執行之外將被進行之一指令及/或一操作,其是該前綴之功能。藉由範例,該操作碼可指示算術,邏輯,記憶體存取,或其他型式的指令/操作(例如,一封裝乘法操作,一邏輯移位操作,等等)。於一些實施例中,該前綴可以被添加至各種不同型式的算術,邏輯,記憶體存取,或其他的指令及/或操作碼以便增加指令順序致動功能且使該等指令有雙重用途。於一些實施例,該致動指令格式同時也可選擇地包含一個或多個運算元764以指定或以另外不同的方式指示將被使用以致動一指令順序執行計數器之一數值。對於圖6之上述各種選擇同時也適於這實施例。於一些實施例中,例如依據特定的操作碼,該致動指令格式可選擇地包含零個或更多個的其他運算元768以實行與操作碼相關聯之功能及/或操作。
圖7B是一適當的執行指令格式770之一實施例方塊圖。於一些實施例中,執行指令格式可選擇地包含一前綴772以指示該指令是執行指令順序之一執行指令。該執行指令格式同時也包含一操作碼774。於一些實施例中,該操作碼可辨識除了執行指令順序之外將被進行之一指令及/或一操作,其是該前綴之功能。藉由範例,該操作碼可指示算術、邏輯、記憶體存取、或其他型式的指令
/操作。於一些實施例中,該前綴可以被添加至各種不同型式的算術、邏輯、記憶體存取、或其他的指令及/或操作碼以便增加指令順序致動功能且使該等指令有雙重用途。於一些實施例中,例如依據該特定的操作碼,該執行指令格式可選擇地包含零個或更多個的其他運算元776以實行與操作碼相關聯之功能及/或操作。
應了解,圖6與圖7A-B之格式只是一些適當格式的範例。其他的適當指令格式可選擇地增加另外的運算元、欄位、等等。此外,所例示欄位之順序/配置不是必需的,而是該等欄位可選擇地被重新配置、分成為多數個欄位、欄位可以被組合,等等。另外地,該等欄位不需要包含連續的位元序列,而是可包含非連續或分離的位元。
處理器核心可依不同的用途以不同的方式被實行,且於不同的處理器。例如,此等核心之實行例可包含:1)用於一般用途計算之一般用途依序核心;2)用於一般用途計算之一高性能一般用途亂序核心;3)主要用於圖形及/或科學(吞吐率)計算之一特定用途核心。不同處理器的實行例可包含:1)一CPU,其包含用於一般用途計算之一個或多個一般用途依序核心及/或用於一般用途計算之一個或多個一般用途亂序核心;及2)一協同處理器,其包含主要用於圖形及/或科學(吞吐率)之一個或多個特定用途核心。此等不同的處理器導致不同的電腦系統結構,其中可包含:1)一協同處理器,其與CPU於分離晶片上;2)一
協同處理器,其與CPU於相同封裝之分離晶粒上;3)一協同處理器,其與CPU於相同晶粒(於其中,此一協同處理器有時被稱為特定用途邏輯,例如一整合圖形及/或科學(吞吐率)邏輯,或特定用途核心);及4)一系統晶片,其可包含上述CPU(有時被稱為應用核心或應用處理器),上面被說明之協同處理器,及另外的功能於相同晶粒。範例的核心結構在下面被說明,隨後是範例的處理器與電腦結構之說明。
核心結構範例
依序與亂序核心方塊圖
圖8A是依據本發明實施例而例示一範例依序管線與一範例暫存器重新命名、亂序發出/執行管線之方塊圖。圖8B是依據本發明實施例而例示將被包含於一處理器之一依序結構核心實施範例與一範例暫存器重新命名、亂序發出/執行結構核心之方塊圖。圖8A-B之實線框塊例示依序管線與依序核心,而選擇性添加之虛線框塊例示暫存器重新命名、亂序發出/執行管線及核心。假設依序面向是亂序面向之一子集,該亂序面向將被說明。
圖8A中,一處理器管線800包含一擷取階段802、一長度解碼階段804、一解碼階段806、一分配階段808、一重新命名階段810、一排程(同時也習知如派遣或發出)階段812、一暫存器讀取/記憶體讀取階段814、一執行階段816、一寫回/記憶體寫入階段818、一例外處理階段822、及一提交階段824。
圖8B展示處理器之核心890,其包含被耦合至一執行引擎單元850之一前端單元830,且兩者皆被耦合至一記憶體單元870。核心890可以是一精簡指令集計算(RISC)核心、一複雜指令集計算(CISC)核心、一非常長指令字組(VLIW)核心、或一混合或不同的核心型式。再為另一選擇,核心890可以是一特定用途核心,例如,一網路或通訊核心、壓縮引擎、協同處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心、或其類似者。
前端單元830包含被耦合至一指令快取單元834之一分支預測單元832,其被耦合至一指令轉譯後備緩衝器(TLB)836,其被耦合至一指令擷取單元838,其被耦合至一解碼單元840。解碼單元840(或解碼器)可解碼指令,且產生一個或多個微操作、微-碼入口點、微指令、其他的指令、或其他的控制信號作為一輸出,其自原始指令被解碼、或以不同的方式反映、或導出。解碼單元840可以使用各種不同的機構被實行。適當機構的範例包含,但是不受限於,查詢表,硬體實行,可編程邏輯陣列(PLA),微碼唯讀記憶體(ROM),等等。於一實施例中,核心890包含一微碼ROM或儲存某些巨指令微碼的其他媒體(例如,於解碼單元840或在前端單元830之內)。解碼單元840被耦合至執行引擎單元850中之一重新命名/分配器單元852。
執行引擎單元850包含被耦合至一除役單元854與一組之一個或多個排程器單元856之重新命名/分配器單
元852。排程器單元856代表任何數目的不同排程器,包含保留站、中央指令視窗口、等等。排程器單元856被耦合至實體暫存器檔案單元858。各實體暫存器檔案單元858代表一個或多個實體暫存器建檔案,其不同的一者儲存一個或多個不同的資料型式,例如純量整數、純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點、狀態(例如,一指令指示器,其是將被執行下一指令之位址),等等。於一實施例中,該實體暫存器檔案單元858包括一向量暫存器單元、一寫入遮罩暫存器單元、及一純量暫存器單元。該暫存器單元可提供結構向量暫存器、向量遮罩暫存器、及一般用途暫存器。該實體暫存器檔案單元858被除役單元854重疊以例示於其中暫存器重新命名與亂序執行可以被實行之各種方式(例如,使用一重排序緩衝器與一除役暫存器檔案;使用一未來檔案、一歷史緩衝器、與一除役暫存器檔案;使用一暫存器映圖及一暫存器池;等等)。除役單元854與實體暫存器檔案單元858被耦合至執行聚集器860。執行聚集器860包含一組之一個或多個執行單元862與一組之一個或多個記憶體存取單元864。執行單元862可進行各種操作(例如,移位、加法、減法、乘法)且於各種型式資料(例如,純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點)。雖一些實施例可包含針對特定功能或功能組之一些執行單元,其他的實施例可僅包含進行所有的功能之一執行單元或多數個執行單元。排程器單元856、實體暫存器檔案單元858、及執行聚集器
860被展示可為多數,因為某些實施例對於某些型式資料/操作產生分離管線(例如,一純量整數管線、一純量浮動點/封裝整數/封裝浮動點/向量整數/向量浮動點管線、及/或一記憶體存取管線,其各具有它們獨有的排程器單元、實體暫存器檔案單元、及/或執行聚集,且於分離記憶體存取管線情況中,某些實施例被實行,其中僅這管線之執行聚集具有記憶體存取單元864)。同時也應該了解,分離管線被使用情況,一個或多個這些管線可以亂序發出/執行且其餘依序。
記憶體存取單元864被耦合至記憶體單元870,其中包含一資料TLB單元872,其被耦合至耦合於一位準2(L2)快取單元876之一資料快取單元874。於一範例實施例,記憶體存取單元864可包含一負載單元,一儲存位址單元,及一儲存資料單元,其各者被耦合至記憶體單元870中之資料TLB單元872。指令快取單元834進一步地被耦合至記憶體單元870中之一位準2(L2)快取單元876。L2快取單元876被耦合至一個或多個其他位準的快取且最終至一主要記憶體。
藉由範例,該範例的暫存器重新命名、亂序發出/執行核心結構可實行該管線800,如下所示:1)指令擷取838進行擷取與長度解碼階段802與804;2)解碼單元840進行解碼階段806;3)重新命名/分配器單元852進行分配階段808與重新命名階段810;4)排程器單元856進行排程階段812;5)實體暫存器檔案單元858與記憶體單元870進行
暫存器讀取/記憶體讀取階段814;執行聚集器860進行執行階段816;6)記憶體單元870與實體暫存器檔案單元858進行寫回/記憶體寫入階段818;7)各單元可以涉及例外處理階段822;及8)除役單元854與實體暫存器檔案單元858進行提交階段824。
核心890可支援包含此處被說明指令一個或多個指令集(例如,x86指令集(含添加較新版本之一些延伸);加州森尼維爾(Sunnyvale)之MIPS科技公司之MIPS指令集;加州森尼維爾ARM控股公司之ARM指令集(含選擇的另外延伸,例如NEON))。於一實施例中,核心890包含邏輯以支援一封裝資料指令集延伸(例如,AVX1,AVX2),因而允許被許多多媒體應用所使用之操作使用封裝資料被進行。
應該了解,核心可支援多線程(執行二組或更多組平行操作或線程),且可以多種方式進行,包含時間分片多線程,同時多線程(其中一單一實體核心提供對於實體核心是同時地多線程之各線程之一邏輯核心),或其組合(例如,時間分片擷取與解碼及隨後之同時的多線程,例如英特爾(Intel)超線程技術)。
雖然暫存器重新命名於亂序執行脈絡中被說明,應該了解,暫存器重新命名可被使用於一依序結構。雖然所例示處理器實施例同時也包含一分離之指令與資料快取單元834/874及一共用L2快取單元876,另外的實施例可包含供用於指令與資料之一單一內部快取,例如,一位
準1(L1)內部快取,或多數個位準內部快取。於一些實施例中,系統可包含一內部快取與核心及/或處理器外部之一外部快取之組合。另外地,所有的快取可以在核心及/或處理器之外部。
依序核心結構特定範例
圖9A-B例示一更特定範例的依序核心結構之方塊圖,該核心將是晶片中許多邏輯區塊之一(包含相同型式及/或不同型式的其他核心)。該等邏輯區塊取決於應用經由一高帶寬互連網路(例如,一環式網路)而通訊於一些固定功能邏輯、記憶體I/O介面、及其他必須的I/O邏輯。
圖9A是依據本發明實施例之一單一處理器核心之方塊圖,伴隨其之連接至晶粒上互連網路902與其之位準2(L2)快取904的本地子集。於一實施例中,一指令解碼器900支援具有封裝資料指令集延伸之x86指令集。一L1快取906允許快取記憶體之低等待時間存取進入純量與向量單元。雖於一實施例中(簡化設計),一純量單元908與一向量單元910使用分離暫存器組(分別地,純量暫存器912與向量暫存器914)且被轉移在它們之間的資料被寫入記憶體且接著自一位準1(L1)快取906讀回,本發明的另外實施例可使用一不同的方法(例如,使用一單一暫存器組或包含允許資料在二暫存器檔案之間被轉移而不必被寫入與讀回之一通訊路線)。
L2快取904的本地子集是一廣域L2快取之部份,其被分割成為分離的本地子集,每個處理器核心有一
個。各個處理器核心具有一直接存取路線至其獨有之L2快取904的本地子集。一處理器核心之資料讀取被儲存於其之L2快取子集904且可快速地被存取,與其他的處理器核心平行地存取它們獨有的L2快取本地子集。利用一處理器核心被寫入之資料被儲存於其獨有之L2快取子集904且自其他的子集被沖刷,如果必須的話。該環式網路確保共用資料之同調性。該環式網路是雙向作用而允許代理器,例如處理器核心,L2快取及其他的邏輯區塊在晶片之內彼此通訊。各環式資料-通道是每方向有1012-位元寬。
圖9B是依據本發明實施例之圖9A中處理器核心部份之擴展圖。圖9B包含L1快取904之L1資料快取906A部份,以及關於向量單元910與向量暫存器914之更多細節。明確地說,向量單元910是一16-位元寬向量處理單元(VPU)(參看16-位元寬ALU928),其執行一個或多個整數、單一-精確性浮動、及雙重-精確性浮動指令。該VPU支援以拌和單元920拌和暫存器輸入、數值轉換單元922A~B之數值轉換、及以複製單元924複製於記憶體輸入。寫入遮罩暫存器926允許預測所產生向量寫入。
具有整合記憶體控制器與圖形器之處理器
圖10是依據本發明實施例之處理器1000之方塊圖,處理器1000可具有多於一個核心,可具有一整合記憶體控制器,及可具有整合圖形器。圖10中之實線框塊例示一處理器1000,其具有單一核心1002A、一系統代理器1010、一組之一個或多個匯流排控制器單元1016,而選擇
添加之虛線框塊例示具有多重多數個核心1002A~N之不同的處理器1000,於系統代理器單元1010中之一組之一個或多個整合記憶體控制器單元1014,及特定用途邏輯1008。
因此,處理器1000的不同實行例可包含:1)一CPU,具有整合圖形及/或科學(吞吐率)邏輯(其可包含一個或多個核心)之特定用途邏輯1008,及一個或多個一般用途核心(例如,一般用途依序核心、一般用途亂序核心、二者之組合)之核心1002A~N;2)一協同處理器,具有主要用於圖形及/或科學(吞吐率)之大量特定用途核心之核心1002A~N;及3)一協同處理器,具有大量一般用途依序核心之核心1002A~N。因此,處理器1000可以是一般用途處理器、協同處理器或特殊用途處理器,例如,一網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途圖形處理單元)、一高產能許多整合核心(MIC)協同處理器(包含30個或更多個核心)、嵌入式處理器、或其類似者。該處理器可以被實行於一個或多個晶片上。處理器1000可以是部件及/或可以使用一些處理技術,例如,BiCMOS、CMOS、或NMOS之任何一者被實行於一個或多個基片上。
記憶體階層包含在該核心之內的一個或多個位準快取、一組或一個或多個共用快取單元1006、及被耦合至該組整合記憶體控制器單元1014之外部記憶體(未被展示於圖中)。該組共用快取單元1006可包含一個或多個中
位準快取,例如位準2(L2)、位準3(L3)、位準4(L4)、或其他位準的快取、最後位準快取(LLC)、及/或其組合。雖於一實施例中,一環式為基礎之互連單元1012互連整合圖形邏輯1008、該組共用快取單元1006、及系統代理器單元1010/整合記憶體控制器單元1014,另外的實施例可使用任何數量的習知技術於互連此等單元。於一實施例中,同調性被保持在一個或多個快取單元1006與核心1002-A-N之間。
於一些實施例中,一個或多個核心1002A-N能夠進行多線程。系統代理器1010包含協調及操作核心1002A-N的那些構件。系統代理器單元1010可包含例如一電力控制單元(PCU)與一顯示單元。該PCU可以是或包含供調整核心1002A-N與整合圖形邏輯1008之電力狀態所需要的邏輯與構件。該顯示單元用以驅動一個或多個外部連接顯示器。
就結構指令集而論,核心1002A-N可以是同質性或不同質性;亦即,二個或更多個核心1002A-N可能執行相同指令集,而其他的可能僅執行該指令集之一子集或不同的指令集。
電腦結構範例
圖11-14是範例電腦結構的方塊圖。其他習知技術的系統設計與組態,如膝上型電腦、桌上型、手持PC、個人數位助理、工程工作站、伺服器、網路設備,網路中樞、交換機、嵌入式處理器、數位信號處理器(DSP)、圖
形設備、視訊遊戲設備、機上盒、微控制器、手機、輕便的媒體播放機、手持設備、及各種其他的電子式設備,同時也是適當的。大體上,如此處揭示能夠包含一處理器及/或其他執行邏輯的多種系統或電子式設備通常是適當的。
接著參看至圖11,所展示是依據本發明一實施例之一系統1100的方塊圖。系統1100可包含一個或多個處理器1110、1115,其被耦合至一控制器中樞1120。於一實施例中,控制器中樞1120包含一圖形記憶體控制器中樞(GMCH)1190與一輸入/輸出中樞(IOH)1150(其可於分離晶片上);GMCH 1190包含記憶體與圖形控制器,其耦合記憶體1140與協同處理器1145;IOH 1150耦合輸入/輸出(I/O)設備1160至GMCH 1190。另外地,記憶體與圖形控制器之一個或兩者被整合在處理器之內(如此處說明),記憶體1140與協同處理器1145於一單一晶片中使用IOH 1150直接地耦合至處理器1110與控制器中樞1120。
另外的處理器1115之選擇性質以虛線表示於圖11。各個處理器1110、1115可包含此處說明之一個或多個處理核心且可是處理器1000之某一版本。
記憶體1140可以是,例如,動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。對於至少一個實施例,控制器中樞1120經由一多分支匯流排,例如一前側匯流排(FSB),點對點介面,例如快速通道互連(QPI),或相似連接1195而與處理器1110、1115通
訊。
於一實施例中,協同處理器1145是一特殊用途處理器,例如,一高產能MIC處理器、一網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或其類似者。於一實施例中,控制器中樞1120可包含一整合圖形加速裝置。
就包含結構、微結構、熱量、電力消耗特性及其類似者之度量頻譜而論,在實體資源1110、1115之間可有多種差異。
於一實施例中,處理器1110執行控制一般型式資料處理操作之指令。可以有協同處理器指令嵌入在該等指令之內。處理器1110確認這些協同處理器指令之型式為應該被附帶之協同處理器1145所執行。因此,處理器1110將這些協同處理器指令(或代表協同處理器指令之控制信號)發出於一協同處理器匯流排上或其他的互連上,而至協同處理器1145。協同處理器1145接受且執行所接收之協同處理器指令。
接著參看圖12,所展示是依據本發明一實施例之一第一更特定範例系統1200的方塊圖。如於圖12之展示,多處理器系統1200是一點對點互連系統,且包含經由一點對點互連1250耦合之一第一處理器1270與一第二處理器1280。處理器1270與1280之各者可以是處理器1000之一些版本。於本發明一實施例中,處理器1270與1280分別地是處理器1110與1115,而協同處理器1238是協同處理器
1145。於另一實施例,處理器1270與1280分別地是處理器1110與協同處理器1145。
處理器1270與1280被展示分別地包含整合記憶體控制器(IMC)單元1272與1282。處理器1270同時也包含點對點(P-P)介面1276與1278作為其之匯流排控制器單元之部份;相似地,第二處理器1280包含P-P介面1286與1288。處理器1270、1280可使用P-P介面電路1278,1288經由一點對點(P-P)介面1250而交換資訊。如於圖12之展示,IMC 1272與1282耦合處理器至分別的記憶體,亦即,記憶體1232與記憶體1234,其是局域地被附帶至該等分別處理器的主要記憶體之部份。
處理器1270、1280各自可使用點對點介面電路1276、1294、1286、1298經由個別的P-P介面1252、1254與一晶片組1290交換資訊。晶片組1290可經由一高性能介面1239與協同處理器1238選擇地交換資訊。於一實施例中,協同處理器1238是一特殊用途處理器,例如,一高產能MIC處理器、一網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,或其類似者。
一共用快取(未被展示於圖中)可以被包含於處理器內或在兩處理器之外面,仍經由P-P互連與處理器連接,以至於如果一處理器被置於低電力模式,則任一者或兩者處理器之本地快取資訊可以被儲存於共用快取。
晶片組1290可經由一介面1296被耦合至一第一匯流排1216。於一實施例中,第一匯流排1216可以是一週
邊構件互連(PCI)匯流排,或一匯流排,例如,一PCI快速匯流排或另一第三代I/O互連匯流排,雖然本發明之範疇是不受限制於此。
如於圖12之展示,各種I/O設備1214可被耦合至第一匯流排1216,及耦合第一匯流排1216至一第二匯流排1220之一匯流排橋1218。於一實施例中,一個或多個另外的處理器1215,例如,協同處理器、高產能MIC處理器、GPGPU、加速裝置(例如,圖形加速裝置或數位信號處理(DSP)單元)、場式可程控閘陣列、或任何其他的處理器,被耦合至第一匯流排1216。於一實施例中,第二匯流排1220可以是一低腳數(LPC)匯流排。可被耦合至一第二匯流排1220之各種設備包含,例如,於一實施例中,一鍵盤及/或滑鼠1222、通訊設備1227與一儲存器單元1228,例如一碟片驅動器或其可包含指令/數碼與資料1230的其他大量儲存設備。進一步地,一音訊I/O 1224可被耦合至該第二匯流排1220。注意到,其他的結構也是可能。例如,取代圖12之點對點結構,一系統可實行一多分支匯流排或其他的此結構。
接著參看至圖13,所展示是依據本發明一實施例之一第二更多特定範例系統1300的方塊圖。於圖12與13中相同元件具有相同參考號碼,且圖12中之某些論點已自圖13被省略以避免混淆圖13之其他論點。
圖13例示處理器1270,1280可分別地包含整合記憶體與I/O控制邏輯(“CL”)1272與1282。因此,CL
1272、1282包含整合記憶體控制器單元且包含I/O控制邏輯。圖13例示不僅記憶體1232、1234被耦合至CL 1272、1282,同時I/O設備1314也耦合至控制邏輯1272、1282。遺留I/O設備1315被耦合至晶片組1290。
接著參看圖14,所展示是依據本發明一實施例之一SoC 1400的方塊圖。於圖10中相同元件具有相同參考號碼。同時,虛線框塊是更高等SoC之選擇特點。於圖14,一互連單元1402被耦合至:一應用處理器1410,其包含一組之一個或多個核心202A-N與共用快取單元1006;一系統代理器單元1010;一匯流排控制器單元1016;一整合記憶體控制器單元1014;一組或一個或多個協同處理器1420,其可包含整合圖形邏輯、一影像處理器、一音訊處理器、及一視訊處理器;一靜態隨機存取記憶體(SRAM)單元1430;一直接記憶體存取(DMA)單元1432;及供耦合至一個或多個外部顯示器之一顯示單元1440。於一實施例中,協同處理器1420包含一特殊用途處理器,例如,一網路或通訊處理器、壓縮引擎、GPGPU、一高產能MIC處理器、嵌入式處理器、或其類似者。
此處被揭示之機構的實施例可以被實行於硬體、軟體、韌體,或此等實行例方法之組合。本發明實施例可以被實行為執行於可編程系統之電腦程式或程式碼,該系統包括至少一個處理器、一儲存系統(包含依電性與非依電性記憶體及/或儲存元件),至少一個輸入設備、與至少一個輸出設備。
程式碼,例如數碼1230例示於圖12,可以被應用於輸入指令以進行此處說明之功能且產生輸出資訊。該輸出資訊可以依習知的形式被應用至一個或多個輸出設備。為這申請之目的,一處理系統包含任何系統,其具有一處理器,例如,一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(ASIC)、或一微處理器。
該程式碼可被實行於高位準步驟或物件導向程式語言以與一處理系統通訊。該程式碼同時也被實行於組合或機器語言,如果需要的話。實際上,此處說明之機構不受限制於任何特定程式語言的範疇。於任何情況,該語言可以是編譯或釋譯語言。
至少一個實施例之一個或多個論點可以利用儲存於一機器可讀取媒體之代表性指令被實行,其代表在處理器之內之各種邏輯,其當利用一機器被讀取時,導致該機器製造邏輯以進行此處說明之技術。此等表示,習知為“IP核心”,可以被儲存於一實體、機器可讀取媒體且被供應至各顧客或製造設備以負載進入實際上形成邏輯或處理器之製造機器。
此機器可讀取儲存媒體可包含,而不限制於,利用一機器或設備被製造或形成之非暫態實體物件配置,包含儲存媒體,例如硬碟,任何其他型式的碟片,包含軟式磁碟片、光學碟片、小型碟片唯讀記憶體(CD-ROM)、小型可重寫碟片(CD-RW),與磁光學碟片、半導體設備,例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如
動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可清除且可編程唯讀記憶體(EPROM)、快閃記憶體、電氣地可清除可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁光學卡、或適於儲存電子式指令之任何其他型式的媒體。
因此,本發明實施例同時也包含具有指令或設計資料之非暫態實體機器可讀取媒體,例如,硬體描述語言(HDL),其中界定結構、電路、裝置、處理器及/或此處說明之系統特點。此等實施例同時也可被稱為程式產品。仿真(包含二進制轉譯,數碼漸變,等等)
於一些情況中,一指令轉換器可被使用以自一來源指令集至一目標指令集而轉換一指令。例如,該指令轉換器可轉化(例如,使用靜態二進制轉譯,動態二進制轉譯,包含動態編譯)、漸變、仿真、或其他者轉換一指令至將利用核心處理之一個或多個其他的指令。該指令轉換器可實行於軟體、硬體、韌體、或其組合。該指令轉換器可於處理器上、處理器外、或部份在處理器上且部份在處理器外。
圖15是依據本發明實施例對照使用一軟體指令轉換器以轉換一來源指令集之二進制指令至一目標指令集之二進制指令之方塊圖。該實施例中,該指令轉換器是一軟體指令轉換器,雖然另外地,該指令轉換器可實行於軟體、韌體、硬體、或其各種組合。圖15展示一高階語言1502之程式可以使用一x86編譯器1504被編譯以產生x86二
進制碼1506,其可以利用具有至少一個x86指令集核心之處理器1516自然地被執行。具有至少一個x86指令集核心之處理器1516代表任何處理器,其可進行如一具有至少一個x86指令集核心英特爾(Intel)處理器之大致相同功能,其匹配地執行或以不同方式處理(1)英特爾x86指令集核心之指令集的主要部份或(2)進行於具有至少一個x86指令集核心之英特爾處理器之應用或其他的軟體目的碼版本,以便達成如具有至少一個x86指令集核心之英特爾處理器的大致地相同結果。該x86編譯器1504代表一編譯器,其可操作以產生x86二進制碼1506(例如,目的碼),其可,具有或不具有另外的鏈接處理,而被執行於具有至少一個x86指令集核心之處理器1516。相似地,圖15展示高階語言1502之程式可以使用一替代的指令集編譯器1508被編譯以產生替代的指令集二進制碼1510,其可以自然地被一無至少一個x86指令集核心之處理器1514執行(例如,具有執行加州森尼維爾(Sunnyvale)之MIPS科技公司之MIPS指令集及/或執行加州森尼維爾ARM控股公司之ARM指令集之核心的一處理器)。指令轉換器1512被使用以轉換該x86二進制碼1506成為可以利用一無x86指令集核心之處理器1514自然地被執行之碼。這轉換碼很可能不相同於替代的指令集二進制碼1510,因為不易製作能夠如此之一指令轉換器;但是,該轉換碼將達成一般操作且由來自不同的指令集之指令所形成。因此,該指令轉換器1512代表軟體、韌體、硬體、或其組合,經由仿真、模擬或任何其他的處理,而允
許不具有一x86指令集處理器或核心之一處理器或其他的電子式設備執行x86二進制碼1506。
對於圖3、4、5A-C、6、與7A-B之任何一者被說明之構件、特點、與細節可同時選擇地被使用於圖1與2之任何一者。此外,對於此處任何一裝置被說明構件、特點、與細節可同時選擇地被使用此處說明之任何方法,其於實施例中可以利用該裝置被進行及/或具有該裝置。
於說明與申請專利範圍中,詞語“耦合”及/或“連接”以及它們的衍生詞,被使用。應該了解這些詞語不欲為彼此同義。反而,於特定實施例,“連接”可被使用以指示二組或更多元件彼此直接實體或電氣接觸。“耦合”可指示二組或更多元件直接實體或電氣接觸。但是,“耦合”同時也可指示二組或更多元件彼此不直接接觸,但是仍然彼此共同操作或互動。例如,一第一單元或構件可經由一個或多個其間的單元或構件耦合於一第二單元或構件。圖形中,箭號被使用以展示連接與耦合。
於說明與申請專利範圍中,詞語“邏輯”被使用。如此處使用,邏輯可包含硬體、韌體、軟體、或其各種組合。邏輯範例包含積體電路、特定應用積體電路、類比電路、數位電路、被規劃邏輯設備、包含指令之記憶體設備,等等。於一些實施例中,硬體邏輯可包含可能與其他電路構件一起的電晶體及/或邏輯閘。於一些實施例中,該邏輯可被實施如一構件、單元、或其他的模組。
於上面說明中,特定細節被提出以便提供實施
例之徹底了解。但是,其他的實施例可以被實施而不必這些特定細節。本發明之範疇是不是利用在上面提供之特定範例被決定,而是僅由下面申請專利範圍被決定。於其他實例中,習知的電路、結構、設備、與操作被展示為方塊圖形式或無細節以便避免混淆說明之了解。於一些情況中,其中多數個構件已被展示與說明,它們可配合成為一構件)。於一些情況中,其中一單一構件已被被展示與說明,它們可分離成為二個或更多個構件。
某些操作可以利用硬體構件被進行,或可被實施於機器可執行或電路可執行的指令,其可被使用以導致及/或形成以進行該等操作之指令被規劃之一機器、電路、或硬體構件(例如,一處理器、一處理器之部分、電路,等等)。該等操作同時也可選擇地利用硬體與軟體之組合被進行。一處理器、機器、電路、或硬體可包含特定或特別的電路或其他的邏輯(例如,可與韌體及/或軟體組合之硬體)可操作以執行及/或處理該指令且響應於該指令而儲存一結果。
一些實施例包含一製造物件(例如,一電腦程式產品),其包含一機器可讀取媒體。該媒體可包含一機構,其提供,例如儲存可利用該機器讀取之形式的資訊。該機器可讀取媒體可提供,或已儲存,一指令或指令序列,如果及/或當被一機器執行時可操作以導致該機器進行及/或導致該機器進行一個或多個此處揭示之操作、方法、或技術。該機器-可讀取媒體可提供,例如儲存,一
個或多個此處揭示之指令實施例。
[於一些實施例中,該機器可讀取媒體可包含一實體及/或非暫態機器可讀取儲存媒體。例如,該實體及/或非暫態機器可讀取儲存媒體可包含一軟式磁碟片、一光學儲存媒體、一光學碟片、一光學資料儲存設備、一CD-ROM、一磁碟片、一磁光學碟片、一唯讀記憶體(ROM)、一可編程ROM(PROM),一可清除且可編程唯讀記憶體(EPROM)、一電氣可清除且可編程唯讀記憶體(EEPROM)、一隨機存取記憶體(RAM)、一靜態RAM(SRAM)、一動態RAM(DRAM)、一快閃記憶體、一相位-改變記憶體、一相位改變資料儲存材料、一非依電性記憶體、一非依電性資料儲存設備、一非暫態記憶體、一非暫態資料儲存設備、或其類似者。該非暫態機器可讀取儲存媒體不包含暫態傳送信號。於另一實施例,該機器-可讀取媒體可包含一暫態機器-可讀取通訊媒體,例如,電氣、光學、聽覺或其他形式的傳輸信號,例如載波、紅外線信號、數位信號、或其類似者。
適當機器的範例包含,但是不受限於,一般用途處理器、特殊用途處理器、指令處理裝置、數位邏輯電路、積體電路、及其類似者。適當機器的再另一範例包含計算設備與其他的電子式設備,其包含例如處理器、指令處理裝置、數位邏輯電路、或積體電路。此等計算設備與電子式設備範例包含,但是不受限於,桌上型電腦、膝上型電腦電腦、筆記型電腦、平板電腦、小筆電、智慧型手
機、行動電話、伺服器、網路設備(例如,徑由器與交換機),移動式網際網路設備(MID)、媒體播放機、智慧電視、易網機、機上盒、與視訊遊戲控制器。
這說明中參考至“一實施例”、“一個或多個實施例”、“一些實施例”例如,指示一特定的特點可以被包含於本發明實施,但是不必定是需如此。相似地,說明中各種特點有時群聚於一單一實施例,圖形,或其說明,以便揭示流暢且協助各發明論點之了解。但是,這揭示方法不欲反映本發明比各申請專利範圍所引用需要有更多特點。反而,如下面的申請專利範圍反映,本發明論點在於比單一揭示實施例的所有特點需較少特點。因此,詳細的說明後面的申請專利範圍特地配合包含進入這詳細的說明,其各申請專利範圍獨立代表本發明之分別實施例。
實施範例
下面的範例關於進一步的實施例。範例中特點可被使用於一個或多個實施例中。
範例1是一種處理器,其包括一指令擷取單元以擷取一指令順序執行之指令對。該指令順序執行之指令對是該處理器指令集之一部份。該指令順序執行之指令對包含一致動指令與一執行指令。該致動指令於一程式順序中發生在該執行指令之前。該處理器同時也包含一指令順序執行模組,其響應於該指令順序執行之指令對,防止該程式順序中在該執行指令之後發生之指令,不會於該處理器之亂序部份中,先前於該致動指令被處理。
範例2包含範例1之處理器,並且選擇地於其中該指令順序執行模組包含一致動模組,其在該處理器之一管線的一第一階段,響應於該致動指令,而致動指令順序執行。該處理器同時也選擇地包含一耦合於該致動模組之阻止模組。當該指令順序執行被致動時,該阻止模組防止該執行指令以及發生在該執行指令之後的指令,不會前進越過該管線之一第二階段。
範例3包含範例2之處理器,並且選擇地也包含該處理器之一個或多個指令順序執行控制位元。該致動模組自一第一狀態至一第二狀態改變該等一個或多個指令順序執行控制位元以致動該指令順序執行。選擇地,當該等位元具有該第二狀態時,該阻止模組保持該執行指令於該第二階段,並且防止在該執行指令之後的該等指令不會前進繞過該執行指令。該處理器可選擇地也包含一停用模組,其改變該等一個或多個指令順序執行控制位元,以在該處理器之一管線的一第三階段,響應於該致動指令,而停用該指令順序執行。
範例4包含範例2之處理器,並且選擇地也包含耦合於該致動模組之一指令順序執行計數器。該致動模組致動該指令順序執行計數器以開始至一數值之計數而致動該指令順序執行。選擇地,該阻止模組可操作以保持執行指令於該第二階段,且可操作以防止在該執行指令之後的該等指令不會前進繞過該執行指令,直至該計數器計數至該數值為止。
範例5包含範例4之處理器,並且選擇地於其中其中該致動指令包括一運算元以指示被使用以致動該指令順序執行計數器之該數值。
範例6包含範例2之處理器,並且選擇地於其中該致動模組致動該管線之一依序前端中之指令順序執行。選擇地,該阻止模組防止該執行指令與在該執行指令之後發生之該等指令,不會前進越過該管線之該依序前端之該第二階段。該處理器可同時也選擇地包含一停用模組,其於該管線之依序後端中,響應於該致動指令,而停用該指令順序執行。
範例7包含範例6之處理器,並且選擇地於其中該致動模組在一擷取階段與一分配階段之一者致動該指令順序執行,該阻止模組防止該執行指令與在該執行指令之後發生之該等指令,不會前進越過該擷取與該分配階段之一者。該停用模組選擇地在該致動指令抵達一提交階段之後停用該指令順序執行。
範例8包含任何先前範例之處理器,並且選擇地於其中該致動指令之一前綴指示指令順序執行之致動,且其中除了指令順序執行致動之外,該致動指令同時也指示至少一個其他的操作。選擇地,該執行指令之一前綴指示指令順序執行,且其中除了指令順序執行之外,該執行指令同時也指示至少一個其他的操作。
範例9包含任何先前範例之處理器,並且選擇地於其中該處理器包括一精簡指令集計算(RISC)處理器。
範例10包含任何先前範例之處理器,並且選擇地於其中該處理器不可操作以使用微碼而實行該指令順序執行之指令對。
範例11是利用一處理器進行之方法。該方法包含接收一指令順序執行之指令對,該指令順序執行之指令對是該處理器指令集之一部份。該指令順序執行之指令對包含一致動指令與一執行指令。該致動指令於一程式順序中發生在該執行指令之前。響應於該指令順序執行之指令對,防止該程式順序中在該執行指令之後發生之指令,不會於該處理器之亂序部份中,先前於該致動指令被處理。
範例12包含範例11之方法,並且選擇地也包含在該處理器之一管線的一第一階段,響應於該致動指令,而致動指令順序執行。該方法也選擇地包含當該指令順序執行被致動時,藉由防止該執行指令以及發生在該執行指令之後的指令,不會前進越過該管線之一第二階段而執行該指令順序。
範例13包含範例12之方法,並且選擇地於其中致動包括自一第一狀態至一第二狀態改變該等一個或多個指令順序執行控制位元。選擇地,執行該指令順序包括保持該執行指令於該第二階段,並且防止在該執行指令之後的該等指令不會前進繞過該執行指令。該方法選擇地也包含在該管線的一第三階段,響應於該致動指令,而停用該指令順序執行,其中停用該指令順序執行包括改變該等一個或多個指令順序執行控制位元。
範例14包含範例12之方法,並且選擇地於其中致動包含致動一指令順序執行計數器以開始至一數值之計數。選擇地,執行該指令順序包括保持執行指令於該第二階段,且防止在該執行指令之後的該等指令不會前進繞過該執行指令,直至該指令順序執行計數器計數至該數值為止。
範例15包含範例14之方法,並且選擇地於其中接收該指令對包括接收一致動指令,該致動指令包括一運算元以指示被使用以致動該指令順序執行計數器之該數值。
範例16包含範例12之方法,並且選擇地於其中致動包含致動該管線之一依序前端中之指令順序執行。選擇地,執行該指令順序包括防止該執行指令與在該執行指令之後發生之該等指令,不會前進越過該管線之該依序前端之該第二階段。該方法可也選擇地包含於該管線之依序後端中,響應於該致動指令,而停用該指令順序執行。
範例17包含範例16之方法,並且選擇地於其中致動包含包括在一擷取階段與一分配階段之一者致動該指令順序執行。選擇地,防止該執行指令與在該執行指令之後發生之該等指令不會前進越過該第二階段,包括防止前進越過該擷取與該分配階段之一者。選擇地,停用可包含包括在該致動指令抵達一提交階段之後停用該指令順序執行。
範例18包含範例11之方法,並且選擇地也包含
基於一前綴決定該致動指令是致動該指令順序執行。除了指令順序執行致動之外,該致動指令同時也指示所選擇之至少一個其他的操作。該方法也可選擇地包含決定基於一前綴決定該執行指令是執行該指令順序。除了指令順序執行之外,該執行指令同時也指示至少一個其他的操作。
範例19包含任何先前範例之方法,並且選擇地於其中接收該指令順序執行之指令對包括在一精簡指令集計算(RISC)處理器接收該指令順序執行之指令對。
範例20包含任何先前範例之方法,並且選擇地於其中接收該指令順序執行之指令對包括在不可操作以使用微碼而實行該指令順序執行之指令對之一處理器接收該指令順序執行之指令對。
範例21包含一處理指令之系統。該系統包含一互連體,一耦合於該互連體之處理器,以及一耦合於該互連體之動態隨機存取記憶體(DRAM)。該DRAM儲存一指令順序執行之指令對,該指令順序執行之指令對是該處理器指令集之一部份。該指令順序執行之指令對包含一致動指令與一執行指令。該致動指令於一程式順序中發生在該執行指令之前。該指令順序執行之指令對,如果藉由該處理器被執行,可操作以導致該處理器進行之操作包括防止該程式順序中在該執行指令之後發生之該等指令,不會於該處理器之亂序部份中,先前於該致動指令被處理。
範例22包含範例21之系統,並且選擇地於其中該指令順序執行之指令對,如果藉由該處理器被執行,可
操作以導致該處理器進行之操作包括在該處理器之一管線的一第一階段,響應於該致動指令,而致動該指令順序執行。選擇地,當該指令順序執行被致動時,藉由防止該執行指令以及發生在該執行指令之後的指令,不會前進越過該管線之一第二階段而執行該指令順序。
範例23包含一種製造物件,其包括一非暫態機器-可讀取儲存媒體,該機器-可讀取儲存媒體儲存一指令順序執行之指令對,該指令順序執行之指令對是一處理器指令集之一部份。該指令順序執行之指令對包含一致動指令與一執行指令。該致動指令於一程式順序中發生在該執行指令之前。該指令順序執行之指令對,如果藉由該處理器被處理,可操作以導致該處理器進行之操作包括防止該程式順序中在該執行指令之後發生之該等指令,不會於該處理器之亂序部份中,先前於該致動指令被處理。
範例24包含範例23之製造物件,並且選擇地於其中該指令順序執行之指令對,如果藉由該處理器被執行,可操作以導致該處理器進行之操作包括在該處理器之一管線的一第一階段,響應於該致動指令,而致動該指令順序執行。選擇地,當該指令順序執行被致動時,藉由防止該執行指令以及發生在該執行指令之後的指令,不會前進越過該管線之一第二階段而執行該指令順序。
範例25是一種處理器,其包含構件用以接收一指令順序執行之指令對,該指令順序執行之指令對是一處理器指令集之一部份。該指令順序執行之指令對包含一致
動指令與一執行指令。該致動指令於一程式順序中發生在該執行指令之前。該處理器同時也包含構件,用以響應於該指令順序執行之指令對,防止該程式順序中在該執行指令之後發生之指令,不會於該處理器之亂序部份中,先前於該致動指令被處理。
範例26包含範例25之處理器,並且選擇地也包含構件,用以在該處理器之一管線的一第一階段,響應於該致動指令,而致動指令順序執行。
範例27包含儲存指令之一機器可讀取儲存媒體,如果該等指令由一機器被執行則導致該機器進行範例11-20之任何一者的方法。
範例28包含一處理器以進行範例11-20之任何一者的方法。
範例29包含一處理器,其含有構件以進行範例11-20之任何一者的方法。
範例30包含一處理器,其含有積體電路及/或邏輯及/或構件及/或單元,或任何組合,以進行範例11-20之任何一者的方法。
範例31包含一電腦系統,其含有一處理器,以及選擇地耦合於該處理器之一動態隨機存取記憶體(DRAM),該電腦系統進行範例11-20之任何一者的方法。
範例32包含一處理器,其進行大致地如此處說明之一個或多個操作或一方法。
範例33包含一處理器,其含有構件以進行大致
地如此處說明之一個或多個操作或一方法。
範例34包含一處理器以進行大致地如此處說明之一指令對。
範例35包含一處理器,其含有構件以進行大致地如此處說明之一指令對。
100‧‧‧處理器
102‧‧‧管線
104‧‧‧依序前端
105‧‧‧擷取單元
106‧‧‧亂序執行部份
108‧‧‧依序後端
110‧‧‧指令順序執行模組
112‧‧‧程式
114‧‧‧指令順序執行之指令對
116‧‧‧致動指令
118‧‧‧執行指令
120‧‧‧其他指令
122‧‧‧程式順序
Claims (21)
- 一種處理器,其包括:一指令擷取單元,其用以擷取一指令順序執行之指令對,該指令順序執行之指令對係要是該處理器的一指令集之部份,該指令順序執行之指令對用以包含一致動指令與一執行指令,該致動指令於一程式順序中發生在該執行指令之前;以及一指令順序執行電路,其用以響應於該指令順序執行之指令對,防止該程式順序中發生在該執行指令之後的指令,不會於該處理器之一亂序部份中,先前於該致動指令被處理。
- 如請求項1之處理器,其中該指令順序執行電路包括:一致動電路,其用以在該處理器之一管線的一第一級,響應於該致動指令,而致動指令順序執行;以及一與該致動電路耦合之阻止電路,當該指令順序執行被致動時,該阻止電路用以防止該執行指令及發生在該執行指令之後的指令,不會前進越過該管線之一第二級。
- 如請求項2之處理器:進一步包括該處理器之一個或多個指令順序執行控制位元;其中該致動電路用以將該等一個或多個指令順序執行控制位元自一第一狀態改變至一第二狀態以致動 該指令順序執行;其中當該等位元具有該第二狀態時,該阻止電路用以保持該執行指令於該第二級,且用以防止在該執行指令之後的該等指令不會前進繞過該執行指令;以及進一步包括一停用電路,其用以改變該等一個或多個指令順序執行控制位元,用以在該處理器之一管線的一第三級,響應於該致動指令,而停用該指令順序執行。
- 如請求項2之處理器:進一步包括與該致動電路耦合之一指令順序執行計數器;其中該致動電路用以致動該指令順序執行計數器以開始計數至一數值而致動該指令順序執行;以及其中該阻止電路用以保持該執行指令於該第二級,且用以防止在該執行指令之後的該等指令不會前進繞過該執行指令,直至該計數器計數至該數值為止。
- 如請求項4之處理器,其中該致動指令用以包括一運算元用以指示被使用以致動該指令順序執行計數器之該數值。
- 如請求項2之處理器:其中該致動電路用以致動在該管線之一依序前端中之該指令順序執行;其中該阻止電路用以防止該執行指令與發生在該執行指令之後的該等指令,不會前進越過該管線之該依序前端的該第二級;以及 進一步包括一停用電路,其用以於該管線之一依序後端中,響應於該致動指令,而停用該指令順序執行。
- 如請求項6之處理器:其中該致動電路用以在一擷取級與一分配級之一者致動該指令順序執行;其中該阻止電路用以防止該執行指令與發生在該執行指令之後的該等指令,不會前進越過該擷取與該分配級之一者;以及其中該停用電路用以在該致動指令抵達一提交級之後停用該指令順序執行。
- 如請求項1之處理器,其中包括下列中之至少一者:該致動指令之一前綴,其用以指示指令順序執行之致動,且其中除了指令順序執行之致動外,該致動指令係也用以指示至少一個其他的操作;以及該執行指令之一前綴,其用以指示指令順序執行,且其中除了指令順序執行外,該執行指令係也用以指示至少一個其他的操作。
- 如請求項1之處理器,其中該處理器包括一精簡指令集計算(RISC)處理器。
- 如請求項1之處理器,其中該處理器不可操作以使用微碼而實行該指令順序執行之指令對。
- 一種藉由處理器所進行之方法,其包括下列步驟:接收一指令順序執行之指令對,該指令順序執行之指令對是一處理器的一指令集之部份,該指令順序執行 之指令對包含一致動指令與一執行指令,該致動指令於一程式順序中發生在該執行指令之前;以及響應於該指令順序執行之指令對,防止該程式順序中發生在該執行指令之後的指令,不會於該處理器之一亂序部份中,先前於該致動指令被處理。
- 如請求項11之方法,進一步包括:在該處理器之一管線的一第一階段,響應於該致動指令,而致動該指令順序執行;以及當該指令順序執行被致動時,藉由防止該執行指令及發生在該執行指令之後的指令,不會前進越過該管線之一第二階段而執行該指令順序。
- 如請求項12之方法:其中致動包括將一個或多個指令順序執行控制位元自一第一狀態改變至一第二狀態;其中執行該指令順序包括保持該執行指令於該第二階段,且防止在該執行指令之後的該等指令不會前進繞過該執行指令;以及進一步包括在該管線的一第三階段,響應於該致動指令,而停用該指令順序執行,其中停用該指令順序執行包括改變該等一個或多個指令順序執行控制位元。
- 如請求項12之方法:其中致動包括致動一指令順序執行計數器以開始計數至一數值之;以及其中執行該指令順序包括保持該執行指令於該第 二階段,且防止在該執行指令之後的該等指令不會前進繞過該執行指令,直至該指令順序執行計數器計數至該數值為止。
- 如請求項14之方法,其中接收該指令對包括接收一致動指令,該致動指令包括一運算元以指示被使用以致動該指令順序執行計數器之該數值。
- 如請求項12之方法:其中致動包括致動在該管線之一依序前端中之該指令順序執行;其中執行該指令順序包括防止該執行指令與在該執行指令之後的該等指令,不會前進越過該管線之該依序前端的該第二階段;以及進一步包括於該管線之依序後端中,響應於該致動指令,而停用該指令順序執行。
- 如請求項16之方法:其中致動包括在一擷取階段與一分配階段之一者致動該指令順序執行;其中防止該執行指令與在該執行指令之後的該等指令不會前進越過該第二階段包括防止前進越過該擷取與該分配階段之一者;以及其中停用包括在該致動指令抵達一提交階段之後停用該指令順序執行。
- 如請求項11之方法,進一步包括下列中之至少一者:基於一前綴決定該致動指令係要致動該指令順序 執行,其中,除了該指令順序執行之該致動外,該致動指令也指示所選擇之至少一個其他的操作;以及基於一前綴決定該執行指令係要執行該指令順序,其中,除了該指令順序之該執行外,該執行指令也指示至少一個其他的操作。
- 如請求項11之方法,其中接收該指令順序執行之指令對包括在一精簡指令集計算(RISC)處理器接收該指令順序執行之指令對。
- 如請求項11之方法,其中接收該指令順序執行之指令對包括在不可操作以使用微碼而實行該指令順序執行之指令對之一處理器接收該指令順序執行之指令對。
- 一種用以處理指令之系統,其包括:一互連體;一與該互連體耦合之處理器;以及一與該互連體耦合之動態隨機存取記憶體(DRAM),該DRAM儲存一指令順序執行之指令對,該指令順序執行之指令對是該處理器的一指令集之部份,該指令順序執行之指令對包含一致動指令與一執行指令,該致動指令於一程式順序中發生在該執行指令之前,該指令順序執行之指令對如果藉由該處理器被執行,可操作以致使該處理器以進行包括下列之操作:防止該程式順序中發生在該執行指令之後的指令,不會於該處理器之一亂序部份中,先前於該致動指令被處理。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,544 US9323535B2 (en) | 2013-06-28 | 2013-06-28 | Instruction order enforcement pairs of instructions, processors, methods, and systems |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201510861A TW201510861A (zh) | 2015-03-16 |
TWI515653B true TWI515653B (zh) | 2016-01-01 |
Family
ID=52116846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103121587A TWI515653B (zh) | 2013-06-28 | 2014-06-23 | 指令順序執行之指令對、處理器、方法及系統 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9323535B2 (zh) |
EP (1) | EP3014424B1 (zh) |
KR (1) | KR101806279B1 (zh) |
CN (1) | CN105247479B (zh) |
BR (1) | BR112015029930B1 (zh) |
RU (1) | RU2630745C2 (zh) |
TW (1) | TWI515653B (zh) |
WO (1) | WO2014209627A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9323535B2 (en) | 2013-06-28 | 2016-04-26 | Intel Corporation | Instruction order enforcement pairs of instructions, processors, methods, and systems |
US10152452B2 (en) * | 2015-05-29 | 2018-12-11 | Intel Corporation | Source operand read suppression for graphics processors |
US10108417B2 (en) | 2015-08-14 | 2018-10-23 | Qualcomm Incorporated | Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor |
US9830150B2 (en) * | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
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 |
GB2563589B (en) * | 2017-06-16 | 2019-06-12 | Imagination Tech Ltd | Scheduling tasks |
IT202100002642A1 (it) | 2021-02-05 | 2022-08-05 | Sk Hynix Inc | Metodo implementato da un microcontrollore per gestire una istruzione nop e microcontrollore corrispondente |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
US6671795B1 (en) * | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US6880073B2 (en) | 2000-12-28 | 2005-04-12 | International Business Machines Corporation | Speculative execution of instructions and processes before completion of preceding barrier operations |
US7398376B2 (en) | 2001-03-23 | 2008-07-08 | International Business Machines Corporation | Instructions for ordering execution in pipelined processes |
US20050066151A1 (en) * | 2003-09-19 | 2005-03-24 | Sailesh Kottapalli | Method and apparatus for handling predicated instructions in an out-of-order processor |
US7426612B2 (en) | 2004-06-30 | 2008-09-16 | Intel Corporation | Methods and apparatus for enforcing instruction-cache coherence |
US20090164758A1 (en) * | 2007-12-20 | 2009-06-25 | Haertel Michael J | System and Method for Performing Locked Operations |
US9058179B2 (en) * | 2010-11-12 | 2015-06-16 | Arm Limited | Retirement serialisation of status register access operations |
CN102541511B (zh) | 2010-12-30 | 2015-07-08 | 世意法(北京)半导体研发有限责任公司 | 用于可乱序执行指令的处理器的流水线排空 |
US9323535B2 (en) | 2013-06-28 | 2016-04-26 | Intel Corporation | Instruction order enforcement pairs of instructions, processors, methods, and systems |
-
2013
- 2013-06-28 US US13/931,544 patent/US9323535B2/en active Active
-
2014
- 2014-06-12 WO PCT/US2014/042153 patent/WO2014209627A1/en active Application Filing
- 2014-06-12 EP EP14818771.9A patent/EP3014424B1/en active Active
- 2014-06-12 BR BR112015029930-0A patent/BR112015029930B1/pt not_active IP Right Cessation
- 2014-06-12 KR KR1020157031073A patent/KR101806279B1/ko active IP Right Grant
- 2014-06-12 CN CN201480030660.2A patent/CN105247479B/zh active Active
- 2014-06-12 RU RU2015151117A patent/RU2630745C2/ru not_active IP Right Cessation
- 2014-06-23 TW TW103121587A patent/TWI515653B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US9323535B2 (en) | 2016-04-26 |
KR101806279B1 (ko) | 2017-12-07 |
KR20150138306A (ko) | 2015-12-09 |
CN105247479B (zh) | 2018-01-09 |
RU2015151117A (ru) | 2017-06-01 |
EP3014424A1 (en) | 2016-05-04 |
EP3014424A4 (en) | 2017-03-01 |
WO2014209627A1 (en) | 2014-12-31 |
BR112015029930A2 (pt) | 2017-07-25 |
RU2630745C2 (ru) | 2017-09-12 |
EP3014424B1 (en) | 2019-11-27 |
TW201510861A (zh) | 2015-03-16 |
CN105247479A (zh) | 2016-01-13 |
BR112015029930B1 (pt) | 2022-01-11 |
US20150006851A1 (en) | 2015-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI725077B (zh) | 用於排序的處理器、系統和方法 | |
US10235175B2 (en) | Processors, methods, and systems to relax synchronization of accesses to shared memory | |
TWI761347B (zh) | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 | |
US9747108B2 (en) | User-level fork and join processors, methods, systems, and instructions | |
TWI544409B (zh) | 執行緒暫停處理器、方法、系統與指令 | |
US9495159B2 (en) | Two level re-order buffer | |
TWI567751B (zh) | 多暫存器記憶體存取指令、處理器、方法及系統 | |
TWI515653B (zh) | 指令順序執行之指令對、處理器、方法及系統 | |
US9696997B2 (en) | Real time instruction trace processors, methods, and systems | |
TWI742048B (zh) | 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統 | |
US9250901B2 (en) | Execution context swap between heterogeneous functional hardware units | |
US11210099B2 (en) | Persistent commit processors, methods, systems, and instructions | |
JP6306729B2 (ja) | ストアをソート及びリタイアする命令及びロジック | |
KR20140118924A (ko) | 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들 | |
WO2018005718A1 (en) | System and method for out-of-order clustered decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |