TW201342005A - 改良型排列指令之裝置及方法 - Google Patents
改良型排列指令之裝置及方法 Download PDFInfo
- Publication number
- TW201342005A TW201342005A TW101149313A TW101149313A TW201342005A TW 201342005 A TW201342005 A TW 201342005A TW 101149313 A TW101149313 A TW 101149313A TW 101149313 A TW101149313 A TW 101149313A TW 201342005 A TW201342005 A TW 201342005A
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- input vector
- input
- instruction
- output
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 20
- 239000013598 vector Substances 0.000 claims abstract description 724
- 230000000873 masking effect Effects 0.000 abstract description 6
- 230000015654 memory Effects 0.000 description 220
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 77
- 238000006073 displacement reaction Methods 0.000 description 43
- 238000010586 diagram Methods 0.000 description 32
- 238000007667 floating Methods 0.000 description 30
- 238000012545 processing Methods 0.000 description 23
- 238000003860 storage Methods 0.000 description 23
- 238000006243 chemical reaction Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 235000012431 wafers Nutrition 0.000 description 8
- 230000003416 augmentation Effects 0.000 description 7
- 238000013481 data capture Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 239000000872 buffer Substances 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
- 230000036961 partial effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000004907 flux Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000002156 mixing Methods 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001747 exhibiting effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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
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)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本案描述一種裝置,其具有指令執行邏輯電路。該指令執行邏輯電路具有輸入向量元件路由電路以對於三個不同指令中每一者執行以下操作:對於多個輸出向量元件位置中每一者,將來自多個輸入向量元件位置中一者之一輸入向量元件安排路由傳遞至一輸出向量元件位置中,該多個輸入向量元件位置可利用來作為該輸出向量元件之來源。該輸出向量元件及該等輸入向量元件位置中每一者係用於該三個不同指令之三個可利用的位元寬度中一者。該裝置進一步包括遮罩層電路,該遮罩層電路耦接至該輸入向量元件路由電路以遮罩由該輸入向量路由元件電路產生之一資料結構。該遮罩層電路係設計來以對應於該三個可利用的位元寬度之細微度之三個不同階來遮罩。
Description
本發明大體上係有關於計算科學,且更具體而言,係有關於改良型排列指令之裝置及方法。
圖1示出由半導體晶片上之邏輯電路實行的處理核心100之高階圖。該處理核心包括管線101。該管線由多個級段組成,每一級段係設計來執行多步驟處理程序中的一特定步驟,完全執行一程式碼指令需要該多步驟處理程序。此等級段通常至少包括:1)指令擷取及解碼;2)資料擷取;3)執行;4)回寫。執行級段對資料執行特定操作,其中該特定操作係由在先前級段中(例如上述步驟1)中)擷取及解碼的指令予以識別,該資料係由相同指令予以識別且係在另一先前級段中(例如上述步驟2)中)擷取。被操作的資料通常擷取自(通用)暫存器儲存空間102。在操作完成時產生的新資料亦通常被「回寫」至暫存器儲存空間(例如在上述步驟4)中)。
與執行級段相關聯之邏輯電路通常由多個「執行
單元」或「功能單元」103_1至103_N組成,每一「執行單元」或「功能單元」係設計來執行其自有之獨特操作子集(例如,第一功能單元執行整數數學操作,第二功能單元執行浮點指令,第三功能單元執行自/至快取記憶體/記憶體的載入/儲存操作,等)。由所有功能單元執行之所有操作的集合對應於處理核心100所支援的「指令集」。
如下兩種類型的處理器架構在電腦科學領域中已得到廣泛認可:「純量」及「向量」。純量處理器係設計來執行對單個資料集執行操作的指令,而向量處理器係設計來執行對多個資料集執行操作的指令。圖2A及圖2B呈現比較實例,該實例演示純量處理器與向量處理器之間的基本差異。
圖2A示出純量AND(與)指令之實例,其中對單個運算元集合A以及B一起進行AND運算,以得出單數(或「純量」)結果C(亦即,AB=C)。相反,圖2B示出向量AND指令之實例,其中並行地分別對兩個運算元集合A/B以及D/E一起進行AND運算,以同時產生向量結果C、F(亦即,A.AND.B=C且D.AND.E=F)。作為一術語,「向量」為具有多個「元件」之資料元件。例如,向量V=Q,R,S,T,U具有五個不同元件:Q、R、S、T以及U。示範性向量V之「大小」為五(因為其具有五個元件)。
圖1亦展示存在向量暫存器空間104,其與通用暫存器空間102不同。具體而言,通用暫存器空間102名義上用來儲存純量值。因而,當任何執行單元執行純量操
作時,該等執行單元名義上使用自通用暫存器儲存空間102調入的運算元(且將結果回寫至通用暫存器儲存空間中)。相反,當任何執行單元執行向量操作時,該等執行單元名義上使用自向量暫存器空間107調入的運算元(且將結果回寫至向量暫存器空間中)。記憶體之不同區域可同樣經分配來儲存純量值及向量值。
亦應注意,遮罩邏輯104_1至104_N及105_1至105_N存在於進入功能單元103_1至103_N之個別輸入端及來自功能單元103_1至103_N的個別輸出端處。在各種實行方案中,該等層中事實上僅一者得以實行-雖然此並非為嚴格要求。對於使用遮罩之任何指令,輸入遮罩邏輯104_1至104_N及/或輸出遮罩邏輯105_1至105_N可用來控制針對向量指令有效地操作哪一個元件。在此,遮罩向量係讀取自遮罩暫存器空間106(例如,與讀取自向量暫存器儲存空間107之輸入資料向量一起讀取)且呈現至遮罩邏輯層104、105中之至少一者。
在執行向量程式碼之過程中,各向量指令不必要求全資料字。例如,用於一些指令之輸入向量可僅為8個元件,用於其他指令之輸入向量可為16個元件,用於其他指令之輸入向量可為32個元件,等等。因此,遮罩層104/105用來識別一組具有全向量資料字的元件,該等元件適用於一特定指令以便實現跨越數個指令的不同向量大小。通常,對於各向量指令,遮罩暫存器空間106中保持的一特定遮罩型樣藉由該指令調出,自遮罩暫存器空間擷取且提
供至遮罩層104/105之任一者或兩者來「允許」用於特定向量操作之正確元件集。
圖3a至圖3e展示出先前技術VINSERT指令、VEXTRACT指令及VPERMUTE指令之邏輯運算。注意,與指令之實際名稱相比已縮寫或以其他方式簡化其名稱。
圖3a展示出先前技術VINSERT指令之邏輯運算。如圖3a中所觀察到,第一輸入運算元對應於128位元資訊301_A,且第二輸入運算元對應於256位元向量302_A。第三即時輸入運算元(未展示)指定256位元向量302_A之哪半部分(下半部分或右半部分)將由第一輸入運算元301_A之128位元資訊代替。所得結構係儲存在具有256個位元之大小的目的地/結果向量中。128位元資訊301、輸入向量302_A及結果係大小可為32個位元或64個位元之浮點值。
圖3b展示出先前技術VEXTRACT指令之邏輯運算。如圖3b中所觀察到,第一輸入運算元對應於256位元向量301_B。第二即時輸入運算元(未展示)指定256位元輸入向量301_B之哪半部分(下半部分或右半部分)將要覆寫儲存在目的地暫存器302_B中的256位元向量之最低位128個位元。將輸入向量301_B向量構造為大小為32個位元或64個位元之浮點值。指令格式可替代地指定記憶體中之128個位元作為目的地而非目的地暫存器302_B。
圖3c至圖3e展示出三個不同VPERMUTE指令(VPERMILPS、VPERMILPD、VPERM2F128)之個別邏輯運
算。
圖3c展示出VPERMILPS指令之邏輯運算。如圖3c中所觀察到,VPERMILPS指令接受輸入運算元301_C,301_C對應於256位元輸入向量,該256位元輸入向量具有八個32位元(單精度)浮點值。結果亦係256位元向量,該256位元向量具有八個32位元單精度浮點值作為其元件302_C。第二輸入向量(未展示)獨特地指定,對於結果之下半部分中之四個元件中每一者,輸入向量301_C之下半部分中之四個元件301_C_1至301_C_4中哪一者將向輸出元件提供其內容。
圖3c展示出用於僅輸出元件302_C_1及302_C_5之運算。此處,輸出元件302_C_1之內容可「充滿」輸入元件301_C_1至301_C_4中任何輸入元件之內容。選擇輸入元件301_C_1至301_C_4中哪一者來充滿輸出元件302_C_1係在(未展示)第二輸入向量中明確地表達。此處,第二輸入向量含有用於輸出向量中之八個元件中每一者之分開的2位元控制欄位。用於結果302_C之下半部分中之輸出元件之來源必須自輸入向量301_C之下半部分選取。同樣地,用於結果302_C之上半部分中之輸出元件之來源必須自輸入向量301_C之上半部分選取。
儘管在圖3c中未明確地展示出,但是輸出元件302_C_2至302_C_4中每一者之內容係藉由含於第二輸入向量中之資訊獨特地指定為輸入元件301_C_1至301_C_4中任何輸入元件。類似地,如圖3c中所觀察到,輸出元件
302_C_5之內容充滿輸入元件301_C_5至301_C_8中任何輸入元件之內容。又,選擇輸入元件301_C_5至301_C_8中哪一者來充滿輸出元件302_C_5亦係在(未展示)第二輸入向量中明確地表達。輸出元件302_C_6至302_C_8中每一者之內容係由(未展示)第二輸入向量獨特地指定為輸入元件301_C_5至301_C_8中任何輸入元件。
VPERMILPS指令之另一版本使用即時運算元而非第二輸入向量來選取輸入向量301_C之選擇模式。此處,用於目的地之下半部分之輸入元件選擇模式匹配用於目的地之上半部分之輸入元件選擇模式。
圖3d展示出VPERMILPD指令之邏輯運算。如圖3d中所觀察到,VPERMILPD指令接受輸入運算元301_D,輸入運算元301_D對應於256位元輸入向量,該256位元輸入向量具有四個64位元(雙精度)浮點值。結果亦係256位元向量302_D,256位元向量302_D具有四個64位元雙精度浮點值作為其元件。第二輸入向量(未展示)獨特地指定,對於結果之下半部分中之兩個元件中每一者,輸入向量301_D之下半部分中之兩個元件301_D_1至301_D_2中哪一者將向輸出元件提供其內容。
如圖3d中所觀察到,輸出元件302_D_1及302_D_2中每一者可獨特地「充滿」輸入元件301_D_1或301_D_2中任一輸入元件。同樣地,輸出元件302_D_3及302_D_4中每一者可獨特地「充滿」輸入元件301_D_3或301_C_4中任一輸入元件。選擇哪一輸入元件來充滿特定
輸出元件係在(未展示)第二輸入向量中明確地表達。此處,第二輸入向量含有用於輸出向量中之四個元件中每一者之分開的2位元控制欄位。
VPERMILPD指令之另一版本使用即時運算元而非第二輸入向量來選取輸入向量301_D之選擇模式。此處,用於目的地之下半部分之輸入元件選擇模式匹配用於目的地之上半部分之輸入元件選擇模式。
對於VPERMIPLS指令及VPERMIPLD指令兩者,結果係儲存在指令之指令格式中指定的向量暫存器中。第一輸入向量之來源係在指令格式中指定,且當使用第二輸入向量來決定選擇模式時該來源對應於向量暫存器。在此狀況下,第二輸入向量之來源亦係在指令格式中指定,且對應於第二向量暫存器或記憶體位置。相反,若使用即時運算元來決定選擇模式,則第一輸入向量之來源係在指令格式中指定,且可為向量暫存器或記憶體位置。
圖3e展示出VPERM2F128指令之邏輯運算。如圖3e中所觀察到,VPERM2F128指令接受兩個分開的256位元向量輸入運算元301_E、302_E。256位元結果303_E之下128位元部分303_E_1及上128位元部分303_E_2兩者可充滿輸入向量301_E、302_E兩者之下半部分301_E_1、302_E_1或上半部分301_E_2、302_E_2中任何半部分。結果係儲存在指令之指令格式中指定之向量暫存器中。輸入向量301_E、302_E兩者之來源係在指令格式中指定,且可對應於一對向量暫存器或一個向量暫存器及一
個記憶體位置。
依據本發明之一實施例,係特地提出一種裝置,其包含:指令執行邏輯電路,其具有:輸入向量元件路由電路,其對於三個不同指令中每一者執行以下操作:對於多個輸出向量元件位置中每一者,將來自多個輸入向量元件位置中一者之一輸入向量元件安排路由傳遞至一輸出向量元件位置中,該多個輸入向量元件位置可利用來作為該輸出向量元件之來源,該輸出向量元件及該等輸入向量元件位置中每一者係用於該三不同指令之三個可利用的位元寬度中一者;以及,遮罩層電路,其耦接至該輸入向量元件路由電路以遮罩由該輸入向量路由元件電路產生之一資料結構,該遮罩層電路經設計來以對應於該三個可利用的位元寬度之細微度之三個不同階來遮罩。
100‧‧‧處理核心
101‧‧‧管線
102‧‧‧(通用)暫存器儲存空間
103_1-103_N‧‧‧功能單元/執行單元
104_1-104_N、105_1-105_N‧‧‧遮罩邏輯
106‧‧‧遮罩暫存器空間
107‧‧‧向量暫存器空間
301_A‧‧‧128位元資訊/第一輸入運算元
302_A‧‧‧256位元向量
301_B‧‧‧256位元向量/256位元
輸入向量
302_B‧‧‧目的地暫存器
301_C‧‧‧輸入運算元/輸入向量
302_C‧‧‧元件/結果
301_C_1-301_C_8‧‧‧元件/輸入元件
302_C_1-301_C_8、403_L_1-403_L_4、403_M_1、403_M_2、403_N_1‧‧‧輸出元件
301_D‧‧‧輸入向量
302_D‧‧‧256位元向量
301_E、302_E‧‧‧256位元向量
輸入運算元/輸入向量
303_E‧‧‧256位元結果
303_E_1‧‧‧下128位元部分
303_E_2‧‧‧上128位元部分
301_E_1、302_E_1‧‧‧下半部分
301_E_2、302_E_2‧‧‧上半部分
401_A、401_B‧‧‧128位元結構/第一輸入運算元
402_A、402_B、402_C、402_D‧‧‧第二輸入運算元
403_A、403_B、403_C、403_D‧‧‧資料結構
404_A、404_B、404_C、404_D、402_E、402_F、402_G、402_H、402_I、401_J、402_K、402_L、402_M、402_N、402_O、402_P‧‧‧遮罩層
406_A、406_B、406_C、406_D、403_F、403_G、403_H‧‧‧目的地
401_C、401_D‧‧‧256位元結構/第一輸入運算元
401_E、401_F、401_G、401_H、401_L、401_N、401_O、401_P‧‧‧512位元輸入運算元/目的地/輸入向量
401_I、401_J、401_K‧‧‧第一輸入運算元/輸入向量
403_I、403_L‧‧‧結果向量/結果
402_I_1、402_J_1‧‧‧遮罩元件
403_I_1、403_J_1、403_K_1‧‧‧結果元件
403_J、403_N、403_P‧‧‧目的地/結果向量/結果/輸出向量
402_K_1‧‧‧遮罩層元件/遮罩元件
403_L_Q2-403_L_Q4、403_M_Q2-403_M_Q4‧‧‧組
401_M‧‧‧輸入運算元/輸入向量
403_M、403_O、403_P‧‧‧512位元向量/目的地/結果向量/結果/輸出向量
401_M_1、401_M_2‧‧‧元件
401_N‧‧‧輸入向量
403_O_1‧‧‧輸出元件對
403_O_2-403_O_4‧‧‧元件
403_P_1‧‧‧輸出元件組
403_P_2-403_P_4‧‧‧元件組
501‧‧‧第一暫存器/暫存器
502‧‧‧邏輯電路
503‧‧‧輸出
504‧‧‧遮罩層邏輯電路
506‧‧‧暫存器/饋進目的地
507‧‧‧暫存器
510‧‧‧輸入暫存器
600‧‧‧一般向量友善指令格式
605‧‧‧非記憶體存取
610‧‧‧非記憶體存取、完全捨位控制型操作
612‧‧‧非記憶體存取、寫入遮罩控制、部分捨位控制型操作
615‧‧‧資料轉換型操作
617‧‧‧非記憶體存取、寫入遮罩控制、vsize型操作
620‧‧‧記憶體存取
625‧‧‧記憶體存取、暫時
627‧‧‧記憶體存取、寫入遮罩控
制
630‧‧‧記憶體存取、非暫時
640‧‧‧格式欄位
642‧‧‧基本操作欄位
644‧‧‧暫存器位址欄位
646‧‧‧修飾符欄位
650‧‧‧擴增操作欄位
652‧‧‧α欄位
652A‧‧‧RS欄位
652A.1‧‧‧捨位
652A.2‧‧‧資料轉換
652B‧‧‧收回提示欄位
652B.1‧‧‧暫時
652B.2‧‧‧非暫時
652C‧‧‧寫入遮罩控制(Z)欄位
654‧‧‧β欄位
654A‧‧‧捨位控制欄位
654B‧‧‧資料轉換欄位
654C‧‧‧資料調處欄位
656‧‧‧抑制所有浮點異常(SAE)欄位
657A‧‧‧RL欄位
657A.1‧‧‧捨位欄位
657A.2‧‧‧向量長度(VSIZE)
657B‧‧‧廣播欄位
658‧‧‧捨位操作控制欄位
659A‧‧‧捨位操作欄位
659B‧‧‧向量長度欄位
660‧‧‧比例欄位
662A‧‧‧位移欄位
662B‧‧‧位移因數欄位
664‧‧‧資料元件寬度欄位
668‧‧‧類別欄位
668A‧‧‧類別A
668B‧‧‧類別B
670‧‧‧寫入遮罩欄位
672‧‧‧立即欄位
674‧‧‧完整的運算碼欄位
700‧‧‧特定向量友善指令格式
702‧‧‧EVEX前綴
705‧‧‧REX欄位
710‧‧‧REX’欄位
715‧‧‧運算碼對映欄位
720‧‧‧EVEX.vvvv欄位
725‧‧‧前綴編碼欄位
730‧‧‧實際運算碼欄位
740‧‧‧MOD R/M欄位
742‧‧‧MOD欄位
744‧‧‧Reg欄位
746‧‧‧R/M欄位
754‧‧‧SIB.xxx
756‧‧‧SIB.bbb
800‧‧‧暫存器架構
810‧‧‧向量暫存器
815‧‧‧寫入遮罩暫存器
825‧‧‧通用暫存器
845‧‧‧純量浮點堆疊暫存器檔案
850‧‧‧MMX緊縮整數平板暫存器檔案
900‧‧‧處理管線
902‧‧‧擷取級段
904‧‧‧長度解碼級段
906‧‧‧解碼級段
908‧‧‧分配級段
910‧‧‧重新命名級段
912‧‧‧排程級段
914‧‧‧暫存器讀取/記憶體讀取級段
916‧‧‧執行級段
918‧‧‧回寫/記憶體寫入級段
922‧‧‧異常處置級段
924‧‧‧確認級段
930‧‧‧前端單元
932‧‧‧分支預測單元
934‧‧‧指令快取記憶體單元
936‧‧‧指令轉譯後備緩衝器(TLB)
938‧‧‧指令擷取單元
940‧‧‧解碼單元
950‧‧‧執行引擎單元
952‧‧‧重新命名/分配器單元
954‧‧‧引退單元
956‧‧‧排程器單元
958‧‧‧實體暫存器檔案單元
960‧‧‧執行叢集
962‧‧‧執行單元
964‧‧‧記憶體存取單元
970‧‧‧記憶體單元
972‧‧‧資料TLB單元
974‧‧‧資料快取記憶體單元
976‧‧‧L2快取記憶體單元
990‧‧‧處理器核心
1000‧‧‧指令解碼器
1002‧‧‧互連網路
1004‧‧‧L2快取記憶體局域子
集
1006‧‧‧L1快取記憶體
1006A‧‧‧L1資料快取記憶體
1008‧‧‧純量單元
1010‧‧‧向量單元
1012‧‧‧純量暫存器
1014‧‧‧向量暫存器
1020‧‧‧拌和單元
1022A、1022B‧‧‧數值轉換單元
1024‧‧‧複製單元
1026‧‧‧寫入遮罩暫存器
1028‧‧‧寬度為16之ALU
1100‧‧‧處理器
1102A-N‧‧‧核心
1104A-N‧‧‧快取記憶體單元
1106‧‧‧共享快取記憶體單元
1108‧‧‧專用邏輯
1110‧‧‧系統代理
1112‧‧‧環式互連單元
1114‧‧‧整合型記憶體控制器單元
1116‧‧‧匯流排控制器單元
1200‧‧‧系統
1210、1215‧‧‧處理器
1220‧‧‧控制器集線器
1240‧‧‧記憶體
1245‧‧‧共處理器
1250‧‧‧輸入/輸出集線器
1260‧‧‧輸入/輸出(I/O)裝置
1290‧‧‧圖形記憶體控制器集線器(GMCH)
1295‧‧‧連接
1300‧‧‧第一更特定的示範性系統
1314、1414‧‧‧I/O裝置
1315‧‧‧額外處理器
1316‧‧‧第一匯流排
1318‧‧‧匯流排橋接器
1320‧‧‧第二匯流排
1322‧‧‧鍵盤及/或滑鼠
1324‧‧‧音訊I/O
1327‧‧‧通訊裝置
1328‧‧‧儲存單元
1330‧‧‧指令/程式碼及資料
1332、1334‧‧‧記憶體
1338‧‧‧共處理器
1339‧‧‧高效能介面
1350‧‧‧點對點互連
1352、1354、1386、1388‧‧‧P-P介面
1370‧‧‧第一處理器
1372‧‧‧整合型記憶體控制器(IMC)單元
1376、1378‧‧‧點對點(P-P)介面
1380‧‧‧第二處理器
1382‧‧‧整合型記憶體控制器(IMC)單元
1390‧‧‧晶片組
1394、1398‧‧‧點對點介面電路
1396‧‧‧介面
1400‧‧‧第二更特定的示範性系統
1415‧‧‧舊式I/O裝置
1500‧‧‧系統單晶片
1502‧‧‧互連單元
1510‧‧‧應用處理器
1520‧‧‧共處理器
1530‧‧‧靜態隨機存取記憶體(SRAM)單元
1532‧‧‧直接記憶體存取(DMA)單元
1540‧‧‧顯示單元
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二進位碼
1608‧‧‧替代性指令集編譯器
1610‧‧‧替代性指令集二進位碼
1612‧‧‧指令轉換器
1614‧‧‧不具有至少一個x86指令集核心之處理器
1616‧‧‧具有至少一個x86指令集核心之處理器
在隨附圖式之各圖中藉由實例而非限制來說明本發明,其中相似參考符號指示類似元件,且其中:圖1展示出指令執行管線;圖2A及圖2B比較純量與向量處理;圖3a至圖3e展示出先前技術插入指令、擷取指令及排列指令;圖4a至圖4p展示出改良的插入指令、摘取指令及排列指令;圖5a及圖5b係有關於用於實行改良的插入指令、擷
取指令及排列指令之執行邏輯電路;圖6A至圖6B係例示根據本發明之實施例之一般向量友善指令格式及其指令模板的方塊圖;圖7A至圖7D係例示根據本發明之實施例之示範性特定向量友善指令格式的方塊圖;圖8係根據本發明之一實施例之暫存器架構的方塊圖;圖9A係例示根據本發明之實施例之如下兩者的方塊圖:示範性循序(in-order)管線,以及示範性暫存器重新命名亂序(out-of-order)發佈/執行管線;圖9B係例示如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架構核心,上述兩者將包括於根據本發明之實施例的處理器中;圖10A至圖10B例示出更特定的示範性循序核心架構之方塊圖,該核心將係晶片中的若干邏輯區塊(包括相同類型及/或不同類型的其他核心)中之一者;圖11係根據本發明之實施例之處理器的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件(graphics);圖12係根據本發明之一實施例之系統的方塊圖;圖13係根據本發明之一實施例之第一更特定的示範性系統之方塊圖;圖14係根據本發明之一實施例之第二更特定的示範性系統之方塊圖;圖15係根據本發明之一實施例之SoC(系統單晶片)的
方塊圖;以及圖16係對照根據本發明之實施例之軟體指令轉換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。
圖4a至圖4e展示出四個新VINSERT指令之邏輯運算。具體而言,圖4a至圖4d分別展示出VINSERTF32X4指令、VINSERTF64X2指令、VINSERTF32X8指令及VINSERTF64X4指令。
圖4a展示出VINSERTF32X4指令之邏輯運算。如圖4a中所觀察到,接收128位元結構401_A作為第一輸入運算元。128位元結構含有四個32位元單精度浮點值。亦接收512位元向量作為第二輸入運算元402_A。可將512位元向量看作由資料之四個相連「塊」組成,該四個相連「塊」中每一者之大小為128個位元。即時運算元(未展示)指示第二運算元402_A之哪一128位元「塊」將要以第一輸入運算元401_A覆寫。應指出,在覆寫自向量暫存器空間讀取之資訊之執行單元中之本地複製的意義上,覆寫第二運算元係真實的。如此項技術中所熟知,只有在指令格式指示來源暫存器亦係目的地暫存器時才通常覆寫向量暫存器空間中之原始來源資訊。
然後將遮罩應用於所得資料結構403_A。此處,遮罩層404_A接收輸入遮罩向量(未展示),該輸入遮罩向
量識別所得資料結構403_A之哪些32位元資料值將要寫入至目的地406_A。遮罩暫存器空間(例如,如圖1之遮罩暫存器空間106)中之遮罩向量之位置及向量暫存器空間中之目的地之位置兩者係在指令格式中識別。第一輸入運算元401_A及第二輸入運算元402_A之來源亦係在指令格式中識別。在一實施例中,第一輸入運算元401_A可來源於向量暫存器空間或記憶體位置,且第二輸入運算元402_A係來源於向量暫存器空間。即時運算元亦係包括在指令格式中。在一實施例中,儲存目的地之向量暫存器空間不同於輸入運算元來源之向量暫存器空間。
在一實施例中,而非自遮罩暫存器空間讀取遮罩,遮罩係嵌入指令本身中(例如,相似於即時運算元)。在此狀況下,指令格式包括含有實際遮罩模式之欄位。相反,若遮罩係自遮罩暫存器空間擷取,則指令格式包括識別遮罩模式儲存在遮罩暫存器空間中何處之位址欄位。為簡單起見,將以下剩餘論述之論述撰寫為似乎遮罩係自遮罩暫存器空間擷取。然而,讀者將理解,亦可在遮罩嵌入指令中作為一種即時運算元的情況下實行指令。
在向量友善指令格式之一實行方案中,以下更詳細地描述該實行方案之實施例,指令格式支援此等遮罩模式技術中兩者。在此狀況下,指令格式包括額外欄位,該額外欄位識別將為指令採取哪一方法(例如,1=遮罩模式相似於嵌入指令中之即時運算元,0=遮罩模式將係自遮罩暫存器空間擷取)。
分開地或以組合方式,應用的遮罩之類型可係「合併」或「歸零」。在合併遮罩之狀況下,不覆寫結果資料結構之「遮罩出」欄位。實情為,保留彼位置處之目的地暫存器中之原始值。相反,在歸零遮罩之狀況下,結果資料結構之「遮罩出」欄位以值0覆寫目的地暫存器中之彼位置。在各種實施例中(諸如與以上剛剛參閱之向量友善指令格式相關聯之彼等實施例),在指令格式之另一欄位中指定將應用合併遮罩或歸零遮罩。
關於遮罩之以上說明亦適用於與圖4B至圖4p相關聯之指令之以下論述。為方便起見,以下不重複該等說明。
圖4b展示出VINSERTF64X2指令之邏輯運算。如圖4B中所觀察到,接收128位元結構401_B作為第一輸入運算元。128位元結構含有兩個64位元雙精度浮點值。亦接收512位元向量作為第二輸入運算元402_B。可將512位元向量看作由資料之四個相連「塊」組成,該四個相連「塊」中每一者之大小為128個位元。即時運算元(未展示)指示第二運算元402_B之哪一128位元「塊」將要以第一輸入運算元401_B覆寫。
然後將遮罩應用於所得資料結構403_B。此處,遮罩層404_B接收輸入遮罩向量(未展示),該輸入遮罩向量識別所得資料結構403_B之哪些64位元資料值將要寫入至目的地406_B。遮罩暫存器空間中之遮罩向量之位置及向量暫存器空間中之目的地之位置兩者係在指令格式中識
別。第一輸入運算元401_B及第二輸入運算元402_B之來源亦係在指令格式中識別。在一實施例中,第一輸入運算元401_B可來源於向量暫存器空間或記憶體位置,且第二輸入運算元402_B係來源於向量暫存器空間。即時運算元亦係包括在指令格式中。在一實施例中,儲存目的地之向量暫存器空間不同於輸入運算元來源之向量暫存器空間。
圖4c展示出VINSERTF32X8指令之邏輯運算。如圖4c中所觀察到,接收256位元結構401_C作為第一輸入運算元。256位元結構含有八個32位元單精度浮點值。亦接收512位元向量作為第二輸入運算元402_C。可將512位元向量看作由資料之兩個相連「塊」組成,該兩個相連「塊」中每一者之大小為256個位元。即時運算元(未展示)指示第二運算元402_C之哪一256位元「塊」將要以第一輸入運算元401_C覆寫。
然後將遮罩應用於所得資料結構403_C。此處,遮罩層404_C接收輸入遮罩向量(未展示),該輸入遮罩向量識別所得資料結構403_C之哪些32位元資料值將要寫入至目的地406_C。遮罩暫存器空間中之遮罩向量之位置及向量暫存器空間中之目的地之位置兩者係在指令格式中識別。第一輸入運算元401_C及第二輸入運算元402_C之來源亦係在指令格式中識別。在一實施例中,第一輸入運算元401_C可來源於向量暫存器空間或記憶體位置,且第二輸入運算元402_C係來源於向量暫存器空間。即時運算元亦係包括在指令格式中。在一實施例中,儲存目的地之向
量暫存器空間不同於輸入運算元來源之向量暫存器空間。
圖4d展示出VINSERTF64X4指令之邏輯運算。如圖4d中所觀察到,接收256位元結構401_D作為第一輸入運算元。256位元結構含有四個64位元雙精度浮點值。亦接收512位元向量作為第二輸入運算元402_D。可將512位元向量看作由資料之兩個相連「塊」組成,該兩個相連「塊」中每一者之大小為256個位元。即時運算元(未展示)指示第二運算元402_D之哪一256位元「塊」將要以第一輸入運算元401_D覆寫。
然後將遮罩應用於所得資料結構403_D。此處,遮罩層404_D接收輸入遮罩向量(未展示),該輸入遮罩向量識別所得資料結構403_D之哪些64位元資料值將要寫入至目的地406_D。遮罩暫存器空間中之遮罩向量之位置及向量暫存器空間中之目的地之位置兩者係在指令格式中識別。第一輸入運算元401_D及第二輸入運算元402_D之來源亦係在指令格式中識別。在一實施例中,第一輸入運算元401_D可來源於向量暫存器空間或記憶體位置,且第二輸入運算元402_D係來源於向量暫存器空間。即時運算元亦係包括在指令格式中。在一實施例中,儲存目的地之向量暫存器空間不同於輸入運算元來源之向量暫存器空間。
圖4e至圖4h展示出四個新VEXTRACT指令。具體而言,圖4e展示出VEXTRACT32X4指令,圖4f展示出VEXTRACT64X2指令,圖4g展示出VEXTRACT32X8指令且圖4h展示出VEXTRACT64X4指令。
圖4e展示出VEXTRACT32X4指令之邏輯運算。如圖4e中所觀察到,VEXTRACT32X4指令接受512位元輸入運算元401_E。可將512位元輸入運算元401_E看作由資料之四個相連128位元「塊」組成,其中每一塊含有四個單精度(32位元)浮點資料值。根據VEXTRACT32X4指令之邏輯運算,「選擇」此等128位元塊中一者,將遮罩層402_E應用於所選塊,且將所得資料結構寫入至目的地403_E。
在一實施例中,即時運算元(未展示)指定將要選擇四個128位元塊中哪一者,自向量暫存器提供輸入運算元401_E,且目的地401_E可在向量暫存器空間或記憶體位置中。指令格式識別任何可用來源/目的地向量暫存器及/或記憶體位置。在一實施例中,目的地係儲存在與輸入向量來源之向量暫存器空間不同的向量暫存器空間中。在指令之運算期間,自遮罩暫存器空間讀取遮罩向量,且將該遮罩向量應用於遮罩層402_E。遮罩暫存器空間中之遮罩向量之位置亦係提供在指令格式中。遮罩之細微度係32個位元。即,遮罩向量單獨地指定所選資料塊中之四個32位元值中哪些將要寫入至目的地。
圖4f展示出VEXTRACT64X2指令之邏輯運算。如圖4f中所觀察到,VEXTRACT64X2指令接受512位元輸入運算元401_F。可將512位元輸入運算元401_F看作由資料之四個相連128位元「塊」組成,其中每一塊含有兩個雙精度(64位元)浮點資料值。根據
VEXTRACT64X2指令之邏輯運算,「選擇」此等128位元塊中一者,將遮罩層402_F應用於所選塊,且將所得資料結構寫入至目的地403_F。
在一實施例中,即時運算元(未展示)指定將要選擇四個128位元塊中哪一者,自向量暫存器提供輸入運算元401_F,且目的地403_F可在向量暫存器空間或記憶體位置中。指令格式識別任何可用來源/目的地向量暫存器及/或記憶體位置。在一實施例中,目的地係儲存在與輸入向量來源之向量暫存器空間不同的向量暫存器空間中。在指令之運算期間,自遮罩暫存器空間讀取遮罩向量,且將該遮罩向量應用於遮罩層402_F。遮罩暫存器空間中之遮罩向量之位置亦係提供在指令格式中。遮罩之細微度係64個位元。即,遮罩向量單獨地指定所選資料塊中之兩個64位元值中哪些將要寫入至目的地。
圖4g展示出VEXTRACT32X8指令之邏輯運算。如圖4g中所觀察到,VEXTRACT32X8指令接受512位元輸入運算元401_G。可將512位元輸入運算元401_G看作由資料之兩個相連256位元「塊」組成,其中每一塊含有八個單精度(32位元)浮點資料值。根據VEXTRACT32X8指令之邏輯運算,「選擇」此等256位元塊中一者,將遮罩層402_G應用於所選塊,且將所得資料結構寫入至目的地403_G。
在一實施例中,即時運算元(未展示)指定將要選擇兩個256位元塊中哪一者,自向量暫存器提供輸入運算
元401_G,且目的地403_G可在向量暫存器空間或記憶體位置中。指令格式識別任何可用來源/目的地向量暫存器及/或記憶體位置。在一實施例中,目的地係儲存在與輸入向量來源之向量暫存器空間不同的向量暫存器空間中。在指令之運算期間,自遮罩暫存器空間讀取遮罩向量,且將該遮罩向量應用於遮罩層402_G。遮罩暫存器空間中之遮罩向量之位置亦係提供在指令格式中。遮罩之細微度係32個位元。即,遮罩向量單獨地指定所選資料塊中之八個32位元值中哪些將要寫入至目的地。
圖4h展示出VEXTRACT64X4指令之邏輯運算。如圖4h中所觀察到,VEXTRACT64X4指令接受512位元輸入運算元401_H。可將512位元輸入運算元401_H看作由資料之兩個相連256位元「塊」組成,其中每一塊含有四個雙精度(64位元)浮點資料值。根據VEXTRACT64X4指令之邏輯運算,「選擇」此等256位元塊中一者,將遮罩層402_H應用於所選塊,且將所得資料結構寫入至目的地403_H。
在一實施例中,即時運算元(未展示)指定將要選擇兩個256位元塊中哪一者,自向量暫存器提供輸入運算元401_H,且目的地403_H可在向量暫存器空間或記憶體位置中。指令格式識別任何可用來源/目的地向量暫存器及/或記憶體位置。在一實施例中,目的地係儲存在與輸入向量來源之向量暫存器空間不同的向量暫存器空間中。在指令之運算期間,自遮罩暫存器空間讀取遮罩向量,且將該
遮罩向量應用於遮罩層402_H。遮罩暫存器空間中之遮罩向量之位置亦係提供在指令格式中。遮罩之細微度係64個位元。即,遮罩向量單獨地指定所選資料塊中之四個64位元值中哪些將要寫入至目的地。
圖4i至圖4p呈現新VPERMUTE指令。此等新VPERMUTE指令包括VPERMW、VPERMD、VPERMQ、VPERMILPS、VPFRMILPD。
圖4i展示出VPERMW指令之邏輯運算。VPERMW指令接受512位元輸入向量作為第一輸入運算元401_I。將512位元輸入向量看作具有三十二個16位元資料值(字)。遮罩層402_I同樣地具有細微度以便以16位元細微度遮罩。即,將目的地/結果向量403_I看作具有三十二個16位元值,且遮罩層402_I具有提供對於結果向量403_I中之每一元件之單獨遮罩的能力。
根據VPERMW指令之邏輯運算,結果向量403_I中之每一元件充滿輸入向量401_I中之三十二個元件中任一者。對於結果403_I之最右元件403_I_1展示出此能力。此處,如圖4i中所觀察到,遮罩層元件402_I_1可具備輸入向量401_I中之三十二個元件中任一者。如此,若在遮罩元件402_I_1處未「遮罩出」結果元件403_I_1,則結果元件403_I_1可「充滿」輸入向量401_I中之三十二個16位元件中任一者。
儘管在圖4i中未明確地展示出,但是此相同能力/功能適用於結果向量403_I中之剩餘三十一個元件中每
一者。即,結果向量403_I中之任何元件若未經用於結果向量中之彼特定元件的遮罩層402_I中之專屬遮罩元件遮罩出,則可充滿輸入向量401_I中之16位元值中任一者。此意味例如結果403_I中之兩個或兩個以上元件可充滿來自輸入向量401_I之相同元件。
用於輸入向量401_I之來源及用於結果向量403_I之目的地係在VPERMW指令格式中指定。在一實施例中,自向量暫存器空間或記憶體中之位置提供輸入向量401_I,且將結果寫入至不同的向量暫存器空間中之位置中。遮罩層402_I亦具備來自遮罩暫存器空間之遮罩向量,該遮罩向量指定將要遮罩出結果403_I中之哪些元件(及將不遮罩出結果403_I中之哪些元件)。
亦提供第二輸入向量(未展示),被稱為「索引」向量,該第二輸入向量明確地表達對於輸出向量中之每一元件若輸出向量中之彼元件未經遮罩出,則何特定輸入元件將用來充滿該元件。例如,在一實施例中,索引向量係32元件向量,該32元件向量在每一元件處具有至少五個位元。索引向量中之每一元件對應於結果中之獨特的元件。五個位元用來指定第一輸入向量401_I中之哪一元件將用來充滿特定結果元件(若該特定結果元件未經遮罩出)。
在一實施例中,亦支援VPERMW指令之第二版本,該VPERMW指令之第二版本接受第三輸入向量(未展示),該第三輸入向量含有三十二個額外16位元值,該三十二個額外16位元值可用來充滿任何輸出向量元件位置。
實質上,第三輸入向量使可用來充滿任何輸出元件位置之可利用的16位元輸入值之數目加倍。對於VPERMW指令之此版本,以上剛剛提及之索引向量將至少6個位元使用於每一輸出位置而非5個位元。此處,額外位元用來識別第一輸入向量(401_I)或第三(未展示)輸入向量將用於特定輸出向量403_I元件之來源。此版本之第一變體使目的地暫存器空間與供應索引向量之暫存器空間等同。即,結果覆寫向量暫存器空間中之索引向量。此版本之第二變體以結果覆寫向量暫存器空間中之第三輸入向量。在任一變體中,並非脫離索引向量位置(第一變體)或第三輸入向量(第二變體)而分開地在指令格式中識別目的地位置。
圖4j展示出VPERMD指令之邏輯運算。VPERMD指令接受512位元輸入向量作為第一輸入運算元401_J。將512位元輸入向量看作具有十六個32位元資料值。32位元值可係雙字或單精度32位元值。遮罩層402_J同樣地具有細微度以便以32位元細微度遮罩。即,將目的地/結果向量403_J看作具有十六個32位元值,且遮罩層402_J具有提供對於結果向量403_J中之每一元件之單獨遮罩的能力。
根據VPERMD指令之邏輯運算,結果向量403_J中之每一元件充滿輸入向量401_J中之十六個元件中任一者。對於結果403_J之最右元件403_J_1展示出此能力。此處,如圖4j中所觀察到,遮罩層元件402_J_1可具備輸入向量401_J中之十六個元件中任一者。如此,若結果元
件403_J_1在遮罩元件402_J_1處未經「遮罩出」,則結果元件403_J_1可「充滿」輸入向量401_J中之十六個32位元件中任一者。
儘管在圖4j中未明確地展示出,但是此相同能力/功能適用於結果向量403_J中之剩餘十五個元件中每一者。即,結果向量403_J中之任何元件若未經用於結果向量中之彼特定元件的遮罩層402_J中之專屬遮罩元件遮罩出,則可充滿輸入向量401_J中之32位元值中任一者。此意味例如結果403_J中之兩個或兩個以上元件可充滿來自輸入向量401_J之相同元件。
用於輸入向量401_J之來源及用於結果向量403_J之目的地係在VPERMD指令格式中指定。在一實施例中,自向量暫存器空間或記憶體中之位置提供輸入向量401_J,且將結果寫入至不同的向量暫存器空間中之位置中。遮罩層402_J亦具備來自遮罩暫存器空間之遮罩向量,該遮罩向量指定將要遮罩出結果403_J中之哪些元件(及將不遮罩出結果403_J中之哪些元件)。
亦提供第二輸入向量(未展示),被稱為「索引」向量,該第二輸入向量明確地表達對於輸出向量中之每一元件若輸出向量中之彼元件未經遮罩出,則何特定輸入元件將用來充滿該元件。例如,在一實施例中,索引向量係16元件向量,該16元件向量在每一元件處具有至少五個位元。索引向量中之每一元件對應於結果中之獨特的元件。五個位元用來指定第一輸入向量401_J中之哪一元件將用
來充滿特定結果元件(若該特定結果元件未經遮罩出)。
在一實施例中,亦支援VPERMW指令之第二版本,該VPERMW指令之第二版本接受第三輸入向量(未展示),該第三輸入向量含有十六個額外32位元值,該十六個額外32位元值可用來充滿任何輸出向量元件位置。實質上,第三輸入向量使可用來充滿任何輸出元件位置之可利用的32位元輸入值之數目加倍。對於VPERMW指令之此版本,以上剛剛提及之索引向量將至少6個位元使用於每一輸出位置而非5個位元。此處,額外位元用來識別第一輸入向量(401_J)或第三(未展示)輸入向量將用於特定輸出向量403_J元件之來源。此版本之第一變體使目的地暫存器空間與供應索引向量之暫存器空間等同。即,結果覆寫向量暫存器空間中之索引向量。此版本之第二變體以結果覆寫向量暫存器空間中之第三輸入向量。在任一此等變體中,並非脫離索引向量位置(第一變體)或第三輸入向量(第二變體)而分開地在指令格式中識別目的地位置。
圖4k展示出VPERMQ指令之邏輯運算。VPERMQ指令接受第一512位元輸入向量作為第一輸入運算元401_K且接受第二512位元輸入向量作為第二輸入運算元(未展示)。將該等512位元輸入向量中兩者看作具有八個64位元資料值。64位元值可係四倍字或雙精度浮點值。遮罩層402_K同樣地具有細微度以便以64位元細微度遮罩。即,將目的地/結果向量403_K看作具有八個64位元值,且遮罩層402_K具有提供用於結果向量403_K中之每
一元件之單獨遮罩的能力。
根據VPERMQ指令之邏輯運算,結果向量403_K中之每一元件充滿輸入向量(401_K及未展示的輸入向量)之組合中之十六個元件中任一者。對於結果403_K之最右元件403_K_1展示出此能力。此處,如圖4k中所觀察到,遮罩層元件402_K_1可具備輸入向量401_K中之八個元件中任一者或第二輸入向量(未展示)中之八個元件中任一者。如此,若結果元件403_K_1在遮罩元件402_K_1處未經「遮罩出」,則結果元件403_K_1可「充滿」來自該對輸入向量之十六個64位元件中任一者。
儘管在圖4k中未明確地展示出,但是此相同能力/功能適用於結果向量403_K中之剩餘八個個元件中每一者。即,結果向量403_K中之任何元件若未經用於結果向量中之彼特定元件的遮罩層402_K中之專屬遮罩元件遮罩出,則可充滿任一輸入向量中之64位元值中任一者。此意味例如結果403_K中之兩個或兩個以上元件可充滿來自輸入向量401_K之相同元件。
用於兩個輸入向量之來源係在VPERMQ指令格式中指定。在一實施例中,輸入向量401_K係自向量暫存器空間或記憶體中之位置提供,且第二輸入向量係自向量暫存器空間中之其自已的個別位置提供。遮罩層402_K亦具備來自遮罩暫存器空間之遮罩向量,該遮罩向量指定將要遮罩出結果403_K中之哪些元件(及將不遮罩出結果403_K中之哪些元件)。
亦提供另一輸入向量(未展示),被稱為「索引」向量,該另一輸入向量明確地表達對於輸出向量中之每一元件若輸出向量中之彼元件未經遮罩出,則何特定輸入元件將用來充滿該元件。例如,在一實施例中,索引向量係八元件向量,該八元件向量在每一元件處具有至少六個位元。索引向量中之每一元件對應於結果中之獨特的元件。上述六個位元中之五個用來指定第一輸入向量401_K或第二輸入向量中之哪些元件將用來充滿特定結果元件(若該特定結果元件未經遮罩出)。第六位元用來識別第一輸入向量(401_K)或第二(未展示)輸入向量將用於特定輸出向量403_K元件之來源。
VPERMQ之第一變體使目的地暫存器空間與供應索引向量之暫存器空間等同。即,結果覆寫向量暫存器空間中之索引向量。第二變體以結果覆寫向量暫存器空間中之第二輸入向量。在任一變體中,並非脫離索引向量位置(第一變體)或第二輸入向量(第二變體)而分開地在指令格式中識別目的地位置。
圖4l展示出新VPERMILPS指令。如圖4l中所觀察到,新VPERMILPS指令接受輸入運算元,該輸入運算元對應於512位元輸入向量401_L,該512位元輸入向量401_L具有十六個32位元(單精度)浮點值。結果亦係512位元向量,該512位元向量具有十六個32位元單精度浮點值作為其元件403_L。遮罩層402_L同樣地具有細微度以便以32位元細微度遮罩。即,將目的地/結果向量403_L
看作具有十六個32位元值,且遮罩層402_L具有提供用於結果向量403_L中之每一元件之單獨遮罩的能力。
若結果403中之特定元件未經遮罩層402_L遮罩,則第二輸入向量(未展示),被稱為「索引」向量,唯一地指定輸入向量401_L中之四個元件中哪一個可「充滿」該特定元件。例如,結果403_L之最低128個位元中之四個元件403_L_1至403_L_4中每一者可僅充滿輸入向量401_L之最低128個位元中之四個元件401_L_1至403_L_4中任何元件。用於結果中之每一元件之來源與用於結果中之另一元件之來源無關。因此輸出向量中之兩個不同元件可充滿相同輸入向量元件。
圖4l展示出用於正提供至遮罩層402_L之輸出元件403_L_1之可利用輸入來源。又,此等相同輸入來源亦可利用於輸出元件403_L_2至403_L_4中每一者。對於每下一組128個位元安排類似佈置。即,假定無遮罩,來自組403_L_Q2之元件必須來源於組401_L_Q2中之元件,來自組403_L_Q3之元件必須來源於組401_L_Q3中之元件,且來自組403_L_Q4之元件必須來源於組401_L_Q4中之元件。
在一實施例中,在相同處理器之指令集中支援新VPERMILPS指令之不同版本。第一版本將輸入向量401_L儲存在第一向量暫存器空間位置中,將索引向量儲存在第二向量暫存器空間位置或記憶體位置中且將結果儲存在其自已的專屬向量暫存器空間位置中(即,既不覆寫輸入向量
401_L,亦不覆寫索引向量)。第二版本將輸入向量401_L儲存在第一向量暫存器空間位置或記憶體位置中,指定指令中之索引向量作為即時運算元且將結果儲存在其自已的專屬向量暫存器空間位置中(即,不覆寫輸入向量401_L)。
遮罩層402_L接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量之位置係在指令中指定。在索引向量用來指定輸入向量元件與輸出向量元件之間的選擇模式之版本中,索引向量具有十六個元件(一個元件用於輸出向量中之每一元件)及每一元件處之兩個位元,以選擇可利用來充滿個別輸出向量元件之四個輸入向量元件中一者。在使用即時運算元之版本中,即時運算元具有八個元件,其中每一元件兩個位元。此處,相同選擇模式用於輸出向量之下半部分及上半部分。
圖4m展示出新VPERMILPD指令。如圖4m中所觀察到,新VPERMILPD指令接受輸入運算元401_M,輸入運算元401_M對應於512位元輸入向量,該512位元輸入向量具有八個64位元(雙精度)浮點值。結果亦係512位元向量403_M,512位元向量403_M具有八個64位元雙精度浮點值作為其元件。遮罩層402_M同樣地具有細微度以便以64位元細微度遮罩。即,將目的地/結果向量403_M看作具有八個64位元值,且遮罩層402_M具有提供用於結果向量403_M中之每一元件之單獨遮罩的能力。
若結果403_M中之特定元件未經遮罩層402_M遮罩,則第二輸入向量(未展示),被稱為「索引」向量,唯
一地指定輸入向量401_M中之兩個元件中哪一個可「充滿」該特定元件。例如,結果403_M之最低位128個位元中之元件403_M_1及403_M_2兩者可僅充滿輸入向量401_K之最低位128個位元中之元件401_M_1及401_M_2中任一者。用於結果中之每一元件之來源與用於結果中之另一元件之來源無關。因此輸出向量中之兩個不同元件可充滿相同輸入向量元件。
圖4m展示出用於正提供至遮罩層402_M之輸出元件403_M_1及403_M_2之可利用輸入來源。對於輸出向量403_M中之剩餘組的128個位元安排此類似佈置。即,假定無遮罩,來自組403_M_Q2之元件必須來源於組401_M_Q2中之元件,來自組403_M_Q3之元件必須來源於組401_M_Q3中之元件,且來自組403_M_Q4之元件必須來源於組401_M_Q4中之元件。
在一實施例中,在相同處理器之指令集中支援新VPERMILPD指令之不同版本。第一版本將輸入向量401_M儲存在第一向量暫存器空間位置中,將索引向量儲存在第二向量暫存器空間位置或記憶體位置中且將結果儲存在其自已的專屬向量暫存器空間位置中(即,既不覆寫輸入向量401_M,亦不覆寫索引向量)。第二版本將輸入向量401_M儲存在第一向量暫存器空間位置或記憶體位置中,指定指令中之索引向量作為即時運算元且將結果儲存在其自已的專屬向量暫存器空間位置中(即,不覆寫輸入向量401_M)。
遮罩層402_M接收來自遮罩暫存器空間之遮罩
向量。遮罩暫存器空間中之遮罩向量之位置係在指令中指定。在索引向量用來指定輸入向量元件與輸出向量元件之間的選擇模式之版本中,索引向量具有八個元件(一個元件用於輸出向量中之每一元件)及每一元件處之一位元,以選擇可利用來充滿個別輸出向量元件之兩個輸入向量元件中一者。在使用即時運算元之版本中,即時運算元具有八個元件,其中每一元件一位元。
圖4n展示出VPERM64X1指令。如圖4n中所觀察到,VPERM64X1指令接受輸入運算元,該輸入運算元對應於512位元輸入向量401_N,512位元輸入向量401_N具有八個64位元(雙精度)浮點值。結果亦係512位元向量403_N,512位元向量403_N具有八個64位元雙精度浮點值作為其元件。遮罩層402_N同樣地具有細微度以便以64位元細微度遮罩。即,將目的地/結果向量403_N看作具有八個64位元值,且遮罩層402_N具有提供用於結果向量403_N中之每一元件之單獨遮罩的能力。
若結果403_N中之特定元件未經遮罩層402_N遮罩,則第二輸入向量(未展示),被稱為「索引」向量,唯一地指定輸入向量401_N中之八個個元件中哪一個可「充滿」該特定元件。即,輸入向量401_N中之任何元件可用來充滿輸出向量403_N中之任何元件。用於結果中之每一元件之來源與用於結果中之另一元件之來源無關。因此輸出向量中之兩個不同元件可充滿相同輸入向量元件。
圖4n展示出用於正提供至遮罩層402_N之輸出
元件403_N_1之可利用輸入來源。對於輸出向量403_N中之每一元件安排此類似佈置。如以下更詳細地描述,在即時運算元用作索引向量之一實施例中,來源選擇更受限制。
在一實施例中,在相同處理器之指令集中支援新VPERM64X1指令之不同版本。第一版本將輸入向量401_N儲存在第一向量暫存器空間位置或記憶體位置中,將索引向量儲存在第二向量暫存器空間位置中且將結果儲存在其自已的專屬向量暫存器空間位置中(即,既不覆寫輸入向量401_N,又不覆寫索引向量)。第二版本將輸入向量401_N儲存在第一向量暫存器空間位置或記憶體位置中,指定指令中之索引向量作為即時運算元且將結果儲存在其自已的專屬向量暫存器空間位置中(即,不覆寫輸入向量401_N)。
遮罩層402_N接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量之位置係在指令中指定。在索引向量用來指定輸入向量元件與輸出向量元件之間的選擇模式之版本中,索引向量具有八個元件(一個元件用於輸出向量中之每一元件)及每一元件處之三個位元,以選擇可利用來充滿個別輸出向量元件之八個個輸入向量元件中一者。在使用即時運算元之版本中,即時運算元具有四個元件,其中每一元件兩個位元。此處,每一輸出元件不具有其可利用來作為來源之全部八個輸入元件。實情為,輸出向量403_N之最低位256個位元中之任何元件必須由輸入向量403_N之最低位256個位元中之元件作為來源。將用於輸入向量/輸出向量之最低位256個位元之來源
的相同選擇模式用於輸入向量/輸出向量之最高位位元。
圖O展示出VPERM64X2指令之邏輯運算。根據VPERM64X2指令之運算,接收512位元輸入向量401_O。將512位元輸入向量401_O看作具有八個64位元雙精度浮點值或整數值。結果亦係512位元向量403_O,512位元向量403_O具有八個64位元雙精度浮點值或整數值作為其元件。遮罩層402_O同樣地具有細微度以便以64位元細微度遮罩。即,將目的地/結果向量403_O看作具有八個64位元值,且遮罩層402_O具有提供用於結果向量403_O中之每一元件之單獨遮罩的能力。
若結果403_O中之一特定對相鄰元件未經遮罩層402_O遮罩,則第二輸入向量(未展示),被稱為「索引」向量,唯一地指定輸入向量401_O中之哪一相鄰對元件可「充滿」該特定對相鄰元件。即,輸入向量401_O中之四對相鄰元件中任何一對可用來充滿輸出向量403_O中之任何一對元件。用於結果中之第一對元件之來源與用於結果中之另一對元件之來源無關。因此,輸出向量中之不同的兩對元件可充滿相同的一對輸入向量元件。
圖4O展示出用於正提供至遮罩層402_O之輸出元件對403_O_1之可利用輸入來源。對於其它對的元件403_O_2、403_O_3及403_O_4安排類似佈置。
在一實施例中,在相同處理器之指令集中支援VPERM64X2指令之不同版本。第一版本將輸入向量401_O儲存在第一向量暫存器空間位置或記憶體位置中,將索引
向量儲存在第二向量暫存器空間位置中且將結果儲存在其自已的專屬向量暫存器空間位置中(即,既不覆寫輸入向量401_O,又不覆寫索引向量)。第二版本將輸入向量401_O儲存在第一向量暫存器空間位置或記憶體位置中,指定指令中之索引向量作為即時運算元且將結果儲存在其自已的專屬向量暫存器空間位置中(即,不覆寫輸入向量401_O)。
遮罩層402_O接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量之位置係在指令中指定。在索引向量用來指定輸入向量元件與輸出向量元件之間的選擇模式之版本中,索引向量具有四個元件(一個元件用於輸出向量中之每一對元件)及每一元件處之兩個位元,以選擇可利用來充滿個別對輸出向量元件之四對輸入向量元件中一對。在使用即時運算元之版本中,即時運算元具有與索引向量相同的結構。
圖P展示出VPERM32X4指令之邏輯運算。根據VPERM32X4指令之運算,接收512位元輸入向量401_P。將512位元輸入向量401_P看作具有十六個32位元單精度浮點值或整數值。結果亦係512位元向量403_P,512位元向量403_P具有十六個32位元單精度浮點值或整數值作為其元件。遮罩層402_P同樣地具有細微度以便以32位元細微度遮罩。即,將目的地/結果向量403_P看作具有八個64位元值,且遮罩層402_P具有提供用於結果向量403_P中之每一元件之單獨遮罩的能力。
若結果403_P中之一特定組的相鄰32位元件未
經遮罩層402_P遮罩,則第二輸入向量(未展示),被稱為「索引」向量,唯一地指定輸入向量401_P中之哪一組四個32位元件可「充滿」該特定組的相鄰32位元件。即,輸入向量401_P中之四組四個相鄰元件中任何一組可用來充滿輸出向量403_P中之某些組的四個元件。用於結果中之第一組元件之來源與用於結果中之另一組四個元件之來源無關。因此,輸出向量中之不同的兩組四個元件可充滿相同的一組四個輸入向量元件。
圖4P展示出用於正提供至遮罩層402_P之輸出元件組403_P_1之可利用輸入來源。對於其它元件組403_P_2、403_P_3及403_P_4安排類似佈置。
在一實施例中,在相同處理器之指令集中支援VPERM32X4指令之不同版本。第一版本將輸入向量401_P儲存在第一向量暫存器空間位置或記憶體位置中,將索引向量儲存在第二向量暫存器空間位置中且將結果儲存在其自已的專屬向量暫存器空間位置中(即,既不覆寫輸入向量401_P,又不覆寫索引向量)。第二版本將輸入向量401_P儲存在第一向量暫存器空間位置或記憶體位置中,指定指令中之索引向量作為即時運算元且將結果儲存在其自已的專屬向量暫存器空間位置中(即,不覆寫輸入向量401_P)。
遮罩層402_P接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量之位置係在指令中指定。在索引向量用來指定輸入向量元件與輸出向量元件之間的選擇模式之版本中,索引向量具有四個元件(一個元件
用於輸出向量中之每一組四個元件)及每一元件處之兩個位元,以選擇可利用來充滿個別組的四個輸出向量元件之四組四個輸入向量元件中一組。在使用即時運算元之版本中,即時運算元具有與索引向量相同的結構。
取決於實行方案,支援此等指令之管線之資料擷取級段可耦接至記憶體以自記憶體擷取運算元,且/或,耦接至向量暫存器空間以自向量暫存器空間擷取運算元/將結果儲存至向量暫存器空間。
此外,對於描述為僅支援浮點資料值之彼等指令,想像得到地,可將此等相同指令擴展至處理整數資料值及浮點資料值。此處,圖1之暫存器空間102可包括專門針對儲存整數值之第一部分及專門針對儲存浮點值之另一部分。在沒有至整數值之擴展的情況下,相對於處理此等指令之方式,管線之資料擷取級段及回寫級段耦接至浮點暫存器空間且不需要耦接至整數暫存器空間。相反,若此等指令係設計來支援兩者資料類型,則資料擷取級段及回寫級段可耦接至任一者(取決於指令之解碼)。
圖5a展示出用於可實行以上在圖4a至圖4p中論述之指令之任何組合(包括全部)的執行之邏輯設計。在其他實施例中,不同的個別執行單元用來執行以上剛剛論述之向量摘取指令、向量插入指令及向量排列指令。在更進一步可能的實施例中,單個執行單元可執行來自此等指令族之兩者的指令集。
參考圖5a,第一暫存器501容納以上論述之第
一輸入運算元。值得注意地,第一暫存器501之大小應足夠大以容納預期其能夠複製之最大資料結構。第一暫存器501可位於管線中之資料擷取級段之後端。替代地或組合地,暫存器501可被認為係儲存第一輸入運算元之向量暫存器空間107內之暫存器。替代地,第一暫存器可位於執行單元之「前端」。第一暫存器501耦接至向量元件路由邏輯電路502。向量元件路由邏輯電路502係設計來將第一暫存器501中之輸入運算元之單獨元件導引至遮罩層邏輯電路504之適當的元件位置,該適當的元件位置與資訊及索引向量(或即時運算元)以及正執行之總指令一致。對於經微編碼之彼等實行方案,用於向量元件路由邏輯電路502之「邏輯電路」一詞將包括回應於微碼而行動之微碼及邏輯。暫存器507容納索引向量(或即時運算元)且耦接至向量元件路由邏輯電路502以控制第一運算元的向量元件之「路由」。
向量元件路由邏輯電路502之輸出503耦接至遮罩邏輯電路504。在一實施例中,輸出503中之單獨輸出之數目對應於結果向量之最大可能的大小(例如,512個位元)。遮罩層邏輯電路502經架構來支援由執行單元支援之指令之特定向量元件細微度。例如,若執行單元支援16位元、32位元及64位元結果元件細微度,則遮罩層邏輯電路502係設計來支援以此等細微度中每一者之遮罩。
如以上最後所論述,遮罩層邏輯電路504自暫存器505接收遮罩模式,以將遮罩應用於來自向量元件路由
之輸出503以產生暫存器506中之結果資料結構。暫存器505可對應於遮罩暫存器空間中之暫存器、管線中之資料擷取級段之輸出處的暫存器、執行單元之前端處的暫存器或容納指令中之即時值的暫存器(例如,在管線之指令譯碼級段之輸出處)。
取決於實行方案,暫存器506可對應於向量暫存器空間107內之暫存器,或暫存器506可係在執行單元之輸出處的暫存器。
輸入暫存器510儲存用於以上論述之彼等指令的額外輸入運算元,該等指令接受第二輸入向量,該第二輸入向量的元件可經選擇以用於包含在結果(例如,VPERMW、VPERMD及VPERMQ)中。輸入暫存器510或另一暫存器亦可用來儲存用於以上論述之VINSERT指令的第二運算元。如此,暫存器展示為饋進目的地506。暫存器510可在向量暫存器空間中,在指令執行管線之資料擷取級段之輸出處,或可在執行單元之輸入處。
在又一實施例中,執行單元邏輯電路係設計來不僅支援圖4a至圖4p之指令中任何指令/全部指令,而且亦支援圖3a至圖3e之先前技術指令中任何指令/全部指令。在此狀況下,因為圖3a至圖3e之先前技術指令不支援遮罩,所以當正執行此等指令時存在阻止遮罩層邏輯電路504之旁路路徑。替代地,可藉由稍後自動地以對應於未經遮罩之結果中的每一元件之資訊饋進遮罩來影響旁路。
儘管以上指令之描述包括用於資料值之特定位
元寬度、將要摘取/插入/排列之向量元件、結果之大小,但是一般技術者將承認,其中描述之概念可擴展至不同的個別寬度。
圖5b展示出可由圖5a之邏輯電路執行之方法。使將要摘取/插入/排列之輸入向量置於第一暫存器510中,且若遮罩應用,則將至少一遮罩模式置於第二暫存器中。然後選擇輸入向量之特定元件以用於包括於結果中,該結果與指令511一致。若遮罩應用,則將遮罩模式應用512於運算511之結果以產生結果。然後將結果寫入至目的地513。若遮罩未應用,則結果係運算511之結果。
示範性指令格式
本文中描述之指令之實施例可以不同格式來體現。另外,下文詳述示範性系統、架構及管線。可在此等系統、架構及管線上執行指令之實施例,但不限於詳述之彼等系統、架構及管線。
一般向量友善指令格式
向量友善指令格式係適合於向量指令的指令格式(例如,存在特定針對向量運算的某些欄位)。雖然描述了經由向量友善指令格式支援向量運算及純量運算兩者的實施例,但替代性實施例僅使用向量運算向量友善指令格式。
圖6A至圖6B係例示根據本發明之實施例之一般向量友善指令格式及其指令模板的方塊圖。圖6A係例示根據本發明之實施例之一般向量友善指令格式及其類別A指令模板的方塊圖;而圖6B係例示根據本發明之實施例之
一般向量友善指令格式及其類別B指令模板的方塊圖。具體而言,一般向量友善指令格式600,針對其定義了類別A及類別B指令模板,兩個指令模板皆包括非記憶體存取605指令模板及記憶體存取620指令模板。在向量友善指令格式的情況下,術語一般代表不與任何特定指令集相關的指令格式。
雖然將描述的本發明之實施例中,向量友善指令格式支援以下各者: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個位元組)的資料元件寬度)。
圖6A中的類別A指令模板包括:1)在非記憶體存取605指令模板內,展示出非記憶體存取、完全捨位(full
round)控制型操作610指令模板及非記憶體存取、資料轉換型操作615指令模板;以及2)在記憶體存取620指令模板內,展示出記憶體存取、暫時625指令模板及記憶體存取、非暫時630指令模板。圖6B中的類別B指令模板包括:1)在非記憶體存取605指令模板內,展示出非記憶體存取、寫入遮罩控制、部分捨位控制型操作612指令模板及非記憶體存取、寫入遮罩控制、vsize型操作617指令模板;以及2)在記憶體存取620指令模板內,展示出記憶體存取、寫入遮罩控制627指令模板。
一般向量友善指令格式600包括以下欄位,下文按圖6A至圖6B中例示之次序列出該等欄位。結合上文之論述,在一實施例中,參考下文在圖6A至圖6B及圖7中提供的格式細節,可利用非記憶體存取指令類型605或記憶體存取指令類型620。可在下文描述之暫存器位址欄位644中識別讀取遮罩、輸入向量運算元及目的地之位址。在另一實施例中,在寫入遮罩欄位670中指定寫入遮罩。
格式欄位640-在此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,且因此識別呈向量友善指令格式的指令在指令串流中的出現。因而,此欄位在以下意義上來說係選擇性的:僅具有一般向量友善指令格式之指令集並不需要此欄位。
基本操作欄位642-其內容辨別不同的基本操作。
暫存器索引欄位644-其內容(直接或經由位址產生)指定來源及目的地運算元之位置,在暫存器或記憶體
中。此等包括充足數目個位元,以自PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N個暫存器。雖然在一實施例中,N可至多為三個來源及一個目的地暫存器,但替代性實施例可支援更多或更少的來源及目的地暫存器(例如,可支援至多兩個來源,其中此等來源中之一者亦可充當目的地,可支援至多三個來源,其中此等來源中之一者亦可充當目的地,可支援至多兩個來源及一個目的地)。
修飾符欄位646-其內容區分呈一般向量友善指令格式的指定記憶體存取之指令的出現與不指定記憶體存取之指令的出現;即,區分非記憶體存取605指令模板與記憶體存取620指令模板。記憶體存取操作讀取及/或寫入至記憶體階層(在一些情況下,使用暫存器中的值來指定來源及/或目的地位址),而非記憶體存取操作不讀取及/或寫入至記憶體階層。雖然在一實施例中此欄位亦在執行記憶體位址計算的三種不同方式之間進行選擇,但替代性實施例可支援執行記憶體位址計算的更多、更少或不同的方式。
擴增操作欄位650-其內容辨別除基本操作外還將執行多種不同操作中之哪一者。此欄位係內容脈絡特定的。在本發明之一實施例中,此欄位分成類別欄位668、α(alpha)欄位652及β(beta)欄位654。擴增操作欄位650允許在單個指令而不是2個、3個或4個指令中執行各組常見操作。
比例欄位660-其內容允許針按比例縮放索引欄
位之內容以用於記憶體位址產生(例如,針對使用2比例*索引+基址之位址產生)。
位移欄位662A-其內容被用作記憶體位址產生之部分(例如針對使用2比例*索引+基址+位移之位址產生)。
位移因數欄位662B(請注意,位移欄位662A緊靠在位移因數欄位662B上方的並列定位指示使用一個欄位或另一個欄位)-其內容被用作記憶體位址產生之部分;其指定位移因數,將按記憶體位址之大小(N)按比例縮放該位移因,其中N係記憶體存取中之位元組之數目(例如,針對使用2比例*索引+基址+按比例縮放後的位移的位址產生)。忽略冗餘的低位位元,且因此,將位移因數欄位之內容乘以記憶體運算元總大小(N)以便產生將用於計算有效位址的最終位移。N的值由處理器硬體在執行時間基於完整的運算碼欄位674(本文中稍後描述)及資料調處欄位654C予以判定。位移欄位662A及位移因數欄位662B在以下意義上來說係選擇性的:該等欄位不用於非記憶體存取605指令模板,及/或不同實施例可僅實施該兩個欄位中之一者或不實施該兩個欄位。
資料元件寬度欄位664-其內容辨別將使用許多資料元件寬度中之哪一者(在一些實施例中,針對所有指令;在其他實施例中,僅針對該等指令中之一些)。此欄位在以下意義上來說係選擇性的:若使用運算碼之某一態樣支援僅一個資料元件寬度及/或支援多個資料元件寬度,則不需要此欄位。
寫入遮罩欄位670-其內容以每資料元件位置為基礎控制目的地向量運算元中之該資料元件位置是否反映基本操作及擴增操作的結果。類別A指令模板支援合併-寫入遮蔽,而類別B指令模板支援合併-寫入遮蔽及歸零-寫入遮蔽兩者。在合併時,向量遮罩允許保護目的地中之任何元件集合,以免在任何操作(由基本操作及擴增操作指定)執行期間更新;在另一實施例中,在對應的遮罩位元為0時,保持目的地之每一元件的舊值。相反地,當歸零時,向量遮罩允許目的地中之任何元件集合在任何操作(由基本操作及擴增操作指定)執行期間被歸零;在一實施例中,在對應的遮罩位元為0值時,將目的地之一元件設定為0。此功能性之一子集係控制被執行之操作的向量長度(即,被修改之元件(自第一個至最後一個)之跨度)之能力;然而,被修改之元件不一定連續。因此,寫入遮罩欄位670允許部分向量運算,其中包括載入、儲存、算術、邏輯等。雖然所描述的本發明之實施例中,寫入遮罩欄位670的內容選擇許多寫入遮罩暫存器中之一者,其含有將使用之寫入遮罩(且因此,寫入遮罩欄位670的內容間接識別將執行之遮蔽),但替代性實施例改為或另外允許寫入遮罩欄位670的內容直接指定將執行之遮蔽。
立即欄位672-其內容允許指定立即。此欄位在以下意義上係選擇性的:在不支援立即的一般向量友善格式之實行方案中不存在此欄位,且在不使用立即的指令中不存在此欄位。
類別欄位668-其內容區分不同類別的指令。參看圖6A至圖6B,此欄位之內容在類別A指令與類別B指令之間進行選擇。在圖6A至圖6B中,使用圓角正方形來指示欄位中存在特定值(例如,在圖6A至圖6B中針對類別欄位668分別為類別A 668A及類別B 668B)。
類別A指令模板
在類別A非記憶體存取605指令模板的情況下,α欄位652被解譯為RS欄位652A,其內容辨別將執行不同擴增操作類型中之哪一者(例如,針對非記憶體存取、捨位型操作610指令模板及非記憶體存取、資料轉換型操作615指令模板,分別指定捨位652A.1及資料轉換652A.2),而β欄位654辨別將執行指定類型之操作中之哪一者。在非記憶體存取605指令模板的情況下,比例欄位660、位移欄位662A及位移比例欄位662B不存在。
非記憶體存取指令模板-完全捨位控制型操作
在非記憶體存取完全捨位控制型操作610指令模板中,β欄位654被解譯為捨位控制欄位654A,其內容提供靜態捨位。雖然在本發明之所描述實施例中,捨位控制欄位654A包括抑制所有浮點異常(SAE)欄位656及捨位操作控制欄位658,但替代性實施例可支援可將兩個此等概念編碼至同一欄位中或者僅具有此等概念/欄位中之一者或另一者(例如,可僅具有捨位操作控制欄位658)。
SAE欄位656-其內容辨別是否要停用異常事件報告;當SAE欄位656的內容指示啟用了抑制時,特定指
令不報告任何種類之浮點異常旗標且不提出任何浮點異常處置程式。
捨位操作控制欄位658-其內容辨別要執行一組捨位操作中之哪一者(例如,捨進(Round-up)、捨去(Round-down)、向零捨位(Round-towards-zero)及捨位至最近數值(Round-to-nearest))。因此,捨位操作控制欄位658允許以每指令為基礎改變捨位模式。在本發明之一實施例中,其中處理器包括用於指定捨位模式之控制暫存器,捨位操作控制欄位650的內容置換(override)該暫存器值。
非記憶體存取指令模板-資料轉換型操作
在非記憶體存取資料轉換型操作615指令模板中,β欄位654被解譯為資料轉換欄位654B,其內容辨別將執行許多資料轉換中之哪一者(例如,非資料轉換、拌和、廣播)。
在類別A記憶體存取620指令模板的情況下,α欄位652被解譯為收回提示(eviction hint)欄位652B,其內容辨別將使用收回提示中之哪一者(在圖6A中,針對記憶體存取、暫時625指令模板及記憶體存取、非暫時630指令模板,分別指定暫時652B.1及非暫時652B.2),而β欄位654被解譯為資料調處欄位654C,其內容辨別將執行許多資料調處操作(亦稱為原指令(primitive))中之哪一者(例如,非調處;廣播;來源的上轉換;及目的地的下轉換)。記憶體存取620指令模板包括比例欄位660,且選擇性地包括位移欄位662A或位移比例欄位662B。
向量記憶體指令在有轉換支援的情況下執行自記憶體的向量載入及至記憶體的向量儲存。如同常規向量指令一樣,向量記憶體指令以逐個資料元件的方式自記憶體傳遞資料/傳遞資料至記憶體,其中實際被傳遞之元件係由被選為寫入遮罩之向量遮罩的內容指定。
記憶體存取指令模板-暫時
暫時資料係可能很快被再使用以便足以受益於快取的資料。然而,此係提示,且不同處理器可以不同方式實施提示,其中包括完全忽略該提示。
記憶體存取指令模板-非暫時
非暫時資料係不可能很快被再使用以便足以受益於第一階快取記憶體中之快取的資料,且應被賦予優先權來收回。然而,此係提示,且不同處理器可以不同方式實施提示,其中包括完全忽略該提示。
類別B指令模板
在類別B指令模板的情況下,α欄位652被解譯為寫入遮罩控制(Z)欄位652C,其內容辨別由寫入遮罩欄位670控制之寫入遮蔽應為合併還是歸零。
在類別B非記憶體存取605指令模板的情況下,β欄位654之部分被解譯為RL欄位657A,其內容辨別將執行不同擴增操作類型中之哪一者(例如,針對非記憶體存取、寫入遮罩控制、部分捨位控制型操作612指令模板及非記憶體存取、寫入遮罩控制、VSIZE型操作617指令模板,分別指定捨位657A.1及向量長度(VSIZE)
657A.2),而β欄位654之剩餘部分辨別將執行指定類型之操作中之哪一者。在非記憶體存取605指令模板的情況下,比例欄位660、位移欄位662A及位移比例欄位662B不存在。
在非記憶體存取、寫入遮罩控制、部分捨位控制型操作610指令模板中,β欄位654之剩餘部分被解譯為捨位操作欄位659A,且異常事件報告被停用(特定指令不報告任何種類之浮點異常旗標且不提出任何浮點異常處置程式)。
捨位操作欄位659A-就像捨位操作欄位658一樣,其內容辨別要執行一組捨位操作中之哪一者(例如,捨進、捨去、向零捨位及捨位至最近數值)。因此,捨位操作控制欄位659A允許以每指令為基礎改變捨位模式。在本發明之一實施例中,其中處理器包括用於指定捨位模式之控制暫存器,捨位操作控制欄位650的內容置換該暫存器值。
在非記憶體存取、寫入遮罩控制、VSIZE型操作617指令模板中,β欄位654之剩餘部分被解譯為向量長度欄位659B,其內容辨別將對許多資料向量長度中之哪一者執行(例如,128、256或512個位元組)。
在類別B記憶體存取620指令模板的情況下,β欄位654之部分被解譯為廣播欄位657B,其內容辨別是否將執行廣播型資料調處操作,而β欄位654之剩餘部分被解譯為向量長度欄位659B。記憶體存取620指令模板包括比例欄位660,且選擇性地包括位移欄位662A或位移比例
欄位662B。
關於一般向量友善指令格式600,完整的運算碼欄位674被展示出為包括格式欄位640、基本操作欄位642及資料元件寬度欄位664。雖然展示出的一實施例中,完整的運算碼欄位674包括所有此等欄位,但在不支援所有此等欄位的實施例中,完整的運算碼欄位674不包括所有此等欄位。完整的運算碼欄位674提供運算碼(opcode)。
擴增操作欄位650、資料元件寬度欄位664及寫入遮罩欄位670允許以一般向量友善指令格式以每指令為基礎來指定此等特徵。
寫入遮罩欄位與資料元件寬度欄位的組合產生具型式之指令,因為該等指令允許基於不同資料元件寬度來應用遮罩。
在類別A及類別B中所建立的各種指令模板在不同情形中有益。在本發明之一些實施例中,不同處理器或處理器內的不同核心可僅支援類別A,僅支援類別B,或支援上述兩種類別。舉例而言,意欲用於通用計算的高效能通用亂序核心可僅支援類別B,主要意欲用於圖形及/或科學(通量)計算之核心可僅支援類別A,且意欲用於上述兩種計算的核心可支援上述兩種類別(當然,具有來自兩種類別之模板及指令的某種混合但不具有來自兩種類別之所有模板及指令的核心在本發明之範圍內)。單個處理器亦可包括多個核心,所有該等核心支援相同類別,或其中不同核心支援不同類別。舉例而言,在具有分開的圖形及通用
核心之處理器中,主要意欲用於圖形及/或科學計算之圖形核心中之一者可僅支援類別A,而通用核心中之一或多者可為僅支援類別B的高效能通用核心,其具有亂序執行及暫存器重新命名,意欲用於通用計算。不具有分開的圖形核心之另一處理器可包括支援類別A及類別B兩者的一或多個通用循序或亂序核心。當然,在本發明之不同實施例中,來自一個類別的特徵亦可實施於另一類別中。用高階語言撰寫之程式將被翻譯(例如,即時編譯或靜態編譯)成各種不同可執行形式,其中包括:1)僅具有目標處理器所支援執行之類別的指令之形式;或2)具有替代性常式且具有控制流碼之形式,其中該等常式係使用所有類別的指令之不同組合來撰寫的,該控制流碼基於當前正在執行該碼的處理器所支援之指令來選擇要執行的常式。
示範性特定向量友善指令格式
圖7係例示根據本發明之實施例之示範性特定向量友善指令格式的方塊圖。圖7展示出特定向量友善指令格式700,該格式在以下意義上係特定的:其指定欄位之位置、大小、解譯及次序以及彼等欄位中之一些的值。特定向量友善指令格式700可用來擴展x86指令集,且因此,該等欄位中之一些與現有x86指令集及其擴展(例如AVX)中所使用的欄位類似或相同。此格式保持與現有x86指令集以及擴展的前綴編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及立即欄位一致。從圖7之欄位例示圖7之欄位對映至該等欄位中。
應理解,雖然出於說明目的在一般向量友善指令格式600的情況下參考特定向量友善指令格式700來描述本發明之實施例,但除非主張,否則本發明不限於特定向量友善指令格式700。例如,一般向量友善指令格式600考量了各種欄位之各種可能大小,而特定向量友善指令格式700被示出為具有特定大小的欄位。藉由特定實例,雖然在特定向量友善指令格式700中將資料元件寬度欄位664說明為一個位元的欄位,但本發明不限於此(亦即,一般向量友善指令格式600考量了資料元件寬度欄位664之其他大小)。
一般向量友善指令格式600包括以下欄位,下文按圖7中例示之次序列出該等欄位。
EVEX前綴(位元組0-3)702-以四位元組形式予以編碼。
格式欄位640(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)係格式欄位640,且其含有0x62(在本發明之一實施例中,用來辨別向量友善指令格式的獨特值)。
第二至第四位元組(EVEX位元組1-3)包括提供特定能力之許多位元欄位。
REX欄位705(VEX位元組1,位元[7-5])由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)及657BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位
提供的功能性與對應的VEX位元欄位相同,且係使用1的補數形式予以編碼,亦即,ZMM0係編碼為1111B,ZMM15係編碼為0000B。指令之其他欄位如此項技術中已知的來編碼暫存器索引之下三個位元(rrr、xxx及bbb),因此藉由增添EVEX.R、EVEX.X及EVEX.B而形成Rrrr、Xxxx及Bbbb。
REX’欄位610-此係REX’欄位610之第一部分,且係用來編碼擴展式32暫存器組的上16或下16個暫存器之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在本發明之一實施例中,以位元反轉格式儲存此位元與如下文所指示之其他位元,以區別於(以熟知的x86 32位元模式)BOUND指令,其實際運算碼位元組為62,但在MOD R/M欄位(下文描述)中不接受MOD欄位中的值11;本發明之替代性實施例不以反轉格式儲存此位元與下文所指示之其他位元。使用值1來編碼下16個暫存器。換言之,藉由組合EVEX.R’、EVEX.R及來自其他欄位的其他RRR,形成R’Rrrr。
運算碼對映欄位715(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱式引導運算碼位元組(0F、0F 38或0F 3)。
資料元件寬度欄位664(EVEX位元組2,位元[7]-W)-係由符號EVEX.W表示。EVEX.W用來定義資料類型之細微度(大小)(32位元的資料元件或64位元的資料元件)。
EVEX.vvvv 720(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的作用可包括以下各者:1)EVEX.vvvv編碼以反轉(1的補數)形式指定的第一來源暫存器運算元,且針對具有兩個或兩個以上來源運算元的指令有效;2)EVEX.vvvv編碼針對某些向量移位以1的補數形式指定的目的地暫存器運算元;或3)EVEX.vvvv不編碼任何運算元,該欄位得以保留且應包含1111b。因此,EVEX.vvvv欄位720編碼以反轉(1的補數)形式儲存的第一來源暫存器指定符之4個低位位元。取決於指令,使用額外的不同EVEX位元欄位將指定符大小擴展成32個暫存器。
EVEX.U 668類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,則其指示類別A或EVEX.U0;若EVEX.U=1,則其指示類別B或EVEX.U1。
前綴編碼欄位625(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前綴編碼,且因此不需要該展開。
α欄位652(EVEX位元組3,位元[7]-EH;亦稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制及EVEX.N;亦由α說明)-如先前所描述,此欄位係內容脈絡特定的。
β欄位654(EVEX位元組3,位元[6:4]-SSS,亦稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦由βββ說明)-如先前所描述,此欄位係內容脈絡特定的。
REX’欄位610-此係REX’欄位之剩餘部分,且係可用來編碼擴展式32暫存器組的上16或下16個暫存器之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。以位元反轉格式儲存此位元。使用值1來編碼下16個暫存器。換言之,藉由組合EVEX.V’、EVEX.vvvv,形成V’VVVV。
寫入遮罩欄位670(EVEX位元組3,位元[2:0]-kkk)-其內容如先前所描述指定寫入遮罩暫存器中之暫存器的索引。在本發明之一實施例中,特定值EVEX.kkk=000之特殊作用係暗示不對特定指令使用寫入遮罩(此可以各種方式來實施,其中包括使用硬連線(hardwired)至所有硬體的寫入遮罩或繞過(bypass)遮蔽硬體之硬體)。
實際運算碼欄位730(位元組4)亦稱為運算碼位元組。在此欄位中指定運算碼之部分。
MOD R/M欄位740(位元組5)包括MOD欄位742、Reg欄位744及R/M欄位746。如先前所描述,MOD欄位742的內容區分記憶體存取操作與非記憶體存取操作。Reg欄位744之作用可概述為兩種情形:編碼目的地暫存器運算元或來源暫存器運算元,或者被視為運算碼擴展且不用來編碼任何指令運算元。R/M欄位746之作用可包括以下各者:編碼參考記憶體位址之指令運算元,或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、索引、基址(SIB)位元組(位元組6)-如先前所描述,比例欄位650的內容係用於記憶體位址產生。SIB.xxx 754及SIB.bbb 756-此等欄位之內容已在先前關於暫存器索引Xxxx及Bbbb提到。
移位欄位662A(位元組7-10)-當MOD欄位742含有10時,位元組7-10係移位欄位662A,且其與舊式32位元的位移(disp32)相同地起作用,且在位元組細微度上起作用。
位移因數欄位662B(位元組7)-當MOD欄位742含有01時,位元組7係位移因數欄位662B。此欄位之位置與舊式x86指令集8位元的位移(disp8)相同,其在位元組細微度上起作用。因為disp8經正負號擴展,所以disp8僅可解決在-128與127位元組之間的位移;就64個位元組的快取列(cache line)而言,disp8使用8個位元,該等位元
可被設定為僅四個實際有用的值-128、-64、0及64;因為常常需要更大範圍,所以使用disp32;然而,disp32需要4個位元組。與disp8及disp32相比,位移因數欄位662B係disp8之重新解譯;當使用位移因數欄位662B時,實際位移係由位移因數欄位的內容乘以記憶體運算元存取之大小(N)判定。此類型之位移被稱為disp8*N。此減少了平均指令長度(單個位元組用於位移,但具有大得多的範圍)。此壓縮位移係基於如下假設:有效位移係記憶體存取之細微度的倍數,且因此,不需要編碼位址位移之冗餘低位位元。換言之,位移因數欄位662B替代了舊式x86指令集8位元的位移。因此,位移因數欄位662B的編碼方式與x86指令集8位元的位移相同(因此ModRM/SIB編碼規則無變化),其中唯一例外為,disp8超載(overload)至disp8*N。換言之,編碼規則或編碼長度無變化,而僅僅係硬體對位移值的解譯有變化(硬體需要按記憶體運算元之大小來按比例縮放該位移以獲得逐個位元組的位址位移)。
立即欄位672如先前所描述而操作。
完整的運算碼欄位
圖7B係例示特定向量友善指令格式700的欄位之方塊圖,該等欄位組成根據本發明之一實施例之完整的運算碼欄位674。具體而言,完整的運算碼欄位674包括格式欄位640、基本操作欄位642及資料元件寬度(W)欄位664。基本操作欄位642包括前綴編碼欄位725、運算碼對映欄位715及實際運算碼欄位730。
暫存器索引欄位
圖7C係例示特定向量友善指令格式700的欄位之方塊圖,該等欄位組成根據本發明之一實施例之暫存器索引欄位644。具體而言,暫存器索引欄位644包括REX欄位705、REX’欄位710、MODR/M.reg欄位744、MODR/M.r/m欄位746、VVVV欄位720、xxx欄位754及bbb欄位756。
擴增操作欄位
圖7D係例示特定向量友善指令格式700的欄位之方塊圖,該等欄位組成根據本發明之一實施例之擴增操作欄位650。當類別(U)欄位668含有0時,其表示EVEX.U0(類別A 668A);當其含有1時,其表示EVEX.U1(類別B668B)。當U=0且MOD欄位742含有11(表示非記憶體存取操作)時,α欄位652(EVEX位元組3,位元[7]-EH)被解譯為rs欄位652A。當rs欄位652A含有1(捨位652A.1)時,β欄位654(EVEX位元組3,位元[6:4]-SSS)被解譯為捨位控制欄位654A。捨位控制欄位654A包括一個位元的SAE欄位656及兩個位元的捨位操作欄位658。當rs欄位652A含有0(資料轉換652A.2)時,β欄位654(EVEX位元組3,位元[6:4]-SSS)被解譯為三個位元的資料轉換欄位654B。當U=0且MOD欄位742含有00、01或10(表示記憶體存取操作)時,α欄位652(EVEX位元組3,位元[7]-EH)被解譯為收回提示(EH)欄位652B且β欄位654(EVEX位元組3,位元[6:4]-SSS)被解譯為三個位元的資料調處欄位654C。
當U=1時,α欄位652(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位652C。當U=1且MOD欄位742含有11(表示非記憶體存取操作)時,β欄位654之部分(EVEX位元組3,位元[4]-S0)被解譯為RL欄位657A;當RL欄位657A含有1(捨位657A.1)時,β欄位654之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨位操作欄位659A,而RL欄位657A含有0(VSIZE 657.A2)時,β欄位654之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位659B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位742含有00、01或10(表示記憶體存取操作)時,β欄位654(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位659B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位657B(EVEX位元組3,位元[4]-B)。
示範性暫存器架構
圖8係根據本發明之一實施例之暫存器架構800的方塊圖。在所說明之實施例中,有32個向量暫存器810,其寬度為512個位元;此等暫存器被稱為zmm0至zmm31。下16個zmm暫存器的低位256個位元覆疊在暫存器ymm0-16上。下16個zmm暫存器的低位128個位元(ymm暫存器的低位128個位元)覆疊在暫存器xmm0-15上。特定向量友善指令格式700如下表中所說明對此等覆疊暫存器檔案進行操作。
換言之,向量長度欄位659B在最大長度與一或多個其他較短長度之間進行選擇,其中每一此種較短長度係前一長度的一半長度;且不具有向量長度欄位659B的指令模板對最大向量長度進行操作。另外,在一實施例中,特定向量友善指令格式700之類別B指令模板對緊縮或純量單精度/雙精度浮點資料及緊縮或純量整數資料進行操作。純量操作係對zmm/ymm/xmm暫存器中之最低位資料元件位置執行的操作;較高位資料元件位置保持與其在指令之前相同或歸零,此取決於實施例。
寫入遮罩暫存器815-在所說明之實施例中,有8個寫入遮罩暫存器(k0至k7),每一寫入遮罩暫存器的大小為64個位元。在替代實施例中,寫入遮罩暫存器815的大小為16個位元。如先前所描述,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當通常將指示k0
之編碼被用於寫入遮罩時,其選擇固線式寫入遮罩0xFFFF,從而有效停用對該指令之寫入遮蔽。
通用暫存器825-在所說明之實施例中,有十六個64位元的通用暫存器,該等暫存器與現有的x86定址模式一起用來定址記憶體運算元。藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15來參考此等暫存器。
純量浮點堆疊暫存器檔案(x87堆疊)845,上面混疊有MMX緊縮整數平板暫存器檔案850-在所說明之實施例中,x87堆疊係八個元件的堆疊,用來使用x87指令集擴展對32/64/80個位元的浮點資料執行純量浮點運算;而MMX暫存器用來對64個位元的緊縮整數資料執行運算以及保存運算元,該等運算元係用於在MMX暫存器與XMM暫存器之間執行的一些運算。
本發明之替代性實施例可使用更寬或更窄的暫存器。另外,本發明之替代性實施例可使用更多、更少或不同的暫存器檔案或暫存器。
示範性核心架構、處理器及電腦架構
可出於不同目的以不同方式且在不同處理器中實施處理器核心。舉例而言,此類核心的實行方案可包括:1)意欲用於通用計算的通用循序核心;2)意欲用於通用計算的高效能通用亂序核心;3)主要意欲用於圖形及/或科學(通量)計算的專用核心。不同處理器之實行方案可包括:1)CPU,其包括意欲用於通用計算的一或多個通用循序核心
及/或意欲用於通用計算的一或多個通用亂序核心;以及2)共處理器,其包括主要意欲用於圖形及/或科學(通量)的一或多個專用核心。此等不同處理器導致不同電腦系統架構,該等架構可包括:1)共處理器在與CPU分離之晶片上;2)共處理器與CPU在同一封裝中,但在單獨的晶粒上;3)共處理器與CPU在同一晶粒上(在此情況下,此共處理器有時被稱為專用邏輯,諸如整合型圖形及/或科學(通量)邏輯,或被稱為專用核心);以及4)系統單晶片(system on a chip),其在與所描述CPU(有時被稱為應用核心或應用處理器)相同的晶粒上包括上述共處理器及額外功能性。接下來描述示範性核心架構,後續接著對示範性處理器及電腦架構的描述。
示範性核心架構
循序及亂序核心方塊圖
圖9A係例示根據本發明之實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名亂序發佈/執行管線。圖9B係例示如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架構核心,上述兩者將包括於根據本發明之實施例的處理器中。圖9A至圖9B之實線方框例示循序管線及循序核心,虛線方框之選擇性增添說明暫存器重新命名亂序發佈/執行管線及核心。考慮到循序態樣係亂序態樣之子集,將描述亂序態樣。
在圖9A中,處理管線900包括擷取級段902、
長度解碼級段904、解碼級段906、分配級段908、重新命名級段910、排程(亦稱為分派或發佈)級段912、暫存器讀取/記憶體讀取級段914、執行級段916、回寫/記憶體寫入級段918、異常處置級段922及確認級段924。
圖9B示出處理器核心990,其包括耦接至執行引擎單元950之前端單元930,且執行引擎單元950及前端單元930兩者皆耦接至記憶體單元970。處理器核心990可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心,或者混合式或替代性核心類型。作為另一選擇,核心990可為專用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或類似者。
前端單元930包括耦接至指令快取記憶體單元934之分支預測單元932,指令快取記憶體單元934耦接至指令轉譯後備緩衝器(TLB)936,指令TLB 936耦接至指令擷取單元938,指令擷取單元938耦接至解碼單元940。解碼單元940(或解碼器)可解碼指令,且產生一或多個微操作、微碼進入點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。可使用各種不同機構來實施解碼單元940。合適的機構之實例包括(但不限於)查找表、硬體實行方案、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心990包括儲存用於某些巨集指令(macroinstruction)之微碼的微碼ROM或其他
媒體(例如在解碼單元940中,或者在前端單元930內)。解碼單元940耦接至執行引擎單元950中的重新命名/分配器單元952。
執行引擎單元950包括重新命名/分配器單元952,其耦接至引退(retirement)單元954及一或多個排程器單元956之集合。排程器單元956表示任何數目個不同排程器,其中包括保留站、中央指令視窗等。排程器單元956耦接至實體暫存器檔案單元958。實體暫存器檔案單元958中之每一者表示一或多個實體暫存器檔案,其中不同的實體暫存器檔案單元儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標器,即下一個待執行指令的位址)等。在一實施例中,實體暫存器檔案單元958包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構性向量暫存器、向量遮罩暫存器及通用暫存器。引退單元954與實體暫存器檔案單元958重疊,以說明可實施暫存器重新命名及亂序執行的各種方式(例如,使用重新排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器對映及暫存器集區)。引退單元954及實體暫存器檔案單元958耦接至執行叢集960。執行叢集960包括一或多個執行單元962之集合及一或多個記憶體存取單元964之集合。執行單元962可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮
點、向量整數、向量浮點)進行執行。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元956、實體暫存器檔案單元958及執行叢集960被示出為可能係多個,因為某些實施例針對某些類型之資料/運算產生單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集;且在單獨的記憶體存取管線的情況下,所實施的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元964)。亦應理解,在使用單獨的管線之情況下,此等管線中之一或多者可為亂序發佈/執行而其餘管線可為循序的。
記憶體存取單元964之集合耦接至記憶體單元970,記憶體單元970包括耦接至資料快取記憶體單元974的資料TLB單元972,資料快取記憶體單元974耦接至2階(L2)快取記憶體單元976。在一示範性實施例中,記憶體存取單元964可包括載入單元、儲存位址單元及儲存資料單元,其中每一者耦接至記憶體單元970中的資料TLB單元972。指令快取記憶體單元934進一步耦接至記憶體單元970中的2階(L2)快取記憶體單元976。L2快取記憶體單元976耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由實例,示範性暫存器重新命名亂序發佈/執
行核心架構可將管線900實施如下:1)指令擷取938執行擷取級段902及長度解碼級段904;2)解碼單元940執行解碼級段906;3)重新命名/分配單元952執行分配級段908及重新命名級段910;4)排程器單元956執行排程級段912;5)實體暫存器檔案單元958及記憶體單元970執行暫存器讀取/記憶體讀取級段914;執行叢集960執行執行級段916;6)記憶體單元970及實體暫存器檔案單元958執行回寫/記憶體寫入級段918;7)異常處置級段922中可涉及各種單元;及8)引退單元954及實體暫存器檔案單元958執行確認級段924。
核心990可支援一或多個指令集(例如,x86指令集(以及一些擴展,較新版本已新增該等擴展);MIPSTechnologie公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(以及選擇性的額外擴展,諸如NEON)),其中包括本文中所描述之指令。在一實施例中,核心990包括支援緊縮資料指令集擴展(例如,AVX1、AVX2及/或先前所描述之某種形式的一般向量友善指令格式(U=0及/或U=1))的邏輯,進而允許使用緊縮資料來執行許多多媒體應用所使用的操作。
應理解,該核心可支援多執行緒處理(multithreading)(執行操作或執行緒之兩個或兩個以上並行集合),且可以各種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理的各執行緒中之每一者
提供一邏輯核心)或上述各者之組合(例如,經時間切割之擷取及解碼以及隨後同時的多執行緒處理,諸如在Intel®超多執行緒處理(Hyperthreading)技術中)。
雖然在亂序執行的情況下描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所說明實施例亦包括單獨的指令與資料快取記憶體單元934/974以及共享的L2快取記憶體單元976,但替代性實施例可具有用於指令與資料兩者的單個內部快取記憶體,諸如1階(L1)內部快取記憶體或多階內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,外部快取記憶體在核心及/或處理器外部。或者,所有快取記憶體可在核心及/或處理器外部。
特定示範性循序核心架構
圖10A至圖10B例示更特定的示範性循序核心架構之方塊圖,該核心將係晶片中的若干邏輯區塊(包括相同類型及/或不同類型的其他核心)中之一者。邏輯區塊經由高頻寬互連網路(例如環形網路)與一些固定功能邏輯、記憶體I/O介面及其他必要的I/O邏輯通訊,此取決於應用。
圖10A係根據本發明之實施例的單個處理器核心及其至晶粒上互連網路1002的連接以及其2階(L2)快取記憶體局域子集1004之方塊圖。在一實施例中,指令解碼器1000支援x86指令集與緊縮資料指令集擴展。L1快取記憶體1006允許對快取記憶體進行低延時存取,存取至純量單元及向量單元中。雖然在一實施例中(為了簡化設計),
純量單元1008及向量單元1010使用單獨的暫存器組(分別使用純量暫存器1012及向量暫存器1014),且在純量單元1008與向量單元1010之間傳遞的資料被寫入至記憶體,然後自1階(L1)快取記憶體1006被讀回,但本發明之替代性實施例可使用不同方法(例如,使用單個暫存器組,或包括允許在兩個暫存器檔案之間傳遞資料而無需寫入及讀回的通訊路徑)。
L2快取記憶體局域子集1004係全域L2快取記憶體之部分,全域L2快取記憶體分成單獨的局域子集,每個處理器核心一個局域子集。每一處理器核心具有至其自有之L2快取記憶體局域子集1004的直接存取路徑。處理器核心所讀取之資料係儲存於其自有之L2快取記憶體子集1004中且可被快速存取,此存取係與其他處理器核心存取其自有之局域L2快取記憶體子集1004並行地進行。由處理器核心所寫入之資料係儲存於其自有之L2快取記憶體子集1004中且必要時自其他子集清除掉。環形網路確保共享資料之同調性。環形網路係雙向的,以允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理在晶片內彼此通訊。每一環形資料路徑在每個方向上的寬度係1012個位元。
圖10B係根據本發明之實施例的圖10A中之處理器核心之部分的展開圖。圖10B包括L1快取記憶體1004之L1資料快取記憶體1006A部分,以及關於向量單元1010及向量暫存器1014之更多細節。具體而言,向量單元1010
係寬度為16之向量處理單元(VPU)(參見寬度為16之ALU 1028),其執行整數、單精度浮點數及雙精度浮點數指令中之一或多者。VPU支援由拌和單元1020對暫存器輸入進行拌和、由數值轉換單元1022A-B進行數值轉換,以及由複製單元1024對記憶體輸入進行複製。寫入遮罩暫存器1026允許預測所得向量寫入。
具有整合型記憶體控制器及圖形元件的處理器
圖11係根據本發明之實施例之處理器1100的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件。圖11中的實線方框例示處理器1100,其具有單個核心1102A、系統代理1110、一或多個匯流排控制器單元1116之集合,而虛線方框之選擇性增添例示替代性處理器1100,其具有多個核心1102A-N、位於系統代理單元1110中的一或多個整合型記憶體控制器單元1114之集合,以及專用邏輯1108。
因此,處理器1100之不同實行方案可包括:1)CPU,其中專用邏輯1108係整合型圖形及/或科學(通量)邏輯(其可包括一或多個核心),且核心1102A-N係一或多個通用核心(例如,通用循序核心、通用亂序核心、上述兩者之組合);2)共處理器,其中核心1102A-N係大量主要意欲用於圖形及/或科學(通量)之專用核心;以及3)共處理器,其中核心1102A-N係大量通用循序核心。因此,處理器1100可為通用處理器、共處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖
形處理單元)、高通量多重整合核心(MIC)共處理器(包括30個或更多核心)、嵌入式處理器或類似者。處理器可實施於一或多個晶片上。處理器1100可為一或多個基板之部分及/或可使用許多處理技術(例如BiCMOS、CMOS或NMOS)中之任一者將處理器1100實施於一或多個基板上。
記憶體階層包括該等核心內的一或多階快取記憶體、一或多個共享快取記憶體單元1106之集合、耦接至整合型記憶體控制器單元1114之集合的外部記憶體(圖中未示)。共享快取記憶體單元1106之集合可包括一或多個中階快取記憶體,諸如2階(L2)、3階(L3)、4階(L4),或其他階快取記憶體、末階快取記憶體(LLC),及/或上述各者之組合。雖然在一實施例中,環式互連單元1112對整合型圖形邏輯1108、共享快取記憶體單元1106之集合及系統代理單元1110/整合型記憶體控制器單元1114進行互連,但替代性實施例可使用任何數種熟知技術來互連此等單元。在一實施例中,在一或多個快取記憶體單元1106與核心1102A-N之間維持同調性。
在一些實施例中,核心1102A-N中之一或多者能夠進行多執行緒處理。系統代理1110包括協調並操作核心1102A-N之彼等組件。系統代理單元1110可包括,例如,功率控制單元(PCU)及顯示單元。PCU可為調節核心1102A-N及整合型圖形邏輯1108之功率狀態所需要的邏輯及組件,或者包括上述邏輯及組件。顯示單元係用於驅動一或多個外部已連接顯示器。
核心1102A-N就架構指令集而言可為同質的或異質的;即,核心1102A-N中之兩者或兩者以上可能能夠執行同一指令集,而其他核心可能僅能夠執行該指令集之子集或不同的指令集。
示範性電腦架構
圖12至圖15係示範性電腦架構之方塊圖。此項技術中已知的關於以下各者之其他系統設計及組配亦適合:膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器(network hub)、交換器(switch)、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒(set-top box)、微控制器、行動電話、攜帶型媒體播放器、手持式裝置,以及各種其他電子裝置。一般而言,能夠併入如本文中所揭示之處理器及/或其他執行邏輯的多種系統或電子裝置通常適合。
現在參考圖12,所展示為根據本發明之一實施例之系統1200的方塊圖。系統1200可包括一或多個處理器1210、1215,該等處理器耦接至控制器集線器1220。在一實施例中,控制器集線器1220包括圖形記憶體控制器集線器(GMCH)1290及輸入/輸出集線器(IOH)1250(上述兩者可位於單獨的晶片上);GMCH 1290包括記憶體控制器及圖形控制器,記憶體1240及共處理器1245耦接至該等控制器;IOH 1250將輸入/輸出(I/O)裝置1260耦接至GMCH 1290。或者,記憶體控制器及圖形控制器中之一者或兩者整合於(如本文中所描述之)處理器內,記憶體1240及共處
理器1245直接耦接至處理器1210,且控制器集線器1220與IOH 1250位於單個晶片中。
圖12中用間斷線表示額外處理器1215之可選擇性質。每一處理器1210、1215可包括本文中所描述之處理核心中之一或多者且可為處理器1100之某一版本。
記憶體1240可為,例如,動態隨機存取記憶體(DRAM)、相位變化記憶體(PCM),或上述兩者之組合。對於至少一個實施例,控制器集線器1220經由以下各者與處理器1210、1215通訊:諸如前端匯流排(FSB)之多分支匯流排(multi-drop bus)、諸如快速路徑互連(QuickPath Interconnect;QPI)之點對點介面,或類似連接1295。
在一實施例中,共處理器1245係專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。在一實施例中,控制器集線器1220可包括整合型圖形加速器。
就優點量度範圍而言,實體資源1210與1215之間可能有各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性及類似者。
在一實施例中,處理器1210執行控制一般類型資料處理操作的指令。共處理器指令可嵌入該等指令內。處理器1210認定此等共處理器指令係應由已附接之共處理器1245執行的類型。因此,處理器1210在共處理器匯流排或其他互連上發佈此等共處理器指令(或表示共處理器指令的控制信號)至共處理器1245。共處理器1245接受並
執行接收到之共處理器指令。
現在參考圖13,所展示為根據本發明之一實施例之第一更特定的示範性系統1300的方塊圖。如圖13中所示,多處理器系統1300係點對點互連系統,且包括第一處理器1370及第二處理器1380,該等處理器經由點對點互連1350予以耦接。處理器1370及1380中之每一者可為處理器1100之某一版本。在本發明之一實施例中,處理器1370及1380分別為處理器1210及1215,而共處理器1338為共處理器1245。在另一實施例中,處理器1370及1380分別為處理器1210共處理器1245。
所展示處理器1370及1380分別包括整合型記憶體控制器(IMC)單元1372及1382。處理器1370亦包括點對點(P-P)介面1376及1378,作為其匯流排控制器單元的部分;類似地,第二處理器1380包括P-P介面1386及1388。處理器1370、1380可使用P-P介面電路1378、1388經由點對點(P-P)介面1350交換資訊。如圖13中所示,IMC 1372及1382將處理器耦接至各別記憶體,亦即,記憶體1332及記憶體1334,該等記憶體可為局部地附接至各別處理器之主記憶體的部分。
處理器1370、1380各自可使用點對點介面電路1376、1394、1386、1398經由個別P-P介面1352、1354與晶片組1390交換資訊。晶片組1390可選擇性地經由高效能介面1339與共處理器1338交換資訊。在一實施例中,共處理器1338係專用處理器,諸如高通量MIC處理器、
網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(圖中未示),而該共享快取記憶體經由P-P互連與該等處理器連接,以使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之局域快取記憶體資訊儲存在該共享快取記憶體中。
晶片組1390可經由介面1396耦接至第一匯流排1316。在一實施例中,第一匯流排1316可為周邊組件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖13中所示,各種I/O裝置1314以及匯流排橋接器1318可耦接至第一匯流排1316,匯流排橋接器1318將第一匯流排1316耦接至第二匯流排1320。在一實施例中,一或多個額外處理器1315(諸如,共處理器、高通量MIC處理器、GPGPU、加速器(諸如,圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列,或任何其他處理器)耦接至第一匯流排1316。在一實施例中,第二匯流排1320可為低針腳數(LPC)匯流排。各種裝置可耦接至第二匯流排1320,其中包括,例如,鍵盤及/或滑鼠1322、通訊裝置1327,以及儲存單元1328(諸如磁碟機或其他大容量儲存裝置),在一實施例中,儲存單元1328可包括指令/程式碼及資料1330。此外,音訊I/O 1324可耦接至第二匯流排1320。請注意,其他架構係可能的。例如,代替圖13之點對點架
構,系統可實施多分支匯流排或其他此種架構。
現在參考圖14,所展示為根據本發明之一實施例之第二更特定的示範性系統1400的方塊圖。圖13及圖14中的相似元件帶有相似參考數字,且圖14已省略圖13之某些態樣以避免混淆圖14之態樣。
圖14例示處理器1370、1380分別可包括整合型記憶體及I/O控制邏輯(「CL」)1372及1382。因此,CL 1372及1382包括整合型記憶體控制器單元且包括I/O控制邏輯。圖14例示不僅記憶體1332、1334耦接至CL 1372、1382,而且I/O裝置1414耦接至控制邏輯1372、1382。舊式I/O裝置1415耦接至晶片組1390。
現在參考圖15,所展示為根據本發明之一實施例之SoC 1500的方塊圖。圖11中的類似元件帶有相似參考數字。此外,虛線方框係更先進SoC上之選擇性特徵。在圖15中,互連單元1502耦接至以下各者:應用處理器1510,其包括一或多個核心202A-N之集合及共享快取記憶體單元1106;系統代理單元1110;匯流排控制器單元1116;整合型記憶體控制器單元1114;一或多個共處理器1520之集合,其可包括整合型圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(DMA)單元1532;以及用於耦接至一或多個外部顯示器的顯示單元1540。在一實施例中,共處理器1520包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器或類
似者。
本文中揭示之機構的實施例可硬體、軟體、韌體或者此類實施方法之組合來實施。本發明之實施例可實施為在可規劃系統上執行之電腦程式或程式碼,可規劃系統包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置及至少一個輸出裝置。
可將程式碼(諸如圖13中例示之程式碼1330)應用於輸入指令,用來執行本文中所描述之功能且產生輸出資訊。可將輸出資訊以已知方式應用於一或多個輸出裝置。出於本申請案之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可以高階程序性或物件導向式程式設計語言來實施,以便與處理系統通訊。必要時,程式碼亦可以組合語言或機器語言來實施。事實上,本文中所描述之機構的範疇不限於任何特定的程式設計語言。在任何情況下,該語言可為編譯語言或解譯語言。
至少一個實施例之一或多個態樣可藉由儲存於機器可讀媒體上之代表性指令來實施,機器可讀媒體表示處理器內的各種邏輯,該等指令在由機器讀取時使機器製造邏輯來執行本文中所描述之技術。此類表示(「稱為IP核心」)可儲存於有形的機器可讀媒體上,且可供應給各種用戶端或製造設施以載入至實際上製造該邏輯或處理器的
製造機中。
此等機器可讀儲存媒體可包括(但不限於)由機器或裝置製造的非暫時性有形物品配置,其中包括:儲存媒體,諸如硬碟、任何其他類型之碟片(包括軟碟片、光碟、光碟片-唯讀記憶體(CD-ROM)、可重寫光碟片(CD-RW)及磁光碟)、半導體裝置(諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、相位變化記憶體(PCM)、磁性或光學卡),或者適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)之設計資料的非暫時性有形機器可讀媒體,其中設計資料定義本文中所描述之結構、電路、裝置、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
仿真(包括二進位轉譯、程式碼漸變(code morphing)等)
在一些情況下,可使用指令轉換器將指令自來源指令集轉換成目標指令集。例如,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、漸變、仿真或以其他方式轉換成將由核心處理的一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可位於處理器上、位於處理器外部,或部分位於處理器上而部分位於處理器外部。
圖16係對照根據本發明之實施例之軟體指令轉換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所例示之實施例中,指令轉換器係軟體指令轉換器,但指令轉換器或者可以軟體、韌體硬體、或其各種組合來實施。圖16展示出,可使用x86編譯器1604來編譯用高階語言1602撰寫的程式以產生x86二進位碼1606,x86二進位碼1606自然可由具有至少一個x86指令集核心之處理器1616執行。具有至少一個x86指令集核心之處理器1616表示可執行與具有至少一個x86指令集核心之Intel處理器大體相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分或(2)旨在在具有至少一個x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以便達成與具有至少一個x86指令集核心之Intel處理器大體相同的結果。x86編譯器1604表示可操作以產生x86二進位碼1606(例如目標碼)之編譯器,其中x86二進位碼1606在經額外連結處理或未經額外連結處理的情況下可在具有至少一個x86指令集核心之處理器1616上執行。類似地,圖16展示出,可使用替代性指令集編譯器1608來編譯用高階語言1602撰寫的程式以產生替代性指令集二進位碼1610,替代性指令集二進位碼1610自然可由不具有至少一個x86指令集核心之處理器1614(例如,具有多個核心的處理器,該等核心執行MIPS Technologie公司(Sunnyvale,CA)
之MIPS指令集,及/或該等核心執行ARM Holdings公司(Sunnyvale,CA)之ARM指令集)執行。使用指令轉換器1612將x86二進位碼1606轉換成自然可由不具有一個x86指令集核心之處理器1614執行的碼。此轉換後的碼不可能與替代性指令集二進位碼1610相同,因為能夠實現此操作的指令轉換器很難製作,然而,轉換後的碼將完成一般操作且由來自替代性指令集之指令構成。因此,指令轉換器1612表示經由仿真、模擬或任何其他處理程序來允許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼1606的軟體、韌體、硬體或其組合。
401_I‧‧‧第一輸入運算元/輸入向量
402_I‧‧‧遮罩層
403_I‧‧‧結果向量/結果
402_I_1‧‧‧遮罩元件
403_I_1‧‧‧結果元件
Claims (20)
- 一種裝置,其包含:指令執行邏輯電路,其具有:輸入向量元件路由電路,其對於三個不同指令中之每一者實行以下操作:對於多個輸出向量元件位置中之每一者,安排來自多個輸入向量元件位置中之一者的一輸入向量元件之路由至一輸出向量元件位置中,該等多個輸入向量元件位置可利用來作為該輸出向量元件之來源,該輸出向量元件及該等輸入向量元件位置中之每一位置為用於該等三個不同指令之三個可利用的位元寬度中之一者;以及,遮罩層電路,其耦接至該輸入向量元件路由電路以遮罩由該輸入向量路由元件電路所產生之一資料結構,該遮罩層電路係設計來以對應於該等三個可利用的位元寬度之細微度之三個不同階來遮罩。
- 如申請專利範圍第1項之裝置,其中該輸入向量元件路由電路係設計來對於該等三個可利用的位元寬度中之每一者執行:安排來自該輸入向量之全部輸入向量位置的該輸入向量元件之路由。
- 如申請專利範圍第2項之裝置,其中該輸入向量元件路由電路係進一步設計來對於除該等三個不同指令之外的額外指令實行以下操作: 對於多個輸出向量元件位置中之每一者,安排來自多個輸入向量元件位置中之一者的一輸入向量元件之路由至一輸出向量元件位置中,該等多個輸入向量元件位置可利用來作為該輸出向量元件之來源,該等多個輸入向量位置對應於小於該輸入向量的該輸入向量之一分段。
- 如申請專利範圍第3項之裝置,其中:對於該等額外指令中之一第一者,該輸出向量元件及該等輸入向量元件位置中之每一位置係為該等三個可利用的位元寬度中之一者;且對於該等額外指令中之一第二者,該輸出向量元件及該等輸入向量元件位置中之每一位置係為該三個可利用的位元寬度中之另一者。
- 如申請專利範圍第4項之裝置,其中用於該等額外指令中之該第一者之該分段及用於該等額外指令中之該第二者之該分段為相同大小。
- 如申請專利範圍第5項之裝置,其中用於該等第一及第二額外指令之該分段為用於該等指令中任何指令之一最大結果向量大小的四分之一。
- 如申請專利範圍第1項之裝置,其中該輸入向量元件路由電路係進一步設計來對於除該等三個不同指令之外的額外指令實行以下操作:對於多個輸出向量元件位置中之每一者,安排來自多個輸入向量元件位置中之一者的一輸入向量元件之 路由至一輸出向量元件位置中,該等多個輸入向量元件位置可利用來作為該輸出向量元件之來源,該等多個輸入向量位置對應於小於該輸入向量的該輸入向量之一部分,且該等可利用的輸入向量元件在該輸入向量內彼此不相鄰。
- 一種方法,其包含下列步驟:藉由透過一相同指令執行管線來執行指令以實行以下操作:在執行第一、第二及第三指令中,對於第一、第二及第三向量元件大小中之每一者:安排來自多個輸入向量元件位置中之一者的一輸入向量元件之路由至一輸出向量元件位置中,該等多個輸入向量元件位置可利用來作為用於多個輸出向量元件位置中之每一者的該輸出向量元件之來源;以及,以對應於第一、第二及第三向量元件大小之一細微度遮罩該路由之個別結果。
- 如申請專利範圍第8項之方法,其中該等輸入向量元件位置對應於該輸入向量之全部輸入向量位置。
- 如申請專利範圍第9項之方法,其進一步包含分別對於該等第一及第二向量元件大小執行第四及第五指令之步驟,該等第四及第五指令包括安排來自多個輸入向量元件位置中之一者的一輸入向量元件之路由至一輸出向量元件位置中,該等多個輸入向量元件位置可利用來作為用於多個輸出向量元件位置中之每一者的該輸出 向量元件之來源,其中,可利用來作為該輸出向量元件之來源的該等輸入向量元件位置對應於小於該輸入向量的該輸入向量之一分段。
- 如申請專利範圍第9項之方法,其進一步包含分別對於該等第一及第二向量元件大小執行第六及第七指令之步驟,該等第六及第七指令包括安排來自多個輸入向量元件位置中之一者的一輸入向量元件之路由至一輸出向量元件位置中,該等多個輸入向量元件位置可利用來作為用於多個輸出向量元件位置中之每一者的該輸出向量元件之來源,其中,可利用來作為該輸出向量元件之來源的該等輸入向量元件位置對應於小於該輸入向量的該輸入向量之一部分,且該等輸入向量元件位置在該輸入向量內彼此不相鄰。
- 如申請專利範圍第11項之方法,其中該等第一及第二向量元件大小分別為32及64位元。
- 如申請專利範圍第8項之方法,其中該等第一、第二及第三向量元件大小分別為16、32及64位元。
- 如申請專利範圍第8項之方法,其中一最大輸入向量大小為512位元。
- 一種裝置,其包含:指令執行邏輯電路,其具有:輸入向量元件路由電路,其對於三個不同指令中之每一者實行以下操作:對於多個輸出向量元件位置中之每一者,安排來自多個輸入向量元件位置中之一者的一 輸入向量元件之路由至一輸出向量元件位置中,該等多個輸入向量元件位置可利用來作為該輸出向量元件之來源,該輸出向量元件及該等輸入向量元件位置中之每一位置為用於該三個不同指令之三個可利用的位元寬度中之一者,一索引向量對於該等指令中之一第一者指定來自該輸入向量之元件至該輸出向量之路由,一即時運算元對於該等指令中之一第二者指定來自該輸入向量之元件至該輸出向量之路由;以及,遮罩層電路,其耦接至該輸入向量元件路由電路以遮罩由該輸入向量路由元件電路所產生之一資料結構,該遮罩層電路係設計來以對應於該等三個可利用的位元寬度之細微度之三個不同階來遮罩。
- 如申請專利範圍第15項之裝置,其中該輸入向量元件路由電路係設計來對於該等三個可利用的位元寬度中之每一者執行:安排來自該輸入向量之全部輸入向量位置的該輸入向量元件之路由。
- 如申請專利範圍第16項之裝置,其中該輸入向量元件路由電路係進一步設計來對於除該等三個不同指令之外的額外指令實行以下操作:對於多個輸出向量元件位置中之每一者,安排來自多個輸入向量元件位置中之一者的一輸入向量元件之路由至一輸出向量元件位置中,該等多個輸入向量元件位置可利用來作為該輸出向量元件之來源,該等多個輸 入向量位置對應於小於該輸入向量的該輸入向量之一分段。
- 如申請專利範圍第17項之裝置,其中:對於該等額外指令中之一第一者,該輸出向量元件及該等輸入向量元件位置中之每一位置係為該等三個可利用的位元寬度中之一者;且對於該等額外指令中之一第二者,該輸出向量元件及該等輸入向量元件位置中之每一位置係為該三個可利用的位元寬度中之另一者。
- 如申請專利範圍第18項之裝置,其中,用於該等額外指令中之該第一者的該分段及用於該等額外指令中之該第二者的該分段為相同大小。
- 如申請專利範圍第16項之裝置,其中該等位元寬度中之一者為32位元,且該等位元寬度中之另一者為64位元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067210 WO2013095637A1 (en) | 2011-12-23 | 2011-12-23 | Apparatus and method of improved permute instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342005A true TW201342005A (zh) | 2013-10-16 |
TWI481991B TWI481991B (zh) | 2015-04-21 |
Family
ID=48669275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101149313A TWI481991B (zh) | 2011-12-23 | 2012-12-22 | 改良型排列指令之裝置及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9658850B2 (zh) |
CN (2) | CN104011616B (zh) |
TW (1) | TWI481991B (zh) |
WO (1) | WO2013095637A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831335A (zh) | 2011-12-23 | 2020-10-27 | 英特尔公司 | 经改进的插入指令的装置和方法 |
CN107220029B (zh) | 2011-12-23 | 2020-10-27 | 英特尔公司 | 掩码置换指令的装置和方法 |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
CN104115114B (zh) | 2011-12-23 | 2018-06-12 | 英特尔公司 | 经改进的提取指令的装置和方法 |
US10445092B2 (en) * | 2014-12-27 | 2019-10-15 | Intel Corporation | Method and apparatus for performing a vector permute with an index and an immediate |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US10467006B2 (en) * | 2015-12-20 | 2019-11-05 | Intel Corporation | Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor |
US20200210188A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods for performing matrix row- and column-wise permute instructions |
US12112167B2 (en) | 2020-06-27 | 2024-10-08 | Intel Corporation | Matrix data scatter and gather between rows and irregularly spaced memory locations |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0731669B2 (ja) | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
US5524256A (en) | 1993-05-07 | 1996-06-04 | Apple Computer, Inc. | Method and system for reordering bytes in a data stream |
US6058465A (en) | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US5832288A (en) * | 1996-10-18 | 1998-11-03 | Samsung Electronics Co., Ltd. | Element-select mechanism for a vector processor |
US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US7133040B1 (en) | 1998-03-31 | 2006-11-07 | Intel Corporation | System and method for performing an insert-extract instruction |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US6191606B1 (en) | 1998-09-10 | 2001-02-20 | Intel Corporation | Method and apparatus for reducing standby leakage current using input vector activation |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6446198B1 (en) | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
WO2001089098A2 (en) * | 2000-05-05 | 2001-11-22 | Lee Ruby B | A method and system for performing permutations with bit permutation instructions |
WO2001098898A1 (en) | 2000-06-21 | 2001-12-27 | Bops, Inc. | Methods and apparatus for indirect vliw memory allocation |
US7237097B2 (en) * | 2001-02-21 | 2007-06-26 | Mips Technologies, Inc. | Partial bitwise permutations |
US7467287B1 (en) | 2001-12-31 | 2008-12-16 | Apple Inc. | Method and apparatus for vector table look-up |
US20100274988A1 (en) | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
JP3772976B2 (ja) | 2002-05-22 | 2006-05-10 | ソニー株式会社 | プロセッサ、エンコーダ、デコーダ及び電子機器 |
US7487502B2 (en) | 2003-02-19 | 2009-02-03 | Intel Corporation | Programmable event driven yield mechanism which may activate other threads |
US7085942B2 (en) | 2003-05-21 | 2006-08-01 | Agilent Technologies, Inc. | Method and apparatus for defining an input state vector that achieves low power consumption in a digital circuit in an idle state |
US7469321B2 (en) * | 2003-06-25 | 2008-12-23 | International Business Machines Corporation | Software process migration between coherency regions without cache purges |
GB2409059B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2409062C (en) | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
JP3988144B2 (ja) | 2004-02-23 | 2007-10-10 | 日本電気株式会社 | ベクトル処理装置、及び、追い越し制御回路 |
US7721069B2 (en) | 2004-07-13 | 2010-05-18 | 3Plus1 Technology, Inc | Low power, high performance, heterogeneous, scalable processor architecture |
CN101031904A (zh) | 2004-07-13 | 2007-09-05 | 3加1科技公司 | 带有两类子处理器以执行多媒体应用的可编程处理器系统 |
US7996833B2 (en) | 2004-07-31 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Method and system for replacing instructions and instruction blocks in computer code |
CN102184123B (zh) | 2005-03-02 | 2013-10-16 | 英特尔公司 | 一种附加地支持虚拟多线程的多线程处理器及系统 |
US7516299B2 (en) | 2005-08-29 | 2009-04-07 | International Business Machines Corporation | Splat copying GPR data to vector register elements by executing lvsr or lvsl and vector subtract instructions |
US7457938B2 (en) * | 2005-09-30 | 2008-11-25 | Intel Corporation | Staggered execution stack for vector processing |
US20070101102A1 (en) * | 2005-10-27 | 2007-05-03 | Dierks Herman D Jr | Selectively pausing a software thread |
WO2007057832A2 (en) | 2005-11-15 | 2007-05-24 | Nxp B.V. | Vector shuffle unit |
US9436468B2 (en) * | 2005-11-22 | 2016-09-06 | Intel Corporation | Technique for setting a vector mask |
JP3961545B2 (ja) | 2005-11-29 | 2007-08-22 | 株式会社コナミデジタルエンタテインメント | オブジェクト選択装置、オブジェクト選択方法、ならびに、プログラム |
US20070139421A1 (en) | 2005-12-21 | 2007-06-21 | Wen Chen | Methods and systems for performance monitoring in a graphics processing unit |
US20080010413A1 (en) * | 2006-07-07 | 2008-01-10 | Krishnan Kunjunny Kailas | Method and apparatus for application-specific dynamic cache placement |
US9069547B2 (en) * | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US8312069B2 (en) | 2006-10-17 | 2012-11-13 | International Business Machines Corporation | Permute unit and method to operate a permute unit |
US9495724B2 (en) | 2006-10-31 | 2016-11-15 | International Business Machines Corporation | Single precision vector permute immediate with “word” vector write mask |
US7921274B2 (en) | 2007-04-19 | 2011-04-05 | Qualcomm Incorporated | Computer memory addressing mode employing memory segmenting and masking |
US20090150648A1 (en) | 2007-12-06 | 2009-06-11 | Eric Oliver Mejdrich | Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions |
US20090172348A1 (en) * | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
US9529592B2 (en) | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US8909901B2 (en) * | 2007-12-28 | 2014-12-09 | Intel Corporation | Permute operations with flexible zero control |
US20090307175A1 (en) | 2008-06-10 | 2009-12-10 | International Business Machines Corporation | Parallel pattern matching on multiple input streams in a data processing system |
US8051226B2 (en) | 2008-06-13 | 2011-11-01 | Freescale Semiconductor, Inc. | Circular buffer support in a single instruction multiple data (SIMD) data processor |
US8555034B2 (en) | 2009-12-15 | 2013-10-08 | Oracle America, Inc. | Execution of variable width vector processing instructions |
US8996845B2 (en) * | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US20120185670A1 (en) | 2011-01-14 | 2012-07-19 | Toll Bret L | Scalar integer instructions capable of execution with three registers |
US20120216011A1 (en) | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
CN102214281A (zh) * | 2011-04-27 | 2011-10-12 | 北京深思洛克软件技术股份有限公司 | 一种软件保护方法和装置 |
CN102221990B (zh) * | 2011-05-26 | 2014-01-22 | 山东大学 | 针对aes对称加密算法的指令优化方法及其处理器 |
CN103959240B (zh) | 2011-12-15 | 2017-05-17 | 英特尔公司 | 使用混洗表和掩码存储表经由矢量指令优化程序循环的方法 |
CN104115114B (zh) | 2011-12-23 | 2018-06-12 | 英特尔公司 | 经改进的提取指令的装置和方法 |
CN107220029B (zh) | 2011-12-23 | 2020-10-27 | 英特尔公司 | 掩码置换指令的装置和方法 |
CN111831335A (zh) | 2011-12-23 | 2020-10-27 | 英特尔公司 | 经改进的插入指令的装置和方法 |
-
2011
- 2011-12-23 CN CN201180075845.1A patent/CN104011616B/zh active Active
- 2011-12-23 US US13/976,993 patent/US9658850B2/en active Active
- 2011-12-23 WO PCT/US2011/067210 patent/WO2013095637A1/en active Application Filing
- 2011-12-23 CN CN201710628839.3A patent/CN107391086B/zh active Active
-
2012
- 2012-12-22 TW TW101149313A patent/TWI481991B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN107391086B (zh) | 2020-12-08 |
CN104011616B (zh) | 2017-08-29 |
US20130290687A1 (en) | 2013-10-31 |
WO2013095637A9 (en) | 2013-09-06 |
TWI481991B (zh) | 2015-04-21 |
US9658850B2 (en) | 2017-05-23 |
WO2013095637A1 (en) | 2013-06-27 |
CN107391086A (zh) | 2017-11-24 |
CN104011616A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI517031B (zh) | 用於呈現各別複數之複數共軛根之向量指令 | |
TWI470544B (zh) | 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法 | |
TWI481991B (zh) | 改良型排列指令之裝置及方法 | |
TWI489382B (zh) | 改良的萃取指令背景之設備及方法 | |
TWI518590B (zh) | 多暫存器聚集指令 | |
TWI517038B (zh) | 用於在多維度陣列中之元件偏移計算的指令 | |
TWI489383B (zh) | 遮蔽排列指令的裝置及方法 | |
TWI525538B (zh) | 超級乘加(super madd)指令技術 | |
TWI498815B (zh) | 用以響應於單一指令而執行橫向部分和之系統、裝置及方法 | |
TWI501147B (zh) | 用於從通用暫存器至向量暫存器的廣播之裝置及方法 | |
TWI473015B (zh) | 執行向量頻率擴展指令之方法、處理器核心以及製品 | |
US10459728B2 (en) | Apparatus and method of improved insert instructions | |
TWI575451B (zh) | 用於遮罩及向量暫存器之間的可變擴充的方法及裝置 | |
TWI628593B (zh) | 用以履行向量位元反轉之方法及設備 | |
TW201732572A (zh) | 用於跨步的載入(strided load)的系統、設備及方法 | |
TWI567640B (zh) | 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器 | |
TWI637317B (zh) | 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置 | |
TWI482086B (zh) | 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法 | |
TWI497411B (zh) | 用於決定一值是否在一範圍內之指令的裝置及方法 | |
TW201730756A (zh) | 用於從鏈結結構取回元件的設備和方法 |