TW201643693A - 用以執行離心操作的指令及邏輯 - Google Patents
用以執行離心操作的指令及邏輯 Download PDFInfo
- Publication number
- TW201643693A TW201643693A TW104138151A TW104138151A TW201643693A TW 201643693 A TW201643693 A TW 201643693A TW 104138151 A TW104138151 A TW 104138151A TW 104138151 A TW104138151 A TW 104138151A TW 201643693 A TW201643693 A TW 201643693A
- Authority
- TW
- Taiwan
- Prior art keywords
- register
- instruction
- field
- bit
- unit
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims abstract description 128
- 238000012545 processing Methods 0.000 claims abstract description 56
- 238000005119 centrifugation Methods 0.000 claims description 35
- 238000004519 manufacturing process Methods 0.000 claims description 9
- 239000000463 material Substances 0.000 claims description 5
- 230000015654 memory Effects 0.000 description 149
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 77
- 238000006073 displacement reaction Methods 0.000 description 53
- 238000010586 diagram Methods 0.000 description 43
- 238000007667 floating Methods 0.000 description 37
- 238000006243 chemical reaction Methods 0.000 description 19
- 238000003860 storage Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 14
- 239000003795 chemical substances by application Substances 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000000605 extraction Methods 0.000 description 8
- 101001073211 Solanum lycopersicum Suberization-associated anionic peroxidase 2 Proteins 0.000 description 7
- 238000000034 method Methods 0.000 description 7
- 235000012431 wafers Nutrition 0.000 description 7
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 6
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000036961 partial effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 241000283707 Capra Species 0.000 description 3
- 241001494479 Pecora Species 0.000 description 3
- 101000579490 Solanum lycopersicum Suberization-associated anionic peroxidase 1 Proteins 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 239000012769 display material Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 238000004460 liquid liquid chromatography Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Abstract
一種處理裝置實作一組指令以使用向量或通用暫存器來執行一離心操作。在一實施例中,離心操作基於一控制遮罩將一來源暫存器的位元分開至一目的暫存器的相對區,其中具有1之對應控制遮罩值的每個來源暫存器位元被寫至一目的暫存器中的一個區,而具有零之對應控制遮罩值的來源暫存器位元被寫至目的暫存器中的一相對區。
Description
本揭露關於處理邏輯、微處理器、及關聯指令集架構的領域,其當被處理器或其他處理邏輯執行時執行邏輯、數學、或其他功能操作。
某些類型的應用常常需要在大量資料項上進行的相同操作(被稱為「資料平行性」)。單指令多資料(SIMD)係指一種使處理器在多個資料項上進行操作的指令類型。SIMD技術特別適用於能將在暫存器中的位元邏輯上分成一些固定尺寸之資料元件的處理器,其中之各者代表單獨值。例如,在256位元暫存器中的位元可能被指定為要在四個單獨的64位元緊縮資料元件(四字(Q)尺寸資料元件)、八個單獨的32位元緊縮資料元件(雙字(D)尺寸資料元件)、十六個單獨的16位元緊縮資料元件(字(W)尺寸資料元件)、或三十二個單獨的8位元資料元件(位元組(B)尺寸資料元件)上運算的來源運算元。此資料類型被稱為「緊縮」資料類型或「向量」
資料類型,且這種資料類型的運算元被稱為緊縮資料運算元或向量運算元。換言之,緊縮資料項或向量係指緊縮資料元件序列;且緊縮資料運算元或向量運算元係SIMD指令(也稱為緊縮資料指令或向量指令)的來源或目的運算元。
100‧‧‧處理器管線
102‧‧‧提取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧分配級
110‧‧‧更名級
112‧‧‧排程級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧寫回/記憶體寫入級
122‧‧‧例外處理級
124‧‧‧提交級
190‧‧‧處理器核心
130‧‧‧前端單元
150‧‧‧執行引擎單元
170‧‧‧記憶體單元
132‧‧‧分支預測單元
134‧‧‧指令快取單元
136‧‧‧指令轉譯旁視緩衝器
138‧‧‧指令提取單元
140‧‧‧解碼單元
152‧‧‧更名/分配器單元
154‧‧‧引退單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
174‧‧‧資料快取單元
172‧‧‧資料TLB單元
176‧‧‧第2級(L2)快取單元
190‧‧‧核心
200‧‧‧指令解碼器
202‧‧‧互連網路
204‧‧‧第2級(L2)快取的區域子集
206‧‧‧L1快取
208‧‧‧純量單元
210‧‧‧向量單元
212‧‧‧純量暫存器
214‧‧‧向量暫存器
206A‧‧‧L1資料快取
220‧‧‧攪和單元
222A-B‧‧‧數字轉換單元
224‧‧‧複製單元
226‧‧‧寫入遮罩暫存器
300‧‧‧處理器
302A-N‧‧‧核心
310‧‧‧系統代理器
316‧‧‧匯流排控制器單元
314‧‧‧整合記憶體控制器單元
308‧‧‧專用邏輯
306‧‧‧共享快取單元
312‧‧‧互連單元
400‧‧‧系統
410‧‧‧處理器
415‧‧‧處理器
420‧‧‧控制器中心
490‧‧‧圖形記憶體控制器中心
450‧‧‧輸入/輸出中心
440‧‧‧記憶體
445‧‧‧協處理器
460‧‧‧輸入/輸出裝置
495‧‧‧連線
500‧‧‧多處理器系統
550‧‧‧點對點互連
570‧‧‧第一處理器
580‧‧‧第二處理器
538‧‧‧協處理器
572‧‧‧整合記憶體控制器單元
582‧‧‧整合記憶體控制器單元
576‧‧‧P-P介面
578‧‧‧P-P介面
586‧‧‧P-P介面
588‧‧‧P-P介面
532‧‧‧記憶體
534‧‧‧記憶體
552‧‧‧P-P介面
554‧‧‧P-P介面
590‧‧‧晶片組
539‧‧‧高效能介面
596‧‧‧介面
516‧‧‧第一匯流排
514‧‧‧I/O裝置
518‧‧‧匯流排橋接器
520‧‧‧第二匯流排
515‧‧‧處理器
522‧‧‧鍵盤及/或滑鼠
527‧‧‧通訊裝置
530‧‧‧資料
528‧‧‧儲存單元
524‧‧‧音頻I/O
614‧‧‧I/O裝置
702‧‧‧互連單元
710‧‧‧應用處理器
720‧‧‧協處理器
730‧‧‧靜態隨機存取記憶體單元
732‧‧‧直接記憶體存取單元
802‧‧‧高階語言
804‧‧‧x86編譯器
806‧‧‧x86二進制碼
808‧‧‧另一指令集編譯器
810‧‧‧另一指令集二進制碼
812‧‧‧指令轉換器
814‧‧‧不具有x86指令集核心的處理器
816‧‧‧具有至少一x86指令集核心的處理器
902‧‧‧SRC2
904‧‧‧SRC1
906‧‧‧TMP1
926‧‧‧TMP2’
914‧‧‧SRC1’
916‧‧‧TMP2
936‧‧‧DEST
1000‧‧‧處理器核心
1001‧‧‧前端
1026‧‧‧指令預取器
1028‧‧‧指令解碼器
1029‧‧‧追蹤快取
1034‧‧‧uop佇列
1032‧‧‧微碼ROM
1003‧‧‧亂序執行引擎
1002‧‧‧快速排程器
1004‧‧‧慢/通用浮點數排程器
1006‧‧‧簡單浮點數排程器
1011‧‧‧執行方塊
1012‧‧‧執行單元
1014‧‧‧執行單元
1016‧‧‧執行單元
1018‧‧‧執行單元
1020‧‧‧執行單元
1022‧‧‧執行單元
1024‧‧‧執行單元
1008‧‧‧暫存器檔案
1010‧‧‧暫存器檔案
1041‧‧‧記憶體執行單元
1042‧‧‧記憶體排序緩衝器
1030‧‧‧SRAM單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取單元
1076‧‧‧L2快取單元
1100‧‧‧主記憶體
1155‧‧‧處理器
1131‧‧‧解碼邏輯
1130‧‧‧解碼單元
1140‧‧‧執行單元
1141‧‧‧執行邏輯
1105‧‧‧暫存器
1112‧‧‧第1級快取
1111‧‧‧第2級快取
1120‧‧‧指令快取
1121‧‧‧資料快取
1110‧‧‧指令提取單元
1116‧‧‧第3級快取
1150‧‧‧寫回/引退單元
1103‧‧‧下一指令指標
1104‧‧‧指令轉譯旁視緩衝器
1101‧‧‧分支目標緩衝器
1102‧‧‧分支預測單元
1202‧‧‧方塊
1204‧‧‧方塊
1206‧‧‧方塊
1208‧‧‧方塊
1300‧‧‧通用向量合適指令格式
1305‧‧‧無記憶體存取
1320‧‧‧記憶體存取
1340‧‧‧格式欄位
1342‧‧‧基本操作欄位
1344‧‧‧暫存器索引欄位
1346‧‧‧修改欄位
1350‧‧‧擴充操作欄位
1368‧‧‧類別欄位
1352‧‧‧alpha欄位
1354‧‧‧beta欄位
1360‧‧‧縮放欄位
1362A‧‧‧位移欄位
1362B‧‧‧位移因數欄位
1374‧‧‧全運算碼欄位
1354C‧‧‧資料處理欄位
1364‧‧‧資料元件寬度欄位
1370‧‧‧寫入遮罩欄位
1372‧‧‧立即欄位
1368‧‧‧類別欄位
1368A‧‧‧類別A
1368B‧‧‧類別B
1352A‧‧‧RS欄位
1352A.1‧‧‧捨入
1352A.2‧‧‧資料轉換
1354A‧‧‧捨入控制欄位
1356‧‧‧SAE欄位
1358‧‧‧捨入操作控制欄位
1354B‧‧‧資料轉換欄位
1352B‧‧‧逐出暗示欄位
1352B.1‧‧‧暫時
1352B.2‧‧‧非暫時
1357A‧‧‧RL欄位
1352C‧‧‧寫入遮罩控制欄位
1357A.1‧‧‧捨入
1357A.2‧‧‧向量長度
1359A‧‧‧捨入操作控制欄位
1359B‧‧‧向量長度欄位
1357B‧‧‧廣播欄位
1410‧‧‧REX’欄位
1400‧‧‧專用向量合適指令格式
1402‧‧‧EVEX前置
1405‧‧‧REX欄位
1415‧‧‧運算碼映射欄位
1420‧‧‧EVEX.vvvv欄位
1368‧‧‧類別欄位
1425‧‧‧前置編碼欄位
1430‧‧‧實數運算碼欄位
1440‧‧‧MOD R/M欄位
1442‧‧‧MOD欄位
1444‧‧‧Reg欄位
1446‧‧‧R/M欄位
1454‧‧‧xxx欄位
1456‧‧‧bbb欄位
1500‧‧‧暫存器架構
1510‧‧‧向量暫存器
1515‧‧‧寫入遮罩暫存器
1525‧‧‧通用暫存器
1550‧‧‧整數浮點數暫存器檔案
1545‧‧‧純量浮點堆疊暫存器檔案
藉由在附圖中的舉例,且非限定地說明實施例,其中:第1A圖係繪示根據實施例之示範有序提取、解碼、引退管線與示範暫存器更名、亂序發出/執行管線兩者的方塊圖;第1B圖係繪示根據實施例之將包括在處理器中的有序提取、解碼、引退核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖;第2A-B圖係更具體示範有序核心架構的方塊圖;第3圖係單一核心處理器與具有整合記憶體控制器和專用邏輯之多核心處理器的方塊圖;第4圖繪示根據實施例之系統的方塊圖;第5圖繪示根據實施例之第二系統的方塊圖;第6圖繪示根據實施例之第三系統的方塊圖;
第7圖繪示根據實施例之系統晶片(SoC)的方塊圖;第8圖繪示根據實施例之對照於使用軟體指令轉換器將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖;第9-EA圖係繪示根據實施例之用以執行離心操作之位元處理操作的方塊圖;第10圖係包括根據本文所揭露之實施例的處理器核心之方塊圖;第11圖係包括根據實施例之用以執行離心操作之邏輯的處理系統之方塊圖;第12圖係根據實施例之用於用以處理示範離心指令之邏輯的流程圖;第13A-B圖係繪示根據實施例之通用向量合適指令格式及其指令模板的方塊圖;第14A-D圖係繪示根據本發明之實施例之示範專用向量合適指令格式的方塊圖;及第15圖係根據實施例之純量和向量暫存器架構的方塊圖。
如具有包括x86、MMXTM、資料流SIMD擴充(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令之Intel® CoreTM處理器所採用之SIMD技術在應用效能方面
已有顯著的改善。已發行稱為先進向量擴充(AVX)(AVX1和AVX2)並使用向量擴充(VEX)編碼架構的另一組SIMD擴充(例如,參見2014年9月之Intel®64和IA-32架構軟體開發人員手冊;及參見2014年9月之Intel®架構指令集擴充編程參考)。說明架構擴充,其擴充Intel架構(IA)。然而,基本原理並不限於任何特定的ISA。
在一實施例中,處理裝置實作一組指令以使用向量或通用暫存器來執行離心操作。在離心操作(也稱為「山羊與綿羊」)中,基於1遮罩位元的位元被一側(例如,右側)分開,且基於0的位元被放至目的元件的另一側(例如,左側)。指令使用控制遮罩以決定目的暫存器的何側寫入來源位元。可能使用離心指令以實作為許多位元處理常式之元件的基本功能。
以下說明根據本文所述之實施例之示範處理器和電腦架構之說明所遵循的處理器核心架構。提出許多具體細節以提供下面說明之本發明之實施例的全面了解。然而,本領域之技藝者將了解無須這些具體細節之一些者就可實現實施例。在其他實例中,以方塊圖形式顯示熟知結構和裝置以避免模糊各種實施例的基本原理。
處理器核心可能以不同方式、針對不同目的、及在不同處理器中實作。例如,上述核心之實作可能包括:1)預期用於通用計算的通用有序核心;2)預期用於通用計算的高效能通用亂序核心;3)預期主要用於圖
形及/或科學(生產量)計算的專用核心。處理器可能使用單一處理器核心實作或會包括多個處理器核心。就架構指令集而言,處理器內的處理器核心可能是同質或異質的。
不同處理器的實作包括:1)中央處理器,包括用於通用計算的一或多個通用有序核心及/或打算用於通用計算的一或多個通用亂序核心;及2)協處理器,包括預期主要用於圖形及/或科學的一或多個專用核心(例如,許多積體核心處理器)。上述不同處理器導致不同電腦系統架構,包括:1)從中央系統處理器之在單獨晶片上的協處理器;2)在單獨晶粒但在與中央系統處理器相同封裝的協處理器;3)在與其他處理器核心相同晶粒上的協處理器(在這情況中,這類協處理器有時候被稱為專用邏輯,如整合圖形及/或科學(生產量)邏輯,或稱為專用核心);及4)晶片上的系統,其可能包括在與所述處理器(有時候稱為應用核心或應用處理器)、上述協處理器、及額外功能相同的晶粒上。
示範核心架構
有序和亂序核心方塊圖
第1A圖係繪示根據實施例之示範有序管線與示範暫存器更名亂序發出/執行管線的方塊圖。第1B圖係繪示根據實施例之將包括在處理器中的有序架構核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩
者的方塊圖。第1A-B圖中的實線框繪示有序管線和有序核心,而非必要附加的虛線框繪示暫存器更名、亂序發出/執行管線和核心。假定有序態樣係亂序態樣之子集,將說明亂序態樣。
在第1A圖中,處理器管線100包括提取級102、長度解碼級104、解碼級106、分配級108、更名級110、排程(也稱為調度或發出)級112、暫存器讀取/記憶體讀取級114、執行級116、寫回/記憶體寫入級118、例外處理級122、及提交級124。
第1B圖顯示處理器核心190,包括前端單元130,耦接至執行引擎單元150,且這兩者都耦接至記憶體單元170。核心190可能是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或任一核心類型。作為另一種選擇,核心190可能是專用核心,例如,網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或之類。
前端單元130包括分支預測單元132,耦接至指令快取單元134,其係耦接至指令轉譯旁視緩衝器(TLB)136,其係耦接至指令提取單元138,其係耦接至解碼單元140。解碼單元140(或解碼器)可能解碼指令,並產生作為輸出的一或多個微操作、微碼進入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或以其他方式反映原始指令、或從原始指令取得。解
碼單元140可能使用各種不同機制來實作。適當機制之實例包括,但不限於查找表、硬體實作、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心190包括微碼ROM或儲存用於某些巨集指令之微碼的其他媒體(例如,在解碼單元140中或以其他方式在前端單元130內)。解碼單元140係耦接至執行引擎單元150中的更名/分配器單元152。
執行引擎單元150包括更名/分配器單元152,耦接至引退單元154及一組一或多個排程器單元156。排程器單元156代表任何數量的不同排程器,包括保留站、中央指令視窗、等等。排程器單元156係耦接至實體暫存器檔案單元158。每個實體暫存器檔案單元158代表一或多個實體暫存器檔案,其之不同者儲存一或多個不同的資料類型,如純量整數、純量浮點數、緊縮整數、緊縮浮點數、向量整數、向量浮點數、狀態(例如,指令指標,其係將被執行之下一個指令的位址)、等等。在一實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可能提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。引退單元154重疊實體暫存器檔案單元158以繪示可能實作暫存器更名和亂序執行的各種方式(例如,使用重排序緩衝器和引退暫存器檔案;使用未來檔案、歷史緩衝器、和引退暫存器檔案;使用暫存器映射及暫存器池;等等)。引退單元154和實體暫存器檔案單元158係
耦接至執行叢集160。執行叢集160包括一組一或多個執行單元162和一組一或多個記憶體存取單元164。執行單元162可能對各種類型的資料(例如,純量浮點數、緊縮整數、緊縮浮點數、向量整數、向量浮點數)進行各種操作(例如,移位、加法、減法、乘法)。儘管一些實施例可能包括一些專用於特定功能或功能組的執行單元,但其他實施例可能包括只有一個執行單元或全部進行所有功能的多個執行單元。排程器單元156、實體暫存器檔案單元158、和執行叢集160被顯示為可能是複數的,因為某些實施例對某些類型的資料/操作建立獨立管線(例如,純量整數管線、純量浮點數/緊縮整數/緊縮浮點數/向量整數/向量浮點數管線、及/或各具有其自己之排程器單元的記憶體存取管線、實體暫存器檔案單元、及/或執行叢集-且在獨立的記憶體存取管線之情況下,實作了某些實施例是只有此管線的執行叢集具有記憶體存取單元164)。也應了解這裡使用了獨立管線,一或多個這些管線可能是亂序發出/執行且其餘的是有序的。
這組記憶體存取單元164係耦接至記憶體單元170,其包括耦接至資料快取單元174的資料TLB單元172,資料快取單元174耦接至第2級(L2)快取單元176。在一示範實施例中,記憶體存取單元164可能包括載入單元、儲存位址單元、及儲存資料單元,各耦接至記憶體單元170中的資料TLB單元172。指令快取單元134更耦接至記憶體單元170中的第2級(L2)快取單元
176。L2快取單元176係耦接至一或多個其他級的快取且最終耦接至主記憶體。
舉例而言,示範暫存器更名、亂序發出/執行核心架構可能如下實作管線100:1)指令提取138進行提取和長度解碼級102和104;2)解碼單元140進行解碼級106;3)更名/分配器單元152進行分配級108和更名級110;4)排程器單元156進行排程級112;5)實體暫存器檔案單元158和記憶體單元170進行暫存器讀取/記憶體讀取級114;執行叢集160進行執行級116;6)記憶體單元170和實體暫存器檔案單元158進行寫回/記憶體寫入級118;7)各種單元可能包含在例外處理級122中;及8)引退單元154和實體暫存器檔案單元158進行提交級124。
核心190可能支援包括本文所述之指令的一或多個指令集(例如,x86指令集(具有已加入較新版本的一些擴充);美國加州Sunnyvale的MIPS技術之MIPS指令集;美國加州Sunnyvale的ARM股份公司之ARM指令集(具有如NEON的可選額外的擴充))。在一實施例中,核心190包括支援緊縮資料指令集擴充(例如,AVX1、AVX2、等等),允許許多多媒體應用所使用之操作能使用緊縮資料來執行。
應了解核心可能支援多執行緒(執行兩個或更多平行組的操作或執行緒),且可以各種方式來實行,包括時間切割多執行緒、同步多執行緒(其中單一實體核
心提供邏輯核心給實體核心係同步多執行緒的每個執行緒)、或以上之組合(例如,時間切割提取和解碼及之後如Intel®超執行緒技術的同步多執行緒)。
儘管在亂序執行之內文中說明了暫存器更名,但應了解可能在有序架構中使用暫存器更名。儘管處理器之所示實施例也包括分開的指令和資料快取單元134/174及共享L2快取單元176,但其他實施例可能具有用於指令和資料兩者的單一內部快取,例如,第1級(L1)內部快取、或多級的內部快取。在一些實施例中,系統可能包括內部快取與在核心及/或處理器外部的外部快取之組合。另外,所有快取可能在核心及/或處理器外部。
具體示範有序核心架構
第2A-B圖繪示更具體之示範有序核心架構的方塊圖,其核心會是在晶片中的數個邏輯方塊之其一者(包括相同類型及/或不同類型的其他核心)。邏輯方塊依據應用透過高頻寬互連網路(例如,環形網路)來與一些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊。
第2A圖係根據實施例之單一處理器核心,與其連結至晶粒上互連網路202的連線及其第2級(L2)快取的區域子集204之方塊圖。在一實施例中,指令解碼器200支援具有緊縮資料指令級擴充的x86指令集。L1快取
206允許將快取記憶體低延遲地存取至純量和向量單元中。儘管在一實施例中(為了簡化設計),純量單元208和向量單元210使用單獨的暫存器組(分別是純量暫存器212和向量暫存器214),且傳輸於其間的資料被寫入至記憶體而接著從第1級(L1)快取206讀回,但其他實施例可能使用不同的方法(例如,使用單一暫存器組或包括允許資料在沒被寫入和讀回的情況下傳輸於這兩個暫存器檔案之間的通訊路徑)。
L2快取的區域子集204為部分的全域L2快取,其被分成單獨的區域子集,每個處理器核心一個。每個處理器核心具有直接存取路徑連接至自己的L2快取之區域子集204。處理器核心所讀取的資料係儲存在其L2快取子集204中並能被快速且與存取其自己區域L2快取子集之其他處理器核心並行地存取。處理器核心所寫入的資料係儲存在自己的L2快取子集204中,且若有需要的話,會從其他子集中清除。環形網路確保共享資料的一致性。環形網路係雙向的以使得如處理器核心、L2快取和其他邏輯方塊的代理器能在晶片內彼此通訊。每個環形資料路徑在每個方向上為1012位元寬。
第2B圖係根據實施例之第2A圖中的處理器核心之部分之分解圖。第2B圖包括L1快取204之L1資料快取206A部分,及更多關於向量單元210和向量暫存器214的細節。具體來說,向量單元210為16寬的向量處理單元(VPU)(參見16寬的ALU 228),其執行整
數、單精度浮點數、及雙精度浮點數指令之一或多個者。VPU以攪和單元220來支援攪和暫存器輸入、利用數字轉換單元222A-B來支援數字轉換、及利用複製單元224來支援複製記憶體輸入。寫入遮罩暫存器226允許預測產生之向量寫入。
具有整合記憶體控制器和專用邏輯的處理器
第3圖係根據實施例之可能具有超過一個核心,可能具有整合記憶體控制器,且可能具有整合圖形之處理器300的方塊圖。第3圖中的實線框繪示具有單一核心302A、系統代理器310,一組一或多個匯流排控制器單元316的處理器300,而非必要添加的虛線框繪示具有多個核心302A-N、在系統代理器單元310中的一組一或多個整合記憶體控制器單元314、及專用邏輯308的另一處理器300。
因此,處理器300之不同實作可能包括:1)具有為整合圖形及/或科學(產量)邏輯(其可能包括一或多個核心)之專用邏輯308、及為一或多個通用核心(例如,通用有序核心、通用亂序核心、這兩者之組合)之核心302A-N的CPU;2)具有為預期主要用於圖形及/或科學(產量)之大量專用核心之核心302A-N的協處理器;及3)具有為大量通用有序核心之核心302A-N的協處理器。於是,處理器300可能是通用處理器、協處理器或專用處理器,例如,網路或通訊處理器、壓縮引擎、圖
形處理器、GPGPU(通用圖形處理單元)、高產量多重整合核心(MIC)協處理器(包括30個或更多核心)、嵌入式處理器或之類。處理器可能在一或多個晶片上實作。處理器300可能是一或多個基板的一部分及/或可能使用如BiCMOS、CMOS、或NMOS的一些處理技術來實作在一或多個基板上。
記憶體階層包括核心內之一或多級的快取、一組或一或多個共享快取單元306、及耦接至這組整合記憶體控制器單元314的外部記憶體(未示出)。這組共享快取單元306可能包括如第2級(L2)、第3級(L3)、第4級(L4)、或其他級之快取的一或多個中級快取(LLC)、最後一級的快取(LLC)、及/或以上之組合。儘管在一實施例中,環形為基的互連單元312互連整合圖形邏輯308、這組共享快取單元306、及系統代理器單元310/整合記憶體控制器單元314,但其他實施例可能使用一些熟知的技術來互連上述單元。在一實施例中,在一或多個快取單元306與核心302A-N之間保持一致性。
在一些實施例中,一或多個核心302A-N能夠執行多執行緒。系統代理器310包括那些協調和操作核心302A-N的元件。例如,系統代理器單元310可能包括電力控制單元(PCU)及顯示單元。PCU可能是或包括調節核心302A-N及整合圖形邏輯308之電力狀態所需的邏輯和元件。顯示單元係用於驅動一或多個外部連接的顯示器。
就架構指令集而言,核心302A-N可能是同型或不同型的;亦即,核心302A-N之兩個或更多者也許能夠執行相同的指令集,而其他者也許僅能夠執行此指令集的子集或不同的指令集。
示範電腦架構
第4-7圖係示範電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及各種其他電子裝置之本領域中所知的其他系統設計和配置也是適當的。一般而言,能夠合併處理器及/或如本文所揭露之其他執行邏輯之種類繁多的系統或電子裝置通常都是適當的。
第4圖顯示依照實施例之系統400的方塊圖。系統400可能包括一或多個處理器410、415,其係耦接至控制器中心420。在一實施例中,控制器中心420包括圖形記憶體控制器中心(GMCH)490和輸入/輸出中心(IOH)450(其可能在獨立晶片上);GMCH 490包括耦接記憶體440和協處理器445的記憶體和圖形控制器;IOH 450將輸入/輸出(I/O)裝置460耦接至GMCH 490。另外,記憶體和圖形控制器之一或兩者係整合在(如本文所述之)處理器內,記憶體440和協處理器445
係直接耦接至處理器410、及在具有IOH 450之單晶片中的控制器中心420。
在第4圖中以虛線來表示額外處理器415的非必要性。每個處理器410、415可能包括一或多個本文所述之處理核心且可能是一些型式的處理器300。
記憶體440可能是例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或這兩者之組合。針對至少一實施例,控制器中心420經由如前端匯流排(FSB)之多點匯流排、如快速路徑互連(QPI)的點對點介面、或類似連線495來與處理器410、415通訊。
在一實施例中,協處理器445係專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或之類。在一實施例中,控制器中心420可能包括整合圖形加速器。
就規制標準而言,在實體資源410、415之間會有多種差異,包括架構、微型架構、熱、功率消耗特性、等等。
在一實施例中,處理器410執行控制一般類型之資料處理操作的指令。嵌入於指令內的可能是協處理器指令。處理器410辨識這些協處理器指令為應由附接協處理器445執行的類型。藉此,處理器410在協處理器匯流排或其他互連上對協處理器445發出這些協處理器指令(或代表協處理器指令的控制信號)。協處理器445接受和執行接收之協處理器指令。
第5圖顯示依照實施例之第一更具體示範系統500的方塊圖。如第5圖所示,多處理器系統500是點對點互連系統,且包括經由點對點互連550耦接的第一處理器570和第二處理器580。處理器570和580之各者可能是一些型式的處理器300。在本發明之一實施例中,處理器570和580分別是處理器410和415,而協處理器538是協處理器445。在另一實施例中,處理器570和580分別是處理器410和協處理器445。
顯示處理器570和580分別包括整合記憶體控制器(IMC)單元572和582。處理器570也包括作為其匯流排控制器單元點對點(P-P)介面576和578的部分;同樣地,第二處理器580包括P-P介面586和588。處理器570、580可能使用P-P介面電路578、588經由點對點(P-P)介面550來交換資訊。如第5圖所示,IMC 572和582將處理器耦接至各別記憶體(即記憶體532和記憶體534),其可能是區域附接於各別處理器之主記憶體的部分。
處理器570、580可能各使用點對點介面電路576、594、586、598經由個別P-P介面552、554來與晶片組590交換資訊。晶片組590可能可選地經由高效能介面539來與協處理器538交換資訊。在一實施例中,協處理器538係專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或之類。
共享快取(未示出)可能包括在任一處理器中或兩處理器之外,還經由P-P互連與處理器連接,使得若將處理器置於低功率模式中,則任一或兩處理器的區域快取資訊可能儲存於共享快取中。
晶片組590可能經由介面596來耦接至第一匯流排516。在一實施例中,第一匯流排516可能是周邊元件互連(PCI)匯流排、或如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明之範圍並不以此為限。
如第5圖所示,各種I/O裝置514可能與匯流排橋接器518一起耦接至第一匯流排516,其中匯流排橋接器518將第一匯流排516耦接至第二匯流排520。在一實施例中,一或多個額外的處理器515(如協處理器、高產量MIC處理器、GPGPU的加速器(例如,圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其他處理器)係耦接至第一匯流排516。在一實施例中,第二匯流排520可能是低接腳數(LPC)匯流排。在一實施例中,各種裝置可能耦接至第二匯流排520,包括例如鍵盤及/或滑鼠522、通訊裝置527及如磁碟機或可能包括指令/碼和資料530之其他大容量儲存裝置的儲存單元528。此外,音頻I/O 524可能耦接至第二匯流排520。請注意其他架構係可能的。例如,系統可能實作多點匯流排或其他這類架構,來取代第5圖之點對點架構。
第6圖顯示依照實施例之第二更具體示範系
統600的方塊圖。第5和6圖中的相同元件具有類似參考數字,且已從第6圖省略第5圖之某些態樣以避免模糊第6圖之其他態樣。
第6圖繪示處理器570、580可能分別包括整合記憶體和I/O控制邏輯(「CL」)572和582。因此,CL 572、582包括整合記憶體控制器單元且包括I/O控制邏輯。第6圖不只繪示記憶體532、534耦接至CL 572、582,而且還繪示I/O裝置614也耦接至控制邏輯572、582。傳統I/O裝置615係耦接至晶片組590。
第7圖顯示依照實施例之SoC 700的方塊圖。第3圖中的相似元件具有相同參考數字。而且,虛線框在更進階的SoC上是非必要的特徵。在第7圖中,互連單元702係耦接至:包括一組一或多個核心202A-N及共享快取單元306的應用處理器710;系統代理器單元310;匯流排控制器單元316;整合記憶體控制器單元314;可能包括整合圖形邏輯、影像處理器、音頻處理器、和視頻處理器的一組或一或多個協處理器720;靜態隨機存取記憶體(SRAM)單元730;直接記憶體存取(DMA)單元732、及用於耦接一或多個外部顯示器的顯示單元740。在一實施例中,協處理器720包括專用處理器,例如,網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器、或之類。
本文所揭露之機制的實施例可能在硬體、軟體、韌體、或上述實作方法之組合中實作。實施例被實作
成執行在包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置的可程式系統上的電腦程式或程式碼。
可能施用程式碼(如第5圖所示之碼530)來輸入指令以進行本文所述之功能並產生輸出資訊。可能以已知的方式來對一或多個輸出裝置施用輸出資訊。為了此應用之目的,處理系統包括任何具有處理器(例如,數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器)之系統。
程式碼可能以高階程序或物件導向編程語言來實作以與處理系統通訊。若需要的話,程式碼也可能以組合或機器語言來實作。事實上,本文所述之機制在範圍上並不受限於任何特定編程語言。在任何情況下,語言可能是經編譯或轉譯語言。
至少一實施例之一或多個態樣可能藉由儲存在機器可讀媒體上的代表指令來實作,其表現在處理器內的各種邏輯,當指令被機器讀取時會使機器製造邏輯來進行本文所述之技術。這樣的表現,稱為「IP核心」,可能儲存在有形的機器可讀媒體(「磁帶」)上並供應給各種顧客或製造廠來下載至實際產生邏輯或處理器的製造機器中。例如,IP核心,如ARM控股有限公司和中國科學院計算技術研究所(ICT)所開發的處理器可能授權或銷售給各類客戶或被授權人並實作在由這些客戶或被授權人生產的處理器中。
這類機器可讀媒體可能包括,但不限於由機器或裝置製造或形成之物件的非暫態有形佈置,包括如硬碟、任何型態之磁碟(包括軟碟、光碟、唯讀光碟機(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟機)、如唯讀記憶體(ROM)的半導體裝置、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或適用於儲存電子指令之任何其他型態之媒體的儲存媒體。
因此,實施例也包括非暫態、有形的機器可讀媒體,其包含指令或包含設計資料,如硬體描述語言(HDL),其定義本文所述之結構、電路、設備、處理器及/或系統特徵。上述實施例也可能係指程式產品。
模擬(包括二進制轉譯、碼模仿、等等)
在一些情況中,可能使用指令轉換器來將指令從來源指令集轉換成目標指令集。例如,指令轉換器可能轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、模仿、模擬、或以其他方式將指令轉換成一或多個由核心處理的其他指令。指令轉換器可能在軟體、硬體、韌體、或以上之組合中實作。指令轉換器可能在處理器上、在處理器之外、或部分在處理器上且部分在
處理器外。
第8圖係根據實施例之對照使用軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。雖然指令轉換器可能另外在軟體、硬體、韌體、或以上之各種組合中實作,但在所述之實施例中,指令轉換器係軟體指令轉換器。第8圖顯示高階語言802的程式可能使用x86編譯器804來編譯以產生x86二進制碼806,其本身可能被具有至少一x86指令集核心816的處理器執行。
具有至少一x86指令集核心816的處理器代表任何能進行實質上與具有至少一x86指令集核心的Intel®處理器相同之功能的處理器,藉由相容地執行或以其他方式處理(1)Intel® x86指令集核心之指令集的實質部分或(2)目標碼型式的應用程式或其他針對在具有至少一x86指令集核心的Intel®處理器上執行的軟體,以達到實質上與具有至少一x86指令集核心的Intel®處理器有相同的結果。x86編譯器804代表可操作以產生x86二進制碼806(例如,目標碼)的編譯器,其能連同或無須額外的連鎖處理地在具有至少一x86指令集核心816的處理器上執行。同樣地,第8圖顯示高階語言802的程式可能使用另一指令集編譯器808來編譯以產生原本就可被不具有至少一x86指令集核心814的處理器(例如,具有執行美國加州Sunnyvale的MIPS技術之MIPS指令集及/或執行美國加州Sunnyvale的ARM股份公司之ARM指令集
之核心的處理器)執行的另一指令集二進制碼810。
指令轉換器812係用於將x86二進制碼806轉換成本身可被不具有x86指令集核心814之處理器執行的碼。由於能夠轉換此的指令轉換器難以製造,因此經轉換碼不太可能與另一指令集二進制碼810相同;然而,經轉換碼將完成一般操作且由來自另一指令集的指令組成。因此,指令轉換器812代表軟體、韌體、硬體、或以上之組合,透過模仿、模擬或任何其他程序,允許處理器或其他不具有x86指令集處理器或核心的電子裝置執行x86二進制碼806。
離心指令
離心操作
本文所述之實施例實作逐位離心操作。離心操作(也稱為「綿羊和山羊」)基於控制遮罩中的位元將來自來源暫存器的位元分開至目的暫存器的一側或另一側。在一實施例中,關聯於1之控制遮罩位元的來源位元被分開至目的暫存器的右(例如,低次序)側,而關聯於零之控制遮罩位元的位元被分開至目的暫存器的左(例如,高次序)側。可能使用通用或向量暫存器作為來源或目的暫存器。在一實施例中,支援包括32位元或64位元暫存器的通用暫存器。在一實施例中,支援包括128位元、256位元、或512位元的向量暫存器,其中向量暫存器有支援緊縮位元組、字組、雙字組、或四字組資料元
件。
使用來自現有指令集之指令來進行離心需要一序列多個指令。本文所述之實施例實作在單一指令中的離心功能。在一實施例中,如本文所述的離心指令包括指示遮罩值的第一來源運算元。具有1之值的遮罩的每個位元指示用於目的暫存器的對應位元會被分開至來源暫存器的「右」側。具有零之值的遮罩位元會被分開至來源暫存器的「左」側。在一實施例中,來源暫存器係由第二來源運算元指示。
下面表格1中顯示用於離心指令的示範來源和目的暫存器值。
在上面表格1中,SRC1運算元指示儲存位元遮罩值的遮罩暫存器。SRC2運算元指示儲存用於離心操作之來源值的暫存器。顯示用以說明SRC2的字母不用以指示特定值,但用以指示位元欄位內的特定位元位置。DEST運算元指示用以儲存離心操作之輸出的目的暫存器。儘管在表格1中顯示示範16位元,但在各種實施例中,指令接受32位元或64位元通用暫存器運算元。在一實施例中,實作向量指令以遵照具有緊縮位元組、字組、雙字組、或四字組資料元件的向量暫存器。在一實施例
中,暫存器包括128位元、256位元、和512位元暫存器。
為了顯示示範指令的操作,下方表格2顯示多個Inter架構(IA)指令的示範序列,其可能用以對暫存器組執行離心操作。示範指令包括人口計數指令、平行取出指令、及移位指令。在一實施例中,向量指令可能也用以在平行跨多個向量資料元件中執行。
在上面表格2中所示之示範離心邏輯中,「popcnt」符號指示人口計數指令。人口計數指令計算輸入位元欄位的漢明權重(例如,從相等長度之零位元欄位的位元欄位之漢明距離)。在位元遮罩上使用此指令以判定被設定之位元的數量。在一實施例中,在位元欄位中被設定的位元數量判定暫存器之「右」和「左」側之間的分割者。「pext」符號指示平行取出指令。在一實施例中,平行取出指令從來源暫存器中的任意位置取出位元的單一欄位並右對齊位元至目的暫存器中。「shlx」符號指示邏輯左移位指令,其右移位來源位元欄位特定數量的位元位置。
所示之示範「非」和「或」指令各執行指定
指令的邏輯操作。「非」指令計算輸入中之值的邏輯補數(例如,每個一位元變成零位元)。「或」指令計算由來源運算元所指示之暫存器中的邏輯或值。使用表格2之示範邏輯在第9A-E圖中繪示用以從SRC1和SRC2值計算表格1之DEST值的邏輯操作。
第9A-E圖係繪示根據實施例之用以執行離心操作之位元處理操作的方塊圖。如第9A圖所示,平行取出操作(也顯示在表格2的列(2))基於SRC1 904中提供的控制遮罩位元來取出來自SRC2 902的位元至暫時暫存器(例如,TMP1 906)。
如第9B圖所示,非操作(也顯示在表格2的列(3))反向來自SRC1 904的位元以產生反向控制遮罩(例如,SRC1’914)。
如第9C圖所示,第二平行取出操作(也顯示在表格2的列(4))基於SRC1’914中提供的位元來取出來自SRC2 902的位元至第二暫時暫存器(例如,TMP2 916)。
如第9D圖所示,左移位操作(也顯示在表格2的列(5))移位來自TMP2 916的位元以產生已移位暫時暫存器(例如,TMP2’926)。用以移位TMP2 916之位置數量係藉由在表格2的列(1)所示之人口計數指令來判定。
如第9E圖所示,「或」操作(也顯示在表格2的列(6))結合來自TMP2’926和TMP1 906的位元至
目的暫存器(例如,DEST 936)。根據實施例,目的暫存器包含離心操作的結果。
示範處理器實作
第10圖係包括用以依照本文所述之實施例執行操作的邏輯之處理器核心1000之方塊圖。在一實施例中,有序前端1001係處理器核心1000的一部分,其提取指令以被執行並準備它們之後在處理器管線中被使用。在一實施例中,前端1001類似於第1圖的前端單元130,額外包括具有指令預取器1026的元件以從記憶體先提取指令。已提取指令可能被饋送至指令解碼器1028以解碼或解譯指令。
在一實施例中,指令解碼器1028將已接收指令解碼成機器能執行的一或多個操作,稱為「微指令」或「微操作」(也稱為微op或uop)。在其他實施例中,依照一實施例,解碼器解析指令成運算碼和對應資料以及被微架構用以執行操作的控制欄位。在一實施例中,追蹤快取1029採用已解碼uop並將它們組合成程式次序序列或在uop佇列1034中追蹤用於執行。
在一實施例中,處理器核心1000實作複雜指令集。當追蹤快取1029遇到複雜指令時,微碼ROM 1032提供完成操作所需的uop。一些指令被轉成單一微op,而其他需要數個微op以完成全操作。在一實施例中,指令會被解碼成少量微op用於在指令解碼器1028處理。在另
一實施例中,指令會儲存在微碼ROM 1032內,應是被需要完成操作的多個微op。例如,在一實施例中,若需要四個微op來完成指令,則解碼器1028存取微碼ROM 1032以執行指令。
追蹤快取1029係指進入點可編程邏輯陣列(PLA)以判定正確微指令指標用於從微碼ROM 1032讀取微碼序列以依照一實施例完成一或多個指令。在微碼ROM 1032完成用於指令的序列微op之後,機器的前端1001從追蹤快取1029恢復提取微op。在一實施例中,處理器核心1000包括亂序執行引擎1003,其中指令被準備用於執行。亂序執行邏輯具有若干匯流排以當指令繼續通過指令管線時重排指令流以最佳化效能。針對配置用於微碼支援的實施例,分配器邏輯分配機器緩衝器和在執行期間每個uop使用的資源。此外,暫存器更名邏輯更名邏輯暫存器至暫存器檔案中之實體暫存器中的實體暫存器。
在一實施例中,在指令排程器:記憶體排程器、快速排程器1002、慢/通用浮點數排程器1004、及簡單浮點數排程器1006前面,分配器分配項目用於兩個佇列(一個用於記憶體操作且一個用於非記憶體操作)之其一者中的每個uop。uop排程器1002、1004、1006判定何時uop基於其依賴輸入暫存器運算元來源之讀取和uop需要完成其操作之執行資源的可用性而準備執行。一實施例的快速排程器1002會在主時脈週期的每一半上排程,而其他排程器會在每個主處理器時脈週期只排程一次。排程
器仲裁調度埠以排程uop用於執行。
暫存器檔案1008、1010位在排程器1002、1004、1006和執行方塊1011的執行單元1012、1014、1016、1018、1020、1022、1024之間。在一實施例中,有獨立的暫存器檔案1008、1010,分別用於整數和浮點數運算。在一實施例中,每個暫存器檔案1008、1010包括旁路網路,其繞過或轉送尚未寫進暫存器檔案中之已完成結果至新的依賴uop。整數暫存器檔案1008和浮點數暫存器檔案1010也能夠與另一個通訊資料。針對一實施例,整數暫存器檔案1008被分成兩個獨立暫存器檔案,一個暫存器檔案用於資料的低次序32位元且第二暫存器檔案用於資料的高次序32位元。在一實施例中,浮點數暫存器檔案1010具有128位元寬項目。
執行方塊1011包含執行單元1012、1014、1016、1018、1020、1022、1024用以執行指令。暫存器檔案1008、1010儲存微指令需要執行的整數和浮點數資料運算元值。一實施例的處理器核心1000包含若干執行單元:位址產生單元(AGU)1012、AGU 1014、快速ALU 1016、快速ALU 1018、慢ALU 1020、浮點數ALU 1022、浮點數移動單元1024。針對一實施例,浮點數執行方塊1022、1024執行浮點數、MMX、SIMD、及SSE、或其他操作。一實施例的浮點數ALU 1022包括藉由64位元浮點數除法器以執行除法、平方根、及餘數微op的64位元。
在一實施例中,涉及浮點數值的指令可能以浮點數硬體來處理。ALU操作前往高速ALU執行單元1016、1018。一實施例的快速ALU 1016、1018會以半個時脈週期的有效延遲來執行快速操作。針對一實施例,最複雜整數操作前往慢ALU 1020,由於慢ALU 1020包括整數執行硬體用於長延遲類型的操作,如乘法、移位、旗標邏輯、及分支處理。記憶體載入/儲存操作係由AGU 1012、1014執行。針對一實施例,在對64位元資料運算元執行整數操作之上下文中說明整數ALU 1016、1018、1020。在替代實施例中,會實作ALU 1016、1018、1020以支援包括16、32、128、256、等等的各種資料位元。同樣地,會實作浮點數單元1022、1024以支援具有各種寬度之位元的運算元之範圍。針對一實施例,浮點數單元1022、1024會結合SIMD和多媒體指令在128位元寬緊縮資料運算元上操作。
在一實施例中,uop排程器1002、1004、1006在完成執行父載入之前調度依賴操作。由於uop被推測地排程和執行,處理器核心1000也包括用以處理記憶體失誤的邏輯。若資料載入在資料快取中失誤,則會有以暫時不正確資料在已離開排程器之管線中飛行的依賴操作。重播機制追蹤並再執行使用不正確資料的指令。在一實施例中,只允許完成需要被重播的依賴操作和獨立操作。
在一實施例中,包括記憶體執行單元
(MEU)1041。MEU 1041包括記憶體排序緩衝器(MOB)1042、SRAM單元1030、資料TLB單元1072、資料快取單元1074、及L2快取單元1076。
處理器核心1000可能藉由共享或劃分各種元件來配置用於同時多線程操作。在處理器上操作的任何線程可能存取共享元件。例如,在共享緩衝器或共享快取中的空間會配置給線程操作而不考慮請求線程。在一實施例中,每個線程配置劃分的元件。具體來說,根據實施例改變那些元件被共享且那些元件被劃分。在一實施例中,如執行單元(例如,執行方塊1011)和資料快取(例如,資料TLB 1072、資料快取單元1074)的處理器執行資源係共享資源。在一實施例中,包括L2快取單元1076和其他更高級快取單元(例如,L3快取、L4快取)的多級快取被共享於所有執行線程之間。在每線程基礎上分配並分派或配置其它處理器資源,其中已劃分資源的特定部分專用於特定線程。示範已劃分資源包括MOB 1042、暫存器別名表(RAT)和亂序引擎1003的重排序緩衝器(ROB)(例如,在第1B圖中的更名/分配器單元152和引退單元154內)、及關聯於前端1001之指令解碼器1028的一或多個指令解碼佇列。在一實施例中,也劃分指令TLB(例如,第1B圖之指令TLB單元136)和分支預測單元(例如,第1B圖之分支預測單元132)。
進階組態與電源介面(ACPI)說明書描述電源管理策略,其包括可能被處理器及/或晶片組支援的不
同「C狀態」。針對此策略,C0被定義為執行時間狀態,其中處理器以高電壓和高頻率操作。C1被定義為自動停止狀態,其中核心時脈在內部被停止。C2被定義為停止時脈狀態,其中核心時脈在外部被停止。C3被定義為深睡狀態,其中所有處理器時脈被關閉,及C4被定義為更深睡狀態,其中所有處理器時脈被停止且處理器電壓被降至較低資料保留點。各種額外更深睡電源狀態,C5和C6也實作在相同處理器中。在C6狀態期間,停止所有線程,線程狀態被儲存在於C6狀態期間保持供電的C6SRAM中,且至處理器核心的電壓被降至零。
第11圖係包括根據實施例之用以執行離心操作之邏輯的處理系統之方塊圖。示範處理系統包括處理器1155,耦接至主記憶體1100。處理器1155包括具有解碼邏輯1131的解碼單元1130用於解碼離心指令。此外,處理器執行引擎單元1140包括額外執行邏輯1141用於執行離心指令。當執行單元1140執行指令流時,暫存器1105提供暫存器儲存器用於運算元、控制資料和其他類型的資料。
為了簡化在第11圖中繪示單一處理器核心(「核心0」)的細節。然而,將了解到第11圖所示的每個核心可能具有與核心0相同的邏輯組。如所示,每個核心可能也包括專用第1級(L1)快取1112和第2級(L2)快取1111用於根據特定快取管理策略來快取指令和資料。L1快取1112包括單獨指令快取1120用於儲存
指令和單獨資料快取1121用於儲存資料。儲存在各種處理器快取內的指令和資料以快取線的粒度管理,其可能是固定尺寸(例如,長度為64、128、512位元組)。此示範實施例的每個核心具有指令提取單元1110用於從主記憶體1100及/或共享第3級(L3)快取1116提取指令;解碼單元1130用於解碼指令;執行單元1140用於執行指令;及寫回/引退單元1150用於引退指令和寫回結果。
指令提取單元1110包括各種熟知元件,包括下一指令指標1103用於儲存待從記憶體1100(或其中一個快取)提取之下一指令的位址;指令轉譯旁視緩衝器(ITLB)1104用於儲存最近使用之虛擬至實體指令的映射以增進位址轉譯的速度;分支預測單元1102用於推測地預測指令分支位址;及分支目標緩衝器(BTB)1101用於儲存分支位址和目標位址。一但提取,指令接著被流至指令管線的其餘級,包括解碼單元1130、執行單元1140、及寫回/引退單元1150。
第12圖係根據實施例之用於用以處理示範離心指令之邏輯的流程圖。在方塊1202中,指令管線開始於提取指令以執行離心操作。在一些實施例中,指令接受第一輸入運算元、第二輸入運算元、及目的運算元。在上述實施例中,輸入運算元包括控制遮罩和來源暫存器。來源暫存器可能是儲存緊縮位元組、字組、雙字組、或四字組值的通用暫存器或向量暫存器。控制遮罩可能設置在通用暫存器中,用以控制分開來自來源通用暫存器之位元或
用於來源向量暫存器之每個元件。在一實施例中,控制遮罩可能經由向量暫存器來提供以控制來自來源向量暫存器的位元分開。在一實施例中,目的運算元提供目的暫存器,其可能是配置以儲存緊縮位元組、字組、雙字組、或四字組值的通用暫存器或向量暫存器。
在方塊1204中,解碼單元將指令解碼成已解碼指令。在一實施例中,已解碼指令為單一操作。在一實施例中,已解碼指令包括一或多個邏輯微操作以執行指令的每個子元件。微操作會是固線式或微碼操作會使處理器之元件(例如執行單元)執行各種操作以實作指令。
在方塊1206中,處理器的執行單元執行已解碼指令以執行離心(例如,綿羊和山羊)操作,其基於控制遮罩來從來源暫存器分開位元至目的暫存器或向量暫存器之資料元件的相對側。第9A-E圖中顯示用以執行離心操作的示範邏輯操作,儘管所執行之具體操作可能根據實施例改變,且可能使用替代或額外邏輯以執行離心操作。在執行期間,處理器的一或多個執行單元基於控制遮罩來從來源暫存器或來源暫存器向量元件讀取來源資料之位元,並將位元寫至目的暫存器的一側或相對側。在一實施例中,1的控制遮罩位元指示值欲被寫至暫存器之「右」側,而零的控制遮罩位元指示值欲被寫至暫存器之「左」側。根據實施例,暫存器的「右」和「左」側可能分別指示暫存器的低次序和高次序位元。如本文所述,高和低次序位元被定義為最高有效和最低有效位元,獨立於用以當
這些位元組儲存在電腦記憶體中時解譯組成資料字之位元組的慣例。然而,由於位元組次序可能根據實施例和配置改變,將了解關聯於各別暫存器側的位元組次序和字組位址/偏移在不違反各種實施例之範疇下可能不同。
在方塊1208中,處理器將已執行指令的結果寫至處理器暫存器檔案。處理器暫存器檔案包括一或多個實體暫存器檔案,其儲存包括純量整數或緊縮整數資料類型的各種資料類型。在一實施例中,暫存器檔案包括藉由指令目的運算元指示為目的暫存器的通用或向量暫存器。
示範指令格式
本文所述的指令之實施例可能以不同格式來具體化。另外,以下詳述示範系統、架構、及管線。指令之實施例可能在這類系統、架構、及管線上執行,但不以那些詳述細節為限。
向量合適指令格式是適用於向量指令的指令格式(例如,有一些向量運算專用的欄位)。儘管所述之實施例中係透過向量合適指令格式來支援向量和純量運算,但其他實施例只使用向量合適指令格式來執行向量運算。
第13A-13B圖係繪示根據實施例之通用向量合適指令格式及其指令模板的方塊圖。第13A圖係繪示根據實施例之通用向量合適指令格式及其類別A指令模板的方塊圖;而第13B圖係繪示根據實施例之通用向量合適指
令格式及其類別B指令模板的方塊圖。具體來說,用於通用向量合適指令格式1300的模板係定義為類別A與類別B指令模板,這兩個都包括無記憶體存取1305指令模板及記憶體存取1320指令模板。向量合適指令格式之內容中的通用之詞係指不受制於任何具體指令集的指令格式。
將敘述實施例的向量合適指令格式支援下列:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(因此,64位元組向量係由16個雙字組大小元件或替代地由8個四字組大小元件組成);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)的32位元組向量運算元長度(或大小);及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)的16位元組向量運算元長度(或大小)。然而,其他實施例支援具有更多、更少、或不同的資料元件寬度(例如,128位元(16位元組)的資料元件寬度)的更多、更少及/或不同的向量運算元大小(例如,256位元組的向量運算元)。
第13A圖中的類別A指令模板包括:1)在無記憶體存取1305指令模板內顯示無記憶體存取、全捨入
控制類型操作1310指令模板及無記憶體存取、資料轉換類型操作1315指令模板;及2)在記憶體存取1320指令模板內顯示記憶體存取、暫時1325指令模板及記憶體存取、非暫時1330指令模板。第13B圖中的類別B指令模板包括:1)在無記憶體存取1305指令模板中顯示無記憶體存取、寫入遮罩控制、部份捨入控制類型操作1312指令模板及無記憶體存取、寫入遮罩控制、vsize類型操作1317指令模板;及2)在記憶體存取1320指令模板中顯示記憶體存取、寫入遮罩控制1327指令模板。
通用向量合適指令格式1300包括如下依照在第13A-13B圖中所示之順序列於下方的欄位。
格式欄位1340-在此欄位中的特定值(指令格式識別符值)唯一識別向量合適指令格式,如此在指令流中出現為向量合適指令格式的指令。由此而論,此欄位就某種意義而言係可選的,其對於僅具有通用向量合適指令格式的指令是非必要的。
基本操作欄位1342-其內容區別不同的基本操作。
暫存器索引欄位1344-其內容直接地或透過位址產生來指定來源和目的運算元的位置係在暫存器中或在記憶體中。這些包括夠多位元數以從PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案中選擇N個暫存器。儘管在一實施例中,N可能高達三個來源與一個目的暫存器,但其他實施例可支援更多或更少的來源
與目的暫存器(例如,可能支援高達兩個來源,其中這些來源的其中一個也充當目的、可能支援高達三個來源,其中這些來源的其中一個也充當目的、可能支援高達兩個來源與一個目的)。
修改欄位1346-其內容區別出現指定記憶體存取之為通用向量指令格式的指令與出現未指定記憶體存取之指令;意即,在無記憶體存取1305指令模板與記憶體存取1320指令模板之間。記憶體存取操作讀取及/或寫入記憶體階層(在一些例子中係使用暫存器中的值來指定來源及/或目的位址),而無記憶體存取操作並非如此(例如,來源及目的都是暫存器)。儘管在一實施例中,此欄位也從三個不同的方式之間選擇以執行記憶體位址計算,但其他實施例可能支援更多、更少、或不同的方式來執行記憶體位址計算。
擴充操作欄位1350-其內容區別除了基本操作之外,可執行各種不同操作中的哪一個。此欄位是特定內容。在一實施例中,此欄位分成類別欄位1368、alpha欄位1352、及beta欄位1354。擴充操作欄位1350使一般操作群組能在單一指令中執行,而不是2、3或4個指令。
縮放欄位1360-其內容考慮到縮放索引欄位的內容用於記憶體位址產生(例如,使用2scale*索引+基底的位址產生)。
位移欄位1362A-其內容係用來產生部份的
記憶體位址(例如,使用2scale*索引+基底+位移的位址產生)。
位移因數欄位1362B(請注意將位移欄位1362A直接並列於位移因數欄位1362B上就表示使用一或另一個)-其內容係用來產生部份的位址;指定待由記憶體存取(N)的大小所縮放的位移因數,這裡的N是記憶體存取中的位元組數量(例如,使用2scale*索引+基底+已縮放之位移的位址產生)。忽略多餘的低序位元,因此位移因數欄位的內容乘以記憶體運算元總大小(N)便產生用來計算有效位址的最終位移。處理器硬體在運轉期間基於全運算碼欄位1374(本文所述)及資料處理欄位1354C來決定N值。位移欄位1362A與位移因數欄位1362B就某種意義而言係可選的,其不用於無記憶體存取1305指令模板,及/或不同的實施例可能只實作其中一個或兩者皆無。
資料元件寬度欄位1364-其內容區別出使用哪一個資料元件寬度(在一些實施例中對所有指令;在其他實施例中只對一些指令)。此欄位就某種意義而言係可選的,若僅支援一種資料元件寬度及/或使用運算碼的一些態樣來支援資料元件寬度,則不需要此欄位。
寫入遮罩欄位1370-其內容在每資料元件位置基礎上控制在目的向量運算元中的資料元件位置是否反映出基本操作與擴充操作的結果。類別A指令模板支援合併寫入遮罩,而類別B指令模板支援合併與歸零寫入遮罩
兩者。當合併時,向量遮罩使任何在目的中的元件組避免在任何操作(由基本操作與擴充操作所指定)執行期間被更新;在其他的一實施例中,保留目的之每個元件的舊值,其中對應的遮罩位元具有0值。反之,當歸零時,向量遮罩使任何在目的中的元件組在任何操作(由基本操作與擴充操作所指定)執行期間被歸零;在一實施例中,當對應的遮罩位元具有0值時,目的之元件就被設為0。此功能的子集為控制所執行操作之向量長度(意即,被修改之第一個到最後一個元件的範圍)的能力;然而,所修改的元件不必是連續的。因此,寫入遮罩欄位1370允許部份的向量操作,包括載入、儲存、算術、邏輯、等等。儘管實施例係敘述寫入遮罩欄位1370的內容選擇了其中一個包含被使用之寫入遮罩的寫入遮罩暫存器(且因此寫入遮罩欄位1370的內容間接地識別被執行的遮罩),但其他實施例反而或額外允許寫入遮罩欄位1370的內容能直接地指定被執行的遮罩。
立即欄位1372-其內容考量到指定立即值。此欄位就某種意義而言是可選的,在不支援立即值之通用向量合適格式的實作中不會出現,且在不使用立即值的指令中不會出現。
類別欄位1368-其內容區別不同類別的指令。關於第13A-B圖,此欄位的內容在類別A與類別B指令之間作選擇。在第13A-B圖中,使用圓角方形來表示出現在欄位中的特定值(例如,分別在第13A-B圖中的類
別欄位1368之類別A 1368A與類別B 1368B)。
類別A的指令模板
在類別A的無記憶體存取1305指令模板之例子中,alpha欄位1352被解釋為RS欄位1352A,其內容區別出哪一種不同的擴充操作類型會被執行(例如,對無記憶體存取、捨入類型操作1310與無記憶體存取、資料轉換類型操作1315指令模板分別指定捨入1352A.1與資料轉換1352A.2),而beta欄位1354區別指定類型的哪種操作會被執行。在無記憶體存取1305指令模板中,不會出現縮放欄位1360、位移欄位1362A,及位移縮放欄位1362B。
無記憶體存取指令模板-全捨入控制類型操作
在無記憶體存取全捨入控制類型操作1310指令模板中,beta欄位1354係被解釋為捨入控制欄位1354A,其內容提供靜態捨入。儘管在所述之實施例中,捨入控制欄位1354A包括抑制所有浮點數例外(SAE)欄位1356與捨入操作控制欄位1358,但其他實施例可能支援可將這些概念皆編碼成相同的欄位或僅有其中一個或另一個這些概念/欄位(例如,可能僅有捨入操作控制欄位1358)。
SAE欄位1356-其內容區別是否去能例外事件報告;當SAE欄位1356的內容指示啟動抑制時,已知
指令不會報告任何種類的浮點數例外旗標且不啟動任何浮點數例外的處理器。
捨入操作控制欄位1358-其內容區別捨入操作群組中的哪一個操作會被執行(例如,無條件進入、無條件捨去、化整為零和四捨五入)。因此,捨入操作控制欄位1358考量到改變每指令基礎上的捨入模式。在一實施例中,處理器包括用來規定捨入模式的控制暫存器,且捨入操作控制欄位1350的內容會蓋過此暫存器值。
無記憶體存取指令模板-資料轉換類型操作
在無記憶體存取資料轉換類型操作1315指令模板中,beta欄位1354被解釋為資料轉換欄位1354B,其內容區別哪一種資料轉換會被執行(例如,無資料轉換、攪和、廣播)。
在類別A的記憶體存取1320指令模板例子中,alpha欄位1352被解釋為逐出暗示欄位1352B,其內容區別哪一個逐出暗示會被使用(在第13A圖中,對記憶體存取、暫時1325指令模板與記憶體存取、非暫時1330指令模板分別規定暫時1352B.1與非暫時1352B.2),而beta欄位1354被解釋為資料處理欄位1354C,其內容區別哪一個資料處理操作(也稱作基元)會被執行(例如,無處理;廣播;來源之上轉換;及目的之下轉換)。記憶體存取1320指令模板包括縮放欄位1360,及選擇性地包括位移欄位1362A或位移縮放欄位1362B。
向量記憶體指令利用轉換支援來進行從記憶體載入向量及將向量存入記憶體。如同正常的向量指令,向量記憶體指令以逐資料元件的方式從/至記憶體傳輸資料,而且實際上傳輸的元件會被選為寫入遮罩的向量遮罩內容所指示。
記憶體存取指令模板-暫時
暫時資料很可能是快到能從快取中再被使用的資料。然而,這只是一個建議,且不同的處理器可能以不同方式來實作,包括完全地忽略這個建議。
記憶體存取指令模板-非暫時
非暫時資料不太可能是快到能從第1級快取中再被使用的資料且應該優先逐出。然而,這只是一個建議,且不同的處理器可能以不同方式來實作,包括完全地忽略這個建議。
類別B的指令模板
在類別B的指令模板例子中,alpha欄位1352被解釋為寫入遮罩控制(Z)欄位1352C,其內容區別是否應該合併或歸零被寫入遮罩欄位1370控制的寫入遮罩。
在類別B的無記憶體存取1305指令模板例子中,部份的beta欄位1354被解釋為RL欄位1357A,其
內容區別哪一種擴充操作類型會被執行(例如,對無記憶體存取、寫入遮罩控制、部份捨入控制類型操作1312指令模板與無記憶體存取、寫入遮罩控制、VSIZE類型操作1317指令模板分別規定捨入1357A.1與向量長度(VSIZE)1357A.2),而其餘的beta欄位1354區別哪一種指定類型的操作會被執行。在無記憶體存取1305指令模板中,不會出現縮放欄位1360、位移欄位1362A、及位移縮放欄位1362B。
在無記憶體存取、寫入遮罩控制、部份捨入控制類型操作1310指令模板中,其餘的beta欄位1354被解釋為捨入操作欄位1359A且例外事件報告會失效(已知指令不會報告任何種類的浮點數例外旗標且不啟動任何浮點數例外的處理器)。
捨入操作控制欄位1359A-正如捨入操作控制欄位1358,其內容區別捨入操作群組中的哪一個操作會被執行(例如,無條件進入,無條件捨去,化整為零和四捨五入)。因此,捨入操作控制欄位1359A考量到改變每指令基礎上的捨入模式。在一實施例中,處理器包括用來規定捨入模式的控制暫存器,捨入操作控制欄位1350的內容蓋過此暫存器值。
在無記憶體存取、寫入遮罩控制、VSIZE類型操作1317指令模板中,其餘的beta欄位1354被解釋為向量長度欄位1359B,其內容區別會進行哪一個資料向量長度(例如,128、256、或512個位元組)。
在類別B的記憶體存取1320指令模板例子中,部份的beta欄位1354被解釋為廣播欄位1357B,其內容區別是否會執行廣播類型資料處理操作,而其餘的beta欄位1354被解釋為向量長度欄位1359B。記憶體存取1320指令模板包括縮放欄位1360,及選擇性地包括位移欄位1362A或位移縮放欄位1362B。
關於通用向量合適指令格式1300,顯示全運算碼欄位1374包括格式欄位1340、基本操作欄位1342、及資料元件寬度欄位1364。儘管顯示一實施例中的全運算碼欄位1374包括所有這些欄位,但在不支援所有欄位的實施例中,全運算碼欄位1374包括比所有這些欄位還少的欄位。全運算碼欄位1374提供運算碼(opcode)。
擴充操作欄位1350、資料元件寬度欄位1364、及寫入遮罩欄位1370允許在通用向量合適指令格式的每個指令基礎上規定這些特徵。
結合寫入遮罩欄位與資料元件寬度欄位會產生類型化指令,其使遮罩能基於不同的資料元件寬度來應用。
在類別A與類別B內發現的各種指令模板會在不同情況下有幫助。在一些實施例中,不同處理器或處理器內的不同核心可能僅支援類別A、僅支援類別B、或支援這兩種類別。例如,旨在用於通用計算的高效能通用亂序核心可能僅支援類別B,主要打算用於圖形及/或科學(生產量)計算的核心可能僅支援類別A,而打算用於
兩者的核心可能支援這兩種類別(當然,具有來自兩種類別之一些混合的模板和指令的核心,但並非來自兩種類別之所有模板和指令都在本發明之範圍內)。而且,單一處理器可能包括多個核心,所有核心支援相同類別或其中有不同核心支援不同類別。例如,在具有單獨圖形和通用核心的處理器中,主要用於圖形及/或科學計算的其中一個圖形核心可能僅支援類別A,而一或多個通用核心可以是具有亂序執行和用於通用計算的暫存器更名之高效能通用核心,其僅支援類別B。不具有單獨圖形核心的另一處理器可能包括一或多個通用有序或亂序核心,其支援類別A與類別B兩者。當然,在不同實施例中,來自一類別的特徵亦可能實作在其他類別中。用高階語言所編寫的程式將被編譯(例如,及時編譯或靜態地編譯)成各種不同的可執行形式,包括:1)僅具有用於執行的目標處理器所支援之類別之指令的形式;或2)具有使用所有類別之不同指令組合來編寫之替代常式並具有選擇常式以基於由目前正在執行代碼的處理器所支援的指令來執行的控制流程之形式。
示範專用向量合適指令格式
第14圖係繪示根據實施例之示範專用向量合適指令格式的方塊圖。第14圖顯示專用向量合適指令格式1400,就某種意義而言其為特定的,其規定位置、大小、解釋、及欄位順序,以及一些欄位的值。可能使用專
用向量合適指令格式1400來擴充x86指令集,因此有些欄位會類似或等同於在現存之x86指令集及其擴充(例如,AVX)中使用的欄位。這個格式依然符合具有擴充之現存的x86指令集之前置編碼欄位、實數運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位。說明了第13圖之欄位映射到的第14圖之欄位。
應了解雖然實施例為了說明目的而在通用向量合適指令格式1300之上下文中說明關於專用向量合適指令格式1400,但除了所請求之範圍外,本發明並不受限於專用向量合適指令格式1400。例如,通用向量合適指令格式1300考量各種可能大小用於各種欄位,而專用向量合適指令格式1400係顯示為具有特定大小的欄位。藉由特定實例,儘管顯示資料元件寬度欄位1364在專用向量合適指令格式1400中是一個位元欄位,但本發明不以此為限(意即,通用向量合適指令格式1300考量其他大小的資料元件寬度欄位1364)。
通用向量合適指令格式1300包括如下依照在第14A圖中所示之順序所列的欄位。
EVEX前置(位元組0-3)1402-被編碼成四位元組形式。
格式欄位1340(EVEX位元組0,位元〔7:0〕)-第一位元組(EVEX位元組0)是格式欄位1340且其內含0x62(用來區別本發明之一實施例中的向量合適指令格式之唯一值)。
第二至第四個位元組(EVEX位元組1-3)包括一些提供特定能力的位元欄位。
REX欄位1405(EVEX位元組1,位元〔7-5〕)-由EVEX.R位元欄位(EVEX位元組1,位元〔7〕-R)、EVEX.X位元欄位(EVEX位元組1,位元〔6〕-X)、及1357BEX位元組1,位元〔5〕-B)所組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與對應之VEX位元欄位相同的功能性,且使用1補數形式來編碼,意即,將ZMMO編碼成1111B、將ZMM15編碼成0000B。如本領域所知悉,指令的其他欄位編碼暫存器索引的最低三位元(rrr、xxx及bbb),如此可能藉由增加EVEX.R、EVEX.X、及EVEX.B來形成Rrrr、Xxxx、及Bbbb。
REX’欄位1410-這是REX’欄位1410之第一部份且是EVEX.R’位元欄位(EVEX位元組1,位元〔4〕-R’),其用來編碼最高16或最低16的擴充32暫存器組。在一實施例中,此位元與如下面指出的其他位元係儲存成位元反轉的格式,以區別出(在熟知的x86 32位元模式中)BOUND指令,其實數運算碼位元組是62,但在MOD R/M欄位中(下面所述)不接受在MOD欄位中的11值;其他實施例不以反轉格式儲存此位元與下面其他的指示位元。1值係用來編碼最低的16個暫存器。換言之,R’Rrrr係藉由結合EVEX.R’、EVEX.R、及來自其他欄位的其他RRR來形成。
運算碼映射欄位1415(EVEX位元組1,位元〔3:0〕-mmmm)-其內容編碼隱含的引導運算碼位元組(OF、OF 38、或OF 3)。
資料元件寬度欄位1364(EVEX位元組2,位元〔7〕-W)-係以符號EVEX.W來表示。EVEX.W係用來定義資料型態的粒度(大小)(不是32位元的資料元件就是64位元的資料元件)。
EVEX.vvvv 1420(EVEX位元組2,位元〔6:3〕-vvvv)-EVEX.vvvv的作用可能包括下列:1)EVEX.vvvv以反轉(1補數)形式來編碼所指定的第一來源暫存器運算元,且對具有2或多個來源運算元的指令皆有效;2)EVEX.vvvv對某個向量偏移以1補數形式來編碼所指定的目的暫存器運算元;或3)EVEX.vvvv不編碼任何運算元,欄位被保留且應包含1111b。因此,EVEX.vvvv欄位1420將所儲存之第一來源暫存器指示符之4個低序位元編碼成反轉(1補碼)形式。取決於指令,使用額外不同的EVEX位元欄位來將指示符大小擴充至32個暫存器。
EVEX.U 1368類別欄位(EVEX位元組2,位元〔2〕-U)-若EVEX.U=0,則表示類別A或EVEX.U0;若EVEX.U=1,則表示類別B或EVEX.U1。
前置編碼欄位1425(EVEX位元組2,位元〔1:0〕-pp)-提供額外的位元用於基本操作欄位。除了對EVEX前置格式的傳統SSE指令提供支援,也具有緊密
SIMD前置的優點(而不需要位元組來表示SIMD前置,EVEX前置僅需要2位元)。在一實施例中,為了支援使用為傳統格式與EVEX前置格式的SIMD前置(66H、F2H、F3H)之傳統SSE指令,這些傳統SIMD前置會被編碼入SIMD前置編碼欄位中;且在提供到解碼器的PLA之前,在運轉時間時展開到傳統SIMD前置(因此PLA可執行這些傳統指令之傳統與EVEX格式兩者而不需修改)。雖然較新的指令可直接使用EVEX前置編碼欄位的內容作為運算碼擴充,但某些實施例為了一致性會以類似方式來擴充,可是要考量到這些傳統SIMD前置所規定的不同意思。另一實施例可能重設計PLA來支援2位元SIMD前置編碼,因而不需要擴充。
Alpha欄位1352(EVEX位元組3,位元〔7〕-EH;也稱作EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α來說明)-如先前所述,此欄位是特定的內容。
Beta欄位1354(EVEX位元組3,位元〔6:4〕-SSS;也稱作EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LLO、EVEX.LLB;也以β β β來說明)-如先前所述,此欄位是特定的內容。
REX’欄位1410-這是REX’欄位之餘數且是EVEX.V’位元欄位(EVEX位元組3,位元〔3〕-V’),其可用來編碼最高16或最低16的擴充32暫存器組。此位元係儲存成位元反轉的格式。使用1值來編碼最低的
16個暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv來形成。
寫入遮罩欄位1370(EVEX位元組3,位元〔2:0〕-kkk)-其內容指定在寫入遮罩暫存器中的暫存器之索引,如先前所述。在一實施例中,特定值EVEX.kkk=000具有意謂著沒有對特定指令使用寫入遮罩的特殊行為(可能以各種方式來實作,包括使用固線式連至所有1的寫入遮罩或繞過遮罩硬體的硬體)。
實數運算碼欄位1430(位元組4)也稱作運算碼位元組。部份的運算碼係在這個欄位中規定。
MOD R/M欄位1440(位元組5)包括MOD欄位1442、Reg欄位1444、及R/M欄位1446。如先前所述,MOD欄位1442的內容區別記憶體存取與非記憶體存取操作。Reg欄位1444的作用可概括為兩種情況:編碼目的暫存器運算元或來源暫存器運算元、或視為運算碼擴充且不用來編碼任何指令運算元。R/M欄位1446的作用可能包括下列:編碼參考記憶體位址的指令運算元、或編碼目的暫存器運算元或來源暫存器運算元。
縮放、索引、基底(SIB)位元組(位元組6)-如先前所述,縮放欄位1350的內容係用於記憶體位址產生。SIB.xxx 1454與SIB.bbb 1456-之前已經提到這些欄位的內容係關於暫存器索引Xxxx與Bbbb。
位移欄位1362A(位元組7-10)-當MOD欄位1442內含10時,位元組7-10是位移欄位1362A,且
其作用如同傳統32位元位移(位移32)且以位元組大小來運作。
位移因數欄位1362B(位元組7)-當MOD欄位1442內含01時,位元組7是位移因數欄位1362B。此欄位的位置係與傳統x86指令集8位元位移(位移8)的位置相同,其以位元組粒度來運作。由於位移8是有號擴充,因此會只在-128與127位元組偏移量之間定址;就64位元組快取線而言,位移8使用8位元,其只會設成四個實際有用的值-128、-64、0、及64;由於通常需要較大的範圍,故使用位移32;然而,位移32需要4位元組。相對於位移8與位移32,位移因數欄位1362B重新詮釋了位移8;當使用位移因數欄位1362B時,實際位移會由乘以記憶體運算元存取的大小(N)之位移因數欄位之內容所決定。這類型的位移係稱作位移8*N。這減少了平均指令長度(用來位移但具有大上許多範圍的單一位元組)。這樣的壓縮位移係基於假設有效的位移是記憶體存取之粒度的倍數,因此,不需要編碼位址偏移量之多餘的低序位元。換言之,位移因數欄位1362B取代了傳統x86指令集8位元位移。因此,會以與x86指令集8位元位移的相同方式來編碼(故不改變ModRM/SIB編碼規則)位移因數欄位1362B,只有將位移8超載至位移8*N例外。換言之,沒有改變編碼規則或編碼長度,而只是改變硬體所詮釋的位移值(其需要以記憶體運算元的大小來縮放位移以獲得逐位元組位址偏移量)。
立即值欄位1372係如先前所述來運作。
全運算碼欄位
第14B圖係繪示根據一實施例之組成全運算碼欄位1374的專用向量合適指令格式1400之欄位的方塊圖。具體來說,全運算碼欄位1374包括格式欄位1340、基本操作欄位1342、及資料元件寬度(W)欄位1364。基本操作欄位1342包括前置編碼欄位1425、運算碼映射欄位1415、及實數運算碼欄位1430。
暫存器索引欄位
第14C圖係繪示根據一實施例之組成暫存器索引欄位1344的專用向量合適指令格式1400之欄位的方塊圖。具體來說,暫存器索引欄位1344包括REX欄位1405、REX’欄位1410、MODR/M.reg欄位1444、MODR/M.r/m欄位1446、VVVV欄位1420、xxx欄位1454、及bbb欄位1456。
擴充操作欄位
第14D圖係繪示根據一實施例之組成擴充操作欄位1350的專用向量合適指令格式1400之欄位的方塊圖。當類別(U)欄位1368包含0時,表示EVEX.U0(類別A 1368A);當包含1時,表示EVEX.U1(類別B 1368B)。當U=0且MOD欄位1442包含11時(表示無
記憶體存取操作),alpha欄位1352(EVEX位元組3,位元〔7〕-EH)被解釋為rs欄位1352A。當rs欄位1352A包含1(捨入1352A.1)時,beta欄位1354(EVEX位元組3,位元〔6:4〕-SSS)被解釋為捨入控制欄位1354A。捨入控制欄位1354A包括一個位元SAE欄位1356和兩個位元捨入操作欄位1358。當rs欄位1352A包含0(資料轉換1352A.2)時,beta欄位1354(EVEX位元組3,位元〔6:4〕-SSS)被解釋為三個位元資料轉換欄位1354B。當U=0且MOD欄位1442包含00、01、或10時(表示記憶體存取操作),alpha欄位1352(EVEX位元組3,位元〔7〕-EH)被解釋為逐出暗示(EH)欄位1352B且beta欄位1354(EVEX位元組3,位元〔6:4〕-SSS)被解釋為三個位元資料處理欄位1354C。
當U=1時,alpha欄位1352(EVEX位元組3,位元〔7〕-EH)被解釋為寫入遮罩控制(Z)欄位1352C。當U=1且MOD欄位1442包含11時(表示無記憶體存取操作),部分的beta欄位1354(EVEX位元組3,位元〔4〕-S0)被解釋為RL欄位1357A;當包含1(捨入1357A.1)時,其餘的beta欄位1354(EVEX位元組3,位元〔6-5〕-S2-1)被解釋為捨入操作欄位1359A,而當RL欄位1357A包含0(VSIZE 1357.A2)時,其餘的beta欄位1354(EVEX位元組3,位元〔6-5〕-S2-1)被解釋為向量長度欄位1359B(EVEX位元組3,位元〔6-5〕-L1-0)。當U=1且MOD欄位1442包含
00、01、或10時(表示記憶體存取操作),beta欄位1354(EVEX位元組3,位元〔6:4〕-SSS)被解釋為向量長度欄位1359B(EVEX位元組3,位元〔6-5〕-L1-0)和廣播欄位1357B(EVEX位元組3,位元〔4〕-B)。
示範暫存器架構
第15圖係根據一實施例之暫存器架構1500的方塊圖。在所述之實施例中,有32個512位元寬的向量暫存器1510;這些暫存器被引用為zmm0至zmm31。最低16zmm暫存器的低序256位元係覆蓋在暫存器ymm0-16上。最低16zmm暫存器的低序128位元(ymm暫存器的低序128位元)係覆蓋在暫存器xmm0-15上。專用向量合適指令格式1400在如下之表格3中所示的這些覆蓋暫存器上操作。
換言之,向量長度欄位1359B在最大長度與
一或多個其他較短長度之間作選擇,這裡的每個上述較短長度為前面長度之長度的一半;且不包括向量長度欄位1359B的指令模板會在最大向量長度上操作。再者,在一實施例中,專用向量合適指令格式1400的類別B指令模板在緊縮或純量單/雙精度浮點數資料和緊縮或純量整數資料上操作。純量操作係執行在zmm/ymm/xmm暫存器中的最低序資料元件位置上的操作;高序資料元件位置依據實施例而處於在指令或歸零之前相同的位置。
寫入遮罩暫存器1515-在所述之實施例中,有8個寫入遮罩暫存器(k0至k7),每個大小為64位元。在另一實施例中,寫入遮罩暫存器1515的大小為16位元。如之前所述,在一實施例中,向量遮罩暫存器k0不能作為寫入遮罩;當編碼通常指示出k0係用於寫入遮罩時,便選擇0xFFFF的固線式寫入遮罩,有效地禁能對此指令的寫入遮罩。
通用暫存器1525-在所述之實施例中,有16個64位元的通用暫存器,其與現存之x86定址模式一起使用以定址記憶體運算元。這些暫存器所引用的名稱為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)1545,於其上堆疊MMX緊縮整數浮點數暫存器檔案1550-在所述之實施例中,x87堆疊為8元件堆疊,用來使用x87指令集擴充對32/64/80位元浮點數資料執行純量浮點數操
作;而MMX暫存器係用來對64位元緊縮整數資料進行操作,以及對在MMX與XMM暫存器之間進行的一些操作保持運算元。
其他實施例可能使用較寬或較窄的暫存器。另外,另一實施例可能使用更多、更少、或不同的暫存器檔案和暫存器。
本文所述的是一或多個電腦的系統,其能配置以藉由具有安裝在系統上以使系統進行動作的軟體、韌體、硬體、或其組合來執行特定操作或動作。此外,一或多個電腦程式會配置以藉由包括指令或硬體邏輯來執行特定操作或動作,當指令或硬體邏輯被處理裝置執行或利用時使裝置執行本文所述之動作。在一實施例中,處理裝置包括解碼邏輯,用以將第一指令解碼成包括第一運算元及第二運算元的已解碼第一指令。處理裝置額外包括執行單元,用以執行第一已解碼指令以執行離心操作。
離心操作係用以基於由第一運算元指示的控制遮罩來從由第二運算元指定的來源暫存器分開位元。在一實施例中,第二運算元在命名架構暫存器的範圍中指定來源暫存器,其可能是儲存來源資料或來源資料元件的通用或向量暫存器。第一運算元在列出架構暫存器的範圍中指示控制遮罩,或在一實施例中,可能直接指示控制遮罩值作為立即運算元,或可能包括具有控制遮罩的記憶體位址。其他實施例包括相應的電腦系統、裝置、及記錄在一或多個電腦儲存器上的電腦程式,每個配置以執行本文所
指定的動作。
例如,一實施例,處理裝置更包括指令提取單元,用以提取第一指令,其中指令為單一機器層級指令。在一實施例中,處理裝置更包括暫存器檔案,用以將本文所述之離心操作的結果提交至由目的運算元所指定的位置,其可能是通用或向量暫存器。暫存器檔案單元會配置以儲存一組實體暫存器,包括第一暫存器,用以儲存第一來源運算元值、第二暫存器,用以儲存第二來源運算元值、及第三暫存器,用以儲存上述離心操作之結果的至少一資料元件。
在一實施例中,第一暫存器係用以儲存控制遮罩,其中控制遮罩包括多個位元,其中控制遮罩的每個位元用以指示在目的暫存器中的位元位置以寫入來自來源暫存器的值以讀取值。在一實施例中,1的控制遮罩位元指示值係欲被寫至第三暫存器的第一區,而零的控制遮罩位元指示值係欲被寫至第三暫存器的第二區。
在一實施例中,第三暫存器之第一區包括暫存器的低位元組次序位元,且第三暫存器的第二區包括暫存器的高位元組次序位元。在一實施例中,第一區的低位元組次序位元被分類為暫存器的「右」側,而第二區的高位元組次序位元被分類為暫存器的「左」側。然而,將了解到離心操作會配置以在暫存器的相對側上,或在向量暫存器的情況中在多個向量元件上操作,而不限於關聯於暫存器的位元組次序或位址協定。
在一實施例中,本文所述之指令係指硬體的專用配置,例如專用積體電路(ASIC),配置以執行某些操作或具有預定功能。這類的電子裝置一般包括一組一或多個處理器,耦接至一或多個其他元件,例如一或多個儲存裝置(非暫態機器可讀儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控螢幕、及/或顯示器)、及網路連線。這組處理器和其他元件的耦接一般透過一或多個匯流排和橋接器(也稱為匯流排控制器)。載送網路流量的儲存裝置和信號分別表示一或多個機器可讀儲存媒體和機器可讀通訊媒體。因此,給定電子裝置的儲存裝置一般儲存用於在此電子裝置之這組一或多個處理器上執行的碼及/或資料。
在前面說明書中,本發明已經參考其具體示範實施例描述。然而,顯而易見的是可以對其進行各種修改和改變而不脫離本發明的更廣精神和範圍,如所附申請專利範圍中闡述。在某些情況下,不詳細敘述熟知的結構和功能以避免模糊本發明的主題。藉此,本說明書和附圖中是說明性的而非限制性的。因此,本發明的範圍和精神應該根據下面之申請專利範圍的項目來判斷。
1000‧‧‧處理器核心
1001‧‧‧前端
1002‧‧‧快速排程器
1003‧‧‧亂序執行引擎
1004‧‧‧慢/通用浮點數排程器
1006‧‧‧簡單浮點數排程器
1008‧‧‧暫存器檔案
1010‧‧‧暫存器檔案
1011‧‧‧執行方塊
1012‧‧‧執行單元
1014‧‧‧執行單元
1016‧‧‧執行單元
1018‧‧‧執行單元
1020‧‧‧執行單元
1022‧‧‧執行單元
1024‧‧‧執行單元
1026‧‧‧指令預取器
1028‧‧‧指令解碼器
1029‧‧‧追蹤快取
1030‧‧‧SRAM單元
1032‧‧‧微碼ROM
1034‧‧‧uop佇列
1041‧‧‧記憶體執行單元
1042‧‧‧記憶體排序緩衝器
1072‧‧‧資料TLB單元
1074‧‧‧資料快取單元
1076‧‧‧L2快取單元
Claims (20)
- 一種處理裝置,包含:解碼邏輯,用以將一第一指令解碼成包括一第一運算元及一第二運算元的一已解碼第一指令;及一執行單元,用以執行該第一已解碼指令以執行一離心操作,該離心操作基於由該第一運算元指示的一控制遮罩來從由該第二運算元指定的一來源暫存器分開位元。
- 如申請專利範圍第1項所述之處理裝置,更包含一指令提取單元,用以提取該第一指令,其中該指令為一單一機器層級指令。
- 如申請專利範圍第1項所述之處理裝置,更包含一暫存器檔案單元,用以將該離心操作的結果提交至由一目的運算元所指定的位置。
- 如申請專利範圍第3項所述之處理裝置,其中該暫存器檔案單元更用以儲存一組暫存器,包含:一第一暫存器,用以儲存一第一來源運算元值;一第二暫存器,用以儲存一第二來源運算元值;及一第三暫存器,用以儲存該離心操作之結果的至少一資料元件。
- 如申請專利範圍第4項所述之處理裝置,其中該第一暫存器用以儲存該控制遮罩。
- 如申請專利範圍第5項所述之處理裝置,其中該控制遮罩包括多個位元,其中該控制遮罩的每個位元用以指示在該第三暫存器內的一位置以寫入來自該第二暫存器 的一值。
- 如申請專利範圍第6項所述之處理裝置,其中1的一控制遮罩位元指示來自該第二暫存器的該值係欲被寫至該第三暫存器中的一第一區且零的一控制遮罩位元指示該值係欲被寫至該第三暫存器中的一第二區。
- 如申請專利範圍第7項所述之處理裝置,其中該第三暫存器之該第一區包括低位元組次序位元,該第三暫存器的該第二區包括高位元組次序位元,且該第一及第二區係相對的。
- 如申請專利範圍第4項所述之處理裝置,其中該第一或第二暫存器為一通用暫存器。
- 如申請專利範圍第9項所述之處理裝置,其中該通用暫存器為64位元暫存器。
- 如申請專利範圍第4項所述之處理裝置,其中該第一或第二暫存器為一向量暫存器。
- 如申請專利範圍第11項所述之處理裝置,其中該向量暫存器為一512位元暫存器,用以儲存緊縮資料元件。
- 如申請專利範圍第11項所述之處理裝置,其中該向量暫存器為一256位元暫存器,用以儲存緊縮資料元件。
- 如申請專利範圍第11項所述之處理裝置,其中該向量暫存器為一128位元暫存器,用以儲存緊縮資料元件。
- 如申請專利範圍第14項所述之處理裝置,其中該緊縮資料元件包括位元組、字組、雙字組、或四字組資料元件及該離心操作用以分開每個資料元件中的位元。
- 一種機器可讀媒體,具有儲存於其上的資料,若該資料被至少一機器執行則使該至少一機器製造至少一積體電路以執行操作,包括:提取一單一指令以執行一離心操作,該指令具有兩個來源運算元及一目的運算元;將該單一指令解碼成一已解碼指令;提取關聯於至少一運算元的來源運算元值;及執行該已解碼指令以基於由一第一運算元指示的一控制遮罩來從由一第二來源運算元指定的一來源暫存器之相對區分開位元。
- 如申請專利範圍第16項所述之媒體,其中該積體電路用以執行進一步操作,包括將該離心操作的結果提交至由該目的運算元指示的位置。
- 如申請專利範圍第17項所述之媒體,其中執行該已解碼指令包括執行至少一平行取出操作以從一來源暫存器中的一任意位置取出位元的一欄位並將該欄位寫至一目的暫存器的一連續區。
- 如申請專利範圍第18項所述之媒體,其中該目的暫存器為一暫時暫存器。
- 如申請專利範圍第19項所述之媒體,更包含對多個暫時暫存器執行多個平行取出操作、對該多個暫時暫 存器執行一OR操作、及將結果提交至由該目的運算元所指示的位置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/580,069 US9904548B2 (en) | 2014-12-22 | 2014-12-22 | Instruction and logic to perform a centrifuge operation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201643693A true TW201643693A (zh) | 2016-12-16 |
TWI603261B TWI603261B (zh) | 2017-10-21 |
Family
ID=56129477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104138151A TWI603261B (zh) | 2014-12-22 | 2015-11-18 | 用以執行離心操作的指令及邏輯 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9904548B2 (zh) |
TW (1) | TWI603261B (zh) |
WO (1) | WO2016105690A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11221849B2 (en) | 2017-09-27 | 2022-01-11 | Intel Corporation | Instructions for vector multiplication of unsigned words with rounding |
WO2019066796A1 (en) * | 2017-09-27 | 2019-04-04 | Intel Corporation | INSTRUCTIONS FOR THE VECTORIAL MULTIPLICATION OF WORDS SIGNED AT BOROUGH |
US11086625B2 (en) | 2019-09-10 | 2021-08-10 | Apple Inc. | Compression assist instructions |
US11281592B2 (en) * | 2019-11-11 | 2022-03-22 | Advanced Micro Devices, Inc. | Dynamic banking and bit separation in memories |
CN114095149B (zh) * | 2021-11-12 | 2023-05-30 | 龙芯中科技术股份有限公司 | 信息加密方法、装置、设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5765181A (en) * | 1993-12-10 | 1998-06-09 | Cray Research, Inc. | System and method of addressing distributed memory within a massively parallel processing system |
US5696922A (en) * | 1993-12-10 | 1997-12-09 | Cray Research, Inc. | Recursive address centrifuge for distributed memory massively parallel processing systems |
US5900023A (en) * | 1996-06-28 | 1999-05-04 | Cray Research Inc. | Method and apparatus for removing power-of-two restrictions on distributed addressing |
US6715066B1 (en) * | 2000-04-07 | 2004-03-30 | Sun Microsystems, Inc. | System and method for arranging bits of a data word in accordance with a mask |
US6718492B1 (en) * | 2000-04-07 | 2004-04-06 | Sun Microsystems, Inc. | System and method for arranging bits of a data word in accordance with a mask |
US20030105945A1 (en) | 2001-11-01 | 2003-06-05 | Bops, Inc. | Methods and apparatus for a bit rake instruction |
US20020169808A1 (en) * | 2000-12-12 | 2002-11-14 | Fromm Eric C. | System and method for reordering data |
US7631025B2 (en) | 2001-10-29 | 2009-12-08 | Intel Corporation | Method and apparatus for rearranging data between multiple registers |
US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
EP2798504A4 (en) * | 2011-12-29 | 2016-07-27 | Intel Corp | PROCESSORS HAVING FULLY CONNECTED INTERCONNECTIONS SHARED BY VECTORIAL CONFLICT INSTRUCTIONS AND PERMUTATION INSTRUCTIONS |
CN104137061B (zh) | 2011-12-30 | 2017-12-22 | 英特尔公司 | 用于执行向量频率扩展指令的方法、处理器核和计算机系统 |
EP2798480B1 (en) | 2011-12-30 | 2018-09-26 | Intel Corporation | Vector frequency compress instruction |
-
2014
- 2014-12-22 US US14/580,069 patent/US9904548B2/en active Active
-
2015
- 2015-11-16 WO PCT/US2015/060817 patent/WO2016105690A1/en active Application Filing
- 2015-11-18 TW TW104138151A patent/TWI603261B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20160179539A1 (en) | 2016-06-23 |
US9904548B2 (en) | 2018-02-27 |
WO2016105690A1 (en) | 2016-06-30 |
TWI603261B (zh) | 2017-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
TWI524266B (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
JP6711480B2 (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
TWI630548B (zh) | 緊縮旋轉處理器、方法、系統與指令 | |
JP2017016637A (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
JP6849275B2 (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
TWI489384B (zh) | 執行置換運算的處理器與方法及具有該處理器的電腦系統 | |
JP6741006B2 (ja) | マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 | |
CN107391086B (zh) | 改进置换指令的装置和方法 | |
TWI603261B (zh) | 用以執行離心操作的指令及邏輯 | |
KR20170099873A (ko) | 벡터 비트 셔플을 수행하기 위한 방법 및 장치 | |
CN107193537B (zh) | 经改进的插入指令的装置和方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
TWI622879B (zh) | 考慮用於執行之載入資料元件中的空間區域性之裝置和方法 | |
TWI644256B (zh) | 用以執行向量飽和雙字/四字加法的指令及邏輯 | |
KR20170097015A (ko) | 마스크를 마스크 값들의 벡터로 확장하기 위한 방법 및 장치 | |
TWI628595B (zh) | 用以執行反離心操作之處理設備和非暫態機器可讀取媒體 | |
TW201732553A (zh) | 用於保留位元的強制執行的裝置及方法 | |
TWI517032B (zh) | 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法 | |
KR20170098806A (ko) | 벡터 비트 수집을 수행하기 위한 방법 및 장치 | |
KR20170099864A (ko) | 마스크 값을 압축하기 위한 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |