TW201329861A - 用以產生整數的序列其中在連續位置的整數相差達一常數整數跨幅且其中一最小整數是從零偏移達一整數偏位之處理器、方法、系統及指令 - Google Patents

用以產生整數的序列其中在連續位置的整數相差達一常數整數跨幅且其中一最小整數是從零偏移達一整數偏位之處理器、方法、系統及指令 Download PDF

Info

Publication number
TW201329861A
TW201329861A TW101143441A TW101143441A TW201329861A TW 201329861 A TW201329861 A TW 201329861A TW 101143441 A TW101143441 A TW 101143441A TW 101143441 A TW101143441 A TW 101143441A TW 201329861 A TW201329861 A TW 201329861A
Authority
TW
Taiwan
Prior art keywords
instruction
integers
integer
data
field
Prior art date
Application number
TW101143441A
Other languages
English (en)
Other versions
TWI511043B (zh
Inventor
Seth Abraham
Elmoustapha Ould-Ahmed-Vall
Robert Valentine
Zeev Sperber
Amit Gradstein
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201329861A publication Critical patent/TW201329861A/zh
Application granted granted Critical
Publication of TWI511043B publication Critical patent/TWI511043B/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride

Landscapes

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

Abstract

一個面向之方法包括接收一指令。該指令指示一整數跨幅,指示一整數偏位,及指示一目的地儲存位置。應答該指令,一結果係儲存於該目的地儲存位置。該結果指示按數字順序至少四個整數之一序列,該至少四個整數中之一最小者與零相差達該整數偏位,在連續位置的該序列中之全部整數相差達該整數跨幅。揭示其它方法、裝置、系統、及指令。

Description

用以產生整數的序列其中在連續位置的整數相差達一常數整數跨幅且其中一最小整數是從零偏移達一整數偏位之處理器、方法、系統及指令 發明領域
實施例係有關於處理器。更明確言之,實施例係有關於具有指令集其含括使用控制指數的指令之處理器。
發明背景
許多處理器具有單一指令多重資料(SIMD)架構。於SIMD架構中,一緊縮資料指令、向量指令、或SIMD指令可同時地或並列地在多個資料元體或多對資料元體上操作。該處理器可具有並列執行硬體,應答該緊縮資料指令而同時地或並列地執行該等多個操作。
多個資料元體可緊縮在一個暫存器或記憶體位置內部作為緊縮資料或向量資料。於緊縮資料中,該暫存器或其它儲存裝置位置的位元可邏輯地分割成為一序列多個資料元體。舉例言之,一個256-位元寬緊縮資料暫存器 可具有四個64-位元寬緊縮資料元體,八個32元寬緊縮資料元體,十六個16-位元寬緊縮資料元體等。該等緊縮資料元體各自可表示可彼此分開地或獨立地操作的多塊個別分開的資料(例如一像素的紅、綠、藍、或α色彩成分,或一複數的實數或虛數成分等)。
有些SIMD架構具有依據控制指數而在一或多個來源緊縮資料內部彈性重排緊縮資料元體的指令。此等指令之實例為循環置換指令及混洗指令。控制指數控制該等緊縮資料元體如何藉該等指令而予重排。
依據本發明之一實施例,係特地提出一種方法包括接收一指令,該指令指示一整數跨幅,指示一整數偏位,及指示一目的地儲存位置;應答該指令儲存一結果於該目的地儲存位置,該結果指示按數字順序至少四個整數之一序列,該至少四個整數中之一最小者與零相差達該整數偏位,及在連續位置的該序列中之全部整數相差達該整數跨幅。
100‧‧‧處理器
101‧‧‧指令集架構(ISA)
102‧‧‧架構暫存器
103‧‧‧緊縮資料暫存器
104‧‧‧指令集
105‧‧‧使用控制指數的指令
106‧‧‧緊縮資料重排指令
107‧‧‧收集指令
108‧‧‧可用以產生控制指數的指令
109‧‧‧控制指數產生指令
110‧‧‧控制指數前身產生指令
111‧‧‧執行邏輯
212、317、500、830、1030、1130、1330、1446‧‧‧方法
213-216、318-321、531-532、831-832、1031-1032、1131-1132、1331-1332、1431、1432、1447、1448‧‧‧方塊
400‧‧‧指令處理裝置
403‧‧‧緊縮資料暫存器
408、608、708A、708B‧‧‧指令
422‧‧‧解碼器
423‧‧‧執行單元
424‧‧‧計算邏輯
425、740A、740B‧‧‧整數序列、整數之序列
426‧‧‧記憶體
427、634、727A、727B‧‧‧目的地儲存位置
428、728A、728B‧‧‧結果
633、733A、733B‧‧‧操作碼
635‧‧‧非架構上可見的來源儲存位置
636、736‧‧‧數字樣式界定參數
637‧‧‧於某些情況下無來源運算元
734A、734B‧‧‧目的地儲存位置之欄位
738‧‧‧數字樣式係全然基於操作碼
739‧‧‧數字樣式係基於操作碼及數字樣式界定參數
942、1242‧‧‧第一來源緊縮資料
943、1243‧‧‧第二來源緊縮資料
944、1244‧‧‧第三來源緊縮資料
945、1245‧‧‧結果緊縮資料
1542‧‧‧來源緊縮資料
1600‧‧‧處理器
1603、1803‧‧‧緊縮資料暫存器
1608‧‧‧指令
1623‧‧‧解碼與執行單元
1627‧‧‧目的地儲存位置
1640-1‧‧‧第一整數序列
1640-M‧‧‧第M整數序列
1640-N‧‧‧第N整數序列
1650‧‧‧唯讀記憶體(ROM)
1651-1‧‧‧第一儲存位置
1651-M‧‧‧第M儲存位置
1651-N‧‧‧第N儲存位置
1742A、1742B‧‧‧緊縮資料運算元
1908‧‧‧控制指數
1909‧‧‧控制指數產生指令
1910‧‧‧控制指數前身產生指令
1952‧‧‧製造物品
1953‧‧‧機器可讀取儲存媒體
2002、2202‧‧‧VEX前綴
2005、2205‧‧‧REX欄位
2015、2215‧‧‧操作碼映射欄位
2020、2220‧‧‧VEX.vvvv、vvvv欄位
2025、2225‧‧‧前綴編碼欄位
2030、2230‧‧‧實際操作碼欄位
2040、2240‧‧‧MOD R/M欄位、格式欄位、Mod R/M位元組
2042、2242‧‧‧MOD欄位、基數操作欄位
2044、2244‧‧‧Reg欄位
2046、2246‧‧‧R/M欄位
2050、2250‧‧‧SIB位元組
2052、2252‧‧‧SS
2054、2254‧‧‧SIB.xxx
2056、2256‧‧‧SIB.bbb
2062‧‧‧位移欄位
2064‧‧‧W欄位
2068‧‧‧大小欄位
2072、2172‧‧‧立即欄位(IMM8)
2100‧‧‧通用向量友善指令格式
2105‧‧‧無記憶體存取
2110‧‧‧無記憶體存取完整捨入控制型別操作
2112‧‧‧無記憶體存取寫遮罩控制部分回合控制型別操作
2115‧‧‧無記憶體存取資料變換型別操作
2117‧‧‧無記憶體存取寫遮罩控制VSIZE型別操作
2120‧‧‧記憶體存取
2125‧‧‧記憶體存取時間性
2127‧‧‧記憶體存取寫遮罩控制
2130‧‧‧記憶體存取非時間性
2140‧‧‧格式欄位
2142‧‧‧基數操作欄位
2144‧‧‧暫存器欄位
2146‧‧‧修正器欄位
2146A‧‧‧無記憶體存取
2146B‧‧‧記憶體存取
2150‧‧‧擴大操作欄位
2152‧‧‧α欄位
2152A‧‧‧RS欄位
2152A.1、2157A.1‧‧‧捨入
2152A.2‧‧‧資料變換
2152B‧‧‧驅離暗示欄位
2152B.1‧‧‧時間性
2152B.2‧‧‧非時間性
2152C‧‧‧寫遮罩控制(Z)欄位
2154‧‧‧β欄位
2154A‧‧‧捨入控制欄位
2154B‧‧‧資料變換欄位
2154C‧‧‧資料操弄欄位
2156‧‧‧遏止全浮點例外(SAE)欄位
2157A‧‧‧RL欄位
2157A.2‧‧‧向量長度(VSIZE)
2157B‧‧‧廣播欄位
2158‧‧‧捨入操作控制欄位
2159‧‧‧捨入操作欄位
2159A‧‧‧捨入操作控制欄位
2159B‧‧‧向量長度欄位
2160‧‧‧規度欄位
2162A‧‧‧位移欄位
2162B‧‧‧位移規度欄位
2164‧‧‧資料元體寬度欄位
2168‧‧‧類別欄位
2168A‧‧‧類別A
2168B‧‧‧類別B
2170‧‧‧寫遮罩欄位
2172‧‧‧立即欄位
2200‧‧‧特定向量友善指令格式
2210‧‧‧REX’欄位
2300‧‧‧暫存器架構
2310‧‧‧向量暫存器
2315‧‧‧寫遮罩暫存器
2325‧‧‧通用暫存器
2345‧‧‧純量浮點堆疊暫存器檔案
2350‧‧‧MMX緊縮整數平坦暫存器檔案
2400‧‧‧管線
2402-2420‧‧‧階段、步驟
2402‧‧‧提取階段
2404‧‧‧長度解碼階段
2406‧‧‧解碼階段
2408‧‧‧配置階段
2410‧‧‧重新命名階段
2412‧‧‧排程階段
2414‧‧‧暫存器讀取/記憶體讀取階段
2416‧‧‧執行階段
2418‧‧‧回寫/記憶體寫階段
2422‧‧‧例外處理階段
2424‧‧‧委付階段
2430‧‧‧前端單元
2432‧‧‧分支預測單元
2434‧‧‧指令快取單元
2436‧‧‧指令轉譯後備緩衝器(TLB)
2438‧‧‧指令提取單元
2440‧‧‧解碼單元
2450‧‧‧執行引擎單元
2452‧‧‧重新命名/配置器單元
2454‧‧‧報廢單元
2456‧‧‧排程器單元
2458‧‧‧實體暫存器檔案單元
2460‧‧‧執行叢集
2462‧‧‧執行單元
2464‧‧‧記憶體存取單元
2470‧‧‧記憶體單元
2472‧‧‧資料TLB單元
2474‧‧‧資料快取單元
2476‧‧‧層級2(L2)快取單元
2490‧‧‧核心、處理器核心
2500‧‧‧指令解碼器
2502‧‧‧環狀網路、晶粒上互連體網路
2504‧‧‧L2快取記憶體的本地子集、L2快取記憶體
2506‧‧‧L1快取記憶體
2506A‧‧‧L1資料快取記憶體
2508‧‧‧純量單元
2510‧‧‧向量單元
2512‧‧‧純量暫存器
2514‧‧‧向量暫存器
2520‧‧‧調合單元
2522A、2522B‧‧‧數值轉換器
2524‧‧‧複製單元
2526‧‧‧寫遮罩暫存器
2528‧‧‧16-寬向量算術邏輯單元(ALU)
2600、2710、2715、2815、2870、2880‧‧‧處理器
2602A-N‧‧‧核心
2606‧‧‧分享快取單元
2608‧‧‧集積式圖形邏輯
2610‧‧‧系統代理者單元
2612‧‧‧環狀基礎互連體單元
2614‧‧‧集積式記憶體控制器單元
2616‧‧‧匯流排控制器單元
2700、2800、2900‧‧‧系統
2720‧‧‧控制器中樞器
2740‧‧‧記憶體
2745、2838、3020‧‧‧共處理器
2750‧‧‧輸入/輸出中樞器(IOH)
2790‧‧‧圖形記憶體控制器中樞器(GMCH)
2795‧‧‧連結
2814、2914‧‧‧I/O裝置
2816‧‧‧第一匯流排
2818‧‧‧匯流排橋接器
2820‧‧‧第二匯流排
2822‧‧‧鍵盤/滑鼠
2824‧‧‧音訊I/O
2827‧‧‧通訊裝置
2828‧‧‧儲存單元
2830‧‧‧指令/代碼及資料
2839‧‧‧高效能介面
2850‧‧‧點對點(P-P、PtP)互連體
2852、2854、2886、2888‧‧‧點對點介面
2872、2882‧‧‧積體記憶體控制器單元(IMC)
2876、2878、2886、2888、2894、2898‧‧‧點對點介面電路
2890‧‧‧晶片組
2896‧‧‧介面
2915‧‧‧舊式I/O裝置
3000‧‧‧單晶片系統(SoC)
3002‧‧‧互連體單元
3010‧‧‧應用處理器
3030‧‧‧靜態隨機存取記憶體(SRAM)單元
3032‧‧‧直接記憶體存取(DMA)單元
3040‧‧‧顯示單元
3102‧‧‧高階語言
3104‧‧‧x86編譯器
3106‧‧‧x86二進制碼
3108‧‧‧另一指令集編譯器
3110‧‧‧另一指令集二進制碼
3112‧‧‧指令轉換器
3114‧‧‧不具x86指令集核心之處理器
3116‧‧‧具有至少一個x86指令集核心之處理器
藉由參考用以例示說明本發明之實施例的後文詳細說明部分及附圖將更為瞭解本發明。附圖中:圖1為處理可用以產生控制指數的指令之一處理器的具體實施例之方塊圖。
圖2為一種處理緊縮資料重排控制指數產生指令之一具體實施例之方法的具體實施例之方塊流程圖。
圖3為一種處理緊縮資料重排控制指數前身產生指令之一具體實施例之方法的具體實施例之方塊流程圖。
圖4為處理可用以產生控制指數的指令之一指令處理裝置的具體實施例之方塊圖。
圖5為一種處理一指令其遵照一數字樣式儲存一序列至少四個非負整數之方法的具體實施例之方塊流程圖。
圖6為可用以產生控制指數的指令之一指令格式的實施例之方塊圖。
圖7A為方塊圖例示說明於若干實施例中,由一指令所儲存的一整數序列可具有一數字樣式,其主要地或全然地係基於該指令之一操作碼。
圖7B為方塊圖例示說明於若干實施例中,由一指令所儲存的一整數序列可具有一數字樣式,其部分係基於該指令之一操作碼而部分係基於定義由該指令所指示的參數之一或多個數字樣式。
圖8為一種處理一指令其係儲存一序列至少四個按數字順序的連續非負整數之方法的具體實施例之方塊流程圖。
圖9為方塊圖例示說明一種緊縮資料重排操作之一具體實施例,使用按數字順序具有偏移連續整數值的緊縮資料重排控制指數以從兩個對齊的緊縮資料中摘取未對齊的緊縮資料以避免執行未對齊載入的需要。
圖10為一種處理一指令其係儲存一序列至少四個按數字順序的非負整數之方法的具體實施例之方塊流程圖,而 於連續位置的全部整數相差達至少2的一常數整數跨幅。
圖11為一種處理一指令其係儲存一序列至少四個按數字順序的非負相同奇偶性(例如全偶或全奇)整數之方法的具體實施例之方塊流程圖。
圖12為方塊圖例示說明一種緊縮資料重排操作之一具體實施例,使用具有呈遞增數值順序的連續偶數整數值之緊縮資料重排控制指數以分開實數(R)與虛數(IM)。
圖13為一種處理一指令其係儲存一序列至少四個按數字順序的非負整數之方法的具體實施例之方塊流程圖,於該處該等整數中之一最小者係與零偏位達該偏移值,及於該處於連續位置的全部整數係彼此相異達該跨幅。
圖14為一種處理一第一控制指數前身產生指令以以數值順序儲存一序列非負整數及一第二指令其施加一跨幅及一偏移值至各個整數之方法的具體實施例之方塊流程圖。
圖15為儲存紅綠藍α四重元組資料的一來源緊縮資料之方塊圖。
圖16為一種包括一唯讀記憶體(ROM)儲存一或多個整數序列之一處理器的具體實施例之方塊圖。
圖17A為方塊圖例示說明用以儲存控制指數及控制指數前身的一適當格式之第一具體實施例。
圖17B為方塊圖例示說明用以儲存控制指數及控制指數前身的一適當格式之第二具體實施例。
圖18為緊縮資料暫存器之一適當集合的具體實施例之方塊圖。
圖19為包括一機器可讀取儲存媒體儲存可用以產生控制指數之一指令的一製造物品之方塊圖。
圖20A例示說明一種AVX指令格式之實例,包括一VEX前綴、實際操作碼欄位、Mod R/M位元組、SIB位元組、位移欄位、及IMM8。
圖20B例示說明得自圖20A的哪些欄位組成一完整操作碼欄位及一基數操作欄位。
圖20C例示說明得自圖20A的哪些欄位組成一暫存器指數欄位。
圖21A為方塊圖例示說明依據本發明之實施例一種通用向量友善指令格式及其類別A指令樣板。
圖21B為方塊圖例示說明依據本發明之實施例一種通用向量友善指令格式及其類別B指令樣板。
圖22A為方塊圖例示說明依據本發明之實施例一種特定向量友善指令格式之實例。
圖22B為方塊圖例示說明依據本發明之一個實施例組成完整操作碼欄位的該特定向量友善指令格式之該等欄位。
圖22C為方塊圖例示說明依據本發明之一個實施例組成暫存器指數欄位的該特定向量友善指令格式之該等欄位。
圖22D為方塊圖例示說明依據本發明之一個實施例組成擴大操作欄位的該特定向量友善指令格式之該等欄位。
圖23為依據本發明之一個實施例一暫存器架構之方塊 圖。
圖24A為方塊圖例示說明依據本發明之實施例一有序管線之實例及一暫存器重新命名失序簽發/執行管線之實例二者。
圖24B顯示處理器核心,包括耦接至一執行引擎單元之一前端單元,及二者皆係耦接至一記憶體單元。
圖25A為依據本發明之實施例單一處理器核心之方塊圖,連同其連結至該晶粒上互連網路及層級2(L2)快取記憶體之其本地子集。
圖25B為依據本發明之實施例於圖25A中之該處理器核心部分之擴延圖。
圖26為依據本發明之實施例一處理器之方塊圖,該處理器可具有多於一個核心,可具有一整合記憶體控制器,及可具有整合圖形。
圖27為依據本發明之一個實施例一系統之方塊圖。
圖28顯示依據本發明之實施例一系統的第一更特定實例之方塊圖。
圖29顯示依據本發明之實施例一系統的第二更特定實例之方塊圖。
圖30顯示依據本發明之實施例一SoC之方塊圖。
圖31為依據本發明之實施例對比一軟體指令轉換器用以將於一來源指令集中之二進制指令轉換成於一目標指令集中之二進制指令之方塊圖。
詳細說明
於後文詳細說明部分中陳述無數特定細節(例如特定處理器、方法、操作、指令、數字樣式、及資料格式)。但須瞭解本發明之實施例可無此等特定細節而予實施。於其它情況下,不以細節顯示眾所周知的電路、結構及技術以免遮掩對本詳細說明部分的瞭解。
針對循環置換指令及混洗指令的控制指數典型地係藉執行一串列通用指令,該等指令係在具有來源緊縮資料元體的來源緊縮資料運算元上操作,藉著暫存而逐漸地累積。舉例言之,部分產生控制指數之方法可包括執行一串列通用緊縮資料算術指令,以在來源緊縮資料元體上執行一串列通用緊縮資料算術運算而最終將該等來源緊縮資料元體轉換成控制指數。
傾向於限制循環置換指令及混洗指令,以及概略言之,限制其它緊縮資料重排指令的用途之一項因素典型地需要執行以產生該等循環置換控制指數、混洗控制指數、或其它緊縮資料重排控制指數的指令數目。可能需要數個指令(例如約4至10個或甚至更多)以產生一控制指數集合。此外,所需指令數目通常傾向於隨著緊縮資料元體的總數的增加而增加,隨著時間的經過,當緊縮資料暫存器的位元寬度增加時出現此種情況。
就處理時、處理器資源利用性、及功耗等方面而言,執行此等指令的成本傾向於昂貴。此外,此種費用傾向於減低或消除由緊縮資料重排指令所提供的總體效益。 於某些情況下,在控制指數已經產生且使用後可被拋棄,於該種情況下,若有所需則可能需要從暫存而重新產生。於其它情況下,在控制指數已經產生且使用後可被儲存在主記憶體,及其後在需要時透過一系統匯流排而從主記憶體取回。如此有助於避免每次需要時從暫存而產生控制指數,但從主記憶體取回控制指數也傾向於耗用相當大量時間。
此處揭示可用以產生針對其它指令(例如循環置換指令、混洗指令、其它緊縮資料重排指令、及其它使用控制指數的指令)的控制指數。也揭示執行指令之方法、當處理或執行指令時由處理器所執行的方法、及結合一或多個處理器以處理或執行指令之系統。本文它處揭示的各種處理器及系統亦屬適合。有利地,此等指令、處理器、方法及系統可有助於縮短產生控制指數所需執行的處理時間及/或減少指令數目。
圖1為處理指令可用以產生控制指數之一處理器100之一具體實施例之方塊圖。該處理器可為各種複雜指令集電腦(CISC)處理器、各種精簡指令集電腦(RISC)處理器、各種極長指令字組(VLIW)處理器、其各種混成體、或全然其它型別的處理器中之任一者。於若干實施例中,處理器可為通用處理器(例如通用微處理器),但非必要。另外,處理器可為特用處理器。適當特用處理器之實例包括但非僅限於網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入式處理器、數位信號處理器(DSP)、 及控制器(例如微控制器),只舉出少數實例。
處理器具有指令集架構(ISA)101。ISA表示該處理器之與程式規劃有關的架構部分。ISA常見包括本機指令、架構暫存器、資料型別、定址模、記憶體架構、中斷及例外處理、及處理器的外部輸入及輸出(I/O)。ISA與微架構區別,微架構通常表示選用以體現該ISA的特定處理器設計技術。具有不同微架構的處理器可分享一共用ISA。
ISA包括架構可見暫存器或架構暫存器(例如架構暫存器檔案)102。架構暫存器表示處理器上儲存位置。架構暫存器於此處也可簡稱為暫存器。除非另行載明或明確顯見,否則架構暫存器、暫存器檔案、及暫存器等詞用於此處係指為軟體及/或程式設計師為可見的暫存器(例如軟體可見)及/或由通用巨集指令載明以識別運算元的暫存器。此等暫存器係與一給定微架構中的其它非架構暫存器或非架構可見暫存器(例如由指令所使用的暫時暫存器、重新排序緩衝器、報廢暫存器、由微指令所使用的微架構唯讀暫存器等)成對比。例示說明的架構可見暫存器包括緊縮資料暫存器103。緊縮資料暫存器各自可操作以儲存緊縮資料、向量資料、或SIMD資料。
例示說明的ISA包括由處理器所支援的一指令集104。該指令集的指令表示巨集指令(例如提供給處理器用以執行的指令),而與微指令或微操作相反(例如處理器的解碼器解碼巨集指令所得者)。處理器可包括特用或特定邏輯(例如潛在有某些韌體或軟體的電路)以執行該指令集的指 令。
該指令集包括一或多個使用控制指數的指令105。如前述,於若干實施例中,可包括一或多個循環置換指令、混洗指令、或其它緊縮資料重排指令106。至於另一個選項,容後詳述,於若干實施例中,可包括一或多個收集指令,或載入指令107,其可操作而使用控制指數從非在處理器上記憶體收集或載入非連續資料。
依據本發明之實施例,該指令集也包括一或多個指令其各自可用以產生該等控制指數108。於若干實施例中,可包括一或多個控制指數產生指令109,其可操作以產生實際控制指數。各個控制指數產生指令可操作而全然在單一巨集指令的執行約束範圍內產生該等控制指數。相反地,通常須執行習知一串列通用巨集指令以徐緩地或漸進地積聚得自暫存的控制指數。
於若干實施例中,指令可包括一或多個控制指數前身產生指令110,其不會產生實際控制指數,但產生控制指數前身。控制指數前身產生指令各自可操作而全然在單一巨集指令的執行約束範圍內產生該等控制指數前身。並非需要從暫存而產生實際控制指數,控制指數前身可用作為有用的起點值或頭端開始值,其藉一或多個其它指令可有效地轉換成實際控制指數。優異地,前身的使用許可比較始於暫存更快速地及/或使用更少指令地產生實際控制指數。
處理器也包括執行邏輯111。該執行邏輯係可操 作以執行或處理該指令集的指令。
圖2為一種處理緊縮資料重排控制指數產生指令之一具體實施例之方法212之一具體實施例的方塊流程圖。於方塊213,接收到緊縮資料重排控制指數產生指令。所接收的指令載明或以其它方式指示第一目的地儲存位置。於某些面向中,該第一目的地儲存位置可藉位元或該指令的一或多個編碼欄位明確地載明。於其它面向中,該第一目的地儲存位置可由指令暗示。
於方塊214,應答及/或由於緊縮資料重排控制指數產生指令的結果,一結果係儲存在該第一目的地儲存位置。該結果係包括表示緊縮資料重排控制指數的一序列至少四個非負整數。該至少四個整數典型地具有多個不同值(亦即並非全部皆為相同整數值)。於各個實施例中,該序列可包括至少8,至少16,至少32,或至少64個表示緊縮資料重排控制指數的非負整數。
為了進一步例示說明某些構想,但本發明並不限於此一面向,於方塊215,出現緊縮資料重排指令的接收。於多個面向中,此種指令可為循環置換指令、混洗指令、或其它型別的緊縮資料重排指令,其係可操作以依據緊縮資料重排控制指數而重排在一或多個來源緊縮資料中的資料元體。該指令指示緊縮資料重排控制指數(例如載明第一目的地儲存位置)。該指令也載明或以其它方式指出具有緊縮資料元體的至少一個來源緊縮資料,及載明或以其它方式指出第二目的地儲存位置。
於方塊216,應答及/或由於緊縮資料重排控制指數產生指令的結果,一緊縮資料結果係儲存在該第一目的地儲存位置。該緊縮資料結果係包括得自依據該等緊縮資料重排控制指數而重排的至少一個來源緊縮資料的資料元體。於若干實施例中,如同於許多循環置換指令及混洗指令之情況下,該等緊縮資料重排控制指數可識別、選擇、或以其它方式檢索在該至少一個來源緊縮資料內部的特定資料元體。該被檢索的資料元體可儲存於結果資料元體中相對應於該指數的位置。
圖3為一種處理緊縮資料重排控制指數前身產生指令之一具體實施例之方法317之一具體實施例的方塊流程圖。於方塊318,接收到緊縮資料重排控制指數前身產生指令。所接收的指令載明或以其它方式指示目的地儲存位置。
於方塊319,應答及/或由於緊縮資料重排控制指數前身產生指令的結果,一結果係儲存在該第一目的地儲存位置。該結果係包括表示緊縮資料重排控制指數前身的一序列至少四個非負整數。該至少四個整數典型地具有多個不同值。於各個實施例中,該序列可包括至少8,至少16,至少32,或至少64個表示緊縮資料重排控制指數前身的非負整數。該結果及/或整數序列可為本文它處揭示的結果及/或整數序列中之任一者。於若干實施例中,該結果及/或整數序列可全然係在單一巨集指令執行的約束以內產生(例如整數值可能不取決於程式流程中的任何先前指令)。
為了進一步例示說明某些構想及雖然本發明並非限於此一面向,於方塊320,執行至少一個額外指令(例如至少一個通用算術指令)以將緊縮資料重排控制指數前身轉換成緊縮資料重排控制指數。至少一個額外指令中之第一者可指示該目的地儲存位置作為該緊縮資料重排控制指數前身的來源。
然後,於方塊321,可執行指令緊縮資料重排控制指數的緊縮資料重排指令。該緊縮資料重排指令的操作可類似先前所述。
於圖2及3中,於方塊215、216、320、及321的操作已經顯示以更明白例示說明某些構想。但須瞭解本發明並非限於此等方塊中執行的操作。其它實施例係有關於個別緊縮資料重排控制指數產生指令的方法及操作,又有其它實施例係有關於個別緊縮資料重排控制指數前身產生指令的方法及操作,並非限於其它接續指令的操作。
圖4為指令處理裝置400之一具體實施例之方塊圖。該指令處理裝置可為一處理器或為一處理器的一部分。舉例言之,於若干實施例中,指令處理裝置可為圖1之處理器100或其一部分或類似者。另外,指令處理裝置可含括於不同處理器或電子系統(例如此處揭示的其它處理器或系統中之一者)。
指令處理裝置可接收一指令408,其可用以產生控制指數。該指令可表示本文它處揭示的可用以產生控制指數的指令之各個實施例。該指令可表示機器指令、巨集 指令或類似的控制信號。該指令處理裝置具有特用或特定電路或其它邏輯(例如硬體可能組合韌體及/或軟體)其可操作以應答、作為結果、及/或依據該指令以處理該指令及/或儲存一結果。
例示說明之指令處理裝置包括一指令解碼器422。該解碼器可接收與解碼高階機器指令或巨集指令,且輸出反映及/或從原先高階指令推衍出的低階微操作、微碼進入點、微指令、或其它低階指令或控制信號。一或多個低階指令或控制信號可透過一或多個低階(例如電路層級或硬體層級)操作而體現高階指令之操作。解碼器可使用多個不同機制體現,包括但非僅限於微碼唯讀記憶體(ROM)、詢查表、硬體體現、可規劃邏輯陣列(PLA)、及技藝界已知用以體現解碼器的其它機制。
另外,替代具有指令解碼器422,於一或多個其它實施例中,該裝置可具有指令仿真器、轉譯器、變形器、解譯器、或其它指令轉換邏輯。多種不同型別的指令轉換邏輯為技藝界所已知且可於軟體、硬體、韌體或其組合體現。該指令轉換邏輯可接收該指令、仿真、轉譯、變形、解譯或以其它方式轉換該指令成為一或多個相對應推衍的指令或控制信號。於又其它實施例中,指令處理裝置可具有指令轉換邏輯及解碼器二者。舉例言之,該指令處理裝置可具有指令轉換邏輯以將所接收的指令轉換成一或多個中間指令,及具有解碼器以將該等一或多個中間指令轉換成可藉該指令處理裝置的本機硬體執行的一或多個低階指 令或控制信號。部分或全部指令轉換邏輯可非在該指令處理裝置的其餘部分的晶粒上,諸如位在一分開晶粒上或在一非在晶粒上之記憶體中。
再度參考圖4,可用以產生控制指數的指令408明確地載明(例如透過一或多個欄位)或以其它方式指示(例如暗示)一目的地儲存位置427。如圖所示,於若干實施例中,該目的地儲存位置可位在指令處理裝置的一緊縮資料暫存器403集合內部。另外,該目的地儲存位置可為另一個暫存器或記憶體位置。緊縮資料暫存器為架構上可見的處理器上儲存位置,可使用眾所周知之技術以不同方式於不同微架構體現,而非限於任何已知之特定型別的電路。多個不同型別的暫存器為適合,只要其可如此處所述儲存且提供資料即可。適當型別的暫存器之實例包括但非僅限於專用實體暫存器、使用暫存器重新命名的動態配置實體暫存器、及其組合。
指令處理裝置也包括一執行單元423。該執行單元係耦接解碼器422及目的地儲存位置427。該執行單元可從該解碼器接收反映指令408或從指令408推衍的一或多個微操作、微碼進入點、微指令、或其它指令、或其它控制信號。舉例言之,該執行單元可包括一算術邏輯單元、一邏輯單元、一算術單元、一功能單元等。該執行單元可包括特用或特定硬體邏輯(例如積體電路)可能帶有其它邏輯(例如軟體、韌體或其組合)其係可操作以執行該指令(例如執行一或多個微指令)及/或應答該指令而儲存結果。
該執行單元係可操作、應答該指令及/或由於指令408的結果而儲存一結果428於目的地儲存位置427。如圖所示,於實施例中,該結果可包括一序列至少四個整數。於實施例中於該處指令408為控制指數產生指令,整數各自可表示一控制指數。於實施例中於該處指令408為控制指數前身產生指令,整數各自可表示一控制指數前身。
於若干實施例中,執行單元可操作計算邏輯424,其可操作以計算該序列至少四個整數。此等可為特用或特定電路(例如使用柱狀掃掠辦法計算該等整數、迭代重複地計算該等整數、等)。於其它實施例中,執行單元可應答該指令而從一記憶體426(例如非架構可見的唯讀記憶體(ROM)其係與該執行單元在晶粒上)存取該序列至少四個整數425的一既存拷貝。例如參考如下圖16之討論。於此等實施例中之任一者,該整數序列典型地不從非在晶粒上主記憶體存取或透過一系統匯流排存取。
於若干實施例中,結果可包括遵照數字樣式的一序列至少四個、至少8個、至少16個、至少32個、或至少64個非負整數。於若干實施例中,遵照數字樣式的整數可為呈數值排序(例如0、1、2、3、4、5、6及7)的連續非負整數。於其它實施例中,遵照數字樣式的整數可為呈數值排序的非負整數而在連續位置的全部整數差異達至少2的一常數整數跨幅。於若干實施例中,該跨幅可等於2,及該整數序列可為呈數值排序的一序列之連續相同奇偶性整數。舉例言之,連續相同奇偶性整數可為連續偶整數(例如0、2、4、 6、8、10、12及14)或連續奇整數(例如1、3、5、7、9、11、13、及15)。於其它實施例中,該跨幅可大於2(例如該跨幅可為3、4、8、16等),及該整數序列可包括該跨幅的連續整數倍數(例如0、N、2N、3N、4N、5N、6N及7N)。
於若干實施例中,該指令可明確地載明或以其它方式指示一或多個數字樣式界定參數(例如整數偏位、常數整數跨幅、整數旋轉量、整數偏位及常數整數跨幅等)。於若干實施例中,該指令可指示正整數偏位(K),及該等整數中之最小整數可從零偏移達該整數偏位(例如以連續整數為例,K、K+1、K+2、K+3、K+4、K+5、K+6及K+7)。於若干實施例中,該指令可指示正整數偏位(K)及常數整數跨幅(N),及該等整數可為從零偏移達的跨幅之整數倍數(例如K、N+K、2N+K、3N+K、4N+K、5N+K、6N+K、及7N+K)。另外,該結果及/或該序列至少四個整數可為本文它處針對可用以產生控制指數的指令之各個實施例揭示的該等結果及/或該等序列至少四個整數中之任一者。於若干實施例中,該數字樣式係全然地或至少主要地基於該指令之一操作碼或該操作碼與一或多個數字樣式界定參數,或係由該操作碼或該操作碼與一或多個數字樣式界定參數所固定。於更進一步實施例中,該整數序列無需遵照一數字樣式(例如可為近似隨機)。
為了避免遮掩詳細說明部分,已經顯示及描述一種相對簡單的指令處理裝置400。於其它實施例中,該指令處理裝置可選擇性地包括其它眾所周知的組件,諸如指令 提取單元、指令排程單元、分支預測單元、指令及資料快取記憶體、指令及資料轉譯後備緩衝器、預提取緩衝器、微指令佇列、微指令排序器、匯流排介面單元、第二階或更高階快取記憶體、報廢單元、暫存器重新命名單元、含括於處理器的其它組件、及其各項組合。實施例可具有多個核心、邏輯處理器、或執行引擎。可操作以執行此處揭示的指令實施例之執行單元可含括於至少一個、至少兩個、大部分、或全部核心、邏輯處理器、或執行引擎中。須瞭解有文字上多種不同的處理器內之組件組合及組態,及本發明之範圍並非限於任何特定組合或組態。
圖5為處理一指令可用以產生控制指數之方法530之一具體實施例之方塊流程圖,該指令儲存遵照數字樣式的一序列至少四個非負整數。於方塊531,接收該指令。該指令載明或以其它方式指示一目的地儲存位置。
於方塊532,一結果係應答該指令儲存於該目的地儲存位置及/或作為該指令之結果。該結果包括遵照數字樣式的一序列至少四個非負整數。於各個實施例中,該結果可包括遵照數字樣式的一序列至少8、至少16、至少32、至少64或甚至更多個非負整數。該整數序列可為本文它處揭示的遵照各種數字樣式的任何整數序列。經常至少兩個,至少四個,至少半數,或甚至全部整數可具有不同值(亦即該等整數典型地並非皆相同)。
圖6為可用以產生控制指數之一指令608的指令格式之一實施例之方塊圖。該指令格式包括操作碼633。該 操作碼可表示多個位元或該指令格式之一或多個欄位以識別該指令。該指令格式也包括目的地儲存位置634。於該具體實施例中,該指令格式包括多個位元或該指令格式之一或多個欄位以明確地載明該目的地儲存位置。另外,該目的地儲存位置可暗示該指令。
於若干實施例中,該指令格示並不明確地載明、暗示、或以其它方式指示一架構上可見的來源儲存位置(例如緊縮資料暫存器或主記憶體位置)具有欲藉指令635操作的緊縮資料元體。於本發明之實施例中,整數序列、控制指數、及控制指數前身係藉此處揭示的指令儲存,不從在架構上可見的來源儲存位置的緊縮資料元體計算或推衍。相反地,如背景章節之討論,習知循環置換及混洗控制指數典型地係藉執行一串列通用指令(例如通用緊縮資料算術指令)而從暫存堆積,該等指令在架構上可見的來源緊縮資料暫存器內的緊縮資料元體上操作直至該等緊縮資料元體最終被轉換成循環置換及混洗控制指數。於本發明之實施例中,藉此處揭示的指令儲存之整數序列、控制指數、及控制指數前身全然係在單一指令執行的約束以內產生,而非基於呈程式順序的任何先前指令結果。
於若干實施例中,指令格式可具有一或多個來源運算元及/或一或多個立即以明確地載明一或多個數字樣式界定參數636。另外,一或多個數字樣式界定參數可藉該指令暗示(例如經由該指令暗示之一暫存器提供。該等一或多個數字樣式界定參數各自可影響一結果或儲存作為該指 令結果之該整數序列之一數字樣式。一或多個數字樣式界定參數各自可影響該序列或結果中之各個整數值。該等一或多個數字樣式界定參數各自可用以評估暗示該指令之一數字樣式界定方程式或關係式。適當數字樣式界定參數的少數代表例包括但非僅限於從零的整數偏位、整數跨幅、整數旋轉量、及其組合(例如從零的整數偏位及整數跨幅)。
於其它實施例中,該指令可不載明或以其它方式指示任何數字樣式界定參數。於若干實施例中(例如於指令不載明或以其它方式指示任何數字樣式界定參數之情況下),該指令可不具有(例如載明或以其它方式指示)任何來源運算元637。
圖7A為方塊圖例示說明於若干實施例中,藉指令708A儲存在一目的地儲存位置727A的一結果728A中的一整數序列740A可具有一數字樣式,其全然或至少主要738係基於該指令之一操作碼733A。該指令具有操作碼及位元或一或多個欄位734A載明該目的地儲存位置727A。注意本實施例之指令並不載明或以其它方式指示任何數字樣式界定參數或針對該情況的任何來源運算元。指令的執行使得該結果儲存於目的地儲存位置。結果包括具有數字樣式的整數序列。於此等實施例中,整數序列的數字樣式係完全或至少主要基於該指令的操作碼。於此等實施例中,整數序列的數字樣式係針對該指令的操作碼為固定或為常數。舉例言之,於該序列的連續整數間之差可完全或至少主要基於該指令的操作碼及/或針對該指令的操作碼為固定或 為常數。當識別該操作碼時,整數序列及其數字樣式可為固定(亦即可不取決於該指令的任何來源運算元)。於若干實施例中,該指令/操作碼能夠只儲存一個特定整數序列及一個特定數字樣式。藉由比較,當通用算術指令在來源緊縮資料上操作以產生循環置換或混洗控制指數時,循環置換或混洗控制指數沒有數字樣式係全然或甚至主要係基於通用算術指令的操作碼,反而係基於來源緊縮資料。
圖7B為方塊圖例示說明於若干實施例中,藉指令708B儲存在一目的地儲存位置727B的一結果728B中的一整數序列740B可具有一數字樣式,其係部分基於739該指令之一操作碼733B及部分基於藉該指令指示的一或多個數字樣式界定參數736。該數字樣式係全然或至少主要基於該操作碼及一或多個數字樣式界定參數。該指令具有操作碼及位元或一或多個欄位734B載明該目的地儲存位置727B,及載明或以其它方式指示指示該等一或多個數字樣式界定參數736。指令的執行使得該結果儲存於目的地儲存位置。結果包括具有數字樣式的整數序列。於此等實施例中,整數序列的數字樣式係部分基於該指令的操作碼及部分基於藉該指令指示的一或多個數字樣式界定參數,但係完全或至少主要基於該操作碼及該等一或多個數字樣式界定參數(亦即並非基於由前一個指令儲存為結果的來源緊縮資料)。
圖8為處理可用以產生控制指數之一指令之方法830的一具體實施例之方塊流程圖,其係儲存按數字順序的 一序列至少四個連續非負整數。於方塊831,接收該指令。該指令載明或以其它方式指示一目的地儲存位置。
於方塊832,應答該指令及/或由於該指令之結果,一結果係儲存於該目的地儲存位置。該結果包括按數字順序的一序列至少四個連續非負整數。於若干實施例中,該結果可為於該目的地儲存位置按數字順序的一序列至少8,至少16,至少32,至少64或甚至更多個連續非負整數。於多個實施例中,該序列之連續整數可包括表1-3顯示的任一者。
表1列舉針對不同整數數目呈遞增數值順序的多個序列之連續非負整數之具體實施例。
於遞增數值順序中,該等整數值隨著目的地儲存位置的位元有效性的增加而增高(例如最小整數係將儲存最接近該暫存器的最低排序位元,及最大整數係將儲存最接近該暫存器的最高排序位元)。於各個此等實例中,最小整數係為零。於若干實施例中,一指令/操作碼可只儲存選 自表1的一整數序列(亦即可能無法儲存其它整數),但對其它實施例並非必要。呈遞增數值順序的此種連續整數序列特別可用於控制指數前身,原因在於其可使用一個或數個額外指令而快速、有效、且多樣化、算術上或邏輯上轉換成可用於控制指數的寬廣範圍之不同整數序列。
表2列舉針對不同整數數目呈遞減數值順序的多個序列之連續非負整數之具體實施例。
於該遞減數值順序中,整數值係隨該目的地儲存位置的位元有效性的增高而增加。於若干實施例中,一指令可具有一或多個位元以指示整數欲以遞增的或遞減的數值順序儲存,以許可儲存一個指令/操作碼欲用於任一者。此種呈遞減數值順序的連續整數之序列係可用以鏡射緊縮資料重排。於鏡射緊縮資料重排之一個實例中,於緊縮資料來源的資料元體係環繞該緊縮資料來源之一中心「鏡射」。舉例言之,於一來源中的最高排序資料元體係變成一結果中的最低排序資料元體,於該來源中的次高排序資料 元體係變成該結果中的次低排序資料元體,等等直至於該來源中的次低排序資料元體係變成該結果中的次高排序資料元體,及於該來源中的最低排序資料元體係變成該結果中的最高排序資料元體。
表3列舉針對不同整數數目呈遞增數值順序的多個序列之連續非負整數之具體實施例,其具有從零偏移達一整數偏位(K)。
如表所示,整數中之最小者可從零偏移達該偏位且可具有一偏位值。舉例言之,該整數偏位(K)可選擇性地加至表1所示該等序列的各個整數。類似實施例預期涵蓋於遞減數值順序的連續非負整數。此種按數字順序的連續非 負整數,從零偏移達一可變正整數偏位(K),可用以協助從兩個排齊的緊縮資料中摘取未排齊的緊縮資料,以免需要執行未排齊的負擔(例如參考圖9之討論)。
於若干實施例中,該指令可明確地載明(例如透過一來源運算元或一立即)或以其它方式指示(例如暗示一暫存器具有)該整數偏位(K)。偏位(K)表示樣式界定參數之一具體實施例,其影響於數字樣式中該等整數各自之值,及該數字樣式所植基者。
於若干實施例中,結果可包括按數字順序的旋轉連續非負整數,其已被旋轉達一整數旋轉量(R)。表4列舉針對不同整數數目,呈遞增數值順序的連續非負整數之序列,其已被旋轉達一整數旋轉量(R)。
如表中所示,各個整數係於旋轉方向旋轉,且當轉出一端時即從另一端轉入。於若干實施例中,該指令可 明確地載明(例如透過一來源運算元或一立即)或以其它方式指示(例如暗示一暫存器具有)該旋轉量(R)。該旋轉量(R)表示樣式界定參數之一具體實施例,其影響於數字樣式中該等整數各自之值,及該數字樣式所植基者。該等整數可轉向右或轉向左。於若干實施例中,該指令也可明確地載明或以其它方式指示一旋轉方向。針對於遞減數值順序的連續非負整數也預期類似的實施例。此等已旋轉的連續整數可用以旋轉緊縮資料元體。此等已旋轉的連續整數可用於小於完整向量大小的序列中旋轉緊縮資料元體。
圖9為方塊圖例示說明使用具有呈數字樣式之偏位連續整數值的緊縮資料重排控制指數以從兩個排齊的緊縮資料中摘取未排齊的緊縮資料,以免需要執行未排齊的負擔之一種緊縮資料重排操作的具體實施例。該操作可應答緊縮資料重排操作而實施。
該緊縮資料重排指令可指示具有八個資料元體A0-A7的一第一來源緊縮資料942,具有八個資料元體B0-B7的一第二來源緊縮資料943,具有八個資料元體C0-C7的一第三來源緊縮資料944,其各自包括八個緊縮資料重排控制指數I0-I7中之相對應者,及一結果緊縮資料945。舉例言之,控制指數I0-I7各自可為4-位元寬,且可含括於相對應緊縮資料元體C0-C7中之最低有效4-位元,其可為8-位元、16-位元、32-位元、或64-位元寬。其它指令可使用其它數目的資料元體及控制指數。
結果緊縮資料945係應答緊縮資料重排操作/指 令而產生與儲存。於本實施例中,緊縮資料重排控制指數各自係相對應於在一相對應位元位置的一結果資料元體。該等控制指數各自可操作以選擇該第一及第二來源緊縮資料中之該等16個資料元體中之任一者(亦即A0-A7或B0-B7中之任一者)欲儲存入相對應結果資料元體。舉例言之,該第一控制指數I0係可操作以選擇A0-A7或B0-B7中之任一者欲儲存於結果緊縮資料的一第一結果緊縮資料元體。4位元即足夠獨特地選擇該等16個來源資料元體中之任一者。依據一個可能的習慣,一控制指數具有數值0以選擇A0,1以選擇A1,2以選擇A2,3以選擇A3,4以選擇A4,5以選擇A5,6以選擇A6,7以選擇A7。一控制指數具有數值8以選擇B0,9以選擇B1,10以選擇B2,11以選擇B3,12以選擇B4,13以選擇B5,14以選擇B6,及15以選擇B7
於本實施例中,緊縮資料重排控制指數具有按數字順序的偏位連續整數值。更明確言之,控制指數I0、I1、I2、I3、I4、I5、I6、I7分別地具有數值2、3、4、5、6、7、8、及9。如圖所示,此等控制指數係可操作以為結果緊縮資料的八個資料元體選擇A2、A3、A4、A5、A6、A7、B0及B1。使用此等指數的操作合併了A2-A7與B0-B1。替代需執行不排齊負擔以合併A2-A7與B0-B1,此種合併可使用按數字順序的偏位連續整數之序列作為控制指數執行。
同理,容易瞭解呈遞減數值順序的連續整數如何可用以執行鏡射緊縮資料元體重排。此外,容易瞭解如何可使用旋轉連以旋轉緊縮資料元體。
圖10為一種處理可用以產生控制指數之一指令的方法1030之一具體實施例之方塊流程圖,該方法儲存按數字順序的一序列至少四個非負整數而於連續位置的全部整數相差達至少2的一個常數整數跨幅。於方塊1031,接收到該指令。該指令載明或以其它方式指示一目的地儲存位置。
於方塊1032,應答該指令及/或由於該指令的結果,一結果係儲存於該目的地儲存位置。該結果係包括按數字順序的一序列至少四個非負整數而於連續位置的全部整數相差達至少2的一個常數整數跨幅。於若干實施例中,該結果可包括按數字順序的一序列至少8、至少16、至少32、至少64或甚至更多個非負整數而於連續位置的全部整數相差達至少2的一個常數整數跨幅。
常數跨幅表示於該目的地儲存位置中在連續位置的整數值間之一常數差值。於各個實施例中,該跨幅可為2、3、4或以上。由2、3及4常數跨幅分隔的整數係特別可用以處理重複排列的成對/二重元組資料(例如成對實數及虛數,或其它成對資料)、三重元組資料(例如RGB或其它色彩成分資料),及四重元組資料(例如RGBA或其它色彩成分加透明/不透明資料)。甚至更大的跨幅可用於控制指數用以收集可從記憶體(例如從表或其它結構化資料排列)收集非連續資料的指令。於若干實施例中,該指令只能儲存一整數序列,其中連續整數相差達一常數跨幅,但其它實施例並非受此所限。
圖11為一種處理可用以產生控制指數之一指令 的方法1130之一具體實施例之方塊流程圖,該指令儲存按數字順序的一序列至少四個非負相同奇偶性(例如全偶或全奇)整數。於方塊1131,接收到該指令。該指令載明或以其它方式指示一目的地儲存位置。
於方塊1132,應答該指令及/或由於該指令的結果,一結果係儲存於該目的地儲存位置。該結果係包括按數字順序的一序列至少四個非負相同奇偶性整數。整數奇偶性係指係為偶數或奇數。偶整數具有相同奇偶性,及奇整數具有相同奇偶性,該奇偶性係與偶數的奇偶性不同。於若干實施例中,該結果可包括按數字順序的一序列至少8、至少16、至少32、至少64或甚至更多個偶整數(例如連續偶整數)。於其它實施例中,該結果可包括按數字順序的一序列至少8、至少16、至少32、至少64或甚至更多個奇整數(例如連續奇數)。
表5列舉針對不同整數數目呈遞增數值順序的多個序列之連續偶整數之具體實施例。
表6列舉針對不同整數數目呈遞增數值順序的多個序列之連續奇整數之具體實施例。
於若干實施例中,一指令/操作碼只能儲存選自表5或表6之一整數序列(換言之,可能無法儲存其它整數),但針對其它實施例可能並非如此。此等連續偶及奇整數之序列係特別可用以處理重複排列的二重元組資料,諸如成對實數及虛數表示複數以及其它成對資料。舉例言之,此等連續偶及奇整數之序列係可用以分開、隔開、解交插一個型別的成對或二重元組資料彼此(例如分開實數與虛數)。例如參考圖12之討論。
於其它實施例中,一整數偏位(K)可選擇性地加至各個相同奇偶性整數。於又更其它實施例中,該序列之相同奇偶性整數可旋轉達一整數旋轉量(R)。於又更其它實施例中,該等相同奇偶性整數可於遞減數值順序。
圖12為方塊圖例示說明使用具有呈遞增數值順序的連續偶整數值以分開實數(R)與虛數(IM)的緊縮資料重 排控制指數之一種緊縮資料重排操作之具體實施例。該操作可應答一緊縮資料重排指令而執行。
該指令可指示具有八個資料元體R0、IM0、R1、IM1、R2、IM3、R3、IM3的一第一來源緊縮資料1242,具有八個資料元體R4、IM4、R5、IM5、R6、IM6、R7、IM7的一第二來源緊縮資料1243,具有八個資料元體C0-C7的一第三來源緊縮資料1244,各自包括八個緊縮資料重排控制指數I0-I7中之一相對應一者,及一結果緊縮資料1245。於該第一及第二來源緊縮資料中,實數(R)與虛數(IM)交插。舉例言之,控制指數I0-I7各自可為4-位元寬且可含括於相對應資料元體C0-C7的最低有效4-位元。
應答緊縮資料重排操作/指令,產生與儲存結果緊縮資料1245。於本實施例中,控制指數各自係相對應於在一相對應位元位置的結果資料元體。於本實施例中,控制指數具有呈遞增數值順序的連續偶整數值。更明確言之,控制指數I0、I1、I2、I3、I4、I5、I6、I7分別地具有值0、2、4、6、8、10、12、及14。如圖所示,此等控制指數可操作以選擇與儲存實數R0、R1、R2、R3、R4、R5、R6、R7在所得結果資料的八個資料元體。如此大致上解交插或分開實數(R)與虛數(IM)。
於替代實施例中,類似的緊縮資料重排控制指數可使用具有呈遞增數值順序的連續奇整數值之控制指數進行以分開實數(R)與虛數(IM)。更明確言之,控制指數I0、I1、I2、I3、I4、I5、I6、I7分別地具有值1、3、5、7、9、11、 13、及15以選擇與儲存虛數IM0、IM1、IM2、IM3、IM4、IM5、IM6、IM7在所得結果資料的八個資料元體。此外,具有按數字順序的連續偶或奇整數值之控制指數也可用以分開其它型別的成對資料或其它二重元組資料。
於其它實施例中,跨幅可大於2。表7列舉按數字順序的整數之序列,針對不同整數數目,整數於連續位置相差達大於2的一常數整數跨幅。
此等僅為少數具體實施例。為求簡明,只對4、8、或16個控制指數或控制指數前身顯示實例,但也預期涵蓋其它數目(例如32、64等)。也為了簡明,只顯示數個跨幅實 例(亦即3、4及8),但其它跨幅亦屬可能(例如5、6、10、16等)。也意圖涵蓋其它實施例,其中整數序列係呈遞減順序,係從零偏移、及/或被旋轉。
圖13為一種可用以產生控制指數之處理指令之方法1330之具體實施例,儲存按數字順序至少四個連續整數之一序列,於該處整數中之一最小者從零偏移達一整數偏位(K),及於該處於連續位置的整數彼此相差達該跨幅(N)。於方塊1331,接收指令。該指令係載明或以其它方式指示一目的地儲存位置。
於若干實施例中,該指令明確地載明或以其它方式指示一整數偏位(K)及一常數整數跨幅(N)。於若干實施例中,該指令可具有一來源運算元及一立即中之至少一者以明確地載明偏位(K)及/或跨幅(N)。至於另一選項,指令可暗示地指示一暫存器提供偏位(K)及/或跨幅(N)。於某些情況下,偏位可為零,或於其它情況下,可為非零正整數。常數整數跨幅為1或以上的正整數。該指令可設定偏位(K)及跨幅(N)中之各者以獲得適合期望的控制指數之期望數字樣式。
於方塊1332,應答該指令及/或由於該指令的結果,一結果係儲存於該目的地儲存位置。該結果包括於該目的地儲存位置按數字順序至少四個連續整數之一序列,於該處整數中之一最小者從零偏移達該偏位(K),及於該處於連續位置的整數彼此相差達該跨幅(N)。於該目的地儲存位置於位置(i)的整數值可等於位置(i)乘以跨幅(N)加至偏 位(K)。數學上,如此可表示為在位置(i)之整數=(N*i+K),於該處i係於從零至1小於該序列中的整數總數之範圍(例如針對第一整數的i為0,針對第二整數的i為1,等)。
表8列舉按數字順序的整數之序列之具體實施例,針對不同數目的整數,於該處整數中之一最小者從零偏移達該偏位(K),及於該處於連續位置的整數彼此相差達該跨幅(N)。
如前文討論,按數字順序之連續非負整數為有用且多樣性可用以產生多種不同整數序列及/或數字樣式。於若干實施例中,儲存按數字順序之連續非負整數之一指令 可連同施加一跨幅及一偏位以產生無數有用的數字樣式中之一者的一指令一起使用。
圖14為一種方法1446之一具體實施例的方塊流程圖,該方法係處理一第一控制指數前身產生指令以儲存按數字順序之連續非負整數,及一第二指令其施加一跨幅及一偏位至按數字順序的連續非負整數中之各者。
於方塊1431,接收第一控制指數前身產生指令。該指令載明或以其它方式指示一第一目的地儲存位置。
於方塊1432,應答第一指令,第一結果係儲存於第一目的地儲存位置。該結果包括按數字順序至少四個連續整數之一序列。於若干實施例中,該結果可包括上表1所示整數序列中之一者。
於方塊1447,接收第二指令指示按數字順序至少四個連續整數之該序列(例如明確地載明第一目的地儲存位置作為來源)。第二指令指示一第二目的地儲存位置及指示一跨幅(N)及一偏位(K)。於若干實施例中,第二指令可具有至少一個來源運算元及/或立即以明確地載明該跨幅及偏位。
於方塊1448,應答第二指令,一第二結果係儲存於第二目的地儲存位置。該第二結果包括按數字順序至少四個連續整數之一序列,於該處於連續位置的全部整數彼此相差為跨幅(N),及於該處該等整數中之一最小者從零偏移達該偏位(K)。於若干實施例中,該等至少四個連續整數各自可乘以跨幅(N),及偏位(K)可加至各個乘積。舉例言 之,該跨幅(N)可廣播入第一臨時暫存器中之多個跨幅(N)內,該偏位(K)可廣播入第二臨時暫存器中之多個偏位(K)值內,及該等至少四個連續整數各自可乘以第一臨時暫存器,及結果所得乘積可加至第二臨時暫存器。第二結果的整數序列可遵照數字樣式(N*i+K)。
圖15為儲存RGBA(亦即紅綠藍α)四重元組資料的一來源緊縮資料1542之方塊圖。RGBA資料表示色彩成分加透明/不透明資料。RGBA資料常用在電腦及具有顯示器/螢幕的其它電子裝置。特別例示說明的緊縮資料運算元具有十六個資料元體。於該例示說明中,16資料元體個別地儲存R0、G0、B0、A0、R1、G1、B1、A1、R2、G2、B2、A2、R3、G3、B3、A3。於若干實施例中,一數字樣式或整數之序列可操作以在四重元組資料上執行有用的操作。
表9列出在RGBA資料或其它四重元組資料上執行各項有用的操作之整數之序列的具體實施例。此等序列中之多者通常可用於四重元組資料。
注意此等數字樣式具有四個整數之一個重複單元,使得該樣式每四個整數重複一次。此等僅為少數實例。也預期涵蓋執行其它操作的其它順序。
又有其它實施例無需利用具有數字樣式的緊縮資料重排控制指數。一般而言,任何整數之序列皆可使用,只要其可用於控制指數或控制指數前身即可。
該等整數可具有適用於控制指數或控制指數前身之值。常見緊縮資料重排指令使用控制指數,該等控制指數可操作以檢索或選擇4來源緊縮資料元體、8來源緊縮資料元體、16來源緊縮資料元體、32來源緊縮資料元體、64來源緊縮資料元體、或於某些情況下,128來源緊縮資料元體中之任一者。於實施例中,於一序列中的各個整數可具有從零至一上限之值,該上限係為相聯結的緊縮資料重 排指令指數中的資料元體總數減1。舉例言之,於各個實施例中,該等整數值可全部係在0至127之範圍以檢索或選擇128來源緊縮資料元體中之任一者,可為在0至63之範圍以檢索64來源緊縮資料元體中之任一者,可為在0至31之範圍以檢索32來源緊縮資料元體中之任一者,可為在0至15之範圍以檢索16來源緊縮資料元體中之任一者,及可為在0至7之範圍以檢索8來源緊縮資料元體中之任一者。於若干實施例中,指令/操作碼無法儲存在此等範圍以外的整數,但對其它實施例並非必要。可用以產生控制指數用於收集或載入指令其係載入來自記憶體(例如來自一表)的非連續資料之指令常有略為較大的整數值之範圍。
各個指令集架構(ISA)具有一或多個指令,該等指令係從非連續記憶體位置載入資料,或儲存資料至非連續記憶體位置。此種指令之實例包括但非僅限於收集及散播指令。舉例言之,收集指令可使用透過收集指令來源所提供的一收集指令向量,收集多個資料元體或載入得自多個非連續記憶體位置的一結果緊縮資料。散播指令可使用經由該等散播指令之一來源所提供的一散播指令向量,而將得自一來源緊縮資料的多個資料元體散播或儲存入多個非連續記憶體位置。於若干實施例中,如此處揭示的控制指數產生指令可用以針對此等收集及/或散播指令而產生控制指數,及/或針對存取記憶體中的非連續位置之其它指令而產生控制指數。舉例言之,此處揭示的控制指數產生指令可用以產生收集指數向量及/或散播指數向量,個別地 可藉收集或散播指令而指示為來源運算元。
收集及散播指令可用於各項不同目的。於若干實施例中,收集及散播指令係個別地可用以載入資料來自或儲存資料至表格或其它規則排列的資料結構。舉個實例,當資料係以欄為主的順序排序時,收集及散播指令可用以存取二維陣列的一列。至於另一個實例,當資料係以列為主的順序排序時,收集及散播指令可用以存取二維陣列的一欄。其它實例包括存取多維陣列中的資料。於此等實例中,如此處揭示的序列或控制指數可用以產生,或協助產生收集指數向量及/或散播指數向量。常見地,作為存取得自於以欄為主的有序陣列中之一列的資料,或作為存取得自於以列為主的有序陣列中之一欄的資料,可使用如本文它處所揭示的一常數跨幅。如此處揭示的跨幅值及偏位值可如前文描述用以產生收集指數向量及/或散播指數向量。舉例言之,跨幅可基於列長度及/或該列內部的欄位置。然後收集指令或散播指令載明產生收集指數向量及/或散播指數向量作為一來源。
另外,於其它實施例中,從非連續記憶體位置載入資料之一指令(例如收集指令)或儲存資料至非連續記憶體位置之一指令(例如散播指令)如本文它處描述可結合控制指數產生能力。舉例言之,於若干實施例中,收集指令及/或散播指令可指示具有一跨幅及一偏位中之一或多者的一來源,且該收集指令及/或散播指令可操作而使用該跨幅及/或偏位以產生控制指數,及在該單一收集指令及/或散 播指令之執行的約束以內執行收集及/或散播操作。前文述及的使用該跨幅及偏位的不同可能性可由此等指令使用。此種指令的一項可能優點為可能無需一向量規度-指數-基數(SIB),許可改造傳統SIB及/或更短的指令編碼。
預期涵蓋不同的產生控制指數及/或控制指數前身之方式。於若干實施例中,整數之序列可於製造時(例如在執行應用程式碼的運轉時間前)儲存於處理器的記憶體,如此處揭示的指令(例如運轉時間含括於應用程式碼)可操作以當於運轉時間執行時從該記憶體存取整數之序列。
圖16為處理器1600之一具體實施例之方塊圖。該處理器包括解碼與執行單元1623、緊縮資料暫存器1603、及一唯讀記憶體(ROM)1650。該ROM具有多個非架構上可見的儲存位置1651。該等儲存位置各自儲存一個不同的整數序列。舉例言之,第一儲存位置1651-1儲存第一整數序列(例如0、1、2、3、4、5、6、及7),第M儲存位置1651-M儲存第M整數序列(例如0、2、4、6、8、10、12、及14),及第N儲存位置1651-N儲存第N整數序列(例如1、3、5、7、9、11、13、及15)。儲存於此等儲存位置的整數之序列表示預定的整數之序列。該等儲存位置可儲存如此處揭示的整數序列中之任一者,以及完整的其它序列。典型地,可儲存較常用的整數序列及/或從暫存產生的相對較昂貴的整數序列中之一者或數者(例如約2至約10或以上)。
解碼與執行單元1623接收一指令1608,其可用以 產生控制指數。該指令指示一目的地儲存位置1627,於若干實施例中該目的地儲存位置1627可在該等緊縮資料暫存器1603內。於若干實施例中,該指令(例如該指令之一操作碼)可暗示該ROM,該指令可指示該等非架構上可見的儲存位置中之一者。於若干此等實施例中,指示非架構上可見的儲存位置的指令可為固定者或暗示該指令(例如固定或暗示該指令之一操作碼)。於其它此等實施例中,該指令可具有一或多個位元以明確地載明或選擇該一個非架構上可見的儲存位置。舉例言之,於若干實施例中,該指令可分別地具有1、2、3、4、或更多位元以選自於2、4、8、或16不同預定整數序列中。優異地,藉此方式,從多個整數序列中哥選出一個指令/操作碼。
於該具體實施例中,該指令指示第M個非架構上可見的儲存位置1651-M。應答該指令,執行單元可存取第M個整數之序列(例如0、2、4、6、8、10、12及14),及將其儲存在目的地儲存位置1627。於此等實施例中,無需產生與計算第M個整數之序列,反而可只從ROM存取既有的/預儲存值。如此許可在單一指令的執行內部快速且有效地提供整數之序列。於若干實施例中,該ROM可與該處理器及/或解碼與執行單元在晶粒上,使得該整數之序列無需從非在晶粒上的記憶體或其它來源存取及/或透過一系統匯流排存取。
處理器常包含於晶粒上的ROM以儲存各種不同型別的資訊(例如處理器識別資訊、加密鑰、組態資訊等)。 經常在此種ROM中有空間可儲存如此處揭示的一或多個整數之序列。另外,專用RPM、唯讀暫存器、非架構上可見的暫存器、或其它非架構上可見的儲存空間可含括在晶粒上以儲存如此處揭示的一或多個整數之序列。至於另一個選項,一或多個整數之序列可燒錄成處理器的可一次規劃熔絲,或以其它方式與處理器及/或執行單元預儲存或預提供在晶粒上。
於若干實施例中,柱狀掃掠辦法可用以產生按數字順序的整數之一數字樣式。舉例言之,為了產生連續整數,數值1可橫跨九個元體廣播而獲得(A)。然後,具有1廣播值的該等元體之一拷貝可朝左移位而獲得(B)。然後(A)與(B)可相加而獲得(C)。然後(C)可朝左移位二位而獲得(D)。然後(C)與(D)可相加而獲得(E)。然後(E)可朝左移位四位而獲得(F)。然後(E)與(F)可相加而獲得(G)等。
111111111 (A)
11111111 (B)
222222221 (C)
2222221 (D)
444444321 (E)
44321 (F)
887654321 (G)
比較純粹迭代重複產生,此種柱狀掃掠辦法通常許可快整產生整數之序列。於又其它實施例中,如此處揭示的一整數之序列可迭代重複產生。例如為了產生連續整數,各個整數可如前一個計算整數依序加1求出。
圖17A為方塊圖例示說明用以儲存控制指數及 控制指數前身的適當格式之一第一具體實施例。一緊縮資料運算元1742A包括緊縮資料元體A0-AN。舉例言之,可有4、8、16、32或64資料元體。資料元體A0-AN各自具有不同的相對應控制指數及控制指數前身。更明確言之,一第一資料元體A0具有第一控制指數或前身I0,一第二資料元體A1具有第二控制指數或前身I1,一第N資料元體AN具有第N控制指數或前身IN,等。該等控制指數或前身各自係儲存於相對應資料元體的一位元子集。舉例言之,該等控制指數或前身各自可儲存於相對應資料元體的一最低排序位元組或控制位元組,但非必要。於各個實施例中,該等控制指數或前身各自可含在相對應資料元體的一最低排序例如2-位元、3-位元、4-位元、5-位元、或6-位元內部。該等控制指數或前身各自可為整數經常具有0至64之值。針對緊縮資料重排控制指數/前身,最大整數大小及每個控制指數/前身的位元數目係取決於來源資料元體的指數數目等。於多個實施例中,該等資料元體可為8-位元位元組、16-位元字組、32-位元雙字組、或64-位元四字組。
圖17B為方塊圖例示說明用以儲存控制指數及控制指數前身的適當格式之一第二具體實施例。一緊縮資料運算元1742B包括資料元體A0-AN。替代資料元體A0-AN各自具有不同的相對應控制指數或前身,該等控制指數或前身係連續群集在該緊縮資料運算元之資料元體之一子集內部。於該具體實施例中,一第一資料元體A0具有第一控制指數或前身I0,一第二控制指數或前身I1,及一第N控制 指數或前身IN等。取決於控制指數或前身的大小及資料元體的大小,二或多個資料元體之一子集可用以儲存全部控制指數或前身。又,以控制指數前身為例,可儲存在通用暫存器或整數暫存器內,及後來藉一接續指令而轉成緊縮資料格式。
圖18為適用以儲存緊縮資料運算元之緊縮資料暫存器1803之一適當集合之一具體實施例的方塊圖。例示說明的緊縮資料暫存器包括32個512-位元寬緊縮資料或向量暫存器。此等32個512-位元寬暫存器係標示ZMM0至ZMM31。於該具體實施例中,此等暫存器中較低16者亦即ZMM0-ZMM15的較低排序256-位元係混疊或重疊在標示為YMM0-YMM15的個別256-位元緊縮資料或向量暫存器上,但非必要。同理,於該具體實施例中,YMM0-YMM15的較低排序128-位元係混疊或重疊在標示為XMM0-XMM1的個別128-位元緊縮資料或向量暫存器上,但也非必要。512-位元寬暫存器ZMM0至ZMM31係可操作以保有512-位元緊縮資料、256-位元緊縮資料、或128-位元緊縮資料。256-位元寬暫存器YMM0至YMM15係可操作以保有256-位元緊縮資料、或128-位元緊縮資料。128-位元寬暫存器XMM0-XMM1係可操作以保有128-位元緊縮資料。該等暫存器各自可用以儲存緊縮浮點資料或緊縮整數資料。支援不同資料元體大小,包括至少8-位元組資料、16-位元字組資料、32-位元雙字組或單一精度浮點資料、及64-位元四字組或雙重精度浮點資料。緊縮資料暫存器之替代實施例可 包括不同數目的暫存器,不同大小的暫存器,及可能或可不混疊較大的暫存器在較小的暫存器上。
圖19為含括一機器可讀取儲存媒體1953的一製造物品1952(例如電腦程式產品)之方塊圖。於若干實施例中,機器可讀取儲存媒體可為具體有形的及/或非過渡機器可讀取儲存媒體。於各個具體實施例中,機器可讀取儲存媒體包括軟碟、光碟、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可規劃ROM(PROM)、可抹除可規劃ROM(EPROM)、可電氣抹除可規劃ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、半導體記憶體、其它型別的記憶體、或其組合。於若干實施例中,媒體可包括一或多個固態資料儲存材料,諸如半導體資料儲存材料、相變資料儲存材料、磁性資料儲存材料、光學透明固態資料儲存材料等。
機器可讀取儲存媒體儲存可用以產生控制指數1908的一或多個指令。於若干實施例中,此等可包括一或多個控制指數產生指令1910。於若干實施例中,此等可包括一或多個控制指數前身產生指令1911。可用以產生控制指數的指令各自若藉一機器執行可操作以使得機器儲存一結果於由該指令所指示的一目的地儲存位置。該結果包括表示控制指數或控制指數前身的一整數序列。此處揭示的指令、結果、整數之序列中之任一者皆屬適合。此外,其它指令可儲存在媒體上(例如緊縮資料重排指令、收集指 令、使用該等控制指數的其它指令等)。
不同型別的機器之實例包括但非僅限於處理器(例如通用處理器及特用處理器)、指令處理裝置、及具有一或多個處理器或指令處理裝置的各個電子裝置。此等電子裝置的少數代表性實例包括但非僅限於電腦系統、桌上型電腦、膝上型電腦、筆記型電腦、伺服器、網路路由器、網路交換器、迷你個人電腦、機上盒、小區式電話、視訊遊戲控制器等。
指令集包括一或多個指令格式。一給定指令格式界定多個欄位(位元數目、位元位置)以載明欲執行的操作(操作碼)及其上欲執行操作的運算元等。有些指令格式透過指令樣板(或子格式)的定義而更進一步分解。舉例言之,一給定指令格式的指令樣板可經定義而具有該指令格式欄位之不同子集(含括欄位典型係在相同順序,但至少有些有不同的位元位置,原因在於含括的欄位較少)及/或可經定義而具有一給定欄位經不同的解譯。如此,ISA的各個指令係使用一給定指令格式表示(及若經定義,係以該指令格式的指令樣板中之一給定者表示),及含括用以載明操作及運算元的欄位。舉例言之,ADD指令實例具有一特定操作碼及一指令格式其包括一操作碼欄位以載明該操作碼及運算元欄位以選擇運算元(來源1/目的地及來源2);及此種ADD指令出現在一指令串流將具有在運算元欄位以選擇運算元的特定內容。稱作進階向量擴延(AVX)(AVX1及AVX2)且使用向量擴延(VEX)編碼方案的SIMD擴延之一集合已經發行及/ 或出版(例如參考英特爾64及IA-32架構軟體發展者手冊,2011年8月;及參考英特爾進階向量擴延規劃參考,2011年6月)。
指令格式實例
此處描述的指令之實施例可以不同格式實施。此外,系統、架構、及管線實例容後詳述。本發明之實施例可在此等系統、架構、及管線上執行,但非囿限於此等細節。
VEX指令格式
VEX編碼許可指令具有多於兩個運算元,及許可SIMD向量暫存器比128位元更長。VEX前綴的使用提供3-運算元(或以上)語法。例如,先前2-運算元指令執行操作,諸如A=A+B,其覆寫一來源運算元。VEX前綴的使用許可運算元執行非破壞性操作,諸如A=B+C。
圖20A例示說明AVX指令格式之一實例,包括一VEX前綴2002、實際操作碼欄位2030、Mod R/M位元組2040、SIB位元組2050、位移欄位2062、及IMM8 2072。圖20B例示說明得自圖20A的哪個欄位組成一完整操作碼欄位2074及一基數操作欄位2042。圖20C例示說明得自圖20A的哪個欄位組成一暫存器指數欄位2044。
VEX前綴(位元組0-2)2002係以3-位元組形式編碼。第一位元組為格式欄位2040(VEX位元組0,位元[7:0]),其含有一明確C4位元組值(用以區別C4指令格式的獨特值)。第二至第三位元組(VEX位元組1-2)包括多個位元欄位 提供特定能力。更明確言之,REX欄位2005(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),使得藉加上VEX.R、VEX.X及VEX.B可形成Rrrr、Xxxx及Bbbb。操作碼映射欄位2015(VEX位元組1,位元[4:0]-mmmmm)包括編碼暗示先導操作碼位元組的內容。W欄位2064(VEX位元組2,位元[7]-W)係以註記法VEX.W表示,及取決於指令而提供不同功能。VEX.vvvv 2020(VEX位元組2,位元[6:3]-vvvv)之角色可包括下列:1)VEX.vvvv編碼第一來源暫存器運算元,以反(1s補數)形式載明且可有效用於具有2或更多個來源運算元的指令;2)VEX.vvvv編碼目的地暫存器運算元,針對某些向量移位以1s補數載明;或3)VEX.vvvv不編碼任何運算元,該欄位保留且須含有1111b。若VEX.L 2068大小欄位(VEX位元組2,位元[2]-L)=0,則指示128位元向量;若VEX.L=1,則指示256位元向量。前綴編碼欄位2025(VEX位元組2,位元[1:0]-pp)針對基數操作欄位提供額外位元。
實際操作碼欄位2030(位元組3)也稱作為操作碼位元組。部分碼操作碼係載明於本欄位。
MOD R/M欄位2040(位元組4)包括MOD欄位2042(位元[7-6])、Reg欄位2044(位元[5-3])、及R/M欄位2046(位元[2-0])。Reg欄位2044的角色包括下列:編碼該目 的地暫存器運算元或一來源暫存器運算元(Rrrr的rrr),或被視為操作碼擴延處理而不用以編碼任何指令運算元。R/M欄位R/M欄位2046的角色包括下列:編碼指稱一記憶體位址的指令運算元,或編碼該目的地暫存器運算元或一來源暫存器運算元。
規度、指數、基數(SIB)-規度欄位2050(位元組5)之內容包括用以產生記憶體位址的SS 2052(位元[7-6])。先前已經有關暫存器指數Xxxx及Bbbb述及SIB.xxx 2054(位元[5-3])及SIB.bbb 2056(位元[2-0])。
位移欄位2062及立即欄位(IMM8)2072含有位址資料。
通用向量友善指令格式
向量友善指令格式乃適用於向量指令的一指令格式(例如有某些向量操作特定的欄位)。雖然描述實施例其中向量及純量操作二者係透過向量友善指令格式支援,替代實施例可以只有向量操作為向量友善指令格式。
圖21A-21B為方塊圖例示說明依據本發明之實施例一通用向量友善指令格式及其指令樣板。圖21A為方塊圖例示說明依據本發明之實施例一通用向量友善指令格式及其類別A指令樣板。圖21B為方塊圖例示說明依據本發明之實施例一通用向量友善指令格式及其類別B指令樣板。更明確言之,一通用向量友善指令格式2100,針對其定義類別A及類別B指令樣板,二者包括無記憶體存取2105指令樣板及記憶體存取2120指令樣板。於向量友善指令格式之上 下文中通用一詞係指不束縛於任何特定指令集的指令格式。
雖然將描述本發明之實施例其中該向量友善指令格式支援下列:64位元組向量運算元長度(或大小)具有32位元(4位元組)或64位元(8位元組)資料元體寬度(或大小)(及如此,由16雙字組大小元體或8四字組大小元體所組成的一64位元組向量);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位元組)資料元體寬度)。
圖21A的類別A指令樣板包括1)在該無記憶體存取2105指令樣板內部,顯示一無記憶體存取完整捨入控制型別操作2110指令樣板及一無記憶體存取資料變換型別操作2115指令樣板;及2)於記憶體存取2120指令樣板內部顯示一記憶體存取時間性2125指令樣板及一記憶體存取非時間性2130指令樣板。圖21B的類別B指令樣板包括1)在該無記憶體存取2105指令樣板內部,顯示一無記憶體存取寫遮罩控制部分捨入控制型別操作2112指令樣板及一無記憶體 存取寫遮罩控制vsize型別操作2117指令樣板;及2)於記憶體存取2120指令樣板內部顯示一記憶體存取寫遮罩控制2127指令樣板。
通用向量友善指令格式2100以圖21A-21B例示說明之順序包括如下列舉的欄位。
格式欄位2140-本欄位的特定值(指令格式識別符值)獨特地識別向量友善指令格式,如此識別在指令串流中呈向量友善指令格式的指令的出現。因此,本欄位為選擇性的,表示並非只有通用向量友善指令格式的一指令集所需。
基數操作欄位2142-其內容區別不同的基數操作。
暫存器指數欄位2144-若運算元係在暫存器或在記憶體,則其內容直接地或透過位址產生而載明來源運算元及目的地運算元的位置。此等包括足夠數目位元以從PxQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案中選出N個暫存器。雖然於一個實施例中N可高達三個來源暫存器及一個目的地暫存器,但替代實施例可支援更多或更少的來源暫存器及目的地暫存器(例如可支援高達兩個來源於該處此等來源中之一者也用作為目的地,可支援高達三個來源於該處此等來源中之一者也用作為目的地,可支援高達兩個來源及一個目的地)。
修正器欄位2146-其內容區別在通用向量指令格式中載明記憶體存取與非記憶體存取的指令的出現;換言 之,區別無記憶體存取2105指令樣板與記憶體存取2120指令樣板。記憶體存取操作讀及/或寫至記憶體階層關係(於某些情況下,使用暫存器內之值載明來源位址及/或目的地位址),而非記憶體存取則否(例如來源及目的地為暫存器)。雖然於一個實施例中本欄位也在三個不同方式間作選擇以執行記憶體位址計算,但替代實施例可支援更多、更少或不同的方式以執行記憶體位址計算。
擴大操作欄位2150-其內容區別除了基數操作外,欲執行的多種不同操作中之一者。此一欄位為特定脈絡。於本發明之一個實施例中,此一欄位係分割成一類別欄位2168、一α欄位2152、及一β欄位2154。擴大操作欄位2150許可於單一指令而非2、3、或4指令執行共通操作群組。
規度欄位2160-其內容許可指數欄位的內容縮放用於記憶體位址的產生(例如用於使用2規度*指數+基數的位址產生)。
位移欄位2162A-其內容係用作為記憶體位址產生的一部分(例如用於使用2規度*指數+基數+位移的位址產生)。
位移因數欄位2162B(注意位移欄位2162A恰並置於位移因數欄位2162B上方指示使用一者或另一者)-其內容係用作為位址產生的一部分;載明欲藉記憶體存取大小(N)縮放的一位移因數-於該處N為記憶體存取中的位元組數目(例如用於使用2規度*指數+基數+已縮放之位移的位址產生)。忽略冗餘低排序位元,如此,位移因數欄位的內 容乘以記憶體運算元總大小(N)以產生終位移欲用在計算有效位址。N值係由處理器硬體在運轉時間基於完整操作碼欄位2174(容後詳述)及資料操弄欄位2154C決定。位移欄位2162A及位移因數欄位2162B為選擇性,表示並非用於無記憶體存取2105指令樣板及/或不同實施例只能體現該二者中之一者或零者。
資料元體寬度欄位2164-其內容區別欲使用多個資料元體寬度中之哪一者(於若干實施例中用於全部指令;於其它實施例中只用於部分指令)。本欄位為選擇性地表示唯若只支援一個資料元體寬度及/或使用操作碼的某個面向支援資料元體寬度,否則不需要。
寫遮罩欄位2170-以每個資料元體位置為基礎,其內容控制在目的地向量運算元中的資料元體位置是否反映基數操作及擴大操作的結果。類別A指令樣板支援合併-寫遮罩,而類別B指令樣板支援合併-及歸零-寫遮罩二者。當合併時,向量遮罩許可任何操作執行期間,在目的地的任何元體集合受到保護不被更新(由基數操作及擴大操作所載明);於另一個實施例中,保有目的地的各個元體之舊值,於該處相對應遮罩位元具有0。相反地,當歸零向量遮罩許可在目的地的任何元體集合於任何操作執行期間被歸零時(由基數操作及擴大操作所載明);於一個實施例中,當相對應遮罩位元具有0值時,該目的地之一元體被設定為0。此功能之一子集係控制被執行的操作之向量長度(換言之,從第一者至最後一者,元體的跨距被修正);但被修正 的元體無需為連續。如此,寫遮罩欄位2170許可部分向量操作,包括載入、儲存、算術、邏輯等。雖然描述本發明之實施例其中寫遮罩欄位2170的內容選擇含有欲使用的寫遮罩之多個寫遮罩暫存器中之一者(及如此寫遮罩欄位2170內容間接地識別欲執行的遮罩),但替代實施例另外或此外許可寫遮罩欄位2170的內容直接地載明欲執行的遮罩。
立即欄位2172-其內容許可載明立即。本欄位為選擇性的,表示不存在於通用向量友善指令格式的體現不支援的立即,也不存在於不使用立即的指令。
類別欄位2168-其內容區別不同類別的指令。參考圖21A-B,本欄位內容在類別A與類別B指令間作選擇。於圖21A-B中,圓化角隅方形用以指示一特定值存在於一欄位(例如針對於圖21A-B類別欄位2168的類別A 2168A及類別B 2168B)。
類別A的指令樣板
以無記憶體存取2105類別A的指令樣板之情況下,α欄位2152係解譯為RS欄位2152A,其內容區別欲執行不同擴大操作型別中之哪一者(例如對無記憶體存取完整捨入控制型別操作2110及無記憶體存取資料變換型別操作2115指令樣板分別地載明捨入2152A.1及資料變換2152A.2),而β欄位2154區別欲執行載明型別操作中之哪一者。於無記憶體存取2105指令樣板中,不存在有規度欄位2160、位移欄位2162A、及位移規度欄位2162B。
無記憶體存取指令樣板-完整捨入控制型別操作
於無記憶體存取完整捨入控制型別操作2110指令樣板中,β欄位2154係解譯為一捨入控制欄位2154A,其內容提供靜態捨入。而於所述本發明之實施例中,捨入控制欄位2154A包括一遏止全浮點例外(SAE)欄位2156及一捨入操作控制欄位2158,替代實施例可支援將此二構想編碼入同一欄位,或只有此等構想/欄位中之一者或另一者(例如只有捨入操作控制欄位2158)。
SAE欄位2156-其內容區別是否去能例外事件報告;當SAE欄位2156的內容指出遏止被致能時,一給定指令不會報告任一種浮點例外旗標,也不產生任何浮點例外處理器。
捨入操作控制欄位2158-其內容區別欲執行一組捨入操作中之哪一者(例如捨進、捨位、朝零捨入及捨入至最近者)。如此,捨入操作控制欄位2158許可以逐一指令基礎改變捨入模式。於本發明之一個實施例中,當一處理器包括一控制暫存器以載明捨入模式時,捨入操作控制欄位2150的內容凌駕該暫存器值。
無記憶體存取指令樣板-資料變換型別操作
於無記憶體存取資料變換型別操作2115指令樣板中,β欄位2154係解譯為資料變換欄位2154B,其內容區別欲執行的多種資料變換中之哪一者(例如無資料變換、調合、廣播)。
以類別A的記憶體存取2120指令樣板為例,α欄 位2152係解譯為驅離暗示欄位2152B,其內容區別欲使用驅離暗示中之哪一者(於圖21A中,針對記憶體存取時間性2125指令樣板及記憶體存取非時間性2130指令樣板分別地載明時間性2152B.1及非時間性2152B.2),而β欄位2154係解譯為資料操弄欄位2154C,其內容區別欲執行多個操弄操作(又稱基元)中之哪一者(例如無操作;廣播;一來源的上轉換;及一目的地的下轉換)。記憶體存取2120指令樣板包括規度欄位2160,及選擇性地,位移欄位2162A或位移規度欄位2162B。
向量記憶體指令執行從記憶體載入向量及向量儲存至記憶體,有轉換支援。如同規則向量指令,向量記憶體指令以逐一資料元體方式傳輸資料來去於記憶體,實際傳輸的元體係依選作為寫遮罩的向量遮罩內容指示。
記憶體存取指令樣板-時間性
時間性資料乃夠快再度可能使用而從快取獲益的資料。但換言之,暗示及不同處理器可以不同方式體現,包括全然忽略暗示。
記憶體存取指令樣板-非時間性
非時間性資料乃不可能夠快再度使用而從在第一層級快取記憶體快取獲益而須給定驅離優先順位的資料。但換言之,暗示及不同處理器可以不同方式體現,包括全然忽略暗示。
類別B之指令樣板
以類別B之指令樣板為例,α欄位2152係解譯為 寫遮罩控制(Z)欄位2152C,其內容區別藉寫遮罩欄位2170控制的寫遮罩須為合併或歸零。
以類別B的無記憶體存取2105指令樣板為例,部分β欄位2154係解譯為RL欄位2157A,其內容區別欲執行不同擴大操作型別中之哪一者(例如對無記憶體存取寫遮罩控制部分回合控制型別操作2112指令樣板及無記憶體存取寫遮罩控制VSIZE型別操作2117指令樣板分別地載明捨入2157A.1及向量長度(VSIZE)2157A.2),而β欄位2154的其餘部分區別欲執行的載明操作型別中之哪一者。於無記憶體存取2105指令樣板中,不存在有規度欄位2160、位移欄位2162A、及位移規度欄位2162B。
於無記憶體存取完整捨入控制型別操作2110指令樣板中,其餘β欄位2154係解譯為一捨入操作欄位2159A且去能例外事件報告(一給定指令不會報告任一種浮點例外旗標,也不產生任何浮點例外處理器)。
捨入操作控制欄位2159A-只作為捨入操作控制欄位2158,其內容區別欲執行一組捨入操作中之哪一者(例如捨進、捨位、朝零捨入及捨入至最近者)。如此,捨入操作控制欄位2159A許可以逐一指令基礎改變捨入模式。於本發明之一個實施例中,當一處理器包括一控制暫存器以載明捨入模式時,捨入操作控制欄位2150的內容凌駕該暫存器值。
於該無記憶體存取寫遮罩控制VSIZE型別操作2117指令樣板中,其餘β欄位2154係解譯為向量長度欄位 2159B,其內容區別欲執行多個資料向量長度中之哪一者(例如128、256、或512位元組)。
以類別B的記憶體存取2120指令樣板為例,部分β欄位2154係解譯為廣播欄位2157B,其內容區別是否欲執行廣播型別的資料操弄操作,而其餘β欄位2154係解譯為向量長度欄位2159B。記憶體存取2120指令樣板包括規度欄位2160、及選擇性地位移欄位2162A或位移規度欄位2162B。
至於通用向量友善指令格式2100,顯示一完整操作碼欄位2174包括格式欄位2140、基數操作欄位2142、及資料元體寬度欄位2164。雖然顯示一個實施例於該處完整操作碼欄位2174包括全部此等欄位,但於一個不支援該等全部欄位的實施例中,該完整操作碼欄位2174包括少於全部此等欄位。完整操作碼欄位2174提供操作代碼(操作碼)。
擴大操作欄位2150、資料元體寬度欄位2164、及寫遮罩欄位2170許可此等特徵係以逐一指令為基礎以該通用向量友善指令格式載明
寫遮罩欄位與資料元體寬度欄位的組合產生型別指令,許可基於不同資料元體寬度而施用遮罩。
於類別A及類別B內部所見各個指令樣板於不同情況下為有利。於若干本發明之實施例中,不同處理器或在一處理器內部的不同核心只可支援類別A,只有類別B,或二者。舉例言之,意圖用於通用運算的高效能通用失序核心只能支援類別B,意圖主要用於圖形及/或科學(資料通量)運算的核心只能支援類別A,及意圖用於二者的核心可 支援二者(當然,來自兩類的樣板及指令的某種混合但非來自兩類的並非全部樣板及指令之核心係落入於本發明之範圍)。又,單一處理器可包括多個核心,全部皆支援相同類別,或其中不同核心支援不同類別。舉例言之,於具有分開圖形及通用核心的處理器中,主要意圖用於圖形及/或科學運算的圖形核心中之一者可只支援類別A,而通用核心中之一或多者可為高效能通用核心,具有失序執行及暫存器重新命名意圖用於通用運算其只支援類別B。不具有分開圖形核心的另一個處理器可包括支援類別A及類別B二者的一或多個通用有序或失序核心。當然,來自一類的特徵也可在不同的本發明之實施例中在不同類別體現。以高階語言寫成的程式將置於(例如恰及時編譯或統計編譯)多個不同的可執行形式,包括:1)只有由目標處理器支援的該用於執行的類別指令形式;或2)具有使用全部類別指令的不同組合寫成的替代常式及具有控制流程代碼,其基於由目前執行該代碼的處理器所支援的指令選擇欲執行的常式。
特定向量友善指令格式實例
圖22為方塊圖例示說明依據本發明之實施例的特定向量友善指令格式實例。圖22顯示一特定向量友善指令格式2200,其為特定表示載明位置、大小、解譯、及欄位順序、以及該等欄位之部分值。特定向量友善指令格式2200可用以擴延x86指令集,及如此,若干欄位係類似或相同用於既有x86指令集及其擴延的格式(例如AVX)。此種格式保持與具有擴延的既有x86指令集之前綴編碼欄位、實際 操作碼位元組欄位、MOD R/M欄位、SIB欄位、置換欄位、及立即欄位符合一致。例示說明得自圖21的欄位映射入得自圖22的欄位。
須瞭解雖然本發明之實施例係通用向量友善指令格式2100的脈絡描述特定向量友善指令格式2200用於例示說明,但除非特別聲明否則本發明並不限於特定向量友善指令格式2200。舉例言之,通用向量友善指令格式2100涵蓋各個欄位的多種可能大小,但特定向量友善指令格式2200係顯示為具有特定大小的欄位。舉個特例,雖然於特定向量友善指令格式2200中資料元體寬度欄位2164係以一個位元欄位例示說明,但本發明並非受如此所限(換言之,通用向量友善指令格式2100涵蓋資料元體寬度欄位2164的其它尺寸)。
通用向量友善指令格式2100包括後文以圖22A例示說明之順序列舉的下列欄位。
EVEX前綴(位元組0-3)2202-係以4-位元組形式編碼。
格式欄位2140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位2140,含有0x62(於本發明之一個實施例中用以區別向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包括提供特定能力的多個位元欄位。
REX欄位2205(EVEX位元組1,位元[7-5])-其組成為EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X 位元欄位(EVEX位元組1,位元[6]-X)、及2157BEX位元組1,位元[5]-B)。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相對應VEX位元欄位的相同功能,且係使用1s補體形式編碼,亦即ZMM0係以1111B編碼,ZMM15係以0000B編碼。如技藝界已知,指令之其它欄位編碼暫存器指數的較低三位元(rrr、xxx及bbb),使得藉加上VEX.R、VEX.X及VEX.B可形成Rrrr、Xxxx及Bbbb。
REX’欄位2110-此乃REX’欄位2110的第一部分且係為EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),用以編碼擴延32暫存器集合中之上16或下16。於本發明之一個實施例中,連同後文指示之其它者,係以反位元格式儲存,欲與BOUND指令區別(呈眾所周知的x8632-位元模式),其實際操作碼位元組為62,但於MOD R/M欄位(容後詳述)不接受MOD欄位的11值;本發明之替代實施例並未儲存此一位元及其它以反形式指示如下之位元。值1用以編碼下16暫存器。換言之,R’Rrrr係藉組合EVEX.R’、EVEX.R、及得自其它欄位的其它RRR形成。
操作碼映射欄位2215(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼暗示先導操作碼位元組(0F、0F38、或0F 3)。
資料元體寬度欄位2164(EVEX位元組2,位元[7]-W)-係藉註記法EVEX.W表示。EVEX.W用以界定資料位元組的粒度(大小)(32-位元資料元體或64-位元資料元體)。
EVEX.vvvv 2220(EVEX位元組2,位元 [6:3]-vvvv)-EVEX.vvvv的角色可包括下列:1)EVEX.vvvv編碼以反(1s補數)形式載明的第一來源暫存器運算元,且可有效用於具有2或以上來源運算元的指令;2)EVEX.vvvv編碼目的地暫存器運算元,對某些向量移位以1s補數載明;或3)EVEX.vvvv不編碼任何運算元,該欄位保留且須含有1111b。如此,EVEX.vvvv欄位2220編碼以反(1s補數)形式儲存的第一來源暫存器載明符的4低排序位元。取決於該指令,一額外不同EVEX位元欄位用以擴延該載明符大小至32暫存器。
EVEX.U 2168類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0則指示類別A或EVEX.U0;若EVEX.U=1則指示類別B或EVEX.U1。前綴編碼欄位2225(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前綴編碼,如此不要求擴充。
α欄位2152(EVEX位元組3,位元[7]-EH;又稱EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫遮罩控制、及EVEX.N;也以α例示說明)-如前文描述,本欄位為脈絡特定欄位。
β欄位2154(EVEX位元組3,位元[6:4]-SSS;又稱EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LLB;也以βββ例示說明)-如前文描述,本欄位為脈絡特定欄位。
REX’欄位2110-此乃剩餘REX’欄位且為EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)可用以編碼擴延32暫存器集合的上16或下16。此一位元係以反位元格式儲存。數值1用以編碼下16暫存器。換言之,V’VVV係藉組合EVEX.V’、EVEX.vvvv形成。
寫遮罩欄位2170(EVEX位元組3,位元[2:0]-kkk)-其內容載明如前述於寫遮罩暫存器內之一暫存器的指數。於本發明之實施例中,特定值EVEX.kkk=000具有特殊表現暗示無寫遮罩用於該特定指令(可以多種方式暗示,包括使用硬體線路寫遮罩給全部的1或硬體分路該遮罩硬體)。
實際操作碼欄位2230(位元組4)也稱作為操作碼位元組。部分操作碼係載明於此欄位。
MOD R/M欄位2240(位元組5)包括MOD欄位2242、Reg欄位2244、及R/M欄位2246。如前文描述,MOD欄位2242的內容區別記憶體存取操作與非記憶體存取操作。Reg欄位2244的角色可摘述成兩種情況:編碼該目的地 暫存器運算元或一來源暫存器運算元,或視為操作碼擴充處理而不用以編碼任何指令運算元。R/M欄位2246的角色可包括下列:編碼參照一記憶體位址的指令運算元,或編碼該目的地暫存器運算元或一來源暫存器運算元。
規度-指數-基數(SIB)位元組(位元組6)-如前文描述,規度欄位2150的內容係用於記憶體位址的產生。SIB.xxx 2254及SIB.bbb 2256-前文有關暫存器指數Xxxx及Bbbb已經述及此等欄位內容。
位移欄位2162A(位元組7-10)-當MOD欄位2242含有10時,位元組7-10為位移欄位2162A,其作用與舊式32-位元位移(disp32)相同且以位元組粒度發揮作用。
位移因數欄位2162B(位元組7)-當MOD欄位2242含有01時,位元組7為位移因數欄位2162B。此一欄位的位置係同舊式x86指令集8-位元位移(disp8)的位置,其係以位元組粒度工作。因disp8為符號擴延,故只能定址-128至127位元組偏位間;就64位元組快取行而言,disp8使用8位元只能被設定為四個實際有用值-128、-64、0、及64;由於常需較大範圍,故使用disp32;但disp32要求4位元組。與disp8及disp32相反地,位移因數欄位2162B乃disp8的重新解譯;當使用位移因數欄位2162B時,實際位移係由位移因數欄位的內容乘以記憶體運算元存取大小(N)決定。此型位移稱作為disp8*N。如此縮短平均指令長度(單一位元組用於位移但具遠更大的範圍)。此種壓縮的位移係基於假設有效位移為記憶體存取粒度的倍數,及因此位址偏位的冗餘低排序位 元無需編碼。換言之,位移因數欄位2162B取代舊式x86指令集8-位元位移。如此,位移因數欄位2162B係以x86指令集8-位元位移之相同方式編碼(故ModRM/SIB編碼法則不變),唯一例外為disp8過載至disp8*N。換言之,編碼法則或編碼長度不變,只有由硬體解譯位移值改變(需要以記憶體運算元大小縮放該位移以獲得逐一位元組位址偏位)。
立即欄位2172係如前文描述操作。
完整操作碼欄位
圖22B為方塊圖例示說明依據本發明之一個實施例,組成完整操作碼欄位2174的特定向量友善指令格式2200之欄位。更明確言之,完整操作碼欄位2174包括格式欄位2140、基數操作欄位2142、及資料元體寬度(W)欄位2164。基數操作欄位2142包括前綴編碼欄位2225、操作碼映射欄位2215、及實際操作碼欄位2230。
暫存器指數欄位
圖22C為方塊圖例示說明依據本發明之一個實施例,組成暫存器指數欄位2144的特定向量友善指令格式2200之欄位。更明確言之,暫存器指數欄位2144包括REX欄位2205、REX’欄位2210、MODR/M.reg欄位2244、MODR/M.r/m欄位2246、VVVV欄位2220、xxx欄位2254、及bbb欄位2256。
擴大操作欄位
圖22D為方塊圖例示說明依據本發明之一個實施例,組成擴大操作欄位2150的特定向量友善指令格式 2200之欄位。當類別(U)欄位2168含有0時表示EVEX.U0(類別A 2168A);當含有1時表示EVEX.U1(類別B 2168B)。當U=0及MOD欄位2242含有11時(表示無記憶體存取操作),α欄位2152(EVEX位元組3,位元[7]-EH)係解譯為rs欄位2152A。當rs欄位2152A含有1(捨入2152A.1)時,β欄位2154(EVEX位元組3,位元[6:4]-SSS)係解譯為捨入控制欄位2154A。捨入控制欄位2154A包括1-位元SAE欄位2156及2-位元捨入操作欄位2158。當rs欄位2152A含有0(資料變換2152A.2)時,β欄位2154(EVEX位元組3,位元[6:4]-SSS)係解譯為3-位元資料變換欄位2154B。當U=0及MOD欄位2242含有00、01、或10(表示記憶體存取操作),α欄位2152(EVEX位元組3,位元[7]-EH)係解譯為驅離暗示(EH)欄位2152B,及β欄位2154(EVEX位元組3,位元[6:4]-SSS)係解譯為3-位元資料操弄欄位2154C。
當U=1時,α欄位2152(EVEX位元組3,位元[7]-EH)係解譯為寫遮罩控制(Z)欄位2152C。當U=1及MOD欄位2242含有11(表示無記憶體存取操作)時,部分β欄位2154(EVEX位元組3,位元[4]-S0)係解譯為RL欄位2157A;當含有1(捨入2157A.1)時,β欄位2154之其餘部分(EVEX位元組3,位元[6-5]-S2-1)係解譯為捨入操作控制欄位2159A;而當RL欄位2157A含有0(VSIZE 2157A.2)時,β欄位2154之其餘部分(EVEX位元組3,位元[6-5]-S2-1)係解譯為向量長度欄位2159B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位2242含有00、01、或10(表示記憶體存取操作)時,部分 β欄位2154(EVEX位元組3,位元[6:4]-SSS)係解譯為向量長度欄位2159B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位2157B(EVEX位元組3,位元[4]-B)。
暫存器架構實例
圖23為依據本發明之一個實施例暫存器架構2300之方塊圖。於該具體實施例中,有32個512-位元寬的向量暫存器2310;此等暫存器稱作為zmm0至zmm31。下16 zmm暫存器的較低排序256位元係重疊暫存器ymm0-16之上。下16 zmm暫存器的較低排序128位元(ymm暫存器的較低排序128位元)係重疊暫存器xmm0-15之上。特定向量友善指令格式2200係如下表例示說明在此等疊置的暫存器上操作。
換言之,向量長度欄位2159B在最大長度與一或多個其它較短長度間作選擇,於該處各個此等較短長度乃前一個長度之一半長度;及不包括向量長度欄位2159B的指令樣板係在最大向量長度上操作。又復,於一個實施例中,特定向量友善指令格式2200的類別B指令樣板係在緊縮或純量單一/ 雙重精度浮點資料及緊縮或純量整數資料上操作。純量操作為對zmm/ymm/xmm暫存器內的最低排序資料元體位置執行的操作;取決於實施例,較高排序資料元體位置或維持與該指令之前相同或歸零。
寫遮罩暫存器2315-於該具體實施例中,有8寫遮罩暫存器(k0至k7),各自為64位元大小。於替代實施例中,寫遮罩暫存器2315為16位元大小。如前述,於本發明之一個實施例中,向量遮罩暫存器k0無法用作為寫遮罩;當編碼通常指示k0係用於寫遮罩時,選擇0xFFFF之硬體線路寫遮罩,有效地去能用於該指令的寫遮罩。
通用暫存器2325-於該具體實施例中,有十六個64-位元通用暫存器,其連同既有x86定位模式用以定址記憶體運算元。此等暫存器係以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8-R15稱呼。
純量浮點堆疊暫存器檔案(x87堆疊)2345,於其上混疊MMX緊縮整數平坦暫存器檔案2350-於該具體實施例中,x87堆疊為八元體堆疊用以使用x87指令集擴延在32/64/80-位元浮點資料上執行純量浮點運算;而MMX暫存器係用以在64-位元緊縮整數資料上執行運算,以及針對在MMX與XMM暫存器間執行的某些運算保有運算元。
本發明之替代實施例可使用更寬的或更窄的暫存器。本發明之替代實施例可使用更多、更少、或不同的暫存器檔案及暫存器。
核心架構、處理器及電腦架構實例
處理器核心可以不同方式、用於不同目的、及於不同處理器體現。舉例言之,此種核心的體現可包括:1)意圖用於通用運算的通用有序核心;2)意圖用於通用運算的高效能通用失序核心;3)主要意圖用於圖形及科學(資料通量)運算的特用核心。不同處理器的體現可包括:1)一CPU包括一或多個意圖用於通用運算的通用有序核心及/或一或多個意圖用於通用運算的高效能通用失序核心;及2)一共用記憶體包括一或多個主要意圖用於圖形及科學(資料通量)運算的特用核心。此等不同處理器結果導致不同的電腦系統架構可包括1)共處理器在與CPU分開的晶片上;2)共處理器在與CPU相同封裝體內的分開晶粒上;3)共處理器在與CPU相同的晶粒上(於該種情況下,此種共處理器偶爾係稱作特用邏輯,諸如集積式圖形及/或科學(資料通量)邏輯,或稱作特用核心);4)單晶片系統可包括在與CPU相同的晶粒上(偶爾稱作應用核心或應用處理器)、前述共處理器、及額外功能。其次描述核心架構實例,接著描述處理器及電腦架構實例。
核心架構實例 有序及失序核心方塊圖
圖24A為方塊圖例示說明依據本發明之一個實施例的有序管線及暫存器重新命名、失序簽發/執行管線。圖24B為方塊圖例示說明依據本發明之至少一個實施例欲含括一處理器的有序架構核心及暫存器重新命名、失序簽發/執行架構核心。圖24A-B的實線框例示說明有序管線及 有序核心,而虛線框的選擇性添加例示說明暫存器重新命名、失序簽發/執行管線及核心。假設有序面向為失序面向的一子集,將描述失序面向。
於圖24A中,一處理器管線2400包括一提取階段2402、一長度解碼階段2404、一解碼階段2406、一配置階段2408、一重新命名階段2410、一排程(又稱為調度或簽發)階段2412、一暫存器讀取/記憶體讀取階段2414、一執行階段2416、一回寫/記憶體寫入階段2418、一例外處理階段2422、及一委付階段2424。
圖24B顯示處理器核心2490包括一前端單元2430耦接至一執行引擎單元2450,二者係耦接至一記憶體單元2470。核心2490可為精簡指令集電腦(RISC)核心、複雜指令集電腦(CISC)核心、極長指令字組(VLIW)核心、或一混成體或其它核心型別。至於又另一選項,核心2490可為通用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用圖形處理單元(GPGPU)核心、圖形核心等。
前端單元2430包括一分支預測單元2432耦接至一指令快取單元2434,其係耦接至指令轉譯後備緩衝器(TLB)2436,其係耦接至一指令提取單元2438,其係耦接至一解碼單元2440。解碼單元2440(或解碼器)可解碼指令,產生一或多個微操作作為輸出,微碼進入點、微指令、其它指令、或其它控制信號,其係從原先指令解碼,或以其它方式反映、或推衍。解碼器2440可使用多種不同機構體現。適當機構的實例包括但非僅限於詢查表、硬體體現、 可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。於一個實施例中,核心2490包括一微碼ROM或針對某些巨集指令儲存微碼的其它媒體(例如於解碼單元2440內或否則於前端單元2430內部)。解碼單元2440係耦接至執行引擎單元2450內部的重新命名/配置器單元2452。
執行引擎單元2450包括重新命名/配置器單元2452,耦接至一報廢單元2454及一或多個程器單元2456之一集合。排程器單元2456表示任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元2456係耦接至實體暫存器檔案單元2458。實體暫存器檔案單元2458各自表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料型別,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等狀態(例如一指令指標器其為欲執行的下個指令的位址)等。於一個實施例中,實體暫存器檔案單元2458包含一向量暫存器單元、一寫遮罩暫存器單元、及一純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元2458被報廢單元2454重疊以例示說明可體現暫存器重新命名與失序執行的多種方式(例如使用重新排序緩衝器及報廢暫存器檔案,使用未來檔案、歷史緩衝器及報廢暫存器檔案;使用暫存器映射表及一匯集物之暫存器等)。報廢單元2454及實體暫存器檔案單元2458係耦接至執行叢集2460。執行叢集2460包括一或多個執行單元2462之一集合及一或多個記憶體存取單元2464之一集合。執行單 元2462可對各型資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各項操作(例如移位、加法、減法、乘法)。雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多個執行單元,其全部一起執行全部功能。排程器單元2456、實體暫存器檔案單元2458、及執行叢集2460顯示為可能為多數,原因在於某些實施例產生針對某些型別的資料/操作的分開管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線各自具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集且於分開記憶體存取管線之情況下,體現某些實施例其中只有此一管線的執行叢集具有記憶體存取單元2464)。也須瞭解使用分開管線時,此等管線中之一或多者可為失序簽發/執行及有序靜止。
記憶體存取單元之集合2464係耦接至記憶體單元2470,其包括一資料TLB單元2472耦接至與層級2(L2)快取單元2476的一資料快取單元2474。於一個具體實施例中,記憶體存取單元2464可包括一載入單元、一儲存位址單元、及一儲存資料單元,各單元係耦接至記憶體單元2470中的資料TLB單元2472。指令快取單元2434進一步係耦接至在記憶體單元2470中的層級2(L2)快取單元2476。L2快取單元2476係耦接至一或多個其它層級的快取記憶體,及最終耦接至一主記憶體。
舉例言之,暫存器重新命名失序簽發/執行核心 架構之實例可體現管線2400如下:1)指令提取2438執行提取及長度解碼階段2402及2404;2)解碼單元2440執行解碼階段2406;3)重新命名/配置器單元2452執行配置階段2408及重新命名階段2410;24)排程器單元2456執行排程階段2412;5)實體暫存器檔案單元2458及記憶體單元2470執行暫存器讀取/記憶體讀取階段2414;執行叢集2460進行該執行階段2416;6)記憶體單元2470及實體暫存器檔案單元2458執行回寫/記憶體寫入階段2418;7)可能涉及處理階段2422的例外之各個單元;及8)報廢單元2454及實體暫存器檔案單元2458執行委付階段2424。
核心2490可支援一或多個指令集(例如x86指令集(有些擴延已經增加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴延,諸如霓虹(NEON)),含括此處描述的指令。於一個實施例中,核心2490包括支援緊縮資料指令集擴延(例如AVX1、AVX2),藉此許可許多多媒體應用程式使用的該等操作欲使用緊縮資料執行。
須瞭解核心可支援多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式達成支援,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如英特爾超執行緒技術)。
雖然暫存器重新命名係以失序執行脈絡描述,但 須瞭解暫存器重新命名可用於有序架構。雖然處理器之具體實施例也包括分開的指令及資料快取單元2434/2474及一分享L2快取單元2476,但替代實施例可具有用於指令及資料二者的單一內部快取記憶體,諸如層級1(L1)內部快取記憶體,或內部快的多個層級。於若干實施例中,該系統可包括一內部快取記憶體與在核心及/或處理器外部的一外部快取記憶體之組合。另外,全部外部快取記憶體可位在核心及/或處理器外部。
有序核心架構特例
圖25A-B例示說明有序核心架構之更特定實例之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同型別及/或不同型別的其它核心)。取決於應用用途,邏輯區塊透過高頻寬互連體網路(例如環狀網路)而與若干固定功能邏輯、記憶體I/O介面、及其它需要的I/O邏輯通訊。
圖25A為依據本發明之實施例,單一處理器核心連同其連結至晶粒上互連體網路2502及其L2快取記憶體之本地子集2504。於一個實施例中,指令解碼器2500支援具有緊縮資料指令集擴延的x86指令集。L1快取記憶體2506許可低度延遲存取快取記憶體至純量及向量單元。雖然於一個實施例中(為了簡化設計),純量單元2508及向量單元2510使用分開的暫存器集合(分別為純量暫存器2512及向量暫存器2514),在其間傳輸的資料係寫至記憶體,然後從層級1(L1)快取記憶體2506回讀,本發明之替代實施例可使用不同辦法(例如使用單一暫存器集合或包括通訊路徑,其 許可資料在兩個暫存器檔案間移轉而不被寫入及回讀)。
L2快取記憶體之本地子集2504乃通用L2快取記憶體部分,被劃分成分開本地子集,每個處理器核心一個子集。各個處理器核心具有一直接存取路徑至其本身的L2快取記憶體之本地子集2504。由一處理器核心所讀取的資料係儲存於其L2快取子集2504,且與其它處理器核心存取其本身的本地L2快取子集並列地能夠被快速存取。由處理器核心寫入的資料係儲存於其本身的L2快取子集2504,及若有所需,從其它子集刷新。環狀網路確保分享資料的同調。環狀網路乃雙向以許可代理者諸如處理器核心、L2快取記憶體及其它邏輯區塊在晶片內部彼此通訊。各個環狀資料路徑為每個方向1012-位元寬。
圖25B為依據本發明之實施例圖25A中處理器核心部分之展開圖。圖25B包括L1快取記憶體2504的L1資料快取記憶體2506A部分,以及有關向量單元2510及向量暫存器2514之進一步細節。更明確言之,向量單元2510為16-寬向量處理單元(VPU)(參考16-寬ALU 2528),其係執行整數指令、單精度浮點指令、及雙精度浮點指令中之一或多者。向量處理單元(VPU)支援使用調合單元2520調合該暫存器輸入,使用數值轉換單元2522A-B做數值轉換,及使用複製單元2524對記憶體輸入作複製。寫遮罩暫存器2526許可斷言所得的向量寫。
具有集積式記憶體控制器及圖形裝置的處理器
圖26為依據本發明之實施例,可具有多於一個核 心,可具有一集積式記憶體控制器,及可具有集積式圖形裝置的處理器2600之方塊圖。圖26的實線框例示說明一處理器2600具有單一核心2602A、一系統代理者2610、一或多個匯流排控制單元2616之一集合,而選擇性地增加的虛線框例示說明另一個處理器2600具有多個核心2602A-N、於系統代理者單元2610中之一或多個集積式記憶體控制器單元2614、及特用邏輯2608。
如此,處理器2600的不同體現可包括:1)一CPU具有特用邏輯2608係為集積式圖形及/或科學(資料通量)邏輯(可包括一或多個核心),及核心2602A-N係為一或多個通用核心(例如通用有序核心、通用失序核心、二者的組合);2)一共處理器具有核心2602A-N係為意圖主要用於圖形及/或科學(資料通量)的大量通用核心;3)一共處理器具有核心2602A-N係為大量通用有序核心。如此,處理器2600可為通用處理器、共處理器或特有處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高資料通量多積體核心(MIC)共處理器(含30或以上核心)、嵌入式處理器等。處理器可在一或多個晶片上體現。處理器2600可為一或多個基材的一部分,及/或可使用多項處理技術諸如CiCMOS、CMOS、或NMOS而體現在一或多個基材上。
記憶體階層關係包括在核心內部的一或多個快取層級、一或多個共享快取單元2606之集合、及耦接至集積式記憶體控制器單元2614之集合的外部記憶體(圖中未 顯示)。共享快取單元之集合2606可包括一或多個中階快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級快取記憶體、最末層級快取記憶體LLC)、及/或其組合。雖然於一個實施例中,一環狀基礎互連體單元2612互連集積式圖形邏輯2608、共享快取單元之集合2606、及系統代理者2610/集積式記憶體控制器單元2614,但其它實施例可使用任何數目的眾所周知技術以互連此等單元。於一個實施例中,在一或多個快取單元2606與核心2602A-N間維持同調。
於若干實施例中,核心2602A-N中之一或多者可為多執行緒。系統代理者2610包括協調與操作核心2602A-N的該等組件。系統代理者單元2610可包括例如電力控制單元(PCU)及一顯示單元。電力控制單元(PCU)可為或包括調節核心2602A-N及集積式圖形邏輯2608所需邏輯及組件。顯示單元係用以驅動一或多個外部連結的顯示器。
核心2602A-N就架構指令集而言可為同質或異質;換言之,核心2602A-N中之二或多者可能可執行相同指令集,而其它者只能執行該指令集之一子集或一不同指令集。
電腦架構實例
圖27至圖30為之電腦架構實例之方塊圖。其它技藝界已知之針對膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路中樞器、交換器、嵌入式處理器、數位信號處理器 (DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器及/或其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
現在參考圖27,圖27顯示依據本發明之一個實施例一種系統2700之方塊圖。系統2700可包括一或多個處理器2710、2715,耦接至控制器中樞器2720。於一個實施例中,控制器中樞器2720包括一圖形記憶體控制器中樞器(GMCH)2790及一輸入/輸出中樞器(IOH)2750(可位在分開的晶片上);GMCH 2790包括記憶體及圖形控制器,其耦接記憶體2740及一共處理器2745;IOH 2750係耦接輸入/輸出(I/O)裝置2760至GMCH 2790。另外,記憶體及圖形控制器中之一或二者係整合於處理器內部(如此處描述),記憶體2740及共處理器2745係直接地耦接至在單一晶片內的處理器2710及控制器中樞器2720與IOH 2750。
額外處理器2715的選擇性地本質係以虛線標示於圖27。各個處理器2710、2715可包括此處描述的處理核心中之一或多者且可為處理器2600的某個版本。
記憶體2740例如可為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或二者的組合。對至少一個實施例,控制器中樞器2720透過多插匯流排諸如前端匯流排(FSB)、點對點介面諸如快速路徑互連體(QPI)或類似的連結2795而與處理器2710、2715通訊。
於實施例中,共處理器2745乃特用處理器,諸如高資料通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。於實施例中,控制器中樞器2720可包括一集積式圖形加速器。
就一定範圍的優劣量表而言,包括架構、微架構、熱、功耗特性等,處理器2710、2715間可有多項差異。
於實施例中,處理器2710執行指令其控制通用型別的處理操作。該等指令內部嵌入共處理器指令。處理器2710識別此等共處理器指令乃屬須由附接的共處理器2745執行的型別。據此,處理器2710在共處理器匯流排或其它互連體上簽發此等共處理器指令(或表示共處理器指令的控制信號)給共處理器2745。共處理器2745接收且執行所接收的共處理器指令。
現在參考圖28,顯示依據本發明之一實施例第一更特定系統2800之一方塊圖。如圖28所示,微處理器系統2800為點對點互連體系統,包括透過點對點互連體2850而耦接的第一處理器2870及第二處理器2880。處理器2870及2880各自可為處理器2600的某個版本。於本發明之一個實施例中,處理器2870及2880分別為處理器2710及2715,而共處理器2838為共處理器2745。於另一個實施例中,處理器2870及2880分別為處理器2710及共處理器2745。
處理器2870及2880係顯示為分別包括積體記憶體控制器單元2872及2882。處理器2870也包括點對點(P-P)介面2876及2878作為其匯流排控制器單元之一部分;同 理,第二處理器2880可包括P-P介面2886及2888。處理器2870、2880可使用P-P介面電路2878、2888透過點對點(P-P)介面2850交換資訊。如圖28所示,IMC 2872及2882耦接該等處理器至個別記憶體,亦即記憶體2832及記憶體2834,其可為本地附接至個別處理器的主記憶體的一部分。
處理器2870、2880可使用點對點介面電路2876、2894、2886、2898透過點對點(P-P)介面2852、2854而各自與一晶片組2890交換資訊。晶片組2890也可透過一高效能介面2839而與共處理器2838交換資訊。於一個實施例中,共處理器2838乃特用處理器,諸如高資料通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
一分享快取記憶體(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連體而與處理器連結,使得當一處理器被置於低功率模式時,任一處理器的或二處理器的本地快取記憶體資訊可被儲存於該分享快取記憶體。
晶片組2890可透過一介面2896而耦接至一第一匯流排2816。於一個實施例中,第一匯流排2816可為周邊組件互連體(PCI)匯流排,或諸如PCI快速匯流排或其它第三代I/O互連體匯流排之一匯流排,但本發明之範圍並非受此所限。
如圖28所示,多個I/O裝置2814可連同一匯流排橋接器2818而耦接至第一匯流排2816,該匯流排橋接器 2818係耦接第一匯流排2816至第二匯流排2820。於一個實施例中,一或多個額外處理器2815,諸如共處理器、高資料通量MIC處理器、GPGPU、加速器(例如圖形加速器或數位信號處理器(DSP)單元)、可現場程式規劃閘陣列、或任何其它處理器係耦接至第一匯流排2816。於一個實施例中,第二匯流排2820可為低接腳數目(LPC)匯流排。於一個實施例中,多個裝置可耦接至第二匯流排2820,包括例如鍵盤及/或滑鼠2822、通訊裝置2827及儲存單元2828,諸如磁碟機或其它大容量儲存裝置,可包括指令/代碼及資料2830。又復,音訊I/O 2824可耦接至第二匯流排2820。注意其它架構係屬可能。舉例言之,替代圖28之點對點架構,一系統可體現多插匯流排或其它此種架構。
現在參考圖29,顯示依據本發明之一實施例第三系統2900之一方塊圖。圖28與圖29中相似的元件具有相似的元件符號,及圖28的某些面向已經從圖29刪除以免不必要地遮掩圖29的其它面向。
圖29例示說明處理器2870、2880分別地可包括集積式記憶體及I/O控制邏輯(「CL」)2872及2882。於至少一個實施例中,CL 2872、2882可包括集積式記憶體控制器單元且包括I/O控制邏輯。圖29例示說明不僅記憶體2832、2834耦接至CL 2872、2882,I/O裝置2914也耦接至控制邏輯2872、2882。舊式I/O裝置2915係耦接至晶片組2890。
現在參考圖30,顯示依據本發明之一個實施例,一個SoC 3000之方塊圖。圖26中的相似元件具有類似的元 件符號。又,虛線框乃更為先進SoC上的選擇性特徵。於圖30中,一互連體單元3002係耦接至:一應用程式處理器3010其包括一或多個核心202A-N與分享快取單元2606之一集合;一系統代理器單元2610;一匯流排控制器單元2616;一積體記憶體控制器單元2614;一或多個媒體處理器3020之一集合其可包括積體圖形邏輯、影像處理器、音訊處理器、及視訊處理器;一靜態隨機存取記憶體(SRAM)單元3030;一直接記憶體存取(DMA)單元3032;及用以耦接至一或多個外部顯示器的一顯示單元3040。於一個實施例中,該(等)共處理器3020包括特用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高資料通量MIC處理器、嵌入式處理器等。
如此處揭示的機構之實施例可於硬體、軟體、韌體或此等體現辦法的組合而予體現。本發明之實施例可體現為電腦程式或在可規劃系統包含至少一個處理器、儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置上執行的程式碼。
程式碼諸如圖28例示說明之代碼2830可施加至輸入指令以執行此處描述的功能及產生輸出資訊。輸出資訊可以已知方式施加至一或多個輸出裝置。用於本應用之目的,處理系統包括具有一處理器的任何系統,諸如數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)或微處理器。
程式碼可於高階程式或目標導向程式語言體現 以與一處理系統處理器。若有所需,程式碼也可於組合語言或機器語言體現。實際上,此處描述的機構之範圍並非限於任何特定程式語言。總而言之,該語言可為彙編語言或解譯語言。
至少一個實施例的一或多個面向可藉表示處理器內部的多個邏輯而儲存在機器可讀取媒體上的代表性指令體現,該等指令當由一機器讀取時使得該機器組合邏輯以執行此處描述的技術。此種表示型態稱作為「IP核心」,可儲存在具體有形的機器可讀取媒體上且供給各個客戶或製造廠以載入實際上生產該邏輯或處理器的組裝機器內。
此等機器可讀取儲存媒體可包括但非僅限於由機器或裝置所製造或製成的非過渡具體有形的物件配置,諸如硬碟、任何其它型別的碟片包括軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、光碟可覆寫式(CD-RW)、及磁光碟;半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡;或適用以儲存電子指令的任何其它型別的媒體。
據此,本發明之實施例也包括非過渡具體有形的機器可讀取媒體含有指令或含有設計資料,諸如硬體描述語言(HDL)其定義此處描述的結構、電路、裝置、處理器及/或系統特徵。此等實施例也可稱作為程式產品。
仿真(包含二進制轉譯、代碼變形等)
於某些情況下,指令轉換器可用以將指令從來源指令集轉換成目標指令集。舉例言之,指令轉換器可將一指令轉譯(例如使用靜態二進制轉譯、含動態編譯的動態二進制轉譯)、變形、仿真或以其它方式轉換成欲藉核心處理的一或多個其它指令。指令轉換器可於軟體、硬體、韌體或其組合體現。指令轉換器可在處理器上、不在處理器上、或部分在及部分不在處理器上。
圖31為方塊圖,依據本發明之實施例對比一軟體指令用以將來源指令集中的二進制指令轉換成目標指令集中的二進制指令。於該具體實施例中,指令轉換器為軟體指令轉換器,但另外,指令轉換器可於軟體、韌體、硬體、或其各項組合體現。圖31顯示可使用x86編譯器3104編譯以產生x86二進制碼3106的高階語言3102,該x86二進制碼3106可由具有至少一個x86指令集核心之處理器3116本機執行。具有至少一個x86指令集核心3116之處理器表示藉相容式執行或以其它方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一個x86指令集核心的一英特爾處理器跑的應用程式或其它軟體之目標碼版本而執行與具至少一個x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一個x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器3104表示可操作而產生x86二進制碼3106(例如目標碼)的一編碼器,該等x86二進制碼3106有或無額外鏈結處理可在具至少一個 x86指令集核心的該處理器3116上執行。同理,圖31顯示於高階語言3102的該程式可使用另一指令集編譯器3108編譯以產生另一指令集二進制碼3110,可藉不具至少一個x86指令集核心的一處理器3114本機執行(例如具有執行加州昇陽谷的MIPS技術公司之MIPS指令集及/或執行加州昇陽谷的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器3112係用以將x86二進制碼3106轉換成可由不具一x86指令集核心的該處理器3114本機執行的代碼。此種轉換碼不可能與另一指令集二進制碼3110相同,原因在於難以製造可達成此項目的之一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。如此,指令轉換器3112表示軟體、韌體、硬體或其組合其透過仿真、模擬或任何其它處理許可不具至少一個x86指令集處理器或核心的一處理器或其它電子裝置執行該x86二進制碼3106。
雖然如此處揭示的數目序列可用於控制指數,但非限於控制指數。也可用於其它目的(例如用作為其它指令或演算法的輸入)。於其它實施例中,可儲存其它數目的整數序列(例如6、12、20、24、128等)
此處方塊流程圖顯示之方法可藉通用處理器、特用處理器(例如圖形處理器或數位信號處理器)、或其它型別的數位邏輯裝置或指令處理裝置進行。於各個實施例中,指令可於指令處理裝置、處理器、或其部分(例如解碼器、指令轉換器等)接收。就多個面向而言指令可於處理器接收自非在處理器上來源(例如主記憶體、碟片、或匯流排/互連 體),或接收自處理器上來源(例如指令快取記憶體、指令提取單元等)。於若干實施例中,該方法可藉圖1之處理器及/或圖4之指令處理裝置執行。另外,該等方法可藉處理器及/或指令處理裝置之不同實施例執行。此外,圖1之處理器及/或圖4之指令處理裝置可執行與方塊流程圖所示方法相同的、相似的、或不同的方法。
此處描述的方塊流程圖所示方法描述從處理器或指令處理裝置外部為可見(例如從軟體觀點為可見)的操作。舉例言之,指令係提供給處理器,結果係應答該指令而儲存在架構上可見的儲存位置。於其它實施例中,此等方法中之任一者可選擇性地包括發生在處理器或指令處理裝置內部的一或多項其它操作。舉例言之,指令可經提取,指令可經解碼或以其它方式轉換成一或多個其它指令或控制指數,可致能執行單元以執行依據指令之操作,可執行微架構操作以體現該等指令之操作(例如整數之序列可從晶粒上ROM的非架構上可見的儲存位置計算或存取)等。
「耦接」及「連結」等術語連同其衍生詞可用在此處。但須瞭解此等術語並非意圖為彼此的同義詞。反而於特定實施例中,「連結」可用以指示二或多個元件係彼此直接實體或電氣接觸。「耦接」可表示二或多個元件係彼此直接實體或電氣接觸。但「耦接」也可表示二或多個元件並非彼此直接接觸,但仍然彼此協作或互動。舉例言之,執行單元可透過一或多個中介組件而與暫存器耦接。於圖式中,使用箭頭來表示耦接。
於前文描述中,為了用於解說目的,已經列舉無數特定細節以供徹底瞭解本發明之實施例。但熟諳技藝人士顯然易知可無此等特定細節而實施一或多個其它實施例。所述特定實施例並非限制本發明反而係舉例說明本發明。本發明之範圍並非由如上提供的特定實施例所限反而僅由如下申請專利範圍界定。於其它情況下,眾所周知的電路、結構、裝置、及操作已經以方塊圖而無細節方式顯示以免遮掩對本詳細說明部分的瞭解。
已經描述多項操作及方法。有此方法已經於流程圖中以基本形式描述,但可選擇性地添加及/或從方法中移除操作。此外,依據具體實施例已經描述特定操作順序,但須瞭解特定順序為舉例說明。其它實施例可以不同順序、組合某些操作、重疊某些操作等而選擇性地執行操作。
某些操作可藉硬體組件執行,或可以機器可執行指令或電路可執行指令具體實施,可用以使得或至少導致電路或硬體以執行該等操作的指令程式規劃。電路可包括通用處理器或特用處理器或邏輯電路,只舉出少數實例。操作也可選擇性地藉硬體與軟體的組合實施。執行單元及/或處理器可包括從機器指令所推衍的,應答指令、微指令、或一或多個控制信號以執行某些操作的特用或特定電路或其它邏輯。
也須瞭解於全文說明書中述及「一個實施例」、「一實施例」、或「一或多個實施例」係表示可含括於本發明之實務的一個特定特徵。同理,須瞭解於詳細說明部分 中,多個特徵偶爾集結在一起於單一實施例、圖式、或其詳細說明部分用以讓本文揭示流暢且有助於本發明之各個面向的瞭解。但本文揭示之方法並非解譯為本發明要求超過申請專利範圍各項中明白引述的更多特徵之意圖。反而如下申請專利範圍各項反映,本發明之面向係在於比較單一揭示實施例的全部特徵更少的特徵。如此,詳細說明部分後方的申請專利範圍藉此明確地融入於本詳細說明部分,申請專利範圍各項本身表示一個分開的本發明之實施例。
400‧‧‧指令處理裝置
403‧‧‧緊縮資料暫存器
408‧‧‧指令
422‧‧‧解碼器
423‧‧‧執行單元
424‧‧‧整數序列計算邏輯
425‧‧‧整數序列
426‧‧‧記憶體
427‧‧‧目的地儲存位置
428‧‧‧結果

Claims (25)

  1. 一種方法,其係包含:接收一指令,該指令指示一整數跨幅,指示一整數偏位,及指示一目的地儲存位置;及響應該指令儲存一結果於該目的地儲存位置,該結果係包括按數字順序至少四個整數之一序列,該至少四個整數中之一最小者與零相差達該整數偏位,及在連續位置的該序列中之全部整數相差達該整數跨幅。
  2. 如申請專利範圍第1項之方法,其中接收該指令係包含接收明確地載明該整數跨幅之一指令。
  3. 如申請專利範圍第1項之方法,其中接收該指令係包含接收明確地載明該整數偏位之一指令。
  4. 如申請專利範圍第1項之方法,其中接收該指令係包含接收指示按數字順序至少四個連續整數之一序列之一指令。
  5. 如申請專利範圍第4項之方法,其中儲存該結果係包括儲存至少四個整數,其係各自表示該等至少四個連續整數中之一相對應一者加至該整數偏位及乘以該整數跨幅。
  6. 如申請專利範圍第1項之方法,其中接收該指令係包含接收一指示,除了該整數偏位及該整數跨幅外,該指令係不指示在一架構上可見的儲存位置之一來源運算元。
  7. 如申請專利範圍第1項之方法,其中儲存該結果係包含 儲存按數字順序至少八個整數之一序列,在連續位置的該序列中之全部整數相差達該整數跨幅。
  8. 如申請專利範圍第1項之方法,其係進一步包含接收一循環置換指令、一收集指令、及一散播指令中之一者,其指示於該目的地儲存位置中的結果。
  9. 如申請專利範圍第1項之方法,其中該整數跨幅係為至少2。
  10. 一種裝置,其係包含:一目的地儲存位置;及耦接至該目的地儲存位置之一執行單元,該執行單元響應指示一整數跨幅、指示一整數偏位、及指示一目的地儲存位置的一指令,而儲存一結果於該目的地儲存位置,該結果係包括按數字順序至少四個整數之一序列,該至少四個整數中之一最小者與零相差達該整數偏位,及在連續位置的該序列中之全部整數相差達該整數跨幅。
  11. 如申請專利範圍第10項之裝置,其中除了該整數偏位及該整數跨幅外,該指令係不指示在一架構上可見的儲存位置之一來源運算元。
  12. 如申請專利範圍第10項之裝置,其中該指令係進一步指示按數字順序至少四個連續整數之一序列。
  13. 如申請專利範圍第12項之裝置,其中該執行單元響應該指令,係將儲存該結果的至少四個整數,其係各自表示該等至少四個連續整數中之一相對應一者加至該整數 偏位及乘以該整數跨幅。
  14. 如申請專利範圍第10項之裝置,其中該指令係明確地載明該整數跨幅。
  15. 如申請專利範圍第10項之裝置,其中該指令係明確地載明該整數偏位。
  16. 如申請專利範圍第10項之裝置,其中該執行單元響應該指令,係將儲存該結果包括按數字順序至少八個整數之一序列,而在連續位置的全部整數係相差達該整數跨幅。
  17. 如申請專利範圍第16項之裝置,其中該執行單元響應該指令,係將儲存該結果包括按數字順序至少十六個整數之一序列,而在連續位置的全部整數係相差達該整數跨幅。
  18. 如申請專利範圍第10項之裝置,其中該指令係包含針對一循環置換指令、一混洗指令、一收集指令、及一散播指令中之一者的一控制指數產生指令。
  19. 一種系統,其係包含:一互連體;耦接至該互連體之一處理器,該處理器係包括一目的地暫存器,響應指示一整數跨幅、指示一整數偏位、及指示一目的地儲存位置的一指令,該處理器係儲存一結果於該目的地暫存器,該結果包括按數字順序至少四個整數之一序列,該至少四個整數中之一最小者與零相差達該整數偏位,及在連續位置的該序列中之全部整數 相差達該整數跨幅;及耦接至該互連體之一動態隨機存取記憶體(DRAM)。
  20. 如申請專利範圍第19項之系統,其中該指令係進一步指示按數字順序至少四個連續整數之一序列。
  21. 如申請專利範圍第19項之系統,其中除了該整數偏位及該整數跨幅外,該指令係不指示在一架構上可見的儲存位置之一來源運算元。
  22. 一種製造物品,其係包含:包括一或多個固態儲存材料之一機器可讀取儲存媒體,該機器可讀取儲存媒體係儲存一指令,該指令係指示一整數跨幅、一整數偏位、及一目的地儲存位置,及該指令若由一機器執行時使得該機器執行操作包含:儲存一結果於該目的地儲存位置,該結果係包括包括按數字順序至少四個整數之一序列,該至少四個整數中之一最小者與零相差達該整數偏位,及在連續位置的該序列中之全部整數相差達該整數跨幅。
  23. 如申請專利範圍第22項之物品,其中該指令係進一步指示按數字順序至少四個連續整數之一序列。
  24. 如申請專利範圍第22項之物品,其中除了該整數偏位及該整數跨幅外,該指令係不指示在一架構上可見的儲存位置之一來源運算元。
  25. 如申請專利範圍第22項之物品,其中該機器可讀取儲存 媒體進一步儲存選自一循環置換指令、一混洗指令、一散播指令、及一收集指令中之一指令,該指令係指示於該目的地儲存位置的該結果作為一來源運算元。
TW101143441A 2011-12-22 2012-11-21 用以產生整數的序列之方法、裝置、系統及製造物品 TWI511043B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067047 WO2013095580A1 (en) 2011-12-22 2011-12-22 Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset

Publications (2)

Publication Number Publication Date
TW201329861A true TW201329861A (zh) 2013-07-16
TWI511043B TWI511043B (zh) 2015-12-01

Family

ID=48669221

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101143441A TWI511043B (zh) 2011-12-22 2012-11-21 用以產生整數的序列之方法、裝置、系統及製造物品

Country Status (4)

Country Link
US (1) US9898283B2 (zh)
CN (2) CN104011645B (zh)
TW (1) TWI511043B (zh)
WO (1) WO2013095580A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI731893B (zh) * 2015-12-21 2021-07-01 美商英特爾股份有限公司 具有載入索引和預提取聚集操作之處理器、方法及系統

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170269935A1 (en) * 2011-09-26 2017-09-21 Elmoustapha Ould-Ahmed-Vall Instruction and logic to provide vector loads and stores with strides and masking functionality
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
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
WO2013095554A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
WO2013095580A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
US9483263B2 (en) * 2013-03-26 2016-11-01 Via Technologies, Inc. Uncore microcode ROM
US9292298B2 (en) * 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
US9792098B2 (en) * 2015-03-25 2017-10-17 International Business Machines Corporation Unaligned instruction relocation
CN106095392B (zh) * 2016-06-20 2018-09-14 龙芯中科技术有限公司 混洗模式生成方法和装置
US10282204B2 (en) * 2016-07-02 2019-05-07 Intel Corporation Systems, apparatuses, and methods for strided load
GB2558220B (en) * 2016-12-22 2019-05-15 Advanced Risc Mach Ltd Vector generating instruction
EP3602276A1 (en) * 2017-03-31 2020-02-05 Intel Corporation Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4745547A (en) * 1985-06-17 1988-05-17 International Business Machines Corp. Vector processing
US4949250A (en) * 1988-03-18 1990-08-14 Digital Equipment Corporation Method and apparatus for executing instructions for a vector processing system
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US6230253B1 (en) 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
FR2785406B1 (fr) * 1998-10-30 2004-09-10 Thomson Marconi Sonar Sas Memoire a acces vectoriel
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US7272622B2 (en) * 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
JP3779602B2 (ja) * 2001-11-28 2006-05-31 松下電器産業株式会社 Simd演算方法およびsimd演算装置
US7478016B2 (en) * 2003-04-16 2009-01-13 The Mathworks, Inc. Block modeling input/output buffer
CN1286009C (zh) * 2003-06-05 2006-11-22 中兴通讯股份有限公司 在嵌入式系统中使用x86处理器的单一bootrom的制作方法
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
GB2409062C (en) 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
US7707387B2 (en) * 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
US20070011441A1 (en) * 2005-07-08 2007-01-11 International Business Machines Corporation Method and system for data-driven runtime alignment operation
US7360063B2 (en) 2006-03-02 2008-04-15 International Business Machines Corporation Method for SIMD-oriented management of register maps for map-based indirect register-file access
US7783860B2 (en) * 2007-07-31 2010-08-24 International Business Machines Corporation Load misaligned vector with permute and mask insert
GB2456775B (en) 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
CN100590609C (zh) * 2008-02-22 2010-02-17 浙江大学 一种基于非连续页的动态内存管理方法
US20090254736A1 (en) 2008-04-07 2009-10-08 Arm Limited Data processing system for performing data rearrangement operations
US7900025B2 (en) * 2008-10-14 2011-03-01 International Business Machines Corporation Floating point only SIMD instruction set architecture including compare, select, Boolean, and alignment operations
US8539201B2 (en) * 2009-11-04 2013-09-17 International Business Machines Corporation Transposing array data on SIMD multi-core processor architectures
US8549264B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
WO2013095580A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI731893B (zh) * 2015-12-21 2021-07-01 美商英特爾股份有限公司 具有載入索引和預提取聚集操作之處理器、方法及系統

Also Published As

Publication number Publication date
US9898283B2 (en) 2018-02-20
CN104011645A (zh) 2014-08-27
CN108681465B (zh) 2022-08-02
CN108681465A (zh) 2018-10-19
US20130275727A1 (en) 2013-10-17
CN104011645B (zh) 2018-06-26
WO2013095580A1 (en) 2013-06-27
TWI511043B (zh) 2015-12-01

Similar Documents

Publication Publication Date Title
TWI509508B (zh) 用於產生按數字順序的連續整數序列之處理器、方法、系統及指令
TWI511043B (zh) 用以產生整數的序列之方法、裝置、系統及製造物品
TWI818885B (zh) 執行複數的熔合乘-加指令的系統與方法
TWI525536B (zh) 封裝資料重排控制指標前標產生處理器、方法、系統及指令
TWI499976B (zh) 用以產生整數序列的方法、設備、系統及製造物品
KR102296800B1 (ko) 비트 셔플 프로세서, 방법, 시스템, 및 명령어
TWI474258B (zh) 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體
TWI544411B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI663545B (zh) 執行置換運算的處理器
TW201717037A (zh) 用於緊耦合異質計算的硬體處理器及方法
TWI637276B (zh) 執行向量位元混洗的方法與裝置
TWI502494B (zh) 用以執行絕對差之雙塊總數之方法,製品及裝置
TWI550508B (zh) 用於複製資料結構之設備及方法
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TW201723805A (zh) 資料元件比較處理器、方法、系統及指令
TWI464677B (zh) 經改良插入指令之裝置及方法
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統
TWI567644B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
TW201732553A (zh) 用於保留位元的強制執行的裝置及方法