TW201730748A - 用於跨距存取的系統、裝置及方法 - Google Patents
用於跨距存取的系統、裝置及方法 Download PDFInfo
- Publication number
- TW201730748A TW201730748A TW105136486A TW105136486A TW201730748A TW 201730748 A TW201730748 A TW 201730748A TW 105136486 A TW105136486 A TW 105136486A TW 105136486 A TW105136486 A TW 105136486A TW 201730748 A TW201730748 A TW 201730748A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- field
- data
- operand
- index
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000008859 change Effects 0.000 claims description 7
- 230000008602 contraction Effects 0.000 claims 4
- 230000015654 memory Effects 0.000 description 190
- 239000013598 vector Substances 0.000 description 125
- 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 80
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000010586 diagram Methods 0.000 description 29
- 238000007667 floating Methods 0.000 description 25
- 238000006243 chemical reaction Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 17
- 238000003860 storage Methods 0.000 description 12
- 230000002123 temporal effect Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 238000013501 data transformation Methods 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 9
- 230000002776 aggregation Effects 0.000 description 8
- 238000004220 aggregation Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 7
- 239000000463 material Substances 0.000 description 7
- 239000000203 mixture Substances 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 235000012431 wafers Nutrition 0.000 description 7
- 230000004931 aggregating effect Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000036961 partial effect Effects 0.000 description 6
- 238000000605 extraction Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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
-
- 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
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)
Abstract
描述用於跨距存取之系統、方法、及設備。在若干實施例中,將來自結構陣列之資料載入複數暫存器。接著使用寫入遮罩將置換作業中不需要之資料元件以索引值覆寫。暫存器現在包含資料及索引值之混合。當此相同寫入遮罩被傳遞至覆寫索引暫存器做為目的地之置換指令時,如索引值所控制,資料值保留,且索引值以來自另二個來源暫存器之資料覆寫。
Description
本發明之範疇大體上關於電腦處理器架構,且更特定地,關於當執行時致使特定結果之指令之收集。
為效率而改變之一種用戶碼包含排除使用記憶體聚集(gather)-分散(scatter)作業。該等不規律記憶體作業可增加潛時及頻寬使用,以及侷限編譯器向量化之範圍。若干應用可獲益自資料布局改變,其將寫入結構陣列(AOS)表示中之資料結構轉換為陣列結構(SOA)表示。
101、301、501‧‧‧暫存器ZMM4
103、303、503‧‧‧暫存器ZMM0
105、305、505‧‧‧暫存器ZMM1
107、307、507‧‧‧暫存器ZMM2
109、309‧‧‧暫存器ZMM3
111‧‧‧暫存器ZMM5
307‧‧‧暫存器ZMM4'
1300‧‧‧通用向量親和指令格式
1305、1346A‧‧‧無記憶體存取指令模板
1310、1410‧‧‧REX'欄位
1312‧‧‧無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板
1315‧‧‧無記憶體存取、資料變換類型運算指令模板
1317‧‧‧無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板
1320、1346B‧‧‧記憶體存取指令模板
1325‧‧‧記憶體存取、時間性指令模板
1327‧‧‧記憶體存取、寫入遮罩控制指令模板
1330‧‧‧記憶體存取、非時間性指令模板
1340‧‧‧格式欄位
1342‧‧‧基礎運算欄位
1344‧‧‧暫存器索引欄位
1346‧‧‧修飾符欄位
1350‧‧‧增強運算欄位
1352‧‧‧α欄位
1352A‧‧‧RS欄位
1352A.1‧‧‧捨入
1352A.2‧‧‧資料變換
1352B‧‧‧逐出暗示欄位
1352B.1‧‧‧時間性
1352B.2‧‧‧非時間性
1352C‧‧‧寫入遮罩控制(Z)欄位
1354‧‧‧β欄位
1354A‧‧‧捨入控制欄位
1354B‧‧‧資料變換欄位
1354C‧‧‧資料操作欄位
1356‧‧‧抑制所有浮點異常(SAE)欄位
1357A‧‧‧RL欄位
1357A.1‧‧‧捨入
1357A.2‧‧‧向量長度(VSIZE)
1357B‧‧‧廣播欄位
1358、1359A‧‧‧捨入運算控制欄位
1359B‧‧‧向量長度欄位
1360‧‧‧縮放欄位
1362A‧‧‧位移欄位
1362B‧‧‧位移因數欄位
1364‧‧‧資料元件寬度欄位
1368‧‧‧級別欄位
1368A‧‧‧A級
1368B‧‧‧B級
1370‧‧‧寫入遮罩欄位
1372‧‧‧立即欄位
1374‧‧‧全運算碼欄位
1400‧‧‧特定向量親和指令格式
1402‧‧‧EVEX前置
1405‧‧‧REX欄位
1415‧‧‧運算碼映射欄位
1420‧‧‧EVEX.vvvv
1425‧‧‧前置編碼欄位
1430‧‧‧實際運算碼欄位
1440‧‧‧MOD R/M欄位
1442‧‧‧MOD欄位
1444‧‧‧暫存器指標欄位
1446‧‧‧R/M欄位
1454‧‧‧xxx欄位
1456‧‧‧bbb欄位
1500‧‧‧暫存器架構
1510‧‧‧向量暫存器
1515‧‧‧寫入遮罩暫存器
1525‧‧‧通用暫存器
1545‧‧‧純量浮點堆疊暫存器檔案(x87堆疊)
1550‧‧‧MMX封裝整數平坦暫存器檔案
1600‧‧‧處理器管線
1602‧‧‧提取級
1604‧‧‧長度解碼級
1606‧‧‧解碼級
1608‧‧‧配置級
1610‧‧‧更名級
1612‧‧‧排程級
1614‧‧‧暫存器讀取/記憶體讀取級
1616‧‧‧執行級
1618‧‧‧寫回/記憶體寫入級
1622‧‧‧異常處置級
1624‧‧‧確定級
1630‧‧‧前端單元
1632‧‧‧分支預測單元
1634‧‧‧指令快取記憶體單元
1636‧‧‧指令翻譯後備緩衝器(TLB)
1638‧‧‧指令提取單元
1640‧‧‧解碼單元
1650‧‧‧執行引擎單元
1652‧‧‧更名/配置器單元
1654‧‧‧止用單元
1656‧‧‧排程器單元
1658‧‧‧實體暫存器檔案單元
1660‧‧‧執行叢集
1662‧‧‧執行單元
1664‧‧‧記憶體存取單元
1670‧‧‧記憶體單元
1672‧‧‧資料翻譯後備緩衝器(TLB)單元
1674‧‧‧資料快取記憶體單元
1676‧‧‧2階(L2)快取記憶體單元
1690‧‧‧處理器核心
1700‧‧‧指令解碼器
1702‧‧‧晶粒上互連網路
1704‧‧‧2階(L2)快取記憶體
1706‧‧‧1階(L1)快取記憶體
1706A‧‧‧L1資料快取記憶體
1708‧‧‧純量單元
1710‧‧‧向量單元
1712‧‧‧純量暫存器
1714‧‧‧向量暫存器
1720‧‧‧拌和單元
1722A-B‧‧‧數字轉換單元
1724‧‧‧複製單元
1726‧‧‧寫入遮罩暫存器
1728‧‧‧16寬向量算術邏輯單元
1800、1910、1915、2015‧‧‧處理器
1802A-N‧‧‧核心
1804A-N‧‧‧快取記憶體單元
1806‧‧‧共用快取記憶體單元
1808‧‧‧專用邏輯
1810‧‧‧系統代理器
1812‧‧‧環形互連單元
1814‧‧‧整合記憶體控制器單元
1816‧‧‧匯流排控制器單元
1900‧‧‧系統
1920‧‧‧控制器集線器
1940、2032、2034‧‧‧記憶體
1945、2038、2220‧‧‧協同處理器
1950‧‧‧輸入/輸出集線器(IOH)
1960、2014、2114‧‧‧輸入/輸出(I/O)裝置
1990‧‧‧圖形記憶體控制器集線器(GMCH)
1995‧‧‧連接
2000‧‧‧第一特定示例系統
2016‧‧‧第一匯流排
2018‧‧‧匯流排橋接器
2020‧‧‧第二匯流排
2022‧‧‧鍵盤及/或滑鼠
2024‧‧‧音頻輸入/輸出(I/O)
2027‧‧‧通訊裝置
2028‧‧‧儲存單元
2030‧‧‧指令/碼及資料
2039‧‧‧高性能介面
2050‧‧‧點對點互連
2052、2054、2086、2088‧‧‧點對點(P-P)介面
2070‧‧‧第一處理器
2072、2082‧‧‧整合記憶體控制器(IMC)單元
2076、2078‧‧‧匯流排控制器單元點對點(P-P)介面
2080‧‧‧第二處理器
2090‧‧‧晶片組
2092、2096‧‧‧介面
2094、2098‧‧‧點對點介面電路
2100‧‧‧第二特定示例系統
2115‧‧‧舊有輸入/輸出(I/O)裝置
2200‧‧‧系統晶片
2202‧‧‧互連單元
2210‧‧‧應用處理器
2230‧‧‧靜態隨機存取記憶體(SRAM)單元
2232‧‧‧直接記憶體存取(DMA)單元
2240‧‧‧顯示單元
2302‧‧‧高階語言
2304‧‧‧x86編譯器
2306‧‧‧x86二元碼
2308‧‧‧替代指令集編譯器
2310‧‧‧替代指令集二元碼
2312‧‧‧指令轉換器
2314、2316‧‧‧x86指令集核心
本發明係藉由範例描繪,且不侷限於附圖,其中相似代號表示相似元件,且其中:圖1描繪指令執行之實施例,用於從四暫存器聚集某資料類型之元件;圖2描繪由處理器實施之方法實施例,用以從四緊縮
資料暫存器聚集元件;圖3描繪指令執行之實施例,用於從四暫存器聚集某資料類型之元件;圖4描繪由處理器實施之方法實施例,用以從四緊縮資料暫存器聚集元件;圖5描繪指令執行之實施例,用於從三暫存器聚集某資料類型之元件;圖6描繪由處理器實施之方法實施例,用以從三緊縮資料暫存器聚集元件;圖7顯示序列之實施例,以5雙之跨距5結構之聚集指令將AoS結構轉換為SoA格式;圖8描繪用於AOS至SOA轉換之軟體序列之實施例;圖9描繪使用移動及置換指令之AOS至SOA轉換之實施例;圖10描繪使用載入及置換指令之AOS至SOA轉換之示例碼;圖11描繪使用移動及置換指令之AOS至SOA轉換之實施例;圖12描繪使用載入及置換指令之AOS至SOA轉換之示例碼;圖13A-13B為方塊圖,依據本發明之實施例描繪通用向量親和指令格式及其指令模板;圖14A-D為方塊圖,依據本發明之實施例描繪示例
特定向量親和指令格式;圖15為依據本發明之一實施例之暫存器架構1500之方塊圖;圖16A為方塊圖,依據本發明之實施例描繪示例循序管線及示例暫存器更名亂序發送/執行管線兩者;圖16B為方塊圖,依據本發明之實施例描繪包括於處理器中之循序架構核心之示例實施例,及示例暫存器更名亂序發送/執行架構核心兩者;圖17A-B描繪更特定示例循序核心架構之方塊圖,該核心為晶片中若干邏輯方塊(包括相同類型及/或不同類型之其他核心)之一;圖18為依據本發明之實施例之處理器1800之方塊圖,可具有一個以上核心,可具有整合記憶體控制器,及可具有整合圖形邏輯;圖19-22為示例電腦架構之方塊圖;以及圖23為方塊圖,依據本發明之實施例,對比使用軟體指令轉換器,將來源指令集中之二元指令轉換為目標指令集中之二元指令。
在下列描述中,提出許多特定細節。然而,將理解的是可實現本發明之實施例而無該些特定細節。在其他情況下,未詳細顯示熟知電路、結構及技術,以便不混淆本描述之理解。
說明書中提及「一實施例」、「實施例」、「範例實施例」等指出,所描述之實施例可包括特定部件、結構、或特性,但每一實施例並不一定包括該特定部件、結構、或特性。再者,該等用語不一定係指相同實施例。此外,當結合實施例描述特定部件、結構、或特性時,主張其係在熟悉本技藝之人士之知識內,而影響與其他實施例結合之該等部件、結構、或特性,不論是否清楚描述。
當跨越陣列元件存取一結構欄位時,從AOS轉變至SOA有助於避免昂貴聚集作業,並有助於迭代於陣列上之編譯器向量化迴路。請注意,該等資料轉換係(由使用者)考量使用該等資料結構之所有地方,而於程式級實施。當實施結構實例之向量化時,保持每一結構欄位之個別陣列,使記憶體存取係將相連。AOS結構需要聚集及分散,其可影響單指令多資料(SIMD)效率,以及導入額外帶寬及潛時於記憶體存取。硬體聚集-分散機構之存在未排除對此轉換-聚集-分散存取之需要,其通常較相連載入需要更高帶寬及潛時。
SOA形式的代價為要減少原始結構實例之多欄位存取間之局部性(例如增加轉譯後備緩衝區(TLB)壓力)。依據原始來源碼中資料存取圖案(不論其是否包含對迴路內結構之多欄位存取,不論所有結構實例是否遍歷或子集),較佳地反而可轉換為陣列結構之陣列(AOSOA)。此可具有外級之局部性及亦具有最內部層
級之單位跨距之效益。內陣列此處可為向量長度之若干倍,而利用單位跨距全向量。每一結構實例將具有此方式配置之多欄位(在小陣列中)。且在外部層級,可存在(現在更大)結構之陣列。在該配置中,欄位存取將仍足夠接進而獲得原始碼中附近結構實例存取之頁面局部性之效益。
以下細節為來自暫存器之聚集元件之指令序列之若干實施例。在若干實施例中,元件聚集為每一元件類型而進行(例如,出自基於XYZ之資料集之X值)。在其他實施例中,聚集係用以從AOS轉換至SOA。貫穿此討論,諸如ZMM、YMM、及XMM之用詞的使用係分別指512位元、256位元、及128位元之暫存器大小。此外,雖然使用特定指令範例(例如VMOVAP),該些指令所提供之功能性可由不同名稱表示,取決於基礎工具架構。該兩種約定係為易於理解,不希望予以限制。再者,貫穿此描述,所描述之指令典型地由SIMD或向量硬體電路執行。請注意以下參照一資料類型之聚集元件所詳述之方法等,可重複用於其他資料類型。例如,首先聚集XYZ資料集之X,接著Y,接著Z等。
圖1描繪用於聚集來自四暫存器之某資料類型元件之指令執行實施例。在本實施例中,無「聚集」指令用以從四暫存器拉取「x」資料類型。而是,執行二置換指令,接著執行混合指令以從資料集聚集「X」。
暫存器ZMM4(512位元暫存器)101儲存複
數索引值。在本範例中,有8索引值,暫存器101中每一資料元件位置一個。該些索引值指出暫存器中之位置。例如,將值0儲存於ZMM4 101之資料元件位置0。此指出索引進入來源運算元之資料元件位置0。如同將顯示,此位置為ZMM0或ZMM2之資料元件位置0。亦請注意,ZMM4 101值延伸至詳細說明之指令中的二暫存器。例如,ZMM4 101施加於ZMM1 105及ZMM0 103,其中ZMM4 101之較高次資料元件位置施加於ZMM1 105。
使用ZMM2 107及ZMM3 109做為資料來源,及ZMM4 101做為進入該些來源暫存器之索引,而執行置換指令。本指令之執行使用ZMM4 101之索引值置換來自來源暫存器之值,並將該經置換值儲存於ZMM2 107中。換言之,ZMM2 107被覆寫。
此外,寫入遮罩{在本範例中為0XF0}用以有條件地控制每一元件作業,並更新結果。依據實施,寫入遮罩使用合併或歸零遮罩。以述詞(寫入遮罩、寫入遮罩、或k暫存器)運算元編碼之指令使用運算元以有條件地控制每一元件運算作業,並將結果更新至目的地運算元。述詞運算元已知為opmask(寫入遮罩)暫存器。opmask為一組大小MAX_KL(64位元)之8架構暫存器。請注意,從該組8架構暫存器,僅k1至k7可被定址為述詞運算元。k0可用做正規來源或目的地,但無法被編碼為述詞運算元。亦請注意,述詞運算元可用以使用記憶體運算元(來源或目的地)致能若干指令之記憶體故障
抑制。關於述詞運算元,opmask暫存器包含一位元來管理向量暫存器之每一資料元件之作業/更新。通常,opmask暫存器可支援指令具以下元件大小之指令:單精度浮點(float32)、整數雙字組(int32)、雙精度浮點(float64)、整數四字組(int64)。opmask暫存器之長度MAX_KL足以處理最多64元件,且每一元件一位元,即64位元。對特定向量長度而言,每一指令依據其資料類型僅存取所需數量之最低有效遮罩位元。opmask暫存器以每一元件粒度影響指令。所以,於opmask暫存器之相應位元上斷定每一資料元件之任何數字或非數字作業,及針對目的地運算元之中間結果的每一元件更新。在大部分實施例中,用作述詞運算元之opmask遵守下列屬性:1)若未設定相應opmask位元,則不實施元件之指令作業(此暗示由對未遮罩元件之操作不會造成例外或違例,且因此由於未遮罩作業,故無例外旗標被更新);2)若未設定相應寫入遮罩位元,則不以作業結果更新目的地元件。而是,必須保存目的地元件值(合併-遮罩)或其必須被歸零(歸零-遮罩);3)對具記憶體運算元之若干指令而言,以0之遮罩位元抑制元件之記憶體故障。請注意,本部件提供多功能結構,而實施控制流預測做為遮罩,實際上提供向量暫存器目的地之合併行為。另一方面,遮罩可用於歸零而非合併,使得以0更新遮罩掉之元件而非保存舊值。當不需要時,提供歸零行為以移除對於舊值之隱含相依性。
本類型之置換指令範例為VPERMT2,其係從覆寫一表之二表之全置換。該等表中之值可為單或雙精度浮點。本指令之示例格式為VPERMT2P(S,D)zmm1{k1}{z}、zmm2、zmm3/m512/m64bcst。本格式之指令執行使用zmm2中索引從zmm3/記憶體及zmm1中之二表置換單或雙精度FP值,並使用寫入遮罩k1將結果儲存於zmm1中。通常,本類型之置換指令使用第二運算元(第一來源運算元)中之索引,以從第一及第三運算元選擇元件,而置換第一運算元及第三運算元(第二來源運算元)中之16位元/32位元/64位元值。選擇之元件依據寫入遮罩k1而寫入至目的地運算元(第一運算元)。第一及第二運算元為ZMM/YMM/XMM暫存器。第二運算元包含輸入索引而從第一及第三運算元中之二輸入表選擇元件。第一運算元亦為結果之目的地。
使用ZMM1 105及ZMM0 103做為資料來源,及ZMM4 101做為進入該些來源暫存器之索引,而執行第二置換指令。本指令之執行使用ZMM4 101之索引值置換來自來源暫存器之值,並將該經置換值儲存於ZMM4 101中。換言之,ZMM4 101被覆寫。請注意,不同索引暫存器可用於置換指令。此外,寫入遮罩{在本範例中為0XOF}用以有條件地控制每一元件作業,並更新結果。
本類型之置換指令範例為VPERMTI,其係從覆寫索引之二表之全置換。表中之值可為單或雙精度浮點。本指令之示例格式為VPERMI2P(S,D)
zmm1{k1}{z}、zmm2、zmm3/記憶體。本格式之指令執行使用zmm1中之索引從zmm3/記憶體及zmm2中的二表置換單或雙精度FP值,並使用寫入遮罩k1將結果儲存於zmm1中。通常,本類型之置換指令使用第一運算元中之索引,以從第二及第三運算元選擇元件,而置換第二運算元(第一來源運算元)及第三運算元(第二來源運算元)中之16位元/32位元/64位元值。選擇之元件依據寫入遮罩k1而寫入至目的地運算元(第一運算元)。第一及第二運算元為ZMM/YMM/XMM暫存器。第一運算元包含輸入索引而從第二及第三運算元中之二輸入表選擇元件。第一運算元亦為結果之目的地。
結果暫存器(ZMM2’及ZMM4’)被用作輸入進入混合指令。本混合指令之執行依據元件選擇器之寫入遮罩,而混合二來源進入目的地暫存器ZMM5 111。此外,寫入遮罩{在本範例中為0XF0}用以有條件地控制每一元件作業並更新結果。
本類型之混合指令範例為VBLENDMP,其係使用寫入遮罩之單或雙精度浮點向量之混合。本指令之示例格式為VBLENDMP(S,D)zmm1{k1}{z}、zmm2、zmm3/記憶體。本格式之指令執行使用k1做為選擇控制而混合單或雙精度向量zmm2及單或雙精度向量zmm3/記憶體,並將結果儲存於zmm1中。通常,本類型之混合指令執行使用opmask暫存器做為選擇控制,以第二來源運算元(第三運算元)中之元件實施第一來源運算元(第二
運算元)中float64/float32元件間之逐個元件混合。將混合之結果寫入至目的地暫存器。目的地及第一來源運算元為ZMM/YMM/XMM暫存器。第二來源運算元可為ZMM/YMM/XMM暫存器,512/256/128位元記憶體位置或從64位元記憶體位置廣播之512/256/128位元向量。opmask暫存器並未用作本指令之寫入遮罩。而是,遮罩被用作元件選擇器:使用相關遮罩位元之值(0用於第一來源運算元,1用於第二來源運算元),於第一來源或第二來源之間有條件地選擇目的地之每一元件。
圖2描繪由處理器實施之方法實施例,以聚集來自四緊縮資料暫存器之元件。在本實施例中,聚集某類型之元件(諸如來自XYZ資料集之X)。
在201,以資料元件載入四緊縮資料暫存器。例如,以資料元件載入四ZMM暫存器。
在203,設定至少一索引暫存器。為易於理解,描述僅使用一索引暫存器,然而,置換作業中可使用多索引暫存器。
在205,執行置換指令。本置換指令對第一及第二資料來源(暫存器)運算元操作,並使用索引來源(暫存器)運算元,藉由使用索引來源運算元中之索引來選擇來自資料來源之元件,而置換第一資料來源運算元及第二資料來源運算元中16位元/32位元/64位元值。置換指令亦包括寫入遮罩運算元,以選擇將寫入至目的地運算元(第一來源資料運算元)之元件。
在207,執行置換指令。本置換指令對第三及第四資料來源(暫存器)運算元操作,並使用索引來源(暫存器)運算元,藉由使用索引來源運算元中之索引來選擇來自資料來源之元件,而置換第三資料來源運算元及第四資料來源運算元中16位元/32位元/64位元值。置換指令亦包括寫入遮罩運算元,以選擇將寫入至目的地運算元(索引來源運算元)之元件。
在209,執行混合指令。本混合指令對第二來源運算元(後置換)及索引運算元(後置換)操作,使用混合指令之寫入遮罩暫存器運算元做為選擇控制,以索引運算元實施第二來源運算元中資料元件間之逐個元件混合。遮罩混合之結果儲存於混合指令之目的地運算元中。
圖3描繪用於聚集來自四暫存器之某資料類型元件之指令執行實施例。在本實施例中,未使用「聚集」指令從四暫存器拉取「x」資料類型。而是,執行使用合併覆寫之二置換指令而聚集來自資料集之「X」。
暫存器ZMM4(512位元暫存器)301儲存複數索引值。在本範例中,存在8索引值,暫存器301中每一資料元件位置一個。該些索引值指出暫存器中之位置。例如,於ZMM4 301之資料元件位置0儲存值0。此指出索引進入來源運算元之資料元件位置0。如將顯示,此位置為ZMM0或ZMM2之資料元件位置0。亦請注意,ZMM4 301值延伸至詳細說明的指令中之二暫存器。例如,ZMM4 301施加於ZMM1 305及ZMM0 303,其中
ZMM4 301之較高次資料元件位置施加於ZMM1 305。
使用ZMM1 305及ZMM0 303做為資料來源,及ZMM4 301做為進入該些來源暫存器之索引,來執行置換指令。本指令之執行使用ZMM4 301之索引值置換來自來源暫存器之值,並將該經置換之值儲存於ZMM4 307中。換言之,ZMM4 307被覆寫(顯示為ZMM4')。此外,寫入遮罩{在本範例中為0X0F}用以有條件地控制每一元件作業及結果更新。本類型之置換指令範例為VPERMI2。
使用ZMM3 309及ZMM2 307做為資料來源,及ZMM4'做為進入該些來源暫存器之索引,來執行第二置換指令。本指令之執行使用ZMM4'之索引值置換來自來源暫存器之值,並將該經置換之值儲存於ZMM4"中。換言之,ZMM4"被覆寫。此外,寫入遮罩{在本範例中為0XF0}用以有條件地控制每一元件作業及結果更新。本類型之置換指令範例為VPERMI2。
圖4描繪由處理器實施之方法實施例,以聚集來自四緊縮資料暫存器之元件。在本實施例中,聚集某類型之元件(諸如來自XYZ資料集之X)。
在401,以資料元件載入四緊縮資料暫存器。例如,以資料元件載入四ZMM暫存器。
在403,設定至少一索引暫存器。為易於理解,描述僅使用一索引暫存器,然而,置換作業中可使用多索引暫存器。
在405,執行置換指令。本置換指令對第一及第二資料來源(暫存器)運算元操作,並使用索引來源(暫存器)運算元,藉由使用索引來源運算元中之索引來選擇來自資料來源之元件,而置換第一資料來源運算元及第二資料來源運算元中16位元/32位元/64位元值。置換指令亦包括寫入遮罩運算元,以選擇將寫入至目的地運算元(索引來源運算元)之元件。
在407,執行置換指令。本置換指令對第三及第四資料來源(暫存器)運算元操作,並於405之置換後使用索引來源(暫存器)運算元,藉由使用修改索引來源運算元中之索引來選擇來自資料來源之元件,而置換第三資料來源運算元及第四資料來源運算元中16位元/32位元/64位元值。置換指令亦包括寫入遮罩運算元,以選擇將寫入至目的地運算元(修改索引來源運算元)之元件。
圖5描繪用於聚集來自三暫存器之某資料類型元件之指令執行實施例。在本實施例中,未使用「聚集」指令從三暫存器拉取「x」資料類型。而是,執行使用合併覆寫之二置換指令而聚集來自資料集之「X」。
暫存器ZMM4(512位元暫存器)501儲存複數索引值。在本範例中,存在8索引值,暫存器501中每一資料元件位置一個。該些索引值指出暫存器中之位置。例如,於ZMM4 501之資料元件位置0儲存值0。此指出索引進入來源運算元之資料元件位置0。如將顯示,此位置為ZMM0之資料元件位置0。亦請注意,ZMM4 501值
延伸至詳細說明的指令中之二暫存器。例如,ZMM4 501施加於ZMM1 505及ZMM0 503,其中ZMM4 501之較高次資料元件位置施加於ZMM1 505。
使用ZMM0 503及ZMM4 501做為資料來源,來執行移動指令。本指令之執行將來自ZMM4 501之值移動(載入)到ZMM0 503中。此外,寫入遮罩{在本範例中為0XDE}用以有條件地控制每一元件作業及結果更新。
本類型之移動指令範例為VMOVAP,其為單或雙精度浮點之對齊移動。本指令之示例格式為VMOVAP(S,D)zmm2/m512{k1}{z}、zmm1。本格式之指令執行使用寫入遮罩k1,從zmm1移動對齊封裝單一或雙精度浮點值至zmm2/記憶體。一般而言,本類型移動指令從來源運算元(第二運算元)移動2、4或8雙精度浮點值至目的地運算元(第一運算元)。本指令可用以從128位元、256位元或512位元記憶體位置載入XMM、YMM或ZMM暫存器,而將XMM、YMM或ZMM暫存器之內容儲存於128位元、256位元或512位元記憶體位置中,或於二XMM、二YMM或二ZMM暫存器之間移動資料。
使用ZMM1 505及ZMM2 507做為資料來源,及ZMM4’做為進入該些來源暫存器之索引,而執行置換指令。本指令之執行使用ZMM0'之索引值置換來自來源暫存器之值,並將該經置換值儲存於ZMM0"中。換言
之,ZMM0"被覆寫。此外,寫入遮罩{在本範例中為0XDE}用以有條件地控制每一元件作業,並更新結果。本類型之置換指令範例為VPERMI2。
圖6描繪由處理器實施之方法實施例,以聚集來自三緊縮資料暫存器之元件。在本實施例中,聚集某類型之元件(諸如來自XYZ資料集之X)。
在601,以資料元件載入三緊縮資料暫存器。例如,以資料元件載入三ZMM暫存器。
在603,設定至少一索引暫存器。為易於理解,描述僅使用一索引暫存器,然而,置換作業中可使用多索引暫存器。
在605,執行移動指令。本移動指令對第一及第二資料來源(暫存器)運算元操作,並包括寫入遮罩運算元,以選擇將寫入至目的地運算元(第一來源運算元)之元件。
在607,執行置換指令。本置換指令對第三及第四資料來源(暫存器)運算元操作,並使用索引來源(暫存器)運算元,其係第一資料來源(暫存器)運算元,於移動指令執行後,藉由使用修改第一資料來源運算元中之索引來選擇來自資料來源之元件,而置換第三資料來源運算元及第四資料來源運算元中的16位元/32位元/64位元值。置換指令亦包括寫入遮罩運算元,以選擇將寫入至目的地運算元(索引來源運算元)之元件。
以上詳述原理可適用於跨距5資料結構。跨
距5資料結構具有5相同元件,組合在一起做為單一複合結構(例如5浮點或5雙)。典型地,本作業包含聚集作業而共置來自向量暫存器中不同陣列索引之不同組件。然而,藉由使用合併遮罩置換作業,其中控制索引與來源運算元混合以有效地組合如上述來自最後目的地中3來源暫存器之資料,而使用覆寫索引控制暫存器做為目的地之2-來源置換指令做為3-來源置換作業,其典型地較快。
圖7顯示以5雙之跨距5結構之聚集指令將AoS結構轉換為SoA格式之序列實施例。頂列顯示記憶體中結構之配置,其中0至4為每一向量之個別組件。不同顏色指出記憶體中連續佈置之不同結構。每一結構元件為40位元組計量之5雙。所示記憶體中8個該元件包含可載入5 AVX512暫存器中之320位元組資料。最後結果將具有zmm0中全部8個第0組件、zmm1中全部8個第1組件等。
每一聚集之索引暫存器包含:_declspec(align(32))const_int32 gather0_index[8]={0,5,10,15,20,25,30,35};_declspec(align(32))const_int32 gather1_index[8]={1,6,11,16,21,26,31,36};_declspec(align(32))const_int32 gather2_index[8]={2,7,12,17,22,27,32,37};_declspec(align(32))const_int32 gather3_index[8]={3,8,13,18,23,28,33,38};_declspec(align(32))const_int32 gather4_index[8]={4,9,14,19,24,29,34,39};圖8中顯示每一迴路疊代中具5遮罩產生指令及5聚集指令之本作業之軟體序列。KXNOR(W,B,Q,D)為寫入遮罩之按位元邏輯XNOR之指令。例如,其執
行於向量遮罩k2及向量遮罩k3之間實施按位元XNOR,並將結果寫入向量遮罩k1中(KXNOR k1,k2,k3之三運算元形式)。
VPGATHERDPD為封裝單或雙精度帶正負號雙字之聚集指令。VPGATHER可對封裝單一或雙精度位元組、字、雙字、四字等操作。示例格式為VGATHERDPD zmm1{k1},vm32,其使用帶正負號雙字索引而聚集64位元資料為使用k1做為完成遮罩之ZMM1中。聚集由基址BASE_ADDR及具標度SCALE之索引向量V_INDEX指出之一組單精度/雙精度故障點記憶體位置。將結果寫入向量暫存器中。元件係經由VSIB指明(即索引暫存器為向量暫存器,保持顯示為VM32之封裝索引)。只有當其相應遮罩位元為1時,才將元件載入。若未設定元件之遮罩,則目的地暫存器之相應元件則保持未變。
YMM5-YMM9分別保持索引陣列gather0_index至gather4_index。R8指向記憶體中AoS格式中資料之開始。
圖9描繪使用移動及置換指令之AOS至SOA轉換之實施例。5載入指令用以移動資料進入zmm0至zmm4中。接著使用16個2-來源置換指令而區隔結構向量之每一組件。
圖10描繪使用載入及置換指令之AOS至SOA轉換之示例碼。VMOVUPS為未對齊移動,用以從記
憶體(快取記憶體)移動AOS資料進入向量暫存器中。
圖11描繪使用移動及置換指令之AOS至SOA轉換之實施例。本序列藉由利用合併寫入,其允許存放(depositing)與索引控制值混合之資料值,而減少置換作業數量。首先,將用做索引之暫存器被載入資料值。接著,在置換作業中不需要之資料元件使用寫入遮罩而以索引值被覆寫。暫存器現在包含資料及索引值之混合。當將相同寫入遮罩傳遞至vpermi指令時,其覆寫索引暫存器做為目的地,資料值被預留,並以來自其他二來源暫存器之資料覆寫索引值,如由索引值所控制。此有效地將傳統二來源vpermi指令轉換為三來源置換指令。
圖12描繪使用載入及置換指令之AOS至SOA轉換之示例碼。此碼載入將置換為zmm暫存器(VMOVUPS)之若干資料。接著,以索引覆寫暫存器之部分,以使用遮罩保護將預留於使用vpermi指令之置換作業中之資料元件,其使用索引暫存器做為目的地,而控制置換作業。使用相同遮罩暫存器而載入索引做為vpermi指令之寫入遮罩,使得僅覆寫索引值,而預留先前載入之資料元件。
以下細節為與上述說明相容之指令格式、硬體等之實施例。
指令集可包括一或更多指令格式。特定指令格式可定義各式欄位(例如位元數量、位元位置),以指明將實施之作業(例如運算碼),及其上將實施作業之運
算元,及/或其他資料欄位(例如遮罩)等。儘管指令模板(或子格式)之定義,進一步分解若干指令格式。例如,特定指令格式之指令模板可經定義而具有指令格式欄位之不同子集(包括之欄位典型地處於相同順序,但因為包括較少欄位,所以至少若干具有不同位元位置),及/或經定義而具有不同解譯之特定欄位。因而,ISA之每一指令係使用特定指令格式表達(且若有所定義,則係處於該指令格式之特定一指令模板),並包括用於指明作業及運算元之欄位。例如,示例ADD指令具有特定運算碼及指令格式,其包括運算碼欄位以指明運算碼及運算元欄位,而選擇運算元(來源1/目的地及來源2);且指令流中本ADD指令之發生將具有運算元欄位中之特定內容,其選擇特定運算元。一組SIMD延伸係指先進向量延伸(AVX)(AVX1及AVX2),及使用已釋出及/或公佈之向量延伸(VEX)編碼方案(例如詳2014年九月Intel® 64及IA-32架構軟體開發者手冊;及詳2014年十月Intel®先進向量延伸編程參考)。
文中所描述之指令實施例可以不同格式體現。此外,以下詳述示例系統、架構、及管線。指令之實施例可於該等系統、架構、及管線上執行,但不侷限於該些細節。
向量親和指令格式為適用於向量指令(例如存在特定用於向量作業之某欄位)之指令格式。雖然描述之實施例其中經由向量親和指令格式而支援向量及純量作業兩者,但替代實施例僅使用操作向量親和指令格式之向量。
圖13A-13B為方塊圖,依據本發明之實施例,描繪通用向量親和指令格式及其指令模板。圖13A為方塊圖,依據本發明之實施例描繪通用向量親和指令格式及其A級指令模板;而,圖13B為方塊圖,依據本發明之實施例描繪通用向量親和指令格式及其B級指令模板。具體地,通用向量親和指令格式1300定義A級及B級指令模板,二者包括無記憶體存取1305指令模板及記憶體存取1320指令模板。向量親和指令格式之上下文中,用詞“通用”係指未與任何特定指令集相關聯之指令格式。
雖然將描述本發明之實施例,其中向量親和指令格式支援下列: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位元組)資料元件寬度)。
圖13A中A級指令模板包括:1)在無記憶體1305存取指令模板內,顯示無記憶體存取、全捨入控制類型運算1310指令模板,及無記憶體存取、資料變換類型運算1315指令模板;及2)在記憶體存取1320指令模板內,顯示記憶體存取、時間性1325指令模板,及記憶體存取、非時間性1330指令模板。圖13B中B級指令模板包括:1)在無記憶體存取1305指令模板內,顯示無記憶體存取、寫入遮罩控制、部分捨入控制類型運算1312指令模板,及無記憶體存取、寫入遮罩控制、向量長度類型運算1317指令模板;及2)在記憶體存取1320指令模板內,顯示記憶體存取、寫入遮罩控制1327指令模板。
通用向量親和指令格式1300包括下列欄位,以下以圖13A-13B中所描繪之順序列出。
格式欄位1340-此欄位中特定值(指令格式識別符值),獨特地識別向量親和指令格式,且因而於指令流中出現向量親和指令格式之指令。如此,此欄位係可選的,對於僅具有通用向量親和指令格式之指令集而言並
非必須。
基礎運算欄位1342-其內容區別不同基礎運算。
暫存器索引欄位1344-其內容直接或經由位址產生來指定暫存器或記憶體中來源及目的地運算元之位置。其包括充足位元數而從PXQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案選擇N暫存器。雖然在一實施例中,N可係多達三個來源及一個目的地暫存器,但替代實施例可支援更多或更少來源及目的地暫存器(例如可支援多達二個來源,其中該些來源之一亦可做為目的地;可支援多達三個來源,其中該些來源之一亦可做為目的地;可支援多達二個來源及一個目的地)。
修飾符欄位1346-其內容區別指定記憶體存取與未指定者之通用向量指令格式的指令出現;即,於無記憶體存取1305指令模板及記憶體存取1320指令模板之間。記憶體存取作業讀取及/或寫入至記憶體階層(在若干情況下,使用暫存器中之值指定來源及/或目的地位址),而非記憶體存取作業並未讀取及/或寫入至記憶體階層(例如來源及目的地為暫存器)。雖然在一實施例中,此欄位亦於三不同方式之間選擇而實施記憶體位址計算,但替代實施例可支援更多、更少或以不同方式來實施記憶體位址計算。
增強運算欄位1350-其內容區別除了基礎運算外,將實施各種不同運算之哪一者。此欄位為上下文特
定。在本發明之一實施例中,此欄位劃分為級別欄位1368、α欄位1352、及β欄位1354。增強運算欄位1350允許共同運算群組於單指令中實施,而非於2、3、或4指令中實施。
縮放欄位1360-其內容允許索引欄位之內容針對記憶體位址產生進行縮放(例如針對使用2標度*索引+基底之位址產生)。
位移欄位1362A-其內容用做記憶體位址產生之一部分(例如針對使用2標度*索引+基底+位移之位址產生)。
位移因數欄位1362B(請注意,位移欄位1362A之鄰接位置直接在位移因數欄位1362B之上,表示使用二者之一)-其內容用做位址產生之一部分;其指定由記憶體存取之大小(N)標度的位移因數-其中N為記憶體存取中之位元組數量(例如針對使用2標度*索引+基底+標度位移之位址產生)。忽略冗餘低階位元,且因此位移因數欄位之內容被乘以記憶體運算元總大小(N),以便產生最終位移,其將用於計算有效位址。N之值係於運行時間依據全運算碼欄位1374(文中之後描述)及資料操作欄位1354C而由處理器硬體決定。在並非用於無記憶體存取1305指令模板及/或不同實施例可僅實施二者之一或皆不實施這個意義上而言,位移欄位1362A及位移因數欄位1362B為可選的。
資料元件寬度欄位1364-其內容區別將使用
若干資料元件寬度之哪一者(在若干實施例中用於所有指令;在其他實施例中僅用於該等指令之若干者)。在若僅支援一資料元件寬度及/或使用運算碼之若干方面支援資料元件寬度,故其不是必須的這個意義上而言,此欄位為可選的。
寫入遮罩欄位1370-在每一資料元件位置的基礎上,其內容控制目的地向量運算元中之資料元件位置是否反映基礎運算及增強運算的結果。A級指令模板支援合併寫入遮罩,而B級指令模板支援合併及歸零寫入遮罩兩者。當合併時,向量遮罩允許目的地中任何元件組受保護,免於在執行任何運算(由基礎運算及增強運算指定)期間更新;在一其他實施例中,保存相應遮罩位元具有0之目的地之每一元件的舊值。相反地,當歸零時,向量遮罩允許目的地中任何元件組在執行任何運算(由基礎運算及增強運算指定)期間被歸零;在一實施例中,當相應遮罩位元具有0值時,目的地之元件設定為0。此功能之子集為控制實施運算之向量長度的能力(即,從第一至最後之將修飾元件的範圍);然而,修飾之元件不必要是連續的。因而,寫入遮罩欄位1370允許局部向量運算,包括載入、儲存、算術、邏輯等。雖然描述本發明之實施例,其中寫入遮罩欄位1370之內容選擇若干寫入遮罩暫存器之一,其包含將使用之寫入遮罩(且因而寫入遮罩欄位1370之內容間接識別將實施之遮罩),但替代實施例取代地或額外地允許寫入遮罩欄位1370之內容以直接指定
將實施之遮罩。
立即欄位1372-其內容允許立即值之規範。在其未呈現於不支援立即值之通用向量親和格式的實施中,及其未呈現於不使用立即值之指令中的這個意義上而言,此欄位為可選的。
級別欄位1368-其內容於不同級別指令之間區別。參照圖13A-B,此欄位之內容於A級及B級指令之間選擇。在圖13A-B中,圓角方形用以表示欄位中呈現之特定值(例如圖13A-B中分別用於級別欄位1368之A級1368A及B級1368B)。
在A級無記憶體存取1305指令模板之情況下,α欄位1352被解譯為RS欄位1352A,其內容區別將實施哪一不同增強運算類型(例如捨入1352A.1及資料變換1352A.2分別指定用於無記憶體存取、捨入類型運算1310指令模板及無記憶體存取、資料變換類型運算1315指令模板),同時β欄位1354區別將實施指定類型之哪一運算。在無記憶體存取1305指令模板中,縮放欄位1360、位移欄位1362A、及位移因數欄位1362B未呈現。
在無記憶體存取全捨入控制類型運算1310指令模板中,β欄位1354被解譯為捨入控制欄位1354A,其
內容提供靜態捨入。雖然在所描述本發明之實施例中,捨入控制欄位1354A包括抑制所有浮點異常(SAE)欄位1356及捨入運算控制欄位1358,替代實施例可支援編碼該些概念進入相同欄位或僅具有該些概念/欄位之一者或另一者(例如可僅具有捨入運算控制欄位1358)。
SAE欄位1356-其內容區別是否禁用異常事件報告;當SAE欄位1356之內容表示啟用抑制時,特定指令不報告任何種類之浮點異常旗標,及不引發任何浮點異常處置器。
捨入運算控制欄位1358-其內容區別將實施哪一捨入運算群組(例如捨進、捨去、小數部分直接捨去及四捨五入)。因而,捨入運算控制欄位1358允許在每一指令基礎上之捨入模式的改變。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,該捨入運算控制欄位1358之內容置換(override)暫存器值。
在無記憶體存取資料變換類型運算1315指令模板中,β欄位1354被解譯為資料變換欄位1354B,其內容區別將實施若干資料變換之哪一者(例如無資料變換、拌和、廣播)。
在A級記憶體存取1320指令模板之情況下,α欄位1352被解譯為逐出暗示欄位1352B,其內容區別將
使用哪一逐出暗示(在圖13A中,時間性1352B.1及非時間性1352B.2分別指定用於記憶體存取、時間性1325指令模板及記憶體存取、非時間性1330指令模板),而β欄位1354被解譯為資料操作欄位1354C,其內容區別將實施若干資料操作作業之哪一者(亦已知為基元)(例如無操作;廣播;來源之上轉換;及目的地之下轉換)。記憶體存取1320指令模板包括縮放欄位1360,及可選地包括位移欄位1362A或位移因數欄位1362B。
向量記憶體指令基於轉換支援而實施自記憶體之向量載入,及至記憶體之向量儲存。就正規向量指令而言,向量記憶體指令以資料元件方式轉移資料自/至記憶體,且實際轉移之元件係由選擇做為寫入遮罩之向量遮罩的內容指定。
時間性資料為可能夠快被重新使用以從快取獲益的資料。此為暗示,然而,且不同處理器可以不同方式實施,包括完全忽略該暗示。
非時間性資料為第一階快取記憶體中不大可能夠快被重新使用以從快取獲益的資料,且應被給予逐出之優先性。此為暗示,然而,且不同處理器可以不同方式實施,包括完全忽略該暗示。
在B級指令模板之情況下,α欄位1352被解譯為寫入遮罩控制(Z)欄位1352C,其內容區別由寫入遮罩欄位1370控制之寫入遮罩係合併或歸零。
在B級無記憶體存取1305指令模板之情況下,部分β欄位1354被解譯為RL欄位1357A,其內容區別將實施哪一不同增強運算類型(例如捨入1357A.1及向量長度(VSIZE)1357A.2分別指定用於無記憶體存取、寫入遮罩控制、部分捨入控制類型運算1312指令模板及無記憶體存取、寫入遮罩控制、向量長度類型運算1317指令模板),而β欄位1354之其餘部分區別將實施特定類型之哪一運算。在無記憶體存取1305指令模板中,縮放欄位1360、位移欄位1362A、及位移因數欄位1362B未呈現。
在無記憶體存取、寫入遮罩控制、部分捨入控制類型運算1310指令模板中,β欄位1354之剩餘部分被解譯為捨入運算欄位1359A,並禁用異常事件報告(特定指令不報告任何種類之浮點異常旗標,且不引發任何浮點異常處置器)。
捨入運算控制欄位1359A-恰如捨入運算控制欄位1358,其內容區別將實施哪一捨入運算群組(例如捨進、捨去、小數部分直接捨去及四捨五入)。因而,捨入運算控制欄位1359A允許在每一指令基礎上之捨入模
式的改變。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,該捨入運算控制欄位1358之內容置換暫存器值。
在無記憶體存取、寫入遮罩控制、向量長度類型運算1317指令模板中,β欄位1354之其餘部分被解譯為向量長度欄位1359B,其內容區別將於(例如128、256、或512位元組)上實施若干資料向量長度之哪一者。
在B級記憶體存取1320指令模板之情況下,部分β欄位1354被解譯為廣播欄位1357B,其內容區別是否將實施廣播類型資料操作運算,而β欄位1354之其餘部分被解譯為向量長度欄位1359B。記憶體存取1320指令模板包括縮放欄位1360、及可選地位移欄位1362A或位移因數欄位1362B。
關於通用向量親和指令格式1300,顯示全運算碼欄位1374,包括格式欄位1340、基礎運算欄位1342、及資料元件寬度欄位1364。雖然顯示一實施例,其中全運算碼欄位1374包括所有該些欄位,在未支援所有欄位之實施例中,全運算碼欄位1374包括少於所有該些欄位。全運算碼欄位1374提供運算碼(opcode)。
在通用向量親和指令格式中,增強運算欄位1350、資料元件寬度欄位1364、及寫入遮罩欄位1370允許在每一指令的基礎上指定該些部件。
寫入遮罩欄位及資料元件寬度欄位之組合創
造具型式指令,其中允許依據不同資料元件寬度而施加遮罩。
於A級及B級內發現之各式指令模板有益於不同情況。在若干本發明之實施例中,不同處理器或處理器內之不同核心可僅支援A級,僅支援B級,或支援二者。例如,希望用於通用運算之高性能通用亂序核心可僅支援B級,主要希望用於圖形及/或科學(產量)運算之核心可僅支援A級,及希望用於二者之核心可支援二者(當然,具有來自兩級的模板與指令之某混合而非具有來自兩級的所有模板與指令的核心係在本發明之範圍內)。而且,單一處理器可包括多核心,均支援相同級,或其中不同核心支援不同級。例如,在具個別圖形及通用核心之處理器中,主要希望用於圖形及/或科學運算之一圖形核心可僅支援A級,而一或更多個通用核心可為具希望用於通用運算之亂序執行及暫存器更名的高性能通用核心,僅支援B級。不具有個別圖形核心之另一處理器,可包括一個以上通用循序或亂序核心,其支援A級及B級二者。當然,在本發明之不同實施例中,來自一級之部件亦可於其他級中實施。以高階語言所寫程式將置入(例如及時編譯或靜態編譯)多種不同可執行形式,包括:1)僅具有由目標處理器支援之級供執行之指令的形式;或2)具有使用所有級之指令之不同組合所寫替代常式,並具有依據目前執行碼之處理器所支援之指令而選擇執行之常式之控制流程碼的形式。
圖14為方塊圖,描繪依據本發明之實施例之示例特定向量親和指令格式。圖14顯示特定向量親和指令格式1400,其在指定欄位之位置、大小、解譯、及順序,以及若干該些欄位之值的這個意義上而言為特定的。特定向量親和指令格式1400可用以延伸x86指令集,且因而若干欄位類似,或與現有x86指令集及其延伸(例如AVX)中使用者相同。此格式依然符合具延伸之現有x86指令集之前置編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即值欄位。描繪來自圖13之欄位與來自圖14之欄位的映射。
應理解的是,儘管為描繪目的並參照通用向量親和指令格式1300之上下文中特定向量親和指令格式1400而描述本發明之實施例,但除非有所主張,否則本發明不侷限於特定向量親和指令格式1400。例如,通用向量親和指令格式1300考量各式欄位之各種可能大小,同時特定向量親和指令格式1400顯示為具有特定大小之欄位。藉由特定範例,雖然資料元件寬度欄位1364被描繪為特定向量親和指令格式1400中之一位元欄位,本發明不侷限於此(即,通用向量親和指令格式1300考量資料元件寬度欄位1364之其他大小)。
通用向量親和指令格式1300包括以下列圖14A中所描繪之順序所列下列欄位。
EVEX前置1402(位元組0-3)-以4位元組形式編碼。
格式欄位1340(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位1340,其包含0x62(該獨特值用於區別本發明之一實施例中的向量友善指令格式)。
第二至第四位元組(EVEX位元組1-3),包括提供特定能力之若干位元欄位。
REX欄位1405(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及EVEX.B位元欄位(EVEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相應VEX位元欄位相同功能,並使用1的補數形式編碼,即ZMM0編碼為1111B,ZMM15編碼為0000B。指令之其他欄位編碼暫存器索引之下三位元為本技藝中已知之(rrr、xxx、及bbb),使得可經由添加EVEX.R、EVEX.X、及EVEX.B而形成Rrrr、Xxxx、及Bbbb。
REX'欄位1310-此為REX'欄位1310之第一部分,並為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而形成。
運算碼映射欄位1415(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含前導運算碼位元組(0F、0F 38、或0F3)。
資料元件寬度欄位1364(EVEX位元組2,位元[7]-W)-係由記號EVEX.W代表。EVEX.W係用以定義資料類型(32位元資料元件或64位元資料元件)之粒度(大小)。
EVEX.vvvv 1420(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼第一來源暫存器運算元,以倒置(1的補數)形式指定,對於具2或更多來源運算元之指令有效;2)EVEX.vvvv編碼目的地暫存器運算元,以針對某些向量移位之1的補數形式指定;或3)EVEX.vvvv未編碼任何運算元,欄位保留並應包含1111b。因而,EVEX.vvvv欄位1420編碼以倒置(1的補數)形式儲存之第一來源暫存器區分符的4個低階位元。依據指令,額外不同EVEX位元欄位被用以延伸區分符大小至32暫存器。
EVEX.U 1368級別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,便表示A級或EVEX.U0;若
EVEX.U=1,便表示B級或EVEX.U1。
前置編碼欄位1425(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前置編碼,且因而不需要延伸。
α欄位1352(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α描繪)-如先前所描述,此欄位為上下文特定。
β欄位1354(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ描繪)-如先前所描述,此欄位為上下文特定。
REX'欄位1310-此為REX'欄位之其餘部分,且為EVEX.V'位元欄位(EVEX位元組3,位元[3]-V'),可用以編碼延伸之32暫存器組的上16個或下16個暫存器。此位元係以位元倒置格式儲存。1之值用以編碼下16個暫存器。換言之,V'VVVV係藉由組合EVEX.V'、EVEX.vvvv而形成。
寫入遮罩欄位1370(EVEX位元組3,位元[2:0]-kkk)-如先前所描述,其內容指定寫入遮罩暫存器中暫存器之索引。在本發明之一實施例中,特定值EVEX.kkk=000具有特定行為,暗示無寫入遮罩用於特定指令(其可以各種方式實施,包括使用固線式寫入遮罩至所有者或繞過遮罩硬體之硬體)。
實際運算碼欄位1430(位元組4)-其亦已知為運算碼位元組。部分運算碼於此欄位中指定。
MOD R/M欄位1440(位元組5)包括MOD欄位1442、暫存器指標欄位1444、及R/M欄位1446。如先前所描述,MOD欄位1442之內容於記憶體存取及非記憶體存取作業之間區別。暫存器指標欄位1444之角色可總結為二情況:編碼目的地暫存器運算元或來源暫存器運算元,或被如運算碼延伸一般地對待且未用以編碼任何指令運算元。R/M欄位1446之角色可包括下列:編碼參考記憶體位址之指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元。
標度、索引、基底(SIB)位元組(位元組
6)-如先前所描述,縮放欄位1350之內容用於記憶體位址產生。SIB.xxx 1454及SIB.bbb 1456-該些欄位的內容先前已相關於暫存器索引Xxxx及Bbbb而有所提及。
位移欄位1362A(位元組7-10)-當MOD欄位1442包含10時,位元組7-10為位移欄位1362A,其與舊有32位元位移(disp32)相同般地運作,且在位元組粒度上處理。
位移因數欄位1362B(位元組7)-當MOD欄位1442包含01時,位元組7為位移因數欄位1362B。此欄位之位置與舊有x86指令集8位元位移(disp8)相同,其在位元組粒度上處理。由於disp8為符號延伸,可僅定址於-128及127位元組偏移之間;在64位元組快取線方面,disp8使用8位元,可設定為僅4個實際有用值-128、-64、0、及64;由於通常需較大範圍,故使用disp32;然而,disp32需要4位元組。對比於disp8及disp32,位移因數欄位1362B為disp8之重新解譯;當使用位移因數欄位1362B時,實際位移係由位移因數欄位之內容乘以記憶體運算元存取(N)之大小而決定。此類型位移稱為disp8*N。此減少平均指令長度(單一位元組用於位移,但具有更大範圍)。該等壓縮位移係依據有效位移為記憶體存取之粒度的倍數之假設,且因此,位址偏移之冗餘低階位元不需編碼。換言之,位移因數欄位1362B取代舊有x86指令集8位元位移。因而,位移因數欄位1362B以與x86指令集8位元位移之相同方式編碼(所以
ModRM/SIB編碼規則無改變),唯一的例外是disp8過載至disp8*N。換言之,編碼規則或編碼長度無改變,僅硬體之位移值解譯不同(其需標度記憶體運算元之大小位移,而獲得位元組位址偏移)。立即欄位1372如先前所描述地操作。
圖14B為方塊圖,描繪依據本發明之一實施例之特定向量親和指令格式1400的欄位,其組成全運算碼欄位1374。具體地,全運算碼欄位1374包括格式欄位1340、基礎運算欄位1342、及資料元件寬度(W)欄位1364。基礎運算欄位1342包括前置編碼欄位1425、運算碼映射欄位1415、及實際運算碼欄位1430。
圖14C為方塊圖,描繪依據本發明之一實施例之特定向量親和指令格式1400的欄位,其組成暫存器索引欄位1344。具體地,暫存器索引欄位1344包括REX欄位1405、REX'欄位1410、MODR/M.暫存器欄位1444、MODR/M.r/m欄位1446、VVVV欄位1420、xxx欄位1454、及bbb欄位1456。
圖14D為方塊圖,描繪依據本發明之一實施
例之特定向量親和指令格式1400的欄位,其組成增強運算欄位1350。當級別(U)欄位1368包含0時,便表示EVEX.U0(A級1368A);當其包含1時,便表示EVEX.U1(B級1368B)。當U=0及MOD欄位1442包含11時(表示無記憶體存取作業),α欄位1352(EVEX位元組3,位元[7]-EH)解譯為rs欄位1352A。當rs欄位1352A包含1時(捨入1352A.1),β欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為捨入控制欄位1354A。捨入控制欄位1354A包括一位元SAE欄位1356及二位元捨入運算欄位1358。當rs欄位1352A包含0時(資料變換1352A.2),β欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料變換欄位1354B。當U=0及MOD欄位1442包含00、01、或10時(表示記憶體存取作業),α欄位1352(EVEX位元組3,位元[7]-EH)解譯為逐出暗示(EH)欄位1352B,及β欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料操作欄位1354C。
當U=1時,α欄位1352(EVEX位元組3,位元[7]-EH)解譯為寫入遮罩控制(Z)欄位1352C。當U=1及MOD欄位1442包含11時(表示無記憶體存取作業),部分β欄位1354(EVEX位元組3,位元[4]-S0)解譯為RL欄位1357A;當其包含1時(捨入1357A.1),β欄位1354之其餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為捨入運算欄位1359A,而當RL欄
位1357A包含0時(向量長度1357.A2),β欄位1354之其餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為向量長度欄位1359B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位1442包含00、01、或10時(表示記憶體存取作業),β欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為向量長度欄位1359B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位1357B(EVEX位元組3,位元[4]-B)。
圖15為依據本發明之一實施例之暫存器架構1500的方塊圖。在所描繪之實施例中,存在32向量暫存器1510,其為512位元寬;該些暫存器參照為zmm0至zmm31。下16zmm暫存器之低階256位元重疊於暫存器ymm0-16上。下16zmm暫存器之低階128位元(ymm暫存器之低階128位元)重疊於暫存器xmm0-15上。特定向量親和指令格式1400於該些重疊暫存器檔案上操作,如下表所描繪。
換言之,向量長度欄位1359B於最大長度及一或更多個其他較短長度之間選擇,其中每一較短長度為前述長度的一半長度;且無向量長度欄位1359B之指令模板於最大向量長度上操作。此外,在一實施例中,特定向量親和指令格式1400之B級指令模板於封裝或純量單一/雙精度浮點資料及封裝或純量整數資料上運算。純量運算為在zmm/ymm/xmm暫存器中之最低階資料元件位置實施之運算;較高階資料元件位置維持與指令之前相同,或被歸零,取決於實施例。
寫入遮罩暫存器1515-在所描繪之實施例中,存在8個寫入遮罩暫存器(k0至k7),各大小為64位元。在替代實施例中,寫入遮罩暫存器1515大小為16位元。如先前所描述,在本發明之一實施例中,向量遮罩暫存器k0無法用做寫入遮罩;當正常表示k0之編碼用於寫入遮罩時,便選擇0xFFFF之固線式寫入遮罩,有效地
禁用用於該指令之寫入遮罩。
通用暫存器1525-在所描繪之實施例中,存在16個64位元通用暫存器,連同現有x86定址模式用以定址記憶體運算元。該些暫存器係以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15名稱參照。
純量浮點堆疊暫存器檔案(x87堆疊)1545,其上重疊MMX封裝整數平坦暫存器檔案1550-在所描繪之實施例中,x87堆疊為8元件堆疊,用以使用x87指令集延伸在32/64/80位元浮點資料上實施純量浮點運算;而MMX暫存器用以在64位元封裝整數資料上實施運算,並保持運算元於MMX及XMM暫存器之間實施之若干運算。
本發明之替代實施例可使用較寬或較窄暫存器。此外,本發明之替代實施例可使用更多、更少、或不同暫存器檔案及暫存器。
處理器核心可以不同方式,針對不同目的,且在不同處理器中實施。例如,該等核心之實施可包括:1)目標用於通用運算之通用循序核心;2)目標用於通用運算之高效能通用亂序核心;3)目標主要用於圖形及/或科學(產量)運算之專用核心。不同處理器之實施可包括:1)目標用於通用運算之包括一或更多通用循序核心
之CPU,及/或目標用於通用運算之一或更多通用亂序核心;及2)目標主要用於圖形及/或科學(產量)運算之包括一或更多專用核心之協同處理器。該等不同處理器導致不同電腦系統架構,其可包括:1)與CPU在不同且分離晶片上之協同處理器;2)與CPU在相同封裝中但在不同且分離晶粒上之協同處理器;3)與CPU在相同晶粒上之協同處理器(在此情況下,該協同處理器有時稱為專用邏輯,諸如整合圖形及/或科學(產量)邏輯,或專用核心);及4)系統晶片,其可包括在所描述CPU之相同晶粒上(有時稱為應用核心或應用處理器),上述協同處理器,及其餘功能性。接著描述示例核心架構,其後描述示例處理器及電腦架構。
圖16A為方塊圖,描繪依據本發明之實施例之示例循序管線及示例暫存器更名、亂序發送/執行管線兩者。圖16B為方塊圖,描繪依據本發明之實施例之包括於處理器中的循序架構核心的示例實施例,及示例暫存器更名、亂序發送/執行架構核心兩者。圖16A-B中實線框描繪循序管線及循序核心,而虛線框之可選附加描繪暫存器更名、亂序發送/執行管線及核心。假定循序方面為亂序方面之子集,則將描述亂序方面。
在圖16A中,處理器管線1600包括提取級
1602、長度解碼級1604、解碼級1606、配置級1608、更名級1610、排程(亦已知為調度或發送)級1612、暫存器讀取/記憶體讀取級1614、執行級1616、寫回/記憶體寫入級1618、異常處置級1622、及確定級1624。
圖16B顯示包括耦接至執行引擎單元1650之前端單元1630的處理器核心1690,且二者均耦接至記憶體單元1670。核心1690可為精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。仍關於另一選項,核心1690可為專用核心,諸如網路或通訊核心、壓縮引擎、協同處理器核心、通用運算圖形處理單元(GPGPU)核心、或圖形核心等。
前端單元1630包括分支預測單元1632,其耦接至指令快取記憶體單元1634,其耦接至指令翻譯後備緩衝器(TLB)1636,其耦接至指令提取單元1638,其耦接至解碼單元1640。解碼單元1640(或解碼器)可解碼指令,及產生一或更多個微運算、微碼登錄點、微指令、其他指令、或其他控制信號做為輸出,其係解碼自、或反映、或源自原始指令。解碼單元1640可使用各式不同機構實施。適當機構之範例包括但不侷限於查找表、硬體實施、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1690包括微碼ROM或儲存微碼用於某些巨集指令(例如解碼單元1640中或否則在前端單元1630內)的其他媒體。解碼單元1640耦接至執行引
擎單元1650中之更名/配置器單元1652。
執行引擎單元1650包括更名/配置器單元1652,其耦接至止用單元1654及一組一或更多個排程器單元1656。排程器單元1656代表任何數量之不同排程器,包括保留站、中央指令視窗等。排程器單元1656耦接至實體暫存器檔案單元1658。每一實體暫存器檔案單元1658代表一或更多個實體暫存器檔案,不同者儲存一或更多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如指令指標,其係將執行下一指令的位址)等。在一實施例中,實體暫存器檔案單元1658包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。該些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1658被止用單元1654覆蓋,以描繪其中可實施暫存器更名及亂序執行之各種方式(例如使用重排序緩衝器及止用暫存器檔案;使用未來檔案、歷史緩衝器、及止用暫存器檔案;使用暫存器映射及暫存器集區等)。止用單元1654及實體暫存器檔案單元1658耦接至執行叢集1660。執行叢集1660包括一組一或更多個執行單元1662及一組一或更多個記憶體存取單元1664。執行單元1662可於各式資料類型(例如純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)實施各式作業(例如移位、加法、減法、乘法)。雖然若干實施例可包括專用於特定功能或功能組之若干執行單元,但其他實施例可
僅包括一執行單元或均實施所有功能的多個執行單元。排程器單元1656、實體暫存器檔案單元1658、及執行叢集1660可能顯示為複數,因為某些實施例創造用於某些資料/作業類型之個別管線(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,各具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集,且在個別記憶體存取管線之情況下,實施某些實施例其中僅此管線之執行叢集具有記憶體存取單元1664)。亦將理解的是,在使用個別管線處,一或更多個該些管線可為亂序發送/執行,其餘則為循序。
記憶體存取單元1664組耦接至記憶體單元1670,其包括資料TLB單元1672,其耦接至資料快取記憶體單元1674,其耦接至2階(L2)快取記憶體單元1676。在一示例實施例中,記憶體存取單元1664可包括載入單元、儲存位址單元、及儲存資料單元,每一者耦接至記憶體單元1670中之資料TLB單元1672。指令快取記憶體單元1634進一步耦接至記憶體單元1670中之2階(L2)快取記憶體單元1676。L2快取記憶體單元1676耦接至一或更多個其他階快取記憶體,且最終至主記憶體。
例如,示例暫存器更名、亂序發送/執行核心架構可實施管線1600如下:1)指令提取1638實施提取及長度解碼級1602及1604;2)解碼單元1640實施解碼級1606;3)更名/配置器單元1652實施配置級1608及更
名級1610;4)排程器單元1656實施排程級1612;5)實體暫存器檔案單元1658及記憶體單元1670實施暫存器讀取/記憶體讀取級1614;執行叢集1660實施執行級1616;6)記憶體單元1670及實體暫存器檔案單元1658實施寫回/記憶體寫入級1618;7)各式單元可包含於異常處置級1622中;及8)止用單元1654及實體暫存器檔案單元1658實施確定級1624。
核心1690可支援一或更多指令集(例如x86指令集(具以較新版本所添加之若干延伸);加州桑尼維爾MIPS科技公司之MIPS指令集;加州桑尼維爾ARM股份公司之ARM指令集(具可選附加延伸,諸如NEON)),包括文中所描述之指令。在一實施例中,核心1690包括邏輯以支援緊縮資料指令集延伸(例如AVX1、AVX2),藉以允許使用緊縮資料實施由許多多媒體應用使用之作業。
應理解的是,核心可支援多執行緒處理(執行二或更多平行作業或執行緒組),並可以各種方式進行,包括時間切割多執行緒處理、同步多執行緒處理(其中單一實體核心提供邏輯核心,用於實體核心同步多執行緒處理之每一執行緒)、或其組合(例如時間切割提取及解碼及其後同步多執行緒處理,諸如Intel®超執行緒處理技術)。
雖然於亂序執行之上下文中描述暫存器更名,應理解的是暫存器更名可用於循序架構中。雖然描繪
之處理器實施例亦包括個別指令及資料快取記憶體單元1634/1674,及共用L2快取記憶體單元1676,替代實施例可具有用於指令及資料二者之單一內部快取記憶體,諸如1階(L1)內部快取記憶體,或多階內部快取記憶體。在若干實施例中,系統可包括內部快取記憶體及核心及/或處理器外部之外部快取記憶體的組合。另一方面,所有快取記憶體可為核心及/或處理器外部。
圖17A-B描繪更特定示例循序核心架構之方塊圖,其核心將為晶片中若干邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊經由高頻寬互連網路(例如環形網路)而與若干固定功能邏輯、記憶體I/O介面、及其他必需I/O邏輯通訊,取決於應用。
圖17A為依據本發明之實施例之單一處理器核心連同其至晶粒上互連網路1702之連接的方塊圖,及具有2階(L2)快取記憶體1704之其局部子集。在一實施例中,指令解碼器1700支援具緊縮資料指令集延伸之x86指令集。L1快取記憶體1706允許針對快取記憶體記憶體之低潛時存取進入純量及向量單元。雖然在一實施例中(為簡化設計),純量單元1708及向量單元1710使用個別暫存器組(分別為純量暫存器1712及向量暫存器1714),並將在其間轉移之資料寫入至記憶體,並接著從1階(L1)快取記憶體1706讀回,本發明之替代實施例可
使用不同方法(例如使用單一暫存器組或包括允許於二暫存器檔案之間轉移資料之通訊路徑,而無寫入及讀回)。
L2快取記憶體1704之局部子集為整體L2快取記憶體之一部分,其劃分為個別局部子集,每一處理器核心一個子集。每一處理器核心具有至其L2快取記憶體1704之本身局部子集的直接存取路徑。由處理器核心讀取之資料係儲存於其L2快取記憶體子集1704中,並可與存取其本身局部L2快取記憶體子集之其他處理器核心平行地快速存取。由處理器核心寫入之資料係儲存於其本身L2快取記憶體子集1704中,並視需要從其他子集清除。環形網路確保共用資料之一致性。環形網路為雙向,允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理器於晶片內相互通訊。每一環形資料路徑為每一方向1012位元寬。
圖17B為依據本發明之實施例之圖17A中部分處理器核心之展開圖。圖17B包括L1快取記憶體1704之L1資料快取記憶體1706A部分及更詳細地關於向量單元1710及向量暫存器1714。具體地,向量單元1710為16寬向量處理單元(VPU)(詳16寬ALU 1728),其執行整數、單一精度浮點、及雙精度浮點指令之一或多者。VPU支援暫存器輸入與拌和單元1720拌和,與數字轉換單元1722A-B數字轉換,與複製單元1724複製記憶體輸入。寫入遮罩暫存器1726允許斷定結果向量寫入。
圖18為依據本發明之實施例之處理器1800
的方塊圖,其可具有一個以上核心,可具有整合記憶體控制器,及可具有整合圖形。圖18中實線框描繪處理器1800,具有單一核心1802A、系統代理器1810、一組一或更多個匯流排控制器單元1816,同時可選附加虛線框描繪替代處理器1800,具有多核心1802A-N、系統代理器單元1810中之一組一或更多個整合記憶體控制器單元1814、及專用邏輯1808。
因而,處理器1800之不同實施可包括:1)具有整合圖形及/或科學(產量)邏輯之專用邏輯1808的CPU(其可包括一或更多個核心),且核心1802A-N為一或更多個通用核心(例如通用循序核心、通用亂序核心、二者之組合);2)具有希望主要用於圖形及/或科學(產量)之大量專用核心之核心1802A-N的協同處理器;及3)具有大量通用循序核心之核心1802A-N的協同處理器。因而,處理器1800可為通用處理器、協同處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多整合核心(MIC)協同處理器(包括30或更多核心)、或嵌入處理器等。處理器可於一或更多個晶片上實施。處理器1800可為使用任何數量處理技術之一或更多個基板的一部分,及/或可於該些基板上實施,諸如BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或更多階快取記憶體、一組或一或更多個共用快取記憶體單元1806、及
耦接至整合記憶體控制器單元1814組之外部記憶體(未顯示)。共用快取記憶體單元1806組可包括一或更多個中階快取記憶體,諸如2階(L2)、3階(L3)、4階(L4)、或其他階快取記憶體、最後階快取記憶體(LLC)、及/或其組合。雖然在一實施例中,環形互連單元1812互連整合圖形邏輯1808、共用快取記憶體單元1806組、及系統代理器單元1810/整合記憶體控制器單元1814,替代實施例可使用任何數量之熟知技術用於互連該等單元。在一實施例中,維持一或更多個快取記憶體單元1806及核心1802A-N間之一致性。
在若干實施例中,一或更多個核心1802A-N可多執行緒處理。系統代理器1810包括協調及操作核心1802A-N之該些組件。系統代理器單元1810可包括例如功率控制單元(PCU)及顯示單元。PCU可為或包括調節核心1802A-N及整合圖形邏輯1808之功率狀態所需的邏輯及組件。顯示單元用於驅動一或更多個外部連接之顯示器。
在架構指令集方面,核心1802A-N可為同質或異質;即,二或更多個核心1802A-N可執行相同指令集,而其他則可僅執行指令集之子集或不同指令集。
圖19-22為示例電腦架構之方塊圖。其他用於膝上型電腦、桌上型電腦、手持式PC、個人數位助
理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式其他電子裝置之技藝中的已知其他系統設計及組態亦為適當。通常,如文中所揭露之可結合處理器及/或其他執行邏輯的各式系統或電子裝置一般均適當。
現在回至圖19,顯示依據本發明之一實施例之系統1900的方塊圖。系統1900可包括一或更多個處理器1910、1915,其耦接至控制器集線器1920。在一實施例中,控制器集線器1920包括圖形記憶體控制器集線器(GMCH)1990及輸入/輸出集線器(IOH)1950(其可在個別晶片上);GMCH 1990包括耦接至記憶體1940及協同處理器1945之記憶體及圖形控制器;IOH 1950將輸入/輸出(I/O)裝置1960耦接至GMCH 1990。另一方面,記憶體及圖形控制器之一者或二者整合於處理器內(如文中所描述),記憶體1940及協同處理器1945以IOH 1950直接耦接至處理器1910,且控制器集線器1920與IOH 1950在單一晶片中。
圖19中以虛線標示其餘處理器1915之可選擇性。每一處理器1910、1915可包括文中所描述之一或更多個處理核心,並可為處理器1800之某版本。
記憶體1940可為例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或二者之組合。對至
少一實施例而言,控制器集線器1920經由諸如前側匯流排(FSB)之多落點匯流排、諸如快速路徑互連(QPI)之點對點介面、或類似連接1995,而與處理器1910、1915通訊。
在一實施例中,協同處理器1945為專用處理器,諸如高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入處理器等。在一實施例中,控制器集線器1920可包括整合圖形加速器。
在優點之量度範圍方面,包括架構、微架構、熱、及電力損耗特性等方面,實體資源1910、1915之間存在各種差異。
在一實施例中,處理器1910執行指令,其控制一般類型之資料處理作業。協同處理器指令可嵌入指令內。處理器1910識別該些協同處理器指令為應由附加協同處理器1945執行之類型。因此,處理器1910於協同處理器匯流排或其他互連上將該些協同處理器指令(或代表協同處理器指令之控制信號)發送至協同處理器1945。協同處理器1945接受及執行所接收之協同處理器指令。
現在回至圖20,顯示依據本發明之實施例之第一特定示例系統2000的方塊圖。如圖20中所示,多處理器系統2000為點對點互連系統,包括經由點對點互連2050耦接之第一處理器2070及第二處理器2080。每一處理器2070及2080可為處理器1800之某版本。在本發明之一實施例中,處理器2070及2080分別為處理器1910
及1915,而協同處理器2038為協同處理器1945。在另一實施例中,處理器2070及2080分別為處理器1910及協同處理器1945。
所示處理器2070及2080分別包括整合記憶體控制器(IMC)單元2072及2082。處理器2070亦包括其匯流排控制器單元點對點(P-P)介面2076及2078之一部分;類似地,第二處理器2080包括P-P介面2086及2088。處理器2070、2080可使用P-P介面電路2078、2088經由點對點(P-P)介面2050而交換資訊。如圖20中所示,IMC 2072及2082耦接處理器至個別記憶體,即記憶體2032及記憶體2034,其可為局部附加至個別處理器之主記憶體的一部分。
每一處理器2070、2080可使用點對點介面電路2076、2094、2086、2098經由個別P-P介面2052、2054,而與晶片組2090交換資訊。晶片組2090可選地經由高性能介面2039而與協同處理器2038交換資訊。在一實施例中,協同處理器2038為專用處理器,諸如高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入處理器等。
共用快取記憶體(未顯示)可包括於任一處理器中或二處理器外部,但仍經由P-P互連與處理器連接,使得若處理器處於低功率模式,則任一處理器或二處理器之局部快取記憶體資訊可儲存於共用快取記憶體中。
晶片組2090可經由介面2096而耦接至第一
匯流排2016。在一實施例中,第一匯流排2016可為週邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範圍未如此限制。
如圖20中所示,各式I/O裝置2014可耦接至第一匯流排2016,連同匯流排橋接器2018,其將第一匯流排2016耦接至第二匯流排2020。在一實施例中,一或更多個其餘處理器2015耦接至第一匯流排2016,諸如協同處理器、高產量MIC處理器、GPGPU、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、場可程控閘陣列、或任何其他處理器。在一實施例中,第二匯流排2020可為低管腳數(LPC)匯流排。在一實施例中,各式裝置可耦接至第二匯流排2020,包括例如鍵盤及/或滑鼠2022、通訊裝置2027及儲存單元2028,諸如可包括指令/碼及資料2030之磁碟機或其他大量儲存裝置。此外,音頻I/O 2024可耦接至第二匯流排2020。請注意,其他架構亦為可行的。例如,取代圖20之點對點架構,系統可實施多落點匯流排或其他該等架構。
現在回至圖21,顯示依據本發明之實施例之第二特定示例系統2100的方塊圖。圖20及21中類似元件配賦相似代號,且圖21已省略圖20之某些方面,以避免混淆圖21之其他方面。
圖21描繪處理器2070、2080可分別包括整合記憶體及I/O控制邏輯(「CL」)2072及2082。因
而,CL 2072、2082包括整合記憶體控制器單元,及包括I/O控制邏輯。圖21描繪不僅記憶體2032、2034耦接至CL 2072、2082,I/O裝置2114亦耦接至控制邏輯2072、2082。舊有I/O裝置2115耦接至晶片組2090。
現在回至圖22,顯示依據本發明之實施例之SoC 2200的方塊圖。圖18中類似元件配賦相似代號。而且,虛線框為更先進SoC上之可選部件。在圖22中,互連單元2202耦接至:應用處理器2210,其包括一組一或更多個核心1802A-N及共用快取記憶體單元1806;系統代理器單元1810;匯流排控制器單元1816;整合記憶體控制器單元1814;一組或一或更多個協同處理器2220,其可包括整合圖形邏輯、圖像處理器、音頻處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元2230;直接記憶體存取(DMA)單元2232;及顯示單元2240,用於耦接至一或更多個外部顯示器。在一實施例中,協同處理器2220包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、或嵌入處理器等。
文中所揭露之機構的實施例可以硬體、軟體、韌體、或該等實施途徑之組合實施。本發明之實施例可實施為電腦程式或程式碼,其係於包含至少一處理器之可程控系統上執行;儲存系統(包括揮發及非揮發記憶體及/或儲存元件);至少一輸入裝置;及至少一輸出裝置。
諸如圖20中所描繪之碼2030的程式碼,可施加於輸入指令,而實施文中所描述之功能並產生輸出資訊。輸出資訊可以已知方式施加於一或更多個輸出裝置。為此應用,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器。
程式碼可以高階程序或物件導向編程語言實施,以與處理系統通訊。若需要,程式碼亦可以組合或機器語言實施。事實上,文中所描述之機構不侷限於任何特定編程語言之範圍。在任何情況下,語言可為編譯或解譯語言。
至少一實施例之一或更多個方面可由儲存於機器可讀取媒體上之代表指令實施,其代表處理器內之各式邏輯,當由機器讀取指令時,致使機器製造邏輯而實施文中所描述之技術。該等代表,已知為「IP核心」,可儲存於有形機器可讀取媒體上,並支援各式用戶或製造廠,以載入實際製造邏輯或處理器之製造機器中。
該等機器可讀取儲存媒體可包括但不侷限於由機器或裝置製造或形成之物件的非暫態有形配置,包括儲存媒體,諸如硬碟;任何其他類型碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可複寫光碟(CD-RW)、及磁性光碟;半導體裝置,諸如唯讀記憶體(ROM);隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM);
可抹除可程控唯讀記憶體(EPROM);快閃記憶體;電可抹除可程控唯讀記憶體(EEPROM);相變記憶體(PCM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,本發明之實施例亦包括非暫態有形機器可讀取媒體,包含指令或包含設計資料,諸如硬體描述語言(HDL),其定義文中所描述之結構、電路、設備、處理器及/或系統部件。該等實施例亦可稱為程式產品。
在若干情況下,指令轉換器可用以將指令從來源指令集轉換至目標指令集。例如,指令轉換器可翻譯(例如使用靜態二元翻譯、包括動態編譯之動態二元翻譯)、轉譯、仿真、或轉換指令為將由核心處理之一或更多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合實施。指令轉換器可在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖23為方塊圖,對比於依據本發明之實施例之使用軟體指令轉換器,將來源指令集中之二元指令轉換為目標指令集中之二元指令。在描繪之實施例中,指令轉換器為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或其各式組合實施。圖23顯示高階語言2302之程式,可使用x86編譯器2304編譯,而產生x86二元碼2306,其可由具至少一x86指令集核心2316
之處理器本機執行。具有至少一x86指令集核心2316之處理器代表任何處理器,其可藉由相容地執行或處理(1)Intel x86指令集核心之指令集的實質部分,或(2)目標在具有至少一x86指令集核心之Intel處理器運行之應用或其他軟體的物件碼版本,以便實質上達成與具有至少一x86指令集核心之Intel處理器的相同結果,而實質上實施與具有至少一x86指令集核心之Intel處理器的相同功能。x86編譯器2304代表編譯器,可操作以產生x86二元碼2306(例如物件碼),具或不具其餘鏈接處理,而在具有至少一x86指令集核心2316之處理器上執行。類似地,圖23顯示高階語言2302之程式,可使用替代指令集編譯器2308編譯,而產生可由不具有至少一x86指令集核心2314之處理器(例如具有執行加州桑尼維爾MIPS科技公司之MIPS指令集及/或執行加州桑尼維爾ARM股份公司之ARM指令集之核心的處理器)本機執行之替代指令集二元碼2310。指令轉換器2312用以將x86二元碼2306轉換為可由不具x86指令集核心2314之處理器本機執行的碼。此轉換碼不大可能與替代指令集二元碼2310相同,因為此指令轉換器難以製造;然而,轉換碼將完成一般作業,並由來自替代指令集之指令組成。因而,指令轉換器2312代表軟體、韌體、硬體、或其組合,經由仿真、模擬或任何其他處理,而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二元碼2306。
101‧‧‧暫存器ZMM4
103‧‧‧暫存器ZMM0
105‧‧‧暫存器ZMM1
107‧‧‧暫存器ZMM2
109‧‧‧暫存器ZMM3
111‧‧‧暫存器ZMM5
Claims (13)
- 一種方法,包含:在電腦處理器中,執行第一置換指令,其中,該第一置換指令使用第一索引來源運算元之索引,對第一緊縮資料來源運算元及第二緊縮資料來源運算元作業,而將該第一緊縮資料來源運算元及該第二緊縮資料來源運算元中之值置換於該索引來源運算元中,以產生修改索引來源運算元,其中,該索引來源運算元為目的地運算元;以及執行第二置換指令,其中,該第二置換指令使用第二索引來源運算元之索引操作第三緊縮資料來源運算元及第四緊縮資料來源運算元,而將該第三緊縮資料來源運算元及該第四緊縮資料來源運算元中之值置換於該第二索引來源運算元中,其中,該第二索引來源運算元為該第二置換指令之該修改索引來源運算元及目的地運算元。
- 如申請專利範圍第1項之方法,進一步包含:載入該來源運算元。
- 如申請專利範圍第1項之方法,進一步包含:載入該第一索引來源運算元。
- 如申請專利範圍第1項之方法,其中,該第一置換指令及該第二置換指令之該置換使用寫入遮罩運算元而選擇將寫入至該目的地運算元之元件。
- 如申請專利範圍第1項之方法,進一步包含:重複執行每一資料類型之該第一置換指令及該第二置 換指令,而從資料集聚集。
- 如申請專利範圍第5項之方法,其中,該資料集為結構陣列。
- 一種方法,包含:在電腦處理器中,執行移動指令,其中,該移動指令對第一緊縮資料來源運算元及第二緊縮資料來源運算元作業,而將該第二緊縮資料來源運算元之資料元件移動至該第一緊縮資料來源運算元,其中,該第一緊縮資料來源運算元為第一目的地運算元,及該第二緊縮資料來源運算元儲存索引值;以及執行置換指令,其中,該置換指令使用該第一目的地運算元之索引,操作第三緊縮資料來源運算元及第四緊縮資料來源運算元,而將該第三緊縮資料來源運算元及該第四緊縮資料來源運算元中之值置換於該第一目的地運算元中。
- 如申請專利範圍第7項之方法,進一步包含:載入該來源運算元。
- 如申請專利範圍第7項之方法,進一步包含:載入該第一索引來源運算元。
- 如申請專利範圍第7項之方法,其中,該置換指令之該置換使用寫入遮罩運算元而選擇將寫入至該第一目的地運算元之元件。
- 如申請專利範圍第7項之方法,進一步包含:重複執行每一資料類型之該第一置換指令及該第二置 換指令,而從資料集聚集。
- 如申請專利範圍第11項之方法,其中,該資料集為結構陣列。
- 如申請專利範圍第7項之方法,其中,該移動指令之該移動使用寫入遮罩運算元而選擇將寫入至該第一目的地運算元之元件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/975,612 | 2015-12-18 | ||
US14/975,612 US9946541B2 (en) | 2015-12-18 | 2015-12-18 | Systems, apparatuses, and method for strided access |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201730748A true TW201730748A (zh) | 2017-09-01 |
TWI724054B TWI724054B (zh) | 2021-04-11 |
Family
ID=59057595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105136486A TWI724054B (zh) | 2015-12-18 | 2016-11-09 | 用於跨距存取的系統、裝置及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9946541B2 (zh) |
EP (1) | EP3391200B1 (zh) |
CN (1) | CN108351782B (zh) |
TW (1) | TWI724054B (zh) |
WO (1) | WO2017106463A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7035751B2 (ja) * | 2018-04-12 | 2022-03-15 | 富士通株式会社 | コード変換装置、コード変換方法、及びコード変換プログラム |
US11327862B2 (en) | 2019-05-20 | 2022-05-10 | Micron Technology, Inc. | Multi-lane solutions for addressing vector elements using vector index registers |
US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false vector index registers |
US11507374B2 (en) | 2019-05-20 | 2022-11-22 | Micron Technology, Inc. | True/false vector index registers and methods of populating thereof |
US11340904B2 (en) | 2019-05-20 | 2022-05-24 | Micron Technology, Inc. | Vector index registers |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625721B1 (en) | 1999-07-26 | 2003-09-23 | Intel Corporation | Registers for 2-D matrix processing |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
JP4949267B2 (ja) | 2004-12-14 | 2012-06-06 | シリコン ハイブ ビー・ヴィー | プログラム可能な信号処理回路及びインターリーブ方法 |
US8868885B2 (en) | 2010-11-18 | 2014-10-21 | Ceva D.S.P. Ltd. | On-the-fly permutation of vector elements for executing successive elemental instructions |
US9904547B2 (en) * | 2011-12-22 | 2018-02-27 | Intel Corporation | Packed data rearrangement control indexes generation processors, methods, systems and instructions |
US10565283B2 (en) * | 2011-12-22 | 2020-02-18 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
WO2013095541A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Apparatus and method for performing a permute operation |
US9495162B2 (en) * | 2011-12-23 | 2016-11-15 | Intel Corporation | Apparatus and method for performing a permute operation |
US10037205B2 (en) * | 2011-12-23 | 2018-07-31 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
WO2013095653A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
WO2013095613A2 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of mask permute instructions |
CN104137054A (zh) * | 2011-12-23 | 2014-11-05 | 英特尔公司 | 用于执行从索引值列表向掩码值的转换的系统、装置和方法 |
US20130339649A1 (en) | 2012-06-15 | 2013-12-19 | Intel Corporation | Single instruction multiple data (simd) reconfigurable vector register file and permutation unit |
CN107562444B (zh) * | 2012-12-26 | 2020-12-18 | 英特尔公司 | 合并相邻的聚集/分散操作 |
US9645820B2 (en) * | 2013-06-27 | 2017-05-09 | Intel Corporation | Apparatus and method to reserve and permute bits in a mask register |
-
2015
- 2015-12-18 US US14/975,612 patent/US9946541B2/en active Active
-
2016
- 2016-11-09 TW TW105136486A patent/TWI724054B/zh not_active IP Right Cessation
- 2016-12-15 WO PCT/US2016/066868 patent/WO2017106463A1/en active Application Filing
- 2016-12-15 EP EP16876660.8A patent/EP3391200B1/en active Active
- 2016-12-15 CN CN201680067042.4A patent/CN108351782B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US9946541B2 (en) | 2018-04-17 |
CN108351782B (zh) | 2024-03-08 |
TWI724054B (zh) | 2021-04-11 |
WO2017106463A1 (en) | 2017-06-22 |
EP3391200A4 (en) | 2019-07-31 |
CN108351782A (zh) | 2018-07-31 |
US20170177356A1 (en) | 2017-06-22 |
EP3391200B1 (en) | 2022-06-15 |
EP3391200A1 (en) | 2018-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI761367B (zh) | 用於融合乘加運算的系統、裝置及方法 | |
TWI552080B (zh) | 處理器 | |
TWI731905B (zh) | 用於聚合集中及跨步的系統、裝置及方法 | |
TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
TWI512616B (zh) | 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品 | |
TWI514268B (zh) | 合併遮罩圖案之指令 | |
TWI524266B (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
TWI502491B (zh) | 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器 | |
TWI740859B (zh) | 用於跨步的載入(strided load)的系統、設備及方法 | |
TWI473015B (zh) | 執行向量頻率擴展指令之方法、處理器核心以及製品 | |
TW201530309A (zh) | 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令 | |
TWI663545B (zh) | 執行置換運算的處理器 | |
TWI637276B (zh) | 執行向量位元混洗的方法與裝置 | |
TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
TW201730748A (zh) | 用於跨距存取的系統、裝置及方法 | |
TWI599951B (zh) | 用於融合乘法乘法指令的處理器、方法及系統 | |
TWI526930B (zh) | 用以複製及遮蔽資料結構之設備及方法 | |
TWI644256B (zh) | 用以執行向量飽和雙字/四字加法的指令及邏輯 | |
TW201810029A (zh) | 用於跨步載入的系統、設備及方法 | |
CN107077333B (zh) | 用于实行向量位聚集的方法和装置 | |
TW201732571A (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 | |
TWI610234B (zh) | 用於壓縮遮罩值的方法及裝置 | |
TWI737650B (zh) | 用於從鏈結結構取回元件的處理器、系統和方法 | |
CN114327622A (zh) | 用于转换16位浮点格式的指令的装置、方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |