TWI575451B - 用於遮罩及向量暫存器之間的可變擴充的方法及裝置 - Google Patents
用於遮罩及向量暫存器之間的可變擴充的方法及裝置 Download PDFInfo
- Publication number
- TWI575451B TWI575451B TW104138538A TW104138538A TWI575451B TW I575451 B TWI575451 B TW I575451B TW 104138538 A TW104138538 A TW 104138538A TW 104138538 A TW104138538 A TW 104138538A TW I575451 B TWI575451 B TW I575451B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- mask
- register
- bit
- processor
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims description 292
- 238000000034 method Methods 0.000 title claims description 25
- 230000000873 masking effect Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 3
- 230000003190 augmentative effect Effects 0.000 claims description 2
- 230000015654 memory Effects 0.000 description 137
- 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 75
- 238000010586 diagram Methods 0.000 description 32
- 238000007667 floating Methods 0.000 description 16
- 238000003860 storage Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 239000000872 buffer Substances 0.000 description 10
- 238000013501 data transformation Methods 0.000 description 7
- 238000000605 extraction Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000003321 amplification Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000003199 nucleic acid amplification method Methods 0.000 description 6
- 230000003416 augmentation Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000004907 flux Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 235000012431 wafers Nutrition 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001629 suppression 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/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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明一般係有關電腦處理器之領域。更特別地,本發明係有關用於遮罩及向量暫存器之間的可變擴充的方法及裝置。
指令集,或指令集架構(ISA),為關於編程之電腦架構的部分,包括本機資料類型、指令、暫存器架構、地址模式、記憶體架構、中斷和例外處置、及外部輸入和輸出(I/O)。應注意:術語「指令」於此通常指的是巨集指令-其為提供給處理器以供執行之指令-相對於微指令或微操作(micro-ops)-其為處理器之解碼器解碼巨集指令的結果。微指令或微操作可組態成指示處理器上之執行單元履行操作以實施與微指令相關的邏輯。
ISA不同於微架構,其為用以實施指令集之處理器設計技術的集合。具有不同微架構之處理器可共用一共同的指令集。例如,Intel® Pentium 4處理器,Intel® CoreTM
處理器、及來自Advanced Micro Devices,Inc.of Sunnyvale CA之處理器係實施幾乎相同版本的x86指令集(具有其已被加入較新版本的某些延伸),但具有不同的內部設計。例如,ISA之相同的暫存器架構可使用眾所周知的技術而以不同方式被實施於不同的微架構中,包括專屬的實體暫存器、使用暫存器重新命名機制之一或更多動態配置的實體暫存器(例如,使用暫存器別名表(RAT)、記錄器緩衝器(ROB)及撤回暫存器檔)。除非另有指明,用語暫存器架構、暫存器檔、及暫存器於文中係用以指稱軟體/編程器可見者以及其中指令指明暫存器之方式。當需要分別時,形容詞「邏輯的」、「架構的」、或「軟體可見的」將被用以指示暫存器架構中之暫存器/檔,而不同的形容詞將被用以指定既定微架構中之暫存器(例如,實體暫存器、記錄器緩衝器、撤回暫存器、暫存器池)。
指令集包括一或更多指令格式。既定指令格式係界定各種欄位(位元之數目、位元之位置)以指明(除了別的以外)待履行操作以及將於其上履行操作之運算元。一些指令格式係透過指令模板(或子格式)之定義而被進一步分解。例如,既定指令格式之指令模板可被定義以具有指令格式之欄位的不同子集(所包括的欄位通常係以相同順序,但至少某些具有不同的位元位置,因為包括了較少的欄位)及/或被定義以具有不同地解讀之既定欄位。既定指令係使用既定指令格式(以及,假如被定義的話,以該
指令格式之指令模板的既定一者)而被表達,並指明操作及運算元。指令串為明確序列的指令,其中該序列中之各指令為一指令格式中之指令的發生(以及,假如已定義,該指令格式之指令模板的既定一者)。
100‧‧‧一般性向量友善指令格式
105‧‧‧無記憶體存取
110‧‧‧無記憶體存取、全捨入控制類型操作
112‧‧‧無記憶體存取、寫入遮罩控制、部分捨入控制類型操作
115‧‧‧無記憶體存取、資料變換類型操作
117‧‧‧無記憶體存取、寫入遮罩控制、v大小類型操作
120‧‧‧記憶體存取
127‧‧‧記憶體存取、寫入遮罩控制
140‧‧‧格式欄位
142‧‧‧基礎操作欄位
144‧‧‧暫存器指標欄位
146‧‧‧修飾符欄位
150‧‧‧擴增操作欄位
152‧‧‧α欄位
152A‧‧‧RS欄位
152A.1‧‧‧捨入
152A.2‧‧‧資料變換
152B‧‧‧逐出暗示欄位
152B.1‧‧‧暫時
152B.2‧‧‧非暫時
154‧‧‧β欄位
154A‧‧‧捨入控制欄位
154B‧‧‧資料變換欄位
154C‧‧‧資料調處欄位
156‧‧‧SAE欄位
157A‧‧‧RL欄位
157A.1‧‧‧捨入
157A.2‧‧‧向量長度(VSIZE)
157B‧‧‧廣播欄位
158‧‧‧捨入操作控制欄位
159A‧‧‧捨入操作欄位
159B‧‧‧向量長度欄位
160‧‧‧比例欄位
162A‧‧‧置換欄位
162B‧‧‧置換因數欄位
164‧‧‧資料元件寬度欄位
168‧‧‧類別欄位
168A‧‧‧類別A
168B‧‧‧類別B
170‧‧‧寫入遮罩欄位
172‧‧‧即刻欄位
174‧‧‧全運算碼欄位
200‧‧‧特定向量友善指令格式
202‧‧‧EVEX前綴
205‧‧‧REX欄位
210‧‧‧REX’欄位
215‧‧‧運算碼映圖欄位
220‧‧‧VVVV欄位
225‧‧‧前綴編碼欄位
230‧‧‧真實運算碼欄位
240‧‧‧Mod R/M欄位
242‧‧‧MOD欄位
244‧‧‧Reg欄位
246‧‧‧R/M欄位
254‧‧‧SIB.xxx
256‧‧‧SIB.bbb
300‧‧‧暫存器架構
310‧‧‧向量暫存器
315‧‧‧寫入遮罩暫存器
325‧‧‧通用暫存器
345‧‧‧純量浮點堆疊暫存器檔
350‧‧‧MMX緊縮整數平坦暫存器檔
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‧‧‧執行叢集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧第二階(L2)快取單元
490‧‧‧處理器核心
500‧‧‧指令解碼器
502‧‧‧晶粒上互連網路
504‧‧‧第二階(L2)快取
506‧‧‧L1快取
506A‧‧‧L1資料快取
508‧‧‧純量單元
510‧‧‧向量單元
512‧‧‧純量暫存器
514‧‧‧向量暫存器
520‧‧‧拌合單元
522A-B‧‧‧數字轉換單元
524‧‧‧複製單元
526‧‧‧寫入遮罩暫存器
528‧‧‧16寬的ALU
600‧‧‧處理器
602A-N‧‧‧核心
606‧‧‧共享快取單元
608‧‧‧特殊用途邏輯
610‧‧‧系統代理
612‧‧‧環狀為基的互連單元
614‧‧‧集成記憶體控制器單元
616‧‧‧匯流排控制器單元
700‧‧‧系統
710,715‧‧‧處理器
720‧‧‧控制器集線器
740‧‧‧記憶體
745‧‧‧共處理器
750‧‧‧輸入/輸出集線器(IOH)
760‧‧‧輸入/輸出(I/O)裝置
790‧‧‧圖形記憶體控制器集線器(GMCH)
795‧‧‧連接
800‧‧‧多處理器系統
814‧‧‧I/O裝置
815‧‧‧額外處理器
816‧‧‧第一匯流排
818‧‧‧匯流排橋
820‧‧‧第二匯流排
822‧‧‧鍵盤及/或滑鼠
824‧‧‧音頻I/O
827‧‧‧通訊裝置
828‧‧‧儲存單元
830‧‧‧指令/碼及資料
832‧‧‧記憶體
834‧‧‧記憶體
838‧‧‧共處理器
839‧‧‧高性能介面
850‧‧‧點對點互連
852,854‧‧‧P-P介面
870‧‧‧第一處理器
872,882‧‧‧集成記憶體控制器(IMC)單元
876,878‧‧‧點對點(P-P)介面
880‧‧‧第二處理器
886,888‧‧‧P-P介面
890‧‧‧晶片組
894,898‧‧‧點對點介面電路
896‧‧‧介面
900‧‧‧系統
914‧‧‧I/O裝置
915‧‧‧舊有I/O裝置
1000‧‧‧SoC
1002‧‧‧互連單元
1010‧‧‧應用程式處理器
1020‧‧‧共處理器
1030‧‧‧靜態隨機存取記憶體(SRAM)單元
1032‧‧‧直接記憶體存取(DMA)單元
1040‧‧‧顯示單元
1102‧‧‧高階語言
1104‧‧‧x86編譯器
1106‧‧‧x86二元碼
1108‧‧‧指令集編譯器
1110‧‧‧指令集二元碼
1112‧‧‧指令轉換器
1114‧‧‧沒有至少一x86指令集核心之處理器
1116‧‧‧具有至少一x86指令集核心之處理器
1200‧‧‧主記憶體
1201‧‧‧分支目標緩衝器(BTB)
1202‧‧‧分支預測單元
1203‧‧‧下一指令指針
1204‧‧‧指令翻譯旁看緩衝器(ITLB)
1205‧‧‧通用暫存器(GPR)
1206‧‧‧向量暫存器
1207‧‧‧遮罩暫存器
1210‧‧‧指令提取單元
1211‧‧‧第二階(L2)快取
1212‧‧‧第一階(L1)快取
1216‧‧‧第三階(L3)快取
1220‧‧‧解碼單元
1221‧‧‧資料快取
1230‧‧‧解碼單元
1231‧‧‧可變遮罩-向量擴充解碼邏輯
1240‧‧‧執行單元
1241‧‧‧可變遮罩-向量擴充執行邏輯
1250‧‧‧寫回單元
1255‧‧‧處理器
1300‧‧‧可變遮罩-向量擴充邏輯
1301‧‧‧來源遮罩暫存器
1302‧‧‧目的地向量暫存器
1303‧‧‧遮罩暫存器
1304‧‧‧指標暫存器
1601‧‧‧來源向量暫存器
1602‧‧‧目的地遮罩暫存器
1603‧‧‧遮罩暫存器
1604‧‧‧指標暫存器
從以下配合後附圖形之詳細描述可獲得對本發明之較佳瞭解,其中:圖1A及1B為闡明一般性向量友善指令格式及其指令模板的方塊圖,依據本發明之實施例。
圖2A-D為闡明範例特定向量友善指令格式的方塊圖,依據本發明之實施例;圖3為一暫存器架構之方塊圖,依據本發明之一實施例;及圖4A為闡明範例依序提取、解碼、撤回管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖,依據本發明之實施例;圖4B為一方塊圖,其闡明將包括於依據本發明之實施例的處理器中之依序提取、解碼、撤回核心的範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者;圖5A為單一處理器核心、連同其與晶粒上互連網路之連接的方塊圖;圖5B闡明圖5A中之處理器核心的部分之延伸視
圖,依據本發明之實施例;圖6為具有集成記憶體控制器及圖形之單核心處理器和多核心處理器的方塊圖,依據本發明之實施例;圖7闡明一系統之方塊圖,依據本發明之一實施例;圖8闡明一第二系統之方塊圖,依據本發明之實施例;圖9闡明一第三系統之方塊圖,依據本發明之實施例;圖10闡明依據本發明之實施例的系統單晶片(SoC)的方塊圖;圖11闡明對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例;圖12闡明本發明之實施例可被實施於其上的範例處理器;圖13闡明遮罩-向量擴充邏輯,依據本發明之一實施例;圖14闡明使用遮罩-向量擴充邏輯之一實施例的範例;圖15闡明使用遮罩-向量擴充邏輯之一實施例的另一範例;圖16闡明一實施例,其中來源向量元件被用以更新目的地遮罩暫存器;圖17闡明另一實施例,其中來源向量元件被用以更
新目的地遮罩暫存器;圖18闡明依據本發明之一實施例的方法;及圖19闡明依據本發明之一實施例的另一方法。
於以下說明中,為了解釋之目的,提出數個特定細節以提供下述本發明的實施例之透徹瞭解。然而,熟悉此項技術人士將清楚其本發明之實施例可被實行而無這些特定細節之部分。於其他例子中,眾所周知的結構及裝置被顯示以方塊圖形式,來避免混淆本發明的實施例之主要原則。
指令集包括一或更多指令格式。既定指令格式係界定各種欄位(位元之數目、位元之位置)以指明(除了別的以外)待履行操作(運算碼)以及將於其上履行操作之運算元。一些指令格式係透過指令模板(或子格式)之定義而被進一步分解。例如,既定指令格式之指令模板可被定義以具有指令格式之欄位的不同子集(所包括的欄位通常係以相同順序,但至少某些具有不同的位元位置,因為包括了較少的欄位)及/或被定義以具有不同地解讀之既定欄位。因此,ISA之各指令係使用既定指令格式(以及,假如被定義的話,以該指令格式之指令模板的既定一者)而被表達,並包括用以指明操作及運算元之欄位。例如,
範例ADD指令具有特定運算碼及一指令格式,其包括用以指明該運算碼之運算碼欄位及用以選擇運算元(來源1/目的地及來源2)之運算元欄位;而於一指令串中之此ADD指令的發生將具有特定內容於其選擇特定運算元之運算元欄位中。被稱為先進向量延伸(AVX)(AVX1及AVX2)並使用向量延伸(VEX)編碼技術之一組SIMD延伸已被釋出及/或出版(例如,參見Intel® 64及IA-32架構軟體開發商手冊,2011年十月;及參見Intel®先見向量延伸編程參考,2011年六月)。
文中所述之指令的實施例可被實施以不同的格式。此外,範例系統、架構、及管線被詳述於下。指令之實施例可被執行於此等系統、架構、及管線上,但不限定於那些細節。
向量友善指令格式是一種適於向量指令之指令格式(例如,有向量操作特定的某些欄位)。雖然實施例係描述其中向量和純量操作兩者均透過向量友善指令格式而被支援,但替代實施例僅使用具有向量友善指令格式之向量操作。
圖1A-1B為闡明一般性向量友善指令格式及其指令模板的方塊圖,依據本發明之實施例。圖1A為闡明一般性
向量友善指令格式及其類別A指令模板的方塊圖,依據本發明之實施例;而圖1B為闡明一般性向量友善指令格式及其類別B指令模板的方塊圖,依據本發明之實施例。明確地,針對一般性向量友善指令格式100係定義類別A及類別B指令模板,其兩者均包括無記憶體存取105指令模板及記憶體存取120指令模板。於向量友善指令格式之背景下術語「一般性」指的是不與任何特定指令集連結的指令格式。
雖然本發明之實施例將描述其中向量友善指令格式支援以下:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小)(而因此,64位元組向量係由16雙字元大小的元件、或替代地8四字元大小的元件所組成);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)之32位元組向量運算元長度(或大小);及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)之16位元組向量運算元長度(或大小);但是替代實施例可支援具有更大、更小、或不同資料元件寬度(例如,128位元(16位元組)資料元件寬度)之更大、更小及/或不同的向量運算元大小(例如,256位元組向量運算
元)。
圖1A中之類別A指令模板包括:1)於無記憶體存取105指令模板內,顯示有無記憶體存取、全捨入控制類型操作110指令模板及無記憶體存取、資料變換類型操作115指令模板;以及2)於記憶體存取120指令模板內,顯示有記憶體存取、暫時125指令模板及記憶體存取、非暫時130指令模板。圖1B中之類別B指令模板包括:1)於無記憶體存取105指令模板內,顯示有無記憶體存取、寫入遮罩控制、部分捨入控制類型操作112指令模板及無記憶體存取、寫入遮罩控制、v大小類型操作117指令模板;以及2)於記憶體存取120指令模板內,顯示有記憶體存取、寫入遮罩控制127指令模板。
一般性向量友善指令格式100包括以下欄位,依圖1A-1B中所示之順序列出如下。
格式欄位140-此欄位中之一特定值(指令格式識別符值)係獨特地識別向量友善指令格式、以及因此在指令串中之向量友善指令格式的指令之發生。如此一來,此欄位是選擇性的,因為針對一僅具有一般性向量友善指令格式之指令集而言此欄位是不需要的。
基礎操作欄位142-其內容係分辨不同的基礎操作。
暫存器指標欄位144-其內容(直接地或透過位址產生)係指明來源及目的地運算元之位置,假設其係於暫存器中或記憶體中。這些包括足夠數目的位元以從PxQ(例如,32x512,16x128,32x1024,64x1024)暫存器檔選擇N
暫存器。雖然於一實施例中N可高達三個來源及一個目的地暫存器,但是替代實施例可支援更多或更少的來源及目的地暫存器(例如,可支援高達兩個來源,其中這些來源之一亦作用為目的地;可支援高達三個來源,其中這些來源之一亦作用為目的地;可支援高達兩個來源及一個目的地)。
修飾符欄位146-其內容係從不指明記憶體存取之那些指令分辨出其指明記憶體存取之一般性向量指令格式的指令之發生,亦即,介於無記憶體存取105指令模板與記憶體存取120指令模板之間。記憶體存取操作係讀取及/或寫入至記憶體階層(於使用暫存器中之值以指明來源及/或目的地位址之某些情況下),而非記憶體存取操作則不會(例如,來源及目的地為暫存器)。雖然於一實施例中此欄位亦於三個不同方式之間選擇以履行記憶體位址計算,但是替代實施例可支援更多、更少、或不同方式以履行記憶體位址計算。
擴增操作欄位150-其內容係分辨多種不同操作之哪一個將被履行,除了基礎操作之外。此欄位是背景特定的。於本發明之一實施例中,此欄位被劃分為類別欄位168、α欄位152、及β欄位154。擴增操作欄位150容許操作之共同群組將被履行以單指令而非2、3、或4指令。
比例欄位160-其內容容許指標欄位之內容的定標,以供記憶體位址產生(例如,以供其使用2比例*指標+基礎之位址產生)。
置換欄位162A-其內容被使用為記憶體位址產生之部分(例如,以供其使用2比例*指標+基礎+置換之位址產生)。
置換因數欄位162B(注意:直接在置換因數欄位162B上方之置換欄位162A的並列指示一者或另一者被使用)-其內容被使用為位址產生之部分;其指明將被記憶體存取之大小(N)所定標的置換因數-其中N為記憶體存取中之位元組數目(例如,以供其使用2比例*指標+基礎+定標置換之位址產生)。冗餘低階位元被忽略而因此,置換因數欄位之內容被乘以記憶體運算元總大小(N)來產生最終置換以供使用於計算有效位址。N之值係在運作時間由處理器硬體所判定,根據全運算碼欄位174(稍後描述於文中)及資料調處欄位154C。置換欄位162A及置換因數欄位162B是選擇性的,因為其未被使用於無記憶體存取105指令模板及/或不同的實施例可實施該兩欄位之僅一者或者無任何。
資料元件寬度欄位164-其內容係分辨數個資料元件之哪一個將被使用(於針對所有指令之某些實施例中;於針對僅某些指令之其他實施例中)。此欄位是選擇性的,在於其假如僅有一資料元件寬度被支援及/或資料元件寬度係使用運算碼之某形態而被支援則此欄位是不需要的。
寫入遮罩欄位170-其內容係根據每資料元件位置以控制其目的地向量運算元中之資料元件位置是否反映基礎操作及擴增操作之結果。類別A指令模板支援合併-寫入遮
蔽,而類別B指令模板支援合併-及歸零-寫入遮蔽兩者。當合併時,向量遮罩容許目的地中之任何組的元件被保護自任何操作之執行期間(由基礎操作及擴增操作所指明)的更新;於另一實施例中,保留其中相應遮罩位元具有0之目的地的各元件之舊值。反之,當歸零時,向量遮罩容許目的地中之任何組的元件被歸零於任何操作之執行期間(由基礎操作及擴增操作所指明);於一實施例中,當相應遮罩位元具有0值時則目的地之一元件被設為0。此功能之子集是其控制被履行之操作的向量長度(亦即,被修飾之元件的範圍,從第一者至最後者)的能力;然而,其被修飾之元件不需要是連續的。因此,寫入遮罩欄位170容許部分向量操作,包括載入、儲存、運算、邏輯,等等。雖然本發明之實施例係描述其中寫入遮罩欄位170之內容選擇其含有待使用之寫入遮罩的數個寫入遮罩暫存器之一(而因此寫入遮罩欄位170之內容間接地識別其遮蔽將被履行),但是替代實施例取代地或者額外地容許寫入遮罩欄位170之內容直接地指明其遮蔽將被履行。
即刻欄位172-其內容容許即刻之指明。此欄位是選擇性的,由於此欄位存在於其不支援即刻之一般性向量友善格式的實施方式中且此欄位不存在於其不使用即刻之指令中。
類別欄位168-其內容分辨於不同類別的指令之間。參考圖1A-B,此欄位之內容選擇於類別A與類別B指令之間。於圖1A-B中,圓化角落的方形被用以指示一特定值
存在於一欄位中(例如,針對類別欄位168之類別A 168A及類別B 168B,個別地於圖1A-B中)。
於類別A之非記憶體存取105指令模板的情況下,α欄位152被解讀為RS欄位152A,其內容係分辨不同擴增操作類型之哪一個將被履行(例如,捨入152A.1及資料變換152A.2被個別地指明給無記憶體存取、捨入類型操作110及無記憶體存取、資料變換類型操作115指令模板),而β欄位154係分辨該些指明類型的操作之哪個將被履行。於無記憶體存取105指令模板中,比例欄位160、置換欄位162A、及置換比例欄位162B不存在。
於無記憶體存取全捨入類型操作110指令模板中,β欄位154被解讀為捨入控制欄位154A,其內容係提供靜態捨入。雖然於本發明之所述實施例中,捨入控制欄位154A包括抑制所有浮點例外(SAE)欄位156及捨入操作控制欄位158,但替代實施例可支援可將這兩個觀念均編碼入相同欄位或僅具有這些觀念/欄位之一者或另一者(例如,可僅具有捨入操作控制欄位158)。
SAE欄位156-其內容係分辨是否除能例外事件報告;當SAE欄位156之內容指示抑制被致能時,則一既定指令不報告任何種類的浮點例外旗標且不引發任何浮點例外
處置器。
捨入操作控制欄位158-其內容係分辨一群捨入操作之哪一個將被履行(例如向上捨入、向下捨入、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位158容許以每指令為基之捨入模式的改變。於本發明之一實施例中,其中處理器包括一用以指明捨入模式之控制暫存器,捨入操作控制欄位150之內容係撤銷該暫存器值。
於無記憶體存取資料變換類型操作115指令模板中,β欄位154被解讀為資料變換欄位154B,其內容係分辨數個資料變換之哪一個將被履行(例如,無資料變換、拌合、廣播)。
於類別A之記憶體存取120指令模板中,α欄位152被解讀為逐出暗示欄位152B,其內容係分辨逐出暗示之哪一個將被使用(於圖1A中,暫時152B.1及非暫時152B.2被個別地指明給記憶體存取、暫時125指令模板及記憶體存取、非暫時130指令模板),而β欄位154被解讀為資料調處欄位154C,其內容係分辨數個資料調處操作(亦已知為基元)之哪一個將被履行(例如,無調處;廣播;來源之向上轉換;及目的地之向下轉換)。記憶體存取120指令模板包括比例欄位160、及選擇性地置換欄位162A或置換比例欄位162B。
向量記憶體指令係履行向量載入自及向量儲存至記憶
體,具有轉換支援。至於一般向量指令,向量記憶體指令係以資料元件式方式轉移資料自/至記憶體,以其被實際地轉移之元件由其被選為寫入遮罩的向量遮罩之內容所主宰。
暫時資料為可能會夠早地被再使用以受惠自快取的資料。然而,此為一暗示,且不同的處理器可以不同的方式來實施,包括完全地忽略該暗示。
非暫時資料為不太可能會夠早地被再使用以受惠自第一階快取中之快取且應被給予逐出之既定優先權的資料。然而,此為一暗示,且不同的處理器可以不同的方式來實施,包括完全地忽略該暗示。
於類別B之指令模板的情況下,α欄位152被解讀為寫入遮罩控制(Z)欄位152C,其內容係分辨由寫入遮罩欄位170所控制的寫入遮蔽是否應為合併或歸零。
於類別B之非記憶體存取105指令模板的情況下,β欄位154之部分被解讀為RL欄位157A,其內容係分辨不同擴增操作類型之哪一個將被履行(例如,捨入157A.1及向量長度(VSIZE)157A.2被個別地指明給無記憶體存
取、寫入遮罩控制、部分捨入控制類型操作112指令模板及無記憶體存取、寫入遮罩控制、VSIZE類型操作117指令模板),而剩餘的β欄位154係分辨該些指明類型的操作之哪個將被履行。於無記憶體存取105指令模板中,比例欄位160、置換欄位162A、及置換比例欄位162B不存在。
於無記憶體存取中,寫入遮罩控制、部分捨入控制類型操作110指令模板、及剩餘的β欄位154被解讀為捨入操作欄位159A且例外事件報告被除能(既定指令則不報告任何種類的浮點例外旗標且不引發任何浮點例外處置器)。
捨入操作控制欄位159A-正如捨入操作控制欄位158,其內容係分辨一群捨入操作之哪一個將被履行(例如向上捨入、向下捨入、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位159A容許以每指令為基之捨入模式的改變。於本發明之一實施例中,其中處理器包括一用以指明捨入模式之控制暫存器,捨入操作控制欄位150之內容係撤銷該暫存器值。
於無記憶體存取、寫入遮罩控制、VSIZE類型操作117指令模板中,剩餘的β欄位154被解讀為向量長度欄位159B,其內容係分辨數個資料向量長度之哪一個將被履行(例如,128、256、或512位元組)。
於類別B之記憶體存取120指令模板的情況下,β欄位154之部分被解讀為廣播欄位157B,其內容係分辨廣
播類型資料調處操作是否將被履行,而剩餘的β欄位154被解讀為向量長度欄位159B。記憶體存取120指令模板包括比例欄位160、及選擇性地置換欄位162A或置換比例欄位162B。
關於一般性向量友善指令格式100,全運算碼欄位174被顯示為包括格式欄位140、基礎操作欄位142、及資料元件寬度欄位164。雖然一實施例被顯示為其中全運算碼欄位174包括所有這些欄位,全運算碼欄位174包括少於所有這些欄位在不支援其所有的實施例中。全運算碼欄位174提供操作碼(運算碼)。
擴增操作欄位150、資料元件寬度欄位164、及寫入遮罩欄位170容許這些特徵以每指令為基被指明以一般性向量友善指令格式。
寫入遮罩欄位與資料元件寬度欄位之組合產生類型化的指令,在於其容許遮罩根據不同資料元件寬度而被施加。
類別A及類別B中所發現之各種指令模板在不同情況下是有利的。於本發明之某些實施例中,不同處理器或一處理器中之不同核心可支援僅類別A、僅類別B、或兩類別。例如,用於通用計算之高性能通用失序核心可支援僅類別B;主要用於圖形及/或科學(通量)計算之核心可支援僅類別A;及用於兩者之核心可支援兩者(當然,一種具有來自兩類別之模板和指令的某混合但非來自兩類別之所有模板和指令的核心是落入本發明之範圍內)。同
時,單一處理器可包括多核心,其所有均支援相同的類別或者其中不同的核心支援不同的類別。例如,於一具有分離的圖形和通用核心之處理器中,主要用於圖形及/或科學計算的圖形核心之一可支援僅類別A;而通用核心之一或更多者可為高性能通用核心,其具有用於支援僅類別B之通用計算的失序執行和暫存器重新命名。不具有分離的圖形核心之另一處理器可包括支援類別A和類別B兩者之一或更多通用依序或失序核心。當然,來自一類別之特徵亦可被實施於另一類別中,在本發明之不同實施例中。以高階語言寫入之程式將被置入(例如,僅以時間編譯或靜態地編譯)多種不同的可執行形式,包括:1)僅具有由用於執行之處理器所支援的類別之指令的形式;或2)具有其使用所有類別之指令的不同組合所寫入之替代常式並具有控制流碼的形式,該控制流碼係根據由目前正執行該碼之處理器所支援的指令以選擇用來執行之常式。
圖2為闡明範例特定向量友善指令格式的方塊圖,依據本發明之實施例。圖2顯示特定向量友善指令格式200,其之特定在於其指明欄位之位置、大小、解讀及順序,以及那些欄位之部分的值。特定向量友善指令格式200可被用以延伸x86指令集,而因此某些欄位係類似於或相同於現存x86指令集及其延伸(例如,AVX)中所使用的那些。此格式保持與下列各者一致:具有延伸之現存
x86指令集的前綴編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、置換欄位、及即刻欄位。闡明來自圖1之欄位投映入來自圖2之欄位。
應理解:雖然本發明之實施例係參考為說明性目的之一般性向量友善指令格式100的背景下之特定向量友善指令格式200而描述,但除非其中有聲明否則本發明不限於特定向量友善指令格式200。例如,一般性向量友善指令格式100係考量各個欄位之多種可能大小,而特定向量友善指令格式200被顯示為具有特定大小之欄位。舉特定例而言,雖然資料元件寬度欄位164被闡明為特定向量友善指令格式200之一位元欄位,但本發明未如此限制(亦即,一般性向量友善指令格式100係考量資料元件寬度欄位164之其他大小)。
一般性向量友善指令格式100包括以下欄位,依圖2A中所示之順序列出如下。
EVEX前綴(位元組0-3)202-被編碼以四位元組形式。
格式欄位140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位140且其含有0x62(用於分辨本發明之一實施例中的向量友善指令格式之獨特值)。
第二-第四位元組(EVEX位元組1-3)包括數個提供特定能力之位元欄位。
REX欄位205(EVEX位元組1,位元[7-5])-係包
括:EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及157BEX位元組1,位元[5]-B)。EVEX.R、EVEX.X、及EVEX.B位元欄位提供如相應VEX位元欄位之相同功能,且係使用1互補形式而被編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。指令之其他欄位編碼該些暫存器指標之較低三位元如本技術中所已知者(rrr、xxx、及bbb),以致Rrrr、Xxxx、及Bbbb可藉由加入EVEX.R、EVEX.X、及EVEX.B而被形成。
REX’欄位110-此為REX’欄位110之第一部分且為EVER.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而被形成。
運算碼映圖欄位215(EVEX位元組1,位元[3:0]-mmmm)-其內容係編碼一暗示的領先運算碼位元組(0F、0F 38、或0F 3)。
資料元件寬度欄位164(EVEX位元組2,位元[7]-
W)係由記號EVEX.W所表示。EVEX.W被用以界定資料類型(32位元資料元件或64位元資料元件)之粒度(大小)。
EVEX.vvvv 220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvv之角色可包括以下:1)EVEX.vvvv編碼其以反轉(1之補數)形式所指明的第一來源暫存器運算元且針對具有2或更多來源運算元為有效的;2)EVEX.vvvv針對某些向量位移編碼其以1之補數形式所指明的目的地暫存器運算元;或3)EVEX.vvvv未編碼任何運算元,該欄位被保留且應含有1111b。因此,EVEX.vvvv欄位220係編碼其以反轉(1之補數)形式所儲存的第一來源暫存器指明符之4個低階位元。根據該指令,一額外的不同EVEX位元欄位被用以延伸指明符大小至32暫存器。
EVEX.U 168類別欄位(EVEX位元組2,位元[2]-U)-假如EVEX.U=0,則其指示類別A或EVEX.U0;假如EVEX.U=1,則其指示類別B或EVEX.U1。
前綴編碼欄位225(EVEX位元組2,位元[1:0]-pp)提供額外位元給基礎操作欄位。除了提供針對EVEX前綴格式之舊有SSE指令的支援,此亦具有壓縮SIMD前綴之優點(不需要一位元組來表達SIMD前綴,EVEX前綴僅需要2位元)。於一實施例中,為了支援其使用以舊有格式及以EVEX前綴格式兩者之SIMD前綴(66H、F2H、F3H)的舊有SSE指令,這些舊有SIMD前綴被編碼為SIMD前綴編碼欄位;且在運作時間被延伸入舊有SIMD
前綴,在其被提供至解碼器的PLA以前(以致PLA可執行這些舊有指令之舊有和EVEX格式兩者而無須修改)。雖然較少的指令可將EVEX前綴編碼欄位之內容直接地使用為運算碼延伸,但某些實施例係以類似方式延伸以符合一致性而容許不同的意義由這些舊有SIMD前綴來指明。替代實施例可重新設計PLA以支援2位元SIMD前綴編碼,而因此不需要延伸。
α欄位152(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦闡明以α)-如先前所描述,此欄位是背景特定的。
β欄位154(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦闡明以βββ)-如先前所描述,此欄位是背景特定的。
REX’欄位110-此為REX’欄位之剩餘部分且為EVER.V’位元欄位(EVEX位元組3,位元[3]-V’),其被用以編碼延伸的32暫存器集之上16個或下16個。此位元被儲存以位元反轉格式。1之值被用以編碼下16暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv所形成。
寫入遮罩欄位170(EVEX位元組3,位元[2:0]-kkk)-其內容係指明在如先前所述之寫入遮罩暫存器中的暫存器之指數。於本發明之一實施例中,特定值
EVEX.kkk=000具有一特殊行為,其係暗示無寫入遮罩被用於特別指令(此可被實施以多種方式,包括使用其固線至所有各者之寫入遮罩或者其旁路遮蔽硬體之硬體)。
真實運算碼欄位230(位元組4)亦已知為運算碼位元組。運算碼之部分被指明於此欄位。
MOD R/M欄位240(位元組5)包括MOD欄位242、Reg欄位244、及R/M欄位246。如先前所述MOD欄位242之內容係分辨於記憶體存取與非記憶體存取操作之間。Reg欄位244之角色可被概述為兩情況:編碼目的地暫存器運算元或來源暫存器運算元、或者被視為運算碼延伸而不被用以編碼任何指令運算元。R/M欄位246之角色可包括以下:編碼其參考記憶體位址之指令運算元;或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、指標、基礎(SIB)位元組(位元組6)-如先前所述,比例欄位150之內容被用於記憶體位址產生。SIB.xxx 254及SIB.bbb 256-這些欄位之內容先前已被參考針對暫存器指標Xxxx及Bbbb。
置換欄位162A(位元組7-10)-當MOD欄位242含有10時,位元組7-10為置換欄位162A,且其工作如舊有32位元置換(disp32)之相同方式且工作以位元組粒度。
置換因數欄位162B(位元組7)-當MOD欄位242含有01時,位元組7為置換因數欄位162B。此欄位之位置係相同於舊有x86指令集8位元置換(disp8)之位置,
其工作以位元組粒度。因為disp8是符號延伸的,所以其可僅定址於-128與127位元組偏移之間;關於64位元組快取線,disp8係使用其可被設為僅四個真實可用值-128、-64、0及64之8位元;因為較大範圍經常是需要的,所以disp32被使用;然而,disp32需要4位元組。相對於disp8及disp32,置換因數欄位162B為disp8之再解讀;當使用置換因數欄位162B時,實際置換係由置換因數欄位之內容乘以記憶體運算元存取之大小(N)所判定。置換欄位之類型被稱為disp8*N。此係減少平均指令長度(用於置換欄位之單一位元組但具有更大的範圍)。此壓縮置換是基於假設其有效置換為記憶體存取之粒度的數倍,而因此,位址偏移之冗餘低階位元無須被編碼。換言之,置換因數欄位162B取代舊有x86指令集8位元置換。因此,置換因數欄位162B被編碼以如x86指令集8位元置換之相同方式(以致ModRM/SIB編碼規則並無改變),唯一例外是其disp8被超載至disp8*N。換言之,編碼規則或編碼長度沒有改變,但僅於藉由硬體之置換值的解讀(其需由記憶體運算元之大小來縮放置換以獲得位元組式的位址偏移)。
即刻欄位172係操作如先前所述。
圖2B為闡明其組成全運算碼欄位174之特定向量友善指令格式200的欄位之方塊圖,依據本發明之一實施
例。明確地,全運算碼欄位174包括格式欄位140、基礎操作欄位142、及資料元件寬度(W)欄位164。基礎操作欄位142包括前綴編碼欄位225、運算碼映圖欄位215、及真實運算碼欄位230。
圖2C為闡明其組成暫存器指標欄位144之特定向量友善指令格式200的欄位之方塊圖,依據本發明之一實施例。明確地,暫存器指標欄位144包括REX欄位205、REX’欄位210、MODR/M.reg欄位244、MODR/M.r/m欄位246、VVVV欄位220、xxx欄位254、及bbb欄位256。
圖2D為闡明其組成擴增操作欄位150之特定向量友善指令格式200的欄位之方塊圖,依據本發明之一實施例。當類別(U)欄位168含有0時,則其表示EVEX.U0(類別A 168A);當其含有1時,則其表示EVEX.U1(類別B 168B)。當U=0且MOD欄位242含有11(表示無記憶體存取操作)時,則α欄位152(EVEX位元組3,位元[7]-EH)被解讀為rs欄位152A。當rs欄位152A含有1(捨入152A.1)時,則β欄位154(EVEX位元組3,位元[6:4]-SSS)被解讀為捨入控制欄位154A。捨入控制欄位154A包括一位元SAE欄位156及二位元捨入操作
欄位158。當rs欄位152A含有0(資料變換152A.2)時,則β欄位154(EVEX位元組3,位元[6:4]-SSS)被解讀為三位元資料變換欄位154B。當U=0且MOD欄位242含有00、01、或10(表示記憶體存取操作)時,則α欄位152(EVEX位元組3,位元[7]-EH)被解讀為逐出暗示(EH)欄位152B且β欄位154(EVEX位元組3,位元[6:4]-SSS)被解讀為三位元資料調處欄位154C。
當U=1時,則α欄位152(EVEX位元組3,位元[7]-EH)被解讀為寫入遮罩控制(Z)欄位152C。當U=1且MOD欄位242含有11(表示無記憶體存取操作)時,則β欄位154之部分(EVEX位元組3,位元[4]-S0)被解讀為RL欄位157A;當其含有1(捨入157A.1)時,則β欄位154之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解讀為捨入操作欄位159A;而當RL欄位157A含有0(VSIZE 157.A2)時,則β欄位154之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解讀為向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位242含有00、01、或10(表示記憶體存取操作)時,則β欄位154(EVEX位元組3,位元[6:4]-SSS)被解讀為向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位157B(EVEX位元組3,位元[4]-B)。
圖3為一暫存器架構300之方塊圖,依據本發明之一
實施例。於所示之實施例中,有32個向量暫存器310,其為512位元寬;這些暫存器被稱為zmm0至zmm31。較低的16個zmm暫存器之較低階256位元被重疊於暫存器ymm0-16上。較低的16個zmm暫存器之較低階128位元(ymm暫存器之較低階128位元)被重疊於暫存器xmm0-15上。特定向量友善指令格式200係操作於這些重疊的暫存器檔上,如以下表中所闡明。
換言之,向量長度欄位159B於最大長度與一或更多其他較短長度之間選擇,其中每一此較短長度為前一長度之長度的一半;而無向量長度欄位159B之指令模板係操作於最大長度上。此外,於一實施例中,特定向量友善指令格式200之類別B指令模板係操作於緊縮或純量單/雙精確度浮點資料及緊縮或純量整數資料上。純量操作為履行於zmm/ymm/xmm暫存器中之最低階資料元件上的操作;較高階資料元件位置係根據實施例而被保留如其在該指令前之相同者或者被歸零。
寫入遮罩暫存器315-於所示之實施例中,有8個寫入
遮罩暫存器(k0至k7),大小各為64位元。於替代實施例中,寫入遮罩暫存器315之大小為16位元。如先前所述,於本發明之一實施例中,向量遮罩暫存器k0無法被使用為寫入遮罩;當其通常將指示k0之編碼被用於寫入遮罩時,其係選擇0xFFFF之固線寫入遮罩,有效地除能該指令之寫入遮蔽。
通用暫存器325-於所示之實施例中,有十六個64位元通用暫存器,其係連同現存的x86定址模式來用以定址記憶體運算元。這些暫存器被參照以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔(x87堆疊)345,MMX緊縮整數平坦暫存器檔350係別名於其上-於所示之實施例中,x87堆疊為用以使用x87指令集延伸而在32/64/80位元浮點資料上履行純量浮點操作之八元件堆疊;而MMX暫存器被用以履行操作在64位元緊縮整數資料上、及用以保持運算元以供介於MMX與XMM暫存器間所履行的某些操作。
本發明之替代實施例可使用較寬或較窄的暫存器。此外,本發明之替代實施例可使用更多、更少、或不同的暫存器檔及暫存器。
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施方式可包括:
1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施方式可包括:1)CPU,其包括用於通用計算之一或更多通用依序核心及/或用於通用計算之一或更多通用失序核心;及2)核心處理器,其包括主要用於圖形及/或科學(通量)之一或更多特殊用途核心。此等不同處理器導致不同的電腦系統架構,其可包括:1)在來自該CPU之分離晶片上的共處理器;2)在與CPU相同的封裝中之分離晶粒上的共處理器;3)在與CPU相同的晶粒上的共處理器(於該情況下,此一處理器有時被稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)在一可包括於相同晶粒上之所述CPU(有時稱為應用程式核心或應用程式處理器)、上述共處理器、及額外功能的晶片上之系統。範例核心架構被描述於下,接續著範例處理器及電腦架構之描述。
圖4A為闡明範例依序管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖,依據本發明之實施例。圖4B為一方塊圖,其闡明將包括於依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者。圖4A-B中之實線方盒係闡明依序管線及依序核心,而虛線方盒之選擇性加入係闡明暫存器重新命名、失序問題/執行管線及核心。假設其依序形態為失序形態之子集,將描述失序形
態。
於圖4A中,處理器管線400包括提取級402、長度解碼級404、解碼級406、配置級408、重新命名級410、排程(亦已知為分派或發送)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體/寫入級418、例外處置級422、及確定級424。
圖4B顯示處理器核心490,其包括一耦合至執行單元引擎單元450之前端單元430,且兩者均耦合至記憶體單元470。核心490可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者併合或替代核心類型。當作又另一種選擇,核心490可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元430包括一分支預測單元432,其係耦合至指令快取單元434,其係耦合至指令翻譯旁看緩衝器(TLB)436,其係耦合至指令提取單元438,其係耦合至解碼單元440。解碼單元440(或解碼器)可解碼指令;並可將以下產生為輸出:一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其被解碼自(或者反應)、或被衍生自原始指令。解碼單元440可使用各種不同的機制來實施。適當機制之範例包括(但不限定於)查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM),等等。於一實施例中,核心490包
括微碼ROM或者儲存用於某些巨指令之微碼的其他媒體(例如,於解碼單元440中或者於前端單元430內)。解碼單元440被耦合至執行引擎單元450中之重新命名/配置器單元452。
執行引擎單元450包括重新命名/配置器單元452,其係耦合至撤回單元454及一組一或更多排程器單元456。排程器單元456代表任何數目的不同排程器,包括保留站、中央指令窗,等等。排程器單元456被耦合至實體暫存器檔單元458。實體暫存器檔單元458之各者代表一或更多實體暫存器檔,其不同者係儲存一或更多不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為下一待執行指令之位址的指令指標),等等。於一實施例中,實體暫存器檔單元458包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔單元458係由撤回單元454所重疊以闡明其中暫存器重新命名及失序執行可被實施之各種方式(例如,使用記錄器緩衝器和撤回暫存器檔;使用未來檔、歷史緩衝器、和撤回暫存器檔;使用暫存器映圖和暫存器池,等等)。撤回單元454及實體暫存器檔單元458被耦合至執行叢集460。執行叢集460包括一組一或更多執行單元462及一組一或更多記憶體存取單元464。執行單元462可履行各種操作(例如,偏移、相加、相減、相乘)以及於各種類型的資
料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括數個專屬於特定功能或功能集之執行單元,但其他實施例可包括僅一個執行單元或者全部履行所有功能之多數執行單元。排程器單元456、實體暫存器檔單元458、及執行叢集460被顯示為可能複數的,因為某些實施例係針對某些類型的資料/操作產生分離的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有本身的排程器單元、實體暫存器檔單元、及/或執行叢集-且於分離記憶體存取管線之情況下,某些實施例被實施於其中僅有此管線之執行叢集具有記憶體存取單元464)。亦應理解:當使用分離管線時,這些管線之一或更多者可為失序發送/執行而其他者為依序。
該組記憶體存取單元464被耦合至記憶體單元470,其包括資料TLB單元472,其耦合至資料快取單元474,其耦合至第二階(L2)快取單元476。於一範例實施例中,記憶體存取單元464可包括載入單元、儲存位址單元、及儲存資料單元,其各者係耦合至記憶體單元470中之資料TLB單元472。指令快取單元434被進一步耦合至記憶體單元470中之第二階(L2)快取單元476。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 Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON之選擇性額外延伸),包括文中所述之指令。於一實施例中,核心490包括支援緊縮資料指令集延伸(例如,AVX1、AVX2)之邏輯,藉此容許由許多多媒體應用程式所使用的操作使用緊縮資料來履行。
應理解:核心可支援多線程(執行二或更多平行組的操作或線緒),並可以多種方式執行,包括時間切割多線程、同時多線程(其中單一實體核心提供邏輯核心給其實體核心正同時地多線程之每一線緒)、或者其組合(例如,時間切割提取和解碼以及之後的同時多線程,諸如Intel® Hyperthreading技術)。
雖然暫存器重新命名被描述於失序執行之背景,但應理解其暫存器重新命名可被使用於依序架構。雖然處理器之所述的實施例亦包括分離的指令和資料快取單元434/474以及共享L2快取單元476,但替代實施例可具有針對指令和資料兩者之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階內部快取。於某些實施例中,該系統可包括內部快取與外部快取之組合,該外部快取是位於核心及/或處理器之外部。替代地,所有快取可於核心及/或處理器之外部。
圖5A-B闡明更特定的範例依序核心架構之方塊圖,該核心將為晶片中之數個邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊係透過高頻寬互連網路(例如,環狀網路)來通訊,利用某些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯,根據其應用而定。
圖5A為單處理器核心之方塊圖,連同與晶粒上互連網路502之其連接、以及第二階(L2)快取504之其本地子集,依據本發明之實施例。於一實施例中,指令解碼器500支援具有緊縮資料指令集延伸之x86指令集。L1快取506容許針對快取記憶體之低潛時存取入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元508及向量單元510使用分離的暫存器組(個別地,純量暫存器512及向量暫存器514),且於其間轉移的資料被寫入至記憶體並接著從第一階(L1)快取506被讀取回;但本
發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或者包括一通訊路徑,其容許資料被轉移於兩暫存器檔之間而不被寫入及讀取回)。
L2快取504之本地子集為其被劃分為分離本地子集(每一處理器核心有一個)之總體L2快取的部分。各處理器核心具有一直接存取路徑通至L2快取504之其本身的本地子集。由處理器核心所讀取的資料被儲存於其L2快取子集504中且可被快速地存取,平行於存取其本身本地L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集504中且被清除自其他子集,假如需要的話。環狀網路確保共享資料之一致性。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理於晶片內部彼此通訊。各環狀資料路徑於每方向為1012位元寬。
圖5B為圖5A中之處理器核心的部分之延伸視圖,依據本發明之實施例。圖5B包括L1快取504之L1資料快取506A部分、以及有關向量單元510和向量暫存器514之更多細節。明確地,向量單元510為16寬的向量處理單元(VPU)(參見16寬的ALU 528),其係執行整數、單精確度浮點、及雙精確度浮點指令之一或更多者。VPU支援以拌合單元520拌合暫存器輸入、以數字轉換單元522A-B之數字轉換、及於記憶體輸入上以複製單元524之複製。寫入遮罩暫存器526容許斷定結果向量寫入。
圖6為一種處理器600之方塊圖,該處理器1700可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形,依據本發明之實施例。圖6中之實線方塊闡明處理器600,其具有單核心602A、系統代理610、一組一或更多匯流排控制器單元616;而虛線方塊之選擇性加入闡明一替代處理器600,其具有多核心602A-N、系統代理單元610中之一組一或更多集成記憶體控制器單元614、及特殊用途邏輯608。
因此,處理器600之不同實施方式可包括:1)CPU,具有其為集成圖形及/或科學(通量)邏輯(其可包括一或更多核心)之特殊用途邏輯608、及其為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者之組合)之核心602A-N;2)共處理器,具有其為主要用於圖形及/或科學(通量)之大量特殊用途核心的核心602A-N;及3)共處理器,具有其為大量通用依序核心的核心602A-N。因此,處理器600可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多數集成核心(MIC)共處理器(包括30或更多核心)、嵌入式處理器,等等。該處理器可被實施於一或更多晶片上。處理器600可為一或更多基底之部分及/或可被實施於其上,使用數個製程技術之任一者,諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體階層包括該些核心內之一或更多階快取、一組
或者一或更多共享快取單元606、及耦合至該組集成記憶體控制器單元614之額外記憶體(未顯示)。該組共享快取單元606可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中環狀為基的互連單元612將以下裝置互連:集成圖形邏輯608、該組共享快取單元606、及系統代理單元610/集成記憶體單元614,但替代實施例可使用任何數目之眾所周知的技術以互連此等單元。於一實施例中,一致性被維持於一或更多快取單元606與核心602-A-N之間。
於某些實施例中,一或更多核心602A-N能夠進行多線程。系統代理610包括協調並操作核心602A-N之那些組件。系統代理單元610可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者包括用以調節核心602A-N及集成圖形邏輯608之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
核心602A-N可針對架構指令集為同質的或異質的;亦即,二或更多核心602A-N可執行相同的指令集,而其他者可執行該指令集或不同指令集之僅一子集。
圖7-10為範例電腦架構之方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、
手持式裝置、及各種其他電子裝置之技術中已知的其他系統設計和組態亦為適當的。通常,能夠結合處理器及/或其他執行邏輯(如文中所揭露者)之多種系統或電子裝置為一般性適當的。
現在參考圖7,其顯示依據本發明之一實施例的系統700之方塊圖。系統700可包括一或更多處理器710、715,其被耦合至控制器集線器720。於一實施例中,控制器集線器720包括圖形記憶體控制器集線器(GMCH)790及輸入/輸出集線器(IOH)750(其可於分離的晶片上);GMCH 790包括記憶體及圖形控制器(耦合至記憶體740及共處理器745);IOH 750為通至GMCH 790之耦合輸入/輸出(I/O)裝置760。另一方面,記憶體與圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體740及共處理器745被直接地耦合至處理器710、及具有IOH 750之單一晶片中的控制器集線器720。
額外處理器715之選擇性本質於圖7中被標示以斷線。各處理器710、715可包括文中所述的處理核心之一或更多者並可為處理器600之某版本。
記憶體740可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器720經由諸如前側匯流排(FSB)等多點分支匯流排、諸如QuickPath互連(QPI)等點對點介面、或類似連接795而與處理器
710、715通訊。
於一實施例中,共處理器745為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。於一實施例中,控制器集線器720可包括集成圖形加速器。
於實體資源710、715間可有多樣差異,針對價值矩陣之譜,包括架構、微架構、熱、功率耗損特性,等等。
於一實施例中,處理器710執行其控制一般類型之資料處理操作的指令。指令內所嵌入者可為共處理器指令。處理器710辨識這些共處理器指令為其應由裝附之共處理器745所執行的類型。因此,處理器710將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發送至共處理器745。共處理器745接受並執行該些接收的共處理器指令。
現在參考圖8,其顯示依據本發明之實施例的第一更特定範例系統800之方塊圖。如圖8中所示,多處理器系統800為點對點互連系統,並包括經由點對點互連850而耦合之第一處理器870及第二處理器880。處理器870及880之每一者可為處理器600之某版本。於本發明之一實施例中,處理器870及880個別為處理器710及715,而共處理器838為共處理器745。於另一實施例中,處理器870及880個別為處理器710及共處理器745。
處理器870及880被顯示為個別地包括集成記憶體控制器(IMC)單元872及882。處理器870亦包括其匯流
排控制器單元點對點(P-P)介面876及878之部分;類似地,第二處理器880包括P-P介面886及888。處理器870、880可使用P-P介面電路878、888而經由點對點(P-P)介面850來交換資訊。如圖8中所示,IMC 872及882將處理器耦合至個別記憶體,亦即記憶體832及記憶體834,其可為本地地裝附至個別處理器之主記憶體的部分。
處理器870、880可各經由個別的P-P介面852、854而與晶片組890交換資訊,使用點對點介面電路876、894、886、898。晶片組890可經由高性能介面839而選擇性地與共處理器838交換資訊。於一實施例中,共處理器838為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。
共享快取(未顯示)可被包括於任一處理器中或者於兩處理器外部,而經由P-P互連與處理器連接,以致處理器之任一者或兩者的本地快取資訊可被儲存於共享快取中,假如處理器被置於低功率模式時。
晶片組890可經由一介面896而被耦合至第一匯流排816。於一實施例中,第一匯流排816可為周邊組件互連(PCI)匯流排、或者諸如PCI快速匯流排或其他第三代I/O互連匯流排等匯流排,雖然本發明之範圍未如此限制。
如圖8中所示,各種I/O裝置814可被耦合至第一匯
流排816,連同匯流排橋818,其係將第一匯流排816耦合至第二匯流排820。於一實施例中,一或更多額外處理器815(諸如共處理器、高通量MIC處理器、GPGPU加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器)被耦合至第一匯流排816。於一實施例中,第二匯流排820可為低管腳數(LPC)匯流排。各個裝置可被耦合至第二匯流排820,其包括(例如)鍵盤/滑鼠822、通訊裝置827、及資料儲存單元828,諸如磁碟機或其他大量儲存裝置(其可包括指令/碼及資料830),於一實施例中。此外,音頻I/O 824可被耦合至第二匯流排820。注意:其他架構是可能的。例如,取代圖8之點對點架構,系統可實施多點分支匯流排其他此類架構。
現在參考圖9,其顯示依據本發明之實施例的第二更特定範例系統900之方塊圖。圖8與9中之類似元件具有類似的參考數字,且圖8之某些形態已從圖9省略以免混淆圖9之其他形態。
圖9闡明其處理器870、880可包括集成記憶體及I/O控制邏輯(「CL」)872和882,個別地。因此,CL 872、882包括集成記憶體控制器單元並包括I/O控制邏輯。圖9闡明其不僅記憶體832、834被耦合至CL 872、882,同時其I/O裝置914亦被耦合至控制邏輯872、882。舊有I/O裝置915被耦合至晶片組890。
現在參考圖10,其顯示依據本發明之一實施例的SoC
1000之方塊圖。圖6中之類似元件具有類似的參考數字。同時,虛線方塊為更多先進SoC上之選擇性特徵。於圖10中,互連單元1002被耦合至:應用程式處理器1010,其包括一組一或更多核心202A-N及共享快取單元606;系統代理單元610;匯流排控制器單元616;集成記憶體控制器單元614;一組一或更多共處理器1020,其可包括集成圖形邏輯、影像處理器、音頻處理器、及視頻處理器;靜態隨機存取記憶體(SRAM)單元1030;直接記憶體存取(DMA)單元1032;及顯示單元1040,用以耦合至一或更多外部顯示。於一實施例中,共處理器1020包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器,等等。
文中所揭露之機制的實施例可被實施以硬體、軟體、韌體、或此等實施方式之組合。本發明之實施例可被實施為電腦程式或程式碼,其被執行於可編程系統上,該可編程系統包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼(諸如圖8中所示之碼830)可被應用於輸入指令以履行文中所述之功能並產生輸出資訊。輸出資訊可被應用於一或更多輸出裝置,以已知的方式。為了本申請案之目的,處理系統包括任何系統,其具有處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特定應用
積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或目標導向的編程語言來與處理系統通訊。程式碼亦可被實施以組合或機器語言,假如想要的話。事實上,文中所述之機制在範圍上不限於任何特定編程語言。於任何情況下,該語言可為編譯或解讀語言。
至少一實施例之一或更多形態可由其儲存在機器可讀取媒體上之代表性指令所實施,該機器可讀取媒體代表處理器內之各個邏輯,當由機器讀取時造成該機器製造邏輯以履行文中所述之技術。此等表示(已知為「IP核心」)可被儲存在有形的、機器可讀取媒體上,且被供應至各個消費者或製造設施以載入其實際上製造該邏輯或處理器之製造機器。
此類機器可讀取儲存媒體可包括(無限制)由機器或裝置所製造或形成之物件的非暫態、有形配置,包括:儲存媒體,諸如硬碟、包括軟碟、光碟、微型碟唯讀記憶體(CD-ROM)、微型碟可再寫入(CD-RW)、及磁光碟等任何其他類型的碟片;半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)等隨機存取記憶體(RAM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)、磁或光學卡、或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)等設計資料之非暫態、有形的機器可讀取媒體,該硬體描述語言(HDL)係定義文中所述之結構、電路、裝置、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、動態二元翻譯,包括動態編譯)、變形、仿真、或者轉換至一或更多其他指令以供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或者部分於處理器上而部分於處理器外。
圖11為一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。於所述之實施例中,指令轉換器為一種軟體指令轉換器,雖然替代地該指令轉換器亦可被實施以軟體、韌體、硬體、或其各種組合。圖11顯示一種高階語言1102之程式可使用x86編譯器1104而被編譯以產生x86二元碼1106,其可由具有至少一x86指令集核心之處理器1116來本機地執行。具有至少一x86指令集核心之處理器1116代表任何處理器,其可藉由可相容地執行或者處理以下事項來履行實質上如一種具有至少一x86指令集核心之Intel處理器的相同功能:(1)Intel x86指令集核心之指令集的實質部分或者
(2)針對運作於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體之物件碼版本,以獲得如具有至少一x86指令集核心之Intel處理器的相同結果。x86編譯器1104代表一種編譯器,其可操作以產生x86二元碼1106(例如,物件碼),其可(具有或沒有額外鏈結處理)被執行於具有至少一x86指令集核心之處理器1116上。類似地,圖11顯示高階語言1102之程式可使用替代的指令集編譯器1108而被編譯以產生替代的指令集二元碼1110,其可由沒有至少一x86指令集核心之處理器1114來本機地執行(例如,具有其執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或其執行ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器1112被用以將x86二元碼1106轉換為其可由沒有至少一x86指令集核心之處理器1114來本機地執行的碼。已轉換碼不太可能相同於替代的指令集二元碼1110,因為能夠執行此功能之指令很難製造;然而,已轉換碼將完成一般性操作並由來自替代指令集之指令所組成。因此,指令轉換器1112代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許處理器或其他不具有x86指令集處理器或核心的電子裝置來執行x86二元碼1106。
以下描述可變遮罩-向量擴充指令,其係將遮罩位元
可變地擴充至向量資料元件,反之亦然。於一特定實施例中,可變遮罩-向量擴充指令係利用目的地向量暫存器以儲存結果、來源遮罩暫存器以儲存來源遮罩值、及指標值以識別其將被擴充至目的地向量暫存器內之特定向量資料元件的來源遮罩值之部分。可變遮罩-向量擴充指令之另一實施例係利用目的地遮罩暫存器以儲存結果、來源向量暫存器以儲存其將被擴充之向量值、及指標值以識別其用以設定目的地遮罩暫存器內之各位元的特定來源向量值。
以下所述之遮罩-向量擴充指令的一實施例具有形式:VPVARMASKEXPVEC[B/W/D/Q]{k1}DST_SIMD_REG,SRC_MASK_REG,SRC_SIMD_DstIndexREG,其中B/W/D/Q係指示該指令被履行於位元組、字元、雙字元、或四字元值上,k1是將被用於寫入遮蔽之選擇性遮罩暫存器;DST_SIMD_REG包含目的地向量暫存器,SRC_MASK_REG包含來源遮罩暫存器,及SRC_SIMD_DstIndexREG包含指標。另一實施例具有形式VPVARMASKEXPVEC[B/W/D/Q]{k1}DST_MASK_REG,SRC_SIMD_REG,SRC_SIMD_DstIndexREG,其中DST_MASK_REG包含目的地遮罩暫存器,SRC_SIMD_REG包含來源向量暫存器,而SRC_SIMD_DstIndexREG包含指標。當然,本發明之主要原理不限於指令編碼或表示之任何特定形式。
來自條件式聲明之值可使用(例如)向量比較指令而被儲存入遮罩暫存器中。於此一情況下,各遮罩位元代表
條件值(位元0或1個別地指示偽及真)。於處理器架構之一實施例中,有8個架構遮罩暫存器K0-K7,其中僅有K1-K7可被定址為述詞運算元。高性能計算(HPC)碼包括大量的計算及條件於向量迴路中,增加了對於遮罩暫存器之壓力並潛在地導致溢出-填充。此外,遮罩暫存器攜載負擔,以常數或值之載入至或自通用暫存器,導致碼膨脹及性能損失。
文中所述之本發明的實施例可變地擴充遮罩值至SIMD向量暫存器(反之亦然)以藉由將遮罩值傳遞至SIMD向量暫存器中之隨機位置來增進條件式計算的速度。條件式計算可接著被邏輯地「和運算/或運算(ANDed/ORed)」與SIMD向量暫存器(於下文中通稱「向量暫存器」)中之遮罩值。從遮罩暫存器至向量暫存器以及從向量暫存器至遮罩暫存器之可變擴充因此提出一種有力且高效率的工具給終端使用者和編譯器向量化器。
如圖12中所示,本發明之實施例可被實施於其上的範例處理器1255包括一組通用暫存器(GPR)1205、一組向量暫存器1206、及一組遮罩暫存器1207。於一實施例中,多數向量資料元件被緊縮入各向量暫存器1206,其可具有512位元寬度以儲存兩個256位元值、四個128位元值、八個64位元值、十六個32位元值,等等。然而,本發明之主要原理不限於任何特定尺寸/類型的向量資料。於一實施例中,遮罩暫存器1207包括八個64位元運算元遮罩暫存器,用以履行位元遮蔽操作於向量暫存器
1206中所儲存的值上(例如,實施為如上所述的遮罩暫存器k0-k7)。然而,本發明之主要原理不限於任何特定的遮罩暫存器尺寸/類型。
單一處理器核心(「核心0」)之細節被闡明於圖12中以利簡化。然而,應理解:圖12中所示之各核心可具有如核心0之相同組的邏輯。例如,各核心可包括專屬的第一階(L1)快取1212及第二階(L2)快取1211,用以依據指定的快取管理策略來快取指令和資料。L1快取1212包括用以儲存指令之分離的指令快取1220及用以儲存資料之分離的資料快取1221。各個處理器快取內所儲存之指令及資料係以其可為固定大小(例如,長度為64、128、512位元組)之快取線的粒度來管理。此範例實施例之各核心具有指令提取單元1210,用以從主記憶體1200及/或共用的第三階(L3)快取1216提取指令;解碼單元1220,用以解碼指令(例如,將程式指令解碼為微操作或「uops」);執行單元1240,用以執行指令;及寫回單元1250,用以撤回指令並寫回結果。
指令提取單元1210包括各種眾所周知的組件,包括下一指令指針1203,用以儲存欲從記憶體1200(或快取之一)提取之下一指令的位址;指令翻譯旁看緩衝器(ITLB)1204,用以儲存最近使用之虛擬至實體指令的映圖來增進位址翻譯的速度;分支預測單元1202,用以臆測地預測指令分支位址;及分支目標緩衝器(BTB)1201,用以儲存分支位址和目標位址。一旦提取了,指令
便接著被串流至指令管線之剩餘階段,包括解碼單元1230、執行單元1240、及寫回單元1250。這些單元之各者的結構及功能被那些熟悉此技藝人士所熟知,且將不會被詳細地描述於此以避免混淆本發明之不同實施例的相關形態。
於一實施例中,處理器1255之各核心包括可變遮罩-向量擴充邏輯,用以履行文中所述之可變遮罩-向量擴充操作。特別地,於一實施例中,解碼單元1230包括可變遮罩-向量擴充解碼邏輯1231,用以解碼文中所述之可變遮罩-向量擴充指令(例如,成為微操作之序列,於一實施例中);而執行單元1240包括可變遮罩-向量擴充執行邏輯1241,用以執行可變遮罩-向量擴充指令。
圖13闡明一範例實施例,其包括:來源遮罩暫存器1301,用以儲存來源遮罩位元值b0-b7;及目的地向量暫存器1302,用以將可變遮罩-向量擴充操作之結果儲存於複數64位元向量資料元件中(位於63:0、127:64、191:128,等等)。雖然為了簡化僅顯示8位元於來源遮罩暫存器1301中,但應理解:文中所述之本發明的實施例可使用任何數目的位元於來源遮罩暫存器來實施。例如,於一實施例中,各遮罩暫存器為64位元(例如,諸如上述的k0-k7暫存器)。此外,雖然目的地向量暫存器1302為具有圖13中之64位元向量資料元件的512位元暫存器,本發明之主要原理不限於任何特定的向量暫存器尺寸或資料元件尺寸。
於一實施例中,可變遮罩-向量擴充邏輯1300使用指標暫存器1304(其為另一向量暫存器,於一實施例中)內所儲存的指標以識別來自來源遮罩暫存器1301之各位元。特別地,目的地向量暫存器1302內之各向量資料元件可關聯與其識別來自來源遮罩1301之位元的指標暫存器中之不同的指標值。於一實施例中,可變遮罩-向量擴充邏輯1300將來自來源遮罩之指標位元複製至相關的向量資料元件,以該指標位元之值填入整個向量資料元件。因此,例如,假如指標指示其具有1之值的位元0將被複製至向量資料元件#5,則向量資料元件#5將被設為全部1之值(例如,針對64位元向量元件之六進位表示中的0xFFFFFFFFFFFFFFFF)。
此外,可變遮罩-向量擴充邏輯1300之一實施例可利用寫入遮蔽,其係使用從分離的遮罩暫存器1303所讀取的遮罩值。例如,針對00001111(從最高有效至最低有效位元配置)之遮罩值,目的地向量暫存器之僅四個最高有效資料元件可被寫入以回應於可變遮罩-向量擴充指令(例如,511:448、447:384,等等)。另四個資料元件(與1之遮罩值相關)未被寫入而因此維持其現有的值。
於一實施例中,可變遮罩-向量擴充邏輯1300包含一組由指標暫存器1304及遮罩暫存器1303所控制的多工器,用以從來源遮罩暫存器1301之位元位置的各者選擇位元並將該些位元擴充至目的地向量暫存器1302內之向量資料元件的各者。
一特定範例顯示於圖14中,其係使用11010000之遮罩值及5、4、7、6、1、0、2、3之一組指標值(兩者均從最高有效至最低有效配置)。如前所述,各指標值係根據其位置而與不同的目的地向量資料元件關聯。因此,指標值3係與向量資料元件63:0關聯;指標值2係與目的地向量資料元件127:64關聯;指標值0係與目的地向量資料元件191:128關聯,等等。各指標值之值識別一來自來源遮罩暫存器1301之位元。因此,指標3識別來自來源遮罩暫存器1301之位元3的位元值。因此,目的地向量資料元件63:0被填入以全部0。指標2識別來自來源遮罩暫存器1301之位元2的位元值,而如此一來,目的地向量資料元件127:64被填入以全部0。剩餘的向量資料元件係以此方式被填入,根據經由相關指標值而來自來源遮罩暫存器之值,導致圖14中所示之型態。寫入遮蔽未被利用於圖14所示之實施例中。
更明確地,使用可變遮罩-向量擴充指令之下列形式:VPVARMASKEXPVEC[B/W/D/Q],DST_SIMD_REG,SRC_MASK_REG,SRC_SIMD_DstIndexREG,其中:→SRC_MASK_REG具有1101000之值(從位元7至位元0配置);→SRC_SIMD_DstIndexREG為ZMM2=5,4,7,6,1,0,3,2;及→DST_SIMD_REG為ZMM1(意即,VPMASKEXPANDVECQ ZMM1,K1,ZMM2)下列結果被產生於ZMM1中(與圖
14一致):ZMM1[0:63]=0x0
ZMM1[64:127]=0x0
ZMM1[128:191]=0x0
ZMM1[192:255]=0x0
ZMM1[256:319]=0xFFFFFFFFFFFFFFFF
ZMM1[320:383]=0xFFFFFFFFFFFFFFFF
ZMM1[384:447]=0xFFFFFFFFFFFFFFFF
ZMM1[448:511]=0x0
圖15闡明一其中寫入遮蔽被履行之範例。遮罩暫存器1303儲存值00001111。1之值表示寫入遮蔽被履行於相關的向量資料元件上。因此,目的地向量之四個最低有效向量資料元件(意即,63:0,127:64,191:128,255:192)未由可變遮罩-向量擴充邏輯1300所寫入。如此一來,其留存其先前值,其(於所示範例中)為1之值。可變遮罩-向量擴充邏輯1300更新如上所述之剩餘的向量元件。
更明確地,使用可變遮罩-向量擴充指令之下列形式:VPMASKEXPANDVECQ{k2}ZMM1,K1,ZMM2並假設:
→ZMM1以全部1開始
→K2(遮罩值)=00001111(從MSB至LSB)
→SRC_MASK_REG=k1具有值11010000(MSB至LSB)。
→SRC_SIMD_DstIndexREG ZMM2=5,4,7,6,1,0,2,3(MSB至LSB)
則:
ZMM1[0:63]=0xFFFFFFFFFFFFFFFF
ZMM1[64:127]=0xFFFFFFFFFFFFFFFF
ZMM1[128:191]=0xFFFFFFFFFFFFFFFF
ZMM1[192:255]=0xFFFFFFFFFFFFFFFF
ZMM1[256:319]=0xFFFFFFFFFFFFFFFF
ZMM1[320:383]=0xFFFFFFFFFFFFFFFF
ZMM1[384:447]=0xFFFFFFFFFFFFFFFF
ZMM1[448:511]=0x0
如前所述,可變遮罩-向量擴充指令之一實施例履行反向操作-意即,依據來源向量暫存器中之資料元件的值以設定目的地遮罩暫存器中之位元。圖16所示的實施例一特定實施例,其包括用以儲存來源向量資料元件(例如,位於63:0,127:64,191:128等之64位元向量資料元件)之來源向量暫存器1601及用以儲存可變遮罩-向量擴充邏輯操作之結果於複數遮罩位元值b0-b7中的目的地遮罩暫存器1602。再一次,雖然為了簡化僅顯示8位元於目的地遮罩暫存器1601中,但應理解:文中所述之本發明的實施例可使用任何數目的位元於目的地遮罩暫存器來實施。例如,於一實施例中,各遮罩暫存器為64位元(例如,諸如上述的k0-k7暫存器)。此外,雖然來源向量暫存器1601為具有圖16中之64位元向量資料元件的512位元暫存器,本發明之主要原理不限於任何特定的向量暫存器尺寸或資料元件尺寸。
於一實施例中,可變遮罩-向量擴充邏輯1300使用指標暫存器1604(其為另一向量暫存器,於一實施例中)內所儲存的指標以識別來自來源向量暫存器1601之各向
量資料元件。特別地,目的地遮罩暫存器1602內之各位元可關聯與其識別來自來源向量暫存器1601之向量資料元件的指標暫存器中之不同的指標值。於一實施例中,可變遮罩-向量擴充邏輯1300將向量資料元件內之位元的值從來源向量複製至相關的遮罩位元(記得其整個向量資料元件被填入以1或0)。因此,例如,假如指標指示其以全部1填入的向量資料元件#5將被複製至遮罩位元#4,則遮罩位元#4將被設為1。
此外,如同於上述的某些實施例,可變遮罩-向量擴充邏輯1300可利用寫入遮蔽,其係使用從分離的遮罩暫存器1603所讀取的遮罩值。例如,針對00001111(從最高有效至最低有效)之遮罩值,目的地遮罩暫存器之僅四個最高有效位元可被寫入以回應於可變遮罩-向量擴充指令(例如,位元7:4)。另四個資料元件(與1之遮罩值相關)未被寫入而因此維持其現有的值。
圖17闡明一特定範例,其中指標暫存器1604儲存值5、4、7、6、1、0、2、3。因此,指標3係關聯與目的地遮罩暫存器之位元0並指向來源向量1601之向量資料元件255:192,其為全部0。因此,位元0被設為0之值。指標6係關聯與目的地遮罩暫存器之位元4並指向向量資料元件447:384,其為全部1。因此,位元4被設為1之值。於圖17中假設其寫入遮蔽未被履行。
更明確地,使用可變遮罩-向量擴充指令之下列形式:VPVARMASKEXPVEC[B/W/D/Q]{k1}DST_MASK_REG,
SRC_SIMD_REG,SRC_SIMD_DstIndexREG,where:SRC_SIMD_DstIndexREG ZMM2=5,4,7,6,1,0,2,3
SRC_SIMD_REG ZMM1包括下列值:ZMM1[0:63]=0x0
ZMM1[64:127]=0x0
ZMM1[128:191]=0x0
ZMM1[192:255]=0x0
ZMM1[256:319]=0xFFFFFFFFFFFFFFFF
ZMM1[320:383]=0xFFFFFFFFFFFFFFFF
ZMM1[384:447]=0xFFFFFFFFFFFFFFFF
ZMM1[448:511]=0x0
則針對VPMASKEXPANDVECQ K1,ZMM1,ZMM2:DST_MASK_REG=k1具有11010000之值(MSB至LSB)。
此外,假如寫入遮蔽被履行,意即,VPMASKEXPANDVECQ{k2}K1,ZMM1,ZMM2,其中遮罩暫存器k2=00001111(意即,僅較高階256位元元件被擴充),則k1具有11010000之值。
一種依據本發明之一實施例的方法被顯示於圖18中。該方法可被執行於上述架構的背景內,但不限定於任何特定的系統架構。
於1801,可變遮罩-向量擴充指令被提取自記憶體或讀取自快取(例如,L1、L2、或L3快取)。於1802,輸入遮罩位元被儲存於來源遮罩暫存器中,指標被儲存於指標暫存器中,且遮罩值被儲存於遮罩暫存器中(假如寫入遮蔽被使用)。於1803,指標被讀取以識別其將從來源
遮罩暫存器被複製至目的地向量暫存器之相應向量資料元件的各遮罩位元。於1804,來自來源遮罩暫存器之各位元被複製至目的地向量暫存器中之指定向量資料元件,以遮罩位元之值(例如,全部1或全部0)填入向量資料元件中之所有位元。於一實施例中,此操作被履行除非寫入遮蔽被致能且1之值係關聯與向量資料元件(於該情況下向量資料元件未被寫入並留存其先前值)。最後,於1805,含有遮罩值之向量資料元件可被用以履行一或更多條件式操作。
一種依據本發明之一實施例以從向量暫存器擴充至遮罩暫存器的方法被顯示於圖19中。該方法可被執行於上述架構的背景內,但不限定於任何特定的系統架構。
於1901,可變遮罩-向量擴充指令被提取自記憶體或讀取自快取(例如,L1、L2、或L3快取)。於1902,輸入向量資料被儲存於來源向量暫存器中,指標被儲存於指標暫存器中,且遮罩值被儲存於遮罩暫存器中(假如寫入遮蔽被使用)。於1903,指標被讀取以識別其將從來源向量暫存器被複製至目的地遮罩暫存器之相應向量位元的各向量資料元件。於1904,來自來源向量暫存器之各位元值被複製至目的地遮罩暫存器中之指定位元位置。如上所述,各向量資料元件可被填入以全部1或全部0(個別地指示1或0之遮罩值)。於一實施例中,此操作被履行除非寫入遮蔽被致能且1之值係關聯與遮罩暫存器之位元(於該情況下位元未被寫入並留存其先前值)。最後,於
1905,遮罩值可被用以履行一或更多條件式操作。
如上所述,遮罩-向量擴充指令給予使用者及編譯者能力以將遮罩值可變地擴充至SIMD向量暫存器中之任何位置。此外,該指令可被遮蔽,其容許擴充至SIMD向量暫存器中之僅某些元件。從SIMD向量暫存器至目的地遮罩暫存器中之任何位置的反向可變擴充再次為一種非常有力的指令而不涉及複雜組的排列及混洗。
於前述說明書中,本發明之實施例已參考其特定範例實施例而被描述。然而,將清楚明白的是:可對其進行各種修改而不背離如後附申請專利範圍中所提出之本發明的較寬廣範圍及精神。說明書及圖式因此將被視為說明性意義而非限制性意義。
本發明之實施例可包括各個步驟,其已被描述於上。該些步驟可被實施於機器可執行指令,其可被用以致使通用或特殊用途處理器履行該些步驟。替代地,這些步驟可由含有硬線邏輯以履行該些步驟之特定硬體組件所履行,或者可由已編程的電腦組件及訂製硬體組件之任何組合所履行。
如文中所述,指令可指稱其組態成履行某些操作或具有預定功能之硬體的特定組態(諸如特定應用積體電路(ASIC))、或者其被儲存於記憶體中之軟體指令,該記憶體係實施於非暫態電腦可讀取媒體中。因此,圖形中所顯示之技術可使用一或更多電子裝置(例如,終端站、網路元件,等等)上所儲存或執行的碼及資料來實施。此
類電子裝置係使用電腦機器可讀取媒體來儲存及傳遞(內部地及/或透過網路而與其他電子裝置)碼和資料,諸如非暫態電腦機器可讀取儲存媒體(例如,磁碟、光碟、隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相位改變記憶體)及暫態電腦機器可讀取通訊媒體(例如,電、光、聲或其他形式的傳播信號-諸如載波、紅外線信號、數位信號,等等)。此外,此類電子裝置通常包括一組一或更多處理器,其係耦合至一或更多其他組件,諸如一或更多儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控式螢幕、及/或顯示)、及網路連接。該組處理器與其他組件之耦合通常係透過一或更多匯流排及橋(亦稱為匯流排控制器)。攜載網路流量之儲存裝置及信號個別地代表一或更多機器可讀取儲存媒體及機器可讀取通訊媒體。因此,既定電子裝置之儲存裝置通常係儲存編碼解碼器及/或資料以供執行於該電子裝置之該組一或更多處理器上。當然,本發明之實施例的一或更多部分可使用軟體、韌體、及/或硬體之不同組合來實施。遍及此詳細描述,為了解釋之目的,提出數個特定細節以提供本發明之透徹瞭解。然而,熟悉此項技術人士將清楚其本發明可被實行而無這些特定細節之部分。於某些例子中,眾所周知的結構及功能未被詳細地描述以免混淆本發明之請求標的。因此,本發明之範圍及精神應根據以下的申請專利範圍來判斷。
1300‧‧‧可變遮罩-向量擴充邏輯
1301‧‧‧來源遮罩暫存器
1302‧‧‧目的地向量暫存器
1303‧‧‧遮罩暫存器
1304‧‧‧指標暫存器
Claims (25)
- 一種處理器,包含:來源遮罩暫存器,用以儲存複數遮罩位元值;指標暫存器,用以儲存複數指標值,其各者與目的地向量暫存器中之向量資料元件相關聯,並識別該來源遮罩暫存器內之位元;及可變遮罩-向量擴充邏輯,用以使用來自該指標暫存器之該些指標值來將該些遮罩位元值之各者從該來源遮罩暫存器擴充入該些關聯的向量資料元件,其中一向量資料元件之所有位元將被設為等於其由與該向量資料元件與關聯之該指標值所識別的該遮罩位元值。
- 如申請專利範圍第1項之處理器,其中該可變遮罩-向量擴充邏輯包含由該些指標值所控制之一或多個多工器,用以從該來源遮罩暫存器選擇位元並將該些位元擴充至該目的地向量暫存器中之該些目的地向量資料元件的各者。
- 如申請專利範圍第1項之處理器,其中該來源遮罩暫存器包含64位元遮罩暫存器且其中該目的地向量暫存器包含512位元向量暫存器,其包含八個64位元值。
- 如申請專利範圍第3項之處理器,其中各指標值包含3位元以識別該來源遮罩暫存器中之各遮罩位元。
- 如申請專利範圍第4項之處理器,其中各指標值具有與該些向量資料元件之一關聯的位置,各指標值係用以指明其將被擴充至一具有相應位置之向量資料元件的該 來源遮罩暫存器中之位元。
- 如申請專利範圍第1項之處理器,其中該可變遮罩-向量擴充邏輯包含用以解碼可變遮罩-向量擴充指令之可變遮罩-向量擴充解碼邏輯及用以執行該可變遮罩-向量擴充指令之可變遮罩-向量擴充執行邏輯。
- 如申請專利範圍第6項之處理器,其中該可變遮罩-向量擴充解碼邏輯係用以將該可變遮罩-向量擴充指令解碼成為複數微操作。
- 如申請專利範圍第1項之處理器,其中被擴充至該些向量資料元件之該些遮罩位元係被用以增進一需要條件式測試之後續指令序列的性能。
- 如申請專利範圍第1項之處理器,進一步包含第二遮罩暫存器,用以致使該可變遮罩-向量擴充邏輯履行寫入遮蔽於其將被擴充至該些向量資料元件之該些遮罩位元上。
- 一種方法,包含:儲存複數遮罩位元值於來源遮罩暫存器中;儲存複數指標值於指標暫存器中,各指標值係與目的地向量暫存器中之向量資料元件相關聯,並識別該來源遮罩暫存器內之位元;及使用來自該指標暫存器之該些指標值以將該些遮罩位元值之各者從來源遮罩暫存器擴充入該些關聯的向量資料元件,其中一向量資料元件之所有位元將被設為等於其由與該向量資料元件相關聯之該指標值所識別的該遮罩位元 值。
- 如申請專利範圍第10項之方法,其中擴充包含使用該些指標值以控制一或多個多工器,以從該來源遮罩暫存器選擇位元並將該些位元擴充至該目的地向量暫存器中之該些目的地向量資料元件的各者。
- 如申請專利範圍第10項之方法,其中該來源遮罩暫存器包含64位元遮罩暫存器且其中該目的地向量暫存器包含512位元向量暫存器,其包含八個64位元值。
- 如申請專利範圍第12項之方法,其中各指標值包含6位元以識別該來源遮罩暫存器中之各遮罩位元。
- 如申請專利範圍第13項之方法,其中各指標值具有與該些向量資料元件之一相關聯的位置,各指標值係用以表明其將被擴充至一具有相應位置之向量資料元件的該來源遮罩暫存器中之位元。
- 如申請專利範圍第10項之方法,其中儲存及擴充係回應於可變遮罩-向量擴充指令之解碼及執行而被履行。
- 如申請專利範圍第15項之方法,其中該可變遮罩-向量擴充指令被解碼成為複數微操作。
- 如申請專利範圍第10項之方法,進一步包含:使用其被擴充至該些向量資料元件之該些遮罩位元以增進一需要條件式測試之後續指令序列的性能。
- 如申請專利範圍第10項之方法,進一步包含:使用第二遮罩暫存器以履行寫入遮蔽於其將被擴充至 該些向量資料元件之該些遮罩位元上。
- 一種處理器,包含:來源向量暫存器,用以儲存複數向量資料元件,該些向量資料元件之各者包含全部1或全部0;指標暫存器,用以儲存複數指標值,其係各與目的地遮罩暫存器中之位元位置相關聯,並識別該來源向量暫存器內之資料元件;及可變遮罩-向量擴充邏輯,用以使用來自該指標暫存器之該些指標值而將來自該來源向量暫存器之向量資料元件內所儲存的位元值擴充入該目的地遮罩暫存器中之該相關聯的位元位置。
- 如申請專利範圍第19項之處理器,其中該可變遮罩-向量擴充邏輯包含由該些指標值所控制之一或多個多工器,用以從該來源向量暫存器選擇位元並將該些位元擴充至該目的地遮罩暫存器中之該些位元位置的各者。
- 如申請專利範圍第19項之處理器,其中該來源向量暫存器包含512位元向量暫存器,其包含八個64位元向量資料元件值;且其中該目的地遮罩暫存器包含64位元遮罩暫存器。
- 如申請專利範圍第21項之處理器,其中各指標值包含3位元以識別該來源向量暫存器中之各向量資料元件。
- 如申請專利範圍第22項之處理器,其中各指標值具有與該目的地遮罩暫存器的該些位元位置之一相關聯 的位置,各指標值係用以表明其將被擴充至一具有相應位置之位元位置的該來源向量暫存器中之向量資料元件。
- 如申請專利範圍第19項之處理器,其中該可變遮罩-向量擴充邏輯包含用以解碼可變遮罩-向量擴充指令之可變遮罩-向量擴充解碼邏輯及用以執行該可變遮罩-向量擴充指令之可變遮罩-向量擴充執行邏輯。
- 如申請專利範圍第24項之處理器,其中該可變遮罩-向量擴充解碼邏輯係用以將該可變遮罩-向量擴充指令解碼成為複數微操作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/581,435 US20160179520A1 (en) | 2014-12-23 | 2014-12-23 | Method and apparatus for variably expanding between mask and vector registers |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201640335A TW201640335A (zh) | 2016-11-16 |
TWI575451B true TWI575451B (zh) | 2017-03-21 |
Family
ID=56129462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104138538A TWI575451B (zh) | 2014-12-23 | 2015-11-20 | 用於遮罩及向量暫存器之間的可變擴充的方法及裝置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160179520A1 (zh) |
EP (1) | EP3238027A4 (zh) |
JP (1) | JP6741006B2 (zh) |
KR (1) | KR20170099855A (zh) |
CN (1) | CN107003845B (zh) |
TW (1) | TWI575451B (zh) |
WO (1) | WO2016105756A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10459843B2 (en) * | 2016-12-30 | 2019-10-29 | Texas Instruments Incorporated | Streaming engine with separately selectable element and group duplication |
EP3428792B1 (en) * | 2017-07-10 | 2022-05-04 | Arm Ltd | Testing bit values inside vector elements |
US11340904B2 (en) | 2019-05-20 | 2022-05-24 | Micron Technology, Inc. | Vector index registers |
US11327862B2 (en) * | 2019-05-20 | 2022-05-10 | Micron Technology, Inc. | Multi-lane solutions for addressing vector elements using vector index registers |
US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false vector index registers |
US11507374B2 (en) | 2019-05-20 | 2022-11-22 | Micron Technology, Inc. | True/false vector index registers and methods of populating thereof |
CN112083954B (zh) * | 2019-06-13 | 2024-09-06 | 华夏芯(北京)通用处理器技术有限公司 | 一种gpu中显式独立掩码寄存器的掩码操作方法 |
WO2024020761A1 (en) * | 2022-07-26 | 2024-02-01 | Huawei Technologies Co., Ltd. | Register to predicate deposit |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0752643B1 (en) * | 1995-07-03 | 2003-01-02 | STMicroelectronics Limited | Expansion of data by replication of a data |
WO2013095598A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Apparatus and method for mask register expand operation |
US20140013077A1 (en) * | 2011-12-08 | 2014-01-09 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
US20140019714A1 (en) * | 2011-12-30 | 2014-01-16 | Elmoustapha Ould-Ahmed-Vall | Vector frequency expand instruction |
WO2014031129A1 (en) * | 2012-08-23 | 2014-02-27 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7434028B2 (en) * | 2004-12-15 | 2008-10-07 | Intel Corporation | Hardware stack having entries with a data portion and associated counter |
US7673345B2 (en) * | 2005-03-31 | 2010-03-02 | Intel Corporation | Providing extended memory protection |
US8700884B2 (en) * | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
EP2232378A1 (en) * | 2007-12-10 | 2010-09-29 | Sandbridge Technologies, Inc. | Accelerating traceback on a signal processor |
JP5222823B2 (ja) * | 2009-10-20 | 2013-06-26 | 株式会社日立製作所 | アクセスログ管理方法 |
US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
EP2584460A1 (en) * | 2011-10-20 | 2013-04-24 | ST-Ericsson SA | Vector processing system comprising a replicating subsystem and method |
US20130326192A1 (en) * | 2011-12-22 | 2013-12-05 | Elmoustapha Ould-Ahmed-Vall | Broadcast operation on mask register |
CN104169867B (zh) * | 2011-12-23 | 2018-04-13 | 英特尔公司 | 用于执行掩码寄存器至向量寄存器的转换的系统、装置和方法 |
CN108519921B (zh) * | 2011-12-23 | 2022-07-12 | 英特尔公司 | 用于从通用寄存器向向量寄存器进行广播的装置和方法 |
US9454507B2 (en) * | 2011-12-23 | 2016-09-27 | Intel Corporation | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
US20130297877A1 (en) * | 2012-05-02 | 2013-11-07 | Jack B. Dennis | Managing buffer memory |
-
2014
- 2014-12-23 US US14/581,435 patent/US20160179520A1/en not_active Abandoned
-
2015
- 2015-11-20 TW TW104138538A patent/TWI575451B/zh not_active IP Right Cessation
- 2015-11-23 EP EP15873963.1A patent/EP3238027A4/en not_active Withdrawn
- 2015-11-23 JP JP2017526619A patent/JP6741006B2/ja not_active Expired - Fee Related
- 2015-11-23 KR KR1020177013984A patent/KR20170099855A/ko active IP Right Grant
- 2015-11-23 WO PCT/US2015/062059 patent/WO2016105756A1/en active Application Filing
- 2015-11-23 CN CN201580063906.0A patent/CN107003845B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0752643B1 (en) * | 1995-07-03 | 2003-01-02 | STMicroelectronics Limited | Expansion of data by replication of a data |
US20140013077A1 (en) * | 2011-12-08 | 2014-01-09 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
WO2013095598A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Apparatus and method for mask register expand operation |
US20140019714A1 (en) * | 2011-12-30 | 2014-01-16 | Elmoustapha Ould-Ahmed-Vall | Vector frequency expand instruction |
WO2014031129A1 (en) * | 2012-08-23 | 2014-02-27 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
Also Published As
Publication number | Publication date |
---|---|
EP3238027A4 (en) | 2018-08-29 |
JP6741006B2 (ja) | 2020-08-19 |
TW201640335A (zh) | 2016-11-16 |
KR20170099855A (ko) | 2017-09-01 |
CN107003845A (zh) | 2017-08-01 |
US20160179520A1 (en) | 2016-06-23 |
EP3238027A1 (en) | 2017-11-01 |
CN107003845B (zh) | 2021-08-24 |
WO2016105756A1 (en) | 2016-06-30 |
JP2018500651A (ja) | 2018-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI756251B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
TWI556165B (zh) | 位元混洗處理器、方法、系統及指令 | |
TWI575451B (zh) | 用於遮罩及向量暫存器之間的可變擴充的方法及裝置 | |
TWI544411B (zh) | 緊縮旋轉處理器、方法、系統與指令 | |
TWI489382B (zh) | 改良的萃取指令背景之設備及方法 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
KR102508075B1 (ko) | 인덱스 및 즉치로 벡터 치환을 수행하기 위한 방법 및 장치 | |
TWI628593B (zh) | 用以履行向量位元反轉之方法及設備 | |
TW201732570A (zh) | 用於聚合集中及跨步的系統、裝置及方法 | |
TWI590154B (zh) | 在z順序曲線中計算下一點的座標的向量指令 | |
TW201732572A (zh) | 用於跨步的載入(strided load)的系統、設備及方法 | |
TW201346744A (zh) | 遮蔽排列指令的裝置及方法 | |
TWI637317B (zh) | 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置 | |
TWI567640B (zh) | 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器 | |
TW201740290A (zh) | 用於轉換編碼格式的硬體設備及方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
TWI590155B (zh) | 用以從4維座標計算4維z曲線指標的機器階層指令 | |
TWI603289B (zh) | 用以從三維座標計算三維z曲線指標的機器階層指令 | |
TWI657372B (zh) | 用於執行向量位元聚集的方法、處理器和系統 | |
TW201732571A (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 | |
TWI737650B (zh) | 用於從鏈結結構取回元件的處理器、系統和方法 | |
TW201643708A (zh) | 用於壓縮遮罩值的方法及裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |