TWI480798B - 用於資料類型之向下轉換的裝置及方法 - Google Patents

用於資料類型之向下轉換的裝置及方法 Download PDF

Info

Publication number
TWI480798B
TWI480798B TW101146877A TW101146877A TWI480798B TW I480798 B TWI480798 B TW I480798B TW 101146877 A TW101146877 A TW 101146877A TW 101146877 A TW101146877 A TW 101146877A TW I480798 B TWI480798 B TW I480798B
Authority
TW
Taiwan
Prior art keywords
value
mask
bit
processor
field
Prior art date
Application number
TW101146877A
Other languages
English (en)
Other versions
TW201346729A (zh
Inventor
Elmoustapha Ould-Ahmed-Vall
Robert Valentine
Tal Uliel
Bret L Toll
Jesus Corbal
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 TW201346729A publication Critical patent/TW201346729A/zh
Application granted granted Critical
Publication of TWI480798B publication Critical patent/TWI480798B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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

Landscapes

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

Description

用於資料類型之向下轉換的裝置及方法 發明領域
本發明之實施例大體係有關於電腦系統之領域。更特定言之,本發明之實施例係有關於用於藉由遮罩來向下轉換資料類型之裝置及方法。
發明背景 一般背景
指令集或指令集架構(ISA)為電腦架構之與程式設計有關的部分,且可包括原生資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置,以及外部輸入及輸出(I/O)。指令一詞在本文中大體係指巨集指令,亦即,提供至處理器(或轉譯(例如,使用靜態二進位轉譯、動態二進位轉譯,包括動態編譯)、變形、模擬或以其他方式將指令轉換為將由處理器處理之一或多個其他指令的指令轉換器)以供執行的指令,其與微指令或微作業(micro-op)相對,微指令或微作業為處理器之解碼器對巨集指令進行解碼之結果。
ISA與微架構相區分,微架構為實行指令集之處 理器的內部設計。具有不同微架構之處理器可共用共同指令集。例如,Intel®奔騰4(Pentium 4)處理器、Intel® CoreTM 處理器與購自Advanced Micro Devices公司(Sunnyvale CA)之處理器實行幾乎相同的x86指令集版本(具有已被添加較新版本的一些擴充),但具有不同的內部設計。例如,可使用熟知技術在不同微架構中以不同方式實行ISA之相同暫存器架構,該等技術包括專用實體暫存器、一或多個使用暫存器重新命名機制(例如,使用暫存器混疊表(RAT)、重排緩衝器(ROB)及收回暫存器檔案;使用多個暫存器對映表及一暫存器集區)動態分配之實體暫存器,等等。除非另外指出,否則片語「暫存器架構」、「暫存器檔案」及「暫存器」在本文中用來代表軟體/程式設計師可見之暫存器架構、暫存器檔案及暫存器以及指令指定暫存器之方式。在需要明確性的情況下,形容詞「邏輯的」、「架構的」或「軟體可見的」將用來指示處於暫存器架構中之暫存器/檔案,而不同形容詞可用來指明處於給定微架構中之暫存器(例如,實體暫存器、重排暫存器、收回暫存器、暫存器集區)。
指令集包括一或多個指令格式。給定指令格式界定各種欄位(位元數目、位元位置)來尤其指定將執行的運算(運算碼)及將被執行該運算的運算元。一些指令格式藉由定義指令模板(或子格式)而進一步分解。例如,給定指令格式之指令模板可經定義而具有指令格式之欄位的不同子集(所包括之欄位通常處於相同次序,但至少一些具有不同位 元位置,此係因為包括較少欄位)及/或經定義而具有以不同方式解譯之給定欄位。因此,ISA之每一指令係使用給定指令格式(且若定義,則在該指令格式之指令模板中的給定一者中)來表達,且包括用於指定運算及運算元之欄位。例如,示範性ADD指令具有特定運算碼及指令格式,該指令格式包括用來指定該運算碼之運算碼欄位及用來選擇運算元之運算元欄位(來源1/目的地及來源2);且此ADD指令在一指令流中之出現將在選擇特定運算元之運算元欄位中具有特定內容。
科學、金融、自動向量化一般目的、RMS(辨識、採擷及合成)以及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊處置)常常需要對大量資料項執行相同操作(稱為「資料平行處理」)。單指令多資料(SIMD)係指使得處理器對多個資料項執行一操作之一種類型的指令。SIMD技術尤其適合於在邏輯上可將暫存器中之位元劃分為數個固定大小資料元素之處理器,該等資料元素中之每一者表示一分開的值。例如,256位元暫存器中之位元可作為以下各者而被指定為將被操作之源運算元:四個分開的64位元緊縮資料元素(四字組(Q)大小資料元素)、八個分開的32位元緊縮資料元素(雙字組(D)資料元素)、16個分開的16位元緊縮資料元素(字組(W)大小資料元素),或32個分開的8位元資料元素(位元組(B)大小資料元素)。此類型的資料稱為緊縮資料類型或向量資料類型,且此資料類型之運算元稱為緊縮資料運算元或向 量運算元。換言之,緊縮資料項或向量係指一序列緊縮資料元素,且緊縮資料運算元或向量運算元為SIMD指令(亦稱為緊縮資料指令或向量指令)之源運算元或目的地運算元。
以實例說明,一種類型的SIMD指令指定將以垂直方式對兩個源向量運算元執行單一向量操作,以產生具有相同大小、具有相同數目個資料元素且處於相同資料元素次序的目的地向量運算元(亦稱為結果向量運算元)。源向量運算元中之資料元素稱為源資料元素,而目的地向量運算元中之資料元素稱為目的地資料元素或結果資料元素。此等源向量運算元具有相同大小且含有具有相同寬度的資料元素,且因此其含有相同數目個資料元素。在兩個源向量運算元中處於相同位元位置的源資料元素形成資料元素對(亦稱為對應資料元素;亦即,每一源運算元之資料元素位置0中的資料元素相對應,每一源運算元之資料元素位置1中的資料元素相對應,依此類推)。由該SIMD指令指定之操作對於源資料元素之此等對中的每一者分開執行,以產生匹配數目個結果資料元素,且因此每一對資料元素具有一對應結果資料元素。由於該操作為垂直的且由於結果向量運算元為相同大小、具有相同數目個資料元素,且結果資料元素係以與源向量運算元相同之資料元素次序儲存,因此結果資料元素在結果向量運算元中處於與其在源向量運算元中之對應源資料元素對相同的位元位置。除了此示範性類型的SIMD指令之外,亦存在多種其他類型的SIMD 指令(例如,具有僅一個或具有兩個以上源向量運算元、以水平方式操作、產生具有不同大小的結果向量運算元、具有不同大小的資料元素,及/或具有不同資料元素次序)。應理解,目的地向量運算元(或目的地運算元)一詞係定義為執行由一指令指定之運算的直接結果,包括將該目的地運算元儲存於一位置(不管其為暫存器還是由該指令指定之記憶體位置),以使得其可由另一指令作為源運算元而存取(藉由由該另一指令指定相同位置)。
諸如由具有一指令集(包括x86、MMXTM 、串流式SIMD擴充(SSE)、SSE2、SSE3、SSE4.1,及SSE4.2指令)之處理器使用的SIMD技術之SIMD技術已實現應用效能之顯著改良。被稱為高級向量擴充(AVX)(AVX1及AVX2)且使用向量擴充(VEX)編碼方案之一組額外SIMD擴充已被發佈及/或公開(例如,見Intel® 64及IA-32架構軟體開發人員手冊(Intel® 64 and IA-32 Architectures Software Developers Manual),2011年10月;且見Intel®高級向量擴充程式設計參考(Intel® Advanced Vector Extensions Programming Reference),2011年6月)。
與本發明之實施例有關的背景
「向上轉換」係指將以第一資料格式儲存之值轉換至第二資料格式,其中用來表示第一資料格式中之該值的位元之數目小於用來表示第二資料格式中之該相同值的位元之數目。相反,「向下轉換」係指將以第一資料格式儲存之值轉換至第 二資料格式,其中用來表示第一資料格式中之該值的位元之數目大於用來表示第二資料格式中之該相同值的位元之數目。
依據本發明之一實施例,係特地提出一種處理器,其用來執行一或多個指令以執行以下操作:讀取將被自一第一值向下轉換至一經向下轉換之值且儲存於一目的地位置的一源運算元;讀取儲存於一遮罩暫存器中之每一遮罩暫存器位元,該(等)遮罩暫存器位元指示對該源運算元值執行一遮罩操作還是一轉換操作;若該(等)遮罩暫存器位元指示將執行一遮罩操作,則執行一指定之遮罩操作,且將該遮罩操作之結果儲存於該目的地位置中;以及若該(等)遮罩暫存器位元指示將不執行一遮罩操作,則對該源運算元值進行向下轉換,且將經向下轉換之值儲存於該指定目的地位置中。
100‧‧‧處理器管線
102‧‧‧擷取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧分配級
110‧‧‧重新命名級
112‧‧‧排程(亦稱為分派或發出)級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧回寫/記憶體寫入級
122‧‧‧異常處置級
124‧‧‧提交級
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取單元
136‧‧‧指令轉譯後備緩衝器
138‧‧‧指令擷取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧重新命名/分配器單元
154‧‧‧收回單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料TLB單元
174‧‧‧資料快取單元
176‧‧‧第2級(L2)快取單元
190‧‧‧處理器核心
200‧‧‧處理器
202A、202N‧‧‧核心
206‧‧‧共用快取單元
208‧‧‧特殊用途邏輯/整合型圖形邏輯
210‧‧‧系統代理/系統代理單元
212‧‧‧環形互連單元
214‧‧‧整合型記憶體控制器單元
216‧‧‧匯流排控制器單元
300‧‧‧系統
310、315‧‧‧處理器/實體資源
320‧‧‧控制器集線器
340‧‧‧記憶體
345‧‧‧共處理器
350‧‧‧輸入/輸出集線器
360‧‧‧輸入/輸出(I/O)器件
390‧‧‧圖形記憶體控制器集線器
395‧‧‧連接
400‧‧‧多處理器系統
414‧‧‧I/O器件
415‧‧‧處理器
416‧‧‧第一匯流排
418‧‧‧匯流排橋接器
420‧‧‧第二匯流排
422‧‧‧鍵盤及/或滑鼠
424‧‧‧音訊I/O
427‧‧‧通訊器件
428‧‧‧儲存單元
430‧‧‧資料/碼
432、434‧‧‧記憶體
438‧‧‧共處理器
439‧‧‧高效能介面
450‧‧‧點對點互連體/點對點(P-P)介面
452、454‧‧‧P-P介面
470‧‧‧第一處理器
472‧‧‧整合型記憶體控制器(IMC)單元/整合型記憶體及I/O控制邏輯
476‧‧‧點對點(P-P)介面
478‧‧‧點對點(P-P)介面/P-P介面電路
480‧‧‧第二處理器
482‧‧‧整合型記憶體控制器(IMC)單元/整合型記憶體及I/O控制邏輯
486‧‧‧P-P介面/點對點介面電路
488‧‧‧P-P介面/P-P介面電路
490‧‧‧晶片組
494、498‧‧‧點對點介面電路
496‧‧‧介面
500‧‧‧系統
514‧‧‧I/O器件
515‧‧‧舊式I/O器件
600‧‧‧SoC
602‧‧‧互連單元
610‧‧‧應用處理器
620‧‧‧共處理器
630‧‧‧靜態隨機存取記憶體(SRAM)單元
640‧‧‧顯示單元
702‧‧‧高階語言
704‧‧‧x86編譯器
706‧‧‧x86二進位碼
708‧‧‧指令集編譯器
710‧‧‧指令集二進位碼
712‧‧‧指令轉換器
714、716‧‧‧x86指令集核心
800‧‧‧處理器
802‧‧‧源暫存器
804‧‧‧目的地暫存器
805‧‧‧轉換邏輯
807‧‧‧截斷邏輯
808‧‧‧飽和邏輯
810、811‧‧‧多工器
870‧‧‧遮罩資料結構
904‧‧‧記憶體
1100‧‧‧通用向量友好指令格式
1105‧‧‧無記憶體存取
1110‧‧‧無記憶體存取、全捨位控制類型操作
1112‧‧‧無記憶體存取、寫入遮罩控制、部分捨位控制類型操作
1115‧‧‧無記憶體存取、資料變換類型操作
1117‧‧‧無記憶體存取、寫入遮罩控制、向量大小類型操作
1120‧‧‧記憶體存取
1125‧‧‧記憶體存取、暫態
1127‧‧‧記憶體存取、寫入遮罩控制
1130‧‧‧記憶體存取、非暫態
1140‧‧‧格式欄位
1142‧‧‧基本操作欄位
1144‧‧‧暫存器索引欄位
1146‧‧‧修飾符欄位
1150‧‧‧擴增操作欄位
1152‧‧‧α欄位
1152A‧‧‧RS欄位
1152A.1‧‧‧捨位
1152A.2‧‧‧資料變換
1152C‧‧‧寫入遮罩控制(Z)欄位
1154‧‧‧β欄位
1154A‧‧‧捨位控制欄位
1154B‧‧‧資料變換欄位
1156‧‧‧SAE欄位
1157A.1‧‧‧捨位
1157A.2‧‧‧向量大小
1157B‧‧‧廣播欄位
1158、1159A‧‧‧捨位操作欄位
1159B‧‧‧向量長度欄位
1160‧‧‧比例欄位
1162A‧‧‧位移欄位
1162B‧‧‧位移因數欄位/位移比例欄位
1164‧‧‧資料元素寬度欄位
1168‧‧‧類別欄位
1168A‧‧‧類別A
1168B‧‧‧類別B
1170‧‧‧寫入遮罩欄位
1172‧‧‧即時運算欄位
1200‧‧‧特定向量友好指令格式
1205‧‧‧REX欄位
1210‧‧‧REX’欄位
1215‧‧‧運算碼對映欄位
1220‧‧‧VVVV欄位
1225‧‧‧前綴編碼欄位
1230‧‧‧實際運算碼欄位
1240‧‧‧MOD R/M欄位
1242‧‧‧MOD欄位
1244‧‧‧MODR/M.reg欄位
1246‧‧‧MODR/M.r/m欄位
1254‧‧‧xxx欄位
1256‧‧‧bbb欄位
1300‧‧‧暫存器架構
1310‧‧‧向量暫存器
1315‧‧‧寫入遮罩暫存器
1325‧‧‧通用暫存器
1345‧‧‧純量浮點堆疊暫存器檔案
1350‧‧‧MMX緊縮整數扁平暫存器檔案
1400‧‧‧指令解碼器
1402‧‧‧晶粒上互連網路
1404‧‧‧L2快取記憶體子集/L2快取記憶體之局部子集
1406‧‧‧第1級(L1)快取記憶體
1406A‧‧‧L1資料快取記憶體
1408‧‧‧純量單元
1410‧‧‧向量單元
1412‧‧‧純量暫存器
1414‧‧‧向量暫存器
1420‧‧‧拌和單元
1422A、1422B‧‧‧數字轉換單元
1424‧‧‧複製單元
1426‧‧‧寫入遮罩
1428‧‧‧ALU
圖1A 為例示出根據本發明之實施例的示範性有序管線及示範性暫存器重新命名、亂序發出/執行管線兩者之方塊圖;圖1B 為例示出根據本發明之實施例的將包括於處理器中的有序架構核心之示範性實施例及示範性暫存器重新命名、亂序發出/執行架構核心兩者之方塊圖;圖2 為根據本發明之實施例的具有整合式記憶體控制 器及圖形的單核心處理器及多核心處理器之方塊圖;圖3 例示出根據本發明之一實施例的系統之方塊圖;圖4 例示出根據本發明之一實施例的第二系統之方塊圖;圖5 例示出根據本發明之一實施例的第三系統之方塊圖;圖6 例示出根據本發明之一實施例的單晶片系統(SoC)之方塊圖;圖7 例示出根據本發明之實施例的對比用來將源指令集中之二進位指令轉換為目標指令集中之二進位指令的軟體指令轉換器之使用的方塊圖;圖8 例示出根據本發明之一實施例之用於執行向下轉換操作的裝置;圖9 例示出根據本發明之一實施例之用於執行向下轉換操作的另一裝置;圖10 例示出根據本發明之一實施例之用於執行向下轉換操作的方法;圖11A圖11B 為例示出根據本發明之實施例的通用向量友好指令格式及其指令模板的方塊圖;圖12A圖12D 為例示出根據本發明之實施例的示範性特定向量友好指令格式的方塊圖;及圖13 為根據本發明之一實施例的暫存器架構之方塊圖;圖14A 為根據本發明之實施例的單處理器核心連同其 至晶粒上互連網路之連接及其第2級(L2)快取記憶體的局部子集之方塊圖;及圖14B 為根據本發明之實施例的圖14A中之處理器核心的部分之展開圖。
詳細說明 示範性處理器架構及資料類型
圖1A 為例示出根據本發明之實施例的示範性有序管線及示範性暫存器重新命名、亂序發出/執行管線兩者之方塊圖。圖1B 為例示出根據本發明之實施例的將包括於處理器中的有序架構核心之示範性實施例及示範性暫存器重新命名、亂序發出/執行架構核心兩者之方塊圖。圖1A至圖1B中之實線框說明有序管線及有序核心,而虛線框之任擇添加說明暫存器重新命名、亂序發出/執行管線及核心。考慮到有序態樣為亂序態樣之子集,將描述亂序態樣。
在圖1A中,處理器管線100包括擷取級102、長度解碼級104、解碼級106、分配級108、重新命名級110、排程(亦稱為分派或發出)級112、暫存器讀取/記憶體讀取級114、執行級116、回寫/記憶體寫入級118、異常處置級122,及提交級124。
圖1B展示處理器核心190,其包括耦接至執行引擎單元150之前端單元130,前端單元130及執行引擎單元150皆耦接至記憶體單元170。核心190可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字集 (VLIW)核心,或混合或替代核心類型。作為又一選項,核心190可為特殊用途核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,或其類似者。
前端單元130包括耦接至指令快取單元134之分支預測單元132,指令快取單元134耦接至指令轉譯後備緩衝器(TLB)136,指令轉譯後備緩衝器(TLB)136耦接至指令擷取單元138,指令擷取單元138耦接至解碼單元140。解碼單元140(或稱解碼器)可對指令進行解碼,且產生自原始指令解碼或以其他方式反映原始指令或係自原始指令導出之一或多個微操作、微碼鍵入點、微指令、其他指令或其他控制信號作為輸出。解碼單元140可使用各種不同機構來實行。適當機構之實例包括但不限於詢查表、硬體實行方案、可規劃邏輯陣列PLA、微碼唯讀記憶體(ROM),等。在一實施例中,核心190包括微碼ROM或儲存用於某些微指令(例如,在解碼單元140中或以其他方式處於前端單元130中)之微碼的其他媒體。解碼單元140耦接至執行引擎單元150中之重新命名/分配器單元152。
執行引擎單元150包括耦接至收回單元154及一組一或多個排程器單元156之重新命名/分配器單元152。排程器單元156表示任何數目之不同排程器,包括保留站、中央指令窗,等。排程器單元156耦接至實體暫存器檔案單元158。實體暫存器檔案單元158中之每一者表示一或多個實體暫存器檔案,該一或多個實體暫存器檔案中之不同實體 暫存器檔案儲存一或多個不同資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,為下一將執行之指令的指令指標)等。在一實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元及處理暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器檔案單元158由收回單元154重疊以說明可實行暫存器重新命名及亂序執行之各種方式(例如,使用重新排序緩衝器及收回暫存器檔案;使用未來檔案、歷史檔案及收回暫存器檔案;使用暫存器對映表及暫存器集區;等)。收回單元154及實體暫存器檔案單元158耦接至執行叢集160。執行叢集160包括一組一或多個執行單元162及一組一或多個記憶體存取單元164。執行單元162可執行各種操作(例如,移位、加法、減法、乘法)且可對各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行操作。儘管一些實施例可包括專用於特定功能或功能集合之數個執行單元,但其他實施例可包括僅一個執行單元或皆執行所有功能之多個執行單元。排程器單元156、實體暫存器檔案單元158及執行叢集160展示為可能為多個,因為某些實施例對於某些類型的資料/操作產生分開的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其每一者具有其自身的排程器單元、實體暫存器檔案單元及/或執行叢集,且在分開的記憶體存取管線的情況下,實行某些實施例, 其中此管線之僅執行叢集具有記憶體存取單元164)。亦應理解,在使用分開的管線的情況下,此等管線中之一或多者可為亂序發出/執行,且其餘管線為有序。
該組記憶體存取單元164耦接至記憶體單元170,記憶體單元170包括耦接至資料快取單元174之資料TLB單元172,資料快取單元174耦接至第2級(L2)快取單元176。在一示範性實施例中,記憶體存取單元164可包括載入單元、儲存位址單元及儲存資料單元,其中之每一者耦接至記憶體單元170中之資料TLB單元172。指令快取單元134進一步耦接至記憶體單元170中之第2級(L2)快取單元176。L2快取單元176耦接至快取記憶體之一或多個其他層級,且最終耦接至主記憶體。
以實例說明,示範性暫存器重新命名、亂序發出/執行核心架構可如下實行管線100:1)指令擷取138執行擷取及長度解碼級102及104;2)解碼單元140執行解碼級106;3)重新命名/分配器單元152執行分配級108及重新命名級110;4)排程器單元156執行排程級112;5)實體暫存器檔案單元158及記憶體單元170執行暫存器讀取/記憶體讀取級114;執行叢集160執行執行級116;6)記憶體單元170及實體暫存器檔案單元158執行回寫/記憶體寫入級118;7)各種單元可涉及於異常處置級122;及8)收回單元154及實體暫存器檔案單元158執行提交級124。
核心190可支援一或多個指令集(例如,x86指令集(具有已添加較新版本之一些擴充);MIPS Technologies(Sunnyvale,CA)之MIPS指令集;ARM Holdings(Sunnyvale,CA)之ARM指令集(具有任擇額外擴充,諸如NEON)),包括本文中所描述之指令。在一實施例中,核心190包括用來支援緊縮資料指令集擴充(例如,AVX1、AVX2及/或某一形式的通用向量友好指令格式(U=0及/或U=1),進而允許使用緊縮資料執行由許多多媒體應用使用之操作的邏輯。
應理解,該核心可支援多執行緒操作(執行兩個或兩個以上的並行操作或執行緒集合),且可以多種方式來支援此操作,包括時間切片多執行緒操作、同時多執行緒操作(其中單一實體核心提供用於實體核心正同時進行多執行緒操作的執行緒中之每一者的邏輯核心)或其組合(例如,時間切片擷取及解碼以及其後的同時多執行緒操作,諸如在Intel®超執行緒技術中。)。
儘管在亂序執行之情境中描述暫存器重新命名,但應理解,暫存器重新命名可用於有序架構中。儘管處理器之所說明實施例亦包括分開的指令及資料快取單元134/174以及共用L2快取單元176,但替代實施例可具有用於指令及資料兩者之單一內部快取記憶體,諸如第1級(L1)內部快取記憶體或內部快取記憶體之多個層級。在一些實施例中,系統可包括內部快取記憶體與在核心及/或處理器外部之外部快取記憶體之組合。或者,所有快取記憶體可在核心及/或處理器外部。
圖2 為根據本發明之實施例的處理器200之方塊 圖,處理器200可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形。圖2中之實線框說明處理器200具有單一核心202A、系統代理210、一組一或多個匯流排控制器單元216,而虛線框之任擇添加說明替代處理器200具有多個核心202A至202N、在系統代理單元210中之一組一或多個整合型記憶體控制器單元214及特殊用途邏輯208。
因此,處理器200之不同實行方案可包括:1)CPU,其中特殊用途邏輯208為整合型圖形及/或科學(通量)邏輯(其可包括一或多個核心),且核心202A至202N為一或多個通用核心(例如,通用有序核心、通用亂序核心,兩者之組合);2)共處理器,其中核心202A至202N為主要意欲用於圖形及/或科學(通量)之大量特殊用途核心;及3)共處理器,其中核心202A至202N為大量通用有序核心。因此,處理器200可為通用處理器、共處理器或特殊用途處理器,諸如網路或通訊處理器、壓縮處理器、圖形處理器、GPGPU(通用圖形處理單元)、高通量多整合型核心(MIC)共處理器(包括30個或30個以上核心)、嵌入式處理器,或其類似者。處理器可實行於一或多個晶片上。處理器200可為一或多個基板之部分及/或可使用數種技術(諸如,BiCMOS、CMOS或NMOS)中之任一者而實行於一或多個基板上。
記憶體階層包括在核心內之快取記憶體之一或多個層級,一組或一或多個共用快取單元206,及耦接至該 組整合型記憶體控制器單元214之外部記憶體(未展示)。該組共用快取單元206可包括一或多個中間層級快取記憶體(諸如快取記憶體之第2級(L2)、第3級(L3)、第4級(L4)或其他層級)、最後層級快取記憶體(LLC)及/或其組合。儘管在一實施例中,環形互連單元212互連整合型圖形邏輯208、該組共用快取單元206及系統代理單元210/整合型記憶體控制器單元214,但替代實施例可使用任何數目之熟知技術用於互連此等單元。在一實施例中,在一或多個快取單元206與核心202A至202N之間維持一致性。
在一些實施例中,核心202A至202N中之一或多者能夠進行多執行緒操作。系統代理210包括協調且操作核心202A至202N之彼等組件。系統代理單元210可包括例如電力控制單元(PCU)及顯示單元。PCU可為或可包括調節核心202A至202N及整合型圖形邏輯208所需之邏輯及組件。顯示單元用於驅動一或多個外部連接之顯示器。
核心202A至202N在架構指令集方面可為同質或異質的;亦即,核心202A至202N中之兩者或兩者以上可能夠執行相同指令集,而其他者可僅能夠執行該指令集或不同指令集之子集。
圖3至圖6 為示範性電腦架構之方塊圖。此項技術中對於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、引擎工作站、伺服器、網路器件、網路集線器、交換器、嵌入式處理器、數位信號處理器、圖形器件、視訊遊戲器件、機上盒、微控制器、蜂巢式電話、可攜式媒體播 放器、手持式器件及各種其他電子器件之其他系統設計及組態亦係適當的。一般而言,能夠併入如本文所揭示之處理器及/或其他執行邏輯之大量系統或電子器件通常係適當的。
現參閱圖3 ,展示根據本發明之一實施例之系統300的方塊圖。系統300可包括耦接至控制器集線器320之一或多個處理器310、315。在一實施例中,控制器集線器320包括圖形記憶體控制器集線器(GMCH)390及輸入/輸出集線器(IOH)350;GMCH 390包括記憶體340及共處理器345所耦接至的記憶體及圖形控制器;IOH 350將輸入/輸出(I/O)器件360耦接至GMCH 390。或者,記憶體及圖形控制器中之一或多者整合於處理器中(如本文中所描述),記憶體340及共處理器345直接耦接至處理器310,且控制器集線器320與IOH 350處於單一晶片上。
額外處理器315之任擇性質在圖3中用虛線指出。每一處理器310、315可包括本文所描述之處理核心中之一或多者,且可為處理器200之某一版本。
記憶體340可為例如動態隨即存取記憶體(DRAM)、相變記憶體(PCM)或兩者之組合。對於至少一實施例,控制器集線器320經由諸如前側匯流排(FSB)之多點匯流排、諸如QuickPath Interconnect(QPI)或類似連接395之點對點介面與處理器310、315通訊
在一實施例中,共處理器345為特殊用途處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引 擎、圖形處理器、GPGPU、嵌入式處理器,或其類似者。在一實施例中,控制器集線器320可包括整合型圖形加速器。
實體資源310、315之間在一系列優點量度方面可存在多種差異,包括架構的、微架構的、熱的、功率消耗特性,及其類似者。
在一實施例中,處理器310執行控制通用類型的資料處理操作之指令。共處理器指令可嵌入於該等指令內。處理器310將此等共處理器指令辨識為具有應由所附接之共處理器345執行之類型。因此,處理器310在處理器匯流排或其他互連體上將此等共處理器指令(或表示共處理器指令之控制信號)發出至共處理器345。共處理器345接受且執行所接收之共處理器指令。
現參閱圖4 ,展示根據本發明之一實施例之第一更特定示範性系統400的方塊圖。如圖4中所示,多處理器系統400為點對點互連體系統,且包括經由點對點互連體450耦接之第一處理器470及第二處理器480。處理器470及480中之每一者可為處理器200之某一版本。在本發明之一實施例中,處理器470及480分別為處理器310及315,而共處理器438為共處理器345。在另一實施例中,處理器470及480分別為處理器310、共處理器345。
處理器470及480展示為分別包括整合型記憶體控制器(IMC)單元472及482。處理器470亦包括點對點(P-P)介面476及478作為其匯流排控制器單元之部分;類似地, 第二處理器480包括P-P介面486及488。處理器470、480可使用P-P介面電路478、488經由點對點(P-P)介面450交換資訊。如圖4中所示,IMC 472及482將處理器耦接至個別記憶體,即記憶體432及記憶體434,該等記憶體可為以局部附接至各別處理器之主記憶體之部分。
處理器470、480可各自使用點對點介面電路476、494、486、498經由個別P-P介面452、454與晶片組490交換資訊。晶片組490可任擇地經由高效能介面439與共處理器438交換資訊。在一實施例中,共處理器438為特殊用途處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,或其類似者。
共用快取記憶體(未展示)可包括於處理器中或兩個處理器之外部,而又經由P-P互連體與該等處理器連接,使得在將處理器置於低功率模式的情況下,任一或兩個處理器之局部快取資訊可儲存於共用快取記憶體中。
晶片組490可經由介面496耦接至第一匯流排416。在一實施例中,第一匯流排416可為周邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖4中所示,各種I/O器件414可與匯流排橋接器418一起耦接至第一匯流排416,該匯流排橋接器將第一匯流排416耦接至第二匯流排420。在一實施例中,諸如共處理器、高通量MIC處理器、GPGPU、加速器(諸如,圖形 加速器或數位信號處理(DSP)單元)之一或多個額外處理器415耦接至第一匯流排416。在一實施例中,第二匯流排420可為低接針計數(LPC)匯流排。各種器件可耦接至第二匯流排420,該等器件包括例如鍵盤及/或滑鼠422、通訊器件427及諸如磁碟驅動器或其他大容量儲存器件之儲存單元428,在一實施例中該儲存單元可包括指令/碼及資料430。另外,音訊I/O 424可耦接至第二匯流排420。注意,其他架構係可能的。例如,替代圖4之點對點架構,一系統可實行多點匯流排或其他此種架構。
現參閱圖5 ,展示根據本發明之一實施例之第二更特定示範性系統500的方塊圖。圖4及圖5中之相同元件具有相同元件符號,且圖4之某些態樣已自圖5略去以便避免混淆圖5之其他態樣。
圖5例示出處理器470、480可分別包括整合型記憶體及I/O控制邏輯(「CL」)472及482。因此,CL 472、482包括整合型記憶體控制器單元,且包括I/O控制邏輯。圖5例示出不僅記憶體432、434耦接至CL 472、482,而且I/O器件514亦耦接至控制邏輯472、482。舊式I/O器件515耦接至晶片組490。
現參閱圖6 ,展示根據本發明之一實施例之SoC600的方塊圖。圖2中之類似元件具有相同元件符號。此外,虛線框係更高級SoC上之任擇特徵。在圖6中,互連單元602耦接至:應用處理器610,其包括一組一或多個核心202A至202N及共用快取單元206;系統代理單元210;匯流排控 制器單元216;整合型記憶體控制器單元214;一組一或多個共處理器620,其可包括整合型圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元630;直接記憶體存取(DMA)單元632;及顯示單元640,用於耦接至一或多個外部顯示器。在一實施例中,共處理器620包括特殊用途處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器,或其類似者。
本文所揭示之機構之實施例可用硬體、軟體、韌體或此等實行方法之組合來實行。本發明之實施例可實行為在可規劃系統上執行的電腦程式或程式碼,該等可規劃系統包含至少一處理器、儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一輸入器件及至少一輸出器件。
諸如圖4中所例示出的碼430之程式碼可應用於輸入指令來執行本文中所描述之功能且產生輸出資訊。該輸出資訊可以已知方式應用於一或多個輸出器件。為達成本申請案之目的,處理系統包括具有處理器之任何系統,該處理器諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可以高階程序性或物件導向式程式設計語言來實行以與處理系統通訊。必要時,程式碼亦可以組合語言或機器語言來實現。實際上,本文中所描述之機構在範疇上並不限於任何特定程式設計語言。在任何情況 下,語言可為經編譯或經解譯語言。
至少一實施例之一或多個態樣可藉由儲存於機器可讀取媒體上之代表性指令來實行,該等代表性指令表示處理器內之各種邏輯,其在由機器讀取時使得該機器製作用來執行本文所述技術之邏輯。稱為「IP核心」之此等表示可儲存於有形機器可讀取媒體上且供應至各種客戶或製造設施以載入至實際製造該邏輯或處理器之製作機器中。
此等機器可讀取儲存媒體可包括但不限於:由機器或器件製造或形成之物品的非暫時性有形配置,包括儲存媒體,諸如硬碟、任何其他類型之碟片,包括軟碟、光碟、光碟片唯讀記憶體(CD-ROM)、可重寫光碟片(CD-RW)及磁光碟;半導體器件,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM);磁卡或光卡,或適合於儲存電子指令之任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有設計資料之非暫時性有形機器可讀取媒體,諸如硬體描述語言(HDL),其界定本文中所描述之結構、電路、裝置、處理器及/或系統特徵。此等實施例亦可稱為程式產品。
在一些情況下,可使用指令轉換器來將指令自源指令集轉換為目標指令集。舉例而言,指令轉換器可轉譯 (例如,使用靜態二進位轉譯、動態二進位轉譯,包括動態編譯)、變形、模擬或以其他方式將指令轉換為將由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實行。指令轉換器可在處理器上、在處理器外,或部分在處理器上部分在處理器外。
圖7 為根據本發明之實施例的對比用以將源指令集中之二進位指令轉換為目標指令集中之二進位指令的軟體指令轉換器之使用的方塊圖。在所說明之實施例中,指令轉換器為軟體指令轉換器,但替代地,指令轉換器可以軟體、韌體、硬體或其各種組合來實行。圖7展示可使用x86編譯器704來編譯呈高階語言702之程式以產生x86二進位碼706,該x86二進位碼706天然地可由具有至少一x86指令集核心716之處理器執行。具有至少一x86指令集核心716之處理器表示可執行與具有至少一x86指令集核心之Intel處理器實質上相同之功能的任何處理器,具體係藉由相容地執行或以其他方式處理(1)Intel x86指令集核心之指令集的實質部分或(2)應用程式之目標碼版本或其他軟體,其目標在於在具有至少一x86指令集核心之Intel處理器上執行以便達成與具有至少一x86指令集核心之Intel處理器實質上相同之結果。x86編譯器704表示可操作來產生x86二進位碼706(例如,目標碼)的編譯器,該x86二進位碼706可在具有或不具有額外連結處理之情況下在具有至少一x86指令集核心716之處理器上執行。類似地,圖7展示可使用替代指令集編譯器708來編譯高階語言702中之程式來產生替代指 令集二進位碼710,該指令集二進位碼710天然地可由不具有至少一x86指令集核心714之處理器(例如,具有執行MIPS Technologies(Sunnyvale,CA)之MIPS指令集及/或執行ARM Holdings(Sunnyvale,CA)之ARM指令集的核心之處理器)執行。指令轉換器712用來將x86二進位碼706轉換為天然地可由不具有x86指令集核心714之處理器執行的碼。此經轉換之碼不太可能與替代指令集二進位碼710相同,因為能夠進行此轉換之指令轉換器難以製造;然而,經轉換之碼將完成通用操作,且由來自替代指令集之指令構成。因此,指令轉換器712表示軟體、韌體、硬體或其組合,其經由模擬、仿真或任何其他過程而允許部具有x86指令集處理器或核心的處理器或其他電子器件執行x86二進位碼706。
用於資料類型之向下轉換的本發明之實施例
下文描述之本發明之實施例採取緊縮源且向下轉換至較小整數類型。所描述之實施例用截斷、有符號飽和及無符號飽和來執行轉換。當使用截斷時,在將值自源轉換至較小目的地時廢棄最低有效位元。飽和類似於輸入,惟值係經捨進除外。使用飽和,首先截斷頂部位元,且(若其不為零)將數字之其餘部分捨進至最大至。舉例而言,對於位元模式101001,截斷飽和所遵循之兩個最高有效位元導致值1111。對於有符號飽和,保留含有原始值之正負號(+/-)的位元,且對於無符號飽和,廢棄正負號位元。
本發明之實施例允許自每一資料類型向下轉換至所有較小資料類型(例如,自四字組至雙子組,自字組至 位元組,等)。目的地運算元將具有較小向量長度(例如,當將512個位元自四字組向下轉換為雙子組時,僅256位元)。因此,本發明之一些實施例採取兩個源,且將結果緊縮於一個目的地中,藉此節省一個儲存區。
圖8 例示出根據本發明之一實施例之具有轉換邏輯805之處理器800,該轉換邏輯805用於將儲存於源暫存器802中之值A轉換為目的地暫存器804中的值A’。在圖8中展示之特定實例中,源802為128位元,且目的地804為8位元。然而,應注意,本發明之基本原理不限於此特定實行方案。
在一實施例中,遮罩位元亦可指定於用於目的地暫存器資料元素中之每一者的遮罩資料結構870中。若與目的地暫存器中之特定資料元素相關聯的遮罩位元被設定為真,則轉換邏輯805將該等值自A轉換為本文中描述之A’。若將遮罩位元設定為假,則在一實施例中,轉換邏輯805寫入全零至相關聯之目的地暫存器項目。舉例而言,若與目的地暫存器相關聯之遮罩位元被設定至假值,則在一實施例中,轉換邏輯805寫入全零至目的地804。回應於遮罩值而寫入零至目的地資料元素之前述技術在本文中稱為「歸零遮罩」。或者,本發明之一實施例使用「合併遮罩」,其中維持儲存於目的地暫存器中之先前資料元素值。因此,返回至以上實例,若使用「合併遮罩」,則A’之位元將維持其先前值。當然,可反轉上文描述之遮罩位元,同時仍符合本發明之基本原理(例如,真=遮罩;假=無遮罩)。
在操作中,若遮罩位元指示轉換邏輯應將值A轉 換為較小值A’,則其可藉由截斷邏輯807截斷該值,或藉由飽和邏輯808使該值飽和(使用有符號或無符號飽和)。在一實施例中,使用分開的指令來指示將執行截斷、有符號飽和還是無符號飽和。該等指令由轉換邏輯執行以實行所需操作。
圖8 中所說明,在一實施例中,轉換邏輯805存取暫存器802、804以藉由控制多工器810至811而執行以上操作。一般熟習此項技術者熟知實行多工器所需之邏輯,且此處將不詳細描述該邏輯。
圖9 中所說明之一實施例中,經經轉換之值儲存至記憶體904而非目的地暫存器804。在此實施例中,不使用歸零遮罩以避免使結果歸零所需的成本高昂的記憶體存取。實情為,僅使用合併-遮罩,其(如前所述)使得儲存於記憶體中之輸出值A’維持其現有值。
圖10中例示出根據本發明之一實施例之方法。該方法可在圖8至圖9 中所所示的處理器架構之情境下實行,但不限於任何特定架構。
在1001,選擇將更新之源,且在1002,關於是否針對該源指定寫入遮罩進行判定。若寫入遮罩條件被設定為假值,則基於特定遮罩類型對目的地暫存器中之源資料進行更新。例如,若使用歸零遮罩,則將全零寫入至目的地暫存器或記憶體。若使用合併-遮罩,則維持先前值(如上所述)。
若將寫入遮罩條件設定為真值,則在1004,關於 將執行截斷還是有符號/無符號飽和進行判定。若截斷,則在1005,截斷源值(例如,移除最低有效位元),且將結果儲存於目的地暫存器或記憶體中。若使用有符號/無符號飽和,則在1006,在目的地暫存器或記憶體中使結果飽和。處理記著終止。
下文闡述描述本發明之一實施例之實行方案的偽碼。然而,應理解,本發明之基本原理不限於該偽碼中所描述之特定實行方案。該偽碼實例係針對自四字組至位元組之有符號飽和而提供。
A. VPMOVSQB指令(當目的地為暫存器時)
(KL, VL) = (2, 128), (4, 256), (8, 512)
FOR j ← 00 TO KL-1 i ← j * 7 m ← j* 64 IF k1[j] OR *no writemask* THEN DEST [i-7:i] ← SaturateSignedQuadWordToB yte (SRC[m+63:m]) ELSE IF *merging-masking* ; merging-masking THEN*DEST[i+7:i] remains unchanged* ELSE *zeroing-masking* ; zeroing-masking DEST[i+7:i}=0 FI FI; ENDFOR
DEST[MAX_VL-1 :VL/8] ← 0;
B. VPMOVSQB指令(當目的地為記憶體時)
(KL, VL) = (2, 128), (4, 256), (8, 512)
FOR j ← 0 TO KL-1 i ← j*7 m ← j*64 IF k1[j] OR *no writemask* THEN DEST[i_7:i] ← SaturateSignedQuadWordToByte (SRC[m+63:m]) ELSE *DEST[i+7:i] remains unchanged*; merging - masking FI; EN DFOR
示範性指令格式
可以不同形式體現本文描述之指令的實施例。另外,下文詳述示範性系統、架構及管線。指令之實施例可在此種系統、架構及管線上執行,但不限於所詳述之彼等系統、架構及管線。
向量友好指令格式為適合於向量指令之指令格式(存在專門用於向量操作之某些欄位)。儘管描述了經由向量友好指令格式支援向量及純量操作兩者之實施例,但替代實施例僅使用向量來操作向量友好指令格式。
圖11A至圖11B 為例示出根據本發明之實施例的通用向量友好指令格式及其指令模板的方塊圖。圖11A為例示出根據本發明之實施例的通用向量友好指令格式及其類別A指令模板的方塊圖;而圖11B為例示出根據本發明之實 施例的通用向量友好指令格式及其類別B指令模板的方塊圖。具體言之,針對通用向量友好指令格式1100界定類別A及類別B指令模板,類別A及類別B指令模板兩者皆包括無記憶體存取1105指令模板及記憶體存取1120指令模板。通用一詞在向量友好指令格式之情境下係指未系結至任何特定指令集之指令格式。
儘管在將描述的本發明之實施例中,向量友好指令格式支援以下各者:具有32位元(4位元組)或64位元(8位元組)資料元素寬度(或大小)的64位元組向量運算元長度(或大小)(且因此,64位元組向量由16個雙字組大小的元素或者8個四字組大小的元素組成);具有16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小)的64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小)的32位元組向量運算元長度(或大小);及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小)的16位元組向量運算元長度(或大小);但替代實施例可支援具有較大、較小或不同資料元素寬度(例如,128位元(16位元組)資料元素寬度)的較大、較小及/或不同向量運算元大小(例如,256位元組向量運算元)。
圖11A中之類別A指令模板包括:1)在無記憶體存取1105指令模板中,展示有無記憶體存取、全捨位控制類型操作1110指令模板及無記憶體存取、資料變換類型操 作1115指令模板;及2)在記憶體存取1120指令模板中,展示有記憶體存取、暫態1125指令模板及記憶體存取、非暫態1130指令模板。圖11B中之類別B指令模板包括:1)在無記憶體存取1105指令模板中,展示有無記憶體存取、寫入遮罩控制、部分捨位控制類型操作1112指令模板及無記憶體存取、寫入遮罩控制、向量大小類型操作1117指令模板;及2)在記憶體存取1120指令模板中,展示有記憶體存取、寫入遮罩控制1127指令模板。
通用向量友好指令格式1100包括下文以圖11A至圖11B中所例示出的次序列舉的以下欄位。
格式欄位1140--此欄位中的特定值(指令格式識別符值)唯一地識別向量友好指令格式,且因此識別呈該向量友好指令格式之指令在指令串流中之出現。如此,在對於僅具有通用向量友好指令格式之指令集而言不需要此欄位的意義上,此欄位為任擇的。
基本操作欄位1142--其內容區分不同的基本操作。
暫存器索引欄位1144--其內容直接地或經由位址產生來指定源運算元及目的地運算元(假定其在暫存器或在記憶體中)之位置。此等欄位包括足夠數目之位元來自P×Q(例如,32×512、16×128、32×1024、64×1024)個暫存器檔案選擇N個暫存器。儘管在一實施例中,N可多達三個源暫存器及一個目的地暫存器,但替代實施例可支援較多或較少的源暫存器及目的地暫存器(例如,可支援多達兩個 源,其中此等源中之一者亦充當目的地,可支援多達三個源,其中此等源中之一者亦充當目的地,可支援多達兩個源及一個目的地)。
修飾符欄位1146--其內容區分指定記憶體存取之呈通用向量指令格式之指令的出現與不指定記憶體存取之呈通用向量指令格式之指令的出現;亦即,在無記憶體存取1105指令模板與記憶體存取1120指令模板之間相區分。記憶體存取操作讀取及/或寫入至記憶體階層(在一些情況下,使用暫存器中之值指定源位址及/或目的地位址),而非記憶體存取操作並不讀取及/或寫入至記憶體階層(例如,源及目的地為暫存器)。儘管在一實施例中,此欄位亦在三個不同方式之間進行選擇以執行記憶體位址計算,但替代實施例可支援較多、較少或不同方式來執行記憶體位址計算。
擴增操作欄位1150--其內容區分除了基本操作之外亦將執行多種不同操作中之哪一者。此欄位為情境特定性的。在本發明之一實施例中,此欄位劃分成類別欄位1168、α欄位1152及β欄位1154。擴增操作欄位1150允許在單一指令而非2個、3個或4個指令中執行共同操作群組。
比例欄位1160--其內容允許按比例調整索引欄位之內容以用於記憶體位址產生(例如,用於使用2scale *索引+基址之位址產生)。
位移欄位1162A--其內容用作記憶體位址產生之部分(例如,用於使用2scale *索引+基址+位移之位址產 生)。
位移因數欄位1162B(注意,位移欄位1162A直接於位移因數欄位1162B上之並置指示使用一者或另一者)--其內容用作位址產生之部分;其指定將藉由記憶體存取之大小(N)按比例調整的位移因數--其中N為記憶體存取中之位元組的數目(例如,用於使用2scale *索引+基址+經按比例調整的位移之位址產生)。冗餘低階位元被忽略,且因此,將位移因數欄位之內容乘以記憶體運算元總大小(N)以便產生將用於計算有效位址之最終位移。N的值由處理器硬體基於完整的運算碼欄位1174(本文中加以描述)及資料處置欄位1154C來在運行時間加以判定。在對於無記憶體存取1105指令模板不使用位移欄位1162A及位移因數欄位1162B及/或不同實施例可僅實行兩者中之一者或兩者皆不實行的意義上,位移欄位1162A及位移因數欄位1162B係任擇的。
資料元素寬度欄位1164--其內容區分將使用數個資料元素寬度中之哪一者(在一些實施例中,對於所有指令;在其他實施例中,對於指令中之僅一些)。於在僅支援一個資料元素寬度的情況下不需要此欄位及/或使用運算碼之一些態樣支援資料元素寬度的意義上,此欄位係任擇的。
寫入遮罩欄位1170--其內容控制(逐個資料元素位置地)目的地向量運算元中之該資料元素位置是否反映基本操作及擴增操作之結果。類別A指令模板支援合併- 寫入遮罩,而類別B指令模板支援合併及歸零-寫入遮罩兩者。在合併時,向量遮罩允許目的地中的任何元素集合被保護在執行任何操作(由基本操作及擴增操作指定)期間不被更新;在另一實施例中,在對應遮罩位元為0的情況下保留目的地中的每一元素的舊有值。相比之下,在歸零時,向量遮罩允許將目的地中的任何元素集合在執行任何操作(由基本操作及擴增操作指定)期間歸零;在一實施例中,當對應遮罩位元具有0值時將目的地之元素設定為0。此功能性之子集為控制正執行的操作之向量長度(亦即,正修改的元素之跨度,自第一個至最後一個)的能力;然而,被修改的元素無須為連續的。因此,寫入遮罩欄位1170允許部分向量操作,包括載入、儲存、算數、邏輯等。儘管在所描述的本發明之實施例中,寫入遮罩欄位1170之內容選擇數個寫入遮罩暫存器中含有將使用的寫入遮罩之一寫入遮罩暫存器(且因此寫入遮罩欄位1170之內容間接地識別將執行的遮罩),但替代實施例替代地或另外允許遮罩寫入欄位1170之內容直接指定將執行的遮罩。
即時運算欄位1172--其內容允許指定即時運算。於在實行不支援即時運算之通用向量友好格式時不存在此欄位且在不支援即時運算之指令中不存在此欄位的意義上,此欄位係任擇的。
類別欄位1168--其內容區分不同指令類別。參考圖11A至圖11B,此欄位之內容在類別A指令與類別B指令之間進行選擇。在圖11A至圖11B中,使用轉角經圓整的正 方形來指示特定值存在於欄位中(例如,分別在圖11A與圖11B中之用於類別欄位1168的類別A 1168A及類別B 1168B)。
類別A之指令模板
在類別A之非記憶體存取1105指令模板的情況下,α欄位1152解譯為RS欄位1152A,其內容區分將執行不同擴增操作類型中之哪一者(例如,對於無記憶體存取、捨位類型操作1110指令模板與無記憶體存取、資料變換類型操作1115指令模板分別指定捨位1152A.1與資料變換1152A.2),而β欄位1154區分將執行所指定類型之操作中的哪一者。在無記憶體存取1105指令模板中,不存在比例欄位1160、位移欄位1162A及位移比例欄位1162B。
無記憶體存取指令模板--全捨位控制類型操作
在無記憶體存取全捨位控制類型操作1110指令模板中,β欄位1154解譯為捨位控制欄位1154A,其內容提供靜態捨位。儘管在本發明之所描述實施例中,捨位控制欄位1154A包括抑制所有浮動點異常(SAE)欄位1156及捨位操作控制欄位1158,但替代實施例可支援可將此等概念皆編碼於同一欄位中或僅具有此等概念/欄位中之一者或另一者(例如,可僅具有捨位操作控制欄位1158)。
SAE欄位1156--其內容區分是否停用異常事件報告;當SAE欄位1156之內容指示啟用抑制時,給定指令不報告任何種類的浮點異常旗標,且不產生任何浮點異常處置程序。
捨位操作控制欄位1158--其內容區分將執行一群捨位操作中之哪一者(例如,捨進、捨去、向零捨位及向最接近的值捨位)。因此,捨位操作控制欄位1158允許逐個指令地改變捨位模式。在處理器包括用於指定捨位模式之控制暫存器的本發明之一實施例中,捨位操作控制欄位1150之內容置換該暫存器值。
無記憶體存取指令模板--資料變換類型操作
在無記憶體存取資料變換類型操作1115指令模板中,β欄位1154解譯為資料變換欄位1154B,其內容區分將執行數個資料變化中之哪一者(例如,無資料變化、拌和、廣播)。
在類別A之記憶體存取1120指令模板的情況下,α欄位1152解譯為逐出提示欄位1152B,其內容區分將使用逐出提示中之哪一者(在圖11A中,對於記憶體存取、暫態1125指令模板及記憶體存取非暫態1130指令模板分別指定暫態1152B.1及非暫態1152B.2),而β欄位1154解譯為資料處置欄位1154C,其內容區分將執行數個資料處置操作(亦稱為原指令)中之哪一者(例如,無處置;廣播;源之向上轉換;及目的地之向下轉換)。記憶體存取1120指令模板包括比例欄位1160,及任擇之位移欄位1162A或位移比例欄位1162B。
向量記憶體指令在轉換支援下執行自記憶體之向量載入及至記憶體之向量儲存。如同正規向量指令,向量記憶體指令以逐資料元素方式自記憶體傳送資料/將資 料傳送至記憶體,其中實際傳送之元素由被選擇為寫入遮罩之向量遮罩的內容來指明。
記憶體存取指令模板--暫態
暫態資料為很可能很快將被重新使用以自快取受益之資料。然而,存在一提示,且不同處理器可以不同方式來實行該提示,包括完全忽略該提示。
記憶體存取指令模板--非暫態
非暫態資料為不太可能很快被重新使用以自第一級快取記憶體中之快取受益且應被優先逐出之資料。然而,存在一提示,且不同處理器可以不同方式來實行該提示,包括完全忽略該提示。
類別B之指令模板
在類別B之指令模板的情況下,α欄位1152解譯為寫入遮罩控制(Z)欄位1152C,其內容區分由寫入遮罩欄位1170控制之寫入遮罩應為合併還是歸零。
在類別B之非記憶體存取1105指令模板的情況下,β欄位1154之部分解譯為RL欄位1157A,其內容區分將執行不同擴增操作類型中之哪一者(例如,對於無記憶體存取、寫入遮罩控制、部分捨位控制類型操作1112指令模板與無記憶體存取、寫入遮罩控制、向量大小(VSIZE)類型操作1117指令模板分別指定捨位1157A.1與向量長度(向量大小)1157A.2),而β欄位1154之其餘部分區分將執行所指定類型之操作中的哪一者。在無記憶體存取1105指令模板中,不存在比例欄位1160、位移欄位1162A及位移比例欄位 1162B。
在無記憶體存取、寫入遮罩控制、部分捨位控制類型操作1110指令模板中,β欄位1154之其餘部分解譯為捨位操作欄位1159A,且停用異常事件報告(給定指令不報告任何種類的浮點異常旗標,且不產生任何浮點異常處置程序)。
捨位操作控制欄位1159A--如同捨位操作控制欄位1158,其內容區分將執行一群捨位操作中之哪一者(例如,捨進、捨去、向零捨位及向最接近的值捨位)。因此,捨位操作控制欄位1159A允許逐個指令地改變捨位模式。在處理器包括用於指定捨位模式之控制暫存器的本發明之一實施例中,捨位操作控制欄位1150之內容置換(override)該暫存器值。
在無記憶體存取、寫入遮罩控制、向量大小類型操作1117指令模板中,β欄位1154之其餘部分解譯為向量長度欄位1159B,其內容區分將對數個資料向量長度中之哪一者執行操作(例如,128、256或512個位元組)。
在類別B之記憶體存取1120指令模板的情況中,β欄位1154之部分解譯為廣播欄位1157B,其內容區分是否將執行廣播類型資料處置操作,而β欄位1154之其餘部分解譯為向量長度欄位1159B。記憶體存取1120指令模板包括比例欄位1160,及任擇之位移欄位1162A或位移比例欄位1162B。
關於通用向量友好指令格式1100,完整的運算碼 欄位1174展示為包括格式欄位1140、基本操作欄位1142,及資料元素寬度欄位1164。儘管一實施例展示完整的運算碼欄位1174包括所有此等欄位的情況,但在不支援所有此等欄位的實施例中,完整的運算碼欄位1174包括少於所有的此等欄位。完整的運算碼欄位1174提供運算碼(opcode)。
擴增操作欄位1150、資料元素寬度欄位1164及寫入遮罩欄位1170允許在通用向量友好指令格式中逐指令地指定此等特徵。
寫入遮罩欄位與資料元素寬度欄位之組合形成具類型的指令,此係因為其允許基於不同資料元素寬度來應用遮罩。
類別A及類別B中所見之各種指令模板在不同情形中係有益的。在本發明之一些實施例中,不同處理器或處理器內之不同核心可支援僅類別A、僅類別B,或支援兩個類別。例如,意欲用於通用計算之高效能通用亂序核心可支援僅類別B,主要意欲用於圖形及/或科學(通量)計算之核心可支援僅類別A,且意欲用於兩者之核心可支援兩者(當然,具有來自兩個類別之模板及指令之一些混合而非來自兩個類別之所有模板及指令的核心在本發明之範圍內)。此外,單一處理器可包括多個核心,所有該等核心支援相同類別或不同核心支援不同類別。例如,在具有分開的圖形與通用核心之處理器中,主要意欲用於圖形及/或科學計算之圖形核心中之一者可支援僅類別A,而通用核心中之一或多者可為意欲用於通用計算的、支援僅類別B的具有 亂序執行及暫存器重新命名之高效能通用核心。不具有分開的圖形核心之另一處理器可包括支援類別A及類別B兩者的更多個通用有序或亂序核心。當然,在本發明之不同實施例中,來自一個類別之特徵亦可實行於另一類別中。以高階語言撰寫之程式將被置於(例如,就在編譯或靜態編輯時)多種不同可執行形式中,包括:1)僅具有由目標處理器支援執行的類別之指令的形式;或2)具有使用所有類別之指令的不同組合撰寫且具有控制流碼的替代常式的形式,該控制流碼基於由當前正執行該碼的處理器支援的指令來選擇將執行的常式。
圖12A圖12D 為例示出根據本發明之實施例的示範性特定向量友好指令格式的方塊圖。圖12展示特定向量友好指令格式1200,其在其指定欄位的位置、大小、解譯及次序以及彼等欄位中之一些欄位的值之意義上為特定的。特定向量友好指令格式1200可用來擴充x86指令集,且因此該等欄位中之一些與用於現有x86指令集及其擴充(例如,AVX)中之欄位係類似或相同的。此格式與具有擴充之現有x86指令集的前綴編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及即時運算欄位保持一致。自圖11之欄位說明圖12之欄位對映至該等欄位中。
應理解,儘管為例示目的而在通用向量友好指令格式1100之情境中參考特定向量友好指令格式1200來描述本發明之實施例,但本發明不限於特定向量友好指令格式1200,惟所主張者除外。例如,通用向量友好指令格式1100 涵蓋多種可能大小的各種欄位,而特定向量友好指令格式1200展示為具有具特定大小之欄位。以特定實例說明,儘管資料元素寬度欄位1164例示為特定向量友好指令格式1200中之1位元欄位,但本發明不限於此(亦即,通用向量友好指令格式1100涵蓋其他大小的資料元素寬度欄位1164)。
通用向量友好指令格式1100包括下文以圖12A中所說明的次序列舉的以下欄位。
EVEX前綴(位元組0-3)1201--以四位元組形式編碼。
格式欄位1140(EVEX位元組0,位元[7:0])--第一位元組(EVEX位元組0)為格式欄位1140,且其含有0x62(在本發明之一實施例中用於區分向量友好指令格式之唯一值)。
第二至第四位元組(EVEX位元組1-3)包括提供特定能力之數個位元欄位。
REX欄位1205(EVEX位元組1,位元[7-5])--由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)及1157BEX位元組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’欄位1110--其為REX’欄位1110之第一部分,且為用來編碼經擴充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。
運算碼對映欄位1215(EVEX位元組1,位元[3:0]-mmmm)--其內容編碼所隱含之前導運算碼位元組(0F、0F38或0F 3)。
資料元素寬度欄位1164(EVEX位元組2,位元[7]-W)--由標記法EVEX.W表示。EVEX.W用來界定資料類型之細微度(大小)(32位元資料元素還是64位元資料元素)。
EVEX.vvvv 1220(EVEX位元組2,位元[6:3]-vvvv)--EVEX.vvvv之作用可包括以下各者:1)EVEX.vvvv編碼以反轉(1之補碼)形式指定且對於具有2個或2個以上源運算元之指令有效的第一源運算元;2)EVEX.vvvv編碼對於某些向量偏移以1之補碼形式指定的目的地暫存器運算元;或3)EVEX.vvvv並不編碼任何運算 元,該欄位經保留且應含有1111b。因此,EVEX.vvvv欄位1220編碼以反轉(1之補碼)形式儲存之第一源暫存器指定符(specifier)之四個低階位元。取決於指令,使用額外的不同位元欄位來將指定符大小擴充至32個暫存器。
EVEX.U 1168類別欄位(EVEX位元組2,位元[2]-U)--若EVEX.U=0,則其指示類別A或EVEX.U0;若EVEX.U=1,則其指示類別B或EVEX.U1。
前綴編碼欄位1225(EVEX位元組2,位元[1:0]-pp)--提供用於基本操作欄位之額外位元。除了提供對呈EVEX前綴格式之舊式SSE指令之支援,此欄位亦具有縮小SIMD前綴之益處(並非需要一個位元組來表達SIMD前綴,EVEX前綴僅需要2個位元)。在一實施例中,為了支援使用呈舊式格式及EVEX前綴格式兩者之SIMD前綴(66H、F2H、F3H)的舊式SSE指令,此等舊式SIMD前綴被編碼於SIMD前綴編碼欄位中;且在被提供至解碼器之PLA(以使得PLA可執行此等舊式指令之舊式及EVEX格式兩者而無須修改)之前在運行時間擴展至舊式SIMD前綴中。儘管較新的指令可直接作為運算碼擴充來使用EVEX前綴編碼欄位之內容,但某些實施例以類似方式擴展以達成一致性,但允許由此等舊式SIMD前綴指定不同意義。替代實施例可重新設計PLA以支援2位元SIMD前綴編碼,且因此不需要擴展。
α欄位1152(EVEX位元組3,位元[7]-EH;亦稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制及 EVEX.N;亦用α說明)--如前所述,此欄位為情境特定性的。
B欄位1154(EVEX位元組3,位元[6:4]-SSS,亦稱為EVEX.s2-0 、EVEX.r2-0 、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦用PPP說明)--如前所述,此欄位為情境特定性的。
REX’欄位1110--此欄位為REX’欄位之其餘部分,且為可用來編碼經擴充32暫存器集合之較高16個暫存器或較低16個暫存器的EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式儲存。值1用來編碼較低16個暫存器。換言之,藉由組合EVEX.V’、EVEX.vvvv形成V’VVVV。
寫入遮罩欄位1170(EVEX位元組3,位元[2:0]-kkk)--其內容指定一暫存器在如前所述之寫入遮罩暫存器中之索引。在本發明之一實施例中,特定值EVEX.kkk=000具有暗示對於特定指令(此可以各種方式來實行,包括使用硬連線至所有硬體的寫入遮罩或繞過遮罩硬體之硬體)不使用寫入遮罩之特殊特性。
實際運算碼欄位1230(位元組4)亦稱為運算碼位元組。在此欄位中指定運算碼之部分。
MOD R/M欄位1240(位元組5)包括MOD欄位1242、Reg欄位1244及R/M欄位1246。如前所述,MOD欄位1242之內容區分記憶體存取與非記憶體存取操作。Reg欄位1244之作用可概述為兩種情形:編碼目的地暫存器運算元 或源暫存器運算元,或被視為運算碼擴充且不用來編碼任何指令運算元。R/M欄位1246之作用可包括以下各者:編碼參考記憶體位址之指令運算元,或編碼目的地暫存器運算元或源暫存器運算元。
比例、索引、基址(SIB)位元組(位元組6)--如前所述,比例欄位1150之內容用於記憶體位址產生。SIB.xxx 1254及SIB.bbb 1256--先前已關於暫存器索引Xxxx及Bbbb提及此等欄位之內容。
位移欄位1162A(位元組7至10)--當MOD欄位1242含有10時,位元組7至10為位移欄位1162A,且其與舊式32位元位移(disp32)以相同方式起作用,且以位元組細微度起作用。
位移因數欄位1162B(位元組7)--當MOD欄位1242含有01時,位元組7為位移因數欄位1162B。此欄位之位置與舊式x86指令集8位元位移(disp8)之位置相同,其以位元組細微度起作用。由於disp8為正負號擴充的,其僅可定址-128與127位元組之間的偏移;根據64位元組快取行,disp8使用8位元,其可設定至僅四個真正有用的值-128、-64、0及64;由於通常需要較大範圍,因此使用disp32;disp32需要4個位元組。與disp8及disp32相比,位移因數欄位1162B為disp8之重新解譯;當使用位移因數欄位1162B時,實際位移係藉由位移因數欄位之內容乘以記憶體運算元存取之大小(N)來判定。此類型的位移稱為disp8*N。此減小平均指令長度(單一位元組用於位移,但具有大得多之範圍)。此 中經壓縮之位移係基於以下假設:有效位移為記憶體存取之細微度的倍數,且因此,無須對位址偏移之冗餘低階位元進行編碼。換言之,位移因數欄位1162B替代舊式x86指令集8位元位移。因此,以與x86指令集8位元位移相同之方式編碼位移因數欄位1162B(因此,ModRM/SIB編碼規則無變化),唯一例外情況為,disp8被過載為disp8*N。換言之,編碼規則或編碼長度不存在變化,僅有硬體對位移值之解譯存在變化(該硬體需要藉由記憶體運算元之大小對位移進行按比例調整來獲得以位元組計之位址偏移)。
即時運算欄位1172如前所述而操作。
完整的運算碼欄位
圖12B 為例示出根據本發明之一實施例的特定向量友好指令格式1200之欄位的方塊圖,該等欄位構成完整的運算碼欄位1174。具體而言,完整的運算碼欄位1174包括格式欄位1140、基本操作欄位1142,及資料元素寬度(W)欄位1164。基本操作欄位1142包括前綴編碼欄位1225、運算碼對映欄位1215及實際運算碼欄位1230。
暫存器索引欄位
圖12C 為例示出根據本發明之一實施例的特定向量友好指令格式1200之欄位的方塊圖,該等欄位構成暫存器索引欄位1144。具體而言,暫存器索引欄位1144包括REX欄位1205、REX’欄位1210、MODR/M.reg欄位1244、MODR/M.r/m欄位1246、VVVV欄位1220、xxx欄位1254及bbb欄位1256。
擴增操作欄位
圖12D為例示出根據本發明之一實施例的特定向量友好指令格式1200之欄位的方塊圖,該等欄位構成擴增操作欄位1150。當類別(U)欄位1168含有0時,其表示EVEX.U0(類別A 1168A);當其含有1時,其表示EVEX.U1(類別B 1168B)。當U=0且MOD欄位1242含有11(表示無記憶體存取操作)時,α欄位1152(EVEX位元組3,位元[7]-EH)被解譯為rs欄位1152A。當rs欄位1152A含有1(捨位1152A.1)時,β欄位1154(EVEX位元組3,位元[6:4]-SSS)被解譯為捨位控制欄位1154A。捨位控制欄位1154A包括1位元SAE欄位1156及兩位元捨位操作欄位1158。當rs欄位1152A含有0(資料變換1152A.2)時,β欄位1154(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料變換欄位1154B。當U=0且MOD欄位1242含有00、01或10(表示記憶體存取操作)時,α欄位1152(EVEX位元組3,位元[7]-EH)被解譯為逐出提示(EH)欄位1152B,且β欄位1154(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料處置欄位1154C。
當U=1時,α欄位1152(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位1152C。當U=1且MOD欄位1242含有11(表示無記憶體存取操作)時,β欄位1154之部分(EVEX位元組3,位元[4]-S0 )被解譯為RL欄位1157A;當其含有1(捨位1157A.1)時,β欄位1154之其餘部分(EVEX位元組3,位元[6-5]-S2-1 )被解譯為捨位操作欄位1159A,當RL欄位1157A含有0(向量大小1157.A2)時,β欄位1154之 其餘部分(EVEX位元組3,位元[6-5]-S2-1 )被解譯為向量長度欄位1159B(EVEX位元組3,位元[6-5]-L1-0 )。當U=1且MOD欄位1242含有00、01或10(表示記憶體存取操作)時,β欄位1154(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位1159B(EVEX位元組3,位元[6-5]-L1-0 )及廣播欄位1157B(EVEX位元組3,位元[4]-B)。
圖13 為根據本發明之一實施例的暫存器架構1300之方塊圖。在所說明之實施例中,存在32個寬度為512位元之向量暫存器1310;此等暫存器被稱為zmm0至zmm31。較低16個zmm暫存器之較低階256個位元重疊於暫存器ymm0-16上。較低16個zmm暫存器之較低階128個位元(ymm暫存器之較低階128個位元)重疊於暫存器xmm0-15上。特定向量友好指令格式1200如下表中所說明對此等重疊之暫存器進行操作。
換言之,向量長度欄位1159B在最大長度與一或多個其他較短長度之間進行選擇,其中每一個此種較短長度為前一長度之一半;且不具有向量長度欄位1159B之指令模板對最大向量長度進行操作。另外,在一實施例中,特定向量友好指令格式1200之類別B指令模板對緊縮或純量單/雙倍精度浮點資料及緊縮或純量整數資料進行操作。純量操作為對zmm/ymm/xmm暫存器中之最低階資料元素位置執行的操作;較高階資料元素位置取決於實施例而在左方(與其在指令之前的原本位置相同)或被歸零。
寫入遮罩暫存器1315--在所說明之實施例中,存在8個寫入遮罩暫存器(k0至k7),每一者的大小為64位元。在替代實施例中,寫入遮罩暫存器1315之大小為16位元。如前所述,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當編碼正常地指示使用k0用於寫入遮罩時,其選擇硬連線之寫入遮罩0xFFFF,從而有效地停用對於該指令之寫入遮罩。
通用暫存器1325--在所說明之實施例中,存在16個64位元通用暫存器,其連同現有x86定址模式一起用來定址記憶體運算元。此等暫存器由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來參考。
純量浮點堆疊暫存器檔案(x87堆疊)1345,其上混疊有MMX緊縮整數扁平暫存器檔案1350--在所說明之實施例中,x87堆疊為用來使用x87指令集擴充對32/64/80位元浮點資料執行純量浮點操作之八元素堆疊;而MMX暫 存器用來對64位元緊縮整數資料執行操作,且用來保持用於在MMX與XMM暫存器之間執行的操作之運算元。
本發明之替代實施例可使用較寬或較窄暫存器。另外,本發明之替代實施例可使用較多、較少或不同之暫存器檔案及暫存器。
圖14A圖14B 例示出更特定示範性有序核心架構之方塊圖,該核心可為一晶片上的若干邏輯區塊(包括相同類型及/或不同類型之其他核心)中之一者。該等邏輯區塊取決於應用而經由高頻寬互連網路(例如,環形網路)與某一固定功能邏輯、記憶體I/O介面及其他必要I/O邏輯通訊。
圖14A 為根據本發明之實施例的單處理器核心連同其至晶粒上互連網路1402之連接及其第2級(L2)快取記憶體的局部子集1404之方塊圖。在一實施例中,指令解碼器1400支援具有緊縮資料指令集擴充之x86指令集。L1快取記憶體1406允許對純量及向量單元中之快取記憶體進行低潛時存取。儘管在一實施例(為簡化設計)中,純量單元1408及向量單元1410使用分開的暫存器集合(分別為純量暫存器1412及向量暫存器1414)且在其間傳送之資料被寫入至記憶體,且接著自第1級(L1)快取記憶體1406讀回,但本發明之替代實施例可使用不同方法(例如,使用單一暫存器集合或包括允許資料在不被寫入及讀回的情況下在兩個暫存器檔案之間傳送的通訊路徑)。
L2快取記憶體之局部子集1404為劃分成分開的局部子集(每個處理器核心一個局部子集)的全域L2快取記 憶體之部分。每一處理器核心具有至其自身的L2快取記憶體之局部子集1404的直接存取路徑。由一處理器核心讀取之資料儲存於其L2快取記憶體子集1404中,且可與其他處理器核心存取其自身的局部L2快取記憶體子集並行地被快速存取。由一處理器核心寫入之資料儲存於其自身的L2快取記憶體子集1404中,且若有必要則自其他子集清除。環形網路確保共用資料之一致性。環形網路為雙向的,以允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理在晶片內彼此通訊。每一環形資料路徑在每方向上為1012位元寬。
圖14B為根據本發明之實施例的圖14A中之處理器核心的部分之展開圖。圖14B包括L1快取記憶體1404之L1資料快取記憶體1406A部分以及關於向量單元1410及向量暫存器1414之更多細節。具體而言,向量單元1410為16寬向量處理單元(VPU)(見16寬ALU 1428),其執行整數、單倍精度浮動及雙倍精度浮動指令中之一或多者。VPU支援藉由拌和單元1420對暫存器輸入之拌和、藉由數字轉換單元1422A-B進行之數字轉換,及藉由複製單元1424對記憶體輸入之複製。寫入遮罩1426允許預測所得向量寫入。
本發明之實施例可包括上文已描述之各種步驟。該等步驟可體現為機器可執行指令,該等指令可用來使得通用或專用處理器執行該等步驟。或者,此等步驟可藉由含有用於執行該等步驟之硬連線的邏輯的特定硬體組件或藉由經規劃之電腦組件與定製硬體組件之任何組合來 執行。
如本文中所描述,指令可指諸如組配來執行某些操作或具有預定功能性的特殊應用積體電路(ASIC)之硬體的特定組配或儲存於體現於非暫時性電腦可讀取媒體中之記憶體中的軟體指令。因此,諸圖中所展示之技術可使用儲存及執行於一或多個電子器件(例如,終端站、網路元件,等)上之碼及資料來實行。此等電子器件使用電腦機器可讀取媒體儲存且通訊(在內部及/或經由網路與其他電子器件)碼及資料,該電腦機器可讀取媒體諸如非暫時性電腦機器可讀取儲存媒體(例如,磁碟;光碟;隨即存取記憶體;唯讀記憶體;快閃記憶體器件;相變記憶體)及暫時性電腦機器可讀取通訊媒體(例如,電、光、聲或其他形式的傳播信號,諸如載波、紅外線信號、數位信號,等)。此外,此等電子器件通常包括一組耦接至一或多個其他組件之一或多處理器,該一或多個其他組件諸如一或多個儲存器件(非暫時性機器可讀取儲存媒體)、使用者輸入/輸出器件(例如,鍵盤、觸控螢幕及/或顯示器)及網路連接。該組處理器與其他組件之耦接通常係經由一或多個匯流排及橋接器(亦稱作匯流排控制器)。攜載網路訊務之儲存器件及信號分別表示一或多個機器可讀取儲存媒體及機器可讀取通訊媒體。
因此,給定電子器件之儲存器件通常儲存碼及/或資料以供在該電子器件之該組一或多個處理器上執行。當然,本發明之實施例之一或多個部分可使用軟體、韌體 及/或硬體之不同組合來實行。貫穿此詳細描述,為達成解釋之目的,闡述眾多特定細節以便提供對本發明之透徹理解。然而,熟習此項技術者將顯而易見,可在無此等特定細節中之一些細節的情況下實踐本發明。在某些例子中,未詳盡地描述熟知結構及功能以便避免混淆本發明之主題。因此,應根據所附申請專利範圍來判斷本發明之範疇及精神。
100‧‧‧處理器管線
102‧‧‧擷取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧分配級
110‧‧‧重新命名級
112‧‧‧排程(亦稱為分派或發出)級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧回寫/記憶體寫入級
122‧‧‧異常處置級
124‧‧‧提交級
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取單元
136‧‧‧指令轉譯後備緩衝器
138‧‧‧指令擷取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧重新命名/分配器單元
154‧‧‧收回單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料TLB單元
174‧‧‧資料快取單元
176‧‧‧第2級(L2)快取單元
190‧‧‧處理器核心

Claims (28)

  1. 一種處理器,其用來執行一或多個指令以執行以下操作:讀取將被自一第一值向下轉換至一經向下轉換之值且儲存於一目的地位置的一源運算元值;讀取儲存於一遮罩暫存器中之每一遮罩暫存器位元,該(等)遮罩暫存器位元指示對該源運算元值執行一遮罩操作或是一轉換操作;若該(等)遮罩暫存器位元指示將執行一遮罩操作,則執行一指定之遮罩操作,且將該遮罩操作之結果儲存於該目的地位置中;以及若該(等)遮罩暫存器位元指示將不執行一遮罩操作,則對該源運算元值進行向下轉換,且將經向下轉換之值儲存於該指定目的地位置中。
  2. 如申請專利範圍第1項之處理器,其中若該(等)遮罩暫存器位元指示將不執行一遮罩操作,則判定執行截斷或是有符號/無符號飽和來產生該經向下轉換之值,且基於該判定,執行截斷或有符號/無符號飽和來產生該經向下轉換之值。
  3. 如申請專利範圍第1項之處理器,其中該指定遮罩操作包含將目的地暫存器中之資料元素的位元設定為全部等於零。
  4. 如申請專利範圍第1項之處理器,其中該指定之遮罩操 作包含維持先前儲存於該目的地位置的該資料元素中之現有值。
  5. 如申請專利範圍第1項之處理器,其中該目的地位置包含一目的地暫存器。
  6. 如申請專利範圍第1項之處理器,其中該目的地位置包含一記憶體。
  7. 如申請專利範圍第1項之處理器,其中該源運算元值包含一128位元值,且該經向下轉換之值包含一8位元值。
  8. 一種方法,其包含:讀取將被自一第一值向下轉換至一經向下轉換之值且儲存於一目的地位置的一源運算元;讀取儲存於一遮罩暫存器中之每一遮罩暫存器位元,該(等)遮罩暫存器位元指示對該源運算元值執行一遮罩操作還是一轉換操作;若該(等)遮罩暫存器位元指示將執行一遮罩操作,則執行一指定之遮罩操作,且將該遮罩操作之結果儲存於該目的地位置中;以及若該(等)遮罩暫存器位元指示將不執行一遮罩操作,則對該源運算元值進行向下轉換,且將經向下轉換之值儲存於該指定目的地位置中。
  9. 如申請專利範圍第8項之方法,其中若該(等)遮罩暫存器位元指示將不執行一遮罩操作,則判定執行截斷還是有符號/無符號飽和來產生該經向下轉換之值,且基於該判定,執行截斷或有符號/無符號飽和來產生該經向下 轉換之值。
  10. 如申請專利範圍第8項之方法,其中該指定遮罩操作包含將目的地暫存器中之資料元素的位元設定為全部等於零。
  11. 如申請專利範圍第8項之方法,其中該指定之遮罩操作包含維持先前儲存於該目的地位置的該資料元素中之現有值。
  12. 如申請專利範圍第8項之方法,其中該目的地位置包含一目的地暫存器。
  13. 如申請專利範圍第8項之方法,其中該目的地位置包含一記憶體。
  14. 如申請專利範圍第8項之方法,其中該源運算元值包含一128位元值,且該經向下轉換之值包含一8位元值。
  15. 一種處理器,其包含以下步驟:用於讀取將被自一第一值向下轉換至一經向下轉換之值且儲存於一目的地位置的一源運算元值的構件;用於讀取儲存於一遮罩暫存器中之每一遮罩暫存器位元的構件,該(等)遮罩暫存器位元指示對該源運算元值執行一遮罩操作或是一轉換操作;用於在該(等)遮罩暫存器位元指示將執行一遮罩操作的情況下執行一指定之遮罩操作,且將該遮罩操作之結果儲存於該目的地位置中的構件;以及用於在該(等)遮罩暫存器位元指示將不執行一遮罩操作的情況下對該源運算元值進行向下轉換,且將經向 下轉換之值儲存於該指定目的地位置中的構件。
  16. 如申請專利範圍第15項之處理器,其中若該(等)遮罩暫存器位元指示將不執行一遮罩操作,則判定執行截斷還是有符號/無符號飽和來產生該經向下轉換之值,且基於該判定,執行截斷或有符號/無符號飽和來產生該經向下轉換之值。
  17. 如申請專利範圍第15項之處理器,其中該指定遮罩操作包含將目的地暫存器中之資料元素的位元設定為全部等於零。
  18. 如申請專利範圍第15項之處理器,其中該指定之遮罩操作包含維持先前儲存於該目的地位置的該資料元素中之現有值。
  19. 如申請專利範圍第15項之處理器,其中該目的地位置包含一目的地暫存器。
  20. 如申請專利範圍第15項之處理器,其中該目的地位置包含一記憶體。
  21. 如申請專利範圍第15項之處理器,其中該源運算元值包含一128位元值,且該經向下轉換之值包含一8位元值。
  22. 一種電腦系統,其包含:讀取將被自一第一值向下轉換至一經向下轉換之值且儲存於一目的地位置的一源運算元值;讀取儲存於一遮罩暫存器中之每一遮罩暫存器位元,該(等)遮罩暫存器位元指示對該源運算元值執行一遮罩操作或是一轉換操作; 若該(等)遮罩暫存器位元指示將執行一遮罩操作,則執行一指定之遮罩操作,且將該遮罩操作之結果儲存於該目的地位置中;以及若該(等)遮罩暫存器位元指示將不執行一遮罩操作,則對該源運算元值進行向下轉換,且將經向下轉換之值儲存於該指定目的地位置中。
  23. 如申請專利範圍第22項之系統,其中若該(等)遮罩暫存器位元指示將不執行一遮罩操作,則判定執行截斷還是有符號/無符號飽和來產生該經向下轉換之值,且基於該判定,執行截斷或有符號/無符號飽和來產生該經向下轉換之值。
  24. 如申請專利範圍第22項之系統,其中該指定遮罩操作包含將目的地暫存器中之資料元素的位元設定為全部等於零。
  25. 如申請專利範圍第22項之系統,其中該指定之遮罩操作包含維持先前儲存於該目的地位置的該資料元素中之現有值。
  26. 如申請專利範圍第22項之系統,其中該目的地位置包含一目的地暫存器。
  27. 如申請專利範圍第22項之系統,其中該目的地位置包含一記憶體。
  28. 如申請專利範圍第22項之系統,其中該源運算元值包含一128位元值,且該經向下轉換之值包含一8位元值。
TW101146877A 2011-12-23 2012-12-12 用於資料類型之向下轉換的裝置及方法 TWI480798B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067080 WO2013095603A1 (en) 2011-12-23 2011-12-23 Apparatus and method for down conversion of data types

Publications (2)

Publication Number Publication Date
TW201346729A TW201346729A (zh) 2013-11-16
TWI480798B true TWI480798B (zh) 2015-04-11

Family

ID=48669244

Family Applications (2)

Application Number Title Priority Date Filing Date
TW101146877A TWI480798B (zh) 2011-12-23 2012-12-12 用於資料類型之向下轉換的裝置及方法
TW104102848A TWI543076B (zh) 2011-12-23 2012-12-12 用於資料類型之向下轉換的裝置及方法(二)

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW104102848A TWI543076B (zh) 2011-12-23 2012-12-12 用於資料類型之向下轉換的裝置及方法(二)

Country Status (4)

Country Link
US (1) US10474463B2 (zh)
CN (2) CN112416432A (zh)
TW (2) TWI480798B (zh)
WO (1) WO2013095603A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160179530A1 (en) * 2014-12-23 2016-06-23 Elmoustapha Ould-Ahmed-Vall Instruction and logic to perform a vector saturated doubleword/quadword add
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US10296334B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit gather
US10114649B2 (en) 2015-05-26 2018-10-30 International Business Machines Corporation Thermal availability based instruction assignment for execution
US20170177348A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instruction and Logic for Compression and Rotation
US10146542B2 (en) * 2015-12-29 2018-12-04 Intel Corporation Hardware apparatus and methods for converting encoding formats
TWI615709B (zh) * 2016-03-30 2018-02-21 凌陽科技股份有限公司 記憶體內容自動搬移方法以及使用其之微處理系統
US20170315807A1 (en) * 2016-05-02 2017-11-02 Oracle International Corporation Hardware support for dynamic data types and operators
US11372643B2 (en) * 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format
US20230350678A1 (en) * 2022-04-28 2023-11-02 Qualcomm Incorporated Instruction Set Architecture for Neural Network Quantization and Packing
CN116257350B (zh) * 2022-09-06 2023-12-08 进迭时空(杭州)科技有限公司 一种针对risc-v矢量寄存器的重命名分组装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317824B1 (en) * 1998-03-27 2001-11-13 Intel Corporation Method and apparatus for performing integer operations in response to a result of a floating point operation
US6438675B1 (en) * 1998-03-23 2002-08-20 Ati Technologies, Inc. Variable format memory access device
TW200406684A (en) * 2002-10-22 2004-05-01 Ip First Llc Apparatus and method for masked move to and from flags register in a processor
TW200627269A (en) * 2004-10-20 2006-08-01 Intel Corp Looping instructions for a single instruction, multiple data execution engine
US7836276B2 (en) * 2005-12-02 2010-11-16 Nvidia Corporation System and method for processing thread groups in a SIMD architecture

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
US5822557A (en) * 1991-12-27 1998-10-13 Fujitsu Limited Pipelined data processing device having improved hardware control over an arithmetic operations unit
EP0845741B1 (en) * 1996-11-29 2003-04-16 Matsushita Electric Industrial Co., Ltd. Processor which can favorably execute a rounding process
US6173366B1 (en) * 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US6282554B1 (en) * 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US7401205B1 (en) * 1999-08-13 2008-07-15 Mips Technologies, Inc. High performance RISC instruction set digital signal processor having circular buffer and looping controls
US6889242B1 (en) * 2001-06-29 2005-05-03 Koninklijke Philips Electronics N.V. Rounding operations in computer processor
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US7899855B2 (en) * 2003-09-08 2011-03-01 Intel Corporation Method, apparatus and instructions for parallel data conversions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438675B1 (en) * 1998-03-23 2002-08-20 Ati Technologies, Inc. Variable format memory access device
US6317824B1 (en) * 1998-03-27 2001-11-13 Intel Corporation Method and apparatus for performing integer operations in response to a result of a floating point operation
TW200406684A (en) * 2002-10-22 2004-05-01 Ip First Llc Apparatus and method for masked move to and from flags register in a processor
TW200627269A (en) * 2004-10-20 2006-08-01 Intel Corp Looping instructions for a single instruction, multiple data execution engine
US7836276B2 (en) * 2005-12-02 2010-11-16 Nvidia Corporation System and method for processing thread groups in a SIMD architecture

Also Published As

Publication number Publication date
US20140208080A1 (en) 2014-07-24
TW201530430A (zh) 2015-08-01
CN104081340A (zh) 2014-10-01
WO2013095603A1 (en) 2013-06-27
TW201346729A (zh) 2013-11-16
US10474463B2 (en) 2019-11-12
CN104081340B (zh) 2020-11-10
CN112416432A (zh) 2021-02-26
TWI543076B (zh) 2016-07-21

Similar Documents

Publication Publication Date Title
TWI480798B (zh) 用於資料類型之向下轉換的裝置及方法
TWI470544B (zh) 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI517031B (zh) 用於呈現各別複數之複數共軛根之向量指令
TWI509406B (zh) 用於以推測支援來執行向量化的裝置及方法
KR102463858B1 (ko) 벡터 인덱스 로드 및 저장을 위한 방법 및 장치
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
KR102508075B1 (ko) 인덱스 및 즉치로 벡터 치환을 수행하기 위한 방법 및 장치
CN114791795A (zh) 用于复数乘法的装置和方法
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
CN107003852B (zh) 用于执行向量位混洗的方法和装置
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TW201344570A (zh) 緊縮旋轉處理器、方法、系統與指令
TW201346744A (zh) 遮蔽排列指令的裝置及方法
TW201346726A (zh) 用以執行絕對差之雙塊總數之系統,裝置及方法
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TWI490781B (zh) 用於選擇向量運算之元素的裝置及方法
TWI644256B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
CN107003848B (zh) 用于融合乘法-乘法指令的装置和方法
TWI610234B (zh) 用於壓縮遮罩值的方法及裝置
CN107003841B (zh) 用于融合加法-加法指令的装置和方法
CN107077333B (zh) 用于实行向量位聚集的方法和装置