TW201337752A - 用以產生相差常數步輻之依數值排序的整數序列的處理器、方法、系統及指令 - Google Patents

用以產生相差常數步輻之依數值排序的整數序列的處理器、方法、系統及指令 Download PDF

Info

Publication number
TW201337752A
TW201337752A TW101146865A TW101146865A TW201337752A TW 201337752 A TW201337752 A TW 201337752A TW 101146865 A TW101146865 A TW 101146865A TW 101146865 A TW101146865 A TW 101146865A TW 201337752 A TW201337752 A TW 201337752A
Authority
TW
Taiwan
Prior art keywords
instruction
integers
instructions
data
field
Prior art date
Application number
TW101146865A
Other languages
English (en)
Other versions
TWI499976B (zh
Inventor
Elmoustapha Ould-Ahmed-Vall
Seth Abraham
Robert Valentine
Amit Gradstein
Zeev Sperber
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 TW201337752A publication Critical patent/TW201337752A/zh
Application granted granted Critical
Publication of TWI499976B publication Critical patent/TWI499976B/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/30018Bit or string 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/30181Instruction operation extension or modification
    • 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

Abstract

一態樣之一種方法包括接收一指令,該指令指示一目的地儲存位置。回應於該指令將一結果儲存於該目的地儲存位置中。該結果包括依數值排序的至少四個非負整數之一序列,其中在連續位置中的所有整數相差至少為二的常數步幅。在一態樣中,儲存包括該等至少四個整數之該序列的該結果係在無需使用先前指令之結果來計算該等至少四個整數的情況下執行。揭示了其他方法、設備、系統及指令。

Description

用以產生相差常數步輻之依數值排序的整數序列的處理器、方法、系統及指令 發明領域
實施例係有關於處理器。特別地,實施例係有關於具有指令集的處理器,該等指令集包括使用控制索引的指令。
發明背景
許多處理器具有單指令、多重資料(SIMD)架構。在SIMD架構中,緊縮資料指令、向量指令或SIMD指令可同時或平行地對多個資料元件或多對資料元件進行操作。處理器可具有回應於緊縮資料指令的平行執行硬體,來同時或平行地執行多個操作。
多個資料元件可在一個暫存器或記憶體位置內緊縮為緊縮資料或向量資料。在緊縮資料中,暫存器或其他儲存位置的各位元可以邏輯方式分成多個資料元件之序列。例如,256個位元寬的緊縮資料暫存器可具有四個64個位元寬的緊縮資料元件、八個32個位元寬的緊縮資料元 件、十六個16個位元寬的緊縮資料元件,等。緊縮資料元件中之每一者可表示可與其他資料元件分離地或獨立地被操作的一段獨立的個別資料(例如,像素的紅、綠、藍或α色彩分量,或複數的實數或虛數分量,等)。
一些SIMD架構具有用以根據控制索引來靈活地重新排列一或多個來源緊縮資料內的緊縮資料元件之指令。此等指令之實例係置換(permute)指令或混洗(shuffle)指令。該等控制索引控制該等指令如何重新排列緊縮資料元件。
依據本發明之一實施例,係特地提出一種方法,其包含:接收一指令,該指令指示一目的地儲存位置;及回應於該指令將一結果儲存於該目的地儲存位置中,該結果包括依數值排序的至少四個非負整數之一序列,其中在連續位置中的所有整數相差至少為二的常數步幅,其中儲存包括該等至少四個整數之該序列的該結果係在無需使用先前指令之結果來計算該等至少四個整數的情況下執行。
100、1600‧‧‧處理器
101‧‧‧指令集架構
102‧‧‧架構暫存器
103、403、1603、1803‧‧‧緊縮資料暫存器
104‧‧‧指令集
105‧‧‧使用控制索引的指令
106‧‧‧緊縮資料重新排列指令
107‧‧‧收集指令
108、408、1608、1908‧‧‧可用來產生控制索引的指令
109、1909‧‧‧控制索引產生指令
110、1910‧‧‧控制索引前身產生指令
111‧‧‧執行邏輯
212、317、530、830、1030、1130、1330、1446‧‧‧方法
213~216‧‧‧方塊
318~321‧‧‧方塊
400‧‧‧指令處理設備
422‧‧‧解碼器
423‧‧‧執行單元
424‧‧‧用於計算整數序列的邏輯
425‧‧‧整數序列
426‧‧‧記憶體
427、1627‧‧‧目的地儲存位置
428‧‧‧結果
531~532‧‧‧方塊
633‧‧‧運算碼
634‧‧‧目的地儲存位置
636‧‧‧數值型樣定義參數
708A、708B‧‧‧指令
727A、727B、734A、734B‧‧‧目的地儲存位置
728A、728B‧‧‧結果
733A、733B‧‧‧運算碼
740A、740B‧‧‧整數序列
831~832、1031~1032、1131~1132、1331~1332、1431~1432、1447~1448‧‧‧方塊
942、1242‧‧‧第一來源緊縮資料
943、1243‧‧‧第二來源緊縮資料
944、1244‧‧‧第三來源緊縮資料
945、1245‧‧‧結果緊縮資料
1542‧‧‧來源緊縮資料
1650‧‧‧唯讀記憶體
1640-1‧‧‧第一整數序列
1640-M‧‧‧第M整數序列
1640-N‧‧‧第N整數序列
1651-1‧‧‧第一非架構上可見的儲存位置
1651-M‧‧‧第M非架構上可見的儲存位置
1651-N‧‧‧第N非架構上可見的儲存位置
1623‧‧‧解碼與執行單元
1742A、1742B‧‧‧緊縮資料運算元
A0-AN‧‧‧資料元件
I0-IN‧‧‧控制索引或前身
1952‧‧‧製造物品
1953‧‧‧機器可讀儲存媒體
2002‧‧‧VEX前綴
2005‧‧‧REX欄位
2015‧‧‧運算碼對映欄位
2020‧‧‧VEX.vvvv
2025‧‧‧前綴編碼欄位
2030‧‧‧實際運算碼欄位
2040‧‧‧Mod R/M位元組
2042‧‧‧基本操作欄位
2044‧‧‧暫存器索引欄位
2046‧‧‧R/M欄位
2050‧‧‧SIB位元組
2052‧‧‧SS
2054‧‧‧SIB.xxx
2056‧‧‧SIB.bbb
2062‧‧‧位移欄位
2064‧‧‧W欄位
2068‧‧‧大小欄位
2072‧‧‧立即值欄位(IMM8)
2100‧‧‧一般向量友善指令格式
2105‧‧‧非記憶體存取
2110‧‧‧非記憶體存取、完全捨位控制型操作
2112‧‧‧非記憶體存取、寫入遮罩控制、部分捨位控制型操作
2115‧‧‧資料轉換型操作
2117‧‧‧非記憶體存取、寫入遮罩控制、vsize型操作
2120‧‧‧記憶體存取
2125‧‧‧記憶體存取、暫時
2127‧‧‧記憶體存取、寫入遮罩控制
2130‧‧‧記憶體存取、非暫時
2140‧‧‧格式欄位
2142‧‧‧基本操作欄位
2144‧‧‧暫存器位址欄位
2146‧‧‧修飾符欄位
2150‧‧‧擴增操作欄位
2152‧‧‧α欄位
2152A‧‧‧RS欄位
2152A.1‧‧‧捨位
2152A.2‧‧‧資料轉換
2152B‧‧‧收回提示欄位
2152B.1‧‧‧暫時
2152B.2‧‧‧非暫時
2152C‧‧‧寫入遮罩控制(Z)欄位
2154‧‧‧β欄位
2154A‧‧‧捨位控制欄位
2154B‧‧‧資料轉換欄位
2154C‧‧‧資料調處欄位
2156‧‧‧抑制所有浮點異常(SAE)欄位
2157A‧‧‧RL欄位
2157A.1‧‧‧捨位欄位
2157A.2‧‧‧向量長度(VSIZE)
2157B‧‧‧廣播欄位
2158‧‧‧捨位操作控制欄位
2159A‧‧‧捨位操作欄位
2159B‧‧‧向量長度欄位
2160‧‧‧比例欄位
2162A‧‧‧位移欄位
2162B‧‧‧位移因數欄位
2164‧‧‧資料元件寬度欄位
2168‧‧‧類別欄位
2168A‧‧‧類別A
2168B‧‧‧類別B
2170‧‧‧寫入遮罩欄位
2172‧‧‧立即值欄位
2174‧‧‧完整的運算碼欄位
2200‧‧‧特定向量友善指令格式
2202‧‧‧EVEX前綴
2205‧‧‧REX欄位
2210‧‧‧REX’欄位
2215‧‧‧運算碼對映欄位
2220‧‧‧EVEX.vvvv欄位
2225‧‧‧前綴編碼欄位
2230‧‧‧實際運算碼欄位
2240‧‧‧MOD R/M欄位
2242‧‧‧MOD欄位
2244‧‧‧Reg欄位
2246‧‧‧R/M欄位
2254‧‧‧SIB.xxx
2256‧‧‧SIB.bbb
2300‧‧‧暫存器架構
2310‧‧‧向量暫存器
2315‧‧‧寫入遮罩暫存器
2325‧‧‧通用暫存器
2345‧‧‧純量浮點堆疊暫存器檔案
2350‧‧‧MMX緊縮整數平板暫存器檔案
2400‧‧‧處理管線
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‧‧‧L2快取記憶體單元
2500‧‧‧指令解碼器
2502‧‧‧互連網路
2504‧‧‧L2快取記憶體局域子集
2506‧‧‧L1快取記憶體
2506A‧‧‧L1資料快取記憶體
2508‧‧‧純量單元
2510‧‧‧向量單元
2512‧‧‧純量暫存器
2514‧‧‧向量暫存器
2520‧‧‧拌和單元
2522A、2522B‧‧‧數值轉換單元
2524‧‧‧複製單元
2526‧‧‧寫入遮罩暫存器
2528‧‧‧寬度為16之ALU
2600‧‧‧處理器
2602A-N‧‧‧核心
2604A-N‧‧‧快取記憶體單元
2606‧‧‧共享快取記憶體單元
2608‧‧‧專用邏輯
2610‧‧‧系統代理
2612‧‧‧環式互連單元
2614‧‧‧整合型記憶體控制器單元
2616‧‧‧匯流排控制器單元
2700‧‧‧系統
2710、2715‧‧‧處理器
2720‧‧‧控制器集線器
2740‧‧‧記憶體
2745‧‧‧共處理器
2750‧‧‧輸入/輸出集線器
2760‧‧‧輸入/輸出(I/O)裝置
2790‧‧‧圖形記憶體控制器集線器(GMCH)
2795‧‧‧連接
2800‧‧‧第一更特定的示範性系統
2814、2914‧‧‧I/O裝置
2815‧‧‧額外處理器
2816‧‧‧第一匯流排
2818‧‧‧匯流排橋接器
2820‧‧‧第二匯流排
2822‧‧‧鍵盤及/或滑鼠
2824‧‧‧音訊I/O
2827‧‧‧通訊裝置
2828‧‧‧儲存單元
2830‧‧‧指令/程式碼及資料
2832、2834‧‧‧記憶體
2838‧‧‧共處理器
2839‧‧‧高效能介面
2850‧‧‧點對點互連
2852、2854、2886、2888‧‧‧P-P介面
2870‧‧‧第一處理器
2872‧‧‧整合型記憶體控制器(IMC)單元
2876、2878‧‧‧點對點(P-P)介面
2880‧‧‧第二處理器
2882‧‧‧整合型記憶體控制器(IMC)單元
2890‧‧‧晶片組
2894、2898‧‧‧點對點介面電路
2896‧‧‧介面
2900‧‧‧第二更特定的示範性系統
2915‧‧‧舊式I/O裝置
3000‧‧‧系統單晶片
3002‧‧‧互連單元
3010‧‧‧應用處理器
3020‧‧‧共處理器
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係用於處理指令之方法的實例實施例之方塊流程圖,該指令儲存依數值排序的至少四個非負整數之序列, 其中在連續位置中的所有整數相差至少為二的常數整數步幅。
圖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係例示出根據本發明之實施例之如下兩者的方塊圖:示範性循序(in-order)管線,以及示範性暫存器重新命名亂序(out-of-order)發佈/執行管線。
圖24B展示出處理器核心,其包括耦接至執行引擎單元之前端單元,且執行引擎單元及前端單元皆耦接至記憶體單元。
圖25A係根據本發明之實施例之單處理器核心及其至晶粒上互連網路的連接以及其2階(L2)快取記憶體局域子集的方塊圖。
圖25B係根據本發明之實施例之圖25A中的處理器核心之部分的展開圖。
圖26係根據本發明之實施例之處理器的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件(graphics)。
圖27係根據本發明之一實施例之系統的方塊圖。
圖28展示出根據本發明之一實施例之第一更特定的示範性系統之方塊圖。
圖29展示出根據本發明之一實施例之第二更特定的示範性系統之方塊圖。
圖30展示出根據本發明之一實施例之SoC(系統單晶片) 的方塊圖。
圖31展示出對照根據本發明之實施例之軟體指令轉換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。
較佳實施例之詳細說明
在以下描述中,闡述許多特定細節(例如,特定的處理器、方法、操作、指令、數值型樣及資料格式)。然而,應瞭解,可在無此等特定細節的情況下實踐本發明之實施例。在其他情況下,未詳細展示熟知的電路、結構及技術,以避免不必要地混淆對本描述之理解。
用於置換指令之控制索引通常係藉由執行一系列通用指令來從頭開始逐漸建立的,該等指令對具有來源緊縮資料元件之來源緊縮資料運算元進行操作。例如,用於出售控制索引的方法之部分可包括執行一系列通用緊縮資料算術指令,以便對來源緊縮資料元件執行一系列緊縮資料算術運算,來最終將該等來源緊縮資料元件轉換成控制索引。
一般而言,往往會限制置換及混洗指令以及其他緊縮資料重新排列指令之有用性的一個因素係為了產生如下索引所通常需要執行的指令數:置換控制索引、混洗控制索引,或其他緊縮資料重新排列控制索引。可能需要若干指令(例如,約為4至10個,或甚至更多)來產生控制索引之集合。此外,所需指令數通常往往隨著緊縮資料元件之 總數增加而增加,此種情況往往會隨時間流逝而發生,因為緊縮資料暫存器之位元寬度增加。
就處理時間、處理器資源利用及功率消耗而言,執行此等指令往往代價較大。此外,此代價往往會減損或減少緊縮資料重新排列指令所提供的總體益處。在一些情況下,在產生並使用控制索引後,可丟棄控制索引,在此情況下,若有需要,可能需要從頭開始重新產生控制索引。在其他情況下,在產生並使用控制索引後,可將控制索引儲存於主記憶體中,且隨後在需要控制索引時經由系統匯流排自主記憶體擷取控制索引。此可幫助避免每當需要控制索引時從頭開始產生控制索引,但自主記憶體擷取控制索引亦往往要用大量時間。
本文中所揭示的係可用來產生用於其他指令(例如,置換指令、混洗指令、其他緊縮資料重新排列指令,以及其他使用控制索引的指令)之控制索引的指令。亦揭示了用以執行該等指令的處理器、該處理器在處理或執行該等指令時所執行的方法,以及併有用以處理或執行該等指令之一或多個處理器的系統。本文中別處所揭示的各種處理器及系統係合適的。有利的是,此等指令、處理器、方法及系統可幫助減少處理時間量及/或為了產生控制索引所需要執行的指令數。
圖1係用以處理可用來產生控制索引的指令之處理器100的實例實施例之方塊圖。處理器可為各種複雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理 器、各種極長指令字(VLIW)處理器、上述各者的各種混合物或完全其他類型之處理器中之任一者。在一些實施例中,處理器可為通用處理器(例如,通用微處理器),但並不作此要求。或者,處理器可為專用處理器。僅舉例而言,合適的專用處理器之實例包括但不限於網路處理器、通訊處理器、密碼編譯處理器、圖形處理器、共處理器、嵌入式處理器、數位信號處理器(DSP)以及控制器(例如,微控制器)。
處理器具有指令集架構(ISA)101。ISA表示處理器之架構中與規劃有關的部分。ISA通常包括原生指令、架構暫存器、資料類型、定址模式、記憶體架構、中斷及異常處置以及處理器之外部輸入及輸出(I/O)。ISA有別於微架構,微架構通常表示經選擇用來實行ISA之特別處理器設計技術。具有不同微架構的處理器可共享共同的SIA。
ISA包括架構上可見的暫存器或架構暫存器(例如架構暫存器檔案)102。架構暫存器表示處理器上的儲存位置。架構暫存器在本文中亦可被簡單地稱為暫存器。除非另外指定或明顯可以看出,否則片語架構暫存器、暫存器檔案及暫存器在本文中係用來指:對軟體及/或規劃器可見的(例如,軟體可見)暫存器,及/或由通用巨集指令指定來識別運算元的暫存器。此等暫存器與給定微架構中的其他非架構暫存器或非架構上可見的暫存器(例如,指令所使用的臨時暫存器、重新排序緩衝器、引退暫存器、微指令所使用的微架構唯讀暫存器等)形成對照。所說明的架構上 可見的暫存器包括緊縮資料暫存器103。該等緊縮資料暫存器中之每一者可操作以儲存緊縮資料、向量資料或SIMD資料。
所說明的ISA包括處理器所支援的指令集104。該指令集之資料表示巨集指令(例如,提供給處理器以供執行的指令),而非微指令或微操作(例如,由於處理器之解碼器對巨集指令進行解碼而產生的微指令或微操作)。處理器可包括用以執行該指令集之指令的特定或特別邏輯(例如,可能具有一些韌體或軟體的電路)。
指令集可包括使用控制索引之一或多個指令105。如上所述,在一些實施例中,此等指令可包括一或多個置換指令、混洗指令,或其他緊縮資料重新排列指令106。作為另一選擇,如下文中將進一步論述,在一些實施例中,此等指令可包括一或多個收集指令或載入指令107,其可操作以使用控制索引自處理器外的記憶體收集或載入非連續資料。
根據本發明之實施例,指令集亦可包括各自可用來產生控制索引之一或多個指令108。在一些實施例中,此等指令可包括可操作以產生實際控制索引的一或多個控制索引產生指令109。該等控制索引產生指令中之每一者可操作以完全在執行單個巨集指令的範圍內產生控制索引。相反地,按照慣例,通常需要執行一系列通用巨集指令,以便從頭開始逐步或逐漸建立控制索引。
在一些實施例中,指令可包括一或多個控制索引 前身產生指令110,其不產生實際控制索引,而產生控制索引前身。該等控制索引前身產生指令中之每一者可操作以完全在執行單個巨集指令的範圍內產生控制索引前身。控制索引前身可充當可藉由一或多個其他指令有效地轉換成實際控制索引之有用的起點或起始值,而不需要從頭開始產生實際控制索引。有利的是,該等前身的使用可允許與從頭開始時相比而言更快地產生實際控制索引及/或藉由更少的指令來產生實際控制索引。
處理器亦包括執行邏輯111。該執行邏輯可操作以執行或處理指令集之指令。
圖2係用於處理緊縮資料重新排列控制索引產生指令之實例實施例的方法212的實例實施例之方塊流程圖。在方塊213接收緊縮資料重新排列控制索引產生指令。所接收指令指定或以其他方式指示第一目的地儲存位置。在一些態樣中,第一目的地儲存位置可由指令之編碼的幾個位元或一或多個欄位明確指定。在其他態樣中,第一目的地儲存位置可隱含於指令。
在方塊214,回應於緊縮資料重新排列控制索引產生指令及/或作為緊縮資料重新排列控制索引產生指令的結果,將一結果儲存於第一目的地儲存位置中。該結果包括表示緊縮資料重新排列控制索引的至少四個非負整數之序列。至少四個整數通常具有多個不同的值(亦即,其並非全部為同一整數值)。在各種實施例中,該序列可包括表示緊縮資料重新排列控制索引的至少八個、至少十六個、 至少三十二個或至少六十四個非負整數。該結果及/或該整數序列可為本文中別處所揭示的結果及/或整數序列中之任一者。在一些實施例中,該結果及/或該整數序列可完全在執行單個巨集指令的範圍內產生(例如,整數的值可能不取決於程式流程中的任何先前指令)。
為進一步說明某些概念,且儘管本發明在此方面不受限制,緊縮資料重新排列指令的接收發生在方塊215。在各種態樣中,此指令可為置換指令、混洗指令,或另一類型之緊縮資料重新排列指令,其可操作以根據緊縮資料重新排列控制索引來重新排列一或多個來源緊縮資料中的資料元件。該指令指示緊縮資料重新排列控制索引(例如,指定第一目的地儲存位置)。該指令亦指定或以其他方式指示具有緊縮資料元件之至少一個來源緊縮資料,並且指定或以其他方式指示第二目的地儲存位置。
在方塊216,回應於緊縮資料重新排列指令及/或作為緊縮資料重新排列指令的結果,將一緊縮資料結果儲存於第二目的地儲存位置中。該緊縮資料結果包括來自根據緊縮資料重新排列控制索引予以重新排列的至少一個來源緊縮資料之資料元件。在一些實施例中,如在許多置換及混洗指令之情況下,緊縮資料重新排列控制索引可識別、選擇或以其他方式加索引於至少一個來源緊縮資料內的特別資料元件。加索引後的資料元件可儲存於結果資料元件中,其位置對應於該等索引。
圖3係用於處理緊縮資料重新排列控制索引前身 產生指令之實例實施例的方法317的實例實施例之方塊流程圖。在方塊318接收緊縮資料重新排列控制索引前身產生指令。所接收指令指定或以其他方式指示目的地儲存位置。
在方塊319,回應於緊縮資料重新排列控制索引前身產生指令及/或作為緊縮資料重新排列控制索引前身產生指令的結果,將一結果儲存於目的地儲存位置中。該結果包括表示緊縮資料重新排列控制索引前身的至少四個非負整數之序列。至少四個整數通常具有多個不同的值。在各種實施例中,該序列可包括表示緊縮資料重新排列控制索引前身的至少八個、至少十六個、至少三十二個或至少六十四個非負整數。該結果及/或該整數序列可為本文中別處所揭示的結果及/或整數序列中之任一者。在一些實施例中,該結果及/或該整數序列可完全在執行單個巨集指令的範圍內產生(例如,整數的值可能不取決於程式流程中的任何先前指令)。
為進一步說明某些概念,且儘管本發明在此方面不受限制,在方塊320,執行至少一個額外指令(例如,至少一個通用算術指令)之執行,來將緊縮資料重新排列控制索引前身轉換成緊縮資料重新排列控制索引。至少一個額外指令中之第一指令可指示目的地儲存位置作為緊縮資料重新排列控制索引前身的來源。
接著,在方塊321,可執行指示緊縮資料重新排列控制索引的緊縮資料重新排列指令。緊縮資料重新排列指令的操作可與先前所描述的操作類似。
圖2及圖3中,已展示出在方塊215、216、320及321的操作來更好地說明某些概念。然而,應理解,本發明不限於在此等方塊執行之操作。其他實施例係關於個別緊縮資料重新排列控制索引產生指令之方法及操作,且再其他的實施例係關於個別緊縮資料重新排列控制索引前身產生指令之方法及操作,其不限於其他後續指令之操作。
圖4係指令處理設備400的實例實施例之方塊圖。指令處理設備可為處理器,或可為處理器之部分。例如,在一些實施例中,指令處理設備可為圖1之處理器100或類似處理器,或可為該處理器之部分。或者,指令處理設備可可包括於不同處理器或電子系統(例如,本文中揭示之其他處理器或系統中之一者)中。
指令處理設備可接收可用來產生控制索引的指令408。該指令可表示本文中別處所揭示的可用來產生控制索引的指令之各種實施例中之任一者。該指令可表示機器指令、巨集指令或相似的控制信號。指令處理設備具有特定或特別電路或其他邏輯(例如,可能與韌體及/或軟體相結合的硬體),其可操作以處理該指令及/或回應於該指令、作為該指令之結果及/或根據該指令而儲存一結果。
所說明的指令處理設備包括指令解碼器422。該解碼器可接收並解碼較高階機器指令或巨集指令,且輸出一或多個較低階微操作、微碼進入點、微指令,或其他較低階指令或控制信號,上述各者反映原始較高階指令及/或係由原始較高階指令導出。一或多個較低階指令或控制信 號可經由一或多個較低階(例如,電路階層或硬體階層)操作來實行較高階指令的操作。可使用各種不同的機構來實行解碼器,該等機構包括但不限於微碼唯讀記憶體(ROM)、查找表、硬體實行方案、可規劃邏輯陣列(PLA),及此項技術中已知的用來實行解碼器之其他機構。
或者,該設備可具有指令仿真器、轉譯器、漸變器(morpher)、解譯器,或其他指令轉換邏輯,而不具有解碼器422。各種不同類型的指令轉換邏輯係此項技術中已知的,且可於軟體、硬體、韌體或其組合中實行。指令轉換邏輯可接收指令,對指令進行轉譯、漸變、解譯或以其他方式轉換成一或多個對應的導出指令或控制信號。在再其他的實施例中,指令處理設備可具有指令轉換邏輯及解碼器兩者。例如,指令處理設備可具有:指令轉換邏輯,用來將所接收指令轉換成一或多個中間指令;及解碼器,用來將該一或多個中間指令解碼成可由指令處理設備的原生硬體執行的一或多個較低階指令或控制信號。指令轉換邏輯之部分或全部可位於晶粒外,離開指令處理設備的其餘部分,諸如位於獨立的晶粒上或位於晶粒外的記憶體中。
再次參看圖4,可用來產生控制索引的指令408明確指定(例如,經由一或多個欄位)或以其他方式指示(例如,隱含地指示)目的地儲存位置427。如所示,在一些實施例中,目的地儲存位置可位於指令處理設備之緊縮資料暫存器403之集合內。或者,目的地儲存位置可為另一暫存器或記憶體位置。緊縮資料暫存器係架構上可見的處理器 上儲存位置,可使用熟知的技術以不同方式在不同微架構中實行,且不小於任何已知的特別類型之電路。各種不同類型之暫存器係合適的,只要其能夠如本文中所描述儲存並提供資料即可。合適類型之暫存器之實例包括但不限於專門的實體暫存器、使用暫存器重新命名的動態分配實體暫存器及其組合。
指令處理設備亦包括執行單元423。該執行單元與解碼器422及目的地儲存位置427耦接。該執行單元可自解碼器接收一或多個微操作、微碼接入點、微指令、其他指令或其他控制信號,上述各者反映指令408或係自指令408導出。藉由實例,執行單元可包括算術邏輯單元、邏輯單元、算術單元、功能單元或類似者。執行單元可包括可能與其他邏輯(例如,軟體、韌體或其組合)相結合的特定或特別硬體邏輯(例如,積體電路),其可操作以執行指令(例如,執行一或多個微指令)及/或回應於指令而儲存結果。
執行單元回應於指令及/或作為指令408之結果而可操作以儲存結果428於目的地儲存位置427中。如所示,在實施例中,該結果可包括至少四個整數之序列。在指令408係控制索引產生指令的實施例中,該等整數中之每一者可表示一控制索引。在指令408係控制索引前身產生指令的實施例中,該等整數中之每一者可表示一控制索引前身。
在一些實施例中,執行單元可包括計算邏輯424,其可操作以計算至少四個整數之序列。此等邏輯可為 專用或特別電路(例如,用以使用行掃描方法計算整數,以迭代方式計算整數,等)。在其他實施例中,執行單元可回應於指令而自記憶體426(例如,與執行單元一起在晶粒上之非架構上可見的唯讀記憶體(ROM))存取至少四個整數之序列425之預先存在的拷貝。參見下文圖16的論述。在此等實施例中之任一者中,通常並不經由系統匯流排自晶粒外的主記憶體存取整數序列。
在一些實施例中,結果可包括遵循數值型樣的至少四個、至少八個、至少十六個、至少三十二個或至少六十四個非負整數。在一些實施例中,遵循數值型樣的整數可為依數值排序的連續非負整數(例如0、1、2、3、4、5、6及7)。在其他實施例中,遵循數值型樣的整數可為依數值排序的非負整數,其中在連續位置中的所有整數相差至少為二的常數整數步幅。在一些實施例中,步幅可等於二,且整數序列可為依數值排序的連續同奇偶性整數之序列。例如,連續同奇偶性整數可為連續偶數(例如0、2、4、6、8、10、12及14)或連續奇數(例如1、3、5、7、9、11、13及15)。在其他實施例中,步幅(N)可大於二(例如,步幅可為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,回應於指令及/或作為指令之結果,將一結果儲存於目的地儲存位置中。該結果包括遵循數值型樣的至少四個非負整數之序列。在各種實施例中,該結果可包括遵循數值型樣的至少八個、至少十六個、至少三十二個、至少六十四個或甚至更多非負整數之序列。整數序列可為本文中別處所揭示的遵循各種數值型樣的整數序列中之任一者。通常,該等整數中之至少兩個、至少四個、至少一半或甚至全部可具有不同值(即,該等整數通常不完全相同)。
圖6係可用來產生控制索引的指令608之指令格式的實施例之方塊圖。指令格式包括運算碼633。運算碼可表示指令格式之用以識別指令的多個位元或一或多個欄位。指令格式亦可包括目的地儲存位置634。在所說明之實施例中,指令格式包括指令格式之用以明確指定目的地儲存位置的多個位元或一或多個欄位。或者,目的地儲存位置可隱含於指令。
在一些實施例中,指令格式並不明確指定,隱含地指示,或以其他方式指示具有將要由指令操作的緊縮資 料元件之架構上可見的來源儲存位置(例如,緊縮資料暫存器或在記憶體位置)635。在本發明之實施例中,由本文中所揭示的指令儲存的整數序列、控制索引及控制索引前身並非係自架構上可見的來源儲存位置中之緊縮資料元件計算出或以其他方式導出。相反地,如發明領域部分中所論述,按照慣例,置換及混洗控制索引通常係藉由執行一系列通用指令(例如,通用緊縮資料算術指令)來從頭開始逐步建立的,在緊縮資料元件最終被轉換成置換及混洗控制索引以前,該等通用指令並不對架構上可見的來源緊縮資料暫存器中之緊縮資料元件進行操作。在本發明之實施例中,由本文中所揭示的指令儲存之整數序列、控制索引及控制索引前身係完全在執行單個指令的範圍內產生的,且並非基於依程式排序的任何先前指令之結果。
在一些實施例中,指令格式可具有用以明確指定一或多個數值型樣定義參數636的一或多個來源運算元及/或一或多個立即值。或者,一或多個數值型樣定義參數可由指令隱含地指示(例如,經由由指令隱含地指示之暫存器提供)。一或多個數值型樣定義參數中之每一者可影響作為指令之結果所儲存的結果或整數序列之數值型樣。一或多個數值型樣定義參數中之每一者可影響該序列或結果中的整數中之每一者的值。一或多個數值型樣定義參數中之每一者可用來評估隱含於指令的數值型樣定義方程式或關係。合適的數值型樣定義參數之幾個代表性實例包括但不限於自零的整數偏移量、整數步幅、整數旋轉量及其組合 (例如,自零的整數偏移量與整數步幅一起)。
在其他實施例中,指令可能不指定或以其他方式指示任何數值型樣定義參數。在一些實施例中(例如,在指令不指定或以其他方式指示任何數值型樣定義參數的實施例中),指令可能不具有(例如,指定或以其他方式指示)任何來源運算元637。
圖7A係例示出在一些實施例中由指令708A儲存於目的地儲存位置727A中之結果728A中的整數序列740A可具有完全或至少主要係基於738該指令之運算碼733A的數值型樣的方塊圖。指令具有用以指定目的地儲存位置727A之運算碼及位元或一或多個欄位734A。請注意,此實施例之指令不指定或以其他方式指示任何數值型樣定義參數或與此有關的任何來源運算元。指令之執行導致結果被儲存於目的地儲存位置中。結果包括具有數值型樣的整數序列。在此等實施例中,整數序列的數值型樣完全或至少主要係基於指令之運算碼。在此等實施例中,整數序列的數值型樣針對指令之運算碼係確定的或為常數。例如,序列中的連續整數之間的差異可完全或至少主要係基於指令之運算碼及/或針對指令之運算碼係確定的或為常數。在識別運算碼後,整數序列及其數值型樣即可被確定(即,可能不取決於指令之任何來源運算元)。在一些實施例中,指令/運算碼可能僅能夠儲存一個特別的整數序列及/或一個特別的數值型樣。藉由比較,當通用算術指令對來源緊縮資料進行操作來產生置換或混洗控制索引時,置換或混洗控 制索引的數值型樣並非完全或至少主要係基於通用算術指令之運算碼,而是基於來源緊縮資料。
圖7B係例示出在一些實施例中由指令708B儲存於目的地儲存位置727B中之結果728B中的整數序列740B可具有部分係基於739該指令之運算碼733B且部分係基於由該指令指示的一或多個數值型樣定義參數736之數值型樣的方塊圖。數值型樣完全或至少主要係基於運算碼及一或多個數值型樣定義參數。指令可具有運算碼、位元或一或多個欄位734B,其係用以指定目的地儲存位置727B並且指定或以其他方式指示一或多個數值型樣定義參數736。指令之執行導致結果被儲存於目的地儲存位置中。結果包括具有數值型樣的整數序列。在此等實施例中,整數序列的數值型樣部分係基於指令之運算碼且部分係基於由指令指示的一或多個數值型樣定義參數,但完全或至少主要係基於運算碼及一或多個數值型樣定義參數(即,並非基於由先前指令儲存為結果的來源緊縮資料)。
圖8係用於處理可用來產生控制索引的指令之方法的實例實施例之方塊流程圖,該指令儲存依數值排序的至少四個連續非負整數之序列。在方塊831接收該指令。該指令指定或以其他方式指示目的地儲存位置。
在方塊832,回應於指令及/或作為指令之結果,將一結果儲存於目的地儲存位置中。該結果包括依數值排序的至少四個非負整數之序列。在一些實施例中,該結果可包括位於目的地儲存位置中之依數值排序的至少八個、 至少十六個、至少三十二個、至少六十四個或甚至更多連續非負整數之序列。在各種實施例中,連續整數之序列可包括表至表3中所展示的序列中之任一者。
表1針對不同數目個整數列出依遞增數值排序的連續非負整數之序列的實例實施例。
依遞增數值排序,整數之值隨著目的地儲存位置之位元有效性增加而增加(在最接近暫存器之最低位位元處儲存最小整數,且在最接近暫存器之最高位位元處儲存最大整數)。在此等實例中之每一者中,最小整數為零。在一些實施例中,指令/運算碼可能僅能夠儲存選自表1的整數序列(即,其可能不能夠儲存其他整數),但對於其他實施例並不作此要求。依遞增數值排序之連續整數之此等序列對於控制索引前身特別有用,因為可藉由一個或幾個額外指令將該等序列快速、高效且廣泛用於、以算術方式或邏輯方式轉換成很多種可用於控制索引的不同整數序列。
表2針對不同數目個整數列出依遞減數值排序的連續非負整數之序列的實例實施例。
依遞減數值排序,整數之值隨著目的地儲存位置之位元有效性增加而減小。在一些實施例中在此等實例中之每一者中,最小整數為零。在一些實施例中,指令可具有一或多個位元,其用以指示是否依遞增或遞減數值排序來儲存整數,來允許一個指令/運算碼可用於任一者。依遞減數值排序的連續整數之此等序列可用來鏡像反射緊縮資料重新排列。在鏡像反射緊縮資料重新排列的實例中,緊縮資料來源中的資料元件係繞緊縮資料來源之中心被「鏡像反射」。例如,使來源中的最高位資料元件成為結果中的最低位資料元件,使來源中的次最高位資料元件成為結果中的次最低位資料元件,以此類推,直到使來源中的次最低位資料元件成為結果中的次最高位資料元件,且使來源中的最低位資料元件成為結果中的最高位資料元件。
表3針對不同數目個整數列出依遞增數值排序的連續非負整數之序列的實例實施例,該等整數自零發生了最小整數偏移,其程度為整數偏移量(K)。
如所示,整數中之最小整數可自零偏移該偏移量且可具有該偏移量的值。藉由實例,可將整數偏移量(K)任擇地添加至表所示序列的整數中之每一者。針對依遞減數值排序的連續非負整數想到了類似的實施例。自零偏移了可變的正整數偏移量(K)之依數值排序的此等連續非負整數可用來幫助自兩個對齊的緊縮資料抽取未對齊的緊縮資料,來避免需要執行未對齊的負載(例如,參見圖9之論述)。
在一些實施例中,指令可明確指定(例如,經由運算元或立即值)或以其他方式指示(例如,隱含地指示暫存器具有)整數偏移量(K)。偏移量(K)表示型樣定義參數之實例實施例,該型樣定義參數影響依數值排序的整數中之每一者的值,且數值型樣係基於該型樣定義參數。
在一些實施例中,結果可包括依數值排序的經旋轉連續非負整數,該等整數已旋轉了整數旋轉量(R)。表4針對不同數目個整數列出依遞增數值排序的連續非負整數之序列的實例實施例,該等整數已旋轉了整數旋轉量(R)。
如所示,每一整數係在旋轉方向上被旋轉,且當從一端旋轉出來時被旋轉至另一端中。在一些實施例中, 指令可明確指定(例如,經由運算元或立即值)或以其他方式指示(例如,隱含地指示暫存器具有)旋轉量(R)。旋轉量(R)表示型樣定義參數之實例實施例,該型樣定義參數影響依數值排序的整數中之每一者的值,且數值型樣係基於該型樣定義參數。整數可向右或向左旋轉。在一些實施例中,指令亦可明確指定或隱含地指示旋轉方向。針對依遞減數值排序的連續非負整數想到了類似的實施例。此等經旋轉的連續整數可用來旋轉緊縮資料元件。此等經旋轉的連續整數可用來旋轉在小於全向量大小之序列中的緊縮資料元件。
圖9係例示出緊縮資料重新排列操作的實例實施例之方塊圖,該緊縮資料重新排列操作使用緊縮資料重新排列控制索引自兩個對齊的緊縮資料中抽取未對齊的緊縮資料,來避免需要執行未對齊的負載,該等緊縮資料重新排列控制索引具有依數值排序的經偏移連續整數之值。可回應於緊縮資料重新排列指令而執行該操作。
緊縮資料重新排列指令可指示:具有八個資料元件A0-A7的第一來源緊縮資料942;具有八個資料元件B0-B7的第二來源緊縮資料943;具有八個緊縮資料元件C0-C7的第三來源緊縮資料944,該等資料元件C0-C7各自包括八個緊縮資料重新排列控制索引I0-I7中之對應的一者;以及結果緊縮資料945。藉由實例,控制索引I0-I7中之每一者可為4個位元寬,且可包括於對應的緊縮資料元件C0-C7之最低有效4個位元中,緊縮資料元件C0-C7可為8個位元寬、16個位 元寬、32個位元寬或64個位元寬。其他指令可使用其他數目個資料元件及控制索引。
回應於緊縮資料重新排列操作/指令而產生並儲存結果緊縮資料945。在此實施例中,緊縮資料重新排列控制索引中之每一者對應於在對應的位元位置中的結果資料元件。該等控制索引中之每一者可操作以選擇第一及第二來源緊縮資料之十六個資料元件中之任一者(即,A0-A7或B0-B7中之任一者),來儲存於對應的結果資料元件中。例如,第一控制索引I0可操作以選擇A0-A7或B0-B7中之任一者,來儲存於結果緊縮資料之第一結果緊縮資料元件中。四個位元足以唯一地選擇十六個來源資料元件中之任一者。根據一個可能的慣例,控制索引的值可為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的實例實施例之方塊流程圖,該指令儲存依數值排序的至少四個非負整數之序列,其中在連續位置中的所有整數相差至少為二的常數整數步幅。在方塊1031接收該指令。該指令指定或以其他方式指示目的地儲存位置。
在方塊1032,回應於指令及/或作為指令之結果,將一結果儲存於目的地儲存位置中。該結果包括依數值排序的至少四個非負整數之序列,其中在連續位置中的所有整數相差至少為二的常數整數步幅。在一些實施例中,該結果可包括依數值排序的至少八個、至少十六個、至少三十二個、至少六十四個或甚至更多非負整數,其中在連續位置中的所有整數相差至少為二的常數整數步幅。
常數步幅表示在目的地儲存位置中之連續位置中的整數值之間的常數差。在各種實施例中,步幅可為二、三、四或更大。藉由為二、三、四的常數步幅分離的整數特別可用於處理重複排列的成對/二元資料(例如,實數與虛數的對,或其他資料對)、三元資料(例如,RGB,或其他色彩分量資料),以及四元資料(例如,RGBA或其他色彩分量加上透明度/不透明度資料)。甚至更大的步幅可用於收集指 令的控制索引,該等收集指令自記憶體(例如,自表格或其他結構化的資料排列)收集非連續資料。在一些實施例中,指令可能僅能夠儲存連續整數相差常數步幅的整數序列,但其他實施例不受此限制。
圖11係用於處理可用來產生控制索引的指令之方法1130的實例實施例之方塊流程圖,該指令儲存依數值排序的至少四個非負的同奇偶性(例如,全部為偶數或全部為奇數)整數之序列。在方塊1131接收該指令。該指令指定或以其他方式指示目的地儲存位置。
在方塊1132,回應於指令及/或作為指令之結果,將一結果儲存於目的地儲存位置中。該結果包括依數值排序的至少四個非負的同奇偶性整數之序列。整數的奇偶性指該整數係偶數還是奇數。偶數具有相同奇偶性,且奇數具有不同於偶數之奇偶性的相同奇偶性。在一些實施例中,該結果可包括依數值排序的至少八個、至少十六個、至少三十二個、至少六十四個或甚至更多偶數(例如,連續偶數)之序列。在其他實施例中,該結果可包括依數值排序的至少八個、至少十六個、至少三十二個、至少六十四個或甚至更多奇數(例如,連續奇數)之序列。
表5針對不同數目個整數列出依遞增數值排序的連續偶數之序列之實例實施例。
表6針對不同數目個整數列出依遞增數值排序的連續奇數之序列之實例實施例。
在一些實施例中,指令/運算碼可能僅能夠儲存選自表5或表6的整數序列(即,其可能不能夠儲存其他整數),但對於其他實施例並不作此要求。連續偶數及奇數的此等序列特別可用於處理重複排列的二元資料(諸如,表示複數之實數與虛數的對,以及其他成對資料)。例如,連續偶數及奇數的此等序列特別可用來對一種類型之成對或二元資料與另一資料進行分離、隔離或解除交錯(例如,將實數與虛數分離)。例如,參見圖12之論述。
在其他實施例中,可將整數偏移量(K)任擇地添加至同奇偶性整數中之每一者。在再其他的實施例中,可使同奇偶性整數之序列旋轉整數旋轉量(R)。在再另外的實施例中,同奇偶性整數可依遞減數值排序。
圖12係例示出緊縮資料重新排列操作的實例實施例之方塊圖,該緊縮資料重新排列操作使用緊縮資料重新排列控制索引來將實數(R)與虛數(IM)分離,該等緊縮資料重新排列控制索引具有依遞增數值排序的連續偶數之值。可回應於緊縮資料重新排列指令而執行該操作。
該指令可指示:具有八個資料元件R0、IM0、R1、IM1、R2、IM2、R3、IM3的第一來源緊縮資料1242;具有八個資料元件R4、IM4、R5、IM5、R6、IM6、R7、IM7的第二來源緊縮資料1243;具有八個緊縮資料元件C0-C7的第三來源緊縮資料1244,該等資料元件C0-C7各自包括八個緊縮資料重新排列控制索引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,且將其儲存於結果緊縮資料的八個資料元件中。此外,具有依數值排序的連續偶數或奇數的控制索引亦可用來分離其他類型之成對或二元資料。
在其他實施例中,步幅可大於二。表7針對不同數目個整數列出依數值排序的整數序列的實例實施例,其中在連續位置中的整數相差大於二的常數整數步幅。
此等僅為幾個例示性實例。為簡單起見,僅針對四個、八個或十六個控制索引或控制索引前身展示了實例,但亦想到了其他數目。此外,為簡單起見,僅展示了步幅之幾個代表性實例(即,3、4及8),但其他步幅亦有可能(例如,5、6、10、16等)。想到了再其他的實施例,其中該序列之整數係依遞減數值排序,自零偏移,及/或經旋轉。
圖13係用於處理可用來產生控制索引的指令之方法1330的實例實施例之方塊流程圖,該指令儲存依數值排序的至少四個整數之序列,其中該等整數中之最小整數 自零偏移了偏移量(K),且其中在連續位置中的所有該等整數彼此相差步幅(N)。在方塊1331接收該指令。該指令指定或以其他方式指示目的地儲存位置。
在一些實施例中,該指令明確指定或以其他方式指示整數偏移量(K)及常數整數步幅(N)。在一些實施例中,該指令可具有用以明確指定偏移量(K)及/或步幅(N)的來源運算元及立即值中之至少一者。作為另一選擇,該指令可隱含地指示提供偏移量(K)及/或步幅(N)的暫存器。在一些情況下,偏移量可為零,或在其他情況下,偏移量可為非零正整數。常數整數步幅係一或更大的正整數。該指令可設定偏移量(K)及步幅(N)中之每一者來獲得適合於所需控制索引的所需數值型樣。
在方塊1332,回應於指令及/或作為指令之結果,將一結果儲存於目的地儲存位置中。該結果可包括位於目的地儲存位置中之依數值排序的至少四個非負整數之序列,其中該等整數中之最小整數自零偏移了偏移量(K),且其中在連續位置中的所有該等整數彼此相差步幅(N)。在目的地儲存位置中之位置(i)處的整數之值可等於:步幅(N)乘以位置(i),加上偏移量(K)。可將此以數學方式表達為,在位置(i)處的整數=(N*i+K),其中i的範圍為零至序列中的整數之總數減一(例如,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資料常用於具有顯示器/螢幕的電腦及其他電子裝置中。特別的所說明緊縮資料運算元具有十六個資料元件。在說明中,十六個資料元件分別儲存R0、G0、B0、A0、R1、G1、B1、A1、R2、G2、B2、A2、R3、G3、B3、A3。在一些實施例中,整數序列之數值型樣可操作以對四元資料執行有用的操作。
表9列出用以對RGBA資料或其他四元資料執行各種有用的操作之整數序列的實例實施例。一般而言許多此等序列可用於四元資料。
請注意,此等數值型樣具有為四個整數的重複單元,以使得型樣每四個整數重複一次。此等僅為幾個實例。亦想到了用以執行其他操作的其他序列。
再其他的實施例無需使用具有數值型樣的緊縮資料重新排列控制索引。一般而言,可使用任何整數序列,只要其可用於控制索引或控制索引前身即可。
整數可具有適合於控制索引或控制索引前身的值。通常,緊縮資料重新排列指令使用可操作以加索引於或選擇以下各者中之任一者的控制索引:4個來源緊縮資料元件、8個來源緊縮資料元件、16個來源緊縮資料元件、32個來源緊縮資料元件、64個來源緊縮資料元件,或在一些情況下128個來源緊縮資料元件。在實施例中,序列中的整數中之每一者可具有範圍為零至上限的值,該上限係由相關緊縮資料重新排列指令加索引的資料元件之總數減一。
例如,在各種實施例中,整數值全部可能範圍為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)。儲存位置可完全儲存本文中所揭示的整數序列中之任一者以及其他序列。通常,可儲存更常用的整數序列及/或需要相對更大代價來從頭開始產生之整數序列中之一個或若干(例如,約兩個至約十個或更多)整數序列。
解碼與執行單元1623接收可用來產生控制索引的指令1608。該指令指示目的地儲存位置1627,該位置在一些實施例中可位於緊縮資料暫存器1603中。在一些實施例中,該指令(例如,該指令之運算碼)可隱含地指示ROM,且該指令可指示非架構上可見的儲存位置中之一者。在一些此等實施例中,該一個非架構上可見的儲存位置可能針對該指令係確定的或隱含於該指令(例如,針對該指令之運算碼係確定的或隱含於該指令之運算碼)。在其他此等實施例中,該指令可具有用以明確指定或選擇該一個非架構上可見的儲存位置之一或多個位元。例如,在一些實施例中,該指令可具有分別用以在兩個、四個、八個或十六個不同的預定整數序列當中進行選擇之一個、兩個、三個、四個 或更多位元。有利的是,以此方式,一個指令/運算碼可能能夠在多個整數序列當中進行選擇。
在所說明之實例中,指令指示第M非架構上可見的儲存位置1651-M。回應於指令,執行單元可存取第M整數序列(例如0、2、4、6、8、10、12及14),且將其儲存於目的地儲存位置1627中。在此等實施例中,不需要產生或計算第M整數序列,而是可僅僅自ROM存取預先存在的/預先儲存的值。此可允許在執行單個指令的範圍內快速且高效地提供整數序列。在一些實施例中,ROM可與處理器及/或解碼與執行單元一起在晶粒上,以使得不需要自晶粒外的主記憶體或其他來源及/或經由系統匯流排存取整數序列。
處理器通常包括晶粒上的ROM,用來儲存各種不同類型之資訊(例如,處理器識別資訊、密碼編譯金鑰、組配資訊等)。在此ROM中通常有空間可用來儲存如本文中所揭示的一或多個整數序列。或者,專門的ROM、唯讀暫存器、非架構上可見的暫存器或另一非架構上可見的儲存空間可包括於晶粒上,用來儲存如本文中所揭示的一或多個整數序列。作為另一選擇,一或多個整數序列可被燒錄至處理器之單次可規劃熔絲中或以其他方式預先儲存或預先提供,與處理器及/或執行單元一起在晶粒上。
在一些實施例中,行掃描方法可用來產生依數值排序的整數之數值型樣。例如,為產生連續整數,可跨越九個元件廣播值1,來得出(A)。接著,可使具有經廣播的 值1之該等元件的拷貝向左移位,來得出(B)。接著,可將(A)與(B)相加,來得出(C)。接著,可使(C)向左移位,移位量為二,來得出(D)。接著,可將(C)與(D)相加,來得出(E)。接著,可使(E)向左移位,移位量為四,來得出(F)。接著,可將(E)與(F)相加,來得出(G),等等。
1 1 1 1 1 1 1 1 1 (A)
1 1 1 1 1 1 1 1 (B)
2 2 2 2 2 2 2 2 1 (C)
2 2 2 2 2 2 1 (D)
4 4 4 4 4 4 3 2 1 (E)
4 4 3 2 1 (F)
8 8 7 6 5 4 3 2 1 (G)
此等行掃描方法通常允許與純迭代式產生相比而言快速地產生整數序列。在再其他的實施例中,可以迭代方式產生如本文中所揭示的整數序列。例如,為產生連續整數,每一整數又可被計算為前一計算出的整數加一。
圖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,第二資料元件A1具有第二控制索引或前身I1,第N資料元件AN具有第N控制索引或前身IN,等等。取決於控制索引或前身之大小及資料元件之大小,兩個或更多資料元件之子集可用來儲存所有控制索引或前身。此外,在控制索引前身的情況下,可將其儲存於通用或整數暫存器中,稍後藉由後續指令將其轉換成緊縮資料格式。
圖18係適合於儲存緊縮資料運算元的緊縮資料 暫存器1803之合適集合的實例實施例之方塊圖。所說明之緊縮資料暫存器包括三十二個512個位元寬的緊縮資料或向量暫存器。此等三十二個512個位元寬的暫存器被標記為ZMM0至ZMM31。在所說明之實施例中,此等暫存器的下十六個暫存器之較低位256個位元(即,ZMM0-ZMM15)係混疊或覆疊在標記為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。可用來產生控制索引的指令中之每一者,若由機器執行,則可操作以導致該機器將結果儲存於由該指令指示的目的地儲存位置中。該結果包括表示控制索引或控制索引前身值整數序列。本文中所揭示的指令、結果及整數序列中之任一者係合適的。此外,其他指令可儲存於媒體中(例如,緊縮資料重新排列指令、收集指令、使用控制索引的其他指令等)。
不同類型之機器的實例包括但不限於處理器(例如,通用處理器及專用處理器)、指令處理設備,及具有一或多個處理器或指令處理設備的各種電子裝置。此等電子裝置的幾個代表性實例包括但不限於電腦系統、膝上型電腦、筆記型電腦、伺服器、網路路由器、網路交換器 (switch)、桌上型易網機(nettop)、機上盒(set-top box)、行動電話(cellular phone)、視訊遊戲控制器等。
指令集包括一或多個指令格式。給定指令格式定義各種欄位(位元之數目、位元之位置)來指定:將要執行之操作(運算碼),及運算元(將對其執行操作),以及其他。經由定義指令模板(或子格式),進一步劃分一些指令格式。例如,給定指令格式的指令模板可定義成具有指令格式的欄位之不同子集(所包括的欄位通常依相同次序,但至少一些具有不同的位元位置,因為所包括的欄位較少),及/或定義成具有被不同解譯的給定欄位。因此,ISA之每一指令係使用給定指令格式(且若已定義,則按該指令格式之指令模板中之給定一者)來表達,且包括用以制度操作及運算元的欄位。例如,示範性ADD指令具有特定運算碼及指令格式,該指令格式包括用以指定該運算碼之運算碼欄位及用以選擇運算元(來源1/目的地及來源2)之運算元欄位;且此ADD指令在指令串流中的出現將在選擇特定運算元之運算元欄位中具有特定內容。被稱為進階向量擴展(AVX)(AVX1及AVX2)且使用向量擴展(VEX)編碼方案的SIMD擴展之集合已公佈及/或公開(例如,參見Intel® 64 and IA-32 Architectures Software Developers Manual(2011年10月);且參見Intel® Advanced Vector Extensions Programming Reference(2011年6月))。
示範性指令格式
本文中描述之指令之實施例可以不同格式來體 現。下文論述VEX格式及一般向量友善格式之細節。另外,下文詳述示範性系統、架構及管線。可在此等系統、架構及管線上執行指令之實施例,但不限於詳述之該等系統、架構及管線。
VEX指令格式
VEX編碼允許指令具有兩個以上運算元,且允許SIMD向量暫存器的長度超過128個位元。VEX前綴的使用提供三運算元(或更多)語法。例如,先前兩運算元指令執行諸如A=A+B的運算,此運算會覆寫來源運算元。VEX前綴的使用使得運算元能夠執行諸如A=B+C的非破壞性運算。
圖20A展示出示範性AVX指令格式,其包括VEX前綴2002、實際運算碼(real opcode)欄位2030、Mod R/M位元組2040、SIB位元組2050、位移欄位2062及IMM8 2072。圖20B展示出圖20A的哪些欄位組成完整的運算碼欄位2074及基本操作欄位2042。圖20C例示出圖20A的哪些欄位組成暫存器索引欄位2044。
VEX前綴(位元組0-2)2002係按三位元組形式予以編碼。第一位元組係格式欄位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.vvvv2020(VEX位元組2,位元[6:3]-vvvv)之作用可包括以下各者:1)VEX.vvvv編碼以反轉(1的補數)形式指定的第一來源暫存器運算元,且針對具有兩個或兩個以上來源運算元的指令有效;2)VEX.vvvv編碼針對某些向量移位以1的補數形式指定的目的地暫存器運算元;或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之作用包括以下各者:編碼目的地暫存器運算元或來源暫存器運算元(rrr或Rrrr),或者被視為運算碼擴展且不用來編碼任何指令運算元。R/M欄 位2046的作用包括以下各者:編碼參考記憶體位址之指令運算元,或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、索引、基址(SIB)-比例欄位2050之內容(位元組5)包括用於記憶體位址產生的SS2052(位元[7-6])。SIB.xxx 2054之內容(位元[5-3])及SIB.bbb 2056之內容(位元[2-0])已在先前關於暫存器索引Xxxx及Bbbb提到。
位移欄位2062及立即值欄位(IMM8)2072含有位址資料。
一般向量友善指令格式
向量友善指令格式係適合於向量指令的指令格式(例如,存在特定針對向量運算的某些欄位)。雖然描述了經由向量友善指令格式支援向量運算及純量運算兩者的實施例,但替代性實施例僅使用向量運算向量友善指令格式。
圖21A至圖21B係例示出根據本發明之實施例之一般向量友善指令格式及其指令模板的方塊圖。圖21A係例示出根據本發明之實施例之一般向量友善指令格式及其A類指令模板的方塊圖;而圖21B係例示出根據本發明之實施例之一般向量友善指令格式及其B類指令模板的方塊圖。具體而言,一般向量友善指令格式2100,針對其定義了A類及B類指令模板,兩個指令模板皆包括非記憶體存取2105指令模板及記憶體存取2120指令模板。在向量友善指令格式的情況下,術語一般代表不與任何特定指令集相關的指令格式。
雖然將描述的本發明之實施例中,向量友善指令格式支援以下各者: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個位元組)的資料元件寬度)。
圖21A中的A類指令模板包括:1)在非記憶體存取2105指令模板內,展示出非記憶體存取、完全捨位(full round)控制型操作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-其內容區分呈一般向量友善指令格式的指定記憶體存取之指令的出現與不指定記憶體存 取之指令的出現;即,區分非記憶體存取705指令模板與記憶體存取2120指令模板。記憶體存取操作讀取及/或寫入至記憶體階層(在一些情況下,使用暫存器中的值來指定來源及/或目的地位址),而非記憶體存取操作不讀取及/或寫入至記憶體階層。雖然在一實施例中此欄位亦在執行記憶體位址計算的三種不同方式之間進行選擇,但替代性實施例可支援執行記憶體位址計算的更多、更少或不同的方式。
擴增操作欄位2150-其內容辨別除基本操作外還將執行多種不同操作中之哪一者。此欄位係內容脈絡特定的。在本發明之一實施例中,此欄位分成類別欄位2168、α(alpha)欄位2152及β(beta)欄位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至圖21B,此欄位之內容在A類指令與B類指令之間進行選擇。在圖21A至圖21B中,使用圓角正方形來指示欄位中存在特定值(例如,在圖21A至圖21B中針對類別欄位2168分別為類別A 2168A及類別B 2168B)。
A類指令模板
在A類非記憶體存取2105指令模板的情況下,α欄位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-其內容辨別要執行一組捨位操作中之哪一者(例如,捨進(Round-up)、捨去(Round-down)、向零捨位(Round-towards-zero)及捨位至最近數值(Round-to-nearest))。因此,捨位操作控制欄位2158允許以每指令為基礎改變捨位模式。在本發明之一實施例中,其中處理器包括用於指定捨位模式之控制暫存器,捨位操作控制欄位2150的內容置換(override)該暫存器值。
非記憶體存取指令模板-資料轉換型操作
在非記憶體存取資料轉換型操作2115指令模板中,β欄位2154被解譯為資料轉換欄位2154B,其內容辨別將執行許多資料轉換中之哪一者(例如,非資料轉換、拌和、廣播)。
在A類記憶體存取2120指令模板的情況下,α欄位2152被解譯為收回提示(eviction hint)欄位2152B,其內容辨別將使用收回提示中之哪一者(在圖21A中,針對記憶體存取、暫時2125指令模板及記憶體存取、非暫時2130指令模板,分別指定暫時2152B.1及非暫時2152B.2),而β欄位2154被解譯為資料調處欄位2154C,其內容辨別將執行許多資料調處操作(亦稱為原指令(primitive))中之哪一者(例如,非調處;廣播;來源的上轉換;及目的地的下轉換)。記憶體存取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提供運算碼(opcode)。
擴增操作欄位2150、資料元件寬度欄位2164及寫入遮罩欄位2170允許以一般向量友善指令格式以每指令為基礎來指定此等特徵。
寫入遮罩欄位與資料元件寬度欄位的組合產生具型式之指令,因為該等指令允許基於不同資料元件寬度來應用遮罩。
在類別A及類別B中所建立的各種指令模板在不同情形中有益。在本發明之一些實施例中,不同處理器或處理器內的不同核心可僅支援類別A,僅支援類別B,或支援上述兩種類別。舉例而言,意欲用於通用計算的高效能通用亂序核心可僅支援類別B,主要意欲用於圖形及/或科學(通量)計算之核心可僅支援類別A,且意欲用於上述兩種計算的核心可支援上述兩種類別(當然,具有來自兩種類別之模板及指令的某種混合但不具有來自兩種類別之所有模板及指令的核心在本發明之範圍內)。單個處理器亦可包括多個核心,所有該等核心支援相同類別,或其中不同核心支援不同類別。舉例而言,在具有分開的圖形及通用核心之處理器中,主要意欲用於圖形及/或科學計算之圖形核心中之一者可僅支援類別A,而通用核心中之一或多者可為僅支援類別B的高效能通用核心,其具有亂序執行及暫存器重新命名,意欲用於通用計算。不具有分開的圖形核心之另一處理器可包括支援類別A及類別B兩者的一或多個通用循序或亂序核心。當然,在本發明之不同實施例中,來自一個類別的特徵亦可實施於另一類別中。用高階語言撰寫之程式將被翻譯(例如,即時編譯或靜態編譯)成各種不同可執行形式,其中包括:1)僅具有目標處理器所支援執行之類別的指令之形式;或2)具有替代性常式且具有控制流碼 之形式,其中該等常式係使用所有類別的指令之不同組合來撰寫的,該控制流碼基於當前正在執行該碼的處理器所支援之指令來選擇要執行的常式。
示範性特定向量友善指令格式
圖22A係例示出根據本發明之實施例之示範性特定向量友善指令格式的方塊圖。圖22A展示出特定向量友善指令格式2200,該格式在以下意義上係特定的:其指定欄位之位置、大小、解譯及次序以及彼等欄位中之一些的值。特定向量友善指令格式2200可用來擴展x86指令集,且因此,該等欄位中之一些與現有x86指令集及其擴展(例如AVX)中所使用的欄位類似或相同。此格式保持與現有x86指令集以及擴展的前綴編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及立即值欄位一致。從圖21之欄位說明圖22A之欄位對映至該等欄位中。
應理解,雖然出於說明目的在一般向量友善指令格式2100的情況下參考特定向量友善指令格式2200來描述本發明之實施例,但除非主張,否則本發明不限於特定向量友善指令格式2200。例如,一般向量友善指令格式2100考量了各種欄位之各種可能大小,而特定向量友善指令格式2200被示出為具有特定大小的欄位。藉由特定實例,雖然在特定向量友善指令格式2200中將資料元件寬度欄位2164說明為一個位元的欄位,但本發明不限於此(亦即,一般向量友善指令格式2100考量了資料元件寬度欄位2164之其他大小)。
一般向量友善指令格式2100包括以下欄位,下文按圖22A中例示出之次序列出該等欄位。
EVEX前綴(位元組0-3)2202-以四位元組形式予以編碼。
格式欄位2140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)係格式欄位2140,且其含有0x62(在本發明之一實施例中,用來辨別向量友善指令格式的獨特值)。
第二至第四位元組(EVEX位元組1-3)包括提供特定能力之許多位元欄位。
REX欄位2205(VEX位元組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位元欄位相同,且係使用1的補數形式予以編碼,亦即,ZMM0係編碼為1111B,ZMM15係編碼為0000B。指令之其他欄位如此項技術中已知的來編碼暫存器索引之下三個位元(rrr、xxx及bbb),因此藉由增添EVEX.R、EVEX.X及EVEX.B而形成Rrrr、Xxxx及Bbbb。
REX’欄位2110-此係REX’欄位2110之第一部分,且係用來編碼擴展式32暫存器組的上16或下16個暫存器之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在本發明之一實施例中,以位元反轉格式儲存此位元與如下文所指示之其他位元,以區別於(以熟知的x86 32位元模 式)BOUND指令,其實際運算碼位元組為62,但在MOD R/M欄位(下文描述)中不接受MOD欄位中的值11;本發明之替代性實施例不以反轉格式儲存此位元與下文所指示之其他位元。使用值1來編碼下16個暫存器。換言之,藉由組合EVEX.R’、EVEX.R及來自其他欄位的其他RRR,形成R’Rrrr。
運算碼對映欄位2215(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱式引導運算碼位元組(0F、0F 38或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編碼以反轉(1的補數)形式指定的第一來源暫存器運算元,且針對具有兩個或兩個以上來源運算元的指令有效;2)EVEX.vvvv編碼針對某些向量移位以1的補數形式指定的目的地暫存器運算元;或3)EVEX.vvvv不編碼任何運算元,該欄位得以保留且應包含1111b。因此,EVEX.vvvv欄位2220編碼以反轉(1的補數)形式儲存的第一來源暫存器指定符之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前綴編碼欄位中;且在執行時間將其展開成舊式SIMD前綴,然後提供至解碼器之PLA(因此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.LL0、EVEX.LLB;亦由βββ說明)-如先前所描述,此欄位係內容脈絡特定的。
REX’欄位2110-此係REX’欄位之剩餘部分,且係 可用來編碼擴展式32暫存器組的上16或下16個暫存器之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。以位元反轉格式儲存此位元。使用值1來編碼下16個暫存器。換言之,藉由組合EVEX.V’、EVEX.vvvv,形成V’VVVV。
寫入遮罩欄位2170(EVEX位元組3,位元[2:0]-kkk)-其內容如先前所描述指定寫入遮罩暫存器中之暫存器的索引。在本發明之一實施例中,特定值EVEX.kkk=000之特殊作用係暗示不對特定指令使用寫入遮罩(此可以各種方式來實施,其中包括使用硬連線(hardwired)至所有硬體的寫入遮罩或繞過(bypass)遮蔽硬體之硬體)。
實際運算碼欄位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經正負號擴展,所以disp8僅可解決在-128與127位元組之間的位移;就64個位元組的快取列(cache line)而言,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超載(overload)至disp8*N。換言之,編碼規則或編碼長度無 變化,而僅僅係硬體對位移值的解譯有變化(硬體需要按記憶體運算元之大小來按比例縮放該位移以獲得逐個位元組的位址位移)。
立即值欄位2172如先前所描述而操作。
完整的運算碼欄位
圖22B係例示出特定向量友善指令格式2200的欄位之方塊圖,該等欄位組成根據本發明之一實施例之完整的運算碼欄位2174。具體而言,完整的運算碼欄位2174包括格式欄位2140、基本操作欄位2142及資料元件寬度(W)欄位2164。基本操作欄位2142包括前綴編碼欄位2225、運算碼對映欄位2215及實際運算碼欄位2230。
暫存器索引欄位
圖22C係例示出特定向量友善指令格式2200的欄位之方塊圖,該等欄位組成根據本發明之一實施例之暫存器索引欄位2144。具體而言,暫存器索引欄位2144包括REX欄位2205、REX’欄位2210、MODR/M.reg欄位2244、MODR/M.r/m欄位2246、VVVV欄位2220、xxx欄位2254及bbb欄位2256。
擴增操作欄位
圖22D係例示出特定向量友善指令格式2200的欄位之方塊圖,該等欄位組成根據本發明之一實施例之擴增操作欄位2150。當類別(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包括一個位元的SAE欄位2156及兩個位元的捨位操作欄位2158。當rs欄位2152A含有0(資料轉換2152A.2)時,β欄位2154(EVEX位元組3,位元[6:4]-SSS)被解譯為三個位元的資料轉換欄位2154B。當U=0且MOD欄位2242含有00、01或10(表示記憶體存取操作)時,α欄位2152(EVEX位元組3,位元[7]-EH)被解譯為收回提示(EH)欄位2152B且β欄位2154(EVEX位元組3,位元[6:4]-SSS)被解譯為三個位元的資料調處欄位2154C。
當U=1時,α欄位2152(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位2152C。當U=1且MOD欄位2242含有11(表示非記憶體存取操作)時,β欄位2154之部分(EVEX位元組3,位元[4]-S0)被解譯為RL欄位2157A;當RL欄位2157A含有1(捨位2157A.1)時,β欄位2154之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨位操作欄位2159A,而RL欄位2157A含有0(VSIZE 2157.A2)時,β欄位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個向量暫存器2310,其寬度為512個位元;此等暫存器被稱為zmm0至zmm31。下16個zmm暫存器的低位256個位元覆疊在暫存器ymm0-16上。下16個zmm暫存器的低位128個位元(ymm暫存器的低位128個位元)覆疊在暫存器xmm0-15上。特定向量友善指令格式800如下表中所說明對此等覆疊暫存器檔案進行操作。
換言之,向量長度欄位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)系統單晶片(system on a chip),其在與所描述CPU(有時被稱為應用核心或應用處理器)相同的晶粒上包括上述共處理器及額外功能性。接下來描述示範性核心架構,後續接著對示範性處理器及電腦架構的描述。
示範性核心架構 循序及亂序核心方塊圖
圖24A係例示出根據本發明之實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名亂序發佈/執行管線。圖24B係例示出如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架構核心,上述兩者將包括於根據本發明之實施例的處理器中。圖24A至圖24B之實線方框例示出循序管線及循序核心,虛線方框之選擇性增添說明暫存器重新命名亂序發佈/執行管線及核心。考慮到循序態樣係亂序態樣之子集,將描述亂序態樣。
圖24A中,處理管線2400包括擷取級段2402、長度解碼級段2404、解碼級段2406、分配級段2408、重新命名級段2410、排程(亦稱為分派或發佈)級段2412、暫存器讀取/記憶體讀取級段2414、執行級段2416、回寫/記憶體寫入級段2418、異常處置級段2422及確認級段2424。
圖24B示出處理器核心2490,其包括耦接至執行引擎單元2450之前端單元2430,且執行引擎單元2450及前端單元2430兩者皆耦接至記憶體單元2470。處理器核心2490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心,或者混合式或替代性核心類型。作為另一選擇,核心2490可為專用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或類似者。
前端單元2430包括耦接至指令快取記憶體單元 2434之分支預測單元2432,指令快取記憶體單元2434耦接至指令轉譯後備緩衝器(TLB)2436,指令TLB 2436耦接至指令擷取單元2438,指令擷取單元2438耦接至解碼單元2440。解碼單元2440(或解碼器)可解碼指令,且產生一或多個微操作、微碼進入點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。可使用各種不同機構來實施解碼單元2440。合適的機構之實例包括(但不限於)查找表、硬體實行方案、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心2490包括儲存用於某些巨集指令(macroinstruction)之微碼的微碼ROM或其他媒體(例如在解碼單元2440中,或者在前端單元2430內)。解碼單元2440耦接至執行引擎單元2450中的重新命名/分配器單元2452。
執行引擎單元2450包括重新命名/分配器單元2452,其耦接至引退(retirement)單元2454及一或多個排程器單元2456之集合。排程器單元2456表示任何數目個不同排程器,其中包括保留站、中央指令視窗等。排程器單元2456耦接至實體暫存器檔案單元2458。實體暫存器檔案單元2458中之每一者表示一或多個實體暫存器檔案,其中不同的實體暫存器檔案單元儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標器,即下一個待執行指令的位址)等。在一實施例中,實體暫存器檔案單元2458 包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構性向量暫存器、向量遮罩暫存器及通用暫存器。引退單元2454與實體暫存器檔案單元2458重疊,以說明可實施暫存器重新命名及亂序執行的各種方式(例如,使用重新排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器對照表及暫存器集區)。引退單元2454及實體暫存器檔案單元2458耦接至執行叢集2460。執行叢集2460包括一或多個執行單元2462之集合及一或多個記憶體存取單元2464之集合。執行單元2462可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)進行執行。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元2456、實體暫存器檔案單元2458及執行叢集2460被示出為可能係多個,因為某些實施例針對某些類型之資料/運算產生單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集;且在單獨的記憶體存取管線的情況下,所實施的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元2464)。亦應理解,在使用單獨的管線之情況下,此等管線中之一或多者可為亂序發佈/執行而其餘管線可 為循序的。
記憶體存取單元2464之集合耦接至記憶體單元2470,記憶體單元2470包括耦接至資料快取記憶體單元2474的資料TLB單元2472,資料快取記憶體單元2474耦接至2階(L2)快取記憶體單元2476。在一示範性實施例中,記憶體存取單元2464可包括載入單元、儲存位址單元及儲存資料單元,其中每一者耦接至記憶體單元2470中的資料TLB單元2472。指令快取記憶體單元2434進一步耦接至記憶體單元2470中的2階(L2)快取記憶體單元2476。L2快取記憶體單元2476耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由實例,示範性暫存器重新命名亂序發佈/執行核心架構可將管線2400實施如下:1)指令擷取2438執行擷取級段2402及長度解碼級段2404;2)解碼單元2440執行解碼級段2406;3)重新命名/分配單元2452執行分配級段2408及重新命名級段2410;4)排程器單元2456執行排程級段2412;5)實體暫存器檔案單元2458及記憶體單元2470執行暫存器讀取/記憶體讀取級段2414;執行叢集2460執行執行級段2416;6)記憶體單元2470及實體暫存器檔案單元2458執行回寫/記憶體寫入級段2418;7)異常處置級段2422中可涉及各種單元;及8)引退單元2454及實體暫存器檔案單元2458執行確認級段2424。
核心2490可支援一或多個指令集(例如,x86指令集(以及一些擴展,較新版本已新增該等擴展);MIPS Technologie公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(以及選擇性的額外擴展,諸如NEON)),其中包括本文中所描述之指令。在一實施例中,核心2490包括支援緊縮資料指令集擴展(例如,AVX1、AVX2)的邏輯,進而允許使用緊縮資料來執行許多多媒體應用所使用的操作。
應理解,該核心可支援多執行緒處理(multithreading)(執行操作或執行緒之兩個或兩個以上並行集合),且可以各種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理的各執行緒中之每一者提供一邏輯核心)或上述各者之組合(例如,經時間切割之擷取及解碼以及隨後同時的多執行緒處理,諸如在Intel®超多執行緒處理(Hyperthreading)技術中)。
雖然在亂序執行的情況下描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所說明實施例亦包括單獨的指令與資料快取記憶體單元2434/2474以及共享的L2快取記憶體單元2476,但替代性實施例可具有用於指令與資料兩者的單個內部快取記憶體,諸如1階(L1)內部快取記憶體或多階內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,外部快取記憶體在核心及/或處理器外部。或者,所有快取記憶體可在核心及/或處理器外部。
特定示範性循序核心架構
圖25A至圖25B例示出更特定的示範性循序核心架構之方塊圖,該核心將係晶片中的若干邏輯區塊(包括相同類型及/或不同類型的其他核心)中之一者。邏輯區塊經由高頻寬互連網路(例如環形網路)與一些固定功能邏輯、記憶體I/O介面及其他必要的I/O邏輯通訊,此取決於應用。
圖25A係根據本發明之實施例的單個處理器核心及其至晶粒上互連網路2502的連接以及其2階(L2)快取記憶體局域子集2504之方塊圖。在一實施例中,指令解碼器2500支援x86指令集與緊縮資料指令集擴展。L1快取記憶體2506允許對快取記憶體進行低延時存取,存取至純量單元及向量單元中。雖然在一實施例中(為了簡化設計),純量單元2508及向量單元2510使用單獨的暫存器組(分別使用純量暫存器2512及向量暫存器2514),且在純量單元2508與向量單元2510之間傳遞的資料被寫入至記憶體,然後自1階(L1)快取記憶體2506被讀回,但本發明之替代性實施例可使用不同方法(例如,使用單個暫存器組,或包括允許在兩個暫存器檔案之間傳遞資料而無需寫入及讀回的通訊路徑)。
L2快取記憶體局域子集2504係全域L2快取記憶體之部分,全域L2快取記憶體分成單獨的局域子集,每個處理器核心一個局域子集。每一處理器核心具有至其自有之L2快取記憶體局域子集2504的直接存取路徑。處理器核心所讀取之資料係儲存於其自有之L2快取記憶體子集2504中且可被快速存取,此存取係與其他處理器核心存取其自 有之局域L2快取記憶體子集2504並行地進行。由處理器核心所寫入之資料係儲存於其自有之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可為一或多個基板之部分及/或可使用許多處理技術(例如BiCMOS、CMOS或NMOS)中之任一者將處理器2600實施於一或多個基板上。
記憶體階層包括該等核心內的一或多階快取記憶體、一或多個共享快取記憶體單元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係示範性電腦架構之方塊圖。此項技術中已知的關於以下各者之其他系統設計及組配亦適合:膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器(network hub)、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、攜帶型媒體播放器、手持式裝置,以及各種其他電子裝置。一般而言,能夠併入如本文中所揭示之處理器及/或其他執行邏輯的多種系統或電子裝置通常適合。
現在參考圖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位於單個晶片中。
圖27中用間斷線表示額外處理器2715之可選擇性質。每一處理器2710、2715可包括本文中所描述之處理核心中之一或多者且可為處理器2600之某一版本。
記憶體2740可為,例如,動態隨機存取記憶體(DRAM)、相位變化記憶體(PCM),或上述兩者之組合。對於至少一個實施例,控制器集線器2720經由以下各者與處理器2710、2715通訊:諸如前端匯流排(FSB)之多分支匯流排(multi-drop bus)、諸如快速路徑互連(QuickPath Interconnect;QPI)之點對點介面,或類似連接2795。
在一實施例中,共處理器2745係專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。在一實施例 中,控制器集線器2720可包括整合型圖形加速器。
就優點量度範圍而言,實體資源2710與2715之間可能有各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性及類似者。
在一實施例中,處理器2710執行控制一般類型資料處理操作的指令。共處理器指令可嵌入該等指令內。處理器2710認定此等共處理器指令係應由已附接之共處理器2745執行的類型。因此,處理器2710在共處理器匯流排或其他互連上發佈此等共處理器指令(或表示共處理器指令的控制信號)至共處理器2745。共處理器2745接受並執行接收到之共處理器指令。
現在參考圖28,所展示為根據本發明之一實施例之第一更特定的示範性系統2800的方塊圖。如圖28中所示,多處理器系統2800係點對點互連系統,且包括第一處理器2870及第二處理器2880,該等處理器經由點對點互連2850予以耦接。處理器2870及2880中之每一者可為處理器1200之某一版本。在本發明之一實施例中,處理器2870及2880分別為處理器2710及2715,而共處理器2838為共處理器2745。在另一實施例中,處理器2870及2880分別為處理器2710共處理器2745。
所展示處理器2870及2880分別包括整合型記憶體控制器(IMC)單元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(諸如磁碟機或其他大容量儲存裝置),在一實施例中,儲存單元2828可包括指令/程式碼及資料2830。此外,音訊I/O 2824可耦接至第二匯流排2820。請注意,其他架構係可能的。例如,代替圖28之點對點架構,系統可實施多分支匯流排或其他此種架構。
現在參考圖29,所展示為根據本發明之一實施例之第二更特定的示範性系統2900的方塊圖。圖28圖29中的相似元件帶有相似參考數字,且圖29已省略圖28之某些態樣以避免混淆圖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)之設計資料的非暫時性有形機器可讀媒體,其中設計資料定義本文中所描述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式 產品。
仿真(包括二進位轉譯、程式碼漸變(code morphing)等)
在一些情況下,可使用指令轉換器將指令自來源指令集轉換成目標指令集。例如,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、漸變、仿真或以其他方式轉換成將由核心處理的一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可位於處理器上、位於處理器外部,或部分位於處理器上而部分位於處理器外部。
圖31係對照根據本發明之實施例之軟體指令轉換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所例示出之實施例中,指令轉換器係軟體指令轉換器,但指令轉換器或者可以軟體、韌體硬體、或其各種組合來實施。圖31展示出,可使用x86編譯器3104來編譯用高階語言3102撰寫的程式以產生x86二進位碼3106,x86二進位碼3106自然可由具有至少一個x86指令集核心之處理器3116執行。具有至少一個x86指令集核心之處理器3116表示可執行與具有至少一個x86指令集核心之Intel處理器大體相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分或(2)旨在在具有至少一個x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以便達成與具有至少一個x86指令集核心之Intel處理器大體相同的結果。x86 編譯器3104表示可操作以產生x86二進位碼3106(例如目標碼)之編譯器,其中x86二進位碼3106在經額外連結處理或未經額外連結處理的情況下可在具有至少一個x86指令集核心之處理器3116上執行。類似地,圖31展示出,可使用替代性指令集編譯器3108來編譯用高階語言3102撰寫的程式以產生替代性指令集二進位碼3110,替代性指令集二進位碼3110自然可由不具有至少一個x86指令集核心之處理器3114(例如,具有多個核心的處理器,該等核心執行MIPS Technologie公司(Sunnyvale,CA)之MIPS指令集,及/或該等核心執行ARM Holdings公司(Sunnyvale,CA)之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 (30)

  1. 一種方法,其包含下列步驟:接收一指令,該指令指示一目的地儲存位置;及回應於該指令將一結果儲存於該目的地儲存位置中,該結果包括依數值排序的至少四個非負整數之一序列,其中在連續位置中的所有整數相差至少為二的一常數步幅,其中儲存包括該等至少四個整數之該序列的該結果係在無需使用一先前指令之一結果來計算該等至少四個整數的情況下執行。
  2. 如申請專利範圍第1項之方法,其中接收該指令之步驟包含接收一控制索引產生指令,且其中儲存該結果之步驟包含將該等至少四個整數之該序列儲存為至少四個對應的控制索引。
  3. 如申請專利範圍第1項之方法,其中儲存依數值排序的該等整數係由該指令之一運算碼所確定,其中在該等連續位置中的該等整數相差一常數步幅。
  4. 如申請專利範圍第1項之方法,其中接收該指令之步驟包含接收一指定該常數步幅的指令。
  5. 如申請專利範圍第1項之方法,其中接收該指令之步驟包含接收一指定一整數偏移量的指令,且其中儲存之步驟包含儲存該等至少四個整數中之一最小整數,該最小整數與零相差該整數偏移量。
  6. 如申請專利範圍第1項之方法,其中接收該指令之步驟 包含接收一不指示在一架構上可見的儲存位置中之一來源運算元的指令。
  7. 如申請專利範圍第1項之方法,其中儲存該結果之步驟包含將依數值排序的至少四個非負連續同奇偶性(parity)整數之一序列儲存於該目的地儲存位置中。
  8. 如申請專利範圍第1項之方法,其中儲存該結果之步驟包含儲存以下各者中之一者:0,2,4,6,8,10,12,14;0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30;及0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62。
  9. 如申請專利範圍第1項之方法,其中儲存該結果之步驟包含儲存以下各者中之一者:1,3,5,7,9,11,13,15;1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31;及1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63。
  10. 如申請專利範圍第1項之方法,其中儲存該結果之步驟包含儲存依數值排序的至少八個非負整數之一序列,其中在連續位置中的所有整數相差該常數步幅。
  11. 如申請專利範圍第1項之方法,其進一步包含自一非架構上可見的唯讀儲存位置存取依數值排序的至少四個 非負整數之一序列,該唯讀儲存位置與一執行該指令的執行單元一起在晶粒上。
  12. 一種設備,其包含:一目的地儲存位置;及一與該目的地儲存位置耦接的執行單元,該執行單元回應於一指示該目的地儲存位置的指令而將一結果儲存於該目的地儲存位置中,該結果包括依數值排序的至少四個非負整數之一序列,其中在連續位置中的所有整數相差至少為二的一常數步幅,其中該執行單元將在無需使用一先前指令之一結果來計算該等至少四個整數的情況下儲存包括該等至少四個整數之該序列的該結果。
  13. 如申請專利範圍第12項之設備,其中該指令包含一控制索引產生指令,且其中該執行單元將回應於該指令而將該等至少四個非負整數之該序列儲存為至少四個對應的控制索引。
  14. 如申請專利範圍第12項之設備,其中該指令之一運算碼確定該執行單元將儲存依數值排序的該等整數,其中在該等連續位置中的該等整數相差一常數步幅。
  15. 如申請專利範圍第12項之設備,其中該指令將指定該常數步幅。
  16. 如申請專利範圍第12項之設備,其中該指令將指定一整數偏移量,且其中該執行單元將儲存該等至少四個整數中之一最小整數,該最小整數與零相差該整數偏移量。
  17. 如申請專利範圍第12項之設備,其中該指令將指示該常數步幅且將指示一整數偏移量,且其中該執行單元將儲存該等至少四個整數中之一最小整數,該最小整數與零相差該整數偏移量。
  18. 如申請專利範圍第12項之設備,其中該指令不指示在一架構上可見的儲存位置中的一來源運算元。
  19. 如申請專利範圍第12項之設備,其中該執行單元將回應於該指令而將依數值排序的至少四個非負連續同奇偶性整數之一序列儲存於該目的地儲存位置中。
  20. 如申請專利範圍第12項之設備,其中該執行單元將回應於該指令而儲存以下各者中之一者:0,2,4,6,8,10,12,14;0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30;及0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62。
  21. 如申請專利範圍第12項之設備,其中該執行單元將回應於該指令而儲存以下各者中之一者:1,3,5,7,9,11,13,15;1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31;及1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63。
  22. 如申請專利範圍第12項之設備,其中該執行單元將回應 於該指令而儲存依數值排序的至少八個非負整數之一序列,其中在連續位置中的所有整數相差至少為二的該常數步幅。
  23. 如申請專利範圍第19項之設備,其中該執行單元將回應於該指令而儲存依數值排序的至少三十二個非負整數之一序列,其中在連續位置中的所有整數相差至少為二的該常數步幅。
  24. 如申請專利範圍第12項之設備,其進一步包含一非架構上可見的儲存位置,該儲存位置與該執行單元一起在晶粒上且該儲存位置儲存該等至少四個非負整數之該序列,且其中該執行單元將回應於該指令而自該非架構上可見的儲存位置存取該等至少四個非負整數之該序列。
  25. 一種系統,其包含:一互連;一與該互連耦接的處理器,該處理器包括一目的地暫存器,該處理器將回應於一指示該目的地暫存器的指令而將一結果儲存於該目的地暫存器中,該結果包括依數值排序的至少四個非負整數之一序列,其中在連續位置中的所有整數相差至少為二的一常數步幅,其中該處理器將回應於一不指示在一架構上可見的儲存位置中之一來源緊縮資料運算元的指令而儲存該結果,該來源緊縮資料運算元具有多個緊縮資料元件;及一與該互連耦接的動態隨機存取記憶體(DRAM)。
  26. 如申請專利範圍第25項之系統,其中該指令包含一具有一運算碼的指令,該運算碼確定該處理器將儲存依數值排序的該等至少四個整數,其中在該等連續位置中的該等整數相差一常數步幅。
  27. 如申請專利範圍第25項之系統,其中該指令將指定該常數步幅。
  28. 一種製造物品,其包含:一包括一或多個固態資料儲存材料的機器可讀儲存媒體,該機器可讀儲存媒體儲存一指令,該指令將指示一目的地儲存位置,且該指令若由一機器執行,則將導致該機器執行多個操作,該等操作包含:將一結果儲存於該目的地儲存位置中,該結果包括依數值排序的至少四個非負整數之一序列,其中在連續位置中的所有整數相差至少為二的一常數步幅,其中該指令不指示在一架構上可見的儲存位置中之一來源緊縮資料運算元,該來源緊縮資料運算元具有多個緊縮資料元件。
  29. 如申請專利範圍第28項之物品,其中該指令之一運算碼確定該等至少四個整數將依數值排序被儲存。
  30. 如申請專利範圍第28項之物品,其中該指令將指定該常數步幅。
TW101146865A 2011-12-22 2012-12-12 用以產生整數序列的方法、設備、系統及製造物品 TWI499976B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067014 WO2013095564A1 (en) 2011-12-22 2011-12-22 Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride

Publications (2)

Publication Number Publication Date
TW201337752A true TW201337752A (zh) 2013-09-16
TWI499976B TWI499976B (zh) 2015-09-11

Family

ID=48669205

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101146865A TWI499976B (zh) 2011-12-22 2012-12-12 用以產生整數序列的方法、設備、系統及製造物品

Country Status (4)

Country Link
US (2) US10866807B2 (zh)
CN (1) CN104011644B (zh)
TW (1) TWI499976B (zh)
WO (1) WO2013095564A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI581182B (zh) * 2014-12-14 2017-05-01 上海兆芯集成電路有限公司 用以改善在處理器中重新執行載入之裝置與方法
TWI587215B (zh) * 2014-03-28 2017-06-11 英特爾股份有限公司 排序加速度處理器,方法,系統,及指令
TWI733825B (zh) * 2016-07-08 2021-07-21 英商Arm股份有限公司 用於執行重新排列操作的設備及方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
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
US9037840B2 (en) 2012-06-29 2015-05-19 Intel Corporation Mechanism to provide workload and configuration-aware deterministic performance for microprocessors
US9494996B2 (en) 2013-03-15 2016-11-15 Intel Corporation Processor having frequency of operation information for guaranteed operation under high temperature events
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US10489155B2 (en) * 2015-07-21 2019-11-26 Qualcomm Incorporated Mixed-width SIMD operations using even/odd register pairs for wide data elements
US10503502B2 (en) 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
DE102016211386A1 (de) * 2016-06-14 2017-12-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US11169809B2 (en) * 2017-03-31 2021-11-09 Intel Corporation Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements
US20190102187A1 (en) * 2017-09-30 2019-04-04 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

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6230253B1 (en) 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
US6334176B1 (en) 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6327651B1 (en) 1998-09-08 2001-12-04 International Business Machines Corporation Wide shifting in the vector permute unit
FR2785406B1 (fr) 1998-10-30 2004-09-10 Thomson Marconi Sonar Sas Memoire a acces vectoriel
US6266759B1 (en) * 1998-12-14 2001-07-24 Cray, Inc. Register scoreboarding to support overlapped execution of vector memory reference instructions in a vector processor
US6185672B1 (en) * 1999-02-19 2001-02-06 Advanced Micro Devices, Inc. Method and apparatus for instruction queue compression
US6591342B1 (en) 1999-12-14 2003-07-08 Intel Corporation Memory disambiguation for large instruction windows
US7155601B2 (en) 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
JP3955741B2 (ja) 2001-04-02 2007-08-08 株式会社リコー ソート機能を有するsimd型マイクロプロセッサ
KR100677207B1 (ko) 2001-04-13 2007-02-05 엘지전자 주식회사 Simd 디지탈 신호 처리기 및 연산방법
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
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US20030188143A1 (en) 2002-03-28 2003-10-02 Intel Corporation 2N- way MAX/MIN instructions using N-stage 2- way MAX/MIN blocks
DE10217857C1 (de) * 2002-04-22 2003-10-02 Oce Printing Systems Gmbh Verfahren und Vorrichtung zum Zugriff auf Druckdaten, auf Daten und Verfahren zum Zugriff auf Ressourcen
US6671710B2 (en) 2002-05-10 2003-12-30 Energy Conversion Devices, Inc. Methods of computing with digital multistate phase change materials
US7028168B2 (en) 2002-12-05 2006-04-11 Hewlett-Packard Development Company, L.P. System and method for performing matrix operations
US7293056B2 (en) 2002-12-18 2007-11-06 Intel Corporation Variable width, at least six-way addition/accumulation instructions
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
GB2409062C (en) 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
US7502865B2 (en) 2003-12-18 2009-03-10 Intel Corporation Addresses assignment for adaptor interfaces
US7370180B2 (en) 2004-03-08 2008-05-06 Arm Limited Bit field extraction with sign or zero extend
US7328230B2 (en) 2004-03-26 2008-02-05 Intel Corporation SIMD four-data element average instruction
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7383427B2 (en) 2004-04-22 2008-06-03 Sony Computer Entertainment Inc. Multi-scalar extension for SIMD instruction set processors
US20050278505A1 (en) 2004-05-19 2005-12-15 Lim Seow C Microprocessor architecture including zero impact predictive data pre-fetch mechanism for pipeline data memory
US7216218B2 (en) 2004-06-02 2007-05-08 Broadcom Corporation Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations
US7725678B2 (en) * 2005-02-17 2010-05-25 Texas Instruments Incorporated Method and apparatus for producing an index vector for use in performing a vector permute operation
US7933405B2 (en) 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
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
US7529918B2 (en) 2006-07-21 2009-05-05 Broadcom Corporation System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor
US7536532B2 (en) * 2006-09-27 2009-05-19 International Business Machines Corporation Merge operations of data arrays based on SIMD instructions
US7725690B2 (en) 2007-02-13 2010-05-25 Advanced Micro Devices, Inc. Distributed dispatch with concurrent, out-of-order dispatch
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
US8051037B2 (en) 2008-01-25 2011-11-01 Samsung Electronics Co., Ltd. System and method for pseudorandom permutation for interleaving in wireless communications
US20090254736A1 (en) 2008-04-07 2009-10-08 Arm Limited Data processing system for performing data rearrangement operations
US8255884B2 (en) 2008-06-06 2012-08-28 International Business Machines Corporation Optimized scalar promotion with load and splat SIMD instructions
US7865693B2 (en) 2008-10-14 2011-01-04 International Business Machines Corporation Aligning precision converted vector data using mask indicating offset relative to element boundary corresponding to precision type
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
US20100115233A1 (en) 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
CN101504600B (zh) 2009-01-21 2014-05-07 北京红旗胜利科技发展有限责任公司 一种用于微处理器的数据传输方法以及一种微处理器
US9086872B2 (en) 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US8504807B2 (en) 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag
CN103189837B (zh) 2011-10-18 2016-12-28 松下知识产权经营株式会社 混洗模式生成电路、处理器、混洗模式生成方法、命令
WO2013095563A1 (en) 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
WO2013095555A1 (en) 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems, and instructions
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
CN104011645B (zh) 2011-12-22 2018-06-26 英特尔公司 用于产生其中在连续位置中的整数相差恒定整数跨度且最小整数从零偏移整数偏移量的整数序列的处理器、方法、系统和含有指令的介质
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
CN108475192B (zh) 2015-12-24 2023-06-02 英特尔公司 分散减少指令

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI587215B (zh) * 2014-03-28 2017-06-11 英特爾股份有限公司 排序加速度處理器,方法,系統,及指令
US9766888B2 (en) 2014-03-28 2017-09-19 Intel Corporation Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements
TWI581182B (zh) * 2014-12-14 2017-05-01 上海兆芯集成電路有限公司 用以改善在處理器中重新執行載入之裝置與方法
TWI733825B (zh) * 2016-07-08 2021-07-21 英商Arm股份有限公司 用於執行重新排列操作的設備及方法

Also Published As

Publication number Publication date
TWI499976B (zh) 2015-09-11
WO2013095564A1 (en) 2013-06-27
US20210263743A1 (en) 2021-08-26
CN104011644B (zh) 2017-12-08
US10866807B2 (en) 2020-12-15
CN104011644A (zh) 2014-08-27
US20130283019A1 (en) 2013-10-24
US11650820B2 (en) 2023-05-16

Similar Documents

Publication Publication Date Title
TWI499976B (zh) 用以產生整數序列的方法、設備、系統及製造物品
TWI525536B (zh) 封裝資料重排控制指標前標產生處理器、方法、系統及指令
TWI518590B (zh) 多暫存器聚集指令
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI470544B (zh) 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法
TWI517031B (zh) 用於呈現各別複數之複數共軛根之向量指令
TWI647613B (zh) 用於產生按數字順序的連續整數序列之處理器、方法、系統及指令(三)
TWI502492B (zh) 封裝資料重整控制索引產生處理器、方法、系統及指令
TWI630548B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI511043B (zh) 用以產生整數的序列之方法、裝置、系統及製造物品
TWI599950B (zh) 用於摩頓座標調整之處理器,方法,系統,及製造物件
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
TWI525538B (zh) 超級乘加(super madd)指令技術
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI582692B (zh) 三維摩頓座標轉換處理器,方法,系統,及指令
TWI481991B (zh) 改良型排列指令之裝置及方法
TW201337743A (zh) 用於使用輸入寫入遮罩與立即值自來源寫入遮罩暫存器在目的地寫入遮罩暫存器中設定輸出遮罩之系統、設備及方法
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TWI567640B (zh) 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器
TWI644256B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統

Legal Events

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