TW201243726A - Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask - Google Patents

Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask Download PDF

Info

Publication number
TW201243726A
TW201243726A TW100146254A TW100146254A TW201243726A TW 201243726 A TW201243726 A TW 201243726A TW 100146254 A TW100146254 A TW 100146254A TW 100146254 A TW100146254 A TW 100146254A TW 201243726 A TW201243726 A TW 201243726A
Authority
TW
Taiwan
Prior art keywords
bit
source
field
data element
instruction
Prior art date
Application number
TW100146254A
Other languages
English (en)
Other versions
TWI470554B (zh
Inventor
Adrian Jesus Corbal San
Bret Toll
Robert Valentine
Jeffrey G Wiedemeier
Sridhar Samudrala
Milind B Girkar
Andrew T Forsyth
Elmoustapha Ould-Ahmed-Vall
Dennis R Bradford
Lisa Wu
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 TW201243726A publication Critical patent/TW201243726A/zh
Application granted granted Critical
Publication of TWI470554B publication Critical patent/TWI470554B/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
    • 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/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Description

201243726 r 六、發明說明: 【發明所屬之技術領域】 ' 本發明之技術領域係大致關於電腦處理器架 言之,係關於當被執行時會造成特定結果之指令 【先前技術】 來自基於控制流(control-flow)資訊之向 倂資料是一種向量式架構的平常問題。例如,如 的碼向量化會需要:1)用以產生布林向量(其 a[i]>〇爲真)的方式及2)基於該布林向量,用 來源(A[i]或B[i])選擇値並將內容寫入不同目 )°
For (i = 0;i<N;i + + ) { C[i] = (a[i]>0? A[i]:B[i]; } 【發明內容及實施方式】 於以下說明中係說明各種特定細節。然而, .是,本發明之實施例可在沒有這些特定細節的情 施。在其他情況下,已知電路、結構與技術未顯 •中以避免模糊對本說明之了解。 ,說明書中的「一個實施例」、「一實施例」 例實施例」等表示所說明的實施例可包含特定特 構,具體 量源的合 要將以下 表示是否 以從兩個 的(C[i] 應了解的 況下被實 示於細節 、「一範 徵、結構 -5- 201243726 '或特性,但各實施例不一定要包含該特定特徵、結構、 或特性。再者,此詞組不一定是指相同的實施例。再者, 當特定特徵、結構、或特性係被說明與一實施例相關時, 所屬技術領域中具有通常知識者可將該特定特徵、結構、 或特性與其他實施例相關,不論其是否被明確說明。 混合(Blend ) 以下爲一般被稱爲「混合」的指令之實施例,及可被 使用以執行此指令之系統、架構、指令格式等的實施例, 其係有益於幾個不同領域(包含先前技術中所述者)。混 合指令的執行有效地處理先前所述問題的第二部分(其在 如元件的向量之比較的結果中需要一個包含真/假位元的 遮罩暫存器,且根據那些位元,其能在兩個不同向量源的 元件中選擇)。換句話說,混合指令的執行造成處理器在 兩個來源中使用寫入罩作爲那些來源間的選擇器以執行資 料元對元(element-by-element)混合。該結果係被寫入 目的地暫存器中。在某些實施例中,這些來源的至少其中 —者爲例如128-、256-、512-位元向量暫存器等的暫存器 。在某些實施例中,來源運算元的至少其中一者爲與開始 記憶體位置相關聯之資料元的集合。此外,於某些實施例 中,一或兩個來源之資料元在任何混合前先經過資料轉換 (data transformation ),例如拌和(swizzle)、廣播( broadcast)、轉變(conversion)等(將以範例說明)。 寫入罩暫存器的範例將稍後說明。 -6- 201243726 此指令的範例格式爲「VBLENDPS zmml {kl},zmm2, zmm3/m512, offset」,其中運算元 zmml、zmm2、及 zmm3爲向量暫存器(例如128-' 256-、512·位元暫存器 等),kl爲寫入罩運算元(例如16-位元暫存器,類似於 稍後將說明者),且m5 12爲儲存於暫存器中或作爲即時 儲存之記億體運算元。ZMM1爲目的地運算元而ZMM2與 ZMM3/m512爲來源運算元。偏移(offset)(若有的話) 係被使用以從暫存器中或即時的値中決定記億體位址。從 記憶體取得的値(不論爲何)爲起自記億體位址且可爲數 種尺寸(128-、256-、512-位元等)之一者(根據目的地 暫存器的尺寸一尺寸大致與目的地暫存器之尺寸相同)之 集合連序位元。於某些實施例中,寫入罩係爲不同尺寸( 8位元、32位元等)。此外,於某些實施例中,寫入罩中 不是所有位元係被指令所使用,其將於後文說明》 VBLENDMPS爲指令的運算碼(op co d e )。典型地,各運 算元係被明確地界定於指令中。資料元的尺寸可被界定於 指令的前置碼(prefix )中,例如透過資料細微度位元( data granularity bit )的表示(如「W」)之使用,將如 稍後說明。於大部分的實施例中,W將表示各資料元爲 32或64位元。若資料元的尺寸爲32位元,且來源的尺 寸爲5 1 2位元,則每個來源有十六(1 6 )個資料元。 混合指令的執行的範例係顯示於第1圖。於此範例中 ,有各具有1 6資料元的兩個來源。在大部分的情形中, 這些來源的其中一者爲暫存器(此範例中,雖然來源1係 201243726 被作爲具有16個32-位元資料元的512-位元暫存器(例 如ZMM暫存器),然而,亦可使用其他資料元與暫存器 尺寸(例如XMM與YMM暫存器與16-或64·位元資料元 )。另一來源爲暫存器或記憶體位置(於圖式中來源2即 該另一來源)。若第二來源爲記憶體位置,在大部分的實 施例中,其係在來源的任何混合之前被置於暫時暫存器中 。此外,該記憶體位置的資料元可在被置於暫時暫存器中 之前經歷資料轉換。所示的遮罩樣式爲0x5 5 5 5。 於此範例中,對於具有「1」的値之寫入罩的各位元 位置,其係表示第一來源(來源1)之對應的資料元應被 寫入該目的地暫存器之對應的資料元位置。因此,來源1 的第一、第三、第五等位元位置(AO、A2、A4等)係被 寫入該目的地之第一、第三、第五等資料元位置。對於具 有「〇」的値之寫入罩,第二來源之資料元係被寫入該目 的地之對應的資料元位置。根據實施目的,當然「1」與 「〇」的使用可互換。此外’雖然此圖式與以上說明認爲 相對的第一位置爲最小有效位置(least significant position ),在某些實施例中,第一位置爲最大有效位置 〇 第2圖顯示混合指令的執行之另一範例。此圖式與第 1圖不同處在於各來源僅具有8個資料元(例如,來源爲 各具有8個64-位元資料元之512-位元暫存器)》於此情 形下’使用16-位元的寫入罩,並非該寫入罩的所有位元 都被使用。於此範例中,因待被合倂的各來源沒有1 6個 -8 - 201243726 資料元,故僅最小有效位元係被使用。 第3圖顯示混合指令的虛擬碼之範例。 第4圖顯示混合指令於處理器中的使用之實施例。於 操作40 1,具有目的地運算元、兩個來源運算元、偏移( 若有的話)、及寫入罩的混合指令係被提取。於某些實施 例中,目的地運算元爲512-位元向量暫存器(例如ZMM1 )而寫入罩爲1 6-位元暫存器(例如稍候說明的「k」寫 入罩暫存器)。至少其中一個來源運算元可爲記憶體來源 運算元。 於操作403,混合指令係被解碼。基於指令的格式, 各種資料可於此階段被解譯(interpreted ),例如是否要 資料轉換、要寫入及擷取哪個暫存器、要存取哪個記憶體 位址等。 於操作405,來源運算元値係被擷取/讀取。若兩個來 源皆爲暫存器,則那些暫存器係被讀取。若來源運算元的 其中一者或兩者爲記憶體運算元,則與該運算元相關聯的 資料元係被擷取。於某些實施例中,來自記億體之資料元 係被儲存於暫時暫存器中。 若有任何待執行的資料元轉換(例如提升轉換( upCOnversi〇n )、廣播、拌和等,將於稍後說明),則可 在操作407執行。例如,來自記憶體的1 6-位元資料元可 被提升轉換成32-位元資料元或資料元可被從一樣式拌和 至另一樣式(例如 XYZW XYZW XYZW ... XYZW 至 xxxxxxxx yyyyyyyy zzzzzzzzzz WWWWWWWW) 5 -9 - 201243726 混合指令(或包含此指令(例如微操作)之操作)係 藉由執行資源於操作409被執行。此執行使用寫入罩作爲 那些來源間之選擇器而造成兩個來源間之資料元-對-元混 合。例如,第一與第二來源之資料元係根據寫入罩的對應 位元値而被選擇。此混合的範例係顯示於第1與2圖。 於操作411’來源運算元之適當的資料元係被儲存於 目的地暫存器中。再次說明,其範例係顯示於第1與2圖 。雖然操作409與4 1 1被分開顯示,於某些實施例中,其 可被一起執行作爲指令之執行的一部分。 雖然以上係以一種類型的執行環境來顯示,其可被輕 易修改以符合其他環境,例如正常(in-order )或不正常 (out-of-order)環境。 第5圖顯示用以處理混合指令的方法之實施例。於此 實施例中,其係假設某些(若非全部)的操作401 -407已 被較早執行,然而,其未被顯示以避免模糊以下說明的細 節。例如’提取與解碼未被顯示,運算元(來源與寫入罩 )擷取亦未被顯示。 於操作5 0 1,寫入罩之第一位元位置的値係被評估。 例如,於寫入罩kl[0]之値係被決定。於某些實施例中, 第一位元位置爲最小有效位元位置而於其他實施例中其爲 最大有效位元位置。其餘討論將說明第一位元位置爲最小 有效的使用,然而,若其爲最大有效而被做出的修改將可 被所屬技術領域中具有通常知識者所輕易了解。 -10- 201243726 是否寫入罩之此位元位置的値表示第一來源的對應資 料元(第一資料元)應被儲存於目的地之對應位置之決定 係於操作503被做出。若第一位元位置表示於第一來源之 第一位置中的資料元應被儲存於目的地暫存器之第一位置 ’則其於操作507被儲存。回到第1圖,該遮罩表示此爲 該情形且第一來源之第一資料元係儲存於目的地暫存器之 第一資料元位置中。 若桌一位兀位置表示第一來源之第一位置中的資料元 不應被儲存於目的地暫存器之第一位置中時,則第二來源 之第一位置中的資料元係於操作5 07被儲存。回到第1圖 ’該遮罩表示此不爲該情形。 是否經評估的寫入罩位置爲寫入罩的最後或是否目的 地之所有的資料元位置已被塡滿之決定係於操作5 〇9被做 出。若是,則操作結束。若否,則寫入罩中的下一位元位 置係於操作5 1 1待被評估以決定其値。 是否寫入罩之此後續位元位置的値表示第一來源的對 應資料元(第二資料元)應被儲存於目的地之對應位置之 決定係於操作503被做出。此重複直到遮罩中所有位元已 被用盡或目的地之所有資料元已被塡滿。後者情形可發生 於當例如資料元尺寸爲64位元、目的地爲512位元、而 寫入罩具有16位元。於此情形下,僅8位元的寫入罩將 爲必要,但混合指令將已被完成。換句話說,寫入罩所使 用的位兀數量係根據各來源之寫入罩尺寸與資料元數量β 第6圖顯不用以處理混合指令的方法之實施例。於此 -11 - 201243726 實施例中,其係假設某些(若非全部)的操作40 1 -407已 在操作601之前被執行。於操作601,對於待被使用的寫 入罩之各位元位置,是否於該位元位置的値表示第一來源 之對應的資料元應被儲存於目的地暫存器之對應的位置之 決定被做出。 對於表示第一來源之資料元應被儲存於目的地暫存器 中的寫入罩之各位元位置,其係於操作605被寫入適當位 置。對於表示第二來源之資料元應被儲存於目的地暫存器 中的寫入罩之各位元位置,其係於操作603被寫入適當位 置。於某些實施例中,操作603與605係被同時執行。 雖然第5與6圖已說明根據第一來源來做決定,但仍 可使用任一來源來做決定。此外,應可清楚了解的是,當 一個來源之資料元非將被寫入另一來源之對應的資料元時 ,另一來源之對應的資料元係將被寫入目的地暫存器。 英特爾公司的 AVX導入基於即時値(VBLENDPS) 或基於第三向量來源之資料元的符號位元(VB LEND VPS )之其他版本的BLEND向量指令。前者具有混合資訊爲 停滯的(static )之缺點,而後者具有動態混合資訊來自 其他向量暫存器而導致額外的暫存器讀取壓力、儲存浪費 (每32位元僅有1個對於布林表示法是實際有用的)與 額外的負荷(由於預測資訊需要被映射至真實資料(true-data)向量暫存器)之缺點。VBLENDMPS導入使用包含 於真實遮罩暫存器中的預測資訊從兩個來源混合値的槪念 。此有以下優點:其允許_數混合、允許使用解耦合的( -12- 201243726 decoupled )算術及經預測的邏輯組件(算術係被執行於 向量、預測係被執行於遮罩;遮罩係被使用以根據控制流 資訊來混合算術資料)來混合、減輕於向量暫存器檔案的 讀取壓力(遮罩讀取較便宜且在分開的暫存器檔案)、及 避免浪費儲存空間(儲存布林於向量是高度沒有效率的, 因爲每個資料元在32-位元/64-位元中僅有1-位元是實際 需要的)。 以上說明的指令之實施例可被體現於「一般向量友善 指令格式(generic vector friendly instruction format)」 ,其係說明於後文。於其他實施例中,此格式未被使用而 使用另一指令格式,然而,寫入罩暫存器、各種資料轉換 (拌和、廣播等)、位址等的以下說明係大致可應用至以 上所述的指令之實施例的說明。此外,後文將說明範例系 統、架構、與管路(pipeline )。以上所述的指令之實施 例可被執行於此種系統、架構、與管路,但並不受限於其 中〇 向量友善指令格式是一種指令格式,其係適合於向量 指令(例如對於向量操作有特定的領域)。雖然實施例係 被說明爲向量與純量(scalar )操作係經由向量友善指令 格式而被支持,替代實施例可僅使用向量操作,經由向量 友善指令格式而被支持。 範例一般向量友善指令格式-第7A-B圖 第7 A-B圖爲方塊圖,顯示根據本發明實施例之一般 -13- 201243726 向量友善指令格式及其指令樣板。第7A圖爲方塊圖,顯 示根據本發明實施例之一般向量友善指令格式及其等級A 指令樣板;而第7B圖爲方塊圖,顯示根據本發明實施例 之一般向量友善指令格式及其等級B指令樣板。具體言之 ,一般向量友善指令格式700 (其係界定等級A與等級b 指令樣板)包含無記憶體存取705指令樣板與記憶體存取 720指令樣板。向量友善指令格式於內文中所用的術語r 一般(generic )」係指未被關聯至任何特定指令集的指令 格式。雖然實施例將被說明於其中向量友善指令格式中的 指令係操作於源自暫存器(無記憶體存取705指令樣板) 或暫存器-記憶體(記憶體存取720指令樣板)之向量, 本發明之替代實施例可支持僅其中一者。同樣的,雖然本 發明之實施例將被說明於其中於向量指令格式中有負載與 儲存指令,替代實施例替代或額外具有不同指令格式(其 移動向量至暫存器中或從暫存器出來(例如從記憶體至暫 存器、從暫存器至記憶體、從暫存器至暫存器))的指令 。再者,雖然本發明之實施例被說明爲支持兩種等級的指 令樣板,替代實施例可僅支持其中一種或多於兩種。 雖然本發明之實施例被說明於其中向量友善指令格式 支持以下:具有3 2位元(4位元組)或64位元(8位元 組)資料元寬度(或尺寸)之64位元組向量運算元長度 (或尺寸)(因此,64位元組向量包含16雙字尺寸( doubleword-size) 資料元或替代地 8 四字尺寸 ( quadword-size)資料元);具有16位元(2位元組)或8 -14- 201243726 位兀(1位元組)資料元寬度(或尺寸)之64位元組向 量運算元長度(或尺寸):具有32位元(4位元組)、 64 k 7C ( 8位元組)、16位元(2位元組)、或8位元( 1 iiiTC組)資料元寬度(或尺寸)之32位元組向量運算 兀長度(或尺寸);及具有32位元(4位元組)、64位 兀(8位元組)、16位元(2位元組)、或8位元(1位 元組)資料元寬度(或尺寸)之1 6位元組向量運算元長 S (或尺寸);畚代實施例可支持具有更多、更少或不同 資料元寬度(例如丨2 8位元(1 6位元組)資料元寬度) 之更多、更少及/或不同向量運算元尺寸(例如756位元 組向量運算元)。 第7A圖中的等級a指令樣板包含:1 )在無記億體 存取705指令樣板中係顯示無記憶體存取、完整修整控制 類型操作(no memory access, full round control type operation) 710指令樣板、及無記億體存取、資料轉換類 型操作(no memory access, data transform type operation )71 5指令樣板·.及2 )在記億體存取720指令樣板中係 顯不記億體存取、時間性(memory access, temporal) 725 指令樣板及記憶體存取、非時間性(memory access, nontemporal) 730 指令樣板 。第 7B 圖中 的等級 B 指令樣板 包含:1 )在無記憶體存取705指令樣板中係顯示無記憶 體存取、寫入遮罩控制、部分修整控制類型操作(no memory access, write mask control, partial round control type operation) 712指令樣板、及無記憶體存取、寫入遮 -15- 201243726 罩控制 ' vsize 類型操作(no memory access,write mask control,vsize type operation) 717 指令樣板:及 2)在記 憶體存取720指令樣板中係顯示記憶體存取、寫入遮罩控 制(memory access, write mask control) 727 指令樣板。 格式 、 —般向量友善指令格式700包含以下所列欄位(按第 7A-B圖中顯示順序)。 格式欄位740 —此欄位之特定値(指令格式識別符値 )獨特地識別向量友善指令格式及於指令流中向量友善指 令格式中指令的發生。因此,格式欄位740的內容自於其 他指令格式中指令的發生中區別於第一指令格式中指令的 發生,從而允許向量友善指令格式的導入具有其他指令格 式之指令集。因此,此欄位在其並非爲僅具有一般向量友 善指令格式之指令所必須者的情況下爲選項的。 基本操作欄位742 —其內容區別不同基本操作。如後 文所述者,基本操作欄位742可包含及/或爲運算碼欄位 的一部分。 暫存器索引欄位744—其內容直接或經由位址產生而 指定來源與目的地運算元之位置,其爲於暫存器中或於記 億體中。這些包含足夠數量的位元以從 PxQ (例如 32x912)暫存器檔案中選擇N個暫存器。雖然於一個實 施例中N可高達三個來源與一個目的地暫存器,替代實 施例可支持更多或更少來源與目的地暫存器(例如可支持 -16- 201243726 高達兩個來源,其中一個亦作爲目的地;可支持高達三個 來源,其中一個亦作爲目的地;可支持高達兩個來源與一 個目的地)。雖然於一個實施例中P = 32,替代實施例可 支持更多或更少暫存器(例如16)。雖然於一個實施例 中Q = 9 1 2位元,替代實施例可支持更多或更少位元(例 如 1 2 8、1 0 2 4 ) ° 修改符欄位746 —其內容在用來指定記憶體存取之一 般向量友善指令格式中從沒有指定記憶體存取者中區分出 指令的發生;亦即,在無記憶體存取705指令樣板與記憶 體存取720指令樣板之間。記憶體存取操作讀取及/或寫 入至記億體分層(hierarchy)(在某些情形中使用暫存器 中的値來指定來源及/或目的地位址),而無記憶體存取 操作不這樣做(例如,來源及目的地爲暫存器)。於一實 施例中,此欄位亦從三個不同方式中選擇以執行記憶體位 址計算,替代實施例可支持更多、更少或不同方式以執行 記憶體位址計算。 增益操作欄位750—其內容區分許多待執行的不同操 作,除了基本操作以外。此欄位爲內容特定的。於本發明 之一實施例中,此欄位被分成級別欄位768、alPha欄位 75 2、beta欄位754。增益操作欄位允許共同群組的待處 理操作於單一指令中’而非2、3、或4指令。以下爲使 用增益欄位750以減少所需指令數量之指令的一些範例( 其命名方式將於後文中詳細說明)。 -17- 201243726 先前的指令序列 根據本發明一實施例之指令序列 vaddps ymmO, ymml, ymm2 vaddps zmmO, zmml, zmm2 vpshufd ymm2, ymm2, 0x55 vaddps ymmO, ymml, ymm2 vaddps zmmO, zrnml, zmm2 {bbbb} vpmovsxbd ymm2, [rax] vcvtdq2ps ymm2, ymm2 vaddps ymmO, ymml, ymm2 vaddps zmmO, zmml, [rax]{sint8} vpmovsxbd ymm3, [rax] vcvtdq2ps ymm3, ymm3 vaddps ymm4, ymm2, ymm3 vblendvps ymml,ymm5, ymml, ymm4 vaddps zmml {k5}, zmm2, [rax]{sint8} vmaskmovps ymml,ymm7, [rbx] vbroadcastss ymmO, [rax] vaddps ymm2, ymmO, ymml vblendvps ymm2, ymm2, ymml, ymm7 vmovaps zmml {k7}, [rbx] vaddps zmm2 {k7} {z}, zmm 1, [rax]{ltoN} 其中[rax]爲使用於位址產生的基本指標,且其中{}表 示由資料操作欄位(將於後文中詳細說明)所指定之轉變 操作。 純量欄位760—其內容允許衡量索引欄位的內容以用 於記億體位址產生(例如,對於位址產生,其使用 2scale*index + base)。 位移欄位762 A —其內容係使用爲部份的記億體位址 產生(例如,對於位址產生,其使用 2seale*index + base + displacement )。 -18- 201243726 位移因子欄位762B (應注意,位移欄位762A直接位 於位移因子欄位762B之上的並列係表示其中一者或另一 者係被使用)一其內容係使用爲位址產生;其指定由記億 體存取的尺寸(N)所純量之位移因子一其中N爲記億體 存取中位元組的數量(例如,對於位址產生之一部分,其 使用 2scale*index + base + scaled displacement)。冗餘的低 階位元係被忽略,如此,位移因子欄位的內容係乘上記億 體運算元總尺寸(N)以產生用於計算有效位址之最終位 移。N的値係由在運行時間的處理器硬體根據完整運算碼 欄位774 (於後文說明)及資料操作欄位754C所決定, 如後文所述。位移欄位762A與位移因子欄位762B爲選 項的,因其並非使用於無記憶體存取705指令樣板及//或 不同實施例可實現兩者中的其中一者或無。 資料元寬度欄位764 —其內容區分許多資料元寬度中 的何者係將被使用(於一些實施例中爲所有的指令;於一 些實施例中爲一些指令)。此欄位爲選項的,因若僅一個 資料元寬度係被支持及/或資料元寬度係使用某些方面的 運算碼而被支持,則不需要此欄位。 寫入遮罩欄位770—其內容控制(基於每個資料元位 置)是否在目的地向量運算元的資料元位置反映基本操作 與增益操作之結果。級別A指令樣板支持合倂寫入遮罩 (merging-writemasking ),而級別 B指令樣板支持合倂 (merging-)與歸零(zeroing-)寫入遮罩。當合倂時, 向量遮罩保護目的地中的任何組的資料元在任何操作的執 -19- 201243726 行(由基本操作與增益操作所指令)期間更新;於其丨也# 施例中,保存目的地中的每個資料元之舊値’其中對應的 遮罩位元具有0。相反的,當歸零向量遮罩允許目的地中 的任何組的資料元在任何操作的執行(由基本操作與增益 操作所指令)期間變成0:於一實施例中’當對應的遮罩 位元具有〇値時,目的地的一資料元被設爲〇。此功能的 一子集爲控制被執行的操作之向量長度的能力(亦即’被 修改的資料元之總長,從第一個到最後一個):然而’被 修改的資料元不需要是連續的。因此,寫入遮罩欄位770 允許部分向量操作,包含載入、儲存、算術、邏輯等。同 樣的,此遮罩可被使用於錯誤抑制(亦即’藉由遮蔽目的 地的資料元位置以避免收到任何會/將造成錯誤之操作的 結果(例如,假設記億體中的向量跨越分頁邊界而第一分 頁(不是第二分頁)將造成分頁錯誤’若向量的所有在第 一頁的資料元係由寫入遮罩所遮蔽’則該分頁錯誤可被忽 略))。再者’寫入遮罩允許「向量化迴圈(vectorizing loop)」,其包含特定類型的條件陳述。雖然本發明之實 施例係說明寫入遮罩欄位770的內容選擇許多寫入遮罩暫 存器中的一個,其包含待使用的寫入遮罩(因此,寫入遮 罩欄位7 7 0的內容間接地識別待執行的遮蔽)。替代實施 例取代或額外允許遮罩寫入欄位770的內容直接指定待執 行的遮蔽。再者,歸零允許效能改善’當:丨)暫存器更 名係被使用於其目的地運算元亦不是來源的指令(亦稱爲 非三元指令),因爲在暫存器更名管路階段期間,目的地 -20- 201243726 不再是暗示的來源(沒有來自目前目的地暫存器 需要被複製至更名後的目的地暫存器或以某種方5 作,因爲任何不是操作結果的資料元(任何經遮i 元)將被歸零):及2)在寫回階段期間’因爲琴 入。 即時欄位772 —其內容允許即時(immediate) 。此欄位爲選項的,其不存在於不支援即時之一遝 善格式的實施中,且其不存在不使用即時的指令中 指令樣板級別選擇 級別欄位768 —其內容區分不同級別的指令。 2A-B圖,此欄位的內容在級別A與級別B指令5 。於第7A-B圖中,圓角矩形係被用來表示特定個 於欄位中(例如,分別於第7A-B圖中,級別欄位 級別A 768A與級別B 768B )。 級別A之無記憶體存取指令樣板 在級別A之無記憶體存取705指令樣板的11 alpha欄位7 52係被解譯爲RS欄位75 2A,其欄ί 同增益操作類型中的何者係待被執行(例如 75 2 Α.1與資料轉換752 Α.2係分別指定至無記憶骨 整類型操作710與無記憶體存取資料轉換類型操f 令樣板),而beta欄位*7 54區分特性類型的操f 者係待被執行。於第7圖中,圓角區塊係被使用t 資料元 支援操 的資料 係被寫 的規格 向量友 參考第 間選擇 係存在 768之 形中, 區分不 ,修整 存取修 715指 中之何 表示特 -21 201243726 定値係存在(例如,修改符欄位746中的無記憶體存取 746A;對於alpha欄位752/rs欄位752A的修整752A.1 與資料轉換752A.2)。於無記憶體存取7〇5指令樣板中 ,純量欄位760、位移欄位762A、與位移因子欄位762B 不存在。 無記憶體存取指令樣板一完整修整控制類型操作 在無記憶體存取完整修整控制類型操作7 1 〇指令樣板 中,beta欄位754被解譯爲修整控制欄位754A,其內容 提供靜態修整。雖然在本發明所描述的實施例中修整控制 欄位754A包含抑制所有浮點例外(SAE)欄位756與修 整操作控制欄位75 8,替代實施例可支持可將這兩個槪念 —起編碼成相同欄位或僅具有這些槪念/欄位的其中一者 或另一者(例如,可具有僅修整操作控制欄位7 5 8 )。 SAE欄位756 —其內容區分是否去能(disable)例外 事件報告;當SAE欄位7 5 6的內容表示抑制被賦能( enable ),給定指令不報告任何類型的浮點例外旗標且不 提出任何浮點例外處理器。 修整操作控制欄位75 8_其內容區分修整操作之群組 (例如,往正無限大方向捨去(round-up )、往負無限大 方向捨去(round-down )、往零的方向捨去(round-towards-zero )、將運算結果捨去至最接近數値(round-to-nearest ))中的何種要執行。因此修整操作控制欄位 758允許修整模式以每個指令爲基準的方式來改變,且因 -22- 201243726 此當其被需要時,特別有用。於本發明之處理器包含控制 暫存器用以指定修整模式之一實施例中,修整操作控制欄 位75 0的內容置換該暫存器値(不需要在此控制暫存器上 執行儲存-修改-恢復(save-modify-restore )的情況下可 選擇修整模式是有益的)。 無記憶體存取指令樣板一資料轉換類型操作 在無記憶體存取資料轉換類型操作715指令樣板中, beta攔位754被解譯爲資料轉換欄位754B,其內容區分 許多資料轉換(例如,無資料轉換、拌和、廣播)中的其 中何者將被執行。 級別A之記憶體存取指令樣板 在級別A之記憶體存取72 0指令樣板的情況下, alpha欄位752被解譯爲逐出提示(eviction hint)欄位 752B,其內容區分逐出提示中的何者將被使用(於第7A 圖,時間性752B.1與非時間性752B.2係分別被指明於記 億體存取、時間性725指令樣板及記憶體存取、非時間性 7 3 0指令樣板),而beta欄位754被解譯爲資料控制欄位 754C,其內容區分許多資料控制操作(亦稱爲本原( primitive ))中的何者將被執ί了(例如,無控制(no manipulation );廣播;來源之提升轉換(up conversion of a source);目的地之下降轉換(down conversion of a destination))。記憶體存取72〇指令樣板包含純量欄位 -23- 201243726 760、及選項地,位移欄位762A或位移因子fl 向量記憶體指令從記憶體執行向量載入;35 存至記億體(帶有轉換支持)。關於一般向| I己憶體指令以按資料元(element-wise)方另 送資料或傳送資料至記憶體,其資料元係由布 罩之向量遮罩的內容所指定而被實際傳送。於 圓角矩形被使用以表示特定値係存在於欄位i 修改符欄位746之記憶體存取746B ;對於 752 /逐出提示欄位752B之時間性752B.1 752B.2)。 S己憶體存取指令樣板一時間性 時間性資料是可能很快被再使用而有 caching)的資料。亦即,然而,提示,且不 用不同方式將其實現,包含整個忽略該提示。 S己憶體存取指令樣板一非時間性 非時間性資料是不可能很快被再使用而有 在第一階快取)的資料,且應被給定關於逐 亦即,然而,提示,且不同處理器可用不同方 ,包含整個忽略該提示。 級別Β之指令樣板 在級別Β之指令樣板的情況下,alpha欄 Η立 7 6 2 B » .執行向量儲 :指令,向量 從記憶體傳 :選爲寫入遮 第7Α圖, 例如,對於 alpha欄位 及非時間性 益於快取( 同處理器可 益於快取( 之優先權。 式將其實現 位7 5 2被解 -24- 201243726 譯爲寫入遮罩控制(z )欄位75 2C,其內容區別是否由寫 .入遮罩欄位770控制之寫入遮罩應爲合倂或歸零。 級別B之無記憶體存取指令樣板 在級別B之無記億體存取705指令樣板的情形中,部 份的beta欄位754被解譯爲RL欄位757A,其內容區分 不同增益操作類型中的何者將被執行(例如,修整 757A.1及向量長度(VSIZE) 757A.2係分別被指明於無 記憶體存取、寫入遮罩控制、部分修整控制類型操作7 1 2 指令樣板及無記憶體存取、寫入遮罩控制、VSIZE類型操 作717指令樣板),而其餘的beta欄位754區分所指定 的類型之操作中的何者將被執行。於第7圖,圓角區塊係 被使用以指示特定値係存在(例如,於修改符欄位746中 之無記憶體存取746A ;關於RL欄位757A之修整75 7A.1 及VSIZE 757A.2)。於無記億體存取705指令樣板中, 純量欄位760、位移欄位762A、與位移因子欄位762B不 存在。 無記憶體存取指令樣板··寫入遮罩控制、部分修整控制類 型操作 於無記憶體存取、寫入遮罩控制、部分修整控制類型 操作710指令樣板中,其餘的beta欄位754被解譯爲修 整操作欄位759A且例外事件報告係被去能(給定指令不 報告任何類型的浮點例外旗標且不提出任何浮點例外處理 -25- 201243726 器)。 修整操作控制欄位759A —就如修整操作控制欄位758 ,其內容區分修整操作之群組中的何者要執行(例如,往 正無限大方向捨去、往負無限大方向捨去、往零的方向捨 去、將運算結果捨去至最接近數値)。因此,修整操作控 制欄位759A允許修整模式以每個指令爲基準的方式來改 變,且因此當其被需要時,特別有用。於本發明之處理器 包含控制暫存器用以指定修整模式之一實施例中,修整操 作控制欄位7 5 0的內容置換該暫存器値(不需要在此控制 暫存器上執行儲存-修改-恢復(save-modify-restore)的 情況下可選擇修整模式是有益的)。 無記憶體存取指令樣板一寫入遮罩控制、VSIZE類型操作 於無記憶體存取、寫入遮罩控制、VSIZE類型操作 717指令樣板中,其餘的beta欄位754被解譯爲向量長度 欄位75 9B,其內容區分許多資料向量長度的其中何者將 被執行(例如,128、756、或912位元組)。 級別B之記憶體存取指令樣板 於級別A之記憶體存取720指令樣板的情形中,部 份的beta欄位754被解譯爲廣播欄位757B,其內容區分 是否廣播類型資料控制操作將被執行,而其餘的beta欄 位754被解譯爲向量長度欄位75 9B。記憶體存取720指 令樣板包含純量欄位760,及選項地,位移欄位762A或 -26- 201243726 位移因子欄位762B。 關於欄位的額外說明 關於一般向量友善指令格式700,完整運算碼欄位 7 7 4係顯示包含格式欄位7 4 0、基本操作欄位7 4 2、及資 料元寬度欄位764。雖然顯示完整運算碼欄位774包含所 有這些欄位之一實施例,在不支持所有這些欄位的實施例 中’完整運算碼欄位774包含少於所有這些欄位者完整運 算碼欄位774提供操作碼。 增益操作欄位750、資料元寬度欄位764、與寫入遮 罩欄位770允許這些特徵在一般向量友善指令格式中以每 個指令爲基準的方式被指明。 寫入遮罩欄位與資料元寬度欄位的結合建立類型的指 令,其中其允許該遮罩根據不同資料元寬度來應用。 指令格式需要相對少量的位元,因爲其對於不同目的 根據其他欄位的內容再使用不同欄位。例如,一觀點是: 修改符欄位的內容在第7A-B圖中之無記憶體存取705指 令樣板與在第7A-B圖中之記憶體存取72〇指令樣板間選 擇:同時級別欄位768的內容在第7A圖的指令樣板 710/715與第7B圖的712/717間的無記憶體存取705指令 樣板中選擇;且同時級別欄位768的內容在第7A圖的指 令樣板725/730與第7B圖的727間的記憶體存取720指 令樣板中選擇。由另一觀點,級別欄位768的內容分別在 第7 A與B圖之級別A與級別B指令樣板中選擇;同時修 -27- 201243726 改符欄位的內容在第7A圖之指令樣板705與720間的那 些級別A指令樣板中選擇;且同時修改符欄位的內容在 第7 B圖之指令樣板7 0 5與7 2 0間的那些級別B指令樣板 中選擇。在級別欄位的內容表示級別A指令樣板的情形 中,修改符欄位746的內容選擇alpha欄位752的解譯( 在rs欄位752A與EH欄位7 5 2B間)°以相同方式’修 改符欄位746與級別欄位768的內容選擇不論alpha欄位 被解譯爲rs欄位752A、EH欄位752B、或寫入遮罩控制 (Z )欄位75 2C。在級別與修改符欄位表示級別A無記億 體存取操作的情形中,增益欄位的beta欄位之解譯根據 rs欄位的內容來改變:而在級別與修改符欄位表示級別B 無記憶體存取操作的情形中,beta欄位的解譯根據RL欄 位的內容。在級別與修改符欄位表示級別A記憶體存取 操作的情形中,增益欄位的beta欄位之解譯根據基本操 作欄位的內容來改變:而在級別與修改符欄位表示級別B 記憶體存取操作的情形中,增益欄位的beta欄位之廣播 欄位75 7B的解譯根據基本操作欄位的內容來改變。因此 ,基本操作欄位、修改符欄位及增益操作欄位的結合允許 甚至更廣範圍的將被指明的增益操作。 在級別A與級別B中發現的各種指令樣板係有益於 不同情況。當歸零-寫入遮蔽(zeroing-writemasking)或 因效能理由需要較小向量長度時,級別A是有用的。舉 例來說’當由於我們不再需要人爲地合倂目的地而更名被 使用時’歸零允許避免假的相關性;至於另一範例,當以 -28- 201243726 向量遮罩模擬較短的向量尺寸時,向量長度控制減輕儲 存-載入(store-load )轉送問題。當期望:1 )使用修整-模式(rounding-mode)同時控制允許浮點例外(亦即, 當SAE欄位的內容表示無時)時;2)可使用提升轉換、 拌和、調換(swap )、及/或下降轉換;3)以圖形資料 類型操作,級別B是有用的。舉例來說,提升轉換、拌和 、調換、下降轉換、及圖形資料類型降低當以不同格式與 來源作業時所需指令的數量;至於另一範例,允許例外的 能力提供完整IEEE相容及指向的修整-模式。 例示特定向量友善指令格式 第8A-C圖顯示根據本發明實施例之例示特定向量友 善指令格式。第8A-C圖顯示特定向量友善指令格式800 ,其係特定在於,其指明欄位的位置、尺寸、解譯、及階 級(order ),以及這些欄位中的某些者之値。特定向量 友善指令格式800可被使用以延伸x86指令集,且因此某 些欄位係與現有x86指令集與其延伸(例如,AVX )中所 使用者類似或相同。此格式仍符合現有6指令集與其延 伸之前置碼編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及即時欄位。對映第7 圖的欄位之第8A-C圖的欄位係被顯示。 應了解的是,雖然本發明的實施例係爲了說明目的參 考一般向量友善指令格式700的內容來說明特定向量友善 指令格式8 00,本發明並不限於特定向量友善指令格式 -29- 201243726 800。例如,一般向量友善指令格式700打算對各種欄位 使用多種可能的尺寸,而特定向量友善指令格式800係顯 示爲具有特定尺寸的欄位。藉由特定範例,雖然資料元寬 度欄位764係顯示爲一個位元欄位於特定向量友善指令格 式800,本發明並不限於此(亦即,一般向量友善指令格 式7 00打算使用其他尺寸的資料元寬度欄位764 )。 格式-第8A-C圖 —般向量友善指令格式700包含以下所列欄位(按第 8A-C圖所示次序)。 EVEX Prefix ( Bytes 0-3 ) EVEX Prefix 802 -係以四位元組形式編碼》 格式欄位 740 ( EVEX Byte 0,bits[7:〇])-第一位 元組(EVEX Byte 0)爲格式欄位740且其包含〇x62 (本 發明之一實施例中使用於區別向量友善指令格式之獨特値 )° 第二至四位元組(EVEX Bytes 1-3)包含提供特定能 力的許多位元欄位。 REX 欄位 805 ( EVEX Byte 1,bits[7-5]) -係由 EVEX.R 位元欄位(EVEX Byte 1,bit[7] - R) 、EVEX.X 位元欄位(EVEX Byte 1,bit[6] - X)、與 75 7BEX byte 1,bit[5] - B)組成。EVEX.R、EVEX.X 與 EVEX.B 位元 欄位提供如對應的VEX位元欄位之相同的功能,且係使 -30- 201243726 用1的補數形式(Is complement form)加以編碼,例如 ZMM0係被編碼爲1111B,ZMM15係被編碼爲0000B。指 令之其他欄位將暫存器索引的最小三個位元編碼爲已知於 相關領域的(rrr、XXX、與bbb) ’使得 Rrrr、Xxxx、與 Bbbb可藉由加入EVEX.R、EVEX.X、及EVEX.B而形成 〇 REX’欄位810 -此爲REX’欄位810的第一個部分且 爲使用以將延伸的3 2暫存器組的較高1 6個或較低1 6個 編碼之 EVEX.R’位元欄位(EVEX Byte 1,bit[4] - R’)。 於本發明之一實施例中,此位元,連同以下所指出的其他 位元,係以位元反向格式(bit inverted format)被儲存 以從BOUND指令區分(在已知x8 6 3 2位元模式中),何 者的實際運算碼位元組爲62,但不接受於MOD R/M欄位 (於後文說明)在MOD欄位中1 1的値;本發明之替代實 施例不以反向格式儲存此及以及其他指出的位元。1的値 係被使用以對較低16個暫存器編碼。換句話說,R’Rrrr 係藉由從其他欄位結合EVEX.R’、EVEX.R、及其他RRR 而形成。 運算碼對映欄位 815 ( EVEX byte 1,bits[3:0] - mmmm )-其內容將隱含的導引運算碼位元組(OF、 OF38、或 0F3 )編碼。 資料元寬度欄位 764 ( EVEX byte 2,bit[7] - W )-係藉由表示法EVEX.W來表示。EVEX.W係被使用以界定 資料類型(3 2位元資料元或64位元資料元)的粒度(尺 -31 - 201243726 寸)。 EVEX.vvvv 820 ( EVEX Byte 2, bits[6:3] - vvvv ) - EVEX.vvv的角色可包含以下:1) EVEX.vvvv將第一來源 暫存器運算元編碼,以反向的(1的補數)形式指明且係 有效於具有2或更多來源運算元的指令;2) EVEX.vvvv 將目的地暫存器運算元編碼,對於某個向量偏移以1的補 數形式指明;或3) EVEX.vvvv不將任何運算元編碼,該 欄位係被保留且應包含1111b。因此,EVEX.vvvv欄位 8 20將第一來源暫存器說明符(specifier)的4個較低階 位元以反向(1的補數)形式儲存。根據指令,額外的不 同EVEX位元欄位係被使用以將說明符大小延伸至32暫 存器。 EVEX.U 768 級別欄位(EVEX byte 2,bit[2] - U )-若 EVEX.U = 0,其表示級別 A 或 EVEX.UO ;若 EVEX.U=1 ,其表示級別B或EVEX.U1。 前置碼編碼欄位 825 (EVEX byte 2,bits[l:0] - pp) -對基本操作欄位提供額外位元。除了對EVEX前置碼格 式中舊有(legacy ) SSE指令提供支持以外,此亦有助於 使 SIMD前置碼變簡潔(而不是需要一位元組來表示 SIMD前置碼,EVEX前置碼僅需要2位元)。於一實施 例中,要支持在舊有格式與EVEX前置碼格式兩者中皆使 用SIMD前置碼(66H,F2H,F3H )之舊有SSE指令,這些 舊有SIMD前置碼係被編碼成SIMD前置碼編碼欄位;且 在運行時間係在被提供至解碼器的PLA (故PLA可不需 -32- 201243726 修改就執行這些舊有指令之舊有與EVEX格式)之前被擴 展成舊有SIMD前置碼。雖然較新的指令可直接使用 E VEX前置碼欄位的內容作爲運算碼延伸,特定實施例以 類似方式延伸以達一致性但允許由這些舊有SIMD前置碼 所指明之不同意義。一替代實施例可再設計PLA以支持2 位元SIMD前置碼編碼,且因此不需要延伸。
Alpha 欄位 752 (EVEX byte 3,bit[7] - EH;亦已知 爲 EVEX.EH、EVEX.rs、EVEX.RL、EVEX.write mask control、及EVEX.N ;亦顯示爲a)-如前所述,此欄 位爲內容特定。額外的說明將於後文描述。
Beta 欄位 754 (EVEX byte 3, bits[6:4] - SSS,亦已 知爲 EVEX.S2-0、EVEX.r2.〇、EVEX.rrl、EVEX.LLO、 EVEX.LLB ;亦顯示爲/5沒/3 )-如前所述,此欄位爲 內容特定。額外的說明將於後文描述。 REX’欄位810 -此爲REX’欄位的餘項且爲EVEX.V’ 位元欄位(EVEX Byte 3, bit[3] -V’)其可被使用以將延 伸的32暫存器組的較高16個或較低16個編碼。此位元 係以位元反向格式被儲存。1的値係被使用以對較低1 6 個暫存器編碼。換句話說,V’VVVV係藉由結合EVEX.V’ 、EVEX.vvvv 而形成。 寫入遮罩欄位 77〇 ( EVEX byte 3,bits[2:0] - kkk) -其內容指明寫入遮罩暫存器中暫存器的索引,如前所 述。於本發明之一實施例中,特定値EVEX.kkk = 000具有 暗示沒有寫入遮罩被使用於特定指令之特別行爲(此可以 -33- 201243726 許多方式來實施,包含使用硬體接線(hardwired )至所 有者或略過遮罩硬體之寫入遮罩)^ 實際運算碼欄位83 0 ( Byte 4) 此亦已知爲運算碼位元組。部份的運算碼係被指明於 此欄位。 MOD R/M 欄位 840 ( Byte 5 ) 修改符欄位 746 (MODR/M.MOD,bits[7-6] - MOD 欄 位842 )-如前所述,MOD欄位842的內容區分記憶體 存取與無記憶體存取操作。此欄位將於後文進一步說明。 MODR.M.reg 欄位 844,bits[5-3] - ModR/M.reg 欄位 的角色可槪述爲兩方面:ModR/M.reg將目的地暫存器運 算元或來源暫存器運算元編碼,或ModR/M.reg係被當作 運算碼延伸且不被使用以將任何指令運算元編碼。 MODR/M.r/m 欄位 846,bits[2-0] - ModR/M.r/m 欄位 的角色可包含以下:ModR/M.r/m將涉及記憶體位址的指 令運算元編碼,或ModR/M.r/m將目的地暫存器運算碼或 來源暫存器運算元編碼。 純量、索引、基本(SIB) Byte ( Byte 6) 純量欄位760 ( SIB.SS,bits[7-6]-如前所述,純量 欄位760的內容係被使用於記億體位址產生。此欄位將於 後文進一步說明。 -34- 201243726 SIB.xxx 854(bits[5-3]與 SIB.bbb 856(bits[2-0]) -這些欄位的內容已於暫存器索引Xxxx及Bbbb提及。 位移 Byte ( s) ( Byte 7 或 Bytes 7-10) 位移欄位 762A ( Bytes 7-1 0 )-當 MOD 欄位 842 包含10,位元組7-10爲位移欄位76 2A,且其與舊有32 位元位移(disp32 )作用相同且以位元組粒度來工作。 位移因子欄位762B ( Byte 7 )-當MOD欄位842 包含01,位元組7爲位移因子欄位762B。此欄位的位置 與舊有x86指令集8位元位移(disp8 )相同,其以位元 組粒度來工作。由於disp8爲符號延伸的(sign extended ),其位址僅可在-1 2 8與1 2 7位元組間偏移;根據64位 元組快取線路,disp8使用8位元,其可被設爲僅四個有 用的値-128、-64、0、與64;由於通常需要較大的範圍, disP32係被使用:然而,disp32需要4位元組。相對於 disp8與disp32,位移因子欄位762B爲disp8的再解譯( reinterpretation );當使用位移因子欄位762B,實際位移 係由位移因子欄位的內容乘上記憶體運算元存取的尺寸( N)來決定》此類型的位移亦稱爲disp8*N。此降低平均 指令長度(使用於位移的單一位元組但具有較大的多之範 圍)。此壓縮的位移係基於假設有效位移爲記憶體存取的 粒度之倍數,且因此,位址偏移的冗餘低階位元不需要被 編碼。換句話說,位移因子欄位7 6 2B代替舊有X86指令 集8位元位移。因此,位移因子欄位762B使用與χ8 6指 -35- 201243726 令集8位元位移相同的方式來編碼(故ModRM/SIB編碼 規則中沒有改變),僅有的例外是disp8係超過負荷至 disp8*N。換句話說,編碼規則或編碼長度中沒有改變, 僅有的改變在於硬體之位移値的解譯中(其需要將位移以 記憶體運算元的尺寸來純量以獲得按位元組的方式( byte-wise)之位址偏移)。 即時 即時欄位772運作如前所述。 例示暫存器架構-第9圖 第9圖爲根據本發明之一實施例的暫存器架構9 00之 方塊圖。暫存器架構之暫存器檔案與暫存器係如下所列: 向量暫存器檔案910 -於所示的實施例中,有32個 向量暫存器,其爲912位元寬;這些暫存器爲zmm〇至 zmm31。較低16zmm暫存器之較低階756位元係於暫存 器ymmO-16重叠。較低I6zmm暫存器之較低階128位元 (ymm暫存器之較低階128位元)係於暫存器xmmO-15 重疊。特定向量友善指令格式8 00於下表所示這些重疊暫 存器檔案運作。 -36- 201243726
可調整的向量長度 級別 操作 暫存器 — 不包含向量長度欄位 759B的指令樣板 A(第7A圖 ;U=0) 710 、 715 、 725 、 730 zmm暫存器(向量長度爲64位元 組) _ B(第7B圖 ;U=1) 712 zmm暫存器(向量長度爲64位元 組) 不包含向量長度欄位 759B的指令樣板 B(第7B圖 ;U=1) 717、727 zmm、ymm、或xmm暫存器(向纛 長度爲64位元組、32位元組、或 16位元組),根據向量長度欄位 759B 換句話說,向量長度欄位759B自最大長度與一或多 個其他較短長度間選擇,其中各較短長度爲先前長度的一 半;且不包含向量長度欄位75 9B的指令樣板以最大向量 長度運作。再者,於一實施例中,特定向量友善指令格式 8〇〇之級別B指令樣板運作於壓縮(packed)或純量( scalar )單/雙精度浮點資料及壓縮或純量整數資料。純量 操作爲執行於zmm/ymm/xmm暫存器中最低階資料元位置 之操作;最高階資料元位置係根據實施例與其在指令之前 留下者相同或係歸零。 寫入遮罩暫存器915 -於所示實施例中,有8個寫 入遮罩暫存器(kO至k7 ) ’各尺寸爲64位元。如前所述 ’於本發明之一實施例中,向量遮罩暫存器k0無法被使 用作爲寫入遮罩:當正常表示kO的編碼係被使用於寫入 遮罩’其選擇OxFFFF的固線式(hardwired)寫入遮罩, 對於該指令有效地去能寫入遮蔽。 多媒體延伸控制狀態暫存器(MXCSR ) 920 -於所 -37- 201243726 示實施例中,此32位元暫存器提供使用於浮點操作之狀 態與控制位元。 —般目的暫存器92 5 -於所示實施例中,有16個64 位元一般目的暫存器,其係連同現有x86位址模式一起使 用以定址記憶體運算元。這些暫存器的名稱爲RAX、RBX 、RCX、RDX、RBP、RSI、RDI、RSP、與 R8 至 R15 ° 延伸旗標(EFLAGS)暫存器93 0 -於所示實施例中 ,此3 2位元暫存器係被使用以記錄許多指令的結果。 浮點控制字元(FCW )暫存器93 5與浮點狀態字元( FSW)暫存器940 -於所示實施例中,這些暫存器係由 X87指令集延伸所使用以設定修整模式、例外遮罩與旗標 (FCW的情況下),及追蹤例外(FSW的情況下)。 純量浮點堆疊暫存器檔案(x87堆疊)945與其上別 名的MMX壓縮整數平暫存器檔案950 -於所示實施例中 ,x87堆疊爲在使用x87指令集延伸之32/64/80位元浮點 資料之使用以執行純量浮點操作之8資料元(eight-element) 堆疊; 而 MMX 暫存器 係被使 用以於 64 位元壓 縮整數資料中執行操作以及對於在MMX與XMM暫存器 之間執行的一些操作保持(hold)運算元。 區段暫存器955 -於所示實施例中,有16個16位元 暫存器被用以儲存使用於分段的位址產生(segmented address generation)之資料 ° RIP暫存器965 -於所示實施例中,此64位元暫存 器儲存指令指標》 -38- 201243726 本發明之替代實施例可使用較廣或較窄的暫存器。此 外,本發明之替代實施例可使用較多、較少或不同暫存器 檔案及暫存器。 例示正常(In-Order)處理器架構-第10A-10B圖 第10A-10B圖顯示例示處於可用狀態的處理器架構 之方塊圖。這些例示實施例針對隨寬向量處理器(VPU) 增加的可用狀態的CPU核心之多個例示進行迴避設計。 根據el2t應用,核心透過具有某些固定功能邏輯、記憶 體I/O介面、及其他需要的I/O邏輯之高帶寬互連網路來 通訊。舉例來說,此實施例作爲單獨(stand-alone) GPU 的實施將典型包含PCIe匯流排。 第10Α圖爲根據本發明實施例之單一 CPU核心連同 其連接晶粒上(on-die)互連網路1 0 02及其層級2 ( L2) 快取之本地子集1 004的方塊圖。指令解碼器1 000支援 x86指令集及包含特定向量友善指令格式800之延伸。雖 然於本發明之一實施例中(爲了簡化設計),純量單元 1 008與向量單元1 0 1 0使用分開的暫存器組(分別爲純量 暫存器1012與向量暫存器1014)且於其間傳送的資料係 被寫入記憶體然後從層級1 ( L1 )快取1 006被讀回,本 發明之替代實施例可使用不同方式(例如,使用單一暫存 器組或包含允許資料在兩個暫存器檔案之間傳送而不需要 被寫入與讀回之通訊路徑)。 L1快取1006允許低閒置(low-latency)存取以將記 -39 - 201243726 憶體快取至純量及向量單元中。連同向量友善指令格式中 的load-op指令,此意指L1快取1006可被如同延伸的暫 存器檔案般對待。此顯著地改善許多演算法的效能,尤其 是與逐出提示欄位752B。 L2快取的本地子集1 004爲部份的整體L2快取,其 係被分成分開的本地子集,每個CPU核心有一個。各 CPU具有直接存取路徑至其所擁有的L2快取的本地子集 1 004。由CPU核心所讀取的資料係被儲存於其L2快取的 子集10 04且可被迅速存取,與其他CPU存取其所擁有的 本地L2快取子集同時。由CPU核心所寫入的資料係被儲 存於其所擁有的L2快取子集1 004且係被從其他子集清除 (flush)(若需要)。環式網路確保共享檔案的結合( coherency)。 第1 0B圖爲根據本發明之實施例的第1 0A圖中部份 的CPU核心之展開圖。第10B圖包含L1資料快取1 006A (L1快取1004的一部份),以及更詳細的,關於向量單 元1010與向量暫存器1014。具體言之,向量單元1〇1〇 爲16寬(16-wide)向量處理器單元(VPU)(見16寬 ALU 1028),其執行整數、單精度浮點、及雙精度浮點 指令。VPU支援於記憶體輸入以拌和單元1〇2〇拌和暫存 器輸入、以數値轉換單元1 0 22 A-B進行數値轉換、及以 複製單元1 024進行複製。寫入遮罩暫存器1 〇26允許論斷 (predicating)結果的向量寫入。 暫存器資料可以許多方式被拌和’例如支援矩陣乘法 -40- 201243726 。來自記憶體的資料可被複製遍及VPU通道(lane)。此 在圖形與非圖形平行資料處理(其顯著地增加快取效率) 中爲一般操作。 環式網路爲雙向以允許代理器(例如CPU核心、L2 快取及其他邏輯方塊)在晶片中彼此通訊。各環式資料路 徑(data-path)在每個方向爲912位元。 例不不正常(Out-of-order)架構-第11圖 第 U圖爲根據本發明之實施例的例示不正常架構的 方塊圖。具體言之,第11圖顯示已知例示不正常架構, 其已被修改以結合向量友善指令格式及其執行。於第11 圖中,箭頭表示二或更多單元間的連接,而箭頭的方向表 示這些單元間資料流動的方向。第11圖包含耦接至執行 引擎單元1110與記億體單元1115之前端單元1105:執 行引擎單元1110進一步耦接至記憶體單元1115。 前端單元1105包含耦接至層級2(L2)分支預估單 元1122之層級1 (L1)分支預估單元1120。L1與L2分 支預估單元1120與1122係耦接至L1指令快取單元1124 。L 1指令快取單元1 1 24係耦接至指令轉譯後備緩衝區( translation lookaside buffer; TLB) 1126,其係進一部耦 接至指令提取及預解碼單元1128。指令提取及預解碼單 元1 1 2 8係耦接至指令佇列單元1 1 3 0,其係進一步耦接至 解碼單元1132。解碼單元1132包含一複雜解碼器單元 1134與三個簡易解碼器單元1136、1138、1140。解碼單 -41 - 201243726 元1132包含微式碼ROM單元1142。解碼單元1132可如 前於解碼階段部分所述般操作。L1指令快取單元1124進 一步耦接至記憶體單元Π15中之L2快取單元1148。指 令TLB單元11 26進一步耦接至記億體單元1115中之第 二層級TLB單元1 146 »解碼單元1 132、微式碼ROM單 元1142、及迴圈流偵測器單元1144係各耦接至執行引擎 單元1110中之更名/分配器單元1156。 執行引擎單元1110包含耦接至報廢單元1174與統一 排程器單元1158之更名/分配器單元1156。報廢單元 1174係進一步耦接至執行單元1160且包含再排序緩衝單 元1178。統一排程器單元1158係進一步耦接至實體暫存 器檔案單元1176,其係耦接至執行單元1160。實體暫存 器檔案單元1176包含向量暫存器單元1177A、寫入遮罩 暫存器單元1177B、純量暫存器單元1177C;三個暫存器 單元可提供向量暫存器1110、向量遮罩暫存器1115、及 一般目的暫存器1125;且實體暫存器檔案單元1176可包 含未顯示的額外暫存器檔案(例如,純量浮點堆鹽暫存器 檔案 Π45與其上別名的MMX壓縮整數平暫存器檔案 1150)。執行單元1160包含三個混合的純量及向量單元 1162、1164、1172:載入單元1166;儲存位址單元1168 ;儲存資料單元1170。載入單元1166、儲存位址單元 1168、及儲存資料單元1170各進一步耦接至記億體單元 1 1 1 5中的資料TLB單元Π 52 » 記憶體單元1115包含耦接至資料TLB單元1 152之 -42- 201243726 第二層級TLB單元1146。資料TLB單元1152係耦接至 L1資料快取單元1154。L1資料快取單元1154係進一步 耦接至L2快取單元1148。於某些實施例中,L2快取單 元1148係進一步耦接至在記億體單元1115內部及/或外 部之L3及較高快取單元1150。 藉由範例,例示不正常架構可實現程序管道如下:1 )指令提取及預解碼單元1128執行提取及長度解碼階段 ;2)解碼單元1132執行解碼階段;3)更名/分配器單元 1 1 56執行分配階段及更名階段;4 )統一排程器單元1 1 5 8 執行排程階段;5 )實體暫存器檔案單元1 1 76、再排序緩 衝單元1 1 78、及記憶體單元1 1 1 5執行暫存器讀取/記憶體 讀取階段1 9 3 0 ;執行單元1 160執行執行/資料轉換階段; 6)記億體單元1115及再排序緩衝單元1178執行寫回/記 憶體寫入階段I960: 7)報廢單元1174執行ROB讀取階 段:8)各種單元可被包含於例外處理階段;及9)報廢 單元1174及實體暫存器檔案單元1176執行確定(commit )階段。 例示單核心與多核心處理器 第16圖爲根據本發明實施例之單核心處理器及多核 心處理器協同積體記憶體控制器與圖形之方塊圖。第1 6 圖之實線方塊顯示處理器1 600,其具有單核心1 602A、 系統代理器1 6 1 0、—組一或多個匯流排控制器單元1 6 1 6 ,而選項的額外虛線方塊顯示替代處理器1600,其具有 -43- 201243726 多核心1 602A-N、系統代理器單元1610中之一組一或多 個積體記憶體控制器單元1614、及積體圖形邏輯1 608。 記憶體分層包含於核心中之一或多層的快取、一組一 或多個共享的快取單元1 6 06、及耦接至該組一或多個積 體記憶體控制器單元1 6 1 4之外部記憶體(未圖示)。該 組共享的快取單元1 606可包含一或多個中層(mid-level )快取,例如層級2 ( L2 )、層級3 ( L3 )、層級4 ( L4 )或其他層級的快取、最後層級的快取(LLC )、及/或 其組合。雖然於一實施例中環式互連單元1612互連至積 體圖形邏輯1608、該組共享的快取單元1 606、及系統代 理器1 6 1 0,替代實施例可使用任何數量的已知技術以用 於互連至該等單元。 於某些實施例中,一或多個核心1 602A-N能夠進行 多工作線(multi-threading)。系統代理器1610包含協 調與操作核心1602A-N的那些組件。系統代理器16 10可 包含例如電源控制單元(PCU)及顯示單元。PCU可爲或 包含調節核心1602Α-Ν與積體圖形邏輯1 608的電源狀態 所需之邏輯及組件。顯不單兀係用於驅動一或多個外部連 接的顯示器。 核心1602Α-Ν可爲同質或異質,根據架構及/或指 令集。舉例來說,某些核心1 602Α-Ν可爲正常的(例如 ,如同顯示於第1〇Α與10Β圖者),而其他者可爲不正 常的(例如,如同顯示於第Π圖者)。如另一範例,二 或更多核心1 602A-Ν能夠執行相同指令集,而其他者能 • 44- 201243726 夠執行該指令集或不同指令集之僅一子集。核心的至少一 者能夠執行於此所述的向量友善指令格式。 處理器可爲一般目的處理器,例如C〇reTM i3、i5、i7 、2 Duo 及 Quad、XeonTM、或 ItaniumTM 處理器,其係來 自Intel公司(Santa Clara,Calif)。替代地,處理器可 爲來自其他公司。處理器可爲特定目的處理器,例如網路 或通訊處理器、壓縮引擎、圖形處理器、協同處理器( co-processor)、嵌入式處理器(embedded processor)、 或類似物。處理器可被實現於一或多個晶片。處理器 1 6 00可爲一部份的及/或可被實現於一或多個基板,其 使用任何數量的程序技術,例如BiCMOS、CMOS、或 NM0S。 例示電腦系統與處理器 第12-14圖爲適合於包含處理器1600之例示系統, 而第15圖爲可包含一或多個核心1602之例示晶片上的系 統(SoC )。於膝上型電腦、桌上型電腦、手持PC ;個人 數位助理、工程工作站、伺服器、網路裝置、網路集線器 、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖 形裝置、視訊遊戲裝置、機頂盒(set-top box)、微控制 器、胞式電話、移動式媒體播放器、手持裝置、及各種其 適他 合其 爲或。 亦 \ 的 構及適 組器合 與理爲 計處般 設之一 統述係 系所置 他處裝 其此子 的如電 知合或 已結統 爲夠系 中能種 域,多 領一 1=口 許 置而之 裝般輯 子一 邏 電。行 他的執 -45- 201243726 現在參照第12圖,所顯示者爲根據本發明一實施例 之系統1200之方塊圖。系統12 00可包含一或多個處理器 1 2 1 0、1 2 1 5,其係耦接至圖形記憶體控制器集線器( graphics memory controller hub ; GMCH ) 1220。額外的 處理器1215之選項的本質係以虛線於第12圖中表示。 各處理器1210、1215可爲某版本的處理器1600»然 而,應了解的是,積體圖形邏輯與積體記億體控制單元未 必會存在於處理器1210、1215中。 第12圖顯示GMCH 1220可耦接至記憶體12 40,其 可爲例如動態隨機存取記億體(DRAM )。於至少一實施 例中,DRAM可與非揮發性快取相關聯。 GMCH 1 2 20可爲晶片組、或晶片組的部份。GMCH 1220可與處理器1210' 1215通訊並控制處理器1210、 1215與記憶體1 240間的互動。GMCH 1 220亦可作爲處理 器1 2 1 0、1 2 1 5與系統1 200之其他單元間的加速的匯流排 介面。於至少一實施例,GMCH 1 220經由多點下傳( multi-drop)匯流排(例如前端匯流排(frontside bus; FSB) ) 1295來與處理器1210、1215通訊》 再者,GMCH 1220係耦接至顯示器1245(例如平板 顯示器)。GMCH 1220可包含積體圖形加速器。GMCH 1 220係進一步耦接至輸入/輸出(I/O )控制器集線器( ICH) 1250,其可被使用以將各種週邊裝置耦接至系統 1 200。第12圖之實施例所示的範例爲外部圖形裝置1260 ,其可爲與另一週邊裝置1270 —起耦接至ICH 1250之分 -46- 201243726 散(discrete)圖形裝置。 替代地,額外的或不同的處理器亦可存在於系統 1200中。舉例來說,額外的處理器1215可包含與處理器 1210相同之額外的處理器、與處理器1210異質或不對稱 之額外的處理器、加速器(例如圖形加速器或數位訊號處 理(D S P )單元)、場效可程式化閘極陣列、或任何其他 處理器。實體資源1210、1215間可有各式各樣的不同’ 根據品質的度量之範圍(spectrum of metrics of merit) ,包含架構的、微架構的、熱的、電源消耗特性、及類似 物。這些不同可有效地表現其自身在處理元件 1210、 1 2 1 5間爲不對稱及異質性。於至少一實施例中,各種處 理元件1210、1215可置於相同晶粒封裝中。 現參照第1 3圖,所顯示者爲根據本發明一實施例之 第二系統1300之方塊圖。如第13圖所示,多處理器系統 1300爲點對點(point-to-point)互連系統,且包含與經 由點對點互連1 3 50而耦接之第一處理器1 3 70與第二處理 器1380。如第13圖所示,各處理器1370與1380可爲某 版本的處理器1600。 替代地,一或多個處理器1 3 70 ' 1 3 8 0可爲元件而非 處理器,例如加速器或場效可程式化閘極陣列。 雖然僅以兩個處理器1370、1380顯示,應瞭解的是 ’本發明之範疇不受限於此。於其他實施例中,一或多個 額外的處理元件可存在於給定處理器中。 處理器1370可進一步包含積體記憶體控制器集線器 -47- 201243726 (IMC) 1 3 72及點對點(P-P)介面1 3 76與1 3 78。同樣 地,第二處理器1380可包含IMC 1382與P-P介面1386 與1 3 8 8。處理器1 370、1 3 8 0可經由點對點(PtP )介面 1350使用PtP介面電路1378、1388來交換資料。如第13 圖所示,IMC 1 3 72與1 3 82將處理器耦接至各別記憶體, 即是記憶體1 342與記憶體1 344,其可爲區域地附接至各 別處理器之主記憶體的一部份。 處理器1370、1380可各別經由獨自的P-P介面1352 、1354使用點對點介面電路1376、1394、1386、1398而 與晶片組1 3 90交換資料。晶片組1 3 90亦可經由高效能圖 形介面1339而與高效能圖形電路1338交換資料。 共享的快取(未圖示)可被包含於兩處理器外部的處 理器中但還是經由P-P互連與處理器連接,使得若處理器 被置於低電源模式,則處理器的本地快取資訊之一者或兩 者可被儲存於共享的快取中。 晶片組1 390可經由介面1 396而被耦接至第一匯流排 1 3 1 6 »於一實施例中,第一匯流排1 3 1 6可爲週邊組件互 連(PCI )匯流排,或例如PCI Express匯流排或另一第 三代I/O互連匯流排之匯流排,儘管本發明之範疇不受限 於此。 如第13圖所示,各種I/O裝置1314可被耦接至第一 匯流排1 3 1 6,以及將第一匯流排1 3 1 6耦接至第二匯流排 1 3 20之匯流排橋接器1 3 1 8。於一實施例中,第二匯流排 1320可爲低針腳數(low pin count; LPC)匯流排。於一 -48- 201243726 實施例中’各種裝置可被耦接至第二匯流排1320’包含 例如鍵盤/滑鼠1322、通訊裝置1327、及資料儲存單元 1 32 8 (例如磁碟機或其他大量儲存裝置,其可包含碼 1330)。再者,音訊I/O 1 3 24可耦接至第二匯流排1320 。應注意的是,其他架構是可能的。例如,取代第1 3圖 之點對點架構,系統可實現多點下傳匯流排或其他此架構 〇 現參照第1 4圖,所顯示者爲根據本發明一實施例之 第三系統1400之方塊圖。第13與14圖中類似元件係以 類似元件符號表示,且第13圖的特定面向已於第14圖中 忽略,以避免模糊第14圖的其他面向。 第14圖顯示處理單元1 3 70、1 380可分別包含積體記 億體及 I/O 控制邏輯(control logic ; CL) 1372 與 1382。 於至少一實施例中,CL 1 3 72、1 3 82可包含記憶體控制器 集線器邏輯(IMC),如前所述者。此外,CL 1372、 1 3 8 2亦可包含I/O控制邏輯。第14圖顯示不但記憶體 13 42、13 44 係耦接至 CL 1372、1382,連 I/O 裝置 1414 亦耦接至CL 1372、1382。舊有I/O裝置1415係耦接至 晶片組1 3 9 0。 現參照第1 5圖’所顯示者爲根據本發明一實施例之 S 〇 C 1 5 0 〇之方塊圖。其他圖示中類似元件係以類似元件 符號表示。同樣的,虛線方塊爲在更先進的SoC中之選 項的特徵。於第15圖中,互連單元1502係耦接至:包含 一組一或多個核心1 602A-N及共享的快取單元1606之應 -49- 201243726 用處理器1 5 1 0 :系統代理器單元1 6 1 0 :匯流排控制器單 元1616;積體記憶體控制器單元1614; —組一或多個媒 體處理器152〇,其可包含積體圖形邏輯1 608、用以提供 靜態及/或視訊相機功能之影像處理器1 524、用以提供 硬體音訊加速之音訊處理器1526、及用以提供視訊編碼/ 解碼加速之及視訊處理器1 5 2 8 ;靜態隨機存取記憶體( SRAM )單元1 530 ;直接記憶體存取(direct memory access; DMA)單元1 53 2;及用以耦接一或多個外部顯示 器的顯示單元1 540。 於此揭露的機構之實施例可用硬體、軟體、韌體、或 此實施方式的組合加以實現。本發明之實施例可用執行於 包含至少一處理器、儲存系統(包含揮發性及非揮發性記 憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出 裝置之可程式化的系統之電腦程式或程式碼加以實現。 程式碼可被應用以輸入資料以執行於此說明的功能並 產生輸出資訊。輸出資訊可用已知方式被應用至一或多個 輸出裝置。關於此應用的目的,處理系統包含具有處理器 (例如數位訊號處理器(D S P )、微控制器、特殊應用積 體電路(ASIC)、或微處理器之任何系統。 程式碼可用高階程序或物件導向程式語言來實現以與 處理系統通訊。若有需要的話,程式碼亦可用組合或機械 語言來實現。事實上,於此所述之機構並不限於任何特定 程式語言的範疇。於任何情形下,語言可爲經編譯( compiled)或經解譯(interpreted)的語言。 -50- 201243726 至少一實施例之一或多個面向可藉由儲存於機器可讀 取的媒體中之代表指令來實現,其代表處理器中的各種邏 輯’當其被機器讀取時’會造成機器產生邏輯以執行於此 所述的技術。此代表(已知爲「IP核心(IP core )」) 可被儲存於實體的機器可讀取的媒體並被供應至許多客戶 或製造設施’以載入至實際上產生邏輯或處理器之製造機 器中。 此機器可讀取的儲存媒體可包含(但不限於)由機器 或裝置製造或形成之物件的非暫時、實體配置,包含儲存 媒體(例如硬碟、任何其他類型的磁碟,包含軟碟、光碟 (光碟唯讀記憶體(CD-ROM )、可抹寫光碟(CD-RW ) )、及磁光碟)、半導體裝置,例如唯讀記憶體(ROM ) 、隨機存取記憶體(RAM ),例如動態隨機存取記憶體( DRAM )、靜態隨機存取記憶體(SRAM )、可抹除可程 式化唯讀記億體(EPROM )、快閃記億體、電氣可抹除 可程式化唯讀記憶體(EEPROM )、磁性或光學卡、或適 合用於儲存電子指令之任何其他類型的媒體。 因此’本發明之實施例亦包含非暫時、實體機器可讀 取媒體,其含有向量友善指令格式的指令或含有設計資料 ,例如硬體描述語言( Hardware Description Language ; HDL ),其定義於此描述的結構、電路、設備、處理器及 /或系統特徵。某些實施例亦可爲程式產品。 於某些情形中’指令轉換器亦可被使用以從來源指令 集轉換指令至目標指令集。例如,指令轉換器可轉譯(例 -51 - 201243726 如,使用靜態二元轉譯、包含動態編譯之動態二元轉譯) 、變體(morph )、仿擬(emulate )、或轉換指令至一或 多個其他待由核心處理之指令。指令轉換器可被實現於軟 體、硬體、韌體、或其組合。指令轉換器可爲on處理器 、off處理器、或部分on及部分off處理器。 第17圖爲根據本發明之實施例對比軟體指令轉換器 之將以來源指令集表示的二進制指令轉換成以目標指令集 表示的二進制指令之使用的方塊圖。於所示實施例中,指 令轉換器爲軟體指令轉換器,替代地,指令轉換器可被實 現於軟體、硬體、韌體、或其多種組合。第17圖顯示在 高階語言1 702中的程式可使用x86編譯器1 704來編譯以 產生x86二進制碼1 706,其可由處理器與至少一x86指 令集核心1716固有地(natively )執行(其係假設某些被 編譯的指令係爲以向量友善指令格式表示)。具有至少一 x86指令集核心1716之處理器代表任何可執行與具有至 少一x86指令集核心的Intel處理器具有實質相同功能之 處理器,藉由相容地執行或在另一方面執行(1) Intel x8 6指令集核心之指令集的實質部分或(2)目標爲運行 於具有至少一 x86.指令集核心的Intel處理器之應用程式 或其他軟體之物件碼版本,以達成與具有至少一X86指令 集核心的Intel處理器有實質地相同結果。x86編譯器 1 7 04代表可操作以產生x86二進制碼1 706 (例如物件碼 )之編譯器,其無論有無額外的連接處理(linkage processing )皆可被執行於具有至少一 x86指令集核心 -52- 201243726 1716的處理器。同樣地,第 8A-C圖顯示在高階語言 1 702之程式可使用替代指令集編譯器1 708而被編譯以產 生替代指令集二進制碼1710,其可藉由處理器(無至少 一 x86指令集核心1 7 1 4 )而被固有地執行(例如,具有 執行 MIPS 指令集(MIPS Technologies of Sunnyvale, CA )之核心及/或執行 ARM指令集(ARM Holdings of Sunnyvale,CA)的處理器)。指令轉換器1712係被使用 以將x86二進制碼1706轉換成可藉由處理器(無χ86指 令集核心1 7 1 4 )而被固有地執行。此經轉換的碼並非有 可能與替代指令集二進制碼1 7 1 〇相同,因爲能做到的指 令轉換器係難以製成;然而,經轉換的碼將實現一般操作 且係由來自替代指令集之指令所組成。因此,指令轉換器 1712代表軟體、韌體、硬體、或其組合,透過仿擬、模 擬、或任何其他處理,允許處理器或其他電子裝置(不具 有x86指令集處理器或核心)執行χ86二進制碼1 706。 於此揭露的向量友善指令格式中的指令之特定操作可 藉由硬體組件而被執行且可被用機器可執行的指令(其係 被使用以造成或至少導致以指令加以程式化之電路或其他 硬體組件執行操作)而體現。電路可包含一般目的或特定 目的處理器、或邏輯電路,僅列出一些範例。操作亦可被 選項地藉由硬體與軟體的組合來執行。執行邏輯及/或處 理器可包含與機器指令或自該機器語言導出之一或多個控 制訊號有反應之特定或特殊的電路或其他邏輯,以儲存指 令特定的結果運算元。例如,此處揭露的指令之實施例可 -53- 201243726 被執行於第12-15圖中的一或多個系統而向量友善指令格 式中的指令之實施例可被儲存於待被執行於系統中之程式 碼。替代地,這些圖式之處理元件可利用此處所說明之詳 細的管路及/或架構(正常及不正常架構)之其中一者。 例如,正常架構之解碼單元可將指令解碼、將解碼過的指 令傳送到向量或純量單元等。 以上描述意欲說明本發明之較佳實施例。由上述說明 ,應亦爲顯而易知的是’尤其是在此成長快速且進一步改 善並非輕易預見之技術領域中,本發明可藉由所屬技術領 域中具有通常知識者在所述申請專利範圍與其等效之範疇 中於不超出本發明的原理在安排與詳細的情況下被修改。 例如’方法之一或多個操作可被結合或被進一步分開。 替代實施例 雖然實施例已被描述何者可固有地執行向量友善指令 格式,本發明之替代實施例可透過運行於執行不同指令集 的處理器(例如執行MIPS指令集的處理器(MIPS Technologies of Sunnyvale, CA)、執行 ARM 指令集的處 理器(ARM Holdings of Sunnyvale, CA))之仿擬層來執 行向量友善指令格式。同樣的,雖然圖式中的流程圖顯示 由本發明之特定實施例所執行的操作之特定順序,應了解 的是,該順序爲例示用(例如,替代實施例可用不同順序 、結合特定操作、重複特定操作等來執行操作)。 於以上說明中,關於解釋的目的,各種特定細節已被 -54- 201243726 說明以提供本發明之實施例之徹底的了解。然而,應了$ 的是,對於所屬技術領域中具有通常知識者而言,一或多 個其他實施例可被實現而不需這些特定細節中的某些部分 。所描述的特定實施例並非用以限制本發明,而是例示本 發明之實施例。本發明之範疇並非藉由以上所提供的特$ 範例所限制,而係由後附申請專利範圍決定。 【圖式簡單說明】 本發明係參考後附圖式加以例示但不受限於後附圖式 ,其中相同的元件係以相同的元件符號表示,且其中: 第1圖顯示混合指令的執行之範例。 第2圖顯示混合指令的執行之另一範例。 第3圖顯示混合指令的虛擬碼之範例。 第4圖顯示混合指令於處理器中的使用之實施例。 第5圖顯示用以處理混合指令的方法之實施例。 第6圖顯示用以處理混合指令的方法之實施例。 第7A圖爲方塊圖,顯示根據本發明實施例之一般向 量友善指令格式及其等級A指令樣板。 第7B圖爲方塊圖,顯示根據本發明實施例之一般向 量友善指令格式及其等級B指令樣板。 第8A-C圖顯示根據本發明實施例之例示特定向量友 善指令格式。 第9圖爲根據本發明之一實施例的暫存器架構之方塊 圖。 -55- 201243726 第10A圖爲根據本發明之實施例的單核CPU (其連 接至晶粒上互連網路且具有層級2 ( L2 )快取的本地子集 )之方塊圖。 第10B圖爲根據本發明之實施例的第10A圖中部份 的C P U核心之展開圖》 第11圖爲根據本發明之實施例的例示不正常架構的 方塊圖。 第1 2圖爲根據本發明之一實施例的系統的方塊圖。 第13圖爲根據本發明之一實施例的第二系統的方塊 圖。 第14圖爲根據本發明之一實施例的第三系統的方塊 圖。 第15圖爲根據本發明之一實施例的SoC的方塊圖。 第16圖爲根據本發明實施例之單核心處理器及多核 心處理器協同積體記憶體控制器與圖形之方塊圖。 第17圖爲根據本發明之實施例對比軟體指令轉換器 之將以來源指令集表示的二進制指令轉換成以目標指令集 表示的二進制指令之使用的方塊圖。 【主要元件符號說明】 700:—般向量友善指令格式 7〇5 :無記憶體存取 7 1 〇 :無記憶體存取、完整修整控制類型操作 7 1 2 :無記憶體存取、寫入遮罩控制、部分修整控制 -56- 201243726 類型操作 7 1 5 :無記憶體存取、資料轉換類型操作 717 :無記憶體存取、寫入遮罩控制、vsize類型操作 720 :記億體存取 725 :記憶體存取、時間性 73 0 :記憶體存取、非時間性 740 :格式欄位 742 :基本操作欄位 744 :暫存器索引欄位 746 :修改符欄位 746A :無記憶體存取 750 :增益操作欄位 752 : alpha 欄位 752A : rs 欄位 7 5 2 B :逐出提示欄位 7 5 2 B . 1 :時間性 7 52B.2 :非時間性 752C :寫入遮罩控制(Z )欄位 754 : beta 欄位 754A :修整控制欄位 754B :資料轉換欄位 754C :資料控制欄位 756 :抑制所有浮點例外欄位 75 7A : RL 欄位 -57- 201243726 7 5 7A. 1 :修整 7 5 7A.2 :向量長度 7 57B :廣播欄位 75 8 :修整操作控制欄位 75 9A :修整操作控制欄位 759B:向量長度欄位 7 6 0 :純量欄位 7 6 2 A :位移欄位 762B :位移因子欄位 764 :資料元寬度欄位
76 8 :級別欄位 7 6 8 A :級別A
7 6 8 B :級別B 770 :寫入遮罩欄位 772 :即時欄位 774 :完整運算碼欄位 800:特定向量友善指令格式 802 : EVEX前置碼 8 05 : REX 欄位 8 1 0 : REX'欄位 8 1 5 :運算碼對映欄位 820 : EVEX.vvvv 825:前置碼編碼欄位 830:實際運算碼欄位 -58- 201243726 840 : MOD R/M 欄位 8 42 : MOD 欄位 844: MODR.M.reg 欄位 846 : MODR/M.r/m 欄位 854: SIB.xxx 856 : SIB.bbb 900 :暫存器架構 910:向量暫存器檔案 915:寫入遮罩暫存器 920 :多媒體延伸控制狀態暫存器 925 :—般目的暫存器 930 :延伸旗標暫存器 93 5 :浮點控制字元暫存器 940 :浮點狀態字元暫存器 945 :純量浮點堆疊暫存器檔案 9 50 : MMX壓縮整數平暫存器檔案 95 5 :區段暫存器 965 : RIP暫存器 1 000 :指令解碼器 1 002 :晶粒上互連網路 1 004 : L2快取之本地子集 1 006 : L1 快取 1006A: L1資料快取 1 0 0 8 :純量單元 -59 - 201243726 1 0 1 0 :向量單元 1 0 1 2 :純量暫存器 1 0 1 4 :純量暫存器 1 020 :拌和單元 1 022Α :數値轉換單元 1 022Β :數値轉換單元 1 024 :複製單元 1 026 :寫入遮罩暫存器 1 028: 1 6 寬向量 ALU 1 105 :前端單元 1 1 10 :執行引擎單元 1 1 1 5 :記憶體單元 1 120 : L1分支預估單元 1 122 : L2分支預估單元 1 124 : L1指令快取單元 1 126 :指令轉譯後備緩衝區 1128:指令提取及預解碼單元 1 130 :指令佇列單元 1 132 :解碼單元 1134:複雜解碼器單元 1136:簡易解碼器單元 1138:簡易解碼器單元 1 140 :簡易解碼器單元 1 142 :微式碼ROM單元 -60- 201243726 1 144 :迴圈流偵測器單元 1 146 :第二層級TLB單元 1 148 : L2快取單元 1 150 : L3及較高快取單元 1152:資料TLB單元 1 1 5 4 : L 1資料快取單元 1156 :更名/分配器單元 1 1 5 8 :統一排程器單元 1 1 6 0 :執行單元 1 162 :混合的純量及向量單元 1164:混合的純量及向量單元 1 1 6 6 :載入單元 1168:儲存位址單元 1 1 7 0 :儲存資料單元 1172:混合的純量及向量單元 1 174 :報廢單元 1176 :實體暫存器檔案單元 1 177A :向量暫存器單元 1177B:寫入遮罩暫存器單元 1177c :純量暫存器單元 1178:再排序緩衝單元 1200 :系統 1 2 1 0 :處理器 1215 :處理器 -61 - 201243726 1 22 0 :圖形記憶體控制器集線器 1 240 :顯示器 1 245 :顯示器 1 250 :輸入/輸出控制器集線器 1 260 :外部圖形裝置 1 270 :週邊裝置 1 3 00 :第二系統 1 3 1 4 : I/O 裝置 1 3 1 6 :第一匯流排 1 3 1 8 :匯流排橋接器 1 3 2 0 :第二匯流排 1 3 22 :鍵盤/滑鼠
1 3 24 :音訊 I/O 1 3 27 :通訊裝置 1 3 2 8 :資料儲存單元 1330:碼 1 3 3 2 :記憶體 1 3 3 4 :記憶體 1338:尚效能圖形電路 1 3 3 9 :高效能圖形介面 1 342 :記憶體 1 344 :記憶體 1 3 5 0 :點對點互連 1 3 70 :處理器 -62- 201243726 1 3 72 :積體記憶體控制器集線器 1 3 7 2 :控制邏輯 1 3 76 :點對點介面 1 3 7 8 :點對點介面 1 3 8 0 :處理器 1 3 82 :積體記億體控制器集線器 1 3 8 2 :控制邏輯 1 3 8 6 :點對點介面 1 3 8 8 :點對點介面 1 3 9 0 :晶片組 1 3 96 :介面 1 3 9 8 :點對點介面 1400 :系統 1414 : I/O 裝置 141 5 :舊有I/O裝置 1500:晶片上之系統 1 502 :互連單元 1510 :應用處理器 1 520 :媒體處理器 1 524 :影像處理器 1 526 :音訊處理器 1 5 2 8 :視訊處理器 1 53 0 :靜態隨機存取記憶體單元 1 5 3 2 :直接記憶體存取單元 -63- 201243726 1 540 :顯示單元 1 600 :處理器 1 6 0 2 A :核心 1 6 0 2 N :核心 1 604A :快取單元 1 6 04N :快取單元 1606:共享的快取單元 1 608 :積體圖形邏輯 1 6 1 0 :系統代理器單元 1612:環式互連單元 1 6 1 4 :積體記憶體控制器單元 1 6 1 6 :匯流排控制器單元 1 702 :高階語言 1704: x86編譯器 1 706 : x86二進制碼 1 708 :替代指令集編譯器 1 7 1 0 :替代指令集二進制碼 1 7 1 2 :指令轉換器 1714 :無x86指令集核心的處理器 1716 :具有至少一 x86指令集核心的處理器 -64-

Claims (1)

  1. 201243726 七、申請專利範圍: 1. 一種於電腦處理器中執行混合指令的方法,包含 提取該混合指令,其中該混合指令包含一寫入罩運算 元、一目的地運算元、一第一來源運算元、及一第二來源 運算元; 對所提取的該混合指令進行解碼; 執行經解碼的該混合指令以使用該第一與第二來源運 算元之間的該寫入罩之對應的位元位置作爲選擇器來對該 第一與第二來源運算元之資料元進行資料元對元選擇( data element-by-element selection );及 將所選擇的資料元儲存至在目的地的對應位置處之目 的地。 2-如申請專利範圍第1項之方法,其中該寫入罩爲 1 6位元暫存器。 3. 如申請專利範圍第1項之方法,其中該寫入罩爲 1 6位元暫存器且僅八個最小有效位元位置係被使用作爲 選擇器且資料元的尺寸爲64位元。 4. 如申請專利範圍第1項之方法,其中該第一來源 爲5 1 2位元暫存器且該第二來源爲記憶體。 5. 如申請專利範圍第4項之方法,其中該第二來源 的資料元係從16位元提升轉換(upC〇nvert)爲32位元 〇 6-如申請專利範圍第1項之方法,其中該第一與第 3 -65- 201243726 二來源爲512位元暫存器。 7.如申請專利範圍第1項之方法,其中該判定係對 於該寫入罩之各位元位置來平行完成。 8·如申請專利範圍第1項之方法,其中該第一與第 二來源運算元爲512位元暫存器。 9.如申請專利範圍第1項之方法,其中該第二來源 運算元爲512位元記憶體位置且來自該記憶體位置的資料 元係在該等來源的序連連接(concatenation)之前被載入 暫時的512位元暫存器。 10·如申請專利範圍第1項之方法,其中該資料元爲 3 2位元。 11. 一種方法,包含: 回應包含一第一與第二來源運算元、一目的地運算元 、一寫入罩運算元之混合指令, 於一第一位元位置處評估該寫入罩的値, 判定是否於該第一位元位置處之値表示該第一來 源之對應第一資料元應被儲存於該目的地之對應第—資料 元位置處或是否該第二來源之對應第一資料元應被儲存於 該目的地之對應第一資料元位置處,及 將由該第一位元位置處之該値表示之該第一資料 元儲存於該目的地之該第一資料元位置中。 12. 如申請專利範圍第1 1項之方法,更包含: 於一第二位元位置處評估該寫入罩的値, 判定是否於該第二位元位置處之値表示該第—來源之 -66- 201243726 對應第二資料元應被儲存於該目的地之對應第二資料元位 置處或是否該第二來源之對應第二資料元應被儲存於該目 的地之對應第二資料元位置處,及 將由該第二位元位置處之該値表示之該第二資料元儲 存於該目的地之該第二資料元位置中。 13. 如申請專利範圍第12項之方法,更包含: 判定該寫入罩之所有位元位置已被評估,表示該混合 指令的結束。 14. 如申請專利範圍第11項之方法,其中該寫入罩 爲1 6位元暫存器。 I5·如申請專利範圍第11項之方法,其中該寫入罩 爲1 6 fii兀暫存器且僅八個最小有效位元位置係被使用作 爲選擇器且資料元的尺寸爲64位元》 16. 如申請專利範圍第11項之方法,其中該第一來 源爲512位元暫存器且該第二來源爲記憶體。 17. 如申請專利範圍第14項之方法,其中該第二來 源的資料元係從16位元提升轉換爲32位元。 18. 如申請專利範圍第U項之方法,其中該第一與 第二來源爲512位元暫存器。 19. 如申請專利範圍第11項之方法,其中該第—與 第二來源運算元爲512位元暫存器。 20. 如申請專利範圍第1 1項之方法,其中該第二來 源運算元爲5 1 2位元記憶體位置且來自該記憶體位置的資 料元係在該等來源的序連連接之前被載入暫時的512位元 -67- 201243726 暫存器。 21. —種裝置,包含: 一硬體解碼器’對混合指令進行解碼,其中一 令包含一寫入罩運算元、一目的地運算元、一第一 算元、及一第二來源運算元; 執行邏輯,使用該第一與第二來源運算元之間 入罩之對應的位元位置作爲選擇器來對該第一與第 運算元之資料元進行資料元對元選擇並將所選擇的 儲存至在目的地的對應位置處之目的地。 22. 如申請專利範圍第21項之裝置,更包含: 16位元寫入罩暫存器,儲存該寫入罩;及 至少兩個512位元暫存器,儲存該第一與第二 資料元。 對準指 來源運 的該寫 二來源 資料元 來源之 -68 -
TW100146254A 2011-04-01 2011-12-14 使用寫入罩混合兩來源運算元至單一目的地之系統、裝置及方法 TWI470554B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/078,864 US20120254588A1 (en) 2011-04-01 2011-04-01 Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask

Publications (2)

Publication Number Publication Date
TW201243726A true TW201243726A (en) 2012-11-01
TWI470554B TWI470554B (zh) 2015-01-21

Family

ID=46928898

Family Applications (2)

Application Number Title Priority Date Filing Date
TW103140467A TWI552080B (zh) 2011-04-01 2011-12-14 處理器
TW100146254A TWI470554B (zh) 2011-04-01 2011-12-14 使用寫入罩混合兩來源運算元至單一目的地之系統、裝置及方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW103140467A TWI552080B (zh) 2011-04-01 2011-12-14 處理器

Country Status (9)

Country Link
US (3) US20120254588A1 (zh)
JP (3) JP5986188B2 (zh)
KR (1) KR101610691B1 (zh)
CN (3) CN106681693B (zh)
BR (1) BR112013025409A2 (zh)
DE (1) DE112011105122T5 (zh)
GB (2) GB2503829A (zh)
TW (2) TWI552080B (zh)
WO (1) WO2012134560A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI514269B (zh) * 2011-12-23 2015-12-21 Intel Corp 用於大整數算術之向量指令的設備與方法
US9395990B2 (en) 2013-06-28 2016-07-19 Intel Corporation Mode dependent partial width load to wider register processors, methods, and systems

Families Citing this family (66)

* 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
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
ES2943248T3 (es) 2011-04-01 2023-06-12 Intel Corp Formato de instrucción compatible con vectores y ejecución del mismo
CN104011670B (zh) 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
US9600285B2 (en) 2011-12-22 2017-03-21 Intel Corporation Packed data operation mask concatenation processors, methods, systems and instructions
US20140223138A1 (en) * 2011-12-23 2014-08-07 Elmoustapha Ould-Ahmed-Vall Systems, apparatuses, and methods for performing conversion of a mask register into a vector register.
US9632782B2 (en) * 2012-03-30 2017-04-25 Intel Corporation Method and apparatus to process SHA-2 secure hashing algorithm
US10146544B2 (en) 2012-03-30 2018-12-04 Intel Corporation Method and apparatus to process SHA-2 secure hashing algorithm
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9411593B2 (en) * 2013-03-15 2016-08-09 Intel Corporation Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks
US9207941B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Systems, apparatuses, and methods for reducing the number of short integer multiplications
US9477467B2 (en) 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9081700B2 (en) * 2013-05-16 2015-07-14 Western Digital Technologies, Inc. High performance read-modify-write system providing line-rate merging of dataframe segments in hardware
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
WO2015096001A1 (en) * 2013-12-23 2015-07-02 Intel Corporation System-on-a-chip (soc) including hybrid processor cores
KR101826707B1 (ko) 2014-03-27 2018-02-07 인텔 코포레이션 마스킹된 결과 요소들로의 전파를 이용하여 연속 소스 요소들을 마스킹되지 않은 결과 요소들에 저장하기 위한 프로세서, 방법, 시스템 및 명령어
EP3123300A1 (en) 2014-03-28 2017-02-01 Intel Corporation Processors, methods, systems, and instructions to store source elements to corresponding unmasked result elements with propagation to masked result elements
US9513913B2 (en) * 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
CN106922186A (zh) * 2014-12-17 2017-07-04 英特尔公司 用于执行自旋‑循环跳转的装置和方法
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160188341A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused add-add instructions
US20160188333A1 (en) * 2014-12-27 2016-06-30 Intel Coporation Method and apparatus for compressing a mask value
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
EP3125108A1 (en) * 2015-07-31 2017-02-01 ARM Limited Vector processing using loops of dynamic vector length
US9830150B2 (en) * 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10152321B2 (en) * 2015-12-18 2018-12-11 Intel Corporation Instructions and logic for blend and permute operation sequences
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
JP6544363B2 (ja) 2017-01-24 2019-07-17 トヨタ自動車株式会社 内燃機関の制御装置
WO2018174934A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and apparatus for matrix move
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
US11816483B2 (en) 2017-12-29 2023-11-14 Intel Corporation Systems, methods, and apparatuses for matrix operations
US11809869B2 (en) 2017-12-29 2023-11-07 Intel Corporation Systems and methods to store a tile register pair to memory
US11669326B2 (en) 2017-12-29 2023-06-06 Intel Corporation Systems, methods, and apparatuses for dot product operations
US11093247B2 (en) 2017-12-29 2021-08-17 Intel Corporation Systems and methods to load a tile register pair
US11023235B2 (en) 2017-12-29 2021-06-01 Intel Corporation Systems and methods to zero a tile register pair
US11789729B2 (en) 2017-12-29 2023-10-17 Intel Corporation Systems and methods for computing dot products of nibbles in two tile operands
US10664287B2 (en) 2018-03-30 2020-05-26 Intel Corporation Systems and methods for implementing chained tile operations
US11093579B2 (en) 2018-09-05 2021-08-17 Intel Corporation FP16-S7E8 mixed precision for deep learning and other algorithms
US10970076B2 (en) 2018-09-14 2021-04-06 Intel Corporation Systems and methods for performing instructions specifying ternary tile logic operations
US11579883B2 (en) 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US10866786B2 (en) 2018-09-27 2020-12-15 Intel Corporation Systems and methods for performing instructions to transpose rectangular tiles
US10719323B2 (en) 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions
US10990396B2 (en) 2018-09-27 2021-04-27 Intel Corporation Systems for performing instructions to quickly convert and use tiles as 1D vectors
US10963256B2 (en) 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
US10929143B2 (en) 2018-09-28 2021-02-23 Intel Corporation Method and apparatus for efficient matrix alignment in a systolic array
US10896043B2 (en) 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
US10929503B2 (en) 2018-12-21 2021-02-23 Intel Corporation Apparatus and method for a masked multiply instruction to support neural network pruning operations
US11886875B2 (en) 2018-12-26 2024-01-30 Intel Corporation Systems and methods for performing nibble-sized operations on matrix elements
US11294671B2 (en) 2018-12-26 2022-04-05 Intel Corporation Systems and methods for performing duplicate detection instructions on 2D data
US20200210517A1 (en) 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
US10922077B2 (en) 2018-12-29 2021-02-16 Intel Corporation Apparatuses, methods, and systems for stencil configuration and computation instructions
US10942985B2 (en) 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions
US11269630B2 (en) 2019-03-29 2022-03-08 Intel Corporation Interleaved pipeline of floating-point adders
US11016731B2 (en) 2019-03-29 2021-05-25 Intel Corporation Using Fuzzy-Jbit location of floating-point multiply-accumulate results
US11175891B2 (en) 2019-03-30 2021-11-16 Intel Corporation Systems and methods to perform floating-point addition with selected rounding
US10990397B2 (en) 2019-03-30 2021-04-27 Intel Corporation Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
US11403097B2 (en) 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
US11334647B2 (en) 2019-06-29 2022-05-17 Intel Corporation Apparatuses, methods, and systems for enhanced matrix multiplier architecture
US11714875B2 (en) 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator
US11972230B2 (en) 2020-06-27 2024-04-30 Intel Corporation Matrix transpose and multiply
US11941395B2 (en) 2020-09-26 2024-03-26 Intel Corporation Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
JPS57209570A (en) * 1981-06-19 1982-12-22 Fujitsu Ltd Vector processing device
JPS6059469A (ja) * 1983-09-09 1985-04-05 Nec Corp ベクトル処理装置
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
JPH0193868A (ja) * 1987-10-05 1989-04-12 Nec Corp データ処理装置
US5487159A (en) * 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US20020002666A1 (en) * 1998-10-12 2002-01-03 Carole Dulong Conditional operand selection using mask operations
US6446198B1 (en) * 1999-09-30 2002-09-03 Apple Computer, Inc. Vectorized table lookup
US6523108B1 (en) * 1999-11-23 2003-02-18 Sony Corporation Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string
TW552556B (en) * 2001-01-17 2003-09-11 Faraday Tech Corp Data processing apparatus for executing multiple instruction sets
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US7212676B2 (en) * 2002-12-30 2007-05-01 Intel Corporation Match MSB digital image compression
US7243205B2 (en) * 2003-11-13 2007-07-10 Intel Corporation Buffered memory module with implicit to explicit memory command expansion
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
DE602004031719D1 (de) * 2004-07-01 2011-04-21 Texas Instruments Inc Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus
US7703088B2 (en) * 2005-09-30 2010-04-20 Intel Corporation Compressing “warm” code in a dynamic binary translation environment
US7644198B2 (en) * 2005-10-07 2010-01-05 International Business Machines Corporation DMAC translation mechanism
US20070186210A1 (en) * 2006-02-06 2007-08-09 Via Technologies, Inc. Instruction set encoding in a dual-mode computer processing environment
US7555597B2 (en) * 2006-09-08 2009-06-30 Intel Corporation Direct cache access in multiple core processors
US20080077772A1 (en) * 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
JP4785142B2 (ja) * 2007-01-31 2011-10-05 ルネサスエレクトロニクス株式会社 データ処理装置
US8001446B2 (en) * 2007-03-26 2011-08-16 Intel Corporation Pipelined cyclic redundancy check (CRC)
US8667250B2 (en) * 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
GB2456775B (en) * 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
US20090320031A1 (en) * 2008-06-19 2009-12-24 Song Justin J Power state-aware thread scheduling mechanism
US8209525B2 (en) * 2008-08-15 2012-06-26 Apple Inc. Method and apparatus for executing program code
US8036115B2 (en) * 2008-09-17 2011-10-11 Intel Corporation Synchronization of multiple incoming network communication streams
US7814303B2 (en) * 2008-10-23 2010-10-12 International Business Machines Corporation Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively
US8327109B2 (en) * 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI514269B (zh) * 2011-12-23 2015-12-21 Intel Corp 用於大整數算術之向量指令的設備與方法
US9395990B2 (en) 2013-06-28 2016-07-19 Intel Corporation Mode dependent partial width load to wider register processors, methods, and systems

Also Published As

Publication number Publication date
KR20130140160A (ko) 2013-12-23
JP6408524B2 (ja) 2018-10-17
CN106681693B (zh) 2019-07-23
CN109471659A (zh) 2019-03-15
CN103460182B (zh) 2016-12-21
BR112013025409A2 (pt) 2016-12-20
JP2019032859A (ja) 2019-02-28
WO2012134560A1 (en) 2012-10-04
US20120254588A1 (en) 2012-10-04
JP5986188B2 (ja) 2016-09-06
GB201816774D0 (en) 2018-11-28
TWI470554B (zh) 2015-01-21
GB2577943A (en) 2020-04-15
DE112011105122T5 (de) 2014-02-06
KR101610691B1 (ko) 2016-04-08
JP2014510350A (ja) 2014-04-24
CN109471659B (zh) 2024-02-23
GB201317160D0 (en) 2013-11-06
CN103460182A (zh) 2013-12-18
TW201531946A (zh) 2015-08-16
US20190108029A1 (en) 2019-04-11
GB2503829A (en) 2014-01-08
US20190108030A1 (en) 2019-04-11
TWI552080B (zh) 2016-10-01
JP2017010573A (ja) 2017-01-12
CN106681693A (zh) 2017-05-17

Similar Documents

Publication Publication Date Title
TW201243726A (en) Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
JP6109910B2 (ja) メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法
TWI610229B (zh) 用於向量廣播及互斥或和邏輯指令的設備與方法
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
JP5764257B2 (ja) レジスタをアライメントするためのシステム、装置、および方法
TWI489382B (zh) 改良的萃取指令背景之設備及方法
TWI582690B (zh) 用於滑動視窗資料存取之設備及方法
TWI489383B (zh) 遮蔽排列指令的裝置及方法
TWI552072B (zh) 執行置換運算的處理器及具有該處理器的電腦系統
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
KR20170033890A (ko) 비트 셔플 프로세서, 방법, 시스템, 및 명령어
TWI481991B (zh) 改良型排列指令之裝置及方法
TWI526930B (zh) 用以複製及遮蔽資料結構之設備及方法
CN111831334A (zh) 经改进的插入指令的装置和方法
TWI644256B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
TW201732553A (zh) 用於保留位元的強制執行的裝置及方法
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法

Legal Events

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