TW201346720A - 浮點定比處理器、方法、系統及指令 - Google Patents

浮點定比處理器、方法、系統及指令 Download PDF

Info

Publication number
TW201346720A
TW201346720A TW101148754A TW101148754A TW201346720A TW 201346720 A TW201346720 A TW 201346720A TW 101148754 A TW101148754 A TW 101148754A TW 101148754 A TW101148754 A TW 101148754A TW 201346720 A TW201346720 A TW 201346720A
Authority
TW
Taiwan
Prior art keywords
floating point
point data
source
result
instruction
Prior art date
Application number
TW101148754A
Other languages
English (en)
Other versions
TWI544407B (zh
Inventor
Christina S Anderson
Amit Gradstein
Robert Valentine
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 TW201346720A publication Critical patent/TW201346720A/zh
Application granted granted Critical
Publication of TWI544407B publication Critical patent/TWI544407B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

一種包含接收一浮點定比指令之觀點的方法。該浮點定比指令表示包含一或多個浮點資料元之一第一來源、包含一或多個對應的浮點資料元之一第二來源、及一目的地。因應該浮點定比指令,一結果係被儲存於該目的地。該結果包含一或多個對應的結果浮點資料元,各包含該第二來源之對應的浮點資料元乘以該第一來源之一或多個浮點資料元之一底數的一整數之次方,該整數代表該第一來源之該對應的浮點資料元。其它方法、裝置、系統、及指令係被揭露。

Description

浮點定比處理器、方法、系統及指令
實施例係有關於處理器。具體言之,實施例係有關於因應浮點定比指令以定比浮點數之處理器。
浮點數係經常被使用於處理器、電腦系統、及其他電子裝置。浮點數的其中一個優點是其允許大範圍的數值表現於相對緊密的數值格式及/或位元的數量。
已知一些不同的浮點格式。浮點格式典型地分配用以表示浮點數之位元成為數個組成欄位,已知如正負號、有效位數、及浮點數的指數。
所屬技術領域中已知有許多機械指令用以處理浮點數。舉例來說,所屬技術領域中已知有機械指令用以在浮點及整數值之間轉換。
於此揭露浮點定比指令、執行浮點定比指令之處理器、當處理或執行浮點定比指令時由處理器所執行的方法、及結合一或多個處理器以處理或執行浮點定比指令之系統。任何於此揭露的處理器及系統皆為合適的。於以下描述中係說明多種特定細節(例如,特定處理器組態、操作的順序、指令格式、浮點格式、微結構細節等)。然而,在沒有這些特定細節的情況下,實施例亦可被實現。在其他 實例中,已知電路、結構及技術並未被詳細說明以避免模糊本說明的了解。
定比浮點數通常是有用的。定比浮點數意指將浮點數乘以一底數的另一數字之次方。具體言之,藉由將其中每一者乘以一底數的整數次方來定比浮點數通常是有用的。通常,整數次方係由另一浮點數導出。此定比浮點數之其中一例示用法係於自分開的指數及有效位數對浮點數之重建。藉由範例,浮點數之指數及有效位數可從彼此擷取或分開,然後分開的指數及有效位數可透過一系列的計算而被分開地處理。隨後地,於此分開處理之後,浮點數可藉由結合其分開地處理的指數及有效位數而被重組或重建。浮點數之定比亦有用於其他目的(例如,作為浮點數之一般操作、連同處理指數、平方根、對數、三角函數、及其他非代數的函數等)。
第1圖為具有包含一或多個浮點定比指令103之指令集102的處理器100之實施例的方塊圖。處理器可為任何各種複雜指令集計算(Complex Instruction Set Computing ;CISC)處理器、各種精簡指令集計算(Reduced Instruction Set Computing;RISC)處理器、各種超長指令字(Very Long Instruction Word;VLIW)處理器、各種其混合、或其他類型的處理器。於某些實施例,處理器可為通用處理器(例如,使用於桌上型、膝上型與類似電腦之類型的通用微處理器)。替代地,處理器可為專用處理器。適合的專用處理器之範例包含(但不限於)網路處理器、 通訊處理器、加密處理器、圖形處理器、共處理器(coprocessor)、嵌入式處理器、數位訊號處理器(DSP)、及控制器(例如,微控制器),這些僅為少部分的範例。
處理器具有指令集架構(ISA)101。ISA表示有關程式設計的處理器之一部份架構。ISA通常包含原生指令、架構暫存器、資料類型、定址模式、記憶體架構、中斷與異常處置、及處理器之外部輸入與輸出(I/O)。ISA係有別於微架構(microarchitecture),其一般表示被選擇以實現ISA之特定處理器設計技術。具有不同微架構之處理器可共用共同的ISA。
ISA包含指令集102,其由處理器所支持。指令集之指令表示巨集指令(例如,提供至處理器以供執行的指令),而不是微指令(micro instruction)或微處理作業(micro-ops)(例如,得自解碼巨集指令之處理器的解碼器者)。指令集包含一或多個浮點定比指令103。浮點定比指令之許多不同的實施例將進一步說明如下。處理器亦包含浮點執行邏輯108,其可操作以執行或處理浮點定比指令103。
ISA包含架構可見的(architecturally-visible)暫存器(例如,架構暫存器檔案)104。架構暫存器通常表示晶片上(on-die)處理器儲存位置。架構暫存器亦可於此被簡單稱為暫存器。除非有特別指定或明顯可知,詞組架構暫存器(phrases architectural register)、暫存器檔案、及暫存器係於此被使用為對於軟體及或程式設計師為可見的(例如,軟體可見的(software-visible))暫存器及/或由通用巨集 指令所特定以識別運算元之暫存器。這些暫存器係對比於給定微架構中之其他非結構性或非結構性可見的暫存器(例如,由指令所使用的暫時暫存器、重排緩衝器、引退暫存器等)。
說明的架構暫存器包含緊縮資料暫存器105。各緊縮資料暫存器可操作以儲存緊縮資料、向量資料、或SIMD資料。於某些實施例,緊縮資料暫存器可被使用以儲存與浮點定比指令103相關聯之緊縮的浮點資料。於某些實施例,雖然非必需,緊縮資料暫存器亦可儲存整數資料。於某些實施例,緊縮資料暫存器可被使用以儲存與浮點定比指令相關聯之純量浮點資料。替代地,對於浮點定比指令,架構暫存器可包含分開的組(separate set)之純量浮點暫存器以分別地儲存純量浮點資料。
於某些實施例,雖然非必需,暫存器可選項地包含遮罩暫存器106。遮罩暫存器可儲存緊縮資料操作遮罩以遮罩(mask)或斷定(predicate)緊縮資料操作(例如,與浮點定比指令相關聯的緊縮資料操作)。遮罩暫存器及遮罩操作將說明如下。
暫存器亦包含控制及/或狀態暫存器107。於某些態樣,一或多個控制及/或狀態暫存器可包含與浮點定比指令之執行相關聯的狀態及/或控制資訊(例如,其可包含將由浮點定比指令所使用的預設修整模式,除非有其中有置換(override))。
第2圖為具有可操作以執行一實施例之浮點定比指令 203的浮點執行單元208之指令處理裝置200的實施例之方塊圖。於某些實施例,指令處理裝置可為一處理器及/或可被包含於一處理器中。舉例來說,於某些實施例,指令處理裝置可為(或可被包含於)第1圖之處理器100或類似者。替代地,指令處理裝置可被包含於不同的處理器或電子系統。於某些實施例,指令處理裝置可被包含於附加(add-on)或分開的浮點處理器或單元以引入(introduce)或補充相關聯的處理器之浮點處理能力。
指令處理裝置200可接收浮點定比指令203。舉例來說,指令可自指令提取單元、指令序列、或記憶體被接收。浮點定比指令可表示機器指令、巨集指令、或控制訊號,其係由指令處理裝置所認可(recognize)且控制該裝置以執行特定操作。
浮點定比指令可明確地指明(例如,透過位元或一或多個欄位)或其他者來表示(例如,暗示地表示)第一來源216、可指明或其他者來表示第二來源218、且可指明或其他者來表示目的地(例如,指定儲存位置)220,其中結果222係根據指令而被儲存。第一來源包含一或多個浮點資料元217、第二來源包含一或多個對應的浮點資料元219。對應的資料元可在來源內對應於相同的相關位置。
浮點數包含正負號(sign)、有效位數(significand)、底數(base)、及指數(exponent),其關係係如方程式1所顯示: A=(-1) sign significandbase exponent 方程式1 表示法“(-1) sign ”表示負一的sign次方。此表示法評估浮點數為正(+)或負(-)。舉例來說,當正負號為整數零時,浮點數為正的,或替代地當正負號為整數一時,浮點數為負的。有效位數包含數字串,其長度在很大程度上決定浮點數的精度。有效位數有時亦稱為顯著位數(significant digits)、係數(coefficient)、小數(fraction)或尾數(mantissa)。數基點(基數point)(例如,十進制格式之小數點)通常暗示地假設位於固定的位置(例如,最有效數字或最左者之右邊)。表示法“base exponent ”表示底數的指數之次方(base raised to the power of the exponent)。此亦可表示為底數的指數次方(base raised to the exponent power)、底數的指數次方(base raised to the exponent)、或簡單地表示底數的指數次方(base to the exponent)。底數通常為底數2(用於二進制)、底數10(用於十進制)、或底數16(用於十六進制)。底數有時被稱為基數(基數)。指數亦被稱為首數(characteristic)或定比(scale)。底數的指數次方效果上以指數數字來偏移數基點(例如,從暗示的或假設的開始位置)。若指數為正,則數基點向右偏移,或若指數為負,則向左偏移。
再次參照第2圖,於某些實施例,雖然非必需,第一來源216、第二來源218、及目的地220可各在指令處理裝置之一組緊縮資料暫存器205內。緊縮資料暫存器可各表示晶片上儲存位置(例如,於晶片上具有執行單元)。緊縮資料暫存器可表示架構暫存器。各緊縮資料暫存器可被 操作以儲存緊縮的或向量浮點資料。於某些實施例,緊縮資料暫存器可被操作以儲存純量浮點資料。緊縮資料暫存器可使用已知技術以不同的方式被實現於不同的微架構,且不限於任何特定類型的電路。各種不同的類型之暫存器都是合適的,只要其能夠如本文中所述般儲存及提供資料。合適的類型之暫存器的範例包含(但不限於)專屬實體暫存器、使用暫存器更名之動態分配實體暫存器及其組合。替代地,於其他實施例,一或多個第一來源、第二來源、目的地、或一些其組合可被儲存於緊縮資料暫存器旁邊之其他儲存位置(例如,於純量浮點暫存器、記憶體位置等)。
所說明的指令處理裝置包含指令解碼單元或解碼器214。解碼器可接收及解碼較高階的機器指令巨集指令,並輸出一或多個較低階的微操作、微式碼進入點、微指令、或其他較低階的指令或反應及/或由原始較高階的指令所導出的控制訊號。一或多個較低階的指令或控制訊號可透過一或多個較低階的(例如,電路層級或硬體層級)操作來實現較高階的指令之操作。解碼器可使用各種不同的機構而被實現,包含(但不限於)微碼唯讀記憶體(ROM)、檢查表、硬體實現、可程式化的邏輯陣列(Programmable Logic Array;PLA)、及所屬技術領域中已知的使用以實現解碼器的其他機構。
於其他實施例,取代具有解碼器214,可使用指令模仿器、轉譯器、變形器(morpher)、解譯器、或其他指令 轉換邏輯。各種不同的類型的指令轉換邏輯為所屬技術領域中所已知者且可被實現於軟體、硬體、韌體或其組合。指令轉換邏輯可接收指令、模仿、轉譯、變形(morph)、解譯或其他轉換所接收的指令為一或多個對應的導出指令或控制訊號。於其他實施例中,指令轉換邏輯與解碼器兩者皆可被使用。舉例來說,該裝置可具有指令轉換邏輯以轉換所接收的指令為一或多個中間指令且可具有解碼器以解碼一或多個中間指令為可由指令處理裝置之原生硬體所執行的一或多個較低階的指令或控制訊號。某些或全部的指令轉換邏輯(相對於其餘的指令處理裝置)可被置於晶片外,例如於另一晶粒上或於晶片外記憶體中。
請再參見第2圖,浮點執行單元208係與解碼器214耦接。執行單元可從解碼器接收一或多個微操作、微式碼進入點、微指令、其他指令、或反應或由浮點定比指令所導出的其他控制訊號。執行單元亦與第一來源216、第二來源218、及目的地220耦接。浮點執行單元包含設計以實現浮點數之操作(例如,算術操作、定比操作等)的邏輯(例如,典型地至少一些電路)。
因應及/或由於浮點定比指令203,浮點執行單元208可操作以儲存結果222於目的地,該浮點定比指令203指明或其他者來表示第一來源216包含一或多個浮點資料元217、指明或其他者來表示第二來源218包含一或多個對應的浮點資料元219、及指明或其他者來表示目的地220。該結果包含一或多個對應的結果定比浮點資料元。於某 些實施例,各一或多個結果定比浮點資料元包含第二來源之對應的浮點資料元乘以底數的(代表第一來源之對應的浮點資料元之)整數次方。該底數與第一來源之一或多個浮點資料元的底數(例如,通常底數2但亦可為底數10、底數16等)相同。
浮點執行單元及/或指令處理裝置可包含明確的或特定的邏輯(例如,潛在地(potentially)與軟體及/或韌體組合之典型地電路或其他硬體),其能夠因應指令(例如,因應由該指令所導出的一或多個微指令或其他控制訊號)而執行及/或處理浮點定比指令且儲存結果。於某些實施例,浮點執行單元可包含積體電路、數位電路、特定功能積體電路、類比電路、程式化邏輯裝置、包含指令之儲存裝置、或其組合。於某些實施例,浮點執行單元可包含至少一些電路或硬體(例如,從電晶體、閘極、及/或其他積體電路組件組構之特定電路)。
為了避免模糊本說明,將圖示及說明相對簡單的指令處理裝置。於其他實施例,指令處理裝置可包含其他已知組件,例如舉例來說,指令提取單元、指令排程單元、分支預測單元、指令及資料快取、指令及資料轉譯後備緩衝器、預取緩衝器、微指令序列、微指令序列器、匯流排介面單元、第二或更高階快取、引退單元(retirement unit)、暫存器更名單元、包含於處理器中之其他組件、及其各種組合。實施例可具有多個核心、邏輯處理器、或執行引擎。可操作以執行於此所揭露之指令的實施例之執行單元 可被包含於至少一、至少二、大部分、或所有核心、邏輯處理器、或執行引擎中。處理器中組件之組態有字義上許多不同的組合,且實施例並非用以限制任何特定組合或組態。
第3圖為說明可因應一實施例的浮點定比指令而被執行之浮點定比操作324之一實施例的方塊圖。該指令指明或其他者來表示包含一或多個浮點資料元之第一來源317、及包含一或多個對應的浮點資料元之第二來源318。於某些實施例,第一來源包含單一純量浮點資料元A0、且第二來源包含單一純量浮點資料元B0。於其他實施例,第一來源包含複數個N緊縮的浮點資料元A0-AN、且第二來源包含一對應的複數個N緊縮的浮點資料元B0-BN,其中N為二或更多。通常,緊縮的浮點資料元的數字N可等於緊縮資料之位元的尺寸除以浮點資料元之位元的尺寸。
浮點定比指令亦指明或其他者來表示目的地(例如,指定儲存位置)。因應浮點定比指令,包含一或多個對應的結果浮點資料元之結果322可被產生及儲存於目的地。於某些實施例,各一或多個結果浮點資料元(Ci)可表示定比浮點結果資料元,其包含第二來源(Bi)之對應的浮點資料元乘以底數的代表第一來源之對應的浮點資料元(Ai)的整數次方(int(A0)),如以下方程式: 底數可為第一及/或第二來源之浮點資料元的底數(例如, 通常為底數2,但替代地為底數10或底數16)。
於某些實施例,浮點定比指令/操作可允許第一來源具有非整數浮點值。此有助於避免一或多個前面的指令產生輸入至浮點定比指令/操作(例如,執行位元級擷取(bit level extraction)等)之整數值。於某些實施例,浮點定比指令/操作可操作以計算或決定在單一浮點定比指令/操作之執行的範圍內之代表第一來源之一或多個對應的浮點資料元的一或多個整數(例如,代表其量級(magnitudes))。於某些實施例,各整數可為小於或等於第一來源之對應的浮點資料元最大整數(例如,底部(floor))。於其他實施例,各整數可為大於或等於第一來源之對應的浮點資料元最小整數(例如,頂部(ceiling))。代表對應的浮點資料元之量級的其他整數亦可根據其他轉換慣例來使用。
於某些實施例,浮點定比指令/操作可允許第一及/或第二來源包含具有用來定義浮點數之特殊值(例如,正無限大、負無限大、非數值(NaN)、反常數等)之浮點資料元。於此等實施例,指令/操作可在不產生中斷(interrupt)、陷阱(trap)、或其他異常(例如,欠位(underflow)或溢位(overflow)異常)的情況下完成執行並儲存結果。藉由範例,第一來源可包含為非數值(NaN)、正無限大、負無限大、及反常數之其中一者的浮點資料元,且結果可在不產生異常的情況下被儲存。於另一範例,第一來源可包含為非數值(NaN)之浮點資料元,可在沒有異常的情況下完成執行,且結果中之對應的結果浮點資料元可為NaN。於另一 範例,第二來源可包含為正無限大之浮點資料元,第一來源可包含為非數值(NaN)之對應的浮點資料元,可在沒有異常的情況下完成執行,且對應的結果浮點資料元可為非數值(NaN)。有益地,指令之在沒有異常的情況下處置極端情況及在沒有需要一系列的指令來檢查極端情況並在其發生時對其處置的能力會增加計算的效率。
再者,即使當輸入非為特別的,結果可為特別的(例如,當結果不符合浮點格式時,可溢位或可欠位)。於此等情況,該指令可操作以適當地處置這些特殊情況,例如於根據IEEE標準規格之某些實施例。當此等特殊情況發生時,指令的執行可在沒有中斷或異常的情況下完成。亦即,該指令可操作以適當地處置特殊輸入及/或特殊輸出。有益地,異常及中斷可被避免且以分開的指令序列來處理此等特殊情況之額外的處理並非必需的。
第4A-E圖為說明合適的浮點格式之例示實施例的方塊圖。美國電機電子工程師學會(Institute of Electrical and Electronics Engineers;IEEE)已標準化這些格式於許多版本的IEEE 754標準。
第4A圖說明半精度浮點格式410A。半精度浮點格式具有16位元且亦稱為binary16。半精度浮點格式包含10位元有效位數411A於位元[9:0]、5位元指數412A於位元[14:10]、及1位元正負號413A於位元[15]。
第4B圖說明單精度浮點格式410B。單精度浮點格式具有32位元且亦稱為binary32。單精度浮點格式包含23 位元有效位數411B於位元[22:0]、8位元指數412B於位元[30:23]、及1位元正負號413B於位元[31]。
第4C圖說明雙精度浮點格式410C。雙精度浮點格式具有64位元且亦稱為binary64。雙精度浮點格式包含52位元有效位數411C於位元[51:0]、11位元指數412C於位元[62:52]、及1位元正負號413C於位元[63]。目前,單精度及雙精度格式可能是最廣泛使用於大多數的處理器、電腦系統、及電子裝置。
第4D圖說明延伸的雙精度浮點格式410D。延伸的雙精度浮點格式具有80位元。延伸的雙精度浮點格式包含64位元有效位數411D於位元[63:0]、15位元指數412D於位元[78:64]、及1位元正負號413D於位元[79]。
第4E圖說明四倍精度浮點格式410E。四倍精度浮點格式具有128位元且亦稱為binary128。四倍精度浮點格式包含112位元有效位數411E於位元[111:0]、15位元指數412E於位元[126:112]、及1位元正負號413E於位元[127]。
於這些浮點格式中之各者中,底數係暗示或假設為底數2(亦即,二進制)且非以浮點格式被分開地儲存。有效位數之最有效位元或最左位元已知為J位元。J位元係暗示地假設為二進制1,且通常不以浮點格式儲存,而是為暗示的或隱藏的位元,其提供額外的精度(例如,明確地具有23位元用於有效位數之單精度浮點數實際上具有24位元的精度)而不需要被儲存。數基點係通常假定為遵循 (follow)J位元。指數一般具有指數偏差。舉例來說,半精度格式可具有15的指數偏差、單精度格式可具有127的指數偏差、雙精度格式可具有1023的指數偏差、及四倍精度格式可具有16383的指數偏差。若有需要,浮點數及格式的進一步細節係於IEEE 754說明。
於此僅有一些說明範例。其他合適的格式包含(但不限於)decima132、decima164、及decima1128。再者,未來將開發的其他格式亦將通常為合適的。
第5圖為處理浮點定比指令的實施例之方法524的實施例之方塊流程圖。於許多實施例,該方法可藉由通用處理器、專用處理器(例如,圖形處理器、或數位訊號處理器)、或另一類型的數位邏輯裝置或指令處理裝置而執行。於某些實施例,該方法524可藉由第1圖之處理器100或第2圖之指令處理裝置200來執行。替代地,該方法524可藉由處理器或指令處理裝置之不同的實施例來執行。再者,第1圖之處理器100、及第2圖之指令處理裝置200可執行與第5圖之方法524的操作及方法相同的、類似的、或不同的操作及方法。
該方法包含接收浮點定比指令,於方塊525。浮點定比指令指明或其他者來表示包含一或多個浮點資料元之第一來源、指明或其他者來表示包含一或多個對應的浮點資料元之第二來源、及指明或其他者來表示目的地(例如,指定儲存位置)。於許多態樣,該指令可在處理器、指令處理裝置、或其部份(例如,解碼器、指令轉換器等)被接 收。於許多態樣,該指令可從處理器外(off-processor)來源(例如,從主記憶體、磁碟、或匯流排或互連)、或從處理器內(on-processor)來源(例如,從指令快取)被接收。
接著,於方塊526,因應由於及/或由浮點定比指令所指明者,結果係被儲存於目的地。結果包含一或多個對應的結果浮點資料元。各一或多個結果浮點資料元包含第二來源之對應的浮點資料元乘以底數(例如,第一來源之一或多個浮點資料元)的整數之次方,該整數代表第一來源之對應的浮點資料元。藉由範例,浮點執行單元、指令處理裝置、或處理器可執行由該指令所指明的操作並儲存結果。
所說明的方法包含從處理器或指令處理裝置外部為可見之操作(例如從軟體態樣為可見的)。於其他實施例,該方法可選擇性的包含在處理器內部發生的一或多個操作。藉由範例,浮點定比指令可被提取,然後被解碼、轉譯、模仿、或其他轉換,而成為一或多個其他指令或控制訊號。來源運算元/資料可被存取及/或接收。浮點執行單元能夠執行指令所指明的操作,且可執行操作(例如,實現指令之操作的微架構操作可被執行)。
第6A-C圖為說明因應浮點定比指令之實施例可被執行於緊縮的32位元單精度浮點資料之浮點定比操作之實施例的方塊圖。
第6A圖說明浮點定比操作624A之第一實施例,其可被執行於包含兩個緊縮的32位元單精度浮點資料元 A0-A1之第一64位元來源緊縮資料617A、及包含兩個對應的緊縮的32位元單精度浮點資料元B0-B1之第二64位元來源緊縮資料618A,以產生及儲存包含兩個對應的緊縮的32位元單精度結果浮點資料元C0-C1之64位元結果622A。
第6B圖說明浮點定比操作624B之第二實施例,其可被執行於包含四個緊縮的32位元單精度浮點資料元A0-A3之第一128位元來源緊縮資料617B、及包含四個對應的緊縮的32位元單精度浮點資料元B0-B3之第二128位元來源緊縮資料618B,以產生及儲存包含四個對應的緊縮的32位元單精度結果浮點資料元C0-C3之128位元結果622B。
第6C圖說明浮點定比操作624C之第三實施例,其可被執行於包含八個緊縮的32位元單精度浮點資料元A0-A7之第一256位元來源緊縮資料617C、及包含八個對應的緊縮的32位元單精度浮點資料元B0-B7之第二256位元來源緊縮資料618C,以產生及儲存包含八個對應的緊縮的32位元單精度結果浮點資料元C0-C7之256位元結果622C。
於第6A-C圖之各者中,各32位元單精度結果浮點資料元(Ci)包含第二來源之對應的32位元單精度浮點資料元(Bi)乘以底數二(2)的一整數次方,該整數代表第一來源之對應的32位元單精度浮點資料元(int(Ai))。
第7A-B圖為說明因應浮點定比指令之實施例可被執 行於緊縮的64位元單精度浮點資料之浮點定比操作之實施例的方塊圖。
第7A圖說明浮點定比操作724A之第一實施例,其可被執行於包含兩個緊縮的64位元雙精度浮點資料元A0-A1之第一128位元來源緊縮資料717A、及包含兩個對應的緊縮的64位元雙精度浮點資料元B0-B1之第二128位元來源緊縮資料718A,以產生及儲存包含兩個對應的緊縮的64位元雙精度結果浮點資料元C0-C1之128位元結果722A。
第7B圖說明浮點定比操作724B之第二實施例,其可被執行於包含四個緊縮的64位元雙精度浮點資料元A0-A3之第一256位元來源緊縮資料717B、及包含四個對應的緊縮的64位元雙精度浮點資料元B0-B3之第二256位元來源緊縮資料718B,以產生及儲存包含四個對應的緊縮的64位元雙精度結果浮點資料元C0-C3之256位元結果722B。
於第7A-B圖之各者中,各64位元雙精度結果浮點資料元(Ci)包含第二來源之對應的64位元雙精度浮點資料元(Bi)乘以底數二(2)的一整數次方,該整數代表第一來源之對應的64位元雙精度浮點資料元(int(Ai))。
第8圖為說明因應浮點定比指令之實施例可被執行於純量32位元單精度浮點資料之浮點定比操作824之實施例的方塊圖。該操作係執行於純量32位元單精度浮點資料元A之第一來源817、及純量32位元單精度浮點資料 元B之第二來源818。因應操作及/或指令所儲存之結果822包含對應的純量32位元單精度結果浮點資料元C。純量32位元單精度結果浮點資料元C包含第二來源之對應的32位元單精度浮點資料元(B)乘以底數二(2)的一整數次方,該整數代表第一來源之對應的32位元單精度浮點資料元(int(A))。
第9圖為說明因應浮點定比指令之實施例可被執行於純量64位元雙精度浮點資料之浮點定比操作924之實施例的方塊圖。該操作係執行於純量64位元雙精度浮點資料元A之第一來源917、及純量64位元雙精度浮點資料元B之第二來源918。因應操作及/或指令所儲存之結果922包含對應的純量64位元雙精度結果浮點資料元C。純量64位元雙精度結果浮點資料元C包含第二來源之對應的64位元雙精度浮點資料元(B)乘以底數二(2)的一整數次方,該整數代表第一來源之對應的64位元雙精度浮點資料元(int(A))。
如第8-9圖所示,於某些實施例,第一來源可被儲存與第一緊縮資料儲存位置(例如,緊縮資料暫存器)、第二來源可被儲存於第二緊縮資料儲存位置、且結果可被儲存於第三緊縮資料儲存位置,雖然非必需。替代地,這些中之一或多者可替代地被儲存於非緊縮的暫存器或記憶體位置。
於此僅例示一些浮點定比操作之說明實施例。單精度及雙精度浮點資料之操作已被顯示,此係由於這些格式的 廣泛使用。然而,於其他實施例,浮點定比操作可操作於其他浮點格式(例如,半精度、四倍精度、延伸的雙精度等)。於說明中,兩來源之浮點格式皆相同,雖然於其他實施例,這些來源之浮點格式可為不同(例如,混合的格式定比操作可被執行)。為了說明的簡潔,具有256位元或更少的寬度之緊縮資料已被顯示。然而,於其他實施例,浮點定比操作可操作於具有512位元或更寬的寬度(例如,包含至少十六個32位元單精度浮點資料元或至少八個64位元雙精度浮點資料元)之緊縮資料。再者,使用底數2之浮點定比操作已被顯示,此係由於目前底數2的廣泛使用。然而,於其他實施例,浮點定比操作可使用其他底數(例如,底數10、底數16等)。
第10圖為說明因應具有具有資料元廣播的浮點定比指令之實施例具有資料元廣播之浮點定比操作1024的實施例之方塊圖。資料元廣播係有用於演算法,其中係期望再使用(reuse)單一來源資料元以用於各多個向量操作。該指令可表示具有將被廣播的單一浮點資料元A之第一來源1017、具有複數個緊縮的浮點資料元B0-BN(其中N至少為二)之第二來源1018、及目的地。
具有資料元廣播之浮點定比指令可結合第一來源之單一浮點資料元A的初始資料元廣播與隨後的浮點定比操作。初始資料元廣播可廣播或複製單一浮點資料元A多次(例如,等於第二來源之浮點資料元的數字N的次數)。浮點資料元A之複製的值可表示向量或緊縮資料,其將 被使用於隨後的浮點定比操作,隨著第二來源中之複數個浮點資料元B0-BN。於某些實施例,單一浮點資料元A可位於記憶體中且資料元廣播可透過由具有廣播之浮點定比指令所導出的載入操作(例如,載入微處理作業(load micro-op))而被實現。單一資料元之廣播可表示執行浮點定比操作之前的預處理(pre-processing)資料轉換。
結果緊縮的浮點資料1022可因應具有廣播操作及/或指令之浮點定比而被儲存於目的地。該結果可包含複數個緊縮的浮點資料元C0-CN,其各對應至第二來源之複數個緊縮的浮點資料元B0-BN的相對應的一者。各複數個緊縮的結果浮點資料元(Ci)可包含第二來源之對應的浮點資料元(Bi)乘以底數(例如,底數2)的一整數次方,該整數代表第一來源之對應的單一浮點資料元(int(A))。應注意的是,第一來源之單一浮點資料元係被使用於各結果資料元。
其他實施例涉及遮罩浮點定比指令及/或操作。遮罩浮點定比指令可指明或其他者來表示緊縮資料操作遮罩。緊縮資料操作遮罩於此亦可稱為遮罩。各遮罩可表示斷定(predicate)運算元或條件控制運算元,其可遮罩、斷定、或有條件地控制與該指令相關聯的浮點定比操作是否將被執行及/或浮點定比操作的結果是否將被儲存。於某些實施例,各遮罩可被操作以以每一資料元粒度(at per-data element granularity)來遮罩浮點定比操作。各遮罩可允許浮點定比操作用於不同的待斷定的結果資料元或有條件地 分開地及/或獨立地控制的其他結果資料元。
遮罩可各包含多個遮罩元(mask element)、斷定元(predicate element)、條件控制元(conditional control element)或旗標(flag)。元或旗標可被包含於與結果資料元之一對一對應(例如,若有四個結果資料元,則可有四個元或旗標)。各元或旗標可被操作以遮罩分開的緊縮資料操作及/或浮點定比結果之儲存於對應的結果資料元中。通常各元或旗標可為單一位元。單一位元可允許指明兩種不同的可能性之任一者(例如,執行操作相對於不執行操作、儲存操作的結果相對於儲存操作的結果等)。
遮罩的各位元之二進制值可斷定或控制與將被執行的遮罩浮點定比指令相關聯之遮罩浮點定比指令是否將被執行及/或遮罩浮點定比指令的結果是否將被儲存。根據一種可能的慣例,各位元可分別被設定(亦即,具有二進制值為1)或清除(亦即,具有二進制值為0)以允許或不允許執行於由遮罩浮點定比指令所表示的第一及第二來源之資料元的浮點定比操作之結果被儲存於對應的結果資料元中。
於某些實施例,合併遮罩(merging-masking)可被執行。於合併遮罩,當操作被遮罩時,來自來源緊縮資料之對應的資料元之值可被儲存於對應的結果資料元。舉例來說,若來源係被再使用為目的地,則對應的目的地資料元可保持其初始來源值(亦即,其不會隨計算結果被更新)。於其他實施例,歸零遮罩(zeroing-masking)可被執行。於歸 零遮罩,當操作被遮罩,對應的結果資料元可被歸零或一零值可被儲存於對應的結果資料元中。替代地,其他預先決定的值可被儲存於經遮罩的結果資料元。
於某些實施例,浮點定比操作可選項地被執行於所有第一及第二來源資料之對應的資料元對,而不管遮罩之對應的位元,但是該結果根據遮罩之對應的位元可或可不被儲存於結果緊縮資料中。替代地,於另一實施例,若遮罩之對應的位元指明操作的結果不被儲存於緊縮資料結果中,則浮點定比操作可選項地被省略(亦即,不執行)。於某些實施例,異常及/或違反可選項地被抑制(或非提高)操作於經遮罩的元(masked-off element)。於某些實施例,對於具有記憶體運算元之遮罩浮點定比指令,記憶體錯誤可對於經遮罩的資料元選項地被抑制。
第11圖為說明因應遮罩浮點定比指令之實施例遮罩浮點定比操作1124的實施例之方塊圖。該指令指明或其他者來表示包含緊縮的浮點資料元A0-AN之第一來源1117、包含緊縮的浮點資料元B0-BN之第二來源1118、緊縮資料操作遮罩1128、及目的地(例如,指定儲存位置)。藉由範例,於512位元寬緊縮資料及32位元單精度浮點資料元之情況,該遮罩可包含十六個1位元遮罩位元、或在64位元雙精度浮點資料元的情況下,該遮罩可包含八個1位元遮罩位元。
包含複數個結果浮點資料元之結果緊縮的浮點資料1122係因應該指令而被儲存於目的地中。當結果浮點資 料元沒有被緊縮資料操作遮罩所遮罩時(例如,於當對應的遮罩位元被設為1時之說明中),浮點定比操作之結果係被儲存。替代地,當浮點資料元係由緊縮資料操作遮罩所遮罩時(例如,於當對應的遮罩位元被設為0時之說明中),一些其他值(例如歸零或合併的值)係被儲存。
第12圖為說明緊縮資料操作遮罩暫存器1206之合適的集之實施例之方塊圖。各暫存器可被使用以儲存緊縮資料操作遮罩。於所說明的實施例,該集包含八個緊縮資料操作遮罩暫存器,標示為k0到k7。替代實施例可包含少於八個(例如,二、四、六等)或多於八個(例如,十六、二十、三十二等)的緊縮資料操作遮罩暫存器。於所說明的實施例,各緊縮資料操作遮罩暫存器為64位元。於替代實施例,緊縮資料操作遮罩暫存器之寬度可為寬於64位元(例如,80位元、128位元等)或窄於64位元(例如,8位元、16位元、32位元等)。緊縮資料操作遮罩暫存器可使用已知技術而以不同方式來實現(且不限於任何已知特定類型的電路)。
第13圖為說明因應具有加法之浮點定比操作之實施例具有加法之浮點定比操作1324的實施例之方塊圖。具有加法之浮點定比指令指明或其他者來表示包含緊縮的浮點資料元A0-AN之第一來源1317、包含緊縮的浮點資料元B0-BN之第二來源1318、包含緊縮的浮點資料元D0-DN之第三來源1332、及目的地(例如,指定儲存位置)。
包含複數個結果浮點資料元C0-CN之結果緊縮的浮點 資料1322係因應該指令而被儲存於目的地。各結果浮點資料元(Ci)包含第三來源之對應的浮點資料元(Di)加上第二來源之對應的浮點資料元(Bi)乘以底數(於實施例中為底數2)的一整數(該整數代表第一來源之對應的浮點資料元(int(Ai)))之次方的乘積之和。
第14圖為用於浮點定比指令1403之指令格式的實施例之方塊圖。指令格式包含操作碼或運算碼1433。運算碼可表示可操作以識別將被處理器執行的指令及/或操作之複數個位元或一或多個欄位。
如圖所示,於某些實施例,指令格式可包含第一來源說明符1434以明確地指明第一來源運算元或儲存位置、第二來源說明符1435以明確地指明第二來源運算元或儲存位置、及目的地說明符1436以明確地指明結果將被儲存之目的地運算元或儲存位置。藉由範例,這些說明符各可包含暫存器、記憶體位置、或其他儲存位置之一位址。替代地,如前所述,一或多個第一來源、第二來源、或目的地可對於指令為暗示的(與被明確地指明相反)。舉例來說,這些來源之其中一者可選項地被再使用為目的地且初始內容可被以該結果覆寫,於該情況下,目的地可被暗示地表示為這些來源之其中一者。於另一實施例,一或多個額外的來源可選項地暗示地表示或明確地指明以提供一或多個額外的運算元(例如,提供第13圖之添加的資料元1332)。
於指令為具有資料元廣播之浮點定比指令的某些實施 例,指令格式可包含選擇性的廣播控制1437。廣播控制可包含一或多個位元或欄位以表示資料元廣播將被執行以廣播從特定的或指示的儲存位置所存取的單一來源資料元至由該指令所使用的複數個來源資料元。
於指令為遮罩浮點定比指令之某些實施例,指令格式可包含選擇性的遮罩說明符1438以明確地指明緊縮資料操作遮罩運算元或儲存位置(例如,遮罩暫存器)。替代地,緊縮資料操作遮罩可被暗示地表示。於某些實施例,指令格式亦可包含選擇性的遮罩操作說明符之類型1439。遮罩操作說明符之類型可指明遮罩操作之類型。藉由範例,遮罩操作說明符之類型可包含單一位元以指明合併遮罩或歸零遮罩是否將被執行。替代地,遮罩操作之類型可被暗示地表示(例如,於暗示的控制暫存器)。如前所述,遮罩是選擇性的且非必需者。
於某些實施例,浮點定比指令格式可包含選擇性的浮點修整控制1440。浮點修整控制可置換處理器之預設浮點修整模式且可被使用以修整指令的最終結果。浮點操作通常利用算術的浮點修整。舉例來說,當浮點操作之結果或浮點的轉換需要較有效位數所提供之位元更多的位元時,修整可被使用。藉由範例,特定Intel處理器具有控制暫存器(例如,已知為MXCSR之機械狀態及控制暫存器),其包含修整模式控制位元(例如,RM)以指明預設修整模式。指令之浮點修整控制可表示一或多個位元或欄位以明確地指明用以置換預設浮點修整模式之算術浮點修整模 式。於某些實施例,指令之編碼前置可允許指令前置式(prefix-based)修整控制。合適的修整模式之範例包含(但不限於)以下修整模式:(1)向最近者做進位(round to nearest),其中修整至最接近的偶數位;(2)朝負無限大捨去(round down),其中負的結果遠離零來修整;(3)朝正無限大捨進(round up),其中負的結果朝零來修整;(4)向零方向捨入(round toward zero),截尾(truncate)。於某些實施例,這些修整模式中之各者亦可支持SAE(抑制所有異常)屬性以去能(disable)浮點異常的報告。
所說明的指令格式顯示欄位之類型的範例,其可被包含於浮點定比指令之實施例。如所示者,某些實施例可結合廣播與遮罩且亦可指明修整模式。替代實施例可包含所說明的欄位之子集或可增加額外的欄位。所說明的欄位之次序/排列並非必需,而欄位可被重新排列。欄位不需包含相連的順序之位元,而可被以非相連的或分開的位元組成。於某些實施例,雖然並非必需,指令格式可遵循EVEX編碼或指令格式。
第15圖為緊縮資料暫存器1505之合適的集的實施例之方塊圖。所說明的緊縮資料暫存器包含三十二個512位元緊縮資料或向量暫存器。這些三十二個512位元暫存器被標示為ZMM0至ZMM31。於所說明的實施例,雖然並非必需,較低階256位元的這些暫存器中之較低的十六個暫存器(亦即,ZMM0-ZMM15)被化名(aliased)或覆蓋(overlaid)於標示為YMM0-YMM15之各別的256位元緊縮 資料或向量暫存器。同樣的,於所說明的實施例,雖然亦非必需,較低階128位元的YMM0-YMM15被化名或覆蓋於標示為XMM0-XMM15之各別的128位元緊縮資料或向量暫存器。512位元暫存器ZMM0至ZMM31可操作以保持512位元緊縮資料、256位元緊縮資料、或128位元緊縮資料。256位元暫存器YMM0-YMM15可操作以保持256位元緊縮資料、或128位元緊縮資料。128位元暫存器XMM0-XMM1可操作以保持128位元緊縮資料。各暫存器可被使用以儲存緊縮浮點資料或緊密的整數資料。於某些態樣,純量浮點資料亦可被儲存於緊縮資料暫存器。不同的資料元尺寸係支持包含至少8位元位元組資料、16位元字元資料、32位元雙字元或單精度浮點資料、及64位元四字元(quadword)或雙精度浮點資料資料。緊縮資料暫存器之替代實施例可包含不同數目的暫存器、不同尺寸的暫存器、且可或可不化名較大暫存器於較小暫存器。
第16圖為包含機器可讀取儲存媒體1643的製品(例如,電腦程式產品)1642之方塊圖。於某些實施例,機器可讀取儲存媒體可為有形的(tangible)及/或非過渡的(non-transitory)機器可讀取儲存媒體。於許多例示實施例,機器可讀取儲存媒體可包含軟碟片、光碟片、CD-ROM、磁碟片、磁光碟片、唯讀記憶體(ROM)、可程式化ROM(PROM)、可抹除及可程式化ROM(EPROM)、電氣可抹除及可程式化ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、 相變記憶體、半導體記憶體、其他類型的記憶體、或其組合。於某些實施例,該媒體可包含一或多個固態資料儲存材料,例如,舉例來說,半導體資料儲存材料、相變資料儲存材料、磁性資料儲存材料、或光學透明固態資料儲存材料等。
機器可讀取儲存媒體儲存一或多個浮點定比指令1603。各浮點定比指令表示包含一或多個浮點資料元之第一來源、表示包含一或多個對應的浮點資料元之第二來源、及表示目的地。若由一機器所執行,各浮點定比指令可操作以使該機器儲存結果於目的地。該結果包含一或多個對應的結果浮點資料元。各一或多個結果浮點資料元包含第二來源之對應的浮點資料元乘以第一來源之一或多個浮點資料元的一底數的一整數之次方,該整數代表該第一來源之對應的浮點資料元。任何文中所揭露的浮點定比指令及相關聯的結果皆為合適的。
機器之不同的類型之範例包含(但不限於)處理器(例如,通用處理器及專用處理器)、指令處理裝置及具有一或多個處理器或指令處理裝置的許多電子裝置。此等電子裝置之一些代表範例包含(但不限於)電腦系統、桌上型、膝上型、筆記型電腦、伺服器、網路路由器、網路交換器、上網桌機(nettops)、機上盒(set-top boxes)、行動電話、視訊遊戲控制器等。
以下詳細的浮點定比指令及操作之例示實施例將進一步說明特定觀念。此浮點定比指令係已知為VSCALEFPD ,其以其他雙精度浮點值來定比緊縮的雙精度浮點(float64)值。表1列出用於指令之運算碼且提供所執行的操作之說明。
EVEX參照於本文其他處所說明之EVEX編碼。Xmm、ymm、及zmm表示128位元、256位元、及512位元緊縮資料暫存器。{k1}表示被使用作為寫入遮罩之遮罩暫存器(例如,k0-k7之其中一者)。{z}表示遮罩的類型(例如,合併遮罩或歸零遮罩)。{er}表示支持嵌入式修整控制,其可應用至指令之暫存器-暫存器(register-register)形式,且亦暗示支持抑制所有異常(SAE)。B64(mV)表示廣播向量記憶體運算元,用於64位元雙精度浮點元之廣播至向量。
表2列出指令運算元編碼。ModRM允許暫存器(reg)或暫存器或記憶體(r/m)。(r)表示讀取而(w)表示寫入。
VSCALEFPD操作執行第一來源運算元之緊縮的雙精度浮點值之浮點定比,其係藉由將其乘以2的第二來源運算元之雙精度浮點值的次方。此操作的方程式如下所示:zmm1=zmm2*2floor(zmm3).
Floor(zmm3)意指最大整數值zmm3。
若結果無法以雙精度浮點來表示,則將會回到適當的符號INF(對於正的定比運算元)或0(對於負的定比運算元)。
用於該操作之假碼係如下所示。於此假碼,SRC1表示第一來源、SRC2表示第二來源、及DEST表示目的地。KL表示遮罩的長度而VL表示向量或緊縮資料之長度。SET_RM從嵌入式修整控制(EVEX.RC)或從預設修整模式設定修整模式於控制暫存器(MXCSR.RM)。EVEX.b==1對於暫存器-暫存器指令賦能(enable)嵌入式修整模式及SAE控制。EVEX.b==1當SRC2*為記憶體(is memory)*時賦能嵌入式廣播。符號←表示儲存。
操作:
表3列出VSCALEFPD之特別情況。Inf表示無限(infinity)、QNaN表示靜非數值(quiet not a number)。
此僅為一例示實施例。用於單精度浮點值、純量雙精度浮點、及純量單精度浮點之其他實施例亦為可能。於另一其他實施例,可省略遮罩及/或廣播或所示的其他特徵。
指令集包含一或多個指令格式。給定指令格式定義許多欄位(位元的數量、位元的位置)以指明(除了其他事以外)將被執行的操作(運算碼)及在哪個運算元將執行操作。某些指令格式進一步透過指令範本(或次格式(subformat))的界定而被細分。舉例來說,給定指令格式之指令範本可被界定以具有指令格式的欄位之不同的子集(所包含的欄位係典型以相同的順序,但至少某些因為其包含較少的欄位而具有不同的位元位置)及/或被界定以具有不同地被解譯的給定欄位。因此,ISA之各指令係使用給定指令格式(且若經界定,於該指令格式之指令範本之給定的其中一者中)來加以表示且包含用以指明操作及運算元之欄位。舉例來說,範例ADD指令具有特定運算碼及包含運算碼欄位之指令格式以指明運算碼及運算元欄位以選擇運算元(source1/目的地及source2);且指令流中之此ADD指令的發生將具有特定內容於指明特定運算元之運算元欄位。有關先進向量延伸(Advanced Vector Extensions;AVX)(AVX1及AVX2)及使用向量延伸(Vector Extensions;VEX)編碼方案之一組SIMD延伸已被發表及/或公開(例如,見Intel® 64 and IA-32 Architectures Software Developers Manual,October 2011 ;及見Intel® Advanced Vector Extensions Programming Reference,June 2011)。
例示指令格式
於此說明之指令的實施例可被體現於不同的格式。此外,範例系統、架構、及管線係詳細說明如下。指令的實施例可被執行於(但不限於)此等系統、架構、及管線。
一般向量友善指令格式
向量友善指令格式為適合用於向量指令(例如,有特定於向量操作之特定欄位)之一指令格式。雖然實施例中係說明透過向量友善指令格式可支持向量及純量操作,替代實施例可僅使用向量操作於向量友善指令格式。
第17A-17B圖為說明根據本發明之實施例的一般向量友善指令格式及其指令範本之方塊圖。第17A圖為說明根據本發明之實施例的一般向量友善指令格式及其A類別指令範本之方塊圖;而第17B圖為說明根據本發明之實施例的一般向量友善指令格式及其B類別指令範本之方塊圖。具體言之,被界定為A類別及B類別指令範本之一般向量友善指令格式1700皆包含無記憶體存取1705指令範本及記憶體存取1720指令範本。一般向量友善指令格式中的「一般」表示未被用於特定指令集之指令格式。
本發明之實施例將說明如下,其中向量友善指令格式支援以下所述者: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位元組)資料元寬度)。
第17A圖中之A類別指令範本包含:1)在無記憶體存取1705指令範本中,顯示有一無記憶體存取、完整修整控制(full round control)類型操作1710指令範本及一無記憶體存取、資料轉換類型操作1715指令範本;及2)在記憶體存取1720指令範本中,顯示有一記憶體存取、時間性(temporal)1725指令範本及一記憶體存取、非時間性(non-temporal)1730指令範本。第17B圖中之B類別指令範本包含:1)在無記憶體存取1705指令範本中,顯示有一無記憶體存取、寫入遮罩控制、部份修整控制(partial round control)類型操作1712指令範本及一無記憶體存取、寫入遮罩控制、vsize類型操作1717指令範本;及2)在 記憶體存取1720指令範本中,顯示有一記憶體存取、寫入遮罩控制1727指令範本。
一般向量友善指令格式1700包含以下欄位,其以第17A-17B圖所說明的順序列出。
格式欄位1740-於此欄位中的特定值(指令格式識別符值)唯一地識別向量友善指令格式,而因此識別指令流中向量友善指令格式之指令的發生。就其真正意義來說,在不需要僅具有一般向量友善指令格式之指令集的情況下,此欄位為選擇性的。
基本(base)操作欄位1742-其內容區別不同的基本操作。
暫存器索引(index)欄位1744-其內容直接地或透過位址產生而指明在暫存器或記憶體中來源及指定運算元之位置。這些包含足夠數量的位元以從PxQ(例如32x512,16x128,32x1024,64x1024)個暫存器檔案中選擇N個暫存器。雖然於一實施例中,N可多至三個來源及一個目的地暫存器,替代實施例可支持更多或更少來源及目的地暫存器(例如,可支持多至兩個來源,其中一個亦作用為目的地;可支持多至兩個來源及一個目的地)。
修改符欄位1746-其內容區別一般向量指令格式之指令的發出,其指明自那些不會者的記憶體存取;亦即,無記憶體存取1705指令範本及記憶體存取1720指令範本之間。記憶體存取操作讀取及/或寫入記憶體階層(於某些情形,使用暫存器中的值來指明來源及/或指定位址),而 無記憶體存取操作則否(例如,來源及目的地為暫存器)。雖然於一實施例中,此欄位亦在三種不同的方式中選擇以執行記憶體位址計算,替代實施例可支持更多、更少、或不同的方式以執行記憶體位址計算。
增益操作欄位1750-其內容區別除了基本操作以外,各種各樣的不同的操作中之何者將被執行。此欄位為內文特定的。於本發明一實施例中,此欄位被區分成類別欄位1768、alpha欄位1752、及beta欄位1754。增益操作欄位1750允許共同群組之將被執行的操作於單一指令,2、3、或4個指令則否。
定比(scale)欄位1760-其內容允許用於記憶體位址產生之用於索引欄位的內容之定比(例如,用於使用2scale * index + base之位址產生)。
位移(displacement)欄位1762A-其內容係用於部分的記憶體位址產生(例如,用於使用2scale * index + base + displacement之位址產生)。
位移因子欄位1762B(注意,直接在位移因子欄位1762B之上的位移欄位1762A的並列表示其中一者係被使用)-其內容係用於部分的位址產生;其指明由記憶體存取之尺寸(N)所定比的一位移因子-其中N為記憶體存取中之位元組的數量(例如,用於使用2scale * index + base + scaled displacement之位址產生)。冗餘低階位元被忽略且因而位移因子欄位的內容係乘上記憶體運算元總尺寸(N)以產生將被使用以計算有效位址之最終位移。N 的值係由處理器硬體在運行時間根據整個運算碼欄位1774(稍後說明)及資料調處欄位1754C來決定。在非為使用於無記憶體存取1705指令範本及/或不同的實施例可實現兩者中之僅一者或沒有的情況下,位移欄位1762A及位移因子欄位1762B為選擇性的。
資料元寬度欄位1764-其內容區別一些資料元寬度中之何者將被使用(於一些實施例係對於所有指令;於其他實施例係對於僅一些指令)。在若僅一個資料元寬度被支持及/或資料元寬度係使用其他態樣的運算碼而被支持的情況下,其係非需要的,此欄位為選擇性的。
寫入遮罩欄位1770-其內容控制(在以每資料元位置的基礎下)於指定向量運算元之資料元位置是否反映基本操作及增益操作的結果。A類別指令範本支持合併寫入遮罩(merging-writemasking)、而B類別指令範本支持合併及歸零寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元在任何操作(由基本操作及增益操作所指明)的執行期間被保護;於其他實施例,當對應的遮罩位元具有0時,保留目的地的各元之舊值。相反的,當歸零向量遮罩允許目的地中任何組的元在任何操作(由基本操作及增益操作所指明)的執行期間被歸零;於一實施例,當對應的遮罩位元具有0值時,目的地的元被設為0。此功能的子集為控制被執行的操作之向量長度的能力(亦即,被修改的元之跨距(span),從第一到最後);然而,被修改的元並非一定要是連續的。因此,寫入遮罩欄位1770允許部分的 向量操作,包含載入、儲存、算術、邏輯等。雖然本發明之實施例係說明寫入遮罩欄位1770的內容選擇一些包含將被使用的寫入遮罩之寫入遮罩暫存器之其中一者(且因此寫入遮罩欄位1770的內容間接地識別該將被執行的遮罩),替代實施例替代的或額外的允許遮罩寫入欄位1770的內容直接指明將被執行的遮罩。
立即(immediate)欄位1772-其內容允許立即的說明。在其不存在於不支持立即的一般向量友善格式之實現及不存在於不使用立即的指令的情況下,此欄位為選擇性的。
類別欄位1768-其內容區別不同的類別之間的指令。參考第17A-B圖,此欄位的內容選擇A類別及B類別指令。於第17A-B圖,角落為圓形的方形係使用以表示欄位中存在一特定值(例如,分別於第17A-B圖中用於類別欄位1768之A類別1768A及B類別1768B)。
A類別指令範本
在A類別的非記憶體存取1705指令範本中,alpha欄位1752係被解譯為RS欄位1752A,其內容區別不同的增益操作類型中之何者將被執行(例如,修整(round)1752A.1及資料轉換1752A.2係分別指明無記憶體存取、修整類型操作1710及無記憶體存取、資料轉換類型操作1715指令範本),而beta欄位1754區別指明的類型之操作中的何者將被執行。於無記憶體存取1705指令 範本中,定比欄位1760、位移欄位1762A、及位移定比欄位1762B並不存在。
無記憶體存取指令範本-完整修整控制類型操作
於無記憶體存取完整修整控制類型操作1710指令範本,beta欄位1754係被解譯為修整控制欄位1754A,其內容提供靜態修整(static rounding)。雖然本發明說明實施例的修整控制欄位1754A包含抑制所有浮點異常(Suppress All floating point Exceptions;SAE)欄位1756及修整操作控制欄位1758,替代實施例可支持可編碼這些概念於相同欄位或僅具有一個或其他的這些概念/欄位(例如,可僅具有修整操作控制欄位1758)。
SAE欄位1756-其內容區別是否取消(disable)異常事件報告;當SAE欄位1756的內容表示抑制是可進行的(enabled),給定指令不報告任何類型的浮點異常旗標且不提出任何浮點異常處理器。
修整操作控制欄位1758-其內容區別執行修整操作的群組中之何者(例如,捨進(Round-up)、捨位(Round-down)、向零方向捨入(Round-towards-zero)、及向最近者做進位(Round-to-nearest)。因此,修整操作控制欄位1758允許修整模式的改變(在依據指令的基礎下(per instruction basis))。於本發明之處理器包含用以指明修整模的控制暫存器的一實施例中,修整操作控制欄位1750的內容置換(override)暫存器值。
無記憶體存取指令範本-資料轉換類型操作
於無記憶體存取資料轉換類型操作1715指令範本,beta欄位1754係被解譯為資料轉換欄位1754B,其內容區別一些資料轉換中之何者將被執行(例如,無資料轉換、拌和(swizzle)、廣播(broadcast)。
於A類別的記憶體存取1720指令範本的情形下,alpha欄位1752係被解譯為趕出提示(eviction hint)欄位1752B,其內容區別趕出提示中之何者將被使用(於第17A圖,時間性(temporal)1752B.1及非時間性(non-temporal)1752B.2係分別指明記憶體存取、時間性1725指令範本及記憶體存取、非時間性1730指令範本),而beta欄位1754係被解譯為資料調處欄位1754C,其內容區別一些資料調處操作(亦已知為原指令(primitive))中之何者將被執行(例如,無調處;廣播;來源的上轉換(up conversion);及目的地的下轉換(down conversion)。記憶體存取1720指令範本包含定比欄位1760及選擇性的位移欄位1762A或位移定比欄位1762B。
偕同轉換支持,向量記憶體指令執行來自記憶體的向量負載或執行向量儲存至記憶體。如同正規(regular)向量指令的情形,向量記憶體指令以資料元式(data element-wise)從記憶體轉移資料或轉移資料至記憶體,偕同實際被轉移的資料元係由被選擇為寫入遮罩的向量遮罩之內容所規定(dictate)。
記憶體存取指令範本-時間性
時間性資料為很可能夠快被再使用而受益自快取的資料。然而,此為一提示,且不同的處理器可以不同的方式將其實現,包含完全忽略該提示。
記憶體存取指令範本-非時間性
非時間性資料為不可能夠快被再使用而受益自第一階快取之快取且應被給定趕出優先的資料。然而,此為一提示,且不同的處理器可以不同的方式將其實現,包含完全忽略該提示。
B類別指令範本
在B類別的指令範本之情形中,alpha欄位1752係被解譯為寫入遮罩控制(Z)欄位1752C,其內容區別由寫入遮罩欄位1770所控制的寫入遮罩是否應為合併或歸零。
在B類別的非記憶體存取1705指令範本的情形中,部分的beta欄位1754係被解譯為RL欄位1757A,其內容區別不同的增益操作類型中之何者將被執行(例如,修整(round)1757A.1及向量長度(VSIZE)1757A.2係分別指明無記憶體存取、寫入遮罩控制、部份修整控制類型操作1712指令範本及無記憶體存取、寫入遮罩控制、VSIZE類型操作1717指令範本),而其餘的beta欄位1754區別 指明的類型之操作中的何者將被執行。於無記憶體存取1705指令範本中,定比欄位1760、位移欄位1762A、及位移定比欄位1762B並不存在。
於無記憶體存取、寫入遮罩控制、部份修整控制類型操作1710指令範本中,其餘的beta欄位1754係被解譯為修整操作欄位1759A且異常事件報告係被取消(給定指令不報告任何類型的浮點異常旗標且不提出任何浮點異常處理器)。
修整操作控制欄位1759A-就像是修整操作控制欄位1758,其內容區別執行修整操作的群組中之何者(例如,捨進、捨位、向零方向捨入、及向最近者做進位。因此,修整操作控制欄位1759A允許修整模式的改變(在依據指令的基礎下)。於本發明之處理器包含用以指明修整模的控制暫存器的一實施例中,修整操作控制欄位1750的內容置換暫存器值。
於無記憶體存取、寫入遮罩控制、VSIZE類型操作1717指令範本中,其餘的beta欄位1754係被解譯為向量長度欄位1759B,其內容區別一些資料向量長度中之何者將被執行(例如,128、256、或512位元組)。
在B類別記憶體存取1720指令範本之情形中,部分的beta欄位1754係被解譯為廣播欄位1757B,其內容區別廣播類型資料調處操作是否將被執行,而其餘的beta欄位1754係被解譯為向量長度欄位1759B。記憶體存取1720指令範本包含定比欄位1760、及選擇性的位移欄位 1762A或位移定比欄位1762B。
關於一般向量友善指令格式1700,完整運算碼欄位1774係顯示包含格式欄位1740、基本操作欄位1742、及資料.元寬度欄位1764。雖然一實施例係顯示其中完整運算碼欄位1774包含所有的這些欄位,然而,完整運算碼欄位1774可包含少於並不支持其全部之實施例中的所有這些欄位。完整運算碼欄位1774提供操作碼(運算碼)。
增益操作欄位1750、資料元寬度欄位1764、及寫入遮罩欄位1770允許這些特徵在根據指令的基礎下被指明於一般向量友善指令格式。
寫入遮罩欄位及資料元寬度欄位的結合建立類型的指令,其中其允許遮罩根據不同的資料元寬度被應用。
A類別及B類別的許多指令範本在不同的情況下為有利的。在本發明之某些實施例中,不同的處理器或處理器內之不同的核心可支持僅A類別、僅B類別、或兩種類別皆可。舉例來說,打算用於通用計算之高效能一般目的失序(out-of-order)核心可支持僅B類別、主要打算用於圖形及/或科學(處理量)計算之核心可支持僅A類別、且打算用於兩者的核心可支持兩者(當然,具有某些來自兩種類別之範本及指令(但非來自兩種類別之所有範本及指令)的混合係在本發明之範圍內)。同樣的,單一處理器可包含多個核心,其所有皆支持相同的類別或其中不同的核心支持不同的類別。舉例來說,在具有分開的圖形及一般目的核心處理器中,主要打算用於圖形及/或科學計算的 其中一圖形核心可支持僅A類別,而一或多個一般目的核心可為打算用於通用計算具有失序執行及暫存器更名之高效能一般目的核心可支持僅B類別。不具有分開的圖形核心之另一處理器可包含一或多個一般目的按序(in-order)或失序核心,其支持A類別及B類別兩者。當然,一類別的特徵可亦被實現於本發明不同的實施例中之其他類別。以高階語言撰寫的程式將被編譯成(例如,僅以時間編譯(time compiled)或靜態編譯(statically compiled))各種不同的可執行的形式,包含:1)僅具有由用於執行之目標處理器所支持的類別之指令的形式;或2)具有使用不同的所有類別的指令之組合所寫入的替代常式且具有選擇常式以根據正在執行該碼之處理器所支持的指令來執行之控制流碼之形式。
範例特定向量友善指令格式
第18圖為說明根據本發明之實施例的範例特定向量友善指令格式之方塊圖。第18圖顯示特定向量友善指令格式1800,其係特定於指明欄位之位置、尺寸、註釋、及次序,以及其中某些欄位的值。特定向量友善指令格式1800可被使用以延伸x86指令集,且因此某些欄位相似或相同於使用於現有x86指令集及其延伸(例如,AVX)中之欄位。此格式仍與現有x86指令集及延伸之前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。第18圖之欄位對映的第 17圖之欄位已被說明。
應了解的是,雖然本發明之實施例為了說明的目的參考一般向量友善指令格式1700之內容來說明特定向量友善指令格式1800,本發明並不限於特定向量友善指令格式1800,除非另有說明。舉例來說,一般向量友善指令格式1700對於各種欄位考量許多可能的尺寸,而特定向量友善指令格式1800係顯示為具有特定尺寸的欄位。經由特定範例,雖然資料元寬度欄位1764係說明為一個位元欄位於特定向量友善指令格式1800,本發明並不受限於此(亦即,一般向量友善指令格式1700考量其他尺寸的資料元寬度欄位1764)。
一般向量友善指令格式1700包含以下欄位,其以第18A圖所說明的順序列出。
EVEX前置(位元組0-3)1802-係以四個位元組的形式來編碼。
格式欄位1740(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位1740,且其包含0x62(被使用以區別本發明之一實施例中的向量友善指令格式之唯一值)。
第二至第四位元組(EVEX位元組1-3)包含提供特定作用的一些位元欄位。
REX欄位1805(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及 1757BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供如同對應的VEX位元欄位之相同的功能,且係被使用1的補數形式(1s complement form)而編碼,亦即ZMM0係被編碼成1111B、ZMM15係被編碼成0000B。指令的其他欄位如該領域所熟知者將暫存器索引之較低三個位元編碼(rrr,xxx,bbb),使得Rrrr,Xxxx,Bbbb可藉由加入EVEX.R,EVEX.X,EVEX.B被形成。
REX’欄位1710-此為REX’欄位1710之第一部份且為EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),其係被使用以編碼較高16或較低16個延伸的32個暫存器組。於本發明之一實施例,此位元(連同以下所表示的其他位元)係以位元反向格式(bit inverted format)被儲存以區別(於已知x86 32位元模式中)BOUND指令,其真實運算碼位元組為62,但不接受MOD R/M欄位(稍後說明)11的值於MOD欄位;本發明之替代實施例不儲存此位元及其他以反向格式表示的位元。1的值係被使用以編碼較低16個暫存器。換句話說,R’Rrrr係藉由結合EVEX.R’、EVEX.R、及來自其他欄位之其他RRR而被形成。
運算碼映射欄位1815(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含引導運算碼位元組(0F,0F 38,或0F 3)。
資料元寬度欄位1764(EVEX位元組2,位元[7]-W)-係由表示法EVEX.W來表示。EVEX.W係被使用以界定資 料類型(32位元資料元或64位元資料元)之粒度(尺寸)。
EVEX.vvvv 1820(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的任務可包含以下所列者:1)EVEX.vvvv編碼第一來源暫存器運算元,以反向的形式(1的補數)來表示且對於具有2或更多來源運算元之指令也是有效的;2)EVEX.vvvv編碼指定暫存器運算元,對於特定向量偏移以1的補數形式表示;或3)EVEX.vvvv不編碼任何運算元,該欄位被保留且應包含1111b。因此,EVEX.vvvv欄位1820編碼以反向形式(1的補數)儲存的第一來源暫存器說明符之4個低階位元。根據該指令,額外的不同的EVEX位元欄位係被使用以延伸說明符尺寸至32個暫存器。
EVEX.U 1768類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,則其表示A類別或EVEX.U0;若EVEX.U=1,則其表示B類別或EVEX.U1。
前置編碼欄位1825(EVEX位元組2,位元[1:0]-pp)-對基本操作欄位提供額外的位元。除了對EVEX前置格式的舊有(legacy)SSE指令提供支持,其亦有助於簡潔SIMD前置(而不需一位元組以表示SIMD前置,EVEX前置僅需要2位元)。於一實施例,為了支持使用舊有格式及EVEX前置格式的SIMD前置(66H,F2H,F3H)之舊有SSE指令,這些舊有SIMD前置被編碼成SIMD前置編碼欄位;且在被提供至解碼器的PLA之前,在運行時間係被擴展成舊有SIMD前置(故PLA可執行這些舊有指令的 舊有及EVEX格式而不需修改)。雖然較新的指令可直接使用EVEX前置編碼欄位的內容作為運算碼延伸,特定實施例以相似方式擴展以達成一致性,但允許不同的意義被這些舊有SIMD前置所指明。替代實施例可重新設計PLA以支持2位元SIMD前置編碼,且因此不需要該延伸。
Alpha欄位1752(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α表示)-如前所述,此欄位為內文特定的。
Beta欄位1754(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rrl、EVEX.LL0、EVEX.LLB;亦以βββ表示)-如前所述,此欄位為內文特定的。
REX’欄位1710-此為REX’欄位之餘項且為EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),其可被使用以編碼較高16或較低16個延伸的32個暫存器組。此位元係以位元反向格式儲存。1的值係被使用以編碼較低16個暫存器。換句話說,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位1770(EVEX位元組3,位元[2:0]-kkk)-其內容指明寫入遮罩暫存器中之暫存器的索引,如前所述者。於本發明之一實施例,特定值EVEX.kkk=000具有特別的表現,暗示無寫入遮罩被使用於特定指令(此可被實現於許多方式,包含使用硬接線(hardwired)至全部者 之寫入遮罩或略過(bypass)遮罩硬體之硬體)。
真實運算碼欄位1830(位元組4)亦已知為運算碼位元組。部份的運算碼係被指明於此欄位。
MOD R/M欄位1840(位元組5)包含MOD欄位1842、Reg欄位1844、及R/M欄位1846。如前所述,MOD欄位1842的內容區別記憶體存取及非記憶體存取操作。Reg欄位1844的任務可被概述為兩種情況:編碼指定暫存器運算元或來源暫存器運算元、或被視為運算碼延伸且不使用以編碼任何指令運算元。R/M欄位1846之任務可包含以下所列者:編碼參照記憶體位址之指令運算元,或編碼指定暫存器運算元或來源暫存器運算元。
定比、索引、基本(SIB)位元組(位元組6)-如前所述,定比欄位1750的內容係被使用於記憶體位址產生。SIB.xxx 1854及SIB.bbb 1856-這些欄位的內容已於先前參照關於暫存器索引Xxxx及Bbbb。
位移欄位1762A(位元組7-10)-當MOD欄位1842包含10時,位元組7-10為位移欄位1762A,且其作用相同於舊有32位元位移(disp32)且以位元組粒度作用。
位移因子欄位1762B(位元組7)-當MOD欄位1842包含01時,位元組7為位移因子欄位1762B。此欄位的位置相同於舊有x86指令集8位元位移(disp8),其以位元組粒度作用。由於disp8係符號延伸的(sign extended)其僅可在-128及127位元組偏位之間定址;根據64位元組快取列,disp8使用8位元,其可被設定為僅四個真的有 用的值-128,-64,0,64;由於通常需要較大範圍,disp32係被使用;然而,disp32需要4個位元組。與disp8及disp32相比,位移因子欄位1762B為disp8之重新解釋(reinterpretation);當使用位移因子欄位1762B時,實際位移係藉由位移因子欄位乘上記憶體運算元存取(N)之尺寸的內容而被決定。此類型的位移被稱為disp8*N。此降低平均指令長度(使用於位移之單一位元組但具有大的多之範圍)。此壓縮的位移係根據假設有效的位移為記憶體存取之粒度的倍數,且因此,位址偏位之冗餘低階位元不需要被編碼。換句話說,位移因子欄位1762B取代舊有x86指令集8位元位移。因此,位移因子欄位1762B以與x86指令集8位元位移同樣的方式被編碼(故ModRM/SIB編碼規則沒有改變),唯一例外是disp8超負載至disp8*N。換句話說,編碼規則或編碼長度沒有藉由硬體(其需要記憶體運算元之尺寸來定比該位移以取得位元組式(byte-wise)位址偏位)來改變但僅在位移值之註釋有改變。
立即欄位1772如前所述來操作。
完整運算碼欄位
第18B圖為說明根據本發明一實施例之組成完整運算碼欄位1774之特定向量友善指令格式1800之欄位之方塊圖。具體言之,完整運算碼欄位1774包含格式欄位1740、基本操作欄位1742、及資料元寬度(W)欄位1764。基本操作欄位1742包含前置編碼欄位1825、運算碼映射欄 位1815、及真實運算碼欄位1830。
暫存器索引欄位
第18C圖為說明根據本發明一實施例之組成暫存器索引欄位1744之特定向量友善指令格式1800之欄位之方塊圖。具體言之,暫存器索引欄位1744包含REX欄位1805、REX’欄位1810、MODR/M.reg欄位1844、MODR/M.r/m欄位1846、VVVV欄位1820、xxx欄位1854、及bbb欄位1856。
增益操作欄位
第18D圖為說明根據本發明一實施例之組成增益操作欄位1750之特定向量友善指令格式1800之欄位之方塊圖。當類別(U)欄位1768包含0時,其表明EVEX.U0(A類別1768A);當其包含1時,其表明EVEX.U1(B類別1768B)。當U=0且MOD欄位1842包含11(表明無記憶體存取操作)時,alpha欄位1752(EVEX位元組3,位元[7]-EH)係被解譯為rs欄位1752A。當rs欄位1752A包含1(修整1752A.1)時,beta欄位1754(EVEX位元組3,位元[6:4]-SSS)係被解譯為修整控制欄位1754A。修整控制欄位1754A包含一個位元SAE欄位1756及兩個位元修整操作欄位1758。當rs欄位1752A包含0(資料轉換1752A.2)時,beta欄位1754(EVEX位元組3,位元[6:4]-SSS)係被解譯為三個位元資料轉換欄位1754B。當U=0且MOD 欄位1842包含00、01、或10(表明記憶體存取操作)時,alpha欄位1752(EVEX位元組3,位元[7]-EH)係被解譯為趕出提示(EH)欄位1752B且beta欄位1754(EVEX位元組3,位元[6:4]-SSS)係被解譯為三個位元資料調處欄位1754C。
當U=1,alpha欄位1752(EVEX位元組3,位元[7]-EH)係被解譯為寫入遮罩控制(Z)欄位1752C。當U=1且MOD欄位1842包含11(表明無記憶體存取操作)時,部分的beta欄位1754(EVEX位元組3,位元[4]-S0)係被解譯為RL欄位1757A;當其包含1(修整1757A.1)時,其餘的beta欄位1754(EVEX位元組3,位元[6-5]-S2-1)係被解譯為修整操作欄位1759A,而當RL欄位1757A包含0(VSIZE 1757.A2)時,其餘的beta欄位1754(EVEX位元組3,位元[6-5]-S2-1)係被解譯為向量長度欄位1759B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位1842包含00、01、或10(表明記憶體存取操作)時,beta欄位1754(EVEX位元組3,位元[6:4]-SSS)係被解譯為向量長度欄位1759B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位1757B(EVEX位元組3,位元[4]-B)。
範例暫存器架構
第19圖為根據本發明一實施例之暫存器架構1900的方塊圖。於所說明的實施例中,有512位元寬的32個向量暫存器1910;這些暫存器參照zmm0至zmm31。較低 的16個zmm暫存器之較低階的256位元係覆蓋於暫存器ymm0-16上。較低的16個zmm暫存器之較低階的128位元(暫存器之較低階的128位元)係覆蓋於暫存器xmm0-15上。特定向量友善指令格式1800操作於這些覆蓋暫存器檔案如下表所說明。
換句話說,向量長度欄位1759B在最大長度與一或多個其他較短的長度之間選擇,其中各較短的長度為前面的長度之一半;且不包含向量長度欄位1759B之指令範本操作於最大向量長度。再者,於一實施例,特定向量友善指令格式1800之B類別指令範本操作於緊密的或純量單/雙精度浮點資料及緊密的或純量整數資料。純量操作為執行於zmm/ymm/xmm暫存器中之最低階資料元位置之操作;較高階資料元位置根據實施例係與在指令之前者一樣或歸零。
寫入遮罩暫存器1915-於所說明的實施例中,有8個寫入遮罩暫存器(k0至k7),尺寸為64位元。於一替代實施例,寫入遮罩暫存器1915的尺寸為16位元。如前所述,於本發明之一實施例,向量遮罩暫存器k0無法被使用作為寫入遮罩;當一般表示k0的編碼係被使用作為寫入遮罩時,其選擇硬接線的寫入遮罩0xFFFF,有效地對於該指令取消寫入遮罩。
通用暫存器1925-於所說明的實施例中,有十六個64位元通用暫存器,其係與現有x86定址模式一起被使用以定址記憶體運算元。這些暫存器係參照名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)1945,其更名MMX緊縮整數平坦(packed integer flat)暫存器檔案1950-於所說明的實施例中,x87堆疊為使用x87指令集延伸之使用以執行純量浮點操作於32/64/80位元浮點資料的八元(eight-element)堆疊;而MMX暫存器係被使用以執行操作於64位元緊縮整數資料,以及對於MMX及XMM暫存器間執行的某些操作保持運算元。
本發明之替代實施例可使用較寬或較窄的暫存器。此外,本發明之替代實施例可使用較多、較少、或不同的暫存器檔案及暫存器。
例示核心架構、處理器、及電腦架構
處理器核心可用不同的方式、根據不同的目的、及在 不同的處理器中來實現。舉例來說,此等核心的實現可包含:1)打算用於通用計算之一般目的按序核心;2)打算用於通用計算之高效能一般目的失序核心;3)打算主要用於圖形及/或科學(處理量)計算之特殊目的核心。不同的處理器之實現可包含:1)包含打算用於通用計算之一或多個一般目的按序核心及/或打算用於通用計算之一或多個一般目的失序核心之CPU;及2)包含打算主要用於圖形及/或科學(處理量)計算之一或多個特殊目的核心之共處理器。此不同的處理器導致不同的電腦系統架構,其可包含:1)於CPU分開的晶片上之共處理器;2)與CPU相同的封裝之分開的晶粒上之共處理器;3)與CPU在相同的晶粒上之共處理器(於此情形,此共處理器有時被稱為特殊目的邏輯,例如積體圖形及/或科學(處理量)邏輯、或稱為特殊目的核心);及4)晶片上之系統,其可包含與所述CPU於相同的晶粒上(有時稱為應用核心(application core)或應用處理器)、上述共處理器、及額外的功能。例示核心架構將接著說明,然後是例示處理器及電腦架構的說明。
例示核心架構 按序及失序核心方塊圖
第20A圖為說明根據本發明之實施例的例示循序管線及例示暫存器更名、失序事件/執行管線兩者之方塊圖。第20B圖為說明根據本發明之實施例的包含於處理器中 之按序架構核心及範例暫存器更名、失序事件/執行架構核心之方塊圖。第20A-B圖中的實線方塊說明循序管線及按序核心,而選擇性的額外的虛線方塊說明暫存器更名、失序事件/執行管線及核心。按序態樣為失序態樣的子集,失序態樣將被說明。
於第20A圖,處理器管線2000包含擷取階段2002、長度解碼階段2004、解碼階段2006、分配階段2008、更名階段2010、排程(亦已知為配送或發出)階段2012、暫存器讀取/記憶體讀取階段2014、執行階段2016、回寫(write back)/記憶體寫入階段2018、異常處置階段2022、及確定階段2024。
第20B圖顯示包含耦接至執行引擎單元2050之前端單元2030(兩者皆耦接至記憶體單元2070)之處理器核心2090。核心2090可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或混合或替代核心類型。於另一選項,核心2090可為特殊目的核心,例如,舉例來說,網路或通訊核心、壓縮引擎、共處理器核心、一般目的計算圖形處理單元(General Purpose Computing Graphics Processing Unit;GPGPU)核心、圖形核心、或類似者。
前端單元2030包含耦接至指令快取單元2034之分支預測單元2032,指令快取單元2034係耦接至指令轉譯後備緩衝區(Translation Lookaside Buffer;TLB)2036,TLB 2036係耦接至指令提取單元2038,指令提取單元2038係 耦接至解碼單元2040。解碼單元2040(或解碼器)可解碼指令並產生為輸出一或多個微操作、微式碼進入點、微指令、其他指令、或其他控制訊號,其係從原始指令解碼、或反映原始指令、或從原始指令導出。解碼單元2040可使用各種不同的機構來實現。合適的機構之範例包含(但不限於)檢查表、硬體實現、可程式化邏輯陣列(Programmable Logic Array;PLA)、微碼唯讀記憶體(ROM)等。於一實施例,核心2090包含微碼ROM或儲存微碼以用於特定巨集指令之其他媒體(例如,於解碼單元2040或另外在前端單元2030內)。解碼單元2040係耦接至執行引擎單元2050中之更名/分配器單元2052。
執行引擎單元2050包含耦接至引退單元2054及一組一或多個排程器單元2056之更名/分配器單元2052。排程器單元2056表示任何數量之不同的排程器,包含保留站(reservations stations)、中央指令視窗(central instruction window)等。排程器單元2056係耦接至實體暫存器檔案單元2058。各實體暫存器檔案單元2058表示一或多個實體暫存器檔案,不同的實體暫存器檔案儲存一或多個不同的資料類型,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,將被執行的下一個指令之位址的指令指標)等。於一實施例,實體暫存器檔案單元2058包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及一般目的暫存器。實體暫存 器檔案單元2058被引退單元2054所重疊以說明多種方式,其中暫存器更名及失序執行可被實現(例如,使用重排緩衝器及引退暫存器檔案;使用未來檔案(future file)、歷史緩衝器、及引退暫存器檔案;使用暫存器圖(register map)及許多的暫存器;等)。引退單元2054及實體暫存器檔案單元2058係耦接至執行叢集2060。執行叢集2060包含一組一或多個執行單元2062及一組一或多個記憶體存取單元2064。執行單元2062可執行許多操作(例如,偏移、加、減、乘)及於許多類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包含專屬於特定功能或功能組之一些執行單元,其他實施例可包含僅一個或多個全部執行全部功能之執行單元。排程器單元2056、實體暫存器檔案單元2058、及執行叢集2060被顯示為可能為複數個,因為特定實施例對於特定類型的資料/操作(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有其本身排程器單元、實體暫存器檔案單元及/或執行叢集-且在分開的記憶體存取管線的情形中,其中僅此管線之執行叢集具有記憶體存取單元2064之特定實施例係被實現)建立分開的管線。亦應了解的是,在分開的管線被使用的情形下,這些管線中之一或多個可為失序發出/執行且其餘者為按序。
此組記憶體存取單元2064係耦接至記憶體單元2070,其包含資料TLB單元2072,資料TLB單元2072耦接 至資料快取單元2074,資料快取單元2074耦接至第2層(L2)快取單元2076。於一範例實施例,記憶體存取單元2064可包含載入單元、儲存位址單元、儲存資料單元,各者係耦接至記憶體單元2070中之資料TLB單元2072。指令快取單元2034更耦接至記憶體單元2070中之第2層(L2)快取單元2076。L2快取單元2076係耦接至一或多個其他層的快取且最後耦接至主記憶體。
藉由範例,例示暫存器更名、失序事件/執行核心架構可如下所述實現管線2000:1)指令擷取2038執行擷取及長度編碼階段2002及2004;2)解碼單元2040執行解碼階段2006;3)更名/分配器單元2052執行分配階段2008及更名階段2010;4)排程器單元2056執行排程階段2012;5)實體暫存器檔案單元2058及記憶體單元2070執行暫存器讀取/記憶體讀取階段2014;執行叢集2060執行執行階段2016;6)記憶體單元2070及實體暫存器檔案單元2058執行回寫/記憶體寫入階段2018;7)許多單元可被包含於例外處置階段2022;及8)引退單元2054及實體暫存器檔案單元2058執行確定階段2024。
核心2090可支持一或多個指令集(例如,x86指令集(偕同一些已被以新的版本加入的延伸);位於美國Sunnyvale,CA的MIPS Technologies公司之MIPS指令集;位於美國Sunnyvale,CA的ARM Holdings公司之ARM指令集(偕同選擇性的額外的延伸,例如NEON),包含文中所述之指令。於一實施例,核心2090包含邏輯以支持 緊縮資料指令集延伸(例如,AVX1,AVX2),因而允許由許多多媒體應用程式所使用的操作將被使用緊縮資料來執行。
應了解的是,核心可支持多緒(multithreading)(執行二或更多平行組的操作或緒),且可於許多方式中如此操作,包含分時多緒、同時多緒(其中單一實體核心對各緒提供一邏輯核心,實體核心係同時多緒)、或其組合(例如,分時擷取及解碼及其後同時多緒,例如Intel®的Hyperthreading技術)。
雖然暫存器更名係於失序執行的說明中說明,應了解的是,暫存器更名可被使用於按序架構。雖然所說明的處理器之實施例亦包含分開的指令及資料快取單元2034/2074及共享的L2快取單元2076,替代實施例可具有單一內部快取以用於指令及資料兩者,例如,舉例來說,第1層(L1)內部快取、或多層內部快取。於某些實施例,該系統可包含內部快取及外部快取(其係在核心及/或處理器外部)的組合。替代地,所有的快取可在核心及/或處理器外部。
特定例示按序核心架構
第21A-B圖為說明更多特定例示按序核心架構的方塊圖,其核心可為晶片中數個邏輯區塊(包含相同類型及/或不同的類型之其他核心)中之其中一者。邏輯區塊透過具有一些固定功能邏輯、記憶體I/O介面、及其他需要 I/O邏輯(根據應用需求)之高頻寬互連網路(例如,環形網路)來通訊。
第21A圖為根據本發明之實施例的單一處理器核心的方塊圖,連同其與晶片上互連網路2102之連接及連同其第2層(L2)快取2104之本地子集。於一實施例,指令解碼器2100支持偕同緊縮資料指令集延伸之x86指令集。L1快取2106允許純量及向量單元之至快取記憶體的低潛時(low-latency)存取。雖然於一實施例(為了簡化設計)中,純量單元2108及向量單元2110使用分開的暫存器組(分別為純量暫存器2112及向量暫存器2114)且於其間轉移之資料係被寫入至記憶體然後從第1層(L1)快取2106讀回(read back),本發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或包含允許在兩個暫存器檔案之間轉移而不需要被回寫及讀回的資料之通訊路徑)。
L2快取2104之本地子集為全域(global)L2快取的一部分,全域L2快取係被區分成分開的本地子集,每個處理器核心有一個。各處理器核心具有直接存取路徑至其L2快取2104本身的本地子集。由處理器核心所讀取的資料係被儲存於其L2快取子集2104且可被快速地存取,與其他處理器核心存取其本身本地L2快取子集平行處理。由處理器核心所寫入的資料係被儲存於其本身L2快取子集2104且若需要,從其他子集清除(flush)。環形網路確保共享資料的共性(coherency)。環形網路為雙向的,以允許代理器(例如處理器核心、L2快取及其他邏輯區塊)在晶 片內彼此通訊。各環形資料路徑在每個方向為1012位元寬。
第21B圖為根據本發明之實施例的第21A圖中之處理器核心的部份之展開圖。第21B圖包含L1快取2104之一部份的L1資料快取2106A,以及更詳細的向量單元2110及向量暫存器2114。具體言之,向量單元2110為16-寬(16-wide)向量處理單元(Vector Processing Unit;VPU)(見16-寬ALU 2128),其執行一或多個整數、單精度浮點、及雙精度浮點指令。VPU支持以拌和單元2120拌和暫存器輸入、以數值轉換單元2122A-B進行數值轉換、及以複製單元2124進行複製於記憶體輸入。寫入遮罩暫存器2126允許斷定結果向量寫入。
具有積體記憶體控制器及圖形之處理器
第22圖為根據本發明之實施例的處理器2200之方塊圖,其可具有多於一個的核心、可具有積體記憶體控制器、及可具有積體圖形。第22圖中的實線方塊說明具有單一核心2202A、系統代理器2210、一組一或多個匯流排控制器單元2216之處理器2200,而選擇性的額外的虛線方塊說明具有多個核心2202A-N、系統代理器單元2210中的一組一或多個積體記憶體控制器單元2214、及特殊目的邏輯2208之替代處理器。
因此,處理器2200之不同的實現可包含:1)具有特殊目的邏輯2208之CPU,該特殊目的邏輯2208為積體圖 形及/或科學(處理量)邏輯(其可包含一或多個核心)且核心2202A-N為一或多個一般目的核心(例如,一般目的按序核心、一般目的失序核心、及兩者的組合);2)共處理器,其核心2202A-N為大量的打算主要用於圖形及/或科學(處理量)計算之特殊目的核心;及3)共處理器,其核心2202A-N為大量的一般目的按序核心。因此,處理器2200可為通用處理器、共處理器或專用處理器,例如,舉例來說,網路或通訊處理器、壓縮引擎、圖形處理器、一般目的計算圖形處理單元(General Purpose Computing Graphics Processing Unit;GPGPU)核心、高處理量多重整合核心(Many Integrated Core;MIC)共處理器(包含30或更多核心)、內嵌式處理器、或類似者。處理器可被實現於一或多個晶片。處理器2200可為部分的及/或可被實現於一或多個使用任何之一些處理技術的基板,例如,舉例來說,BiCMOS、CMOS、或NMOS。
記憶體階層包含核心內之一或多層之快取、一組或一或多個共享的快取單元2206、及耦接至該組積體記憶體控制器單元2214之外部記憶體(未圖示)。該組共享的快取單元2206可包含一或多個中層快取,例如第2層(L2)、第3層(L3)、第4層(L4)或其他層的快取、最後層快取(Last Level Cache;LLC)、及/或其組合。雖然於一實施例中環式互連單元2212互連積體圖形邏輯2208、該組共享的快取單元2206、及系統代理器單元2210/積體記憶體控制器單元2214,替代實施例可使用任何數量的已知技 術來互連此等單元。於一實施例,一或多個快取單元2206及核心2202-A-N之間的共性係被維持。
於某些實施例,一或多個核心2202A-N能夠進行多緒處理。系統代理器2210包含協調及操作核心2202A-N的那些組件。系統代理器單元2210可包含例如電源控制單元(Power Control Unit;PCU)及顯示單元。PCU可為或包含調節核心2202A-N及積體圖形邏輯2208之電源狀態所需之邏輯及組件。顯示單元係用以驅動一或多個外部連接的顯示器。
核心2202A-N可為同質的(homogenous)或不同質的(heterogeneous)架構指令集;亦即,二或更多的核心2202A-N能夠執行相同的指令集,而其他者僅能夠執行該指令集或不同的指令集之子集。
例示電腦架構
第23-26圖為範例電腦架構之方塊圖。所屬技術領域中已知的關於膝上型、桌上型、手持型PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、內嵌式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、行動多媒體播放器、手持裝置、及許多其他電子裝置之其他系統設計及組態亦合適。通常,能夠結合文中所揭露之處理器及/或其他執行邏輯之許多種類的系統或電子裝置一般為合適的。
現參照第23圖,所顯示者為根據本發明一實施例之系統2300的方塊圖。系統2300可包含一或多個處理器2310、2315,其係耦接至控制器集線器2320。於一實施例中,控制器集線器2320包含圖形記憶體控制器集線器(Graphics Memory Controller Hub;GMCH)2390及輸入/輸出集線器(Input/Output Hub;IOH)2350(其可為分開的晶片);GMCH 2390包含耦接至記憶體2340及共處理器2345之記憶體;IOH 2350係將輸入/輸出(I/O)裝置2360耦接至GMCH 2390。替代地,記憶體及圖型控制器之其中一者或兩者係於處理器(如文中所述)中集成(integrated),記憶體2340及共處理器2345係直接耦接至處理器2310,且控制器集線器2320係與IOH 2350於同一晶片中。
選擇性的額外的處理器2315係於第23圖中以虛線表示。各處理器2310、2315可包含一或多個文中所述的處理核心且可為某些版本的處理器2200。
記憶體2340可為,舉例來說,動態隨機存取記憶體(DRAM)、相變記憶體(Phase Change Memory;PCM)、或兩者的組合。於至少一個實施例中,控制器集線器2320經由多點分歧匯流排(例如前側匯流排(Frontside Bus;FSB))、點對點介面(例如QuickPath互連(QuickPath Interconnect;QPI)、或類似連接2395而與處理器2310、2315通訊。
於一實施例,共處理器2345為專用處理器,例如, 舉例來說,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器、或類似者。於一實施例,控制器集線器2320可包含積體圖形加速器。
在包含架構的、微架構的、熱的、電源消耗特性、及類似者之指標的度量指標之範圍的方面下,實體資源2310、2315之間可有許多不同。
於一實施例,處理器2310執行控制一般類型的資料處理操作之指令。內嵌於指令中者可為共處理器指令。處理器2310認可這些共處理器指令為應由附接的(attached)共處理器2345所執行之類型。因此,處理器2310發出這些共處理器指令(或表示共處理器指令之控制訊號)於共處理器匯流排或其他互連,至共處理器2345。共處理器2345接收並執行所接收的共處理器指令。
現參照第24圖,所顯示者為根據本發明之實施例的第一更特定的範例系統2400之方塊圖。如第24圖所示,多處理器系統2400為點對點互連系統,且包含經由點對點互連2450耦接之第一處理器2470及第二處理器2480。各處理器2470及2480可為某些版本的處理器2200。於本發明之一實施例,處理器2470及2480係分別為處理器2310及2315,而共處理器2438為共處理器2345。於其他實施例,處理器2470及2480係分別為處理器2310及共處理器2345。
處理器2470及2480係顯示為分別包含積體記憶體控 制器(IMC)單元2472及2482。處理器2470亦包含作為其匯流排控制器單元之點對點(P-P)介面2476及2478;同樣地,第二處理器2480包含P-P介面2486及2488。處理器2470、2480可經由點對點(P-P)介面2450使用P-P介面電路2478、2488來交換資訊。如第24圖所示,IMC 2472及2482耦接處理器至各別的記憶體,也就是記憶體2432及記憶體2434,其可為主記憶體本地地附接至各別處理器的部分。
處理器2470、2480各可與晶片組2490經由個別P-P介面2452、2454使用點對點介面電路2476、2494、2486、2498來交換資訊。晶片組2490可選項地與共處理器2438經由高效能介面2439來交換資訊。於一實施例,共處理器2438為專用處理器,例如,舉例來說,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器、或類似者。
共享的快取(未圖示)可被包含於其中一處理器中或於兩處理器的外部,但經由P-P互連與該等處理器連接,使得若處理器係被處於低電源模式,處理器之其中一者或兩者的本地快取資訊可被儲存於共享的快取中。
晶片組2490可經由介面2496被耦接至第一匯流排2416。於一實施例,第一匯流排2416可為週邊組件互連(Peripheral Component Interconnect;PCI)匯流排、或例如PCI Express匯流排之匯流排或另一第三代I/O互連匯流排,雖然本發明之範疇並不限於此。
如第24圖所示,各種I/O裝置2414可被耦接至第一匯流排2416,連同耦接第一匯流排2416至第二匯流排2420之匯流排橋接器2418。於一實施例,一或多個額外的處理器2415(例如共處理器、高處理量MIC處理器、GPGPU的加速器(例如,圖形加速器或數位訊號處理(DSP)單元)、場效可程式化閘極陣列(field programmable gate array)、或任何其他處理器)係耦接至第一匯流排2416。於一實施例,第二匯流排2420可為少腳位(Low Pin Count;LPC)匯流排。許多裝置可被耦接至第二匯流排2420,包含,舉例來說,鍵盤及/或滑鼠2422、通訊裝置2427及儲存單元2428(例如磁碟機或其他大量儲存裝置,於一實施例中,其可包含指令/碼及資料2430)。再者,音訊I/O 2424可被耦接至第二匯流排2420。應注意的是,其他架構是可能的。舉例來說,取代第24圖之點對點架構,系統可實現多點分歧匯流排或其他此架構。
現參照第25圖,所顯示者為根據本發明之實施例的第二更特定的範例系統2500之方塊圖。第24及25圖中相似的元件以相似的元件符號表示,且第24圖之特定態樣已從第25圖中省略,以避免模糊第25圖之其他態樣。
第25圖說明處理器2470、2480可分別包含積體記憶體及I/O控制邏輯(Control Logic;CL)2472及2482。因此,CL 2472、2482包含積體記憶體控制器單元且包含I/O控制邏輯。第25圖說明不僅記憶體2432、2434耦接至CL 2472、2482,而且I/O裝置2514亦耦接至控制邏 輯2472、2482。舊有I/O裝置2515係耦接至晶片組2490。
現參照第26圖,所顯示者為根據本發明之一實施例的SoC 2600之方塊圖。類似於第22圖中的元件係以類似的元件符號表示。同樣的,虛線方塊為進階的SoC之選擇性的特徵。於第26圖,互連單元2602係耦接至:應用處理器2610,其包含一組一或多個核心2202A-N及共享的快取單元2206;系統代理器單元2210;匯流排控制器單元2216;積體記憶體控制器單元2214;一組或一或多個共處理器2620,其可包含積體圖形邏輯、影像處理器、音訊處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元2630;直接記憶體存取(DMA)單元2632;及顯示單元2640,用於耦接至一或多個外部顯示器。於一實施例,共處理器2620包含專用處理器,例如,舉例來說,網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、內嵌式處理器、或類似者。
文中所揭露的機構之實施例可被實現於硬體、軟體、韌體、或此等實現方式的組合。本發明之實施例可被實現為電腦程式或執行於包含至少一處理器、儲存系統(包含非揮發性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置之可程式化的系統之程式碼。
程式碼(例如第24圖所說明的碼2430)可被應用以輸入指令以執行文中所述之功能並產生輸出資訊。可利用已知方式將輸出資訊應用至一或多個輸出裝置。於此應用, 處理系統可包含任何具有例如數位訊號處理器(DSP)、微控制器、特定功能積體電路(Application Specific Integrated Circuit;ASIC)、或微處理器之處理器的系統。
程式碼可被實現於高階程序或物件導向程式語言以與處理系統通訊。若希望的話,程式碼亦可實現於組合或機械語言。事實上,文中所述的機構不限於任何特定程式語言的範疇。在任何情況下,語言可為編譯或解譯語言。
至少一個實施例之一或多個態樣可藉由儲存於機器可讀取媒體之代表性指令來實現,代表性指令表示處理器內的許多邏輯,當其由機器所讀取時,會使機器組合邏輯以執行文中所述技術。此等表示(已知為「IP核心」)可被儲存於實體的(tangible)機器可讀取媒體且被供應至許多消費者或製造設施以載入實際製造邏輯或處理器之製造機器。
此機器可讀取儲存媒體可包含(不限於)非過渡的、實體的由機器或裝置所製造或形成的物件之佈置,包含儲存媒體,例如硬碟、任何其他類型的碟(包含軟碟、光碟、唯讀光碟(Compact Disk Read-Only Memories;CD-ROMs)、可抹寫光碟(Compact Disk Rewritable’s;CD-RWs)、及磁光碟;半導體裝置,例如唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式化唯讀記憶體、相變記憶體(PCM)、磁卡或光卡、或適合於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包含非過渡的、實體的機器可讀取媒體,包含指令或包含設計資料,例如硬體描述語言(Hardware Description Language;HDL),其定義結構、電路、裝置、處理器及/或文中所述之系統特徵。此等實施例亦可被稱為程式產品。
模仿(包含二進制轉譯、碼變形等)
在某些情況,指令轉換器可被使用以將指令從來源指令集轉換至目標指令集。舉例來說,指令轉換器可轉譯(例如,使用靜態轉譯、包含動態編譯之動態二進制轉譯)、變形、模仿、或其他,將指令轉換成將由核心所處理的一或多個其他指令。指令轉換器可被實現於軟體、硬體、韌體、或其組合。指令轉換器可為處理器上(on processor)、處理器外(off processor)、部分處理器上部份處理器外。
於所說明的實施例,指令轉換器為軟體指令轉換器,雖然替代地,指令轉換器可被實現於軟體、韌體、硬體、或其各種組合。第27圖顯示高階語言2702的程式可被使用x86編譯器2704來編譯以產生x86二進制碼2706,其可由具有至少一個x86指令集核心的處理器2716本體地(natively)執行。具有至少一個x86指令集核心的處理器2716表示可執行與具有至少一個x86指令集核心之Intel處理器實質相同的功能之任何處理器,其係藉由相容地執行或其他處理(1)Intel x86指令集核心之指令集的實質部 份或(2)目標為運行於具有至少一個x86指令集核心之Intel處理器的其他軟體或應用之物件碼版本,以達成與具有至少一個x86指令集核心之Intel處理器實質相同的結果。x86編譯器2704表示能夠產生x86二進制碼2706(例如,物件碼)之編譯器,該x86二進制碼2706可在具有或不具有額外的鏈接處理(linkage processing)之情況下由具有至少一個x86指令集核心之處理器2716所執行。同樣地,第27圖顯示高階語言2702的程式可被使用修改原生指令集編譯器2708來編譯以產生修改原生指令集二進制碼2710,其可由不具有至少一個x86指令集核心的處理器2714(例如,具有執行位於美國Sunnyvale,CA的MIPS Technologies公司之MIPS指令集及/或執行位於美國Sunnyvale,CA的ARM Holdings公司之ARM指令集之核心的處理器)本體地執行。指令轉換器2712係被使用以轉換x86二進制碼2706成為可由不具有x86指令集核心之處理器2714本體地執行之碼。此經轉換的碼不可能與修改原生指令集二進制碼2710相同,因為能如此之指令轉換器很難製成;然而,經轉換的碼將實現一般操作且由來自修改原生指令集的指令所組成。因此,透過模仿、模擬、或任何其他處理,指令轉換器2712表示軟體、韌體、硬體、或其組合,允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進制碼2706。
說明書及申請專利範圍中,術語「耦接的(coupled)」及/或「連接的(connected)」連同其衍生字已被使用。應 了解的是,這些術語並非彼此的同義字。然而,於特定實施例,「連接的(connected)」可被使用以表示二或更多元件係彼此以直接物理或電氣連接。「耦接的(coupled)」可為二或更多元件非直接彼此接觸,但仍彼此共操作(co-operate)或互動。舉例來說,執行單元可透過一或多個介入(intervening)組件與暫存器或解碼器耦接。於圖式中,箭頭係被使用以顯示耦接及/或連接。
於以上說明中,特定細節已被說明以提供實施例的完整了解。然而,其他實施例可在沒有某些的這些特定細節之情況下被實現。本發明之範疇並非由以上所提供的特定範例而僅由後附申請專利範圍所決定。圖式及說明書所說明的所有等效關係係包含於實施例中。在其他實例中,已知電路、結構、裝置、及操作已被顯示於方塊圖形式或(非詳細表示)以避免模糊說明的了解。
特定操作可藉由硬體組件被執行及/或可被體現於機器可執行或電路可執行指令,其可被使用以使得及/或導致以執行該等操作之指令來程式化的硬體組件(例如,處理器、部分的處理器、電路等)。硬體組件可包含通用或專用硬體組件。操作可藉由硬體、軟體、及/或韌體之組合而被執行。硬體組件可包含特別或特定邏輯(例如,潛在地(potentially)與軟體及/或韌體組合之電路),其能夠因應指令(例如,因應由該指令所導出的一或多個微指令或其他控制訊號指令)而執行及/或處理指令且儲存結果。
整個說明書中有關舉例來說「一個實施例」、「一實 施例」、「一或多個實施例」、「某些實施例」,表示特定特徵可被包含於本發明之實行但並非必需要者。同樣地,說明書中許多特徵有時會一起組合於單一實施例、圖式、或其說明,以流線化所揭露者即有助於了解各種發明態樣。然而,所揭露之方法並非解釋為反映本發明需要明確地描述於每一申請專利範圍之更多特徵的目的。然而,如以下申請專利範圍所反映者,發明的態樣在於少於單一揭露的實施例之所有特徵。因此,實施方式後附的申請專利範圍係特此結合至實施方式中,且各申請專利範圍本身為本發明之分開的實施例。
100‧‧‧處理器
101‧‧‧指令集架構
102‧‧‧指令集
103‧‧‧浮點定比指令
104‧‧‧架構暫存器
105‧‧‧緊縮資料暫存器
106‧‧‧遮罩暫存器
107‧‧‧控制、狀態暫存器
108‧‧‧浮點執行邏輯
200‧‧‧指令處理裝置
203‧‧‧浮點定比指令
205‧‧‧緊縮資料暫存器
216‧‧‧第一來源
218‧‧‧第二來源
220‧‧‧目的地
208‧‧‧浮點執行單元
214‧‧‧解碼器
215‧‧‧邏輯
217‧‧‧一或多個浮點資料元
219‧‧‧一或多個浮點資料元
221‧‧‧一或多個結果定比浮點資料元
222‧‧‧結果
317‧‧‧一或多個浮點資料元之第一來源
318‧‧‧一或多個浮點資料元之第二來源
322‧‧‧包含一或多個對應的結果浮點資料元之結果
324‧‧‧浮點定比操作
410A‧‧‧半精度浮點格式
410B‧‧‧單精度浮點格式
410C‧‧‧雙精度浮點格式
410D‧‧‧延伸的雙精度浮點格式
410E‧‧‧四倍精度浮點格式
411A‧‧‧10位元有效位數
411B‧‧‧23位元有效位數
411C‧‧‧52位元有效位數
411D‧‧‧64位元有效位數
411E‧‧‧112位元有效位數
412A‧‧‧5位元指數
412B‧‧‧8位元指數
412C‧‧‧11位元指數
412D‧‧‧15位元指數
412E‧‧‧15位元指數
413A‧‧‧1位元正負號
413B‧‧‧1位元正負號
413C‧‧‧1位元正負號
413D‧‧‧1位元正負號
413E‧‧‧1位元正負號
524‧‧‧方法
525‧‧‧方塊
526‧‧‧方塊
617A‧‧‧第一64位元來源緊縮單精度浮點資料
618A‧‧‧第二64位元來源緊縮單精度浮點資料
622A‧‧‧64位元結果緊縮單精度浮點資料
624A‧‧‧浮點定比操作
617B‧‧‧第一128位元來源緊縮單精度浮點資料
618B‧‧‧第二128位元來源緊縮單精度浮點資料
622B‧‧‧128位元結果緊縮單精度浮點資料
624B‧‧‧浮點定比操作
617C‧‧‧第一256位元來源緊縮單精度浮點資料
618C‧‧‧第二256位元來源緊縮單精度浮點資料
622C‧‧‧256位元結果緊縮單精度浮點資料
624C‧‧‧浮點定比操作
717A‧‧‧第一128位元來源緊縮雙精度浮點資料
718A‧‧‧第二128位元來源緊縮雙精度浮點資料
722A‧‧‧128位元結果緊縮雙精度浮點資料
724A‧‧‧浮點定比操作
717B‧‧‧第一256位元來源緊縮雙精度浮點資料
718B‧‧‧第二256位元來源緊縮雙精度浮點資料
722B‧‧‧256位元結果緊縮雙精度浮點資料
724B‧‧‧浮點定比操作
817‧‧‧第一來源純量單精度浮點資料
818‧‧‧第二來源純量單精度浮點資料
822‧‧‧結果純量單精度浮點資料
824‧‧‧浮點定比操作
917‧‧‧第一來源純量雙精度浮點資料
918‧‧‧第二來源純量雙精度浮點資料
922‧‧‧結果純量雙精度浮點資料
924‧‧‧浮點定比操作
1017‧‧‧第一來源緊縮浮點資料
1018‧‧‧第二來源緊縮浮點資料
1022‧‧‧結果緊縮浮點資料
1024‧‧‧具有資料元廣播之浮點定比操作
1117‧‧‧第一來源緊縮浮點資料
1118‧‧‧第二來源緊縮浮點資料
1122‧‧‧結果緊縮浮點資料
1124‧‧‧遮罩浮點定比操作
1128‧‧‧緊縮資料操作遮罩
1206‧‧‧緊縮資料操作遮罩暫存器
1317‧‧‧第一來源緊縮浮點資料
1318‧‧‧第二來源緊縮浮點資料
1322‧‧‧結果緊縮浮點資料
1324‧‧‧具有加法之浮點定比操作
1332‧‧‧第三來源緊縮浮點資料
1403‧‧‧浮點定比指令
1433‧‧‧運算碼
1434‧‧‧第一來源說明符
1435‧‧‧第二來源說明符
1436‧‧‧目的地說明符
1437‧‧‧資料元廣播控制
1438‧‧‧緊縮資料選擇性的遮罩說明符
1439‧‧‧遮罩操作說明符之類型
1440‧‧‧浮點修整控制
1505‧‧‧緊縮資料暫存器
1603‧‧‧點積指令
1642‧‧‧製品
1643‧‧‧機器可讀取儲存媒體
1700‧‧‧一般向量友善指令格式
1705‧‧‧無記憶體存取
1710‧‧‧無記憶體存取、完整修整控制類型操作
1712‧‧‧無記憶體存取、寫入遮罩控制、部份修整控制類型 操作
1717‧‧‧無記憶體存取、資料轉換類型操作
1717‧‧‧無記憶體存取、寫入遮罩控制、vsize類型操作
1720‧‧‧記憶體存取
1725‧‧‧記憶體存取、時間性
1727‧‧‧記憶體存取、寫入遮罩控制
1730‧‧‧記憶體存取、非時間性
1740‧‧‧格式欄位
1742‧‧‧基本操作欄位
1744‧‧‧暫存器索引欄位
1746‧‧‧修改符欄位
1746A‧‧‧無記憶體存取
1746B‧‧‧記憶體存取
1750‧‧‧增益操作欄位
1752‧‧‧alpha欄位
1752A‧‧‧RS欄位
1752A.1‧‧‧修整
1752A.2‧‧‧資料轉換
1752B‧‧‧趕出提示欄位
1752B.1‧‧‧時間性
1752B.2‧‧‧非時間性
1752C‧‧‧寫入遮罩控制欄位
1754‧‧‧beta欄位
1754A‧‧‧修整控制欄位
1754B‧‧‧資料轉換欄位
1754C‧‧‧資料調處欄位
1756‧‧‧抑制所有浮點例外欄位
1757A‧‧‧RL欄位
1757A.1‧‧‧修整
1757A.2‧‧‧向量長度
1757B‧‧‧廣播欄位
1758‧‧‧修整操作控制欄位
1759A‧‧‧修整操作欄位
1759B‧‧‧向量長度欄位
1760‧‧‧定比欄位
1762A‧‧‧位移欄位
1762B‧‧‧位移因子欄位
1764‧‧‧資料元寬度欄位
1768‧‧‧類別欄位
1768A‧‧‧A類別
1768B‧‧‧B類別
1770‧‧‧寫入遮罩欄位
1772‧‧‧立即欄位
1774‧‧‧完整運算碼欄位
1800‧‧‧特定向量友善指令格式
1802‧‧‧EVEX前置
1805‧‧‧REX欄位
1810‧‧‧REX’欄位
1815‧‧‧運算碼映射欄位
1820‧‧‧VVVV欄位
1825‧‧‧前置編碼欄位
1830‧‧‧真實運算碼欄位
1840‧‧‧MOD R/M欄位
1842‧‧‧MOD欄位
1844‧‧‧Reg欄位
1846‧‧‧R/M欄位
1854‧‧‧xxx欄位
1856‧‧‧bbb欄位
1900‧‧‧暫存器架構
1910‧‧‧向量暫存器
1915‧‧‧寫入遮罩暫存器
1925‧‧‧通用暫存器
1945‧‧‧純量浮點堆疊暫存器檔案
1950‧‧‧MMX緊縮整數平坦暫存器檔案
2000‧‧‧處理器管線
2002‧‧‧擷取階段
2004‧‧‧長度解碼階段
2006‧‧‧解碼階段
2008‧‧‧分配階段
2010‧‧‧更名階段
2012‧‧‧排程階段
2014‧‧‧暫存器讀取/記憶體讀取階段
2016‧‧‧執行階段
2020‧‧‧回寫/記憶體寫入階段
2022‧‧‧例外處置階段
2024‧‧‧確定階段
2030‧‧‧前端單元
2032‧‧‧分支預測單元
2034‧‧‧指令快取單元
2036‧‧‧指令轉譯後備緩衝區
2038‧‧‧指令提取單元
2040‧‧‧解碼單元
2050‧‧‧執行引擎單元
2052‧‧‧更名/分配器單元
2054‧‧‧引退單元
2056‧‧‧排程器單元
2058‧‧‧實體暫存器檔案單元
2060‧‧‧執行叢集
2062‧‧‧執行單元
2064‧‧‧記憶體存取單元
2070‧‧‧記憶體單元
2072‧‧‧資料TLB單元
2074‧‧‧資料快取單元
2076‧‧‧第2層快取單元
2090‧‧‧處理器核心
2100‧‧‧指令解碼器
2102‧‧‧晶片上互連網路
2104‧‧‧第2層快取之本地子集
2106‧‧‧第1層快取
2106A‧‧‧第1層資料快取
2108‧‧‧純量單元
2110‧‧‧向量單元
2112‧‧‧純量暫存器
2114‧‧‧向量暫存器
2120‧‧‧拌和單元
2122A‧‧‧數值轉換單元
2122B‧‧‧數值轉換單元
2124‧‧‧複製單元
2126‧‧‧寫入遮罩暫存器
2128‧‧‧16-寬ALU
2200‧‧‧處理器
2202A‧‧‧核心
2202N‧‧‧核心
2204A‧‧‧快取單元
2204N‧‧‧快取單元
2206‧‧‧共享的快取單元
2208‧‧‧特殊目的邏輯
2210‧‧‧系統代理器單元
2212‧‧‧環式互連單元
2214‧‧‧積體記憶體控制器單元
2216‧‧‧匯流排控制器單元
2300‧‧‧系統
2310‧‧‧處理器
2315‧‧‧處理器
2320‧‧‧控制器集線器
2340‧‧‧記憶體
2345‧‧‧共處理器
2350‧‧‧輸入/輸出集線器
2360‧‧‧輸入/輸出裝置
2390‧‧‧圖形記憶體控制器集線器
2395‧‧‧連接
2400‧‧‧系統
2414‧‧‧I/O裝置
2415‧‧‧處理器
2416‧‧‧第一匯流排
2418‧‧‧匯流排橋接器
2420‧‧‧第二匯流排
2424‧‧‧鍵盤及/或滑鼠
2424‧‧‧音訊I/O
2427‧‧‧通訊裝置
2428‧‧‧儲存單元
2430‧‧‧碼及資料
2432‧‧‧記憶體
2434‧‧‧記憶體
2438‧‧‧共處理器
2439‧‧‧高效能介面
2450‧‧‧點對點互連
2452‧‧‧P-P介面
2454‧‧‧P-P介面
2470‧‧‧處理器
2472‧‧‧積體記憶體控制器單元
2476‧‧‧P-P介面
2478‧‧‧P-P介面
2480‧‧‧處理器
2482‧‧‧積體記憶體控制器單元
2486‧‧‧P-P介面
2488‧‧‧P-P介面
2490‧‧‧晶片組
2494‧‧‧P-P介面
2496‧‧‧介面
2498‧‧‧P-P介面
2500‧‧‧系統
2514‧‧‧I/O裝置
2515‧‧‧舊有I/O裝置
2600‧‧‧晶片上系統
2602‧‧‧互連單元
2610‧‧‧應用處理器
2620‧‧‧共處理器
2630‧‧‧靜態隨機存取記憶體單元
2632‧‧‧直接記憶體存取單元
2640‧‧‧顯示單元
2702‧‧‧高階語言
2704‧‧‧x86編譯器
2706‧‧‧x86二進制碼
2708‧‧‧修改原生指令集編譯器
2710‧‧‧修改原生指令集二進制碼
2712‧‧‧指令轉換器
2714‧‧‧不具有x86指令集核心的處理器
2716‧‧‧具有至少一個x86指令集核心的處理器
本發明可藉由參考以下說明及用以說明實施例的所附圖式得到最佳理解。圖示中:第1圖為具有包含一或多個浮點定比指令之指令集的處理器之實施例的方塊圖。
第2圖為具有可操作以執行一實施例之浮點定比指令的浮點執行單元之指令處理裝置的實施例之方塊圖。
第3圖為說明可因應一實施例的浮點定比指令而被執行之浮點定比操作之一實施例的方塊圖。
第4A-E圖為說明合適的浮點格式之例示實施例的方塊圖。
第5圖為處理浮點定比指令的實施例之方法的實施例之方塊流程圖。
第6A-C圖為說明可被執行於緊縮的32位元單精度浮點資料之浮點定比操作之實施例的方塊圖。
第7A-B圖為說明可被執行於緊縮的64位元單精度浮點資料之浮點定比操作之實施例的方塊圖。
第8圖為說明可被執行於純量32位元單精度浮點資料之浮點定比操作之實施例的方塊圖。
第9圖為說明可被執行於純量64位元雙精度浮點資料之浮點定比操作之實施例的方塊圖。
第10圖為說明具有資料元廣播之浮點定比操作的實施例之方塊圖。
第11圖為說明遮罩浮點定比操作的實施例之方塊圖。
第12圖為說明緊縮資料操作遮罩暫存器的實施例之方塊圖。
第13圖為說明具有加法之浮點定比操作的實施例之方塊圖。
第14圖為說明用於浮點定比指令之指令格式的實施例之方塊圖。
第15圖為緊縮資料暫存器的實施例之方塊圖。
第16圖為包含儲存浮點定比指令之機器可讀取儲存媒體的製品之方塊圖。
第17A圖為說明根據本發明之實施例的一般向量友善指令格式及其A類別指令範本之方塊圖。
第17B圖為說明根據本發明之實施例的一般向量友善 指令格式及其B類別指令範本之方塊圖。
第18A圖為說明根據本發明之實施例的例示特定向量友善指令格式之方塊圖。
第18B圖為說明根據本發明一實施例的特定向量友善指令格式之組成完整運算碼欄位的欄位之方塊圖。
第18C圖為說明根據本發明一實施例的特定向量友善指令格式之組成暫存器索引欄位的欄位之方塊圖。
第18D圖為說明根據本發明一實施例的特定向量友善指令格式之組成增益操作欄位的欄位之方塊圖。
第19圖為根據本發明一實施例之暫存器架構的方塊圖。
第20A圖為說明根據本發明實施例之例示按序(in-order)管線及例示暫存器更名、失序(out-of-order)事件/執行管線兩者的方塊圖。
第20B圖顯示處理器核心,其包含耦接至執行引擎單元之前端單元且兩者皆耦接至記憶體單元。
第21A圖為根據本發明之實施例的單一處理器核心的方塊圖,連同與晶片上互連網路之連接及連同第2層(L2)快取2104之本地子集。
第21B圖為根據本發明之實施例的第21A圖中之處理器核心的部份之展開圖。
第22圖為根據本發明之實施例的處理器之方塊圖,其可具有多於一個的核心、可具有積體記憶體控制器、及可具有積體圖形。
第23圖說明根據本發明一實施例之系統的方塊圖。
第24圖說明根據本發明之實施例的第一更特定例示系統的方塊圖。
第25圖說明根據本發明之實施例的第二更特定例示系統的方塊圖。
第26圖說明根據本發明之實施例的SoC之方塊圖。
第27圖為對比使用根據本發明之實施例的軟體指令轉換器以將來源指令集中的二進位指令轉換成目標指令集中的二進位指令之方塊圖。
317‧‧‧一或多個浮點資料元之第一來源
318‧‧‧一或多個浮點資料元之第二來源
322‧‧‧包含一或多個對應的結果浮點資料元之結果
324‧‧‧浮點定比操作

Claims (29)

  1. 一種方法,包含:接收一浮點定比指令,該浮點定比指令表示包含不需要具有整數值之一或多個浮點資料元之一第一來源、表示包含一或多個對應的浮點資料元之一第二來源、及表示一目的地;及因應該浮點定比指令,儲存一結果於該目的地中,該結果包含一或多個對應的結果浮點資料元,各該一或多個結果浮點資料元包含該第二來源之對應的浮點資料元乘以一底數的一整數之次方,該整數代表該對應的浮點資料元。
  2. 如申請專利範圍第1項之方法,更包含因應該浮點定比指令而決定該一或多個整數,該一或多個整數代表該第一來源之一或多個對應的浮點資料元。
  3. 如申請專利範圍第2項之方法,其中決定該一或多個整數之步驟包含選自以下方式來決定一整數:(1)最大整數,其小於或等於該第一來源之該對應的浮點資料元;及(2)最小整數,其大於或等於該第一來源之該對應的浮點資料元。
  4. 如申請專利範圍第1項之方法,其中各第一及第二來源包含複數個緊縮的浮點資料元,且其中該結果包含一對應的複數個緊縮的結果浮點資料元。
  5. 如申請專利範圍第1項之方法,其中接收步驟包含接收表示該第一來源之該浮點定比指令,其包含非數值 (NaN)、正無限大、負無限大、及反常數之其中一者的一浮點資料元。
  6. 如申請專利範圍第1項之方法,其中接收步驟包含接收表示該第二來源之該浮點定比指令,其包含非數值(NaN)之一浮點資料元,且其中儲存步驟包含儲存包含其亦為非數值之一對應的結果浮點資料元之該結果。
  7. 如申請專利範圍第1項之方法,其中接收步驟包含接收進一步表示一第三組的一或多個對應的浮點資料元之該浮點定比指令,且其中儲存步驟包含儲存包含該一或多個結果浮點資料元之該結果,各該一或多個結果浮點資料元包含該第二來源之該對應的浮點資料元乘以該底數的該整數之次方並加上該第三組的該對應的浮點資料元,該整數代表該第一來源之該對應的浮點資料元。
  8. 如申請專利範圍第1項之方法,其中接收步驟包含接收表示該第一來源之該浮點定比指令,其包含以下所述其中一者:(1)至少八個雙精度浮點資料元;及(2)至少十六個單精度浮點資料元。
  9. 如申請專利範圍第1項之方法,其中該底數為2。
  10. 如申請專利範圍第1項之方法,其中接收步驟包含接收表示包含一單一浮點資料元之該第一來源及表示包含複數個緊縮的浮點資料元之該第二來源之該浮點定比指令,且其中儲存步驟包含儲存包含複數個緊縮的結果浮點資料元之該結果,各複數個緊縮的結果浮點資料元對應至該第二來源之該複數個緊縮的浮點資料元之其中一者,各 複數個緊縮的結果浮點資料元包含該第二來源之該對應的浮點資料元乘以該底數的一整數之次方,該整數代表該第一來源之該單一浮點資料元。
  11. 如申請專利範圍第1項之方法,其中接收步驟包含接收進一步表示一緊縮資料操作遮罩之該浮點定比指令,且其中儲存該結果包含根據該緊縮資料操作遮罩而有條件地儲存經定比的浮點資料元於該結果。
  12. 一種裝置,包含:複數個暫存器;及一浮點執行單元,與該複數個暫存器耦接,因應一浮點定比指令,該浮點執行單元可操作以儲存一結果於一目的地中,該浮點定比指令表示包含不需要具有整數值之一或多個浮點資料元之一第一來源、表示包含一或多個對應的浮點資料元之一第二來源、及表示該目的地,該結果包含一或多個對應的結果浮點資料元,各該一或多個結果浮點資料元包含該第二來源之對應的浮點資料元乘以一底數的一整數之次方,該整數代表該該第一來源之該對應的浮點資料元。
  13. 如申請專利範圍第12項之裝置,其中因應該浮點定比指令,該浮點執行單元決定該一或多個整數,該一或多個整數代表該第一來源之一或多個對應的浮點資料元。
  14. 如申請專利範圍第12項之裝置,其中因應該浮點定比指令,該浮點執行單元選自以下方式來決定一整數:(1)最大整數,其小於或等於該第一來源之該對應的浮點 資料元;及(2)最小整數,其大於或等於該第一來源之該對應的浮點資料元。
  15. 如申請專利範圍第12項之裝置,其中該浮點定比指令表示該第一來源包含非數值(NaN)、正無限大、負無限大、及反常數之其中一者的一浮點資料元。
  16. 如申請專利範圍第12項之裝置,其中該浮點定比指令表示該第二來源包含非數值(NaN)之一浮點資料元,且其中因應該浮點定比指令,該浮點執行單元儲存包含其亦為非數值之一對應的結果浮點資料元之該結果。
  17. 如申請專利範圍第12項之裝置,其中該浮點定比指令表示該第二來源包含為正無限大之一浮點資料元及表示該第一來源包含為非數值(NaN)之一對應的浮點資料元,且其中因應該浮點定比指令,該浮點執行單元儲存包含為非數值(NaN)之一對應的結果浮點資料元之該結果。
  18. 如申請專利範圍第12項之裝置,其中該浮點定比指令進一步表示一第三組的一或多個對應的浮點資料元,且其中因應該浮點定比指令,該浮點執行單元儲存包含一或多個結果浮點資料元之該結果,各該一或多個結果浮點資料元包含該第二來源之該對應的浮點資料元乘以該底數的該整數之次方並加上該第三組的該對應的浮點資料元,該整數代表該第一來源之該對應的浮點資料元。
  19. 如申請專利範圍第12項之裝置,其中該浮點定比指令表示該第一來源包含以下所述其中一者:(1)至少八個雙精度浮點資料元;及(2)至少十六個單精度浮點資料 元。
  20. 如申請專利範圍第12項之裝置,其中該底數為2。
  21. 如申請專利範圍第12項之裝置,其中該浮點定比指令進一步表示一緊縮資料操作遮罩,且其中因應該浮點定比指令,該浮點執行單元根據該緊縮資料操作遮罩而有條件地儲存經定比的浮點資料元於該結果。
  22. 如申請專利範圍第12項之裝置,其中各該第一及第二來源包含一單一浮點資料元,且其中因應該浮點定比指令,該浮點執行單元儲存包含一單一結果浮點資料元之該結果。
  23. 如申請專利範圍第12項之裝置,其中各該第一及第二來源包含複數個緊縮的浮點資料元,且其中因應該浮點定比指令,該浮點執行單元儲存包含一對應的複數個緊縮的結果浮點資料元之該結果。
  24. 一種系統,包含:一互連;一處理器,與該互連耦接,因應一浮點定比指令,該處理器可操作以儲存一結果於一目的地中,該浮點定比指令表示包含一或多個浮點資料元之一第一來源、表示包含一或多個對應的浮點資料元之一第二來源、及表示該目的地,該結果包含一或多個對應的結果浮點資料元,各該一或多個結果浮點資料元包含該第二來源之對應的浮點資料元乘以一底數的一整數之次方,該整數代表該該第一來源之該對應的浮點資料元;及 一動態隨機存取記憶體(DRAM),與該互連耦接。
  25. 如申請專利範圍第24項之系統,其中因應一浮點定比指令,該處理器決定該一或多個整數,該一或多個整數代表該第一來源之一或多個對應的浮點資料元。
  26. 如申請專利範圍第24項之系統,其中該處理器可操作以當該第一來源之一或多個浮點資料元包含正無限大、負無限大、及非數值(NaN)之其中一者時在不會產生一異常的情況下儲存該結果。
  27. 一種製品,包含:一機器可讀取儲存媒體,包含一或多個固態資料儲存材料,該機器可讀取儲存媒體儲存一浮點定比指令,該浮點定比指令表示包含不需要具有整數值之一或多個浮點資料元之一第一來源、表示包含一或多個對應的浮點資料元之一第二來源、及表示一指定儲存位置,且當該浮點定比指令由一機器所執行時,該機器執行以下操作:儲存一結果於該指定儲存位置,該結果包含一或多個對應的結果浮點資料元,各該一或多個結果浮點資料元包含該第二來源之對應的浮點資料元乘以一底數的一整數之次方,該整數代表該第一來源之該對應的浮點資料元。
  28. 如申請專利範圍第27項之製品,其中當該浮點定比指令由該機器所執行時,該機器決定該一或多個整數,該一或多個整數代表該第一來源之一或多個對應的浮點資料元。
  29. 如申請專利範圍第27項之製品,其中該浮點定比 指令表示該第一來源之一或多個浮點資料元,其包含正無限大、負無限大、及非數值(NaN)之其中一者,且其中當該浮點定比指令由該機器所執行時,該機器在不會產生一異常的情況下儲存該結果。
TW101148754A 2011-12-28 2012-12-20 浮點定比處理器、方法、系統及指令 TWI544407B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067684 WO2013101010A1 (en) 2011-12-28 2011-12-28 Floating point scaling processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201346720A true TW201346720A (zh) 2013-11-16
TWI544407B TWI544407B (zh) 2016-08-01

Family

ID=48698251

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101148754A TWI544407B (zh) 2011-12-28 2012-12-20 浮點定比處理器、方法、系統及指令

Country Status (4)

Country Link
US (5) US9448765B2 (zh)
CN (2) CN104040484B (zh)
TW (1) TWI544407B (zh)
WO (1) WO2013101010A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI721021B (zh) * 2015-11-03 2021-03-11 美商英特爾公司 用於致能旗標操作的移除及重建之處理器、非暫時性機器可讀取媒體及計算系統

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US9448765B2 (en) 2011-12-28 2016-09-20 Intel Corporation Floating point scaling processors, methods, systems, and instructions
US9898286B2 (en) * 2015-05-05 2018-02-20 Intel Corporation Packed finite impulse response (FIR) filter processors, methods, systems, and instructions
CN115100018A (zh) 2015-06-10 2022-09-23 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
US10503502B2 (en) * 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
US9870341B2 (en) * 2016-03-18 2018-01-16 Qualcomm Incorporated Memory reduction method for fixed point matrix multiply
EP3529695B1 (en) 2016-10-20 2023-10-11 INTEL Corporation Systems, apparatuses, and methods for fused multiply add
US10725739B2 (en) * 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10310814B2 (en) 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US11138151B2 (en) * 2018-08-30 2021-10-05 Sap Se Compression scheme for floating point values
US11372643B2 (en) * 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format
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
US20200371784A1 (en) * 2019-05-24 2020-11-26 Texas Instruments Incorporated Vector floating-point scale
US20210064338A1 (en) * 2019-08-28 2021-03-04 Nvidia Corporation Processor and system to manipulate floating point and integer values in computations
CN112402983A (zh) * 2020-08-03 2021-02-26 上海幻电信息科技有限公司 游戏成绩验证方法及系统
US20230068781A1 (en) * 2021-08-31 2023-03-02 Intel Corporation Bfloat16 scale and/or reduce instructions
EP4318222A1 (en) * 2022-08-03 2024-02-07 Intel Corporation 8-bit floating point scale and/or reduce instructions

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931943A (en) * 1997-10-21 1999-08-03 Advanced Micro Devices, Inc. Floating point NaN comparison
US6425074B1 (en) 1999-09-10 2002-07-23 Advanced Micro Devices, Inc. Method and apparatus for rapid execution of FCOM and FSTSW
US6675286B1 (en) * 2000-04-27 2004-01-06 University Of Washington Multimedia instruction set for wide data paths
US7330864B2 (en) * 2001-03-01 2008-02-12 Microsoft Corporation System and method for using native floating point microprocessor instructions to manipulate 16-bit floating point data representations
US7085940B2 (en) * 2002-05-09 2006-08-01 International Business Machines Corporation Floating point unit power reduction via inhibiting register file write during tight loop execution
TWI275028B (en) 2002-07-16 2007-03-01 Silicon Integrated Sys Corp Floating-point logarithmic calculation device and the method thereof
TWI269228B (en) 2003-01-07 2006-12-21 Ibm Floating point unit, processor chip, and computer system to resolve data dependencies
US7143126B2 (en) 2003-06-26 2006-11-28 International Business Machines Corporation Method and apparatus for implementing power of two floating point estimation
US9069547B2 (en) * 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US8443027B2 (en) * 2007-09-26 2013-05-14 International Business Machines Corporation Implementing a floating point weighted average function
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
US8103858B2 (en) * 2008-06-30 2012-01-24 Intel Corporation Efficient parallel floating point exception handling in a processor
US8423983B2 (en) * 2008-10-14 2013-04-16 International Business Machines Corporation Generating and executing programs for a floating point single instruction multiple data instruction set architecture
US9652231B2 (en) * 2008-10-14 2017-05-16 International Business Machines Corporation All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture
CN102087590A (zh) * 2009-12-03 2011-06-08 浙江大学 资源复用的浮点simd指令的执行装置
CN101751244B (zh) * 2010-01-04 2013-05-08 清华大学 微处理器
CN102135870B (zh) * 2010-01-27 2013-08-28 成都市华为赛门铁克科技有限公司 浮点数幂运算处理方法、装置和计算机系统
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
US9448765B2 (en) 2011-12-28 2016-09-20 Intel Corporation Floating point scaling processors, methods, systems, and instructions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI721021B (zh) * 2015-11-03 2021-03-11 美商英特爾公司 用於致能旗標操作的移除及重建之處理器、非暫時性機器可讀取媒體及計算系統
US11036509B2 (en) 2015-11-03 2021-06-15 Intel Corporation Enabling removal and reconstruction of flag operations in a processor
US11709678B2 (en) 2015-11-03 2023-07-25 Intel Corporation Enabling removal and reconstruction of flag operations in a processor

Also Published As

Publication number Publication date
US20150088946A1 (en) 2015-03-26
CN104040484B (zh) 2018-06-19
US20180225092A1 (en) 2018-08-09
US9921807B2 (en) 2018-03-20
US10089076B2 (en) 2018-10-02
CN104040484A (zh) 2014-09-10
US9448765B2 (en) 2016-09-20
US20180203668A1 (en) 2018-07-19
US20180225091A1 (en) 2018-08-09
TWI544407B (zh) 2016-08-01
WO2013101010A1 (en) 2013-07-04
US10228909B2 (en) 2019-03-12
US10275216B2 (en) 2019-04-30
CN108647044A (zh) 2018-10-12
CN108647044B (zh) 2022-09-13
US20170068516A1 (en) 2017-03-09

Similar Documents

Publication Publication Date Title
TWI544407B (zh) 浮點定比處理器、方法、系統及指令
US10073695B2 (en) Floating point round-off amount determination processors, methods, systems, and instructions
TWI512612B (zh) 點積處理器、方法、系統及指令
US9785433B2 (en) Three source operand floating-point addition instruction with operand negation bits and intermediate and final result rounding
US10209986B2 (en) Floating point rounding processors, methods, systems, and instructions
TWI489381B (zh) 多暫存器散布指令
TWI761367B (zh) 用於融合乘加運算的系統、裝置及方法
US9792115B2 (en) Super multiply add (super MADD) instructions with three scalar terms
US9733935B2 (en) Super multiply add (super madd) instruction
US9760371B2 (en) Packed data operation mask register arithmetic combination processors, methods, systems, and instructions
TWI556164B (zh) 具有不同讀取及寫入遮罩之多元件指令
TW201732570A (zh) 用於聚合集中及跨步的系統、裝置及方法
TW201810029A (zh) 用於跨步載入的系統、設備及方法
TW201640334A (zh) 執行用以最佳化指令流的檢查之設備及方法
CN107003848B (zh) 用于融合乘法-乘法指令的装置和方法
CN107003841B (zh) 用于融合加法-加法指令的装置和方法
TW201810020A (zh) 用於累乘的系統、設備及方法