TWI489382B - 改良的萃取指令背景之設備及方法 - Google Patents

改良的萃取指令背景之設備及方法 Download PDF

Info

Publication number
TWI489382B
TWI489382B TW101147489A TW101147489A TWI489382B TW I489382 B TWI489382 B TW I489382B TW 101147489 A TW101147489 A TW 101147489A TW 101147489 A TW101147489 A TW 101147489A TW I489382 B TWI489382 B TW I489382B
Authority
TW
Taiwan
Prior art keywords
vector
instruction
group
bit
input
Prior art date
Application number
TW101147489A
Other languages
English (en)
Other versions
TW201346734A (zh
Inventor
Elmoustapha Ould-Ahmed-Vall
Robert Valentine
Jesus Corbal
Bret Toll
Mark J Charney
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 TW201346734A publication Critical patent/TW201346734A/zh
Application granted granted Critical
Publication of TWI489382B publication Critical patent/TWI489382B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Description

改良的萃取指令背景之設備及方法
本發明一般係有關計算科學之領域;及,更明確地,有關改良的萃取指令背景之設備及方法。
圖1顯示於半導體晶片上實施有邏輯電路之處理核心100的高階圖。該處理核心包括一管線101。管線係由多個級所組成,該些級各設計成在欲完整地執行程式碼指令所需的多步驟程序中履行一特定步驟。這些通常包括至少:1)指令提取及解碼;2)資料提取;3)執行;4)寫回。執行級履行由一被提取並解碼於先前級(例如,於上述步驟1))的指令所識別的特定操作在其由相同指令所識別並被提取於另一先前級(例如,上述步驟2))的資料上。所被操作之資料通常被提取自(通用)暫存器儲存空間102。於該操作之完成時所產生的新資料通常亦被「寫回」至暫存器儲存空間(例如,於上述級4))。
與執行級相關的邏輯電路通常係由多個「執行單元」或「功能單元」103_1至103_N所構成,該些「執行單元」或「功能單元」103_1至103_N各被設計成履行其本身獨特的操作子集(例如,第一功能單元履行整數數學操作、第二功能單元履行浮點指令、第三功能單元履行載入/儲存操作自/至快取/記憶體,等等)。由所有功能單元所履行之所有操作的集合係相應於由處理核心100所支援之 「指令集」。
以下兩種類型的處理器架構被廣泛地認識於電腦科學之領域:「純量」及「向量」。純量處理器被設計成執行其在單一資料集上履行操作之指令,而向量處理器被設計成執行其在多個資料集上履行操作之指令。圖2A及2B提出一比較範例,其展示介於純量處理器與向量處理器之間的基本差異。
圖2A顯示一純量AND指令之範例,其中單一運算元集(A與B)被AND一起以產生獨特(或「純量」)結果C(亦即,AB=C)。反之,圖2B顯示一向量AND指令之範例,其中兩運算元集(A/B與D/E)被個別地平行AND一起以同時地產生向量結果C、F(亦即,A.AND.B=C及D.AND.E=F)。就術語而言,「向量」為具有多個「元件」之資料元件。例如,向量V=Q、R、S、T、U具有五個不同元件:Q、R、S、T及U。範例向量V之「大小」為五(因為其具有五個元件)。
圖1亦顯示不同於通用暫存器空間102之向量暫存器空間104的存在。明確地,通用暫存器空間102被額定地用以儲存純量值。如此一來,當任一執行單元履行純量操作時,其係額定地使用從(並將結果寫回至)通用暫存器空間102所呼叫的運算元。反之,當任一執行單元履行向量操作時,其係額定地使用從(並將結果寫回至)向量暫存器空間107所呼叫的運算元。記憶體之不同區可類似地配置給純量值及向量值之儲存。
亦注意於功能單元103_1至103_N之個別輸入及輸出上的遮蔽邏輯104_1至104_N及105_1至105_N的存在。於各個實施方式中,僅有這些層之一者被實際地實施-雖然其並非嚴格的條件。針對任何利用遮蔽之指令,輸入遮蔽邏輯104_1至104_N及/或輸出遮蔽邏輯105_1至105_N可被用以控制哪些元件被有效率地操作於該向量指令。於此,一遮罩向量被讀取自一遮罩暫存器空間106(例如,連同讀取自向量暫存器儲存空間107之輸入資料向量)且被提出給遮罩邏輯104、105層之至少一者。
於執行向量程式碼之過程,各向量指令無需要求完整的資料字元。例如,某些指令之輸入向量可僅為8元件,其他指令之輸入向量可為16元件,其他指令之輸入向量可為32元件,等等。遮蔽層104/105因此被用以識別一請求特定指令之完整向量資料字元的一組元件,以使涵蓋指令之不同向量大小生效。通常,針對各向量指令,遮罩暫存器空間106中所保持的特定遮罩型態係由指令呼叫出來、從遮罩暫存器空間提取並提供至遮蔽層104/105之任一者或兩者以「致能」該特定向量操作之正確組元件。
圖3A至3E顯示習知技術VINSERT、VEXTRACT及VPERMUTE指令之邏輯操作。注意:相較於其確實名稱該些指令之名稱已被縮寫或簡化。
圖3A顯示習知技術VINSERT指令之邏輯操作。如圖3A中所見,第一輸入運算元相應於128位元之資訊 301_A而第二輸入運算元相應於256位元向量302_A。第三、即刻輸入運算元(未顯示)係指明256位元向量302_A之哪一半(下半或右半)將被取代以第一輸入運算元之128位元資訊301_A。所得的結構被儲存於具有256位元之大小的目的地/結果向量。128位元之資訊301、輸入向量302_A及結果為浮點值,其可為32位元或64位元之大小。
圖3B顯示習知技術VEXTRACT指令之邏輯。如圖3B中所見,第一輸入運算元相應於256位元之向量301_B。第二、即刻輸入運算元(未顯示)係指明256位元向量301_B之哪一半(下半或右半)將被覆寫於目的地暫存器302_B中所儲存之256位元向量的最低階128位元上。輸入向量301_B向量被構成為浮點值,其可為32位元或64位元之大小。指令格式可替代地指明記憶體中之128位元為目的地而非目的地暫存器302_B。
圖3C至3E顯示三個不同VPERMUTE指令(VPERMILPS、VPERMILPD、VPERM2F128)之個別邏輯操作。
圖3C顯示VPERMILPS指令之邏輯操作。如圖3C中所見,VPERMILPS指令接受一相應於具有八個32位元(單一精確)浮點值之256位元輸入向量的輸入運算元301_C。其結果亦為具有八個32位元單一精確浮點值為其元件302_C的256位元向量。第二輸入向量(未顯示)係針對該結果之下半中的四個元件之每一個獨特地指明輸入 向量301_C之下半中的四個元件301_C_1至301_C_4之哪個將以其內容提供輸出元件。
圖3C顯示僅針對輸出元件302_C_1及302_C_5之操作。於此,輸出元件302_C_1之內容可被「填充」以輸入元件301_C_1至301_C_4之任一者的內容。於第二輸入向量(未顯示)中明確表達輸入元件301_C_1至301_C_4之哪一者被選來填充輸出元件302_C_1。於此,第二輸入向量含有針對輸出向量中之八個元件的每一者之分離的2位元控制欄位。結果302_C之下半中的輸出元件之來源需被選自輸入向量301_C之下半。同樣地,結果302_C之上半中的輸出元件之來源需被選自輸入向量301_C之上半。
雖未明確地顯示於圖3C中,輸出元件302_C_2至302_C_4之每一者的內容係藉由第二輸入向量中所含有之資訊而被獨特地指明為輸入元件301_C_1至301_C_4之任一者。類似地,如圖3C中所見,輸出元件302_C_5之內容可被「填充」以輸入元件301_C_5至301_C_8之任一者的內容。再次,於第二輸入向量(未顯示)中亦明確表達輸入元件301_C_5至301_C_8之哪一者被選來填充輸出元件302_C_5。輸出元件302_C_6至302_C_8之每一者的內容係藉由(未顯示)第二輸入向量而被獨特地指明為輸入元件301_C_5至301_C_8之任一者。
VPERMILPS指令之另一版本係使用即刻運算元以取代第二輸入向量來選擇輸入向量301_C之選擇型態。於 此,目的地之下半的輸入元件選擇型態係匹配目的地之上半的輸入元件選擇型態。
圖3D顯示VPERMILPD指令之邏輯操作。如圖3D中所見,VPERMILPD指令接受一相應於具有四個64位元(雙精確)浮點值之256位元輸入向量的輸入運算元301_D。其結果亦為具有四個64位元雙精確浮點值為其元件的256位元向量302_D。第二輸入向量(未顯示)係針對該結果之下半中的兩個元件之每一個獨特地指明輸入向量301_D之下半中的兩個元件301_D_1至301_D_2之哪個將以其內容提供輸出元件。
如圖3D中所見,輸出元件302_D_1及302_D_2之每一者可被獨特地「填充」以輸入元件301_D_1或301_D_2之任一者。同樣地,輸出元件302_D_3及302_D_4之每一者可被獨特地「填充」以輸入元件301_D_3或301_D_4之任一者。於第二輸入向量(未顯示)中明確表達哪一輸入元件被選來填充一特定的輸出元件。於此,第二輸入向量含有針對輸出向量中之四個元件的每一者之分離的2位元控制欄位。
VPERMILPD指令之另一版本係使用即刻運算元以取代第二輸入向量來選擇輸入向量301_D之選擇型態。於此,目的地之下半的輸入元件選擇型態係匹配目的地之上半的輸入元件選擇型態。
針對VPERMILPS及VPERMIPLD指令兩者,其結果被儲存於以指令之指令格式所指明的向量暫存器中。第一 輸入向量之來源被指明以指令格式並相應於當第二輸入向量被用來判定選擇型態時的向量暫存器。於此情況下,第二輸入向量之來源亦被指明以指令格式並相應於第二向量暫存器或記憶體位置之任一者。反之,假如即刻運算元被用以判定選擇型態,則第一輸入向量之來源被指明以指令格式並可為一向量暫存器或一記憶體位置。
圖3E顯示VPERM2F128指令之邏輯操作。如圖3E中所見,VPERM2F128指令接受兩分離的256位元向量輸入運算元301_E、302_E。256位元結果303_E之下與上128位元半303_E_1、303_E_2兩者可被填充以輸入向量301_E、302_E兩者之下或上半301_E_1、301_E_2、302_E_1、302_E_2的任一者。其結果被儲存於以指令之指令格式所指明之向量暫存器中。輸入向量301_E、302_E兩者之來源被指明以指令格式並可相應於一對向量暫存器或者一向量暫存器及一記憶體位置。
詳細描述
圖4A至4E顯示四個新的VINSERT指令之邏輯操作。明確地,圖4A至4D個別地顯示VINSERTF32X4指令、VINSERTF64X2指令、VINSERTF32X8指令及VINSERTF64X4指令。
圖4A顯示VINSERTF32X4指令之邏輯操作。如圖4A中所見,128位元結構401_A被接收為第一輸入運算 元。該128位元結構含有四個32位元單一精確浮點值。512位元向量亦被接收為第二輸入運算元402_A。512位元向量可被視為由四個鄰接「塊」的資料所組成,其每個為128位元之大小。一即刻運算元(未顯示)指示第二運算元402_A之哪個128位元「塊」將被覆寫以第一輸入運算元401_A。確認該第二運算元被覆寫為真的意義在於其被讀取自向量暫存器空間之資訊的執行單元中之局部副本被覆寫。如本技術中眾所周知者,向量暫存器空間中之原始來源資訊通常僅被覆寫於假如指令格式指示其來源暫存器亦為目的地暫存器時。
接著將一遮罩施加至所得的資料結構403_A。於此,一遮蔽層404_A接收一輸入遮罩向量(未顯示),其識別所得資料結構403_A之哪些32位元資料值將被寫入至目的地406_A。遮罩暫存器空間(例如,諸如圖1之遮罩暫存器空間106)中之遮罩向量的位置以及向量暫存器空間中之目的地的位置兩者被識別於指令格式中。第一和第二輸入運算元401_A、402_A之來源亦被識別於指令格式中。於一實施例中,第一輸入運算元401_A可源自向量暫存器空間或記憶體位置,而第二輸入運算元402_A係源自向量暫存器空間。即刻運算元亦包括於指令格式中。於一實施例中,其中儲存有目的地之向量暫存器空間係不同於其中輸入運算元所源自之向量暫存器空間。
於一實施例中,取代從遮罩暫存器空間讀取遮罩,遮罩係嵌入於指令本身中(例如,類似於即刻運算元)。於 此情況下,指令格式包括一含有實際遮罩型態之欄位。反之,假如遮罩被提取自遮罩暫存器空間,則指令格式包括一識別其遮罩型態被儲存於遮罩暫存器空間中之何處的位址欄位。為了簡化,以下剩餘說明書之討論被寫成遮罩係提取自遮罩暫存器空間。然而,讀者應瞭解其指令亦可被實施以遮罩嵌入指令中而成為一種即刻運算元。
於一種向量友善指令格式之實施方式中,以下詳細地描述其實施例,指令格式係支援這些遮罩型態技術之兩者。於此情況下,指令格式包括一識別針對指令將採取哪種方式之額外欄位(例如,1=遮罩型態類似於嵌入指令中之即刻運算元,0=遮罩型態將被提取自遮罩暫存器空間)。
分離地或結合地,所施加之遮蔽的類型可被「合併」或「歸零」。於合併遮蔽之情況下,所得之資料結構的「遮蔽掉」欄位不被覆寫。反之,在該位置上之目的地暫存器中的原始值被保存。相對地,於歸零遮蔽之情況下,所得之資料結構的「遮蔽掉」欄位以0之值覆寫目的地暫存器中之該位置。於各個實施例中(諸如剛剛如上所述之關聯與向量友善指令格式之那些),應施加合併或歸零被指明於指令格式之另一欄位中。
關於遮蔽之上述評論亦適用於關聯與圖4B至4P之指令的下列討論。為了便利起見,其不被重複於下。
圖4B顯示VINSERTF64X2指令之邏輯操作。如圖4B中所見,128位元結構401_B被接收為第一輸入運算 元。該128位元結構含有兩個64位元雙精確浮點值。512位元向量亦被接收為第二輸入運算元402_B。512位元向量可被視為由四個鄰接「塊」的資料所組成,其每個為128位元之大小。一即刻運算元(未顯示)指示第二運算元402_B之哪個128位元「塊」將被覆寫以第一輸入運算元401_B。
接著將一遮罩施加至所得的資料結構403_B。於此,一遮蔽層404_B接收一輸入遮罩向量(未顯示),其識別所得資料結構403_B之哪些64位元資料值將被寫入至目的地406_B。遮罩暫存器空間中之遮罩向量的位置以及向量暫存器空間中之目的地的位置兩者被識別於指令格式中。第一和第二輸入運算元401_B、402_B之來源亦被識別於指令格式中。於一實施例中,第一輸入運算元401_B可源自向量暫存器空間或記憶體位置,而第二輸入運算元402_B係源自向量暫存器空間。即刻運算元亦包括於指令格式中。於一實施例中,其中儲存有目的地之向量暫存器空間係不同於其中輸入運算元所源自之向量暫存器空間。
圖4C顯示VINSERTF32X8指令之邏輯操作。如圖4C中所見,256位元結構401_C被接收為第一輸入運算元。該256位元結構含有八個32位元單精確浮點值。512位元向量亦被接收為第二輸入運算元402_C。512位元向量可被視為由兩個鄰接「塊」的資料所組成,其每個為256位元之大小。一即刻運算元(未顯示)指示第二運算元402_C之哪個256位元「塊」將被覆寫以第一輸入運算 元401_C。
接著將一遮罩施加至所得的資料結構403_C。於此,一遮蔽層404_C接收一輸入遮罩向量(未顯示),其識別所得資料結構403_C之哪些32位元資料值將被寫入至目的地406_C。遮罩暫存器空間中之遮罩向量的位置以及向量暫存器空間中之目的地的位置兩者被識別於指令格式中。第一和第二輸入運算元401_C、402_C之來源亦被識別於指令格式中。於一實施例中,第一輸入運算元401_C可源自向量暫存器空間或記憶體位置,而第二輸入運算元402_C係源自向量暫存器空間。即刻運算元亦包括於指令格式中。於一實施例中,其中儲存有目的地之向量暫存器空間係不同於其中輸入運算元所源自之向量暫存器空間。
圖4D顯示VINSERTF64X4指令之邏輯操作。如圖4D中所見,256位元結構401_D被接收為第一輸入運算元。該256位元結構含有四個64位元雙精確浮點值。512位元向量亦被接收為第二輸入運算元402_D。512位元向量可被視為由四個鄰接「塊」的資料所組成,其每個為256位元之大小。一即刻運算元(未顯示)指示第二運算元402_D之哪個256位元「塊」將被覆寫以第一輸入運算元401_D。
接著將一遮罩施加至所得的資料結構403_D。於此,一遮蔽層404_D接收一輸入遮罩向量(未顯示),其識別所得資料結構403_D之哪些64位元資料值將被寫入至目的地406_D。遮罩暫存器空間中之遮罩向量的位置以及 向量暫存器空間中之目的地的位置兩者被識別於指令格式中。第一和第二輸入運算元401_D、402_D之來源亦被識別於指令格式中。於一實施例中,第一輸入運算元401_D可源自向量暫存器空間或記憶體位置,而第二輸入運算元402_D係源自向量暫存器空間。即刻運算元亦包括於指令格式中。於一實施例中,其中儲存有目的地之向量暫存器空間係不同於其中輸入運算元所源自之向量暫存器空間。
圖4E至4H顯示四個新的VEXTRACT指令。明確地,圖4E顯示VEXTRACT32X4指令,圖4F顯示VEXTRACT64X2指令,圖4G顯示VEXTRACT32X8指令及圖4H顯示VEXTRACT64X4指令。
圖4E顯示VEXTRACT32X4指令之邏輯操作。如圖4E中所見,VEXTRACT32X4指令接受512位元輸入運算元401_E。該512位元輸入運算元401_E可被視為由四個鄰接之128位元「塊」的資料所組成,其中,每塊含有四個單一精確(32位元)浮點資料值。依據VEXTRACT32X4指令之邏輯操作,這些128位元塊之一被「選擇」,一遮蔽層402_E被施加至所選擇的塊,且所得的資料結構被寫入至目的地403_E。
於一實施例中,一即刻運算元(未顯示)指明四個128位元塊之哪個將被選擇,輸入運算元401_E被提供自一向量暫存器,及目的地401_E可於向量暫存器空間或記憶體位置之任一者中。指令格式識別任何可應用的來源/目的地向量暫存器及/或記憶體位置。於一實施例中,目 的地被儲存於其中輸入向量所源自之向量暫存器空間以外的不同向量暫存器空間中。於指令之操作期間,一遮罩向量被讀取自遮罩暫存器空間並施加至遮蔽層402_E。遮罩暫存器空間中之遮罩向量的位置亦被提供於指令格式中。遮蔽之粒度(granularity)為32位元。亦即,遮蔽向量分別地指明選定資料塊中之四個32位元值的哪個將被寫入至目的地。
圖4F顯示VEXTRACT64X2指令之邏輯操作。如圖4F中所見,VEXTRACT64X2指令接受512位元輸入運算元401_F。該512位元輸入運算元401_F可被視為由四個鄰接之128位元「塊」的資料所組成,其中,每塊含有兩個雙精確(64位元)浮點資料值。依據VEXTRACT64X2指令之邏輯操作,這些128位元塊之一被「選擇」,一遮蔽層402_F被施加至所選擇的塊,且所得的資料結構被寫入至目的地403_F。
於一實施例中,一即刻運算元(未顯示)指明四個128位元塊之哪個將被選擇,輸入運算元401_F被提供自一向量暫存器,及目的地403_F可於向量暫存器空間或記憶體位置之任一者中。指令格式識別任何可應用的來源/目的地向量暫存器及/或記憶體位置。於一實施例中,目的地被儲存於其中輸入向量所源自之向量暫存器空間以外的不同向量暫存器空間中。於指令之操作期間,一遮罩向量被讀取自遮罩暫存器空間並施加至遮蔽層402_F。遮罩暫存器空間中之遮罩向量的位置亦被提供於指令格式中。 遮蔽之粒度(granularity)為64位元。亦即,遮蔽向量分別地指明選定資料塊中之兩個64位元值的哪個將被寫入至目的地。
圖4G顯示VEXTRACT32X8指令之邏輯操作。如圖4G中所見,VEXTRACT32X8指令接受512位元輸入運算元401_G。該512位元輸入運算元401_G可被視為由兩個鄰接之256位元「塊」的資料所組成,其中,每塊含有八個單一精確(32位元)浮點資料值。依據VEXTRACT32X8指令之邏輯操作,這些256位元塊之一被「選擇」,一遮蔽層402_G被施加至所選擇的塊,且所得的資料結構被寫入至目的地403_G。
於一實施例中,一即刻運算元(未顯示)指明兩256位元塊之哪個將被選擇,輸入運算元401_G被提供自一向量暫存器,及目的地403_G可於向量暫存器空間或記憶體位置之任一者中。指令格式識別任何可應用的來源/目的地向量暫存器及/或記憶體位置。於一實施例中,目的地被儲存於其中輸入向量所源自之向量暫存器空間以外的不同向量暫存器空間中。於指令之操作期間,一遮罩向量被讀取自遮罩暫存器空間並施加至遮蔽層402_G。遮罩暫存器空間中之遮罩向量的位置亦被提供於指令格式中。遮蔽之粒度(granularity)為32位元。亦即,遮蔽向量分別地指明選定資料塊中之八個32位元值的哪個將被寫入至目的地。
圖4H顯示VEXTRACT64X4指令之邏輯操作。如圖 4H中所見,VEXTRACT64X4指令接受512位元輸入運算元401_H。該512位元輸入運算元401_H可被視為由兩個鄰接之256位元「塊」的資料所組成,其中,每塊含有四個雙精確(64位元)浮點資料值。依據VEXTRACT64X4指令之邏輯操作,這些256位元塊之一被「選擇」,一遮蔽層402_H被施加至所選擇的塊,且所得的資料結構被寫入至目的地403_H。
於一實施例中,一即刻運算元(未顯示)指明兩個256位元塊之哪個將被選擇,輸入運算元401_H被提供自一向量暫存器,及目的地403_H可於向量暫存器空間或記憶體位置之任一者中。指令格式識別任何可應用的來源/目的地向量暫存器及/或記憶體位置。於一實施例中,目的地被儲存於其中輸入向量所源自之向量暫存器空間以外的不同向量暫存器空間中。於指令之操作期間,一遮罩向量被讀取自遮罩暫存器空間並施加至遮蔽層402_H。遮罩暫存器空間中之遮罩向量的位置亦被提供於指令格式中。遮蔽之粒度(granularity)為64位元。亦即,遮蔽向量分別地指明選定資料塊中之四個64位元值的哪個將被寫入至目的地。
圖4I至4P提出新的VPERMUTE指令。這些包括VPERMW、VPERMD、VPERMQ、VPERMILPS、VPERMILPD。
圖4I顯示VPERMW指令之邏輯操作。VPERMW指令接受512位元輸入向量為第一輸入運算元401_I。該512 位元輸入向量被視為具有三十二個16位元資料值(字元)。一遮蔽層402_I類似地具有粒度以遮蔽於16位元粒度。亦即,目的地/所得向量403_I被視為具有三十二個16位元值,且遮蔽層402_I具有提供個別遮蔽給所得向量403_I中之各元件的能力。
依據VPERMW指令之邏輯操作,所得向量403_I中之各元件被填充以輸入向量401_I中之三十二個元件的任一個。此能力被顯示於所得向量403_I之最右邊元件403_I_1。於此,如圖41中所見,遮蔽層元件402_I_1可被提供以輸入向量401_I中之三十二個元件的任一個。如此一來,假如所得元件403_I_1未被「遮蔽掉」於遮蔽元件402_I_1,則所得元件403_I_1可被「填充」以輸入向量401_I中之三十二個16位元元件的任一個。
雖未明確地顯示於圖4I中,此相同能力/功能被應用於所得向量403_I中之剩餘三十一個元件的每一個。亦即,所得向量403_I中之任何元件(假如未被用於該所得中之該特定元件的遮蔽層402_I中之專屬遮蔽元件所遮蔽掉的話)可被填充以輸入向量401_I中之16位元值的任一者。此表示(例如)所得向量403_I中之二或更多元件可被填充以來自輸入向量401_I之相同元件。
輸入向量401_I之來源及所得向量403_I之目的地被指明於VPERMW指令格式。於一實施例中,輸入向量401_I被提供自向量暫存器空間或記憶體中之一位置,且所得被寫入不同向量暫存器空間中之一位置。遮蔽層 402_I亦被提供以一來自遮罩暫存器空間之遮蔽向量,該遮罩暫存器空間係指明所得向量403_I中之哪些元件將被遮蔽掉(以及所得向量403_I中之哪些元件將不被遮蔽掉)。
亦提供第二輸入向量(未顯示),稱之為「指標」向量,其係針對輸出向量中之各元件明確表達哪個特定輸入元件將被用以填充輸出向量中之該元件(假如其未被遮蔽掉的話)。例如,於一實施例中,指標向量為具有至少五個位元於各元件之32元件向量。指標向量中之各元件係相應於所得中之一獨特元件。五個位元被用以指明第一輸入向量401_I中之哪個元件將被用以填充特定的所得元件(假如其未被遮蔽掉的話)。
於一實施例中,亦支援VPERMW指令之第二版本,其接收一含有可用來填充任何輸出向量元件位置之三十二個額外16位元值的第三輸入向量(未顯示)。基本上,第三輸入向量將其可被用以填充任何輸出元件位置之可用16位元輸入值的數目乘以二。針對VPERMW指令之此版本,上述之指標向量針對5位元以外之各輸出位置使用至少6位元。於此,額外位元被用以識別第一(401_I)或第三(未顯示)輸入向量將被用以源取特定的輸出向量403_I元件。此版本之第一變異係使目的地暫存器空間相等於其供應指標向量之暫存器空間。亦即,其結果被覆寫向量暫存器空間中之指標向量。此版本之第二變異係以該結果覆寫向量暫存器空間中之第三輸入向量。於任一變異 中,目的地位置未被分離地識別於指標向量位置(第一變異)或第三輸入向量(第二變異)以外的指令格式。
圖4J顯示VPERMD指令之邏輯操作。VPERMD指令接受512位元輸入向量為第一輸入運算元401_J。該512位元輸入向量被視為具有十六個32位元資料值。32位元值可為雙字元或單一精確32位元值。一遮蔽層402_J類似地具有粒度以遮蔽於32位元粒度。亦即,目的地/所得向量403_J被視為具有十六個32位元值,且遮蔽層402_J具有提供個別遮蔽給所得向量403_J中之各元件的能力。
依據VPERMD指令之邏輯操作,所得向量403_J中之各元件被填充以輸入向量401_J中之十六個元件的任一個。此能力被顯示於所得向量403_J之最右邊元件403_J_1。於此,如圖4J中所見,遮蔽層元件402_J_1可被提供以輸入向量401_J中之十六個元件的任一個。如此一來,假如所得元件403_J_1未被「遮蔽掉」於遮蔽元件402_J_1,則所得元件403_J_1可被「填充」以輸入向量401_J中之十六個32位元元件的任一個。
雖未明確地顯示於圖4J中,此相同能力/功能被應用於所得向量403_J中之剩餘十五個元件的每一個。亦即,所得向量403_J中之任何元件(假如未被用於該所得中之該特定元件的遮蔽層402_J中之專屬遮蔽元件所遮蔽掉的話)可被填充以輸入向量401_J中之32位元值的任一者。此表示(例如)所得向量403_J中之二或更多元件可被填充以來自輸入向量401_J之相同元件。
輸入向量401_J之來源及所得向量403_J之目的地被指明於VPERMD指令格式。於一實施例中,輸入向量401_J被提供自向量暫存器空間或記憶體中之一位置,且所得被寫入不同向量暫存器空間中之一位置。遮蔽層402_J亦被提供以一來自遮罩暫存器空間之遮蔽向量,該遮罩暫存器空間係指明所得向量403_J中之哪些元件將被遮蔽掉(以及所得向量403_J中之哪些元件將不被遮蔽掉)。
亦提供第二輸入向量(未顯示),稱之為「指標」向量,其係針對輸出向量中之各元件明確表達哪個特定輸入元件將被用以填充輸出向量中之該元件(假如其未被遮蔽掉的話)。例如,於一實施例中,指標向量為具有至少五個位元於各元件之16元件向量。指標向量中之各元件係相應於所得中之一獨特元件。五個位元被用以指明第一輸入向量401_J中之哪個元件將被用以填充特定的所得元件(假如其未被遮蔽掉的話)。
於一實施例中,亦支援VPERMW指令之第二版本,其接收一含有可用來填充任何輸出向量元件位置之十六個額外32位元值的第三輸入向量(未顯示)。基本上,第三輸入向量將其可被用以填充任何輸出元件位置之可用32位元輸入值的數目乘以二。針對VPERMW指令之此版本,上述之指標向量針對5位元以外之各輸出位置使用至少6位元。於此,額外位元被用以識別第一(401_J)或第三(未顯示)輸入向量將被用以源取特定的輸出向量 403_J元件。此版本之第一變異係使目的地暫存器空間相等於其供應指標向量之暫存器空間。亦即,其結果被覆寫向量暫存器空間中之指標向量。此版本之第二變異係以該結果覆寫向量暫存器空間中之第三輸入向量。於任一這些變異中,目的地位置未被分離地識別於指標向量位置(第一變異)或第三輸入向量(第二變異)以外的指令格式。
圖4K顯示VPERMQ指令之邏輯操作。VPERMQ指令接受第一512位元輸入向量為第一輸入運算元401_K並接受第二512位元輸入向量為第二輸入運算元(未顯示)。該兩者512位元輸入向量均被視為具有八個64位元資料值。64位元值可為四字元或雙精確浮點值。一遮蔽層402_K類似地具有粒度以遮蔽於64位元粒度。亦即,目的地/所得向量403_K被視為具有八個64位元值,且遮蔽層402_K具有提供個別遮蔽給所得向量403_K中之各元件的能力。
依據VPERMQ指令之邏輯操作,所得向量403_K中之各元件被填充以輸入向量(401_K及該未顯示的輸入向量)之組合中之十六個元件的任一個。此能力被顯示於所得向量403_K之最右邊元件403_K_1。於此,如圖4K中所見,遮蔽層元件402_K_1可被提供以輸入向量401_K中之八個元件的任一個、或者第二輸入向量(未顯示)中之八個元件的任一個。如此一來,假如所得元件403_K_1未被「遮蔽掉」於遮蔽元件402_K_1,則所得元件403_K_1可被「填充」以來自該對輸入向量之十六個64 位元元件的任一個。
雖未明確地顯示於圖4K中,此相同能力/功能被應用於所得向量403_K中之剩餘八個元件的每一個。亦即,所得向量403_K中之任何元件(假如未被用於該所得中之該特定元件的遮蔽層402_K中之專屬遮蔽元件所遮蔽掉的話)可被填充以任一輸入向量中之64位元值的任一者。此表示(例如)所得向量403_K中之二或更多元件可被填充以來自輸入向量401_K之相同元件。
輸入向量兩者之來源被指明於VPERMQ指令格式。於一實施例中,輸入向量401_K被提供自向量暫存器空間或記憶體中之一位置,且第二輸入向量被提供自向量暫存器空間中之其本身的個別位置。遮蔽層402_K亦被提供以一來自遮罩暫存器空間之遮蔽向量,該遮罩暫存器空間係指明所得向量403_K中之哪些元件將被遮蔽掉(以及所得向量403_K中之哪些元件將不被遮蔽掉)。
亦提供另一輸入向量(未顯示),稱之為「指標」向量,其係針對輸出向量中之各元件明確表達哪個特定輸入元件將被用以填充輸出向量中之該元件(假如其未被遮蔽掉的話)。例如,於一實施例中,指標向量為具有至少六個位元於各元件之八元件向量。指標向量中之各元件係相應於所得中之一獨特元件。上述六個位元之五個被用以指明第一輸入向量401_K或第二輸入向量中之哪個元件將被用以填充特定的所得元件(假如其未被遮蔽掉的話)。第六個位元被用以識別第一(401_K)或第二(未顯示) 輸入向量將被用以源取該特定輸出向量403_K元件。
VPERMQ之第一變異使使目的地暫存器空間相等於其供應指標向量之暫存器空間。亦即,其結果被覆寫向量暫存器空間中之指標向量。第二變異係以該結果覆寫向量暫存器空間中之第二輸入向量。於任一變異中,目的地位置未被分離地識別於指標向量位置(第一變異)或第二輸入向量(第二變異)以外的指令格式。
圖4L顯示新的VPERMILPS指令。如圖4L中所見,新的VPERMILPS指令接受一相應於具有十六個32位元(單一精確)浮點值之512位元輸入向量401_L的輸入運算元。其結果亦為具有十六個32位元單一精確浮點值為其元件403_L的512位元向量。一遮蔽層402_L類似地具有粒度以遮蔽於32位元粒度。亦即,目的地/所得向量403_L被視為具有十六個32位元值,且遮蔽層402_L具有提供個別遮蔽給所得向量403_L中之各元件的能力。
第二輸入向量(未顯示),稱之為「指標」向量,獨特地指明輸入向量401_L中之四個元件的哪個可「填充」所得403中之一特定元件(假如其未被遮蔽層402_L遮蔽掉的話)。例如,所得403_L之最低有效128位元中之四個元件403_L_1至403_L_4的每個僅可被填充以輸入向量401_L之最低有效128位元中之四個元件401_L_1至403_L_4的任一個。所得中之每個元件的來源係獨立於所得中之另一元件的來源。因此輸出向量中之兩不同元件可被填充以相同的輸入向量元件。
圖4L顯示其被提供至遮蔽層402_L之輸出元件403_L_1的可用輸入源。再次,這些相同的輸入源亦可用於輸出元件403_L_2至403_L_4之每一者。一類似的配置係針對128位元之每一下個族群而被協調。亦即,假設無遮蔽,則來自族群403_L_Q2之元件需源自族群401_L_Q2中之元件,來自族群403_L_Q3之元件需源自族群401_L_Q3中之元件,以及來自族群403_L_Q4之元件需源自族群401_L_Q4中之元件, 於一實施例中,新VPERMILPS指令之不同版本被支援於相同處理器之指令集中。第一版本儲存輸入向量401_L於第一向量暫存器位置中,儲存指標向量於第二向量暫存器空間位置或記憶體位置中並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_L及指標向量均未被覆寫)。第二版本儲存輸入向量401_L於第一向量暫存器空間位置或記憶體位置中,指明該指令中之指標向量為即刻運算元並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_L未被覆寫)。
遮蔽層402_L接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量的位置被指明於該指令中。於其中指標向量被用以指明介於輸入向量元件與輸出向量元件之間的選擇型態之版本中,指標向量具有十六個元件(輸出向量中之各元件有一個元件),及兩個位元於各元件上,以選擇可用來填充個別輸出向量元件的四個輸入向量元件之一。於其中利用即刻運算元之版本中,即刻運算 元具有八個元件,其中每元件有兩位元。於此,相同的選擇型態被用於輸出向量之下半或上半。
圖4M顯示新的VPERMILPD指令。如圖4M中所見,新的VPERMILPD指令接受一相應於具有八個64位元(雙精確)浮點值之512位元輸入向量的輸入運算元401_M。其結果亦為具有八個64位元雙精確浮點值為其元件的512位元向量403_M。一遮蔽層402_M類似地具有粒度以遮蔽於64位元粒度。亦即,目的地/所得向量403_M被視為具有八個64位元值,且遮蔽層402_M具有提供個別遮蔽給所得向量403_M中之各元件的能力。
第二輸入向量(未顯示),稱之為「指標」向量,獨特地指明輸入向量401_M中之兩個元件的哪個可「填充」所得403_M中之一特定元件(假如其未被遮蔽層402_M所遮蔽的話)。例如,所得403_M之最低有效128位元中之元件403_M_1及403_M_2的兩者僅可被填充以輸入向量401_K之最低有效128位元中之元件401_M_1與403_M_2的任一個。所得中之每個元件的來源係獨立於所得中之另一元件的來源。因此輸出向量中之兩不同元件可被填充以相同的輸入向量元件。
圖4M顯示其被提供至遮蔽層402_M之輸出元件403_M_1及403_M_2的可用輸入源。一類似的配置係針對128位元之剩餘族群而被協調於輸出向量403_M中。亦即,假設無遮蔽,則來自族群403_M_Q2之元件需源自族群401_M_Q2中之元件,來自族群403_M_Q3之元件需 源自族群401_M_Q3中之元件,以及來自族群403_M_Q4之元件需源自族群401_M_Q4中之元件。
於一實施例中,新VPERMILPD指令之不同版本被支援於相同處理器之指令集中。第一版本儲存輸入向量401_M於第一向量暫存器空間位置中,儲存指標向量於第二向量暫存器空間位置或記憶體位置中並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_M及指標向量均未被覆寫)。第二版本儲存輸入向量401_M於第一向量暫存器空間位置或記憶體位置中,指明該指令中之指標向量為即刻運算元並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_M未被覆寫)。
遮蔽層402_M接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量的位置被指明於該指令中。於其中指標向量被用以指明介於輸入向量元件與輸出向量元件之間的選擇型態之版本中,指標向量具有八個元件(輸出向量中之各元件有一個元件),及一位元於各元件上,以選擇可用來填充個別輸出向量元件的兩個輸入向量元件之一。於其中利用即刻運算元之版本中,即刻運算元具有八個元件,其中每元件有一位元。
圖4N顯示一VPERM64X1指令。如圖4N中所見,VPERM64X1指令接受一相應於具有八個64位元(雙精確)浮點值之512位元輸入向量401_N的輸入運算元。其結果亦為具有八個64位元雙精確浮點值為其元件的 512位元向量403_N。一遮蔽層402_N類似地具有粒度以遮蔽於64位元粒度。亦即,目的地/所得向量403_N被視為具有八個64位元值,且遮蔽層402_N具有提供個別遮蔽給所得向量403_N中之各元件的能力。
第二輸入向量(未顯示),稱之為「指標」向量,獨特地指明輸入向量401_N中之八個元件的哪個可「填充」所得403_N中之一特定元件(假如其未被遮蔽層402_N所遮蔽的話)。亦即,輸入向量401_N中之任何元件可被用以填充輸出向量403_N中之任何元件。所得中之每個元件的來源係獨立於所得中之另一元件的來源。因此輸出向量中之兩不同元件可被填充以相同的輸入向量元件。
圖4N顯示其被提供至遮蔽層402_N之輸出元件403_N_1的可用輸入源。一類似的配置被協調於輸出向量403_N中之各元件。如以下之更詳細描述,於一其中即刻運算元被使用為指標向量之實施例中,來源選擇被進一步限制。
於一實施例中,新VPERM64X1指令之不同版本被支援於相同處理器之指令集中。第一版本儲存輸入向量401_N於第一向量暫存器空間位置或記憶體位置中,儲存指標向量於第二向量暫存器空間位置中並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_N及指標向量均未被覆寫)。第二版本儲存輸入向量401_N於第一向量暫存器空間位置或記憶體位置中,指明該指令 中之指標向量為即刻運算元並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_N未被覆寫)。
遮蔽層402_N接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量的位置被指明於該指令中。於其中指標向量被用以指明介於輸入向量元件與輸出向量元件之間的選擇型態之版本中,指標向量具有八個元件(輸出向量中之各元件有一個元件),及三位元於各元件上,以選擇可用來填充個別輸出向量元件的八個輸入向量元件之一。於其中利用即刻運算元之版本中,即刻運算元具有四個元件,其中每元件有二位元。於此,各輸出元件並未具有其可得之所有八個輸入元件為來源。反之,輸出向量403_N之最低有效256位元中的任何元件需由輸入向量403_N之最低有效256位元中的元件所源取。輸入/輸出向量之最低有效256位元的來源之相同選擇型態被使用於輸入/輸出向量之最高有效位元。
圖40顯示一VPERM64X2指令之邏輯操作。依據VPERM64X2指令之操作,512位元輸入向量401_O被接收。512位元輸入向量401_O被視為具有八個64位元雙精確浮點或整數值。其結果亦為具有八個64位元雙精確浮點或整數值為其元件的512位元向量403_O。一遮蔽層402_O類似地具有粒度以遮蔽於64位元粒度。亦即,目的地/所得向量403_O被視為具有八個64位元值,且遮蔽層402_O具有提供個別遮蔽給所得向量403_O中之各元 件的能力。
第二輸入向量(未顯示),稱之為「指標」向量,獨特地指明輸入向量401_O中之哪個相鄰對的元件可「填充」所得403_O中之一特定對的相鄰元件(假如該對元件未被遮蔽層402_O所遮蔽的話)。亦即,輸入向量401_O中之四對相鄰元件的任一者可被用以填充輸出向量403_O中之任何對元件。所得中之第一對元件的來源係獨立於所得中之另一對元件的來源。因此,輸出向量中之兩不同對元件可被填充以相同對的輸入向量元件。
圖4O顯示其被提供至遮蔽層402_O之輸出元件對403_O_1的可用輸入源。一類似的配置被協調於其他對元件403_O_2、403_O_3及403_O_4。
於一實施例中,VPERM64X2指令之不同版本被支援於相同處理器之指令集中。第一版本儲存輸入向量401_O於第一向量暫存器空間位置或記憶體位置中,儲存指標向量於第二向量暫存器空間位置中並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_O及指標向量均未被覆寫)。第二版本儲存輸入向量401_O於第一向量暫存器空間位置或記憶體位置中,指明該指令中之指標向量為即刻運算元並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_O未被覆寫)。
遮蔽層402_O接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量的位置被指明於該指令 中。於其中指標向量被用以指明介於輸入向量元件與輸出向量元件之間的選擇型態之版本中,指標向量具有四個元件(輸出向量中之各對元件有一個元件),及二位元於各元件上,以選擇可用來填充個別對輸出向量元件的四對輸入向量元件之一。於其中利用即刻運算元之版本中,即刻運算元具有如指標向量之相同結構。
圖4P顯示一VPERM32X4指令之邏輯操作。依據VPERM32X4指令之操作,512位元輸入向量401_P被接收。512位元輸入向量401_P被視為具有十六個32位元單一精確浮點或整數值。其結果亦為具有十六個32位元單一精確浮點或整數值為其元件的512位元向量403_P。一遮蔽層402_P類似地具有粒度以遮蔽於32位元粒度。亦即,目的地/所得向量403_P被視為具有八個64位元值,且遮蔽層402_P具有提供個別遮蔽給所得向量403_P中之各元件的能力。
第二輸入向量(未顯示),稱之為「指標」向量,獨特地指明輸入向量401_P中之哪組四個32位元元件可「填充」所得403_P中之特定組相鄰32位元元件(假如該組元件未被遮蔽層402_P所遮蔽的話)。亦即,輸入向量401_P中之四組四個相鄰元件的任一者可被用以填充輸出向量403_P中之某些組四個元件。所得中之第一組元件的來源係獨立於所得中之另一組四個元件的來源。因此,輸出向量中之兩不同組的四個元件可被填充以相同組的四個輸入向量元件。
圖4P顯示其被提供至遮蔽層402_P之輸出元件組403_P_1的可用輸入源。一類似的配置被協調於其他元件組403_P_2、403_P_3及403_P_4。
於一實施例中,VPERM32X4指令之不同版本被支援於相同處理器之指令集中。第一版本儲存輸入向量401_P於第一向量暫存器空間位置或記憶體位置中,儲存指標向量於第二向量暫存器空間位置中並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_P及指標向量均未被覆寫)。第二版本儲存輸入向量401_P於第一向量暫存器空間位置或記憶體位置中,指明該指令中之指標向量為即刻運算元並儲存結果於其本身的專屬向量暫存器空間位置中(亦即,輸入向量401_P未被覆寫)。
遮蔽層402_P接收來自遮罩暫存器空間之遮罩向量。遮罩暫存器空間中之遮罩向量的位置被指明於該指令中。於其中指標向量被用以指明介於輸入向量元件與輸出向量元件之間的選擇型態之版本中,指標向量具有四個元件(輸出向量中之各組四個元件有一個元件),及二位元於各元件上,以選擇可用來填充個別組四個輸出向量元件的四組四個輸入向量元件之一。於其中利用即刻運算元之版本中,即刻運算元具有如指標向量之相同結構。
根據實施方式,一支援這些指令之管線的資料提取級可被耦合至記憶體以從記憶體提取運算元,及/或,被耦合至向量暫存器空間以提取/儲存一運算元/結果自/至向量暫存器空間。
此外,針對那些被描述為僅支援浮點資料值之指令,可理解地,這些相同指令可被擴充以處理整數及浮點資料值。於此,圖1之暫存器空間102可包括專用於儲存整數值之第一部分及專用於儲存浮點值之另一部分。無擴充至整數值,管線之資料提取及寫回級被耦合至浮點暫存器空間且無需被耦合至整數暫存器空間,針對其中這些指令被處理之方式。反之,資料提取及寫回級可被耦合至任一者(取決於指令之解碼),假如這些指令被設計為支援兩種資料型式的話。
圖5A顯示一種邏輯設計,用於可實施以上於圖4A至4P中所討論之(包括所有)指令的任何組合之執行。於其他實施例中,不同的個別執行單元被用以執行如以上討論之向量萃取、向量插入及向量排列指令。於又進一步可能的實施例中,單一執行單元可執行來自兩個這些指令家族之指令集。
參考圖5A,第一暫存器501保存如上討論之第一輸入運算元。明顯地,第一暫存器501之大小應夠大以保存其預期能夠複製之最大資料結構。第一暫存器501可置於一管線中之資料提取級的後端上。替代地或結合地,第一暫存器501可被視為其中儲存有第一輸入運算元之向量暫存器空間107內的暫存器。替代地,第一暫存器可被置於執行單元之「前端」。第一暫存器501被耦合至向量元件路由邏輯電路502。向量元件路由邏輯電路502被設計成將第一暫存器501中之輸入運算元的個別元件指向至符合 資訊及指標向量(或即刻運算元)之遮蔽層邏輯電路504的適當元件位置,且整體指令被執行。針對其被微編碼之那些實施方式,向量元件路由邏輯電路502之術語「邏輯電路」等將包括微碼及其回應於微碼而作用之邏輯。暫存器507保存指標向量(或即刻運算元)且被耦合至向量元件路由邏輯電路502以控制第一運算元之向量元件的「路由」。
向量元件路由邏輯電路502之輸出503被耦合至遮蔽邏輯電路504。於一實施例中,輸出503中之個別輸出的數目係相應於所得向量之最大可能大小(例如,512位元)。遮蔽層邏輯電路502被建構以支援其由執行單元所支援之指令的特定向量元件粒度。例如,假如執行單元支援16位元、32位元、及64位元所得元件粒度,則遮蔽層邏輯電路502被設計成支援這些粒度之每一者上的遮蔽。
如以上之詳細討論,遮蔽層邏輯電路504接收來自暫存器505之遮蔽型態以供應一遮罩至來自向量元件路由之輸出503,以產生所得資料結構於暫存器506中。暫存器505可回應於遮罩暫存器空間中之一暫存器、管線中之資料提取級的輸出上之一暫存器、執行單元之前端上之一暫存器、或者一保存即刻值於指令中(當遮罩型態被嵌入指令中時)之暫存器(例如,於管線之指令解碼級的輸出上)。
根據實施方式,暫存器506可回應於向量暫存器空間 107內之一暫存器,或者暫存器506可為位於執行單元之輸出上的暫存器。
輸入暫存器510儲存用於如上討論之接受第二輸入向量的那些指令之一額外輸入運算元,該第二輸入向量之元件可被選擇以包括入所得(例如,VPERMW、VPERMD及VPERMQ)。輸入暫存器510(或其他暫存器)亦可被用以儲存如上討論之VINSERT指令的第二運算元。如此一來,該暫存器被顯示為饋送目的地506。暫存器510可位於向量暫存器空間中,於指令執行管線之資料提取級的輸出上,或者可位於執行單元之輸入上。
於進一步實施例中,執行單元邏輯電路被設計為不僅支援圖4A至4P之任何/所有指令,同時亦支援圖3A至3E之任何/所有習知技術指令。於此情況下,因為圖3A至3E之習知技術指令不支援遮蔽,所以存在一繞過遮蔽層邏輯電路504之旁通路徑(當這些指令正被執行時)。替代地,可藉由以其相應於未被遮蔽之所得中的各元件之資訊自動地饋送遮蔽層來實現該旁通。
雖然以上指令之描述包括資料值、將被萃取/插入/排列之向量元件及結果之大小的特定位元寬度,但那些熟悉本項技術人士將理解文中所描述之觀念可被擴充至不同的個別寬度。
圖5B顯示一種可由圖5A之邏輯電路所履行的方法。將被萃取/插入/排列之輸入向量被置於第一暫存器中510,及至少假如遮蔽適用的話,一遮罩型態被置於第二 暫存器中。輸入向量之特定元件被接著選擇以包括入其符合指令之所得中511。假如遮蔽適用的話,遮罩型態被施加512至操作511之結果以產生所得。該所得被接著寫入至目的地513。假如遮蔽不適用,則所得為操作511之結果。
範例指令格式
文中所述之指令的實施例可被實施以不同格式。此外,範例系統、架構、及管線被詳述於下。指令之實施例可被執行於此等系統、架構、及管線之上,但不限定於那些詳述者。
一般性向量友善指令格式
向量友善指令格式是一種適於向量指令之指令格式(例如,有專屬於向量操作之某些欄位)。雖然描述了其中向量和純量操作兩者均透過向量友善指令格式而被支援的實施例,但其他實施例僅使用向量操作於向量友善指令格式。
圖6A-6B為方塊圖,其說明依據本發明之實施例的一般性向量友善指令格式及其指令模板。圖6A為說明依據本發明之實施例的一般性向量友善指令格式及其類別A指令模板之友塊圖;而圖6B為說明依據本發明之實施例的一般性向量友善指令格式及其類別B指令模板之方塊圖。明確地,一般性向量友善指令格式600係定義類別A 及類別B指令模板,其兩者包括無記憶體存取605指令模板和記憶體存取620指令模板。在向量友善指令格式之背景下的術語「一般性」指的是未連結任何特定指令集之指令格式。
雖然本發明之實施例將描述其中該向量友善指令格式支援下列:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小)(而因此,64位元組係由16個雙字元大小的元件或替代地8個四字元大小的元件所構成);具有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位元組向量運算元)。
圖6A中之類別A指令模板包括:1)於無記憶體存取605指令模板內顯示有無記憶體存取、全捨入(full round)控制類型操作610指令模板及無記憶體存取、資 料轉變類型操作615指令模板;以及2)於記憶體存取620指令模板內顯示有記憶體存取、暫時625指令模板及記憶體存取、非暫時630指令模板。圖6B中之類別B指令模板包括:1)於無記憶體存取605指令模板內顯示有無記憶體存取、寫入遮罩控制、部分捨入控制類型操作612指令模板及無記憶體存取、寫入遮罩控制、vsize類型操作617指令模板;以及2)於記憶體存取620指令模板內顯示有記憶體存取、寫入遮罩控制627指令模板。
一般性向量友善指令格式600包括依圖6A-6B中所示之順序所列出於下的如下欄位。配合以上之討論,於一實施例中,參考圖6A-B及7中以下所提出之格式細節,無記憶體存取指令類型605或記憶體存取指令類型620可被使用。讀取遮罩、輸入向量運算元及目的地之位址可被識別於以下所描述之暫存器位址欄位644中。於進一步實施例中,寫入遮罩被指明於寫入遮罩欄位670中。
格式欄位640-此欄位中之特定值(指令格式識別符值)獨特地識別向量友善指令格式,而因此識別指令流中之向量友善指令格式的指令之發生。如此一來,此欄位是選擇性的,因為其對於僅具有一般性向量友善指令格式之指令集是不需要的。
基礎操作欄位642-其內容係分辨不同的基礎操作。
暫存器指標欄位644-其內容(直接地或透過位址產生)指明來源及目的地運算元之位置,任其於暫存器中 或記憶體中。這些包括足夠的位元數以從PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N暫存器。雖然於一實施例中,N可高達三個來源及一個目的地暫存器,但替代實施例可支援更多或更少來源及目的地暫存器(例如,可支援高達兩個來源,其中這些來源之一亦作用為目的地;可支援高達三個來源,其中這些來源之一亦作用為目的地;可支援高達兩個來源及一個目的地)。
修飾符欄位646-其內容係從那些不指明記憶體存取者分辨其指明記憶體存取之一般性向量指令格式中的指令之發生;亦即,介於無記憶體存取605指令模板與記憶體存取620指令模板之間。記憶體存取操作係讀取及/或寫入至記憶體階層(於某些情況下使用暫存器中之值以指明來源及/或目的地位址),而無記憶體存取操作則不(例如,來源及目的地為暫存器)。雖然於一實施例中,此欄位亦於三個不同方式之間選擇以履行記憶體位址計算,但替代實施例可支援更多、更少、或不同方式以履行記憶體位址計算。
擴增(augmentation)操作欄位650-其內容係分辨除了基礎操作之外的多種不同操作之何者應被履行。此欄位是背景特定的。於本發明之一實施例中,此欄位被劃分為類別欄位668、阿爾發欄位652、及貝他欄位654。擴增操作欄位650容許共同族群的操作被履行於單一指令而非2、3或4個指令。
比率欄位660-其內容容許指標欄位之內容的定標(scaling)以供記憶體位址產生(例如,用於使用2scale *index+base之位址產生)。
置換欄位662A-其內容被使用為記憶體位址產生之部分(例如,用於使用2scale *index+base+displacement之位址產生)。
置換因數欄位662B(注意其直接於置換因數欄位662B上方的置換欄位662A之並列指示一者或另一者被使用)-其內容被使用為位址產生之部分;其指明將由記憶體存取之大小(N)所定標的置換因數-其中N為記憶體存取中之位元組數(例如,用於使用2scale *index+base+scaled displacement之位址產生)。多餘的低階位元被忽略而因此,置換因數欄位之內容被乘以記憶體運算元總大小(N)以產生最終置換來被用於計算有效位址。N之值係根據全運算碼欄位674(文中稍後所描述)及資料調處欄位654C而由處理器硬體判定於運行時間。置換欄位662A及置換因數欄位662B是選擇性的,因為其並未用於無記憶體存取605指令模板及/或不同的實施例可僅實施兩者之一或無。
資料元件寬度欄位664-其內容係分辨數個資料元件寬度之何者應被使用(於某些實施例用於所有指令;於其他實施例中僅用於部分指令)。此欄位是選擇性的,因為其是不需要的假如僅有一資料元件寬度被支援及/或資料元件寬度係使用運算碼之某形態而被支援。
寫入遮罩欄位670-其內容控制,以每資料元件位置為基,目的地向量運算元中之資料元件位置是否反應基礎操作及擴增操作之結果。類別A指令模板支援合併-寫入遮蔽,而類別B指令模板支援合併-和歸零-寫入遮蔽兩者。當合併時,向量遮罩容許目的地中之任一組元件被保護不被更新於任何操作之執行期間(由基礎操作及擴增操作所指明);於另一實施例中,保存目的地之各元件的舊值,其中相應的遮罩位元具有0。反之,當歸零時,向量遮罩容許目的地中之任一組元件被歸零於任何操作之執行期間(由基礎操作及擴增操作所指明);於另一實施例中,當相應的遮罩位元具有0值時目的地之一元件被設為0。此功能之一子集為控制其正履行中之操作的向量長度之能力(亦即,元件之跨距被修改,從第一至最後者);然而,當被修改之元件為連續時則其為不需要的。因此,寫入遮罩欄位670容許部分向量操作,包括載入、儲存、算術、邏輯,等等。雖然本發明之實施例係描述其中寫入遮罩欄位670之內容選擇含有待使用之寫入遮罩的數個寫入遮罩暫存器之一(而因此寫入遮罩欄位670之內容間接地識別其應履行之遮蔽),但替代實施例取代地或額外地容許寫入遮罩欄位670之內容直接地指明應履行之遮蔽。
即刻欄位672一其內容容許一即刻之指明。此欄位是選擇性的,因為在不支援即刻之一般性向量友善指令格式的實施中其並不存在以及在不使用即刻之指令中其並不存在。
類別欄位668-其內容係分辨於不同類別的指令之間。參考圖6A-B,此欄位之內容係選擇於類別A與類別B指令之間。於圖6A-B中,圓角的方塊係用以指示一特定值出現在一欄位中(例如,個別於圖6A-B中的類別欄位668之類別A 668A及類別B 668B)。
類別A之指令模板
於類別A之無記憶體存取605指令模板的情況下,阿爾發欄位652被解讀為RS欄位652A,其內容係分辨不同擴增操作類型之何者應被履行(例如,捨入652A.1及資料轉變652A.2被個別地指明給無記憶體存取、捨入類型操作610及無記憶體存取、資料轉變類型操作615指令模板),而貝他欄位654係分辨已指明類型之操作的何者應被履行。於無記憶體存取605指令模板中,比率欄位660、置換欄位662A、及置換比率欄位662B並未出現。
無記憶體存取指令模板-全捨入控制類型操作
於無記憶體存取全捨入控制類型操作610指令模板中,貝他欄位654被解讀為捨入控制欄位654A,其內容提供靜態捨入。雖然於本發明之已描述實施例中捨入控制欄位654A包括一抑制所有浮點例外(SAE)欄位656及一捨入操作控制欄位658,但替代實施例可支援將這些觀念編碼入相同欄位中或者僅具有這些觀念/欄位之一或另一(例如,可僅具有捨入操作控制欄位658)。
SAE欄位656-其內容係分辨是否使例外事件報告失效;當SAE欄位656之內容指示抑制啟用時,則一既定指令不會報告任何種類的浮點例外旗標且不會提出任何浮點例外處置器。
捨入操作控制欄位658-其內容係分辨捨入操作之族群的何者應履行(例如,捨進、捨去、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位658容許以每指令為基之捨入模式的改變。於其中處理器包括一用以指明捨入模式之控制暫存器的本發明之一實施例中,捨入操作控制欄位650之內容係置換該暫存器值。
無記憶體存取指令模板-資料轉變類型操作
於無記憶體存取資料轉變類型操作615指令模板中,貝他欄位654被解讀為資料轉變欄位654B,其內容係分辨數個資料轉變之何者應被履行(例如,無資料轉變、拌和、廣播)。
於類別A之記憶體存取620指令模板的情況下,阿爾發欄位652被解讀為逐出(eviction)暗示欄位652B,其內容係分辨逐出暗示之何者應被使用(於圖6A中,暫時652B.1及非暫時652B.2被個別地指明給記憶體存取、暫時625指令模板及記憶體存取、非暫時630指令模板),而貝他欄位654被解讀為資料調處欄位654C,其內容係分辨數個資料調處操作(亦已知為基元)之何者應被履行(例如,無調處;廣播;來源之上轉換;及目的地 之下轉換)。記憶體存取620指令模板包括比率欄位660、及選擇性地置換欄位662A或置換比率欄位662B。
向量記憶體指令履行向量載入自及向量儲存至記憶體,具有轉換支援。如同普通向量指令,向量記憶體指令以資料元件式方式將資料轉移自/至記憶體,其中被實際地轉移之元件係由其被選擇為寫入遮罩之向量遮罩的內容所支配。
記憶體存取指令模板-暫時
暫時資料為可能夠快地被再使用而受益自快取的資料。然而,此為暗示,且不同處理器可用不同方式來實施之,包括完全忽略暗示。
記憶體存取指令模板-非暫時
非暫時資料為不太可能夠快地被再使用而受益自第一階快取中之快取且應被給定逐出之優先權的資料。然而,此為暗示,且不同處理器可用不同方式來實施之,包括完全忽略暗示。
類別B之指令模板
於類別B之指令模板的情況下,阿爾發欄位652被解讀為寫入遮罩控制(Z)欄位652C,其內容係分辨其由寫入遮罩欄位670所控制之寫入遮蔽是否應為合併或歸零。
於類別B之無記憶體存取605指令模板的情況下,貝 他欄位654之部分被解讀為RL欄位657A,其內容係分辨不同擴增操作類型之何者應被履行(例如,捨入657A.1及向量長度(VSIZE)657A.2被個別地指明給無記憶體存取、寫入遮罩控制、部分捨入控制類型操作612指令模板及無記憶體存取、寫入遮罩控制、VSIZE類型操作617指令模板),而貝他欄位654之剩餘者係分辨已指明類型之操作的何者應被履行。於無記憶體存取605指令模板中,比率欄位660、置換欄位662A、及置換比率欄位662B並未出現。
於無記憶體存取、寫入遮罩控制、部分捨入控制類型操作610指令模板中,貝他欄位654之剩餘者被解讀為捨入操作欄位659A並使例外事件報告失效(一既定指令不會報告任何種類的浮點例外旗標且不會提出任何浮點例外處置器)。
捨入操作控制欄位659A-正如同捨入操作控制欄位658,其內容係分辨捨入操作之族群的何者應履行(例如,捨進、捨去、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位659A容許以每指令為基之捨入模式的改變。於其中處理器包括一用以指明捨入模式之控制暫存器的本發明之一實施例中,捨入操作控制欄位650之內容係置換該暫存器值。
於無記憶體存取、寫入遮罩控制、VSIZE類型操作617指令模板中,貝他欄位654被解讀為向量長度欄位659B,其內容係分辨數個資料向量長度之何者應被履行 (例如,128、256、或512位元組)。
於類別B之記憶體存取620指令模板的情況下,貝他欄位654之部分被解讀為廣播欄位657B,其內容係分辨廣播類型資料調處操作是否應被履行,而貝他欄位654之剩餘者被解讀為向量長度欄位659B。記憶體存取620指令模板包括比率欄位660、及選擇性的置換欄位662A、或置換比率欄位662B。
針對一般性向量友善指令格式600,一全運算碼欄位674顯示為包括格式欄位640、基礎操作欄位642、及資料元件寬度欄位664。雖然一實施例係顯示全運算碼欄位674包括所有這些欄位,但於其不支援這些所有的實施例中全運算碼欄位674可包括少於所有這些欄位。全運算碼欄位674提供運算碼(opcode)。
擴增操作欄位650、資料元件寬度欄位664、及寫入遮罩欄位670容許這些特徵以每指令為基被指明於一般性向量友善指令格式中。
寫入遮罩欄位與資料元件寬度欄位之組合產生定型的指令,由於其容許遮罩根據不同資料元件寬度而被應用。
於類別A和類別B中所發現的各種指令模板於不同情況下是有利的。於本發明之某些實施例中,不同處理器或一處理器內之不同核心可支援唯獨類別A、唯獨類別B、或兩個類別。例如,用於通用計算之高性能通用失序核心可支援唯獨類別B;主要用於圖形及/或科學(通量)計算之核心可支援唯獨類別A;而用於上述兩者之核 心可支援兩類別(當然,具有來自兩類別之模板與指令的某種混合但非來自兩類別之所有模板和指令的核心仍於本發明之範圍內)。同時,單一處理器可包括多個核心,其所有均支援相同類別或者其中不同核心支援不同類別。例如,於具有分離的圖形和通用核心之處理器中,主要用於圖形及/或科學計算的圖形核心之一可支援唯獨類別A,而通用核心之一或更多可為高性能通用核心,其具有用於支援唯獨類別B之通用計算的失序執行和暫存器重新命名。不具有分離圖形核心之另一處理器可包括其支援類別A與類別B兩者之一或更多通用依序或失序核心。當然,來自一類別之特徵亦可被實施於本發明之不同實施例中的其他類別中。以高階語言所寫的程式將被輸入(例如,僅於時間編譯或靜態編譯)多種不同的可執行形式,包括:1)僅具有由用於執行之目標處理器所支援之類別的指令;或2)具有使用所有類別之指令的不同組合所寫的替代常式並具有其根據由目前正執行碼之處理器所支援的指令以選擇供執行之常式的控制流程碼的形式。
範例特定向量友善指令格式
圖7為方塊圖,其說明依據本發明之實施例的範例特定向量友善指令格式。圖7顯示一特定向量友善指令格式700,其係由於指明欄位之位置、大小、解讀、和順序、以及那些欄位之部分的值而為特定的。特定向量友善指令格式700可用以擴充x86指令集,而因此某些欄位係類似 於或相同於現有的x86指令集及其擴充(例如,AVX)中所使用的那些欄位。此格式保持為與具有擴充之現有的x86指令集之前綴編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、置換欄位、及即刻欄位一致。映射入來自圖7之欄位的來自圖6之欄位被顯示。
應理解:雖然本發明係參考於一般性向量友善指令格式600之背景下的特定向量友善指令格式700來描述以利說明之目的,但本發明除了所請求的範圍之外並不限於特定向量友善指令格式700。例如,一般性向量友善指令格式600係考量針對各種欄位之多種可能的大小,而特定向量友善指令格式700則顯示為具有特定大小的欄位。藉由特定範例,雖然資料元件寬度欄位664被顯示為特定向量友善指令格式700中之一位元欄位,但本發明並未如此受限(亦即,一般性向量友善指令格式600係考量資料元件寬度欄位664之其他大小)。
一般性向量友善指令格式600包括依圖7A所示之順序的如下欄位。
EVEX前綴(位元組0-3)702-被編碼以四位元組之形式。
格式欄位640(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位640且其含有0x62(用於分辨本發明之一實施例中的向量友善指令格式之獨特值)。
第二-第四位元組(EVEX位元組1-3)包括提供特定 能力之數個位元欄位。
REX欄位705(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及657BEX位元組1,位元[5]-B所組成。EVEX.R、EVEX.X及EVEX.B位元欄位係提供如相應VEX位元欄位之相同的功能,且係使用1補數形式來編碼,亦即,ZMM0被編碼為1111B;ZMM15被編碼為0000B。指令之其他欄位將暫存器指標之較低三個位元編碼,如本技術中所已知者(rrr,xxx及bbb),以致Rrrr、Xxxx、及Bbbb可藉由加入EVEX.R、EVEX.X及EVEX.B而形成。
REX’欄位610-此為REX’欄位610之第一部分且為用以將擴充的32暫存器集之上16或下16個編碼的EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。於本發明之一實施例中,此位元(連同以下所指出之其他位元)被儲存以位元反轉格式來分辨(以眾所周知的x86 32位元模式)自BOUND指令,其真實運算碼位元組為62,但於MOD R/M欄位(如下所述)中並未接受MOD欄位中之11的值;本發明之替代實施例並未以反轉格式儲存此及以下所指示的位元。1之值被用以編碼下16暫存器。換言之,R’Rrrr係藉由組合EVEX.R’、EVEX.R、及來自其他欄位之其他RRR而形成。
運算碼映圖欄位715(EVEX位元組1,位元[3:0]-mmmm)-其內容係編碼一隱含的前導(leading)運算碼 位元組(0F、0F 38或0F 3)。
資料元件寬度欄位664(EVEX位元組2,位元[7]W)-係由記法EVEX.W所表示。EVEX.W係用以定義資料位元組(32位元資料元件或64位元資料元件)之粒度(大小)。
EVEX.vvvv 720(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼第一來源暫存器運算元,以反轉(1補數)形式指明且針對具有二或更多來源運算元之指令是有效的;2)EVEX.vvvv編碼目的地暫存器運算元,以1補數形式指明於某些向量位移;或3)EVEX.vvvv未編碼任何運算元,該欄位被保留且應含有1111b。因此,EVEX.vvvv720編碼其以反轉(1補數)形式所儲存之第一來源暫存器指明符的4個低階位元。根據該指令,一額外的不同EVEX位元欄位被用以擴充指明符大小至32暫存器。
EVEX.U 668類別欄位(EVEX位元組2,位元[2]-U)-假如EVEX.U=0,其指示類別A或EVEX.U0;假如EVEX.U=1,其指示類別B或EVEX.U1。
前綴編碼欄位725(EVEX位元組2,位元[1:0]-pp)-提供基礎操作欄位之額外位元。除了提供EVEX前綴格式之傳統SSE指令的支援以外,此亦具有壓縮SIMD前綴之優點(取代需要一位元組來表達SIMD前綴,EVEX前綴僅需要2位元)。於一實施例中,為了支援其使用SIMD前綴(66H,F2H,F3H)之傳統SSE指令於傳 統格式和EVEX前綴格式兩者,這些傳統SIMD前綴被編碼入SIMD前綴編碼欄位;且於運行時間被擴充為傳統SIMD前綴,在被提供至解碼器之PLA以前(因此PLA可執行這些傳統指令之傳統和EVEX格式而無修改)。雖然較新的指令可使用EVEX前綴編碼欄位之內容為運算碼擴充,但某些實施例以類似方式擴充一致性而容許由這些傳統SIMD前綴指明不同意義。一替代實施例可重新設計PLA以支援2位元SIMD前綴編碼,而因此不需要擴充。
阿爾發欄位652(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α顯示)-如先前所述,此欄位為背景特定的。
貝他欄位654(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0 、EVEX.r2-0 、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以β β β顯示)-如先前所述,此欄位為背景特定的。
REX’欄位610-此為REX’欄位之剩餘者且為可用以將擴充的32暫存器集之上16或下16個編碼的EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元被儲存以位元反轉格式。1之值被用以編碼下16暫存器。換言之,V’VVVV係藉由組合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位670(EVEX位元組3,位元[2:0]-kkk)-其內容係指明寫入遮罩暫存器中之暫存器的指 標,如先前所述者。於本發明之一實施例中,特定值EVEX.kkk=000具有一特殊行為,其隱含無寫入遮罩被用於特定指令(此可被實施於多種方式,包括使用固線至所有電路之寫入遮罩或者其旁通遮蔽硬體之硬體)。
真實運算碼欄位730(位元組4)亦已知為運算碼位元組。運算碼之部分被指明於此欄位中。
Mod R/M欄位740(位元組5)包括MOD欄位742、Reg欄位744、及R/M欄位746。如先前所述,MOD欄位742之內容係分辨於記憶體存取與非記憶體存取操作之間。Reg欄位744之角色可被概述為兩種情況:編碼目的地暫存器運算元或來源暫存器運算元之任一者、或者被視為運算碼擴充且不被用於編碼任何指令運算元。R/M欄位746之角色可包括下列:編碼其參照記憶體位址之指令運算元、或者編碼目的地暫存器運算元或來源暫存器運算元之任一者。
比率、指標、基礎(SIB)位元組(位元組6)-如先前所述,比率欄位650之內容被用於記憶體位址產生。SIB.xxx 754及SIB.bbb 756-這些欄位之內容先前已針對暫存器指標Xxxx及Bbbb而被提及。
置換欄位662A(位元組7-10)-當MOD欄位742含有10時,位元組7-10為置換欄位662A,且其工作相同於傳統32位元置換(disp32)且工作於位元組粒度。
置換因數欄位662B(位元組7)-當MOD欄位742含有01時,位元組7為置換因數欄位662B。此欄位之位 置係相同於傳統x86指令集8位元置換(disp8),工作於位元組粒度。因為disp8為符號擴充,所以其僅可定址於-128與127位元組偏移之間;針對64位元組快取線,disp8使用其僅可被設為四個實際有用值-128、-64、0、及64之8個位元;因為常需要較大的範圍,所以disp32被使用;然而,disp32需要4個位元組。相反於disp8及disp32,置換因數欄位662B為disp8之再解讀;當使用置換因數欄位662B時,實際置換係由置換因數欄位乘以記憶體運算元存取之大小(N)的內容所決定。此類型的置換被稱為disp8*N。此係減少平均指令長度(用於置換但具有大得多的範圍之單一位元組)。此壓縮的置換係基於假設其有效置換為記憶體存取之粒度的倍數,而因此,位址偏移之多餘的低階位元無須被編碼。換言之,置換因數欄位662B取代傳統x86指令集8位元置換。因此,置換因數欄位662B被編碼以如x86指令集8位元置換之相同方式(因此ModRM/SIB編碼規則並無改變),唯一例外為disp8被超載至disp8*N。換言之,編碼規則或編碼長度並無改變,而僅於藉由硬體之置換值的解讀(其需由記憶體運算元之大小定標該置換以獲得位元組式的位址偏移)。
即刻欄位672係操作如先前所述。
全運算碼欄位
圖7B為方塊圖,其說明組成全運算碼欄位674之特 定向量友善指令格式700的欄位,依據本發明之一實施例。明確地,全運算碼欄位674包括格式欄位640、基礎操作欄位642、及資料元件寬度(W)欄位664。基礎操作欄位642包括前綴編碼欄位725、運算碼映圖欄位715、及真實運算碼欄位730。
暫存器指標欄位
圖7C為方塊圖,其說明組成暫存器指標欄位644之特定向量友善指令格式700的欄位,依據本發明之一實施例。明確地,暫存器指標欄位644包括REX欄位705、REX’欄位710、MODR/M.reg欄位744、MODR/M.r/m欄位746、VVVV欄位720、xxx欄位754、及bbb欄位756。
擴增操作欄位
圖7D為方塊圖,其說明組成擴增操作欄位650之特定向量友善指令格式700的欄位,依據本發明之一實施例。當類別(U)欄位668含有0時,其表示EVEX.U0(類別A 668A);當其含有1時,其表示EVEX.U1(類別B 668B)。當U=0且MOD欄位742含有11(表示無記憶體存取操作)時,阿爾發欄位652(EVEX位元組3,位元[7]-EH)被解讀為rs欄位652A。當rs欄位652A含有一個1(捨入1252A.1)時,貝他欄位654(EVEX位元組3,位元[6:4]-SSS)被解讀為捨入控制欄位654A。 捨入控制欄位654A包括一位元SAE欄位656及二位元捨入操作欄位658。當rs欄位652A含有0(資料轉變652A.2)時,貝他欄位654(EVEX位元組3,位元[6:4]-SSS)被解讀為三位元資料轉變欄位654B。當U=0且MOD欄位742含有00、01、或10(表示記憶體存取操作)時,阿爾發欄位652(EVEX位元組3,位元[7]-EH)被解讀為逐出暗示(EH)欄位652B而貝他欄位654(EVEX位元組3,位元[6:4]-SSS)被解讀為三位元資料調處欄位654C。
當U=1時,阿爾發欄位652(EVEX位元組3,位元[7]-EH)被解讀為寫入遮罩控制(Z)欄位652C。當U=1且MOD欄位742含有11(表示無記憶體存取操作)時,貝他欄位654之部分(EVEX位元組3,位元[4]-S0 )被解讀為RL欄位657A;當其含有1(捨入657A.1)時,貝他欄位654之剩餘者(EVEX位元組3,位元[6-5]-S2-1 )被解讀為捨入操作欄位659A;而當RL欄位657A含有0(VSIZE 1257.A2)時,貝他欄位654之剩餘者(EVEX位元組3,位元[6-5]-S2-1 )被解讀為向量長度欄位659B(EVEX位元組3,位元[6-5]-L1-0 )。當U=1且MOD欄位742含有00、01、或10(表示記憶體存取操作)時,貝他欄位654(EVEX位元組3,位元[6:4]-SSS)被解讀為向量長度欄位659B(EVEX位元組3,位元[6-5]-L1-0 )及廣播欄位657B(EVEX位元組3,位元[4]-B)。
範例暫存器架構
圖8為依據本發明之一實施例的暫存器架構800之方塊圖。於所示之實施例中,有32個512位元寬之向量暫存器810;這些暫存器被稱為zmm0至zmm31。較低的16個zmm暫存器之較低階256位元被疊置在暫存器ymm0-16之上。較低的16個zmm暫存器之較低階128位元(ymm暫存器之較低階128位元)被疊置在暫存器xmm0-15之上。特定向量友善指令格式700係操作於這些疊置的暫存器檔案上,如下表所示。
換言之,向量長度欄位659B選擇於最大長度與一或更多其他較短長度之間,其中每一此較短長度為先前長度之長度的一半;而無向量長度欄位659B之指令模板係操作於最大向量長度上。此外,於一實施例中,特定向量友善指令格式700之類別B指令模板係操作於緊縮或純量單 /雙精確浮點資料上以及緊縮或純量整數資料上。純量操作為履行在zmm/ymm/xmm暫存器中之較低階資料元件位置上的操作;較高階資料元件位置係根據實施例而被保留如執行前之相同者或被歸零。
寫入遮罩暫存器815-於所示之實施例中,有8個寫入遮罩暫存器(k0至k7),大小各為64位元。於一替代實施例中,寫入遮罩暫存器1415之大小為16位元。如先前所述,於本發明之一實施例中,向量遮罩暫存器k0無法被使用為寫入遮罩;當其通常將指示k0之編碼被用於寫入遮罩時,其選擇0xFFFF之固線式(hardwired)寫入遮罩,有效地除能該指令之寫入遮蔽。
通用暫存器825-於所示之實施例中,有十六個64位元的通用暫存器,其係配合現有的x86定址模式而使用以定址記憶體運算元。這些暫存器被稱為下列名稱:RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量(scalar)浮點堆疊暫存器檔案(x87堆疊)845,於其上係混疊MMX緊縮整數平坦暫存器檔案850-於所示之實施例中,x87堆疊為八元件的堆疊,用以對其使用x87指令集擴充之32/64/80位元的浮點資料履行純量浮點操作;而MMX暫存器被用以對64位元的緊縮整數資料履行操作,以及保留運算元給某些於MMX與XMM暫存器之間所履行的操作。
本發明之替代實施例可使用較寬的或較窄的暫存器。 此外,本發明之替代實施例可使用更多的、更少的、或不同的暫存器檔案及暫存器。
範例核心架構、處理器、及電腦架構
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施可包括:1)包括一或更多用於通用計算之通用依序核心及/或一或更多用於通用計算之通用失序核心的CPU;及2)包括一或更多主要用於圖形及/或科學(通量)之特殊用途核心。此類不同處理器導致不同的電腦系統架構,其可包括:1)與CPU分離之晶片上的共處理器;2)與CPU相同之封裝中之分離晶粒上的共處理器;3)與CPU相同之晶粒上的共處理器(於此情況下,此一共處理器有時稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)可包括在相同晶粒上之上述CPU(有時稱為應用核心或應用處理器)、上述共處理器、及額外功能之晶片上的系統。接下來描述範例核心架構,而接著描述範例處理器及電腦架構。
範例核心架構 依序及失序核心方塊圖
圖9A為一方塊圖,其說明依據本發明之實施例的範例依序的管線及範例暫存器重新命名的、失序的發出/執行管線兩者。圖9B為一方塊圖,其說明包括於一依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名的、失序的發出/執行架構核心兩者。圖9A-B中之實線方塊係說明依序管線及依序核心,而虛線方塊之選配性加入則說明暫存器重新命名的、失序的發出/執行管線及核心。假設依序形態為失序形態之子集,則將描述失序形態。
於圖9A中,處理器管線900包括提取級902、長度解碼級904、解碼級906、配置級908、重新命名級910、排程(亦已知為調度(dispatch)或發出)級912、暫存器讀取/記憶體讀取級914、執行級916、寫回/記憶體寫入級918、異常處置級922、及確定(commit)級924。
圖9B顯示處理器核心990,其包括耦合至執行引擎單元950之前端單元930,兩者均耦合至記憶體單元970。核心990可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者混合或替代核心型。當作又另一選項,核心990可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元930包括一耦合至指令快取單元934之分支預測單元932,指令快取單元934係耦合至指令翻譯旁看 緩衝器(TLB)936,指令翻譯旁看緩衝器(TLB)936係耦合至指令提取單元938,指令提取單元938係耦合至解碼單元940。解碼單元940(或解碼器)可解碼指令,並產生下列之一者或更多者以當作輸出:微操作、微碼進入點、微指令、其他指令、或其他控制信號,其係解碼(或者反射、或被衍生)自原始指令。解碼單元940可使用各種不同機制而被實施。適當機制之範例包括(但不限定於)查找表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM),等等。於一實施例中,核心990包括微碼ROM或其他媒體,其係儲存某些微指令之微碼(例如,於解碼單元940中或者另外於前端單元930內)。解碼單元940係耦合至執行引擎單元950中之重新命名/配置器單元952。
執行引擎單元950包括重新命名/配置器單元952,其係耦合至收回單元954及一組一或更多排程器單元956。排程器單元956代表任何數目的不同排程器,包括保留站、中央指令視窗,等等。排程器單元956被耦合至實體暫存器檔案單元958。實體暫存器檔案單元958之每一者代表一或更多實體暫存器檔案,其各不同者係儲存一或更多不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為待執行之下一指令的位址之指令指針),等等。於一實施例中,實體暫存器檔案單元958包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元 可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元958被收回單元954疊置以說明各種方式,其中暫存器重新命名及失序執行可被實施(例如,使用重排序緩衝器及收回暫存器檔案;使用未來檔案、歷史緩衝器、及收回暫存器檔案;使用暫存器映圖及一群暫存器,等等)收回單元954及實體暫存器檔案單元958被耦合至執行叢集960。執行叢集960包括一組一或更多執行單元962及一組一或更多記憶體存取單元964。執行單元962可履行各種操作(例如,位移、相加、相減、相乘)並針對各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括專用於特別功能或功能集的數個執行單元,而其他實施例可包括僅有一個執行單元或者多個均履行所有功能之執行單元。排程器單元956、實體暫存器檔案單元958、執行叢集960被顯示為可能多數的,因位某些實施例係產生分離的管線給某些類型的資料/操作(例如,純量整數管線;純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線;及/或各具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集的記憶體存取管線一而於分離記憶體存取管線之情況下,實施某些實施例,其中僅有此管線之執行叢集具有記憶體存取單元964)。亦應理解其中使用分離管線時,一或更多這些管線可為失序發出/執行而其他的為依序。
該組記憶體存取單元964被耦合至記憶體單元970, 其包括資料TLB單元972,其耦合至資料快取單元974,其耦合至第二階(L2)快取單元976。於一範例實施例中,記憶體存取單元964可包括載入單元、儲存位址單元、及儲存資料單元,其每一者係耦合至記憶體單元970中之資料TLB單元972。指令快取單元934被進一步耦合至記憶體單元970中之第二階(L2)快取單元976。L2快取單元976被耦合至一或更多其他階的快取且最終耦合至主記憶體。
舉例而言,範例暫存器重新命名、失序發出/執行核心架構可實施管線900如下:1)指令提取938履行提取和長度解碼級902和904;2)解碼單元940履行解碼級906;3)重新命名/配置器單元952履行配置級908和重新命名級910;4)排程器單元956履行排程級912;5)實體暫存器檔案單元958和記憶體單元970履行暫存器讀取/記憶體讀取級914;執行叢集960履行執行級916;6)記憶體單元970和實體暫存器檔案單元958履行寫回/記憶體寫入級118;7)各種單元可被關聯於異常處置級922;及8)收回單元954和實體暫存器檔案單元958履行確定級924。
核心990可支援一或更多指令集(例如,x86指令集(具有某些已隨著較新版本而加入之擴充);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON等選擇性額外擴充)),包括文中所述之指令。於 一實施例中,核心990包括邏輯以支援緊縮資料指令集擴充(例如,AVX1、AVX2,及/或一般性向量友善指令格式(U=0及/或U=1)之某形式,如先前所描述),藉此容許由許多多媒體應用程式所使用之操作得以使用緊縮資料來履行。
應理解其核心可支援多執行緒(multi-threading)(指令二或更多組的操作或執行緒),及可用包括時間切割多執行緒、同時多執行緒(其中單一實體核心提供邏輯核心給其實體核心正在同時多執行緒之每一線程)、或其組合之各種方式來進行(例如,時間切割的提取和解碼以及之後的同時多執行緒,諸如於Intel的超執行緒技術)。
雖然暫存器重新命名被描述於失序執行之情境,應理解其暫存器重新命名可被使用於依序架構。雖然處理器之例示實施例亦包括分離指令和資料快取單元934/974以及共用的第二階(L2)快取單元976,但替代實施例可具有用於指令和資料之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階的內部快取。於某些實施例中,系統可包括內部快取與核心及/或處理器外之外部快取的組合。替代地,所有快取可於核心及/或處理器之外。
特定範例依序核心架構
圖10A-B說明更特定的範例依序核心架構之方塊圖,該核心將為一晶片中之數個邏輯區塊(包括相同類型 及/或不同類型的其他核心)之一。邏輯區塊透過高頻寬互連網路(例如,環狀網路)而通連與某固定功能邏輯、記憶體I/O介面、及其他必要的I/O邏輯,根據應用而定。
圖10A為依據本發明之實施例的單一處理器核心之方塊圖,連同其連接至晶粒上互連網路1002且具有其第二階(L2)快取之局部子集1004。於一實施例中,指令解碼器1000支援具有緊縮資料指令集擴充之x86指令集。L1快取1006容許針對快取記憶體之低潛時存取進入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元1008和向量單元1010係使用分離的暫存器組(個別地,純量暫存器1012和向量暫存器1014)且於其間轉移之資料被寫入至記憶體並從第一階(L1)快取1006讀回,但本發明之替代實施例亦可使用不同的方式(例如,使用單一暫存器組或包括一通訊路徑,其容許資料被轉移於兩暫存器檔案之間而不被寫入或讀回)。
L2快取之局部子集1004為劃分為分離之局部子集(每一處理器核心一個)的總體L2快取之部分。各處理器核心具有通至L2快取1004之其本身局部子集的直接存取路徑。由處理器核心所讀取之資料被儲存於其L2快取子集1004中並可被快速地存取,平行與存取其本身局部L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集1004且被清除自其他子集(假如需要的話)。環狀網路確保共用資料之相干 (coherency)。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理器於晶片內彼此通連。各環狀資料路徑為1012位元寬於每方向。
圖10B為依據本發明之實施例的圖10A中之處理器核心的部分之擴充視圖。圖10B包括L1快取1004之L1資料快取1006A部分,以及有關向量單元1010及向量暫存器1014之更多細節。明確地,向量單元1010為16寬的向量處理單元(VPU)(參見16寬的ALU 1028),其執行整數、單一精確浮點與雙精確浮點指令之一或更多者。VPU支援:利用拌和單元1020以拌和暫存器輸入、利用數字轉換單元1022A-B之數字轉換、及利用記憶體輸入上之複製單元1024的複製。寫入遮罩暫存器1026容許闡述所得的向量寫入。
具有集成記憶體控制器及圖形之處理器
圖11為依據本發明之實施例的處理器1100之方塊圖,該處理器可具一個以上的核心、可具有一集成記憶體控制器、且可具有集成圖形。圖11中之實線方塊係說明一具有單一核心1102A、系統代理器1110、一組一或更多匯流排控制器單元1116之處理器1100,而虛線方塊之額外加入則說明一具有多個核心1102A-N、系統代理器1110中之一組一或更多集成記憶體控制器單元1114、及特殊用途邏輯1108之處理器1100。
因此,處理器1100之不同實施方式可包括:1)具有 特殊用途邏輯1108之CPU為集成圖形及/或科學(通量)邏輯(其可包括一或更多核心),而核心1102A-N為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者之組合);2)具有核心1102A-N之共處理器為主要用於圖形及/或科學(通量)之大量特殊用途核心;及3)具有核心1102A-N之共處理器為大量通用依序核心。因此,處理器1100可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多集成核心(MIC)共處理器(包括30或更多核心)嵌入處理器,等等。處理器可被實施於一或更多晶片上。處理器1100可為一或更多基底之一部分及/或可被實施於一或更多基底上,使用數種製程科技之任一種,諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或更多階的快取、一組或者一或更多共用快取單元1106、及耦合至該組集成記憶體控制器單元1114之外部記憶體(未顯示)。該組共用快取單元206可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階的快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中,一種環狀為基的互連單元1112係互連集成圖形邏輯1108、該組共用快取單元1106、以及系統代理器單元1110/集成記憶體控制器單元1114,但替代實施例可使用任何眾所周知的技術來互連此等單元。於一實施例中,相 干性被維持於一或更多快取單元1106與核心1102A-N之間。
於某些實施例中,一或更多核心1102A-N能夠進行多執行緒。系統代理器1110包括那些協調及操作核心1102A-N之組件。系統代理器單元1110可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者可包括用以調節核心1102A-N和集成圖形邏輯1108之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
就架構指令集而言,核心1102A-N可為同質的或異質的;亦即,二或更多核心1102A-N能夠執行相同的指令集,而其他者能夠執行該指令集之僅僅一子集或者一不同指令集。
範例電腦架構
圖12-15為範例電腦架構之方塊圖。用於筆記型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微處理器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之習知技術中已知的其他系統設計和組態亦為適當的。一般而言,能夠結合處理器及/或其他執行邏輯之多種系統或電子裝置(如文中所揭示者)通常為適當的。
現在參考圖12,其顯示依據本發明之一實施例的系統1200之方塊圖。系統1200可包括一或更多處理器1210、1215,其被耦合至控制器集線器1220。於一實施例中,控制器集線器1220包括一圖形記憶體控制器集線器(GMCH)1290及一輸入/輸出集線器(IOH)1250(其可於分離的晶片上);GMCH 1290包括記憶體和圖形控制器,其係耦合記憶體1240和共處理器1245;IOH 1250將輸入/輸出(I/O)裝置1260耦合至GMCH 1290。替代地,記憶體和圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1240和共處理器1245被直接耦合至處理器1210、以及一具有IOH 1250之單一晶片中的控制器集線器1220。
額外處理器1215之選擇性本質係以虛線被標示於圖3中。各處理器1210、1215可包括文中所述之一或更多處理核心並可為某版本的處理器1100。
記憶體1240可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1220通連與處理器1210、1215,經由諸如前側匯流排(FSB)等多點(multi-drop)匯流排、諸如快速路徑互連(QPI)等點對點介面、或類似連接1295。
於一實施例中,共處理器1245為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器,等等。於 一實施例中,控制器集線器1220可包括一集成圖形加速器。
有多種差異於實體資源1210、1215之間,關於包括架構、微架構、熱、電力耗損特性等等重要量度之波譜。
於一實施例中,處理器1210執行其控制一般類型之資料處理操作的指令。共處理器指令可嵌入指令之內。處理器1210識別這些共處理器指令為應由附加共處理器1245所執行之類型。因此,處理器1210將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發出至共處理器1245。共處理器1245接受並執行所接收的共處理器指令。
現在參考圖13,其顯示依據本發明之一實施例的第一更特定範例系統1300之方塊圖。如圖13中所示,多處理器系統1300為點對點互連系統,並包括經由點對點互連1350而耦合之第一處理器1370和第二處理器1380。處理器1370與1380之每一者可為相同版本的處理器1100。於本發明之一實施例中,處理器1370和1380個別為處理器1210和1215,而共處理器1338為共處理器1245。於另一實施例中,處理器1370和1380個別為處理器1210和共處理器1245。
處理器1370和1380被顯示為個別地包括集成記憶體控制器(IMC)單元1372和1382。處理器1370亦包括點對點(P-P)介面1376和1378為其匯流排控制器單元之部分;類似地,第二處理器1380包括P-P介面1386和 1388。處理器1370、1380可使用P-P介面電路1378、1388而經由點對點(P-P)介面1350以交換資訊。如圖13中所示,IMC 1372和1382將處理器耦合至個別記憶體,亦即記憶體1332和記憶體1334,其可為局部地裝附至個別處理器之主記憶體的部分。
處理器1370、1380可各使用點對點介面電路1376、1394、1386、1398而經由個別P-P介面1352、1354與晶片組1390交換資訊。晶片組1390可選擇性地經由高性能介面1339而與共處理器1338交換資訊。於一實施例中,共處理器1338為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器,等等。
共用快取(未顯示)可被包括於任一處理器中或者於兩處理器之外部,而經由P-P互連與處理器連接,以致處理器之局部快取資訊的任一者或兩者可被儲存於共用快取中,假如處理器被置於低電力模式下的話。
晶片組1390可經由介面1396而被耦合至第一匯流排1316。於一實施例中,第一匯流排1316可為周邊組件互連(PCI)匯流排,或者諸如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,雖然本發明之範圍不因此受限。
如圖13中所示,各種I/O裝置1314可被耦合至第一匯流排1316,連同一將第一匯流排1316耦合至第二匯流排1320之匯流排橋1318。於一實施例中,諸如共處理 器、高通量MIC處理器、GPGPU、加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器等一或更多額外處理器1315被耦合至第一匯流排1316。於一實施例中,第二匯流排1320為低接腳數(LPC)匯流排。各種裝置可被耦合至第二匯流排420,包括(例如)鍵盤及/或滑鼠1322、通訊裝置1327及儲存單元1328,諸如碟片驅動器或其他大量儲存裝置,可包括指令/碼及資料1330,於一實施例中。再者,聲頻I/O 1324可被耦合至第二匯流排1320。注意:其他架構是可能的。例如,取代圖13之點對點架構,系統可實施多點匯流排其他此類架構。
現在參考圖14,其顯示依據本發明之一實施例的第二更特定範例系統1400之方塊圖。圖13和14中之類似元件係使用類似的參考數字,且圖14已省略了圖13之某些形態以避免混淆圖14之其他形態。
圖14顯示其處理器1370、1380可個別地包括集成記憶體和I/O控制邏輯(「CL」)1372和1382。因此,CL 1372、1382包括集成記憶體控制器單元並包括I/O控制邏輯。圖14顯示其不僅記憶體1332、1334耦合至CL 1372、1382,同時I/O裝置1414亦耦合至控制邏輯1372、1382。傳統I/O裝置1415被耦合至晶片組1390。
現在參考圖15,其顯示依據本發明之一實施例的SoC 1500之方塊圖。與圖11類似的元件係使用類似參考數字。同時,虛線方塊為更先進的SoC上之選擇性特 徵。於圖15中,互連單元1502被耦合至:應用程式處理器1510,其包括一組一或更多核心202A-N及共用快取單元1106;系統代理器單元1110;匯流排控制器單元1116;集成記憶體控制器單元1114;一組一或更多共處理器1520,其可包括集成圖形邏輯、影像處理器、聲頻處理器、和視頻處理器;靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(DMA)單元1532;及顯示單元1540,用以耦合至一或更多外部顯示。於一實施例中,共處理器1520包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入處理器,等等。
文中所揭露之機構的實施例可被實施以硬體、軟體、韌體、或此類實施方式之組合。本發明之實施例可被實施為電腦程式或程式碼,其係執行在包括至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上。
程式碼(諸如圖13中所示之碼1330)可被應用於輸入指令,以履行文中所述之功能並產生輸出資訊。輸出資訊可被以已知方式應用於一或更多輸出裝置。為了本申請案,處理系統包括任何系統,其具有一處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或物件導向的編程語言來 與處理系統通連。程式碼亦可被實施以組合或機械語言(假如需要的話)。事實上,文中所描述之機構對於任何特定編程語言並無範圍上之限制。於任何情況下,該語言可為編譯的或解讀的語言。
至少一實施例之一或更多形態可由機器可讀取媒體上所儲存之代表性指令來實施,該媒體代表處理器內之各種邏輯,當由機器所讀取時其致使機器製造用以履行文中所述之技術的邏輯。此類表示(已知為「IP核心」可被儲存於有形的、機器可讀取的媒體上且被供應至各個消費者或製造商,以供載入其實際上製造該邏輯或處理器之製造機器內。
此類機器可讀取儲存媒體可包括(無限制地)由機器或裝置所製造或形成之物件之非暫態的、有形的配置,包括:諸如硬碟、包括軟碟、光碟、微型碟片唯讀記憶體(CD-ROM)、微型碟片可寫入(CD-RW)和磁光碟之任何類型碟片等儲存媒體;諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)等半導體裝置;磁或光學卡;或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括非暫態的、有形的機器可讀取媒體,其含有指令或含有設計資料,諸如硬體描述 語言(HDL),其定義文中所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
仿真(包括二元翻譯、碼編輯,等等)
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換為目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、包括動態編譯之動態二元翻譯)、編輯、仿真、或者轉換為一或更多其他指令以供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或部分於處理器上部分於處理器外。
圖16為方塊圖,其對比軟體指令轉換器之使用,以將來源指令集中之二元指令轉換為目標指令集中之二元指令,依據本發明之實施例。於例示之實施例中,指令轉換器為軟體指令轉換器,雖然替代地該指令轉換器可被實施以軟體、韌體、硬體、或其各種組合。圖16顯示高階語言1602之程式可使用x86編譯器1604來編譯以產生x86二元碼1606,其可由一具有至少一x86指令集核心之處理器1616所本機地執行。具有至少一x86指令集核心之處理器1616代表任何可履行如具有至少一x86指令集核心之Intel處理器的實質上相同功能之處理器,藉由相容地執行或者處理(1)Intel x86指令集核心之指令集的基本部分或(2)用來運行於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體的物件碼版本,以 便達成如具有至少一x86指令集核心之Intel處理器的實質上相同結果。x86編譯器1604代表一種能夠產生x86二元碼1606(例如,物件碼)之編譯器,x86二元碼706可(具有或不具有額外鏈路處理)被執行於具有至少一x86指令集核心之處理器1616上。類似地,圖16顯示高階語言1602之程式可使用替代指令集編譯器1608而被編譯以產生替代的指令集二元碼1610,其可由一不具有至少一x86指令集核心之處理器1614所本機地執行(例如,具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器1612被用以將x86二元碼1606轉換為可由不具有至少一x86指令集核心之處理器1614所本地執行的碼。此轉換的碼不太可能相同於替代的指令集二元碼1610,因為能夠執行此操作之指令轉換器是難以製造的;然而,該轉換的碼將完成一般操作並由來自替代指令集之指令所組成。因此,指令轉換器1612代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許不具有x86指令集處理器或核心之處理器或其他電子裝置來執行x86二元碼1606。
100‧‧‧處理核心
101‧‧‧管線
102‧‧‧暫存器儲存空間
103_1-103_N‧‧‧功能單元
104‧‧‧向量暫存器空間
104_1-104_N‧‧‧遮蔽邏輯
105_1-105_N‧‧‧遮蔽邏輯
106‧‧‧遮罩暫存器空間
107‧‧‧向量暫存器儲存空間
501‧‧‧第一暫存器
502‧‧‧邏輯電路
503‧‧‧輸出
504‧‧‧遮蔽層邏輯電路
505‧‧‧暫存器
506‧‧‧暫存器
507‧‧‧暫存器
510‧‧‧輸入暫存器
600‧‧‧一般性向量友善指令格式
605‧‧‧無記憶體存取
610‧‧‧無記憶體存取、全捨入控制類型操作
612‧‧‧無記憶體存取、寫入遮罩控制、部分捨入控制類型操作
615‧‧‧無記憶體存取、資料轉變類型操作
617‧‧‧無記憶體存取、寫入遮罩控制、vsize類型操作
620‧‧‧記憶體存取
627‧‧‧記憶體存取、寫入遮罩控制
640‧‧‧格式欄位
642‧‧‧基礎操作欄位
644‧‧‧暫存器指標欄位
646‧‧‧修飾符欄位
650‧‧‧擴增操作欄位
652‧‧‧阿爾發欄位
652A‧‧‧RS欄位
652A.1‧‧‧捨入
652A.2‧‧‧資料轉變
652B‧‧‧逐出暗示欄位
652B.1‧‧‧暫時
652B.2‧‧‧非暫時
654‧‧‧貝他欄位
654A‧‧‧捨入控制欄位
654B‧‧‧資料轉變欄位
654C‧‧‧資料調處欄位
656‧‧‧SAE欄位
657A‧‧‧RL欄位
657A.1‧‧‧捨入
657A.2‧‧‧向量長度(VSIZE)
657B‧‧‧廣播欄位
658‧‧‧捨入操作控制欄位
659A‧‧‧捨入操作欄位
659B‧‧‧向量長度欄位
660‧‧‧比率欄位
662A‧‧‧置換欄位
662B‧‧‧置換因數欄位
664‧‧‧資料元件寬度欄位
668‧‧‧類別欄位
668A‧‧‧類別A
668B‧‧‧類別B
670‧‧‧寫入遮罩欄位
672‧‧‧即刻欄位
674‧‧‧全運算碼欄位
700‧‧‧特定向量友善指令格式
702‧‧‧EVEX前綴
705‧‧‧REX欄位
710‧‧‧REX’欄位
715‧‧‧運算碼映圖欄位
720‧‧‧VVVV欄位
725‧‧‧前綴編碼欄位
730‧‧‧真實運算碼欄位
740‧‧‧Mod R/M位元組
742‧‧‧MOD欄位
744‧‧‧Reg欄位
746‧‧‧R/M欄位
754‧‧‧SIB.xxx
756‧‧‧SIB.bbb
800‧‧‧暫存器架構
810‧‧‧向量暫存器
815‧‧‧寫入遮罩暫存器
825‧‧‧通用暫存器
845‧‧‧純量浮點堆疊暫存器檔案
850‧‧‧MMX緊縮整數平坦暫存器檔案
900‧‧‧處理器管線
902‧‧‧提取級
904‧‧‧長度解碼級
906‧‧‧解碼級
908‧‧‧配置級
910‧‧‧重新命名級
912‧‧‧排程級
914‧‧‧暫存器讀取/記憶體讀取級
916‧‧‧執行級
918‧‧‧寫回/記憶體寫入級
922‧‧‧異常處置級
924‧‧‧確定級
930‧‧‧前端單元
932‧‧‧分支預測單元
934‧‧‧指令快取單元
936‧‧‧指令翻譯旁看緩衝器(TLB)
938‧‧‧指令提取單元
940‧‧‧解碼單元
950‧‧‧執行引擎單元
952‧‧‧重新命名/配置器單元
954‧‧‧收回單元
956‧‧‧排程器單元
958‧‧‧實體暫存器檔案單元
960‧‧‧執行叢集
962‧‧‧執行單元
964‧‧‧記憶體存取單元
970‧‧‧記憶體單元
972‧‧‧資料TLB單元
974‧‧‧資料快取單元
976‧‧‧第二階(L2)快取單元
990‧‧‧處理器核心
1000‧‧‧指令解碼器
1002‧‧‧晶粒上互連網路
1004‧‧‧第二階(L2)快取之局部子集
1006‧‧‧L1快取
1006A‧‧‧L1資料快取
1008‧‧‧純量單元
1010‧‧‧向量單元
1012‧‧‧純量暫存器
1014‧‧‧向量暫存器
1020‧‧‧拌和單元
1022A-B‧‧‧數字轉換單元
1024‧‧‧複製單元
1026‧‧‧寫入遮罩暫存器
1028‧‧‧16寬的ALU
1100‧‧‧處理器
1102A-N‧‧‧核心
1106‧‧‧共用快取單元
1108‧‧‧特殊用途邏輯
1110‧‧‧系統代理器
1112‧‧‧環狀為基的互連單元
1114‧‧‧集成記憶體控制器單元
1116‧‧‧匯流排控制器單元
1200‧‧‧系統
1210,1215‧‧‧處理器
1220‧‧‧控制器集線器
1240‧‧‧記憶體
1245‧‧‧共處理器
1250‧‧‧輸入/輸出集線器(IOH)
1260‧‧‧輸入/輸出(I/O)裝置
1290‧‧‧圖形記憶體控制器集線器(GMCH)
1295‧‧‧連接
1300‧‧‧多處理器系統
1314‧‧‧I/O裝置
1315‧‧‧額外處理器
1316‧‧‧第一匯流排
1318‧‧‧匯流排橋
1320‧‧‧第二匯流排
1322‧‧‧鍵盤及/或滑鼠
1324‧‧‧聲頻I/O
1327‧‧‧通訊裝置
1328‧‧‧儲存單元
1330‧‧‧指令/碼及資料
1332‧‧‧記憶體
1334‧‧‧記憶體
1338‧‧‧共處理器
1339‧‧‧高性能介面
1350‧‧‧點對點互連
1352,1354‧‧‧P-P介面
1370‧‧‧第一處理器
1372,1382‧‧‧集成記憶體控制器(IMC)單元
1376,1378‧‧‧點對點(P-P)介面
1380‧‧‧第二處理器
1386,1388‧‧‧P-P介面
1390‧‧‧晶片組
1394,1398‧‧‧點對點介面電路
1396‧‧‧介面
1400‧‧‧系統
1414‧‧‧I/O裝置
1415‧‧‧傳統I/O裝置
1500‧‧‧SoC
1502‧‧‧互連單元
1510‧‧‧應用程式處理器
1520‧‧‧共處理器
1530‧‧‧靜態隨機存取記憶體(SRAM)單元
1532‧‧‧直接記憶體存取(DMA)單元
640‧‧‧顯示單元
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二元碼
1608‧‧‧指令集編譯器
1610‧‧‧指令集二元碼
1612‧‧‧指令轉換器
1614‧‧‧不具有至少一x86指令集核心之處理器
1616‧‧‧具有至少一x86指令集核心之處理器
1354‧‧‧P-P介面
本發明係經由後附圖式之圖形中的範例(而非限制)來說明,其中類似參考數字係指示類似元件且其中: 圖1顯示一指令執行管線;圖2A及2B比較純量相對於向量處理;圖3A至3E顯示習知技術插入、萃取及排列指令;圖4A至4P顯示改良的插入、萃取及排列指令;圖5A及5B係有關用以實施改良的插入、萃取及排列指令之執行邏輯電路;圖6A-6B為方塊圖,其說明依據本發明之實施例的一般性向量友善指令格式及其指令模板(template);圖7為方塊圖,其說明依據本發明之實施例的範例特定向量友善指令格式;圖8為依據本發明之一實施例的暫存器架構之方塊圖;圖9A為一方塊圖,其說明依據本發明之實施例的範例依序的管線及範例暫存器重新命名的、失序的發出/執行管線兩者;圖9B為一方塊圖,其說明依據本發明之實施例的處理器中所包括的依序架構核心之範例實施例及範例暫存器重新命名的、失序的發出/執行架構核心兩者;圖10A-B說明一更特定的範例依序核心架構之方塊圖,該核心將為一晶片中的數個邏輯區塊(包括相同類型及/或不同類型之其他核心)之一。圖11為依據本發明之實施例的一可具有一個以上核心、可具有集成記憶體控制器、及可具有集成圖形之處理器的方塊圖; 圖12為依據本發明之一實施例的系統之方塊圖;圖13為依據本發明之一實施例的第一更特定範例系統之方塊圖;圖14為依據本發明之一實施例的第二更特定範例系統之方塊圖;圖15為依據本發明之一實施例的晶片上系統(SoC)之方塊圖;圖16為方塊圖,其對比軟體指令轉換器之使用,以將來源指令集中之二元指令轉換為目標指令集中之二元指令,依據本發明之實施例。

Claims (20)

  1. 一種用於萃取之設備,包含:指令執行邏輯電路,用以執行:第一指令及第二指令,其中該第一指令和該第二指令兩者從個別第一和第二輸入向量的多個第一無重疊區段之一選擇第一族群的輸入向量元件,該第一族群具有第一位元寬度,該些多個第一無重疊區段之每一者具有如該第一族群之相同位元寬度;及第三指令及第四指令,其中,該第三指令和該第四指令兩者從個別第三和第四輸入向量的多個第二無重疊區段之一選擇第二族群的輸入向量元件,該第二族群具有大於該第一位元寬度之第二位元寬度,該些多個第二無重疊區段之每一者具有如該第二族群之相同位元寬度;及遮蔽層電路,用以依據該第一和第三指令之個別即刻運算元而遮蔽該第一和第三指令之該第一和第二族群於第一粒度,如此產生之個別所得為該第一和第三指令之個別所得,及依據該第二和第四指令之個別即刻運算元而遮蔽該第二和第四指令之該第一和第二族群於第二粒度,如此產生之個別所得為該第二和第四指令之個別所得。
  2. 如申請專利範圍第1項之設備,其中該第二族群為該第一族群之大小的兩倍。
  3. 如申請專利範圍第2項之設備,其中該第一族群為128位元而該第二族群為256位元。
  4. 如申請專利範圍第1項之設備,其中該第一粒度 為32位元而該第二粒度為64位元。
  5. 如申請專利範圍第1項之設備,其中該些向量元件為浮點資料值。
  6. 如申請專利範圍第1項之設備,其中假如該元件之位置被遮蔽,則該遮蔽層電路容許目的地向量中之元件維持。
  7. 如申請專利範圍第1項之設備,其中假如該元件之位置被遮蔽,則該遮蔽層電路以固定值覆寫目的地向量中之元件。
  8. 一種用於萃取之方法,包含:執行第一指令,包括:從第一輸入向量的多個第一無重疊區段之一選擇第一族群的輸入向量元件,該第一族群具有第一位元寬度,該些多個第一無重疊區段之每一者具有如該第一族群之相同位元寬度、及依據該第一指令之即刻運算元而遮蔽該選擇的第一族群於第一粒度;執行第二指令,包括:從第二輸入向量的多個第二無重疊區段之一選擇第二族群的輸入向量元件,該第二族群具有該第一位元寬度,該第二輸入向量的該些多個第二無重疊區段之每一者具有如該第一族群之相同位元寬度、及依據該第二指令之即刻運算元而遮蔽該選擇的第二族群於第二粒度,該第一粒度較該第二粒度更細;執行第三指令,包括:從第三輸入向量的多個第三無重疊區段之一選擇第三族群的輸入向量元件,該第三族群具有第二位元寬度,該些多個第三無重疊區段之每一者具 有如該第三族群之相同位元寬度,該第二位元寬度較該第一位元寬度更大、及依據該第三指令之即刻運算元而遮蔽該選擇的第三族群於該第二粒度;執行第四指令,包括:從第四輸入向量的多個第四無重疊區段之一選擇第四族群的輸入向量元件,該第四族群具有該第二位元寬度,該第四輸入向量的該些多個第四無重疊區段之每一者具有如該第三族群之相同位元寬度、及依據該第四指令之即刻運算元而遮蔽該選擇的第四族群於該第一粒度。
  9. 如申請專利範圍第8項之方法,其中該第一、第二、第三及第四指令係由指令執行管線內之相同執行單元所執行。
  10. 如申請專利範圍第8項之方法,其中該第二族群為該第一族群之大小的兩倍。
  11. 如申請專利範圍第10項之方法,其中該第一族群為128位元而該第二族群為256位元。
  12. 如申請專利範圍第8項之方法,其中該第一粒度為32位元而該第二粒度為64位元。
  13. 如申請專利範圍第8項之方法,其中該些向量元件為浮點資料值。
  14. 如申請專利範圍第8項之方法,其中該遮蔽包括以下之任一者:假如該元件之位置被遮蔽則容許目的地向量中之元件維持;及假如該元件之位置被遮蔽則以固定值覆寫目的地向量中之元件。
  15. 一種用於萃取之設備,包含:指令執行邏輯電路,用以執行:第一指令及第二指令,其中該第一指令和該第二指令兩者依據第一和第二個別即刻運算元而從個別第一和第二輸入向量的多個第一無重疊區段之一選擇第一族群的輸入向量元件,該第一族群具有第一位元寬度,該些多個第一無重疊區段之每一者具有如該第一族群之相同位元寬度;及第三指令及第四指令,其中該第三指令和該第四指令兩者依據第三和第四個別即刻運算元而從個別第三和第四輸入向量的多個第二無重疊區段之一選擇第二族群的輸入向量元件,該第二族群具有大於該第一位元寬度之第二位元寬度,該些多個第二無重疊區段之每一者具有如該第二族群之相同位元寬度;及遮蔽層電路,用以依據該第一和第三指令之個別即刻運算元而遮蔽該第一和第三指令之該第一和第二族群於第一粒度,如此產生之個別所得為該第一和第三指令之個別所得,及依據該第二和第四指令之個別即刻運算元而遮蔽該第二和第四指令之該第一和第二族群於第二粒度,如此產生之個別所得為該第二和第四指令之個別所得。
  16. 如申請專利範圍第15項之設備,其中該第二族群為該第一族群之大小的兩倍。
  17. 如申請專利範圍第16項之設備,其中該第一族群為128位元而該第二族群為256位元。
  18. 如申請專利範圍第15項之設備,其中該第一粒度為32位元而該第二粒度為64位元。
  19. 如申請專利範圍第15項之設備,其中該些向量元件為浮點資料值。
  20. 如申請專利範圍第15項之設備,其中該遮蔽包括以下之任一者:假如該元件之位置被遮蔽則容許目的地向量中之元件維持;及假如該元件之位置被遮蔽則以固定值覆寫目的地向量中之元件。
TW101147489A 2011-12-23 2012-12-14 改良的萃取指令背景之設備及方法 TWI489382B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067182 WO2013095630A1 (en) 2011-12-23 2011-12-23 Apparatus and method of improved extract instructions background

Publications (2)

Publication Number Publication Date
TW201346734A TW201346734A (zh) 2013-11-16
TWI489382B true TWI489382B (zh) 2015-06-21

Family

ID=48669268

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101147489A TWI489382B (zh) 2011-12-23 2012-12-14 改良的萃取指令背景之設備及方法

Country Status (4)

Country Link
US (3) US9588764B2 (zh)
CN (2) CN104115114B (zh)
TW (1) TWI489382B (zh)
WO (1) WO2013095630A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095618A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
CN104094182B (zh) 2011-12-23 2017-06-27 英特尔公司 掩码置换指令的装置和方法
WO2013095620A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved insert instructions
US9658850B2 (en) 2011-12-23 2017-05-23 Intel Corporation Apparatus and method of improved permute instructions
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US10297001B2 (en) * 2014-12-26 2019-05-21 Intel Corporation Reduced power implementation of computer instructions
US10338920B2 (en) * 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
US10162634B2 (en) * 2016-05-20 2018-12-25 International Business Machines Corporation Extendable conditional permute SIMD instructions
US20200371793A1 (en) * 2019-05-24 2020-11-26 Texas Instruments Incorporated Vector store using bit-reversed order
CN110347954B (zh) * 2019-05-24 2021-06-25 因特睿科技有限公司 面向复杂Web应用的服务化方法
FR3101983B1 (fr) 2019-10-11 2021-11-12 St Microelectronics Grenoble 2 Détermination d'un bit indicateur
FR3101980B1 (fr) 2019-10-11 2021-12-10 St Microelectronics Grenoble 2 Processeur
FR3101982B1 (fr) 2019-10-11 2024-03-08 St Microelectronics Grenoble 2 Détermination d'un bit indicateur

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4881168A (en) * 1986-04-04 1989-11-14 Hitachi, Ltd. Vector processor with vector data compression/expansion capability
US5832288A (en) * 1996-10-18 1998-11-03 Samsung Electronics Co., Ltd. Element-select mechanism for a vector processor
US20020184480A1 (en) * 1999-09-30 2002-12-05 Ali Sazegari Vectorized table lookup
TW200811705A (en) * 2005-11-15 2008-03-01 Nxp Bv Data processing apparatus and method
US20090187739A1 (en) * 1998-12-16 2009-07-23 Mario Nemirovsky Method and Apparatus for Improved Computer Load and Store Operations

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524256A (en) 1993-05-07 1996-06-04 Apple Computer, Inc. Method and system for reordering bytes in a data stream
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6081884A (en) * 1998-01-05 2000-06-27 Advanced Micro Devices, Inc. Embedding two different instruction sets within a single long instruction word using predecode bits
US7133040B1 (en) * 1998-03-31 2006-11-07 Intel Corporation System and method for performing an insert-extract instruction
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6191606B1 (en) 1998-09-10 2001-02-20 Intel Corporation Method and apparatus for reducing standby leakage current using input vector activation
AU2001286383A1 (en) 2000-05-05 2001-11-26 Ruby B. Lee A method and system for performing permutations with bit permutation instructions
WO2001098898A1 (en) 2000-06-21 2001-12-27 Bops, Inc. Methods and apparatus for indirect vliw memory allocation
US7467287B1 (en) 2001-12-31 2008-12-16 Apple Inc. Method and apparatus for vector table look-up
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
JP3772976B2 (ja) 2002-05-22 2006-05-10 ソニー株式会社 プロセッサ、エンコーダ、デコーダ及び電子機器
US7487502B2 (en) 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7085942B2 (en) 2003-05-21 2006-08-01 Agilent Technologies, Inc. Method and apparatus for defining an input state vector that achieves low power consumption in a digital circuit in an idle state
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409062C (en) 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
JP3988144B2 (ja) 2004-02-23 2007-10-10 日本電気株式会社 ベクトル処理装置、及び、追い越し制御回路
CN101031904A (zh) 2004-07-13 2007-09-05 3加1科技公司 带有两类子处理器以执行多媒体应用的可编程处理器系统
US7721069B2 (en) 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US7996833B2 (en) 2004-07-31 2011-08-09 Hewlett-Packard Development Company, L.P. Method and system for replacing instructions and instruction blocks in computer code
JP5260962B2 (ja) * 2004-12-30 2013-08-14 インテル・コーポレーション 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム
CN1828544B (zh) 2005-03-02 2013-01-02 英特尔公司 利用同步开销以改善多线程性能的机制
US7421566B2 (en) * 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US7516299B2 (en) 2005-08-29 2009-04-07 International Business Machines Corporation Splat copying GPR data to vector register elements by executing lvsr or lvsl and vector subtract instructions
US7457938B2 (en) 2005-09-30 2008-11-25 Intel Corporation Staggered execution stack for vector processing
US9436468B2 (en) 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
US20070139421A1 (en) 2005-12-21 2007-06-21 Wen Chen Methods and systems for performance monitoring in a graphics processing unit
US20080010413A1 (en) 2006-07-07 2008-01-10 Krishnan Kunjunny Kailas Method and apparatus for application-specific dynamic cache placement
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US8312069B2 (en) 2006-10-17 2012-11-13 International Business Machines Corporation Permute unit and method to operate a permute unit
US9495724B2 (en) 2006-10-31 2016-11-15 International Business Machines Corporation Single precision vector permute immediate with “word” vector write mask
US7921274B2 (en) 2007-04-19 2011-04-05 Qualcomm Incorporated Computer memory addressing mode employing memory segmenting and masking
US20090150648A1 (en) 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions
US20090172348A1 (en) 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US8667250B2 (en) * 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8281109B2 (en) * 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US8909901B2 (en) 2007-12-28 2014-12-09 Intel Corporation Permute operations with flexible zero control
US20090307175A1 (en) 2008-06-10 2009-12-10 International Business Machines Corporation Parallel pattern matching on multiple input streams in a data processing system
US8051226B2 (en) 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
US8555034B2 (en) 2009-12-15 2013-10-08 Oracle America, Inc. Execution of variable width vector processing instructions
US8996845B2 (en) 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US20120185670A1 (en) 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
US20120216011A1 (en) 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking
US9436469B2 (en) 2011-12-15 2016-09-06 Intel Corporation Methods to optimize a program loop via vector instructions using a shuffle table and a mask store table
WO2013095620A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved insert instructions
US9658850B2 (en) 2011-12-23 2017-05-23 Intel Corporation Apparatus and method of improved permute instructions
CN104094182B (zh) 2011-12-23 2017-06-27 英特尔公司 掩码置换指令的装置和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4881168A (en) * 1986-04-04 1989-11-14 Hitachi, Ltd. Vector processor with vector data compression/expansion capability
US5832288A (en) * 1996-10-18 1998-11-03 Samsung Electronics Co., Ltd. Element-select mechanism for a vector processor
US20090187739A1 (en) * 1998-12-16 2009-07-23 Mario Nemirovsky Method and Apparatus for Improved Computer Load and Store Operations
US20020184480A1 (en) * 1999-09-30 2002-12-05 Ali Sazegari Vectorized table lookup
TW200811705A (en) * 2005-11-15 2008-03-01 Nxp Bv Data processing apparatus and method

Also Published As

Publication number Publication date
US20170242704A1 (en) 2017-08-24
CN104115114B (zh) 2018-06-12
CN108241504A (zh) 2018-07-03
US20130275730A1 (en) 2013-10-17
WO2013095630A1 (en) 2013-06-27
CN104115114A (zh) 2014-10-22
TW201346734A (zh) 2013-11-16
US20180081689A1 (en) 2018-03-22
US9588764B2 (en) 2017-03-07

Similar Documents

Publication Publication Date Title
TWI489382B (zh) 改良的萃取指令背景之設備及方法
TWI804200B (zh) 執行複數的熔合乘-加指令的系統與方法
TWI475480B (zh) 向量頻率壓縮指令
TWI489383B (zh) 遮蔽排列指令的裝置及方法
TWI517039B (zh) 用以對緊縮資料執行差異解碼之系統,設備,及方法
TWI582690B (zh) 用於滑動視窗資料存取之設備及方法
TW201730746A (zh) 用以融合指令之硬體設備及方法
TW201243726A (en) Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
TWI515650B (zh) 用於遮罩暫存器擴充操作之設備及方法
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI481991B (zh) 改良型排列指令之裝置及方法
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
US10459728B2 (en) Apparatus and method of improved insert instructions
TWI550508B (zh) 用於複製資料結構之設備及方法
WO2013095619A1 (en) Super multiply add (super madd) instruction with three scalar terms
TW201732572A (zh) 用於跨步的載入(strided load)的系統、設備及方法
TWI526930B (zh) 用以複製及遮蔽資料結構之設備及方法
TW201738733A (zh) 執行指令以排列遮罩的系統及方法
TW201740290A (zh) 用於轉換編碼格式的硬體設備及方法
TWI637317B (zh) 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置
TWI603289B (zh) 用以從三維座標計算三維z曲線指標的機器階層指令
TWI590155B (zh) 用以從4維座標計算4維z曲線指標的機器階層指令
TWI470541B (zh) 用於滑動視窗資料收集之設備及方法
TW201730756A (zh) 用於從鏈結結構取回元件的設備和方法