TWI575448B - 三個來源運算元浮點加法處理器、方法、系統及指令 - Google Patents

三個來源運算元浮點加法處理器、方法、系統及指令 Download PDF

Info

Publication number
TWI575448B
TWI575448B TW104106247A TW104106247A TWI575448B TW I575448 B TWI575448 B TW I575448B TW 104106247 A TW104106247 A TW 104106247A TW 104106247 A TW104106247 A TW 104106247A TW I575448 B TWI575448 B TW I575448B
Authority
TW
Taiwan
Prior art keywords
floating point
source
data element
point data
sum
Prior art date
Application number
TW104106247A
Other languages
English (en)
Other versions
TW201604776A (zh
Inventor
羅傑 艾斯帕薩
吉勒姆 索羅
馬內爾 費南德茲
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 TW201604776A publication Critical patent/TW201604776A/zh
Application granted granted Critical
Publication of TWI575448B publication Critical patent/TWI575448B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

三個來源運算元浮點加法處理器、方法、系統及指令
本文描述的實施方式一般關於處理器。特別是,在此描述的實施方式通常關於,用以增加回應於指令的浮點數的處理器。
浮點數通常用在處理器、電腦系統和其它電子裝置。浮點數的一個優點係其允許以一個相對緊湊的數字格式和/或位元數目來表示一個較寬的數值範圍。浮點數可能將位元分配成數個被稱為浮點數的符號、有效位數及指數的組成欄位。符號、有效位數、基底及指數可有以下關係:A=(-1)符號*有效位數*基底指數
表示式「(-1)符號」表示負1的符號次方。此表示式計算浮點數是否為正(+)或負(-)。例如,當符號係整數0時該浮點數係正的,或可替代地,當該符號係整數1該浮點數係負的。有效位數包括長度很長的數字串, 其決定浮點數的精確度。有效位數有時也被稱為有效數字、係數、分數或尾數。小數點(例如,十進制格式小數點或二進制格式小數點)通常隱含地假定駐留在一個固定的位置(例如,只在有效位數的最左邊的右邊或最有效數字,其中某些情況下可係隱含地的)。二進制有效位數的例子可是「1.10010010000111111011011」,該有效位數到小數點右邊的數字(例如,「10010010000111111011011」)可代表了分數位元。表示式「基底指數」代表基底的指數次方。該基底一般是基底2(二進制)、基底10(十進制)或基底16(十六進制)。基底有時被稱為基數。指數也被稱為特徵或比例。藉由指數的位數,提高基底至指數的次方能有效移位小數點(例如,從隱含的或假設的起始位置)。如果指數為正則小數點右移,或如果指數為負則小數點左移。
電機電子工程師協會(IEEE)已在IEEE 754標準中標準化數種不同的浮點格式。代表性地,單精確度浮點格式具有32位元且包括23位有效位數在位元[22:0]、8位指數在位元[30:23]以及1位符號在位元[31]。雙精確度浮點格式具有64位元且包括52位有效位數在位元[51:0]、11位指數在位元[62:52]以及1符號在位元[63]。其它浮點格式也在該所屬領域為已知,例如半精確度浮點、擴展雙精確度浮點和四倍精確度浮點格式。如果需要浮點數和格式的進一步細節,可在IEEE 754取得。
100‧‧‧處理器
102‧‧‧三個來源浮點加法指令
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧浮點加法邏輯
110‧‧‧一組暫存器
112‧‧‧第一來源運算元
114‧‧‧第二來源運算元
116‧‧‧第三來源運算元
118‧‧‧結果
120‧‧‧緊縮資料運算遮罩暫存器
122‧‧‧緊縮資料運算遮罩
225‧‧‧方法
226‧‧‧方塊
227‧‧‧方塊
312‧‧‧第一來源緊縮資料運算元
314‧‧‧第二來源緊縮資料運算元
316‧‧‧第三來源緊縮資料運算元
318‧‧‧結果緊縮資料
322‧‧‧來源緊縮資料運算遮罩
330‧‧‧運算
412‧‧‧第一來源運算元
414‧‧‧第二來源運算元
416‧‧‧第三來源運算元
418‧‧‧結果
422‧‧‧來源運算遮罩
432‧‧‧遮蔽加法運算
512‧‧‧第一來源運算元
514‧‧‧第二來源運算元
516‧‧‧第三來源運算元
518‧‧‧結果緊縮資料
522‧‧‧來源緊縮資料運算遮罩
534‧‧‧負數控制加法運算
536‧‧‧位元
538‧‧‧位元
540‧‧‧位元
542‧‧‧立即值
612‧‧‧第一來源運算元
614‧‧‧第二來源運算元
616‧‧‧第三來源運算元
618‧‧‧結果
622‧‧‧來源運算遮罩
636‧‧‧第一位元
638‧‧‧第二位元
640‧‧‧第三位元
642‧‧‧立即值
644‧‧‧純量三個來源浮點選擇性遮蔽選擇性負數控制加法運算
702‧‧‧控制信號
707‧‧‧三個來源浮點加法器
712‧‧‧第一來源浮點運算元
714‧‧‧第二來源浮點運算元
716‧‧‧第三來源浮點運算元
750‧‧‧數值簡化結果
802‧‧‧控制信號
808A‧‧‧兩個來源浮點加法器
808B‧‧‧兩個來源浮點加法器
812‧‧‧第一浮點運算元
814‧‧‧第二浮點運算元
816‧‧‧第三浮點運算元
818‧‧‧第二數值簡化總和
852‧‧‧第一數值簡化總和
854‧‧‧緩衝器
902‧‧‧控制信號
908‧‧‧兩個來源浮點加法器
912‧‧‧第一浮點運算元
914‧‧‧第二浮點運算元
916‧‧‧第三浮點運算元
918‧‧‧第二數值簡化總和
952‧‧‧第一數值簡化總和
954‧‧‧緩衝器
956‧‧‧再循環路徑
1002‧‧‧三個來源浮點加法指令
1060‧‧‧運算碼
1061‧‧‧第一來源說明符
1062‧‧‧第二來源說明符
1063‧‧‧第三來源說明符
1064‧‧‧目的地說明符
1065‧‧‧運算遮罩說明符
1066‧‧‧遮罩運算類型說明符
1067‧‧‧浮點數值簡化模式說明符
1068‧‧‧負數控制說明符
1107(1110)‧‧‧緊縮資料暫存器
1270‧‧‧表格
1320‧‧‧運算遮罩暫存器
1400‧‧‧通用向量親合指令格式
1405‧‧‧無記憶存取
1410‧‧‧無記憶體存取、全數值簡化控制式運算
1412‧‧‧無記憶體存取、寫入遮罩控制、部分數值簡化控制式運算
1415‧‧‧無記憶體存取、資料轉換式運算
1417‧‧‧無記憶體存取、寫入遮罩控制、VSIZE式運算
1420‧‧‧記憶體存取
1425‧‧‧記憶體存取、暫時的
1427‧‧‧記憶體存取、寫入遮罩控制
1430‧‧‧記憶體存取、非暫時的
1440‧‧‧格式欄位
1442‧‧‧基底運算欄位
1444‧‧‧暫存器索引欄位
1446‧‧‧修飾符欄位
1446A‧‧‧無記憶體存取
1446B‧‧‧記憶體存取
1450‧‧‧增強運算欄位
1452‧‧‧alpha欄位
1452A‧‧‧RS欄位
1452A.1‧‧‧數值簡化
1452A.2‧‧‧資料轉換
1452B‧‧‧驅逐隱含欄位
1452B.1‧‧‧暫時
1452B.2‧‧‧非暫時
1452C‧‧‧寫入遮罩控制(Z)欄位
1454‧‧‧beta欄位
1454A‧‧‧數值簡化控制欄位
1454B‧‧‧資料轉換欄位
1454C‧‧‧資料處理欄位
1456‧‧‧抑制所有浮點異常(SAE)欄位
1457A‧‧‧RL欄位
1457A.1‧‧‧數值簡化
1457A.2‧‧‧向量長度(VSIZE)
1457B‧‧‧廣播欄位
1458‧‧‧數值簡化運算控制欄位
1459A‧‧‧數值簡化運算欄位
1459B‧‧‧向量長度欄位
1460‧‧‧縮放欄位
1462A‧‧‧位移欄位
1462B‧‧‧位移係數欄位
1464‧‧‧資料元寬度欄位
1468‧‧‧類型欄位
1468A‧‧‧A類
1468B‧‧‧B類
1470‧‧‧寫入遮罩欄位
1472‧‧‧立即欄位
1474‧‧‧完整運算碼欄位
1500‧‧‧特定向量親合指令格式
1502‧‧‧EVEX前置
1505‧‧‧REX欄位
1510‧‧‧REX’欄位
1515‧‧‧運算碼映射欄位
1520‧‧‧VVVV欄位
1525‧‧‧前置編碼欄位
1530‧‧‧實際運算碼欄位
1540‧‧‧MOD R/M欄位
1542‧‧‧MOD欄位
1544‧‧‧Reg欄位
1546‧‧‧R/M欄位
1554‧‧‧xxx欄位
1556‧‧‧bbb欄位
1600‧‧‧暫存器架構
1610‧‧‧向量暫存器
1615‧‧‧寫入遮罩暫存器
1625‧‧‧通用暫存器
1645‧‧‧純量浮點堆疊暫存器檔案
1650‧‧‧MMX緊縮整數平面暫存器文件
1700‧‧‧管線
1702‧‧‧提取階段
1704‧‧‧長度解碼階段
1706‧‧‧解碼階段
1708‧‧‧分配階段
1710‧‧‧重命名階段
1712‧‧‧排程階段
1714‧‧‧暫存器讀取/記憶體讀取階段
1716‧‧‧執行階段
1718‧‧‧回寫/記憶體寫入階段
1722‧‧‧例外處理階段
1724‧‧‧提交階段
1730‧‧‧前端單元
1732‧‧‧分支預測單元
1734‧‧‧指令快取記憶體單元
1736‧‧‧指令轉譯後備緩衝區
1738‧‧‧指令提取單元
1740‧‧‧解碼單元
1750‧‧‧執行引擎單元
1752‧‧‧重命名/分配器單元
1754‧‧‧失效單元
1756‧‧‧排程器單元
1758‧‧‧實體暫存器檔案單元
1760‧‧‧執行群集
1762‧‧‧執行單元
1764‧‧‧記憶體存取單元
1770‧‧‧記憶體單元
1772‧‧‧資料指令轉譯後備緩衝區單元
1774‧‧‧資料快取記憶體單元
1776‧‧‧L2快取記憶體單元
1790‧‧‧核心
1800‧‧‧指令解碼器
1802‧‧‧互連網路
1804‧‧‧L2快取記憶體的區域子集
1806‧‧‧L1快取記憶體單元
1806A‧‧‧L1資料快取記憶體單元
1808‧‧‧純量單元
1810‧‧‧向量單元
1812‧‧‧純量暫存器
1814‧‧‧向量暫存器
1820‧‧‧混合單元
1822A‧‧‧數值轉換單位
1822B‧‧‧數值轉換單位
1824‧‧‧複製單元
1826‧‧‧寫入遮罩暫存器
1828‧‧‧16寬算術邏輯單元
1900‧‧‧處理器
1902A‧‧‧核心
1902N‧‧‧核心
1904A‧‧‧快取記憶體單元
1904N‧‧‧快取記憶體單元
1906‧‧‧共享快取記憶體單元
1908‧‧‧特殊用途邏輯
1910‧‧‧系統代理單元
1912‧‧‧環型互連單元
1914‧‧‧積體記憶體控制器單元
1916‧‧‧匯流排控制器單元
2000‧‧‧系統
2010‧‧‧處理器
2015‧‧‧處理器
2020‧‧‧控制器集線器
2040‧‧‧記憶體
2045‧‧‧協同處理器
2050‧‧‧輸入/輸出集線器
2060‧‧‧輸入/輸出裝置
2090‧‧‧圖形記憶體控制器集線器
2095‧‧‧連接
2100‧‧‧系統
2114‧‧‧輸入/輸出裝置
2115‧‧‧處理器
2116‧‧‧第一匯流排
2118‧‧‧匯流排橋
2120‧‧‧第二匯流排
2122‧‧‧鍵盤和/或滑鼠
2124‧‧‧音頻輸入/輸出
2127‧‧‧通信裝置
2128‧‧‧儲存單元
2130‧‧‧指令/編碼和資料
2132‧‧‧記憶體
2134‧‧‧記憶體
2138‧‧‧協同處理器
2139‧‧‧高性能介面
2150‧‧‧點對點介面
2152‧‧‧個別的點對點介面
2154‧‧‧個別的點對點介面
2170‧‧‧處理器
2172‧‧‧積體記憶體和輸入/輸出控制邏輯
2176‧‧‧點對點介面電路
2178‧‧‧點對點介面電路
2180‧‧‧處理器
2182‧‧‧積體記憶體和輸入/輸出控制邏輯
2186‧‧‧點對點介面電路
2188‧‧‧點對點介面電路
2190‧‧‧晶片組
2192‧‧‧介面
2194‧‧‧點對點介面電路
2196‧‧‧介面
2198‧‧‧點對點介面電路
2200‧‧‧系統
2214‧‧‧輸入/輸出裝置
2215‧‧‧舊有輸入/輸出裝置
2300‧‧‧系統晶片
2302‧‧‧互連單元
2310‧‧‧應用處理器
2320‧‧‧協同處理器
2330‧‧‧隨機存取記憶體單元
2332‧‧‧直接記憶體存取單元
2340‧‧‧顯示單元
2402‧‧‧高階語言
2404‧‧‧x86編譯器
2406‧‧‧x86二進制碼
2408‧‧‧替代指令集編譯器
2410‧‧‧替代指令集二進制編碼
2412‧‧‧指令轉換器
2414‧‧‧不具有x86指令集核心的處理器
2416‧‧‧具有至少一個x86指令集核心的處理器
本發明可最好藉由參照下面的描述和用來說明實施方式的附圖來理解。在圖式中:圖1係運算以執行三個來源浮點加法指令的處理器的實施方式的方塊圖。
圖2係執行三個來源浮點加法指令的方法的實施方式的方塊流程圖。
圖3係緊縮三個來源浮點選擇性遮罩加法運算的實施方式的方塊圖。
圖4係純量三個來源浮點選擇性遮罩加法運算的實施方式的方塊圖。
圖5係緊縮三個來源浮點選擇性遮罩選擇性負數控制加法運算的實施方式的方塊圖。
圖6係一個純量三個來源浮點選擇性遮罩選擇性負數控制加法運算的實施方式的方塊圖。
圖7係三個來源浮點加法器的實施方式的方塊圖。
圖8係一對串聯耦接在一起的兩個來源浮點加法器的實施方式的方塊圖。
圖9係具有耦接輸出端與輸入端的再循環路徑的兩個來源浮點加法器的實施方式的方塊圖。
圖10係三個來源浮點加法指令的合適指令格式的實施方式的方塊圖。
圖11係緊縮資料暫存器的合適組合的實施方 式的方塊圖。
圖12係顯示取決於緊縮資料寬度和資料元寬度的複數遮罩位元的表。
圖13係一組合適的運算遮罩暫存器的實施方式的方塊圖。
圖14A-14B係根據本發明實施方式顯示通用向量親合指令格式和其指令樣板的方塊圖。
圖15A係根據本發明實施方式顯示示範性特定向量親合指令格式的方塊圖。
圖15B係根據本發明的一種實施方式顯示構成完整運算碼欄位的特定向量親合指令格式的欄位的方塊圖。
圖15C係根據本發明的一種實施方式顯示構成暫存器索引欄位的特定向量親合指令格式的欄位的方塊圖。
圖15D係根據本發明的一種實施方式顯示構成增強運算欄位的特定向量親合指令格式的欄位的方塊圖。
圖16係暫存器架構的實施方式的方塊圖。
圖17A係顯示依序管線的實施方式和暫存器重命名亂序問題/執行管線的實施方式的方塊圖。
圖17B係顯示包括耦接到執行引擎單元的前端單元和均耦接到記憶體單元的處理器核心的實施方式的方塊圖。
圖18A係單一處理器核心,伴隨其連接至晶片上的內連線網路,及第2級(L2)內部快取記憶體的局部子集的實施方式的方塊圖。
圖18B係圖18A的處理器核心的部分放大圖的實施方式的方塊圖。
圖19係可具有一個以上的核心的處理器、可具有整合記憶體控制器且可具有整合圖形的實施方式的方塊圖。
圖20係電腦架構的第一實施方式的方塊圖。
圖21係電腦架構的第二實施方式的方塊圖。
圖22係電腦架構的第三實施方式的方塊圖。
圖23係電腦架構的第四實施方式的方塊圖。
圖24係根據本發明實施方式利用軟體指令轉換器以轉換位於來源指令集的二進制指令至位於目的地指令集的二進制指令的方塊圖。
【發明內容及實施方式】
本文所揭露的三個來源運算元浮點加法指令、用以執行該指令的處理器、當處理或執行該指令時藉由該處理器執行的方法,以及結合一個以上處理器以處理或執行該指令的系統。在以下的描述中,許多具體細節被闡述(例如特定的指令運算、資料格式、處理器配置、微架構細節、運算序列等)。然而,實施方式可在沒有這些具體細節的情況下實施。在其它實例中,眾所周知的電 路、架構和技術沒有被詳細顯示,以避免模糊對描述的理解。
圖1係運算以執行三個來源浮點加法指令102的處理器100的實施方式的方塊圖。在一些實施方式中,該處理器可以是通用處理器(例如,該類型常在桌上型、筆記型或其它電腦中使用)。可替代地,該處理器可以是特殊用途處理器。合適的特殊用途處理器的例子包括但不限於圖形處理器、網路處理器、通信處理器、密碼處理器、協同處理器、嵌入式處理器、數位信號處理器(DSP)和控制器(例如微控制器)。該處理器可以是任何各種的複雜指令集計算(CISC)處理器、精簡指令集計算(RISC)處理器、超長指令字集(VLIW)處理器、其各種混合或其它類型的處理器。
在運算過程中,處理器100可接收三個來源浮點加法指令102的實施方式,例如該三個來源浮點加法指令可以從指令提取單元、指令佇列或類似物被接收。該三個來源浮點加法指令可表示巨集指令、組合語言指令、機器碼指令或處理器的指令集的指令或控制信號。在一些實施方式中,該三個來源浮點加法指令可以明確指定(例如,藉由一個以上欄位或一組位元),或以其它方式表示(例如,隱含地表示,藉由模擬暫存器映射被映射到暫存器等),第一來源運算元112係具有一個以上第一浮點資料元、可以指定或以其它方式表示第二來源運算元114係具有一個以上第二浮點資料元、可以指定或以其它方式表 示第三來源運算元116係具有至少第三浮點資料元,並且可以指定或以其它方式表示目的地運算元(例如,目的地儲存位置),其中結果118將被儲存。
再次參照圖1,該處理器包括解碼單元或解碼器104,該解碼單元可以接收並解碼三個來源浮點加法指令102,該解碼單元可以輸出一個以上微指令、微運算、微編碼進入點、已解碼指令、控制信號或其它相對較低階層的指令或控制信號其反映、代表和/或源自該三個來源浮點加法指令。該一個以上較低階層的指令或控制信號可藉由一個以上較低階層的(例如,電路級或硬體級)的運算實現較高階層的三個來源浮點加法指令。在一些實施方式中,該解碼單元可包括一個以上輸入架構(例如埠、內連線、介面等),以接收該指令、指令識別和耦接到該輸入架構的解碼邏輯,以接收、識別和解碼指令成該一個以上對應的較低階層的指令或控制信號,和一個以上與指令識別耦接的輸出架構(例如埠、內連線、介面等)和解碼邏輯來輸出該一個以上對應的較低階層指令或控制信號。該解碼單元可使用各種不同的機制被實現,包括但不限於微編碼、唯讀記憶體(ROM)、查找表、硬體實現、可程式邏輯陣列(PLA)和本領域中已知的其它機制。
在一些實施方式中,三個來源浮點加法指令不直接提供給解碼單元、指令模擬器、翻譯器、變形器、直譯器或其它指令轉換模組可選擇性地被使用。各種不同類型的指令轉換模組在所屬領域中為已知,並且可以軟 體、硬體、韌體或其組合來實現。在一些實施方式中,該指令轉換模組可位於該指令處理處理器外,例如在獨立的晶片和/或在記憶體中(例如,靜態的、動態的或運行時指令模擬模組)。舉例而言,指令轉換模組可以接收該三個來源浮點加法指令,其可是第一指令集且可以模擬、翻譯、變形、直譯或以其它方式轉換該三個來源浮點加法指令到一個以上對應的或衍生的中間指令或控制信號,其可以是不同的第二指令集。該一個以上中間指令或該第二指令集的控制信號可以被提供給一個解碼單元,其可解碼所接收的一個以上指令或該第二指令集的控制信號至可由該處理器的本機硬體執行的一個以上較低階層的指令或控制信號(例如,一個以上執行單元)。
該處理器還包括一組暫存器110,每個暫存器可以表示晶片上的儲存位置,其可運算以儲存浮點資料。舉例而言,該暫存器可以是浮點暫存器運算以儲存浮點資料元、緊縮資料暫存器運算以儲存緊縮或純量浮點資料元或類似物。該暫存器可以表示架構或架構上可見的暫存器(例如架構暫存器檔案),其可見於軟體和/或程式設計師和/或係藉由該處理器的指令集的指令所指示以識別運算元的暫存器。這些架構暫存器對比於其它非架構或非架構可見暫存器在給定的微架構(例如臨時暫存器、重新排序緩衝器、隱私暫存器等)。該暫存器可使用眾所周知的技術在不同的微架構以不同的方式來實現,並且不限於任何特定類型的電路。合適類型的暫存器的例子包括但不限 於特殊用途實體實體暫存器、使用暫存器重命名的動態分配實體實體暫存器以及其組合。
在一些實施方式中,該第一來源運算元112可選擇性地儲存在該組的第一暫存器中,第二來源運算元114可選擇性地儲存在該組的第二暫存器中,第三來源運算元116可選擇性地被儲存在該組的第三暫存器中,而目的地運算元可以選擇性被儲存在該組的第四暫存器。在一些情況下,用於該目的地運算元的暫存器可與用於第一、第二和第三來源運算元的暫存器不同。在其它情況下,用於來源運算元其中之一的該暫存器可重複使用於目的地運算元(例如該結果可能被寫在來源運算元之一)。可替代地,記憶體位置或其它儲存位置可選擇性地用於一個以上這些運算元。
再次參考圖1,執行單元106係與解碼單元104和該組暫存器110耦接。在一些實施方式中,該執行單元也可與可選的緊縮資料運算遮罩暫存器120和/或可選的緊縮資料運算遮罩122耦接,如將在下面進一步描述的,儘管這不是必需的。該執行單元可以接收表示和/或從該三個來源浮點加法指令得出的一個以上完成解碼的或以其它方式轉換的指令或控制信號。該執行單元也可接收具有至少該第一浮點資料元的該第一來源運算元112、具有至少該第二浮點資料元的該第來源運算元114,和具有至少該第三浮點資料元的該第三來源運算元116。該執行單元係運算以回應和/或作為該三個來源浮點加法指令的 結果(例如回應於一個以上指令或從指令直接或間接地(例如藉由模擬)解碼的控制信號),以儲存位於由該指令所指示的目的地運算元的該結果118。在一些實施方式中,該結果可包括對應於該第一、第二和第三浮點資料元的一個以上結果浮點資料元。在一些實施方式中,該結果浮點資料元可包括一個以上第一浮點數值簡化總和。該第一浮點數值簡化總和係浮點數並在適當的時候使用浮點數值簡化完成數值簡化。在一些實施方式中,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合。在一些實施方式中,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合。在一些實施方式中,該結果可為任何那些於圖3-6顯示和描述的,儘管本發明的範圍並不如此侷限。
為清楚起見,如這裡所使用的,第一值和第二值的「加法結合」被用來指總和,其允許第一值和第二值中沒有、或者其一、或兩者為負數。例如,第二浮點數值簡化總和與該第三浮點資料元的加法結合可包括將該第三浮點資料元加到第二浮點數值簡化總和的總和,或將該第二浮點數值簡化總和加到該第三浮點資料元的負數的總和。同樣地,該第一和第二浮點資料元的加法結合可包括該第一浮點資料元加到該第二浮點資料元的總和、該第一浮點資料元加到該第二浮點資料元的負數的總和、該第一浮點資料元的負數加到該第二浮點資料元的負數的總和,或者該第一浮點資料元的負數加到第二浮點資料元的總 和。將在下面進一步解釋,一些但並非所有實施方式可選擇性地允許任何一個、兩個或所有資料元選擇性地在加法前取負數,雖然這不是必需的(例如,另一實施方式中不容許這種負數的可能性)。
較佳地,該三個來源浮點加法指令可在單一指令的執行範圍內執行兩個加法(例如,巨集指令,指令集的指令等)。傳統上,將需要兩個不同的指令。用一個指令同時執行兩個加法的能力可能傾向於提供一定的效能和/或功率的好處。首先,兩個加法都可藉由解碼單一指令,而不是解碼兩個獨立的指令來執行。這可藉由為另一個指令釋放解碼空檔,有助於提高指令解碼生產量。這也可有助於減少功率消耗的數量,因為少了一個指令被解碼以完成兩個加法。效能的改善也可藉由避免將兩個加法其中之一的中間總和寫入到架構暫存器,以及從架構暫存器隨後讀取中間總和以執行第二個加法來實現。這樣的寫入和從架構暫存器讀取通常會產生額外的時間或等待時間(例如,幾個時脈週期的數量級)。這也可有助於避免佔用該架構暫存器並有助於減少暫存器重命名運算的數量。消除了讀取、寫入和暫存器重命名運算也可有助於降低功率消耗。某些處理器,降低功率消耗本身可導致更高的效能,因為某些處理器(例如,特別是那些用於高效能計算的)可能傾向效能限制於可用功率消耗。因此,降低功率消耗也可導致更高的效能。
當浮點運算(例如,浮點加法)的確切結果 需要比在有效位數的位數更多的位數,浮點數值簡化可被使用。在一些實施方式中,該結果可以反映兩個不同的浮點數值簡化運算而不是單一的浮點數值簡化運算。具體地,第一初始浮點數值簡化運算可為了關於該第一和第二浮點資料元的總和被執行,以產生第一數值簡化總和,接著第二隨後的浮點數值簡化運算可為了關於該第三浮點資料元和該第一數值簡化總和的總和被執行。如將在下面進一步解釋的,這兩個浮點數值簡化運算能反映指令的微架構實現。例如,在一些實施方式中,用於實現該指令的微架構可使用不能同時三個浮點值相加的邏輯。作為一個例子,如將在下面進一步解釋的,兩個浮點加法器可以串聯使用,並且各自執行並行的只有兩個浮點值的加法。例如,在第一加法器中,兩個浮點值的加總可以被執行,然後第一浮點數值簡化運算可對該總和執行,然後在第二加法器中,第三浮點值和數值簡化總和的加總可以被執行,然後第二數值簡化運算可以在第二加法器的總和輸出進行。
作為另一個例子,如將在下面進一步解釋的,單一的浮點加法器可以被再循環使用,並且在每個週期期間或藉由只有兩個浮點值的並行加法可以被執行的加法器。例如,在一階段中,兩個浮點值的總和可以被執行,然後第一浮點數值簡化運算可以針對該總和被執行,然後在第二階段中,第三浮點值與該來自第一階段的數值簡化後總和的總和可以被執行,然後第二數值簡化運算可 在第二階段中的加法器的輸出上執行。如將在下面進一步解釋的,這種微架構的實現有諸多優點,例如,如避免需要包括特殊用途和/或一般的大或複雜的邏輯來執行三個浮點值的並行加法。關於這兩次浮點數值簡化運算的結果可能與如果執行單一數值簡化運算略有不同,並反映這種微架構實現。
在一些實施方式中,相同類型的數值簡化運算或數值簡化模式可被使用於同時發生的數值簡化。不同類型的數值簡化運算或數值簡化模式均適用於各種實施方式。合適的數值簡化模式的實例包括但不限於以下:(1)數值簡化至最接近的偶數;(2)朝向負無限大向下數值簡化;(3)朝向正無限大向上數值簡化;(4)以捨去朝向零數值簡化。
在一些實施方式中,該三個來源浮點加法指令可具有用於該指令本身內嵌入數值簡化模式控制支援,雖然這不是必需的。以往,數值簡化模式控制一般規定在浮點控制和狀態暫存器(例如,MXCSR)。有些指令能夠藉由立即運算元中的編碼欄位,提供每個指令數值簡化覆蓋。在一些實施方式中,每個指令數值簡化模式覆蓋控制可藉由指令的編碼和立即的外部被提供。作為一個例子,在一些實施方式中,數值簡化模式控制可以被嵌入在前置(例如,EVEX前置)作為靜態或每個指令數值簡化模式覆蓋控制。這可以允許程式設計人員靜態應用特定的數值簡化模式,其可在浮點控制和狀態暫存器(例如, MXCSR)覆蓋數值簡化模式。在一些實施方式中,當這樣的數值簡化模式控制係藉由指令編碼被提供,所有浮點異常的報告的抑制可選擇性地被隱含。不管或無論任何特定的遮罩位元,用以抑制或不抑制在浮點控制和狀態暫存器(例如,MXCSR)中對應的浮點異常的報告,所有浮點異常的報告的抑制可能發生。這些浮點異常的報告的抑制可能意味著,當這樣的浮點異常發生時,在浮點控制和狀態暫存器(例如,MXCSR)的位元或旗標可能不被更新(例如,它們可能不被報告)。
再次參考圖1,執行單元106和/或處理器100可包括特定的或特別的邏輯(例如,電晶體、積體電路或其它可能與韌體結合的硬體(例如,儲存在非揮發性記憶體的指令)和/或軟體),其可運算以執行三個來源浮點加法指令和/或儲存該結果以回應和/或作為該三個來源浮點加法指令的結果(例如,回應於一個以上指令或控制信號解碼或以其它方式來自於該三個來源浮點加法指令)。執行單元可包括浮點加法邏輯108。藉由示例的方式,該執行單元和/或該浮點加法邏輯可包括浮點加法器、浮點積和熔加器(FMA)、浮點算術單元、浮點算術邏輯單元或類似物。在一些實施方式中,執行單元可包括一個以上輸入架構(例如,埠、內連線、介面等),用以接收來源運算元、浮點加法電路或與該輸入架構耦接的邏輯,用以接收和處理該來源運算元並產生結果,以及一個以上輸出架構(例如,埠、內連線、介面等),其與浮點 加法電路或邏輯耦接,用以輸出該結果。在一些實施方式中,執行單元可包括圖7~9中顯示和描述的任何一個以上電路或邏輯,其為合適的微架構安排說明性實施例,雖然本發明的範圍並不侷限於此。
為避免模糊描述,相對簡單的處理器100已經被顯示和描述。在其它實施方式中,該處理器可選擇性地包括其它眾所周知的處理器元件。此類元件的可能實例包括但不限於,指令提取單元、指令和資料快取記憶體、第二或更高階層的快取記憶體、亂序執行邏輯、指令排程單元、暫存器重命名單元、失效單元、匯流排介面單元、指令和資料轉譯後備緩衝區、預提取緩衝器、微指令佇列、微指令序列、其它包括在處理器內的元件,以及它們的各種組合。這些元件的許多不同組合和配置是適用的。實施方式不限於任何已知的組合或配置。此外,實施方式可以被包括在具有多核心的處理器、邏輯處理器或執行引擎,其中至少之一具有解碼單元和執行單元,用以執行三個來源浮點加法指令的實施方式。
圖2係執行三個來源浮點加法指令的實施方式的方法225的實施方式的方塊流程圖。在各種實施方式中,該方法可以由處理器、指令處理裝置或其它的數位邏輯裝置執行。在一些實施方式中,該運算和/或圖2的方法可藉由和/或在圖1的處理器中被執行。本文描述的用於圖1的處理器的元件、特徵和具體的選擇性細節也選擇性應用於圖2的運算和/或方法。可替換地,圖2的運算 和/或方法可藉由和/或在類似的或不同的處理器或裝置中被執行。此外,圖1的處理器可以執行與圖2中相同、類似或不同的運算和/或方法。
在方塊226中,該方法包括接收該三個來源浮點加法指令。以各種觀點,該指令可以在處理器、指令處理裝置或其部分被接收(例如,指令提取單元、解碼單元、匯流排介面單元等)。以各種觀點,該指令可以從晶粒外的來源接收(例如,從記憶體、內連線等),或從晶粒上的來源(例如,從指令快取記憶體、指令佇列等)。該三個來源浮點加法指令可以指定或以其它方式指示具有至少一個第一浮點資料元的第一來源運算元、可以指定或以其它方式指示具有至少一個第二浮點資料元的第二來源運算元,並且可以指定或以其它方式指示具有至少一個第三浮點資料元的第三來源運算元。
在方塊227中,回應於和/或作為三個來源浮點加法指令的結果,結果被儲存在目的地運算元。該目的地運算元可以指定或由三個來源浮點加法指令以其它方式指示。代表性地,執行單元、指示處理裝置或處理器可以執行指令並儲存結果。該結果可包括對應於該第一、第二和第三浮點資料元的至少一個結果浮點資料元。該結果浮點資料元可包括第一浮點數值簡化總和。在一些實施方式中,該第一浮點數值簡化總和可表示第二浮點數值簡化總和與該第三浮點資料元的加法結合。在一些實施方式中,該第二浮點數值簡化總和可表示第一浮點資料元和第 二浮點資料元的加法組合。在一些實施方式中,結果可能是任何那些在任何圖3~6所顯示和描述的,儘管本發明的範圍並不如此侷限。
圖示的方法關於架構運算(例如,可從軟體的角度來看)。在其它實施方式中,該方法可以選擇性地包括一個以上微架構運算。舉例而言,該指令可以被提取、解碼,來源運算元可以被存取,執行單元可以執行微架構操以實現該指令等。在一些實施方式中,該微架構運算用以實現可選擇地包括任何那些對任何圖3~6或圖7~9中所顯示和所描述的指令。例如,在一些實施方式中,該第二浮點數值簡化總和可以選擇性地從第一浮點加法器被提供至第二浮點加法器。作為另一實例,在一些實施方式中,該第二浮點數值簡化總和可以選擇性地從浮點加法器的輸出再循環至該浮點加法器的輸入端。
圖3係方塊圖,其顯示回應於緊縮三個來源浮點選擇性遮罩加法指令的實施方式,緊縮三個來源浮點選擇性遮罩加法運算330可被執行的實施方式。該指令可以指定(例如,明確地指定)或以其它方式表示(例如,隱含地指示)第一來源緊縮資料運算元312、第二來源緊縮資料運算元314和第三來源緊縮資料運算元316。該第一來源緊縮資料運算元可以具有多個第一緊縮浮點資料元A1-AN。第二來源緊縮資料運算元可具有多個第二緊縮浮點資料元B1~BN。第三來源緊縮資料運算元可以具有多個第三緊縮浮點資料元C1-CN。在該第一來源緊縮資料運 算元中的每個資料元可以對應於在該第二來源緊縮資料運算元中的不同資料元,以及在該第三來源緊縮資料運算元中的不同資料元,在該運算元中對應的相對位置。例如,A1、B1和C1可以彼此對應,AN、BN與CN可以彼此對應,並依此類推。
通常,在每個來源緊縮資料運算元中的浮點資料元的數量可以等於該來源緊縮資料運算元的位元大小除以每個浮點資料元的位元大小。在各種實施方式中,每個來源緊縮資料運算元的寬度可以是64位元、128位元、256位元、512位元或1024位元,儘管本發明的範圍並不如此侷限。在各種實施方式中,每個浮點資料元可以是16位元的半精確度浮點資料元、32位元單精確度浮點資料元、64位元雙精確度浮點資料元、80位元雙擴展精確度格式或128元位四倍精確度浮點格式。在一些實施方式中,32位元單精確度或64位元雙精確度格式可以被支援,由於它們目前普遍地使用。其它緊縮資料運算元大小和資料元寬度也是適用的。在各種實施方式中,在每個來源緊縮資料運算元中,有至少兩個、至少四個、至少八個或大於八個浮點資料元。
再參照圖3,如圖所示,在一些實施方式中,指令也可選擇地指定或以其它方式指示來源緊縮資料運算遮罩322,儘管這不是必需的。該緊縮資料運算遮罩在本文中也可簡稱為運算遮罩、預測遮罩或遮罩。該來源緊縮資料運算遮罩可具有多個遮罩元M1-MN。各遮罩元可以對 應於來源資料元和/或在運算元內對應的相對位置中的結果資料元。例如,M1可以對應於A1、B1和C1
來源緊縮資料運算遮罩可以表示遮罩運算元、斷定運算元或條件控制運算元,其可用於斷定、有條件地控制或遮罩無論是否對應的緊縮資料運算被執行和/或對應的結果將被儲存。在一些實施方式中,遮罩或斷定可以是在每個資料元的粒度,使得在不同的三個對應資料元集合的運算可以被斷定或有條件地個別地和/或獨立於他者被控制。該遮罩可包括多個遮罩元、斷定元或條件控制元。以一觀點,該遮罩元可被包括在一對一的對應於對應的三個來源資料元集合和/或對應的結果資料元。如圖所示,在一些實施方式中,每個遮罩元可以是單一的遮罩位元。在這種情況下,遮罩可具有用於在該第一來源緊縮資料運算元中的每個資料元和/或在結果緊縮資料318中的每個結果資料元的位元。各遮罩位元的值可控制對應的緊縮資料運算是否被執行和/或對應的結果資料元是否被儲存。每個遮罩位元可具有第一值,以允許在對應的三個來源資料元集合執行運算,並允許對應的結果資料元被儲存在結果緊縮資料,或者可以具有不同的第二值,以不允許在對應的三個來源資料元集合執行運算,並不允許對應的結果資料元被儲存在結果緊縮資料。根據一種可能的慣例,如圖所示,遮罩位元被清除至二進制零(即,0)可表示遮蔽運算,其中遮蔽值取代被儲存在對應的結果資料元的運算結果。相對地,遮罩位元設置為二進制1(即, 1)可表示未遮蔽的運算,其中運算的結果可以被儲存在對應的結果資料元。在其它實施方式中,對立慣例可被使用,或兩個以上位元可以選擇性地被用於每個遮罩元(例如,每個遮罩元可以具有相同數目的位元,如同每個對應的來源資料元和一個以上最高有效位元或最低有效位元可被用於斷定)。
運算330的實施方式可以被執行以回應和/或作為指令的實施方式的結果。在緊縮資料運算遮罩322選擇地被使用的實施方式中,該操作也可被執行取決於遮蔽、預測或可選的來源緊縮資料運算遮罩的條件控制。結果緊縮資料318可以被生成(例如,藉由執行單元)並儲存在回應於該指令的目的地儲存位置。目的地儲存位置可以被指定或由指令表明。在各種實施方式中,目的地儲存位置可以是緊縮資料暫存器、記憶體位置或其它儲存位置。結果緊縮資料可包括複數個各對應於不同的三個來源資料元分組和不同的相對應遮罩元的資料元。
在選擇性緊縮資料運算遮罩被使用的實施方式中,對應於未遮蔽遮罩元的結果資料元可以具有取決於在對應的三個來源浮點資料元集合執行的運算的值。在圖示的例子中,最右邊的結果資料元對應於未遮蔽的運算並儲存取決於在來自第一、第二和第三來源緊縮資料運算元的相對應三個來源浮點資料元集合執行的值。具體而言,在一些實施方式中,最右邊的結果浮點資料元可以儲存第一浮點數值簡化總和(例如,RND1(C1+RND2(A1+ B1)),第一浮點數值簡化總和可表示第二浮點數值簡化總和(例如,RND2(A1+B1))和第三浮點資料元(例如,C1)的加法結合,第二浮點數值簡化總和(例如,RND2(A1+B1))可表示第一浮點資料元(例如,A1)和第二浮點資料元(例如,B1)的加法結合,該加法結合允許對該來源資料元(例如,任何一個以上的A1、B1和/或C1)選擇地或可能地被取負數。在這個例子中,RND1和RND2被用來指定兩個獨立依序採用浮點數值簡化運算(例如,RND2在RND1前被執行)。
相反地,在可選的緊縮資料運算遮罩322被使用的實施方式中,對應於遮蔽遮罩元的結果資料元可具有不取決於在對應的來源資料元對執行的運算的值。相反地,這些結果資料元可能具有被遮蔽的值(例如,固定的或預定的值)。例如,對應的運算不需要被執行,或者是如果對應的運算被執行而不需要將對應的結果儲存在結果緊縮資料。相反地,被遮蔽的值(例如,固定的或預定的值)可被儲存在對應的結果資料元。
在圖示的例子中,第N遮罩元MN具有被遮蔽的值(例如,在這種情況下,二進制零)。其結果是,對應的最左邊的結果資料元具有被遮蔽的值。該特定被遮蔽的值可取決於用於特定實現的遮罩類型。在一些實施方式中,歸零遮罩被使用。在歸零遮罩中,被遮蔽的結果資料元可被歸零(例如,被強制具有零的值)。在其它實施方式中,合併遮罩可以被使用。在合併遮罩中,被遮蔽的 結果資料元可以具有對應的來源資料元其中之一的值(例如,對應的來源資料元可藉由被遮蔽的結果資料元被傳遞)。例如,最左邊的結果資料元可以具有AN、BN,或CN其中之一的值。在其它實施方式中,其它結果資料元可以被遮蔽或不遮蔽。
圖4是顯示回應於純量三個來源浮點選擇性遮蔽加法指令的實施方式的純量三個來源浮點選擇性遮蔽加法運算432的實施方式的方塊圖。圖4的純量運算與圖3的緊縮運算具有一定的相似性,為避免模糊說明,對圖4的純量運算之不同的和/或附加的特徵將主要描述而不重複相對於圖3的緊縮運算的所有選擇性類似或共同特性和細節。然而,可以理解的是,前面描述的圖3的緊縮運算的特徵和細節,除了關於在各運算元中具有複數個資料元的觀點外,也可選擇性適用於圖4的純量運算,除非另有說明或另外明確地顯現。
該指令可以指定(例如,明確地指定)或以其它方式指示(例如,隱含地指示)第一來源運算元412、第二來源運算元414和第三來源運算元416。該第一來源運算元可以具有第一浮點資料元A,該第二來源運算元可以具有第二浮點資料元B,該第三來源運算元可以具有第三浮點資料元C。該資料元A、B和C可以對應於彼此。針對圖3所述的浮點資料元的前述類型是適用的。
在一些實施方式中,該資料元A、B和C可用純量格式被儲存在各個緊縮資料暫存器。該緊縮資料暫 存器可比浮點資料元A、B和C具有較大位元寬度。例如,在各種實施方式中,各緊縮資料暫存器的寬度可以是64位元、128位元、256元、512元或1024位元,儘管本發明的範圍並不如此侷限。在一個特定實例中,128位元的緊縮資料暫存器可以被使用,雖然這不是必需的。緊縮資料暫存器能夠儲存除了純量浮點資料元A、B和C的緊縮資料。
再次參考圖4,如圖所示,在一些實施方式中,指令也可選擇地指定或以其它方式指示來源運算遮罩422,儘管這不是必需的。該來源運算遮罩可以具有遮罩元M,該遮罩元M可以對應於來源資料元A、B和C,該遮罩元M也可以對應於在結果418中同一相對位置的結果資料元。該來源運算遮罩可以具有如先前針對圖3的來源緊縮資料運算遮罩所述的類似屬性和變化,主要例外為具有單一遮罩元而不是複數個。在此實施例中,該遮罩元未被遮蔽(例如,M=1)。在一些實施方式中,該來源運算遮罩可以被使用,即使只存在對應的單一純量元集合。
運算432的實施方式可以被執行以回應和/或作為指令的實施方式的結果。在緊縮資料運算遮罩422選擇地被使用的實施方式中,該運算也可取決於遮蔽、預測或可選的來源運算遮罩的條件控制被執行。結果418可以被生成(例如,藉由執行單元)並儲存在回應於該指令的目的地儲存位置。目的地儲存位置可以被指定或由指令 指示。在各種實施方式中,目的地儲存位置可以是暫存器、記憶體位置或其它儲存位置。結果可包括對應於來源資料元A、B、C以及遮罩元M的結果浮點資料元。
在圖示的例子中,由於遮罩元是未遮蔽(例如,M=1),該結果資料元儲存取決在對應的來源浮點資料元A、B和C集合執行的運算的值。具體而言,在一些實施方式中,該結果浮點資料元可以儲存第一浮點數值簡化總和(例如,RND1(C+RND2(A+B)),第一浮點數值簡化總和可表示第二浮點數值簡化總和(例如,RND2(A+B))和第三浮點資料元(例如,C)的加法結合,第二浮點數值簡化總和(例如,RND2(A+B))可表示第一浮點資料元(例如,A)和第二浮點資料元(例如,B)的加法結合,該加法結合允許對任何一個以上的A、B和/或C選擇地或可能地被取負數。RND1和RND2被用來指定兩個獨立依序採用浮點數值簡化運算。
在替代實施方式中,如果該遮罩元被遮蔽(例如,如果M=0),則結果資料元取而代之儲存被遮蔽的值(例如,固定的或預定的值)。針對圖3提及前述被遮蔽的值是適用的(例如,在歸零遮罩的情況下或A、B或C在合併遮罩的情況下為0)。
圖5是顯示可被執行以回應於緊縮三個來源浮點選擇性遮蔽選擇性負數控制加法指令的實施方式的緊縮三個來源浮點選擇性遮蔽選擇性負數控制加法運算534的實施方式的方塊圖。圖5的選擇性負數控制運算與圖3 的運算具有一定的相似性,為避免模糊說明,對圖5的選擇性負數控制運算之不同的和/或附加的特徵將主要描述而不重複相對於圖3的運算的所有選擇性類似或共同特性和細節。然而,可以理解的是,前面描述的圖3的運算的特徵和細節,也可選擇性適用於圖5的選擇性負數控制運算,除非另有說明或另外明確地顯現。
該指令可以指定或以其它方式指示具有浮點資料元A1-AN的第一來源運算元512、具有浮點資料元B1-BN的第二來源運算元514和具有浮點資料元C1-CN的第三來源運算元516。該來源緊縮資料運算元和資料元可以具有如前述的特性和變化(例如,對於圖3)。
在一些實施方式中,該指令也可有選擇地指定或以其它方式指示來源緊縮資料運算遮罩522,儘管這不是必需的。該來源緊縮資料運算遮罩可具有遮罩元M1-MN。該來源緊縮資料運算遮罩和該遮罩元可具有如前述的特徵和變化(例如,對於圖3)。在圖示的例子中,遮罩元M1和MN都是未遮蔽(例如,M1=1和MN=1)。
在一些實施方式中,指令可選擇地具有一個以上的負數控制位元,儘管這不是必需的。一個以上的負數控制位元可允許軟體和/或程式設計者用以控制來源運算元中的一個以上或全部負數。在一些實施方式中,指令可具有對應於第一來源運算元512以指定是否所有的第一來源運算元的緊縮浮點資料元(例如,A1-AN)要被取負數的第一組一個以上位元536。在一些實施方式中,指令 也可或替代地具有對應於第二來源運算元514以指定是否所有的第二來源運算元的緊縮浮點資料元(例如,B1-BN)要被取負數的第二組一個以上位元538。在一些實施方式中,指令也可或替代地具有對應於第三來源運算元522以指定是否所有的第三來源運算元的緊縮浮點資料元(例如,C1-CN)要被取負數的第三組一個以上位元540。
在一些實施方式中,單一位元可對應於每個各自的來源緊縮資料運算元並且可以被用來提供用於該來源緊縮資料運算元的負數控制。根據一種可能的慣例,負數控制的各單一位元可以被設置為二進制1(即,1)來指定對應的來源緊縮資料的所有資料元被取負數,或者取而代之被清除為二進制零(即,0)來指定對應的來源緊縮資料運算元的所有資料元不被取負數。例如,第一位元536可以被設置以指定該第一來源運算元(如A1-AN)的所有資料元都被取負數,或被清除以指示它們不被取負數。類似地,第二位元538可以被設置以指定該第二來源運算元(如B1-BN)的所有資料元都被取負數,或被清除以指示它們不被取負數。同樣地,第三位元540可以被設置以指定該第三來源運算元(如C1-CN)的所有資料元都被取負數,或被清除以指示它們不被取負數。
在一些實施方式中,可能有單一組負數控制的一個以上位元,其可對應與提供用於第一、第二和第三來源緊縮資料中任何的負數控制。在其它實施方式中,可 以有兩組負數控制的一個以上位元,其可對應與提供第一、第二和第三來源緊縮資料中任何兩個的負數控制。可替代地,可以有三組負數控制的一個以上位元,其可對應與提供第一、第二和第三來源緊縮資料所有三個的負數控制。
在一些實施方式中,負數控制位元可選擇性地由該指令的立即值542所提供。例如,在一個特定實施例中,8位元的立即可選擇性地被使用,並且對應於第一來源緊縮資料的單一位元536可由位元imm8[0]所提供,對應於第二來源緊縮資料的單一位元538可由位元imm8[1]所提供以及對應於第三來源緊縮資料的單一位元540可由位元imm8[2]所提供。在其它實施方式中,其它大小的立即值可選擇性地被使用,例如,如2位元的立即值、4位元的立即值、6位元的立即值等等。在其它實施方式中,其它位元的這種立即值可選擇性地使用和/或可以不同的方式對應於來源緊縮資料。作為另一種選擇,不使用立即值,負數控制位元可以由指令所提供(例如,作為運算碼的一部分,作為指令的另一個欄位等)。
再次參照圖5,在圖示的例子中,負數控制的單一位元被用於對應於每個來源緊縮資料。此外,該位元被設置以指定取負數或被清除以指定不取負數。在圖示的例子中,對應於第一來源緊縮資料的位元被清除,且對應於第三來源緊縮資料的位元被清除。因此,第一來源緊縮資料(例如,A1~AN)和第三來源緊縮資料(例如,C1~ CN)的資料元將不會被取負數。與此相反,對應於該第二來源緊縮資料的位元被設置,並且該第二來源緊縮資料的資料元(例如,B1~BN)將被取負數。
運算534的實施方式可以被執行以回應和/或作為指令的實施方式的結果。結果緊縮資料518可以被生成(例如,藉由執行單元)並儲存在回應於該指令的目的地儲存位置。該結果緊縮資料可包括複數個結果資料元。在圖示的實施例中,最右邊的結果浮點資料元可以儲存第一浮點數值簡化總和(例如,RND1(C1+RND2(A1+(-B1))),和最左邊的結果浮點資料元可以儲存第N個浮點數值簡化總和(例如,RND1(CN+RND2(AN+(-BN)))。請注意,資料元B1到BN基於由第二位元538提供的數值簡化控制被取負數。第一和第N浮點數值簡化總和可各代表各自的另一浮點數值簡化總和的加法結合(例如,RND2(A1+(-B1))或RND2(AN+(-BN)))以及來自第三來源緊縮資料的對應浮點資料元(例如,C或CN)。該加法結合允許針對該來源資料元,在這種情況下,B1~BN,選擇性地或潛在地被取負數。
較佳地,指令指定負數控制的能力可選擇性地被使用以增加指令的靈活性(例如,藉由允許一個以上來源被減去)。可替代地,取負數可以選擇性地在緊縮三個來源浮點加法指令的執行的範圍之外(例如,藉由一個以上其它指令)被執行。
表1提供緊縮三個來源雙精確度浮點遮蔽和 負數控制加法指令(命名為VADD3PD)的特定實施例描述。在一些實施方式中,該指令可具有格式VADD3PD zmm1{k1}{z},zmm2,zmm3/m512,imm8{er}。在一些實施方式中,該指令可在EVEX被編碼為EVEX.U1.NDS.512.F3.0F3A.W1 68/r/is4。
下面列出的是偽編碼VADD3PD指令。DEST是第一來源運算元和目的地運算元。SRC2是第二來源運算元。SRC3是第三來源運算元。VL是位元長度的向量,在此情況下為512位元。KL是位元長度的遮罩,在此情況下為8位元。EVEX.b位元用於嵌入數值簡化控制和異常抑制。k1為來源運算遮罩。IMM8是8位元立即值。「i」和「j」是計數器。在其它實施方式中,暫存器可以由記憶體或其它儲存位置取代。
表2提供提供緊縮三個來源單精確度浮點遮蔽和負數控制加法指令(命名為VADD3PS)的特定實施例描述。
VADD3PS指令的偽碼係類似於上面列出的 VADD3PD指令的偽碼,除了32位元而不是64位元的資料元被使用,並且兩倍寬的運算遮罩被使用。在其它實施方式中,暫存器可以由記憶體或其它儲存位置替換。
這些合適的指令實施方式只是說明性的例子。其它實施方式可以使用任何更窄或更寬的來源緊縮資料運算元和/或可以使用不同大小的浮點資料元。其它實施方式可以不使用遮蔽/預測。其它實施方式可能不使用負數控制。其它實施方式可以指定或指示不同的來源和/或目的地運算元。
圖6是顯示可被執行以回應於純量三個來源浮點選擇性遮蔽選擇性負數控制加法指令的實施方式的純量三個來源浮點選擇性遮蔽選擇性負數控制加法運算644的實施方式的方塊圖。圖6的純量選擇性負數控制運算與圖4的純量運算具有一定的相似性但合併相似於圖5的緊縮運算的可選的負數控制。為避免模糊說明,將提供對圖6的簡要說明而不重複相對於圖4~5的運算的所有選擇性類似或共同特性和細節。然而,可以理解的是,前面描述的圖4的純量運算的特徵和細節和圖5的運算的可選的負數控制方面,也可選擇性適用於圖6的運算,除非另有說明或另外明確地顯現。
如結合圖4的純量運算,該指令可以指定或以其它方式指示具有資料元A的第一來源運算元612、具有資料元B的第二來源運算元614以及具有資料元C的第三來源運算元616。該來源運算元和資料元可具有如先 前所描述的(例如,對於圖4)特徵和變化。
在一些實施方式中,指令也可有選擇地指定或以其它方式指示來源運算遮罩622,儘管這不是必需的。來源運算遮罩和遮罩元可具有如先前所描述的(例如,對於圖4)特徵和變化。在圖示的例子中,遮罩元M不被遮蔽(例如,M=1)。
在一些實施方式中,指令可選擇性具有負數控制的一個以上位元,儘管這不是必需的。例如,在所示實施方式中,指令具有第一位元636、第二位元638和第三位元640,儘管本發明的範圍並不如此侷限。這些位元可以選擇性地在立即值642,儘管本發明的範圍並不如此侷限。在其它實施方式中,指令可具有負數控制的前述用於圖5的運算的任何特徵、特性以及變化,除了負數控制在此純量實施方式中被施加到在來源運算元中的單一來源資料元。在顯示的實施例中,第一位元636被設置以控制資料元A的負數化,第二位元638被清除以控制資料元B不負數化,以及第三位元640被設定以控制資料元C的負數化。因此,在本實施方式中,結果可以儲存為單一結果資料元的第一浮點數值簡化總和(例如,RND1((-C)+RND2((-A)+B)))。但應當理解的是,特定來源運算元被取負數僅用於說明的目的,並且與其它實施方式中的來源運算元是否被取負數不同。
表3提供純量三個來源雙精確度浮點遮蔽和負數控制加法指令(被命名為VADD3SD)的特定實施例的 描述。在一些實施方式中,指令可具有格式VADD3SD xmm1{k1}{z},xmm2,xmm 3/m64,imm8{er}。在一些實施方式中,該指令可在EVEX被編碼為EVEX.U1.NDS.128.F3.0F3A.W1 69/r/is4。
下面列出的是VADD3SD指令的偽碼。DEST是第一來源運算元和目的地運算元。SRC2是第二來源運算元。SRC3是第三來源運算元。EVEX.b位元用於嵌入數值簡化控制和異常抑制。k1為來源運算遮罩。IMM8是8位元立即值。在其它實施方式中,暫存器可以由記憶體或其它儲存位置取代。
表4提供純量三個來源單精確度浮點遮蔽和負數控制加法指令(被命名為VADD3SS)的特定實施例的描述。
VADD3SS指令的偽碼係類似於上面列出的 VADD3SD指令的偽碼,除了32位元取代64位元的資料元被使用。在其它實施方式中,暫存器可以由記憶體或其它儲存位置取代。
這些合適的指令實施方式只是說明性的例子。其它實施方式可以使用不同大小的浮點資料元。其它實施方式可以不使用遮蔽/預測。其它實施方式可能不使用負數控制。其它實施方式可以指定或指示不同的來源和/或目的地運算元。
圖7是用以相加三個來源浮點運算元的三個來源浮點加法器707的實施方式的方塊圖。在本實施方式中,三個來源浮點加法器能夠同時接收並相加第一來源浮點運算元712、第二來源浮點運算元714和第三來源浮點運算元716,並產生潛在的數值簡化結果750。該加法器具有輸入端以同時接收該三個來源運算元,且通常能夠在一並行加法運算將它們相加。在這樣的實施方式中,一般不需要且不進行中間數值簡化和常態化運算。然而,利用這種三個來源浮點加法器的潛在缺點是,它們通常傾向於具有相對更複雜的設計,往往傾向於大、消耗相對多的功率,並且往往傾向於相當專門的。
許多處理器已經具有或可容易地具有,各自能夠同時相加兩個來源浮點運算元的一個以上兩個來源浮點加法器,但其不能夠同時相加三個來源浮點運算元。這種加法器的實例包括常規的浮點加法器、融合乘法加法器和類似物。在一些實施方式中,如現有的兩個來源浮點加 法器可以被用於實現如本文所揭露的三個來源浮點加法指令/運算,以避免需要包括如圖7所示的專門的三個來源浮點加法器。
圖8是串聯耦接在一起以相加三個來源浮點運算元的兩個來源浮點加法器808A、808B的實施方式的方塊圖。舉例而言,加法器可包括浮點加法器、浮點融合乘法加法器或類似物。第一兩個來源運算元浮點加法器808A具有耦接以接收第一浮點運算元812和第二浮點運算元814的輸入端。該兩個來源運算元浮點加法器還具有耦接以接收對應於和/或來自於三個來源浮點加法指令的控制信號802的輸入端。例如,控制信號可以從保留站接收(未顯示)。在一些實施方式中,該控制信號或其可選的簡化版本,也可選擇性地被提供到可選的緩衝器854。該第一兩個來源運算元浮點加法器能夠將第一和第二浮點運算元相加,以產生關於第一和第二運算元的第一數值簡化總和852。該第一數值簡化總和係根據浮點數值簡化模式在適當時被數值簡化。該第一兩個來源運算元浮點加法器有輸出端以提供第一數值簡化總和。第二兩個來源浮點加法器808B具有耦接第一加法器的輸出端的輸入端以接收該第一數值簡化總和。該第二兩個來源浮點加法器還具有耦接以接收第三浮點運算元816的輸入端。該第二兩個來源浮點加法器還具有與緩衝器854的輸出端耦接的輸入端以接收控制信號802或其簡化版本。該控制信號可以被儲存在緩衝器一段時間,同時由第一加法器產生第一數值 簡化總和,然後控制信號隨著該第一數值簡化總和可被提供到第二加法器。第二兩個來源運算元浮點加法器能夠將第三浮點運算元和該第一數值簡化總和相加,以產生關於所有三個來源浮點運算元的第二數值簡化總和818。該第二兩個來源運算元浮點加法器具有輸出端,以提供該第二數值簡化總和。較佳地,在本實施方式中,三個來源浮點運算元可被一起相加而無需包括三個來源浮點加法器,其可有助於減少設計、大小和/或功率消耗的複雜性。
圖9係具有耦接該加法器的輸出端與該加法器的輸入端的再循環路徑956的兩個來源浮點加法器908的實施方式的方塊圖。舉例而言,加法器可包括浮點加法器、浮點融合乘法加法器或類似物。兩個來源運算元浮點加法器具有耦接以接收第一浮點運算元912和第二浮點運算元914的第一和第二輸入端。兩個來源運算元浮點加法器還具有輸入端耦接以接收對應於和/或來自於三個來源浮點加法指令的控制信號902。例如,控制信號可以從保留站接收(未顯示)。兩個來源運算元浮點加法器能夠將第一和第二浮點運算元相加,以產生關於第一和第二來源運算元的第一數值簡化總和952。第一數值簡化總和係在適當時根據浮點數值簡化模式被數值簡化。兩個來源運算元浮點加法器具有與再循環路徑956耦接的輸出。再循環路徑可以從該加法器的輸出到該加法器的輸入耦接或通信第一數值簡化總和。再循環路徑可包括電路,例如線、電線、內連線、導電路徑或類似物,以耦接第一數值簡化總 和從該加法器的輸出返回到加法器的輸入。兩個來源浮點加法器還具有輸入端耦接以接收第三浮點運算元916。兩個來源浮點加法器還具有輸入端耦接緩衝器954的輸出以接收控制信號902。控制信號可以是在一段時間內儲存在緩衝器中,同時第一數值簡化總和係由該加法器產生,然後該控制信號可以隨著該第一數值簡化總和與該第三來源運算元被提供給加法器。兩個來源運算元浮點加法器能夠將第三浮點運算元和該第一數值簡化總和相加,以產生關於所有三個來源浮點運算元的第二數值簡化總和918。請注意,相同的兩個來源浮點加法器同時用於連續浮點加法運算。兩個來源運算元浮點加法器具有輸出,以提供該第二數值簡化總和918。較佳地,在本實施方式中,三個來源浮點運算元可被加在一起,而無需包括三個來源浮點加法器,其可有助於減少複雜的設計、大小和/或功率消耗。
圖10係用於三個來源浮點加法指令1002的合適指令格式的實施方式的方塊圖。指令格式包括運算碼或運算碼1060。運算碼可以代表多個位元或一個以上可運算以識別該指令和/或將要執行的運算的欄位(例如,三個來源浮點加法)。
指令格式還選擇性地包括第一來源說明符1061以指定第一來源運算元、第二來源說明符1062以指定第二來源運算元、第三來源說明符1063以指定第三來源運算元,以及目的地說明符1064以指定結果可以被儲 存的目的地運算元。舉例而言,這些說明符可包括位元或一個以上欄位以明確地指定暫存器位址、記憶體位置或其它相關聯運算元的儲存位置。或者,在另一實施方式中,一個以上的說明符可以選擇性地對於指令被隱含,而不是被明確指定。例如,在一些實施方式中,代替目的地說明符,用於來源運算元其中之一的相同儲存位置可以選擇性地被隱含地作為目的地運算元使用。舉例而言,來源/目的地暫存器可最初具有來源資料且之後來源資料可以被結果覆蓋。或者,在另一實施方式中,任何一個以上的明確的說明符可以由隱含地的運算元取代。
在一些實施方式中,該指令格式可包括可選的運算遮罩說明符1065以明確指定運算遮罩(例如,遮罩暫存器)。可替代地,緊縮資料運算遮罩可以被隱含地指示。在一些實施方式中,該指令格式也可包括可選的遮罩運算類型說明符1066以指定遮罩運算的類型。舉例而言,遮罩運算類型說明符可包括單一位元以指定合併遮罩或歸零遮罩是否將被執行。可替代地,遮罩運算的類型可以被隱含地指示(例如,藉由運算碼),或另有說明(例如,在控制暫存器中)。其它實施方式中可能不執行遮蔽,並且可以不需要具有遮罩說明符或遮罩類型說明符。
在一些實施方式中,該指令格式可包括可選的浮點數值簡化模式說明符1067以指定在本文中所揭露的運算中使用的浮點數值簡化模式。在一些實施方式中,浮點數值簡化模式可以覆蓋在浮點控制暫存器中的模式。 任何本文提到的各種數值簡化模式或其它在該欄位中已知的是適用的。浮點數值簡化模式說明符是可選的並不是必需的。在一些實施方式中,數值簡化模式指示符可能隱含抑制所有浮點異常,雖然這不是必需的。
在一些實施方式中,該指令格式可包括可選的負數控制說明符1068以指定負數控制。在一些實施方式中,該負數控制說明符可包括立即位元。或者,在指令編碼的其它部分的位元也可以被使用。負數控制說明符是可選的並不是必需的。
應當理解的是,這僅是一個說明性示例。替代實施方式可包括說明符的子集,可以添加額外的說明符或欄位,可以重疊某些說明符或欄位等。另外,所顯示欄位的順序/排列不是必須的,而是該欄位可以被重新安排、重疊,欄位不需要包括位元的連續序列,而是可包括非連續的或分離的位元等。在一些實施方式中,該指令格式可具有VEX或EVEX編碼或指令格式,其可能具有本文其它地方描述的特徵,儘管本發明的範圍並不如此侷限。在一些實施方式中,在EVEX編碼中,第三來源運算元可以被編碼在reg_field、該第一來源運算元可以被編碼在VEX.vvvv,並且第二來源運算元可使用8位元立即的部分的其中之一和rm_field被編碼,儘管本發明的範圍並不如此侷限。在EVEX編碼中,藉由對於暫存器至暫存器的指令形式,設置EVEX.b位元為1,指令編碼的靜態數值簡化模式控制和隱含抑制所有的異常可被致能。
圖11是一組合適的緊縮資料暫存器1110的實施例的方塊圖。緊縮資料暫存器包括32個512位元標記為ZMM0至ZMM31的緊縮資料暫存器。在所示實施方式中,較低16個暫存器的較低順序的256位元,即ZMM0-ZMM15,係重疊或覆蓋在標記為YMM0-YMM15的各自256位元緊縮資料暫存器,雖然這不是必需的。同樣地,在所示實施方式中,較低順序的128位元的暫存器YMM0-YMM15係重疊或覆蓋在標記為XMM0-XMM15的各自128位元緊縮資料暫存器,雖然這也不是必需的。512位元暫存器ZMM0至ZMM31可運算以容納512位元緊縮資料、256位元緊縮資料或128位元緊縮資料。256位元暫存器YMM0-YMM15可運算以容納256位元緊縮資料或128位元緊縮資料。128位元暫存器XMM0-XMM15可運算以容納128位元緊縮資料。在一些實施方式中,每個暫存器可以被用來儲存緊縮浮點資料或緊縮整型資料其中之一。不同的資料單元大小可被支援,包括至少8位元的位元組資料、16位元的字組資料、32位元的雙字組、32位單精確度浮點資料、64位元的四字組以及64位雙精確度浮點資料。在替代實施方式中,可以使用不同數目的暫存器和/或不同大小的暫存器組成。在其它實施方式中,暫存器可以或可以不在較小暫存器上使用較大的暫存器別名和/或可以或可以不被用於儲存浮點資料。
圖12是顯示緊縮資料運算遮罩位元的數量取決於緊縮資料寬度和緊縮資料元寬度的表格1270。128位 元、256位元和512位元的緊縮資料寬度被顯示,但其它寬度也是可能的。16位元半精確度、32位元單精確度和64位元雙精確度浮點點格式的緊縮資料元寬度被顯示,但其它寬度也是可能的。作為一個例子,當緊縮資料寬度為128位元,4位元(例如,暫存器的最低順序的4位元)可以用於遮蔽,當緊縮資料元的寬度是32位元。
圖13是一組合適的運算遮罩暫存器1320的實施例的方塊圖。每個緊縮資料運算遮罩暫存器可以被用於儲存緊縮資料運算遮罩。在圖示的實施方式中,該組包括被標記為藉由K0至K7的八個暫存器。替代實施方式可包括少於八個暫存器(例如,兩個、四個、六個等),或多於八個暫存器(例如,十六個、三十二個等)。在圖示的實施方式中,每個暫存器為64位元。在替代實施方式中,暫存器的寬度可以是寬於64位元(例如,80位元、128位元等),或窄於64位元(例如,8位元、16位元、32位元等)。該暫存器可以使用眾所周知的技術以不同的方式來實現,並且不限於任何已知的特定類型的電路。合適的暫存器的例子包括但不限於,特殊用途實體暫存器、使用暫存器重命名的動態分配實體暫存器,以及它們的組合。
在一些實施方式中,緊縮資料運算遮罩暫存器1320可以是獨立的、特殊用途的一組架構暫存器。在一些實施方式中,指令可以編碼或指定緊縮資料運算遮罩暫存器在不同的位元或指令格式的一個以上不同欄位相較 於那些用於編碼或指定其它類型的暫存器(例如,緊縮資料暫存器)。藉由示例的方式,指令可使用三個位元(例如,3位元欄位)進行編碼或指定八個緊縮資料運算遮罩暫存器k0至k7中任一項。在替代實施方式中,當有更少或更多的緊縮資料運算遮罩暫存器時,更少或更多的位元可分別被使用。在一種特定實現中,只有緊縮資料運算遮罩暫存器k1至k7(而不是k0)可以被定位成斷定運算元用來斷定遮罩緊縮資料運算。暫存器k0可以被用作常規的來源或目的地,但不被編碼為斷定運算元(例如,如果指定k0,其為“無遮罩”編碼)。然而,這是可選的而不是必需的。
指令集包括一個以上指令格式。給定的指令格式定義了各種欄位(位元數,位元位置)以指定除其它事項外,要執行的運算(運算碼)和該運算將要執行的運算元。有些指令格式藉由指令樣板(或子格式)的定義進一步細分。例如,給定的指令格式的指令樣板可被定義為具有指令格式的欄位的不同子集(包括的欄位通常有相同的順序,但至少有一些因為包含較少欄位而具有不同位元的位置)和/或定義為具有不同解釋的給定欄位。因此,ISA的每個指令用給定的指令格式來表示(並且,如果已定義在該指令格式中給定的一個指令樣板),並且包括用於指定運算和運算元的欄位。例如,示例性的ADD指令具有特定的運算碼以及包括運算碼欄位,以指定運算碼和運算元欄位以選擇運算元(來源1/目的地和來源2)的指 令格式;並在指令流中這ADD指令的出現將具有在選擇特定運算元的運算欄位中的具體內容。一組SIMD擴展涉及進階向量擴展(AVX)(AVX1和AVX2),並使用向量擴展(VEX)編碼方式,一直以來,已經發布和/或公開(例如,參見英特爾®64和IA-32架構軟體開發者手冊,2011年10月,並參見英特爾®進階向量擴展程式參考資料,2011年6月)。
示範性的指令格式
本文所描述的指令的實施方式可以體現在不同的格式。此外,示範性系統、架構和管線詳述如下。指令的實施方式可以在這樣的系統、架構和管線執行,但並不限於這些詳細描述。
通用向量親合指令格式
一種向量親合指令格式係適合向量指令的指令格式(例如,有特定於向量運算的某些欄位)。雖然實施方式描述了向量和純量運算都藉由向量親合指令格式支援,替代實施方式中只使用向量運算的向量親合指令格式。
圖14A-14B係顯示根據本發明實施方式的通用向量親合指令格式和其指令樣板的方塊圖。圖14A係顯示根據本發明實施方式的通用向量親合指令格式和其A類指令樣板的方塊圖;而圖14B係顯示根據本發明實施方式 的通用向量親合指令格式和其B類指令樣板的方塊圖。具體地,對於定義A類和B類指令樣板的通用向量親合指令格式1400,這兩者都包括無記憶體存取1405指令樣板和記憶體存取1420指令樣板。用語「通用」在向量親合指令格式的上下文中係指該指令格式不取決於任何特定的指令集。
同時本發明的實施方式將以支援以下功能的向量親合指令格式被描述:64位元組的向量運算元長度(或大小)具有32位元(4位元組)或64位元(8位元組)的資料元的寬度(或大小)(因此,64位元組的向量由16雙字組大小元素組成或可替代地,由8四字組大小元素組成);64位元組的向量運算元長度(或大小)具有16位元(2位元組)或8位元(1位元組)的資料元的寬度(或大小);32位元組的向量運算元長度(或大小)具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)的資料元的寬度(或大小);且16位元組的向量運算元長度(或大小)具有32位元(4位元組)、64位元(8位元組),16位元(2位元組)或8位元(1位元組)的資料元的寬度(或大小);替代的實施方式可以支援更多、更少和/或不同的向量運算元大小(例如,256位元組的向量運算元)與更多、更少或不同的資料元的寬度(例如,128位元(16位元組)的資料元的寬度)。
圖14A中的A類指令樣板包括:1)無記憶體 存取1405指令樣板,其中顯示無記憶體存取、全數值簡化控制式運算1410指令樣板以及無記憶體存取、資料轉換式運算1415指令樣板;和2)記憶體存取1420指令樣板中,其中顯示記憶體存取、暫時的1425指令樣板和記憶體存取、非暫時的1430指令樣板。在圖14B的B類指令樣板包括:1)無記憶體存取1405指令樣板,其中顯示無記憶體存取、寫入遮罩控制、部分數值簡化控制式運算1412指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE式運算1417指令樣板;和2)記憶體存取1420指令樣板,其中顯示記憶體存取、寫入遮罩控制1427指令樣板。
通用向量親和指令格式1400包括在圖14A-14B顯示下面依序列出的以下欄位。
格式欄位1440-在這個欄位中的特定值(指令格式標識符值)唯一地識別該向量親合指令格式,因而在指令流中的向量親合指令格式的指令出現。因此,該欄位係可選的,因為它不需要僅具有通用向量親合指令格式的指令集。
基底運算欄位1442-其內容區分不同的基底運算。
暫存器索引欄位1444-其內容,立即或藉由位址生成,指定來源和目的運算元位置,無論是在暫存器或記憶體中。這些包括足夠數目位元以從P×Q個(例如32×512、16×128、32×1024、64×1024)暫存器文件選擇N個 暫存器。而在一種實施方式中,N可以是多達三個來源和一個目的地暫存器,替代的實施方式可支援更多或更少的來源和目的暫存器(例如,可以支援多達兩個來源,其中這些來源之一也作為目的地、可以支援多達到三個來源,其中這些來源之一也作為目的地、可支援多達兩個來源和一個目的地)。
修飾符欄位1446-其內容區分指明記憶體存取與那些不指定記憶體存取的在通用向量指令格式中的指令的出現;也就是說,介於無記憶體存取1405指令樣板和記憶體存取1420指令樣板之間。記憶體存取運算讀取和/或寫入到記憶體階層(在某些情況下,使用暫存器中的值來指定來源和/或目的地位址),而非記憶體存取運算則不是(例如,來源和目的地係暫存器)。而在實施方式中此欄位還選擇三種不同的方式來執行記憶體位址計算,替代的實施方式可以支援更多、更少或不同的方式來執行記憶體位址計算。
增強運算欄位1450-其內容區分以執行除了基本運算之外的各種不同的運算。這個欄位係上下文關聯。在本發明的實施方式中,該欄位被分割成類欄位1468、alpha欄位1452和beta欄位1454。增強運算欄位1450允許共同組的運算在單一指令中被執行,而不是用2、3或4個指令來執行。
縮放欄位1460-其內容允許用於記憶體位址生成的索引欄位內容縮放(例如,對於位址生成其使用 2縮放*指數+基底)。
位移欄位1462A-其內容作為記憶體位址生成的一部分(例如,對於位址生成其使用2縮放*指數+基底+偏移)。
位移係數欄位1462B(注意,位移欄位1462A的併列直接超過位移係數欄位1462B表示一個或其他被使用)-其內容作為位址生成的一部分;它指定位移係數其藉由記憶體存取的大小(N)進行縮放-其中N係記憶體存取中位元組的數目(例如,對於位址生成其使用2縮放*指數+基底+縮放的位移)。冗餘低階位元被忽略,因此,位移係數欄位的內容乘以記憶體運算元總大小(N)生成最終的位移,以使用於計算有效位址。N的值係基於完整運算碼欄位1474(後述)和資料處理欄位1454C,由運行時處理器硬體來判斷。位移欄位1462A和位移係數欄位1462B係可選的,它們不被用於無記憶體存取1405指令樣板和/或不同的實施方式可能僅實現一個或者兩者都不實現。
資料元寬度欄位1464-其內容區分要使用的若干資料元的寬度(在一些實施方式中對於所有的指令;在其它實施方式中僅一些指令)。此欄位係可選的,並不是必須的,如果只有一個資料元寬度被支援和/或資料元的寬度使用某些觀點的運算碼被支援。
寫入遮罩欄位1470-其內容在每個資料元位置基礎上控制,無論在目的地向量運算元中的資料元位置是 否反映了基底運算和增強運算的結果。A類指令樣板支援合併遮蔽寫入,而B類指令樣板支援合併遮蔽寫入和歸零遮蔽寫入。當合併時,向量遮罩允許目的地中的任何一組元素在任何運算的執行過程中避免被更新(由基底運算和增強運算指定);在另一實施方式中,當對應的遮罩位元為0時,保留在目的地中的每個元素的舊值。與此相反,歸零向量遮罩在任何運算的執行期間,允許目的地中的任何一組元素被歸零(由基底運算和增強運算指定);在一種實施方式中,當對應的遮罩位元有一個0值時,目的地的元素被設為0。此功能的子集係控制運算的向量長度被執行的能力(即,元素的跨度被修改,從第一個到最後一個);然而,這不是必要的,被修改的元素係連續的。因此,寫入遮罩欄位1470允許局部向量運算,包括載入、儲存、算術、邏輯等。雖然本發明的實施方式被描述,其中,寫入遮罩欄位1470的內容選擇包含將要使用的寫入遮罩的若干寫入遮罩暫存器其中之一(從而寫入遮罩欄位1470的內容間接識別遮罩將被執行),替代實施方式中代替或附加允許遮罩寫入欄位1470的內容立即指定要執行的遮罩。
立即欄位1472-其內容允許立即的規範。此欄位係可選的,它不存在於不支援立即的通用向量親合格式的實現及它不存在於不使用立即的指令。
類型欄位1468-其內容區分不同類型的指令。參照圖14A-B,該欄位的內容在A類和B類的指令之間 進行選擇。在圖14A-B中,圓角正方形用於指示存在於欄位中的特定值(例如,類型欄位1468在圖14A-B中,分別為A類1468A和B類1468B)。
A類的指令樣板
在A類的非記憶體存取1405指令樣板的情況下,alpha欄位1452被解釋為RS欄位1452A,其內容區分將被執行的不同擴增運算類型之一(例如,數值簡化1452A.1和資料轉換1452A.2分別為無記憶體存取、數值簡化類型運算1410和無記憶體存取、資料轉換運算類型1415指令樣板),而beta欄位1454區分將被執行的指定類型運算。在無記憶體存取1405指令樣板中,縮放欄位1460、位移欄位1462A和位移縮放欄位1462B不存在。
無記憶體存取指令樣板-完全數值簡化控制類型運算
在無記憶體存取完全數值簡化控制類型運算1410指令樣板,該beta欄位1454被解釋為數值簡化控制欄位1454A,其內容提供靜態數值簡化。而在本發明實施方式所述的數值簡化控制欄位1454A包括抑制所有浮點異常(SAE)欄位1456和數值簡化運算控制欄位1458,替代的實施方式可以支援編碼這兩個概念到相同欄位或只有這些概念/欄位的其中一個(例如,可以僅具有數值簡化運算控制欄位1458)。
SAE欄位1456-其內容區分是否禁用異常事件 報告;當SAE欄位1456的內容表明抑制為致能,給定的指令沒有報告任何種類的浮點異常旗標並沒有提出任何浮點異常處理程序。
數值簡化運算控制欄位1458-其內容區分一組將要執行的數值簡化運算其中之一(如向上數值簡化、向下數值簡化、朝零數值簡化以及數值簡化至最接近的值)。因此,該數值簡化運算控制欄位1458允許在每個指令基礎上的數值簡化模式改變。在本發明的實施方式中,其中處理器包括用於指定數值簡化模式的控制暫存器,該數值簡化運算控制欄位1450的內容覆寫該暫存器的值。
無記憶體存取指令樣板-資料類型轉換運算
在無記憶體存取資料轉換運算類型1415指令樣板、beta欄位1454被解釋為資料轉換欄位1454B,其內容區分若干將要執行的資料其中之一(例如,沒有資料轉換、混和、播送)。
在A類的記憶體存取1420指令樣板的情況下,alpha欄位1452被解釋為驅逐隱含欄位1452B,其內容區分出將被使用的驅逐隱含其中之一(圖14A中,暫時1452B.1和非暫時1452B.2用於記憶體存取,分別指定為暫時1425指令樣板和記憶體存取、非暫時1430指令樣板),beta欄位1454被解釋為資料處理欄位1454C,其內容區分將被執行的若干資料處理運算(也稱為基元)其 中之一(例如,無操縱;播送;來源的向上轉變;以及目的地的向下轉變)。記憶體存取1420指令樣板包括縮放欄位1460,和可選的位移欄位1462A或位移縮放欄位1462B。
向量記憶體指令具有轉換支援,執行從記憶體載入向量和儲存向量至記憶體。以常規的向量指令,向量記憶體指令以資料元分段方式,傳輸資料從/到記憶體中,實際傳輸的元素係藉由被選擇作為寫入遮罩的向量遮罩內容決定。
記憶體存取指令樣板-暫時
暫時資料係可能很快要被再次使用的資料,且能從高速存取中受益。然而,提示以及不同的處理器可以用不同的方式,包括完全無視提示實現它。
記憶體存取指令樣板-非暫時
非暫時資料係不可能很快要被再次使用的資料,且不能從第一階高速存取中受益,且應優先考慮驅逐。然而,提示以及不同的處理器可以用不同的方式,包括完全無視提示實現它。
B類指令樣板
在B類的指令樣板的情況下,alpha欄位1452被解釋為寫入遮罩控制(Z)欄位1452C,其內容區 分由寫入遮罩欄位1470控制的寫入遮蔽是否應該為合併或歸零。
在B類中的非記憶體存取1405指令樣板的情況下,beta欄位1454的一部分被解釋為RL欄位1457A,其內容區分將被執行的不同擴增運算類型之一(例如,數值簡化1457A.1和向量長度(VSIZE)1457A.2分別指定用於無記憶體存取、寫入遮罩控制、部分數值簡化控制類型運算1412指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE類型運算1417指令樣板)而beta欄位1454的其餘部分區分哪些指定類型的運算將被執行。在無記憶體存取1405指令樣板中,縮放欄位1460、位移欄位1462A和位移縮放欄位1462B不存在。
在無記憶體存取中,寫入遮罩控制、部分數值簡化控制類型運算1410指令樣板、beta欄位1454的其餘部分被解釋為數值簡化運算欄位1459A且異常事件報告被禁用(給定的指令沒有報告任何形式的浮點異常旗標並且沒有提出任何浮點異常處理程序)。
數值簡化運算控制欄位1459A-如同數值簡化運算控制欄位1458,其內容區分一組用以執行數值簡化運算的其中之一(如向上數值簡化、向下數值簡化、朝零數值簡化以及數值簡化至最接近的值)。因此,該數值簡化運算控制欄位1159A允許在每個指令基礎上的數值簡化模式改變。在本發明的實施方式中,其中處理器包括用於指定數值簡化模式的控制暫存器,該數值簡化運算控制欄 位1450的內容覆寫該暫存器的值。
在無記憶體存取、寫入遮罩控制、VSIZE式運算1417指令樣板,beta欄位1454的其餘部分被解釋為向量長度欄位1459B,其內容區分將要在其上執行的若干資料向量長度其中之一(例如,128、256或512位元組)。
在B類的記憶體存取1420指令樣板的情況下,該beta欄位1454的一部分被解釋為廣播欄位1457B,其內容區分廣播類型資料操作運算是否將被執行,而在其餘beta欄位1454被解釋為向量長度欄位1459B。記憶體存取1420指令樣板包括縮放欄位1460,和可選的位移欄位1462A或位移縮放欄位1462B。
關於通用向量親合指令格式1400,完整運算碼欄位1474顯示包括格式欄位1440、基底運算欄位1442、資料元寬度欄位1464。同時實施方式顯示其中完整運算碼欄位1474包括所有這些欄位,完整運算碼欄位1474包括實施方式中不支援所有這些欄位的少於所有這些欄位。完整運算碼欄位1474提供了運算碼(opcode)。
該擴增運算欄位1450、該資料元寬度欄位1464,和寫入遮罩欄位1470允許這些特性將在每個指令基礎上以通用向量親和指令格式指定。
寫入遮罩欄位和資料元寬度欄位的組合創建,允許基於不同資料元寬度施加遮罩的類型指令。
在A類和B類中發現的各種指令樣板有利於不同的情況。在本發明的一些實施方式中,不同的處理器或處理器中的不同核心可能僅支援A類、僅B類或同時這兩個類型。例如,高效能的通用亂序核心用於通用計算可能僅支援B類、主要用於圖形和/或科學(生產量)計算的核心可能僅支援A類,以及用於兩者的核心可同時支援(當然,具有來自兩個類型的一些混合樣板及指令而不是來自兩個類型的所有樣板及指令的核心是在本發明的範圍之內)。此外,單一處理器可包括多個核心,所有這些核心都支援相同的類型或其中不同的核心支援不同的類型。例如,在具有獨立的圖形和通用核心的處理器中,主要用於圖形和/或科學計算的圖形核心之一可能僅支援A類,同時一個以上的通用核心可以是具有亂序執行的高效能通用和用於通用計算的暫存器更名,其僅支援B類的核心。不具有獨立的圖形核心的另一個處理器,可包括同時支援A類和B類的一個以上通用依序或亂序核心。當然,來自一個類型的功能,也可以在本發明的不同實施方式以其它類型實現。以高階語言寫成的程式將被轉換成(例如,及時編譯或靜態編譯)各種不同的可執行形式,包括:1)具有由用於執行的目的地處理器所支援類型的唯一指令的格式;或2)具有使用所有類型指令的不同組合的替代常式寫入以及具有基於藉由當前正在執行編碼的處理器所支援的指令,選擇該常式來執行的控制流編碼的格式。
示範性特定向量親合指令格式
圖15係顯示根據本發明實施方式的示範性特定向量親合指令格式的方塊圖。圖15顯示特定向量親合指令格式1500,其特定於指定位置、大小、解釋和欄位的順序,以及用於那些欄位的值。特定向量親合指令格式1500可以被用於擴展x86指令集,並且因此某些欄位係相似或相同於那些在現有的x86指令集和其延伸部分(例如,AVX)使用的。此格式保持與前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位以及現有具有擴展的x86指令集的直接欄位一致。從圖14的欄位映射到圖15的欄位係被顯示。
應當理解的是,儘管本發明的實施方式用於說明目的,在通用向量親合指令格式1400的上下文中以參考的方式描述特定向量親合指令格式1500,但除非聲稱,本發明並不限於特定向量親合指令格式1500。例如,通用向量親合指令格式1400涵蓋了各種可能大小的各種欄位,而特定向量親合指令格式1500被顯示為具有特定大小的欄位。藉由具體示例的方式,同時資料元寬度欄位1464在特定向量親合指令格式1500中係被顯示為一位元欄位,本發明並不如此侷限(即,通用向量親合指令格式1400設想資料元寬度欄位1464的其它大小)。
通用向量親合指令格式1400包括在圖15A所示的下面次序列出的以下欄位。
EVEX前置(位元組0-3)1502-以四位元組的形式被編碼。
格式欄位1440(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)係格式欄位1440,其包含0x62(在本發明的實施方式中用於區分向量親合指令格式的獨特價值)。
第二十四位元組(EVEX位元組1-3)包括提供具體能力的若干位元欄位。
REX欄位1505(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位組成(EVEX位元組1,位元[7]-R),EVEX.X位元欄位(EVEX位元組1,位元[6]-X),以及1457BEX位元組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.B1形成。
REX’欄位1410-這是REX’欄位1410的第一部分,且是EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),其用於編碼擴展32暫存器組的較高16或較低16。在本發明的實施方式中,該位元,連同如下面所示其它的,被儲存在位元反轉格式以與從BOUND指令區分(以眾所周知的x86 32位元模式),其實際運算碼位元 組是62,但在MOD R/M欄位(在下面描述)中不接受MOD欄位中11的值;本發明的替代實施方式不儲存這個和其它以下所指示的反轉格式位元。值1用於編碼較低16暫存器。換句話說,R’Rrrr係藉由結合EVEX.R’、EVEX.R和其它RRR形成其它欄位。
運算碼映射欄位1515(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含主導運算碼位元組(0F,0F 38或0F 3)。
資料元的寬度欄位1464(EVEX位元組2,位元[7]-W)-由符號EVEX.W.代表,EVEX.W用於定義資料類型的粒度(大小)(32位元資料元或64位元資料元)。
EVEX.vvvv 1520(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的作用可包括以下內容:1)EVEX.vvvv編碼該第一來源暫存器運算元,指定在反轉(1的補數)形式且對2個或多個來源運算元指令有效;2)EVEX.vvvv編碼該目的地暫存器運算元,指定某些向量位移為1的補數形式;或3)EVEX.vvvv不編碼任何運算元,該欄位係保留並且應包含1111b。因此,EVEX.vvvv欄位1520編碼以反轉(1的補數)形式儲存的第一來源暫存器說明符的4低序位元。根據指令,額外不同的EVEX位元欄位被用於擴展該指定符大小至32個暫存器。
EVEX.U 1468類型欄位(EVEX位元組2,位 元[2]-U)-如果EVEX.U=0,則表明A類或EVEX.U0;如果EVEX.U=1時,則表示B類或EVEX.U1。
前置編碼欄位1525(EVEX位元組2,位元[1:0]-pp)-提供了用於基底運算欄位的額外位元。除了對於具有EVEX前置格式的舊有SSE指令提供支援之外,這也有壓縮SIMD前置的好處(而不是需要位元組來表達SIMD前置,該EVEX前置僅需要2位元)。在一種實施方式中,以舊有格式以及用EVEX前置格式兩者,支援使用SIMD前置(66H、F2H、F3H)的舊有SSE指令,這些舊有的SIMD前置被編碼到SIMD前置編碼欄位;並且在運行時在被提供給解碼器的PLA之前,被擴展到舊有的SIMD前置(所以PLA可以既執行舊有指令以及這些舊有指令的EVEX格式而無需修改)。雖然較新的指令可以直接使用EVEX前置編碼欄位的內容作為運算碼的擴展,某些實施方式以類似的方式展開以求一致性,但允許藉由這些舊有的SIMD前置指定不同的含義。替代實施方式可重新設計PLA以支援2位元SIMD前置編碼,並且因此不需要擴展。
alpha欄位1452(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.write遮罩控制以及EVEX.N;還顯示為α)-如先前所描述這個欄位係上下文特定的。
beta欄位1454(EVEX位元組3,位元[6:4]-SSS,也稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、 EVEX.LL0、EVEX.LLB;還顯示為β β β)-如先前所描述這個欄位係上下文特定的。
REX’欄位1410-其為REX’的餘數欄位且是EVEX.V’位元欄位(EVEX位元組,3位元[3]-V’)可用於編碼擴展32暫存器組的較高16或較低16。該位元以位元反轉格式被儲存。為1的值被用於對較低16個暫存器進行編碼。換句話說,V’VVVV藉由組合EVEX.V’、EVEX.vvvv形成。
寫入遮罩欄位1470(EVEX位元組3,位元[2:0]-kkk)-其內容指定在如前述的寫入遮罩暫存器中的暫存器的索引。在本發明的實施方式中,指定值EVEX.kkk=000具有隱含無寫入遮罩被用於特定指令的特殊行為(其可用各種方式,包括使用寫入遮罩硬連線至繞過該遮蔽硬體的全部或其一硬體來實現)。
實際運算碼欄位1530(位元組4)也被稱為運算碼位元組。運算碼的一部分被指定在該欄位中。
MOD R/M欄位1540(位元組5)包括MOD欄位1542、Reg欄位1544以及R/M欄位1546。如前述,MOD欄位1542的內容區分記憶體存取和非記憶體存取運算。Reg欄位1544的作用可以概括兩種情況:編碼目的暫存器運算元或來源暫存器運算元,或被視為運算碼的擴展而不是用來編碼任何指令運算元。R/M欄位1546的作用可包括以下內容:編碼引用記憶體位址或編碼目的暫存器運算元或來源暫存器運算元的指令運算元。
縮放、索引、基底(SIB)位元組(位元組6)-如先前所描述的,縮放欄位1450的內容被用於記憶體位址生成。SIB.xxx 1554和SIB.bbb 1556-這些欄位的內容已被預先提及關於暫存器索引Xxxx和Bbbb。
位移欄位1462A(位元組7-10)-當MOD欄位1542包含10,位元組7-10係位移欄位1462A,其運作如同舊有的32位元位移(disp32)且運作在位元組的粒度。
位移係數欄位1462B(位元組7)-當MOD欄位1542包含01,位元組7係位移係數欄位1462B。該欄位的位置係與舊有x86指令集8位元位移(disp8)相同,其運作在位元組粒度。由於disp8被符號擴展,其只能在-128和127位元組之間的偏移定址;在64位元組內部快取記憶體行上,disp8使用可以被設置為僅4個真正有用的值-128、-64、0和64的8位元;由於更大範圍通常需要disp32被使用;然而,disp32需要4個位元組。而相比之下,disp8和disp32,位移係數欄位1462B係disp8的重新解釋;當使用位移係數欄位1462B時,實際的位移由位移係數欄位的內容乘以的記憶體運算元存取(N)的大小來決定。這種類型的位移稱為disp8 * N。這減少平均指令長度(用於位移但具有更大範圍的單一位元組)。這樣緊縮的位移係基於有效位移係多個記憶體存取粒度的假設,因此,位址的冗餘低階位元偏移不需要被編碼。換句話說,位移係數欄位1462B替代了舊有的x86指 令集的8位元位移。因此,位移係數欄位1462B的編碼方式與x86指令集的8位元位移相同(於是ModRM/SIB編碼規則沒有變化)具有disp8過載到disp8 * N的唯一例外。換句話說,在編碼規則或編碼長度沒有變化,而只在由硬體解釋的位移值(這需要由記憶體運算元大小,獲得逐位元組位址偏移量,縮放該位移)。
立即欄位1472如先前所描述進行運算。
全部運算碼欄位
圖15B係顯示根據本發明的一種實施方式之構成全部運算碼欄位1474欄位的特定向量親合指令格式1500的方塊圖。具體地,全運算碼欄位1474包括格式欄位1440、基底運算欄位1442以及資料元寬度(W)欄位1464。該基底運算欄位1442包括前置編碼欄位1525、運算碼映射欄位1515以及真實運算碼欄位1530。
暫存器索引欄位
圖15C係根據本發明的一種實施方式顯示構成暫存器索引欄位1444的特定向量親合指令格式1500的欄位的方塊圖。具體來說,暫存器索引欄位1444包括REX欄位1505、REX’欄位1510、MODR/M.reg欄位1544、MODR/M.r/m欄位1546、VVVV欄位1520、xxx欄位1554以及bbb欄位1556。
增強運算欄位
圖15D係根據本發明的一種實施方式顯示構成增強運算欄位1450的特定向量親合指令格式1500的欄位的方塊圖。當類型(U)欄位1468包含0,其表示EVEX.U0(A類1468A);當它包含1時,其表示EVEX.U1(B類1468B)。當U=0且MOD欄位1542包含11(表示無記憶體存取運算),該alpha欄位1452(EVEX位元組3,位元[7]-EH)被解釋為rs欄位1452A。當該rs欄位1452A包含1(數值簡化1452A.1),該beta欄位1454(EVEX位元組3,位元[6:4]-SSS)被解釋為數值簡化控制欄位1454A。數值簡化控制欄位1454A包括一位元SAE欄位1456和兩位元數值簡化運算欄位1458。當該rs欄位1452A包含0(資料轉換1452A.2),該beta欄位1454(EVEX位元組3,位元[6:4]-SSS)被解釋為3位元的資料變換欄位1454B。當U=0且MOD欄位1542包含00、01或10(表示記憶體存取運算),alpha欄位1452(EVEX位元組3,位元[7]-EH)被解釋為驅逐提示(EH)欄位1452B和beta欄位1454(EVEX位元組3,位元[6:4]-SSS)被解釋為3位元的資料處理欄位1454C。
當U=1,alpha欄位1452(EVEX位元組3,位元[7]-EH)被解釋為寫入遮罩控制(Z)欄位1452C。當U=1且MOD欄位1542包含11(表示無記憶體存取運算),beta欄位1454的一部分(EVEX位元組3,位元 [4]-S0)被解釋為RL欄位1457A;當它包含1(數值簡化1457A.1),該beta欄位1454的其餘部分(EVEX位元組3,位元[6-5]-S2-1)被解釋為數值簡化運算欄位1459A,而當RL欄位1457A包含0(VSIZE 1457.A2)該beta欄位1454的其餘部分(EVEX位元組3,位元[6-5]-S2-1)被解釋為向量長度欄位1459B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位1542包含00、01或10(表示記憶體存取運算),beta欄位1454(EVEX位元組3,位元[6:4]-SSS)被解釋為向量長度欄位1459B(EVEX位元組3,位元[6-5]-L1-0)和廣播欄位1457B(EVEX位元組3,位元[4]-B)。
示範的暫存器架構
圖16係根據本發明的一種實施方式的暫存器架構1600的方塊圖。在所示實施方式中,有32個512位元寬的向量暫存器1610;這些暫存器被引用為zmm0至zmm31。較低16zmm暫存器的低階256位元覆蓋在暫存器ymm0-16。較低16zmm暫存器的低階128位元(ymm暫存器的低階128位元)覆蓋在暫存器xmm0-15。特定向量親合指令格式1500對這些覆蓋的暫存器文件進行如下表中顯示的運算。
換句話說,向量長度欄位1459選擇介於最大長度和一個以上其它較短長度,其中每個這樣的較短長度係前長度的一半長度;以及沒有向量長度欄位1459B的指令樣板以最大向量長度運算。此外,在一種實施方式中,特定向量親合指令格式1500的B類指令樣板運算於緊縮或純量單/雙精確度浮點資料和緊縮或純量整數資料。純量運算係在zmm/ymm/xmm暫存器中最低階的資料元位置進行運算;較高階資料元位置係與左邊的相同,因為他們是在之前的指令或取決於實施方式歸零。
寫入遮罩暫存器1615-在所示實施方式中,有8個寫入遮罩暫存器(k0至k7),各為64位元的大小。在替代實施方式中,寫入遮罩暫存器1615係16位元的大小。如先前所描述的,在本發明的一種實施方式中,向量遮罩暫存器k0不能用來作為寫入遮罩;當編碼時,通常會指示k0用於寫入遮罩,其選擇0xFFFF的硬連線寫入遮罩,有效地禁用寫入遮罩用於該指令。
通用暫存器1625-在所示實施方式中,有16 個64位元通用暫存器,其被用來連同現有的x86定址模式來定址記憶體運算元。這些暫存器藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15被引用。
純量浮點堆疊暫存器檔案(x87堆疊)1645,在其上化名MMX緊縮整數平面暫存器文件1650-在所示實施方式中,該x87堆疊係用於執行在使用x87指令集擴充的32/64/80位元浮點資料之上的純量浮點運算的八元素堆疊;而MMX暫存器被用來執行在64位元緊縮整數資料的運算,以及保持用於在MMX和XMM暫存器之間執行的若干運算的運算元。
本發明的替代實施方式可使用更寬或更窄的暫存器。另外,本發明的替代實施方式可使用更多、更少或不同的暫存器檔案和暫存器。
典型的核心架構、處理器和電腦架構
處理器核心可以用不同的方式來實現,用於不同的目的以及在不同的處理器。例如,這種核心的實現可以包括:1)用於一般用途計算的一般用途循序核心;2)用於一般用途計算的高性能的一般用途亂序核心;3)主要用於圖形和/或科學(生產量)計算的特殊用途核心。不同處理器的實現方式可以包括:1)中央處理器包括一個以上用於一般用途計算的一般用途循序核心和/或一個以上用於一般用途計算的一般用途亂序核心;和2) 協同處理器包括一個以上主要用於圖形和/或科學(生產量)的特殊用途核心。這樣不同的處理器導致不同的電腦系統架構,其可包括:1)在從中央處理器獨立的晶片上的協同處理器;2)在與中央處理器相同封裝的獨立晶片上的協同處理器;3)在與中央處理器相同晶片上的協同處理器(在此情況下,這樣一個協同處理器時有時被稱為特殊用途邏輯,諸如積體圖形和/或科學(生產量)邏輯,或者作為特殊用途核心);及4)系統單晶片,其可以在同一晶片包括所述中央處理器(有時被稱為應用核心或應用處理器)、上述協同處理器以及額外的功能。示範性的核心架構將接著描述,再接著示範性的處理器和電腦架構的描述。
示範性的核心架構 循序和亂序核心方塊圖
圖17A是顯示根據本發明的實施方式的示範性的循序管線和示範性的暫存器重命名,亂序發送/執行管線的方塊圖。圖17B是顯示根據本發明的實施方式的循序架構核心和示範性的暫存器重命名和被包括在處理器中的亂序發送/執行架構核心的方塊圖。在圖17A~B中的實線框顯示該循序管線和循序核心,而可選的另外的虛線框顯示暫存器重命名,亂序發送/執行管線和核心。鑑於該循序方面是該亂序方面的一個子集,該亂序方面將進行說明。
在圖17A中,處理器管線1700包括提取階段1702、長度解碼階段1704、解碼階段1706、分配階段1708、重命名階段1710、排程(也稱為調度或發送)階段1712、暫存器讀取/記憶體讀取階段1714、執行階段1716、回寫/記憶體寫入階段1718、異常處理階段1722和提交階段1724。
圖17B顯示了包括耦接到執行引擎單元1750的前端單元1730和皆耦接到記憶體單元1770的處理器核心1790。該核心1790可以是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字組(VLIW)核心、或混合的或替代的核心類型。作為另一種選擇,核心1790可以是特殊用途的核心,例如,如網路或通信核心、壓縮引擎、協同處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心或類似物。
該前端單元1730包括耦接到指令快取記憶體單元1734的分支預測單元1732,其耦接到指令轉譯後備緩衝區(TLB)1736,其耦接到指令提取單元1738,其耦接到解碼單元1740。該解碼單元1740(或解碼器)可以解碼指令並產生作為輸出的一個以上微運算、微編碼登錄點、微指令、其它指令或其它控制信號,其從該原始指令解碼,或反映該原始指令或源自該原始指令。該解碼單元1740可使用各種不同的機制來實現。合適機制的例子包括但不限於查找表、硬體實現、可程式邏輯陣列(PLA)、微編碼唯讀記憶體(ROM)等。在一種實施方 式中,該核心1790包括微編碼ROM或其它媒體,其儲存用於某些巨集指令的微編碼(例如,在解碼單元1740或在前端單元1730)。該解碼單元1740被耦接到在執行引擎單元1750中的重命名/分配器單元1752。
該執行引擎單元1750包括耦接到失效單元1754和一組一個以上排程器單元1756的重命名/分配器單元1752。該排程器單元1756表示任何數目的不同排程器,包括保留站、中央指令窗口等。該排程器單元1756耦接到實體暫存器檔案單元1758。各實體暫存器檔案單元1758代表一個以上實體暫存器檔案,其中不同的實體暫存器檔案儲存一個以上不同的資料類型,如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標是下一個將被執行指令的位址)等。在一種實施方式中,實體暫存器檔案單元1758包括向量暫存器單元、寫入遮罩暫存器單元和純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器和一般用途暫存器。實體暫存器檔案單元1758被失效單元1754重疊以說明暫存器重命名和亂序執行可以被實現的各種方式(例如,利用重排序緩衝器和失效暫存器檔案;利用未來檔案、歷史緩衝器和失效暫存器檔案;利用暫存器映射和暫存器池;等)。該失效單元1754和實體暫存器檔案單元1758耦接到執行群集1760,該執行群集1760包括一組一個以上執行單元1762和一組一個以上記憶體存取單元1764,該執行單元1762可以執行各種 運算(例如,移位、加、減、乘)且在不同類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。而一些實施方式可以包括專用於特定功能或功能組的若干執行單元,其它實施方式可僅包括一個執行單元或皆執行所有功能的複數執行單元。排程器單元1756、實體暫存器檔案單元1758及執行群集1760顯示可能為複數,因為某些實施方式中對某些類型的資料/運算創建單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線和/或記憶體存取管線,其各自具有排程器單元、實體暫存器檔案單元和/或執行群集,並在一個單獨的記憶體存取管線的情況下,某些實施方式中被實現,其中只有該管線的執行群集具有記憶體存取單元1764)。還應該理解的是,其中單獨的管線被使用,一個以上這些管線可以是亂序發送/執行而其餘是循序。
該組記憶體存取單元1764耦接到記憶體單元1770,其包括耦接到資料快取單元1774的資料轉譯後備緩衝區單元1772,資料快取單元1774耦接到第2階(L2)快取記憶體單元1776。在一個示範性的實施方式中,記憶體存取單元1764可以包括負載單元、儲存位址單元和儲存資料單元,其中各耦接到在記憶體單元1770中的資料轉譯後備緩衝區單元1772。指令快取記憶體單元1734更耦接到在記憶體單元1770中的第2階(L2)快取記憶體單元1776,L2快取記憶體單元1776耦接到一個 以上其它階層的快取記憶體且最後到主記憶體。
舉例而言,示範性的暫存器重命名、亂序發送/執行核心架構可實現該管線1700如下:1)該指令提取單元1738執行提取與長度解碼階段1702和1704;2)該解碼單元1740執行解碼階段1706;3)該重命名/分配器單元1752執行該分配階段1708和重命名階段1710;4)該排程器單元1756執行該排程階段1712;5)該實體暫存器檔案單元1758和該記憶體單元1770執行該暫存器讀取/記憶體讀取階段1714;該執行群集1760執行該執行階段1716;6)該記憶體單元1770和該實體暫存器檔案單元1758執行回寫/該記憶體寫入階段1718;7)各種單元可能參與該異常處理階段1722;8)該失效單元1754和該實體暫存器檔案單元1758執行提交階段1724。
核心1790可以支持一個以上指令集(例如,x86指令集(具有新版本已經加入的一些擴充);加州桑尼維爾的MIPS科技的MIPS指令集;加州桑尼維爾的ARM控股的ARM指令集(具有可選的如NEON額外擴充),其包括本文所述的指令。在一種實施方式中,核心1790包括邏輯以支持緊縮資料指令集擴充(例如,AVX1、AVX2),由此容許被使用緊縮資料執行的多數多媒體應用程式使用的運算。
應當理解的是,該核心可以支持多執行緒(執行兩個以上平行運算集或執行緒),並且可以多種方式這樣做,其包括分時多執行緒、同步多執行緒(其中單 一實體核心為實體核心為同步多執行緒的各執行緒提供邏輯核心),或者其組合(例如,分時提取和解碼和此後的同步多執行緒,如英特爾超執行緒技術)。
而暫存器重命名是在亂序執行的內容中描述,應當理解的是,暫存器重命名可以被使用在循序架構中。儘管所示的處理器的實施方式還包括分離指令和資料快取記憶體單元1734/1774和共享L2快取記憶體單元1776,可替換實施方式可以具有用於指令和資料兩者的單一內部快取記憶體,例如,如第一階(L1)內部快取記憶體,或多階內部快取記憶體。在一些實施方式中,該系統可以包括內部快取記憶體和該核心和/或該處理器外部的外部快取記憶體的組合。可替代地,所有的快取記憶體可以是在核心和/或處理器之外部。
具體示範性的循序核心架構
圖18A-B顯示循序核心架構更具體示例的方塊圖,其核心將是在晶片中數個邏輯方塊之一(包括相同類型和/或不同類型的其它核心)。該邏輯方塊藉由高頻寬互連網路(例如,環形網路)與某些固定功能邏輯、記憶體I/O介面和其它取決於應用必要的I/O邏輯通信。
圖18A是根據本發明的實施方式的單一處理器核心,連同其連接到晶片上的互連網路1802與其第2階(L2)快取記憶體的區域子集1804的方塊圖。在一種實施方式中,指令解碼器1800支援具有緊縮資料指令集 擴充的x86指令集。L1快取記憶體1806容許低延遲時間存取快取記憶體內純量和向量單元。而在一種實施方式中(為了簡化設計),純量單元1808和向量單元1810使用單獨的暫存器組(分別為純量暫存器1812和向量暫存器1814)和在它們之間傳輸的資料被寫入到記憶體中,然後從第1階(L1)快取記憶體1806讀回,本發明的替代實施方式可使用不同的方法(例如,使用單一暫存器組或包括容許資料在兩個暫存器檔案之間傳送而不會被寫入和讀回的通信路徑)。
L2快取記憶體的區域子集1804是整體L2快取記憶體的一部分,其被分割成單獨的區域子集,各處理器核心一個。各處理器核心具有立即存取路徑至它自己的L2快取記憶體的區域子集1804。被處理器核心讀取的資料被儲存在其L2快取記憶體子集1804,並且可以迅速地被存取,平行地與其它處理器核心存取他們自己的區域L2快取記憶體子集。被處理器核心寫入的資料被儲存在它自己的L2快取記憶體子集1804且如果需要的話將從其它子集被清除。該環形網路確保共享資料的一致性。該環形網路是雙向的以容許代理如處理器核心、L2快取記憶體和其它邏輯方塊在該晶片內彼此通信。各環形資料路徑是每個方向1012位元寬。
圖18B是根據本發明實施方式,圖18A中該處理器核心的一部分的展開圖。圖18B包括該L1快取記憶體1804的一部分L1資料快取記憶體1806A,以及更詳 細的有關該向量單元1810和該向量暫存器1814。具體地,該向量單元1810是16位元寬向量處理單元(VPU)(見16位元寬算術邏輯單元1828),其執行一個以上整數、單精度浮點和雙精度浮點指令。該VPU支援以混合單元1820混合暫存器輸入、以數值轉換單位1822A-B進行數值轉換和以記憶體輸入上的複製單元1824進行複製。寫入遮罩暫存器1826容許預測結果向量寫入。
具有積體記憶體控制器和圖形的處理器
圖19係根據本發明的實施方式可具有一個以上核心、可具有積體記憶體控制器且可具有積體圖形的處理器1900的實施方式之方塊圖。圖19中的實線框顯示了處理器1900具有單一核心1902A、系統代理1910、一組一個以上匯流排控制器單元1916,而可選的額外虛線框顯示了具有複數核心1902A-N的替代處理器1900、系統代理單元1910中的一組一個以上積體記憶體控制單元1914以及特殊用途邏輯1908。
因此,該處理器1900的不同實現可以包括:1)中央處理器,其具有特殊用途邏輯1908其為積體圖形和/或科學(生產量)邏輯(其可以包括一個以上核心)以及核心1902A-N是一個以上一般用途核心(例如,一般用途循序核心、一般用途亂序核心、這兩者的組合);2)協同處理器,其具有主要用於圖形和/或科學(生產量)的大量特殊用途核心的核心1902A-N;和3)協同處 理器,其具有大量一般用途循序核心的核心1902A-N。因此,該處理器1900可以是一般用途處理器、協同處理器或特殊用途處理器,例如,如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途圖形處理單元)、高生產量多積體核心(MIC)協同處理器(包括30個或更多的核心)、嵌入式處理器或類似物。該處理器可以在一個以上晶片上被實現。該處理器1900可以為一部分和/或在一個以上使用任意數量的製程技術的基底上實現,例如,如雙極性互補式金氧半導體、互補式金氧半導體或N型金氧半導體。
該記憶體階層包括在該核心中一個以上階層的快取記憶體、一組或一個以上共享快取記憶體單元1906和耦接到一組積體記憶體控制器單元1914的外部記憶體(未圖示)。該組共享快取記憶體單元1906可以包括一個以上中間階層快取記憶體,諸如第2級(L2)、第3級(L3)、第4級(L4)或其它階層的快取記憶體、末階快取記憶體(LLC)和/或其組合。而在一種實施方式中,環型互連單元1912互連該積體圖形邏輯1908、該組共享快取記憶體單元1906以及該系統代理單元1910/積體記憶體控制器單元1914,可選的實施方式可使用任何數量的眾所皆知的技術互連這些單元。在一種實施方式中,一致性在一個或一個以上的快取記憶體單元1106和核心1902A-N之間被維持。
在一些實施方式中,一個以上核心1902A-N 能夠多緒執行。該系統代理1910包括這些協調和運行核心1902A-N的元件。該系統代理單元1910可以包括例如功率控制單元(PCU)和顯示單元。該PCU可以是或包括需要調節核心1902A-N和該積體圖形邏輯1908的功率狀態的邏輯和元件,該顯示單元是用於驅動一個以上外部連接顯示器。
該核心1902A-N可以是就架構指令集而言是同質或非同質;即兩個以上核心1902A-N可以能夠執行相同的指令集,而其它可能只能夠執行該指令集的一個子集或不同的指令集。
示範性的電腦架構
圖20-23是示範性的電腦架構的方塊圖。在該欄位已知的其它系統的設計和架構為筆記型電腦、桌上電腦、手持電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜式媒體播放器、手持裝置以及其它各種電子裝置,也是適用的。在一般情況下,各種各樣的系統或電子裝置能夠結合如本文所揭露的處理器和/或其它執行邏輯通常是適用的。
現在參考圖20,其顯示根據本發明一種實施方式的系統2000的方塊圖。該系統2000可以包括一個以上處理器2010、2015,其耦接到控制器集線器2020。在 一種實施方式中,該控制器集線器2020包括圖形記憶體控制器集線器(GMCH)2090和輸入/輸出集線器(IOH)2050(其可能是在單獨的晶片上);該GMCH 2090包括記憶體和耦接到記憶體2040和協同處理器2045的圖形控制器;該IOH 2050係耦接輸入/輸出(I/O)裝置2060到該GMCH 2090。可替換地,該記憶體和圖形控制器其一或兩者都整合在處理器內(如本文所述),該記憶體2040和該協同處理器2045立即耦接到該處理器2010以及該控制器集線器2020在具有該IOH 2050的單一晶片中。
額外的處理器2015的可選性質在圖20中以虛線表示。各處理器2010、2015可以包括一個以上在此描述的處理核心且可以是該處理器1900的一些版本。
該記憶體2040可以例如是,動態隨機存取記憶體(DRAM)、相變記憶體(PCM),或者是兩者的組合。至少一種實施方式中,該控制器集線器2020與該處理器2010、2015經由多點匯流排,諸如前端匯流排(FSB)、點對點介面,如快速路徑互連(QPI)或類似的連接2095通信。
在一種實施方式中,協同處理器2045是特殊用途處理器,例如,如高生產量的MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似物。在一種實施方式中,控制器集線器2020可以包括積體圖形加速器。
就指標度量的範圍包括架構、微架構、熱力,功率消耗特性等而言,該實體資源2010,2015之間可以有各種的差異。
在一種實施方式中,該處理器2010執行控制一般類型的資料處理運算的指令。嵌入該指令的可能是協同處理器指令。該處理器2010識別應該由附加的協同處理器2045執行的類型的這些協同處理器指令,於是該處理器2010在協同處理器匯流排或其它互連上發出這些協同處理器指令(或表示協同處理器指令的控制信號)至協同處理器2045。協同處理器2045接受並執行接收到的該協同處理器指令。
現在參考圖21,其顯示的是根據本發明的實施方式的更具體的第一示範性系統2100的方塊圖。如圖21所示,多處理器系統2100是點對點互連系統,並且包括經由點對點互連2150耦接的第一處理器2170和第二處理器2180,處理器2170和2180各自可以是處理器1900的一些版本。在本發明的一種實施方式中,處理器2170及2180分別為處理器2010和2015,而協同處理器2138為協同處理器2045,在另一實施方式中,處理器2170及2180分別為處理器2010和協同處理器2045。
處理器2170和2180被顯示,其分別包括積體記憶體控制器(IMC)單元2172和2182。處理器2170還包括作為其匯流排控制器單元點對點(P-P)介面2176和2178的一部分;類似地,第二處理器2180包括P-P介 面2186和2188,處理器2170、2180可以利用P-P介面電路2178、2188經由點對點(P-P)界面2150交換信息。如圖21所示,IMCs 2172和2182耦接該處理器到各自的記憶體,即記憶體2132和記憶體2134,其可以是區域地附加到各自的處理器的主記憶體的一部分。
處理器2170、2180可以各自利用點對點介面電路2176、2194、2186、2198經由個別的點對點介面2152、2154與晶片組2190交換信息,晶片組2190可以經由高性能介面2139可選地與該協同處理器2138交換信息。在一種實施方式中,該協同處理器2138是特殊用途處理器,例如,如高生產量的MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似物。
共享快取記憶體(未圖示)可以包括在任一個處理器內或兩個處理器的外部,但經由P-P互連與該處理器連接,使如果處理器被置入低功率模式時,任一個或兩個處理器的區域快取記憶體的信息可被儲存在共享快取記憶體中。
晶片組2190可以經由介面2196耦接到第一匯流排2116。在一種實施方式中,第一匯流排2116可以是周邊元件互連(PCI)匯流排,或匯流排諸如快速週邊組件互連(PCI Express)匯流排或另一種第三代輸入/輸出互連匯流排,儘管本發明的範圍並不如此侷限。
如圖21所示,各種輸入/輸出裝置2114可以 耦接到第一匯流排2116,連同耦接第一匯流排2116的匯流排橋2118到第二匯流排2120。在一種實施方式中,一個以上額外處理器2115,諸如協同處理器、高生產量的MIC處理器、GPGPU、加速器(例如,如圖形加速器或數位信號處理(DSP)單元)、可程式化閘陣列或任何其它的處理器,耦接到第一匯流排2116。在一種實施方式中,第二匯流排2120可以是低接腳數(LPC)匯流排。在一種實施方式中,各種裝置可以耦接到第二匯流排2120包括,例如鍵盤和/或滑鼠2122、通信裝置2127和儲存單元2128,如磁碟機或其它大容量儲存裝置,其可以包括指令/編碼和資料2130。此外,音頻輸入/輸出2124可耦接到該第二匯流排2120。須注意的是,其它架構也是可能的。例如,代替圖21的點對點架構,系統可以實現多點匯流排或其它這種架構。
現在參考圖22,顯示根據本發明實施方式的第二更具體的示範性系統2200的方塊圖。在圖21和圖22中相似的元件具有相似的參考標號,圖21的某些方面已經從圖22中被刪去,以避免模糊圖22的其它方面。
圖22顯示該處理器2170、2180可以個別地包括積體記憶體和輸入/輸出控制邏輯(「CL」)2172和2182。因此,該CL 2172、2182包括積體記憶體控制器單元和包括輸入/輸出控制邏輯。圖22顯示,不僅是該記憶體2132,2134耦接到該CL 2172、2182,輸入/輸出裝置2214也耦接到該積體記憶體和輸入/輸出控制邏輯2172、 2182。舊有輸入/輸出裝置2215耦接到晶片組2190。
現在參考圖23,顯示根據本發明實施方式的系統晶片2300的方塊圖。在圖19中相似的元件具有相似的參考標號。另外,虛線框是更進階的系統晶片上的可選特性。在圖23中,互連單元2302被耦接到:應用處理器2310,其包括一組一個以上核心202A-N和共享快取記憶體單元1906;系統代理單元1910;匯流排控制器單元1916;積體記憶體控制器單元1914;一組或一個以.上協同處理器2320其可包括積體圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態隨機存取記憶體(SRAM)單元2330;立即記憶體存取(DMA)單元2332;及用於耦接到一個以上外部顯示器的顯示單元2340。在一種實施方式中,該協同處理器2320包括特殊用途處理器,例如,如網路或通訊處理器、壓縮引擎、GPGPU、高生產量MIC處理器、嵌入式處理器或類似物。
本文揭露的機制的實施方式可以用硬體、軟體、韌體或這些實現方式的組合來實現。本發明的實施方式可以被實現為電腦程式或在包括至少一個處理器、儲存系統(包括揮發性和非揮發性記憶體和/或儲存元件)、至少一個輸入裝置以及至少一個輸出裝置的可程式化系統上執行的程式編碼。
程式編碼,諸如在圖21所顯示的編碼2130,可以應用到輸入指令以執行本文所述的功能並生成輸出信息。該輸出信息可以用已知的方式應用於一個以上輸出裝 置。本申請的目的,處理系統包括具有處理器的任何系統,例如,如數位信號處理器(DSP)、微控制器、特殊用途積體電路(ASIC)或微處理器。
該程式編碼可以用高階程序或物件導向程式語言來實現,以與處理系統進行通信。如果需要的話,該程式編碼還可以用組合或機器語言來實現。事實上,本文中描述的機制並不限於在任何特定的程式語言的範圍。在任何情況下,該語言可以已編譯或已直譯的語言。
至少一種實施方式中的一個以上觀點可以由儲存在代表處理器中各種邏輯的機器可讀媒體上的代表性指令被實現,其中,當由機器讀取,使該機器製造邏輯以執行本文所描述的技術。這樣的表示,被稱為「IP核心」可以被儲存在實體的機器可讀媒體和供給到各種客戶或生產設施以加載到該製造機器,其實際上構成該邏輯或處理器。
這樣的機器可讀儲存媒體可以包括,但不限於,非暫態的、製品的實體安排或由機器或裝置形成,包括儲存媒體,諸如硬碟、任何其它類型的磁碟包括軟碟、光碟、唯讀光碟(CD-ROM)、可抹寫光碟(CD-RW)和光磁碟、半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光 卡,或者任何其它適於儲存電子指令的媒體類型。
因此,本發明的實施方式還包括非暫態的、實體的機器可讀媒體,其包含指令或包含設計資料,如硬體描述語言(HDL),其定義本文中所述的架構、電路、裝置,處理器和/或系統特徵。此類實施方式也可以關於程式產品。
模擬(包括二進制翻譯、編碼變形等)
在某些情況下,指令轉換器可用於將指令從來源指令集轉換至目標指令集。例如,該指令轉換器可以轉換(例如,使用靜態二進制轉換、包括動態編譯的動態二進制轉換)、變形、模擬或轉換指令至一個以上由核心處理的其它指令。該指令轉換器可以用軟體、硬體、韌體或其組合來實現。該指令轉換器可以是在處理器上、不在處理器上或部分在處理器上和部分不在處理器上。
圖24是根據本發明實施方式的方塊圖,其對比使用軟體指令轉換器用以轉換在來源指令集的二進制指令至在目標指令集的二進制指令。在所示實施方式中,該指令轉換器是軟體指令轉換器,雖然可替代地,該指令轉換器可以用軟體、韌體、硬體或其各種組合來實現。圖24顯示高階語言2402的程式可以使用x86編譯器2404被編譯以生成x86的二進制編碼2406,其可被具有至少一個x86指令集核心的處理器2416本機地執行,該具有至少一個x86指令集核心的處理器2416代表任何處理 器,其可藉由相容地執行或處理,執行如具有至少一個x86指令集核心的英特爾處理器大致上相同的功能(1)英特爾x86指令集核心的指令集的重要部分或(2)應用程式的目標編碼版本或目標為在具有至少一個x86指令集核心的英特爾處理器上運行的其它軟體,以實現如具有至少一個x86指令集核心的英特爾處理器大致上相同的結果。該x86編譯器2404代表一個編譯器,其可運算以產生x86二進制碼2406(例如,目標碼),其可具有或不具有額外的關聯處理,在具有至少一個x86指令集核心的處理器2416上執行。類似地,圖24顯示高階語言2402的程式可以使用替代指令集編譯器2408被編譯,以產生替代性的指令集二進制編碼2410,其可由不具有x86指令集核心的處理器2414本機地執行(例如,具有執行加州桑尼維爾的MIPS科技的MIPS指令集和/或執行加州桑尼維爾的ARM控股公司的ARM指令集的核心的處理器)。該指令轉換器2412被用以轉換該x86二進制編碼2406至可由不具有x86指令集核心的處理器2414本機地執行的編碼,這種轉換後的編碼是不太可能與該替代指令集二進制編碼2410一樣,因為能夠這樣的指令轉換器很難製造;然而,該轉換後的編碼將完成一般運算並組成來自替代指令集的指令。因此,該指令轉換器2412代表軟體、韌體、硬體或其組合,藉由模仿、模擬或任何其它程序,容許處理器或其它不具有x86指令集的處理器或核心的電子裝置來執行x86二進制編碼2406。
元件、特徵以及為圖3-13中任一個所描述的細節也可選擇地在圖1-2中任一個使用。此外,元件、特徵和為在此描述的任何裝置所在此描述的細節,也可以選擇地被用在和/或應用於任何在此描述的方法,其在實施方式中可以藉由和/或與這樣的裝置來執行。本文所述的任何處理器可以被包括在本文揭露的任何電腦系統或其它系統。在一些實施方式中,該指令可使用在此揭露的為指令格式所描述的特徵和細節被編碼(例如,VEX、EVEX等),儘管本發明的範圍並不如此侷限。
在說明書和專利申請範圍中,用語「耦接」和/或「連接」以及它們的衍生詞可能已被使用。這些用語並不作為彼此的同義詞。相反地,在實施方式中,「連接」可以用於表示兩個或更多元件彼此直接實體和/或電接觸。「耦接」可意味著兩個或更多元件彼此直接實體和/或電接觸。然而,「耦接」還可以意味著兩個或更多元件並非彼此直接接觸,但仍協同運算或彼此相互作用。例如,執行單元可經由一個以上中介元件與暫存器和/或解碼單元耦接。在圖式中,箭頭用於顯示連接和耦接。
用語「和/或」可能已被使用。如本文所使用的,用語「和/或」意味著其中一個或兩者(例如,A和/或B意指A或B或A和B兩者)。
在上述的說明中,為了提供實施方式的徹底理解具體的細節已被闡述。然而,其它實施方式可以在沒有這些具體細節的情況下實施。本發明的範圍不由以上提 供的具體例子決定,而是僅由下面的申請專利範圍決定。在其它實例中,眾所皆知的電路、架構、裝置和運算已以方塊圖的形式和/或無細節顯示,以避免模糊對本描述的理解。在認為適當的地方,參考標號或參考標號的終端部,已在圖中重複以表示對應的或類似的元件,其可以選擇地具有相似或相同的特性,除非指明或顯而易見。各種運算及方法已被描述,一些方法已在流程圖中用相對簡單的型式被描述,但運算可選擇地被添加至該方法和/或從該方法移除。
某些運算可以由硬體元件來執行,或者可以體現在機器可執行的或電路可執行的指令,其可被用來引起和/或導致機器、電路或硬體元件(例如,處理器、處理器的部分、電路等)被執行該運算的指令程式化。該運算也可以選擇地通過硬體和軟體的組合來執行。處理器、機器、電路或硬體可以包括特定的、特別的電路或其它邏輯(例如,硬體可能與韌體和/或軟體結合),其可操作以執行和/或處理指令並回應於該指令儲存結果。
一些實施方式包括一種製品(例如,電腦程式產品),其包括機器可讀媒體。該媒體可包括一種機制,其提供例如以機器可讀的形式儲存資訊。該機器可讀媒體可以提供或已經在其上儲存,指令或指令的順序,如果和/或當由機器執行時可操作以使該機器執行和/或導致該機器執行一個以上運算、方法或在此揭露的技術。該機器可讀媒體可以儲存或提供在此揭露的指令的一種以上 實施方式。
在一些實施方式中,該機器可讀媒體可以包括實體的和/或非暫態的機器可讀儲存媒體。例如,實體的和/或非暫態的機器可讀儲存媒體可包括軟碟、光儲存媒體、光碟、光學資料儲存裝置、唯讀光碟、磁碟、磁光碟、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)、電子可抹除可程式化唯讀記憶體(EEPROM)、隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、快取記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置或類似物。該非暫態機器可讀儲存媒體不包括暫態傳播信號。在其他實施方式中,機器可讀儲存媒體可包括暫態機器可讀通訊媒體,例如,電子、光學、聲波或其它形式的傳播信號,如載波、紅外光信號、數位信號,或類似物。
合適的機器的實施例包括,但不限於通用處理器、專用處理器、指令處理裝置、數位邏輯電路、積體電路或類似物。合適的機器的其他實施例還包括,其包括處理器、指令處理裝置、數位邏輯電路或積體電路的計算裝置或其它電子裝置。此類計算裝置和電子裝置的實施例包括但不限於桌上電腦、膝上電腦、筆記型電腦、平板電腦、小筆電、智慧手機、蜂巢式電話、伺服器、網絡設備(例如,路由器和交換器)、移動網路裝置(MID)、媒 體播放器、智慧電視、桌上型易網機、機上盒和視訊遊戲 控制器。
參見本說明書各處,例如「一種實施方式」、「實施方式」、「一種以上實施方式」、「一些實施方式」,表示特定的特徵可以被包括在本發明的實踐中,但並不一定需要。同樣地,為使揭露流暢且協助瞭解各種發明觀點,各種特徵有時聚集在單一的實施方式、圖式、或其說明中。然而,此揭示之方法不應被解讀成反映該發明需要比各申請專利範圍中所明確地揭露之特性更多的特性之意圖。而是,當下文之申請專利範圍反映發明性觀點其處於比所揭示之單一實施方式的所有特性更少的特性中。因此,在實施方式之後的申請專利範圍,特此基於各自申請專利範圍其本身為該發明之個別實施方式被明確地結合於此實施方式之內。
實施例
下面的例子關於進一步的實施方式。例子中的細節可在一個以上實施方式中被使用。
實施例1是一種處理器,其包含複數暫存器及解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元,用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;執行單元,其與該等複數暫存器 和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合。
實施例2包括實施例1的處理器,其中該解碼單元係用以解碼該三個來源浮點加法指令,其包括:第一位元,用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數;第二位元,用以指明是否該第二來源運算元的所有一個以上浮點資料元都被取負數;以及第三位元,用以指明是否該第三來源運算元的所有一個以上浮點資料元都被取負數。
實施例3包括實施例2的處理器,其中該第一位元、該第二位元和該第三位元包括該三個來源浮點加法指令的立即位元。
實施例4包括實施例1的處理器,其中該解碼單元係用以解碼該三個來源浮點加法指令,用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數。
實施例5包括實施例4的處理器,其中該解 碼單元係用以解碼該三個來源浮點加法指令,用以指明是否該第二來源運算元的所有一個以上浮點資料元都被取負數。
實施例6包括實施例5的處理器,其中該解碼單元係用以解碼該三個來源浮點加法指令,用以指明是否該第三來源運算元的所有一個以上浮點資料元都被取負數。
實施例7包括的實施例1~6中任一項的處理器,其中解碼單元用以解碼該三個來源浮點加法指令,其用以指示該第一來源運算元、該第二來源運算元、該第三來源運算元分別具有被儲存在各自的可在不同時間儲存緊縮資料的緊縮資料暫存器的純量資料元的該第一浮點資料元、該第二浮點資料元、該第三浮點資料元,且其中該三個來源浮點加法指令用以指示具有對應於且用於預測該三個來源浮點加法指令在該第一浮點資料元、該第二浮點資料元、該第三浮點資料元的運算的遮罩元的來源預測遮罩。
實施例8包含的實施例1~6中任一項的處理器,其中解碼單元用以解碼該三個來源浮點加法指令,其用以指示該第一來源運算元、該第二來源運算元與該第三來源運算元分別具有包含第一浮點資料元的第一複數緊縮資料元、包含第二浮點資料元的第二複數緊縮資料元與包含第三浮點資料元的第三複數緊縮資料元。
實施例9包括實施例8的處理器,其中該解 碼單元係用以解碼該三個來源浮點加法指令,其用以指示具有複數遮罩元的來源緊縮資料運算遮罩,各該等遮罩元對應於且用於預測關於該第一來源運算元、該第二來源運算元、該第三來源運算元的對應的浮點資料元的該三個來源浮點加法指令的緊縮資料運算。
實施例10包括實施例1~6中任一項的處理器,其中該執行單元係使用數值簡化模式,其用於該第一浮點數值簡化總和該第二浮點數值簡化總和,其為下列其中一種:(1)數值簡化至最接近的偶數;(2)朝向負無限大向下數值簡化;(3)朝向正無限大向上數值簡化;以及(4)以捨去朝向零數值簡化,且其中該解碼單元係用以解碼該三個來源浮點加法指令,其用以指明該數值簡化模式,且其中被該選擇地指令指明的該數值簡化模式係用以覆蓋位於該處理器的浮點控制暫存器中的數值簡化模式。
實施例11包括實施例1~6中任一項的處理器,其中該執行單元包括:第一浮點加法器,其耦接以接收該第一浮點資料元和該第二浮點資料元並輸出該第二浮點數值簡化總和;該執行單元還包括第二浮點加法器,其耦接以接收該第三浮點資料元和該第二浮點數值簡化總和,該第二浮點加法器輸出該第一浮點數值簡化總和。
實施例12包括實施例11的處理器,更包括:保留站以及緩衝器,其與該保留站耦接,該緩衝器從保留站接收對應於該三個來源浮點加法指令的控制信號, 並在一段時間內儲存該控制信號,同時該第一浮點加法器產生該第二浮點數值簡化總和,該緩衝器與該第二浮點加法器耦接,用以在該一段時間後提供該控制信號至該第二浮點加法器。
實施例13包括的實施例1~6中任一項的處理器,其中該執行單元包括:輸出端、輸入端,以及使該輸出端與該輸入端耦接的電路。
實施例14包括的實施例1~6中任一項的處理器,其中該解碼單元係用以解碼具有EVEX編碼的該三個來源浮點加法指令,其中該第三來源運算元用以在reg_field被編碼,其中該第一來源運算元被編碼成VEX.vvvv,且其中該第二來源運算元使用8位元立即和rm_field的一部分被編碼。
實施例15一種在處理器中的方法,該方法包括:接收三個來源浮點加法指令,該三個來源浮點加法指令,指示具有一個以上第一浮點資料元的第一來源運算元,指示具有一個以上第二浮點資料元的第二來源運算元,並指示具有一個以上第三浮點資料元的第三來源運算元;該方法還包括回應於該三個來源浮點加法指令,儲存結果於目的地運算元,該目的地運算元藉由該三個來源浮點加法指令被指示,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化 總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合。
實施例16包括實施例15的方法,其中接收包括接收該三個來源浮點加法指令,其指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數,可選地,該指令也指明是否該第二來源運算元的所有一個以上浮點資料元都被取負數。
實施例17包括實施例15的方法,其中接收包括接收該三個來源浮點加法指令,其指明用於該第一浮點數值簡化總和和該第二浮點數值簡化總和的數值簡化模式。
實施例18包括實施例15的方法,其中接收包括接收該三個來源浮點加法指令,其指示該第一來源運算元、該第二來源運算元、該第三來源運算元分別具有被儲存在各自的緊縮資料暫存器的純量資料元的該第一浮點資料元、該第二浮點資料元、該第三浮點資料元,且其中該三個來源浮點加法指令用以指示來源預測遮罩。
實施例19係一種處理指令的系統包括:內連線;處理器,其與內連線耦接,該處理器用以接收三個來源浮點加法指令,該三個來源浮點加法指令,用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;回 應於該三個來源浮點加法指令,該處理器儲存其結果於藉由該三個來源浮點加法指令被指示的目的地運算元,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合;該系統選擇地包括動態隨機存取儲存器(DRAM),其與內連線耦接。
實施例20包括實施例19的系統,其中該三個來源浮點加法指令用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數。
實施例21包括一種製品,其包含選擇地可為非暫態機器可讀儲存媒體的機器可讀儲存媒體,該媒體儲存三個來源浮點加法指令,該三個來源浮點加法指令,用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元,該三個來源浮點加法指令如果被機器所執行,以使機器執行運算包括,回應於該三個來源浮點加法指令,儲存結果於目的地運算元,該目的地運算元藉由該三個來源浮點加法指令被指示,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值 簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合。
實施例22包括實施例21的製品,其中該三個來源浮點加法指令,用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數。
實施例23是一種處理器,包括:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令,用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元,該指令也選擇地具有第一位元,用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數和/或具有第二位元,用以指明是否該第二來源運算元的所有一個以上浮點資料元都被取負數;以及執行單元,其與該複數暫存器和該解碼單元耦接,回應於該三個來源浮點加法指令,該執行單元儲存其結果於藉由該三個來源浮點加法指令被指示的目的地運算元,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括浮點數值簡化總和,其表示該第一浮點資料元、該第二浮點資料元和該第三浮點資料元的加法結合。
實施例24包括實施例23的處理器,其中該浮點數值簡化總和係用以代表另一浮點數值簡化總和的加法組合。
實施例25包括處理器或其它裝置,其用於執行實施例15-18中任一項的方法。
實施例26包括處理器或其它裝置,其包括用於執行實施例15-18中任一項的方法。
實施例27包括處理器,其包括模組、單元、邏輯、電路、方法或其任何組合,用以執行實施例15-18中任一項的方法。
實施例28包括電腦系統或其它電子裝置,其包括內連線與內連線耦接的處理器,以及從DRAM、圖形晶片、無線通信晶片、相變記憶體、攝影機中選擇的一個以上種與內連線耦接的元件,該電腦系統或其它電子裝置用以執行實施例15-18中任一項的方法。
實施例29包括機器可讀媒體,其係選擇性的非暫態電腦可讀儲存媒體,其選擇性地儲存或以其它方式提供由處理器、電腦系統或其它機器執行的指令,其可運算以致該機器執行實施例15-18中任一項的方法。
實施例30包括處理器或其它裝置,其大體上可運算以執行在此描述的一個以上運算或任何方法。
實施例31包括處理器或其它裝置,其包括大體上用以執行在此描述的一個以上運算或任何方法的裝置。
實施例32包括處理器或其它裝置,其大體上可運算以執行在此描述的任何的指令。
實施例33包括處理器或其它裝置,其包括大體上用以執行在此描述的任何指令的裝置。
實施例34包括方法,其包括轉換第一指令,其大體上可是在此揭露的任何指令,且其係第一指令集,為第二指令集的一個以上指令。該方法還包括解碼和執行在處理器上設置的第二指令集的一個以上指令。該執行包括儲存結果於目的地。該結果可包括大體上如本文揭露用於該第一指令的任何結果。
實施例35包括處理器或其它裝置,其包括解碼單元,其可運算以解碼第一指令指令集的指令。該解碼單元係用以接收模擬第一指令的一個以上執行單元,其可是大體上如本文揭露的任何指令,並且其係第二指令集。該處理器或其它裝置還包括與解碼單元耦接的執行的一個以上執行單元,用以執行該第一指令集的一個以上指令。該一個以上執行單元回應於該第一指令集的該一個以上指令,可運算以儲存結果於目的地。該結果可包括大體上如本文揭露用於該第一指令的任何結果。
實施例36包括電腦系統或其它電子裝置,其包括具有解碼單元的處理器,其可運算以解碼第一指令集的指令,並具有一個以上執行單元。該電腦系統還包括耦接到該處理器的儲存裝置。該儲存裝置係用於儲存第一指令,其可是大體上如本文揭露的任何指令,並且其係第二 指令集。該儲存裝置還儲存指令以轉換該第一指令至該第一指令集的一個以上指令。當由該處理器執行時,該第一指令集的該一個以上指令可運算以致使該處理器儲存結果於目的地。該結果可包括大體上如本文揭露用於第一指令的任何結果。
100‧‧‧處理器
102‧‧‧三個來源浮點加法指令
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧浮點加法邏輯
110‧‧‧一組暫存器
112‧‧‧第一來源運算元
114‧‧‧第二來源運算元
116‧‧‧第三來源運算元
118‧‧‧結果
120‧‧‧緊縮資料運算遮罩暫存器
122‧‧‧緊縮資料運算遮罩

