TWI769645B - 資料元件比較處理器、方法、系統及指令 - Google Patents
資料元件比較處理器、方法、系統及指令 Download PDFInfo
- Publication number
- TWI769645B TWI769645B TW109147069A TW109147069A TWI769645B TW I769645 B TWI769645 B TW I769645B TW 109147069 A TW109147069 A TW 109147069A TW 109147069 A TW109147069 A TW 109147069A TW I769645 B TWI769645 B TW I769645B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- mask
- instruction
- operand
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title description 42
- 230000015654 memory Effects 0.000 claims description 153
- 239000013598 vector Substances 0.000 claims description 129
- 238000012545 processing Methods 0.000 claims description 24
- 238000013144 data compression Methods 0.000 claims 1
- 230000004044 response Effects 0.000 abstract description 19
- 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
- 238000010586 diagram Methods 0.000 description 55
- 238000006073 displacement reaction Methods 0.000 description 42
- 238000006243 chemical reaction Methods 0.000 description 22
- 239000011159 matrix material Substances 0.000 description 21
- 238000007667 floating Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 9
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 230000000873 masking effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000004907 flux Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 235000012431 wafers Nutrition 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000005056 compaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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
-
- 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
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種處理器,包含解碼單元,用以解碼一指令,該指令係用以:表示予以包含至少四個資料元件的第一源緊縮資料運算元、表示予以包含至少四個資料元件的第二源緊縮資料運算元、及表示一或更多目的儲存位置。回應於該指令,該執行單元予以儲存至少一結果遮罩運算元於該目的儲存位置中。對於該第一與第二源緊縮資料運算元之一中的相同相對位置中的各個對應資料元件,該至少一結果遮罩運算元予以包含一不同遮罩元件。各個遮罩元件予以表示在該等源緊縮資料運算元中的該一源緊縮資料運算元中的對應資料元件是否等於在該等源緊縮資料運算元中的另一者中的任一資料元件。
Description
於此所描述之實施例大致係關於處理器。更明確地說,於此所述之實施例大致係關於用以處理緊縮(packed)資料運算元之處理器。
很多處理器具有單指令多重資料(SIMD)架構。在SIMD架構中,緊縮資料指令、向量指令或SIMD指令可以同時或並列對多重資料元件或多重對的資料元件進行運算。處理器可以具有回應於該緊縮資料指令的並列執行硬體,以同時或並列執行多重運算。
多重資料元件可以緊縮於一暫存器或記憶體位置內成為緊縮資料或向量資料。在緊縮資料中,暫存器或其他儲存位置的位元可以邏輯上被分割成一序列的資料元件。例如,256位元寬緊縮資料暫存器可以具有四個64位元寬資料元件、八個32位元資料元件、十六個16位元資料元件等等。各個資料元件可以代表一分開的個別資料
件(例如,像素顏色、複數的分量等等),其可以被與其他分開及/或獨立地運算。
100:稀疏矩陣
102:匹配行中之值
204:壓縮稀疏列表示法
206:未對準之值
310:處理器
312:資料元件比較指令
314:解碼單元
316:控制信號
318:執行單元
320:緊縮資料暫存器
322:第一源緊縮資料運算元
324:第二源緊縮資料運算元
326:目的儲存位置
328:第一結果遮罩運算元
330:第二結果遮罩運算元
332:緊縮資料運算遮罩暫存器
516:控制信號
518:執行單元
522:第一源緊縮資料運算元
524:第二源緊縮資料運算元
528:第一結果遮罩運算元
530:第二結果遮罩運算元
532-1:第一遮罩暫存器
532-2:第二遮罩暫存器
616:控制信號
618:執行單元
622:第一源緊縮資料運算元
624:第二源緊縮資料運算元
628:第一結果遮罩運算元
630:第二結果遮罩運算元
632:單一遮罩暫存器
640:資料元件比較運算
716:控制信號
718:執行單元
722:第一源緊縮資料運算元
724:第二源緊縮資料運算元
728:單一結果遮罩運算元
732:遮罩暫存器
740:資料元件比較運算
816:控制信號
818:執行單元
820:結果緊縮資料運算元
822:第一源緊縮資料運算元
824:第二源緊縮資料運算元
828:第一結果遮罩運算元
830:第二結果遮罩運算元
840:資料元件比較運算
918:執行單元
928:源遮罩運算元
996:遮罩資料元件合併運算
997:源緊縮資料運算元
998:結果緊縮資料運算元
1032:緊縮資料運算遮罩暫存器
1120:緊縮資料暫存器
1202:VEX前置
1205:REX欄位
1215:運算碼映射欄位
1220:VEX.vvvv
1225:前置編碼欄位
1230:真運算碼欄位
1240:MOD R/M欄位
1242:MOD欄位
1244:Reg欄位
1246:R/M欄位
1250:標度欄位
1252:SS
1254:SIB.xxx
1256:SIB.bbb
1262:位移欄位
1264:W欄位
1268:大小欄位
1272:IMM8
1274:全運算碼欄位
1300:同屬向量友善指令格式
1305:無記憶體存取
1310:無記憶體存取全捨入控制類型運算
1315:無記憶體存取資料轉換類型運算
1320:記憶體存取
1325:記憶體存取,時序
1330:記憶體存取,非時序
1340:格式欄位
1342:基礎運算欄位
1344:暫存器指標欄位
1346:修改符欄位
1346A:無記憶體存取
1346B:記憶體存取
1350:擴充運算欄位
1352:阿爾發欄位
1352A:RS欄位
1352A.1:捨入
1352A.2:資料轉換
1352B.1:時序
1352B.2:非時序
1354:貝它欄位
1354A:捨入控制欄位
1354B:資料轉換欄位
1354C:資料演算欄位
1356:SAE欄位
1358:捨入運算控制欄位
1360:標度欄位
1362A:位移欄位
1362B:位移因數欄位
1364:資料元件寬度欄位
1368:類型欄位
1368A:類型A
1370:寫入遮罩欄位
1372:立即欄位
1374:全運算碼欄位
1352b:驅逐提示欄位
1312:無記憶體存取寫入遮罩控制部份捨入控制類型運算
1357A:RL欄位
1368B:類型B
1352C:寫入遮罩控制欄位
1357A.1:捨入
1359A:捨入運算欄位
1317:無記憶體存取寫入遮罩控制VSIZE類型運算
1357A.2:VSIZE
1359B:向量長度欄位
1327:記憶體存取寫入遮罩控制
1357B:廣播欄位
1400:特殊向量友善指令格式
1402:EVEX前置
1405:REX欄位
1410:REX’欄位
1415:運算碼映射欄位
1420:EVEX.vvvv
1425:前置編碼欄位
1430:真運算碼欄位
1440:MOD R/M欄位
1442:MOD欄位
1444:Reg欄位
1446:R/M欄位
1450:SIB
1454:SIB.xxx
1456:SIB.bbb
1500:暫存器架構
1510:向量暫存器
1515:寫入遮罩整數平坦暫存器檔案
1525:通用暫存器
1545:純量堆疊暫存器檔案
1550:MMX緊縮整數平坦暫存器檔案
1600:處理器管線
1602:擷取級
1604:長度解碼級
1606:解碼級
1608:配置級
1610:重命名級
1612:排程級
1614:暫存器讀取/記憶體讀取級
1616:執行級
1618:寫回/記憶體寫入級
1622:異常處置級
1624:確定級
1630:前端單元
1632:分支預測單元
1634:指令快取單元
1636:指令轉譯旁看緩衝器
1638:指令擷取單元
1640:解碼單元
1650:執行引擎單元
1652:重命名/配置器單元
1654:引退單元
1656:排程單元
1658:實體暫存器檔案單元
1660:執行叢集
1662:執行單元
1664:記憶體存取單元
1670:記憶體單元
1672:資料TLB單元
1674:資料快取單元
1676:第二階快取單元
1700:指令解碼器
1702:晶粒互連網路
1704:第二階快取
1706:L1快取
1708:純量單元
1710:向量單元
1712:純量暫存器
1714:向量暫存器
1706A:L1資料快取
1714:向量暫存器
1720:拌和單元
1722A:數值轉換單元
1722B:數值轉換單元
1724:複製單元
1726:寫入遮罩暫存器
1728:ALU
1800:處理器
1802A-N:核心
1804A-N:快取單元
1806:共享快取單元
1808:特殊目的邏輯
1810:系統代理單元
1812:環
1814:整合記憶體控制器單元
1816:匯流排控制器單元
1900:系統
1910:處理器
1915:處理器
1920:控制器集線器
1940:記憶體
1945:共處理器
1950:IOH
1960:輸入/輸出裝置
1990:GMCH
2000:糸統
2014:I/O裝置
2015:處理器
2016:第一匯流排
2018:匯流排橋接器
2020:第二匯流排
2027:通訊裝置
2028:儲存單元
2030:碼及資料
2032:記憶體
2034:記憶體
2038:共處理器
2039:高效介面
2050:點對點互連
2052:點對點互連
2070:第一處理器
2072:整合記憶體控制器單元
2076:點對點介面
2078:點對點介面
2080:第二處理器
2082:整合記憶體控制器單元
2086:P-P介面
2088:P-P介面
2090:晶片組
2092:介面
2094:點對點介面電路
2096:介面
2054:點對點介面
2098:點對點介面電路
2100:系統
2114:I/O裝置
2115:I/O裝置
2200:系統晶片
2202:互連單元
2210:應用處理器
2220:共處理器
2230:SRAM單元
2232:DMA單元
2240:顯示單元
2302:高階語言
2304:x86編譯器
2306:x86二進制碼
2308:指令集編譯器
2310:指令集二進制碼
2312:指令轉換器
2314:x86指令集核心
2316:x86指令集核心
本發明可以參考用以例示實施例的以下說明與附圖加以最佳了解。在圖式中:
圖1為例示稀疏矩陣的一部份的方塊圖。
圖2例示圖1的稀疏矩陣的列1與2的行之子集的壓縮稀疏列表示法。
圖3為處理器實施例之方塊圖,其係可操作以執行資料元件比較指令的實施例。
圖4為執行資料元件比較指令的實施例之方法實施例之方塊流程圖。
圖5為資料元件比較運算之第一例示實施例的方塊圖。
圖6為資料元件比較運算之第二例示實施例的方塊圖。
圖7為資料元件比較運算之第三例示實施例的方塊圖。
圖8為資料元件比較運算之第四例示實施例的方塊圖。
圖9為遮罩資料元件合併運算的例子的方塊圖。
圖10為適當組緊縮資料運算遮罩暫存器之一
例示實施例的方塊圖。
圖11為適當組緊縮資料暫存器之一例示實施例的方塊圖。
圖12A-C為例示依據本發明實施例之同層向量友善指令格式與其指令樣板的方塊圖。
圖13A-B為例示依據本發明實施例之例示特定向量友善指令格式與其運算碼欄位的方塊圖。
圖14A-D為例示依據本發明實施例之例示特定向量友善指令格式與其欄位的方塊圖。
圖15為暫存器架構實施例的方塊圖。
圖16A例示循序管線實施例與暫存器重命名亂序派發/執行管線實施例的方塊圖。
圖16B為處理器核心實施例之方塊圖,其包含前端單元,耦接至執行引擎單元,並且兩者均耦接至記憶體單元。
圖17A為單一處理器核心實施例之方塊圖,與其連接至晶粒上互連網路,及第2階(L2)快取的本地子集。
圖17B為圖17A的處理器核心的一部份的擴展觀點之實施例之方塊圖。
圖18為一處理器實施例之方塊圖,其可以具有一個以上核心、一整合記憶體控制器及整合圖形。
圖19為電腦架構的第一實施例的方塊圖。
圖20為電腦架構的第二實施例的方塊圖。
圖21為電腦架構的第三實施例的方塊圖。
圖22為電腦架構的第四實施例的方塊圖。
圖23為軟體指令轉換器的使用的方塊圖,以依據本發明實施例將在源指令集中的二進制指令轉換為目標指令集中的二進制指令。
於此所揭示的為資料元件比較指令、執行該等指令的處理器,當處理或執行該等指令時為處理器所執行的方法、及加入有一或更多處理器以處理或執行該等指令的系統。在以下說明中,各種特定細節被加以說明(例如,特定指令運算、資料格式、處理器組態、微架構細節、運算的順序等等)。然而,實施例也可以在沒有這些細節下加以進行。在其他例子中,己知電路、結構、及技術並未加以詳細顯示,以避免模糊對本案說明的了解。
於此所揭示之資料元件比較指令係為通用指令並且不限定至任何已知用途。相反地,這些指令可以根據程式設計師的創意、或編譯器等等,而作不同目的及/或以不同方式使用。在一些實施例中,這些指令可以用以處理相關於稀疏矩陣的資料,但本發明的範圍並不作此限定。在一些實施例中,這些指令可以用以處理有關壓縮稀疏列(CSR)表示法的資料,但本發明的範圍並不作此限定。為了進一步例示某些概念,將描述這些指令的特殊使用以處理以CSR格式表示的處理,該格式可以用以表示
稀疏矩陣的指標及值,但可以了解的是,這只是這些指令的一種可能用途。代表上,這也可以用於資料分析、高效計算、機器學習、稀疏線性代數問題或類似物。在其他實施例中,這些指令可以用以處理稀疏矩陣及/或CSR格式資料以外的其他類型資料。例如,這些指令可以用以處理各種不同類型資料,例如,諸如多媒體資料、圖形資料、聲音資料、視訊資料、像素、文字串資料、字元串資料、商用資料、其他類型整數資料或類似物。再者,資料的此等處理也可以用於不同目的,例如,用以識別複製資料元件、選擇複製資料元件、合併複製資料元件、移除複製資料元件、改變複製資料元件、或用於各種其他目的。
圖1為例示稀疏矩陣100的一部份的方塊圖。矩陣大致表示一種二維資料結構,其中,資料值係被排列成列與行。這些資料值也可以在此簡單被稱為值或資料元件。所示的例示稀疏矩陣係被顯示為具有至少三十九行及至少兩列,並可選用地更多。或者,其他稀疏矩陣也可以具有更多列及/或更少或更多的行。第一列的值係被顯示為a*值,其中星號(*)表示具有該值的行號。類似地,第二列的值被顯示為b*值,其中星號(*)代表具有該值的行號。例如,在列1行7中的值為a7,在列1行23中的值為a23,在列2行15中的值為b15,並以此類推。
在很多不同應用中,也可能想要運算兩向量,例如,諸如稀疏矩陣的兩個列。例如,此可以執行作
稀疏向量點積計算。此等稀疏向量點積計算經常被用於例如機器學習應用中。此等機器學習應用的例子為核心支援向量機器(SVM)、開放源libSVM、核心主元件分析、及類似物。在此等應用中常用的核心為平方距離計算圖案,這係被稱為在兩向量間的L2-norm。於兩向量α及β間的平方距離函式f(∥f∥)係以公式1表示:
∥α-β∥2=α2+β2-2α‧β 公式1
可以為稀疏向量的兩向量α與β間的內積(‧)係被表示如公式2所示之點積計算:
此等稀疏向量點積計算傾向於對機器學習與其他應用的整體計算時間作出顯著貢獻。因此,增加執行此等稀疏點積計算的效能可能傾向於協助改良機器學習與其他應用的效能。
再參考圖1,稀疏矩陣100可以當該矩陣的相當大數量或比例的值為零值時,被稱為稀疏。經常地,此等零值具有特殊數學特性,例如,被零乘的乘法產生零的積,或類似物。例如,當在相同行的不同列的值的乘法中,此等零值可以產生零值積,而兩非零值的乘法則可以產生非零值。例如,在行2的列1與2中的資料元件的乘法(即,a2*0)產生零的積,而在行3中的列1與2中的資料元件的乘法(即,a3*b3)則產生非零的積。再者,在乘積或點積類型計算的特殊情況下,經常此等零值可能不會對整體累積值或點積作出貢獻。
因此,在這些使用與某些其他使用中,可能想要忽略稀疏矩陣的這些零值。在此稀疏矩陣的特定例中,如於元件符號102所示,來自同一行中的列1及2,只有三配對的值,兩個都包含非零值。明確地說,對於a3及b3、對於a7及b7、與a23及b23都是如此。在一些實施例中,也有利於能有效地識別及/或隔離此等配對值。並將如下所解釋,雖然在此所揭露的資料元件比較指令係有用於此目的,但它們並不限於此目的。
圖2例示圖1的稀疏矩陣的列1與2的行的子集的壓縮稀疏列(CSR)表示法204。在CSR表示法或格式中,矩陣的值及/或向量(例如,矩陣的單一列)係以2-元組(tuple)或指標與對應值的配對表示。在前述稀疏矩陣的情況中,指標可以代表行數,例如,該值可以代表在該行中的該給定列的資料值。這些<指標:值>2-元組或配對可以通常將一列中的所有非零資料值以遞加指標順序的方式線串在一起。線串的末端可被以例如負1的值(即,-1)的哨符值作劃分。零值可以由CSR表示法中省略或“壓出”。例如,針對列1的行的子集與針對列2的行的子集的CSR表示法可以被表示如下:
<2:a2>,<3:a3>,<7:a7>,<9:a9>,<12:a12>,<13:a13>,...<39:a39>
<3:b3>,<5:b5>,<6:b6>,<7:b7>,<11:b11>,<15:b15>,...<31:b31>
可以立即了解到,此CSR格式省去零值(例如,其可能對於點積或其他類型運算沒有貢獻)。然而,當轉換為CSR表示法時,由於在不同向量中的通常不同數量的零及/或在不同位置的零的移除時,此CSR表示法
或格式的最可能結果為在矩陣中的相同行(或向量組)的值,例如資料值a3及b3可能不會在相同相對2-元組位置及/或“對準”。此未對準係為元件符號206所顯示。例如,在圖1的矩陣中,值a3及b3均在行3中並垂直對齊,但在CSR表示法的列1及2中,元組<3:a3>係在元組名單中的左邊第二個位置(例如,因為a3是在列1中的第二個非零值),而列2配對<3:b3>係在元組名單中的左邊第一個位置(例如,因為b3係在列2中的第一個非零值)。類似地,資料元件a7及b7,與a23及b23也可能在以CSR格式表示時有不同相對位置。
如此之一可能結果為,當在向量緊縮資料或單指令多資料(SIMD)處理器中處理資料時,在該矩陣中之相同行中的值可能不再是位於緊縮資料運算元、向量或SIMD運算元的相同的對應垂直對準資料元件位置。在一些實施例中,可能想要運算相同行中的值(例如,於向量乘法的情況中等等)。這可能對這些值有效進行運算造成某些挑戰,因為經常向量、緊縮資料或SIMD運算都被設計以對對應垂直對準資料元件運算。例如,指令集可以令緊縮乘法指令,乘以第一與第二源緊縮資料運算元的最低效資料元件的對應配對、乘以該第一與第二源緊縮資料運算元的次一最低效資料元件的對應配對,並以此類推。相反地,該緊縮乘法指令可能無法運算在非對應或非垂直對準位置中之資料元件的乘法。
圖3為處理器310實施例的方塊圖,其可運
算以執行資料元件比較指令312實施例。在一些實施例中,該處理器可以為通用處理器(例如,用於桌上型、膝上型或其他電腦中的通用微處理器或中央處理單元(CPU)類型)。或者,該處理器也可以是特殊目的處理器。適當特殊目的處理器的例子包含但並不限於網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入式處理器、數位信號處理器(DSP)、及控制器(例如微控制器)。處理器也可以具有各種複雜指令集計算(CISC)架構、精減指令集計算(RISC)架構、很長指令字(VLIW)架構、混合架構、其他類型架構、或具有不同架構的組合(例如,不同核心可能具有不同架構)。
在運算期間,處理器310可以接收資料元件比較指令312。例如,該指令可以自記憶體在匯流排或其他互連上接收。該指令可以代表一巨集指令、組合語言指令、機器碼指令、或該處理器的指令集的其他指令或控制信號。在一些實施例中,資料元件比較指令可以外顯地指明(例如,透過一或更多欄位或一組位元)或以其他方式指明(例如,隱含地指明)第一源緊縮資料運算元322,其可以指明或以其他方式指示第二源緊縮資料運算元324,並可以指明或以其他方式指示至少一目的儲存位置326,其中第一結果遮罩運算元328與選用地第二結果遮罩運算元330將予以被儲存在該位置中。在一些實施例中,在各個該第一與第二源緊縮資料運算元中,可以有至少四個或至少八個資料元件。在一些實施例中,該等資料
元件可以表示對應於CSR表示法的指標,但本發明的範圍並不作此限定。例如,該指令可以使源及/或目的運算元規格欄位指明用於這些運算元的暫存器、記憶體位置、或其他儲存位置。或者,一或更多這些運算元可以選用地對該指令為隱含的(例如,對指令的運算碼為隱含的)。
再次參考圖3,在一些實施例中,第一源緊縮資料運算元322也可選用地被儲存在該級緊縮資料暫存器320的第一緊縮資料暫存器中,及第二源緊縮資料運算元324也可選用地被儲存在該組緊縮資料暫存器320的第二緊縮資料暫存器中。或者,記憶體位置或其他儲存位置可以選用地被用於一或更多這些運算元。各個該緊縮資料暫存器可以代表一晶粒上儲存位置,其可操作以儲存緊縮資料、向量資料或單指令多資料(SIMD)資料。緊縮資料暫存器可以表示架構上可見或對軟體及/或程式設計師可見的架構暫存器及/或為該處理器的指令集的指令所表示,以指明運算元的暫存器。這些架構暫存器對照於在給定微架構中的其他非架構暫存器(例如,暫時暫存器、重排序緩衝器、引退暫存器等等)。該等緊縮資料暫存器可以在不同微架構中以不同方式加以實施並且不限於任何特定類型的設計。緊縮資料暫存器的適當類型例子包含但並不限於專用實體暫存器、使用暫存器重命名的動態配置實體暫存器、及其組合。適當緊縮資料暫存器的特定例子包含但並不限於這些圖11所顯示與描述者。
再次參考圖3,在一些實施例中,處理器可以
選用地包含一組緊縮資料運算遮罩暫存器332。各個該緊縮資料運算遮罩暫存器可以表示晶粒上儲存位置,其可操作以儲存至少一緊縮資料運算遮罩。緊縮資料運算遮罩暫存器可以代表架構可見或可以為軟體及/或程式設計師所見的架構暫存器及/或為該處理器的指令集的指令所表示以指明運算元的暫存器。緊縮資料運算遮罩暫存器的適當類型的例子包含但並不限於專用實體暫存器、使用暫存器重命名之動態配置實體暫存器、及其組合。適當緊縮資料運算遮罩暫存器的特定例子包含但並不限於圖10所示與描述者,及在本案的後面所述之遮罩或k-遮罩暫存器。
如所進一步顯示,在一些實施例中,一或更多目的儲存位置326可以或選用地為在該組緊縮資料運算遮罩暫存器332中的一或更多緊縮資料運算遮罩暫存器。在一些實施例中,並將如下所解釋(例如,配合圖5),第一緊縮資料運算遮罩暫存器可以選用地用以儲存第一結果遮罩運算元328,及第二不同的緊縮資料運算遮罩暫存器可以選用地用以儲存第二結果遮罩運算元330。在其他實施例中,將如以下所解釋(例如,配合圖6),單一緊縮資料運算遮罩暫存器可以選用地用以儲存第一結果遮罩運算元328與第二結果遮罩運算元330兩者。仍在其他實施例中,將如下所解釋(例如,配合圖8),第一結果遮罩運算元328與第二結果遮罩運算元330可以選用地不被儲存在該組緊縮資料暫存器320的緊縮資料暫存器中。例如,結果遮罩運算元可以被儲存在與用以儲存第一與第二
源緊縮資料運算元不同的緊縮資料暫存器中。或者,用於第一源緊縮資料運算元或第二源緊縮資料運算元的緊縮資料暫存器可以選用地被再使用以儲存該第一與第二結果遮罩運算元。例如,該指令可以表示源/目的緊縮資料暫存器,其可明示或暗示地為處理器所了解為初始用於源緊縮資料運算元及後續用於儲存結果遮罩運算元。
再次參考圖3,處理器包含解碼單元或解碼器314。解碼單元可以接收及解碼資料元件比較指令。解碼單元可以輸出反映、代表、及/或由相對高階資料元件比較指令導出的一或更多相對低階指令或控制信號316(例如,一或更多微指令、微運算、微碼登錄點、解碼指令或控制信號等等)。在一些實施例中,解碼單元可以包含:一或更多輸入結構(例如,埠、互連、介面),以接收資料元件比較指令、與之耦接的指令識別及解碼邏輯,以識別及解碼該資料元件比較指令;及一或更多輸出結構(例如,埠、互連、介面)與之耦接,以輸出低階指令或控制信號。解碼單元可以使用各種不同機制加以實施,包含但並不限於微碼唯讀記憶體(ROM)、查找表、硬體實施法、可程式邏輯陣列(PLA)、及適用以執行解碼單元的其他機制。
在一些實施例中,不同於將資料元件比較指令直接提供給該解碼單元,一指令仿真器、轉譯器、變形軟體(morpher)、解譯器或其他指令轉換模組也可以被選擇使用。各種類型指令轉換模組均可以以軟體、硬體、
韌體或其組合的方式加以實施。在一些實施例中,指令轉換模組可以位於處理器外,例如,諸如在分開的晶粒上及/或在記憶體(例如,靜態、動態、或運行時間仿真模組)中。例如,指令轉換模組可以接收可以為第一指令集的資料元件比較指令,其可以仿真、轉譯、變形、解譯或以其他方式轉換該資料元件比較指令為可以是第二個不同指令集的一或更多對應中間指令或控制信號。該第二指令集的一或更多中間指令或控制信號可以提供給解碼單元(例如,解碼單元314),其可以將它們解碼為可以為處理器的本機硬體(例如,一或更多執行單元)所執行的一或更多低階指令或控制信號。
再次參考圖3,執行單元318係被耦接至解碼單元314、緊縮資料暫存器320、及選用地緊縮資料運算遮罩暫存器332(例如,當結果遮罩運算元328、330予以被儲存於其中時)。執行單元可以接收代表及/或由資料元件比較指令所導出的一或更多解碼或以其他方式轉換的指令或控制信號316。執行單元也可以接收第一源緊縮資料運算元322及第二源緊縮資料運算元324。執行單元可以反應於及/或由於資料元件比較指令的結果而操作(例如,反應於由該指令所解碼的一或更多指令或控制信號)以儲存第一結果遮罩運算元328及選用第二結果遮罩運算元330於由該指令所表示的一或更多目的儲存位置326中。在一些實施例中,對於在該等運算元中的該第一與第二源緊縮資料運算元之一(例如,第一源緊縮資料運
算元322)中的相同相對位置中的各個對應資料元件,至少一結果遮罩運算元(例如,第一結果遮罩運算元328)可以包含不同遮罩元件。在一些實施例中,各個遮罩元件可以表示在該第一與第二源緊縮資料運算元之前述一個(例如第一結果遮罩運算元328)中的對應資料元件是否等於在該第一與第二源緊縮資料運算元之另一個(例如,第二結果遮罩運算元330)中的任一資料元件。
在一些實施例中,對於在該等運算元中的第一源緊縮資料運算元322中的相同相對位置中的各個對應資料元件,第一結果遮罩運算元328可以包含不同遮罩元件,及該第一結果遮罩運算元328的各個遮罩元件可以表示在該第一源緊縮資料運算元322中的對應資料元件是否等於在第二源緊縮資料運算324中的任一資料元件。在一些實施例中,對於在該等運算元內的第二源緊縮資料運算元330中的相同相對位置中的各個對應資料元件,第二結果遮罩運算元330也可以包含不同遮罩元件,以及,該第二結果遮罩運算元330的各個遮罩元件可以表示在第二源緊縮資料運算元324中的對應資料元件是否等於在該第一源緊縮資料運算元322中的任一資料元件。在一些實施例中,各個遮罩元件可以為單一遮罩位元。在一些實施例中,結果可以是圖5至8所示與描述之任一者,雖然本發明之範圍並不作此限定。
執行單元及/或處理器可以包含特定或特別邏輯(例如,電晶體、積體電路、或可能組合韌體(例如,
儲存於非揮發記憶體中的指令)及/或軟體的其他硬體),其可以回應及/或由於資料元件比較指令的結果(例如,回應於由資料元件比較指令解碼的一或更多指令或控制信號)操作以執行資料元件比較指令及/或儲存該結果。在一些實施例中,執行單元可以包含一或更多輸入結構(例如,埠、互連、介面),以接收源運算元、與之耦接的電路或邏輯,以接收及處理源運算元並產生結果運算元、及與之耦接的一或更多輸出結構(例如,埠、互連、介面),以輸出結果運算元。在一些實施例中,執行單元也可以選用地包含比較電路或邏輯,其以全連接交叉開關耦接至該源運算元的資料元件,其中在第一源緊縮資料運算元中的各個資料元件可以與在第二源緊縮資料運算元中的各個資料元件進行比較,使得可以進行一種全元件對全元件的比較。例如,如果在第一源緊縮資料運算元中有整數N個元件及在第二源緊縮資料運算元中有整數M個元件,則在一些實施例中,可以執行N*M個比較。
為了避免模糊了該說明,只顯示與描述相當簡單的處理器310。然而,處理器可以選用地包含其他處理器元件。例如,各種不同實施例也可以包含圖15至18的任一所顯示與描述的元件的各種不同組合與架構。處理器的所有元件可以耦接在一起,以允許它們如想要地操作。
圖4為用以執行資料元件比較指令的實施例的方法436的實施例之方塊流程圖。在各種實施例中,該
方法可以為處理器、指令處理設備或其他數位邏輯裝置所執行。在一些實施例中,方法436也可以為圖3的處理器310所執行及/或處理器310內。於此所述之用於處理器310的元件、特性、及特定選用細節也可以選用地應用至方法436。或者,方法436可以為一類似或不同處理器或設備所執行及/或在其內。再者,處理器310可以執行與方法436類似或不同的方法。
方法包含在方塊437接收資料元件比較指令。各種態樣中,指令可以在處理器或其一部份(例如,指令擷取單元、解碼單元、匯流排介面單元等)接收。在各種態樣中,該指令可以自處理器外及/或晶粒外源(例如,自記憶體、互連等),或自處理器上及/或晶粒上源(例如,來自指令快取、指令佇列等)接收。該資料元件比較指令可以指明或以其他方式:表示包含至少四資料元件,或在其他情況中,至少八個或更多資料元件的第一源緊縮資料運算元;表示包含至少四個資料元件或在其他情況中,至少八個或更多資料元件的第二源緊縮資料運算元;並表示一或更多目的儲存位置。在一些實施例中,資料元件可以代表對應於CSR表示法的指標,雖然本發明的範圍並不限於此。
在方塊438,至少一結果遮罩運算元可以回應於及/或由於資料元件比較指令的結果被儲存在一或更多目的儲存位置。對於在該等運算元內的第一及第二源緊縮資料運算元之一相同相對位置中的各個對應資料元件該至
少一結果遮罩運算元可以包含不同遮罩元件。各個遮罩元件可以表示在該第一及第二源緊縮資料運算元之前述一個中的對應資料元件是否等於在該第一及第二源緊縮資料運算元之另一個中的任一資料元件。在其他實施例中,至少兩個結果遮罩運算元被儲存。在一些實施例中,該兩結果遮罩算元可以被儲存在單一遮罩暫存器中。在其他實施例中,該兩結果遮罩運算元可以被儲存在兩個不同遮罩暫存器中。仍在其他實施例中,該兩個結果遮罩運算元可以被儲存在緊縮資料運算元中,例如,諸如藉由儲存各個第一與第二結果遮罩運算元的一位元於該緊縮資料運算元的各個資料元件中。
該例示方法涉及架構運算(例如,由軟體方面看到)。在其他實施例中,該方法可以選用地包含一或更多微架構運算。例如,該指令可以被擷取、解碼、亂序排程,源運算元可以被存取,執行單元可以執行微架構運算,以實行該指令等。在一些實施例中,實行指令的微架構運算可以選用地包含比較第一源緊縮資料運算元的各個資料元件與第二源緊縮資料運算元的各個資料元件。在一些實施例中,交叉開關為主硬體比較邏輯也可以被使用以執行這些比較。
在一些實施例中,該方法可以選用地在加速稀疏向量-稀疏向量算術(例如稀疏向量-稀疏向量點積計算)的演算法期間或在其一部份被執行,雖然本發明之範圍並不作此限定。在一些實施例中,回應該指令而儲存的
結果遮罩運算元可以用以將源緊縮資料運算元中結果遮罩運算元指標匹配的資料元件合併或收集在一起。例如,在一些實施例中,結果遮罩運算元可以表示為遮罩資料元件合併指令的源運算元並為該遮罩資料元件合併指令所使用。在其他實施例中,結果遮罩運算元可以被最少處理,並且然後,所得結果遮罩運算元可以被表示為遮罩資料元件合併指令的源運算元並被該遮罩資料元件合併指令所使用。
圖5為一方塊圖,顯示可以回應資料元件比較指令的第一例示實施例而被執行的資料元件比較運算540的第一例示實施例。該指令可以指明或以其他方式表示第一源緊縮資料運算元522,並可以指明或以其他方式表示第二源緊縮資料運算元524。這些源運算元可以如前所述被儲存在緊縮資料暫存器、記憶體位置、或其他儲存位置中。
在例示實施例中,各個第一與第二源緊縮資料運算元為具有十六個32位元資料元件的512位元運算元,但其他大小運算元、其他大小資料元件、及其他數量的資料元件也可以被選用於其他實施例中。通常,在各個源緊縮資料運算元中的資料元件的數量可以等於該源緊縮資料運算元的位元的大小除以在單一資料元件中的位元的大小。在各種實施例中,各個源緊縮資料運算元的大小可以為64位元、128位元、256位元、512位元或1024位元,雖然本發明的範圍並不作此限定。在各種實施例中,
各個資料元件的大小可以為8位元、16位元、32位元或64位元,雖然本發明的範圍並不作此限定。也可以適用其他緊縮資料運算元大小與資料元件大小。在各種實施例中,於各個源緊縮資料運算元中,可以有至少四個、至少八個、至少十六個、至少三十二個或超出三十二個資料元件(例如,至少六十四個)。經常,在各個第一與第二源緊縮資料運算元的資料元件以數目可以為相同,雖然可以不限於此。
為了更進一步例示,將提及幾個適當替代格式的例示性例子,雖然本發明的範圍並不限於僅這些格式。第一例示格式為128位元緊縮位元組格式,其包含十六個8位元資料元件。第二例示格式為128位元緊縮字元格式,其包含八個16位元資料元件。第三例示格式為256位元緊縮位元組格式,其包含三十二個8位元資料元件。第四例示格式為256位元緊縮字元格式,其包含十六個16位元資料元件。第五例示格式為256位元緊縮雙字元格式,其包含八個32位元資料元件。第六例示格式為512位元緊縮字元格式,其包含三十二個16位元資料元件。第七例示格式為512位元緊縮雙字元格式,其包含十六個32位元資料元件。第八例示格式為512位元緊縮四字元格式,其包含八個64位元資料元件。
如所示,在一些實施例中,回應於指令及/或運算,第一結果遮罩運算元528可以被產生並被儲存於由該指令所指示的第一遮罩暫存器532-1中,及第二結果遮
罩運算元530可以被產生並被儲存於由該指令所指示的第二遮罩暫存器532-2中。在一些實施例中,第一與第二源緊縮資料運算元522,524可以輸入至執行單元518。回應於該指令,(例如由該指令所解碼的一或更多指令或控制信號516所控制)執行單元可以產生並儲存結果遮罩運算元。在一些實施例中,此可以包含執行單元比較在第一源緊縮資料運算元中的各個資料元件與在第二源緊縮資料運算元中的各個資料元件。例如,在第一源緊縮資料運算元中的各個十六個資料元件可以與在第二源緊縮資料運算元中的各個十六個資料元件比較,以作總數兩百五十六次的比較。
各個結果遮罩運算元可以對應於源緊縮資料運算元的不同一個。例如,在例示實施例中,第一結果遮罩運算元可以對應於第一源緊縮資料運算元,及第二結果遮罩運算元可以對應於第二源緊縮資料運算元。在一些實施例中,各個結果遮罩運算元可以具有與在對應源緊縮資料運算元中的資料元件數目相同的遮罩元件數目。在所例示實施例中,各個遮罩元件為單一位元。如所示,第一結果遮罩運算元可以具有十六個1位元遮罩元件,各個對應於在該等運算元內的第一源緊縮資料運算元的相同相對位置中的十六個資料元件的不同一個,及第二結果遮罩運算元可以具有十六個1位元遮罩元件,各個對應於在該等運算元內的第二源緊縮資料運算元的相同相對位置中的十六個資料元件的不同一個。假如在其他實施例中的其他數目
的資料元件,如果第一源緊縮資料運算元具有N個資料元件,及第二源緊縮資料運算元具有M個資料元件,則可以執行N*M次的比較,及對應於第一源緊縮資料運算元的第一N位元結果遮罩可以被儲存,及對應於第二源緊縮資料運算元的第二M位元結果遮罩可以被儲存。
在一些實施例中,各個遮罩元件可以具有一值(例如,在此情況中為一位元值),用以表示在其對應源緊縮資料運算元中的對應源資料元件(例如,在相同相對位置中)是否匹配在其他非對應源緊縮資料運算元中的任一源資料元件。例如,在第一結果遮罩運算元中的各個位元可以具有一位元值,用以表示在第一源緊縮資料運算元中的對應資料元件(例如,在相同相對位置中)是否匹配在第二源緊縮資料運算元中的任一資料元件,然而在第二結果遮罩運算元中的各個位元具有一位元值,以表示在第二源緊縮資料運算元中的對應資料元件(例如在相同相對位置中)是否匹配在第一源緊縮資料運算元中的任一資料元件。依據一被用於例示實施例中的一個可能習慣,設定為二進制一(即,1)的各個遮罩位元可以表示在其對應源緊縮資料運算元中的對應資料元件匹配或等於在其他非對應源緊縮資料運算元中的至少一資料元件。相反地,被清除為二進制零(即,0)的各個遮罩位元可以表示在其對應源緊縮資料運算元中的對應資料元件並不匹配或等於在其他非對應源緊縮資料運算元中的任一資料元件。相反的習慣也可適用於其他實施例。
例如,在特別顯示的例示實施例中,在第一源緊縮資料運算元中只有具有值3、7、及23的資料元件才匹配或等於在第二源緊縮資料運算元中的資料元件。考量第一源緊縮資料運算元,值3的資料元件為由左或最低效位元的第二資料元件位置,及值7的資料元件為由左或最低效位元的第三資料元件位置,及值23的資料元件為由左或最低效位元的第十資料元件位置。對應地,在第一結果遮罩運算元中,只有由左或最低效端的第二、第三、及第十遮罩位元係被設定為二進制一(即,1),用以表示在第一源緊縮資料運算元中的對應資料元件匹配在該第二源緊縮資料運算元中的至少一資料元件,而所有其他位元係被清除為二進制零(即,0),以表示在第一源緊縮資料運算元中的對應資料元件並不匹配第二源緊縮資料運算元中的任何資料元件。
同樣地,考量第二源緊縮資料運算元,值3的資料元件為由左或最低效位元的第一資料元件位置,值7的資料元件為由左或最低效位元的第四資料元件位置,及值23的資料元件為由左或最低效位元的第九資料元件位置。對應地,在第二結果遮罩運算元中,只有由左或最低效端的第一、第四、及第九遮罩位元被設定為二進制一(即,1),以表示在第二源緊縮資料運算元中的對應資料元件匹配在第一源緊縮資料運算元中的至少一資料元件,而所有其他位元被清除為二進制零(即,0),以表示在第二源緊縮資料運算元中的對應資料元件並不匹配第
一源緊縮資料運算元中的任何資料元件。
在一些實施例中,第一與第二遮罩暫存器可以代表處理器的一組架構暫存器的暫存器,其係為該處理器的指令集的遮罩緊縮資料指令所使用以執行緊縮資料運算遮罩、預測或條件控制。例如,在一些實施例中,第一與第二遮罩暫存器可以為在圖3的該組緊縮資料運算遮罩暫存器322中的暫存器。遮罩緊縮資料指令可以被操作以表示(例如,具有一欄位表示)該遮罩暫存器為予以使用以遮罩、預測或條件控制緊縮資料運算的源運算元。在一些實施例中,遮罩、預測或條件控制可以以每資料元件粒度提供,使得在不同資料元件、或對應資料元件配對的運算可以以與其他者分開及/或無關地被遮罩、預測或條件控制。例如,各個遮罩位元可以具有第一值,以允許該運算被執行並允許對應結果資料元件被儲存在目的中,或者,可以具有第二不同值以不允許該運算被執行及/或不允許對應結果資料元件被儲存在該目的中。依據一可能習慣,被清除為二進制零(即,0)的遮罩位元可以代表一遮罩清除運算,不能對它執行對應運算及/或儲存對應結果,然而設定為二進制一(即,1)的遮罩位元則可以表示未遮罩運算,可以對其執行對應運算及儲存對應結果。相反的習慣也是有可能。
在圖5所示之實施例中,第一與第二結果遮罩運算元被儲存在不同遮罩暫存器(例如,不同緊縮資料運算遮罩暫存器)中。對於一些實施例,一個可能優點為
各個結果遮罩運算元及/或遮罩暫存器可以直接適用於作為用於例如遮罩或預測資料元件合併指令(舉例而言,諸如VPCOMPRESS指令)的遮罩或預測緊縮資料指令的源緊縮資料運算遮罩運算元,雖然本發明範圍並不限於此用途。例如,遮罩或預測資料元件合併指令的兩個實例可以各個使用第一與第二結果遮罩運算元的不同一個作為用於資料元件合併運算的源遮罩、預測或條件控制運算元,且實際上並不需要對第一與第二結果遮罩運算元進行任何額外的處理。例如,結果遮罩或遮罩暫存器的未遮罩位元或遮罩元件可以對應於被比較的CSR 2元組的匹配指標,以及,遮罩或預測資料元件合併指令可以使用這些未遮罩位元或遮罩元件以將這些CSR 2元組的對應值合併在一起。如何以此方式使用這些遮罩或預測資料元件合併指令的其他細節將進一步討論如下。
圖6為顯示可以回應於資料元件比較指令的第二例示實施例執行的資料元件比較運算640的第二例示實施例的方塊圖。運算640某些程度上類似於圖5的運算540。為了避免模糊了本說明,主要將描述運算640的不同及/或額外特性,而不會重覆有關於運算540的所有選用地類似或共用特性與細節。然而,應了解的是,除非已特別說明或清楚表達,否則運算540的前述特性與細節包含其變化與替代實施例也可以選用地應用至運算640。
如於圖6的實施例中,該指令可以指明或以其他方式表示第一源緊縮資料運算元622,並可以指明或
以其他方式表示第二源緊縮資料運算元624。第一與第二源緊縮資料運算元可為到執行單元618之輸入。回應於該指令(例如為一或更多指令或自該指令解碼的控制信號616所控制),該執行單元可以產生並儲存第一結果遮罩運算元628及第二結果遮罩運算元630。
相較於圖5的實施例,圖6的實施例的一差異在於第一與第二結果遮罩運算元係被儲存在單一遮罩暫存器632中,而不是各個被儲存在不同遮罩暫存器中(例如,第一遮罩暫存器532-1及第二遮罩暫存器532-2)。明確地說,第一結果遮罩運算元628係被儲存在單一遮罩暫存器的最低效16位元中,及第二結果遮罩運算元630係被儲存在該單一遮罩暫存器的下一相鄰16位元中。或者,第一與第二遮罩運算元的位置可以選用地互換。在此時,該單一遮罩暫存器的最低效部份(例如,最低效16位元)係對應於源緊縮資料運算元之一(例如,在此情況中的第一源緊縮資料運算元),及該單一遮罩暫存器的較高效部份(例如,下一較高效16位元)對應於該源緊縮資料運算元的另一者(例如,在此情況中的第二源緊縮資料運算元)。在例示中,遮罩暫存器係被顯示只具有32位元,但在其他實施例中,其可以具有更少或更多的位元,例如,諸如64位元。
在一些實施例中,最低效第一結果遮罩運算元可以直接適用於作為用於遮罩緊縮資料指令,例如遮罩或預測資料元件合併指令(舉例而言,諸如
VPCOMPRESS指令)的源緊縮資料運算遮罩運算元,雖然本發明的範圍並不限於此用途。再者,簡單位移也可以用以將遮罩暫存器的位元[16:31]移位入位元[0:15],使得第二結果遮罩運算元可以直接適用於作為用於遮罩緊縮資料指令,例如遮罩或預測資料元件合併指令(舉例而言,諸如VPCOMPRESS指令)的源緊縮資料運算遮罩運算元,雖然本發明的範圍並不限於此用途。
圖7為顯示可以回應於資料元件比較指令的第三例示實施例來執行的資料元件比較運算740的第三例示實施例的方塊圖。運算740相對於圖5的運算540有某些相似性。為了避免模糊該說明,將主要說明運算740的不同及/或額外特性,對於相對於運算540的所有選用的類似或共同特性及細節將不再重覆。然而,明顯地,除非特別描述或清楚表達,否則運算540的前述特徵與細節包含其變化與替代實施例也可以選用地應用至運算740。
如於圖7的實施例中,該指令可以指明或以其他方式表示第一源緊縮資料運算元722,並可以指明或以其他方式表示第二源緊縮資料運算元724。第一與第二源緊縮資料運算元可為到執行單元718之輸入。回應於該指令(例如為一或更多指令或自該指令解碼的控制信號716所控制),該執行單元可以產生並儲存結果。
相較於圖5的實施例,圖7的實施例的一差異在於該執行單元718只可以產生及儲存單一結果遮罩運算元728。在一些實施例中,單一結果遮罩運算元可以被
儲存在遮罩暫存器(例如,緊縮資料運算遮罩暫存器)中。在一些實施例中,該單一結果遮罩運算元可以對應於該第一與第二源緊縮資料運算元之一(例如,在所例示之第一源緊縮資料運算元中)。在一些實施例中,結果遮罩運算元728及/或遮罩暫存器732可以直接適用以使用作為用於遮罩緊縮資料指令,例如遮罩或預測資料元件合併指令(舉例而言,諸如VPCOMPRESS指令)的源緊縮資料運算遮罩運算元,雖然本發明的範圍並不限於此一用途。(具有相同運算碼)指令的不同實例可以被再次執行,以產生用於其他源緊縮資料運算元的結果遮罩運算元。
圖8為顯示可以回應於資料元件比較指令的第四例示實施例的資料元件比較運算840的第四例示實施例的方塊圖。運算840相對於圖5的運算540具有某些類似性。為了避免模糊本說明,主要將描述運算840的不同及/或額外特性,而不重覆相對於運算540的全部選用類似或共同特性與細節。然而,應了解的是,除非特別說明或清楚表達,否則運算540的前述特性與細節包含其變化與替代實施例也可以選用地應用至運算840。
如在圖8的實施例中,該指令可以指明或以其他方式表示第一源緊縮資料運算元822,並可以指明或以其他方式表示第二源緊縮資料運算元824。第一與第二源緊縮資料運算元可為到執行單元818之輸入。回應於該指令(例如,為一或更多指令或自該指令解碼的控制信號
816所控制),該執行單元可以產生並儲存第一結果遮罩運算元828及第二結果遮罩運算元830。
相對於圖5的實施例,圖8的實施例的一個差異在於該執行單元818可以產生及儲存第一與第二結果遮罩運算元828、830於結果緊縮資料運算元820中。例如,結果緊縮資料運算元可以儲存在緊縮資料暫存器、記憶體位置或其他儲存位置中。在一實施例中,結果緊縮資料運算元或暫存器可以為512位元運算元或暫存器,但本發明的範圍並不作此限定。另一差異為第一與第二結果遮罩運算元的遮罩位元可以配置在其他非遮罩位元內。如所示,在結果緊縮資料運算元中的各個結果資料元件中可以有兩位元使用作為遮罩位元。在各個資料元件中的這兩位元中的一位元可以被使用作為第一結果遮罩運算元,而另一位元則用於第二結果遮罩運算元。例如,各個資料元件的兩個最低效位元可以被選用、各個資料元件的兩個最高效位元可以被選用,最低效與最高效位元可以被選用,或其他組的位元可以被選用。在例示實施例中,兩最低效位元被使用,及該兩位元中的最低效位元係被使用於第一遮罩運算元,而兩位元中的較高效位元被使用於第二遮罩運算元,雖然這並非必需的。
以下虛擬碼表示命名為VXBARCMPU的資料元件比較指令的一例示實施例:
在此虛擬碼中,Q代表32位元四倍字,而DQ代表64位元雙四倍字。符號“|”代表邏輯“或”。用語“match”代表例如整數的相等性比較。
現在,在圖5-8的實施例中,在結果遮罩運算元中的各個位元提供總結或累積表示是否其相關源資料元件匹配在其他非對應運算元中的任一源資料元件。同時,在圖5-8的實施例中,各個結果遮罩運算元具有與在其對應源運算元中的資料元件數相同的遮罩位元數。因此,這些遮罩位元成為一種格式,其係大致良好適用於作為例如遮罩或預測資料元件合併指令(例如遮罩VPCOMPRESS指令)的遮罩緊縮資料指令的遮罩運算元。
另一可能方式將會是儲存經比較位元的數量等於在所作出比較數量的數量。各個這些位元單獨將不會總結或累積表示是否其對應源資料元件匹配在其他非對應運算元中的任一源資料元件。相反地,各個這些經比較位元將對應於在第一源緊縮資料運算元的資料元件與第二源
緊縮資料運算元的資料元件的不同組合間執行的單一比較。例如,當於各個具有N個資料元件的兩源緊縮資料運算元時,可以執行N*N比較,並且,N*N結果遮罩位元可以被使用此替代方式加以儲存。例如,當兩個十六資料元件運算元時,可以執行兩百五十六比較,及儲存256位元結果遮罩,而不是只是兩個16位元結果遮罩。
然而,此一替代方法的可能缺點為結果遮罩運算元可能傾向於對某些類型的後續運算為較無用及/或低效格式。例如,無單一此經比較位元表示是否在一源中的資料元件在另一源中有匹配資料元件,而不必進一步處理。因此,這些經比較結果遮罩位元在沒有進一步處理下可能不適用以作為例如遮罩或預測資料元件合併指令(例如,遮罩VPCOMPRESS指令)的遮罩緊縮資料指令的遮罩運算元。另外,提供用於所有比較結果的額外位元可能傾向於佔用更多互連頻寬、暫存器空間、功率等等。
相反地,各個第一與第二結果遮罩運算元528、530及/或第一與第二遮罩暫存器532-1、532-2可以直接為遮罩緊縮資料指令(例如,遮罩VPCOMPRESS指令)所使用作為源遮罩。同樣地,第一結果遮罩運算628可以直接為遮罩緊縮資料指令(例如,遮罩VPCOMPRESS指令)所使用作為源遮罩,及第二結果遮罩運算630可以容易(例如,以簡單16位元位移)直接作成可用。同樣地,結果遮罩運算元728及/或遮罩暫存器732可以直接為遮罩緊縮資料指令(例如,遮罩
VPCOMPRESS指令)所使用作為源遮罩。
在一些實施例中,在如圖3-8所示之任一實施例中,如果對於該指令其可以為固定(例如,對該指令的運算碼為固定或隱含),或可以以其他方式確定,源運算元的資料元件各個被以下數順序排列(例如,當與CSR格式資料的指標一起動作或當與某些其他類型資料一起作動時的情況),某些比較可以被選擇地避免。例如,當迅速決定在源緊縮資料運算元中的元件都不匹配時,比較可以避免。例如,邏輯可以包含用以測試是否在第一源緊縮資料運算元中的最低效資料元件大於在第二源緊縮資料運算元中的最高效資料元件;或在第一源緊縮資料運算元中的最高效資料元件小於在第二源緊縮資料運算元中的最低效資料元件;及如果這兩者任一為真,則避免比較一源中的各個資料元件與另一源中的各個資料元件。另一方面,這也可以協助以降低功率消耗,但為選用並不是必要的。
圖9為可以回應於遮罩資料元件合併指令執行的遮罩資料元件合併運算996的例子的方塊圖。適用於實施例的此一指令實施例的例子為x86中的VPCOMPRESSD指令,但本發明的用途並不需要如此。
遮罩資料元件合併指令可以表示源緊縮資料運算元997。在一些實施例中,源緊縮資料運算元可以儲存對應於CSR格式的指標之資料值。例如,源緊縮資料運算元可以儲存資料值,其對應於第一源緊縮資料運算元522、622、722或822之一的指標。再次參考圖1的稀疏
矩陣,資料值a3對應於行3的指標3,資料值a7對應於行7的指標7,並以此類推。
遮罩資料元件合併指令也可以表示源遮罩運算元928。在各種實施例中,源遮罩運算元可以為第一結果遮罩運算元528、第一結果遮罩運算元628、或結果遮罩運算元728。或者,結果緊縮資料運算元820可以被最少處理,以產生源遮罩運算元928。
源緊縮資料運算元997及源緊縮運算元928可以提供給執行單元918。執行單元可以反應於該指令及/或運算操作以儲存結果緊縮資料運算元998。在一些實施例中,該指令/運算可以使得執行單元將在源緊縮資料運算元997中的作動資料元件相連儲存於在結果緊縮資料運算元的最低效資料元件位置,這對應於源遮罩運算元928的相同相對位置的遮罩位元被設定為二進制一。結果緊縮資料運算元的所有剩餘資料元件可以被清除為零。如所示,源緊縮資料運算元中的具有對應設定遮罩位元的唯三個作動值的三個值a3、a7及a23可以合併在結果緊縮資料運算元的三個最低效資料元件位置中,所有更高效結果資料元件歸零。在此情況中,VPCOMPRESSD指令使用歸零遮罩(zeroing masking),其中遮罩結果資料元件被歸零。
遮罩資料元件合併指令的另一實例可以類似地被執行以將在另一結果緊縮資料運算元的三個最低效資料元件位中的匹配值b3、b7及b23合併在一起。例如,
第二結果遮罩運算元530可以被與來自稀疏矩陣100的列2的CSR表示法的對應值一起使用。藉由此方法,以CSR格式表示的資料的匹配或相等資料值可以被隔離、合併及置入與緊縮資料運算元中作相同相對位置的垂直SIMD對準。此等運算可以被重覆,直到稀疏矩陣端的向量或列到達其末端為止。這可以協助以完成這些匹配資料值的有效垂直SIMD處理。較佳地,在一態樣中,這也可以用以協助改良稀疏向量-稀疏向量算術運算的效能。
圖10為一適當組緊縮資料運算遮罩暫存器1032的例示實施例之方塊圖。在例示實施例中,該組包含八個標示為k0至k7的暫存器。替代實施例可以包含少於八個暫存器(例如,二、四、六等),或多於八個暫存器(例如,十六、三十二等)。各個這些暫存器可以被用以儲存緊縮資料運算遮罩。在例示實施例中,各個暫存器為64位元。在其他實施例中,暫存器的寬度可以為較64位元寬(例如,80位元、128位元等),或較64位元窄(例如,8位元、16位元、32位元等)。這些暫存器可以以不同方式實施並且不限於任何特定類型的電路或設計。適當暫存器的例子包含但並不限於專屬實體暫存器、使用暫存器重命名之動態配置實體暫存器、及其組合。
在一些實施例中,緊縮資料運算遮罩暫存器1032可以為分開專屬組的架構暫存器。在一些實施例中,該等指令可以以與用以編碼或指明其他類型暫存器(例如緊縮資料暫存器)的指令格式的不同位元或一或更
多不同欄位,來編碼或指明所述緊縮資料運算遮罩暫存器。例如,指令可以使用三個位元(例如,3位元欄位)以編碼或指明八個緊縮資料運算遮罩暫存器k0至k7中之任一者。在其他實施例中,當有較少或較多緊縮資料運算遮罩暫存器時,也可以分別使用更少或更多位元。在一特定實施法中,只有緊縮資料運算遮罩暫存器k1至k7(不含k0)可以被定址為預測運算元,以預測遮罩緊縮資料運算。暫存器k0可以使用作為一般源或目的,但可不被編碼為預測運算元(例如,如果k0被指明,則其具有“無遮罩”編碼),但此並非必需。
圖11為適當組的緊縮資料暫存器1120的例示實施例的方塊圖。緊縮資料暫存器包含三十二個512位元緊縮資料暫存器,標示由ZMM0至ZMM31。在所例示實施例中,該較低十六個暫存器,即ZMM0-ZMM15,的較低階256位元被混淆或重疊於該個別256位元緊縮資料暫存器上,其分別標示為YMM0-YMM15,但也可以不必如此。同樣地,在所例示實施例中,暫存器YMM0-YMM15的較低階128位元係被混淆或重疊於個別128位元緊縮資料暫存器上,其標示為XMM0-XMM15之上,但也可以不必如此。512位元暫存器ZMM0-ZMM31可操作以保持512位元緊縮資料、256位元緊縮資料、或128位元緊縮資料。256位元暫存器YMM0-YMM15係可操作以保持256位元緊縮資料或128位元緊縮資料。128位元暫存器XMM0-XMM15可操作以保持128位元緊縮資料。在
一些實施例中,各個暫存器可以用以儲存緊縮浮點資料或緊縮整數資料。不同資料單元大小係被支援,包含至少8位元位元組資料、16位元字元資料、32位元雙字元、32位元單精準浮點資料、64位元四倍字、及64位元雙精準浮點資料。在替代實施例中,可以使用不同數量的暫存器及/或不同大小的暫存器。仍在另一實施例中,暫存器可以可不使用較大暫存器混淆在較小暫存器上及/或可以可不被用以儲存浮點資料。
指令集可以包含一或更多指令格式。給定指令格式界定各種欄位(位元數量、位元位置),以指明予以執行的運算(運算碼)及該運算所將要執行的運算元等等。一些指令格式透過指令樣板(次格式)的定義被進一步細分。例如,給定指令格式的指令樣板可以被界定以具有不同子集的指令格式欄位(所包含欄位典型有相同順序,但至少一部份具有不同位元位置,因為其中包含較少欄位)及/或被界定以具有作不同解譯的給定欄位。因此,ISA的各個指令係使用給定指令格式(並且,如果被以該指令格式的一個給定指令樣板界定的話)加以表示並包含用以指明該運算與該等運算元的欄位。例如,例示ADD指令具有一特定運算碼與一指令格式,其係包含:一運算碼欄位,用以指明該運算碼;與選擇該運算元的運算元欄位(源1/目的及源2);及在此指令流中發生的此ADD指令將在該等運算元欄位中具有特定內容,來選擇特定運算元。一組稱為先進向量擴充(AVX)(AVX1及
AVX2)並使用向量擴充(VEX)編碼方案的SIMD擴充已經被釋出及/或公開(例如,見Intel®64及IA-32架構軟體開發者手冊,2011年十月;及見Intel®先進向量擴充程式規劃參考手冊,2011年六月)。
例示指令格式
於此所述之指令的實施例可以以不同格式實施。另外,例示系統、架構、及管線係被描述如下。指令的實施例可以執行於此等系統、架構、及管線上,但本案並不限於此。
VEX指令格式
VEX編碼允許指令具有兩個以上運算元,並允許SIMD向量暫存器長於128位元。VEX前置(prefix)的使用提供三運算元(或更多)語法(syntax)。例如,先前兩運算元指令執行的運算,例如,A=A+B,其重寫源運算元。VEX前置的使用使得運算元執行非破壞運算,例如,A=B+C。
圖12A例示包含VEX前置1202、真運算碼欄位1230、Mod R/M位元組1240、SIB位元組1250、位移欄位1262、及IMM8 1272的例示AVX指令格式。圖12B例示作成全運算碼欄位1274及基礎運算欄位1242的來自圖12A的欄位。圖12C例示作成暫存器指標欄位1244的來自圖12A的欄位。
VEX前置(位元組0-2)1202被編碼為三位元組形式。第一位元組為格式欄位1240(VEX欄位元組0,位元[7:0],其包含明示C4位元組值(用以區分C4指令格式的特有值)。第二至第三位元組(VEX位元組1-2)包含提供特定能力的若干位元欄位。明確地說,REX欄位1205(VEX位元組1,位元[7-5])由VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)、及VEX.B位元欄位(VEX位元組1,位元[5]-B)構成。該等指令的其他欄位編碼暫存器指標的較低3位元,如同本技藝所知(rrr、xxx、及bbb),使得Rrrr、Xxxx、及Bbbb可以藉由相加VEX.R、VEX.X與VEX.B而形成。運算碼映射欄位1215(VEX位元組1,位元[4:0]-mmmmm)包含用以編碼所暗示的先導運算碼位元組的內容。W欄位1264(VEX位元組2,位元[7]-W)係為表示法VEX.W所代表,並取決於該指令而提供不同功能。VEX.vvvv 1220的角色(VEX位元組2,位元[6:3]-vvvv)可以包含如下:1)VEX.vvvv編碼被指明為反相(1的補數)形式第一源暫存器運算元並於具有2或更多源運算元的指令有效;2)VEX.vvvv編碼目的暫存器運算元,對應某些向量位移,被以1的補數形式所指明;或3)VEX.vvvv並未編碼任何運算元,該欄位被保留並應包含1211b。如果VEX.L 1268大小欄位(VEX位元組2,位元[2]-L)=0,則其表示128位元向量;如果VEX.L=1,則其表示256位元向
量。前置編碼欄位1225(VEX位元組2,位元[1:0]-pp)提供用於基礎運算欄位的額外位元。
真運算碼欄位1230(位元組3)也被稱為運算碼元位組。運算碼的部份係在此欄位中被指明。
MOD R/M欄位1240(位元組4)包含MOD欄位1242(位元[7-6])、Reg欄位1244(位元[5-3])、及R/M欄位1246(位元[2-0])。Reg欄位1244的角色可以包含如下:編碼目的暫存器運算元或源暫存器運算元(Rrrr的rrr),或被視為運算碼擴充並且未被用以編碼任何指令運算元。R/M欄位1246的角色可以包含如下:編碼指令運算元,其參考一記憶體位址,或編碼目的暫存器運算元或源暫存器運算元。
標度、指標、基礎(SIB)-標度欄位1250(位元組5)的內容包含SS1252(位元[7-6]),其係用以記憶體位址產生。SIB.xxx 1254(位元[5-3])與SIB.bbb 1256(位元[2-0])的內容已經先前加以表示有關於暫存器指標Xxxx與Bbbb。
位移欄位1262與立即值欄位(IMM8)1272包含位址資料。
同屬向量友善指令格式
向量友善指令格式係為一指令格式,其適用於向量指令(例如,其中有某些欄位為向量運算所特定)。雖然實施例係被描述通用向量友善指令格式而支援
向量與純量運算,但其他實施例也可以只使用以向量友善指令格式表示的向量運算。
圖13A-13B為依據本發明實施例之同屬向量友善指令格式與其指令樣板的方塊圖。圖13A為依據本發明之實施例之同屬向量友善指令格式與其類型A指令樣板的方塊圖;而圖13B為依據本發明實施例之例示同屬向量友善指令格式與其類型B指令樣板的方塊圖。更明確地說,被界定有類型A與類型B指令樣板的同屬向量友善指令格式1300,其兩者包含無記憶體存取1305指令樣板及記憶體存取1320指令樣板。在向量友善指令格式文中的用語“同屬”表示該指令格式並未被綁住至任何特定指令集。
雖然本發明的實施例將被描述為其中向量友善指令格式支援如下:64位元組向量運算元長度(或大小)具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)(並且,因此,64位元組向量構成有16雙字元-大小元件或者8四倍字大小元件);64位元組向量運算元長度(或大小)具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小);32位元組向量運算元長度(或大小)具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小);及16位元組向量運算元長度(或大小)具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1
位元組)資料元件寬度(或大小),但其他實施例也可以支援更多、更少及/或不同的向量運算元大小(例如,256位元組向量運算元)具有更多、更少或不同的資料元件寬度(例如,128位元(16位元組)資料元件寬度)。
在圖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、阿爾發(α)欄位1352及貝它(β)欄位1354。擴充運算欄位1350允許共同群的運算以單一指令,而不
是以2、3、或4指令執行。
標度欄位1360-其內容允許用於記憶體位址產生的指標欄位的內容的標度(例如,用於使用2標度*指標+基礎的位址產生)。
位移欄位1362A-其內容被使用作為記憶體位址產生的一部份(例如,用於使用2標度*指標+基礎+位移的位址產生)。
位移因數欄位1362B(注意位移欄位1362A的並列位置直接在位移因素欄位1362B上表示一個或另一個被使用)-其內容被使用作為位址產生的一部份;其指明將為記憶體存取的大小(N)所縮放的位移因素-其中N為在記憶體存取中的位元組的數目(例如,用於位址產生,其使用2標度*指標+縮放位移)。冗餘低階位元被忽略,且因此,位移因數欄位的內容係被乘以記憶體運算元總大小(N),以產生計算有效位址所用的最終位移。N的值係在運行時間中根據全運算碼欄位1374(如以下所述)及資料演算欄位1354C為處理器硬體所決定。當位移欄位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指令樣板之情況中,阿爾發(α)欄位1352被解譯為RS欄位1352A,其內容區分不同擴充運算類型中之哪一個將被執行(例如,捨入1352A.1及資料轉換1352A.2分別被指明用於無記憶體存取捨入類型運算1310及無記憶體存取資料轉換類型運算1315指令樣板),而貝它(β)欄位1354區分指定類型的哪一運算將被執行。在無記憶體存取1305指令樣板中,標度欄位1360、位移欄位1362A、及位移標度欄位1362B並未出現。
無記憶體存取指令樣板-全捨入控制類型運算
在無記憶體存取全捨入控制類型運算1310指令樣板中,貝它欄位1354被解譯為捨入控制欄位1354A,其內容提供靜態捨入。雖然在本發明之所述實施例中,捨入控制欄位1354A包含抑制全浮點異常(SAE)欄位1356及捨入運算控制欄位1358,但其他實施例也支
援編碼這兩概念入相同欄位中,或者,只有這些概念/欄位之一或另一(例如,可以只具有捨入運算控制欄位1358)。
SAE欄位1356-其內容區分是否要去能異常事件報告;當SAE欄位1356的內容表示抑制被致能時,則給定指令不報告任何類型的浮點異常旗標並且不提出任何浮點異常處置器。
捨入運算控制欄位1358-其內容區分一群捨入運算(例如,捨進、捨去、捨向零、及捨至最近值)中之哪一個要執行。因此,捨入運算控制欄位1358允許每一指令為主地改變捨入模式。在本發明之一實施例中,處理器包含控制暫存器,用以指明捨入模式,該捨入運算控制欄位1350的內容置換(override)該暫存器值。
無記憶體存取指令樣板-資料轉換類型運算
在無記憶體存取資料轉換類型運算1315指令樣板中,貝它欄位1354被解譯為資料轉換欄位1354B,其內容區分若干資料轉換中之哪一個將被執行(例如,無資料轉換、拌和、廣播)。
在類型A的記憶體存取1320指令樣板的情況中,阿爾發欄位1352被解譯為驅逐提示欄位1352B,其內容區分驅逐提示的哪一個將被使用(在圖13A中,時序1352B.1及非時序1352B.2分別被指明用於記憶體存取,時序1325指令樣板及記憶體存取,非時序1330指令樣
板),而貝它欄位1354係被解譯為資料演算欄位1354C,其內容區分若干資料演算運算(也稱為基元)中之哪一個將被執行(例如,無演算;廣播;源的上轉換;及目的的下轉換)。記憶體存取1320指令樣板包含標度欄位1360,及選用地位移欄位1362A或位移標度欄位1362B。
向量記憶體指令執行具有轉換支援的來自記憶體的向量載入及將向量儲存至記憶體。如同一般向量指令,向量記憶體指令以資料元件為單位的方式傳送資料進出記憶體,實際被傳送的元件係為被選擇作為寫入遮罩的向量遮罩內容所支配。
記憶體存取指令樣板-時序
時序資料係為似乎將被足夠快速地重新使用,以由快取得到利益的資料。然而,這是提示及不同處理器可以以不同方式實施它,包含整個忽略該提示。
記憶體存取指令樣板-非時序
非時序資料為似乎不會很快重新使用以在第1階快取的快取中得利並應給予驅逐用優先權的資料。然而,這是提示及不同處理器可以以不同方式實施它,包含整個忽略該提示。
類型B的指令樣板
在類型B的指令樣板的情況中,阿爾發欄位1352被解譯為寫入遮罩控制(Z)欄位1352C,其內容區分為寫入遮罩欄位1370所控制的寫入遮罩是否應被合併或歸零。
在類型B的非記憶體存取1305指令樣板情況中,貝它欄位1354的部份被解譯為RL欄位1357A,其內容區分不同擴充運算類型之哪一個將被執行(例如,捨入1357A.1及向量長度(VSIZE)1357A.2係分別指明用於無記憶體存取寫入遮罩控制部份捨入控制類型運算1312指令樣板及非記憶體存取寫入遮罩控制VSIZE類型運算1317指令樣板),而貝它欄位1354的其他則區分指定類型的哪一運算將被執行。在無記憶體存取1305指令樣板中,標度欄位1360、位移欄位1362A、及位移標度欄位1362B並未出現。
在無記憶體存取寫入遮罩控制部份捨入控制類型運算1310指令樣板中,貝它欄位1354的剩餘部份被解譯為捨入運算欄位1359A及異常事件報告被去能(給定指令並未報告任何類型浮點異常旗標並不會提出任何浮點異常處置器)。
捨入運算控制欄位1359A-如同捨入運算控制欄位1358,其內容區分一群捨入運算(例如,捨進、捨去、捨向零、及捨至最近值)的哪一被執行。因此,捨入運算控制欄位1359A允許以每指令為主地作捨入模式的改變。在本發明之一實施例中,其中處理器包含用以指明捨
入模式的控制暫存器,及捨入運算控制欄位1350的內容置換該暫存器值。
在無記憶體存取寫入遮罩控制VSIZE類型運算1317指令樣板中,貝它欄位1354的剩餘部份被解譯為向量長度欄位1359B,其內容區分若干資料向量長度之哪一個將被執行(例如,128、256或512位元組)。
在類型B的記憶體存取1320指令樣板的情況中,貝它欄位1354的一部份被解譯為廣播欄位1357B,其內容區分廣播類型演算運算是否被執行,而貝它欄位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欄位、位移欄位及立即值欄位相符。來自圖14的欄位映射至來自圖13的欄位係被顯示。
應了解,雖然本發明的實施例係以同屬向量友善指令格式1300的上下文參考特定向量友善指令格式1400描述作例示目的,但除非特別主張,否則本發明並不限於特定向量友善指令格式1400。例如,雖然特定向量友善指令格式1400係被顯示具有特定大小的欄位,但同屬向量友善指令格式1300考量各種可能大小用於各種欄位。作為特定例子,雖然資料元件寬度欄位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的補數形式加以編碼,即ZMM0被編碼為1211B、ZMM15被編碼為0000B。如同本技藝所知,指令的其他欄位編碼暫存器指標的較低3位元(rrr、xxx、及bbb),使得Rrrr、Xxxx、及Bbbb可以藉由加入EVEX.R、EVRX.X及EVEX.B加以形成。
REX’欄位1310-此為REX’欄位1310的第一部份並為EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),其係用以編碼擴充32暫存器組的較高16或較低16暫存器。在本發明之一實施例中,此位元與如下所指的其他位元係被以位元反相格式儲存,以區分(已知x86 32-位元模式)開BOUND指令,其真實運算碼位元組為62,但並不接受於MOD R/M欄位(如下述)中之在MOD
欄位中的11的值;本發明之其他實施例並不儲存以相反格式表示的如此及其他以下表示位元。1的值係用以編碼下16暫存器。換句話說,R’Rrrr係由組合EVEX.R’、EVEX.R及來自其他欄位的其他RRR所形成。
運算碼映射欄位1415(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼暗示的前導運算碼位元組(0F、0F 38、或0F 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並未編碼任何運算元,此欄位係被保留並應包含1211b。因此,EVEX.vvvv欄位1420編碼儲存為反相(1的補數)格式的第一源暫存器指明碼的4個較低階位元。取決於該指令,額外不同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前置編碼,因此,並不需要擴充。
阿爾發欄位1352(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也被例示為α)-如先前所述,此欄位為上下文特定。
貝它欄位1354(EVEX位元組3,位元[6:4]-SSS,也稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也被例示為βββ)-如先前所
述,此欄位為上下文特定。
REX’欄位1310-此為REX’欄位的剩餘部份並為EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)其係被用以編碼擴充32暫存器組的較高16個或較低16個暫存器。此位元被以位元反相格式儲存。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位元位移(disp32)相同地動作並以位元組粒度動作。
位移因數欄位1362B(位元組7)-當MOD欄位1442包含01,位元組7為位移因數欄位1362B。此欄位的位置係與傳統x86指令集8位元位移(disp8)的位置相同,並以位元組粒度動作。因為disp8為帶符號延伸,所以其只可以定址於-128至137位元組位移;以64位元組快取線表示,disp8使用8位元,其可以只設定四個真實有用值,即-128、-64、0及64;因為經常需要較大範圍,所以使用disp32;然而,disp32需要4個位元組。相對於disp8及disp32,位移因數欄位1362B係為disp8的再解譯;當使用位移因數欄位1362B時,實際位移為位移因數欄位的內容乘以記憶體運算元存取的大小(N)所決定。此類型的位移稱為disp8*N。此降低平均指令長度(單一位元組被使用於位移,但具有較大的範圍)。此壓縮位移係根據假設該有效位移為記憶體存取的粒度的倍數,因此,位址偏移的冗餘較低階位元並不需要被編碼。換句話說,位移因數欄位1362B取代傳統x86指令集8位元位移。因此,位移因數欄位1362B被以與x86
指令集8位元位移相同的方式編碼(因此,在ModRM/SIB編碼規則中並沒有改變),只有一個例外,disp8被超載至disp8*N。換句話說,在編碼規則或編碼長度上並沒有改變,只是在以硬體解譯位移值時有改變(其需要以該記憶體運算元的大小來縮放該位移,以取得位元組為單位的位址偏移)。
立即值欄位1372運算如先前所述。
全運算碼欄位
圖14B為例示特定向量友善指令格式1400的欄位的方塊圖,其依據本發明之一實施例作成全運算碼欄位1374。明確地說,全運算碼欄位1374包含格式欄位1340、基礎運算欄位1342、及資料元件寬度(W)欄位1364。基礎運算欄位1342包含前置編碼欄位1425、運算碼映射欄位1415及真運算碼欄位1430。
暫存器指標欄位
圖14C為例示特定向量友善指令格式1400的欄位的方塊圖,其依據本發明之一實施例作成暫存器指標欄位1344。明確地說,暫存器指標欄位1344包含REX欄位1405、REX’欄位1410、MODR/M.reg欄位1444、MODR/M.r/m欄位1446、VVVV欄位1420、xxx欄位1454、及bbb欄位1456。
擴充運算欄位
圖14D為例示特定向量友善指令格式1400的欄位的方塊圖,其作成依據本發明之一實施例的擴充運算欄位1350。當類型(U)欄位1368包含0時,其表示EVEX.U0(類型A 1368A);當其包含1時,其表示EVEX.U1(類型B 1368B)。當U=0及MOD欄位1442包含11(表示無記憶體存取運算)時,則阿爾發欄位1352(EVEX位元組3,位元[7]-EH)被解譯為rs欄位1352A。當rs欄位1352A包含1(捨入1352A.1)時,則貝它欄位1354(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位1354A。捨入控制欄位1354A包含一位元SAE欄位1356及兩位元捨入運算欄位1358。當rs欄位1352A包含0(資料轉換1352A.2)時,則貝它欄位1354(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料轉換欄位1354B。當U=0及MOD欄位1442包含00、01或10時(代表記憶體存取運算),則阿爾發欄位1352(EVEX位元組3,位元[7]-EH)被解譯為逐出提示(EH)欄位1352B及貝它欄位1354(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料演算欄位1354C。
當U=1時,阿爾發欄位1352(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位1352C。當U=1及MOD欄位1442包含11(表示無記憶體存取運算),則貝它欄位1354的一部份(EVEX位元組3,位元[4]-S0)被解譯為RL欄位1357A;當其包含1
(捨入1357A.1)時,貝它欄位1354的剩餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨入運算欄位1359A,而當RL欄位1357A包含0(VSIZE 1357.A2)時,貝它欄位1354的剩餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位1359B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位1442包含00、01或10時(表示記憶體存取運算),則貝它欄位1354(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位1359B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位1357B(EVEX位元組3,位元[4]-B)。
例示暫存器架構
圖15為依據本發明之一實施例的暫存器架構1500的方塊圖。在所示實施例中,其中有32個向量暫存器1510,其係512位元寬;這些暫存器被稱為zmm0到zmm31。較低16個zmm暫存器的較低階256位元被重疊於暫存器ymm0-16之上。較低16個zmm暫存器的較低階128位元(ymm暫存器的較低階128位元)係重疊於暫存器xmm0-15之上。如下表所例示,特定向量友善指令格式1400運算於這些重疊暫存器檔。
換句話說,向量長度欄位1359B於最大長度與一或更多其他較短長度間作選擇,其中各個此等較短長度為前一長度的長度之一半;及沒有向量長度欄位1359B的指令樣板以最大向量長度運算。再者,在一實施例中,特定向量友善指令格式1400的類型B指令樣板運算於緊縮或純量單/雙倍精準浮點資料及緊縮或純量整數資料。純量運算係為在zmm/ymm/xmm暫存器中的最低階資料元件位置上執行的運算;取決於該實施例,愈高階資料元件位置係被保持與指令前相同或歸零。
寫入遮罩暫存器1515-在例示實施例中,有8個寫入遮罩暫存器(k0至k7),各個大小具有64位元。在另一實施例中,寫入遮罩暫存器1515的大小為16位元。如前所述,在本發明之一實施例中,向量遮罩暫存器k0不能被使用作為寫入遮罩;當通常表示k0的編碼被使用作為寫入遮罩時,其選擇硬接線0xFFFF的寫入遮罩,
有效地去能用於該指令的寫入遮罩。
通用暫存器1525-在例示實施例中,有十六個64位元通用暫存器,其被與現行x86定址模式一起使用,以定址記憶體運算元。這些暫存器藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來參照。
純量浮點堆疊暫存器檔(x87堆疊)1545,其上混淆MMX緊縮整數平坦暫存器檔1550-在所示實施例中,x87堆疊為八元件的堆疊,用以使用x87指令集擴充對32/64/80位元浮點資料執行純量浮點運算;而MMX暫存器係用以對64位元緊縮整數資料進行運算,及用以保有執行於MMX及XMM暫存器間的一些運算的運算元。
本發明之替代實施例也使用較寬或較窄暫存器。另外,本發明的替代實施例也可以使用更多、更少或不同暫存器檔或暫存器。
例示核心架構、處理器、及電腦架構
處理器核心為不同目的可以以不同方式實施,並在不同處理器內。例如,此等核心的實施法可以包含:1)目標用於通用計算的通用循序核心;2)目標用於通用計算的高效通用亂序核心;3)主要目標用於圖形及/或科學(通量)計算的特殊目的核心。不同處理器的實施法可以包含:1)CPU包含目標用於通用計算的一或更多通用循序核心及/或目標用於通用計算的一或更多通用亂
序核心;及2)共處理器,包含主要用於圖形及/或科學(通量)的一或更多特殊目的核心。此等不同處理器造成不同電腦系統架構,其可以包含:1)與該CPU分開的晶片上的共處理器;2)在與CPU相同封裝的分開晶粒上的共處理器;3)在與CPU相同晶粒上的共處理器(在此時,此共處理器有時被稱為特殊目的邏輯,例如積體圖形及/或科學(通量)邏輯,或特殊目的核心);及4)系統晶片,其在相同晶粒上可以包含所述CPU(有時稱應用核心或應用處理器)、上述共處理器、及附加功能。例示核心架構將描述如下,並隨後有例示處理器與電腦架構的說明加以描述如後。
例示核心架構
循序與亂序核心方塊圖
圖16A為依據本發明實施例之顯現有例示循序管線及例示暫存器重命名、亂序派發/執行管線的方塊圖。圖16B為予以包括在依據本發明實施例的處理器中的循環架構核心及例示暫存器重命名、亂序派發/執行架構核心的例示實施例的方塊圖。在圖16A-B中的實線方塊例示循序管線及循序核心,而可選用增加的虛線方塊例示暫存器重命名、亂序派發/執行管線及核心。假定循序態樣為亂序態樣的一子集,並將描述該亂序態樣。
在圖16A中,處理器管線1600包含擷取級
1602、長度解碼級1604、解碼級1606、配置級1608、重命名級1610、排程(也稱為分派或派發)級1612、暫存器讀取/記憶體讀取級1614、執行級1616、寫回/記憶體寫入級1618、異常處置級1622、及確定級1624。
圖16B顯示處理器核心1690,包括耦接至執行引擎單元1650的前端單元1630,及兩者均耦接至記憶體單元1670。核心1690可以為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、很長指令字元(VLIW)核心或混合或替代核心類型。仍在另一選擇中,核心1690可以為特殊目的核心,例如,網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或類似物。
前端單元1630包括耦接至指令快取單元1634的分支預測單元1632,該指令快取單元係耦接至指令轉譯旁看緩衝器(TLB)1636,該TLB 1636係耦接至指令擷取單元1638,該指令擷取單元1638係耦接至解碼單元1640。解碼單元1640(或解碼器)可以解碼指令並產生由原始指令所解碼或所反映或所推導出的一或更多微運算、微碼登錄點、微指令、其他指令或其他控制信號作為輸出。解碼單元1640也可以使用各種不同機制加以實施。適當機制的例子包含但並不限於查找表、硬體實施法、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心1690包含微碼ROM或用以儲存某些巨集指令的微碼之其他媒體(例
如,在解碼單元1640或以其他方式在前端單元1630內)。解碼單元1640係被耦接至執行引擎單元1650中的重命名/配置器單元1652。
執行引擎單元1650包含耦接至引退單元1654及一組一或更多排程器單元1656的重命名/配置器單元1652。排程器單元1656呈現任意數量之不同排程器,包含保留站、中央指令窗等等。排程器單元1656係耦接至實體暫存器檔案單元1658。各個實體暫存器檔案單元1658呈現一或更多實體暫存器檔案,不同實體暫存器檔案儲存一或更多不同資料類型,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點,狀態(例如,指令指標為下個予以執行的指令的位址)等等。在一實施例中,實體暫存器檔案單元1658包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1658係為引退單元1654所重疊,以例示暫存器重命名及亂序執行可以被執行的各種方式(例如,使用重排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器、及引退暫存器檔案;使用暫存器映圖及暫存器池;等等)。引退單元1654及實體暫存器檔案單元1658係耦接至執行叢集1660。執行叢集1660包含一組一或更多執行單元1662及一組一或更多記憶體存取單元1664。執行單元1662可以執行各種運算(例如,位移、加法、減法、乘法)並針對各種類型的資
料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然一些實施例也可以包含若干專用於特定函數或函數組的執行單元,但其他實施例可以包含只有一執行單元或多重執行單元,其所有都執行所有函數。排程單元1656、實體暫存器檔案單元1658、及執行叢集1660被顯示為可能是複數,因為某些實施例建立分開管線,用於某些類型的資料/運算(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各個具有其本身排程器單元、實體暫存器檔案、及/或執行叢集-及在分開記憶體存取管線情況中,某些實施例係被實施為其中此管線中之執行叢集具有記憶體存取單元1664)。應了解的是當使用分開的管線時,這些管線之一或多者可以為亂序派發/執行且剩餘則為循序。
該組記憶體存取單元1664係耦接至記憶體單元1670,其包含資料TLB單元1672耦接至資料快取單元1674,且資料快取單元1674耦接至第二階(L2)快取單元1676。在一例示實施例中,記憶體存取單元1664可以包含載入單元、儲存位址單元、及儲存資料單元,其各個係耦接至記憶體單元1670中的資料TLB單元1672。指令快取單元1634更耦接至記憶體單元1670中的第2階(L2)快取單元1676。L2快取單元1676係耦接至一或更多其他階的快取並最後耦接至主記憶體。
例如,例示暫存器重命名、亂序派發/執行核
心架構可以實施管線1600,如下:1)指令擷取1638執行擷取及長度解碼級1602及1604;2)解碼單元1640執行解碼級1606;3)重命名/配置器單元1652執行配置級1608及重命名級1610;4)排程器單元1656執行排程級1612;5)實體暫存器檔案單元1658及記憶體單元1670執行暫存器讀取/記憶體讀取級1614;該執行叢集1660實行執行級1616;6)記憶體單元1670及實體暫存器檔案單元1658執行寫回/記憶體寫入級1618;7)各種單元可以涉及於異常處置級1622中;及8)引退單元1654及實體暫存器檔案單元1658執行確定級1624。
核心1690可以支援一或更多指令集(例如,x86指令集(具有一些擴充,其已經在新版中被加入);美國加州Sunnyvale的MIPS科技的MIPS指令集;美國加州Sunnyvale的ARM控股的ARM指令集(具有例如NEON的可選用額外擴充)),其包含於此所述之指令。在一實施例中,核心1690包含邏輯,以支援緊縮資料指令集擴充(例如,AVX1、AVX2),藉以允許為很多多媒體應用所使用的運算予以使用緊縮資料加以執行。
應了解的是,核心可以支援多線程(執行兩或更多並列組運算或線程),並可以以各種方式完成,包含分時多線程、同時多線程(其中單一實體核心提供邏輯核心,用於各個線程,實體核心係被同時多線程),或其組合(例如,分時擷取及解碼及其後同時多線程,例如,在Intel®超線程技術中一般)。
雖然暫存器重命名係以亂序執行加以描述,但應了解的是,暫存器重命名也可以使用於循序架構中。雖然處理器的例示實施例也包含分開指令與資料快取單元1634/1674及共享L2快取單元1676,但其他實施例也可以具有單一內部快取,來用於指令與資料,例如,第一階(L1)內部快取,或多階內部快取。在一些實施例中,該系統可以包含內部快取與核心及/或處理器外部的外部快取的組合。或者,所有這些快取可以在核心及/或處理器的外部。
特定例示循序核心架構
圖17A-B例示更詳細例示循序核心架構的方塊圖,其中核心將為在晶片中之幾個邏輯方塊(包含相同類型及/或不同類型的其他核心)之一。取決於應用,該等邏輯方塊透過高頻寬互連網路(例如環狀網路)與其他固定功能邏輯、記憶體I/O介面及其他必要I/O邏輯相通訊。
圖17A為依據本發明實施例之單一處理器核心的方塊圖,其具有與晶粒上互連網路1702及第二階(L2)快取1704的本地子集的連接。在一實施例中,指令解碼器1700支援具有緊縮資料指令集擴充的x86指令集。L1快取1706允許對該快取記憶體進行低潛候存取,成為純量與向量單元。雖然在一實施例中(為了簡化設計),純量單元1708及向量單元1710使用分開暫存器組
(分別純量暫存器1712及向量暫存器1714)及於其間轉換之資料係被寫入記憶體,然後由第一階(L1)快取1706讀回,但本發明的其他實施例也可以使用不同方式(例如,使用單一暫存器組或包含一通訊路徑,其允許資料能被傳送於兩暫存器檔案之間,而不被寫回及讀回)。
L2快取1704的本地子集為被細分為分開本地子集的全面L2快取的一部份,每一處理器核心有一本地子集。各個處理器核心具有對L2快取1704的本身本地子集的直接存取路徑。為處理器核心所讀取的資料係被儲存在其L2快取子集1704並可以並聯其他處理器核心存取其本身本地L2快取子集地而快速存取。為處理器核心所寫入的資料係被儲存於本身L2快取子集1704並如果有必要從其他子集趕出來。環狀網路確保共享資料的內聚性。環狀網路係為雙向以允許例如處理器核心、L2快取及其他邏輯方塊的代理器在該晶片內彼此通訊。各個環狀資料路徑為每方向1012位元寬。
圖17B為依據本發明之實施例之在圖17A中的處理器核心的部份的放大圖。圖17B包含L1快取1704的L1資料快取1706A部份,及有關於向量單元1710及向量暫存器1714的更詳細細節。明確地說,向量單元1710為16寬向量處理單元(VPU)(見16寬ALU 1728),其執行整數、單精準浮點、及雙精準浮點指令之一或更多者。VPU支援以拌和單元1720拌和暫存器輸入、與數值轉換單元1722A-B的數值轉換、及在記憶體輸
入上的以複製單元1724的複製。寫入遮罩暫存器1726允許預測所得向量寫入。
具有整合記憶體控制器與圖形的處理器
圖18為依據本發明實施例之具有一個以上核心的處理器1800的方塊圖,其可以具有整合記憶體控制器,並可以具有整合圖形。在圖18中之實線框例示處理器1800,其具有一單一核心1802A、系統代理器1810、一組一或更多匯流排控制器單元1816、而虛線框的選用部份例示替代處理器1800,具有多個核心1802A-N、一組一或更多整合記憶體控制器單元1814在系統代理單元1810中、及特殊目的邏輯1808。
因此,處理器1800的不同實施法可以包含:1)具有為整合圖形及/或科學(通量)邏輯(其可以包含一或更多核心)的特殊目的邏輯1808,及核心1802A-N為一或更多通用核心(例如通用循序核心、通用亂序核心、及兩者的組合)的CPU;2)具有主要用於圖形及/或科學(通量)的大量特殊目的核心的核心1802A-N的共處理器;及3)具有大量通用循序核心的核心1802A-N的共處理器。因此,處理器1800可以為通用處理器、共處理器或特殊目的處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量很多整合核心(MIC)共處理器(包含30或更多核心)、嵌入式處理器或類似物。處理器可以實施於一或更
多晶片上。使用若干製程技術之一,例如,BiCMOS、CMOS或NMOS,處理器1800可以為一或更多基板的一部份及/或被實施在一或更多基板上。
記憶體階層包含一或更多階快取在核心內、一組或一或更多共享快取單元1806、及耦接至該組整合記憶體控制器單元1814的外部記憶體(未示出)。該組共享快取單元1806可以包含一或更多中階快取,例如第2階(L2)、第3階(L3)、第4階(L4)、或其他階的快取、最後階快取(LLC)、及/或其組合。然而在一實施例中,環為主互連單元1812互連整合圖形邏輯1808、該組共享快取單元1806、及系統代理單元1810/整合記憶體控制器單元1814,其他實施例也可以使用任意數量的已知技術,用以互連這些單元。在一實施例中,內聚性係被維持在一或更多快取單元1806與核心1802A-N之間。
在一些實施例中,一或更多核心1802A-N能多線程。系統代理器1810包含這些元件協調與操作核心1802A-N。該系統代理器單元1810可以包含例如電源控制單元(PCU)及顯示單元。PCU可以是或包含調節核心1802A-N與整合圖形邏輯1808的電力狀態所需的邏輯及元件。顯示單元係用以驅動一或更多外部連接顯示器。
以架構指令集看來,核心1802A-N可以為同質或異質;即兩或更多核心1802A-N可以能執行相同指令集,而其他核心也可以僅執行該指令集的子集或不同指令集。
例示電腦架構
圖19-21為例示電腦架構的方塊圖。用於在膝上型、桌上型、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、攜帶式媒體播放器、手持裝置、及各種其他電子裝置的技藝中已知的其他系統設計及組態也是適當的。通常,能夠加入在此所揭示的處理器及/或其他執行邏輯的大量各種系統或電子裝置通常係合適的。
現參考圖19,顯示依據本發明一實施例之系統1900的方塊圖。系統1900可以包含一或更多處理器1910、1915,其被耦接至控制器集線器1920。在一實施例中,控制器集線器1920包含圖形記憶體控制器集線器(GMCH)1990及輸入/輸出集線器(IOH)1950(其可以是在分開晶片上);GMCH 1990包含對所耦接記憶體1940及共處理器1945的記憶體及圖形控制器;IOH 1950係將輸入/輸出(I/O)裝置1960耦接至GMCH 1990。替代地,記憶體及圖形控制器之一或兩者係整合在處理器(如於此所述)內,記憶體1940及共處理器1945係直接耦接至處理器1910,及控制器集線器1920係與IOH 1950在單一晶片內。
額外處理器1915的選用本質係以虛線被表示
於圖19中。各個處理器1910、1915可以包含於此所述之一或更多處理核心,並可以為某一版本的處理器1800。
記憶體1940可以例如為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者的組合。對於至少一實施例,控制器集線器1920與處理器1910、1915透過諸如前側匯流排(FSB)之多落點匯流排、諸如QuickPath互連(QPI)之點對點介面、或類型連接1995通訊。
在一實施例中,共處理器1945為特殊目的處理器,例如,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似物。在一實施例中,控制器集線器1920可以包含一整合圖形加速器。
以優質頻譜度量表示在實體資源1910、1915間可以有各種差異,包含架構、微架構、熱、電力消耗特性及類似物。
在一實施例中,處理器1910執行控制一般類型的資料處理運算的指令。嵌入在該等指令內的可以為共處理器指令。處理器1910認出這些共處理器指令為應為附著共處理器1945所執行的類型。因此,處理器1910發出這些共處理器指令(或代表共處理器指令的控制信號)在共處理器匯流排器或其他互連上,給共處理器1945。共處理器1945接受及執行所接收的共處理器指令。
現參考圖20,顯示依據本發明實施例之第一
更特別例示系統2000的方塊圖。如圖20所示,多處理器系統2000為點對點互連系統,並包含第一處理器2070及第二處理器2080,經由點對點互連2050耦接。各個處理器2070及2080可以為某一版本的處理器1800。在本發明之一實施例中,處理器2070及2080係分別為處理器1910及1915,而共處理器2038為共處理器1945。在另一實施例中,處理器2070及2080分別為處理器1910及共處理器1945。
處理器2070及2080係被顯示分別包含整合記憶體控制器(IMC)單元2072及2082。處理器2070也包含其匯流排控制器單元點對點(P-P)介面2076及2078的一部份;類似地,第二處理器2080包含P-P介面2086及2088。處理器2070、2080也經由點對點(P-P)介面2050使用P-P介面電路2078、2088交換資訊。如圖20所示,IMC 2072及2082將這些處理器耦接至個別記憶體,即記憶體2032及記憶體2034,其可以為本地附著至個別處理器的主記憶體的部份。
處理器2070、2080可以各個經由個別P-P介面2052、2054使用點對點介面電路2076、2094、2086、2098與晶片組2090交換資訊。晶片組2090可以選用地與共處理器2038經由高效介面2039交換資訊。在一實施例中,共處理器2038為特殊目的處理器,舉例而言,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似物。
共享快取(未示出)可以包含在任一處理器內或在兩處理器之外,並仍經由P-P互連與處理器連接,使得如果處理器置於低功率模式時,則任一或兩處理器的本地快取資訊可以被儲存在共享快取中。
晶片組2090可以經由介面2096耦接至第一匯流排2016。在一實施例中,第一匯流排2016可以為週邊元件互連(PCI)匯流排,或例如PCI加速匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明的範圍並不限於此。
如於圖20所示,各種I/O裝置2014可以耦接至第一匯流排2016,連同匯流排橋接器2018,其將第一匯流排2016耦接至第二匯流排2020。在一實施例中,一或更多額外處理器2015,例如,共處理器、高通量MIC處理器、GPGPU的加速器(例如,圖形加速器或數位信號處理器(DSP)單元)、場可程式閘陣列、或任何其他處理器,其係耦接至第一匯流排2016。在一實施例中,第二匯流排2020可以為低接腳計數(LPC)匯流排。在一實施例中,各種裝置可以耦接至第二匯流排2020,包含例如鍵盤及/或滑鼠2022、通訊裝置2027及儲存單元2028,例如磁碟機或其他大量儲存裝置,其可以包含指令/碼與資料2030。再者,音訊I/O 2024可以耦接至第二匯流排2020。注意,其他架構也有可能。例如,不同於圖20的點對點架構,系統也可以實施多落點匯流排或其他此等架構。
現參考圖21,顯示依據本發明實施例之第二更特定例示系統2100的方塊圖。在圖20及21中之類似元件係有類似元件符號,及圖20的某些態樣已經由圖21中省略,以避免模糊圖21的其他態樣。
圖21例示處理器2070、2080可以分別包含整合記憶體及I/O控制邏輯(「CL」)2072及2082。因此,CL 2072、2082包含整合記憶體控制器單元及包含I/O控制邏輯。圖21例示不只是記憶體2032、2034耦接至CL 2072、2082,但同時I/O裝置2114也耦接至控制邏輯2072、2082。傳統I/O裝置2115係耦接至晶片組2090。
現參考圖22,顯示依據本發明實施例之SoC 2200的方塊圖。在圖18的類似元件具有類似元件符號。同時,虛線方塊為在更多先進SoC上的選用特性。在圖22中,互連單元2202係耦接至:應用處理器2210,其包含一組一或更多核心212A-N及共享快取單元1806;系統代理器單元1810;匯流排控制器單元1816;一整合記憶體控制器單元1814;一組或一或更多共處理器2220,其可以包含整合圖形邏輯、影像處理器、音訊處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元2230;直接記憶體存取(DMA)單元2232;及顯示單元2240,用以耦接至一或更多外部顯示器。在一實施例中,共處理器2220包含特殊目的處理器,舉例而言,諸如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入
式處理器、或類似物。
於此所揭露之機制的實施例可以實施為硬體、軟體、韌體或此等實施方式的組合。本發明之實施例可以實施為電腦程式或執行於可程式系統上的程式碼,該可程式系統包含至少一處理器、儲存系統(包含揮發及非揮發記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
諸如示於圖20的碼2030的程式碼可以應用至輸入指令,以執行於此所述之功能並產生輸出資訊。輸出資訊可以用已知方式應用至一或更多輸出裝置。為了本案的目的,處理系統包含具有處理器的任何系統,舉例而言,諸如數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可以以高階程序或物件導向程式語言實施以與處理系統通訊。如有需求,程式碼也可以實施為組合或機器語言。事實上,於此所述之機制並不限於任何特定程式語言的範圍。在任何情況下,語言可以為編譯或解譯語言。
至少一實施例的一或更多態樣可以以儲存於機器可讀取媒體中的代表指令加以實施,其呈現在處理器內的各種邏輯,其當為機器所讀取時使得機器製造邏輯以執行於此所述之技術。稱為“IP核心”的此等代表可以儲存有形機器可讀取媒體上並將其供給至各種客戶或製造設施,以載入至實際生產該邏輯或處理器之製造機器中。
此機器可讀取儲存媒體可以包含但並不限於非暫態有形配置的製造物體或為機器或裝置所製成形成的物體,包含儲存媒體,例如硬碟,任何其他類型的碟片,包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可覆寫(CD-RW)、及磁光碟、例如唯讀記憶體(ROM)、隨機存取記憶體(RAM)的半導體裝置,RAM係例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或任何其他類型的適用以儲存電子指令之媒體。
因此,本發明實施例也包含非暫態有形機器可讀取媒體,包含指令或含有設計資料,例如,硬體描述語言(HDL),其界定於此所述之結構、電路、設備、處理器及/或系統特性。此等實施例也可被稱為程式產品。
仿真(包含二進制轉譯、碼漸變等)
在一些情況下,指令轉換器可以被用以將來自源指令集的指令轉換為目標指令集。例如,指令轉換器可以轉譯(例如,使用靜態二進制轉譯、包含動態編譯之動態二進制轉譯)、漸變、仿真或以其他方式轉換指令為一或更多其他予以為該核心所處理的指令。指令轉換器可以實施於軟體、硬體、韌體或兩者的組合中。指令轉換器可以在處理器上、在處理器外、或部份在處理器上部份在
處理器外。
圖23為依據本發明實施例之對比使用軟體指令轉換器以將源指令集中的二進制指令轉換為目標指令集中的二進制指令的方塊圖。在例示實施例中,指令轉換器為軟體指令轉換器,雖然替代地指令轉換器可以被實施於軟體、硬體、韌體、或其各種組合中。圖23顯示以高階語言2302表示的程式,其可以使用x86編譯器2304編譯,以產生x86二進制碼2306,其可以為具有至少一x86指令集核心2316的處理器所本機執行。具有至少一x86指令集核心2316的處理器代表任何處理器,其可以執行與具有至少一x86指令集核心的英特爾處理器實質相同的功能,藉由相容執行或以其他方式處理(1)英特爾x86指令集核心的指令集的相當大部份或(2)目標執行於具有至少一x86指令集核心的英特爾處理器上的應用程式或其他軟體的目標碼版本,以完成與具有至少一x86指令集核心的英特爾處理器實質相同結果。x86編譯器2304呈現編譯器,其可操作以產生x86二進制碼2306(例如,目標碼),其可以在有或沒有額外鏈結處理下被執行於具有至少一x86指令集核心2316的處理器上。類似地,圖23顯示以高階語言2302表示的程式可以使用另一指令集編譯器2308編譯,以產生另一指令集二進制碼2310,其可以為處理器在沒有至少一x86指令集核心2314的處理器(例如,具有執行美國加州Sunnyvale的MIPS科技的MIPS指令集及/或美國加州Sunnyvale的ARM控股的
ARM指令集的核心的處理器)所本機執行。指令轉換器2312係被用以將x86二進制碼2306轉換為由沒有x86指令集核心2314的處理器所本機執行的碼。此轉換碼不大可能與替代指令集二進制碼2310相同,因為能夠執行此之指令轉換器很困難製作;然而,所轉換碼將完成一般運算並可以由其他指令集作成指令。因此,指令轉換器2312呈現軟體、韌體、硬體或其組合,透過仿真、模擬、或任何其他處理以允許沒有x86指令集處理器或核心的處理器或其他電子裝置,執行x86二進制碼2306。
描述用於圖1-2及5-11的任一的元件、特性及細節也可以選用地應用至圖3-4的任一。再者,描述用於任一設備的元件、特性及細節也可以選用地應用至可以以及/或配合此設備所執行的實施例中之任一方法中。於此所述之任一處理器也可以包含在任一於此所述之電腦系統中(例如,圖19-23)。在一些實施例中,電腦系統可以包含動態隨機存取記憶體(DRAM)。替代地,電腦系統可以包含一類型的揮發記憶體,其並不需要被再新者或快閃記憶體。於此所揭露之指令可以以於此所述之任一處理器加以執行,該處理器在於此所示之任一系統上具有於此所述之任一微架構。於此所揭露之指令可以具有於此所示(例如,在圖12-14)之指令格式的任一特性。
在發明說明與申請專利範圍中,用語“耦接”及/或“連接”與其衍生可以被使用。這些用語並不想要彼此作為同義詞。相反地,在實施例中,“連接”可以用以表
示兩或更多元件彼此直接實體及/或電接觸。“耦接”可以表示該兩或更多元件彼此間接實體及/或電接觸。然而,“耦接”也可以表示兩或更多元件不是直接彼此接觸,但仍能彼此互相配合或互動。例如,執行單元可以透過一或更多中介元件耦接至暫存器及/或解碼單元。在這些圖中,箭頭係用以顯示連接及耦接。
在發明說明及/或申請專利範圍中,用語“邏輯”、“單元”、“模組”或“元件”已經被使用。各個這些用語也可以表示硬體、韌體、軟體或其各種組合。在例示實施例中,各個這些用語可以表示積體電路、特殊應用積體電路、類比電路、數位電路、可程式邏輯裝置、包含指令等之記憶體裝置、及其各種組合。在一些實施例中,這些可以包含至少一些硬體(例如,電晶體、閘極、其他電路元件等)。
用語“及/或”已經使用。在此,用語“及/或”表示一或另一或兩者(例如,A及/或B表示A或B或A及B兩者)。
在以上說明中,特定細節已經加以描述,以提供對實施例的完整了解。然而,其他實施例也可以在沒有部份這些特定細節下實施。本發明的範圍並不由以上所提供的特定例子加以決定,而是僅由以下的申請專利範圍所決定。在其他情況下,已知電路、結構、裝置及運算已經以方塊圖形式在有及/或沒有細節的情況下加以顯示,以避免模糊了對發明說明的了解。在經適當考量處,元件
符號或元件符號的終端部已經在這些圖中加以重覆,以表示對應或類似元件,其可以選用具有類似或相同特徵,除非特定或清楚明顯除外。
特定運算可以為硬體元件所執行,或可以體現於機器可讀取或電路可執行指令中,其可以被用以使及/或造成被編程為具有執行該等運算的指令之機器、電路或硬體元件(例如,處理器、處理器的部份、電路等)。該等運算也可以選用地為硬體及軟體的組合所執行。處理器、機器、電路或硬體也可以包含特定或特殊電路或其他邏輯(例如,硬體可能與韌體及/或軟體組合),可操作地執行及/或處理指令並回應於該指令儲存結果。
一些實施例包含製造物品(例如,電腦程式產品),其包含機器可讀取媒體。該媒體可以包含機制,其提供例如儲存資訊於可為機器所讀取的格式。機器可讀取媒體也可以提供或具有指令或指令順序儲存於其中,並如果及/或當為機器所執行時使得機器可操作以使得該機器執行及/或造成機器執行於此所揭露之運算、方法或技術之一。
在一些實施例中,機器可讀取媒體可以包含非暫態機器可讀取儲存媒體。例如,非暫態機器可讀取儲存媒體可以包含軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式ROM(PROM)、可抹除及可程式ROM(EPROM)、電可抹除及可程式ROM
(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發記憶體、非揮發資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置或類似物。非暫態機器可讀取儲存媒體並非由暫態傳遞信號構成。在一些實施例中,儲存媒體可以包含有形媒體,其包含實體物。
適當機器的例子包含但並不限於通用處理器、特殊目的處理器、數位邏輯電路、積體電路或類似物。適當機器的其他例子包含電腦系統或其他電子裝置,其包括處理器、數位邏輯電路、或積體電路。此等電腦系統或電子裝置的例子包括但並不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、小筆電、智慧手機、行動電話、伺服器、網路裝置(例如,路由器及開關)、行動網際網路裝置(MID)、媒體播放器、智慧電視、桌上型易網機、機上盒、及電視遊樂控制器。
於整個說明書所指之例如“一實施例”、“實施例”、“一或更多實施例”、“一些實施例”表示一特定特性,其可以包含在本發明之實施中,但並不必然需要如此。類似地,在發明說明中,各種特性有時被集合在一起成為單一實施例,其圖或說明係用以流暢本案並協助了解各種發明態樣。然而,本案的方法並不被解釋為反應一發明需要在各個請求項中所特別描述的更多之特性。相反地,如以下申請項所反映,發明態樣在於較單一揭露實施
例的所有特性為少的特性。因此,在發明說明後的申請專利範圍係從而被明確地併入本詳細說明中,其中各個請求項本身表示為作為本發明的分開實施例。
例示實施例
以下例子屬於進一步實施例。在例子中的細節可以被用在一或更多實施例中之任一處。
例子1為一處理器,其包含解碼單元,用以解碼資料元件比較指令。資料元件比較指令係用以表示第一源緊縮資料運算元,其係包含至少四個資料元件,並表示第二源緊縮資料運算元,其包含至少四個資料元件,並用以表示一或更多目的儲存位置。該處理器也包含執行單元,耦接至該解碼單元。該執行單元回應於該資料元件比較指令,用以儲存至少一結果遮罩運算元於一或更多目的儲存位置。該至少一結果遮罩運算元係包含一不同遮罩元件,用於在第一與第二源緊縮資料運算元之一的相同相對位置中的各個對應資料元件。各個遮罩元件係表示是否在該第一與第二源緊縮資料運算元之一中的對應資料元件等於在第一與第二源緊縮資料運算元之另一者中的資料元件的任一。
例子2包含例子1的處理器,其中執行單元回應於該指令用以儲存兩結果遮罩運算元於一或更多目的儲存位置中。該兩結果遮罩運算元係包含第一結果遮罩運算元,其係包含用於在第一源緊縮資料運算元的相同相對
位置中的各個對應資料元的不同遮罩元件。第一結果遮罩運算元的各個遮罩元件係表示是否在第一源緊縮資料運算元中的對應資料元件等於在該第二源緊縮資料運算元中的資料元件的任一。第二結果遮罩運算元係包含用於在第二源緊縮資料運算元的相同相對位置中的各個對應資料元件的不同遮罩元件。第二結果遮罩運算元的各個遮罩元件係表示是否在第二源緊縮資料運算元中的對應資料元件等於在該第一源緊縮資料運算元中的任一資料元件。
例子3包含例子2的處理器,其中該一或更多目的儲存位置包含第一遮罩暫存器及第二遮罩暫存器,及其中該執行單元回應於該指令係用以儲存第一結果遮罩運算元於該第一遮罩暫存器中並用以儲存第二結果遮罩運算元於該第二遮罩暫存器中。
例子4包含例子2的處理器,其中該一或更多目的儲存位置包含單一遮罩暫存器,及其中該執行單元回應於該指令用以儲存該第一結果遮罩運算元與該第二結果遮罩運算元於該單一遮罩暫存器中。
例子5包含例子4的處理器,其中該執行單元回應於該指令用以儲存第一結果遮罩運算元於該單一遮罩暫存器的最低效部份並用以儲存該第二結果遮罩運算元於該單一遮罩暫存器中之較該最低效部份更高效的部份中。
例子6包含例子1的處理器,其中執行單元回應於該指令,用以儲存第一結果遮罩運算元及第二結果
遮罩運算元兩者於緊縮資料暫存器中,及其中在該緊縮資料暫存器中的各個資料元件係用以具有第一結果遮罩運算元的遮罩元件與第二結果遮罩運算元的遮罩元件兩者。
例子7包含例子1的處理器,其中執行單元回應於該指令用以儲存單一結果遮罩運算元於單一遮罩暫存器。
例子8包含例子1的處理器,其中執行單元回應於該指令用以儲存該至少一結果遮罩運算元於至少一遮罩暫存器,及其中該處理器的指令集包含遮罩緊縮資料指令,其係可操作以表示至少一遮罩暫存器為用於源遮罩運算元的儲存位置,其係被用以遮罩緊縮資料運算。
例子9包含例子1至8之任一的處理器,其中該執行單元回應於該指令用以儲存於該至少一結果遮罩運算元中之結果遮罩位元的數目,其不多於在該第一與第二源緊縮資料運算元中的資料元件的數目。
例子10包含例子1至8之任一的處理器,其中該執行單元回應於該指令用以儲存至少一結果遮罩運算元,其中各個遮罩元件包含單一遮罩位元。
例子11包含例子1至8之任一的處理器,其中該解碼單元用以解碼該指令,其係用以表示予以包含至少八個資料元件的該第一源緊縮資料運算元,並用以表示予以包含至少八個資料元件的該第二源緊縮資料運算元。
例子12包含例子1至8之任一的處理器,其中該解碼單元用以解碼該指令,其係用以表示予以包含至
少512位元的該第一源緊縮資料運算元,並用以表示予以包含至少512位元的該第二源緊縮資料運算元。
例子13為一種在處理器中之方法,包含接收資料元件比較指令。該資料元件比較指令表示包含至少四個資料元件的第一源緊縮資料運算元、表示包含至少四個資料元件的第二源緊縮資料運算元、表示一或更多目的儲存位置。該方法也包含回應於該資料元件比較指令,儲存至少一結果遮罩運算元於該一或更多目的儲存位置。對於在該第一與第二源緊縮資料運算元之一中的相同相對位置的各個對應資料元件,該至少一結果遮罩運算元包含不同遮罩元件。各個遮罩元件表示在該第一與第二源緊縮資料運算元之一中的對應資料元件是否等於在該第一與第二源緊縮資料運算元之另一者中的任一資料元件。
例子14包含例子13的方法,其中儲存包含儲存第一結果遮罩運算元於該一或更多目的儲存位置。對於在該第一源緊縮資料運算元中相同對應位置的各個對應資料元件,第一結果遮罩運算元包含不同遮罩元件。第一結果遮罩運算元的各個遮罩元件表示在第一源緊縮資料運算元中的對應資料元件是否等於在該第二源緊縮資料運算元中的任一資料元件。同時,其中儲存包含儲存第二結果遮罩運算元於一或更多目的儲存位置。對於在該第二源緊縮資料運算元中相同相對位置的各個對應資料元件,該第二結果遮罩運算元包含不同遮罩元件。該第二結果遮罩運算元的各個遮罩元件表示在該第二源緊縮資料運算元中的
對應資料元件是否等於在該第一源緊縮資料運算元中的任一資料元件。
例子15包含例子14的方法,其中儲存第一結果遮罩運算元包含儲存第一結果遮罩運算元於第一遮罩暫存器中,及其中儲存第二結果遮罩運算元包含儲存第二結果遮罩運算元於第二遮罩暫存器中。
例子16包含例子14的方法,其中儲存第一結果遮罩運算元及儲存第二結果遮罩運算元包含儲存該第一與第二結果遮罩運算元兩者於單一遮罩暫存器中。
例子17包含例子13的方法,其中儲存該至少一結果遮罩運算元於該一或更多目的儲存位置包含儲存第一結果遮罩運算元與第二結果遮罩運算元兩者於結果緊縮資料運算元中。
例子18包含例子13的方法,更包含接收遮罩緊縮資料指令,其表示該至少一結果遮罩運算元為預測運算元。
例子19為用以處理指令之系統,其包含互連及與該互連耦接的處理器。該處理器用以接收資料元件比較指令。該指令表示予以包含至少四資料元件的第一源緊縮資料運算元、表示予以包含至少四資料元件的第二源緊縮資料運算元、及表示一或更多目的儲存位置。該處理器回應於該指令,用以儲存至少一結果遮罩運算元於該一或更多目的儲存位置。對於在該第一與第二源緊縮資料運算元之一中相同相對位置的各個對應資料元件,該至少一結
果遮罩運算元包含不同遮罩位元。各個遮罩位元表示在該第一與第二源緊縮資料運算元之一中的所述對應資料元件是否等於在該第一與第二源緊縮資料運算元的另一中的任一所述資料元件。該系統亦包括動態隨機存取記憶體(DRAM),耦接至該互連。該DRAM可選地儲存稀疏向量-稀疏向量算術演算法。該稀疏向量-稀疏向量算術演算法可選地包含遮罩資料元件合併指令,其係用以包含該至少一結果遮罩運算元為源運算元,以遮罩資料元件合併運算。
例子20包含例子19的系統,其中執行單元回應於指令用以儲存兩結果遮罩運算元,各個對應至該等源緊縮資料運算元之不同一個,其中該兩結果遮罩運算元係用以儲存於至少一遮罩暫存器中。
例子21為包含非暫態機器可讀取儲存媒體的製造物品。該非暫態機器可讀取儲存媒體儲存資料元件比較指令。該指令係用以表示予以包含至少四資料元件的第一源緊縮資料運算元、表示予以包含至少四資料元件的第二源緊縮資料運算元、及表示一或更多目的儲存位置。如果該指令為機器所執行係用以使該機器執行的運算包含:儲存第一結果遮罩運算元於該一或更多目的儲存位置。對於在該第一源緊縮資料運算元中相同相對位置的各個對應資料元件,該第一結果遮罩運算元包含不同遮罩位元。各個遮罩位元表示在該第一源緊縮資料運算元中的對應資料元件是否等於在該第二源緊縮資料運算元中的任一資料元
件。
例子22包含例子21的製造物品,其中如果該指令為機器所執行,使得該機器執行運算包含儲存第二結果遮罩運算元於該一或更多目的儲存位置中。同時,選用地,其中,該一或更多目的儲存位置包含至少一遮罩暫存器。同時,選用地,其中該第一與第二結果遮罩運算元一起沒有比在該第一與第二源緊縮資料運算元中的資料元件數量更多的遮罩位元。
例子23包含例子1至8任一的處理器,更包含選用分支預測單元,用以預測分支,及選用指令預取單元,耦接至該分支預測單元,該指令預取單元,用以預取包含資料元件比較指令的指令。該處理器也選用地包含:選用第一階(L1)指令快取,耦接至指令預取單元,該L1指令快取儲存指令、選用L1資料快取,用以儲存資料、及選用第二階(L2)快取,用以儲存資料與指令。該處理器也可以選用地包含:指令擷取單元,耦接至該解碼單元、該L1指令快取、及L2快取,以擷取資料元件比較指令,在一些情況下,由L1指令快取與L2快取之一擷取,並提供該資料元件比較指令給該解碼單元。該處理器也可以選用地包含:暫存器重命名單元,用以重命名暫存器、選用排程器,用以排程已經由該資料元件比較指令解碼供執行的一或更多運算、及選用確定單元,用以確定該資料元件比較指令的執行結果。
例子24包含系統晶片,其包含至少一互連、
如例子1至8之任一的處理器被耦接至該至少一互連、選用圖形處理單元(GPU)耦接至該至少一互連、選用數位信號處理器(DSP)耦接至該至少一互連、選用顯示控制器,耦接至該至少一互連、選用記憶體控制器耦接至該至少一互連、選用無線數據機耦接至該至少一互連、選用影像信號處理器耦接至該至少一互連、選用通用串列匯流排(USB)3.0相容控制器耦接至該至少一互連、選用藍芽4.1相容控制器耦接至該至少一互連、及選用無線收發器控制器耦接至該至少一互連。
例子25為一處理器或其他設備,用以執行或操作以執行例子13至18之任一的方法。
例子26為一處理器或其他設備,其包含執行手段,用以執行例子13至18之任一的方法。
例子27為包含選用非暫態機器可讀取媒體的製造物品,其選用地儲存或其他方式提供指令,如果及/或當指令為處理器所執行時,電腦系統、電子裝置或其他機器係可操作以使得該機器執行如例子13至18之任一的方法。
例子28為基本上於此所述之處理器或其他設備。
例子29為處理器或其他設備,其係可操作以執行基本上於此所述之任一方法。
例子30為一處理器或其他設備,用以執行(例如,其具有元件以執行或可操作以執行)基本上於此
所述之任何資料元件比較指令。
例子31為電腦系統或其他電子裝置,其包含具有解碼單元,用以解碼第一指令集的指令的處理器。該處理器也具有一或更多執行單元。該電子裝置也包含儲存裝置,耦接至該處理器。該儲存裝置被用以儲存第一指令,其可以為基本上於此所述之資料元件比較指令之任一,及其可以為第二指令集。儲存裝置也用以儲存指令,以將第一指令轉換為第一指令集的一或更多指令。第一指令集的一或更多指令當為處理器所執行時,使得該處理器儲存於此所述之第一指令的任一結果。
310:處理器
312:資料元件比較指令
314:解碼單元
316:控制信號
318:執行單元
320:緊縮資料暫存器
322:第一源緊縮資料運算元
324:第二源緊縮資料運算元
326:目的儲存位置
328:第一結果遮罩運算元
330:第二結果遮罩運算元
332:緊縮資料運算遮罩暫存器
Claims (20)
- 一種處理器,包含:在晶粒上的解碼單元,用以解碼一指令,該指令用以表示:予以具有第一多數資料元件的第一源緊縮資料運算元、予以具有第二多數資料元件的第二源緊縮資料運算元、第一遮罩暫存器、及第二遮罩暫存器;及執行單元,在該晶粒上並耦接至該解碼單元,該執行單元用以執行該指令,以產生及儲存:第一結果於該第一遮罩暫存器中,該第一結果用以包含用於在該第一源緊縮料運算元中的相同相對位置中的各個對應資料元件的不同遮罩元件,該第一結果的各個遮罩元件用以表示在該第一源緊縮資料運算元中的所述對應資料元件是否等於在該第二源緊縮資料運算元中的任一所述資料元件;及第二結果於該第二遮罩暫存器中,該第二結果用以包含用於在該第二源緊縮資料運算元中的相同相對位置中的各個對應資料元件的不同遮罩元件,該第二結果的各個遮罩元件用以表示在該第二源緊縮資料運算元中的所述對應資料元件是否等於在該第一源緊縮資料運算元中的任一所述資料元件。
- 如請求項1之處理器,其中該執行單元係用以執行該指令,用以將所述第一多數資料元件的各個資料元件與所述第二多數資料元件的各個資料元件作比較。
- 如請求項1之處理器,其中該執行單元係用以執行該指令,以儲存該第一結果,其中該第一結果的各個遮罩元件將被:設定為1,以表示在該第一源緊縮資料運算元中的所述對應資料元件等於在該第二源緊縮資料運算元中的任一所述資料元件;或清除為0,以表示在該第一源緊縮資料運算元中的所述對應資料元件並未等於在該第二源緊縮資料運算元中的任一所述資料元件。
- 如請求項1之處理器,其中該執行單元係用以執行該指令,以儲存該第一結果,其中各個遮罩元件包含單一位元。
- 如請求項1之處理器,其中該解碼單元係用以解碼該指令,該指令係用以表示該第一遮罩暫存器為多數架構遮罩暫存器之一。
- 如請求項1之處理器,其中該指令係被包含在具有多數指令的指令集中,各個指令具有一欄位以指明多數架構遮罩暫存器之一作為遮罩運算元的來源,其係將被用以遮罩相關緊縮資料運算。
- 如請求項1之處理器,其中該解碼單元係用以解碼該指令,該指令係用以表示該第一源緊縮資料運算元與該第二源緊縮資料運算元,其各個具有32位元資料元件。
- 如請求項1之處理器,其中該解碼單元 係用以解碼該指令,該指令係用以表示該第一源緊縮資料運算元與該第二源緊縮資料運算元,其各個具有64位元資料元件。
- 如請求項1之處理器,其中該解碼單元係用以解碼該指令,該指令係用以表示該第一與第二源緊縮資料運算元,其各個至少包含512位元。
- 如請求項1之處理器,其中該解碼單元包含電路,及其中該執行單元包含電路。
- 一種處理指令的系統,包含:如請求項1之處理器;及耦接至該處理器的動態隨機存取記憶體(DRAM)。
- 一種處理器,包含:在晶粒上的解碼單元,用以解碼指令,該指令用以表示:將有予以包含第一多數資料元件的第一源緊縮資料運算元的第一向量暫存器、將有予以包含第二多數資料元件的第二源緊縮資料運算元的第二向量暫存器與記憶體位址之一、第一遮罩暫存器、及第二遮罩暫存器;及執行單元,在該晶粒上並耦接至該解碼單元,該執行單元用以執行該指令,以產生及儲存:第一結果於該第一遮罩暫存器中,該第一結果用以包含用於在該第一源緊縮料運算元中的相同相對位置中的各個對應資料元件的不同遮罩元件,該第一結果的各個遮罩位元用以表示在該第一源緊縮資料運算元中的所述對應資料元件是否等於在該第二源緊縮資料運算元中的任一 所述資料元件,其中該第一結果的各個遮罩位元將被:設定為1,以表示在該第一源緊縮資料運算元中的所述對應資料元件等於在該第二源緊縮資料運算元中的任一所述資料元件;或者清除為0,以表示在該第一源緊縮資料運算元中的所述對應資料元件並未等於在該第二源緊縮資料運算元中的任一所述對應資料元件;及第二結果於該第二遮罩暫存器中,該第二結果用以包含用於在該第二源緊縮資料運算元中的相同相對位置中的各個對應資料元件的不同遮罩元件,該第二結果的各個遮罩位元用以表示在該第二源緊縮資料運算元中的所述對應資料元件是否等於在該第一源緊縮資料運算元中的任一所述資料元件,其中該第二結果的各個遮罩位元將被:設定為1,以表示在該第二源緊縮資料運算元中的所述對應資料元件等於在該第一源緊縮資料運算元中的任一所述資料元件;或者清除為0,以表示在該第二源緊縮資料運算元中的所述對應資料元件並未等於在該第一源緊縮資料運算元中的任一所述資料元件。
- 如請求項12之處理器,其中該執行單元係用以執行該指令,用以將所述第一多數資料元件的各個資料元件與所述第二多數資料元件的各個資料元件作比較。
- 如請求項12之處理器,其中該指令係被包含在具有多數指令的指令集中,各個指令具有一欄位以指明多數架構遮罩暫存器之一作為遮罩運算元的來源, 其係將被用以遮罩相關緊縮資料運算。
- 如請求項12之處理器,其中該解碼單元係用以解碼該指令,該指令係用以表示該第一源緊縮資料運算元與該第二源緊縮資料運算元,其各個具有32位元資料元件與64位元資料元件之一。
- 如請求項12之處理器,其中該解碼單元係用以解碼該指令,該指令係用以表示該第一與第二源緊縮資料運算元,其各個至少包含512位元。
- 一種處理指令的系統,包含:處理器,包括:解碼單元,用以解碼第一指令集的指令;及一或更多執行單元,用以執行該第一指令集的已解碼指令;儲存裝置,耦接至該處理器,該儲存裝置用以儲存:第二指令集的第一指令,該第一指令用以表示:將具有第一多數資料元件的第一源緊縮資料運算元、將具有第二多數資料元件的第二源緊縮資料運算元;指令,用以將該第一指令轉換成該第一指令集的一或更多指令,當該第一指令集的所述一或更多指令為該處理器所執行時,使得該處理器用以產生及儲存:第一結果遮罩,該第一結果遮罩用以包含用於在該第一源緊縮料運算元中的相同相對位置中的各個對應資料元件的不同遮罩元件,該第一結果遮罩的各個遮罩元件 用以表示在該第一源緊縮資料運算元中的所述對應資料元件是否等於在該第二源緊縮資料運算元中的任一所述資料元件;及第二結果遮罩,該第二結果遮罩用以包含用於在該第二源緊縮資料運算元中的相同相對位置中的各個對應資料元件的不同遮罩元件,該第二結果遮罩的各個遮罩元件用以表示在該第二源緊縮資料運算元中的所述對應資料元件是否等於在該第一源緊縮資料運算元中的任一所述資料元件。
- 如請求項17之系統,其中該處理器係用以儲存該第一結果遮罩,其中各個遮罩元件包含單一位元。
- 如請求項17之系統,其中該處理器用以將所述第一多數資料元件的各個資料元件與所述第二多數資料元件的各個資料元件作比較。
- 如請求項17之系統,其中該處理器係用以儲存該第一結果遮罩,其中該第一結果遮罩的各個遮罩元件將被:設定為1,以表示在該第一源緊縮資料運算元中的所述對應資料元件等於在該第二源緊縮資料運算元中的任一所述資料元件;或清除為0,以表示在該第一源緊縮資料運算元中的所述對應資料元件並未等於在該第二源緊縮資料運算元中的任一所述資料元件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/866,921 | 2015-09-26 | ||
US14/866,921 US10423411B2 (en) | 2015-09-26 | 2015-09-26 | Data element comparison processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202132977A TW202132977A (zh) | 2021-09-01 |
TWI769645B true TWI769645B (zh) | 2022-07-01 |
Family
ID=58387419
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105127098A TWI715618B (zh) | 2015-09-26 | 2016-08-24 | 資料元件比較處理器、方法、系統及指令 |
TW109147069A TWI769645B (zh) | 2015-09-26 | 2016-08-24 | 資料元件比較處理器、方法、系統及指令 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105127098A TWI715618B (zh) | 2015-09-26 | 2016-08-24 | 資料元件比較處理器、方法、系統及指令 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10423411B2 (zh) |
CN (1) | CN107924308B (zh) |
DE (1) | DE112016004351T5 (zh) |
TW (2) | TWI715618B (zh) |
WO (1) | WO2017052917A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10423411B2 (en) | 2015-09-26 | 2019-09-24 | Intel Corporation | Data element comparison processors, methods, systems, and instructions |
US10565207B2 (en) * | 2016-04-12 | 2020-02-18 | Hsilin Huang | Method, system and program product for mask-based compression of a sparse matrix |
EP3602278B1 (en) * | 2017-03-20 | 2022-09-28 | Intel Corporation | Systems, methods, and apparatuses for tile matrix multiplication and accumulation |
US10726514B2 (en) | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
CN109461113B (zh) * | 2018-10-11 | 2021-07-16 | 中国人民解放军国防科技大学 | 一种面向数据结构的图形处理器数据预取方法及装置 |
US12008475B2 (en) | 2018-11-14 | 2024-06-11 | Nvidia Corporation | Transposed sparse matrix multiply by dense matrix for neural network training |
EP3938894B1 (en) | 2019-03-15 | 2023-08-30 | INTEL Corporation | Multi-tile memory management for detecting cross tile access, providing multi-tile inference scaling, and providing optimal page migration |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
KR20210136994A (ko) * | 2019-03-15 | 2021-11-17 | 인텔 코포레이션 | 매트릭스 가속기 아키텍처 내에서의 시스톨릭 분리 |
US10817297B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Method and apparatus for vector-matrix comparison |
CN110147307B (zh) * | 2019-05-15 | 2021-10-26 | 东华大学 | 一种嵌入式系统仿真ram、rom结果对比系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
US20140281418A1 (en) * | 2013-03-14 | 2014-09-18 | Shihjong J. Kuo | Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions |
US20140289503A1 (en) * | 2011-12-29 | 2014-09-25 | Bret L. Toll | Packed data operation mask comparison processors, methods, systems, and instructions |
TW201533660A (zh) * | 2009-12-17 | 2015-09-01 | 英特爾公司 | 用以在單一指令內執行移位及互斥或運算之方法及裝置(二) |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5341500A (en) | 1991-04-02 | 1994-08-23 | Motorola, Inc. | Data processor with combined static and dynamic masking of operand for breakpoint operation |
US5651121A (en) | 1992-12-18 | 1997-07-22 | Xerox Corporation | Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand |
US6036350A (en) | 1995-12-20 | 2000-03-14 | Intel Corporation | Method of sorting signed numbers and solving absolute differences using packed instructions |
US20080071851A1 (en) | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US7958181B2 (en) | 2006-09-21 | 2011-06-07 | Intel Corporation | Method and apparatus for performing logical compare operations |
US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US8972698B2 (en) | 2010-12-22 | 2015-03-03 | Intel Corporation | Vector conflict instructions |
WO2013095515A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
US20140089634A1 (en) | 2011-12-23 | 2014-03-27 | Victor W. Lee | Apparatus and method for detecting identical elements within a vector register |
US20130326196A1 (en) * | 2011-12-23 | 2013-12-05 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing vector packed unary decoding using masks |
CN114721721A (zh) * | 2011-12-23 | 2022-07-08 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
US10678541B2 (en) | 2011-12-29 | 2020-06-09 | Intel Corporation | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions |
EP2798464B8 (en) * | 2011-12-30 | 2019-12-11 | Intel Corporation | Packed rotate processors, methods, systems, and instructions |
US20140351567A1 (en) | 2011-12-30 | 2014-11-27 | Mikhail Plotnikov | Unique packed data element identification processors, methods, systems, and instructions |
US9569211B2 (en) * | 2012-08-03 | 2017-02-14 | International Business Machines Corporation | Predication in a vector processor |
US9842046B2 (en) | 2012-09-28 | 2017-12-12 | Intel Corporation | Processing memory access instructions that have duplicate memory indices |
US9411584B2 (en) | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
US10191743B2 (en) | 2013-12-29 | 2019-01-29 | Intel Corporation | Versatile packed data comparison processors, methods, systems, and instructions |
US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US10275247B2 (en) | 2015-03-28 | 2019-04-30 | Intel Corporation | Apparatuses and methods to accelerate vector multiplication of vector elements having matching indices |
US10423411B2 (en) | 2015-09-26 | 2019-09-24 | Intel Corporation | Data element comparison processors, methods, systems, and instructions |
-
2015
- 2015-09-26 US US14/866,921 patent/US10423411B2/en active Active
-
2016
- 2016-08-24 DE DE112016004351.1T patent/DE112016004351T5/de active Pending
- 2016-08-24 CN CN201680049798.6A patent/CN107924308B/zh active Active
- 2016-08-24 WO PCT/US2016/048370 patent/WO2017052917A1/en active Application Filing
- 2016-08-24 TW TW105127098A patent/TWI715618B/zh active
- 2016-08-24 TW TW109147069A patent/TWI769645B/zh active
-
2019
- 2019-09-23 US US16/579,394 patent/US11113053B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
TW201533660A (zh) * | 2009-12-17 | 2015-09-01 | 英特爾公司 | 用以在單一指令內執行移位及互斥或運算之方法及裝置(二) |
US20140289503A1 (en) * | 2011-12-29 | 2014-09-25 | Bret L. Toll | Packed data operation mask comparison processors, methods, systems, and instructions |
US20140281418A1 (en) * | 2013-03-14 | 2014-09-18 | Shihjong J. Kuo | Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions |
Also Published As
Publication number | Publication date |
---|---|
US11113053B2 (en) | 2021-09-07 |
WO2017052917A1 (en) | 2017-03-30 |
CN107924308B (zh) | 2022-08-26 |
TWI715618B (zh) | 2021-01-11 |
CN107924308A (zh) | 2018-04-17 |
DE112016004351T5 (de) | 2018-06-07 |
TW201723805A (zh) | 2017-07-01 |
TW202132977A (zh) | 2021-09-01 |
US20170090924A1 (en) | 2017-03-30 |
US10423411B2 (en) | 2019-09-24 |
US20200089494A1 (en) | 2020-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI769645B (zh) | 資料元件比較處理器、方法、系統及指令 | |
TWI756251B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
US10372449B2 (en) | Packed data operation mask concatenation processors, methods, systems, and instructions | |
US10037209B2 (en) | Systems, apparatuses, and methods for performing delta decoding on packed data elements | |
US9100184B2 (en) | Instructions processors, methods, and systems to process BLAKE secure hashing algorithm | |
US9684510B2 (en) | Systems, apparatuses, and methods for performing a shuffle and operation (Shuffle-Op) | |
US20220326948A1 (en) | Systems and methods for performing instructions to convert to 16-bit floating-point format | |
KR102354842B1 (ko) | 비트 셔플 프로세서, 방법, 시스템, 및 명령어 | |
US20200183688A1 (en) | Packed data operation mask shift processors, methods, systems, and instructions | |
TWI747881B (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
US9760371B2 (en) | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions | |
US9459865B2 (en) | Systems, apparatuses, and methods for performing a butterfly horizontal and cross add or substract in response to a single instruction | |
KR20140113556A (ko) | 제한 범위 벡터 메모리 액세스 인스트럭션들, 프로세서들, 방법들 및 시스템들 | |
TWI564795B (zh) | 四維摩頓座標轉換處理器、方法、系統及指令 | |
TW202326409A (zh) | 用於融合乘加運算的系統、裝置及方法 | |
CN106030514B (zh) | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 | |
KR101729424B1 (ko) | 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트 | |
TWI760341B (zh) | 用於跨步載入的系統、設備及方法 | |
EP2919112A2 (en) | Packed two source inter-element shift merge processors, methods, systems, and instructions | |
TWI818894B (zh) | 毗連資料元素成對調換處理器、方法、系統、及指令 |