TWI470542B - 擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之系統、裝置、及方法 - Google Patents

擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之系統、裝置、及方法 Download PDF

Info

Publication number
TWI470542B
TWI470542B TW100146249A TW100146249A TWI470542B TW I470542 B TWI470542 B TW I470542B TW 100146249 A TW100146249 A TW 100146249A TW 100146249 A TW100146249 A TW 100146249A TW I470542 B TWI470542 B TW I470542B
Authority
TW
Taiwan
Prior art keywords
operand
source
destination
instruction
data element
Prior art date
Application number
TW100146249A
Other languages
English (en)
Other versions
TW201241744A (en
Inventor
Adrian Jesus Corbal San
Roger Espasa Sans
Robert Valentine
Santiago Galan Duran
Jeffrey G Wiedemeier
Sridhar Samudrala
Milind B Girkar
Andrew T Forsyth
Victor W Lee
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 TW201241744A publication Critical patent/TW201241744A/zh
Application granted granted Critical
Publication of TWI470542B publication Critical patent/TWI470542B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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

Description

擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之系統、裝置、及方法
本發明之領域大體上關於電腦處理器架構,更具體而言,關於執行時造成特定結果的指令。
有多種方式藉由操控資料結構佈局來改善記憶體利用率。對於某些演算法,例如3D轉換及打光,有二種配置頂點資料的基本方式。傳統方法是結構(Array of structures,AoS)配置陣列,以結構用於每一頂點。另一方式是為陣列配置結構(Structure of arrays,SoA),其配置陣列中的資料以用於每一座標。
有二種選項以用於計算AoS格式的資料:當資料處於AoS配置時對資料執行操作或是將其重新配置(將其拌和)成SoA配置。對原始AoS配置執行單一指令多重資料(Single Instruction,Multiple Data(SIMD)操作要求更多計算且某些計算未利用所有可以取得的SIMD元件。因此,此選項一般較無效率。
由於資料已準備好用於更最佳化的垂直方式的計算,所以,SoA配置允許更有效率的利用SIMD的平行性。相反地,對AoS資料直接地計算導致消耗SIMD執行槽但僅產生單一純量結果的水平操作,如同先前程式碼範例中很多的「不管」(DC)槽所示般。
隨著SIMD技術的出現,資料組織的選擇變得更重要 且應該小心地根據要對資料執行的操作。在某些應用中,傳統的資料配置不會導致最佳性能。應用程式開發者已被鼓勵開發不同的資料配置且及用於有效率計算的資料分割政策。這意指在給定應用程式中使用AoS、SoA、及甚至混合SoA的組合。
在下述說明中,揭示眾多特定細節。但是,需瞭解,沒有這些特定細節,仍可實施本發明的實施例。在其它情形中,習知的電路、結構及技術未詳細顯示以免有礙本說明的瞭解。
在本說明書中所指的「一實施例」、「實施例」、「舉例實施例」、等等均表示所述的實施例可以包含特別的特點、結構、或特徵,但是,每一實施例不一定包含特定特點、結構、或特徵。此外,這些詞不一定意指相同的實施例。此外,當配合實施例來說明特定特點、結構、或特徵時,配合其它不論是否被明確說明的實施例而變更這些特點、結構、或特徵是被視為在習於此技術者的知識之內。
於下詳述「擴展」及「壓縮」指令的數個實施例以及可以用以執行這些指令的系統、架構、指令格式等等的實施例。擴展及壓縮有利於包含轉換AoS和SoA配置的數個不同區域。舉例而言,從XYZW XYZW XYZW...XYZW樣式至XXXXXXXX YYYYYYYY ZZZZZZZZZZ WWWWWWWW 種樣式。另一此區域是矩陣轉置。具有長度16的向量可以被視為4X4陣列元件。藉由擴展指令,可以提取一列四個連續元件M[0]、M[1]、M[2]、及M[3]並擴展(藉由合併以保持建立陣列)成4X4陣列的列之一(舉例而言,向量元件1,3,7及11)。
此外,根據動態條件而將記憶體儲存於連續位置中之通用碼將從壓縮及擴展指令得利。舉例而言,在某些情形中,將具有非共同條件的罕見元件壓縮成暫時記憶體空間。將它們一起包裝儲存會增加計算密度。如此執行的一方式是經由使用於下詳述的壓縮。在處理暫時記憶體空間(或FIFO)之後,可以使用擴展以將這些罕見元回復至它們的原始位置。擴展也被用以將被包裝成佇列的資料再展開。
擴展
從擴展開始,擴展的執行會促使處理器根據寫入遮罩運算元決定的主動元件而寫入從源運算元(記憶體或暫存器運算元)至目的運算元(典型上,暫存器運算元)中的(稀疏)資料元件位置之連續資料元件。此外,源運算元的資料元件可以視它們的尺寸及資料元件在目的暫存器中的尺寸而向上轉換。舉例而言,假使源運算元是記憶體運算元且其資料元件是16位元大小且目的暫存器的資料元件是32位元時,則要被儲存在目的地中的記憶體運算元的資料元件被上轉成32位元。稍後將詳述上轉的實例及 它們如何被編碼成指令格式。
此指令的格式是「VEXPANDPS zmm1{k1}zmm2/U(mem)」,其中,zmm1及zmm2分別是目的地元和源向量暫存器運算元(例如,128-、256-、512-位元暫存器、等等),k1是寫入遮罩運算元(例如16位元暫存器)、及U(mem)是源記憶體位置運算元。不論從記憶體中取出什麼都是從記憶體位址啟始的總體連續位元且可以視目的暫存器的大小(大小通常與目的地暫存器相同大小)而定(128-、256-、512-位元等等)。在某些實施例中,寫入遮罩也是具有不同的大小(8位元、32位元、等等)。此外,在某些實施例中,並非所有寫入遮罩的位元由指令(舉例而言,僅有較低的八個最低效位元被使用)使用。當然,VEXPANDPS是指令的運算碼。典型上,每一運算碼是明確地定義於指令中。舉例而言,經由使用稍後說明的例如「W」等資料粒度的標示,資料元件的大小可以被定義於指令的「前置」中。在大部份的實施例中,W將標示每一資料元件是32或64位元。假使資料元件的大小是32位元,以及,源是512位元大小,則每一源有十六(16)資料元件。
此指令一般是被寫入遮罩的,以致於僅有那些具有設定在寫入遮罩暫存器(在上述實例中為K1)中的對應位元的那些元件會在目的地暫存器被修改。具有在寫入遮罩暫存器中清楚的對應位元之目的地暫存器中的元件固持它們的先前值。但是,當未使用寫入遮罩時(或是設定給全 部之寫入遮罩),此指令可以用於更高性能向量負載,其中,對於記憶體參考將產生快取線分離具有高信心度。
擴展指令執行的實例顯示於圖1中。在本實例中,源是被定址於RAX暫存器中找到的位址之記憶體。當然,位址記憶體可以儲存在其它暫存器中或是在指令中立即找到。本實例中的寫入遮罩顯示為0x4DB1。對於具有「1」值之寫入遮罩的每一位元位置,來自記憶體源的資料元件儲存在對應位置處之目的地暫存器中。舉例而言,寫入遮罩的第一位置(例如,k2[0]是「1」,標示對應的目的地資料元件位置(例如,目的地暫存器的第一資料元件)將具有來自源記憶體的資料元件儲存於其中。在此情形中,其將被儲存作為與RAX位址相關聯的資料元件。遮罩的下三個位元是「0」,標示目的地暫存器的對應資料元件被獨自留下(在圖中顯示為「Y」)。寫入遮罩中的下一個「1」值是在第五位元位置(例如,k2[4])。這表示接續於(連續於)與RAX暫存器相關聯的資料元件之後的資料元件要被儲存在目的地暫存器的第五資料元件槽中。其餘的寫入遮罩位元位置被用以決定記憶體源中還有那些資料元件要被儲存在目的地暫存器中(在本實施例中,儲存全部8個資料元件,但是,可以視寫入遮罩而有更少或更多)。此外,在儲存於目的地中之前,來自記憶體源的資料元件可以被上轉以配合例如從16位元浮點值至32位元值的目的地之資料元件大小。已於上述中詳述上轉的實例及如何將它們編碼成指令格式。因此,在某些實施中, 在擴展之,記憶體運算元的連續的資料元件被儲暫存器。
圖2顯示以暫存器運算元作為源的擴展指令的執行實例。類似於先前的圖,本實例中的寫入遮罩是0x4DB1。對於具有「1」值的寫入遮罩的每一位元位置,來自暫存器源的資料元件儲存在對應位置處的目的地暫存器中。舉例而言,寫入遮罩的第一位置(例如,k2[0])是「1」,標示對應的目的地資料元件位置(例如目的地暫存器的第一資料元件)將具有來自源暫存器的資料元件儲存在其中。在此情形中,其將是源暫存器的第一資料元件。遮罩的下三個位元是「0」,標示目的地暫存器的對應資料元件獨自留下(在圖式中顯示為「Y」)。寫入遮罩中的下一個「1」值是在第五位元位置(例如,k2[4])。這表示接續於(連續於)與源暫存器的第一儲存資料之後的資料元件要被儲存在目的地暫存器的第五資料元件槽中。其餘的寫入遮罩位元位置被用以決定暫存器源中還有那些資料元件要被儲存在目的地暫存器中(在本實施例中,儲存全部8個資料元件,但是,可以視寫入遮罩而有更少或更多)。
圖3顯示執行擴展指令的虛擬碼的實例。
圖4顯示處理器中的擴展指令的使用實施例。在401提取具有目的地運算元、源運算元(記憶體或暫存器)、寫入遮罩、及偏移(假使被包含時)的擴展指令。在某些實施例中,目的地運算元是512位元向量暫存器(例如ZMM1)且寫入遮罩是16位元暫存器(例如k1)。假使 有記憶體源運算元時,則其可以是儲存位址(或其部份)或立即代表位址或其部份之暫存器。典型地,目的地及源運算元具有相同的大小。在某些實施例中,它們都是512位元大小。但是,在其它實施例中,它們都是例如128或256位元的不同大小。
在403,將擴展指令解碼。取決於指令的格式,則各式各樣的資料可以在此階段被解譯,舉例而言,是否要上轉(或其它資料轉換)、哪些暫存器要被寫入或取出、什麼記憶體位址來自源、等等。
在405,取出/讀取源運算元值。在部份的實施例中,此時,與記憶體源位置位址及連續的(後續的)位址(和它們的資料元件)相關聯的資料元件被讀取。(例如,整個快取線被讀取)。在實施例中,源為暫存器被讀取。
假使有任何資料元件轉換要執行(例如上轉),則可以在407執行。舉例而言,來自記憶體的16位元資料元件可以被上轉成32位元資料元件。
在409,由執行資源執行擴展指令(或例如微操作等包含例如指令的操作)。此執行造成根據寫入遮罩的「主動」元件(位元位置)以決定哪些來自源運算元的值要被儲存作為目的地中的稀疏資料元件。此決定的實例顯示於圖1及2中。
在411,適當的源運算元的資料元件被儲存於對應於寫入遮罩的「主動」元件之位置處的目的地暫存器中。再度地,這個的實例顯示於圖1及2中。雖然409和411被 分別顯示,但是,在某些實施例中,它們一起執行作為指令的執行的一部份。
圖5顯示處理擴展指令的方法之實施例。在本實施例中,假定操作401-407中的某些而非全部在之前已被執行,但是,它們未被顯示以免模糊下述的細節。舉例而言,未顯示提取及解碼,也未顯示運算元(源及寫入遮罩)取出。
在501,決定在第一位元位置的寫入遮罩是否標示對應的源位置是否應被儲存於目的地暫存器的對應資料元件位置中。舉例而言,在第一位置的寫入遮罩是否具有例如代表目的地暫存器的第一資料元件位置應由來自源的值覆寫(在此情形中,經由源運算元存取之連續的資料元件的第一資料元件)之「1」值?
當在第一位元位置的寫入遮罩未標示目的地暫存器中應有改變時,則寫入遮罩中的下一位元位置將被評估且不作改變。當在第一位元位置的寫入遮罩標示目的地之第一資料元件位置中應有改變時,則在507中,將第一源資料元件(例如,記憶體位置或源暫存器的最低效資料元件)被儲存於第一資料元件位置。取決於實施,在505,記憶體資料元件被轉換成目的地的資料元件大小。這也可能發生在501的評估之前。在511,將可被寫入目的地暫存器之來自源的後續(連續的)資料元件準備好。
在513,決定評估的寫入遮罩位置是否是寫入遮罩的最後位置或者目的地的所有資料元件位置是否已被填充。 假使為真,則操作結束。
假使為假,則在515中寫入遮罩中的下一位元位置是要被評估的。此評估發生於503且類似於501的決定,但不是用於寫入遮罩的第一位元位置。假使決定為是,則儲存資料元件、等等(507、509、及511),以及假使決定為否,則在505,目的地之資料元件被獨自留下。
此外,雖然此圖及上述說明將各別的第一位置視為最低效位置,但是,在某些實施例中,第一位置是最高效位置。
壓縮
壓縮指令的執行造成處理器根據寫入遮罩運算元決定的主動元件而將來自源運算元(典型上為暫存器運算元)資料元件儲存(包裝)於目的地運算元(記憶體或暫存器運算元)中的連續元件中。此外,假使源是記憶體時,源運算元的資料元件可以視它們的大小及資料元件的尺寸為何而被下轉。舉例而言,假使記憶體運算元的資料元件是16位元大小且源暫存器的資料元件是32位元時,則要被儲存在記憶體中的暫存器的資料元件被下轉成16位元。稍後將詳述下轉及它們如何被編碼成指令格式的實例。壓縮的執行也可以被視為產生邏輯上從元件對齊位址開始映射的位元組/字/雙字串。當由遮罩禁能的元件未加至串時,串的長度視寫入遮罩而定。壓縮典型上用於壓縮稀疏資料成佇列。此外,未使用寫入遮罩(或是對所有設定的 寫入遮罩),其用於更高的性能向量,其中,對於記憶體參考將產生快取線分離具有高信心度。
此指令的格式是「VCOMPRESSPS zmm2/mem{k1},D(zmm1)」,其中,zmm1和zmm2分別是源和目的地向量暫存器運算元(例如128-、246-、512-位元暫存器),k1是寫入遮罩運算元(例如16位元暫存器)、及mem是記憶體位置。對於包含在指令中的記憶體運算元也有偏移。儲存至記憶體的是始於記憶體位址之總體的連續位元且可以是數個大小(128-、256-、512-位元、等等)中之一。在某些實施例中,寫入遮罩也具不同的大小(8位元、32位元、等等)。此外,在某些實施例中,並非所有寫入遮罩的位元由指令使用(舉例而言,僅有較低的8個最低效位元被使用)。當然,VCOMPRESSPS是指令的運算碼。典型地,每一運算元被明確地定義於指令中。資料元件的大小可以被定義於指令的「前置碼」中,舉例而言,經由使用此處說明的例如「W」等資料粒度的標示,資料元件的大小可以被定義於指令的「前置碼」中。在大部份的實施例中,W將標示每一資料元件是32或64位元。假使資料元件的大小是32位元,以及,源是512位元大小,則每一源有十六(16)資料元件。
處理器中壓縮指令的執行實例顯示於圖6中。在本實例中,目的地記憶體被定址在與RAX暫存器中發現的位址相關聯的位置處。當然,記憶體位置可以儲存在其它位置中或在指令中立即找到。本實例中的寫入遮罩顯示為 0x4DB1。對於具有「1」值之寫入遮罩的每一情形,來自源(例如ZMM暫存器)的資料元件連續地儲存(包裝)在記憶體中。舉例而言,寫入遮罩的第一位置(例如,k2[0]是「1」,標示對應的源資料元件位置(例如,源暫存器的第一資料元件)應被寫入至記憶體中。在此情形中,其將被儲存作為與RAX位址相關聯的資料元件。遮罩的下三個位元是「0」,標示源暫存器的對應資料元件未被儲存在記憶體中(在圖中顯示為「Y」)。寫入遮罩中的下一個「1」值是在第五位元位置(例如,k2[4])。這表示接續於(連續於)與RAX暫存器相關聯的資料元件之後的資料元件是具有儲存於其中的源暫存器的第五資料元件槽。其餘的寫入遮罩位元位置被用以決定源暫存器中還有那些資料元件要被儲存在記憶體中(在本實施例中,儲存全部8個資料元件,但是,可以視寫入遮罩而有更少或更多)。此外,在儲存之前,來自暫存器源的資料元件可以被下轉以配合例如從32位元浮點值至16位元值的記憶體之資料元件大小。
圖7顯示處理器中壓縮指令之執行之另一實例。在此實例中,該目的地是一暫存器。在本實例中的寫入遮罩再度為0x4DB1。對於具有「1」值之寫入遮罩的每一情形,來自源(例如ZMM暫存器)的資料元件連續地儲存(包裝)在目的地暫存器中。舉例而言,寫入遮罩的第一位置(例如,k2[0]是「1」,標示對應的源資料元件位置(例如,源暫存器的第一資料元件)應被寫入至目的地暫存器 中。在此情形中,其將被儲存作為目的地暫存器的第一資料元件。遮罩的下三個位元是「0」,標示源暫存器的對應資料元件未被儲存在目的地暫存器中(在圖中顯示為「Y」)。寫入遮罩中的下一個「1」值是在第五位元位置(例如,k2[4])。這表示接續於(連續於)第一資料元件之後的資料元件是具有儲存於其中的源暫存器的第五資料元件槽。其餘的寫入遮罩位元位置被用以決定源暫存器中還有那些資料元件要被儲存在目的地暫存器中(在本實施例中,儲存全部8個資料元件,但是,可以視寫入遮罩而有更少或更多)。
圖8顯示用於執行擴展指令的虛擬碼的實例。
圖9顯示在處理器中使用壓縮指令的實施例。在901,提取具有目的地運算元、源運算元、及寫入遮罩的壓縮指令。在某些實施例中,源運算元是512位元向量暫存器(例如ZMM1)且寫入遮罩是16位元暫存器(例如k1)。目的地可以是儲存在暫存器中的記憶體位置或是立即位置、或是暫存器運算元。此外,壓縮指令可以包含用於記憶體位址的偏移。
在903,將壓縮指令解碼。取決於指令的格式,則各式各樣的資料可以在此階段被解譯,舉例而言,是否要下轉、哪些暫存器要被寫入或取出、什麼記憶體位址來自目的地運算元(及偏移,假使有的話)、等等。
在905,取出/讀取源運算元值。舉例而言,讀取至少源暫存器的第一資料元件。
假使有任何資料元件轉換要執行(例如下轉),則可以在907執行。舉例而言,來自暫存器的32位元資料元件可以被下轉成16位元資料元件。
在909,由執行資源執行壓縮指令(或例如微操作等包含例如指令的操作)。此執行造成根據寫入遮罩的「主動」元件(位元位置)以決定那些來自源運算元的值要被載入作為目的地中的稀疏資料元件。此分析的實例顯示於圖6中。
在911,對應於寫入遮罩的「主動」元件之適當的源運算元的資料元件被儲存於目的地中。再度地,這個的實例顯示於圖6及7中。雖然909和911被分別顯示,但是,在某些實施例中,它們一起執行作為指令的執行的一部份。
圖10顯示處理壓縮指令的方法之實施例的例子。在本實施例中,假定操作901-907中的某些而非全部在之前已被執行,但是,它們未被顯示以免模糊下述的細節。舉例而言,未顯示提取及解碼,也未顯示運算元(源及寫入遮罩)取出。
在1001,決定在第一位元位置的寫入遮罩是否標示對應的源資料元件是否應被儲存於目的地運算元標示的目的地位置(最低效位置)中。舉例而言,在第一位置的遮罩是否具有例如代表源暫存器的第一資料元件位置應被寫入記憶體之「1」值?
當在第一位元位置的寫入遮罩未標示目的地中應有改 變時(第一資料元件應維持不被源暫存器的第一資料元件改變),則寫入遮罩中的下一位元位置將被評估(假使有一位元位置)且不作改變。當在第一位元位置的寫入遮罩標示目的地之該第一資料元件位置中應有改變時,則在1007中,將源資料元件儲存在目的地的第一資料元件位置中。取決於實施,在1005,源資料元件被轉換成目的地的資料元件大小。這也可能發生在1001的評估之前。在1009,將可被寫入之後續的(連續的)目的地位置準備好。
在1011,決定評估的寫入遮罩位置是否是寫入遮罩的最後位置或者目的地的所有資料元件位置是否已被填充。假使為真,則操作結束。假使為假,則在1013中寫入遮罩中的下一位元位置是要被評估的。此評估發生於1003且類似於1001的決定,但不是用於寫入遮罩的第一位元位置。假使決定為是,則儲存資料元件、等等。(1005、1007、及1009)。
此外,雖然此圖及上述說明將各別的第一位置視為最低效位置,但是,在某些實施例中,第一位置是最高效位置。
具體實施之上述詳述的指令實施例可以以下述詳述的「同屬向量友善指令格式」來具體實施。在其它實施例中,未使用此格式,而是使用另一指令格式,但是,寫入遮罩暫存器、各式各樣的資料轉換(拌和、廣播、等等)、定址、等等下述說明大致上可應用至上述(指令的)實施 例的說明。此外,舉例說明的系統、架構、及管線詳述於下。可在例如系統、架構、及管線等等之上,執行上述指令的實施例,但不限於那些細節。
向量友善指令格式是適用於向量指令的指令格式(例如,有某些特定向量操作的領域)。雖然說明向量及純量操作由向量友善指令格式支援的實施例,但是,替代實施例僅使用向量友善指令格式的向量操作。
舉例說明的同屬向量友善指令格式-圖11A-B
圖11A-B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其指令樣板。圖11A是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級A指令樣板;而圖11B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級B指令樣板。具體而言,等級A及等級B指令樣板定義之同屬向量友善指令格式1100都包含無記憶體存取1105指令樣板及記憶體存取1120指令樣板。向量友善指令格式的內文中的同屬一詞意指未被繫結至任何特定指令集的指令格式。雖然將說明向量友善指令格式的指令對源自暫存器(無記憶體存取1105指令樣板)或暫存器/記憶體(記憶體存取1120指令樣板)之向量操作的實施例,但是,發明的替代實施例可以僅支援這些中之一。而且,雖然將說明有向量指令格式的載入及儲存資料的發明實施例,但是,替代實施例可以替代地或增加地具有將向量移進及移出暫存器之不同指令格式的 指令(例如,從記憶體至暫存器中,從暫存器至記憶體中,在暫存器之間)。此外,雖然將說明支援二種等級的指令樣板的發明實施例,但是,替代實施例可以支援這些中的僅一者或二者以上。
雖然將說明向量友善指令格支援下述的發明實施例:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(因此,16個雙字大小元件或者8個四字大小元件組成的64位元組向量);具有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位元組)資料元件寬度)之更多、更少及/或不同向量運算元大小(例如1156位元組向量運算元)。
圖11A中的等級A指令樣板包含:1)在無記憶體存取1105指令樣板之內,有顯示無記憶體存取、全修整控制型操作1110指令樣板以及無記憶體存取、資料轉換型操作1115指令樣板;以及2)在記憶體存取1120指令樣 板之內,有顯示記憶體存取、暫時1125指令樣板以及記憶體存取、非暫時1130指令樣板。圖11B中的等級B指令樣板包含:1)在無記憶體存取1105指令樣板之內,有顯示無記憶體存取、寫入遮罩控制、部份修整控制型操作1112指令樣板以及無記憶體存取、寫入遮罩控制、vsize型操作1117指令樣板;以及2)在記憶體存取1120指令樣板之內,有顯示記憶體存取、寫入遮罩控制1127指令樣板。
格式
同屬向量友善指令格式1100包含圖11A-B中依序顯示的下述列出之欄位。
格式欄位1140-此欄位中的特定值(指令格式識別值)獨特地識別向量友善指令格式,因此,在指令串中發生向量友善指令格式的指令。因此,格式欄位1140的內容區別第一指令格式的指令發生與其它指令格式的指令發生,藉以允許將向量友善指令格式導入至具有其它指令格式的指令集中。如此,對於僅具有同屬向量友善指令格式的指令集而言是不需要的情形中,此欄位是選加的。
基礎操作欄位1142-其內容區別不同的基礎操作。如同稍後所述般,基礎操作欄位1142可以包含及/或是部份運算碼欄位。
暫存器索引欄1144-其內容直接或經由位址產生而指定源和目的地運算元的位置在暫存器或記憶體中。這些包 含足夠數目的位元以從PxQ(例如32×1312)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以可達三個源及一個目的地暫存,但是,替代實施例可以支援更多或更少的源以及目的地暫存器(例如,可以支援高達二個源,這些源中之一也作為目的地,可以支援高達三個源,這些源中之一也作為目的地,可以支援高達二個源及一目的地)。雖然在一實施例中P=32,但是,替代實施例可以支援更多或更少暫存器(例如,16)。雖然在一實施例中Q=1312位元,但是,替代實施例可以支援更多或更少位元(例如,128、1024)。
修改器欄位1146-其內容區別指定記體存取的同屬向量指令格式的指令發生與未指定記體存取的同屬向量指令格式的指令發生;亦即,在無記憶體存取1105指令樣板與記憶體存取1120指令樣板之間區別。記憶體存取操作讀取及/或寫至記憶體層級結構(在某些情形中使用暫存器中的值指定源及/或目的地位址),而非記憶體存取操作未如此作(例如,源及目的地是暫存器)。雖然在一實施例中,此欄位也在三個不同方式中之間選取以執行記憶體位址計算,但是,替代實施例可以支援更多、更少、或不同的方式以執行記憶體位址計算。
擴增操作欄1150-其內容區別各種不同操作中哪一操作除了基礎操作之外也要被執行。此欄位是內容特定的。在發明的一實施例中,此欄位被分成等級欄位1168、阿爾發欄位1152、貝他欄位1154。擴增操作欄位允許共同組 的操作在單一指令中而不是在2、3或4指令中被執行。下述是使用擴增欄位1150以降低所需指令的數目的之指令的某些實例(此處將更詳細說明其術語)。
其中,[rax]是用於位址產生的基礎指標,其中,{ }標示由資料操縱欄位(稍後更詳細說明)指定的轉換操作。
比例欄位1160-其內容允許用於記憶體位址產生的索引欄位的內容比例化(例如,用於使用2scale* index+base的位址產生)。
位移欄位1162A-其內容作為部份記憶體位址產生(例如,用於使用2scale* index+base+displacement的位址產生)。
位移因數欄位1162B(注意,位移欄位1162A直接毗連在位移因數欄位1162B上標示一或另一者被使用)-其內容作為部份位址產生;其指定位移因數要依記憶體存取(N)的大小而比例化-其中,N是記憶體存取中的位元組數目(例如,用於使用2scale* index+base+scaled displacement的位址產生)。冗餘的較低階位元被忽略,因此,位移因數欄的內容乘以記憶體運算元全部尺寸(N)以產生計算有效位址時使用的最後位移。根據全運算碼欄位1174(稍後說明)及稍後說明的資料操縱欄位1154C,在執行時由處理器硬體決定N的值。在位移欄位1162A及位移因數欄位1162B不用於無記憶體存取1105指令樣板及/或不同實施例僅實施二者中之一或不實施二者的情形中,它們是選加的。
資料元件寬度欄位1164-其內容區別一些資料元件寬度中的哪一寬度是要被使用(在某些實施例中對所有指令;在其它實施例中僅對某些指令)。在假使使用運算碼的某些態樣而僅有一資料元件寬度被支援及/或資料元件寬度被支援時不需要此欄位的情形中,此欄位是選加的。
寫入遮罩欄位1170-其內容以每一資料元件位置為基礎而控制目的地向量運算元中的資料元件位置是否反應基礎操作及擴增操作。等級A指令樣板支援合併寫入遮罩, 而等級B指令樣板支撐合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元件在任何操作的執行期間受保護(由基礎操作及擴增操作指定)而免於更新;在其它的一實施例中,保留對應的遮罩位元具有0之目的地的每一元件的舊值。相反地,當零化向量遮罩允許目的地中的任何組的元件在任何操作(由基礎操作及擴增操作指定)執行期間零化時;在一實施例中,當對應的遮罩位元具有0值時,目的地的元件被設定為0。此功能的子集合是控制執行的操作的向量長度之能力(亦即,被修改的元件的跨幅,從第一至最後一個);但是,被修改的元件不一定是連續的。如此,寫入遮罩欄1170允許部份向量操作,包含載入、儲存、算術、邏輯、等等。而且,此遮罩可以用於故障抑制(亦即,藉由遮罩目的地的資料元件位置以防止接收可能/將造成故障的任何操作的結果-例如,假定記憶體存取中的向量越過頁邊界以及第一頁但不是第二頁將造成頁故障,假使位於第一頁上的向量之所有資料元件由寫入遮罩遮蓋時,忽略頁故障)。此外,寫入遮罩允許含有某些型式的條件陳述之「向量化迴路」。雖然說明寫入遮罩欄位1170的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位1170的內容間接地識別要被執行的遮罩)的發明實施例,但是,替代實施例取代地或增加地允許遮罩寫入欄位1170的內容直接指定要被執行的遮罩。此外,當下述情形時,零化允許性能增進:1)由於暫存器重新命名管線階段期 間,所以,對目的地運算元也不是源的指令(也稱為非三元指令)使用暫存器更名,目的地不再是不明確的源(由於不是操作的結果之任何資料元件(任何被遮罩的資料元件)將被零化,所以,沒有來自目前目的地暫存器的資料元件需要被複製至被重新命名的目的地暫存器、或是而伴隨著操作有點被載送;以及,2)由於零正被寫入而回寫的階段期間。
立即欄位1172-其內容允許立即性的規格。在此欄位未出現在未支援立即性的同屬向量友善格式實施中以及其未出現在未使用立即性的指令中之情形中,此欄位是選加的。
指令樣板等級選取
等級欄位1168-其內容區別指令的不同等級。參考圖2A-B,此欄位的內容在等級A與等級B指令之間選取。在圖11A-B中,經過整修的角落方形被用以標示特定值存在於欄位中(例如,分別在圖11A-B中用於等級欄位1168的等級A 1168A及等級B 1168B)。
等級A的非記憶體存取指令樣板
在等級A的非記憶體存取1105指令樣板的情形中,阿爾發欄位1152被解譯為RS欄位1152A,其內容區別不同的擴增操作型式中哪一型式是要被執行(例如,整修1152A.1及資料轉換1152A.2分別被指定用於無記憶體存 取、整修型式操作1110及無記憶體存取、資料轉換型式操作1115指令樣板),而貝他欄位1154區別被指定的型式的操作中那一操作是要被執行。在圖11中,經過整修的角落塊被用以標示特定值存在(例如,在修改器欄位1146中無記憶體存取1146A;用於阿爾發欄位1152/rs欄位1152 A的整修1152A.1及資料轉換1152A.2)。在無記憶體存取1105指令樣板中,比例欄位1160、位移欄位1162A及位移比例欄位1162B不存在。
無記憶體存取指令樣板-完全整修控制型操作
在無記憶體存取完全整修控制型操作1110指令樣板中,貝他欄位1154被解譯為整修控制欄位1154A,其內容提供靜態整修。雖然在上述的發明實施例中,整修控制欄位1154A包含抑制所有浮點例外(SAE)欄位1156及整修操作控制欄位1158,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位中之一或另一者(例如,可以僅具有整修操作控制欄位1158)。
SAE欄位1156-其內容區別是否將例外事件報告禁能;當SAE欄位的1156內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器。
整修操作控制欄位1158-其內容區別整修操作組中何者要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修操作控制欄位1158允許根據每 一指令來改變整修模式,因此,當需要此點時,整修操作控制欄位1158特別有用。在處理器包含用於指定整修模式的控制暫存器之發明的一實施例中,整修操作控制欄位1150的內容撤銷該暫存器值(能夠選擇整修模式而不必對此控制暫存器執行儲存-修改-恢復,這是有利的)。
無記憶體存取指令樣板-資料轉換型式操作
在無記憶體存取資料轉換型式操作1115指令樣板中,貝他欄位1154被解譯為資料轉換欄位1154B,其內容區別一些資料轉換中何者要被執行(例如,無資料轉換、拌和、廣播)。
等級A的記憶體存取指令樣板
在等級A的記憶體存取1120指令樣板的情形中,阿爾發欄位1152被解譯為逐出暗示欄位1152B,其內容區別逐出暗示中之一是要被使用(在圖11A中,暫時1152B.1及非暫時1152B.2分別被指定用於記憶體存取、暫時1125指令樣板以及記憶體存取、非暫時1130指令樣板),而貝他欄位1154被解譯為資料操縱欄位1154C,其內容區別一些資料操縱操作(也稱為原始)中何者是要被執行(例如,無操縱;廣播;源的上轉;及目的地的下轉)。記憶體存取1120指令樣板包含比例欄位1160,且選加地包含位移欄位1162A或位移比例欄位1162B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載 入及向量儲存。與正常的向量指令一般,向量記憶體指令以資料元件方式對記憶體傳輸資料,而真正被傳送的元件是由被選為寫入遮罩的向量遮罩的內容指定。在圖11A中,被用以標示特定值之經過整修的角落方形存在於欄位中(例如,用於修改器欄位1146的記憶體存取1146B;用於阿爾發欄位1152/逐出暗示欄位1152B之暫時1152B.1及非暫時1152B.2)。
記憶體存取指令樣板-暫時
暫時資料是容易足夠快再被使用而從快取獲利之資料。但是,亦即是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
記憶體存取指令樣板-非暫時
非暫時資料是不容易足夠快再被使用以從第一層快取記憶體中的快取獲利之資料,且應被授予逐出優先權。但是,亦即是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
等級B的指令樣板
在等級B的指令樣板的情形中,阿爾發欄位1152被解譯為寫入遮罩控制(Z)欄位1152C,其內容區別由寫入遮罩欄位1170控制的寫入遮罩是否應為合併或零化。
等級B的非記憶體存取指令樣板
在等級B的非記憶體存取1105指令樣板的情形中,部份貝他欄位1154是被解譯為RL欄位1157A,其內容區別不同的擴增操作型式中何者是要被執行(例如,整修1157A.1以及向量長度(VSIZE)1157A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份整修控制型操作1112指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型操作1117指令樣板),而貝他欄位1154的其餘部份區別那一具有指定型式的操作是要被執行。在圖11中,被用以標示特定值之經過整修的角落塊存在(例如,修改器欄位1146中的無記憶體存取1146A;用於RL欄位1157A的整修1157A.1及VSIZE 1157A.2)。在無記憶體存取1105指令樣板中,比例欄位1160、位移欄位1162A、及位移比例欄位1162B不存在。
無記憶體存取指令樣板-寫入遮罩控制、部份整修控制型操作
在無記憶體存取中,寫入遮罩控制、部份整修控制型操作1110指令樣板、貝他欄位1154的其它部份被解譯為整修操作欄位1159A且例外事件報告被禁能(被給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器)。
整修操作控制欄位1159A-正如同整修操作控制欄位1158般,其內容區別整修操作組中何者要執行(例如,向 上整修、向下整修、朝向零整修及整修至最近)。因此,整修操作控制欄位1159A允許根據每一指令來改變整修模式,因此,當需要此點時,整修操作控制欄位1159A特別有用。在處理器包含用於指定整修模式的控制暫存器之發明的一實施例中,整修操作控制欄位1150的內容撤銷該暫存器值(能夠選擇整修模式而不必對此控制暫存器執行儲存-修改-恢復,這是有利的)。
無記憶體存取指令樣板-寫入遮罩控制,VSIZE型操作
在無記憶體存取、寫入遮罩控制,VSIZE型操作1117指令樣板中,貝他欄位1154的其餘部份被解譯為向量長度欄位1159B,其內容區別要對哪一資料向量長度執行(例如,128、1156、或1312位元組)。
等級B的記憶體存取指令樣板
在等級B的記憶體存取1120指令樣板的情形中,部份貝它欄位1154被解譯為廣播欄位1157B,其內容區別廣播型資料操縱操作是否要被執行,而貝它欄位1154中的其它部份被解譯為向量長度欄位1159B。記憶體存取1120指令樣板包含比例欄位1160,以及,選加地包含位移欄位1162A或是配移比例欄位1162B。
關於欄位的其它評論
關於同屬向量友善指令格式1100,完全運算碼欄位1174顯示為包含格式欄位1140、基礎操作欄位1142、及資料元件寬度欄位1164。雖然顯示完全運算碼欄位1174包含所有這些欄位的一實施例,但是,在未支援所有它們的實施例中,完全運算碼欄位1174包含小於所有這些欄位的欄位。完全運算碼1174提供操作碼。
擴增操作欄位1150、資料元件寬度欄位1164、及寫入遮罩欄位1170允許根據每一同屬向量友善指令格式的指令來指定這些特點。
寫入遮罩欄位及資料元件寬度欄位的結合會產生型式化的指令,其中,它們允許根據不同的資料元件寬度來施加遮罩。
由於指令格式根據其它欄位的內容而為了不同目的再使用不同的欄位,所以,它需要相當小量的位元。舉例而言,一態樣是修改器欄位的內容在圖11A-B上的無記憶體存取1105指令樣板與圖11A-B上的記憶體存取1250指令樣板之間選擇;而等級欄位1168的內容在圖11A的指令樣板1110/1115與圖11B的指令樣板1112/1117之間的那些非記憶體存取1105指令樣板之內選擇;以及,等級欄位1168的內容在圖11A的指令樣板1125/1130與圖11B的指令樣板1127之間的那些記憶體存取1120指令樣板之內選擇。從另一態樣,等級欄位1168的內容在圖11A及11B分別的等級A與等級B指令樣板之間選擇;修改器欄位的內容在圖11A的指令樣板1105與1120之間的那些等 級A指令樣板之內選擇;以及,修改器欄位的內容在圖11B的指令樣板1105與1120之間的那些等級B指令樣板之內選擇。在標示等級A指令樣板的等級欄位的情形中,修改器欄位1146的內容選擇阿爾發欄位1152的解譯(在rs欄位1152A與EH欄位1152B之間)。以相關方式,修改器欄位1146及等級欄位1168選擇阿爾發欄位是否要被解譯為rs欄位1152A、EH欄位1152B、或是寫入遮罩控制(Z)欄位1152C。在標示等級A無記憶體存取操作的等級及修改器欄位的情形中,擴增欄位的貝他欄位的解譯根據rs欄位的內容而改變;而在標示等級B無記憶體存取操作的等級及修改器欄位的情形中,貝他欄位的解譯視RL欄位的內容而定。在標示等級A記憶體存取操作的等級及修改器欄位的情形中,擴增欄位的貝他欄位的解譯根據基礎操作欄位的內容而改變;而在標示等級B記憶體存取操作的等級及修改器欄位的情形中,擴增欄位的貝他欄位的廣播的欄位1157B根據基礎操作欄位的內容而改變。因此,基礎操作欄位、修改器欄位及擴增操作欄位的結合允許更加寬廣的各式各樣擴增操作被指定。
等級A及等級B之內發現的各種指令樣板在不同的情形中是有利的。當為了性能原因而需要零化寫入遮罩或更小的向量長度時,等級A是有用的。舉例而言,由於我們不再需要人造地與目的地合併,所以當使用重新命名時,零化允許避免偽造相依性;關於另一實例,當以向量遮罩仿真更短的向量大小時,向量長度控制使得儲存-載入遞 送議題變得容易。當希望執行下述時,等級B是有用的:1)允許浮點例外(亦即,當SAE欄位的內容標示無時)並同時使用整修模式控制時;2)能夠使用上轉、拌和、調換、及/或下轉;3)對圖形資料型式操作。舉例而言,上轉、拌和、調換、下轉、及圖型資料型式降低與不同格式的源工作時所要求的指令數目;關於另一實例,允許例外的能力提供與整修模式有關的完整的IEEE相容性。
舉例說明的特定向量友善指令格式
圖12A-C顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。圖12A-C顯示特定向量友善指令格式1200,其在指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情形中是特定的。特定向量友善指令格式1200可以被用以延伸x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其延伸(例如,AVX)。此格式維持與具有延伸的現存x86指令集的前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖12A-C的欄位映射來自圖11的欄位。
應瞭解,雖然在同屬向量友善指令格式1100的內容中為了說明而參考特定向量友善指令格式1200,以說明發明的實施例,但是,本發明不侷限於特定向量友善指令格式1200,除非特別申明。舉例而言,同屬向量友善指令格式1100慮及用於各種欄位的各種可能大小,而特定向量 友善指令格式1200顯示為具有特定大小的欄位。具體舉例而言,雖然資料元件寬度欄位1164在特定向量友善指令格式1200中顯示為一位元欄位,但是,本發明不限於此(亦即,同屬向量友善指令格式1100慮及資料元件寬度欄位1164的其它大小)。
格式-圖12A-C
同屬向量友善指令格式1100包含依圖12A-C中所示的次序而於下列出的下述欄位。
EVEX Prefix(位元組0-3)
EVEX Prefix 1202-以四位元組形式編碼
格式欄位1140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位1140以及其含有0x62(用於區別發明的一實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的一些位元欄位。
REX欄位1205(EVEX位元組1,位元[7-5])由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及1157BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,且使用1s互補形式來編碼,亦即,ZMMO被編碼 為1111B,ZMM15被編碼為0000B。如同此技術中所知般,指令的其它欄位將暫存器索引的較低的三個位元編碼(rrr,xxx,及bbb),以致於藉由加上EVEX.R、EVEX.X、及EVEX.B,可以形成Rrrr、Xxxx、及Bbbb。
REX’欄位1210-這是REX’欄位1210的第一部份且是用以將延伸的32暫存器組的上16或下16編碼之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在發明的一實施例中,此位元與如下標示的其它位元以位元反轉格式儲存,以與BOUND指令區別(在已知的x86 32位元模式中),BOUND指令的真實運算碼位元組是62,但是,在MOD R/M欄(下述)中未接受MOD欄位中11的值;發明的替代實施例未以反轉格式儲存此位元及下述其它標示的位元。1的值用以將下16暫存器編碼。換言之,藉由結合來自其它欄位的EVEX.R’、EVEX.R、及其它RRR以形成R’Rrrr。
運算碼映射欄位1215(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先運算碼位元組(0F,0F38,或0F 3)編碼。
資料元件寬度欄位1164(EVER位元組2,位元[7]-W)-由記號EVEX.W表示。EVEX.W用以界定資料型式(32位元資料元件或64位元資料元件)的粒度(大小)。
EVEX.vvvv 1220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1s互補)形式指定的第一源暫存器運算元編碼,且 對於具有2或更多源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s互補形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位1220將依反轉(1s互補)形式儲存的第一源暫存器指定器的4下階位元編碼。取決於指令,額外的不同EVEX位元欄位被用以延伸指定器大小至32暫存器。
EVEX.U 1168等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位1225(EVEX位元組2,位元[1:0]-pp)-提供增加的位元用於基礎操作欄位。除了提供支援給EVEX前置格式的舊有SSE指令,這也具有使SIMD前置小巧化(而非要求位元組來表示SIMD前置,EVEX前置僅要求2位元)的優點。在一實施例中,為了支援以舊有格式及EVEX前置格式等二各式使用SIMD前置(66H、F2H、F3H)之舊有SSE指令,這些舊有SIMD前置被編碼成SIMD前置編碼欄位;以及,在被提供給解碼器的PLA(以致於PLA可以執行這些舊有指令的舊有及EVEX等二格式而不用修改)之前,在執行時被擴展成舊有SIMD前置。雖然較新的指令可以直接使用EVEX前置編碼欄位的內容作為運算碼延伸,但是,某些實施例為了一致性而以類似方式擴展但允許不同的意義由這些舊有SIMD前置規定。替代實施例可以重新設計PLA以支援2 位元SIMD前置編碼,因而不要求擴展。
阿爾發欄位1152(EVEX位元組3,位元[7])-EH;也稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;如以往所述般,也以α)-顯示,此欄位是內容特定的。稍後提供其它說明。
貝他欄位1154(EVEX位元組3,位元[6:4])-SSS;也稱為EVEX.s2-0 、EVEX.r2-0 、EVEX.rr1、EVEX.LL0、EVEX.LLB;如以往所述般,也以β β β)-顯示,此欄位是內容特定的。稍後提供其它說明。
REX’欄位1210-這是REX’欄位的餘部且是可被用以將延伸的32暫存器組的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式儲存。1的值被用以將下16暫存器編碼。換言之,藉由結合EVEX.V’、EVEX.vvvv以形成V’VVVV。
寫入遮罩欄位1170(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在發明的一實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至所有或硬體之寫入遮罩,所述硬體係使遮罩硬體旁通)。
真實運算碼欄位1230(位元組4)
這也稱為運算碼位元組。在此欄位中指定運算碼的一部份。
MOD R/M欄位1240(位元組5)
修改器欄位1146(MODR/M.MOD,位元[7-6]-MOD欄位1242)-如同先前所述般,MOD欄位的1242內容區別記憶體存取與非記憶體存取操作。稍後將進一步說明此欄位。
MODR/M.reg欄位1244,位元[5-3]-ModR/M.reg欄位的角色可以總合為二情形:ModR/M.reg將目的地暫存器運算元或源暫存器運算元編碼,或是ModR/M.reg被當作運算元延伸來處理且不被用以將任何指令運算元編碼。
MODR/M.r/m欄位1246,位元[2-0]-ModR/M.r/m欄位的角色可以包含下述:ModR/M.r/m將參考記憶體位址的指令運算元編碼,或者,ModR/M.r/m將目的地暫存器運算元或源暫存器運算元編碼。
比例、索引、基礎(SIB)位元組(位元組6)
比例欄位1160(SIB.SS,位元[7-6])-如同先前所述般,比例欄位1160的內容是用於記憶體位址產生。於下將進一步說明此欄位。
SIB.xxx 1254(位元[5-3])及SIB.bbb 1256(位元[2-0])-這些欄位的內容先前已被指稱與暫存器索引Xxxx及Bbbb有關。
位移位元組(位元組7或位元組7-10)
位移欄位1162A(位元組7-10)-當MOD欄位1242含有10時,位元組7-10是位移欄位1162A,且其與舊有32位元位移(disp32)相同工作並在位元組粒度上工作。
位移因數欄位1162B(位元組7)-當MOD欄位1242含有01時,位元組7是位移因數欄位1162B。此欄位的位置與對位元組粒度工作的舊有x86指令組8位元位移(disp8)的位置相同。由於disp8是正負號延伸,所以,其僅可以在-128與127位元組偏移之間定址;以64位元組快取線的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位1162B是disp8的再解譯;當使用位移因數欄位1162B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取(N)所決定。此型式的位移被稱為disp8 N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,因此,位址偏移的冗餘低階位元不需被編碼。換言之,位移因數欄位1162B替代舊有x86指令組8位元位移。因此,位移因數欄位1162B以同於x86指令組8位元位移的方式編碼(以致於ModRM/SIB編碼規則不變),僅有的例外是disp8被過載至disp8 N。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以 取得位元組方式的位址偏移)。
立即性
立即欄位1172如先前所述地操作
舉例說明的暫存器架構-圖13
圖13是根據本發明的一實施例之暫存器架構1300的方塊圖。暫存器檔案及暫存器架構的暫存器列示於下:向量暫存器檔案1310-在所示的實施例中,有1312位元寬的32個向量暫存器;這些暫存器稱為zmm0至zmm31。較低的16zmm暫存器的低階1156位元覆蓋於暫存器ymm0-16之上。較低的16-zmm暫存器的低階128位元(ymm暫存器的低階128位元)覆蓋於暫存器xmm0-15之上。特定向量友善指令格式1200對這些下述表格中所示的被覆蓋的暫存器檔案操作。
換言之,向量長度欄位1159B在最大長度與一或更多其它較短的長度之間選取,其中,每一此較短長度是先前長度的長度之一半;以及,不具向量長度欄位1159B的指令樣板對最大向量長度操作。此外,在一實施例中,特定向量友善指令格式1200的等級B指令樣板對被包裝的或純量的單一/雙重精度浮點資料及被包裝的或純量的整數資料操作。純量操作是對zmm/ymm/xmm暫存器中最低階資料元件位置執行的操作;更高階的資料元件位置視實施例而保留成與它們在指令之前相同或者零化。
寫入遮罩暫存器1315-在所示的實施例中,有8個寫入遮罩暫存器(k0至k7),每一寫入暫存器大小為64位元。如同先前所述般,在本發明的一實施例中,向量遮罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用於該指令的寫入遮罩禁能。
多媒體延伸控制狀態暫存器(MXCSR)1320-在所示的實施例中,此32位元暫存器提供浮點操作中使用的狀態及控制位元。
一般用途暫存器1325-在所示的實施例中,有十六個64位元一般目的暫存器,它們與現存的x86定址模式一起用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15表示。
延伸旗標(EFLAGS)暫存器1330-在所示的實施例 中,此32位元暫存器用以記錄很多指令的結果。
浮點控制字(FCW)暫存器1335及浮點狀態字(FSW)暫存器1340-在所示的實施例中,這些暫存器由x87指令組延伸使用以在FCW情形中設定整修模式、在FCW情形中之遮罩及施標例外、以及在FSW的情形中保持追蹤之例外。
純量浮點堆疊暫存器檔案(x87堆疊)1345,MMX分封整數平坦暫存器檔案1350重疊於其上-在所示的實施例中,x87堆疊是八元件堆疊,用以使用x87指令延伸,對32/64/80位元浮點資料執行純量浮點運作;而MMX暫存器被用以對64位元包裝的暫存器資料執行操作,以及為了某些在MMX及XMM暫存器之間執行的操作而固持運算元。
分段暫存器1355-在所示的實施例中,有六個16位元暫存器,用以儲存用於分段化的位址產生之資料。
RIP暫存器1365-在所示的實施例中,此64位元暫存器儲存指令指標。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
舉例說明的依序處理器架構-圖14A-14B
圖14A-B顯示舉例說明的依序處理器架構之方塊圖。這些舉例說明的實施例圍繞依序CPU核心的多例示設計 ,以寬向量處理器(VPU)擴增。取決於e16t應用,這些核心以某些固定功能邏輯、記憶體I/O介面、及其它所需I/O邏輯,經由高頻寬互連網路通訊。舉例而言,本實施例實施成單獨GPU將典型地包含PCle匯流排。
圖14A是根據本發明的實施例之單一CPU核心、伴隨其對晶粒上互連網路1402的連接及具有本地子集合等級2(L2)快取1404之方塊圖。指令解碼器1400支援具有包含特定向量指令格式1200的延伸之x86指令集。雖然在本發明的一實施例中(為了簡化設計),純量單元1408和向量單元1410使用分開的暫存器集(分別為純量暫存器1412和向量暫存器1414)及在它們之間傳送的資料被寫至記憶體然後從等級1(L1)快取1406讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集或是包含通訊路徑,允許資料在二暫存器檔案之間傳送而不用寫入及讀回)。
L1快取1406允許對快取記憶體的低潛候存取成為純量及向量單元。與向量友善指令格式中載入-操作(load-op)指令一起,這意指L1快取1406可以有點類似延伸暫存器檔案般被處理。這顯著地增進很多演算法的性能,特別是藉由逐出暗示欄位1152B。
L2快取1404的本地子集合是被分割成多個分別的本地子集合之通用L2快取的部份,每一CPU核心有一集合。每一CPU對於它自己的L2快取1404的本地子集合具有直接存取路徑。與存取它們自己的本地L2快取子集合 之其它CPU相平行地,由CPU核心讀取的資料被儲存在L2快取子集合1404中且可以被快速地存取。由CPU核心寫入的資料儲存在它自己的L2快取子集合1404中,且假使需要時從其它子集合湧入。環式網路確保共用資料的同調性。
圖14B是根據本發明的實施例中的圖14A中的CPU核心的部份之分解視圖。圖14B包含L1快取1404的L1資料快取1406A部份、以及關於向量單元1410和向量暫存器1414的更多細節。具體而言,向量單元1410是16-寬的向量處理單元(VPU)(請參見16-寬的ALU 1428),其執行整數、單一精準浮點、及雙重精準浮點指令。 VPU對記憶體輸入以伴和單元1420支援拌和暫存器輸入、以數字轉換單元1422A-B支援數字轉換、以及以複製單元1424支援複製。寫入遮罩暫存器1426允許預測造成的向量寫入。
可以以各種方式拌和暫存器資料,例如支援矩陣乘法。來自記憶體的資料可以跨越VPU通道而被複製。在圖形及非圖形平行資料處理等二處理中這是共通的操作,顯著地增進快取效率。
環式網路是雙向的,允許例如CPU核心、L2快取及其它邏輯區塊等代理器在晶片內彼此通訊。每一環式資料路徑是每一方向1312位元寬。
舉例說明的亂序架構-圖15
圖15是方塊圖,顯示根據本發明的實施例之舉例說明的亂序架構。具體而言,圖15顯示熟知的舉例說明的亂序架構,其已被修改成併有向量友善指令格式及其執行。在圖15中,箭頭代表二或更多單元之間的耦合且箭頭的方向表示這些單元之間的資料流動的方向。圖15包含耦合至執行引擎單元1510及記憶體單元1515的前端單元1505;執行引擎單元1510進一步耦合至記憶體單元1515。
前端單元1505包含耦合至等級2(L2)分枝預測單元1522之等級1(L1)分枝預測單元1520。L1及L2分枝預測單元1520及1522耦合至L1指令快取單元1524。L1指令快取單元1524耦合至指令轉譯旁看緩衝器(TLB)1526,指令轉譯旁看緩衝器(TLB)1526又耦合至指令提取及預解碼單元1528。指令提取及預解碼單元1528耦合至指令佇列單元1530,指令佇列單元1530又耦合至解碼單元1532。解碼單元1532包括複合解碼器單元1534及三個簡單解碼器單元1536、1538、及1540。解碼單元1532包含微碼ROM單元1542。解碼單元1532如同上述解碼階段一節中先前所述般地操作。L1指令快取單元1524又耦合至記憶體單元1515中的L2快取單元1548。指令TLB單元1526又耦合至記憶體單元1515中的第二等級轉譯旁看緩衝器(TLB)單元1546。解碼單元1532、微碼ROM單元1542、及迴路串偵測器單元1544均耦合至執行引擎單元1510中的重新命名/分配器單元1556。
執行引擎單元1510包含耦合至退出單元1574及統一排程器單元1558的重新命名/分配器單元1556。退出單元1574又耦合至執行單元1560及包含重新排序緩衝器單元1578。統一排程器單元1558又耦合至實體暫存器檔案單元1576,實體暫存器檔案單元1576耦合至執行單元1560。實體暫存器檔案單元1576包括向量暫存器單元1577A、寫入遮罩暫存器單元1577B、及純量暫存器單元1577C;這些暫存器單元可以提供向量暫存器1310、向量遮罩暫存器1315、及一般用途暫存器1325;以及實體暫存器檔案單元1576可以包含未顯示的其它暫存器檔案(例如,重疊於MMX包裝整數平坦暫存器檔案1350上的純量浮點堆疊暫存器檔案1345)。執行單元1560包含三個混合純量及向量單元1562、1564、及1572;載入單元1566;儲存位址單元1568;儲存資料單元1570。載入單元1556、儲存位址單元1568、及儲存資料單元1570均又耦合至記憶體單元1515中的資料轉譯旁看緩衝器(TLB)單元1552。
記憶體單元1515包含耦合至資料轉譯旁看緩衝器(TLB)單元1552的第二等級轉譯旁看緩衝器(TLB)單元1546。資料轉譯旁看緩衝器(TLB)單元1552耦合至L1資料快取單元1554。L1資料快取單元1554又耦合至L2快取單元1548。在某些實施例中,L2快取單元1548又耦合至記憶體單元1515的內部及/或外部的L3及更高的快取單元1550。
舉例而言,舉例說明的亂序架構可以實施如下所述的處理管線:1)指令提取及預解碼單元1528執行提取及長度解碼階段;2)解碼單元1532執行解碼階段;3)重新命令/分配器單元1556執行分配階段及重新命名階段;4)統一排程器1558執行排程階段;5)實體暫存器檔案單元1576、重新排序緩衝器單元1578、及記憶體單元1515執行暫存器讀取/記憶體讀取階段;執行單元1560執行執行/資料轉換階段;6)記憶體單元1515及重新排序緩衝器單元1578執行寫回/記憶體寫入階段;7)退出單元1574執行ROB讀取階段;8)各種單元牽涉例外處理階段;及9)退出單元1574及實體暫存器檔案單元1576執行委任階段。
舉例說明的單核心及多核心處理器-圖20
圖20是根據本發明的實施例之具有整合記憶體控制器及圖形的單核心處理器及多核心處理器2000的方塊圖。圖20中的粗線框顯示具有單核心2002A的處理器2000、系統代理器2010、一或更多匯流排控制器單元2016,而選加的虛線框顯示具有多核心2002A-N的替代處理器2000、系統代理器單元2010中一或更多整合的記憶體控制器單元2014的組、以及整合圖形邏輯2008。
記憶體架構包含在核心內的一或更多等級的快取、一或更多共用快取單元2006、及耦合至整合記憶體控制器單元2014組之外部記憶體(未顯示)。共用快取單元2006 組可以包含例如等級2(L2)、等級3(L3)、等級4(L4)、或其它等級快取等一或更多中級快取、最後等級快取(LLC)、及/或其組合。雖然在一實施例中,環式基礎互連單元2012將整合圖形邏輯2008、共用快取單元2006的組、及系統代理單元2010互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。
在某些實施例中,一或更多核心2002A-N能夠多緒化。系統代理器2010包含那些元件協調及操作核心2002A-N。系統代理器單元2010可以包含例如電力控制單元(PCU)及顯示器單元。PCU可以是或包含調節核心2002A-N及整合圖形邏輯2008的電力狀態所需的邏輯及元件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構及/或指令組的觀點而言,核心2002A-N可以是同質的或異質的。舉例而言,核心2002A-N中的某些核心可以是依序的(例如,圖14A及14B中所示的),而其它是亂序的(例如,圖15中所示)。關於另一實施例,二或更多核心2002A-N可以能夠執行相同的指令集,而其它核心可以能夠僅執行該指令集的子集合或不同的指令集。這些核心中至少之一能夠執行此處所述的向量友善指令格式。
處理器可以是一般用途的處理器,例如能從加州Santa Clara之英特爾(Intel)公司取得的CoreTM i3、i5、i7、2雙及四、XeonTM 、或ItaniumTM 處理器。或者,處理器可以是來自其它公司。處理器可以是特別用途的處 理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、輔助處理器、嵌入式處理器、等等。處理器可以在一或更多晶片上實施。處理器2000可以是部份的及/或實施在一或更多基底上使用例如BiCMOS、CMOS、或NMOS等多種製程技術。
舉例說明的電腦系統及處理器-圖16-19
圖16-18是舉例說明的系統,適用於包含處理器2000,而圖19是舉例說明的系統晶片(SoC),包含一或更多核心2002。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置等領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在回至圖16,其顯示根據本發明的一實施例之系統1600的方塊圖。系統1600可以包含耦合至圖形記憶體控制器集線器(graphics memory controller hub,GMCH)1620之一或更多處理器1610、1615。在圖16中以虛線標示增加的處理器1615的選擇特性。
每一處理器1610、1615可以是某些版本的處理器2000。但是,應注意,整合圖形邏輯及整合記憶體控制單 元將存在於處理器1610、1615中是不容易的。
圖16顯示GMCH 1620可以耦合至記憶體1640,舉例而言,記憶體1640可以是動態隨機存取記憶體(DRAM)。對於至少一實施例而言,DRAM可以與非依電性快取相關聯。
GMCH 1620可以是晶片組、或是晶片組的一部份。GMCH 1620可以與處理器1610、1615通訊以及控制處理器1610、1615及記憶體1640之間的互動。GMCH 1620也可以作為系統1600的處理器1610、1615及其它元件之間的加速匯流排介面。對於至少一實施例,GMCH 1620經由例如前側匯流排(FSB)1695等多點匯流排而與處理器1610、1615通訊。
此外,GMCH 1620耦合至顯示器1645(例如平板顯示器)。GMCH 1620可以包含整合圖形加速器。GMCH 1620又耦合至用於耦合各種週邊裝置至系統1600之輸入/輸出(I/O)控制器集線器(ICH)1650。舉例而言,圖16的實施例顯示外部圖形裝置1660、伴隨著另一週邊裝置1670,外部圖形裝置1660可以是耦合至ICH 1650的離散圖形裝置。
或者,增加的或不同的處理器也可以出現在系統1600中。舉例而言,增加的處理器1615可以包含與處理器1610相同的增加的處理器、異質的或是與處理器1610不對稱之增加的處理器、加速器(例如,圖形加速器或數位訊號處理(DSP)單元)、現場可編程閘陣列、或任何其 它處理器。以包含架構、微架構、熱、耗電特徵、等等準則計量光譜的觀點而言,實體源1610、1615之間有各種差異。在處理元件1610及1615之間,這些差異可以有效地使它們本身顯示出不對稱性及異質性。對於至少一實施例而言,各式各樣的處理元件1610、1615可以設在相同晶粒封裝中。
現在參考圖17,其顯示根據本發明的實施例之第二系統1700的方塊圖。如圖17中所示般,多處理器系統1700是點對點互連系統,以及包含經由點對點互連1750耦合的第一處理器1770和第二處理器1780。如圖17中所示般,每一處理器1770及1780可以是某版本的處理器2000。
或者,一或更多處理器1770、1780可以是處理器以外的元件,例如加速器或現場可編程閘陣列。
雖然僅顯示二處理器1770、1780,但是要瞭解,本發明的範圍不侷限於此。在其它實施例中,一或更多增加的處理元件可以出現在給定的處理器。
處理器1770又包含整合記憶體控制器集線器(IMC)1772以及點對點(P-P)介面1776和1778。類似地,第二處理器1780可以包含IMC 1782及P-P介面1786和1788。處理器1770、1780可以使用PtP介面電路1778、1788而經由點對點(PtP)介面1750來交換資料。如同圖17中所示般,IMC的1772和1782將處理器耦合至各別記憶體,亦即記憶體1742和記憶體1744,它們可以是本地附著至各別處理器的記憶體的部份。
處理器1770、1780使用點對點介面電路1776、1794、1786、1798,經由個別的P-P介面1752、1754而均可以與晶片組1790交換資料。晶片組1790經由高性能圖形介面1739,也可以與高性能圖形電路1738交換資料。
共用的快取(未顯示)可以包含在二處理器的外部之任一處理器中,但尚未經由P-P互連與處理器連接,以致於假使處理器置於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取中。
晶片組1790可以經由介面1796而耦合至第一匯流排1716。在一實施例中,第一匯流排1716可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互連匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖17中所示般,各式各樣的I/O裝置1714與匯流排橋接器1718耦合至第一匯流排1716,匯流排橋接器1718耦合第一匯流排1716至第二匯流排1720。在一實施例中,第二匯流排1720可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排1720,舉例而言,包含鍵盤/滑鼠1722、通訊裝置1726及例如碟片驅動器或其它大量儲存裝置等包含碼1730的資料儲存單元1728。此外,音頻I/O 1724可以耦合至第二匯流排1720。注意,其它架構是可能的。舉例而言,取代圖17的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖18,其顯示根據本發明的實施例之第三系統1800之方塊圖。圖17及18中類似的元件帶有類似的代號,以及,圖17的某些態樣在圖18中被省略,以免模糊圖18的其它態樣。
圖18顯示處理元件1770、1780分別包含整合的記憶體及/I/O控制邏輯(CL)1772和1782。對於至少一實施例,CL 1772、1782包含例如配合圖19及17之上述所述的記憶體控制器集線器邏輯(IMC)。此外,CL 1772、1782也包含I/O控制邏輯。圖18顯示不僅記憶體1742、1744耦合至CL 1772、1782,I/O裝置1814也耦合至控制邏輯1772、1782。舊有I/O裝置1815耦合至晶片組1790。
現在參考圖19,其顯示根據本發明的實施例之SoC 1900的方塊圖。圖19中類似的元件帶有類似的代號。而且,虛線框關於更多先進的SoCs的選加特點。在圖19中,互連單元1902耦合至:應用處理器1910,包含一或更多核心2002A-N及共用快取單元2006的組;系統代理器單元2010;匯流排控制器單元2016;整合記憶體控制器單元2014;包含整合圖形邏輯2008、用於提供靜態及/或攝影機功能的影像處理器1924、用於提供硬體音頻加速器的音頻處理器1926、以及用於提供視頻編碼/解碼加速的視頻處理器1928之一或更多媒體處理器1920或媒體處理器1920組;靜態隨機存取記憶體(SRAM)單元1930;直接記憶體存取(DMA)單元1932;以及用於耦合至 一或更多外部顯示器的顯示單元1940。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼可以應用至輸入資料以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程式或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地產生邏輯的製造機器或處理器。
此機器可讀取儲存媒體包含但不限於由機器或裝置製 造或形成的物件之非電晶體式、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟(小型碟片唯讀記憶體(CD-ROM)、小型碟片可重寫記憶體(CD-RW))、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有向量友善指令格式的指令或含有設計資料之非電晶體式、實體的機器可讀取的媒體,所述設計資料是例如硬體道述語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、語形化、模仿、或其它轉換至核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份離開處理器。
圖21是方塊圖,將根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令作對比。在顯示的實施例中,指令轉換 器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體、或其各種結合來實施。圖21顯示高階語言2102的程式,其可以由使用x86編譯器2104編譯以產生x86二進位碼2106,二進位碼2106可以由具有至少一x86指令集核心2116(假定這些指令中的某些指令以向量友善指令格式編譯)的處理器原地執行。具有至少一x86指令集核心2116的處理器代表藉由共容地執行或其它方式地處理下述,而能夠與具有至少一x86指令集核心的英特爾處理器執行實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的理器上執行為目標之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器2104代表可以操作以產生x86二進位碼2106(例如,物件碼)之編譯器,x86二進位碼2106藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心2116的處理器上執行。類似地,圖21顯示高階語言2102的程式,使用替代指令集編譯器2108,可以將其編譯以產生替代指令集二進位碼2110,替代指令集二進位碼2110可以由不具有至少一x86指令集核心2114的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器2112用以將x86二進位碼2106轉換成可以由不具有 x86指令集核心2114的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不易與替代指令集二進位碼2110相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器2112代表軟體、韌體、硬體、或其組合,其經由模仿、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼2106。
此處揭示的向量友善指令格式之指令的某些操作可以由硬體元件執行以及可以以機器可執行的指令具體實施,這些指令被用以促使或至少造成依指令編程的電路或其它硬體元件執行操作。舉例而言,電路可以包含一般用途或特別用途的處理器、或是邏輯電路。操作可以由硬體及軟體的結合選加地執行。執行邏輯及/或處理器可以包含特定或特別的電路或其它邏輯以回應機器指令或是自機器指令衍生的一或更多控制訊號,以儲存指令指定的結果運算元。舉例而言,此處揭示的指令的實施例可以在圖16-19的一或更多系統中執行,以及,向量友善指令格式中的指令實施例可以儲存在程式碼中而在系統中被執行。此外,這些圖式的處理元件利用此處詳述的詳細管線及/或架構(例如,依序及亂序架構)。舉例而言,依序架構的解碼單元可以將指令解碼,將經過解碼的指令傳送至向量或純量單元等等。
上述說明是要顯示本發明的較佳實施例。從上述討論 中,也應清楚可知,特別是在成長快速且不易預見進步之此技術領域內,在不悖離後附的申請專利範圍及其均等範圍內本發明的原理之下,習於此技術者可以在配置及細節上修改本發。舉例而言,方法的一或更多操作可以結合或分開。
替代實施例
雖然已說明原地執行向量友善指令格式的實施例,但是,本發明的替代實施例可以經由執行不同指令集之處理器(例如,執行加州Sunnyvale的MIPS Technologies公司的MIPS指令集的處理器,執行加州Sunnyvale的ARM Holdings公司的ARM指令集之處理器),執行上運行的模仿層而執行向量友善指令格式。而且,雖然圖式中的流程圖顯示本發明的某些實施例執行的操作之特定次序,但是,應瞭解這些次序僅為舉例說明(例如,替代實施例可以依不同次序執行操作、結合某些操作、重疊某些操作、等等)。
在上述實施例中,為了說明目的,已揭示眾多特定細節,以助於完整瞭解本發明的實施例。但是,習於此技術者清楚可知,不用這些特定細節中的某些細節,仍可實施一或更多其它實施例。此處所述的特別實施例並非用以限制本發明,而是說明本發明的實施例。本發明的範圍並非由上述特定實例決定而是僅由下述申請專利範圍決定。
1300‧‧‧暫存器架構
1310‧‧‧向量暫存器
1315‧‧‧寫入遮罩暫存器
1320‧‧‧多媒體延伸控制狀態暫存器
1325‧‧‧一般用途暫存器
1330‧‧‧暫存器
1335‧‧‧浮點控制字暫存器
1340‧‧‧浮點狀態字暫存器
1355‧‧‧分段暫存器
1400‧‧‧指令解碼器
1402‧‧‧互連網路
1404‧‧‧等級2快取
1406‧‧‧等級1快取
1406A‧‧‧L1資料快取
1408‧‧‧純量單元
1410‧‧‧向量單元
1412‧‧‧純量暫存器
1414‧‧‧向量暫存器
1420‧‧‧拌和單元
1422A‧‧‧數字轉換單元
1422B‧‧‧數字轉換單元
1424‧‧‧複製單元
1426‧‧‧寫入遮罩暫存器
1428‧‧‧16-寬的ALU
1505‧‧‧前端單元
1510‧‧‧執行引擎單元
1515‧‧‧記憶體單元
1520‧‧‧等級1預測單元
1522‧‧‧等級2預測單元
1524‧‧‧L1指令快取單元
1526‧‧‧指令轉譯旁看緩衝器
1528‧‧‧指令提取及預解碼單元
1530‧‧‧指令佇列單元
1532‧‧‧解碼單元
1534‧‧‧複合解碼器單元
1536‧‧‧簡單解碼器單元
1538‧‧‧簡單解碼器單元
1540‧‧‧簡單解碼器單元
1542‧‧‧微碼ROM單元
1544‧‧‧迴路串偵測器單元
1546‧‧‧第二等級轉譯旁看緩衝器單元
1548‧‧‧L2快取單元
1550‧‧‧快取單元
1515‧‧‧記憶體單元
1552‧‧‧資料轉譯旁看緩衝器單元
1554‧‧‧L1快取單元
1556‧‧‧重新命名/分配器單元
1558‧‧‧統一排程器單元
1560‧‧‧執行單元
1562‧‧‧混合純量及向量單元
1564‧‧‧混合純量及向量單元
1566‧‧‧載入單元
1568‧‧‧儲存位址單元
1570‧‧‧儲存資料單元
1572‧‧‧混合純量及向量單元
1574‧‧‧退出單元
1577A‧‧‧向量暫存器單元
1577B‧‧‧寫入遮罩暫存器單元
1577C‧‧‧純量暫存器單元
1578‧‧‧重新排序緩衝器單元
1600‧‧‧系統
1610‧‧‧處理器
1615‧‧‧處理器
1620‧‧‧圖形記憶體控制器集線器
1640‧‧‧記憶體
1645‧‧‧顯示器
1650‧‧‧輸入/輸出控制器集線器
1660‧‧‧外部圖形裝置
1670‧‧‧週邊裝置
1695‧‧‧前側匯流排
1700‧‧‧第二系統
1714‧‧‧輸入/輸出裝置
1716‧‧‧第一匯流排
1718‧‧‧匯流排橋接器
1720‧‧‧第二匯流排
1722‧‧‧鍵盤/滑鼠
1724‧‧‧音頻輸入/輸出
1726‧‧‧通訊裝置
1728‧‧‧資料儲存單元
1738‧‧‧圖形電路
1739‧‧‧圖形介面
1742‧‧‧記憶體
1744‧‧‧記憶體
1750‧‧‧點對點互連
1752‧‧‧點對點介面
1754‧‧‧點對點介面
1770‧‧‧第一處理器
1772‧‧‧整合記憶體控制器集線器
1776‧‧‧點對點介面
1778‧‧‧點對點介面
1780‧‧‧處理器
1782‧‧‧整合記憶體控制器集線器
1786‧‧‧點對點介面
1788‧‧‧點對點介面
1790‧‧‧晶片組
1794‧‧‧介面
1800‧‧‧第三系統
1814‧‧‧輸入/輸出裝置
1815‧‧‧舊有輸入/輸出裝置
1900‧‧‧系統晶片
1902‧‧‧互連單元
1910‧‧‧應用處理器
1920‧‧‧媒體處理器
1924‧‧‧影像處理器
1926‧‧‧音頻處理器
1928‧‧‧視頻處理器
1930‧‧‧靜態隨機存取記憶體單元
1932‧‧‧直接記憶體存取單元
1940‧‧‧顯示單元
2000‧‧‧處理器
2002A‧‧‧核心
2002N‧‧‧核心
2006‧‧‧共用快取單元
2008‧‧‧整合圖形邏輯
2010‧‧‧系統代理器
2012‧‧‧環式基礎互連單元
2014‧‧‧整合記憶體控制器單元
2016‧‧‧匯流排控制器單元
2114‧‧‧處理器
2116‧‧‧處理器
在附圖中舉例說明但非限定地顯示本發明,其中相似的標記代表類似的元件,且其中:圖1顯示擴展指令的執行之實例。
圖2顯示具有暫存器運算元作為來源的擴展指令的執行之實例。
圖3顯示執行擴展指令的虛擬碼的實例。
圖4顯示處理器中的擴展指令的使用實施例。
圖5顯示用於處理擴展指令的方法實施例。
圖6顯示處理器中的壓縮指令的執行實例。
圖7顯示處理器中的壓縮指令的執行之另一實例。
圖8顯示執行擴展指令的虛擬碼之實例。
圖9顯示處理器中的壓縮指令的使用之實施例。
圖10顯示用處理壓縮指令的方法實施例之實例。
圖11A是方塊圖,顯示根據本發明的實施例之同屬向量友善指令格式及其等級A指令樣板。
圖11B是方塊圖,顯示根據本發明的實施例之同屬向量友善指令格式及其等級B指令樣板。
圖12A-C顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。
圖13是根據本發明的一實施例之暫存器架構的方塊圖。
圖14A是根據本發明的實施例之單一CPU核心、伴隨其對一晶粒互連網路的連接及具有本地子集合等級2( L2)快取的方塊圖。
圖14B是根據本發明的實施例之圖14A中的部份CPU核心的分解視圖。
圖15是方塊圖,顯示根據本發明的實施例之舉例說明的亂序架構。
圖16是根據本發明的一實施例之系統方塊圖。
圖17是根據本發明的實施例之第二系統的方塊圖。
圖18是根據本發明的實施例之第三系統的方塊圖。
圖19是根據本發明的實施例之SoC的方塊圖。
圖20是根據本發明的實施例之具有整合記憶體控制器及圖形的多核心處理器及單一核心處理器的方塊圖。
圖21是方塊圖,將根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令作對比。

Claims (20)

  1. 一種在電腦處理器中執行壓縮指令的方法,包括:提取該壓縮指令,其中,該壓縮指令包含操作碼、字頭(prefix)、目的地運算元、源運算元、及寫入遮罩運算元;將該提取的壓縮指令解碼;執行該被解碼的壓縮指令,以根據該寫入遮罩運算元的值,選取哪些來自該源運算元的資料元件是要被儲存在該目的地運算元;以及將該選取的該源運算元的資料元件作為順序包裝的資料元件儲存在該目的地運算元中,其中該源運算元之該資料元件的大小係由該壓縮指令的該字頭定義,且於該執行中使用的該寫入遮罩運算元之多個數值係由該源運算元之該資料元件的大小來決定。
  2. 如申請專利範圍第1項之方法,其中,該目的地運算元是記憶體,及該源運算元是暫存器。
  3. 如申請專利範圍第1項之方法,其中,該源及目的地運算元是暫存器。
  4. 如申請專利範圍第1項之方法,其中,該執行更包括:決定該寫入遮罩運算元的第一位元位置值標示對應的第一源資料元件應被儲存在該目的地運算元的位置;以及將該對應的第一源資料元件儲存至該目的地運算元的位置。
  5. 如申請專利範圍第1項之方法,其中,該執行更包括:決定該寫入遮罩運算元的第一位元位置值標示對應的第一源資料元件不應被儲存在該目的地運算元的位置;以及評估該寫入遮罩運算元的第二位元位置值,而不將該第一源資料元件儲存至該目的地運算元的該位置。
  6. 如申請專利範圍第1項之方法,其中,要被儲存至該目的地運算元之每一源資料元件首先被置於串流中以及該串流被儲存至該目的地運算元中。
  7. 如申請專利範圍第1項之方法,更包括:在將該資料元件儲存至該目的地運算元之前,將該資料元件下轉以儲存於該目的地運算元中。
  8. 如申請專利範圍第7項之方法,其中,該資料元件從32位元值下轉至16位元值。
  9. 一種在電腦處理器中執行擴展指令的方法,包括:提取該擴展指令,其中,該擴展指令包含操作碼、字頭、目的地運算元、源運算元、及寫入遮罩運算元;將該擴展指令解碼;執行該擴展指令,以根據該寫入遮罩運算元的值,選取哪些來自該源運算元的資料元件是要被稀疏地儲存在該目的地運算元;以及將每一選取的該源運算元的資料元件作為稀疏資料元件儲存在該目的地位置,其中該目的地位置對應於每一寫 入遮罩運算元位元位置,該每一寫入遮罩運算元位元位置標示該源的對應資料元件要被儲存,其中該源運算元之該資料元件的大小係由該擴展指令的該字頭定義,且於該執行中使用的該寫入遮罩運算元之多個數值係由該源運算元之該資料元件的大小來決定。
  10. 如申請專利範圍第9項之方法,其中,該目的地運算元是暫存器,及該源運算元是記憶體。
  11. 如申請專利範圍第9項之方法,其中,該源及目的地運算元是暫存器。
  12. 如申請專利範圍第9項之方法,其中,該執行更包括;決定該寫入遮罩運算元的第一位元位置值標示該對應的第一源資料元件應被儲存在該目的地運算元的對應位置;以及將該對應的第一源資料元件儲存至該目的地運算元的該對應位置。
  13. 如申請專利範圍第9項之方法,其中,該執行更包括;決定該寫入遮罩運算元的第一位元位置值標示該對應的第一源資料元件不應被儲存在該目的地運算元的對應位置;以及評估該寫入遮罩運算元的第二位元位置值,而不將該第一源資料元件儲存至該目的地運算元的該對應位置。
  14. 如申請專利範圍第9項之方法,其中,要被儲存 至該目的地運算元之每一源資料元件首先被置於串流中以及該串流被儲存至該目的地運算元中。
  15. 如申請專利範圍第9項之方法,更包括:在將該資料元件儲存至該目的地之前,將該資料元件上轉以儲存於該目的地中。
  16. 如申請專利範圍第15項之方法,其中,該資料元件從16位元值上轉至32位元值。
  17. 一種在電腦處理器上執行擴展/壓縮指令的裝置,包括:硬體解碼器,將擴展指令及/或壓縮指令解碼,其中,該擴展指令包含第一操作碼、第一字頭、第一寫入遮罩運算元、第一目的地運算元、第一源運算元,以及,該壓縮指令包含第二操作碼、第二字頭、第二寫入遮罩運算元、第二目的地運算元、第二源運算元;以及執行邏輯,用以執行被解碼的擴展指令,以根據該第一寫入遮罩的值,選取哪些來自該第一源運算元的資料元件是要被稀疏地儲存在該第一目的地運算元,以及,將每一選取的該第一源運算元的資料元件作為稀疏資料元件儲存在該目的地運算元位置,其中該目的地運算元位置對應於每一第一寫入遮罩運算元位元位置,該每一第一寫入遮罩運算元位元位置標示該第一源運算元的對應資料元件要被儲存,以及執行被解碼的壓縮指令,以根據該第二寫入遮罩 運算元的值,選取哪些來自該第二源運算元的資料元件是要被儲存在該目的地,以及,將選取的該第二源運算元的資料元件作為順序包裝的資料元件儲存在該第二目的地運算元,其中該第一源運算元之該資料元件的大小係由該擴展指令的該第一字頭定義,而該第二源運算元之該資料元件的大小係由該壓縮指令的該第二字頭定義,且於該執行中使用的該第一及第二寫入遮罩運算元之多個數值係由該源運算元之該資料元件的大小來決定。
  18. 如申請專利範圍第17項之裝置,更包括:16位元寫入遮罩暫存器,以儲存該第一或第二寫入遮罩運算元;及第一512位元暫存器,以儲存該選取的資料元件。
  19. 如申請專利範圍第18項之裝置,更包括:第二512位元暫存器,以作為用於該擴展及壓縮指令的第一及第二源運算元。
  20. 如申請專利範圍第17項之裝置,其中,該資料元件在擴展指令執行期間從16位元值上轉至32位元值。
