TW201339962A - 浮點捨入處理器 - Google Patents

浮點捨入處理器 Download PDF

Info

Publication number
TW201339962A
TW201339962A TW101146194A TW101146194A TW201339962A TW 201339962 A TW201339962 A TW 201339962A TW 101146194 A TW101146194 A TW 101146194A TW 101146194 A TW101146194 A TW 101146194A TW 201339962 A TW201339962 A TW 201339962A
Authority
TW
Taiwan
Prior art keywords
floating point
instruction
rounding
result
point data
Prior art date
Application number
TW101146194A
Other languages
English (en)
Other versions
TWI544406B (zh
Inventor
Adrian Jesus Corbal San
Cristina S Anderson
Robert Valentine
Bret Toll
Amit Gradstein
Simon Rubanovich
Benny Eitan
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201339962A publication Critical patent/TW201339962A/zh
Application granted granted Critical
Publication of TWI544406B publication Critical patent/TWI544406B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

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

Abstract

本發明之方面的方法包括接收浮點捨入指令。該浮點捨入指令指出一或多個浮點資料元件之來源,指出小數點後之小數位元數量,該一或多個浮點資料元件之每一者將被捨入,及指出目的地儲存位置。回應於該浮點捨入指令而將結果儲存於該目的地儲存位置中。該結果包括一或多個捨入之結果浮點資料元件。該一或多個捨入之結果浮點資料元件之每一者包括在已捨入至該指出之小數位元數量,該數量相應位置中該來源之該浮點資料元件之一。揭露其他方法、設備、系統及指令。

Description

浮點捨入處理器
實施例關於處理器。尤其,實施例關於捨入回應於浮點捨入指令之浮點數字的處理器。
浮點數字通常用於處理器、電腦系統、及其他電子裝置。浮點數字之一優點為允許廣泛的數值以相對緊湊數字格式及/或位元數量表示。
若干不同浮點格式在本技藝中為已知。浮點格式典型地將用以表示浮點數字之位元分攤為若干組成字段,已知為浮點數字之符號、有效位數、及指數。
本技藝中各式指令已知用於處理浮點數字。例如,指令已知用於在浮點及整數格式之間轉換。有關另一範例,指令已知用於捨入純量或分別以單一或雙精度浮點格式來封裝單一或雙精度浮點資料元件為整數。
文中揭露浮點捨入指令、執行浮點捨入指令之處理器、當處理或執行浮點捨入指令時藉由處理器實施之方法、以及併入一或多個處理器以處理或執行浮點捨入指令之系統。文中所揭露之各式處理器及系統是適當的。在下列說明中,提出許多特定細節(例如特定處理器組態、一連串運算、指令格式、浮點格式、微架構細節等)。然而,可無該些特定細節而實現實施 例。在其他狀況下,未詳細顯示熟知電路、結構及技術以不混淆此說明之理解。
圖1為具有包括一或多個浮點捨入指令103之指令集102的處理器100之實施例之方塊圖。處理器可為各式複雜指令集計算(CISC)處理器、各式減少指令集計算(RISC)處理器、各式極長指令字(VLIW)處理器、其各式混合物、或完全其他類型處理器之任一者。在若干實施例中,處理器可為通用處理器(例如用於桌上型、膝上型等電腦之通用微處理器)。另一方面,處理器可為專用處理器。適當專用處理器之範例包括但不侷限於網路處理器、通訊處理器、加密處理器、圖形處理器、協處理器、嵌入處理器、數位信號處理器(DSP)、浮點協處理器、及控制器(例如微控制器),僅舉幾個例子。
處理器具有指令集架構(ISA)101。ISA代表關於編程之處理器的一部分架構。ISA通常包括本機指令、架構暫存器、資料類型、定址模式、記憶體架構、中斷及例外處理、及處理器之外部輸入及輸出(I/O)。ISA與微架構有所區別,其一般代表特別處理器設計技術,經選擇以實施ISA。具不同微架構之處理器可共用共同ISA。
ISA包括藉由處理器支援之指令集102。指令集之指令代表巨集指令(例如提供至處理器執行之指令),相對於微指令或微運算(例如來自處理器之解碼器解碼巨集指令的結果)。指令集包括一或多個浮點捨入指令103。在若干實施例中,浮點捨入指令可操作以致使處理器將浮點數字之有效位數捨入至指出之小數位元數量。以下將進一步揭露浮點捨入指令之各式不同 實施例。處理器亦包括浮點執行邏輯108可操作以執行或處理浮點捨入指令103。
ISA亦包括架構上可見之暫存器(例如架構暫存器檔案)104。架構暫存器通常表示晶粒上處理器儲存位置。架構暫存器文中亦簡單稱為暫存器。除非另有規定或明顯地表現出來,文中使用之架構暫存器、暫存器檔案、及暫存器用語係用以指可見於軟體及/或程式設計師(例如軟體可見)之暫存器及/或藉由通用巨集指令指定以識別運算元之暫存器。該些暫存器對比於特定微架構(例如藉由指令使用之暫時暫存器、重排緩衝器、退役暫存器等)中其他非架構或非架構上可見之暫存器。
所描繪之架構暫存器包括封裝資料暫存器105。封裝資料暫存器之每一者可操作以儲存封裝資料、向量資料、或SIMD資料。在若干實施例中,封裝資料暫存器可用以儲存與浮點捨入指令103相關之封裝浮點資料。在若干實施例中,封裝資料暫存器可用以儲存與浮點捨入指令相關之純量浮點資料。在若干實施例中,封裝資料暫存器亦可選擇地儲存整數資料,儘管此非必要的。另一方面,架構暫存器可包括個別純量浮點暫存器組以分別儲存用於浮點捨入指令之純量浮點資料。
在若干實施例中,暫存器可選擇地包括遮罩暫存器106,儘管此非必要的。遮罩暫存器可儲存封裝資料運算遮罩以遮罩或斷定封裝資料運算(例如與浮點捨入指令相關之封裝資料浮點捨入運算)。以下將進一步討論遮罩暫存器及屏蔽運算。
暫存器亦包括控制及/或狀態暫存器107。在若干方面,一或多個控制及/或狀態暫存器可包括與浮點捨入指令之執行相 關之狀態及/或控制資訊(例如,除非存在藉由指令提供之置換,其可包括藉由浮點捨入指令使用之預設捨入模式)。
浮點數字包括符號、有效位數、基、及指數,其關係如方程式1中所示:A=(-1)符號*有效位數*基指數 方程式1
表達(-1)符號表示負一提昇至符號之冪次。此表達評估浮點數字為正(+)或負(-)。例如,當符號為整數零時,浮點數字為正,或另一方面當符號為整數一時,浮點數字為負。有效位數包括很大程度上決定浮點數字之精度的長度之數字串。有效位數有時亦稱為有效位元、係數、小數、或尾數。小數點(例如,十進制格式之十進制點或二進制格式之二進制點)通常隱含地假定駐於固定位置(例如,在最左邊或有效位數之最高有效位元的右側,其在若干狀況下可暗示如以下所討論)。二進制之示範有效位數可為「1.10010010000111111011011」。至小數點右側之有效位數的數字(例如「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為指令處理設備300之實施例之方塊圖,指令處理設備300具有浮點執行單元316可操作以執行包括浮點捨入指令303之實施例的指令。在若干實施例中,指令處理設備可為處理器及/或可包括於處理器中。例如,在若干實施例中,指令處理設備可為或可包括於圖1之處理器100或類似者中。另一方面,指令處理設備可包括於不同處理器中或電子系統中。在若干實施例中,指令處理設備可包括於附加或個別浮點處理器或單元中,以導入或補充相關處理器之浮點處理能力。
指令處理設備300可接收浮點捨入指令303。例如,指令可從指令提取單元、指令佇列、或記憶體接收。浮點捨入指令可表示機器指令、巨集指令、或藉由指令處理設備識別並控制設備以實施特別運算之控制信號。
浮點捨入指令可明確指明(例如經由位元或一或多個欄 位)或指出(例如隱含地指出)來源320。來源包括一或多個浮點資料元件321。在若干實施例中,浮點捨入指令可明確指明(例如經由位元或一或多個欄位)或指出(例如隱含地指出)將捨入之來源320之一或多個浮點資料元件321之每一者的小數點(例如二進制點、十進制點、或十六進制點)後小數位元數量。指令亦可指明或指出目的地322(例如目的地儲存位置),在此依據指令而儲存包括一或多個捨入之浮點結果資料元件的結果324。
在若干實施例中,來源320及目的地322各可位於指令處理設備之一組封裝資料暫存器305內,儘管此非必要的。封裝資料暫存器可各表示晶粒上儲存位置(例如具執行單元之晶粒上)。封裝資料暫存器可表示架構暫存器。封裝資料暫存器之每一者可操作以儲存封裝或向量浮點資料。在若干實施例中,封裝資料暫存器亦可操作以儲存純量浮點資料。封裝資料暫存器可於使用熟知技術且不侷限於任何特別電路類型之不同微架構中以不同方式實施。只要可如文中所說明之儲存及提供資料,各式不同類型暫存器均為適當。適當類型暫存器之範例包括但不侷限於專用實體暫存器、使用暫存器重命名之動態配置實體暫存器、及其組合。另一方面,在其他實施例中,一或多個來源及/或目的地可儲存於封裝資料暫存器以外之其他儲存位置(例如純量浮點暫存器、記憶體位置等)。
所描繪之指令處理設備包括指令解碼單元或解碼器315。解碼器可接收及解碼高階機器指令或巨集指令,並輸出一或多個低階微運算、微碼登錄點、微指令、或其他反映及/或源自原 始高階指令之低階指令或控制信號。一或多個低階指令或控制信號可經由一或多個低階(例如電路級或硬體級)運算而實施高階指令之運算。可使用各式不同機構實施解碼器,包括但不侷限於微碼唯讀記憶體(ROM)、查閱表、硬體實施、可程控邏輯陣列(PLA)、及用以實施本技藝中已知之解碼器的其他機構。
在其他實施例中,並非具有解碼器315,可使用指令仿真器、翻譯器、編譯器、解譯器、或其他指令轉換邏輯。各式不同類型指令轉換邏輯為本技藝中已知,並可以軟體、硬體、韌體、或其組合實施。指令轉換邏輯可接收指令,仿真、翻譯、變形、解譯、或將接收之指令轉換為一或多個相應衍生指令或控制信號。在仍其他實施例中,可使用指令轉換邏輯及解碼器。例如,設備可具有指令轉換邏輯以將接收之指令轉換為一或多個中間指令,以及解碼器以將一或多個中間指令解碼為可藉由指令處理設備之本機硬體執行之一或多個低階指令或控制信號。若干或所有指令轉換邏輯可定位於指令處理設備之其餘部分的晶粒外,諸如在個別晶粒上或在晶粒外記憶體中。
再次參照圖3,浮點執行單元316與解碼器315耦接。執行單元可從解碼器接收一或多個微運算、微碼登錄點、微指令、其他指令、或反映或源自浮點捨入指令303之其他控制信號。執行單元亦與來源320及目的地322耦接。浮點執行單元包括經設計以於浮點數字上實施運算(例如浮點捨入運算等)的邏輯(例如典型地至少若干電路)。
浮點執行單元316可操作以回應於及/或作為浮點捨入指 令303之結果,其指明或指出包括一或多個浮點資料元件321之來源320,並指明或指出目的地322以將結果324儲存於目的地。結果可包括一或多個相應捨入之結果浮點資料元件323。
在若干實施例中,浮點捨入指令可操作以致使設備將一或多個來源浮點數字之有效位數捨入至特定小數位元數量。在該等實施例中,浮點捨入指令可指明或指出在將捨入之來源之一或多個浮點資料元件之每一者的小數點(例如二進制點、十進制點、或十六進制點)之後或右邊的小數位元數量。在該等實施例中,一或多個捨入之結果浮點資料元件可各包括已捨入至藉由指令指出之小數位元數量的相應位置中來源之浮點資料元件之一。此程序不侷限於捨入至整數值。當藉由指令指出之小數位元數量為零時,捨入至整數值是可能的,但當藉由指令指出之小數位元數量不為零時,可達成捨入至非整數值。在若干實施例中,浮點捨入指令之立即值可包括一或多個位元以明確指明將捨入之來源之一或多個浮點資料元件之每一者的小數點(例如二進制或十進制點)後的小數位元數量。在一特別實施例中,8位元立即值之位元〔7:4〕可指明此數量(例如指明零及15之間之數量),儘管此非必要的。
捨入浮點數字係指以代表(例如約等於)開始浮點數字但在小數點後具有較少小數位元數量之其他浮點數字取代浮點數字。讓吾人考量捨入數字pi(π)之範例。以常見十進制符號至20個十進制位置表示之數字π為π=3.14159265358979323846....。以二進制符號至20個二進制位置表示之數字π為11.00100100001111110110...。在二進制單一精 度浮點格式中,數字π表示為有效位數=1.10010010000111111011且指數=1。假設吾人希望捨入至5個小數位元。在此狀況下,捨入之值將為11.00100或11.00101,取決於捨入模式。結果將以浮點返回為1.100100且二進制指數=1,或為1.100101且二進制指數=1(取決於捨入模式)。
將浮點數字之有效位數捨入至小數位元之特定數量有助於各式不同用途。有關一範例,當希望減少小數位元之數量及/或浮點數字之精度時便可使用。有關其他範例,當將浮點數字轉換為特定數量有效位元至小數點右側時便可使用。有關又另一範例,在使用具有指出之小數位元數量之捨入之有效位數於表中查閱指數之前便可使用。減少小數位元數量可有助於減少表之尺寸(例如條目數量)。
將一或多個浮點數字捨入至執行單一指令之限制內指出之小數位元數量的能力提供某些優點。其他指令僅可將浮點數字捨入至整數,且此可需要三步驟程序,首先藉由乘以相應於所欲小數位元數量之換算因子而換算浮點數字,以具有僅可捨入至整數量支線至的指令將換算之浮點數字捨入至整數,接著藉由換算因子解換算捨入之整數值的浮點數字。
通常指出之小數位元數量為正,儘管在若干實施例中,指出之小數位元數量可允許為負。捨入至負數量「分數」位元可表示捨入至特定基數冪次的倍數。例如當捨入至負整數-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)。若組配非正規數為零(DAZ),則非正規數在捨入之前可轉換為零。
浮點執行單元及/或指令處理設備可包括特定或特別邏輯(例如典型地電路或與軟體及/或韌體潛在組合之其他硬體)可操作以執行及/或處理浮點捨入指令,並回應於指令(例如回應於一或多個微指令或源自指令之其他控制信號)而儲存結果。在若干實施例中,浮點執行單元可包括整合電路、數位電路、專用積體電路、類比電路、程控邏輯裝置、包括指令之儲存裝置、或其組合。在若干實施例中,浮點執行單元可包括至少若干電路或硬體(例如組配自電晶體、閘、及/或其他積體電路組件之特定電路)。
為避免模糊說明,已顯示及說明相對簡單指令處理設備。在其他實施例中,指令處理設備可選擇地包括其他熟知組件,諸如指令提取單元、指令排程單元、分支預測單元、指令及資料高速緩衝記憶體、指令及資料翻譯後備緩衝器、預提取緩衝器、微指令佇列、微指令定序器、匯流排介面單元、第二或高階高速緩衝記憶體、退役單元、暫存器重命名單元、處理器中所包括之其他組件、及其各式組合。實施例可具有多核心、邏輯處理器、或執行引擎。可操作以執行文中所揭露之指令之實 施例的執行單元可包括於至少一、至少二、更多、或所有核心、邏輯處理器、或執行引擎中。處理器中從字面上許多不同組合及組件之組態,以及本發明之範圍不侷限於任何特別組合或組態。
圖4為處理浮點捨入指令之實施例的方法425之實施例之方塊流程圖。在各式實施例中,方法可藉由通用處理器、專用處理器(例如圖形處理器或數位信號處理器)、或另一類型數位邏輯裝置或指令處理設備予以實施。在若干實施例中,方法425可藉由圖1之處理器100或圖3之指令處理設備300予以實施。另一方面,方法425可藉由處理器或指令處理設備之不同實施例予以實施。再者,圖1之處理器100及圖3之指令處理設備300可以相同、類似或不同於圖4之方法425而實施運算及方法之實施例。
方法包括於方塊426接收浮點捨入指令。浮點捨入指令指明或指出一或多個浮點資料元件之來源,指明或指出將捨入之來源之一或多個浮點資料元件之每一者的小數點(例如二進制點或十進制點)後之小數位元數量,以及指明或指出目的地儲存位置。在各式方面,可於處理器、指令處理設備、或其部分(例如解碼器、指令轉換器等)接收指令。在各式方面,可從處理器來源外(例如從主記憶體、碟片、或匯流排或互連)或從處理器來源上(例如從指令高速緩衝記憶體)接收指令。
接著,在方塊427,回應於及/或如浮點捨入指令所指明,將結果儲存於目的地,作為如浮點捨入指令所指明之結果。結果包括一或多個捨入之結果浮點資料元件,其各包括已捨入至 指出之小數位元數量之相應位置中來源的浮點資料元件之一者。藉由範例,浮點執行單元、指令處理設備、或包括至少若干電路之處理器可實施藉由指令指明之運算,並儲存結果。
所描繪之方法包括可從處理器或指令處理設備以外可見(例如從軟體之角度可見)之運算。在其他實施例中,方法可選擇地包括發生於處理器內部之一或多個運算。藉由範例,可提取浮點捨入指令,接著解碼、翻譯、仿真、或轉換為一或多個其他指令或控制信號。可存取及/或接收來源運算元/資料。可致能浮點執行單元以實施藉由指令指明之運算,並可實施運算(例如可實施微架構運算以實施指令運算)。
圖5為方塊圖,描繪浮點捨入運算530之實施例,其將一或多個浮點數字之一或多個有效位數捨入至指出之小數位元數量。可回應於浮點捨入指令之實施例而實施浮點捨入運算。
浮點捨入指令指明或指出包括一或多個浮點資料元件之來源520。在若干實施例中,來源可包括具有有效位數0之單一純量浮點資料元件FP0。在一方面,單一純量浮點資料元件可儲存於封裝資料暫存器中(例如在封裝資料暫存器內的最低階資料元件中)。另一方面,在另一方面,單一純量浮點資料元件可儲存於純量暫存器或另一儲存位置中。適當浮點資料元件格式之範例包括但不侷限於半精度、單一精度、雙精度、延伸雙精度、及四倍精度。
在其他實施例中,來源可包括具有相應有效位數之有效位數0-有效位數N的複數N封裝浮點資料元件FP0-FPN,其中N至少為二。數量N可等於封裝資料之位元寬度除以浮點資料元 件FP0-FPN之位元寬度。在各式實施例中,封裝資料寬度可為64位元,且其可為二個32位元單一精度浮點資料元件或一個64位元雙精度浮點資料元件,封裝資料寬度可為128位元,且其可為四個32位元單一精度浮點資料元件或二個64位元雙精度浮點資料元件,封裝資料寬度可為256位元,且其可為八個32位元單一精度浮點資料元件或四個64位元雙精度浮點資料元件,或封裝資料寬度可為512位元,且其可為十六個32位元單一精度浮點資料元件或八個64位元雙精度浮點資料元件。其他封裝資料寬度及浮點資料元件寬度(例如半精度、延伸雙精度、四倍精度)亦為適當的。
浮點捨入指令亦指明或指出小數位元數量532。小數位元數量是在小數點(例如二進制點、十進制點、或十六進制點)之後。一或多個來源浮點資料元件之每一者將捨入至指出之小數位元數量。在若干實施例中,指令可包括一或多個位元或欄位以明確指明小數位元數量。例如指令可包括具有複數位元之立即值(例如8位元立即值之位元〔7:4〕)以指明小數位元數量。四位元可允許指明零及15之間之小數位元數量,儘管若希望可指明其他數量小數位元,可包括更少或更多位元。
可產生包括一或多個相應捨入之結果浮點資料元件FP0*-FPN*之結果524,並儲存於藉由浮點捨入指令指出之目的地。一或多個捨入之結果浮點資料元件之每一者可包括已捨入至指出之小數位元數量之相應位置中來源之浮點資料元件之一相應者。
如同所示,在單一純量來源浮點資料元件FP0之實施例 中,結果可包括具有捨入至指出之小數位元數量之有效位數0*的單一相應捨入之結果浮點資料元件FP0*。另一方面,在N封裝浮點資料元件FP0-FPN之實施例中,結果可包括分別具有各捨入至指出之小數位元數量之有效位數0*-有效位數0*的N相應捨入之結果浮點資料元件FP0*-FPN*。
圖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,單一浮點資料元件FP具有有效位數。指令亦可指出將捨入之來源資料元件的小數點後之小數位元數量732。
以資料元件播放運算設立之浮點可結合具後續浮點捨入運算之單一浮點資料元件FP的最初資料元件播放。最初資料元件播放可多次播放或複製單一浮點資料元件FP(例如等於浮點結果資料元件數量之若干次)。此於描繪以虛線封裝資料格式顯示為FP多次複製副本。在一方面,該些多次複製副本可儲存於暫時暫存器中。在另一方面,此僅可表示經由內部線路提供至浮點執行單元之多個副本。複製之浮點資料元件FP值可表示將用於後續浮點捨入運算中之向量或封裝資料。在若干實施例中,單一浮點資料元件FP可駐於記憶體中,且資料元件播放可經由源自具資料元件播放指令之浮點捨入的負載運算(例如負載微指令)予以實施。單一資料元件FP之播放可表示實施浮點捨入運算前之預處理資料變換。
結果封裝捨入之浮點資料724可回應於具資料元件播放運算及/或指令之浮點捨入而儲存於目的地中。結果可包括複數封裝捨入之浮點資料元件FP*。複數封裝捨入之浮點資料元件FP*之每一者可包括有效位數*,其表示捨入至指出之小數位元數量之來源之單一浮點資料元件FP的有效位數。
其他實施例關於具屏蔽指令及/或運算之浮點捨入。具屏蔽指令之浮點捨入可指明或指出封裝資料運算遮罩。封裝資料 運算遮罩文中亦可稱為遮罩。每一遮罩可表示斷定運算元或條件控制運算元,其可遮罩、斷定、有條件地控制是否捨入與將實施之指令相關之運算及/或是否儲存捨入運算之結果。在若干實施例中,每一遮罩可操作而以每一資料元件粒度遮罩捨入運算。每一遮罩可允許個別及/或獨立於其他結果資料元件而斷定或有條件地控制不同結果資料元件之捨入運算。
遮罩可各包括多種遮罩元件、斷定元件、條件控制元件、或旗標。元件或旗標可包括於與結果資料元件之一對一對應中(例如若有四個結果資料元件,便有四個元件或旗標)。每一元件或旗標可操作以遮罩個別封裝資料運算及/或將捨入之結果儲存於相應結果資料元件中。通常每一元件或旗標可為單一位元。單一位元可允許指明二不同可能性之任一者(例如實施運算相對於不實施運算、儲存運算結果相對於不儲存運算結果等)。遮罩之每一位元的二進制值可斷定或控制是否實施與具屏蔽指令之浮點捨入相關之浮點捨入運算,及/或是否儲存捨入之結果。依據一可能慣例,每一位元可分別設定(即具有1之二進制值)或清除(即具有0之二進制值),以允許或不允許實施浮點捨入運算之結果及/或儲存於相應結果資料元件中。
在若干實施例中,可實施合併遮罩。在合併遮罩中,當運算被屏蔽掉時,來自來源封裝資料之相應資料元件的值可儲存於相應結果資料元件中。例如,若來源被重新使用作為目的地,相應目的地資料元件便可保持其最初來源值(即未以計算結果更新)。在其他實施例中,可實施歸零遮罩。在歸零遮罩 中,當運算被屏蔽掉時,相應結果資料元件可歸零或零的值可儲存於相應結果資料元件中。另一方面,其他預定值可儲存於屏蔽掉的結果資料元件中。
在若干實施例中,浮點捨入運算可選擇地於第一及第二來源資料的所有相應資料元件對上實施,與遮罩之相應位元無關,但結果可或不可儲存於結果封裝資料中,取決於遮罩之相應位元。另一方面,在另一實施例中,若遮罩之相應位元指明運算之結果不儲存於封裝資料結果中,浮點捨入運算便可選擇地省略(即不實施)。在若干實施例中,例外及/或違反可選擇地針對遮罩外元件上之運算抑制,或不藉由其提昇。在若干實施例中,對具記憶體運算元之指令及/或運算而言,可選擇地針對遮罩外資料元件抑制記憶體故障。
圖8為方塊圖,描繪具屏蔽運算830之浮點捨入的實施例,其可回應於具屏蔽指令之浮點捨入的實施例予以實施。指令指明或指出封裝浮點資料元件FP0-FPN的來源820。指令亦可指出將捨入之來源資料元件的小數點後之小數位元數量832。
指令亦指明或指出封裝資料運算遮罩842,其包括複數封裝資料運算遮罩元件或位元。在描繪中,設定相應於FP0之最低有效遮罩位元(即1),並清除相應於FPN之最大有效遮罩位元(即0)。藉由範例,在128位元寬封裝資料及32位元單一精度浮點資料元件的狀況下,遮罩可包括四個1位元遮罩位元,或在64位元雙精度浮點資料元件的狀況下,遮罩可包括二個1位元遮罩位元。有關另一範例,在512位元寬封裝資料及32位元單一精度浮點資料元件的狀況下,遮罩可包括十六個1位元 遮罩位元,或在64位元雙精度浮點資料元件的狀況下,遮罩可包括八個1位元遮罩位元。
回應於具屏蔽運算及/或指令之浮點捨入,結果封裝捨入之浮點資料824可儲存於指出之目的地中。浮點捨入運算之結果依據相應封裝資料運算遮罩位元而有條件地儲存於結果中。當結果浮點資料元件未藉由封裝資料運算遮罩屏蔽掉時(例如在描繪中,當相應遮罩位元設定為1時),其可儲存於已捨入至例如藉由指令指出之小數位元數量之來源的浮點資料元件之一相應者。例如最低有效結果資料元件可儲存捨入之浮點數字FP0*,其包括捨入之有效位數0*。另一方面,當浮點資料元件藉由封裝資料運算遮罩屏蔽掉時(例如在描繪中,當相應遮罩位元被清除為0時),屏蔽掉值(例如歸零或合併值)可儲存於結果資料元件中。
圖9為適當封裝資料運算遮罩暫存器906組之實施例之方塊圖。每一暫存器可用以儲存封裝資料運算遮罩。在所描繪之實施例中,該組包括八個封裝資料運算遮罩暫存器標示為k0至k7。替代實施例可包括少於八個(例如二、四、六等)或多於八個(例如十六、二十、三十二等)封裝資料運算遮罩暫存器。在所描繪之實施例中,每一封裝資料運算遮罩暫存器為64位元。在替代實施例中,封裝資料運算遮罩暫存器之寬度可寬於64位元(例如80位元、128位元等)或窄於64位元(例如8位元、16位元、32位元等)。封裝資料運算遮罩暫存器可使用知名技術以不同方式予以實施,且不侷限於任何已知特別類型電路。
圖10為浮點指令格式1003之實施例之方塊圖。指令格式包括運算碼1043。運算碼可表示複數位元或一或多個欄位,其可操作以識別將實施之指令及/或運算。
如同所示,在若干實施例中,指令格式可包括來源說明符1044以明確指明來源運算元或儲存位置,以及目的地說明符1045以明確指明其中將儲存結果的目的地運算元或儲存位置。藉由範例,該些說明符之每一者可包括暫存器之位址、記憶體位置、或其他儲存位置。另一方面,一或多個來源及/或目的地可隱含至指令而非明確指明。例如,來源可選擇地重新使用作為目的地,且來源之最初內容可以結果覆寫。
在若干實施例中,指令格式可包括可選擇資料元件播放控制1046。資料元件播放控制可包括一或多個位元或欄位以指出將實施資料元件播放以播放從指明或指出之儲存位置存取的單一來源資料元件進入藉由指令使用之複數來源資料元件。另一方面,資料元件播放可隱含至指令(例如隱含至運算碼)。如上述,資料元件播放為可選擇且並非必要。
在若干實施例中,指令格式可包括可選擇封裝資料運算遮罩說明符1047以明確指明封裝資料運算遮罩或儲存位置(例如遮罩暫存器)。另一方面,可隱含地指出封裝資料運算遮罩。在若干實施例中,指令格式亦可包括可選擇類型之屏蔽運算說明符1048以指明屏蔽運算類型。藉由範例,屏蔽運算說明符之類型可包括單一位元以指明是否將實施合併遮罩或歸零遮罩。另一方面,可隱含地指出屏蔽運算之類型(例如隱含控制暫存器)。如上述,遮罩為可選擇且並非必要。
在若干實施例中,指令格式可包括可選擇浮點捨入控制1049。浮點捨入控制可控制是否置換處理器之預設浮點捨入模式。藉由範例,某Intel處理器具有控制暫存器(例如已知為MXCSR的機器狀態及控制暫存器),其包括指明預設捨入模式之捨入模式控制位元(例如RM)。指令之浮點設定控制可表示一或多個位元或欄位以指出是否置換該等預設捨入模式。
在若干實施例中,指令格式可包括可選擇浮點捨入模式說明符1050以指明文中所揭露之用於浮點捨入運算的浮點捨入模式。藉由範例,在若干實施例中,浮點捨入模式說明符可包括二位元以指明下列四個非黏結捨入模式的任何一者:(1)捨入至最近,其中捨入於最近偶數位元;(2)向下捨入,朝向負無限,其中負結果捨入離開零;(3)向上捨入,朝向正無限,其中負結果捨入朝向零;以及(4)捨入朝向零,截短。其他實施例可包括更少、更多、或不同捨入模式。
在若干實施例中,指令格式可包括可選擇抑制精度例外控制1051。抑制精度例外控制可控制是否抑制或報告浮點精度例外。
在若干實施例中,指令格式可包括小數位元數量規格1052。小數位元數量規格可表示將捨入成為浮點設立指令/運算之有效位數之每一來源浮點資料元件的小數點(例如二進制點、十進制點、或十六進制點)後之小數位元數量。
在若干實施例中,可選擇地以指令之立即值1053提供浮點捨入控制1049、浮點捨入模式說明符1050、抑制精度例外控制1051、及小數位元數量說明符1052。另一方面,可以指令之其 他欄位或位元提供以上之一或多項。
所描繪之指令格式顯示欄位類型之範例,其可包括於浮點捨入指令之實施例中。替代實施例可包括所描繪之欄位的子集、可增加額外欄位、可重疊某欄位等。所描繪之欄位順序/配置並非必要,各欄位可重排。欄位不需包括連續位元序列,而是可以非連續或個別位元組成。在若干實施例中,指令格式可依循EVEX編碼或指令格式,儘管此非必要的。
圖11為適於浮點捨入指令之立即值1153之特別示範實施例之方塊圖。立即值為8位元立即值。位元〔2〕表示浮點捨入控制1149以控制是否置換預設捨入模式。立即值之位元〔1:0〕表示浮點捨入模式說明符1150以指明捨入模式。在一實施例中,00之值指出捨入至最近偶數整數模式,01之值指出捨入至相等或較小整數模式,10之值指出捨入至相等或較大整數模式,及11之值指出捨入至最近、最小整數模式,儘管本發明之範圍不侷限於此。位元〔3〕表示抑制精度例外控制1151。立即值之位元〔7:4〕表示小數位元數量說明符1152。在其他實施例中,該些欄位可重排,較少或較多位元可配置於欄位(少於或多於四位元可用以指明小數位元數量)等。
圖12為適當封裝資料暫存器1205組之實施例之方塊圖。所描繪之封裝資料暫存器包括32個512位元封裝資料或向量暫存器。該些32個512位元暫存器標示為ZMM0至ZMM31。在所描繪之實施例中,該些暫存器之下十六個(即ZMM0-ZMM15)的低階256位元混疊或疊加於標示為YMM0-YMM15之各個256位元封裝資料或向量暫存器上,儘管此非必要的。 同樣地,在所描繪之實施例中,YMM0-YMM15之低階128位元混疊或疊加於標示為XMM0-XMM1之各個128位元封裝資料或向量暫存器上,儘管此亦非必要的。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指令之發生將於運算元欄位中具有特定內容,其選擇特定運算元。一組SIMD延伸係指先進向量延伸(AVX)(AVX1及AVX2)及使用向量延伸(VEX)編碼方案,已、已發佈及/或發表(例如詳2011年10月Intel® 64及IA-32架構軟體開發者手冊;及詳2011年6月Intel®先進向量延伸編程參考文獻)。
示範指令格式
文中所說明之指令實施例可以不同格式體現。此外,以下詳述示範系統、架構、及管線。指令實施例可於該等系統、架構、及管線上執行,但不侷限於此。
通用向量親和指令格式
向量親和指令格式為適於向量指令之指令格式(例如存在特定於向量運算之某欄位)。雖然所說明之實施例其中經由向量親和指令格式支援向量及純量運算,但替代實施例僅使用向量親和指令格式之向量運算。
圖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)標度的位移因素-其中N為記憶體存取中位元組數量(例如用於位址產生,其使用2標度*指標+基+標度之位移)。冗餘低階位元忽略,因此位移因素欄位之內容乘以記憶體運算元總尺寸(N),以便產生最後位移而用於計算有效位址。N之值係藉由處理器硬體於運行時依據全運算碼欄位1474(文中之後說明)及資料操縱欄位1454C決定。在未用於無記憶體存取1405指令模板及/或僅可實施二者之一或均未實施之不同實施例的意義上,位移欄位1462A及位移因素欄位1462B是可選擇的。
資料元件寬度欄位1464-其內容區別將使用若干資料元件寬度之哪一者(在若干實施例中用於所有指令;在其他實施例中僅用於若干指令)。在若僅支援一資料元件寬度及/或使用運算碼之若干方面支援資料元件寬度,便不需要此欄位的意義上,此欄位是可選擇的。
寫入遮罩欄位1470-在每一資料元件位置的基礎上,其內容控制目的地向量運算元中資料元件位置是否反映基運算及擴大運算之結果。A級指令模板支援合併寫入遮罩,同時B級指令模板支援合併及歸零寫入遮罩。當合併時,向量遮罩允許目的地中任何元件組受保護免於在任何運算(由基運算及擴大運算指明)執行期間更新;在另一實施例中,保留目的地之每一元件的舊值,其中相應遮罩位元具有0。相反地,當歸零時,向量遮罩允許目的地中任何元件組在任何運算(由基運算及擴大 運算指明)執行期間歸零;在一實施例中,當相應遮罩位元具有0值時,目的地之元件設定為0。此功能性之子集為控制實施之運算之向量長度的能力(即,修改之元件的跨距從第一個至最後一個);然而,修改之元件不一定為連續。因而,寫入遮罩欄位1470允許用於部分向量運算,包括載入、儲存、算術、邏輯等。雖然所說明之本發明之實施例其中寫入遮罩欄位1470之內容選擇包含將使用之寫入遮罩的若干寫入遮罩暫存器之一者(因而寫入遮罩欄位1470之內容間接識別將實施之遮罩),替代實施例取代或額外允許寫入遮罩欄位1470之內容直接指明將實施之遮罩。
立即值欄位1472-其內容允許用於立即值之規格。在此欄位未呈現於未支援立即值之通用向量親和格式之實施中,及其未呈現於未使用立即值之指令中的意義上,此欄位是可選擇的。
級別欄位1468-其內容於不同級別指令之間區別。參照圖14A-B,此欄位之內容於A級及B級指令之間選擇。在圖14A-B中,捨入的角落方格用以指出特定值呈現於欄位中(例如圖14A-B中分別用於級別欄位1468之A級1468A及B級1468B)。
A級指令模板
若為A級非記憶體存取1405指令模板,阿爾發欄位1452便解譯為RS欄位1452A,其內容區別將實施之不同擴大運算類型之哪一者(例如捨入1452A.1及資料轉換1452A.2分別指明 用於無記憶體存取捨入型運算1410指令模板及無記憶體存取資料轉換型運算1415指令模板),同時貝他欄位1454區別將實施指定類型之哪一運算。在無記憶體存取1405指令模板中,未呈現標度欄位1460、位移欄位1462A、及位移標度欄位1462B。
無記憶體存取指令模板-全捨入控制型運算
在無記憶體存取全捨入控制型運算1410指令模板中,貝他欄位1454被解譯為捨入控制欄位1454A,其內容提供靜態捨入。雖然在所說明之本發明之實施例中,捨入控制欄位1454A包括抑制所有浮點例外(SAE)欄位1456及捨入運算控制欄位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,其內容區別將實施哪一不同擴大運算類型(例如捨入1457A.1及向量長度(VSIZE)1457A.2分別指定用於無記憶體存取寫入遮罩控制部分捨入控制型運算1412指令模板及無記憶體存取寫入遮罩控制VSIZE型運算1417指令模板),同時其餘貝他欄位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提供運算碼(運算碼)。
在通用向量親和指令格式之每一指令的基礎上,擴大運算欄位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之一位元欄位,本發明不侷限於此(即,通用向量親和指令格式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)、及1457 BEX位元組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'欄位1410-此係REX'欄位1410之第一部分並為EVEX.R'位元欄位(EVEX位元組1,位元〔4〕-R'),其用以編碼延伸之32個暫存器組的上16個或下16個。在本發明之一實施例中,此位元連同以下指出之其他者係以位元反向格式儲存以區別(熟知x86 32位元模式)BOUND指令,其真實運算碼位元組為62,但在MOD R/M欄位(以下說明)中不接受MOD欄位中11之值;本發明之替代實施例不儲存此及以下以反向格式指出之其他位元。1之值用以編碼下16個暫存器。換言之,藉由組合EVEX.R'、EVEX.R、及來自其他欄位之其他RRR而形成R'Rrrr。
運算碼映射欄位1515(EVEX位元組1,位元〔3:0〕-mmmm)-其內容編碼暗示的前導運算碼位元組(0F、0F38、或0F3)。
資料元件寬度欄位1464(EVEX位元組2,位元〔7〕-W)-係藉由記號EVEX.W代表。EVEX.W用以定義資料類型(32位元資料元件或64位元資料元件)之粒度(尺寸)。
EVEX.vvvv 1520(EVEX位元組2,位元〔6:3〕-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼以反向(1之補數)形式指明之第一來源暫存器運算元,並有效用於具2或更多來源運算元之指令;2)EVEX.vvvv編碼用於某向量偏移之1之補數形式指明之目的地暫存器運算元;或3)EVEX.vvvv未編碼任何運算元,欄位保留並應包含1111b。因而,EVEX.vvvv欄位1520編碼以反向(1之補數)形式儲存之第一來源暫存器區分符的4個低階位元。依據指令,額外不同EVEX位元欄位用以延伸區分符尺寸至32個暫存器。
EVEX.U 1468級別欄位(EVEX位元組2,位元〔2〕-U)-若EVEX.U=0,指出A級或EVEX.U0;若EVEX.U=1,指出B級或EVEX.U1。
前置編碼欄位1525(EVEX位元組2,位元〔1:0〕-pp)-提供用於基運算欄位之額外位元。除了提供支援EVEX前置格式中舊有SSE指令外,其亦具有緊實SIMD前置之利益(不需要位元組來表示SIMD前置,EVEX前置僅需2位元)。在一實施例中,支援使用舊有格式及EVEX前置格式之SIMD前置(66H,F2H,F3H)的舊有SSE指令,該些舊有SIMD前置被編碼於SIMD前置編碼欄位中;且運行時間於提供至解碼器之PLA之前延伸進入舊有SIMD前置(所以PLA可未修改便執行該些舊有指令之舊有及EVEX格式)。儘管較新指令可使用EVEX前置編碼欄位之內容直接作為運算碼延伸,某實施例為一致性而以類似方式延伸,但允許藉由該些舊有SIMD前置指定之不同意義。替代實施例可重新設計PLA以支援2位元SIMD 前置編碼,因而不需擴展。
阿爾發欄位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具有特殊行為暗示無寫入遮罩用於特別指令(此可以各類方式實施,包括使用固線式至所有物件之寫入遮罩或旁通遮罩硬體之硬體)。
真實運算碼欄位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包括一位元SAE欄位1456及二位元捨入運算欄位1458。當rs欄位1452A包含0時(資料轉換1452A.2),貝他欄位1454(EVEX位元組3,位元〔6:4〕-SSS)解譯為三位元資料轉換欄位1454B。當U=0及MOD欄位1542包含00、01、或10時(標示記憶體存取運算),阿爾發欄位1452(EVEX位元組3、位元〔7〕-EH)解譯為驅逐提示(EH)欄位1452B,及貝他欄位1454(EVEX位元組3,位元〔6:4〕-SSS)解譯為三位元資料操縱欄位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 1457.A2), 其餘貝他欄位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之方塊圖。在所描繪之實施例中,存在512位元寬之32個向量暫存器1610;該些暫存器代號為zmm0至zmm31。下16個zmm暫存器之低階256位元覆加於暫存器ymm0-16上。下16個zmm暫存器之低階128位元(ymm暫存器之低階128位元)覆加於暫存器xmm0-15上。特定向量親和指令格式1500係於下表中所描繪之該些覆加暫存器檔案上操作。
換言之,向量長度欄位1459B於最大長度及一或多個其他較短長度之間選擇,其中每一該等較短長度為之前長度的一半長度;且無向量長度欄位1459B之指令模板於最大向量長度上操作。此外,在一實施例中,特定向量親和指令格式1500之B級指令模板於封裝或純量單一/雙精度浮點資料及封裝或純量整數資料上操作。純量運算係於zmm/ymm/xmm暫存器中最低階資料元件位置上實施之運算;依據實施例,高階資料元件位置係在如同指令或歸零之前相同的左邊。
寫入遮罩暫存器1615-在所描繪之實施例中,存在8個寫入遮罩暫存器(k0至k7),每一尺寸為64位元。在替代實施例中,寫入遮罩暫存器1615尺寸為16位元。如先前所說明,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當編碼時通常指出k0係用於寫入遮罩,其選擇0xFFFF之固線式寫入遮罩,有效地停用該指令之寫入遮罩。
通用暫存器1625-在所描繪之實施例中,存在十六個64位元通用暫存器,其連同現有x86定址模式用以定址記憶體運算元。該些暫存器代號為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)1645,其上重疊MMX封裝整數平面暫存器檔案1650-在所描繪之實施例中,x87堆疊為八元件堆疊,用以於使用x87指令集延伸之32/64/80位元浮點資料上實施純量浮點運算;同時MMX暫存器用以於64位元封裝整數資料上實施運算,以及容納於MMX及XMM暫 存器之間實施若干運算的運算元。
本發明之替代實施例可使用更寬或更窄暫存器。此外,本發明之替代實施例可使用更多、更少或不同暫存器檔案及暫存器。
示範核心架構、處理器、及電腦架構
處理器核心可以不同方式實施、用於不同目的、及於不同處理器中實施。例如,該等核心之實施可包括:1)希望用於通用計算之通用依序核心;2)希望用於通用計算之高性能通用無序核心;3)希望主要用於圖形及/或科學(傳輸率)計算之特殊用途核心。不同處理器之實施可包括:1)包括希望用於通用計算之一或多個通用依序核心及/或希望用於通用計算之一或多個通用無序核心的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包括耦接至指令高速緩衝記憶體單元1734之分支預測單元1732,指令高速緩衝記憶體單元1734耦接至指令翻譯後備緩衝器(TLB)1736,指令翻譯後備緩衝器(TLB) 1736耦接至指令提取單元1738,指令提取單元1738耦接至解碼單元1740。解碼單元1740(或解碼器)可解碼指令及產生輸出,例如一或多個微運算、微碼登錄點、微指令、其他指令、或其他控制信號,其係解碼自、反映、或源自原始指令。解碼單元1740可使用各式不同機構予以實施。適當機構之範例包括但不侷限於查閱表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1790包括微碼ROM或儲存用於某巨集指令之微碼的其他媒體(例如在解碼單元1740中或前端單元1730內)。解碼單元1740耦接至執行引擎單元1750中之重命名/配置器單元1752。
執行引擎單元1750包括耦接至退役單元1754及一組一或多個排程器單元1756之重命名/配置器單元1752。排程器單元1756代表任意數量不同排程器,包括保留站、中央指令視窗等。排程器單元1756耦接至實體暫存器檔案單元1758。每一實體暫存器檔案單元1758代表一或多個實體暫存器檔案,各儲存一或多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如指令指標,其係將執行之下一指令的位址)等。在一實施例中,實體暫存器檔案單元1758包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。該些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1758為退役單元1754所重疊以,描繪其中可實施暫存器重命名及失序執行的各種方式(例如使用重排緩衝器及退役暫存器檔案;使用將來檔案、歷史緩衝器、及退役暫存器檔案;使用暫存器映 射及暫存器池等)。退役單元1754及實體暫存器檔案單元1758耦接至執行叢集1760。執行叢集1760包括一組一或多個執行單元1762及一組一或多個記憶體存取單元1764。執行單元1762可在各類資料(例如純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)上實施各式運算(例如移位、加法、減法、乘法)。雖然若干實施例可包括若干執行單元專用於特定功能或功能集,其他實施例可僅包括一執行單元或多執行單元而均實施所有功能。因為某實施例製造用於某類型資料/運算之個別分開管線(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或各具有其本身排程器單元、實體暫存器檔案單元、及/或執行叢集之記憶體存取管線-且在個別記憶體存取管線之狀況下,實施某實施例,其中僅該管線之執行叢集具有記憶體存取單元1764),顯示可能為複數個之排程器單元1756、實體暫存器檔案單元1758、及執行叢集1760。亦應理解的是,其中使用個別管線,一或多個該些管線可為無序發出/執行及其餘為依序。
該組記憶體存取單元1764耦接至記憶體單元1770,其包括耦接至資料高速緩衝記憶體單元1774之資料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),藉以允許藉由使用封裝資料實施之許多多媒體應用使用之運算。
應理解的是,核心可支援多線程(執行二或更多並行運算或線程組合),並可以各種方式實施,包括時間切片多線程、同步多線程(其中單一實體核心提供實體核心為同步多線程之每一線程的邏輯核心)、或其組合(例如時間切片提取及解碼以及之後的同步多線程,諸如Intel®超線程技術)。
雖然以無序執行之上下文說明暫存器重命名,應理解的是 暫存器重命名可用於依序架構。雖然所描繪之處理器的實施例亦包括個別指令及資料高速緩衝記憶體單元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為示範電腦架構之方塊圖。本技藝中已知用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置及各式其他電子裝置的其他系統設計及組態亦適當。通常,可併入處理 器及/或如文中所揭露之其他執行邏輯的廣泛系統或電子裝置一般均適當。
現在參照圖20,顯示依據本發明之一實施例之系統2000之方塊圖。系統2000可包括一或多個處理器2010、2015,其耦接至控制器集線器2020。在一實施例中,控制器集線器2020包括圖形記憶體控制器集線器(GMCH)2090及輸入/輸出集線器(IOH)2050(其可在個別晶片上);GMCH 2090包括耦接記憶體2040及協處理器2045之記憶體及圖形控制器;IOH 2050將輸入/輸出(I/O)裝置2060耦接至GMCH 2090。另一方面,記憶體及圖形控制器之一或二者整合於處理器內(如文中所說明),記憶體2040及協處理器2045直接耦接至處理器2010及具IOH 2050之單一晶片中的控制器集線器2020。
圖20中以虛線標示額外處理器2015之可選特性。每一處理器2010、2015可包括一或多個文中所說明之處理核心,並可為處理器1900之若干版本。
記憶體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可經由使用P-P介面電路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 Express匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範圍未限制於此。
如圖21中所示,各式I/O裝置2114可耦接至第一匯流排2116,連同將第一匯流排2116耦接至第二匯流排2120之匯流排橋接器2118。在一實施例中,一或多個額外處理器2115耦接至第一匯流排2116,諸如協處理器、高傳輸率MIC處理器、GPGPU、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、欄位可編程閘陣列、或任何其他處理器。在一實施例中,第二匯流排2120可為低接腳數(LPC)匯流排。在一實施例中,各式裝置可耦接至第二匯流排2120,包括例如鍵盤及/或滑鼠2122、通訊裝置2127及儲存單元2128,諸如磁碟機或可包括指令/碼及資料2130之其他大量儲存裝置。此外,音頻 I/O 2124可耦接至第二匯流排2120。請注意,亦可能為其他架構。例如,取代圖21之點對點架構、系統可實施多站式匯流排或其他該等架構。
現在參照圖22,顯示依據本發明之實施例之第二更特定示範系統2200之方塊圖。圖21及22中類似元件配賦類似代號,且圖22已省略圖21之某方面,以避免模糊圖22之其他方面。
圖22描繪處理器2170、2180可分別包括整合記憶體及I/O控制邏輯(「CL」)2172及2182。因而,CL 2172、2182包括整合記憶體控制器單元及包括I/O控制邏輯。圖22描繪不僅記憶體2132、2134耦接至CL 2172、2182,I/O裝置2214亦耦接至控制邏輯2172、2182。舊有I/O裝置2215耦接至晶片組2190。
現在參照圖23,顯示依據本發明之實施例之SoC 2300之方塊圖。圖19中類似元件配賦類似代號。另外,虛線框為更多先進SoC上之可選特徵。在圖23中,互連單元2302耦接至:包括一組一或多個核心202A-N及共用高速緩衝記憶體單元1906之應用處理器2310;系統代理器單元1910;匯流排控制器單元1916;整合記憶體控制器單元1914;一組或一或多個協處理器2320,其可包括整合圖形邏輯、影像處理器、音頻處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元2330;直接記憶體存取(DMA)單元2332;及顯示單元2340,用於耦接至一或多個外部顯示器。在一實施例中,協處理器2320包括特殊用途處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高傳輸率MIC處理器、嵌入處理器等。
文中所揭露之機構的實施例可以硬體、軟體、韌體、或該等實施方法之組合實施。本發明之實施例可實施為電腦程式或於包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上執行之程式碼。
諸如圖21中所描繪之碼2130的程式碼可應用於輸入指令以實施文中所說明之功能並產生輸出資訊。輸出資訊可以已知方式應用於一或多個輸出裝置。為此應用之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器。
程式碼可以高階程序或物件導向編程語言實施,以與處理系統通訊。若有需要,程式碼亦可以組合語言或機器語言實施。事實上,文中所說明之機構不侷限於任何特別編程語言之範圍。在任何狀況下,語言可為編譯或解譯語言。
至少一實施例之一或多個方面可藉由儲存於機器可讀取媒體上之代表指令實施,其代表處理器內之各式邏輯,當藉由機器讀取時,其致使機器製造邏輯以實施文中所說明之技術。該等代表已知為「IP核心」,可儲存於實體機器可讀取媒體上,並供應至各式各戶或製造廠以載入實際製造邏輯或處理器之製造機器。
該等機器可讀取儲存媒體可包括而不侷限於藉由機器或裝置製造或形成之物品的非暫時實體安排,包括諸如硬碟之儲存媒體;包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁性光碟之任何其他類型碟片;諸如唯讀 記憶體(ROM)之半導體裝置;諸如動態隨機存取記憶體(DRAM)之隨機存取記憶體(RAM);靜態隨機存取記憶體(SRAM);可抹除可編程唯讀記憶體(EPROM);快閃記憶體;電可抹除可編程唯讀記憶體(EEPROM);相位改變記憶體(PCM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,本發明之實施例亦包括非暫時實體機器可讀取媒體,其包含指令或包含設計資料,諸如定義文中所說明之結構電路、設備、處理器及/或系統特徵之硬體說明語言(HDL)。該等實施例可亦稱為程式產品。
仿真(包括二進制翻譯、碼變形等)
在若干狀況下,指令轉換器可用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如使用靜態二進制翻譯、包括動態編譯之動態二進制翻譯)、變形、仿真、或轉換至藉由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合予以實施。指令轉換器可在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖24為依據本發明之實施例之對比使用軟體指令轉換器以將來源指令集中之二進制指令轉換至目標指令集中之二進制指令的方塊圖。在所描繪之實施例中,指令轉換器為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或其各式組合實施。圖24顯示以高階語言2402之程式,可使用x86 編譯器2404編譯以產生x86二進制碼2406,其可藉由具至少一x86指令集核心之處理器2416本機執行。具至少一x86指令集核心之處理器2416代表任何處理器,其可藉由相容地執行或處理(1)Intel x86指令集核心之指令集的主要部分或(2)應用之目標碼版本或目標係在具至少一x86指令集核心之Intel處理器上運行之其他軟體,以便達成與具至少一x86指令集核心之Intel處理器的實質上相同結果,而實質上實施與具至少一x86指令集核心之Intel處理器的相同功能。x86編譯器2404代表可操作以產生x86二進制碼2406(例如目標碼)之編譯器,其具或不具額外鏈接處理而可於具至少一x86指令集核心之處理器2416上執行。類似地,圖24顯示以高階語言2402之程式,可使用替代指令集編譯器2408編譯以產生替代指令集二進制碼2410,其可藉由不具至少一x86指令集核心之處理器2414本機執行(例如具核心以執行美國加州森尼維爾市「MIPS科技公司」之MIPS指令集及/或執行美國加州森尼維爾市「ARM控股公司」之ARM指令集的處理器)。指令轉換器2412用以將x86二進制碼2406轉換為可藉由不具x86指令集核心之處理器2414本機執行之碼。此轉換之碼不太可能與替代指令集二進制碼2410相同,因為可如此之指令轉換器難以製造;然而,轉換之碼將完成一般運算並組成來自替代指令集之指令。因而,指令轉換器2412代表軟體、韌體、硬體、或其組合,經由仿真、模擬、或任何其他處理,允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進制碼2406。
在說明及申請項中已使用「耦接」及/或「連接」用詞連 同其衍生字。應理解的是,該些用詞不希望彼此同義。而是,在特定實施例中,「連接」可用以指出二或更多元件彼此直接實體或電氣接觸。「耦接」可表示二或更多元件彼此直接實體或電氣接觸。然而,「耦接」亦可表示二或更多元件彼此並非直接接觸,但仍共同操作或彼此互動。例如,執行單元可經由一或多個介於中間之組件而與暫存器耦接。圖中,箭頭用以顯示耦接及/或連接。
在以上說明中,已提出許多特定細節以便提供本發明之實施例的徹底了解。然而,可實現其他實施例而無若干該些特定細節。本發明之範圍並非藉由以上提供之特定範例決定,而是僅藉由以下申請專利範圍決定。與圖式中所描繪及說明書中所說明之所有等效關係係包含於實施例內。在其他狀況下,熟知電路、結構、裝置、及運算已以方塊圖形式顯示或無細節,以避免模糊說明之理解。
某運算可藉由硬體組件實施及/或可以機器可執行或電路可執行指令體現,該等指令可用以致使及/或造成以指令程控之硬體組件(例如,處理器、部分處理器、電路等)實施運算。硬體組件可包括通用或專用硬體組件。運算可藉由硬體、軟體、及/或韌體之組合予以實施。硬體組件可包括特定或特別邏輯(例如,與軟體及/或韌體潛在組合之電路),其可操作以執行及/或處理指令並回應於指令(例如,回應於一或多個微指令或源於指令之其他控制信號)而儲存結果。
本說明書通篇提及之「一實施例」、「實施例」、「一或多個實施例」、「若干實施例」例如指出特徵可包括於本發明 之實現中,但不一定需如此。類似地,在說明中,為流程揭露及協助理解各式發明方面,各式特徵有時群聚於單一實施例、圖、或其說明中。然而,揭露之方法不應解譯為反映本發明需要較每一申請項提及之更多特徵。而是,如下列申請項反映發明方面可少於單一所揭露之實施例的所有特徵。因而,依循詳細說明之申請項藉此表示併入此詳細說明,且每一申請項立足於其本身作為本發明之個別實施例。
100‧‧‧處理器
101‧‧‧指令集架構
102‧‧‧指令集
103、303‧‧‧浮點捨入指令
104‧‧‧架構上可見之暫存器
105‧‧‧封裝資料暫存器
106‧‧‧遮罩暫存器
107‧‧‧狀態暫存器
108‧‧‧浮點執行邏輯
210A‧‧‧半精度浮點格式
210B‧‧‧單一精度浮點格式
210C‧‧‧雙精度浮點格式
210D‧‧‧延伸雙精度浮點格式
210E‧‧‧四倍精度浮點格式
211A‧‧‧10位元有效位數
211B‧‧‧23位元有效位數
211C‧‧‧52位元有效位數
211D‧‧‧64位元有效位數
211E‧‧‧112位元有效位數
212A‧‧‧5位元指數
212B‧‧‧8位元指數
212C‧‧‧11位元指數
212D、212E‧‧‧15位元指數
213A、213B、213C、213D、213E‧‧‧1位元符號
300‧‧‧指令處理設備
315‧‧‧解碼器
316‧‧‧浮點執行單元
320、520、720、820‧‧‧來源
321‧‧‧浮點資料元件
322‧‧‧目的地
323‧‧‧結果浮點資料元件
324、524‧‧‧結果
425‧‧‧方法
426、427‧‧‧方塊
530‧‧‧浮點捨入運算
532、732、832‧‧‧小數位元數量
634‧‧‧64位元封裝單一精度浮點格式
635‧‧‧128位元封裝單一精度浮點格式
636‧‧‧256位元封裝單一精度浮點格式
637‧‧‧128位元封裝雙精度浮點格式
638‧‧‧256位元封裝雙精度浮點格式
639、640‧‧‧128位元暫存器格式
724、824‧‧‧浮點資料
730‧‧‧資料元件播放運算
830‧‧‧屏蔽運算
842‧‧‧封裝資料運算遮罩
906‧‧‧封裝資料運算遮罩暫存器
1003‧‧‧浮點指令格式
1043‧‧‧運算碼
1044‧‧‧來源說明符
1045‧‧‧目的地說明符
1046‧‧‧可選擇資料元件播放控制
1047‧‧‧可選擇封裝資料運算遮罩說明符
1048‧‧‧屏蔽運算說明符
1049、1149‧‧‧可選擇浮點捨入控制
1050、1150‧‧‧可選擇浮點捨入模式說明符
1051、1151‧‧‧可選擇抑制精度例外控制
1052、1152‧‧‧小數位元數量規格
1053、1153‧‧‧立即值
1303‧‧‧浮點捨入指令
1354‧‧‧製品
1355‧‧‧機器可讀取儲存媒體
1400‧‧‧通用向量親和指令格式
1405‧‧‧無記憶體存取
1410‧‧‧全捨入控制型運算
1412‧‧‧部分捨入控制型運算
1415‧‧‧資料轉換型運算
1417‧‧‧VSIZE型運算
1420‧‧‧記憶體存取
1425‧‧‧記憶體存取暫時
1427‧‧‧記憶體存取寫入遮罩控制
1430‧‧‧記憶體存取非暫時
1440‧‧‧格式欄位
1442‧‧‧基運算欄位
1444‧‧‧暫存器指標欄位
1446‧‧‧修飾符欄位
1450‧‧‧擴大運算欄位
1452‧‧‧阿爾發欄位
1452A‧‧‧RS欄位
1452A.1、1457A.1‧‧‧捨入
1452A.2‧‧‧資料轉換
1452B‧‧‧驅逐提示欄位
1452B.1‧‧‧暫時
1452B.2‧‧‧非暫時
1452C‧‧‧寫入遮罩控制欄位
1454‧‧‧貝他欄位
1456‧‧‧抑制所有浮點例外欄位
1457A‧‧‧RL欄位
1457A.2‧‧‧向量長度
1457B‧‧‧播送欄位
1458‧‧‧捨入運算控制欄位
1459A‧‧‧捨入運算欄位
1459B‧‧‧向量長度欄位
1460‧‧‧標度欄位
1462A‧‧‧位移欄位
1462B‧‧‧位移因素欄位
1464‧‧‧資料元件寬度欄位
1468‧‧‧級別欄位
1468A‧‧‧A級
1468B‧‧‧B級
1470‧‧‧寫入遮罩欄位
1472‧‧‧立即值欄位
1474‧‧‧全運算碼欄位
1500‧‧‧特定向量親和指令格式
1502‧‧‧EVEX前置
1505‧‧‧REX欄位
1510‧‧‧REX'欄位
1515‧‧‧運算碼映射欄位
1525‧‧‧前置編碼欄位
1530‧‧‧真實運算碼欄位
1540‧‧‧Mod R/M欄位
1542‧‧‧基運算欄位
1544‧‧‧暫存器指標欄位
1546‧‧‧R/M欄位
1625‧‧‧通用暫存器
1645‧‧‧純量浮點堆疊暫存器檔案
1650‧‧‧MMX封裝整數平面暫存器檔案
1700‧‧‧處理器管線
1702‧‧‧提取級
1704‧‧‧長度解碼級
1706‧‧‧解碼級
1708‧‧‧配置級
1710‧‧‧重命名級
1712‧‧‧排程級
1714‧‧‧暫存器讀取/記憶體讀取級
1716‧‧‧執行級
1718‧‧‧寫回/記憶體寫入級
1722‧‧‧例外處理級
1724‧‧‧確定級
1730‧‧‧前端單元
1732‧‧‧分支預測單元
1734‧‧‧指令高速緩衝記憶體單元
1736‧‧‧指令翻譯後備緩衝器
1738‧‧‧指令提取單元
1740‧‧‧解碼單元
1750‧‧‧執行引擎單元
1752‧‧‧重命名/配置器單元
1754‧‧‧退役單元
1756‧‧‧排程器單元
1758‧‧‧實體暫存器檔案單元
1760‧‧‧執行叢集
1762‧‧‧執行單元
1764‧‧‧記憶體存取單元
1770‧‧‧記憶體單元
1772‧‧‧資料翻譯後備緩衝器單元
1774‧‧‧資料高速緩衝記憶體單元
1776‧‧‧2級高速緩衝記憶體單元
1790‧‧‧處理器核心
1800‧‧‧指令解碼器
1802‧‧‧互連網路
1804‧‧‧2級高速緩衝記憶體
1806、1806A‧‧‧1級高速緩衝記憶體
1808‧‧‧純量單元
1810‧‧‧向量單元
1812‧‧‧純量暫存器
1814‧‧‧向量暫存器
1820‧‧‧拌和單元
1822A、1822B‧‧‧數字轉換單元
1824‧‧‧複製單元
1826‧‧‧寫入遮罩暫存器
1828‧‧‧算術邏輯單元
1902A-N‧‧‧核心
1906‧‧‧共用高速緩衝記憶體單元
1908‧‧‧特殊用途邏輯
1910‧‧‧系統代理器
1912、2302‧‧‧互連單元
1914‧‧‧整合記憶體控制器單元
1916‧‧‧匯流排控制器單元
2000、2200‧‧‧系統
2020‧‧‧控制器集線器
2040、2132、2134‧‧‧記憶體
2045、2138、2320‧‧‧協處理器
2050‧‧‧輸入/輸出集線器
2060、2114、2214、2215‧‧‧輸入/輸出裝置
2090‧‧‧圖形記憶體控制器集線器
2100‧‧‧多處理器系統
2116‧‧‧第一匯流排
2118‧‧‧匯流排橋接器
2120‧‧‧第二匯流排
2122‧‧‧鍵盤及/或滑鼠
2124‧‧‧音頻I/O
2127‧‧‧通訊裝置
2128‧‧‧儲存單元
2130‧‧‧指令/碼及資料
2139‧‧‧高性能介面
2150‧‧‧點對點互連
2172、2182‧‧‧整合記憶體控制器單元
2152、2154、2178、2188‧‧‧點對點介面
2176、2194、2186、2198‧‧‧點對點介面電路
2190‧‧‧晶片組
2196‧‧‧介面
2300‧‧‧晶片上系統
2310‧‧‧應用處理器
2330‧‧‧靜態隨機存取記憶體單元
2332‧‧‧直接記憶體存取單元
2340‧‧‧顯示單元
2402‧‧‧高階語言
2404‧‧‧編譯器
2406、2410‧‧‧二進制碼
2408‧‧‧指令集編譯器
2412‧‧‧指令轉換器
藉由參照下列說明及用以描繪實施例之附圖,可最佳理解本發明。在圖式中:圖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為依據本發明之實施例之單一處理器核心,連同其至晶粒上互連網路之連接及其2級(L2)高速緩衝記憶體之局部子集之方塊圖。
圖18B為依據本發明之實施例之圖18A中部分處理器核心之展開圖。
圖19為依據本發明之實施例之處理器之方塊圖,其可具有一個以上核心,可具有整合記憶體控制器,及可具有整合圖形。
圖20顯示依據本發明之一實施例之系統之方塊圖。
圖21顯示依據本發明之實施例之第一更具體示範系統之方塊圖。
圖22顯示依據本發明之實施例之第二更具體示範系統之方塊圖。
圖23顯示依據本發明之實施例之SoC之方塊圖。
圖24為方塊圖,依據本發明之實施例對比使用軟體指令轉換器將來源指令集中二進制指令轉換為目標指令集中二進制指令。
425‧‧‧方法
426、427‧‧‧方塊