Claims (20)

  1. 一種處理器,其包含:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;以及執行單元,其與該等複數暫存器和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,用以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中該解碼單元係用以解碼該三個來源浮點加法指令,其包括:第一位元,用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數;第二位元,用以指明是否該第二來源運算元的所有一個以上浮點資料元都被取負數;以及第三位元,用以指明是否該第三來源運算元的所有一 個以上浮點資料元都被取負數。
  2. 如申請專利範圍第1項的處理器,其中該第一位元、該第二位元和該第三位元包括該三個來源浮點加法指令的立即位元。
  3. 一種處理器,其包含:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;以及執行單元,其與該等複數暫存器和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,用以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中該解碼單元係用以解碼該三個來源浮點加法指令,其用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數。
  4. 如申請專利範圍第3項的處理器,其中該解碼單 元係用以解碼該三個來源浮點加法指令,其用以指明是否該第二來源運算元的所有一個以上浮點資料元都被取負數。
  5. 如申請專利範圍第4項的處理器,其中該解碼單元係用以解碼該三個來源浮點加法指令,其用以指明是否該第三來源運算元的所有一個以上浮點資料元都被取負數。
  6. 一種處理器,其包含:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;以及執行單元,其與該等複數暫存器和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,用以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中解碼單元係用以解碼該三個來源浮點加法指令, 其用以指示該第一來源運算元、該第二來源運算元、該第三來源運算元,其分別具有被儲存在各自的可在不同時間儲存緊縮資料的緊縮資料暫存器的純量資料元的該第一浮點資料元、該第二浮點資料元、該第三浮點資料元,且其中該三個來源浮點加法指令係用以指示具有對應於且用於預測該三個來源浮點加法指令在該第一浮點資料元、該第二浮點資料元、該第三浮點資料元的運算的遮罩元的來源預測遮罩。
  7. 一種處理器,其包含:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;以及執行單元,其與該等複數暫存器和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,用以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合, 其中解碼單元係用以解碼該三個來源浮點加法指令,其用以指示該第一來源運算元、該第二來源運算元與該第三來源運算元,其分別具有包含第一浮點資料元的第一複數緊縮資料元、包含第二浮點資料元的第二複數緊縮資料元與包含第三浮點資料元的第三複數緊縮資料元。
  8. 如申請專利範圍第7項的處理器,其中該解碼單元係用以解碼該三個來源浮點加法指令,其用以指示具有複數遮罩元的來源緊縮資料運算遮罩,各該等遮罩元對應於且用於預測關於該第一來源運算元、該第二來源運算元、該第三來源運算元的對應的浮點資料元的該三個來源浮點加法指令的緊縮資料運算。
  9. 一種處理器,其包含:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;以及執行單元,其與該等複數暫存器和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,用以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮 點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中該執行單元係使用數值簡化模式,其用於該第一浮點數值簡化總和該第二浮點數值簡化總和,其為下列其中一種:(1)數值簡化至最接近的偶數;(2)朝向負無限大向下數值簡化;(3)朝向正無限大向上數值簡化;以及(4)以捨去朝向零數值簡化,且其中該解碼單元係用以解碼該三個來源浮點加法指令,其係用以指明該數值簡化模式,且其中將被該指令指明的該數值簡化模式係用以覆蓋位於該處理器的浮點控制暫存器中的數值簡化模式。
  10. 一種處理器,其包含:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;以及執行單元,其與該等複數暫存器和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,用以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元, 該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中該執行單元包括:第一浮點加法器,其耦接以接收該第一浮點資料元和該第二浮點資料元並輸出該第二浮點數值簡化總和;以及第二浮點加法器,其耦接以接收該第三浮點資料元和該第二浮點數值簡化總和,該第二浮點加法器輸出該第一浮點數值簡化總和。
  11. 如申請專利範圍第10項的處理器,更包括:保留站;以及緩衝器,其與該保留站耦接,該緩衝器從保留站接收對應於該三個來源浮點加法指令的控制信號並在一段時間內儲存該控制信號,同時該第一浮點加法器係用以產生該第二浮點數值簡化總和,該緩衝器與該第二浮點加法器耦接,用以在該一段時間後提供該控制信號至該第二浮點加法器。
  12. 一種處理器,其包含:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點 資料元的第三來源運算元;以及執行單元,其與該等複數暫存器和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,用以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中該執行單元包括輸出端、輸入端以及使該輸出端與該輸入端耦接的電路。
  13. 一種處理器,其包含:複數暫存器;解碼單元,用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;以及執行單元,其與該等複數暫存器和該解碼單元耦接,該執行單元回應於該三個來源浮點加法指令,用以儲存其結果於藉由該三個來源浮點加法指令被指示的目的地暫存器,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元, 該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中該解碼單元係用以解碼具有EVEX編碼的該三個來源浮點加法指令,其中該第三來源運算元係在reg_field被編碼,其中該第一來源運算元被編碼成VEX.vvvv,且其中該第二來源運算元使用8位元立即和rm_field的一部分被編碼。
  14. 一種在處理器中的方法,該方法包括:接收三個來源浮點加法指令,該三個來源浮點加法指令指示具有一個以上第一浮點資料元的第一來源運算元,指示具有一個以上第二浮點資料元的第二來源運算元,並指示具有一個以上第三浮點資料元的第三來源運算元;以及回應於該三個來源浮點加法指令,儲存結果於目的地運算元,該目的地運算元藉由該三個來源浮點加法指令被指示,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中接收包括接收該三個來源浮點加法指令,其指明 是否該第一來源運算元的所有一個以上浮點資料元都被取負數,並且指明是否該第二來源運算元的所有一個以上浮點資料元都被取負數。
  15. 如申請專利範圍第14項的方法,其中接收包括接收該三個來源浮點加法指令,其指明用於該第一浮點數值簡化總和和該第二浮點數值簡化總和的數值簡化模式。
  16. 如申請專利範圍第14項的方法,其中接收包括接收該三個來源浮點加法指令,其指示該第一來源運算元、該第二來源運算元、該第三來源運算元分別具有被儲存在各自的緊縮資料暫存器的純量資料元的該第一浮點資料元、該第二浮點資料元、該第三浮點資料元,且其中該三個來源浮點加法指令用以指示來源預測遮罩。
  17. 一種用以處理指令的系統,包括:內連線;處理器,其與內連線耦接,該處理器用以接收三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元,用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元;回應於該三個來源浮點加法指令,該處理器儲存其結果於藉由該三個來源浮點加法指令被指示的目的地運算元,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化 總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合;以及動態隨機存取記憶體(DRAM),其與內連線耦接,其中該三個來源浮點加法指令用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數。
  18. 一種製品,其包含非暫態機器可讀儲存媒體,該非暫態機器可讀儲存媒體儲存三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元以及該三個來源浮點加法指令如果被機器所執行,以使該機器執行運算包括:回應於該三個來源浮點加法指令,儲存結果於目的地運算元,該目的地運算元藉由該三個來源浮點加法指令被指示,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括第一浮點數值簡化總和,該第一浮點數值簡化總和表示第二浮點數值簡化總和與該第三浮點資料元的加法結合,該第二浮點數值簡化總和表示該第一浮點資料元和該第二浮點資料元的加法結合,其中該三個來源浮點加法指令用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數。
  19. 一種處理器,包括: 複數暫存器;解碼單元,其用以解碼三個來源浮點加法指令,該三個來源浮點加法指令用以指示具有一個以上第一浮點資料元的第一來源運算元、用以指示具有一個以上第二浮點資料元的第二來源運算元,並用以指示具有一個以上第三浮點資料元的第三來源運算元、具有第一位元用以指明是否該第一來源運算元的所有一個以上浮點資料元都被取負數並且具有第二位元用以指明是否該第二來源運算元的所有一個以上浮點資料元都被取負數;以及執行單元,其與該複數暫存器和該解碼單元耦接,回應於該三個來源浮點加法指令,該執行單元儲存結果於藉由該三個來源浮點加法指令被指示的目的地運算元,該結果包括一個以上結果浮點資料元,其對應於該第一浮點資料元、該第二浮點資料元和該第三浮點資料元,該結果浮點資料元包括浮點數值簡化總和,其表示該第一浮點資料元、該第二浮點資料元和該第三浮點資料元的加法結合,其中該浮點數值簡化總和係用以代表另一浮點數值簡化總和的加法結合。
  20. 一種處理器,其包括執行單元,用於執行如申請專利範圍第14-16項中任一項的方法。
