[go: up one dir, main page]

TW201337740A - 用於在一般目的暫存器中基於向量寫入遮罩之內容而儲存兩個純量常數中之一者的指令 - Google Patents

用於在一般目的暫存器中基於向量寫入遮罩之內容而儲存兩個純量常數中之一者的指令 Download PDF

Info

Publication number
TW201337740A
TW201337740A TW101145911A TW101145911A TW201337740A TW 201337740 A TW201337740 A TW 201337740A TW 101145911 A TW101145911 A TW 101145911A TW 101145911 A TW101145911 A TW 101145911A TW 201337740 A TW201337740 A TW 201337740A
Authority
TW
Taiwan
Prior art keywords
vector
instruction
column
register
bit
Prior art date
Application number
TW101145911A
Other languages
English (en)
Other versions
TWI496079B (zh
Inventor
Jesus Corbal
Matthew J Craighead
Bret L Toll
Andrew T Forsyth
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 TW201337740A publication Critical patent/TW201337740A/zh
Application granted granted Critical
Publication of TWI496079B publication Critical patent/TWI496079B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions

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)

Abstract

根據一個實施例,一指令之出現被提取。該指令之格式指明來自一單一向量寫入遮罩暫存器之一來源運算元作為其僅有的來源運算元,並且指明一單一一般目的暫存器作為其之目的地。此外,該指令之格式包含一第一欄,該第一欄之內容選擇該單一向量寫入遮罩暫存器,並且包含一第二欄,該第二欄之內容選擇該單一一般目的暫存器。該來源運算元是一寫入遮罩,該寫入遮罩包含對應至結構向量暫存器內之不同的多位元資料元素位置之複數個一位元向量寫入遮罩元素。所揭示方法也包含,反應於執行該單一指令之該單一出現,儲存資料於單一一般目的暫存器,以至於其之內容基於該來源運算元中之該等複數個一位元向量寫入遮罩元素是否都是0而代表一第一或第二純量常數。

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®先進向量擴充功能程式參考)。
依據本發明之一實施例,係特地提出一種電腦實作方法,其包括下列步驟:提取一指令之一出現,其中該指令之格式指明來自一單一向量寫入遮罩暫存器之一來源運算元作為其僅有的來源運算元並且指明一單一一般目的暫存器作為其之目的地,其中該指令之格式包含一第一欄,該第一欄之內容自複數個結構向量寫入遮罩暫存器選擇該單一向量寫入遮罩暫存器,並且其中該指令之格式包含一第二欄,該第二欄之內容自複數個結構一般目的暫存器選擇該單一一般目的暫存器,並且其中該來源運算元是一寫入遮罩,該寫入遮罩包含對應至結構向量暫存器內之不同的多位元資料元素位置之複數個一位元向量寫入遮罩 元素;以及反應於執行該單一指令之該單一出現,儲存資料於單一一般目的暫存器,以至於其之內容基於該來源運算元中之該等複數個一位元向量寫入遮罩元素都是0或不是而代表一第一或第二純量常數。
100‧‧‧指令
102‧‧‧第一欄
104‧‧‧第二欄
110‧‧‧結構向量寫入遮罩暫存器
120‧‧‧結構向量暫存器
130‧‧‧結構一般目的暫存器
132‧‧‧來源向量寫入遮罩暫存器內容
134‧‧‧來源運算元
134A‧‧‧來源運算元
140‧‧‧第一方塊
142‧‧‧輸出方塊
210‧‧‧指令範例
212‧‧‧純量常數1
214‧‧‧純量常數0
216‧‧‧純量常數0
218‧‧‧純量常數1
301-302‧‧‧儲存兩個純量常數之一流程步驟
401-402‧‧‧儲存兩個純量常數之一流程步驟
500‧‧‧處理器核心
510‧‧‧指令提取單元
515‧‧‧硬體解碼單元
520‧‧‧執行引擎單元
640‧‧‧向量寫入遮罩暫存器
645‧‧‧32位元資料元素
650‧‧‧64位元資料元素
652‧‧‧16位元資料元素
654‧‧‧8位元資料元素
670‧‧‧一位元向量寫入遮罩元素數目
700‧‧‧對應範例
705‧‧‧來源A運算元
710‧‧‧來源B運算元
715‧‧‧向量寫入遮罩暫存器K1
720‧‧‧目的地運算元
760‧‧‧運算
764‧‧‧目的地運算元
766‧‧‧運算
1202‧‧‧VEX字首
1240‧‧‧格式欄
1205‧‧‧REX欄
1215‧‧‧運算碼映製欄
1220‧‧‧VEX.vvvv
1225‧‧‧字首編碼欄
1230‧‧‧真實運算碼欄
1240‧‧‧格式欄
1242‧‧‧MOD欄
1244‧‧‧R/M欄
1246‧‧‧Reg欄
1254‧‧‧SIB.xxx
1256‧‧‧SIB.bbb
1260‧‧‧大小欄
1262‧‧‧位移欄
1268‧‧‧VEX.L大小欄
1272‧‧‧即時欄
1274‧‧‧完全運算碼欄
1300‧‧‧一般向量親和性指令格式
1305‧‧‧非記憶體存取
1310‧‧‧全捨入控制型式運算
1312‧‧‧部份捨入控制型式運算
1315‧‧‧資料轉換型式運算
1317‧‧‧v大小型式運算
1320‧‧‧記憶體存取
1325‧‧‧暫時指令樣版
1327‧‧‧寫入遮罩控制
1330‧‧‧非暫時指令樣版
1340‧‧‧格式欄
1342‧‧‧基底運算欄
1344‧‧‧暫存器索引欄
1346‧‧‧修飾符欄
1350‧‧‧擴增運算欄
1352‧‧‧α(alpha)欄
1352A‧‧‧RS欄
1352A.1‧‧‧捨入欄
1352A.2‧‧‧資料轉換欄
1352B‧‧‧逐出示意欄
1352B.2‧‧‧非暫存欄
1352C‧‧‧寫入遮罩控制欄
1354‧‧‧β(beta)欄
1354B‧‧‧資料轉換欄
1354C‧‧‧資料操縱欄
1356‧‧‧SAE欄
1357A‧‧‧RL欄
1357A.1‧‧‧捨入
1357A.2‧‧‧向量長度
1357B‧‧‧廣播欄
1358‧‧‧捨入運算控制欄
1359A‧‧‧捨入運算控制欄
1359B‧‧‧向量長度欄
1360‧‧‧大小欄
1362A‧‧‧位移欄
1362B‧‧‧位移係數欄
1364‧‧‧資料元素寬度欄
1368‧‧‧類別欄
1368A‧‧‧類別A
1368B‧‧‧類別B
1370‧‧‧寫入遮罩欄
1372‧‧‧即時欄
1374‧‧‧完全運算碼欄
1400‧‧‧特定向量親和性指令格式
1402‧‧‧EVEX字首
1405‧‧‧REX欄
1415‧‧‧運算碼映製欄
1420‧‧‧EVEX.vvvv欄
1425‧‧‧字首編碼欄
1430‧‧‧真實運算碼欄
1440‧‧‧MOD R/M欄
1442‧‧‧MOD欄
1444‧‧‧Reg欄
1446‧‧‧R/M欄
1454‧‧‧SIB.xxx
1456‧‧‧SIB.bbb
1515‧‧‧寫入遮罩暫存器
1525‧‧‧一般目的暫存器
1545‧‧‧純量浮動點堆疊暫存器檔案
1550‧‧‧封裝整數平的暫存器檔案
1600‧‧‧處理器管線
1602‧‧‧提取級
1604‧‧‧長度解碼級
1606‧‧‧解碼級
1608‧‧‧分配級
1610‧‧‧換名級
1612‧‧‧排程級
1614‧‧‧暫存器讀取/記憶體讀取級
1616‧‧‧執行級
1618‧‧‧回寫/記憶體寫入級
1622‧‧‧異常處理級
1624‧‧‧提交級
1630‧‧‧前端點單元
1632‧‧‧分支預測單元
1636‧‧‧指令轉譯後備緩衝器
1638‧‧‧指令提取單元
1640‧‧‧解碼單元
1650‧‧‧執行引擎單元
1652‧‧‧換名/分配器單元
1654‧‧‧除役單元
1656‧‧‧排程器單元
1658‧‧‧實際暫存器檔案單元
1660‧‧‧執行群集
1662‧‧‧執行單元
1664‧‧‧記憶體存取單元
1670‧‧‧記憶體單元
1670‧‧‧記憶體單元
1672‧‧‧資料TLB單元
1674‧‧‧資料快取單元
1676‧‧‧L2快取單元)
1690‧‧‧處理器核心
1700‧‧‧指令解碼器
1702‧‧‧互連網路
1704‧‧‧L2快取
1706‧‧‧L1快取
1708‧‧‧純量單元
1710‧‧‧向量單元
1712‧‧‧純量暫存器
1714‧‧‧向量暫存器
1720‧‧‧拌和單元
1724‧‧‧複製單元
1726‧‧‧寫入遮罩暫存器
1728‧‧‧寬度ALU
1800‧‧‧處理器
1802A-N‧‧‧核心
1806‧‧‧共用快取單元
1808‧‧‧特殊用途邏輯
1810‧‧‧系統媒介單元
1812‧‧‧環狀基礎互連單元
1814‧‧‧整合記憶體控制器單元
1816‧‧‧匯流排控制器單元
1900‧‧‧系統
1910、1915‧‧‧處理器
1920‧‧‧控制器中樞
1940‧‧‧記憶體
1945‧‧‧協同處理器
1950‧‧‧輸入/輸出中樞(IOH)
1960‧‧‧輸入/輸出(I/O)裝置
1990‧‧‧圖形記憶體控制器中樞(GMCH)
2000‧‧‧系統
2015‧‧‧處理器
2016‧‧‧匯流排
2018‧‧‧匯流排橋
2020‧‧‧匯流排
2022‧‧‧鍵盤及/或滑鼠
2024‧‧‧音訊I/O
2027‧‧‧通訊裝置
2028‧‧‧儲存單元
2030‧‧‧資料
2038‧‧‧協同處理器
2050‧‧‧對點互連
2070‧‧‧處理器
2072‧‧‧整合記憶體控制器(IMG)單元
2076、2078‧‧‧點對點(P-P)界面
2080‧‧‧處理器
2082‧‧‧整合記憶體控制器(IMG)單元
2086、2088‧‧‧P-P界面
2090‧‧‧晶片組
2094、2098‧‧‧點對點界面電路
2096‧‧‧界面
2100‧‧‧系統
2114‧‧‧I/O裝置
2115‧‧‧遺留I/O裝置
2200‧‧‧SoC
2202‧‧‧互連單元
2202A-N‧‧‧核心
2210‧‧‧應用處理器
2220‧‧‧協同處理器
2230‧‧‧靜態隨機存取記憶體 (SRAM)單元
2232‧‧‧直接記憶體存取(DMA)單元
2240‧‧‧顯示單元
2302‧‧‧高階語言
2304‧‧‧x86編譯器
2306‧‧‧x86二進制指令碼
2316‧‧‧x86指令集核心
2310‧‧‧二進制指令碼
2314‧‧‧x86指令集核心
2312‧‧‧指令轉換器
本發明可藉由參看至下面的說明以及被使用以展示本發明實施例之附圖而最佳地被了解。於圖形中:圖1是展示依據本發明之某些實施例,用於在一般目的暫存器中基於向量寫入遮罩而儲存兩個純量常數中之一者的指令運算範例之方塊圖;圖2A是展示依據本發明一實施例之關於一特定“如果遮罩是零則設定GPR”指令範例的方塊圖;圖2B是展示依據本發明一實施例之關於一特定“如果遮罩不是零則設定GPR”指令範例的方塊圖;圖3是依據本發明某些實施例,用於在一般目的暫存器中基於向量寫入遮罩內容而儲存兩個純量常數之一者的處理各指令出現之流程圖;圖4是依據本發明某些實施例用於在一般目的暫存器中基於向量寫入遮罩內容而儲存兩個純量常數之一者的執行指令出現之流程圖;圖5是依據本發明某些實施例用於在一般目的暫存器中基於向量寫入遮罩內容而儲存兩個純量常數之一者的處理指令出現之特定機器的方塊圖;圖6A是依據本發明一實施例而依據向量大小以 及資料元素大小以展示一位元向量寫入遮罩元素之數目的列表;圖6B是展示依據本發明一實施例而依據向量大小以及資料元素大小被使用作為一寫入遮罩之向量寫入遮罩暫存器640以及位元位置之圖形;圖7A是展示依據本發明某些實施例之運算760範例的方塊圖,該運算760使用來自一64位元向量寫入遮罩暫存器K1之一寫入遮罩以進行合併,其中向量大小是512位元以及資料元素大小是32位元;圖7B是展示依據本發明某些實施例之運算766範例的方塊圖,該運算766使用來自該64位元寫入遮罩暫存器K1之該寫入遮罩而調整歸零,其中向量大小是512位元以及資料元素大小是32位元;圖8A展示依據本發明某些實施例而使用8位元大小之來源運算元134於“如果遮罩是零則設定GPR”指令(KSETZB GPRY,KX)的假性碼;圖8B展示依據本發明某些實施例而使用16位元大小之來源運算元134於“如果遮罩是零則設定GPR”指令(KSETZW GPRY,KX)的假性碼;圖8C展示依據本發明某些實施例而使用32位元大小之來源運算元134於“如果遮罩是零則設定GPR”指令(KSETZD GPRY,KX)的假性碼;圖8D展示依據本發明某些實施例而使用64位元大小之來源運算元134於“如果遮罩是零則設定GPR”指令 (KSETZQ GPRY,KX)的假性碼;圖9A展示依據本發明某些實施例而使用8位元大小之來源運算元134於“如果遮罩不是零則設定GPR”指令(KSETNZB GPRY,KX)的假性碼;圖9B展示依據本發明某些實施例而使用16位元大小之來源運算元134於“如果遮罩不是零則設定GPR”指令(KSETNZW GPRY,KX)的假性碼;圖9C展示依據本發明某些實施例而使用32位元大小之來源運算元134於“如果遮罩不是零則設定GPR”指令(KSETNZD GPRY,KX)的假性碼;圖9D展示依據本發明某些實施例而使用64位元大小之來源運算元134於“如果遮罩不是零則設定GPR”指令(KSETNZQ GPRY,KX)的假性碼;圖10A展示被寫入於傳送參數至一函數之AVX1/AVX2指令中之一指令碼序列範例;圖10B展示依據本發明一實施例以藉由傳送參數至一函數之KSETZW指令而被寫入的一指令碼序列範例;圖11A展示被寫入於使用指示符以及一間接函數呼叫之AVX1/AVX2指令中的一指令碼序列範例;圖11B展示依據本發明一實施例而藉由使用一指示符以及一間接函數呼叫之KSETZW指令被寫入的一指令碼序列範例;圖12A提供VEX C4編碼之一表示; 圖12B展示來自圖12A之哪些欄組成一完全運算碼欄1274以及基底運算欄1242;圖12C展示來自圖12A之哪些欄組成暫存器索引欄1244;圖13A是展示依據本發明實施例之一般向量親和性指令格式以及其類別A指令樣版之方塊圖;圖13B是展示依據本發明實施例之一般向量親和性指令格式以及其類別B指令樣版之方塊圖;圖14A是展示依據本發明實施例之特定向量親和性指令格式範例的方塊圖;圖14B是展示依據本發明一實施例組成完全運算碼欄1374之特定向量親和性指令格式1400之欄的方塊圖;圖14C是展示依據本發明一實施例組成暫存器索引欄1344之特定向量親和性指令格式1400之欄的方塊圖;圖14D是展示依據本發明一實施例組成擴增運算欄1350之特定向量親和性指令格式1400之欄的方塊圖;圖15是依據本發明一實施例之暫存器結構1500的方塊圖;圖16A是展示依據本發明實施例之有序管線範例以及暫存器換名、無序發出/執行管線範例的方塊圖;圖16B是依據本發明實施例之被包含於處理器中的有序結構核心以及暫存器換名、無序發出/執行結構核 心範例的實施例之方塊圖;圖17A是依據本發明實施例之一單一處理器核心與其連接之晶圓上的互連網路1702以及其位準2(L2)快取1704之局部性子集的方塊圖;圖17B是依據本發明實施例之圖17A中的處理器核心之部份展開圖;圖18是依據本發明實施例可具有多於一個核心、可具有整合記憶體控制器以及可具有整合圖形之處理器1800的方塊圖;圖19是依據本發明一實施例之系統1900的方塊圖;圖20是依據本發明一實施例之第一更特定系統2000範例的方塊圖;圖21是依據本發明一實施例之第二更特定系統2100範例的方塊圖;圖22是依據本發明一實施例之SoC 2200的方塊圖;以及圖23是依據本發明實施例之對照使用一軟體指令轉換器以轉換一來源指令集之二進制指令為目標指令集之二進制的方塊圖。
較佳實施例之詳細說明
於下面說明中,許多特定細節被提出,例如邏輯實作、運算碼、指明運算元方式、資源分割/共享/複製實作、 系統構件型式與相互關係以及邏輯分割/整合選擇,以便提供本發明更完全之了解。但是,熟習本技術者應了解,本發明可被實施而不必這些特定細節。於其他實例中,為了不使本發明混淆,控制結構、閘位準電路以及完全軟體指令序列未被展示於詳細說明中。一般習知技術,包含所說明者,將能夠實作適當的功能而不需過度之實驗。
同時也應了解,例如,文中提及之“一實施例”、“一個實施例”、或“一或多個實施例”,指示一特定特點可被包含於本發明實施例之實施中,但是不必定得每個實施例包含該特定的特點。同樣地,應了解,為了使揭示流暢以及協助對本發明各種觀點的了解之目的,各種特點有時一起被群聚在一單一實施例、圖形、或其說明中。進一步地,當一特定的特點、結構、或特性關連於一實施例被說明時,不論其是否明確地被說明,其被認為是在熟習本技術者所了解的知識之內,以使得此等特點、結構、或特性關連於其他實施例發生作用。但是,這揭示方法將不被詮釋作為反映申請專利之實施例明顯地需要比各申請專利項中所列舉者有更多特點之含義。反而,如下面申請專利範圍反映,本發明主題以較少於個別被揭示之實施例的所有特點方式展現。因此,詳細說明之後的申請專利範圍特此明確地被包含於這詳細的說明中,而各申請專利項本身獨立地如一個別之實施例。
於下面的說明以及申請專利範圍中,名詞“耦合”以及“連接”,與它們的衍生詞,可被使用。應了解,這些 名詞並不被預期彼此為同義字。“耦合”被使用以指示兩個或更多個元件,其可能彼此直接實際或電氣接觸、彼此共同操作或互動。“連接”被使用以指示在彼此耦合的兩個或更多個元件之間的通訊之建立。
流程圖之操作將參考實施範例方塊圖被說明。但是,應了解,流程圖之操作可藉由除了那些被討論的相關方塊圖之外的本發明實施例被進行,並且參考方塊圖所討論之實施例可進行不同於那些參考流程圖所討論之操作。
為了容易了解起見,破折線被使用於圖形中以表示某些項目之選擇性質(例如,不為本發明所給的實作例所支援之特點;為所給予的實作例所支援之特點,但是被使用於一些情況中並且不被使用於其他情況中)。
圖1是展示依據本發明某些實施例於一般目的暫存器中基於向量寫入遮罩而儲存兩個純量常數之一者的指令操作範例之方塊圖。圖1展示結構性向量寫入遮罩暫存器110、結構性向量暫存器120、以及結構性一般目的暫存器130。
向量暫存器120,其分別地被指示為VRZ(其中z可以是自0至U之數值),而被使用以儲存向量運算元。指令集結構包含至少一些SIMD指令,其指明向量運算以及具有自這些向量暫存器120選擇來源暫存器及/或目的地暫存器之欄(一SIMD指令範例可指明將於一或多個向量暫存器120內容上被進行的一向量運算,並且向量運算結果將被儲存於該等向量暫存器120之一者中)。本發明不同之實施例 可具有不同大小的向量暫存器並且支援更多/更少/不同大小的資料元素。利用一SIMD指令被指明的多位元資料元素大小(例如,位元組、字組、雙重字組、四字組字詞)判定在向量暫存器內之“資料元素位置”的位元位置,並且向量運算元大小判定資料元素數目。依據目的地運算元中之資料元素大小以及目的地運算元大小(目的地運算元中之位元總數)(或換句話說,依據目的地運算元大小以及在目的地運算元內之資料元素數目),在產生的向量運算元內之多位元資料元素位置的位元位置改變(例如,如果供用於產生的向量運算元之目的地是向量暫存器,則在目的地向量暫存器內之多位元資料元素位置的位元位置改變)。例如,例如,多位元資料元素之位元位置,在32位元資料元素上運算的一向量運算(資料元素位置0佔用位元位置31:0,資料元素位置1佔用位元位置63:32,等等)以及在64位元資料元素上運算的向量運算(資料元素位置0佔用位元位置63:0,資料元素位置1佔用位元位置127:64,等等)之間是不同的。這稍後將更詳細地被說明。
向量寫入遮罩暫存器110,其分別地被指示為KX(其中x範圍可自0至T),而被使用以儲存寫入遮罩,該寫入遮罩包含對應至在目的地向量運算元內之不同的多位元資料元素位置之複數個一位元向量寫入遮罩元素。上述的SIMD指令之至少一些包含自向量寫入遮罩暫存器110選擇一寫入遮罩的一個欄,並且該選擇的寫入遮罩之一位元向量寫入遮罩元素控制反映向量運算結果之目的地向量運算 元中的資料元素位置。因為,如上所述,在支援於不同大小的資料元素上運算之向量運算實施例中之目的地運算元的多位元資料元素之位元位置改變(例如,在在32位元資料元素上運算之向量運算以及在64位元資料元素上運算的向量運算之間,多位元資料元素之位元位置是不同的),此等實施例可支援一位元寫入遮罩元素對目的地運算元內之位元位置之不同的關係(同時也被稱為對應性或映製);因此,當具有目的地運算元之位元位置改變時,一位元向量寫入遮罩元素之映製改變。
一般目的暫存器130,其分別地被指示為GPRY(其中Y範圍可自0至V),被使用以儲存供用於邏輯運算、算術運算、位址計算以及記憶體指示符之運算元。指令集結構包含純量指令,其指明將在一般目的暫存器130內之暫存器內容上被進行的純量運算。在一般目的暫存器130以及向量暫存器120之間的差量可能在本發明不同實施例之間變化(例如,相對至一般目的暫存器之向量暫存器的不同總數;如比較至一般目的暫存器之不同的向量暫存器大小;向量暫存器可以整數格式以及浮動點格式儲存資料,而一般目的暫存器僅以整數格式儲存資料),其範例稍後將更詳細地被說明。
雖然於向量寫入遮罩暫存器110、向量暫存器120、以及一般目的暫存器130各者中之暫存器數目,分別地被指示如T、U、以及V,一或多個的這些暫存器檔案可具有相同數目之暫存器。於一實施例中,所給予的向量寫 入遮罩暫存器之數值可以多種方式被建立,其包含如向量比較指令之直接結果而自一GPR被轉移,或如在兩遮罩之間的邏輯運算之直接結果而被計算。
於這圖形中,為容易了解,加圓圈文字被使用以指示用以閱讀展示項目之一順序,並且於一些情況中以指示在那些項目之間的關係。在圓圈A有一指令100,其具有包含一第一欄102(其之內容選擇一來源暫存器KX)以及一第二欄104(其之內容選擇一目的地暫存器GPRY)之格式。指令100屬於一指令集結構,並且在一指令流內之指令100的各“出現”將包含在分別地選擇結構向量寫入遮罩暫存器110以及結構一般目的暫存器130之特定一者的第一欄102以及第二欄104內之數值。
圓圈B代表自向量寫入遮罩暫存器110選擇KX作為來源向量寫入遮罩暫存器。圖1分別地展示選擇的來源向量寫入遮罩暫存器之內容132的特定範例,於其中向量寫入遮罩暫存器是64位元暫存器並且於其中對於位元位置0:15、31、以及63之數值範例被展示。
同樣地,圓圈C展示在一般目的暫存器130內選擇GPRY作為目的地之一般目的暫存器。
在虛線圓圈D,來源運算元134是選自來源向量寫入遮罩暫存器KX之內容。在來源向量寫入遮罩暫存器內之不同位元位置的而具有混合標誌之點線(明確地說,混合標誌是在位元位置7:8,15:16,以及31:32之間)展示本發明一些實施例中之來源運算元134之大小是可選擇的。不同 的一實施例允許來源運算元134之不同大小的選擇可以多種方式控制這選擇(例如,使用不同的運算碼、使用來自該等一般目的暫存器之一者的一數值)。當然,本發明不同的實施例可支援供用於來源運算元134之不同大小的向量寫入遮罩暫存器及/或不同/更多/更少的選擇大小。進一步地,本發明一些實施例可以僅支援一來源運算元,其包含選擇的向量寫入遮罩暫存器之整個內容(來源運算元134經常是具有相同如所選擇的向量寫入遮罩暫存器之大小)。
在圓圈E,來源運算元134被運算以產生一純量常數(這純量常數被稱為目的地運算元或結果)。圓圈E包含一第一方塊140,於其中判定來源運算元之所有的一位元向量寫入遮罩元素是否為0。如果是,一第一純量常數(例如,1)被輸出(方塊142);否則,一第二純量常數(例如,0)被輸出(方塊142)。
在圓圈F,該結果(其是第一純量常數或第二純量常數)被寫回至一般目的暫存器GPRY。因為這是一純量結果並且其被寫回至一般目的暫存器,於一些實施例中,基於來源運算元中之複數個一位元寫入遮罩元素是否都為0,多位元一般目的暫存器之整個內容將代表第一純量常數(例如,00...1)或第二純量常數(例如,00...0)之任一者。
如在下面之更詳細的說明,指令100可被實作,以至於兩個純量常數是布爾(Boolean)數值1以及0。就此而論,基於是否所有的向量寫入遮罩位元都為0,一布爾數值被儲存於所選擇的GPR中(換言之,所選擇的GPR之複數個 位元將整體地代表1或0之任一者)。於這布爾實例中,指令100是關連於“如果遮罩是P則設定GPR”指令,其中K可以是零或不是零。就此而論,一布爾數值基於內在於一ISA中之向量寫入遮罩的控制流程資訊而被產生。藉由置放該布爾數值於一GPR中,如相對至一控制流程暫存器(例如,一進位旗標),基於該布爾數值之判定可以是如相對至控制流程為基礎之資料流程為基礎者。明確地說,控制流程為基礎之判定依賴改變執行流程(跳躍、分支,等等)之指令,而資料流程之判定在基於布爾數值的資料之間選擇。例如,“如果遮罩是P則設定GPR”指令是有用於函數中之參數傳送(參看圖11A-B),並且是有用於有效的指示符產生以及對於不同的程式碼段之快速條件執行的間接函數呼叫(參看圖12A-B)。
雖然圖1展示一單一指令100,其將基於向量寫入遮罩內容而儲存兩個純量常數之一者於一般目的暫存器中,應了解,指令集結構可包含複數個此等指令,其指明相似運算但是具有不同的準則(例如,選擇不同的來源運算元大小、在不同的純量常數之間選擇、當所有的一位元向量寫入遮罩元素是0時則儲存相對的純量常數),如稍後之說明。雖然於本發明一些實施例中,指令100如所展示地僅自該等向量寫入遮罩暫存器110之單一個指明一來源運算元作為其之唯一來源運算元並且僅指明一般目的暫存器130之單一個作為其之唯一目的地運算元,本發明其他實施例可包含另外的來源(例如,被使用於記憶體存取計算的資 料)、一不同型式之目的地(例如,如相對至暫存器之記憶體位置)、及/或另外的來源運算元以及目的地運算元(例如,同時也儲存結果於一條件碼旗標中的一指令、導致一個別運算將於另外的來源運算元上被進行,其之結果被儲存於另外的目的地中之一指令)。
“如果遮罩是零則設定GPR”以及“如果遮罩不是零則設定GPR”指令之範例
圖2A是展示依據本發明一實施例關於一特定的“如果遮罩是零則設定GPR”指令範例的方塊圖;而圖2B是展示依據本發明一實施例關於一特定“如果遮罩不是零則設定GPR”指令範例的方塊圖。圖2A以及2B展示來源向量寫入遮罩暫存器KX內容132。同時該等二圖也展示來源運算元134A,其是來源向量寫入遮罩暫存器KX中之位元63:0的位元15:0,如相對至來源向量寫入遮罩暫存器KX的所有位元。此外,該等二圖包含在一來源運算元134A中之寫入遮罩的所有一位元向量寫入遮罩元素是否都為零的一判定。於圖2A中,如果來源運算元134A的所有位元都是零,則控制傳送至方塊212,於其中GPRY被構成等於純量常數1;否則,控制傳送至方塊214,於其中GPRY被構成等於純量常數0。轉至圖2B之方塊210,如果來源運算元134A的所有位元都是零,控制傳送至方塊216,於其中GPRY被構成等於純量常數0;否則,控制傳送至方塊218,其中GPRY被構成等於純量常數1。
於本發明一些實施例中,“如果遮罩是零則設定 GPR”指令型式被示為KSETZ{B,W,D,Q}GPRY,KX(其中{}指示可選擇之來源運算元134大小),並且“如果遮罩不是零則設定GPR”指令型式被示為KSETNZ{B,W,D,Q}GPRY,KX
流程以及處理器核心範例
圖3是依據本發明某些實施例用以處理於一般目的暫存器中基於向量寫入遮罩之內容而儲存兩個純量常數之一者的各指令出現之流程圖。於方塊301中,此一指令的一出現被提取。該指令之格式僅自一單一向量寫入遮罩暫存器指明一來源運算元作為其之唯一來源運算元,並且指明一單一之一般目的暫存器作為其之目的地。該指令之格式包含一第一欄,其之內容自複數個結構向量寫入遮罩暫存器選擇單一向量寫入遮罩暫存器;並且該指令之格式包含一第二欄,其之內容自複數個結構一般目的暫存器選擇單一的一般目的暫存器。來源運算元是一寫入遮罩,其包含對應至在結構向量暫存器內之不同的多位元資料元素位置之複數個一位元向量寫入遮罩元素。自方塊300,控制傳送至方塊302。
在方塊302,反應於執行自方塊301之單一指令的單一出現,資料被儲存於單一一般目的暫存器中,以至於其之內容基於該複數個一位元向量寫入遮罩元素是否都為零而代表第一或第二純量常數之任一者。參看圖2A以及2B,例如,純量常數可被選擇並且選擇何純量常數是基於複數個一位元向量寫入遮罩元素是否都為零。
圖4是依據本發明某些實施例用以執行於一般目 的暫存器中基於向量寫入遮罩之內容而儲存兩個純量常數之一者的指令出現之流程圖。如於方塊401之展示,一邏輯OR運算於此一指令之一出現的來源運算元之複數個一位元向量寫入遮罩元素上被進行。為了支援不同的來源運算元大小,藉由多工器連接的一組OR樹可被使用,組成最小大小來源運算元之最低有效位元是至一第一OR樹的一輸入,這第一OR樹之輸出是至一OR閘的一輸入,至這OR閘的其他輸入是一多工器之輸出,至這多工器的輸入是0以及一第二OR樹的輸出,至第二OR樹之輸入是形成下一個來源運算元大小之下一個最主要的位元,該多工器利用一信號被控制以指示最小大小來源運算元或較大大小來源運算元是否正被使用;這可被調整大小以包含另外大小的來源運算元。自方塊401,控制傳送至方塊402。於方塊402中,基於自邏輯OR運算結果被形成的一控制信號以及該指令是複數個型式之何者的一指示,第一或第二純量常數之任一者被多工化。例如,一個此型式可以是來自圖2A之“如果向量寫入遮罩是零則設定GPR”型式,並且另一此型式可以是來自圖2B之“如果向量寫入遮罩不是零則設定GPR”型式。藉由進一步的範例,如果“如果向量寫入遮罩是零則設定GPR”以及“如果向量寫入遮罩不是零則設定GPR”型式分別地利用邏輯1及0之一“型式信號”被表示,這型式信號可以是互斥地OR運算(同時也被稱為XOR運算或邏輯互斥OR運算),其具有來源運算元之邏輯OR運算結果以形成控制信號;該控制信號被提供至在兩個純量常數之間選擇的一多 工器。於這實施例中,這兩個純量常數被以有線連接而為1以及0;並且於此一實施例中,邏輯1之一控制信號選擇有線連接純量常數1,並且邏輯0之一控制信號選擇有線連接的純量常數0。雖然特定離散邏輯參考圖4被說明,應了解,不同實施例可使用不同的邏輯(例如,可翻轉邏輯數值指派至不同型式的指令以及翻轉多工器輸入)。
圖5是依據本發明某些實施例用以處理於一般目的暫存器中基於向量寫入遮罩之內容而儲存兩個純量常數之一者的指令出現之特定機器的方塊圖。圖5自圖1複製指令100、向量寫入遮罩暫存器110、向量暫存器120、一般目的暫存器130、以及圓圈B-C。圖5同時也展示處理器核心500(其包含一可選擇的指令提取單元510、一硬體解碼單元515與一執行引擎單元520)、以及向量寫入遮罩暫存器110、向量暫存器120以及一般目的暫存器130。
在圖5中之圓圈A,指令100(或不同的型式指令,其於一般目的暫存器中基於向量寫入遮罩之內容而儲存兩個純量常數之一者)的出現被提供至硬體解碼單元515(由於提取指令100之指令提取單元510而可選擇)。多種不同習知的解碼單元可被使用於解碼單元515。例如,該解碼單元可解碼各巨指令成為一單一寬度微指令。如另一範例,該解碼單元可解碼一些巨指令成為單一寬度微指令,但是其他者則成為複數個寬度微指令。如另一範例,尤其是適用於無序處理器管線,該解碼單元可解碼各巨指令成為一或多個微運算,其中該等微運算之各者可被無序發出並且執 行。同時,該解碼單元也可藉由一或多個解碼器被實作並且各解碼器可被實作如一可程控邏輯陣列(PLA),如本技術所習知。經由範例,一所給予的解碼單元可以:1)具有操縱邏輯以引導不同的巨指令至不同的解碼器;2)一第一解碼器,其可解碼指令集之一子集(但是其可有更多,如第二、第三、以及第四解碼器)並且每一次產生兩個微運算;3)一第二、第三、以及第四解碼器,其各僅可解碼整個指令集之一子集並且每一次僅產生一個微運算;4)一微定序器ROM,其可僅解碼整個指令集之一子集並且每一次產生四個微運算;以及5)多工化利用該等解碼器饋送之邏輯以及微定序器ROM,其判定那個的輸出被提供至一微運算佇列。解碼單元的其他實施例可具有解碼更多或較少指令以及更多或較少的指令子集之解碼器。例如,一實施例可具有一第二、第三、以及第四解碼器,其每一次各可產生兩個微運算;並且可包含每一次產生8個微運算之微定序器ROM。
在圓圈D,提供來源運算元之結構向量寫入遮罩暫存器被存取(這可以是經由一專用實體暫存器、一換名實體暫存器、如果內容剛好被產生則可經由一旁通路徑,等等),並且來源運算元被提供至執行引擎單元520,其在圓圈E執行一指令流中之指令100出現。明確地說,反應於各個出現,執行引擎單元520將判定該出現之來源運算元的複數個一位元向量寫入遮罩元素是否都為零,並且導致資料將被儲存於出現之單一選擇的一般目的暫存器中,以至於 其內容基於該判定而代表第一或第二純量常數之任一者。執行引擎單元520可以多種方式被實作,包含上述參考圖4之邏輯。
在圓圈F,該結果(其是第一純量常數或第二純量常數)被寫回至結構一般目的暫存器GPRY(這可被寫入至專用實體暫存器、一換名實體暫存器等等)。因為這是純量結果並且其將被寫回至一般目的暫存器,基於來源運算元中之複數個一位元寫入遮罩元素是否都為0,那一般目的暫存器之內容將代表第一純量常數或第二純量常數之任一者。
對應以及向量寫入遮罩運算範例
圖6A是展示依據本發明一實施例之取決於向量大小以及資料元素大小的一位元向量寫入遮罩元素數目之列表。128位元、256位元、以及512位元之向量大小被展示,而其他的寬度也是可能的。8位元位元組(B)、16位元字組(W)、32位元雙字組(D)或單一精確性浮動點、以及64位元四字組(Q)或雙精確性浮動點之資料元素大小被考慮,雖然其他寬度也是可能的。如所展示,當向量大小是128位元時,當向量之資料元素大小是8位元時則16位元可被使用於遮罩,當向量之資料元素大小是16位元時則8位元可被使用於遮罩,當向量之資料元素大小是32位元時則4位元可被使用於遮罩,以及當向量之資料元素大小是64位元時則2位元可被使用於遮罩。當向量大小是256位元時,當封裝資料元素寬度是8位元時則32位元可被使用於遮罩,當向量之資料元素大小是16位元時則16位元可被使用於遮罩,當向量之 資料元素大小是32位元時則8位元可被使用於遮罩,並且當向量之資料元素大小是64位元時則4位元可被使用於遮罩。當向量大小是512位元時,於向量之資料元素大小是8位元時則64位元可被使用於遮罩,於向量之資料元素大小是16位元時則32位元可被使用於遮罩,於向量之資料元素大小是32位元時則16位元可被使用於遮罩,並且於向量之資料元素大小是64位元時則8位元可被使用於遮罩。
圖6B是依據本發明一實施例展示一向量寫入遮罩暫存器640以及取決於向量大小以及資料元素大小被使用作為寫入遮罩之位元位置的圖形。於圖6B中,向量寫入遮罩暫存器是64位元寬度,雖然這不是必需的。取決於向量大小以及資料元素大小之組合,所有64位元,或僅該等64位元之一子集,可被使用作為一寫入遮罩。通常,當一單一、逐個元素遮罩控制位元被使用時,被使用於遮罩之向量寫入遮罩暫存器中的位元數目是等於向量大小之位元數除以向量資料元素大小之位元數。
許多說明之範例被展示為512位元向量。亦即,當向量大小是512位元以及向量之資料元素大小是64位元時,則僅最低階8位元暫存器被使用作為寫入遮罩。當向量大小是512位元以及向量之資料元素大小是32位元時,則僅該最低階16位元暫存器被使用作為寫入遮罩。當向量大小是512位元以及向量之資料元素大小是16位元時,則僅最低階32位元暫存器被使用作為寫入遮罩。當向量大小是512位元以及向量之資料元素大小是8位元時,則所有64位元暫存 器被使用作為寫入遮罩。雖然於展示的實施例中,最低階子集或暫存器部份被使用於遮罩,另外的實施例可使用一些其他的位元集合(例如,一最高階子集)。此外,雖然圖6B僅考慮一個512位元之向量大小,例如,相同原理也可應用於其他的向量大小,例如,256位元以及128位元。
圖7A是展示依據本發明某些實施例之運算760範例的方塊圖,該運算760使用來自一64位元向量寫入遮罩暫存器K1(其中向量大小是512位元以及資料元素大小是32位元)的一寫入遮罩而進行合併。圖7A展示一來源A運算元705;一來源B運算元710;向量寫入遮罩暫存器K1 715之內容(具有包含1以及0之混合的較低16位元);以及目的地運算元720。此外,對應範例700是展示於圖7A中。明確地說,如上所述,因為於支援在不同大小資料元素上運算之向量運算的實施例中,目的地向量運算元之多位元資料元素的位元位置改變(例如,在32位元資料元素上運算的一向量運算以及在64位元資料元素上運算的一向量運算之間的多位元資料元素之位元位置是不同的),此等實施例可支援一位元寫入遮罩元素至在目的地運算元內之位元位置的不同關係(同時也被稱為對應或映製);因此,當具有目的地運算元之位元位置改變時,一位元向量寫入遮罩元素之映製改變。因此,雖然對應700僅具有向量寫入遮罩暫存器K1中之較低16位元位置(並且因此較低的16向量寫入遮罩元素位置)而對應至資料元素位置(K1[0]對應至佔據位元31:0的資料元素位置0,K1[1]對應至佔據位元63:32的資料元素位 置1,等等),如果資料元素大小被改變則對應改變(例如,如果資料元素是16位元,則K1[0]對應至佔據位元15:0的資料元素位置0,K1[1]對應至佔據位元32:16的資料元素位置1,等等)。
對於目的地向量運算元720中的各資料元素位置,其包含來源運算元710中之資料元素位置內容或運算結果(被展示如一相加),分別地取決於向量寫入遮罩暫存器K1中之對應的位元位置是0或1。
圖7B是展示依據本發明某些實施例之運算766範例的方塊圖,範例運算766是使用來自其中向量大小是512位元以及資料元素大小是32位元的64位元寫入遮罩暫存器K1的寫入遮罩而調整歸零。除了目的地運算元720以目的地運算元764被取代之外,圖7B包含如圖7A之相同項目。對於目的地向量運算元764中之各資料元素位置,其包含零或運算結果(被展示如一相加),分別地取決於向量寫入遮罩暫存器K1中之對應的位元位置是為0或1。
“如果遮罩是P則設定GPR”指令的範例
圖8A-D以及圖9A-D展示依據本發明某些實施例,對於不同的來源運算元134大小之分別地用於“如果遮罩是零則設定GPR”以及“如果遮罩不是零則設定GPR”型式指令的假性碼。圖8A展示依據本發明某些實施例之用於使用8位元的來源運算元134大小之一“如果遮罩是零則設定GPR”指令(KSETZB GPRY,KX)的假性碼。圖8B展示依據本發明某些實施例之用於使用16位元的來源運算元134大小 之一“如果遮罩是零則設定GPR”指令(KSETZW GPRY,KX)的假性碼。圖8C展示依據本發明某些實施例之用於使用32位元的來源運算元134大小之“如果遮罩是零則設定GPR”指令(KSETZD GPRY,KX)的假性碼。圖8D展示依據本發明某些實施例之用於使用64位元的來源運算元134大小之“如果遮罩是零則設定GPR”指令(KSETZQ GPRY,KX)的假性碼。圖9A展示依據本發明某些實施例之用於使用8位元的來源運算元134大小之“如果遮罩不是零則設定GPR”指令(KSETNZB GPRY,KX)的假性碼。圖9B展示依據本發明某些實施例之用於使用16位元的來源運算元134大小之“如果遮罩不是零則設定GPR”指令(KSETNZW GPRY,KX)的假性碼。圖9C展示依據本發明某些實施例之用於使用32位元的來源運算元134大小之“如果遮罩不是零則設定GPR”指令(KSETNZD GPRY,KX)的假性碼。圖9D展示依據本發明某些實施例之用於使用64位元的來源運算元134大小之“如果遮罩不是零則設定GPR”指令(KSETNZQ GPRY,KX)的假性碼。
使用“如果遮罩是P則設定GPR”指令之指令碼序列範例
如先前所述,藉由置放布爾數值於如相對至一控制流程暫存器(例如,一進位旗標)之GPR中,基於該布爾數值之判定可以是如相對至控制流程為基礎之資料流程為基礎。明確地說,控制流程為基礎之判定依據改變該執行流程(跳躍、分支等等)指令,因而資料流程之判定在基於布爾 數值的資料之間選擇。例如,“如果遮罩是P則設定GPR”指令是有用於函數中之參數傳送(參看圖10A-B),並且是有用於有效的指示符產生以及用於不同的程式碼段之快速條件執行的間接函數呼叫(參看圖11A-B)。明確地說,圖10A以及11A展示被寫入AVX1/AVX2指令中之假性組合碼序列(參看Intel®64以及IA-32結構軟體開發者手冊,2011年10月;以及參看Intel®先進向量延伸程式參考,2011年6月)。
圖10A展示被寫入AVX1/AVX2指令中之一指令碼序列範例,其傳送參數至一函數。該序列包含對於稱為“foo”的一函數之兩個函數呼叫。對foo之第一個呼叫傳送如參數A、B、以及1,而第二個呼叫則傳送A,B,以及0。該序列使用控制流程指令以在這兩個函數呼叫之間選擇。明確地說,指令碼序列開始於VMOVAPS,其自A(其可以是一ymm暫存器或256位元記憶體位置)移動對齊的封裝單精確性浮動點資料元素至ymm1。接著,VCMPPS使用imm8之位元4:0作為一比較預測,以比較B中之封裝單一精確性浮動點數值(其可以是ymm暫存器或256位元記憶體位置)以及ymm1(其中位元4:0界定比較型式並且位元5:7被保留;並且圖10A中指示較少於(LT))。這之後,取決於來源之一位元式邏輯AND與邏輯ANDN(ANDNOT),VPTEST設定零旗標(ZF)以及進位旗標(CF)(其是EFLAGS暫存器中之條件碼旗標)(如果於位元式AND之結果中所有位元都是0,則ZF旗標被設定;如果於位元式ANDN之結果中所有位元都是0,則CF旗標被設定)。接著,如果ZF是等於0,則JZ跳躍至 目的地“out”。這條件分支(JZ指令)可導致一錯失預測分支,並且因此衝擊性能。如果該跳躍是不被採用,則函數呼叫foo(A、B、1)以及jmp結束被處理。如果該跳躍被採用,則該函數呼叫foo(A、B、0)以及End:被處理。
圖10B展示依據本發明一實施例之利用傳送參數至一函數的一KSETZW指令被寫入之一指令碼序列範例。該序列僅包含一個對foo之函數呼叫並且沒有JZ指令,但是達成如圖10A中之序列的相同結果。明確地說,該指令碼序列開始於相同的VMOVAPS指令。接著,一新型式的VCMPPS指令被使用。這新型式的VCMPPS指令藉由來自向量寫入遮罩暫存器K1之向量寫入遮罩,使用imm8作為一比較預測(其指示如於圖10A中之LT),以比較B中之封裝單一精確性浮動點資料元素(其可以是ymm暫存器或浮動32向量記憶體位置)以及ymm1,並且放置結果(所有1(比較為真)或所有的0(比較為假)之四字組寫入遮罩返回進入K1)。這之後,如果K1之最低有效字組是都為零,則KSETZW設定rax(GPR)至純量常數1;否則其被歸零。接著,對foo之單一函數呼叫被進行而傳送參數,如A、B以及rax。因此設定rax至純量常數1或純量常數0,而允許rax被使用以傳送一個1或0至具有一單一函數呼叫的foo。因此,圖10B中之序列達成如圖10A中之相同結果,但是藉由資料流程判定而不是控制流程判定達成;並且因此,圖10B避免一條件分支(JZ指令)並且減低指令碼大小。
圖11A展示使用指示符以及一間接函數呼叫被寫 入AVX1/AVX2指令中之一指令碼序列。圖11A中之序列是相同於圖10A,除了foo(A,B,1)以LEArbx,foo以及(*rbx)(A[],B[],C[])被取代;而foo(A,B,0)則以LEArbx,foo+8以及(*rbx)(A[],B[],C[]+size)被取代;其中“[]”前之一大寫字母(例如,A[])代表對一陣列之指示符。LEA指令負載一有效的位址進入rbx(GPR);LEA之第一以及第二出現分別地負載foo以及foo+8之有效位址進入rbx。這導致LEA指令出現之後的兩個指令,使用一指示符而形成對foo或foo+8之一間接函數呼叫(參看(*rbx));並且這兩個函數呼叫於傳送參數C[]或C[]+size中是不同;其中“size”是記憶體中之數值或常數(經由#界定)。再次,條件分支(JZ指令)可導致一錯失預測分支,並且因此衝擊性能。
圖11B展示依據本發明一實施例藉由使用一指示符以及一間接函數呼叫之KSETZW指令而被寫入的一指令碼序列範例。相似於圖10B,圖11B中之序列僅包含一函數呼叫並且沒有JZ指令,但是達成如圖11A中之序列的相同結果。圖11B中之序列是相同如圖10B中,除了foo(A,B,rax)已以LEArbx,foo+rax*8;IMUL rax,size;以及(*rbx)(A[],B[],C[]+rax)被取代之外。LEA指令出現負載foo+rax*8的有效位址進入rbx,其中取決於KSETZW指令結果,rax是純量常數0或1之任一者;換言之,rbx被負載foo(被計算的foo+0*8)或foo+8(被計算的foo+1*8)的有效位址。該IMUL指令相乘兩個符號整數;IMUL指令出現相乘rax以及size內容,並且儲存該結果於rax中;因此rax=rax*size;換言之, rax使等於0*size或1*size。因而,(*rbx)(A[],B[],C[]+rax)構成對foo或foo+8之任一者的一間接函數呼叫並且分別地傳送如一參數C[]或C[]+8。因此設定rax以及rbx至純量常數0或純量常數1而允許rax以及rbx產生不同的有效位址以及具有一單一函數呼叫之不同參數數值。因此,圖11B中之序列達成如圖11A中之相同結果,但是藉由資料流程判定而不是控制流程判定達成;並且因此,圖11B避免一條件分支(JZ指令)並且減低指令碼大小。
指令編碼範例
此處說明之指令的實施例可以不同格式被實施。另外地,系統、結構以及管線範例在下面被詳細說明。指令實施例可於此系統、結構、以及管線上被執行,但是不受限定於那些的細節。
VEX編碼
藉由範例,VEXC4編碼將被說明,以及多個“如果遮罩是P則設定GPR”指令可如何被編碼成為它之一範例。
圖12A提供VEXC4編碼之表示。該編碼包含下面的欄(參看Intel®先進向量延伸程式參考,2011年6月):VEX字首(位元組0-2)1202以三位元組形式被編碼。
格式欄1240(VEX位元組0,位元[7:0])-第一位元組(VEX位元組0)是格式欄1240並且其包含一明確的C4位元組數值(被使用以識別C4指令格式之唯一數值)。
第二-第三位元組(VEX位元組1-2)包含提供特定能力的一些位元欄。明確地說:REX欄1205(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),因而Rrrr,Xxxx,以及Bbbb可藉由增加VEX.R、VEX.X、以及VEX.B而被形成。
運算碼映製欄1215(VEX位元組1,位元[4:0]-mmmm)-其之內容編碼一隱含之引導運算碼位元組。
VEX.W(VEX位元組2,位元[7]-W)-利用標誌VEX.W被表示,並且依據該指令而提供不同的功能。
VEX.vvvv 1220(VEX位元組2,位元[6:3]-vvvv)-VEX.vvvv之作用可包含下面各者:1)VEX.vvvv編碼以倒反(1之補數)形式被指明之第一來源暫存器運算元,並且是有效於具有2個或更多個來源運算元的指令;2)VEX.vvvv編碼目的地暫存器運算元,以對於某些向量位移之1補數形式被指明;或3)VEX.vvvv不編碼任何運算元,該欄被保留並且將包含1111b。
VEX.L 1268大小欄(VEX位元組2,位元[2]-L)-如果VEX.L=0,其指示128位元向量;如果VEX.L=1,其指示256位元向量。
字首編碼欄1225(VEX位元組2,位元[1:0]-pp)- 提供用於基底運算欄之另外的位元。
真實運算碼欄1230(位元組3)
這也是習知如運算碼位元組。運算碼之部份被指明於這欄中。
MOD R/M欄1240(位元組4)
修飾符欄1246(MOD R/M.MOD,位元[7-6]-MOD欄1242)。
MOD R/M.Reg欄1244,位元[5-3]-MOD R/M.Reg欄之作用可被概述為兩個情況:MOD R/M.reg編碼目的地暫存器運算元或來源暫存器運算元之任一者(Rrrr之rrr),或MOD R/M.reg是被視為一運算碼延伸並且不被使用於編碼任何指令運算元。
MOD R/M.R/M欄1246,位元[2-0]-MOD R/M.R/M欄之作用可包含下面各者:MOD R/M.r/m參考一記憶體位址而編碼指令運算元編,或MOD R/M.r/m編碼目的地暫存器運算元或一來源暫存器運算元之任一者。
大小、索引、基底(SIB)位元組(位元組5)
大小欄1260(SIB.SS,位元[7-6]-該大小欄之1260內容被使用於記憶體位址產生。
SIB.xxx 1254(位元[5-3])以及SIB.bbb 1256(位元[2-0])-這些欄之內容已關連於暫存器索引Xxxx以及Bbbb而先前地被提及。
位移位元組(位元組6或位元組6-9)
即時1272(IMM8)(開始於位元組7或10)
圖12B展示來自圖12A之哪些欄組成一完全運算碼欄1274以及一基底運算欄1242。圖12C展示來自圖12A之哪些欄組成一暫存器索引欄1244。
編碼範例
KSETZ{B,W,D,Q}GPRY,KX以及KSETNZ{B,W,D,Q}GPRY,KX
格式欄1240=C4
VEX.R以及MOD R/M.Reg欄1244(Rrrr)-辨識GPRY
VEX.X以及VEX.B-被忽略
運算碼映製欄1215=0F
VEX.W=x(被忽略;或選擇GPRY大小-0用於EAX並且1用於RAX)。
VEX.vvvv 1220-被忽略
VEX.L=0
字首編碼欄1225=00
真實運算碼欄1230-指示設定為0或設定為1;指示B、W、D、Q
MOD R/M.R/M欄1246-辨識KX。換言之,指令之位元歷史性被使用於存取不同的暫存器,其於此處被使用以存取結構向量寫入遮罩暫存器。
SIB-忽略(如果呈現的話)
位移欄1262-忽略(如果呈現的話)
即時(IMM8)-忽略(如果呈現的話)
一般向量親和性指令格式
一向量親和性指令格式是適用於向量指令之指令格式(例如,有某些欄特定於向量運算)。雖然實施例被說明,於其中向量以及大小運算兩者皆由向量親和性指令格式被支援,另外的實施例則僅使用向量親和性指令格式之向量運算。
第13A-13B圖是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其指令樣版之方塊圖。第13A圖是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其類別A指令樣版的方塊圖;而第13B圖則是圖解地說明依據本發明實施例之一般向量親和性指令格式以及其類別B指令樣版的方塊圖。明確地說,一般向量親和性指令格式1300是用於界定類別A以及類別B指令樣版,其兩者皆包含非記憶體存取1305指令樣版以及記憶體存取1320指令樣版。於向量親和性指令格式文脈中之“一般”用詞指示該指令格式不被束縛於任何特定指令集。
雖然本發明實施例將被說明,於其中向量親和性指令格式支援下面各者:具有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位元組)資料元素寬度)。
第13A圖中之類別A指令樣版包含:1)在非記憶體存取1305指令樣版之內,展示一非記憶體存取、全捨入控制型式運算1310指令樣版以及一非記憶體存取、資料轉換型式運算1315指令樣版;以及2)在記憶體存取1320指令樣版之內,展示一記憶體存取、暫存1325指令樣版以及一記憶體存取、非暫存1330指令樣版。第13B圖中之類別B指令樣版包含:1)在非記憶體存取1305指令樣版之內,展示一非記憶體存取、寫入遮罩控制、部份捨入控制型式運算1312指令樣版以及一非記憶體存取、寫入遮罩控制、v大小型式運算1317指令樣版;以及2)在記憶體存取1320指令樣版之內,展示一記憶體存取、寫入遮罩控制1327指令樣版。
一般向量親和性指令格式1300包含第13A-13B圖中展示之順序而在下面被列表之其它欄。
格式欄1340-於這欄中一特定數值(一指令格式識別符數值)唯一地辨識向量親和性指令格式,以及因此於指令流中向量親和性指令格式之指令的出現。就此而論,這欄是選擇性的,對於僅具有一般向量親和性指令格式之 一指令集的意義而言,其不是需要的。
基底運算欄1342-其之內容識別不同的基底運算。
暫存器索引欄1344-其之內容,直接地或經由位址產生,而指明來源以及目的地運算元位置,它們是在暫存器中或在記憶體中。這些包含足量的位元數以自一PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N個暫存器。雖然於一實施例中,N可以是高至三個來源以及一個目的地暫存器,另外的實施例可支援更多或較少來源以及目的地暫存器(例如,可支援高至二個來源,這些來源之其中一者同時也作用如同目的地,可支援高至三個來源,這些來源之其中一者同時也作用如同目的地,可支援高至二個來源以及一個目的地)。
修飾符欄1346-其之內容識別在一般向量指令格式中指明記憶體存取與那些不會者之指令之出現;亦即,在非記憶體存取1305指令樣版以及記憶體存取1320指令樣版之間。記憶體存取操作讀取及/或寫入至記憶體階系(於一些情況中,使用暫存器中之數值以指明來源及/或目的地位址),而非記憶體存取操作則不讀取及/或寫入至記憶體階系(例如,來源以及目的地是暫存器)。雖然於一實施例中,這欄同時也在三個不同的方式之間選擇以進行記憶體位址計算,另外的實施例可以支援較多、較少,或以不同的方式進行記憶體位址計算。
擴增運算欄1350-其之內容識別,除了基底運算 之外,多種不同運算的那一個將被進行。這欄是上下文相關。於本發明一實施例中,這欄被分離成為一類別欄1368、一α(alpha)欄1352、以及一β(beta)欄1354。擴增運算欄1350允許共通族群的運算以一單一指令而不是2、3、或4個指令被進行。
大小欄1360-其之內容允許對於記憶體位址產生之索引欄的內容之大小調整(例如,對於使用2scale*索引+基底之位址產生)。
位移欄1362A-其之內容被使用作為記憶體位址產生之部份(例如,對於使用2scale*索引+基底+位移之位址產生)。
位移係數欄1362B(注意到,直接地在位移係數欄1362B之上的位移欄1362A之並置指示一者或另一者被使用)-其之內容被使用作為位址產生之部份;其指明將利用記憶體存取之大小(N)被大小調整的一位移係數-其中N是記憶體存取中之位元組數目(例如,對於使用2scale*索引+基底+大小調整的位移之位址產生)。多餘的低階位元被忽略,並且因此,位移係數欄之內容被乘以記憶體運算元總大小(N),以便產生將被使用於計算一有效位址中的最後位移。N數值依據完全運算碼欄1374(稍後被說明)以及資料操縱欄1354C在執行期間利用處理器硬體被判定。位移欄1362A以及位移係數欄1362B,就它們不被使用於非記憶體存取1305指令樣版中及/或不同的實施例可僅實作二者中之一者或無一者之意義而言,是有選擇性的。
資料元素寬度欄1364-其之內容識別一些資料元素寬度之那一個是將被使用(於一些實施例中,被使用於所有的指令;於其他實施例中,僅被使用於一些指令)。就如果僅一個資料元素寬度被支援及/或資料元素寬度使用運算碼的一些方面被支援,則其不是所需之意義而言,這欄是有選擇性的。
寫入遮罩欄1370-其之內容控制,依據每一資料元素位置,目的地向量運算元中之資料元素位置是否反映基底運算以及擴增運算之結果。類別A指令樣版支援合併寫入遮罩,而類別B指令樣版則支援合併以及歸零寫入遮罩兩者。當合併時,向量遮罩允許目的地中之任何元素組被保護免於在任何運算元的執行期間(利用基底運算以及擴增運算被指明)之更新;於另一實施例中,保留所對應的遮罩位元具有一個0之目的地各元素的舊數值。相對地,當歸零時,在任何運算執行期間(藉由基底運算以及該擴增運算被指明),向量遮罩允許任何目的地中之任何元素組被歸零;於一實施例中,當所對應的遮罩位元具有一個0數值時,目的地之一元素被設定為0。這功能性之一子集是控制被進行之運算的向量長度之能力(亦即,被修改之元素的跨度,自第一至最後一個);但是,對於連貫地被修改的元素,其不是必需的。因此,寫入遮罩欄1370允許部份的向量運算,包含負載、儲存、算術、邏輯運算,等等。雖然本發明實施例被說明,於其中寫入遮罩欄1370之內容選擇包含將被使用之寫入遮罩的一些寫入遮罩暫存器之一者(並且因此 寫入遮罩欄1370之內容間接地辨識將被進行之遮罩),另外的實施例替換性或另外地允許遮罩寫入欄1370之內容直接地指明將被進行之遮罩。
即時欄1372-其之內容允許一即時之指明。就其是不出現於不支援即時的一般向量親和性格式之實作例中以及其是不出現於不使用一即時的指令中之意義而言,這欄是有選擇性的。
類別欄1368-其之內容在不同類別的指令之間識別。參考第13A-B圖,這欄之內容在類別A以及類別B指令之間選擇。於第13A-B圖中,圓形角落之正方形被使用以指示一特定數值是呈現於一欄中(例如,分別地供用於第13A-B圖中之類別欄1368的類別A 1368A以及類別B 1368B)。
類別A之指令樣版
於類別A之非記憶體存取1305指令樣版的情況中,α欄1352被詮釋如一RS欄1352A,其內容識別將被進行之不同的擴增運算型式之一者(例如,捨入1352A.1以及資料轉換1352A.2對於非記憶體存取、捨入型式運算1310以及非記憶體存取、資料轉換型式運算1315指令樣版分別地被指明),而β欄1354識別將被進行之指明型式的運算。於非記憶體存取1305指令樣版中,大小欄1360、位移欄1362A、以及位移大小欄1362B是不出現。
非記憶體存取指令樣版-全捨入控制型式運算
於非記憶體存取完全捨入控制型式運算1310指 令樣版中,β欄1354被詮釋如一捨入控制欄1354A,其之內容提供靜態捨入。雖然於所說明的本發明實施例中,捨入控制欄1354A包含一壓制所有浮動點異常(SAE)欄1356以及一捨入運算控制欄1358,另外的實施例可支援可編碼這兩個概念進入相同欄或僅具有這些概念/欄的一個或另一者(例如,可僅具有捨入運算控制欄1358)。
SAE欄1356-其之內容識別是否使異常出現報告失效;當SAE欄1356之內容指示抑制被引動時,一所給予的指令不報告任何類型之浮動點異常旗標並且不提出任何浮動點異常處理器。
捨入運算控制欄1358-其之內容識別進行捨入運算族群之何者(例如,向上捨入、向下捨入、朝向零捨入以及捨入至最接近處)。因此,捨入運算控制欄1358依據每指令而允許捨入模式之改變。於本發明一實施例中,其中一處理器包含用以指明捨入模式之一控制暫存器,捨入運算控制欄1350的內容超控該暫存器數值。
非記憶體存取指令樣版-資料轉換型式運算
於非記憶體存取資料轉換型式運算1315指令樣版中,β欄1354被詮釋如一資料轉換欄1354B,其之內容識別一些資料轉換之何者(例如,沒有資料轉換、拌和、廣播)將被進行。
於類別A之記憶體存取1320指令樣版的情況中,α欄1352被詮釋如一逐出示意欄1352B,其之內容識別逐出示意之何者將被使用(於第13A圖中,暫時1352B.1以及非暫 存1352B.2分別地對於記憶體存取、暫存1325指令樣版以及記憶體存取、非暫存1330指令樣版而被指明),而β欄1354被詮釋如一資料操縱欄1354C,其之內容識別一些資料操縱運算(也是習知為原始碼)之何者將被進行(例如,沒有操縱;廣播;一來源之上轉換;以及一目的地之下轉換)。記憶體存取1320指令樣版包含大小欄1360,並且可選擇地包含位移欄1362A或位移大小欄1362B。
向量記憶體指令藉由轉換支援,而進行來自記憶體之向量負載以及至記憶體之向量儲存器。如藉由正規之向量指令,向量記憶體指令藉由實際上利用被選擇作為寫入遮罩之向量遮罩內容所被指明之被轉移的元素,而以資料元素類似形式轉移資料自/至記憶體。
記憶體存取指令樣版-暫時
暫時資料是很可能將很快再被使用而充分得益於快取之資料。但是,這是一示意,並且不同的處理器可以依不同方式而實作,包含完全地無視於該示意。
記憶體存取指令樣版-非暫時
非暫時資料是不可能得益於第一位準快取中快取而充分快再被使用的資料並且將被給予逐出的優先序。但是,這是一示意,並且不同的處理器可以不同方式實作,包含完全地忽略該示意。
類別B之指令樣版
於類別B之指令樣版的此情況中,該α欄1352被詮釋如一寫入遮罩控制(Z)欄1352C,其之內容識別利用寫 入遮罩欄1370所控制的寫入遮罩是否應該是一合併或一歸零。
於類別B之非記憶體存取1305指令樣版的情況中,部份β欄1354被詮釋如一RL欄1357A,其之內容識別不同擴增運算型式之何者將被進行(例如,捨入1357A.1以及向量長度(VSIZE)1357A.2,其分別地被指明以供用於非記憶體存取、寫入遮罩控制、部份的捨入控制型式運算1312指令樣版以及非記憶體存取、寫入遮罩控制、VSIZE型式運算1317指令樣版),而β欄1354之其餘部份則識別將被進行之其指明型式的運算。於非記憶體存取1305指令樣版中,大小欄1360、位移欄1362A、以及位移大小欄1362B是不出現。
於非記憶體存取、寫入遮罩控制、部份捨入控制型式運算1310指令樣版中,β欄1354之其餘部份被詮釋如捨入運算欄1359A並且異常出現報告不被引動(一所給予的指令不報告任何類型之浮動點異常旗標並且不提出任何浮動點異常處理器)。
捨入運算控制欄1359A-正如捨入運算控制欄1358,其之內容識別捨入運算族群之何者(例如,向上捨入、向下捨入、朝向零捨入以及捨入至最近者)被進行。因此,捨入運算控制欄1359A依據每個指令允許捨入模式之改變。於本發明一實施例中,其中一處理器包含用以指明捨入模式之一控制暫存器,捨入運算控制欄1350之內容超控暫存器數值。
於非記憶體存取、寫入遮罩控制、VSIZE型式運算1317指令樣版中,β欄1354之剩餘部份被詮釋如一向量長度欄1359B,其之內容識別一些資料向量長度之何者將被進行(例如,128、256、或512位元組)。
於類別B之記憶體存取1320指令樣版的情況中,部份β欄1354被詮釋如廣播欄1357B,其之內容識別廣播型式資料操縱運算是否是將被進行,而β欄1354之剩餘部份被詮釋如向量長度欄1359B。記憶體存取1320指令樣版包含大小欄1360、以及可選擇之位移欄1362A或位移大小欄1362B。
關於一般向量親和性指令格式1300,一完全運算碼欄1374被展示而包含格式欄1340、基底運算欄1342、以及資料元素寬度欄1364。雖然一實施例被展示,其中完全運算碼欄1374包含所有的這些欄,於不支援它們所有者之實施例中,該完全運算碼欄1374包含較少的所有這些欄。該完全運算碼欄1374提供運算碼(opcode)。
擴增運算欄1350、資料元素寬度欄1364以及寫入遮罩欄1370允許這些特點依據每個指令以一般向量親和性指令格式被指明。
寫入遮罩欄以及資料元素寬度欄之組合產生分類指令,於其中它們允許遮罩依據不同的資料元素寬度而被施加。
在類別A以及類別B內被發現之各種指令樣版是有益於不同的情況中。於本發明一些實施例中,不同的處 理器或在一處理器內之不同的核心可僅支援類別A、僅支援類別B或支援兩個類別。例如,有意用於一般目的計算之高性能一般用途無序核心可以僅支援類別B,有意主要地供用於圖形及/或科學上(總產能)計算之一核心可以僅支援類別A,並且有意供用於支援類別A、類別B兩者之核心可支援其兩者(當然,具有一些樣版以及來自兩類別之指令的混合,但不是所有的樣版以及來自兩類別之指令之一核心是在本發明範圍之內)。同時,一個單一處理器也可包含複數個核心,其所有者皆支援相同類別或於其中不同的核心支援不同的類別。例如,於具有分別的圖形以及一般用途核心之一處理器中,有意主要地供用於圖形及/或科學上計算的圖形核心之一者可以僅支援類別A,而一或多個一般用途核心可以是具有無序執行以及暫存器換名之高性能一般用途核心,其是有意僅用於支援類別B之一般目的計算。不具有一分別的圖形核心之另一處理器,可包含支援類別A以及類別B兩者之多於一個的一般用途有序或無序核心。當然,來自一個類別之特點也可以是本發明不同實施例中之其他類別的實作例。以高階語言被編寫之程式將被輸出(例如,剛好及時地被編譯或靜態被編譯)成為多種不同的可執行形式,其包含:1)僅具有利用供執行之目標處理器所支援的類別之指令的形式;或2)具有使用所有類別指令的不同組合而被編寫之另外的程式段以及具有控制流程碼之形式,其中該流程碼依據利用目前執行程式碼之處理器所支援的指令而選擇執行之程式段。
特定向量親和性指令格式範例
第14圖是圖解地說明依據本發明實施例之特定向量親和性指令格式範例的方塊圖。第14圖展示一特定向量親和性指令格式1400,就指明位置、大小、詮釋及欄順序、以及供用於那些欄的一些欄之數值之意義而言,其是特定的。該特定向量親和性指令格式1400可被使用以延伸x86指令集,並且因此一些欄是相似或相同於那些被使用於現有的x86指令集以及其延伸者(例如,AVX)。這格式與具有延伸性之現有x86指令集的字首編碼欄、真實運算碼位元組欄、MOD R/M欄、SIB欄、位移欄以及即時欄保持相容性。來自第13圖之第14圖該等欄之映製將圖解地被說明。
應了解,雖然本發明實施例參考於用以說明目的之一般向量親和性指令格式1300的脈絡中之特定向量親和性指令格式1400而被說明,除了聲明之外,本發明是不受限定於該特定向量親和性指令格式1400。例如,一般向量親和性指令格式1300考慮供用於各種欄之多種可能大小,而特定向量親和性指令格式1400被展示如具有特定大小之欄。藉由特定範例,雖然資料元素寬度欄1364圖解地被說明如於特定向量親和性指令格式1400中之一位元欄,本發明是不因此受限定(亦即,一般向量親和性指令格式1300考慮其他大小的資料元素寬度欄1364)。
一般向量親和性指令格式1300包含在下面以第14A圖中所說明的順序所列出之下面的欄。
EVEX字首(位元組0-3)1402-以四位元組形式被 編碼。
格式欄1340(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄1340並且其包含0x62(於本發明一實施例中被使用於識別向量親和性指令格式的唯一數值)格式欄。
第二-第四位元組(EVEX位元組1-3)-包含提供特定性能之一些位元欄。
REX欄1405(EVEX位元組1,位元[7-5])-包含一EVEX.R位元欄(EVEX位元組1,位元[7]-R)、EVEX.X位元欄(EVEX位元組1,位元[6]-X)以及1357BEX位元組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’欄1310-這是REX’欄1310的第一部份並且是EVEX.R’位元欄(EVEX位元組1,位元[4]-R’),其被使用以編碼延伸32暫存器組較高的16暫存器或較低的16暫存器之任一者。於本發明一實施例中,這位元,如下面指示地與其他者一起,以位元倒反格式被儲存以識別(以習知的x8632位元模式)BOUND指令,其之真實運算碼位元組是62,但於MOD R/M欄中(將在下面被說明)不接受於MOD欄中之數值11;本發明另外的實施例不以倒反格式儲存這以 及其他被指示的位元。一數值1被使用以編碼較低的16暫存器。換言之,R’Rrrr藉由組合EVEX.R’、EVEX.R、以及來自其他欄的其他RRR而被形成。
運算碼映製欄1415(EVEX位元組1,位元[3:0]-mmmm)-其之內容編碼一隱含之引導運算碼位元組(0F、0F38、或0F3)。
資料元素寬度欄1364(EVEX位元組2,位元[7]-W)-藉由標誌EVEX.W被表示。EVEX.W被使用以界定資料型式之粒度(大小)(32位元資料元素或64位元資料元素之任一者)。
EVEX.vvvv欄1420(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之作用可包含下面各者:1)EVEX.vvvv編碼第一來源暫存器運算元,以倒反(1之補數)形式被指明並且是有效於具有2個或更多來源運算元的指令;2)EVEX.vvvv編碼目的地暫存器運算元,對於某些向量位移以1的補數形式被指明;或3)EVEX.vvvv不編碼任何運算元,該欄被保留並且將包含1111b。因此,EVEX.vvvv欄1420編碼以倒反(1之補數)形式被儲存的第一來源暫存器指示符之4個低階位元。依據該指令,一額外之不同的EVEX位元欄被使用以延伸該指示符大小至32暫存器。
EVEX.U 1368類別欄(EVEX位元組2,位元[2]-U)-如果EVEX.U=0,其指示類別A或EVEX.U0;如果EVEX.U=1,其指示類別B或EVEX.U1。
字首編碼欄1425(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字首編碼,並且因此不需要解壓縮。
α欄1352(EVEX位元組3,位元[7]-EH;也是習知如EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、以及EVEX.N;同時也以α展示)-如先前之說明,這欄是上下文相關。
β欄1354(EVEX位元組3,位元[6:4]-SSS,也是習知如EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;同時也以β β β展示)-如先前之說明,這欄是上下文相關。
REX’欄1310-這是REX’欄的餘項並且是EVEX.V’位元欄(EVEX位元組3,位元[3]-V’),其可被使用 以編碼延伸的32暫存器組之較高的16暫存器或較低的16暫存器之任一者。這位元以倒反格式被儲存。一個1數值被使用以編碼較低的16暫存器。換言之,V’VVVV藉由組合EVEX.V’、EVEX.vvvv被形成。
寫入遮罩欄1370(EVEX位元組3,位元[2:0]-kkk)-其之內容如先前所說明地指明寫入遮罩暫存器中之暫存器的索引。於本發明一實施例中,特定數值EVEX.kkk=000具有一特殊功能,其意味著沒有寫入遮罩被使用於特定指令(這可以多種方式被實作,包含有線連接至所有者的寫入遮罩或旁通遮罩硬體的硬體之使用)。
真實運算碼欄1430(位元組4)也是習知如運算碼位元組。部份的運算碼被指明於這欄中。
MOD R/M欄1440(位元組5)包含MOD欄1442、Reg欄1444、以及R/M欄1446。如先前的說明,MOD欄1442之內容在記憶體存取以及非記憶體存取運算之間識別。Reg欄1444之作用可被概括至二個情況:編碼目的地暫存器運算元或一來源暫存器運算元,或被視為一運算碼延伸並且不被使用於編碼任何指令運算元。R/M欄1446之作用可包含下列各者:編碼參考一記憶體位址的指令運算元,或編碼目的地暫存器運算元或一來源暫存器運算元之任一者。
大小、索引、基底(SIB)位元組(位元組6)-如先前之說明,大小欄1350之內容被使用於記憶體位址產生。SIB.xxx 1454以及SIB.bbb 1456-這些欄之內容已先前相關於暫存器索引Xxxx以及Bbbb而被提及。
位移欄1362A(位元組7-10)-當MOD欄1442包含10時,位元組7-10是位移欄1362A,並且其相同於遺留32位元位移(disp32)地作業並且以位元組粒度作業。
位移係數欄1362B(位元組7)-當MOD欄1442包含01時,位元組7是位移係數欄1362B。這欄之位置是相同於遺留的x86指令集8位元位移(disp8),其以位元組粒度作業。因為disp8是符號延伸,其僅可在-128以及127位元組偏移量之間定址;就64位元組快取線而論,disp8使用8位元,其可被設定至僅四個確實有用的數值-128、-64、0、以及64;因為一較大範圍是時常需要的,disp32被使用;但是,disp32需要4個位元組。對照disp8以及disp32,位移係數欄1362B是disp8之一重新解釋;當使用位移係數欄1362B時,實際的位移藉由位移係數欄乘以記憶體運算元存取(N)大小之內容被判定。這位移型式被稱為disp8*N。這減低平均指令長度(一單一位元組被使用於位移,但是具有更大的範圍)。此壓縮位移是依據有效的位移是複數個記憶體存取粒度之假設,並且因此,位址偏移量之多餘的低階位元將不需要被編碼。換言之,位移係數欄1362B替代遺留的x86指令集8位元位移。因此,藉由disp8被超載至disp8*N之一例外,位移係數欄1362B以相同如x86指令集8位元位移之方式被編碼(因此於MODRM/SIB編碼法則中沒有改變)。換言之,除了利用硬體之位移數值的說明外,編碼法則或編碼長度沒有改變(其需要利用記憶體運算元之大小去大小調整位移以得到一位元組方式之位址偏移量)。
即時欄1372如先前說明地運算。
完全運算碼欄
第14B圖是圖解地說明依據本發明一實施例組成完全運算碼欄1374之特定向量親和性指令格式1400的欄之方塊圖。明確地說,完全運算碼欄1374包含格式欄1340、基底運算欄1342、以及資料元素寬度(W)欄1364。基底運算欄1342包含字首編碼欄1425、運算碼映製欄1415以及真實運算碼欄1430。
暫存器索引欄
第14C圖是圖解地說明依據本發明一實施例組成暫存器索引欄1344之特定向量親和性指令格式1400的欄之方塊圖。明確地說,暫存器索引欄1344包含REX欄1405、REX’欄1410、MOD R/M.Reg欄1444、MOD R/M.R/M欄1446、VVVv欄1420、xxx欄1454、以及bbb欄1456。
擴增運算欄
第14D圖是圖解地說明依據本發明一實施例組成擴增運算欄1350之特定向量親和性指令格式1400的欄之方塊圖。當類別(U)欄1368包含0時,其表示EVEX.U0(類別A 1368A):當其包含1時,其表示EVEX.U1(類別B 1368B)。當U=0並且MOD欄1442包含11時(表示一非記憶體存取運算),α欄1352(EVEX位元組3,位元[7]-EH)被詮釋如rs欄1352A。當rs欄1352A包含一個1(捨入1352A.1)時,β欄1354(EVEX位元組3,位元[6:4]-SSS)被詮釋如捨入控制欄1354A。捨入控制欄1354A包含一個一位元SAE欄1356以及 一個二位元捨入運算欄1358。當rs欄1352A包含一個0時(資料轉換1352A.2),β欄1354(EVEX位元組3,位元[6:4]-SSS)被詮釋如一個三位元資料轉換欄1354B。當U=0並且MOD欄1442包含00,01,或10(表示一記憶體存取運算)時,α欄1352(EVEX位元組3,位元[7]-EH)被詮釋如逐出示意(EH)欄1352B並且β欄1354(EVEX位元組3,位元[6:4]-SSS)被詮釋如三位元資料操縱欄1354C。
當U=1時,α欄1352(EVEX位元組3,位元[7]-EH)被詮釋如寫入遮罩控制(Z)欄1352C。當U=1並且MOD欄1442包含11(表示一非記憶體存取運算)時,部份的β欄1354(EVEX位元組3,位元[4]-S0)被詮釋如RL欄1357A;當其包含一個1(捨入1357A.1)時,β欄1354之剩餘部份(EVEX位元組3,位元[6-5]-S2-1)被詮釋如捨入運算欄1359A,而當RL欄1357A包含一個0(VSIZE757.A2)時,β欄1354之剩餘部份(EVEX位元組3,位元[6-5]-S2-1)被詮釋如向量長度欄1359B(EVEX位元組3,位元[6-5]-L1-0)。當U=1並且MOD欄1442包含00,01,或10(表示一記憶體存取操作)時,β欄1354(EVEX位元組3,位元[6:4]-SSS)被詮釋如向量長度欄1359B(EVEX位元組3,位元[6-5]-L1-0)以及廣播欄1357B(EVEX位元組3,位元[4]-B)。
暫存器結構範例
第15圖是依據本發明一實施例之暫存器結構1500的方塊圖。於圖解說明之實施例中,有32個向量暫存器1510(其是512位元寬);這些暫存器被稱為zmm0至 zmm31。較低的16zmm暫存器之較低階256位元被覆蓋在暫存器ymm0-16上。較低的16zmm暫存器的較低階128位元(ymm暫存器之較低階128位元)被覆蓋在暫存器sxmm0-15上。如下面表格中說明地,特定向量親和性指令格式1400在這些覆蓋暫存器檔案上操作。
換言之,向量長度欄1359B在一最大長度以及一或多個其他較短長度之間選擇,其中此較短長度各者是先前長度之一半長度;並且無向量長度欄1359B之指令樣版在最大向量長度上運算。進一步地,於一實施例中,特定向量親和性指令格式1400之類別B指令樣版在封裝或純量單一/雙重精確性浮動點資料以及封裝或純量整數資料上運算。純量運算是在zmm/ymm/xmm暫存器中最低階資料元素位置上進行的運算;取決於實施例,較高階資料元素位置是保留相同如指令先前之它們樣子或歸零。
於圖解地說明的實施例中,寫入遮罩暫存器1515有8個寫入遮罩暫存器(k0至k7),其各是64位元之大小。於一不同實施例中,寫入遮罩暫存器1515是16位元的大小。 如先前所述,於本發明一實施例中,向量遮罩暫存器k0不能被使用作為寫入遮罩;當將通常指示k0之編碼被使用於一寫入遮罩時,其選擇一有線的寫入遮罩0xFFFF,有效地使對於那指令之寫入遮罩失效。
於圖解說明之實施例中,一般目的暫存器1525有十六個64位元一般目的暫存器,其與現有的x86定址模式一起被使用以定址記憶體運算元。這些暫存器名稱被指示為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、以及R8至R15。
於圖解說明之實施例中,純量浮動點堆疊暫存器檔案(x87堆疊)1545,在其上是失真或混疊的MMX封裝整數平的暫存器檔案1550,x87堆疊是一個八元素的堆疊,其被使用以進行在使用x87指令集延伸之32/64/80位元浮動點資料上的純量浮動-點運算;而MMX暫存器則被使用以進行64位元封裝整數資料上之運算,以及保持運算元以供用於在MMX以及XMM暫存器之間執行的一些運算。
本發明另外的實施例可使用較寬或較窄的暫存器。另外地,本發明不同實施例可使用較多、較少或不同的暫存器檔案以及暫存器。
核心結構、處理器、以及電腦結構範例
對於不同用途的處理器核心,可以不同方式以及於不同的處理器中被實作。例如,此等核心之實作可包含:1)有意用於一般用途計算之一般用途的有序核心;2)有意用於一般用途計算之高性能的一般用途無序核心;3)有意主 要用於圖形及/或科學(總產量)計算之特定用途核心。不同處理器之實作可包含:1)包含有意用於一般用途計算之一或多個一般用途有序核心及/或有意用於一般用途計算的一或多個一般用途無序核心之CPU;以及2)包含有意主要用於圖形及/或科學(總產量)之一或多個特定用途核心的協同處理器。此等不同處理器導致不同的電腦系統結構,其可包含:1)與CPU分別之晶片上的協同處理器;2)與CPU相同之封裝中的分別晶圓上之協同處理器;3)與CPU相同之晶圓上的協同處理器(於其實例中,此一協同處理器有時被稱為特定用途邏輯,例如,整合圖形及/或科學(總產量)邏輯,或作為特定用途核心);以及4)可包含在相同晶圓上的上述CPU(有時被稱為應用核心或應用處理器)、上述之協同處理器以及另外的功能性之晶片系統。核心結構範例接著被說明,隨後有處理器以及電腦結構範例說明。
核心結構範例
有序以及無序核心方塊圖
第16A圖是依據本發明實施例圖解地說明有序管線範例以及暫存器換名範例、無序發出/執行管線兩者的方塊圖。第16B圖是依據本發明實施例圖解地說明被包含於一處理器中的有序結構核心範例以及暫存器換名、無序發出/執行結構核心範例兩者的實施例之方塊圖。第16A-B圖之實線方塊圖解地說明有序管線以及有序核心,而虛線方塊之可選擇增加部份圖解地說明暫存器換名、無序發出/執行管線以及核心。在有序觀點是無序觀點之一子集的情況,該 無序觀點將被說明。
於第16A圖中,處理器管線1600包含一提取級1602、一長度解碼級1604、一解碼級1606、一分配級1608、一換名級1610、一排程(也是習知如一發送或發出)級1612、一暫存器讀取/記憶體讀取級1614、一執行級1616、一回寫/記憶體寫入級1618、一異常處理級1622、以及一提交級1624。
第16B圖展示處理器核心1690,其包含耦合至一執行引擎單元1650的一前端點單元1630,並且其兩者皆被耦合至一記憶體單元1670。核心1690可以是一簡化指令集計算(RISC)核心、一複雜指令集計算(CISC)核心、一非常長指令字組(VLIW)核心、或混合或交錯的核心型式。再如另一選擇,例如,核心1690可以是一特殊用途核心,例如,一網路或通訊核心、壓縮引擎、協同處理器核心、一般用途電腦圖形處理單元(GPGPU)核心、圖形核心或其類似者。
前端點單元1630包含耦合至一指令快取單元的分支預測單元1632,其被耦合至一指令轉譯後備緩衝器(TLB)1636,其被耦合至一指令提取單元1638,其被耦合至一解碼單元1640。解碼單元1640(或解碼器)可解碼指令,並且產生如一或多個微運算、微指令碼入口點、微指令、其他指令或其他控制信號之輸出,其自原始指令被解碼,或其以不同方式反映原始指令,或導自於原始指令。解碼單元1640可使用各種不同機構被實作。適當的機構範例包含,但是不受限定於,查詢表、硬體實作、可程控邏輯陣 列(PLA)、微碼唯讀記憶體(ROM)等等。於一實施例中,該核心1690包含一微碼ROM或的其他媒體儲存用於某些巨指令的微碼(例如,於解碼單元1640或中或此外在前端點單元1630之內)。解碼單元1640耦合至執行引擎單元1650中之一換名/分配器單元1652。
執行引擎單元1650包含耦合至除役單元1654之換名/分配器單元1652以及一組之一或多個排程器單元1656。排程器單元1656代表任何數目之不同的排程器,其包含保留站、中央指令窗口,等等。排程器單元1656耦合至實際暫存器檔案單元1658。各個實際暫存器檔案單元1658代表一或多個實際暫存器檔案,其不同的一者儲存一或多個不同資料型式,例如,純量整數、純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點、狀態(例如,一指令指示符,其是將被執行的下一個指令之位址)等等。於一實施例中,實際暫存器檔案單元1658包括一向量暫存器單元、一寫入遮罩暫存器單元以及一純量暫存器單元。這些暫存器單元可提供結構向量暫存器、向量遮罩暫存器、以及一般用途暫存器。實際暫存器檔案單元1658與除役單元1654重疊以說明各種方式,於其中暫存器換名以及無序執行可被實作(例如,使用重排緩衝器以及除役暫存器檔案;使用未來檔案、歷史緩衝器以及除役暫存器檔案;使用暫存器映圖以及暫存器池;等等)。除役單元1654以及以及實際暫存器檔案單元1658耦合至執行群集1660。該執行群集1660包含一組之一或多個執行單元1662以及一組之 一或多個記憶體存取單元1664。執行單元1662可在各種型式資料(例如,純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點)上進行各種運算(例如,移位、加法、減法、乘法)。雖然一些實施例可包含專用於特定功能或功能組之一些執行單元,其他實施例可僅包含全部進行所有功能的一個執行單元或複數個執行單元。排程器單元1656、實際暫存器檔案單元1658以及執行群集1660被展示為可能是複數個,因為某些實施例對於某些型式之資料/操作產生分別管線(例如,純量整數管線、純量浮動點/封裝整數/封裝浮動點/向量整數/向量浮動點管線、及/或記憶體存取管線,其各具有它們獨有的排程器單元、實際暫存器檔案單元、及/或執行群集-並且於一分別記憶體存取管線之情況中,某些實施例被實作,於其中僅這管線之執行群集具有記憶體存取單元1664)。同時也應了解,在使用分別的管線情況,一或多個的這些管線可以是無序發出/執行且其餘是有序。
記憶體存取單元1664集合被耦合至記憶體單元1670,其包含被耦合至一資料快取單元1674(其被耦合至位準2(L2)快取單元1676)的資料TLB單元1672。於一實施範例中,記憶體存取單元1664可包含負載單元、儲存位址單元以及儲存資料單元,其各耦合至記憶體單元1670中之資料TLB單元1672。指令快取單元1634進一步耦合至記憶體單元1670中之位準2(L2)快取單元1676。L2快取單元1676耦合至一或多個其他快取位準並且最後至一主要記憶體。
藉由範例,範例暫存器換名、無序發出/執行核心結構可如下所示地實作管線1600:1)指令提取1638進行提取以及長度解碼級1602與1604;2)解碼單元1640進行解碼級1606;3)換名/分配器單元1652進行分配級1608以及換名級1610;4)排程器單元1656進行排程級1612;5)實際暫存器檔案單元1658以及記憶體單元1670進行暫存器讀取/記憶體讀取級1614;執行聚集1660進行執行級1616;6)記憶體單元1670以及實際暫存器檔案單元1658進行回寫/記憶體寫入級1618;7)各種單元可被包含於異常處理級1622中;以及8)除役單元1654以及實際暫存器檔案單元1658進行提交級1624。
核心1690可以支援包含於此處說明之指令的一或多個指令集(例如,x86指令集(具有被添加之較新版本的一些擴充);美國加州森尼維耳市之MIPS技術的MIPS指令集;美國加州森尼維耳市之ARM持股公司的ARM指令集(具有選擇之另外的擴充,例如NEON))。於一實施例中,核心1690包含支援一封裝資料指令集擴充的邏輯(例如,AVX1、AVX2、及/或上述一般向量親和性指令格式(U=0及/或U=1)之一些形式),因而允許藉由將使用封裝資料被進行之許多的多媒體應用所使用之運算。
應了解,核心可支援多線程(執行二個或更多個平行的操作或線程集合),並且可因此以多種方式處理,該等多種方式包含分時多線程、同時多線程(其中一單一實體核心提供對於實體核心是同時地多線程之各線程之一邏輯 核心),或其組合(例如,分時提取與解碼以及隨後的同時多線程,例如,Intel®Hyperthreading技術)。
雖然暫存器換名於無序執行本文中被說明,應了解,暫存器換名可被使用於有序結構中。雖然圖解說明的處理器實施例也包含分別的指令與資料快取單元1634/1674以及共用L2快取單元1676,另外的實施例也可具有,例如,供用於指令以及資料兩者之一單一內部快取,例如,位準1(L1)內部快取,或複數個位準內部快取。於一些實施例中,系統可包含一內部快取以及外加於該核心及/或處理器的一外部快取之組合。另外地,所有的快取可以是外加於該核心及/或該處理器。
有序結構核心特定範例
第17A-B圖是圖解地說明有序核心結構之更多特定範例的方塊圖,其核心將是一晶片中許多邏輯區塊(包含相同型式及/或不同型式的其他核心)之一者。該等邏輯區塊經由高頻寬互連網路(例如,環狀網路),取決於應用,而與一些固定功能邏輯、記憶體I/O界面、以及其他必須I/O邏輯通訊。
第17A圖是依據本發明實施例之單一處理器核心與其連接之晶圓上的互連網路1702以及其位準2(L2)快取1704之局部性子集的方塊圖。於一實施例中,一指令解碼器1700支援具有封裝資料指令集擴充功能的x86指令集。一L1快取1706允許低潛伏期存取快取記憶體進入純量以及向量單元。雖然於一實施例中(為簡化其設計),一純量單元 1708以及一向量單元1710使用分別的暫存器集合(分別是,純量暫存器1712以及向量暫存器1714)並且在它們之間轉移的資料被寫入至記憶體並且接著自位準1(L1)快取1706中被回讀,本發明另外的實施例可使用不同的方法(例如,使用單一暫存器集合或包含允許資料在二個暫存器檔案之間轉移而不必被寫入以及讀回的通訊路線)。
L2快取1704之局部性子集是廣域L2快取之部份,該廣域L2快取被分割成為每個處理器核心有一個之分別的局部性的子集。各處理器核心具有直接存取路線至其之自己的L2快取1704之局部性子集。利用一處理器核心所讀取的資料被儲存於其之L2快取子集1704中並且可與存取它們獨有的局部性L2快取子集的其他處理器核心快速地、平行地被存取。利用處理器核心被寫入之資料被儲存於其之自己的L2快取子集1704中,並且如果必須的話,則自其他子集被湧送。環狀網路保護共用資料之協調性。環狀網路是雙向作用以允許媒介,例如,處理器核心、L2快取以及其他邏輯區塊在晶片內彼此通訊。各環狀資料通道的每個方向是1012位元寬。
第17B圖是是依據本發明實施例之第11A圖中的處理器核心之部份展開圖。第17B圖包含L1快取1704之L1資料快取1706A部份、以及更多關於向量單元1710與向量暫存器1714之詳細說明。明確地說,向量單元1710是16寬度向量處理單元(VPU)(參看16寬度ALU 1728),其執行一或多個整數、單精確性浮動以及雙重-精確性浮動指令。VPU支 援於記憶體輸入上之利用拌和單元1720拌合暫存器輸入、利用數值轉換單元1722A-B之數值轉換、以及利用複製單元1724之複製。寫入遮罩暫存器1726允許推斷產生的向量寫入。
具有整合記憶體控制器以及圖形之處理器
第18圖是依據本發明實施例之處理器1800的方塊圖,處理器1800可具有多於一個核心,可具有一整合記憶體控制器並且可具有整合圖形。第18圖之實線方塊圖解地說明處理器1800,處理器1800具有單一核心1802A、系統媒介單元1810、一組之一或多個匯流排控制器單元1816,而選擇添加之虛線方塊說明不同的處理器1800,處理器1800具有複數個核心1802A-N、系統媒介單元1810中之一組的一或多個整合記憶體控制器單元1814以及特殊用途邏輯1808。
因此,處理器1800的不同實作例可包含:1)具有整合圖形及/或科學(總產量)邏輯的特定用途邏輯1808之一CPU(其可包含一或多個核心)、以及一般用途核心之核心1802A-N(例如,一般用途有序核心、一般用途無序核心、其二者之組合);2)一協同處理器,其具有有意主要地用於圖形及/或科學(總產量)之大量特定用途核心的核心1802A-N;以及3)一協同處理器,其具有大量之一般用途有序核心的核心1802A-N。因此,處理器1800可以是,例如,一般用途處理器、協同處理器或特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器,GPGPU(一般 用途圖形處理單元),高產量多整合核心(MIC)協同處理器(包含30或更多個核心)、嵌入式處理器或其類似者。該處理器可被實作於一或多個晶片上。處理器1800可以是一或多個基片的一部份及/或及/或,例如,可使用任何的一些處理技術,例如,BiCMOS、CMOS、或NMOS而於一或多個基片上被實作。
該記憶體階系包含在該等核心內之一或多個快取位準,一組或一或多個共用快取單元1806,以及耦合至該組整合記憶體控制器單元1814之外部記憶體(未被展示)。該組共用快取單元1806可包含一或多個中間位準快取,例如,位準2(L2)、位準3(L3)、位準4(L4)或其他快取位準、一最後位準快取(LLC)及/或其組合。雖然於一實施例中,一環狀基礎互連單元1812互連整合圖形邏輯1808、該組共用快取單元1806以及系統媒介單元1810/整合記憶體控制器單元1814,不同的實施例可使用任何數量之習知技術以供互連此等單元。於一實施例中,協調性被保持在一或多個快取單元1806以及核心1802-A-N之間。
於一些實施例中,一或多個核心1802A-N是能夠多線程。系統媒介1810包含調節以及操作核心1802A-N的那些構件。系統媒介單元1810可包含,例如,電力控制單元(PCU)以及顯示單元。PCU可以是或包含用以調整核心1802A-N以及整合圖形邏輯1808之電力狀態所需的邏輯以及構件。顯示單元是用以驅動一或多個外部連接之顯示器。
核心1802A-N可以是同質的或異質的,就結構指 令集而論;亦即,二個或更多個核心1802A-N可以是能夠執行相同的指令集,而其他者則可以是僅能夠執行該指令集之一子集或一不同的指令集。
電腦結構範例
圖19-22是電腦結構範例之方塊圖。供用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路中樞、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、輕便媒體播放機、手持裝置、以及各種其他電子式裝置之習知技術的其他系統設計以及組態也是適合的。大體上,可包含如此處揭示之處理器及/或其他執行邏輯之非常多種系統或電子式裝置通常也是適合的。
接著參看至圖19,其所展示的是依據本發明一實施例之系統1900的方塊圖。系統1900可包含一或多個處理器1910、1915,其被耦合至控制器中樞1920。於一實施例中,控制器中樞1920包含圖形記憶體控制器中樞(GMCH)1990以及一輸入/輸出中樞(IOH)1950(其可以是在分別的晶片上);GMCH 1990包含耦合至記憶體1940以及協同處理器1945之記憶體以及圖形控制器;IOH 1950是耦合輸入/輸出(I/O)裝置1960至GMCH 1990。另外地,記憶體以及圖形控制器之一個或兩者被整合在處理器之內(如於此處之說明),記憶體1940以及協同處理器1945直接地耦合至具有IOH 1950之一晶片中的處理器1910、以及控制器中樞 1920。
另外的處理器1915之可選擇的性質是第13圖中以虛線表示者。各處理器1910、1915可包含此處說明之一或多個處理核心並且可以是處理器1800的一些形式。
記憶體1940可以是,例如,動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或其二者之組合。對於至少一實施例,控制器中樞1920經由多點匯流排,例如,前面匯流排(FSB)、點對點界面,例如,快速通道互連(QPI)、或相似連接1995與處理器1910、1915通訊。
於一實施例中,協同處理器1945,例如,是一特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或其類似者。於一實施例中,控制器中樞1920可包含一整合圖形加速裝置。
就包含結構學、微結構學、熱量學、功率消耗特性以及其類似者之價值觀而論,在實體資源1910、1915之間可以是具有多種差異性。
於一實施例中,處理器1910執行控制一般型式之資料處理操作的指令。被嵌入指令內部者可以是協同處理器指令。處理器1910確認這些協同處理器指令是將利用附帶的協同處理器1945被執行之型式。因此,處理器1910協同處理器匯流排或其他互連上發出這些協同處理器指令(或代表協同處理器指令之控制信號),至協同處理器1945。協同處理器1945接受並且執行所接收的協同處理器指令。
接著參看至第20圖,其所展示的是依據本發明一實施例之第一更特定範例系統2000的方塊圖。如於第20圖之展示,多處理器系統2000是一點對點互連系統,並且包含經由點對點互連2050耦合的一第一處理器2070以及一第二處理器2080。處理器2070以及2080各可以處理器1800的一些版本。於本發明一實施例中,處理器2070以及2080分別地是處理器1910以及1915,而協同處理器2038則是協同處理器1945。於另一實施例中,處理器2070以及2080則分別地是處理器1910及協同處理器1945。
處理器2070以及2080被展示,而分別地包含整合記憶體控制器(IMC)單元2072以及2082。處理器2070也包含點對點(P-P)界面2076以及2078作為其之匯流排控制器單元部份;同樣地,第二處理器2080包含P-P界面2086以及2088。處理器2070、2080可使用P-P界面電路2078、2088,經由點對點(P-P)界面2050而交換資訊。如於第20圖之展示,IMC 2072以及2082耦合處理器至分別的記憶體,亦即,記憶體2032以及記憶體2034,其可以是局部性被附帶至分別處理器之主記憶體部份。
處理器2070、2080各可使用點對點界面電路2076、2094、2086、2098,經由分別的P-P界面2052、2054而與一晶片組2090交換資訊。晶片組2090可經由高性能界面2039,而選擇性地與協同處理器2038交換資訊。於一實施例中,協同處理器2038,例如,是一特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、 圖形處理器、GPGPU、嵌入式處理器、或其類似者。
一共用快取(未被展示)可被包含在任一的處理器中或在兩處理器之外,經由P-P互連而與處理器連接,以至於如果一處理器被安置成為低功率模式,則任一或兩處理器之局部性快取資訊可被儲存於共用快取中。
晶片組2090可經由界面2096被耦合至一第一匯流排2016。於一實施例中,第一匯流排2016可以是週邊構件互連(PCI)匯流排,或例如,一PCI快速匯流排之匯流排或另一個第三代I/O互連匯流排,然而本發明範疇是不因此受限定。
如於第20圖之展示,各種I/O裝置2014可與匯流排橋2018一起被耦合至第一匯流排2016,匯流排橋2018耦合第一匯流排2016至第二匯流排2020。於一實施例中,一或多個另外的處理器2015,例如,協同處理器、高產量MIC處理器、GPGPU、加速裝置(例如,圖形加速裝置或數位信號處理(DSP)單元)、場式可程控閘陣列、或任何其他處理器,被耦合至第一匯流排2016。於一實施例中,第二匯流排2020可以是低引腳數(LPC)匯流排。各種裝置可被耦合至一第二匯流排2020,包含,例如,鍵盤及/或滑鼠2022、通訊裝置2027以及儲存單元2028,例如,碟片驅動或其他大量儲存裝置,於一實施例中,其可包含指令/數碼以及資料2030。進一步地,音訊I/O 2024可被耦合至第二匯流排2020。注意到,其他的結構也是可能。例如,取代第20圖之點對點結構,一系統可實作多點匯流排或其他此等結構。
接著參看至第21圖,其所展示的是依據本發明一實施例之第二更特定範例系統2100的方塊圖。第20圖以及第21圖中之相同元件具有相同的參考號碼,並且第20圖之某些觀點已自第21圖被省略以避免混淆第21圖的其他觀點。
第21圖分別圖解地說明處理器2070、2080可包含整合記憶體以及I/O控制邏輯(“CL”)2072以及2082。因此,CL 2072、2082包含整合記憶體控制器單元並且包含I/O控制邏輯。第21圖不只是圖解地說明耦合至CL 2072、2082之記憶體2032、2034,但同時也說明耦合至控制邏輯2072、2082的I/O裝置2114。遺留I/O裝置2115耦合至晶片組2090。
接著參看至第22圖,其所展示的是依據本發明一實施例之SoC 2200的方塊圖。相似於第18圖元件中之元件具有相同的參考號碼。同時,虛線方塊是在更先進之SoC上之選擇性特點。於第22圖中,一互連單元2202耦合至:一應用處理器2210,其包含一組的一或多個核心2202A-N以及共用快取單元1806;一系統媒介單元1810;一匯流排控制器單元1816;一整合記憶體控制器單元1814;一組或一或多個協同處理器2220,其可包含整合圖形邏輯、一影像處理器、一音訊處理器、以及一視訊處理器;一靜態隨機存取記憶體(SRAM)單元2230;一直接記憶體存取(DMA)單元2232;以及用以耦合至一或多個外部顯示器的一顯示單元2240。於一實施例中,協同處理器2220包含,例如,一特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、 GPGPU、高產量MIC處理器、嵌入式處理器、或其類似者。
此處揭示之機構實施例可以硬體、軟體、韌體或此等實作方法之組合而被實作。本發明實施例可被實作如於包括至少一處理器、一儲存系統(包含依電性以及非依電性記憶體及/或儲存元件)、至少一輸入裝置以及至少一輸出裝置的可程控系統上執行之電腦程式或程式碼。
程式碼,例如,說明於第20圖形中之程式碼2030,可被應用至輸入指令以執行此處說明之功能並且產生輸出資訊。該輸出資訊可以習知的形式,被施加至一或多個輸出裝置。為了這應用目的,一處理系統,例如,包含具有,例如,一處理器;一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(ASIC)、或一微處理器之任何系統。
程式碼可以一高階程序或物件導向之程式語言被實作以通訊於一處理系統。如果需要的話,程式碼也可以組合或機器語言被實作。實際上,此處說明之機構是不受限定於任何特定程式語言的範疇。於任何情況中,語言可以是一編譯或詮釋語言。
至少一實施例之一或多個論點可藉由儲存於代表在處理器內之各種邏輯的機器可讀取媒體上之表示指令而被實作,該等指令當利用機器被讀取時,將導致機器製造邏輯以執行此處說明之技術。此等表示,習知如“IP核心”可被儲存在有實體、機器可讀取媒體上並且被供應至各種客製或廠製設施以負載進入實際上構成邏輯或處理器之製 造機器內。
此等機器可讀取儲存媒體可包含,而不限制於,利用機器或裝置被製造或被形成之非暫存、有實體的物件配置,其包含儲存媒體,例如,硬碟、任何其他型式碟片,如包含軟式磁片、光碟、小型碟片唯讀記憶體(CD-ROM)、可重寫小型碟片(CD-RW)、以及磁鐵式光碟、半導體裝置,例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可消除可程控唯讀記憶體(EPROM)、快閃記憶體、電氣地可消除可程控唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁學或光學卡或適用於儲存電子式指令之任何其他型式的媒體。
因此,本發明實施例也包含非暫存、有實體的機器可讀取媒體,其包含指令或包含設計資料,例如,硬體說明語言(HDL),其界定此處說明之結構、電路、裝置、處理器及/或系統特點。此等實施例也可被稱為程式產品。
仿效(包含二進制轉譯、指令碼變形,等等)
於一些情況中,一指令轉換器可被使用以轉換來自一來源指令集之指令至一目標指令集。例如,該指令轉換器可轉換(例如,使用靜態二進制轉譯、包含動態編輯之動態二進制轉譯)、變形、仿效、或其他不同方法,以轉換一指令為將利用核心被處理的一或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合被實作。指令轉換器可以是在處理器上、處理器之外、或部份在處理器上以 及部份在處理器之外。
第23圖是依據本發明實施例之對照軟體指令轉換器的使用以轉換來源指令集之二進制指令為目標指令集之二進制指令的方塊圖。於所說明之實施例中,指令轉換器是是一軟體指令轉換器,然而另外地,該指令轉換器也可以軟體、韌體、硬體或其各種組合被實作。第23圖展示高階語言2302中之一程式,該程式可使用x86編譯器2304被編譯以產生x86二進制指令碼2306,其可利用具有至少一個x86指令集核心2316之一處理器而自然地被執行。具有至少一個x86指令集核心2316之處理器代表任何處理器,其可進行相同如具有至少一個x86指令集核心之英特爾(Intel)處理器功能,其藉由相容地執行或以不同方式處理(1)英特爾x86指令集核心之指令集的一主要部份,或(2)應用或其他軟體目標之目的碼版本,而在具有至少一個x86指令集核心之一英特爾處理器上進行,以便實質地達成如具有至少一個x86指令集核心之一英特爾處理器的相同結果。x86編譯器2304代表可操作以產生x86二進制指令碼2306(例如,目的碼)之一編譯器,該x86二進制指令碼1606可具有或不具有另外的連結處理,而被執行於具有至少一個x86指令集核心2316之處理器上。同樣地,第23圖展示高階語言2302之程式,其可使用不同的指令集編譯器2308被編譯以產生不同的指令集二進制指令碼2310,該指令集二進制指令碼2310可藉由不具有至少一個x86指令集核心2314之處理器(例如,一處理器,其具有核心可執行美國加州森尼維耳市之MIPS技術 的MIPS指令集及/或執行美國加州森尼維耳市ARM持股公司之ARM指令集)自然地被執行。指令轉換器2312被使用以轉換x86二進制指令碼2306成為可藉由不具有一x86指令集核心2314之處理器自然地被執行的一指令碼。這轉換的指令碼是不太可能相同於另外的指令集二進制指令碼2310,因為這樣的一指令轉換器可能是不容易構成;但是,該轉換的指令碼將達成一般操作並且可自不同指令集的指令被構成。因此,指令轉換器2312代表軟體、韌體、硬體、或其組合,其經由仿效、模擬或任何其他處理程序,而允許一處理器或其他不具有一x86指令集處理器或核心的電子式裝置執行該x86二進制指令碼2306。
另外的實施例
雖然本發明已就許多實施例被說明,那些熟習本技術者應明白,本發明是不受限定於上述之實施例,本發明可藉由在所附加申請專利範圍的精神以及範疇之內修改以及變更而被實施。本說明因此是被視為描述而非限制。例如,雖然圖形中之流程圖展示利用本發明某些實施例被進行的一特定操作順序,應了解,此順序僅是範例(例如,不同的實施例可以不同順序進行操作、組合某些操作、重疊某些操作等等)。
100‧‧‧指令
102‧‧‧第一欄
104‧‧‧第二欄
110‧‧‧結構向量寫入遮罩暫存器
120‧‧‧結構向量暫存器
130‧‧‧結構一般目的暫存器
132‧‧‧來源向量寫入遮罩暫存器內容
134‧‧‧來源運算元
140‧‧‧第一方塊
142‧‧‧輸出方塊

