TWI550508B - 用於複製資料結構之設備及方法 - Google Patents
用於複製資料結構之設備及方法 Download PDFInfo
- Publication number
- TWI550508B TWI550508B TW101148057A TW101148057A TWI550508B TW I550508 B TWI550508 B TW I550508B TW 101148057 A TW101148057 A TW 101148057A TW 101148057 A TW101148057 A TW 101148057A TW I550508 B TWI550508 B TW I550508B
- Authority
- TW
- Taiwan
- Prior art keywords
- data structure
- instruction
- data
- field
- vector
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
概略言之,本發明係有關於運算科學,及更明確言之,係有關於在不同粒度層級廣播資料值的指令執行單元。
圖1顯示以在一半導體晶片上的邏輯電路體現的一處理核心100之一高階圖。處理核心包括一管線101。該管線係由多個階段組成,各個階段係設計以在需要完整執行一程式碼指令的該多步驟式方法執行一特定步驟。此等階段典型地包括至少:1)指令提取與解碼;2)資料提取;3)執行;4)回寫。該執行階段執行當資料係由另一個先前階段(例如如上步驟2))的相同指令識別及提取時,由在先前階段(例如於如上步驟1))提取與解碼的一指令所識別的一特定操作。在其上操作的資料典型地係從(通用)暫存器儲存空間102提取。操作完成時所產生的新資料也典型地「回寫」至暫存器儲存空間102(例如於如上階段4))。
與執行階段相聯結的邏輯電路典型地係由多個
「執行單元」或「功能單元」103_1至103_N組成,其各自係設計以執行其本身獨特的操作子集(例如第一功能單元執行整數數學運算,第二功能單元執行浮點指令,第三功能單元執行自/至快取記憶體/記憶體的載入/儲存操作等)。由全部功能單元所執行的全部操作集合係相對應於由處理核心100所支援的「指令集」。
電腦科學領域寬廣識別兩型處理器架構:「純量」及「向量」。純量處理器係設計以執行在單一資料集合上從事操作的指令,而向量處理器係設計以執行在多重資料集合上從事操作的指令。圖2A及2B呈示比較實例,驗證純量處理器與向量處理器間的基本差異。
圖2A顯示純量及(AND)指令之實例,其中單一運算元集合A及B係經及運算而產生一單數(或「純量」)結果C(亦即AB=C)。相反地,圖2B顯示向量及(AND)指令之實例,其中二運算元集合A/B及D/E係分別地並列經及運算而同時產生一向量結果C、F(亦即A.AND.B=C及D.AND.E=F)。至於使用的術語,「向量」為具有多個「元體」之一資料元體。舉例言之,向量V=Q、R、S、T、U具有五個不同元體:Q、R、S、T及U。向量V實例的「大小」為5(由於有五個元體)。
圖1也顯示與通用暫存器空間102不同的向量暫存器空間104的存在。更明確言之,通用暫存器空間102名義上用以儲存純量值。如此,當執行單元中之任一者執行純量操作時,其名義上使用從(及結果回寫至)通用暫存器儲
存空間102呼叫的運算元。相反地,當執行單元中之任一者執行向量操作時,其名義上使用從(及結果回寫至)向量暫存器空間107呼叫的運算元。同理,記憶體的不同區可分配用於純量值及向量值的儲存。
也注意在功能單元103_1至103_N的個別輸入及輸出,遮罩邏輯104_1至104_N及105_1至105_N的存在。於多個體現中,實際上只有體現此等層中之一者,但非嚴格要求。針對採用遮罩的任何指令,輸入遮罩邏輯104_1至104_N及/或輸出遮罩邏輯105_1至105_N可用以控制哪些元體係在向量指令上可有效操作。此處,一遮罩向量係讀取自一遮罩暫存器空間106(連同讀取自向量暫存器儲存空間107的輸入資料向量),且係呈示給遮罩邏輯104、105層中之至少一者。
在執行向量程式碼之過程中,各個向量指令不要求一完整資料字元。舉例言之,針對某些指令的輸入向量可能只有8個元體,其它指令的輸入向量可為16個元體,其它指令的輸入向量可為32個元體等。因此遮罩層104/105用以識別一完整向量資料字元的一元體集合,其應用至一特定指令以執行橫跨指令的不同向量大小。典型地,針對各個向量指令,維持於遮罩暫存器空間106的一特定遮罩樣式係藉指令呼叫出,提取自遮罩暫存器空間,及提供給遮罩層104/105中之任一者或二者以「致能」針對該特定向量操作的正確元體集合。
圖3a至3d顯示多個先前技術VBROADCAST指令
之邏輯操作。一VBROADCAST指令有效地複製一資料結構多次成一結果。圖3a至3d的各個先前技術VBROADCAST指令係在具有256位元所得向量資料寬度的一向量處理器架構上體現。
圖3a闡釋一「256位元」VBROADCASTSS指令。如於圖3a中觀察,256位元VBROADCASTSS指令從記憶體301_A讀取一32位元單一精度浮點資料值,及複製八次入256位元目的地302_A。
圖3b闡釋一「128位元」VBROADCASTSS指令。如於圖3b中觀察,128位元VBROADCASTSS指令從記憶體301_B讀取一32位元單一精度浮點資料值,及複製四次入256位元目的地302b。目的地中的其餘四個32位元元體係以零值覆寫。
圖3c闡釋一VBROADCASTSD指令。如於圖3c中觀察,該VBROADCASTSD指令從記憶體301_C讀取一64位元單一精度浮點資料值,及複製四次入256位元目的地302_C。
圖3d闡釋一VBROADCASTF128指令。如於圖3d中觀察,VBROADCASTF128指令從記憶體301_D讀取一128位元資料字元,及複製兩次入256位元目的地302d。來源運算元301_D可為具有兩個64位元雙重精度浮點元體(闡釋於圖3d)或四個32位元單一精度浮點元體(闡釋於圖3d)的一緊縮資料結構。
依據本發明之一實施例,係特地提出一種裝置包含用以執行一第一指令及一第二指令的一執行單元,該執行單元係包括下列:i)輸入暫存器空間以當執行該第一指令時儲存欲複製的一第一資料結構,及當執行該第二指令時儲存欲複製的一第二資料結構,該等第一及第二資料結構係皆為緊縮資料結構,該第一緊縮資料結構的資料值係為該第二緊縮資料結構的資料值的兩倍,該第一資料結構係為該第二資料結構的四倍;ii)複製邏輯電路以當執行該第一指令以產生一第一複製資料結構時複製該第一資料結構,及當執行該第二指令以產生一第二複製資料結構時複製該第二資料結構。
100、990、1102A-N‧‧‧處理核心、核心、處理器核心
101‧‧‧管線
102‧‧‧暫存器儲存空間、通用暫存器空間
103_1-N‧‧‧執行單元、功能單元
104‧‧‧向量暫存器空間
104_1-N、105_1-N‧‧‧遮罩邏輯、遮罩層
106‧‧‧遮罩向量暫存器空間
107‧‧‧向量暫存器空間
301_A-D、1240、1332、1334‧‧‧記憶體
302-A-D‧‧‧256位元目的地
401_A~G‧‧‧輸入資料結構
402_A~G‧‧‧複製資料結構
403_A~G‧‧‧遮罩層
404_A~G‧‧‧結果所得資料結構
501‧‧‧第一暫存器
502‧‧‧複製邏輯電路
503‧‧‧輸出
504‧‧‧遮罩邏輯
505‧‧‧遮罩暫存器
506‧‧‧暫存器
507‧‧‧旁支路徑
510-516‧‧‧處理方塊
600‧‧‧通用向量友善指令格式
605‧‧‧無記憶體存取指令樣板
610‧‧‧無記憶體存取完整捨入控制型別操作指令樣板
612‧‧‧無記憶體存取寫遮罩控制部分捨入控制型別操作指令樣板
615‧‧‧無記憶體存取資料變換型別操作指令樣板
617‧‧‧無記憶體存取寫遮罩控制VSIZE型別操作指令樣板
620‧‧‧記憶體存取指令樣板
625‧‧‧記憶體存取時間性指令樣板
627‧‧‧記憶體存取寫遮罩控制指令樣板
640‧‧‧格式欄位
642‧‧‧基本操作欄位
644‧‧‧暫存器指數欄位
646‧‧‧修正器欄位
646A‧‧‧無記憶體存取
646B‧‧‧記憶體存取
650‧‧‧擴大操作欄位
652‧‧‧α欄位
652A‧‧‧rs欄位
652A.1‧‧‧捨入
652A.2‧‧‧資料變換
652B‧‧‧逐出暗示欄位
652B.1‧‧‧時間性
652B.2‧‧‧非時間性
652C‧‧‧寫遮罩控制欄位
654‧‧‧β欄位
654A‧‧‧捨入控制欄位
654B‧‧‧資料變換欄位
654C‧‧‧資料操弄欄位
657A‧‧‧RL欄位
657A.1‧‧‧捨入
657A.2‧‧‧向量長度(VSIZE)
657B‧‧‧廣播欄位
658‧‧‧捨入操作控制欄位
659A‧‧‧捨入操作欄位
659B‧‧‧向量長度欄位
660‧‧‧規度欄位
662A‧‧‧位移欄位
662B‧‧‧位移標度欄位
664‧‧‧資料元體寬度欄位
668‧‧‧EVEX.U、類別欄位
668A‧‧‧類別A
668B‧‧‧類別B
670‧‧‧寫遮罩欄位
672‧‧‧即刻欄位
674‧‧‧完整操作碼欄位
700‧‧‧特定向量友善指令格式
702‧‧‧EVEX前綴(位元組0-3)
705‧‧‧REX欄位
710‧‧‧REX’欄位
715‧‧‧操作碼映射欄位
720‧‧‧VVVV欄位、EVEX.vvvv
725‧‧‧前綴編碼欄位
730‧‧‧真實操作碼欄位
740‧‧‧MOD R/M欄位
742‧‧‧MOD欄位
744‧‧‧MODR/M.Reg欄位
746‧‧‧MODR/M.r/m欄位
754‧‧‧xxx欄位、SIB.xxx
756‧‧‧bbb欄位、SIB.bbb
800‧‧‧暫存器架構
810‧‧‧向量暫存器
815‧‧‧寫遮罩暫存器
825‧‧‧通用暫存器
845‧‧‧純量浮點堆疊暫存器檔
案(x87堆疊)
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快取單元
1000‧‧‧指令解碼器
1002‧‧‧晶粒上互連體網路、環狀網路
1004‧‧‧L2快取記憶體之一本地子集
1006‧‧‧L1快取記憶體
1006A‧‧‧L1資料快取記憶體
1008‧‧‧純量單元
1010‧‧‧向量單元
1012‧‧‧純量暫存器
1014‧‧‧向量暫存器
1020‧‧‧調合單元
1022A-B‧‧‧數值轉換單元
1024‧‧‧複製單元
1026‧‧‧寫遮罩暫存器
1028‧‧‧16-寬向量ALU
1100、1210、1215、1315、1370、1380‧‧‧處理器
1104A-N‧‧‧快取單元
1106‧‧‧分享快取單元
1108‧‧‧特用邏輯
1110‧‧‧系統代理者單元
1112‧‧‧環
1114、1372、1382‧‧‧整合記憶體控制單元
1116‧‧‧匯流排控制器單元
1200、1300、1400‧‧‧系統
1220‧‧‧控制器中樞器
1245、1338、1520‧‧‧共處理器
1250‧‧‧輸入/輸出中樞器(IOH)
1260、1314、1414‧‧‧I/O裝置
1290‧‧‧圖形記憶體控制器中樞器(GMCH)
1316‧‧‧第一匯流排
1318‧‧‧匯流排橋接器
1320‧‧‧第二匯流排
1322‧‧‧鍵盤/滑鼠
1327‧‧‧通訊裝置
1328‧‧‧儲存單元
1330‧‧‧指令/代碼及資料
1339‧‧‧高效能介面
1352、1354‧‧‧點對點(P-P)介面
1376、1378、1386、1388、1394、1398‧‧‧點對點介面電路
1390‧‧‧晶片組
1396‧‧‧介面
1415‧‧‧舊式I/O裝置
1500‧‧‧單晶片系統(SoC)
1502‧‧‧互連體單元
1510‧‧‧應用程式處理器
1530‧‧‧SRAM單元
1532‧‧‧DMA單元
1540‧‧‧顯示單元
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二進制碼
1608‧‧‧另一指令集編譯器
1610‧‧‧另一指令集二進制碼
1612‧‧‧指令轉換器
1614‧‧‧不具x86指令集核心之處理器
1616‧‧‧具有至少一個x86指令集核心之處理器
A、B‧‧‧單一運算元集合
C‧‧‧單數結果、純量結果
本發明係於附圖之圖式中舉例說明但非限制性,其中類似的元件符號係指示相似的元件及附圖中:圖1顯示一指令執行管線;圖2A及2B比較純量處理與向量處理;圖3a至3d顯示先前技術VBROADCAST指令;圖4a至4g顯示改良式VBROADCAST指令;圖5a及5b係有關於用以體現改良式VBROADCAST指令的執行邏輯電路;圖6A至6B為方塊圖例示說明依據本發明之實施例,一種通用向量友善指令格式及其指令樣板;圖7A至7D為方塊圖例示說明依據本發明之實施例特定向量友善指令格式之一實例;
圖7B為方塊圖例示說明依據本發明之一個實施例組成該完整操作碼欄位674的特定向量友善指令格式700之欄位;圖7C為方塊圖例示說明依據本發明之一個實施例組成該暫存器指數欄位644的特定向量友善指令格式700之欄位;圖7D為方塊圖例示說明依據本發明之一個實施例組成該擴大操作碼欄位650的特定向量友善指令格式700之欄位;圖8為依據本發明之一個實施例一暫存器架構之方塊圖;圖9A為方塊圖例示說明依據本發明之實施例,有序管線之一實例及暫存器重新命名失序簽發/執行管線之一實例二者;圖9B為方塊圖例示說明依據本發明之實施例,有序架構核心之一具體實施例及欲含括於一處理器內的暫存器重新命名失序簽發/執行架構核心之一實例二者;圖10A-B例示說明更特定有序核心架構實例之方塊圖,該核心將為一晶片中的數個邏輯區塊中之一者(包括相同型別及/或不同型別的其它核心);圖11為依據本發明之實施例,可具有多於一個核心,可具有一個整合記憶體控制器,及可具有整合圖形裝置之一處理器的方塊圖;圖12為依據本發明之一個實施例一系統的方塊圖;
圖13為依據本發明之一實施例一第一更特定系統實例的方塊圖;圖14為依據本發明之一實施例一第二更特定系統實例的方塊圖;圖15為依據本發明之一實施例一單晶片系統(SoC)的方塊圖;及圖16為依據本發明之實施例對比一軟體指令轉換器的使用以將於一來源指令集中之一二進制指令轉換成於一自標指令集中之一二進制指令的方塊圖。
圖4a至4f係有關於進階VBROADCAST指令之一新集合。該進階VBROADCAST指令之新集合係以一寫遮罩層為特徵,該寫遮罩層係許可以在被複製的資料結構內部的資料元體之粒度遮罩。舉例言之,若被複製的資料結構是個64位元結構含有兩個32位元單一精度值,則該寫遮罩將支援32位元粒度的遮罩。又,雖然前文於圖3a至3d討論的先前技術VBROADCAST指令產生一256位元結果,但相反地,圖4a至4f的改良式VBROADCAST指令產生一512位元結果。如將於後文討論顯然易知,擴延至512位元結果比較圖3a至3d的先前技術VBROADCAST指令,許可獲得顯著更複雜的複製樣式。
圖4a顯示具有遮罩之VBROADCASTSS指令。如
於圖4a觀察,該VBROADCASTSS指令複製一32位元輸入資料結構401_A十六次以產生一複製資料結構402_A。一遮罩層403_A施加一遮罩樣式以於32位元粒度遮罩該複製資料結構402_A以產生結果所得資料結構404_A。須瞭解結果所得資料結構最終係寫至向量暫存器空間中的一目的地暫存器。該目的地暫存器的位址係載明於該指令之一欄位。
於一實施例中,該輸入資料結構為讀取自記憶體或擷取自一向量來源運算元(例如的最右元體)的一32位元單一精度浮點值,該向量來源運算元係提取自向量暫存器空間,諸如圖1的暫存器空間107。於任一種情況下,該指令格式係包括一欄位,識別何處可找到該欲被複製的資料結構。
於圖4a之遮罩樣式中觀察得的1及0的特定樣式僅為舉例說明。熟諳技藝人士將瞭解符合遮罩大小的1及0的任何樣式皆可使用。於一實施例中,遮罩樣式係嵌入於指令本身(例如同即刻運算元)。另外,遮罩樣式可提取自遮罩樣式暫存器空間,諸如圖1之遮罩暫存器空間106。於前一情況下,指令格式係包括含有實際遮罩樣式之一欄位;而於後一情況下,指令格式係包括識別該遮罩樣式欲提取自其中的該欄位。
於一向量友善指令格式的體現中,其實施例容後詳述,指令格式支援此等遮罩樣式之兩項技術。於此種情況下,指令格式包括一額外欄位。於此種情況下,該指令格式包括一額外欄位識別針對該指令欲取哪個辦法(例如
1=遮罩樣式係同嵌入於指令的即刻運算元,0=遮罩樣式欲提取自遮罩暫存器空間)。
分開地或組合地,施用遮罩的型別可為「合併」或「歸零」。於合併遮罩之情況下,結果所得資料結構的「經遮罩」欄位(諸如欄位405)未經覆寫。反而維持於該位置的目的地暫存器的原先值。相反地,於歸零遮罩之情況下,結果所得資料結構的「經遮罩」欄位以0值覆寫於該目的地暫存器中的位置。於各個實施例中(諸如與恰如前述的向量友善指令格式相聯結者),是否施用合併遮罩或歸零遮罩係載明於該指令格式的另一個欄位。
前述有關遮罩的備註也係施用至與圖4b至4f相聯結的如下指令討論。為求方便在此不再重複。
圖4b顯示具有遮罩的VBROADCASTSD指令。如於圖4b觀察,該VBROADCASTSD指令複製一64位元輸入資料結構401_B八次以產生一複製資料結構402_B。一遮罩層403_B施加一遮罩樣式以於64位元粒度遮罩該複製資料結構402_B以產生結果所得資料結構404_B。須瞭解結果所得資料結構最終係寫至向量暫存器空間中的一目的地暫存器。該目的地暫存器的位址係載明於該指令之一欄位。
於一實施例中,該輸入資料結構為讀取自記憶體或擷取自一向量來源運算元(例如的最右元體)的一64位元雙重精度浮點值,該向量來源運算元係提取自向量暫存器空間,諸如圖1的暫存器空間107。於任一種情況下,該指令格式係包括一欄位,識別何處可找到該欲被複製的資料
結構。
圖4c顯示具有遮罩之VBROADCAST 32 X 2指令。如於圖4c觀察,該VBROADCAST 32 X 2指令複製一64位元輸入資料結構401_C八次以產生一複製資料結構402_C。但複製64位元輸入資料結構401_C乃一對緊縮32位元單一精度浮點值。因此遮罩層403_C施加一遮罩樣式以於32位元粒度產生結果所得資料結構404_C。須瞭解結果所得資料結構最終係寫至向量暫存器空間中的一目的地暫存器。該目的地暫存器的位址係載明於該指令之一欄位。
於一實施例中,該輸入資料結構為讀取自記憶體或擷取自一向量來源運算元(例如的最右元體),該向量來源運算元係提取自向量暫存器空間,諸如圖1的暫存器空間107。於任一種情況下,該指令格式係包括一欄位,識別何處可找到該欲被複製的資料結構。
圖4d顯示具有遮罩之VBROADCAST 32 X 4指令。如於圖4d觀察,該VBROADCAST 32 X 4指令複製一128位元輸入資料結構401_D四次以產生一複製資料結構402_D。但複製128位元輸入資料結構401_D乃緊縮32位元單一精度浮點值的一四元字組(四重元)。因此遮罩層403_D施加一遮罩樣式以於32位元粒度產生結果所得資料結構404_D。須瞭解結果所得資料結構最終係寫至向量暫存器空間中的一目的地暫存器。該目的地暫存器的位址係載明於該指令之一欄位。
於一實施例中,該輸入資料結構為讀取自記憶體
或擷取自一向量來源運算元(例如的最右元體),該向量來源運算元係提取自向量暫存器空間,諸如圖1的暫存器空間107。於任一種情況下,該指令格式係包括一欄位,識別何處可找到該欲被複製的資料結構。
圖4e顯示具有遮罩之VBROADCAST 32 X 8指令。如於圖4e觀察,該VBROADCAST 32 X 8指令複製一256位元輸入資料結構401_E四次以產生一複製資料結構402_E。但複製256位元輸入資料結構401_E乃緊縮32位元單一精度浮點值的一八元字組(八重元)。因此遮罩層403_E施加一遮罩樣式以於32位元粒度產生結果所得資料結構404_E。須瞭解結果所得資料結構最終係寫至向量暫存器空間中的一目的地暫存器。該目的地暫存器的位址係載明於該指令之一欄位。
於一實施例中,該輸入資料結構為讀取自記憶體或擷取自一向量來源運算元(例如的最右元體),該向量來源運算元係提取自向量暫存器空間,諸如圖1的暫存器空間107。於任一種情況下,該指令格式係包括一欄位,識別何處可找到該欲被複製的資料結構。
圖4f顯示具有遮罩之VBROADCAST 64 X 2指令。如於圖4f觀察,該VBROADCAST 64 X 2指令複製一128位元輸入資料結構401_F四次以產生一複製資料結構402_F。但複製128位元輸入資料結構401_F乃一對緊縮64位元雙重精度浮點值。因此遮罩層403_F施加一遮罩樣式以於64位元粒度產生結果所得資料結構404_F。須瞭解結果所
得資料結構最終係寫至向量暫存器空間中的一目的地暫存器。該目的地暫存器的位址係載明於該指令之一欄位。
於一實施例中,該輸入資料結構為讀取自記憶體或擷取自一向量來源運算元(例如的最右元體),該向量來源運算元係提取自向量暫存器空間,諸如圖1的暫存器空間107。於任一種情況下,該指令格式係包括一欄位,識別何處可找到該欲被複製的資料結構。
圖4g顯示具有遮罩之VBROADCAST 64 X 4指令。如於圖4g觀察,該VBROADCAST 64 X 4指令複製一256位元輸入資料結構401_G二次以產生一複製資料結構402_G。但複製256位元輸入資料結構401_G乃一四元字組之緊縮64位元雙重精度浮點值。因此遮罩層403_G施加一遮罩樣式以於64位元粒度產生結果所得資料結構404_G。須瞭解結果所得資料結構最終係寫至向量暫存器空間中的一目的地暫存器。該目的地暫存器的位址係載明於該指令之一欄位。
於一實施例中,該輸入資料結構為讀取自記憶體或擷取自一向量來源運算元(例如的最右元體),該向量來源運算元係提取自向量暫存器空間,諸如圖1的暫存器空間107。於任一種情況下,該指令格式係包括一欄位,識別何處可找到該欲被複製的資料結構。
於如上VBROADCAST 32 X 4、VBROADCAST 32 X 8、VBROADCAST 64 X 2、及VBROADCAST 64 X 4之討論中,欲複製的資料結構係被描述為只得自記憶體。
但可知此等指令可被延伸以接收來自記憶體或向量暫存器空間的欲複製的資料結構。如此,取決於體現,支援此等指令的一管線之資料提取階段可耦接至記憶體或記憶體及暫存器空間。
此外,具有遮罩的VBROADCASTSS、具有遮罩的VBROADCASTSD、VBROADCAST 32 X 2、VBROADCAST 32 X 4、VBROADCAST 32 X 8、VBROADCAST 64 X 2、及VBROADCAST 64 X 4指令各自之討論被描述為只支援浮點資料值。可知此等指令可被延伸以處理整數及浮點資料值。此處,圖1的暫存器空間102可包括專用以儲存浮點值的一第一部分及專用以儲存浮點值的另一部分。若不延伸至整數值,則就此等指令被處理的方式,該管線的資料提取階段及回寫階段係耦接至浮點暫存器空間而非整數暫存器空間。相反地,若此等指令係設計以支援兩個資料型別,則資料提取階段及回寫階段係耦接至任一者(取決於指令的解碼)。
圖5a顯示可體現前文於圖4a至4f討論的指令之任一種組合(包括全部)的用以執行的邏輯設計。參考圖5a,第一暫存器501保有欲複製的資料結構。注意第一暫存器501的大小須夠大以保有它預期可複製的最大的資料結構。此外,第一暫存器501也係位在管線中一資料提取階段的後端。為了達成本案目的,此種暫存器可視為執行單元的一部分。第一暫存器501係耦接至複製邏輯電路502,該複製邏輯電路502複製第一暫存器內部內容以於其輸出503
產生符合所執行指令的複製資料結構。針對經微編碼的該等體現,用於複製邏輯電路502「邏輯電路」等詞將包括微碼及應答該微碼而作用的邏輯。
複製邏輯電路之輸出503係耦接至遮罩邏輯504,該遮罩邏輯504從暫存器505接收一遮罩樣式以施加一遮罩至該複製資料結構以在暫存器506產生所得資料結構。取決於體現,暫存器506可相對應於向量暫存器空間107內部之暫存器,或暫存器506可為執行單元內部的暫存器,其充滿目的地暫存器內容(例如於資料提取階段期間),及然後在遮罩邏輯已經將結果寫入其中後回寫至相同目的地暫存器。
於又一實施例中,執行單元邏輯電路係設計以支援不僅圖4a至4g之任何/全部指令,同時也支援圖3a至3d之任何/全部先前技術指令。於此種情況下,由於圖3a至3d的先前技術指令不支援遮罩,故存在有一旁支路徑507,當執行此等指令時該旁支路徑507係繞道該遮罩邏輯504。
雖然前述指令之描述含括資料值的特定位元寬度、欲複製的資料結構及結果的大小,但熟諳技藝人士將瞭解此處描述的構想可擴延至不同的個別寬度。
圖5b顯示可由圖5a之邏輯電路執行的方法。欲複製的資料結構係置於第一暫存器510,及若施加遮罩511,一遮罩樣式係置於第二暫存器512。然後遵照執行的指令複製資料結構以產生一複製資料結構513。若施加遮罩514,則遮罩樣式係施加至複製資料結構515以產生結果。若不施
加遮罩,則結果為複製資料結構516。
指令格式實例
此處描述的指令實施例可以不同形式實施。此外,系統、架構、及管線的實例描述如後。可於此等系統、架構、及管線上執行的指令實施例並非限於此處詳述者。
通用向量友善指令格式
一向量友善指令格式乃適用於向量指令之一指令格式(例如可有向量操作特定的某些欄位)。雖然描述實施例其中向量操作及純量操作二者係透過向量友善指令格式的支援,但替代實施例只使用向量操作向量友善指令格式。
圖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指令樣板內部顯示一無記憶體存取完整捨入控制型別操作610指令樣板及一無記憶體存取資料變換型別操作615指令樣板;及2)在記憶體存取620指令樣板內部顯示一記憶體存取時間性625指令樣板及一記憶體存取非時間性630指令樣板。圖6B中的類別B指令樣板包括:1)在無記憶體存取605指令樣板內部顯示一無記憶體存取寫遮罩控制部分捨入控制型別操作612指令樣板及一無記憶體存取寫遮罩控制vsize型別操作617指令樣板;及2)在記憶體存取620指令樣板內部顯示一記憶體存取寫遮罩控制627指令樣板。
通用向量友善指令格式600包括以圖6A-6B例示說明的順序之如下列舉的欄位。結合前文討論,於一實施例中,述及後文於圖6A-B及圖7提供的格式,可運用無記憶體存取指令型別605或記憶體存取指令型別620。讀遮罩、
輸入向量運算元及目的地的位址可於後述暫存器位址欄位644識別。於進一步實施例中,讀遮罩及寫遮罩係於EVEX.kkk欄位編碼。
格式欄位640-於本欄位之一特定值(指令格式識別符值)獨特地識別向量友善指令格式,及如此指令以向量友善指令格式出現於指令串流。如此,本欄位係為選擇性,表示一指令集無需只有通用向量友善指令格式。
基本操作欄位642-其內容區別不同的基本操作。
暫存器指數欄位644-其內容直接地或透過位址的產生而載明來源運算元及目的地運算元的位置,無論係在暫存器或在記憶體。如此包括足夠數目的位元而從PxQ(例如32x512、16x128、32x1024、64x1024)個暫存器檔案中選擇N個暫存器。雖然於一個實施例中,N可高達三個來源及一個目的地暫存器,其它實施例可支援更多或更少的來源及目的地暫存器(例如可支援高達二來源於該處此等來源中之一者也作為目的地,可支援高達三來源於該處此等來源中之一者也作為目的地,可支援高達二來源及一個目的地)。
修正器欄位646-其內容區別於通用向量指令格式中載明來自非區別的記憶體存取的指令之出現;換言之,在無記憶體存取605指令樣板與記憶體存取620指令樣板間。記憶體存取操作讀及/或寫至記憶體階層(於某些情況下,使用暫存器中之一指而載明來源及/或目的地位址),但無記憶體存取操作則否(例如來源及目的地為暫存器)。雖然
於一個實施例中,本欄位也在三種不同方式間選擇以執行記憶體位址計算,但其它實施例可支援更多、更少、或不同方式以執行記憶體位址計算。
擴大操作欄位650-其內容區別除了基本操作外,欲執行多項不同操作中之哪一者。本欄位為脈絡專一性。於本發明之一個實施例中,本欄位被劃分成一類別欄位668、一α欄位652、及一β欄位654。擴大操作欄位650許可於單一指令而非2、3或4指令執行共通操作族群。
標度欄位660-其內容許可指數欄位的內容縮放用以產生記憶體位址(例如用於使用2標度*指數+底數的位址產生)。
位移欄位662A-其內容係用作記憶體位址產生的一部分(例如用於使用2標度*指數+底數+位移的位址產生)。
位移因數欄位662B(注意位移欄位662A恰毗連於位移因數欄位662B係指示使用一者或另一者)-其內容係用作為位址產生的一部分;其載明欲藉記憶體位址大小(N)而縮放的一位移因數-於該處乃記憶體位址中的位元組數目(例如用於使用2標度*指數+底數+位移的位址產生)。冗餘低排序位元被忽略不計,因此,位移因數欄位的內容乘以記憶體運算元總大小(N)以產生終位移,欲用在有效位址的計算。N值係由處理器硬體在運行時間基於完整操作碼欄位674(容後詳述)及資料操弄欄位654C決定。位移欄位662A及位移因數欄位662B為選擇性,表示並不用於無記憶體存取605指令樣板及/或不同的實施例可只體現二者中之任一者
或無任一者。
資料元體寬度欄位664-其內容區別欲使用多個資料元體寬度中之哪一者(於若干實施例中用於全部指令;於其它實施例中只用於部分指令)。此一欄位為選擇性,表示若只支援一個資料元體寬度及/或資料元體寬度係使用操作碼的某些面向支援,則並不需要。
寫遮罩欄位670-以每個資料元體位置為基礎,其內容控制在目的地向量運算元中的資料元體位置是否反映基本操作及擴大操作的結果。類別A指令樣板支援合併寫遮罩,而類別B指令樣板支援合併與歸零-寫遮罩二者。當合併時,向量遮罩許可於目的地的任何元體集合受保護免於任何操作(載明於基本操作及擴大操作)執行期間的更新;而另一個實施例中,保有目的地的各個元體的舊值,於該處相對應遮罩位元具有0。相反地,當歸零向量遮罩許可於目的地的任何元體集合於任何操作(載明於基本操作及擴大操作)執行期間被歸零;於一個實施例中,當相對應遮罩位元具有0值時,目的地元體係設定為0。本功能之一子集為有能力控制所形成的操作之向量長度(換言之,元體的跨距經修改,從第一者至最末一者);但並非必要修改的元體為連續。如此,寫遮罩欄位670許可部分向量操作,包括載入、儲存、算術、邏輯等。雖然本發明之實施例描述其中寫遮罩欄位670的內容選擇多個寫遮罩暫存器中之一者其含有欲使用的寫遮罩(及如此寫遮罩欄位670的內容間接地識別欲執行的遮罩),另外或此外,替代實施例許可寫遮罩欄位
670的內容直接地載明欲執行的遮罩。
即刻欄位672-其內容許可即刻規格。本欄位為選擇性表示不存在於不支援即刻的通用向量友善指令格式之一體現,也不存在於不使用即刻的指令。
類別欄位668-其內容在不同類別指令間作區別。參考圖6A-B,本欄位內容係在類別A與類別B指令間作選擇。於圖6A-B中,圓化角隅方形用以指示一特定值係存在於一欄位(例如類別欄位668的類別A 668A及類別B 668B個別存在於圖6A-B)。
類別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-其內容區別欲執行一組捨入操作中之哪一者(例如向上捨入、向下捨入、向零捨入、及捨入至最接近者)。如此,捨入操作控制欄位658許可基於每個指令基礎改變捨入模式。於本發明之一個實施例中,一處理器包括一控制暫存器以載明捨入模式,捨入操作控制欄位650的內容凌駕該暫存器值。
無記憶體存取指令樣板-資料變換型別操作
於該無記憶體存取資料變換型別操作615指令樣板中,β欄位654係解譯為一資料變換欄位654B,其內容區別欲執行一組資料變換中之哪一者(例如無資料變換、調合、廣播)。
以類別A的記憶體存取620指令樣板為例,α欄位652係解譯為逐出暗示欄位652B,其內容區別欲欲使用逐出暗示中之哪一者(例如於圖6A中,時間性652B.1及非時間性652B.2係對記憶體存取時間性625指令樣板及記憶體存取非時間性630指令樣板分別地載明),同時β欄位654係解譯為資料操弄欄位654C,其它容區別欲執行資料操弄操作中之哪一者(又稱基元)(例如無操作;廣播;一來源之向上轉
換;及一目的地的向下轉換)。記憶體存取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)具有使用全部類別指令的不同組成寫成的替代常式,且具有控制流程碼,基於由目前執行該碼的該處理器支援的指令而選擇欲執行的常式之一形式。
特定向量友善指令格式實例
圖7A至7D為方塊圖例示說明依據本發明之實施例特定向量友善指令格式的一實例。圖7A至7D顯示一特定向量友善指令格式700,該格式為特定的意義係指其載明該等欄位的位置、大小、解譯、及順序,以及載明其中部分欄位之值。特定向量友善指令格式700可用以擴延該x86指令集,因此其中部分欄位係與用在既有x86指令集及其擴延者(例如AVX)相似或相同。此一格式維持與既有x86指令集帶有擴延者的前綴編碼欄位、實際操作碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及即刻欄位符合一致。例示說明圖7A至7D的欄位映射的圖6之欄位。
須瞭解雖然本發明之實施例係就通用向量友善
指令格式600之脈絡參考特定向量友善指令格式700描述用於例示說明目的,但除非宣稱之處以外,本發明並非囿限於特定向量友善指令格式700。舉例言之,通用向量友善指令格式600預期涵蓋多個不同的各種欄位之可能尺寸,而特定向量友善指令格式700係顯示為具有特定尺寸欄位。舉個特定實例,雖然資料元體寬度欄位664係例示說明於特定向量友善指令格式700中的一個1位元欄位,但本發明之範圍並非受如此所限(換言之,通用向量友善指令格式600預期涵蓋其它資料元體寬度欄位664的尺寸)。
通用向量友善指令格式600包括下列欄位,以圖7A中例示說明的順序列舉如下。
EVEX前綴(位元組0-3)702-係以四位元組形式編碼。
格式欄位640(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位640且含有0x62(於本發明之一個實施例中用以區別向量友善指令格式的獨特值)。
第二至第四位元(EVEX位元組1-3)包括提供特定能力的多個位元欄位。
REX欄位705(EVEX位元組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),故Rrrr、Xxxx、及Bbbb可藉加總EVEX.R、EVEX.X、及EVEX.B而形成。
REX’欄位610-此乃REX’欄位610的第一部分且為EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),其係用以編碼擴延32暫存器集合的上16或下16。於本發明之一個實施例中,此一位元連同如下指示的其它位元係以反位元格式儲存以與BOUND指令區別(於眾所周知X86 32-位元模式),其真實操作碼位元組為62,但於MOD R/M欄位(容後詳述)不接受於MOD欄位的11值;本發明之替代實施例不儲存以反格式的此一位元及如下指示的其它位元。1之值係用以編碼下16暫存器。換言之,R’Rrrr係藉組合EVEX.R’、EVEX.R、及得自其它欄位的其它RRR形成。
操作碼映射欄位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或更多個來源運算元的指令有效;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。
前綴編碼欄位725(EVEX位元組2,位元[1:0]-pp)-提供基本操作欄位的額外位元。除了對呈EVEX前綴格式的舊式SSE指令提供支援外,也具有緊壓SIMD前綴的效果(並非要求一位元組以表示該SIMD前綴,EVEX前綴只要求2位元)。於一個實施例中,為了支援舊式SSE指令,其使用呈舊式格式及呈EVEX前綴格式二者的SIMD前綴(66H、F2H、F3H),此等舊式SIMD前綴係編碼入SIMD前綴編碼欄位;且在提供給解碼器的PLA之前,係擴延入舊式SIMD前綴,故PLA可執行此等舊式指令的舊式格式及EVEX格式而未經修正)。雖然較新指令可直接使用EVEX前綴編碼欄位的內容作為一操作碼擴延,某些實施例係以類似方式擴延以求一致,但許可藉此等舊式SIMD前綴載明不同的意義。替代實施例可重新設計PLA以支援2位元SIMD前綴編碼,因而無需擴延。
α欄位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’欄位的其餘部分且為EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)可用以編碼擴延32暫存器集合的上16或下16。此一位元係以反位元格式儲存。1之值係用以編碼下16暫存器。換言之,V’VVVV係藉組合EVEX.V’、EVEX.vvvv形成。
寫遮罩欄位670(EVEX位元組3,位元[2:0]-kkk)-其內容載明如前述於寫遮罩暫存器中的一暫存器的指數。於本發明之一個實施例中,特定值EVEX.kkk=000具有特殊表現暗示無寫遮罩係用於該特定指令(此點可以多種方式體現,包括使用硬體接線至全部1的一寫遮罩,或繞道遮罩硬體的硬體)。
真實操作碼欄位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為符號擴延,故只能在-128至127位元組偏位間定址;就64位元組快取行而言,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係過載至disp8*N。換言之,編碼法則或編碼長度不變,但只有藉硬體對位移值的解譯改變(其需要藉記憶體運算元的大小來縮放該位移以獲得一逐位元組位址偏位)。
即刻欄位672係如前述操作。
完整操作碼欄位
圖7B為方塊圖例示說明依據本發明之一個實施例組成完整操作碼欄位674的特定向量友善指令格式700的欄位。更明確言之,完整操作碼欄位674包括格式欄位640、基本操作欄位642、及資料元體寬度(W)欄位664。基本操作欄位642包括前綴編碼欄位725、操作碼映射欄位715、及真實操作碼欄位730。
暫存器指數欄位
圖7C為方塊圖例示說明依據本發明之一個實施例組成暫存器指數欄位644的特定向量友善指令格式700的欄位。更明確言之,暫存器指數欄位644包括REX欄位705、REX’欄位710、MODR/M.Reg欄位744、MODR/M.r/m欄位746、VVVV欄位720、xxx欄位754、及bbb欄位756。
擴大操作欄位
圖7D為方塊圖例示說明依據本發明之一個實施例組成擴大操作欄位650的特定向量友善指令格式700的欄位。當類別(U)欄位668含0時,表示EVEX.U0(類別A 668A);當含1時,表示EVEX.U1(類別B 668B)。當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包括1位元SAE欄位656及2位元捨入操作欄位658。當rs欄位652A含0(資料變換652A.2)時,β欄位654(EVEX位元組3,位元[6:4]-SSS)係解譯為3位元資料變換欄位654B。當U=0及MOD欄位742含00、01、或10(表示記憶體存取操作)時,α欄位652(EVEX位元組3,位元[7]-EH)係解譯為逐出暗示(EH)欄位652B,及β欄位654(EVEX位元組3,位元[6:4]-SSS)係解譯為3位元資料操弄欄位654C。
當U=1時,α欄位652(EVEX位元組3,位元[7]-EH)係解譯為寫遮罩控制(Z)欄位652C。當U=1及MOD欄位742含11(表示無記憶體存取操作)時,部分β欄位654(EVEX位元組3,位元[4]-S0)係解譯為RL欄位657A;當含1(捨入657A.1)時,其餘β欄位654(EVEX位元組3,位元[6-5]-S2-1)係解譯為捨入操作欄位659A;而當RL欄位657A含0(VSIZE 657A.2)時,其餘β欄位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-於該具體實施例中,有16個64-位元通用暫存器連同既有x86定址模式用以定址記憶體運算元。此等暫存器係以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15指稱。
純量浮點堆疊暫存器檔案(x87堆疊)845,於其上頻疊MMX緊縮整數平坦暫存器檔案850-於該具體實施例中,x87堆疊乃8-元體堆疊,用以使用x87指令集擴延而在32/64/80-位元浮點資料上執行純量浮點操作;同時MMX暫存器係用以在64-位元緊縮整數資料上執行操作,以及保有用於在MMX暫存器與XMM暫存器間執行的某些操作的運算元。
本發明之替代實施例可使用更寬的或更窄的暫存器。此外,本發明之替代實施例可使用更多、更少、或不同的暫存器檔案及暫存器。
核心架構、處理器及電腦架構實例
處理器核心可以不同方式為了不同目的、及於不同處理器體現。舉例言之,此等核心之體現可包括:1)意圖用於通用運算的通用有序核心;2)意圖用於通用運算的高效能通用失序核心;3)主要用於圖形裝置及/或科學(資料
通量)運算的特用核心。不同處理器的體現可包括:1)一CPU包括一或多個意圖用於通用運算的通用有序核心及/或一或多個意圖用於通用運算的高效能通用失序核心;及2)一共處理器包括一或多個主要用於圖形裝置及/或科學(資料通量)運算的特用核心。此等不同處理器結果導致不同電腦系統架構,可包括:1)與在CPU分開晶片上的共處理器;2)在與CPU相同封裝體內的一分開晶粒上的共處理器;3)在與CPU相同分開晶粒上的共處理器(於該種情況下,此種共處理器偶爾稱作為特用邏輯,諸如整合圖形裝置及/或科學(資料通量)邏輯,或特用核心);及4)一單晶片系統可包括在所描述的CPU(偶爾稱作為應用程式核心或應用處理器)的相同晶粒上、前述共處理器、及額外功能。其次描述核心架構實例,接著描述處理器及電腦架構實例。
核心架構實例
有序及失序核心區塊圖
圖9A為方塊圖例示說明依據本發明之實施例有序管線之一實例及暫存器重新命名失序簽發/執行管線之一實例。圖9B為方塊圖例示說明欲含括於依據本發明之實施例的一處理器中,有序管線之一實例及暫存器重新命名失序簽發/執行管線之一實例二者。圖9A-B中的實線框例示說明有序管線及有序核心,而選擇性地增加虛線框例示說明暫存器重新命名失序簽發/執行管線及核心。假設有序面向乃失序面向之一子集,將描述失序面向。
圖9A中,一處理器管線900包括一提取階段
902、一長度解碼階段904、一解碼階段906、一分配階段908、一重新命名階段910、一排程(又稱調度或簽發)階段912、一暫存器讀/記憶體讀階段914、一執行階段916、一回寫/記憶體寫階段918、一例外處理階段922、及一委付階段924。
圖9B顯示處理器核心990包括耦接至一執行引擎單元950的一前端單元930,二者係耦接至一記憶體單元970。核心990可為一精簡指令集電腦(RISC)核心、一複雜指令集電腦(CISC)核心、一極長指令字組(VLIW)核心、或一混成或替代核心型別。至於又另一選項,核心990可為特用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用圖形處理單元(GPGPU)核心、圖形核心等。
前端單元930包括一分支預測單元932耦接至一指令快取單元934,其係耦接至一指令轉譯後備緩衝器(TLB)936,其係耦接至一指令提取單元938,其係耦接至一解碼單元940。解碼單元940(或解碼器)可解碼指令,及產生一或多個微操作、微碼進入點、微指令、其它指令、或其它控制信號作為輸出,其係從原先指令解碼或否則反映原先指令、或從原先指令推衍。解碼單元940可使用多個不同機構體現。合宜機構之實例包括但非僅限於詢查表、硬體體現、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。於一個實施例中,核心990包括一微碼ROM或其它媒體其儲存用於某些巨集指令的微碼(例如於解碼單元940中或否則於前端單元930內部)。解碼單元940係耦接至執行引擎單元
950中的一重新命名/分配器單元952。
執行引擎單元950包括該重新命名/分配器單元952耦接至一報廢單元954及一或多個排程器單元956之集合。排程器單元956表示任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元956係耦接至實體暫存器檔案單元958。實體暫存器檔案單元958各自表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料型別,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如一指令指標,其為欲執行的下個指令的位址)等。於一個實施例中,實體暫存器檔案單元958包括一向量暫存器單元、一寫遮罩暫存器單元、及一純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元958係重疊報廢單元954以例示說明可體現暫存器重新命名及失序執行的各種方式(例如使用重新排序緩衝器及報廢暫存器檔案;使用未來檔案、歷史緩衝器、及報廢暫存器檔案;使用暫存器映射圖及暫存器之一匯集物;等)。報廢單元954及實體暫存器檔案單元958係耦接至執行叢集960。執行叢集960包括一或多個執行單元962之一集合及一或多個記憶體存取單元964之一集合。執行單元962可執行各項操作(例如移位、加法、減法、乘法)及在各型資料上(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然若干實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多數執
行單元全部執行全部功能。排程器單元956、實體暫存器檔案單元958、及執行叢集960係顯示為可能複數,原因在於某些實施例針對某些型別的資料/操作產生分開的管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線其各自具有本身的排程器單元、實體暫存器檔案單元、及/或執行叢集-及以分開的記憶體存取管線為例,體現某些實施例其中只有此一管線的執行叢集具有記憶體存取單元964)。也須瞭解當使用分開的管線時,此等管線中之一或多者可為失序簽發/執行而其餘為有序。
記憶體存取單元964集合係耦接至記憶體單元970,其包括一資料TLB單元972耦接至一資料快取單元974其係耦接至一第二層級(L2)快取單元976。於一個具體實施例中,記憶體存取單元964可包括一載入單元、一儲存位址單元、及一儲存資料單元,其各自係耦接至記憶體單元970中的資料TLB單元972。指令快取單元934更進一步係耦接至記憶體單元970中的一第二層級(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指令集(有些延伸已添加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(帶有選擇性額外延伸諸如NEON)),包括此處描述的指令集。於一個實施例中,核心990包括支援一緊縮資料指令集延伸的邏輯(例如AVX1、AVX2、及/或前述某個形式的通用向量友善指令格式(U=0及/或U=1)),藉此許可由許多多媒體應用程式使用的操作欲使用緊縮資料執行。
須瞭解核心可支援多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式進行包括時間截割多執行緒、同時多執行緒(於該處單一實體核心針對各個執行緒提供一邏輯核心,使得實體核心為多執行緒)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如英特爾®超執行緒技術)。
雖然暫存器重新命名係就失序執行脈絡描述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器的具體實施例也包括分開的指令及資料快取單元934/974及分享L2快取單元976,替代實施例可具有針對指令及資料二者的單一內部快取記憶體,例如層級1(L1)內部快取記憶體或
多層級內部快取記憶體。於若干實施例中,系統可包括一內部快取記憶體與在核心及/或處理器外部的外部快取記憶體之一組合。
有序核心架構特定實例
圖10A-B例示說明更特定有序核心架構實例之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同型別及/或不同型別的其它核心)。邏輯區塊取決於應用而透過高頻寬互連體網路(例如環狀網路)而與某個固定功能邏輯、記憶體I/O介面、及其它需要的I/O邏輯通訊。
圖10A為依據本發明之實施例,單一處理器核心之方塊圖連同其連結至晶粒上互連體網路1002及層級2(L2)快取記憶體1004之本地子集。於一個實施例中,指令解碼器1000支援x86指令集具緊縮資料指令集延伸。L1快取記憶體1006許可低延遲存取快取記憶體至純量及向量單元。於一個實施例中(為了簡化設計),純量單元1008及向量單元1010使用分開的暫存器集合(分別為純量暫存器1012及向量暫存器1014)及在其間傳輸的資料係寫至記憶體,然後從層級1(L1)快取記憶體1006回讀,本發明之替代實施例可使用不同辦法(例如使用單一暫存器集合或包括通訊路徑其許可資料在二暫存器檔案間移轉而不寫入及回讀)。
L2快取記憶體1004之本地子集乃通用L2快取記憶體的一部分,劃分成分開的本地子集,每個處理器核心有一個子集。各個處理器核心具有至L2快取記憶體1004的本身本地子集的直接存取路徑。藉一處理器核心讀取資料
係儲存於其L2快取記憶體1004,與其它處理器核心存取其本身的本地L2快取記憶體子集快速地存取。藉一處理器核心寫成的資料係儲存於其本身的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而在一或多個基體上體現。
記憶體階層關係包括在核心內部的一或多個快取記憶體層級、一或多個分享快取單元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為電腦架構實例之方塊圖。技藝界已知之針對膝上型電腦、桌上型電腦、手持式電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路中樞器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器及/或其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
現在參考圖12,圖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於單一晶片。
額外處理器1215的選擇性本質係在圖12中標示以虛線。各個處理器1210、1215可包括此處描述的處理核心中之一或多者,且可為處理器1100的某個版本。
記憶體1240例如可為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或二者的組合。針對至少一個實施例,控制器中樞器1220透過一多插匯流排諸如前端匯流排(FSB)、點對點介面諸如快速路徑互連體(QPI)、或類似的連結1295而與處理器1210、1215通訊。
於一實施例中,共處理器1245乃特用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。於一實施例中,控制器中樞器1220可包括整合圖形加速器。
就優劣量表範圍,實體處理器1210、1215間可有多項差異,包括架構、微架構、溫度、功耗特性等。
於一實施例中,處理器1210執行指令控制通用型別的資料處理操作。嵌入於該等指令內部者可為共處理器指令。處理器1210認知此等共處理器指令為須由附屬共處理器1245執行的型別。因此,處理器1210在一共處理器匯流排或其它互連體上簽發此等共處理器指令(或表示共處理器指令的控制信號)給共處理器1245。共處理器1245接收且執行所接收的共處理器指令。
現在參考圖13,顯示依據本發明之實施例第一更特定系統1300之實例方塊圖。如圖13所示,多處理器系統1300乃點對點互連體系統,及包括透過點對點互連體1350而耦接的第一處理器1370及第二處理器1380。處理器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可使用PtP介面電路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)單元)、可現場程式規劃閘陣列(FPGA)、或任何其它處理器係耦接至第一匯流排1316。於一個實施例中,第二匯流排1320可為低接腳數目(LPC)匯流排。於一個
實施例中,多個裝置可耦接至第二匯流排1320,包括例如鍵盤/滑鼠1322、通訊裝置1327及資料儲存單元1328,諸如磁碟機或其它大容量儲存裝置,可包括指令/代碼及資料1330。又復,音訊I/O 1324可耦接至第二匯流排1320。注意其它架構係屬可能。舉例言之,替代圖13之點對點架構,一系統可體現多插匯流排或其它此種架構。
現在參考圖14,顯示依據本發明之一實施例第二系統1400之更特定實例之一方塊圖。圖13與圖14中相似的元件具有相似的元件符號,及圖13的某些面向已經從圖14刪除以免不必要地遮掩圖14的其它面向。
圖14例示說明處理器1370、1380分別地可包括整合記憶體及I/O控制邏輯(「CL」)1372及1382。如此,CL 1372、1382可包括記憶體控制器中樞器邏輯(IMC)及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)其界定結構、電路、裝置、處理器及/或此處描述的系統特徵之非過渡具體有形的機器可讀取媒體。此等實施例也可稱作程式產品。
仿真(包括二進制轉譯、碼變形等)
於某些情況下,指令轉換器可用以將一指令從一來源指令集轉換成一目標指令集。舉例言之,該指令轉換器可轉譯(例如使用靜態二進制轉譯、含動態編譯的動態二進制轉譯)、變形、仿真、或以其它方式轉換一指令成為欲
由核心處理的一或多個其它指令。該指令轉換器可軟體、硬體、韌體或其組合體現。該指令轉換器可在處理器上、不在處理器上、或部分在而部分不在處理器上。
圖16為方塊圖,依據本發明之實施例對比一軟體指令用以將來源指令集中的二進制指令轉換成目標指令集中的二進制指令。於該具體實施例中,指令轉換器為軟體指令轉換器,但另外,指令轉換器可於軟體、韌體、硬體、或其各項組合體現。圖16顯示可使用x86編譯器1604編譯以產生x86二進制碼1606的高階語言1602,該x86二進制碼1606可由具有至少一個x86指令集核心之處理器1616本機執行。具有至少一個x86指令集核心之處理器1616表示藉相容式執行或以其它方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一個x86指令集核心的一英特爾處理器跑的應用程式或其它軟體之目標碼版本而執行與具至少一個x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一個x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器1604表示可操作而產生x86二進制碼1606(例如目標碼)的一編碼器,該等x86二進制碼1606有或無額外鏈結處理可在具至少一個x86指令集核心的該處理器1616上執行。同理,圖16顯示於高階語言1602的該程式可使用另一指令集編譯器1608編譯以產生另一指令集二進制碼1610,可藉不具至少一個x86指令集核心的一處理器1614本機執行(例如具有執行加州昇陽谷的MIPS技術公司之MIPS指令集及/或執行加州昇陽谷
的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器1612係用以將x86二進制碼1606轉換成可由不具一x86指令集核心的該處理器1614本機執行的代碼。此種轉換碼不可能與另一指令集二進制碼1610相同,原因在於難以製造可達成此項目的的一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。如此,指令轉換器1612表示軟體、韌體、硬體或其組合其透過仿真、模擬或任何其它處理許可不具至少一個x86指令集處理器或核心的一處理器或其它電子裝置執行該x86二進制碼1606。
401_A‧‧‧32位元輸入資料結構
402_A‧‧‧複製資料結構
403_A‧‧‧遮罩層
404_A‧‧‧結果所得資料結構
405‧‧‧欄位
Claims (20)
- 一種用以複製資料結構之裝置,其包含:耦接至暫存器空間之一指令執行管線,該指令執行管線具有用以執行一第一指令及一第二指令之一執行單元,其中:i)該暫存器空間係用以儲存當該執行單元執行該第一指令時要被複製之一第一資料結構並用以儲存當該執行單元執行該第二指令時要被複製之一第二資料結構,該等第一及第二資料結構係皆為緊縮資料結構,該第一緊縮資料結構的資料值為該第二緊縮資料結構的資料值的兩倍,該第一資料結構為該第二資料結構的四倍;ii)該執行單元包括複製邏輯電路,用以當執行該第一指令以產生一第一複製資料結構時複製該第一資料結構,及用以當執行該第二指令以產生一第二複製資料結構時複製該第二資料結構;以及iii)該指令執行管道包括遮罩電路,用以個別地遮罩該第一複製資料結構之特定元件作為部分之該第一指令的執行且個別地遮罩該第二複製資料結構之特定元件作為部分之該第二指令的執行。
- 如申請專利範圍第1項之裝置,其中該第一複製資料結構包含該第一資料結構的兩個拷貝。
- 如申請專利範圍第1項之裝置,其中該第二複製資料結 構係包含該第二資料結構的八個拷貝。
- 如申請專利範圍第1項之裝置,其中該第一緊縮資料結構的資料值係各自為64位元及該第二緊縮資料結構的資料值係各自為32位元。
- 如申請專利範圍第1項之裝置,其中該執行單元進一步包含用以執行一第三指令之邏輯,其複製一第三資料結構16次以產生一第三複製結構,該第三資料結構並非為一緊縮資料結構,該第三資料結構具有一資料值其大小係與該第二資料結構的該等資料值之大小相等。
- 如申請專利範圍第5項之裝置,其中該第一緊縮資料結構的該等資料值為浮點資料值,及該第二緊縮資料結構的該等資料值為浮點資料值。
- 如申請專利範圍第5項之裝置,其中該第一緊縮資料結構的該等資料值為整數資料值及該第二緊縮資料結構的該等資料值為整數資料值。
- 一種複製資料結構之方法,其包含:提取用於一第一指令之一第一資料結構,該第一資料結構為一第一緊縮資料結構;藉由在一執行單元內複製該第一資料結構而執行該第一指令且根據一第一遮罩向量來個別地遮罩經複製之該第一資料結構的特定元件;提取用於一第二指令之一第二資料結構,該第二資料結構為一第二緊縮資料結構,該第一緊縮資料結構的資料值為該第二緊縮資料結構的資料值的兩倍,該第一 資料結構為該第二資料結構的四倍;以及藉由在該執行單元內複製該第二資料結構而執行該第二指令且根據一第二遮罩向量來個別地遮罩經複製之該第二資料結構的特定元件。
- 如申請專利範圍第8項之方法,其中該第一及第二資料值為浮點資料值。
- 如申請專利範圍第9項之方法,其中該第一資料值為64位元及該第二資料值為32位元。
- 如申請專利範圍第8項之方法,其進一步包含:提取用於一第三指令之一第三資料結構,該第三資料結構為一非緊縮資料結構,該第三資料結構的資料值係具有與該第二資料結構的該等資料值中之該一者相同的大小;藉於該執行單元內部複製該第三資料結構16次而執行該第三指令。
- 如申請專利範圍第11項之方法,其進一步包含:提取用於一第四指令之一第四資料結構,該第四資料結構為一緊縮資料結構,該第四資料結構係與該第一資料結構相同的大小,該第四資料結構的資料值係與該第二資料結構的資料值相同的大小;藉於該執行單元內部複製該第四資料結構兩次而執行該第四指令,該第四資料結構的資料值具有與該第二資料結構的該等資料值中之一者相同的大小。
- 如申請專利範圍第12項之方法,其中該等第一、第二、 第三及第四指令之該等資料值為浮點資料值。
- 如申請專利範圍第8項之方法,其進一步包含:提取用於一第三指令之一第三資料結構,該第三資料結構為一緊縮資料結構,該第三資料結構係與該第一資料結構相同的大小,該第三資料結構的資料值係與該第二資料結構的資料值相同的大小;藉於該執行單元內部複製該第三資料結構兩次而執行該第三指令,該第三資料結構的資料值具有與該第二資料結構的該等資料值中之一者相同的大小。
- 一種用以複製資料結構之裝置,其包含:耦接至暫存器空間之一指令執行管線,該指令執行管線具有用以執行一第一指令及一第二指令之一執行單元,其中:i)該暫存器空間係針對要藉由該執行單元所執行的多數個指令之各者來儲存要被複製的一個別資料結構,針對該等多數個指令之各者的該個別資料結構係包括:用於一第一指令之一第一非緊縮資料結構;用於一第二指令之一第二非緊縮資料結構,其中該第二非緊縮資料結構為該第一非緊縮資料結構的兩倍大;用於一第三指令之一第三緊縮資料結構,其資料值係與該第一非緊縮資料結構相同的大小;用於一第四指令之一第四緊縮資料結構,其資料值係與該第二非緊縮資料結構相同的大小;ii)該執行單元包括複製邏輯電路,其用以:當執 行該第一指令時複製該第一資料結構,當執行該第二指令時複製該第二資料結構,當執行該第三指令時複製該第三資料結構,及當執行該第四指令時複製該第四資料結構;以及iii)該指令執行管道包括遮罩電路,其用以根據一第一遮罩向量而個別地遮罩經複製之該第一資料結構之特定元件作為部分之該第一指令的執行,根據一第二遮罩向量而個別地遮罩經複製之該第二資料結構之特定元件作為部分之該第二指令的執行,根據一第三遮罩向量而個別地遮罩經複製之該第三資料結構之特定元件作為部分之該第三指令的執行且根據一第四遮罩向量而個別地遮罩經複製之該第四資料結構之特定元件作為部分之該第四指令的執行。
- 如申請專利範圍第15項之裝置,其中該第四指令之複製產生一第四複製資料結構,其含有該第四資料結構之下列拷貝數目中之任一者:二個;四個。
- 如申請專利範圍第16項之裝置,其中該第三指令之複製產生一第三複製資料結構,其含有該第三資料結構之下列拷貝數目中之任一者:二個;四個;八個。
- 如申請專利範圍第15項之裝置,其中該第四緊縮資料結構係具有下列資料值數目中之任一者:二個;四個。
- 如申請專利範圍第18項之裝置,其中該第三緊縮資料結構係具有下列資料值數目中之任一者:二個;四個;八個。
- 如申請專利範圍第15項之裝置,其中該第一資料結構為32位元及該第二資料結構為64位元。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2011/067084 WO2013095607A1 (en) | 2011-12-23 | 2011-12-23 | Instruction execution unit that broadcasts data values at different levels of granularity |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201342223A TW201342223A (zh) | 2013-10-16 |
| TWI550508B true TWI550508B (zh) | 2016-09-21 |
Family
ID=48669248
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW101148057A TWI550508B (zh) | 2011-12-23 | 2012-12-18 | 用於複製資料結構之設備及方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US9336000B2 (zh) |
| CN (1) | CN104185837B (zh) |
| TW (1) | TWI550508B (zh) |
| WO (1) | WO2013095607A1 (zh) |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110471699B (zh) | 2011-12-23 | 2023-07-28 | 英特尔公司 | 用于指令处理的处理器核、方法和系统 |
| US10423413B2 (en) * | 2013-07-09 | 2019-09-24 | Texas Instruments Incorporated | Vector load and duplicate operations |
| US9330028B2 (en) * | 2014-03-27 | 2016-05-03 | Intel Corporation | Instruction and logic for a binary translation mechanism for control-flow security |
| GB2540943B (en) | 2015-07-31 | 2018-04-11 | Advanced Risc Mach Ltd | Vector arithmetic instruction |
| US20170185413A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Processing devices to perform a conjugate permute instruction |
| US10592468B2 (en) * | 2016-07-13 | 2020-03-17 | Qualcomm Incorporated | Shuffler circuit for lane shuffle in SIMD architecture |
| EP3754727A1 (en) * | 2016-10-12 | 2020-12-23 | First Solar, Inc | Photovoltaic device with transparent tunnel junction |
| EP3336691B1 (en) * | 2016-12-13 | 2022-04-06 | ARM Limited | Replicate elements instruction |
| JP7148526B2 (ja) * | 2017-02-23 | 2022-10-05 | アーム・リミテッド | データ処理装置におけるベクトルによる要素演算 |
| US11372804B2 (en) | 2018-05-16 | 2022-06-28 | Qualcomm Incorporated | System and method of loading and replication of sub-vector values |
| US11269630B2 (en) * | 2019-03-29 | 2022-03-08 | Intel Corporation | Interleaved pipeline of floating-point adders |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6016529A (en) * | 1997-11-26 | 2000-01-18 | Digital Equipment Corporation | Memory allocation technique for maintaining an even distribution of cache page addresses within a data structure |
| TW470914B (en) * | 1998-03-31 | 2002-01-01 | Intel Corp | Executing partial-width packed data instructions |
| US20070038798A1 (en) * | 2004-09-10 | 2007-02-15 | Bouchard Gregg A | Selective replication of data structures |
| US20070130114A1 (en) * | 2005-06-20 | 2007-06-07 | Xiao-Feng Li | Methods and apparatus to optimize processing throughput of data structures in programs |
| TW201123008A (en) * | 2009-12-17 | 2011-07-01 | Intel Corp | Method and apparatus for performing a shift and exclusive or operation in a single instruction |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6484255B1 (en) * | 1999-09-20 | 2002-11-19 | Intel Corporation | Selective writing of data elements from packed data based upon a mask using predication |
| US7228401B2 (en) * | 2001-11-13 | 2007-06-05 | Freescale Semiconductor, Inc. | Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor |
| US7941585B2 (en) * | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
-
2011
- 2011-12-23 CN CN201180075876.7A patent/CN104185837B/zh active Active
- 2011-12-23 WO PCT/US2011/067084 patent/WO2013095607A1/en not_active Ceased
- 2011-12-23 US US13/976,003 patent/US9336000B2/en active Active
-
2012
- 2012-12-18 TW TW101148057A patent/TWI550508B/zh not_active IP Right Cessation
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6016529A (en) * | 1997-11-26 | 2000-01-18 | Digital Equipment Corporation | Memory allocation technique for maintaining an even distribution of cache page addresses within a data structure |
| TW470914B (en) * | 1998-03-31 | 2002-01-01 | Intel Corp | Executing partial-width packed data instructions |
| US20070038798A1 (en) * | 2004-09-10 | 2007-02-15 | Bouchard Gregg A | Selective replication of data structures |
| US20070130114A1 (en) * | 2005-06-20 | 2007-06-07 | Xiao-Feng Li | Methods and apparatus to optimize processing throughput of data structures in programs |
| TW201123008A (en) * | 2009-12-17 | 2011-07-01 | Intel Corp | Method and apparatus for performing a shift and exclusive or operation in a single instruction |
Non-Patent Citations (1)
| Title |
|---|
| INTEL ADVANCED VECTOR EXTENSIONS PROGRAMMING REFERENCE,20110630 * |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2013095607A1 (en) | 2013-06-27 |
| US9336000B2 (en) | 2016-05-10 |
| CN104185837A (zh) | 2014-12-03 |
| CN104185837B (zh) | 2017-10-13 |
| TW201342223A (zh) | 2013-10-16 |
| US20130339664A1 (en) | 2013-12-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI550508B (zh) | 用於複製資料結構之設備及方法 | |
| TWI756251B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
| TWI474258B (zh) | 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體 | |
| TWI489382B (zh) | 改良的萃取指令背景之設備及方法 | |
| TWI647613B (zh) | 用於產生按數字順序的連續整數序列之處理器、方法、系統及指令(三) | |
| TWI524266B (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
| TWI489383B (zh) | 遮蔽排列指令的裝置及方法 | |
| TWI501147B (zh) | 用於從通用暫存器至向量暫存器的廣播之裝置及方法 | |
| CN104204989B (zh) | 用于选择向量计算的元素的装置和方法 | |
| TWI515650B (zh) | 用於遮罩暫存器擴充操作之設備及方法 | |
| TWI663545B (zh) | 執行置換運算的處理器 | |
| TWI464677B (zh) | 經改良插入指令之裝置及方法 | |
| TWI564795B (zh) | 四維摩頓座標轉換處理器、方法、系統及指令 | |
| TWI481991B (zh) | 改良型排列指令之裝置及方法 | |
| TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
| TWI610228B (zh) | 用於執行向量位元反轉和交叉的方法和設備 | |
| TW201342221A (zh) | 用於在多維度陣列中之元件偏移計算的指令 | |
| TW201346747A (zh) | 用於密碼應用程式之不升起算數旗標的三輸入運算元向量加法指令 | |
| TWI526930B (zh) | 用以複製及遮蔽資料結構之設備及方法 | |
| TWI517032B (zh) | 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法 | |
| TW201730756A (zh) | 用於從鏈結結構取回元件的設備和方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |