TWI544411B - 緊縮旋轉處理器、方法、系統與指令 - Google Patents

緊縮旋轉處理器、方法、系統與指令 Download PDF

Info

Publication number
TWI544411B
TWI544411B TW101148747A TW101148747A TWI544411B TW I544411 B TWI544411 B TW I544411B TW 101148747 A TW101148747 A TW 101148747A TW 101148747 A TW101148747 A TW 101148747A TW I544411 B TWI544411 B TW I544411B
Authority
TW
Taiwan
Prior art keywords
data
mask
instruction
elements
rotation
Prior art date
Application number
TW101148747A
Other languages
English (en)
Other versions
TW201344570A (zh
Inventor
艾蒙斯特阿法 歐德亞麥德維爾
羅柏 瓦倫泰
吉瑟斯 柯伯聖安德利思
蘇利曼 賽爾
布萊特 托爾
澤夫 史博柏
亞米特 葛雷斯坦
艾薩夫 魯賓斯坦
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201344570A publication Critical patent/TW201344570A/zh
Application granted granted Critical
Publication of TWI544411B publication Critical patent/TWI544411B/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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

緊縮旋轉處理器、方法、系統與指令
本發明與處理器有關。特別是,實施例與回應緊縮旋轉指令而實施緊縮旋轉操作的處理器有關。
很多處理器具有單指令多資料(SIMD)架構。在SIMD架構中,緊縮資料指令、向量指令、或SIMD指令都可同時或平行對多個資料元件或多個資料元件對操作。處理器可具有回應緊縮資料指令而同時或平行實施多個操作的平行執行硬體。
多資料元件可當成緊縮資料或向量資料而緊縮在一個暫存器或記憶體位置。在緊縮資料中,暫存器或其它儲存位置的位元可被邏輯地分割成資料元件的序列。例如,256位元寬的緊縮資料暫存器可具有4個64位元寬的資料元件、8個32位元的資料元件、16個16位元的資料元件等。每一個資料元件可代表一分離獨立的資料(例如,像素顏色、複數的分量等)其可被單獨地及/或相互間無關地被操作。
本文揭示緊縮旋轉指令,執行緊縮旋轉指令的處理器,當處理或執行緊縮旋轉指令時,處理器所實施的方法,以及結合一或多個用來處理或執行緊縮旋轉指令之處 理器的系統。在以下的描述中說明了諸多特定的細節(例如特定的處理器組態、操作的序列、指令格式、資料格式、特定的系統組態、微架構細節等)。不過,沒有這些特定的細節實施例照樣可實施。在其它例中,未詳細顯示習知的電路、結構及技術,以避免糢糊了對描述的瞭解。
圖1係具有包括一或多個緊縮旋轉指令103之指令集102之處理器100的例示實施例之方塊圖。處理器可以是任何各種複雜指令集計算(CISC)處理器、各種精減指令集計算(RISC)處理器、各種極長指令(VLIW)處理器、以上的各種混合,或完全其它類型的處理器。在某些實施例中,處理器可以是通用處理器(例如桌上型、膝上型、或類似電腦中所使用的微處理器類型)。或者,處理器可以是特殊用途處理器。適合的特殊用途處理器例包括但不限於網路處理器、通信處理器、密碼處理器、繪圖處理器、共處理器、內嵌式處理器、數位信號處理器(DSP)、以及控制器(例如微控制器),以上僅是舉幾個例子說明。
處理器具有指令集架構(ISA)101。ISA代表處理器與程式有關之部分的架構。ISA通常包括原生指令、架構暫存器、資料類型、位址模式、記憶體架構、中斷與異常處置、處理器的外部輸入與輸出(I/O)。ISA有別於微架構,其通常代表被選擇用來實施ISA的特定處理器設計技術。具有不同微架構的處理器可共用共同的ISA。
ISA包括架構上-可見暫存器(例如架構暫存器檔案)107。架構暫存器通常代表晶粒上處理器儲存位置。本 文所提及的架構暫存器也簡稱為暫存器。除非特別說明或明示,本文中所使用的架構暫存器、暫存器檔案、及暫存器等片語,意指為軟體及/或編程器可見(例如軟體-可見)的暫存器,及/或由通用巨指令所指定來識別運算元的暫存器。這些暫存器係對比於某微架構中之其它非架構或非架構上可見暫存器(例如被指令使用的暫時性暫存器、重排序緩衝區、止用暫存器等)。圖中說明的架構暫存器包括緊縮資料暫存器108。每一個緊縮資料暫存器可操作來儲存緊縮資料、向量資料、或SIMD資料。在某些實施例中,架構暫存器可選擇性地包括緊縮資料操作遮罩暫存器,也簡稱為遮罩暫存器109。
圖示說明的ISA包括被處理器所支援的指令集102。指令集的指令代表巨指令(例如提供給處理器供執行的指令)而不是微指令或微-ops(例如那些來自於處理器之解碼器解碼巨指令的結果)。指令集包括一或多個緊縮旋轉指令103。在某些實施例中,緊縮旋轉指令可包括一或多個遮罩緊縮旋轉指令104。在某些實施例中,緊縮旋轉指令可包括一或多個具有資料元件廣播105的遮罩緊縮旋轉指令。在某些實施例中,緊縮旋轉指令可包括一或多個具有資料元件廣播106的遮罩緊縮旋轉指令。以下將進一步揭示這些不同類型之緊縮旋轉指令的各種不同實施例。
處理器也包括執行邏輯110。執行邏輯可操作來執行或處理指令集的指令(例如緊縮旋轉指令104)。
圖2係具有執行單元210之指令處理裝置200的例示 實施例方塊圖,其可操作來執行包括有緊縮旋轉指令203之例示實施例的指令。在某些實施例中,指令處理裝置可以是處理器及/或包括在處理器中。例如,在某些實施例中,指令處理裝置200可以是圖1的處理器100、或包括在其內或、類似的處理器。另者,指令處理裝置可包括在不同的處理器或電子系統內。
指令處理裝置200可接收緊縮旋轉指令203。例如,該指令可接收自指令提取單元、指令佇列、或記憶體。緊縮旋轉指令代表能被指令處理裝置辨識的機器指令、巨指令、或控制信號,且其控制該裝置以實施特定的操作。緊縮旋轉指令可明確地指定(例如經由位元或一或多個欄位)或用其它方式指示(例如隱含地指示)第一源緊縮資料213,在某些實施例中,可選擇性地指定或用其它方式指示第二源緊縮資料215,及可指定或用其它方式指示具有來自第一源緊縮資料之旋轉資料元件之結果緊縮資料217所要儲存的目的儲存位置216。如所示,在某些實施例中,第一源緊縮資料213可存入第一源緊縮資料暫存器212,第二源緊縮資料215可存入第二源緊縮資料暫存器214,結果217可存入目的或第三緊縮資料暫存器216。另者,適合緊縮資料的記憶體位置或其它儲存位置都可用於這些任何的運算元。
圖示說明的指令處理裝置包括指令解碼單元或解碼器210。解碼器可接收並解碼較高階的機器指令或巨指令(例如緊縮旋轉指令203),並輸出反映自及/或源自原始較高 階指令的一或多個較低階的微操作、微碼入口、微指令、或其它較低階指令或控制信號。經由一或多個較低階(例如電路層級或硬體層級)的操作,一或多個較低指令或控制信號可實施較高階指令的操作。解碼器可使用各種不同的機制來實施,包括但不限於微碼唯讀記憶體(ROM)、查詢表、硬體實施、可程式邏輯陣列(PLA)、及習知技術中用來實施解碼器的其它機制。
在其它實施例中,可使用指令仿真器、轉譯器、變形器(morpher)、解譯器、或其它指令轉換邏輯來代替解碼器211。在習知技術中有各種不同類型的指令轉換邏輯,且可用軟體、硬體、及它們的組合來實施。指令轉換邏輯可接收指令、仿真、轉譯、漸變、解譯、或其它方法將其所接收的指令轉換成一或多個對應之衍生的指令或控制信號。仍在其它實施例中會使用指令轉換邏輯與解碼器兩者。例如,裝置具有指令轉換邏輯將所接收的指令轉換成一或多個中間指令,並具有解碼器將該一或多個中間指令解碼成一或多個可被指令處理裝置之原生硬體所執行的低階指令或控制信號。某些或所有的指令轉換邏輯可位於其餘指令處理裝置以外的晶粒上,諸如獨立的晶粒上或晶粒以外的記憶體中。
指令處理裝置也包括一組緊縮資料暫存器208。緊縮資料暫存器可代表架構處理器上(例如晶粒上)處理器儲存位置,其每一個可操作來儲存緊縮資料或向量資料。緊縮資料暫存器可在使用習知技術的不同微架構中以不同方式 實施,且不限於任何特定類型的電路。只要能夠儲存及提供本文所描述的資料,各種不同類型的暫存器都適用。適用的暫存器例子包括但不限於專用的實體暫存器,使用暫存器更名的動態配置實體暫存器,以及它們的組合。
現請再參閱圖2,執行位元210與緊縮資料暫存器208耦接。執行單元也與解碼器211耦接。執行單元接收來自解碼器的一或多個微操作、微碼進入點、微指令、其它指令、或其它控制信號,這些反映或導源自緊縮旋轉指令203。
執行位元210可操作以回應及/或由於緊縮旋轉指令230(例如回應一或多個源自於指令203的控制信號)而將結果緊縮資料217存入目的儲存位置216。如前所述,緊縮旋轉指令可明確地指定(例如經由位元或一或多個欄位)或以其它方式指示(例如隱含地指示)第一源緊縮資料213,在某些實施例中,可選擇性地指定或以其它方式指示第二源緊縮資料215,及可指定或以其它方式指示目的儲存位置216,其中儲存具有來自第一源緊縮資料之旋轉資料元件的結果緊縮資料217。
舉例來說,執行位元可包括算術邏輯單元、邏輯單元、執行單元或包括旋轉電路或其它邏輯的功能性單元,諸如此類。執行單元及/或裝置可包括可操作來執行及/或處理緊縮旋轉指令,並回應指令而儲存結果(例如回應一或多個微指令或源自於該指令的其它控制信號)之指定或特定的邏輯(例如電路或有可能與軟體及/或韌體結合的硬 體)。
前文顯示及描述較簡單的指令處理裝置200以免糢糊了描述。在其它實施例中,指令處理裝置可選擇性地包括其它習知組件,諸如,例如指令提取單元、指令排程單元、分支預測單元、指令與資料快取、指令與資料轉譯查詢緩衝區、預提取緩衝區、微指令佇列、微指令序列器、匯流排介面單元、第二或更高階快取記憶體、止用單元、暫存器更名單元、包括在處理器內的其它組件、以及它們的各種組合。實施例可以具有多核心、邏輯處理器、或執行引擎。可操作用來執行本文所揭示之指令之實施例的執行單元可包括在至少一個、至少兩個、大部分、或所有核心、邏輯處理器、或執行引擎。處理器中之組件可以說是有極多不同的組合與組態,且各實施例並不限於任何特定的組合或組態。
圖3的方塊圖說明回應緊縮旋轉指令之實施例而實施的緊縮旋轉操作318的實施例。指令指定或以其它方式指示包括有複數個第一緊縮資料元件A0-AN的第一源緊縮資料313,及指定或以其它方式指示包括複數個第二緊縮資料元件B0-BN的第二源緊縮資料315,其中,N為2或2以上的整數。通常,N等於源緊縮資料之位元的大小除以緊縮資料元件之位元的大小。在不同的實施例中,源緊縮資料的寬度可以為64位元、128位元、256位元、512位元,然而本發明的範圍不僅限於這些寬度。在不同的實施例中,緊縮資料元件的寬度可以是8位元位元組、16位 元字、32位元雙字、或64位元四字,然而本發明的範圍不僅限於這些寬度。在不同的實施例中,N可以是2,4,8,16,32,或64,然而本發明的範圍不僅限於這些資料元件數目。在某些實施例中,第一與第二源緊縮資料中的資料元件可以是整數。
回應緊縮旋轉指令產生結果緊縮資料317並存入目的儲存位置。目的儲存位置可由緊縮旋轉指令指定或以其它方式指示。結果緊縮資料包括複數個結果旋轉緊縮資料元件C0-CN。每一個結果旋轉緊縮資料元件C0-CN代表第一源緊縮資料313之其中一個對應的緊縮資料元件A0-AN被第二源緊縮資料315之其中一個對應的緊縮資料元件B0-BN旋轉。第二源緊縮資料315的緊縮資料元件B0-BN代表旋轉量,及第一源緊縮資料313的緊縮資料元件A0-AN代表要被旋轉的資料元件。對應的資料元件代表緊縮資料中位在對應位置中的資料元件。舉例來說,C0代表A0被B0旋轉,C1代表A1被B1旋轉,CN代表AN被BN旋轉,諸如此類。被旋轉意指資料元件內的位元被旋轉。
舉例來說,假設要被旋轉的16位元資料元件為1111111100000000,旋轉方向為向左,且旋轉量為3個位元,則對應的旋轉資料元件為1111100000000111。請注意,最左的3個1被旋轉離開左環繞,且藉由所有其它位元向左移位3個位元位置而旋轉進入右側。在某些實施例中,如果旋轉量大於資料元件之大小減1(例如雙字大於31或四字大於63),則使用旋轉量模化資料大小(例如雙 字使用32位元或四字使用64位元),且此可選擇性地應用於本文所揭示的其它旋轉操作。為清楚起見,在圖示說明中,旋轉符號中的箭頭建議向左旋轉,然而要瞭解,在此圖示說明與其它圖示說明中,除非特別說明,否則,在所有實施例中資料元件可朝左或朝右及/或朝它們的較高次位元(通常在左側)方向或朝它們的較低次位元(通常在右側)方向旋轉。藉由以第二源緊縮資料之對應的資料元件來指定旋轉第一源緊縮資料之每一個資料元件之旋轉量的能力,有利於可能地允許施加N個不同的旋轉量。另者,以下將進一步解釋,在其它實施例中可使用單個旋轉量,且例如在指令的立即中指定,或如另一例以被廣播的單個資料元件指定。
某些實施例與遮罩緊縮旋轉指令及/或遮罩緊縮旋轉操作有關。遮罩緊縮旋轉指令可指定或以其它方式指示緊縮資料操作遮罩。緊縮資料操作遮罩在本文中也簡稱為遮罩。每一個遮罩可代表一預測運算元或有條件的控制運算元,其可遮蔽、預測、或有條件地控制與指令相關的緊縮旋轉操作是否對源資料元件操作,及/或緊縮旋轉操作的結果是否儲存成緊縮資料結果。在某些實施例中,每一個遮罩可操作以每個結果資料元件顆粒來遮蔽該緊縮旋轉操作。每一個遮罩允許為要被預測或有條件控制之不同的結果資料元件各自獨立及/或與其它結果資料元件無關地緊縮旋轉操作。遮罩可提供某些優點,諸如,例如當操作需被實施時,有能力選擇性地對緊縮資料中的資料元件實施 操作,但當資料元件不需要時,則不實施。
每一個遮罩可包括多個遮罩元件、預測元件、有條件控制元件、或旗標。在一態樣中,該等元件或旗標可包括與結果資料元件一對一對應(例如,如果有4個結果資料元件則可能有4個該等元件或旗標)。每一個元件或旗標可操作來遮蔽各自的緊縮資料操作,及/或遮蔽各自緊縮旋轉所導致之對應結果資料元件的儲存。通常,每一個元件或旗標可以是單個位元。單個位元允許指定兩不同可能性其中任一(例如,實施操作對不實施操作,儲存操作的結果對不儲存操作的結果等)。遮罩之每一個位元的二進位值可預測或控制緊縮旋轉操作是否被執行,及/或被旋轉的結果是否被儲存。按照一可能的慣例,每一個位元可被設定(即,具有1的二進位值)以允許或被清除(即,具有0的二進位值)以不允許緊縮旋轉操作的結果存入對應的結果資料元件。
在某些實施例中可實施合併遮蔽。在合併遮蔽中,當操作是遮蔽掉某特定的結果資料元件時,來自源緊縮資料之對應資料元件的值可存入對應的某特定結果資料元件中。例如,如果源儲存位置被當成目的儲存位置再使用,則對應的目的資料元件可保持初始的源值(即,不以指令之操作的結果來更新)。在其它實施例中可實施歸零遮蔽。在歸零遮蔽中,當操作是遮蔽掉某特定的結果資料元件時,對應的某特定結果資料元件會被歸零,或在對應的特定結果元件中儲存零的值。或者,在被遮蔽掉的結果元 件中儲存其它的預定值。
在某些實施例中,不論遮罩的對應位元為何,可對具有要被旋轉之資料元件之源緊縮資料之所有對應的資料元件選擇性地實施緊縮旋轉操作,但被旋轉的結果會或不會存入結果緊縮資料,則視遮罩之對應的位元而定。或者,在另一實施例中,如果遮罩之對應的位元指定操作的結果不存入緊縮資料結果,則緊縮旋轉操作可選擇性地略去(即不實施)。在某些實施例中,可為遮蔽元件的操作選擇性地抑制或不引起異常及/或違規。在某些實施例中,對於具有記憶體運算元的遮罩緊縮旋轉指令,可選擇性地為遮蔽掉資料元件抑制記憶體錯誤。
圖4的方塊圖說明回應遮罩緊縮旋轉指令所實施之遮罩緊縮旋轉操作420的實施例。指令指定或以其它方式指示包括有複數個第一緊縮資料元件A0-AN的第一源緊縮資料413,以及指定或以其它方式指示包括有複數個第二緊縮資料元件B0-BN的第二源緊縮資料415,其中N為2或2以上的整數。通常,N等於源緊縮資料之位元的大小除以緊縮資料元件之位元的大小。在不同的實施例中,源緊縮資料的寬度可以為64位元,128位元,256位元,512位元,然而本發明的範圍不僅限於這些寬度。在不同的實施例中,緊縮資料元件的寬度可以是8位元位元組,16位元字,32位元雙字,或64位元四字,然而本發明的範圍不僅限於這些寬度。在不同的實施例中,N可以是2,4,8,16,32,或64,然而本發明的範圍不僅限於這些資料元件 數目。在某些實施例中,第一與第二源緊縮資料中的資料元件可以是整數。這些屬性也可應用到本文所揭示之其它操作中的其它緊縮資料與資料元件。
遮罩緊縮旋轉指令也指定或以其它方式指示緊縮資料操作遮罩421。緊縮資料操作遮罩可包括單個位元用於第一源緊縮資料中之每一個對應的資料元件,及/或用於第一與第二源緊縮資料中之每一對對應的資料元件。亦即,緊縮資料操作遮罩中有N個位元用於遮蔽。最右的位元對應於A0及/或A0與B0對,最左的位元對應於AN及/或AN與BN對,諸如此類。舉例來說,在512位元寬的緊縮資料與32位元寬的雙字資料元件的情況中,緊縮資料操作遮罩可包括16個1位元的遮罩位元,或在64位元4字之資料元件的情況中,遮罩可包括8個1位元的遮罩位元。
回應緊縮旋轉指令產生結果緊縮資料417並存入目的儲存位置。目的儲存位置可由緊縮旋轉指令指定或以其它方式指示。如前所述,在遮罩緊縮旋轉操作中,緊縮資料操作遮罩421被用來預測或有條件的控制被旋轉的結果是否要存入結果緊縮資料。在說明的實施例中,遮罩位元依循兩可能慣例其中之一,其中,二進制1指示被旋轉的結果存入結果緊縮資料中,及其中二進制0指示被旋轉的結果不存入結果緊縮資料。在替代的實施例中也可能是其它的慣例。結果緊縮資料包括複數個結果旋轉緊縮資料元件。沒有被遮蔽掉的每一個結果資料元件(即緊縮資料操 作遮罩之對應的位元中不是零)代表第一源緊縮資料413之緊縮資料元件A0-AN其中一個對應的元件被第二源緊縮資料415之緊縮資料元件B0-BN其中一個對應的元件旋轉。在圖示說明所給定的例子中,此為結果資料元件C0與CN的情況。特別是C0包括A0被B0旋轉,CN包括AN被BN旋轉。旋轉的方向可以向右或向左。在某些實施例中,如果旋轉量大於資料元件之大小減1(例如雙字大於31或四字大於63),則使用旋轉量模化資料大小(例如雙字使用32位元或四字使用64位元)。不過,被遮蔽掉的值,諸如,例如被合併或歸零的值被包括在資料元件C1中。同樣地,此被遮蔽掉的值可關於緊縮資料操作遮罩中的每一個位元(亦即二進制0)存入結果緊縮資料。
在圖4的實施例中,第二源緊縮資料提供複數個可能的不同旋轉量。在替代的實施例中,指令的立即可提供施加於第一源緊縮資料中每一個資料元件取決於遮蔽的單個旋轉量,在其它方面則與圖4所示類似。
圖5係處理遮罩緊縮旋轉指令實施例之方法522實施例的方塊流程圖。在各不同的實施例中,該方法可藉由通用處理器、特殊用途處理器(例如繪圖處理器、或數位信號處理器)或其它類型的數位邏輯裝置或指令處理裝置來實施。在某些實施例中,方法522可藉由圖1的處理器100、或圖2的指令處理裝置200、或類似的處理器或指令處理裝置來實施。另者,方法522可藉由處理器或指令處理裝置之不同的實施例來實施。此外,處理器100與指 令處理裝置200實施操作與方法的實施例可與方法522相同、類似、或不同。
該方法包括在方塊523處接收遮罩緊縮旋轉指令。在各不同態樣中,該指令係由處理器、指令處理裝置、或在它們中的某部分(例如解碼器、指令轉換器等)處接收。在各不同的態樣中,指令可接收自處理器以外的來源(例如來自主記憶體、碟片、或匯流排或互連),或接收自處理器上的來源(例如來自指令快取記憶體)。遮罩緊縮旋轉指令可指定或以其它方式指示包括有複數個緊縮資料元件的第一源緊縮資料。該指令也指定或以其它方式指示具有複數個遮罩元件的緊縮資料操作遮罩。該指令也指定或以其它方式指示至少一個旋轉量。該指令也指定或以其它方式指示結果緊縮資料所要儲存的目的儲存位置。
在方塊524處,由於回應遮罩緊縮旋轉指令及/或按遮罩緊縮旋轉指令所指定,而將結果緊縮資料存入所指示的目的儲存位置。結果緊縮資料包括複數個結果資料元件,每一個結果資料元件與對應之相對位置中之遮罩元件其中不同之一的元件對應。未被對應之遮罩元件遮蔽掉的結果資料元件包括位在已被旋轉之對應位置中之第一源緊縮資料的資料元件其中之一。被對應之遮罩元件遮蔽掉的結果資料元件包括被遮蔽掉的值。
圖示說明的方法包括從處理器或指令處理裝置之外部可見的操作(例如,由軟體透視看見)。在其它實施例中,該方法可選擇性地包括發生在處理器內部的一或多個操 作。舉例來說,指令可被提取並接著解碼、轉譯、倣真、或以其它方式轉換成一或多個其它指令或控制信號。源運算元可被存取及/或接收。執行單元能夠實施指令所指定的操作,且可實施操作(例如用以實施指令之操作的微架構操作,諸如實施旋轉操作)。實施操作之不同的微架構方式是可想見的。
圖6的方塊圖說明具有旋轉量630之資料元件廣播的緊縮旋轉操作的實施例,其回應具有旋轉量之資料元件廣播的緊縮旋轉指令的實施例而實施。在想要為多重緊縮旋轉操作之每一個再使用單個源資料元件時,資料元件廣播很管用。指令可指示具有複數個緊縮資料元件A0-AN的第一源緊縮資料613。指令也可指示要被廣播之第二源單個資料元件B 615。在某些實施例中,單個資料元件B 615可儲存在記憶體631(例如主記憶體)中,然而此非必須。該指令也可指示目的儲存位置。
具有旋轉量之資料元件廣播的緊縮旋轉指令可結合第二源之單個資料元件B 615的初始資料元件廣播與後續的緊縮旋轉操作。在此情況,單個資料元件B係一固定的旋轉量,其被施加到每一個資料元件A0-AN。初始資料元件廣播可多次廣播或複製單個資料元件B(例如次數等於第一源緊縮資料之資料元件A0-AN的數目N)。如前所述,N可以是2,4,8,16,32,或64,然而本發明之範圍並不限於只有這些資料元件的數目。
多重廣播(例如複製)資料元件632(在此情況代表旋轉 量)可代表要用於後續連同第一源緊縮資料中複數個資料元件A0-AN之緊縮旋轉操作的緊縮資料或向量。在某些實施例中,單個資料元件B可存在於記憶體631(例如主記憶體)內,且資料元件廣播可經由源自於包括資料元件廣播之緊縮旋轉指令的載入操作(例如載入微操作)而實施。單個資料元件的廣播可代表實施緊縮旋轉操作前的資料變換預處理。在一態樣中,多重廣播資料元件632可被儲存,例如儲存在微架構暫時暫存器中。或者,在另一態樣中,多重廣播資料元件632僅經由電路傳輸,不需要被儲存,甚至暫時儲存。
回應具有旋轉量之資料元件廣播的緊縮旋轉指令產生結果緊縮資料617並存入目的儲存位置。結果緊縮資料包括複數個結果旋轉緊縮資料元件C0-CN。每一個結果旋轉緊縮資料元件C0-CN代表第一源緊縮資料616之其中一個對應的緊縮資料元件A0-AN被多重廣播資料元件632其中一個不同的對應元件所指定的旋轉量旋轉,每一個不同的對應元件皆代表單個資料元件B 615之不同的複製或拷貝。亦即,C0代表A0被B旋轉,C1代表A1被B旋轉,CN代表AN被B旋轉,諸如此類。請注意,單個旋轉量用於每一個A0-AN。旋轉可向右或向左。廣播允許旋轉量由單個資料元件B 615來指定的優點是可用單個旋轉指令施加於每一個資料元件A0-AN
圖7係處理以旋轉量指令的資料元件廣播來緊縮旋轉之實施例的方法733實施例的方塊流程圖。在各不同的實 施例中,該方法可藉由通用處理器、特殊用途處理器(例如繪圖處理器或數位信號處理器)、或其它類型的數位邏輯裝置或指令處理裝置來實施。在某些實施例中,方法733可由圖1的處理器100、或圖2的指令處理裝置200、或類似的處理器或指令處理裝置來實施。另者,方法733可藉由不同實施例的處理器或指令處理裝置來實施。此外,處理器100與指令處理裝置200可實施與方法733相同、類似、或不同之操作與方法的實施例。
在方塊734,該方法包括接收具有旋轉量指令之資料元件廣播的緊縮旋轉指令。在各不同態樣中,指令係由處理器、指令處理裝置、或在它們的某部分(例如解碼器、指令轉換器等)處接收。在各不同態樣中,指令可接收自處理器以外的來源(例如來自主記憶體、碟片、或匯流排或互連),或接收自處理器上的來源(例如來自指令快取記憶體)。該指令指定或以其它方式指示包括有複數個緊縮資料元件的第一源緊縮資料。該指令指定或以其它方式指示代表旋轉量的第二源單個資料元件。該指令也指定或以其它方式指示至少一個旋轉量。該指令也指定或以其它方式指示目的儲存位置。
在方塊735,第二源單個資料元件被廣播以建立數個廣播資料元件。複數個廣播資料元件的數目與第一源緊縮資料中之緊縮資料元件的數目相同。每一個廣播資料元件代表第二源之單個資料元件的複製或拷貝且指定相同的旋轉量。
在方塊736,由於回應具有旋轉量指令之資料元件廣播之緊縮旋轉指令及/或按其所指定目的儲存位置而將結果緊縮資料存入。結果緊縮資料包括複數個結果旋轉緊縮資料元件,其每一個元件皆與第一源緊縮資料位於對應位置中之資料元件中不同的一個元件對應。每一個結果資料元件皆代表或包括被廣播資料元件其中對應之元件旋轉(例如藉由被廣播資料元件所指定的旋轉量)之第一源緊縮資料的對應資料元件。廣播資料元件每一個皆代表或包括單個第二源資料元件之不同的複製或拷貝。旋轉可向右或向左。
圖8的方塊圖說明具有旋轉量之資料元件廣播的遮罩緊縮旋轉操作840實施例,其回應具有旋轉量之資料元件廣播的遮罩緊縮旋轉指令的實施例而實施。操作840中除了增加遮罩之外,操作840與先前描述圖6的操作630類似。為避免糢糊了描述,以下的討論將強調操作840之不同或額外的特徵,而不重複所有相似之處。須瞭解,除了以其它方式表達或顯而易見,否則對於操作630之屬性與衍生的描述也可應用於操作840。
包括有旋轉量之資料元件廣播的遮罩緊縮旋轉指令可指示具有複數個緊縮資料元件A0-AN的第一源緊縮資料813。指令也指示要被廣播的第二源單個資料元件B 815。在某些實施例中,單個資料元件B 815可儲存在記憶體831(例如主記憶體)之中,然而此非必須。指令也指示具有位元數目等於緊縮資料元件A0-AN之複數個位元的 緊縮資料操作遮罩821。指令也指示目的儲存位置。
第二源單個資料元件815可被廣播進到多重廣播資料元件832。在此情況,單個資料元件B係為要被施加於每一個資料元件A0-AN的固定旋轉量。資料元件廣播可廣播或複製單個資料元件B多次(例如等於資料元件A0-AN的數目N)。如前所提及,例如,N可以是2,4,8,16,32,或64。
回應該指令而產生結果緊縮資料817並存入目的儲存位置。緊縮資料操作遮罩821被用來預測或有條件地控制被旋轉的結果是否要存入結果緊縮資料。在圖示說明的實施例中,遮罩位元依循兩可能慣例其中之一,其中,二進制1指示被旋轉的結果存入結果緊縮資料,及其中二進制0指示被旋轉的結果不存入結果緊縮資料。在替代的實施例中也可能是其它的慣例。沒有被遮蔽掉的每一個結果資料元件(即緊縮資料操作遮罩之對應的位元中不是零)代表第一源緊縮資料813之緊縮資料元件A0-AN其中一個對應的元件被多重廣播資料元件832其中不同的對應元件所指定的旋轉量旋轉,其每一個皆代表單個資料元件B 815之不同的複製或拷貝。如圖示說明中所給定的例子,此為結果資料元件C0與CN的情況。特別是C0包括A0被B的第一複製旋轉,及CN包括AN被B的第N個複製旋轉。旋轉的方向可以向右或向左。不過,被遮蔽掉的值,諸如,例如被合併或歸零的值被包括在資料元件C1中。同樣地,此被遮蔽掉的值可關於緊縮資料操作遮罩中的每一個 位元(亦即二進制0)存入結果緊縮資料中。
圖9的方塊圖說明具有要被旋轉之資料元件之資料元件廣播與由立即943所指定之旋轉量之選用的遮罩緊縮旋轉操作942的實施例。該操作可回應具有要被旋轉之資料元件之資料元件廣播的選擇性遮罩緊縮旋轉操作942實施例而實施。
指令可指示第一源單個資料元件A 913。在某些實施例中,單個資料元件A 913可儲存在記憶體931(例如主記憶體)中,然而此並非必須。該指令也具有指定旋轉量B 944的立即943。在某些實施例中,該指令也選擇性地指定具有位元數目等於廣播資料元件數目之複數個位元的緊縮資料操作遮罩921。指令也指示目的儲存位置。第一源單個資料元件913被廣播進入要被旋轉的多重廣播資料元件932。
回應該指令,結果緊縮資料917被產生,並存入目的儲存位置。如前,選用的緊縮資料操作遮罩921被用來預測或有條件地控制被旋轉的結果是否要存入結果緊縮資料。每一個未被遮蔽掉的結果資料元件代表被立即943所指定之旋轉量B944旋轉之複製的廣播資料元件A 932其中一個對應的元件。如說明中所給定的例子,C0包括A的第一複製被B旋轉,及CN包括A的第N個複製被B旋轉。旋轉的方向可以向右或向左。不過,被遮蔽掉的值,諸如,例如被合併或歸零的值被包括在資料元件C1中。同樣地,此被遮蔽掉的值可關於緊縮資料操作遮罩中的每 一個位元(亦即二進制0)存入結果緊縮資料。在數個圖中,C1被用來包含被遮蔽掉的值,然而此僅是為了說明上的方便,C1可用包括旋轉結果來取代。
圖10係用於具有資料元件廣播指令1006之遮罩緊縮旋轉的指令格式實施例的方塊圖。指令格式包括操作碼或運算碼1045。運算碼可代表可操作用來識別要被實施之指令及/或操作的複數個位元或一或多個欄位。
舉例來說,指令格式包括用來明確指定第一源運算元或儲存位置的第一源說明符1046,用來明確指定第二源運算元或儲存位置之選用的第二源說明符1047,以及用來明確指定目的運算元或要儲存結果之儲存位置的目的說明符1048。舉例來說,這些說明符每一個皆包括暫存器的位址、記憶體位置、或其它儲存位置。另者,如前所述,相對於被明確地指定,一或多個第一源、第二源、或目的可隱含於指令。例如,其中一個源可選擇性地再使用做為目的,且可用該結果覆寫初始的內容。亦即,目的可穩含地被指示做為其中一個源。在某些實施例中沒有第二源且因此不需要第二源(例如在立即指定旋轉量的情況中)。
在某些實施例中,其中,指令係為具有資料元件廣播的緊縮旋轉指令,指令格式可包括選用的資料元件廣播控制1049。資料元件廣播控制可包括一或多個位元或欄位,用以指示要被實施的資料元件廣播。如前文中的討論,資料元件廣播可包括將存取自說明符或所指示之儲存 位置(例如記憶體)的單個源資料元件廣播進入要被指令使用的複數個複製的資料元件。
在某些實施例中,其中,指令係為遮罩緊縮旋轉指令,該指令格式可包括選用的緊縮資料操作遮罩說明符1050。遮罩說明符可明確指定緊縮資料遮罩運算元或儲存位置(例如緊縮資料操作遮罩暫存器)。另者,緊縮資料操作遮罩可隱含地指示。在某些實施例中,指令格式也可包括遮蔽操作說明符之的選用類型1051,用來指定遮蔽操作的類型。舉例來說,遮蔽操作說明符的類型可包括一個單位元,用來指定所要實施的是合併遮蔽或是歸零遮蔽。如果還要利用額外類型的遮罩,就要使用2或更多個位元。另者,遮蔽操作的類型可隱含地指示(例如在隱含控制暫存器中)。如前所提及,遮蔽係選用的,且非必須。
圖示說明的指令格式顯示欄位類型的例子,其可包括在緊縮旋轉指令的實施例中。如所示,某些實施例可結合具有遮蔽的廣播。另些實施例可包括說明欄的子集或增加額外欄位。例如,某些指令使用遮蔽而不廣播,或使用廣播而不遮蔽。如另一例子,在指令中經由立即來指定旋轉量,且可略去其中一個源說明符。圖示說明的欄位順序/配置乃非必要,反而欄位可以重新配置。欄位不需要包括連續的位元序列,反而可由非連續或分離的位元組成。在某些實施例中,指令格式可依循EVEX編碼或指令格式,然而此非必須。以下進一步討論EVEX編碼進一步的細節。
圖11係一組適合之緊縮資料操作遮罩暫存器1109之例示實施例的方塊圖。每一個緊縮資料操作遮罩暫存器皆用來儲存緊縮資料操作遮罩。在說明的實施例中,該組包括標示以k0至k7的8個緊縮資料操作遮罩暫存器。另些實施例可包括少於8個(例如2、4、6等)或多於8個(例如16、20、32等)緊縮資料操作遮罩暫存器。在說明的實施例中,每一個緊縮資料操作遮罩暫存器為64位元。在另些實施例中,緊縮資料操作遮罩暫存器的寬度可以寬於64位元(例如80位元、128位元等)或窄於64位元(例如8位元、16位元、32位元等)。緊縮資料操作遮罩暫存器可使用各種習知技術以不同的方式來實施,且不限於任何所知的某特定類型電路。各種不同類型的暫存器都適用,只要它們有儲存及提供本文所描述之資料的能力。適合之暫存器的例子包括但不限於專用的實體暫存器、使用暫存器更名的動態配置實體暫存器、及它們的組合。
在某些實施例中,緊縮資料操作遮罩暫存器1109可以是分離、專用的一組架構暫存器。在某些實施例中,指令可在指令格式之不同的位元或一或多個不同欄位組合中編碼或指定緊縮資料操作遮罩暫存器,接著其用來編碼或指定其它類型的暫存器(例如緊縮資料暫存器)。舉例來說,遮罩緊縮資料指令可使用3個位元(例如3位元欄位)來編碼或指定k0至k7等8個緊縮資料操作遮罩暫存器其中任一。在另些實施例中,當有較少或較多的緊縮資料操作遮罩暫存器時,分別使用較少或較多的位元。在一特定 的實施中,僅k1至k7的緊縮資料操作遮罩暫存器(k0除外)被定址做為預測運算元來預測遮罩緊縮資料操作。暫存器k0可用做為正規的源或目的,而不編碼成為預測運算元(例如,如果指定k0所有都為1或“無遮罩”編碼)。在其它實施例中,所有或僅某些暫存器被編碼成預測運算元。
圖12係一組適合之緊縮資料暫存器1208的例示實施例的方塊圖。圖示說明的緊縮資料暫存器包括32個512位元緊縮資料或向量暫存器。這些32個512位元暫存器標示為ZMM0到ZMM31。在說明的實施例中,這些暫存器之低16個(即ZMM0-ZMM15)的低序位256位元,被疊於或覆於各自的256位元緊縮資料或標示為YMM0-YMM15的向量暫存器上,雖然這不是必需的。同樣地,在說明的實施例中,YMM0-YMM15的低序位128位元被疊於或覆於各自的128位元緊縮資料或標示為XMM0-XMM1的向量暫存器上,雖然這也不是必需的。512位元暫存器ZMM0到ZMM31可操作來保持512位元緊縮資料、256位元緊縮資料、或128位元緊縮資料。256位元暫存器YMM0-YMM15可操作來保持256位元緊縮資料、或128位元緊縮資料。128位元暫存器XMM0-XMM1可操作來保持128位元緊縮資料。每一個暫存器可被用來儲存緊縮浮點資料或緊縮整數資料。所支援之不同資料元件大小包括至少8位元的位元組資料、16位元的字資料、32位元的雙字或單精度浮點資料、及64位元的4字或雙精 度浮點資料。緊縮資料暫存器的另些實施例可包括不同數量的暫存器、不同大小的暫存器、及有或無有在較小暫存器上疊置較大的暫存器。
圖13係製造之物件1352(例如電腦程式產品)的方塊圖,包括機器可讀取儲存媒體1353。在某些實施例中,機器可讀取儲存媒體可以是實體及/或非暫時性機器可讀取儲存媒體。在各種的例示實施例中,機器可讀取儲存媒體可包括軟碟、光碟、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式唯讀記憶體(PROM)、可抹除可程式唯讀記憶體(EPROM)、電氣可抹除可程式唯讀記憶體(EEPROM)、隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、快閃記憶體、相變記憶體(PCM)、半導體記憶體、其它類型記憶體、或它們的組合。在某些實施例中,媒體可包括一或多種固態資料儲存材料,諸如,例如半導體資料儲存材料、相變資料儲存材料、磁性資料儲存材料、光學透明固態資料儲存材料等。
機器可讀取儲存媒體儲存一或多個緊縮旋轉指令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指令樣板。在向量友好指令格式之上下文中的“通用”一詞意指該指令格式並不限制於任何特定的指令集。
雖然在將要描述的本發明實施例中,向量友好指令格 式支援如下:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(且因此,64位元組向量是由16個雙字大小之元件或另者,由8個4字大小之元件所組成);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)的32位元組向量運算元長度(或大小);以及,具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)的16位元組向量運算元長度(或大小);但在另一些實施例中,可支援具有更多、更少及/或不同的資料元件寬度(或大小)(例如,128位元(16位元組)資料元件寬度)之更多、更少及/或不同的向量運算元大小(例如256位元組向量運算元)。
圖14A中的A類指令樣板包括:1)在無記憶體存取1405指令樣板內顯示無記憶體存取、全捨入控制類型操作1410指令樣板且無記憶體存取、資料轉換類型操作1415指令樣板;以及2)在記憶體存取1420指令樣板內顯示記憶體存取、暫時1425指令樣板與記憶體存取、非暫時1430指令樣板。圖14B中的B類指令樣板包括:1)在無記憶體存取1405指令樣板內顯示無記憶體存取、寫入遮罩控制、部分捨入控制類型操作1412指令樣板且無記憶體存取、寫入遮罩控制、vsize類型操作1417指令樣 板;以及2)在記憶體存取1420指令樣板內顯示記憶體存取、寫入遮罩控制1427指令樣板。
通用向量友好指令格式1400包括以下表列的欄位,按圖14A-14B中說明的順序。
格式欄1440-此欄位中的特定值(指令格式識別符值)唯一地識別向量友好指令格式,且因此向量友好指令格式的指令出現在指令流中。就此而論,此欄位就意義上係選用的,僅具有通用向量友好指令格式的指令集不需要。
基本操作欄1442-其內容辨識不同的基本操作。
暫存器索引欄1444-其內容直接或經由位址來產生指定源運算元與目的運算元在暫存器中或記憶體中之位置。此包括足夠數目的位元,以從P×Q(例如32×512、16×128、32×1024、64×1024)暫存器檔案中選擇N個暫存器。雖然在一實施例中N可以達3個源與一個目的暫存器,但另些實施例可支援更多或更少的源與目的暫存器(例如,可支援達2個源暫存器,其中一個源也可做為目的,或可支援達3個源,這些源其中之一也可做為目的,也可支援達3個源,這些源其中之一也可做為目的,也可支援達2個源和一個目的)。
修飾符欄1446-其內容辨識通用向量友好指令格式之指令的出現,其指定來自那些非通用向量友好指令格式的記憶體存取;亦即,於無記憶體存取1405指令樣板與記憶體存取1420指令樣板之間。記憶體存取操作讀取及/或寫入到記憶體階層(在某些情況中,使用暫存器中的值 來指定源及/或目的位址),然而非記憶體存取操作則否(例如,源與目的皆為暫存器)。雖然在一實施例中此欄位也在3種不同之實施記憶體位址計算的方式之間做選擇,但在另些實施例中,可支援更多、更少、或不同方式來實施記憶體位址計算。
增強操作欄1450-其內容辨識除了基本操作之外的各種不同操作中哪一個要執行。此欄位係上下文特定的。在本發明的一實施例中,此欄被劃分成類屬欄1468、字母欄1452、及貝他欄1454。增強操作欄1450允許以單個指令而非2、3、或4個指令來實施共同群組的操作。
調整(scale)欄1460-其內容允許調整索引欄之內容,用於記憶體位址產生(例如使用2scale 索引+基本來產生位址)。
位移欄1462A-其內容係用來產生記憶體位址中的一部分(例如使用2scale 索引+基本+位移來產生位址)。
位移因數欄1462B(須注意,位移欄1462A直接並列於位移因數欄1462B的上方,表示總有一個被使用)-其內容係用來產生記憶體位址的一部分;其指定一被記憶體存取之大小(N)調整的位移因數-其中,N係記憶體存取中之位元組的數目(例如使用2scale 索引+基本+經調整後的位移來產生位址)。冗餘的低階位元被忽略,且因此,為了產生用來計算有效位址的最終位移,以記憶體運算元總大小(N)加乘位移因數欄的內容。N的值,係由處理器硬體在執行時間根據全運算碼欄1474(在本文中稍後描述) 及資料操作欄1454C來決定。就意義上位移欄1462A與位移因數欄1462B係選用的,無記憶體存取1405指令樣板不使用及/或不同的實施例可僅實施其一或兩者皆不實施。
資料元件寬度欄1464-其內容辨識數個資料元件寬度中使用哪一個(在某些實施例中用於所有指令;在其它實施例中僅用於某些指令)。就意義上此欄位係選用的,若僅支援一個資料元件寬度及/或資料元件寬度係使用運算碼的某些態樣來支援則不需要此欄。
寫入遮罩欄1470-此內容以每個資料元件位置為基礎來控制目的向量運算元中資料元件的位置是否反映基本操作與增強操作之結果。A類指令樣板支援合併寫入遮罩,而B類型指令樣板支援合併與歸零寫入遮罩兩者。當合併時,在任何操作的執行期間(由基本操作與增強操作所指定),向量遮罩允許目的中之任何組的元件被保護不會更新;在另一實施例中,目的中對應於遮罩位元為0處的每一元件保持為舊值。反之,當歸零時,在任何操作的執行期間(由基本操作與增強操作所指定),向量遮罩允許目的中之任何組的元件被歸零;在一實施例中,當對應的遮罩位元為0值時,目的的元件被設定為0。此功能性的子集有能力控制被實施之操作的向量長度(亦即,元件的跨距從第一個到最後一個被修改);不過,被修改的元件並不必然連續。因此,寫入遮罩欄1470允許部分的向量操作,包括載入、儲存、算術、邏輯等。雖然所描述之本 發明實施例中之寫入遮罩欄1470的內容用來選擇數個其中包含有要被使用之寫入遮罩的寫入遮罩暫存器其中之一,(且因此,寫入遮罩欄1470的內容間接地識別要被實施的遮罩),但另些實施例額外允許寫入遮罩欄1470的內容直接指定要被實施的遮罩或以其取代之。
立即欄1472-其內允許立即的說明。就意義上此欄位為選用的,亦即,其不會出現於不支援立即之通用向量友好指令格式的實施中,且其不會出現於不使用立即的指令內。
類屬欄1468-其內容辨識指令之不同類屬。參考圖14A-B,此欄位之內容在A類指令與B類指令間做選擇。在圖14A-B中,使用圓角正方形來指示出現於此欄位中的特定值(例如,分別於圖14A-14B中的用於類屬欄1468的A類1468A與B類1468B)。
A類指令樣板
在A類之無記憶體存取1405指令樣板的情況中,字母欄1452被當成RS欄1452A來解譯,其內容辨識不同的增強操作類型中哪一個要被實施(例如,分別為無記憶體存取、捨入類型操作1410且無記憶體存取、資料轉換類型操作1415指令樣板指定捨入1452A.1與資料轉換1452A.2),而貝他欄1454辨識被指定之類型的哪一項操作要被實施。在無記憶體存取1405指令樣板中,調整欄1460、位移欄1462A、以及位移調整欄1462B都不會出 現。
無記憶體存取指令樣板-全捨入控制類型操作
在無記憶體存取全捨入控制類型操作1410指令樣板中,貝他欄1454被當成捨入控制欄1454A來解譯,它的內容提供靜態捨入。在本發明所描述的實施例中雖然捨入控制欄1454A包括抑制所有浮點異常(floating point exceptions;SAE)欄1456與捨入操作控制欄1458,但另些實施例可支援將這些概念編碼到相同的欄位,或僅具有一個或其它的這些概念/欄位(例如,可僅具有捨入操作控制欄1458)。
SAE欄1456-其內容辨識是否關閉例外事件報告:當SAE欄1456的內容指示抑制被致能時,給定的指令不報告任何種類的浮點異常旗標,且不產生任何浮點異常處置器。
捨入操作控制欄1458-其內容辨識要實施哪一群組的捨入操作(例如,捨進、捨去、朝零捨入、及朝最靠近者捨入)。因此,捨入操作控制欄1458允許以每個指令為基礎來改變捨入模式。在本發明的一實施例中,處理器包括用來指定捨入模式的控制暫存器,捨入操作控制欄1450的內容超控該暫存器的值。
無記憶體存取指令樣板-資料轉換類型操作
在無記憶體存取資料轉換類型操作1415指令樣板中,貝他欄1454被當成資料轉換欄1454B來解譯,其內容辨識數個資料轉換中哪一個要被實施(例如無資料轉 換、拌和、廣播)。
在A類的記憶體存取1420指令樣板的情況中,字母欄1452被當成逐出提示欄1452B來解譯,其內容辨識其中哪一個逐出提示要被使用(在圖14A中,分別為記憶體存取、暫時1425指令樣板與記憶體存取、非暫時1430指令樣板指定暫時1452B.1與非暫時1452B.2),雖然貝他欄1454被當成資料調處欄1454C來解譯,其內容辨識數個資料調處操作(也稱為基原)中哪一個要被實施(例如無調處、廣播、源向上轉換、及目的向下轉換)。記憶體存取1420指令樣板包括調整欄1460、及選用的位移欄1462A或位移調整欄1462B。
向量記憶體指令實施從記憶體載入向量,以及將向量儲存到記憶體,也支援轉換。如同正規的向量指令,向量記憶體指令以資料元件對的方式來往於記憶體傳送,實際被傳送的元件係由被選擇做為寫入遮罩之向量遮罩的內容來指定。
記憶體存取指令樣板-暫時的
暫時的資料係足以得益於快取之有可能很快再被使用資料。不過,此為提示,且不同的處理器可能以不同的方式實施,包括完全忽略該提示。
記憶體存取指令樣板-非暫時的
非暫時的資料係不可能很快再被使用而足以得益於從第一階快取記憶體中快取的資料,且須給予逐出優先權。不過,此為提示,且不同的處理器可能以不同的方式實 施,包括完全忽略該提示。
B類指令樣板
在B類之指令樣板的情況中,字母欄1452被當成寫入遮罩控制(Z)欄1452C來解譯,其內容辨識由寫入遮罩欄1470所控制的寫入遮罩是否應予合併或歸零。
在B類之無記憶體存取1405指令樣板的情況中,部分的貝塔欄1454被當成RL欄1457A來解譯,其內容辨識各種不同類型之增強操作中哪一個要被實施(例如,分別為無記憶體存取、寫入遮罩控制、部分捨入控制類型操作1412指令樣板且無記憶體存取、寫入遮罩控制、VSIZE類型操作1417指令樣板指定捨入1457A.1與向量長度(VSIZE)1457A.2),而貝塔欄1454的其餘部分則用來辨識指定類型的哪一項操作要被實施。在無記憶體存取1405指令樣板中,調整欄1460、位移欄1462A、及位移調整欄1462B不會出現。
在無記憶體存取、寫入遮罩控制、部分捨入控制類型操作1410指令樣板中,其餘的貝塔欄1454當成捨入操作欄1459A被解譯,且異常事件報告被關閉(給定的指令不報告任何種類的浮點異常旗標,且不產生任何浮點異常處置器)。
捨入操作控制欄1459A-正如同捨入操作控制欄1458,其內容辨識要實施哪一個群組的捨入操作(例如,捨進、捨去、朝零捨入、及朝最靠近者捨入)。因此,捨 入操作控制欄1459A允許以每一指令為基礎來改變捨入模式。在本發明的一實施例中,處理器包括用來指定捨入模式的控制暫存器,捨入操作控制欄1450的內容超控該暫存器的值。
在無記憶體存取、寫入遮罩控制、VSIZE類型操作1417指令樣板中,其餘的貝塔欄1454當成向量長度欄1459B來解譯,其內容辨識數個資料向量長度中要實施哪一個(例如128,256,或512個位元組)。
在B類之記憶體存取1420指令樣板的情況中,部分的貝塔欄1454當成廣播欄1457B來解譯,其內容辨識是否要實施廣播類型的資料調處操作,而其餘的貝塔欄1454當成向量長度欄1459B來解譯。記憶體存取1420指令樣板包括調整欄1460及選用的位移欄1462A或位移調整欄1462B。
關於通用向量友好指令格式1400,所顯示的全運算碼欄1474包括格式欄1440、基本操作欄1442、及資料元件寬度欄1464。雖然所顯示之一實施例中的全運算碼欄1474包括所有這些欄位,但在那些不支援所有欄位的實施例中,全運算碼欄1474包括的欄位少於這些所有欄位。全運算碼欄1474提供運算碼(opcode)。
在通用向量友好指令格式中,增強操作欄1450、資料元件寬度欄1464、及寫入遮罩欄1470允許這些特徵以每一指令為基礎被指定。
結合寫入遮罩欄與資料元件寬度欄產生類型指令,在 於它們允許根據不同的資料元件寬度施加遮罩。
A類與B類中各式的指令樣板適用於不同之情況。在本發明的某些實施例中,不同的處理器或處理器內之不同的核心可能僅支援A類、B類、或兩者。例如,意欲用於通用計算的高性能通用亂序核心可僅支援B類,意欲主要用於繪圖及/或科學(產出)計算的核心可僅支援A類,而意欲用於兩者的核心可支援A與B類(當然,來自此兩類之樣板與指令但非全部之樣板與指令的某些混合式核心也在本發明的範圍內)。此外,單個處理器可包括多個核心,所有這些核心可以支援同一類屬,或其中不同的核心支援不同的類屬。例如,在具有分離之繪圖與通用核心的處理器內,其中一個主要意欲用於繪圖及/或科學(產出)計算的繪圖核心僅支援A類,而一或多個通用核心可以是意欲用於通用計算具有亂序執行及暫存器更名的高性能通用核心僅支援B類。另一不具有分離之繪圖核心的處理器可包括一或多個通用順序或亂序核心,其支援A類與B類。當然,在本發明的不同實施例中,來自某一類型之特徵也可在另一類型中實施。以高階語言寫成的程式(例如,即時編譯或靜態地編譯)可付諸各種不同的可執行形式,包括:1)僅具有被目標處理器所支援之類型的指令的形式供執行;或2)具有使用所有類型之指令之不同組合所寫成的另一常式,且具有根據目前執行該碼之處理器所支援之指令來選擇所要執行之常式之控制流程碼的形式。
例示性特定向量友好指令格式
圖15A的方塊圖說明按照本發明之實施例之例示性的特定向量友好指令格式。圖15A顯示特定向量友好指令格式1500就意義上來說其為特定的,其指定位置、大小、解譯、及欄位的次序、以及這些欄位中某些欄位的值。特定向量友好指令格式1500可用來延伸x86指令集,且因此有某些欄位與目前的x86指令集及其延伸(例如AVX)中所使用的那些欄位類似或相同。此格式與現有含延伸之x86指令集的字首編碼欄、實際運算碼位元組欄、MOD R/M欄、SIB欄、位移欄、和立即欄保持一致。說明來自圖14之欄位進入到來自圖15A映圖的欄位。
須瞭解,雖然本發明的實施例基於說明之目的係在通用向量友好指令格式1400的情境下參考特定向量友好指令格式1500來描述,但除非聲明,否則本發明並不限於特定向量友好指令格式1500。例如,通用向量友好指令格式1400預期各不同欄位有各種可能的大小,然而所顯示的特定向量友好指令格式1500之欄位具有特定的大小。藉由特定的例子,雖然圖示說明在特定向量友好指令格式1500中的資料元件寬度欄1464為1個位元的欄位,但本發明並無此限制(亦即,通用向量友好指令格式1400預期有其它大小的資料元件寬度欄1464)。
通用向量友好指令格式1400包括以下的欄位,按圖15A中所說明的次序表列於下。
EVEX字首(位元組0-3)1502-被編碼成4位元組的形式。
格式欄1440(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)係格式欄1440,且其包含0x62(在本發明一實施例中用來辨識向量友好指令格式的獨有值)。
第二-第四位元組(EVEX位元組1-3),包括提供特定能力的數個位元欄。
REX欄1505(EVEX位元組1,位元[7-5])-由EVEX.R位元欄(EVEX位元組1,位元[7]-R)、EVEX.X位元欄(EVEX位元組1,位元[6]-X)、及1457BEX位元組1,位元[5]-B)所組成。EVEX.R,EVEX.X與EVEX.B位元欄提供與對應之VEX位元欄相同的功能性,且使用1之補數的形式來編碼,即,ZMM0編碼成1111B,ZMM15編碼成0000B。指令之其它的欄位編碼暫存器索引之較低的3個位元是習知技術所稱的(rrr、xxx、與bbb),因此,Rrrr、Xxxx、與Bbbb可藉由增加EVEX.R,EVEX.X,與EVEX.B來形成。
REX’欄1410-此為REX’欄1410的第一部分,且是EVEX.R’位元欄(EVEX位元組1,位元[4]-R’),其用來編碼延伸之32暫存器組的高16或低16。在本發明的一實施例中,此位元連同以下所顯示的其它位元係以位元反格式儲存(在習知的x86 32位元模式中)以與BOUND指令區別,它的實際運算碼位元組為62,但MOD R/M欄不接受(描述於下文)MOD欄中之11的值;本發明另些實施例不 儲存此,且以下其它的指示位元為反格式。1的值被用來編碼低16個暫存器。換言之,R’Rrrr是由結合EVEX.R’、EVEX.R、以及來自其它欄位的其它RRR所形式。
運算碼映射欄1515(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含的前導運算碼位元組(0F、0F 38、或0F 3)。
資料元件寬度欄1464(EVEX位元組2,位元[7]-W)-由符號EVEX.W來表示。EVEX.W用來定義資料類型的粒化(大小)(32位元的資料元件或64位元的資料元件)。
EVEX.vvvv1520(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可包括如下:1)EVEX.vvvv編碼第一源暫存器運算元,指定為反(1的補數)形式,且適用於具有2或多個源運算元的指令;2)EVEX.vvvv編碼目的暫存器運算元,為某特定的向量移位指定為1之補數的形式;或3)EVEX.vvvv不編碼任何運算元,該欄位保留且應包含1111b。因此,EVEX.vvvv欄1520編碼第一源暫存器說明符的4個低階位元,以反(1的補數)形式儲存。視指令而定,使用額外不同的EVEX位元欄將說明符的大小擴充至32個暫存器。
EVEX.U1468類屬欄(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具有特殊的行為,暗示特定的指令未使用寫入遮罩(此可用各種方式來實施,包括使用連接到所有1的寫入遮罩硬線或旁通遮罩硬體的硬體)。
實際運算碼欄1530(位元組4)亦稱為運算碼位元組。部分的運算碼指定於此欄位中。
MOD R/M欄1540(位元組5)包括MOD欄1542、Reg欄1544、及R/M欄1546。如前所述,MOD欄1542的內容區別記憶體存取與非記憶體存取操作。Reg欄1544的角色可概述於兩狀況:編碼目的暫存器運算元或源暫存器運算元,或當成運算碼延伸且不用來編碼任何指令運算元。R/M欄1546的角色包括如下:編碼參考記憶體存取的指令運算元,或編碼目的暫存器運算元或源暫存器運算元。
調整、索引、基本(SIB)位元組(位元組6)-如前所述,調整欄1450的內容用於產生記憶體位址。SIB.xxx 1554與SIB.bbb 1556-這些欄位的內容已於先前關於暫存器索引Xxxx與Bbbb提及。
位移欄1462A(位元組7-10)-當MOD欄1542包含10時,位元組7-10係位移欄1462A,且其工作與舊有的32位元位移(disp32)相同,且做位元組粒化之工作。
位移因數欄1462B(位元組7)-當MOD欄1542包含01時,位元組7係位移因數欄1462B。此欄位的位置與舊的x86指令集8位元位移(disp8)相同,其做位元組粒化之工作。由於disp8係正負號延伸,其僅能在-128與127之間定址位元組偏移;就64位元組快取線來說,disp8使用8位元僅可設定4個實際有用的值-128,-64,0,及64;由於通常需要較大的範圍,因此使用disp32,不過,disp32需要4個位元組。disp8與disp32對比,位移因數欄1462B係disp8的再解譯;當使用位移因數欄1462B時,實際的位移係由位移因數欄的內容乘以記憶體運算元存取之大小(N)來決定。此類型的位移稱為disp8N。此縮短了平均指令長度(位移使用單個位元組,但範圍更大)。此壓縮的位移係基於假設有效位移係記憶體存取之粒化的倍數,且因此,位址偏移之多餘的低序位位元不需被編碼。換言之,位移因數欄1462B取代舊有x86指令集8位元位移。因此,位移因數欄1462B編碼的方式與x86指令集8位元位移相同(因此ModRM/SIB的編碼規則未改變),僅除了disp8被超載(overload)成為disp8N。換言之,編碼規則與編碼長度都沒改變,唯僅藉由硬體來解譯位移值(其需要藉由記憶體運算元的大小來調整位移以得到位元組方式的位址偏移)。
立即欄1472之操作如前所述。
全運算碼欄
圖15B係說明按照本發明一實施例,組成全運算碼欄1474之特定向量友好指令格式1500之欄位的方塊圖。明確地說,全運算碼欄1474包括格式欄1440、基本操作欄1442、及資料元件寬度(W)欄1464。基本操作欄1442包括字首編碼欄1525、運算碼映圖欄1515、及實際運算碼欄1530。
暫存器索引欄
圖15C係說明按照本發明一實施例,組成暫存器索引欄1444之特定向量友好指令格式1500之欄位的方塊圖。明確地說,暫存器索引欄1444包括REX欄1505、REX’欄1510、MODR/M.reg欄1544、MODR/M.r/m欄1546、VVVV欄1520、xxx欄1554、及bbb欄1556。
增強操作欄
圖15D係說明按照本發明一實施例,組成增強操作欄1450之特定向量友好指令格式1500之欄位的方塊圖。當類屬(U)欄1468包含0時,其意指EVEX.U0(A類1468A);當其包含1時,其意指EVEX.U1(B類1468B)。當U=0且MOD欄1542包含11時(意指無記憶體存取操作),字母欄1452(EVEX位元組3,位元[7]-EH)當成rs欄1452A被解譯。當rs欄1452A包含1時(捨入1452A.1),貝塔欄1454(EVEX位元組3,位元[6:4]-SSS)當成捨入控制欄1454A被解譯。捨入控制欄1454A包括1位元的SAE 欄1456及2位元的捨入操作欄1458。當rs欄1452A包含0時(資料轉換1452A.2)時,貝塔欄1454(EVEX位元組3,位元[6:4]-SSS)當成3位元資料轉換欄1454B被解譯。當U=0且MOD欄1542包含00、01、或10時(意指記憶體存取操作),字母欄1452(EVEX位元組3,位元[7]-EH)當成逐出提示(EH)欄1452B解譯,及貝塔欄1454(EVEX位元組3,位元[6:4]-SSS)當成3位元資料調處欄1454C被解譯。
當U=1時,字母欄1452(EVEX位元組3,位元[7]-EH)當成寫入遮罩控制(Z)欄1452C來解譯。當U=1且MOD欄1542包含11時(意指無記憶體存取操作),部分的貝塔欄1454(EVEX位元組3,位元[4]-S0)當成RL欄1457A來解譯;當其包含1時(捨入1457A.1)時,其餘的貝塔欄1454(EVEX位元組3,位元[6-5]-S2-1)當成捨入操作欄1459A來解譯,然而當RL欄1457A包含0時(VSIZE 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的方塊圖。在說明的實施例中,有32個512位元寬的向量暫存器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-在說明的實施例中,有16個64位元的通用暫存器,其連同現有的x86定址模式一起用來定址記憶體運算元。這些暫存器的名稱為RAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP,及R8到R15。
純量浮點堆疊暫存器檔案(x87堆疊)1645,在其上疊合了MMX緊縮整數平暫存器檔案1650-在說明的的實施例中,x87堆疊係8元件堆疊,使用x87指令集延伸用來對32/64/80位元浮點資料實施純量浮點運算;在MMX暫存器被用來對64位元緊縮整數資料實施操作的同時,並為在MMX與XMM暫存器之間實施的某些操作保持運算元。
本發明的另些實施例可使用較寬或較窄的暫存器。另者,在本發明的另些實施例中可使用更多、更少、或不同的暫存器檔案及暫存器。
例示性核心架構、處理器、及電腦架構
對於不同之目的,處理器核心可用不同的方式在不同的處理器中實施。例如,這類核心的實施可包括:1)意欲用於通用計算的通用順序核心;2)意欲用於通用計算的高性能通用亂序核心;3)意欲主要用於繪圖及/或科學(產出)計算的特殊用途核心。不同處理器的實施可包括:1)包括意欲用於通用計算之一或多個通用順序核心及/或意欲用於通用計算之一或多個亂序核心的CPU;及2)包括意欲主要用於繪圖及/或科學(產出)計算之一或多個特殊用途核心的共處理器。這些不同的處理器導致不同的電腦系統架構,其可包括:1)與CPU不在同一晶片上的共處理器;2)在與CPU同一封裝中之不同晶粒上的共處理器;3)在與CPU同一晶粒上的共處理器(在此情況,此等共處理器有時稱為特殊用途邏輯,諸如整合式繪圖及/或科學(產出)邏輯,或如特殊用途核心);及4)晶片上系統,其可包括位在與所描述之CPU(有時稱為應用核心或應用處理器)、前所描述之共處理器、及附加功能性之同一晶粒上。以下描述例示性的核心架構,接著描述例示性處理器及電腦架構。
例示性核心架構 順序與亂序核心方塊圖
圖17A的方塊圖說明按照本發明實施例之例示性順序管線與例示性暫存器更名、亂序發出/執行管線。圖17B的方塊圖說明按照本發明實施例之順序架構核心的例 示性實施例,與要被包括在處理器中的例示性暫存器更名、亂序發出/執行架構核心。圖17A-17B中的實線框說明順序管線與順序核心,而選用附加的虛線框說明暫存器更名、亂序發出/執行管線與核心。鑒於順序態樣是亂序態樣的子集,現將描述亂序態樣。
在圖17A中,處理器管線1700包括提取階段1702、長度解碼階段1704、解碼階段1706、配置階段1708、更名階段1710、排程(也稱為配送或發出)階段1712、暫存器讀取/記憶體讀取階段1714、執行階段1716、寫回/記憶體寫入階段1718、異常處置階段1722、及確認階段1724。
圖17B顯示包括有耦接至執行引擎單元1750之前端單元1730,且兩者皆耦接至記憶體單元1770的處理器核心1790。核心1790可包括精減指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令(VLIW)核心、或混合或替代核心類型。如另一選擇,核心1790可以是特殊用途核心,諸如,例如網路或通信核心、壓縮引擎、共處理器核心、通用計算繪圖處理單元(GPGPU)核心、繪圖核心、諸如此類。
前端單元1730包括分支預測單元1732耦接至指令快取單元1734,其耦接至指令轉譯後備緩衝區(TLB)1736,其耦接至指令提取單元1738,其耦接至解碼單元1740。解碼單元1740(或解碼器)可解碼指令,並產生諸如解碼自或用其它方式反映自或導源自原始指令之一或多個微操 作、微碼進入點、微指令、其它指令、或其它控制信號的輸出。解碼單元1740可使用各種不同的機制來實施。適合的機制例子包括但不限於查詢表、硬體實施、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1790包括微碼ROM或其它儲存用於某些巨指令(例如在解碼單元1740中或不然在前端單元1730中)之微碼的媒體。解碼單元1740耦接至執行引擎單元1750中的更名/分配器單元1752。
執行引擎單元1750包括耦接至止用單元1754與一組一或多個排程器單元1756的更名/分配器單元1752。排程器單元1756代表任何數量的不同排程器,包括保留站、中央指令窗口等。排程器單元1756耦接至實體暫存器檔案單元1758。每一個實體暫存器檔案單元1758代表一或多個實體暫存器檔案,這些不同的暫存器檔案儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標,其為下一個要被執行的位址)等。在一實施例中,實體暫存器檔案單元1758包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1758被止用單元1754重疊,以說明可實施暫存器更名及亂序執行的各種不同方式(例如,使用重排序緩衝區及止用暫存器檔案;使用未來檔案、歷史緩衝區、及止用暫存器檔案;使用暫存器映圖及暫存器池 等)。止用單元1754與實體暫存器檔案單元1758耦接至執行叢集1760。執行叢集1760包括一組一或多個執行單元1762及一組或多個記憶體存取單元1764。該執行單元1762可執行各種運算(例如移位、加、減、乘)及各種類型的資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括一些專用於特殊功能或功能組的執行單元,但其它實施例可包括僅一個執行單元,或所有都用來執行所有功能的多個執行單元。圖中所顯示的排程器單元1756、實體暫存器檔案單元1758、及執行叢集1760儘可能是複數個,因為某些實施例會為某些類型的資料/操作產生獨立的管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其每一個都具有它們自已的排程器單元、實體暫存器檔案單元、及/或執行叢集-且在獨立之記憶體存取管線的情況中,在某些實施例的實施中,僅此管線的執行叢集具有記憶體存取單元1764)。亦須瞭解,在使用獨立的管線之處,一或多個這些管線可以是亂序發出/執行且其餘的則按順序。
記憶體存取單元1764組耦接至記憶體單元1770,其包括資料TLB單元1772耦接至資料快取單元1774耦接至第二階(L2)快取單元1776。在一例示性的實施例中,記憶體存取單元1764可包括載入單元、儲存位址單元、儲存資料單元,其每一個皆耦接至記憶體單元1770中的資料TLB單元1772。指令快取單元1734進一步耦接至記憶 體單元1770中的第二階(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 Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings of Sunnyvale,CA的ARM指令集(具有選用的附加延伸,諸如NEON)),包括本文所描述的指令。在一實施例中,核心1790包括支援緊縮資料指令集延伸(例如AVX1,AVX2)的邏輯,藉以允許很多使用緊縮資料來實施的多媒體應用程式用來操作。
須瞭解,該核心可支援多線程(執行兩或多組平行的操作或線程),並以多種不同的方式來進行,包括時間切 片多線程、併行多線程(在此方面,單個實體核心為每一線程提供邏輯核心,實體核心併行多線程),或以上的組合(例如,時間切片提取與解碼並之後併行多線程,諸如Intel®的超線程技術)。
雖然暫存器更名是以亂序執行的情境描述,但須瞭解,暫存器更名可用於順序架構。雖然所說明的處理器實施例也包括獨立的指令與資料快取單元1734/1774和共用的L2快取單元1776,但另些實施例可具有用於指令與資料的單一內部快取記憶體,諸如,例如第一階(L1)內部快取記憶體,或多階的內部快取記憶體。在某些實施例中,系統可包括內部快取記憶體與外部快取記憶體的組合,外部快取記憶體係在核心及/或處理器的外部。另者,所有的快取記憶體都可以在核心及/或處理器的外部。
特定例示性順序核心架構
圖18A-B說明更特定之例示性順序核心架構的方塊圖,該核心可以是晶片中數個邏輯方塊其中之一(包括某些類型及/或不同類型的其它核心)。視應用程式而定,邏輯方塊經由高帶寬的互連網路(例如環狀網路)與具有某些固定功能之邏輯、記憶體I/O介面、及其它必要的I/O邏輯的通信。
圖18A的方塊圖係按照本發明實施例之單處理器核心,連同其連接到晶粒上的互連網路1802及其第二階(L2)快取的局部子集1804。在一實施例中,指令解碼器 1800支援具有緊縮資料指令集延伸的x86指令集。L1快取1806允許低延遲存取快取記憶體到純量與向量單元。雖然在一實施例中(為簡化設計)純量單元1808與向量單元1810使用各自的暫存器組(分別是純量暫存器1812與向量暫存器1814),且在它們之間傳輸的資料被寫入到記憶體,並接著從第一階(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,而選用附加的虛線框說明具有多核心1902A-N的另一處理器1900、系統代理單元1910中的一組一或多個整合式記憶體控制器單元1914,以及特殊用途邏輯1908。
因此,處理器1900之不同的實施可包括:1)具有做為整合式繪圖及/或科學(產出)邏輯(其可包括一或多個核心)之特殊用途邏輯1908與做為一或多個通用核心(例如通用順序核心、通用亂序核心、該兩種核心的組合)之核心1902A-N的CPU;2)具有做為意欲主要用於繪圖及/或科學(產出)之大量特殊用途核心之核心1902A-N的共處理器;以及3)具有做為大量通用順序核心之核心1902A-N的共處理器。因此,處理器1900可以是通用處理器、共 處理器或特殊用途處理器,諸如,例如網路或通信處理器、壓縮引擎、繪圖處理器、通用繪圖處理單元(GPGPU)、高產出多個整合式核心(many integrated core;MIC)共處理器(包括30或更多個核心)、內嵌式處理器、諸如此類。處理器可在一或多個晶片上實施。處理器1900可以是部分及/或使用任何數目之處理技術(諸如,例如BiCMOS,CMOS,或NMOS)在一或多個基板上實施。
記憶體階層包括核心內的一或多個快取級、一組或一或多個共用快取單元1906、及外部記憶體(未顯示)耦接至該組整合式記憶體控制器單元1914。該組共用快取單元1906可包括一或多個中階快取記憶體,諸如第二階(L2)、第三階(L3)、第四階(L4)或其它階快取記憶體、最後階快取記憶體(LLC)、及/或它們的組合。雖然在一實施例中,整合式繪圖邏輯1908、共用快取單元1906組、及系統代理單元1910/整合式記憶體控制器單元1914是以環形基互連單元1912來互連起,但另些實施例可使用任何數目之習知技術來互連這些單元。在一實施例中,一或多個快取單元1906與核心1902A-N之間保持一致性。
在某些實施例中,一或多個核心1902A-N具有多線程的能力。系統代理1910包括那些協調與操作核心1902A-N的組件。系統代理單元1910可包括例如電力控制單元(PCU)與顯示單元。PCU可以是或包括用來調整核心1902A-N與整合式繪圖邏輯1908之電力狀態所需的邏 輯與組件。顯示單元用來驅動一或多個外接的顯示器。
就架構指令集而論,核心1902A-N可以是同質的或異質的;亦即,2或多個核心1902A-N有執行相同指令集的能力,而其它核心僅有執行該指令集之子集或不同指令集的能力。
例示性電腦架構
圖20-23係例示性電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、內嵌式處理器、數位信號處理器(DSP)、繪圖裝置、視訊遊戯裝置、機上盒、微控制器、行動電話、可攜式媒體播放機、手持式裝置、及各種其它電子裝置之其它習知技藝的系統設計與組構也都適用。通言之,有能力結合如本文所揭示之處理器及/或其它執行邏輯之各式各樣的系統或電子裝置一般都適用。
現請參閱圖20,圖中顯示按照本發明一實施例之系統2000的方塊圖。系統2000可包括一或多個處理器2010、2015耦接至控制器集線器2020。在一實施例中,控制器集線器2020包括繪圖記憶體控制器集線器(GMCH)2090與輸入/輸出集線器(IOH)2050(其可能是在各自的晶片上);GMCH 2090包括記憶體與繪圖控制器,記憶體2040與共處理器2045耦接於GMCH 2090;IOH 2050將輸入/輸出(I/O)裝置2060耦接至GMCH 2090。另 者,記憶體與繪圖控制器其中之一或兩者皆整合在處理器之內(如本文所描述),記憶體2040與共處理器2045直接耦接至處理器2010,且控制器集線器2020與IOH 2050在一單晶片中。
附加處理器2015之選用的本質在圖20中以虛線來表示。每一個處理器2010、2015包括本文所描述的一或多個處理核心,且可以是某型式的處理器1900。
例如,記憶體2040可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者的組合。關於至少一實施例,控制器集線器2020與處理器2010、2015經由多點分岐匯流排通信,諸如前側匯流排(FSB)、點對點介面,諸如QuickPath互連(QPI)、或類似的連接2095。
在一實施例中,共處理器2045係特殊用途處理器,諸如,例如高產輸出MIC處理器、網路或通信處理器、壓縮引擎、繪圖處理器、GPGPU、內嵌式處理器、或諸如此類。在一實施例中,控制器集線器2020可包括整合式繪圖加速器。
就優點之標準的範圍而論,實體資源2010、2015之間可有各種差異,包括架構、微架構、熱、電力消耗特徵、諸如此類。
在一實施例中,處理器2010執行用來控制一般類型之資料處理操作的指令。嵌入在該等指令內的可以是共處理器指令。處理器2010辨識這些共處理器指令係須由附加之共處理器2045來執行的類型。因此,處理器2010在 共處理器匯流排或其它互連上發出這些共處理器指令(或代表共處理器指令的控制信號)給共處理器2045。共處理器2045接受並執行所接收的共處理器指令。
現請參閱圖21,方塊圖中顯示按照本發明實施例之第一更特定的例示性系統2100。如圖21所示,多處理器系統2100係點對點互連系統,且包括經由點對點互連2150而耦接的第一處理器2170與第二處理器2180。每一個處理器2170與2180可以是某種型式的處理器1900。在本發明的一實施例中,處理器2170與2180分別是處理器2010與2015,而共處理器2138係共處理器2045。在另一實施例中,處理器2170與2180係分別是處理器2010與共處理器2045。
所顯示的處理器2170與2180分別包括整合式記憶體控制器(IMC)單元2172與2182。處理器2170也包括成為其一部分的匯流排控制器單元點對點(P-P)介面2176與2178;同樣地,第二處理器2180包括P-P介面2186與2188。處理器2170、2180可使用P-P介面電路2178與2188經由點對點(P-P)介面2150交換資料。如圖21所示,IMC 2172與2182將處理器耦接至各自的記憶體,即記憶體2132與記憶體2134,其為主記憶體的一部分,局部附接於各自的處理器。
每一個處理器2170與2180使用點對點介面電路2176,2194,2186,2198經由個別的點對點(P-P)介面2152,2154與晶片組2190交換資訊。晶片組2190可經由高性 能介面2139與共處理器2138選擇性地交換資訊。在一實施例中,共處理器2138係特殊用途處理器,諸如,例如高產出MIC處理器、網路或通信處理器、壓縮引擎、繪圖處理器、GPGPU、內嵌式處理器、諸如此類。
共有快取(未顯示)可包括在處理器內或兩處理器的外部,但經由P-P互連與處理器連接,以致於如果處理器被置入低電力模式,任一或兩處理器的本地快取資訊可儲存在共有快取中。
晶片組2190可經由介面2196耦接至第一匯流排2116。在一實施例中,第一匯流排2116可以是周邊組件互連(PCI)匯流排,或諸如PCI快捷匯流排或其它第三代I/O互連匯流排等的匯流排,雖然本發明的範圍不限於此。
如圖21所示,各種的I/O裝置2114可耦接至第一匯流排2116,加之匯流排電橋2118將第一匯流排2116耦接至第二匯流排2120。在一實施例中,一或多個附加的處理器2115,諸如共處理器、高產出MIC處理器、GPGPU、加速器(諸如,例如繪圖加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其它的處理器被耦接至第一匯流排2116。在一實施例中,第二匯流排2120可以是低接腳數(LPC)匯流排。在一實施例中,各種的裝置可耦接至第二匯流排2120,包括例如鍵盤及/或滑鼠2122、通信裝置2127、及儲存單元2128,諸如磁碟機或包括有指令/碼及資料2130的其它大量儲存裝置。此 外,音頻I/O 2124可耦接至第二匯流排2120。須注意,其它的架構也都可行。例如,系統可實施多點分岐匯流排或其它架構來取代圖21的點對點架構。
現請參閱圖22,顯示按照本發明之實施例之第二更特定例示性系統2200的方塊圖。與圖21與22中類似的元件具有相同的參考數字,且為了避免模糊了圖22的其它態樣,圖22省略了圖21中的某些態樣。
圖22說明處理器2170、2180可分別包括整合式記憶體與I/O控制邏輯(“CL”)2172與2182。因此,CL 2172、2182包括整合式記憶體控制器單元且包括I/O控制邏輯。圖22說明不僅記憶體2132、2134耦接至CL 1272、1282,且I/O裝置2214也耦接至控制邏輯2172、2182。舊的I/O裝置2215耦接至晶片組2190。
現請參閱圖23,圖中顯示按照本發明實施例之晶片上系統(SoC)2300的方塊圖。與圖19中類似的元件具有相同的參考數字。此外,虛線框係更先進之SoC上選用的特徵。在圖23中,互連單元2302耦接至:應用程式處理器2310,其包括一組一或多個核心202A-N及共用的快取單元1906;系統代理單元1910;匯流排控制器單元1916;整合式記憶體控制器單元1914;一組一或多個共處理器2320,其可包括整合式繪圖邏輯、影像處理器、聲音處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元2330;直接記憶體存取(DMA)單元2332;及用於耦接至一或多個外接顯示器的顯示單元2340。在一 實施例中,共處理器2320包括特殊用途處理器,諸如,例如網路或通信處理器、壓縮引擎、GPGPU、高產出MIC處理器、內嵌式處理器、諸如此類。
本文所揭示之機制的實施例可在硬體、軟體、韌體、或這些實施方法的組合中實施。本發明的實施例可實施為可在可程式系統上執行的電腦程式或程式碼,該可程式系統包含至少一個處理器、儲存系統(包括揮發與非揮發記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置。
程式碼,諸如圖21中說明的碼2130,可應用於用以實施本文所描述之功能並產生輸出資訊的輸入指令。輸出資訊可按習知的方式應用於一或多個輸出裝置。基於此應用之目的,處理系統包括具有處理器的任何系統,諸如,例如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可在高階程序或物件導向程式語言中實施,用以與處理系統通信。如有需要,程式碼也可在組合或機器語言中實施。事實上,本文所描述的機制並非受限於任何特定的程式語言範圍。無論如何,該語言可以是編譯或解譯的語言。
至少一實施例的一或多個態樣可藉由儲存在機器可讀取媒體上的代表性指令來實施,這些指令代表處理器內的各種邏輯,當被機器讀取時,致使機器製造邏輯以實施本文所描述的技術。這些代表是所謂的“IP碼”,可儲存在實 體的機器可讀取媒體上,並供應給各不同的客戶或製造設備以載入到實際製造邏輯或處理器的製造機具。
此機器可讀取媒體包括但不限於藉由機器或裝置所製造或形成之物件的非暫時性實體配置,包括諸如硬碟的儲存媒體,任何其它類型的碟片,包括軟碟、光碟、唯讀光碟(CD-ROM)、可複寫光碟(CD-RW)、及磁光碟;半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光卡、或任何其它類型適合儲存電子指令的媒體。
因此,本發明之實施例也包括包含有指令或包含有設計資料之非暫時性實體的機器可讀取媒體,諸如硬體描述語言(Hardware Description Language;HDL),其定義結構、電路、設備、處理器及/或本文所描述的系統特徵。這些實施例也可稱為程式產品。
仿真(包括二進制譯碼,碼漸變等)
在某些情況中,指令轉換器用來將指令從源指令集轉換成目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、漸變、仿真、或者是將指令轉換成可被核心處理之一或多種其它指令的其它方法。指令轉換器可在軟體、硬體、韌 體、或以上這些的組合中實施。指令轉換器可在處理器上、處理器外、或部分在處理器上而部分在處理器外。
圖24的方塊圖係按照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換成目標指令集的二進制指令之對照。雖然指令轉換器也可以替代地在軟體、韌體、硬體、或以上這些的各種組合中實施,但在說明的實施例中,指令轉換器係軟體指令轉換器。圖24顯示高階語言2402的程式可使用x86編譯器2404編譯,以產生可被具有至少一個x86指令集核心2416之處理器原生地執行的x86二進制碼2406。具有至少一個x86指令集核心2416的處理器代表可實質地實施與具有至少一個x86指令集核心之Intel處理器相同功能的任何處理器,其可藉由相容地執行或以其它方式處理(1)Intel x86指令集核心之實質部分的指令集,或(2)為了獲致與如同具有至少一個x86指令集核心之Intel處理器實質相同之結果,而以在具有至少一個x86指令集核心之Intel處理器上執行為目標之應用程式的目的碼版本或其它軟體。x86編譯器2404代表一編譯器,無論有或無額外的鏈結處理,其可操作以產生可在具有至少一個x86指令集核心之Intel處理器上執行的x86二進制碼2406(例如目標碼)。同樣地,圖24顯示高階語言2402的程式可使用替代的指令集編譯器2408編譯,以產生可被不具有至少一個x86指令集核心之處理器2414(例如,具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或ARM Holdings of Sunnyvale,CA之ARM指令集)原生地執行的替代指令集二進制碼2410。指令轉換器2412被用來將x86二進制碼2406轉換成可被無x86指令集核心之處理器2414原生地執行的碼。此經轉換的碼不太可能與替代指令集二進制碼2410相同,原因是此指令轉換器的能力很難做到;不過,經轉換的碼將可完成一般的操作,及從替代指令集整理指令。因此,指令轉換器2412代表軟體、硬體、韌體、或它們的組合,經由仿真、模擬、或任何其它處理,允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進制碼2406。
在描述與申請專利範圍中使用了名詞“耦接”及/或“連接”連同它們的衍生字。須瞭解,這些名詞並無意彼此為同意字。反之,在特定的實施例中,“連接”可用來指示兩或多個元件彼此直接實體或電性接觸。“耦接”可意指兩或多個元件彼此直接實體或電性接觸。不過,“耦接”也表示兩或多個元件不直接彼此接觸,但彼此仍共同操作或互動。例如執行單元可與暫存器或解碼器經由一或多個介於中間的組件耦接。在各圖中,使用箭頭來顯示耦接及/或連接。
在描述與申請專利範圍中使用到名詞“邏輯”。如本文中所使用,名詞邏輯包括硬體、韌體、軟體或各種共組合。邏輯例包括積體電路、特殊用途積體電路、類比電路、數位電路、可程式邏輯裝置、包括指令的記憶體裝置等。在某些實施例中,邏輯可包括電晶體及/或閘連同其 它可能的電路組件。
為提供對實施例的徹底瞭解,在以上的描述中已陳述了特定的細節。不過,其它的實施例沒有一些這些特定細節也可實行。本發明之範圍僅由以下的申請專利範圍決定而非以上所提供的特定例子。對於說明書中圖式與描述中所說明之那些所有相等的關係皆包含在實施例內。在其它例中,為了避免糢糊了對於描述的瞭解,習知的電路、結構、裝置、及操作由方塊圖之形式來顯示或無細節。其中已顯示與描述的單個組件,在某些情況中,此單個組件可分開成兩或多個組件。
本文所揭示的某些方法已用基本形式顯示與描述,然而操作可選擇性地加入該等方法及/或從其移除。此外,已顯示及/或描述了該等操作之特定的順序,然而另些實施例可用不同的順序來實施某些操作、結合某些操作、覆蓋某些操作等。
某些操作可藉由硬體組件來實施,及/或具體化於用來致使及/或導致硬體組件(例如處理器、部分的處理器、電路等)以實施該等操作之指令程式化的機器可執行或電路可執行的指令中。硬體組件可包括通用或特殊用途硬體組件。該等操作可藉由硬體、軟體、及/或韌體的組合來實施。硬體組件可包括可操作以執行及/或處理指令並回應指令而儲存結果(例如回應一或多個微指令或源自於該指令的其它控制信號)之特定或特有的邏輯(例如有可能與軟體及/或韌體結合的電路)。
本說明書從頭到尾例如參考“一實施例”、“實施例”、“一或多個實施例”、“某些實施例”意指可能包括在本發明之實作中的特定特徵並不必然需要如此。同樣地,基於使本揭示順暢及有助於瞭解各不同發明態樣之目的,所描述的各種不同特徵有時可群組在單個實施例、圖、或關於它的描述中。不過,不能將所揭示的此方法解釋成反映本發明需要比每一申請專利範圍所明確敍述之更多特徵的意圖。反之,如以下申請專利範圍所反映,本發明之態樣在於比單一揭示之實施例的所有特徵少。因此,接在實施方式之後的申請專利範圍特此明確地併入此實施方式,且每一申請項就其本身來說都是本發明的獨立實施例。
100‧‧‧處理器
101‧‧‧指令集架構
102‧‧‧指令集
103‧‧‧緊縮旋轉指令
104‧‧‧遮罩緊縮旋轉指令
105‧‧‧具有資料元件廣播的緊縮旋轉指令
106‧‧‧具有資料元件廣播的遮罩緊縮旋轉指令
107‧‧‧架構暫存器
108‧‧‧緊縮資料暫存器
109‧‧‧遮罩暫存器
110‧‧‧執行邏輯
200‧‧‧指令處理裝置
203‧‧‧緊縮旋轉指令
208‧‧‧緊縮資料暫存器
210‧‧‧執行單元
211‧‧‧解碼器
212‧‧‧第一源緊縮資料暫存器
213‧‧‧第一源緊縮資料
214‧‧‧第二源緊縮資料暫存器
215‧‧‧第二源緊縮資料
216‧‧‧目的或第三緊縮資料暫存器
217‧‧‧結果緊縮資料
313‧‧‧第一源緊縮資料
315‧‧‧第二源緊縮資料
317‧‧‧結果緊縮資料
318‧‧‧緊縮旋轉操作
413‧‧‧第一源緊縮資料
415‧‧‧第二源緊縮資料
417‧‧‧結果緊縮資料
420‧‧‧遮罩緊縮旋轉操作
421‧‧‧緊縮資料操作遮罩
613‧‧‧第一源緊縮資料
615‧‧‧第二源單個資料元件
617‧‧‧結果緊縮資料
631‧‧‧記憶體
632‧‧‧多重廣播資料元件
813‧‧‧第一源緊縮資料
815‧‧‧第二源單個資料元件
831‧‧‧記憶體
832‧‧‧多重廣播資料元件
821‧‧‧緊縮資料操作遮罩
817‧‧‧結果緊縮資料
913‧‧‧第一源單個資料元件
931‧‧‧記憶體
932‧‧‧多重廣播資料元件
921‧‧‧緊縮資料操作遮罩
917‧‧‧結果緊縮資料
942‧‧‧遮罩緊縮旋轉操作
943‧‧‧立即
944‧‧‧旋轉量
1006‧‧‧資料元件廣播指令
1045‧‧‧運算碼
1046‧‧‧第一源說明符
1047‧‧‧第二源說明符
1048‧‧‧目的說明符
1049‧‧‧資料元件廣播控制
1050‧‧‧緊縮資料操作遮罩說明符
1051‧‧‧遮罩操作類型說明符
1109‧‧‧緊縮資料操作遮罩暫存器
1208‧‧‧緊縮資料暫存器
1352‧‧‧製造之物件
1353‧‧‧機器可讀取儲存媒體
1303‧‧‧緊縮旋轉指令
1600‧‧‧暫存器架構
1610‧‧‧向量暫存器
1615‧‧‧寫入遮罩暫存器
1625‧‧‧通用暫存器
1645‧‧‧純量浮點堆疊暫存器檔案
1650‧‧‧MMX緊縮整數平暫存器檔案
1700‧‧‧處理器管線
1702‧‧‧提取階段
1704‧‧‧長度解碼階段
1706‧‧‧解碼階段
1708‧‧‧配置階段
1710‧‧‧更名階段
1712‧‧‧排程階段
1714‧‧‧暫存器讀取/記憶體讀取階段
1716‧‧‧執行階段
1718‧‧‧寫回/記憶體寫入階段
1720‧‧‧異常處置階段
1724‧‧‧確認階段
1790‧‧‧處理器核心
1730‧‧‧前端單元
1750‧‧‧執行引擎單元
1770‧‧‧記憶體單元
1732‧‧‧分支預測單元
1734‧‧‧指令快取單元
1736‧‧‧指令轉譯後備緩衝區(TLB)
1738‧‧‧指令提取單元
1740‧‧‧解碼單元
1752‧‧‧更名/分配器單元
1754‧‧‧止用單元
1756‧‧‧排程器單元
1758‧‧‧實體暫存器檔案單元
1760‧‧‧執行叢集
1762‧‧‧執行單元
1764‧‧‧記憶體存取單元
1770‧‧‧記憶體單元
1772‧‧‧資料TLB單元
1774‧‧‧資料快取單元
1776‧‧‧第二階(L2)快取單元
1800‧‧‧指令解碼器
1802‧‧‧環狀網路
1804‧‧‧第二階(L2)快取記憶體的局部子集
1806‧‧‧L1快取記憶體
1808‧‧‧純量單元
1810‧‧‧向量單元
1812‧‧‧純量暫存器
1814‧‧‧向量暫存器
1806A‧‧‧L1資料快取記憶體
1828‧‧‧向量處理單元
1820‧‧‧拌和單元
1822‧‧‧數值轉換單元
1824‧‧‧複製單元
1826‧‧‧寫入遮罩暫存器
1900‧‧‧處理器
1908‧‧‧特殊用途邏輯
1902‧‧‧核心
1904‧‧‧整合式記憶體控制器單元
1906‧‧‧共用快取單元
1910‧‧‧系統代理單元
1914‧‧‧整合式記憶體控制器單元
1908‧‧‧整合式繪圖邏輯
1912‧‧‧環形基互連單元
2090‧‧‧系統
2019‧‧‧處理器
2015‧‧‧處理器
2020‧‧‧控制器集線器
2090‧‧‧繪圖記憶體控制器集線器
2050‧‧‧輸入/輸出集線器
2040‧‧‧記憶體
2045‧‧‧共處理器
2060‧‧‧輸入/輸出裝置
2100‧‧‧多處理器系統
2150‧‧‧點對點互連
2170‧‧‧第一處理器
2180‧‧‧第二處理器
2138‧‧‧共處理器
2172‧‧‧整合式記憶體控制器
2182‧‧‧整合式記憶體控制器
2132‧‧‧記憶體
2134‧‧‧記憶體
2176‧‧‧點對點介面電路
2194‧‧‧點對點介面電路
2186‧‧‧點對點介面電路
2198‧‧‧點對點介面電路
2190‧‧‧晶片組
2152‧‧‧點對點介面
2154‧‧‧點對點介面
2139‧‧‧高性能介面
2196‧‧‧介面
2116‧‧‧第一匯流排
2114‧‧‧I/O裝置
2118‧‧‧匯流排電橋
2120‧‧‧第二匯流排
2115‧‧‧附加的處理器
2122‧‧‧鍵盤/滑鼠
2127‧‧‧通信裝置
2128‧‧‧儲存單元
2130‧‧‧指令/碼及資料
2124‧‧‧音頻I/O
2214‧‧‧輸入/輸出裝置
2215‧‧‧舊有I/O
2300‧‧‧晶片上系統
2302‧‧‧互連單元
2319‧‧‧應用程式處理器
202‧‧‧核心
2320‧‧‧共處理器
2330‧‧‧靜態隨機存取記憶體單元
2332‧‧‧直接記憶體存取單元
2340‧‧‧顯示單元
2402‧‧‧高階語言
2404‧‧‧x86編譯器
2416‧‧‧x86指令集核心
2406‧‧‧x86二進制碼
2414‧‧‧無x86指令集核心之處理器
2408‧‧‧替代的指令集編譯器
2410‧‧‧替代指令集二進制碼
2412‧‧‧指令轉換器
藉由參考以上的描述及以下用來說明實施例的附圖可對本發明有最佳的瞭解。在各圖中:圖1係具有包括一或多個緊縮旋轉指令之指令集之處理器的例示實施例之方塊圖。
圖2係具有執行單元之指令處理裝置的例示實施例方塊圖,其可操作以執行包括有緊縮旋轉指令之例示實施例的指令。
圖3的方塊圖說明回應緊縮旋轉指令之實施例而實施的緊縮旋轉操作的實施例。
圖4的方塊圖說明回應遮罩緊縮旋轉指令所實施之遮罩緊縮旋轉操作的實施例。
圖5係處理遮罩緊縮旋轉指令之實施例之方法實施例的方塊流程圖。
圖6的方塊圖說明具有旋轉量之資料元件廣播之緊縮旋轉操作的實施例。
圖7係處理以旋轉量指令之資料元件廣播來緊縮旋轉之實施例的方法實施例的方塊流程圖。
圖8的方塊圖說明包括有旋轉量之資料元件廣播的遮罩緊縮旋轉操作實施例。
圖9的方塊圖說明具有要被旋轉之資料元件之資料元件廣播與由立即所指定之旋轉量之選擇性遮罩緊縮旋轉操作的實施例。
圖10係用於具有資料元件廣播指令之遮罩緊縮旋轉的指令格式實施例的方塊圖。
圖11係一組適合之緊縮資料操作遮罩暫存器之例示實施例的方塊圖。
圖12係一組適合之緊縮資料暫存器之例示實施例的方塊圖。
圖13係製造之物件的方塊圖,包括機器可讀取儲存媒體,儲存一或多個緊縮旋轉指令。
圖14A係說明按照本發明實施例之通用向量友好指令格式及其A類指令樣板的方塊圖。
圖14B係說明按照本發明實施例之通用向量友好指令格式及其B類指令樣板的方塊圖。
圖15A的方塊圖說明按照本發明之實施例之例示性 的特定向量友好指令格式。
圖15B係說明按照本發明一實施例,組成全運算碼欄之特定向量友好指令格式之欄位的方塊圖。
圖15C係說明按照本發明一實施例,組成暫存器索引欄之特定向量友好指令格式之欄位的方塊圖。
圖15D係說明按照本發明一實施例,組成增強操作欄之特定向量友好指令格式之欄位的方塊圖。
圖16係按照本發明一實施例,暫存器架構的方塊圖。
圖17A的方塊圖說明按照本發明實施例之例示性順序管線與例示性暫存器更名、亂序發出/執行管線。
圖17B顯示的處理器核心包括有耦接至執行引擎單元的前端單元,且兩者皆耦接至記憶體單元。
圖18A的方塊圖係按照本發明實施例之單處理器核心,連同其連接到晶粒上的互連網路及其第二階(L2)快取的局部子集。
圖18B係按照本發明實施例之圖18A中處理器核心的部分展開圖。
圖19係按照本發明實施例之處理器的方塊圖,其可多於一個核心,具有整合式記憶體控制器,以及具有整合式繪圖。
圖20顯示按照本發明一實施例之系統的方塊圖。
圖21顯示按照本發明實施例之第一更特定例示性系統的方塊圖。
圖22顯示按照本發明實施例之第二更特定例示性系統的方塊圖。
圖23顯示按照本發明實施例之晶片上系統(SoC)的方塊圖。
圖24的方塊圖係按照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換成目標指令集的二進制指令之對照。
413‧‧‧第一源緊縮資料
415‧‧‧第二源緊縮資料
417‧‧‧結果緊縮資料
420‧‧‧遮罩緊縮旋轉操作
421‧‧‧緊縮資料操作遮罩

Claims (39)

  1. 一種為處理器所執行之方法,包含:接收遮罩緊縮旋轉指令,該遮罩緊縮旋轉指令指示包括有複數個緊縮資料元件的第一源緊縮資料、指示具有複數個遮罩元件的緊縮資料操作遮罩、指示至少一旋轉量、及指示目的儲存位置;以及回應該遮罩緊縮旋轉指令,將結果緊縮資料儲存到該目的儲存位置,該結果緊縮資料包括有複數個結果資料元件,每一個該結果資料元件皆對應於該等遮罩元件中位在對應之相對位置中之不同一個遮罩元件,其中,沒有被對應之遮罩元件遮蓋掉的結果資料元件包括該第一源緊縮資料之該等資料元件中位在對應位置中之已被旋轉之一個資料元件,且其中被該對應之遮罩元件遮蓋掉的結果資料元件各個包括被遮蓋掉的值。
  2. 如申請專利範圍第1項之方法,其中,該儲存包含儲存該結果緊縮資料,其中,被遮蓋掉的該結果資料元件包括被調到零的值。
  3. 如申請專利範圍第1項之方法,其中,該儲存包含儲存該結果緊縮資料,其中,被遮蓋掉的該結果資料元件包括已被來自對應位置中之源資料元件合併的合併值。
  4. 如申請專利範圍第1項之方法,其中,該接收包含接收用來指示具有該遮罩元件之該緊縮資料操作遮罩的該指令,每一個該遮罩元件皆包含單個位元。
  5. 如申請專利範圍第1項之方法,其中,該接收包 含接收用來指示包括有第二複數個緊縮資料元件之第二源緊縮資料的該指令,該第二複數個的該資料元件每一個皆代表一旋轉量。
  6. 如申請專利範圍第1項之方法,其中,該接收包含接收具有用來指示單個旋轉量之立即(immediate)的該指令。
  7. 如申請專利範圍第1項之方法,其中,該接收包含接收該遮罩緊縮旋轉指令,其具有廣播有旋轉量之資料元件,且其中該遮罩緊縮旋轉指令指示代表一旋轉量的第二源單個資料元件。
  8. 如申請專利範圍第7項之方法,其中,該儲存包含儲存未被遮蓋掉的結果資料元件,其包括該第一源緊縮資料之該等資料元件中位於對應位置中之所述一個資料元件,所述一個資料元件已按來自該第二源單個資料元件之該旋轉量之廣播的複製進行旋轉。
  9. 如申請專利範圍第1項之方法,其中,該儲存包含儲存至少4個結果資料元件,且其中該結果資料元件包含四倍字。
  10. 如申請專利範圍第1項之方法,其中,該儲存包含儲存至少16個結果資料元件,且其中該等結果資料元件的每一個皆包含至少32位元。
  11. 一種用以處理指令的設備,包含:複數個緊縮資料暫存器;以及與該複數個緊縮資料暫存器耦接的執行單元,該執行 單元可操作以回應將用來指示將包括有複數個緊縮資料元件的第一源緊縮資料、將指示將具有複數個遮罩元件的緊縮資料操作遮罩、將指示至少一旋轉量、及將指示目的儲存位置的遮罩緊縮旋轉指令,而將結果緊縮資料儲存到該目的儲存位置,該結果緊縮資料將包括有複數個結果資料元件,每一個該結果資料元件皆將對應於位在對應之相對位置中之不同一個的該等遮罩元件的結果資料元件,其中,沒有被對應之遮罩元件遮蓋掉的結果資料元件將包括該第一源緊縮資料之該等資料元件中位在已被旋轉之對應位置中之一個資料元件,且其中被該對應之遮罩元件遮蓋掉的結果資料元件各個包括被遮蓋掉的值。
  12. 如申請專利範圍第11項之設備,其中,該遮罩元件每一個皆包含單個位元。
  13. 如申請專利範圍第11項之設備,其中,該指令係用來指示將包括有複數個代表旋轉量之緊縮資料元件的第二源緊縮資料。
  14. 如申請專利範圍第11項之設備,其中,該指令包含用來指示單個旋轉量的立即(immediate)。
  15. 如申請專利範圍第11項之設備,其中,該遮罩緊縮旋轉指令具有廣播有旋轉量之資料元件,且其中該遮罩緊縮旋轉指令將指示代表予以被廣播之旋轉量的第二源單個資料元件。
  16. 如申請專利範圍第15項之設備,其中,該執行單元係用以回應該指令而儲存該未被遮蓋掉的結果資料元 件,其包括該第一源緊縮資料之該等資料元件中位於對應位置中之所述一個資料元件,其已按來自該第二源單個資料元件之該旋轉量之廣播的複製進行旋轉。
  17. 如申請專利範圍第11至16項中之任一項之設備,其中,該執行單元係用以回應該指令而用以將合併值儲存於要被遮蓋掉之該結果資料元件中。
  18. 如申請專利範圍第11至16項中之任一項之設備,其中,該執行單元係用以回應該指令而用以將零儲存於要被遮蓋掉之該結果資料元件中。
  19. 如申請專利範圍第11至16項中之任一項之設備,其中,該執行單元係用以回應該指令而儲存至少4個結果資料元件,且其中該結果資料元件包含四倍字。
  20. 如申請專利範圍第11至16項中之任一項之設備,其中,該執行單元係用以回應該指令而儲存至少16個結果資料元件,且其中該等結果資料元件每一個皆包含至少32位元。
  21. 一種電腦系統,包含:互連;與該互連耦接的處理器,該處理器用來處理遮罩緊縮旋轉指令,該遮罩緊縮旋轉指令將指示將包括複數個緊縮資料元件的第一源緊縮資料、將指示將具有複數個遮罩元件的緊縮資料操作遮罩、將指示至少一旋轉量、及將指示目的儲存位置,該處理器回應該遮罩緊縮旋轉指令可操作來將結果緊縮資料儲存到該目的儲存位置,該結果緊縮資 料用以包括複數個結果資料元件,每一個該結果資料元件皆用以對應於該等遮罩元件中位在對應之相對位置中之不同一個遮罩元件,其中,沒有被對應之遮罩元件遮蓋掉的結果資料元件將包括該第一源緊縮資料的該等資料元件中位在已被旋轉之對應位置中之一個資料元件,且其中被該對應之遮罩元件遮蓋掉的結果資料元件各個將包括未被旋轉之源資料元件的值;以及動態隨機存取記憶體(DRAM)耦接至該互連。
  22. 如申請專利範圍第21項之電腦系統,其中,該遮罩元件每一個皆包含單個位元,且其中該未被旋轉之源資料元件的值包含零值與合併值其中之一。
  23. 如申請專利範圍第21或22項之電腦系統,其中,該遮罩緊縮旋轉指令具有廣播有旋轉量之資料元件,並將用以指示用以代表一旋轉量的第二源單個資料元件,且其中該指令將致使該處理器產生該第二源單個資料元件的多個複本。
  24. 一種包含用以儲存遮罩緊縮旋轉指令的機器可讀取儲存媒體之製造的物件,包含:包括有一或多個固態資料儲存材料的該機器可讀取儲存媒體,該遮罩緊縮旋轉指令用來指示將包括有複數個緊縮資料元件的第一源緊縮資料、用來指示將具有複數個遮罩元件的緊縮資料操作遮罩、用來指示至少一旋轉量、及用來指示目的儲存位置,且該遮罩緊縮旋轉指令如果藉由機器 執行,可操作以致使該機器實施的操作包含:將結果緊縮資料儲存到目的儲存位置,該結果緊縮資料將包括有複數個結果資料元件,每一個該結果資料元件皆用以對應於該等遮罩元件中位在對應之相對位置中之不同一個遮罩元件,其中,沒有被對應之遮罩元件遮蓋掉的結果資料元件將包括該第一源緊縮資料的該等資料元件中位在已被旋轉之對應位置中之一個資料元件,且其中被該對應之遮罩元件遮蓋掉的結果資料元件包括未被旋轉之源資料元件的值。
  25. 如申請專利範圍第24項之製造的物件,其中,該指令包括遮蔽操作說明符的類型。
  26. 如申請專利範圍第24項之製造的物件,其中,該指令包括資料元件廣播控制。
  27. 一種為處理器所執行之方法,包含:接收廣播有旋轉量之資料元件之緊縮旋轉的指令,該指令指示包括有複數個緊縮資料元件的第一源緊縮資料、指示代表一旋轉量的第二源單個資料元件、及指示目的儲存位置;廣播該第二源單個資料元件以產生一數量的廣播資料元件,該廣播資料元件的數量等於該第一源緊縮資料的該緊縮資料元件的數量;以及回應該指令而將結果緊縮資料儲存到該目的儲存位置,該結果緊縮資料包括複數個結果資料元件,每一個該結果資料元件皆對應於該第一源緊縮資料之該等資料元件 中位於對應位置中的不同一個資料元件,該等結果資料元件每一個皆包括已被該等廣播資料元件之其中一對應者旋轉之該第一源緊縮資料的該對應資料元件。
  28. 如申請專利範圍第27項之方法,其中,該指令進一步指示緊縮資料操作遮罩。
  29. 如申請專利範圍第27項之方法,其中,該結果緊縮資料包括至少4個資料元件,且其中該結果資料元件每一個皆包含64位元。
  30. 一種處理器,包含:複數個緊縮資料暫存器,各個具有至少128位元;解碼單元;與該複數個緊縮資料暫存器及該解碼單元耦接的執行單元,若該處理器在運算中,則該執行單元可操作以回應於該解碼單元解碼遮罩緊縮旋轉指令,而將結果緊縮資料儲存到目的緊縮資料暫存器中,該遮罩緊縮旋轉指令係用來指示將包括有複數個緊縮資料元件的第一源緊縮資料、將用來指示將具有複數個遮罩元件的緊縮資料操作遮罩、將用來指示至少一旋轉量、及將用來指示該目的緊縮資料暫存器,該結果緊縮資料用以包括有複數個結果資料元件,每一個該結果資料元件皆將對應於該等遮罩元件中位在對應之相對位置中之不同一個遮罩元件,其中,沒有被對應之遮罩元件遮蓋掉的結果資料元件將包括該第一源緊縮資料中位在已被旋轉之對應位置中之一個資料元件,且其中被該對應之遮罩元件遮蓋掉的結果資料元件各個將包 括被遮蓋掉的值。
  31. 如申請專利範圍第30項之處理器,其中,該遮罩元件每一個皆將包含單個位元。
  32. 如申請專利範圍第30項之處理器,其中,該指令係用來指示將包括有複數個代表旋轉量之緊縮資料元件的第二源緊縮資料。
  33. 如申請專利範圍第30項之處理器,其中,該指令包含用來指示單個旋轉量的立即(immediate)。
  34. 如申請專利範圍第30項之處理器,其中,該指令包含遮罩緊縮旋轉指令與旋轉量之資料元件廣播指令,且其中該遮罩緊縮旋轉指令與旋轉量之資料元件廣播指令將用來指示將代表被廣播之旋轉量的第二源單個資料元件。
  35. 如申請專利範圍第34項之處理器,其中,該執行單元係用以回應於該指令而用來儲存該未被遮蓋掉的結果資料元件,其包括該第一源緊縮資料之該等資料元件中位在對應位置中的該一個資料元件,所述一個資料元件已按來自該第二源單個資料元件之該旋轉量之廣播的複製進行旋轉。
  36. 如申請專利範圍第30至35項中之任一項之處理器,其中,該執行單元係用以回應於該指令而用以將合併值儲存於要被遮蓋掉之該結果資料元件中。
  37. 如申請專利範圍第30至35項中之任一項之處理器,其中,該執行單元係用以回應於該指令而用以將零儲 存於要被遮蓋掉之該結果資料元件中。
  38. 如申請專利範圍第30至35項中之任一項之處理器,其中,該執行單元係用以回應於該指令而用以儲存至少4個結果資料元件,且其中該結果資料元件包含四倍字。
  39. 如申請專利範圍第30至35項中之任一項之處理器,其中,該執行單元係用以回應於該指令而用以儲存至少16個結果資料元件,且其中該等結果資料元件每一個皆包含至少32位元。
TW101148747A 2011-12-30 2012-12-20 緊縮旋轉處理器、方法、系統與指令 TWI544411B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/068242 WO2013101232A1 (en) 2011-12-30 2011-12-30 Packed rotate processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201344570A TW201344570A (zh) 2013-11-01
TWI544411B true TWI544411B (zh) 2016-08-01

Family

ID=48698464

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105115811A TWI630548B (zh) 2011-12-30 2012-12-20 緊縮旋轉處理器、方法、系統與指令
TW101148747A TWI544411B (zh) 2011-12-30 2012-12-20 緊縮旋轉處理器、方法、系統與指令

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW105115811A TWI630548B (zh) 2011-12-30 2012-12-20 緊縮旋轉處理器、方法、系統與指令

Country Status (5)

Country Link
US (2) US9864602B2 (zh)
EP (1) EP2798464B8 (zh)
CN (1) CN104011652B (zh)
TW (2) TWI630548B (zh)
WO (1) WO2013101232A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9864602B2 (en) 2011-12-30 2018-01-09 Intel Corporation Packed rotate processors, methods, systems, and instructions
US10223113B2 (en) 2014-03-27 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements
WO2015145193A1 (en) 2014-03-28 2015-10-01 Intel Corporation Processors, methods, systems, and instructions to store source elements to corresponding unmasked result elements with propagation to masked result elements
US9317719B2 (en) * 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US10133570B2 (en) * 2014-09-19 2018-11-20 Intel Corporation Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10503502B2 (en) * 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
US10423411B2 (en) * 2015-09-26 2019-09-24 Intel Corporation Data element comparison processors, methods, systems, and instructions
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
US10891131B2 (en) * 2016-09-22 2021-01-12 Intel Corporation Processors, methods, systems, and instructions to consolidate data elements and generate index updates
CN116009814A (zh) 2016-10-20 2023-04-25 英特尔公司 用于经融合的乘加的系统、装置和方法
US10191740B2 (en) * 2017-02-28 2019-01-29 Intel Corporation Deinterleave strided data elements processors, methods, systems, and instructions
CN113626076A (zh) * 2020-05-08 2021-11-09 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
US11328209B1 (en) 2021-06-02 2022-05-10 SambaNova Systems, Inc. Dual cycle tensor dropout in a neural network
US11256987B1 (en) 2021-06-02 2022-02-22 SambaNova Systems, Inc. Memory efficient dropout, with reordering of dropout mask elements

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6089274A (ja) * 1983-10-20 1985-05-20 Nec Corp ベクトルマスク制御システム
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
US6275834B1 (en) 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
US6738793B2 (en) 1994-12-01 2004-05-18 Intel Corporation Processor capable of executing packed shift operations
JPH11500547A (ja) 1994-12-01 1999-01-12 インテル・コーポレーション 乗算を有するマイクロプロセッサ
CN103064653B (zh) 1995-08-31 2016-05-18 英特尔公司 控制移位分组数据的位校正的装置
US5822606A (en) 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6098087A (en) 1998-04-23 2000-08-01 Infineon Technologies North America Corp. Method and apparatus for performing shift operations on packed data
US7421572B1 (en) 1999-09-01 2008-09-02 Intel Corporation Branch instruction for processor with branching dependent on a specified bit in a register
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6629115B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US6820195B1 (en) 1999-10-01 2004-11-16 Hitachi, Ltd. Aligning load/store data with big/little endian determined rotation distance control
US7228401B2 (en) * 2001-11-13 2007-06-05 Freescale Semiconductor, Inc. Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US20070124631A1 (en) * 2005-11-08 2007-05-31 Boggs Darrell D Bit field selection instruction
US20070106882A1 (en) * 2005-11-08 2007-05-10 Stexar Corp. Byte-wise permutation facility configurable for implementing DSP data manipulation instructions
US20090182982A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Rotate Then Insert Selected Bits Facility and Instructions Therefore
US7895419B2 (en) * 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US9864602B2 (en) 2011-12-30 2018-01-09 Intel Corporation Packed rotate processors, methods, systems, and instructions

Also Published As

Publication number Publication date
US9864602B2 (en) 2018-01-09
US10324718B2 (en) 2019-06-18
TW201344570A (zh) 2013-11-01
TW201709049A (zh) 2017-03-01
TWI630548B (zh) 2018-07-21
CN104011652B (zh) 2017-10-27
EP2798464A1 (en) 2014-11-05
US20140040604A1 (en) 2014-02-06
US20180253308A1 (en) 2018-09-06
WO2013101232A1 (en) 2013-07-04
EP2798464B1 (en) 2019-07-17
CN104011652A (zh) 2014-08-27
EP2798464A4 (en) 2016-08-17
EP2798464B8 (en) 2019-12-11

Similar Documents

Publication Publication Date Title
TWI544411B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI575448B (zh) 三個來源運算元浮點加法處理器、方法、系統及指令
TWI512616B (zh) 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品
JP6526175B2 (ja) ビットシャッフルプロセッサ、方法、システム、および命令
TWI518590B (zh) 多暫存器聚集指令
TWI489381B (zh) 多暫存器散布指令
TWI496077B (zh) 用於緊縮資料運算遮罩比較的方法、設備、系統和機器可讀取儲存媒體
TWI647613B (zh) 用於產生按數字順序的連續整數序列之處理器、方法、系統及指令(三)
TW201530309A (zh) 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
JP6673574B2 (ja) ベクトルビットシャッフルを実行するための方法および装置
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
KR101729424B1 (ko) 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트
TW201723805A (zh) 資料元件比較處理器、方法、系統及指令
TW201810029A (zh) 用於跨步載入的系統、設備及方法
TW201741868A (zh) 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統
TW201732553A (zh) 用於保留位元的強制執行的裝置及方法
TWI697836B (zh) 處理包括高功率及標準指令之指令集的方法與處理器
CN107003841B (zh) 用于融合加法-加法指令的装置和方法
TWI610234B (zh) 用於壓縮遮罩值的方法及裝置
KR20170098806A (ko) 벡터 비트 수집을 수행하기 위한 방법 및 장치
TWI617977B (zh) 用於執行自旋迴路跳位的裝置及方法
TW201730756A (zh) 用於從鏈結結構取回元件的設備和方法

Legal Events

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