TWI473015B - 執行向量頻率擴展指令之方法、處理器核心以及製品 - Google Patents

執行向量頻率擴展指令之方法、處理器核心以及製品 Download PDF

Info

Publication number
TWI473015B
TWI473015B TW101149330A TW101149330A TWI473015B TW I473015 B TWI473015 B TW I473015B TW 101149330 A TW101149330 A TW 101149330A TW 101149330 A TW101149330 A TW 101149330A TW I473015 B TWI473015 B TW I473015B
Authority
TW
Taiwan
Prior art keywords
vector
source
field
instruction
register
Prior art date
Application number
TW101149330A
Other languages
English (en)
Other versions
TW201344573A (zh
Inventor
Elmoustapha Ould-Ahmed-Vall
Suleyman Sair
Kshitij A Doshi
Charles R Yount
Bret L Toll
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 TW201344573A publication Critical patent/TW201344573A/zh
Application granted granted Critical
Publication of TWI473015B publication Critical patent/TWI473015B/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

執行向量頻率擴展指令之方法、處理器核心以及製品
發明領域
本發明領域大體而言係關於電腦處理器架構,且更具體言之,係關於向量頻率擴展指令。
發明背景
指令集或指令集架構(ISA)為電腦架構之與程式規劃有關的部分,且可包括原生資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置,以及外部輸入及輸出(I/O)。應注意,指令一詞在本文中大體係指巨集指令(macroinstruction),亦即,提供至處理器以供執行的指令,其與微指令或微操作(micro-op)相對,微指令或微操作係由處理器之解碼器對巨集指令進行解碼產生)。指令集架構與微架構相區分,微架構為實行ISA之處理器的內部設計。具有不同微架構之處理器可共用共同指令集。
指令集包括一或多個指令格式。給定指令格式界定各種欄位(位元數目、位元位置)來尤其指定將執行的運算及將被執行該運算的運算元。給定指令係使用給定指令格式來表達且指定運算及運算元。指令流為指令之特定序 列,其中該序列中之每一指令為以指令格式出現之指令。
科學、金融、自動向量化通用、RMS(辨識、探勘及合成)/視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊調處)常常需要對大量資料項執行相同操作(稱為「資料數據平行性」)。單指令多資料(SIMD)係指使得處理器對多個資料項執行相同操作之一種類型的指令。SIMD技術尤其適合於在邏輯上可將暫存器中之位元劃分為數個固定大小資料元件之處理器,該等資料元件中之每一者表示一分開的值。例如,64位元暫存器中之位元可指定為將要在4個獨立的16位元資料元件上操作的來源運算元,該等資料元件中之每一者代表一個獨立的16位元值。作為另一實例,256位元暫存器中之位元可作為以下各者而被指定為將被操作之來源運算元:4個獨立64位元緊縮資料元件(四字組(Q)大小資料元件)、8個獨立32位元緊縮資料元件(雙字組(D)資料元件)、16個獨立16位元緊縮資料元件(字組(W)大小資料元件),或32個獨立8位元資料元件(位元組(B)大小資料元件)。此類型的資料稱為緊縮資料類型或向量資料類型,且此資料類型之運算元稱為緊縮資料運算元或向量運算元。換言之,緊縮資料項或向量係指一序列緊縮資料元件,且緊縮資料運算元或向量運算元為SIMD指令(亦稱為緊縮資料指令或向量指令)之來源運算元或目的地運算元。
舉例而言,SIMD指令的一種類型指定將以垂直方式對兩個來源向量運算元執行單一向量操作,以生成相 同大小、具有相同數目的資料元件且處於相同資料元件次序的目的地向量運算元(亦稱為結果向量運算元)。來源向量運算元中之資料元件稱為來源資料元件,而目的地向量運算元中之資料元件稱為目的地資料元件或結果資料元件。此等來源向量運算元具有相同大小且含有具有相同寬度的資料元件,且因此其含有相同數目個資料元件。在兩個來源向量運算元中處於相同位元位置的來源資料元件形成資料元件對(亦稱為對應資料元件;亦即,每一來源運算元之資料元件位置0中的資料元件相對應,每一來源運算元之資料元件位置1中的資料元件相對應,依此類推)。由該SIMD指令指定之操作對於來源資料元件之此等對中的每一者分開執行,以生成匹配數目個結果資料元件,且因此每一對資料元件具有一對應結果資料元件。由於該操作為垂直的且由於結果向量運算元為相同大小、具有相同數目個資料元件,且結果資料元件係以與來源向量運算元相同之資料元件次序儲存,因此結果資料元件在結果向量運算元中處於與其在來源向量運算元中之對應來源資料元件對相同的位元位置。除了此示範性類型的SIMD指令之外,亦存在多種其他類型的SIMD指令(例如,具有僅一個或具有兩個以上來源向量運算元、以水平方式操作、生成具有不同大小的結果向量運算元、具有不同大小的資料元件,及/或具有不同資料元件次序)。應理解,目的地向量運算元(或目的地運算元)一詞係定義為執行由一指令指定之運算的直接結果,包括將該目的地運算元儲存於一位置(不管其 為暫存器還是由該指令指定之記憶體位置),以使得其可由另一指令作為來源運算元而存取(藉由由該另一指令指定相同位置。
某些指令集架構允許多個向量運算及純量運算並行地完成且更新指令集架構暫存器集。可有效利用此等指令集架構以實行壓縮/解壓縮(亦稱為擴展)指令及演算法,該等演算法諸如基於運行長度編碼(RLE)之指令。
RLE係無失真資料壓縮之一形式,其中當資料流中之資料之序列含有一或多組連續資料值時,壓縮該等序列。而非儲存該組連續資料值中的每一資料元件,儲存具有值之單個元件,該單個元件之後為具有連續元件之計數的元件。此形式之壓縮對於含有許多此等連串之資料最有用。
例如,零為基的壓縮/解壓縮利用資料流中頻繁出現的零元件。在一些資料類型中,尤其與圖形處理相關聯之資料,顯著部分的資料含有值零且亦含有許多連串零係常見的。基於零之RLE通常被稱為零基壓縮。然而若壓縮將受益於正選擇的另一RLE值,則其他RLE方案可基於除零之外的值。
依據本發明之一實施例,係特地提出一種在一電腦處理器中執行一向量頻率擴展指令之方法,該方法包含:擷取該向量頻率擴展指令,該向量頻率擴展指令包括一來源運算元及一目的地運算元,其中該來源運算元指定 一來源向量暫存器,該來源向量暫存器包括一或多對的一值及運行長度,其需基於該運行長度被擴展為該值之一連串;解碼該擷取的向量頻率擴展指令;以及執行該解碼的向量頻率擴展指令,導致該來源向量暫存器中之一組一或多個來源資料元件被擴展為一組目的地資料元件,該組目的地資料元件包含比該組來源資料元件更多的元件且包括至少一個連串的相等值,該等相等值在該來源向量暫存器中經運行長度編碼。
100‧‧‧向量頻率擴展指令
105‧‧‧目的地運算元
110‧‧‧向量遮罩MASK
115‧‧‧來源運算元
120‧‧‧未使用元件控制遮罩
125‧‧‧未使用元件計數
130‧‧‧即時值之選擇性運算元
200‧‧‧指令
205‧‧‧目的地
210‧‧‧MASK
215‧‧‧來源
230‧‧‧即時
310~320‧‧‧操作
402‧‧‧VEX前綴
405‧‧‧REX欄位
415‧‧‧運算碼對映欄位
420‧‧‧VEX.vvvv
425‧‧‧前綴編碼欄位
430‧‧‧實際運算碼欄位
440‧‧‧Mod R/M位元組
442‧‧‧基本操作欄位
444‧‧‧暫存器索引欄位
446‧‧‧R/M欄位
450‧‧‧SIB位元組
452‧‧‧SS
454‧‧‧SIB.xxx
456‧‧‧SIB.bbb
462‧‧‧位移欄位
464‧‧‧W欄位
468‧‧‧大小欄位
472‧‧‧立即欄位(IMM8)
474‧‧‧完整的運算碼欄位
500‧‧‧一般向量友善指令格式
505‧‧‧非記憶體存取
510‧‧‧非記憶體存取、完全捨入控制型操作
512‧‧‧非記憶體存取、寫入遮罩控制、部分捨入控制型操作
515‧‧‧資料變換型操作
517‧‧‧非記憶體存取、寫入遮罩控制、vsize型操作
520‧‧‧記憶體存取
525‧‧‧記憶體存取、暫時
527‧‧‧記憶體存取、寫入遮罩控制
530‧‧‧記憶體存取、非暫時
540‧‧‧格式欄位
542‧‧‧基本操作欄位
544‧‧‧暫存器位址欄位
546‧‧‧修飾符欄位
550‧‧‧擴增操作欄位
552‧‧‧α欄位
552A‧‧‧RS欄位
552A.1‧‧‧捨入
552A.2‧‧‧資料變換
552B‧‧‧收回提示欄位
552B.1‧‧‧暫時
552B.2‧‧‧非暫時
552C‧‧‧寫入遮罩控制(Z)欄位
554‧‧‧β欄位
554A‧‧‧捨入控制欄位
554B‧‧‧資料變換欄位
554C‧‧‧資料調處欄位
556‧‧‧抑制所有浮點異常(SAE)欄位
557A‧‧‧RL欄位
557A.1‧‧‧捨入欄位
557A.2‧‧‧向量長度(VSIZE)
557B‧‧‧廣播欄位
558‧‧‧捨入操作控制欄位
559A‧‧‧捨入操作欄位
559B‧‧‧向量長度欄位
560‧‧‧比例欄位
562A‧‧‧位移欄位
562B‧‧‧位移因數欄位
564‧‧‧資料元件寬度欄位
568‧‧‧類別欄位
568A‧‧‧類別A
568B‧‧‧類別B
570‧‧‧寫入遮罩欄位
572‧‧‧立即欄位
574‧‧‧完整的運算碼欄位
600‧‧‧特定向量友善指令格式
602‧‧‧EVEX前綴
605‧‧‧REX欄位
610‧‧‧REX’欄位
615‧‧‧運算碼對映欄位
620‧‧‧EVEX.vvvv欄位
625‧‧‧前綴編碼欄位
630‧‧‧實際運算碼欄位
640‧‧‧MOD R/M欄位
642‧‧‧MOD欄位
644‧‧‧Reg欄位
646‧‧‧R/M欄位
654‧‧‧SIB.xxx
656‧‧‧SIB.bbb
700‧‧‧暫存器架構
710‧‧‧向量暫存器
715‧‧‧寫入遮罩暫存器
725‧‧‧通用暫存器
745‧‧‧純量浮點堆疊暫存器檔案
750‧‧‧MMX緊縮整數平板暫存器檔案
800‧‧‧處理器管線
802‧‧‧擷取階段
804‧‧‧長度解碼階段
806‧‧‧解碼階段
808‧‧‧分配階段
810‧‧‧重新命名階段
812‧‧‧排程階段
814‧‧‧暫存器讀取/記憶體讀取階段
816‧‧‧執行階段
818‧‧‧寫回/記憶體寫入階段
822‧‧‧異常處置階段
824‧‧‧確認階段
830‧‧‧前端單元
832‧‧‧分支預測單元
834‧‧‧指令快取記憶體單元
836‧‧‧指令轉譯後備緩衝器(TLB)
838‧‧‧指令擷取單元
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧重新命名/分配器單元
854‧‧‧引退單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔案單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料TLB單元
874‧‧‧資料快取記憶體單元
876‧‧‧L2快取記憶體單元
900‧‧‧指令解碼器
902‧‧‧互連網路
904‧‧‧L2快取記憶體區域子集
906‧‧‧L1快取記憶體
906A‧‧‧L1資料快取記憶體
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧拌和單元
922A、922B‧‧‧數值轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
928‧‧‧寬度為16之ALU
1000‧‧‧處理器
1002A-N‧‧‧核心
1004A-N‧‧‧快取記憶體單元
1006‧‧‧共享快取記憶體單元
1008‧‧‧特殊用途邏輯
1010‧‧‧系統代理
1012‧‧‧環式互連單元
1014‧‧‧整合型記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110、1115‧‧‧處理器
1120‧‧‧控制器集線器
1140‧‧‧記憶體
1145‧‧‧共處理器
1150‧‧‧輸入/輸出集線器
1160‧‧‧輸入/輸出(I/O)裝置
1190‧‧‧圖形記憶體控制器集線器(GMCH)
1195‧‧‧連接
1200‧‧‧第一更特定的示範性系統
1214、1314‧‧‧I/O裝置
1215‧‧‧額外處理器
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋接器
1220‧‧‧第二匯流排
1222‧‧‧鍵盤及/或滑鼠
1224‧‧‧音訊I/O
1227‧‧‧通訊裝置
1228‧‧‧儲存單元
1230‧‧‧指令/程式碼及資料
1232、1234‧‧‧記憶體
1238‧‧‧共處理器
1239‧‧‧高效能介面
1250‧‧‧點對點互連
1252、1254、1286、1288‧‧‧P-P介面
1270‧‧‧第一處理器
1272‧‧‧整合型記憶體控制器(IMC)單元
1276、1278‧‧‧點對點(P-P)介面
1280‧‧‧第二處理器
1282‧‧‧整合型記憶體控制器(IMC)單元
1290‧‧‧晶片組
1294、1298‧‧‧點對點介面電路
1296‧‧‧介面
1300‧‧‧第二更特定的示範性系統
1315‧‧‧舊式I/O裝置
1400‧‧‧系統單晶片
1402‧‧‧互連單元
1410‧‧‧應用處理器
1420‧‧‧共處理器
1430‧‧‧靜態隨機存取記憶體(SRAM)單元
1432‧‧‧直接記憶體存取(DMA)單元
1440‧‧‧顯示單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二進位碼
1508‧‧‧替代性指令集編譯器
1510‧‧‧替代性指令集二進位碼
1512‧‧‧指令轉換器
1514‧‧‧不具有至少一個x86指令集核心之處理器
1516‧‧‧具有至少一個x86指令集核心之處理器
本發明可最佳地藉由參考以下描述及用來例示出本發明之實施例之隨附圖式來理解。在圖式中:圖1例示出根據一實施例之向量頻率擴展指令之示範性執行;圖2例示出根據一實施例之向量頻率擴展指令之示範性執行;圖3係例示出根據一實施例之用於藉由在處理器中執行向量頻率擴展指令將值自來源向量暫存器擴展至目的地向量暫存器之示範性操作的流程圖;圖4A例示出根據一實施例之示範性AVX指令格式,其包括VEX前綴、實際運算碼欄位、Mod R/M位元組、SIB位元組、位移欄位及IMM8;圖4B根據一實施例例示出圖4A的哪些欄位組成完整的運算碼欄位以及基本操作欄位;圖4C根據一實施例例示出圖4A的哪些欄位組 成暫存器索引欄位;圖5A係例示出根據本發明之實施例之一般向量友善指令格式及其類別A指令模板的方塊圖;圖5B係例示出根據本發明之實施例之一般向量友善指令格式及其類別B指令模板的方塊圖圖6A係例示出根據本發明之實施例之示範性特定向量友善指令格式的方塊圖;圖6B係例示出圖6A之特定向量友善指令格式的欄位之方塊圖,該等欄位組成根據本發明之一實施例之完整的運算碼欄位;圖6C係例示出特定向量友善指令格式的欄位之方塊圖,該等欄位組成根據本發明之一實施例之暫存器索引欄位;圖6D係例示出特定向量友善指令格式的欄位之方塊圖,該等欄位組成根據本發明之一實施例之擴增操作欄位;圖7係根據本發明之一實施例之暫存器架構的方塊圖;圖8A係例示出根據本發明之實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名亂序發佈/執行管線;圖8B係例示出如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架構核心,上述兩者將包括於根據本發明之實施例的 處理器中;圖9A係根據本發明之實施例的單個處理器核心及其至晶粒上互連網路的連接以及其2階(L2)快取記憶體之區域子集之方塊圖;圖9B係根據本發明之實施例的圖9A中之處理器核心之部分的展開圖;圖10係根據本發明之實施例之處理器的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件;圖11係根據本發明之一實施例之系統的方塊圖;圖12係根據本發明之一實施例之第一更特定的示範性系統之方塊圖;圖13係根據本發明之一實施例之第二更特定的示範性系統之方塊圖;圖14係根據本發明之一實施例之SoC(系統單晶片)的方塊圖;以及圖15係根據本發明之實施例之對照軟體指令轉換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。
在以下描述中,闡述眾多具體細節。然而,應理解,可在無此等具體細節之情況下實踐本發明之實施例。在其他實例中,尚未詳細展示熟知電路、結構及技術以不 致混淆對此描述之理解。
說明書中所參考之「一個實施例」、「一實施例」、「示例性實施例」等指示所描述之實施例可能包括特定特徵、結構或特性,但每一實施例可不必包括該特定特徵、結構或特性。此外,該等詞語不必代表相同實施例。另外,在描述與一實施例有關之特定特徵、結構或特性時,認為無論是否明確描述,對與其他實施例有關之此特徵、結構或特性的影響係在熟習此項技術者之知識範圍。
圖1例示出根據一實施例之向量頻率擴展指令之示範性執行。向量頻率擴展指令實行RLE,使得基於在一組來源資料元件中與長度指示一起出現的預定值之外觀來擴展該組來源資料元件。例如,之後為七的零將指示應將一連串七個零拷貝至目的地向量中。
向量頻率擴展指令100包括目的地運算元105及來源運算元115。向量頻率擴展指令100屬於指令集架構,且指令100在指令流內之每一「出現」將包括目的地運算元105及來源運算元115內之值。在此實例中,目的地運算元105及來源運算元115兩者係向量暫存器(諸如128-位元暫存器、256-位元暫存器、512-位元暫存器)。向量暫存器可為具有16個32-位元資料元件之zmm暫存器,然而,可使用其他資料元件及暫存器大小,諸如xmm暫存器或ymm暫存器及16-位元資料元件或64-位元資料元件。因此,來源運算元115及目的地運算元105係例示為具有16個資料元件,對於使用0索引符號之第一元件標記為 ele[0],其中第一元件在0位置中。每一運算元之最後元件則標記為ele[15]。
由來源運算元指定之來源向量暫存器之內容包括多個來源資料元件。如圖1中所例示,索引0處之來源資料元件含有值54。索引1及索引2處之來源資料元件含有值0及值7。索引3至索引5處之來源資料元件含有值35。索引6處之來源資料元件含有值12,索引7處之來源資料元件含有值0,索引8處之來源資料元件含有值1,索引9處之來源資料元件含有值15,索引10處之來源資料元件含有值0,索引11處之來源資料元件含有值2,索引12處之來源資料元件含有值1,索引13處之來源資料元件含有值5,索引14處之來源資料元件含有值6,且索引15處之來源資料元件含有值7。
向量頻率擴展指令100係例示出用於擴展含有值0之資料元件之RLE出現。然而,選擇性地,可實行向量頻率擴展指令100以用於擴展含有其他值之資料元件之出現。因此,存在例示出為即時值之選擇性運算元130,該即時值可使用應擴展之值予以編碼。因此,130將表示應擴展之值。此外,向量頻率擴展指令100係使用向量遮罩MASK 110予以編碼,向量遮罩MASK 110指定哪些資料元件匹配將要擴展之值及哪些資料元件不匹配將要擴展之值。MASK 110含有零或一,此取決於指令之操作。在例示出的實施例中,MASK 110在對應於不匹配將要擴展之值的來源資料元件之元件中含有一,且在不匹配將要擴展 之值(視狀況而定係零)的該等元件中含有零。因此,MASK 110在遮罩元件1、7及10中含有零。
可用以下方式描述向量頻率擴展指令100之操作。當MASK 110中遭遇零時,指示一連串壓縮值正在來源資料元件中RLE,相繼零之數目係自來源運算元115之向量暫存器中之後續資料元件擷取。將該數目個零插入目的地運算元105向量,目的地運算元105之向量暫存器中之位置隨著將值置放至目的地運算元105之向量暫存器中而增加。當在MASK 110中遭遇一時,將來源運算元115資料元件中之對應值拷貝至目的地運算元105向量之當前位置中,且當前位置增加。
如圖1中所展示,若來源運算元115包含含有以下值的資料元件15至0:7、6、5、1、2、0、15、1、0、12、35、35、35、7、0及54,則目的地運算元105之向量暫存器將包含資料元件中之以下值:0、0、15、0、12、35、35、35、0、0、0、0、0、0、0及54。自來源運算元115之向量暫存器至目的地運算元105之向量暫存器之RLE 0擴展係藉由分組來源0及運行長度以及展示至目的地中之一或多個0之對應集合的箭頭予以展示。自元件0至元件15,來源運算元115之向量暫存器之第一元件將遭遇MASK 110中之1,且54將會拷貝至目的地運算元105之向量暫存器之當前位置中。然後在來源運算元115之向量暫存器中遭遇之後為7的0,該0將會擴展為目的地運算元105之向量暫存器中之7個0。接著將3個35和一個12自來源 運算元115拷貝至目的地運算元105。然後將遭遇之後為1的0,且將該0拷貝為目的地運算元105中之單個0。自該處將拷貝15,接著將之後為2的0擴展為2個0。此刻,目的地向量暫存器將全部用完,且向量頻率擴展指令100將返回以用於來源運算元115之向量暫存器中之剩餘資料元件的第二疊代。
如圖1中所展示,存在在未壓縮來源向量包含比目的地向量暫存器能夠保存的更多值的情況下出現之情境。在該狀況下,重要的是存在指示哪些來源資料元件已使用/未使用之方法。以此方式,可在第一未使用來源資料元件處重新開始向量頻率擴展指令。處置此情境之一方式將產生未使用元件控制遮罩120,該未使用元件控制遮罩在與自來源XD15向量暫存器使用的資料元件對應的資料元件中具有1。在此狀況下,元件11至0將含有1,且元件15至12將含有0,因為元件15至12並未由向量頻率擴展指令之此疊代使用。未使用元件控制遮罩120可係改變用途遮罩暫存器或特別包括的遮罩暫存器。指令100之進一步實施例允許未使用元件控制遮罩120經選擇且編碼為指令之出現。處置此情境之另一方式將產生且儲存未使用元件計數125。正如未使用元件控制遮罩120之情況,未使用元件計數125可設定於專用暫存器中或設定至改變用途通用暫存器中。此外,指令100之實施例允許對於未使用元件計數125編碼目的地,記憶體或暫存器。儘管例示出為計數未使用資料元件,但是在其指令之他實施例中可使用 相反狀況。具體而言,未使用元件控制遮罩及未使用元件計數可為已使用元件控制遮罩及已使用元件計數。
可能發生之另一情境為當壓縮的來源向量實際上比未壓縮流大時的情況。若存在單壓縮值之出現(亦即運行長度等於1),則此情境出現。當每一單壓縮值經解壓時,其將在目的地向量暫存器中佔據比其在來源向量暫存器中佔據更少的空間。當擴展此來源向量暫存器時,目的地向量暫存器之末端處的一些元件並未使用。此情形可藉由自先前目的地之中間開始下一擴展指令予以處置。另一選項將引發特殊異常以允許軟體適當地處置此情境。
可能發生之另一情境為錯誤條件。具體而言,當來源向量暫存器(例如來源運算元115之向量暫存器)在最後(例如元件[15])資料元件中含有0時,此情境出現。此為錯誤條件,因為指令不具有用於資料元件之對應的運行長度。在指令之一實施例中,此情境使異常被引發以用於軟體在適當時處置該狀況。例如,軟體可產生自先前疊代中之單個0開始的第二向量頻率擴展指令,或可使用純量指令讀取0之數目且插入軟體中。
圖2例示出根據一實施例之向量頻率擴展指令之示範性執行。除來源暫存器、目的地暫存器及遮罩向量暫存器中之運算元及不同示範性值之增添之外,圖2基本上相等於圖1。額外運算元係即時230運算元,該即時230運算元可指定一值用作例如除零以外的壓縮值。一些資料將受益於使用除零之外的值的壓縮,若該值未經硬編碼(亦 即,可變且在執行期間經選擇或藉由程式設計員),則該值需要傳遞至向量頻率擴展指令。指令之一實施例利用即時230運算元來決定壓縮值,而指令200之另一實施例可使用MASK 210藉由讀取與MASK 210中之零資料元件對應的來源資料元件來決定壓縮值,該零資料元件指示壓縮值之後為運行長度。
在圖2中,壓縮值係35。來源運算元215之向量暫存器具有以下資料元件15至0:0、4、35、15、0、12、3、35、0、4、0、7、0、8、0及54。因此,預定MASK 210包含全部1,指示應在擴展操作期間拷貝元件,除元件[8]及元件[13](亦即,第九元件及第十四元件)之外。應注意,儘管運行長度(元件[9])具有遮罩值1,但是在擴展期間其將不會拷貝至目的地運算元205之向量暫存器,因為其為用於值35之運行長度。在擴展之後目的地運算元205之向量暫存器含有以下資料元件,自15至0列表之元件:0、0、15、0、12、35、35、35、0、4、0、7、0、8、0及54。在此實例中,來源運算元215之向量暫存器之最後三個元件未使用,因為目的地運算元205之向量暫存器中不存在足夠的空間來將第十四資料元件(元件[13])擴展為具有值35之4個目的地資料元件。因此,此狀況將引發軟體中之異常以指示軟體應作為另一特殊狀況來處置來源運算元215之向量暫存器之最後三個元件之擴展。
圖3係例示出根據一實施例之用於藉由在處理器中執行向量頻率擴展指令將值自來源向量暫存器擴展至 目的地向量暫存器之示範性操作的流程圖。在操作310處,由處理器(例如,由處理器之擷取單元)擷取向量頻率擴展指令。向量頻率擴展指令包括(至少)來源運算元及目的地運算元。來源運算元指定將要擴展為目的地運算元(例如,xmm暫存器、ymm暫存器或zmm暫存器)之一組資料元件。在指令之至少一個出現中,來源運算元包含值及運行長度之一或多個對,該等對將要基於運行長度擴展為該值之連串。
流程自操作310移動至操作315,在操作315處,處理器解碼向量頻率擴展指令。例如,在一些實施例中,處理器包括硬體解碼單元,向該硬體解碼單元提供指令(例如,由處理器之擷取單元)。多種不同的熟知的解碼單元可用於解碼單元。例如,解碼單元可將向量頻率壓縮指令解碼為單個寬微指令。如另一實例,解碼單元可將向量頻率擴展指令解碼為多個寬微指令。如尤其適合於亂序處理器管線之另一實例,解碼單元可將向量頻率壓縮指令解碼為一或多個微操作,其中可亂序發佈且執行該等微操作中每一者。亦,解碼單元可實行為具有一或多個解碼器且每一解碼器可實行為可規劃邏輯陣列(PLA),如此項技術中所熟知。舉例而言,給定解碼單元可:1)具有引導邏輯,以將不同巨集指令導引至不同解碼器;2)第一解碼器,其可解碼指令集之子集(但比第二解碼器、第三解碼器及第四解碼器更多的指令集之子集且每次產生兩個微操作;3)第二解碼器、第三解碼器及第四解碼器,上述解碼器各自可解碼全部指令集之僅一個子集且每次產生僅一個微操作; 4)微定序器ROM,其可解全部指令集之僅一個子集且每次產生四個微操作;以及5)多工邏輯,其由解碼器及微定序器ROM饋送,該等解碼器及該微定序器ROM決定將誰的輸出提供至微操作隊列。解碼單元之其他實施例可具有更多或更少的解碼器,該等解碼器解碼更多或更少的指令及指令子集。例如,一實施例可具有第二解碼器、第三解碼器及第四解碼器,該等解碼器可各自每次產生兩個微操作;且該實施例可包括微定序器ROM,該微定序器ROM每次產生八個微操作。
流程接著移動至操作320,在操作320處,處理器執行向量頻率擴展指令,該向量頻率擴展指令使來源向量暫存器中之一組一或多個來源資料元件擴展為一組目的地資料元件,該組目的地資料元件包含比該組來源資料元件更多的元件且包括相等值之至少一個連串,該等相等值在來源向量暫存器中經運行長度編碼。
示範性指令格式
本文中描述之指令之實施例可以不同格式來體現。另外,下文詳述示範性系統、架構及管線。可在此等系統、架構及管線上執行指令之實施例,但不限於詳述之彼等系統、架構及管線。
VEX指令格式
VEX編碼允許指令具有兩個以上運算元,且允許SIMD向量暫存器的長度超過128個位元。VEX前綴的使用提供三運算元(或更多)語法。例如,先前兩運算元指令 執行諸如A=A+B的運算,此運算會覆寫來源運算元。VEX前綴的使用使得運算元能夠執行諸如A=B+C的非破壞性運算。
圖4A展示出示範性AVX指令格式,其包括VEX前綴402、實際運算碼欄位430、Mod R/M位元組440、SIB位元組450、位移欄位462及IMM8 472。圖4B展示出圖4A的哪些欄位組成完整的運算碼欄位474及基本操作欄位442。圖4C例示圖4A的哪些欄位組成暫存器索引欄位444。
VEX前綴(位元組0-2)402係按三位元組形式予以編碼。第一位元組係格式欄位440(VEX位元組0,位元[7:0]),其包含顯式C4位元組值(用於辨別C4指令格式的獨特值)。第二至第三位元組(VEX位元組1-2)包括提供特定能力的許多位元欄位。具體而言,REX欄位405(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。運算碼對映欄位415(VEX位元組1,位元[4:0]-mmmmm)包括用來編碼隱式引導運算碼位元組的內容。W欄位464(VEX位元組2,位元[7]-W)由符號VEX.W來表示,且取決於指令而提供不同功能。VEX.vvvv 420(VEX位元組2,位元[6:3]-vvvv)之作用可包括以下各者:1)VEX.vvvv編碼以反轉(1的補數)形 式指定的第一來源暫存器運算元,且針對具有兩個或兩個以上來源運算元的指令有效;2)VEX.vvvv編碼針對某些向量移位以1的補數形式指定的目的地暫存器運算元;或3)VEX.vvvv不編碼任何運算元,該欄位得以保留且應包含1111b。若VEX.L468大小欄位(VEX位元組2,位元[2]-L)=0,則其指示128位元的向量;若VEX.L=1,則其指示256位元的向量。前綴編碼欄位425(VEX位元組2,位元[1:0]-pp)為基本操作欄位提供額外位元。
實際運算碼欄位430(位元組3)亦稱為運算碼位元組。在此欄位中指定運算碼之部分。
MOD R/M欄位440(位元組4)包括MOD欄位442(位元[7-6])、Reg欄位444(位元[5-3])及R/M欄位446(位元[2-0])。Reg欄位444之作用包括以下各者:編碼目的地暫存器運算元或來源暫存器運算元(rrr或Rrrr),或者被視為運算碼擴展且不用來編碼任何指令運算元。R/M欄位446的作用包括以下各者:編碼參考記憶體位址之指令運算元,或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、索引、基址(SIB)-比例欄位450之內容(位元組5)包括用於記憶體位址產生的SS452(位元[7-6])。SIB.xxx 454之內容(位元[5-3])及SIB.bbb 456之內容(位元[2-0])已在先前關於暫存器索引Xxxx及Bbbb提到。
位移欄位462及立即欄位(IMM8)472含有位址資料。
形成VEX之示範性編碼 一般向量友善指令格式
向量友善指令格式係適合於向量指令的指令格式(例如,存在特定針對向量運算的某些欄位)。雖然描述了經由向量友善指令格式支援向量運算及純量運算兩者的實施例,但替代性實施例僅使用向量運算向量友善指令格式。
圖5A至圖5B係例示出根據本發明之實施例之一般向量友善指令格式及其指令模板的方塊圖。圖5A係例示出根據本發明之實施例之一般向量友善指令格式及其類別A指令模板的方塊圖;而圖5B係例示出根據本發明之實施例之一般向量友善指令格式及其類別B指令模板的方塊圖。具體而言,一般向量友善指令格式500,針對其定義了類別A及類別B指令模板,兩個指令模板皆包括非記憶體存取505指令模板及記憶體存取520指令模板。在向量友善指令格式的情況下,術語一般代表不與任何特定指令集相關的指令格式。
雖然將描述的本發明之實施例中,向量友善指令格式支援以下各者: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個位元組)的資料元件寬度)。
圖5A中的類別A指令模板包括:1)在非記憶體存取505指令模板內,展示出非記憶體存取、完全捨入控制型操作510指令模板及非記憶體存取、資料變換型操作515指令模板;以及2)在記憶體存取520指令模板內,展示出記憶體存取、暫時525指令模板及記憶體存取、非暫時530指令模板。圖5B中的類別B指令模板包括:1)在非記憶體存取505指令模板內,展示出非記憶體存取、寫入遮罩控制、部分捨入控制型操作512指令模板及非記憶體存取、寫入遮罩控制、vsize型操作517指令模板;以及2)在記憶體存取520指令模板內,展示出記憶體存取、寫入遮罩控制527指令模板。
一般向量友善指令格式500包括以下欄位,下文按圖5A至圖5B中例示之次序列出該等欄位。
格式欄位540-在此欄位中的特定值(指令格式識別符值)唯一地識別向量友善指令格式,且因此識別在指令串流中的呈向量友善指令格式之指令的出現。因而,此欄位在以下意義上來說係選擇性的:僅具有一般向量友善指 令格式之指令集並不需要此欄位。
基本操作欄位542-其內容辨別不同的基本操作。
暫存器索引欄位544-其內容直接或經由位址產生,指定來源及目的地運算元之位置,在暫存器或記憶體中。此等包括充足數目個位元,以自PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N個暫存器。雖然在一實施例中,N可至多為三個來源及一個目的地暫存器,但替代性實施例可支援更多或更少的來源及目的地暫存器(例如,可支援至多兩個來源,其中此等來源中之一者亦可充當目的地,可支援至多三個來源,其中此等來源中之一者亦可充當目的地,可支援至多兩個來源及一個目的地)。
修飾符欄位546-其內容區分呈一般向量指令格式的指定記憶體存取之指令的出現與不指定記憶體存取之指令的出現;即,區分非記憶體存取505指令模板與記憶體存取520指令模板。記憶體存取操作讀取及/或寫入至記憶體階層(在一些情況下,使用暫存器中的值來指定來源及/或目的地位址),而非記憶體存取操作不讀取及/或寫入至記憶體階層。雖然在一實施例中此欄位亦在執行記憶體位址計算的三種不同方式之間進行選擇,但替代性實施例可支援執行記憶體位址計算的更多、更少或不同的方式。
擴增操作欄位550-其內容辨別除基本操作外還將執行多種不同操作中之哪一者。此欄位係內容脈絡特定的。在本發明之一實施例中,此欄位分成類別欄位568、 α(alpha)欄位552及β(beta)欄位554。擴增操作欄位550允許在單個指令而不是2個、3個或4個指令中執行各組常見操作。
比例欄位560-其內容允許按比例縮放索引欄位之內容以用於記憶體位址產生(例如,針對使用2比例 *索引+基址之位址產生)。
位移欄位562A-其內容被用作記憶體位址產生之部分(例如針對使用2比例 *索引+基址+位移之位址產生)。
位移因數欄位562B(請注意,位移欄位562A緊靠在位移因數欄位562B上方的並列指示使用一個欄位或另一個欄位)-其內容被用作記憶體位址產生之部分;其指定位移因數,將按記憶體存取之大小(N)按比例縮放該位移因數,其中N係記憶體存取中之位元組之數目(例如,針對使用2比例 *索引+基址+按比例縮放後的位移的位址產生)。忽略冗餘的低位位元,且因此,將位移因數欄位之內容乘以記憶體運算元總大小(N)以便產生將用於計算有效位址的最終位移。N的值由處理器硬體在執行時間基於完整的運算碼欄位574(本文中稍後描述)及資料調處欄位554C予以判定。位移欄位562A及位移因數欄位562B在以下意義上來說係選擇性的:該等欄位不用於非記憶體存取505指令模板,及/或不同實施例可僅實施該兩個欄位中之一者或不實施該兩個欄位。
資料元件寬度欄位564-其內容辨別將使用許多資料元件寬度中之哪一者(在一些實施例中,針對所有指 令;在其他實施例中,僅針對該等指令中之一些)。此欄位在以下意義上來說係選擇性的:若使用運算碼之某一態樣支援僅一個資料元件寬度及/或支援多個資料元件寬度,則不需要此欄位。
寫入遮罩欄位570-其內容以每資料元件位置為基礎控制目的地向量運算元中之該資料元件位置是否反映基本操作及擴增操作的結果。類別A指令模板支援合併-寫入遮蔽,而類別B指令模板支援合併-寫入遮蔽及歸零-寫入遮蔽兩者。在合併時,向量遮罩允許保護目的地中之任何元件集合,以免在任何操作(由基本操作及擴增操作指定)執行期間更新;在另一實施例中,在對應的遮罩位元為0時,保持目的地之每一元件的舊值。相反地,當歸零時,向量遮罩允許目的地中之任何元件集合在任何操作(由基本操作及擴增操作指定)執行期間被歸零;在一實施例中,在對應的遮罩位元為0值時,將目的地之一元件設定為0。此功能性之一子集係控制被執行之操作的向量長度(即,被修改之元件(自第一個至最後一個)之跨度)之能力;然而,被修改之元件不一定連續。因此,寫入遮罩欄位570允許部分向量運算,其中包括載入、儲存、算術、邏輯等。雖然所描述的本發明之實施例中,寫入遮罩欄位570的內容選擇許多寫入遮罩暫存器中之一者,其含有將使用之寫入遮罩(且因此,寫入遮罩欄位570的內容間接識別將執行之遮蔽),但替代性實施例改為或另外允許寫入遮罩欄位570的內容直接指定將執行之遮蔽。
立即欄位572-其內容允許立即的指定。此欄位在以下意義上係選擇性的:在不支援立即的一般向量友善格式之實行方案中不存在此欄位,且在不使用立即的指令中不存在此欄位。
類別欄位568-其內容區分不同類別的指令。參看圖5A至圖5B,此欄位之內容在類別A指令與類別B指令之間進行選擇。在圖5A至圖5B中,使用圓角正方形來指示欄位中存在特定值(例如,在圖5A至圖5B中針對類別欄位568分別為類別A 568A及類別B 568B)。
類別A指令模板
在類別A非記憶體存取505指令模板的情況下,α欄位552被解譯為RS欄位552A,其內容辨別將執行不同擴增操作類型中之哪一者(例如,針對非記憶體存取、完全捨入控制型操作510指令模板及非記憶體存取、資料變換型操作515指令模板,分別指定捨入552A.1及資料變換552A.2),而β欄位554辨別將執行指定類型之操作中之哪一者。在非記憶體存取505指令模板的情況下,比例欄位560、位移欄位562A及位移因數欄位562B不存在。
非記憶體存取指令模板-完全捨入控制型操作
在非記憶體存取完全捨入控制型操作510指令模板中,β欄位554被解譯為捨入控制欄位554A,其內容提供靜態捨入。雖然在本發明之所描述實施例中,捨入控制欄位554A包括抑制所有浮點異常(SAE)欄位556及捨入操作控制欄位558,但替代性實施例可支援可將兩個此等概 念編碼至同一欄位中或者僅具有此等概念/欄位中之一者或另一者(例如,可僅具有捨入操作控制欄位558)。
SAE欄位556-其內容辨別是否要停用例外事件報告;當SAE欄位556的內容指示啟用了抑制時,特定指令不報告任何種類之浮點異常旗標且不提出任何浮點異常處置器。
捨入操作控制欄位558-其內容辨別要執行一組捨入操作中之哪一者(例如,捨進、捨去、向零捨入及捨入至最近數值)。因此,捨入操作控制欄位558允許以每指令為基礎改變捨入模式。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入操作控制欄位558的內容置換(override)該暫存器值。
非記憶體存取指令模板-資料變換型操作
在非記憶體存取資料變換型操作515指令模板中,β欄位554被解譯為資料變換欄位554B,其內容辨別將執行許多資料變換中之哪一者(例如,非資料變換、拌和、廣播)。
在類別A記憶體存取520指令模板的情況下,α欄位552被解譯為收回提示欄位552B,其內容辨別將使用收回提示中之哪一者(在圖5A中,針對記憶體存取、暫時525指令模板及記憶體存取、非暫時530指令模板,分別指定暫時552B.1及非暫時552B.2),而β欄位554被解譯為資料調處欄位554C,其內容辨別將執行許多資料調處操作(亦稱為原指令(primitive))中之哪一者(例如,非調處;廣 播;來源的上轉換;及目的地的下轉換)。記憶體存取520指令模板包括比例欄位560,且選擇性地包括位移欄位562A或位移因數欄位562B。
向量記憶體指令在有轉換支援的情況下執行自記憶體的向量載入及至記憶體的向量儲存。如同常規向量指令一樣,向量記憶體指令以逐個資料元件的方式自記憶體傳遞資料/傳遞資料至記憶體,其中實際被傳遞之元件係由被選為寫入遮罩之向量遮罩的內容指定。
記憶體存取指令模板-暫時
暫時資料係可能很快被再使用以便足以受益於快取的資料。然而,此係提示,且不同處理器可以不同方式實施提示,其中包括完全忽略該提示。
記憶體存取指令模板-非暫時
非暫時資料係不可能很快被再使用以便足以受益於第一階快取記憶體中之快取的資料,且應被賦予優先權來收回。然而,此係提示,且不同處理器可以不同方式實施提示,其中包括完全忽略該提示。
類別B指令模板
在類別B指令模板的情況下,α欄位552被解譯為寫入遮罩控制(Z)欄位552C,其內容辨別由寫入遮罩欄位570控制之寫入遮蔽是否應為合併或歸零。
在類別B非記憶體存取505指令模板的情況下,β欄位554之部分被解譯為RL欄位557A,其內容辨別將執行不同擴增操作類型中之哪一者(例如,針對非記憶 體存取、寫入遮罩控制、部分捨入控制型操作512指令模板及非記憶體存取、寫入遮罩控制、VSIZE型操作517指令模板,分別指定捨入557A.1及向量長度(VSIZE)557A.2),而β欄位554之剩餘部分辨別將執行指定類型之操作中之哪一者。在非記憶體存取505指令模板的情況下,比例欄位560、位移欄位562A及位移因數欄位562B不存在。
在非記憶體存取、寫入遮罩控制、部分捨入控制型操作512指令模板中,β欄位554之剩餘部分被解譯為捨入操作欄位559A,且異常事件報告被停用(特定指令不報告任何種類之浮點異常旗標且不提出任何浮點異常處置器)。
捨入操作欄位559A-就像捨入操作控制欄位558一樣,其內容辨別要執行一組捨入操作中之哪一者(例如,捨進、捨去、向零捨入及捨入至最近數值)。因此,捨入操作欄位559A允許以每指令為基礎改變捨入模式。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入操作控制欄位558的內容置換該暫存器值。
在非記憶體存取、寫入遮罩控制、VSIZE型操作517指令模板中,β欄位554之剩餘部分被解譯為向量長度欄位559B,其內容辨別將對許多資料向量長度中之哪一者執行(例如,128、256或512個位元組)。
在類別B記憶體存取520指令模板的情況下,β欄位554之部分被解譯為廣播欄位557B,其內容辨別是否 將執行廣播型資料調處操作,而β欄位554之剩餘部分被解譯為向量長度欄位559B。記憶體存取520指令模板包括比例欄位560,且選擇性地包括位移欄位562A或位移因數欄位562B。
關於一般向量友善指令格式500,完整的運算碼欄位574被展示出為包括格式欄位540、基本操作欄位542及資料元件寬度欄位564。雖然展示出的一實施例中,完整的運算碼欄位574包括所有此等欄位,但在不支援所有此等欄位的實施例中,完整的運算碼欄位574不包括所有此等欄位。完整的運算碼欄位574提供運算碼(opcode)。
擴增操作欄位550、資料元件寬度欄位564及寫入遮罩欄位570允許以一般向量友善指令格式以每指令為基礎來指定此等特徵。
寫入遮罩欄位與資料元件寬度欄位的組合產生具型式之指令,因為該等指令允許基於不同資料元件寬度來應用遮罩。
在類別A及類別B中所建立的各種指令模板在不同情形中有益。在本發明之一些實施例中,不同處理器或處理器內的不同核心可僅支援類別A,僅支援類別B,或支援上述兩種類別。舉例而言,意欲用於通用計算的高效能通用亂序核心可僅支援類別B,主要意欲用於圖形及/或科學(通量)計算之核心可僅支援類別A,且意欲用於上述兩種計算的核心可支援上述兩種類別(當然,具有來自兩種類別之模板及指令的某種混合但不具有來自兩種類別之所 有模板及指令的核心在本發明之範圍內)。單個處理器亦可包括多個核心,所有該等核心支援相同類別,或其中不同核心支援不同類別。舉例而言,在具有分開的圖形及通用核心之處理器中,主要意欲用於圖形及/或科學計算之圖形核心中之一者可僅支援類別A,而通用核心中之一或多者可為僅支援類別B的高效能通用核心,其具有亂序執行及暫存器重新命名,意欲用於通用計算。不具有分開的圖形核心之另一處理器可包括支援類別A及類別B兩者的一或多個通用循序或亂序核心。當然,在本發明之不同實施例中,來自一個類別的特徵亦可實施於另一類別中。用高階語言撰寫之程式將被翻譯(例如,即時編譯或靜態編譯)成各種不同可執行形式,其中包括:1)僅具有目標處理器所支援執行之類別的指令之形式;或2)具有替代性常式且具有控制流碼之形式,其中該等常式係使用所有類別的指令之不同組合來撰寫的,該控制流碼基於當前正在執行該碼的處理器所支援之指令來選擇要執行的常式。
示範性特定向量友善指令格式
圖6A係例示出根據本發明之實施例之示範性特定向量友善指令格式的方塊圖。圖6A展示出特定向量友善指令格式600,該格式在以下意義上係特定的:其指定欄位之位置、大小、解譯及次序以及彼等欄位中之一些的值。特定向量友善指令格式600可用來擴展x86指令集,且因此,該等欄位中之一些與現有x86指令集及其擴展(例如AVX)中所使用的欄位類似或相同。此格式保持與現有x86 指令集以及擴展的前綴編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及立即欄位一致。從圖5之欄位例示圖6A之欄位對映至該等欄位中。
應理解,雖然出於說明目的在一般向量友善指令格式500的情況下參考特定向量友善指令格式600來描述本發明之實施例,但除非主張,否則本發明不限於特定向量友善指令格式600。例如,一般向量友善指令格式500考量了各種欄位之各種可能大小,而特定向量友善指令格式600被示出為具有特定大小的欄位。藉由特定實例,雖然在特定向量友善指令格式600中將資料元件寬度欄位564說明為一個位元的欄位,但本發明不限於此(亦即,一般向量友善指令格式500考量了資料元件寬度欄位564之其他大小)。
一般向量友善指令格式500包括以下欄位,下文按圖6A中例示之次序列出該等欄位。
EVEX前綴(位元組0-3)602-以四位元組形式予以編碼。
格式欄位540(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)係格式欄位540,且其含有0x62(在本發明之一實施例中,用來辨別向量友善指令格式的獨特值)。
第二至第四位元組(EVEX位元組1-3)包括提供特定能力之許多位元欄位。
REX欄位605(EVEX位元組1,位元[7-5])由 EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)及557BEX位元組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’欄位610-此係REX’欄位610之第一部分,且係用來編碼擴展式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。
運算碼對映欄位615(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱式引導運算碼位元組(0F、0F 38或0F 3)。
資料元件寬度欄位564(EVEX位元組2,位元 [7]-W)-係由符號EVEX.W表示。EVEX.W用來定義資料類型之粒度(大小)(32位元的資料元件或64位元的資料元件)。
EVEX.vvvv 620(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的作用可包括以下各者:1)EVEX.vvvv編碼以反轉(1的補數)形式指定的第一來源暫存器運算元,且針對具有兩個或兩個以上來源運算元的指令有效;2)EVEX.vvvv編碼針對某些向量移位以1的補數形式指定的目的地暫存器運算元;或3)EVEX.vvvv不編碼任何運算元,該欄位得以保留且應包含1111b。因此,EVEX.vvvv欄位620編碼以反轉(1的補數)形式儲存的第一來源暫存器指定符之4個低位位元。取決於指令,使用額外的不同EVEX位元欄位將指定符大小擴展成32個暫存器。
EVEX.U 568類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,則其指示類別A或EVEX.U0;若EVEX.U=1,則其指示類別B或EVEX.U1。
前綴編碼欄位625(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前綴編碼,且因此不需要該展開。
α欄位552(EVEX位元組3,位元[7]-EH;亦稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制及EVEX.N;亦由α說明)-如先前所描述,此欄位係脈絡特定的。
β欄位554(EVEX位元組3,位元[6:4]-SSS,亦稱為EVEX.s2-0 、EVEX.r2-0 、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦由βββ說明)-如先前所描述,此欄位係脈絡特定的。
REX’欄位610-此係REX’欄位之剩餘部分,且係可用來編碼擴展式32暫存器集的上16或下16之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。以位元反轉格式儲存此位元。使用值1來編碼下16個暫存器。換言之,藉由組合EVEX.V’、EVEX.vvvv,形成V’VVVV。
寫入遮罩欄位570(EVEX位元組3,位元[2:0]-kkk)-其內容如先前所描述指定寫入遮罩暫存器中之暫存器的索引。在本發明之一實施例中,特定值EVEX.kkk=000之特殊作用係暗示不對特定指令使用寫入 遮罩(此可以各種方式來實施,其中包括使用硬連線(hardwired)至所有硬體的寫入遮罩或繞過(bypass)遮蔽硬體之硬體)。
實際運算碼欄位630(位元組4)亦稱為運算碼位元組。在此欄位中指定運算碼之部分。
MOD R/M欄位640(位元組5)包括MOD欄位642、Reg欄位644及R/M欄位646。如先前所描述,MOD欄位642的內容區分記憶體存取操作與非記憶體存取操作。Reg欄位644之作用可概述為兩種情形:編碼目的地暫存器運算元或來源暫存器運算元,或者被視為運算碼擴展且不用來編碼任何指令運算元。R/M欄位646之作用可包括以下各者:編碼參考記憶體位址之指令運算元,或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、索引、基址(SIB)位元組(位元組6)-如先前所描述,比例欄位560的內容係用於記憶體位址產生。SIB.xxx 654及SIB.bbb 656-此等欄位之內容已在先前關於暫存器索引Xxxx及Bbbb提到。
位移欄位562A(位元組7-10)-當MOD欄位642含有10時,位元組7-10係位移欄位562A,且其與舊式32位元的位移(disp32)相同地起作用,且在位元組粒度上起作用。
位移因數欄位562B(位元組7)-當MOD欄位642含有01時,位元組7係位移因數欄位562B。此欄位之位置與舊式x86指令集8位元的位移(disp8)相同,其在位元 組粒度上起作用。因為disp8經正負號擴展,所以disp8僅可解決在-128與127位元組之間的位移;就64個位元組的快取列(cache line)而言,disp8使用8個位元,該等位元可被設定為僅四個實際有用的值-128、-64、0及64;因為常常需要更大範圍,所以使用disp32;然而,disp32需要4個位元組。與disp8及disp32相比,位移因數欄位562B係disp8之重新解譯;當使用位移因數欄位562B時,實際位移係由位移因數欄位的內容乘以記憶體運算元存取之大小(N)判定。此類型之位移被稱為disp8*N。此減少了平均指令長度(單個位元組用於位移,但具有大得多的範圍)。此壓縮位移係基於如下假設:有效位移係記憶體存取之粒度的倍數,且因此,不需要編碼位址位移之冗餘低位位元。換言之,位移因數欄位562B替代了舊式x86指令集8位元的位移。因此,位移因數欄位562B的編碼方式與x86指令集8位元的位移相同(因此ModRM/SIB編碼規則無變化),其中唯一例外為,disp8超載(overload)至disp8*N。換言之,編碼規則或編碼長度無變化,而僅僅係硬體對位移值的解譯有變化(硬體需要按記憶體運算元之大小來按比例縮放該位移以獲得逐個位元組的位址位移)。
立即欄位572如先前所描述而操作。
完整的運算碼欄位
圖6B係例示出特定向量友善指令格式600的欄位之方塊圖,該等欄位組成根據本發明之一實施例之完整的運算碼欄位574。具體而言,完整的運算碼欄位574包括 格式欄位540、基本操作欄位542及資料元件寬度(W)欄位564。基本操作欄位542包括前綴編碼欄位625、運算碼對映欄位615及實際運算碼欄位630。
暫存器索引欄位
圖6C係例示出特定向量友善指令格式600的欄位之方塊圖,該等欄位組成根據本發明之一實施例之暫存器索引欄位544。具體而言,暫存器索引欄位544包括REX欄位605、REX’欄位610、MODR/M.reg欄位644、MODR/M.r/m欄位646、VVVV欄位620、xxx欄位654及bbb欄位656。
擴增操作欄位
圖6D係例示出特定向量友善指令格式600的欄位之方塊圖,該等欄位組成根據本發明之一實施例之擴增操作欄位550。當類別(U)欄位568含有0時,其表示EVEX.U0(類別A 568A);當其含有1時,其表示EVEX.U1(類別B 568B)。當U=0且MOD欄位642含有11(表示非記憶體存取操作)時,α欄位552(EVEX位元組3,位元[7]-EH)被解譯為rs欄位552A。當rs欄位552A含有1(捨入552A.1)時,β欄位554(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位554A。捨入控制欄位554A包括一個位元的SAE欄位556及兩個位元的捨入操作欄位558。當rs欄位552A含有0(資料變換552A.2)時,β欄位554(EVEX位元組3,位元[6:4]-SSS)被解譯為三個位元的資料變換欄位554B。當U=0且MOD欄位642含有00、01 或10(表示記憶體存取操作)時,α欄位552(EVEX位元組3,位元[7]-EH)被解譯為收回提示(EH)欄位552B且β欄位554(EVEX位元組3,位元[6:4]-SSS)被解譯為三個位元的資料調處欄位554C。
當U=1時,α欄位552(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位552C。當U=1且MOD欄位642含有11(表示非記憶體存取操作)時,β欄位554之部分(EVEX位元組3,位元[4]-S0 )被解譯為RL欄位557A;當RL欄位557A含有1(捨入557A.1)時,β欄位554之剩餘部分(EVEX位元組3,位元[6-5]-S2 -i)被解譯為捨入操作欄位559A,而RL欄位557A含有0(VSIZE 557.A2)時,β欄位554之剩餘部分(EVEX位元組3,位元[6-5]-S2-1 )被解譯為向量長度欄位559B(EVEX位元組3,位元[6-5]-L1-0 )。當U=1且MOD欄位642含有00、01或10(表示記憶體存取操作)時,β欄位554(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位559B(EVEX位元組3,位元[6-5]-L1-0 )及廣播欄位557B(EVEX位元組3,位元[4]-B)。
示範性暫存器架構
圖7係根據本發明之一實施例之暫存器架構700的方塊圖。在所說明之實施例中,有32個向量暫存器710,其寬度為512個位元;此等暫存器被稱為zmm0至zmm31。下16個zmm暫存器的低位256個位元覆疊在暫存器ymm0-16上。下16個zmm暫存器的低位128個位元(ymm暫存器的低位128個位元)覆疊在暫存器xmm0-15上。特定 向量友善指令格式600如下表中所說明對此等覆疊暫存器檔案進行操作。
換言之,向量長度欄位559B在最大長度與一或多個其他較短長度之間進行選擇,其中每一此種較短長度係前一長度的一半長度;且不具有向量長度欄位559B的指令模板對最大向量長度進行操作。另外,在一實施例中,特定向量友善指令格式600之類別B指令模板對緊縮或純量單精度/雙精度浮點資料及緊縮或純量整數資料進行操作。純量操作係對zmm/ymm/xmm暫存器中之最低位資料元件位置執行的操作;較高位資料元件位置保持與其在指令之前相同或歸零,此取決於實施例。
寫入遮罩暫存器715-在所說明之實施例中,有8個寫入遮罩暫存器(k0至k7),每一寫入遮罩暫存器的大小為64個位元。在替代實施例中,寫入遮罩暫存器715的大 小為16個位元。如先前所描述,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當通常將指示k0之編碼被用於寫入遮罩時,其選擇固線式寫入遮罩0xFFFF,從而有效停用對該指令之寫入遮蔽。
通用暫存器725-在所說明之實施例中,有十六個64位元的通用暫存器,該等暫存器與現有的x86定址模式一起用來定址記憶體運算元。藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15來參考此等暫存器。
純量浮點堆疊暫存器檔案(x87堆疊)745,上面混疊有MMX緊縮整數平板暫存器檔案750-在所說明之實施例中,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(有時被稱為應用核心或應用處理器)相同的晶粒上包括上述共處理器及額外功能性。接下來描述示範性核心架構,後續接著對示範性處理器及電腦架構的描述。
示範性核心架構 循序及亂序核心方塊圖
圖8A係例示出根據本發明之實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名亂序發佈/執行管線。圖8B係例示出如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架構核心,上述兩者將包括於根據本發明之實施例的處理器中。圖8A至圖8B之實線方框例示循序管線及循序核心,虛線方框之選擇性增添說明暫存器重新命名亂序發佈/執行管線及核心。考慮到循序態樣係亂序態 樣之子集,將描述亂序態樣。
在圖8A中,處理器管線800包括擷取階段802、長度解碼階段804、解碼階段806、分配階段808、重新命名階段810、排程(亦稱為分派或發佈)階段812、暫存器讀取/記憶體讀取階段814、執行階段816、寫回/記憶體寫入階段818、異常處置階段822及確認階段824。
圖8B示出處理器核心890,其包括耦接至執行引擎單元850之前端單元830,且執行引擎單元850及前端單元830兩者皆耦接至記憶體單元870。處理器核心890可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心,或者混合式或替代性核心類型。作為另一選擇,核心890可為專用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或類似者。
前端單元830包括耦接至指令快取記憶體單元834之分支預測單元832,指令快取記憶體單元834耦接至指令轉譯後備緩衝器(TLB)836,指令TLB 836耦接至指令擷取單元838,指令擷取單元838耦接至解碼單元840。解碼單元840(或解碼器)可解碼指令,且產生一或多個微操作、微碼進入點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。可使用各種不同機制來實施解碼單元840。合適的機制之實例包括(但不限於)查找表、硬體實行方案、可規劃邏輯陣列(PLA)、微碼唯讀 記憶體(ROM)等。在一實施例中,核心890包括儲存用於某些巨集指令之微碼的微碼ROM或其他媒體(例如在解碼單元840中,或者在前端單元830內)。解碼單元840耦接至執行引擎單元850中的重新命名/分配器單元852。
執行引擎單元850包括重新命名/分配器單元852,其耦接至引退單元854及一或多個排程器單元856之集合。排程器單元856表示任何數目的不同排程器,其中包括保留站、中央指令視窗等。排程器單元856耦接至實體暫存器檔案單元858。實體暫存器檔案單元858中之每一者表示一或多個實體暫存器檔案,其中不同的實體暫存器檔案單元儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標器,即下一個待執行指令的位址)等。在一實施例中,實體暫存器檔案單元858包括向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構性向量暫存器、向量遮罩暫存器及通用暫存器。引退單元854與實體暫存器檔案單元858重疊,以說明可實施暫存器重新命名及亂序執行的各種方式(例如,使用重新排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器對映表及暫存器集區;等)。引退單元854及實體暫存器檔案單元858耦接至執行叢集860。執行叢集860包括一或多個執行單元862之集合及記憶體存取單元864之集合。執行單元862可執行各種運算(例如,移位、加法、減法、乘法)且對各種 類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)進行執行。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元856、實體暫存器檔案單元858及執行叢集860被示出為可能係多個,因為某些實施例針對某些類型之資料/運算產生單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集;且在單獨的記憶體存取管線的情況下,所實施的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元864)。亦應理解,在使用單獨的管線之情況下,此等管線中之一或多者可為亂序發佈/執行而其餘管線可為循序的。
記憶體存取單元864之集合耦接至記憶體單元870,記憶體單元870包括耦接至資料快取記憶體單元874的資料TLB單元872,資料快取記憶體單元874耦接至2階(L2)快取記憶體單元876。在一示範性實施例中,記憶體存取單元864可包括載入單元、儲存位址單元及儲存資料單元,其中每一者耦接至記憶體單元870中的資料TLB單元872。指令快取記憶體單元834進一步耦接至記憶體單元870中的2階(L2)快取記憶體單元876。L2快取記憶體單元876耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由實例,示範性暫存器重新命名亂序發佈/執行核心架構可將管線800實施如下:1)指令擷取838執行擷取階段802及長度解碼階段804;2)解碼單元840執行解碼階段806;3)重新命名/分配單元852執行分配階段808及重新命名階段810;4)排程器單元856執行排程階段812;5)實體暫存器檔案單元858及記憶體單元870執行暫存器讀取/記憶體讀取階段814;執行叢集860執行執行階段816;6)記憶體單元870及實體暫存器檔案單元858執行寫回/記憶體寫入階段818;7)異常處置階段822中可涉及各種單元;及8)引退單元854及實體暫存器檔案單元858執行確認階段824。
核心890可支援一或多個指令集(例如,x86指令集(具有一些擴展,其已新增較新版本);MIPS Technologies公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(具有選擇性的額外擴展,諸如NEON)),其中包括本文中所描述之指令。在一實施例中,核心890包括支援緊縮資料指令集擴展(例如,AVX1、AVX2及/或先前所描述之某種形式的一般向量友善指令格式(U=0及/或U=1))的邏輯,進而允許使用緊縮資料來執行許多多媒體應用所使用的操作。
應理解,該核心可支援多執行緒處理(執行兩或更多組平行操作或執行緒),且可以各種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理 的各執行緒中之每一者提供一邏輯核心)或上述各者之組合(例如,經時間切割之擷取及解碼以及同時的多執行緒處理,之後諸如在Intel®超執行緒技術中)。
雖然在亂序執行的情況下描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所說明實施例亦包括單獨的指令與資料快取記憶體單元834/874以及共享的L2快取記憶體單元876,但替代性實施例可具有用於指令與資料兩者的單個內部快取記憶體,諸如1階(L1)內部快取記憶體或多階內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,外部快取記憶體在核心及/或處理器外部。或者,所有快取記憶體可在核心及/或處理器外部。
特定示範性循序核心架構
圖9A至圖9B例示更特定的示範性循序核心架構之方塊圖,該核心將係晶片中的若干邏輯區塊(包括相同類型及/或不同類型的其他核心)中之一者。邏輯區塊經由高頻寬互連網路(例如環形網路)與一些固定功能邏輯、記憶體I/O介面及其他必要的I/O邏輯通訊,此取決於應用。
圖9A係根據本發明之實施例的單個處理器核心及其至晶粒上互連網路902的連接以及其2階(L2)快取記憶體之區域子集904之方塊圖。在一實施例中,指令解碼器900支援x86指令集與緊縮資料指令集擴展。L1快取記憶體906允許對快取記憶體進行低延時存取,存取至純量單元及向量單元中。雖然在一實施例中(為了簡化設計),純 量單元908及向量單元910使用單獨的暫存器集(分別使用純量暫存器912及向量暫存器914),且在純量單元908與向量單元910之間傳遞的資料被寫入至記憶體,然後自1階(L1)快取記憶體906被讀回,但本發明之替代性實施例可使用不同方法(例如,使用單個暫存器集,或包括允許在兩個暫存器檔案之間傳遞資料而無需寫入及讀回的通訊路徑)。
L2快取記憶體區域子集904係全域L2快取記憶體之部分,全域L2快取記憶體分成單獨的區域子集,每個處理器核心一個區域子集。每一處理器核心具有至其自有之L2快取記憶體區域子集904的直接存取路徑。處理器核心所讀取之資料係儲存於其自有之L2快取記憶體子集904中且可被快速存取,此存取係與其他處理器核心存取其自有之區域L2快取記憶體子集904並行地進行。由處理器核心所寫入之資料係儲存於其自有之L2快取記憶體子集904中且必要時自其他子集清除掉。環形網路確保共享資料之同調性。環形網路係雙向的,以允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理在晶片內彼此通訊。每一環形資料路徑在每個方向上的寬度係1012個位元。
圖9B係根據本發明之實施例的圖9A中之處理器核心之部分的展開圖。圖9B包括L1快取記憶體904之L1資料快取記憶體906A部分,以及關於向量單元910及向量暫存器914之更多細節。具體而言,向量單元910係寬度為16之向量處理單元(VPU)(參見寬度為16之ALU 928),其執行整數、單精度浮點數及雙精度浮點數指令中之一或多者。VPU支援由拌和單元920對暫存器輸入進行拌和、由數值轉換單元922A-B進行數值轉換,以及由複製單元924對記憶體輸入進行複製。寫入遮罩暫存器926允許預測所得向量寫入。
具有整合型記憶體控制器及圖形元件的處理器
圖10係根據本發明之實施例之處理器1000的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件。圖10中的實線方框說明處理器1000,其具有單個核心1002A、系統代理1010、一或多個匯流排控制器單元1016之集合,而虛線方框之選擇性增添說明替代性處理器1000,其具有多個核心1002A-N、位於系統代理單元1010中的一或多個整合型記憶體控制器單元1014之集合,以及特殊用途邏輯1008。
因此,處理器1000之不同實行方案可包括:1)CPU,其中特殊用途邏輯1008係整合型圖形及/或科學(通量)邏輯(其可包括一或多個核心),且核心1002A-N係一或多個通用核心(例如,通用循序核心、通用亂序核心、上述兩者之組合);2)共處理器,其中核心1002A-N係大量主要意欲用於圖形及/或科學(通量)之專用核心;以及3)共處理器,其中核心1002A-N係大量通用循序核心。因此,處理器1000可為通用處理器、共處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多重整合核心(MIC)共處理器(包括30 個或更多核心)、嵌入式處理器或類似者。處理器可實施於一或多個晶片上。處理器1000可為一或多個基板之部分及/或可使用許多處理技術(例如BiCMOS、CMOS或NMOS)中之任一者將處理器1000實施於一或多個基板上。
記憶體階層包括該等核心內的一或多階快取記憶體、一或多個共享快取記憶體單元1006之集合、耦接至整合型記憶體控制器單元1014之集合的外部記憶體(圖中未示)。共享快取記憶體單元1006之集合可包括一或多個中階快取記憶體,諸如2階(L2)、3階(L3)、4階(L4),或其他階快取記憶體、末階快取記憶體(LLC),及/或上述各者之組合。雖然在一實施例中,環式互連單元1012對特殊用途邏輯1008(例如,整合型圖形邏輯)、共享快取記憶體單元1006之集合及系統代理單元1010/整合型記憶體控制器單元1014進行互連,但替代性實施例可使用任何數種熟知技術來互連此等單元。在一實施例中,在一或多個快取記憶體單元1006與核心1002A-N之間維持同調性。
在一些實施例中,核心1002A-N中之一或多者能夠進行多執行緒處理。系統代理1010包括協調並操作核心1002A-N之彼等組件。系統代理單元1010可包括,例如,功率控制單元(PCU)及顯示單元。PCU可為調節核心1002A-N及特殊用途邏輯1008(例如,整合型圖形邏輯)之功率狀態所需要的邏輯及組件,或者包括上述邏輯及組件。顯示單元係用於驅動一或多個外部已連接顯示器。
核心1002A-N就架構指令集而言可為同質的或 異質的;即,核心1002A-N中之兩者或兩者以上可能能夠執行同一指令集,而其他核心可能僅能夠執行該指令集之子集或不同的指令集。
示範性電腦架構
圖11至圖14 係示範性電腦架構之方塊圖。此項技術中已知的關於以下各者之其他系統設計及組配亦適合:膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器(network hub)、交換器(switch)、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒(set-top box)、微控制器、行動電話、攜帶型媒體播放器、手持式裝置,以及各種其他電子裝置。一般而言,能夠併入如本文中所揭示之處理器及/或其他執行邏輯的多種系統或電子裝置通常適合。
現在參考圖11,所展示為根據本發明之一實施例之系統1100的方塊圖。系統1100可包括一或多個處理器1110、1115,該等處理器耦接至控制器集線器1120。在一實施例中,控制器集線器1120包括圖形記憶體控制器集線器(GMCH)1190及輸入/輸出集線器(IOH)1150(上述兩者可位於單獨的晶片上);GMCH 1190包括記憶體控制器及圖形控制器,記憶體1140及共處理器1145耦接至該等控制器;IOH 1150將輸入/輸出(I/O)裝置1160耦接至GMCH 1190。或者,記憶體控制器及圖形控制器中之一者或兩者整合於(如本文中所描述之)處理器內,記憶體1140及共處理器1145直接耦接至處理器1110,且控制器集線器1120 與IOH 1150位於單個晶片中。
圖11中用虛線表示額外處理器1115之可選擇性質。每一處理器1110、1115可包括本文中所描述之處理核心中之一或多者且可為處理器1000之某一版本。
記憶體1140可為,例如,動態隨機存取記憶體(DRAM)、相位變化記憶體(PCM),或上述兩者之組合。對於至少一個實施例,控制器集線器1120經由以下各者與處理器1110、1115通訊:諸如前端匯流排(FSB)之多分支匯流排(multi-drop bus)、諸如快速路徑互連(QuickPath Interconnect;QPI)之點對點介面,或類似連接1195。
在一實施例中,共處理器1145係專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。在一實施例中,控制器集線器1120可包括整合型圖形加速器。
就優點量度範圍而言,實體資源1110與1115之間可能有各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性及類似者。
在一實施例中,處理器1110執行控制一般類型資料處理操作的指令。共處理器指令可嵌入該等指令內。處理器1110認定此等共處理器指令係應由已附接之共處理器1145執行的類型。因此,處理器1110在共處理器匯流排或其他互連上發佈此等共處理器指令(或表示共處理器指令的控制信號)至共處理器1145。共處理器1145接受並執行接收到之共處理器指令。
現在參考圖12,所展示為根據本發明之一實施例之第一更特定的示範性系統1200的方塊圖。如圖12中所示,多處理器系統1200係點對點互連系統,且包括第一處理器1270及第二處理器1280,該等處理器經由點對點互連1250予以耦接。處理器1270及1280中之每一者可為處理器1000之某一版本。在本發明之一實施例中,處理器1270及1280分別為處理器1110及1115,而共處理器1238為共處理器1145。在另一實施例中,處理器1270及1280分別為處理器1110共處理器1145。
所展示處理器1270及1280分別包括整合型記憶體控制器(IMC)單元1272及1282。處理器1270亦包括點對點(P-P)介面1276及1278,作為其匯流排控制器單元的部分;類似地,第二處理器1280包括P-P介面1286及1288。處理器1270、1280可使用P-P介面電路1278、1288經由點對點(P-P)介面1250交換資訊。如圖12中所示,IMC 1272及1282將處理器耦接至各別記憶體,亦即,記憶體1232及記憶體1234,該等記憶體可為局部地附接至各別處理器之主記憶體的部分。
處理器1270、1280各自可使用點對點介面電路1276、1294、1286、1298經由個別P-P介面1252、1254與晶片組1290交換資訊。晶片組1290可選擇性地經由高效能介面1239與共處理器1238交換資訊。在一實施例中,共處理器1238係專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌 入式處理器或類似者。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(圖中未示),而該共享快取記憶體經由P-P互連與該等處理器連接,以使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之區域快取記憶體資訊儲存在該共享快取記憶體中。
晶片組1290可經由介面1296耦接至第一匯流排1216。在一實施例中,第一匯流排1216可為周邊組件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖12中所示,各種I/O裝置1214可耦接至第一匯流排1216,連同將第一匯流排1216耦接至第二匯流排1220的匯流排橋接器1218。在一實施例中,一或多個額外處理器1215(諸如,共處理器、高通量MIC處理器、GPGPU、加速器(諸如,圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列,或任何其他處理器)耦接至第一匯流排1216。在一實施例中,第二匯流排1220可為低針腳數(LPC)匯流排。各種裝置可耦接至第二匯流排1220,其中包括,例如,鍵盤及/或滑鼠1222、通訊裝置1227,以及儲存單元1228(諸如磁碟機或其他大容量儲存裝置),在一實施例中,儲存單元1228可包括指令/程式碼及資料1230。此外,音訊I/O 1224可耦接至第二匯流排1220。請注意,其他架構係可能的。例如,代替圖12之點對點架構,系統可實施多分支匯流排或其他此種架構。
現在參考圖13,所展示為根據本發明之一實施例之第二更特定的示範性系統1300的方塊圖。圖12及圖13中的相似元件帶有相似參考數字,且圖13已省略圖12之某些態樣以避免混淆圖13之態樣。
圖13例示處理器1270、1280分別可包括整合型記憶體及I/O控制邏輯(「CL」)1272及1282。因此,CL 1272及1282包括整合型記憶體控制器單元且包括I/O控制邏輯。圖13例示不僅記憶體1232、1234耦接至CL 1272、1282,而且I/O裝置1314耦接至控制邏輯1272、1282。舊式I/O裝置1315耦接至晶片組1290。
現在參考圖14,所展示為根據本發明之一實施例之SoC 1400的方塊圖。圖10中的類似元件帶有相似參考數字。此外,虛線方框係更先進SoC上之選擇性特徵。在圖14中,互連單元1402耦接至以下各者:應用處理器1410,其包括一或多個核心202A-N之集合及共享快取記憶體單元1006;系統代理單元1010;匯流排控制器單元1016;整合型記憶體控制器單元1014;一或多個共處理器1420之集合,其可包括整合型圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元1430;直接記憶體存取(DMA)單元1432;以及用於耦接至一或多個外部顯示器的顯示單元1440。在一實施例中,共處理器1420包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器或類似者。
本文中揭示之機制的實施例可以硬體、軟體、韌體或者此類實施方法之組合來實施。本發明之實施例可實施為在可規劃系統上執行之電腦程式或程式碼,可規劃系統包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置及至少一個輸出裝置。
可將程式碼(諸如圖12中例示之程式碼1230)應用於輸入指令以執行本文中所描述之功能且產生輸出資訊。可將輸出資訊以已知方式應用於一或多個輸出裝置。出於本申請案之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可以高階程序性或物件導向式程式設計語言來實施,以與處理系統通訊。必要時,程式碼亦可以組合語言或機器語言來實施。事實上,本文中所描述之機制的範疇不限於任何特定的程式設計語言。在任何情況下,該語言可為編譯語言或解譯語言。
至少一個實施例之一或多個層面可藉由儲存於機器可讀媒體上之代表性指令來實施,該機器可讀媒體表示處理器內的各種邏輯,該等指令在由機器讀取時使機器製造邏輯來執行本文中所描述之技術。此類表示(稱為「IP核心」)可儲存於有形的機器可讀媒體上,且可供應給各種用戶端或製造設施以載入至實際上製造該邏輯或處理器的製造機中。
此等機器可讀儲存媒體可包括(但不限於)由機器或裝置製造或形成的物品的非暫時性有形配置,其中包括:儲存媒體,諸如硬碟、任何其他類型之碟片(包括軟碟片、光碟、光碟片-唯讀記憶體(CD-ROM)、可重寫光碟片(CD-RW)及磁光碟)、半導體裝置(諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、相位變化記憶體(PCM)、磁性或光學卡),或者適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)之設計資料的非暫時性有形機器可讀媒體,其定義本文中所描述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
仿真(包括二進位轉譯、程式碼漸變(code morphing)等)
在一些情況下,可使用指令轉換器將指令自來源指令集轉換成目標指令集。例如,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、漸變、仿真或以其他方式轉換成將由核心處理的一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可位於處理器上、位於處理器外部,或部分位於處理器上而部分位於處理器外部。
圖15係根據本發明之實施例之對照軟體指令轉 換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所說明之實施例中,指令轉換器係軟體指令轉換器,但指令轉換器或者可以軟體、韌體硬體、或其各種組合來實施。圖15展示出,可使用x86編譯器1504來編譯用高階語言1502撰寫的程式以產生x86二進位碼1506,x86二進位碼1506自然可由具有至少一個x86指令集核心之處理器1516執行。具有至少一個x86指令集核心之處理器1516表示可執行與具有至少一個x86指令集核心之Intel處理器大體相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分或(2)旨在在具有至少一個x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以便達成與具有至少一個x86指令集核心之Intel處理器大體相同的結果。x86編譯器1504表示可操作以產生x86二進位碼1506(例如目標碼)之編譯器,其中x86二進位碼1506在經額外連結處理或未經額外連結處理的情況下可在具有至少一個x86指令集核心之處理器1516上執行。類似地,圖15展示出,可使用替代性指令集編譯器1508來編譯用高階語言1502撰寫的程式以產生替代性指令集二進位碼1510,替代性指令集二進位碼1510自然可由不具有至少一個x86指令集核心之處理器1514(例如,具有多個核心的處理器,該等核心執行MIPS Technologies公司(Sunnyvale,CA)之MIPS指令集,及/或該等核心執行ARM Holdings公司 (Sunnyvale,CA)之ARM指令集)執行。使用指令轉換器1512將x86二進位碼1506轉換成自然可由不具有一個x86指令集核心之處理器1514執行的碼。此轉換後的碼不可能與替代性指令集二進位碼1510相同,因為能夠實現此操作的指令轉換器很難製作,然而,轉換後的碼將完成一般操作且由來自替代性指令集之指令構成。因此,指令轉換器1512表示經由仿真、模擬或任何其他處理程序來允許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼1506的軟體、韌體、硬體或其組合。
雖然諸圖中之流程圖展示出由本發明之某些實施例執行之操作之特定次序,但應理解此次序係示範性的(例如,替代性實施例可以不同順序來執行操作,組合某些操作,重疊某些操作,等等)。
雖然已就若干實施例而言描述本發明,但熟習此項技術者將認知到,本發明不限於所描述之實施例,可在隨附申請專利範圍之精神及範疇內使用修改及變化來實踐本發明。描述因此被視為說明性的而非限制性的。
100‧‧‧向量頻率擴展指令
105‧‧‧目的地運算元
110‧‧‧向量遮罩MASK
115‧‧‧來源運算元
120‧‧‧未使用元件控制遮罩
125‧‧‧未使用元件計數
130‧‧‧即時值之選擇性運算元