Claims (30)

  1. 一種電腦實作方法,其包含下列步驟:提取一指令之一出現,其中該指令之格式指明來自一單一向量寫入遮罩暫存器的一來源運算元作為其僅有的來源運算元,並指明一單一一般目的暫存器作為其目的地,其中該指令之格式包括一第一欄,該第一欄之內容自複數個結構向量寫入遮罩暫存器中選擇該單一向量寫入遮罩暫存器,並且其中該指令之格式包括一第二欄,該第二欄之內容自複數個結構一般目的暫存器中選擇該單一一般目的暫存器,並且其中該來源運算元是一寫入遮罩,該寫入遮罩包括對應至在數個結構向量暫存器內之不同多位元資料元素位置的複數個一位元向量寫入遮罩元素;以及反應於執行單一個該指令之單一個該出現,將資料儲存於該單一一般目的暫存器中,以使得其內容基於該來源運算元中之該等複數個一位元向量寫入遮罩元素是否都是0而代表一第一純量常數抑或一第二純量常數。
  2. 如申請專利範圍第1項之方法,其中該等第一和第二純量常數分別是1和0。
  3. 如申請專利範圍第2項之方法,其中儲存之步驟包括:將資料儲存於該單一一般目的暫存器中,以使得當該等複數個一位元向量寫入遮罩元素都是0時,其內容代表 1。
  4. 如申請專利範圍第2項之方法,其中儲存之步驟包括:將資料儲存於該單一一般目的暫存器中,以使得當該等複數個一位元向量寫入遮罩元素都是0時,其內容代表0。
  5. 如申請專利範圍第1項之方法,其中單一個該指令的一運算碼指明該來源運算元之大小。
  6. 如申請專利範圍第5項之方法,其中該來源運算元之大小小於該單一向量寫入遮罩暫存器之大小。
  7. 如申請專利範圍第6項之方法,其中該來源運算元是從一最低有效位元開始的來自該單一向量寫入遮罩暫存器的數個連續位元。
  8. 如申請專利範圍第1項之方法,其中該指令是一指令集結構(ISA)的一部份,其中來自該ISA的其他指令指明向量運算、選擇目的地、並從該等複數個結構向量寫入遮罩暫存器中之該等寫入遮罩中作選擇,其中對於該等其他指令中之各者,所選擇之該寫入遮罩的該等複數個一位元向量寫入遮罩元素控制在所選擇之該目的地中之該等資料元素位置中係何者反映該指令之向量運算之結果。
  9. 如申請專利範圍第1項之方法,其中該等一般目的暫存器被組配成可儲存供用於邏輯運算、算術運算、位址計算、和記憶體指標的運算元,並且其中該等向量暫存器被組配成可儲存向量。
  10. 如申請專利範圍第1項之方法,其中係有大小為至少64位元的至少16個一般目的暫存器,其中係有其中係有大小為至少32位元的至少8個向量寫入遮罩暫存器以儲存寫入遮罩,並且其中係有大小為至少256位元的至少16個向量暫存器以儲存向量。
  11. 如申請專利範圍第1項之方法,其中係有大小為至少64位元的至少16個一般目的暫存器,其中係有其中係有大小為至少64位元的至少8個向量寫入遮罩暫存器以儲存寫入遮罩,並且其中係有大小為至少512位元的至少32個向量暫存器以儲存向量。
  12. 如申請專利範圍第1項之方法,其中執行之步驟包括:於該等複數個一位元向量寫入遮罩元素上進行一邏輯OR運算;以及基於該邏輯OR運算之結果而產生該第一純量常數或該第二純量常數。
  13. 如申請專利範圍第12項之方法,其中產生之步驟包含:反運算該邏輯OR運算之結果;將經反運算的該數值轉換成一64位元無符號整數數值,以形成該第一純量常數或該第二純量常數。
  14. 如申請專利範圍第12項之方法,其中產生之步驟包含:基於自該邏輯OR運算之該結果所形成的一控制信號以及對於該指令是複數個型式中之何者的一指示而多工化該第一純量常數抑或該第二純量常數。
  15. 一種處理器核心,其包含: 一硬體解碼單元,用以解碼一組一或多個指令之出現,其中該等出現各將來自複數個結構向量寫入遮罩暫存器中之所選擇一者的一來源運算元指明為其僅有的來源,並將複數個結構一般目的暫存器中之所選擇一者指明為其目的地,其中該組指令具有一格式,該格式具有一第一欄,該第一欄之內容選擇該等複數個結構向量寫入遮罩暫存器中之該一者,並且其中該格式具有一第二欄,該第二欄之內容選擇該等複數個結構一般目的暫存器中之該一者,並且其中該等來源運算元各是包含有對應至在數個結構向量暫存器內之不同多位元資料元素位置的複數個一位元向量寫入遮罩元素的一寫入遮罩;執行引擎單元,其反應於各個該等出現而進行下列動作:判定該出現之來源運算元之該等複數個一位元向量寫入遮罩元素是否都是0;及致使資料被儲存於該出現之一單一所選擇一般目的暫存器的,以使得其內容係基於判定結果而代表一第一純量常數抑或一第二純量常數。
  16. 如申請專利範圍第15項之處理器,其中該等第一和第二純量常數分別是1和0。
  17. 如申請專利範圍第16項之處理器,其中該組指令中之一第一者使得當該等複數個一位元向量寫入遮罩元素都是0時,該單一所選擇一般目的暫存器之內容代表1。
  18. 如申請專利範圍第17項之處理器,其中該組指令中之一第二者使得當該等複數個一位元向量寫入遮罩元素都是0時,該單一所選擇一般目的暫存器之內容代表0。
  19. 如申請專利範圍第15項之處理器,其中該組指令中之不同者指明來源運算元之不同大小,並且其中該等大小中之至少一者小於該等向量寫入遮罩暫存器之大小。
  20. 如申請專利範圍第19項之處理器,其中該等來源運算元是從一最低有效位元開始的來自該單一所選擇向量寫入遮罩暫存器的數個連續位元。
  21. 如申請專利範圍第15項之處理器,其中該硬體解碼器亦用於將指明向量運算、選擇目的地、並從該等複數個結構向量寫入遮罩暫存器中之該等寫入遮罩中作選擇的其他指令之出現解碼,其中針對該等其他指令中之各者,該所選擇寫入遮罩之該等複數個一位元向量寫入遮罩元素控制在所選擇之該目的地中的該等資料元素位置中係何者反映該指令之向量運算之結果。
  22. 如申請專利範圍第15項之處理器,其中該等結構一般目的暫存器被組配成可儲存供用於邏輯運算、算術運算、位址計算、以及記憶體指標的運算元,並且其中該等結構向量暫存器被組配成可儲存向量。
  23. 如申請專利範圍第15項之處理器,其中係有大小為至少64位元的至少16個結構一般目的暫存器,其中係有大小為至少32位元的至少8個結構向量寫入遮罩暫存器以儲存寫入遮罩,並且其中係有大小為至少256位元的至少 16個結構向量暫存器以儲存向量。
  24. 如申請專利範圍第15項之處理器,其中係有大小為至少64位元的至少16個結構一般目的暫存器,其中係有大小為至少64位元的至少8個結構寫入遮罩暫存器以儲存寫入遮罩,並且其中係有大小為至少512位元的至少32個結構向量暫存器以儲存向量。
  25. 如申請專利範圍第15項之處理器,其中該執行邏輯包括:邏輯OR邏輯,用以在該等複數個一位元向量寫入遮罩元素上運算;以及一多工器,用以基於自該邏輯OR運算之結果所形成的一控制信號及對於正執行的係該組指令中之何者的一指示而選擇該第一純量常數抑或該第二純量常數。
  26. 一種製造物件,其包含:一實體機器可讀取儲存媒體,其有儲存在內之一指令之出現,其中該指令之格式將來自一單一向量寫入遮罩暫存器的一來源運算元指明為其僅有的來源運算元,並將一單一一般目的暫存器指明為其目的地,其中該指令之格式包括一第一欄,該第一欄之內容自複數個結構向量寫入遮罩暫存器中選擇該單一向量寫入遮罩暫存器,並且其中該指令之格式包括一第二欄,該第二欄之內容自複數個結構一般目的暫存器中選擇該單一一般目的暫存器,其中該來源運算元是一寫入遮罩,該寫入遮罩包括有對應至在數個結構向量暫存器內之不 同多位元資料元素位置的複數個一位元向量寫入遮罩元素,並且其中該指令格式包括一運算碼,該運算碼指示一機器,使該機器反應於單一個該指令之單一個該出現而致使資料被儲存於該單一一般目的暫存器中,以使得其內容基於在該來源運算元中之該等複數個一位元向量寫入遮罩元素是否都是0而代表一第一純量常數抑或一第二純量常數。
  27. 如申請專利範圍第26項之製造物件,其中該運算碼指出,該單一所選擇一般目的暫存器之內容在該等複數個一位元向量寫入遮罩元素都是0時代表1,並且在該等複數個一位元向量寫入遮罩元素並非都是0時代表0。
  28. 如申請專利範圍第26項之製造物件,其中該運算碼指出,該單一所選擇一般目的暫存器之內容在該等複數個一位元向量寫入遮罩元素都是0時代表0,並且在該等複數個一位元向量寫入遮罩元素並非都是0時代表1。
  29. 如申請專利範圍第26項之製造物件,其中該運算碼指明該來源運算元之大小。
  30. 如申請專利範圍第29項之製造物件,其中該來源運算元之大小小於該單一向量寫入遮罩暫存器之大小。
