TWI706322B - 資料元件重新安排、處理器、方法、系統以及指令 - Google Patents
資料元件重新安排、處理器、方法、系統以及指令 Download PDFInfo
- Publication number
- TWI706322B TWI706322B TW105126628A TW105126628A TWI706322B TW I706322 B TWI706322 B TW I706322B TW 105126628 A TW105126628 A TW 105126628A TW 105126628 A TW105126628 A TW 105126628A TW I706322 B TWI706322 B TW I706322B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- result
- data element
- source
- operand
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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)
Abstract
一種處理器包括解碼單元,以解碼指示具有來源資料元件之來源封裝資料運算元及指示目的儲存地點的指令。該來源資料元件各者具有來源資料元件值及來源資料元件位置。回應於該指令,執行單元儲存具有結果資料元件的結果封裝資料運算元及結果資料元件位置,該結果封裝資料運算元各者具有結果資料元件值。各結果資料元件值係下列一者:(1)等於最接近於該來源運算元的一端之來源資料元件的來源資料元件位置,具有等於該結果資料元件之該結果資料元件位置的來源資料元件值;及(2)替代值,當沒有來源資料元件具有等於該結果資料元件之該結果資料元件位置的來源資料元件值時。
Description
本文描述的實施例通常相關於處理器。特別係本文描述的實施例通常相關於處理封裝資料的處理器。
許多處理器具有單指令、多資料(SIMD)架構。在SIMD架構中,封裝資料指令、向量指令、或SIMD指令可在暫存器或記憶體位置內封裝為封裝資料、向量資料、或SIMD資料的多個資料元件上運算。暫存器的位元可代表性地邏輯地分割為一系列的資料元件。例如,128位元寬的封裝資料暫存器可具有十六個8位元的資料元件、八個16位元的資料元件、四個32位元的資料元件、或二個64位元的資料元件。各資料元件可代表分別獨立的資料段(例如,像素顏色、複數的成分等),可與其他元件分別及/或獨立地在其上運算。處理器可具有平行執行硬體,回應於封裝資料指令,同步及/或平行地在資料元件上運算。
100、300、700、1800、1910、1915、2015:處理器
102:指令集
104:按索引聚集至暫存器的指令
106、306:按索引散射至暫存器的指令
108:資料元件重新安排指令
110:架構可見暫存器
112、310、710:封裝資料暫存器
114:封裝資料運算遮罩暫存器
116、316、716、1640:解碼單元
118、318、418、718、818、1662:執行單元
212、335、412:目的封裝資料暫存器
220:按索引聚集至暫存器的運算
222、332、432、532、770、870、970、1070:來源封裝資料運算元
224、334、434、534:來源封裝索引運算元
226、336、436、536、772、872、972、1072:結果封裝資料運算元
227、439:第一組箭號
228、440:第二組箭號
230、442:雲狀方塊
438:按索引散射至暫存器的運算
518:按索引散射至暫存器的執行單元
548:互連電路
550:第一信號
552:第二信號
660、1180:方法
708:資料重新安排指令
774:目的儲存位置
876、1076:散射索引至聚集索引重新安排運算
878、978:結果遮罩運算元
879:第一箭號
880:第二箭號
881:第三箭號
882:第四箭號
918:資料元件重新安排執行單元
950:第一組信號
952:第二組信號
1202:VEX前置碼
1205:REX欄位
1215:運算碼映射欄位
1220:VEX.vvvv
1225:前置編碼欄位
1230:實際運算碼欄位
1240:Mod R/M位元組
1242:基本運算欄位
1244:暫存器索引欄位
1246:R/M欄位
1250:SIB位元組
1252:SS
1254:SIB.xxx
1256:SIB.bbb
1262:位移欄位
1264:W欄位
1268:VEX.L
1272:立即欄位
1274:全運算碼欄位
1300:通用向量親和指令格式
1305:無記憶體存取指令樣板
1310:無記憶體存取、全捨入控制型運算指令樣板
1312:無記憶體存取、寫入遮罩控制、部分捨入控制型運算指令樣板
1315:無記憶體存取、資料轉移型運算指令樣板
1317:無記憶體存取、寫入遮罩控制、vsize型運算指令樣板
1320:記憶體存取指令樣板
1325:記憶體存取、時間性指令樣板
1327:記憶體存取、寫入遮罩控制指令樣板
1330:記憶體存取、非時間性指令樣板
1340:格式欄位
1342:基本運算欄位
1344:暫存器索引欄位
1346:修飾欄位
1350:增益運算欄位
1352:甲欄位
1352A:RS欄位
1352A.1、1357A.1:捨入
1352A.2:資料轉移
1352B:驅逐提示欄位
1352B.1:時間性
1352B.2:非時間性
1352C:寫入遮罩控制(Z)欄位
1354:乙欄位
1354A:捨入控制欄位
1354B:資料轉移欄位
1354C:資料操控欄位
1356:抑制所有浮點異常(SAE)欄位
1357A:RL欄位
1357A.2:向量長度(VSIZE)
1357B:廣播欄位
1358:捨入運算控制欄位
1359A:捨入運算欄位
1359B:向量長度欄位
1360:比例欄位
1362A:位移欄位
1362B:位移因子欄位
1364:資料元件寬度欄位
1368:類別欄位
1368A:類別A
1368B:類別B
1370:寫入遮罩欄位
1372:立即欄位
1374:全運算碼欄位
1400:特定向量親和指令格式
1402:EVEX前置碼
1405:REX欄位
1410:REX'欄位
1415:運算碼映射欄位
1420:EVEX.vvvv
1425:前置編碼欄位
1430:實際運算碼欄位
1440:MOD R/M欄位
1442:MOD欄位
1444:Reg欄位
1446:R/M欄位
1454:SIB.xxx
1456:SIB.bbb
1500:暫存器架構
1510:向量暫存器
1515、1726:寫入遮罩暫存器
1525:通用暫存器
1545:純量浮點堆疊暫存器檔案(x87堆疊)
1550:MMX封裝整數平坦暫存器檔案
1600:處理器管線
1602:提取級
1604:長度解碼級
1606:解碼級
1608:配置級
1610:更名級
1612:排程級
1614:暫存器讀取/記憶體讀取級
1616:執行級
1618:寫回/記憶體寫入級
1622:異常管理級
1624:提交級
1630:前端單元
1632:分支預測單元
1634:指令快取單元
1636:指令轉換後備緩衝器(TLB)
1638:指令提取單元
1650:執行引擎單元
1652:更名/配置器單元
1654:引退單元
1656:排程器單元
1658:實體暫存器檔案(等)單元
1660:執行叢集
1664:記憶體存取單元
1670:記憶體單元
1672:資料TLB單元
1674:資料快取單元
1676:2級(L2)快取記憶體單元
1690:處理器核心
1700:指令解碼器
1702:晶粒上互連網路
1704:2級(L2)快取記憶體區域子集
1706:L1快取記憶體
1706A:L1資料快取記憶體
1708:純量單元
1710:向量單元
1712:純量暫存器
1714:向量暫存器
1720:交叉混合單元
1722A-B:數值轉變單元
1724:複製單元
1728:寬度16的ALU
1802A、1802N:核心
1806:共享快取記憶體單元
1808:特殊用途邏輯
1810:系統助理單元
1812:環形為基的互連單元
1814、2072、2082:積體記憶體控制器單元
1816:匯流排控制器單元
1900、2000、2100:系統
1920:控制器集線器
1940:記憶體
1945、2038、2220:共處理器
1950:輸入/輸出集線器(IOH)
1960:輸入/輸出(I/O)裝置
1990:圖形記憶體控制器集線器(GMCH)
1995:連接
2014、2114:I/O裝置
2016:第一匯流排
2018:匯流排橋接器
2020:第二匯流排
2022:鍵盤及/或滑鼠
2024:音訊I/O
2027:通訊裝置
2028:儲存單元
2030:指令/碼及資料
2039:高效能介面
2050:點-對-點互連
2052、2054:P-P介面
2070:第一處理器
2072、2082:積體記憶體及I/O控制邏輯(「CL」)
2076、2078、2086、2088:點對點(P-P)介面
2080:第二處理器
2090:晶片組
2094、2098:點對點介面電路
2096:介面
2115:傳統I/O裝置
2200:SoC
2202:互連單元
2210:應用處理器
2230:靜態隨機存取記憶體(SRAM)單元
2232:直接記憶體存取(DMA)單元
2240:顯示單元
2302:高階語言
2304:x86編譯器
2306:x86二進位碼
2308:替代指令集編譯器
2310:替代指令集二進位碼
2312:指令變換器
2314:不具有至少一個x86指令集核心的處理器
2316:具有至少一個x86指令集核心的處理器
C0、C1、C2、C3:比較器
k0、k1、k2、k3、k7、xmm0-15、ymm0-15、zmm0-31:暫存器
M0、M1、M2、M3、S0、S1、S2、S3:選擇器
N0、N1、N2、N3:不匹配偵測單元
本發明可能最好藉由參考用於說明實施例的以下描述及隨附圖式而理解。在該等圖式中:圖1係處理器之實施例的方塊圖。
圖2係按索引聚集至暫存器的運算之範例實施例的方塊圖。
圖3係運算以實施按索引散射至暫存器的指令之實施例的處理器之實施例的方塊圖。
圖4係按索引散射至暫存器的運算之範例實施例的方塊圖。
圖5係按索引散射至暫存器的執行單元之詳細範例實施例的方塊圖。
圖6係實施按索引散射至暫存器的指令之實施例的方法之實施例的方塊流程圖。
圖7係運算以實施資料重新安排指令之實施例的處理器之實施例的方塊圖。
圖8係資料元件重新安排運算之第一範例實施例的方塊圖。
圖9係資料元件重新安排執行單元之詳細範例實施例的方塊圖。
圖10係資料元件重新安排運算之第二範例實施例的方塊圖。
圖11係在實施按索引散射至暫存器的常式之處理器
中的方法之範例實施例的方塊流程圖。
圖12A-12C係描繪根據本發明的實施例之通用向量親和指令格式及其指令樣板的方塊圖。
圖13A-B係描繪根據本發明的實施例之範例特定向量親和指令格式及運算元欄位的方塊圖。
圖14A-D係描繪根據本發明的實施例之範例特定向量親和指令格式及其欄位的方塊圖。
圖15係暫存器架構之實施例的方塊圖。
圖16A係描繪有序管線的實施例及暫存器更名無序發佈/執行管線之實施例的方塊圖。
圖16B係包括耦接至執行引擎單元的前端單元且二者均耦接至記憶體單元的處理器核心之實施例的方塊圖。
圖17A係單處理器核心連同其之至晶粒上互連網路的連接及其之2級(L2)快取記憶體區域子集之實施例的方塊圖。
圖17B係圖17A的處理器核心之一部分的擴大圖之實施例的方塊圖。
圖18係可具有一個以上的核心、可具有積集記憶體控制器、並可具有積集圖形處理器的處理器之實施例的方塊圖。
圖19係電腦架構之第一實施例的方塊圖。
圖20係電腦架構之第二實施例的方塊圖。
圖21係電腦架構之第三實施例的方塊圖。
圖22係電腦架構之第四實施例的方塊圖。
圖23係根據本發明的實施例使用軟體指令變換器將來源指令集中的二進位指令變換為目的指令集中之二進位指令的方塊圖。
本文揭示指令、執行該指令的處理器、當處理或執行該指令時由該處理器實施的方法、合併一或多個處理器以處理或執行該指令的系統、及儲存指令的機器可讀媒體。在以下描述中,陳述許多具體細節(例如,具體指令運算、實作指令的微架構、資料格式、處理器組態、運算序列等)。然而,可不需要此等特定細節而實踐實施例。在其他實例中,未詳細顯示已為人所熟知的電路、結構、以及技術,以避免模糊對該描述的理解。
圖1係處理器100之實施例的方塊圖。在部分實施例中,處理器可係通用處理器(例如,使用在桌上型、膝上型、或其他電腦中的該種通用微處理器或中央處理單元(CPU))。或者,處理器可能係特殊用途處理器。合適的特殊用途處理器的範例包括,但未受限於,網路處理器、通訊處理器、加密處理器、圖形處理器、共處理器、嵌入式處理器、數位訊號處理器(DSP)、及控制器(例如,微控制器)。
處理器具有指令集架構(ISA)。ISA代表與程式化有關之處理器架構的一部分,且通常包括處理器的原生指令、架構暫存器、資料種類、定址模式、及記憶體結構等。
ISA與微架構不同,其通常代表獲選來實作ISA的特定處理器設計技術。處理器可具有各種複雜指令集計算(CISC)架構、精簡指令集計算(RISC)架構、極長指令(VLIW)架構、混合架構、其他種類的架構的任一者、或具有不同架構之組合(例如,不同核心可具有不同架構)。
ISA包括架構可見暫存器(例如,架構暫存器檔案)110。架構暫存器在本文中也可簡單地稱為暫存器。除非另行指定或係明顯的,在本文中使用的片語架構暫存器、暫存器檔案、及暫存器係指軟體及/或程式設計師可見的暫存器,及/或由藉由巨集指令指定以識別運算元的暫存器。在給定微架構中,此等暫存器對比於其他非架構或非架構可見暫存器(例如,暫時暫存器、重排序緩衝器、引退暫存器等)。暫存器通常代表晶粒上處理器儲存位置。如所示的,暫存器可包括封裝資料暫存器112,其運算以儲存封裝資料、向量資料、或SIMD資料。在部分實施例中,暫存器也可包括封裝資料運算遮罩暫存器114。將進一步於下文討論選擇性的封裝資料運算遮罩暫存器。
處理器也具有並支援指令集102。指令集可代表巨集指令、組合語言指令、或處理器能原生地實施的機器層級指令。如所示的,處理器可具有運算以將指令集的指令解碼成微指令、微運算元、或其他解碼的指令或控制信號的解碼單元116、及運算以執行或實施解碼的指令或控制信號的一或多個執行單元118。
再度參考圖1,在部分實施例中,指令集可選擇性地包括至少一個按索引聚集至暫存器的指令104(gather by indices to register instruction 104)。按索引聚集至暫存器的指令在本技術中有時也可稱為排列指令及/或變換指令。按索引聚集至暫存器的指令可運算以使用索引將來源資料元件聚集至結果暫存器中。例如,在部分實施例中,按索引聚集至暫存器的指令可指示具有資料元件的來源封裝資料運算元、可指示具有索引的來源封裝索引運算元、且當實施按索引聚集至暫存器的指令時,可使用索引選擇來源封裝資料運算元的資料元件、並儲存選擇的來源資料元件至對應於運算元內的相同相對位置中之索引的對應結果資料元件。
在部分實施例中,指令集可選擇性地包括至少一個按索引散射至暫存器的指令106(scatter by indices to register instruction 106)。按索引散射至暫存器的指令可運算以使用索引將來源資料元件散射至結果暫存器。例如,在部分實施例中,按索引散射至暫存器的指令可指示具有資料元件的來源封裝資料運算元、可指示具有索引的來源封裝索引運算元、且當實施按索引散射至暫存器的指令時,可使用索引選擇結果封裝資料運算元的結果資料元件、並將對應於運算元內之相同相對位置中的索引之對應來源資料元件儲存至選擇的結果資料元件。
如能輕易地看見的,按索引聚集至暫存器的指令及按索引散射至暫存器的指令可以不同方式使用索引。在部分
實施例中,指令集可選擇性地包括至少一個資料元件重新安排指令108,其適於將散射索引重新安排為聚集索引及/或將聚集索引重新安排成散射索引。例如,資料元件重新安排指令可運算以將以散射模式安排之來源封裝索引運算元的索引重新安排成以聚集模式安排之結果封裝索引運算元的索引。或者,資料元件重新安排指令可運算以將以聚集模式安排之來源封裝索引運算元的索引重新安排成以散射模式安排之結果封裝索引運算元的索引。在各種實施例中,待理解指令集可包括少至指令104、106、108的至少一個、或此種指令的二或多者(例如,相同種類及/或不同種類的任一者)、或所有此種指令。
單獨的或組合的各指令104、106、108可有利地傾向於協助改善各種不同種類之演算法的效能。再者,包括此等指令的組合可係有利的。例如,若指令集包含按索引聚集至暫存器的指令(例如,排列指令、變換指令等),包括至少一個按索引散射至暫存器的指令及/或至少一個散射索引至聚集索引重新安排指令在指令集中可協助互補及/或提供相關於按索引聚集至暫存器的指令的對稱性。相反地,不具有此等指令的至少一者在指令集中可傾向於暴露不對稱性或不足,其可傾向於使特定演算法成本昂貴以向量化及/或另外實作。
圖2係描繪可回應於按索引聚集至暫存器的指令之實施例實施的按索引聚集至暫存器的運算220之範例實施例的方塊圖。運算可由本文揭示的各種處理器的任一者實
施。
指令可指定(例如,明顯指定)或另外指示(例如,隱含指示)具有複數個封裝資料元件的來源封裝資料運算元222。在本說明中,當從右讀至左時,將資料元件標示為資料元件A、B、C、及D。資料元件A、B、C、及D可沒有限制地代表整數、定點元件、浮點元件、或其他種類的資料。
上文所示的各資料元件A、B、C、及D係資料元件位置識別符。在本說明中,最低有效資料元件(亦即,資料元件A)在右側,且最高有效資料元件(亦即,資料元件D)在左側。具體地說,資料元件A佔據最低有效資料元件位置零(0)、資料元件B佔據次一最低有效資料元件位置一(1)、資料元件C佔據次一最高有效資料元件位置二(2)、且資料元件D佔據最高有效資料元件位置三(3)。
指令也可指定或另外指示具有複數個封裝索引的來源封裝索引運算元224。在說明範例中,當從右讀至左時,索引具有2、1、0、及2的值。此等值僅係範例。可替代地使用其他的值組合。在部分實施例中,索引可代表整數值。在部分實施例中,索引可用聚集模式或配置安排。如將於下文進一步解釋的,在部分實施例中,來源封裝索引運算元224可代表散射索引至聚集索引重新安排指令的結果,雖然本發明的範圍未受如此限制。
在說明實施例中,僅有四個資料元件且僅有四個索引。然而,在其他實施例中,可選擇性地使用更多資料元
件及/或更多索引。各來源封裝資料運算元中的資料元件或索引的數目可共同等於來源封裝資料運算元之位元的尺寸除以單一資料元件或索引之位元的尺寸。在各種實施例中,各來源封裝資料運算元的尺寸或寬度可係64位元、128位元、256位元、512位元、或1024位元,雖然本發明的範圍未受如此限制。在各種實施例中,各資料元件或索引的尺寸或寬度可係8位元、16位元、32位元、或64位元,雖然本發明的範圍未受如此限制。其他封裝資料運算元尺寸、資料元件尺寸、及索引尺寸也係合適的。在各種實施例中,可有至少四個、至少八個、至少十六個、至少三十二個、至少六十四個、或至少一百二十八個資料元件或索引在各來源封裝資料運算元中。
可回應於藉由索引的聚集指令及/或運算將具有聚集的來源資料元件的結果封裝資料運算元226產生及儲存(例如,藉由執行單元)在目的封裝資料暫存器212中。目的封裝資料暫存器可由該指令指定或另外指示。
在藉由索引的聚集指令及/或運算的情形中,使用來源封裝索引運算元224的索引選擇或聚集來源封裝資料運算元222的來源資料元件,並將選擇或聚集的來源資料元件儲存至結果封裝資料運算元226的對應結果資料元件。將索引與來源封裝資料運算元中之來源資料元件連接的第一組箭號227顯示將索引用於選擇來源封裝資料運算元中的來源資料元件位置。在部分實施例中,各索引的值可代表資料元件位置識別符以識別來源封裝資料運算元中的指
定資料元件位置。例如,如箭號227所示,「2」的索引值選擇、指引、或另外指示資料元件位置二(2)中的來源資料元件C(亦即,針對最低有效索引及最高有效索引二者)、「1」的索引值選擇、指引、或另外指示資料元件位置一(1)中的來源資料元件B、且「0」的索引值選擇、指引、或另外指示資料元件位置零(0)中的來源資料元件A。在其他實施例中,可有更多的資料元件位置(例如,至少16、32、64、或128個),且各索引可選擇資料元件位置的任何一者(例如,16、32、64、或128個的任何一個)。
將索引與結果封裝資料運算元中之結果資料元件連接的第二組箭號228顯示在運算元內之相同相對位置中的索引及結果資料元件彼此對應。此對應性可係隱含或固有的,而非明顯指定的。例如,最低有效索引可隱含地對應於最低有效結果資料元件、次一最低有效索引可隱含地對應於次一最低有效結果資料元件、次一最高有效索引可隱含地對應於次一最高有效結果資料元件、且最高有效索引可隱含地對應於最高有效結果資料元件。
可將由索引選擇或聚集的來源資料元件儲存至對應於索引的結果資料元件。例如,可將由「2」之最低有效索引值選擇的來源資料元件C儲存至對應的最低有效結果資料元件、可將由「1」之次一最低有效索引值選擇的來源資料元件B儲存至對應的次一最低有效結果資料元件、可將由「0」之次一最高有效索引值選擇的來源資料元件A儲存至對應的次一最高有效結果資料元件、並將由「2」
之最高有效索引值選擇的來源資料元件C儲存至對應的最高有效結果資料元件。
因此,在按索引聚集至暫存器的指令及/或運算的情形中,使用索引選擇或聚集來源資料元件,並將選擇或聚集的來源資料元件儲存至與索引相同的相對位置中之隱含對應的結果資料元件。如在雲狀方塊230一般所示的,第i個定位索引可選擇或另外指示將儲存在對應的第i個定位結果資料元件中的來源資料元件。
圖3係運算以實施按索引散射至暫存器的指令306之實施例的處理器300之實施例的方塊圖。在實施例中,處理器300可係或可包括在圖1的處理器100中。本文針對處理器100描述的組件、特性、及具體選擇性細節也選擇性地施用至處理器300。或者,處理器300可係或可包括在與處理器100相似或不同的處理器中。再者,處理器100可係或可包括與處理器300相似或不同的處理器。
在運算期間,處理器300可接收按索引散射至暫存器的指令306。例如,該指令可透過匯流排或其他互連從記憶體接收。該指令可代表巨集指令、組合語言指令、機器碼指令、或處理器之指令集的其他指令或控制信號。在部分實施例中,按索引散射至暫存器的指令可明顯地指定(例如,經由一或多個欄位或一組位元),或另外指示(例如,隱含指示)具有複數個封裝資料元件的來源封裝資料運算元332、可指定或另外指示具有複數個封裝索引的來源封裝索引運算元334、並可指定或另外指示將儲存結果
封裝資料運算元336的目的封裝資料暫存器335。作為一範例,指令可具有來源及/或目的運算元指定欄位以指定用於來源及/或目的運算元的封裝資料暫存器或其他儲存位置。或者,此等運算元的一或多者可選擇性係對指令係隱含的(亦即,對指令的運算碼係隱含的)。在一樣態中,來源運算元的資料可已從輸入/輸出裝置(例如,網路介面、視訊輸入裝置、無線介面、音訊輸入裝置等)接收。
再度參考至圖3,處理器包括解碼單元316。解碼單元有時也稱為解碼器。解碼單元可接收及解碼按索引散射至暫存器的指令306。解碼單元可輸出一或多個相對低階指令或控制信號(例如,一或多個微指令、微運算、微碼進入點、解碼的指令或控制信號等),其反映、代表、及/或導自相對高階的按索引散射至暫存器的指令。在部分實施例中,解碼單元可包括一或多個輸入結構(例如,埠(等)、互連(等)、介面)以接收按索引散射至暫存器的指令、與其耦接的指令識別及解碼邏輯以識別及解碼按索引散射至暫存器的指令、及與其耦接的一或多個輸出結構(例如,埠(等)、互連(等)、介面)以輸出低階指令(等)或控制信號(等)。解碼單元可使用各種不同機制實作,包括但未限於,微碼唯讀記憶體(ROM)、查找表、硬體實作、可程式化邏輯陣列(PLA)、及適於實作解碼單元的其他機制。
在部分實施例中,可選擇性地使用指令模擬器、轉譯器、型變器、解譯器、或其他指令轉換模組取代將按索引
散射至暫存器的指令直接提供至解碼單元。各種種類的指令轉換模組可用軟體、硬體、韌體、或其組合實作。在部分實施例中,指令轉換模組可位於處理器外側,諸如,分離的晶粒上及/或記憶體中(例如,靜態、動態、或運行時模擬模組)。例如,指令轉換模組可接收按索引散射至暫存器的指令,其可係第一指令集的,並可將按索引散射至暫存器的指令模擬、轉譯、型變、解譯、或另外轉換為可係第二不同指令集的一或多個對應中間指令或控制信號。可將第二指令集的一或多個中間指令或控制信號提供至解碼單元(例如,解碼單元316),其可將彼等解碼成可由處理器之原生硬體(例如,一或多個執行單元)執行的一或多個低階指令或控制信號。
再度參考圖3,處理器300也包括一組封裝資料暫存器310。各封裝資料暫存器可代表晶粒上儲存位置,其運算以儲存封裝資料、向量資料、或單指令、多資料(SIMD)資料。封裝資料暫存器可代表可為軟體及/或程式設計師所見的架構可見或架構暫存器及/或係由處理器之指令集的指令指示的暫存器以識別運算元。在給定微架構中,此等暫存器與其他非架構暫存器(例如,暫時暫存器、重排序緩衝器、引退暫存器等)成對比。封裝資料暫存器可用不同方式實作在不同微架構中,且並未受限於任何特定種類的設計。合適暫存器種類的範例包括,但未限於,專用實體暫存器、使用暫存器更名的動態配置實體暫存器、及彼等的組合。
如所示的,在部分實施例中,來源封裝資料運算元332可選擇性地儲存在第一封裝資料暫存器中、來源封裝索引運算元334可選擇性地儲存在第二封裝資料暫存器中、且目的封裝資料暫存器335可選擇性地係第三個不同的封裝資料暫存器。或者,可將記憶體位置、或其他儲存位置選擇性地用於來源運算元的一或多者。再者,在部分實施例中,用於來源運算元的封裝資料暫存器可選擇性地重使用為結果封裝資料運算元的目的。在一樣態中,來源/目的暫存器可明顯地指定一次,並隱含地或暗示地理解成用於來源封裝運算元及使用為儲存結果封裝資料運算元的目的二者。
再度參考圖3,將執行單元318與解碼單元316耦接並與封裝資料暫存器310耦接。執行單元可接收代表及/或導自按索引散射至暫存器的指令之一或多個解碼的或另外轉換的指令或控制信號。執行單元也可接收來源封裝資料運算元332及來源封裝索引運算元334。執行單元回應於及/或由於按索引散射至暫存器的指令(例如,回應於從該指令解碼的一或多個指令或控制信號)運算以將結果封裝資料運算元336儲存在由指令指示的目的封裝資料暫存器335。結果封裝資料運算元可包括複數個結果資料元件(例如,至少四個、八個、十六個、三十二個、或選擇性地更多個)。
在部分實施例中,各結果資料元件可具有其對應索引指示結果封裝資料運算元中之結果資料元件的資料元件位
置(例如,其在來源封裝索引運算元中的相同相對位置中)之來源封裝資料運算元之來源資料元件之一者的值。在部分實施例中,不係所有來源資料元件值均可儲存在結果封裝資料運算元中(例如,在重複索引的情形中)。在部分實施例中,若沒有索引指示給定的結果資料元件位置,則可將零值及合併值的一者(例如,在實施指令前最初在封裝資料暫存器中的值)選擇性地儲存在給定的結果資料元件位置中。在部分實施例中,結果可係包括任何於上文提及的變化之圖4-5所示及描述的任何結果,雖然本發明的範圍未受如此限制。
執行單元及/或處理器可包括具體或特定邏輯(例如,電晶體、積體電路、或其他可能與韌體(例如,儲存在非揮發性記憶體中的指令)及/或軟體組合的硬體),其運算以回應於及/或由於按索引散射至暫存器的指令(例如,回應於從按索引散射至暫存器的指令解碼的一或多個指令或控制信號)實施按索引散射至暫存器的指令及/或儲存結果。在部分實施例中,執行單元可包括一或多個輸入結構(例如,埠(等)、互連(等)、介面)以接收來源運算元、耦接於其間的電路或邏輯以接收及處理來源運算元並產生結果運算元、及耦接於其間的一或多個輸出結構(例如,埠(等)、互連(等)、介面)以輸出結果運算元。在部分實施例中,執行單元可包括圖5所示及描述的電路或邏輯,其係合適的微結構配置的說明性範例,雖然本發明的範圍並未受如此限制。
有利地,可選擇性地實施按索引散射至暫存器的運算。例如,此種運算常傾向於在排序、集合聯集、稀疏線性代數、及機器學習等演算法中係有用的,雖然本文揭示的指令係可用於其他通用目的的通用指令。在一樣態中,此種指令可協助互補既存的按索引聚集至暫存器的指令及/或微架構,且因此協助提供可傾向於使部分演算法更易於實作及/或向量化的對稱性。實施按索引散射至暫存器的運算的另一可能方式係使用指令序列。然而,替代地使用結構指令可提供硬體加速以實現比一般可能會使用的軟體實作更佳的效能。
為避免混淆描述,已顯示並描述相對簡單的處理器300。然而,處理器可選擇性地包括其他處理器組件。例如,各種不同實施例可包括圖12-14任一者所示及描述之組件的各種不同組合及組態。彼此互動的處理器的所有組件可彼此耦接以允許彼等如預期地運算。
圖4係描繪可回應於按索引散射至暫存器的指令(例如,指令106或指令306)之實施例實施的按索引散射至暫存器的運算438之範例實施例的方塊圖。運算可由本文揭示的各種處理器的任一者實施。
指令可指定(例如,明顯指定)或另外指示(例如,隱含指示)具有複數個封裝資料元件的來源封裝資料運算元432。在本說明中,當從右讀至左時,將資料元件標示為資料元件A、B、C、及D。資料元件A、B、C、及D可沒有限制地代表整數、定點元件、浮點元件、或其他種類
的資料。在本說明中,最低有效或最低階位置顯示在右方且最高有效或最高階位置顯示在左方。
指令也可指定或另外指示具有複數個封裝索引的來源封裝索引運算元432。在說明範例中,當從右讀至左時,索引具有2、1、0、及2的值。此等值僅係範例。可替代地使用其他的值組合。在部分實施例中,索引可代表整數值。在部分實施例中,索引可用散射模式或配置安排(例如,根據使用索引的演算法或軟體)。
在說明實施例中,僅有四個資料元件且僅有四個索引。然而,在其他實施例中,可選擇性地使用更多資料元件及/或更多索引。各來源封裝資料運算元中的資料元件或索引的數目可共同等於來源封裝資料運算元之位元的尺寸除以單一資料元件或索引之位元的尺寸。在各種實施例中,各來源封裝資料運算元的尺寸或寬度可係64位元、128位元、256位元、512位元、或1024位元,雖然本發明的範圍未受如此限制。在各種實施例中,各資料元件或索引的尺寸或寬度可係8位元、16位元、32位元、或64位元,雖然本發明的範圍未受如此限制。其他封裝資料運算元尺寸、資料元件尺寸、及索引尺寸也係合適的。在各種實施例中,可有至少四個、至少八個、至少十六個、至少三十二個、至少六十四個、或至少一百二十八個資料元件或索引在各來源封裝資料運算元中。
可回應於藉由索引的散射指令及/或運算將具有散射的來源資料元件的結果封裝資料運算元436產生及儲存
(例如,藉由執行單元418)在目的封裝資料暫存器212中。可將來源封裝資料及索引運算元輸入至執行單元,且執行單元回應於該指令/運算可輸出結果封裝資料運算元至目的封裝資料暫存器,其可由該指令指定或另外指示。
在藉由索引的散射指令及/或運算的情形中,使用來源封裝索引運算元434的索引選擇待散射或儲存的來源封裝資料運算元的對應來源資料元件處的結果封裝資料運算元中的結果資料元件。將索引與來源封裝資料運算元中之來源資料元件連接的第一組箭號439顯示在運算元內之相同相對位置中的索引及來源資料元件彼此對應。例如,最低有效(在此情形中,最右側)索引可隱含地對應於最低有效(在此情形中,最右側)來源資料元件A、次一最低有效索引可隱含地對應於次一最低有效來源資料元件B、次一最高有效索引可隱含地對應於次一最高有效來源資料元件C、且最高有效(在此情形中,最左側)索引可隱含地對應於最高有效(在此情形中,最左側)來源資料元件D。此對應性可係隱含或固有的,而非明顯指定的。在部分實施例中,隱含或固有對應性對該指令可係固定的(例如,對指令的運算碼固定),取代係彈性的或由指令明顯地指定。此種隱含或固有對應性可代表性地協助避免需要產生及使用額外的明顯控制。
將索引與結果封裝資料運算元中的結果資料元件連接的第二組箭號440顯示將索引用於選擇結果封裝資料運算元中的結果資料元件(例如,結果資料元件位置)。在部分
實施例中,各索引的值可代表資料元件位置識別符以識別結果封裝資料運算元中的給定的結果資料元件位置。在本說明中,最低有效結果資料元件係在右側,且最高有效結果資料元件係在左側。上文顯示各結果資料元件係資料元件位置識別符(例如,當從右讀至左時,資料元件位置識別符0、1、2、及3)。
在此範例中,如箭號440所示的,「2」的最低有效(在此情形中,最右側)索引值選擇、指引、或另外指示在資料元件位置二(2)的結果資料元件,「1」的次一最低有效(在此情形中,最右側下一個)索引值指示在資料元件位置一(1)的結果資料元件。繼續,「0」的次一最高有效(在此情形中,最左側下一個)索引值指示在資料元件位置零(0)的結果資料元件,且「2」的最高有效(在此情形中,最左側)索引值指示在資料元件位置二(2)的結果資料元件。
可將對應於索引的來源資料元件(例如,在與運算元內之索引相同的相對位置中)散射或儲存至由索引選擇或指示的結果資料元件。例如,可將對應於「2」之最低有效(在此情形中,最右側)索引值的來源資料元件A儲存至在資料元件位置二(2)之選擇的結果資料元件(除了在如下文進一步討論的重複索引的情形中)、可將對應於「1」之次一最低有效(在此情形中,最右側下一個)索引值的來源資料元件B儲存至在資料元件位置一(1)之選擇的結果資料元件、可將對應於「0」之次一最高有效(在此情形中,最左側下一個)索引值的來源資料元件C儲存至在資料元
件位置零(0)之選擇的結果資料元件、及可將對應於「2」之最高有效(在此情形中,最左側)索引值的來源資料元件D儲存至在資料元件位置二(2)之選擇的結果資料元件。如所示的,當從右讀至左時,結果封裝資料運算元可儲存資料元件C、B、D、及*。
因此,在按索引散射至暫存器的指令及/或運算的情形中,使用索引選擇或識別結果資料元件(例如,結果資料元件位置),並將與運算元在相同的相對位置中之隱含地對應的來源資料元件儲存至由索引指示的結果資料元件。如在雲狀方塊442一般所示的,在按索引散射至暫存器的指令及/或運算的情形中,第i個定位索引可選擇或另外指示待儲存對應的第i個定位來源資料元件的結果資料元件。暫存器散射指令的索引可指定將對應的來源資料元件推至或散射至目的封裝資料暫存器中的何處。因此,按索引散射至暫存器的指令及/或運算與按索引聚集至暫存器的指令及/或運算的不同在於索引隱含地對應於來源封裝資料運算元而非結果封裝資料運算元,及索引選擇結果封裝資料運算元而非來源封裝資料運算元中的位置。
在部分實施例中,可有一或多組重複的索引。各組重複索引可具有相同值或至少指示相同的結果資料元件(例如,若忽略不用於結果資料元件選擇之索引的特定較高有效位元)。例如,如說明範例實施例所示,最低有效(在此情形中,最右側)索引以及最高有效(在此情形中,最左側)索引兩者具有「2」的相同值。由於索引彈性地對應於按
索引散射至暫存器的指令及/或運算中的結果資料元件,若有具有相同值的重複索引,則各重複索引可為彼等的對應來源資料元件指示相同的結果資料元件位置。例如,在說明實施例中,具有「2」之值的二索引可選擇在資料元件位置二(2)的相同結果資料元件以儲存彼等的對應來源資料元件。然而,通常僅可將來源資料元件的一者儲存至指示的結果資料元件。在部分實施例中,可使用一致性策略以決定將何重複索引用於儲存至指示的結果資料元件。例如,在部分實施例中,可選擇性地將給定值的最高有效重複索引選擇成將其對應的來源資料元件寫至由該給定值指示的指示的結果資料元件。有利地,此種慣例可與其他指令所使用的慣例相似,諸如,散射至記憶體指令、及向量衝突指令等,並因此可潛在地更與使用此種指令的演算法相容。或者,可依需要,可選擇性地將給定值的最低有效重複索引選擇成將其對應的來源資料元件寫至由該給定值指示的指示的結果資料元件。
另外,重複索引的存在可傾向於產生散射空缺或「空洞」,其可代表沒有來源資料元件儲存至其的結果資料元件。例如,假設輸入及輸出元件的數目匹配,則各重複索引可導致對應的散射空缺。在說明範例中,在資料元件位置三(3)的最高有效(在此情形中,最左側)結果資料元件具有星號(*)以指示此種散射空缺或空洞。如所示的,沒有索引具有三(3)的值,且因此沒有箭號440指向在資料元件位置三(3)的結果資料元件。換言之,沒有索引可企圖
將來源資料元件散射至此種散射空缺或空洞。在部分實施例中,按索引散射至暫存器的指令可指示將儲存在此種散射洞缺或空洞中之值的種類。例如,在部分實施例中,此種散射空缺可回應於實施按索引散射至暫存器的指令而選擇性地歸零(例如,將結果資料元件的所有位元清除為二進位零)。或者,在其他實施例中,可回應於實施按索引散射至暫存器的指令,將相同封裝資料暫存器中之相同資料元件位置中的既存值選擇性地保存或保留在散射空缺的位置中。例如,可將實施指令前最初在封裝資料暫存器中之資料元件的值合併至結果封裝資料運算元中的散射空缺位置中。
仔細考慮實作按索引散射至暫存器的指令的不同方式。在部分實施例中,此種指令可藉由邏輯實作,其運算以:(a)識別任何重複索引組各者中的最高有效索引;(b)將用於識別的最高有效索引的對應來源資料元件儲存至由最高有效重複索引識別的結果資料元件;及(c)將用於任何不重複索引的對應來源資料元件儲存至由此等不重複索引識別的結果資料元件;及(d)將零或合併值儲存至任何散射空缺。此可在不同實施例中以不同方式完成。為進一步說明特定觀念,將結合圖5描述適當方法的詳細範例實施例,雖然本揭示發明的範圍未受如此限制。
圖5係適於實作按索引散射至暫存器的指令之實施例的按索引散射至暫存器的執行單元518之詳細範例實施例的方塊圖。執行單元可包括輸入埠、輸入介面、或其他結
構(等)以接收來源封裝索引運算元534及來源封裝資料運算元532。在此範例中,為易於說明,此等來源封裝運算元各者僅具有四個個別索引或資料元件,雖然可選擇性地將描述於本文它處之其他數目的資料元件及索引(例如,八、十六、三十二、六十四、一百二十八個等)使用在其他實施例中。在說明實施例中,四個索引具有從右至左之2、1、0、及2的值,雖然彼等僅係範例。
執行單元包括全交叉開關或其他適當的互連電路548以將四個索引各者提供至四個比較器C0、C1、C2、C3各者。例如,可將四個索引各者提供至第一比較器C0、可將四個索引各者提供至第二比較器C1、並依此類推。各比較器可運算以將各索引與對應於比較器之不同的對應資料元件位置識別符比較。資料元件位置識別符的數目可與結果資料元件的數目相同(例如,在此情形中係四個)。如在本說明中所標示的,四個資料元件位置識別符可具有0、1、2、及3的值。如所示的,第一比較器(C0)可對應於零(0)之對應資料元件位置識別符值,並可將四個輸入索引各者與其比較、第二比較器(C1)可對應於一(1)之對應資料元件位置識別符值,並可將四個輸入索引各者與其比較、第三比較器(C2)可對應於二(2)之對應資料元件位置識別符值,並可將四個輸入索引各者與其比較、且第四比較器(C3)可對應於三(3)之對應資料元件位置識別符值,並可將四個輸入索引各者與其比較。
在說明實施例中,比較器可運算以比較索引,且在重
複索引的情形中,對各結果資料元件位置仲裁或另外識別其值與結果資料元件位置匹配的最高有效索引。或者,在其他實施例中,如先前所描述的,可選擇性地將最低有效索引使用在重複的情形中。在部分實施例中,此等比較可選擇性地僅基於索引之最低有效位元的子集,而非基於索引的全部位元。此通常可協助改善實施此等比較的效能及/或協助減少硬體的複雜度以實施比較。例如,可選擇性地僅使用各索引的最低有效位元(log2VLEN位元),其中VLEN代表結果封裝資料運算元中的結果資料元件的數目(例如,512位元封裝資料運算元及四位元組(dword)索引係4位元)。或者,若有需要,則可選擇性地比較索引的所有位元。若偵測到匹配,則各比較器可運算以輸出一組第一信號550的不同對應一者以指示與對應資料元件位置識別符匹配之最高有效索引的位置。
例如,第一比較器C0可將四個索引2、1、0、及2各者與零(0)之資料元件位置識別符值比較,並決定僅有次一最高有效索引(亦即,在索引位置2)具有零(0)的匹配索引值。第一比較器C0可回應地輸出第一信號550的對應一者以指示2的值,其係零(0)之匹配索引值在來源封裝索引運算元中所在的位置。第二比較器C1也可將四個索引2、1、0、及2各者與一(1)之資料元件位置識別符值比較,並決定僅有次一最低有效索引(亦即,在索引位置1)具有一(1)的匹配索引值。第二比較器C1可回應地輸出第一信號550的對應一者以指示1的值。第三比較器C2
可也比較四個索引2、1、0、及2各者與二(2)之資料元件位置識別符值、決定最低有效索引(亦即,在索引位置0)及最高有效索引(亦即,在索引位置3)二者具有二(2)的匹配索引值、並選擇二個重複索引的最高有效者(亦即,在索引位置3)。第三比較器C2可回應地輸出第一信號550的對應一者以指示3的值。第四比較器C3可將四個索引2、1、0、及2各者與三(3)的資料元件位置識別符值比較,並決定沒有索引與此資料元件位置識別符匹配。第四比較器C3可回應地輸出第一信號550的對應一者以指示沒有匹配及/或可省略輸出第一信號。
執行單元也包括四個不匹配偵測單元N0、N1、N2、N3,彼等各者對應於四個比較器C0-C3的不同一者。各不匹配偵測單元可耦接以接收從對應比較器輸出的對應第一信號,並可運算以決定其是否指示偵測到至少一個匹配索引。各不匹配偵測單元可運算以輸出一組第二信號552的對應一者以指示是否至少一個匹配索引由對應比較器偵測到。
例如,因為第一比較器C0偵測到匹配索引值,故不匹配偵測單元N0可輸出第二信號552的對應一者以指示偵測到匹配。相似地,因為第二比較器C1偵測到匹配索引值,故不匹配偵測單元N1可輸出第二信號552的對應一者以指示偵測到匹配。相似地,因為第三比較器C2偵測到匹配索引值,故不匹配偵測單元N2可輸出第二信號552的對應一者以指示偵測到匹配。相反地,因為第四比
較器C3未偵測到匹配索引值(例如,回想沒有索引具有三(3)的值),故不匹配偵測單元N3可輸出第二信號552的對應一者以指示未偵測到匹配。
執行單元也包括第一組四個多工器或其他選擇器S0、S1、S2、及S3,彼等各者對應於四個結果資料元件的不同一者。可將來源封裝資料運算元532的四個來源資料元件A、B、C、及D輸入至全交叉開關或其他適當的互連電路。將互連電路耦接以將四個來源資料元件A-D各者提供至四個選擇器S0-S3各者。例如,可將A-D各者提供至第一選擇器S0、可將A-D各者提供至第二選擇器S1、並依此類推。
如所示的,將四個選擇器S0-S3各者耦接以從四個比較器C0-C3之不同的對應一者接收第一信號550之不同的對應一者。例如,S0可從C0接收第一信號,S1可從C1接收第一信號、並依次類推。此等第一信號可代表至選擇器S0-S3的選擇控制信號,其運算以控制選擇器選擇及輸出在由第一信號指示之資料元件位置中的四個來源資料元件之所指示的一者。例如,因為來自第一比較器C0的第一信號550指示2的值,故可控制第一選擇器S0選擇及輸出來源封裝資料運算元532中之資料元件位置二(2)中的資料元件C。相似地,因為來自第二比較器C1的第一信號550指示1的值,故可控制第二選擇器S1選擇及輸出來源封裝資料運算元532中之資料元件位置一(1)中的資料元件B。相似地,因為來自第三比較器C2的第一信
號550指示3的值,故可控制第三選擇器S2選擇及輸出來源封裝資料運算元中之資料元件位置三(3)中的資料元件D。
執行單元也包括第二組四個多工器或其他選擇器M0、M1、M2、M3,彼等各者對應於第一組選擇器S0-S3的不同一者及/或結果資料元件的不同一者。第二組選擇器M0-M3各者具有耦接以從選擇器S0-S3的對應一者接收選擇及輸出之來源資料元件的第一輸入。例如,至選擇器M0的第一輸入可接收資料元件C、至選擇器M1的第一輸入可接收資料元件B、至選擇器M2的第一輸入可接收資料元件D等。第二組選擇器M0-M3各者也具有耦接以接收零值的第二輸入。或者,在另一實施例中,在合併而非歸零的情形中,各第二輸入可選擇性地耦接以接收將用於儲存結果封裝資料運算元536的封裝資料暫存器之對應資料元件位置中的初值。
如所示的,將第二組選擇器M0-M3各者耦接以從四個不匹配偵測器N0-N3之不同的對應一者接收第二信號552之不同的對應一者。例如,M0可從N0接收第二信號552、M1可從N1接收第二信號552、M3可從N3接收第二信號552等。此等第二信號552可代表選擇控制信號,其運算以控制第二組選擇器M0-M3各者以選擇及輸出對應的輸入資料元件或輸入零值(例如,或在合併的情形中,輸入的合併值)至對應的結果資料元件。例如,當第二信號指示偵測到匹配索引時,可選擇及儲存輸入資料元
件至結果封裝資料元件。相反地,當第二信號指示未偵測到匹配索引時,選擇及儲存零值(或合併值)至結果封裝資料元件。如圖所示,因為匹配係由第一至第三比較器C0-C2各者所偵測,資料元件位置0、1、及2中的三個最低有效結果資料元件分別儲存輸入資料元件C、B、及D的值。然而,因為第四比較器C3未偵測到匹配,將零值儲存至資料元件位置3中的最高有效結果資料元件。
在一樣態中,第一組選擇器S0-S3及將來源封裝資料元件提供至其的互連可具有與可用於實作變換、排列、或其他按索引聚集至暫存器的指令及/或運算之邏輯相似的邏輯。然而,至第一組選擇器的控制信號可經由比較決定(例如,比較器C0-C3及第一信號),取代更直接地來自來源封裝聚集索引運算元中的聚集索引。再者,第二組選擇器M0-M3可具有與另外用於加入遮罩以實作遮罩的變換、遮罩的排列、或其他遮罩的按索引聚集至暫存器的指令及/或運算之邏輯相似的邏輯。
待理解此僅係合適執行單元的一說明範例。仔細考慮說明的執行單元上的變化。例如,可修改比較器C0-C3以合併與針對不匹配偵測單元所描述之相似的邏輯,使得彼等可產生及輸出所描述的第一信號及第二信號二者。再者,第一及第二組選擇器可選擇性地組合成單一組選擇器,其另外接收零值(或合併值)並在輸入的來源資料元件及零值(或合併值)之中選擇。其他變化對熟悉本技術的人士將係明顯的,並具有本揭示發明的效益。本發明的範圍
未限於實作該邏輯以實現按索引散射至暫存器的指令及/或運算的任何已知方式。
也仔細考慮其他方法。例如,一種替代方法可使用排序邏輯(例如,排序網路)實作,其可將來源索引處理為「鍵」、將索引位置處理為「值」、並可運算以依序排序鍵-值對以排序索引。例如,考慮具有下列值的來源索引:{0,2,3,7,1,4,5,6}
索引位置識別符可與此等來源索引關聯以將可代表鍵:值對的索引:位置對提供如下:{0:0,2:1,3:2,7:3,1:4,4:5,5:6,6:7}
此種鍵:值對可基於鍵(亦即,索引)排序以產生:{0:0,1:4,2:1,3:2,4:5,5:6,6:7,7:3}
然後,值(亦即,位置識別符)可藉由移除鍵(亦即,索引)而以相同次序擷取及維持以得到如下之重新安排的索引:{0,4,1,2,5,6,7,3}
此基於排序的實作可潛在地提供比圖5所示之方式更少的總比較的優點,雖然部分由於使該等比較相關的方式而不必然提供較短的延遲。另外,此種基於排序的方法可在來源索引中的空缺及重複上強加更多限制。例如,若來源索引具有j個i的重複,可需要有在i+1、...、i+j-1的空缺。例如,{0,2,3,7,1,3,5,6}可代表有效輸入,因為二個3的重複索引,因此在「4」有空缺。假設將重複
遮蔽掉,此係有效輸入,因為排序將產生{0,4,1,2,5,6,7,3},且執行此等輸出索引的排列指令正確地實作輸入索引的反排列。然而,{0,2,3,7,1,3,4,6}可代表無效輸入,因為對應排序輸出{0,4,1,2,5,6,7,3}的排列,故第六個輸入將去到第五個資料元件位置而非去到第四個資料元件位置(假設以基於零的索引)。
圖6係實施按索引散射至暫存器的指令之實施例的方法660之實施例的方塊流程圖。在各種實施例中,該方法可藉由處理器、指令處理設備、或其他數位邏輯裝置實施及/或在上述者內實施。在部分實施例中,圖6的方法可藉由圖1及/或圖3的處理器實施及/或在其內實施。本文針對圖1及/或圖3之處理器描述的組件、特性、及具體選擇性細節也選擇性地施用至方法660。或者,方法660可藉由相似或不同處理器或設備實施及/或在其中實施。再者,圖1及/或圖3的處理器可實施與方法660相同、相似、或不同的方法。
該方法包括在方塊661接收按索引散射至暫存器的指令。在各種樣態中,該指令可在處理器或其一部分接收(例如,指令提取單元、解碼單元、匯流排介面單元等)。在各種樣態中,該指令可從處理器外及/或晶粒外來源(例如,從記憶體、互連等)、或從處理器上及/或晶粒上來源(例如,從指令快取記憶體、指令佇列等)接收。該指令可指定或另外指示具有複數個來源資料元件的來源封裝資料運算元,並可指定或另外指示具有複數個索引的來源封裝
索引運算元。在部分實施例中,各索引可對應於在運算元內之相同相對位置上的來源資料元件的不同一者。該指令也可指定或另外指示目的封裝資料暫存器。
在方塊662,可回應於及/或由於按索引散射至暫存器的指令將結果封裝資料運算元儲存在目的封裝資料暫存器中。結果封裝資料運算元可包括複數個結果資料元件。在部分實施例中,各結果資料元件可具有其對應索引指示結果封裝資料運算元中之結果資料元件的資料元件位置(例如,來源封裝索引運算元中的相同相對位置中)之來源資料元件之一者的值。
在部分實施例中,不係所有來源資料元件值均可儲存在結果封裝資料運算元中(例如,在重複的情形中)。在部分實施例中,在重複的情形中,各結果資料元件可具有其對應索引指示結果資料元件位置之最高有效(或替代地最低有效)來源資料元件的值。在部分實施例中,若沒有索引指示給定的結果資料元件位置,可將零值或合併值的任一者(例如,在實施指令前最初在封裝資料暫存器中的值)選擇性地儲存在給定的結果資料元件位置中。在部分實施例中,結果可係包括任何於上文提及的變化之圖4-5所示及描述的任何結果,雖然本發明的範圍未受如此限制。
所說明的方法包含架構運算(例如,從軟體觀點可見的運算)。在其他實施例中,該方法可選擇性地包括一或多個微架構運算。例如,可提取、解碼、無序排程該指令、可存取來源運算元、執行單元可實施微架構運算以實
作該指令等。在部分實施例中,實作該指令的微架構運算可選擇性地包括圖4及/或圖5所示或描述的任何運算,雖然本發明的範圍未受如此限制。
在部分實施例中,資料元件可代表常由從記憶體聚集及/或散射至記憶體指令使用的該種記憶體位址有關索引。在此種情形中,可將限制置於此種記憶體位址有關索引的值上。然而從記憶體聚集及/或散射至記憶體指令可允許更大範圍,可將施用此等指令的記憶體位址有關索引限制在較小範圍,諸如,不超過SIMD寬度及/或結果中之資料元件的數目。在一樣態中,可僅使用記憶體位址有關索引的log2VLEN位元。在另一樣態中,能選擇性地實施檢查以決定記憶體位址有關索引是否超出邊界,且若如此,傳訊異常情況(例如,失敗)。
圖7係運算以實施資料重新安排指令708之實施例的處理器700之實施例的方塊圖。在實施例中,處理器300可係圖1的處理器100及/或圖3的處理器300,或可包括於其中。本文針對處理器100及/或300描述的組件、特性、及具體選擇性細節也選擇性地施用至處理器700。或者,處理器700可係或可包括在與處理器100及300相似或不同的處理器中。再者,處理器100及300可係或可包括與處理器700相似或不同的處理器。
在運算期間,處理器700可接收資料重新安排指令708。在部分實施例中,資料重新安排指令可明顯地指定(例如,經由一或多個欄位或一組位元),或另外指示(例
如,隱含地指示)具有複數個來源封裝資料元件(例如,至少四個、八個、十六個、三十二個、或選擇性地更多個)的來源封裝資料運算元770。在部分實施例中,來源資料元件可係以散射模式配置的索引,雖然本發明的範圍未受如此限制。在其他實施例中,來源資料元件可係以聚集模式配置的索引,雖然本發明的範圍未受如此限制。資料重新安排指令也可明顯地指定或另外指示回應於正在實施的指令將儲存結果封裝資料運算元774的目的儲存位置774。作為一範例,指令可具有來源及/或目的運算元指定欄位以指定用於來源及/或目的運算元的封裝資料暫存器或其他儲存位置。或者,此等運算元的一或多者可選擇性係對指令係隱含的(亦即,對指令的運算碼係隱含的)。作為一個具體範例,來源/目的儲存位置可明顯地指定一次並隱含或暗示地理解成用於來源封裝資料運算元及目的儲存位置以儲存結果封裝資料運算元。
再度參考圖7,處理器700也包括一組封裝資料暫存器710。封裝資料暫存器710可選擇性地相似於、或相同於先前描述的封裝資料暫存器310。如所示的,在部分實施例中,來源封裝資料運算元770可選擇性地儲存在該組封裝資料暫存器中(例如,在第一封裝資料暫存器中),且目的儲存位置774也可選擇性地在該組封裝資料暫存器中(例如,第一封裝資料暫存器或不同的封裝資料暫存器任一者)。或者,可將記憶體位置、或其他儲存位置選擇性地用於來源及目的運算元的一或多者。
在部分實施例中,來源封裝資料運算元770的各來源資料元件可具有對應的來源資料元件值,諸如,整數索引值以指示資料元件位置或另一數值。在部分實施例中,各來源資料元件也可具有對應的來源資料元件位置。在一樣態中,來源資料元件資料可相對於來源封裝資料運算元的第一端(例如,最低有效端或最高有效端)。例如,最低有效來源資料元件可具有最低編號的位置(例如,0)、及次一最低有效來源資料元件可具有次一最低編號的位置(例如,1)等等。
再度參考至圖7,處理器包括解碼單元716。該解碼單元可接收及解碼資料重新安排指令708。解碼單元716可選擇性地相似於或相同於先前描述的解碼單元316。又,如先前提及的,資料元件重新安排指令也可選擇性地由指令轉換器轉換為然後可由解碼單元解碼的一或多個其他指令。
執行單元718與解碼單元716耦接並與封裝資料暫存器710耦接。執行單元718可選擇性地相似於或相同於先前描述的執行單元718。執行單元可接收代表及/或導自資料重新安排指令之一或多個解碼的或另外轉換的指令或控制信號。執行單元也可接收來源封裝資料運算元770。執行單元可回應於及/或由於資料重新安排指令(例如,回應於自其解碼的一或多個指令或控制信號)運算以將結果封裝資料運算元772儲存在目的儲存位置774。結果封裝資料運算元可包括複數個結果資料元件(例如,至少四個、
八個、十六個、三十二個、或選擇性地更多個)。
在部分實施例中,各結果資料元件可具有結果資料元件值及相對於結果封裝資料運算元之第一端(例如,最低有效端或最高有效端)的結果資料元件位置。在部分實施例中,相同端(例如,最低有效端)可用於來源封裝資料運算元及結果封裝資料運算元二者作為相對資料元件位置的參考點。
在各實施例中,各結果資料元件可具有等於其最接近來源封裝資料運算元之一端的來源資料元件之來源資料元件位置的結果資料元件值,只要至少一個來源資料元件具有等於結果資料元件之結果資料元件位置的來源資料元件值,其來源資料元件值等於結果資料元件的結果資料元件位置。在部分實施例中,對來源封裝資料運算元之一端的參考可係來源封裝資料運算元的最高有效端,或替代地係來源封裝資料運算元的最低有效端。相反地,在部分實施例中,當沒有來源資料元件具有等於結果資料元件之結果資料元件位置的來源資料元件值時,各來源資料元件可具有等於替代值的結果資料元件值。
合適替代值的一範例係零值。合適替代值的另一範例係合併值(例如,恰在資料元件重新安排指令執行之前儲存在目的儲存位置中之對應資料元件位置中的值)。合適替代值的另一範例係負值(例如,任何期望負整數值)。合適替代值的另一範例係大值(例如,大於會使用為索引之值及/或大於來源封裝資料運算元中的資料元件之數目的
值)。或者,可將各種其他種類的值使用為替代值。在部分實施例中,結果資料元件可係以相對於其係以按索引散射至暫存器的模式配置的來源封裝資料運算元之索引的按索引聚集至暫存器的模式配置的索引,雖然本發明的範圍未受如此限制。在其他實施例中,結果資料元件可係以相對於其係以按索引聚集至暫存器的模式配置的來源封裝資料運算元之索引的按索引散射至暫存器的模式配置的索引,雖然本發明的範圍未受如此限制。在部分實施例中,結果封裝資料運算元可係圖8-10所示及描述的任何運算元,包括任何於上文提及的變化,雖然本發明的範圍未受如此限制。
圖8係描繪可回應於散射索引至聚集指數重新安排指令(例如,指令108及/或708)之實施例實施的散射索引至聚集索引重新安排運算876之範例實施例的方塊圖。運算可藉由本文揭示之各種處理器(例如,處理器100及/或700)的任一者實施。
指令可指定(例如,明顯指定)或另外指示(例如,隱含指示)具有複數個來源資料元件的來源封裝資料運算元870。各來源資料元件具有來源資料元件值及相對於來源封裝資料運算元之端的來源資料元件位置。在本說明中,最低有效或最低階位置顯示在右方且最高有效或最高階位置顯示在左方。在說明範例中,當從右讀至左時(例如,最低有效至最高有效位置),來源資料元件值係2、1、0、及2。在說明範例中,從右至左(例如,相對於最低有效
端)的來源資料元件位置係0、1、2、及3。來源資料元件可沒有限制地代表整數、定點元件、浮點元件、或其他種類的資料。在部分實施例中,來源資料元件值可代表整數索引(例如,用於藉由索引的散射運算),雖然本發明的範圍未受如此限制。
在說明實施例中,僅有四個來源資料元件。然而,在其他實施例中,可選擇性地使用更多個來源資料元件。來源封裝資料運算元中之來源資料元件的數目可通常等於來源封裝資料運算元之位元的尺寸除以單一資料元件之位元的尺寸。在各種實施例中,來源封裝資料運算元的尺寸或寬度可係64位元、128位元、256位元、512位元、或1024位元,雖然本發明的範圍未受如此限制。在各種實施例中,各資料元件的尺寸或寬度可係8位元、16位元、32位元、或64位元,雖然本發明的範圍未受如此限制。其他封裝資料運算元尺寸及資料元件尺寸也係合適的。在各種實施例中,可有至少四個、至少八個、至少十六個、至少三十二個、至少六十四個、或至少一百二十八個資料元件在來源封裝資料運算元中。
可回應於指令及/或運算將結果封裝資料運算元872產生及儲存(例如,藉由執行單元818)在目的儲存位置中。可將來源封裝資料運算元輸入至執行單元(例如,從封裝資料暫存器),且執行單元可回應於指令/運算將結果封裝資料運算元產生及儲存至目的儲存位置(例如,封裝資料暫存器)。結果封裝資料運算元可具有複數個結果資
料元件(例如,與來源封裝資料運算元相同數目的資料元件)。在此說明範例中,結果封裝資料運算元僅具有四個結果資料元件。
在部分實施例中,各結果資料元件可具有結果資料元件值及相對於結果封裝資料運算元之端的結果資料元件位置。在本說明中,最低有效或最低階位置顯示在右方且最高有效或最高階位置顯示在左方。在說明範例中,當從右讀至左時(例如,最低有效至最高有效位置),結果資料元件值係2、1、3、及*,其中星號(*)可代表替代值。在說明範例中,從右至左(例如,相對於最低有效端)的結果資料元件位置係0、1、2、及3。來源資料元件可沒有限制地代表整數、定點元件、浮點元件、或其他種類的資料。在部分實施例中,來源資料元件值可代表整數索引(例如,用於藉由索引的聚集運算),雖然本發明的範圍未受如此限制。
在各實施例中,各結果資料元件可具有等於其最接近來源封裝資料運算元之一端的來源資料元件之來源資料元件位置的結果資料元件值,只要至少一個來源資料元件具有等於結果資料元件之結果資料元件位置的來源資料元件值,其來源資料元件值等於結果資料元件的結果資料元件位置。例如,第一箭號879顯示來源資料元件位置二(2)的次一最高有效來源資料元件(亦即,右側第三個)具有零(0)的來源資料元件值,其與最低有效結果資料元件之零(0)的結果資料元件位置匹配(例如,等於)。因此,如第二
箭號880所示,最低有效結果資料元件可具有二(2)的結果資料元件值,其等於次一最高有效來源資料元件之二(2)的來源資料元件位置。作為另一範例,第三箭號881顯示來源資料元件位置三(3)的來源資料元件具有二(2)的來源資料元件位置值,其與次一最高有效結果資料元件(亦即,右側第三個)之二(2)的結果資料元件位置匹配(例如,等於)。因此,如第四箭號882所示,次一最高有效結果資料元件可具有三(3)的結果資料元件值,其等於最高有效來源資料元件之三(3)的來源資料元件位置。
在部分實施例中,可有具有等同或重複的來源資料元件值的一或多組來源資料元件。例如,如說明範例實施例中所示的,最低有效(在此情形中,最右側)來源資料元件以及最高有效(在此情形中,最左側)來源資料元件具有二(2)的來源資料元件值。然而,可僅將一值儲存至結果資料元件位置二(2)中的結果資料元件。在部分實施例中,為決定其應為何者,可使用以下慣例。例如,可選擇最接近來源封裝資料運算元之一端的來源資料元件。例如,如說明範例中所示的,可選擇最接近來源封裝資料運算元之最高有效端的來源資料元件。此種慣例可與其他指令所使用的慣例相似,諸如,散射至記憶體指令、及向量衝突指令等,並因此可潛在地更與使用此種指令的演算法相容,但不係必要的。如藉由「X」所示的,經由在次一最高有效結果資料元件中的值零(0),在此範例中,不將零(0)的資料元件位置儲存至次一最高有效結果資料元件。更確切
地說,在此實施例中,選擇來源資料元件的來源資料元件位置,其最接近來源封裝資料運算元的最高有效端,於是取代最低有效資料元件使用最高有效來源資料元件的來源資料元件位置。或者,若有需要,可選擇性地選擇最接近來源封裝資料運算元的最低有效端的來源資料元件。
另外,重複的來源資料元件值的存在可傾向於產生空缺或「空洞」,其可代表沒有來源資料元件值等於其的結果資料元件位置。例如,假設來源及結果元件的數目匹配,各重複的來源資料元件值可傾向於導致對應的結果資料元件空缺。在說明範例中,在資料元件位置三(3)的最高有效(在此情形中,最左側)結果資料元件具有星號(*)以指示此種空缺或空洞。如所示的,沒有來源資料元件具有三(3)的來源資料元件值,或換言之,2、1、0、或2均不等於3。在部分實施例中,替代值可儲存在各此種空缺或空洞中。結合圖7於先前描述之替代值的種類通常係合適的。
再度參考圖8,在部分實施例中,可回應於指令及/或運算將選擇性的結果遮罩運算元878產生及儲存(例如,藉由執行單元818)在目的儲存位置中。在部分實施例中,目的儲存位置可係一組架構遮罩暫存器(例如,封裝資料運算遮罩暫存器114,本文它處描述的k遮罩暫存器等)。或者,可選擇性地使用通用暫存器、封裝資料暫存器、或另一儲存位置。結果遮罩運算元可具有複數個遮罩元件(例如,與結果封裝資料運算元中的資料元件數相同的遮
罩元件數)。在此說明範例中,結果遮罩運算元具有四個遮罩元件。
在部分實施例中,遮罩運算元可代表封裝資料運算遮罩運算元,其可藉由後續的遮罩的封裝資料指令指示以實施遮罩的封裝資料運算。遮罩運算元在本文中也可簡單也稱為運算遮罩、述詞遮罩、或遮罩。該遮罩可代表述詞運算元或條件控制運算元,其可用於推斷、條件地控制、或遮罩是否將實施對應運算及/或是否將儲存對應結果。在部分實施例中,遮罩或推斷可在每資料元件粒度上,使得可分開及/或與它者無關地推斷或條件地控制不同對的對應資料元件上的運算。遮罩可包括多個遮罩元件、述詞元件、或條件控制元件。在一樣態中,遮罩元件可用一對一對應性包括在對應的來源資料元件及/或對應的結果資料元件中。如所示的,在部分實施例中,各遮罩元件可係單一遮罩位元。或者,各遮罩元件可係與結果資料元件相同或不同尺寸的資料元件。在其他實施例中,各遮罩元件可係資料元件的單一位元(例如,最高有效位元或最低有效位元)。
在部分實施例中,各遮罩位元或其他遮罩元件的值可運算以控制是否將實施對應運算及/或是否將儲存對應的結果資料元件。各遮罩位元可具有第一值以允許實施運算並允許將對應結果資料元件儲存在目的中,或可具有不同的第二值以不允許實施運算及/或不允許將對應結果資料元件儲存在目的中。根據一種可能慣例,如本說明書中所
示的,清除為二進位零(亦即,0)的遮罩位元可代表將不實施及/或不產生結果元件的遮蔽運算,然而設定為二進位一(亦即,1)的遮罩位元可代表將實施以產生結果元件的未遮罩運算。相反的慣例也係可能的。
在部分實施例中,當至少一個來源資料元件具有等於結果資料元件之結果資料元件位置的來源資料元件值時,可不遮罩與結果資料元件在相同的相對位置中的對應遮罩元件(例如,在本說明書中,具有一的值)。相反地,當沒有來源資料元件具有等於結果資料元件之結果資料元件位置的來源資料元件值時,可遮罩(例如,在與結果資料元件相同的相對位置中)對應遮罩元件(例如,在本說明書中,具有一的值)。換言之,可遮罩對應於具有替代值之結果資料元件的各遮罩元件。
為進一步說明特定觀念,圖8的討論參考至散射索引至聚集索引的轉換。然而,相同的通用方式也可用於將聚集索引轉換成散射索引。因此,在一樣態中,此種資料元件重新安排指令及/或運算可用於將散射索引重新安排成聚集索引及/或將聚集索引重新安排成散射索引。
圖9係適於實作資料元件重新安排指令(例如,散射索引至聚集索引重新安排指令)之實施例的資料元件重新安排執行單元918之詳細範例實施例的方塊圖。執行單元918可與執行單元518相似並可具有相似特性。為避免混淆本描述,主要將描述不同及/或額外特性而不重複所有的選擇性相似特性。
執行單元可接收來源封裝資料運算元970。在此範例中,為易於說明,來源封裝運算元僅具有四個資料元件,雖然可選擇性地將描述於本文它處之其他數目的資料元件(例如,八、十六、三十二、六十四、一百二十八個等)使用在其他實施例中。在說明實施例中,四個索引具有從右至左之2、1、0、及2的值,雖然彼等僅係範例。
執行單元可包括與先前描述之執行單元518相似的邏輯,以產生第一組信號950(例如,其可與第一組信號550相似)及第二組信號952(例如,其可與第二組信號552相似)。例如,執行單元918可包括全輸入交叉開關、比較器、不匹配偵測單元等。第一組信號950各者可具有其可用於產生結果封裝資料運算元972的不同對應結果資料元件之結果資料元件值的值或指示。第二組信號952各者可具有其可用於產生結果遮罩運算元978的不同對應遮罩元件之遮罩值的值或指示。
圖10係描繪可回應於散射索引至聚集索引重新安排指令(例如,指令108及/或708)之實施例實施的散射索引至聚集索引重新安排運算1076之範例實施例的方塊圖。運算可藉由本文揭示之各種處理器(例如,處理器100及/或700)的任一者實施。運算1076與先前於圖8描述的運算876相似,並可具有相似的特徵及變化。為避免混淆描述,主要將描述運算1076的不同及/或額外特徵而不重複所有選擇性相似的特徵及變化。
如先前描述的,指令可指定(例如,明顯指定)或另外
指示(例如,隱含指示)來源封裝資料運算元1070,並可回應於指令/運算,產生結果封裝資料運算元1072。然而,在運算1076的實施例中,未產生結果遮罩運算元。更確切的說,在此實施例中,當沒有來源資料元件具有等於結果資料元件之結果資料元件位置的來源資料元件值時,結果資料元件可具有能與不具有此種替代或空缺值之所有其他結果資料元件區分的值作為替代或空缺值。例如,在部分實施例中,此種替代或空缺值各者可係負數,然而所有提供結果資料元件可具有正數。作為另一範例,在部分實施例中,此種替代或空缺值各者可係大數(例如,大於會用於聚集或散射索引的數),然而所有其他結果資料元件可具有適用於聚集或散射索引的較小尺寸數。在其他實施例中,可選擇性地使用能與從來源運算元重新安排至結果運算元中之資料元件的非替代值區分的部分其他預定值。例如,軟體可在使用索引控制按索引聚集至暫存器的操作之前將此種值使用成測試中的獨特值。
圖11係描繪在實施按索引散射至暫存器的常式之處理器中的方法1180之範例實施例的方塊流程圖。在方塊1181,可接收散射索引至聚集索引重新安排指令。該指令可指示具有以散射模式配置的索引之來源封裝索引運算元的第一封裝資料暫存器。該指令也可將第二封裝資料暫存器指示為目的運算元。在部分實施例中,該指令可選擇性地將遮罩暫存器指示為目的運算元。
在方塊1182,可回應於散射索引至聚集索引重新安
排指令將結果封裝索引運算元儲存在第二封裝資料暫存器中。在部分實施例中,結果封裝索引運算元可具有以聚集模式配置的索引。在部分實施例中,可回應於散射索引至聚集索引重新安排指令選擇性地將結果遮罩運算元儲存在遮罩暫存器中。在部分實施例中,結果封裝索引運算元可指示空缺(例如,具有用於空缺的遮蔽值)。
在方塊1183,可接收按索引聚集至暫存器的指令。按索引聚集至暫存器的指令可將第三封裝資料暫存器指示為來源封裝資料運算元,並可將第二封裝資料暫存器指示為具有以聚集模式配置之索引的來源封裝索引運算元。在部分實施例中,按索引聚集至暫存器的指令可選擇性地將遮罩暫存器指示為來源遮罩運算元。按索引聚集至暫存器的指令也可將第四封裝資料暫存器指示為目的運算元。
在方塊1184,可回應於按索引聚集至暫存器的指令將結果封裝資料運算元儲存在第四封裝資料暫存器中。結果封裝資料運算元可具有使用來自第二封裝資料暫存器的索引從第三封裝資料暫存器聚集的資料元件。在部分實施例中,按索引聚集至暫存器的指令可選擇性地係遮罩或推斷的按索引聚集至暫存器的指令,且資料元件可使用來自選擇性地受選擇性的來源遮罩運算元遮罩或推斷之第二封裝資料暫存器的索引從第三封裝資料暫存器聚集。
有利地,散射索引至聚集索引重新安排指令可允許將索引重新安排成適用於按索引聚集至暫存器的指令的格式(例如,使得既存指令及/或微架構實作可用於實施按索引
散射至暫存器的運算)。為易於描述,將方法1180描述為使用不同暫存器,雖然待理解相同的暫存器可用於多個所描述的運算元。
指令集包括一或多種指令格式。給定指令格式界定不同欄位(位元數、位元位置)以,在其他事物中,指定待進行的運算(運算碼)及待於其上進行運算的運算元(等)。盡管界定指令樣板,部分指令格式仍更受細分(或次格式)。例如,可將給定指令格式的指令樣板界定成具有不同之指令格式欄位的子集(所包括的欄位典型有相同次序,但因為包括較少欄位,至少部分具有不同的位元位置)及/或界定成具有受不同解譯的給定欄位。因此,ISA的各指令使用給定指令格式表示(且,若受界定,以該指令格式之指令樣板的給定一者),並包括用於指定運算及運算元的欄位。例如,範例ADD指令具有特定運算碼及包括運算碼欄位以指定運算碼及運算元欄位以選擇運算元(來源1/目標及來源2)的指令格式;且此ADD指令在指令串流中的發生將在選擇特定運算元的運算元欄位中具有特定內容。稱為先進向量延伸(AVX)(AVX1及AVX2)並使用向量延伸(VEX)編碼設計的SIMD延伸集已發表及/或發行(例如,見Intel® 64及IA-32架構軟體發展者手冊,2011年十月;並見Intel®先進向量延伸程式設計參考手冊,2011月六月)。
本文描述之指令(等)的實施例可用不同格式具現。此外,於下文詳細描述範例系統、架構、及管線。指令(等)的實施例可在此種系統、架構、及管線上執行,但未受限於此等細節。
VEX編碼容許指令具有多於二個運算元,並容許SIMD向量暫存器比128位元更長。VEX前置碼的使用提供三運算元(或更多)語法。例如,先前二運算元指令實施諸如,A=A+B的運算,其覆寫來源運算元。VEX前置碼的使用致能運算元實施非破壞性運算,諸如,A=B+C。
圖12A描繪包括VEX前置碼1202、實際運算碼欄位1230、Mod R/M位元組1240、SIB位元組1250、位移欄位1262、及IMM8 1272的範例AVX指令格式。圖12B描繪來自圖12A的何等欄位構成完整運算碼欄位1274及基本運算欄位1242。圖12C描繪來自圖12A的何等欄位構成暫存器索引欄位1244。
VEX前置碼(位元組0-2)1202係以三個位元組形式編碼。第一位元組係格式欄位1240(VEX位元組0,位元[7:0]),其包含明顯的C4位元組值(用於區別C4指令格式的獨特值)。第二至第四位元組(VEX位元組1-2)包括提供特定能力的許多位元欄位。具體地說,REX欄位1205(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而形成。運算碼映射欄位1215(VEX位元組1,位元[4:0]-mmmmm)包括內容以編碼隱含的前導運算碼位元組。W欄位1264(VEX位元組2,位元[7]-W)-藉由符號VEX.W表示,並依據指令提供不同功能。VEX.vvvv 1220(VEX位元組2、位元[6:3]-vvvv)的角色可能包括下列各者:1)VEX.vvvv編碼以反相(1的補數)形式指定的第一來源暫存器運算元並對具有2或多個來源運算元的指令有效;2)VEX.vvvv針對特定向量偏移編碼以1的補數形式指定的目的地暫存器運算元;或3)VEX.vvvv不編碼任何運算元,該欄位保留並應包含1211b。若VEX.L 1268尺寸欄位(VEX位元組2,位元[2]-L)=0,其指示128位元向量;若VEX.L=1,其指示256位元向量。前置編碼欄位1225(VEX位元組2,位元[1:0]-pp)-提供用於基本運算欄位的額外位元。
實際運算碼欄位1230(位元組3)也稱為運算碼位元組。將運算碼的一部分指定在此欄位中。
MOD R/M欄位1240(位元組4)包括MOD欄位1242(位元[7-6])、Reg欄位1244(位元[5-3])、及R/M欄位1246(位元[2-0])。Reg欄位1244的角色可能包括下列各者:編碼目的地暫存器運算元或來源暫存器運算元之任一
者(Rrrr的rrr),或被視為係運算碼延伸且不用於編碼任何指令運算元。R/M欄位1246的角色可包括下列各者:編碼參考記憶體位址的指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元之任一者。
比例、索引、基底(SIB)-SIB欄位1250(位元組5)的內容包括SS 1252(位元[7-6]),其用於記憶體位置產生。SIB.xxx 1254(位元[5-3])及SIB.bbb 1256(位元[2-0])的內容已於先前參考至關於暫存器索引Xxxx及Bbbb。
位移欄位1262及立即欄位(IMM8)1272包含位址資料。
向量親和指令格式係適用於向量指令的指令格式(例如,有特別用於向量運算的特定欄位)。雖然描述在其中向量及純量運算二者經由向量親和指令格式受支援的實施例,其他實施例僅使用向量親和指令格式的向量運算。
圖13A-13B係描繪根據本發明的實施例之通用向量親和指令格式及其指令樣板的方塊圖。圖13A係描繪根據本發明的實施例之通用向量親和指令格式及其類別A指令樣板的方塊圖;而圖13B係描繪根據本發明的實施例之通用向量親和指令格式及其類別B指令樣板的方塊圖。具體地說,類別A及B指令樣板針對通用向量親和指令格式1300界定,彼等二者包括無記憶體存取指令樣板1305及記憶體存取指令樣板1320。在向量親和指令格式之上下
文中的術語通用係指該指令格式未束縛於任何特定指令集。
在將描述在其中向量親和指令格式支援下列各者的本發明之實施例的同時:具有32位元(4位元組)或64位元(8位元組)資料元素寬度(或尺寸)的64位元組向量運算元長度(或尺寸)(且因此,64位元組向量由16個雙字組尺寸元素或替代地由8個四字組尺寸元素之其中一者組成);具有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位元組向量運算元)。
圖13A中的類別A指令樣板包括:1)在無記憶體存取指令樣板1305內,顯示無記憶體存取、全捨入控制型運算指令樣板1310及無記憶體存取、資料轉移型運算指令樣板1315;及2)在記憶體存取指令樣板1320內,顯示記憶體存取、時間性指令樣板1325及記憶體存取、非時間性指令樣板1330。圖13B中的類別B指令樣板包括:
1)在無記憶體存取指令樣板1305內,顯示無記憶體存取、寫入遮罩控制、部分捨入控制型運算指令樣板1312及無記憶體存取、寫入遮罩控制、vsize型運算指令樣板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-其內容容許將用於記憶體位址產生之索引欄位的內容比例化(例如,針對使用2scale*index+base的位址產生)。
位移欄位1362A-將其內容使用為記憶體位址產生的一部分(例如,針對使用2scale*index+base+displacement的位址產生)。
位移因子欄位1362B(須注意將位移欄位1362A直接並排在位移因子欄位1362B上方指示使用一者或另一者)-將其內容使用為位址產生的一部分;其指定藉由記憶體
存取尺寸(N)比例化的移位因子-其中N係記憶體存取中的位元組數量(例如,針對使用2scale*index+base+scaled displacement的位址產生)。忽略冗餘的低階位元,且因此將位移因子欄位的內容乘以記憶體運算元總尺寸(N),以產生在計算有效位址時使用的最終位移。N的值係由處理器硬體在執行時間基於全運算碼欄位1374(本文稍後描述)及資料操控欄位1354C決定。位移欄位1362A及位移因子欄位1362B在彼等未用於無記憶體存取指令樣板1305及/或未用於可能僅實作彼等二者之一或均未實作的不同實施例的情形中係選擇性的。
資料元素寬度欄位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的內容覆寫該暫存器值。
在無記憶體存取資料轉移型運算指令樣板1315中,將乙欄位1354解譯為資料轉移欄位1354B,其內容區別進行許多資料轉移之何一者(例如,無資料轉移,交叉混合、廣播)。
在類別A之記憶體存取指令樣板1320的情形中,將甲欄位1352解譯為驅逐提示欄位1352B,其內容區別使用驅逐提示之何一者(在圖13A中,時間性1352B.1及非時間性1352B.2分別指定用於記憶體存取、時間性指令樣板1325及記憶體存取、非時間性指令樣板1330),而將乙欄位1354解譯為資料操控欄位1354C,其內容區別進行許多資料操控運算之何一者(也稱為基元)(例如,無操控;廣播;來源的昇轉換;及目的地的降轉換)。記憶體存取指令樣板1320包括比例欄位1360、並選擇性地包括位移欄位1362A及位移因子欄位1362B。
向量記憶體指令使用轉換支援進行從記憶體載入向量及將向量儲存至記憶體。當使用正常向量指令時,使用藉由選擇為寫入遮罩之向量遮罩的內容指定的實際轉移的元素,向量記憶體指令以逐資料元素方式從記憶體轉移資料/將資料轉移至記憶體。
時間性資料係可能很快重使用而足以從快取獲利的資
料。然而,此係提示,且不同處理器可用不同方式實作其,包括完全忽略該提示。
非時間性資料係不太可能很快重使用落足以從第1級快取記憶體快取獲利,且應給定驅逐優先權的資料。然而,此係提示,且不同處理器可用不同方式實作其,包括完全忽略該提示。
在類別B之指令樣板的情形中,將甲欄位1352解譯為寫入遮罩控制(Z)欄位1352C,其內容區別由寫入遮罩欄位1370控制的寫入遮罩是否應合併或歸零。
在類別B之無記憶體存取指令樣板1305的情形中,將乙欄位1354的一部分解譯為RL欄位1357A,其內容區別進行不同增益運算種類之何一者(例如,將捨入1357A.1及向量長度(VSIZE)1357A.2分別指定用於無記憶體存取、寫入遮罩控制、部分捨入控制型運算指令樣板1312及無記憶體存取、寫入遮罩控制、VSIZE型運算指令樣板1317),而乙欄位1354的其餘部分區別進行指定種類的何等運算。在無記憶體存取指令樣板1305中,不存在比例欄位1360、位移欄位1362A、及位移比例欄位1362B。
在無記憶體存取、寫入遮罩控制、部分捨入控制型運算指令樣板1310中,將乙欄位1354的其餘部分解譯為捨
入運算欄位1359A並將異常事件回報除能(給定指令不回報任何種類的浮點異常旗標且不喚起任何浮點異常管理器)。
捨入運算控制欄位1359A-正如同捨入運算控制欄位1358,其內容區別進行捨入運算之群組的何一者(例如,捨進、捨去、朝零捨入、及捨入至最近者)。因此,捨入運算控制欄位1359A容許在每個指令的基礎上改變捨入模式。在本發明的一實施例中,其中處理器包括用於指定捨入模式的控制暫存器,捨入運算控制欄位1358的內容覆寫該暫存器值。
在無記憶體存取、寫入遮罩控制、VSIZE型運算指令樣板1317中,將乙欄位1354的其餘部分解譯為向量長度欄位1359B,其內容區別於許多資料向量長度的何一長度上進行(例如,128、256、或512位元組)。
在類別B之記憶體存取指令樣板1320的情形中,將乙欄位1354的一部分解譯為廣播欄位1357B,其內容區別是否進行廣播型資料操控運算,而將乙欄位1354的其餘部分解譯為向量長度欄位1359B。記憶體存取指令樣板1320包括比例欄位1360、並選擇性地包括位移欄位1362A及位移因子欄位1362B。
關於通用向量親和指令格式1300,將全運算碼欄位1374顯示成包括格式欄位1340、基本運算欄位1342、及資料元素寬度欄位1364。在將一實施例顯示成其中全運算碼欄位1374包括所有此等欄位的同時,在不支援彼等
全部的實施例中,全運算碼欄位1374包括比所有此等欄位少的欄位。全運算碼欄位1374提供運算碼(運算碼)。
在通用向量親和指令格式中,增益運算欄位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欄位、位移欄位、及立即欄位保持一致。說明來自圖14的欄位映射至其中之來自圖13的欄位。
應理解為了說明,本發明的實施例雖然係在通用向量親和指令格式1300的上下文中參考特定向量親和指令格式1400而描述,除非另有聲明,本發明並未受限於特定向量親和指令格式1400。例如,通用向量親和指令格式1300設想用於各種欄位的各種可能尺寸,但將特定向量親和指令格式1400顯示為具有特定尺寸的欄位。藉由特
定範例,在特定向量親和指令格式1400中將資料元素寬度欄位1364說明為一位元欄位的同時,本發明並未受如此限制(亦即,通用向量親和指令格式1300設想其他尺寸的資料元素寬度欄位1364)。
通用向量親和指令格式1300包括以描繪於圖14A中的次序於下文列示的以下欄位。
EVEX前置碼(位元組0-3)1402-係以四位元組形式編碼。
格式欄位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編碼為1211B,將ZMM15編碼為0000B。指令的其他欄位如本技術中已為人所知地編碼暫存器索引的較低的三個位元(rrr、xxx、及bbb),使得Rrrr、Xxxx、及Bbbb可藉由加入EVEX.R、EVEX.X、及EVEX.B而形成。
REX'欄位1410-此係REX'欄位1410的第一部分且係用於編碼32個延伸暫存器集之上16個或下16個之任一者的EVEX.R'位元欄位(EVEX位元組1,位元[4]-R')。在本發明的一實施例中,此位元,連同於下文指示的其他位元,以位元反相格式儲存,以(在已為人熟知的x86 32-位元模式中)與BOUND指令區別,其實際運算碼位元組為62,但不在MOD R/M欄位(於下文描述)中接受MOD欄位中的值11;本發明的其他實施例不以反相格式儲存此及其他於下文指示的位元。將值1用於編碼較低的16個暫存器。換言之,R'Rrrr係藉由組合EVEX.R'、EVEX.R、及來自其他欄位的RRR形成。
運算碼映射欄位1415(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含的前導運算碼位元組(0F、0F 38、或0F 3)。
資料元素寬度欄位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不編碼任何運算元,該欄位保留並
應包含1211b。因此,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位元)。在一實施例中,為支援使用採用傳統格式或EVEX前置碼格式二者之SIMD前置碼(66H、F2H、F3H)的傳統SSE指令,將此等傳統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'欄位1410-此係REX'欄位的其餘部分且係可能用於編碼32個延伸暫存器集之上16個或下16個之任一者的EVEX.V'位元欄位(EVEX位元組3,位元[3]-V')。此位元以位元反相格式儲存。將值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、Reg欄位1444、及R/M欄位1446。如先前描述的,MOD欄位1442的內容在記憶體存取及無記憶體存取運算之間區別。Reg欄位1444的角色可總結成二情況:編碼目的
地暫存器運算元或來源暫存器運算元的任一者,或被視為係運算碼延伸且不用於編碼任何指令運算元。R/M欄位1446的角色可包括下列各者:編碼參考記憶體位址的指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元之任一者。
比例、索引、基底(SIB)位元組(位元組6)-如先前描述的,將比例欄位1360的內容用於記憶體位址產生。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及137位元組移位之間定址;依據64位元組快取線,disp8使用僅能設定成四個實際有用值-128、-64、0、及64的8位元;因為常需要較大範圍,使用disp32;然而,disp32需要4個位元組。與disp8及disp32相反,位移因子欄位1362B係disp8的重解譯;當使用位移因子欄位1362B時,實際位移係由位移因子欄位的內容乘以記憶體運算元存取的尺寸(N)而決定。將此種位移稱為disp8*N。此減少平均指令長度(將單一位元組用於位移,
但具有更大的範圍)。此種壓縮位移係基於有效位移係記憶體存取粒度之倍數的假設,且因此,不需要將位址移位的冗餘低階位元編碼。換言之,位移因子欄位1362B取代傳統x86指令集8-位元位移。因此,除了將disp8多載為disp8*N的例外之外,以與x86指令集8-位元位移相同的方式編碼位移因子欄位1362B(所以在ModRM/SIB編碼規則中沒有改變)。換言之,在編碼規則或編碼長度上沒有改變,但僅在藉由硬體解譯位移值上改變(其需要以記憶體運算元的尺寸將位移比例化,以得到逐位元位址移位)。
立即欄位1372如先前描述地運算。
圖14B係描繪根據本發明的一實施例之構成全運算碼欄位1374的特定向量親和指令格式1400之欄位的方塊圖。具體地說,全運算碼欄位1374包括格式欄位1340、基本運算欄位1342、及資料元素寬度(W)欄位1364。基本運算欄位1342包括前置編碼欄位1425、運算碼映射欄位1415、及實際運算碼欄位1430。
圖14C係描繪根據本發明的一實施例之構成暫存器索引欄位1344的特定向量親和指令格式1400之欄位的方塊圖。具體地說,暫存器索引欄位1344包括REX欄位
1405、REX'欄位1410、MODR/M.reg欄位1444、MODR/M.r/m欄位1446、VVVV欄位1420、xxx欄位1454、及bbb欄位1456。
圖14D係描繪根據本發明的一實施例之構成增益運算欄位1350的特定向量親和指令格式1400之欄位的方塊圖。當類別(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(VSIZE 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個512位元寬的向量暫存器1510;將此等暫存器稱為zmm0至zmm31。將較低的16個zmm暫存器的低階256個位元重疊在暫存器ymm0-15上。將較低的16個zmm暫存器的低階128個位元(ymm暫存器之低階128個位元)重疊在暫存器xmm0-15上。如在下表中說明的,特定向量親和指令格式1400在此等重疊暫存器檔案上運算。
換言之,向量長度欄位1359B在最大長度及一或多個其他較短長度之間選擇,其中各個此種較短長度為先前長度的一半長度;且不具有向量長度欄位1359B的指令樣板在最大向量長度上運算。另外,在一實施例中,特定向量親和指令格式1400的類別B指令樣板在封裝或純量單/倍精準浮點資料及封裝或純量整數資料上運算。純量運算係在zmm/ymm/xmm暫存器中之最低階資料元素位置上進行的運算;較高階的資料元素位置或保持成與在該指令之前相同或依據實施例歸零。
寫入遮罩暫存器1515-在說明實施例中,有8個寫入遮罩暫存器(k0至k7),各者的尺寸為64位元。在另一
實施例中,寫入遮罩暫存器1515的尺寸為16位元。如先前描述的,在本發明的一實施例中,向量遮罩暫存器k0不能使用為寫入遮罩;當將通常會指示k0的編碼用於寫入遮罩時,其選擇0xFFFF的硬接寫入遮罩,有效地將該指令的寫入遮罩除能。
通用暫存器1525-在說明實施例中,有連同既存之x86定址模式使用以定址記憶體運算元的十六個64位元通用暫存器。藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15參考至此等暫存器。
純量浮點堆疊暫存器檔案(x87堆疊)1545,在其上的係化名的MMX封裝整數平坦暫存器檔案1550-在說明實施例中,x87堆疊係用於使用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包括耦接至指令快取單元1634的分支預測單元1632,其耦接至指令轉譯後備緩衝器(TLB)1636,其耦接至指令提取單元1638,其耦接至解碼單元1640。解碼單元1640(或解碼器)可解碼指令,並產生作為輸出之解碼自、或另外反映、或導自原始指令之一或多個微運算、微碼進入點、微指令、其他指令、或其他控制信號。解碼單元1640可使用各種不同的機制實作。合適機制的範例包括,但未受限於,查找表、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1690包括微碼ROM或儲存用於特定巨
集指令之微碼的其他媒體(例如,在解碼單元1640中或另外在前端單元1630內)。將解碼單元1640耦接至執行引擎單元1650中的更名/配置器單元1652。
執行引擎單元1650包括耦接至引退單元1654及一組一或多個排程器單元(等)1656的更名/配置器單元1652。排程器單元(等)1656代表任何數量的不同排程器,包括保留站、中央指令窗等。將排程器單元(等)1656耦接至實體暫存器檔案(等)單元(等)1658。實體暫存器檔案(等)單元1658各者代表一或多個實體暫存器檔案,彼等的不同者儲存一或多種不同的資料型別,諸如,純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如,係待執行的次一指令之位址的指令指標器)等。在一實施例中,實體暫存器檔案(等)單元1658包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案(等)單元(等)1658與引退單元1654重疊,以說明可能實作暫存器更名及無序執行的各種方式(例如,使用重排序緩衝器(等)及引退暫存器檔案(等);使用未來檔案(等)、歷史緩衝器(等)、及引退暫存器檔案(等);使用暫存器映射及暫存器池;等)。將引退單元1654及實體暫存器檔案(等)單元(等)1658耦接至執行叢集(等)1660。執行叢集(等)1660包括一組一或多個執行單元1662及一組一或多個記憶體存取單元1664。執行單元1662可在各種型別的資料(例如,純量浮點、封裝整
數、封裝浮點、向量整數、向量浮點)上實施各種運算(例如,移位、加法、減法、乘法)。雖然部分實施例可包括專用於特定功能或功能集的許多執行單元,其他實施例可僅包括一執行單元或全部進行所有功能的多個執行單元。將排程器單元(等)1656、實體暫存器檔案(等)單元(等)1658、及執行叢集(等)1660顯示為可能係複數個,因為特定實施例針對特定種類的資料/運算建立個別管線(例如,各者具有自有之排程器單元、實體暫存器檔案(等)單元、及/或執行叢集的純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線一且在分離式記憶體存取管線的情形中,實作在其中僅有此管線的執行叢集具有記憶體存取單元(等)1664的特定實施例)。也應理解當使用分離式管線時,此等管線的一或多者係無序發佈/執行的而其餘係有序的。
將該組記憶體存取單元1664耦接至記憶體單元1670,其包括耦接至資料快取單元1674的資料TLB單元1672,該資料快取單元耦接至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 Technologies的MIPS指令集;加州桑尼維爾的ARM Holdings的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使用分離的暫存器集(分別係純量暫存器11712及向量暫存器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中的實線方塊描繪具有單核心1802A、系統代理1810、一組一或多個匯流排控制器單元1816的處理器1800,而點虛線方塊描繪選擇性加入之具有多核心1802A-N、在系統代理單元1810中的一組一或多個積集記憶體控制器單元(等)1814、及特殊用途邏輯1808的其他處理器1800。
因此,處理器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-21係範例電腦架構的方塊圖。在本技術中為人所知之用於膝上型、桌上型、手持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直接耦接至處理器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耦接至第二匯流排2020的匯流排橋接器2018耦接至第一匯流排2016。在一實施例中,將一或多個額外處理器(等)2015,諸如,共處理器、高通量MIC處理器、GPGPU的加速器(諸如,圖形加速器或數位訊號處理器(DSP)單元)、場效可規劃閘極陣列、或任何其他處理器,耦合至第一匯流排2016。在一實施例中,第二匯流排2020可係低插腳數(LPC)匯流排。在一實施例中,可將各種裝置耦接至第二匯流排2020,包括,例如,鍵盤及/或滑鼠2022、通訊裝置2027、以及儲存單元2028,諸如,硬碟驅動器,或可包括指令/碼及資料2030的其他大量儲存裝置。另外,可能將音訊I/O 2024耦接至第二匯流排2020。須注意其他架構也係可能的。例如,取代圖20的點對點架構,系統可實作多分支匯流排或其他此種架構。
現在參考至圖21,顯示根據本發明的實施例之第二更具體模範系統2100的方塊圖。圖20及21中的相似元
件有相似參考數字,且圖20的特定樣態已從圖21省略,以避免混淆圖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的方塊圖。圖22中的相似元件有相似的參考數字。又,虛線方塊係在更先進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顯示可使用x86編
譯器2304編譯以高階語言2302撰寫的程式,以產生可由具有至少一x86指令集核心的處理器2316原生地執行的x86二進位碼2306。具有至少一x86指令集核心的處理器2316代表能藉由相容地執行或另外處理(1)Intel x86指令集核心的實質指令集部分,或(2)目標為在具有至少一x86指令集核心的Intel處理器上運行之應用程式或其他軟體的目的碼版本,進行與具有至少一x86指令集核心之Intel處理器實質相同之功能的任何處理器,以實現與具有至少一x86指令集核心之Intel處理器實質相同的結果。x86編譯器2304代表可運算以產生能使用或不使用額外聯結處理以在具有至少一x86指令集核心的處理器2316上執行之x86二進位碼2306(例如,目的碼)的編譯器。相似地,圖23顯示可使用替代指令集編譯器2308編譯以高階語言2302撰寫的程式,以產生可為不具有至少一x86指令集核心的處理器2314(例如,具有執行加州桑尼維爾的MIPS Technologies的MIPS指令集及/或執行加州桑尼維爾的ARM Holdings的ARM指令集之核心的處理器)原生地執行的替代指令集二進位碼2310。指令變換器2312用於將x86二進位碼2306變換為可為不具有x86指令集核心的處理器2314原生地執行的碼。此已變換碼不太可能與替代指令集二進位碼2310相同,因為難以產生能作到此的指令變換器;然而,已變換碼將完成一般運算且係由來自替代指令集的指令構成。因此,指令變換器2312代表經由模仿、模擬、或任何其他處理容許不具有
x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼2306的軟體、韌體、硬體、或彼等的組合。
在圖4-5任一者描述的組件、特性、及細節也可選擇性地施用在圖1、3、及6的任一者。在圖8-10任一者描述的組件、特性、及細節也可選擇性地施用至圖7。再者,針對任何該等設備描述的組件、特性、及細節也可選擇性地施用至任何方法,其在實施例中可藉由及/或使用此種設備實施。本文描述的任何處理器可包括在本文揭示的任何電腦系統中。在部分實施例中,電腦系統可包括動態隨機存取記憶體(DRAM)。或者,電腦系統可包括不需要復新的一種揮發性記憶體或快閃記憶體。本文揭示的指令可使用在本文所示的任何系統上之具有本文所示的任何微架構之本文所示的任何處理器實施。本文揭示的指令可具有本文所示之指令格式的任何特性。
在實施方式及申請專利範圍中,已使用該等術語「耦接」及/或「連接」及彼等之衍生術語。此等術語未意圖作為彼此的同義辭。在實施例中,可能寧可將「連接」用於指示二或多個元件彼此直接實體接觸及/或電接觸。「耦接」可意謂著二或多個元件彼此直接實體及/或電接觸。然而,「耦接」也可意謂著二或多個元件不彼此直接接觸,但仍彼此合作或互動。例如,執行單元可經由一或多個中間組件與暫存器及/或解碼單元耦接。在該等圖式中,使用箭號顯示連接及耦接。
術語「及/或」可已使用。如本文所使用的,術語「及/或」意謂著一者或另一者或二者(例如,A及/或B意謂著A或B或A及B二者)。
在以上描述中,已陳述具體細節以提供對實施例的徹底理解。然而,其他實施例可不需要部分此等特定細節而實踐。本發明的範圍並未由上文提供的該等具體範例所決定,而僅由以下的申請專利範圍決定。在其他情形中,已將為人所熟知之電路、結構、裝置、以及操作以方塊圖及/或不含細節的形式顯示,以避免模糊對本描述的理解。當認為適當時,除非另行指定或係明顯的,已在圖式之間重複的參考數字、或參考數字的尾端部分指示對應或類似元件,彼等可能選擇性地具有相似或相同特徵。
特定運算可由硬體組件實施,或可嵌入在可用於導致及/或致使以該等指令程式化的機器、電路、或硬體組件(例如,處理器、處理器的一部分、電路等)實施該等運算的機器可執行或電路可執行指令中。該等操作也可選擇性地由硬體及軟體的組合實施。處理器、機器、電路、或硬體可包括特定或特殊電路或其他邏輯(例如,可能與韌體及/或硬體組合的硬體),操作以執行及/或處理該指令並儲存回應於該指令的結果。
部分實施例包括製品(例如,電腦程式產品),其包括機器可讀媒體。該媒體可包括以可由該機器讀取之格式提供,例如,儲存,資訊的機制。該機器可讀媒體可提供,或已儲存於其上的指令或一系列指令,若及/或當由機器
執行時,操作以導致該機器實施及/或致使該機器實施一或多個本文揭示的操作、方法、或技術。
在部分實施例中,機器可讀媒體可包括非暫態機器可讀儲存媒體。例如,非暫態機器可讀儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式化ROM(PROM)、可抹除可程式化ROM(EPROM)、可電抹除可程式化ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、或非暫態資料儲存裝置等。非暫態機器可讀儲存媒體不由暫態傳播信號組成。在部分實施例中,儲存媒體可包括包括固體物質的實體媒體。
合適機器的範例包括,但未受限於,通用處理器、特殊用途處理器、數位邏輯電路、或積體電路等。合適機器的其他範例包括電腦系統或其他電子裝置,彼等包括處理器、數位邏輯電路、或積體電路。此種電腦系統或電子裝置的範例包括,但未受限於,桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、易網機、智慧型手機、行動電話、伺服器、網路裝置(例如,路由器及交換器)、行動網際網路裝置(MID)、媒體播放器、智慧型電視、易網電腦、機上盒、及視訊遊戲控制器等。
於此說明書各處提及之,例如,「一實施例」、「實施例」、「一或多個實施例」、「部分實施例」指示可將
特定特性包括在本發明的實踐中,但不必然需要包括。相似地,為使本揭示合理化並協助瞭解各種發明樣態的目的,實施方式中的各種特性有時可能聚集在單一實施例、圖式、或其之描述中。然而,並未將所揭示的此方法解釋為反映本發明需要比明確敘述在申請專利範圍各項中的特性更多之特性的企圖。更確切地說,如以下申請專利範圍所反映的,發明樣態在比單一揭示實施例之所有特性更少的範圍。因此,將實施方式之後的申請專利範圍明確地併入此實施方式中,將各獨立申請專利範圍作為本發明之個別實施例。
以下範例關於其他實施例。範例中的具體內容可在一或多個實施例中的任何位置使用。
範例1係一種處理器,包括解碼單元,以將資料元件重新安排指令解碼。該指令用以指示來源封裝資料運算元,其係用以具有複數個來源資料元件,及用以指示目的儲存地點。該來源資料元件各者係用以具有來源資料元件值及相對於該來源封裝資料運算元之最低有效端的來源資料元件位置。將執行單元與該解碼單元耦接。該執行單元係用以回應於該指令將結果封裝資料運算元儲存在該目的儲存地點中。該結果封裝資料運算元係用以具有複數個結果資料元件,其各者具有結果資料元件值,及結果資料元件位置,其相對於該結果封裝資料運算元之最低有效端。
各結果資料元件的該結果資料元件值係下列一者:(1)等於最接近於該來源封裝資料運算元的一端之來源資料元件的來源資料元件位置,其係用以具有等於該結果資料元件之該結果資料元件位置的來源資料元件值;及(2)替代值,當沒有來源資料元件係用於具有等於該結果資料元件之該結果資料元件位置的來源資料元件值時。
範例2包括範例1的處理器,其中該來源封裝資料運算元係用以具有複數組重複來源資料元件值。針對各組重複來源資料元件值,該結果封裝資料運算元係用以儲存該重複來源資料元件值之唯一一個最高有效者的來源資料元件位置。
範例3包括範例1的處理器,其中該執行單元回應於該指令係用以儲存在其中該來源封裝資料運算元的一端包括該來源封裝資料運算元之最高有效端的該結果封裝資料運算元。
範例4包括範例1的處理器,其中該執行單元回應於該指令係用以儲存在其中該來源封裝資料運算元的一端包括該來源封裝資料運算元之最低有效端的該結果封裝資料運算元。
範例5包括範例1的處理器,其中該執行單元回應於該指令係用以儲存其係用以具有複數個遮罩元件的結果遮罩運算元,該遮罩元件各者用以對應於該結果資料元件的不同者。
範例6包括範例5的處理器,其中該執行單元回應於
該指令係用以儲存該結果遮罩運算元,其中:(1)各遮罩元件係用以具有第一值,各遮罩元件係用以對應於其係用以等於來源資料元件位置的結果資料元件值;及(2)各遮罩元件係用以具有第二不同值,各遮罩元件係用以對應於其將係替代值的結果資料元件值。
範例7包括範例5的處理器,其中各遮罩元件係用以包含唯一一個單一位元。
範例8包括範例5的處理器,其中該執行單元回應於該指令係用以儲存該結果遮罩運算元在遮罩暫存器中。包括該資料元件重新安排指令之指令集的複數個其他指令係用以指定用於預測運算元的遮罩暫存器,該預測運算元係用於預測封裝資料運算。
範例9包括範例1的處理器,其中該執行單元回應於該指令係用以儲存其係用以具有至少一個結果資料元件的該結果封裝資料運算元,該至少一個結果資料元件係用以具有其將係替代值的結果資料元件值。該替代值將係負數。不係替代值的其他結果資料元件值將不係負數。
範例10包括範例1的處理器,其中該執行單元回應於該指令係用以儲存其係用以具有至少一個結果資料元件的該結果封裝資料運算元,該至少一個結果資料元件係用以具有其將係替代值的結果資料元件值,且其中該替代值係用以包含零值。
範例11包括範例1的處理器,其中該執行單元回應於該指令係用以儲存其係用以具有結果資料元件值的該結
果封裝資料運算元,該結果資料元件值將係替代值。該替代值係用以包含恰在該指令執行前儲存在目的儲存地點中的對應位置中之資料元件的值。
範例12包括範例1至11之任一者的處理器,其中該執行單元回應於該指令係用以儲存其係用以具有至少八個結果資料元件的該結果封裝資料運算元,該結果資料元件包括其係具有該替代值作為結果資料元件值的至少一個結果資料元件。
範例13包括範例1至11之任一者的處理器,其中該來源資料元件各者包括整數索引。各索引表示在各來源資料元件之最低有效位元組的最低階位元子集中。
範例14包括範例1至11之任一者的處理器,其中該解碼單元係也用以解碼按索引聚集至暫存器的指令,但該解碼單元不能解碼按索引散射至暫存器的指令。
範例15包括範例1至11之任一者的處理器,其中該來源封裝資料運算元係用以具有以散射模式安排的該來源資料元件,且其中該結果封裝資料運算元係用以具有以聚集模式安排的該結果資料元件。
範例16係處理器中之包括接收資料元件重新安排指令的一種方法。該指令指示具有複數個來源資料元件的來源封裝資料運算元並指示目的儲存地點。該來源資料元件各者具有來源資料元件值及相對於該來源封裝資料運算元之最低有效端的來源資料元件位置。該方法也包括回應於該指令將結果封裝資料運算元儲存在該目的儲存地點中。
該結果封裝資料運算元具有其各者具有結果資料元件值的複數個結果資料元件及相對於該結果封裝資料運算元之最低有效端的結果資料元件位置。各結果資料元件的該結果資料元件值係下列一者:(1)等於最接近於該來源封裝資料運算元的一端之來源資料元件的來源資料元件位置,其具有等於該結果資料元件之該結果資料元件位置的來源資料元件值;及(2)替代值,當沒有來源資料元件具有等於該結果資料元件之該結果資料元件位置的來源資料元件值時。
範例17包括範例16的方法,其中該執行單元回應於該指令係用以儲存在其中該來源封裝資料運算元的一端包括該來源封裝資料運算元之最高有效端的該結果封裝資料運算元。
範例18包括範例16的方法,其中該執行單元回應於該指令係用以儲存其係用以具有複數個遮罩元件的結果遮罩運算元,該遮罩元件各者用以對應於該結果資料元件的不同者。
範例19包括範例18的方法,其中該執行單元回應於該指令係用以儲存該結果遮罩運算元,其中:(1)各遮罩元件係用以具有第一值,各遮罩元件係用以對應於其係用以等於來源資料元件位置的結果資料元件值;及(2)各遮罩元件係用以具有第二不同值,各遮罩元件係用以對應於其將係替代值的結果資料元件值。
範例20包括範例16的方法,其中該執行單元回應於
該指令係用以儲存其係用以具有至少八個結果資料元件的該結果封裝資料運算元,該結果資料元件包括其係具有該替代值作為結果資料元件值的至少一個結果資料元件。該來源資料元件各者包括整數索引,且各索引表示在各來源資料元件之最低有效位元組的最低階位元子集中。
範例21包括範例16的方法,更包括實施按索引聚集至暫存器的指令,該指令指示該資料元件重新安排指令的該結果封裝資料運算元作為來源封裝資料運算元。
範例22係一種電腦系統,包括互連及與該互連耦接的處理器。該處理器係用以接收資料元件重新安排指令。該指令係用以指示其係用以具有複數個來源資料元件的來源封裝資料運算元及用以指示目的儲存地點。該來源資料元件各者係用以具有來源資料元件值及相對於該來源封裝資料運算元之最低有效端的來源資料元件位置。該處理器係用以回應於該指令將結果封裝資料運算元儲存在該目的儲存地點中。該結果封裝資料運算元係用以具有其各者係用以具有結果資料元件值的複數個結果資料元件及相對於該結果封裝資料運算元之最低有效端的結果資料元件位置。各結果資料元件的該結果資料元件值係下列一者:(1)等於最接近於該來源封裝資料運算元的一端之來源資料元件的來源資料元件位置,其係用以具有等於該結果資料元件之該結果資料元件位置的來源資料元件值;及(2)替代值,當沒有來源資料元件係用於具有等於該結果資料元件之該結果資料元件位置的來源資料元件值時。該電腦
系統也具有與該互連耦接的動態隨機存取記憶體(DRAM)。該DRAM儲存包括按索引聚集至暫存器的指令的一組指令,該指令係用以指示該資料元件重新安排指令的該結果封裝資料運算元作為來源封裝資料運算元。
範例23包括範例22的電腦系統,其中該處理器回應於該指令係用以儲存在其中該來源封裝資料運算元的一端包括該來源封裝資料運算元之最高有效端的該結果封裝資料運算元。
範例24係包括非暫態機器可讀儲存媒體的一種製品。該非暫態機器可讀媒體儲存資料元件重新安排指令。該資料元件重新安排指令係用以指示其係用以具有複數個來源資料元件的來源封裝資料運算元及用以指示目的儲存地點。該來源資料元件各者係用以具有來源資料元件值及相對於該來源封裝資料運算元之最低有效端的來源資料元件位置。該資料元件重新安排指令若由機器執行係用於導致該機器實施包括儲存結果封裝資料運算元儲存在該目的儲存地點中的操作。該結果封裝資料運算元係用以具有其各者係用以具有結果資料元件值的複數個結果資料元件及相對於該結果封裝資料運算元之最低有效端的結果資料元件位置。各結果資料元件的該結果資料元件值係下列一者:(1)等於最接近於該來源封裝資料運算元的一端之來源資料元件的來源資料元件位置,其係用以具有等於該結果資料元件之該結果資料元件位置的來源資料元件值;及(2)替代值,當沒有來源資料元件係用於具有等於該結果
資料元件之該結果資料元件位置的來源資料元件值時。
範例25包括範例24的製品,其中該資料元件重新安排指令若由該機器執行係用以導致該機器實施包括儲存遮罩運算元在遮罩暫存器中的操作,其中該遮罩運算元係用以具有用於該結果封裝資料運算元之各結果資料元件的單一遮罩位元。
範例26包括範例1至11之任一者的處理器,更包括選擇性的分支預測單元以預測分支,及選擇性的指令預提取單元,與該分支預測單元耦接,該指令預提取單元用以預提取包括該資料元件重新安排指令(或按索引散射至暫存器的指令)的指令。該處理器也可選擇性地包括與該指令預提取單元耦接之選擇性的1級(L1)指令快取記憶體,該L1指令快取記憶體用以儲存指令、選擇性的L1資料快取記憶體以儲存資料、及選擇性的2級(L2)快取記憶體以儲存資料及指令。該處理器也可選擇性地包括與該解碼單元、該L1指令快取記憶體、及該L2快取記憶體耦接的指令提取單元,以提取該資料元件重新安排指令(或該按索引散射至暫存器的指令),在部分情形中,從該L1指令快取記憶體及該L2快取記憶體提取,並提供該資料元件重新安排指令(或該按索引散射至暫存器的指令)至該解碼單元。該處理器也可選擇性地包括暫存器更名單元以更名暫存器、選擇性的排程器以針對執行排程已從該資料元件重新安排指令(或該按索引散射至暫存器的指令)解碼的一或多個運算、及選擇性的提交單元以提交該資料元件重新安
排指令(或該按索引散射至暫存器的指令)的執行結果。
範例27包括一種系統單晶片,其包括至少一個互連、與該至少一個互連耦接之範例1至16之任一者的該處理器、與該至少一個互連耦接的選擇性的圖形處理單元(GPU)、與該至少一個互連耦接的選擇性的數位訊號處理器(DSP)、與該至少一個互連耦接的選擇性的顯示器控制器、與該至少一個互連耦接的選擇性的記憶體控制器、與該至少一個互連耦接的選擇性的無線數據機、與該至少一個互連耦接的選擇性的影像信號處理器、與該至少一個互連耦接的選擇性的通用串列匯流排(USB)3.0相容控制器、與該至少一個互連耦接的選擇性的藍牙4.1相容控制器、及與該至少一個互連耦接的選擇性的無線收發器控制器。
範例28係一種處理器或其他設備,以實施或可操作以實施範例16至21之任一者的方法。
範例29係一種處理器或其他設備,其包括用於實施範例16至21之任一者的方法的機構。
範例30係一種製品,包括選擇性的非暫態機器可讀媒體,其選擇地性儲存或另外提供指令,若及/或當其由處理器、電腦系統、電子裝置、或其他機器執行時,可操作以導致該機器實施範例16至21之任一者的方法。
範例31係實質如本文描述的處理器或設備。
範例32係可操作以實施實質如本文描述之任何方法的處理器或其他設備。
範例33係一種處理器或其他設備,以實施(例如,其
具有組件以實施或其可操作以實施)實質如本文描述的任何資料元件重新安排(或按索引散射至暫存器的)指令。
範例34係一種電腦系統或其他電子裝置,其包括具有解碼單元以解碼第一指令集之指令的處理器。該處理器也具有一或多個執行單元。該電子裝置也包括與該處理器耦接的儲存裝置。該儲存裝置可操作以儲存其係在第二指令集中的資料元件重新安排指令(或按索引散射至暫存器的指令)。該儲存裝置也用以儲存指令以將該資料元件重新安排指令(或該按索引散射至暫存器的指令)變換為該第一指令集的一或多個指令。該第一指令集的該一或多個指令當由該處理器實施時,係用以導致該處理器儲存會由該資料元件重新安排指令(或該按索引散射至暫存器的指令)儲存的結果。
範例35係一種處理器,其包括複數個封裝資料暫存器及解碼單元以解碼按索引散射至暫存器的指令。該按索引散射至暫存器的指令用以指示其係用以具有複數個來源資料元件的來源封裝資料運算元、用以指示其係用以具有複數個索引的來源封裝索引運算元、及用以指示目的封裝資料暫存器。該等索引各者係用以對應於同相對位置上的來源資料元件的不同一者。執行單元係與該複數個封裝資料暫存器耦接並與該解碼單元耦接。該執行單元回應於該按索引散射至暫存器的指令用以儲存結果封裝資料運算元在該目的封裝資料暫存器中。該結果封裝資料運算元係用以包括複數個結果資料元件。各結果資料元件係用以具有
其對應索引係用以指示該結果封裝資料運算元中之該結果資料元件的資料元件位置之該來源資料元件之一者的值。
300:處理器
306:按索引散射至暫存器的指令
310:封裝資料暫存器
316:解碼單元
318:執行單元
332:來源封裝資料運算元
334:來源封裝索引運算元
335:目的封裝資料暫存器
336:結果封裝資料運算元
Claims (25)
- 一種處理器,包含:解碼單元,以將資料元件重新安排指令解碼,該指令用以指示來源封裝資料暫存器中的來源封裝資料運算元,其係具有各具備複數個位元之複數個來源資料元件,及指示目的封裝資料暫存器,該來源資料元件各者具有來源資料元件值及相對於該來源封裝資料運算元之最低有效端的來源資料元件位置;及執行單元,與該解碼單元耦接,該執行單元回應於該指令用以:針對複數個結果資料元件位置各者且相對於結果封裝資料運算元之最低有效端,決定該來源資料元件值任一者是否等於該結果資料元件位置;以及將該結果封裝資料運算元儲存在該目的封裝資料暫存器中,該結果封裝資料運算元具有複數個結果資料元件,該複數個結果資料元件各具有結果資料元件值,以及對應於該結果資料元件位置之不同者,其中各結果資料元件的該結果資料元件值係下列一者:等於最接近於該來源封裝資料運算元的一端之來源資料元件的來源資料元件位置,其係具有等於該目的封裝資料暫存器中該結果資料元件之該結果資料元件位置的來源資料元件值;及替代值,當沒有來源資料元件具有等於該結果資料元件之該結果資料元件位置的來源資料元件值時。
- 如申請專利範圍第1項的處理器,其中該來源封裝資料運算元係具有複數組重複來源資料元件值,且其中針對各組重複來源資料元件值,該結果封裝資料運算元係儲存該重複來源資料元件值之唯一一個最高有效者的來源資料元件位置。
- 如申請專利範圍第1項的處理器,其中回應於該指令,該執行單元係儲存該結果封裝資料運算元,其中該來源封裝資料運算元的該一端包含該來源封裝資料運算元之最高有效端。
- 如申請專利範圍第1項的處理器,其中回應於該指令,該執行單元係儲存該結果封裝資料運算元,其中該來源封裝資料運算元的該一端包含該來源封裝資料運算元之最低有效端。
- 如申請專利範圍第1項的處理器,其中回應於該指令,該執行單元係儲存結果遮罩運算元,其具有複數個遮罩元件的,該遮罩元件各者用以對應於該結果資料元件的不同者。
- 如申請專利範圍第5項的處理器,其中回應於該指令,該執行單元係儲存該結果遮罩運算元,其中:各遮罩元件係具有第一值,各遮罩元件係對應於等於來源資料元件位置的結果資料元件值;及各遮罩元件係具有第二不同值,該各遮罩元件係對應於其將係替代值的結果資料元件值。
- 如申請專利範圍第5項的處理器,其中各遮罩元 件係包含唯一一個單一位元。
- 如申請專利範圍第5項的處理器,其中回應於該指令,該執行單元係將該結果遮罩運算元儲存在遮罩暫存器中,且其中包括該資料元件重新安排指令之指令集的複數個其他指令係指定用於預測運算元的該遮罩暫存器,該預測運算元係用於預測封裝資料運算。
- 如申請專利範圍第1項的處理器,其中回應於該指令,該執行單元係儲存具有至少一個結果資料元件的該結果封裝資料運算元,該至少一個結果資料元件係具有其將係替代值的結果資料元件值,其中該替代值將係負數,且其中不係替代值的其他結果資料元件值將不係負數。
- 如申請專利範圍第1項的處理器,其中回應於該指令,該執行單元係儲存具有至少一個結果資料元件的該結果封裝資料運算元,該至少一個結果資料元件係具有其將係替代值的結果資料元件值,且其中該替代值係包含零值。
- 如申請專利範圍第1項的處理器,其中回應於該指令,該執行單元係儲存具有結果資料元件值的該結果封裝資料運算元,該結果資料元件值將係替代值,且其中該替代值係包含恰在該指令執行前儲存在該目的封裝資料暫存器中的對應位置中之資料元件的值。
- 如申請專利範圍第1項的處理器,其中回應於該指令,該執行單元係儲存具有至少四個結果資料元件的該結果封裝資料運算元,該結果資料元件包括具有該替代值 作為結果資料元件值的至少一個結果資料元件。
- 如申請專利範圍第1項的處理器,其中該來源資料元件各者包含整數索引,且其中各索引表示在各來源資料元件之最低有效位元組的最低階位元子集中。
- 如申請專利範圍第1項的處理器,其中該解碼單元也解碼按索引聚集至暫存器的指令,但該解碼單元不能解碼按索引散射至暫存器的指令。
- 如申請專利範圍第1項的處理器,其中該來源封裝資料運算元係以散射模式安排的該來源資料元件,且其中該結果封裝資料運算元係具有以聚集模式安排的該結果資料元件。
- 一種在處理器中的方法,包含:接收資料元件重新安排指令,該指令指示具有各具備複數個位元之複數個來源資料元件的來源封裝資料運算元並指示目的封裝資料暫存器,該來源資料元件各者具有來源資料元件值及相對於該來源封裝資料運算元之最低有效端的來源資料元件位置;及回應於該指令,將結果封裝資料運算元儲存在該目的封裝資料暫存器中,該結果封裝資料運算元具有複數個結果資料元件,該複數個結果資料元件各具有結果資料元件值,及相對於該結果封裝資料運算元之最低有效端的結果資料元件位置,其中至少三個該結果資料元件之各者的該結果資料元件值等於最接近於該來源封裝資料運算元的一端之來源資 料元件的來源資料元件位置,其具有等於該目的封裝資料暫存器中該結果資料元件之該結果資料元件位置的來源資料元件值;及其中該結果資料元件之至少一者的該結果資料元件值是替代值,當沒有來源資料元件具有等於該結果資料元件之該結果資料元件位置的來源資料元件值時。
- 如申請專利範圍第16項的方法,其中該儲存該結果封裝資料運算元包括儲存該結果封裝資料運算元,其中該來源封裝資料運算元的該一端包含該來源封裝資料運算元之最高有效端。
- 如申請專利範圍第16項的方法,進一步包含回應於該指令儲存結果遮罩運算元,該結果遮罩運算元具有複數個遮罩元件,該遮罩元件各者對應於該結果資料元件的不同者。
- 如申請專利範圍第18項的方法,其中該儲存該結果遮罩運算員包含儲存該結果遮罩運算元,其中:各遮罩元件具有第一值,該各遮罩元件係對應於等於來源資料元件位置的結果資料元件值;及各遮罩元件具有第二不同值,該各遮罩元件係對應於係替代值的結果資料元件值。
- 如申請專利範圍第16項的方法,其中該來源資料元件各者包含整數索引,且其中各索引表示在各來源資料元件之最低有效位元組的最低階位元子集中。
- 如申請專利範圍第16項的方法,更包含實施按 索引聚集至暫存器的指令,該指令指示該資料元件重新安排指令的該結果封裝資料運算元作為來源封裝資料運算元。
- 一種電腦系統,包含:互連;處理器,與該互連耦接,該處理器接收資料元件重新安排指令,該指令指示具有各具備複數個位元之複數個來源資料元件的來源封裝資料運算元及用以指示目的封裝資料暫存器,該來源資料元件各者具有來源資料元件值及相對於該來源封裝資料運算元之最低有效端的來源資料元件位置,回應於該指令,該處理器用以:針對複數個結果資料元件位置各者且相對於結果封裝資料運算元之最低有效端,決定該來源資料元件值任一者是否等於該結果資料元件位置;以及將該結果封裝資料運算元儲存在該目的封裝資料暫存器中,該結果封裝資料運算元具有複數個結果資料元件,該複數個結果資料元件各具有結果資料元件值,以及對應於該結果資料元件位置之不同者,其中各結果資料元件的該結果資料元件值係下列一者:等於最接近於該來源封裝資料運算元的一端之來源資料元件的來源資料元件位置,其具有等於該目的封裝資料暫存器中該結果資料元件之該結果資料元件位置的來源資料元件值;及替代值,當沒有來源資料元件具有等於該結果資 料元件之該結果資料元件位置的來源資料元件值時;及動態隨機存取記憶體(DRAM),與該互連耦接,該DRAM儲存包括按索引聚集至暫存器的指令的一組指令,該指令係用以指示該資料元件重新安排指令的該結果封裝資料運算元作為來源封裝資料運算元。
- 如申請專利範圍第22項的電腦系統,其中回應於該指令,該處理器係儲存該結果封裝資料運算元,其中該來源封裝資料運算元的該一端包含該來源封裝資料運算元之最高有效端。
- 一種包含非暫態機器可讀儲存媒體的製品,該非暫態機器可讀儲存媒體儲存資料元件重新安排指令,該資料元件重新安排指令指示具有各具備複數個位元之複數個來源資料元件的來源封裝資料運算元及指示目的封裝資料暫存器,該來源資料元件各者具有來源資料元件值及相對於該來源封裝資料運算元之最低有效端的來源資料元件位置,且該資料元件重新安排指令若由機器執行係用以導致該機器實施包含下列步驟的操作:針對複數個結果資料元件位置各者且相對於結果封裝資料運算元之最低有效端,決定該來源資料元件值任一者是否等於該結果資料元件位置;以及將該結果封裝資料運算元儲存在該目的封裝資料暫存器中,該結果封裝資料運算元具有複數個結果資料元件,該複數個結果資料元件各具有結果資料元件值,以及對應於該結果資料元件位置之不同者,其中各結果資料元件的 該結果資料元件值係下列一者:等於最接近於該來源封裝資料運算元的一端之來源資料元件的來源資料元件位置,其具有等於該目的封裝資料暫存器中該結果資料元件之該結果資料元件位置的來源資料元件值;及替代值,當沒有來源資料元件具有等於該結果資料元件之該結果資料元件位置的來源資料元件值時。
- 如申請專利範圍第24項的製品,其中該資料元件重新安排指令若由該機器執行係用以導致該機器實施包含下列步驟的操作:將儲存遮罩運算元儲存在遮罩暫存器中,其中該遮罩運算元具有用於該結果封裝資料運算元之各結果資料元件的單一遮罩位元。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/865,696 | 2015-09-25 | ||
| US14/865,696 US10503502B2 (en) | 2015-09-25 | 2015-09-25 | Data element rearrangement, processors, methods, systems, and instructions |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201729072A TW201729072A (zh) | 2017-08-16 |
| TWI706322B true TWI706322B (zh) | 2020-10-01 |
Family
ID=58387259
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW105126628A TWI706322B (zh) | 2015-09-25 | 2016-08-19 | 資料元件重新安排、處理器、方法、系統以及指令 |
Country Status (5)
| Country | Link |
|---|---|
| US (2) | US10503502B2 (zh) |
| CN (1) | CN107924307B (zh) |
| DE (1) | DE112016004348T5 (zh) |
| TW (1) | TWI706322B (zh) |
| WO (1) | WO2017052812A1 (zh) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10503502B2 (en) | 2015-09-25 | 2019-12-10 | Intel Corporation | Data element rearrangement, processors, methods, systems, and instructions |
| JP6222285B1 (ja) * | 2016-06-01 | 2017-11-01 | 富士電機株式会社 | データ処理装置、データ処理方法及びプログラム |
| US10459843B2 (en) | 2016-12-30 | 2019-10-29 | Texas Instruments Incorporated | Streaming engine with separately selectable element and group duplication |
| WO2018154273A1 (en) * | 2017-02-23 | 2018-08-30 | Arm Limited | Element by vector operations in a data processing apparatus |
| US10223114B1 (en) * | 2017-09-29 | 2019-03-05 | Intel Corporation | Fixed point to floating point conversion |
| US10782918B2 (en) * | 2018-09-06 | 2020-09-22 | Advanced Micro Devices, Inc. | Near-memory data-dependent gather and packing |
| CN111078282B (zh) * | 2018-10-19 | 2020-12-22 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
| US10862465B1 (en) * | 2019-09-02 | 2020-12-08 | Quantum Machines | Quantum controller architecture |
| US12086460B2 (en) * | 2020-12-23 | 2024-09-10 | Intel Corporation | Non-destructive readback and writeback for integrated circuit device |
| 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 |
| US20240403050A1 (en) * | 2023-06-05 | 2024-12-05 | Arm Limited | Vector comparison and/or population count operations |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120144089A1 (en) * | 2007-12-31 | 2012-06-07 | Hall Jonathan C | Scatter/gather accessing multiple cache lines in a single cache port |
| WO2013048368A1 (en) * | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector scatter-op and gather-op functionality |
| US20140019715A1 (en) * | 2011-12-23 | 2014-01-16 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
| US20140095779A1 (en) * | 2012-09-28 | 2014-04-03 | Andrew T. Forsyth | Processing memory access instructions that have duplicate memory indices |
| US20150074373A1 (en) * | 2012-06-02 | 2015-03-12 | Intel Corporation | Scatter using index array and finite state machine |
| TW201523437A (zh) * | 2013-06-28 | 2015-06-16 | 英特爾股份有限公司 | 用於存取一組暫存器爲複數較小暫存器或結合的較大暫存器之任一者的處理器、方法、及系統 |
| TW201525856A (zh) * | 2011-04-01 | 2015-07-01 | Intel Corp | 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 |
Family Cites Families (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
| US5838984A (en) * | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
| US5996066A (en) | 1996-10-10 | 1999-11-30 | Sun Microsystems, Inc. | Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions |
| US6088782A (en) | 1997-07-10 | 2000-07-11 | Motorola Inc. | Method and apparatus for moving data in a parallel processor using source and destination vector registers |
| US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
| US6018628A (en) * | 1998-06-16 | 2000-01-25 | Sun Microsystems, Inc. | Method of implementing parameterized types to be compatible with existing unparameterized libraries |
| US20040054877A1 (en) | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
| US20040236920A1 (en) | 2003-05-20 | 2004-11-25 | Sheaffer Gad S. | Methods and apparatus for gathering and scattering data associated with a single-instruction-multiple-data (SIMD) operation |
| EP1622009A1 (en) | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
| US8074026B2 (en) | 2006-05-10 | 2011-12-06 | Intel Corporation | Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems |
| US8447962B2 (en) | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
| US7984273B2 (en) | 2007-12-31 | 2011-07-19 | Intel Corporation | System and method for using a mask register to track progress of gathering elements from memory |
| US8230172B2 (en) | 2009-12-03 | 2012-07-24 | Intel Corporation | Gather and scatter operations in multi-level memory hierarchy |
| US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
| US10866807B2 (en) * | 2011-12-22 | 2020-12-15 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
| US9639354B2 (en) | 2011-12-22 | 2017-05-02 | Intel Corporation | Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions |
| CN104040489B (zh) * | 2011-12-23 | 2016-11-23 | 英特尔公司 | 多寄存器收集指令 |
| CN104025040B (zh) * | 2011-12-23 | 2017-11-21 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
| WO2013095669A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Multi-register scatter instruction |
| CN108647044B (zh) * | 2011-12-28 | 2022-09-13 | 英特尔公司 | 浮点缩放处理器、方法、系统和指令 |
| WO2013101232A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Packed rotate processors, methods, systems, and instructions |
| US9459866B2 (en) * | 2011-12-30 | 2016-10-04 | Intel Corporation | Vector frequency compress instruction |
| US9785436B2 (en) | 2012-09-28 | 2017-10-10 | Intel Corporation | Apparatus and method for efficient gather and scatter operations |
| CN104756068B (zh) | 2012-12-26 | 2018-08-17 | 英特尔公司 | 合并相邻的聚集/分散操作 |
| US20140281418A1 (en) * | 2013-03-14 | 2014-09-18 | Shihjong J. Kuo | Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions |
| US10503502B2 (en) | 2015-09-25 | 2019-12-10 | Intel Corporation | Data element rearrangement, processors, methods, systems, and instructions |
-
2015
- 2015-09-25 US US14/865,696 patent/US10503502B2/en active Active
-
2016
- 2016-08-08 WO PCT/US2016/045989 patent/WO2017052812A1/en not_active Ceased
- 2016-08-08 DE DE112016004348.1T patent/DE112016004348T5/de active Pending
- 2016-08-08 CN CN201680048981.4A patent/CN107924307B/zh active Active
- 2016-08-19 TW TW105126628A patent/TWI706322B/zh active
-
2019
- 2019-12-09 US US16/708,399 patent/US11941394B2/en active Active
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120144089A1 (en) * | 2007-12-31 | 2012-06-07 | Hall Jonathan C | Scatter/gather accessing multiple cache lines in a single cache port |
| TW201525856A (zh) * | 2011-04-01 | 2015-07-01 | Intel Corp | 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 |
| WO2013048368A1 (en) * | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector scatter-op and gather-op functionality |
| US20140019715A1 (en) * | 2011-12-23 | 2014-01-16 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
| US20150074373A1 (en) * | 2012-06-02 | 2015-03-12 | Intel Corporation | Scatter using index array and finite state machine |
| US20140095779A1 (en) * | 2012-09-28 | 2014-04-03 | Andrew T. Forsyth | Processing memory access instructions that have duplicate memory indices |
| TW201523437A (zh) * | 2013-06-28 | 2015-06-16 | 英特爾股份有限公司 | 用於存取一組暫存器爲複數較小暫存器或結合的較大暫存器之任一者的處理器、方法、及系統 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN107924307B (zh) | 2022-06-17 |
| US20200117451A1 (en) | 2020-04-16 |
| US20170090921A1 (en) | 2017-03-30 |
| DE112016004348T5 (de) | 2018-06-21 |
| WO2017052812A1 (en) | 2017-03-30 |
| CN107924307A (zh) | 2018-04-17 |
| TW201729072A (zh) | 2017-08-16 |
| US10503502B2 (en) | 2019-12-10 |
| US11941394B2 (en) | 2024-03-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI706322B (zh) | 資料元件重新安排、處理器、方法、系統以及指令 | |
| TWI715618B (zh) | 資料元件比較處理器、方法、系統及指令 | |
| JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
| TWI517042B (zh) | 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及製品 | |
| US10372449B2 (en) | Packed data operation mask concatenation processors, methods, systems, and instructions | |
| TWI566095B (zh) | 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令 | |
| CN104951401B (zh) | 排序加速处理器、方法、系统和指令 | |
| TWI761367B (zh) | 用於融合乘加運算的系統、裝置及方法 | |
| US9411593B2 (en) | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks | |
| TWI489381B (zh) | 多暫存器散布指令 | |
| TWI455024B (zh) | 唯一封裝資料元件識別處理器,方法,系統,及指令 | |
| TWI502494B (zh) | 用以執行絕對差之雙塊總數之方法,製品及裝置 | |
| CN104011645B (zh) | 用于产生其中在连续位置中的整数相差恒定整数跨度且最小整数从零偏移整数偏移量的整数序列的处理器、方法、系统和含有指令的介质 | |
| JP6419205B2 (ja) | プロセッサ、方法、システム、コンピュータシステム、およびコンピュータ可読記憶媒体 | |
| CN109196467B (zh) | 将源封包数据划分为通路的处理器、方法、系统和指令 | |
| CN104011643A (zh) | 打包数据重新安排控制索引产生处理器、方法、系统及指令 | |
| JP6745021B2 (ja) | 競合検出を実行するための方法および装置 | |
| CN109643234B (zh) | 用于合并数据元素并生成索引更新的处理器、方法、系统 | |
| TW201810029A (zh) | 用於跨步載入的系統、設備及方法 | |
| TWI526930B (zh) | 用以複製及遮蔽資料結構之設備及方法 | |
| TWI733718B (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 | |
| US20140189294A1 (en) | Systems, apparatuses, and methods for determining data element equality or sequentiality | |
| JP2017513087A (ja) | 連続ソースエレメントを複数のマスクされていない結果エレメントにストアすると共に、複数のマスクされた結果エレメントに伝搬するプロセッサ、方法、システム、及び命令 |