TWI584192B - 提供向量混合與置換功能的指令與邏輯(二) - Google Patents
提供向量混合與置換功能的指令與邏輯(二) Download PDFInfo
- Publication number
- TWI584192B TWI584192B TW105124459A TW105124459A TWI584192B TW I584192 B TWI584192 B TW I584192B TW 105124459 A TW105124459 A TW 105124459A TW 105124459 A TW105124459 A TW 105124459A TW I584192 B TWI584192 B TW I584192B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- component
- data
- operand
- instruction
- Prior art date
Links
- 239000000203 mixture Substances 0.000 title 1
- 230000015654 memory Effects 0.000 claims description 158
- 238000012545 processing Methods 0.000 claims description 89
- 238000000034 method Methods 0.000 claims description 35
- 230000004044 response Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 description 53
- 238000002156 mixing Methods 0.000 description 47
- 238000003860 storage Methods 0.000 description 37
- 238000007667 floating Methods 0.000 description 33
- 238000010586 diagram Methods 0.000 description 27
- 238000004519 manufacturing process Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 12
- 239000000463 material Substances 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 235000012431 wafers Nutrition 0.000 description 7
- 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 6
- 230000008901 benefit Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000000873 masking effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000000007 visual 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic 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/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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本揭示案係關於在由處理器或其他處理邏輯執行時執行邏輯運算、數學運算或其他函數運算之處理邏輯、微處理器及相關指令集架構的領域。詳言之,本揭示案係關於提供向量混合與置換功能之指令與邏輯。
現代處理器通常包括提供計算密集型操作之指令,但是提供高度資料平行性,經由使用各種資料儲存裝置(諸如單指令多資料(SIMD)向量暫存器)的高效實行方案,可利用此高度資料平行性。
使用SIMD向量暫存器之處理器的一個潛在效能問題為,儲存於實體記憶體中的資料之定位方式可能需要在向量暫存器中的重新排列,以便應用所要的記憶體及/或SIMD算術運算,例如,位於未對準位址的資料,或位於兩個個別快取列之末尾及開頭的資料,或位於表的各獨立項目中的資料,或跨越影像中之區塊邊界的資料等。
以前的一些處理器已實施指令來處置此等潛在
效能問題的某些特殊情況,諸如處置未對準位址,或為了特定變換執行特殊重新排列。但是處置某些特殊情況的實行方案可能難以適用於更一般的情況,及/或可能需要更特別的電路或資料預處理才能適用。此等實行方案可能會限制例如寬的或大寬度向量架構預期本來會獲得的效能優點。
至今還未研究出此等限制效能的問題及瓶頸的可能解決方案。
依據本發明之一實施例,係特地提出一種處理系統,其包含:一記憶體,其用以儲存指示一向量元件之值;以及可操作地被耦接至該記憶體的一執行單元,其用以:解碼一指令,該指令指定:一第一運算元,其包含複數個對應至一向量元件之資料欄位;該向量元件之大小;一第二運算元,其包含一索引集合;以及複數個向量暫存器資料欄位;基於該向量元件大小從該索引集合讀取來自該第二運算元之一索引值,該索引值包含一第一元件選擇器與一第二元件選擇器;根據該第一元件選擇器,合併來自該等複數個向量暫存器資料欄位之一第一集合與一第二集合資料欄位的向量元件值用以產生一中間向量,以及根據該第二元件選擇器,在該第一運算元中以該中間向量的該等資料欄位之已合併的向量元件值取代該向量元件大小之未遮蔽的資料欄位。
100‧‧‧電腦系統
104‧‧‧快取記憶體
106、145、164、208、210‧‧‧暫存器檔案
108、142、162、212、214、216、218、220、222、224、462‧‧‧執行單元
109、143‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器/圖形卡
114‧‧‧加速圖形埠(AGP)互連
116‧‧‧系統邏輯晶片/記憶體控制器集線器(MCH)
118‧‧‧高頻寬記憶體路徑
120、640、732、734、832、834、1140‧‧‧記憶體
122‧‧‧系統I/O/專屬集線器介面匯流排
124‧‧‧資料儲存體
126‧‧‧無線收發器
128‧‧‧快閃BIOS
130‧‧‧I/O控制器集線器(ICH)
134‧‧‧網路控制器
102、200、500、610、615、770、780、870、880、1000、1215‧‧‧處理器
140、160‧‧‧資料處理系統
141‧‧‧匯流排
144‧‧‧解碼器
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧高載快閃記憶體介面
149‧‧‧個人電腦記憶卡國際協會(PCMCIA)/緊密快閃(CF)卡控制
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧直接記憶體存取(DMA)控制器
152‧‧‧替代性匯流排主控介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用非同步接收器/發射器(UART)
156‧‧‧通用串列匯流排(USB)
157‧‧‧藍牙無線UART
158‧‧‧I/O擴展介面
159‧‧‧處理核心
161‧‧‧SIMD共處理器
163‧‧‧指令集
165、165B‧‧‧解碼器
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
170‧‧‧處理核心
171‧‧‧共處理器匯流排
201‧‧‧前端
202、204、206‧‧‧排程器
203‧‧‧亂序引擎
211‧‧‧執行區塊
226‧‧‧指令預擷取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取記憶體
232‧‧‧微碼ROM
234‧‧‧微操作佇列
310‧‧‧緊縮位元組
320‧‧‧緊縮字
330‧‧‧緊縮雙字
341‧‧‧緊縮半字
342‧‧‧緊縮單字
343‧‧‧緊縮雙字
344‧‧‧不帶正負號的緊縮位元組表示
345‧‧‧帶正負號的緊縮位元組表示
346‧‧‧不帶正負號的緊縮字表示
347‧‧‧帶正負號的緊縮字表示
348‧‧‧不帶正負號的緊縮雙字表示
349‧‧‧帶正負號的緊縮雙字表示
360、370、380、397、398‧‧‧運算碼格式
361、362、371、372‧‧‧欄位
363、373‧‧‧MOD欄位
364、365、374、375‧‧‧來源運算元識別符
366、376‧‧‧目的地運算元識別符
381‧‧‧條件欄位
382、389‧‧‧CDP運算碼欄位
383、384、387、388‧‧‧欄位
385、390‧‧‧來源運算元識別符
386‧‧‧目的地運算元識別符
391‧‧‧VEX前綴位元組
392‧‧‧欄位
393‧‧‧比例-索引-基址(SIB)識別符
394‧‧‧位移識別符
395‧‧‧立即位元組
396‧‧‧EVEX前綴位元組
400‧‧‧管線
402‧‧‧擷取級段
404‧‧‧長度解碼級段
406‧‧‧解碼級段
408‧‧‧分配級段
410‧‧‧重新命名級段
412‧‧‧排程級段
414‧‧‧暫存器讀取/記憶體讀取級段
416‧‧‧執行級段
418‧‧‧回寫/記憶體寫入級段
422‧‧‧異常處置級段
424‧‧‧確認級段
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取記憶體單元
436‧‧‧指令轉譯後備緩衝器(TLB)
438‧‧‧指令擷取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/分配器單元
454‧‧‧引退單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB
474‧‧‧資料快取記憶體單元
476‧‧‧2階(L2)快取記憶體單元
490‧‧‧核心
502A-N‧‧‧核心
506‧‧‧共享快取記憶體單元
508‧‧‧整合型圖形邏輯
510‧‧‧系統代理單元
512‧‧‧環式互連單元
514‧‧‧整合型記憶體控制器單元
516‧‧‧匯流排控制器單元
600‧‧‧系統
620‧‧‧圖形記憶體控制器集線器(GMCH)
645‧‧‧顯示器
650‧‧‧ICH
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
695‧‧‧前端匯流排(FSB)
700‧‧‧系統
714‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧指令/程式碼及資料
738‧‧‧高效能圖形電路
739‧‧‧高效能介面
772、782‧‧‧IMC
750、752、754、776、778、786、788、794、798‧‧‧點對點介面
796‧‧‧介面
800‧‧‧系統
814‧‧‧I/O裝置
815‧‧‧舊式I/O裝置
872、882‧‧‧CL
890‧‧‧晶片組
900‧‧‧系統單晶片
902‧‧‧互連單元
910‧‧‧應用處理器
920‧‧‧媒體處理器
924‧‧‧影像處理器
926‧‧‧音訊處理器
928‧‧‧視訊處理器
930‧‧‧SRAM單元
932‧‧‧DMA單元
940‧‧‧顯示單元
1005‧‧‧CPU
1010‧‧‧GPU
1015‧‧‧影像處理器
1020‧‧‧視訊處理器
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧高清晰度多媒體介面(HDMI)控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料速率(DDR)控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C(整合型晶片間聲音/內部整合電路)介面
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存媒體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製造設施
1205‧‧‧程式
1210‧‧‧仿真邏輯
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進位碼
1308‧‧‧替代性指令集編譯器
1310‧‧‧替代性指令集二進位碼
1312‧‧‧指令轉換器
1314‧‧‧不具有x86指令集核心之處理器
1316‧‧‧具有至少一x86指令集核心之處理器
1401‧‧‧設備
1402‧‧‧向量元件
1403‧‧‧交換器
1404‧‧‧遮蔽替換邏輯
1412‧‧‧索引向量運算元
1413‧‧‧第一來源運算元
1414‧‧‧第二來源運算元
1415‧‧‧目的地運算元
1416‧‧‧遮罩運算元
1420、...1425、1426‧‧‧乘法器
1421、...1451、1461‧‧‧第一來源選擇器部分
1422、...1452、1462‧‧‧第二元件選擇器部分
1423、...1453、1463‧‧‧向量元件
1424、...1454、1464‧‧‧向量元件
1425、...1455、1465‧‧‧向量元件
1427、...1457、1467‧‧‧向量元件
1428、...1458、1468‧‧‧輸出
1432、...1435、1436‧‧‧輸入
1433‧‧‧控制邏輯
1434、...1437、1438‧‧‧控制信號
1440、...1445、1446‧‧‧乘法器
1470‧‧‧中間向量
1501、1601‧‧‧處理程序
1510、1520、1530、1540、1550、1560‧‧‧處理區塊
1610、1620、1630、1640、1650、1660‧‧‧處理區塊
在隨附圖式之各圖中藉由實例而非限制來說明本發明。
圖1A係執行提供向量混合與置換功能之指令的系統之一實施例之方塊圖。
圖1B係執行提供向量混合與置換功能之指令的系統之另一實施例之方塊圖。
圖1C係執行提供向量混合與置換功能之指令的系統之另一實施例之方塊圖。
圖2係執行提供向量混合與置換功能之指令的處理器之一實施例之方塊圖。
圖3A例示出根據一實施例之緊縮資料類型。
圖3B例示出根據一實施例之緊縮資料類型。
圖3C例示出根據一實施例之緊縮資料類型。
圖3D例示出根據一實施例之提供向量混合與置換功能之指令編碼。
圖3E例示出根據另一實施例之提供向量混合與置換功能之指令編碼。
圖3F例示出根據另一實施例之提供向量混合與置換功能之指令編碼。
圖3G例示出根據另一實施例之提供向量混合與置換功能之指令編碼。
圖3H例示出根據另一實施例之提供向量混合與置換功能之指令編碼。
圖4A例示出執行提供向量混合與置換功能之指令的
處理器微架構之一實施例之元件。
圖4B例示出執行提供向量混合與置換功能之指令的處理器微架構之另一實施例之元件。
圖5係執行提供向量混合與置換功能之指令的處理器之一實施例之方塊圖。
圖6係執行提供向量混合與置換功能之指令的電腦系統之一實施例之方塊圖。
圖7係執行提供向量混合與置換功能之指令的電腦系統之另一實施例之方塊圖。
圖8係執行提供向量混合與置換功能之指令的電腦系統之另一實施例之方塊圖。
圖9係執行提供向量混合與置換功能之指令的系統單晶片之一實施例之方塊圖。
圖10係執行提供向量混合與置換功能之指令的處理器之一實施例之方塊圖。
圖11係提供向量混合與置換功能的IP核心開發系統之一實施例之方塊圖。
圖12例示出提供向量混合與置換功能的架構仿真系統之一實施例。
圖13例示出轉譯提供向量混合與置換功能之指令的系統之一實施例。
圖14例示出執行提供向量混合與置換功能之指令的設備之一實施例。
圖15例示出提供向量混合與置換功能的處理程序之一
實施例之流程圖。
圖16例示出提供向量混合與置換功能的處理程序之替代性實施例之流程圖。
以下描述揭示了在處理器、電腦系統或其他處理設備內或結合上述各者來提供向量混合與置換功能的指令與處理邏輯。
指令與邏輯提供向量混合與置換功能。在一些實施例中,向量混合與置換指令指定:具有用來儲存向量元件之欄位的目的地暫存器、元件大小、遮罩、索引向量、第一來源向量,以及第二來源向量。自索引向量中之欄位讀取索引。每一索引具有第一選擇器部分及第二選擇器部分。如下,將未遮蔽向量元件儲存至目的地運算元之對應欄位。在混合操作期間,當個別第一選擇器部分具有一特定值(例如,零)時,將每一向量元件自第一來源向量之對應資料欄位複製至中間向量,且當個別第一選擇器部分具有另一特定值(例如,一)時,將每一向量元件自第二來源向量之對應資料欄位複製至中間向量。然後在置換操作期間,用來自中間向量之資料欄位替換目的地之未遮蔽資料欄位,中間向量之資料欄位係由來自索引向量之欄位之對應的第二選擇器部分編索引。
因此,藉由提供向量混合與置換功能的指令與邏輯,在向量暫存器中可高效地重新排列儲存於實體記憶體
中且其定位方式需要在向量暫存器中的重新排列,以便應用所要的記憶體及/或SIMD算術運算的資料,例如,位於未對準位址的資料,或位於兩個個別快取列之末尾及開頭的資料,或位於表的各獨立項目中的資料,或跨越影像中之區塊邊界的資料等。
在以下描述中,闡述了眾多特定細節,諸如處理邏輯、處理器類型、微架構條件、事件、啟用機構及類似者,以便提供對本發明之實施例之更透徹理解。然而,熟習此項技術者應瞭解,可在無此等特定細節的情況下實踐本發明。另外,未詳細展示出一些熟知的結構、電路及類似者,以避免不必要地混淆本發明之實施例。
雖然參考處理器來描述以下實施例,但其他實施例適用於其他類型之積體電路及邏輯裝置。本發明之實施例之類似技術及教示可應用於其他類型之電路或半導體裝置,其受益於較高管線通量及改良的效能。本發明之實施例之教示適用於執行資料調處的任何處理器或機器。然而,本發明不限於執行512位元、256位元、128位元、64位元、32位元或16位元的資料操作之處理器或機器,且可應用於執行資料之調處或管理的任何處理器或機器。另外,以下描述提供實例,且隨附圖式展示出各種實例來達成例示目的。然而,此等實例不應在限制性意義上來理解,因為其僅僅意欲提供本發明之實施例之實例,而非提供本發明之實施例之所有可能的實行方案之詳盡清單。
雖然以下實例在執行單元及邏輯電路之情況下
描述指令處置及散佈,但本發明之其他實施例可藉由儲存於機器可讀的有形媒體上之資料或指令來實現,該等資料或指令在由機器執行時執行與本發明之至少一實施例一致的功能。在一實施例中,與本發明之實施例相關聯的功能體現於機器可執行指令中。指令可用來使由該等指令規劃的通用或專用處理器執行本發明之步驟。本發明之實施例可提供為電腦程式產品或軟體,其可包括上面儲存有指令之機器或電腦可讀媒體,該等指令可用來規劃電腦(或電子裝置)來執行根據本發明之實施例的一或多個操作。或者,本發明之實施例之步驟可由特定硬體組件來執行,該等特定硬體組件含有用於執行該等步驟的固定功能邏輯;或由已規劃電腦組件與固定功能硬體組件之任何組合來執行。
用來規劃邏輯來執行根據本發明之實施例的指令可儲存於系統中的記憶體中,諸如DRAM、快取記憶體、快閃記憶體或其他儲存體。此外,可經由網路或藉由其他電腦可讀媒體來散佈該等指令。因此,機器可讀媒體可包括用於以機器(例如,電腦)可讀的形式儲存或傳輸資訊之任何機構,但不限於:軟碟片、光碟、光碟片唯讀記憶體(CD-ROM),以及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體,或者用來在網際網路上經由電氣、光學、聲響或其他形式的傳播信號(例如,載波、紅外信號、數位信號等)來傳輸資訊之有形的機器可讀儲存體。因此,電腦可讀媒
體包括適於以機器(例如,電腦)可讀的形式儲存或傳輸電子指令或資訊之任何類型之有形的機器可讀媒體。
設計可經歷從產生到模擬到製造的各種級段。表示設計的資料可以許多方式來表示設計。首先,如在模擬中係有用的,可使用硬體描述語言或另一功能描述語言來表示硬體。另外,在設計過程的一些級段可產生具有邏輯及/或電晶體閘的電路層級模型。此外,大多數設計在一些級段達到表示各種裝置在硬體模型中的實體佈局之資料的層級。在使用習知半導體製造技術的情況下,表示硬體模型的資料可為指定各種特徵在遮罩之不同遮罩層上是否存在的資料,該等遮罩係用來產生積體電路。在設計之任何表示中,資料可儲存於任何形式的機器可讀媒體中。記憶體或者磁性或光學儲存體(諸如碟片)可為儲存經由光波或電波傳輸之資訊的機器可讀媒體,該光波或電波經調變或以其他方式產生來傳輸此資訊。當指示或攜載程式碼或設計的電載波被傳輸,達到執行電信號之複製、緩衝或重新傳輸的程度時,製作新的複本。因此,通訊提供者或網路提供者可在有形的機器可讀媒體上至少暫時儲存體現本發明之實施例之技術的物件,諸如編碼至載波中的資訊。
在現代處理器中,使用許多不同的執行單元來處理且執行多種程式碼與指令。並非所有指令係產生為均等的,因為一些指令完成速度更快,而其他指令可能需要許多時鐘週期來完成。指令的通量越快,處理器的整體效能越好。因此,使盡可能多的指令盡可能快地執行係有利的。
然而,有某些指令具有更大複雜性且需要更多的執行時間及處理器資源。例如,浮點指令、載入/儲存操作、資料移動等。
隨著更多的電腦系統用於網際網路、文字及多媒體應用中,隨時間推移已引入額外的處理器支援。在一實施例中,指令集可與一或多個電腦架構相關聯,其包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與異常處置,以及外部輸入及輸出(I/O)。
在一實施例中,指令集架構(ISA)可由一或多個微架構來實施,其包括用來實施一或多個指令集的處理器邏輯及電路。因此,具有不同微架構的處理器可共享共同指令集之至少一部分。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器及來自Advanced Micro Devices公司(Sunnyvale CA)的處理器實施幾乎相同的x86指令集版本(以及一些擴展,較新版本已新增該等擴展),但具有不同的內部設計。類似地,由其他處理器開發公司(諸如ARM Holdings公司、MIPS,或其被授權者或採用者)設計的處理器可共享共同指令集之至少一部分,但可包括不同的處理器設計。例如,ISA之相同暫存器架構可在不同微架構中使用新的或熟知的技術以不同方式實施,其中包括:專用實體暫存器、一或多個使用暫存器重新命名機構(例如,使用暫存器別名表(RAT)、重新排序緩衝器(ROB)及引退暫存器檔案)的動態分配實體暫存器。在一實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案,或可由
或不可由軟體程式設計師定址的其他暫存器組。
在一實施例中,指令可包括一或多個指令格式。在一實施例中,指令格式可指示各種欄位(位元之數目、位元之位置等)來指定:將要執行之操作,及運算元(將對其執行操作),以及其他。一些指令格式可進一步斷開,由指令模板(或子格式)定義。例如,給定指令格式之指令模板可定義成具有該指令格式之欄位的不同子集,及/或定義成具有以不同方式解譯的給定欄位。在一實施例中,使用指令格式(且在已定義的情況下,以該指令格式之指令模板中之一給定指令模板)來表達指令,且指令指定或指示了操作及運算元(將對其執行操作)。
科學、金融、自動向量化通用RMS(辨識、採擷與合成)以及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊調處)可能需要對大量資料項目執行同一操作)。在一實施例中,單指令多重資料(SIMD)代表使處理器對多個資料元件執行同一操作的指令類型。SIMD技術可用於可將暫存器中的位元以邏輯方式分成許多固定大小或可變大小的資料元件之處理器,該等資料元件中之每一者表示獨立值。例如,在一實施例中,64位元暫存器中之位元可被組織為含有4個獨立的16位元資料元件之來源運算元,該等資料元件中之每一者表示獨立的16位元值。此資料類型被稱為『緊縮』資料類型或『向量』資料類型,且為此資料類型的運算元被稱為緊縮資料運算元或向量運算元。在一實施例中,緊縮資
料項目或向量可為儲存於單個暫存器內的緊縮資料元件之序列;且緊縮資料運算元或向量運算元可為SIMD指令(或『緊縮』資料指令或『向量』指令)之來源或目的地運算元。在一實施例中,SIMD指令指定將對兩個來源運算元執行,來產生目的地向量運算元(亦稱為結果向量運算元)的單個向量運算,該目的地向量運算元具有相同或不同大小、具有相同或不同數目個資料元件,且按相同或不同的資料元件次序。
SIMD技術(諸如以下處理器所使用的技術:Intel® CoreTM處理器,其具有包括x86、MMXTM、串流SIMD擴展(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令的指令集;ARM處理器,諸如ARM Cortex®系列處理器,其具有包括向量浮點(VFP)及/或NEON指令的指令集;以及MIPS處理器,諸如由中國科學院的計算技術研究所(ICT)開發出的Loongson系列處理器)已使應用程式效能的顯著改良成為可能(CoreTM and MMXTM係Intel公司(Santa Clara,Calif)的注冊商標或商標)。
在一實施例中,目的地及來源暫存器/資料係表示對應資料或操作之來源或目的地之一般用詞。在一些實施例中,其可由暫存器、記憶體或具有除所述名稱或功能之外的其他名稱或功能之其他儲存區域來實施。例如,在一實施例中,「DEST1」可為暫時儲存暫存器或其他儲存區域,而「SRC1」及「SRC2」可為第一及第二來源儲存暫存器或其他儲存區域,以此類推。在其他實施例中,SRC及
DEST儲存區域中之兩者或兩者以上可對應於同一儲存區域(例如,SIMD暫存器)內的不同資料儲存元件。在一實施例中,來源暫存器中之一者亦可充當目的地暫存器,例如,藉由將對第一及第二來源資料執行的操作之結果寫回至該等兩個來源暫存器中之一者,該一者充當目的地暫存器。
圖1A係由處理器形成的示範性電腦系統之方塊圖,該處理器包括執行根據本發明之一實施例的指令之執行單元。根據本發明,諸如在本文中描述之實施例中,系統100包括諸如處理器102之組件,來使用執行單元,該等執行單元包括執行用於處理資料的演算法之邏輯。系統100表示基於PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器(可自Intel公司(Santa Clara,California)獲得)的處理系統,但亦可使用其他系統(包括具有其他微處理器之PC、工程工作站、機上盒及類似者)。在一實施例中,範例系統100可執行WINDOWSTM作業系統(可自Microsoft公司(Redmond,Washington)獲得)之一版本,但亦可使用其他作業系統(例如,UNIX及Linux)、嵌入式軟體,及/或圖形使用者介面。因此,本發明之實施例不需要硬體電路與軟體之任何特定組合。
實施例不限於電腦系統。本發明之替代性實施例可用於其他裝置中,諸如手持式裝置及嵌入式應用。手持式裝置之一些實例包括蜂巢式電話、網際網路協定裝置、數位攝影機、個人數位助理(PDA)及手持式PC。嵌入式應
用可包括微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒(set-top box)、網路集線器(network hub)、廣域網路(WAN)、交換器(switch),或可執行根據至少一實施例之一或多個指令的任何其他系統。
圖1A係由處理器102形成的示範性電腦系統100之方塊圖,該處理器包括執行演算法來執行根據本發明之一實施例的至少一指令之一或多個執行單元108。可在單處理器桌面或伺服器系統之情況下描述一實施例,但替代性實施例可包括於多處理器系統中。系統100係『集線器』系統架構之實例。電腦系統100包括處理資料信號的處理器102。例如,處理器102可為複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器、極長指令字(VLIW)微處理器,實施指令集之組合的處理器,或任何其他處理器裝置,諸如數位信號處理器。處理器102耦接至處理器匯流排110,該處理器匯流排可在處理器102與系統100中的其他組件之間傳輸資料信號。系統100之元件執行其習知功能,該等功能係熟習此項技術者所熟知的。
在一實施例中,處理器102包括1階(L1)內部快取記憶體104。取決於架構,處理器102可具有單個內部快取記憶體或多階內部快取記憶體。或者,在另一實施例中,快取記憶體可駐留在處理器102外部。取決於特定實行方案及需要,其他實施例亦可包括內部與外部快取記憶體兩者之組合。暫存器檔案106可在各種暫存器中儲存不同類型之資料,暫存器包括整數暫存器、浮點暫存器、狀態暫
存器及指令指標器暫存器。
包括執行整數與浮點操作的邏輯之執行單元108亦駐留在處理器102中。處理器102亦包括儲存用於某些巨指令之微碼的微碼(ucode)ROM。對於一實施例,執行單元108包括處置緊縮指令集109之邏輯。藉由在通用處理器102之指令集中包括緊縮指令集,連同執行指令的相關電路,可使用通用處理器102中的緊縮資料來執行許多多媒體應用所使用的操作。因此,藉由使用處理器之資料匯流排之全部寬度來對緊縮資料執行操作,可加速且更高效地執行許多多媒體應用。此可消除對跨越處理器之資料匯流排傳遞較小的資料單元來以一次一個資料元件的方式執行一或多個操作之需要。
執行單元108之替代性實施例亦可用於微控制器、嵌入式處理器、圖形裝置、DSP及其他類型之邏輯電路中。系統100包括記憶體120。記憶體120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其他記憶體裝置。記憶體120可儲存由資料信號表示之指令及/或資料,其可由處理器102執行。
系統邏輯晶片116耦接至處理器匯流排110及記憶體120。系統邏輯晶片116在例示實施例中係記憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110與MCH 116通訊。MCH 116提供高頻寬記憶體路徑118至用於指令與資料儲存且用於圖形命令、資料及紋理的儲存之
記憶體120。MCH 116將在處理器102、記憶體120及系統100中的其他組件之間導引資料信號且在處理器102、記憶體120及系統I/O 122之間橋接資料信號。在一些實施例中,系統邏輯晶片116可提供圖形埠,用於耦接至圖像控制器112。MCH 116經由記憶體介面118耦接至記憶體120。圖形卡112經由加速圖形埠(AGP)互連114耦接至MCH 116。
系統100使用專屬集線器介面匯流排122來將MCH 116耦接至I/O控制器集線器(ICH)130。ICH 130提供經由局部I/O匯流排與一些I/O裝置的直接連接。局部I/O匯流排係高速I/O匯流排,用於將周邊裝置連接至記憶體120、晶片組及處理器102。一些實例係音訊控制器、韌體集線器(快閃BIOS)128、無線收發器126、資料儲存體124、含有使用者輸入及鍵盤介面的舊式I/O控制器、諸如通用串列匯流排(USB)之串列擴展埠,以及網路控制器134。資料儲存裝置124可包含硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置或其他大容量儲存裝置。
對於系統之另一實施例,根據一實施例之指令可與系統單晶片一起使用。系統單晶片之一實施例包含處理器及記憶體。用於一此種系統的記憶體係快閃記憶體。快閃記憶體可與處理器及其他系統組件位於同一晶粒上。另外,諸如記憶體控制器或圖形控制器之其他邏輯區塊亦可位於系統單晶片上。
圖1B例示出實施本發明之一實施例之原理的資
料處理系統140。熟習此項技術者容易瞭解,在不背離本發明之實施例之範疇的情況下,本文中描述之實施例可與替代性處理系統一起使用。
電腦系統140包含能夠執行根據一實施例之至少一指令的處理核心159。對於一實施例,處理核心159表示任何類型之架構(包括但不限於CISC、RISC或VLIW型架構)之處理單元。處理核心159亦可適合於以一或多個處理技術來製造,且藉由在機器可讀媒體上足夠詳細地表示,可適合於促進該製造。
處理核心159包含執行單元142、暫存器檔案145之集合以及解碼器144。處理核心159亦可包括額外電路(圖中未示),其並非理解本發明之實施例所必需的。執行單元142係用於執行處理核心159接收到之指令。除了執行典型處理器指令,執行單元142還可執行緊縮指令集143中的指令,以便對緊縮資料格式執行操作。緊縮指令集143包括用於執行本發明之實施例之指令以及其他緊縮指令。執行單元142藉由內部匯流排耦接至暫存器檔案145。暫存器檔案145表示處理核心159上用於儲存資訊(包括資料)之儲存區域。如向前所提及,應理解,用於儲存緊縮資料之儲存區域並不關鍵。執行單元142耦接至解碼器144。解碼器144係用於將處理核心159接收到之指令解碼成控制信號及/或微碼進入點。響應於此等控制信號及/或微碼進入點,執行單元142執行適當的操作。在一實施例中,解碼器係用來解譯指令之運算碼,該運算碼將指示應對該指令內所
指示之對應資料執行什麼操作。
處理核心159與匯流排141耦接以便與各種其他系統裝置通訊,其他系統裝置包括但不限於,例如,同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、高載快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/緊密快閃(CF)卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151,以及替代性匯流排主控介面152。在一實施例中,資料處理系統140亦可包含I/O橋接器154,以便經由I/O匯流排153與各種I/O裝置通訊。此等I/O裝置可包括但不限於,例如,通用非同步接收器/發射器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157及I/O擴展介面158。
資料處理系統140之一實施例提供行動、網路及/或無線通訊及能夠執行SIMD操作之處理核心159,該等SIMD操作包括向量混合與置換功能。處理核心159可由各種音訊、視訊、成像及通訊演算法規劃,該等演算法包括:離散變換,諸如沃爾什哈達馬德變換、快速傅里葉變換(FFT)、離散余弦變換(DCT)及其個別逆變換;壓縮/解壓縮技術,諸如色彩空間變換、視訊編碼運動估計或視訊解碼運動補償;以及調變/解調變(MODEM)功能,諸如脈衝編碼調變(PCM)。
圖1C例示出能夠執行提供向量混合與置換功能的指令之資料處理系統之另一替代性實施例。根據一替代
性實施例,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167及輸入/輸出系統168。輸入/輸出系統168可任擇地耦接至無線介面169。SIMD共處理器161能夠執行操作,包括根據一實施例之指令。處理核心170可適合於以一或多個處理技術來製造,且藉由在機器可讀媒體上足夠詳細地表示,可適合於促進包括處理核心170之資料處理系統160的全部或部分之製造。
對於一實施例,SIMD共處理器161包含執行單元162及暫存器檔案164之集合。主處理器166之一實施例包含解碼器165,用來辨識指令集163之指令(包括根據一實施例之指令)以便由執行單元162執行。對於替代性實施例,SIMD共處理器161亦可包含解碼器165B之至少一部分,用來解碼指令集163之指令。處理核心170亦可包括額外電路(圖中未示),其並非理解本發明之實施例所必需的。
在操作中,主處理器166執行資料處理指令之串流,該等資料處理指令控制一般類型之資料處理操作,包括與快取記憶體167及輸入/輸出系統168之互動。SIMD共處理器指令嵌入於資料處理指令之串流內。主處理器166之解碼器165辨識出此等SIMD共處理器指令係附接之SIMD共處理器161應執行之類型。因此,主處理器166在共處理器匯流排171上發佈此等SIMD共處理器指令(或表示SIMD共處理器指令之控制信號),附接之SIMD共處理器自該共處理器匯流排接收此等SIMD共處理器指令。
在此情況下,SIMD共處理器161將接受且執行發給該SIMD共處理器的任何所接收SIMD共處理器指令。
可經由無線介面169接收資料,以便由SIMD共處理器指令處理。對於一實例,可接收呈數位信號形式的語音通訊,其可由SIMD共處理器指令處理來重新產生代表語音通訊的數位音訊樣本。對於另一實例,可接收呈數位位元串流形式的壓縮音訊及/或視訊,其可由SIMD共處理器指令處理來重新產生數位音訊樣本及/或運動視訊圖框。對於處理核心170之一實施例,主處理器166及SIMD共處理器161係整合成單個處理核心170,其包含執行單元162、暫存器檔案164之集合及解碼器165,該解碼器係用來辨識指令集163之指令(包括根據一實施例之指令)。
圖2係處理器200之微架構之方塊圖,該處理器包括執行根據本發明之一實施例之指令的邏輯電路。在一些實施例中,可實施根據一實施例之指令來對資料元件進行操作,該等資料元件具有位元組、字、雙字、四字等大小,以及諸如單精度及雙精度整數及浮點資料類型之資料類型。在一實施例中,循序前端201係處理器200之部分,其擷取將要執行之指令且使該等指令準備好稍後在處理器管線中使用。前端201可包括若干單元。在一實施例中,指令預擷取器226自記憶體擷取指令且將其饋入至指令解碼器228,指令解碼器228又解碼或解譯該等指令。例如,在一實施例中,解碼器將所接收指令解碼成機器可執行之一或多個操作,稱為「微指令」或「微操作」(亦稱為micro
op或uop)。在其他實施例中,解碼器將指令剖析成運算碼及對應的資料與控制欄位,由微架構用來執行根據一實施例之操作。在一實施例中,追蹤快取記憶體230獲得經解碼的微操作(uop)且將其組譯成程式排序序列或在微操作佇列234中追蹤以便執行。當追蹤快取記憶體230遇到複雜指令時,微碼ROM 232提供完成操作所需要的微操作。
一些指令被轉換成單個微操作(micro-op),而其他指令需要若干微操作來完成完整的操作。在一實施例中,若需要超過4個微操作來完成指令,則解碼器228存取微碼ROM 232來完成該指令。對於一實施例,在指令解碼器228處可將指令解碼成少量微操作以便處理。在另一實施例中,若需要許多微操作來完成操作,則可將指令儲存於微碼ROM 232內。追蹤快取記憶體230代表進入點可規劃邏輯陣列(PLA),其用來判定正確的微指令指標器以便自微碼ROM 232讀取微碼序列來完成根據本發明之一實施例之一或多個指令。在微碼ROM 232結束針對指令之定序微操作之後,機器之前端201重新繼續自追蹤快取記憶體230擷取微操作。
亂序執行引擎203係使指令準備好執行之處。亂序執行邏輯具有許多緩衝器,用來在指令沿著管線進行且得以排程以便執行時平滑化且重新排序指令流以使效能最佳化。分配器邏輯分配每一微操作為了執行所需要的機器緩衝器及資料。暫存器重新命名邏輯將邏輯暫存器重新命名至暫存器檔案中的項目上。分配器亦在指令排程器前為
兩個微操作佇列(一個用於記憶體操作且一個用於非記憶體操作)中之一者的每一微操作分配一項目:記憶體排程器、快速排程器202、緩慢/一般浮點排程器204及簡單浮點排程器206。微操作排程器202、204、206判定微操作何時準備執行,此判定係基於:其相依性輸入暫存器運算元來源是否準備就緒及微操作為了完成其操作所需要的執行資源的可用性。一實施例之快速排程器202可在主時鐘週期的每一半排程,而其他排程器每個主處理器時鐘週期可僅排程一次。該等排程器針對分派埠進行仲裁來排程微操作以便執行。
暫存器檔案208、210位於排程器202、204、206與執行區塊211中的執行單元212、214、216、218、220、222、224之間。對於整數及浮點操作,分別有獨立的暫存器檔案208、210。一實施例之每一暫存器檔案208、210亦可包括繞過網路,該網路可繞過尚未寫入至暫存器檔案之剛剛完成的結果或將其或進送至新的相依性微操作。整數暫存器檔案208及浮點暫存器檔案210亦能夠相互傳達資料。對於一實施例,整數暫存器檔案208分成兩個分開的暫存器檔案,一個暫存器檔案用於資料之低位32個位元且第二暫存器檔案用於資料之高位32個位元。一實施例之浮點暫存器檔案210具有128位元寬的項目,因為浮點指令通常具有寬度為64至128個位元的運算元。
執行區塊211含有執行單元212、214、216、218、220、222、224,在此等執行單元中實際執行指令。此部分
包括暫存器檔案208、210,其儲存微指令需要執行之整數及浮點資料運算元。一實施例之處理器200包含許多執行單元:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、緩慢ALU 220、浮點ALU 222、浮點移動單元224。對於一實施例,浮點執行區塊222、224執行浮點、MMX、SIMD及SSE或其他操作。一實施例之浮點ALU 222包括64位元乘64位元的浮點除法器,來執行除法、平方根及餘數微操作。對於本發明之實施例,涉及浮點值的指令可由浮點硬體來處置。在一實施例中,ALU操作發生在高速ALU執行單元216、218。一實施例之快速ALU 216、218可執行快速操作,其有效延時為時鐘週期的一半。對於一實施例,大多數複雜的整數操作發生在緩慢ALU 220,因為緩慢ALU 220包括用於長延時型操作之整數執行硬體,諸如乘法器、移位、旗標邏輯及分支處理。記憶體載入/儲存操作由AGU 212,214執行。對於一實施例,在對64位元的資料運算元執行整數操作的情況下描述整數ALU 216、218、220。在替代性實施例中,可實施ALU 216、218、220來支援多種資料位元,包括16、32、128、256等。類似地,可實施浮點單元222、224來支援具有各種寬度之位元的一系列運算元。對於一實施例,浮點單元222、224可結合SIMD及多媒體指令對128個位元寬的緊縮資料運算元進行操作。
在一實施例中,微操作排程器202、204、206在父代負載完成執行之前分派相依性操作。因為在處理器
200中推測式地排程並執行微操作,所以處理器200亦包括處置記憶體遺漏的邏輯。若資料負載在資料快取記憶體中遺漏,則管線中可能有相依性操作正在進行,該等操作給排程器留下暫時不正確的資料。重新執行機構追蹤並重新執行使用不正確資料的指令。僅需要重新執行相依性操作,且允許獨立操作完成。處理器之一實施例之排程器及重新執行機構亦經設計來捕捉在遮罩暫存器與通用暫存器之間提供轉換的指令。
「暫存器」一詞可代表用作指令之一部分來識別運算元的板上處理器儲存位置。換言之,暫存器可為從處理器外部(從程式設計師的角度)可使用的暫存器。然而,一實施例之暫存器的含義不應限於特定類型之電路。取而代之,一實施例之暫存器能夠儲存並提供資料並且執行本文中描述之功能。可使用任何數種不同技術藉由電路在處理器內實施本文中描述之暫存器,諸如專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專用暫存器與動態分配實體暫存器之組合等。在一實施例中,整數暫存器儲存32個位元的整數資料。一實施例之暫存器亦包含用於緊縮資料的8個多媒體SIMD暫存器。對於以下論述,應理解暫存器係經設計來保存緊縮資料的資料暫存器,諸如具備MMX技術的功能之微處理器(來自Intel公司(Santa Clara,California))中的64個位元寬的MMXTM暫存器(在以下情況下亦稱為『mm』暫存器)。此等MMX暫存器(整數與浮點形式均可獲得)可對伴隨著SIMD及SSE指令的緊縮
資料元件進行操作。類似地,與SSE2、SSE3、SSE4或更先進(一般稱為「SSEx」)技術之128個位元寬的XMM暫存器亦可用來保存此等緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料時,暫存器不需要在兩個資料類型之間區分。在一實施例中,整數及浮點係包含於相同暫存器檔案或不同暫存器檔案中。此外,在一實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器中。
在以下諸圖的實例中,描述了許多資料運算元。圖3A例示出根據本發明之一實施例之多媒體暫存器中的各種緊縮資料類型表示。圖3A例示出用於128個位元寬的運算元之緊縮位元組310、緊縮字320及緊縮雙字(dword)330之資料類型。此實例之緊縮位元組格式310係128個位元長且含有16個緊縮位元組資料元件。位元組在此處定義為8個位元的資料。每一位元組資料元件之資訊儲存於位元組0的位元7至位元0中、位元組1的位元15至位元8中、位元組2的位元32至位元16中,且最後儲存於位元組15的位元120至位元127中。因此,在暫存器中使用所有可用的位元。此儲存配置增加了處理器之儲存效率。同樣,在存取了16個資料元件後,現在可平行地對16個資料元件執行一操作。
通常,資料元件係單獨的資料片段,其與具有相同長度的其他資料元件一起儲存於單個暫存器或記憶體位置中。在與SSEx技術有關的緊縮資料序列中,儲存於XMM暫存器中的資料元件之數目為128個位元除以單獨資料元
件之位元長度。類似地,在與MMX及SSE技術有關的緊縮資料序列中,儲存於MMX暫存器中的資料元件之數目為64個位元除以單獨資料元件之位元長度。雖然圖3A中例示出的資料類型係128個位元長,但本發明之實施例亦可對64個位元寬、256個位元寬、512個位元寬或其他大小的運算元進行操作。此實例之緊縮字格式320係128個位元長且含有8個緊縮字資料元件。每一緊縮字含有16個位元的資訊。圖3A之緊縮雙字格式330係128個位元長且含有4個緊縮雙字資料元件。每一緊縮雙字資料元件含有32個位元的資訊。緊縮雙字係128個位元長且含有2個緊縮雙字資料元件。
圖3B例示出替代性的暫存器中指令儲存格式。每一緊縮資料可包括一個以上的獨立資料元件。例示出三個緊縮資料格式:緊縮半字(packed half)341、緊縮單字(packed single)342及緊縮雙字(packed double)343。緊縮半字341、緊縮單字342及緊縮雙字343之一實施例含有定點資料元件。對於替代性實施例,緊縮半字341、緊縮單字342及緊縮雙字343中之一或多者可含有浮點資料元件。緊縮半字341之一替代性實施例係128個位元長,含有8個16位元的資料元件。緊縮單字342之一實施例係128個位元長,且含有4個32位元的資料元件。緊縮雙字343之一實施例係128個位元長,且含有2個64位元的資料元件。應瞭解,此等緊縮資料格式可進一步擴展至其他暫存器長度,例如,86個位元、160個位元、192個位元、224個位
元、256個位元、512個位元或以上。
圖3C例示出根據本發明之一實施例之多媒體暫存器中的各種帶正負號(signed)及不帶正負號(unsigned)的緊縮資料類型表示。不帶正負號的緊縮位元組表示344例示出不帶正負號的緊縮位元組在SIMD暫存器中的儲存。每一位元組資料元件的資訊儲存於位元組0零的位元7至位元0中、位元組1的位元15至位元8中、位元組2的位元32至位元16中,等等,且最後儲存於位元組15的位元120至位元127中。因此,在暫存器中使用所有可用的位元。此儲存配置可增加處理器之儲存效率。同樣,在存取了16個資料元件後,現在可平行地對16個資料元件執行一操作。帶正負號的位元組表示345例示出帶正負號的位元組之儲存。注意,每個位元組資料元件之第8個位元係正負號指示符。不帶正負號的緊縮字表示346例示出在SIMD暫存器中如何儲存字7至字0。帶正負號的緊縮字表示347類似於不帶正負號的緊縮字暫存器中表示346。注意,每個字資料元件之第16個位元係正負號指示符。不帶正負號的緊縮雙字表示348例示出如何儲存雙字資料元件。帶正負號的緊縮雙字表示349類似於不帶正負號的緊縮雙字暫存器中表示348。注意,必需的正負號位元係每一雙字資料元件之第32個位元。
圖3D係對操作編碼(運算碼)格式360之一實施例之描述,該格式具有32個或更多位元及暫存器/記憶體運算元定址模式,其與「Intel® 64及IA-32 Intel架構軟體
開發者指南組合卷2A與2B:指令集參考A-Z」(在全球資訊網(www)上的intel.com/products/processor/manuals/,可自Intel公司(Santa Clara,CA)獲得)中描述之運算碼格式類型相對應。在一實施例中,且指令可由欄位361及362中之一或多者來編碼。可識別每個指令的至多兩個運算元位置,包括至多兩個來源運算元識別符364及365。對於一實施例,目的地運算元識別符366與來源運算元識別符364相同,而在其他實施例中,該等識別符不同。對於替代性實施例,目的地運算元識別符366與來源運算元識別符365相同,而在其他實施例中,該等識別符不同。在一實施例中,指令之結果覆寫由來源運算元識別符364及365識別的來源運算元中之一者,而在其他實施例中,識別符364對應於來源暫存器元件且識別符365對應於目的地暫存器元件。對於一實施例,運算元識別符364及365可用來識別32位元或64位元的來源及目的地運算元。
圖3E係對操作編碼(運算碼)格式370之另一替代性實施例之描述,該格式具有40個或更多位元。運算碼格式370與運算碼格式360相對應且包含可選擇的前綴位元組378。根據一實施例之指令可由欄位378、371及372中之一或多者來編碼。藉由來源運算元識別符374及375且藉由前綴位元組378,可識別每個指令的至多兩個運算元位置。對於一實施例,前綴位元組378可用來識別32位元或64位元的來源及目的地運算元。對於一實施例,目的地運算元識別符376與來源運算元識別符374相同,而在其
他實施例中,該等識別符不同。對於替代性實施例,目的地運算元識別符376與來源運算元識別符375相同,而在其他實施例中,該等識別符不同。在一實施例中,指令對由運算元識別符374及375識別的運算元中之一或多者進行操作,且指令之結果覆寫由運算元識別符374及375識別的一或多個運算元,而在其他實施例中,由識別符374及375識別的運算元被寫入至另一暫存器中的另一資料元件。運算碼格式360及370允許暫存器至暫存器定址、記憶體至暫存器定址、暫存器靠記憶體定址、暫存器靠暫存器定址、暫存器靠立即定址、暫存器至記憶體定址,該定址係部分由MOD欄位363及373且由可選擇的比例-索引-基址及位移位元組來指定。
接下來轉到圖3F,在一些替代性實施例中,可經由共處理器資料處理(CDP)指令來執行64位元(或128位元,或256位元,或512位元或更多)的單指令多資料(SIMD)算術運算。操作編碼(運算碼)格式380描述一此種CDP指令,其具有CDP運算碼欄位382及389。對於替代性實施例,操作可由欄位383、384、387及388中之一或多者來編碼。可識別每個指令的至多三個運算元位置,包括至多兩個來源運算元識別符385及390及一個目的地運算元識別符386。共處理器之一實施例可對8、16、32及64位元的值進行操作。對於一實施例,對整數資料元件執行指令。在一些實施例中,可依條件而定使用條件欄位381來執行指令。對於一些實施例,來源資料大小可由欄位383來編
碼。在一些實施例中,零(Z)、負(N)、進位(C)及溢位(V)偵測可在SIMD欄位上完成。對於一些實施例,飽和類型可由欄位384來編碼。
接下來轉到圖3G,其係對根據另一實施例之提供向量混合與置換功能的另一替代性操作編碼(運算碼)格式397之描述,該格式與「Intel®先進向量擴展程式設計參考」(在全球資訊網(www)上的intel.com/products/processor/manuals/,可自Intel公司(Santa Clara,CA)獲得)中描述之運算碼格式類型相對應。
原始x86指令集提供1位元組的運算碼,各種格式之位址字節及立即運算元包含於額外位元組中,自第一「運算碼」位元組已知其存在。另外,有某些位元組值被保留,作為運算碼之修飾符(稱為前綴,因為其必須置於指令之前)。當256個運算碼位元組(包括此等特殊前綴值)之原始工具板被用完時,單個位元組係作為逸出被用於256個運算碼之新集合。因為新增了向量指令(例如SIMD),所以產生對更多運算碼之需要,且「兩個位元組」的運算碼對照表亦不夠,即使經由使用前綴予以擴充。為此目的,在額外對照表中新增新的指令,其將2個位元組加上可選擇的前綴用作識別符。
另外,為了促進64位元模式下的額外暫存器,在前綴與運算碼(及判定該運算碼所必需的任何逸出位元組)之間可使用額外前綴(稱為「REX」)。在一實施例中,REX可具有4個「有效負載」位元,來指示在64位元模式
下使用額外暫存器。在其他實施例中,REX可具有少於或超過4個位元。至少一指令集之一般格式(其一般與格式360及/或格式370相對應)係由以下來一般例示出:[prefixes][rex]escape[escape2]opcode modrm(等)。
運算碼格式397與運算碼格式370相對應,且包含可選擇的VEX前綴位元組391(在一實施例中由C4(十六進位)或C5(十六進位)開始)來替換大多數其他常用的舊式指令前綴位元組及逸出碼。例如,以下例示出使用兩個欄位來編碼指令之實施例,當原始指令中不存在第二逸出碼時可使用該實施例。在以下例示出的實施例中,舊式逸出係由新的逸出值來表示,舊式前綴完全壓縮為「有效負載」位元組之部分,舊式前綴被回收且可用於未來的擴充,且新增了新特徵(例如,增加的向量長度及額外來源暫存器指定符)。
插圖中文字翻譯:new features新特徵
當原始指令中存在第二逸出碼時,或當需要使用REX欄位中之額外位元(例如,XB及W欄位)時。在以下例示出之替代性實施例中,與以上類似地壓縮第一舊式逸出及逸出前綴,且將第二逸出碼壓縮於「對照表」欄位中,其中可獲得未來的對照表或特徵空間,且再次新增了新特
徵(例如,增加的向量長度及額外來源暫存器指定符)。
插圖中文字翻譯:new features新特徵
根據一實施例之指令可由欄位391及392中之一或多者來編碼。藉由欄位391,結合來源運算元識別符374及375,且結合可選擇的比例-索引-基址(SIB)識別符393、可選擇的位移識別符394及可選擇的立即位元組395,可識別每個指令的至多四個運算元位置。對於一實施例,VEX前綴位元組391可用來識別32位元或64位元的來源及目的地運算元及/或128位元或256位元的SIMD暫存器或記憶體運算元。對於一實施例,運算碼格式397所提供的功能與運算碼格式370重複,而在其他實施例中,該等功能不同。運算碼格式397及370允許暫存器至暫存器定址、記憶體至暫存器定址、暫存器靠記憶體定址、暫存器靠暫存器定址、暫存器靠立即定址、暫存器至記憶體定址,該定址係部分由MOD欄位373且由可選擇的(SIB)識別符393、可選擇的位移識別符394及可選擇的立即位元組395來指定。
接下來轉到圖3H,其係對根據另一實施例之提供向量混合與置換功能的另一替代性操作編碼(運算碼)格式398之描述。運算碼格式398與與運算碼格式370及397
相對應,且包含可選擇的EVEX前綴位元組396(在一實施例中由62(十六進位)開始)來替換大多數其他常用的舊式指令前綴位元組及逸出碼且提供額外功能。根據一實施例之指令可由欄位396及392中之一或多者來編碼。藉由欄位396,結合來源運算元識別符374及375,且結合可選擇的比例-索引-基址(SIB)識別符393、可選擇的位移識別符394及可選擇的立即位元組395,可識別每個指令的至多四個運算元位置。對於一實施例,EVEX前綴位元組396可用來識別32位元或64位元的來源及目的地運算元及/或128位元、256位元或512位元的SIMD暫存器或記憶體運算元。對於一實施例,運算碼格式398所提供的功能與運算碼格式370或397重複,而在其他實施例中,該等功能不同。運算碼格式398允許暫存器至暫存器定址、記憶體至暫存器定址、暫存器靠記憶體定址、暫存器靠暫存器定址、暫存器靠立即定址、暫存器至記憶體定址(藉由遮罩),該定址係部分由MOD欄位373且由可選擇的(SIB)識別符393、可選擇的位移識別符394及可選擇的立即位元組395來指定。至少一指令集之一般格式(其一般與格式360及/或格式370相對應)係由以下來一般例示出:evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]。
對於一實施例,根據EVEX格式398來編碼的指令可具有額外「有效負載」位元,該等位元可用來在遮罩暫存器與通用暫存器之間提供轉換,其具有額外的新特
徵,諸如使用者可組配的遮罩暫存器,或額外運算元,或從128位元、256位元或512位元的向量暫存器或更多暫存器(從中進行選擇)中的選擇等。
例如,VEX格式397或EVEX格式398可用來提供向量混合與置換功能。另外,其中VEX格式397或EVEX格式398可用來味128位元、256位元、512位元或更大(或更小)的向量暫存器提供向量混合與置換功能。
提供向量混合與置換功能的實例指令係由以下實例例示出:
可發現此等指令可用於如下資料,其儲存及/或定位方式需要在向量暫存器中的重新排列,以便應用所要的記憶體及/或SIMD算術運算,例如,位於未對準位址的資料,或位於兩個個別快取列之末尾及開頭的資料,或位於表的各獨立項目中的資料,或跨越影像中之區塊邊界的資料等,藉由提供向量混合與置換功能的指令與邏輯,可在向量暫存器中高效地重新排列該等資料。
圖4A係例示出根據本發明之至少一實施例之循序管線,以及暫存器重新命名級段、亂序發佈/執行管線的方塊圖。圖4B係例示出循序架構核心,以及暫存器重新命名邏輯、亂序發佈/執行邏輯之方塊圖,上述各者將包括於根據本發明之至少一實施例的處理器中。圖4A中之實線方框例示出循序管線,而虛線方框例示出暫存器重新命名級段、亂序發佈/執行管線。類似地,圖4B中之實線方框例示出循序架構邏輯,而虛線方框例示出暫存器重新命名邏輯與亂序發佈/執行邏輯。
在圖4A中,處理器管線400包括擷取級段402、長度解碼級段404、解碼級段406、分配級段408、重新命名級段410、排程(亦稱為分派或發佈)級段412、暫存器讀取/記憶體讀取級段414、執行級段416、回寫/記憶體寫入級段418、異常處置級段422及確認級段424。
在圖4B中,箭頭表示兩個或兩個以上單元之間的耦接,且箭頭的方向指示該等單元之間的資料流的方向。圖4B展示出處理器核心490包括耦接至執行引擎單元450之前端單元430,且兩個單元均耦接至記憶體單元470。
前端單元430包括耦接至指令快取記憶體單元434之分支預測單元432,指令快取記憶體單元434耦接至指令轉譯後備緩衝器(TLB)436,指令TLB 436耦接至指令擷取單元438,指令擷取單元438耦接至解碼單元440。解碼單元(或解碼器)可解碼指令,且產生一或多個微操作、微碼進入點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。可使用各種不同機構來實施解碼器。合適的機構之實例包括但不限於查找表、硬體實行方案、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。指令快取記憶體單元434進一步耦接至記憶體單元470中的2階(L2)快取記憶體單元476。解碼單元440耦接至執行引擎單元450中的重新命名/分配器單元452。
執行引擎單元450包括重新命名/分配器單元452,其耦接至引退(retirement)單元454及一或多個排程器單元456之集合。排程器單元456表示任何數目個不同排程器,其中包括保留站、中央指令視窗等。排程器單元456耦接至實體暫存器檔案單元458。實體暫存器檔案單元458中之每一者表示一或多個實體暫存器檔案,其中不同的實體暫存器檔案單元儲存一或多個不同的資料類型,諸如純
量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等、狀態(例如,指令指標器,即下一個待執行指令的位址)等。引退單元454與實體暫存器檔案單元458重疊,以例示出可實施暫存器重新命名及亂序執行的各種方式(例如,使用重新排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器對照表及暫存器集區等)。通常,架構暫存器從處理器外部或從程式設計師的角度可見。暫存器不限於任何已知特定類型之電路。各種不同類型之暫存器係適合的,只要其能夠儲存並提供如本文中所描述之資料即可。適合的暫存器至之實例包括但不限於專用實體暫存器、使用暫存器重新命名的動態分配實體暫存器、專用暫存器與動態分配實體暫存器之組合等。引退單元454及實體暫存器檔案單元458耦接至執行叢集460。執行叢集460包括一或多個執行單元462之集合及一或多個記憶體存取單元464之集合。執行單元462可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行運算。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元456、實體暫存器檔案單元458及執行叢集460被展示為可能係多個,因為某些實施例針對某些類型之資料/運算產生獨立的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮
點管線,及/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集;且在獨立的記憶體存取管線的情況下,所實施的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元464)。亦應理解,在使用獨立的管線之情況下,此等管線中之一或多者可為亂序發佈/執行而其餘管線可為循序的。
記憶體存取單元464之集合耦接至記憶體單元470,記憶體單元470包括耦接至資料快取記憶體單元474的資料TLB單元472,資料快取記憶體單元474耦接至2階(L2)快取記憶體單元476。在一示範性實施例中,記憶體存取單元464可包括載入單元、儲存位址單元及儲存資料單元,其中每一者耦接至記憶體單元470中的資料TLB單元472。L2快取記憶體單元476耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由實例,示範性暫存器重新命名亂序發佈/執行核心架構可將管線400實施如下:1)指令擷取438執行擷取級段402及長度解碼級段404;2)解碼單元440執行解碼級段406;3)重新命名/分配器單元452執行分配級段408及重新命名級段410;4)排程器單元456執行排程級段412;5)實體暫存器檔案單元458及記憶體單元470執行暫存器讀取/記憶體讀取級段414;執行叢集460執行執行級段416;6)記憶體單元470及實體暫存器檔案單元458執行回寫/記憶體寫入級段418;7)異常處置級段422中可涉及各種單元;及8)引退單元454及實體暫存器檔案單元458
執行確認級段424。
核心490可支援一或多個指令集(例如,x86指令集(以及一些擴展,較新版本已新增該等擴展);MIPS Technologie公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(以及可選擇的額外擴展,諸如NEON))。
應理解,該核心可支援多執行緒處理(multithreading)(執行操作或執行緒之兩個或兩個以上平行集合),且可以多種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理的各執行緒中之每一者提供一邏輯核心)或上述各者之組合(例如,經時間切割之擷取及解碼以及隨後同時的多執行緒處理,諸如在Intel®超多執行緒處理(Hyperthreading)技術中)。
雖然在亂序執行的情況下描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所例示實施例亦包括獨立的指令與資料快取記憶體單元434/474以及共享的L2快取記憶體單元476,但替代性實施例可具有用於指令與資料兩者的單個內部快取記憶體,諸如1階(L1)內部快取記憶體或多階內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,外部快取記憶體在核心及/或處理器外部。或者,所有快取記憶體可在核心及/或處理器外部。
圖5係根據本發明之實施例之單核心處理器及
多核心處理器500的方塊圖,該處理器具有整合型記憶體控制器及圖形元件。圖5中之實線方框例示出處理器500,其具有單個核心502A、系統代理510、一或多個匯流排控制器單元516之集合,而虛線方框之可選擇的增添例示出替代性處理器500,其具有多個核心502A-N、位於系統代理單元510中的一或多個整合型記憶體控制器單元514之集合,以及整合型圖形邏輯508。
記憶體階層包括該等核心內的一或多階快取記憶體、一或多個共享快取記憶體單元506之集合、耦接至整合型記憶體控制器單元514之集合的外部記憶體(圖中未示)。共享快取記憶體單元506之集合可包括一或多個中階快取記憶體,諸如2階(L2)、3階(L3)、4階(L4),或其他階快取記憶體、末階快取記憶體(LLC),及/或上述各者之組合。雖然在一實施例中,環式互連單元512對整合型圖形邏輯508、共享快取記憶體單元506之集合及系統代理單元510進行互連,但替代性實施例可使用任何數種熟知技術來互連此等單元。
在一些實施例中,核心502A-N中之一或多者能夠進行多執行緒處理。系統代理510包括協調並操作核心502A-N之該等組件。系統代理單元510可包括例如功率控制單元(PCU)及顯示單元。PCU可為調節核心502A-N及整合型圖形邏輯508之功率狀態所需要的邏輯及組件,或者包括上述邏輯及組件。顯示單元係用於驅動一或多個外部已連接顯示器。
核心502A-N就架構及/或指令集而言可為同質的或異質的。例如,核心502A-N中之一些可為循序的,而其他核心係亂序的。作為另一實例,核心502A-N中之兩者或兩者以上可能能夠執行同一指令集,而其他核心可能僅能夠執行該指令集之子集或不同的指令集。
處理器可為通用處理器,諸如CoreTM i3、i5、i7、2 Duo and Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器,其可自Intel公司(Santa Clara,Calif)獲得。或者處理器可來自另一公司,諸如ARM Holdings公司、MIPS等。處理器可為專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器或類似者。處理器可實施於一或多個晶片上。處理器500可為一或多個基板之一部分,及/或可使用任何數種處理技術(諸如BiCMOS、CMOS或NMOS)中之任一者將處理器500實施於一或多個基板上。
圖6至圖8係適合於包括處理器500之示範性系統,而圖9係可包括核心502中之一或多者的示範性系統單晶片(SoC)。此項技術中已知的關於以下各者的其他系統設計及組配亦係適合的:膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、攜帶型媒體播放器、手持式裝置,以及各種其他電子裝置。一般而言,能夠併入如本文中所揭示之處理器
及/或其他執行邏輯的多種系統或電子裝置通常係適合的。
現在參考圖6,所展示為根據本發明之一實施例之系統600的方塊圖。系統600可包括一或多個處理器610、615,該等處理器耦接至圖形記憶體控制器集線器(GMCH)620。在圖6中用間斷線表示額外處理器615之可選擇性質。
每一處理器610、615可為處理器500之某一版本。然而,應注意,整合型圖形邏輯及整合型記憶體控制單元不太可能存在於處理器610、615中。圖6例示出GMCH 620可耦接至記憶體640,記憶體640可為例如動態隨機存取記憶體(DRAM)。對於至少一實施例,DRAM可與非依電性快取記憶體相關聯。
GMCH 620可為晶片組或晶片組之一部分。GMCH 620可與處理器610、615通訊,且之處理器610、615與記憶體640之間的互動。GMCH 620亦可充當處理器610、615與系統600之其他元件之間的加速匯流排介面。對於至少一實施例,GMCH 620經由多分支匯流排(multi-drop bus),諸如前端匯流排(FSB)695,與處理器610、615通訊。
此外,GMCH 620耦接至顯示器645(諸如平板顯示器)。GMCH 620可包括整合型圖形加速器。GMCH 620進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)650,ICH 650可用來將各種周邊裝置耦接至系統600。在圖6之實施例中,例如展示了外部圖形裝置660(其可為耦接至ICH 650
之離散圖形裝置),以及另一周邊裝置670。
或者,系統600中亦可存在額外或不同的處理器。例如,額外處理器615可包括:與處理器610相同的額外處理器;與處理器610異質或不對稱的額外處理器;加速器,諸如圖形加速器或數位信號處理(DSP)單元;場可規劃閘陣列;或任何其他處理器。就優點量度範圍而言,實體資源610與615之間可能有各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性及類似者。此等差異可有效表明其本身在處理器610與615之間的不對稱性及異質性。對於至少一實施例,各種處理器610、615可駐留在同一晶粒封裝中。
現在參考圖7,所展示為根據本發明之一實施例之第二系統700的方塊圖。如圖7中所展示,多處理器系統700係點對點互連系統,且包括第一處理器770及第二處理器780,該等處理器經由點對點互連750予以耦接。如同處理器610、615中之一或多者,處理器770及780中之每一者可為處理器500之某一版本。
雖然展示了僅兩個處理器770、780,但應理解,本發明之範疇不受此限制。在其他實施例中,給定處理器中可存在一或多個額外處理器。
所展示處理器770及780分別包括整合型記憶體控制器單元772及782。處理器770亦包括點對點(P-P)介面776及778,作為其匯流排控制器單元的部分;類似地,第二處理器780包括P-P介面786及788。處理器770、780
可使用P-P介面電路778、788經由點對點(P-P)介面750交換資訊。如圖7中所展示,IMC 772及782將處理器耦接至個別記憶體,亦即,記憶體732及記憶體734,該等記憶體可為局部地附接至個別處理器之主記憶體的部分。
處理器770、780各自可使用點對點介面電路776、794、786、798經由單獨的P-P介面752、754與晶片組790交換資訊。晶片組790亦可經由高效能介面739與高效能圖形電路738交換資訊。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(圖中未示),而該共享快取記憶體經由P-P互連與該等處理器連接,以使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之局域快取記憶體資訊儲存在該共享快取記憶體中。
晶片組790可經由介面796耦接至第一匯流排716。在一實施例中,第一匯流排716可為周邊組件互連(PCI)匯流排,或者諸如高速PCI(PCI Express)匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖7中所示,各種I/O裝置714以及匯流排橋接器718可耦接至第一匯流排716,匯流排橋接器718將第一匯流排716耦接至第二匯流排720。在一實施例中,第二匯流排720可為低針腳數(LPC)匯流排。各種裝置可耦接至第二匯流排720,其中包括,例如,鍵盤及/或滑鼠722、通訊裝置727,以及儲存單元728(諸如磁碟機或其他大容量儲存裝置),在一實施例中,儲存單元728可包括指令/
程式碼及資料730。此外,音訊I/O 724可耦接至第二匯流排720。請注意,其他架構係可能的。例如,代替圖7之點對點架構,系統可實施多分支匯流排或其他此種架構。
現在參考圖8,所展示為根據本發明之一實施例之第三系統800的方塊圖。圖7及圖8中的相似元件帶有相似參考數字,且圖8已省略圖7之某些態樣以避免混淆圖8之其他態樣。
圖8例示出處理器870、880分別可包括整合型記憶體及I/O控制邏輯(「CL」)872及882。對於至少一實施例,CL 872及882可包括整合型記憶體控制器單元,諸如以上關於圖5及圖7所描述之單元。另外,CL 872及882亦可包括I/O控制邏輯。圖8例示出不僅記憶體832、834耦接至CL 872、882,而且I/O裝置814亦耦接至控制邏輯872、882。舊式I/O裝置815耦接至晶片組890。
現在參考圖9,所展示為根據本發明之一實施例之SoC 900的方塊圖。圖5中的類似元件帶有相似參考數字。此外,虛線方框係更先進SoC上之可選擇特徵。在圖9中,互連單元902耦接至以下各者:應用處理器910,其包括一或多個核心502A-N之集合及共享快取記憶體單元506;系統代理單元510;匯流排控制器單元516;整合型記憶體控制器單元514;一或多個共處理器920之集合,其可包括整合型圖形邏輯508、用於提供靜態及/或視訊攝影機功能的影像處理器924、用於提供硬體音訊加速的音訊處理器926及用於提供編碼/解碼加速的視訊處理器928;靜
態隨機存取記憶體(SRAM)單元930;直接記憶體存取(DMA)單元932;以及用於耦接至一或多個外部顯示器的顯示單元940。
圖10例示出含有中央處理單元(CPU)及圖形處理單元(GPU)之處理器,該等單元可執行根據一實施例之至少一指令。在一實施例中,執行根據至少一實施例之操作的指令可由CPU執行。在另一實施例中,該指令可由GPU執行。在又一實施例中,該指令可經由GPU與CPU所執行之操作之組合來執行。例如,在一實施例中,可接收並解碼根據一實施例之指令以便在GPU上執行。然而,在經解碼的指令內之一或多個操作可由CPU執行,且結果被傳回至GPU以便該指令最終引退。相反,在一些實施例中,CPU可充當主處理器而GPU充當共處理器。
在一些實施例中,受益於高度平行的通量處理器之指令可由GPU執行,而受益於如下處理器的執行之指令可由CPU執行,該等處理器受益於深度管線化的架構。例如,圖形、科學應用、金融應用及其他平行工作負載可受益於GPU的執行且相應地被執行,而更為依序的應用(諸如作業系統核心或應用程式碼)可能更適合於CPU。
在圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、高清晰度多媒體介面(HDMI)控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙資料速率(DDR)
控制器1060、安全引擎1065及I2S/I2C(整合型晶片間聲音/內部整合電路)介面1070。圖10之處理器中可包括其他邏輯與電路,其中包括更多的CPU或GPU及其他周邊介面控制器。
至少一實施例之一或多個態樣可由儲存於機器可讀媒體上的代表性資料來實施,此資料表示處理器內的各種邏輯,此資料在由機器讀取時使機器製造邏輯來執行本文中描述之技術。此類表示(稱為「IP核心」)可儲存於有形的機器可讀媒體(「磁帶」)上且可供應給各種顧客或製造設施來載入至實際上製造該邏輯或處理器的製造機中。例如,IP核心(諸如由ARM Holdings公司開發出的CortexTM系列處理器,以及由中國科學院的計算技術研究所(ICT)開發出的Loongson IP核心)可被授權給或賣給各種顧客或被授權者,諸如Texas Instruments、Qualcomm、Apple或Samsung,並且實施於由此等顧客或被授權者生產的處理器中。
圖11展示出說明根據一實施例之IP核心的開發之方塊圖。儲存體1130包括模擬軟體1120及/或硬體或軟體模型1110。在一實施例中,可經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150或無線連接1160將表示IP核心設計之資料提供至儲存媒體1130。由模擬工具及模型產生之IP核心資訊然後可被傳輸至製造設施1165,在製造設施1165處,IP核心資訊可由第三方製造來執行根據至少一實施例的至少一指令。
在一些實施例中,一或多個指令可對應於第一類型或架構(例如,x86)且在不同類型或架構(例如,ARM)之處理器上被轉譯或仿真。因此可在任何處理器或處理器類型(包括ARM、x86、MIPS、GPU或其他處理器類型或架構)上執行根據一實施例的指令。
圖12例示出如何由不同類型之處理器來仿真根據一實施例的第一類型之指令。在圖12中,程式1205含有一些指令,該等指令可執行與根據一實施例的指令相同或大體上相同之功能。然而,程式1205之指令之類型及/或格式可能與處理器1215不同或不相容,此意味著程式1205中之類型之指令可無法由處理器1215原型地執行。然而,藉助於仿真邏輯1210,將程式1205之指令轉譯為能夠由處理器1215原型地執行之指令。在一實施例中,仿真邏輯體現於硬體中。在另一實施例中,仿真邏輯體現於有形的機器可讀媒體中,該媒體含有軟體,用來將程式1205中之類型之指令轉譯為可由處理器1215原型地執行之類型。在其他實施例中,仿真邏輯為固定功能或可規劃硬體與儲存於有形的機器可讀媒體上之程式之組合。在一實施例中,處理器含有仿真邏輯,然而在其他實施例中,仿真邏輯存在於處理器外部且由第三方提供。在一實施例中,處理器能夠藉由執行包含於處理器中或與處理器相關聯之微碼或韌體來載入仿真邏輯,該仿真邏輯體現於含有軟體之有形的機器可讀媒體中。
圖13為根據本發明之實施例的對比使用軟體指
令轉換器將來源指令集中之二進位指令轉換為目標指令集中之二進位指令的方塊圖。在所例示實施例中,指令轉換器為軟體指令轉換器,但或者可將指令轉換器實施於軟體、韌體、硬體或其各種組合中。圖13展示出,可使用x86編譯器1304來編譯用高階語言1302撰寫之程式以產生x86二進位碼1306,x86二進位碼1306可由具有至少一x86指令集核心之處理器1316原型地執行。具有至少一x86指令集核心之處理器1316表示可執行與具有至少一x86指令集核心之Intel處理器大體上相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分,或(2)旨在在具有至少一x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以達成與具有至少一x86指令集核心之Intel處理器大體上相同的結果。x86編譯器1304表示可操作以產生x86二進位碼1306(例如,目標碼)之編譯器,其中x86二進位碼1306在經額外連結處理或未經額外連結處理的情況下可在具有至少一x86指令集核心之處理器1316上執行。類似地,圖13展示出,可使用替代性指令集編譯器1308來編譯用高階語言1302撰寫之程式以產生替代性指令集二進位碼1310,替代性指令集二進位碼1310可由不具有至少一x86指令集核心之處理器1314(例如,具有多個核心的處理器,該等核心執行MIPS Technologie公司(Sunnyvale,CA)之MIPS指令集,及/或該等核心執行ARM Holdings公司(Sunnyvale,CA)之ARM指
令集)原型地執行。指令轉換器1312用以將x86二進位碼1306轉換為可由不具有至少一x86指令集核心之處理器1314原型地執行之碼。此轉換後的碼不太可能與替代性指令集二進位碼1310相同,此係因為能夠實現此操作之指令轉換器難以製作;然而,轉換後的碼將完成一般操作且由來自替代性指令集之指令構成。因此,指令轉換器1312表示經由仿真、模擬或任何其他處理程序來允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體或其組合。
圖14例示出用來執行提供向量混合與置換功能的指令之設備1401之一實施例。設備1401包括:一或多個向量暫存器之第一來源運算元1413,該等向量暫存器各自包含資料欄位來儲存向量元件1423、...1453、1463之值;以及第二來源運算元1414,其具有向量元件1424、...1454、1464。設備1401亦包括:一或多個向量暫存器之索引向量運算元1412,其用來儲存索引之集合;一或多個向量暫存器之目的地運算元1415,其具有向量元件1425、...1455、1465;以及可選擇的遮罩運算元1416。在索引向量運算元1412中,索引值各自具有第一來源選擇器部分(例如1421、...1451、1461)及第二元件選擇器部分(例如1422、...1452、1462)。在一些實施例中,混合-置換指令指定向量元件1424、...1454、1464、1425、...1455、1465等之大小。響應於解碼混合-置換指令,可使用來自索引向量運算元1412中具有該向量元件大小的資料欄位之索引值的
來源選擇器部分1421、...1451、1461在級段1402中混合向量暫存器資料欄位,來產生具有向量元件1427、...1457、1467之中間向量1470,向量元件1427、...1457、1467各自係根據具有第一值(例如,零或正號位元)或第二值(例如,一或負號位元)的個別第一來源選擇器部分1421、...1451、1461,藉由乘法器1420、...1425、1426複製自第一來源運算元1413中具有該指定向量元件大小之對應資料欄位,或複製自第二來源運算元1414中之向量元件之對應資料欄位。
設備1401包括交換器1403,其響應於控制邏輯1433,用來在輸入1432、...1435、1436上自中間向量1470之向量元件1427、...1457、1467(如由第二元件選擇器部分1422、...1452、1462編索引)選擇替換元件。控制邏輯1433處理第二元件選擇器部分1422、...1452、1462,從而產生控制信號1434、...1437、1438以將來自中間向量1470之向量元件1427、...1457、1467的替換元件置於交換器1403之輸出1428、...1458、1468上。遮蔽替換邏輯1404分別經由乘法器1440、...1445、1446任擇地選擇目的地運算元1415中具有向量元件1425、...1455、1465之指定大小的未遮蔽資料欄位(例如,根據可選擇的遮罩運算元1416),以便用中間向量1470中由個別第二元件選擇器部分1422、...1452、1462編索引的資料欄位將其替換。
因此設備1401之實施例可用於執行提供向量混合與置換功能的指令。應瞭解,雖然例示出設備1401係在
一設備中經連接,但設備1401之部分(例如,級段1402及中間向量1470、交換器1403、遮蔽替換邏輯1404,以及運算元1412、1413、1414、1415及1416)可為分散的及/或可操作地彼此動態耦接以便響應於提供向量混合與置換功能的指令而執行其各別操作。
圖15例示出處理程序1501之一實施例的流程圖,來提供一提供向量混合與置換功能的處理程序之替代性實施例。處理程序1501及本文中揭示之其他處理程序係由處理區塊來執行,該等處理區塊可包含可由通用機器或由專用機器或由上述兩者之組合來執行的專用硬體或軟體或韌體運算碼。
在處理程序1501之處理區塊1510中,提供向量混合與置換功能的指令之執行開始。在處理區塊1520中,解碼級段解碼混合-置換指令,該指令指定:一或多個向量暫存器之目的地運算元,該等向量暫存器各自包含資料欄位來儲存向量元件的值;向量元件之大小;索引向量運算元,其用來儲存索引之集合;一或多個向量暫存器之第一來源運算元以及第二來源運算元。
在處理區塊1530中開始,執行級段響應於經解碼之混合-置換指令而自索引向量運算元中具有該向量元件大小之資料欄位讀取索引值,該等索引值中之每一者具有第一選擇器部分及第二選擇器部分。在處理區塊1540中,根據具有第一值(例如,零或正)或第二值(例如,一或負)的個別第一來源選擇器部分,混合該等向量暫存器資料
欄位中之每一者,將其自第一來源運算元中具有該指定向量元件大小之對應資料欄位複製至中間向量,或自第三來源運算元中之向量元件之對應資料欄位複製至中間向量。在處理區塊1550中,用中間向量結果中由個別第二選擇器部分編索引之對應資料欄位替換目的地運算元中具有該指定向量元件大小的資料欄位之一部分(例如,其可由或可不由遮罩判定)。提供向量混合與置換功能的指令之處理然後在處理區塊1560中結束。
應瞭解,雖然例示出處理程序1501之處理區塊係按特定次序依序執行,但許多操作在可能時可平行地執行,或按不同於所展示次序的某種次序來執行。
圖16例示出處理程序1601之另一實施例的流程圖,來提供一提供向量混合與置換功能的處理程序之替代性實施例。在處理程序1601之處理區塊1610中,提供向量混合與置換功能的指令之執行開始。在處理區塊1620中,解碼級段解碼混合-置換指令,該指令指定:一或多個向量暫存器之目的地運算元,該等向量暫存器各自包含資料欄位來儲存向量元件的值;向量元件之大小;遮罩運算元;索引向量運算元,其用來儲存索引之集合;一或多個向量暫存器之第一來源運算元以及第二來源運算元。
處理區塊1630中開始,執行級段響應於經解碼之混合-置換指令而自索引向量運算元中具有該向量元件大小之資料欄位讀取索引值,該等索引值中之每一者具有第一選擇器部分及第二選擇器部分。在處理區塊1640中,
根據具有第一值(例如,零或正)或第二值(例如,一或負)的個別第一來源選擇器部分,混合該等向量暫存器資料欄位中之每一者以產生中間向量,其複製自第一來源運算元中具有該指定向量元件大小之對應資料欄位,或複製自第三來源運算元中之向量元件之對應資料欄位。在處理區塊1650中,用中間向量中由個別第二元件選擇器部分編索引之對應資料欄位替換目的地運算元中具有該指定向量元件大小的未遮蔽資料欄位。提供向量混合與置換功能的指令之處理然後在處理區塊1660中結束。
同樣應瞭解,雖然例示出處理程序1601之處理區塊係按特定次序依序執行,但許多操作在可能時可平行地執行,或按不同於所展示次序的某種次序來執行.
本發明之實施例涉及提供向量混合與置換功能的指令,其中藉由此等指令在向量暫存器中可高效地重新排列儲存於實體記憶體中及/或其定位方式需要在向量暫存器中的重新排列,以便應用所要的記憶體及/或SIMD算術運算的資料,例如,位於未對準位址的資料,或位於兩個個別快取列之末尾及開頭的資料,或位於表的各獨立項目中的資料,或跨越影像中之區塊邊界的資料等。
本文中揭示之機構的實施例可硬體、軟體、韌體或者此類實施方法之組合來實施。本發明之實施例可實施為在可規劃系統上執行之電腦程式或程式碼,可規劃系統包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置及至少一個輸出
裝置。
可將程式碼應用於輸入指令,用來執行本文中所描述之功能且產生輸出資訊。可將輸出資訊以已知方式應用於一或多個輸出裝置。出於本申請案之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可以高階程序性或物件導向式程式設計語言來實施,以便與處理系統通訊。必要時,程式碼亦可以組合語言或機器語言來實施。事實上,本文中所描述之機構的範疇不限於任何特定的程式設計語言。在任何情況下,該語言可為編譯語言或解譯語言。
至少一個實施例之一或多個態樣可藉由儲存於機器可讀媒體上之代表性指令來實施,機器可讀媒體表示處理器內的各種邏輯,該等指令在由機器讀取時使機器製造邏輯來執行本文中所描述之技術。此類表示(稱為「IP核心」)可儲存於有形的機器可讀媒體上,且可供應給各種用戶端或製造設施以載入至實際上製造該邏輯或處理器的製造機中。
此等機器可讀儲存媒體可包括但不限於由機器或裝置製造或形成的非暫時性有形物品配置,其中包括:儲存媒體,諸如硬碟、任何其他類型之碟片(包括軟碟片、光碟、光碟片-唯讀記憶體(CD-ROM)、可重寫光碟片(CD-RW)及磁光碟)、半導體裝置(諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體
(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁性或光學卡),或者適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)之設計資料的非暫時性有形機器可讀媒體,其中設計資料定義本文中所描述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
在一些情況下,可使用指令轉換器將指令自來源指令集轉換成目標指令集。例如,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、漸變、仿真或以其他方式轉換成將由核心處理的一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可位於處理器上、位於處理器外部,或部分位於處理器上而部分位於處理器外部。
因此,揭示了用於執行根據至少一實施例之一或多個指令的技術。雖然已經在隨附圖式中描述並展示出某些示範性實施例,但應理解,此等實施例僅例示出且不限制廣泛的本發明,且本發明不限於所展示出並描述之特定構造及配置,因為一般技藝者在學習本揭示內容後可想到各種其他修改。在成長速度快且不容易預見到進一步進步之技術(諸如此項技術)領域中,在不背離本揭示內容之原理或隨附申請專利範圍之範疇的情況下,所揭示實施例可易
於在配置及細節方面作出修改,如藉由允許技術進步所促成。
1501‧‧‧處理程序
1510、1520、1530、1540、1550、1560‧‧‧處理區塊
Claims (20)
- 一種處理系統,其包含:一記憶體,其用以儲存指示一向量元件之值;以及可操作地被耦接至該記憶體的一執行單元,其用以:解碼一指令,該指令指定:一第一運算元,其包含複數個對應至一向量元件之資料欄位;該向量元件之大小;一第二運算元,其包含一索引集合;以及複數個向量暫存器資料欄位;基於該向量元件大小從該索引集合讀取來自該第二運算元之一索引值,該索引值包含一第一元件選擇器與一第二元件選擇器;根據該第一元件選擇器,合併來自該等複數個向量暫存器資料欄位之一第一集合與一第二集合資料欄位的向量元件值用以產生一中間向量,以及根據該第二元件選擇器,在該第一運算元中以該中間向量的該等資料欄位之已合併的向量元件值取代該向量元件大小之未遮蔽的資料欄位。
- 如請求項1之處理系統,其中該執行單元係進一步用以基於在該指令中的一遮罩運算元來識別在該第一運算元中的該等未遮蔽的資料欄位。
- 如請求項1之處理系統,其中該執行單元係進一步用以響應於具有一第一值的該第一元件選擇器而複製來自該中間向量之一資料欄位的一第一向量元件值至藉由該第一元件選擇器所索引的該第一運算元中之該向量元件大小之一資料欄位。
- 如請求項3之處理系統,其中該執行單元係進一步用以響應於具有一第二值的該第一元件選擇器而複製來自該中間向量之該資料欄位的一第二向量元件值至藉由該第一元件選擇器所索引的一第三運算元中之該向量元件大小之一資料欄位。
- 如請求項4之處理系統,其中該第三運算元係藉由該指令所指定。
- 如請求項1之處理系統,其中該第一元件選擇器指示該向量元件大小之一資料欄位的一最高有效位元。
- 如請求項1之處理系統,其中該第二元件選擇器指示該向量元件大小之一資料欄位的一最低有效位元。
- 一種方法,其包含:藉由一處理裝置解碼一指令,該指令指定:一第一運算元,其包含複數個對應至一向量元件之資料欄位;該向量元件之大小;一第二運算元,其包含一索引集合;以及複數個向量暫存器資料欄位;基於該向量元件大小從該索引集合讀取來自該第 二運算元之一索引值,該索引值包含一第一元件選擇器與一第二元件選擇器;根據該第一元件選擇器,藉由該處理裝置合併來自該等複數個向量暫存器資料欄位之一第一集合與一第二集合資料欄位的向量元件值用以產生一中間向量,以及根據該第二元件選擇器,在該第一運算元中以該中間向量的該等資料欄位之已合併的向量元件值取代該向量元件大小之未遮蔽的資料欄位。
- 如請求項8之方法,其進一步包含基於在該指令中的一遮罩運算元來識別在該第一運算元中的該等未遮蔽的資料欄位。
- 如請求項8之方法,其進一步包含響應於具有一第一值的該第一元件選擇器,複製來自該中間向量之一資料欄位的一第一向量元件值至藉由該第一元件選擇器所索引的該第一運算元中之該向量元件大小之一資料欄位。
- 如請求項10之方法,其進一步包含響應於具有一第二值的該第一元件選擇器,複製來自該中間向量之該資料欄位的一第二向量元件值至藉由該第一元件選擇器所索引的一第三運算元中之該向量元件大小之一資料欄位。
- 如請求項11之方法,其中該第三運算元係藉由該指令所指定。
- 如請求項8之方法,其中該第一元件選擇器指示該向量 元件大小之一資料欄位的一最高有效位元。
- 如請求項8之方法,其中該第二元件選擇器指示該向量元件大小之一資料欄位的一最低有效位元。
- 一種設備,其包含:一解碼器,其用以解碼一指令,該指令指定:一第一運算元,其包含複數個對應至一向量元件之資料欄位;該向量元件之大小;一第二運算元,其包含一索引集合;以及複數個向量暫存器資料欄位;以及一執行邏輯單元,其可操作地被與該解碼器耦接且響應於經解碼之該指令,該執行邏輯單元用以:基於該向量元件大小從該索引集合讀取來自該第二運算元之一索引值,該索引值包含一第一元件選擇器與一第二元件選擇器;根據該第一元件選擇器,合併來自該等複數個向量暫存器資料欄位之一第一集合與一第二集合資料欄位的向量元件值用以產生一中間向量,以及根據該第二元件選擇器,在該第一運算元中以該中間向量的該等資料欄位之已合併的向量元件值取代該向量元件大小之未遮蔽的資料欄位。
- 如請求項15之設備,其中該執行邏輯單元係進一步用以基於在該指令中的一遮罩運算元來識別在該第一運算元中的該等未遮蔽的資料欄位。
- 如請求項15之設備,其中該執行邏輯單元係進一步用以響應於具有一第一值的該第一元件選擇器而複製來自該中間向量之一資料欄位的一第一向量元件值至藉由該第一元件選擇器所索引的該第一運算元中之該向量元件大小之一資料欄位。
- 如請求項17之設備,其中該執行邏輯單元係進一步用以響應於具有一第二值的該第一元件選擇器而複製來自該中間向量之該資料欄位的一第二向量元件值至藉由該第一元件選擇器所索引的一第三運算元中之該向量元件大小之一資料欄位。
- 如請求項18之設備,其中該第三運算元係藉由該指令所指定。
- 如請求項15之設備,其中該第一元件選擇器指示該向量元件大小之一資料欄位的一最高有效位元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067245 WO2013095657A1 (en) | 2011-12-23 | 2011-12-23 | Instruction and logic to provide vector blend and permute functionality |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201716992A TW201716992A (zh) | 2017-05-16 |
TWI584192B true TWI584192B (zh) | 2017-05-21 |
Family
ID=48669295
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105124459A TWI584192B (zh) | 2011-12-23 | 2012-12-22 | 提供向量混合與置換功能的指令與邏輯(二) |
TW101149314A TWI550509B (zh) | 2011-12-23 | 2012-12-22 | 提供向量混合與置換功能的指令與邏輯 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101149314A TWI550509B (zh) | 2011-12-23 | 2012-12-22 | 提供向量混合與置換功能的指令與邏輯 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10037205B2 (zh) |
CN (2) | CN104011662B (zh) |
TW (2) | TWI584192B (zh) |
WO (1) | WO2013095657A1 (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL3422178T3 (pl) | 2011-04-01 | 2023-06-26 | Intel Corporation | Przyjazny dla wektorów format instrukcji i jego wykonanie |
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 |
US9329863B2 (en) | 2012-03-13 | 2016-05-03 | International Business Machines Corporation | Load register on condition with zero or immediate instruction |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9424034B2 (en) | 2013-06-28 | 2016-08-23 | Intel Corporation | Multiple register memory access instructions, processors, methods, and systems |
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US9442731B2 (en) * | 2014-03-13 | 2016-09-13 | Intel Corporation | Packed two source inter-element shift merge processors, methods, systems, and instructions |
CN104123959B (zh) * | 2014-07-21 | 2016-09-21 | 河南大学 | 置换规则配置简洁的通用置换电路结构 |
US20160179521A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Method and apparatus for expanding a mask to a vector of mask values |
US10296334B2 (en) * | 2014-12-27 | 2019-05-21 | Intel Corporation | Method and apparatus for performing a vector bit gather |
US9710622B2 (en) * | 2015-02-23 | 2017-07-18 | Intel Corporation | Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache |
US20170177352A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Store Operations |
US9946541B2 (en) * | 2015-12-18 | 2018-04-17 | Intel Corporation | Systems, apparatuses, and method for strided access |
US10338920B2 (en) | 2015-12-18 | 2019-07-02 | Intel Corporation | Instructions and logic for get-multiple-vector-elements operations |
US10152321B2 (en) * | 2015-12-18 | 2018-12-11 | Intel Corporation | Instructions and logic for blend and permute operation sequences |
US10467006B2 (en) * | 2015-12-20 | 2019-11-05 | Intel Corporation | Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor |
US10007519B2 (en) * | 2015-12-22 | 2018-06-26 | Intel IP Corporation | Instructions and logic for vector bit field compression and expansion |
US9996361B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Byte and nibble sort instructions that produce sorted destination register and destination index mapping |
US10409613B2 (en) * | 2015-12-23 | 2019-09-10 | Intel Corporation | Processing devices to perform a key value lookup instruction |
US9921841B2 (en) * | 2016-02-24 | 2018-03-20 | Intel Corporation | System and method for executing an instruction to permute a mask |
US9971580B2 (en) * | 2016-03-18 | 2018-05-15 | Intel Corporation | Fast access and use of common data values relating to applications in parallel computing environments |
CN107315575B (zh) * | 2016-04-26 | 2020-07-31 | 中科寒武纪科技股份有限公司 | 一种用于执行向量合并运算的装置和方法 |
US10162634B2 (en) | 2016-05-20 | 2018-12-25 | International Business Machines Corporation | Extendable conditional permute SIMD instructions |
US10089110B2 (en) * | 2016-07-02 | 2018-10-02 | Intel Corporation | Systems, apparatuses, and methods for cumulative product |
US10157164B2 (en) | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
TWI613554B (zh) * | 2017-03-24 | 2018-02-01 | Zhuang Shi Cheng | 翻譯輔助系統 |
US9853900B1 (en) * | 2017-08-07 | 2017-12-26 | Mellanox Technologies Tlv Ltd. | Using consistent hashing for ECMP routing |
US11327761B2 (en) * | 2019-05-24 | 2022-05-10 | Texas Instruments Incorporated | Processing device with vector transformation execution |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200405208A (en) * | 2002-05-24 | 2004-04-01 | Koninkl Philips Electronics Nv | A scalar/vector processor |
TW200407705A (en) * | 2002-05-24 | 2004-05-16 | Koninkl Philips Electronics Nv | Access to a wide memory |
US20060015705A1 (en) * | 2002-10-23 | 2006-01-19 | Freescale Semiconductor, Inc. | Arrangement, system and method for vector permutation in single-instruction multiple-data mircoprocessors |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07104784B2 (ja) * | 1990-04-03 | 1995-11-13 | 富士ゼロックス株式会社 | デジタルデータ処理装置 |
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
US6446198B1 (en) * | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US20080077772A1 (en) | 2006-09-22 | 2008-03-27 | Ronen Zohar | Method and apparatus for performing select operations |
CN101535947A (zh) | 2006-09-29 | 2009-09-16 | Mips技术公司 | 两次发布的条件移动指令及其应用 |
US8505002B2 (en) * | 2006-09-29 | 2013-08-06 | Arm Limited | Translation of SIMD instructions in a data processing system |
US7962718B2 (en) * | 2007-10-12 | 2011-06-14 | Freescale Semiconductor, Inc. | Methods for performing extended table lookups using SIMD vector permutation instructions that support out-of-range index values |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US7814303B2 (en) * | 2008-10-23 | 2010-10-12 | International Business Machines Corporation | Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively |
US8418154B2 (en) * | 2009-02-10 | 2013-04-09 | International Business Machines Corporation | Fast vector masking algorithm for conditional data selection in SIMD architectures |
US8996845B2 (en) * | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US20120060016A1 (en) * | 2010-09-07 | 2012-03-08 | International Business Machines Corporation | Vector Loads from Scattered Memory Locations |
-
2011
- 2011-12-23 CN CN201180075784.9A patent/CN104011662B/zh active Active
- 2011-12-23 WO PCT/US2011/067245 patent/WO2013095657A1/en active Application Filing
- 2011-12-23 US US13/977,734 patent/US10037205B2/en active Active
- 2011-12-23 CN CN201710230086.0A patent/CN107092465B/zh active Active
-
2012
- 2012-12-22 TW TW105124459A patent/TWI584192B/zh not_active IP Right Cessation
- 2012-12-22 TW TW101149314A patent/TWI550509B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200405208A (en) * | 2002-05-24 | 2004-04-01 | Koninkl Philips Electronics Nv | A scalar/vector processor |
TW200407705A (en) * | 2002-05-24 | 2004-05-16 | Koninkl Philips Electronics Nv | Access to a wide memory |
US20060015705A1 (en) * | 2002-10-23 | 2006-01-19 | Freescale Semiconductor, Inc. | Arrangement, system and method for vector permutation in single-instruction multiple-data mircoprocessors |
Also Published As
Publication number | Publication date |
---|---|
CN107092465B (zh) | 2021-06-29 |
US20140372727A1 (en) | 2014-12-18 |
US10037205B2 (en) | 2018-07-31 |
WO2013095657A1 (en) | 2013-06-27 |
TW201716992A (zh) | 2017-05-16 |
TWI550509B (zh) | 2016-09-21 |
CN104011662B (zh) | 2017-05-10 |
CN104011662A (zh) | 2014-08-27 |
CN107092465A (zh) | 2017-08-25 |
TW201344572A (zh) | 2013-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI584192B (zh) | 提供向量混合與置換功能的指令與邏輯(二) | |
JP6207095B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
TWI574208B (zh) | 提供向量水平比較功能之方法與其處理器 | |
TWI610236B (zh) | 用以提供向量壓縮及旋轉功能之指令及邏輯 | |
TWI616816B (zh) | 用以中斷與回復安全獨立領域中的分頁之指令及邏輯(二) | |
KR102512315B1 (ko) | 원자적 범위 연산들을 제공하기 위한 명령어들 및 로직 | |
TWI689866B (zh) | 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術 | |
TWI610233B (zh) | 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統 | |
TWI697788B (zh) | 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯 | |
JP2014526757A (ja) | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック | |
TWI720056B (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
TWI546735B (zh) | 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 | |
TW201337738A (zh) | 用以提供向量水平式多數決投票功能之指令與邏輯 | |
TW201732564A (zh) | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 | |
TWI483126B (zh) | 提供向量線性內插功能之指令與邏輯 | |
JP6231155B2 (ja) | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |