TWI536187B - 緊縮資料元件預測處理器、方法、系統及指令 - Google Patents

緊縮資料元件預測處理器、方法、系統及指令 Download PDF

Info

Publication number
TWI536187B
TWI536187B TW103121588A TW103121588A TWI536187B TW I536187 B TWI536187 B TW I536187B TW 103121588 A TW103121588 A TW 103121588A TW 103121588 A TW103121588 A TW 103121588A TW I536187 B TWI536187 B TW I536187B
Authority
TW
Taiwan
Prior art keywords
mask
data
processor
deflation
compact
Prior art date
Application number
TW103121588A
Other languages
English (en)
Other versions
TW201508521A (zh
Inventor
布瑞特L 托爾
巴福德M 蓋
羅納可 辛赫
米沙里 奈克
Original Assignee
英特爾公司
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 英特爾公司 filed Critical 英特爾公司
Publication of TW201508521A publication Critical patent/TW201508521A/zh
Application granted granted Critical
Publication of TWI536187B publication Critical patent/TWI536187B/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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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

Description

緊縮資料元件預測處理器、方法、系統及指令
在此描述之實施例大致關於處理器。更明確地,在此描述之實施例大致關於可以處理緊縮資料的處理器。
發明背景
許多處理器具有單一指令多重資料(SIMD)架構。於SIMD架構中,純量指令不僅於一資料元件或一對資料元件上運作,一緊縮資料指令、向量指令或SIMD指令可在多重資料元件或多重對資料元件上並行運作(例如:平行)。該處理器可具有平行執行硬體,響應於該緊縮資料指令以於多重資料元件上並行進行該多重運算(例如:平行)。
在SIMD架構中,多重資料元件可緊縮於一暫存器或諸如緊縮資料或向量資料的記憶體位置中。在緊縮資料中,該暫存器的位元或其他儲存位置可邏輯性地分割成為一序列的多重資料元件。該等資料元件的每一者可代表一個別資料件,其係連同通常具有相同尺寸的其他資料元件儲存在該暫存器或其他儲存位置中。例如,一128位元寬暫存器可具有兩個64位元寬緊縮資料元件、四個32位元寬緊縮資料元件、八個16位元寬緊縮資料元件、或十六個8位 元寬緊縮資料元件。該等緊縮資料元件的每一者通常代表一分離個別資料件(例如,一像素的顏色、一圖形座標等等),其可獨立於其他者而運算。
代表性地,一種緊縮資料指令、向量指令或SIMD 指令(例如:一緊縮加法指令)的類型可指明一單一緊縮資料運算(例如:加法)待於來自兩個來源緊縮資料運算元之全部對應資料元件對上進行,以垂直方式產生一目標或結果緊縮資料。該等來源緊縮資料運算元可為同樣尺寸、可含有具同樣寬度的資料元件,且因此可每一者含有同樣數量的資料元件。在兩個緊縮資料運算元中相同位元位置之源資料元件可代表對應資料元件對。緊縮資料運算可分別地進行或實質地獨立於對應源資料元件對的每一者,以產生結果資料元件的一匹配數字,且因此每一對相對應資料元件可具有一對應結果資料元件。典型地,用於此等一指令的結果資料元件係為相同順序且他們通常具有相同尺寸。
除了緊縮資料指令此範例類型,有各種其他類型的緊縮資料指令。例如,有一些僅具有一來源資料運算元。例如,一緊縮資料移位指令可獨立地將一單一來源緊縮資料的每一資料元件移位,以產生一結果緊縮資料。其他緊縮資料指令可運算於多於兩個源緊縮資料運算元之上。更進一步地,其他緊縮資料指令可於相同緊縮資料運算元內以一平行方式在資料元件上運行,而非以垂直方式(例如,在兩源緊縮資料運算元之間的對應資料元件上)。仍有其他緊縮資料指令可產生具有不同尺寸的一結果緊縮資料運算 元、具有不同尺寸的資料元件、及/或具有不同資料元件順序。
依據本發明之一實施例,係特地提出一種處理器,包含:一第一模式,其中該處理器係未用以使用緊縮資料運算遮罩;一第二模式,其中該處理器係用以使用緊縮資料運算遮罩;一解碼單元,其用以解碼用於在該第一模式中之一給定緊縮資料運算的一未遮罩緊縮資料指令,且用以解碼用於在該第二模式中之該給定緊縮資料運算的一遮罩版本的一遮罩緊縮資料指令,該等未遮罩及遮罩緊縮資料指令具有一相同的指令長度,該遮罩緊縮資料指令具有一或多個位元以指定一緊縮資料運算遮罩;以及一或多個執行單元耦接於該解碼單元,該一或多個執行單元響應於該解碼單元在該第一模式中解碼該未遮罩緊縮資料指令,而進行該給定緊縮資料運算,且該一或多個執行單元響應於該解碼單元在該第二模式中解碼該遮罩緊縮資料指令,而使用指定之該緊縮資料運算遮罩進行該給定緊縮資料運算之該遮罩版本。
100‧‧‧處理器
102‧‧‧指令集
104‧‧‧遮罩緊縮資料指令
106‧‧‧未遮罩緊縮資料指令
108‧‧‧緊縮資料暫存器
110‧‧‧緊縮資料運算遮罩暫存器
112‧‧‧分離專屬緊縮資料運算遮罩暫存器
114‧‧‧執行單元
200‧‧‧處理器
202A~N‧‧‧核心
204‧‧‧遮罩緊縮資料指令
206‧‧‧未遮罩緊縮資料指令
208‧‧‧緊縮資料暫存器
212‧‧‧緊縮資料運算遮罩
214‧‧‧執行單元
216‧‧‧指令解碼單元
218‧‧‧第一來源緊縮資料暫存器
220‧‧‧第二來源緊縮資料暫存器
222‧‧‧目的緊縮資料暫存器
312‧‧‧來源緊縮資料運算遮罩
318‧‧‧第一來源緊縮資料
320‧‧‧第二來源緊縮資料
322‧‧‧緊縮資料結果
326‧‧‧具合併的遮罩緊縮資料運算
412‧‧‧來源緊縮資料運算遮罩
418‧‧‧第一來源緊縮資料
420‧‧‧第二來源緊縮資料
422‧‧‧緊縮資料結果
426‧‧‧具歸零的遮罩緊縮資料運算
530‧‧‧方法
531‧‧‧方塊
532‧‧‧方塊
636‧‧‧表格
712‧‧‧緊縮資料運算遮罩暫存器
812‧‧‧緊縮資料運算遮罩暫存器
908‧‧‧緊縮資料暫存器
912‧‧‧緊縮資料運算遮罩暫存器
940‧‧‧第一觀點
941‧‧‧第二觀點
1008‧‧‧緊縮資料暫存器
1012-1、1012-2‧‧‧緊縮資料運算遮罩暫存器
1043‧‧‧第二觀點
1044‧‧‧第三觀點
1045‧‧‧第四觀點
1108、1108-2、1108-3‧‧‧緊縮資料
1112、1112-1、1112-2‧‧‧緊縮資料運算遮罩
1146‧‧‧64位元緊縮雙字格式
1147‧‧‧128位元緊縮雙字格式
1148‧‧‧256位元緊縮雙字格式
1249‧‧‧第一觀點
1250‧‧‧第二觀點
1300‧‧‧處理器管線
1302‧‧‧提取階段
1304‧‧‧長度解碼階段
1306‧‧‧解碼階段
1308‧‧‧分配階段
1310‧‧‧重新命名階段
1312‧‧‧排程階段
1314‧‧‧暫存器讀取/記憶體讀取階段
1316‧‧‧執行階段
1318‧‧‧回寫/記憶體寫入階段
1322‧‧‧例外處理階段
1324‧‧‧提交階段
1330‧‧‧前端單元
1332‧‧‧分支預測單元
1334‧‧‧指令快取記憶體單元
1336‧‧‧指令轉譯旁看緩衝器(TLB)
1338‧‧‧指令提取單元
1340‧‧‧解碼單元
1350‧‧‧執行引擎單元
1352‧‧‧重新命名/分配單元
1354‧‧‧報廢單元
1356‧‧‧排程單元
1358‧‧‧實體暫存器檔案單元
1360‧‧‧執行群集
1362‧‧‧執行單元
1364‧‧‧記憶體存取單元
1370‧‧‧記憶體單元
1372‧‧‧資料TLB單元
1374‧‧‧資料快取記憶體單元
1376‧‧‧L2快取記憶體單元
1390‧‧‧核心
1400‧‧‧指令解碼器1400
1402‧‧‧晶片上互聯網路
1404‧‧‧L2快取記憶體
1406‧‧‧L1快取記憶體
1406A‧‧‧L1資料快取記憶體
1408‧‧‧純量單元
1410‧‧‧向量單元
1412‧‧‧純量暫存器
1414‧‧‧向量暫存器
1420‧‧‧混寫單元
1422A/B‧‧‧數字轉換單元
1424‧‧‧複製單元
1426‧‧‧寫入遮罩暫存器
1428‧‧‧ALU
1500‧‧‧處理器
1502A~N‧‧‧核心
1506‧‧‧共享快取記憶體單元
1508‧‧‧特殊用途邏輯組件
1510‧‧‧系統代理
1512‧‧‧互連單元
1514‧‧‧積體記憶體控制器單元
1516‧‧‧匯流排控制器單元
1600‧‧‧系統1600
1610‧‧‧處理器
1615‧‧‧處理器
1620‧‧‧控制器集線器
1640‧‧‧記憶體
1645‧‧‧共處理器
1650‧‧‧輸入/輸出集線器(IOH)
1660‧‧‧輸入/輸出(I/O)裝置
1690‧‧‧圖形記憶體控制器集線器(GMCH)
1695‧‧‧連結
1700‧‧‧系統1700
1714‧‧‧I/O裝置
1715‧‧‧處理器
1716‧‧‧第一匯流排
1718‧‧‧匯流排橋接器
1720‧‧‧第二匯流排
1722‧‧‧鍵盤/滑鼠
1724‧‧‧音訊I/O
1727‧‧‧通訊裝置
1728‧‧‧儲存單元
1730‧‧‧指令碼與資料
1732‧‧‧記憶體
1734‧‧‧記憶體
1738‧‧‧共處理器
1750‧‧‧點對點互連件
1752‧‧‧P-P介面
1754‧‧‧P-P介面
1770‧‧‧第一處理器
1772‧‧‧積體記憶體控制器(IMC)單元/I/O控制邏輯組件(CL)
1776‧‧‧介面
1778‧‧‧介面
1780‧‧‧第二處理器
1782‧‧‧積體記憶體控制器(IMC)單元/I/O控制邏輯組件(CL)
1786‧‧‧介面
1788‧‧‧介面
1782‧‧‧積體記憶體控制器(IMC)單元
1790‧‧‧晶片組
1792‧‧‧介面I/F
1794‧‧‧介面
1796‧‧‧介面I/F
1798‧‧‧介面
1800‧‧‧系統
1814‧‧‧I/O裝置
1815‧‧‧傳統I/O裝置
1900‧‧‧單晶片系統
1902‧‧‧(多個)互連單元
1910‧‧‧應用處理器
1920‧‧‧共處理器
1930‧‧‧靜態隨機存取記憶體(SRAM)單元
1932‧‧‧直接記憶體存取(DMA)單元
1940‧‧‧顯示單元
2002‧‧‧高階程式語言
2004‧‧‧編譯器
2006‧‧‧二進位碼
2008‧‧‧指令集編譯器
2010‧‧‧指令集二進位碼
2012‧‧‧指令轉換器
2016‧‧‧指令集核心
藉由參照以下詳細說明及附加圖式本發明可以最佳地被理解,圖式係用來例示說明實施例。在圖式中:圖1為一處理器的一實施例的一方塊圖;圖2為一處理器的另一實施例的一方塊圖;圖3為具合併之一遮罩緊縮資料運算一範例實施 例的一方塊圖;圖4為具歸零之一遮罩緊縮資料運算一範例實施例的一方塊圖;圖5為用來處理一遮罩緊縮資料指令的一實施例的一種方法之一實施例的方塊流程圖;圖6為一表格例示說明緊縮資料遮罩位元的數量取決於緊縮資料寬度以及緊縮資料元件寬度;圖7為一組合適的緊縮資料運算遮罩暫存器之一範例實施例的一方塊圖;圖8為一圖式例示說明一緊縮資料運算遮罩暫存器的一範例實施例,且顯示緊縮資料運算遮罩位元取決於緊縮資料寬度以及資料元件寬度;圖9為一方塊圖例示說明一實施例,其中一相同的實體暫存器可邏輯地被檢視及/或如一緊縮資料暫存器或一緊縮資料運算遮罩暫存器任一者被存取;圖10為一方塊圖例示說明一實施例,其中一相同的實體暫存器可邏輯地被檢視及/或存取如一緊縮資料暫存器或儲存有複數緊縮資料運算遮罩的一緊縮資料運算遮罩暫存器任一者;圖11為一方塊圖例示說明一實施例,其中一緊縮資料運算遮罩的位元係被分佈於一緊縮資料的資料元件之間;圖12為一方塊圖例示說明一實施例,其中具有被分佈於一緊縮資料的資料元件之間之緊縮資料運算遮罩位 元的一組暫存器,可在不同觀點被檢視及/或存取如兩個或多個較小遮罩或一單一較大遮罩;圖13A為一方塊圖,例示說明根據發明之實施例的失序分發/執行管線、一示範性順序管線與一示範性暫存器重新命名兩者;圖13B為一方塊圖,例示說明根據發明之實施例之一順序架構核心的一範例性實施例以及將被包括在一處理器中之一失序分發/執行架構核心的一範例性暫存器重新命名兩者;圖14A為根據發明實施例之一單一處理器核心的一方塊圖,連同其與晶片上互聯網路之連結以及其層級2(L2)之局部子集快取記憶體;圖14B為根據本發明實施例之圖14A中的該處理器核心的部分放大圖;圖15為根據本發明實施例之一處理器之一方塊圖,該處理器可具有多於一個核心,可具有積體記憶體控制器以及可具有積體圖形;圖16顯示為根據本發明之一實施例的一系統之一方塊圖;圖17顯示為根據本發明實施例之一第一更精確範例系統的一方塊圖;圖18顯示為為根據本發明實施例之一第二更精確範例系統的一方塊圖;圖19顯示為根據本發明之一實施例之一SoC的 一方塊圖;圖20為根據發明實施例之一方塊圖,相反於使用一軟體指令轉換器以轉換於一來源指令集中之二進位指令至一目標指令集中的二進位指令。
較佳實施例之詳細說明
在此揭露者為用來陳述或在緊縮資料元件上遮罩運算的方法。在以下的描述中,提出許多特定的細節(例如特定方式之實施遮罩、特定遮罩長度、資料格式、處理器組態、微架構細節、運算序列等等)。然而,實施例可於不具有此等特定細節下而實施。在其他實例中,為避免模糊對此描述的理解,眾所皆知的電路、結構與技術未被詳細示出。
圖1為一處理器100的一實施例之一方塊圖。該處理器代表一指令處理設備,其係可操作以處理指令。在一些實施例中該處理器可為一通用用途處理器(例如通常用作為一桌上型電腦、筆記型電腦以及類似的電腦之一中央處理單元(CPU)的一通用微處理器)。另外,該處理器可為一特定用途處理器。合適的特定用途處理器之範例包括但不限定於網路處理器、通訊處理器、加密處理器、圖形處理器、協同處理器、嵌入式處理器、數位訊號處理器(DSPs)以及控制器(例如微控制器),僅提及一些範例。該處理器可為任何各種複合指令集計算(CISC)處理器,各種精簡指令集計算(RISC)處理器、各種極長指令字元(VLIW)處理器、 各種其等之混合或完全地其他類型的處理器。在各種實施例中,該處理器可代表一RISC處理器,其可使用預測或遮罩於緊縮資料運算。
該處理器具有一指令集102。該指令集的該等指令代表巨集指令、組合語言指令或提供致處理器以執行之機器階層指令,相較於微指令、微運算或其他自該指令集的該等指令所解碼或轉換的指令或控制訊號。在一些實施例中(例如,如在某些RISC處理器的狀況中),該等指令相對於具有一可變指令長度,可具有一大致固定的指令長度(例如全部或指少大部分指令可為32位元或一些其他長度)。
如顯示者,在一些實施例中,該指令集可選擇性地包括用於一或多個給定未遮罩緊縮資料運算之一或多個未遮罩緊縮資料指令106。如顯示者,該指令集亦包括用於一或多個給定遮罩緊縮資料運算的一或多個遮罩緊縮資料指令104。適合的遮罩與未遮罩緊縮資料指令/運算之一些例示性範例包括但不限定於遮罩與未遮罩緊縮附加指令/運算,遮罩與未遮罩緊縮減縮指令/運算,遮罩與未遮罩緊縮乘法指令/運算,遮罩與未遮罩緊縮位移指令/運算,遮罩與未遮罩緊縮旋轉指令/運算,遮罩與未遮罩緊縮比較指令/運算、遮罩與未遮罩邏輯OR指令/運算、遮罩與未遮罩邏輯AND指令/運算,遮罩與未遮罩往復指令/運算,遮罩與未遮罩緊縮平均指令/運算以及/或其他已知技術的遮罩與未遮罩緊縮算數比較指令/運算。
該處理器亦包括一組緊縮資料暫存器108。該緊縮資料暫存器通常代表晶粒上處理器儲存位置,每一者可操作以儲存緊縮資料、向量資料或SIMD資料。該緊縮資料暫存器可代表對於軟體及/或程式器及/或由指令集的指令所指定之暫存器為可見的暫存器,以識別運算元(例如,來源與目的運算元)。該等暫存器可使用眾所周知的技術且不限定於任何特定種類的電路,而以不同的方式實施於不同的微架構中。合適類型的暫存器之範例包括,但不限定於,專屬實體暫存器、使用暫存器重新命名之動態地分配實體暫存器以及其等之組合。
在一些實施例中,該處理器可選擇性地具有一組一或多個緊縮資料運算遮罩暫存器110,其係實施於緊縮資料暫存器108上,雖然此並非必須的。在一些實施例中,該處理器可選擇性地具有一組一或多個分離專屬緊縮資料運算遮罩暫存器112,其係分離於緊縮資料暫存器108。該緊縮資料運算遮罩暫存器110及/或該緊縮資料運算遮罩暫存器112可被使用來儲存緊縮資料運算遮罩。以範例的方式,該等遮罩緊縮資料指令可具有一或多個位元以指明一緊縮資料運算遮罩,例如,一緊縮資料運算遮罩暫存器112或一緊縮資料暫存器108。該緊縮資料運算遮罩在此亦可被稱為述語遮罩或簡單地遮罩。
該處理器亦包括一或多個執行單元114。該一或多個執行單元可操作以執行或處理該指令集102的指令(例如,該等遮罩緊縮資料指令104)。在一些實施例中,該執 行單元可包括用以執行或處理該等指令之特定邏輯(例如,特定積體電路或其他可能與韌體結合之硬體)。
在一些實施例中,該處理器可具有不同模式,其中遮罩係用於或非用於緊縮資料指令/運算,雖然此並非必須的。例如,該處理器可具有一第一模式,其中該處理器並未使用緊縮資料運算遮罩,以及一第二模式,其中該處理器係使用緊縮資料運算遮罩。以舉例的方式,該未遮罩緊縮資料指令可受讀取、解碼以及執行以進行遮罩緊縮資料運算,而不使用當在第一模式中之遮罩或緊縮資料運算遮罩。相對地,該遮罩緊縮資料指令可使用當在第二模式中之遮罩或緊縮資料運算遮罩,以受讀取、解碼以及執行以進行遮罩緊縮資料運算。該第一及第二模式可由該處理器(例如,一控制暫存器、組態暫存器等等)的一暫存器中之一或多個位元所指示。此等不同模式之使用可於RISC處理器中提供優點,使用一大致固定指令長度(例如,從大多至幾乎所有的指令具有諸如32位元的同樣長度)的處理器,具有一限定運算碼空間的處理器,以及類似者。通常,在此種處理器中可得運算碼的數量是不足以支持給定緊縮資料運算之未遮罩及遮罩版本兩者。藉由提供一不同模式予遮罩緊縮資料運算,附加指令可被包括以進行遮罩緊縮資料運算而不需要必要地增加運算碼的長度。其他實施例不限定於使用此等模式。
圖2為一處理器200的另一實施例的一方塊圖。如先前,該處理器可代表一通用處理器或特殊用途處理器, 且可為任何各種RISC、CISC、VLIW混合或其他類型的處理器。任何細節以及以上針對圖1之處理器的可選擇細節也可以選擇性地應用於圖2中的處理器。
該處理器200可接收一遮罩緊縮資料指令204。例如,該指令可接收自一指令提取單元、一指令佇列或類似者。該遮罩緊縮資料指令可代表一機器碼指令、組合語言指令、巨集指令、或該處理器的一指令集之控制訊號。任何先前提及類型的遮罩緊縮資料指令以及其他類型的遮罩緊縮資料指令皆適用。
所例示的處理器包括一指令解碼單元216。該指令解碼單元亦可被稱為一解碼單元或解碼器。該解碼單元可接收並解碼相對高階指令(例如,巨集指令機器碼指令、組合語言指令等等),且輸出一或多個相對低階指令或控制訊號(例如,微指令、微操作、微碼入口點等等),其反映、代表及/或由高階指令所導出。該一或多個低階指令或控制訊號可透過一或多個低階運算(例如,電路層或硬體層)實施高階指令。該解碼單元可使用各種不同的機制來實施,包括但不限定於微碼僅讀記憶體(ROMs)、檢查表、硬體實現、可程式邏輯陣列(PLAs)以及其他習知技藝所知的用以實施解碼單元的機制。
其他實施例中,可使用一指令模擬器、翻譯器、變形器、直譯器或其他指令轉換邏輯。各種不同類型的已知指令轉換邏輯可實施於軟體、硬體、韌體或其等之一組合。該指令轉換邏輯可將指令模擬、翻譯、變形、直譯或 者做其他轉換成為一或多個對應之導出指令或控制訊號。在一些實施例中,可使用指令轉換邏輯以及一解碼單元兩者。例如,指令轉換羅即可轉換一指令成為一或多個中介指令,且該解碼單元可解碼該一或多個中介指令成為由該處理器的積體電路所執行之一或多個較低階指令或控制訊號。該指令轉換邏輯可位於處理器之外(例如在一分離的晶片或者記憶體中)、在該處理器上或者一組合。
該處理器亦包括一組緊縮資料暫存器208。此等緊縮資料暫存器可類似於以上所描述的該等緊縮資料暫存器108。該遮罩緊縮資料指令204可明確地指明(例如,透過一或多個場或一組位元)或者否則指示(例如,明確地指示)一滴一來源緊縮資料(例如,一第一來源緊縮資料暫存器218)。取決於指令的類型,該遮罩緊縮資料指令可選擇性地明確地指明、或者否則指示一第二來源緊縮資料(例如,第二來源緊縮資料暫存器220)。在一些案例中,該遮罩緊縮資料可選擇性地指明、或否則指明一目的緊縮資料(例如一目的緊縮資料暫存器222)。在其他實施例中,一或多個此等緊縮資料運算元可儲存於一記憶體位置或者其他儲存位置中。更進一步地,在其他實施例中,來源緊縮資料儲存位置的一者可重複使用作為目的緊縮資料儲存位置。
在一些實施例中,該遮罩緊縮資料指令亦可指明或否則指示一來源緊縮資料運算遮罩212(例如一來源緊縮資料運算遮罩暫存器)。在所例示的實施例中,該來源緊縮資料運算遮罩212可代表一暫存器,其係分離於該緊縮資料 暫存器208。在另一實施例中,該來源緊縮資料運算遮罩實施於緊縮資料暫存器208上。
再次參照圖2,一執行單元214係耦接至該解碼單元216、係耦接至該緊縮資料暫存器208且係耦接至該緊縮資料運算遮罩212。在一些實施例中,該執行單元可包括一算數單元、一算數邏輯單元、一功能單元、用以接收解碼指令並進行運算之一單元或者類似者。該執行單元可響應於及/或作為該遮罩緊縮資料指令204(例如,響應於一或多個解碼或其他轉換指令或控制訊號,其等代表及/或係自該遮罩緊縮資料指令204導出)之結果,而可操作以進行一遮罩緊縮資料運算以及儲存一結果緊縮資料於該目的緊縮資料運算元或暫存器222中。該執行單元及/或該處理器可包括特定或特殊邏輯(例如,積體電路或可能與韌體結合之其他硬體及/或軟體),其係響應於該遮罩緊縮資料指令以進行遮罩緊縮資料運算。
在一些實施例中,該處理器亦可選擇性地接收一未遮罩緊縮資料指令206。該未遮罩緊縮資料指令可類似於先前所描述之遮罩緊縮資料指令204,除了其不需要指定或否則指明該緊縮資料運算遮罩、以及除了其並不導致該處理器使用遮罩。而是,一未遮罩緊縮資料運算係響應於該未遮罩緊縮資料指令而進行。如先前所描述者,在一些實施例中,該處理器可具有不同模式,其中遮罩係使用或係並未使用於緊縮資料指令/運算,雖然這並非必須的。例如,該未遮罩遮罩緊縮資料指令206可受解碼且執行以進行 一未遮罩遮罩緊縮資料運算,而不使用當於一第一模式中之遮罩或者一緊縮資料運算遮罩。相對地,該遮罩緊縮資料指令204可使用當在一第二模式中之緊縮資料運算遮罩212,以解碼及執行以進行一遮罩緊縮資料運算。代表性地,該第一及第二模式可由該處理器(例如,一控制暫存器、組態暫存器等等)的一暫存器中之一或多個位元所指示。此等不同模式之使用可於RISC處理器中提供優點,使用一大致固定指令長度(例如,從大多至幾乎所有的指令具有諸如32位元的同樣長度)的處理器,具有一限定運算碼空間的處理器,以及類似者。通常,在此種處理器中可得運算碼的數量是不足以支持給定緊縮資料運算之未遮罩及遮罩版本兩者。藉由提供一不同模式予遮罩緊縮資料運算,附加指令可被包括以進行遮罩緊縮資料運算,而不需要必要地增加運算碼的長度。其他實施例不限定於使用此等模式。
該緊縮資料運算遮罩可代表一預測運算元、或條件控制運算元、或條件向量運算控制運算元。該緊縮資料運算遮罩在此亦可被簡單地稱做一遮罩。不管相關連於遮罩緊縮資料指令的運算係將於該來源資料元件上進行及/或不管該運算將被儲存於緊縮資料結果中的結果,該遮罩可預測、條件性地控制或者遮罩。該遮罩可各包括多個遮罩元件、預測元件或條件控制元件。
在一些實施例中,該遮罩可操作以遮罩於預定結果資料元件粒度之運算。在一態樣中,該遮罩元件可被包括於一對一對應關係的結果資料元件(例如,可能有八個結 果資料元件以及八個對應遮罩元件)。每一不同遮罩元件可操作以遮罩一不同對應緊縮資料運算及/或遮罩遮罩一不同對應結果資料元件、分別地及/或大致上獨立於其他者。例如,不管該緊縮資料運算是否於一來源緊縮資料(或在兩個來源緊縮資料的一對對應資料元件上)之一對應資料元件上進行,及/或不管該緊縮資料運算之結果是否儲存在一對應結果資料元件中,一遮罩元件可操作以遮罩。
通常每一遮罩元件可為一單一位元。該單一位元可允許指明兩個不同可能性的其中一者。如一範例,每一位元可指明該運算係受進行或者並未進行的其中一者。作為另一範例,每一位元可指明儲存運算比對(versus)的一結果不儲存該運算的一結果。根據一可能的慣例,每一遮罩位元可具有一第一值(例如設定為二進位1)以允許一緊縮運算之一結果將儲存於一對應結果資料元件中,或可具有一第二值(例如設定為二進位0)以避免一緊縮運算之一結果儲存於一對應結果資料元件中。相對的慣例亦是可能的。在其他案例中,每一遮罩元件可具有兩個或更多位元(例如,以指明多於兩個不同的可能性)。
在一些實施例中,該運算不管對應遮罩位元或元件可選擇性地進行,但該運算的對應結果,取決於對應遮罩位元或元件的值,可能或可能不會儲存在該結果緊縮資料中。可替代地,在其他實施例中,若該對應遮罩位元或元件被屏蔽,該運算可選擇性地省略(亦即,不進行)。在一些實施例中,例外及/或違規可選擇性地被抑制或不因一屏 蔽元件上之一運算而被引起。在一些實施例中,對應至屏蔽資料元件的之記憶體錯誤可選擇性地被抑制或者不被引起。
為了避免模糊描述,已顯示並描述一相對簡單的處理器200。在其他實施例中,該設備可選擇性地包括處理器中之其他習知元件。此等元件的範例包括但不限定於一分支預測單元、一指令提取單元、指令與資料快取記憶體、指令與資料轉譯旁看緩衝器、預提取緩衝器、微指令佇列、微指令序列器、一暫存器重新命名單元、一指令排程單元、匯流排介面單元、第二或較高階快取記憶體、一報廢單元、包括在處理器中的其他元件、以及各種其等之組合。處理器中的元件字面上有許多不同的組合和配置,並且實施例不限於任何特定的組合或配置。實施例可以被包括在處理器中,其具有多核心、邏輯處理器、或執行引擎,其中至少一者具有執行邏輯,其可操作以執行在此揭露的一遮罩緊縮資料指令的一實施例。
圖3為一具合併的遮罩緊縮資料運算326之一範例實施例的一方塊圖。該緊縮資料運算可響應於一遮罩緊縮資料指令(例如指令104及/或204)或者作為其之結果而進行。該遮罩緊縮資料指令可指示一第一來源緊縮資料318以及一第二來源緊縮資料320。其他遮罩緊縮資料指令可僅指示一單一來源緊縮資料或者多於兩個來源緊縮資料。例示說明中,該第一與第二來源緊縮資料具有相同尺寸、包含同樣寬度的資料元件且因此每一者包含同樣數量的資料元 件,雖然此並非必須的。在該例示說明中,該第一與第二來源緊縮資料具有八個資料元件。作為一範例,該第一與第二來源緊縮資料可各為128位元寬度且可各包括八個16位元資料元件,雖然此並非必須的。於兩個來源緊縮資料中在相同相對位置(例如在相同的垂直位置)的該等來源資料元代表一對對應的資料元件。資料元件各具有一數值顯示於代表該資料元件的方塊中。舉例來說,該第一來源緊縮資料318具有,從右邊最低階位置至左邊最高階位置,數值「3、7、66、55、12、11、90、89」。
該指令亦指示一來源緊縮資料運算遮罩312。在此範例中,該遮罩包括八個遮罩元件、預測元件或條件控制元件,其在此範例中每一者為一單一位元。該等位元被包括在與在該第一與第二來源緊縮資料內的一對對應來源資料元件的一順序一對一對應關係。例如,該最低階遮罩位元(於右邊)對應至對應資料元件之對低順序對,最高階遮罩位元(於左邊)對應至對應資料元件之最高階對,以此類推。各遮罩位元允許在該對應對來源資料元件上進行緊縮資料運算,該對應對來源資料元件將被分離地且獨立地於其他者被預測或條件性地控制。
該範例性遮罩緊縮資料運算為遮罩緊縮資料加法運算,其根據該緊縮資料運算遮罩以條件性儲存來自於一緊縮資料結果322中之該第一與第二來源緊縮資料之對應對資料元件的總和。緊縮資料運算遮罩的該等八個遮罩位元的各者被設定(亦即,具有二進位值1)或者被清除(亦即, 具有二進位值0)。據例示的慣例,各遮罩位元係被分別設定(亦即1)或清除(亦即0),以允許或不允許在一隊應對緊縮資料元件上進行的該緊縮資料運算(在此加法的狀況)一結果,將被儲存在緊縮資料結果之一對應對資料元件中。該等設定位元(亦即1)代表未遮罩位元或元件,反之該等被清除位元(亦即0)代表遮罩位元或元件。在所例示的範例中,八個遮罩位元的數值從右邊最低階位置至左邊最高階位置為「1、1、0、1、0、1、1、0」。針對被設定(亦即1)的該等遮罩位元,一對應總和被儲存在對應結果資料元件中。在該例示中,總和被劃下底線。相反地,針對被清除(亦即0)的該等遮罩位元,在對應對來源資料元件上之緊縮資料運算的一結果不被儲存在對應結果資料元件中。反而,在所例示的範例中,來自該第二來源緊縮資料320的該對應對資料元件的值被合併儲存於對應結果資料元件中。此版本遮罩被稱為合併遮罩。應當理解的是,一相反的慣例也是可能的,其中的位元係被清除(亦即0),以允許該結果被儲存,或設定(亦即1)以不允許該等結果受儲存。
圖4為一具歸零的遮罩緊縮資料運算426一範例實施例的一方塊圖。該遮罩緊縮資料運算可響應於一遮罩緊縮資料指令(例如指令104及/或204)或作為其一結果而進行。此指令可指示一第一來源緊縮資料418、一第二來源緊縮資料420、以及一來源緊縮資料運算遮罩412,且一緊縮資料結果422可被儲存。具有歸零之遮罩緊縮資料運算係類似於具有合併的遮罩緊縮資料運算。為了避免模糊描述, 類似處將不再重複而將主要地提及差異處。
一個值得注意的差異是,當該對應遮罩位元被屏蔽或者歸零(例如清除為二進位0),不使用合併或儲存一來源緊縮資料之資料元件的值(例如在圖3中的該第二來源緊縮資料320)進入該對應結果資料元件,該對應結果資料元件將被歸零。例如,一結果緊縮資料元件的一結果之所有位元可被給定為零的一值。此被稱作為歸零遮罩。可替代地,亦可選擇性地使用除了零之外的其他預設值。
可以理解的是此等僅為一些合適的遮罩緊縮資料運算之例示性範例。在其他實施例中,除了加法,該運算可為乘法運算、比較運算、減法運算、平均運算、移位運算、旋轉運算等等。更進一步地,在其他實施例中,該運算可涉及一單一來源緊縮資料運算元、多於二個來源緊縮資料運算元、具有不同尺寸的來源緊縮資料運算元、具有不同尺寸的緊縮資料及/或資料元件、水平而非垂直運算等等。
在一些實施例中,圖3及/或圖4的運算可由圖1及/或圖2的處理器進行,及/或於圖1及/或圖2的處理器上進行。可替代地,圖3及/或圖4的運算可由類似或不同的處理器進行。更進一步地,圖1的處理器及/或圖2的處理器可相較於圖3及/或圖4的處理器,進行同樣的、類似、或不同運算。
圖5為用來處理一遮罩緊縮資料指令的一實施例的一種方法530之一實施例的方塊流程圖。在各種實施例中,該方法可由一處理器或其他指令處理設備進行及/或在處 理器或其他指令處理設備中進行。在一些實施例中,該方法可由圖1及/或圖2的處理器進行。可替代地,該方法可由一類似或不同的處理器進行。更進一步地,圖1及/或圖2的處理器可相較於圖5的處理器,進行同樣的、類似、或不同運算。
該方法包括於方塊531處接收該遮罩緊縮資料指 令。在各種態樣中,該指令可於處理器或其一部份處接收(例如,一提取單元、一解碼單元一指令佇列等等)。在各種態樣中,該指令可自一脫離晶片來源(例如,來自一主記憶體、一磁片、一互連件等等),或者來自一晶片上來源(例如,來自一指令快取記憶體)接收。該遮罩緊縮資料指令可指明或者指示具有一第一複數緊縮資料元件的一第一來源緊縮資料,可指明或者指示具有一第二複數緊縮資料元件的一第二來源緊縮資料,可指明或指示具有複數遮罩元件的一緊縮資料運算遮罩,以及可指明或指示一目的儲存位置。
一結果緊縮資料可響應於該遮罩緊縮資料指令 及/或作為其一結果,於方塊532處儲存在所指示的目的儲存位置。該結果緊縮資料包括複數個結果資料元件,其各對應至於一對應相對位置之一不同的遮罩元件。未由該對應遮罩元件屏蔽之結果資料元件包括來自該第一與第二來源緊縮資料且運行於一對應對來源緊縮資料元件的一結果緊縮資料運算。由該對應遮罩所屏蔽之結果資料元件包括一屏蔽值,諸如,例如,來自該第一與第二來源緊縮資料其中一者的一歸零值或者一合併值。
圖6為一表格636例示說明緊縮資料遮罩位元的 數量取決於緊縮資料寬度以及緊縮資料元件寬度。顯示64位元、128位元、256位元以及512位元的緊縮資料寬度。在其他實施例中,可使用此等寬度的一子集或超集合,或完全地可使用其他寬度(例如32位元、1024位元)。雖然其他寬度也是可能的,亦考量8位元位元組、16位元字、32位元雙字(dwords)或單精度浮點(SP)與64位元四倍字(Qwords)或雙倍精度浮點(DP)的緊縮資料寬度。
如所顯示者,當緊縮資料寬度為64位元時,當該 緊縮資料元件寬度為8位元,8位元可被用來遮罩,當該緊縮資料元件寬度為16位元,4位元可被用來遮罩,以及當緊縮資料元件寬度為32位元,2位元可被用來遮罩。如所顯示者,當緊縮資料寬度為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位元可被用來遮罩。在一些實施例中,可使用任何此等寬度之遮罩或者此等寬度之組合的遮罩。
圖7為一組合適的緊縮資料運算遮罩暫存器712 之一範例實施例的一方塊圖。該等緊縮資料運算遮罩暫存器各可用來儲存一緊縮資料運算遮罩。在一些實施例中,該緊縮資料運算遮罩暫存器可為一分離、專用架構暫存器組合。在所例示的實施例中,該等緊縮資料運算遮罩暫存器各為64位元寬。在替代實施例中,該等緊縮資料運算遮罩暫存器的寬度可小於64位元(例如,8位元、16位元、20位元、32位元等等)或者寬於64位元(例如,128位元)。在所例示的實施例中,該組包括八個緊縮資料運算遮罩暫存器係被標記為M0至M7。替代實施例可包括較少於八個(例如,一、二、三、四、五、六等等)或者多於八個(例如,十二、十六、二十、三十二等等)緊縮資料運算遮罩暫存器。以範例的方式,該等遮罩緊縮資料指令可使用三個位元(例如一3位元欄)以解碼或指明該等八個緊縮資料運算遮罩暫存器M0至M7的任何一者。在替代實施例中,當有較少或較多的緊縮資料運算遮罩暫存器,可分別使用較少或較多的位元。 該等緊縮資料運算遮罩暫存器可使用習知技術以不同方式實施,且不限定於任何已知特定的電路。合適的暫存器之範例包括但不限定於,專屬實體暫存器、使用暫存器重新命名之動態地分配實體暫存器以及其等之組合。
圖8為一圖式例示說明一緊縮資料運算遮罩暫存 器812的一範例實施例,且顯示用作為一緊縮資料運算遮罩的位元的數量及/或用於遮罩的位元數量取決於緊縮資料寬度以及資料元件寬度。該緊縮資料運算遮罩暫存器的例示範例實施例為64位元寬,然而可以替代使用更窄(例如16位元、8位元等等)或更寬的暫存器。取決於緊縮資料寬度以及資料元件寬度之組合,64位元或者僅為64位元的一子集可使用作為遮罩之緊縮資料運算遮罩。一般來說,當使用一單一、每個元件遮罩控制位元,在該緊縮資料運算遮罩暫存器中用來遮罩的位元的數量,等於由緊縮資料元件在位元之寬度所分割的緊縮資料運算元在位元的寬度。
顯示一些例示性範例。亦即,當該緊縮資料寬 度為128位元且該緊縮資料元件寬度為16位元時,那麼僅有最低階的8位元暫存器將受使用作為緊縮資料運算遮罩。當該緊縮資料寬度為128位元且該緊縮資料元件寬度為8位元時,那麼僅有最低階的16位元暫存器將受使用作為緊縮資料運算遮罩。當該緊縮資料寬度為256位元且該緊縮資料元件寬度為8位元時,那麼僅有最低階的32位元暫存器將受使用作為緊縮資料運算遮罩。當該緊縮資料寬度為512位元且該緊縮資料元件寬度為8位元時,那麼僅有最低階的64位元暫存器將受使用作為緊縮資料運算遮罩。根據所例示的實施例,一遮罩緊縮資料指令可僅使用暫存器的最低階數量或最不顯著位元,其為用於基於相關連於緊縮資料寬度與資料元件寬度的指令的緊縮資料運算遮罩。在所例示的實施例中,暫存器的最低階子集或部分係用於遮罩,雖然此 並非必須的。在替代實施例中,可選擇性地使用一最高階子集或一些其他子集。
圖9為一方塊圖例示說明一實施例,其中一相同 的實體暫存器可邏輯地被檢視及/或如一緊縮資料暫存器908或一緊縮資料運算遮罩暫存器912任一者被存取。在第一觀點940中,該暫存器可被檢視及/或如一緊縮資料暫存器908被存取。該例示暫存器為64位元寬。在例示中,作為一範例,四個16位元資料元件A0至A3係儲存在該64位元緊縮資料暫存器中。在其他實施例中,可使用較窄(例如32位元)或較寬(例如128位元、256位元等等)暫存器。更進一步地,在其他實施例中,較窄(例如8位元)或較寬(例如32位元、64位元等等)資料元件可如緊縮資料被儲存在該暫存器中。
在一第二觀點941中,相同的暫存器可被如緊縮 資料運算遮罩暫存器912檢視及/或存取,其係可操作以儲存一緊縮資料運算遮罩。在該例示中,一32位元緊縮資料運算遮罩M0係儲存在該暫存器的該最低階32位元(亦即,位元[31:0])。該等32位元各可代表一遮罩元件或用來預測之元件。所有此等遮罩位元為連續或鄰近於彼此。該暫存器之一剩餘最顯著32位元(亦即位元[63:32])並未用於遮罩。此等位元可代表隨意值(don’t care value*),例如全為零、全為一、簡單地被忽略的值、任何可能的值等等。在其他實施例中,較窄(例如8位元、16位元等等)或較寬(例如64位元等等)的遮罩亦可用於遮罩,或僅有該等位元的子集被用於 遮罩。所有在該暫存器中的位元可以用於遮罩,或僅有該等位元的子集被用於遮罩。在例示的範例中,該等位元的最低階子集係被用於遮罩。可替代地,該等位元的最高階子集或其他子集可被用於遮罩。
圖10為一方塊圖例示說明一實施例,其中一相同 的實體暫存器可邏輯地被檢視及/或存取如一緊縮資料暫存器1008或儲存有多個(亦即兩個或多個)緊縮資料運算遮罩暫存器1012的一緊縮資料運算遮罩暫存器任一者。在一第一觀點1042中,該暫存器可被檢視及/或如一緊縮資料暫存器1008被存取。該例示暫存器為64位元寬。在例示中,作為一範例,四個16位元資料元件A0至A3係儲存在該64位元緊縮資料暫存器中。在其他實施例中,可使用較窄(例如32位元)或較寬(例如128位元、256位元等等)暫存器。更進一步地,在其他實施例中,較窄(例如8位元)或較寬(例如32位元、64位元等等)資料元件可如緊縮資料被儲存在該暫存器中。
在一些實施例中,亦可有一或多個其他觀點,其 中相同的暫存器可被檢視及/或如儲存有多個(亦即兩個或多個)緊縮資料運算遮罩的一緊縮資料運算遮罩暫存器1012被存取。在該例示實施例中,有一第二觀點1043、一第三觀點1044以及一第四觀點1045。第二至第四觀點各具有不同數量的遮罩及不同遮罩尺寸。在其他實施例中,可能有少至一單一觀點,除了第一觀點之外,其中該相同的暫存器可被邏輯地檢視及/或如儲存有多個緊縮資料運算 遮罩的一緊縮資料運算遮罩暫存器1012被存取。
在該第二觀點1043中,八個不同的8位元遮罩M0至M7被儲存在相同緊縮資料運算遮罩暫存器1012-1。例如,一第一遮罩M0被儲存在該暫存器的最低階8位元(亦即位元[7:0]),一第二遮罩M1被儲存在鄰近該暫存器的最低階8位元(亦即位元[15:8])以此類推。在該第三觀點1044中,四個不同的16位元遮罩M0至M3被儲存在相同緊縮資料運算遮罩暫存器1012-2。例如,一第一遮罩M0被儲存在該暫存器的最低階16位元(亦即位元[15:0]),一第二遮罩M1被儲存在鄰近該暫存器的最低階16位元(亦即位元[31:16])以此類推。在該第四觀點1045中,兩個不同的32位元遮罩M0至M1被儲存在相同緊縮資料運算遮罩暫存器1012-3。例如,一第一遮罩M0被儲存在該暫存器的最低階32位元(亦即位元[31:0]),一第二遮罩M1被儲存在鄰近該暫存器的最低階32位元(亦即位元[64:32])。此等僅為一些遮罩的範例。在其他實施例中,可使用較窄(例如兩位元、四位元等等)或較寬(例如64位元)的遮罩。
在一些實施例中針對該等第二至第四觀點各者,該等遮罩各可用於一分離或不同的遮罩緊縮資料運算。例如,一遮罩M0可由一第一遮罩緊縮資料指令所指示,且可用於遮罩一對應緊縮資料運算,另一遮罩M1可由一不同的遮罩緊縮資料指令所指示,且可用於遮罩一不同對應緊縮資料運算,等等。各遮罩可包括連續/相鄰遮罩位元。如先前所描述者,在該遮罩緊縮資料運算中,各位元可對應至 一或多個不同緊縮資料元件(例如一對對應緊縮資料元件)。
在例示中,雖然並非必須的,暫存器的整個寬度(亦即,在此範例中64位元)係用於儲存多個遮罩。在其他實施例中,僅有該暫存器的一子集被用來儲存該等多數遮罩。例如,僅四個8位元遮罩可儲存於一64位元暫存器的最低階32位元中,四個8位元遮罩可儲存於一128位元暫存器的最低階32位元中,等等。位元並未用於遮罩者可具有隨意值。
圖11為一方塊圖例示說明一實施例,其中一緊縮資料運算遮罩1112的位元係被分佈於一緊縮資料1108的資料元件之間。此概念透過數個32位元雙字(dwod)格式範例所例示。一64位元緊縮雙字格式1146係64位元寬且包括一緊縮資料1108-1的兩個32位元雙字(dword)資料元件。該等兩個32位元雙字資料元件在例示中係被標示為從最低至最顯著位元位置如DWOORD0至DWORD1。DWOORD0係儲存在位元[31:0]且DWORD1係儲存在位元[63:32]。該等雙字資料元件各者的一最顯著位元代表一緊縮資料運算遮罩1112-1的一遮罩位元,其係用於遮罩一緊縮資料運算。特別是在此格式中,位元[31]與位元[63]為遮罩位元且此等遮罩元件可集體地代表一緊縮資料運算遮罩M0 1112-1。
一128位元緊縮雙字格式1147係128位元寬且包括一緊縮資料1108-2的四個32位元雙字(dword)資料元件。該等四個32位元雙字資料元件在例示中係被標示為從最低至最顯著位元位置如DWOORD0至DWORD3。該等雙字資 料元件各者的一最顯著位元代表一緊縮資料運算遮罩1112-2的一遮罩位元,其係用於遮罩一緊縮資料運算。特別是在此格式中,位元[31]、位元[63]、位元[95]以及位元[127]為遮罩位元且此等遮罩元件可集體地代表一緊縮資料運算遮罩M0 1112-2。
一256位元緊縮雙字格式1148係256位元寬且包括一緊縮資料1108-3的八個32位元雙字(dword)資料元件。該等八個32位元雙字資料元件在例示中係被標示為從最低至最顯著位元位置如DWOORD0至DWORD7。該等雙字資料元件各者的一最顯著位元代表一緊縮資料運算遮罩1112-3的一遮罩位元,其係用於遮罩一緊縮資料運算。特別是在此格式中,位元[31]、位元[63]、位元[95]、位元[127]、位元[159]、位元[191]、位元[223]以及位元[255]為遮罩位元且此等遮罩元件可集體地代表一緊縮資料運算遮罩M01112-3。
在一些案例中,該等遮罩可實施於運算元中,其與涉及遮罩緊縮資料運算元的緊縮資料運算元具有相同尺寸,雖然在許多案例中遮罩位元的總數量可等於資料元件的總數量。在此等範例中,各資料元件的最顯著位元代表該遮罩位元。在其他實施例中,在個資料元件中的另一位元可代表該遮罩位元(例如,該最不顯著位元,等等)。
可以理解的是此等僅為合適的緊縮資料格式的一些範例。較窄(例如32位元)或較寬(例如512位元)的緊縮資料格式亦為合適的。更進一步地,任何此等緊縮資料格 式資料元件窄於32位元(例如8位元位元組、16位元字,等等)或者寬於32位元(64位元四倍字、64位元雙倍精度浮點,等等)亦為合適的。相較於所顯示之範例32位元雙字格式,該緊縮8位元位元組格式可具有四倍資料元件以及對應遮罩元件。如所顯示之範例32位元雙字格式,該緊縮16位元字格式可具有兩倍資料元件以及對應遮罩元件。如所顯示之範例32位元雙字格式,該緊縮64位元四倍字格式可具有一半的資料元件以及對應遮罩元件。作為一範例,一128位元緊縮8位元位元組格式可具有十六個緊縮8位元位元組資料元件,具有各位元組之最顯著位元,其代表一不同遮罩位元且所有十六個位元可集體地代表一緊縮資料運算遮罩。一般來說,緊縮資料元件的數量以及對應遮罩元件在位元的尺寸上,可等於由緊縮資料元件在位元所分割的緊縮資料在位元的寬度。
圖12為一方塊圖例示說明一實施例,其中具有被分佈於緊縮資料的資料元件之間之緊縮資料運算遮罩位元的一組暫存器,可在不同觀點被檢視或存取如兩個或多個較小遮罩或一單一較大遮罩。在一第一觀點1249中,該組兩暫存器(例如,兩個64位元實體暫存器)係邏輯地被檢視或存取如被標記為X0至X1的兩個64位元緊縮資料暫存器。該等暫存器X0至X1可為由一指令集的指令所指明以識別運算元。該等兩個緊縮資料暫存器X0至X1個可操作以儲存一不同的64位元緊縮資料運算元。例如,在例示的實施例中,該64位元暫存器X0係用於儲存具有兩個32位元資料元件 A0至A1的一第一緊縮資料運算元,且該64位元暫存器X1係用於儲存具有兩個32位元資料元件B0至B1的一第二緊縮資料運算元。在此等緊縮資料運算元中各該等緊縮資料元件可具有一對應遮罩位元。例如,在例示的實施例中,各32位元資料元件之最顯著位元代表一遮罩位元。在其他實施例中,較窄或較寬資料元件尺寸亦可替代使用及/或其他除了最顯著位元的位元之外可用做為遮罩位元(例如,在各資料元件內最不顯著位元或任何其他所欲位元)。在例示的實施例中,針對該緊縮資料暫存器X0,一最低階32位元資料元件具有一遮罩位元M0a,且一最高階32位元資料元件具有一遮罩位元M0b。該等遮罩位元M0a以及M0b代表一緊縮資料運算遮罩M0。類似地,針對該緊縮資料暫存器X1,一最低階32位元資料元件具有一遮罩位元M1a,且一最高階32位元資料元件具有一遮罩位元M1b。該等遮罩位元M1a以及M1b代表一緊縮資料運算遮罩M1。在此第一觀點中,在該等兩個64位元暫存器X0至X1(亦即,M0a、M0b、M1a以及M1b)中的該等遮罩位元係邏輯地被檢視為兩個不同的緊縮資料運算遮罩(例如,針對不同緊縮資料運算可被用作為不同的遮罩緊縮資料指令)。
在一第二觀點1250中,兩個暫存器(例如兩個64 位元實體暫存器)之相同組係邏輯性地如一單一128位元緊縮資料暫存器Y0檢視或存取。該暫存器Y0可為由一指令集的指令所指明的一暫存器以識別運算元。在該第二觀點1250中,該128位元緊縮資料暫存器Y0的最低階64位元(亦 即,位元63:0)映射或者對應至該64位元暫存器X0,而該128位元緊縮資料暫存器Y0的最高階64位元(亦即,位元127:64)映射或者對應至該64位元暫存器X1。多個(在此案例為二)較小(在此案例為64位元)暫存器係邏輯地組合或群集以形成一單一較大(在此案例為128位元)暫存器。該緊縮資料暫存器Y0可操作以儲存具有四個32位元資料元件A0至A3的一128位元緊縮資料運算元。該等緊縮資料元件各可具有一對應遮罩位元。例如,在例示的實施例中,各32位元資料元件之最顯著位元代表一遮罩位元。在其他實施例中,較窄或較寬資料元件尺寸亦可替代使用及/或其他除了最顯著位元的位元之外可用做為遮罩位元(例如,在各資料元件內最不顯著位元或任何其他所欲位元)。在例示的範例實施例中,最低階32位元資料元件A0具有一遮罩位元M0a,32位元資料元件A1具有一遮罩位元M0b,32位元資料元件A2具有一遮罩位元M0c,且最高階32位元資料元件A3具有一遮罩位元M0d。該等遮罩位元M0a、M0b、M0c以及M0d代表一緊縮資料運算遮罩M0。在此第二觀點中,在該等128位元暫存器Y0(亦即,M0a、M0b、M0c以及M0d)中的該等遮罩位元係邏輯地被檢視為一個單一緊縮資料運算遮罩(例如,針對相同單一緊縮資料運算可被用作為相同的遮罩緊縮資料指令)。
在所例示的實施例中有兩個不同觀點。在其他實 施例中可有三個或更多不同觀點。例如,一第三觀點可檢視四個64位元暫存器X0至X3作為一單一256位元暫存器Z0。 在各種實施例中,用以實施該等觀點的實際實體暫存器可為32位元暫存器、64位元暫存器、或128位元暫存器,然而本發明的範圍並非如此限制。可使用相較於64位元與128位元較寬或較窄邏輯暫存器。在例示的實施例中,使用相鄰或接續暫存器,然而此並非必須的。在其他實施例中,可組合非相鄰暫存器(例如,在不同行(bank)中非相鄰、交替暫存器,等等)。
如圖9至12所顯示,在一些實施例中,一組緊縮 資料暫存器可用做為遮罩暫存器。在一些實施例中,僅有緊縮資料暫存器總數量的一子集被用作為遮罩暫存器。例如在一特定實施例中,一較大集合的緊縮資料暫存器中僅有八個緊縮資料暫存器可使用圖9至12所顯示的方式其中一者,以用於遮罩。有利地,此可允許一給定之一暫存器被指明為一或多個緊縮資料運算遮罩的一來源,具有較少位元需要針對規格(例如,在八個暫存器的狀況中為三個位元)。在一些實施例中,在一組位元中用以指明一遮暫存器的一給定或預定值可用以使遮罩失能,因此在不需要時藉由避免不必要的預測而可達成增加效能。
範例核心架構、處理器及電腦架構
針對不同用途即在不同處理器中,處理器核心可以不同的方式實施。舉例而言,該等核心的實施可包括1)意欲用於通用計算之一通用用途順序核心;2)意欲用於通用計算之一通用用途失序核心;3)主要地意欲用於圖形及/或科學(通量)計算之一特殊用途核心。不同處理器的實施可 包括1)包括意欲用於通用計算之一或多個通用用途順序核心及/或意欲用於通用用途計算之一或多個通用用途失序核心的一CPU;2)包括主要地意欲用於圖形及/或科學(通量)之一或多個特殊用途核心的一共處理器。此等不同處理器導致不同的計算系統架構,其可包括:1)來自該CPU的一分離晶片上的共處理器;2)如一CPU在同一封裝中的分離晶片上的共處理器;3)如一CPU在同一晶片上的共處理器(在此情況下,此等一共處理器有時被稱為特殊用途邏輯組件,諸如積體圖形及/或科學(通量)邏輯組件,或者如特殊用途核心);以及4)一系統單晶片,其可包括在所描述CPU的相同的晶片(有時被稱為(多個)應用程序核心或(多個)應用處理器),上述共處理器,以及其他功能。接下來描述範例性核心架構,接著是範例性處理器和計算架構的描述。
範例性核心架構 順序以及失序核心方塊圖
圖13A為一方塊圖,例示說明根據發明之實施例的失序分發/執行管線、一示範性順序管線與一示範性暫存器重新命名兩者。圖13B為一方塊圖,例示說明根據發明之實施例之一順序架構核心的一範例性實施例,以及將被包括在一處理器中之一失序分發/執行架構核心的一範例性暫存器重新命名兩者。在圖13A至B中的實線方框例示該順序管線以及順序核心,而選擇性附加虛線方框例示說明暫存器重新命名、失序的分發/執行管線和核心。由於順序態樣是失序態樣的一個子集,將會描述失序態樣。
在圖13A中,一處理器管線1300包括一提取階段 1302、一長度解碼階段1304、一解碼階段1306、一分配階段1308、一重新命名階段1310、一排程(亦稱做分派或發行)階段1312、一暫存器讀取/記憶體讀取階段1314、一執行階段1316、一寫回/記憶體寫入階段1318、一例外處理階段1322、以及一提交階段1324。
圖13B顯示處理器核心1390包括耦接至一執行 引擎單元1350的一前端單元1330,以及兩者皆耦接至一記憶體單元1370。該核心1390可為一精簡指令集計算(RISC)核心、一複合指令集計算(CISC)核心、一極長指令字元(VLIW)核心或一混合或替代核心種類。作為另外一種選擇,該核心1390可為一特定用途核心,諸如,例如一網路或通訊核心、壓縮引擎、共處理器核心、通用用途計算圖形處理器單元(GPGPU)核心、圖形核心或類似者。
前端單元1330包括耦接至一指令快取記憶體單 元1334的一分支預測單元1332,該指令快取記憶體單元1334係耦接至一指令轉譯旁看緩衝器(TLB)1336,其係耦接至一指令提取單元1338,指令提取單元1338係耦接至一解碼單元1340。該解碼單元1340(或解碼器)可解碼指令且產生作為一輸出一或多個微運算、微碼入口點、微指令其他指令或其他控制訊號,其係自原始指令解碼或其可反應或由原始指令所導出。該解碼單元1340可使用各種不同機制實施。合適的機制的範例包括但不限定於,檢查表、硬體實現、可程式邏輯陣列(PLAs)、微碼僅讀記憶體(ROMs)等等。 再一實施例終,該核心1390包括一微碼ROM或儲存用於特定巨集指令之微碼的其他媒體(例如在該解碼單元1340或其他於前端單元1330中者)。該解碼單元1340係耦接至在該執行引擎單元1350中的一重新命名/分配單元1352。
該執行引擎單元1350包括耦接至一報廢單元 1354以及一組一或多個排程單元1356的重新命名/分配單元1352。該排程單元1356代表任何數量的不同排程器,包括保留、中央指令視窗等等。該(等)排程單元1356係耦接至該實體暫存器檔案單元1358。每個實體暫存器檔案單元1358表示一或多個實體暫存檔案,其不同者儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,一指令指標,其為下一個將被執行指令的位址),等等。在一個實施例中,實體暫存器檔案單元1358包括一個向量暫存器單元、一寫入遮罩暫存器單元、和一個純量暫存器單元。此等暫存器單元可提供架構上的向量暫存器、向量遮罩暫存器和通用用途暫存器。實體暫存器檔案單位1358是由報廢單位1354重疊以例示說明各種方式,其中暫存器重新命名和失序執行可以實施(例如,使用重排序緩衝區和報廢註冊檔案;使用未來檔案、歷史緩衝區、以及報廢暫存器檔案;使用暫存器映射和暫存器池等)。報廢單元1354和實體暫存器檔案單元1358係耦接至執行群集1360。執行群集1360包括一組一或多個執行單元1362及一組一或多個的記憶體存取單元1364。執行單元1362可以進行各種運算(例如,位移、加、 減、乘)和在各種類型的數據上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。而一些實施例可以包括一些專用於特定功能或一組功能的執行單元,其它實施例可以只包括一個執行單元或多個執行單元,其全部進行的所有功能。排程單元1356,實體暫存器檔案單元1358,以及執行群集1360係顯示為可能是複數,因為特定實施例中針對特定類型的資料/運算,產生分離管線(例如,一純量整數管線、一純量浮點/整數緊縮/緊縮浮點/整數向量/向量浮點管線,及/或一記憶體存取管線,其各具有自己的排程單元、實體暫存器檔案單位,及/或執行群集,且在一分離的記憶體存取管線的情況下,特定實施例中係實現,其中只有此管道的執行群集具有記憶體存取單元1364)。還應當理解的是,其中分離的管線係被使用,一或多個此等管線可為失序分發/執行,而剩下的為順序分發/執行。
一組記憶體存取單元1364係被耦接至該記憶體單元1370,其包括耦接到層級2(L2)快取記憶體單元1376之耦接至一資料快取記憶體單元1374的一資料TLB單元1372。在一個示例性實施例中,該記憶體存取單元1364可包括一負載單元、一儲存位址單元,和一儲存資料單元,其各耦接至在儲存單元1370中的該資料TLB單元1372。該指令快取記憶體單元1334進一步耦接到在儲存單元1370中的一層級2(L2)快取記憶體單元1376。該L2快取記憶體單元1376係被耦接至快取記憶體的一個或多個其它級,並最終耦接至一主記憶體。
以範例的方式,範例性暫存器重新命名、失序的 分發/執行核心架構可以實現該管線1300如下:1)指令提取1338進行提取和長度解碼階段1302和1304;2)解碼單元1340進行解碼階段1306;3)重新命名/分配器單元1352進行該分配階段1308和重新命名階段1310;4)該排程器1356進行排程階段1312;5)實體暫存器檔案單位1358和記憶體單元1370進行暫存器讀取/記憶體讀取階段1314;該執行群集1360進行執行階段1316;6)儲存單元1370和實體暫存器檔案單元1358進行寫回入/記憶體寫入階段1318;7)可能涉及異常時的處理階段1322的各種單元;8)報廢單元1354和實體暫存器檔案單元1358進行提交階段1324。
該核心1390可以支持一個或多個指令集(例如, x86指令集(與已經添加了新的版本)的一些延伸,加利福尼亞州桑尼維爾的MIPS科技的MIPS指令集、加利福尼亞州桑尼維爾的ARM持有的ARM指令集(具有諸如NEON的選則性的附加延伸),包括在此所描述的指令。在一個實施例中,該核心1390包括邏輯組件,用以支持緊縮資料指令集延伸(例如,AVX1,AVX2),因而允許由許多待進行使用緊縮資料之多媒體應用程序所使用之運算。
應當理解的是,核心可以支持多線程(執行兩或 多個平行運算集或線程),並且可以以多種方式地進行,包括時間片多線程、同步多線程(在此一單一的實體核心提供了針對各實體核心係同時多線程之線程的一邏輯核心),或其等之組合(例如,時間片提取及解碼和之後的同時多線程, 諸如Intel®超線程技術)。
雖然暫存器重新命名是描述於失序執行的上下 文中,應當理解的是,暫存器重新命名可以使用於順序的架構中。雖然所例示的處理器的實施例亦包括分離指令和資料快取記憶體單元1334/1374以及一個共享L2快取記憶體單元1376,替代實施例可具有用於指令和資料,諸如,例如級別1(L1)的內部快取記憶體、或者內部快取記憶體中之多階層兩者的一單一內部快取記憶體。在一些實施例中,該系統可以包括一內部快取記憶體和一個外部快取記憶體,其係於核心及/或處理器之一組合的外部。可替代地,所有的快取記憶體可以於核心及/或處理器外部。
特定範例性順序核心架構
圖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快取記憶體1404之自身子集。由處理器核心所讀取的資料被儲存在它的L2快取記憶體1404,並且可以被快速地存取,平行於其它處理器核心存取他們自己的局部L2快取記憶體子集。 由一處理器核心所寫入的資料被儲存在其自己的L2快取記憶體子集1404,且如果有必要,其由其他子集所沖洗。該環形網路確保共享資料的一致性。環形網路是雙向的,以允許代理者如處理器核心、L2快取記憶體和其它邏輯方塊,以與彼此在晶片內通訊。每個環的資料路徑是每個方向1012位元寬。
圖14B為根據本發明實施例之圖14A中的該處理 器核心的一部分放大圖。圖14B包括一L1快取記憶體1404中一部分的L1資料快取記憶體1406A,以及更詳細的關於向量單元1410和向量暫存器1414。具體地,該向量單元1410是一個16寬的向量處理單元(VPU)(參見16寬ALU1428),其執行一個或多個整數、單精度浮點和雙精度浮點指令。該 VPU在記憶體輸入上以混寫單元1420支持混寫該暫存器輸入、以數字轉換單元1422A至B轉換數值,以及以複製單元1424複製。寫入遮罩暫存器1426允許預測結果向量寫入。
具積體控制器和圖形的處理器
圖15為根據本發明實施例之一處理器1500之一方塊圖,該處理器可具有多於一個核心,可具有積體記憶體控制器以及可具有積體圖形。在圖15中的實線方框例示具一單一核心1502A的一處理器1500、一系統代理1510、一組一或多個匯流排控制器單元1516,而選擇性附加虛線方框例示說明具有多核心1502A至N的替代處理器1500,在該系統代理1510中的一組一或多個積體記憶體控制器單元1514,以及特殊用途邏輯組件1508。
因此,處理器1500的不同實施方式可包括:1)具特殊用途邏輯組件1508之一CPU,被積體圖形化及/或科學(通量)邏輯組件(其可以包括一或多個核心),且核心1502A至N是一或多個通用用途核心(例如,通用的順序核心、通用失序核心、此兩者的組合);2)具核心1502A至N的一共處理器,係一個大數目的特殊用途核心,主要意欲針對圖形化及/或科學(通量);與3)具核心1502A至N的一共處理器,係一個大數目的通用用途順序核心。因此,該處理器1500可以是通用處理器、共處理器或專用用途處理器,諸如,例如,一網路或通訓處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、一個高通量多積體核心(MIC)共處理器(包括30個或更多個核心)、嵌入式處理器或類似物。 該處理器可以在一個或多個晶片上實現。該處理器1500可以是以下所述者的一個部分及/或可以使用任何數量的處理技術,諸如,例如,BiCMOS、CMOS或NMOS,實施於一或多個基板上。
該記憶體階層包括在核心內之快取記憶體的一 個或多個階層,一組或一或多個共享快取記憶體單元1506,與耦接至該組積體記憶體控制器單元1514的外部記憶體(未顯示)。該組共享快取記憶體單元1506可包括一個或多個中層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4),或快取記憶體的其它層級,末級快取記憶體(LLC),及/或它們的組合。而在一個實施例中一基於環的互連單元1512將該積體圖形邏輯組件1508、該組共享快取記憶體單元1506、以及該系統代理單元1510/積體記憶體控制器單元1514互連,替代實施例可以使用任何數量的已知用於互連這些單元的技術。在一個實施例中,在一或多個快取記憶體單元1506和核心1502A至N之間保持一致性。
在一些實施例中,一或多個核心1502A至N能夠 多線程。該系統代理1510包括該等組件協調和運算核心1502A至N。系統代理單元1510可以包括例如一功率控制單元(PCU)和一顯示單元。該PCU可以是或包括需要調節核心1502A至N和積體圖形邏輯組件1508的邏輯組件與組件。該顯示單元是用於驅動一或多個外部連接的顯示器。
該等核心1502A至N在指令集架構方面可以是均相或非均相的;亦即二或多個核心1502A至N可執行相同的 指令集,而其他者可僅能執行該指令集的一子集或不同的指令集。
範例性的計算機架構
圖16至19是範例性計算機架構的方塊圖。其他已知的系統的設計和組態針對膝上型電腦、桌上型電腦、手持式電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜媒體播放器、手持式裝置,以及各種其他電子設備,也是合適的。在一般情況下,大量的各種系統或能夠如在此所描述之結合一處理器及/或其他執行邏輯組件的電子設備的通常是合適的。
現在參考圖16,顯示根據本發明一個實施例的系統1600的方塊圖。該系統1600可包括一或多個處理器1610、1615,其被耦接至控制器集線器1620。在一個實施例中,該控制器集線器1620包括圖形記憶體控制器集線器(GMCH)1690和一個輸入/輸出集線器(IOH)1650(其可在分離的晶片上);該GMCH1690包括了耦接至記憶體1640與一個共處理器1645的記憶體與圖形控制器;該IOH1650是耦接輸入/輸出(I/O)裝置1660至GMCH1690。可替換地,記憶體與圖形控制器的一或兩者係整合於該處理器中(如在此所述),該記憶體1640和該共處理器1645直接地耦接至處理器1610,且控制器集線器1620在具有IOH1650之一單一晶片上。
附加處理器1615的可選擇性係在圖16中以虛線 表示。各處理器1610、1615可以包括一或多個在此描述的處理器核心,且可以是處理器1500的一些版本。
該記憶體1640可以是,例如,動態隨機存取記憶 體(DRAM)、相變記憶體(PCM),或者是兩者的一組合。對於至少一個實施例中,該控制器集線器1620的與該等處理器1610、1615經由一多點匯流排,諸如前側匯流排(FSB)、點對點介面,諸如快通互聯(QPI),或者類似的連結1695而通訊。
在一個實施例中,該共處理器1645是一個特殊用 途處理器,諸如,例如,高通量的MIC處理器、一網路或通訓處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,或類似者。在一個實施例中,控制器集線器1620可包括一積體圖形加速器。
在該等實體資源1610、1615之間在優點的度量範 圍可有各種差異,包括架構上、微架構、熱、功率消耗特性以及類似者。
在一個實施例中,處理器1610執行控制一般類型的資料處理運算的指令。嵌入於指令可能是共處理器指令。該處理器1610可以辨識此等共處理器指令,作為是應該由附加的共處理器1645被執行的類型。據此,該處理器1610分發此等共處理器指令(或表示共處理器指令的控制信號)上的共處理器匯流排或其他互連件,至共處理器1645。共處理器1645接受並執行所接收到的共處理器指令。
現在參考圖17,顯示根據本發明的一個實施例的 第一更具體的示例性系統1700的方塊圖。如顯示於圖17中的多處理器系統1700是一個點對點的互連系統,並且包括經由一點對點互連件1750耦接的一第一處理器1770和一第二處理器1780。各處理器1770和1780可以是處理器1500的一些版本。在本發明的一個實施例中,處理器1770與1780分別為處理器1610和1615,而共處理器1738是共處理器1645。在另一實施例中,處理器1770與1780分別為處理器1610和共處理器1645。
處理器1770與1780係顯示為分別包括積體記憶 體控制器(IMC)單元1772、1782。處理器1770亦包括作為它的匯流排控制器單元的點對點(P-P)之一部分的介面1776和1778;類似地,第二處理器1780包括P-P介面1786、1788。 處理器1770、1780可以經由一點對點(P-P)介面1750使用P-P介面電路1778、1788交換資訊。如圖17所顯示,IMC1772、1782耦接該處理器至個別記憶體,亦即記憶體1732和記憶體1734,其可以是主記憶體局部地附加至該等個別處理器的部分。
處理器1770、1780可各經由個別P-P介面1752、 1754使用點對點的介面電路1776、1794、1786、1798與一晶片組1790交換資訊。晶片組1790可經由一高興能介面1739選擇性地與該共處理器1738交換資訊。在一個實施例中,該共處理器1738是一個特殊用途處理器,諸如,例如,高通量的MIC處理器、網路或通訓處理器、壓縮引擎、圖 形處理器、GPGPU、嵌入式處理器,或類似物。
一共享快取記憶體(未示出)可以包括在處理器任一者內或於兩個處理器外部,但經由P-P互連件連接至該等處理器,若該處理器被置於低功耗模式,使得任一個或兩個處理器的局部快取記憶體資訊可以儲存在該共享快取記憶體中。
晶片組1790可經由介面1796耦接至一第一匯流排1716。在一個實施例中,該第一匯流排1716可以是週邊互連組件(PCI)匯流排,或一匯流排諸如一快速PCI匯流排,或另一第三代I/O互連匯流排,本發明的範圍並不限於此。
如圖17所示,各種I/O裝置1714可以連同耦接第一匯流排1716至第二匯流排1720之匯流排橋接器1718,耦接到第一匯流排1716。在一個實施例中,一或多個附加的處理器1715,諸如共處理器、高通量MIC處理器、GPGPU的、加速器(諸如,例如,圖形加速器或數位訊號處理(DSP)單元)、場可編程閘陣列、或任何其它處理器,係耦接至第一匯流排1716。在一個實施例中,第二匯流排1720可以是低腳位數(LPC)匯流排。在一個實施例中,各種裝置可以耦接到一第二匯流排1720,包括例如鍵碟及/或滑鼠1722、通訊裝置1727和儲存單元1728,諸如磁碟或其它大容量儲存裝置,其可包括指令/碼和資料1730。此外,一音訊I/O1724可耦接到唉第二匯流排1720。注意,其它架構也是可能的。例如,替代圖17的點對點的架構,一個系統可以實現多點匯流排或其它此等架構。
現在參考圖18,例示出了根據本發明實施例的第二更具體的範例性系統1800的方塊圖。圖17-18中類似元件帶有相似的標號,且為了避免模糊圖18的其他態樣,圖17中的某些態樣已經從圖18中省略。
圖18例示了處理器1770、1780可分別包括積體記憶體與I/O控制邏輯組件(「CL」)1772、1782。因此CL1772、1782包括積體記憶體控制器單元且包括I/O控制邏輯組件。圖18例示了記憶體1732、1734不僅耦接至該等CL1772、1782,1/O裝置1814也耦接至控制邏輯組件1772、1782。傳統I/O裝置1815也耦接至晶片組1790。
現在參考圖19,顯示出根據本發明的一個實施例的一單晶片系統1900的方塊圖。在圖15中類似的元件帶有相似的元件標號。另外,在更先進的單晶片系統上,虛線方框是可選擇性特徵。在圖19中,一互連單元1902被耦接至:應用處理器1910,其包括一組一或多個核心202A-N和共享快取記憶體單元1506;系統代理1510;匯流排控制器單元1516;一積體記憶體控制器單元1514;一組或一或多個共處理器1920,其可包括積體圖形邏輯組件、一影像處理器、一音訊處理器,和一個視頻處理器;一靜態隨機存取記憶體(SRAM)單元1930;直接記憶體存取(DMA)單元1932;以及用於耦接到一或多個外部顯示器的一顯示單元1940。在一個實施例中,該共處理器1920包括一個特殊用途處理器,諸如,例如,一網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器,或類似物。
在此揭露的機制之實施例可以在硬體、軟體、韌體或此等實施方式的組合來實現。本發明的實施例可被實施為計算機程式或於可程式化系統上執行的程式碼,可程式化系統包含至少一處理器、一儲存系統(包括依電性和非依電性記憶體及/或儲存元件)、至少一個輸入裝置,以及至少一個輸出裝置。
程式碼,諸如在圖17中所示的碼1730,可以應用至輸入指令以進行在此所述的功能與產生輸出資訊。輸出資訊可以已知的方式應用於一個或多個輸出設備。為了此申請案的目的,一處理系統包括具有一處理器,諸如,例如,一個數位訊號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器的任何系統。
該程式碼可以實施於高階程序或物件導向程式設計語言中,以與一處理系統通訊。如果需要的話,上述程式碼也可以組合或機器語言來實現。事實上,在此描述的機制在範圍上不限於於任何特定的程式設計語言。在任何情況下,該語言可以是編譯的或解釋的語言。
在至少一個實施例中的一或多個態樣可由儲存在一機器可讀媒體上代表性指令,該機器可讀媒體代表各種在處理器中的邏輯,其當由一機器讀取時,導致該機器製造邏輯組件以進行在此描述之技術。此等的表示,被稱為「IP核心」可被儲存在有形的、機器可讀媒體上,且供應到各個客戶或生產設施,以載入至實際上製造該邏輯組件或處理器的製造機器。
此等的機器可讀儲存媒體可包括但不限於,由一 機器或裝置所形成之非暫態、有形配置的製品,包括儲存媒體,諸如硬碟、任何其他類型的碟,包括軟碟、光碟、光碟僅讀記憶體(CD-ROM)、可複寫光碟(CD-RW),以及光磁碟、半導體裝置,諸如僅讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化僅讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化僅讀記憶體(EEPROM)、相變記憶體(PCM),磁卡或光卡或任何其他類型的適於儲存電子指令的媒體。
據此,本發明的實施例亦包括非暫態的、有形的 機器可讀媒體,其包含有指令或包含設計資料,諸如硬體描述語言(HDL),其定義了的結構、電路、設備、處理器及/或在此所描述的系統特徵。此等的實施例也可以被稱為程式產品。
仿擬(包括二進位轉換、碼變形,等等)
在一些情況下,一指令轉換器可用以將指令從一來源指令集轉換至一目標指令集。例如,該指令轉換器可以轉換(例如,使用靜態二進位轉換、包括動態編譯之動態二進位轉換)、變形、仿擬,或以其他方式的轉換一指令成為一或多個待由核心處理的其它指令。該指令轉換器可以於軟體、硬體、韌體或其等之組合來實現。該指令轉換器可在處理器上、處理器外,或部分在處理器上與部分在處理器外。
圖20為根據發明實施例之一方塊圖,相反於使用一軟體指令轉換器以轉換於一來源指令集中之二進位指令至一目標指令集中的二進位指令。在例示的實施例中,該指令轉換器是一個軟體指令轉換器,雖然可替代地,指令轉換器可以軟體、韌體、硬體、或者其等之各種組合來實現。圖20顯示了在高階程式語言2002中的程式可以使用一個x86編譯器2004,以產生x86的二進位碼2006,其可以具有至少一x86指令集核心2016的一處理器處本機地執行。具有至少一個x86指令集核心2016的處理器代表可以進行與具有至少一x86指令集核心的Intel處理器大致相同功能之任何處理器,藉由兼容地或以其他方式處理:(1)Intelx86指令集核心的指令集的大部分或(2)應用程式的物件碼版本或針對在具有至少一x86指令集核心的Intel處理器上運行的其他軟體,為了實現與具有至少一x86指令集核心的Intel處理器與大致相同的結果。x86編譯器2004代表一編譯器,其可操作以產生x86二進位碼2006(例如,目標代碼),其可有或沒有附加的協作處理,於具有至少一個x86指令集核心2016之處理器上執行時。類似地,圖20顯示在高階語言2002中的程式可使用替代的指令集編譯器2008,以產生替代的指令集二進位碼2010,其可由不具至少一個x86指令集核心2014的處理器上本機地執行(例如,具有核心的一處理器,其執行加利福尼亞州桑尼維爾的MIPS科技的MIPS指令集及/或其執行加利福尼亞州桑尼維爾的ARM持有的ARM指令集)。;該指令轉換器2012係用來轉換x86二進位碼2006 成為可由不具有x86指令集核心2014之處理器在本機執行的碼。此轉換代碼不太可能與替代的指令集二進位碼2010是一樣的,因為能夠這樣做的一指令轉換器很難製造;然而,轉換後的碼將完成的一般運算,且可由來自替代指令集的指令組成。因此,指令轉換器2012代表軟體、韌體、硬體,或者其等的組合,通過仿擬、模擬或任何其他方法,允許不具有x86指令集處理器或核心的一處理器或其他電子設備,執行x86二進位碼2006。
針對圖3至4及/或圖6至12組件任何特徵和細節亦可選擇性地使用於圖1至2及/或圖5。更進一步地,針對任何設備在此描述的組件、特徵和細節也可以選擇性地在任何在此所述的方法中使用,其在實施例中可以是由此等設備進行及/或與此等設備一起進行。
在說明書和請求項中,用語「耦接」及/或「連接」以及它們的衍生詞都可以使用。但是應當理解的是,此等用語並不意欲在作為彼此的同義詞。相反,在特定實施例中,「連接」可以用於指示二或多個元件彼此直接物理或電接觸。「耦接」可代表二或多個元件直接物理或電接觸。然而,「耦接」也可代表二或多個元件沒有彼此直接接觸,但是仍協同操作或與彼此作用。例如,一執行單元可以透過一或多個中介組件與一暫存器或解碼單元耦接。在圖式中,箭頭是用來顯示連接和耦接。
在說明書和請求項中,用語「邏輯組件」,可能已被使用。如在此所用,邏輯組件可以包括硬體、韌體、 軟體,或它們的各種組合。邏輯組件的範例包括積體電路、特殊應用積體電路、類比電路、數位電路、可程式化邏輯裝置、包括指令之記憶體裝置,等等。在一些實施例中,硬體邏輯組件可包括電晶體及/或閘,可能伴隨著其他電子組件。在一些實施例中,該邏輯組件可以被實施為一組件,單元或其它模組。
在上述的描述中,已經闡述特定的細節,以便提 供一徹底理解實施例。然而,其他實施例可以在沒有此等特定細節的情況下實施。在本發明的範圍並非由以上所提供的特定範例所界定,而是由以下的請求項來界定。在其他實例中,眾所周知的電路、結構、裝置和運算已由方塊圖的形式示出,或不詳細描述,以避免混淆對本描述的理解。其中已經顯示和描述之多個組件,在某些情況下,此等多個組件可被合併成為一個組件。其中已經顯示和描述之單一組件,在某些情況下,此單一組件分可被分離成二個或多個組件。
已經描述了各種操作和方法。某些方法中以經以 一相對基本行事於流程途中描述,但操作可自該等方法選擇性地增加及/或移除。此外,雖然在流程圖中顯示的操作的特定順序,根據例示實施例中,該特定的順序為是範例性的。替代實施例可以選擇地以不同的順序、組合某些操作,重疊某些操作,等等進行。
某些操作可以由硬體組件進行,或者可以實施於 機器可執行或電路可執行指令,其可被用來引起及/或導致 在一機器、電路,或硬體組件(例如,處理器、處理器一部份、電路等)中以指令編程進行操作。該操作也可以選擇性地由硬體和軟體的一組合來執行進行。一處理器、機器、電路,或硬體可以包括特定的或特殊電路或其它邏輯組件(例如,硬體可能與韌體及/或軟體組合)係響應於該指令而操作以執行及/或處理指令並儲存其結果。
一些實施例包括一種製造製品(例如,一電腦程式產品),其包含機器可讀媒體。該媒體可包括一機制,其提供,例如以種形式儲存資訊,該形式是由機器可讀的。機器可讀媒體可以提供,或已在其上儲存一指令或指令序列,其若及/或當由一機器執行時,可操作以引起該機器進行及/或導致機器進行在此揭露的一或多個操作、方法或技術。
在一些實施例中,機器可讀媒體可包括有形及/或非暫態的機器可讀儲存媒體。例如,有形及/或非暫態機器可讀儲存媒體可包括軟碟、光儲存媒體、光碟、光資料儲存裝置、CD-ROM、磁碟、磁光碟、僅讀記憶體(ROM)、可編程ROM(PROM)、可抹除且可編程ROM(EPROM)、電子可抹除且可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態-RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、一非依電性記憶體、非依電性資料儲存裝置,非暫態記憶體,非暫態資料儲存裝置,或類似物。非暫態機器可讀儲存媒體中不包括一個暫態傳播信號。
合適的機器的範例包括,但不限於,通用處理器、 特殊用途處理器、指令處理裝置、數位邏輯電路,積體電路等。合適的機器的又一實施例包括計算裝置和合併此等處理器、指令處理裝置、數字邏輯電路、或積體電路的其它電子裝置。此等計算裝置和電子裝置的範例包括但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、輕省筆電、智慧型手機、蜂巢式電話、伺服器、網路裝置(例如路由器和交換機)、移動互聯網裝置(MID)、媒體播放器、智慧型電視、桌上型易網機、機上盒、視頻遊戲控制器。
在本說明書全文中提及「一個實施例」、「一實施 例」、「一個或多個實施例」、「一些實施例」例如,指示一特定特徵可以被包括在本發明的實踐中,但並不一定需要如此。類似地,描述中各種特徵有時被組合於一單一實施例,圖式或其描述,僅為簡化本揭露且幫助在各種創造性方面理解之目的。然而,本揭露的方法,不應被解釋為反映了一種意圖,本發明需要比明確地陳述於每一請求項中更多之詳細特徵。相反,如以下請求項所反映的,發明方面在於少於單個公開實施例的所有特徵。因此,以下的詳細描述的請求項在此被明確地併入詳細說明中,每個請求項自身作為本發明一分離的實施例。
範例實施例
以下面的範例涉及到進一步的實施例。範例中之細節可使用在一或多個實施例任何位置中。
範例1為一處理器,包括一第一模式,可選擇地 其中該處理器並未使用緊縮資料運算遮罩,以及一第二模式,可選擇地其中該處理器使用緊縮資料運算遮罩。該處理器包括一解碼單元用以解碼用於在該第一模式中之一給定緊縮資料運算的一未遮罩緊縮資料指令,且用以解碼用於在該第二模式中之該給定緊縮資料運算的一遮罩版本的一遮罩緊縮資料指令。該等未遮罩及遮罩緊縮資料指令具有一相同的指令長度。該遮罩緊縮資料指令具有一或多個位元以指定一緊縮資料運算遮罩。一或多個執行單元耦接於該解碼單元。該一或多個執行單元響應於該解碼單元在該第一模式中解碼該未遮罩緊縮資料指令,而進行該給定緊縮資料運算。該一或多個執行單元響應於該解碼單元在該第二模式中解碼該遮罩緊縮資料指令,而使用指定之該緊縮資料運算遮罩進行該給定緊縮資料運算之該遮罩版本。
範例2包括範例1的該處理器,可選擇地其中該指令長度為32位元。
範例3包括範例1的該處理器,可選擇地其中該處理器包括一精簡指令集計算(RISC)處理器。
範例4包括範例1的該處理器,更包括複數個緊縮資料暫存器。且可選擇地,其中該遮罩緊縮資料指令的該一或多個位元係用以指定該等複數者之一緊縮資料暫存器做為該緊縮資料運算遮罩的一來源。
範例5包括範例4的該處理器,可選擇地其中該緊縮資料運算遮罩係以包含來自該緊縮資料暫存器的複數個 資料元件每一者之一位元。
範例6包括範例4的該處理器,可選擇地其中該緊 縮資料暫存器係以儲存該緊縮資料運算遮罩以及至少一其他緊縮資料運算遮罩。
範例7包括範例6的該處理器,可選擇地其中在該 緊縮資料暫存器的一第一觀點係以儲存一較大數量之相對較小緊縮資料運算遮罩,且在一第二觀點係以儲存一較少數量之相對較大緊縮資料運算遮罩。
範例8包括範例1的該處理器,更包括複數個緊縮 資料運算遮罩暫存器。且可選擇地,其中該遮罩緊縮資料指令的該一或多個位元係以指定該等複數者之一緊縮資料運算遮罩暫存器以作為該緊縮資料運算遮罩的一來源。
範例9包括範例1至8的該處理器,可選擇地其中 該等第一與第二模式係由在該處理器之一暫存器中的一或多個位元指示。
範例10包括範例1至8的該處理器,可選擇地其中 該給定緊縮資料運算及該給定緊縮資料運算之該遮罩版本包含以下其中一者:(1)一緊縮乘法運算與一遮罩緊縮乘法運算;(2)一緊縮加法運算與一遮罩緊縮加法運算;(3)一緊縮邏輯及(AND)運算與一遮罩緊縮邏輯及(AND)運算;(4)一緊縮邏輯或(OR)運算與一遮罩緊縮邏輯或(OR)運算;以及(5)一緊縮比較運算與一遮罩緊縮比較運算。
範例11為由一處理器所進行的方法。該方法包括 解碼用於在一第一模式中之一給定緊縮資料運算的一未遮 罩緊縮資料指令,其中該處理器非用以使用緊縮資料運算遮罩。該方法包括響應於在該第一模式中該未遮罩緊縮資料指令之解碼而進行該給定緊縮資料運算。該方法包括解碼用於在一第二模式中之該給定緊縮資料運算的一遮罩版本的一遮罩緊縮資料指令,其中該處理器係使用緊縮資料運算遮罩。該等未遮罩及遮罩緊縮資料指令具有一相同的指令長度。該遮罩緊縮資料指令具有一或多個位元以指定一緊縮資料運算遮罩。該方法包括響應於在該第二模式中該遮罩緊縮資料指令之該解碼,以使用指定之該緊縮資料運算遮罩而進行該給定緊縮資料運算之該遮罩版本。
範例12包括範例11之該方法,可選擇地其中解碼包含解碼各自具有一32位元指令長度之該等未遮罩與遮罩緊縮資料指令。
範例13包括範例11之該方法,更包括從藉由該遮罩緊縮資料指令的該一或多個位元所指定之一緊縮資料暫存器,存取該緊縮資料運算遮罩。
範例14包括範例13之該方法,可選擇地其中存取包含從該緊縮資料暫存器的複數個資料元件的各者存取一位元以作為該緊縮資料運算遮罩。
範例15包括範例13之該方法,可選擇地其中存取包含從該緊縮資料暫存器存取該緊縮資料運算遮罩,該緊縮資料暫存器係亦儲存至少一其他緊縮資料運算遮罩。
範例16包括範例15之該方法,可選擇地其中存取包含從該緊縮資料暫存器存取該緊縮資料運算遮罩,該緊 縮資料暫存器於一第一觀點中係用以儲存一較大數量之相對較小緊縮資料運算遮罩,且於一第二觀點中係用以儲存一較少數量之相對較大緊縮資料運算遮罩。
範例17包括範例11之該方法,更包括從複數個緊縮資料運算遮罩暫存器其中一者存取該緊縮資料運算遮罩,該緊縮資料運算遮罩暫存器係由該遮罩緊縮資料指令的該一或多個位元所指定。
範例18包括範例11之該方法,可選擇地其中該方法係於一精簡指令集計算(RISC)處理器中進行。
範例19包括範例11之該方法,更包括改變在該處理器之一暫存器中的一或多個位元,以導致該處理器於該第二模式中。
範例20包括範例11之該方法,可選擇地其中進行該給定緊縮資料運算及該給定緊縮資料運算之該遮罩版本包含以下其中一者:(1)一緊縮乘法運算與一遮罩緊縮乘法運算;(2)一緊縮加法運算與一遮罩緊縮加法運算;(3)一緊縮邏輯及(AND)運算與一遮罩緊縮邏輯及(AND)運算;(4)一緊縮邏輯或(OR)運算與一遮罩緊縮邏輯或(OR)運算;以及(5)一緊縮比較運算與一遮罩緊縮比較運算。
範例21為一種用以處理指令的系統。該系統包括一互連件、一動態隨機存取記憶體(DRAM)耦接至該互連件、以及一處理器耦接至該互連件。該處理器包括一第一模式,其中該處理器係未使用緊縮資料運算遮罩,與一第二模式,其中該處理器係使用緊縮資料運算遮罩。該處理 器包括一解碼單元用以解碼用於在該第一模式中之一給定緊縮資料運算的一未遮罩緊縮資料指令,且用以解碼用於在該第二模式中之該給定緊縮資料運算的一遮罩版本的一遮罩緊縮資料指令。該等未遮罩及遮罩緊縮資料指令具有一相同的指令長度。該遮罩緊縮資料指令具有一或多個位元以指定一緊縮資料運算遮罩。該處理器包括一或多個執行單元耦接於該解碼單元。該一或多個執行單元響應於該解碼單元在該第一模式中解碼該未遮罩緊縮資料指令,而進行該給定緊縮資料運算。該一或多個執行單元響應於該解碼單元在該第二模式中解碼該遮罩緊縮資料指令,而使用指定之該緊縮資料運算遮罩進行該給定緊縮資料運算之該遮罩版本。
範例22包括請求項21之該系統,可選擇地其中該指令長度為32位元、且可選擇地其中該處理器包括一精簡指令集計算(RISC)處理器。
範例23為一機器可讀儲存媒體,儲存有指令,若由一機器執行將引起該機器進行範例11至20任一者的方法。
範例24為一處理器,以進行範例11至20任一者的方法。
範例25為一處理器,包括用以進行範例11至20任一者的方法之構件。
範例26為一處理器,包括積體電路及/或邏輯組件及/或單元及/或組件及/或模組,或任何其等之組合,以 進行範例11至20任一者的方法。
範例27為一計算系統,包括至少一處理器且可選擇地一動態隨機存取記憶體(DRAM),該計算系統以進行範例11至20任一者的方法。
範例28為一處理器,以大致地進行在此描述一或多個或一方法。
範例29為一處理器,包括構建以大致地進行在此描述一或多個或一方法。
100‧‧‧處理器
102‧‧‧指令集
104‧‧‧遮罩緊縮資料指令
106‧‧‧未遮罩緊縮資料指令
108‧‧‧緊縮資料暫存器
110‧‧‧緊縮資料運算遮罩暫存器
112‧‧‧分離專屬緊縮資料運算遮罩暫存器
114‧‧‧執行單元

Claims (22)

  1. 一種處理器,包含:一第一模式,其中該處理器係未用以使用緊縮資料運算遮罩;一第二模式,其中該處理器係用以使用緊縮資料運算遮罩;一解碼單元,其用以解碼用於在該第一模式中之一給定緊縮資料運算的一未遮罩緊縮資料指令,且用以解碼用於在該第二模式中之該給定緊縮資料運算的一遮罩版本的一遮罩緊縮資料指令,該等未遮罩及遮罩緊縮資料指令具有一相同的指令長度,該遮罩緊縮資料指令具有一或多個位元以指定一緊縮資料運算遮罩;以及一或多個執行單元耦接於該解碼單元,該一或多個執行單元響應於該解碼單元在該第一模式中解碼該未遮罩緊縮資料指令,而進行該給定緊縮資料運算,且該一或多個執行單元響應於該解碼單元在該第二模式中解碼該遮罩緊縮資料指令,而使用指定之該緊縮資料運算遮罩進行該給定緊縮資料運算之該遮罩版本。
  2. 如請求項1之處理器,其中該指令長度為32位元。
  3. 如請求項1之處理器,其中該處理器包含一精簡指令集計算(RISC)處理器。
  4. 如請求項1之處理器,更包含複數個緊縮資料暫存器,且其中該遮罩緊縮資料指令的該一或多個位元係用以 指定該等複數者之一緊縮資料暫存器做為該緊縮資料運算遮罩的一來源。
  5. 如請求項4之處理器,其中該緊縮資料運算遮罩係用以包含來自該緊縮資料暫存器的複數個資料元件的每一者之一位元。
  6. 如請求項4之處理器,其中該緊縮資料暫存器係用以儲存該緊縮資料運算遮罩以及至少一其他緊縮資料運算遮罩。
  7. 如請求項6之處理器,其中在該緊縮資料暫存器的一第一觀點係用以儲存一較大數量之相對較小緊縮資料運算遮罩,且在一第二觀點係用以儲存一較少數量之相對較大緊縮資料運算遮罩。
  8. 如請求項1之處理器,更包含複數個緊縮資料運算遮罩暫存器,且其中該遮罩緊縮資料指令的該一或多個位元係用以指定該等複數者之一緊縮資料運算遮罩暫存器作為該緊縮資料運算遮罩的一來源。
  9. 如請求項1之處理器,其中該等第一與第二模式係由在該處理器之一暫存器中的一或多個位元所指示。
  10. 如請求項1之處理器,其中該給定緊縮資料運算及該給定緊縮資料運算之該遮罩版本包含以下中之一者:一緊縮乘法運算與一遮罩緊縮乘法運算;一緊縮加法運算與一遮罩緊縮加法運算;一緊縮邏輯及(AND)運算與一遮罩緊縮邏輯及(AND)運算; 一緊縮邏輯或(OR)運算與一遮罩緊縮邏輯或(OR)運算;以及一緊縮比較運算與一遮罩緊縮比較運算。
  11. 一種藉由一處理器所進行的方法,包含以下步驟:解碼用於在一第一模式中之一給定緊縮資料運算的一未遮罩緊縮資料指令,其中該處理器並未用以使用緊縮資料運算遮罩;響應於在該第一模式中該未遮罩緊縮資料指令之解碼而進行該給定緊縮資料運算;解碼用於在一第二模式中之該給定緊縮資料運算的一遮罩版本的一遮罩緊縮資料指令,其中該處理器係用以使用緊縮資料運算遮罩,該等未遮罩及遮罩緊縮資料指令具有一相同的指令長度,該遮罩緊縮資料指令具有一或多個位元以指定一緊縮資料運算遮罩;以及響應於在該第二模式中該遮罩緊縮資料指令之該解碼,而使用指定之該緊縮資料運算遮罩進行該給定緊縮資料運算之該遮罩版本。
  12. 如請求項11之方法,其中解碼包含解碼各自具有一32位元指令長度之該等未遮罩與遮罩緊縮資料指令。
  13. 如請求項11之方法,更包含從藉由該遮罩緊縮資料指令的該一或多個位元所指定之一緊縮資料暫存器存取該緊縮資料運算遮罩。
  14. 如請求項13之方法,其中存取包含從該緊縮資料暫存器的複數個資料元件的各者存取一位元以作為該緊縮資 料運算遮罩。
  15. 如請求項13之方法,其中存取包含從該緊縮資料暫存器存取該緊縮資料運算遮罩,該緊縮資料暫存器係亦用以儲存至少一其他緊縮資料運算遮罩。
  16. 如請求項15之方法,其中存取包含從該緊縮資料暫存器存取該緊縮資料運算遮罩,該緊縮資料暫存器於一第一觀點中係用以儲存一較大數量之相對較小緊縮資料運算遮罩,且於一第二觀點中係用以儲存一較少數量之相對較大緊縮資料運算遮罩。
  17. 如請求項11之方法,更包含從複數個緊縮資料運算遮罩暫存器中之一者存取該緊縮資料運算遮罩,該緊縮資料運算遮罩暫存器係由該遮罩緊縮資料指令的該一或多個位元所指定。
  18. 如請求項11之方法,其中該方法係於一精簡指令集計算(RISC)處理器中進行。
  19. 如請求項11之方法,更包含改變在該處理器之一暫存器中的一或多個位元,以導致該處理器於該第二模式中。
  20. 如請求項11之方法,其中進行該給定緊縮資料運算及該給定緊縮資料運算之該遮罩版本包含以下中之一者:進行一緊縮乘法運算與一遮罩緊縮乘法運算;進行一緊縮加法運算與一遮罩緊縮加法運算;進行一緊縮邏輯及(AND)運算與一遮罩緊縮邏輯及(AND)運算;進行一緊縮邏輯或(OR)運算與一遮罩緊縮邏輯或 (OR)運算;以及進行一緊縮比較運算與一遮罩緊縮比較運算。
  21. 一種用以處理指令的系統,包含:一互連件;一動態隨機存取記憶體(DRAM)耦接於該互連件;以及一處理器耦接於該互連件,該處理器包含:一第一模式,其中該處理器係未用以使用緊縮資料運算遮罩;一第二模式,其中該處理器係用以使用緊縮資料運算遮罩;一解碼單元,其用以解碼用於在該第一模式中之一給定緊縮資料運算的一未遮罩緊縮資料指令,且用以解碼用於在該第二模式中之該給定緊縮資料運算的一遮罩版本的一遮罩緊縮資料指令,該等未遮罩及遮罩緊縮資料指令具有一相同的指令長度,該遮罩緊縮資料指令具有一或多個位元以指定一緊縮資料運算遮罩;以及一或多個執行單元耦接於該解碼單元,該一或多個執行單元響應於該解碼單元在該第一模式中解碼該未遮罩緊縮資料指令,而進行該給定緊縮資料運算,且該一或多個執行單元響應於該解碼單元在該第二模式中解碼該遮罩緊縮資料指令,而使用指定之該緊縮資料運算遮罩進行該給定緊縮資料運算 之該遮罩版本。
  22. 如請求項21之系統,其中該指令長度為32位元,且其中該處理器包含一精簡指令集計算(RISC)處理器。