Claims (20)

  1. 一種在一電腦處理器中執行一向量頻率擴展指令之方法,其包含下列步驟:擷取該向量頻率擴展指令,該向量頻率擴展指令包括一來源運算元及一目的地運算元,其中該來源運算元指定一來源向量暫存器,該來源向量暫存器包括一或多對的一值及運行長度,其需基於該運行長度被擴展為該值之一連串;解碼該擷取的向量頻率擴展指令;以及執行該解碼的向量頻率擴展指令,導致該來源向量暫存器中之一組一或多個來源資料元件被擴展為一組目的地資料元件,該組目的地資料元件包含比該組來源資料元件更多的元件且包括至少一個連串的相等值,該等相等值在該來源向量暫存器中經運行長度編碼。
  2. 如申請專利範圍第1項之方法,其中當一來源資料元件含有需被擴展為不具有一運行長度對之一連串的該值時,該執行該解碼的向量頻率擴展指令進一步導致一異常被引發。
  3. 如申請專利範圍第1項之方法,其中該執行該解碼的向量頻率擴展指令進一步導致一值寫入一未使用元件指示符中,以指示該來源向量暫存器中之哪些元件在擴展期間未經擴展。
  4. 如申請專利範圍第4項之方法,其中該擷取的向量頻率 壓縮指令進一步包含一未使用元件指示符目的地,以指示該未使用元件指示符應被寫入何處。
  5. 如申請專利範圍第1項之方法,其中該擷取的向量頻率擴展指令進一步包含一控制遮罩,該控制遮罩指示來自該來源向量暫存器之一或多個值需被拷貝至該目的地向量暫存器。
  6. 如申請專利範圍第1項之方法,其中該擷取的向量頻率擴展指令進一步包含一壓縮值,該壓縮值需基於與該來源向量暫存器中之該值成對的一運行長度被擴展為一連串。
  7. 如申請專利範圍第6項之方法,其中該執行該解碼的向量頻率擴展指令進一步導致藉由讀取該控制遮罩來決定該壓縮值。
  8. 一種處理器核心,其包含:一硬體解碼單元,其解碼一向量頻率擴展指令,其中該向量頻率壓縮指令包括一來源運算元及一目的地運算元,其中該來源運算元指定一來源向量暫存器,該來源向量暫存器包括一或多對的一值及運行長度,其需基於該運行長度被擴展為該值之一連串;以及一執行引擎單元,其執行該解碼的向量頻率擴展指令,導致該來源向量暫存器中之一組一或多個來源資料元件被擴展為一組目的地資料元件,該組目的地資料元件包含比該組來源資料元件更多的元件且包括至少一個連串的相等值,該等相等值在該來源向量暫存器中經 運行長度編碼。
  9. 申請專利範圍第8項之處理器核心,當一來源資料元件含有需被擴展為不具有一運行長度對之一連串的該值時,該執行單元進一步導致一異常被引發。
  10. 如申請專利範圍第8項之處理器核心,該執行單元進一步導致一值寫入一未使用元件指示符中,以指示該來源向量暫存器中之哪些元件在擴展期間未經擴展。
  11. 如申請專利範圍第11項之處理器核心,其中該向量頻率擴展指令進一步包含一未使用元件指示符目的地,以指示該未使用元件指示符應被寫入何處。
  12. 如申請專利範圍第8項之處理器核心,其中該向量頻率壓縮指令進一步包含一控制遮罩,該控制遮罩指示來自該來源資料元件之一或多個值需被拷貝至該目的地向量暫存器。
  13. 如申請專利範圍第8項之處理器核心,其中該向量頻率壓縮指令進一步包含一壓縮值,該壓縮值需基於與該來源向量暫存器中之該值成對的一運行長度被擴展為一連串。
  14. 如申請專利範圍第13項之處理器核心,該執行單元進一步導致藉由讀取該控制遮罩來決定該壓縮值。
  15. 一種製品,其包含:一有形機器可讀儲存媒體,其上儲存有一向量頻率擴展指令,其中該向量頻率擴展指令包括一來源運算元及一目的地運算元,其中該來源運算元指定一來源向量 暫存器,該來源向量暫存器包括一或多對的一值及運行長度,其需基於該運行長度被擴展為該值之一連串;及其中該向量頻率擴展指令包括一運算碼,該運算碼指示一機器來執行該指令,導致該來源向量暫存器中之一組一或多個來源資料元件被擴展為一組目的地資料元件,該組目的地資料元件包含比該組來源資料元件更多的元件且包括相等值之至少一個連串,該等相等值在該來源向量暫存器中經運行長度編碼。
  16. 如申請專利範圍第15項之製品,其中當一來源資料元件含有需被擴展為不具有一運行長度之一連串之該值時,該向量頻率壓縮指令進一步導致該機器引發一異常。
  17. 如申請專利範圍第15項之製品,其中該向量頻率壓縮指令進一步導致該機器將一值寫入一未使用元件指示符中,以指示該來源向量暫存器中之哪些元件在擴展期間未經擴展。
  18. 如申請專利範圍第18項之製品,其中該向量頻率擴展指令進一步包含一未使用元件指示符目的地,以指示該未使用元件指示符應被寫入何處。
  19. 如申請專利範圍第15項之製品,其中該向量頻率擴展指令進一步包含一壓縮值,該壓縮值需基於與該來源向量暫存器中之該值成對的一運行長度被擴展為一連串。
  20. 如申請專利範圍第19項之製品,其中該向量頻率壓縮指令進一步導致該機器藉由讀取該控制遮罩來決定該壓縮值。
TW101149330A 2011-12-30 2012-12-22 執行向量頻率擴展指令之方法、處理器核心以及製品 TWI473015B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/068217 WO2013101218A1 (en) 2011-12-30 2011-12-30 Vector frequency expand instruction

Publications (2)

Publication Number Publication Date
TW201344573A TW201344573A (zh) 2013-11-01
TWI473015B true TWI473015B (zh) 2015-02-11

Family

ID=48698450

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101149330A TWI473015B (zh) 2011-12-30 2012-12-22 執行向量頻率擴展指令之方法、處理器核心以及製品

Country Status (5)

Country Link
US (1) US10241792B2 (zh)
EP (1) EP2798476B1 (zh)
CN (1) CN104137061B (zh)
TW (1) TWI473015B (zh)
WO (1) WO2013101218A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150186136A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for expand and compress
US10133570B2 (en) 2014-09-19 2018-11-20 Intel Corporation Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated
US9904548B2 (en) 2014-12-22 2018-02-27 Intel Corporation Instruction and logic to perform a centrifuge operation
US20160179520A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for variably expanding between mask and vector registers
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160188333A1 (en) * 2014-12-27 2016-06-30 Intel Coporation Method and apparatus for compressing a mask value
US20170177348A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instruction and Logic for Compression and Rotation
CN105677298B (zh) * 2015-12-30 2018-03-27 李朝波 一种将计算机指令中立即数扩展的方法和装置
EP3336691B1 (en) * 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
EP3336692B1 (en) 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
US10459843B2 (en) * 2016-12-30 2019-10-29 Texas Instruments Incorporated Streaming engine with separately selectable element and group duplication
US20240281253A1 (en) * 2023-02-21 2024-08-22 Meta Platforms, Inc. Compressing instructions for machine-learning accelerators

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090060325A1 (en) * 2007-08-31 2009-03-05 Naoto Shiraishi Device and method for encoding image data
US7565024B2 (en) * 2003-12-19 2009-07-21 Intel Corporation Run length coding and decoding
TWI352512B (en) * 2006-09-20 2011-11-11 Intel Corp Data-modifying run length encoder to avoid data ex

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8313331D0 (en) 1983-05-14 1983-06-22 Int Computers Ltd Decoding run-length encoded data
CA2096584A1 (en) * 1992-05-28 1993-11-29 Frank H. Liao Variable length code decoder for video decompression operations
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
US6331826B1 (en) * 2000-01-04 2001-12-18 International Business Machines Corporation Method for providing an improved run-length encoding algorithm for data compression
US6781528B1 (en) * 2002-10-24 2004-08-24 Apple Computer, Inc. Vector handling capable processor and run length encoding
US6919825B2 (en) * 2003-09-25 2005-07-19 Peerless Systems Corporation Split runlength encoding method and apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565024B2 (en) * 2003-12-19 2009-07-21 Intel Corporation Run length coding and decoding
TWI352512B (en) * 2006-09-20 2011-11-11 Intel Corp Data-modifying run length encoder to avoid data ex
US20090060325A1 (en) * 2007-08-31 2009-03-05 Naoto Shiraishi Device and method for encoding image data

Also Published As

Publication number Publication date
WO2013101218A1 (en) 2013-07-04
US20140019714A1 (en) 2014-01-16
US10241792B2 (en) 2019-03-26
TW201344573A (zh) 2013-11-01
CN104137061A (zh) 2014-11-05
EP2798476B1 (en) 2018-09-19
EP2798476A4 (en) 2016-06-29
CN104137061B (zh) 2017-12-22
EP2798476A1 (en) 2014-11-05

Similar Documents

Publication Publication Date Title
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI470544B (zh) 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法
TWI518590B (zh) 多暫存器聚集指令
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI517031B (zh) 用於呈現各別複數之複數共軛根之向量指令
TWI496080B (zh) 轉置指令之技術
TWI475480B (zh) 向量頻率壓縮指令
TWI483183B (zh) 混洗浮點或整數值的裝置與方法
TWI517041B (zh) 有條件的傳播在單一指令多重資料/向量執行中之評估值的裝置與方法
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI517039B (zh) 用以對緊縮資料執行差異解碼之系統,設備,及方法
TWI517038B (zh) 用於在多維度陣列中之元件偏移計算的指令
TWI502491B (zh) 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器
TWI499976B (zh) 用以產生整數序列的方法、設備、系統及製造物品
TWI582690B (zh) 用於滑動視窗資料存取之設備及方法
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
TWI498816B (zh) 用於設定輸出遮罩之方法、製造物品及設備
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TWI481991B (zh) 改良型排列指令之裝置及方法
TW201346744A (zh) 遮蔽排列指令的裝置及方法
TW201530430A (zh) 用於資料類型之向下轉換的裝置及方法(二)
TWI498814B (zh) 用以基於兩個來源寫入遮罩暫存器而產生相依向量之系統、裝置及方法
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TWI559219B (zh) 用於選擇向量運算之元素的裝置及方法(二)
TWI497411B (zh) 用於決定一值是否在一範圍內之指令的裝置及方法

Legal Events

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