TWI747881B - 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 - Google Patents
將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 Download PDFInfo
- Publication number
- TWI747881B TWI747881B TW106105977A TW106105977A TWI747881B TW I747881 B TWI747881 B TW I747881B TW 106105977 A TW106105977 A TW 106105977A TW 106105977 A TW106105977 A TW 106105977A TW I747881 B TWI747881 B TW I747881B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- bit
- instruction
- processor
- contiguous
- Prior art date
Links
Images
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/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 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
-
- 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/30112—Register structure comprising data of variable length
-
- 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/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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
一種處理器包含解碼單元,該解碼單元係解碼用以指示包含複數個毗連資料元素之來源緊縮資料、資料元素的一數量及目的地之指令。該處理器亦包含與該解碼單元耦接之執行單元。該執行單元回應於該指令以將結果緊縮資料儲存在該目的地中。該結果緊縮資料係具有複數個巷道,各巷道係儲存與該各自巷道之最小有效末端對齊之該指示數量的毗連資料元素之不同的非重疊集合。在該結果緊縮資料之毗連巷道中之該指示數量的該毗連資料元素之不同的非重疊集合係藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。
Description
在本文中所述之實施例整體而言係關於處理器。詳言之,在本文中所述之實施例整體而言係關於用以回應於指令而對緊縮資料進行操作之處理器。
許多處理器具有單一指令多資料(SIMD)架構。在SIMD架構中,多個資料元素可作為緊縮資料或向量資料而被緊縮在一個暫存器或記憶體位置內。在緊縮或向量資料中,暫存器或記憶體位置之位元可在邏輯上被劃分成資料元素之序列。例如,128位元寬之緊縮資料暫存器可具有兩個64位元資料元素、四個32位元資料元素、八個16位元資料元素或十六個8位元資料元素。該資料元素之各者可表示可分別地及/或獨立於其他資料來操作之單獨的資料片段(例如,像素顏色組件、浮點數等等)。
在此種SIMD架構中,緊縮資料指令、向量指令或SIMD指令可被使用以同時地及/或平行地對此種緊縮資料或向量運算元之多個資料元素或兩個此種緊縮資料或向量運算元之多對資料元素進行操作。該處理器可具有回應於該指令之平行執行硬體,以同時地及/或平行地對該資料進行操作。
100‧‧‧處理器
102‧‧‧劃分為巷道指令
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧系統記憶體
110‧‧‧記憶體位置
112‧‧‧來源緊縮資料
114‧‧‧緊縮資料暫存器
116‧‧‧目的地儲存位置
118‧‧‧結果緊縮資料
192A-N‧‧‧核心
220‧‧‧方法
221‧‧‧方塊
222‧‧‧方塊
306‧‧‧執行單元
312‧‧‧來源緊縮資料
318‧‧‧結果緊縮資料
330‧‧‧將來源緊縮資料劃分為巷道之操作
332‧‧‧毗連資料元素
334‧‧‧毗連資料元素
336‧‧‧其他資料元素
338‧‧‧毗連資料元素
340‧‧‧最有效資料元素
342‧‧‧毗連資料元素
344‧‧‧最有效資料元素
346‧‧‧第一最小有效巷道
348‧‧‧第二較有效巷道
349‧‧‧最小有效位元
406‧‧‧執行單元
412‧‧‧來源緊縮資料
418‧‧‧結果緊縮資料
446‧‧‧第一最小有效巷道
448‧‧‧第二較有效巷道
450‧‧‧將來源緊縮資料劃分為巷道之操作
506‧‧‧執行單元
512‧‧‧來源緊縮資料
518‧‧‧結果緊縮資料
546‧‧‧第一最小有效巷道
548‧‧‧第二較有效巷道
552‧‧‧將來源緊縮資料劃分為巷道之操作
554‧‧‧三個複數之第一陣列
556‧‧‧三個複數之第二陣列
606‧‧‧執行單元
612‧‧‧來源緊縮資料
618‧‧‧結果緊縮資料
660‧‧‧將來源緊縮資料劃分為巷道之操作
662‧‧‧第一最小有效巷道
663‧‧‧第二較有效巷道
664‧‧‧第三仍較有效巷道
665‧‧‧第四最有效巷道
706‧‧‧執行單元
712‧‧‧來源緊縮資料
718‧‧‧結果緊縮資料
762‧‧‧第一最小有效巷道
763‧‧‧第二較有效巷道
764‧‧‧第三仍較有效巷道
765‧‧‧第四最有效巷道
770‧‧‧將來源緊縮資料劃分為巷道之操作
771‧‧‧第一複數
772‧‧‧第二複數
773‧‧‧第三複數
774‧‧‧第四複數
814‧‧‧緊縮資料暫存器
846‧‧‧128位元緊縮四倍字格式
990‧‧‧緊縮資料操作遮罩暫存器
1002‧‧‧VEX前置
1005‧‧‧REX欄位
1015‧‧‧運算碼映射欄位
1020‧‧‧VEX.vvvv
1025‧‧‧前置編碼欄位
1030‧‧‧真實運算碼欄位
1040‧‧‧格式欄位
1040‧‧‧MOD R/M欄位
1042‧‧‧基本運算欄位
1044‧‧‧暫存器索引欄位
1046‧‧‧R/M欄位
1050‧‧‧縮放欄位
1054‧‧‧SIB.xxx
1056‧‧‧SIB.bbb
1062‧‧‧位移欄位
1064‧‧‧W欄位
1068‧‧‧VEX.L
1072‧‧‧立即值欄位
1074‧‧‧完整運算碼欄位
1100‧‧‧通用向量親和指令格式
1105‧‧‧無記憶體存取指令範本
1110‧‧‧全捨入控制式運算
1112‧‧‧部分捨入控制式運算
1115‧‧‧資料轉換型運算
1117‧‧‧VSIZE型運算
1120‧‧‧記憶體存取指令範本
1125‧‧‧記憶體存取暫時性指令範本
1127‧‧‧記憶體存取寫入遮罩控制指令範本
1130‧‧‧記憶體存取非暫時性指令範本
1140‧‧‧格式欄位
1142‧‧‧基本運算欄位
1144‧‧‧暫存器索引欄位
1146‧‧‧修改符欄位
1150‧‧‧擴增運算欄位
1152‧‧‧阿爾發欄位
1152A‧‧‧RS欄位
1152B‧‧‧逐出提示欄位
1152C‧‧‧寫入遮罩控制(Z)欄位
1154‧‧‧貝它欄位
1154A‧‧‧捨入控制欄位
1154B‧‧‧資料轉換欄位
1154C‧‧‧資料調處欄位
1156‧‧‧抑制全部浮點異常(SAE)欄位
1157A‧‧‧RL欄位
1157B‧‧‧廣播欄位
1158‧‧‧捨入運算控制欄位
1159A‧‧‧捨入運算欄位
1159B‧‧‧向量長度欄位
1160‧‧‧縮放欄位
1162A‧‧‧位移欄位
1162B‧‧‧位移因數欄位
1164‧‧‧資料元素寬度欄位
1168‧‧‧類型欄位
1168A‧‧‧類型A
1168B‧‧‧類型B
1170‧‧‧寫入遮罩欄位
1172‧‧‧立即值欄位
1174‧‧‧完整運算碼欄位
1200‧‧‧特定向量親和指令格式
1202‧‧‧EVEX前置
1205‧‧‧REX欄位
1210‧‧‧REX’欄位
1215‧‧‧運算碼映射欄位
1220‧‧‧EVEX.vvvv欄位
1225‧‧‧前置編碼欄位
1230‧‧‧真實運算碼欄位
1240‧‧‧MOD R/M欄位
1242‧‧‧MOD欄位
1244‧‧‧Reg欄位
1246‧‧‧R/M欄位
1254‧‧‧xxx欄位
1256‧‧‧bbb欄位
1300‧‧‧暫存器架構
1310‧‧‧向量暫存器
1315‧‧‧寫入遮罩暫存器
1325‧‧‧通用暫存器
1345‧‧‧純量浮點堆疊暫存器檔案
1350‧‧‧緊縮整數平坦暫存器檔案
1400‧‧‧處理器管線
1402‧‧‧提取級
1404‧‧‧長度解碼級
1406‧‧‧解碼級
1408‧‧‧配置級
1410‧‧‧更名級
1412‧‧‧排程級
1414‧‧‧暫存器讀取/記憶體讀取級
1416‧‧‧執行級
1418‧‧‧寫回/記憶體寫入級
1422‧‧‧異常處置級
1424‧‧‧提交級
1430‧‧‧前端單元
1432‧‧‧分支預測單元
1434‧‧‧指令快取單元
1436‧‧‧指令轉譯後備緩衝區
1438‧‧‧指令提取單元
1440‧‧‧解碼單元
1450‧‧‧執行引擎單元
1452‧‧‧更名/配置器單元
1454‧‧‧止用單元
1456‧‧‧排程器單元
1458‧‧‧實體暫存器檔案單元
1460‧‧‧執行叢集
1462‧‧‧執行單元
1464‧‧‧記憶體存取單元
1470‧‧‧記憶體單元
1472‧‧‧資料TLB單元
1474‧‧‧資料快取單元
1476‧‧‧2級(L2)快取單元
1490‧‧‧處理器核心
1500‧‧‧指令解碼器
1502‧‧‧晶粒上的互連網路
1504‧‧‧2級(L2)快取
1506‧‧‧1級(L1)快取
1506A‧‧‧L1資料快取
1508‧‧‧純量單元
1510‧‧‧向量單元
1512‧‧‧純量暫存器
1514‧‧‧向量暫存器
1520‧‧‧攪拌單元
1522A‧‧‧數值轉換單元
1524‧‧‧複製單元
1526‧‧‧寫入遮罩暫存器
1528‧‧‧16位元寬ALU
1600‧‧‧處理器
1602‧‧‧核心
1602A‧‧‧單一核心
1606‧‧‧共用快取單元
1608‧‧‧專用邏輯
1610‧‧‧系統代理單元
1612‧‧‧環狀式互連單元
1614‧‧‧記憶體控制器單元
1616‧‧‧匯流排控制器單
1700‧‧‧系統
1710‧‧‧處理器
1715‧‧‧處理器
1720‧‧‧控制器集線器
1740‧‧‧記憶體
1745‧‧‧協同處理器
1750‧‧‧輸入/輸出集線器(IOH)
1760‧‧‧輸入/輸出(I/O)裝置
1790‧‧‧圖形記憶體控制器集線器(GMCH)
1795‧‧‧連接
1800‧‧‧多處理器系統
1814‧‧‧I/O裝置
1815‧‧‧處理器
1816‧‧‧第一匯流排
1818‧‧‧匯流排橋
1820‧‧‧第二匯流排
1822‧‧‧鍵盤及/或滑鼠
1824‧‧‧音訊I/O
1827‧‧‧通訊裝置
1828‧‧‧儲存單元
1830‧‧‧指令/碼及資料
1832‧‧‧記憶體
1834‧‧‧記憶體
1838‧‧‧協同處理器
1839‧‧‧高性能介面
1850‧‧‧點對點互連
1852‧‧‧點對點互連
1854‧‧‧點對點互連
1870‧‧‧第一處理器
1872‧‧‧整合式記憶體控制器(IMC)單元
1876‧‧‧點對點介面電路
1878‧‧‧點對點介面電路
1880‧‧‧第二處理器
1882‧‧‧整合式記憶體控制器(IMC)單元
1886‧‧‧點對點互連
1888‧‧‧點對點互連
1890‧‧‧晶片組
1894‧‧‧點對點介面電路
1896‧‧‧介面
1898‧‧‧點對點介面電路
1900‧‧‧例示性系統
1914‧‧‧I/O裝置
1915‧‧‧舊有I/O裝置
2000‧‧‧系統晶片
2002‧‧‧互連單元
2010‧‧‧應用處理器
2020‧‧‧協同處理器
2020‧‧‧協同處理器
2030‧‧‧靜態隨機存取記憶體(SRAM)單元
2032‧‧‧直接記憶體存取(DMA)單元
2040‧‧‧顯示單元
2102‧‧‧高階語言
2104‧‧‧x86編譯器
2106‧‧‧x86二進制碼
2108‧‧‧替代指令集編譯器
2110‧‧‧替代指令集二進制碼
2112‧‧‧指令轉換器
2114‧‧‧不具有至少一個x86指令集核心之處理器
2116‧‧‧具有至少一個x86指令集核心之處理器
藉由參考用於繪示實施例之以下描述及附圖,可最佳地來瞭解本發明。在圖式中:圖1係可操作以執行劃分為巷道指令之實施例之處理器之實施例之方塊圖。
圖2係執行將來源緊縮資料劃分為巷道指令之實施例之方法之實施例之方塊流程圖。
圖3係將來源緊縮資料劃分為巷道之操作之實施例之方塊圖。
圖4係將來源緊縮資料劃分為巷道之操作之第一特定實例實施例之方塊圖。
圖5係將來源緊縮資料劃分為巷道之操作之第二更特定實例實施例之方塊圖。
圖6係將來源緊縮資料劃分為巷道之操作之第三特定實例實施例之方塊圖。
圖7係將來源緊縮資料劃分為巷道之操作之第四更特定實例實施例之方塊圖。
圖8係合適的一組緊縮資料暫存器之實例實施例之方塊圖。
圖9係合適的一組緊縮資料操作遮罩暫存器之實例實施例之方塊圖。
圖10A至10C係繪示依照本發明之實施例之通用向量親和指令格式及其之指令範本之方塊圖。
圖11A至11B係繪示依照本發明之實施例之例示性特定向量親和指令格式及運算碼欄位之方塊圖。
圖12A至12D係繪示依照本發明之實施例之例示性特定向量親和指令格式及其之欄位之方塊圖。
圖13係暫存器架構之實施例之方塊圖。
圖14A係繪示循序管線之實施例及暫存器更名亂序發出/執行管線之實施例之方塊圖。
圖14B係包含耦接至執行引擎單元之前端單元且兩者耦接至記憶體單元之處理器核心之實施例之方塊圖。
圖15A係單一處理器核心連同其之至晶粒上的互連網路之連接及其之2級(L2)快取之本端子集合之實施例之方塊圖。
圖15B係圖15A之處理器核心之一部分之擴展圖之實施例之方塊圖。
圖16係可具有多於一個核心、可具有整合式記憶體控制器及可具有整合式圖形之處理器之實施例之方塊圖。
圖17係電腦架構之第一實施例之方塊圖。
圖18係電腦架構之第二實施例之方塊圖。
圖19係電腦架構之第三實施例之方塊圖。
圖20係電腦架構之第四實施例之方塊圖。
圖21係依照本發明之實施例之使用軟體指令轉換器以將在來源指令集中之二進制指令轉換為在目標指令集中之二進制指令之方塊圖。
在本文中所揭示的係劃分為巷道的指令、用以執行該指令之處理器、當處理或執行該指令時由該處理器所執行之方法及結合一或多個處理器以處理或執行該指令之系統。在某些實施例中,該處理器可具有用以接收及/或解碼該指令之解碼單元或其他邏輯,以及用以執行或以其他方式執行該指令之執行單元或其他邏輯。在以下的說明中,闡述了許多特定細節(例如,特定指令操作、資料格式、處理器組態、微架構細節、操作之序列等等)。然而,可在沒有這些特定細節的情況下來實施實施例。在其他例子中,未詳細地展示習知之電路、結構及技術以避免模糊對本說明之瞭解。
圖1係可操作以執行劃分為巷道指令102之實施例之處理器100之實施例之方塊圖。在某些實施例中,處理器可表示積體電路及/或可包含設置在半導體晶粒上之積體電路或邏輯。在某些實施例中,處理器可以係通用處理器(例如,在桌上型、膝上型或其他電腦中所使用之類型之通用微處理器或中央處理單元(CPU))。或者,處理器
可以係專用處理器。合適的專用處理器之實例係包含(但不限於)網路處理器、通訊處理器、密碼處理器、圖形處理器、協同處理器、內嵌處理器、數位信號處理器(DSP)及控制器(例如,微控制器)。該處理器可具有各種複雜指令集計算(CISC)架構、精減指令集計算(RISC)架構、極長指令字(VLIW)架構、混合架構、其他類型之架構中之任一者,或具有不同架構之組合(例如,不同的核心可具有不同的架構)。
在操作期間,處理器100可接收劃分為巷道指令102。例如,可從在匯流排或其他互連之上之記憶體來接收該指令。該指令可表示巨集指令、機器碼指令或該處理器之指令集之其他指令或控制信號。在某些實施例中,該劃分為巷道指令可顯式地指定(例如,透過一或多個欄位或一組位元),或以其他方式指示(例如,隱含地指示)來源緊縮資料112,其將包含複數個毗連資料元素,且可顯式地指定或以其他方式指示其中將回應於該指令而儲存之結果緊縮資料118之目的地儲存位置116(例如,目的地緊縮資料暫存器)。
如所展示的,在某些實施例中,來源緊縮資料112可以可選地被儲存在系統記憶體108中。在此種實施例中,該指令可指定或以其他方式指示將被使用以定址其中將儲存該來源緊縮資料之記憶體位置110之記憶體位址資訊。各種不同類型的位址資訊係可能的。該位址資訊可表示絕對記憶體位址資訊或相對記憶體位址資訊,其可指示相對
於基本記憶體位址之記憶體位置或其他記憶體位置。此外,可以可選地使用各種不同的間接記憶體定址模式。作為一特定之實例,該提取指令可隱含地指示用以儲存相對記憶體位址資訊之暫存器(例如,通用暫存器),該相對記憶體位址資訊可與儲存在另一隱含暫存器(例如,碼、資料或延伸段暫存器)中之額外記憶體位址資訊結合以產生用以識別其中欲儲存該來源緊縮資料之該記憶體位置之該最終記憶體位址。該隱含地指示之暫存器可被該處理器所理解,儘管未透過顯式值來表達。例如,該處理器可在識別該指令之運算碼之後理解或識別其使用該(等)暫存器係固有的或隱含的。此只是一個實例。該位址資訊之其他形式亦係可能的。此外,與在一或多個暫存器中所提供之該位址資訊不同,潛在的一些或全部之該位址資訊可由該指令之位元(例如,立即值)來提供。
在其他實施例中,來源緊縮資料112可以可選地被儲存在該處理器之緊縮資料暫存器114中之一者中。如進一步所展示的,在某些實施例中,該目的地儲存位置可以可選地係該處理器之緊縮資料暫存器114中之一者,儘管此係非必需的。在其他實施例中,其他儲存位置可視情況替代地被使用於這些運算元中之一或多者。該指令可具有用以指定緊縮資料暫存器、記憶體位置或用於此種運算元之其他儲存位置之來源及/或目的地運算元指定欄位。或者,這些儲存位置中之一或多者可視情況被隱含於該指令(例如,隱含於該指令之運算碼),而不是被顯式地指
定。再者,在某些實施例中,被使用於該來源緊縮資料之緊縮資料暫存器或其他儲存位置可視情況被隱含地重新使用為用於該結果緊縮資料之目的地儲存位置,且僅被指定一次。在一個態樣中,來源/目的地緊縮資料暫存器可隱含地或默示地被理解為使用於來源運算元與結果運算元兩者。
在各種實施例中,該來源緊縮資料之資料元素可以係8位元資料元素、16位元資料元素、32位元資料元素或64位元資料元素。該資料元素可以係整數、固定點或浮點。在某些實施例中,該資料元素可視情況係浮點資料元素,諸如例如32位元單精度浮點資料元素或64位元倍精度浮點資料元素,儘管本發明之範圍係未受限於此。該來源緊縮資料之資料元素係毗連資料元素,因為該資料元素係連續的及/或相接的,及/或在該毗連資料元素之間可能沒有任何額外的介於其間的資料元素或位元。例如,在每對毗連資料元素中之該較低有效資料元素之最有效位元可以比在每對毗連資料元素中之該較有效資料元素之最小有效位元少一個位元。
在某些實施例中,該指令亦可指示可用於劃分、分割或分隔該來源緊縮資料之資料元素之數量。例如,該指令可將資料元素之數量指示為兩個資料元素、三個資料元素、六個資料元素或一些其他數量之資料元素,以指示其中該來源緊縮資料欲被劃分、分割或分隔成相等大小之資料元素之非重疊段或部分之該點或點等。該指令可在不同
的實施例中以不同的方式指示資料元素之數量。在某些實施例中,該指令可具有立即值(例如,二、四、六或八位元立即值)或其他欄位以具有用以指定或以其他方式指示資料元素之該實際數量之值。在其他實施例中,該指令可具有立即值或其他欄位以具有用以指定或以其他方式指示多個資料元素結構之數量(例如,兩個元素結構或三個元素結構之數量)之值,以藉此間接地指示資料元素之實際數量。
再次參照圖1,該處理器包含解碼單元或解碼器104。該解碼單元可接收及解碼該劃分為巷道指令。該解碼單元可輸出一或多個相對地較低階之指令或控制信號(例如,一或多個微指令、微操作、微碼登錄點、解碼指令或控制信號等等),其反映、表示及/或係從該相對地較高階之劃分為巷道指令所導出。在某些實施例中,該解碼單元可包含:一或多個輸入結構(例如,埠、互連、介面),其用以接收該劃分為巷道指令;與其耦接之指令識別及解碼邏輯,其用以識別及解碼該劃分為巷道指令;以及與其耦接之一或多個輸出結構(例如,埠、互連、介面),其用以輸出該(等)低階指令或該(等)控制信號。可使用各種不同的機制來實施該解碼單元,其包含(但不限於)微碼唯讀記憶體(ROM)、查找表、硬體實施方案、可程式邏輯陣列(PLA)及適合用以實施解碼單元之其他機制。在某些實施例中,該解碼單元可被包括在該處理器之晶粒上。
在某些實施例中,替代將該劃分為巷道指令直接地提供給該解碼單元,可視情況使用指令仿真器、轉譯器、變形器、解譯器或其他指令轉換模組。各種類型之指令轉換模組可在軟體、硬體、韌體或其等之組合中來實施。在某些實施例中,該指令轉換模組可位於該處理器外部,諸如,例如,位於單獨的晶粒上及/或記憶體中(例如,作為靜態的、動態的或運行時間仿真模組)。藉由實例之方式,該指令轉換模組可接收該劃分為巷道指令,其可係屬於第一指令集的,且可將該劃分為巷道指令仿真、轉譯、變形、解譯或以其他方式轉換成一或多個對應的中間指令或控制信號,其可係屬於第二不同指令集的。該第二指令集之一或多個中間指令或控制信號可被提供給解碼單元(例如,解碼單元104),該解碼單元可將其等解碼成可由該處理器之原有硬體(例如,一或多個執行單元)來執行的一或多個低階指令或控制信號。
處理器100亦包含一組緊縮資料暫存器114。該緊縮資料暫存器之各者可表示可操作以儲存緊縮資料、向量資料或SIMD資料之晶粒上儲存位置。該緊縮資料暫存器可表示對於軟體及/或編程器係可見的架構上可見或架構暫存器,及/或係由該處理器之該指令集之指令所指示之用以識別運算元之該暫存器。這些架構暫存器與在給定之微架構中的其他非架構暫存器(例如,臨時暫存器、重排序緩衝區、止用暫存器等等)形成對比。該緊縮資料暫存器可以以不同的方式在不同的微架構中實施,且不被限制於
任何特定類型之設計。合適類型之暫存器之實例係包含(但不限於)專用實體暫存器、使用暫存器更名來動態地配置之實體暫存器及其等之組合。
再次參照圖1,執行單元106係與解碼單元104相耦接且與緊縮資料暫存器114相耦接。在某些實施例中,該執行單元可與該解碼單元一起位在晶粒上。在操作期間,若該來源緊縮資料係在記憶體中,則該執行單元可與該記憶體耦接以便接收該來源緊縮資料。該執行單元可透過其他中間組件(未圖示)而與這些組件耦接。該執行單元可接收表示及/或從該劃分為巷道指令所導出之該一或多個解碼或以其他方式轉換之指令或控制信號。該執行單元亦可接收來源緊縮資料112。該執行單元可回應於及/或作為該劃分為巷道指令之結果(例如,回應於從該指令所解碼之一或多個指令或控制信號)來操作以將結果緊縮資料118儲存在由該指令所指示之該目的地儲存位置(例如,目的地緊縮資料暫存器)中。
在某些實施例中,結果緊縮資料118及/或該目的地儲存位置可具有複數個巷道。在各種實施例中,該結果緊縮資料及/或該目的地儲存位置之該巷道可以係64位元巷道、128位元巷道、256位元巷道或512位元巷道,儘管本發明之範圍係未受限於此。在某些實施例中,該巷道可具有與該處理器之架構緊縮資料暫存器之大小相同的大小。在某些實施例中,該巷道可以係該處理器之最大架構緊縮資料暫存器之大小的一半或四分之一。在某些實施例
中,該巷道之各者可能足夠大以儲存複數個32位元資料元素,或可能足夠大以儲存複數個64位元資料元素。在某些實施例中,該劃分為巷道指令可以可選地具有一或多個位元或欄位以指示該巷道之大小。例如,單一位元可將巷道之大小指示為128位元或256位元,或可使用兩個位元來指示多達四個不同的巷道大小。或者,該巷道之大小可以可選地隱含於該指令(例如,隱含於運算碼)。
在某些實施例中,該結果緊縮資料及/或目的地儲存位置之該巷道之各者可儲存該來源緊縮資料之該指示數量(亦即,由該指令所指示之數量)之毗連資料元素之不同的非重疊集合。換言之,每個巷道可儲存該來源緊縮資料之不同的非重疊的相同大小的部分。毗連資料元素(之該指示數量)之這些不同的非重疊集合之各者(或該來源緊縮資料之不同的非重疊的相同大小的部分)可與其中儲存其等之各個巷道之最小有效末端對齊。在某些實施例中,儲存在該結果緊縮資料(或目的地儲存位置)之毗連巷道中之該毗連資料元素(之該指示數量)之該不同的非重疊集合(或該來源緊縮資料之不同的非重疊的相同大小的部分)可藉由該較低有效巷道之至少一個最有效資料元素位置而與彼此分離。例如,儲存在該結果緊縮資料之緊接最小有效巷道中之該來源緊縮資料之第二非重疊的相同大小的部分可藉由該最小有效巷道之至少一個最有效資料元素位置而與儲存在該結果緊縮資料之最小有效巷道中之該來源緊縮資料之第一非重疊的相同大小的部分分離,該最小
有效巷道未被使用以儲存該來源緊縮資料之這兩個非重疊的相同大小的部分中之任一者。相反地,零、現有值或某些其他值可被儲存在這些位置中。在某些實施例中,該結果緊縮資料可以係圖3至7所展示及描述的那些中的任一者,儘管本發明之範圍係非受限於此。
在該來源緊縮資料中,欲儲存至該結果緊縮資料之所有的該資料元素可以係毗連的或連續的。在該來源緊縮資料係位於記憶體中的情況下,回應於該指令,該執行單元及/或該處理器可操作以藉由執行單一載入操作而從該系統記憶體來載入該來源緊縮資料之該資料元素之各者(或至少那些被儲存至該結果緊縮資料的)。該執行單元,回應於該指令,可以將該來源緊縮資料之該資料元素分割或劃分成連續資料元素之該多個非重疊段或部分,且接著將這些不同段或部分中之各者分布或分配至不同的對應巷道。此對於各種不同的目的可能係有用的。例如,由於該來源緊縮資料之全部的不同資料元素段或部分若其等沿著巷道邊界被分割及對齊的話,則其可能更容易或更方便。
有利地,將來源緊縮資料劃分為巷道指令102可允許來源緊縮資料112被分割成兩個或更多個部分,且在單一指令之性能的範圍內使那些部分沿著各自巷道邊界來對齊。此外,在其中該來源緊縮資料最初儲存在記憶體(其係不需要的)中之某些實施例中,該指令可允許該部分之各者從記憶體來載入,其中單一載入操作(例如,使用單一載入埠一次)亦在執行相同的單一指令的範圍內。另一
種可能的方法係執行多個指令以模擬此操作。作為一個說明性之實例,可執行第一指令以將來自於記憶體之第一段或部分載入至第一緊縮資料暫存器中,且接著藉由將該載入資料傳布至第二緊縮資料暫存器之上巷道與下巷道兩者中,且藉由遮罩(例如,使用在遮罩暫存器中之遮罩)來遮蔽該第二緊縮資料暫存器之該下巷道並合併該第一與第二緊縮資料暫存器,可執行第二指令以從該記憶體載入第二段或部分。然而,這種替代方法的一個可能的缺點係使用兩個載入,而不是僅單一個載入。此可能傾向於不必要地耗用載入埠及其他資源及/或降低性能。此外,執行兩個指令,而不是僅僅單一個指令,其亦可能傾向於降低性能及/或增加功耗。另外,使用多個緊縮資料暫存器及遮罩暫存器,而不是僅僅單一個目的地緊縮資料暫存器。此種暫存器通常傾向於係有些資源稀少的,其可替代地被使用於其他目的。
在某些實施例中,其可能係隱含於該指令及/或對於該指令係固定的(例如,隱含於該指令之運算碼或對於該指令之該運算碼係固定的),以將該來源運算元分割成多個非重疊部分且將該不同的非重疊部分之各者與該各別巷道之該最小有效端對齊。藉由該處理器,可能隱含地或暗示地理解這一點,儘管除了透過運算碼及任何與運算碼相關之位元之外,其未顯式地未表達。例如,該處理器可在識別此種操作係固有的或隱含的該指令之運算碼之後來理解或確認。另一種可能的方法係使用靈活的指令,諸如具
有一組混洗或重排控制位元之混洗或重排指令,以根據該控制位元來控制來源資料元素之靈活的混洗或重排至在該目的地中之靈活的位置中。該混洗或重排指令可被使用以根據對應用於被混洗或重排之各個資料元素之該混洗或重排控制位元,而將來自於一或多個來源緊縮資料之資料元素混洗或重排至在結果緊縮資料中之不同的資料元素位置。例如,這些混洗或重排控制位元之集合可被提供在該指令之立即值中,或在通常儲存在暫存器中之另一個來源運算元中。然而,至少對於某些應用而言,使用此種靈活的混洗或重排指令之此種替代方法係存在潛在的缺點。一方面,其通常需要額外的時間及/或努力來產生混洗或重排控制位元之該集合。例如,編程器可能需要顯式地來產生它們,或編譯器可能需要透過在該編譯器上之額外工作負載來產生它們。此外,將該混洗或重排控制位元儲存在暫存器中可能會佔住該暫存器而防止其被使用於另一用途。再者,當該指令具有用以指定暫存器以儲存該混洗或重排控制位元之額外欄位時,或當該混洗或重排控制位元係由該指令之立即值所提供時,則可能會增加該指令之長度。此可能傾向於減少可在指令束中所獲取之指令之數量及/或增加解碼該指令之複雜性及/或用以解碼該指令所需要之時間,其可傾向於減少前端處理量。此外,此可能傾向於增加代碼大小。此外,在立即值的情況下,通常僅有一定數量之控制位元能夠適配在該立即值內,其可能限制可被混洗或重排之資料元素之數量。
該執行單元及/或該處理器可包含具體的或特定的邏輯(例如,電晶體、積體電路或可能與韌體(例如,儲存在非揮發性記憶體中之指令)及/或軟體結合之其他硬體),其可操作以執行該劃分為巷道指令及/或回應於該劃分為巷道指令及/或作為該劃分為巷道指令之結果來儲存該結果緊縮資料(例如,回應於從該劃分為巷道指令所解碼之一或多個指令或控制信號)。在某些實施例中,該執行單元可包含:一或多個輸入結構(例如,埠、互連、介面),其用以接收該來源緊縮資料;與其相耦接之邏輯,其用以將該來源緊縮資料分割成各具有資料元素之該指示數量之部分;及一或多個與其相耦接之輸出結構(例如,埠、互連、介面),其用以分布、分配或以其他方式輸出這些部分至該結果緊縮資料及/或目的地儲存位置之該對應的不同的巷道。
為了避免使該描述模糊,已經展示及描述相對地簡單的處理器100。然而,該處理器可視情況包含其他處理器組件。例如,各種不同的實施例可包含針對圖13、14A/B、15A/B、16中之任一者所展示及描述的該組件之各種不同的組合及組態。藉由實例之方式,考慮到圖14B,指令提取單元1438可提取該指令,解碼單元1440可解碼該指令,排程器單元1456可排程該相關聯之操作,止用單元1454可止用該指令等等。該處理器之所有的組件可被耦接在一起以允許它們如預期的來操作。
圖2係執行將來源緊縮資料劃分成巷道指令之實施例
之方法220之實施例之方塊流程圖。在各種實施例中,該方法可由處理器、指令處理裝置、數位邏輯裝置或積體電路來執行。在某些實施例中,方法220可藉由圖1之該處理器及/或在圖1之該處理器內來執行及/或藉由使用圖1之該指令來執行。在本文中所述之用於圖1之該處理器及/或該指令之該組件、特徵及特定可選之細節亦可選地應用於方法220,其可視情況藉由該處理器來執行及/或藉由使用該指令來執行。或者,方法220可藉由相似的或不同的處理器或裝置及/或在相似的或不同的處理器或裝置內來執行及/或藉由使用相似的或不同的指令來執行。再者,圖1之該處理器可執行與圖2之該方法相同、相似或不同的方法。
該方法包含在方塊221處接收該劃分為巷道指令。在各種態樣中,可在處理器或其之一部分(例如,指令提取單元、解碼單元、匯流排介面單元等等)處接收該指令。在各種態樣中,可從處理器外及/或晶粒外來源(例如,從記憶體、互連等等)或從處理器上及/或晶粒上來源(例如,從指令快取、指令提取單元等等)來接收該指令。該指令可指定或以其他方式指示包含複數個毗連資料元素之來源緊縮資料。該指令亦可指定或以其他方式指示資料元素之數量。該指令亦可指定或以其他方式指示目的地緊縮資料暫存器或其他儲存位置。
在方塊222處,回應於及/或作為該指令之結果,結果緊縮資料可被儲存在該指示之目的地儲存位置中。在某
些實施例中,該結果緊縮資料及/或該目的地儲存位置可具有複數個巷道。在某些實施例中,該結果緊縮資料及/或目的地儲存位置之該巷道之各者可儲存該來源緊縮資料之該指示數量之毗連資料元素之不同的非重疊集合。換言之,每個巷道可儲存該來源緊縮資料之不同的非重疊的相同大小的部分。資料元素之這些不同的非重疊集合之各者或該來源緊縮資料之不同的非重疊的相同大小的部分可與其中儲存其等之各個巷道之最小有效末端對齊。在某些實施例中,儲存在該結果緊縮資料之毗連巷道中之該指示數量之該毗連資料元素之不同的非重疊集合可藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。例如,儲存在該結果緊縮資料之緊接最小有效巷道中之該來源緊縮資料之第二非重疊的相同大小的部分可藉由該最小有效巷道之至少一個最有效資料元素位置而與儲存在該結果緊縮資料之最小有效巷道中之該來源緊縮資料之第一非重疊的相同大小的部分分離,該最小有效巷道未被使用以儲存該來源緊縮資料之這兩個非重疊的相同大小的部分中之任一者。相反地,零、現有值或某些其他值可被儲存在這些位置中。
該繪示方法包含架構操作(例如,那些從軟體角度可見者)。在其他實施例中,該方法可視情況包含一或多個微架構操作。藉由實例之方式,該指令可被獲取、解碼、排程亂序,來源緊縮資料可被存取,執行單元可執行微架構操作以實施該指令等等。在某些實施例中,用以實施該
指令之該操作可包含產生記憶體位址資訊且使用所產生之記憶體位址資訊而從系統記憶體來存取該來源緊縮資料。在某些實施例中,用以實施該指令之該操作亦可包含歸零在每個巷道中的至少一個最有效資料元素位置,其分離所儲存之來自於該來源緊縮資料之該非重疊的部分。
圖3係繪示可回應於將來源緊縮資料劃分為巷道指令之實施例而執行之將來源緊縮資料劃分為巷道之操作330之實施例之方塊圖。該指令可指定或以其他方式指示具有複數個毗連資料元素之來源緊縮資料312(例如,作為來源運算元)。在某些實施例中,該來源緊縮資料可被儲存在記憶體中,而在其他實施例中該來源緊縮資料可被儲存在緊縮資料暫存器或其他儲存位置中。該指令亦可指定或以其他方式指示欲分割該來源緊縮資料之資料元素之數量。該指令亦可指定或以其他方式指示其中欲儲存結果緊縮資料318之目的地儲存位置。
如所展示的,該來源緊縮資料可包含該指示數量之毗連資料元素之至少兩個,或在某些情況下可包含多於兩個(例如,至少四個)的不同的非重疊集合。在該特定繪示實施例中,該來源緊縮資料包含該指示數量之毗連資料元素之第一集合332,及該指示數量之毗連資料元素之毗連第二集合334。每個集合可包含由該指令所指示之資料元素之該數量。例如,若由該指令所指示之資料元素之該數量係6,則該集合中之各者可包含六個資料元素。該來源緊縮資料之該資料元素係毗連資料元素,因為該資料元素
係連續的及/或相接的,及/或因為在該毗連資料元素之間可能沒有任何額外的介於其間的資料元素或位元。此外,在該來源緊縮資料中,該指示數量之毗連資料元素之該第一集合332與該指示數量之毗連資料元素之該第二集合334係毗連的、連續的或相接的。例如,該指示數量之毗連資料元素之該第一集合332之該最有效資料元素之最有效位元可比該指示數量之毗連資料元素之該第二集合334之該最小有效資料元素之最小有效位元少一個位元。在該繪示中,該來源緊縮資料之最小有效位元(例如,標示為位元0)係最右位元,而該來源緊縮資料之最有效位元係最左位元。該來源緊縮資料亦可以可選地包含一或多個其他資料元素336,儘管此係非必需的。
通常,在來源緊縮資料312中之資料元素之數量可等於在該來源緊縮資料之位元中之該大小除以在單一資料元素之位元中之該大小。在各種實施例中,該來源緊縮資料之該寬度可以係128位元、256位元、512位元或1024位元,儘管本發明之範圍係未受限於此。在各種實施例中,各個資料元素之大小可以係8位元、16位元、32位元或64位元,儘管本發明之範圍係未受限於此。該來源緊縮資料及該資料元素之其他大小或寬度亦係合適的。在各種實施例中,在該來源緊縮資料中可存在至少四個、至少八個、至少十六個、至少三十二個或多於三十二個資料元素(例如,至少六十四個)。該資料元素可以係整數、固定點或浮點。在某些實施例中,該資料元素可視情況係浮點
資料元素,諸如例如32位元單精度浮點資料元素或64位元倍精度浮點資料元素,儘管本發明之範圍係係未受限於此。
在該將來源緊縮資料劃分為巷道之操作期間,來源緊縮資料312可被提供給執行單元306。該執行單元可回應於及/或作為該指令及/或操作之結果而產生且儲存結果緊縮資料318。在某些實施例中,該結果緊縮資料可被儲存在由該指令所指定或以其他方式所指示之目的地緊縮資料暫存器或其他目的地儲存位置中。在某些實施例中,該結果緊縮資料可具有至少兩個,或在某些情況下可具有多於兩個(例如,至少四個)的不同的非重疊巷道。在該特定繪示實施例中,該結果緊縮資料包含第一最小有效巷道346及毗連的第二較有效巷道348。在其他實施例中,該結果緊縮資料可以可選地包含額外巷道(例如,與該來源緊縮資料之該指示數量之毗連資料元素之不同的非重疊集合之數量相同數量的巷道)。在某些實施例中,該結果緊縮資料之該巷道之各者可被使用以儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量之毗連資料元素之不同的非重疊集合。例如,如在該特定繪示實施例中所展示的,在該結果緊縮資料中,該指示數量之毗連資料元素之該第一集合338可儲存在該第一最小有效巷道346中,而該指示數量之毗連資料元素342之該第二集合可儲存在該第二較有效巷道348中。
在某些實施例中,在該結果緊縮資料中,儲存在該結
果緊縮資料之該毗連巷道中之該指示數量之該毗連資料元素之不同的非重疊集合可藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。例如,如在該特定繪示實施例中所展示的,該第一最小有效巷道之至少一個最有效(例如,如圖示最左側)資料元素340可將該指示數量之毗連資料元素之該第一集合338之該最有效資料元素與該指示數量之毗連資料元素之該第二集合342之該最小有效資料元素分離。同樣地,該第二較有效巷道之至少一個最有效(例如,如圖示最左側)資料元素344將分離該指示數量之毗連資料元素之可選的額外集合(若有一個的話,其未圖示在該繪示實例中)。在該來源緊縮資料中,該指示數量之毗連資料元素332之該第一集合與該指示數量之毗連資料元素334之該第二集合係毗連的、連續的或相接的,而在該結果緊縮資料中,該指示數量之毗連資料元素之該第一及第二集合已經被分割,使得其等不再與彼此係毗連的、連續的或相接的,且使得各個資料元素與其中儲存其等之該對應巷道之該最小有效位元或末端對齊。該第一集合338係與該結果之位元0對齊,而該第二集合342係與第二巷道348之該最小有效位元(由元件符號349所展示的)對齊。在至少某些實施例中,由於這些集合不完全地填充該對應巷道,因此在各個巷道中之一或多個額外資料元素將該指示數量之毗連資料元素之這些不同的集合分開。
在某些實施例中,當該來源緊縮資料係位於記憶體中
時,該指令可僅不載入其他資料元素336。在其他實施例中,該指令可載入這些資料元素,但是基於該指示數量之資料元素可隱含地或固有地不使用這些其他資料元素336。又在其他實施例中,該指令可指示可包含複數個遮罩位元或其他遮罩元素之遮罩或遮罩運算元。回應於該指令,該執行單元可僅從記憶體載入對應於該遮罩之未遮蔽的遮罩元素之該來源緊縮資料之資料元素。例如,對應於其他資料元素336之該遮罩元素之各者可被遮蔽(例如,被清除為零),而對應於第一及第二集合332、334之該遮罩元素之各者可以係未遮蔽的(例如,設定為一)。
圖4係繪示可回應於將來源緊縮資料劃分為巷道指令之第一特定實例實施例而執行之將來源緊縮資料劃分為巷道之操作450之第一特定實例實施例之方塊圖。該指令可指定或以其他方式指示將具有複數個毗連資料元素A1至A16之來源緊縮資料412。該來源緊縮資料及該資料元素可具有如之前所描述之各種大小或寬度。此外,如之前所描述的,該資料元素可具有浮點、整數或固定點格式。在某些實施例中,該指令亦可指定或以其他方式指示欲分割該來源緊縮資料之資料元素之數量。在此特定實例中,由該指令所指示之資料元素之該數量係六個資料元素,儘管此僅係說明性的。該指令亦可指定或以其他方式指示目的地儲存位置。
在此特定實例中,由於由該指令所指示之資料元素之該數量係六個資料元素,因此該來源緊縮資料之該資料元
素A1至A6係表示六個毗連資料元素之第一非重疊的集合,而該資料元素A7至A12係表示六個毗連資料元素之第二非重疊的集合。在該來源緊縮資料中,該資料元素A1至A6與該資料元素A7至A12係毗連的、連續的或相接的(例如,該資料元素A6之該最有效位元與該資料元素A7之該最小有效位元係毗連的、連續的或相接的)。
在該將來源緊縮資料劃分為巷道之操作期間,來源緊縮資料412可被提供給執行單元406。該執行單元可回應於及/或作為該指令及/或操作之結果而產生且儲存結果緊縮資料418。在某些實施例中,該結果緊縮資料可被儲存在由該指令所指示之目的地緊縮資料暫存器或其他目的地儲存位置中。該結果緊縮資料包含第一最小有效巷道446及毗連的第二較有效巷道448。在其他實施例中,該結果緊縮資料可以可選地包含額外巷道。在此特定實例中,該資料元素A1至A6之該第一集合被儲存在第一巷道446中,而該資料元素A7至A12之該第二集合被儲存在該第二毗連巷道中。
在此特定實例中,在該結果緊縮資料中,儲存在該第一巷道中之該資料元素A1至A6之該第一集合係藉由該第一最小有效巷道之該兩個最有效(如圖示最左側)資料元素位置而與儲存在該第二巷道中之該資料元素A7至A12之該第二集合分離。而在該來源緊縮資料中,該資料元素A1至A6與該資料元素A7至A12係毗連的、連續的或相接的,在此特定實例中,在該結果緊縮資料中,該元
素A1至A6與A7至A12係藉由位於它們之間的兩個中間資料元素位置而彼此分割或分離。此外,該資料元素A1至A6係與該第一巷道之該最小有效位元或末端對齊,而該資料元素A7至A12係與該第二巷道之該最小有效位元或末端對齊。
如在本文中所揭示的,該劃分為巷道之指令及/或操作的一個用途(但肯定非唯一的用途)係處理兩個資料元素、三個資料元素、四個資料元素或其他多個資料元素結構之向量或陣列。複數係包含實數或分量與虛數或分量的兩個資料元素結構的一個實例。該實數及虛數一起構成該複數。三個資料元素結構的一個實例係用於像素之紅色、綠色及藍色分量結構。各種其他類型的多個資料元素結構在本領域中亦係習知的。
此種多個資料元素結構通常以各種不同的演算法來一起移動及/或處理。再者,此種多個資料元素結構之陣列通常以演算法來一起移動及/或處理。例如,當以加法、乘法或以其他方式來處理複數之矩陣時,此通常係這種情況。藉由實例之方式,演算法可對具有相對地較小數量的複數(例如,通常範圍從2到6)的陣列來進行運算,該複數係潛在的大得多的複數之矩陣的一部分。作為一特定繪示實例,某些演算法可處理三個複數的陣列,其中各個複數包含32位元單精度浮點實數分量及32位元單精度浮點虛數分量。此種陣列可表示較大的複數之矩陣的不同毗連列的部分。其他演算法可處理不同大小的複數之陣列。
處理複數之陣列及/或其他多個資料元素結構的某些演算法可能會期望該陣列之各者沿著巷道邊界來對齊。作為一特定繪示實例,處理具有32位元實數及虛數分量之三個複數的陣列的某些演算法可能會期望該陣列之各者沿著256位元巷道邊界來對齊而不是跨越不同的巷道或從巷道邊界來偏移。在其他情況下,即使該演算法不期望或需要此種對齊,就所給定的演算法或應用程序而言,其可以係方便的及/或有效的,其使得該陣列基於其中可由該整體演算法來處理、移動、管理該陣列之等等方式而沿著巷道邊界來對齊。
圖5係繪示將來源緊縮資料劃分為巷道之操作552之第二更加特定實例實施例之方塊圖,該將來源緊縮資料劃分為巷道之操作552係可針對回應於將來源緊縮資料劃分為巷道指令之第二更加特定實例實施例之三個複數之第一及第二陣列來執行。該指令可指定或以其他方式指示來源緊縮資料512。在某些實施例中,該來源緊縮資料可位於記憶體中,而在其他實施例中,該來源緊縮資料可位於緊縮資料暫存器中。在此特定實例中,該來源緊縮資料具有八對的複數。每個複數包含實數(r)及虛數(i)。例如,該最小有效(如圖示最右側)複數包含第一實數(r1)及第一虛數(i1),下一個最小有效複數包含第二實數(r2)及第二虛數(i2),等等。通常,複數通常被儲存在記憶體中,其中該實數被儲存在相對地較低有效位元位置中,且該對應的虛數被儲存在毗連的相對地較有效
位元位置中,儘管此係非必需的。該八個實數r1至r8與八個虛數i1至i8分別地形成八個複數。該複數之各者可廣泛地表示兩個資料元素結構。在某些實施例中,該來源緊縮資料可包含各具有三個複數之兩個陣列。藉由實例之方式,儘管本發明之範圍係未受限於此,但是這些陣列中之各者可表示較大的複數之矩陣之不同毗連列的一部分。在此特定實例中,該實數及虛數或組件各自由32位元單精度浮點資料元素來表示,儘管在其他實施例中,可以可選地使用其他資料元素大小及格式。在此特定實例中,該來源緊縮資料係512位元來源緊縮資料,儘管在其他實施例中可以可選地使用其他大小。
如先前所提到的,在某些實施例,該指令亦可指定或以其他方式指示欲分割該來源緊縮資料之資料元素之數量(例如,具有立即值之值或在指定或隱含暫存器中之值)。在此特定實例中,由該指令所指示之資料元素之該數量係六個資料元素,儘管此僅係一個說明性的實例。對於結構,此數量可以不同的方式來指示。作為一個實例,該指令可指示六個值來指示六個資料元素。作為另一個實例,該指令可指示三個兩個資料元素結構的值來指示六個資料元素。在此特定實例中,由於由該指令所指示之資料元素的數量係六個資料元素,所以該最小有效六個實數及虛數(亦即,r1、i1、r2、i2、r3及i3)資料表示三個複數之第一陣列,而該毗連的較有效六個實數及虛數(亦即,r4、i4、r5、i5、r6及i6)表示三個複數之第二陣
列。在該來源緊縮資料中,複數之該毗連的第一及第二陣列(或兩個資料元素結構)彼此係毗連的、連續的或相接的。
在該操作期間,來源緊縮資料512可被提供給執行單元506。該執行單元可回應於及/或作為該指令及/或操作之結果而產生且儲存結果緊縮資料518。在某些實施例中,該結果緊縮資料可被儲存在由該指令所指示之目的地緊縮資料暫存器或其他目的地儲存位置中。該結果緊縮資料包含第一最小有效巷道546及毗連的第二較有效巷道548。在其他實施例中,該結果緊縮資料可以可選地包含額外巷道。如所展示的,在此特定實例中,該巷道之各者係256位元巷道,儘管本發明之範圍係未受限於此。在此特定實例中,三個複數之第一陣列554(亦即,r1、i1、r2、i2、r3及i3)儲存在該第一巷道中,而三個複數之第二陣列556(亦即,r4、i4、r5、i5、r6及i6)儲存在該第二毗連巷道中。
在此特定實例中,在該結果緊縮資料中,在該第一巷道中之三個複數之第一陣列554係藉由該第一巷道之兩個最有效(如圖示最左側)32位元資料元素位置而與在該第二巷道中之三個複數之第二陣列556分離。而在該來源緊縮資料中,複數之該第一及第二陣列係毗連的、連續的或相接的,在此特定實例中,在該結果緊縮資料中,複數之該第一及第二陣列係藉由位於它們之間的兩個中間32位元資料元素位置而彼此分割或分離。在某些實施例中,
該分割可沿著整個複數或其他多個資料元素結構邊界,使得不分割複數或其他多個資料元素結構。此外,三個複數之該第一及第二陣列中之各者係與其中其被儲存之該各自巷道之該最小有效位元或末端對齊。
應理解,此僅係一個說明性的實例,且亦考慮了許多其他的實例。作為一個實例,該方法可延伸至1024位元運算元,其中該結果緊縮資料具有四個256位元巷道。作為另一個實例,類似的方法可與256位元、512位元或1024位元結果緊縮資料之16位元資料元素及128位元巷道一起使用。或者,在16位元資料元素的情況下,每個256位元巷道可被使用以儲存十二個資料元素(例如,六個兩個資料元素結構之陣列)。作為另一個實例,類似的方法可與128位元、256位元或512位元結果緊縮資料之8位元資料元素及64位元巷道一起使用。又作為進一步之實例,三個兩個資料元素結構之該陣列可各自被兩個三個資料元素結構之陣列所取代。其他的變化對於那些熟習本領域之技術者亦將係顯而易見的,且具有本發明之益處。此外,應理解,該指令/操作不被限制於在多個資料元素結構上操作,而是在實施例中可表示可被使用以對不是多個資料元素結構之部分之資料元素來進行操作之通用指令/操作。
圖6係繪示將來源緊縮資料劃分為巷道之操作660之第三特定實例實施例之方塊圖,該將來源緊縮資料劃分為巷道之操作660係可回應於將來源緊縮資料劃分為巷道指
令之第三特定實例實施例而執行。該指令可指定或以其他方式指示將具有複數個毗連資料元素A1至A16之來源緊縮資料612。該來源緊縮資料及該資料元素可具有如之前所描述之各種大小或寬度。此外,如之前所描述的,該資料元素可具有浮點、整數或固定點格式。在某些實施例中,該指令亦可指定或以其他方式指示欲分割該來源緊縮資料之資料元素之數量。在此特定實例中,由該指令所指示之資料元素之該數量係兩個資料元素,儘管此僅係說明性的。該指令亦可指定或以其他方式指示目的地儲存位置。
在此特定實例中,由於由該指令所指示之資料元素之該數量係兩個資料元素,因此該來源緊縮資料之該資料元素A1至A2係表示兩個毗連資料元素之第一非重疊的集合,該資料元素A3至A4係表示兩個毗連資料元素之第二非重疊的集合,該來源緊縮資料之該資料元素A5至A6係表示兩個毗連資料元素之第三非重疊的集合,且該資料元素A7至A8係表示兩個毗連資料元素之第四非重疊的集合。在該來源緊縮資料中,該資料元素A1至A2與該資料元素A3至A4係毗連的、連續的或相接的,該資料元素A3至A4與該資料元素A5至A6係毗連的、連續的或相接的,且該資料元素A5至A6與該資料元素A7至A8係毗連的、連續的或相接的。
在該操作期間,來源緊縮資料612可被提供給執行單元606。該執行單元可回應於及/或作為該指令及/或操作
之結果而產生且儲存結果緊縮資料618。在某些實施例中,該結果緊縮資料可被儲存在由該指令所指示之目的地緊縮資料暫存器或其他目的地儲存位置中。該結果緊縮資料包含第一最小有效巷道662、第二較有效巷道663、第三仍較有效巷道664及第四最有效巷道665。在其他實施例中,該結果緊縮資料可以可選地包含較少或更多的巷道。在此特定實例中,該資料元素A1至A2之該第一集合被儲存在第一巷道662中,該資料元素A3至A4之該第二集合被儲存在第二巷道663中,該資料元素A5至A6之該第三集合被儲存在第三巷道664中,且該資料元素A7至A8之該第四集合被儲存在第四巷道665中。
在此特定實例中,在該結果緊縮資料中,該資料元素A1至A2之該第一集合係藉由該第一最小有效巷道之該兩個最有效(如圖示最左側)資料元素位置而與該資料元素A3至A4之該第二集合分離。同樣地,在此特定實例中,在該結果緊縮資料中,該資料元素A5至A6之該第三集合係藉由該第二巷道之該兩個最有效(如圖示最左側)資料元素位置而與該資料元素A3至A4之該第二集合分離。同樣地,在此特定實例中,在該結果緊縮資料中,該資料元素A7至A8之該第四集合係藉由該第三巷道之該兩個最有效(如圖示最左側)資料元素位置而與該資料元素A5至A6之該第三集合分離。此外,該資料元素A1至A2之該第一集合係與該對應之第一巷道之該最小有效位元或末端對齊,該資料元素A3至A4之該第二集合係與
該對應之第二巷道之該最小有效位元或末端對齊,該資料元素A5至A6之該第三集合係與該對應之第三巷道之該最小有效位元或末端對齊,且該資料元素A7至A8之該第四集合係與該對應之第四巷道之該最小有效位元或末端對齊。
圖7係繪示將來源緊縮資料劃分為巷道之操作770之第四更加特定實例實施例之方塊圖,該將來源緊縮資料劃分為巷道之操作770係可針對回應於將來源緊縮資料劃分為巷道指令之第四更加特定實例實施例之複數來執行。該指令可指定或以其他方式指示來源緊縮資料712。在此特定實例中,該來源緊縮資料具有八個實數r1至r8及八個虛數i1至i8,其成對形成八個複數。在此特定實例中,該實數及虛數或組件各自由32位元單精度浮點資料元素來表示,儘管在其他實施例中,可以可選地使用其他資料元素大小及格式。在此特定實例中,該來源緊縮資料係512位元來源緊縮資料,儘管在其他實施例中可以可選地使用其他大小。
在某些實施例中,該指令可指定或以其他方式指示欲分割該來源緊縮資料之資料元素之數量。在此特定實例中,由該指令所指示之資料元素之該數量係兩個資料元素,儘管此僅係一個說明性的實例。作為一個實例,該指令可指示兩個的值來指示該兩個資料元素,或作為另一個實例,該指令可指示一個的值來指示一個兩個資料元素結構以指示該兩個資料元素。
在該操作期間,來源緊縮資料712可被提供給執行單元706。該執行單元可回應於及/或作為該指令及/或操作之結果而產生且儲存結果緊縮資料718。在某些實施例中,該結果緊縮資料可被儲存在由該指令所指示之目的地緊縮資料暫存器或其他目的地儲存位置中。該結果緊縮資料包含第一最小有效巷道762、第二較有效巷道763、第三仍較有效巷道764及第四最有效巷道765。在其他實施例中,該結果緊縮資料可以可選地包含較少或更多的巷道。在此特定實例中,該巷道之各者係128位元巷道,儘管本發明之範圍係未受限於此。在此特定實例中,第一最小有效複數771(亦即,r1及i1)被儲存在該第一巷道中,第二最小有效複數772(亦即,r2及i2)被儲存在該第二巷道中,第三最小有效複數773(亦即,r3及i3)被儲存在該第三巷道中,且第四最小有效複數774(亦即,r4及i4)被儲存在該第四巷道中。
在此特定實例中,在該結果緊縮資料中,第一複數771係藉由該第一巷道之兩個最有效32位元資料元素位置而與第二複數772分離。同樣地,在此特定實例中,在該結果緊縮資料中,第三複數773係藉由該第二巷道之兩個最有效32位元資料元素位置而與第二複數773分離。同樣地,在此特定實例中,在該結果緊縮資料中,第四複數774係藉由該第三巷道之兩個最有效32位元資料元素位置而與第三複數773分離。此外,在該結果緊縮資料中,該第一複數係與該第一巷道之該最小有效位元或末端
對齊,該第二複數係與該第二巷道之該最小有效位元或末端對齊,該第三複數係與該第三巷道之該最小有效位元或末端對齊,且該第四複數係與該第四巷道之該最小有效位元或末端對齊。
為了避免模糊該描述,已主要地描述了圖3至7之各別操作之不同的及/或額外的特性,而不重複所有可選的相似的或共同的特性及細節。然而,應理解,除非與描述相反或以其他方式清楚地表示,針對一種操作所描述的特性及細節亦可以可選地適用於其他操作。
合適的緊縮資料格式之實例包含(但不限於)64位元寬、128位元寬、256位元寬及512位元寬之緊縮資料格式。64位元緊縮位元組格式可包含八個8位元位元組資料元素。64位元緊縮單字格式可包含四個16位元單字資料元素。64位元緊縮雙字格式可包含兩個32位元雙字資料元素。128位元緊縮位元組格式可包含十六個8位元位元組資料元素。128位元緊縮單字格式可包含八個16位元單字資料元素。128位元緊縮雙字格式可包含四個32位元雙字資料元素。128位元緊縮四倍字格式846可包含兩個64位元四字資料元素。256位元緊縮位元組格式可包含三十二個8位元位元組資料元素。256位元緊縮單字格式可包含十六個16位元單字資料元素。256位元緊縮雙字格式可包含八個32位元雙字資料元素。256位元緊縮四倍字格式可包含四個64位元四字資料元素。512位元緊縮位元組格式可包含六十四個8位元位元組資料元
素。512位元緊縮單字格式可包含三十二個16位元單字資料元素。512位元緊縮雙字格式可包含十六個32位元雙字資料元素。512位元緊縮四倍字格式可包含八個64位元四字資料元素。其他緊縮資料格式可包含緊縮32位元單精度浮點資料元素或緊縮64位元雙精度浮點資料元素。再者,更寬的緊縮資料寬度(例如,1024位元寬之緊縮資料)及/或較窄的緊縮資料寬度(例如,32位元寬之緊縮資料)亦係合適的。通常,在緊縮資料運算元中之緊縮資料元素之該數量係等於在該緊縮資料運算元之位元中之該大小除以在該緊縮資料元素之各者之位元中之該大小。
圖8係緊縮資料暫存器814之合適集合之實例實施例之方塊圖。該緊縮資料暫存器包含標記為ZMM0至ZMM31之三十二個512位元緊縮資料暫存器。在所繪示的實施例中,該較低的16個暫存器之該低階256位元,即ZMM0至ZMM15,係被別名化或疊覆在標記為YMM0至YMM15之各別的256位元緊縮資料暫存器上,儘管此係非必需的。同樣地,在該繪示之實施例中,該暫存器YMM0至YMM15之該低階128位元被別名化或疊覆在標記為XMM0至XMM15之各別的128位元緊縮資料暫存器上,儘管此亦係非必需的。該512位元暫存器ZMM0至ZMM31係可操作以保存512位元緊縮資料、256位元緊縮資料或128位元緊縮資料。該256位元暫存器YMM0至YMM15係可操作以保存256位元緊縮資料或128位元緊
縮資料。該128位元暫存器XMM0至XMM15係可操作以保存128位元緊縮資料。在某些實施例中,該暫存器之各者可被使用以儲存緊縮浮點資料或緊縮整數資料。支援不同的資料元素大小,其包含至少8位元位元組資料、16位元單字資料、32位元雙字、32位元單精度浮點資料、64位元四字及64位元雙精度浮點資料。在替代性實施例中,可使用不同數量的暫存器及/或不同大小的暫存器。又在其他實施例中,暫存器可或可不使用在較小的暫存器上別名化之較大暫存器及/或可或可不被使用以儲存浮點資料。
圖9係緊縮資料操作遮罩暫存器990之合適集合之實例實施例之方塊圖。在所繪示的實施例中,該集合包含標記為k0至k7的八個暫存器。替代實施例可包含少於八個暫存器(例如,兩個、四個、六個等等),或多於八個暫存器(例如,十六個、三十二個等等)。這些暫存器中之各者可被使用以儲存緊縮資料操作遮罩。在所繪示的實施例中,該暫存器之各者係64位元。在替代性實施例中,該暫存器之寬度可寬於64位元(例如,80位元、128位元等等),或窄於64位元(例如,8位元、16位元、32位元等等)。該暫存器可以不同的方式來實施,且不被限制於任何特定類型的電路或設計。合適的暫存器之實例係包含(但不限於)專用實體暫存器、使用暫存器更名之動態配置之實體暫存器及其之組合。
在某些實施例中,緊縮資料操作遮罩暫存器990可以
係獨立的、專用的架構暫存器之集合。在某些實施例中,該指令可以與那些被使用以編碼或指定其他類型的暫存器(例如,緊縮資料暫存器)之指令格式所不同的位元或一或多個不同的欄位來編碼或指定該緊縮資料操作遮罩暫存器。藉由實例之方式,指令可使用三個位元(例如,3位元欄位)來編碼或指定該八個緊縮資料操作遮罩暫存器k0至k7中之任一者。在替代性實施例中,當存在更少或更多的緊縮資料操作遮罩暫存器時,可分別地使用更少或更多的位元。在一個特定的實施方案中,僅緊縮資料操作遮罩暫存器k1至k7(但不是k0)可被定址作為預測運算元以預測遮罩緊縮資料操作。該暫存器k0可被使用作為常規的來源或目的地,但可不被編碼為預測運算元(例如,若指定k0,則其具有「無遮罩」編碼),儘管此係非必需的。
指令集係包含一或多個指令格式。給定的指令格式可定義各種欄位(位元的數量、位元的位置),除了別的,其用以指定所欲執行的操作(運算碼)及該操作所欲執行之該(等)運算元。某些指令格式經由指令範本的定義(或子格式)而被進一步拆解。例如,給定指令格式的指令範本可被定義成具有指令格式之欄位的不同子集(典型上,所包括的欄位按相同之順序,但由於所包括的欄位較少因而至少某些具有不同的位元位置),及/或定義成具有不同地解譯之給定欄位。因此,ISA的每個指令係使用一給定的指令格式來表示(且若有定義,則係在該指令格
式的其中一個給定指令範本中),且包含用於指定操作及運算元的欄位。例如,例示性的ADD指令具有特定的運算碼與指令格式,該指令格式包含用以指定該運算碼的運算碼欄位及用以選擇運算元(來源1/目的地與來源2)的運算元欄位;且出現在指令流中的此ADD指令,在用以選擇特定運算元的運算元欄位中將具有特定的內容。被稱為進階向量延伸(AVX)(AVX1與AVX2)且使用向量延伸(VEX)編碼方案之一組SIMD延伸已被釋出及/或已出版(例如,見Intel® 64及IA-32架構軟體開發人員之手冊,2011年10月;及見Intel®進階向量延伸編程參考,2011年6月)。
在本文中所描述之該(等)指令的實施例可以不同的格式來實施。此外,以下詳述例示性的系統、架構及管線。指令的實施例可在此種系統、架構及管線上執行,但不限於這些細節。
VEX編碼允許指令具有多於兩個的運算元,且允許SIMD向量暫存器係長於128位元。使用VEX前置提供三個運算元(或更多)語法。例如,先前的兩個運算元指令執行諸如A=A+B的操作,其重寫來源運算元。使用VEX前置使運算元能夠執行非破壞性操作,諸如A=B+
C。
圖10A係繪示包含VEX前置1002、真實運算碼欄位1030、Mod R/M位元組1040、SIB位元組1050、位移欄位1062及IMM81072之例示性AVX指令格式。圖10B係繪示來自於圖10A的哪些欄位構成完整運算碼欄位1074及基本運算欄位1042。圖10C係繪示來自於圖10A的哪些欄位構成暫存器索引欄位1044。
VEX前置(位元組0至2)1002係以三位元組的形式來編碼。該第一位元組係該格式欄位1040(VEX位元組0,位元〔7:0〕),其包含顯式的C4位元組值(被使用於區分該C4指令格式之該唯一值)。該第二-第三位元組(VEX位元組1至2)包含提供特定能力之若干的位元欄位。詳言之,REX欄位1005(VEX位元組1,位元〔7-5〕)係由VEX.R位元欄位(VEX位元組1,位元〔7〕-R)、VEX.X位元欄位(VEX位元組1,位元〔6〕-X)及VEX.B位元欄位(VEX位元組1,位元〔5〕-B)所組成。如在本領域中習知的,該指令之其他欄位編碼該暫存器索引之該較低的三個位元(rrr、xxx及bbb),使得Rrrr、Xxxx及Bbbb可藉由添加VEX.R、VEX.X及VEX.B來形成。運算碼映射欄位1015(VEX位元組1,位元〔4:0〕-mmmmm)包含用以編碼隱含的前導運算碼位元組之內容。W欄位1064(VEX位元組2,位元〔7〕-W)係由該符號VEX.W來表示,且取決於該指令來提供不同的功能。VEX.vvvv 1020(VEX位元組2,位元〔6:3〕-
vvvv)之該作用可包含以下各項:1)VEX.vvvv編碼以反轉(1之補數(1s complement))形式所指定的該第一來源暫存器運算元,且對於具有2個或更多個來源運算元之指令係有效的;2)VEX.vvvv編碼該目的地暫存器運算元,對於某些向量移位係以1之補數形式來指定;或3)VEX.vvvv不編碼任何運算元,該欄位被保留且應該含有1011b。若VEX.L 1068大小欄位(VEX位元組2,位元〔2〕-L)=0,則其指示128位元向量;若VEX.L=1,則其指示256位元向量。前置編碼欄位1025(VEX位元組2,位元〔1:0〕-pp)係為該基本運算欄位提供額外之位元。
真實運算碼欄位1030(位元組3)亦被習知為該運算碼位元組。該運算碼的一部分係被指定在此欄位中。
MOD R/M欄位1040(位元組4)係包含MOD欄位1042(位元〔7-6〕)、Reg欄位1044(位元〔5-3〕)及R/M欄位1046(位元〔2-0〕)。Reg欄位1044之該作用可包含以下之各項:對該目的地暫存器運算元或來源暫存器運算元(Rrrr之該rrr)進行編碼,或將其視為運算碼延伸且不使用於對任何指令運算元進行編碼。R/M欄位1046之該作用可包含以下之各項:編碼引用記憶體位址之該指令運算元,或編碼該目的地暫存器運算元或來源暫存器運算元。
縮放、索引、基本(SIB)-縮放欄位1050(位元組5)之該內容包含SS1052(位元〔7-6〕),其被使用於
產生記憶體位址。SIB.xxx 1054(位元〔5-3〕)與SIB.bbb 1056(位元〔2-0〕)之該內容已於先前關於暫存器索引Xxxx與Bbbb提及。
位移欄位1062及立即值欄位(IMM8)1072係含有位址資料。
向量親和指令格式係適用於向量指令的指令格式(例如,有特定對向量運算的某些欄位)。在所描述的實施例中,雖然向量與純量運算兩者皆可經由向量親和指令格式來支援,但另些實施例僅使用向量運算的向量親和指令格式。
圖11A至11B係繪示依照本發明之實施例之通用向量親和指令格式及其之指令範本之方塊圖。圖11A係繪示依照本發明之實施例之通用向量親和指令格式與其之類型A指令範本之方塊圖;而圖11B係繪示依照本發明之實施例之通用向量親和指令格式與其之類型B指令範本之方塊圖。詳言之,為通用向量親和指令格式1100定義了類型A與類型B指令範本,兩者皆包含無記憶體存取1105指令範本與記憶體存取1120指令範本。在向量親和指令格式的上下文中,該術語通用一詞係指該指令格式並不限定於任何特定的指令集。
雖然在將被描述的本發明實施例中,向量親和指令格式支援如下:具有資料元素寬度(或大小)為32位元(4
位元組)或64位元(8位元組)的64位元組向量運算元長度(或大小)(且因此,64位元組向量係由16個雙字大小的元素或8個4字大小的元素所構成);具有資料元素寬度(或大小)為16位元(2位元組)或8位元(1位元組)的64位元組向量運算元長度(或大小);具有資料元素寬度(或大小)為32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)的32位元組向量運算元長度(或大小);以及具有資料元素寬度(或大小)為32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)的16位元組向量運算元長度(或大小);但另些實施例可支援具有較多、較少或不同的資料元素寬度(例如,128位元(16位元組)的資料元素寬度)之較多、較少及/或不同的向量運算元大小(例如,256位元組的向量運算元)。
在圖11A中的類型A指令範本包含:1)在無記憶體存取1105指令範本中顯示無記憶體存取全捨入控制式運算1110指令範本與無記憶體存取資料轉換型運算1115指令範本;以及2)在記憶體存取1120指令範本中顯示記憶體存取暫時性1125指令範本與記憶體存取非暫時性1130指令範本。在圖11B中的類型B指令範本包含:1)在無記憶體存取1105指令範本中顯示無記憶體存取寫入遮罩控制部分捨入控制式運算1112指令範本與無記憶體存取寫入遮罩控制vsize式運算1117指令範本;以及2)
在記憶體存取1120指令範本中顯示記憶體存取寫入遮罩控制1127指令範本。
通用向量親和指令格式1100包含以下以繪示於圖11A至11B中之順序所表列的欄位。
格式欄位1140-在此欄位中的特定值(指令格式識別符值)唯一地識別向量親和指令格式,且因此在向量親和指令格式中的指令出現在指令流中。因此,此欄位就以下意義係選用的:只有通用向量親和指令格式的指令集不需要此欄位。
基本運算欄位1142-其之內容用來區別不同的基本運算。
暫存器索引欄位1144-其之內容直接地或經由位址產生來指定來源與目的地運算元其等在暫存器或記憶體中應在的位置。這些包含足夠的位元數量以從PxQ(例如,32x512、16x128、32x1024、64x1024)的暫存器檔案中選擇N個暫存器。雖然在一實施例中N可多達三個來源與一個目的地暫存器,但另些實施例可支援較多或較少的來源與目的地暫存器(例如,可支援多達兩個來源,其中這些來源中之一者亦作用為目的地;可支援多達三個來源,其中這些來源中之一者亦作用為目的地;可支援多達兩個來源與一個目的地)。
修改符欄位1146-其之內容用來區別以通用向量指令格式出現的指令,其指定哪些是記憶體存取而哪些則否;亦即,在無記憶體存取1105指令範本與記憶體存取1120
指令範本之間做區別。記憶體存取操作會讀取及/或寫入至記憶體階層(在某些情況中使用在暫存器中的值來指定來源及/或目的地位址),而非記憶體存取操作則否(例如,來源與目的地係暫存器)。在一實施例中,雖然此欄位亦在執行記憶體位址計算的三種不同方式間做選擇,但另些實施例可支援較多、較少或不同的方式來執行記憶體位址計算。
擴增運算欄位1150-其之內容用來區別除了基本運算以外,在多種不同的運算中欲執行哪一項運算。此欄位係與上下文相關。在本發明之一實施例中,此欄位被分割成類型欄位1168、阿爾發欄位1152及貝它欄位1154。此擴增運算欄位1150允許共群的運算在單一指令中執行,而非在2、3或4個指令中執行。
縮放欄位1160-其之內容允許用於產生記憶體位址之索引欄位的內容的縮放(例如,其使用2縮放×索引+基本來產生位址)。
位移欄位1162A-其之內容被使用為產生記憶體位址的一部分(例如,其使用2縮放×索引+基本+位移來產生位址)。
位移因數欄位1162B(須注意,位移欄位1162A直接地併接於位移因數欄位1162B之上係指示一個或另一個被使用)-其之內容被使用為產生位址的一部分;其指定欲被記憶體存取(N)之大小來縮放的位移因數-其中,N係記憶體存取中的位元組的數量(例如,其使用2縮放×索引
+基本+經縮放的位移來產生位址)。為了產生用來計算有效位址的最終位移,冗餘的低階位元予以忽略,且因此,位移因數欄位的內容係被記憶體運算元總大小(N)來相乘。N的值係由處理器硬體於運作時間基於完整運算碼欄位1174(本文稍後描述)與資料調處欄位1154C來判定。在以下意義上,位移欄位1162A與位移因數欄位1162B係選用的:無記憶體存取1105指令範本不使用此兩欄位,及/或不同的實施例可能僅實施其中之一者或兩者皆不使用。
資料元素寬度欄位1164-其之內容用來區別欲使用若干資料元素寬度中的何者(在某些實施例中用於所有指令;在其他實施例中僅用於某些指令)。在以下意義上,此欄位係選用的:若僅支援一種資料元素寬度及/或資料元素寬度係使用運算碼的某些態樣來支援,則不需要此欄位。
寫入遮罩欄位1170-其之內容係以每一個資料元素位置為基礎來控制在目的地向量運算元中的該資料元素位置是否反映了基本運算與擴增運算的結果。類型A指令範本支援合併寫入遮罩,而類型B指令範本支援合併寫入遮罩與歸零寫入遮罩兩者。當合併時,向量遮罩允許在所保護之目的地中之任何組的元素在任何運算(由基本運算與擴增運算所指定)的執行期間不被更新;在另一實施例中,保存目的地中與遮罩位元0所對應之每一個元素的舊值。反之,當歸零時,向量遮罩允許在目的地中之任何組的元
素在任何運算(由基本運算與擴增運算所指定的)的執行期間被歸零;在一實施例中,當對應之遮罩位元的值為0時,目的地元素被設置為0。此功能性的子集合有能力控制欲被執行之運算的向量長度(亦即,從第一個到最後一個元素的幅寬可被修改);然而,被修改的該些元素並不必然係連續的。因此,寫入遮罩欄位1170允許部分的向量運算,包含載入、儲存、算術、邏輯等等。在所描述的本發明實施例中,雖然寫入遮罩欄位1170的內容係在若干的寫入遮罩暫存器中選擇包含所要使用之寫入遮罩的一個暫存器(且因此寫入遮罩欄位1170的內容間接地識別所要執行的遮罩),但替代的實施例代之以或額外地允許寫入遮罩欄位1170的內容直接地指定所要執行的遮罩。
立即值欄位1172-其之內容允許立即值的規格。在以下意義上此欄位係選用的:此欄位不存在於不支援立即值之通用向量親和格式的實施中,且其不存在於不使用立即值的指令中。
類型欄位1168-其之內容用來區別不同類型的指令。參照圖11A至B,此欄位的內容在類型A與類型B指令之間進行選擇。在圖11A至B中,使用圓角的方形來指示存在於此欄位中的特定值(例如,在圖11A至B中的類型欄位1168中分別是類型A1168A與類型B1168B)。
在類型A之無記憶體存取1105指令範本的情況中,
阿爾發欄位1152被解譯為RS欄位1152A,其內容用來區別不同類型之擴增運算中的何者欲被執行(例如,分別為無記憶體存取捨入式運算1110指令範本與無記憶體存取資料轉換型運算1115指令範本所指定的捨入1152A.1與資料轉換1152A.2),而貝它欄位1154區別所指定之類型的運算中何者欲被執行。在無記憶體存取1105指令範本中,縮放欄位1160、位移欄位1162A及位移縮放欄位1162B係不存在。
在無記憶體存取全捨入控制式運算1110指令範本中,貝它欄位1154被解譯為捨入控制欄位1154A,其(若干)內容提供靜態捨入。在所描述的本發明實施例中,雖然捨入控制欄位1154A包含抑制所有的浮點異常(SAE)欄位1156與捨入運算控制欄位1158,但在另些實施例中,可支援將此二者概念編碼至相同的欄位內,或僅具有這些概念/欄位中之一者或另一者(例如,可僅具有捨入運算控制欄位1158)。
SAE欄位1156-其之內容用來區別是否要將異常事件報告去能;當SAE欄位1156的內容指示抑制被致能時,給定的指令不報告任何種類的浮點異常旗標,且不引發任何的浮點異常處理程序。
捨入運算控制欄位1158-其之內容用來區別捨入運算之群組中的何者欲被執行(例如,捨進、捨去、捨去小數
及捨入最近的數值)。因此,捨入運算控制欄位1158允許以每個指令為基礎來改變捨入的模式。在本發明的一實施例中,處理器包含用於指定捨入模式的控制暫存器,捨入運算控制欄位1150的內容置換該暫存器的值。
在無記憶體存取資料轉換型運算1115指令範本中,貝它欄位1154被解譯為資料轉換欄位1154B,其內容用來區別若干資料轉換中的何者欲被執行(例如,沒有任何資料轉換、攪拌、廣播)。
在類型A的記憶體存取1120指令範本的情況中,阿爾發欄位1152被解譯為逐出提示欄位1152B,其內容用來區別欲使用何者逐出提示(在圖11A中,分別為記憶體存取暫時性1125指令範本與記憶體存取非暫時性1130指令範本所指定之暫時性1152B.1與非暫時性1152B.2),而貝它欄位1154被解譯為資料調處欄位1154C,其內容用來區別若干資料調處操作(亦稱為基元)中的何者欲被執行(例如,沒有任何調處;廣播;來源的上轉換;及目的地的下轉換)。記憶體存取1120指令範本包含縮放欄位1160及選用的位移欄位1162A或位移縮放欄位1162B。
向量記憶體指令藉由支援轉換來執行來自記憶體的向量載入及前往記憶體的向量儲存。就正規的向量指令而言,向量記憶體指令以逐資料元素的方式與記憶體來/往
轉移資料,其中實際被傳送的元素係由被選擇作為寫入遮罩之向量遮罩的內容來命令。
暫時性資料係很有可能很快就會被再次使用且快到足以得益於快取的資料。然而,此係提示,且不同的處理器可以不同的方式來實施此提示,包含完全地忽略該提示。
非暫時性資料係不太可能很快就被再次使用而快到足以得益於在第一階快取記憶體中進行快取的資料,且應給予逐出的優先權。然而,此係提示,且不同的處理器可以不同的方式來實施此提示,包含完全地忽略該提示。
在類型B指令範本的情況中,阿爾發欄位1152被解譯為寫入遮罩控制(Z)欄位1152C,其內容用來區別被寫入遮罩欄位1170所控制的寫入遮罩應為合併或歸零。
在類型B之無記憶體存取1105指令範本的情況中,部分的貝它欄位1154被解譯為RL欄位1157A,其內容用來區別不同類型之擴增運算中的何者欲被執行(例如,分別為無記憶體存取寫入遮罩控制部分捨入控制式運算1112指令範本與無記憶體存取寫入遮罩控制VSIZE型運算1117指令範本所指定之捨入1157A.1與向量長度
(VSIZE)1157A.2),而貝它欄位1154的其餘部分則用來區別該指定類型之運算中的何者欲被執行。在無記憶體存取1105指令範本中,縮放欄位1160、位移欄位1162A及位移縮放欄位1162B係不存在。
在無記憶體存取寫入遮罩控制部分捨入控制式運算1110指令範本中,貝它欄位1154的其餘部分被解譯為捨入運算欄位1159A,且異常事件報告被去能(給定的指令不報告任何種類的浮點異常旗標,且不引發任何的浮點異常處置程序)。
捨入運算控制欄位1159A-正如捨入運算控制欄位1158,其之內容用來區別捨入運算之群組中的何者欲被執行(例如,捨進、捨去、捨去小數及捨入最近的數值)。因此,捨入運算控制欄位1159A允許以每個指令為基礎來改變捨入的模式。在本發明的一實施例中,處理器包含用於指定捨入模式的控制暫存器,捨入運算控制欄位1150的內容置換該暫存器的值。
在無記憶體存取寫入遮罩控制VSIZE型運算1117指令範本中,貝它欄位1154的其餘部分則被解譯為向量長度欄位1159B,其內容用來區別欲執行若干資料向量長度(例如,128、256、或512位元組)中的何者。
在類型B之記憶體存取1120指令範本的情況中,部分的貝它欄位1154被解譯為廣播欄位1157B,其內容用來區別是否欲執行廣播類型資料的調處操作,而貝它欄位1154的其餘部分則被解譯為向量長度欄位1159B。記憶體
存取1120指令範本包含縮放欄位1160及選用的位移欄位1162A或位移縮放欄位1162B。
關於通用向量親和指令格式1100,所顯示的完整運算碼欄位1174包含格式欄位1140、基本運算欄位1142及資料元素寬度欄位1164。雖然一實施例顯示完整運算碼欄位1174包含了所有這些欄位,但在不支援所有這些欄位的實施例中,完整運算碼欄位1174包含少於全部的這些欄位。完整運算碼欄位1174提供運算碼(opcode)。
擴增運算欄位1150、資料元素寬度欄位1164及寫入遮罩欄位1170允許以每個指令為基礎將這些特徵指定於通用向量親和指令格式中。
寫入遮罩欄位與資料元素寬度欄位的組合建立了具有類型的指令,因為其等允許基於不同的資料元素寬度來施加遮罩。
在類型A與類型B中所見到的各種指令範本有利於不同的情況。在本發明的某些實施例中,不同的處理器或處理器內不同的核心可僅支援類型A、僅支援類型B,或支援兩者。例如,意欲用於通用計算的高性能通用亂序核心可僅支援類型B,意欲以用於圖形及/或科學(處理量)計算為主的核心可僅支援類型A,以及意欲用於兩者的核心可支援兩者(當然,具有混合該兩類型之某些範本與指令,但並非該兩類型全部之範本與指令的核心亦在本發明的範圍之內)。此外,單一處理器可包含多個核心,
其所有核心都支援相同的類型,或其中不同的核心支援不同的類型。例如,在圖形與通用核心分開的處理器中,其中一個意欲以圖形及/或科學計算為主的圖形核心可僅支援類型A,而具有亂序執行及暫存器更名意欲用於通用計算之高性能通用核心的一或多個通用核心僅支援類型B。另一不具有分離之圖形核心的處理器,可包含支援類型A與類型B兩者的一或多個通用循序或亂序核心。當然,在本發明的不同實施例中,來自某一類的特徵亦可在另一類中實施。以高階語言所撰寫的程式可寫成(例如,即時編譯或靜態編譯)多種不同的可執行形式,包含:1)僅具有用於執行之目標處理器所支援之類型的指令之形式;或2)具有使用所有類型之指令的不同組合所寫成的替代常式,且具有基於當下執行該碼之處理器所支援之指令來選擇所欲執行之常式的控制流程碼之形式。
圖12係繪示依照本發明之實施例之例示性的特定向量親和指令格式的方塊圖。圖12係展示特定向量親和指令格式1200,在以下意義上其為特定的,其指定位置、大小、解譯、及欄位的順序、以及那些欄位中之某些所使用的值。特定向量親和指令格式1200可用來延伸x86指令集,且因此某些欄位與現有x86指令集及其延伸(例如,AVX)中使用的那些類似或相同。此格式保持與含延伸之現有x86指令集的前置編碼欄位、真實運算碼位元組
欄位、MOD R/M欄位、SIB欄位、位移欄位及立即值欄位一致。繪示來自於圖11的欄位映射至來自於圖12的欄位中。
須瞭解,基於繪示性目的,雖然本發明之實施例係參考通用向量親和指令格式1100之上下文中的特定向量親和指令格式1200來描述,但除了申請的部分之外,本發明並不限於特定向量親和指令格式1200。例如,通用向量親和指令格式1100考慮各不同欄位之各種可能的大小,而特定向量親和指令格式1200顯示具有特定大小的欄位。藉由特定的實例,雖然特定向量親和指令格式1200中的資料元素寬度欄位1164被繪示為一個位元的欄位,但本發明並無此限制(亦即,通用向量親和指令格式1100考慮其他大小的資料元素寬度欄位1164)。
通用向量親和指令格式1100包含以下以繪示於圖12A中之順序所表列的欄位。
EVEX前置(位元組0至3)1202-係被編碼成四個位元組的形式。
格式欄位1140(EVEX位元組0,位元〔7:0〕)-第一位元組(EVEX位元組0)係格式欄位1140,且其包含0x62(唯一值,在本發明的一實施例中用來區別向量親和指令格式)。
第二至第四位元組(EVEX位元組1至3)包含提供特定能力的若干位元欄位。
REX欄位1205(EVEX位元組1,位元〔7-5〕)-由
EVEX.R位元欄位(EVEX位元組1,位元〔7〕-R)、EVEX.X位元欄位(EVEX位元組1,位元〔6〕-X)及1157BEX位元組1,位元〔5〕-B)所構成。如對應的VEX位元欄位,EVEX.R、EVEX.X及EVEX.B位元欄位提供相同的功能性,且使用1的補數形式來編碼,亦即ZMM0被編碼為1011B、ZMM15被編碼為0000B。指令的其他欄位編碼暫存器索引之較低的三個位元,如習知技術(rrr、xxx及bbb),以使得Rrrr、Xxxx及Bbbb可藉由添加EVEX.R、EVEX.X及EVEX.B來形成。
REX’欄位1110-此係REX’欄位1110的第一部分,且係EVEX.R’位元欄位(EVEX位元組1,位元〔4〕-R’),其被用來編碼延伸之32暫存器組的高16位元或低16位元。在本發明的一實施例中,此位元連同以下指示的其他位元以位元倒置格式被儲存(習知的x86 32位元模式),以與BOUND指令區別,其真實運算碼位元組係62,但在MOD R/M欄位(下文中描述)中不接受值11的MOD欄位;本發明的替代實施例不以反置格式儲存此與以下指示的其他位元。使用1的值來編碼低16暫存器。換言之,R’Rrrr係藉由結合EVEX.R’、EVEX.R及來自其他欄位的其他RRR所形成。
運算碼映射欄位1215(EVEX位元組1,位元〔3:0〕-mmmm)-其之內容編碼隱含的前導運算碼位元組(0F、0F 38或0F 3)。
資料元素寬度欄位1164(EVEX位元組2,位元〔
7〕-W)-係以符號EVEX.W來表示。EVEX.W係用來定義資料類型的粒度(大小)(32位元資料元素或64位元資料元素)。
EVEX.vvvv 1220(EVEX位元組2,位元〔6:3〕-vvvv)-EVEX.vvvv的功能可包含以下各項:1)EVEX.vvvv編碼第一來源暫存器運算元,以反置(1之補數)的形式指定,且對具有2個或更多個來源運算元的指令有效;2)EVEX.vvvv編碼目的地暫存器運算元,以1之補數的形式指定,用於某些向量移位;或3)EVEX.vvvv不編碼任何運算元,此欄位被保留且應包含1011b。因此,EVEX.vvvv欄位1220編碼第一來源暫存器指定符(specifier)的4個低階位元,其以反置(1之補數)的形式來儲存。視指令而定,使用額外不同的EVEX位元欄位來將指定符的大小延伸至32個暫存器。
EVEX.U 1168類型欄位(EVEX位元組2,位元〔2〕-U)-若EVEX.U=0,則其指示類型A或EVEX.U0;若EVEX.U=1,則其指示類型B或EVEX.U1。
前置編碼欄位1225(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前置編碼,且因此不需要擴展。
阿爾發欄位1152(EVEX位元組3,位元〔7〕-EH;亦稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制及EVEX.N;亦以α來繪示)-如之前所描述的,此欄位係與上下文相關。
貝它欄位1154(EVEX位元組3,位元〔6:4〕-SSS,亦稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ來繪示)-如之前所描述的,此欄位係與上下文相關。
REX’欄位1110-此為REX’欄位的剩餘部分,且係EVEX.V’位元欄位(EVEX位元組3,位元〔3〕-V’),其可用來編碼延伸之32暫存器組的高16或低16。此位元係以位元反置格式來儲存。使用1的值來編碼低16暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位1170-(EVEX位元組3,位元〔2:0〕
-kkk)-如之前所描述的,其之內容指定寫入遮罩暫存器中之暫存器的索引。在本發明之一實施例中,特定值EVEX.kkk=000具有隱含特定之指令不使用寫入遮罩的特殊行為(此可用各種方式來實施,包含使用寫入遮罩硬線到所有特定的指令,或使用旁通遮罩硬體的硬體)。
真實運算碼欄位1230(位元組4)亦稱為運算碼位元組。部分的運算碼被指定在此欄位內。
MOD R/M欄位1240(位元組5)包含MOD欄位1242、Reg欄位1244及R/M欄位1246。如之前所描述的,MOD欄位1242的內容區別記憶體存取與非記憶體存取操作。Reg欄位1244之功能可綜述成兩種情況:編碼目的地暫存器運算元或來源暫存器運算元,或當作運算碼延伸且不用來編碼任何指令運算元。R/M欄位1246之功能可包含如下:參考記憶體位址來編碼指令運算元,或者,編碼目的地暫存器運算元或來源暫存器運算元。
縮放、索引、基本(SIB)位元組(位元組6)-如之前所描述的,縮放欄位1150的內容被用來產生記憶體位址。SIB.xxx 1254與SIB.bbb 1256-這些欄位的內容已於先前關於暫存器索引Xxxx與Bbbb提及。
位移欄位1162A(位元組7至10)-當MOD欄位1242包含10時,位元組7至10係位移欄位1162A,且其工作與舊有的32位元位移(disp32)相同,且是以位元組的粒度工作。
位移因數欄位1162B(位元組7)-當MOD欄位1242
包含01時,位元組7係位移因數欄位1162B。此欄位的位置與舊有x86指令集8位元位移(disp8)的位置相同,其以位元組的粒度工作。由於disp8係正負號延伸,其僅可在128與117位元組的偏移之間定址;就64位元組快取線而論,disp8使用8位元,其僅可設定到四個真正有用的值-128、-64、0、及64;由於通常需要較大的範圍,因此使用disp32;不過,disp32需要4位元組。disp8與disp32相較,位移因數欄位1162B係disp8的重新解譯;當使用位移因數欄位1162B時,實際的位移係由位移因數欄位的內容乘以記憶體運算元存取的大小(N)來決定。此類型的位移被稱為disp8*N。此縮短了平均的指令長度(位移使用單一位元組,但具有更大的範圍)。此經壓縮的位移,係基於有效的位移係記憶體存取之粒度之倍數的假設,且因此,位址偏移之冗餘的低階位元不需要被編碼。換言之,位移因數欄位1162B取代舊有x86指令集的8位元位移。因此,位移因數欄位1162B的編碼方式,僅除了disp8被超載到disp8*N之外,其餘與x86指令集的8位元位移相同(因此,在ModRM/SIB編碼規則方面沒有任何改變)。換言之,在編碼規則或編碼長度方面沒有任何改變,僅藉由硬體來解譯位移值(其需要以記憶體運算元的大小來縮放位移,以獲得到逐位元組的位址偏移)。
立即值欄位1172如之前所描述的來操作。
圖12B的方塊圖係繪示依照本發明之一實施例之組成完整運算碼欄位1174之特定向量親和指令格式1200的欄位。詳言之,完整運算碼欄位1174包含格式欄位1140、基本運算欄位1142及資料元素寬度(W)欄位1164。基本運算欄位1142包含,前置編碼欄位1225、運算碼映射欄位1215及真實運算碼欄位1230。
圖12C的方塊圖係繪示依照本發明之一實施例之組成暫存器索引欄位1144之特定向量親和指令格式1200的欄位。詳言之,暫存器索引欄位1144包含REX欄位1205、REX’欄位1210、MODR/M.reg欄位1244、MODR/M.r/m欄位1246、VVVV欄位1220、xxx欄位1254及bbb欄位1256。
圖12D的方塊圖係繪示依照本發明之一實施例之組成擴增運算欄位1150之特定向量親和指令格式1200的欄位。當類型(U)欄位1168包含0時,其表示EVEX.U0(類型A 1168A);當其包含1時,其表示EVEX.U1(類型B 1168B)。當U=0且MOD欄位1242包含11時(表示無記憶體存取操作),阿爾發欄位1152(EVEX位元組3,位元〔7〕-EH)被解譯為rs欄位1152A。當rs欄位
1152A包含1時(捨入1152A.1),貝它欄位1154(EVEX位元組3,位元〔6:4〕-SSS)被解譯為捨入控制欄位1154A。捨入控制欄位1154A包含一個位元的SAE欄位1156及兩個位元的捨入運算欄位1158。當rs欄位1152A包含0時(資料轉換1152A.2),貝它欄位1154(EVEX位元組3,位元〔6:4〕-SSS)被解譯為三個位元的資料轉換欄位1154B。當U=0且MOD欄位1242包含00、01或10時(表示記憶體存取操作),阿爾發欄位1152(EVEX位元組3,位元〔7〕-EH)被解譯為逐出提示(EH)欄位1152B,及貝它欄位1154(EVEX位元組3,位元〔6:4〕-SSS)被解譯為三個位元的資料調處欄位1154C。
當U=1時,阿爾發欄位1152(EVEX位元組3,位元〔7〕-EH)被解譯為寫入遮罩控制(Z)欄位1152C。當U=1且MOD欄位1242包含11時(表示無記憶體存取操作),部分的貝它欄位1154(EVEX位元組3,位元〔4〕-S0)被解譯成RL欄位1157A;當其包含1時(捨入1157A.1),貝它欄位1154的其餘部分(EVEX位元組3,位元〔6-5〕-S2-1)被解譯成捨入運算欄位1159A,然而當RL欄位1157A包含0時(VSIZE 1157.A2),貝它欄位1154的其餘部分(EVEX位元組3,位元〔6-5〕-S2-1)被解譯成向量長度欄位1159B(EVEX位元組3,位元〔6-5〕-L1-0)。當U=1且MOD欄位1242包含00、01或10時(表示記憶體存取操作),貝它欄位1154(EVEX
位元組3,位元〔6:4〕-SSS)被解譯為向量長度欄位1159B(EVEX位元組3,位元〔6-5〕-L1-0)與廣播欄位1157B(EVEX位元組3,位元〔4〕-B)。
圖13係依照本發明之一實施例之暫存器架構1300的方塊圖。在繪示的實施例中,有32個寬度512位元的向量暫存器1310;這些暫存器稱為zmm0至zmm31。下16個zmm暫存器的低階256位元被疊覆在暫存器ymm0至16上。下16個zmm暫存器的低階128位元(ymm暫存器的低階128位元)被疊覆在暫存器xmm0至15上。特定向量親和指令格式1200在這些疊覆之暫存器檔案上的操作如在下表中之說明。
換言之,向量長度欄位1159B在最大長度與一或多個
其他較短長度之間做選擇,在此,每一個此等較短之長度係前一長度之長度的一半;且沒有向量長度欄位1159B的指令範本以最大向量長度來運算。此外,在一實施例中,特定向量親和指令格式1200的類型B指令範本對緊縮的或純量的單/雙精度浮點資料及緊縮的或純量的整數資料來進行運算。純量運算係對zmm/ymm/xmm暫存器中最低階之資料元素位置實施的運算;較高階資料元素位置被保持與送入指令之前相同或被歸零,視實施例而定。
寫入遮罩暫存器1315-在繪示的實施例中,有8個寫入遮罩暫存器(k0至k7),每一個的大小為64位元。在一替代性實施例中,寫入遮罩暫存器1315的大小係16位元。如之前所描述的,在本發明之一實施例中,向量遮罩暫存器k0不能用做為寫入遮罩;當編碼通常指示k0被用於寫入遮罩時,其選擇0xFFFF的硬接線寫入遮罩,有效地將該指令的寫入遮罩停用。
通用暫存器1325-在繪示的實施例中,其有十六個64位元的通用暫存器,其可連同現有的x86定址模式用來定址記憶體運算元。這些暫存器係藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來引用。
純量浮點堆疊暫存器檔案(x87堆疊)1345,MMX緊縮整數平面暫存器檔案1350疊置於其上-在繪示的實施例中,x87堆疊係八元素堆疊,使用x87指令集延伸對32/64/80位元浮點資料執行純量浮點運算;而MMX暫存
器被用來對64位元的緊縮整數資料執行運算,以及保持MMX與XMM暫存器之間所執行之某些運算之運算元。
本發明之替代的實施例可使用較寬或較窄的暫存器。此外,本發明之替代的實施例可使用較多、較少、或不同的暫存器檔案與暫存器。
在不同的處理器中,處理器核心可按不同之目的用不同的方式來實施。例如,此種核心之實施方案可包含:1)意欲用於通用計算的通用循序核心;2)意欲用於通用計算的高性能通用亂序核心;3)意欲主要用於圖形及/或科學(處理量)計算的專用核心。不同處理器的實施方案可包含:1)包含一或多個意欲用於通用計算之通用循序核心及/或一或多個意欲用於通用計算之通用亂序核心的CPU;以及2)包含一或多個意欲主要用於圖形及/或科學(處理量)之專用核心的協同處理器。此等不同的處理器導致不同的電腦系統架構,其可包含:1)在與CPU分離之晶片上的協同處理器;2)在與CPU同一封裝內之獨立晶粒上的協同處理器;3)在與CPU同一晶粒上的協同處理器(在此情況中,此等協同處理器有時稱為專用邏輯,諸如整合式圖形及/或科學(處理量)邏輯,或諸如專用核心);以及4)系統單晶片,其可包含位在同一晶粒上之上述的CPU(有時被稱為應用核心或應用處理器)、上述的協同處理器及額外功能性。接下來描述例示性的核心
架構,接著是例示性處理器及電腦架構的描述。
圖14A的方塊圖係繪示依照本發明之實施例的例示性循序管線與例示性暫存器更名、亂序發出/執行管線兩者。圖14B的方塊圖係繪示依照本發明之實施例之欲包含在處理器中之循序架構核心與例示性暫存器更名、亂序發出/執行架構核心兩者之例示性實施例。圖14A至B中的實線框繪示循序管線與循序核心,而選用的額外虛線框繪示暫存器更名、亂序發出/執行管線與核心。基於循序態樣係亂序態樣的子集合,因此將描述亂序態樣。
在圖14A中,處理器管線1400包含提取級1402、長度解碼級1404、解碼級1406、配置級1408、更名級1410、排程(亦稱為調度或發出)級1412、暫存器讀取/記憶體讀取級1414、執行級1416、寫回/記憶體寫入級1418、異常處置級1422與提交級1424。
圖14B係展示處理器核心1490,其包含耦接至執行引擎單元1450之前端單元1430,且兩者皆耦接至記憶體單元1470。核心1490可為精減指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心或混合或替代核心類型。又如另一選項,核心1490可為專用核心,諸如例如網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元
(GPGPU)核心、圖形核心,等等。
前端單元1430包含耦接至指令快取單元1434的分支預測單元1432,指令快取單元1434耦接至指令轉譯後備緩衝區(TLB)1436,TLB1436耦接至指令提取單元1438,指令提取單元1438耦接至解碼單元1440。解碼單元1440(或解碼器)可解碼指令,且產生諸如一或多個微操作、微碼登錄點、微指令、其他指令或其他控制信號的輸出,這些係解碼自原始指令或以其他方式反映或導出自原始指令。解碼單元1440可使用各種不同的機制來實施。適合之機制的實例包含(但不限於)查找表、硬體實施方案、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。在一實施例中,核心1490包含微碼ROM或其他媒體,其儲存用於某些微指令的微碼(例如,在解碼單元1440中或以其他方式在前端單元1430中)。解碼單元1440被耦接至執行引擎單元1450中的更名/配置器單元1452。
執行引擎單元1450包含更名/配置器單元1452,其耦接至止用單元1454與一組一或多個排程器單元1456。排程器單元1456代表任何數量之不同的排程器,包含保留站、中央指令視窗等等。排程器單元1456耦接至實體暫存器檔案單元1458。每一個實體暫存器檔案單元1458代表一或多個實體暫存器檔案,每一個不同的實體暫存器檔案儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮的整數、緊縮的浮點、向量整數、向量浮點、狀
態(例如,指令指標,其為下一個欲被執行之指令的位址)等等。在一實施例中,實體暫存器檔案單元1458包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器檔案單元1458被止用單元1454重疊以繪示其中可實施暫存器更名或亂序執行之各種不同的方式(例如,使用重排序緩衝區與止用暫存器檔案;使用未來檔案、歷史緩衝區及止用暫存器檔案;使用暫存器映射與暫存器池等等)。止用單元1454與實體暫存器檔案單元1458被耦接至執行叢集1460。執行叢集1460包括一組的一或多個執行單元1462與一組的一或多個記憶體存取單元1464。執行單元1462可對各種不同類型的資料(例如,純量浮點、緊縮的整數、緊縮的浮點、向量整數、向量浮點)執行各種操作(例如,移位、加、減、乘)。雖然某些實施例可包含若干個專用於特定功能或功能組的執行單元,但其他實施例可包含僅一個執行單元或多個執行單元全部用來執行所有的功能。所展示的排程器單元1456、實體暫存器檔案單元1458與執行叢集1460可能有複數個,這是因為某些實施例為某些類型的資料/操作建立獨立的管線(例如,純量整數管線、純量浮點/緊縮的整數/緊縮的浮點/向量整數/向量浮點管線及/或記憶體存取管線,其每一個具有他們自己的排程器單元、實體暫存器檔案單元及/或執行叢集-且在獨立之記憶體存取管線的情況中,某些實施例中實施僅具有記憶體存
取單元1464之管線的執行叢集)。亦應瞭解,在使用分離之管線的情況中,這些管線中的一或多個管線可亂序發出/執行而其他管線則循序。
記憶體存取單元1464組被耦接至記憶體單元1470,其包含被耦接至資料快取單元1474之資料TLB單元1472,資料快取單元1474被耦接至2階(L2)快取單元1476。在一例示性的實施例中,記憶體存取單元1464可包含載入單元、儲存位址單元及儲存資料單元,每一個單元被耦接至記憶體單元1470中的資料TLB單元1472。指令快取單元1434進一步耦接至記憶體單元1470中的2階(L2)快取單元1476。L2快取單元1476耦接至一或多個其他階的快取,且最終耦接至主記憶體。
舉例來說,例示性的暫存器更名、亂序發出/執行核心架構可按如下來實施管線1400:1)指令提取1438實施提取及長度解碼級1402與1404;2)解碼單元1440實施解碼級1406;3)更名/配置器單元1452實施配置級1408與更名級1410;4)排程器單元1456實施排程級1412;5)實體暫存器檔案單元1458與記憶體單元1470實施暫存器讀取/記憶體讀取級1414;執行叢集1460實施執行級1416;6)記憶體單元1470與實體暫存器檔案單元1458實施寫回/記憶體寫入級1418;7)在異常處置級1422中可包括各種單元;以及8)止用單元1454與實體暫存器檔案單元1458實施提交級1424。
核心1490可支援包括本文所描述之指令的一或多個
指令集(例如,x86指令集(含某些延伸,在較新的版本中已加入);加州森尼韋爾之MIPS Technologies的MIPS指令集;加州森尼韋爾之ARM Holdings的ARM指令集(含選用的額外延伸,諸如NEON))。在一實施例中,核心1490包含用以支援緊縮資料指令集延伸(例如,AVX1、AVX2)的邏輯,藉此允許許多多媒體應用程式所使用的操作可使用緊縮資料來執行。
應瞭解,核心可支援多執行緒(執行兩個或更多個平行的操作或執行緒組),且可用多種方式來做到,包含時間切割多執行緒、同步多執行緒(在此,單一實體核心為每一個執行緒提供邏輯核心,該實體核心係同步多執行緒),或其等之組合(例如,時間分割提取與解碼並於之後同步多執行緒,諸如Intel®的超執行緒技術(Hyperthreading technology)。
雖然是在亂序執行的上下文中來描述暫存器更名,但應瞭解,暫存器更名可用於循序架構中。雖然所繪示的處理器實施例亦包含各自獨立的指令與資料快取單元1434/1474及共享的L2快取單元1476,但替代的的實施例可具有用於指令與資料兩者的單一內部快取記憶體,諸如,例如,1階(L1)內部快取記憶體或多階的內部快取記憶體。在某些實施例中,系統可包含內部快取記憶體與外部快取記憶體的組合,外部快取記憶體係在核心及/或處理器的外部。或者,所有的快取都可在核心及/或處理器的外部。
圖15A至B係繪示更特定的例示性循序核心架構的方塊圖,其核心是晶片中之數個邏輯方塊(包含相同類型及/或不同類型的其他核心)的其中之一。邏輯方塊通過高帶寬互連網路(例如,環狀網路)與某些固定的功能邏輯、記憶體I/O介面及其他必要的I/O邏輯通訊,視應用而定。
圖15A的方塊圖係依照本發明之實施例的單一處理器核心,連同其之與晶粒上的互連網路1502的連接與其之2階(L2)快取1504的本端子集合。在一實施例中,指令解碼器1500支援具有緊縮資料指令集延伸的x86指令集。L1快取1506允許進入到純量與向量單元之對快取記憶體的低延遲存取。雖然在一實施例中(為簡化設計),純量單元1508與向量單元1510使用個別的暫存器組(分別為純量暫存器11512與向量暫存器1514),且其等之間的資料傳送係寫入到記憶體且接著從1階(L1)快取1506中讀回,但本發明的替代實施例可使用不同的方法(例如,使用單一暫存器組或包含允許在兩暫存器檔案之間傳送資料的通訊路徑,而不寫入與讀回)。
L2快取1504的本端子集合係整體L2快取的一部分,其被分割成分開的本端子集合,每個處理器核心一個。每一個處理器核心具有到其自己之L2快取1504之本端子集合的直接存取路徑。藉由處理器核心所讀取的資料
被儲存在其之L2快取子集1504中,且可被快速地存取,與其他處理器核心平行存取其等自己的本端L2快取子集。由處理器核心所寫的資料被儲存在其之自己的L2快取子集1504中,且若有需要,清除其他子集中的此資料。環狀網路確保共享資料的一致性。環狀網路係為雙向以允許代理,諸如處理器核心、L2快取及其他邏輯方塊在晶片內彼此通訊。每一環狀資料路徑在每個方向的寬度為1012位元。
圖15B係依照本發明之實施例之在圖15A中之處理器核心的部分擴展圖。圖15B包含L1快取1504的L1資料快取1506A部分,以及關於向量單元1510及向量暫存器1514的更多細節。詳言之,向量單元1510係16位元寬的向量處理單元(VPU)(見16位元寬ALU 1528),其執行一或多個整數、單精度浮點及雙精度浮點指令。VPU支援以攪拌單元1520攪拌暫存器的輸入,以數值轉換單元1522A至B做數值轉換,及以複製單元1524複製在記憶體的輸入上。寫入遮罩暫存器1526允許預測所得到的向量寫入。
圖16係依照本發明之實施例之處理器1600的方塊圖,其具有一個以上的核心,可具有整合式記憶體控制器,且可具有整合式圖形。圖16中的實線框繪示處理器1600,其具有單一核心1602A、系統代理1610、一組的一
或多個匯流排控制器單元1616,而選用的附加虛線框繪示替代的處理器1600,其具有多個核心1602A至N、系統代理單元1610中的一組的一或多個整合式記憶體控制器單元1614,以及專用邏輯1608。
因此,處理器1600之不同的實施方案可包含:1)CPU,其具有係為整合式圖形及/或科學(處理量)邏輯(其可包含一或多個核心)的專用邏輯1608,以及係為一或多個通用核心(例如,通用循序核心、通用亂序核心或該兩者之組合)的核心1602A至N;2)協同處理器,具有意欲主要地用於圖形及/或科學(處理量)之大量的專用核心的核心1602A至N;以及,3)協同處理器,具有係為大量的通用循序核心的核心1602A至N。因此,處理器1600可以係通用處理器、協同處理器或專用處理器,諸如,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高處理量多整合式核心(MIC)協同處理器(包含30個或以上的核心)、內嵌式處理器,或類似物。該處理器可在一或多個晶片上來實施。處理器1600可以係一或多個基板的一部分及/或使用許多處理技術中的任何技術(諸如,例如,BiCMOS、CMOS或NMOS)而在一或多個基板上實施。
該記憶體階層包含核心內的一或多階快取、一組或一或多個共用快取單元1606以及耦接至整合式記憶體控制器單元1614組的外部記憶體(未圖示)。共用快取單元1606組可包含一或多個中階快取,諸如2階(L2)、3階
(L3)、4階(L4)或其他階的快取、末階快取(LLC),及/或其等之組合。儘管在一實施例中以環狀式互連單元1612來互連整合式圖形邏輯1608、共用快取單元1606組及系統代理單元1610/整合式記憶體控制器單元1614,但替代的實施例可使用許多習知技術來互連此種單元。在一實施例中,在一或多個快取單元1606與核心1602A至N之間保持一致性。
在某些實施例中,核心1602A至N中之一或多者具有多執行緒能力。系統代理1610包含協調與操作核心1602A至N的那些組件。系統代理單元1610可包含例如電力控制單元(PCU)與顯示單元。PCU可為或可包含調節核心1602A至N與整合式圖形邏輯1608之電力狀態所需的邏輯與組件。顯示單元用於驅動一或多個外部連接的顯示器。
就架構指令集而言,核心1602A至N可以係同質或異質的;亦即,兩個或更多個的核心1602A至N可具有執行相同的指令集的能力,而其他的核心則僅具有執行該指令集的子集合或不同的指令集的能力。
圖17至21係例示性電腦架構的方塊圖。習知技術中用於膝上型電腦、桌上型電腦、手持式PC、個人數位式助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、內嵌式處理器、數位信號處理器(DSP)、圖形裝
置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置,及各種其他電子裝置的其他系統設計與組態亦係適用的。通言之,有能力結合如本文所揭示之處理器及/或其他執行邏輯的各種系統或電子裝置亦一體適用的。
現請參考圖17,圖中係展示依照本發明之一實施例之系統1700的方塊圖。系統1700可包含耦接至控制器集線器1720的一或多個處理器1710、1715。在一實施例中,控制器集線器1720包含圖形記憶體控制器集線器(GMCH)1790與輸入/輸出集線器(IOH)1750(其可在不同的晶片上);GMCH 1790包含記憶體與圖形控制器,記憶體1740與協同處理器1745與其相耦接;IOH 1750將輸入/輸出(I/O)裝置1760耦接至GMCH 1790。或者,記憶體與圖形控制器的其中一者或兩者皆被整合在處理器內(如在本文中所述),記憶體1740與協同處理器1745直接地耦接至處理器1710,且控制器集線器1720與IOH 1750位在單一晶片中。
額外處理器1715的選用性質在圖17中以虛線來指示。每一個處理器1710、1715可包含在本文中所述的一或多個處理器核心,且可以係處理器1600的某些版本。
記憶體1740可以係例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或該兩者之組合。關於至少一個實施例,控制器集線器1720經由多點匯流排而與處理器1710、1715通訊,諸如前端匯流排(FSB)、
點對點介面,諸如快速通道互連(QPI)或類似的連接1795。
在一實施例中,協同處理器1745係專用處理器,諸如,例如,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器,或類似物。在一實施例中,控制器集線器1720可包含整合式圖形加速器。
就度量一系列之優點而論,在實體資源1710、1715之間有各種差異,包含架構、微架構、熱、功耗特性等等。
在一實施例中,處理器1710執行的指令用來控制通用類型之資料處理操作。協同處理器指令可內嵌在該等指令內。處理器1710識別這些協同處理器指令係應由附接之協同處理器1745來執行的類型。因此,處理器1710在協同處理器匯流排或其他互連上將這些協同處理器指令(或代表協同處理器指令的控制信號)發送給協同處理器1745。協同處理器1745接受且執行所接收的協同處理器指令。
現請參考圖18,圖中係展示依照本發明之一實施例之第一更特定例示性系統1800的方塊圖。如在圖18中所展示的,多處理器系統1800係點對點互連系統,且包含經由點對點互連1850相耦接的第一處理器1870與第二處理器1880。處理器1870與1880之各者皆係處理器1600的某版本。在本發明的一實施例中,處理器1870與1880
分別地係處理器1710與1715,而協同處理器1838係協同處理器1745。在另一實施例中,處理器1870與1880分別地係處理器1710與協同處理器1745。
所展示的處理器1870與1880分別地包含整合式記憶體控制器(IMC)單元1872與1882。處理器1870亦包含作為其之一部分的匯流排控制器單元點對點(P-P)介面1876與1878;同樣地,第二處理器1880亦包含P-P介面1886與1888。處理器1870、1880可使用P-P介面電路1878、1888經由點對點(P-P)介面1850來互換資訊。如圖18所展示的,IMC 1872與1882將處理器耦接至各別的記憶體,即記憶體1832與記憶體1834,其可以係主記憶體的一部分,局部地附接至各別的處理器。
處理器1870、1880每一個皆可使用點對點介面電路1876、1894、1886、1898經由個別的P-P介面1852、1854而與晶片組1890交換資訊。晶片組1890可經由高性能介面1839而與協同處理器1838可選地交換資訊。在一實施例中,協同處理器1838係專用處理器,諸如,例如,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器,或類似物。
共享快取(未圖示)可包括在處理器內或兩處理器的外部,此外還經由點對點(P-P)互連而與處理器連接,使得若處理器被置於低電力模式中,則其中之一或兩個處理器的局部快取資訊可被儲存在共享快取中。
晶片組1890可經由介面1896耦接至第一匯流排
1816。在一實施例中,第一匯流排1816可以係周邊組件互連(PCI)匯流排,或諸如PCI Express匯流排或另一個第三代I/O互連匯流排之匯流排,僅管本發明的範圍係未受限於此。
如在圖18中所展示的,各種的I/O裝置1814連同將第一匯流排1816耦接至第二匯流排1820的匯流排橋接器1818,可被耦接至第一匯流排1816。在一實施例中,一或多個額外的處理器1815,諸如協同處理器、高處理量MIC處理器、GPGPU、加速器(諸如,例如,圖形加速器或數位信號處理器(DSP)單元)、欄位可程式閘極陣列或任何其他的處理器,皆可耦接至第一匯流排1816。在一實施例中,第二匯流排1820可以係低接腳數(LPC)匯流排。各種裝置可被耦接至第二匯流排1820,在一實施例中,例如,包含鍵盤及/或滑鼠1822、通訊裝置1827與儲存單元1828,諸如磁碟機或可包含指令/碼與資料1830的其他大量儲存裝置。此外,音訊I/O 1824亦可耦接至第二匯流排1820。應注意,亦可能係其他的架構。例如,系統可實施多點匯流排或其他此種的架構來取代圖18的點對點架構。
現請參考圖19,圖中係展示依照本發明之一實施例之第二更特定例示性系統1900的方塊圖。圖18與19中相似的元素使用相似的元件符號,且為了避免糢糊圖19的其他態樣,從圖19省略了圖18中的某些態樣。
圖19係繪示處理器1870、1880分別地包含整合式記
憶體與I/O控制邏輯(「CL」)1872與1882。因此,CL 1872、1882包含整合式記憶體控制器單元且包含I/O控制邏輯。圖19係繪示不僅記憶體1832、1834耦接至CL1872、1882,且I/O裝置1914亦耦接至控制邏輯1872、1882。舊有I/O裝置1915耦接至晶片組1890。
現請參考圖20,圖中係展示依照本發明之一實施例之SoC 2000的方塊圖。在圖16中相似的元素使用相似的元件符號。此外,虛線框係在更先進之SoC上之選用的特徵。在圖20中,互連單元2002耦接至:包含一組的一或多個核心192A至N與共享快取單元1606的應用處理器2010;系統代理單元1610;匯流排控制器單元1616;整合式記憶體控制器單元1614;一組或一或多個協同處理器2020,其可包含整合式圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元2030;直接記憶體存取(DMA)單元2032;及用於耦接至一或多個外部顯示器的顯示單元2040。在一實施例中,協同處理器2020包含專用處理器,諸如,例如,網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、內嵌式處理器,或類似物。
在本文中所揭示之機制的實施例可在硬體、軟體、韌體或此種實施方法之組合中來實施。本發明之實施例可實施為電腦程式或程式碼,可在包括至少一個處理器、儲存系統(包含揮發性與非揮發性記憶體及/或儲存元素)、至少一個輸入裝置及至少一個輸出裝置的可程式系統上來
執行。
程式碼,諸如在圖18中所繪示的碼1830,可被施加於輸入指令以執行在本文中所描述的功能,且產生輸出資訊。該輸出資訊可按習知的方式而被施加於一或多個輸出裝置。基於本申請案之目的,處理系統包含任何具有處理器的系統,諸如,例如,數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)或微處理器。
該程式碼可在高階程序或物件導向程式語言中來實施,以與處理系統通訊。若有需要的話,則程式碼亦可在組合或機器語言中來實施。事實上,在本文中所述的機制不限於任何特定程式語言的範圍。無論如何,該語言係可被編譯或解譯的語言。
至少一個實施例的一或多個態樣可藉由儲存在機器可讀取媒體上的代表指令來實施,其代表處理器內的各種邏輯,當這些指令被機器讀取時,致使機器製造用以實施在本文中所描述之技術的邏輯。此種表示法係習知的「IP核心」,可被儲存在有形的機器可讀取媒體上,且供應給各種客戶或製造工廠,用以載入至實際製造邏輯或處理器的製造機器中。
此機器可讀取儲存媒體可包含(但不限於):藉由機器或裝置所製造或形成之物件的非暫時性有形配置,包含諸如硬式磁碟機的儲存媒體;任何其他類型的碟片,包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可覆寫光碟(CD-RW)及磁光碟;半導體裝置,諸如唯讀記憶體
(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光學卡;或適合儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包含非暫時性有形機器可讀取媒體,其內包含指令或包含設計資料,諸如硬體描述語言(HDL),其定義在本文中所描述的結構、電路、裝置、處理器及/或系統特徵。此種實施例亦被稱之為程式產品。
在某些情況中,可使用指令轉換器將指令從來源指令集轉換至目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包含動態編譯的動態二進制轉譯)、變形、仿真,或以其他方式將指令轉換成能被核心處理的一或多個其他指令。該指令轉換器可在軟體、硬體、韌體或其等之組合中來實施。該指令轉換器可位在處理器上、處理器外或部分位在處理器上而部分在處理器外。
圖21的方塊圖係依照本發明之實施例,使用軟體指令轉換器將來源指令集中的二進制指令轉換至目標指令集中之二進制指令之對照。在所繪示的實施例中,指令轉換
器係軟體指令轉換器,然而,可替代地在軟體、韌體、硬體或其等之各種組合中來實施指令轉換器。圖21展示,可使用x86編譯器2104編譯高階語言2102的程式,以產生可被具有至少一個x86指令集核心2116之處理器原生地執行的x86二進制碼2106。具有至少一個x86指令集核心2116的處理器代表可大致上執行與具有至少一個x86指令集核心之英特爾處理器相同功能的任何處理器,其為了獲致與具有至少一個x86指令集核心之英特爾處理器大致上相同的結果,藉由相容地執行或以其他方式處理(1)英特爾x86指令集核心之指令集的實質部分,或(2)以在具有至少一個x86指令集核心之英特爾處理器上運作為目標之應用程式或其他軟體的目的地碼版本。x86編譯器2104代表一編譯器,無論有或無額外的鏈結處理,其可操作以產生可在具有至少一個x86指令集核心2116之處理器上執行的x86二進制碼2106(例如,目標碼)。同樣地,圖21展示高階語言2102中的程式可使用替代性指令集編譯器2108來編譯,以產生可被不具有至少一個x86指令集核心之處理器2114(例如,具有執行加州森尼韋爾之MIPS Technologies之MIPS指令集及/或執行加州森尼韋爾之ARM Holdings之ARM指令集之核心之處理器)原生地執行之替代性指令集二進制碼2110。指令轉換器2112被使用來將x86二進制碼2106轉換成可被無x86指令集核心之處理器2114原生地執行的碼。此經轉換的碼不太可能與替代的指令集二進制碼
2110相同,原因是此指令轉換器的能力很難做到;然而,經轉換的碼將可完成一般的操作,且從替代的指令集組成指令。因此,指令轉換器2112代表軟體、硬體、韌體或其等之組合,透過仿真、模擬或任何其他處理,允許不具有x86指令集處理器或核心的處理器或其他電子裝置來執行x86二進制碼2106。
針對圖3至9中之任一個描述的組件、特徵及細節亦可視情況應用於圖1至2中之任一者。針對在本文中所揭示之該處理器之任一者(例如,處理器100)所描述的組件、特徵及細節可視情況應用於在實施例中可由此種處理器來執行及/或利用此種處理器來執行之在本文中所揭示之方法之任一者(例如,方法220)。在實施例中在本文中所述之任何處理器(例如,處理器100)可以可選地被包括在本文中所揭示之任何系統中(例如,圖17至20之任何系統)。在實施例中在本文中所述之任何處理器(例如,處理器100)可以可選地具有在本文(例如,圖14B、15A/B)中所展示的任何微架構。此外,在本文中所揭示之任何指令可在某些實施例中可選地具有在本文中所展示之指令格式之任何特徵或細節(例如,針對圖10A/B/C、11A/B、12A/B/C/D所描述之格式)。
在說明及申請專利範圍中,可使用術語「耦接」及/或「連接」連同其等之衍生詞。這些術語不旨在作為彼此的同義詞。而是,在實施例中,「連接」可被使用以指示兩個或更多個元素係彼此直接實體及/或電接觸。「耦接」可表示
兩個或更多個元素係彼此直接實體及/或電接觸。然而,「耦接」亦可表示兩個或更多個元素彼此不直接接觸,但是仍然彼此協作或交互作用。例如,執行單元可藉由一或多個中間組件而與暫存器及/或解碼單元相耦接。在附圖中,箭頭被使用以展示連接及耦接。
在本文中所揭示之組件及在前述附圖中所描繪之方法可利用包含硬體(例如,電晶體、閘極、電路等等)、韌體(例如,非揮發性記憶體儲存微碼或控制信號)、軟體(例如,儲存在非暫時性電腦可讀取儲存媒體上)或其等之組合之邏輯、模組或單元來實施。在某些實施例中,邏輯、模組或單元可至少包含一些或主要是可能與某些可選軟體組合的硬體及/或韌體的混合。
可使用術語「及/或」。如在本文中所使用的,術語「及/或」表示一個或另一個或兩者(例如,A及/或B表示A或B或A與B兩者)。
在以上之描述中,已經闡述了特定細節以便提供對該實施例的徹底瞭解。然而,可在沒有這些特定細節中的某些之情況下來實施其他實施例。本發明之範圍不由以上所提供之該特定實施例來判定,而僅由以下之申請專利範圍來判定。在其他實例中,已經以方塊圖形式及/或無細節的形式來展示習知的電路、結構、裝置及操作,以避免模糊對本描述之瞭解。在認為適當的情況下,元件符號或元件符號之末端部分已經在附圖之間重複,以指示對應或類似的元素,除非另有說明或清楚地顯示,否則其可視情況
具有相似或相同的特性。
某些操作可由硬體組件來執行,或可被實施於機器可執行或電路可執行的指令中,其可被使用以引起及/或導致機器、電路或硬體組件(例如,處理器、部分處理器、電路等等)利用執行操作之該指令來編程。該操作亦可視情況由硬體及軟體之組合來執行。處理器、機器、電路或硬體可包含具體或特定電路或其他邏輯(例如,可能與韌體及/或軟體組合之硬體),其可操作以執行及/或處理該指令且回應於該指令來儲存結果。
一些實施例係包含其包含機器可讀取媒體之製造物品(例如,電腦程式產品)。該媒體可包含以機器可讀的形式來提供(例如儲存資訊)的機制。該機器可讀取媒體可提供或其上已儲存有指令或指令之序列,若及/或當由機器來執行時,係可操作該指令或指令之序列而使機器執行及/或導致機器執行在本文中所揭示之一或多個操作、方法或技術。
在某些實施例中,該機器可讀取媒體可包含有形的及/或非暫時性機器可讀取儲存媒體。例如,該非暫時性機器可讀取儲存媒體可包含軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式ROM(PROM)、可抹除及可程式ROM(EPROM)、電可抹除及可程式ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲
存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫時性記憶體、非暫時性資料儲存裝置等等。該非暫時性機器可讀取儲存媒體不由暫時性傳播之信號所組成。在某些實施例中,該儲存媒體可包含包含固體狀態物質或材料的有形媒體,諸如,例如,半導體材料、相變材料、磁性固體材料、固體資料儲存材料等等。或者,可以可選地使用非有形的暫時性電腦可讀取傳輸媒體,諸如,例如,電的、光學的、聲音的或其他形式的傳播信號(諸如載波、紅外線信號及數位信號)。
合適的機器的實例係包含(但不限於)通用處理器、專用處理器,數位邏輯電路、積體電路等等。合適的機器的又其他實例係包含電腦系統或包含處理器、數位邏輯電路或積體電路之其他電子裝置。此種電腦系統或電子裝置之實例係包含(但不限於)桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、隨身型易網機、智能手機、行動電話、伺服器、網路裝置(例如,路由器及交換機)、行動互聯網裝置(MID)、媒體播放器、智能電視,桌上型易網機、機上盒及視訊遊戲控制器。
在整個本說明書中提及例如「一個實施例」、「一實施例」、「一或多個實施例」、「某些實施例」,係指示特定特徵可包括在本發明之實施中,但不一定需要是。同樣地,在描述中,為了簡化該揭示內容且幫助瞭解各種創造性態樣的目的地,各種特徵有時在單一實施例、圖或其之描述中被分組在一起。然而,本發明之方法不應被解譯為反映
本發明需要比在各個申請專利範圍中所明確地記載之特徵更多的特徵之意圖。相反地,如以下申請專利範圍所反映的,發明態樣係在於少於單一揭示之實施例之所有特徵。因此,在具體實施方式之後的申請專利範圍係藉此被明確地併入至本具體實施方式中,其中每個申請專利範圍依據其之本身而作為本發明的單獨實施例。
以下實例關於進一步之實施例。在實例中之細節可在一或多個實施例中的任何地方使用。
實例1係一種處理器,其包含:複數個緊縮資料暫存器;及解碼單元,其用以解碼指令。該指令用以指示包含複數個毗連資料元素之來源緊縮資料,該指令用以指示資料元素的一數量,且該指令用以指示目的地儲存位置。該處理器亦包含執行單元,該執行單元與該複數個緊縮資料暫存器耦接,且與該解碼單元耦接。該執行單元回應於該指令以將結果緊縮資料儲存在該目的地儲存位置中。該結果緊縮資料係具有複數個巷道。該結果緊縮資料之該巷道之各者係儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量的毗連資料元素之不同的非重疊集合。在該結果緊縮資料之毗連巷道中之該指示數量的該毗連資料元素之不同的非重疊集合係藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。
實例2係包含實例1之該處理器,其中,該解碼單元
係解碼具有立即值以指示該資料元素之該數量的該指令。
實例3係包含實例1至2中之任一者之該處理器,其中,該解碼單元係解碼經由各包含相同數量之資料元素之結構之數量的指示而指示資料元素之該數量的該指令。
實例4係包含實例1至3中之任一者之該處理器,其中,該解碼單元係解碼用以指示在系統記憶體中之該來源緊縮資料之該指令。且其中可選地,該執行單元回應於該指令而以單一載入操作從該系統記憶體載入至少該資料元素之該不同的非重疊集合之各者。
實例5係包含實例4之該處理器,其中,該解碼單元係解碼用以指示包含複數個遮罩元素之遮罩的該指令。且其中可選地,該執行單元回應於該指令而從該系統記憶體僅載入對應於該遮罩之未遮蔽的遮罩元素之該來源緊縮資料的資料元素。
實例6係包含實例1至5中之任一者之該處理器,其中,該解碼單元係解碼用以指示包含32位元單精度浮點資料元素之該來源緊縮資料及用以指示512位元目的地緊縮資料暫存器之該指令。且其中可選地,該執行單元回應於該指令而儲存要作為512位元結果緊縮資料且具有兩個256位元巷道之該結果緊縮資料。且其中可選地,該256位元巷道之各者係儲存與該各自256位元巷道之該最小有效末端對齊之該毗連32位元單精度浮點資料元素之該對應的不同的非重疊集合。且其中可選地,在該512位元結果緊縮資料之該毗連256位元巷道中之該毗連32位元單
精度浮點資料元素之該不同的非重疊集合係藉由該較低有效256位元巷道之該至少一個最有效32位元資料元素位置而彼此分離。
實例7係包含實例1至5中之任一者之該處理器,其中,該解碼單元係解碼用以指示包含32位元單精度浮點資料元素之該來源緊縮資料及用以指示至少256位元目的地緊縮資料暫存器之該指令。且其中可選地,該執行單元回應於該指令而儲存要作為至少256位元結果緊縮資料且具有至少兩個128位元巷道之該結果緊縮資料。且其中可選地,該至少兩個128位元巷道之各者係儲存與該各自128位元巷道之該最小有效末端對齊之該毗連32位元單精度浮點資料元素之該對應的不同的非重疊集合。且其中可選地,在該至少256位元結果緊縮資料之該毗連128位元巷道中之該毗連32位元單精度浮點資料元素之該不同的非重疊集合係藉由該較低有效128位元巷道之該至少一個最有效32位元資料元素位置而彼此分離。
實例8係包含實例1至5中之任一者之該處理器,其中,該解碼單元係解碼用以指示包含32位元資料元素之該來源緊縮資料之該指令。
實例9係包含實例1至5中之任一者之該處理器,其中,該解碼單元係解碼用以指示包含64位元資料元素之該來源緊縮資料之該指令。
實例10係包含實例1至5中之任一者之該處理器,其中,該執行單元回應於該指令而儲存其中該巷道之各者
為128位元巷道之該結果緊縮資料。
實例11係包含實例1至5中之任一者之該處理器,其中,該執行單元回應於該指令而儲存其中該巷道之各者為256位元巷道之該結果緊縮資料。
實例12係包含實例1至11中之任一者之該處理器,其中,該解碼單元係解碼具有用以指示該結果緊縮資料之該巷道之大小之欄位的該指令。
實例13係包含實例1至11中之任一者之該處理器,其中,將該指示數量的毗連資料元素之每個不同的非重疊集合與該各自巷道之該最小有效末端對齊是隱含於該指令。
實例14係一種藉由處理器來執行之方法,其包含在該處理器處接收指令。該指令指示包含複數個毗連資料元素之來源緊縮資料,該指令指示資料元素的一數量,且該指令指示目的地儲存位置。該方法亦包含回應於該指令而將結果緊縮資料儲存在該目的地儲存位置中。該結果緊縮資料具有複數個巷道。該結果緊縮資料之該巷道之各者係儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量的毗連資料元素之不同的非重疊集合。在該結果緊縮資料之毗連巷道中之該指示數量的該毗連資料元素之不同的非重疊集合係藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。
實例15係包含實例14之該方法,其中,該接收包含接收具有指示該資料元素的該數量之立即值的該指令。且
其中可選地,該儲存係包含儲存具有為128位元巷道及256位元巷道之其中一者之該複數個巷道的該結果緊縮資料。
實例16係包含實例14至15中之任一者之該方法,其中,該接收包含接收指示包含第一陣列的多個元素結構及第二陣列的多個元素結構之該來源緊縮資料之該指令。且其中可選地,該儲存包含儲存其中該第一陣列的該多個元素結構被儲存在該結果緊縮資料之最小有效巷道中且該第二陣列的該多個元素結構被儲存在該結果緊縮資料之毗連的較有效巷道中且該最小有效巷道之該至少一個最有效資料元素位置將該第一陣列的該多個元素結構與該第二陣列的該多個元素結構分離之該結果緊縮資料。
實例17係包含實例14之該方法,其中,該接收包含接收指示包含第一陣列的毗連實數及虛數複數對及第二陣列的毗連實數及虛數複數對之該來源緊縮資料的該指令。且其中可選地,該儲存包含儲存其中該第一陣列之該毗連的該實數及該虛數複數對被儲存在該結果緊縮資料之最小有效巷道中且該第二陣列之該毗連的該實數及該虛數複數對被儲存在該結果緊縮資料之毗連的較有效巷道中且該最小有效巷道之至少兩個最有效資料元素位置將該第一及第二陣列的該毗連的該實數及該虛數複數對分離之該結果緊縮資料。
實例18係包含實例14之該方法,其中,該接收包含接收指示包含第一陣列的三個毗連的32位元實數及32位
元虛數複數對及第二陣列的三個毗連的32位元實數及32位元虛數複數對之該來源緊縮資料的該指令。且其中可選地,該儲存包含儲存至少512位元結果緊縮資料,其中該第一陣列的該三個毗連的該32位元實數及該32位元虛數複數對被儲存在該至少512位元結果緊縮資料之最小有效256位元巷道中且該第二陣列的該三個毗連的該32位元實數及該32位元虛數複數對被儲存在該至少512位元結果緊縮資料之毗連的較有效256位元巷道中且該最小有效256位元巷道之至少兩個最有效32位元資料元素位置將該第一及第二陣列的該三個毗連的該32位元實數及該32位元虛數複數對分離。
實例19係包含實例14之該方法,其中,該接收包含接收指示包含第一毗連的32位元實數及32位元虛數複數對及第二毗連的32位元實數及32位元虛數複數對之該來源緊縮資料的該指令。且其中可選地,該儲存包含儲存至少256位元結果緊縮資料,其中該第一毗連的該32位元實數及該32位元虛數複數對被儲存在該至少256位元結果緊縮資料之最小有效128位元巷道中且該第二毗連的32位元實數及32位元虛數複數對被儲存在該至少256位元結果緊縮資料之毗連的較有效128位元巷道中且該最小有效128位元巷道之至少兩個最有效32位元資料元素位置將該第一及第二毗連的該32位元實數及該32位元虛數複數對分離。
實例20係包含實例14至19中之任一者之該方法,
其中,該接收包含接收指示在系統記憶體中之該來源緊縮資料的該指令。且進一步包含以單一載入操作從該系統記憶體可選地載入至少該資料元素之該不同的非重疊集合之各者。
實例21係包含實例14至19中之任一者之該方法,其中,該儲存包含儲存其中該指示數量的該毗連資料元素之每個不同的非重疊集合與該各自巷道之該最小有效末端對齊係隱含於該指令之該結果。
實例22係一種用以處理指令之電腦系統,其包含:互連;及處理器,其與該互連耦接。該處理器用以接收用以指示包含複數個毗連資料元素之來源緊縮資料的指令,該指令用以指示資料元素的一數量,且該指令用以指示目的地緊縮資料暫存器。該處理器回應於該指令以將結果緊縮資料儲存在該目的地緊縮資料暫存器中,該結果緊縮資料係具有複數個巷道。該結果緊縮資料之該巷道之各者係儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量的毗連資料元素之不同的非重疊集合。在該結果緊縮資料之毗連巷道中之該指示數量的該毗連資料元素之不同的非重疊集合係藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。該電腦系統亦包含動態隨機存取記憶體(DRAM),其與該互連耦接。該DRAM儲存演算法之指令集。該演算法之該指令集係預期該指示數量之該毗連資料元素之該不同的非重疊集合與該各自巷道之該最小有效末端對齊。
實例23係包含實例22中之任一者之該電腦系統,其中,該處理器係儲存其中該巷道為128位元巷道及256位元巷道之其中一者的該結果緊縮資料。
實例24係一種製造物品,其包含非暫時性機器可讀取儲存媒體。該非暫時性機器可讀取儲存媒體儲存指令。該指令用以指示包含複數個毗連資料元素之來源緊縮資料,該指令用以指示資料元素的一數量,且該指令用以指示目的地緊縮資料暫存器。該指令若由機器執行則造成該機器執行包含將結果緊縮資料儲存在該目的地緊縮資料暫存器中之操作。該結果緊縮資料係具有複數個巷道。該結果緊縮資料之該巷道之各者係儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量的毗連資料元素之不同的非重疊集合。在該結果緊縮資料之毗連巷道中之該指示數量的該毗連資料元素之不同的非重疊集合係藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。
實例25係包含實例24之該製造物品,其中,該指令係具有用以指示該資料元素的該數量之立即值。且其中可選地,該巷道係為128位元巷道及256位元巷道之其中一者。且其中可選地,將該指示數量的毗連資料元素之每個不同的非重疊集合與該各自巷道之該最小有效末端對齊是隱含於該指令。
實例26係包含實例1至13中之任一者之該處理器,進一步包含用於預測分支的可選分支預測單元,以及與該
分支預測單元耦接的可選指令預取單元,該指令預取單元用以預取包含該指令的指令。該處理器亦可以可選地包含與該指令預取單元耦接的可選的1級(L1)指令快取,該L1指令快取用以儲存指令,可選的L1資料快取用以儲存資料,及可選的2級(L2)快取用以儲存資料及指令。該處理器亦可以可選地包含與該解碼單元、該L1指令快取及該L2快取耦接之指令提取單元,以在某些情況下從該L1指令快取及該L2快取之其中一者提取該指令,且將該指令提供至該解碼單元。該處理器亦可以可選地包含用以更名暫存器之暫存器更名單元,用以排程從執行之該指令所解碼的一或多個操作之可選排程器,以及用以提交該指令之執行結果的可選提交單元。
實例27係包含晶片上系統,其包含:至少一個互連;與該至少一個互連耦接的實例1至13中之任一者之該處理器,與該至少一個互連耦接的可選圖形處理單元(GPU),與該至少一個互連耦接的可選數位信號處理器(DSP),與該至少一個互連耦接的可選顯示控制器,與該至少一個互連耦接的可選記憶體控制器,與該至少一個互連耦接的可選無線數據機,與該至少一個互連耦接的可選影像信號處理器,與該至少一個互連耦接的可選通用串行總線(USB)3.0相容控制器,與該至少一個互連耦接的可選藍牙4.1相容控制器,以及與該至少一個互連耦接的可選無線收發器控制器。
實例28係可操作用以執行實例14至21中之任一者
之該方法之處理器或其他裝置。
實例29係包含用於執行實例14至21中之任一者之該方法之裝置之處理器或其他裝置。
實例30係包含模組及/或單元及/或邏輯及/或電路及/或可操作以執行實例14至21中之任一者之該方法的裝置的任何組合的處理器或其他裝置。
實例31係可選地非暫時性的及/或有形的機器可讀取媒體,其可選地儲存或以其他方式提供包含第一指令的指令,若及/或當由處理器、電腦系統、電子裝置或其他機器來執行時,則該第一指令係可操作以使該機器執行實例14至21中之任一者之該方法。
實例32係大致上如在本文中所述之處理器或其他裝置。
實例33係可操作以執行大致上如在本文中所述之任何方法的處理器或其他裝置。
實例34係可操作以執行大致上如在本文中所述之任何劃分為巷道指令之處理器或其他裝置。
實例35係包含具有可操作以解碼第一指令集之指令之解碼單元之處理器之電腦系統或其他電子裝置。該處理器亦具有一或多個執行單元。該電子裝置亦包含與該處理器耦接之儲存裝置。該儲存裝置係可操作以儲存第一指令,其可以係大致上如在本文中所揭示的任何指令,且其將係屬於第二不同的指令集。該儲存裝置係亦可操作以儲存指令以將該第一指令轉換成該第一指令集之一或多個指
令。當由該處理器執行時,該第一指令集之該一或多個指令係可操作以使該處理器儲存將由該第一指令所儲存的結果(例如,儲存如在本文中其他地方所描述之該指令之任何結果)。
100‧‧‧處理器
102‧‧‧劃分為巷道指令
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧系統記憶體
110‧‧‧記憶體位置
112‧‧‧來源緊縮資料
114‧‧‧緊縮資料暫存器
116‧‧‧目的地儲存位置
118‧‧‧結果緊縮資料
Claims (24)
- 一種處理器,包括:複數個緊縮資料暫存器;解碼單元,用以解碼指令,該指令係指示包含複數個毗連資料元素之來源緊縮資料,該指令係指示資料元素的一數量,且該指令係指示目的地儲存位置,其中該複數個毗連資料元素為浮點資料元素;及執行單元,與該複數個緊縮資料暫存器耦接,且與該解碼單元耦接,該執行單元回應於該指令以將結果緊縮資料儲存在該目的地儲存位置中,該結果緊縮資料係具有複數個巷道,該結果緊縮資料之該複數個巷道之各者具有與該複數個緊縮資料暫存器其中之一相同的大小,該大小為至少128位元,該結果緊縮資料之該複數個巷道之各者係儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量的該毗連資料元素之不同的非重疊集合,在該結果緊縮資料之複數個毗連巷道中之該指示數量的該毗連資料元素之該不同的非重疊集合係藉由該複數個毗連巷道的較低有效巷道之至少一個最有效資料元素位置而彼此分離。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係解碼具有立即值以指示該資料元素的該數量之該指令。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係解碼經由各包含相同數量之資料元素之一數量的結構的指示而指示資料元素的該數量之該指令。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係解碼用以指示在系統記憶體中之該來源緊縮資料之該指令,且其中,該執行單元回應於該指令而以單一載入操作從該系統記憶體載入至少該毗連資料元素之該不同的非重疊集合之各者。
- 如申請專利範圍第4項之處理器,其中,該解碼單元係解碼用以指示包含複數個遮罩元素之遮罩的該指令,且其中,該執行單元回應於該指令而從該系統記憶體僅載入對應於該遮罩之未遮蔽的遮罩元素之該來源緊縮資料的資料元素。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係解碼用以指示包含32位元單精度浮點資料元素之該來源緊縮資料及用以指示512位元目的地緊縮資料暫存器之該指令,且其中,該執行單元回應於該指令而儲存要作為512位元結果緊縮資料且具有兩個256位元巷道之該結果緊縮資料,其中,該256位元巷道之各者係儲存與該各自256位元巷道之該最小有效末端對齊之該毗連32位元單精度浮點資料元素之該對應的不同的非重疊集合,其中, 在該512位元結果緊縮資料之該毗連256位元巷道中之該毗連32位元單精度浮點資料元素之該不同的非重疊集合係藉由該較低有效256位元巷道之該至少一個最有效32位元資料元素位置而彼此分離。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係解碼用以指示包含32位元單精度浮點資料元素之該來源緊縮資料及用以指示至少256位元目的地緊縮資料暫存器之該指令,且其中,該執行單元回應於該指令而儲存要作為至少256位元結果緊縮資料且具有至少兩個128位元巷道之該結果緊縮資料,其中,該至少兩個128位元巷道之各者係儲存與該各自128位元巷道之該最小有效末端對齊之該毗連32位元單精度浮點資料元素之該對應的不同的非重疊集合,其中,在該至少256位元結果緊縮資料之該毗連128位元巷道中之該毗連32位元單精度浮點資料元素之該不同的非重疊集合係藉由該較低有效128位元巷道之該至少一個最有效32位元資料元素位置而彼此分離。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係解碼用以指示包含32位元資料元素之該來源緊縮資料之該指令。
- 如申請專利範圍第1項之處理器,其中,該解碼單元 係解碼用以指示包含64位元資料元素之該來源緊縮資料之該指令。
- 如申請專利範圍第1項之處理器,其中,該執行單元回應於該指令而儲存其中該結果緊縮資料之該複數個巷道之各者為128位元巷道之該結果緊縮資料。
- 如申請專利範圍第1項之處理器,其中,該執行單元回應於該指令而儲存其中該結果緊縮資料之該複數個巷道之各者為256位元巷道之該結果緊縮資料。
- 如申請專利範圍第1項之處理器,其中,該解碼單元係解碼具有用以指示該結果緊縮資料之該複數個巷道之大小之欄位的該指令。
- 如申請專利範圍第1項之處理器,其中,將該指示數量的該毗連資料元素之每個不同的非重疊集合與該各自巷道之該最小有效末端對齊是隱含於該指令。
- 一種藉由處理器執行之方法,包括:在該處理器處接收指令,該指令指示包含複數個毗連資料元素之來源緊縮資料,該指令指示資料元素的一數量,且該指令指示目的地儲存位置;及回應於該指令而將結果緊縮資料儲存在該目的地儲存 位置中,該結果緊縮資料具有複數個巷道,該結果緊縮資料之該巷道之各者儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量的毗連資料元素之不同的非重疊集合,在該結果緊縮資料之毗連巷道中之該指示數量的該毗連資料元素之該不同的非重疊集合係藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。
- 如申請專利範圍第14項之方法,其中,該接收包括接收具有指示該資料元素的該數量之立即值的該指令,且其中,該儲存包括儲存具有為128位元巷道及256位元巷道之其中一者之該複數個巷道的該結果緊縮資料。
- 如申請專利範圍第14項之方法,其中,該接收包括接收指示包含第一陣列的多個元素結構及第二陣列的多個元素結構之該來源緊縮資料之該指令,且其中,該儲存包括儲存其中該第一陣列的該多個元素結構被儲存在該結果緊縮資料之最小有效巷道中且該第二陣列的該多個元素結構被儲存在該結果緊縮資料之毗連的較有效巷道中且該最小有效巷道之該至少一個最有效資料元素位置將該第一陣列的該多個元素結構與該第二陣列的該多個元素結構分離之該結果緊縮資料。
- 如申請專利範圍第14項之方法,其中,該接收包括接收指示包含第一陣列的毗連實數及虛數複數對及第二陣 列的毗連實數及虛數複數對之該來源緊縮資料的該指令,且其中,該儲存包括儲存其中該第一陣列之該毗連的該實數及該虛數複數對被儲存在該結果緊縮資料之最小有效巷道中且該第二陣列之該毗連的該實數及該虛數複數對被儲存在該結果緊縮資料之毗連的較有效巷道中且該最小有效巷道之至少兩個最有效資料元素位置將該第一及第二陣列的該毗連的該實數及該虛數複數對分離之該結果緊縮資料。
- 如申請專利範圍第14項之方法,其中,該接收包括接收指示包含第一陣列的三個毗連的32位元實數及32位元虛數複數對及第二陣列的三個毗連的32位元實數及32位元虛數複數對之該來源緊縮資料的該指令,且其中,該儲存包括儲存至少512位元結果緊縮資料,其中該第一陣列的該三個毗連的該32位元實數及該32位元虛數複數對被儲存在該至少512位元結果緊縮資料之最小有效256位元巷道中且該第二陣列的該三個毗連的該32位元實數及該32位元虛數複數對被儲存在該至少512位元結果緊縮資料之毗連的較有效256位元巷道中且該最小有效256位元巷道之至少兩個最有效32位元資料元素位置將該第一及第二陣列的該三個毗連的該32位元實數及該32位元虛數複數對分離。
- 如申請專利範圍第14項之方法,其中該接收包括接 收指示包含第一毗連的32位元實數及32位元虛數複數對及第二毗連的32位元實數及32位元虛數複數對之該來源緊縮資料的該指令,且其中,該儲存包括儲存至少256位元結果緊縮資料,其中該第一毗連的該32位元實數及該32位元虛數複數對被儲存在該至少256位元結果緊縮資料之最小有效128位元巷道中且該第二毗連的32位元實數及32位元虛數複數對被儲存在該至少256位元結果緊縮資料之毗連的較有效128位元巷道中且該最小有效128位元巷道之至少兩個最有效32位元資料元素位置將該第一及第二毗連的該32位元實數及該32位元虛數複數對分離。
- 如申請專利範圍第14項之方法,其中,該接收包括接收指示在系統記憶體中之該來源緊縮資料的該指令,且進一步包括以單一載入操作從該系統記憶體載入至少該資料元素之該不同的非重疊集合之各者。
- 如申請專利範圍第14項之方法,其中,該儲存包括儲存其中該指示數量的該毗連資料元素之每個不同的非重疊集合與該各自巷道之該最小有效末端對齊係隱含於該指令之該結果。
- 一種用以處理指令之電腦系統,包括:互連; 處理器,與該互連耦接,該處理器具有複數個緊縮資料暫存器,該複數個緊縮資料暫存器之各者具有至少128位元,該處理器接收用以指示包含複數個毗連資料元素之來源緊縮資料的指令,該指令係指示資料元素的一數量,該指令允許該數量為3,且該指令係指示目的地緊縮資料暫存器,該處理器回應於該指令以將結果緊縮資料儲存在該目的地緊縮資料暫存器中,該結果緊縮資料係具有複數個巷道,該結果緊縮資料之該複數個巷道之各者具有與該複數個緊縮資料暫存器其中一者相同的大小,該結果緊縮資料之該巷道之各者係儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量的該毗連資料元素之不同的非重疊集合,在該結果緊縮資料之毗連巷道中之該指示數量之該毗連資料元素之該不同的非重疊集合係藉由該複數個毗連巷道的較低有效巷道之至少一個最有效資料元素位置而彼此分離,其中,該來源緊縮資料的該複數個毗連資料元素為浮點資料元素,以及該處理器係儲存其中該結果緊縮資料之該複數個巷道之各者為128位元巷道及256位元巷道之其中一者的該結果緊縮資料;及動態隨機存取記憶體(DRAM),與該互連耦接,該DRAM儲存演算法之指令集,該演算法之該指令集係預期該指示數量之該毗連資料元素之該不同的非重疊集合與該各自巷道之該最小有效末端對齊。
- 一種製造物品,包括非暫時性機器可讀取儲存媒體, 該非暫時性機器可讀取儲存媒體儲存指令,該指令係指示包含複數個毗連資料元素之來源緊縮資料,該指令係指示資料元素的一數量,且該指令係指示目的地緊縮資料暫存器,且該指令若由機器執行則造成該機器執行包括以下的操作:將結果緊縮資料儲存在該目的地緊縮資料暫存器中,該結果緊縮資料具有複數個巷道,該結果緊縮資料之該巷道之各者儲存與該各自巷道之最小有效末端對齊之該來源緊縮資料之該指示數量的毗連資料元素之不同的非重疊集合,在該結果緊縮資料之毗連巷道中之該指示數量的該毗連資料元素之該不同的非重疊集合係藉由該較低有效巷道之至少一個最有效資料元素位置而彼此分離。
- 如申請專利範圍第23項之製造物品,其中,該指令係具有用以指示該資料元素的該數量之立即值,其中,該巷道為128位元巷道及256位元巷道之其中一者,且其中,將該指示數量的毗連資料元素之每個不同的非重疊集合與該各自巷道之該最小有效末端的對齊隱含於該指令。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/087,231 | 2016-03-31 | ||
| US15/087,231 US11204764B2 (en) | 2016-03-31 | 2016-03-31 | Processors, methods, systems, and instructions to Partition a source packed data into lanes |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201741868A TW201741868A (zh) | 2017-12-01 |
| TWI747881B true TWI747881B (zh) | 2021-12-01 |
Family
ID=59961528
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW106105977A TWI747881B (zh) | 2016-03-31 | 2017-02-22 | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US11204764B2 (zh) |
| CN (1) | CN109196467B (zh) |
| DE (1) | DE112017001709T5 (zh) |
| TW (1) | TWI747881B (zh) |
| WO (1) | WO2017172212A1 (zh) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10409601B2 (en) | 2017-12-29 | 2019-09-10 | Intel Corporation | Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline |
| US11789734B2 (en) * | 2018-08-30 | 2023-10-17 | Advanced Micro Devices, Inc. | Padded vectorization with compile time known masks |
| US11372643B2 (en) | 2018-11-09 | 2022-06-28 | Intel Corporation | Systems and methods for performing instructions to convert to 16-bit floating-point format |
| US11397624B2 (en) * | 2019-01-22 | 2022-07-26 | Arm Limited | Execution of cross-lane operations in data processing systems |
| US11442729B2 (en) * | 2020-10-26 | 2022-09-13 | Google Llc | Bit-packed array processing using SIMD |
| US11328209B1 (en) | 2021-06-02 | 2022-05-10 | SambaNova Systems, Inc. | Dual cycle tensor dropout in a neural network |
| US11256987B1 (en) | 2021-06-02 | 2022-02-22 | SambaNova Systems, Inc. | Memory efficient dropout, with reordering of dropout mask elements |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140095828A1 (en) * | 2012-09-28 | 2014-04-03 | Mikhail Plotnikov | Vector move instruction controlled by read and write masks |
| TW201439770A (zh) * | 2012-12-19 | 2014-10-16 | Nvidia Corp | 透過貼圖硬體執行記憶體存取操作之技術 |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4141005A (en) * | 1976-11-11 | 1979-02-20 | International Business Machines Corporation | Data format converting apparatus for use in a digital data processor |
| US6275834B1 (en) | 1994-12-01 | 2001-08-14 | Intel Corporation | Apparatus for performing packed shift operations |
| EP0795153A4 (en) | 1994-12-02 | 2001-11-14 | Intel Corp | MICROPROCESSOR WITH COMPASS OPERATION OF COMPOSITE OPERANDS |
| CN101794212B (zh) * | 1995-08-31 | 2015-01-07 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
| WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
| US6356993B1 (en) * | 1999-10-26 | 2002-03-12 | Pyxsys Corporation | Dual aspect ratio PE array with no connection switching |
| US6453405B1 (en) * | 2000-02-18 | 2002-09-17 | Texas Instruments Incorporated | Microprocessor with non-aligned circular addressing |
| US7725521B2 (en) * | 2001-10-29 | 2010-05-25 | Intel Corporation | Method and apparatus for computing matrix transformations |
| GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
| US7529918B2 (en) * | 2006-07-21 | 2009-05-05 | Broadcom Corporation | System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor |
| US8078836B2 (en) | 2007-12-30 | 2011-12-13 | Intel Corporation | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits |
| CN104025029A (zh) * | 2011-12-30 | 2014-09-03 | 英特尔公司 | 唯一打包数据元素标识处理器、方法、系统、和指令 |
| US9501276B2 (en) | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
| US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
| US9990202B2 (en) | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
| US9323524B2 (en) * | 2013-09-16 | 2016-04-26 | Oracle International Corporation | Shift instruction with per-element shift counts and full-width sources |
| US10191743B2 (en) * | 2013-12-29 | 2019-01-29 | Intel Corporation | Versatile packed data comparison processors, methods, systems, and instructions |
| US9766888B2 (en) * | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
| US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
-
2016
- 2016-03-31 US US15/087,231 patent/US11204764B2/en active Active
-
2017
- 2017-02-22 TW TW106105977A patent/TWI747881B/zh active
- 2017-03-01 WO PCT/US2017/020198 patent/WO2017172212A1/en not_active Ceased
- 2017-03-01 CN CN201780014453.1A patent/CN109196467B/zh active Active
- 2017-03-01 DE DE112017001709.2T patent/DE112017001709T5/de active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140095828A1 (en) * | 2012-09-28 | 2014-04-03 | Mikhail Plotnikov | Vector move instruction controlled by read and write masks |
| TW201439770A (zh) * | 2012-12-19 | 2014-10-16 | Nvidia Corp | 透過貼圖硬體執行記憶體存取操作之技術 |
Non-Patent Citations (2)
| Title |
|---|
| Freescale Semiconductor, "AltiVec Technology Programming Interface Manual", June 1999 * |
| Freescale Semiconductor, "AltiVec Technology Programming Interface Manual", June 1999。 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW201741868A (zh) | 2017-12-01 |
| US20170286109A1 (en) | 2017-10-05 |
| WO2017172212A1 (en) | 2017-10-05 |
| US11204764B2 (en) | 2021-12-21 |
| CN109196467B (zh) | 2024-01-02 |
| DE112017001709T5 (de) | 2018-12-20 |
| CN109196467A (zh) | 2019-01-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI715618B (zh) | 資料元件比較處理器、方法、系統及指令 | |
| TWI756251B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
| TWI743058B (zh) | 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 | |
| CN104951401B (zh) | 排序加速处理器、方法、系统和指令 | |
| TWI747881B (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
| KR101926241B1 (ko) | 레지스터 정렬을 위한 시스템, 장치 및 방법 | |
| TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
| TWI556165B (zh) | 位元混洗處理器、方法、系統及指令 | |
| CN119377541A (zh) | 用于稀疏-密集矩阵乘法的加速器 | |
| TWI462007B (zh) | 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法 | |
| TWI544411B (zh) | 緊縮旋轉處理器、方法、系統與指令 | |
| TWI599951B (zh) | 用於融合乘法乘法指令的處理器、方法及系統 | |
| TWI706322B (zh) | 資料元件重新安排、處理器、方法、系統以及指令 | |
| TW202311986A (zh) | 用於融合乘加運算的系統、裝置及方法 | |
| TWI740859B (zh) | 用於跨步的載入(strided load)的系統、設備及方法 | |
| CN104204989B (zh) | 用于选择向量计算的元素的装置和方法 | |
| TWI637276B (zh) | 執行向量位元混洗的方法與裝置 | |
| TWI610228B (zh) | 用於執行向量位元反轉和交叉的方法和設備 | |
| TWI760341B (zh) | 用於跨步載入的系統、設備及方法 | |
| CN104025019A (zh) | 用于执行双块绝对差求和的系统、装置和方法 | |
| TWI724054B (zh) | 用於跨距存取的系統、裝置及方法 | |
| TWI733718B (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 | |
| TWI731904B (zh) | 用於巷道為主的跨類收集的系統、設備與方法 | |
| TWI818894B (zh) | 毗連資料元素成對調換處理器、方法、系統、及指令 | |
| TWI817926B (zh) | 用於執行指令的設備、方法及非暫態機器可讀媒體 |