TW103121588A 2013-06-28 2014-06-23 緊縮資料元件預測處理器、方法、系統及指令 TWI536187B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/931,739 US9990202B2 (en) 2013-06-28 2013-06-28 Packed data element predication processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201508521A TW201508521A (zh) 2015-03-01
TWI536187B true TWI536187B (zh) 2016-06-01

Family

ID=52116850

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103121588A TWI536187B (zh) 2013-06-28 2014-06-23 緊縮資料元件預測處理器、方法、系統及指令

Country Status (8)

Country Link
US (5) US9990202B2 (zh)
EP (1) EP3014418B1 (zh)
KR (2) KR20150141999A (zh)
CN (1) CN105247475B (zh)
BR (1) BR112015030098B1 (zh)
RU (1) RU2612597C1 (zh)
TW (1) TWI536187B (zh)
WO (1) WO2014209687A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477467B2 (en) 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10459723B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
US9785800B2 (en) 2015-12-23 2017-10-10 Intel Corporation Non-tracked control transfers within control transfer enforcement
US20170185400A1 (en) 2015-12-23 2017-06-29 Intel Corporation Mode-specific endbranch for control flow termination
US20170192781A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Strided Loads
US11204764B2 (en) * 2016-03-31 2021-12-21 Intel Corporation Processors, methods, systems, and instructions to Partition a source packed data into lanes
US10891131B2 (en) * 2016-09-22 2021-01-12 Intel Corporation Processors, methods, systems, and instructions to consolidate data elements and generate index updates
WO2018112193A1 (en) 2016-12-14 2018-06-21 Novetechnologies, LLC Livestock biosecurity system and method of use
RU2659492C1 (ru) * 2017-08-18 2018-07-02 Федеральное государственное бюджетное образовательное учреждение высшего образования "Вятский государственный университет" (ВятГУ) Блок унификации с параллельным сопоставлением термов
US10678540B2 (en) * 2018-05-08 2020-06-09 Arm Limited Arithmetic operation with shift
DE102018113475A1 (de) * 2018-06-06 2019-12-12 Infineon Technologies Ag Rechenwerk zum rechnen mit maskierten daten
US11328209B1 (en) 2021-06-02 2022-05-10 SambaNova Systems, Inc. Dual cycle tensor dropout in a neural network
US11256987B1 (en) 2021-06-02 2022-02-22 SambaNova Systems, Inc. Memory efficient dropout, with reordering of dropout mask elements

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4903228A (en) * 1988-11-09 1990-02-20 International Business Machines Corporation Single cycle merge/logic unit
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
US5787303A (en) * 1991-10-31 1998-07-28 Kabushiki Kaisha Toshiba Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture
US5606677A (en) * 1992-11-30 1997-02-25 Texas Instruments Incorporated Packed word pair multiply operation forming output including most significant bits of product and other bits of one input
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
CA2156889C (en) 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
EP0847551B1 (en) 1995-08-31 2012-12-05 Intel Corporation A set of instructions for operating on packed data
US6052769A (en) 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6484255B1 (en) 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6629115B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US7017032B2 (en) 2001-06-11 2006-03-21 Broadcom Corporation Setting execution conditions
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7002595B2 (en) * 2002-10-04 2006-02-21 Broadcom Corporation Processing of color graphics data
US20050149701A1 (en) 2003-12-24 2005-07-07 Inching Chen Method, apparatus and system for pair-wise minimum and minimum mask instructions
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US20070186210A1 (en) 2006-02-06 2007-08-09 Via Technologies, Inc. Instruction set encoding in a dual-mode computer processing environment
US20080016320A1 (en) * 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US8180998B1 (en) * 2007-09-10 2012-05-15 Nvidia Corporation System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
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
US8156391B2 (en) 2008-05-27 2012-04-10 Lsi Corporation Data controlling in the MBIST chain architecture
US8434074B2 (en) * 2010-02-24 2013-04-30 Intel Corporation Register allocation with SIMD architecture using write masks
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US9600285B2 (en) 2011-12-22 2017-03-21 Intel Corporation Packed data operation mask concatenation processors, methods, systems and instructions
JP2013186547A (ja) * 2012-03-06 2013-09-19 Fujitsu Ltd 演算処理装置、携帯端末および演算処理方法
US20130339680A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9256427B2 (en) * 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions

Also Published As

Publication number Publication date
US20180293074A1 (en) 2018-10-11
US10963257B2 (en) 2021-03-30
EP3014418A4 (en) 2017-03-08
BR112015030098B1 (pt) 2022-04-26
US11442734B2 (en) 2022-09-13
RU2612597C1 (ru) 2017-03-09
KR20180006501A (ko) 2018-01-17
EP3014418A1 (en) 2016-05-04
EP3014418B1 (en) 2020-11-18
US20200026518A1 (en) 2020-01-23
US20210216325A1 (en) 2021-07-15
WO2014209687A1 (en) 2014-12-31
US9990202B2 (en) 2018-06-05
CN105247475A (zh) 2016-01-13
KR20150141999A (ko) 2015-12-21
TW201508521A (zh) 2015-03-01
CN105247475B (zh) 2019-11-15
US20230108016A1 (en) 2023-04-06
BR112015030098A2 (pt) 2017-07-25
US20150006858A1 (en) 2015-01-01
US10430193B2 (en) 2019-10-01

Similar Documents

Publication Publication Date Title
TWI536187B (zh) 緊縮資料元件預測處理器、方法、系統及指令
JP7416393B2 (ja) テンソル並べ替えエンジンのための装置および方法
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
CN108292229B (zh) 用于重新出现的相邻聚集的指令和逻辑
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
JP5829714B2 (ja) マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
TWI496077B (zh) 用於緊縮資料運算遮罩比較的方法、設備、系統和機器可讀取儲存媒體
JP7419629B2 (ja) データ表現間の一貫性のある変換を加速するプロセッサ、方法、プログラム、コンピュータ可読記憶媒体、および装置
US20130339649A1 (en) Single instruction multiple data (simd) reconfigurable vector register file and permutation unit
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
TWI697788B (zh) 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯
TWI599948B (zh) 用於存取一組暫存器爲複數較小暫存器或結合的較大暫存器之任一者的處理器、方法、及系統
US10152321B2 (en) Instructions and logic for blend and permute operation sequences
JP2017534116A (ja) モートン座標調整プロセッサ、方法、システム、及び命令
WO2017105717A1 (en) Instructions and logic for get-multiple-vector-elements operations
JP2018500630A (ja) 4次元モートン座標変換プロセッサ、方法、システム、及び命令
CN108292271B (zh) 用于向量置换的指令和逻辑
JP2017539013A (ja) 競合検出を実行するための方法および装置
CN111752608A (zh) 用于控制复数乘法累加电路的设备和方法
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
JP2018500629A (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
CN112579160A (zh) 用于具有减少的硬件要求的存储配对的装置和方法
CN116339826A (zh) 用于四字特定部分的向量紧缩串接和移位的装置和方法