TW104106247A 2014-03-26 2015-02-26 三個來源運算元浮點加法處理器、方法、系統及指令 TWI575448B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP14382106 2014-03-26
PCT/US2014/039600 WO2015147895A1 (en) 2014-03-26 2014-05-27 Three source operand floating point addition processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201604776A TW201604776A (zh) 2016-02-01
TWI575448B true TWI575448B (zh) 2017-03-21

Family

ID=50473243

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104106247A TWI575448B (zh) 2014-03-26 2015-02-26 三個來源運算元浮點加法處理器、方法、系統及指令

Country Status (8)

Country Link
US (2) US9785433B2 (zh)
JP (1) JP6371855B2 (zh)
KR (1) KR101893814B1 (zh)
CN (1) CN106030510A (zh)
DE (1) DE112014006508T5 (zh)
RU (1) RU2656730C2 (zh)
TW (1) TWI575448B (zh)
WO (1) WO2015147895A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101893814B1 (ko) 2014-03-26 2018-10-04 인텔 코포레이션 3 소스 피연산자 부동 소수점 가산 프로세서, 방법, 시스템, 및 명령어
US20160188341A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused add-add instructions
US9817662B2 (en) * 2015-10-24 2017-11-14 Alan A Jorgensen Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof
WO2018075052A1 (en) 2016-10-20 2018-04-26 Intel Corporation Systems, apparatuses, and methods for fused multiply add
US20180173527A1 (en) * 2016-12-15 2018-06-21 Optimum Semiconductor Technologies, Inc. Floating point instruction format with embedded rounding rule
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10310814B2 (en) 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10592422B2 (en) 2017-12-15 2020-03-17 International Business Machines Corporation Data-less history buffer with banked restore ports in a register mapper
CN111078281B (zh) * 2018-10-19 2021-02-12 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
US11372643B2 (en) * 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format
US11099853B2 (en) * 2019-02-15 2021-08-24 International Business Machines Corporation Digit validation check control in instruction execution
US20200409764A1 (en) * 2019-06-29 2020-12-31 Intel Corporation Core-to-core "snoop" instruction variants
US11372711B2 (en) 2019-06-29 2022-06-28 Intel Corporation Apparatus and method for fault handling of an offload transaction
US11188299B2 (en) 2019-07-31 2021-11-30 International Business Machines Corporation Repurposed hexadecimal floating point data path
US11237827B2 (en) * 2019-11-26 2022-02-01 Advanced Micro Devices, Inc. Arithemetic logic unit register sequencing
JP7391774B2 (ja) * 2020-06-11 2023-12-05 株式会社東芝 演算処理装置、情報処理装置及び演算処理方法
US11256987B1 (en) * 2021-06-02 2022-02-22 SambaNova Systems, Inc. Memory efficient dropout, with reordering of dropout mask elements
US11328209B1 (en) 2021-06-02 2022-05-10 SambaNova Systems, Inc. Dual cycle tensor dropout in a neural network
CN115098165B (zh) * 2022-06-13 2023-09-08 昆仑芯(北京)科技有限公司 数据处理方法、装置、芯片、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481686A (en) * 1994-05-11 1996-01-02 Vlsi Technology, Inc. Floating-point processor with apparent-precision based selection of execution-precision
US6029243A (en) * 1997-09-19 2000-02-22 Vlsi Technology, Inc. Floating-point processor with operand-format precision greater than execution precision
TW561399B (en) * 2000-06-09 2003-11-11 Cirrus Logic Inc Math coprocessor
EP0976034B1 (en) * 1996-01-24 2005-10-19 Sun Microsystems, Inc. Method and apparatus for stack caching

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1056182A1 (ru) * 1982-04-16 1983-11-23 Таганрогский радиотехнический институт им.В.Д.Калмыкова Суммирующее устройство с плавающей зап той
JPH0644270B2 (ja) * 1984-06-13 1994-06-08 富士通株式会社 ベクトルプロセッサの制御処理方式
SU1290300A1 (ru) * 1985-03-26 1987-02-15 Специальное Проектно-Конструкторское Бюро "Дискрет" При Одесском Политехническом Институте Устройство дл суммировани двух чисел с плавающей зап той
DE69624578T2 (de) * 1995-08-31 2003-09-04 Intel Corporation, Santa Clara Multiplixier-addierungsvorrichtung für gepackte daten
JP2747267B2 (ja) * 1996-01-29 1998-05-06 甲府日本電気株式会社 3入力浮動小数点加算装置
JP2919386B2 (ja) * 1996-09-19 1999-07-12 甲府日本電気株式会社 浮動小数点数検出装置および浮動小数点数検出回路
US5880984A (en) * 1997-01-13 1999-03-09 International Business Machines Corporation Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments
US6094668A (en) * 1997-10-23 2000-07-25 Advanced Micro Devices, Inc. Floating point arithmetic unit including an efficient close data path
US6288723B1 (en) * 1998-04-01 2001-09-11 Intel Corporation Method and apparatus for converting data format to a graphics card
US5995122A (en) * 1998-04-30 1999-11-30 Intel Corporation Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format
US6542916B1 (en) * 1999-07-28 2003-04-01 Arm Limited Data processing apparatus and method for applying floating-point operations to first, second and third operands
JP2001092633A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 複数の結果を出力する命令を有する演算装置
US6857061B1 (en) * 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
JP2002215384A (ja) * 2001-01-16 2002-08-02 Toshiba Corp 多入力加減算回路
US20030055859A1 (en) * 2001-05-04 2003-03-20 Southern Methodist University Fast IEEE floating-point adder
US6779013B2 (en) 2001-06-04 2004-08-17 Intel Corporation Floating point overflow and sign detection
US6889241B2 (en) 2001-06-04 2005-05-03 Intel Corporation Floating point adder
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US7293056B2 (en) 2002-12-18 2007-11-06 Intel Corporation Variable width, at least six-way addition/accumulation instructions
US7139900B2 (en) * 2003-06-23 2006-11-21 Intel Corporation Data packet arithmetic logic devices and methods
US20060218381A1 (en) * 2005-03-24 2006-09-28 Stexar Corporation Rounding correction for add-shift-round instruction with dual-use source operand for DSP
US8069200B2 (en) * 2005-04-28 2011-11-29 Qsigma, Inc. Apparatus and method for implementing floating point additive and shift operations
US8589663B2 (en) * 2006-06-27 2013-11-19 Intel Corporation Technique to perform three-source operations
JP4388543B2 (ja) * 2006-12-14 2009-12-24 株式会社日立製作所 3項入力の浮動小数点加減算器
US8239439B2 (en) * 2007-12-13 2012-08-07 International Business Machines Corporation Method and apparatus implementing a minimal area consumption multiple addend floating point summation function in a vector microprocessor
US8549264B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
CN104126173A (zh) * 2011-12-23 2014-10-29 英特尔公司 不会引起密码应用的算术标志的三输入操作数向量add指令
US9335993B2 (en) * 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
KR101893814B1 (ko) 2014-03-26 2018-10-04 인텔 코포레이션 3 소스 피연산자 부동 소수점 가산 프로세서, 방법, 시스템, 및 명령어

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481686A (en) * 1994-05-11 1996-01-02 Vlsi Technology, Inc. Floating-point processor with apparent-precision based selection of execution-precision
EP0976034B1 (en) * 1996-01-24 2005-10-19 Sun Microsystems, Inc. Method and apparatus for stack caching
US6029243A (en) * 1997-09-19 2000-02-22 Vlsi Technology, Inc. Floating-point processor with operand-format precision greater than execution precision
TW561399B (en) * 2000-06-09 2003-11-11 Cirrus Logic Inc Math coprocessor

