TWI552072B - 執行置換運算的處理器及具有該處理器的電腦系統 - Google Patents

執行置換運算的處理器及具有該處理器的電腦系統 Download PDF

Info

Publication number
TWI552072B
TWI552072B TW104110678A TW104110678A TWI552072B TW I552072 B TWI552072 B TW I552072B TW 104110678 A TW104110678 A TW 104110678A TW 104110678 A TW104110678 A TW 104110678A TW I552072 B TWI552072 B TW I552072B
Authority
TW
Taiwan
Prior art keywords
mask
source
processor
field
instruction
Prior art date
Application number
TW104110678A
Other languages
English (en)
Other versions
TW201530431A (zh
Inventor
艾蒙斯特阿法 歐德亞麥德維爾
羅柏 瓦倫泰
摩斯塔法 哈卡
吉瑟斯 柯柏
布萊特 托爾
馬克 查尼
泰 伍利
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201530431A publication Critical patent/TW201530431A/zh
Application granted granted Critical
Publication of TWI552072B publication Critical patent/TWI552072B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

執行置換運算的處理器及具有該處理器的電腦系統
本發明之實施例一般關於電腦系統領域。更具體地,在覆寫諸如表或索引之資料結構的一實施例中,本發明之實施例關於執行置換運算之設備及方法。
指令集或指令集架構(ISA)為關於程控之部分電腦架構,並可包括本機資料類型、指令、暫存器架構,定址模式、記憶體架構、中斷及例外處置、以及外部輸入及輸出(I/O)。指令用詞文中一般係指巨集指令-其為提供至處理器(或指令轉換器,其翻譯(例如,使用靜態二進制翻譯、包括動態編譯之動態二進制翻譯)、變形、仿真、或轉換指令為藉由處理器處理之一或多個其他指令)用於執行之指令-相對於微指令或微運算-其係處理器之解碼器解碼巨集指令之結果。
ISA與微架構有所區別,微架構為實施指令集之處理 器的內部設計。具不同微架構之處理器可共用共同指令集。例如Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自美國加州森尼維爾市「Advanced Micro Devices」公司之處理器,實施幾乎相同的x86指令集版本(具已添加新版本之擴展),但具有不同內部設計。例如,相同ISA暫存器架構可於使用知名技術之不同微架構中以不同方式實施,包括專用實體暫存器、使用暫存器重命名手段(例如,使用暫存器化名表(RAT)、記錄器緩衝器(ROB)、及停用暫存器檔案;使用多個暫存器地圖或集用場)之一或多個動態配置實體暫存器等。除非特別指明,文中使用之暫存器架構、暫存器檔案、及暫存器之用語係指可見於軟體/程式設計師以及指令指明暫存器之方式。其中特異性是需要的,邏輯、架構、或軟體可見之形容詞將用以指出暫存器架構中暫存器/檔案,同時不同形容詞將用以指定暫存器於特定微架構(例如,實體暫存器、記錄器緩衝器、停用暫存器、暫存器集用場)。
指令集包括一或多個指令格式。特定指令格式定義各式欄位(位元數量、位元位置)以於其他物件中指明將執行之運算(運算碼)及其上將執行運算之運算元。若干指令格式經由指令模板之定義(或子格式)而進一步分解。例如,特定指令格式之指令模板可經定義而具有指令格式之欄位的不同子集(所包括之欄位典型地依相同順序,但因包括較少欄位,至少若干具有不同位元位置),及/或經定義而具有不同解譯之特定欄位。因而,ISA之每一指 令係使用特定指令格式表示(且若有定義則依指令格式之指令模板之特定者),並包括用於指明運算及運算元之欄位。例如,示範ADD指令具有特定運算碼及包括運算碼欄位之指令格式,以指明運算碼及運算元欄位而選擇運算元(來源1/目的地及來源2);且指令流中ADD指令之發生將於運算元欄位中具有特定內容,其選擇特定運算元。
科學、金融、自動向量化通用、RMS(確認、採礦、合成)、以及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音識別演算法及音頻處理)通常需要在大量資料項目(稱為「資料並行」)上執行相同運算。單一指令多重資料(SIMD)係指致使處理器於多重資料項目上執行運算之指令類型。SIMD技術特別適於處理器,其可邏輯地將暫存器中位元劃分為若干固定尺寸之資料元件,其每一者代表個別值。例如,256位元暫存器中位元可指定為將運算之來源運算元,例如四個個別64位元封裝資料元件(四字(Q)尺寸資料元件)八個個別32位元封裝資料元件(雙字(D)尺寸資料元件)、十六個個別16位元封裝資料元件(字(W)尺寸資料元件)、或三十二個個別8位元資料元件(位元組(B)尺寸資料元件)。此資料類型稱為封裝資料類型或向量資料類型,且此資料類型之運算元稱為封裝資料運算元或向量運算元。換言之,封裝資料項目或向量係指一連串封裝資料元件,且封裝資料運算元或向量運算元為 SIMD指令之來源或目的地運算元(亦稱為封裝資料指令或向量指令)。
藉由範例,一SIMD指令類型說明以垂直方式在二來源向量運算元上執行之單一向量運算,以產生相同尺寸、具相同數量資料元件、及依相同資料元件順序之目的地向量運算元(亦稱為結果向量運算元)。來源向量運算元中資料元件稱為來源資料元件,同時目的地向量運算元中資料元件稱為目的地或結果資料元件。該些來源向量運算元為相同尺寸並包含相同寬度資料元件,因而其包含相同數量資料元件。相同位元位置中來源資料元件處於資料元件之二來源向量運算元形式對(亦稱為相應資料元件;即,每一來源運算元對應之資料元件位置0中資料元件、每一來源運算元對應之資料元件位置1中資料元件等)。藉由分別在每一來源資料元件對上執行之SIMD指令指定運算,以產生匹配數量結果資料元件,因而每一來源資料元件對具有相應結果資料元件。因為運算為垂直且因為結果向量運算元為相同尺寸,具有相同數量資料元件,且結果資料元件依相同資料元件順序儲存,作為來源向量運算元,結果資料元件處於結果向量運算元之相同位元位置,作為來源向量運算元中其相應來源資料元件對。除了此示範類型SIMD指令外,存在各種其他類型SIMD指令(例如,僅具有一個或具有二個以上來源向量運算元以水平方式運算,產生不同尺寸之結果向量運算元,其具有不同尺寸資料元件及/或具有不同資料元件順序)。應理解的是 目的地向量運算元(或目的地運算元)用詞定義為執行藉由指令指定運算之直接結果,包括將目的地運算元儲存於位置(暫存器或藉由指令指定之記憶體位址),使得其可藉由另一指令存取作為來源運算元(藉由另一指令規範相同位置)。
諸如藉由Intel® CoreTM處理器採用之SIMD技術具有指令集,包括x86、MMXTM、SIMD流擴展(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令,在應用效能上已有顯著進步。一額外SIMD擴展組係指先進向量延伸(AVX)(AVX1及AVX2)及使用向量延伸(VEX)編碼方案,已、已發佈及/或發表(例如詳2011年10月Intel® 64及IA-32架構軟體開發者手冊;及詳2011年6月Intel®先進向量延伸編程參考文獻)。
關於本發明之實施例的背景
習知指令集架構(ISA)已使用指令,從來源運算元複製雙字(或字),並將其插入在藉由第一來源運算元中標示指出之位置的目的地運算元中。然而,希望某些應用(例如,查閱表)可從使用個別指標之二不同來源置換。
100‧‧‧處理器管線
102‧‧‧提取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧配置級
110‧‧‧重命名級
112‧‧‧排程級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧寫回/記憶體寫入級
122‧‧‧例外處理級
117‧‧‧確定級
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令高速緩衝記憶體單元
136‧‧‧指令翻譯後備緩衝器
138‧‧‧指令提取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧重命名/配置器單元
154‧‧‧退役單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料翻譯後備緩衝器單元
174‧‧‧資料高速緩衝記憶體單元
176‧‧‧2級高速緩衝記憶體單元
190‧‧‧處理器核心
202A-N‧‧‧核心
206‧‧‧共用高速緩衝記憶體單元
208‧‧‧特殊用途邏輯
210‧‧‧系統代理器
212、602‧‧‧互連單元
214‧‧‧整合記憶體控制器單元
216‧‧‧匯流排控制器單元
300、500‧‧‧系統
320‧‧‧控制器集線器
340、432、434‧‧‧記憶體
345、438、620‧‧‧協處理器
350‧‧‧輸入/輸出集線器
360、414、514、515‧‧‧輸入/輸出裝置
390‧‧‧圖形記憶體控制器集線器
400‧‧‧多處理器系統
416‧‧‧第一匯流排
418‧‧‧匯流排橋接器
420‧‧‧第二匯流排
422‧‧‧鍵盤及/或滑鼠
424‧‧‧音頻I/O
427‧‧‧通訊裝置
428‧‧‧儲存單元
430‧‧‧指令/碼及資料
439‧‧‧高性能介面
450‧‧‧點對點互連
472、482‧‧‧整合記憶體控制器單元
452、454、478、488‧‧‧點對點介面
476、494、486、498‧‧‧點對點介面電路
490‧‧‧晶片組
496‧‧‧介面
600‧‧‧晶片上系統
610‧‧‧應用處理器
630‧‧‧靜態隨機存取記憶體單元
632‧‧‧直接記憶體存取單元
640‧‧‧顯示單元
702‧‧‧高階語言
704‧‧‧編譯器
706、710‧‧‧二進制碼
708‧‧‧指令集編譯器
712‧‧‧指令轉換器
800‧‧‧處理器
802‧‧‧第一來源
803‧‧‧第二來源
804‧‧‧目的地
805‧‧‧置換邏輯
870‧‧‧遮罩資料結構
1002、1003、1004、1005、1006、1007、1008、1010、1011、1102、1103、1104、1105、1106、1107、1108、1110、1111‧‧‧程序
1200‧‧‧通用向量親和指令格式
1205‧‧‧無記憶體存取
1210‧‧‧全捨入控制型運算
1212‧‧‧部分捨入控制型運算
1215‧‧‧資料轉換型運算
1217‧‧‧VSIZE型運算
1220‧‧‧記憶體存取
1225‧‧‧記憶體存取暫時
1227‧‧‧記憶體存取寫入遮罩控制
1230‧‧‧記憶體存取非暫時
1240‧‧‧格式欄位
1242‧‧‧基運算欄位
1244‧‧‧暫存器指標欄位
1246‧‧‧修飾符欄位
1250‧‧‧擴大運算欄位
1252‧‧‧阿爾發欄位
1252A‧‧‧RS欄位
1252A.1、1257A.1‧‧‧捨入
1252A.2‧‧‧資料轉換
1252B‧‧‧驅逐提示欄位
1252B.1‧‧‧暫時
1252B.2‧‧‧非暫時
1252C‧‧‧寫入遮罩控制欄位
1254‧‧‧貝他欄位
1256‧‧‧抑制所有浮點例外欄位
1257A‧‧‧RL欄位
1257A.2‧‧‧向量長度
1257B‧‧‧播送欄位
1258‧‧‧捨入運算控制欄位
1259A‧‧‧捨入運算欄位
1259B‧‧‧向量長度欄位
1260‧‧‧標度欄位
1262A‧‧‧位移欄位
1262B‧‧‧位移因素欄位
1264‧‧‧資料元件寬度欄位
1268‧‧‧級別欄位
1268A‧‧‧A級
1268B‧‧‧B級
1270‧‧‧寫入遮罩欄位
1272‧‧‧立即值欄位
1274‧‧‧全運算碼欄位
1300‧‧‧特定向量親和指令格式
1302‧‧‧EVEX前置
1305‧‧‧REX欄位
1310‧‧‧REX'欄位
1315‧‧‧運算碼映射欄位
1325‧‧‧前置編碼欄位
1330‧‧‧真實運算碼欄位
1340‧‧‧Mod R/M欄位
1342‧‧‧基運算欄位
1344‧‧‧暫存器指標欄位
1346‧‧‧R/M欄位
1425‧‧‧通用暫存器
1445‧‧‧純量浮點堆疊暫存器檔案
1450‧‧‧MMX封裝整數平面暫存器檔案
1500‧‧‧指令解碼器
1502‧‧‧互連網路
1504‧‧‧2級高速緩衝記憶體
1506、1506A‧‧‧1級高速緩衝記憶體
1508‧‧‧純量單元
1510‧‧‧向量單元
1512‧‧‧純量暫存器
1514‧‧‧向量暫存器
1520‧‧‧拌和單元
1522A、1522B‧‧‧數字轉換單元
1524‧‧‧複製單元
1526‧‧‧寫入遮罩暫存器
1528‧‧‧算術邏輯單元
圖1A為方塊圖,描繪依據本發明之實施例之示範依序管線及示範暫存器重命名、無序發出/執行管線;圖1B為方塊圖,描繪依據本發明之實施例之處理器 中所包括之依序架構核心及示範暫存器重命名、無序發出/執行架構核心之示範實施例;圖2為依據本發明之實施例之單一核心處理器及具整合記憶體控制器及圖形的多核心處理器之方塊圖;圖3描繪依據本發明之一實施例之系統之方塊圖;圖4描繪依據本發明之實施例之第二系統之方塊圖;圖5描繪依據本發明之實施例之第三系統之方塊圖;圖6描繪依據本發明之實施例之單晶片系統(SoC)之方塊圖;圖7描繪依據本發明之實施例之對比使用軟體指令轉換器將來源指令集中二進制指令轉換為目標指令集中二進制指令之方塊圖;圖8描繪依據本發明之一實施例之用於置換資料元件之處理器架構;圖9描繪依據本發明之另一實施例之用於置換資料元件之處理器架構;圖10描繪依據本發明之一實施例之用於置換資料元件之方法;圖11描繪依據本發明之另一實施例之用於置換資料元件之方法;圖12A及12B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其指令模板;圖13A-D為方塊圖,描繪依據本發明之實施例之示範特定向量親和指令格式; 圖14為依據本發明之一實施例之暫存器架構之方塊圖;圖15A為依據本發明之實施例之單一處理器核心,連同其至晶粒上互連網路之連接及其2級(L2)高速緩衝記憶體之局部子集之方塊圖;以及圖15B為依據本發明之實施例之圖14A中部分處理器核心之展開圖。
【發明內容】及【實施方式】 示範處理器架構及資料類型
圖1A為方塊圖,描繪依據本發明之實施例之示範依序管線及示範暫存器重命名、無序發出/執行管線。圖1B為方塊圖,描繪依據本發明之實施例之處理器中所包括之依序架構核心及示範暫存器重命名、無序發出/執行架構核心之示範實施例。圖1A-B中實線框描繪依序管線及依序核心,同時虛線框之可選添加描繪暫存器重命名、無序發出/執行管線及核心。假定依序方面為無序方面之子集,將說明無序方面。
在圖1A中,處理器管線100包括提取級102、長度解碼級104、解碼級106、配置級108、重命名級110、排程(亦已知作為調度或發出)級112、暫存器讀取/記憶體讀取級114、執行級116、寫回/記憶體寫入級118、例外處理級122、及確定級124。
圖1B顯示處理器核心190,包括耦接至執行引擎單 元150之前端單元130,且二者均耦接至記憶體單元170。核心190可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心型。有關又另一選項,核心190可為專用核心,諸如網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心等。
前端單元130包括耦接至指令高速緩衝記憶體單元134之分支預測單元132,指令高速緩衝記憶體單元134耦接至指令翻譯後備緩衝器(TLB)136,指令翻譯後備緩衝器(TLB)136耦接至指令提取單元138,指令提取單元138耦接至解碼單元140。解碼單元140(或解碼器)可解碼指令及產生輸出,例如一或多個微運算、微碼登錄點、微指令、其他指令、或其他控制信號,其係解碼自、反映、或源自原始指令。解碼單元140可使用各式不同手段予以實施。適當手段之範例包括但不侷限於查閱表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心190包括微碼ROM或儲存用於某巨集指令之微碼的其他媒體(例如在解碼單元140中或前端單元130內)。解碼單元140耦接至執行引擎單元150中之重命名/配置器單元152。
執行引擎單元150包括耦接至退役單元154及一組一或多個排程器單元156之重命名/配置器單元152。排程器單元156代表任何數量不同排程器,包括保留站、中央 指令視窗等。排程器單元156耦接至實體暫存器檔案單元158。每一實體暫存器檔案單元158代表一或多個實體暫存器檔案,各儲存一或多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如指令指標,其係將執行之下一指令的位址)等。在一實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。該些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元158藉由退役單元154重疊以描繪其中可實施暫存器重命名及失序執行的各種方式(例如使用重排緩衝器及退役暫存器檔案;使用將來檔案、歷史緩衝器、及退役暫存器檔案;使用暫存器映射及暫存器池等)。退役單元154及實體暫存器檔案單元158耦接至執行叢集160。執行叢集160包括一組一或多個執行單元162及一組一或多個記憶體存取單元164。執行單元162可在各類資料(例如純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)上實施各式運算(例如偏移、加法、減法、乘法)。雖然若干實施例可包括若干執行單元專用於特定功能或功能集,其他實施例可僅包括一執行單元或多執行單元而均實施所有功能。因為某實施例製造用於某類型資料/運算之個別管線(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或各具有其本身排程器單元、實體暫存器檔案單元、及/或執行叢集之記憶體存取管線- 且在個別記憶體存取管線之狀況下,實施某實施例,其中僅該管線之執行叢集具有記憶體存取單元164),顯示可能為複數個之排程器單元156、實體暫存器檔案單元158、及執行叢集160。亦應理解的是,其中使用個別管線,一或多個該些管線可為無序發出/執行及其餘為依序。
該組記憶體存取單元164耦接至記憶體單元170,其包括耦接至資料高速緩衝記憶體單元174之資料TLB單元172,且資料高速緩衝記憶體單元174耦接至2級(L2)高速緩衝記憶體單元176。在一示範實施例中,記憶體存取單元164可包括載入單元、儲存位址單元、及儲存資料單元,每一者耦接至記憶體單元170中之資料TLB單元172。指令高速緩衝記憶體單元134進一步耦接至記憶體單元170中之2級(L2)高速緩衝記憶體單元176。L2高速緩衝記憶體單元176耦接至一或多個其他級之高速緩衝記憶體及最終耦接至主記憶體。
藉由範例,示範暫存器重命名、無序發出/執行核心架構可實施管線100如下:1)指令提取138實施提取及長度解碼級102及104;2)解碼單元140實施解碼級106;3)重命名/配置器單元152實施配置級108及重命名級110;4)排程器單元156實施排程級112;5)實體暫存器檔案單元158及記憶體單元170實施暫存器讀取/記憶體讀取級114;執行叢集160實施執行級116;6)記憶體單元170及實體暫存器檔案單元158實施寫回/記憶 體寫入級118;7)各式單元可包含於例外處理級122中;以及8)退役單元154及實體暫存器檔案單元158實施確定級124。
核心190可支援一或多個指令集(例如x86指令集(具已附加新版本之若干延伸);美國加州森尼維爾市「MIPS科技公司」之MIPS指令集;美國加州森尼維爾市「ARM控股公司」之ARM指令集(具諸如NEON之可選額外延伸)),包括文中所說明之指令。在一實施例中,核心190包括邏輯以支援封裝資料指令集延伸(例如AVX1、AVX2,及/或以下說明之通用向量親和指令格式(U=0及/或U=1)的若干形式),藉以允許藉由使用封裝資料實施之許多多媒體應用使用之運算。
應理解的是,核心可支援多線程(執行二或更多並行運算或線程組合),並可以各種方式實施,包括時間切片多線程、同步多線程(其中單一實體核心提供實體核心為同步多線程之每一線程的邏輯核心)、或其組合(例如時間切片提取及解碼以及之後的同步多線程,諸如Intel®超線程技術)。
雖然以無序執行之上下文說明暫存器重命名,應理解的是暫存器重命名可用於依序架構。雖然所描繪之處理器的實施例亦包括個別指令及資料高速緩衝記憶體單元134/174,以及共用L2高速緩衝記憶體單元176,替代實施例可具有用於指令及資料之單一內部高速緩衝記憶體,諸如1級(L1)內部高速緩衝記憶體,或多級內部高速緩 衝記憶體。在若干實施例中,系統可包括內部高速緩衝記憶體及核心及/或處理器外部之外部高速緩衝記憶體的組合。另一方面,所有高速緩衝記憶體可為核心及/或處理器外部。
圖2為依據本發明之實施例之處理器200之方塊圖,其可具有一個以上核心,可具有整合記憶體控制器,及可具有具有整合圖形。圖2中實線框描繪處理器200,其具單一核心202A、系統代理器210、一組一或多個匯流排控制器單元216,同時可選添加虛線框描繪替代處理器200,其具多核心202A-N、系統代理器單元210中一組一或多個整合記憶體控制器單元214、及特殊用途邏輯208。
因而,處理器200之不同實施可包括:1)CPU,其具整合圖形及/或科學(傳輸率)邏輯之特殊用途邏輯208(其可包括一或多個核心),及一或多個通用核心之核心202A-N(例如通用依序核心、通用無序核心、二者組合);2)協處理器,其具希望主要用於圖形及/或科學(傳輸率)之大量特殊用途核心之核心202A-N;及3)協處理器,其具大量通用依序核心之核心202A-N。因而,處理器200可為通用處理器、協處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(GPGPU)、高傳輸率多整合核心(MIC)協處理器(包括30或更多核心)、嵌入處理器等。處理器可於一或多個晶片上實施。處理器200可為使 用任何若干處理技術之一或多個基板的一部分及/或可於其上實施,諸如BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或多級高速緩衝記憶體、一組或一或多個共用高速緩衝記憶體單元206、及耦接至一組整合記憶體控制器單元214的外部記憶體(未顯示)。一組共用高速緩衝記憶體單元206可包括一或多個中級高速緩衝記憶體,諸如2級(L2)、3級(L3)、4級(L4)、或其他級高速緩衝記憶體、最後級高速緩衝記憶體(LLC)、及/或其組合。雖然在一實施例中,以環形為主之互連單元212互連整合圖形邏輯208、一組共用高速緩衝記憶體單元206、及系統代理器單元210/整合記憶體控制器單元214,替代實施例可使用任何熟知技術用於互連該等單元。在一實施例中,一或多個高速緩衝記憶體單元206及核心202A-N之間維持一致性。
在若干實施例中,一或多個核心202A-N可多線程。系統代理器210包括協調及操作核心202A-N之該些組件。系統代理器單元210可包括例如電力控制單元(PCU)及顯示單元。PCU可為或包括用於調節核心202A-N及整合圖形邏輯208之電力狀態所需的邏輯及組件。顯示單元係用於驅動一或多個外部連接之顯示器。
核心202A-N在架構指令集方面可為同質或異質;即,核心202A-N之二或更多者可執行相同指令集,同時其他僅可執行指令集之子集或不同指令集。
圖3-6為示範電腦架構之方塊圖。本技藝中已知用於 膝上型電腦、桌上型電腦手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置及各式其他電子裝置的其他系統設計及組態亦適當。通常,可併入處理器及/或如文中所揭露之其他執行邏輯的廣泛系統或電子裝置一般均適當。
現在參照圖3,顯示依據本發明之一實施例之系統300之方塊圖。系統300可包括一或多個處理器310、315,其耦接至控制器集線器320。在一實施例中,控制器集線器320包括圖形記憶體控制器集線器(GMCH)390及輸入/輸出集線器(IOH)350(其可在個別晶片上);GMCH 390包括耦接記憶體340及協處理器345之記憶體及圖形控制器;IOH 350將輸入/輸出(I/O)裝置360耦接至GMCH 390。另一方面,記憶體及圖形控制器之一或二者整合於處理器內(如文中所說明),記憶體340及協處理器345直接耦接至處理器310及具IOH 350之單一晶片中的控制器集線器320。
圖3中以虛線標示額外處理器315之可選特性。每一處理器310、315可包括一或多個文中所說明之處理核心,並可為處理器200之若干版本。
記憶體340可為例如動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或二者組合。對至少一實施例而言,控制器集線器320經由諸如前端匯流 排(FSB)之多站式匯流排、諸如快速路徑互連(QPI)之點對點介面、或類似連接395,可與處理器310、315通訊。
在一實施例中,協處理器345為專用處理器,諸如高傳輸率MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。在一實施例中,控制器集線器320可包括整合圖形加速器。
在包括架構、微架構、熱、電力消耗特性等優點之度量頻譜方面,實體資源310、315之間可存在各類差異。
在一實施例中,處理器310執行控制一般類型之資料處理運算的指令。指令內嵌入可為協處理器指令。處理器310將該些協處理器指令識別為應藉由依附之協處理器345執行之類型。因此,處理器310將協處理器匯流排或其他互連上之該些協處理器指令(或代表協處理器指令之控制信號)發出至協處理器345。協處理器345接收並執行接收之協處理器指令。
現在參照圖4,顯示依據本發明之實施例之第一更特定示範系統400之方塊圖。如圖4中所示,多處理器系統400為點對點互連系統,包括經由點對點互連450耦接之第一處理器470及第二處理器480。處理器470及480之每一者可為處理器200之若干版本。在本發明之一實施例中,處理器470及480分別為處理器310及315,同時協處理器438為協處理器345。在另一實施例中,處理器470及480分別為處理器310及協處理器345。
所示處理器470及480分別包括整合記憶體控制器(IMC)單元472及482。處理器470亦包括作為其匯流排控制器單元點對點(P-P)介面476及478之一部分;類似地,第二處理器480包括P-P介面486及488。處理器470、480可經由使用P-P介面電路478、488之點對點(P-P)介面450交換資訊。如圖4中所示,IMC 472及482耦接處理器至個別記憶體,即記憶體432及記憶體434,其可為局部附著至各處理器之主記憶體部分。
處理器470、480可經由使用點對點介面電路476、494、486、498之個別P-P介面452、454而各與晶片組490交換資訊。晶片組490可選擇地經由高性能介面439而與協處理器438交換資訊。在一實施例中,協處理器438為專用處理器,諸如高傳輸率MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。
共用高速緩衝記憶體(未顯示)可包括於任一處理器中或在二處理器外部,仍經由P-P互連與處理器連接,使得若處理器處於低電力模式,任一或二處理器之局部高速緩衝記憶體資訊可儲存於共用高速緩衝記憶體中。
晶片組490可經由介面496耦接至第一匯流排416。在一實施例中,第一匯流排416可為週邊組件互連(PCI)匯流排,或諸如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範圍未限制於此。
如圖4中所示,各式I/O裝置414可耦接至第一匯流排416,連同將第一匯流排416耦接至第二匯流排420之匯流排橋接器418。在一實施例中,一或多個額外處理器415耦接至第一匯流排416,諸如協處理器、高傳輸率MIC處理器、GPGPU、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、欄位可編程閘陣列、或任何其他處理器。在一實施例中,第二匯流排420可為低接腳數(LPC)匯流排。在一實施例中,各式裝置可耦接至第二匯流排420,包括例如鍵盤及/或滑鼠422、通訊裝置427及儲存單元428,諸如磁碟機或可包括指令/碼及資料430之其他大量儲存裝置。此外,音頻I/O 424可耦接至第二匯流排420。請注意,亦可能為其他架構。例如,取代圖4之點對點架構、系統可實施多站式匯流排或其他該等架構。
現在參照圖5,顯示依據本發明之實施例之第二更特定示範系統500之方塊圖。圖4及5中類似元件配賦類似代號,且圖5已省略圖4之某方面,以避免模糊圖5之其他方面。
圖5描繪處理器470、480可分別包括整合記憶體及I/O控制邏輯(「CL」)472及482。因而,CL 472、482包括整合記憶體控制器單元及包括I/O控制邏輯。圖5描繪不僅記憶體432、434耦接至CL 472、482,I/O裝置514亦耦接至控制邏輯472、482。舊有I/O裝置515耦接至晶片組490。
現在參照圖6,顯示依據本發明之實施例之SOo 600之方塊圖。圖2中類似元件配賦類似代號。另外,虛線框為更多先進SoC上之可選特徵。在圖6中,互連單元602耦接至:包括一組一或多個核心202A-N及共用高速緩衝記憶體單元206之應用處理器610;系統代理器單元210;匯流排控制器單元216;整合記憶體控制器單元214;一組或一或多個協處理器620,其可包括整合圖形邏輯、影像處理器、音頻處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元630;直接記憶體存取(DMA)單元632;及顯示單元640,用於耦接至一或多個外部顯示器。在一實施例中,協處理器620包括特殊用途處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高傳輸率MIC處理器、嵌入處理器等。
文中所揭露之手段的實施例可以硬體、軟體、韌體、或該等實施方法之組合實施。本發明之實施例可實施為電腦程式或於包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上執行之程式碼。
諸如圖4中所描繪之碼430的程式碼可應用於輸入指令以實施文中所說明之功能並產生輸出資訊。輸出資訊可以已知方式應用於一或多個輸出裝置。為此應用之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器。
程式碼可以高階程序或物件導向編程語言實施,以與處理系統通訊。若有需要,程式碼亦可以組合語言或機器語言實施。事實上,文中所說明之手段不侷限於任何特別編程語言之範圍。在任何狀況下,語言可為編譯或解譯語言。
至少一實施例之一或多個方面可藉由儲存於機器可讀取媒體上之代表指令實施,其代表處理器內之各式邏輯,當藉由機器讀取時,其致使機器製造邏輯以實施文中所說明之技術。該等代表已知為「IP核心」,可儲存於實體機器可讀取媒體上,並供應至各式各戶或製造廠以載入實際製造邏輯或處理器之製造機器。
該等機器可讀取儲存媒體可包括而不侷限於藉由機器或裝置製造或形成之物品的非暫時實體安排,包括諸如硬碟之儲存媒體;包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁性光碟之任何其他類型碟片;諸如唯讀記憶體(ROM)之半導體裝置;諸如動態隨機存取記憶體(DRAM)之隨機存取記憶體(RAM);靜態隨機存取記憶體(SRAM);可抹除可編程唯讀記憶體(EPROM);快閃記憶體;電可抹除可編程唯讀記憶體(EEPROM);相位改變記憶體(PCM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,本發明之實施例亦包括非暫時實體機器可讀取媒體,其包含指令或包含設計資料,諸如定義文中所說明 之結構電路、設備、處理器及/或系統特徵之硬體說明語言(HDL)。該等實施例可亦稱為程式產品。
在若干狀況下,指令轉換器可用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如使用靜態二進制翻譯、包括動態編譯之動態二進制翻譯)、變形、仿真、或轉換至藉由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合予以實施。指令轉換器可在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖7為依據本發明之實施例之對比使用軟體指令轉換器以將來源指令集中之二進制指令轉換至目標指令集中之二進制指令的方塊圖。在所描繪之實施例中,指令轉換器為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或其各式組合實施。圖7顯示以高階語言702之程式,可使用x86編譯器704編譯以產生x86二進制碼706,其可藉由具至少一x86指令集核心之處理器716本機執行。具至少一x86指令集核心之處理器716代表任何處理器,其可藉由相容地執行或處理(1)Intel x86指令集核心之指令集的主要部分或(2)應用之目標碼版本或目標係在具至少一x86指令集核心之Intel處理器上運行之其他軟體,以便達成與具至少一x86指令集核心之Intel處理器的實質上相同結果,而實質上實施與具至少一x86指令集核心之Intel處理器的相同功能。x86編譯器704代表可操作以產生x86二進制碼706(例如目標 碼)之編譯器,其具或不具額外鏈接處理而可於具至少一x86指令集核心之處理器716上執行。類似地,圖7顯示以高階語言702之程式,可使用替代指令集編譯器708編譯以產生替代指令集二進制碼710,其可藉由不具至少一x86指令集核心之處理器714本機執行(例如具核心以執行美國加州森尼維爾市「MIPS科技公司」之MIPS指令集及/或執行美國加州森尼維爾市「ARM控股公司」之ARM指令集的處理器)。指令轉換器712用以將x86二進制碼706轉換為可藉由不具x86指令集核心之處理器714本機執行之碼。此轉換之碼不太可能與替代指令集二進制碼710相同,因為可如此之指令轉換器難以製造;然而,轉換之碼將完成一般運算並組成來自替代指令集之指令。因而,指令轉換器712代表軟體、韌體、硬體、或其組合,經由仿真、模擬、或任何其他處理,允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進制碼706。
用於執行置換運算之本發明之實施例
以下說明本發明之實施例包括新指令以採取二來源及索引作為至置換運算之輸入。在一實施例中,第二來源於目的地中編碼(即儲存於目的地暫存器中之資料被覆寫)。在運算中,指令從第一運算元(即目的地)及第三運算元(即第二來源輸入)置換16位元、32位元、或64位元值,並將其插入在藉由第二運算元(即第一來源輸 入)中索引所指出之位置的目的地運算元中。在一實施例中,所說明之指令允許將來源運算元中16位元、32位元、或64位元值複製至目的地運算元中一個以上之位置。在此狀況下,可將(儲存於第一來源輸入中之相同索引)重覆使用於例如第二迭代,同時被置換之(儲存於目的地運算元中的表元件)被覆寫。
在另一實施例中,儲存於第二運算元中之索引值被覆寫,且(儲存於目的地運算元中之表)被保留。因為被保留,所以相同表可重覆使用於例如另一迭代,同時索引元件被覆寫。
圖8描繪處理器800之實施例,其中儲存於第一來源(SRC1)中之索引元件(IN1-IN4)被保留。在此實施例中,置換邏輯805從第二來源(SRC2)803及目的地(DST)804選擇資料元件,並依據儲存於第一來源(SRC1)802內之索引值,將選擇之資料元件置換回目的地(DST)804。因而,如同所描繪者,回應於索引之第一部分(IN1),置換邏輯805選擇將複製至目的地804中之第一資料元件(位元0:31)之元件E-L之任一者;回應於索引之第二部分(IN2),置換邏輯805選擇將複製至目的地804中之第二資料元件(位元32:63)之元件E-L之任一者;回應於索引之第三部分(IN3),置換邏輯805選擇將複製至目的地804中之第三資料元件(位元64:96)之元件E-L之任一者;以及回應於索引之第四部分(IN4),置換邏輯805選擇將複製至目的地804中之第四 資料元件(位元96:127)之元件E-L之任一者。
在一實施例中,遮罩位元亦可於遮罩資料結構870內指定用於每一目的地暫存器資料元件。若目的地暫存器中與特定資料元件相關之遮罩位元設定為真,置換邏輯805便如以上說明將資料元件E-L置換入目的地暫存器804。在一實施例中,若遮罩位元設定為偽,置換邏輯805便將所有零寫入相關目的地暫存器條目。例如,在一實施例中,若與目的地暫存器位元0:31相關之遮罩位元設定為偽值,置換邏輯805便將所有零寫入位元0:31。上述回應於遮罩值將零寫入目的地資料元件之技術文中稱為「歸零遮罩」。當然,以上所說明之遮罩位元值可相反,同時符合本發明(例如,真=遮罩,偽=無遮罩)。
另一方面,本發明之一實施例使用「合併遮罩」,其中先前儲存於目的地暫存器805中之資料元件值維持。因而,回至以上範例,若使用「合併遮罩」,位元0:31將維持其先前值。
值得注意的是,在圖8中所示之實施例中,索引值被保留(即未覆寫)並因此可用於後續程式迴路之迭代。然而,儲存於目的地暫存器804內之資料值(例如,用於某運算之表值)被覆寫。
藉由對比,在圖9中所示之處理器800之實施例中,儲存於目的地運算元(DST)804內之索引值被覆寫,同時置換邏輯805將儲存於第一來源(SRC1)802或第二來源(SRC2)803中之資料值A-H之任一者,置換至目的 地運算元804內之資料元件。尤其,如同所描繪者,回應於索引之第一部分(IN1),置換邏輯805選擇將被複製至目的地804中第一資料元件(位元0:31)之元件A-H之任一者;回應於索引之第二部分(IN2),置換邏輯805選擇將被複製至目的地804中第二資料元件(位元32:63)之元件A-H之任一者;回應於索引之第三部分(IN3),置換邏輯805選擇將被複製至目的地804中第三資料元件(位元64:96)之元件A-H之任一者;以及索引之第四部分(IN4),置換邏輯805選擇將被複製至目的地804中第四資料元件(位元96:127)之元件A-H之任一者。
如圖8中所示之實施例,遮罩位元亦可於遮罩資料結構870內被指定用於每一目的地暫存器資料元件。若與目的地暫存器中特定資料元件相關之遮罩位元設定為真,置換邏輯805便如以上說明將資料元件E-L置換入目的地暫存器804。在一實施例中,若遮罩位元設定為偽,置換邏輯805便將所有零寫入相關目的地暫存器條目。例如,在一實施例中,若與目的地暫存器位元0:31相關之遮罩位元設定為真值,置換邏輯805便將所有零寫入位元0:31。上述回應於遮罩值將零寫入目的地資料元件之技術文中稱為「歸零遮罩」。
另一方面,本發明之一實施例使用「合併遮罩」,其中先前儲存於目的地暫存器805中之資料元件值維持。因而,回至以上範例,若使用「合併遮罩」,位元0:31將 維持其先前值。
值得注意的是,在此實施例中,儲存於第一來源運算元802中之資料(例如表資料)可重用於後續程式迴路之迭代,同時索引值(IN1-IN4)被覆寫。
圖10中描繪依據本發明之一實施例之方法。本實施例可於圖8中所示之處理器架構的內文內實施,但不侷限於任何特定處理器架構。
在1002,控制變數N被初始化為零,且在1003,從第一來源運算元(SRC1)讀取索引值。依據索引值,選擇目的地中之資料元件。例如索引值IN1可識別資料元件1,索引值IN2可識別資料元件2等。在1005,若決定具有偽值之寫入遮罩存在用於選擇之目的地資料元件,接著在1006,依據指定遮罩運算更新資料元件。例如,如上述,若選擇「歸零遮罩」,置換邏輯便將所有零寫入選擇之目的地資料元件。另一方面,若使用「合併遮罩」,其中先前儲存於目的地運算元中之資料元件值維持。因而,返回以上範例,若使用「合併遮罩」,資料元件N將維持其先前值。
若寫入遮罩未設定為真值,在1008,便依據索引值選擇將置換之資料元件,以來自第二來源運算元(SRC2)或目的地(DST)之資料元件之任一者更新資料元件N(即執行置換運算)。在1010,若決定N之值已達到其最大值(即已寫入目的地運算元之最後資料元件),便終止程序。若否,那麼N便增加一(選擇目的地 之下一資料元件)且程序返回1003。
圖11描繪依據本發明之一實施例之另一方法。本實施例可於圖9中所示之處理器架構的環境內實施,但不侷限於任何特定處理器架構。
在1102,控制變數N被初始化為零,且在1103,從目的地(DST)讀取索引值。依據索引值,選擇目的地中資料元件。例如,索引值IN1可識別目的地之資料元件1,索引值IN2可識別資料元件2等。在1005,若決定具有偽值之寫入遮罩存在用於選擇之目的地資料元件,接著在1006,便依據指定遮罩運算更新目的地中資料元件。例如,如上述,若選擇「歸零遮罩」,置換邏輯便將所有零寫入選擇之目的地資料元件。另一方面,若使用「合併遮罩」,先前儲存於目的地運算元中之資料元件值便維持。因而,返回以上範例,若使用「合併遮罩」,資料元件N將維持其先前值。
若寫入遮罩未設定為真值,在1008,便依據索引值選擇將置換之資料元件,以來自第一來源運算元(SRC1)或第二來源運算元(SRC2)之資料元件之任一者更新資料元件N(即執行置換運算)。在1010,若決定N之值已達到其最大值(即已寫入目的地運算元之最後資料元件),便終止程序。若否,那麼N便增加一(選擇目的地之下一資料元件)且程序返回1003。
總之,文中所說明之本發明之實施例依據索引置換資料元件,並依據儲存於遮罩資料結構中之值執行遮罩運 算。在一實施例中,索引值被保留,因此可用於後續迭代。在另一實施例中,儲存於第二來源運算元中之資料值被保留用於後續迭代。在二實施例中,可採用寫入遮罩用於每一目的地資料元件(如同所說明者)。
以下提出說明本發明之一實施例之實施的偽碼。然而,將理解的是,本發明之基本原理不侷限於偽碼中所說明之特定實施。在以上說明之環境內,本技藝中一般技術之人士將完全理解偽碼之細節。因此,以下不需偽碼之額外說明。
A. VPERMT2D/VPERMT2PS
B. VPERMI2D/VPERMI2PS
本發明之實施例可包括以上已說明之各式步驟。該些步驟可以機器可執行指令體現,其可用以致使通用或專用處理器執行該些步驟。另一方面,該些步驟可藉由特定硬 體組件執行,包含用於執行該些步驟之固線式邏輯,或藉由程控電腦組件及訂做硬體組件之任何組合。
如文中所說明,指令可指特定硬體組態,諸如專用積體電路(ASIC)經組配以執行某些運算或具有預定功能性,或儲存於以非暫時性電腦可讀取媒體體現之記憶體中的軟體指令。因而,圖式中所示之技術可使用儲存於一或多個電子裝置(例如,終端站、網路元件等)並於其上執行之碼及資料實施。該等電子裝置儲存及使用電腦機器可讀取媒體傳遞(內部及/或透過網路與其他電子裝置)碼及資料,諸如非暫時性電腦機器可讀取儲存媒體(例如,磁碟、光碟、隨機存取記憶體、唯讀記憶體、快閃記憶體裝置、相位改變記憶體)及暫時性電腦機器可讀取通訊媒體(例如,電氣、光學、聲學或其他形式傳播信號-諸如載波、紅外線信號、數位信號等)。此外,該等電子裝置典型地包括一組耦接至一或多個其他組件之一或多個處理器,諸如一或多個儲存裝置(非暫時性機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控螢幕、及/或顯示器)、及網路連接。該組處理器及其他組件之耦接典型地經由一或多個匯流排及橋接器(亦稱為匯流排控制器)。儲存裝置及攜帶網路報文之信號分別代表一或多個機器可讀取儲存媒體及機器可讀取通訊媒體。因而,特定電子裝置之儲存裝置典型地儲存碼及/或資料,用於在電子裝置之一或多個處理器上執行。當然,本發明之實施例的一或多個部分可使用軟體、韌體、及/或硬體之不 同組合實施。為了說明之目的,本詳細說明通篇提出許多特定細節以提供本發明之徹底理解。然而,對於熟悉本技藝之人士將顯而易見的是本發明可無若干該些細節而予實現。在某些狀況下,未詳盡說明熟知結構及功能以免混淆本發明之主題。因此,本發明之範圍及精神應依申請專利範圍判斷。
示範指令格式
文中所說明之指令實施例可以不同格式體現。此外,以下詳述示範系統、架構、及管線。指令實施例可於該等系統、架構、及管線上執行,但不侷限於此。
向量親和指令格式為適於向量指令之指令格式(例如存在特定於向量運算之某欄位)。雖然所說明之實施例其中經由向量親和指令格式支援向量及純量運算,但替代實施例僅使用向量親和指令格式之向量運算。
圖12A-12B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其指令模板。圖12A為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其A級指令模板;同時圖12B為方塊圖,描繪依據本發明之實施例之通用向量親和指令格式及其B級指令模板。具體地,通用向量親和指令格式1200係定義A級及B級指令模板,二者均不包括記憶體存取1205指令模板及記憶體存取1220指令模板。向量親和指令格式之上下文中用詞通用係指未固定於任何特定指令集之指令格式。
雖然將說明本發明之實施例其中向量親和指令格式支援下列:64位元組向量運算元長度(或尺寸)且32位元(4位元組)或64位元(8位元組)資料元件寬度(或尺寸)(及因而,64位元組向量包括16個雙字尺寸元件或另一方面,8個四倍字尺寸元件);64位元組向量運算元長度(或尺寸)且16位元(2位元組)或8位元(1位元組)資料元件寬度(或尺寸);32位元組向量運算元長度(或尺寸)且32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或尺寸);以及16位元組向量運算元長度(或尺寸)且32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或尺寸);替代實施例可支援更多、更少及/或不同向量運算元尺寸(例如256位元組向量運算元)且更多、更少、或不同資料元件寬度(例如128位元(16位元組)資料元件寬度)。
圖12A中A級指令模板包括:1)在無記憶體存取1205指令模板內顯示無記憶體存取全捨入控制型運算1210指令模板,及無記憶體存取資料轉換型運算1215指令模板;以及2)在記憶體存取1220指令模板內顯示記憶體存取暫時1225指令模板,及記憶體存取非暫時1230指令模板。圖12B中B級指令模板包括:1)在無記憶體存取1205指令模板內顯示無記憶體存取寫入遮罩控制部分捨入控制型運算1212指令模板,及無記憶體存取寫入 遮罩控制VSIZE型運算1217指令模板;以及2)在記憶體存取1220指令模板內顯示記憶體存取寫入遮罩控制1227指令模板。
通用向量親和指令格式1200包括以下以圖12A-12B中所描繪之順序表列的下列欄位。
格式欄位1240-此欄位中特定值(指令格式識別符值)獨特地識別向量親和指令格式,因而指令流中以向量親和指令格式之指令發生。正因為如此,在不需用於僅具有通用向量親和指令格式之指令集的意義上,此欄位是可選擇的。
基運算欄位1242-其內容區別不同基運算。
暫存器指標欄位1244-其內容係直接或經由位址產生,指明位於暫存器或記憶體中之來源及目的地運算元的位置。該些包括充分位元數量以從PxQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案選擇N暫存器。雖然在一實施例中,N最多可為三個來源及一個目的地暫存器,但替代實施例可支援更多或更少來源及目的地暫存器(例如可支援最多二個來源,其中該些來源之一者亦充當目的地,可支援最多三個來源,其中該些來源之一者亦充當目的地,可支援最多二個來源及一個目的地)。
修飾符欄位1246-其內容區別指明記憶體存取之通用向量指令格式的指令發生與未發生者,即無記憶體存取1205指令模板與記憶體存取1220指令模板之間。記憶體存取運算讀取及/或寫入至記憶體階層(在若干狀況下使 用暫存器中之值指明來源及/或目的地位址),同時未實施非記憶體存取運算(例如來源及目的地為暫存器)。雖然在一實施例中,此欄位亦於三個不同方式之間選擇以實施記憶體位址計算,替代實施例可支援更多、更少、或不同方式以實施記憶體位址計算。
擴大運算欄位1250-其內容區別除了基運算以外實施之各種不同運算之一者。此欄位係針對特定上下文。在本發明之一實施例中,此欄位劃分為級別欄位1268、阿爾發欄位1252、及貝他欄位1254。擴大運算欄位1250允許以單一指令,而非2、3、或4指令,實施共同群組運算。
標度欄位1260-其內容允許標度指標欄位之內容用於記憶體位址產生(例如用於位址產生,其使用2標度*指標+基)。
位移欄位1262A-其內容用作部分記憶體位址產生(例如用於位址產生,其使用2標度*指標+基+位移)。
位移因素欄位1262B(請注意,位移欄位1262A直接在位移因素欄位1262B上之並列指出係使用其一或另一者)-其內容用作部分位址產生;其指明藉由記憶體存取之尺寸(N)標度的位移因素-其中N為記憶體存取中位元組數量(例如用於位址產生,其使用2標度*指標+基+標度之位移)。冗餘低階位元忽略,因此位移因素欄位之內容乘以記憶體運算元總尺寸(N),以便產生最後位移而用於計算有效位址。N之值係藉由處理器硬體於運行時 依據全運算碼欄位1274(文中之後說明)及資料操縱欄位1254C決定。在未用於無記憶體存取1205指令模板及/或僅可實施二者之一或均未實施之不同實施例的意義上,位移欄位1262A及位移因素欄位1262B是可選擇的。
資料元件寬度欄位1264-其內容區別將使用若干資料元件寬度之哪一者(在若干實施例中用於所有指令;在其他實施例中僅用於若干指令)。在若僅支援一資料元件寬度及/或使用運算碼之若干方面支援資料元件寬度,便不需要此欄位的意義上,此欄位是可選擇的。
寫入遮罩欄位1270-在每一資料元件位置的基礎上,其內容控制目的地向量運算元中資料元件位置是否反映基運算及擴大運算之結果。A級指令模板支援合併寫入遮罩,同時B級指令模板支援合併及歸零寫入遮罩。當合併時,向量遮罩允許目的地中任何元件組受保護免於在任何運算(由基運算及擴大運算指明)執行期間更新;在另一實施例中,保留目的地之每一元件的舊值,其中相應遮罩位元具有0。相反地,當歸零時,向量遮罩允許目的地中任何元件組在任何運算(由基運算及擴大運算指明)執行期間歸零;在一實施例中,當相應遮罩位元具有0值時,目的地之元件設定為0。此功能性之子集為控制實施之運算之向量長度的能力(即,修改之元件的跨距從第一個至最後一個);然而,修改之元件不一定為連續。因而,寫入遮罩欄位1270允許用於部分向量運算,包括載 入、儲存、算術、邏輯等。雖然所說明之本發明之實施例其中寫入遮罩欄位1270之內容選擇包含將使用之寫入遮罩的若干寫入遮罩暫存器之一者(因而寫入遮罩欄位1270之內容間接識別將實施之遮罩),替代實施例取代或額外允許寫入遮罩欄位1270之內容直接指明將實施之遮罩。
立即值欄位1272-其內容允許用於立即值之規格。在此欄位未呈現於未支援立即值之通用向量親和格式之實施中,及其未呈現於未使用立即值之指令中的意義上,此欄位是可選擇的。
級別欄位1268-其內容於不同級別指令之間區別。參照圖12A-B,此欄位之內容於A級及B級指令之間選擇。在圖12A-B中,捨入的角落方格用以指出特定值呈現於欄位中(例如圖12A-B中分別用於級別欄位1268之A級1268A及B級1268B)。
A級指令模板
若為A級非記憶體存取1205指令模板,阿爾發欄位1252便解譯為RS欄位1252A,其內容區別將實施之不同擴大運算類型之哪一者(例如捨入1252A.1及資料轉換1252A.2分別指明用於無記憶體存取捨入型運算1210指令模板及無記憶體存取資料轉換型運算1215指令模板),同時貝他欄位1254區別將實施指定類型之哪一運算。在無記憶體存取1205指令模板中,未呈現標度欄位 1260、位移欄位1262A、及位移標度欄位1262B。
無記憶體存取指令模板-全捨入控制型運算
在無記憶體存取全捨入控制型運算1210指令模板中,貝他欄位1254被解譯為捨入控制欄位1254A,其內容提供靜態捨入。雖然在所說明之本發明之實施例中,捨入控制欄位1254A包括抑制所有浮點例外(SAE)欄位1256及捨入運算控制欄位1258,替代實施例可支援將該些概念編碼為相同欄位或僅具有該些概念/欄位之一者或另一者(例如可僅具有捨入運算控制欄位1258)。
SAE欄位1256-其內容區別是否停用例外事件報導;當SAE欄位1256之內容指出致能抑制時,特定指令未報導任何種類浮點例外旗標,且未提昇任何浮點例外處置器。
捨入運算控制欄位1258-其內容區別將實施哪一群組捨入運算(例如捨入向上、捨入向下、捨入朝向零及捨入朝向最近)。因而,捨入運算控制欄位1258允許在每一指令之基礎上改變捨入模式。在本發明之一實施例中,其中處理器包括控制暫存器以指明捨入模式,捨入運算控制欄位1250之內容置換暫存器值。
無記憶體存取指令模板-資料轉換型運算
在無記憶體存取資料轉換型運算1215指令模板中,貝他欄位1254解譯為資料轉換欄位1254B,其內容區別 將實施若干資料轉換之哪一者(例如無資料轉換、拌和、播送)。
若為A級記憶體存取1220指令模板,阿爾發欄位1252解譯為驅逐提示欄位1252B,其內容區別將使用哪一驅逐提示(在圖12A中,暫時1252B.1及非暫時1252B.2分別指明用於記憶體存取暫時1225指令模板及記憶體存取非暫時1230指令模板),同時貝他欄位1254解譯為資料操縱欄位1254C,其內容區別將實施若干資料操縱運算(亦已知為基元)之哪一者(例如無操縱;播送;來源之上轉換;及目的地之下轉換)。記憶體存取1220指令模板包括標度欄位1260,以及選擇地位移欄位1262A或位移標度欄位1262B。
向量記憶體指令實施自記憶體之向量載入及至記憶體之向量儲存,並支援轉換。正如正規向量指令,向量記憶體指令以資料元件方式轉移資料自/至記憶體,且實際轉移之元件藉由選擇作為寫入遮罩之向量遮罩的內容主宰。
記憶體存取指令模板-暫時
暫時資料為可能足夠快速重用以從快取獲益之資料。然而,其為暗示且不同處理器可以不同方式實施,包括完全忽略暗示。
記憶體存取指令模板-非暫時
非暫時資料為不可能足夠快速重用以從第一級高速緩 衝記憶體中快取獲益之資料,並應為驅逐之特定優先性。然而,其為暗示且不同處理器可以不同方式實施,包括完全忽略暗示。
B級指令模板
若為B級指令模板,阿爾發欄位1252解譯為寫入遮罩控制(Z)欄位1252C,其內容區別藉由寫入遮罩欄位1270控制之寫入遮罩是否應合併或歸零。
若為B級非記憶體存取1205指令模板,部分貝他欄位1254解譯為RL欄位1257A,其內容區別將實施哪一不同擴大運算類型(例如捨入1257A.1及向量長度(VSIZE)1257A.2分別指定用於無記憶體存取寫入遮罩控制部分捨入控制型運算1212指令模板及無記憶體存取寫入遮罩控制VSIZE型運算1217指令模板),同時其餘貝他欄位1254區別將實施哪一指定類型之運算。在無記憶體存取1205指令模板中,未呈現標度欄位1260、位移欄位1262A、及位移標度欄位1262B。
在無記憶體存取寫入遮罩控制部分捨入控制型運算1210指令模板中,其餘貝他欄位1254解譯為捨入運算欄位1259A,並停用例外事件報導(特定指令未報導任何種類浮點例外旗標,及未提昇任何浮點例外處置器)。
捨入運算控制欄位1259A-正如捨入運算控制欄位1258,其內容區別將實施哪一群組捨入運算(例如捨入向上、捨入向下、捨入朝向零及捨入朝向最近)。因而,捨 入運算控制欄位1259A允許在每一指令之基礎上改變捨入模式。在本發明之一實施例中,其中處理器包括控制暫存器以指明捨入模式,捨入運算控制欄位1250之內容置換暫存器值。
在無記憶體存取寫入遮罩控制VSIZE型運算1217指令模板中,其餘貝他欄位1254解譯為向量長度欄位1259B,其內容區別將在若干資料向量長度之哪一者上實施(例如128、256、或512位元組)。
若為B級記憶體存取1220指令模板,部分貝他欄位1254解譯為播送欄位1257B,其內容區別是否將實施播送型資料操縱運算,同時其餘貝他欄位1254為解譯之向量長度欄位1259B。記憶體存取1220指令模板包括標度欄位1260、及選擇地位移欄位1262A或位移標度欄位1262B。
關於通用向量親和指令格式1200,顯示全運算碼欄位1274,包括格式欄位1240、基運算欄位1242、及資料元件寬度欄位1264。雖然一實施例顯示其中全運算碼欄位1274包括所有該些欄位,在實施例中全運算碼欄位1274包括少於所有該些欄位,其未支援所有各項。全運算碼欄位1274提供運算碼(opcode)。
在通用向量親和指令格式之每一指令的基礎上,擴大運算欄位1250、資料元件寬度欄位1264及寫入遮罩欄位1270允許指定該些特徵。
寫入遮罩欄位及資料元件寬度欄位之組合製造代表指 令,其中允許依據不同資料元件寬度應用遮罩。
發現於A級及B級內之各式指令模板在不同情況是有利的。在若干本發明之實施例中,不同處理器或處理器內不同核心僅可支援A級、僅B級、或二級別。例如,希望用於通用計算之高性能通用無序核心僅可支援B級,主要希望用於圖形及/或科學(傳輸率)計算之核心僅可支援A級,及希望用於二者之核心可支援二者(當然,具有來自二級別之模板及指令但並非來自二級別之所有模板及指令之若干混合的核心係在本發明之範圍內)。另外,單一處理器可包括多核心,均支援相同級別或其中不同核心支援不同級別。例如,在具個別圖形及通用核心之處理器中,主要希望用於圖形及/或科學計算之圖形核心之一者僅可支援A級,同時一或多個通用核心可為高性能通用核心且失序執行及暫存器重命名,希望用於通用計算者,僅可支援B級。另一處理器不具有個別圖形核心,可包括一更多通用依序或無序核心,其支援A級及B級二者。當然,在本發明之不同實施例中,來自一級別之特徵亦可於其他級別中實施。以高階語言編寫之程式將(例如在編譯或靜態編譯時)置入各種不同可執行形式,包括:1)僅具有藉由目標處理器支援用於執行之級別之指令的形式;或2)具有使用所有級別指令之不同組合編寫之替代常式,及具有依據現行執行碼之藉由處理器支援之指令而選擇常式進行執行之控制流碼的形式。
示範特定向量親和指令格式
圖13A-D為方塊圖,描繪依據本發明之實施例之示範特定向量親和指令格式。圖13顯示特定向量親和指令格式1300,其在指明欄位之位置、尺寸、解譯、及順序,以及用於若干該些欄位之值的意義上是特定的。特定向量親和指令格式1300可用以延伸x86指令集,因而若干欄位與用於現有x86指令集及其延伸(例如AVX)中者為類似或相同。此格式仍符合具延伸之現有x86指令集之前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即值欄位。描繪圖13之欄位映入圖12之欄位。
應理解的是,儘管為描繪目的,參照通用向量親和指令格式1200之上下文中特定向量親和指令格式1300說明本發明之實施例,除非聲明,本發明不侷限於特定向量親和指令格式1300。例如,通用向量親和指令格式1200考量用於各式欄位之各類可能尺寸,同時特定向量親和指令格式1300顯示為具有特定尺寸之欄位。藉由特定範例,雖然資料元件寬度欄位1264描繪為特定向量親和指令格式1300之一位元欄位,本發明不侷限於此(即,通用向量親和指令格式1200考量資料元件寬度欄位1264之其他尺寸)。
通用向量親和指令格式1200包括以下依圖13A中所描繪之順序表列的下列欄位。
EVEX前置(位元組0-3)1302-係以四個位元組形 式編碼。
格式欄位1240(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位1240,其包含0x62(用於區別本發明之一實施例中向量親和指令格式之獨特值)。
第二-第四位元組(EVEX位元組1-3)包括提供特定能力之位元數量欄位。
REX欄位1305(EVEX位元組1,位元[7-5])-包括EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及1257BEX位元組1,位元[5]-B)。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相應VEX位元欄位相同功能性,並使用1之補數形式編碼,即ZMM0編碼為1111B,ZMM15編碼為0000B。指令之其他欄位編碼暫存器指標之較低三個位元,如本技藝中已知之(rrr、xxx、及bbb),使得藉由EVEX.R、EVEX.X、及EVEX.B相加而形成Rrrr、Xxxx、及Bbbb。
REX'欄位1210-此係REX'欄位1210之第一部分並為EVEX.R'位元欄位(EVEX位元組1,位元[4]-R'),其用以編碼延伸之32個暫存器組的上16個或下16個。在本發明之一實施例中,此位元連同以下指出之其他者係以位元反向格式儲存以區別(熟知x86 32位元模式)BOUND指令,其真實運算碼位元組為62,但在MOD R/M欄位(以下說明)中不接受MOD欄位中11之值;本 發明之替代實施例不儲存此及以下以反向格式指出之其他位元。1之值用以編碼下16個暫存器。換言之,藉由組合EVEX.R'、EVEX.R、及來自其他欄位之其他RRR而形成R'Rrrr。
運算碼映射欄位1315(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼暗示的前導運算碼位元組(0F、0F38、或0F3)。
資料元件寬度欄位1264(EVEX位元組2,位元[7]-W)-係藉由記號EVEX.W代表。EVEX.W用以定義資料類型(32位元資料元件或64位元資料元件)之粒度(尺寸)。
EVEX.vvvv 1320(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼以反向(1之補數)形式指明之第一來源暫存器運算元,並有效用於具2或更多來源運算元之指令;2)EVEX.vvvv編碼用於某向量偏移之1之補數形式指明之目的地暫存器運算元;或3)EVEX.vvvv未編碼任何運算元,欄位保留並應包含1111b。因而,EVEX.vvvv欄位1320編碼以反向(1之補數)形式儲存之第一來源暫存器區分符的4個低階位元。依據指令,額外不同EVEX位元欄位用以延伸區分符尺寸至32個暫存器。
EVEX.U 1268級別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,指出A級或EVEX.U0;若EVEX.U=1,指出B級或EVEX.U1。
前置編碼欄位1325(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前置編碼,因而不需擴展。
阿爾發欄位1252(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α)描繪-如先前所說明,此欄位為特定上下文。
貝他欄位1254(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ)描繪-如先前所說明,此欄位為特定上下文。
REX'欄位1210-此係REX'欄位之餘數並為EVEX.V'位元欄位(EVEX位元組3,位元[3]-V'),其可用以編 碼延伸之32個暫存器組的上16個或下16個。此位元係以位元反向格式儲存。1之值用以編碼下16個暫存器。換言之,V'VVVV係藉由組合EVEX.V'、EVEX.vvvv而予形成。
寫入遮罩欄位1270(EVEX位元組3,位元[2:0]-kkk)-如先前所說明,其內容指明寫入遮罩暫存器中暫存器之指標。在本發明之一實施例中,特定值EVEX.kkk=000具有特殊行為暗示無寫入遮罩用於特別指令(此可以各類方式實施,包括使用固線式至所有物件之寫入遮罩或旁通遮罩硬體之硬體)。
真實運算碼欄位1330(位元組4)亦已知為運算碼位元組。部分運算碼於此欄位中被指明。
MOD R/M欄位1340(位元組5)包括MOD欄位1342、Reg欄位1344、及R/M欄位1346。如先前所說明,MOD欄位1342之內容於記憶體存取及非記憶體存取運算之間區別。Reg欄位1344之角色可總結為二情況:編碼目的地暫存器運算元或來源暫存器運算元,或被處理為運算碼延伸,且未用以編碼任何指令運算元。R/M欄位1346之角色可包括下列:參照記憶體位址編碼指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元。
標度指標基(SIB)位元組(位元組6)-如先前所說明,標度欄位1250之內容用於記憶體位址產生。SIB.xxx 1354及SIB.bbb 1356-該些欄位之內容先前已參照關於暫存器指標Xxxx及Bbbb。
位移欄位1262A(位元組7-10)-當MOD欄位1342包含10時,位元組7-10為位移欄位1262A,且其工作與舊有32位元位移(disp32)相同並以位元組粒度工作。
位移因素欄位1262B(位元組7)-當MOD欄位1342包含01時,位元組7為位移因素欄位1262B。此欄位之位置與舊有x86指令集8位元位移(disp8)相同,其係以位元組粒度工作。由於disp8為延伸符號,其僅可定址於-128及127位元組偏移之間;在64位元組高速緩衝記憶體線方面,disp8使用8位元,其可設定為僅四個真正有用的值-128、-64、0、及64;由於通常需要較大範圍,使用disp32;然而,disp32需要4位元組。與disp8及disp32相反,位移因素欄位1262B為disp8之重新解譯;當使用位移因素欄位1262B時,藉由位移因素欄位之內容乘以記憶體運算元存取之尺寸(N)而決定實際位移。此類位移稱為disp8*N。此減少平均指令長度(用於位移但具更大範圍之單一位元組)。該等壓縮位移係依據有效位移為多粒度記憶體存取之假定,因此,位址偏移之冗餘低階位元不需編碼。換言之,位移因素欄位1262B替代舊有x86指令集8位元位移。因而,位移因素欄位1262B以與x86指令集8位元位移相同方式編碼(所以ModRM/SIB編碼規則無改變),唯一例外為disp8對於disp8*N過載。換言之,編碼規則或編碼長度無改變,但唯一是位移值之解譯係藉由硬體(其需藉由記憶體運算元之尺寸標度位移以獲得位元組之位址偏移)。
如先前所說明操作立即值欄位1272。
全運算碼欄位
圖13B為方塊圖,描繪依據本發明之一實施例之組成全運算碼欄位1274的特定向量親和指令格式1300之欄位。具體地,全運算碼欄位1274包括格式欄位1240、基運算欄位1242、及資料元件寬度(W)欄位1264。基運算欄位1242包括前置編碼欄位1325、運算碼映射欄位1315、及真實運算碼欄位1330。
暫存器指標欄位
圖13C為方塊圖,描繪依據本發明之一實施例之組成暫存器指標欄位1244的特定向量親和指令格式1300之欄位。具體地,暫存器指標欄位1244包括REX欄位1305、REX'欄位1310、MODR/M.reg欄位1344、MODR/M.r/m欄位1346、VVVV欄位1320、xxx欄位1354、及bbb欄位1356。
擴大運算欄位
圖13D為方塊圖,描繪依據本發明之一實施例之組成擴大運算欄位1250的特定向量親和指令格式1300之欄位。當級別(U)欄位1268包含0時,標示EVEX.U0(A級1268A);當其包含1時,標示EVEX.U1(B級1268B)。當U=0及MOD欄位1342包含11時(標示無 記憶體存取運算),阿爾發欄位1252(EVEX位元組3,位元[7]-EH)解譯為rs欄位1252A。當rs欄位1252A包含1時(捨入1252A.1),貝他欄位1254(EVEX位元組3,位元[6:4]-SSS)解譯為捨入控制欄位1254A。捨入控制欄位1254A包括一位元SAE欄位1256及二位元捨入運算欄位1258。當rs欄位1252A包含0時(資料轉換1252A.2),貝他欄位1254(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料轉換欄位1254B。當U=0及MOD欄位1342包含00、01、或10時(標示記憶體存取運算),阿爾發欄位1252(EVEX位元組3、位元[7]-EH)解譯為驅逐提示(EH)欄位1252B,及貝他欄位1254(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料操縱欄位1254C。
當U=1時,阿爾發欄位1252(EVEX位元組3,位元[7]-EH)解譯為寫入遮罩控制(Z)欄位1252C。當U=1及MOD欄位1342包含11時(標示無記憶體存取運算),部分貝他欄位1254(EVEX位元組3,位元[4]-S0)解譯為RL欄位1257A;當其包含1時(捨入1257A.1),其餘貝他欄位1254(EVEX位元組3,位元[6-5]-S2-1)解譯為捨入運算欄位1259A,同時當RL欄位1257A包含0時(VSIZE 1257.A2),其餘貝他欄位1254(EVEX位元組3,位元[6-5]-S2-1)解譯為向量長度欄位1259B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位1342包含00、01、或10時(標示記憶體存取 運算),貝他欄位1254(EVEX位元組3,位元[6:4]-SSS)解譯為向量長度欄位1259B(EVEX位元組3,位元[6-5]-L1-0)及播送欄位1257B(EVEX位元組3,位元[4]-B)。
示範暫存器架構
圖14為依據本發明之一實施例之暫存器架構1400之方塊圖。在所描繪之實施例中,存在512位元寬之32個向量暫存器1410;該些暫存器代號為zmm0至zmm31。下16個zmm暫存器之低階256位元覆加於暫存器ymm0-16上。下16個zmm暫存器之低階128位元(ymm暫存器之低階128位元)覆加於暫存器xmm0-15上。特定向量親和指令格式1300係於下表中所描繪之該些覆加暫存器檔案上操作。
換言之,向量長度欄位1259B於最大長度及一或多個其他較短長度之間選擇,其中每一該等較短長度為之前長度的一半長度;且無向量長度欄位1259B之指令模板於最大向量長度上操作。此外,在一實施例中,特定向量親和指令格式1300之B級指令模板於封裝或純量單一/雙精度浮點資料及封裝或純量整數資料上操作。純量運算係於zmm/ymm/xmm暫存器中最低階資料元件位置上實施之運算;依據實施例,高階資料元件位置係在如同指令或歸零之前相同的左邊。
寫入遮罩暫存器1415-在所描繪之實施例中,存在8個寫入遮罩暫存器(k0至k7),每一尺寸為64位元。在替代實施例中,寫入遮罩暫存器1415尺寸為16位元。如先前所說明,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當編碼時通常指出k0係用於寫入遮罩,其選擇0xFFFF之固線式寫入遮罩,有效地停用該指令之寫入遮罩。
通用暫存器1425-在所描繪之實施例中,存在十六個64位元通用暫存器,其連同現有x86定址模式用以定址記憶體運算元。該些暫存器代號為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)1445,其上重疊MMX封裝整數平面暫存器檔案1450-在所描繪之實施例中,x87堆疊為八元件堆疊,用以於使用x87指令集延伸之32/64/80位元浮點資料上實施純量浮點運算;同時 MMX暫存器用以於64位元封裝整數資料上實施運算,以及容納於MMX及XMM暫存器之間實施若干運算的運算元。
本發明之替代實施例可使用更寬或更窄暫存器。此外,本發明之替代實施例可使用更多、更少或不同暫存器檔案及暫存器。
圖15A-B描繪更具體示範依序核心架構之方塊圖,其核心將為晶片中若干邏輯方塊之一者(包括相同類型及/或不同類型之其他核心)。邏輯方塊經由高帶寬互連網路(例如環形網路)而與若干固定功能邏輯、記憶體I/O介面、及取決於應用之其他必要I/O邏輯通訊。
圖15A為依據本發明之實施例之單一處理器核心連同其連接至晶粒上互連網路1502並具2級(L2)高速緩衝記憶體1504之其局部子集的方塊圖。在一實施例中,指令解碼器1500支援具封裝資料指令集延伸之x86指令集。L1高速緩衝記憶體1506允許對高速緩衝記憶體記憶體之低延遲存取為純量及向量單元。雖然在一實施例中(為簡化設計),純量單元1508及向量單元1510使用個別暫存器集(分別為純量暫存器1512及向量暫存器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允許斷定結果向量寫入。
100‧‧‧處理器管線
102‧‧‧提取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧配置級
110‧‧‧重命名級
112‧‧‧排程級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧寫回/記憶體寫入級
122‧‧‧例外處理級
124‧‧‧確定級

Claims (14)

  1. 一種處理器,包含:解碼器,解碼指令,該指令具有來源遮罩、第一來源向量運算元、第二來源向量運算元、及目的地向量運算元;及執行單元,執行被解碼之指令以:自該來源遮罩讀取值,以決定是否對該目的地向量運算元的對應資料元件執行遮罩;如果該目的地向量運算元的特定資料元件並未執行遮罩,則根據予以被複製至該目的地向量運算元的該特定資料元件的另一向量運算元的對應索引值,由該第一來源向量運算元與該第二來源向量運算元之一選擇一資料元件,其中來自該第一與第二來源向量運算元的任一資料元件可以被複製至該目的地向量運算元的該特定資料元件;及如果對該目的地向量運算元的特定資料元件執行遮罩,則相關於該目的地向量運算元的該特定資料元件,執行指定遮罩運算。
  2. 如申請專利範圍第1項所述之處理器,其中該指定遮罩運算包含將已執行該遮罩的該目的地向量運算元的該特定資料元件中現行位元值保持不變。
  3. 如申請專利範圍第1項所述之處理器,其中該指定遮罩運算包含將已執行該遮罩的該目的地向量運算元的該特定資料元件中的所有位元值歸零。
  4. 如申請專利範圍第1項所述之處理器,更包含:一組遮罩暫存器的遮罩暫存器以儲存該來源遮罩,其中該組遮罩暫存器係與用以儲存該第一來源向量運算元的一組向量暫存器為不同組的架構暫存器。
  5. 如申請專利範圍第1項所述之處理器,其中該來源遮罩包含遮罩暫存器的最低效組相鄰位元,其係用以儲存該來源遮罩。
  6. 如申請專利範圍第1至4項中任一項所述之處理器,其中該第一來源向量運算元包含512位元向量運算元並具有32位元資料元件及64位元資料元件。
  7. 如申請專利範圍第1至4項中任一項所述之處理器,其中該第一來源向量運算元具有浮點資料元件。
  8. 如申請專利範圍第1至4項中任一項所述之處理器,其中該另一向量運算元包含該目的向量運算元。
  9. 一種處理器,包含:解碼器,以解碼指令,該指令具有來源遮罩、第一來源向量運算元、第二來源向量運算元、及目的地向量運算元;及執行單元,以執行被解碼指令以:將來自該第一與第二來源向量運算元之一的各個選擇資料元件,根據在另一向量運算元中的對應索引值,儲存入對應於在該來源遮罩中具有第一值的遮罩位元的該目的地向量運算元的資料元件中,其中各個索引值能由該第一與第二來源向量運算元的任一該等資料元件中選擇資 料元件;將對應於在該來源遮罩中具有第二值的遮罩位元的該目的地向量運算元的資料元件儲存零。
  10. 如申請專利範圍第9項所述之處理器,更包含一組遮罩暫存器的遮罩暫存器儲存該來源遮罩,其中該組遮罩暫存器與用以儲存該第一來源向量運算元的一組向量暫存器具有不同組的架構暫存器。
  11. 如申請專利範圍第9項所述之處理器,其中該第一來源向量運算元包含512位元向量運算元,及其中該來源遮罩為16位元與32位元來源遮罩之一。
  12. 如申請專利範圍第9至11項中任一項所述之處理器,其中第一來源向量運算元具有浮點資料元件。
  13. 如申請專利範圍第9至11項中任一項所述之處理器,其中該另一向量運算元包含該指定向量運算元。
  14. 一種電腦系統,包含:動態隨機存取記憶體;及處理器,耦接至該動態隨機存取記憶體,該處理器包含:解碼器,以解碼指令,該指令具有來源遮罩、第一來源向量運算元、第二來源向量運算元、及目的地向量運算元;及執行單元,以執行被解碼指令以:將來自該第一與第二來源向量運算元之一的各個選擇資料元件,根據在另一向量運算元中的對應索引值, 儲存所選擇資料元件入對應於在該來源遮罩中的具有第一值的遮罩位元的該目的地向量運算元的資料元件中,其中各個索引值能由該第一與第二來源向量運算元的任一該等資料元件中選擇資料元件;將對應於在該來源遮罩中具有第二值的遮罩位元的該目的地向量運算元的資料元件儲存零。
TW104110678A 2011-12-22 2012-12-11 執行置換運算的處理器及具有該處理器的電腦系統 TWI552072B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066980 WO2013095541A1 (en) 2011-12-22 2011-12-22 Apparatus and method for performing a permute operation

Publications (2)

Publication Number Publication Date
TW201530431A TW201530431A (zh) 2015-08-01
TWI552072B true TWI552072B (zh) 2016-10-01

Family

ID=48669182

Family Applications (4)

Application Number Title Priority Date Filing Date
TW101146625A TWI489384B (zh) 2011-12-22 2012-12-11 執行置換運算的處理器與方法及具有該處理器的電腦系統
TW104110678A TWI552072B (zh) 2011-12-22 2012-12-11 執行置換運算的處理器及具有該處理器的電腦系統
TW105123065A TWI603263B (zh) 2011-12-22 2012-12-11 執行置換運算的處理器及具有該處理器的電腦系統
TW106129815A TWI663545B (zh) 2011-12-22 2012-12-11 執行置換運算的處理器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW101146625A TWI489384B (zh) 2011-12-22 2012-12-11 執行置換運算的處理器與方法及具有該處理器的電腦系統

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW105123065A TWI603263B (zh) 2011-12-22 2012-12-11 執行置換運算的處理器及具有該處理器的電腦系統
TW106129815A TWI663545B (zh) 2011-12-22 2012-12-11 執行置換運算的處理器

Country Status (4)

Country Link
US (1) US9513918B2 (zh)
CN (2) CN106371804B (zh)
TW (4) TWI489384B (zh)
WO (1) WO2013095541A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495162B2 (en) 2011-12-23 2016-11-15 Intel Corporation Apparatus and method for performing a permute operation
US9552209B2 (en) * 2013-12-27 2017-01-24 Intel Corporation Functional unit for instruction execution pipeline capable of shifting different chunks of a packed data operand by different amounts
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US10445092B2 (en) * 2014-12-27 2019-10-15 Intel Corporation Method and apparatus for performing a vector permute with an index and an immediate
US9946541B2 (en) * 2015-12-18 2018-04-17 Intel Corporation Systems, apparatuses, and method for strided access
US9934090B2 (en) * 2015-12-22 2018-04-03 Intel Corporation Apparatus and method for enforcement of reserved bits
US9921841B2 (en) * 2016-02-24 2018-03-20 Intel Corporation System and method for executing an instruction to permute a mask
US10120680B2 (en) * 2016-12-30 2018-11-06 Intel Corporation Systems, apparatuses, and methods for arithmetic recurrence
US11360771B2 (en) * 2017-06-30 2022-06-14 Intel Corporation Method and apparatus for data-ready memory operations
TWI724608B (zh) * 2019-11-04 2021-04-11 鴻海精密工業股份有限公司 微控制器架構及架構內資料讀取方法
CN111444180B (zh) * 2020-03-20 2022-12-16 复旦大学 一种双层结构的索引及其查询方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200527297A (en) * 2004-02-11 2005-08-16 Via Tech Inc Apparatus and method for performing a detached load operation in a pipeline microprocessor
US20090100253A1 (en) * 2007-10-12 2009-04-16 Moyer William C Methods for performing extended table lookups
US20090313442A1 (en) * 2008-06-13 2009-12-17 Moyer William C Circular buffer support in a single instruction multiple data (simd) data processsor
TW201106263A (en) * 2009-08-07 2011-02-16 Via Tech Inc Instruction process methods, and superscalar pipelined microprocessors

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
CN101031904A (zh) 2004-07-13 2007-09-05 3加1科技公司 带有两类子处理器以执行多媒体应用的可编程处理器系统
US8082479B2 (en) * 2006-02-02 2011-12-20 Qualcomm Incorporated Methods and apparatus for generating permutations
US8700884B2 (en) * 2007-10-12 2014-04-15 Freescale Semiconductor, Inc. Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8909901B2 (en) * 2007-12-28 2014-12-09 Intel Corporation Permute operations with flexible zero control

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200527297A (en) * 2004-02-11 2005-08-16 Via Tech Inc Apparatus and method for performing a detached load operation in a pipeline microprocessor
US20090100253A1 (en) * 2007-10-12 2009-04-16 Moyer William C Methods for performing extended table lookups
US20090313442A1 (en) * 2008-06-13 2009-12-17 Moyer William C Circular buffer support in a single instruction multiple data (simd) data processsor
TW201106263A (en) * 2009-08-07 2011-02-16 Via Tech Inc Instruction process methods, and superscalar pipelined microprocessors

Also Published As

Publication number Publication date
WO2013095541A1 (en) 2013-06-27
CN106371804B (zh) 2019-07-12
CN104011671B (zh) 2017-09-22
TW201530431A (zh) 2015-08-01
CN104011671A (zh) 2014-08-27
TWI603263B (zh) 2017-10-21
TW201823974A (zh) 2018-07-01
TW201346752A (zh) 2013-11-16
TWI489384B (zh) 2015-06-21
TW201719390A (zh) 2017-06-01
US20150026439A1 (en) 2015-01-22
TWI663545B (zh) 2019-06-21
CN106371804A (zh) 2017-02-01
US9513918B2 (en) 2016-12-06

Similar Documents

Publication Publication Date Title
TWI552072B (zh) 執行置換運算的處理器及具有該處理器的電腦系統
TWI514268B (zh) 合併遮罩圖案之指令
TWI525536B (zh) 封裝資料重排控制指標前標產生處理器、方法、系統及指令
JP5986688B2 (ja) Sha256アルゴリズムのメッセージスケジューリングのための命令セット
TWI544406B (zh) 浮點捨入處理器
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI489381B (zh) 多暫存器散布指令
TWI462007B (zh) 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI610228B (zh) 用於執行向量位元反轉和交叉的方法和設備
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TWI582692B (zh) 三維摩頓座標轉換處理器,方法,系統,及指令
TW201337742A (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TW201732637A (zh) 執行向量位元混洗的方法與裝置
TW201810029A (zh) 用於跨步載入的系統、設備及方法
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
TW201741868A (zh) 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TW201732568A (zh) 用於巷道為主的跨類收集的系統、設備與方法
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees