TWI474258B - 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體 - Google Patents
用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體 Download PDFInfo
- Publication number
- TWI474258B TWI474258B TW101148671A TW101148671A TWI474258B TW I474258 B TWI474258 B TW I474258B TW 101148671 A TW101148671 A TW 101148671A TW 101148671 A TW101148671 A TW 101148671A TW I474258 B TWI474258 B TW I474258B
- Authority
- TW
- Taiwan
- Prior art keywords
- floating point
- instruction
- rounding
- floating
- point data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Nonlinear Science (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
本發明之實施例係有關於處理器。更明確言之,實施例係有關於處理器以響應於浮點捨入量決定指令而決定浮點捨入量。
浮點數常用在處理器、電腦系統、及其它電子裝置。浮點數的一項優點係為其允許以相對緊密數值格式及/或位元數目表示一寬廣範圍的數值。
多個不同浮點格式為技藝界所已知。該浮點格式典型地將用以表示浮點數的位元分配成數個已知為符號、有效數、及浮點數的指數之組成欄位。
多個指令為技藝界已知用以處理浮點數。舉例言之,已知用以在浮點格式與整數格式間轉換的指令。舉另一個實例,已知指令用以將純量或緊縮單或雙精度浮點資料元體捨入成個別地呈單或雙精度浮點格式的整數。
依據本發明之一實施例,係特地提出一種方法包
括接收一浮點捨入量決定指令,該浮點捨入量決定指令指示一或多個浮點資料元體之一來源,指示在一數基點後方的浮點數位元數目,及指示一目的地儲存位置;及響應於該浮點捨入量決定指令而儲存包括一或多個結果浮點資料元體的一結果於該目的地儲存位置,該等一或多個結果浮點資料元體各自係包括在一相對應位置之該來源的一相對應浮點資料元體與已經被捨入至該指示的分數位元數之該來源之該相對應浮點資料元體的一捨入版本間之一差。
100‧‧‧處理器
101‧‧‧指令集架構(ISA)
102‧‧‧指令集
103、303、1003、1303‧‧‧浮點捨入量決定指令
104‧‧‧架構暫存器檔案
105‧‧‧緊縮資料暫存器
106‧‧‧遮罩暫存器
107‧‧‧控制及/或狀態暫存器
108‧‧‧浮點執行邏輯
210A‧‧‧半精度浮點格式
210B‧‧‧單精度浮點格式
210C‧‧‧雙精度浮點格式
210D‧‧‧延伸雙精度浮點格式
210E‧‧‧四精度浮點格式
211A-E‧‧‧有效數
212A-E‧‧‧指數
213A-E‧‧‧符號
300‧‧‧指令處理裝置
305‧‧‧緊縮資料暫存器
315‧‧‧解碼器
316‧‧‧浮點執行單元
320‧‧‧來源
321‧‧‧一或多個浮點資料元體
322‧‧‧目的地
323‧‧‧各自包括一捨入量的一或多個結果浮點資料元體
324、524‧‧‧結果
425‧‧‧方法
426、427‧‧‧方塊
520‧‧‧一或多個浮點資料元體之來源
530‧‧‧浮點捨入量決定操作
532‧‧‧分量位元數
634‧‧‧64-位元緊縮單精度浮點格式
635‧‧‧128-位元緊縮單精度浮點格式
636‧‧‧256-位元緊縮單精度浮點格式
637‧‧‧128-位元緊縮雙精度浮點格式
638‧‧‧256-位元緊縮雙精度浮點格式
639‧‧‧呈128-位元暫存器格式的純量單精度浮點資料
640‧‧‧呈128-位元暫存器格式的純量雙精度浮點資料
720‧‧‧單一浮點資料元體之來源
724、824‧‧‧結果緊縮浮點資料
730‧‧‧具有資料元體廣播操作的浮點捨入量決定
732、832‧‧‧來源資料元體欲捨入的在數基點後方的分數位元數
820‧‧‧來源緊縮資料元體
830‧‧‧具有遮罩操作的浮點捨入量決定
842‧‧‧緊縮資料操作遮罩
906‧‧‧緊縮資料操作遮罩暫存器
1043‧‧‧操作碼
1044‧‧‧來源載明符
1045‧‧‧目的地載明符
1046‧‧‧資料元體廣播控制
1047‧‧‧緊縮資料操作遮罩載明符
1048‧‧‧遮罩操作載明符的型別
1049、1149‧‧‧浮點捨入控制
1050、1150‧‧‧浮點捨入模式載明符
1052、1152‧‧‧分數位元數載明符
1053、1153‧‧‧緊接
1151‧‧‧不使用且可為零
1205‧‧‧緊縮資料暫存器
1354‧‧‧製造物品
1355‧‧‧機器可讀取儲存媒體
1400‧‧‧通用向量友善指令格式
1405‧‧‧無記憶體存取指令樣板
1410‧‧‧無記憶體存取完整捨入控制型別操作指令樣板
1412‧‧‧無記憶體存取寫遮罩控制部分捨入控制型別操作指令樣板
1415‧‧‧無記憶體存取資料變換型別操作指令樣板
1417‧‧‧無記憶體存取寫遮罩控制VSIZE型別操作指令樣板
1420‧‧‧記憶體存取指令樣板
1425‧‧‧記憶體存取時間性指令樣板
1427‧‧‧記憶體存取寫遮罩控制指令樣板
1430‧‧‧記憶體存取非時間性
1440‧‧‧格式欄位
1442‧‧‧基本操作欄位
1444‧‧‧暫存器指數欄位
1446‧‧‧修正器欄位
1446A‧‧‧無記憶體存取
1446B‧‧‧記憶體存取
1450‧‧‧擴大操作欄位
1452‧‧‧α欄位
1452A‧‧‧rs欄位
1452A.1‧‧‧捨入
1452A.2‧‧‧資料變換
1452B‧‧‧逐出暗示欄位
1452B.1‧‧‧時間性
1452B.2‧‧‧非時間性
1452C‧‧‧寫遮罩控制欄位
1454‧‧‧β欄位
1454A‧‧‧捨入控制欄位
1454B‧‧‧資料變換欄位
1454C‧‧‧資料操弄欄位
1456‧‧‧SAE欄位
1457A‧‧‧RL欄位
1457A.1‧‧‧捨入
1457A.2‧‧‧向量長度(VSIZE)
1457B‧‧‧廣播欄位
1458‧‧‧捨入操作控制欄位
1459A‧‧‧捨入操作欄位
1459B‧‧‧向量長度欄位
1460‧‧‧規度欄位
1462A‧‧‧位移欄位
1462B‧‧‧位移標度欄位
1464‧‧‧資料元體寬度欄位
1468‧‧‧EVEX.U、類別欄位
1468A‧‧‧類別A
1468B‧‧‧類別B
1470‧‧‧寫遮罩欄位
1472‧‧‧即刻欄位
1474‧‧‧完整操作碼欄位
1500‧‧‧特定向量友善指令格式
1502‧‧‧EVEX前綴(位元組0-3)
1505‧‧‧REX欄位
1510‧‧‧REX’欄位
1515‧‧‧操作碼映射欄位
1520‧‧‧VVVV欄位、EVEX.vvvv
1525‧‧‧前綴編碼欄位
1530‧‧‧真實操作碼欄位
1540‧‧‧MOD R/M欄位
1542‧‧‧MOD欄位
1544‧‧‧MODR/M.Reg欄位
1546‧‧‧MODR/M.r/m欄位
1554‧‧‧xxx欄位、SIB.xxx
1556‧‧‧bbb欄位、SIB.bbb
1600‧‧‧暫存器架構
1610‧‧‧向量暫存器
1615‧‧‧寫遮罩暫存器
1625‧‧‧通用暫存器
1645‧‧‧純量浮點堆疊暫存器檔案(x87堆疊)
1650‧‧‧MMX緊縮整數平坦暫存器檔案
1700‧‧‧處理器管線
1702‧‧‧提取階段
1704‧‧‧長度解碼階段
1706‧‧‧解碼階段
1708‧‧‧分配階段
1710‧‧‧重新命名階段
1712‧‧‧排程階段
1714‧‧‧暫存器讀/記憶體讀階段
1716‧‧‧執行階段
1718‧‧‧回寫/記憶體寫階段
1722‧‧‧例外處理階段
1724‧‧‧委付階段
1730‧‧‧前端單元
1732‧‧‧分支預測單元
1734‧‧‧指令快取單元
1736‧‧‧指令轉譯後備緩衝器(TLB)
1738‧‧‧指令提取單元
1740‧‧‧解碼單元
1750‧‧‧執行引擎單元
1752‧‧‧重新命名/分配器單元
1754‧‧‧報廢單元
1756‧‧‧排程器單元
1758‧‧‧實體暫存器檔案單元
1760‧‧‧執行叢集
1762‧‧‧執行單元
1764‧‧‧記憶體存取單元
1770‧‧‧記憶體單元
1772‧‧‧資料TLB單元
1774‧‧‧資料快取單元
1776‧‧‧L2快取單元
1800‧‧‧指令解碼器
1802‧‧‧晶粒上互連體網路、環狀網路
1804‧‧‧L2快取記憶體之一本地子集
1806‧‧‧L1快取記憶體
1806A‧‧‧L1資料快取記憶體
1808‧‧‧純量單元
1810‧‧‧向量單元
1812‧‧‧純量暫存器
1814‧‧‧向量暫存器
1820‧‧‧調合單元
1822A-B‧‧‧數值轉換單元
1824‧‧‧複製單元
1826‧‧‧寫遮罩暫存器
1828‧‧‧16-寬向量ALU
1900、2010、2015、2115、2170、2180‧‧‧處理器
1902A-N‧‧‧核心
1904A-N‧‧‧快取單元
1906‧‧‧分享快取單元
1908‧‧‧特用邏輯
1910‧‧‧系統代理者單元
1912‧‧‧環
1914‧‧‧整合記憶體控制單元
1916‧‧‧匯流排控制器單元
2000、2100、2200‧‧‧系統
2020‧‧‧控制器中樞器
2040、2132、2134‧‧‧記憶體
2045、2138、2320‧‧‧共處理器
2050‧‧‧輸入/輸出中樞器(IOH)
2060、2114、2214‧‧‧I/O裝置置
2090‧‧‧圖形記憶體控制器中樞器(GMCH)
2095‧‧‧連結
2116‧‧‧第一匯流排
2118‧‧‧匯流排橋接器
2120‧‧‧第二匯流排
2122‧‧‧鍵盤/滑鼠
2124‧‧‧音訊I/O
2127‧‧‧通訊裝置
2128‧‧‧儲存單元
2130‧‧‧指令/代碼及資料
2139‧‧‧高效能介面
2152、2154‧‧‧點對點(P-P)介面
2172、2182‧‧‧整合記憶體控制器(IMC)單元
2176、2178、2186、2188、2194、2198‧‧‧點對點介面電路
2190‧‧‧晶片組
2196‧‧‧介面
2215‧‧‧舊式I/O裝置
2300‧‧‧單晶片系統(SoC)
2302‧‧‧互連體單元
2310‧‧‧應用程式處理器
2330‧‧‧SRAM單元
2332‧‧‧DMA單元
2340‧‧‧顯示單元
2402‧‧‧高階語言
2404‧‧‧x86編譯器
2406‧‧‧x86二進制碼
2408‧‧‧另一指令集編譯器
2410‧‧‧另一指令集二進制碼
2412‧‧‧指令轉換器
2414‧‧‧不具x86指令集核心之處理器
2416‧‧‧具有至少一個x86指令集核心之處理器
藉參考後文詳細說明部分及用以例示說明實施例的附圖將最為瞭解本發明。附圖中:圖1為具有一指令集包括一或多個浮點捨入量決定指令之一處理器的實施例之方塊圖。
圖2A-E為適當浮點格式之實施例的方塊圖。
圖3為具有一浮點執行單元其係可操作以執行浮點捨入量決定指令之一實施例的指令處理裝置之一實施例的方塊圖。
圖4為一種處理浮點捨入量決定指令之一實施例的方法之一實施例的方塊流程圖。
圖5為涉及將一或多個浮點數的一或多個有效數捨入成一指示的分數位元數之一種浮點捨入量決定指令之一實施例的方塊圖。
圖6為適當浮點來源及/或結果格式之若干具體實施例的方塊圖。
圖7為一種具資料元體廣播的浮點捨入量決定操作之一實施例的方塊圖。
圖8為一種具遮罩的浮點捨入量決定操作之一實施例的方塊圖。
圖9為一種適當緊縮資料操作遮罩暫存器之集合之一實施例的方塊圖。
圖10為一種浮點捨入量決定指令格式之一實施例的方塊圖。
圖11為一種適當即刻之一特定具體實施例的方塊圖。
圖12為一種適當緊縮資料暫存器之集合之一實施例的方塊圖。
圖13為一物品的方塊圖,該物品係包括儲存一或多個浮點捨入量決定指令的機器可讀取儲存媒體。
圖14A為方塊圖例示說明依據本發明之實施例一種通用向量友善指令格式及其類別A指令樣板。
圖14B為方塊圖例示說明依據本發明之實施例該通用向量友善指令格式及其類別B指令樣板。
圖15A為方塊圖例示說明依據本發明之實施例特用向量友善指令格式之實例。
圖15B為方塊圖例示說明依據本發明之實施例組成完整操作碼欄位之該特用向量友善指令格式的該等欄位。
圖15C為方塊圖例示說明依據本發明之實施例組成暫存器指數欄位之該特用向量友善指令格式的該等欄位。
圖15D為方塊圖例示說明依據本發明之實施例組成擴
大操作欄位之該特用向量友善指令格式的該等欄位。
圖16為依據本發明之一個實施例一暫存器架構之方塊圖。
圖17A為方塊圖例示說明依據本發明之實施例一有序管線實例及一暫存器重新命名失序簽發/執行管線實例。
圖17B顯示包括一前端單元耦接至一執行引擎單元之處理器核心,及二者皆係耦接至一記憶體單元。
圖18A為依據本發明之實施例一單一CPU核心,連同其連結至晶粒上互連體網路及層級2(L2)快取記憶體之其本地子集之一方塊圖。
圖18B為依據本發明之一個實施例圖18A中該處理器核心之部分放大視圖。
圖19為依據本發明之一實施例可具有多於一個核心,可具有整合記憶體控制器,及可具有整合圖形裝置之一處理器的方塊圖。
圖20顯示依據本發明之一個實施例一種系統之方塊圖。
圖21顯示依據本發明之實施例一種第一更特定實例系統之方塊圖。
圖22顯示依據本發明之實施例一種第二更特定實例系統之方塊圖。
圖23顯示依據本發明之實施例SoC之一方塊圖。
圖24為依據本發明之實施例對比一軟體指令轉換器的使用以將於一來源指令集中之一二進制指令轉換成於一目標指令集中之一二進制指令的方塊圖。
此處揭示者為浮點捨入量決定指令、執行該等浮點捨入量決定指令之處理器、當處理或執行該等浮點捨入量決定指令時由該等處理器所執行之方法、及結合一或多個處理器以處理或執行該等浮點捨入量決定指令之系統。於後文詳細說明部分中,陳述無數特定細節(例如特定處理器組態、操作順序、指令格式、浮點格式、微架構細節等)。但可無此等特定細節而實施實施例。於其它情況下,眾所周知的電路、結構及技術未曾以細節顯示以免遮掩對本發明的瞭解。
圖1為具有一指令集102包括一或多個浮點捨入量決定指令103之一處理器100之一實施例的方塊圖。該處理器可為各個複雜指令集電腦(CISC)處理器、各個精簡指令集電腦(RISC)處理器、各個極長指令字組(VLIW)處理器、其各個混成體、或其它型別的處理器實體。於若干實施例中,該處理器可為通用處理器(例如用於桌上型電腦、膝上型電腦等電腦的該型別通用微處理器)。另外,該處理器可為特用處理器。適當特用處理器之實例包括但非僅限於網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入式處理器、數位信號處理器(DSP)、浮點共處理器及控制器(例如微控制器),僅舉出少數實例。
該處理器具有一指令集架構(ISA)101。ISA表示程式規劃相關處理器架構的一部分。ISA常見包括本機指
令、架構暫存器、資料型別、定址模式、記憶體架構、中斷及例外處理、及處理器的外部輸入/輸出(I/O)。ISA係與微架構相區別,微架構通常表示選用以體現該ISA的特定處理器設計技術。具有不同微架構的處理器可共享一共用ISA。
ISA包括由該處理器所支援的一指令集102。該指令集的該等指令表示巨集指令(例如提供給處理器用以執行的指令),巨集指令係與微指令或微操作(例如從解碼巨集指令的處理器的解碼器所得者)相反。該指令集係包括一或多個浮點捨入量決定指令103。於若干實施例中,該等浮點捨入量決定指令係可操作以使得該處理器決定一或多個來源浮點資料元體與該等一或多個相對應來源浮點資料元體的一捨入版本間之一差。浮點捨入量決定指令之多個不同實施例將容後詳述。該處理器也包括浮點執行邏輯108,其可操作以執行或處理浮點捨入量決定指令103。
ISA也包括架構上可見的暫存器(例如架構暫存器檔案)104。架構暫存器通常表示晶粒上處理器儲存位置。架構暫存器也可於此處簡稱為暫存器。除非另行載明或顯然易明,架構暫存器、暫存器檔案、及暫存器等詞用於此處表示為軟體及/或程式設計師(例如軟體可見)及/或暫存器可見,該等暫存器係由通用巨集指令載明為識別運算元。此等暫存器係與一給定微架構中的非架構或非架構可見暫存器(例如由指令、重新排序緩衝器、報廢暫存器等使用的臨時暫存器)相反。
例示說明的架構暫存器包括緊縮資料暫存器105。緊縮資料暫存器各自係可操作以儲存緊縮資料、向量資料、或SIMD資料。於若干實施例中,緊縮資料暫存器可用以儲存與浮點捨入量決定指令103的緊縮實施例相聯結的緊縮浮點資料。於若干實施例中,緊縮資料暫存器可用以儲存與浮點捨入量決定指令103的純量實施例相聯結的純量浮點資料。於若干實施例中,緊縮資料暫存器也可選擇性地儲存整數資料但非必要。另外,架構暫存器可包括一分開純量浮點暫存器集合以個別地針對浮點捨入量決定指令的純量實施例儲存純量浮點資料。
於若干實施例中,暫存器可選擇性地包括遮罩暫存器106但非必要。遮罩暫存器可儲存緊縮資料操作遮罩以遮罩或斷言緊縮資料操作(例如與浮點捨入量決定指令相聯結的緊縮資料浮點捨入量決定)。遮罩暫存器及遮罩操作將容後詳述。
暫存器也包括控制及/或狀態暫存器107。於若干
面向中,控制及/或狀態暫存器中之一或多者可包括與浮點捨入量決定指令的執行相聯結的狀態及/或控制資訊(例如除非有由指令所提供的捨入模式之凌駕,否則可包括由浮點捨入量決定指令所使用的內設捨入模式)。
浮點數的簡短討論可有助益。浮點數包括一符號、有效數、底數、及指數,其關係係顯示於方程式1:A=(-1)符號
*有效數*底數指數
方程式1表示法「(-1)符號
」表示-1提高至該符號的次冪。本表示法評
估該浮點數係為正(+)或負(-)。舉例言之,當符號為整數零時浮點數為正,或另外當符號為整數一時浮點數為負。該有效數包括具有大為決定該浮點數之精度的長度之一位數串。有效數偶爾亦稱有效位數、係數、分數、或尾數。數基點(例如十進制格式的數基點,或二進制格式的二進制點)係常見暗示地推定係駐在一個固定位置(例如恰在有效數的最左位數或最有效位數的右側,偶爾暗示地容後詳述)。二進制中的有效數實例可為「1.10010010000111111011011」。在數基點右側的有效數的位數(例如「1.10010010000111111011011」)可表示分數位元。表示法「底數指數
」表示底數提高至指數次冪。底數常見為底數2(針對二進制)、底數10(針對十進制)、或底數16(針對十六進制)。底數偶爾稱作為基數。指數亦稱首數或標度。將基數提高至指數的次冪實際上移位數基點(例如從暗示的或推定的起點)達指數位數。若指數為正則數基點朝右移位,若指數為負則數基點朝左移位。
圖2A-E為方塊圖例示說明適當浮點格式之具體實施例。美國電機及電子工程師學會(IEEE)已經標準化IEEE 754的各個版本之此等格式。
圖2A例示說明一半精度浮點格式210A。該半精度浮點格式具有16-位元且又稱二進制16。該半精度浮點格式包括於位元[9:0]的一10-位元有效位數211A、於位元[14:10]的一5-位元指數212A、及於位元[15]的一1-位元符號213A。
圖2B例示說明一單精度浮點格式210B。該單精度浮點格式具有32-位元且又稱二進制32。該單精度浮點格式包括於位元[22:0]的一23-位元有效位數211B、於位元[30:23]的一8-位元指數212B、及於位元[31]的一1-位元符號213B。
圖2C例示說明一雙精度浮點格式210C。該雙精度浮點格式具有64-位元且又稱二進制64。該雙精度浮點格式包括於位元[51:0]的一52-位元有效位數211C、於位元[62:52]的一11-位元指數212C、及於位元[63]的一1-位元符號213C。目前,單精度及雙精度格式可能為大部分處理器、電腦系統、及電子裝置所最廣泛使用。
圖2D例示說明一延伸雙精度浮點格式210D。該延伸雙精度浮點格式具有80-位元。該延伸雙精度浮點格式包括於位元[63:0]的一64-位元有效位數211D、於位元[78:64]的一15-位元指數212D、及於位元[79]的一1-位元符號213D。
圖2E例示說明一四精度浮點格式210E。該四精度浮點格式具有128-位元且又稱二進制128。該四精度浮點格式包括於位元[111:0]的一112-位元有效位數211E、於位元[126:112]的一15-位元指數212E、及於位元[127]的一1-位元符號213E。
於各個此等浮點格式中,底數係暗示或假設為底數2(亦即二進制),且不以浮點格式分開儲存。有效數的最高有效位元或最左位元係稱作J-位元。J-位元暗示地假設為
二進制1,通常係非以浮點格式儲存,反而係以提供額外精度(例如針對有效數明確地具有23-位元的單精度浮點數具有24-位元精度)的暗示或隱藏位元而無需儲存。數基點通常推定為遵照J-位元。指數通常具有指數偏壓。舉例言之,半精度格式可具有15之指數偏壓,單精度格式可具有127之指數偏壓,雙精度格式可具有1023之指數偏壓,及四精度格式可具有16383之指數偏壓。浮點數及浮點格式之進一步細節係在IEEE 754可得。
此等只是數個具體實施例。其它適當格式包括但非僅限於十進制32、十進制64、及十進制128。此外,未來發展的其它格式通常為適合。
圖3為具有一浮點執行單元316其係可操作以執行包括浮點捨入量決定指令303的一實施例的指令之指令處理裝置300之一實施例的方塊圖。於若干實施例中,指令處理裝置可為處理器及/或可含括於處理器。舉例言之,於若干實施例中,指令處理裝置可為或可包括於圖1之處理器100或其類。另外,指令處理裝置可含括於不同處理器或電子系統。於若干實施例中,指令處理裝置可含括於增上的或分開的浮點處理器或單元以導入或補充相聯結的處理器或電子裝置的浮點處理能力。
指令處理裝置300可接收浮點捨入量決定指令303。舉例言之,指令可接收自指令提取單元、指令佇列、或記憶體。浮點捨入量決定指令可表示機器指令、巨集指令、或由指令處理裝置所辨識且控制裝置以執行特定操作
的控制信號。
浮點捨入量決定指令可明確地載明(例如透過位元或一或多個欄位)或以其它方式指示(例如明確地指示)一來源320。該來源係包括一或多個浮點資料元體321。於若干實施例中,該浮點捨入量決定指令可明確地載明(例如透過位元或一或多個欄位)或以其它方式指示(例如明確地指示)在該來源320的一或多個浮點資料元體321各自欲捨入的一數基點(例如二進制點、十進制點、十六進制點)後方的分數位元數。於若干實施例中,分數位元數可載明於一指令的緊接。另外,分數位元數可載明於暫存器或其它儲存位置,或暗示地指示於暫存器或其它儲存位置。該指令也可載明或以其它方式指示依據該指令一結果324欲儲存於該處的一目的地322(例如目的地儲存位置)。
於若干實施例中,來源320及目的地322各自係落入於指令處理裝置的緊縮資料暫存器305的一集合內但非必要。緊縮資料暫存器各自表示可操作以儲存緊縮的或向量浮點資料之一架構上可見的晶粒上儲存位置(例如在有執行單元的晶粒上)。於若干實施例中,如前述,緊縮資料暫存器也可操作以儲存純量浮點資料。緊縮資料暫存器可使用眾所周知之技術以不同方式於不同微架構體現,且非僅限制任何特定型別的電路。各個不同型別的暫存器皆屬適合,只要其可儲存如此處所述之浮點資料即可。適當型別暫存器之實例包括但非僅限於專用實體暫存器、使用暫存器重新命名的動態分配實體暫存器、及其組合。另外,
於其它實施例中,除了緊縮資料暫存器之外,來源及/或目的地中之一或多者可儲存於其它儲存位置(例如於純量浮點暫存器、記憶體位置等)。
例示說明的指令處理裝置包括一指令解碼單元或解碼器315。該解碼器可接收且解碼高階機器指令或巨集指令(例如浮點捨入量決定指令303),及輸出反映及/或推衍自該原先高階指令的一或多個低階微操作、微碼進入點、微指令、或其它低階指令或控制信號。一或多個低階指令或控制信號可透過一或多個低階(例如電路層級或硬體層級)操作而體現高階指令的操作。解碼器可使用各個不同機制體現,包括但非僅限於微碼唯讀記憶體(ROM)、詢查表、硬體體現、可規劃邏輯陣列(PLA)、及用以體現技藝界已知的解碼器之其它機制。
於其它實施例中,替代具有解碼器315,可使用指令模擬器、轉譯器、變形器、解譯器、或其它指令轉換邏輯。多個不同型別的指令轉換邏輯為技藝界所已知且可於軟體、硬體、韌體或其組合體現。該指令轉換邏輯可接收指令,將所接收的指令模擬、轉譯、變形、解譯、或以其它方式成為一或多個相對應推衍指令或控制信號。於又其它實施例中,可使用指令轉換邏輯及解碼器。舉例言之,裝置可具有指令轉換邏輯以將所接收的指令轉換成一或多個中間指令,及一解碼器以解碼一或多個中間指令成為可由該指令處理裝置的本機硬體執行的一或多個低階指令或控制信號。指令轉換邏輯的部分或全部可非位在指令處理
裝置之其餘部分的晶粒上,諸如在分開晶粒上或位在非在晶粒的記憶體中。
再度參考圖3,浮點執行單元316係耦接解碼器315。該執行單元可從解碼器接收反映及/或推衍自該浮點捨入量決定指令303多個低階微操作、微碼進入點、微指令、其它指令、其它信號。該執行單元也係耦接來源320及目的地322(例如耦合緊縮資料暫存器305)。浮點執行單元包括設計在浮點數上進行操作(例如浮點捨入量決定指令、浮點捨入操作、減法運算等)的邏輯(例如典型地至少若干電路)。
響應於及/或由於浮點捨入量決定指令303的結果,浮點執行單元316可操作以儲存一結果324於該目的地,該浮點捨入量決定指令303係載明或以其它方式指示包括該等一或多個浮點資料元體321的來源320,及載明或以其它方式指示該目的地322。若有所需,該等一或多個浮點資料元體各自可包括於一相對應位置的來源之一相對應浮點資料元體與已經捨入至該指示分數位元數的該來源之該相對應浮點資料元體之一捨入版本間之差。換言之,各個結果資料元體可表示(FP-FP*),於該處FP表示浮點數,及於該處FP*表示該浮點數之捨入版本。換言之,該指令可使得該執行單元藉將一或多個浮點資料元體捨入至該指示的分數位元數而決定該等一或多個浮點資料元體的捨入版本,及然後從捨入前的初始相對應於浮點資料元體操除各個此等捨入版本。
於若干實施例中,浮點捨入量決定指令可操作以使得該裝置將該等一或多個浮點資料元體各自的有效數捨入至一給定分數位元數。於此等實施例中,浮點捨入量決定指令可決定於欲捨入的該來源之該等一或多個浮點資料元體各自的數基點(例如二進制點、十進制點、或十六進制點)之後或右側的分數位元數。本方法並非限於捨入整數值。當由該指令指示的分數位元數為零時,捨入整數值係屬可能;但當由該指令指示的分數位元數為非零時可達成捨入至非整數值。於若干實施例中,浮點捨入量決定指令的緊接可包括一或多個位元以明確地載明欲捨入的該來源之該等一或多個浮點資料元體各自的數基點(例如二進制點或十進制點)之後的分數位元數。於一個特定實施例中,8-位元緊接的位元[7:4]可載明之此數目(例如載明零與15間的數目)但非必要。
捨入一浮點數係指以代表(例如約等於)起始浮點數其具有在該數基點後方的較少數分數位元數的另一個浮點數置換該浮點數。考慮捨入數pi(π)的實例。以熟悉十進制表示法至20十進制位置表示的數目π為π=3.14159265358979323846...。於二進制單精度浮點格式中,數目π表示為有效數=1.10010010000111111011具有指數=1。假設想要捨入至5分數位元。於該種情況下,取決於捨入模式,捨入值將為11.00100,或11.00101。結果將回送浮點,或為具二進制指數=1的1.100100,或為具二進制指數=1的1.100101(取決於捨入模式)。
將浮點數的有效數捨入至一給定分數位元數可用於各個不同目的。舉一個實例,當期望減少分數位元數及/或浮點數的精度時,此點為有用。舉另一個實例,當將浮點數轉換成數基點右側的一給定有效位數時,此點為有用。舉又另一個實例,在使用具有指示的分數位元數的該捨入有效數以詢查表將一指數詢查入該表之前,此點為有用。減少分數位元數可有助於縮小表的大小(例如分錄數目)。也期望知曉捨入量或與此種捨入操作相聯結的捨入量。舉一個實例,如此許可評估因捨入導致的錯誤量。舉另一個實例,當處理數學存庫中的指數、次冪、或其它超越函數時,此點為有用。
將一或多個浮點數捨入至指示的分數位元數及決定在單一指令執行侷限內部的捨入量之能力提供某些優點。其它指令只可將浮點數捨入至整數,可能要求四步驟式處理程序,首先藉浮點數乘以相對應於期望的浮點數的一標度因數而定標該浮點數,使用具有限制只能捨入至整數量的指令而將該已定標的浮點數捨入至整數,然後藉該標度因數解除該捨入整數值浮點數的定標,及然後扣除該原先來源。經常,此等操作部分傾向於相當複雜的操作,潛在地涉及溢位控制及特定值處理。
常見地,指示的分數位元數為正,但於若干實施例中,許可指示的分數位元數為負。捨入至一負「分數」位元數可表示捨入至一給定數基點次冪的倍數。舉例言之,當捨入至負整數-k分數位元時,結果將為N*數基點k,
於該處N為整數。舉一個實例,取決於捨入模式,於二進制5.0捨入至k=-1分數位元將為4.0或6.0。舉另一個實例,於二進制15.25捨入至k=-2分數位元將為12.0至16.0。捨入至負分數位元數的用途包括但非僅限於於函數測試特殊情況,諸如pow:k=-1,及其它用途係用在數學存庫。
於若干實施例中,若來源資料元體為發訊非一數目(SNaN)時,則可轉換成靜默非一數目(QNaN)。於若干實施例中,若來源資料元體為正或負無限大時,則回送值可為零。於若干實施例中,若來源資料元體為非常規,則回送值可為來源資料元體。
浮點執行單元及/或指令處理裝置可包括可操作以執行及/或處理浮點捨入量決定指令,且響應於該指令(例如響應於推衍自該指令的一或多個微指令或其它控制信號)而儲存結果的特定或特殊邏輯(例如典型地電路或其它硬體潛在組合軟體及/或韌體)。於若干實施例中,浮點執行單元可包括積體電路、數位電路、特定應用積體電路(ASIC)、類比電路、可程式規劃邏輯裝置(PLD)、含指令的儲存裝置或其組合。於若干實施例中,浮點執行單元可包括至少若干電路或硬體(例如從電晶體、閘、及/或其它積體電路組件組配成的特定電路)。於若干實施例中,該執行單元可包括一浮點乘法及加法算術邏輯單元但非必要。
為了避免遮掩描述,已經顯示與描述相對簡單的指令處理裝置。於其它實施例中,指令處理裝置可選擇性地包括其它眾所周知的組件,諸如指令提取單元、指令排
程單元、分支預測單元、指令及資料快取記憶體、指令及資料轉譯後備緩衝器、預提取緩衝器、微指令佇列、微指令排程器、匯流排介面單元、層級2或更高層級快取記憶體、報廢單元、暫存器重新命名單元、處理器中含括的其它組件、及其各項組合。實施例可具有多核心、邏輯處理器、或執行引擎。可操作以執行此處描述的指令之實施例的執行單元可含括於該等核心、邏輯處理器、或執行引擎中之至少一者,至少二者,大部分,或全部。文字上有處理器中的組件之無數不同組合及組態,實施例並不限於任何特定組合或組態。
圖4為一種處理一浮點捨入量決定指令之一實施例的方法425之一實施例的方塊流程圖。於多個實施例中,該方法可藉通用處理器、特用處理器(例如圖形處理器或數位信號處理器)、或另一型別數位邏輯裝置或指令處理裝置進行。於若干實施例中,方法425可藉圖1之處理器100或圖3之指令處理裝置300進行。另外,方法425可藉處理器或指令處理裝置之不同實施例進行。此外,處理器100及指令處理裝置300可進行與方法425操作及方法相同、相似、或相異的操作及方法之實施例。
於方塊426,該方法包括接收浮點捨入量決定指令。於多個面向中,指令可於處理器、指令處理裝置、或其部分(例如解碼器、指令轉換器等)接收。於多個面向中,指令可接收自非處理器來源(例如得自主記憶體、碟片、或匯流排或互連體),或得自處理器來源(例如得自指令快取記
憶體)。浮點捨入量決定指令載明或以其它方式指示欲捨入的該來源之該等一或多個浮點資料元體各自的數基點(例如二進制點或十進制點)之後的分數位元數,及載明或以其它方式指示一目的地儲存位置。
然後,於方塊427,包括一或多個結果浮點資料元體的結果係響應於、如浮點捨入量決定指令的結果、及/或如所載明而儲存於該目的地儲存位置。該等一或多個結果浮點資料元體各自係包括在一相對應位置之該來源的一相對應浮點資料元體與已經被捨入至該指示的分數位元數之該來源之該相對應浮點資料元體的一捨入版本間之一差。
例示說明之方法包括從處理器或指令處理裝置外側為可見的操作(例如從軟體面向為可見)。於其它實施例中,該方法可選擇性地包括處理器內部出現的一或多個操作。舉例言之,該浮點捨入量決定指令可經提取,及然後解碼、轉譯、模擬、或以其它方式轉換成一或多個其它指令或控制信號。該等來源運算元/資料可經存取及/或接收。一浮點執行單元可經致能以執行由指令所載明的操作,及可執行該操作(例如可執行微架構運算以體現指令之操作)。舉例言之,此等微架構運算可包括捨入、減法等。
圖5為方塊圖例示說明一種浮點捨入量決定操作530之一實施例。該浮點捨入量決定操作可響應於一浮點捨入量決定指令之一實施例而執行。
該浮點捨入量決定指令載明或以其它方式指示
一或多個浮點資料元體來源520。於若干實施例中,該來源可包括具有有效數0
的單一純量浮點資料元體FP0
。於一個面向中,該單一純量浮點資料元體可儲存於緊縮資料暫存器(例如於緊縮資料暫存器內部的最低排序資料元體)。另外,於另一面向中,該單一純量浮點資料元體可儲存於純量暫存器或另一儲存位置。適當浮點資料元體格式實例包括但非僅限於單精度、雙精度、延伸雙精度、及四精度。
於其它實施例中,該來源可包括具有相對應有效數有效數0
-有效數N
的多數個N緊縮浮點資料元體FP0
-FPN
。於各個實施例中,緊縮資料寬度可為64-位元,且可為兩個32-位元單精度浮點資料元體或一個64-位元雙精度浮點資料元體;緊縮資料寬度可為128-位元,且可為四個32-位元單精度浮點資料元體或兩個64-位元雙精度浮點資料元體;緊縮資料寬度可為256-位元,且可為八個32-位元單精度浮點資料元體或四個64-位元雙精度浮點資料元體;緊縮資料寬度可為512-位元,且可為十六個32-位元單精度浮點資料元體或八個64-位元雙精度浮點資料元體。其它緊縮資料寬度及浮點資料元體寬度(例如半精度、雙精度、四精度)也屬適宜。
浮點捨入量決定指令也載明或以其它方式指示指示分數位元數532。該分數位元數係在一數基點(例如二進制點、十進制點、十六進制點)後方或右側。該等一或多個浮點資料元體各自係欲捨入至指示的分數位元數,以產生來源浮點資料元體的捨入版本,及然後藉從原先相對應
來源浮點資料元體扣除該浮點資料元體的捨入版本而產生結果且儲存之。於若干實施例中,該指令可包括一或多個位元或欄位以明確地載明分數位元數。舉例言之,該指令可包括一緊接具有多數位元(8-位元緊接的位元[7:4])以載明分數位元數。4位元許可載明0至15間之分數位元數,但若期望能夠載明其它分數位元數,則可含括更少或更多位元。
包括一或多個相對應結果浮點資料元體的結果524可經產生且儲存於由該浮點捨入量決定指令所指示的一目的地。該等一或多個浮點資料元體各自係包括在一相對應位置之該來源的一相對應浮點資料元體(FP)與已經被捨入至該指示的分數位元數之該來源之該相對應浮點資料元體的一捨入版本(FP*
)間之一差。於該例示說明中,上標星號(*)係用以標示該相對應浮點資料元體(FP)的該捨入版本。舉例言之,FP0 *
為相對應浮點資料元體FP0
的捨入版本具有有效數0
捨入至指示的分數位元數;FPN *
為相對應浮點資料元體FPN
的捨入版本具有有效數N
捨入至指示的分數位元數等。據此,第一結果浮點資料元體可包括(FP0
-FP0 *
),第N結果浮點資料元體可包括(FPN
-FPN *
)等。
如圖所示,於單一純量浮點資料元體FP0
之實施例中,結果可包括單一相對應結果浮點資料元體。另外,於N緊縮浮點資料元體FP0
-FPN
之實施例中,結果可包括N個相對應結果浮點資料元體。
圖6為方塊圖例示說明適當浮點來源格式及/或結果格式之數個具體實施例。此等格式各自係適合如此處
揭示的一浮點捨入量決定指令之來源及/或結果。
64-位元緊縮單精度浮點格式634為64-位元寬且包括兩個32-位元單精度(SP)浮點資料元體SP0
-SP1
。SP0
乃最低有效資料元體且占用位元[31:0],而SP1
乃最高有效資料元體且占用位元[63:32]。
128-位元緊縮單精度浮點格式635為128-位元寬且包括四個32-位元單精度(SP)浮點資料元體SP0
-SP3
。SP0
占用位元[31:0],SP1
占用位元[63:32],SP2
占用位元[95:64],及SP3
占用位元[127:96]。
256-位元緊縮單精度浮點格式636為256-位元寬且包括八個32-位元單精度(SP)浮點資料元體SP0
-SP7
。SP0
占用位元[31:0],SP1
占用位元[63:32],SP2
占用位元[95:64],SP3
占用位元[127:96],SP4
占用位元[159:128],SP5
占用位元[191:160],SP6
占用位元[223:192],及SP7
占用位元[255:224]。
128-位元緊縮雙精度浮點格式637為128-位元寬且包括二個64-位元單精度(DP)浮點資料元體DP0
-DP1
。DP0
占用位元[63:0],DP1
占用位元[127:64]。
256-位元緊縮雙精度浮點格式638為256-位元寬且包括四個64-位元單精度(DP)浮點資料元體DP0
-DP3
。DP0
占用位元[63:0],DP1
占用位元[127:64],DP2
占用位元[191:128],及DP3
占用位元[255:192]。
呈128-位元暫存器格式的純量單精度浮點資料639包括於128-位元暫存器的最低排序位元[31:0]中的單一
純量32-位元單精度浮點資料元體SP。於若干面向中,暫存器乃緊縮資料暫存器,其也可操作以儲存緊縮資料。另外,純量單精度浮點資料元體SP可儲存於一純量暫存器。
呈128-位元暫存器格式的純量雙精度浮點資料640包括於128-位元暫存器的最低排序位元[63:0]中的單一純量64-位元雙精度浮點資料元體DP。於若干面向中,暫存器乃緊縮資料暫存器,其也可操作以儲存緊縮資料。另外,純量雙精度浮點資料元體DP可儲存於一非緊縮暫存器(例如純量暫存器)或記憶體位置。
此等僅為適當浮點來源及/或結果格式的數個具體實施例。由於此等格式的廣泛使用,已顯示單精度及雙精度浮點格式。但其它浮點格式(例如半精度、延伸雙精度、四精度等)也屬適宜。為求例示說明的簡明,顯示256-位元或以下的緊縮資料寬度。但512-位元或更寬的緊縮資料寬度也屬適宜。舉例言之,512-位元緊縮浮點格式可包括十六個單精度彧八個雙精度浮點格式。
圖7為一方塊圖例示說明可響應於具有資料元體廣播指令的浮點捨入量決定之一實施例而執行的具有資料元體廣播操作的浮點捨入量決定730之一實施例。舉例言之,此項操作可用於各個演算法,於該處期望針對多個向量操作各自再度使用單一來源浮點資料元體。該指令可指示具有一「有效數」的單浮點資料元體FP之一來源720。該指令也可指示該來源資料元體欲捨入的在一數基點後方的一分數位元數732。
具有資料元體廣播操作的浮點捨入量決定可組合單一浮點資料元體FP的一初始資料元體廣播與一隨後的浮點捨入量決定操作。該初始資料元體廣播可廣播或複製該單一浮點資料元體FP多次(例如等於浮點結果資料元體之數目的次數)。此點於例示說明中係顯示為呈虛線緊縮資料格式的FP之多套複製拷貝。於若干實施例中,廣播拷貝可經儲存(例如於過渡暫存器或其它非架構儲存位置),或於其它實施例中,該等廣播拷貝可僅只透過電路或傳遞至執行單元或內部而未經儲存。浮點資料元體FP之複製值可表示一向量或緊縮資料,其係將用在隨後的浮點捨入量決定指令操作。於若干實施例中,單一浮點資料元體FP可駐在記憶體,及該資料元體廣播可透過使用資料元體廣播指令而從浮點捨入量決定指令推衍的載入操作(例如載入微指令)體現。單一資料元體FP的廣播可表示在執行浮點捨入量決定操作前的一前處理資料變換。
結果緊縮浮點資料724可響應於具有資料元體廣播操作及/或指令的浮點捨入量決定指令而儲存於一目的地。該結果可包括多個緊縮結果緊縮浮點資料元體。該結果浮點資料元體可包括在一相對應位置該單一浮點資料元體之一不同廣播拷貝(FP)與該單一浮點資料元體之該相對應廣播拷貝之一捨入版本(FP*
)間之差。換言之,該結果浮點資料元體各自可表示或包括(FP-FP*
)。捨入版本(FP*
)可具有FP捨入至指示分數位元數的有效數。
其它實施例係有關於具有遮罩指令及/或操作的
浮點捨入量決定。具有遮罩的浮點捨入量決定指令可載明或以其它方式指示緊縮資料操作遮罩。緊縮資料操作遮罩於此處也可單純稱作遮罩。各個遮罩可表示一預測運算元或條件式控制運算元,其可遮罩、預測、或有條件地控制是否欲執行與指令相聯結的捨入操作及/或是否欲儲存捨入操作結果。於若干實施例中,各個遮罩可操作以遵照結果的資料元體粒度以遮罩捨入操作。各個遮罩許可針對不同結果資料元體的捨入操作與其它結果資料元體分開地預測或有條件地控制。
該等遮罩可各自包括多個遮罩元體、預測元體、條件式控制元體、或旗標。元體或旗標可以與結果資料元體呈一對一對應關係含括(例如若有四個結果資料元體,則可有四個元體或旗標)。各個元體或旗標可操作以遮罩於該相對應結果資料元體中的一捨入量結果的一分開的緊縮資料操作及/或儲存。常見地,各個元體或旗標可為單一位元。單一位元許可載明二不同可能中之任一者(例如執行操作相對於不執行操作,儲存操作結果相對於不儲存操作結果等)。該遮罩的各個位元之二進制值可預測或控制是否欲執行與該指令相聯結的一浮點捨入量決定操作及/或是否欲儲存一捨入量結果。依據一個可能的慣用法,各位元可經設定(亦即具有二進制值1)或經清除(亦即具有二進制值0)以許可或不許可浮點捨入量決定操作的結果執行及/或儲存於一相對應結果資料元體。
於若干實施例中,可執行合併-遮罩。於合併-遮
罩中,當一操作被遮罩時,得自來源緊縮資料的相對應資料元體值可儲存於相對應結果資料元體。舉例言之,若一來源欲再度用作為目的地,則相對應的目的地資料元體可保有其初來源值(亦即不以計算結果更新)。於其它實施例中,可執行歸零-遮罩。於歸零-遮罩中,當一操作被遮罩時,相對應結果資料元體可歸零,或零值可儲存於相對應結果資料元體。另外,其它預定值可儲存於經遮罩的結果資料元體。
於若干實施例中,浮點捨入量決定操作可選擇性地對全部相對應成對第一及第二來源資料的資料元體上執行,而與相對應遮罩位元無關,但取決於相對應遮罩位元,結果可儲存或可不儲存於結果緊縮資料。另外,於另一個實施例中,若相對應遮罩位元載明操作結果將不儲存於緊縮資料結果,則可選擇性地刪除(亦即不執行)浮點捨入量決定操作。於若干實施例中,例外及/或違反可藉在遮罩元體上操作而選擇性地被遏止或不提高。於若干實施例中,針對使用記憶體運算元的指令及/或操作,可選擇性地針對被遮罩資料元體而遏止記憶體錯誤。
圖8為方塊圖例示說明響應於具遮罩之浮點捨入量決定指令之一實施例,可執行具遮罩之浮點捨入量決定操作之一實施例。該指令載明或以其它方式指示緊縮浮點資料元體FP0
-FPN
之一來源820。該指令也可指示該來源資料元體欲捨入的在一數基點後方之一分數位元數832。
該指令也載明或以其它方式指示包括多個緊縮
資料操作遮罩元體或位元的一緊縮資料操作遮罩842。於該例示說明中,設定(亦即1)相對應於FP0
的一最低有效遮罩位元,及清除(亦即0)相對應於FPN
的一最高有效遮罩位元。舉例言之,以128-位元寬緊縮資料及32-位元單精度浮點資料元體為例,該遮罩可包括四個1-位元遮罩位元;或以64-位元雙精度浮點資料元體為例,該遮罩可包括兩個1-位元遮罩位元。舉另一個實例,以512-位元寬緊縮資料及32-位元單精度浮點資料元體為例,該遮罩可包括十六個1-位元遮罩位元;或以64-位元雙精度浮點資料元體為例,該遮罩可包括八個1-位元遮罩位元。
一結果緊縮浮點資料824可響應於具遮罩的浮點捨入量決定操作及/或指令而儲存於一專用目的地。浮點捨入量決定操作的結果係有條件地儲存於依據該相對應緊縮資料操作遮罩位元的結果。當結果浮點資料元體係不被緊縮資料操作遮罩而遮罩時(例如於例示說明中當相對應遮罩位元設定為1時),可儲存在一相對應位置該單一浮點資料元體之一不同廣播拷貝(FP)與該單一浮點資料元體之該相對應廣播拷貝之一捨入版本(FP*
)間之差。舉例言之,最低有效(最右)結果資料元體可儲存(FP0
-FP0 *
),具有效數0
捨入至指示的分數位元數。另外,當浮點資料元體被緊縮資料操作遮罩而遮罩時(例如於例示說明中當相對應遮罩位元被清除為0時),可儲存一遮罩值(例如歸零或合併值)於結果資料元體。例如,最高有效(最左)結果資料元體可儲存遮罩值。
圖9為緊縮資料操作遮罩暫存器906之一適當集
合之一實施例的方塊圖。暫存器各自可用以儲存一緊縮資料操作遮罩。於該具體實施例中,該集合包括八個標示為k0至k7的緊縮資料操作遮罩暫存器。替代實施例可包括少於8(例如2、4、6等)或多於8(例如16、20、32等)緊縮資料操作遮罩暫存器。於該具體實施例中,緊縮資料操作遮罩暫存器各自為64-位元。於替代實施例中,緊縮資料操作遮罩暫存器的寬度可比64-位元更寬(例如80-位元、128-位元等)或比64-位元更窄(例如8-位元、16-位元、32-位元等)。緊縮資料操作遮罩暫存器可使用眾所周知的技術以不同方式體現,但非限於特定型別的電路。
圖10為浮點捨入量決定指令格式1003之一實施例的方塊圖。該指令格式包括一操作代碼或操作碼1043。該操作碼可表示可操作以識別該指令及/或欲執行的操作之複數位元或一或多個欄位。
如圖所示,於若干實施例中,指令格式可包括一來源載明符1044以明確地載明一來源運算元或儲存位置,及一目的地載明符1045以明確地載明欲儲存一結果的一目的地運算元或儲存位置。舉例言之,此等載明符各自可包括一暫存器的位址、記憶體位置、或其它儲存位置。另外,來源及/或目的地中之一或多者可暗示而非明確地載明指令。舉例言之,來源來可選擇性地再度用作為目的地,及來源的初內容可以結果覆寫。
於若干實施例中,其中該指令係使用資料元體廣播,該指令格式可包括選擇性資料元體廣播控制1046。該
選擇性資料元體廣播控制可包括一或多個位元或欄位以指示欲進行資料元體廣播以將存取自一載明的或指示的儲存位置的單一來源資料元體廣播成多個用該指令所使用的來源資料元體。另外,資料元體廣播可暗示至該指令(例如暗示至操作碼)。如前述,資料元體廣播乃選擇性且非必要。
於若干實施例中,該指令格式可包括一選擇性緊縮資料操作遮罩載明符1047以明確地載明一緊縮資料操作遮罩或儲存位置(例如一遮罩暫存器)。另外,該緊縮資料操作遮罩可暗示地指示。於若干實施例中,該指令格式也可包括一選擇性遮罩操作載明符的型別1048以載明遮罩操作之型別。舉例言之,遮罩操作載明符的型別可包括單一位置以載明是否進行合併-遮罩或歸零-遮罩。另外,可明確地指示遮罩操作(例如於一暗示控制暫存器)。如前述,遮罩乃選擇性且非必要。
於若干實施例中,指令格式可包括一選擇性浮點捨入控制1049。浮點捨入控制可控制是否凌駕一處理器的內設浮點捨入模式。舉例言之,某些英特爾處理器具有控制暫存器(例如稱作MXCSR的機器狀態及控制暫存器)其包括載明內設捨入模式的捨入模式控制位元(例如RM)。指令的浮點捨入控制浮點捨入控制可表示一或多個位元或欄位以指示是否欲凌駕此種內設捨入模式。
於若干實施例中,該指令格式可包括一選擇性浮點捨入模式載明符1050以載明欲用在此處揭示的浮點捨入操作的浮點捨入模式。舉例言之,於若干實施例中,浮點
捨入模式載明符可包括二位元以載明以下四個非相連捨入模式中之任一者:(1)捨入至最近者,於該處繫結捨入至最近的偶位數;(2)向下捨入,朝向負無限大,於該處負結果遠離零捨入;(3)向上捨入,朝向正無限大,於該處負結果朝向零捨入;及(4)朝向零捨入,截頭。其它實施例可包括更少、更多、或不同的捨入模式。
於若干實施例中,該指令格式可包括分數位元數規格1052。此一分數位元數規格可表示各個來源浮點資料元體有效數欲捨入作為浮點捨入量決定指令/操作的在一數基點(例如二進制點、十進制點、或十六進制點)後方之一分數位元數
於若干實施例中,浮點捨入控制1049、浮點捨入模式載明符1050、及分數位元數載明符1052可選擇性地提供於該指令之一緊接1053。另外,此等中之一或多者可提供於指令的其它欄位或位元。
例示說明之指令格式顯示可含括於浮點捨入量決定指令之實施例中的欄位型別之實例。替代實施例可包括例示說明欄位之一子集,可添加額外欄位,可重疊某些欄位等。例示說明的欄位之順序/排列並非必要,反而欄位可經重排。欄位無需包括連續位元序列,反而可由非連續位元或分開的位元組成。於若干實施例中,該指令格式遵循EVEX編碼或指令格式但非必要。EVEX編碼之進一步細節容後詳述。
圖11為適用於浮點捨入量決定指令的緊接1153
之一特定具體實施例之方塊圖。該緊接為8-位元緊接。位元[2]表示浮點捨入控制1149以控制是否欲凌駕內設捨入模式。緊接位元[1:0]表示浮點捨入模式載明符1150以載明捨入模式。於一個實施例中,值00指示捨入至最近的偶整數模式,值01指示捨入至相等或更小的整數模式,值10指示捨入至相等或更大的整數模式,及值11指示捨入至最近的最小幅值整數模式,但本發明之範圍並非受此所限。位元[3]不使用且可為零1151。緊接位元[7:4]表示分數位元數載明符1152。於其它實施例中,此等欄位可經重排,更少或更多的位元可分配給各欄位(少於或多於4位元可用以載明分數位元數)等。
圖12為一適當緊縮資料暫存器1205之集合之一實施例的方塊圖。例示說明的緊縮資料暫存器包括32個512-位元緊縮資料或向量暫存器。此等32個512-位元暫存器標記為ZMM0至ZMM31。於該具體實施例中,此等暫存器中較低16者亦即ZMM0-ZMM15的較低排序256-位元係混頻或重疊在個別256-位元緊縮資料或向量暫存器標記為YMM0-YMM15但非必要。同理,於該具體實施例中,YMM0-YMM15的較低排序128-位元係混頻或重疊在個別128-位元緊縮資料或向量暫存器標記為XMM0-XMM1但非必要。512-位元暫存器ZMM0至ZMM31可操作以保有512-位元緊縮資料、256-位元緊縮資料、或128-位元緊縮資料。256-位元暫存器YMM0-YMM15可操作以保有256-位元緊縮資料、或128-位元緊縮資料。128-位元暫存器
XMM0-XMM1可操作以保有128-位元緊縮資料。該等暫存器各自可用以儲存緊縮浮點資料或緊縮整數資料。於若干面向中,純量浮點資料也可用以儲存於緊縮資料暫存器。支援不同的資料元體大小包括至少8-位元位元組資料、16-位元字元資料、32-位元雙字元或單精度浮點資料、及64-位元四字元或雙精度浮點資料。緊縮資料暫存器之替代實施例可包括不同的暫存器數目、不同的暫存器大小,且可混頻或可不混頻更大的暫存器在更小的暫存器上。
圖13為包括機器可讀取儲存媒體1355的製造物品(例如電腦程式產品)1354之方塊圖。於若干實施例中,機器可讀取儲存媒體可為具體有形及/或非過渡機器可讀取儲存媒體。於各個具體實施例中,機器可讀取儲存媒體可包括軟碟、光碟、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可規劃ROM(PROM)、可抹除及可規劃ROM(EPROM)、可電氣抹除及可規劃ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、半導體記憶體、其它型別的記憶體或其組合。於若干實施例中,該媒體可包括一或多個固體資料儲存材料,諸如半導體資料儲存材料、相變資料儲存材料、磁性資料儲存材料、光透明固體資料儲存材料等。
機器可讀取儲存媒體儲存一或多個浮點捨入量決定指令1303。浮點捨入量決定指令各自指示一或多個浮點資料元體之一來源,指示該等一或多個資料元體各自欲
捨入的在一數基點後方之一分數位元數,及指示一目的地儲存位置。若藉機器執行,浮點捨入量決定指令各自係可操作以使得機器儲存一結果於一目的地儲存位置。此處揭示的浮點捨入量決定指令及相聯結的結果中之任一者為適宜。
不同型別的機器實例包括但非僅限於處理器(例如通用處理器及特用處理器)、指令處理裝置、及具有一或多個處理器或指令處理裝置的各種電子裝置。此等電子裝置之數個代表例包括但非僅限於電腦系統、桌上型電腦、膝上型電腦、筆記型電腦、伺服器、網路路由器、網路交換器、小筆電、機上盒、小區式電話、視訊遊戲控制器等。
一指令集包括一或多個指令格式。一給定指令格式界定各個欄位(位元數、位元位置)以載明其上欲執行的操作(操作碼)及運算元。若干指令格式透過指令樣板(或副格式)的定義進一步分解。舉例言之,一給定指令格式之指令樣板可定義為具有不同的指令格式欄位子集(含括的欄位典型地係在相同排序,但因含括較少欄位至少部分具有不同位元位置)及/或定義為具有一給定欄位的不同解譯。如此,ISA的各個指令係使用一給定指令格式表示(及若有所需,以該指令格式的指令樣板中之給定者)及包括用以載明操作的欄位及運算元。舉例言之,ADD指令之一實例具有一特定操作碼及一指令格式,其包括一操作碼欄位以載明該操作碼及操作碼欄位以選擇運算元(來源1/目的地及來源2);及此一ADD指令出現於指令串流將在選擇特定運算元的運算元欄位具有特定內容。指稱進階向量擴延
(AVX)(AVX1及AVX2)且使用向量擴延(VEX)編碼方案的一SIMD擴延集合已經發行及/或出版(例如參考英特爾®64及IA-32架構軟體發展器手冊,2011年10月;及參考英特爾®進階向量擴延規劃參考,2011年6月)。
此處描述的指令實施例可以不同形式實施。此外,系統、架構、及管線的實例描述如後。可於此等系統、架構、及管線上執行的指令實施例並非限於此處詳述者。
通用向量友善指令格式
一向量友善指令格式乃適用於向量指令之一指令格式(例如可有向量操作特定的某些欄位)。雖然描述實施例其中向量操作及純量操作二者係透過向量友善指令格式的支援,但替代實施例只使用向量操作向量友善指令格式。
圖14A-14B為方塊圖例示說明依據本發明之實施例一種通用向量友善指令格式及其指令樣板。圖14A為方塊圖例示說明依據本發明之實施例一種通用向量友善指令格式及其類別A指令樣板;而圖14B為方塊圖例示說明依據本發明之實施例一種通用向量友善指令格式及其類別B指令樣板。更明確言之,通用向量友善指令格式1400界定類別A及類別B指令樣板,二者皆包括無記憶體存取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-其內容直接地或透過位址的產生而載明來源運算元及目的地運算元的位置,無論係在暫存器或在記憶體。如此包括足夠數目的位元而從PxQ(例如32x512、16x128、32x1024、64x1024)個暫存器檔案中選擇N個暫存器。雖然於一個實施例中,N可高達三個來源及一個目的地暫存器,其它實施例可支援更多或更少的來源及目的地暫存器(例如可支援高達二來源於該處此等來源中之一者也作為目的地,可支援高達三來源於該處此等來源中之一者也作為目的地,可支援高達二來源及一個目的地)。
修正器欄位1446-其內容區別於通用向量指令格式中載明來自非區別的記憶體存取的指令之出現;換言之,在無記憶體存取1405指令樣板與記憶體存取1420指令樣板間。記憶體存取操作讀及/或寫至記憶體階層(於某些情況下,使用暫存器中之一指而載明來源及/或目的地位址),但無記憶體存取操作則否(例如來源及目的地為暫存器)。雖然於一個實施例中,本欄位也在三種不同方式間選擇以執
行記憶體位址計算,但其它實施例可支援更多、更少、或不同方式以執行記憶體位址計算。
擴大操作欄位1450-其內容區別除了基本操作外,欲執行多項不同操作中之哪一者。本欄位為脈絡專一性。於本發明之一個實施例中,本欄位被劃分成一類別欄位1468、一α欄位1452、及一β欄位1454。擴大操作欄位1450許可於單一指令而非2、3或4指令執行共通操作族群。
標度欄位1460-其內容許可指數欄位的內容縮放用以產生記憶體位址(例如用於使用2標度
*指數+底數的位址產生)。
位移欄位1462A-其內容係用作記憶體位址產生的一部分(例如用於使用2標度
*指數+底數+位移的位址產生)。
位移因數欄位1462B(注意位移欄位1462A恰毗連於位移因數欄位1462B係指示使用一者或另一者)-其內容係用作為位址產生的一部分;其載明欲藉記憶體位址大小(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的類別A 1468A及類別B 1468B個別存在於圖14A-B)。
類別A之指令樣板
以類別A的無記憶體存取1405指令樣板為例,α欄位1452係解譯為RS欄位1452A,其內容區別欲執行不同擴大操作型別中之哪一者(例如針對無記憶體存取捨入型別操作1410及無記憶體存取資料變換型別操作1415指令樣板個別地載明捨入1452A.1及資料變換1452A.2),β欄位1454區別欲執行特定型別操作中之哪一者。於該無記憶體存取1405指令樣板中,不存在有標度欄位1460、位移欄位1462A、及位移標度欄位1462B。
無記憶體存取指令樣板-完整捨入控制型別操作
於無記憶體存取完整捨入控制型別操作1410指令樣板中,β欄位1454被解譯為捨入控制欄位1454A,其內容提供靜態捨入。雖然於所描述的本發明之實施例中捨入控制欄位1454A包括一遏止全部浮點例外(SAE)欄位14514及捨入操作控制欄位1458,替代實施例可支援編碼兩種構
想進入同一個領域,或只有此等構思/領域中之一者或另一者(例如可只有捨入操作控制欄位1458)。
SAE欄位1456-其內容區別是否去能例外事件報告:當SAE欄位1456內容指出遏止被致能時,一給定指令不報告任一種浮點例外旗標,也不提引出任何浮點例外處理器。
捨入操作控制欄位1458-其內容區別欲執行一組捨入操作中之哪一者(例如向上捨入、向下捨入、向零捨入、及捨入至最接近者)。如此,捨入操作控制欄位1458許可基於每個指令基礎改變捨入模式。於本發明之一個實施例中,一處理器包括一控制暫存器以載明捨入模式,捨入操作控制欄位1450的內容凌駕該暫存器值。
無記憶體存取指令樣板-資料變換型別操作
於該無記憶體存取資料變換型別操作1415指令樣板中,β欄位1454係解譯為一資料變換欄位1454B,其內容區別欲執行一組資料變換中之哪一者(例如無資料變換、調合、廣播)。
以類別A的記憶體存取1420指令樣板為例,α欄位1452係解譯為逐出暗示欄位1452B,其內容區別欲欲使用逐出暗示中之哪一者(例如於圖14A中,時間性1452B.1及非時間性1452B.2係對記憶體存取時間性1425指令樣板及記憶體存取非時間性1430指令樣板分別地載明),同時β欄位1454係解譯為資料操弄欄位1454C,其它容區別欲執行資料操弄操作中之哪一者(又稱基元)(例如無操作;廣播;一來
源之向上轉換;及一目的地的向下轉換)。記憶體存取1420指令樣板包括標度欄位1460,及選擇性地位移欄位1462A或位移標度欄位1462B。
向量記憶體指令執行向量從記憶體載入及向量儲存至記憶體,具有轉換支援。如同常規向量指令,向量記憶體指令係以逐一資料元體方式轉移資料自/至記憶體,實際轉移的元體係由選用作為寫遮罩的向量遮罩內容指示。
記憶體存取指令樣板-時間性
時間性資料為夠快再度使用以從快取獲益的資料。但換言之,一暗示及不同處理器可以不同方式體現,包括全然忽略暗示。
記憶體存取指令樣板-非時間性
非時間性資料乃不可能夠快速再度使用以從第一層級快取記憶體獲益的資料,且須被給定逐出的優先順序。但換言之,一暗示及不同處理器可以不同方式體現,包括全然忽略暗示。
類別B之指令樣板
以類別B之指令樣板為例,α欄位1452係解譯為寫遮罩控制(Z)欄位1452C,其內容區別由寫遮罩欄位1470控制的寫遮罩是否須為合併或歸零。
以類別B之無記憶體存取1405指令樣板為例,部分β欄位1454被解譯為RL欄位1457A,其內容區別欲執行不同擴大操作型別中之哪一者(例如針對無記憶體存取寫遮
罩控制部分捨入控制型別操作1412指令樣板及無記憶體存取寫遮罩控制VSIZE型別操作1417指令樣板分別載明捨入1457A.1及向量長度(VSIZE)1457A.2),而β欄位1454之其餘部分區別欲執行特定型別操作中之哪一者。於該無記憶體存取1405指令樣板中,不存在有標度欄位1460、位移欄位1462A、及位移標度欄位1462B。
於該無記憶體存取完整捨入控制型別操作1410指令樣板中,β欄位1454之其餘部分係解譯為一捨入操作欄位1459A,例外事件報告被去能(一給定指令不報告任一種浮點例外旗標,也不提引出任何浮點例外處理器)。
捨入操作欄位1459A-恰似捨入操作控制欄位1458,其內容區別欲執行一組捨入操作中之哪一者(例如向上捨入、向下捨入、向零捨入、及捨入至最接近者)。如此,捨入操作控制欄位1459A許可基於每個指令基礎改變捨入模式。於本發明之一個實施例中,於該處一處理器包括一控制暫存器以載明捨入模式,捨入操作控制欄位1450的內容凌駕該暫存器值。
於無記憶體存取寫遮罩控制VSIZE型別操作1417指令樣板中,其餘β欄位1454係被解譯為一向量長度欄位1459B,其內容區別欲執行多個資料向量長度中之哪一者(例如128、256或512位元組)。
以類別B之記憶體存取1420指令樣板為例,部分β欄位1454係解譯為一廣播欄位1457B,其內容區別是否欲進行廣播型別資料操弄操作,而其餘β欄位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)具有使用全部類別指令的不同組成寫成的替代常式,且具有控制流程碼,基於由目前執行該碼的該處理器支援的指令而選擇欲執行的常式之一形式。
圖15A為方塊圖例示說明依據本發明之實施例特定向量友善指令格式的一實例。圖15A顯示一特定向量友善指令格式1500,該格式為特定的意義係指其載明該等欄位的位置、大小、解譯、及順序,以及載明其中部分欄位之值。特定向量友善指令格式1500可用以擴延該x86指令集,因此其中部分欄位係與用在既有x86指令集及其擴延者(例如AVX)相似或相同。此一格式維持與既有x86指令集帶有延伸者的前綴編碼欄位、實際操作碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及即刻欄位符合一致。例示說明圖15A的欄位映射的圖14之欄位。
須瞭解雖然本發明之實施例係就通用向量友善指令格式1400之脈絡參考特定向量友善指令格式1500描述用於例示說明目的,但除非宣稱之處以外,本發明並非囿限於特定向量友善指令格式1500。舉例言之,通用向量友善指令格式1400預期涵蓋多個不同的各種欄位之可能尺寸,而特定向量友善指令格式1500係顯示為具有特定尺寸欄位。舉個特定實例,雖然資料元體寬度欄位1464係例示說明於特定向量友善指令格式1500中的一個1位元欄位,但本發明之範圍並非受如此所限(換言之,通用向量友善指令格式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.B而形成。
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位元)。於一個實施例中,為了支援舊式SSE指令,其使用呈舊式格式及呈EVEX前綴格式二者的SIMD前綴(66H、F2H、F3H),此等舊式SIMD前綴係編碼入SIMD前綴編碼欄位;且在提供給解碼器的PLA之前,係擴延入舊式SIMD前綴,故PLA可執行此等舊式指令的舊式格式及EVEX格式而未經修正)。雖然較新指令可直接使用EVEX前綴編碼欄位的內容作為一操作碼擴延,某些實施例係以類似方式擴延以求一致,但許可藉此等舊式SIMD前綴載明不同的意義。替代實施例可重新設計PLA以支援2位元SIMD前綴編碼,因而無需擴延。
α欄位1452(EVEX位元組3,位元[7]-EH;又稱
EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫遮罩控制、及EVEX.N;也以α例示說明)-如前述,本欄位乃特定脈絡。
β欄位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具有特殊表現暗示無寫遮罩係用於該特定指令(此點可以多種方式體現,包括使用硬體接線至全部1的一寫遮罩,或繞道遮罩硬體的硬體)。
真實操作碼欄位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使用8位元,可設定為只有四個真正有用值亦即-128、-64、0、及64;由於經常需要較大範圍,故使用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(表示無記憶體存取操作)時,α欄位1452(EVEX位元組3,位元[7]-EH)係解譯為rs欄位1452A。當rs欄位1452A含1(捨入1452A.1)時,β欄位1454(EVEX位元組3,位元[6:4]-SSS)係解譯為捨入控制欄位1454A。捨入控制欄位1454A包括1位元SAE欄位1456及2位元捨入操作欄位1458。當rs欄位1452A含0(資料變換1452A.2)時,β欄位1454(EVEX位元組3,位元[6:4]-SSS)係解譯為3位元資料變換欄位1454B。當U=0及MOD欄位1542含00、01、或10(表示記憶體存取操作)時,α欄位1452(EVEX位元組3,位元[7]-EH)係解譯為逐出暗示(EH)欄位1452B,及β欄位1454(EVEX位元組3,位元[6:4]-SSS)係解譯為3位元資料操弄欄位1454C。
當U=1時,α欄位1452(EVEX位元組3,位元[7]-EH)係解譯為寫遮罩控制(Z)欄位1452C。當U=1及MOD欄位1542含11(表示無記憶體存取操作)時,部分β欄位1454(EVEX位元組3,位元[4]-S0
)係解譯為RL欄位1457A;當含1(捨入1457A.1)時,其餘β欄位1454(EVEX位元組3,位元[6-5]-S2-1
)係解譯為捨入操作欄位1459A;而當RL欄位1457A含0(VSIZE 1457A.2)時,其餘β欄位1454(EVEX位元組3,位元[6-5]-S2-1
)係解譯為向量長度欄位1459B(EVEX位元組3,位元[6-5]-L1-0
)。當U=1及MOD欄位1542含00、01、或10(表示記憶體存取操作)時,β欄位1454(EVEX位元組3,
位元[6:4]-SSS)係解譯為向量長度欄位1459B(EVEX位元組3,位元[6-5]-L1-0
)及廣播欄位1457B(EVEX位元組3,位元[4]-B)。
圖16為依據本發明之一個實施例暫存器架構1600之方塊圖。於該具體實施例中,有32向量暫存器1610,其為512位元寬;此等暫存器係稱作為zmm0至zmm31。下16 zmm暫存器的下排序256位元係疊置於暫存器ymm0-16上。下16 zmm暫存器的下排序128位元(ymm暫存器的下排序128位元)係疊置於暫存器xmm0-15上。如下表例示說明,特定向量友善指令格式700係在此等疊置暫存器檔案上操作。
換言之,向量長度欄位1459B係在最大長度與一或多個其它較短長度間作選擇,於該處各個此種較短長度為前一個長度之半;及不含向量長度欄位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堆疊乃8-元體堆疊,用以使用x87指令集擴延而在32/64/80-位元浮點資料上執行純量浮點操作;同時MMX暫存器係用以在64-位元緊縮整數資料上執行操作,以及保有用於在MMX暫存器與XMM暫存器間執行的某些操作的運算元。
本發明之替代實施例可使用更寬的或更窄的暫存器。此外,本發明之替代實施例可使用更多、更少、或不同的暫存器檔案及暫存器。
處理器核心可以不同方式為了不同目的、及於不
同處理器體現。舉例言之,此等核心之體現可包括:1)意圖用於通用運算的通用有序核心;2)意圖用於通用運算的高效能通用失序核心;3)主要用於圖形裝置及/或科學(資料通量)運算的特用核心。不同處理器的體現可包括:1)一CPU包括一或多個意圖用於通用運算的通用有序核心及/或一或多個意圖用於通用運算的高效能通用失序核心;及2)一共處理器包括一或多個主要用於圖形裝置及/或科學(資料通量)運算的特用核心。此等不同處理器結果導致不同電腦系統架構,可包括:1)與在CPU分開晶片上的共處理器;2)在與CPU相同封裝體內的一分開晶粒上的共處理器;3)在與CPU相同分開晶粒上的共處理器(於該種情況下,此種共處理器偶爾稱作為特用邏輯,諸如整合圖形裝置及/或科學(資料通量)邏輯,或特用核心);及4)一單晶片系統可包括在所描述的CPU(偶爾稱作為應用程式核心或應用處理器)的相同晶粒上、前述共處理器、及額外功能。其次描述核心架構實例,接著描述處理器及電腦架構實例。
有序及失序核心區塊圖
圖17A為方塊圖例示說明依據本發明之實施例有序管線之一實例及暫存器重新命名失序簽發/執行管線之一實例。圖17B為方塊圖例示說明欲含括於依據本發明之實施例的一處理器中,有序管線之一實例及暫存器重新命名失序簽發/執行管線之一實例二者。圖17A-B中的實線框例示說明有序管線及有序核心,而選擇性地增加虛線框例
示說明暫存器重新命名失序簽發/執行管線及核心。假設有序面向乃失序面向之一子集,將描述失序面向。
圖17A中,一處理器管線1700包括一提取階段1702、一長度解碼階段1704、一解碼階段1706、一分配階段1708、一重新命名階段1710、一排程(又稱調度或簽發)階段1712、一暫存器讀/記憶體讀階段1714、一執行階段1716、一回寫/記憶體寫階段1718、一例外處理階段1722、及一委付階段1724。
圖17B顯示處理器核心1790包括耦接至一執行引擎單元1750的一前端單元1730,二者係耦接至一記憶體單元1770。核心1790可為一精簡指令集電腦(RISC)核心、一複雜指令集電腦(CISC)核心、一極長指令字組(VLIW)核心、或一混成或替代核心型別。至於又另一選項,核心1790可為特用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用圖形處理單元(GPGPU)核心、圖形核心等。
前端單元1730包括一分支預測單元1732耦接至一指令快取單元1734,其係耦接至一指令轉譯後備緩衝器(TLB)1736,其係耦接至一指令提取單元1738,其係耦接至一解碼單元1740。解碼單元1740(或解碼器)可解碼指令,及產生一或多個微操作、微碼進入點、微指令、其它指令、或其它控制信號作為輸出,其係從原先指令解碼或否則反映原先指令、或從原先指令推衍。解碼單元1740可使用多個不同機構體現。合宜機構之實例包括但非僅限於詢查表、硬體體現、可規劃邏輯陣列(PLA)、微碼唯讀記憶體
(ROM)等。於一個實施例中,核心1790包括一微碼ROM或其它媒體其儲存用於某些巨集指令的微碼(例如於解碼單元1740中或否則於前端單元1730內部)。解碼單元1740係耦接至執行引擎單元1750中的一重新命名/分配器單元1752。
執行引擎單元1750包括該重新命名/分配器單元1752耦接至一報廢單元1754及一或多個排程器單元1756之集合。排程器單元1756表示任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元1756係耦接至實體暫存器檔案單元1758。實體暫存器檔案單元1758各自表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料型別,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如一指令指標,其為欲執行的下個指令的位址)等。於一個實施例中,實體暫存器檔案單元1758包括一向量暫存器單元、一寫遮罩暫存器單元、及一純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1758係重疊報廢單元1754以例示說明可體現暫存器重新命名及失序執行的各種方式(例如使用重新排序緩衝器及報廢暫存器檔案;使用未來檔案、歷史緩衝器、及報廢暫存器檔案;使用暫存器映射圖及暫存器之一匯集物;等)。報廢單元1754及實體暫存器檔案單元1758係耦接至執行叢集1760。執行叢集1760包括一或多個執行單元1762之一集合及一或多個記憶體存取單元1764之一集合。執行單元1762可執行各項操作(例如移位、加法、減法、乘
法)及在各型資料上(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然若干實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多數執行單元全部執行全部功能。排程器單元1756、實體暫存器檔案單元1758、及執行叢集1760係顯示為可能複數,原因在於某些實施例針對某些型別的資料/操作產生分開的管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線其各自具有本身的排程器單元、實體暫存器檔案單元、及/或執行叢集-及以分開的記憶體存取管線為例,體現某些實施例其中只有此一管線的執行叢集具有記憶體存取單元1764)。也須瞭解當使用分開的管線時,此等管線中之一或多者可為失序簽發/執行而其餘為有序。
記憶體存取單元1764集合係耦接至記憶體單元1770,其包括一資料TLB單元1772耦接至一資料快取單元1774其係耦接至一層級2(L2)快取單元1776。於一個具體實施例中,記憶體存取單元1764可包括一載入單元、一儲存位址單元、及一儲存資料單元,其各自係耦接至記憶體單元1770中的資料TLB單元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、及/或前述某個形式的通用向量友善指令格式(U=0及/或U=1)),藉此許可由許多多媒體應用程式使用的操作欲使用緊縮資料執行。
須瞭解核心可支援多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式進行包括時間截割多執行緒、同時多執行緒(於該處單一實體核心針對各個執行緒提供一邏輯核心,使得實體核心為多執行緒)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如英特爾®超執行緒技術)。
雖然暫存器重新命名係就失序執行脈絡描述,但
須瞭解暫存器重新命名可用於有序架構。雖然處理器的具體實施例也包括分開的指令及資料快取單元1734/1774及分享L2快取單元1776,替代實施例可具有針對指令及資料二者的單一內部快取記憶體,例如層級1(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-寬ALU 1828),其執行整數、單精度浮點、及雙精度浮點指令中之一或多者。VPU支援使用調和單元1820調合該等暫存器輸入,使用數值轉換單元1822A-B進行數值轉換,及在記憶體輸入上使用複製單元1824進行複製。寫遮罩暫存器1826許可斷言所得向量寫。
具有整合記憶體控制器及圖形裝置之處理器
圖19為依據本發明之實施例可具有多於一個核心,可具有一整合記憶體控制器,及可具有整合圖形裝置之一處理器1900。圖19中的實線框例示說明一處理器1900
具有單一核心1902A、一系統代理者1910、一或多個匯流排控制器單元1916之一集合;而選擇性增加虛線框例示說明另一處理器1900具有多個核心1902A-N、在系統代理者1910內一或多個整合記憶體控制器單元1914之一集合,及特用邏輯1908。
如此,處理器1900的不同體現可包括1)一CPU具有特用邏輯1908係為整合圖形裝置及/或科學(資料通量)邏輯(可包括一或多個核心),及核心1902A-N乃一或多個通用核心(通用有序核心、通用失序核心、二者的組合);2)一共處理器具有核心1902A-N乃大量通用核心主要意圖用於繪圖及/或科學(資料通量);及3)一共處理器具有核心1902A-N乃大量通用有序核心。如此,處理器1900可為通用處理器、共處理器或特用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(GPGPU)、高通量許多積體核心(MIC)共處理器(包括30個或以上核心)、嵌入式處理器等。處理器可在一或多個晶片上體現。處理器1900可為部分及/或可使用多種處理技術諸如BiCMOS、CMOS、或NMOS而在一或多個基體上體現
記憶體階層關係包括在核心內部的一或多個快取記憶體層級、一或多個分享快取單元1906之一集合、及耦接至該整合記憶體控制器單元之集合1914的外部記憶體(圖中未顯示)。分享快取單元1906之集合可包括一或多個中間層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級的快取記憶體、最末層級快取記憶體
(LLC)及/或其組合。雖然於一個實施例中,基於環式的互連體單元1912互連整合圖形邏輯1908、分享快取單元之集合1906、及系統代理者單元1910/整合記憶體控制器單元1914,但其它實施例可使用任一種眾所周知之技術以互連此等單元。於一實施例中,在一或多個快取單元1906與核心1902A-N間維持同調。
於若干實施例中,核心1902A-N中之一或多者能夠執行多執行緒。系統代理者1910包括協調與操作核心1902A-N的該等組件。系統代理者單元1910例如可包括一電力控制單元(PCU)及一顯示單元。該PCU可包括調節核心1902A-N及整合圖形邏輯1908的電力態需要的邏輯及組件。顯示單元係用以驅動一或多個外部連結的顯示器。
以架構及/或指令集表示,核心1902A-N可為同質或異質;換言之,核心1902A-N中之二者或多者能夠執行相同指令集,而其它只能夠執行該指令集之一子集或不同指令集。
圖20至圖23為電腦架構實例之方塊圖。技藝界已知之針對膝上型電腦、桌上型電腦、手持式電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路中樞器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器及/或
其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
現在參考圖20,圖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可包括此處描述的處理核心中之一或多者,且可為處理器1100的某個版本。
記憶體2040例如可為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或二者的組合。針對至少一個實施例,控制器中樞器2020透過一多插匯流排諸如前端匯流排(FSB)、點對點介面諸如快速路徑互連體(QPI)、或類似的連結2095而與處理器2010、2015通訊。
於一實施例中,共處理器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可使用PtP介面電路2178、2188透過點對點(P-P)介面2150交換資訊。如圖21所示,IMC 2172及2182耦接該
等處理器至個別記憶體,亦即記憶體2132及記憶體2134,其可為本地附接至個別處理器的主記憶體的一部分。
處理器2170、2180可使用點對點介面電路2176、2194、2186、2198透過點對點(P-P)介面2152、2154而各自與一晶片組2190交換資訊。晶片組2190也可透過一高效能圖形介面2139而與共處理器2138交換資訊。於一實施例中,共處理器2138乃特用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
一分享快取記憶體(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連體而與處理器連結,使得當一處理器被置於低功率模式時,任一處理器的或二處理器的本地快取記憶體資訊可被儲存於該分享快取記憶體。
晶片組2190可透過一介面2196而耦接至一第一匯流排2116。於一個實施例中,第一匯流排2116可為周邊組件互連體(PCI)匯流排,或諸如PCI快速匯流排或其它第三代I/O互連體匯流排之一匯流排,但本發明之範圍並非受此所限。
如圖21所示,多個I/O裝置2114可連同一匯流排橋接器2118而耦接至第一匯流排2116,該匯流排橋接器2118係耦接第一匯流排2116至第二匯流排2120。於一實施例中,一或多個額外處理器2115,諸如共處理器、高通量MIC處理器、GPGPU、加速器(諸如圖形加速器或數位信號
處理器(DSP)單元)、可現場程式規劃閘陣列(FPGA)、或任何其它處理器係耦接至第一匯流排2116。於一個實施例中,第二匯流排2120可為低接腳數目(LPC)匯流排。於一個實施例中,多個裝置可耦接至第二匯流排2120,包括例如鍵盤/滑鼠2122、通訊裝置2127及資料儲存單元2128,諸如磁碟機或其它大容量儲存裝置,可包括指令/代碼及資料2130。又復,音訊I/O 2124可耦接至第二匯流排2120。注意其它架構係屬可能。舉例言之,替代圖21之點對點架構,一系統可體現多插匯流排或其它此種架構。
現在參考圖22,顯示依據本發明之一實施例第二系統2200之更特定實例之一方塊圖。圖21與圖22中相似的元件具有相似的元件符號,及圖21的某些面向已經從圖22刪除以免不必要地遮掩圖22的其它面向。
圖22例示說明處理器2170、2180分別地可包括整合記憶體及I/O控制邏輯(「CL」)2172及2182。如此,CL 2172、2182可包括記憶體控制器中樞器邏輯(IMC)及I/O控制邏輯。圖22例示說明不僅記憶體2132、2134耦接至CL 2172、2182,I/O裝置2214也耦接至控制邏輯2172、2182。舊式I/O裝置2215係耦接至晶片組2190。
現在參考圖23,顯示依據本發明之一個實施例,一個SoC 2300之方塊圖。圖19中的相似元件具有類似的元件符號。又虛線框乃更為先進SoC上的選擇性特徵。於圖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顯示可使用x86編譯器2404編譯以產生x86二進制碼2406的高階語言2402,該x86二進制碼2406可由具有至少一個x86指令集核心之處理器2416本機執行。具有至少一個x86指令集核心之處理器2416表示藉相容式執行或以其它方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一個x86指令集核心的一英特爾處理器跑的應用程式或其它軟體之目標碼版本而執行與具至少一個x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一個x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器2404表示可操作而產生x86二進制碼2406(例如目標碼)的一編碼器,該等x86二進制碼2406有或無額外鏈結處理可在具至少一個x86指令集核心的該處理器2416上執行。同理,圖24顯示於高階語言2402的該程式可使用另一指令集編譯器2408編譯以產生另一指令集二進制碼2410,可藉不具至少一個x86指
令集核心的一處理器2414本機執行(例如具有執行加州昇陽谷的MIPS技術公司之MIPS指令集及/或執行加州昇陽谷的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器2412係用以將x86二進制碼2406轉換成可由不具一x86指令集核心的該處理器2414本機執行的代碼。此種轉換碼不可能與另一指令集二進制碼2410相同,原因在於難以製造可達成此項目的的一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。如此,指令轉換器2412表示軟體、韌體、硬體或其組合其透過仿真、模擬或任何其它處理許可不具至少一個x86指令集處理器或核心的一處理器或其它電子裝置執行該x86二進制碼2406。
於詳細說明部分及申請專利範圍各項中,已經使用「耦連」及/或「連結」連同其衍生詞。須瞭解此等術語並非意圖作為彼此的同義詞。反而於特定實施例中,「連結」可用以指示二或多個元件彼此係直接實體接觸或電氣接觸。「耦連」可表示二或多個元件彼此係直接實體接觸或電氣接觸。「耦連」但也可表示二或多個元件並非彼此直接實體接觸,但仍然彼此協作或互動。舉例言之,一個執行單元可透過一或多個中介組件而耦接一暫存器或一解碼器。於圖式中,箭頭係用以顯示耦連及/或連結。
於前文詳細說明部分中,已經陳述特定細節以供徹底瞭解實施例。但其它實施例可不含若干此等特定細節而予實施。本發明之範圍並非係由前文提供的特定實例反而係由如下申請專利範圍各項決定。與附圖中舉例說明的
及於說明書中描述的全部相當關係皆係涵蓋於實施例內部。於其它情況下,眾所周知的電路、結構、裝置、及操作係以方塊圖形式顯示或不含細節顯示以免遮掩對詳細說明部分的瞭解。
由硬體組件執行的及/或以機器可執行指令或電路可執行指令實施的某些操作可用以引起及/或導致一硬體組件(例如處理器、處理器部分、電路等)以執行該等操作的指令程式規劃。該硬體組件可包括一通用或一特用硬體組件。該等操作可由硬體、軟體、及/或韌體的組合執行。該硬體組件可包括特定或特殊邏輯(例如潛在地組合軟體及韌體的電路)其係可操作以執行及/或處理該指令及響應於該指令(例如響應於一或多個微指令或衍生自該指令的其它控制信號)而儲存一結果。
本說明書全文中述及「一個實施例」、「一實施例」、「一或多個實施例」、「若干實施例」例如指示一特定特徵可含括於本發明之實務但非必要。同理,於詳細說明部分中各項特徵偶爾群集在一起於一單一實施例中。圖式或其詳細說明部分係為了讓本文揭示流暢化及輔助瞭解各個發明面向之目的。但本文揭示之方法並不解譯為反映出本發明要求比較於申請專利範圍各項所明確地引述的特徵更多的特徵。反而,如下申請專利範圍各項反映,本發明的面向係在於比較單一揭示實施例的全部特徵更少的特徵。如此,接續詳細說明部分後方的申請專利範圍各項係爰引於此並融入本詳細說明部分,申請專利範圍各項本身
表示一個分開的本發明之實施例。
520‧‧‧一或多個浮點資料元體之來源
524‧‧‧結果
530‧‧‧浮點捨入量決定操作
532‧‧‧分量位元之數目
Claims (28)
- 一種用於執行浮點捨入量決定指令之方法,其係包含:接收一浮點捨入量決定指令,該浮點捨入量決定指令指示一或多個浮點資料元體(element)之一來源、指示在一數基點(radix point)後方的分數位元數、及指示一目的地儲存位置;及響應於該浮點捨入量決定指令而儲存包括一或多個結果浮點資料元體的一結果於該目的地儲存位置,該等一或多個結果浮點資料元體各自係包括在一相對應位置之該來源的一相對應浮點資料元體與已經被捨入至該指示的分數位元數之該來源之該相對應浮點資料元體的一捨入版本間之一差。
- 如申請專利範圍第1項之方法,其係進一步包含:決定已經被捨入至該指示的分數位元數之該來源的一浮點資料元體的一捨入版本;及從該來源的該浮點資料元體扣除該捨入版本。
- 如申請專利範圍第1項之方法,其中接收係包含接收明確地載明該分數位元數的一浮點捨入量決定指令。
- 如申請專利範圍第3項之方法,其中接收係包含接收具有一緊接其包括多數個位元以明確地載明該分數位元數的一浮點捨入量決定指令。
- 如申請專利範圍第1項之方法,其中接收係包含接收包括一緊縮資料操作遮罩載明符及一資料元體廣播控制 的一浮點捨入量決定指令。
- 如申請專利範圍第1項之方法,其中接收係包含接收指示一緊縮資料操作遮罩的一浮點捨入量決定指令,及其中儲存該結果係包含依據該緊縮資料操作遮罩有條件地儲存該等一或多個結果浮點資料元體,其各自係包括在該來源的相對應浮點資料元體與該來源之相對應浮點資料元體的該捨入版本間之該差。
- 如申請專利範圍第1項之方法,其中接收係包含接收指示一單一浮點資料元體之一來源的一浮點捨入量決定指令,及其中儲存係包含儲存包括多個緊縮結果浮點資料元體之一結果緊縮資料,該等結果浮點資料元體各自係包括在該來源的該單一浮點資料元體與該來源之該單一浮點資料元體的已經被捨入至該指示的分數位元數之一捨入版本間之一差。
- 如申請專利範圍第1項之方法,其中接收係包含接收指示多數緊縮浮點資料元體的一浮點捨入量決定指令,及其中儲存係包含儲存包括一相對應多數緊縮結果浮點資料元體的該結果。
- 如申請專利範圍第1項之方法,其中接收係包含接收指示一單一純量浮點資料元體之一來源的一浮點捨入量決定指令,及其中儲存係包含儲存包括一單一相對應結果浮點資料元體的一結果。
- 如申請專利範圍第1項之方法,其係進一步包含於一浮點乘法及加法算術邏輯單元中的該等一或多個結果浮 點資料元體。
- 如申請專利範圍第1項之方法,其中接收係包含接收指示一來源的一浮點捨入量決定指令,其包括下列中之一者:(1)至少八個雙精度浮點資料元體;及(2)至少十六個單精度浮點資料元體。
- 一種用於執行浮點捨入量決定指令之裝置,其係包含:多數暫存器;及耦接該等多數暫存器之一浮點執行單元,該浮點執行單元係可操作以響應於一浮點捨入量決定指令指示一或多個浮點資料元體之一來源、指示在一數基點後方之一分數位元數、及指示一目的地,用於儲存包括一或多個結果浮點資料元體的一結果於該目的地,該等一或多個結果浮點資料元體各自係包括在一相對應位置之該來源的一相對應浮點資料元體與已經被捨入至該指示的分數位元數之該來源之該相對應浮點資料元體的一捨入版本間之一差。
- 如申請專利範圍第12項之裝置,其中該浮點捨入量決定指令係用於明確地載明該分數位元數。
- 如申請專利範圍第13項之裝置,其中該浮點捨入量決定指令係具有一緊接其包括多數個位元用於明確地載明該分數位元數。
- 如申請專利範圍第12項之裝置,其係進一步包含一緊縮資料操作遮罩暫存器,及其中該浮點捨入量決定指令係用於指示該緊縮資料操作遮罩暫存器。
- 如申請專利範圍第12項之裝置,其中該浮點捨入量決定指令係用於指示一單一浮點資料元體之一來源,及其中響應於該指令,該執行單元係用於廣播該單一浮點資料元體。
- 如申請專利範圍第12項之裝置,其係進一步包含一緊縮資料操作遮罩暫存器,及其中該浮點捨入量決定指令係用於包括一緊縮資料操作遮罩載明符及一資料元體廣播控制。
- 如申請專利範圍第12項之裝置,其中響應於該指令,該執行單元係用於儲存包括多個緊縮結果浮點資料元體的一緊縮資料結果。
- 如申請專利範圍第18項之裝置,其中該緊縮資料結果係包含至少八個雙精度浮點資料元體及至少十六個單精度浮點資料元體中之一者。
- 如申請專利範圍第12項之裝置,其中響應於該指令,該執行單元係用於儲存包括一單一純量浮點資料元體之一結果。
- 如申請專利範圍第12項之裝置,其中該執行單元係包含一浮點乘法及加法單元。
- 如申請專利範圍第12項之裝置,其中響應於該指令,該執行單元係用於決定該來源之一浮點資料元體的已經被捨入至該指示的分數位元數之一捨入版本,及從該來源的該浮點資料元體扣除該捨入版本。
- 一種用於執行浮點捨入量決定指令之系統,其係包含: 一互連體;與該互連體耦接之一處理器,該處理器係可操作以響應於一浮點捨入量決定指令指示一或多個浮點資料元體之一來源、指示在一數基點後方之一分數位元數、及指示一目的地,用於儲存包括一或多個結果浮點資料元體的一結果於該目的地,該等一或多個結果浮點資料元體各自係包括在一相對應位置之該來源的一相對應浮點資料元體與已經被捨入至該指示的分數位元數之該來源之該相對應浮點資料元體的一捨入版本間之一差;及與該互連體耦接之一動態隨機存取記憶體(DRAM)。
- 如申請專利範圍第23項之系統,其中該浮點捨入量決定指令係具有一緊接用於明確地載明該分數位元數。
- 如申請專利範圍第23項之系統,其係進一步包含一緊縮資料操作遮罩暫存器,及其中該浮點捨入量決定指令係用於包括一緊縮資料操作遮罩載明符以載明該緊縮資料操作遮罩暫存器。
- 一種用於執行浮點捨入量決定指令之機器可讀取儲存媒體,其係包含:該機器可讀取儲存媒體包括一或多個固體資料儲存材料,該機器可讀取儲存媒體係儲存一浮點捨入量決定指令,該浮點捨入量決定指令係指示一或多個浮點資料 元體之一來源、指示在一數基點後方之一分數位元數、及指示一目的地儲存位置,且該浮點捨入量決定指令若係由一機器執行時則係可操作以使得該機器執行包含下列之操作:儲存包括一或多個結果浮點資料元體的一結果於該目的地儲存位置,該等一或多個結果浮點資料元體各自係包括在一相對應位置之該來源的一相對應浮點資料元體與已經被捨入至該指示的分數位元數之該來源之該相對應浮點資料元體的一捨入版本間之一差。
- 如申請專利範圍第26項之機器可讀取儲存媒體,其中該指令若由該機器執行時係可進一步操作以使得該機器用於存取由該指令所指示之一緊縮資料操作遮罩。
- 如申請專利範圍第26項之機器可讀取儲存媒體,其中該指令若由該機器執行時係可進一步操作以使得該機器用於廣播由該指令所指示之一單一來源浮點資料元體。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2011/068247 WO2013101233A1 (en) | 2011-12-30 | 2011-12-30 | Floating point round-off amount determination processors, methods, systems, and instructions |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201333818A TW201333818A (zh) | 2013-08-16 |
| TWI474258B true TWI474258B (zh) | 2015-02-21 |
Family
ID=48698465
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW101148671A TWI474258B (zh) | 2011-12-30 | 2012-12-20 | 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體 |
Country Status (5)
| Country | Link |
|---|---|
| US (2) | US9513871B2 (zh) |
| EP (1) | EP2798466B1 (zh) |
| CN (1) | CN104145245B (zh) |
| TW (1) | TWI474258B (zh) |
| WO (1) | WO2013101233A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI715589B (zh) * | 2015-06-12 | 2021-01-11 | 英商Arm股份有限公司 | 用於在執行浮點運算時控制捨入的裝置及方法 |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104145245B (zh) | 2011-12-30 | 2018-01-23 | 英特尔公司 | 浮点舍入量确定处理器、方法、系统和指令 |
| US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
| US20170169132A1 (en) * | 2015-12-15 | 2017-06-15 | Analog Devices, Inc. | Accelerated lookup table based function evaluation |
| US9996319B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Floating point (FP) add low instructions functional unit |
| US10073676B2 (en) * | 2016-09-21 | 2018-09-11 | Altera Corporation | Reduced floating-point precision arithmetic circuitry |
| US10146533B2 (en) * | 2016-09-29 | 2018-12-04 | Intel Corporation | Instruction and logic for detecting numeric accumulation error |
| US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
| CN107291420B (zh) | 2017-06-27 | 2020-06-05 | 上海兆芯集成电路有限公司 | 整合算术及逻辑处理的装置 |
| CN107315710B (zh) * | 2017-06-27 | 2020-09-11 | 上海兆芯集成电路有限公司 | 全精度及部分精度数值的计算方法及装置 |
| EP3471271A1 (en) * | 2017-10-16 | 2019-04-17 | Acoustical Beauty | Improved convolutions of digital signals using a bit requirement optimization of a target digital signal |
| 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 |
| CN113287098B (zh) * | 2019-03-26 | 2025-03-11 | 拉姆伯斯公司 | 多精度存储器系统 |
| US20200371784A1 (en) * | 2019-05-24 | 2020-11-26 | Texas Instruments Incorporated | Vector floating-point scale |
| US20210175899A1 (en) * | 2019-12-09 | 2021-06-10 | Sap Se | Error-bound floating point data compression system |
| TWI876821B (zh) * | 2024-01-05 | 2025-03-11 | 英屬開曼群島商意騰科技股份有限公司 | 資料處理系統 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030126177A1 (en) * | 2001-06-04 | 2003-07-03 | International Business Machines Corporation | Arithmetic unit and method thereof |
| US20040015882A1 (en) * | 2001-06-05 | 2004-01-22 | Ping Tak Peter Tang | Branch-free software methodology for transcendental functions |
| US20070260665A1 (en) * | 2006-04-20 | 2007-11-08 | Chengpu Wang | Method of Specifying and Tracking Precision in Floating-point Calculation |
| TW201104569A (en) * | 2009-07-28 | 2011-02-01 | Via Tech Inc | Microprocessors and methods for executing instruction |
| US20110161624A1 (en) * | 2009-12-29 | 2011-06-30 | International Business Machines Corporation | Floating Point Collect and Operate |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3509330A (en) * | 1966-11-25 | 1970-04-28 | William G Batte | Binary accumulator with roundoff |
| US5053631A (en) * | 1990-04-02 | 1991-10-01 | Advanced Micro Devices, Inc. | Pipelined floating point processing unit |
| US5673407A (en) * | 1994-03-08 | 1997-09-30 | Texas Instruments Incorporated | Data processor having capability to perform both floating point operations and memory access in response to a single instruction |
| US7644115B2 (en) * | 2005-01-07 | 2010-01-05 | Sas Institute Inc. | System and methods for large-radix computer processing |
| US9223751B2 (en) | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
| US8443029B2 (en) | 2007-03-01 | 2013-05-14 | International Business Machines Corporation | Round for reround mode in a decimal floating point instruction |
| CN101930354B (zh) * | 2009-07-28 | 2014-03-12 | 威盛电子股份有限公司 | 微处理器及其执行指令的方法 |
| CN102087590A (zh) * | 2009-12-03 | 2011-06-08 | 浙江大学 | 资源复用的浮点simd指令的执行装置 |
| US20110231465A1 (en) * | 2010-03-09 | 2011-09-22 | Phatak Dhananjay S | Residue Number Systems Methods and Apparatuses |
| US8914430B2 (en) | 2010-09-24 | 2014-12-16 | Intel Corporation | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions |
| CN104145245B (zh) | 2011-12-30 | 2018-01-23 | 英特尔公司 | 浮点舍入量确定处理器、方法、系统和指令 |
-
2011
- 2011-12-30 CN CN201180076467.9A patent/CN104145245B/zh active Active
- 2011-12-30 EP EP11878891.8A patent/EP2798466B1/en active Active
- 2011-12-30 WO PCT/US2011/068247 patent/WO2013101233A1/en not_active Ceased
- 2011-12-30 US US13/977,257 patent/US9513871B2/en active Active
-
2012
- 2012-12-20 TW TW101148671A patent/TWI474258B/zh active
-
2016
- 2016-12-01 US US15/366,320 patent/US10073695B2/en active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030126177A1 (en) * | 2001-06-04 | 2003-07-03 | International Business Machines Corporation | Arithmetic unit and method thereof |
| US20040015882A1 (en) * | 2001-06-05 | 2004-01-22 | Ping Tak Peter Tang | Branch-free software methodology for transcendental functions |
| US20070260665A1 (en) * | 2006-04-20 | 2007-11-08 | Chengpu Wang | Method of Specifying and Tracking Precision in Floating-point Calculation |
| TW201104569A (en) * | 2009-07-28 | 2011-02-01 | Via Tech Inc | Microprocessors and methods for executing instruction |
| US20110161624A1 (en) * | 2009-12-29 | 2011-06-30 | International Business Machines Corporation | Floating Point Collect and Operate |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI715589B (zh) * | 2015-06-12 | 2021-01-11 | 英商Arm股份有限公司 | 用於在執行浮點運算時控制捨入的裝置及方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW201333818A (zh) | 2013-08-16 |
| US10073695B2 (en) | 2018-09-11 |
| EP2798466B1 (en) | 2017-12-13 |
| US20140195580A1 (en) | 2014-07-10 |
| US20170185398A1 (en) | 2017-06-29 |
| CN104145245B (zh) | 2018-01-23 |
| US9513871B2 (en) | 2016-12-06 |
| EP2798466A4 (en) | 2016-07-06 |
| EP2798466A1 (en) | 2014-11-05 |
| WO2013101233A1 (en) | 2013-07-04 |
| CN104145245A (zh) | 2014-11-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI474258B (zh) | 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體 | |
| CN112506467B (zh) | 用于使用操作的混合精度分解的较高精度计算的计算机处理器 | |
| TWI756251B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
| JP6371855B2 (ja) | プロセッサ、方法、システム、プログラム、及び非一時的機械可読記憶媒体 | |
| CN104011647B (zh) | 浮点舍入处理器、方法、系统和指令 | |
| TWI761367B (zh) | 用於融合乘加運算的系統、裝置及方法 | |
| CN104040484B (zh) | 浮点缩放处理器、方法、系统和指令 | |
| CN110879724A (zh) | 用于深度学习和其它算法的fp16-s7e8混合精度 | |
| CN112711443A (zh) | 用于执行16位浮点向量点积指令的系统和方法 | |
| TWI511043B (zh) | 用以產生整數的序列之方法、裝置、系統及製造物品 | |
| TWI550508B (zh) | 用於複製資料結構之設備及方法 | |
| CN104951401A (zh) | 排序加速处理器、方法、系统和指令 | |
| CN104204989B (zh) | 用于选择向量计算的元素的装置和方法 | |
| TWI575451B (zh) | 用於遮罩及向量暫存器之間的可變擴充的方法及裝置 | |
| TWI637317B (zh) | 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置 | |
| TWI905250B (zh) | 用於實施16位元浮點矩陣點積指令的裝置、方法及系統 | |
| TWI464677B (zh) | 經改良插入指令之裝置及方法 | |
| CN106030514A (zh) | 采用到被屏蔽结果元素的传播将源元素存储到对应未屏蔽结果元素的处理器、方法、系统和指令 | |
| TW201732572A (zh) | 用於跨步的載入(strided load)的系統、設備及方法 | |
| CN107077333B (zh) | 用于实行向量位聚集的方法和装置 | |
| TWI737650B (zh) | 用於從鏈結結構取回元件的處理器、系統和方法 | |
| TWI877216B (zh) | 用於乘以零值之指令的硬體處理器、方法和非暫態機器可讀媒體 |