Also Published As

Publication number Publication date
RU2016135016A (ru) 2018-03-01
US20180032332A1 (en) 2018-02-01
JP2017515177A (ja) 2017-06-08
RU2656730C2 (ru) 2018-06-06
TW201604776A (zh) 2016-02-01
CN106030510A (zh) 2016-10-12
RU2016135016A3 (zh) 2018-03-01
KR101893814B1 (ko) 2018-10-04
JP6371855B2 (ja) 2018-08-08
US20150286482A1 (en) 2015-10-08
KR20160110511A (ko) 2016-09-21
WO2015147895A1 (en) 2015-10-01
US9785433B2 (en) 2017-10-10
DE112014006508T5 (de) 2017-01-05

Similar Documents

Publication Publication Date Title
TWI575448B (zh) 三個來源運算元浮點加法處理器、方法、系統及指令
JP6238497B2 (ja) プロセッサ、方法、及びシステム
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI512616B (zh) 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品
TWI489381B (zh) 多暫存器散布指令
TWI630548B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI544406B (zh) 浮點捨入處理器
TWI617978B (zh) 用於向量索引載入和儲存之方法和設備
TWI502494B (zh) 用以執行絕對差之雙塊總數之方法,製品及裝置
TW201823973A (zh) 用於融合乘加運算的系統、裝置及方法
JP2017529601A (ja) ビットシャッフルプロセッサ、方法、システム、および命令
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TW201723805A (zh) 資料元件比較處理器、方法、系統及指令
JP6760935B2 (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
TW201810029A (zh) 用於跨步載入的系統、設備及方法
CN107003848B (zh) 用于融合乘法-乘法指令的装置和方法
TW201732568A (zh) 用於巷道為主的跨類收集的系統、設備與方法
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置
TWI697836B (zh) 處理包括高功率及標準指令之指令集的方法與處理器
CN107003841B (zh) 用于融合加法-加法指令的装置和方法
TW201810020A (zh) 用於累乘的系統、設備及方法

Legal Events

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