TW101145911A 2011-12-22 2012-12-06 電腦實作方法、處理器以及含有用於基於向量寫入遮罩之內容而將兩個純量常數之其中之一者儲存倒一般目的暫存器中的指令的實體機器可讀取儲存媒體 TWI496079B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066998 WO2013095553A1 (en) 2011-12-22 2011-12-22 Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks

Publications (2)

Publication Number Publication Date
TW201337740A true TW201337740A (zh) 2013-09-16
TWI496079B TWI496079B (zh) 2015-08-11

Family

ID=48669194

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101145911A TWI496079B (zh) 2011-12-22 2012-12-06 電腦實作方法、處理器以及含有用於基於向量寫入遮罩之內容而將兩個純量常數之其中之一者儲存倒一般目的暫存器中的指令的實體機器可讀取儲存媒體

Country Status (4)

Country Link
US (1) US10157061B2 (zh)
CN (1) CN104011670B (zh)
TW (1) TWI496079B (zh)
WO (1) WO2013095553A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
TWI617977B (zh) * 2014-12-17 2018-03-11 英特爾股份有限公司 用於執行自旋迴路跳位的裝置及方法
TWI740859B (zh) * 2015-12-30 2021-10-01 美商英特爾股份有限公司 用於跨步的載入(strided load)的系統、設備及方法

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5739055B2 (ja) 2011-04-01 2015-06-24 インテル コーポレイション ベクトルフレンドリ命令フォーマット及びその実行
WO2013095553A1 (en) 2011-12-22 2013-06-27 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US20130332701A1 (en) * 2011-12-23 2013-12-12 Jayashankar Bharadwaj Apparatus and method for selecting elements of a vector computation
US20140181427A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Compound Memory Operations in a Logic Layer of a Stacked Memory
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9645820B2 (en) * 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US20160179548A1 (en) * 2014-12-22 2016-06-23 Intel Corporation Instruction and logic to perform an inverse centrifuge operation
US9904548B2 (en) * 2014-12-22 2018-02-27 Intel Corporation Instruction and logic to perform a centrifuge operation
US10296334B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit gather
US10705841B2 (en) 2015-06-24 2020-07-07 International Business Machines Corporation Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation
US10620952B2 (en) 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US9875214B2 (en) * 2015-07-31 2018-01-23 Arm Limited Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers
US9996361B2 (en) 2015-12-23 2018-06-12 Intel Corporation Byte and nibble sort instructions that produce sorted destination register and destination index mapping
US20170192782A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Aggregate Gather and Stride
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10817802B2 (en) * 2016-05-07 2020-10-27 Intel Corporation Apparatus for hardware accelerated machine learning
US20170371662A1 (en) * 2016-06-23 2017-12-28 Intel Corporation Extension of register files for local processing of data in computing environments
US10678545B2 (en) * 2016-07-07 2020-06-09 Texas Instruments Incorporated Data processing apparatus having streaming engine with read and read/advance operand coding
GB2556886B (en) 2016-11-23 2019-05-15 Imagination Tech Ltd Encoding and decoding variable length instructions
US10459843B2 (en) * 2016-12-30 2019-10-29 Texas Instruments Incorporated Streaming engine with separately selectable element and group duplication
WO2018186763A1 (en) * 2017-04-06 2018-10-11 Intel Corporation Vector compress2 and expand2 instructions with two memory locations
US11269638B2 (en) * 2017-06-28 2022-03-08 Texas Instruments Incorporated Exposing valid byte lanes as vector predicates to CPU
US11989555B2 (en) * 2017-06-29 2024-05-21 Intel Corporation Instructions for remote atomic operations
US11182200B2 (en) 2017-06-29 2021-11-23 Texas Instruments Incorporated Streaming engine with short cut start instructions
US20190102192A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Apparatus and method for shifting and extracting packed data elements
US10496403B2 (en) * 2017-12-21 2019-12-03 Intel Corporation Apparatus and method for left-shifting packed quadwords and extracting packed doublewords
US20190196820A1 (en) * 2017-12-21 2019-06-27 Intel Corporation Apparatus and method for right shifting packed quadwords and extracting packed doublewords
US11144367B2 (en) 2019-02-08 2021-10-12 International Business Machines Corporation Write power optimization for hardware employing pipe-based duplicate register files
CN112083954B (zh) * 2019-06-13 2024-09-06 华夏芯(北京)通用处理器技术有限公司 一种gpu中显式独立掩码寄存器的掩码操作方法
CN114510271B (zh) * 2022-02-09 2023-08-15 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN115098165B (zh) * 2022-06-13 2023-09-08 昆仑芯(北京)科技有限公司 数据处理方法、装置、芯片、设备及介质

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57209570A (en) * 1981-06-19 1982-12-22 Fujitsu Ltd Vector processing device
JP2539357B2 (ja) 1985-03-15 1996-10-02 株式会社日立製作所 デ−タ処理装置
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
US4945479A (en) 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
JPH0724013B2 (ja) * 1986-09-10 1995-03-15 株式会社日立製作所 ベクトルプロセツサ
JPH04156613A (ja) 1990-10-20 1992-05-29 Fujitsu Ltd 命令バッファ装置
JP2956707B2 (ja) 1990-10-29 1999-10-04 富士通株式会社 情報処理装置
US5207132A (en) 1991-10-16 1993-05-04 Textron Inc. Elliptical lobed drive system
US5418973A (en) 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
JP3248992B2 (ja) 1993-07-13 2002-01-21 富士通株式会社 マルチプロセッサ
US5446912A (en) 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table
US5903769A (en) * 1997-03-31 1999-05-11 Sun Microsystems, Inc. Conditional vector processing
US6505290B1 (en) 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6189094B1 (en) 1998-05-27 2001-02-13 Arm Limited Recirculating register file
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
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
AU2743600A (en) 1999-01-28 2000-08-18 Ati International S.R.L. Executing programs for a first computer architecture on a computer of a second architecture
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6625724B1 (en) 2000-03-28 2003-09-23 Intel Corporation Method and apparatus to support an expanded register set
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
AU2003256870A1 (en) 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7734748B1 (en) 2003-10-03 2010-06-08 Nortel Networks Limited Method and apparatus for intelligent management of a network element
GB2409059B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US7493474B1 (en) 2004-11-10 2009-02-17 Altera Corporation Methods and apparatus for transforming, loading, and executing super-set instructions
US7430207B2 (en) * 2005-02-07 2008-09-30 Reti Corporation Preemptive weighted round robin scheduler
US20070074004A1 (en) * 2005-09-28 2007-03-29 Arc International (Uk) Limited Systems and methods for selectively decoupling a parallel extended instruction pipeline
US7457938B2 (en) 2005-09-30 2008-11-25 Intel Corporation Staggered execution stack for vector processing
US7627735B2 (en) 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US20070157030A1 (en) 2005-12-30 2007-07-05 Feghali Wajdi K Cryptographic system component
US9710269B2 (en) 2006-01-20 2017-07-18 Qualcomm Incorporated Early conditional selection of an operand
KR100813533B1 (ko) 2006-09-13 2008-03-17 주식회사 하이닉스반도체 반도체 메모리 장치 및 그 데이터 마스크 방법
US8572354B2 (en) 2006-09-28 2013-10-29 3Dlabs Inc., Ltd. Programmable logic unit and method for translating and processing instructions using interpretation registers
US20080100628A1 (en) * 2006-10-31 2008-05-01 International Business Machines Corporation Single Precision Vector Permute Immediate with "Word" Vector Write Mask
TWI351179B (en) * 2007-08-20 2011-10-21 Lite On Technology Corp Data processing method and computer system medium thereof
EP2602710A1 (en) 2007-11-05 2013-06-12 Aspen Acquisition Corporation Method of encoding register instruction fields
US20090172348A1 (en) 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US8667250B2 (en) 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US8681173B2 (en) 2007-12-31 2014-03-25 Intel Corporation Device, system, and method for improving processing efficiency by collectively applying operations
US8447962B2 (en) 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US8108614B2 (en) 2007-12-31 2012-01-31 Eric Sprangle Mechanism for effectively caching streaming and non-streaming data patterns
US7984273B2 (en) 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
GB2456775B (en) 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
JP5357475B2 (ja) 2008-09-09 2013-12-04 ルネサスエレクトロニクス株式会社 データプロセッサ
US8326904B2 (en) 2009-01-27 2012-12-04 International Business Machines Corporation Trigonometric summation vector execution unit
US8438367B2 (en) 2009-05-19 2013-05-07 Via Technologies, Inc. Instruction extraction through prefix accumulation
US8627042B2 (en) 2009-12-30 2014-01-07 International Business Machines Corporation Data parallel function call for determining if called routine is data parallel
US9141386B2 (en) 2010-09-24 2015-09-22 Intel Corporation Vector logical reduction operation implemented using swizzling on a semiconductor chip
US8667042B2 (en) 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US9092213B2 (en) 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
US8972698B2 (en) 2010-12-22 2015-03-03 Intel Corporation Vector conflict instructions
US20120185670A1 (en) 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
US20120254589A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
US20120254591A1 (en) 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
JP5739055B2 (ja) 2011-04-01 2015-06-24 インテル コーポレイション ベクトルフレンドリ命令フォーマット及びその実行
US20120254588A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
US20120254593A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for jumps using a mask register
US20120254592A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
WO2013095553A1 (en) 2011-12-22 2013-06-27 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
WO2013095657A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction and logic to provide vector blend and permute functionality

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
TWI617977B (zh) * 2014-12-17 2018-03-11 英特爾股份有限公司 用於執行自旋迴路跳位的裝置及方法
TWI740859B (zh) * 2015-12-30 2021-10-01 美商英特爾股份有限公司 用於跨步的載入(strided load)的系統、設備及方法

