TWI599951B - 用於融合乘法乘法指令的處理器、方法及系統 - Google Patents
用於融合乘法乘法指令的處理器、方法及系統 Download PDFInfo
- Publication number
- TWI599951B TWI599951B TW104138532A TW104138532A TWI599951B TW I599951 B TWI599951 B TW I599951B TW 104138532 A TW104138532 A TW 104138532A TW 104138532 A TW104138532 A TW 104138532A TW I599951 B TWI599951 B TW I599951B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- bit
- data element
- field
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 18
- 230000015654 memory Effects 0.000 claims description 196
- 230000004927 fusion Effects 0.000 claims description 30
- 238000007667 floating Methods 0.000 claims description 22
- 238000003860 storage Methods 0.000 claims description 21
- 238000005538 encapsulation Methods 0.000 claims description 6
- 239000000203 mixture Substances 0.000 claims description 2
- 239000013598 vector Substances 0.000 description 131
- 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 79
- 238000006073 displacement reaction Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 34
- 238000012545 processing Methods 0.000 description 29
- 238000004891 communication Methods 0.000 description 12
- 230000001052 transient effect Effects 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000013501 data transformation Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000013519 translation Methods 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000000605 extraction Methods 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 6
- 235000012431 wafers Nutrition 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 101000974356 Homo sapiens Nuclear receptor coactivator 3 Proteins 0.000 description 4
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 4
- 102100037226 Nuclear receptor coactivator 2 Human genes 0.000 description 4
- 102100022883 Nuclear receptor coactivator 3 Human genes 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000002156 mixing Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 101000602926 Homo sapiens Nuclear receptor coactivator 1 Proteins 0.000 description 2
- 101000651467 Homo sapiens Proto-oncogene tyrosine-protein kinase Src Proteins 0.000 description 2
- 102100027384 Proto-oncogene tyrosine-protein kinase Src Human genes 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 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
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/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/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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本揭露關於微處理器,更特別地關於用於微處理器中資料元件上之作業的指令。
為改進多媒體應用以及具類似特性之其他應用的效率,已於微處理器系統中實施單指令多資料(SIMD)架構,以致能一指令於若干運算元上平行操作。尤其,SIMD架構利用封裝許多資料元件於一暫存器或連續記憶體位置內。基於平行硬體執行,多作業藉由一指令而於個別資料元件上實施。此典型地導致顯著性能優點,然而,所需邏輯花費增加的成本及因而更大功耗。
100‧‧‧處理器管線
102‧‧‧提取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧配置級
110‧‧‧更名級
112‧‧‧排程級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧寫回/記憶體寫入級
122‧‧‧異常處置級
124‧‧‧確定級
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取記憶體單元
136‧‧‧指令翻譯後備緩衝器(TLB)
138‧‧‧指令提取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧更名/配置器單元
154‧‧‧引退單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料翻譯後備緩衝器(TLB)單元
174‧‧‧資料快取記憶體單元
176‧‧‧2級(L2)快取記憶體單元
190‧‧‧處理器核心
200、310、315、415‧‧‧處理器
202A-N‧‧‧核心
204A-N‧‧‧快取記憶體單元
206‧‧‧共用快取記憶體單元
208‧‧‧專用邏輯
210‧‧‧系統代理器
212‧‧‧環形互連單元
214‧‧‧整合記憶體控制器單元
216‧‧‧匯流排控制器單元
300‧‧‧系統
320‧‧‧控制器集線器
340、432、434‧‧‧記憶體
345、438、620‧‧‧協處理器
350‧‧‧輸入/輸出集線器(IOH)
360、414、514‧‧‧輸入/輸出(I/O)裝置
390‧‧‧圖形記憶體控制器集線器(GMCH)
395‧‧‧連接
400‧‧‧第一特定示例系統
416‧‧‧第一匯流排
418‧‧‧匯流排橋接器
420‧‧‧第二匯流排
422‧‧‧鍵盤及/或滑鼠
424‧‧‧音頻輸入/輸出(I/O)
427‧‧‧通訊裝置
428‧‧‧儲存單元
430‧‧‧指令/碼及資料
439‧‧‧高性能介面
450‧‧‧點對點互連
452、454、486、488‧‧‧點對點(P-P)介面
470‧‧‧第一處理器
472、482‧‧‧整合記憶體控制器(IMC)單元
476、478‧‧‧匯流排控制器單元點對點(P-P)介面
480‧‧‧第二處理器
490‧‧‧晶片組
494、498‧‧‧點對點介面電路
492、496‧‧‧介面
500‧‧‧第二特定示例系統
515‧‧‧舊有輸入/輸出(I/O)裝置
600‧‧‧系統晶片
602‧‧‧互連單元
610‧‧‧應用處理器
630‧‧‧靜態隨機存取記憶體(SRAM)單元
632‧‧‧直接記憶體存取(DMA)單元
640‧‧‧顯示單元
702‧‧‧高階語言
704‧‧‧x86編譯器
706‧‧‧x86二元碼
708‧‧‧替代指令集編譯器
710‧‧‧替代指令集二元碼
712‧‧‧指令轉換器
714、716‧‧‧x86指令集核心
800‧‧‧通用向量親和指令格式
805、846A‧‧‧無記憶體存取指令模板
810‧‧‧REX'欄位
812‧‧‧無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板
815‧‧‧無記憶體存取、資料變換類型運算指令模板
817‧‧‧無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板
820、846B‧‧‧記憶體存取指令模板
825‧‧‧記憶體存取、瞬態指令模板
827‧‧‧記憶體存取、寫入遮罩控制指令模板
830‧‧‧記憶體存取、非瞬態指令模板
840‧‧‧格式欄位
842‧‧‧基礎運算欄位
844‧‧‧暫存器索引欄位
846‧‧‧修飾符欄位
850‧‧‧增強運算欄位
852‧‧‧阿爾法欄位
852A‧‧‧RS欄位
852A.1‧‧‧捨入
852A.2‧‧‧資料變換
852B‧‧‧逐出暗示欄位
852B.1‧‧‧瞬態
852B.2‧‧‧非瞬態
852C‧‧‧寫入遮罩控制(Z)欄位
854‧‧‧貝他欄位
854A‧‧‧捨入控制欄位
854B‧‧‧資料變換欄位
854C‧‧‧資料操作欄位
856‧‧‧抑制所有浮點異常(SAE)欄位
857A‧‧‧RL欄位
857A.1‧‧‧捨入
857A.2‧‧‧向量長度(VSIZE)
857B‧‧‧廣播欄位
858、859A‧‧‧捨入運算控制欄位
859B‧‧‧向量長度欄位
860‧‧‧縮放欄位
862A‧‧‧位移欄位
862B‧‧‧位移因數欄位
864‧‧‧資料元件寬度欄位
868‧‧‧級別欄位
868A‧‧‧A級
868B‧‧‧B級
870‧‧‧寫入遮罩欄位
872‧‧‧立即欄位
874‧‧‧全運算碼欄位
900‧‧‧特定向量親和指令格式
902‧‧‧EVEX前置
905‧‧‧REX欄位
910‧‧‧REX'欄位
915‧‧‧運算碼映射圖欄位
920‧‧‧EVEX.vvvv
925‧‧‧前置編碼欄位
930‧‧‧實際運算碼欄位
940‧‧‧MOD R/M欄位
942‧‧‧MOD欄位
944‧‧‧暫存器指標欄位
946‧‧‧R/M欄位
954‧‧‧xxx欄位
956‧‧‧bbb欄位
1000‧‧‧暫存器架構
1010‧‧‧向量暫存器
1015‧‧‧寫入遮罩暫存器
1025‧‧‧通用暫存器
1045‧‧‧純量浮點堆疊暫存器檔案(x87堆疊)
1050‧‧‧MMX封裝整數平坦暫存器檔案
1100‧‧‧指令解碼器
1102‧‧‧晶粒上互連網路
1104‧‧‧2級(L2)快取記憶體
1106‧‧‧1級(L1)快取記憶體
1106A‧‧‧L1資料快取記憶體
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1120‧‧‧拌和單元
1122A-B‧‧‧數字轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1128‧‧‧16寬向量算術邏輯單元
1201-1501、1301‧‧‧來源2運算元
1203-1503、1303‧‧‧來源3運算元
1205-1505、1305、1405、1505‧‧‧來源1運算元
1207、1307、1407、1507‧‧‧來源1/目的地運算元
1211、1311‧‧‧立即位元
1215、1315、1415、1515‧‧‧封裝資料元件
1419‧‧‧寫入遮罩暫存器K1
1601、1603、1605、1607‧‧‧步驟
1701、1801、1901‧‧‧處理單元
1703、1803、1903‧‧‧實體暫存器檔案單元
1705、1807、1905、1907‧‧‧融合乘法乘法單元
1805‧‧‧排程器
本發明係藉由範例而非限制來描繪,在附圖中,相似代號標示類似元件。
圖1A為方塊圖,描繪依據本發明之實施例之示例循序提取、解碼、引退管線及示例暫存器更名、亂序
發送/執行管線;圖1B為方塊圖,描繪依據本發明之實施例之循序提取、解碼、引退核心及處理器中所包括之示例暫存器更名、亂序發送/執行架構核心的示例實施例;圖2為依據本發明之實施例之單一核心處理器及具整合記憶體控制器及圖形之多核心處理器的方塊圖;圖3描繪依據本發明之一實施例之系統的方塊圖;圖4描繪依據本發明之實施例之第二系統的方塊圖;圖5描繪依據本發明之實施例之第三系統的方塊圖;圖6描繪依據本發明之實施例之系統晶片(SoC)的方塊圖;圖7描繪依據本發明之實施例的方塊圖,對比軟體指令轉換器之使用,將來源指令集中之二元指令轉換為目標指令集中之二元指令;圖8A及8B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其指令模板;圖9A-D為方塊圖,描繪依據本發明之實施例之示例特定向量親和指令格式;圖10為依據本發明之一實施例之暫存器架構的方塊圖;
圖11A為依據本發明之實施例之單一處理器核心,連同其至晶粒上互連網路之連接,及連同2級(L2)快取記憶體之其局部子集的方塊圖;及圖11B為依據本發明之實施例之圖9A中,部分處理器核心之展開圖。
圖12-15為流程圖,描繪依據本發明之實施例之融合乘法乘法運算。
圖16為依據本發明之實施例之融合乘法乘法運算之方法流程圖。
圖17為流程圖,描繪處理裝置中之資料介面。
圖18為流程圖,描繪處理裝置中用於實施融合乘法乘法運算之第一替代示例資料流。
圖19為流程圖,描繪處理裝置中用於實施融合乘法乘法運算之第二替代示例資料流。
當以SIMD資料工作時,存在將有益於減少總指令計數及改進功率效率之環境,尤其是針對小核心。尤其,實施用於浮點資料類型之融合乘法乘法運算的指令允許減少總指令計數及減少的工作量功率需要。
在下列描述中,提出許多特定細節。然而,理解的是可實現本發明之實施例,而無該些特定細節。在其他狀況下,未詳細顯示熟知電路、結構及技術,以免混
淆本描述之理解。然而,熟悉本技藝之人士將理解可無該等特定細節而實現本發明。基於所包括之描述,本技藝之一般技術人士將可實施適當功能而無不適當實驗。
說明書中提及「一實施例」、「實施例」、「範例實施例」等表示所描述之實施例可包括特定部件、結構、或特性,但每一實施例可不一定包括特定部件、結構、或特性。再者,該等用語不一定指相同實施例。此外,當結合實施例描述特定部件、結構、或特性時,不論是否明確描述,假定其在熟悉本技藝之人士的知識內,結合其他實施例而產生該等部件、結構、或特性。
在下列描述及申請項中,可使用「耦接」及「連接」用詞,連同其衍生字。應理解的是不希望該些用詞相互同義。「耦接」用以表示二或更多元件可或不可相互直接實體或電接觸、共同操作或相互互動。「連接」用以表示相互耦接之二或更多元件間之通訊建立。
指令集或指令集架構(ISA)為關於編程之電腦架構的一部分,可包括本機資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置、及外部輸入及輸出(I/O)。文中指令用詞通常指巨集指令,與微指令或微運算相反,其係處理器之解碼器解碼巨集指令的結果,巨集指令為提供至處理器(或指令轉換器,其翻譯(例如使用靜態二元翻譯、包括動態編譯之動態二元翻
譯)、轉譯、仿真、或將指令轉換為一或更多個其他指令供處理器處理)用於執行之指令。
ISA與微架構區別,其係實施指令集之處理器的內部設計。具不同微架構之處理器可共用共同指令集。例如,Intel® Pentium 4處理器、Intel®CoreTM處理器及來自加州桑尼維爾先進微裝置公司之處理器實施幾乎相同版本之x86指令集(具已附加較新版本之若干延伸),但具有不同內部設計。例如,可於使用熟知技術之不同微架構中以不同方式實施ISA之相同暫存器架構,包括專用實體暫存器、使用暫存器更名機構(例如使用暫存器別名表(RAT)、重排序緩衝器(ROB)、及引退暫存器檔案:使用暫存器之多映射圖及集區)之一或更多個動態配置實體暫存器等。除非指明,文中使用暫存器架構、暫存器檔案、及暫存器用語,係指軟體/程式可見及指令指定暫存器之方式。在需要特異性處,形容邏輯、架構、或軟體可見將用以表示暫存器架構中暫存器/檔案,同時不同形容詞將用於特定微架構中之指定暫存器(例如實體暫存器、重排序緩衝器、引退暫存器、暫存器集區)。
指令集包括一或更多指令格式。特定指令格式定義各式欄位(位元數、位元位置),而在其他方面指定將實施之作業(運算碼)及其上將實施作業之運算元。儘管指令模板(或次格式)之定義,若干指令格式被進一步打破。例如,可定義特定指令格式之指令模板,而具有指令格式欄位之不同子集(所包括之欄位典型地為相同順
序,但因包括較少欄位,至少若干具有不同位元位置),及/或經定義而具有不同解譯之特定欄位。因而,使用特定指令格式表達ISA之每一指令(若加以定義,則為指令格式之一特定指令模板),並包括用於指定作業及運算元之欄位。例如,示例ADD指令具有特定運算碼及指令格式,其包括運算碼欄位以指定運算碼及運算元欄位而選擇運算元(來源/目的地1及來源2);且指令流中ADD指令之出現將於運算元欄位中具有特定內容,其選擇特定運算元。
科學、金融、自動向量化通用RMS(識別、挖掘、及合成),及視覺及多媒體應用(例如2D/3D圖形、圖像處理、視訊壓縮/解壓縮、語音識別演算法及音頻操作),通常需要在大量資料項目上實施之相同作業(稱為「資料平行性」)。單指令多資料(SIMD)係指致使處理器於多資料項目上實施作業之指令類型。SIMD技術尤其適於可將暫存器中位元邏輯劃分為各代表個別值之若干固定大小資料元件的處理器。例如,256位元暫存器中之位元可指定做為以4個個別64位元封裝資料元件(四字(Q)大小資料元件)、8個個別32位元封裝資料元件(雙字(D)大小資料元件)、16個個別16位元封裝資料元件(字(W)大小資料元件)、或32個個別8位元資料元件(位元組(B)大小資料元件)操作之來源運算元。此資料類型稱為封裝資料類型或向量資料類型,此資料類型之運算元稱為封裝資料運算元或向量運算元。
換言之,封裝資料項目或向量係指一系列封裝資料元件,及封裝資料運算元或向量運算元為SIMD指令之來源或目的地運算元(亦已知為封裝資料指令或向量指令)。
例如,一SIMD指令類型指定以垂直方式在二來源向量運算元上實施之單一向量運算,以產生相同大小之目的地向量運算元(亦稱為結果向量運算元),具相同數量資料元件,及為相同資料元件順序。來源向量運算元中之資料元件稱為來源資料元件,同時目的地向量運算元中之資料元件稱為目的地或結果資料元件。該些來源向量運算元為相同大小及包含相同寬度之資料元件,因而其包含相同數量資料元件。二來源向量運算元中相同位元位置之來源資料元件形成資料元件對(亦稱為相應資料元件;即,每一來源運算元之資料元件位置0中相應資料元件、每一來源運算元之資料元件位置1中相應資料元件等)。SIMD指令指定之作業係個別於該些來源資料元件對之每一者上實施,以產生匹配數量結果資料元件,因而每一來源資料元件對具有相應結果資料元件。由於作業為垂直,且由於結果向量運算元為相同大小,具有相同數量資料元件,及結果資料元件係以與來源向量運算元相同資料元件順序儲存,結果資料元件係在結果向量運算元之相同位元位置,如來源向量運算元中相應來源資料元件對。除了此SIMD指令之示例類型外,存在SIMD指令之各種其他類型(例如僅具有一個或具有二個以上來源向量運算元,以水平方式操作,產生不同大小之結果向量運算元,
具有不同大小資料元件,及/或具有不同資料元件順序)。應理解的是,目的地向量運算元(或目的地運算元)用詞定義為實施由指令指定作業的直接結果,包括將目的地運算元儲存於一位置(暫存器或指令指定之記憶體位址),使得其可由其他指令存取為來源運算元(另一指令之相同位置規範)。
諸如Intel®CoreTM處理器採用之SIMD技術,已致能應用性能之顯著改進,Intel®CoreTM處理器具有指令集,包括x86、MMXTM、資料流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令。其餘SIMD延伸組係指先進向量延伸(AVX)(AVX1及AVX2),使用已發行及/或公告之向量延伸(VEX)編碼方案(例如詳2011年10月之Intel® 64及IA-32架構軟體開發者手冊;及詳2011年6月之Intel®先進向量延伸編程參考)。
圖1A為方塊圖,描繪依據本發明之實施例之示例循序提取、解碼、引退管線,及示例暫存器更名、亂序發送/執行管線。圖1B為方塊圖,描繪依據本發明之實施例之循序提取、解碼、引退核心的示例實施例,及處理器中所包括之示例暫存器更名、亂序發送/執行架構核心。圖1A-B中實線框描繪管線及核心之循序部,同時虛線框之可選附加描繪暫存器更名、亂序發送/執行管線及核心。
在圖1A中,處理器管線100包括提取級102、長度解碼級104、解碼級106、配置級108、更名級
110、排程(亦已知為調度或發送)級112、暫存器讀取/記憶體讀取級114、執行級116、寫回/記憶體寫入級118、異常處置級122、及確定級124。圖1B顯示包括耦接至執行引擎單元150之前端單元130的處理器核心190,二者均耦接至記憶體單元170。核心190可為精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。關於另一選項,核心190可為特殊用途核心,諸如網路或通訊核心、壓縮引擎、協處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心等。
前端單元130包括分支預測單元132,其耦接至指令快取記憶體單元134,其耦接至指令翻譯後備緩衝器(TLB)136,其耦接至指令提取單元138,其耦接至解碼單元140。解碼單元140(或解碼器)可解碼指令,及產生一或更多個微運算、微碼登錄點、微指令、其他指令、或其他控制信號做為輸出,其係解碼自、或反映、或源自原始指令。解碼單元140可使用各式不同機構實施。適當機構之範例包括但不侷限於查找表、硬體實施、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心190包括微碼ROM或儲存微碼用於某些巨集指令(例如解碼單元140中或前端單元130內)的其他媒體。解碼單元140耦接至執行引擎單元150中之更名/配置器單元152。
執行引擎單元150包括更名/配置器單元
152,其耦接至引退單元154及一組一或更多個排程器單元156。排程器單元156代表任何數量不同排程器,包括保留站、中央指令視窗等。排程器單元156耦接至實體暫存器檔案單元158。每一實體暫存器檔案單元158代表一或更多個實體暫存器檔案,不同者儲存一或更多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點狀態(例如指令指標,其係將執行下一指令的位址)等。在一實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。該些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元158與引退單元154重疊,以描繪其中可實施暫存器更名及亂序執行之各種方式(例如使用重排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器、及引退暫存器檔案;使用暫存器映射圖及暫存器集區等)。
引退單元154及實體暫存器檔案單元158耦接至執行叢集160。執行叢集160包括一組一或更多個執行單元162及一組一或更多個記憶體存取單元164。執行單元162可於各式資料類型(例如純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)實施各式作業(例如移位、加法、減法、乘法)。雖然若干實施例可包括專用於特定功能或功能組之數量執行單元,其他實施例可僅包括一執行單元或均實施所有功能的多個執行單元。排程器單元156、實體暫存器檔案單元158、及執行叢集160可能
顯示為複數,因為某些實施例創造用於某些資料/作業類型之個別管線(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,各具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集,且在個別記憶體存取管線之狀況下,實施某些實施例其中僅此管線之執行叢集具有記憶體存取單元164)。亦將理解的是,使用個別管線處,一或更多個該些管線可為亂序發送/執行,其餘則為循序。
記憶體存取單元164組耦接至記憶體單元170,其包括資料TLB單元172,其耦接至資料快取記憶體單元174,其耦接至2級(L2)快取記憶體單元176。在一示例實施例中,記憶體存取單元164可包括負載單元、儲存位址單元、及儲存資料單元,每一者耦接至記憶體單元170中之資料TLB單元172。指令快取記憶體單元134進一步耦接至記憶體單元170中之2級(L2)快取記憶體單元176。L2快取記憶體單元176耦接至一或更多個其他級快取記憶體,最終至主記憶體。
例如,示例暫存器更名、亂序發送/執行核心架構可實施管線100如下:1)指令提取138實施提取及長度解碼級102及104;2)解碼單元140實施解碼級106;3)更名/配置器單元152實施配置級108及更名級110;4)排程器單元156實施排程級112;5)實體暫存器檔案單元158及記憶體單元170實施暫存器讀取/記憶體讀取級114;執行叢集160實施執行級116;6)記憶體
單元170及實體暫存器檔案單元158實施寫回/記憶體寫入級118;7)各式單元可包含於異常處置級122中;及8)引退單元154及實體暫存器檔案單元158實施確定級124。
核心190可支援一或更多指令集(例如x86指令集(具已附加較新版本之若干延伸);加州桑尼維爾MIPS科技公司之MIPS指令集;加州桑尼維爾ARM國際科技之ARM指令集(具可選附加延伸,諸如NEON)),包括文中所描述之指令。在一實施例中,核心190包括邏輯以支援封裝資料指令集延伸(例如AVX1、AVX2、及/或以下所描述之通用向量親和指令格式(U=0及/或U=1)的若干形式),藉以允許使用封裝資料實施由許多多媒體應用使用之作業。
應理解的是,核心可支援多執行緒處理(執行二或更多平行作業或執行緒組),並可以各種方式進行,包括時間切割多執行緒處理、同步多執行緒處理(其中單一實體核心提供邏輯核心,用於實體核心同步多執行緒處理之每一執行緒)、或其組合(例如時間切割提取及解碼及其後同步多執行緒處理,諸如Intel®超執行緒處理技術)。
雖然於亂序執行之上下文中描述暫存器更名,應理解的是暫存器更名可用於循序架構中。雖然描繪之處理器實施例亦包括個別指令及資料快取記憶體單元134/174,及共用L2快取記憶體單元176,替代實施例可
具有用於指令及資料二者之單一內部快取記憶體,諸如1級(L1)內部快取記憶體,或多級內部快取記憶體。在若干實施例中,系統可包括內部快取記憶體及核心及/或處理器外部之外部快取記憶體的組合。另一方面,所有快取記憶體可為核心及/或處理器外部。
圖2為依據本發明之實施例之處理器200的方塊圖,其可具有一個以上核心,可具有整合記憶體控制器,及可具有整合圖形。圖2中實線框描繪處理器200,具有單一核心202A、系統代理器210、一組一或更多個匯流排控制器單元216,同時可選附加虛線框描繪替代處理器200,具有多核心202A-N、系統代理器單元210中之一組一或更多個整合記憶體控制器單元214、及專用邏輯208。
因而,處理器200之不同實施可包括:1)具有整合圖形及/或科學(產量)邏輯之專用邏輯208的CPU(其可包括一或更多個核心),且核心202A-N為一或更多個通用核心(例如通用循序核心、通用亂序核心、二者之組合);2)具有希望主要用於圖形及/或科學(產量)之大量專用核心之核心202A-N的協處理器;及3)具有大量通用循序核心之核心202A-N的協處理器。因而,處理器200可為通用處理器、協處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多整合核心(MIC)協處理器(包括30或更多核心)、嵌入處理器
等。處理器可於一或更多個晶片上實施。處理器200可為使用任何數量處理技術之一或更多個基板的一部分,及/或可於該些基板上實施,諸如BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或更多個級快取記憶體、一組或一或更多個共用快取記憶體單元206、及耦接至整合記憶體控制器單元214組之外部記憶體(未顯示)。共用快取記憶體單元206組可包括一或更多個中級快取記憶體,諸如2級(L2)、3級(L3)、4級(L4)、或其他級快取記憶體、最後級快取記憶體(LLC)、及/或其組合。雖然在一實施例中,環形互連單元212互連整合圖形邏輯208、共用快取記憶體單元206組、及系統代理器單元210/整合記憶體控制器單元214,替代實施例可使用任何數量熟知技術用於互連該等單元。在一實施例中,維持一或更多個快取記憶體單元206及核心202A-N間之相關性。
在若干實施例中,一或更多個核心202A-N可多執行緒處理。系統代理器210包括組件協調及作業核心202A-N。系統代理器單元210可包括例如功率控制單元(PCU)及顯示單元。PCU可為或包括調節核心202A-N及整合圖形邏輯208之功率狀態所需的邏輯及組件。顯示單元用於驅動一或更多個外部連接之顯示器。在架構指令集方面,核心202A-N可為同質或異質;即,二或更多個核心202A-N可執行相同指令集,同時其他則僅可執行指
令集之子集或不同指令集。在一實施例中,核心202A-N為異質,並包括以下所描述之「小」核心及「大」核心二者。
圖3-6為示例電腦架構之方塊圖。其他用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式其他電子裝置之本技藝中的已知其他系統設計及組態亦為適當。通常,如文中所揭露之可結合處理器及/或其他執行邏輯的各式系統或電子裝置一般均適當。
現在回至圖3,顯示依據本發明之一實施例之系統300的方塊圖。系統300可包括一或更多個處理器310、315,其耦接至控制器集線器320。在一實施例中,控制器集線器320包括圖形記憶體控制器集線器(GMCH)390及輸入/輸出集線器(IOH)350(其可在個別晶片上);GMCH 390包括耦接至記憶體340及協處理器345之記憶體及圖形控制器;IOH 350將輸入/輸出(I/O)裝置360耦接至GMCH 390。另一方面,記憶體及圖形控制器之一者或二者整合於處理器內(如文中所描述),記憶體340及協處理器345以IOH 350直接耦接至處理器310及單一晶片中之控制器集線器320。
圖3中以虛線標示其餘處理器315之可選擇
性。每一處理器310、315可包括文中所描述之一或更多個處理核心,並可為處理器200之若干版本。記憶體340可為例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或二者組合。對至少一實施例而言,控制器集線器320經由諸如前側匯流排(FSB)之多落點匯流排、諸如快速路徑互連(QPI)之點對點介面、或類似連接395,而與處理器310、315通訊。在一實施例中,協處理器345為專用處理器,諸如高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。在一實施例中,控制器集線器320可包括整合圖形加速器。在優點之量度範圍方面,實體資源310、315之間存在各種差異,包括架構、微架構、熱、電力損耗特性等。
在一實施例中,處理器310執行指令,其控制一般類型之資料處理作業。協處理器指令可嵌入指令內。處理器310識別該些協處理器指令為應由附加協處理器345執行之類型。因此,處理器310於協處理器匯流排或其他互連上將該些協處理器指令(或代表協處理器指令之控制信號)發送至協處理器345。協處理器345接受及執行所接收之協處理器指令。
現在回至圖4,顯示依據本發明之實施例之第一特定示例系統400的方塊圖。如圖4中所示,多處理器系統400為點對點互連系統,包括經由點對點互連450耦接之第一處理器470及第二處理器480。每一處理器470
及480可為處理器200之若干版本。在本發明之一實施例中,處理器470及480分別為處理器310及315,同時協處理器438為協處理器345。在另一實施例中,處理器470及480分別為處理器310及協處理器345。
所示處理器470及480分別包括整合記憶體控制器(IMC)單元472及482。處理器470亦包括其匯流排控制器單元點對點(P-P)介面476及478之一部分;類似地,第二處理器480包括P-P介面486及488。處理器470、480可經由使用P-P介面電路478、488之點對點(P-P)介面450而交換資訊。如圖4中所示,IMC 472及482耦接處理器至個別記憶體,即記憶體432及記憶體434,其可為局部附加至個別處理器之主記憶體的一部分。每一處理器470、480可經由使用點對點介面電路476、494、486、498之個別P-P介面452、454,而與晶片組490交換資訊。晶片組490可選地經由高性能介面439而與協處理器438交換資訊。在一實施例中,協處理器438為專用處理器,諸如高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。
共用快取記憶體(未顯示)可包括於任一處理器中或二處理器外部,但經由P-P互連與處理器連接,使得若處理器處於低功率模式,則任一處理器或二處理器之局部快取記憶體資訊可儲存於共用快取記憶體中。晶片組490可經由介面496而耦接至第一匯流排416。在一實
施例中,第一匯流排416可為週邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範圍未如此限制。
如圖4中所示,各式I/O裝置414可耦接至第一匯流排416,連同匯流排橋接器418,其將第一匯流排416耦接至第二匯流排420。在一實施例中,一或更多個其餘處理器415耦接至第一匯流排416,諸如協處理器、高產量MIC處理器、GPGPU、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、場可程控閘陣列、或任何其他處理器。在一實施例中,第二匯流排420可為低腳數(LPC)匯流排。在一實施例中,各式裝置可耦接至第二匯流排420,包括例如鍵盤及/或滑鼠422、通訊裝置427及儲存單元428,諸如可包括指令/碼及資料430之磁碟機或其他大量儲存裝置。此外,音頻I/O 424可耦接至第二匯流排420。請注意,其他架構亦可。例如,取代圖4之點對點架構,系統可實施多落點匯流排或其他該等架構。
現在回至圖5,顯示依據本發明之實施例之第二特定示例系統500的方塊圖。圖4及5中類似元件配賦相似代號,且圖5已省略圖4之某些方面,以避免混淆圖5之其他方面。圖5描繪處理器470、480可分別包括整合記憶體及I/O控制邏輯(「CL」)472及482。因而,CL 472、482包括整合記憶體控制器單元,及包括I/O控制邏輯。圖5描繪不僅記憶體432、434耦接至CL 472、
482,I/O裝置514亦耦接至控制邏輯472、482。舊有I/O裝置515耦接至晶片組490。
現在回至圖6,顯示依據本發明之實施例之SoC 600的方塊圖。圖2中類似元件配賦相似代號。而且,虛線框為更先進SoC上之可選部件。在圖6中,互連單元602耦接至:應用處理器610,其包括一組一或更多個核心202A-N及共用快取記憶體單元206;系統代理器單元210;匯流排控制器單元216;整合記憶體控制器單元214;一組或一或更多個協處理器620,其可包括整合圖形邏輯、圖像處理器、音頻處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元630;直接記憶體存取(DMA)單元632;及顯示單元640,用於耦接至一或更多個外部顯示器。在一實施例中,協處理器620包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入處理器等。
文中所揭露之機構的實施例可以硬體、軟體、韌體、或該等實施途徑之組合實施。本發明之實施例可實施為電腦程式或程式碼,其係於包含至少一處理器之可程控系統上執行;儲存系統(包括揮發及非揮發記憶體及/或儲存元件);至少一輸入裝置;及至少一輸出裝置。諸如圖4中所描繪之碼430的程式碼,可施加於輸入指令,而實施文中所描述之功能並產生輸出資訊。輸出資訊可以已知方式施加於一或更多個輸出裝置。為此應用,處理系統包括具有處理器之任何系統,諸如數位信號處理
器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器。程式碼可以高階程序或物件導向編程語言實施,而與處理系統通訊。若需要,程式碼亦可以組合或機器語言實施。事實上,文中所描述之機構不侷限於任何特定編程語言之範圍。在任何狀況下,語言可為編譯或解譯語言。
至少一實施例之一或更多個方面可由儲存於機器可讀取媒體上之代表指令實施,其代表處理器內之各式邏輯,當機器讀取指令時,致使機器製造邏輯而實施文中所描述之技術。該等代表,已知為「IP核心」,可儲存於實體機器可讀取媒體上,並支援各式用戶或製造廠,載入實際製造邏輯或處理器之製造機器。該等機器可讀取儲存媒體可包括但不侷限於由機器或裝置製造或形成之物件的非暫態實體配置,包括儲存媒體,諸如硬碟;任何其他類型碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可複寫光碟(CD-RW)、及磁性光碟;半導體裝置,諸如唯讀記憶體(ROM);隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM);可抹除可程控唯讀記憶體(EPROM);快閃記憶體;電可抹除可程控唯讀記憶體(EEPROM);相變記憶體(PCM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,本發明之實施例亦包括非暫態實體機器可讀取媒體,包含指令或包含設計資料,諸如硬體描述語言(HDL),其定義文中所描述之結構、電路、設備、
處理器及/或系統部件。該等實施例亦可稱為程式產品。在若干狀況下,指令轉換器可用以將指令從來源指令集轉換至目標指令集。例如,指令轉換器可翻譯(例如使用靜態二元翻譯、包括動態編譯之動態二元翻譯)、轉譯、仿真、或轉換指令為將由核心處理之一或更多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合實施。指令轉換器可在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖7為方塊圖,對比於依據本發明之實施例之使用軟體指令轉換器,將來源指令集中之二元指令轉換為目標指令集中之二元指令。在描繪之實施例中,指令轉換器為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或其各式組合實施。圖7顯示高階語言702之程式,可使用x86編譯器704編譯,而產生x86二元碼706,其可由具至少一x86指令集核心716之處理器本機執行。具有至少一x86指令集核心716之處理器代表任何處理器,其可藉由相容地執行或處理(1)Intel x86指令集核心之指令集的實質部分,或(2)目標在具有至少一x86指令集核心之Intel處理器運行之應用或其他軟體的物件碼版本,以便實質上達成與具有至少一x86指令集核心之Intel處理器的相同結果,而實質上實施與具有至少一x86指令集核心之Intel處理器的相同功能。x86編譯器704代表編譯器,可操作以產生x86二元碼706(例如物件碼),具或不具其餘鏈接處理,而在具有至少
一x86指令集核心716之處理器上執行。
類似地,圖7顯示高階語言702之程式,可使用替代指令集編譯器708編譯,而產生可由不具有至少一x86指令集核心714之處理器(例如具有執行加州桑尼維爾MIPS科技公司之MIPS指令集及/或執行加州桑尼維爾ARM國際科技之ARM指令集之核心的處理器)本機執行之替代指令集二元碼710。指令轉換器712用以將x86二元碼706轉換為可由不具x86指令集核心714之處理器本機執行的碼。此轉換碼幾乎不可能與替代指令集二元碼710相同,因為此指令轉換器難以製造;然而,轉換碼將完成一般作業,並由來自替代指令集之指令組成。因而,指令轉換器712代表軟體、韌體、硬體、或其組合,經由仿真、模擬或任何其他處理,而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二元碼706。
文中所描述之指令實施例可以不同格式體現。此外,以下詳述示例系統、架構、及管線。指令之實施例可於該等系統、架構、及管線上執行,但不侷限於該些細節。向量親和指令格式為適於向量指令之指令格式(例如向量運算專用之某些欄位)。雖然描述之實施例中,經由向量親和指令格式支援向量及純量運算,替代實施例僅使用向量運算向量親和指令格式。
圖8A-8B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其指令模板。圖8A為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其A級指令模板;同時圖8B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其B級指令模板。具體地,通用向量親和指令格式800定義A級及B級指令模板,二者包括無記憶體存取指令模板805及記憶體存取指令模板820。
向量親和指令格式之上下文中,通用用詞係指未與任何特定指令集相關聯之指令格式。雖然將描述本發明之實施例,其中向量親和指令格式支援下列: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位元組)資料元件寬度)。
圖8A中A級指令模板包括:1)在無記憶體存取指令模板805內,顯示無記憶體存取、全捨入控制類型運算指令模板810,及無記憶體存取、資料變換類型運算指令模板815;及2)在記憶體存取指令模板820內,顯示記憶體存取、瞬態指令模板825,及記憶體存取、非瞬態指令模板830。圖8B中B級指令模板包括:1)在無記憶體存取指令模板805內,顯示無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板812,及無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板817;及2)在記憶體存取指令模板820內,顯示記憶體存取、寫入遮罩控制指令模板827。通用向量親和指令格式800包括下列欄位,以下以圖8A-8B中所描繪之順序列出。
格式欄位840-此欄位中特定值(指令格式識別符值),獨特地識別向量親和指令格式,因而於指令流中出現向量親和指令格式之指令。同樣地,此欄位係可選的,對於具有通用向量親和指令格式之指令集而言並非必須。
基礎運算欄位842-其內容區別不同基礎運算。
暫存器索引欄位844-其內容直接或經由位址產生指定暫存器或記憶體中來源及目的地運算元之位置。
其包括充足位元數而從PxQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案選擇N暫存器。雖然在一實施例中,N可達三個來源及一個目的地暫存器,替代實施例可支援更多或更少來源及目的地暫存器(例如可支援二個來源,其中該些來源之一亦可做為目的地,可支援三個來源,其中該些來源之一亦可做為目的地,可支援二個來源及一個目的地)。
修飾符欄位846-其內容區別指定記憶體存取與未指定者之通用向量指令格式的指令出現;即,無記憶體存取指令模板805及記憶體存取指令模板820之間。記憶體存取作業讀取及/或寫入至記憶體階層(在若干狀況下,使用暫存器中之值指定來源及/或目的地位址),同時非記憶體存取作業未讀取及/或寫入(例如來源及目的地為暫存器)。雖然在一實施例中,此欄位亦於三不同方式之間選擇而實施記憶體位址計算,替代實施例可支援更多、更少或以不同方式實施記憶體位址計算。
增強運算欄位850-其內容區別除了基礎運算外,將實施各種不同運算之哪一者。此欄位為特定上下文。在本發明之一實施例中,此欄位劃分為級別欄位868、阿爾法欄位852、及貝他欄位854。增強運算欄位850允許共同運算群組於單指令中實施,而非2、3、或4指令。
縮放欄位860-其內容允許索引欄位之內容針對記憶體位址產生進行縮放(例如針對使用2標度*索引+
基底之位址產生)。
位移欄位862A-其內容用做記憶體位址產生之一部分(例如針對使用2標度*索引+基底+位移之位址產生)。
位移因數欄位862B(請注意,位移欄位862A之鄰接位置直接在位移因數欄位862B之上,表示使用二者之一)-其內容用做位址產生之一部分;其指定由記憶體存取之大小(N)標度的位移因數-其中N為記憶體存取中之位元組數量(例如針對使用2標度*索引+基底+標度位移之位址產生)。忽略冗餘低階位元,因此位移因數欄位之內容乘以記憶體運算元總大小(N),以便產生最終位移,用於計算有效位址。N值係於運行時間依據全運算碼欄位874(文中所描述)及資料操作欄位854C而由處理器硬體決定。在並非用於無記憶體存取指令模板805及/或不同實施例僅可實施二者之一或皆不實施這個意義上而言,位移欄位862A及位移因數欄位862B為可選的。
資料元件寬度欄位864-其內容區別將使用若干資料元件寬度之哪一者(在對所有指令之若干實施例中;在對僅若干指令之其他實施例中)。在若僅支援一資料元件寬度及/或使用運算碼之若干方面支援資料元件寬度,其不是必須的這個意義上而言,此欄位為可選的。
寫入遮罩欄位870-在每一資料元件位置的基礎上,其內容控制目的地向量運算元中資料元件位置是
否反映基礎運算及增強運算的結果。A級指令模板支援合併寫入遮罩,同時B級指令模板支援合併及歸零寫入遮罩。當合併時,向量遮罩允許目的地中任何元件組受保護,免於在執行任何運算(由基礎運算及增強運算指定)期間更新;在一其他實施例中,保存相應遮罩位元具有0之目的地之每一元件的舊值。相反地,當歸零時,向量遮罩允許目的地中任何元件組在執行任何運算(由基礎運算及增強運算指定)期間歸零;在一實施例中,當相應遮罩位元具有0值時,目的地之元件設定為0。此功能之子集為控制實施運算之向量長度的能力(即,從第一至最後之將修飾元件的範圍);然而,修飾之元件不必要是連續的。因而,寫入遮罩欄位870允許局部向量運算,包括載入、儲存、算術、邏輯等。雖然描述本發明之實施例,其中寫入遮罩欄位870之內容選擇若干寫入遮罩暫存器之一,其包含將使用之寫入遮罩(因而寫入遮罩欄位870之內容間接識別將實施之遮罩),替代實施例取代地允許寫入遮罩欄位870之內容直接指定將實施之遮罩。
立即欄位872-其內容允許立即值之規範。在其未呈現於不支援立即值之通用向量親和格式的實施中,及其未呈現於不使用立即值之指令中的這個意義上而言,此欄位為可選的。
級別欄位868-其內容於不同級別指令之間區別。參照圖8A-B,此欄位之內容於A級及B級指令之間選擇。在圖8A-B中,圓角方形用以表示欄位中呈現之特
定值(例如圖8A-B中分別用於級別欄位868之A級868A及B級868B)。
在A級無記憶體存取指令模板805之狀況下,阿爾法欄位852被解譯為RS欄位852A,其內容區別將實施哪一不同增強運算類型(例如捨入852A.1及資料變換852A.2分別指定用於無記憶體存取、捨入類型運算指令模板810及無記憶體存取、資料變換類型運算指令模板815),同時貝他欄位854區別將實施指定類型之哪一運算。在無記憶體存取指令模板805中,縮放欄位860、位移欄位862A、及位移因數欄位862B未呈現。
在無記憶體存取全捨入控制類型運算指令模板810中,貝他欄位854被解譯為捨入控制欄位854A,其內容提供靜態捨入。雖然在所描述本發明之實施例中,捨入控制欄位854A包括抑制所有浮點異常(SAE)欄位856及捨入運算控制欄位858,替代實施例可支援編碼該些概念進入相同欄位或僅具有該些概念/欄位之一者或另一者(例如可僅具有捨入運算控制欄位858)。
SAE欄位856-其內容區別是否禁用異常事件報告;當SAE欄位856之內容表示啟用抑制時,特定指令未報告任何種類浮點異常旗標,及未引發任何浮點異常
處置器。
捨入運算控制欄位858-其內容區別將實施哪一捨入運算群組(例如捨進、捨去、小數部分直接捨去及四捨五入)。因而,捨入運算控制欄位858允許在每一指令基礎上之捨入模式改變。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入運算控制欄位858之內容置換暫存器值。
在無記憶體存取資料變換類型運算指令模板815中,貝他欄位854被解譯為資料變換欄位854B,其內容區別將實施若干資料變換之哪一者(例如無資料變換、拌和、廣播)。
在A級記憶體存取指令模板820之狀況下,阿爾法欄位852被解譯為逐出暗示欄位852B,其內容區別將使用哪一逐出暗示(在圖8A中,瞬態852B.1及非瞬態852B.2分別指定用於記憶體存取、瞬態指令模板825及記憶體存取、非瞬態指令模板830),同時貝他欄位854被解譯為資料操作欄位854C,其內容區別將實施若干資料操作作業之哪一者(亦已知為基元)(例如無操作;廣播;來源之上轉換;及目的地之下轉換)。記憶體存取指令模板820包括縮放欄位860,及可選地包括位移欄位862A或位移因數欄位862B。向量記憶體指令基於轉換支援而實施自記憶體之向量負載,及至記憶體之向量儲存。
就正規向量指令而言,向量記憶體指令以資料元件方式轉移資料自/至記憶體,且實際轉移之元件係由選擇做為寫入遮罩之向量遮罩的內容指定。
瞬態資料為可能足以從快取獲益之快速重新使用的資料。此為暗示,然而,不同處理器可以不同方式實施,包括完全忽略暗示。
非瞬態資料為第一級快取記憶體中不可能足以從快取獲益之快速重新使用的資料,應為逐出之特定優先性。此為暗示,然而,不同處理器可以不同方式實施,包括完全忽略暗示。
在B級指令模板之狀況下,阿爾法欄位852被解譯為寫入遮罩控制(Z)欄位852C,其內容區別由寫入遮罩欄位870控制之寫入遮罩係合併或歸零。在B級無記憶體存取指令模板805之狀況下,部分貝他欄位854被解譯為RL欄位857A,其內容區別將實施哪一不同增強運算類型(例如捨入857A.1及向量長度(VSIZE)857A.2分別指定用於無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板812及無記憶體存取、寫入遮罩控
制、向量長度類型運算指令模板817),同時貝他欄位854之其餘部分區別將實施特定類型之哪一運算。在無記憶體存取指令模板805中,縮放欄位860、位移欄位862A、及位移因數欄位862B未呈現。在無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板810中,貝他欄位854被解譯為捨入運算欄位859A,並禁用異常事件報告(特定指令未報告任何種類浮點異常旗標,且未引發任何浮點異常處置器)。
捨入運算控制欄位859A-恰如捨入運算控制欄位858,其內容區別將實施哪一捨入運算群組(例如捨進、捨去、小數部分直接捨去及四捨五入)。因而,捨入運算控制欄位859A允許在每一指令基礎上之捨入模式改變。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入運算控制欄位858之內容置換暫存器值。在無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板817中,貝他欄位854之其餘部分被解譯為向量長度欄位859B,其內容區別將於(例如128、256、或512位元組)上實施若干資料向量長度之哪一者。
在B級記憶體存取指令模板820之狀況下,部分貝他欄位854被解譯為廣播欄位857B,其內容區別是否將實施廣播類型資料操作運算,同時貝他欄位854之其餘部分被解譯為向量長度欄位859B。記憶體存取指令模板820包括縮放欄位860、可選地位移欄位862A或位
移因數欄位862B。
在B級記憶體存取指令模板820之狀況下,貝他欄位854被解譯為廣播欄位857B,其內容區別是否將實施廣播類型資料操作運算,同時貝他欄位854之其餘部分被解譯為向量長度欄位859B。記憶體存取指令模板820包括縮放欄位860、及可選地位移欄位862A或位移因數欄位862B。關於通用向量親和指令格式800,顯示全運算碼欄位874,包括格式欄位840、基礎運算欄位842、及資料元件寬度欄位864。雖然顯示一實施例,其中全運算碼欄位874包括所有該些欄位,在未支援所有欄位之實施例中,全運算碼欄位874包括少於所有該些欄位。全運算碼欄位874提供運算碼(opcode)。在通用向量親和指令格式中,增強運算欄位850、資料元件寬度欄位864、及寫入遮罩欄位870允許在每一指令的基礎上指定該些部件。寫入遮罩欄位及資料元件寬度欄位之組合創造具型式指令,其中允許依據不同資料元件寬度而施加遮罩。
於A級及B級內發現之各式指令模板有益於不同情況。在若干本發明之實施例中,處理器內不同處理器或不同核心可僅支援A級,僅支援B級,或二者。例如,希望用於通用運算之高性能通用亂序核心可僅支援B級,主要希望用於圖形及/或科學(產量)運算之核心可僅支援A級,及希望用於二者之核心可支援二者(當然,具有若干模板混合之核心,及來自二級但非所有模板之指令,和來自二級之指令,均在本發明之範圍內)。而且,
單一處理器可包括多核心,均支援相同級,或其中不同核心支援不同級。例如,在具個別圖形及通用核心之處理器中,主要希望用於圖形及/或科學運算之一圖形核心可僅支援A級,同時一或更多個通用核心可為具希望用於通用運算之亂序執行及暫存器更名的高性能通用核心,僅支援B級。
不具有個別圖形核心之另一處理器,可包括一個以上通用循序或亂序核心,其支援A級及B級二者。當然,在本發明之不同實施例中,來自一級之部件亦可於其他級中實施。以高階語言所寫程式將置入(例如及時編譯或靜態編譯)不同可執行形式,包括:1)僅具有由目標處理器支援之級供執行之指令的形式;或2)具有使用所有級之指令之不同組合所寫替代常式,並具有依據目前執行碼之處理器所支援之指令而選擇執行之常式之控制流程碼的形式。
圖9A-D為方塊圖,描繪依據本發明之實施例之示例特定向量親和指令格式。圖9顯示特定向量親和指令格式900,其在指定欄位之位置、大小、解譯、及順序,以及若干該些欄位之值的這個意義上而言為特定的。特定向量親和指令格式900可用以延伸x86指令集,因而若干欄位類似,或與現有x86指令集及其延伸(例如AVX)中使用者相同。此格式依然符合具延伸之現有x86指令集之前置編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SEB欄位、位移欄位、及立即值欄位。描繪來
自圖8之欄位與來自圖9之欄位的映射圖。
應理解的是,儘管為描繪目的,參照通用向量親和指令格式800之上下文中特定向量親和指令格式900而描述本發明之實施例,除非有所主張,本發明不侷限於特定向量親和指令格式900。例如,通用向量親和指令格式800考量各式欄位之各種可能大小,同時特定向量親和指令格式900顯示為具有特定大小之欄位。藉由特定範例,雖然資料元件寬度欄位864被描繪為特定向量親和指令格式900中之一位元欄位,本發明不侷限於此(即,通用向量親和指令格式800考量資料元件寬度欄位864之其他大小)。通用向量親和指令格式800包括以下列圖9A中所描繪之順序所列下列欄位。
EVEX前置902(位元組0-3)-以4位元組形式編碼。
格式欄位840(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位840,其包含0x62(用於區別本發明之一實施例中向量親和指令格式的獨特值)。第二至第四位元組(EVEX位元組1-3),包括提供特定能力之若干位元欄位。
REX欄位905(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及EVEX.B位元欄位(EVEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相應VEX
位元欄位相同功能,並使用1補數形式編碼,即ZMM0編碼為811B,ZMM15編碼為0000B。指令之其他欄位編碼暫存器索引之下三位元為本技藝中已知之(rrr、xxx、及bbb),使得可經由附加EVEX.R、EVEX.X、及EVEX.B而形成Rrrr、Xxxx、及Bbbb。
REX'欄位810-此為REX'欄位810之第一部分,並為EVEX.R'位元欄位(EVEX位元組1,位元[4]-R'),用以編碼延伸之32暫存器組的上16個或下16個。在本發明之一實施例中,此位元連同以下表示之其他者,係以位元倒置格式儲存,以與BOUND指令區別(在熟知x86 32位元模式中),其實際運算碼位元組為62,但在MOD R/M欄位(以下描述)中不接受MOD欄位之11值;本發明之替代實施例未以倒置格式儲存此位元及以下表示之其他位元。1之值用以編碼下16個暫存器。換言之,R'Rrrr係藉由組合EVEX.R'、EVEX.R、及來自其他欄位之其他RRR而形成。
運算碼映射圖欄位915(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含前導運算碼位元組(0F,0F 38,或0F 3)。
資料元件寬度欄位864(EVEX位元組2,位元[7]-W)-係由記號EVEX.W代表。EVEX.W用以定義資料類型(32位元資料元件或64位元資料元件)之粒度(大小)。
EVEX.vvvv 920(EVEX位元組2,位元[6:3]-
vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼第一來源暫存器運算元,以倒置(1補數)形式指定,對於具2或更多來源運算元之指令有效;2)EVEX.vvvv編碼目的地暫存器運算元,以針對某些向量移位之1補數形式指定;或3)EVEX.vvvv未編碼任何運算元,欄位保留並應包含811b。因而,EVEX.vvvv欄位920編碼以倒置(1補數)形式儲存之第一來源暫存器區分符的4個低階位元。依據指令,額外不同EVEX位元欄位被用以延伸區分符大小至32暫存器。
EVEX.U 868級別欄位(EVEX位元組2,位元[2]-U)若EVEX.U=0,便表示A級或EVEX.U0;若EVEX.U=1,便表示B級或EVEX.U1。
前置編碼欄位925(EVEX位元組2,位元[1:0]-pp)-提供基礎運算欄位之其餘位元。除了提供EVEX前置格式中舊有SSE指令之支援外,其亦具有緊密SIMD前置之效益(而非需要位元組來表達SIMD前置,EVEX前置僅需要2位元)。在一實施例中,為支援舊有SSE指令,於舊有格式及EVEX前置格式中使用SIMD前置(66H,F2H,F3H),該些舊有SIMD前置被編碼於SIMD前置編碼欄位中;且在提供至解碼器之PLA之前,運行時間被延伸進入舊有SIMD前置(所以PLA可執行該些舊有指令之舊有及EVEX格式而不需修改)。儘管新指令可使用EVEX前置編碼欄位之內容,直接做為運算碼延伸,某些實施例為求一致而以類似方式擴充,但允許該些
舊有SIMD前置指定不同意義。替代實施例可重新設計PLA來支援2位元SIMD前置編碼,因而不需要擴充。
阿爾法欄位852(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α描繪)-如先前所描述,此欄位為特定上下文。
貝他欄位854(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ描繪)-如先前所描述,此欄位為特定上下文。
REX'欄位810-此為REX'欄位之其餘部分,為EVEX.V'位元欄位(EVEX位元組3,位元[3]-V'),可用以編碼延伸之32暫存器組的上16個或下16個。此位元係以位元倒置格式儲存。1之值用以編碼下16個暫存器。換言之,V'VVVV係藉由組合EVEX.V'、EVEX.vvvv而形成。
寫入遮罩欄位870(EVEX位元組3,位元[2:0]-kkk)-如先前所描述,其內容指定寫入遮罩暫存器中暫存器之索引。在本發明之一實施例中,特定值EVEX.kkk=000具有特定行為,暗示無寫入遮罩用於特定指令(其可以各種方式實施,包括使用固線式寫入遮罩至所有者或跳過遮罩硬體之硬體)。
實際運算碼欄位930(位元組4)-其亦已知為運算碼位元組。部分運算碼於此欄位中指定。
MOD R/M欄位940(位元組5)包括MOD欄位942、暫存器指標欄位944、及R/M欄位946。如先前所描述,MOD欄位942之內容於記憶體存取及非記憶體存取作業之間區別。暫存器指標欄位944之角色可總結為二情況:編碼目的地暫存器運算元或來源暫存器運算元,或處理為運算碼延伸且未用以編碼任何指令運算元。R/M欄位946之角色可包括下列:編碼參考記憶體位址之指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元。
標度、索引、基底(SIB)位元組(位元組6)-如先前所描述,縮放欄位860之內容用於記憶體位址產生。SIB.xxx 954及SIB.bbb 956-該些欄位的內容先前已關於暫存器索引Xxxx及Bbbb提及。
位移欄位862A(位元組7-10)-當MOD欄位942包含10時,位元組7-10為位移欄位862A,其工作與舊有32位元位移(disp32)相同,處理位元組粒度。
位移因數欄位862B(位元組7)-當MOD欄位942包含01時,位元組7為位移因數欄位862B。此欄位之位置與舊有x86指令集8位元位移(disp8)相同,處理位元組粒度。由於disp8為符號延伸,可僅定址於-128及127位元組偏移之間;在64位元組快取線方面,disp8使用8位元,可設定為僅4個實際有用值-128、-64、0、及64;由於通常需較大範圍,使用disp32;然而,disp32需要4位元組。對比於disp8及disp32,位移
因數欄位862B為disp8之重新解譯;當使用位移因數欄位862B時,實際位移係由位移因數欄位之內容乘以記憶體運算元存取(N)之大小而決定。此類型位移稱為disp8*N。此減少平均指令長度(單一位元組用於位移,但具有更大範圍)。該等壓縮位移係依據有效位移為記憶體存取之粒度的倍數,因此,位址偏移之冗餘低階位元不需編碼。換言之,位移因數欄位862B取代舊有x86指令集8位元位移。因而,位移因數欄位862B以與x86指令集8位元位移之相同方式編碼(所以ModRM/SIB編碼規則無改變),唯一的例外是disp8過載至disp8*N。換言之,編碼規則或編碼長度無改變,僅硬體之位移值解譯不同(其需標度記憶體運算元之大小位移,而獲得位元組位址偏移)。立即欄位872操作如先前所描述。
圖9B為方塊圖,描繪依據本發明之一實施例之特定向量親和指令格式900的欄位,其組成全運算碼欄位874。具體地,全運算碼欄位874包括格式欄位840、基礎運算欄位842、及資料元件寬度(W)欄位864。基礎運算欄位842包括前置編碼欄位925、運算碼映射圖欄位915、及實際運算碼欄位930。
圖9C為方塊圖,描繪依據本發明之一實施例
之特定向量親和指令格式900的欄位,其組成暫存器索引欄位844。具體地,暫存器索引欄位844包括REX欄位905、REX'欄位910、MODR/M.暫存器指標欄位944、MODR/M.r/m欄位946、VVVV欄位920、xxx欄位954、及bbb欄位956。
圖9D為方塊圖,描繪依據本發明之一實施例之特定向量親和指令格式900的欄位,其組成增強運算欄位850。當級別(U)欄位868包含0時,便表示EVEX.U0(A級868A);當其包含1時,便表示EVEX.U1(B級868B)。當U=0及MOD欄位942包含11時(表示無記憶體存取作業),阿爾法欄位852(EVEX位元組3,位元[7]-EH)解譯為rs欄位852A。當rs欄位852A包含1時(捨入852A.1),貝他欄位854(EVEX位元組3,位元[6:4]-SSS)解譯為捨入控制欄位854A。捨入控制欄位854A包括一位元SAE欄位856及二位元捨入運算欄位858。當rs欄位852A包含0時(資料變換852A.2),貝他欄位854(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料變換欄位854B。當U=0及MOD欄位942包含00、01、或10時(表示記憶體存取作業),阿爾法欄位852(EVEX位元組3,位元[7]-EH)解譯為逐出暗示(EH)欄位852B,及貝他欄位854(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資
料操作欄位854C。
當U=1時,阿爾法欄位852(EVEX位元組3,位元[7]-EH)解譯為寫入遮罩控制(Z)欄位852C。當U=1及MOD欄位942包含11時(表示無記憶體存取作業),部分貝他欄位854(EVEX位元組3,位元[4]-S0)解譯為RL欄位857A;當其包含1時(捨入857A.1),貝他欄位854之其餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為捨入運算欄位859A,同時當RL欄位857A包含0時(向量長度857.A2),貝他欄位854之其餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為向量長度欄位859B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位1442包含00、01、或10時(表示記憶體存取作業),貝他欄位854(EVEX位元組3,位元[6:4]-SSS)解譯為向量長度欄位859B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位857B(EVEX位元組3,位元[4]-B)。
圖10為依據本發明之一實施例之暫存器架構1000的方塊圖。在所描繪之實施例中,存在32向量暫存器1010,其為512位元寬;該些暫存器參照為zmm0至zmm31。下16 zmm暫存器之低階256位元重疊於暫存器ymm0-16上。下16 zmm暫存器之低階128位元(ymm暫存器之低階128位元)重疊於暫存器xmm0-15上。特定向量親和指令格式900於該些重疊暫存器檔案上操作,如下表所描繪。
換言之,向量長度欄位859B於最大長度及一或更多個其他較短長度之間選擇,其中每一較短長度為前述長度的一半長度;且無向量長度欄位859B之指令模板於最大向量長度上操作。此外,在一實施例中,特定向量親和指令格式900之B級指令模板於封裝或純量單一/雙精度浮點資料及封裝或純量整數資料上運算。純量運算為在zmm/ymm/xmm暫存器中之最低階資料元件位置實施之運算;較高階資料元件位置與指令之前相同,或被歸零,取決於實施例。
寫入遮罩暫存器1015-在所描繪之實施例中,存在8個寫入遮罩暫存器(k0至k7),每一者大小64位元。在替代實施例中,寫入遮罩暫存器1015大小16
位元。如先前所描述,在本發明之一實施例中,向量遮罩暫存器k0無法用做寫入遮罩;當正常表示k0之編碼用於寫入遮罩時,便選擇0xFFFF之固線式寫入遮罩,有效地禁用指令之寫入遮罩。
通用暫存器1025-在所描繪之實施例中,存在16個64位元通用暫存器,連同現有x86定址模式用以定址記憶體運算元。該些暫存器係以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15名稱參照。
純量浮點堆疊暫存器檔案(x87堆疊)1045,其上重疊MMX封裝整數平坦暫存器檔案1050-在所描繪之實施例中,x87堆疊為8元件堆疊,用以使用x87指令集延伸在32/64/80位元浮點資料上實施純量浮點運算;同時MMX暫存器用以在64位元封裝整數資料上實施運算,並保持運算元於MMX及XMM暫存器之間實施若干運算。本發明之替代實施例可使用較寬或較窄暫存器。此外,本發明之替代實施例可使用更多、更少、或不同暫存器檔案及暫存器。
圖11A-B描繪更特定示例循序核心架構之方塊圖,其核心將為晶片中若干邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊經由高頻寬互連網路(例如環形網路)而與若干固定功能邏輯、記憶體I/O介面、及其他必需I/O邏輯通訊,取決於應用。
圖11A為依據本發明之實施例之單一處理器核心連同其至晶粒上互連網路1102之連接的方塊圖,具
有2級(L2)快取記憶體1104之其局部子集。在一實施例中,指令解碼器1100支援具封裝資料指令集延伸之x86指令集。L1快取記憶體1106允許針對快取記憶體記憶體之低延遲存取進入純量及向量單元。雖然在一實施例中(為簡化設計),純量單元1108及向量單元1110使用個別暫存器組(分別為純量暫存器1112及向量暫存器1114),並將其間轉移之資料寫入至記憶體,接著從1級(L1)快取記憶體1106讀回,本發明之替代實施例可使用不同途徑(例如使用單一暫存器組或包括允許於二暫存器檔案之間轉移資料之通訊路徑,而無寫入及讀回)。
L2快取記憶體1104之局部子集為整體L2快取記憶體之一部分,其劃分為個別局部子集,每一處理器核心一個子集。每一處理器核心具有至其L2快取記憶體1104之本身局部子集的直接存取路徑。由處理器核心讀取之資料係儲存於其L2快取記憶體子集1104中,並可與存取其本身局部L2快取記憶體子集之其他處理器核心平行地快速存取。由處理器核心寫入之資料係儲存於其本身L2快取記憶體子集1104中,並視需要從其他子集清除。環形網路確保共用資料之相關性。環形網路為雙向,允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理器於晶片內相互通訊。每一環形資料路徑為每一方向1012位元寬。
圖11B為依據本發明之實施例之圖11A中部分處理器核心之展開圖。圖11B包括L1資料快取記憶體
1106A、部分L1快取記憶體1106,更詳細地關於向量單元1110及向量暫存器1114。具體地,向量單元1110為16寬向量處理單元(VPU)(詳16寬ALU 1128),其執行一或更多個整數、單一精度浮點、及雙精度浮點指令。
VPU支援暫存器輸入與拌和單元1120拌和,與數字轉換單元1122A-B數字轉換,與複製單元1124複製記憶體輸入。寫入遮罩暫存器1126允許斷定結果向量寫入。
本發明之實施例可包括以上所描述之各式步驟。該些步驟可以機器可執行指令體現,其可用以致使通用或專用處理器實施該些步驟。另一方面,該些步驟可藉由特定硬體組件實施,包含用於實施該些步驟之固線式邏輯,或藉由程控電腦組件及客製硬體組件之任何組合。
如文中所描述,指令可指硬體之特定組態,諸如專用積體電路(ASIC)組構成而實施某些作業,或具有儲存於以非暫態電腦可讀取媒體體現之記憶體中的預定功能或軟體指令。因而,圖中所示技術可使用儲存於一或更多個電子裝置(例如終端站、網路元件等)中並於其上執行之碼及資料實施。該等電子裝置使用電腦機器可讀取媒體(內部及/或透過網路而與其他電子裝置)儲存及通訊碼及資料,諸如非暫態電腦機器可讀取儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體),及暫態電腦機器可讀取通訊媒體(例如電力、光學、聲學或其他傳播信號形式,諸如載波、紅外線信號、數位信號等)。
此外,該等電子裝置典型地包括耦接至一或更多個其他組件之一組一或更多個處理器,諸如一或更多個儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如鍵盤、觸控螢幕、及/或顯示器)、及網路連接。處理器組及其他組件之耦接典型地經由一或更多個匯流排組及橋接器(亦稱為匯流排控制器)。儲存裝置及攜帶網路訊務之信號分別代表一或更多個機器可讀取儲存媒體及機器可讀取通訊媒體。因而,特定電子裝置之儲存裝置典型地儲存碼及/或資料,在電子裝置之一或更多個處理器組上執行。當然,本發明之實施例之一或更多個部件可使用軟體、韌體、及/或硬體之不同組合實施。
如上述,當基於向量/SIMD資料運算時,存在將有益於減少總指令計數及改進功率效率的環境,特別是針對小核心。尤其,實施浮點資料類型之融合乘法乘法運算的指令允許減少總指令計數及減少工作量功率需要。
圖12-15描繪512位元向量/SLMD運算元上融合乘法乘法運算之實施例,每一者運算如8個別64位元封裝資料元件,包含單一精度浮點值。然而,應注意的是圖12-15中所描繪之特定向量及封裝資料元件大小僅為描繪目的。本發明之基本原理可使用任何向量或封裝資料元件大小實施。參照圖12-15,來源1及來源2運算元(分別為1205-1505及1201-1501)可為SIMD封裝資料
暫存器,來源3運算元1203-1503可為記憶體中之SEMD封裝資料暫存器或位置。回應於融合乘法乘法運算,捨入控制係依據向量格式設定。在文中所描述之實施例中,捨入控制可依據圖8A之A級指令模板(包括無記憶體存取、捨入類型運算810),或圖8B之B級指令模板(包括無記憶體存取、寫入遮罩控制、部分捨入控制類型運算812)設定。
如圖12中所描繪,佔據來源2運算元之最低有效64位元的最初封裝資料元件(例如具有值7之封裝資料元件1201)乘以來自來源3運算元之相應封裝資料元件(例如具有值15之封裝資料元件1203),產生第一結果資料元件。第一結果資料元件捨入並乘以來源1/目的地運算元之相應封裝資料元件(例如具有值8之封裝資料元件1205),產生第二結果資料元件。第二結果資料元件捨入並寫回進入來源1/目的地運算元1207之相同封裝資料元件位置(例如具有值840之封裝資料元件1215)。在一實施例中,立即位元組值於來源3運算元中編碼,其中,最低有效3位元1209各包含1或0,將正或負值配賦予融合乘法乘法運算之每一運算元的每一個別封裝資料元件。立即位元組之立即位元[7:3]1211編碼來源3之記憶體中之暫存器或位置。融合乘法乘法運算針對相應來源運算元之每一個別封裝資料元件重複,其中,每一來源運算元包括複數封裝資料元件(例如,對相應運算元組而言,各具有8封裝資料元件,具512位元向
量運算元長度,其中每一封裝資料元件為64位元寬)。
另一實施例包含4個封裝資料運算元。類似於圖12,圖13描繪最初封裝資料元件,佔據來源2運算元1301之最低有效64位元。最初封裝資料元件乘以來自來源3運算元1303之相應封裝資料元件,產生第一結果資料元件。第一結果資料元件捨入並乘以來源1運算元1305之相應封裝資料元件,產生第二結果資料元件。對比於圖12,第二結果資料元件在捨入後寫入第四封裝資料運算元之相應封裝資料元件,即目的地運算元1307(例如具有值840之封裝資料元件1315)。在一實施例中,立即位元組值於來源3運算元中編碼,其中,最低有效3位元1309各包含1或0,將正或負值分別配賦予融合乘法乘法運算之每一運算元的每一封裝資料元件。立即位元組之立即位元[7:3]1311編碼來源3之記憶體中之暫存器或位置。融合乘法乘法運算針對相應來源運算元之每一個別封裝資料元件重複,其中,每一來源運算元包括複數封裝資料元件(例如,對相應運算元組而言,各具有8封裝資料元件,具512位元向量運算元長度,其中每一封裝資料元件為64位元寬)。
圖14描繪替代實施例,包括寫入遮罩暫存器K1 1419之加法,具有64位元封裝資料元件寬度。寫入遮罩暫存器K1之下8位元包括1及0之混合。寫入遮罩暫存器K1之每一下8位元位置相應於一封裝資料元件位置。對來源1/目的地運算元1407中每一封裝資料元件位
置而言,其包含來源1/目的地運算元1405中封裝資料元件位置之內容(例如具有值6之封裝資料元件1421)或運算結果(例如具有值840之封裝資料元件1415),取決於寫入遮罩暫存器K1中相應位元位置分別為0或1。在另一實施例中,如圖15中所描繪,以其餘來源運算元取代來源1/目的地運算元1405,即來源1運算元1505(例如具有4封裝資料運算元之實施例)。在該些實施例,目的地運算元1507包含在遮罩暫存器K1之相應位元位置為0之封裝資料元件位置之運算之前,來源1運算元之內容(例如具有值6之封裝資料元件1521),及包含遮罩暫存器K1之相應位元位置為1之封裝資料元件位置之運算結果(例如具有值840之封裝資料元件1515)。
依據以上描述之融合乘法乘法指令的實施例,參照圖12-15及9A,運算元可編碼如下。目的地運算元1207-1507(如圖12及14中來源1/目的地運算元)為封裝資料暫存器,並於暫存器指標欄位944中編碼。來源2運算元1201-1501為封裝資料暫存器,並於VVVV欄位920中編碼。在一實施例中,來源3運算元1203-1503為封裝資料暫存器,在另一實施例中,其為64位元浮點封裝資料記憶體位置。來源3運算元可於立即欄位872中或R/M欄位946中編碼。
圖16為流程圖,描繪處理器依循之示例步驟,同時實施依據一實施例之融合乘法乘法運算。方法可於以上所描述之架構的上下文內實施,但不侷限於任何特
定架構。在步驟1601,解碼單元(例如解碼單元140)接收指令,及解碼指令以決定將實施融合乘法乘法運算。指令可指定一組三或四個來源封裝資料運算元,各具有N封裝資料元件陣列。每一封裝資料運算元內每一封裝資料元件之值為正或負,依據具立即位元組之位元位置中之相應值(例如來源3運算元內立即位元組中之最低有效3位元,各包含1或0,分別配賦正或負值予融合乘法乘法運算之每一運算元之每一封裝資料元件)。在若干實施例中,解碼之融合乘法乘法指令翻譯為微碼,用於獨立乘法單元。
在步驟1603,解碼單元140存取記憶體(例如記憶體單元170)內之暫存器(例如實體暫存器檔案單元158中之暫存器)或位置。可存取實體暫存器檔案單元158中之暫存器,或記憶體單元170中之記憶體位置,取決於指令中指定之暫存器位址。例如,融合乘法乘法運算可包括SRC1、SRC2、SRC3、及DEST暫存器位址,其中SRC1為第一來源暫存器位址,SRC2為第二來源暫存器位址,及SRC3為第三來源暫存器位址。DEST為目的地暫存器之位址,其中儲存結果資料。在若干實施中,SRC1參照之儲存位置亦用以儲存結果,並稱為SRC1/DEST。在若干實施中,SRC1、SRC2、SRC3、及DEST之任一者或全部定義處理器之可定址記憶體空間中之記憶體位置。例如SRC3可識別記憶體單元170中之記憶體位置,同時SRC2及SRC1/DEST分別識別實體暫存器檔案單元158中
之第一及第二暫存器。為簡化文中描述,將關於存取實體暫存器檔案描述實施例。然而,該些存取可替代地針對記憶體實施。
在步驟1605,啟用執行單元(例如執行引擎單元150)以實施存取之資料上融合乘法乘法運算。依據融合乘法乘法運算,來源2運算元之最初封裝資料元件乘以來自來源3運算元之相應封裝資料元件,產生第一結果資料元件。第一結果資料元件捨入,並乘以來源1/目的地運算元之相應封裝資料元件,產生第二結果資料元件。第二結果資料元件捨入,並寫回進入來源1/目的地運算元之相同封裝資料元件位置。對包含4封裝資料運算元之實施例而言,第二結果資料元件於捨入後,寫入4封裝資料運算元之相應封裝資料元件,即目的地運算元。在一實施例中,立即位元組值於來源3運算元中編碼,其中,最低有效3位元各包含1或0,配賦正或負值予融合乘法乘法運算之每一運算元的每一個別封裝資料元件。立即位元[7:3]編碼來源3之暫存器。
對包括寫入遮罩暫存器之實施例而言,來源1/目的地運算元中每一封裝資料元件位置包含來源1/目的地中封裝資料元件位置之內容或運算結果,分別依據寫入遮罩暫存器中相應位元位置為0或1。融合乘法乘法運算針對相應來源運算元之每一個別封裝資料元件重複,其中,每一來源運算元包括複數封裝資料元件。依據指令需要,來源1/目的地運算元或目的地運算元可指定實體暫存
器檔案單元158中暫存器,其中儲存融合乘法乘法運算之結果。在步驟1607,依據指令需要,融合乘法乘法運算之結果可儲回進入實體暫存器檔案單元158,或記憶體單元170中之位置。
圖17描繪實施融合乘法乘法運算之示例資料流。在一實施例中,處理單元1701之執行單元1705為融合乘法乘法單元1705,耦接至實體暫存器檔案單元1703以接收來自個別來源暫存器之來源運算元。在一實施例中,融合乘法乘法單元可操作以於儲存在由第一、第二、及第三來源運算元指定之暫存器中的封裝資料元件上,實施融合乘法乘法運算。
融合乘法乘法單元進一步包括子電路,用於來自每一來源運算元之封裝資料元件上作業。每一子電路將來自來源2運算元(1201-1501)之一封裝資料元件乘以來源3運算元(1203-1503)之相應封裝資料元件,產生第一結果資料元件。第一結果資料元件捨入,並乘以來源1/目的地運算元或來源1運算元(1205-1505)之相應封裝資料元件,分別依據指令具有三或四個來源運算元,產生第二結果資料元件。第二結果資料元件捨入,並寫回進入來源1/目的地運算元或目的地運算元(1207-1507)之相應封裝資料元件位置。在運算完成後,來源1/目的地運算元或目的地運算元內之結果,可寫回實體暫存器檔案單元1703,例如在寫回或引退級中。
圖18描繪實施融合乘法乘法運算之替代資料
流。類似於圖17,處理單元1801之執行單元1807為融合乘法乘法單元1807,可操作以於儲存在由第一、第二、及第三來源運算元指定之暫存器中的封裝資料元件上,實施融合乘法乘法運算。在一實施例中,排程器1805耦接至實體暫存器檔案單元1803,以接收來自個別來源暫存器之來源運算元,且排程器耦接至融合乘法乘法單元1807。排程器1805接收來自實體暫存器檔案單元1803中個別來源暫存器之來源運算元,並調度來源運算元至融合乘法乘法單元1807,用於執行融合乘法乘法運算。
在一實施例中,其中無二融合乘法乘法單元,亦無二子電路可用於實施單一融合乘法乘法指令,排程器1805調度指令兩次至融合乘法乘法單元,而未調度第二指令直至第一指令完成為止(即排程器1805調度融合乘法乘法指令,並等候來自來源2運算元(1201-1501)之一封裝資料元件,乘以來源3運算元(1203-1503)之相應封裝資料元件,產生第一結果資料元件;排程器接著第二次調度融合乘法乘法指令,及第一結果資料元件捨入,並乘以來源1/目的地運算元或來源1運算元(1205-1505)之相應封裝資料元件,分別依據具有三或四個來源運算元之指令,產生第二結果資料元件)。第二結果資料元件捨入,並寫回進入來源1/目的地運算元或目的地運算元(1207-1507)之相應封裝資料元件位置。在運算完成後,來源1/目的地運算元或目的地運算元之結果
可寫回至實體暫存器檔案單元1803,例如在寫回或引退級中。
圖19描繪實施融合乘法乘法運算之另一替代資料流。類似於圖18,處理單元1901之執行單元1907為融合乘法乘法單元1907,可操作以於儲存在由第一、第二、及第三來源運算元指定之暫存器中的封裝資料元件上,實施融合乘法乘法運算。在一實施例中,實體暫存器檔案單元1903耦接至其餘執行單元,其亦為融合乘法乘法單元1905(亦可操作以於儲存在由第一、第二、及第三來源運算元指定之暫存器中的封裝資料元件上,實施融合乘法乘法運算),且二融合乘法乘法單元串聯(即融合乘法乘法單元1905之輸出耦接至融合乘法乘法單元1907之輸入)。
在一實施例中,第一融合乘法乘法單元(即融合乘法乘法單元1905)藉由來源3運算元(1203-1503)之相應封裝資料元件,實施來自來源2運算元(1201-1501)之一封裝資料元件的乘法,產生第一結果資料元件。在一實施例中,在第一結果資料元件捨入後,第二融合乘法乘法單元(即融合乘法乘法單元1907)分別依據具有三或四個來源運算元之指令,藉由來源1/目的地運算元或來源1運算元(1205-1505)之相應封裝資料元件,實施第一結果資料元件之乘法,產生第二結果資料元件。第二結果資料元件捨入,並寫回進入來源1/目的地運算元或目的地運算元(1207-1507)之相應封裝資料元
件位置。在運算完成後,來源1/目的地運算元或目的地運算元內之結果可寫回至實體暫存器檔案單元1903,例如在寫回或引退級中。
貫穿此詳細描述,為說明之故,提出許多特定細節以便提供本發明之徹底了解。然而,對熟悉本技藝之人士將顯而易見的是,可無若干該些特定細節而實現本發明。在某些狀況下,未詳細描述熟知結構及功能,以避免混淆本發明之技術主題。因此,應從下列申請項判斷本發明之範圍及精神。
100‧‧‧處理器管線
102‧‧‧提取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧配置級
110‧‧‧更名級
112‧‧‧排程級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧寫回/記憶體寫入級
122‧‧‧異常處置級
124‧‧‧確定級
Claims (20)
- 一種用於支持融合乘法乘法指令的處理器,包含:解碼電路,用以解碼具有用於第一來源暫存器運算元、第二來源暫存器運算元、立即值以及目的地運算源的欄位的單一指令;第一來源暫存器,用以儲存包含第一複數封裝資料元件之第一運算元;第二來源暫存器,用以儲存包含第二複數封裝資料元件之第二運算元;第三來源暫存器,用以儲存包含第三複數封裝資料元件之第三運算元,其中該第三來源由該立即值的位元定義;以及融合乘法乘法電路,以每個結果之捨入來執行解碼的該單一指令,用以:依據該立即值內位元位置中之相應值,而將該第一運算元、該第二運算元及該第三運算元的該複數封裝資料元件解譯為正或負之一者,將該第一複數之相應資料元件乘以包含該第二複數及該第三複數之相應資料元件之積的第一結果資料元件,而產生第二結果資料元件,以及將該第二結果資料元件儲存於該目的地中以做為浮點值。
- 如申請專利範圍第1項之處理器,其中,該單一指令為單一融合乘法乘法指令。
- 如申請專利範圍第2項之處理器,其中,該解碼電路將該單一融合乘法乘法指令解碼為複數微運算。
- 如申請專利範圍第1項之處理器,其中,該第一來源暫存器及該目的地為儲存該第二結果資料元件之單一暫存器。
- 如申請專利範圍第1項之處理器,其中,該第二結果資料元件依據該處理器之寫入遮罩暫存器的值而寫入至該目的地。
- 如申請專利範圍第1項之處理器,其中,該融合乘法乘法電路讀取相應於該第一複數封裝資料元件之該立即值之第一位元位置中的位元值,而決定該第一複數封裝資料元件係正或負,讀取相應於該第二複數封裝資料元件之該立即值之第二位元位置中的位元值,而決定該第二複數封裝資料元件係正或負,及讀取相應於該第三複數封裝資料元件之該立即值之第三位元位置中的位元值,而決定該第三複數封裝資料元件係正或負。
- 如申請專利範圍第6項之處理器,其中,該融合乘法乘法電路進一步讀取該第一位元位置、該第二位元位置、及該第三位元位置中之該些位元值之外的一組一或更多個位元,而決定該些運算元之至少一者的位置。
- 一種用於支持融合乘法乘法指令的方法,包含:將包含第一複數封裝資料元件之第一運算元儲存於第一來源暫存器中;將包含第二複數封裝資料元件之第二運算元儲存於第 二來源暫存器中;將包含第三複數封裝資料元件之第三運算元儲存於第三來源暫存器中;解碼具有用於第一來源暫存器運算元、第二來源暫存器運算元、立即值以及目的地運算源的欄位的單一指令;以融合乘法乘法電路而藉由以下步驟來執行解碼該單一指令:依據該單一指令之該立即值內位元位置中之相應值,而將該第一運算元、該第二運算元及該第三運算元的該複數封裝資料元件解譯為正或負之一者;以及將該第一複數之相應資料元件乘以包含該第二複數及該第三複數之相應資料元件之積的第一結果資料元件,而產生第二結果資料元件,並將該第二結果資料元件儲存於目的地中以做為浮點值。
- 如申請專利範圍第8項之方法,其中,該單一指令被解碼為複數微運算。
- 如申請專利範圍第8項之方法,其中,該第一來源暫存器及該目的地為儲存該第二結果資料元件之單一暫存器。
- 如申請專利範圍第8項之方法,其中,依據處理器之寫入遮罩暫存器的值,而將該第二結果資料元件寫入至該目的地。
- 如申請專利範圍第8項之方法,進一步包含:藉由該融合乘法乘法電路讀取相應於該第一複數封裝 資料元件之該立即值之第一位元位置中之位元值,決定該第一複數封裝資料元件為正或負,讀取相應於該第二複數封裝資料元件之該立即值之第二位元位置中之位元值,決定該第二複數封裝資料元件為正或負,及讀取相應於該第三複數封裝資料元件之該立即值之第三位元位置中之位元值,決定該第三複數封裝資料元件為正或負,而將該第一運算元、該第二運算元及該第三運算元的該複數封裝資料元件解譯為正或負之一者。
- 如申請專利範圍第12項之方法,進一步包含:藉由該融合乘法乘法電路讀取該第一位元位置、該第二位元位置、及該第三位元位置中之該些位元值之外的一組一或更多個位元,而決定該些運算元之至少一者的位置。
- 一種用於支持融合乘法乘法指令的系統,包含:耦接至第一儲存位置之記憶體單元;以及耦接至該記憶體單元之處理器,該處理器包含:暫存器檔案單元,組構成用以儲存複數封裝資料運算元,該暫存器檔案單元包括第一來源暫存器以儲存包含第一複數封裝資料元件之第一運算元,第二來源暫存器以儲存包含第二複數封裝資料元件之第二運算元,及第三來源暫存器以儲存包含第三複數封裝資料元件之第三運算元;解碼電路,用以解碼具有用於第一來源暫存器運算元、第二來源暫存器運算元、立即值以及目的地運算源的欄位的單一指令; 融合乘法乘法電路,以每個結果之捨入來執行解碼的該單一指令,用以:依據指令的立即值內位元位置中之相應值而將該複數封裝資料元件解譯為正或負,將該第一複數之相應資料元件乘以包含該第二複數及該第三複數之相應資料元件之積的第一結果資料元件,而產生第二結果資料元件,以及將該第二結果資料元件儲存於目的地中以做為浮點值。
- 如申請專利範圍第14項之系統,其中,該單一指令為融合乘法乘法指令。
- 如申請專利範圍第15項之系統,其中,該解碼電路將該單一融合乘法乘法指令解碼為複數微運算,由該執行單元執行。
- 如申請專利範圍第14項之系統,其中,該第一來源暫存器及該目的地為儲存該第二結果資料元件之單一暫存器。
- 如申請專利範圍第14項之系統,其中,依據該處理器之寫入遮罩暫存器的值而將該第二結果資料元件寫入至該目的地。
- 如申請專利範圍第14項之系統,其中,該融合乘法乘法電路讀取相應於該第一複數封裝資料元件之該立即值之第一位元位置中之位元值以決定該第一複數封裝資料元件為正或負,讀取相應於該第二複數封裝資料元件之該 立即值之第二位元位置中之位元值以決定該第二複數封裝資料元件為正或負,及讀取相應於該第三複數封裝資料元件之該立即值之第三位元位置中之位元值以決定該第三複數封裝資料元件為正或負,而解譯該第一運算元、該第二運算元及該第三運算元的該複數封裝資料元件為正或負。
- 如申請專利範圍第19項之系統,其中,該融合乘法乘法電路進一步讀取該第一位元位置、該第二位元位置、及該第三位元位置中之該些位元之外的一組一或更多個位元值,而決定該些運算元之至少一者的位置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/583,046 US20160188327A1 (en) | 2014-12-24 | 2014-12-24 | Apparatus and method for fused multiply-multiply instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201643697A TW201643697A (zh) | 2016-12-16 |
TWI599951B true TWI599951B (zh) | 2017-09-21 |
Family
ID=56151347
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104138532A TWI599951B (zh) | 2014-12-24 | 2015-11-20 | 用於融合乘法乘法指令的處理器、方法及系統 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160188327A1 (zh) |
EP (1) | EP3238034A4 (zh) |
JP (1) | JP2017539016A (zh) |
KR (1) | KR20170097637A (zh) |
CN (1) | CN107003848B (zh) |
TW (1) | TWI599951B (zh) |
WO (1) | WO2016105805A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10275391B2 (en) * | 2017-01-23 | 2019-04-30 | International Business Machines Corporation | Combining of several execution units to compute a single wide scalar result |
US10489877B2 (en) | 2017-04-24 | 2019-11-26 | Intel Corporation | Compute optimization mechanism |
US10776699B2 (en) * | 2017-05-05 | 2020-09-15 | Intel Corporation | Optimized compute hardware for machine learning operations |
US10552154B2 (en) * | 2017-09-29 | 2020-02-04 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US10838811B1 (en) * | 2019-08-14 | 2020-11-17 | Silicon Motion, Inc. | Non-volatile memory write method using data protection with aid of pre-calculation information rotation, and associated apparatus |
KR20220038246A (ko) | 2020-09-19 | 2022-03-28 | 김경년 | 선 길이 조절 가능 멀티탭 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW561399B (en) * | 2000-06-09 | 2003-11-11 | Cirrus Logic Inc | Math coprocessor |
TW200802078A (en) * | 2006-02-15 | 2008-01-01 | Qualcomm Inc | Power-efficient sign extension for booth multiplication methods and systems |
US20110153993A1 (en) * | 2009-12-22 | 2011-06-23 | Vinodh Gopal | Add Instructions to Add Three Source Operands |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996017293A1 (en) * | 1994-12-01 | 1996-06-06 | Intel Corporation | A microprocessor having a multiply operation |
US6243803B1 (en) * | 1998-03-31 | 2001-06-05 | Intel Corporation | Method and apparatus for computing a packed absolute differences with plurality of sign bits using SIMD add circuitry |
US6557022B1 (en) * | 2000-02-26 | 2003-04-29 | Qualcomm, Incorporated | Digital signal processor with coupled multiply-accumulate units |
US8838664B2 (en) * | 2011-06-29 | 2014-09-16 | Advanced Micro Devices, Inc. | Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format |
US9619226B2 (en) * | 2011-12-23 | 2017-04-11 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction |
WO2013095631A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a butterfly horizontal and cross add or substract in response to a single instruction |
US9733935B2 (en) * | 2011-12-23 | 2017-08-15 | Intel Corporation | Super multiply add (super madd) instruction |
US9405535B2 (en) * | 2012-11-29 | 2016-08-02 | International Business Machines Corporation | Floating point execution unit for calculating packed sum of absolute differences |
US8626813B1 (en) * | 2013-08-12 | 2014-01-07 | Board Of Regents, The University Of Texas System | Dual-path fused floating-point two-term dot product unit |
-
2014
- 2014-12-24 US US14/583,046 patent/US20160188327A1/en not_active Abandoned
-
2015
- 2015-11-20 TW TW104138532A patent/TWI599951B/zh not_active IP Right Cessation
- 2015-11-24 KR KR1020177014049A patent/KR20170097637A/ko unknown
- 2015-11-24 WO PCT/US2015/062328 patent/WO2016105805A1/en active Application Filing
- 2015-11-24 CN CN201580064354.5A patent/CN107003848B/zh active Active
- 2015-11-24 EP EP15874010.0A patent/EP3238034A4/en not_active Withdrawn
- 2015-11-24 JP JP2017527771A patent/JP2017539016A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW561399B (en) * | 2000-06-09 | 2003-11-11 | Cirrus Logic Inc | Math coprocessor |
TW200802078A (en) * | 2006-02-15 | 2008-01-01 | Qualcomm Inc | Power-efficient sign extension for booth multiplication methods and systems |
US20110153993A1 (en) * | 2009-12-22 | 2011-06-23 | Vinodh Gopal | Add Instructions to Add Three Source Operands |
Also Published As
Publication number | Publication date |
---|---|
US20160188327A1 (en) | 2016-06-30 |
EP3238034A1 (en) | 2017-11-01 |
CN107003848A (zh) | 2017-08-01 |
WO2016105805A1 (en) | 2016-06-30 |
CN107003848B (zh) | 2021-05-25 |
EP3238034A4 (en) | 2018-07-11 |
TW201643697A (zh) | 2016-12-16 |
KR20170097637A (ko) | 2017-08-28 |
JP2017539016A (ja) | 2017-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI575448B (zh) | 三個來源運算元浮點加法處理器、方法、系統及指令 | |
TWI518590B (zh) | 多暫存器聚集指令 | |
TWI544411B (zh) | 緊縮旋轉處理器、方法、系統與指令 | |
TWI556165B (zh) | 位元混洗處理器、方法、系統及指令 | |
TWI489381B (zh) | 多暫存器散布指令 | |
TWI599951B (zh) | 用於融合乘法乘法指令的處理器、方法及系統 | |
TWI552072B (zh) | 執行置換運算的處理器及具有該處理器的電腦系統 | |
TWI502494B (zh) | 用以執行絕對差之雙塊總數之方法,製品及裝置 | |
TWI637276B (zh) | 執行向量位元混洗的方法與裝置 | |
CN109313553B (zh) | 用于跨步加载的系统、装置和方法 | |
KR101729424B1 (ko) | 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트 | |
TW201528131A (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
TW201741868A (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
JP2017534982A (ja) | 4d座標から4dのz曲線インデックスを計算するための機械レベル命令 | |
TW201349106A (zh) | 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法 | |
TW201732571A (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 | |
TW201732573A (zh) | 用於跨步載入(stride load)的系統、設備及方法 | |
CN107003841B (zh) | 用于融合加法-加法指令的装置和方法 | |
TWI617977B (zh) | 用於執行自旋迴路跳位的裝置及方法 | |
TW201730756A (zh) | 用於從鏈結結構取回元件的設備和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |