TWI490781B - 用於選擇向量運算之元素的裝置及方法 - Google Patents

用於選擇向量運算之元素的裝置及方法 Download PDF

Info

Publication number
TWI490781B
TWI490781B TW101146073A TW101146073A TWI490781B TW I490781 B TWI490781 B TW I490781B TW 101146073 A TW101146073 A TW 101146073A TW 101146073 A TW101146073 A TW 101146073A TW I490781 B TWI490781 B TW I490781B
Authority
TW
Taiwan
Prior art keywords
register
final
value
column
vector
Prior art date
Application number
TW101146073A
Other languages
English (en)
Other versions
TW201342205A (zh
Inventor
Jayashankar Bharadwaj
Nalini Vasudevan
Victor W Lee
Daehyun Kim
Albert Hartono
Sara Baghsorkhi
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 TW201342205A publication Critical patent/TW201342205A/zh
Application granted granted Critical
Publication of TWI490781B publication Critical patent/TWI490781B/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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Description

用於選擇向量運算之元素的裝置及方法 發明領域
本發明實施例一般係關於電腦系統領域。尤其是,本發明實施例係關於用於選擇向量運算之第一或最終元素的裝置及方法。
發明背景 一般背景
一指令集,或指令集結構(ISA),是有關程式規劃之電腦結構的部份,並且可包含原始資料型式、指令、暫存器結構、定址模式、記憶體結構、中斷與異常處理、以及外部輸入與輸出(I/O)。此處之指令名稱通常指示巨指令-其是被提供至處理器(或指令轉換器,其轉換(例如,使用靜態二進制轉譯、包含動態編輯之動態二進制轉譯)、語素變形、仿效、或以不同方式轉換一指令為將利用該處理器被處理的一個或多個其他指令)以供執行之指令-如相對於微指令或微運算(micro-op)-其是一處理器之解碼器解碼巨指令的結果。
ISA不同於微結構,其是實作指令集之處理器的 內部設計。具有不同微結構之處理器可共用一共用指令集。例如,Intel®Pentium4處理器、Intel®CoreTM 處理器以及來自實作x86指令集之幾乎相同版本(具有已被添加較新版本的一些擴充功能)之美國加州森尼維耳市先進微裝置公司的處理器,但是具有不同的內部設計。例如,ISA之相同暫存器結構可使用習知的技術以不同方式被實作於不同微結構中,如包含專用實體暫存器、使用一暫存器換名機構之一個或多個動態分配實體暫存器(例如,暫存器混疊列表(RAT)、重排緩衝器(ROB)以及除役暫存器檔案之使用;複數個映製以及一暫存器池之使用)等等。除非不同地被指定,否則暫存器結構、暫存器檔案、以及暫存器之片語於此處被使用以提及其是軟體/程式者可見到的,以及指令指定暫存器之方式。在一特定性是所需之處,形容式的邏輯、結構、或軟體將被使用以指示暫存器結構中之暫存器/檔案,而不同的形容式邏輯將被使用以指定一所給的微結構中之暫存器(例如,實體暫存器、重排緩衝器、除役暫存器、暫存器池)。
一指令集包含一個或多個指令格式。一所給予的指令格式界定各種欄(位元數目、位元位置)以指明,其中包括,被進行之運算碼(opcode)以及在其上被進行運算之運算元。經指令樣型(或子格式)之定義,一些指令格式進一步地被細分。例如,一所給予的指令格式之指令樣型可被界定以具有不同子集的指令格式之欄(所包含的欄一般是於相同順序中,但是至少一些具有不同的位元位置,因為包含 較少的欄)或被界定以具有不同地被詮釋之一所給予的欄。因此,一ISA之各個指令使用一所給予的指令格式被表示(並且,如果被界定,以該指令格式之一所給予的指令樣型),並且包含用以指明運算以及運算元之欄。例如,ADD指令範例具有一特定運算碼以及包含一運算碼欄之指令格式以指定運算碼以及運算元欄而選擇運算元(來源1/目的地以及來源2);並且一指令流中之這ADD指令的事件將具有選擇特定運算元之運算元欄中的特定內容。
科學上、財政上、自動向量化一般用途、RMS(辨識、採掘、以及合成)、以及視覺與多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、聲音辨識演算法以及音訊操縱)時常需要於大量資料項目上(被稱為"資料排比")進行相同運算。單一指令複合資料(SIMD)指示一型式指令,其導致一處理器於複合資料項目上執行一運算。SIMD技術尤其適用於可邏輯地分割暫存器中之位元成為一些固定尺度資料元素(其各代表一分別數值)的處理器。例如,256位元暫存器中之位元可被指定作為將於下列分別的位元封裝資料元素上運算的一來源運算元,作為四個分別的64位元封裝資料元素(4字組(Q)尺度資料元素)、八個分別的32位元封裝資料元素(雙字組(D)尺度資料元素)、十六個分別的16位元封裝資料元素(字組(W)尺度資料元素)、或32個分別的8位元資料元素(位元組(B)尺度資料元素)。這資料型式被稱為封裝資料型式或向量資料型式,並且這資料型式之運算元被稱為封裝資料運算元或向量運算元。換言之,一 封裝資料項目或向量指示一封裝資料元素之序列,並且一封裝資料運算元或一向量運算元是一SIMD指令(同時也習知如一封裝資料指令或一向量指令)之來源或目的地運算元。
經由範例,一型式之SIMD指令指定將以垂直形式於二個來源向量運算元上進行的單一向量運算,以產生具有相同尺度,具有相同資料元素數目,以及相同資料元素順序之目的地向量運算元(同時也被稱為結果向量運算元)。來源向量運算元中之資料元素被稱為來源資料元素,而目的地向量運算元中之資料元素是指示目的地或結果資料元素。這些來源向量運算元是具有相同尺度並且包含相同寬度之資料元素,並且因此它們包含相同資料元素數目。於二個來源向量運算元中之相同位元位置中的來源資料元素形成資料元素對(同時也被稱為對應的資料元素;亦即,各個來源運算元之資料元素位置0中的資料元素相對應,各個來源運算元之資料元素位置1中的資料元素相對應,等等)。藉由SIMD指令指定的運算分別地被進行於來源資料元素的這些組對上各者以產生匹配數目之結果資料元素,並且因此各對來源資料元素具有一對應的結果資料元素。因為運算是垂直的以及因為結果向量運算元是相同尺度,具有相同資料元素數目,並且結果資料元素以相同資料元素順序被儲存作為來源向量運算元,該等結果資料元素是於結果向量運算元之相同位元位置,作為於來源向量運算元中之它們對應組對的來源資料元素。除了這範例 型式的SIMD指令之外,有多種其他型式的SIMD指令(例如,其僅具有一個或具有多於二個的來源向量運算元,其以水平形式運算,其產生一不同尺度之結果向量運算元,其具有一不同尺度的資料元素,及/或其具有一不同的資料元素順序)。應了解,目的地向量運算元(或目的地運算元)名稱被界定作為進行藉由一指令所指定的運算之直接結果,包含儲存該目的地運算元在一位置(其是一暫存器或在利用該指令所指定的一記憶體位址),因而其可利用另一指令被存取作為一來源運算元(藉由利用另一指令之相同位置的指定)。
SIMD技術,例如,被Intel®CoreTM 處理器所採用者,具有包含x86、MMXTM 、流動SIMD擴充(SSE)、SSE2、SSE3、SSE4.1、以及SSE4.2指令的一指令集,能於應用性能形成顯著改進。另外一組之SIMD擴充,涉及高級向量擴充(AVX)(AVX1以及AVX2)以及使用向量擴充(VEX)編碼機構,已被發表及/或被頒布(例如,參看2011年10月之Intel®64以及IA-32結構軟體開發者手冊;以及參看2011年6月之Intel®先進向量擴充功能程式參考)。
與本發明實施例相關之背景
SIMD結構依賴編譯器以向量化迴路性能。在一般用途應用以及系統軟體中發現之迴路中,在該迴路內被計算之一變量通常存在該迴路之外。於這些情況中,來自最終疊代之變量的數值將需要被傳送為外存值。於具有推斷支援之一SIMD結構中,自最終疊代抽取這數值不是不重 要的,除非一其餘迴路被產生,於其情況中,其餘疊代必須以純量形式被執行,其可能導致性能損失。本發明提供依據一預測遮罩而自第一、最終、或最終+1元素抽取數值之能力。即使當一個或多個變量是存在迴路之外時,這允許產生一預測向量迴路並且避免其餘迴路的產生。
依據本發明之一實施例,係特地提出一種用以選擇一向量運算之元素的處理器,該處理器執行一個或多個指令以進行下列操作:指明是否使用一即時數值以辨識一輸入遮罩暫存器之第一、最終或最終之後下一個的作用元素;依據該即時數值而辨識該輸入遮罩暫存器中之該等第一、最終或最終之後下一個的作用元素;自對應至輸入遮罩暫存器中之該等辨識的第一、最終或最終之後下一個的作用元素之一輸入向量暫存器而讀取一數值;並且將該數值寫入至一輸出向量暫存器。
100‧‧‧處理器管線
102‧‧‧擷取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧分配級
110‧‧‧換名級
112‧‧‧排程級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧回寫/記憶體寫入級
122‧‧‧外處理級
124‧‧‧提交級
130‧‧‧前端點單元
132‧‧‧分支預測單元
136‧‧‧指令轉譯後備緩衝器
138‧‧‧指令擷取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧換名/分配器單元
154‧‧‧除役單元
156‧‧‧排程器單元
158‧‧‧實際暫存器檔案單元
160‧‧‧執行群集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料TLB單元
174‧‧‧資料快取單元
176‧‧‧位準2快取單元
190‧‧‧處理器核心
200‧‧‧處理器
202A‧‧‧核心
202N‧‧‧核心
204A‧‧‧快取單元
204N‧‧‧快取單元
206‧‧‧共用快取單元
208‧‧‧特定用途邏輯
210‧‧‧系統媒介單元
212‧‧‧環形基礎互連單元
214‧‧‧整合記憶體控制器單元
216‧‧‧匯流排控制器單元
300‧‧‧系統
310、315‧‧‧處理器
320‧‧‧控制器中樞
340‧‧‧記憶體
345‧‧‧協同處理器
350‧‧‧輸入/輸出中樞
360‧‧‧輸入/輸出裝置
390‧‧‧圖形記憶體控制器中樞
395‧‧‧連接
400‧‧‧多處理器系統
414‧‧‧I/O裝置
415‧‧‧處理器
416‧‧‧匯流排
418‧‧‧匯流排橋
420‧‧‧匯流排
422‧‧‧鍵盤及/或滑鼠
424‧‧‧音訊I/O
427‧‧‧通訊裝置
428‧‧‧儲存單元
430‧‧‧指令/數碼以及資料
432、434‧‧‧記憶體
438‧‧‧協同處理器
439‧‧‧高性能界面
450‧‧‧點對點互連
452、454‧‧‧P-P界面
470、480‧‧‧處理器
472、482‧‧‧整合記憶體控制器單元
476、478‧‧‧點對點界面
486、488‧‧‧P-P界面
476、494、486、498‧‧‧點對點界面電路
490‧‧‧晶片組
496‧‧‧界面
500‧‧‧系統
514‧‧‧I/O裝置
515‧‧‧遺留I/O裝置
600‧‧‧晶片系統
602‧‧‧互連單元
610‧‧‧應用處理器
620‧‧‧協同處理器
630‧‧‧靜態隨基存取記憶體單元
632‧‧‧直接記憶體存取(DMA)單元
640‧‧‧外部顯示單元
702‧‧‧高階語言
704‧‧‧x86編譯器
706‧‧‧x86二進制指令碼
708‧‧‧指令集編譯器
710‧‧‧二進制指令碼
712‧‧‧指令轉換器
714‧‧‧不具x86指令集核心之處理器
716‧‧‧具有至少一x86指令集 核心之處理器
901‧‧‧遮罩暫存器K2
902‧‧‧定序器
903‧‧‧邏輯
904‧‧‧向量暫存器v1
905‧‧‧多工器
906‧‧‧即時數值
1001‧‧‧啟始狀態
1002‧‧‧鎖定狀態
1154A‧‧‧捨入控制欄
1154B‧‧‧資料轉換欄
1154C‧‧‧資料操縱欄
1156‧‧‧浮動點異常欄
1157A‧‧‧RL欄
1157B‧‧‧廣播欄
1158‧‧‧捨入運算控制欄
1159A‧‧‧捨入運算欄
1159B‧‧‧向量長度欄
1160‧‧‧尺度欄
1162A‧‧‧位移欄
1162B‧‧‧位移係數欄
1164‧‧‧資料元素寬度欄
1168‧‧‧類別欄
1170‧‧‧寫入遮罩欄
1172‧‧‧即時欄
1174‧‧‧完全運算碼欄
1200‧‧‧特定向量親和性指令格式
1202‧‧‧EVEX字首
1220‧‧‧EVEX.vvvv欄
1215‧‧‧運算碼映製欄
1225‧‧‧字首編碼欄
1230‧‧‧真實運算碼欄
1240‧‧‧MOD R/M欄
1242‧‧‧MOD欄
1244‧‧‧Reg欄
1246‧‧‧R/M欄
1300‧‧‧暫存器結構
1310‧‧‧向量暫存器
1315‧‧‧寫入遮罩暫存器
1325‧‧‧一般目的暫存器
1345‧‧‧暫存器檔案
1350‧‧‧暫存器檔案
1400‧‧‧指令解碼器
1402‧‧‧互連網路
1404‧‧‧L2快取之局部性子集
1406‧‧‧L1快取
1406A‧‧‧L1資料快取
1408‧‧‧純量單元
1410‧‧‧向量單元
1412‧‧‧純量暫存器
1414‧‧‧向量暫存器
1420‧‧‧拌和單元
1422A-B‧‧‧數值轉換單元
1424‧‧‧複製單元
1426‧‧‧寫入遮罩暫存器
1428‧‧‧16位元寬度ALU
圖1A是圖解地說明依據本發明實施例之有序管線範例以及暫存器換名、無序發出/執行管線範例的方塊圖。
圖1B是圖解地說明依據本發明實施例之被包含於處理器中的有序結構核心以及暫存器換名、無序發出/執行結構核心範例的實施例之方塊圖;圖2是依據本發明實施例之具有整合記憶體控制器以及圖形的單一核心處理器以及多核心處理器之方塊圖; 圖3是圖解說明依據本發明一實施例之系統的方塊圖;圖4是圖解說明依據本發明一實施例之第二系統的方塊圖;圖5是圖解說明依據本發明一實施例之第三系統的方塊圖;圖6是圖解說明依據本發明一實施例之單晶片系統(SoC)的方塊圖;圖7是圖解說明依據本發明實施例之相對於軟體指令轉換器的使用以轉換一來源指令集中之二進制指令至目標指令集中之二進制指令的方塊圖;圖8A-C是圖解說明本發明一實施例之運算的特定範例;以及圖9-10是圖解說明本發明一實施例用以選擇一向量運算之第一或最終元素。
圖11A以及11B是圖解說明依據本發明實施例之一般向量親和性指令格式以及其指令模型的方塊圖;圖12A-D是圖解說明依據本發明實施例之特定向量親和性指令格式範例的方塊圖;圖13是依據本發明一實施例之暫存器結構的方塊圖;圖14A是依據本發明實施例之一單一處理器核心,以及與其一起連接至晶圓上互連網路之其位準2(L2)快取之局部性的子集之方塊圖;以及圖14B是依據本發明實施例於圖14A中之部份處理器核心的展開圖。
詳細說明 處理器結構以及資料型式範例
圖1A是依據本發明實施例圖解地說明有序管線範例以及暫存器換名範例、無序發出/執行管線兩者的方塊圖。圖1B圖是依據本發明實施例圖解地說明被包含於一處理器中的有序結構核心範例以及暫存器換名、無序發出/執行結構核心範例兩者的實施例之方塊圖。圖1A-B之實線方塊圖解地說明有序管線以及有序核心,而虛線方塊之可選擇增加部份圖解地說明暫存器換名、無序發出/執行管線以及核心。在有序觀點是無序觀點之一子集的情況,該無序觀點將被說明。
圖1A是依據本發明實施例圖解地說明有序管。
於圖1A中,處理器管線100包含一擷取級102、一長度解碼級104、一解碼級106、一分配級108、一換名級110、一排程(也是習知如一發送或發出)級112、一暫存器讀取/記憶體讀取級114、一執行級116、一回寫/記憶體寫入級118、一異常處理級122、以及一提交級124。
圖1B展示處理器核心190,其包含耦合至一執行引擎單元150的一前端點單元130,並且其兩者皆被耦合至一記憶體單元170。核心190可以是一簡化指令集計算(RISC)核心、一複雜指令集計算(CISC)核心、一非常長指令字組(VLIW)核心、或混合或交錯的核心型式。再如另一選擇,例如,核心190可以是一特殊用途核心,例如,一網路或通 訊核心、壓縮引擎、協同處理器核心、一般用途電腦圖形處理單元(GPGPU)核心、圖形核心或其類似者。
前端點單元130包含耦合至一指令快取單元的分支預測單元132,其被耦合至一指令轉譯後備緩衝器(TLB)136,其被耦合至一指令擷取單元138,其被耦合至一解碼單元140。解碼單元140(或解碼器)可解碼指令,並且產生如一個或多個微運算、微指令碼入口點、微指令、其他指令或其他控制信號之輸出,其自原始指令被解碼,或其以不同方式反映原始指令,或導自於原始指令。解碼單元140可使用各種不同機構被實作。適當的機構範例包含,但是不受限定於,查詢表、硬體實作、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。於一實施例中,該核心190包含一微碼ROM或的其他媒體儲存用於某些巨指令的微碼(例如,於解碼單元140或中或此外在前端點單元130之內)。解碼單元140耦合至執行引擎單元150中之一換名/分配器單元152。
執行引擎單元150包含耦合至除役單元154之換名/分配器單元152以及一組之一個或多個排程器單元156。排程器單元156代表任何數目之不同的排程器,其包含保留站、中央指令窗口,等等。排程器單元156耦合至實際暫存器檔案單元158。各個實際暫存器檔案單元158代表一個或多個實際暫存器檔案,其不同的一者儲存一個或多個不同資料型式,例如,純量整數、純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點、狀態(例如,一 指令指示器,其是將被執行的下一個指令之位址)等等。於一實施例中,實際暫存器檔案單元158包括一向量暫存器單元、一寫入遮罩暫存器單元以及一純量暫存器單元。這些暫存器單元可提供結構向量暫存器、向量遮罩暫存器、以及一般用途暫存器。實際暫存器檔案單元158與除役單元154重疊以說明各種方式,於其中暫存器換名以及無序執行可被實作(例如,使用重排緩衝器以及除役暫存器檔案;使用未來檔案、歷史緩衝器以及除役暫存器檔案;使用暫存器映圖以及暫存器池;等等)。除役單元154以及以及實際暫存器檔案單元158耦合至執行群集160。該執行群集160包含一組之一個或多個執行單元162以及一組之一個或多個記憶體存取單元164。執行單元162可在各種型式資料(例如,純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點)上進行各種運算(例如,移位、加法、減法、乘法)。雖然一些實施例可包含專用於特定功能或功能組之一些執行單元,其他實施例可僅包含全部進行所有功能的一個執行單元或複數個執行單元。排程器單元156、實際暫存器檔案單元158以及執行群集160被展示為可能是複數個,因為某些實施例對於某些型式之資料/操作產生分別管線(例如,純量整數管線、純量浮動點/封裝整數/封裝浮動點/向量整數/向量浮動點管線、及/或記憶體存取管線,其各具有它們獨有的排程器單元、實際暫存器檔案單元、及/或執行群集-並且於一分別記憶體存取管線之情況中,某些實施例被實作,於其中僅這管線之執行群集具有記憶體存取單 元164)。同時也應了解,在使用分別的管線情況,一個或多個的這些管線可以是無序發出/執行且其餘是有序。
記憶體存取單元164集合被耦合至記憶體單元170,其包含被耦合至一資料快取單元174(其被耦合至位準2(L2)快取單元176)的資料TLB單元172。於一實施範例中,記憶體存取單元164可包含負載單元、儲存位址單元以及儲存資料單元,其各耦合至記憶體單元170中之資料TLB單元172。指令快取單元134進一步耦合至記憶體單元170中之位準2(L2)快取單元176。L2快取單元176耦合至一個或多個其他快取位準並且最後至一主要記憶體。
藉由範例,範例暫存器換名、無序發出/執行核心結構可如下所示地實作管線100:1)指令擷取138進行擷取以及長度解碼級102與104;2)解碼單元140進行解碼級106;3)換名/分配器單元152進行分配級108以及換名級110;4)排程器單元156進行排程級112;5)實際暫存器檔案單元158以及記憶體單元170進行暫存器讀取/記憶體讀取級114;執行聚集160進行執行級116;6)記憶體單元170以及實際暫存器檔案單元158進行回寫/記憶體寫入級118;7)各種單元可被包含於異常處理級122中;以及8)除役單元154以及實際暫存器檔案單元158進行提交級124。
核心190可以支援包含於此處說明之指令的一個或多個指令集(例如,x86指令集(具有被添加之較新版本的一些擴充);美國加州森尼維耳市之MIPS技術的MIPS指令集;美國加州森尼維耳市之ARM持股公司的ARM指令集(具 有選擇之另外的擴充,例如NEON))。於一實施例中,核心190包含支援一封裝資料指令集擴充的邏輯(例如,AVX1、AVX2、及/或上述一般向量親和性指令格式(U=0及/或U=1)之一些形式),因而允許藉由將使用封裝資料被進行之許多的多媒體應用所使用之運算。
應了解,核心可支援多線程(執行二個或更多個平行的操作或線程集合),並且可因此以多種方式處理,該等多種方式包含分時多線程、同時多線程(其中一單一實體核心提供對於實體核心是同時地多線程之各線程之一邏輯核心),或其組合(例如,分時擷取與解碼以及隨後的同時多線程,例如,Intel®Hyperthreading技術)。
雖然暫存器換名於無序執行本文中被說明,應了解,暫存器換名可被使用於有序結構中。雖然圖解說明的處理器實施例也包含分別的指令與資料快取單元1034/1074以及共用L2快取單元1076,另外的實施例也可具有,例如,供用於指令以及資料兩者之一單一內部快取,例如,位準1(L1)內部快取,或複數個位準內部快取。於一些實施例中,系統可包含一內部快取以及外加於該核心及/或處理器的一外部快取之組合。另外地,所有的快取可以是外加於該核心及/或該處理器。
圖2是依據本發明實施例之處理器200的方塊圖,處理器200可具有多於一個核心,可具有一整合記憶體控制器並且可具有整合圖形。圖2之實線方塊圖解地說明處理器200,處理器200具有單一核心202A、系統媒介單元 210、一組之一個或多個匯流排控制器單元216,而選擇添加之虛線方塊說明不同的處理器200,處理器200具有複數個核心202A-N、系統媒介單元210中之一組的一個或多個整合記憶體控制器單元214以及特殊用途邏輯208。
因此,處理器200的不同實作例可包含:1)具有整合圖形及/或科學(總產量)邏輯的特定用途邏輯208之一CPU(其可包含一個或多個核心)、以及一般用途核心之核心202A-N(例如,一般用途有序核心、一般用途無序核心、其二者之組合);2)一協同處理器,其具有有意主要地用於圖形及/或科學(總產量)之大量特定用途核心的核心202A-N;以及3)一協同處理器,其具有大量之一般用途有序核心的核心202A-N。因此,處理器200可以是,例如,一般用途處理器、協同處理器或特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器,GPGPU(一般用途圖形處理單元),高產量多整合核心(MIC)協同處理器(包含30或更多個核心)、嵌入式處理器或其類似者。該處理器可被實作於一個或多個晶片上。處理器200可以是一個或多個基片的一部份及/或及/或,例如,可使用任何的一些處理技術,例如,BiCMOS、CMOS、或NMOS而於一個或多個基片上被實作。
該記憶體階系包含在該等核心內之一個或多個快取位準,一組或一個或多個共用快取單元206,以及耦合至該組整合記憶體控制器單元214之外部記憶體(未被展示)。該組共用快取單元206可包含一個或多個中間位準快 取,例如,位準2(L2)、位準3(L3)、位準4(L4)或其他快取位準、一最後位準快取(LLC)及/或其組合。雖然於一實施例中,一環狀基礎互連單元212互連整合圖形邏輯208、該組共用快取單元206以及系統媒介單元210/整合記憶體控制器單元214,不同的實施例可使用任何數量之習知技術以供互連此等單元。於一實施例中,協調性被保持在一個或多個快取單元206以及核心202-A-N之間。
於一些實施例中,一個或多個核心202A-N是能夠多線程。系統媒介210包含調節以及操作核心202A-N的那些構件。系統媒介單元210可包含,例如,電力控制單元(PCU)以及顯示單元。PCU可以是或包含用以調整核心202A-N以及整合圖形邏輯208之電力狀態所需的邏輯以及構件。顯示單元是用以驅動一個或多個外部連接之顯示器。
核心202A-N可以是同質的或異質的,就結構指令集而論;亦即,二個或更多個核心202A-N可以是能夠執行相同的指令集,而其他者則可以是僅能夠執行該指令集之一子集或一不同的指令集。
圖3-6是電腦結構範例之方塊圖。供用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路中樞、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、輕便媒體播放機、手持裝置、以及各種其他電子式裝置之習知技術的其他系統設計以及組態也是適合的。大體上,可包含如此處揭示之處理器及/ 或其他執行邏輯之非常多種系統或電子式裝置通常也是適合的。
接著參看至圖3,其所展示的是依據本發明一實施例之系統300的方塊圖。系統300可包含一個或多個處理器310、315,其被耦合至控制器中樞320。於一實施例中,控制器中樞320包含圖形記憶體控制器中樞(GMCH)390以及一輸入/輸出中樞(IOH)350(其可以是在分別的晶片上);GMCH 390包含包含耦合至記憶體340以及協同處理器345之記憶體以及圖形控制器;IOH 350是耦合輸入/輸出(I/O)裝置360至GMCH 390。另外地,記憶體以及圖形控制器之一個或兩者被整合在處理器之內(如於此處之說明),記憶體340以及協同處理器345直接地耦合至具有IOH350之一晶片中的處理器310、以及控制器中樞320。
另外的處理器315之可選擇的性質是圖3中以虛線表示者。各處理器310、315可包含此處說明之一個或多個處理核心並且可以是處理器1200的一些形式。
記憶體340可以是,例如,動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或其二者之組合。對於至少一實施例,控制器中樞320經由多點匯流排,例如,前面匯流排(FSB)、點對點界面,例如,快速通道互連(QPI)、或相似連接395與處理器310、315通訊。
於一實施例中,協同處理器345,例如,是一特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、 或其類似者。於一實施例中,控制器中樞320可包含一整合圖形加速裝置。
就包含結構學、微結構學、熱量學、功率消耗特性以及其類似者之價值觀而論,在實體資源310、315之間可以是具有多種差異性。
於一實施例中,處理器310執行控制一般型式之資料處理操作的指令。被嵌入指令內部者可以是協同處理器指令。處理器310確認這些協同處理器指令是將利用附帶的協同處理器345被執行之型式。因此,處理器310協同處理器匯流排或其他互連上發出這些協同處理器指令(或代表協同處理器指令之控制信號),至協同處理器345。協同處理器345接受並且執行所接收的協同處理器指令。
接著參看至圖4,其所展示的是依據本發明一實施例之第一更特定範例系統400的方塊圖。如於圖4之展示,多處理器系統400是一點對點互連系統,並且包含經由點對點互連450耦合的一第一處理器470以及一第二處理器480。處理器470以及480各可以處理器200的一些版本。於本發明一實施例中,處理器1470以及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之展示,IMC472以及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,匯流排橋418耦合第一匯 流排416至第二匯流排420。於一實施例中,一個或多個另外的處理器415,例如,協同處理器、高產量MIC處理器、GPGPU、加速裝置(例如,圖形加速裝置或數位信號處理(DSP)單元)、場式可程控閘陣列、或任何其他處理器,被耦合至第一匯流排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。因此,CL472、482包含整合記憶體控制器單元並且包含I/O控制邏輯。圖5不只是圖解地說明耦合至CL472、482之記憶體432、434,但同時也說明耦合至控制邏輯472、482的I/O裝置514。遺留I/O裝置515耦合至晶片組490。
接著參看至圖6,其所展示的是依據本發明一實施例之SoC 600的方塊圖。相似於圖2元件中之元件具有相 同的參考號碼。同時,虛線方塊是在更先進之SoC上之選擇性特點。於圖6中,一互連單元602耦合至:一應用處理器610,其包含一組的一個或多個核心202A-N以及共用快取單元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展示高階語言702中之一程式,該程式可使用x86編譯器704被編譯以產生x86二進制指令碼706,其可利用具有至少一個x86指令集核心716之一處理器而自然地被執行。具有至少一個x86指令集核心716之處理器代表任何處理器,其可進行相同如具有至少一個x86指令集核心之英特爾(Intel)處理器功能,其藉由相容地執行或以不同方式處理(1)英特爾x86指令集核心之指令集的一主要部份,或(2)應用或其他軟體目標之目的碼版本,而在具有至少一個x86指令集核心之一英特爾處理器上進行,以便實質地達成如具有至少一個x86指令集核心 之一英特爾處理器的相同結果。x86編譯器704代表可操作以產生x86二進制指令碼706(例如,目的碼)之一編譯器,該x86二進制指令碼706可具有或不具有另外的連結處理,而被執行於具有至少一個x86指令集核心716之處理器上。同樣地,圖7展示高階語言702之程式,其可使用不同的指令集編譯器708被編譯以產生不同的指令集二進制指令碼710,該指令集二進制指令碼710可藉由不具有至少一個x86指令集核心714之處理器(例如,一處理器,其具有核心可執行美國加州森尼維耳市之MIPS技術的MIPS指令集及/或執行美國加州森尼維耳市ARM持股公司之ARM指令集)自然地被執行。指令轉換器712被使用以轉換x86二進制指令碼706成為可藉由不具有一x86指令集核心714之處理器自然地被執行的一指令碼。這轉換的指令碼是不太可能相同於另外的指令集二進制指令碼710,因為這樣的一指令轉換器可能是不容易構成;但是,該轉換的指令碼將達成一般操作並且可自不同指令集的指令被構成。因此,指令轉換器712代表軟體、韌體、硬體、或其組合,其經由仿效、模擬或任何其他處理程序,而允許一處理器或其他不具有一x86指令集處理器或核心的電子式裝置執行該x86二進制指令碼706。
用以自一向量暫存器選擇元素之本發明實施例
本發明實施例包含一新的單一指令複數個資料(SIMD)/向量指令,其能夠依據一預測遮罩而自一向量抽取一元素。藉由範例並且不是限制,能夠抽取第一作用元素、 最終作用元素以及最終之後下一個的作用元素通常是有用的。如於下面範例中:int x=0;for(int i=0;i<N;i++){... x=foo(A[i])+y;//Stmt S1 y++;//Stmt S2}return x+y;變量x以及y是存在迴路之外。如果迴路被向量化,則使用來自最終疊代之x以及y數值的表示x+y必須被返回。當預測被使用以避免產生一餘留迴路時,依據向量預測p=Vec(i)<N中設定之最終位元,x將需要被抽取出。迴路循環轉換之使用,其允許自S2至S1對於y的跨過疊代相依性之處理,同時也需要抽取出對應至向量預測p=Vec(i)<N中設定的最終位元之後之下一個元素的y數值。因此具有允許抽取如此處說明之這些元素的一指令是有利於性能。
於一實施例中,指令vSelect[BWDQ]v1,k2,imm2選擇v1中之第一、最終或最終之後下一個的作用元素。預測遮罩k2指示那個元素是作用的並且imm2決定是否該第一(FIRST)作用元素、最終(LAST)作用元素或最終_下一個(LAST_NEXT),亦即,最終之後下一個的作用元素是將被選擇。於一實施例中,如果imm2是第一並且沒有作用元素,則第一元素被選擇;如果imm2是最終並且沒有作用元 素,則最終元素被選擇;以及如果imm2是LAST_NEXT並且無作用元素或最終作用元素是最終元素,則第一元素被選擇。
下面的假性碼展示依據本發明一實施例的這指令如何運算:vSelect[BWDQ](dst,v1,k2,imm2){//VLEN is 8 for Q,16 for D and 32 for W and 64 for B int j;int selectPos;if(imm2==0){//i.e.,FIRST selectPos=0;for(j=0;j<VLEN;j++){if(k2[j]){pos=J;break;}}}else if(imm2==1){//i.e.,LAST selectPos=VLEN-1;for(j=VLEN-1;j>=0;j--){if(k2[j]){pos=j;break; }}}else{//i.e.,LAST_NEXT selectPos=0;if(k2[VLEN-1]==0){for(j=VLEN-2;j>=0;j--){if(k2[j]){pos=j+1;break;}}}}dst=v1[selectPos];}
闡述本發明一實施例之運算的特定範例被圖解地說明於圖8A-C中。但是,應注意到,本發明下面之原理是不受限於任何的這些特定範例。
圖8A中,即時數值指示第一作用元素將被選擇。第一範例中,k2中之位元位置4包含第一為真數值。就此而論,暫存器z之資料元素4(於位元位置4中)被讀進輸出暫存器r中。第二範例中,輸入遮罩暫存器k2中沒有為真數值。就此而論,暫存器z之位元位置0中的資料元素被讀進輸出暫存器r中。
圖8B中,即時數值指示最終作用元素將被選擇。第一範例中,k2中之位元位置8包含最終為真數值。就此而論,暫存器z之資料元素8(於位元位置8中)被讀進輸出暫存器r中。第二範例中,輸入遮罩暫存器k2中沒有為真數值。就此而論,暫存器z之最終位元位置(位元位置f)中的資料元素被讀進輸出暫存器r中。
圖8C中,即時數值指示最終之後下一個(NEXT_LAST)作用元素將被選擇(亦即,在k2中的最終為真數值之後的資料元素)。第一範例中,k2中之位元位置8包含最終為真數值。就此而論,暫存器z之資料元素9(於位元位置9中)被讀進輸出暫存器r中。第二範例中,k2中之最終位元被設定為一為真數值。就此而論,k2中無隨後的為真數值並且暫存器z之第一位元位置(位元位置0)中之資料元素被讀進輸出暫存器r中。最後,第三範例中,k2不具有為真數值,並且就此而論,暫存器z之第一位元位置(位元位置0)中的資料元素被讀進輸出暫存器r中。
圖9是圖解說明依據本發明一實施例之一裝置。選擇邏輯903依據即時數值906選擇將自向量暫存器904經由選擇多工器905被輸出的第一、最終或最終之後下一個的元素。反應於一定序器902,選擇邏輯903讀取輸入遮罩暫存器k2中之各數值901,直至其分別地抵達第一、最終或最終之後的作用元素。其接著控制多工器905以自向量暫存器v1輸出所選擇的數值。
圖10是圖解說明於一實施例中利用選擇邏輯903 被實作的一有限狀態機器(FSM)。如所指示,其反應於即時數值而自一啟始狀態1001移動至鎖定狀態1002,並且到達第一、最終或最終之後的遮罩位元。如上所述,於鎖定狀態1002中,其控制自選擇的多工器905之輸出以讀取所需的數值並且產生適當的輸出。
概要地說,此處說明之本發明實施例提供一單一指令以自一向量抽取第一、最終或最終之後下一個的預測作用元素,因而提供一些向量化迴路之性能改進。這是對比於目前實作例,於其中目前編譯器必須產生純量餘留迴路或產生一複雜指令序列以自一向量抽取第一或最終預測元素,導致一些性能損失。
指令格式範例
此處說明之指令實施例可以不同格式被實施。另外地,系統、結構、以及管線範例將在下面被詳述。指令實施例可被執行於此等系統、結構以及管線上,但是不受限於那些的細節。
一向量親和性指令格式是是適用於向量指令之指令格式(例如,有某些欄特定於向量運算)。雖然實施例被說明,於其中向量以及尺度運算兩者皆由向量親和性指令格式被支援,另外的實施例則僅使用向量親和性指令格式之向量運算。
圖11A-11B是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其指令樣版之方塊圖。圖11A是圖解地說明依據本發明實施例之一般向量親和性指令格 式以及其類別A指令樣版的方塊圖;而圖11B則是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其類別B指令樣版的方塊圖。明確地說,一般向量親和性指令格式1100是用於界定類別A以及類別B指令樣版,其兩者皆包含非記憶體存取1105指令樣版以及記憶體存取1120指令樣版。於向量親和性指令格式文脈中之“一般”用詞指示該指令格式不被束縛於任何特定指令集。
雖然本發明實施例將被說明,於其中向量親和性指令格式支援下面各者:具有32位元(4位元組)之一64位元組向量運算元長度(或尺度)或64位元(8位元組)資料元素寬度(或尺度)(並且因此,一64位元組向量包含16雙字組尺度元素或另外地,8四字組尺度元素);具有16位元(2位元組)之一64位元組向量運算元長度(或尺度)或8位元(1位元組)資料元素寬度(或尺度);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)之一32位元組向量運算元長度(或尺度)、或8位元(1位元組)資料元素寬度(或尺度);以及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)之一16位元組向量運算元長度(或尺度),或8位元(1位元組)資料元素寬度(或尺度);另外的實施例可支援具有較多、較少位元之較多、較少及/或不同的向量運算元尺度(例如,256位元組向量運算元),或不同的資料元素寬度(例如,128位元(16位元組)資料元素寬度)。
圖11A中之類別A指令樣版包含:1)在非記憶體存取1105指令樣版之內,展示一非記憶體存取、全捨入控 制型式運算1110指令樣版以及一非記憶體存取、資料轉換型式運算1115指令樣版;以及2)在記憶體存取1120指令樣版之內,展示一記憶體存取、暫時1125指令樣版以及一記憶體存取、非暫時1130指令樣版。圖11B中之類別B指令樣版包含:1)在非記憶體存取1105指令樣版之內,展示一非記憶體存取、寫入遮罩控制、部份捨入控制型式運算1112指令樣版以及一非記憶體存取、寫入遮罩控制、v尺度型式運算1117指令樣版;以及2)在記憶體存取1120指令樣版之內,展示一記憶體存取、寫入遮罩控制1127指令樣版。
一般向量親和性指令格式1100包含圖11A-11B中展示之順序而在下面被列表之其它欄。
格式欄1140-於這欄中一特定數值(一指令格式識別符數值)唯一地辨識向量親和性指令格式,以及因此於指令流中向量親和性指令格式之指令的出現。就此而論,這欄是選擇性的,對於僅具有一般向量親和性指令格式之一指令集的意義而言,其不是需要的。
基底運算欄1142-其之內容識別不同的基底運算。
暫存器索引欄1144-其之內容,直接地或經由位址產生,而指定來源以及目的地運算元位置,它們是在暫存器中或在記憶體中。這些包含足量的位元數以自一PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N個暫存器。雖然於一實施例中,N可以是高至三個來源以及一個目的地暫存器,另外的實施例可支援更多或 較少來源以及目的地暫存器(例如,可支援高至二個來源,這些來源之其中一者同時也作用如同目的地,可支援高至三個來源,這些來源之其中一者同時也作用如同目的地,可支援高至二個來源以及一個目的地)。
修飾符欄1146-其之內容識別在一般向量指令格式中指定記憶體存取與那些不會者之指令之事件;亦即,在非記憶體存取1105指令樣版以及記憶體存取1120指令樣版之間。記憶體存取操作讀取及/或寫入至記憶體階系(於一些情況中,使用暫存器中之數值以指明來源及/或目的地位址),而非記憶體存取操作則不讀取及/或寫入至記憶體階系(例如,來源以及目的地是暫存器)。雖然於一實施例中,這欄同時也在三個不同的方式之間選擇以進行記憶體位址計算,另外的實施例可以支援較多、較少,或以不同的方式進行記憶體位址計算。
擴增運算欄1150-其之內容識別,除了基底運算之外,多種不同運算的那一個將被進行。這欄是上下文相關。於本發明一實施例中,這欄被分離成為一類別欄1168、一α(alpha)欄1152、以及一β(beta)欄1154。擴增運算欄1150允許共通族群的運算以一單一指令而不是2、3、或4個指令被進行。
尺度欄1160-其之內容允許對於記憶體位址產生之索引欄的內容之尺度調整(例如,對於使用2scale *索引+基底之位址產生)。
位移欄1162A-其之內容被使用作為記憶體位 址產生之部份(例如,對於使用2scale *索引+基底+位移之位址產生)。
位移係數欄1162B(注意到,直接地在位移係數欄1162B之上的位移欄1162A之並置指示一者或另一者被使用)-其之內容被使用作為位址產生之部份;其指定將利用記憶體存取之尺度(N)被尺度調整的一位移係數-其中N是記憶體存取中之位元組數目(例如,對於使用2scale *索引+基底+尺度調整的位移之位址產生)。多餘的低階位元被忽略,並且因此,位移係數欄之內容被乘以記憶體運算元總尺度(N),以便產生將被使用於計算一有效位址中的最後位移。N數值依據完全運算碼欄1174(稍後被說明)以及資料操縱欄1154C在執行期間利用處理器硬體被決定。位移欄1162A以及位移係數欄1162B,就它們不被使用於非記憶體存取1105指令樣版中及/或不同的實施例可僅實作二者中之一者或無一者之意義而言,是有選擇性的。
資料元素寬度欄1164-其之內容識別一些資料元素寬度之那一個是將被使用(於一些實施例中,被使用於所有的指令;於其他實施例中,僅被使用於一些指令)。就如果僅一個資料元素寬度被支援及/或資料元素寬度使用運算碼的一些方面被支援,則其不是所需之意義而言,這欄是有選擇性的。
寫入遮罩欄1170-其之內容控制,依據每一資料元素位置,目的地向量運算元中之資料元素位置是否反映基底運算以及擴增運算之結果。類別A指令樣版支援合併寫 入遮罩,而類別B指令樣版則支援合併以及歸零寫入遮罩兩者。當合併時,向量遮罩允許目的地中之任何元素組被保護免於在任何運算元的執行期間(利用基底運算以及擴增運算被指定)之更新;於另一實施例中,保留所對應的遮罩位元具有一個0之目的地各元素的舊數值。相對地,當歸零時,在任何運算執行期間(藉由基底運算以及該擴增運算被指定),向量遮罩允許任何目的地中之任何元素組被歸零;於一實施例中,當所對應的遮罩位元具有一個0數值時,目的地之一元素被設定為0。這功能性之一子集是控制被進行之運算的向量長度之能力(亦即,被修改之元素的跨度,自第一至最後一個);但是,對於連貫地被修改的元素,其不是必需的。因此,寫入遮罩欄1170允許部份的向量運算,包含負載、儲存、算術、邏輯運算,等等。雖然本發明實施例被說明,於其中寫入遮罩欄1170之內容選擇包含將被使用之寫入遮罩的一些寫入遮罩暫存器之一者(並且因此寫入遮罩欄1170之內容間接地辨識將被進行之遮罩),另外的實施例替換性或另外地允許遮罩寫入欄1170之內容直接地指定將被進行之遮罩。
即時欄1172-其之內容允許一即時之指定。就其是不出現於不支援即時的一般向量親和性格式之實作例中以及其是不出現於不使用一即時的指令中之意義而言,這欄是有選擇性的。
類別欄1168-其之內容在不同類別的指令之間識別。參考圖11A-B,這欄之內容在類別A以及類別B指令 之間選擇。於圖11A-B中,圓形角落之正方形被使用以指示一特定數值是呈現於一欄中(例如,分別地供用於圖11A-B中之類別欄1168的類別A 1168A以及類別B 1168B)。
類別A之指令樣版
於類別A之非記憶體存取1105指令樣版的情況中,α欄1152被詮釋如一RS欄1152A,其內容識別將被進行之不同的擴增運算型式之一者(例如,捨入1152A.1以及資料轉換1152A.2對於非記憶體存取、捨入型式運算1110以及非記憶體存取、資料轉換型式運算1115指令樣版分別地被指定),而β欄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中,暫時1152B.1以及非暫時1152B.2分別地對於記憶體存取、暫時1125指令樣版以及記憶體存取、非暫時1130指令樣版而被指定),而β欄1154被詮釋如一資料操縱欄1154C,其之內容識別一些資料操縱運算(也是習知為原始碼)之哪一者將被進行(例如,沒有操縱;廣播;一來源之上轉換;以及一目的地之下轉換)。記憶體存取1120指令樣版包含尺度欄1160,並且可選擇地包含位移欄1162A或位移尺度欄1162B。
向量記憶體指令藉由轉換支援,而進行來自記憶體之向量負載以及至記憶體之向量儲存器。如藉由正規之向量指令,向量記憶體指令藉由實際上利用被選擇作為寫 入遮罩之向量遮罩內容所被指定之被轉移的元素,而以資料元素類似形式轉移資料自/至記憶體。
記憶體存取指令樣版-暫時
暫時資料是很可能將很快再被使用而充分得益於快取之資料。但是,這是一示意,並且不同的處理器可以依不同方式而實作,包含完全地無視於該示意。
記憶體存取指令樣版-非暫時
非暫時資料是不可能得益於第一位準快取中快取而充分快再被使用的資料並且將被給予逐出的優先序。但是,這是一示意,並且不同的處理器可以不同方式實作,包含完全地忽略該示意。
類別B之指令樣版
於類別B之指令樣版的此情況中,該α欄1152被詮釋如一寫入遮罩控制(Z)欄1152C,其之內容識別利用寫入遮罩欄1170所控制的寫入遮罩是否應該是一合併或一歸零。
於類別B之非記憶體存取1105指令樣版的情況中,部份β欄1154被詮釋如一RL欄1157A,其之內容識別不同擴增運算型式之哪一者將被進行(例如,捨入1157A.1以及向量長度(VSIZE)1157A.2,其分別地被指定以供用於非記憶體存取、寫入遮罩控制、部份的捨入控制型式運算1112指令樣版以及非記憶體存取、寫入遮罩控制、VSIZE型式運算1117指令樣版),而β欄1154之其餘部份則識別將被進行之其指定型式的運算。於非記憶體存取1105指令樣 版中,尺度欄1160、位移欄1162A、以及位移尺度欄1162B是不出現。
於非記憶體存取、寫入遮罩控制、部份捨入控制型式運算1110指令樣版中,β欄1154之其餘部份被詮釋如捨入運算欄1159A並且異常事件報告不被引動(一所給予的指令不報告任何類型之浮動點異常旗標並且不提出任何浮動點異常處理器)。
捨入運算控制欄1159A-正如捨入運算控制欄1158,其之內容識別捨入運算族群之哪一者(例如,向上捨入、向下捨入、朝向零捨入以及捨入至最近者)被進行。因此,捨入運算控制欄1159A依據每個指令允許捨入模式之改變。於本發明一實施例中,其中一處理器包含用以指明捨入模式之一控制暫存器,捨入運算控制欄1150之內容超控該暫存器數值。
於非記憶體存取、寫入遮罩控制、VSIZE型式運算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之一般目的計算。不具有一分別的圖形核心之另一處理器,可包含支援類別A以及類別B兩者之多於一個的一般用途有序或無序核心。當然,來自一個類別之特點也可以是本發明不同實施例中之其他類別的實作例。以高階語言被編寫之程式將被輸出(例如,剛好及時地被編譯或靜態被編譯)成為多種不同的可執行形式,其包含:1)僅具有利用供執行之目標處理器所支援的類別之指令的形式;或2)具有使用所有類別指令的不同組合而被編寫之另外的程式段以及具有控制流程碼之形式,其中該流程碼依據利用目前執行程式碼之處理器所支援的指令而選擇執行之程式段。
圖12A-D是圖解地說明依據本發明實施例之特定向量親和性指令格式範例的方塊圖。圖12展示一特定向量親和性指令格式1200,就指定位置、尺度、詮釋及欄順序、以及供用於那些欄的一些欄之數值之意義而言,其是特定的。該特定向量親和性指令格式1200可被使用以延伸x86指令集,並且因此一些欄是相似或相同於那些被使用於現有的x86指令集以及其延伸者(例如,AVX)。這格式與具有延伸性之現有x86指令集的字首編碼欄、真實運算碼位元組欄、MOD R/M欄、SIB欄、位移欄以及即時欄保持相容性。來自圖11之圖12該等欄之映製將圖解地被說明。
應了解,雖然本發明實施例參考於用以說明目的之一般向量親和性指令格1100的脈絡中之特定向量親和性指令格式1200而被說明,除了聲明之外,本發明是不受限定於該特定向量親和性指令格式1200。例如,一般向量親和性指令格式1100考慮供用於各種欄之多種可能尺度,而特定向量親和性指令格式1200被展示如具有特定尺度之欄。藉由特定範例,雖然資料元素寬度欄1164圖解地被說明如於特定向量親和性指令格式1200中之一位元欄,本發明是不因此受限定(亦即,一般向量親和性指令格式1100考慮其他尺度的資料元素寬度欄1164)。
一般向量親和性指令格式1100包含在下面以圖12A中所說明的順序所列出之下面的欄。
EVEX字首(位元組0-3)1202-以四位元組形式被編碼。
格式欄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)以及757BEX位元組1,位元[5]-B)。EVEX.R,EVEX.X、以及EVEX.B位元欄提 供如對應的VEX位元欄之相同功能性,並且使用1之補數形式被編碼,亦即,ZMM0被編碼如1111B,ZMM15被編碼如0000B。其他指令欄如本技術中習知地編碼暫存器索引較低的三個位元(rrr,xxx,和bbb),因而,Rrrr、Xxxx、以及Bbbb可藉由增加EVEX.R、EVEX.X以及EVEX.B被形成。
REX’欄1110-這是REX’欄1110的第一部份並且是EVEX.R’位元欄(EVEX位元組1,位元[4]-R’),其被使用以編碼延伸32暫存器組較高的16暫存器或較低的16暫存器之任一者。於本發明一實施例中,這位元,如下面指示地與其他者一起,以位元倒反格式被儲存以識別(以習知的x86 32位元模式)BOUND指令,其之真實運算碼位元組是62,但於MOD R/M欄中(將在下面被說明)不接受於MOD欄中之數值11;本發明另外的實施例不以倒反格式儲存這以及其他被指示的位元。一數值1被使用以編碼較低的16暫存器。換言之,R’Rrrr藉由組合EVEX.R’、EVEX.R、以及來自其他欄的其他RRR而被形成。
運算碼映製欄1215(EVEX位元組1,位元[3:0]-mmmm)-其之內容編碼一隱含之引導運算碼位元組(0F、0F38、或0F3)。
資料元素寬度欄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)EVEX.vvvv編碼目的地暫存器運算元,對於某些向量位移以1的補數形式被指定;或3)EVEX.vvvv不編碼任何運算元,該欄被保留並且將包含1111b。因此,EVEX.vvvv欄1220編碼以倒反(1之補數)形式被儲存的第一來源暫存器指示器之4個低階位元。依據該指令,一額外之不同的EVEX位元欄被使用以延伸該指示器尺度至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個位元)。於一實施例中,為支援遺留的SSE指令,其使用以遺留的格式以及EVEX字首格式兩者的一SIMD字首(66H,F2H,F3H),這些遺留的SIMD字首被編碼成為SIMD字首編碼欄;並且在被提供至解碼器的PLA之前的執行期間被解壓縮成為遺留的SIMD字首(因而該PLA可執行這些遺留指令遺留以及EVEX兩格式而不需修改)。雖然較新的指令可直接地使用EVEX字首編碼欄之內容作為一運算碼延伸,某些實施例為了一致性而以相似形 式展開,但是允許利用這些遺留SIMD字首所指定的不同含意。另一實施例可重新設計PLA以支援2位元SIMD字首編碼,並且因此不需要解壓縮。
α欄1152(EVEX位元組3,位元[7]-EH;也是習知如EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、以及EVEX.N;同時也以α展示)-如先前之說明,這欄是上下文相關。
β欄1154(EVEX位元組3,位元[6:4]-SSS,也是習知如EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;同時也以β β β展示)-如先前之說明,這欄是上下文相關。
REX’欄1110-這是REX’欄的餘項並且是EVEX.V’位元欄(EVEX位元組3,位元[3]-V’),其可被使用以編碼延伸的32暫存器組之較高的16暫存器或較低的16暫存器之任一者。這位元以倒反格式被儲存。一個1數值被使用以編碼較低的16暫存器。換言之,V’VVVV藉由組合EVEX.V’、EVEX.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)-如先前之說明,尺度欄750之內容被使用於記憶體位址產生。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位元位移。因此,藉由disp8被超載至disp8*N之一例外,位移係數欄1162B以相同如x86指令集8位元位移之方式被編碼(因此於MOD RM/SIB編碼法則中沒有改變)。換言之,除了利用硬體之位移數值的說明外,編碼法則或編碼長度沒有改變(其需要利用記憶體運算元之尺度去尺度調整位移以得到一位元組方式之位址偏移量)。
即時欄1172如先前說明地運算。
完全運算碼欄
圖12B是圖解地說明依據本發明一實施例組成完全運算碼欄1174之特定向量親和性指令格式1200的欄之方塊圖。明確地說,完全運算碼欄1174包含格式欄1140、基底運算欄1142、以及資料元素寬度(W)欄1164。基底運算欄1142包含字首編碼欄1225、運算碼映製欄1215以及真實運算碼欄1230。
暫存器索引欄
圖12C是圖解地說明依據本發明一實施例組成暫存器索引欄1144之特定向量親和性指令格式1200的欄之 方塊圖。明確地說,暫存器索引欄1144包含REX欄1205、REX’欄1210、MOD R/M.Reg欄1244、MOD R/M.R/M欄1246、VVVv欄1220、xxx欄1254、以及bbb欄1256。
擴增運算欄
圖12D是圖解地說明依據本發明一實施例組成擴增運算欄1150之特定向量親和性指令格式1200的欄之方塊圖。當類別(U)欄1168包含0時,其表示EVEX.U0(類別A 1168A);當其包含1時,其表示EVEX.U1(類別B 1168B)。當U=0並且MOD欄1242包含11時(表示一非記憶體存取運算),α欄1152(EVEX位元組3,位元[7]-EH)被詮釋如rs欄752A。當rs欄1152A包含一個1(捨入1152A.1)時,β欄1154(EVEX位元組3,位元[6:4]-SSS)被詮釋如捨入控制欄1154A。捨入控制欄1154A包含一個一位元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(VSIZE1157.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個向量暫存器1310(其是512位元寬);這些暫存器被稱為zmm0至zmm31。較低的16zmm暫存器之較低階256位元被覆蓋在暫存器ymm0-16上。較低的16zmm暫存器的較低階128位元(ymm暫存器之較低階128位元)被覆蓋在暫存器sxmm0-15上。如下面表格中說明地,特定向量親和性指令格式1200在這些覆蓋暫存器檔案上操作。
換言之,向量長度欄1159B在一最大長度以及一個或多個其他較短長度之間選擇,其中此較短長度各者是先前長度之一半長度;並且無向量長度欄1159B之指令樣版在最大向量長度上運算。進一步地,於一實施例中,特定向量親和性指令格式1200之類別B指令樣版在封裝或純量單一/雙重精確性浮動點資料以及封裝或純量整數資料上運算。純量運算是在zmm/ymm/xmm暫存器中最低階資料元素位置上進行的運算;取決於實施例,較高階資料元素位置是保留相同如指令先前之它們樣子或歸零。
於圖解地說明的實施例中,寫入遮罩暫存器1315有8個寫入遮罩暫存器(k0至k7),其各是64位元之尺度。於一不同實施例中,寫入遮罩暫存器1315是16位元的尺度。如先前所述,於本發明一實施例中,向量遮罩暫存器k0不能被使用作為寫入遮罩;當將通常指示k0之編碼被使用於一寫入遮罩時,其選擇一有線的寫入遮罩0xFFFF,有效地使對於那指令之寫入遮罩失效。
於圖解說明之實施例中,一般目的暫存器1325有十六個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-B是圖解地說明有序核心結構之更多特定範例的方塊圖,其核心將是一晶片中許多邏輯區塊(包含相同型式及/或不同型式的其他核心)之一者。該等邏輯區塊經由高頻寬互連網路(例如,環狀網路),取決於應用,而與一些固定功能邏輯、記憶體I/O界面、以及其他必須I/O邏輯通訊。
圖14A是依據本發明實施例之單一處理器核心與其連接之晶圓上的互連網路1402以及其位準2(L2)快取1404之局部性子集的方塊圖。於一實施例中,一指令解碼器1400支援具有封裝資料指令集擴充功能的x86指令集。一L1快取1406允許低潛伏期存取快取記憶體進入純量以及向量單元。雖然於一實施例中(為簡化其設計),一純量單元1408以及一向量單元1410使用分別的暫存器集合(分別是,純量暫存器1412以及向量暫存器1414)並且在它們之間轉移的資料被寫入至記憶體並且接著自位準1(L1)快取1406中被回讀,本發明另外的實施例可使用不同的方法(例 如,使用單一暫存器集合或包含允許資料在二個暫存器檔案之間轉移而不必被寫入以及回讀的通訊路線)。
L2快取1404之局部性子集是廣域L2快取之部份,該廣域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允許推斷產生的向量寫入。
100‧‧‧管線
102‧‧‧擷取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧分配級
110‧‧‧換名級
112‧‧‧排程級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧回寫/記憶體寫入級
122‧‧‧異常處理級
124‧‧‧提交級

Claims (20)

  1. 一種用以選擇一向量運算之元素的處理器,該處理器用於執行一個或多個指令以進行下列操作:指明是否使用一即時數值以辨識一輸入遮罩暫存器之第一、最終或最終之後下一個的作用元素;依據該即時數值而辨識該輸入遮罩暫存器中之該等第一、最終或最終之後下一個的作用元素;自對應至該輸入遮罩暫存器中之該等經辨識的第一、最終或最終之後下一個的作用元素之一輸入向量暫存器而讀取一數值;並且將該數值寫入至一輸出向量暫存器。
  2. 如申請專利範圍第1項之處理器,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該第一作用元素是將被辨識,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  3. 如申請專利範圍第1項之處理器,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該最終作用元素是將被辨識,則自該輸入向量暫存器之最終位元位置而讀取該數值。
  4. 如申請專利範圍第1項之處理器,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該最終之後下一個的作用元素是將被辨識,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  5. 如申請專利範圍第1項之處理器,其中如果該即時數值指示最終之後下一個的作用元素是將被辨識並且該最終作用元素是在最終位元位置中,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  6. 一種用以檢測在一向量暫存器內之相同元素的方法,該方法包括下列操作:指明是否使用一即時數值以辨識一輸入遮罩暫存器之第一、最終或最終之後下一個的作用元素;依據該即時數值而辨識該輸入遮罩暫存器中之該等第一、最終或最終之後下一個的作用元素;自對應至該輸入遮罩暫存器中之該等經辨識的第一、最終或最終之後下一個的作用元素之一輸入向量暫存器而讀取一數值;並且將該數值寫入至一輸出向量暫存器。
  7. 如申請專利範圍第6項之方法,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該第一作用元素是將被辨識,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  8. 如申請專利範圍第6項之方法,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該最終作用元素是將被辨識,則自該輸入向量暫存器之最終位元位置而讀取該數值。
  9. 如申請專利範圍第6項之方法,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該最終 之後下一個的作用元素是將被辨識,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  10. 如申請專利範圍第6項之方法,其中如果該即時數值指示最終之後下一個的作用元素是將被辨識並且該最終作用元素是在最終位元位置中,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  11. 一種系統,其包括:一記憶體,其用以儲存指令以及資料;一處理器,其用於執行一個或多個該等指令以進行下列操作:指明是否使用一即時數值以辨識一輸入遮罩暫存器之第一、最終或最終之後下一個的作用元素;依據該即時數值而辨識該輸入遮罩暫存器中之該等第一、最終或最終之後下一個的作用元素;自對應至該輸入遮罩暫存器中之該等經辨識的第一、最終或最終之後下一個的作用元素之一輸入向量暫存器而讀取一數值;並且將該數值寫入至一輸出向量暫存器。
  12. 如申請專利範圍第11項之系統,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該第一作用元素是將被辨識,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  13. 如申請專利範圍第11項之系統,其中如果無作用元素存 在於該輸入遮罩暫存器中並且該即時數值指示該最終作用元素是將被辨識,則自該輸入向量暫存器之最終位元位置而讀取該數值。
  14. 如申請專利範圍第11項之系統,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該最終之後下一個的作用元素是將被辨識,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  15. 如申請專利範圍第14項之系統,其中如果該即時數值指示最終之後下一個的作用元素是將被辨識並且該最終作用元素是在最終位元位置中,則自該輸入向量暫存器之第一位元位置而讀取該數值。
  16. 一種用以檢測在一向量暫存器內的相同元素之裝置,其包括下列操作:指明構件,其用以指明是否使用一即時數值以辨識一輸入遮罩暫存器之第一、最終或最終之後下一個的作用元素;辨識構件,其用以依據該即時數值而辨識該輸入遮罩暫存器中之該等第一、最終或最終之後下一個的作用元素;讀取構件,其用以自對應至該輸入遮罩暫存器中之該等經辨識的第一、最終或最終之後下一個的作用元素之一輸入向量暫存器而讀取一數值;以及將該數值寫入至一輸出向量暫存器。
  17. 如申請專利範圍第16項之裝置,其中如果無作用元素存 在於該輸入遮罩暫存器中並且該即時數值指示該第一作用元素是將被辨識,則該讀取構件自該輸入向量暫存器之第一位元位置而讀取該數值。
  18. 如申請專利範圍第16項之裝置,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該最終作用元素是將被辨識,則該讀取構件自該輸入向量暫存器之最終位元位置而讀取該數值。
  19. 如申請專利範圍第16項之裝置,其中如果無作用元素存在於該輸入遮罩暫存器中並且該即時數值指示該最終之後下一個的作用元素是將被辨識,則該讀取構件自該輸入向量暫存器之第一位元位置而讀取該數值。
  20. 如申請專利範圍第16項之裝置,其中如果該即時數值指示最終之後下一個的作用元素是將被辨識並且該最終作用元素是在最終位元位置中,則該讀取構件自該輸入向量暫存器之第一位元位置而讀取該數值。
TW101146073A 2011-12-23 2012-12-07 用於選擇向量運算之元素的裝置及方法 TWI490781B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067093 WO2013095616A1 (en) 2011-12-23 2011-12-23 Apparatus and method for selecting elements of a vector computation

Publications (2)

Publication Number Publication Date
TW201342205A TW201342205A (zh) 2013-10-16
TWI490781B true TWI490781B (zh) 2015-07-01

Family

ID=48669256

Family Applications (2)

Application Number Title Priority Date Filing Date
TW104112429A TWI559219B (zh) 2011-12-23 2012-12-07 用於選擇向量運算之元素的裝置及方法(二)
TW101146073A TWI490781B (zh) 2011-12-23 2012-12-07 用於選擇向量運算之元素的裝置及方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW104112429A TWI559219B (zh) 2011-12-23 2012-12-07 用於選擇向量運算之元素的裝置及方法(二)

Country Status (4)

Country Link
US (1) US20130332701A1 (zh)
CN (1) CN104137052A (zh)
TW (2) TWI559219B (zh)
WO (1) WO2013095616A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720667B2 (en) 2014-03-21 2017-08-01 Intel Corporation Automatic loop vectorization using hardware transactional memory
US10152321B2 (en) * 2015-12-18 2018-12-11 Intel Corporation Instructions and logic for blend and permute operation sequences
US20170177360A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Scatter Operations
CN109032666B (zh) * 2018-07-03 2021-03-23 中国人民解放军国防科技大学 一种用于向量处理的确定断言活跃元素个数的方法和装置
TWI824847B (zh) * 2022-11-24 2023-12-01 新唐科技股份有限公司 記憶體分享裝置、方法、可分享記憶體以及其使用之電子設備

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095808B1 (en) * 2000-08-16 2006-08-22 Broadcom Corporation Code puncturing method and apparatus
US20080244369A1 (en) * 2007-03-29 2008-10-02 Yibo Jiang Register read mechanism
US20090019269A1 (en) * 2001-11-01 2009-01-15 Altera Corporation Methods and Apparatus for a Bit Rake Instruction
US20090172349A1 (en) * 2007-12-26 2009-07-02 Eric Sprangle Methods, apparatus, and instructions for converting vector data
TW201135665A (en) * 2009-12-23 2011-10-16 Intel Corp Parallel and vectored Gilbert-Johnson-Keerthi graphics processing
TW201143462A (en) * 2010-04-14 2011-12-01 Mediatek Inc Method for performing local motion vector derivation during video coding of a coding unit, and associated apparatus

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185670B1 (en) * 1998-10-12 2001-02-06 Intel Corporation System for reducing number of opcodes required in a processor using an instruction format including operation class code and operation selector code fields
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US20090106526A1 (en) * 2007-10-22 2009-04-23 David Arnold Luick Scalar Float Register Overlay on Vector Register File for Efficient Register Allocation and Scalar Float and Vector Register Sharing
US20090150648A1 (en) * 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions
US20110283092A1 (en) * 2008-08-15 2011-11-17 Apple Inc. Getfirst and assignlast instructions for processing vectors
US7814303B2 (en) * 2008-10-23 2010-10-12 International Business Machines Corporation Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively
US20120023308A1 (en) * 2009-02-02 2012-01-26 Renesas Electronics Corporation Parallel comparison/selection operation apparatus, processor, and parallel comparison/selection operation method
US10157061B2 (en) * 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US9575753B2 (en) * 2012-03-15 2017-02-21 International Business Machines Corporation SIMD compare instruction using permute logic for distributed register files

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095808B1 (en) * 2000-08-16 2006-08-22 Broadcom Corporation Code puncturing method and apparatus
US20090019269A1 (en) * 2001-11-01 2009-01-15 Altera Corporation Methods and Apparatus for a Bit Rake Instruction
US20080244369A1 (en) * 2007-03-29 2008-10-02 Yibo Jiang Register read mechanism
US20090172349A1 (en) * 2007-12-26 2009-07-02 Eric Sprangle Methods, apparatus, and instructions for converting vector data
TW201135665A (en) * 2009-12-23 2011-10-16 Intel Corp Parallel and vectored Gilbert-Johnson-Keerthi graphics processing
TW201143462A (en) * 2010-04-14 2011-12-01 Mediatek Inc Method for performing local motion vector derivation during video coding of a coding unit, and associated apparatus

Also Published As

Publication number Publication date
TW201545057A (zh) 2015-12-01
WO2013095616A1 (en) 2013-06-27
US20130332701A1 (en) 2013-12-12
TWI559219B (zh) 2016-11-21
CN104137052A (zh) 2014-11-05
TW201342205A (zh) 2013-10-16

Similar Documents

Publication Publication Date Title
TWI496079B (zh) 電腦實作方法、處理器以及含有用於基於向量寫入遮罩之內容而將兩個純量常數之其中之一者儲存倒一般目的暫存器中的指令的實體機器可讀取儲存媒體
TWI502491B (zh) 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI476682B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI517031B (zh) 用於呈現各別複數之複數共軛根之向量指令
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
TWI518588B (zh) 遮罩暫存器上的廣播運算技術
TWI509406B (zh) 用於以推測支援來執行向量化的裝置及方法
TWI525538B (zh) 超級乘加(super madd)指令技術
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI543076B (zh) 用於資料類型之向下轉換的裝置及方法(二)
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TWI628593B (zh) 用以履行向量位元反轉之方法及設備
JP2018506096A (ja) ベクトルビットシャッフルを実行するための方法および装置
TWI490781B (zh) 用於選擇向量運算之元素的裝置及方法
TWI637317B (zh) 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置
TW201732568A (zh) 用於巷道為主的跨類收集的系統、設備與方法
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置
TWI737650B (zh) 用於從鏈結結構取回元件的處理器、系統和方法
TWI617977B (zh) 用於執行自旋迴路跳位的裝置及方法

Legal Events

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