Also Published As

Publication number Publication date
US10157061B2 (en) 2018-12-18
US20140297991A1 (en) 2014-10-02
CN104011670A (zh) 2014-08-27
TWI496079B (zh) 2015-08-11
WO2013095553A1 (en) 2013-06-27
CN104011670B (zh) 2016-12-28

Similar Documents

Publication Publication Date Title
TWI496079B (zh) 電腦實作方法、處理器以及含有用於基於向量寫入遮罩之內容而將兩個純量常數之其中之一者儲存倒一般目的暫存器中的指令的實體機器可讀取儲存媒體
TWI502491B (zh) 用於將一表列索引值轉換成為遮罩值之方法、製造物品及處理器
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
CN104823156B (zh) 用于确定直方图的指令
TWI470544B (zh) 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法
TWI517042B (zh) 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及製品
TWI518588B (zh) 遮罩暫存器上的廣播運算技術
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
KR102508075B1 (ko) 인덱스 및 즉치로 벡터 치환을 수행하기 위한 방법 및 장치
JP6673574B2 (ja) ベクトルビットシャッフルを実行するための方法および装置
TWI502494B (zh) 用以執行絕對差之雙塊總數之方法,製品及裝置
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TWI628593B (zh) 用以履行向量位元反轉之方法及設備
TWI486872B (zh) 向量緊縮壓縮及重複之實施系統、設備和方法
TW201738733A (zh) 執行指令以排列遮罩的系統及方法
JP2017539014A (ja) ベクトルビット反転およびクロスを実行するための方法および装置
TWI637317B (zh) 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置
TWI559219B (zh) 用於選擇向量運算之元素的裝置及方法(二)
TW201643696A (zh) 用於熔合累加指令的設備和方法
TW201349106A (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TW201636828A (zh) 用以從4維座標計算4維z曲線指標的機器階層指令
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法

Legal Events

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