TW100146249A 2011-04-01 2011-12-14 擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之系統、裝置、及方法 TWI470542B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/078,896 US20120254592A1 (en) 2011-04-01 2011-04-01 Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location

Publications (2)

Publication Number Publication Date
TW201241744A TW201241744A (en) 2012-10-16
TWI470542B true TWI470542B (zh) 2015-01-21

Family

ID=46928902

Family Applications (2)

Application Number Title Priority Date Filing Date
TW100146249A TWI470542B (zh) 2011-04-01 2011-12-14 擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之系統、裝置、及方法
TW103140475A TWI550512B (zh) 2011-04-01 2011-12-14 擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之處理器

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW103140475A TWI550512B (zh) 2011-04-01 2011-12-14 擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之處理器

Country Status (8)

Country Link
US (1) US20120254592A1 (zh)
JP (2) JP2014513341A (zh)
KR (2) KR20130137698A (zh)
CN (1) CN103562855B (zh)
DE (1) DE112011105818T5 (zh)
GB (1) GB2503827B (zh)
TW (2) TWI470542B (zh)
WO (1) WO2012134558A1 (zh)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
ES2943248T3 (es) 2011-04-01 2023-06-12 Intel Corp Formato de instrucción compatible con vectores y ejecución del mismo
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
CN104011670B (zh) 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
US9606961B2 (en) 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US9189236B2 (en) * 2012-12-21 2015-11-17 Intel Corporation Speculative non-faulting loads and gathers
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9477467B2 (en) 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9395990B2 (en) 2013-06-28 2016-07-19 Intel Corporation Mode dependent partial width load to wider register processors, methods, and systems
US9424034B2 (en) * 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
US9323524B2 (en) * 2013-09-16 2016-04-26 Oracle International Corporation Shift instruction with per-element shift counts and full-width sources
KR102152735B1 (ko) * 2013-09-27 2020-09-21 삼성전자주식회사 그래픽 처리 장치 및 이의 동작 방법
US20150186136A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for expand and compress
US9720667B2 (en) * 2014-03-21 2017-08-01 Intel Corporation Automatic loop vectorization using hardware transactional memory
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
US10133570B2 (en) 2014-09-19 2018-11-20 Intel Corporation Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated
US9811464B2 (en) * 2014-12-11 2017-11-07 Intel Corporation Apparatus and method for considering spatial locality in loading data elements for execution
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160179520A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for variably expanding between mask and vector registers
US10503502B2 (en) 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
US20170109093A1 (en) * 2015-10-14 2017-04-20 International Business Machines Corporation Method and apparatus for writing a portion of a register in a microprocessor
US20170177348A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instruction and Logic for Compression and Rotation
US10007519B2 (en) * 2015-12-22 2018-06-26 Intel IP Corporation Instructions and logic for vector bit field compression and expansion
US10891131B2 (en) 2016-09-22 2021-01-12 Intel Corporation Processors, methods, systems, and instructions to consolidate data elements and generate index updates
JP6767660B2 (ja) 2017-01-27 2020-10-14 富士通株式会社 プロセッサ、情報処理装置及びプロセッサの動作方法
WO2018174934A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and apparatus for matrix move
EP3607434B1 (en) * 2017-04-06 2022-06-22 Intel Corporation Vector compress2 and expand2 instructions with two memory locations
WO2019005169A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MEMORY OPERATIONS READY FOR DATA
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
US10346163B2 (en) 2017-11-01 2019-07-09 Apple Inc. Matrix computation engine
US10642620B2 (en) 2018-04-05 2020-05-05 Apple Inc. Computation engine with strided dot product
US10970078B2 (en) * 2018-04-05 2021-04-06 Apple Inc. Computation engine with upsize/interleave and downsize/deinterleave options
US10754649B2 (en) 2018-07-24 2020-08-25 Apple Inc. Computation engine that operates in matrix and vector modes
US10831488B1 (en) * 2018-08-20 2020-11-10 Apple Inc. Computation engine with extract instructions to minimize memory access
US10838734B2 (en) * 2018-09-24 2020-11-17 Intel Corporation Apparatus and method for processing structure of arrays (SoA) and array of structures (AoS) data
US10719323B2 (en) 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions
US11403256B2 (en) * 2019-05-20 2022-08-02 Micron Technology, Inc. Conditional operations in a vector processor having true and false vector index registers
CN111124495B (zh) * 2019-12-16 2021-02-12 海光信息技术股份有限公司 一种数据处理方法、解码电路及处理器
US20220308873A1 (en) * 2021-03-27 2022-09-29 Intel Corporation Apparatuses, methods, and systems for instructions for downconverting a tile row and interleaving with a register
US20230409326A1 (en) * 2022-06-15 2023-12-21 Intel Corporation Device, method and system for executing a tile load and expand instruction

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4490786A (en) * 1981-06-19 1984-12-25 Fujitsu Limited Vector processing unit
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US20020002666A1 (en) * 1998-10-12 2002-01-03 Carole Dulong Conditional operand selection using mask operations
TWI254260B (en) * 2002-12-30 2006-05-01 Intel Corp Match MSB digital image compression
TW200805146A (en) * 2006-02-06 2008-01-16 Via Tech Inc Instruction set encoding in a dual-mode computer processing environment
TWI292867B (en) * 2003-11-13 2008-01-21 Intel Corp Buffered memory module, method of writing data to memory thereon, memory module buffer, computing device, and computer readable medium containing instructions
US20090172349A1 (en) * 2007-12-26 2009-07-02 Eric Sprangle Methods, apparatus, and instructions for converting vector data
TW200935304A (en) * 2008-01-22 2009-08-16 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0634203B2 (ja) * 1983-04-11 1994-05-02 富士通株式会社 ベクトル処理装置
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
JPS62226275A (ja) * 1986-03-28 1987-10-05 Hitachi Ltd ベクトル処理装置
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
JP2928301B2 (ja) * 1989-12-25 1999-08-03 株式会社日立製作所 ベクトル処理装置
JP2665111B2 (ja) * 1992-06-18 1997-10-22 日本電気株式会社 ベクトル処理装置
US6807622B1 (en) * 2000-08-09 2004-10-19 Advanced Micro Devices, Inc. Processor which overrides default operand size for implicit stack pointer references and near branches
US7395412B2 (en) * 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
JP2009026106A (ja) * 2007-07-20 2009-02-05 Oki Electric Ind Co Ltd 命令コード圧縮方法と命令フェッチ回路
GB2457303A (en) * 2008-02-11 2009-08-12 Linear Algebra Technologies Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap
KR101545701B1 (ko) * 2008-10-07 2015-08-19 삼성전자 주식회사 프로세서 및 그 명령어 번들 복원 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4490786A (en) * 1981-06-19 1984-12-25 Fujitsu Limited Vector processing unit
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US20020002666A1 (en) * 1998-10-12 2002-01-03 Carole Dulong Conditional operand selection using mask operations
TWI254260B (en) * 2002-12-30 2006-05-01 Intel Corp Match MSB digital image compression
TWI292867B (en) * 2003-11-13 2008-01-21 Intel Corp Buffered memory module, method of writing data to memory thereon, memory module buffer, computing device, and computer readable medium containing instructions
TW200805146A (en) * 2006-02-06 2008-01-16 Via Tech Inc Instruction set encoding in a dual-mode computer processing environment
US20090172349A1 (en) * 2007-12-26 2009-07-02 Eric Sprangle Methods, apparatus, and instructions for converting vector data
TW200935304A (en) * 2008-01-22 2009-08-16 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data

