TW201732571A - 用於獲得偶數和奇數資料元素的系統、裝置及方法 - Google Patents

用於獲得偶數和奇數資料元素的系統、裝置及方法 Download PDF

Info

Publication number
TW201732571A
TW201732571A TW105139278A TW105139278A TW201732571A TW 201732571 A TW201732571 A TW 201732571A TW 105139278 A TW105139278 A TW 105139278A TW 105139278 A TW105139278 A TW 105139278A TW 201732571 A TW201732571 A TW 201732571A
Authority
TW
Taiwan
Prior art keywords
instruction
field
memory
register
source
Prior art date
Application number
TW105139278A
Other languages
English (en)
Other versions
TWI733718B (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 TW201732571A publication Critical patent/TW201732571A/zh
Application granted granted Critical
Publication of TWI733718B publication Critical patent/TWI733718B/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/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
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30101Special purpose 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

描述用於獲得偶數或奇數資料元素之系統、設備、及方法之實施例。例如,在若干實施例中,裝置包括解碼器,用以解碼指令,其中,指令包括第一來源運算元、第二來源運算元、及目的地運算元之欄位;以及執行電路,用以執行解碼之指令,而從第一來源運算元及第二來源運算元之偶數資料元素位置提取資料元素,並將提取之資料元素儲存於目的地運算元中。

Description

用於獲得偶數和奇數資料元素的系統、裝置及方法
本發明之範疇大體上關於電腦處理器架構,更特定地,關於當執行時致使特定結果之指令。
從封裝資料暫存器提取值為非常普遍的運算形式。一普遍作業為取出資料元素之偶數或奇數集。此最常見於高性能運算應用,諸如QCD,其中資料類型複雜(實部及虛部對)。
101、701‧‧‧解碼電路
103、703‧‧‧排程電路
105、705‧‧‧暫存器
107、707‧‧‧記憶體
109、205、709、805‧‧‧執行電路
111、711‧‧‧止用電路
201、801‧‧‧封裝資料來源1
203、803‧‧‧封裝資料來源2
207、807‧‧‧目的地運算元
301、901‧‧‧運算碼
303、903‧‧‧目的地運算元
305、905‧‧‧來源1運算元
307、907‧‧‧來源2運算元
309、909‧‧‧第三來源運算元
1300‧‧‧通用向量親和指令格式
1305、1346A‧‧‧無記憶體存取指令模板
1310、1410‧‧‧REX'欄位
1312‧‧‧無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板
1315‧‧‧無記憶體存取、資料變換類型運算指令模板
1317‧‧‧無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板
1320、1346B‧‧‧記憶體存取指令模板
1325‧‧‧記憶體存取、瞬態指令模板
1327‧‧‧記憶體存取、寫入遮罩控制指令模板
1330‧‧‧記憶體存取、非瞬態指令模板
1340‧‧‧格式欄位
1342‧‧‧基礎運算欄位
1344‧‧‧暫存器索引欄位
1346‧‧‧修飾符欄位
1350‧‧‧增強運算欄位
1352‧‧‧甲種欄位
1352A‧‧‧RS欄位
1352A.1‧‧‧捨入
1352A.2‧‧‧資料變換
1352B‧‧‧逐出暗示欄位
1352B.1‧‧‧瞬態
1352B.2‧‧‧非瞬態
1352C‧‧‧寫入遮罩控制(Z)欄位
1354‧‧‧乙種欄位
1354A‧‧‧捨入控制欄位
1354B‧‧‧資料變換欄位
1354C‧‧‧資料操作欄位
1356‧‧‧抑制所有浮點異常(SAE)欄位
1357A‧‧‧RL欄位
1357A.1‧‧‧捨入
1357A.2‧‧‧向量長度(VSIZE)
1357B‧‧‧廣播欄位
1358、1359A‧‧‧捨入運算控制欄位
1359B‧‧‧向量長度欄位
1360‧‧‧縮放欄位
1362A‧‧‧位移欄位
1362B‧‧‧位移因數欄位
1364‧‧‧資料元素寬度欄位
1368‧‧‧級別欄位
1368A‧‧‧A級
1368B‧‧‧B級
1370‧‧‧寫入遮罩欄位
1372‧‧‧立即欄位
1374‧‧‧全運算碼欄位
1400‧‧‧特定向量親和指令格式
1402‧‧‧EVEX前置
1405‧‧‧REX欄位
1415‧‧‧運算碼映射圖欄位
1420‧‧‧EVEX.vvvv
1425‧‧‧前置編碼欄位
1430‧‧‧實際運算碼欄位
1440‧‧‧MOD R/M欄位
1442‧‧‧MOD欄位
1444‧‧‧暫存器指標欄位
1446‧‧‧R/M欄位
1454‧‧‧xxx欄位
1456‧‧‧bbb欄位
1500‧‧‧暫存器架構
1510‧‧‧向量暫存器
1515‧‧‧寫入遮罩暫存器
1525‧‧‧通用暫存器
1545‧‧‧純量浮點堆疊暫存器檔案(x87堆疊)
1550‧‧‧MMX封裝整數平坦暫存器檔案
1600‧‧‧處理器管線
1602‧‧‧提取級
1604‧‧‧長度解碼級
1606‧‧‧解碼級
1608‧‧‧配置級
1610‧‧‧更名級
1612‧‧‧排程級
1614‧‧‧暫存器讀取/記憶體讀取級
1616‧‧‧執行級
1618‧‧‧寫回/記憶體寫入級
1622‧‧‧異常處置級
1624‧‧‧確定級
1630‧‧‧前端單元
1632‧‧‧分支預測單元
1634‧‧‧指令快取記憶體單元
1636‧‧‧指令翻譯後備緩衝器(TLB)
1638‧‧‧指令提取單元
1640‧‧‧解碼單元
1650‧‧‧執行引擎單元
1652‧‧‧更名/配置器單元
1654‧‧‧止用單元
1656‧‧‧排程器單元
1658‧‧‧實體暫存器檔案單元
1660‧‧‧執行叢集
1662‧‧‧執行單元
1664‧‧‧記憶體存取單元
1670‧‧‧記憶體單元
1672‧‧‧資料翻譯後備緩衝器(TLB)單元
1674‧‧‧資料快取記憶體單元
1676‧‧‧2級(L2)快取記憶體單元
1690‧‧‧處理器核心
1700‧‧‧指令解碼器
1702‧‧‧晶粒上互連網路
1704‧‧‧2級(L2)快取記憶體
1706‧‧‧1級(L1)快取記憶體
1706A‧‧‧L1資料快取記憶體
1708‧‧‧純量單元
1710‧‧‧向量單元
1712‧‧‧純量暫存器
1714‧‧‧向量暫存器
1720‧‧‧拌和單元
1722A-B‧‧‧數字轉換單元
1724‧‧‧複製單元
1726‧‧‧寫入遮罩暫存器
1728‧‧‧16寬向量算術邏輯單元
1800、1910、1915、2015‧‧‧處理器
1802A-N‧‧‧核心
1804A-N‧‧‧快取記憶體單元
1806‧‧‧共用快取記憶體單元
1808‧‧‧專用邏輯
1810‧‧‧系統代理器
1812‧‧‧環形互連單元
1814‧‧‧整合記憶體控制器單元
1816‧‧‧匯流排控制器單元
1900‧‧‧系統
1920‧‧‧控制器集線器
1940、2032、2034‧‧‧記憶體
1945、2038、2220‧‧‧協處理器
1950‧‧‧輸入/輸出集線器(IOH)
1960、2014、2114‧‧‧輸入/輸出(I/O)裝置
1990‧‧‧圖形記憶體控制器集線器(GMCH)
1995‧‧‧連接
2000‧‧‧第一特定示例系統
2016‧‧‧第一匯流排
2018‧‧‧匯流排橋接器
2020‧‧‧第二匯流排
2022‧‧‧鍵盤及/或滑鼠
2024‧‧‧音頻輸入/輸出(I/O)
2027‧‧‧通訊裝置
2028‧‧‧儲存單元
2030‧‧‧指令/碼及資料
2039‧‧‧高性能介面
2050‧‧‧點對點互連
2052、2054、2086、2088‧‧‧點對點(P-P)介面
2070‧‧‧第一處理器
2072、2082‧‧‧整合記憶體控制器(IMC)單元
2076、2078‧‧‧匯流排控制器單元點對點(P-P)介面
2080‧‧‧第二處理器
2090‧‧‧晶片組
2092、2096‧‧‧介面
2094、2098‧‧‧點對點介面電路
2100‧‧‧第二特定示例系統
2115‧‧‧舊有輸入/輸出(I/O)裝置
2200‧‧‧系統晶片
2202‧‧‧互連單元
2210‧‧‧應用處理器
2230‧‧‧靜態隨機存取記憶體(SRAM)單元
2232‧‧‧直接記憶體存取(DMA)單元
2240‧‧‧顯示單元
2302‧‧‧高階語言
2304‧‧‧x86編譯器
2306‧‧‧x86二元碼
2308‧‧‧替代指令集編譯器
2310‧‧‧替代指令集二元碼
2312‧‧‧指令轉換器
2314、2316‧‧‧x86指令集核心
本發明係藉由範例描繪,不侷限於附圖,其中相似代號表示相似元素,且其中:圖1描繪硬體之實施例,以處理指令而從二或更多封裝資料暫存器獲得偶數資料元素;圖2描繪獲得偶數指令之執行實施例;圖3描繪獲得偶數指令之實施例; 圖4描繪藉由處理器處理獲得偶數指令所實施之方法實施例;圖5描繪藉由處理器處理獲得偶數指令所實施之方法之執行部分實施例;圖6描繪獲得偶數之偽碼實施例;圖7描繪硬體之實施例,以處理指令而從二或更多封裝資料暫存器獲得奇數資料元素;圖8描繪獲得奇數指令之執行實施例;圖9描繪獲得奇數指令之實施例;圖10描繪藉由處理器處理獲得奇數指令所實施之方法實施例;圖11描繪藉由處理器處理獲得奇數指令所實施之方法之執行部分實施例;圖12描繪獲得奇數之偽碼實施例;圖13A-13B為方塊圖,依據本發明之實施例描繪通用向量親和指令格式及其指令模板;圖14A-D為方塊圖,依據本發明之實施例描繪示例特定向量親和指令格式;圖15為依據本發明之一實施例之暫存器架構之方塊圖;圖16A為方塊圖,依據本發明之實施例描繪示例循序管線及示例暫存器更名亂序發送/執行管線;圖16B為方塊圖,依據本發明之實施例描繪循序架構核心之示例實施例,及包括於處理器中之示例暫存器更名 亂序發送/執行架構核心;圖17A-B描繪更特定示例循序核心架構之方塊圖,該核心為晶片中若干邏輯方塊(包括相同類型及/或不同類型之其他核心)之一;圖18為依據本發明之實施例之處理器之方塊圖,可具有一個以上核心,可具有整合記憶體控制器,及可具有整合圖形邏輯;圖19-22為示例電腦架構之方塊圖;以及圖23為方塊圖,依據本發明之實施例,對比使用軟體指令轉換器,將來源指令集中之二元指令轉換為目標指令集中之二元指令。
【發明內容及實施方式】
在下列描述中,提出許多特定細節。然而,將理解的是可實現本發明之實施例而無該些特定細節。在其他狀況下,未詳細顯示熟知電路、結構及技術,以便不混淆本描述之理解。
說明書中提及「一實施例」、「實施例」、「範例實施例」指出,所描述之實施例可包括特定部件、結構、或特性,但每一實施例不一定包括特定部件、結構、或特性。再者,該等用語不一定係指相同實施例。此外,當結合實施例描述特定部件、結構、或特性時,主張其係在熟悉本技藝之人士之知識內,而影響與其他實施例結合之該等部件、結構、或特性,不論是否清楚描述。
文中詳述getEven及getOdd指令,以提出成對資料類型之個別值。正如名稱顯示,getEven將從向量暫存器得出偶數元素,getOdd將從向量暫存器得出奇數元素。此將改進廣泛HPC應用之性能,簡化代碼生成及為更佳可程式性而提供更直覺指令集。
在實施例中,執行之getEven及getOdd指令分別從設置輸入(來源)暫存器提出偶數及奇數元素,並將該些提取之元素寫入至目的地暫存器。該些指令節省指令數,改進性能,及減少碼尺寸,藉以易於改進自動向量化及提供直覺可程式性。
以下顯示具2元素之複雜資料類型範例。
Struct{Double real;Double imag;}Complex;Complex cArray[1000000];
載入向量暫存器之複雜陣列範例為ZMM1=cAiTay[3].imag、cArray[3].real、cArray[2].imag、cArray[2].real、cArray[1].imag、cArray[1].real、cArray[0].imag、cArray[0].real。ZMM2=cArray[7].imag、cArray[7].real、cArray[6].imag、cArray[6].real、cArray[5].imag、cArray[5].real、cArray[4].imag、cArray[4].real。
複數作業包含不同實數及虛數部之運算集,因而全部8實數部集及8虛數部集被置入向量暫存器,其可使用集中指令集中實數及虛數部實施,或使用負載及二 個2來源置換序列實施,其耗盡額外暫存器進行置換控制。因而,此包含複雜的昂貴指令序列集而從二向量暫存器提出實數及虛數部。此提出之指令較簡單。
圖1描繪硬體之實施例,以處理指令而從二或更多封裝資料暫存器獲得偶數資料元素。在若干狀況下,在本描述中,「獲得偶數」指令用語將用於此指令。描繪之硬體典型地為一部分硬體處理器或核心,諸如一部分中央處理單元、加速計等。
獲得偶數指令係由解碼電路101接收。例如,解碼電路101從提取邏輯/電路接收此指令。獲得偶數指令包括目的地運算元及至少二來源運算元之欄位。典型地,該些運算元為暫存器。之後將詳述指令格式之更詳細實施例。解碼電路101解碼獲得偶數指令為一或更多作業。在若干實施例中,此解碼包括產生將由執行電路(諸如執行電路109)實施之複數微運算。解碼電路101亦解碼指令前綴。
在若干實施例中,暫存器更名、暫存器配置、及/或排程電路103提供以下一或更多項功能性:1)更名邏輯運算元值為實體運算元值(例如若干實施例中之暫存器重疊表),2)配置狀態位元及旗標至解碼之指令,及3)排程解碼之指令供指令庫外執行電路109上執行(例如在若干實施例中使用保留站)。
暫存器(暫存器檔案)105及記憶體107儲存資料於執行電路109上並將由其操作之獲得偶數指令的運 算元。示例暫存器類型包括封裝資料暫存器、通用暫存器、及浮點暫存器。
執行電路109執行解碼之獲得偶數指令,以提取封裝資料來源暫存器之全部偶數元素進入目的地暫存器。
在若干實施例中,止用電路111止用指令。
圖2描繪獲得偶數指令之執行實施例。在本描繪中,二封裝資料來源201及203為指令之運算元。在大部分實施例中,該些來源201及203為封裝資料暫存器。然而,在若干實施例中,一或二者為記憶體運算元。
來源201及203顯示為具有8封裝資料元素。此描繪不表示有所限制,且來源201及203可保持不同數量封裝資料元素,諸如2、4、8、16、32、或64。此外,資料元素之尺寸可為許多不同尺寸之一,諸如8位元(位元組)、16位元(字)、32位元(雙字)、64位元(四字)、128位元、或256位元。
執行電路205從每一來源201及203提取偶數封裝資料元素,並將提取結果儲存於目的地運算元(暫存器)207中。
獲得偶數指令之格式實施例為getEven{B/W/D/Q}DST_REG、SRC1_REG、SRC2_REG。在若干實施例中,getEven{B/W/D/Q}為指令之運算碼,且B/W/D/Q指出來源/目的地之資料元素尺寸為位元組、字、雙字、及四字。SRC1_REG及SRC2_REG分別為來源 暫存器運算元1及2之欄位。DST_REG為目的地暫存器,將包含全部偶數元素值,其係於getEven指令執行時,首先從SRC1_REG提取,接著從SRC2_REG提取。在若干實施例中,一來源暫存器亦為目的地暫存器。在若干實施例中,第二來源為記憶體位置。
在實施例中,指令之編碼包括標度-索引-基礎(SIB)型記憶體定址運算元,其間接識別記憶體中多個索引目的地位置。在一實施例中,SIB型記憶體運算元包括識別基址暫存器之編碼。基址暫存器之內容代表記憶體中之基址,由此計算記憶體中特定目的地位置之位址。例如,基址為延伸向量指令之可能目的地位置之方塊中第一位置之位址。在一實施例中,SIB型記憶體運算元包括識別索引暫存器之編碼。索引暫存器之每一元素指明來自基址可用以運算可能目的地位置之方塊內個別目的地位置之位址的索引或偏移值。在一實施例中,SIB型記憶體運算元包括編碼,指明當運算個別目的地位址時,應用於每一索引值之縮放因子。例如,若SIB型記憶體運算元中編碼4之縮放因子值,則從索引暫存器之元素獲得之每一索引值乘以4,接著加至基址而運算目的地位址。
在一實施例中,形式vm32{x,y.z}之SIB型記憶體運算元識別使用SIB型記憶體定址指明之記憶體運算元之向量陣列。在此範例中,記憶體位址之陣列係使用共同基底暫存器、固定縮放因子、及包含個別元素之向量索引暫存器指明,每一者為32位元索引值。向量索引暫存 器可為XMM暫存器(vm32x)、YMM暫存器(vm32y)、或ZM.M暫存器(vm32z)。在另一實施例中,形式vm64{x.y.z}之SIB型記憶體運算元識別使用SIB型記憶體定址指明之記憶體運算元的向量陣列。在此範例中,記憶體位址之陣列係使用共同基底暫存器、固定縮放因子及包含個別元素之向量索引暫存器指明,每一者為64位元索引值。向量索引暫存器可為XMM暫存器(vm64x)、YMM暫存器(vm64y)或ZMM暫存器(vm64z)。
圖3描繪獲得偶數指令之實施例,包括運算碼301、目的地運算元303、來源1運算元305、及來源2運算元307之值。此外,在若干實施例中,呈現第三來源運算元309。
回至先前討論之實數及虛數範例,getEven{BAV7D/Q}ZMM3、ZMM1、ZMM2之執行將導致從來源ZMM1及ZMM2獲得全部偶數元素(實數部)進入單一目的地ZMM3暫存器:ZMM3=cArray[7].real、cArray[6].real、cArray[5].real、cArray[4].real、cArray[3].real、cArray[2].real、cArray[1].Real、cArray[0].real。
圖4描繪藉由處理器處理獲得偶數指令所實施之方法實施例。
在401,提取指令。例如提取獲得偶數指令。如以上詳述,獲得偶數指令包括運算碼、至少二來源運算 元、及目的地運算元。在若干實施例中,指令係從指令快取記憶體提取。
提取之指令係在403解碼。例如,提取之獲得偶數指令係由諸如文中詳述之解碼電路解碼。
與解碼之指令之來源運算元相關之資料值係於405擷取。例如,存取封裝資料暫存器。
在407,解碼之指令係由諸如文中詳述之執行電路(硬體)執行。對獲得偶數指令而言,執行致使來自指令之第一及第二來源運算元的全部偶數資料元素被提取,並儲存於指令之目的地運算元中。例如,提取二封裝資料暫存器之偶數資料元素,並儲存於封裝資料目的地暫存器中。在若干實施例中,提取之第一來源之資料元素係依資料元素順序儲存於目的地運算元之低資料元素位置中,提取之第二來源之資料元素係依資料元素順序儲存於目的地運算元之上資料元素位置。
在若干實施例中,於409指配或止用目的地運算元(暫存器)。
圖5描繪藉由處理器處理獲得偶數指令所實施之方法之執行部分實施例。
在501,實施從第一及第二來源運算元擷取若干資料元素之判定。數量為將提取之偶數資料元素的總數。
在503,偶數資料元素位置中第一及第二來源運算元之資料元素並聯寫入目的地運算元。來自第一來源 運算元之偶數資料元素位置的資料元素被寫入資料元素位置0至將提取之偶數資料元素總數的一半,來自第二來源運算元之偶數資料元素位置的資料元素被寫入資料元素位置將提取之偶數資料元素總數的一半至最後資料元素位置。
圖6描繪獲得偶數之偽碼實施例。
圖7描繪硬體之實施例,以處理指令而從二或更多封裝資料暫存器獲得奇數資料元素。在若干狀況下,在本描述中,「獲得奇數」指令用語將用於此指令。描繪之硬體典型地為一部分硬體處理器或核心,諸如一部分中央處理單元、加速計等。
獲得奇數指令係由解碼電路701接收。例如,解碼電路701從提取邏輯/電路接收此指令。獲得奇數指令包括目的地運算元及至少二來源運算元之欄位。典型地,該些運算元為暫存器。之後將詳述指令格式之更詳細實施例。解碼電路701解碼獲得奇數指令為一或更多作業。在若干實施例中,此解碼包括產生將由執行電路(諸如執行電路709)實施之複數微運算。解碼電路701亦解碼指令前綴。
在若干實施例中,暫存器更名、暫存器配置、及/或排程電路703提供以下一或更多項功能性:1)更名邏輯運算元值為實體運算元值(例如若干實施例中之暫存器重疊表),2)配置狀態位元及旗標至解碼之指令,及3)排程解碼之指令供指令庫外執行電路709上 執行(例如在若干實施例中使用保留站)。
暫存器(暫存器檔案)705及記憶體707儲存資料於執行電路709上並將由其操作之獲得奇數指令的運算元。示例暫存器類型包括封裝資料暫存器、通用暫存器、及浮點暫存器。
執行電路709執行解碼之獲得奇數指令,以提取封裝資料來源暫存器之全部奇數元素進入目的地暫存器。
在若干實施例中,止用電路711架構上指配目的地暫存器進入暫存器705及/或記憶體707。
圖8描繪獲得奇數指令之執行實施例。在本描繪中,二封裝資料來源801及803為指令之運算元。在大部分實施例中,該些來源801及803為封裝資料暫存器。然而,在若干實施例中,一或二者為記憶體運算元。
來源801及803顯示為具有8封裝資料元素。此描繪不表示有所限制,且來源801及803可保持不同數量封裝資料元素,諸如2、4、8、16、32、或64。此外,資料元素之尺寸可為許多不同尺寸之一,諸如8位元(位元組)、16位元(字)、32位元(雙字)、64位元(四字)、128位元、或256位元。
執行電路805從每一來源801及803提取偶數封裝資料元素,並將提取結果儲存於目的地運算元(暫存器)807中。
獲得奇數指令之格式實施例為 getOdd{B/W/D/Q}DST_REG、SRC1_REG、SRC2_REG。在此格式中,getOdd{B/W/D/Q}為指令之運算碼。B/W/D/Q指出來源/目的地之資料元素尺寸為位元組、字、雙字、及四字。SRC1_REG及SRC2_REG分別為來源暫存器運算元1及2之欄位。DST_REG為目的地暫存器,將包含全部奇數元素值,其係於獲得奇數指令執行時,首先從SRC1_REG提取,接著從SRC2_REG提取。在若干實施例中,一來源暫存器亦為目的地暫存器。在若干實施例中,第二來源為記憶體位置。
在實施例中,指令之編碼包括標度-索引-基礎(SIB)型記憶體定址運算元,其間接識別記憶體中多個索引目的地位置。在一實施例中,SIB型記憶體運算元包括識別基址暫存器之編碼。基址暫存器之內容代表記憶體中之基址,由此計算記憶體中特定目的地位置之位址。例如,基址為延伸向量指令之可能目的地位置之方塊中第一位置之位址。在一實施例中,SIB型記憶體運算元包括識別索引暫存器之編碼。索引暫存器之每一元素指明來自基址可用以運算可能目的地位置之方塊內個別目的地位置之位址的索引或偏移值。在一實施例中,SIB型記憶體運算元包括編碼,指明當運算個別目的地位址時,應用於每一索引值之縮放因子。例如,若SIB型記憶體運算元中編碼4之縮放因子值,則從索引暫存器之元素獲得之每一索引值乘以4,接著加至基址而運算目的地位址。
在一實施例中,形式vm32{x,y.z}之SIB型記 憶體運算元識別使用SIB型記憶體定址指明之記憶體運算元之向量陣列。在此範例中,記憶體位址之陣列係使用共同基底暫存器、固定縮放因子、及包含個別元素之向量索引暫存器指明,每一者為32位元索引值。向量索引暫存器可為XMM暫存器(vm32x)、YMM暫存器(vm32y)、或ZM.M暫存器(vm32z)。在另一實施例中,形式vm64{x.y.z}之SIB型記憶體運算元識別使用SIB型記憶體定址指明之記憶體運算元的向量陣列。在此範例中,記憶體位址之陣列係使用共同基底暫存器、固定縮放因子及包含個別元素之向量索引暫存器指明,每一者為64位元索引值。向量索引暫存器可為XMM暫存器(vm64x)、YMM暫存器(vm64y)或ZMM暫存器(vm64z)。
圖9描繪獲得奇數指令之實施例,其包括運算碼901、目的地運算元903、來源1運算元905、及來源2運算元907之值。此外,在若干實施例中,呈現第三來源運算元909。
回至先前討論之實數及虛數範例,類似地,getOddQ ZMM4、ZMM1、ZMM2之執行將導致從來源ZMM1及ZMM2獲得全部奇數元素(虛數部)進入單一目的地ZMM4暫存器:ZMM4=cArray[7].imag、cArray[6].imag、cArray[5].imag、cArray[4].imag、cArray[3].imag、cArray[2].imag、cArray[1].imag、cArray[0].imag。
圖10描繪藉由處理器處理獲得奇數指令所實施之方法實施例。
在1001,提取指令。例如提取獲得奇數指令。如以上詳述,獲得奇數指令包括運算碼、至少二來源運算元、及目的地運算元。在若干實施例中,指令係從指令快取記憶體提取。
提取之指令係在1003解碼。例如,提取之獲得奇數指令係由諸如文中詳述之解碼電路解碼。
與解碼之指令之來源運算元相關之資料值係於1005擷取。例如,存取封裝資料暫存器。
在1007,解碼之指令係由諸如文中詳述之執行電路(硬體)執行。對獲得奇數指令而言,執行致使來自指令之第一及第二來源運算元的全部奇數資料元素被提取,並儲存於指令之目的地運算元中。例如,提取二封裝資料暫存器之奇數資料元素,並儲存於封裝資料目的地暫存器中。在若干實施例中,提取之第一來源之資料元素係依資料元素順序儲存於目的地運算元之低資料元素位置中,提取之第二來源之資料元素係依資料元素順序儲存於目的地運算元之上資料元素位置。
在若干實施例中,於1009指配或止用目的地運算元(暫存器)。
圖11描繪藉由處理器處理獲得奇數指令所實施之方法之執行部分實施例。
在1101,實施從第一及第二來源運算元擷取 若干資料元素之判定。數量為將提取之奇數資料元素的總數。
在1003,奇數資料元素位置中第一及第二來源運算元之資料元素並聯寫入目的地運算元。來自第一來源運算元之奇數資料元素位置的資料元素被寫入資料元素位置0至將提取之奇數資料元素總數的一半,來自第二來源運算元之奇數資料元素位置的資料元素被寫入資料元素位置將提取之奇數資料元素總數的一半至最後資料元素位置。
圖12描繪獲得奇數之偽碼實施例。
以下各圖詳述示例架構及系統而實施以上實施例。在若干實施例中,上述一或更多硬體組件及/或指令如以下詳述仿真,或實施為軟體模組。
以上體現之詳細指令實施例可以「通用向量親和指令格式」體現,以下將詳述。在其他實施例中,未利用該格式而係使用另一指令格式,然而,寫入遮罩暫存器、各式資料轉換(拌和、廣播等)、定址等以下描述,一般可應用於以上指令實施例之描述。此外,以下詳述示例系統、架構、及管線。以上指令實施例可於該等系統、架構、及管線上執行,但不侷限於此。
指令集可包括一或更多指令格式。特定指令格式可定義各式欄位(例如位元數量、位元位置),以指明將實施之作業(例如運算碼),及其上將實施作業之運算元,及/或其他資料欄位(例如遮罩)。儘管指令模板 (或子格式)之定義,進一步分解若干指令格式。例如,特定指令格式之指令模板可經定義而具有指令格式欄位之不同子集(包括之欄位典型地處於相同順序,但因為包括較少欄位,所以至少若干具有不同位元位置),及/或經定義而具有不同解譯之特定欄位。因而,ISA之每一指令係使用特定指令格式表達(若有所定義,係處於指令格式之特定指令模板),並包括用於指明作業及運算元之欄位。例如,示例ADD指令具有特定運算碼及指令格式,其包括運算碼欄位以指明運算碼及運算元欄位,而選擇運算元(來源1/目的地及來源2);且指令流中本ADD指令之發生將具有運算元欄位中之特定內容,其選擇特定運算元。一組SIMD延伸係指先進向量延伸(AVX)(AVX1及AVX2),及使用已釋放及/或公佈之向量延伸(VEX)編碼方案(例如詳2014年九月Intel® 64及IA-32架構軟體開發者手冊;及詳2014年十月Intel®先進向量延伸編程參考)。
示例指令格式
文中所描述之指令實施例可以不同格式體現。此外,以下詳述示例系統、架構、及管線。指令之實施例可於該等系統、架構、及管線上執行,但不侷限於該些細節。
通用向量親和指令格式
向量親和指令格式為指令格式,其適於向量指令(例如存在特定用於向量作業之某欄位)。雖然描述之實施例其中經由向量親和指令格式而支援向量及純量作業,替代實施例僅使用操作向量親和指令格式之向量。
圖13A-13B為方塊圖,依據本發明之實施例,描繪通用向量親和指令格式及其指令模板。圖13A為方塊圖,依據本發明之實施例描繪通用向量親和指令格式及其A級指令模板;同時,圖13B為方塊圖,依據本發明之實施例描繪通用向量親和指令格式及其B級指令模板。具體地,通用向量親和指令格式1300定義A級及B級指令模板,二者包括無記憶體存取指令模板1305及記憶體存取指令模板1320。向量親和指令格式之上下文中,通用用詞係指未與任何特定指令集相關聯之指令格式。
雖然將描述本發明之實施例,其中向量親和指令格式支援下列: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位元組)資料元素寬度)。
圖13A中A級指令模板包括:1)在無記憶體存取指令模板1305內,顯示無記憶體存取、全捨入控制類型運算指令模板1310,及無記憶體存取、資料變換類型運算指令模板1315;及2)在記憶體存取指令模板1320內,顯示記憶體存取、瞬態指令模板1325,及記憶體存取、非瞬態指令模板1330。圖13B中B級指令模板包括:1)在無記憶體存取指令模板1305內,顯示無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板1312,及無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板1317;及2)在記憶體存取指令模板1320內,顯示記憶體存取、寫入遮罩控制指令模板1327。
通用向量親和指令格式1300包括下列欄位,以下以圖13A-13B中所描繪之順序列出。
格式欄位1340-此欄位中特定值(指令格式識別符值),獨特地識別向量親和指令格式,因而於指令流中出現向量親和指令格式之指令。同樣地,此欄位係可選的,對於僅具有通用向量親和指令格式之指令集而言並非必須。
基礎運算欄位1342-其內容區別不同基礎運算。
暫存器索引欄位1344-其內容直接或經由位址產生指定暫存器或記憶體中來源及目的地運算元之位置。其包括充足位元數而從PxQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案選擇N暫存器。雖然在一實施例中,N可達三個來源及一個目的地暫存器,替代實施例可支援更多或更少來源及目的地暫存器(例如可支援二個來源,其中該些來源之一亦可做為目的地,可支援三個來源,其中該些來源之一亦可做為目的地,可支援二個來源及一個目的地)。
修飾符欄位1346-其內容區別指定記憶體存取與未指定者之通用向量指令格式的指令出現;即,無記憶體存取指令模板1305及記憶體存取指令模板1320之間。記憶體存取作業讀取及/或寫入至記憶體階層(在若干狀況下,使用暫存器中之值指定來源及/或目的地位址),同時非記憶體存取作業未讀取及/或寫入(例如來源及目的地為暫存器)。雖然在一實施例中,此欄位亦於三不同方式之間選擇而實施記憶體位址計算,替代實施例可支援更多、更少或以不同方式實施記憶體位址計算。
增強運算欄位1350-其內容區別除了基礎運算外,將實施各種不同運算之哪一者。此欄位為特定上下文。在本發明之一實施例中,此欄位劃分為級別欄位1368、甲種欄位1352、及乙種欄位1354。增強運算欄位 1350允許共同運算群組於單指令中實施,而非2、3、或4指令。
縮放欄位1360-其內容允許索引欄位之內容針對記憶體位址產生進行縮放(例如針對使用2標度*索引+基底之位址產生)。
位移欄位1362A-其內容用做記憶體位址產生之一部分(例如針對使用2標度*索引+基底+位移之位址產生)。
位移因數欄位1362B(請注意,位移欄位1362A之鄰接位置直接在位移因數欄位1362B之上,表示使用二者之一)-其內容用做位址產生之一部分;其指定由記憶體存取之尺寸(N)標度的位移因數-其中N為記憶體存取中之位元組數量(例如針對使用2標度*索引+基底+標度位移之位址產生)。忽略冗餘低階位元,因此位移因數欄位之內容乘以記憶體運算元總尺寸(N),以便產生最終位移,用於計算有效位址。N值係於運行時間依據全作業碼欄位1374(文中之後描述)及資料操作欄位1354C而由處理器硬體決定。在並非用於無記憶體存取指令模板1305及/或不同實施例僅可實施二者之一或皆不實施這個意義上而言,位移欄位1362A及位移因數欄位1362B為可選的。
資料元素寬度欄位1364-其內容區別將使用若干資料元素寬度之哪一者(在對所有指令之若干實施例中;在對僅若干指令之其他實施例中)。在若僅支援一資 料元素寬度及/或使用作業碼之若干方面支援資料元素寬度,其不是必須的這個意義上而言,此欄位為可選的。
寫入遮罩欄位1370-在每一資料元素位置的基礎上,其內容控制目的地向量運算元中資料元素位置是否反映基礎運算及增強運算的結果。A級指令模板支援合併寫入遮罩,同時B級指令模板支援合併及歸零寫入遮罩。當合併時,向量遮罩允許目的地中任何元素組受保護,免於在執行任何運算(由基礎運算及增強運算指定)期間更新;在一其他實施例中,保存相應遮罩位元具有0之目的地之每一元素的舊值。相反地,當歸零時,向量遮罩允許目的地中任何元素組在執行任何運算(由基礎運算及增強運算指定)期間歸零;在一實施例中,當相應遮罩位元具有0值時,目的地之元素設定為0。此功能之子集為控制實施運算之向量長度的能力(即,從第一至最後之將修飾元素的範圍);然而,修飾之元素不必要是連續的。因而,寫入遮罩欄位1370允許局部向量運算,包括載入、儲存、算術、邏輯等。雖然描述本發明之實施例,其中寫入遮罩欄位1370之內容選擇若干寫入遮罩暫存器之一,其包含將使用之寫入遮罩(因而寫入遮罩欄位1370之內容間接識別將實施之遮罩),替代實施例取代地允許寫入遮罩欄位1370之內容直接指定將實施之遮罩。
立即欄位1372-其內容允許立即值之規範。在其未呈現於不支援立即值之通用向量親和格式的實施 中,及其未呈現於不使用立即值之指令中的這個意義上而言,此欄位為可選的。
級別欄位1368-其內容於不同級別指令之間區別。參照圖13A-B,此欄位之內容於A級及B級指令之間選擇。在圖13A-B中,圓角方形用以表示欄位中呈現之特定值(例如圖13A-B中分別用於級別欄位1368之A級1368A及B級1368B)。
A級指令模板
在A級無記憶體存取指令模板1305之狀況下,甲種欄位1352被解譯為RS欄位1352A,其內容區別將實施哪一不同增強運算類型(例如捨入1352A.1及資料變換1352A.2分別指定用於無記憶體存取、捨入類型運算指令模板1310及無記憶體存取、資料變換類型運算指令模板1315),同時乙種欄位1354區別將實施指定類型之哪一運算。在無記憶體存取指令模板1305中,縮放欄位1360、位移欄位1362A、及位移因數欄位1362B未呈現。
無記憶體存取指令模板-全捨入控制類型運算
在無記憶體存取全捨入控制類型運算指令模板1310中,乙種欄位1354被解譯為捨入控制欄位1354A,其內容提供靜態捨入。雖然在所描述本發明之實施例中,捨入控制欄位1354A包括抑制所有浮點異常(SAE)欄位1356及捨入運算控制欄位1358,替代實施 例可支援編碼該些概念進入相同欄位或僅具有該些概念/欄位之一者或另一者(例如可僅具有捨入運算控制欄位1358)。
SAE欄位1356-其內容區別是否禁用異常事件報告;當SAE欄位1356之內容表示啟用抑制時,特定指令未報告任何種類浮點異常旗標,及未引發任何浮點異常處置器。
捨入運算控制欄位1358-其內容區別將實施哪一捨入運算群組(例如捨進、捨去、小數部分直接捨去及四捨五入)。因而,捨入運算控制欄位1358允許在每一指令基礎上之捨入模式改變。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入運算控制欄位1358之內容置換暫存器值。
無記憶體存取指令模板-資料變換類型運算
在無記憶體存取資料變換類型運算指令模板1315中,乙種欄位1354被解譯為資料變換欄位1354B,其內容區別將實施若干資料變換之哪一者(例如無資料變換、拌和、廣播)。
在A級記憶體存取指令模板1320之狀況下,甲種欄位1352被解譯為逐出暗示欄位1352B,其內容區別將使用哪一逐出暗示(在圖13A中,瞬態1352B.1及非瞬態1352B.2分別指定用於記憶體存取、瞬態指令模板1325及記憶體存取、非瞬態指令模板1330),同時乙種 欄位1354被解譯為資料操作欄位1354C,其內容區別將實施若干資料操作作業之哪一者(亦已知為基元)(例如無操作;廣播;來源之上轉換;及目的地之下轉換)。記憶體存取指令模板1320包括縮放欄位1360,及可選地包括位移欄位1362A或位移因數欄位1362B。
向量記憶體指令基於轉換支援而實施自記憶體之向量負載,及至記憶體之向量儲存。就正規向量指令而言,向量記憶體指令以資料元素方式轉移資料自/至記憶體,且實際轉移之元素係由選擇做為寫入遮罩之向量遮罩的內容指定。
記憶體存取指令模板-瞬態
瞬態資料為可能足以從快取獲益之快速重新使用的資料。此為暗示,然而,不同處理器可以不同方式實施,包括完全忽略暗示。
記憶體存取指令模板-非瞬態
非瞬態資料為第一級快取記憶體中不可能足以從快取獲益之快速重新使用的資料,應為逐出之特定優先性。此為暗示,然而,不同處理器可以不同方式實施,包括完全忽略暗示。
B級指令模板
在B級指令模板之狀況下,甲種欄位1352被 解譯為寫入遮罩控制(Z)欄位1352C,其內容區別由寫入遮罩欄位1370控制之寫入遮罩係合併或歸零。
在B級無記憶體存取指令模板1305之狀況下,部分乙種欄位1354被解譯為RL欄位1357A,其內容區別將實施哪一不同增強運算類型(例如捨入1357A.1及向量長度(VSIZE)1357A.2分別指定用於無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板1312及無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板1317),同時乙種欄位1354之其餘部分區別將實施特定類型之哪一運算。在無記憶體存取指令模板1305中,縮放欄位1360、位移欄位1362A、及位移因數欄位1362B未呈現。
在無記憶體存取、寫入遮罩控制、部分捨入控制類型運算指令模板1310中,乙種欄位1354被解譯為捨入運算欄位1359A,並禁用異常事件報告(特定指令未報告任何種類浮點異常旗標,且未引發任何浮點異常處置器)。
捨入運算控制欄位1359A-恰如捨入運算控制欄位1358,其內容區別將實施哪一捨入運算群組(例如捨進、捨去、小數部分直接捨去及四捨五入)。因而,捨入運算控制欄位1359A允許在每一指令基礎上之捨入模式改變。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入運算控制欄位1358之內容置換暫存器值。
在無記憶體存取、寫入遮罩控制、向量長度類型運算指令模板1317中,乙種欄位1354之其餘部分被解譯為向量長度欄位1359B,其內容區別將於(例如128、256、或512位元組)上實施若干資料向量長度之哪一者。
在B級記憶體存取指令模板1320之狀況下,部分乙種欄位1354被解譯為廣播欄位1357B,其內容區別是否將實施廣播類型資料操作運算,同時乙種欄位1354之其餘部分被解譯為向量長度欄位1359B。記憶體存取指令模板1320包括縮放欄位1360、可選地位移欄位1362A或位移因數欄位1362B。
關於通用向量親和指令格式1300,顯示全作業碼欄位1374,包括格式欄位1340、基礎運算欄位1342、及資料元素寬度欄位1364。雖然顯示一實施例,其中全作業碼欄位1374包括所有該些欄位,在未支援所有欄位之實施例中,全作業碼欄位1374包括少於所有該些欄位。全作業碼欄位1374提供運算碼(opcode)。
在通用向量親和指令格式中,增強運算欄位1350、資料元素寬度欄位1364、及寫入遮罩欄位1370允許在每一指令的基礎上指定該些部件。
寫入遮罩欄位及資料元素寬度欄位之組合創造具型式指令,其中允許依據不同資料元素寬度而施加遮罩。
於A級及B級內發現之各式指令模板有益於 不同情況。在若干本發明之實施例中,處理器內不同處理器或不同核心可僅支援A級,僅支援B級,或二者。例如,希望用於通用運算之高性能通用亂序核心可僅支援B級,主要希望用於圖形及/或科學(產量)運算之核心可僅支援A級,及希望用於二者之核心可支援二者(當然,具有若干模板混合之核心,及來自二級但非所有模板之指令,和來自二級之指令,均在本發明之範圍內)。而且,單一處理器可包括多核心,均支援相同級,或其中不同核心支援不同級。例如,在具個別圖形及通用核心之處理器中,主要希望用於圖形及/或科學運算之一圖形核心可僅支援A級,同時一或更多個通用核心可為具希望用於通用運算之亂序執行及暫存器更名的高性能通用核心,僅支援B級。不具有個別圖形核心之另一處理器,可包括一個以上通用循序或亂序核心,其支援A級及B級二者。當然,在本發明之不同實施例中,來自一級之部件亦可於其他級中實施。以高階語言所寫程式將置入(例如及時編譯或靜態編譯)不同可執行形式,包括:1)僅具有由目標處理器支援之級供執行之指令的形式;或2)具有使用所有級之指令之不同組合所寫替代常式,並具有依據目前執行碼之處理器所支援之指令而選擇執行之常式之控制流程碼的形式。
示例特定向量親和指令格式
圖14為方塊圖,描繪依據本發明之實施例之 示例特定向量親和指令格式。圖14顯示特定向量親和指令格式1400,其在指定欄位之位置、尺寸、解譯、及順序,以及若干該些欄位之值的這個意義上而言為特定的。特定向量親和指令格式1400可用以延伸x86指令集,因而若干欄位類似,或與現有x86指令集及其延伸(例如AVX)中使用者相同。此格式依然符合具延伸之現有x86指令集之前置編碼欄位、實際作業碼位元組欄位、MODR/M欄位、SIB欄位、位移欄位、及立即值欄位。描繪來自圖13之欄位與來自圖14之欄位的映射圖。
應理解的是,儘管為描繪目的,參照通用向量親和指令格式1300之上下文中特定向量親和指令格式1400而描述本發明之實施例,除非有所主張,本發明不侷限於特定向量親和指令格式1400。例如,通用向量親和指令格式1300考量各式欄位之各種可能尺寸,同時特定向量親和指令格式1400顯示為具有特定尺寸之欄位。藉由特定範例,雖然資料元素寬度欄位1364被描繪為特定向量親和指令格式1400中之一位元欄位,本發明不侷限於此(即,通用向量親和指令格式1300考量資料元素寬度欄位1364之其他尺寸)。
通用向量親和指令格式1300包括以下列圖14A中所描繪之順序所列下列欄位。
EVEX前置1402(位元組0-3)-以4位元組形式編碼。
格式欄位1340(EVEX位元組0,位元[7:0])- 第一位元組(EVEX位元組0)為格式欄位1340,其包含0x62(用於區別本發明之一實施例中向量友善指令格式的獨特值)。
第二至第四位元組(EVEX位元組1-3),包括提供特定能力之若干位元欄位。
REX欄位1405(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.x位元欄位(EVEX位元組1,位元[6]-X)、及EVEX.B位元欄位(EVEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相應VEX位元欄位相同功能,並使用1補數形式編碼,即ZMM0編碼為1111B,ZMM15編碼為0000B。指令之其他欄位編碼暫存器索引之下三位元為本技藝中已知之(rrr、xxx、及bbb),使得可經由附加EVEX.R、EVEX.X、及EVEX.B而形成Rrrr、Xxxx、及Bbbb。
REX'欄位1310-此為REX'欄位1310之第一部分,並為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而形成。
運算碼映射圖欄位1415(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含前導運算碼位元組(0F、0F 38、或0F 3)。
資料元素寬度欄位1364(EVEX位元組2,位元[7]-W)-係由記號EVEX.W代表。EVEX.W用以定義資料類型(32位元資料元素或64位元資料元素)之粒度(尺寸)。
EVEX.vvvv 1420(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼第一來源暫存器運算元,以倒置(1補數)形式指定,對於具2或更多來源運算元之指令有效;2)EVEX.vvvv編碼目的地暫存器運算元,以針對某些向量移位之1補數形式指定;或3)EVEX.vvvv未編碼任何運算元,欄位保留並應包含1111b。因而,EVEX.vvvv欄位1420編碼以倒置(1補數)形式儲存之第一來源暫存器區分符的4個低階位元。依據指令,額外不同EVEX位元欄位被用以延伸區分符尺寸至32暫存器。
EVEX.U 1368級別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,便表示A級或EVEX.U0;若EVEX.U=1,便表示B級或EVEX.U1。
前置編碼欄位1425(EVEX位元組2,位元[1:0]-pp)-提供基礎運算欄位之其餘位元。除了提供 EVEX前置格式中舊有SSE指令之支援外,其亦具有緊密SIMD前置之效益(而非需要位元組來表達SIMD前置,EVEX前置僅需要2位元)。在一實施例中,為支援舊有SSE指令,於舊有格式及EVEX前置格式中使用SIMD前置(66H,F2H,F3H),該些舊有SIMD前置被編碼於SIMD前置編碼欄位中;且在提供至解碼器之PLA之前,運行時間被延伸進入舊有SIMD前置(所以PLA可執行該些舊有指令之舊有及EVEX格式而不需修改)。儘管新指令可使用EVEX前置編碼欄位之內容,直接做為運算碼延伸,某些實施例為求一致而以類似方式延伸,但允許該些舊有SIMD前置指定不同意義。替代實施例可重新設計PLA來支援2位元SIMD前置編碼,因而不需要延伸。
甲種欄位1352(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α描繪)-如先前所描述,此欄位為特定上下文。
乙種欄位1354(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ描繪)-如先前所描述,此欄位為特定上下文。
REX'欄位1310-此為REX'欄位之其餘部分,為EVEX.V'位元欄位(EVEX位元組3,位元[3]-V'),可用以編碼延伸之32暫存器組的上16個或下16個。此位元係以位元倒置格式儲存。1之值用以編碼下16個暫存 器。換言之,V'VVVV係藉由組合EVEX.V'、EVEX.vvvv而形成。
寫入遮罩欄位1370(EVEX位元組3,位元[2:0]-kkk)-如先前所描述,其內容指定寫入遮罩暫存器中暫存器之索引。在本發明之一實施例中,特定值EVEX.kkk=000具有特定行為,暗示無寫入遮罩用於特定指令(其可以各種方式實施,包括使用固線式寫入遮罩至所有者或繞過遮罩硬體之硬體)。
實際運算碼欄位1430(位元組4)-其亦已知為運算碼位元組。部分運算碼於此欄位中指定。
MOD R/M欄位1440(位元組5)包括MOD欄位1442、暫存器指標欄位1444、及R/M欄位1446。如先前所描述,MOD欄位1442之內容於記憶體存取及非記憶體存取作業之間區別。暫存器指標欄位1444之角色可總結為二情況:編碼目的地暫存器運算元或來源暫存器運算元,或處理為運算碼延伸且未用以編碼任何指令運算元。R/M欄位1446之角色可包括下列:編碼參考記憶體位址之指令運算元,或編碼目的地暫存器運算元或來源暫存器運算元。
標度、索引、基底(SIB)位元組(位元組6)-如先前所描述,縮放欄位1360之內容用於記憶體位址產生。SIB.xxx 1454及SIB.bbb 1456-該些欄位的內容先前已關於暫存器索引Xxxx及Bbbb提及。
位移欄位1362A(位元組7-10)-當MOD欄 位1442包含10時,位元組7-10為位移欄位1362A,其工作與舊有32位元位移(disp32)相同,處理位元組粒度。
位移因數欄位1362B(位元組7)-當MOD欄位1442包含01時,位元組7為位移因數欄位1362B。此欄位之位置與舊有x86指令集8位元位移(disp8)相同,處理位元組粒度。由於disp8為符號延伸,可僅定址於-128及127位元組偏移之間;在64位元組快取線方面,disp8使用8位元,可設定為僅4個實際有用值-128、-64、0、及64;由於通常需較大範圍,使用disp32;然而,disp32需要4位元組。對比於disp8及disp32,位移因數欄位1362B為disp8之重新解譯;當使用位移因數欄位1362B時,實際位移係由位移因數欄位之內容乘以記憶體運算元存取(N)之尺寸而決定。此類型位移稱為disp8*N。此減少平均指令長度(單一位元組用於位移,但具有更大範圍)。該等壓縮位移係依據有效位移為記憶體存取之粒度的倍數,因此,位址偏移之冗餘低階位元不需編碼。換言之,位移因數欄位1362B取代舊有x86指令集8位元位移。因而,位移因數欄位1362B以與x86指令集8位元位移之相同方式編碼(所以ModRM/SIB編碼規則無改變),唯一的例外是disp8過載至disp8*N。換言之,編碼規則或編碼長度無改變,僅硬體之位移值解譯不同(其需標度記憶體運算元之尺寸位移,而獲得位元組位址偏移)。立即欄位1372操作如先前所描述。
全運算碼欄位
圖14B為方塊圖,描繪依據本發明之一實施例之特定向量親和指令格式1400的欄位,其組成全運算碼欄位1374。具體地,全運算碼欄位1374包括格式欄位1340、基礎運算欄位1342、及資料元素寬度(W)欄位1364。基礎運算欄位1342包括前置編碼欄位1425、運算碼映射圖欄位1415、及實際運算碼欄位1430。
暫存器索引欄位
圖14C為方塊圖,描繪依據本發明之一實施例之特定向量親和指令格式1400的欄位,其組成暫存器索引欄位1344。具體地,暫存器索引欄位1344包括REX欄位1405、REX'欄位1410、MODR/M.暫存器指標欄位1444、MODR/M.r/m欄位1446、VVVV欄位1420、xxx欄位1454、及bbb欄位1456。
增強運算欄位
圖14D為方塊圖,描繪依據本發明之一實施例之特定向量親和指令格式1400的欄位,其組成增強運算欄位1350。當級別(U)欄位1368包含0時,便表示EVEX.U0(A級1368A);當其包含1時,便表示EVEX.U1(B級1368B)。當U=0及MOD欄位1442包含11時(表示無記憶體存取作業),甲種欄位1352(EVEX 位元組3,位元[7]-EH)解譯為rs欄位1352A。當rs欄位1352A包含1時(捨入1352A.1),乙種欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為捨入控制欄位1354A。捨入控制欄位1354A包括一位元SAE欄位1356及二位元捨入運算欄位1358。當rs欄位1352A包含0時(資料變換1352A.2),乙種欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料變換欄位1354B。當U=0及MOD欄位1442包含00、01、或10時(表示記憶體存取作業),甲種欄位1352(EVEX位元組3,位元[7]-EH)解譯為逐出暗示(EH)欄位1352B,及乙種欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料操作欄位1354C。
當U=1時,甲種欄位1352(EVEX位元組3,位元[7]-EH)解譯為寫入遮罩控制(Z)欄位1352C。當U=1及MOD欄位1442包含11時(表示無記憶體存取作業),部分乙種欄位1354(EVEX位元組3,位元[4]-S 0 )解譯為RL欄位1357A;當其包含1時(捨入1357A.1),乙種欄位1354之其餘部分(EVEX位元組3,位元[6-5]-S 2-1 )解譯為捨入運算欄位1359A,同時當RL欄位1357A包含0時(向量長度1357.A2),乙種欄位1354之其餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為向量長度欄位1359B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位1442包含00、01、或10時(表示記憶體存取作業),乙種欄位1354(EVEX位元組3,位元[6:4]-SSS )解譯為向量長度欄位1359B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位1357B(EVEX位元組3,位元[4]-B)。
示例暫存器架構
圖15為依據本發明之一實施例之暫存器架構1500的方塊圖。在所描繪之實施例中,存在32向量暫存器1510,其為512位元寬;該些暫存器參照為zmm0至zmm31。下16 zmm暫存器之低階256位元重疊於暫存器ymm0-16上。下16 zmm暫存器之低階128位元(ymm暫存器之低階128位元)重疊於暫存器xmm0-15上。特定向量親和指令格式1400於該些重疊暫存器檔案上操作,如下表所描繪。
換言之,向量長度欄位1359B於最大長度及一或更多個其他較短長度之間選擇,其中每一較短長度為前述長度的一半長度;且無向量長度欄位1359B之指令模 板於最大向量長度上操作。此外,在一實施例中,特定向量親和指令格式1400之B級指令模板於封裝或純量單一/雙精度浮點資料及封裝或純量整數資料上運算。純量運算為在zmm/ymm/xmm暫存器中之最低階資料元素位置實施之運算;較高階資料元素位置與指令之前相同,或被歸零,取決於實施例。
寫入遮罩暫存器1515-在所描繪之實施例中,存在8個寫入遮罩暫存器(k0至k7),每一者尺寸64位元。在替代實施例中,寫入遮罩暫存器1515尺寸16位元。如先前所描述,在本發明之一實施例中,向量遮罩暫存器k0無法用做寫入遮罩;當正常表示k0之編碼用於寫入遮罩時,便選擇0xFFFF之固線式寫入遮罩,有效地禁用指令之寫入遮罩。
通用暫存器1525-在所描繪之實施例中,存在16個64位元通用暫存器,連同現有x86定址模式用以定址記憶體運算元。該些暫存器係以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15名稱參照。
純量浮點堆疊暫存器檔案(x87堆疊)1545,其上重疊MMX封裝整數平坦暫存器檔案1550-在所描繪之實施例中,x87堆疊為8元素堆疊,用以使用x87指令集延伸在32/64/80位元浮點資料上實施純量浮點運算;同時MMX暫存器用以在64位元封裝整數資料上實施運算,並保持運算元於MMX及XMM暫存器之間實施若干 運算。
本發明之替代實施例可使用較寬或較窄暫存器。此外,本發明之替代實施例可使用更多、更少、或不同暫存器檔案及暫存器。
示例核心架構、處理器、及電腦架構
處理器核心可以不同方式,針對不同目的,而以不同處理器實施。例如,該等核心之實施可包括:1)通用循序核心,希望用於通用運算;2)高相能通用亂序核心,希望用於通用運算;3)專用核心,希望主要用於圖形及/或科學(傳輸量)運算。不同處理器之實施可包括:1)包括一或更多通用循序核心之CPU,希望用於通用運算,及/或一或更多通用亂序核心,希望用於通用運算;及2)包括一或更多專用核心之協處理器,希望主要用於圖形及/或科學(傳輸量)運算。該等不同處理器導致不同電腦系統架構,其可包括:1)來自CPU之個別晶片上之協處理器;2)做為CPU之相同封裝中個別晶粒上之協處理器;3)做為CPU之相同晶粒上之協處理器(在此狀況下,該協處理器有時稱為專用邏輯,諸如整合圖形及/或科學(傳輸量)邏輯,或專用核心);及4)系統晶片,其可包括所描述CPU之相同晶粒上系統(有時稱為應用核心或應用處理器),上述協處理器,及其餘功能性。接著描述示例核心架構,其後描述示例處理器及電腦架構。
示例核心架構 循序及亂序核心方塊圖
圖16A為方塊圖,描繪依據本發明之實施例之示例循序管線及示例暫存器更名、亂序發送/執行管線。圖16B為方塊圖,描繪依據本發明之實施例之循序架構核心的示例實施例,及處理器中所包括之示例暫存器更名、亂序發送/執行架構核心。圖16A-B中實線框描繪循序管線及循序核心,同時虛線框之可選附加描繪暫存器更名、亂序發送/執行管線及核心。假定循序方面為亂序方面之子集,則將描述亂序方面。
在圖16A中,處理器管線1600包括提取級1602、長度解碼級1604、解碼級1606、配置級1608、更名級1610、排程(亦已知為調度或發送)級1612、暫存器讀取/記憶體讀取級1614、執行級1616、寫回/記憶體寫入級1618、異常處置級1622、及確定級1624。
圖16B顯示包括耦接至執行引擎單元1650之前端單元1630的處理器核心1690,二者均耦接至記憶體單元1670。核心1690可為精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。關於另一選項,核心1690可為專用核心,諸如網路或通訊核心、壓縮引擎、協處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心等。
前端單元1630包括分支預測單元1632,其耦接至指令快取記憶體單元1634,其耦接至指令翻譯後備緩衝器(TLB)1636,其耦接至指令提取單元1638,其耦接至解碼單元1640。解碼單元1640(或解碼器)可解碼指令,及產生一或更多個微運算、微碼登錄點、微指令、其他指令、或其他控制信號做為輸出,其係解碼自、或反映、或源自原始指令。解碼單元1640可使用各式不同機構實施。適當機構之範例包括但不侷限於查找表、硬體實施、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1690包括微碼ROM或儲存微碼用於某些巨集指令(例如解碼單元1640中或前端單元1630內)的其他媒體。解碼單元1640耦接至執行引擎單元1650中之更名/配置器單元1652。
執行引擎單元1650包括更名/配置器單元1652,其耦接至止用單元1654及一組一或更多個排程器單元1656。排程器單元1656代表任何數量不同排程器,包括保留站、中央指令視窗等。排程器單元1656耦接至實體暫存器檔案單元1658。每一實體暫存器檔案單元1658代表一或更多個實體暫存器檔案,不同者儲存一或更多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點狀態(例如指令指標,其係將執行下一指令的位址)等。在一實施例中,實體暫存器檔案單元1658包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。該些暫存器單元可提供 架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1658與止用單元1654重疊,以描繪其中可實施暫存器更名及亂序執行之各種方式(例如使用重排序緩衝器及止用暫存器檔案;使用未來檔案、歷史緩衝器、及止用暫存器檔案;使用暫存器映射圖及暫存器集區等)。止用單元1654及實體暫存器檔案單元1658耦接至執行叢集1660。執行叢集1660包括一組一或更多個執行單元1662及一組一或更多個記憶體存取單元1664。執行單元1662可於各式資料類型(例如純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)實施各式作業(例如移位、加法、減法、乘法)。雖然若干實施例可包括專用於特定功能或功能組之若干執行單元,其他實施例可僅包括一執行單元或均實施所有功能的多個執行單元。排程器單元1656、實體暫存器檔案單元1658、及執行叢集1660可能顯示為複數,因為某些實施例創造用於某些資料/作業類型之個別管線(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,各具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集,且在個別記憶體存取管線之狀況下,實施某些實施例其中謹此管線之執行叢集具有記憶體存取單元1664)。亦將理解的是,使用個別管線處,一或更多個該些管線可為亂序發送/執行,其餘則為循序。
記憶體存取單元1664組耦接至記憶體單元 1670,其包括資料TLB單元1672,耦接至資料快取記憶體單元1674,耦接至2級(L2)快取記憶體單元1676。在一示例實施例中,記憶體存取單元1664可包括負載單元、儲存位址單元、及儲存資料單元,每一者耦接至記憶體單元1670中之資料TLB單元1672。指令快取記憶體單元1634進一步耦接至記憶體單元1670中之2級(L2)快取記憶體單元1676。L2快取記憶體單元1676耦接至一或更多個其他級快取記憶體,最終至主記憶體。
例如,示例暫存器更名、亂序發送/執行核心架構可實施管線1600如下:1)指令提取1638實施提取及長度解碼級1602及1604;2)解碼單元1640實施解碼級1606;3)更名/配置器單元1652實施配置級1608及更名級1610;4)排程器單元1656實施排程級1612;5)實體暫存器檔案單元1658及記憶體單元1670實施暫存器讀取/記憶體讀取級1614;執行叢集1660實施執行級1616;6)記憶體單元1670及實體暫存器檔案單元1658實施寫回/記憶體寫入級1618;7)各式單元可包含於異常處置級1622中;及8)止用單元1654及實體暫存器檔案單元1658實施確定級1624。
核心1690可支援一或更多指令集(例如x86指令集(具已附加較新版本之若干延伸);加州桑尼維爾MIPS科技公司之MIPS指令集;加州桑尼維爾ARM國際科技之ARM指令集(具可選附加延伸,諸如NEON)),包括文中所描述之指令。在一實施例中,核 心1690包括邏輯以支援封裝資料指令集延伸(例如AVX1、AVX2),藉以允許使用封裝資料實施由許多多媒體應用使用之作業。
應理解的是,核心可支援多執行緒處理(執行二或更多平行作業或執行緒組),並可以各種方式進行,包括時間切割多執行緒處理、同步多執行緒處理(其中單一實體核心提供邏輯核心,用於實體核心同步多執行緒處理之每一執行緒)、或其組合(例如時間切割提取及解碼及其後同步多執行緒處理,諸如Intel®超執行緒處理技術)。
雖然於亂序執行之上下文中描述暫存器更名,應理解的是暫存器更名可用於循序架構中。雖然描繪之處理器實施例亦包括個別指令及資料快取記憶體單元1634/1674,及共用L2快取記憶體單元1676,替代實施例可具有用於指令及資料二者之單一內部快取記憶體,諸如1級(L1)內部快取記憶體,或多級內部快取記憶體。在若干實施例中,系統可包括內部快取記憶體及核心及/或處理器外部之外部快取記憶體的組合。另一方面,所有快取記憶體可為核心及/或處理器外部。
特定示例循序核心架構
圖17A-B描繪更特定示例循序核心架構之方塊圖,其核心將為晶片中若干邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊經由高頻寬互 連網路(例如環形網路)而與若干固定功能邏輯、記憶體I/O介面、及其他必需I/O邏輯通訊,取決於應用。
圖17A為依據本發明之實施例之單一處理器核心連同其至晶粒上互連網路1702之連接的方塊圖,具有2級(L2)快取記憶體1704之其局部子集。在一實施例中,指令解碼器1700支援具封裝資料指令集延伸之x86指令集。L1快取記憶體1706允許針對快取記憶體記憶體之低延遲存取進入純量及向量單元。雖然在一實施例中(為簡化設計),純量單元1708及向量單元1710使用個別暫存器組(分別為純量暫存器1712及向量暫存器1714),並將其間轉移之資料寫入至記憶體,接著從1級(L1)快取記憶體1706讀回,本發明之替代實施例可使用不同途徑(例如使用單一暫存器組或包括允許於二暫存器檔案之間轉移資料之通訊路徑,而無寫入及讀回)。
L2快取記憶體1704之局部子集為整體L2快取記憶體之一部分,其劃分為個別局部子集,每一處理器核心一個子集。每一處理器核心具有至其L2快取記憶體1704之本身局部子集的直接存取路徑。由處理器核心讀取之資料係儲存於其L2快取記憶體子集1704中,並可與存取其本身局部L2快取記憶體子集之其他處理器核心平行地快速存取。由處理器核心寫入之資料係儲存於其本身L2快取記憶體子集1704中,並視需要從其他子集清除。環形網路確保共用資料之相關性。環形網路為雙向,允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理 器於晶片內相互通訊。每一環形資料路徑為每一方向1012位元寬。
圖17B為依據本發明之實施例之圖17A中部分處理器核心之展開圖。圖17B包括L1資料快取記憶體1706A、部分L1快取記憶體1706,更詳細地關於向量單元1710及向量暫存器1714。具體地,向量單元1710為16寬向量處理單元(VPU)(詳16寬ALU 1728),其執行一或更多個整數、單一精度浮點、及雙精度浮點指令。VPU支援暫存器輸入與拌和單元1720拌和,與數字轉換單元1722A-B數字轉換,與複製單元1724複製記憶體輸入。寫入遮罩暫存器1726允許斷定結果向量寫入。
圖18為依據本發明之實施例之處理器1800的方塊圖,其可具有一個以上核心,可具有整合記憶體控制器,及可具有整合圖形。圖18中實線框描繪處理器1800,具有單一核心1802A、系統代理器1810、一組一或更多個匯流排控制器單元1816,同時可選附加虛線框描繪替代處理器1800,具有多核心1802A-N、系統代理器單元1810中之一組一或更多個整合記憶體控制器單元1814、及專用邏輯1808。
因而,處理器1800之不同實施可包括:1)具有整合圖形及/或科學(產量)邏輯之專用邏輯1808的CPU(其可包括一或更多個核心),且核心1802A-N為一或更多個通用核心(例如通用循序核心、通用亂序核心、二者之組合);2)具有希望主要用於圖形及/或科 學(產量)之大量專用核心之核心1802A-N的協處理器;及3)具有大量通用循序核心之核心1802A-N的協處理器。因而,處理器1800可為通用處理器、協處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多整合核心(MIC)協處理器(包括30或更多核心)、嵌入處理器等。處理器可於一或更多個晶片上實施。處理器1800可為使用任何數量處理技術之一或更多個基板的一部分,及/或可於該些基板上實施,諸如BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或更多級快取記憶體、一組或一或更多個共用快取記憶體單元1806、及耦接至整合記憶體控制器單元1814組之外部記憶體(未顯示)。共用快取記憶體單元1806組可包括一或更多個中級快取記憶體,諸如2級(L2)、3級(L3)、4級(L4)、或其他級快取記憶體、最後級快取記憶體(LLC)、及/或其組合。雖然在一實施例中,環形互連單元1812互連整合圖形邏輯1808、共用快取記憶體單元1806組、及系統代理器單元1810/整合記憶體控制器單元1814,替代實施例可使用任何數量熟知技術用於互連該等單元。在一實施例中,維持一或更多個快取記憶體單元1806及核心1802A-N間之相關性。
在若干實施例中,一或更多個核心1802A-N可多執行緒處理。系統代理器1810包括組件協調及作業 核心1802A-N。系統代理器單元1810可包括例如功率控制單元(PCU)及顯示單元。PCU可為或包括調節核心1802A-N及整合圖形邏輯1808之功率狀態所需的邏輯及組件。顯示單元用於驅動一或更多個外部連接之顯示器。
在架構指令集方面,核心1802A-N可為同質或異質;即,二或更多個核心1802A-N可執行相同指令集,同時其他則僅可執行指令集之子集或不同指令集。
示例電腦架構
圖19-22為示例電腦架構之方塊圖。其他用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式其他電子裝置之本技藝中的已知其他系統設計及組態亦為適當。通常,如文中所揭露之可結合處理器及/或其他執行邏輯的各式系統或電子裝置一般均適當。
現在回至圖19,顯示依據本發明之一實施例之系統1900的方塊圖。系統1900可包括一或更多個處理器1910、1915,其耦接至控制器集線器1920。在一實施例中,控制器集線器1920包括圖形記憶體控制器集線器(GMCH)1990及輸入/輸出集線器(IOH)1950(其可在個別晶片上);GMCH 1990包括耦接至記憶體1940及 協處理器1945之記憶體及圖形控制器;IOH 1950將輸入/輸出(I/O)裝置1960耦接至GMCH 1990。另一方面,記憶體及圖形控制器之一者或二者整合於處理器內(如文中所描述),記憶體1940及協處理器1945以IOH 1950直接耦接至處理器1910及單一晶片中之控制器集線器1920。
圖19中以虛線標示其餘處理器1915之可選擇性。每一處理器1910、1915可包括文中所描述之一或更多個處理核心,並可為處理器1800之若干版本。
記憶體1940可為例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或二者組合。對至少一實施例而言,控制器集線器1920經由諸如前側匯流排(FSB)之多落點匯流排、諸如快速路徑互連(QPI)之點對點介面、或類似連接1995,而與處理器1910、1915通訊。
在一實施例中,協處理器1945為專用處理器,諸如高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。在一實施例中,控制器集線器1920可包括整合圖形加速器。
在優點之量度範圍方面,實體資源1910、1915之間存在各種差異,包括架構、微架構、熱、電力損耗特性等。
在一實施例中,處理器1910執行指令,其控制一般類型之資料處理作業。協處理器指令可嵌入指令 內。處理器1910識別該些協處理器指令為應由附加協處理器1945執行之類型。因此,處理器1910於協處理器匯流排或其他互連上將該些協處理器指令(或代表協處理器指令之控制信號)發送至協處理器1945。協處理器1945接受及執行所接收之協處理器指令。
現在回至圖20,顯示依據本發明之實施例之第一特定示例系統2000的方塊圖。如圖20中所示,多處理器系統2000為點對點互連系統,包括經由點對點互連2050耦接之第一處理器2070及第二處理器2080。每一處理器2070及2080可為處理器1800之若干版本。在本發明之一實施例中,處理器2070及2080分別為處理器1910及1915,同時協處理器2038為協處理器1945。在另一實施例中,處理器2070及2080分別為處理器1910及協處理器1945。
所示處理器2070及2080分別包括整合記憶體控制器(IMC)單元2072及2082。處理器2070亦包括其匯流排控制器單元點對點(P-P)介面2076及2078之一部分;類似地,第二處理器2080包括P-P介面2086及2088。處理器2070、2080可經由使用P-P介面電路2078、2088之點對點(P-P)介面2050而交換資訊。如圖20中所示,IMC 2072及2082耦接處理器至個別記憶體,即記憶體2032及記憶體2034,其可為局部附加至個別處理器之主記憶體的一部分。
每一處理器2070、2080可經由使用點對點介 面電路2076、2094、2086、2098之個別P-P介面2052、2054,而與晶片組2090交換資訊。晶片組2090可選地經由高性能介面2039而與協處理器2038交換資訊。在一實施例中,協處理器2038為專用處理器,諸如高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器等。
共用快取記憶體(未顯示)可包括於任一處理器中或二處理器外部,但經由P-P互連與處理器連接,使得若處理器處於低功率模式,則任一處理器或二處理器之局部快取記憶體資訊可儲存於共用快取記憶體中。
晶片組2090可經由介面2096而耦接至第一匯流排2016。在一實施例中,第一匯流排2016可為週邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範圍未如此限制。
如圖20中所示,各式I/O裝置2014可耦接至第一匯流排2016,連同匯流排橋接器2018,其將第一匯流排2016耦接至第二匯流排2020。在一實施例中,一或更多個其餘處理器2015耦接至第一匯流排2016,諸如協處理器、高產量MIC處理器、GPGPU、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、場可程控閘陣列、或任何其他處理器。在一實施例中,第二匯流排2020可為低管腳數(LPC)匯流排。在一實施例中,各式裝置可耦接至第二匯流排2020,包括例如鍵盤及/或滑 鼠2022、通訊裝置2027及儲存單元2028,諸如可包括指令/碼及資料2030之磁碟機或其他大量儲存裝置。此外,音頻I/O 2024可耦接至第二匯流排2020。請注意,其他架構亦可。例如,取代圖20之點對點架構,系統可實施多落點匯流排或其他該等架構。
現在回至圖21,顯示依據本發明之實施例之第二特定示例系統2100的方塊圖。圖20及21中類似元素配賦相似代號,且圖21已省略圖20之某些方面,以避免混淆圖21之其他方面。
圖21描繪處理器2070、2080可分別包括整合記憶體及I/O控制邏輯(「CL」)2072及2082。因而,CL 2072、2082包括整合記憶體控制器單元,及包括I/O控制邏輯。圖21描繪不僅記憶體2032、2034耦接至CL 2072、2082,I/O裝置2114亦耦接至控制邏輯2072、2082。舊有I/O裝置2115耦接至晶片組2090。
現在回至圖22,顯示依據本發明之實施例之SoC 2200的方塊圖。圖18中類似元素配賦相似代號。而且,虛線框為更先進SoC上之可選部件。在圖22中,互連單元2202耦接至:應用處理器2210,其包括一組一或更多個核心1802A-N及共用快取記憶體單元1806;系統代理器單元1810;匯流排控制器單元1816;整合記憶體控制器單元1814;一組或一或更多個協處理器2220,其可包括整合圖形邏輯、圖像處理器、音頻處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元2230;直接 記憶體存取(DMA)單元2232;及顯示單元2240,用於耦接至一或更多個外部顯示器。在一實施例中,協處理器2220包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入處理器等。
文中所揭露之機構的實施例可以硬體、軟體、韌體、或該等實施途徑之組合實施。本發明之實施例可實施為電腦程式或程式碼,其係於包含至少一處理器之可程控系統上執行;儲存系統(包括揮發及非揮發記憶體及/或儲存元素);至少一輸入裝置;及至少一輸出裝置。
諸如圖20中所描繪之碼2030的程式碼,可施加於輸入指令,而實施文中所描述之功能並產生輸出資訊。輸出資訊可以已知方式施加於一或更多個輸出裝置。為此應用,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器。
程式碼可以高階程序或物件導向編程語言實施,而與處理系統通訊。若需要,程式碼亦可以組合或機器語言實施。事實上,文中所描述之機構不侷限於任何特定編程語言之範圍。在任何狀況下,語言可為編譯或解譯語言。
至少一實施例之一或更多個方面可由儲存於機器可讀取媒體上之代表指令實施,其代表處理器內之各式邏輯,當機器讀取指令時,致使機器製造邏輯而實施文 中所描述之技術。該等代表,已知為「IP核心」,可儲存於實體機器可讀取媒體上,並支援各式用戶或製造廠,載入實際製造邏輯或處理器之製造機器。
該等機器可讀取儲存媒體可包括但不侷限於由機器或裝置製造或形成之物件的非暫態實體配置,包括儲存媒體,諸如硬碟;任何其他類型碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可複寫光碟(CD-RW)、及磁性光碟;半導體裝置,諸如唯讀記憶體(ROM);隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM);可抹除可程控唯讀記憶體(EPROM);快閃記憶體;電可抹除可程控唯讀記憶體(EEPROM);相變記憶體(PCM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,本發明之實施例亦包括非暫態實體機器可讀取媒體,包含指令或包含設計資料,諸如硬體描述語言(HDL),其定義文中所描述之結構、電路、設備、處理器及/或系統部件。該等實施例亦可稱為程式產品。
仿真(包括二元翻譯、碼漸變等)
在若干狀況下,指令轉換器可用以將指令從來源指令集轉換至目標指令集。例如,指令轉換器可翻譯(例如使用靜態二元翻譯、包括動態編譯之動態二元翻譯)、轉譯、仿真、或轉換指令為將由核心處理之一或更 多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合實施。指令轉換器可在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖23為方塊圖,對比於依據本發明之實施例之使用軟體指令轉換器,將來源指令集中之二元指令轉換為目標指令集中之二元指令。在描繪之實施例中,指令轉換器為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或其各式組合實施。圖23顯示高階語言2302之程式,可使用x86編譯器2304編譯,而產生x86二元碼2306,其可由具至少一x86指令集核心2316之處理器本機執行。具有至少一x86指令集核心2316之處理器代表任何處理器,其可藉由相容地執行或處理(1)Intel x86指令集核心之指令集的實質部分,或(2)目標在具有至少一x86指令集核心之Intel處理器運行之應用或其他軟體的物件碼版本,以便實質上達成與具有至少一x86指令集核心之Intel處理器的相同結果,而實質上實施與具有至少一x86指令集核心之Intel處理器的相同功能。x86編譯器2304代表編譯器,可操作以產生x86二元碼2306(例如物件碼),具或不具其餘鏈接處理,而在具有至少一x86指令集核心2316之處理器上執行。類似地,圖23顯示高階語言2302之程式,可使用替代指令集編譯器2308編譯,而產生可由不具有至少一x86指令集核心2314之處理器(例如具有執行加州桑尼維爾MIPS科技公司之MIPS指令集及/或執行加州桑尼維爾 ARM國際科技之ARM指令集之核心的處理器)本機執行之替代指令集二元碼2310。指令轉換器2312用以將x86二元碼2306轉換為可由不具x86指令集核心2314之處理器本機執行的碼。此轉換碼幾乎不可能與替代指令集二元碼2310相同,因為此指令轉換器難以製造;然而,轉換碼將完成一般作業,並由來自替代指令集之指令組成。因而,指令轉換器2312代表軟體、韌體、硬體、或其組合,經由仿真、模擬或任何其他處理,而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二元碼2306。
101‧‧‧解碼電路
103‧‧‧排程電路
105‧‧‧暫存器
107‧‧‧記憶體
109‧‧‧執行電路
111‧‧‧止用電路

Claims (20)

  1. 一種裝置,包含:解碼器,用以解碼指令,其中,該指令包括第一來源運算元、第二來源運算元、及目的地運算元之欄位;以及執行電路,用以執行該解碼之指令,而從該第一來源運算元及該第二來源運算元之偶數資料元素位置提取資料元素,並將該提取之資料元素儲存於該目的地運算元中。
  2. 如申請專利範圍第1項之裝置,其中,該來源運算元為封裝資料暫存器。
  3. 如申請專利範圍第1項之裝置,其中,該執行電路並聯提取偶數資料元素。
  4. 如申請專利範圍第1項之裝置,其中,該執行電路串聯提取偶數資料元素。
  5. 如申請專利範圍第1項之裝置,其中,該指令指出該資料元素之尺寸。
  6. 如申請專利範圍第1項之裝置,其中,該第一來源運算元為暫存器,及該第二來源為記憶體位置。
  7. 如申請專利範圍第1項之裝置,其中,從該第一來源運算元提取之該資料元素係儲存於該目的地運算元之該低資料元素位置。
  8. 一種方法,包含:解碼指令,其中,該指令包括第一來源運算元、第二來源運算元、及目的地運算元之欄位;以及執行該解碼之指令,而從該第一來源運算元及該第二 來源運算元之偶數資料元素位置提取資料元素,並將該提取之資料元素儲存於該目的地運算元中。
  9. 如申請專利範圍第8項之方法,其中,該來源運算元為封裝資料暫存器。
  10. 如申請專利範圍第8項之方法,其中,該提取偶數資料元素係並聯實施。
  11. 如申請專利範圍第8項之方法,其中,該提取偶數資料元素係串聯實施。
  12. 如申請專利範圍第8項之方法,其中,該指令指出該資料元素之尺寸。
  13. 如申請專利範圍第8項之方法,其中,該第一來源運算元為暫存器,及該第二來源為記憶體位置。
  14. 如申請專利範圍第8項之方法,其中,從該第一來源運算元提取之該資料元素係儲存於該目的地運算元之該低資料元素位置。
  15. 一種儲存指令之機器可讀取媒體,當指令由硬體處理器執行時,致使該處理器實施一種方法,包含:解碼指令,其中,該指令包括第一來源運算元、第二來源運算元、及目的地運算元之欄位;以及執行該解碼之指令,而從該第一來源運算元及該第二來源運算元之偶數資料元素位置提取資料元素,並將該提取之資料元素儲存於該目的地運算元中。
  16. 如申請專利範圍第15項之機器可讀取媒體,其中,該來源運算元為封裝資料暫存器。
  17. 如申請專利範圍第15項之機器可讀取媒體,其中,該提取偶數資料元素係並聯實施。
  18. 如申請專利範圍第15項之機器可讀取媒體,其中,該提取偶數資料元素係串聯實施。
  19. 如申請專利範圍第15項之機器可讀取媒體,其中,該第一來源運算元為暫存器,及該第二來源為記憶體位置。
  20. 如申請專利範圍第15項之機器可讀取媒體,其中,從該第一來源運算元提取之該資料元素係儲存於該目的地運算元之該低資料元素位置。
TW105139278A 2015-12-30 2016-11-29 用於獲得偶數和奇數資料元素的系統、裝置及方法 TWI733718B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/984,078 2015-12-30
US14/984,078 US20170192780A1 (en) 2015-12-30 2015-12-30 Systems, Apparatuses, and Methods for Getting Even and Odd Data Elements

Publications (2)

Publication Number Publication Date
TW201732571A true TW201732571A (zh) 2017-09-16
TWI733718B TWI733718B (zh) 2021-07-21

Family

ID=59225952

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105139278A TWI733718B (zh) 2015-12-30 2016-11-29 用於獲得偶數和奇數資料元素的系統、裝置及方法

Country Status (5)

Country Link
US (1) US20170192780A1 (zh)
EP (1) EP3398054A1 (zh)
CN (1) CN108292223A (zh)
TW (1) TWI733718B (zh)
WO (1) WO2017117387A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US11449336B2 (en) * 2019-05-24 2022-09-20 Texas Instmments Incorporated Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof
CN113326066B (zh) * 2021-04-13 2022-07-12 腾讯科技(深圳)有限公司 量子控制微体系结构、量子控制处理器及指令执行方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9509987D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6233671B1 (en) * 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
US7353244B2 (en) * 2004-04-16 2008-04-01 Marvell International Ltd. Dual-multiply-accumulator operation optimized for even and odd multisample calculations
US7146443B2 (en) * 2004-12-23 2006-12-05 Advanced Analogic Technologies, Inc. Instruction encoding method for single wire serial communications
US7669034B2 (en) * 2005-10-25 2010-02-23 Freescale Semiconductor, Inc. System and method for memory array access with fast address decoder
WO2013077884A1 (en) * 2011-11-25 2013-05-30 Intel Corporation Instruction and logic to provide conversions between a mask register and a general purpose register or memory
US9218182B2 (en) * 2012-06-29 2015-12-22 Intel Corporation Systems, apparatuses, and methods for performing a shuffle and operation (shuffle-op)
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor

Also Published As

Publication number Publication date
WO2017117387A1 (en) 2017-07-06
CN108292223A (zh) 2018-07-17
EP3398054A1 (en) 2018-11-07
US20170192780A1 (en) 2017-07-06
TWI733718B (zh) 2021-07-21

Similar Documents

Publication Publication Date Title
CN109791488B (zh) 用于执行用于复数的融合乘-加指令的系统和方法
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI514268B (zh) 合併遮罩圖案之指令
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI552072B (zh) 執行置換運算的處理器及具有該處理器的電腦系統
TWI525538B (zh) 超級乘加(super madd)指令技術
TWI637276B (zh) 執行向量位元混洗的方法與裝置
TWI610228B (zh) 用於執行向量位元反轉和交叉的方法和設備
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TW201732570A (zh) 用於聚合集中及跨步的系統、裝置及方法
TW202326409A (zh) 用於融合乘加運算的系統、裝置及方法
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TW201636827A (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TW201346726A (zh) 用以執行絕對差之雙塊總數之系統,裝置及方法
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
TW201730748A (zh) 用於跨距存取的系統、裝置及方法
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統
TW201732553A (zh) 用於保留位元的強制執行的裝置及方法
CN109643235B (zh) 用于多源混合操作的装置、方法和系统
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TW201349106A (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
TW201810020A (zh) 用於累乘的系統、設備及方法
TW201643696A (zh) 用於熔合累加指令的設備和方法
TW201643708A (zh) 用於壓縮遮罩值的方法及裝置

Legal Events

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