TWI552080B - 處理器 - Google Patents
處理器 Download PDFInfo
- Publication number
- TWI552080B TWI552080B TW103140467A TW103140467A TWI552080B TW I552080 B TWI552080 B TW I552080B TW 103140467 A TW103140467 A TW 103140467A TW 103140467 A TW103140467 A TW 103140467A TW I552080 B TWI552080 B TW I552080B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- operand
- register
- instruction
- field
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims description 149
- 239000013598 vector Substances 0.000 claims description 142
- 238000002156 mixing Methods 0.000 claims description 15
- 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 63
- 238000006073 displacement reaction Methods 0.000 description 42
- 238000006243 chemical reaction Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 28
- 238000007667 floating Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 17
- 239000003607 modifier Substances 0.000 description 16
- 238000000034 method Methods 0.000 description 12
- 230000002123 temporal effect Effects 0.000 description 11
- 238000009966 trimming Methods 0.000 description 11
- 239000003795 chemical substances by application Substances 0.000 description 8
- 235000012431 wafers Nutrition 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008676 import Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000000873 masking effect Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000005669 field effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional 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
- 238000013501 data transformation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002789 length control Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
本發明之技術領域係大致關於電腦處理器架構,具體言之,係關於當被執行時會造成特定結果之指令。
來自基於控制流(control-flow)資訊之向量源的合併資料是一種向量式架構的平常問題。例如,如要將以下的碼向量化會需要:1)用以產生布林向量(其表示是否a[i]>0為真)的方式及2)基於該布林向量,用以從兩個來源(A[i]或B[i])選擇值並將內容寫入不同目的(C[i])。
For(i=0;i<N;i++){C[i]=(a[i]>0?A[i]:B[i];}
700‧‧‧一般向量友善指令格式
705‧‧‧無記憶體存取
710‧‧‧無記憶體存取、完整修整控制類型操作
712‧‧‧無記憶體存取、寫入遮罩控制、部分修整控制類型操作
715‧‧‧無記憶體存取、資料轉換類型操作
717‧‧‧無記憶體存取、寫入遮罩控制、vsize類型操作
720‧‧‧記憶體存取
725‧‧‧記憶體存取、時間性
730‧‧‧記憶體存取、非時間性
740‧‧‧格式欄位
742‧‧‧基本操作欄位
744‧‧‧暫存器索引欄位
746‧‧‧修改符欄位
746A‧‧‧無記憶體存取
750‧‧‧增益操作欄位
752‧‧‧alpha欄位
752A‧‧‧rs欄位
752B‧‧‧逐出提示欄位
752B.1‧‧‧時間性
752B.2‧‧‧非時間性
752C‧‧‧寫入遮罩控制(Z)欄位
754‧‧‧beta欄位
754A‧‧‧修整控制欄位
754B‧‧‧資料轉換欄位
754C‧‧‧資料控制欄位
756‧‧‧抑制所有浮點例外欄位
757A‧‧‧RL欄位
757A.1‧‧‧修整
757A.2‧‧‧向量長度
757B‧‧‧廣播欄位
758‧‧‧修整操作控制欄位
759A‧‧‧修整操作控制欄位
759B‧‧‧向量長度欄位
760‧‧‧純量欄位
762A‧‧‧位移欄位
762B‧‧‧位移因子欄位
764‧‧‧資料元寬度欄位
768‧‧‧級別欄位
768A‧‧‧級別A
768B‧‧‧級別B
770‧‧‧寫入遮罩欄位
772‧‧‧即時欄位
774‧‧‧完整運算碼欄位
800‧‧‧特定向量友善指令格式
802‧‧‧EVEX前置碼
805‧‧‧REX欄位
810‧‧‧REX'欄位
815‧‧‧運算碼對映欄位
820‧‧‧EVEX.vvvv
825‧‧‧前置碼編碼欄位
830‧‧‧實際運算碼欄位
840‧‧‧MOD R/M欄位
842‧‧‧MOD欄位
844‧‧‧MODR.M.reg欄位
846‧‧‧MODR/M.r/m欄位
854‧‧‧SIB.xxx
856‧‧‧SIB.bbb
900‧‧‧暫存器架構
910‧‧‧向量暫存器檔案
915‧‧‧寫入遮罩暫存器
920‧‧‧多媒體延伸控制狀態暫存器
925‧‧‧一般目的暫存器
930‧‧‧延伸旗標暫存器
935‧‧‧浮點控制字元暫存器
940‧‧‧浮點狀態字元暫存器
945‧‧‧純量浮點堆疊暫存器檔案
950‧‧‧MMX壓縮整數平暫存器檔案
955‧‧‧區段暫存器
965‧‧‧RIP暫存器
1000‧‧‧指令解碼器
1002‧‧‧晶粒上互連網路
1004‧‧‧L2快取之本地子集
1006‧‧‧L1快取
1006A‧‧‧L1資料快取
1008‧‧‧純量單元
1010‧‧‧向量單元
1012‧‧‧純量暫存器
1014‧‧‧純量暫存器
1020‧‧‧拌和單元
1022A‧‧‧數值轉換單元
1022B‧‧‧數值轉換單元
1024‧‧‧複製單元
1026‧‧‧寫入遮罩暫存器
1028‧‧‧16寬向量ALU
1105‧‧‧前端單元
1110‧‧‧執行引擎單元
1115‧‧‧記憶體單元
1120‧‧‧L1分支預估單元
1122‧‧‧L2分支預估單元
1124‧‧‧L1指令快取單元
1126‧‧‧指令轉譯後備緩衝區
1128‧‧‧指令提取及預解碼單元
1130‧‧‧指令佇列單元
1132‧‧‧解碼單元
1134‧‧‧複雜解碼器單元
1136‧‧‧簡易解碼器單元
1138‧‧‧簡易解碼器單元
1140‧‧‧簡易解碼器單元
1142‧‧‧微式碼ROM單元
1144‧‧‧迴圈流偵測器單元
1146‧‧‧第二層級TLB單元
1148‧‧‧L2快取單元
1150‧‧‧L3及較高快取單元
1152‧‧‧資料TLB單元
1154‧‧‧L1資料快取單元
1156‧‧‧更名/分配器單元
1158‧‧‧統一排程器單元
1160‧‧‧執行單元
1162‧‧‧混合的純量及向量單元
1164‧‧‧混合的純量及向量單元
1166‧‧‧載入單元
1168‧‧‧儲存位址單元
1170‧‧‧儲存資料單元
1172‧‧‧混合的純量及向量單元
1174‧‧‧報廢單元
1176‧‧‧實體暫存器檔案單元
1177A‧‧‧向量暫存器單元
1177B‧‧‧寫入遮罩暫存器單元
1177c‧‧‧純量暫存器單元
1178‧‧‧再排序緩衝單元
1200‧‧‧系統
1210‧‧‧處理器
1215‧‧‧處理器
1220‧‧‧圖形記憶體控制器集線器
1240‧‧‧顯示器
1245‧‧‧顯示器
1250‧‧‧輸入/輸出控制器集線器
1260‧‧‧外部圖形裝置
1270‧‧‧週邊裝置
1300‧‧‧第二系統
1314‧‧‧I/O裝置
1316‧‧‧第一匯流排
1318‧‧‧匯流排橋接器
1320‧‧‧第二匯流排
1322‧‧‧鍵盤/滑鼠
1324‧‧‧音訊I/O
1327‧‧‧通訊裝置
1328‧‧‧資料儲存單元
1330‧‧‧碼
1332‧‧‧記憶體
1334‧‧‧記憶體
1338‧‧‧高效能圖形電路
1339‧‧‧高效能圖形介面
1342‧‧‧記憶體
1344‧‧‧記憶體
1350‧‧‧點對點互連
1370‧‧‧處理器
1372‧‧‧積體記憶體控制器集線器
1372‧‧‧控制邏輯
1376‧‧‧點對點介面
1378‧‧‧點對點介面
1380‧‧‧處理器
1382‧‧‧積體記憶體控制器集線器
1382‧‧‧控制邏輯
1386‧‧‧點對點介面
1388‧‧‧點對點介面
1390‧‧‧晶片組
1396‧‧‧介面
1398‧‧‧點對點介面
1400‧‧‧系統
1414‧‧‧I/O裝置
1415‧‧‧舊有I/O裝置
1500‧‧‧晶片上之系統
1502‧‧‧互連單元
1510‧‧‧應用處理器
1520‧‧‧媒體處理器
1524‧‧‧影像處理器
1526‧‧‧音訊處理器
1528‧‧‧視訊處理器
1530‧‧‧靜態隨機存取記憶體單元
1532‧‧‧直接記憶體存取單元
1540‧‧‧顯示單元
1600‧‧‧處理器
1602A‧‧‧核心
1602N‧‧‧核心
1604A‧‧‧快取單元
1604N‧‧‧快取單元
1606‧‧‧共享的快取單元
1608‧‧‧積體圖形邏輯
1610‧‧‧系統代理器單元
1612‧‧‧環式互連單元
1614‧‧‧積體記憶體控制器單元
1616‧‧‧匯流排控制器單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二進制碼
1708‧‧‧替代指令集編譯器
1710‧‧‧替代指令集二進制碼
1712‧‧‧指令轉換器
1714‧‧‧無x86指令集核心的處理器
1716‧‧‧具有至少一x86指令集核心的處理器
本發明係參考後附圖式加以例示但不受限於後附圖
式,其中相同的元件係以相同的元件符號表示,且其中:第1圖顯示混合指令的執行之範例。
第2圖顯示混合指令的執行之另一範例。
第3圖顯示混合指令的虛擬碼之範例。
第4圖顯示混合指令於處理器中的使用之實施例。
第5圖顯示用以處理混合指令的方法之實施例。
第6圖顯示用以處理混合指令的方法之實施例。
第7A圖為方塊圖,顯示根據本發明實施例之一般向量友善指令格式及其等級A指令樣板。
第7B圖為方塊圖,顯示根據本發明實施例之一般向量友善指令格式及其等級B指令樣板。
第8A-C圖顯示根據本發明實施例之例示特定向量友善指令格式。
第9圖為根據本發明之一實施例的暫存器架構之方塊圖。
第10A圖為根據本發明之實施例的單核CPU(其連接至晶粒上互連網路且具有層級2(L2)快取的本地子集)之方塊圖。
第10B圖為根據本發明之實施例的第10A圖中部份的CPU核心之展開圖。
第11圖為根據本發明之實施例的例示不正常架構的方塊圖。
第12圖為根據本發明之一實施例的系統的方塊圖。
第13圖為根據本發明之一實施例的第二系統的方塊圖。
第14圖為根據本發明之一實施例的第三系統的方塊圖。
第15圖為根據本發明之一實施例的SoC的方塊圖。
第16圖為根據本發明實施例之單核心處理器及多核心處理器協同積體記憶體控制器與圖形之方塊圖。
第17圖為根據本發明之實施例對比軟體指令轉換器之將以來源指令集表示的二進制指令轉換成以目標指令集表示的二進制指令之使用的方塊圖。
於以下說明中係說明各種特定細節。然而,應了解的是,本發明之實施例可在沒有這些特定細節的情況下被實施。在其他情況下,已知電路、結構與技術未顯示於細節中以避免模糊對本說明之了解。
說明書中的「一個實施例」、「一實施例」、「一範例實施例」等表示所說明的實施例可包含特定特徵、結構、或特性,但各實施例不一定要包含該特定特徵、結構、或特性。再者,此詞組不一定是指相同的實施例。再者,當特定特徵、結構、或特性係被說明與一實施例相關時,所屬技術領域中具有通常知識者可將該特定特徵、結構、或特性與其他實施例相關,不論其是否被明確說明。
以下為一般被稱為「混合」的指令之實施例,及可被使用以執行此指令之系統、架構、指令格式等的實施例,其係有益於幾個不同領域(包含先前技術中所述者)。混合指令的執行有效地處理先前所述問題的第二部分(其在如元件的向量之比較的結果中需要一個包含真/假位元的遮罩暫存器,且根據那些位元,其能在兩個不同向量源的元件中選擇)。換句話說,混合指令的執行造成處理器在兩個來源中使用寫入罩作為那些來源間的選擇器以執行資料元對元(element-by-element)混合。該結果係被寫入目的地暫存器中。在某些實施例中,這些來源的至少其中一者為例如128-、256-、512-位元向量暫存器等的暫存器。在某些實施例中,來源運算元的至少其中一者為與開始記憶體位置相關聯之資料元的集合。此外,於某些實施例中,一或兩個來源之資料元在任何混合前先經過資料轉換(data transformation),例如拌和(swizzle)、廣播(broadcast)、轉變(conversion)等(將以範例說明)。寫入罩暫存器的範例將稍後說明。
此指令的範例格式為「VBLENDPS zmm1{k1},zmm2,zmm3/m512,offset」,其中運算元zmm1、zmm2、及zmm3為向量暫存器(例如128-、256-、512-位元暫存器等),k1為寫入罩運算元(例如16-位元暫存器,類似於稍後將說明者),且m512為儲存於暫存器中或作為即時儲存之記憶體運算元。ZMM1為目的地運算元而ZMM2與
ZMM3/m512為來源運算元。偏移(offset)(若有的話)係被使用以從暫存器中或即時的值中決定記憶體位址。從記憶體取得的值(不論為何)為起自記憶體位址且可為數種尺寸(128-、256-、512-位元等)之一者(根據目的地暫存器的尺寸一尺寸大致與目的地暫存器之尺寸相同)之集合連序位元。於某些實施例中,寫入罩係為不同尺寸(8位元、32位元等)。此外,於某些實施例中,寫入罩中不是所有位元係被指令所使用,其將於後文說明。VBLENDMPS為指令的運算碼(opcode)。典型地,各運算元係被明確地界定於指令中。資料元的尺寸可被界定於指令的前置碼(prefix)中,例如透過資料細微度位元(data granularity bit)的表示(如「W」)之使用,將如稍後說明。於大部分的實施例中,W將表示各資料元為32或64位元。若資料元的尺寸為32位元,且來源的尺寸為512位元,則每個來源有十六(16)個資料元。
混合指令的執行的範例係顯示於第1圖。於此範例中,有各具有16資料元的兩個來源。在大部分的情形中,這些來源的其中一者為暫存器(此範例中,雖然來源1係被作為具有16個32-位元資料元的512-位元暫存器(例如ZMM暫存器),然而,亦可使用其他資料元與暫存器尺寸(例如XMM與YMM暫存器與16-或64-位元資料元)。另一來源為暫存器或記憶體位置(於圖式中來源2即該另一來源)。若第二來源為記憶體位置,在大部分的實施例中,其係在來源的任何混合之前被置於暫時暫存
器中。此外,該記憶體位置的資料元可在被置於暫時暫存器中之前經歷資料轉換。所示的遮罩樣式為0x5555。
於此範例中,對於具有「1」的值之寫入罩的各位元位置,其係表示第一來源(來源1)之對應的資料元應被寫入該目的地暫存器之對應的資料元位置。因此,來源1的第一、第三、第五等位元位置(A0、A2、A4等)係被寫入該目的地之第一、第三、第五等資料元位置。對於具有「0」的值之寫入罩,第二來源之資料元係被寫入該目的地之對應的資料元位置。根據實施目的,當然「1」與「0」的使用可互換。此外,雖然此圖式與以上說明認為相對的第一位置為最小有效位置(least significant position),在某些實施例中,第一位置為最大有效位置。
第2圖顯示混合指令的執行之另一範例。此圖式與第1圖不同處在於各來源僅具有8個資料元(例如,來源為各具有8個64-位元資料元之512-位元暫存器)。於此情形下,使用16-位元的寫入罩,並非該寫入罩的所有位元都被使用。於此範例中,因待被合併的各來源沒有16個資料元,故僅最小有效位元係被使用。
第3圖顯示混合指令的虛擬碼之範例。
第4圖顯示混合指令於處理器中的使用之實施例。於操作401,具有目的地運算元、兩個來源運算元、偏移(若有的話)、及寫入罩的混合指令係被提取。於某些實施例中,目的地運算元為512-位元向量暫存器(例如
ZMM1)而寫入罩為16-位元暫存器(例如稍候說明的「k」寫入罩暫存器)。至少其中一個來源運算元可為記憶體來源運算元。
於操作403,混合指令係被解碼。基於指令的格式,各種資料可於此階段被解譯(interpreted),例如是否要資料轉換、要寫入及擷取哪個暫存器、要存取哪個記憶體位址等。
於操作405,來源運算元值係被擷取/讀取。若兩個來源皆為暫存器,則那些暫存器係被讀取。若來源運算元的其中一者或兩者為記憶體運算元,則與該運算元相關聯的資料元係被擷取。於某些實施例中,來自記憶體之資料元係被儲存於暫時暫存器中。
若有任何待執行的資料元轉換(例如提升轉換(upconversion)、廣播、拌和等,將於稍後說明),則可在操作407執行。例如,來自記憶體的16-位元資料元可被提升轉換成32-位元資料元或資料元可被從一樣式拌和至另一樣式(例如XYZW XYZW XYZW...XYZW至XXXXXXXX YYYYYYYY ZZZZZZZZZZ WWWWWWWW)。
混合指令(或包含此指令(例如微操作)之操作)係藉由執行資源於操作409被執行。此執行使用寫入罩作為那些來源間之選擇器而造成兩個來源間之資料元-對-元混合。例如,第一與第二來源之資料元係根據寫入罩的對應位元值而被選擇。此混合的範例係顯示於第1與2圖。
於操作411,來源運算元之適當的資料元係被儲存於
目的地暫存器中。再次說明,其範例係顯示於第1與2圖。雖然操作409與411被分開顯示,於某些實施例中,其可被一起執行作為指令之執行的一部分。
雖然以上係以一種類型的執行環境來顯示,其可被輕易修改以符合其他環境,例如正常(in-order)或不正常(out-of-order)環境。
第5圖顯示用以處理混合指令的方法之實施例。於此實施例中,其係假設某些(若非全部)的操作401-407已被較早執行,然而,其未被顯示以避免模糊以下說明的細節。例如,提取與解碼未被顯示,運算元(來源與寫入罩)擷取亦未被顯示。
於操作501,寫入罩之第一位元位置的值係被評估。例如,於寫入罩k1[0]之值係被決定。於某些實施例中,第一位元位置為最小有效位元位置而於其他實施例中其為最大有效位元位置。其餘討論將說明第一位元位置為最小有效的使用,然而,若其為最大有效而被做出的修改將可被所屬技術領域中具有通常知識者所輕易了解。
是否寫入罩之此位元位置的值表示第一來源的對應資料元(第一資料元)應被儲存於目的地之對應位置之決定係於操作503被做出。若第一位元位置表示於第一來源之第一位置中的資料元應被儲存於目的地暫存器之第一位置,則其於操作507被儲存。回到第1圖,該遮罩表示此為該情形且第一來源之第一資料元係儲存於目的地暫存器之第一資料元位置中。
若第一位元位置表示第一來源之第一位置中的資料元不應被儲存於目的地暫存器之第一位置中時,則第二來源之第一位置中的資料元係於操作507被儲存。回到第1圖,該遮罩表示此不為該情形。
是否經評估的寫入罩位置為寫入罩的最後或是否目的地之所有的資料元位置已被填滿之決定係於操作509被做出。若是,則操作結束。若否,則寫入罩中的下一位元位置係於操作511待被評估以決定其值。
是否寫入罩之此後續位元位置的值表示第一來源的對應資料元(第二資料元)應被儲存於目的地之對應位置之決定係於操作503被做出。此重複直到遮罩中所有位元已被用盡或目的地之所有資料元已被填滿。後者情形可發生於當例如資料元尺寸為64位元、目的地為512位元、而寫入罩具有16位元。於此情形下,僅8位元的寫入罩將為必要,但混合指令將已被完成。換句話說,寫入罩所使用的位元數量係根據各來源之寫入罩尺寸與資料元數量。
第6圖顯示用以處理混合指令的方法之實施例。於此實施例中,其係假設某些(若非全部)的操作401-407已在操作601之前被執行。於操作601,對於待被使用的寫入罩之各位元位置,是否於該位元位置的值表示第一來源之對應的資料元應被儲存於目的地暫存器之對應的位置之決定被做出。
對於表示第一來源之資料元應被儲存於目的地暫存器中的寫入罩之各位元位置,其係於操作605被寫入適當位
置。對於表示第二來源之資料元應被儲存於目的地暫存器中的寫入罩之各位元位置,其係於操作603被寫入適當位置。於某些實施例中,操作603與605係被同時執行。
雖然第5與6圖已說明根據第一來源來做決定,但仍可使用任一來源來做決定。此外,應可清楚了解的是,當一個來源之資料元非將被寫入另一來源之對應的資料元時,另一來源之對應的資料元係將被寫入目的地暫存器。
英特爾公司的AVX導入基於即時值(VBLENDPS)或基於第三向量來源之資料元的符號位元(VBLENDVPS)之其他版本的BLEND向量指令。前者具有混合資訊為停滯的(static)之缺點,而後者具有動態混合資訊來自其他向量暫存器而導致額外的暫存器讀取壓力、儲存浪費(每32位元僅有1個對於布林表示法是實際有用的)與額外的負荷(由於預測資訊需要被映射至真實資料(true-data)向量暫存器)之缺點。VBLENDMPS導入使用包含於真實遮罩暫存器中的預測資訊從兩個來源混合值的概念。此有以下優點:其允許變數混合、允許使用解耦合的(decoupled)算術及經預測的邏輯組件(算術係被執行於向量、預測係被執行於遮罩;遮罩係被使用以根據控制流資訊來混合算術資料)來混合、減輕於向量暫存器檔案的讀取壓力(遮罩讀取較便宜且在分開的暫存器檔案)、及避免浪費儲存空間(儲存布林於向量是高度沒有效率的,因為每個資料元在32-位元/64-位元中僅有1-位元是實際需要的)。
以上說明的指令之實施例可被體現於「一般向量友善指令格式(generic vector friendly instruction format)」,其係說明於後文。於其他實施例中,此格式未被使用而使用另一指令格式,然而,寫入罩暫存器、各種資料轉換(拌和、廣播等)、位址等的以下說明係大致可應用至以上所述的指令之實施例的說明。此外,後文將說明範例系統、架構、與管路(pipeline)。以上所述的指令之實施例可被執行於此種系統、架構、與管路,但並不受限於其中。
向量友善指令格式是一種指令格式,其係適合於向量指令(例如對於向量操作有特定的領域)。雖然實施例係被說明為向量與純量(scalar)操作係經由向量友善指令格式而被支持,替代實施例可僅使用向量操作,經由向量友善指令格式而被支持。
第7A-B圖為方塊圖,顯示根據本發明實施例之一般向量友善指令格式及其指令樣板。第7A圖為方塊圖,顯示根據本發明實施例之一般向量友善指令格式及其等級A指令樣板;而第7B圖為方塊圖,顯示根據本發明實施例之一般向量友善指令格式及其等級B指令樣板。具體言之,一般向量友善指令格式700(其係界定等級A與等級B指令樣板)包含無記憶體存取705指令樣板與記憶體存取720指令樣板。向量友善指令格式於內文中所用的術語
「一般(generic)」係指未被關聯至任何特定指令集的指令格式。雖然實施例將被說明於其中向量友善指令格式中的指令係操作於源自暫存器(無記憶體存取705指令樣板)或暫存器-記憶體(記憶體存取720指令樣板)之向量,本發明之替代實施例可支持僅其中一者。同樣的,雖然本發明之實施例將被說明於其中於向量指令格式中有負載與儲存指令,替代實施例替代或額外具有不同指令格式(其移動向量至暫存器中或從暫存器出來(例如從記憶體至暫存器、從暫存器至記憶體、從暫存器至暫存器))的指令。再者,雖然本發明之實施例被說明為支持兩種等級的指令樣板,替代實施例可僅支持其中一種或多於兩種。
雖然本發明之實施例被說明於其中向量友善指令格式支持以下:具有32位元(4位元組)或64位元(8位元組)資料元寬度(或尺寸)之64位元組向量運算元長度(或尺寸)(因此,64位元組向量包含16雙字尺寸(doubleword-size)資料元或替代地8四字尺寸(quadword-size)資料元);具有16位元(2位元組)或8位元(1位元組)資料元寬度(或尺寸)之64位元組向量運算元長度(或尺寸);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元寬度(或尺寸)之32位元組向量運算元長度(或尺寸);及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元寬度(或尺寸)之16位元組向
量運算元長度(或尺寸);替代實施例可支持具有更多、更少或不同資料元寬度(例如128位元(16位元組)資料元寬度)之更多、更少及/或不同向量運算元尺寸(例如756位元組向量運算元)。
第7A圖中的等級A指令樣板包含:1)在無記憶體存取705指令樣板中係顯示無記憶體存取、完整修整控制類型操作(no memory access,full round control type operation)710指令樣板、及無記憶體存取、資料轉換類型操作(no memory access,data transform type operation)715指令樣板;及2)在記憶體存取720指令樣板中係顯示記憶體存取、時間性(memory access,temporal)725指令樣板及記憶體存取、非時間性(memory access,non-temporal)730指令樣板。第7B圖中的等級B指令樣板包含:1)在無記憶體存取705指令樣板中係顯示無記憶體存取、寫入遮罩控制、部分修整控制類型操作(no memory access,write mask control,partial round control type operation)712指令樣板、及無記憶體存取、寫入遮罩控制、vsize類型操作(no memory access,write mask control,vsize type operation)717指令樣板;及2)在記憶體存取720指令樣板中係顯示記憶體存取、寫入遮罩控制(memory access,write mask control)727指令樣板。
一般向量友善指令格式700包含以下所列欄位(按第7A-B圖中顯示順序)。
格式欄位740-此欄位之特定值(指令格式識別符值)獨特地識別向量友善指令格式及於指令流中向量友善指令格式中指令的發生。因此,格式欄位740的內容自於其他指令格式中指令的發生中區別於第一指令格式中指令的發生,從而允許向量友善指令格式的導入具有其他指令格式之指令集。因此,此欄位在其並非為僅具有一般向量友善指令格式之指令所必須者的情況下為選項的。
基本操作欄位742-其內容區別不同基本操作。如後文所述者,基本操作欄位742可包含及/或為運算碼欄位的一部分。
暫存器索引欄位744-其內容直接或經由位址產生而指定來源與目的地運算元之位置,其為於暫存器中或於記憶體中。這些包含足夠數量的位元以從PxQ(例如32x912)暫存器檔案中選擇N個暫存器。雖然於一個實施例中N可高達三個來源與一個目的地暫存器,替代實施例可支持更多或更少來源與目的地暫存器(例如可支持高達兩個來源,其中一個亦作為目的地;可支持高達三個來源,其中一個亦作為目的地;可支持高達兩個來源與一個目的地)。雖然於一個實施例中P=32,替代實施例可支持更多或更少暫存器(例如16)。雖然於一個實施例中Q=912位元,替代實施例可支持更多或更少位元(例如128、1024)。
修改符欄位746-其內容在用來指定記憶體存取之一般向量友善指令格式中從沒有指定記憶體存取者中區分出指令的發生;亦即,在無記憶體存取705指令樣板與記憶體存取720指令樣板之間。記憶體存取操作讀取及/或寫入至記憶體分層(hierarchy)(在某些情形中使用暫存器中的值來指定來源及/或目的地位址),而無記憶體存取操作不這樣做(例如,來源及目的地為暫存器)。於一實施例中,此欄位亦從三個不同方式中選擇以執行記憶體位址計算,替代實施例可支持更多、更少或不同方式以執行記憶體位址計算。
增益操作欄位750-其內容區分許多待執行的不同操作,除了基本操作以外。此欄位為內容特定的。於本發明之一實施例中,此欄位被分成級別欄位768、alpha欄位752、beta欄位754。增益操作欄位允許共同群組的待處理操作於單一指令中,而非2、3、或4指令。以下為使用增益欄位750以減少所需指令數量之指令的一些範例(其命名方式將於後文中詳細說明)。
其中[rax]為使用於位址產生的基本指標,且其中{ }表示由資料操作欄位(將於後文中詳細說明)所指定之轉變操作。
純量欄位760-其內容允許衡量索引欄位的內容以用於記憶體位址產生(例如,對於位址產生,其使用2scale*index+base)。
位移欄位762A-其內容係使用為部份的記憶體位址產生(例如,對於位址產生,其使用2scale*index+base+displacement)。
位移因子欄位762B(應注意,位移欄位762A直接位於位移因子欄位762B之上的並列係表示其中一者或另一者係被使用)-其內容係使用為位址產生;其指定由記憶體存取的尺寸(N)所純量之位移因子-其中N為記憶體存取中位元組的數量(例如,對於位址產生之一部分,其使用2scale*index+base+scaled displacement)。冗餘的低階位元係被忽略,如此,位移因子欄位的內容係乘上記憶體運算元總尺寸(N)以產生用於計算有效位址之最終位移。N的值係由在運行時間的處理器硬體根據完整運算碼欄位774(於後文說明)及資料操作欄位754C所決定,如後文所述。位移欄位762A與位移因子欄位762B為選項的,因其並非使用於無記憶體存取705指令樣板及/或不同實施例可實現兩者中的其中一者或無。
資料元寬度欄位764-其內容區分許多資料元寬度中的何者係將被使用(於一些實施例中為所有的指令;於一些實施例中為一些指令)。此欄位為選項的,因若僅一個資料元寬度係被支持及/或資料元寬度係使用某些方面的運算碼而被支持,則不需要此欄位。
寫入遮罩欄位770-其內容控制(基於每個資料元位置)是否在目的地向量運算元的資料元位置反映基本操作與增益操作之結果。級別A指令樣板支持合併寫入遮罩(merging-writemasking),而級別B指令樣板支持合併(merging-)與歸零(zeroing-)寫入遮罩。當合併時,向量遮罩保護目的地中的任何組的資料元在任何操作的執
行(由基本操作與增益操作所指令)期間更新;於其他實施例中,保存目的地中的每個資料元之舊值,其中對應的遮罩位元具有0。相反的,當歸零向量遮罩允許目的地中的任何組的資料元在任何操作的執行(由基本操作與增益操作所指令)期間變成0;於一實施例中,當對應的遮罩位元具有0值時,目的地的一資料元被設為0。此功能的一子集為控制被執行的操作之向量長度的能力(亦即,被修改的資料元之總長,從第一個到最後一個);然而,被修改的資料元不需要是連續的。因此,寫入遮罩欄位770允許部分向量操作,包含載入、儲存、算術、邏輯等。同樣的,此遮罩可被使用於錯誤抑制(亦即,藉由遮蔽目的地的資料元位置以避免收到任何會/將造成錯誤之操作的結果(例如,假設記憶體中的向量跨越分頁邊界而第一分頁(不是第二分頁)將造成分頁錯誤,若向量的所有在第一頁的資料元係由寫入遮罩所遮蔽,則該分頁錯誤可被忽略))。再者,寫入遮罩允許「向量化迴圈(vectorizing loop)」,其包含特定類型的條件陳述。雖然本發明之實施例係說明寫入遮罩欄位770的內容選擇許多寫入遮罩暫存器中的一個,其包含待使用的寫入遮罩(因此,寫入遮罩欄位770的內容間接地識別待執行的遮蔽)。替代實施例取代或額外允許遮罩寫入欄位770的內容直接指定待執行的遮蔽。再者,歸零允許效能改善,當:1)暫存器更名係被使用於其目的地運算元亦不是來源的指令(亦稱為非三元指令),因為在暫存器更名管路階段期間,目的地
不再是暗示的來源(沒有來自目前目的地暫存器的資料元需要被複製至更名後的目的地暫存器或以某種方式支援操作,因為任何不是操作結果的資料元(任何經遮蔽的資料元)將被歸零);及2)在寫回階段期間,因為零係被寫入。
即時欄位772-其內容允許即時(immediate)的規格。此欄位為選項的,其不存在於不支援即時之一般向量友善格式的實施中,且其不存在不使用即時的指令中。
級別欄位768-其內容區分不同級別的指令。參考第2A-B圖,此欄位的內容在級別A與級別B指令之間選擇。於第7A-B圖中,圓角矩形係被用來表示特定值係存在於欄位中(例如,分別於第7A-B圖中,級別欄位768之級別A 768A與級別B 768B)。
在級別A之無記憶體存取705指令樣板的情形中,alpha欄位752係被解譯為RS欄位752A,其欄位區分不同增益操作類型中的何者係待被執行(例如,修整752A.1與資料轉換752A.2係分別指定至無記憶體存取修整類型操作710與無記憶體存取資料轉換類型操作715指令樣板),而beta欄位754區分特性類型的操作中之何者係待被執行。於第7圖中,圓角區塊係被使用以表示特
定值係存在(例如,修改符欄位746中的無記憶體存取746A;對於alpha欄位752/rs欄位752A的修整752A.1與資料轉換752A.2)。於無記憶體存取705指令樣板中,純量欄位760、位移欄位762A、與位移因子欄位762B不存在。
在無記憶體存取完整修整控制類型操作710指令樣板中,beta欄位754被解譯為修整控制欄位754A,其內容提供靜態修整。雖然在本發明所描述的實施例中修整控制欄位754A包含抑制所有浮點例外(SAE)欄位756與修整操作控制欄位758,替代實施例可支持可將這兩個概念一起編碼成相同欄位或僅具有這些概念/欄位的其中一者或另一者(例如,可具有僅修整操作控制欄位758)。
SAE欄位756-其內容區分是否去能(disable)例外事件報告;當SAE欄位756的內容表示抑制被賦能(enable),給定指令不報告任何類型的浮點例外旗標且不提出任何浮點例外處理器。
修整操作控制欄位758-其內容區分修整操作之群組(例如,往正無限大方向捨去(round-up)、往負無限大方向捨去(round-down)、往零的方向捨去(round-towards-zero)、將運算結果捨去至最接近數值(round-to-nearest))中的何種要執行。因此修整操作控制欄位758允許修整模式以每個指令為基準的方式來改變,且因
此當其被需要時,特別有用。於本發明之處理器包含控制暫存器用以指定修整模式之一實施例中,修整操作控制欄位750的內容置換該暫存器值(不需要在此控制暫存器上執行儲存-修改-恢復(save-modify-restore)的情況下可選擇修整模式是有益的)。
在無記憶體存取資料轉換類型操作715指令樣板中,beta欄位754被解譯為資料轉換欄位754B,其內容區分許多資料轉換(例如,無資料轉換、拌和、廣播)中的其中何者將被執行。
在級別A之記憶體存取720指令樣板的情況下,alpha欄位752被解譯為逐出提示(eviction hint)欄位752B,其內容區分逐出提示中的何者將被使用(於第7A圖,時間性752B.1與非時間性752B.2係分別被指明於記憶體存取、時間性725指令樣板及記憶體存取、非時間性730指令樣板),而beta欄位754被解譯為資料控制欄位754C,其內容區分許多資料控制操作(亦稱為本原(primitive))中的何者將被執行(例如,無控制(no manipulation);廣播;來源之提升轉換(up conversion of a source);目的地之下降轉換(down conversion of a destination))。記憶體存取720指令樣板包含純量欄位
760、及選項地,位移欄位762A或位移因子欄位762B。
向量記憶體指令從記憶體執行向量載入及執行向量儲存至記憶體(帶有轉換支持)。關於一般向量指令,向量記憶體指令以按資料元(element-wise)方式從記憶體傳送資料或傳送資料至記憶體,其資料元係由被選為寫入遮罩之向量遮罩的內容所指定而被實際傳送。於第7A圖,圓角矩形被使用以表示特定值係存在於欄位(例如,對於修改符欄位746之記憶體存取746B;對於alpha欄位752/逐出提示欄位752B之時間性752B.1及非時間性752B.2)。
時間性資料是可能很快被再使用而有益於快取(caching)的資料。亦即,然而,提示,且不同處理器可用不同方式將其實現,包含整個忽略該提示。
非時間性資料是不可能很快被再使用而有益於快取(在第一階快取)的資料,且應被給定關於逐出之優先權。亦即,然而,提示,且不同處理器可用不同方式將其實現,包含整個忽略該提示。
在級別B之指令樣板的情況下,alpha欄位752被解
譯為寫入遮罩控制(Z)欄位752C,其內容區別是否由寫入遮罩欄位770控制之寫入遮罩應為合併或歸零。
在級別B之無記憶體存取705指令樣板的情形中,部份的beta欄位754被解譯為RL欄位757A,其內容區分不同增益操作類型中的何者將被執行(例如,修整757A.1及向量長度(VSIZE)757A.2係分別被指明於無記憶體存取、寫入遮罩控制、部分修整控制類型操作712指令樣板及無記憶體存取、寫入遮罩控制、VSIZE類型操作717指令樣板),而其餘的beta欄位754區分所指定的類型之操作中的何者將被執行。於第7圖,圓角區塊係被使用以指示特定值係存在(例如,於修改符欄位746中之無記憶體存取746A;關於RL欄位757A之修整757A.1及VSIZE 757A.2)。於無記憶體存取705指令樣板中,純量欄位760、位移欄位762A、與位移因子欄位762B不存在。
於無記憶體存取、寫入遮罩控制、部分修整控制類型操作710指令樣板中,其餘的beta欄位754被解譯為修整操作欄位759A且例外事件報告係被去能(給定指令不報告任何類型的浮點例外旗標且不提出任何浮點例外處理
器)。
修整操作控制欄位759A-就如修整操作控制欄位758,其內容區分修整操作之群組中的何者要執行(例如,往正無限大方向捨去、往負無限大方向捨去、往零的方向捨去、將運算結果捨去至最接近數值)。因此,修整操作控制欄位759A允許修整模式以每個指令為基準的方式來改變,且因此當其被需要時,特別有用。於本發明之處理器包含控制暫存器用以指定修整模式之一實施例中,修整操作控制欄位750的內容置換該暫存器值(不需要在此控制暫存器上執行儲存-修改-恢復(save-modify-restore)的情況下可選擇修整模式是有益的)。
於無記憶體存取、寫入遮罩控制、VSIZE類型操作717指令樣板中,其餘的beta欄位754被解譯為向量長度欄位759B,其內容區分許多資料向量長度的其中何者將被執行(例如,128、756、或912位元組)。
於級別A之記憶體存取720指令樣板的情形中,部份的beta欄位754被解譯為廣播欄位757B,其內容區分是否廣播類型資料控制操作將被執行,而其餘的beta欄位754被解譯為向量長度欄位759B。記憶體存取720指令樣板包含純量欄位760,及選項地,位移欄位762A或位移
因子欄位762B。
關於一般向量友善指令格式700,完整運算碼欄位774係顯示包含格式欄位740、基本操作欄位742、及資料元寬度欄位764。雖然顯示完整運算碼欄位774包含所有這些欄位之一實施例,在不支持所有這些欄位的實施例中,完整運算碼欄位774包含少於所有這些欄位者完整運算碼欄位774提供操作碼。
增益操作欄位750、資料元寬度欄位764、與寫入遮罩欄位770允許這些特徵在一般向量友善指令格式中以每個指令為基準的方式被指明。
寫入遮罩欄位與資料元寬度欄位的結合建立類型的指令,其中其允許該遮罩根據不同資料元寬度來應用。
指令格式需要相對少量的位元,因為其對於不同目的根據其他欄位的內容再使用不同欄位。例如,一觀點是:修改符欄位的內容在第7A-B圖中之無記憶體存取705指令樣板與在第7A-B圖中之記憶體存取720指令樣板間選擇;同時級別欄位768的內容在第7A圖的指令樣板710/715與第7B圖的712/717間的無記憶體存取705指令樣板中選擇;且同時級別欄位768的內容在第7A圖的指令樣板725/730與第7B圖的727間的記憶體存取720指令樣板中選擇。由另一觀點,級別欄位768的內容分別在第7A與B圖之級別A與級別B指令樣板中選擇;同時修
改符欄位的內容在第7A圖之指令樣板705與720間的那些級別A指令樣板中選擇;且同時修改符欄位的內容在第7B圖之指令樣板705與720間的那些級別B指令樣板中選擇。在級別欄位的內容表示級別A指令樣板的情形中,修改符欄位746的內容選擇alpha欄位752的解譯(在rs欄位752A與EH欄位752B間)。以相同方式,修改符欄位746與級別欄位768的內容選擇不論alpha欄位被解譯為rs欄位752A、EH欄位752B、或寫入遮罩控制(Z)欄位752C。在級別與修改符欄位表示級別A無記憶體存取操作的情形中,增益欄位的beta欄位之解譯根據rs欄位的內容來改變;而在級別與修改符欄位表示級別B無記憶體存取操作的情形中,beta欄位的解譯根據RL欄位的內容。在級別與修改符欄位表示級別A記憶體存取操作的情形中,增益欄位的beta欄位之解譯根據基本操作欄位的內容來改變;而在級別與修改符欄位表示級別B記憶體存取操作的情形中,增益欄位的beta欄位之廣播欄位757B的解譯根據基本操作欄位的內容來改變。因此,基本操作欄位、修改符欄位及增益操作欄位的結合允許甚至更廣範圍的將被指明的增益操作。
在級別A與級別B中發現的各種指令樣板係有益於不同情況。當歸零-寫入遮蔽(zeroing-writemasking)或因效能理由需要較小向量長度時,級別A是有用的。舉例來說,當由於我們不再需要人為地合併目的地而更名被使用時,歸零允許避免假的相關性;至於另一範例,當以向
量遮罩模擬較短的向量尺寸時,向量長度控制減輕儲存-載入(store-load)轉送問題。當期望:1)使用修整-模式(rounding-mode)同時控制允許浮點例外(亦即,當SAE欄位的內容表示無時)時;2)可使用提升轉換、拌和、調換(swap)、及/或下降轉換;3)以圖形資料類型操作,級別B是有用的。舉例來說,提升轉換、拌和、調換、下降轉換、及圖形資料類型降低當以不同格式與來源作業時所需指令的數量;至於另一範例,允許例外的能力提供完整IEEE相容及指向的修整-模式。
第8A-C圖顯示根據本發明實施例之例示特定向量友善指令格式。第8A-C圖顯示特定向量友善指令格式800,其係特定在於,其指明欄位的位置、尺寸、解譯、及階級(order),以及這些欄位中的某些者之值。特定向量友善指令格式800可被使用以延伸x86指令集,且因此某些欄位係與現有x86指令集與其延伸(例如,AVX)中所使用者類似或相同。此格式仍符合現有x86指令集與其延伸之前置碼編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及即時欄位。對映第7圖的欄位之第8A-C圖的欄位係被顯示。
應了解的是,雖然本發明的實施例係為了說明目的參考一般向量友善指令格式700的內容來說明特定向量友善指令格式800,本發明並不限於特定向量友善指令格式
800。例如,一般向量友善指令格式700打算對各種欄位使用多種可能的尺寸,而特定向量友善指令格式800係顯示為具有特定尺寸的欄位。藉由特定範例,雖然資料元寬度欄位764係顯示為一個位元欄位於特定向量友善指令格式800,本發明並不限於此(亦即,一般向量友善指令格式700打算使用其他尺寸的資料元寬度欄位764)。
一般向量友善指令格式700包含以下所列欄位(按第8A-C圖所示次序)。
EVEX Prefix 802-係以四位元組形式編碼。
格式欄位740(EVEX Byte 0,bits[7:0])-第一位元組(EVEX Byte 0)為格式欄位740且其包含0x62(本發明之一實施例中使用於區別向量友善指令格式之獨特值)。
第二至四位元組(EVEX Bytes 1-3)包含提供特定能力的許多位元欄位。
REX欄位805(EVEX Byte 1,bits[7-5])-係由EVEX.R位元欄位(EVEX Byte 1,bit[7]-R)、EVEX.X位元欄位(EVEX Byte 1,bit[6]-X)、與757BEX byte 1,bit[5]-B)組成。EVEX.R、EVEX.X與EVEX.B位元欄位提供如對應的VEX位元欄位之相同的功能,且係使用1
的補數形式(1s complement form)加以編碼,例如ZMM0係被編碼為1111B,ZMM15係被編碼為0000B。指令之其他欄位將暫存器索引的最小三個位元編碼為已知於相關領域的(rrr、xxx、與bbb),使得Rrrr、Xxxx、與Bbbb可藉由加入EVEX.R、EVEX.X、及EVEX.B而形成。
REX’欄位810-此為REX’欄位810的第一個部分且為使用以將延伸的32暫存器組的較高16個或較低16個編碼之EVEX.R’位元欄位(EVEX Byte 1,bit[4]-R’)。於本發明之一實施例中,此位元,連同以下所指出的其他位元,係以位元反向格式(bit inverted format)被儲存以從BOUND指令區分(在已知x86 32位元模式中),何者的實際運算碼位元組為62,但不接受於MOD R/M欄位(於後文說明)在MOD欄位中11的值;本發明之替代實施例不以反向格式儲存此及以及其他指出的位元。1的值係被使用以對較低16個暫存器編碼。換句話說,R’Rrrr係藉由從其他欄位結合EVEX.R’、EVEX.R、及其他RRR而形成。
運算碼對映欄位815(EVEX byte 1,bits[3:0]-mmmm)-其內容將隱含的導引運算碼位元組(0F、0F38、或0F3)編碼。
資料元寬度欄位764(EVEX byte 2,bit[7]-W)-係藉由表示法EVEX.W來表示。EVEX.W係被使用以界定資料類型(32位元資料元或64位元資料元)的粒度(尺
寸)。
EVEX.vvvv 820(EVEX Byte 2,bits[6:3]-vvvv)-EVEX.vvv的角色可包含以下:1)EVEX.vvvv將第一來源暫存器運算元編碼,以反向的(1的補數)形式指明且係有效於具有2或更多來源運算元的指令;2)EVEX.vvvv將目的地暫存器運算元編碼,對於某個向量偏移以1的補數形式指明;或3)EVEX.vvvv不將任何運算元編碼,該欄位係被保留且應包含1111b。因此,EVEX.vvvv欄位820將第一來源暫存器說明符(specifier)的4個較低階位元以反向(1的補數)形式儲存。根據指令,額外的不同EVEX位元欄位係被使用以將說明符大小延伸至32暫存器。
EVEX.U 768級別欄位(EVEX byte 2,bit[2]-U)-若EVEX.U=0,其表示級別A或EVEX.U0;若EVEX.U=1,其表示級別B或EVEX.U1。
前置碼編碼欄位825(EVEX byte 2,bits[1:0]-pp)-對基本操作欄位提供額外位元。除了對EVEX前置碼格式中舊有(legacy)SSE指令提供支持以外,此亦有助於使SIMD前置碼變簡潔(而不是需要一位元組來表示SIMD前置碼,EVEX前置碼僅需要2位元)。於一實施例中,要支持在舊有格式與EVEX前置碼格式兩者中皆使用SIMD前置碼(66H,F2H,F3H)之舊有SSE指令,這些舊有SIMD前置碼係被編碼成SIMD前置碼編碼欄位;且在運行時間係在被提供至解碼器的PLA(故PLA可不需修
改就執行這些舊有指令之舊有與EVEX格式)之前被擴展成舊有SIMD前置碼。雖然較新的指令可直接使用EVEX前置碼欄位的內容作為運算碼延伸,特定實施例以類似方式延伸以達一致性但允許由這些舊有SIMD前置碼所指明之不同意義。一替代實施例可再設計PLA以支持2位元SIMD前置碼編碼,且因此不需要延伸。
Alpha欄位752(EVEX byte 3,bit[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.write mask control、及EVEX.N;亦顯示為α)-如前所述,此欄位為內容特定。額外的說明將於後文描述。
Beta欄位754(EVEX byte 3,bits[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦顯示為βββ)-如前所述,此欄位為內容特定。額外的說明將於後文描述。
REX’欄位810-此為REX’欄位的餘項且為EVEX.V’位元欄位(EVEX Byte 3,bit[3]-V’)其可被使用以將延伸的32暫存器組的較高16個或較低16個編碼。此位元係以位元反向格式被儲存。1的值係被使用以對較低16個暫存器編碼。換句話說,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位770(EVEX byte 3,bits[2:0]-kkk)-其內容指明寫入遮罩暫存器中暫存器的索引,如前所述。於本發明之一實施例中,特定值EVEX.kkk=000具有暗示沒有寫入遮罩被使用於特定指令之特別行為(此可以許多
方式來實施,包含使用硬體接線(hardwired)至所有者或略過遮罩硬體之寫入遮罩)。
此亦已知為運算碼位元組。部份的運算碼係被指明於此欄位。
修改符欄位746(MODR/M.MOD,bits[7-6]-MOD欄位842)-如前所述,MOD欄位842的內容區分記憶體存取與無記憶體存取操作。此欄位將於後文進一步說明。
MODR.M.reg欄位844,bits[5-3]-ModR/M.reg欄位的角色可概述為兩方面:ModR/M.reg將目的地暫存器運算元或來源暫存器運算元編碼,或ModR/M.reg係被當作運算碼延伸且不被使用以將任何指令運算元編碼。
MODR/M.r/m欄位846,bits[2-0]-ModR/M.r/m欄位的角色可包含以下:ModR/M.r/m將涉及記憶體位址的指令運算元編碼,或ModR/M.r/m將目的地暫存器運算碼或來源暫存器運算元編碼。
純量欄位760(SIB.SS,bits[7-6]-如前所述,純量欄位760的內容係被使用於記憶體位址產生。此欄位將於後文進一步說明。
SIB.xxx 854(bits[5-3]與SIB.bbb 856(bits[2-0])-這些欄位的內容已於暫存器索引Xxxx及Bbbb提及。
位移欄位762A(Bytes 7-10)-當MOD欄位842包含10,位元組7-10為位移欄位762A,且其與舊有32位元位移(disp32)作用相同且以位元組粒度來工作。
位移因子欄位762B(Byte 7)-當MOD欄位842包含01,位元組7為位移因子欄位762B。此欄位的位置與舊有x86指令集8位元位移(disp8)相同,其以位元組粒度來工作。由於disp8為符號延伸的(sign extended),其位址僅可在-128與127位元組間偏移;根據64位元組快取線路,disp8使用8位元,其可被設為僅四個有用的值-128、-64、0、與64;由於通常需要較大的範圍,disp32係被使用;然而,disp32需要4位元組。相對於disp8與disp32,位移因子欄位762B為disp8的再解譯(reinterpretation);當使用位移因子欄位762B,實際位移係由位移因子欄位的內容乘上記憶體運算元存取的尺寸(N)來決定。此類型的位移亦稱為disp8*N。此降低平均指令長度(使用於位移的單一位元組但具有較大的多之範圍)。此壓縮的位移係基於假設有效位移為記憶體存取的粒度之倍數,且因此,位址偏移的冗餘低階位元不需要被編碼。換句話說,位移因子欄位762B代替舊有x86指令集8位元位移。因此,位移因子欄位762B使用與
x86指令集8位元位移相同的方式來編碼(故ModRM/SIB編碼規則中沒有改變),僅有的例外是disp8係超過負荷至disp8*N。換句話說,編碼規則或編碼長度中沒有改變,僅有的改變在於硬體之位移值的解譯中(其需要將位移以記憶體運算元的尺寸來純量以獲得按位元組的方式(byte-wise)之位址偏移)。
即時欄位772運作如前所述。
第9圖為根據本發明之一實施例的暫存器架構900之方塊圖。暫存器架構之暫存器檔案與暫存器係如下所列:向量暫存器檔案910-於所示的實施例中,有32個向量暫存器,其為912位元寬;這些暫存器為zmm0至zmm31。較低16zmm暫存器之較低階756位元係於暫存器ymm0-16重疊。較低16zmm暫存器之較低階128位元(ymm暫存器之較低階128位元)係於暫存器xmm0-15重疊。特定向量友善指令格式800於下表所示這些重疊暫存器檔案運作。
換句話說,向量長度欄位759B自最大長度與一或多個其他較短長度間選擇,其中各較短長度為先前長度的一半;且不包含向量長度欄位759B的指令樣板以最大向量長度運作。再者,於一實施例中,特定向量友善指令格式800之級別B指令樣板運作於壓縮(packed)或純量(scalar)單/雙精度浮點資料及壓縮或純量整數資料。純量操作為執行於zmm/ymm/xmm暫存器中最低階資料元位置之操作;最高階資料元位置係根據實施例與其在指令之前留下者相同或係歸零。
寫入遮罩暫存器915-於所示實施例中,有8個寫入遮罩暫存器(k0至k7),各尺寸為64位元。如前所述,於本發明之一實施例中,向量遮罩暫存器k0無法被使用作為寫入遮罩;當正常表示k0的編碼係被使用於寫入遮罩,其選擇0xFFFF的固線式(hardwired)寫入遮罩,對於該指令有效地去能寫入遮蔽。
多媒體延伸控制狀態暫存器(MXCSR)920-於所示實施例中,此32位元暫存器提供使用於浮點操作之狀態
與控制位元。
一般目的暫存器925-於所示實施例中,有16個64位元一般目的暫存器,其係連同現有x86位址模式一起使用以定址記憶體運算元。這些暫存器的名稱為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、與R8至R15。
延伸旗標(EFLAGS)暫存器930-於所示實施例中,此32位元暫存器係被使用以記錄許多指令的結果。
浮點控制字元(FCW)暫存器935與浮點狀態字元(FSW)暫存器940-於所示實施例中,這些暫存器係由x87指令集延伸所使用以設定修整模式、例外遮罩與旗標(FCW的情況下),及追蹤例外(FSW的情況下)。
純量浮點堆疊暫存器檔案(x87堆疊)945與其上別名的MMX壓縮整數平暫存器檔案950-於所示實施例中,x87堆疊為在使用x87指令集延伸之32/64/80位元浮點資料之使用以執行純量浮點操作之8資料元(eight-element)堆疊;而MMX暫存器係被使用以於64位元壓縮整數資料中執行操作以及對於在MMX與XMM暫存器之間執行的一些操作保持(hold)運算元。
區段暫存器955-於所示實施例中,有16個16位元暫存器被用以儲存使用於分段的位址產生(segmented address generation)之資料。
RIP暫存器965-於所示實施例中,此64位元暫存器儲存指令指標。
本發明之替代實施例可使用較廣或較窄的暫存器。此外,本發明之替代實施例可使用較多、較少或不同暫存器檔案及暫存器。
第10A-10B圖顯示例示處於可用狀態的處理器架構之方塊圖。這些例示實施例針對隨寬向量處理器(VPU)增加的可用狀態的CPU核心之多個例示進行迴避設計。根據e12t應用,核心透過具有某些固定功能邏輯、記憶體I/O介面、及其他需要的I/O邏輯之高帶寬互連網路來通訊。舉例來說,此實施例作為單獨(stand-alone)GPU的實施將典型包含PCIe匯流排。
第10A圖為根據本發明實施例之單一CPU核心連同其連接晶粒上(on-die)互連網路1002及其層級2(L2)快取之本地子集1004的方塊圖。指令解碼器1000支援x86指令集及包含特定向量友善指令格式800之延伸。雖然於本發明之一實施例中(為了簡化設計),純量單元1008與向量單元1010使用分開的暫存器組(分別為純量暫存器1012與向量暫存器1014)且於其間傳送的資料係被寫入記憶體然後從層級1(L1)快取1006被讀回,本發明之替代實施例可使用不同方式(例如,使用單一暫存器組或包含允許資料在兩個暫存器檔案之間傳送而不需要被寫入與讀回之通訊路徑)。
L1快取1006允許低閒置(low-latency)存取以將記
憶體快取至純量及向量單元中。連同向量友善指令格式中的load-op指令,此意指L1快取1006可被如同延伸的暫存器檔案般對待。此顯著地改善許多演算法的效能,尤其是與逐出提示欄位752B。
L2快取的本地子集1004為部份的整體L2快取,其係被分成分開的本地子集,每個CPU核心有一個。各CPU具有直接存取路徑至其所擁有的L2快取的本地子集1004。由CPU核心所讀取的資料係被儲存於其L2快取的子集1004且可被迅速存取,與其他CPU存取其所擁有的本地L2快取子集同時。由CPU核心所寫入的資料係被儲存於其所擁有的L2快取子集1004且係被從其他子集清除(flush)(若需要)。環式網路確保共享檔案的結合(coherency)。
第10B圖為根據本發明之實施例的第10A圖中部份的CPU核心之展開圖。第10B圖包含L1資料快取1006A(L1快取1004的一部份),以及更詳細的,關於向量單元1010與向量暫存器1014。具體言之,向量單元1010為16寬(16-wide)向量處理器單元(VPU)(見16寬ALU 1028),其執行整數、單精度浮點、及雙精度浮點指令。VPU支援於記憶體輸入以拌和單元1020拌和暫存器輸入、以數值轉換單元1022A-B進行數值轉換、及以複製單元1024進行複製。寫入遮罩暫存器1026允許論斷(predicating)結果的向量寫入。
暫存器資料可以許多方式被拌和,例如支援矩陣乘
法。來自記憶體的資料可被複製遍及VPU通道(lane)。此在圖形與非圖形平行資料處理(其顯著地增加快取效率)中為一般操作。
環式網路為雙向以允許代理器(例如CPU核心、L2快取及其他邏輯方塊)在晶片中彼此通訊。各環式資料路徑(data-path)在每個方向為912位元。
第11圖為根據本發明之實施例的例示不正常架構的方塊圖。具體言之,第11圖顯示已知例示不正常架構,其已被修改以結合向量友善指令格式及其執行。於第11圖中,箭頭表示二或更多單元間的連接,而箭頭的方向表示這些單元間資料流動的方向。第11圖包含耦接至執行引擎單元1110與記憶體單元1115之前端單元1105;執行引擎單元1110進一步耦接至記憶體單元1115。
前端單元1105包含耦接至層級2(L2)分支預估單元1122之層級1(L1)分支預估單元1120。L1與L2分支預估單元1120與1122係耦接至L1指令快取單元1124。L1指令快取單元1124係耦接至指令轉譯後備緩衝區(translation lookaside buffer;TLB)1126,其係進一部耦接至指令提取及預解碼單元1128。指令提取及預解碼單元1128係耦接至指令佇列單元1130,其係進一步耦接至解碼單元1132。解碼單元1132包含一複雜解碼器單元1134與三個簡易解碼器單元1136、1138、1140。解碼
單元1132包含微式碼ROM單元1142。解碼單元1132可如前於解碼階段部分所述般操作。L1指令快取單元1124進一步耦接至記憶體單元1115中之L2快取單元1148。指令TLB單元1126進一步耦接至記憶體單元1115中之第二層級TLB單元1146。解碼單元1132、微式碼ROM單元1142、及迴圈流偵測器單元1144係各耦接至執行引擎單元1110中之更名/分配器單元1156。
執行引擎單元1110包含耦接至報廢單元1174與統一排程器單元1158之更名/分配器單元1156。報廢單元1174係進一步耦接至執行單元1160且包含再排序緩衝單元1178。統一排程器單元1158係進一步耦接至實體暫存器檔案單元1176,其係耦接至執行單元1160。實體暫存器檔案單元1176包含向量暫存器單元1177A、寫入遮罩暫存器單元1177B、純量暫存器單元1177C;三個暫存器單元可提供向量暫存器1110、向量遮罩暫存器1115、及一般目的暫存器1125;且實體暫存器檔案單元1176可包含未顯示的額外暫存器檔案(例如,純量浮點堆疊暫存器檔案1145與其上別名的MMX壓縮整數平暫存器檔案1150)。執行單元1160包含三個混合的純量及向量單元1162、1164、1172;載入單元1166;儲存位址單元1168;儲存資料單元1170。載入單元1166、儲存位址單元1168、及儲存資料單元1170各進一步耦接至記憶體單元1115中的資料TLB單元1152。
記憶體單元1115包含耦接至資料TLB單元1152之
第二層級TLB單元1146。資料TLB單元1152係耦接至L1資料快取單元1154。L1資料快取單元1154係進一步耦接至L2快取單元1148。於某些實施例中,L2快取單元1148係進一步耦接至在記憶體單元1115內部及/或外部之L3及較高快取單元1150。
藉由範例,例示不正常架構可實現程序管道如下:1)指令提取及預解碼單元1128執行提取及長度解碼階段;2)解碼單元1132執行解碼階段;3)更名/分配器單元1156執行分配階段及更名階段;4)統一排程器單元1158執行排程階段;5)實體暫存器檔案單元1176、再排序緩衝單元1178、及記憶體單元1115執行暫存器讀取/記憶體讀取階段1930;執行單元1160執行執行/資料轉換階段;6)記憶體單元1115及再排序緩衝單元1178執行寫回/記憶體寫入階段1960;7)報廢單元1174執行ROB讀取階段;8)各種單元可被包含於例外處理階段;及9)報廢單元1174及實體暫存器檔案單元1176執行確定(commit)階段。
第16圖為根據本發明實施例之單核心處理器及多核心處理器協同積體記憶體控制器與圖形之方塊圖。第16圖之實線方塊顯示處理器1600,其具有單核心1602A、系統代理器1610、一組一或多個匯流排控制器單元1616,而選項的額外虛線方塊顯示替代處理器1600,其具有多
核心1602A-N、系統代理器單元1610中之一組一或多個積體記憶體控制器單元1614、及積體圖形邏輯1608。
記憶體分層包含於核心中之一或多層的快取、一組一或多個共享的快取單元1606、及耦接至該組一或多個積體記憶體控制器單元1614之外部記憶體(未圖示)。該組共享的快取單元1606可包含一或多個中層(mid-level)快取,例如層級2(L2)、層級3(L3)、層級4(L4)或其他層級的快取、最後層級的快取(LLC)、及/或其組合。雖然於一實施例中環式互連單元1612互連至積體圖形邏輯1608、該組共享的快取單元1606、及系統代理器1610,替代實施例可使用任何數量的已知技術以用於互連至該等單元。
於某些實施例中,一或多個核心1602A-N能夠進行多工作線(multi-threading)。系統代理器1610包含協調與操作核心1602A-N的那些組件。系統代理器1610可包含例如電源控制單元(PCU)及顯示單元。PCU可為或包含調節核心1602A-N與積體圖形邏輯1608的電源狀態所需之邏輯及組件。顯示單元係用於驅動一或多個外部連接的顯示器。
核心1602A-N可為同質或異質,根據架構及/或指令集。舉例來說,某些核心1602A-N可為正常的(例如,如同顯示於第10A與10B圖者),而其他者可為不正常的(例如,如同顯示於第11圖者)。如另一範例,二或更多核心1602A-N能夠執行相同指令集,而其他者
能夠執行該指令集或不同指令集之僅一子集。核心的至少一者能夠執行於此所述的向量友善指令格式。
處理器可為一般目的處理器,例如CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、或ItaniumTM處理器,其係來自Intel公司(Santa Clara,Calif)。替代地,處理器可為來自其他公司。處理器可為特定目的處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、協同處理器(co-processor)、嵌入式處理器(embedded processor)、或類似物。處理器可被實現於一或多個晶片。處理器1600可為一部份的及/或可被實現於一或多個基板,其使用任何數量的程序技術,例如BiCMOS、CMOS、或NMOS。
第12-14圖為適合於包含處理器1600之例示系統,而第15圖為可包含一或多個核心1602之例示晶片上的系統(SoC)。於膝上型電腦、桌上型電腦、手持PC;個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機頂盒(set-top box)、微控制器、胞式電話、移動式媒體播放器、手持裝置、及各種其他電子裝置領域中為已知的其他系統設計與組構亦為合適的。一般而言,能夠結合如此處所述之處理器及/或其他執行邏輯之許多種系統或電子裝置係一般為合適的。
現在參照第12圖,所顯示者為根據本發明一實施例之系統1200之方塊圖。系統1200可包含一或多個處理器1210、1215,其係耦接至圖形記憶體控制器集線器(graphics memory controller hub;GMCH)1220。額外的處理器1215之選項的本質係以虛線於第12圖中表示。
各處理器1210、1215可為某版本的處理器1600。然而,應了解的是,積體圖形邏輯與積體記憶體控制單元未必會存在於處理器1210、1215中。
第12圖顯示GMCH 1220可耦接至記憶體1240,其可為例如動態隨機存取記憶體(DRAM)。於至少一實施例中,DRAM可與非揮發性快取相關聯。
GMCH 1220可為晶片組、或晶片組的部份。GMCH 1220可與處理器1210、1215通訊並控制處理器1210、1215與記憶體1240間的互動。GMCH 1220亦可作為處理器1210、1215與系統1200之其他單元間的加速的匯流排介面。於至少一實施例,GMCH 1220經由多點下傳(multi-drop)匯流排(例如前端匯流排(frontside bus;FSB))1295來與處理器1210、1215通訊。
再者,GMCH 1220係耦接至顯示器1245(例如平板顯示器)。GMCH 1220可包含積體圖形加速器。GMCH 1220係進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)1250,其可被使用以將各種週邊裝置耦接至系統1200。第12圖之實施例所示的範例為外部圖形裝置1260,其可為與另一週邊裝置1270一起耦接至ICH 1250
之分散(discrete)圖形裝置。
替代地,額外的或不同的處理器亦可存在於系統1200中。舉例來說,額外的處理器1215可包含與處理器1210相同之額外的處理器、與處理器1210異質或不對稱之額外的處理器、加速器(例如圖形加速器或數位訊號處理(DSP)單元)、場效可程式化閘極陣列、或任何其他處理器。實體資源1210、1215間可有各式各樣的不同,根據品質的度量之範圍(spectrum of metrics of merit),包含架構的、微架構的、熱的、電源消耗特性、及類似物。這些不同可有效地表現其自身在處理元件1210、1215間為不對稱及異質性。於至少一實施例中,各種處理元件1210、1215可置於相同晶粒封裝中。
現參照第13圖,所顯示者為根據本發明一實施例之第二系統1300之方塊圖。如第13圖所示,多處理器系統1300為點對點(point-to-point)互連系統,且包含與經由點對點互連1350而耦接之第一處理器1370與第二處理器1380。如第13圖所示,各處理器1370與1380可為某版本的處理器1600。
替代地,一或多個處理器1370、1380可為元件而非處理器,例如加速器或場效可程式化閘極陣列。
雖然僅以兩個處理器1370、1380顯示,應瞭解的是,本發明之範疇不受限於此。於其他實施例中,一或多個額外的處理元件可存在於給定處理器中。
處理器1370可進一步包含積體記憶體控制器集線器
(IMC)1372及點對點(P-P)介面1376與1378。同樣地,第二處理器1380可包含IMC 1382與P-P介面1386與1388。處理器1370、1380可經由點對點(PtP)介面1350使用PtP介面電路1378、1388來交換資料。如第13圖所示,IMC 1372與1382將處理器耦接至各別記憶體,即是記憶體1342與記憶體1344,其可為區域地附接至各別處理器之主記憶體的一部份。
處理器1370、1380可各別經由獨自的P-P介面1352、1354使用點對點介面電路1376、1394、1386、1398而與晶片組1390交換資料。晶片組1390亦可經由高效能圖形介面1339而與高效能圖形電路1338交換資料。
共享的快取(未圖示)可被包含於兩處理器外部的處理器中但還是經由P-P互連與處理器連接,使得若處理器被置於低電源模式,則處理器的本地快取資訊之一者或兩者可被儲存於共享的快取中。
晶片組1390可經由介面1396而被耦接至第一匯流排1316。於一實施例中,第一匯流排1316可為週邊組件互連(PCI)匯流排,或例如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範疇不受限於此。
如第13圖所示,各種I/O裝置1314可被耦接至第一匯流排1316,以及將第一匯流排1316耦接至第二匯流排1320之匯流排橋接器1318。於一實施例中,第二匯流排
1320可為低針腳數(low pin count;LPC)匯流排。於一實施例中,各種裝置可被耦接至第二匯流排1320,包含例如鍵盤/滑鼠1322、通訊裝置1327、及資料儲存單元1328(例如磁碟機或其他大量儲存裝置,其可包含碼1330)。再者,音訊I/O 1324可耦接至第二匯流排1320。應注意的是,其他架構是可能的。例如,取代第13圖之點對點架構,系統可實現多點下傳匯流排或其他此架構。
現參照第14圖,所顯示者為根據本發明一實施例之第三系統1400之方塊圖。第13與14圖中類似元件係以類似元件符號表示,且第13圖的特定面向已於第14圖中忽略,以避免模糊第14圖的其他面向。
第14圖顯示處理單元1370、1380可分別包含積體記憶體及I/O控制邏輯(control logic;CL)1372與1382。於至少一實施例中,CL 1372、1382可包含記憶體控制器集線器邏輯(IMC),如前所述者。此外,CL 1372、1382亦可包含I/O控制邏輯。第14圖顯示不但記憶體1342、1344係耦接至CL 1372、1382,連I/O裝置1414亦耦接至CL 1372、1382。舊有I/O裝置1415係耦接至晶片組1390。
現參照第15圖,所顯示者為根據本發明一實施例之SoC 1500之方塊圖。其他圖示中類似元件係以類似元件符號表示。同樣的,虛線方塊為在更先進的SoC中之選項的特徵。於第15圖中,互連單元1502係耦接至:包含一
組一或多個核心1602A-N及共享的快取單元1606之應用處理器1510;系統代理器單元1610;匯流排控制器單元1616;積體記憶體控制器單元1614;一組一或多個媒體處理器1520,其可包含積體圖形邏輯1608、用以提供靜態及/或視訊相機功能之影像處理器1524、用以提供硬體音訊加速之音訊處理器1526、及用以提供視訊編碼/解碼加速之及視訊處理器1528;靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(direct memory access;DMA)單元1532;及用以耦接一或多個外部顯示器的顯示單元1540。
於此揭露的機構之實施例可用硬體、軟體、韌體、或此實施方式的組合加以實現。本發明之實施例可用執行於包含至少一處理器、儲存系統(包含揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可程式化的系統之電腦程式或程式碼加以實現。
程式碼可被應用以輸入資料以執行於此說明的功能並產生輸出資訊。輸出資訊可用已知方式被應用至一或多個輸出裝置。關於此應用的目的,處理系統包含具有處理器(例如數位訊號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器之任何系統。
程式碼可用高階程序或物件導向程式語言來實現以與處理系統通訊。若有需要的話,程式碼亦可用組合或機械語言來實現。事實上,於此所述之機構並不限於任何特定程式語言的範疇。於任何情形下,語言可為經編譯
(compiled)或經解譯(interpreted)的語言。
至少一實施例之一或多個面向可藉由儲存於機器可讀取的媒體中之代表指令來實現,其代表處理器中的各種邏輯,當其被機器讀取時,會造成機器產生邏輯以執行於此所述的技術。此代表(已知為「IP核心(IP core)」)可被儲存於實體的機器可讀取的媒體並被供應至許多客戶或製造設施,以載入至實際上產生邏輯或處理器之製造機器中。
此機器可讀取的儲存媒體可包含(但不限於)由機器或裝置製造或形成之物件的非暫時、實體配置,包含儲存媒體(例如硬碟、任何其他類型的磁碟,包含軟碟、光碟(光碟唯讀記憶體(CD-ROM)、可抹寫光碟(CD-RW))、及磁光碟)、半導體裝置,例如唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式化唯讀記憶體(EEPROM)、磁性或光學卡、或適合用於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包含非暫時、實體機器可讀取媒體,其含有向量友善指令格式的指令或含有設計資料,例如硬體描述語言(Hardware Description Language;HDL),其定義於此描述的結構、電路、設備、處理器及/或系統特徵。某些實施例亦可為程式產品。
於某些情形中,指令轉換器亦可被使用以從來源指令集轉換指令至目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二元轉譯、包含動態編譯之動態二元轉譯)、變體(morph)、仿擬(emulate)、或轉換指令至一或多個其他待由核心處理之指令。指令轉換器可被實現於軟體、硬體、韌體、或其組合。指令轉換器可為on處理器、off處理器、或部分on及部分off處理器。
第17圖為根據本發明之實施例對比軟體指令轉換器之將以來源指令集表示的二進制指令轉換成以目標指令集表示的二進制指令之使用的方塊圖。於所示實施例中,指令轉換器為軟體指令轉換器,替代地,指令轉換器可被實現於軟體、硬體、韌體、或其多種組合。第17圖顯示在高階語言1702中的程式可使用x86編譯器1704來編譯以產生x86二進制碼1706,其可由處理器與至少一x86指令集核心1716固有地(natively)執行(其係假設某些被編譯的指令係為以向量友善指令格式表示)。具有至少一x86指令集核心1716之處理器代表任何可執行與具有至少一x86指令集核心的Intel處理器具有實質相同功能之處理器,藉由相容地執行或在另一方面執行(1)Intel x86指令集核心之指令集的實質部分或(2)目標為運行於具有至少一x86指令集核心的Intel處理器之應用程式或其他軟體之物件碼版本,以達成與具有至少一x86指令集核心的Intel處理器有實質地相同結果。x86編譯器1704代表可操作以產生x86二進制碼1706(例如物件
碼)之編譯器,其無論有無額外的連接處理(linkage processing)皆可被執行於具有至少一x86指令集核心1716的處理器。同樣地,第8A-C圖顯示在高階語言1702之程式可使用替代指令集編譯器1708而被編譯以產生替代指令集二進制碼1710,其可藉由處理器(無至少一x86指令集核心1714)而被固有地執行(例如,具有執行MIPS指令集(MIPS Technologies of Sunnyvale,CA)之核心及/或執行ARM指令集(ARM Holdings of Sunnyvale,CA)的處理器)。指令轉換器1712係被使用以將x86二進制碼1706轉換成可藉由處理器(無x86指令集核心1714)而被固有地執行。此經轉換的碼並非有可能與替代指令集二進制碼1710相同,因為能做到的指令轉換器係難以製成;然而,經轉換的碼將實現一般操作且係由來自替代指令集之指令所組成。因此,指令轉換器1712代表軟體、韌體、硬體、或其組合,透過仿擬、模擬、或任何其他處理,允許處理器或其他電子裝置(不具有x86指令集處理器或核心)執行x86二進制碼1706。
於此揭露的向量友善指令格式中的指令之特定操作可藉由硬體組件而被執行且可被用機器可執行的指令(其係被使用以造成或至少導致以指令加以程式化之電路或其他硬體組件執行操作)而體現。電路可包含一般目的或特定目的處理器、或邏輯電路,僅列出一些範例。操作亦可被選項地藉由硬體與軟體的組合來執行。執行邏輯及/或處理器可包含與機器指令或自該機器語言導出之一或多個控
制訊號有反應之特定或特殊的電路或其他邏輯,以儲存指令特定的結果運算元。例如,此處揭露的指令之實施例可被執行於第12-15圖中的一或多個系統而向量友善指令格式中的指令之實施例可被儲存於待被執行於系統中之程式碼。替代地,這些圖式之處理元件可利用此處所說明之詳細的管路及/或架構(正常及不正常架構)之其中一者。例如,正常架構之解碼單元可將指令解碼、將解碼過的指令傳送到向量或純量單元等。
以上描述意欲說明本發明之較佳實施例。由上述說明,應亦為顯而易知的是,尤其是在此成長快速且進一步改善並非輕易預見之技術領域中,本發明可藉由所屬技術領域中具有通常知識者在所述申請專利範圍與其等效之範疇中於不超出本發明的原理在安排與詳細的情況下被修改。例如,方法之一或多個操作可被結合或被進一步分開。
雖然實施例已被描述何者可固有地執行向量友善指令格式,本發明之替代實施例可透過運行於執行不同指令集的處理器(例如執行MIPS指令集的處理器(MIPS Technologies of Sunnyvale,CA)、執行ARM指令集的處理器(ARM Holdings of Sunnyvale,CA))之仿擬層來執行向量友善指令格式。同樣的,雖然圖式中的流程圖顯示由本發明之特定實施例所執行的操作之特定順序,應了解
的是,該順序為例示用(例如,替代實施例可用不同順序、結合特定操作、重複特定操作等來執行操作)。
於以上說明中,關於解釋的目的,各種特定細節已被說明以提供本發明之實施例之徹底的了解。然而,應了解的是,對於所屬技術領域中具有通常知識者而言,一或多個其他實施例可被實現而不需這些特定細節中的某些部分。所描述的特定實施例並非用以限制本發明,而是例示本發明之實施例。本發明之範疇並非藉由以上所提供的特定範例所限制,而係由後附申請專利範圍決定。
Claims (28)
- 一種處理器,包含:一組向量暫存器,各者用以儲存至少128位元;一組寫入罩暫存器,各者用以儲存不多於64位元;硬體解碼器,用以解碼混合指令,其中該混合指令包括待被儲存於該組寫入罩暫存器之一寫入罩暫存器中的寫入罩運算元、目的地運算元、待被儲存於該組向量暫存器之一向量暫存器中的第一來源運算元、以及第二來源運算元,其中該第二來源運算元在記憶體中;以及執行單元,用以使用該第一與第二來源運算元之間的該寫入罩之對應的位元位置作為選擇器來對該第一與第二來源運算元之資料元進行資料元對元選擇(data element-by-element selection),並將所選擇的資料元儲存至在該目的地運算元中的對應位置,且其中該處理器係在該資料元對元選擇前,轉換該第二來源運算元的該資料元。
- 如申請專利範圍第1項之處理器,其中儲存該第一來源運算元之該向量暫存器包含512位元向量暫存器。
- 如申請專利範圍第1項之處理器,其中儲存該寫入罩運算元之該寫入罩暫存器包含64位元暫存器。
- 如申請專利範圍第1項之處理器,其中該寫入罩暫存器中僅至少一有效組位元被使用以儲存該寫入罩運算元。
- 如申請專利範圍第1項之處理器,其中該第一與第二來源運算元之該資料元為32位元資料元與64位元資 料元之一者,且其中該混合指令具有用以指明該第一與第二來源運算元之該資料元的尺寸的一或更多位元。
- 如申請專利範圍第1至5項中任一項之處理器,其中該寫入罩運算元具有用於該目的地運算元中之各位置的唯一位元,該所選擇的資料元係待儲存至該目的地運算元中之各位置中。
- 如申請專利範圍第1至5項中任一項之處理器,其中該組寫入罩暫存器包括較該組向量暫存器更少的暫存器。
- 一種處理器,包含:一組向量暫存器,各者用以儲存至少128位元;一組寫入罩暫存器,各者用以儲存不多於64位元,其中該寫入罩暫存器係操作以被使用於歸零遮罩與合併遮罩兩者;解碼器,用以解碼混合指令,其中該混合指令具有待被儲存於該組向量暫存器之一暫存器中的第一來源運算元、第二來源運算元、以及待被儲存於該組寫入罩暫存器之一寫入罩暫存器中的寫入罩運算元;以及執行單元,對於目的地中的各資料元位置用以執行該已解碼混合指令,以基於在該寫入罩運算元中的對應位置中的位元而選擇在該第一來源運算元中的對應位置中的資料元與在該第二來源運算元中的對應位置中的資料元中的一者,並將所選擇的資料元儲存在該目的地中的該資料元位置中。
- 如申請專利範圍第8項之處理器,其中儲存該第一來源運算元之該向量暫存器包含512位元向量暫存器。
- 如申請專利範圍第8項之處理器,其中儲存該寫入罩運算元之該寫入罩暫存器包含64位元暫存器。
- 如申請專利範圍第8項之處理器,其中該第一與第二來源運算元之該資料元為32位元資料元與64位元資料元之一者。
- 如申請專利範圍第8項之處理器,其中該混合指令具有用以指明該第一與第二來源運算元之該資料元的尺寸的一或更多位元。
- 如申請專利範圍第8至12項中任一項之處理器,其中在該寫入罩暫存器中僅至少一有效組位元被使用來儲存該寫入罩運算元。
- 如申請專利範圍第8至12項中任一項之處理器,其中該寫入罩運算元包括與待被儲存該所選擇的資料元之該目的地中的資料元位置之數量相同數量的鄰近位元。
- 如申請專利範圍第8至12項中任一項之處理器,其中該組寫入罩暫存器包括較該組向量暫存器更少的暫存器。
- 如申請專利範圍第8至12項中任一項之處理器,其中該第二來源運算元係在記憶體中,且其中該處理器係在該資料元對元選擇前,轉換該第二來源運算元的該資料元。
- 如申請專利範圍第1至5項中任一項之處理器,其中該寫入罩暫存器用以藉由在具有該混合指令之指令集中的其他指令被使用於預測。
- 如申請專利範圍第1至5項中任一項之處理器,其中該混合指令係包括於一指令集,該指令集具有待被儲存於該寫入罩暫存器且係用以使用歸零遮罩的寫入罩運算元。
- 如申請專利範圍第1至5項中任一項之處理器,其中該些寫入罩暫存器係操作以被使用於歸零遮罩與合併遮罩兩者。
- 如申請專利範圍第8項之處理器,其中該寫入罩運算元係用以具有比該寫入罩暫存器少的位元。
- 如申請專利範圍第8項之處理器,其中該寫入罩暫存器用以被使用於藉由在具有該混合指令之指令集中的其他指令之預測。
- 如申請專利範圍第8、20及21項中任一項之處理器,其中該混合指令係包括於一指令集,該指令集具有待被儲存於該寫入罩暫存器且係用以使用該歸零遮罩的寫入罩暫存器運算元的其他指令。
- 如申請專利範圍第8、20及21項中任一項之處理器,其中該混合指令係用以包括一欄位,該欄位用以控制該合併遮罩與該歸零遮罩之何者待被使用。
- 一種處理器,包含:多個向量暫存器; 多個寫入罩暫存器;解碼器,用以解碼指令,其中該指令用以具有待被儲存於該多個向量暫存器之一向量暫存器中的第一運算元、第二運算元、待被儲存於該多個寫入罩暫存器之一寫入罩暫存器中的寫入罩暫存器運算元、以及目的地運算元;以及執行單元,回應該指令以用以廣播該第二運算元之資料元以產生用以具有多個資料元的第三運算元、用以使用於該寫入罩暫存器運算元之位元位置的值以於該第一與第三運算元之對應資料元間同時選擇、以及用以將該些被選擇的資料元儲存於該目的地運算元中的對應位置中。
- 如申請專利範圍第24項之處理器,其中待被使用以於該些對應資料元間選擇的該寫入罩暫存器運算元之該些位元位置之數量相同於該第一運算元中之該多個資料元之數量,且其中待被使用以於該些對應資料元間選擇的該寫入罩暫存器運算元之該些位元位置之數量小於用以儲存該寫入罩暫存器運算元之該寫入罩暫存器中的位元位置之數量。
- 如申請專利範圍第24項之處理器,其中該寫入罩暫存器用以藉由在具有該指令之指令集中的其他指令被使用於預測。
- 如申請專利範圍第24至26項中任一項之處理器,其中該指令係用以包括一欄位,該欄位用以控制合併遮罩與歸零遮罩之何者待被使用於該指令。
- 如申請專利範圍第24至26項中任一項之處理器,其中該指令係包括於一指令集,該指令集具有待被儲存於該寫入罩暫存器且係用以使用歸零遮罩的寫入罩暫存器運算元的其他指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/078,864 US20120254588A1 (en) | 2011-04-01 | 2011-04-01 | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201531946A TW201531946A (zh) | 2015-08-16 |
TWI552080B true TWI552080B (zh) | 2016-10-01 |
Family
ID=46928898
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100146254A TWI470554B (zh) | 2011-04-01 | 2011-12-14 | 使用寫入罩混合兩來源運算元至單一目的地之系統、裝置及方法 |
TW103140467A TWI552080B (zh) | 2011-04-01 | 2011-12-14 | 處理器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100146254A TWI470554B (zh) | 2011-04-01 | 2011-12-14 | 使用寫入罩混合兩來源運算元至單一目的地之系統、裝置及方法 |
Country Status (9)
Country | Link |
---|---|
US (3) | US20120254588A1 (zh) |
JP (3) | JP5986188B2 (zh) |
KR (1) | KR101610691B1 (zh) |
CN (3) | CN109471659B (zh) |
BR (1) | BR112013025409A2 (zh) |
DE (1) | DE112011105122T5 (zh) |
GB (2) | GB2503829A (zh) |
TW (2) | TWI470554B (zh) |
WO (1) | WO2012134560A1 (zh) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
EP3805921B1 (en) | 2011-04-01 | 2023-09-06 | INTEL Corporation | Vector friendly instruction format and execution thereof |
US20120254588A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
CN106406818B (zh) * | 2011-12-22 | 2020-06-16 | 英特尔公司 | 打包数据操作掩码串接处理器、方法、系统及指令 |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
CN104169867B (zh) * | 2011-12-23 | 2018-04-13 | 英特尔公司 | 用于执行掩码寄存器至向量寄存器的转换的系统、装置和方法 |
CN107145335B (zh) * | 2011-12-23 | 2021-01-22 | 英特尔公司 | 用于大整数运算的向量指令的装置和方法 |
CN106802788B (zh) * | 2012-03-30 | 2019-11-08 | 英特尔公司 | 用于处理sha-2安全散列算法的方法和设备 |
US9501276B2 (en) * | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
US9411593B2 (en) * | 2013-03-15 | 2016-08-09 | Intel Corporation | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
US9207941B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses, and methods for reducing the number of short integer multiplications |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US9081700B2 (en) * | 2013-05-16 | 2015-07-14 | Western Digital Technologies, Inc. | High performance read-modify-write system providing line-rate merging of dataframe segments in hardware |
US10331451B2 (en) | 2013-06-26 | 2019-06-25 | Intel Corporation | Method and apparatus to process SHA-2 secure hashing algorithm |
US9395990B2 (en) | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
WO2015096001A1 (en) * | 2013-12-23 | 2015-07-02 | Intel Corporation | System-on-a-chip (soc) including hybrid processor cores |
EP3123301A1 (en) | 2014-03-27 | 2017-02-01 | Intel Corporation | Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements |
CN106030514B (zh) | 2014-03-28 | 2022-09-13 | 英特尔公司 | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 |
US9513913B2 (en) * | 2014-07-22 | 2016-12-06 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
EP3001307B1 (en) * | 2014-09-25 | 2019-11-13 | Intel Corporation | Bit shuffle processors, methods, systems, and instructions |
US9467279B2 (en) | 2014-09-26 | 2016-10-11 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
JP2018503162A (ja) * | 2014-12-17 | 2018-02-01 | インテル・コーポレーション | スピンループジャンプを実行するための装置および方法 |
US20160179521A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Method and apparatus for expanding a mask to a vector of mask values |
US20160188341A1 (en) * | 2014-12-24 | 2016-06-30 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method for fused add-add instructions |
US20160188333A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Coporation | Method and apparatus for compressing a mask value |
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 |
US10001995B2 (en) * | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
EP3125108A1 (en) * | 2015-07-31 | 2017-02-01 | ARM Limited | Vector processing using loops of dynamic vector length |
US9830150B2 (en) * | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
US20170177350A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Set-Multiple-Vector-Elements Operations |
US10152321B2 (en) * | 2015-12-18 | 2018-12-11 | Intel Corporation | Instructions and logic for blend and permute operation sequences |
US10275243B2 (en) | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
JP6544363B2 (ja) | 2017-01-24 | 2019-07-17 | トヨタ自動車株式会社 | 内燃機関の制御装置 |
WO2018174931A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and appartus for tile configuration |
WO2019009870A1 (en) | 2017-07-01 | 2019-01-10 | Intel Corporation | SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE |
US11023235B2 (en) | 2017-12-29 | 2021-06-01 | Intel Corporation | Systems and methods to zero a tile register pair |
US11809869B2 (en) | 2017-12-29 | 2023-11-07 | Intel Corporation | Systems and methods to store a tile register pair to memory |
US11789729B2 (en) | 2017-12-29 | 2023-10-17 | Intel Corporation | Systems and methods for computing dot products of nibbles in two tile operands |
US11669326B2 (en) | 2017-12-29 | 2023-06-06 | Intel Corporation | Systems, methods, and apparatuses for dot product operations |
US11093247B2 (en) | 2017-12-29 | 2021-08-17 | Intel Corporation | Systems and methods to load a tile register pair |
US11816483B2 (en) | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
US10664287B2 (en) | 2018-03-30 | 2020-05-26 | Intel Corporation | Systems and methods for implementing chained tile operations |
US11093579B2 (en) | 2018-09-05 | 2021-08-17 | Intel Corporation | FP16-S7E8 mixed precision for deep learning and other algorithms |
US10970076B2 (en) | 2018-09-14 | 2021-04-06 | Intel Corporation | Systems and methods for performing instructions specifying ternary tile logic operations |
US11579883B2 (en) | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
US10866786B2 (en) | 2018-09-27 | 2020-12-15 | Intel Corporation | Systems and methods for performing instructions to transpose rectangular tiles |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
US10990396B2 (en) | 2018-09-27 | 2021-04-27 | Intel Corporation | Systems for performing instructions to quickly convert and use tiles as 1D vectors |
US10963256B2 (en) | 2018-09-28 | 2021-03-30 | Intel Corporation | Systems and methods for performing instructions to transform matrices into row-interleaved format |
US10896043B2 (en) | 2018-09-28 | 2021-01-19 | Intel Corporation | Systems for performing instructions for fast element unpacking into 2-dimensional registers |
US10929143B2 (en) | 2018-09-28 | 2021-02-23 | Intel Corporation | Method and apparatus for efficient matrix alignment in a systolic array |
US10963246B2 (en) | 2018-11-09 | 2021-03-30 | Intel Corporation | Systems and methods for performing 16-bit floating-point matrix dot product instructions |
US10929503B2 (en) | 2018-12-21 | 2021-02-23 | Intel Corporation | Apparatus and method for a masked multiply instruction to support neural network pruning operations |
US11886875B2 (en) | 2018-12-26 | 2024-01-30 | Intel Corporation | Systems and methods for performing nibble-sized operations on matrix elements |
US11294671B2 (en) | 2018-12-26 | 2022-04-05 | Intel Corporation | Systems and methods for performing duplicate detection instructions on 2D data |
US20200210517A1 (en) | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
US10942985B2 (en) | 2018-12-29 | 2021-03-09 | Intel Corporation | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions |
US10922077B2 (en) | 2018-12-29 | 2021-02-16 | Intel Corporation | Apparatuses, methods, and systems for stencil configuration and computation instructions |
US11269630B2 (en) | 2019-03-29 | 2022-03-08 | Intel Corporation | Interleaved pipeline of floating-point adders |
US11016731B2 (en) | 2019-03-29 | 2021-05-25 | Intel Corporation | Using Fuzzy-Jbit location of floating-point multiply-accumulate results |
US10990397B2 (en) | 2019-03-30 | 2021-04-27 | Intel Corporation | Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator |
US11175891B2 (en) | 2019-03-30 | 2021-11-16 | Intel Corporation | Systems and methods to perform floating-point addition with selected rounding |
US11403097B2 (en) | 2019-06-26 | 2022-08-02 | Intel Corporation | Systems and methods to skip inconsequential matrix operations |
US11334647B2 (en) | 2019-06-29 | 2022-05-17 | Intel Corporation | Apparatuses, methods, and systems for enhanced matrix multiplier architecture |
US11714875B2 (en) | 2019-12-28 | 2023-08-01 | Intel Corporation | Apparatuses, methods, and systems for instructions of a matrix operations accelerator |
US12112167B2 (en) | 2020-06-27 | 2024-10-08 | Intel Corporation | Matrix data scatter and gather between rows and irregularly spaced memory locations |
US11972230B2 (en) | 2020-06-27 | 2024-04-30 | Intel Corporation | Matrix transpose and multiply |
US11941395B2 (en) | 2020-09-26 | 2024-03-26 | Intel Corporation | Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions |
US12001887B2 (en) | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator |
US12001385B2 (en) | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
TW552556B (en) * | 2001-01-17 | 2003-09-11 | Faraday Tech Corp | Data processing apparatus for executing multiple instruction sets |
TW200606715A (en) * | 2004-04-07 | 2006-02-16 | Sandbridge Technologies Inc | Processor having compound instruction and operation formats |
US20090172349A1 (en) * | 2007-12-26 | 2009-07-02 | Eric Sprangle | Methods, apparatus, and instructions for converting vector data |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
JPS57209570A (en) * | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
JPS6059469A (ja) * | 1983-09-09 | 1985-04-05 | Nec Corp | ベクトル処理装置 |
US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
JPH0193868A (ja) * | 1987-10-05 | 1989-04-12 | Nec Corp | データ処理装置 |
US5487159A (en) * | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
US5996066A (en) * | 1996-10-10 | 1999-11-30 | Sun Microsystems, Inc. | Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions |
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6173393B1 (en) * | 1998-03-31 | 2001-01-09 | Intel Corporation | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data |
US6446198B1 (en) * | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
US6523108B1 (en) * | 1999-11-23 | 2003-02-18 | Sony Corporation | Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US7305540B1 (en) * | 2001-12-31 | 2007-12-04 | Apple Inc. | Method and apparatus for data processing |
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US7212676B2 (en) * | 2002-12-30 | 2007-05-01 | Intel Corporation | Match MSB digital image compression |
US7243205B2 (en) * | 2003-11-13 | 2007-07-10 | Intel Corporation | Buffered memory module with implicit to explicit memory command expansion |
GB2409063B (en) * | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
EP1612638B1 (en) * | 2004-07-01 | 2011-03-09 | Texas Instruments Incorporated | Method and system of verifying proper execution of a secure mode entry sequence |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
US7644198B2 (en) * | 2005-10-07 | 2010-01-05 | International Business Machines Corporation | DMAC translation mechanism |
US20070186210A1 (en) * | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US7555597B2 (en) * | 2006-09-08 | 2009-06-30 | Intel Corporation | Direct cache access in multiple core processors |
US20080077772A1 (en) * | 2006-09-22 | 2008-03-27 | Ronen Zohar | Method and apparatus for performing select operations |
JP4785142B2 (ja) * | 2007-01-31 | 2011-10-05 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US8001446B2 (en) * | 2007-03-26 | 2011-08-16 | Intel Corporation | Pipelined cyclic redundancy check (CRC) |
GB2456775B (en) * | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
US20090320031A1 (en) * | 2008-06-19 | 2009-12-24 | Song Justin J | Power state-aware thread scheduling mechanism |
US8209525B2 (en) * | 2008-08-15 | 2012-06-26 | Apple Inc. | Method and apparatus for executing program code |
US8036115B2 (en) * | 2008-09-17 | 2011-10-11 | Intel Corporation | Synchronization of multiple incoming network communication streams |
US7814303B2 (en) * | 2008-10-23 | 2010-10-12 | International Business Machines Corporation | Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively |
US8327109B2 (en) * | 2010-03-02 | 2012-12-04 | Advanced Micro Devices, Inc. | GPU support for garbage collection |
US20120254588A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
-
2011
- 2011-04-01 US US13/078,864 patent/US20120254588A1/en not_active Abandoned
- 2011-12-12 DE DE112011105122.0T patent/DE112011105122T5/de not_active Withdrawn
- 2011-12-12 CN CN201811288381.2A patent/CN109471659B/zh active Active
- 2011-12-12 BR BR112013025409A patent/BR112013025409A2/pt not_active IP Right Cessation
- 2011-12-12 JP JP2014502546A patent/JP5986188B2/ja active Active
- 2011-12-12 CN CN201180069936.4A patent/CN103460182B/zh active Active
- 2011-12-12 WO PCT/US2011/064486 patent/WO2012134560A1/en active Application Filing
- 2011-12-12 CN CN201611035320.6A patent/CN106681693B/zh active Active
- 2011-12-12 KR KR1020137028981A patent/KR101610691B1/ko active IP Right Grant
- 2011-12-12 GB GB1317160.8A patent/GB2503829A/en not_active Withdrawn
- 2011-12-14 TW TW100146254A patent/TWI470554B/zh not_active IP Right Cessation
- 2011-12-14 TW TW103140467A patent/TWI552080B/zh active
-
2013
- 2013-09-27 GB GB1816774.2A patent/GB2577943A/en not_active Withdrawn
-
2016
- 2016-08-04 JP JP2016153777A patent/JP6408524B2/ja active Active
-
2018
- 2018-09-20 JP JP2018175880A patent/JP2019032859A/ja active Pending
- 2018-09-27 US US16/145,156 patent/US20190108029A1/en active Pending
- 2018-09-27 US US16/145,160 patent/US20190108030A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
TW552556B (en) * | 2001-01-17 | 2003-09-11 | Faraday Tech Corp | Data processing apparatus for executing multiple instruction sets |
TW200606715A (en) * | 2004-04-07 | 2006-02-16 | Sandbridge Technologies Inc | Processor having compound instruction and operation formats |
US20090172349A1 (en) * | 2007-12-26 | 2009-07-02 | Eric Sprangle | Methods, apparatus, and instructions for converting vector data |
Also Published As
Publication number | Publication date |
---|---|
CN106681693B (zh) | 2019-07-23 |
CN106681693A (zh) | 2017-05-17 |
GB2577943A (en) | 2020-04-15 |
JP6408524B2 (ja) | 2018-10-17 |
WO2012134560A1 (en) | 2012-10-04 |
TWI470554B (zh) | 2015-01-21 |
TW201531946A (zh) | 2015-08-16 |
GB201816774D0 (en) | 2018-11-28 |
CN109471659A (zh) | 2019-03-15 |
JP2014510350A (ja) | 2014-04-24 |
CN103460182A (zh) | 2013-12-18 |
GB201317160D0 (en) | 2013-11-06 |
JP2017010573A (ja) | 2017-01-12 |
GB2503829A (en) | 2014-01-08 |
DE112011105122T5 (de) | 2014-02-06 |
US20120254588A1 (en) | 2012-10-04 |
BR112013025409A2 (pt) | 2016-12-20 |
US20190108030A1 (en) | 2019-04-11 |
US20190108029A1 (en) | 2019-04-11 |
CN109471659B (zh) | 2024-02-23 |
TW201243726A (en) | 2012-11-01 |
JP5986188B2 (ja) | 2016-09-06 |
KR101610691B1 (ko) | 2016-04-08 |
KR20130140160A (ko) | 2013-12-23 |
JP2019032859A (ja) | 2019-02-28 |
CN103460182B (zh) | 2016-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI552080B (zh) | 處理器 | |
KR101722346B1 (ko) | 적분 이미지 계산 명령어를 위한 방법 및 장치 | |
KR101851487B1 (ko) | 메모리 소스를 목적지 레지스터 내로 확장하고 소스 레지스터를 목적지 메모리 위치 내로 압축하기 위한 시스템, 장치, 및 방법 | |
KR101938290B1 (ko) | 히스토그램을 결정하기 위한 명령어 | |
TWI514273B (zh) | 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 | |
KR101926241B1 (ko) | 레지스터 정렬을 위한 시스템, 장치 및 방법 | |
US9348592B2 (en) | Apparatus and method for sliding window data access | |
US20180081689A1 (en) | Apparatus and method of improved extract instructions | |
TWI489383B (zh) | 遮蔽排列指令的裝置及方法 | |
US20160041827A1 (en) | Instructions for merging mask patterns | |
US9513918B2 (en) | Apparatus and method for performing permute operations | |
KR101618669B1 (ko) | 마스크 레지스터를 이용한 점프를 위한 시스템, 장치, 및 방법 | |
US11275583B2 (en) | Apparatus and method of improved insert instructions | |
US9658850B2 (en) | Apparatus and method of improved permute instructions | |
JP6778375B2 (ja) | ベクトルビット反転を実行するためのプロセッサ、方法、およびシステム | |
EP3391200B1 (en) | Systems, apparatuses, and methods for strided access | |
US9495162B2 (en) | Apparatus and method for performing a permute operation | |
US10719316B2 (en) | Apparatus and method of improved packed integer permute instruction | |
US9389861B2 (en) | Systems, apparatuses, and methods for mapping a source operand to a different range |