Also Published As

Publication number Publication date
TW201523441A (zh) 2015-06-16
GB201317058D0 (en) 2013-11-06
GB2503827B (en) 2020-05-27
JP2014513341A (ja) 2014-05-29
US20120254592A1 (en) 2012-10-04
JP6109910B2 (ja) 2017-04-05
KR20160130320A (ko) 2016-11-10
CN103562855A (zh) 2014-02-05
WO2012134558A1 (en) 2012-10-04
DE112011105818T5 (de) 2014-10-23
TWI550512B (zh) 2016-09-21
KR20130137698A (ko) 2013-12-17
KR101851487B1 (ko) 2018-04-23
TW201241744A (en) 2012-10-16
GB2503827A (en) 2014-01-08
CN103562855B (zh) 2017-08-11
JP2016029598A (ja) 2016-03-03

Similar Documents

Publication Publication Date Title
TWI470542B (zh) 擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之系統、裝置、及方法
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
KR101610691B1 (ko) 기입 마스크를 이용하여 2개 소스 피연산자를 하나의 목적지 내에 블렌딩하기 위한 시스템, 장치, 및 방법
KR101722346B1 (ko) 적분 이미지 계산 명령어를 위한 방법 및 장치
TWI582694B (zh) 用於實施具有疊代相依條件之疊代的向量迴圈的處理器、方法和計算系統
CN107273095B (zh) 用于对齐寄存器的系统、装置和方法
TW201730746A (zh) 用以融合指令之硬體設備及方法
US9792115B2 (en) Super multiply add (super MADD) instructions with three scalar terms
TWI489382B (zh) 改良的萃取指令背景之設備及方法
KR20130137702A (ko) 데이터 요소들의 스트라이드 패턴 수집 및 데이터 요소들의 스트라이드 패턴 분산을 위한 시스템, 장치 및 방법
TWI578230B (zh) 用於執行複數個乘法運算的方法和設備
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI619073B (zh) 在處理具有未對準資料列的陣列期間用於刪除未對準記憶體存取的處理器、非暫時的機器可讀取的媒體和計算系統
TW201738733A (zh) 執行指令以排列遮罩的系統及方法
TWI539374B (zh) 映射源運算元至不同範圍的系統及其處理器
TW201732574A (zh) 用於改善向量通量的系統、方法及設備

Legal Events

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