Claims (24)

  1. 一種方法,包含:接收浮點捨入指令,該浮點捨入指令指出一或多個浮點資料元件之來源,指出在小數點後之小數位元的數量,各個該一或多個浮點資料元件將被捨入,及指出目的地儲存位置;以及回應於該浮點捨入指令,而將結果儲存於該目的地儲存位置中,該結果包括一或多個捨入之結果浮點資料元件,其各個包括在已捨入至該指出之小數位元數量的相應位置中該來源之該浮點資料元件之一。
  2. 如申請專利範圍第1項之方法,其中接收該浮點捨入指令包含接收明確指明該小數位元之該數量的浮點捨入指令。
  3. 如申請專利範圍第2項之方法,其中接收該浮點捨入指令包含接收具有包括複數位元,以明確指明該小數位元之該數量的立即值之浮點捨入指令。
  4. 如申請專利範圍第3項之方法,其中該立即值之位元〔7:4〕指明該小數位元之該數量。
  5. 如申請專利範圍第1項之方法,其中接收包含接收指出單一浮點資料元件之來源的浮點捨入指令,且其中儲存包含儲存包括複數捨入結果浮點資料元件之結果封裝資料,各個該捨入結果浮點資料元件包括已捨入至該指出之小數位元數量之該來源的該單一浮點資料元件。
  6. 如申請專利範圍第1項之方法,其中接收包含接 收指出封裝資料運算遮罩之浮點捨入指令,且其中儲存該結果包含有條件地將該一或多個捨入之結果浮點資料元件依據該封裝資料運算遮罩儲存於該結果中。
  7. 如申請專利範圍第1項之方法,其中接收包含接收指出來源之浮點捨入指令,該來源包括以下各項之一:(1)至少八個雙精度浮點資料元件;以及(2)至少十六個單一精度浮點資料元件。
  8. 如申請專利範圍第1項之方法,其中接收包含接收指出複數封裝浮點資料元件之來源的浮點捨入指令,且其中儲存包含儲存包括相應複數封裝捨入之結果浮點資料元件的結果,各個該封裝捨入之結果浮點資料元件包括已捨入至該指出之小數位元數量之相應位置中的該來源的該等封裝浮點資料元件之一。
  9. 如申請專利範圍第1項之方法,其中接收包含接收指出單一純量浮點資料元件之來源的浮點捨入指令,且其中儲存包含儲存包括單一相應捨入之結果浮點資料元件之結果,該單一相應捨入之結果浮點資料元件包括捨入至該指出之小數位元數量之該來源的該單一純量浮點資料元件。
  10. 一種設備,包含:複數暫存器;以及與該複數暫存器耦接之浮點執行單元,該浮點執行單元回應於指出一或多個浮點資料元件之來源浮點捨入指令可操作以指出該來源之各個該一或多個浮點資料元件之將 被捨入之在小數點後之小數位元的數量,及指出目的地儲存位置,而將結果儲存於該目的地儲存位置中,該結果包括一或多個捨入之結果浮點資料元件,其各個包括在已捨入至為該浮點捨入指令指出之該小數位元之該數量的相應位置中之該來源之該浮點資料元件之一。
  11. 如申請專利範圍第10項之設備,其中該浮點捨入指令明確指明該小數位元之該數量。
  12. 如申請專利範圍第10項之設備,其中該浮點捨入指令包含一立即值,其包括複數位元以明確指明該小數位元之該數量。
  13. 如申請專利範圍第11項之設備,其中該立即值之位元〔7:4〕明確指明該小數位元之該數量。
  14. 如申請專利範圍第10項之設備,其中該浮點捨入指令指出單一浮點資料元件之來源,且其中該浮點執行單元回應於該浮點捨入指令而儲存包括複數捨入結果浮點資料元件之結果封裝資料,各個該捨入結果浮點資料元件包括已捨入至該指出之小數位元數量之該來源的該單一浮點資料元件。
  15. 如申請專利範圍第10項之設備,其中該浮點捨入指令進一步指出封裝資料運算遮罩,且其中該浮點執行單元回應於該浮點捨入指令而有條件地將該一或多個捨入之結果浮點資料元件依據該封裝資料運算遮罩儲存於該結果中。
  16. 如申請專利範圍第10項之設備,其中該浮點捨 入指令指出包括以下各項之一的來源:(1)至少八個雙精度浮點資料元件;以及(2)至少十六個單一精度浮點資料元件。
  17. 如申請專利範圍第10項之設備,其中該浮點捨入指令指出複數封裝浮點資料元件之來源,且其中該浮點執行單元回應於該浮點捨入指令而儲存包括相應複數封裝捨入之結果浮點資料元件的結果,各個該封裝捨入之結果浮點資料元件包括已捨入至該指出之小數位元數量之相應位置中之該來源的該封裝浮點資料元件之一。
  18. 如申請專利範圍第10項之設備,其中該浮點捨入指令指出單一純量浮點資料元件之來源,且其中該浮點執行單元回應於該浮點捨入指令而儲存包括單一相應捨入結果浮點資料元件之結果,該單一相應捨入之結果浮點資料元件包括捨入至該指出之小數位元數量之該來源的該單一純量浮點資料元件。
  19. 一種系統,包含:互連:與該互連耦接之處理器,該處理器回應於指出一或多個浮點資料元件之來源之浮點捨入指令可操作以指出該來源之各個該一或多個浮點資料元件之將被捨入之小數點後之小數位元數量,並指出目的地,以將結果儲存於該目的地中,該結果包括一或多個捨入之結果浮點資料元件,各個包括在已捨入至為該浮點捨入指令指出之該小數位元之該數量的相應位置中該來源之該浮點資料元件之一;以及 與該互連耦接之動態隨機存取記憶體(DRAM)。
  20. 如申請專利範圍第19項之系統,其中該浮點捨入指令明確指明該小數位元之該數量。
  21. 如申請專利範圍第19項之系統,其中該浮點捨入指令指明捨入模式。
  22. 一種製品,包含:包括一或多種固態資料儲存材料之機器可讀取儲存媒體,該機器可讀取儲存媒體儲存浮點捨入指令格式,該浮點捨入指令指出一或多個浮點資料元件之來源,指出小數點後之小數位元數量,各個該一或多個浮點資料元件將被捨入,及指出目的地儲存位置,且若藉由機器執行該浮點捨入指令,可操作而使該機器實施運算,包含:將結果儲存於該目的地儲存位置中,該結果包括一或多個捨入之結果浮點資料元件,各個包括在已捨入至指出之該小數位元之該數量的相應位置中之該來源之該浮點資料元件之一。
  23. 如申請專利範圍第22項之製品,其中該浮點捨入指令明確指明該小數位元之該數量。
  24. 如申請專利範圍第22項之製品,其中該浮點捨入指令指明捨入模式。
TW101146194A 2011-12-22 2012-12-07 浮點捨入處理器 TWI544406B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066955 WO2013095535A1 (en) 2011-12-22 2011-12-22 Floating point rounding processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201339962A true TW201339962A (zh) 2013-10-01
TWI544406B TWI544406B (zh) 2016-08-01

Family

ID=48669176

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101146194A TWI544406B (zh) 2011-12-22 2012-12-07 浮點捨入處理器

Country Status (4)

Country Link
US (1) US10209986B2 (zh)
CN (2) CN104011647B (zh)
TW (1) TWI544406B (zh)
WO (1) WO2013095535A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI643124B (zh) * 2013-12-30 2018-12-01 三星電子股份有限公司 用於提供資訊處理的裝置、方法及系統

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104011647B (zh) 2011-12-22 2018-06-15 英特尔公司 浮点舍入处理器、方法、系统和指令
US9483263B2 (en) * 2013-03-26 2016-11-01 Via Technologies, Inc. Uncore microcode ROM
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
US9804842B2 (en) * 2014-12-23 2017-10-31 Intel Corporation Method and apparatus for efficiently managing architectural register state of a processor
US9817661B2 (en) * 2015-10-07 2017-11-14 Arm Limited Floating point number rounding
US10169043B2 (en) 2015-11-17 2019-01-01 Microsoft Technology Licensing, Llc Efficient emulation of guest architecture instructions
US10289386B2 (en) 2016-04-21 2019-05-14 Oracle International Corporation Iterative division with reduced latency
US10423389B2 (en) 2016-05-13 2019-09-24 Oracle International Corporation Methods for constructing lookup tables for division and square-root implementations
US20180173527A1 (en) * 2016-12-15 2018-06-21 Optimum Semiconductor Technologies, Inc. Floating point instruction format with embedded rounding rule
US10228938B2 (en) * 2016-12-30 2019-03-12 Intel Corporation Apparatus and method for instruction-based flop accounting
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10514913B2 (en) * 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
CN109036277B (zh) * 2018-09-27 2020-06-09 京东方科技集团股份有限公司 补偿方法及补偿装置、显示装置、显示方法及存储介质
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
CN109621405B (zh) * 2018-11-21 2023-04-14 罗伊互娱(深圳)有限公司 跨平台交互方法、装置、计算机设备及存储介质
CN109621404B (zh) * 2018-11-21 2023-04-18 罗伊互娱(深圳)有限公司 跨平台交互系统、方法、装置、计算机设备及存储介质
US11531546B2 (en) 2021-03-08 2022-12-20 International Business Machines Corporation Hexadecimal floating point multiply and add instruction

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696711A (en) * 1995-12-22 1997-12-09 Intel Corporation Apparatus and method for performing variable precision floating point rounding operations
US7725519B2 (en) * 2005-10-05 2010-05-25 Qualcom Incorporated Floating-point processor with selectable subprecision
US20080077772A1 (en) 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8543796B2 (en) * 2008-11-05 2013-09-24 Intel Corporation Optimizing performance of instructions based on sequence detection or information associated with the instructions
US20110004644A1 (en) * 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
US8386755B2 (en) 2009-07-28 2013-02-26 Via Technologies, Inc. Non-atomic scheduling of micro-operations to perform round instruction
US8407271B2 (en) 2009-08-28 2013-03-26 Advanced Micro Devices, Inc. Method for floating point round to integer operation
CN102087590A (zh) * 2009-12-03 2011-06-08 浙江大学 资源复用的浮点simd指令的执行装置
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
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
CN104011647B (zh) 2011-12-22 2018-06-15 英特尔公司 浮点舍入处理器、方法、系统和指令

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI643124B (zh) * 2013-12-30 2018-12-01 三星電子股份有限公司 用於提供資訊處理的裝置、方法及系統

Also Published As

Publication number Publication date
US10209986B2 (en) 2019-02-19
CN104011647A (zh) 2014-08-27
CN109086073A (zh) 2018-12-25
US20130290685A1 (en) 2013-10-31
CN104011647B (zh) 2018-06-15
TWI544406B (zh) 2016-08-01
WO2013095535A1 (en) 2013-06-27
CN109086073B (zh) 2023-08-22

Similar Documents

Publication Publication Date Title
TWI544406B (zh) 浮點捨入處理器
TWI743058B (zh) 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體
TWI575448B (zh) 三個來源運算元浮點加法處理器、方法、系統及指令
CN108647044B (zh) 浮点缩放处理器、方法、系统和指令
TWI474258B (zh) 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體
TWI489381B (zh) 多暫存器散布指令
TWI514268B (zh) 合併遮罩圖案之指令
TWI544411B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI489384B (zh) 執行置換運算的處理器與方法及具有該處理器的電腦系統
TW202326409A (zh) 用於融合乘加運算的系統、裝置及方法
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
JP2017529601A (ja) ビットシャッフルプロセッサ、方法、システム、および命令
TW201723805A (zh) 資料元件比較處理器、方法、系統及指令
TW201732572A (zh) 用於跨步的載入(strided load)的系統、設備及方法
TW201732637A (zh) 執行向量位元混洗的方法與裝置
TW201810029A (zh) 用於跨步載入的系統、設備及方法
TWI564796B (zh) 執行用以最佳化指令流的檢查之設備及方法
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TW201732573A (zh) 用於跨步載入(stride load)的系統、設備及方法
TWI697836B (zh) 處理包括高功率及標準指令之指令集的方法與處理器
TW201810020A (zh) 用於累乘的系統、設備及方法
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置
TWI737650B (zh) 用於從鏈結結構取回元件的處理器、系統和方法

Legal Events

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